diff options
author | Pouya Fotouhi <Pouya.Fotouhi@amd.com> | 2019-08-07 20:01:20 -0500 |
---|---|---|
committer | Pouya Fotouhi <pfotouhi@ucdavis.edu> | 2019-08-13 00:51:54 +0000 |
commit | 4651f361935415c3785520ec213698483ab24975 (patch) | |
tree | 0061d406bf1c133a0d1dc3861a0f7da6fd0288d2 /src | |
parent | 1942b21713e49975d67c0d4145e2b1020e2d15ba (diff) | |
download | gem5-4651f361935415c3785520ec213698483ab24975.tar.xz |
mem-ruby: Use check_on_cache_probe on MOESI
This change uses check_on_cache_probe statement to check if the cacheline
subject to eviction is locked in MOESI.
Change-Id: Ie650ccdc15bb41b4088e534975b662408aaccf24
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19890
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/mem/protocol/MOESI_AMD_Base-CorePair.sm | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mem/protocol/MOESI_AMD_Base-CorePair.sm b/src/mem/protocol/MOESI_AMD_Base-CorePair.sm index e1504dea8..140bbc400 100644 --- a/src/mem/protocol/MOESI_AMD_Base-CorePair.sm +++ b/src/mem/protocol/MOESI_AMD_Base-CorePair.sm @@ -543,7 +543,9 @@ machine(MachineType:CorePair, "CP-like Core Coherence") tbe); } } else { + // Check if the line we want to evict is not locked Addr victim := L1Icache.cacheProbe(in_msg.LineAddress); + check_on_cache_probe(mandatoryQueue_in, victim); trigger(Event:L1I_Repl, victim, getCacheEntry(victim), TBEs.lookup(victim)); } @@ -582,7 +584,9 @@ machine(MachineType:CorePair, "CP-like Core Coherence") cache_entry, tbe); } } else { + // Check if the line we want to evict is not locked Addr victim := L1D1cache.cacheProbe(in_msg.LineAddress); + check_on_cache_probe(mandatoryQueue_in, victim); trigger(Event:L1D1_Repl, victim, getCacheEntry(victim), TBEs.lookup(victim)); } @@ -618,7 +622,9 @@ machine(MachineType:CorePair, "CP-like Core Coherence") cache_entry, tbe); } } else { + // Check if the line we want to evict is not locked Addr victim := L1D0cache.cacheProbe(in_msg.LineAddress); + check_on_cache_probe(mandatoryQueue_in, victim); trigger(Event:L1D0_Repl, victim, getCacheEntry(victim), TBEs.lookup(victim)); } |