diff options
author | Andreas Hansson <andreas.hansson@arm.com> | 2015-12-28 11:14:14 -0500 |
---|---|---|
committer | Andreas Hansson <andreas.hansson@arm.com> | 2015-12-28 11:14:14 -0500 |
commit | b93a9d0d515472d7b616e4d535d242290deeb791 (patch) | |
tree | 053d180608683a6fae8fff8ab97c473da4ebb990 /src/mem/cache/cache.hh | |
parent | 036263e28057ae39f5fd1df0cbd87094770add80 (diff) | |
download | gem5-b93a9d0d515472d7b616e4d535d242290deeb791.tar.xz |
mem: Do not use sender state to track forwarded snoops in cache
This patch changes how the cache tracks which snoops are forwarded,
and which ones are created locally. Previously the identification was
based on an empty sender state of a specific class, but this method
fails to distinguish which cache actually attached the sender
state. Instead we use the same mechanism as the crossbar, and keep
track of the requests that have outstanding snoops.
Diffstat (limited to 'src/mem/cache/cache.hh')
-rw-r--r-- | src/mem/cache/cache.hh | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mem/cache/cache.hh b/src/mem/cache/cache.hh index 5ea72831b..4f1763c89 100644 --- a/src/mem/cache/cache.hh +++ b/src/mem/cache/cache.hh @@ -247,6 +247,13 @@ class Cache : public BaseCache writebackTempBlockAtomicEvent; /** + * 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. + */ + std::unordered_set<RequestPtr> outstandingSnoop; + + /** * Does all the processing necessary to perform the provided request. * @param pkt The memory request to perform. * @param blk The cache block to be updated. |