diff options
Diffstat (limited to 'src/mem/protocol/MESI_Two_Level-L2cache.sm')
-rw-r--r-- | src/mem/protocol/MESI_Two_Level-L2cache.sm | 98 |
1 files changed, 49 insertions, 49 deletions
diff --git a/src/mem/protocol/MESI_Two_Level-L2cache.sm b/src/mem/protocol/MESI_Two_Level-L2cache.sm index 2b174bf76..5c240035a 100644 --- a/src/mem/protocol/MESI_Two_Level-L2cache.sm +++ b/src/mem/protocol/MESI_Two_Level-L2cache.sm @@ -265,9 +265,9 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") // ** OUT_PORTS ** - out_port(L1RequestIntraChipL2Network_out, RequestMsg, L1RequestFromL2Cache); - out_port(DirRequestIntraChipL2Network_out, RequestMsg, DirRequestFromL2Cache); - out_port(responseIntraChipL2Network_out, ResponseMsg, responseFromL2Cache); + out_port(L1RequestL2Network_out, RequestMsg, L1RequestFromL2Cache); + out_port(DirRequestL2Network_out, RequestMsg, DirRequestFromL2Cache); + out_port(responseL2Network_out, ResponseMsg, responseFromL2Cache); in_port(L1unblockNetwork_in, ResponseMsg, unblockToL2Cache, rank = 2) { @@ -291,10 +291,10 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } } - // Response IntraChip L2 Network - response msg to this particular L2 bank - in_port(responseIntraChipL2Network_in, ResponseMsg, responseToL2Cache, rank = 1) { - if (responseIntraChipL2Network_in.isReady()) { - peek(responseIntraChipL2Network_in, ResponseMsg) { + // Response L2 Network - response msg to this particular L2 bank + in_port(responseL2Network_in, ResponseMsg, responseToL2Cache, rank = 1) { + if (responseL2Network_in.isReady()) { + peek(responseL2Network_in, ResponseMsg) { // test wether it's from a local L1 or an off chip source assert(in_msg.Destination.isElement(machineID)); Entry cache_entry := getCacheEntry(in_msg.Addr); @@ -333,9 +333,9 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } // L1 Request - in_port(L1RequestIntraChipL2Network_in, RequestMsg, L1RequestToL2Cache, rank = 0) { - if(L1RequestIntraChipL2Network_in.isReady()) { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { + in_port(L1RequestL2Network_in, RequestMsg, L1RequestToL2Cache, rank = 0) { + if(L1RequestL2Network_in.isReady()) { + peek(L1RequestL2Network_in, RequestMsg) { Entry cache_entry := getCacheEntry(in_msg.Addr); TBE tbe := L2_TBEs[in_msg.Addr]; @@ -377,8 +377,8 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") // ACTIONS action(a_issueFetchToMemory, "a", desc="fetch data from memory") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { - enqueue(DirRequestIntraChipL2Network_out, RequestMsg, latency=l2_request_latency) { + peek(L1RequestL2Network_in, RequestMsg) { + enqueue(DirRequestL2Network_out, RequestMsg, latency=l2_request_latency) { out_msg.Addr := address; out_msg.Type := CoherenceRequestType:GETS; out_msg.Requestor := machineID; @@ -389,8 +389,8 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(b_forwardRequestToExclusive, "b", desc="Forward request to the exclusive L1") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { - enqueue(L1RequestIntraChipL2Network_out, RequestMsg, latency=to_l1_latency) { + peek(L1RequestL2Network_in, RequestMsg) { + enqueue(L1RequestL2Network_out, RequestMsg, latency=to_l1_latency) { assert(is_valid(cache_entry)); out_msg.Addr := address; out_msg.Type := in_msg.Type; @@ -402,7 +402,7 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(c_exclusiveReplacement, "c", desc="Send data to memory") { - enqueue(responseIntraChipL2Network_out, ResponseMsg, latency=l2_response_latency) { + enqueue(responseL2Network_out, ResponseMsg, latency=l2_response_latency) { assert(is_valid(cache_entry)); out_msg.Addr := address; out_msg.Type := CoherenceResponseType:MEMORY_DATA; @@ -415,7 +415,7 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(c_exclusiveCleanReplacement, "cc", desc="Send ack to memory for clean replacement") { - enqueue(responseIntraChipL2Network_out, ResponseMsg, latency=l2_response_latency) { + enqueue(responseL2Network_out, ResponseMsg, latency=l2_response_latency) { out_msg.Addr := address; out_msg.Type := CoherenceResponseType:ACK; out_msg.Sender := machineID; @@ -425,7 +425,7 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(ct_exclusiveReplacementFromTBE, "ct", desc="Send data to memory") { - enqueue(responseIntraChipL2Network_out, ResponseMsg, latency=l2_response_latency) { + enqueue(responseL2Network_out, ResponseMsg, latency=l2_response_latency) { assert(is_valid(tbe)); out_msg.Addr := address; out_msg.Type := CoherenceResponseType:MEMORY_DATA; @@ -438,8 +438,8 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(d_sendDataToRequestor, "d", desc="Send data from cache to reqeustor") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { - enqueue(responseIntraChipL2Network_out, ResponseMsg, latency=l2_response_latency) { + peek(L1RequestL2Network_in, RequestMsg) { + enqueue(responseL2Network_out, ResponseMsg, latency=l2_response_latency) { assert(is_valid(cache_entry)); out_msg.Addr := address; out_msg.Type := CoherenceResponseType:DATA; @@ -457,8 +457,8 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(dd_sendExclusiveDataToRequestor, "dd", desc="Send data from cache to reqeustor") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { - enqueue(responseIntraChipL2Network_out, ResponseMsg, latency=l2_response_latency) { + peek(L1RequestL2Network_in, RequestMsg) { + enqueue(responseL2Network_out, ResponseMsg, latency=l2_response_latency) { assert(is_valid(cache_entry)); out_msg.Addr := address; out_msg.Type := CoherenceResponseType:DATA_EXCLUSIVE; @@ -476,8 +476,8 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(ds_sendSharedDataToRequestor, "ds", desc="Send data from cache to reqeustor") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { - enqueue(responseIntraChipL2Network_out, ResponseMsg, latency=l2_response_latency) { + peek(L1RequestL2Network_in, RequestMsg) { + enqueue(responseL2Network_out, ResponseMsg, latency=l2_response_latency) { assert(is_valid(cache_entry)); out_msg.Addr := address; out_msg.Type := CoherenceResponseType:DATA; @@ -493,7 +493,7 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") action(e_sendDataToGetSRequestors, "e", desc="Send data from cache to all GetS IDs") { assert(is_valid(tbe)); assert(tbe.L1_GetS_IDs.count() > 0); - enqueue(responseIntraChipL2Network_out, ResponseMsg, latency=to_l1_latency) { + enqueue(responseL2Network_out, ResponseMsg, latency=to_l1_latency) { assert(is_valid(cache_entry)); out_msg.Addr := address; out_msg.Type := CoherenceResponseType:DATA; @@ -507,7 +507,7 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") action(ex_sendExclusiveDataToGetSRequestors, "ex", desc="Send data from cache to all GetS IDs") { assert(is_valid(tbe)); assert(tbe.L1_GetS_IDs.count() == 1); - enqueue(responseIntraChipL2Network_out, ResponseMsg, latency=to_l1_latency) { + enqueue(responseL2Network_out, ResponseMsg, latency=to_l1_latency) { assert(is_valid(cache_entry)); out_msg.Addr := address; out_msg.Type := CoherenceResponseType:DATA_EXCLUSIVE; @@ -519,7 +519,7 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(ee_sendDataToGetXRequestor, "ee", desc="Send data from cache to GetX ID") { - enqueue(responseIntraChipL2Network_out, ResponseMsg, latency=to_l1_latency) { + enqueue(responseL2Network_out, ResponseMsg, latency=to_l1_latency) { assert(is_valid(tbe)); assert(is_valid(cache_entry)); out_msg.Addr := address; @@ -535,7 +535,7 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(f_sendInvToSharers, "f", desc="invalidate sharers for L2 replacement") { - enqueue(L1RequestIntraChipL2Network_out, RequestMsg, latency=to_l1_latency) { + enqueue(L1RequestL2Network_out, RequestMsg, latency=to_l1_latency) { assert(is_valid(cache_entry)); out_msg.Addr := address; out_msg.Type := CoherenceRequestType:INV; @@ -546,8 +546,8 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(fw_sendFwdInvToSharers, "fw", desc="invalidate sharers for request") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { - enqueue(L1RequestIntraChipL2Network_out, RequestMsg, latency=to_l1_latency) { + peek(L1RequestL2Network_in, RequestMsg) { + enqueue(L1RequestL2Network_out, RequestMsg, latency=to_l1_latency) { assert(is_valid(cache_entry)); out_msg.Addr := address; out_msg.Type := CoherenceRequestType:INV; @@ -559,8 +559,8 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(fwm_sendFwdInvToSharersMinusRequestor, "fwm", desc="invalidate sharers for request, requestor is sharer") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { - enqueue(L1RequestIntraChipL2Network_out, RequestMsg, latency=to_l1_latency) { + peek(L1RequestL2Network_in, RequestMsg) { + enqueue(L1RequestL2Network_out, RequestMsg, latency=to_l1_latency) { assert(is_valid(cache_entry)); out_msg.Addr := address; out_msg.Type := CoherenceRequestType:INV; @@ -590,7 +590,7 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(jj_popL1RequestQueue, "\j", desc="Pop incoming L1 request queue") { - profileMsgDelay(0, L1RequestIntraChipL2Network_in.dequeue_getDelayCycles()); + profileMsgDelay(0, L1RequestL2Network_in.dequeue_getDelayCycles()); } action(k_popUnblockQueue, "k", desc="Pop incoming unblock queue") { @@ -598,11 +598,11 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(o_popIncomingResponseQueue, "o", desc="Pop Incoming Response queue") { - profileMsgDelay(1, responseIntraChipL2Network_in.dequeue_getDelayCycles()); + profileMsgDelay(1, responseL2Network_in.dequeue_getDelayCycles()); } action(m_writeDataToCache, "m", desc="Write data from response queue to cache") { - peek(responseIntraChipL2Network_in, ResponseMsg) { + peek(responseL2Network_in, ResponseMsg) { assert(is_valid(cache_entry)); cache_entry.DataBlk := in_msg.DataBlk; if (in_msg.Dirty) { @@ -612,7 +612,7 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(mr_writeDataToCacheFromRequest, "mr", desc="Write data from response queue to cache") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { + peek(L1RequestL2Network_in, RequestMsg) { assert(is_valid(cache_entry)); cache_entry.DataBlk := in_msg.DataBlk; if (in_msg.Dirty) { @@ -622,7 +622,7 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(q_updateAck, "q", desc="update pending ack count") { - peek(responseIntraChipL2Network_in, ResponseMsg) { + peek(responseL2Network_in, ResponseMsg) { assert(is_valid(tbe)); tbe.pendingAcks := tbe.pendingAcks - in_msg.AckCount; APPEND_TRANSITION_COMMENT(in_msg.AckCount); @@ -632,7 +632,7 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(qq_writeDataToTBE, "\qq", desc="Write data from response queue to TBE") { - peek(responseIntraChipL2Network_in, ResponseMsg) { + peek(responseL2Network_in, ResponseMsg) { assert(is_valid(tbe)); tbe.DataBlk := in_msg.DataBlk; tbe.Dirty := in_msg.Dirty; @@ -640,14 +640,14 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(ss_recordGetSL1ID, "\s", desc="Record L1 GetS for load response") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { + peek(L1RequestL2Network_in, RequestMsg) { assert(is_valid(tbe)); tbe.L1_GetS_IDs.add(in_msg.Requestor); } } action(xx_recordGetXL1ID, "\x", desc="Record L1 GetX for store response") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { + peek(L1RequestL2Network_in, RequestMsg) { assert(is_valid(tbe)); tbe.L1_GetX_ID := in_msg.Requestor; } @@ -669,8 +669,8 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(t_sendWBAck, "t", desc="Send writeback ACK") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { - enqueue(responseIntraChipL2Network_out, ResponseMsg, latency=to_l1_latency) { + peek(L1RequestL2Network_in, RequestMsg) { + enqueue(responseL2Network_out, ResponseMsg, latency=to_l1_latency) { out_msg.Addr := address; out_msg.Type := CoherenceResponseType:WB_ACK; out_msg.Sender := machineID; @@ -681,8 +681,8 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(ts_sendInvAckToUpgrader, "ts", desc="Send ACK to upgrader") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { - enqueue(responseIntraChipL2Network_out, ResponseMsg, latency=to_l1_latency) { + peek(L1RequestL2Network_in, RequestMsg) { + enqueue(responseL2Network_out, ResponseMsg, latency=to_l1_latency) { assert(is_valid(cache_entry)); out_msg.Addr := address; out_msg.Type := CoherenceResponseType:ACK; @@ -704,7 +704,7 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(nn_addSharer, "\n", desc="Add L1 sharer to list") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { + peek(L1RequestL2Network_in, RequestMsg) { assert(is_valid(cache_entry)); addSharer(address, in_msg.Requestor, cache_entry); APPEND_TRANSITION_COMMENT( cache_entry.Sharers ); @@ -719,21 +719,21 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(kk_removeRequestSharer, "\k", desc="Remove L1 Request sharer from list") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { + peek(L1RequestL2Network_in, RequestMsg) { assert(is_valid(cache_entry)); cache_entry.Sharers.remove(in_msg.Requestor); } } action(ll_clearSharers, "\l", desc="Remove all L1 sharers from list") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { + peek(L1RequestL2Network_in, RequestMsg) { assert(is_valid(cache_entry)); cache_entry.Sharers.clear(); } } action(mm_markExclusive, "\m", desc="set the exclusive owner") { - peek(L1RequestIntraChipL2Network_in, RequestMsg) { + peek(L1RequestL2Network_in, RequestMsg) { assert(is_valid(cache_entry)); cache_entry.Sharers.clear(); cache_entry.Exclusive := in_msg.Requestor; @@ -751,11 +751,11 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") } action(zz_stallAndWaitL1RequestQueue, "zz", desc="recycle L1 request queue") { - stall_and_wait(L1RequestIntraChipL2Network_in, address); + stall_and_wait(L1RequestL2Network_in, address); } action(zn_recycleResponseNetwork, "zn", desc="recycle memory request") { - responseIntraChipL2Network_in.recycle(); + responseL2Network_in.recycle(); } action(kd_wakeUpDependents, "kd", desc="wake-up dependents") { |