summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Nikoleris <nikos.nikoleris@arm.com>2018-05-10 11:38:48 +0100
committerNikos Nikoleris <nikos.nikoleris@arm.com>2018-05-17 14:38:50 +0000
commit9637567610649778c7aceb0d2ae2926c5ca36dd2 (patch)
tree1affc616af61697be422992ee728d451051ab3be
parent91529294470235e6e7b3128bca6c5b8783f35529 (diff)
downloadgem5-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>
-rw-r--r--src/mem/cache/blk.cc3
-rw-r--r--src/mem/cache/blk.hh7
-rw-r--r--src/mem/cache/tags/base.cc15
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;