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