diff options
author | Curtis Dunham <Curtis.Dunham@arm.com> | 2014-10-21 17:04:41 -0500 |
---|---|---|
committer | Curtis Dunham <Curtis.Dunham@arm.com> | 2014-10-21 17:04:41 -0500 |
commit | 4024fab7fc16223018a48af4a19efeec865c889b (patch) | |
tree | 8a2285b72370de07b44e7b452f30ace2c19a32b2 /src/mem/cache/mshr.hh | |
parent | 46f9f11a5575a0ec8a69a1c0181b37668de65152 (diff) | |
download | gem5-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.hh | 7 |
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; } |