diff options
author | Daniel R. Carvalho <odanrc@yahoo.com.br> | 2019-02-04 13:57:25 +0100 |
---|---|---|
committer | Daniel Carvalho <odanrc@yahoo.com.br> | 2019-12-12 14:43:09 +0000 |
commit | a87a3e4fad3bc83cb42f4896404dbd65fd3a0d73 (patch) | |
tree | 8caed77f6d90061e11cae7e47f57edaf239cc46d /src/mem | |
parent | d11f5c97af8cf81c3b984ec948ce653148831f59 (diff) | |
download | gem5-a87a3e4fad3bc83cb42f4896404dbd65fd3a0d73.tar.xz |
mem-cache: Move unused prefetches counter update
The number of unused prefetches should be updated every time
a block is invalidated, therefore we move the update to within
the corresponding function.
Change-Id: If3ac2ea43611525bd3c36d628d88382042fcb7dc
Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18908
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Diffstat (limited to 'src/mem')
-rw-r--r-- | src/mem/cache/base.cc | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/mem/cache/base.cc b/src/mem/cache/base.cc index ebfb09275..d56fcbeee 100644 --- a/src/mem/cache/base.cc +++ b/src/mem/cache/base.cc @@ -883,9 +883,6 @@ BaseCache::updateCompressionData(CacheBlk *blk, const uint64_t* data, // Evict valid blocks for (const auto& evict_blk : evict_blks) { if (evict_blk->isValid()) { - if (evict_blk->wasPrefetched()) { - stats.unusedPrefetches++; - } evictBlock(evict_blk, writebacks); } } @@ -1461,11 +1458,6 @@ BaseCache::allocateBlock(const PacketPtr pkt, PacketList &writebacks) DPRINTF(CacheRepl, "Evicting %s (%#llx) to make room for " \ "%#llx (%s)\n", blk->print(), regenerateBlkAddr(blk), addr, is_secure); - - if (blk->wasPrefetched()) { - stats.unusedPrefetches++; - } - evictBlock(blk, writebacks); } } @@ -1489,6 +1481,11 @@ BaseCache::allocateBlock(const PacketPtr pkt, PacketList &writebacks) void BaseCache::invalidateBlock(CacheBlk *blk) { + // If block is still marked as prefetched, then it hasn't been used + if (blk->wasPrefetched()) { + stats.unusedPrefetches++; + } + // If handling a block present in the Tags, let it do its invalidation // process, which will update stats and invalidate the block itself if (blk != tempBlock) { |