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>
diff --git a/src/mem/cache/tags/base.cc b/src/mem/cache/tags/base.cc
index 13e1245..caed594 100644
--- a/src/mem/cache/tags/base.cc
+++ b/src/mem/cache/tags/base.cc
@@ -99,7 +99,6 @@
     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 2777198..0cc7902 100644
--- a/src/mem/cache/tags/base.hh
+++ b/src/mem/cache/tags/base.hh
@@ -253,7 +253,6 @@
         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 ae98dcf..18da532 100644
--- a/src/mem/cache/tags/base_set_assoc.cc
+++ b/src/mem/cache/tags/base_set_assoc.cc
@@ -113,6 +113,9 @@
 {
     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 d19a00e..b41c309 100644
--- a/src/mem/cache/tags/base_set_assoc.hh
+++ b/src/mem/cache/tags/base_set_assoc.hh
@@ -122,8 +122,8 @@
     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 @@
         // 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 8eab628..b5950f6 100644
--- a/src/mem/cache/tags/fa_lru.cc
+++ b/src/mem/cache/tags/fa_lru.cc
@@ -122,6 +122,9 @@
 {
     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 @@
     return blk;
 }
 
-
 CacheBlk*
 FALRU::findBlock(Addr addr, bool is_secure) const
 {
@@ -215,6 +217,9 @@
     // Do common block insertion functionality
     BaseTags::insertBlock(pkt, blk);
 
+    // Increment tag counter
+    tagsInUse++;
+
     // New block is the MRU
     moveToHead(falruBlk);