diff options
author | Andreas Hansson <andreas.hansson@arm.com> | 2015-01-22 05:01:14 -0500 |
---|---|---|
committer | Andreas Hansson <andreas.hansson@arm.com> | 2015-01-22 05:01:14 -0500 |
commit | 072f78471d11c31b6009beb572296f704912d0f7 (patch) | |
tree | e1f4e5dcb97c36a650ba4597390494dde7bdc66d /src/mem/coherent_xbar.hh | |
parent | fc8cb1fa7680a92c5ac6cedd0e1cac6888e933f4 (diff) | |
download | gem5-072f78471d11c31b6009beb572296f704912d0f7.tar.xz |
mem: Make the XBar responsible for tracking response routing
This patch removes the need for a source and destination field in the
packet by shifting the onus of the tracking to the crossbar, much like
a real implementation. This change in behaviour also means we no
longer need a SenderState to remember the source/dest when ever we
have multiple crossbars in the system. Thus, the stack that was
created by the SenderState is not needed, and each crossbar locally
tracks the response routing.
The fields in the packet are still left behind as the RubyPort (which
also acts as a crossbar) does routing based on them. In the succeeding
patches the uses of the src and dest field will be removed. Combined,
these patches improve the simulation performance by roughly 2%.
Diffstat (limited to 'src/mem/coherent_xbar.hh')
-rw-r--r-- | src/mem/coherent_xbar.hh | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/mem/coherent_xbar.hh b/src/mem/coherent_xbar.hh index fd4dd1cca..446c0b577 100644 --- a/src/mem/coherent_xbar.hh +++ b/src/mem/coherent_xbar.hh @@ -51,7 +51,6 @@ #ifndef __MEM_COHERENT_XBAR_HH__ #define __MEM_COHERENT_XBAR_HH__ -#include "base/hashmap.hh" #include "mem/snoop_filter.hh" #include "mem/xbar.hh" #include "params/CoherentXBar.hh" @@ -259,11 +258,11 @@ class CoherentXBar : public BaseXBar std::vector<SlavePort*> snoopPorts; /** - * Store the outstanding requests so we can determine which ones - * we generated and which ones were merely forwarded. This is used - * in the coherent crossbar when coherency responses come back. + * Store the outstanding requests that we are expecting snoop + * responses from so we can determine which snoop responses we + * generated and which ones were merely forwarded. */ - m5::hash_set<RequestPtr> outstandingReq; + m5::hash_set<RequestPtr> outstandingSnoop; /** * Keep a pointer to the system to be allow to querying memory system |