++L1Icache.demand_misses;
}
+ action(l10h_profileHit, "l10h", desc="l10h hit profile") {
+ ++L1D0cache.demand_misses;
+ }
+
+ action(l11h_profileHit, "l11h", desc="l11h hit profile") {
+ ++L1D1cache.demand_misses;
+ }
+
+ action(l1ih_profileHit, "l1lh", desc="l1ih hit profile") {
+ ++L1Icache.demand_misses;
+ }
+
+ action(l2h_profileHit, "l2h", desc="l2h hit profile") {
+ ++L2cache.demand_misses;
+ }
+
action(yy_recycleProbeQueue, "yy", desc="recycle probe queue") {
probeNetwork_in.recycle(clockEdge(), cyclesToTicks(recycle_latency));
}
transition(S, C0_Load_L1miss, S_F0) {L1D0TagArrayRead, L2TagArrayRead, L2DataArrayRead} {
l10m_profileMiss;
+ l2h_profileHit;
a0_allocateL1D;
f0_L2ToL1;
mru_setMRU;
transition(S, C1_Load_L1miss, S_F1) {L1D1TagArrayRead,L2TagArrayRead, L2DataArrayRead} {
l11m_profileMiss;
+ l2h_profileHit;
a1_allocateL1D;
f1_L2ToL1;
mru_setMRU;
transition(S, Ifetch0_L1miss, Si_F0) {L1ITagArrayRead, L2TagArrayRead, L2DataArrayRead} {
l1im_profileMiss;
+ l2h_profileHit;
ai_allocateL1I;
fi_L2ToL1;
mru_setMRU;
transition(S, Ifetch1_L1miss, Si_F1) {L1ITagArrayRead,L2TagArrayRead, L2DataArrayRead} {
l1im_profileMiss;
+ l2h_profileHit;
ai_allocateL1I;
fi_L2ToL1;
mru_setMRU;
transition(Es, C0_Load_L1miss, Es_F0) {L1D0TagArrayRead, L2TagArrayRead, L2DataArrayRead} { // can this be folded with S_F?
a0_allocateL1D;
+ l2h_profileHit;
l10m_profileMiss;
f0_L2ToL1;
mru_setMRU;
transition(Es, C1_Load_L1miss, Es_F1) {L1D1TagArrayRead, L2TagArrayRead, L2DataArrayRead} { // can this be folded with S_F?
l11m_profileMiss;
+ l2h_profileHit;
a1_allocateL1D;
f1_L2ToL1;
mru_setMRU;
// THES SHOULD NOT BE INSTANTANEOUS BUT OH WELL FOR NOW
transition(Es, {C0_Store_L1hit, C0_Store_L1miss}, M0) {L1D0TagArrayRead, L1D0TagArrayWrite, L1D0DataArrayWrite, L2TagArrayRead, L2TagArrayWrite, L2DataArrayWrite} {
+ l2h_profileHit;
+ l10h_profileHit; //Probably shouldnt be considered a hit, but its instantaneous so...
a0_allocateL1D;
i1_invCluster;
s0_storeDone; // instantaneous L1/L2 dirty - no writethrough delay
}
transition(Es, {C1_Store_L1hit, C1_Store_L1miss}, M1) {L1D1TagArrayRead, L1D1TagArrayWrite, L1D1DataArrayWrite, L2TagArrayRead, L2TagArrayWrite, L2DataArrayWrite} {
+ l2h_profileHit;
+ l11h_profileHit; //Probably shouldnt be considered a hit, but its instantaneous so...
a1_allocateL1D;
i0_invCluster;
s1_storeDone;
transition(E0, C0_Load_L1miss, E0_F) {L1D0TagArrayRead,L2TagArrayRead, L2DataArrayRead} {
l10m_profileMiss;
+ l2h_profileHit;
a0_allocateL1D;
f0_L2ToL1;
mru_setMRU;
transition(E0, C1_Load_L1miss, E0_Es) {L1D1TagArrayRead, L2TagArrayRead, L2DataArrayRead} {
l11m_profileMiss;
+ l2h_profileHit;
a1_allocateL1D;
f1_L2ToL1;
mru_setMRU;
}
transition(E0, {C0_Store_L1hit, C0_Store_L1miss}, M0) {L1D0TagArrayRead, L1D0DataArrayWrite, L1D0TagArrayWrite, L2TagArrayRead, L2DataArrayWrite, L2TagArrayWrite} {
+ l2h_profileHit;
+ l10h_profileHit; //Probably shouldnt be considered a hit, but its instantaneous so...maybe its ok bc its the same controller?
a0_allocateL1D;
s0_storeDone;
mruD0_setD0cacheMRU;
}
transition(E0, C1_Store_L1miss, M1) {L1D1TagArrayRead, L1D1TagArrayWrite, L1D1TagArrayWrite, L2TagArrayRead, L2TagArrayWrite, L2DataArrayWrite} {
+ l2h_profileHit;
l11m_profileMiss;
a1_allocateL1D;
i0_invCluster;
}
transition(E1, C1_Load_L1miss, E1_F) {L1D1TagArrayRead, L2TagArrayRead, L2DataArrayRead} {
- l11m_profileMiss;
+ l2h_profileHit;
+ l11m_profileMiss;
a1_allocateL1D;
f1_L2ToL1;
mru_setMRU;
}
transition(E1, C0_Load_L1miss, E1_Es) {L1D0TagArrayRead, L2TagArrayRead, L2DataArrayRead} {
- l11m_profileMiss;
+ l10m_profileMiss;
+ l2h_profileHit;
a0_allocateL1D;
f0_L2ToL1;
mru_setMRU;
}
transition(E1, {C1_Store_L1hit, C1_Store_L1miss}, M1) {L1D1TagArrayRead, L2TagArrayRead, L2DataArrayWrite, L1D1TagArrayWrite, L2TagArrayWrite} {
+ l2h_profileHit;
+ l11h_profileHit; //Probably shouldnt be considered a hit, but its instantaneous so...maybe its ok bc its the same controller?
a1_allocateL1D;
s1_storeDone;
mruD1_setD1cacheMRU;
}
transition(E1, C0_Store_L1miss, M0) {L1D0TagArrayRead, L2TagArrayRead, L2TagArrayWrite, L1D0TagArrayWrite, L1D0DataArrayWrite, L2DataArrayWrite} {
- l10m_profileMiss;
+ l2h_profileHit;
+ l10m_profileMiss;
a0_allocateL1D;
i1_invCluster;
s0_storeDone;
transition(O, C0_Load_L1miss, O_F0) {L2TagArrayRead, L2DataArrayRead, L1D0TagArrayRead} {
l10m_profileMiss;
+ l2h_profileHit;
a0_allocateL1D;
f0_L2ToL1;
mru_setMRU;
transition(O, C1_Load_L1miss, O_F1) {L2TagArrayRead, L2DataArrayRead, L1D1TagArrayRead} {
l11m_profileMiss;
+ l2h_profileHit;
a1_allocateL1D;
f1_L2ToL1;
mru_setMRU;
transition(Ms, C0_Load_L1miss, Ms_F0) {L2TagArrayRead, L2DataArrayRead, L1D0TagArrayRead} {
l10m_profileMiss;
+ l2h_profileHit;
a0_allocateL1D;
f0_L2ToL1;
mru_setMRU;
transition(Ms, C1_Load_L1miss, Ms_F1) {L2TagArrayRead, L2DataArrayRead, L1D1TagArrayRead} {
l11m_profileMiss;
+ l2h_profileHit;
a1_allocateL1D;
f1_L2ToL1;
mru_setMRU;
}
transition(Ms, {C0_Store_L1hit, C0_Store_L1miss}, M0) {L1D0TagArrayRead, L1D0TagArrayWrite, L1D0DataArrayWrite, L2TagArrayRead, L2DataArrayWrite, L2TagArrayWrite} {
+ l2h_profileHit;
+ l10h_profileHit; //Probably shouldnt be considered a hit, but its instantaneous so...maybe its ok bc its the same controller?
a0_allocateL1D;
i1_invCluster;
s0_storeDone;
}
transition(Ms, {C1_Store_L1hit, C1_Store_L1miss}, M1) {L1D1TagArrayRead, L1D1TagArrayWrite, L1D1DataArrayWrite, L2TagArrayRead, L2DataArrayWrite, L2TagArrayWrite} {
+ l2h_profileHit;
+ l11h_profileHit; //Probably shouldnt be considered a hit, but its instantaneous so...maybe its ok bc its the same controller?
a1_allocateL1D;
i0_invCluster;
s1_storeDone;
}
transition(M0, C0_Load_L1miss, M0_F) {L1D0TagArrayRead, L2TagArrayRead, L2DataArrayRead} {
- l10m_profileMiss;
+ l10m_profileMiss;
+ l2h_profileHit;
a0_allocateL1D;
f0_L2ToL1;
mru_setMRU;
p_popMandatoryQueue;
}
- transition(M0, C1_Load_L1miss, M0_Ms) {L2TagArrayRead, L2DataArrayRead,L1D0TagArrayRead} {
+ transition(M0, C1_Load_L1miss, M0_Ms) {L2TagArrayRead, L2DataArrayRead,L1D1TagArrayRead} {
l11m_profileMiss;
+ l2h_profileHit;
a1_allocateL1D;
f1_L2ToL1;
mru_setMRU;
}
transition(M0, {C0_Store_L1hit, C0_Store_L1miss}) {L1D0TagArrayRead,L1D0DataArrayWrite, L2DataArrayWrite, L2TagArrayRead} {
+ l2h_profileHit;
+ l10h_profileHit; //Probably shouldnt be considered a hit, but its instantaneous so...maybe its ok bc its the same controller?
a0_allocateL1D;
s0_storeDone;
mruD0_setD0cacheMRU;
}
transition(M0, {C1_Store_L1hit, C1_Store_L1miss}, M1) {L1D1TagArrayRead, L1D1TagArrayWrite, L1D0DataArrayWrite, L2DataArrayWrite, L2TagArrayRead, L2TagArrayWrite} {
+ l2h_profileHit;
+ l11h_profileHit; //Probably shouldnt be considered a hit, but its instantaneous so...maybe its ok bc its the same controller?
a1_allocateL1D;
i0_invCluster;
s1_storeDone;
transition(M1, C0_Load_L1miss, M1_Ms) {L2TagArrayRead, L2DataArrayRead, L1D0TagArrayRead} {
l10m_profileMiss;
+ l2h_profileHit;
a0_allocateL1D;
f0_L2ToL1;
mru_setMRU;
p_popMandatoryQueue;
}
- transition(M1, C1_Load_L1miss, M1_F) {L1D1TagArrayRead,L2TagArrayRead, L2DataArrayRead} {
+ transition(M1, C1_Load_L1miss, M1_F) {L1D1TagArrayRead, L2TagArrayRead, L2DataArrayRead} {
+ l11m_profileMiss;
+ l2h_profileHit;
a1_allocateL1D;
f1_L2ToL1;
mru_setMRU;
}
transition(M1, {C0_Store_L1hit, C0_Store_L1miss}, M0) {L1D0TagArrayRead, L1D0TagArrayWrite, L1D0DataArrayWrite, L2TagArrayRead, L2DataArrayWrite, L2TagArrayWrite} {
+ l2h_profileHit;
+ l10h_profileHit; //Probably shouldnt be considered a hit, but its instantaneous so...maybe its ok bc its the same controller?
a0_allocateL1D;
i1_invCluster;
s0_storeDone;
}
transition(M1, {C1_Store_L1hit, C1_Store_L1miss}) {L1D1TagArrayRead, L2TagArrayRead, L2DataArrayWrite} {
+ l2h_profileHit;
+ l11h_profileHit; //Probably shouldnt be considered a hit, but its instantaneous so...maybe its ok bc its the same controller?
a1_allocateL1D;
s1_storeDone;
mruD1_setD1cacheMRU;
transition({S, Es, E0, O, Ms, M0, O_F1, S_F1, Si_F0, Si_F1, Es_F1, E0_Es,
Ms_F1, M0_Ms}, C0_Load_L1hit) {L1D0TagArrayRead, L1D0DataArrayRead} {
// track hits, if implemented
+ l10h_profileHit;
l0_loadDone;
mruD0_setD0cacheMRU;
p_popMandatoryQueue;
transition({S, Es, E1, O, Ms, M1, O_F0, S_F0, Si_F0, Si_F1, Es_F0, E1_Es,
Ms_F0, M1_Ms}, C1_Load_L1hit) {L1D1TagArrayRead, L1D1DataArrayRead} {
// track hits, if implemented
+ l11h_profileHit;
l1_loadDone;
mruD1_setD1cacheMRU;
p_popMandatoryQueue;
transition({S, S_C, S_F0, S_F1, S_F}, Ifetch0_L1hit) {L1ITagArrayRead, L1IDataArrayRead} {
// track hits, if implemented
+ l1ih_profileHit;
il0_loadDone;
mruI_setIcacheMRU;
p_popMandatoryQueue;
transition({S, S_C, S_F0, S_F1, S_F}, Ifetch1_L1hit) {L1ITagArrayRead, L1IDataArrayWrite} {
// track hits, if implemented
+ l1ih_profileHit;
il1_loadDone;
mruI_setIcacheMRU;
p_popMandatoryQueue;
transition({E0_Es, E1_F, Es_F1}, C0_Load_L1miss, Es_F) {L2DataArrayRead} {
l10m_profileMiss;
+ l2h_profileHit;
a0_allocateL1D;
f0_L2ToL1;
p_popMandatoryQueue;
transition(S_F1, C0_Load_L1miss, S_F) {L2DataArrayRead} {
l10m_profileMiss;
+ l2h_profileHit;
a0_allocateL1D;
f0_L2ToL1;
p_popMandatoryQueue;
transition(O_F1, C0_Load_L1miss, O_F) {L2DataArrayRead} {
l10m_profileMiss;
+ l2h_profileHit;
a0_allocateL1D;
f0_L2ToL1;
p_popMandatoryQueue;
transition({Ms_F1, M0_Ms, M1_F}, C0_Load_L1miss, Ms_F) {L2DataArrayRead} {
l10m_profileMiss;
+ l2h_profileHit;
a0_allocateL1D;
f0_L2ToL1;
p_popMandatoryQueue;
transition({E1_Es, E0_F, Es_F0}, C1_Load_L1miss, Es_F) {L2DataArrayRead} {
l11m_profileMiss;
+ l2h_profileHit;
a1_allocateL1D;
f1_L2ToL1;
p_popMandatoryQueue;
transition(S_F0, C1_Load_L1miss, S_F) {L2DataArrayRead} {
l11m_profileMiss;
+ l2h_profileHit;
a1_allocateL1D;
f1_L2ToL1;
p_popMandatoryQueue;
transition(O_F0, C1_Load_L1miss, O_F) {L2DataArrayRead} {
l11m_profileMiss;
+ l2h_profileHit;
a1_allocateL1D;
f1_L2ToL1;
p_popMandatoryQueue;
transition({Ms_F0, M1_Ms, M0_F}, C1_Load_L1miss, Ms_F) { L2DataArrayRead} {
l11m_profileMiss;
+ l2h_profileHit;
a1_allocateL1D;
f1_L2ToL1;
p_popMandatoryQueue;