summaryrefslogtreecommitdiff
path: root/src/mem
diff options
context:
space:
mode:
authorDavid Hashe <david.hashe@amd.com>2015-07-20 09:15:18 -0500
committerDavid Hashe <david.hashe@amd.com>2015-07-20 09:15:18 -0500
commit3444d5f359bdef91ecebb33c6c241c8e6c673dc0 (patch)
treef569d29856c8da00df25a1d3467328901eaa594f /src/mem
parent8f71e667b3d1e9e9eea49ea7e6420a36017f4441 (diff)
downloadgem5-3444d5f359bdef91ecebb33c6c241c8e6c673dc0.tar.xz
mem: Hit callback delay fix
This patch was created by Bihn Pham during his internship at AMD. There is no need to delay hit callback response messages by a cycle because the response latency is already incurred in the Ruby protocol. This ensures correct timing of memory instructions.
Diffstat (limited to 'src/mem')
-rw-r--r--src/mem/ruby/system/RubyPort.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/mem/ruby/system/RubyPort.cc b/src/mem/ruby/system/RubyPort.cc
index 2974d07a4..83be9337a 100644
--- a/src/mem/ruby/system/RubyPort.cc
+++ b/src/mem/ruby/system/RubyPort.cc
@@ -469,8 +469,10 @@ RubyPort::MemSlavePort::hitCallback(PacketPtr pkt)
// turn packet around to go back to requester if response expected
if (needsResponse) {
DPRINTF(RubyPort, "Sending packet back over port\n");
- // send next cycle
- schedTimingResp(pkt, curTick() + rs->clockPeriod());
+ // Send a response in the same cycle. There is no need to delay the
+ // response because the response latency is already incurred in the
+ // Ruby protocol.
+ schedTimingResp(pkt, curTick());
} else {
delete pkt;
}