summaryrefslogtreecommitdiff
path: root/src/mem/protocol/MOESI_hammer-cache.sm
diff options
context:
space:
mode:
authorBrad Beckmann <Brad.Beckmann@amd.com>2012-04-06 13:47:07 -0700
committerBrad Beckmann <Brad.Beckmann@amd.com>2012-04-06 13:47:07 -0700
commit5838ed7290461a253587d854226758b84afbb54d (patch)
tree1d7abb0905e17d2efdaa15f87a200bb8e6918b82 /src/mem/protocol/MOESI_hammer-cache.sm
parentf12961bf25f3280576e3ee2e5039eabf92e8204b (diff)
downloadgem5-5838ed7290461a253587d854226758b84afbb54d.tar.xz
MOESI_hammer: tbe allocation and dependent wakeup fixes
Diffstat (limited to 'src/mem/protocol/MOESI_hammer-cache.sm')
-rw-r--r--src/mem/protocol/MOESI_hammer-cache.sm29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/mem/protocol/MOESI_hammer-cache.sm b/src/mem/protocol/MOESI_hammer-cache.sm
index 219096d26..1fe353ce5 100644
--- a/src/mem/protocol/MOESI_hammer-cache.sm
+++ b/src/mem/protocol/MOESI_hammer-cache.sm
@@ -1481,6 +1481,7 @@ machine(L1Cache, "AMD Hammer-like protocol")
transition(SR, {Load, Ifetch}, S) {
h_load_hit;
k_popMandatoryQueue;
+ ka_wakeUpAllDependents;
}
transition({S, SR}, Store, SM) {
@@ -1525,6 +1526,7 @@ machine(L1Cache, "AMD Hammer-like protocol")
transition(OR, {Load, Ifetch}, O) {
h_load_hit;
k_popMandatoryQueue;
+ ka_wakeUpAllDependents;
}
transition({O, OR}, Store, OM) {
@@ -1569,14 +1571,26 @@ machine(L1Cache, "AMD Hammer-like protocol")
}
// Transitions from Modified
- transition({MM, MMR}, {Load, Ifetch}, MM) {
+ transition({MM, M}, {Load, Ifetch}) {
+ h_load_hit;
+ k_popMandatoryQueue;
+ }
+
+ transition(MM, Store) {
+ hh_store_hit;
+ k_popMandatoryQueue;
+ }
+
+ transition(MMR, {Load, Ifetch}, MM) {
h_load_hit;
k_popMandatoryQueue;
+ ka_wakeUpAllDependents;
}
- transition({MM, MMR}, Store, MM) {
+ transition(MMR, Store, MM) {
hh_store_hit;
k_popMandatoryQueue;
+ ka_wakeUpAllDependents;
}
transition({MM, M, MMR, MR}, Flush_line, MM_F) {
@@ -1630,14 +1644,21 @@ machine(L1Cache, "AMD Hammer-like protocol")
}
// Transitions from Dirty Exclusive
- transition({M, MR}, {Load, Ifetch}, M) {
+ transition(M, Store, MM) {
+ hh_store_hit;
+ k_popMandatoryQueue;
+ }
+
+ transition(MR, {Load, Ifetch}, M) {
h_load_hit;
k_popMandatoryQueue;
+ ka_wakeUpAllDependents;
}
- transition({M, MR}, Store, MM) {
+ transition(MR, Store, MM) {
hh_store_hit;
k_popMandatoryQueue;
+ ka_wakeUpAllDependents;
}
transition(M, L2_Replacement, MI) {