diff options
author | Daniel R. Carvalho <odanrc@yahoo.com.br> | 2018-06-02 14:51:59 +0200 |
---|---|---|
committer | Daniel Carvalho <odanrc@yahoo.com.br> | 2018-06-08 09:37:23 +0000 |
commit | f89fe7049d3ae91835bf3c5da72462b60e35d095 (patch) | |
tree | 652f4940aa4848957579917aa020932f0bddc6eb | |
parent | 62db2c46f460deb41d43930e4b6460e53f70376a (diff) | |
download | gem5-f89fe7049d3ae91835bf3c5da72462b60e35d095.tar.xz |
mem-cache: Move tagsInUse to children
Move tagsInUse to children, as sector caches have different
tag invalidation and insertion, and thus they must handle
updating this variable.
Change-Id: I875c9b7364a909c76daf610d1e226c4e82063870
Reviewed-on: https://gem5-review.googlesource.com/10721
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
-rw-r--r-- | src/mem/cache/tags/base.cc | 1 | ||||
-rw-r--r-- | src/mem/cache/tags/base.hh | 1 | ||||
-rw-r--r-- | src/mem/cache/tags/base_set_assoc.cc | 3 | ||||
-rw-r--r-- | src/mem/cache/tags/base_set_assoc.hh | 7 | ||||
-rw-r--r-- | src/mem/cache/tags/fa_lru.cc | 7 |
5 files changed, 14 insertions, 5 deletions
diff --git a/src/mem/cache/tags/base.cc b/src/mem/cache/tags/base.cc index 13e1245c6..caed594b8 100644 --- a/src/mem/cache/tags/base.cc +++ b/src/mem/cache/tags/base.cc @@ -99,7 +99,6 @@ BaseTags::insertBlock(PacketPtr pkt, CacheBlk *blk) blk->insert(extractTag(addr), pkt->isSecure(), master_id, pkt->req->taskId()); - tagsInUse++; if (!warmedUp && tagsInUse.value() >= warmupBound) { warmedUp = true; warmupCycle = curTick(); diff --git a/src/mem/cache/tags/base.hh b/src/mem/cache/tags/base.hh index 27771982a..0cc79020d 100644 --- a/src/mem/cache/tags/base.hh +++ b/src/mem/cache/tags/base.hh @@ -253,7 +253,6 @@ class BaseTags : public ClockedObject assert(blk); assert(blk->isValid()); - tagsInUse--; occupancies[blk->srcMasterId]--; totalRefs += blk->refCount; sampledRefs++; diff --git a/src/mem/cache/tags/base_set_assoc.cc b/src/mem/cache/tags/base_set_assoc.cc index ae98dcf3d..18da53273 100644 --- a/src/mem/cache/tags/base_set_assoc.cc +++ b/src/mem/cache/tags/base_set_assoc.cc @@ -113,6 +113,9 @@ BaseSetAssoc::invalidate(CacheBlk *blk) { BaseTags::invalidate(blk); + // Decrease the number of tags in use + tagsInUse--; + // Invalidate replacement data replacementPolicy->invalidate(blk->replacementData); } diff --git a/src/mem/cache/tags/base_set_assoc.hh b/src/mem/cache/tags/base_set_assoc.hh index d19a00ed9..b41c3096c 100644 --- a/src/mem/cache/tags/base_set_assoc.hh +++ b/src/mem/cache/tags/base_set_assoc.hh @@ -122,8 +122,8 @@ class BaseSetAssoc : public BaseTags virtual ~BaseSetAssoc() {}; /** - * This function updates the tags when a block is invalidated but does - * not invalidate the block itself. It also updates the replacement data. + * This function updates the tags when a block is invalidated. It also + * updates the replacement data. * * @param blk The block to invalidate. */ @@ -252,6 +252,9 @@ class BaseSetAssoc : public BaseTags // Insert block BaseTags::insertBlock(pkt, blk); + // Increment tag counter + tagsInUse++; + // Update replacement policy replacementPolicy->reset(blk->replacementData); } diff --git a/src/mem/cache/tags/fa_lru.cc b/src/mem/cache/tags/fa_lru.cc index 8eab62845..b5950f6cf 100644 --- a/src/mem/cache/tags/fa_lru.cc +++ b/src/mem/cache/tags/fa_lru.cc @@ -122,6 +122,9 @@ FALRU::invalidate(CacheBlk *blk) { BaseTags::invalidate(blk); + // Decrease the number of tags in use + tagsInUse--; + // Move the block to the tail to make it the next victim moveToTail((FALRUBlk*)blk); @@ -169,7 +172,6 @@ FALRU::accessBlock(Addr addr, bool is_secure, Cycles &lat, return blk; } - CacheBlk* FALRU::findBlock(Addr addr, bool is_secure) const { @@ -215,6 +217,9 @@ FALRU::insertBlock(PacketPtr pkt, CacheBlk *blk) // Do common block insertion functionality BaseTags::insertBlock(pkt, blk); + // Increment tag counter + tagsInUse++; + // New block is the MRU moveToHead(falruBlk); |