mem-cache: Make StridePrefetcher use Replacement Policies
[gem5.git] / src / mem / cache / prefetch / Prefetcher.py
index 316a6d0ba91dd0e07f2ea0f3f27e40081effaaf4..bae235d84b492bfd9fa411c5afe24ba2d3f1272e 100644 (file)
@@ -43,6 +43,7 @@ from ClockedObject import ClockedObject
 from m5.SimObject import *
 from m5.params import *
 from m5.proxy import *
+from ReplacementPolicies import *
 
 class HWPProbeEvent(object):
     def __init__(self, prefetcher, obj, *listOfNames):
@@ -65,6 +66,9 @@ class BasePrefetcher(ClockedObject):
     ]
     sys = Param.System(Parent.any, "System this prefetcher belongs to")
 
+    # Get the block size from the parent (system)
+    block_size = Param.Int(Parent.cache_line_size, "Block size in bytes")
+
     on_miss = Param.Bool(False, "Only notify prefetcher on misses")
     on_read = Param.Bool(True, "Notify prefetcher on reads")
     on_write = Param.Bool(True, "Notify prefetcher on writes")
@@ -109,6 +113,9 @@ class StridePrefetcher(QueuedPrefetcher):
     cxx_class = 'StridePrefetcher'
     cxx_header = "mem/cache/prefetch/stride.hh"
 
+    # Do not consult stride prefetcher on instruction accesses
+    on_inst = False
+
     max_conf = Param.Int(7, "Maximum confidence level")
     thresh_conf = Param.Int(4, "Threshold confidence level")
     min_conf = Param.Int(0, "Minimum confidence level")
@@ -120,6 +127,10 @@ class StridePrefetcher(QueuedPrefetcher):
 
     degree = Param.Int(4, "Number of prefetches to generate")
 
+    # Get replacement policy
+    replacement_policy = Param.BaseReplacementPolicy(RandomRP(),
+        "Replacement policy")
+
 class TaggedPrefetcher(QueuedPrefetcher):
     type = 'TaggedPrefetcher'
     cxx_class = 'TaggedPrefetcher'