summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/l2cache.cc
diff options
context:
space:
mode:
authortgrogers <[email protected]>2018-10-07 20:22:49 -0400
committertgrogers <[email protected]>2018-10-07 20:22:49 -0400
commit2ca656ae40436929f3d1261acabbd1c13db8470a (patch)
tree9ab5081e2b0fccfcd3e62a7f8d7bd3d8750323b7 /src/gpgpu-sim/l2cache.cc
parent1e2d7b4c3147a0371c26bf086024d1cf770ad60c (diff)
parent6bea063d90358417b9d95dd17f8c2b88491b7385 (diff)
Merge branch 'jain156-dev-purdue-integration' into dev-purdue-integration
Diffstat (limited to 'src/gpgpu-sim/l2cache.cc')
-rw-r--r--src/gpgpu-sim/l2cache.cc20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/gpgpu-sim/l2cache.cc b/src/gpgpu-sim/l2cache.cc
index 25da107..596e07c 100644
--- a/src/gpgpu-sim/l2cache.cc
+++ b/src/gpgpu-sim/l2cache.cc
@@ -62,15 +62,16 @@ mem_fetch * partition_mf_allocator::alloc(new_addr_type addr, mem_access_type ty
memory_partition_unit::memory_partition_unit( unsigned partition_id,
const struct memory_config *config,
- class memory_stats_t *stats )
-: m_id(partition_id), m_config(config), m_stats(stats), m_arbitration_metadata(config)
+ class memory_stats_t *stats,
+ class gpgpu_sim *gpu)
+: m_id(partition_id), m_config(config), m_stats(stats), m_arbitration_metadata(config), m_gpu(gpu)
{
m_dram = new dram_t(m_id,m_config,m_stats,this);
m_sub_partition = new memory_sub_partition*[m_config->m_n_sub_partition_per_memory_channel];
for (unsigned p = 0; p < m_config->m_n_sub_partition_per_memory_channel; p++) {
unsigned sub_partition_id = m_id * m_config->m_n_sub_partition_per_memory_channel + p;
- m_sub_partition[p] = new memory_sub_partition(sub_partition_id, m_config, stats);
+ m_sub_partition[p] = new memory_sub_partition(sub_partition_id, m_config, stats, m_gpu);
}
}
@@ -310,11 +311,13 @@ void memory_partition_unit::print( FILE *fp ) const
memory_sub_partition::memory_sub_partition( unsigned sub_partition_id,
const struct memory_config *config,
- class memory_stats_t *stats )
+ class memory_stats_t *stats ,
+ class gpgpu_sim *gpu)
{
m_id = sub_partition_id;
m_config=config;
m_stats=stats;
+ m_gpu=gpu;
m_memcpy_cycle_offset = 0;
assert(m_id < m_config->m_n_mem_sub_partition);
@@ -411,6 +414,15 @@ void memory_sub_partition::cache_cycle( unsigned cycle )
bool read_sent = was_read_sent(events);
MEM_SUBPART_DPRINTF("Probing L2 cache Address=%llx, status=%u\n", mf->get_addr(), status);
+ if ( (mf->get_access_type() == GLOBAL_ACC_R) ||
+ (mf->get_access_type() == GLOBAL_ACC_W) ||
+ (mf->get_access_type() == LOCAL_ACC_R) ||
+ (mf->get_access_type() == LOCAL_ACC_W) ||
+ (mf->get_access_type() == CONST_ACC_R) ) {
+ if (!m_gpu->data_footprint_stats.count(mf->get_addr()))
+ m_gpu->data_footprint_stats.insert(mf->get_addr());
+ }
+
if ( status == HIT ) {
if( !write_sent ) {
// L2 cache replies