From 519808c02f2d5d780bf09589d2e29803a5af1ade Mon Sep 17 00:00:00 2001 From: "Daniel R. Carvalho" Date: Sat, 18 Jan 2020 16:19:53 +0100 Subject: 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 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/24529 Reviewed-by: Nikos Nikoleris Maintainer: Nikos Nikoleris Tested-by: kokoro --- src/mem/cache/prefetch/associative_set_impl.hh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/mem/cache/prefetch/associative_set_impl.hh') diff --git a/src/mem/cache/prefetch/associative_set_impl.hh b/src/mem/cache/prefetch/associative_set_impl.hh index cc547e2dc..8acae6269 100644 --- a/src/mem/cache/prefetch/associative_set_impl.hh +++ b/src/mem/cache/prefetch/associative_set_impl.hh @@ -87,7 +87,7 @@ AssociativeSet::findVictim(Addr addr) Entry* victim = static_cast(replacementPolicy->getVictim( selected_entries)); // There is only one eviction for this replacement - victim->reset(); + invalidate(victim); return victim; } @@ -117,4 +117,12 @@ AssociativeSet::insertEntry(Addr addr, bool is_secure, Entry* entry) replacementPolicy->reset(entry->replacementData); } +template +void +AssociativeSet::invalidate(Entry* entry) +{ + entry->invalidate(); + replacementPolicy->invalidate(entry->replacementData); +} + #endif//__CACHE_PREFETCH_ASSOCIATIVE_SET_IMPL_HH__ -- cgit v1.2.3