summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJRPAN <[email protected]>2021-05-19 15:10:51 -0400
committerJRPAN <[email protected]>2021-05-19 15:11:55 -0400
commitf70f5d6e5599c643074b0d00d3e3dcc385e5913d (patch)
tree4af80375ed02ea3236b0872a5625372a30f7567a /src
parent0601354a4d7f7f106e008b47cbc74097ec0a2a69 (diff)
re-wording/formatting
Diffstat (limited to 'src')
-rw-r--r--src/gpgpu-sim/gpu-cache.cc17
-rw-r--r--src/gpgpu-sim/gpu-cache.h6
2 files changed, 11 insertions, 12 deletions
diff --git a/src/gpgpu-sim/gpu-cache.cc b/src/gpgpu-sim/gpu-cache.cc
index 390bacc..05b338e 100644
--- a/src/gpgpu-sim/gpu-cache.cc
+++ b/src/gpgpu-sim/gpu-cache.cc
@@ -280,7 +280,7 @@ enum cache_request_status tag_array::probe(new_addr_type addr, unsigned &idx,
}
if (!line->is_reserved_line()) {
if (!line->is_modified_line() ||
- 100 * m_dirty / (m_config.m_nset * m_config.m_assoc) >=
+ m_dirty / (m_config.m_nset * m_config.m_assoc * 100) >=
m_config.m_wr_percent) {
all_reserved = false;
if (line->is_invalid_line()) {
@@ -364,7 +364,7 @@ enum cache_request_status tag_array::access(new_addr_type addr, unsigned time,
evicted.set_info(m_lines[idx]->m_block_addr,
m_lines[idx]->get_modified_size(),
m_lines[idx]->get_byte_mask(),
- m_lines[idx]->get_sector_mask());
+ m_lines[idx]->get_dirty_sector_mask());
m_dirty--;
}
m_lines[idx]->allocate(m_config.tag(addr), m_config.block_addr(addr),
@@ -430,17 +430,13 @@ void tag_array::fill(new_addr_type addr, unsigned time,
void tag_array::fill(unsigned index, unsigned time, mem_fetch *mf) {
assert(m_config.m_alloc_policy == ON_MISS);
- bool before = m_lines[index]->is_modified_line();
m_lines[index]->fill(time, mf->get_access_sector_mask(), mf->get_access_byte_mask());
- if (m_lines[index]->is_modified_line() && !before) {
- m_dirty++;
- }
+ m_dirty++;
}
// TODO: we need write back the flushed data to the upper level
void tag_array::flush() {
if (!is_used) return;
- m_dirty = 0;
for (unsigned i = 0; i < m_config.get_num_lines(); i++)
if (m_lines[i]->is_modified_line()) {
@@ -448,18 +444,19 @@ void tag_array::flush() {
m_lines[i]->set_status(INVALID, mem_access_sector_mask_t().set(j));
}
}
-
+
+ m_dirty = 0;
is_used = false;
}
void tag_array::invalidate() {
if (!is_used) return;
- m_dirty = 0;
for (unsigned i = 0; i < m_config.get_num_lines(); i++)
for (unsigned j = 0; j < SECTOR_CHUNCK_SIZE; j++)
m_lines[i]->set_status(INVALID, mem_access_sector_mask_t().set(j));
+ m_dirty = 0;
is_used = false;
}
@@ -804,6 +801,8 @@ void cache_stats::print_stats(FILE *fout, const char *cache_name) const {
m_stats[type][status]);
if (status != RESERVATION_FAIL && status != MSHR_HIT)
+ // MSHR_HIT is a special type of SECTOR_MISS
+ // so its already included in the SECTOR_MISS
total_access[type] += m_stats[type][status];
}
}
diff --git a/src/gpgpu-sim/gpu-cache.h b/src/gpgpu-sim/gpu-cache.h
index 6811b86..5179173 100644
--- a/src/gpgpu-sim/gpu-cache.h
+++ b/src/gpgpu-sim/gpu-cache.h
@@ -136,7 +136,7 @@ struct cache_block_t {
virtual void set_byte_mask(mem_fetch *mf) = 0;
virtual void set_byte_mask(mem_access_byte_mask_t byte_mask) = 0;
virtual mem_access_byte_mask_t get_byte_mask() = 0;
- virtual mem_access_sector_mask_t get_sector_mask() = 0;
+ virtual mem_access_sector_mask_t get_dirty_sector_mask() = 0;
virtual unsigned long long get_last_access_time() = 0;
virtual void set_last_access_time(unsigned long long time,
mem_access_sector_mask_t sector_mask) = 0;
@@ -218,7 +218,7 @@ struct line_cache_block : public cache_block_t {
virtual mem_access_byte_mask_t get_byte_mask() {
return m_byte_mask;
}
- virtual mem_access_sector_mask_t get_sector_mask() {
+ virtual mem_access_sector_mask_t get_dirty_sector_mask() {
mem_access_sector_mask_t sector_mask;
if (m_status == MODIFIED) sector_mask.set();
return sector_mask;
@@ -413,7 +413,7 @@ struct sector_cache_block : public cache_block_t {
virtual mem_access_byte_mask_t get_byte_mask() {
return m_byte_mask;
}
- virtual mem_access_sector_mask_t get_sector_mask() {
+ virtual mem_access_sector_mask_t get_dirty_sector_mask() {
mem_access_sector_mask_t sector_mask;
for (unsigned i = 0; i < SECTOR_CHUNCK_SIZE; i++) {
if (m_status[i] == MODIFIED)