summaryrefslogtreecommitdiff
path: root/src/mem/Bus.py
diff options
context:
space:
mode:
authorStephan Diestelhorst <stephan.diestelhorst@arm.com>2014-09-20 17:18:26 -0400
committerStephan Diestelhorst <stephan.diestelhorst@arm.com>2014-09-20 17:18:26 -0400
commitba98d598aef0e3823d2ded7084b1a2829ade5b73 (patch)
tree34293799e079272c60320087b507e7d6e8fda26e /src/mem/Bus.py
parent16351ba8d6b98e4dc0012cfc4083fe93ec6d76ce (diff)
downloadgem5-ba98d598aef0e3823d2ded7084b1a2829ade5b73.tar.xz
mem: Simple Snoop Filter
This is a first cut at a simple snoop filter that tracks presence of lines in the caches "above" it. The snoop filter can be applied at any given cache hierarchy and will then handle the caches above it appropriately; there is no need to use this only in the last-level bus. This design currently has some limitations: missing stats, no notion of clean evictions (these will not update the underlying snoop filter, because they are not sent from the evicting cache down), no notion of capacity for the snoop filter and thus no need for invalidations caused by capacity pressure in the snoop filter. These are planned to be added on top with future change sets.
Diffstat (limited to 'src/mem/Bus.py')
-rw-r--r--src/mem/Bus.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mem/Bus.py b/src/mem/Bus.py
index e8e03ccb4..34d9ae664 100644
--- a/src/mem/Bus.py
+++ b/src/mem/Bus.py
@@ -43,6 +43,7 @@ from MemObject import MemObject
from System import System
from m5.params import *
from m5.proxy import *
+from m5.SimObject import SimObject
class BaseBus(MemObject):
type = 'BaseBus'
@@ -74,3 +75,10 @@ class CoherentBus(BaseBus):
cxx_header = "mem/coherent_bus.hh"
system = Param.System(Parent.any, "System that the bus belongs to.")
+
+class SnoopFilter(SimObject):
+ type = 'SnoopFilter'
+ cxx_header = "mem/snoop_filter.hh"
+ lookup_latency = Param.Cycles(3, "lookup latency (cycles)")
+
+ system = Param.System(Parent.any, "System that the bus belongs to.")