cache stats: account for writebacks and/or device occupancy in the cache.
Plus, a minor bugfix that neglects to update blk->contextSrc in certain cases on a cache insert.
This commit is contained in:
2
src/mem/cache/tags/base.cc
vendored
2
src/mem/cache/tags/base.cc
vendored
@@ -88,7 +88,7 @@ BaseTags::regStats(const string &name)
|
||||
;
|
||||
|
||||
occupancies
|
||||
.init(cache->numCpus())
|
||||
.init(cache->numCpus() + 1)
|
||||
.name(name + ".occ_blocks")
|
||||
.desc("Average occupied blocks per context")
|
||||
.flags(nozero | nonan)
|
||||
|
||||
8
src/mem/cache/tags/lru.cc
vendored
8
src/mem/cache/tags/lru.cc
vendored
@@ -162,6 +162,8 @@ LRU::findVictim(Addr addr, PacketList &writebacks)
|
||||
if (blk->contextSrc != -1) {
|
||||
occupancies[blk->contextSrc % cache->numCpus()]--;
|
||||
blk->contextSrc = -1;
|
||||
} else {
|
||||
occupancies[cache->numCpus()]--;
|
||||
}
|
||||
|
||||
DPRINTF(CacheRepl, "set %x: selecting blk %x for replacement\n",
|
||||
@@ -188,8 +190,10 @@ LRU::insertBlock(Addr addr, BlkType *blk, int context_src)
|
||||
// deal with what we are bringing in
|
||||
if (context_src != -1) {
|
||||
occupancies[context_src % cache->numCpus()]++;
|
||||
blk->contextSrc = context_src;
|
||||
} else {
|
||||
occupancies[cache->numCpus()]++;
|
||||
}
|
||||
blk->contextSrc = context_src;
|
||||
|
||||
unsigned set = extractSet(addr);
|
||||
sets[set].moveToHead(blk);
|
||||
@@ -206,6 +210,8 @@ LRU::invalidateBlk(BlkType *blk)
|
||||
if (blk->contextSrc != -1) {
|
||||
occupancies[blk->contextSrc % cache->numCpus()]--;
|
||||
blk->contextSrc = -1;
|
||||
} else {
|
||||
occupancies[cache->numCpus()]--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user