diff options
author | Andreas Hansson <andreas.hansson@arm.com> | 2016-02-10 04:08:25 -0500 |
---|---|---|
committer | Andreas Hansson <andreas.hansson@arm.com> | 2016-02-10 04:08:25 -0500 |
commit | 92f021cbbed84bc1d8ceee80b78fb9be1086819c (patch) | |
tree | d65dbb57bc3443e0cd19f30012c43d268f428c63 /src/mem/XBar.py | |
parent | f84ee031ccdb63d016c6f55b578085a2e5af4a4b (diff) | |
download | gem5-92f021cbbed84bc1d8ceee80b78fb9be1086819c.tar.xz |
mem: Move the point of coherency to the coherent crossbar
This patch introduces the ability of making the coherent crossbar the
point of coherency. If so, the crossbar does not forward packets where
a cache with ownership has already committed to responding, and also
does not forward any coherency-related packets that are not intended
for a downstream memory controller. Thus, invalidations and upgrades
are turned around in the crossbar, and the memory controller only sees
normal reads and writes.
In addition this patch moves the express snoop promotion of a packet
to the crossbar, thus allowing the downstream cache to check the
express snoop flag (as it should) for bypassing any blocking, rather
than relying on whether a cache is responding or not.
Diffstat (limited to 'src/mem/XBar.py')
-rw-r--r-- | src/mem/XBar.py | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/mem/XBar.py b/src/mem/XBar.py index 8614519b3..674f9262e 100644 --- a/src/mem/XBar.py +++ b/src/mem/XBar.py @@ -100,6 +100,12 @@ class CoherentXBar(BaseXBar): # An optional snoop filter snoop_filter = Param.SnoopFilter(NULL, "Selected snoop filter") + # Determine how this crossbar handles packets where caches have + # already committed to responding, by establishing if the crossbar + # is the point of coherency or not. + point_of_coherency = Param.Bool(False, "Consider this crossbar the " \ + "point of coherency") + system = Param.System(Parent.any, "System that the crossbar belongs to.") class SnoopFilter(SimObject): @@ -147,6 +153,11 @@ class SystemXBar(CoherentXBar): response_latency = 2 snoop_response_latency = 4 + # This specialisation of the coherent crossbar is to be considered + # the point of coherency, as there are no (coherent) downstream + # caches. + point_of_coherency = True + # In addition to the system interconnect, we typically also have one # or more on-chip I/O crossbars. Note that at some point we might want # to also define an off-chip I/O crossbar such as PCIe. |