summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilson Fung <[email protected]>2013-08-30 02:45:59 -0800
committerAndrew Boktor <[email protected]>2014-08-14 13:50:59 -0700
commitbb2a665ccd57f71043561a965a4c11931f96e7ef (patch)
tree5ce4a038736541d9b481f7f6f3c4756ce1d56d5a
parent1cf38dabd66231ab259efe086b1317373d722303 (diff)
Fixing assertion that occurs when L1 cache is configured with write-allocation policy. Also added description for the write-allocation fix implemented by Tayler.
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 16914]
-rw-r--r--CHANGES4
-rw-r--r--src/gpgpu-sim/shader.cc1
-rw-r--r--src/gpgpu-sim/shader.h1
-rw-r--r--src/gpgpu-sim/traffic_breakdown.cc1
4 files changed, 7 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index b4fbdde..e45b4ad 100644
--- a/CHANGES
+++ b/CHANGES
@@ -80,6 +80,10 @@ Version 3.2.1+edits (development branch) versus 3.2.1
dram_t::cycle().
- Fixed the segmentation faults that occur when L2 cache is diabled. The
bug was introduced when GPUWattch was integrated into GPGPU-Sim.
+ - Fixed the deadlock that occurs when L1 cache is configured with
+ write-back, write-allocate policy. The fix involves generating different
+ types of write-allocation requests for L1 and L2 caches, so that
+ write-allocation requests from L1 cache are not consumed by the L2 cache.
Version 3.2.1 versus 3.2.0
- Added kernel name and launch uids to performance statistics log.
diff --git a/src/gpgpu-sim/shader.cc b/src/gpgpu-sim/shader.cc
index df858fa..230af89 100644
--- a/src/gpgpu-sim/shader.cc
+++ b/src/gpgpu-sim/shader.cc
@@ -3189,6 +3189,7 @@ void simt_core_cluster::icnt_inject_request_packet(class mem_fetch *mf)
case INST_ACC_R: m_stats->gpgpu_n_mem_read_inst++; break;
case L1_WRBK_ACC: m_stats->gpgpu_n_mem_write_global++; break;
case L2_WRBK_ACC: m_stats->gpgpu_n_mem_l2_writeback++; break;
+ case L1_WR_ALLOC_R: m_stats->gpgpu_n_mem_l1_write_allocate++; break;
case L2_WR_ALLOC_R: m_stats->gpgpu_n_mem_l2_write_allocate++; break;
default: assert(0);
}
diff --git a/src/gpgpu-sim/shader.h b/src/gpgpu-sim/shader.h
index f141019..c2775cf 100644
--- a/src/gpgpu-sim/shader.h
+++ b/src/gpgpu-sim/shader.h
@@ -1387,6 +1387,7 @@ struct shader_core_stats_pod {
int gpgpu_n_mem_read_inst;
int gpgpu_n_mem_l2_writeback;
+ int gpgpu_n_mem_l1_write_allocate;
int gpgpu_n_mem_l2_write_allocate;
unsigned made_write_mfs;
diff --git a/src/gpgpu-sim/traffic_breakdown.cc b/src/gpgpu-sim/traffic_breakdown.cc
index b21b8d8..32f0d30 100644
--- a/src/gpgpu-sim/traffic_breakdown.cc
+++ b/src/gpgpu-sim/traffic_breakdown.cc
@@ -36,6 +36,7 @@ std::string traffic_breakdown::classify_memfetch(class mem_fetch * mf)
case INST_ACC_R:
case L1_WRBK_ACC:
case L2_WRBK_ACC:
+ case L1_WR_ALLOC_R:
case L2_WR_ALLOC_R:
traffic_name = mem_access_type_str(access_type);
break;