diff options
author | Nikos Nikoleris <nikos.nikoleris@arm.com> | 2018-05-10 11:38:48 +0100 |
---|---|---|
committer | Nikos Nikoleris <nikos.nikoleris@arm.com> | 2018-05-17 14:38:50 +0000 |
commit | 9637567610649778c7aceb0d2ae2926c5ca36dd2 (patch) | |
tree | 1affc616af61697be422992ee728d451051ab3be /src | |
parent | 91529294470235e6e7b3128bca6c5b8783f35529 (diff) | |
download | gem5-9637567610649778c7aceb0d2ae2926c5ca36dd2.tar.xz |
mem-cache: Remove isTouched field from the CacheBlk
At the moment isTouched is used in the warm-up detection mechanism but
it keeps track of the same information as isValid(). This change
removes it and substitutes its use by isValid().
Change-Id: I611ddf2fa4562ae3b3b2ed2fb74d26abd2e5ec62
Reviewed-on: https://gem5-review.googlesource.com/10427
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Diffstat (limited to 'src')
-rw-r--r-- | src/mem/cache/blk.cc | 3 | ||||
-rw-r--r-- | src/mem/cache/blk.hh | 7 | ||||
-rw-r--r-- | src/mem/cache/tags/base.cc | 15 |
3 files changed, 6 insertions, 19 deletions
diff --git a/src/mem/cache/blk.cc b/src/mem/cache/blk.cc index 233f38052..ad0c20a6f 100644 --- a/src/mem/cache/blk.cc +++ b/src/mem/cache/blk.cc @@ -46,9 +46,6 @@ void CacheBlk::insert(const Addr tag, const State is_secure, const int src_master_ID, const uint32_t task_ID) { - // Touch block - isTouched = true; - // Set block tag this->tag = tag; diff --git a/src/mem/cache/blk.hh b/src/mem/cache/blk.hh index b634d21f1..561d50282 100644 --- a/src/mem/cache/blk.hh +++ b/src/mem/cache/blk.hh @@ -109,12 +109,6 @@ class CacheBlk : public ReplaceableEntry */ int set, way; - /** - * Whether this block has been touched since simulation started. - * Used to calculate number of used tags. - */ - bool isTouched; - /** Number of references to this block since it was brought in. */ unsigned refCount; @@ -217,7 +211,6 @@ class CacheBlk : public ReplaceableEntry task_id = ContextSwitchTaskId::Unknown; status = 0; whenReady = MaxTick; - isTouched = false; refCount = 0; srcMasterId = Request::invldMasterId; tickInserted = MaxTick; diff --git a/src/mem/cache/tags/base.cc b/src/mem/cache/tags/base.cc index 75d117e9c..0087de818 100644 --- a/src/mem/cache/tags/base.cc +++ b/src/mem/cache/tags/base.cc @@ -78,14 +78,6 @@ BaseTags::insertBlock(PacketPtr pkt, CacheBlk *blk) // Get address Addr addr = pkt->getAddr(); - // Update warmup data - if (!blk->isTouched) { - if (!warmedUp && tagsInUse.value() >= warmupBound) { - warmedUp = true; - warmupCycle = curTick(); - } - } - // If we're replacing a block that was previously valid update // stats for it. This can't be done in findBlock() because a // found block might not actually be replaced there if the @@ -100,7 +92,6 @@ BaseTags::insertBlock(PacketPtr pkt, CacheBlk *blk) // Previous block, if existed, has been removed, and now we have // to insert the new one - tagsInUse++; // Deal with what we are bringing in MasterID master_id = pkt->req->masterId(); @@ -111,6 +102,12 @@ 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(); + } + // We only need to write into one tag and one data block. tagAccesses += 1; dataAccesses += 1; |