diff options
| author | Ahmed El-Shafiey <[email protected]> | 2012-04-05 17:34:38 -0800 |
|---|---|---|
| committer | Andrew Boktor <[email protected]> | 2014-08-14 13:19:05 -0700 |
| commit | 32b7eb9c1407b4d5b578aa1caf6a1478cbfc4313 (patch) | |
| tree | 13e518fdb43b907a7cc148dbfe7f452309eaff8f /src/gpgpu-sim/shader.cc | |
| parent | 53a2ad0b56960cf22bfe6a89abbcc7c598d79a0e (diff) | |
-Bug 146 fix (Adding perfect memory interface)
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 11877]
Diffstat (limited to 'src/gpgpu-sim/shader.cc')
| -rw-r--r-- | src/gpgpu-sim/shader.cc | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/gpgpu-sim/shader.cc b/src/gpgpu-sim/shader.cc index 5779537..7bf711f 100644 --- a/src/gpgpu-sim/shader.cc +++ b/src/gpgpu-sim/shader.cc @@ -100,7 +100,12 @@ shader_core_ctx::shader_core_ctx( class gpgpu_sim *gpu, m_threadState[i].m_active = false; } - m_icnt = new shader_memory_interface(this,cluster); + // m_icnt = new shader_memory_interface(this,cluster); + if ( m_config->gpgpu_perfect_mem ) { + m_icnt = new perfect_memory_interface(this,cluster); + } else { + m_icnt = new shader_memory_interface(this,cluster); + } m_mem_fetch_allocator = new shader_core_mem_fetch_allocator(shader_id,tpc_id,mem_config); // fetch @@ -924,7 +929,7 @@ pipelined_simd_unit::pipelined_simd_unit( warp_inst_t **result_port, const shade m_pipeline_reg[i] = new warp_inst_t( config ); } -ldst_unit::ldst_unit( shader_memory_interface *icnt, +ldst_unit::ldst_unit( mem_fetch_interface *icnt, shader_core_mem_fetch_allocator *mf_allocator, shader_core_ctx *core, opndcoll_rfu_t *operand_collector, @@ -1070,7 +1075,7 @@ void ldst_unit::cycle() m_L1C->fill(mf,gpu_sim_cycle+gpu_tot_sim_cycle); m_response_fifo.pop_front(); } else { - if( mf->get_type() == WRITE_ACK ) { + if( mf->get_type() == WRITE_ACK || ( m_config->gpgpu_perfect_mem && mf->get_is_write() )) { m_core->store_ack(mf); m_response_fifo.pop_front(); delete mf; @@ -1768,7 +1773,7 @@ void shader_core_ctx::accept_ldst_unit_response(mem_fetch * mf) void shader_core_ctx::store_ack( class mem_fetch *mf ) { - assert( mf->get_type() == WRITE_ACK ); + assert( mf->get_type() == WRITE_ACK || ( m_config->gpgpu_perfect_mem && mf->get_is_write() ) ); unsigned warp_id = mf->get_wid(); m_warp[warp_id].dec_store_req(); } |
