diff options
author | Stephan Diestelhorst <stephan.diestelhorst@arm.com> | 2014-09-20 17:18:26 -0400 |
---|---|---|
committer | Stephan Diestelhorst <stephan.diestelhorst@arm.com> | 2014-09-20 17:18:26 -0400 |
commit | ba98d598aef0e3823d2ded7084b1a2829ade5b73 (patch) | |
tree | 34293799e079272c60320087b507e7d6e8fda26e /src/mem/Bus.py | |
parent | 16351ba8d6b98e4dc0012cfc4083fe93ec6d76ce (diff) | |
download | gem5-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.py | 8 |
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.") |