changeset 519fba665871 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=519fba665871
description:
        MOESI_hammer: fixed dma bug with shared data

diffstat:

 src/mem/protocol/MOESI_hammer-cache.sm |  35 +++++++++++++++++++++++++++++----
 src/mem/protocol/MOESI_hammer-dir.sm   |   4 +-
 2 files changed, 32 insertions(+), 7 deletions(-)

diffs (90 lines):

diff -r d2cf4b19e8ad -r 519fba665871 src/mem/protocol/MOESI_hammer-cache.sm
--- a/src/mem/protocol/MOESI_hammer-cache.sm    Sat Mar 19 14:17:48 2011 -0700
+++ b/src/mem/protocol/MOESI_hammer-cache.sm    Sat Mar 19 14:17:48 2011 -0700
@@ -560,7 +560,7 @@
     }
   }
 
-  action(ee_sendDataShared, "\e", desc="Send data from cache to requestor, 
keep a shared copy") {
+  action(ee_sendDataShared, "\e", desc="Send data from cache to requestor, 
remaining the owner") {
     peek(forwardToCache_in, RequestMsg) {
       enqueue(responseNetwork_out, ResponseMsg, 
latency=cache_response_latency) {
         assert(is_valid(cache_entry));
@@ -584,7 +584,7 @@
     }
   }
   
-  action(em_sendDataSharedMultiple, "em", desc="Send data from cache to all 
requestors") {
+  action(em_sendDataSharedMultiple, "em", desc="Send data from cache to all 
requestors, still the owner") {
     peek(forwardToCache_in, RequestMsg) {
       enqueue(responseNetwork_out, ResponseMsg, 
latency=cache_response_latency) {
         assert(is_valid(cache_entry));
@@ -874,12 +874,37 @@
     }
   }
 
-  action(qm_sendDataFromTBEToCache, "qm", desc="Send data from TBE to cache, 
multiple sharers") {
+  action(sq_sendSharedDataFromTBEToCache, "sq", desc="Send shared data from 
TBE to cache, still the owner") {
+    peek(forwardToCache_in, RequestMsg) {
+        assert(in_msg.Requestor != machineID);
+      enqueue(responseNetwork_out, ResponseMsg, 
latency=cache_response_latency) {
+        assert(is_valid(tbe));
+        out_msg.Address := address;
+        out_msg.Type := CoherenceResponseType:DATA_SHARED;
+        out_msg.Sender := machineID;
+        out_msg.Destination.add(in_msg.Requestor);
+        DPRINTF(RubySlicc, "%s\n", out_msg.Destination);
+        out_msg.DataBlk := tbe.DataBlk;
+        out_msg.Dirty := tbe.Dirty;
+        if (in_msg.DirectedProbe) {
+          out_msg.Acks := machineCount(MachineType:L1Cache);
+        } else {
+          out_msg.Acks := 2;
+        }
+        out_msg.SilentAcks := in_msg.SilentAcks;
+        out_msg.MessageSize := MessageSizeType:Response_Data;
+        out_msg.InitialRequestTime := in_msg.InitialRequestTime;
+        out_msg.ForwardRequestTime := in_msg.ForwardRequestTime;
+      }
+    }
+  }
+
+  action(qm_sendDataFromTBEToCache, "qm", desc="Send data from TBE to cache, 
multiple sharers, still the owner") {
     peek(forwardToCache_in, RequestMsg) {
       enqueue(responseNetwork_out, ResponseMsg, 
latency=cache_response_latency) {
         assert(is_valid(tbe));
         out_msg.Address := address;
-        out_msg.Type := CoherenceResponseType:DATA;
+        out_msg.Type := CoherenceResponseType:DATA_SHARED;
         out_msg.Sender := machineID;
         out_msg.Destination := in_msg.MergedRequestors;
         DPRINTF(RubySlicc, "%s\n", out_msg.Destination);
@@ -1599,7 +1624,7 @@
   }
 
   transition({OI, MI}, {NC_DMA_GETS, Other_GETS, Other_GETS_No_Mig}, OI) {
-    q_sendDataFromTBEToCache;
+    sq_sendSharedDataFromTBEToCache;
     l_popForwardQueue;
   }
 
diff -r d2cf4b19e8ad -r 519fba665871 src/mem/protocol/MOESI_hammer-dir.sm
--- a/src/mem/protocol/MOESI_hammer-dir.sm      Sat Mar 19 14:17:48 2011 -0700
+++ b/src/mem/protocol/MOESI_hammer-dir.sm      Sat Mar 19 14:17:48 2011 -0700
@@ -1500,14 +1500,14 @@
 
   transition(O_DR_B, Shared_Ack) {
     m_decrementNumberOfMessages;
-    so_setOwnerBit;
+    r_setSharerBit;
     o_checkForCompletion;
     n_popResponseQueue;
   }
 
   transition(O_DR_B_W, Shared_Ack) {
     m_decrementNumberOfMessages;
-    so_setOwnerBit;
+    r_setSharerBit;
     n_popResponseQueue;
   }
 
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to