summaryrefslogtreecommitdiff
path: root/src/mem/cache/prefetch/Prefetcher.py
diff options
context:
space:
mode:
authorJavier Bueno <javier.bueno@metempsy.com>2018-11-29 16:59:16 +0100
committerJavier Bueno Hedo <javier.bueno@metempsy.com>2019-01-16 16:03:57 +0000
commit3a3ad05aca43fb4dae1a0a9785549dcfc385af0d (patch)
tree9ee7d1d7173791ced61389ce1894df5cf38c7a26 /src/mem/cache/prefetch/Prefetcher.py
parentafa039d0c06874dda8ccbfc6b5eb2df9c87157a2 (diff)
downloadgem5-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.py40
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")