diff options
author | Marco Balboni <Marco.Balboni@ARM.com> | 2015-03-02 04:00:48 -0500 |
---|---|---|
committer | Marco Balboni <Marco.Balboni@ARM.com> | 2015-03-02 04:00:48 -0500 |
commit | d4ef8368aa1dfb5e1e1ebe155c0fce1070046f83 (patch) | |
tree | cedda2d21dbee8ba4ef40d828898d3430ea5df9b /src/mem/dram_ctrl.cc | |
parent | 36dc93a5fa09765b9d2bac402bb557d228effcad (diff) | |
download | gem5-d4ef8368aa1dfb5e1e1ebe155c0fce1070046f83.tar.xz |
mem: Downstream components consumes new crossbar delays
This patch makes the caches and memory controllers consume the delay
that is annotated to a packet by the crossbar. Previously many
components simply threw these delays away. Note that the devices still
do not pay for these delays.
Diffstat (limited to 'src/mem/dram_ctrl.cc')
-rw-r--r-- | src/mem/dram_ctrl.cc | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/mem/dram_ctrl.cc b/src/mem/dram_ctrl.cc index 8682cbbaf..23eba158d 100644 --- a/src/mem/dram_ctrl.cc +++ b/src/mem/dram_ctrl.cc @@ -877,13 +877,18 @@ DRAMCtrl::accessAndRespond(PacketPtr pkt, Tick static_latency) if (needsResponse) { // access already turned the packet into a response assert(pkt->isResponse()); - - // @todo someone should pay for this + // response_time consumes the static latency and is charged also + // with headerDelay that takes into account the delay provided by + // the xbar and also the payloadDelay that takes into account the + // number of data beats. + Tick response_time = curTick() + static_latency + pkt->headerDelay + + pkt->payloadDelay; + // Here we reset the timing of the packet before sending it out. pkt->headerDelay = pkt->payloadDelay = 0; // queue the packet in the response queue to be sent out after // the static latency has passed - port.schedTimingResp(pkt, curTick() + static_latency); + port.schedTimingResp(pkt, response_time); } else { // @todo the packet is going to be deleted, and the DRAMPacket // is still having a pointer to it |