summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/gpu-cache.h
diff options
context:
space:
mode:
authortgrogers <[email protected]>2017-11-18 15:48:26 -0500
committertgrogers <[email protected]>2017-11-18 15:48:26 -0500
commit9233f6f9eeea537187deb64add77a320442aa621 (patch)
treec2351512f93d44354ea31509a2964d03fe530c71 /src/gpgpu-sim/gpu-cache.h
parenta2b163e4476387df8693c1a784cf094f8868a086 (diff)
vectoradd is successfully filling the l2
Diffstat (limited to 'src/gpgpu-sim/gpu-cache.h')
-rw-r--r--src/gpgpu-sim/gpu-cache.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/gpgpu-sim/gpu-cache.h b/src/gpgpu-sim/gpu-cache.h
index 3e1691a..3713126 100644
--- a/src/gpgpu-sim/gpu-cache.h
+++ b/src/gpgpu-sim/gpu-cache.h
@@ -690,11 +690,13 @@ public:
~tag_array();
enum cache_request_status probe( new_addr_type addr, unsigned &idx, mem_fetch* mf ) const;
+ enum cache_request_status probe( new_addr_type addr, unsigned &idx, mem_access_sector_mask_t mask ) const;
enum cache_request_status access( new_addr_type addr, unsigned time, unsigned &idx, mem_fetch* mf );
enum cache_request_status access( new_addr_type addr, unsigned time, unsigned &idx, bool &wb, evicted_block_info &evicted, mem_fetch* mf );
void fill( new_addr_type addr, unsigned time, mem_fetch* mf );
void fill( unsigned idx, unsigned time, mem_fetch* mf );
+ void fill( new_addr_type addr, unsigned time, mem_access_sector_mask_t mask );
unsigned size() const { return m_config.get_num_lines();}
cache_block_t* get_block(unsigned idx) { return m_lines[idx];}
@@ -969,6 +971,15 @@ public:
bool data_port_free() const { return m_bandwidth_management.data_port_free(); }
bool fill_port_free() const { return m_bandwidth_management.fill_port_free(); }
+ // This is a gapping hole we are poking in the system to quickly handle
+ // filling the cache on cudamemcopies. We don't care about anything other than
+ // L2 state after the memcopy - so just force the tag array to act as though
+ // something is read or written without doing anything else.
+ void force_tag_access( new_addr_type addr, unsigned time, mem_access_sector_mask_t mask )
+ {
+ m_tag_array->fill( addr, time, mask );
+ }
+
protected:
// Constructor that can be used by derived classes with custom tag arrays
baseline_cache( const char *name,