summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortgrogers <[email protected]>2018-03-13 16:04:33 -0400
committertgrogers <[email protected]>2018-03-13 16:04:33 -0400
commitedf156cfd088e593951075b6678bded74b5a211c (patch)
tree1301544f75274241065410582373280eee6b9ee3
parentdafe4afd3e4a8a53fc0294b8769787ebf895cb9d (diff)
parentbab99faa3344f78b523bb15c2e31ae121c700eb8 (diff)
Merge branch 'dev-purdue-integration' of https://github.rcac.purdue.edu/TimRogersGroup/gpgpu-sim_distribution into dev-purdue-integration
-rw-r--r--configs/Pascal-P100-HBM/gpgpusim.config2
-rw-r--r--src/gpgpu-sim/gpu-cache.cc4
-rw-r--r--src/gpgpu-sim/gpu-cache.h15
3 files changed, 15 insertions, 6 deletions
diff --git a/configs/Pascal-P100-HBM/gpgpusim.config b/configs/Pascal-P100-HBM/gpgpusim.config
index 533a865..bd868ac 100644
--- a/configs/Pascal-P100-HBM/gpgpusim.config
+++ b/configs/Pascal-P100-HBM/gpgpusim.config
@@ -56,7 +56,7 @@
# Pascal GP100 has 64KB Shared memory
-gpgpu_cache:dl1 S:64:128:6,L:L:f:N:H,A:256:8,16:0,32
-gpgpu_shmem_size 65536
--gmem_skip_L1D 1
+-gmem_skip_L1D 0
-icnt_flit_size 40
-gpgpu_n_cluster_ejection_buffer_size 32
diff --git a/src/gpgpu-sim/gpu-cache.cc b/src/gpgpu-sim/gpu-cache.cc
index 0602e20..8191f62 100644
--- a/src/gpgpu-sim/gpu-cache.cc
+++ b/src/gpgpu-sim/gpu-cache.cc
@@ -962,7 +962,7 @@ void baseline_cache::send_read_request(new_addr_type addr, new_addr_type block_a
m_mshrs.add(mshr_addr,mf);
m_extra_mf_fields[mf] = extra_mf_fields(mshr_addr,mf->get_addr(),cache_index, mf->get_data_size(), m_config);
mf->set_data_size( m_config.get_atom_sz() );
- mf->set_addr( block_addr );
+ mf->set_addr( mshr_addr );
m_miss_queue.push_back(mf);
mf->set_status(m_miss_queue_status,time);
if(!wa)
@@ -1432,7 +1432,7 @@ data_cache::process_tag_probe( bool wr,
access_status = (this->*m_wr_hit)( addr,
cache_index,
mf, time, events, probe_status );
- }else if ( probe_status != RESERVATION_FAIL ) {
+ }else if ( (probe_status != RESERVATION_FAIL) || (probe_status == RESERVATION_FAIL && m_config.m_write_alloc_policy == NO_WRITE_ALLOCATE) ) {
access_status = (this->*m_wr_miss)( addr,
cache_index,
mf, time, events, probe_status );
diff --git a/src/gpgpu-sim/gpu-cache.h b/src/gpgpu-sim/gpu-cache.h
index 0d07878..76b07a2 100644
--- a/src/gpgpu-sim/gpu-cache.h
+++ b/src/gpgpu-sim/gpu-cache.h
@@ -39,7 +39,7 @@
#include <iostream>
enum cache_block_state {
- INVALID,
+ INVALID=0,
RESERVED,
VALID,
MODIFIED
@@ -125,6 +125,7 @@ struct cache_block_t {
virtual unsigned get_modified_size() = 0;
virtual void set_m_readable(bool readable, mem_access_sector_mask_t sector_mask)=0;
virtual bool is_readable(mem_access_sector_mask_t sector_mask)=0;
+ virtual void print_status()=0;
virtual ~cache_block_t() {}
@@ -144,7 +145,7 @@ struct line_cache_block: public cache_block_t {
m_set_modified_on_fill = false;
m_readable = true;
}
- void allocate( new_addr_type tag, new_addr_type block_addr, unsigned time, mem_access_sector_mask_t sector_mask )
+ void allocate( new_addr_type tag, new_addr_type block_addr, unsigned time, mem_access_sector_mask_t sector_mask)
{
m_tag=tag;
m_block_addr=block_addr;
@@ -220,6 +221,9 @@ struct line_cache_block: public cache_block_t {
virtual bool is_readable(mem_access_sector_mask_t sector_mask) {
return m_readable;
}
+ virtual void print_status() {
+ printf("m_block_addr is %u, status = %u\n", m_block_addr, m_status);
+ }
private:
@@ -401,6 +405,11 @@ struct sector_cache_block : public cache_block_t {
return modified * SECTOR_SIZE;
}
+ virtual void print_status() {
+ printf("m_block_addr is %u, status = %u %u %u %u\n", m_block_addr, m_status[0], m_status[1], m_status[2], m_status[3]);
+ }
+
+
private:
unsigned m_sector_alloc_time[SECTOR_CHUNCK_SIZE];
unsigned m_last_sector_access_time[SECTOR_CHUNCK_SIZE];
@@ -1030,7 +1039,7 @@ protected:
std::string m_name;
cache_config &m_config;
tag_array* m_tag_array;
- mshr_table m_mshrs;
+ mshr_table m_mshrs;
std::list<mem_fetch*> m_miss_queue;
enum mem_fetch_status m_miss_queue_status;
mem_fetch_interface *m_memport;