summaryrefslogtreecommitdiff
path: root/src/mem/cache/mshr.hh
diff options
context:
space:
mode:
authorCurtis Dunham <Curtis.Dunham@arm.com>2014-10-21 17:04:41 -0500
committerCurtis Dunham <Curtis.Dunham@arm.com>2014-10-21 17:04:41 -0500
commit4024fab7fc16223018a48af4a19efeec865c889b (patch)
tree8a2285b72370de07b44e7b452f30ace2c19a32b2 /src/mem/cache/mshr.hh
parent46f9f11a5575a0ec8a69a1c0181b37668de65152 (diff)
downloadgem5-4024fab7fc16223018a48af4a19efeec865c889b.tar.xz
mem: don't inhibit WriteInv's or defer snoops on their MSHRs
WriteInvalidate semantics depend on the unconditional writeback or they won't complete. Also, there's no point in deferring snoops on their MSHRs, as they don't get new data at the end of their life cycle the way other transactions do. Add comment in the cache about a minor inefficiency re: WriteInvalidate.
Diffstat (limited to 'src/mem/cache/mshr.hh')
-rw-r--r--src/mem/cache/mshr.hh7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mem/cache/mshr.hh b/src/mem/cache/mshr.hh
index 9ea9cfb2c..e5a15b61d 100644
--- a/src/mem/cache/mshr.hh
+++ b/src/mem/cache/mshr.hh
@@ -83,6 +83,9 @@ class MSHR : public Packet::SenderState, public Printable
/** Will we have a dirty copy after this request? */
bool pendingDirty;
+ /** Will we have a clean copy after this request? (i.e. is writeback) */
+ bool pendingClean;
+
/** Did we snoop an invalidate while waiting for data? */
bool postInvalidate;
@@ -179,6 +182,10 @@ class MSHR : public Packet::SenderState, public Printable
assert(inService); return pendingDirty;
}
+ bool isPendingClean() const {
+ return pendingClean;
+ }
+
bool hasPostInvalidate() const {
assert(inService); return postInvalidate;
}