From b93a9d0d515472d7b616e4d535d242290deeb791 Mon Sep 17 00:00:00 2001 From: Andreas Hansson Date: Mon, 28 Dec 2015 11:14:14 -0500 Subject: 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. --- src/mem/cache/cache.hh | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/mem/cache/cache.hh') 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 @@ -246,6 +246,13 @@ class Cache : public BaseCache EventWrapper \ 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 outstandingSnoop; + /** * Does all the processing necessary to perform the provided request. * @param pkt The memory request to perform. -- cgit v1.2.3