summaryrefslogtreecommitdiff
path: root/src/mem/cache/replacement_policies/base.hh
diff options
context:
space:
mode:
authorDaniel R. Carvalho <odanrc@yahoo.com.br>2018-09-07 14:33:00 +0200
committerDaniel Carvalho <odanrc@yahoo.com.br>2018-10-10 18:17:42 +0000
commit8f58d9fb87c521674f11c78b8939e5ffdf851d39 (patch)
tree0c85323aba79d385befe368ac47797a27f3b8a4a /src/mem/cache/replacement_policies/base.hh
parentd204e56b2b9b8ad561fc258ebdc50ae8365159e1 (diff)
downloadgem5-8f58d9fb87c521674f11c78b8939e5ffdf851d39.tar.xz
mem-cache: Use set and way for ReplaceableEntry
Replaceable entries belong to table-like structures, and therefore they should be indexable by combining a row and a column. These, using conventional cache nomenclature translate to sets and ways. Make these entries aware of their sets and ways. The idea is to make indexing policies usable by other table-like structures. In order to do so we move sets and ways to ReplaceableEntry, which will be the common base among table entries. Change-Id: If0e3dacf9ea2f523af9cface067469ccecf82648 Reviewed-on: https://gem5-review.googlesource.com/c/12764 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com>
Diffstat (limited to 'src/mem/cache/replacement_policies/base.hh')
-rw-r--r--src/mem/cache/replacement_policies/base.hh44
1 files changed, 40 insertions, 4 deletions
diff --git a/src/mem/cache/replacement_policies/base.hh b/src/mem/cache/replacement_policies/base.hh
index 0ce86d091..6ac7dca85 100644
--- a/src/mem/cache/replacement_policies/base.hh
+++ b/src/mem/cache/replacement_policies/base.hh
@@ -50,12 +50,48 @@ struct ReplacementData {};
*/
class ReplaceableEntry
{
- public:
+ private:
+ /**
+ * Set to which this entry belongs.
+ */
+ uint32_t _set;
+
+ /**
+ * Way (relative position within the set) to which this entry belongs.
+ */
+ uint32_t _way;
+
+ public:
+ /**
+ * Replacement data associated to this entry.
+ * It is instantiated by the replacement policy.
+ */
+ std::shared_ptr<ReplacementData> replacementData;
+
/**
- * Replacement data associated to this entry.
- * It is instantiated by the replacement policy.
+ * Set both the set and way. Should be called only once.
+ *
+ * @param set The set of this entry.
+ * @param way The way of this entry.
+ */
+ void setPosition(const uint32_t set, const uint32_t way) {
+ _set = set;
+ _way = way;
+ }
+
+ /**
+ * Get set number.
+ *
+ * @return The set to which this entry belongs.
+ */
+ uint32_t getSet() const { return _set; }
+
+ /**
+ * Get way number.
+ *
+ * @return The way to which this entry belongs.
*/
- std::shared_ptr<ReplacementData> replacementData;
+ uint32_t getWay() const { return _way; }
};
/**