mem-cache: Revert "mem-cache: Remove Packet dependency in Tags"
authorDaniel R. Carvalho <odanrc@yahoo.com.br>
Fri, 8 Mar 2019 16:41:25 +0000 (17:41 +0100)
committerDaniel Carvalho <odanrc@yahoo.com.br>
Mon, 11 Mar 2019 08:57:24 +0000 (08:57 +0000)
Reverting patch due to polymorphism limitations.

This reverts commit 86a54d91936b524c0ef0f282959f0fc29bafe7eb.

Change-Id: Ie032dcc5176448c62118c89732b3cc6b8efd5a13
Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17049
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>

src/mem/cache/base.cc
src/mem/cache/tags/base.cc
src/mem/cache/tags/base.hh
src/mem/cache/tags/base_set_assoc.hh
src/mem/cache/tags/fa_lru.cc
src/mem/cache/tags/fa_lru.hh
src/mem/cache/tags/sector_tags.cc
src/mem/cache/tags/sector_tags.hh

index a42f2ebdad0f891a8ca54cce9e382811d080bb9d..9f708b30dc71f05e26eafbc9688f2f6b7d9f2f6c 100644 (file)
@@ -1359,8 +1359,7 @@ BaseCache::allocateBlock(const PacketPtr pkt, PacketList &writebacks)
     }
 
     // Insert new block at victimized entry
-    tags->insertBlock(addr, is_secure, pkt->req->masterId(),
-                      pkt->req->taskId(), victim);
+    tags->insertBlock(pkt, victim);
 
     return victim;
 }
index 7237f18218af29b0af6bb72d02a071468f592b07..4855ebd5114c09a7794020fc836e699fb6a662ae 100644 (file)
@@ -98,20 +98,21 @@ BaseTags::findBlock(Addr addr, bool is_secure) const
 }
 
 void
-BaseTags::insertBlock(const Addr addr, const bool is_secure,
-                      const int src_master_ID, const uint32_t task_ID,
-                      CacheBlk *blk)
+BaseTags::insertBlock(const PacketPtr pkt, CacheBlk *blk)
 {
     assert(!blk->isValid());
 
     // Previous block, if existed, has been removed, and now we have
     // to insert the new one
+
     // Deal with what we are bringing in
-    assert(src_master_ID < system->maxMasters());
-    occupancies[src_master_ID]++;
+    MasterID master_id = pkt->req->masterId();
+    assert(master_id < system->maxMasters());
+    occupancies[master_id]++;
 
     // Insert block with tag, src master id and task id
-    blk->insert(extractTag(addr), is_secure, src_master_ID, task_ID);
+    blk->insert(extractTag(pkt->getAddr()), pkt->isSecure(), master_id,
+                pkt->req->taskId());
 
     // Check if cache warm up is done
     if (!warmedUp && tagsInUse.value() >= warmupBound) {
index 840193b7a366dfc302dc30185234c35c2ccebe65..296837e505ec760272ff6626f5424bc49dcedbf5 100644 (file)
@@ -58,6 +58,7 @@
 #include "base/statistics.hh"
 #include "base/types.hh"
 #include "mem/cache/cache_blk.hh"
+#include "mem/packet.hh"
 #include "params/BaseTags.hh"
 #include "sim/clocked_object.hh"
 
@@ -305,15 +306,10 @@ class BaseTags : public ClockedObject
     /**
      * Insert the new block into the cache and update stats.
      *
-     * @param addr Address of the block.
-     * @param is_secure Whether the block is in secure space or not.
-     * @param src_master_ID The source requestor ID.
-     * @param task_ID The new task ID.
+     * @param pkt Packet holding the address to update
      * @param blk The block to update.
      */
-    virtual void insertBlock(const Addr addr, const bool is_secure,
-                             const int src_master_ID, const uint32_t task_ID,
-                             CacheBlk *blk);
+    virtual void insertBlock(const PacketPtr pkt, CacheBlk *blk);
 
     /**
      * Regenerate the block address.
index b1fa88464aed826a8333483e169f8a97b294a284..c39a8133511339bbcf21a979f32946be1850711b 100644 (file)
@@ -60,6 +60,7 @@
 #include "mem/cache/replacement_policies/replaceable_entry.hh"
 #include "mem/cache/tags/base.hh"
 #include "mem/cache/tags/indexing_policies/base.hh"
+#include "mem/packet.hh"
 #include "params/BaseSetAssoc.hh"
 
 /**
@@ -182,18 +183,13 @@ class BaseSetAssoc : public BaseTags
     /**
      * Insert the new block into the cache and update replacement data.
      *
-     * @param addr Address of the block.
-     * @param is_secure Whether the block is in secure space or not.
-     * @param src_master_ID The source requestor ID.
-     * @param task_ID The new task ID.
+     * @param pkt Packet holding the address to update
      * @param blk The block to update.
      */
-    void insertBlock(const Addr addr, const bool is_secure,
-                     const int src_master_ID, const uint32_t task_ID,
-                     CacheBlk *blk) override
+    void insertBlock(const PacketPtr pkt, CacheBlk *blk) override
     {
         // Insert block
-        BaseTags::insertBlock(addr, is_secure, src_master_ID, task_ID, blk);
+        BaseTags::insertBlock(pkt, blk);
 
         // Increment tag counter
         tagsInUse++;
index b1f9bbc9230b33ca9f8cc3d0bc660c1aa0f3c0f3..4cdac0ac00da813ec7e8f39c1e2df1595a4ab421 100644 (file)
@@ -209,9 +209,7 @@ FALRU::findVictim(Addr addr, const bool is_secure,
 }
 
 void
-FALRU::insertBlock(const Addr addr, const bool is_secure,
-                   const int src_master_ID, const uint32_t task_ID,
-                   CacheBlk *blk)
+FALRU::insertBlock(const PacketPtr pkt, CacheBlk *blk)
 {
     FALRUBlk* falruBlk = static_cast<FALRUBlk*>(blk);
 
@@ -219,7 +217,7 @@ FALRU::insertBlock(const Addr addr, const bool is_secure,
     assert(falruBlk->inCachesMask == 0);
 
     // Do common block insertion functionality
-    BaseTags::insertBlock(addr, is_secure, src_master_ID, task_ID, blk);
+    BaseTags::insertBlock(pkt, blk);
 
     // Increment tag counter
     tagsInUse++;
index 0cae1dea6db45508b708723aebb9fff533c0f3f0..346ff60c7377e44fed45f168ff530c0be20487b8 100644 (file)
@@ -62,6 +62,7 @@
 #include "base/types.hh"
 #include "mem/cache/cache_blk.hh"
 #include "mem/cache/tags/base.hh"
+#include "mem/packet.hh"
 #include "params/FALRU.hh"
 
 // Uncomment to enable sanity checks for the FALRU cache and the
@@ -227,15 +228,10 @@ class FALRU : public BaseTags
     /**
      * Insert the new block into the cache and update replacement data.
      *
-     * @param addr Address of the block.
-     * @param is_secure Whether the block is in secure space or not.
-     * @param src_master_ID The source requestor ID.
-     * @param task_ID The new task ID.
+     * @param pkt Packet holding the address to update
      * @param blk The block to update.
      */
-    void insertBlock(const Addr addr, const bool is_secure,
-                     const int src_master_ID, const uint32_t task_ID,
-                     CacheBlk *blk) override;
+    void insertBlock(const PacketPtr pkt, CacheBlk *blk) override;
 
     /**
      * Generate the tag from the addres. For fully associative this is just the
index ad374e5eeb1f3c83967b9470f9729c4c976be6c3..0cd73719e13144385712964596d32576553baf37 100644 (file)
@@ -167,9 +167,7 @@ SectorTags::accessBlock(Addr addr, bool is_secure, Cycles &lat)
 }
 
 void
-SectorTags::insertBlock(const Addr addr, const bool is_secure,
-                        const int src_master_ID, const uint32_t task_ID,
-                        CacheBlk *blk)
+SectorTags::insertBlock(const PacketPtr pkt, CacheBlk *blk)
 {
     // Get block's sector
     SectorSubBlk* sub_blk = static_cast<SectorSubBlk*>(blk);
@@ -189,7 +187,7 @@ SectorTags::insertBlock(const Addr addr, const bool is_secure,
     }
 
     // Do common block insertion functionality
-    BaseTags::insertBlock(addr, is_secure, src_master_ID, task_ID, blk);
+    BaseTags::insertBlock(pkt, blk);
 }
 
 CacheBlk*
index e3c0fa44784e77cdc183bc08ec8d27397952571c..8e389a6a6a0f1a1b68b13e72d94868d8e7eb37a9 100644 (file)
@@ -41,9 +41,9 @@
 
 #include "mem/cache/tags/base.hh"
 #include "mem/cache/tags/sector_blk.hh"
+#include "mem/packet.hh"
 #include "params/SectorTags.hh"
 
-class BaseCache;
 class BaseReplacementPolicy;
 class ReplaceableEntry;
 
@@ -129,15 +129,10 @@ class SectorTags : public BaseTags
     /**
      * Insert the new block into the cache and update replacement data.
      *
-     * @param addr Address of the block.
-     * @param is_secure Whether the block is in secure space or not.
-     * @param src_master_ID The source requestor ID.
-     * @param task_ID The new task ID.
+     * @param pkt Packet holding the address to update
      * @param blk The block to update.
      */
-    void insertBlock(const Addr addr, const bool is_secure,
-                     const int src_master_ID, const uint32_t task_ID,
-                     CacheBlk *blk) override;
+    void insertBlock(const PacketPtr pkt, CacheBlk *blk) override;
 
     /**
      * Finds the given address in the cache, do not update replacement data.