changeset 09ea1346e89e in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=09ea1346e89e
description:
        ruby: moesi cmp directory: separate actions for external hits
        This patch adds separate actions for requests that missed in the local 
cache
        and messages were sent out to get the requested line. These separate 
actions
        are required for differentiating between the hit and miss latencies in 
the
        statistics collected.

diffstat:

 src/mem/protocol/MOESI_CMP_directory-L1cache.sm |  19 ++++++++++++++++---
 1 files changed, 16 insertions(+), 3 deletions(-)

diffs (57 lines):

diff -r f9bf34ba4172 -r 09ea1346e89e 
src/mem/protocol/MOESI_CMP_directory-L1cache.sm
--- a/src/mem/protocol/MOESI_CMP_directory-L1cache.sm   Tue Jun 25 00:32:03 
2013 -0500
+++ b/src/mem/protocol/MOESI_CMP_directory-L1cache.sm   Tue Jun 25 00:32:04 
2013 -0500
@@ -629,6 +629,12 @@
     sequencer.readCallback(address, cache_entry.DataBlk);
   }
 
+  action(hx_load_hit, "hx", desc="Notify sequencer the load completed.") {
+    assert(is_valid(cache_entry));
+    DPRINTF(RubySlicc, "%s\n", cache_entry.DataBlk);
+    sequencer.readCallback(address, cache_entry.DataBlk, true);
+  }
+
   action(hh_store_hit, "\h", desc="Notify sequencer that store completed.") {
     assert(is_valid(cache_entry));
     DPRINTF(RubySlicc, "%s\n", cache_entry.DataBlk);
@@ -636,6 +642,13 @@
     cache_entry.Dirty := true;
   }
 
+  action(xx_store_hit, "\xx", desc="Notify sequencer that store completed.") {
+    assert(is_valid(cache_entry));
+    DPRINTF(RubySlicc, "%s\n", cache_entry.DataBlk);
+    sequencer.writeCallback(address, cache_entry.DataBlk, true);
+    cache_entry.Dirty := true;
+  }
+
   action(i_allocateTBE, "i", desc="Allocate TBE") {
     check_allocate(TBEs);
     TBEs.allocate(address);
@@ -1162,7 +1175,7 @@
   }
 
   transition(OM, All_acks, MM_W) {
-    hh_store_hit;
+    xx_store_hit;
     gg_sendUnblockExclusive;
     s_deallocateTBE;
     o_scheduleUseTimeout;
@@ -1183,7 +1196,7 @@
   transition(IS, Data, S) {
     u_writeDataToCache;
     m_decrementNumberOfMessages;
-    h_load_hit;
+    hx_load_hit;
     g_sendUnblock;
     s_deallocateTBE;
     n_popResponseQueue;
@@ -1192,7 +1205,7 @@
   transition(IS, Exclusive_Data, M_W) {
     u_writeDataToCache;
     m_decrementNumberOfMessages;
-    h_load_hit;
+    hx_load_hit;
     gg_sendUnblockExclusive;
     o_scheduleUseTimeout;
     s_deallocateTBE;
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to