summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAli Bakhoda <[email protected]>2011-10-04 14:40:52 -0800
committerAndrew Boktor <[email protected]>2014-08-14 13:18:23 -0700
commit6f64b0527dd7f8be12c17ab2b73e7bc5d9c8def8 (patch)
tree3bf4125ce0173846cac25656a65192bd60ee371f
parent39fde1bdd52080391a7083536b22a3ea9a686dcf (diff)
Ejection from the interface buffer between interconnet and L2 happens in L2 clock domain instead of ICNT clock domain.
Note: if NOT having an L2 cache is supported in later versions of this branch then this ejection needs to happen in DRAM clock domain when L2 is disabled. cuda regression tests pass [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 10501]
-rw-r--r--src/gpgpu-sim/gpu-sim.cc22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/gpgpu-sim/gpu-sim.cc b/src/gpgpu-sim/gpu-sim.cc
index 988806c..10fadb7 100644
--- a/src/gpgpu-sim/gpu-sim.cc
+++ b/src/gpgpu-sim/gpu-sim.cc
@@ -811,20 +811,20 @@ void gpgpu_sim::cycle()
// L2 operations follow L2 clock domain
if (clock_mask & L2) {
- for (unsigned i=0;i<m_memory_config->m_n_mem;i++)
- m_memory_partition_unit[i]->cache_cycle(gpu_sim_cycle+gpu_tot_sim_cycle);
+ for (unsigned i=0;i<m_memory_config->m_n_mem;i++) {
+ //move memory request from interconnect into memory partition (if not backed up)
+ //Note:This needs to be called in DRAM clock domain if there is no L2 cache in the system
+ if ( m_memory_partition_unit[i]->full() ) {
+ gpu_stall_dramfull++;
+ } else {
+ mem_fetch* mf = (mem_fetch*) icnt_pop( m_shader_config->mem2device(i) );
+ m_memory_partition_unit[i]->push( mf, gpu_sim_cycle + gpu_tot_sim_cycle );
+ }
+ m_memory_partition_unit[i]->cache_cycle(gpu_sim_cycle+gpu_tot_sim_cycle);
+ }
}
if (clock_mask & ICNT) {
- for (unsigned i=0;i<m_memory_config->m_n_mem;i++) {
- if ( m_memory_partition_unit[i]->full() ) {
- gpu_stall_dramfull++;
- continue;
- }
- // move memory request from interconnect into memory partition (if memory controller not backed up)
- mem_fetch* mf = (mem_fetch*) icnt_pop( m_shader_config->mem2device(i) );
- m_memory_partition_unit[i]->push( mf, gpu_sim_cycle + gpu_tot_sim_cycle );
- }
icnt_transfer();
}