diff --git a/src/mem/cache/prefetch/access_map_pattern_matching.hh b/src/mem/cache/prefetch/access_map_pattern_matching.hh
index 397bc78..6e2e194 100644
--- a/src/mem/cache/prefetch/access_map_pattern_matching.hh
+++ b/src/mem/cache/prefetch/access_map_pattern_matching.hh
@@ -89,12 +89,15 @@
         /** vector containing the state of the cachelines in this zone */
         std::vector<AccessMapState> states;
 
-        AccessMapEntry(size_t num_entries) : states(num_entries, AM_INIT)
-        {}
-
-        /** Reset the entries to their initial values */
-        void reset() override
+        AccessMapEntry(size_t num_entries)
+          : TaggedEntry(), states(num_entries, AM_INIT)
         {
+        }
+
+        void
+        invalidate() override
+        {
+            TaggedEntry::invalidate();
             for (auto &entry : states) {
                 entry = AM_INIT;
             }
diff --git a/src/mem/cache/prefetch/associative_set.hh b/src/mem/cache/prefetch/associative_set.hh
index e4e1b04..6228fe4 100644
--- a/src/mem/cache/prefetch/associative_set.hh
+++ b/src/mem/cache/prefetch/associative_set.hh
@@ -66,10 +66,10 @@
         valid = true;
     }
 
-    /**
-     * Sets the entry to invalid
-     */
-    void setInvalid() {
+    /** Invalidates the entry. */
+    virtual void
+    invalidate()
+    {
         valid = false;
     }
 
@@ -108,14 +108,6 @@
     {
         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 @@
      */
     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;
diff --git a/src/mem/cache/prefetch/associative_set_impl.hh b/src/mem/cache/prefetch/associative_set_impl.hh
index cc547e2..8acae62 100644
--- a/src/mem/cache/prefetch/associative_set_impl.hh
+++ b/src/mem/cache/prefetch/associative_set_impl.hh
@@ -87,7 +87,7 @@
     Entry* victim = static_cast<Entry*>(replacementPolicy->getVictim(
                             selected_entries));
     // There is only one eviction for this replacement
-    victim->reset();
+    invalidate(victim);
     return victim;
 }
 
@@ -117,4 +117,12 @@
    replacementPolicy->reset(entry->replacementData);
 }
 
+template<class Entry>
+void
+AssociativeSet<Entry>::invalidate(Entry* entry)
+{
+    entry->invalidate();
+    replacementPolicy->invalidate(entry->replacementData);
+}
+
 #endif//__CACHE_PREFETCH_ASSOCIATIVE_SET_IMPL_HH__
diff --git a/src/mem/cache/prefetch/delta_correlating_prediction_tables.cc b/src/mem/cache/prefetch/delta_correlating_prediction_tables.cc
index 4dbd596..8f7041f 100644
--- a/src/mem/cache/prefetch/delta_correlating_prediction_tables.cc
+++ b/src/mem/cache/prefetch/delta_correlating_prediction_tables.cc
@@ -44,8 +44,10 @@
 }
 
 void
-DeltaCorrelatingPredictionTables::DCPTEntry::reset()
+DeltaCorrelatingPredictionTables::DCPTEntry::invalidate()
 {
+    TaggedEntry::invalidate();
+
     for (auto &delta : deltas) {
         delta = 0;
     }
diff --git a/src/mem/cache/prefetch/delta_correlating_prediction_tables.hh b/src/mem/cache/prefetch/delta_correlating_prediction_tables.hh
index 86cf957..e4c466c 100644
--- a/src/mem/cache/prefetch/delta_correlating_prediction_tables.hh
+++ b/src/mem/cache/prefetch/delta_correlating_prediction_tables.hh
@@ -75,12 +75,12 @@
          * Constructor
          * @param num_deltas number of deltas stored in the entry
          */
-        DCPTEntry(unsigned int num_deltas) : lastAddress(0), deltaPointer(0),
-            deltas(num_deltas)
-        {}
+        DCPTEntry(unsigned int num_deltas)
+          : TaggedEntry(), lastAddress(0), deltaPointer(0), deltas(num_deltas)
+        {
+        }
 
-        /** Reset callback called when invalidating the entry */
-        void reset() override;
+        void invalidate() override;
 
         /**
          * Adds an address to the entry, if the entry already existed, a delta
diff --git a/src/mem/cache/prefetch/indirect_memory.cc b/src/mem/cache/prefetch/indirect_memory.cc
index 7031051..0fd72cc 100644
--- a/src/mem/cache/prefetch/indirect_memory.cc
+++ b/src/mem/cache/prefetch/indirect_memory.cc
@@ -183,7 +183,7 @@
         } else {
             // Third access! no pattern has been found so far,
             // release the IPD entry
-            ipd_entry->reset();
+            ipd.invalidate(ipd_entry);
             ipdEntryTrackingMisses = nullptr;
         }
     } else {
@@ -237,7 +237,7 @@
                 pt_entry->enabled = true;
                 pt_entry->indirectCounter.reset();
                 // Release the current IPD Entry
-                entry->reset();
+                ipd.invalidate(entry);
                 // Do not track more misses
                 ipdEntryTrackingMisses = nullptr;
                 return;
diff --git a/src/mem/cache/prefetch/indirect_memory.hh b/src/mem/cache/prefetch/indirect_memory.hh
index f177c5c..07f3cb5 100644
--- a/src/mem/cache/prefetch/indirect_memory.hh
+++ b/src/mem/cache/prefetch/indirect_memory.hh
@@ -101,7 +101,10 @@
               increasedIndirectCounter(false)
         {}
 
-        void reset() override {
+        void
+        invalidate() override
+        {
+            TaggedEntry::invalidate();
             address = 0;
             secure = false;
             streamCounter = 0;
@@ -136,16 +139,20 @@
 
         IndirectPatternDetectorEntry(unsigned int num_addresses,
                                      unsigned int num_shifts)
-          : idx1(0), idx2(0), secondIndexSet(false), numMisses(0),
+          : TaggedEntry(), idx1(0), idx2(0), secondIndexSet(false),
+            numMisses(0),
             baseAddr(num_addresses, std::vector<Addr>(num_shifts))
-        {}
+        {
+        }
 
-        void reset() override {
+        void
+        invalidate() override
+        {
+            TaggedEntry::invalidate();
             idx1 = 0;
             idx2 = 0;
             secondIndexSet = false;
             numMisses = 0;
-            setInvalid();
         }
     };
     /** Indirect Pattern Detector (IPD) table */
diff --git a/src/mem/cache/prefetch/irregular_stream_buffer.hh b/src/mem/cache/prefetch/irregular_stream_buffer.hh
index c97fde8..fefebc5 100644
--- a/src/mem/cache/prefetch/irregular_stream_buffer.hh
+++ b/src/mem/cache/prefetch/irregular_stream_buffer.hh
@@ -79,13 +79,18 @@
      * Maps a set of contiguous addresses to another set of (not necessarily
      * contiguos) addresses, with their corresponding confidence counters
      */
-    struct AddressMappingEntry : public TaggedEntry {
+    struct AddressMappingEntry : public TaggedEntry
+    {
         std::vector<AddressMapping> mappings;
         AddressMappingEntry(size_t num_mappings, unsigned counter_bits)
-            : mappings(num_mappings, counter_bits)
-        {}
-        void reset() override
+          : TaggedEntry(), mappings(num_mappings, counter_bits)
         {
+        }
+
+        void
+        invalidate() override
+        {
+            TaggedEntry::invalidate();
             for (auto &entry : mappings) {
                 entry.address = 0;
                 entry.counter.reset();
diff --git a/src/mem/cache/prefetch/signature_path.hh b/src/mem/cache/prefetch/signature_path.hh
index 3bf4dd2..d2464e2 100644
--- a/src/mem/cache/prefetch/signature_path.hh
+++ b/src/mem/cache/prefetch/signature_path.hh
@@ -99,12 +99,16 @@
         /** use counter, used by SPPv2 */
         SatCounter counter;
         PatternEntry(size_t num_strides, unsigned counter_bits)
-            : strideEntries(num_strides, counter_bits), counter(counter_bits)
-        {}
+          : TaggedEntry(), strideEntries(num_strides, counter_bits),
+            counter(counter_bits)
+        {
+        }
 
         /** Reset the entries to their initial values */
-        void reset() override
+        void
+        invalidate() override
         {
+            TaggedEntry::invalidate();
             for (auto &entry : strideEntries) {
                 entry.counter.reset();
                 entry.stride = 0;
diff --git a/src/mem/cache/prefetch/spatio_temporal_memory_streaming.cc b/src/mem/cache/prefetch/spatio_temporal_memory_streaming.cc
index cf6144a..2bcd2fe 100644
--- a/src/mem/cache/prefetch/spatio_temporal_memory_streaming.cc
+++ b/src/mem/cache/prefetch/spatio_temporal_memory_streaming.cc
@@ -96,7 +96,7 @@
                 // this also sets the values of the entry
                 pst_entry->update(agt_entry);
                 // Free the AGT entry
-                agt_entry.setInvalid();
+                activeGenerationTable.invalidate(&agt_entry);
             }
         }
     }
diff --git a/src/mem/cache/prefetch/spatio_temporal_memory_streaming.hh b/src/mem/cache/prefetch/spatio_temporal_memory_streaming.hh
index 34cf5d1..725fa38 100644
--- a/src/mem/cache/prefetch/spatio_temporal_memory_streaming.hh
+++ b/src/mem/cache/prefetch/spatio_temporal_memory_streaming.hh
@@ -86,12 +86,16 @@
         /** Sequence of accesses */
         std::vector<SequenceEntry> sequence;
 
-        ActiveGenerationTableEntry(int num_positions) : paddress(0), pc(0),
+        ActiveGenerationTableEntry(int num_positions)
+          : TaggedEntry(), paddress(0), pc(0),
             seqCounter(0), sequence(num_positions)
-        {}
-
-        void reset() override
         {
+        }
+
+        void
+        invalidate() override
+        {
+            TaggedEntry::invalidate();
             paddress = 0;
             pc = 0;
             seqCounter = 0;
