diff options
author | Javier Bueno <javier.bueno@metempsy.com> | 2018-11-29 16:59:16 +0100 |
---|---|---|
committer | Javier Bueno Hedo <javier.bueno@metempsy.com> | 2019-01-16 16:03:57 +0000 |
commit | 3a3ad05aca43fb4dae1a0a9785549dcfc385af0d (patch) | |
tree | 9ee7d1d7173791ced61389ce1894df5cf38c7a26 /src/mem/cache/prefetch/Prefetcher.py | |
parent | afa039d0c06874dda8ccbfc6b5eb2df9c87157a2 (diff) | |
download | gem5-3a3ad05aca43fb4dae1a0a9785549dcfc385af0d.tar.xz |
mem-cache: Signature Path Prefetcher
Related paper:
Lookahead Prefetching with Signature Path
J Kim, PV Gratz, ALN Reddy
The 2nd Data Prefetching Championship (DPC2), 2015
Change-Id: I2319be2fa409f955f65e1bf1e1bb2d6d9a4fea11
Reviewed-on: https://gem5-review.googlesource.com/c/14737
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Diffstat (limited to 'src/mem/cache/prefetch/Prefetcher.py')
-rw-r--r-- | src/mem/cache/prefetch/Prefetcher.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/mem/cache/prefetch/Prefetcher.py b/src/mem/cache/prefetch/Prefetcher.py index df547ed42..a868a2583 100644 --- a/src/mem/cache/prefetch/Prefetcher.py +++ b/src/mem/cache/prefetch/Prefetcher.py @@ -40,6 +40,7 @@ # Mitch Hayenga from ClockedObject import ClockedObject +from IndexingPolicies import * from m5.SimObject import * from m5.params import * from m5.proxy import * @@ -139,3 +140,42 @@ class TaggedPrefetcher(QueuedPrefetcher): cxx_header = "mem/cache/prefetch/tagged.hh" degree = Param.Int(2, "Number of prefetches to generate") + +class SignaturePathPrefetcher(QueuedPrefetcher): + type = 'SignaturePathPrefetcher' + cxx_class = 'SignaturePathPrefetcher' + cxx_header = "mem/cache/prefetch/signature_path.hh" + + signature_shift = Param.UInt8(3, + "Number of bits to shift when calculating a new signature"); + signature_bits = Param.UInt16(12, + "Size of the signature, in bits"); + signature_table_entries = Param.MemorySize("1024", + "Number of entries of the signature table") + signature_table_assoc = Param.Unsigned(2, + "Associativity of the signature table") + signature_table_indexing_policy = Param.BaseIndexingPolicy( + SetAssociative(entry_size = 1, assoc = Parent.signature_table_assoc, + size = Parent.signature_table_entries), + "Indexing policy of the signature table") + signature_table_replacement_policy = Param.BaseReplacementPolicy(LRURP(), + "Replacement policy of the signature table") + + max_counter_value = Param.UInt8(7, "Maximum pattern counter value") + pattern_table_entries = Param.MemorySize("4096", + "Number of entries of the pattern table") + pattern_table_assoc = Param.Unsigned(1, + "Associativity of the pattern table") + strides_per_pattern_entry = Param.Unsigned(4, + "Number of strides stored in each pattern entry") + pattern_table_indexing_policy = Param.BaseIndexingPolicy( + SetAssociative(entry_size = 1, assoc = Parent.pattern_table_assoc, + size = Parent.pattern_table_entries), + "Indexing policy of the pattern table") + pattern_table_replacement_policy = Param.BaseReplacementPolicy(LRURP(), + "Replacement policy of the pattern table") + + prefetch_confidence_threshold = Param.Float(0.5, + "Minimum confidence to issue prefetches") + lookahead_confidence_threshold = Param.Float(0.75, + "Minimum confidence to continue exploring lookahead entries") |