summaryrefslogtreecommitdiff
path: root/src/mem/cache/prefetch/associative_set.hh
diff options
context:
space:
mode:
authorDaniel R. Carvalho <odanrc@yahoo.com.br>2020-01-18 16:19:53 +0100
committerDaniel Carvalho <odanrc@yahoo.com.br>2020-01-21 08:07:05 +0000
commit519808c02f2d5d780bf09589d2e29803a5af1ade (patch)
treefd72cd991a2fbedf883fde2ceefc2f8bfc0fe009 /src/mem/cache/prefetch/associative_set.hh
parent7ac4607385f8490b2a12acaef73f2f31583160f0 (diff)
downloadgem5-519808c02f2d5d780bf09589d2e29803a5af1ade.tar.xz
mem-cache: Fix invalidation of prefetchers
Add an invalidation function to the AssociativeSet, so that entries can be properly invalidated by also invalidating their replacement data. Both setInvalid and reset have been merged into invalidate to indicate users that they are using an incorrect approach by generating compilation errors, and to match CacheBlk's naming convention. Change-Id: I568076a3b5adda8b1311d9498b086c0dab457a14 Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/24529 Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
Diffstat (limited to 'src/mem/cache/prefetch/associative_set.hh')
-rw-r--r--src/mem/cache/prefetch/associative_set.hh23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/mem/cache/prefetch/associative_set.hh b/src/mem/cache/prefetch/associative_set.hh
index e4e1b0428..6228fe4da 100644
--- a/src/mem/cache/prefetch/associative_set.hh
+++ b/src/mem/cache/prefetch/associative_set.hh
@@ -66,10 +66,10 @@ class TaggedEntry : public ReplaceableEntry {
valid = true;
}
- /**
- * Sets the entry to invalid
- */
- void setInvalid() {
+ /** Invalidates the entry. */
+ virtual void
+ invalidate()
+ {
valid = false;
}
@@ -108,14 +108,6 @@ class TaggedEntry : public ReplaceableEntry {
{
secure = s;
}
-
- /**
- * Resets the entry, this is called when an entry is evicted to allocate
- * a new one. Types inheriting this class should provide its own
- * implementation
- */
- virtual void reset () {
- }
};
/**
@@ -196,6 +188,13 @@ class AssociativeSet {
*/
void insertEntry(Addr addr, bool is_secure, Entry* entry);
+ /**
+ * Invalidate an entry and its respective replacement data.
+ *
+ * @param entry Entry to be invalidated.
+ */
+ void invalidate(Entry* entry);
+
/** Iterator types */
using const_iterator = typename std::vector<Entry>::const_iterator;
using iterator = typename std::vector<Entry>::iterator;