diff options
author | Andreas Hansson <andreas.hansson@arm.com> | 2015-09-25 07:26:57 -0400 |
---|---|---|
committer | Andreas Hansson <andreas.hansson@arm.com> | 2015-09-25 07:26:57 -0400 |
commit | ca163a80e27e66027a1e28b7b28ff76b8bd14b01 (patch) | |
tree | d4ad8429b8d66f47058645363ddd2967c974e1f0 /src/mem/coherent_xbar.cc | |
parent | 3aa87251d7bc05a1d99fcb0bded843f1c93c2a77 (diff) | |
download | gem5-ca163a80e27e66027a1e28b7b28ff76b8bd14b01.tar.xz |
mem: Only track snooping ports in the snoop filter
This patch changes the tracking of ports in the snoop filter to use
local dense port IDs so that we can have 64 snooping ports (rather
than crossbar slave ports). This is achieved by adding a simple
remapping vector that translates the actal port IDs into the local
slave IDs used in the SnoopMask.
Ultimately this patch allows us to scale to much larger systems
without introducing a hierarchy of crossbars.
Diffstat (limited to 'src/mem/coherent_xbar.cc')
-rw-r--r-- | src/mem/coherent_xbar.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/mem/coherent_xbar.cc b/src/mem/coherent_xbar.cc index 206f94406..cf438bc95 100644 --- a/src/mem/coherent_xbar.cc +++ b/src/mem/coherent_xbar.cc @@ -96,9 +96,6 @@ CoherentXBar::CoherentXBar(const CoherentXBarParams *p) snoopRespPorts.push_back(new SnoopRespPort(*bp, *this)); } - if (snoopFilter) - snoopFilter->setSlavePorts(slavePorts); - clearPortCache(); } @@ -133,6 +130,11 @@ CoherentXBar::init() if (snoopPorts.empty()) warn("CoherentXBar %s has no snooping ports attached!\n", name()); + + // inform the snoop filter about the slave ports so it can create + // its own internal representation + if (snoopFilter) + snoopFilter->setSlavePorts(slavePorts); } bool |