summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/shader.h
diff options
context:
space:
mode:
authorTim Rogers <[email protected]>2013-02-10 20:40:34 -0800
committerAndrew Boktor <[email protected]>2014-08-14 13:50:04 -0700
commitc591d13a90aad7d99bb40aef9e44d6bfce0b74c0 (patch)
tree1525326dfa44a4d7f28596bbbfdd6e7892a30088 /src/gpgpu-sim/shader.h
parente4d7bf562e8e90fa4523efc186322bff416c0506 (diff)
Merging
//depot/gpgpu_sim_research/fermi_locality/... to //depot/gpgpu_sim_research/fermi/... Adding in some protected constructors to the core cache classes. This allows us to customize caches (for example having them use a custom tag array) more easily. Also I made the in-class tag_array object in the baseline_cache into a pointer. This allows derived classes to easily create custom tag arrays. I think in general, class extendibility is increased when pointers are used instead of in-object storage. [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 15223]
Diffstat (limited to 'src/gpgpu-sim/shader.h')
-rw-r--r--src/gpgpu-sim/shader.h31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/gpgpu-sim/shader.h b/src/gpgpu-sim/shader.h
index 6be54fb..c74fa96 100644
--- a/src/gpgpu-sim/shader.h
+++ b/src/gpgpu-sim/shader.h
@@ -965,12 +965,41 @@ public:
void set_icnt_power_stats(unsigned &simt_to_mem) const;
-private:
+protected:
+ ldst_unit( mem_fetch_interface *icnt,
+ shader_core_mem_fetch_allocator *mf_allocator,
+ shader_core_ctx *core,
+ opndcoll_rfu_t *operand_collector,
+ Scoreboard *scoreboard,
+ const shader_core_config *config,
+ const memory_config *mem_config,
+ shader_core_stats *stats,
+ unsigned sid,
+ unsigned tpc,
+ l1_cache* new_l1d_cache );
+ void init( mem_fetch_interface *icnt,
+ shader_core_mem_fetch_allocator *mf_allocator,
+ shader_core_ctx *core,
+ opndcoll_rfu_t *operand_collector,
+ Scoreboard *scoreboard,
+ const shader_core_config *config,
+ const memory_config *mem_config,
+ shader_core_stats *stats,
+ unsigned sid,
+ unsigned tpc );
+
+protected:
bool shared_cycle( warp_inst_t &inst, mem_stage_stall_type &rc_fail, mem_stage_access_type &fail_type);
bool constant_cycle( warp_inst_t &inst, mem_stage_stall_type &rc_fail, mem_stage_access_type &fail_type);
bool texture_cycle( warp_inst_t &inst, mem_stage_stall_type &rc_fail, mem_stage_access_type &fail_type);
bool memory_cycle( warp_inst_t &inst, mem_stage_stall_type &rc_fail, mem_stage_access_type &fail_type);
+ virtual mem_stage_stall_type process_cache_access( cache_t* cache,
+ new_addr_type address,
+ warp_inst_t &inst,
+ std::list<cache_event>& events,
+ mem_fetch *mf,
+ enum cache_request_status status );
mem_stage_stall_type process_memory_access_queue( cache_t *cache, warp_inst_t &inst );
const memory_config *m_memory_config;