diff options
author | Daniel R. Carvalho <odanrc@yahoo.com.br> | 2020-01-18 16:19:53 +0100 |
---|---|---|
committer | Daniel Carvalho <odanrc@yahoo.com.br> | 2020-01-21 08:07:05 +0000 |
commit | 519808c02f2d5d780bf09589d2e29803a5af1ade (patch) | |
tree | fd72cd991a2fbedf883fde2ceefc2f8bfc0fe009 /src/mem/cache/prefetch/irregular_stream_buffer.hh | |
parent | 7ac4607385f8490b2a12acaef73f2f31583160f0 (diff) | |
download | gem5-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/irregular_stream_buffer.hh')
-rw-r--r-- | src/mem/cache/prefetch/irregular_stream_buffer.hh | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/mem/cache/prefetch/irregular_stream_buffer.hh b/src/mem/cache/prefetch/irregular_stream_buffer.hh index c97fde84d..fefebc5d2 100644 --- a/src/mem/cache/prefetch/irregular_stream_buffer.hh +++ b/src/mem/cache/prefetch/irregular_stream_buffer.hh @@ -79,13 +79,18 @@ class IrregularStreamBufferPrefetcher : public QueuedPrefetcher * 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(); |