summaryrefslogtreecommitdiff
path: root/src/mem/protocol/MOESI_CMP_token-L1cache.sm
diff options
context:
space:
mode:
authorNilay Vaish <nilay@cs.wisc.edu>2014-04-08 13:26:30 -0500
committerNilay Vaish <nilay@cs.wisc.edu>2014-04-08 13:26:30 -0500
commitd805e42b81de580342a615ea99491401943a14d4 (patch)
tree07eb196006be4e010a0b5d9dbe2bd4d8de46b76e /src/mem/protocol/MOESI_CMP_token-L1cache.sm
parente689c00b16d40f52210cd185f668a351435c7af9 (diff)
downloadgem5-d805e42b81de580342a615ea99491401943a14d4.tar.xz
ruby: slicc: change enqueue statement
As of now, the enqueue statement can take in any number of 'pairs' as argument. But we only use the pair in which latency is the key. This latency is allowed to be either a fixed integer or a member variable of controller in which the expression appears. This patch drops the use of pairs in an enqueue statement. Instead, an expression is allowed which will be interpreted to be the latency of the enqueue. This expression can anything allowed by slicc including a constant integer or a member variable.
Diffstat (limited to 'src/mem/protocol/MOESI_CMP_token-L1cache.sm')
-rw-r--r--src/mem/protocol/MOESI_CMP_token-L1cache.sm46
1 files changed, 23 insertions, 23 deletions
diff --git a/src/mem/protocol/MOESI_CMP_token-L1cache.sm b/src/mem/protocol/MOESI_CMP_token-L1cache.sm
index 463ecf65f..7400ba12e 100644
--- a/src/mem/protocol/MOESI_CMP_token-L1cache.sm
+++ b/src/mem/protocol/MOESI_CMP_token-L1cache.sm
@@ -733,7 +733,7 @@ machine(L1Cache, "Token protocol")
if (tbe.IssueCount >= retry_threshold) {
// Issue a persistent request if possible
if (okToIssueStarving(address, machineID) && (starving == false)) {
- enqueue(persistentNetwork_out, PersistentMsg, latency = l1_request_latency) {
+ enqueue(persistentNetwork_out, PersistentMsg, l1_request_latency) {
out_msg.Addr := address;
out_msg.Type := PersistentRequestType:GETS_PERSISTENT;
out_msg.Requestor := machineID;
@@ -785,7 +785,7 @@ machine(L1Cache, "Token protocol")
}
} else {
// Make a normal request
- enqueue(requestNetwork_out, RequestMsg, latency = l1_request_latency) {
+ enqueue(requestNetwork_out, RequestMsg, l1_request_latency) {
out_msg.Addr := address;
out_msg.Type := CoherenceRequestType:GETS;
out_msg.Requestor := machineID;
@@ -804,7 +804,7 @@ machine(L1Cache, "Token protocol")
}
// send to other local L1s, with local bit set
- enqueue(requestNetwork_out, RequestMsg, latency = l1_request_latency) {
+ enqueue(requestNetwork_out, RequestMsg, l1_request_latency) {
out_msg.Addr := address;
out_msg.Type := CoherenceRequestType:GETS;
out_msg.Requestor := machineID;
@@ -852,7 +852,7 @@ machine(L1Cache, "Token protocol")
if (tbe.IssueCount >= retry_threshold) {
// Issue a persistent request if possible
if ( okToIssueStarving(address, machineID) && (starving == false)) {
- enqueue(persistentNetwork_out, PersistentMsg, latency = l1_request_latency) {
+ enqueue(persistentNetwork_out, PersistentMsg, l1_request_latency) {
out_msg.Addr := address;
out_msg.Type := PersistentRequestType:GETX_PERSISTENT;
out_msg.Requestor := machineID;
@@ -904,7 +904,7 @@ machine(L1Cache, "Token protocol")
} else {
// Make a normal request
- enqueue(requestNetwork_out, RequestMsg, latency = l1_request_latency) {
+ enqueue(requestNetwork_out, RequestMsg, l1_request_latency) {
out_msg.Addr := address;
out_msg.Type := CoherenceRequestType:GETX;
out_msg.Requestor := machineID;
@@ -925,7 +925,7 @@ machine(L1Cache, "Token protocol")
}
// send to other local L1s too
- enqueue(requestNetwork_out, RequestMsg, latency = l1_request_latency) {
+ enqueue(requestNetwork_out, RequestMsg, l1_request_latency) {
out_msg.Addr := address;
out_msg.Type := CoherenceRequestType:GETX;
out_msg.Requestor := machineID;
@@ -966,7 +966,7 @@ machine(L1Cache, "Token protocol")
action(bb_bounceResponse, "\b", desc="Bounce tokens and data to memory") {
peek(responseNetwork_in, ResponseMsg) {
// FIXME, should use a 3rd vnet
- enqueue(responseNetwork_out, ResponseMsg, latency="1") {
+ enqueue(responseNetwork_out, ResponseMsg, 1) {
out_msg.Addr := address;
out_msg.Type := in_msg.Type;
out_msg.Sender := machineID;
@@ -981,7 +981,7 @@ machine(L1Cache, "Token protocol")
action(c_ownedReplacement, "c", desc="Issue writeback") {
assert(is_valid(cache_entry));
- enqueue(responseNetwork_out, ResponseMsg, latency = l1_response_latency) {
+ enqueue(responseNetwork_out, ResponseMsg, l1_response_latency) {
out_msg.Addr := address;
out_msg.Sender := machineID;
@@ -1005,7 +1005,7 @@ machine(L1Cache, "Token protocol")
// don't send writeback if replacing block with no tokens
assert(is_valid(cache_entry));
assert (cache_entry.Tokens > 0);
- enqueue(responseNetwork_out, ResponseMsg, latency = l1_response_latency) {
+ enqueue(responseNetwork_out, ResponseMsg, l1_response_latency) {
out_msg.Addr := address;
out_msg.Sender := machineID;
@@ -1027,7 +1027,7 @@ machine(L1Cache, "Token protocol")
action(tr_tokenReplacement, "tr", desc="Issue token writeback") {
assert(is_valid(cache_entry));
if (cache_entry.Tokens > 0) {
- enqueue(responseNetwork_out, ResponseMsg, latency = l1_response_latency) {
+ enqueue(responseNetwork_out, ResponseMsg, l1_response_latency) {
out_msg.Addr := address;
out_msg.Sender := machineID;
@@ -1052,7 +1052,7 @@ machine(L1Cache, "Token protocol")
action(d_sendDataWithToken, "d", desc="Send data and a token from cache to requestor") {
assert(is_valid(cache_entry));
peek(requestNetwork_in, RequestMsg) {
- enqueue(responseNetwork_out, ResponseMsg, latency = l1_response_latency) {
+ enqueue(responseNetwork_out, ResponseMsg, l1_response_latency) {
out_msg.Addr := address;
out_msg.Type := CoherenceResponseType:DATA_SHARED;
out_msg.Sender := machineID;
@@ -1076,7 +1076,7 @@ machine(L1Cache, "Token protocol")
assert(is_valid(cache_entry));
peek(requestNetwork_in, RequestMsg) {
if (cache_entry.Tokens > (N_tokens + (max_tokens() / 2))) {
- enqueue(responseNetwork_out, ResponseMsg, latency = l1_response_latency) {
+ enqueue(responseNetwork_out, ResponseMsg, l1_response_latency) {
out_msg.Addr := address;
out_msg.Type := CoherenceResponseType:DATA_SHARED;
out_msg.Sender := machineID;
@@ -1094,7 +1094,7 @@ machine(L1Cache, "Token protocol")
cache_entry.Tokens := cache_entry.Tokens - N_tokens;
}
else if (cache_entry.Tokens > 1) {
- enqueue(responseNetwork_out, ResponseMsg, latency = l1_response_latency) {
+ enqueue(responseNetwork_out, ResponseMsg, l1_response_latency) {
out_msg.Addr := address;
out_msg.Type := CoherenceResponseType:DATA_SHARED;
out_msg.Sender := machineID;
@@ -1118,7 +1118,7 @@ machine(L1Cache, "Token protocol")
action(dd_sendDataWithAllTokens, "\d", desc="Send data and all tokens from cache to requestor") {
peek(requestNetwork_in, RequestMsg) {
assert(is_valid(cache_entry));
- enqueue(responseNetwork_out, ResponseMsg, latency = l1_response_latency) {
+ enqueue(responseNetwork_out, ResponseMsg, l1_response_latency) {
out_msg.Addr := address;
out_msg.Type := CoherenceResponseType:DATA_OWNER;
out_msg.Sender := machineID;
@@ -1141,7 +1141,7 @@ machine(L1Cache, "Token protocol")
// assert(persistentTable.findSmallest(address) != id); // Make sure we never bounce tokens to ourself
assert(is_valid(cache_entry));
if (cache_entry.Tokens > 0) {
- enqueue(responseNetwork_out, ResponseMsg, latency = l1_response_latency) {
+ enqueue(responseNetwork_out, ResponseMsg, l1_response_latency) {
out_msg.Addr := address;
if (cache_entry.Tokens > (max_tokens() / 2)) {
out_msg.Type := CoherenceResponseType:DATA_OWNER;
@@ -1163,7 +1163,7 @@ machine(L1Cache, "Token protocol")
//assert(persistentTable.findSmallest(address) != id); // Make sure we never bounce tokens to ourself
assert(is_valid(cache_entry));
assert(cache_entry.Tokens > 0);
- enqueue(responseNetwork_out, ResponseMsg, latency = l1_response_latency) {
+ enqueue(responseNetwork_out, ResponseMsg, l1_response_latency) {
out_msg.Addr := address;
out_msg.Type := CoherenceResponseType:DATA_OWNER;
out_msg.Sender := machineID;
@@ -1182,7 +1182,7 @@ machine(L1Cache, "Token protocol")
assert(is_valid(cache_entry));
assert(cache_entry.Tokens > 0);
if (cache_entry.Tokens > 1) {
- enqueue(responseNetwork_out, ResponseMsg, latency = l1_response_latency) {
+ enqueue(responseNetwork_out, ResponseMsg, l1_response_latency) {
out_msg.Addr := address;
if (cache_entry.Tokens > (max_tokens() / 2)) {
out_msg.Type := CoherenceResponseType:DATA_OWNER;
@@ -1212,7 +1212,7 @@ machine(L1Cache, "Token protocol")
//assert(persistentTable.findSmallest(address) != id); // Make sure we never bounce tokens to ourself
assert(is_valid(cache_entry));
assert(cache_entry.Tokens > ((max_tokens() / 2) + 1));
- enqueue(responseNetwork_out, ResponseMsg, latency = l1_response_latency) {
+ enqueue(responseNetwork_out, ResponseMsg, l1_response_latency) {
out_msg.Addr := address;
out_msg.Type := CoherenceResponseType:DATA_OWNER;
out_msg.Sender := machineID;
@@ -1237,7 +1237,7 @@ machine(L1Cache, "Token protocol")
action(fo_sendDataWithOwnerToken, "fo", desc="Send data and owner tokens") {
assert(is_valid(cache_entry));
assert(cache_entry.Tokens == ((max_tokens() / 2) + 1));
- enqueue(responseNetwork_out, ResponseMsg, latency = l1_response_latency) {
+ enqueue(responseNetwork_out, ResponseMsg, l1_response_latency) {
out_msg.Addr := address;
out_msg.Type := CoherenceResponseType:DATA_OWNER;
out_msg.Sender := machineID;
@@ -1257,7 +1257,7 @@ machine(L1Cache, "Token protocol")
peek(responseNetwork_in, ResponseMsg) {
// assert(persistentTable.findSmallest(address) != id); // Make sure we never bounce tokens to ourself
// FIXME, should use a 3rd vnet in some cases
- enqueue(responseNetwork_out, ResponseMsg, latency="1") {
+ enqueue(responseNetwork_out, ResponseMsg, 1) {
out_msg.Addr := address;
out_msg.Type := in_msg.Type;
out_msg.Sender := machineID;
@@ -1369,7 +1369,7 @@ machine(L1Cache, "Token protocol")
}
action(p_informL2AboutTokenLoss, "p", desc="Inform L2 about loss of all tokens") {
- enqueue(responseNetwork_out, ResponseMsg, latency = l1_response_latency) {
+ enqueue(responseNetwork_out, ResponseMsg, l1_response_latency) {
out_msg.Addr := address;
out_msg.Type := CoherenceResponseType:INV;
out_msg.Tokens := 0;
@@ -1403,7 +1403,7 @@ machine(L1Cache, "Token protocol")
if (tbe.WentPersistent) {
// assert(starving == true);
outstandingRequests := outstandingRequests - 1;
- enqueue(persistentNetwork_out, PersistentMsg, latency = l1_request_latency) {
+ enqueue(persistentNetwork_out, PersistentMsg, l1_request_latency) {
out_msg.Addr := address;
out_msg.Type := PersistentRequestType:DEACTIVATE_PERSISTENT;
out_msg.Requestor := machineID;
@@ -1450,7 +1450,7 @@ machine(L1Cache, "Token protocol")
assert(is_valid(cache_entry));
if (cache_entry.Tokens > 0) {
peek(requestNetwork_in, RequestMsg) {
- enqueue(responseNetwork_out, ResponseMsg, latency = l1_response_latency) {
+ enqueue(responseNetwork_out, ResponseMsg, l1_response_latency) {
out_msg.Addr := address;
if (cache_entry.Tokens > (max_tokens() / 2)) {
out_msg.Type := CoherenceResponseType:DATA_OWNER;