Daniel Carvalho has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/47399 )

Change subject: mem-cache: Make WeightedLRU inherit from LRU
......................................................................

mem-cache: Make WeightedLRU inherit from LRU

WeightedLRU adds occupancy information to LRU, so remove the
duplicated code.

Change-Id: Ifec19ea59fb411a5ed7a891e8957b1ab93cdbf05
Signed-off-by: Daniel R. Carvalho <oda...@yahoo.com.br>
---
M src/mem/cache/replacement_policies/ReplacementPolicies.py
M src/mem/cache/replacement_policies/weighted_lru_rp.cc
M src/mem/cache/replacement_policies/weighted_lru_rp.hh
3 files changed, 12 insertions(+), 68 deletions(-)



diff --git a/src/mem/cache/replacement_policies/ReplacementPolicies.py b/src/mem/cache/replacement_policies/ReplacementPolicies.py
index 34c8a1e..11de0b2 100644
--- a/src/mem/cache/replacement_policies/ReplacementPolicies.py
+++ b/src/mem/cache/replacement_policies/ReplacementPolicies.py
@@ -120,7 +120,7 @@
     cxx_header = "mem/cache/replacement_policies/tree_plru_rp.hh"
     num_leaves = Param.Int(Parent.assoc, "Number of leaves in each tree")

-class WeightedLRURP(BaseReplacementPolicy):
+class WeightedLRURP(LRURP):
     type = "WeightedLRURP"
     cxx_class = "replacement_policy::WeightedLRU"
     cxx_header = "mem/cache/replacement_policies/weighted_lru_rp.hh"
diff --git a/src/mem/cache/replacement_policies/weighted_lru_rp.cc b/src/mem/cache/replacement_policies/weighted_lru_rp.cc
index 3900014..334a128 100644
--- a/src/mem/cache/replacement_policies/weighted_lru_rp.cc
+++ b/src/mem/cache/replacement_policies/weighted_lru_rp.cc
@@ -43,24 +43,15 @@
 {

 WeightedLRU::WeightedLRU(const Params &p)
-  : Base(p)
+  : LRU(p)
 {
 }

 void
-WeightedLRU::touch(const std::shared_ptr<ReplacementData>&
-                                                  replacement_data) const
+WeightedLRU::touch(const std::shared_ptr<ReplacementData>& replacement_data,
+    int occupancy) const
 {
-    std::static_pointer_cast<WeightedLRUReplData>(replacement_data)->
- last_touch_tick = curTick();
-}
-
-void
-WeightedLRU::touch(const std::shared_ptr<ReplacementData>&
-                        replacement_data, int occupancy) const
-{
-    std::static_pointer_cast<WeightedLRUReplData>(replacement_data)->
- last_touch_tick = curTick();
+    LRU::touch(replacement_data);
     std::static_pointer_cast<WeightedLRUReplData>(replacement_data)->
                                                   last_occ_ptr = occupancy;
 }
@@ -90,8 +81,8 @@
         } else if (candidate_replacement_data->last_occ_ptr ==
                     victim_replacement_data->last_occ_ptr) {
             // Evict the block with a smaller tick.
-            Tick time = candidate_replacement_data->last_touch_tick;
-            if (time < victim_replacement_data->last_touch_tick) {
+            Tick time = candidate_replacement_data->lastTouchTick;
+            if (time < victim_replacement_data->lastTouchTick) {
                 victim = candidate;
             }
         }
@@ -105,22 +96,4 @@
     return std::shared_ptr<ReplacementData>(new WeightedLRUReplData);
 }

-void
-WeightedLRU::reset(const std::shared_ptr<ReplacementData>&
-                                                    replacement_data) const
-{
-    // Set last touch timestamp
-    std::static_pointer_cast<WeightedLRUReplData>(
-        replacement_data)->last_touch_tick = curTick();
-}
-
-void
-WeightedLRU::invalidate(
-    const std::shared_ptr<ReplacementData>& replacement_data)
-{
-    // Reset last touch timestamp
-    std::static_pointer_cast<WeightedLRUReplData>(
-        replacement_data)->last_touch_tick = Tick(0);
-}
-
 } // namespace replacement_policy
diff --git a/src/mem/cache/replacement_policies/weighted_lru_rp.hh b/src/mem/cache/replacement_policies/weighted_lru_rp.hh
index 82b31d9..2279683 100644
--- a/src/mem/cache/replacement_policies/weighted_lru_rp.hh
+++ b/src/mem/cache/replacement_policies/weighted_lru_rp.hh
@@ -37,7 +37,7 @@
 #include <memory>

 #include "base/types.hh"
-#include "mem/cache/replacement_policies/base.hh"
+#include "mem/cache/replacement_policies/lru_rp.hh"

 struct WeightedLRURPParams;

@@ -45,59 +45,30 @@
 namespace replacement_policy
 {

-class WeightedLRU : public Base
+class WeightedLRU : public LRU
 {
   protected:
     /** Weighted LRU implementation of replacement data. */
-    struct WeightedLRUReplData : ReplacementData
+    struct WeightedLRUReplData : LRUReplData
     {
         /** pointer for last occupancy */
         int last_occ_ptr;

-        /** Tick on which the entry was last touched. */
-        Tick last_touch_tick;
-
         /**
          * Default constructor. Invalidate data.
          */
-        WeightedLRUReplData() : ReplacementData(),
-                                last_occ_ptr(0), last_touch_tick(0) {}
+        WeightedLRUReplData() : LRUReplData(), last_occ_ptr(0) {}
     };
   public:
     typedef WeightedLRURPParams Params;
     WeightedLRU(const Params &p);
     ~WeightedLRU() = default;

-    /**
-     * Invalidate replacement data to set it as the next probable victim.
-     * Sets its last touch tick as the starting tick.
-     *
-     * @param replacement_data Replacement data to be invalidated.
-     */
- void invalidate(const std::shared_ptr<ReplacementData>& replacement_data) - override;
-
-    /**
-     * Touch an entry to update its replacement data.
-     * Sets its last touch tick as the current tick.
-     *
-     * @param replacement_data Replacement data to be touched.
-     */
-    void touch(const std::shared_ptr<ReplacementData>&
-                                        replacement_data) const override;
+    using Base::touch;
     void touch(const std::shared_ptr<ReplacementData>& replacement_data,
                                         int occupancy) const;

     /**
-     * Reset replacement data. Used when an entry is inserted.
-     * Sets its last touch tick as the current tick.
-     *
-     * @param replacement_data Replacement data to be reset.
-     */
- void reset(const std::shared_ptr<ReplacementData>& replacement_data) const - override;
-
-    /**
      * Instantiate a replacement data entry.
      *
      * @return A shared pointer to the new replacement data.

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/47399
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ifec19ea59fb411a5ed7a891e8957b1ab93cdbf05
Gerrit-Change-Number: 47399
Gerrit-PatchSet: 1
Gerrit-Owner: Daniel Carvalho <oda...@yahoo.com.br>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to