Daniel Carvalho has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/14937

Change subject: mem-cache: Immediately forward uncacheable accesses to miss buffers
......................................................................

mem-cache: Immediately forward uncacheable accesses to miss buffers

As soon as an uncacheable access arrives, it should be forwarded to
its respective miss buffer, as only its generated evictions need to
wait for the tag lookup.

Change-Id: Ifbc59cc1a42c8607b5e0e843d9f5d9d608c40620
Signed-off-by: Daniel R. Carvalho <[email protected]>
---
M src/mem/cache/cache.cc
1 file changed, 7 insertions(+), 11 deletions(-)



diff --git a/src/mem/cache/cache.cc b/src/mem/cache/cache.cc
index 928a4b9..359ec90 100644
--- a/src/mem/cache/cache.cc
+++ b/src/mem/cache/cache.cc
@@ -182,8 +182,9 @@
         }

         blk = nullptr;
-        // lookupLatency is the latency in case the request is uncacheable.
-        lat = lookupLatency;
+        // An uncacheable request can be directed to the respective miss
+        // buffer as soon as the packet arrives.
+        lat = ticksToCycles(pkt->headerDelay);
         return false;
     }

@@ -329,24 +330,19 @@
                            Tick request_time)
 {
     if (pkt->req->isUncacheable()) {
-        // ignore any existing MSHR if we are dealing with an
-        // uncacheable request
-
         // should have flushed and have no valid block
         assert(!blk || !blk->isValid());

+        // Uncacheable accesses always allocate a new MSHR, so ignore any
+        // existing MSHR
         mshr_uncacheable[pkt->cmdToIndex()][pkt->req->masterId()]++;

+        // As soon as the packet arrives it is forwarded to its respective
+        // miss buffer.
         if (pkt->isWrite()) {
             allocateWriteBuffer(pkt, forward_time);
         } else {
             assert(pkt->isRead());
-
-            // uncacheable accesses always allocate a new MSHR
-
-            // Here we are using forward_time, modelling the latency of
-            // a miss (outbound) just as forwardLatency, neglecting the
-            // lookupLatency component.
             allocateMissBuffer(pkt, forward_time);
         }


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/14937
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ifbc59cc1a42c8607b5e0e843d9f5d9d608c40620
Gerrit-Change-Number: 14937
Gerrit-PatchSet: 1
Gerrit-Owner: Daniel Carvalho <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to