summaryrefslogtreecommitdiff
path: root/src/mem/xbar.hh
diff options
context:
space:
mode:
authorMarco Balboni <Marco.Balboni@ARM.com>2015-03-02 04:00:46 -0500
committerMarco Balboni <Marco.Balboni@ARM.com>2015-03-02 04:00:46 -0500
commitd35dd71ab4ac44a79ac22dca82277a43cd59f3c6 (patch)
treeeb42b8079289e3cef8f265556944941dc012e66c /src/mem/xbar.hh
parent7be9d4eb673b9d9b45eabfd40a56718569a2a1be (diff)
downloadgem5-d35dd71ab4ac44a79ac22dca82277a43cd59f3c6.tar.xz
mem: Add crossbar latencies
This patch introduces latencies in crossbar that were neglected before. In particular, it adds three parameters in crossbar model: front_end_latency, forward_latency, and response_latency. Along with these parameters, three corresponding members are added: frontEndLatency, forwardLatency, and responseLatency. The coherent crossbar has an additional snoop_response_latency. The latency of the request path through the xbar is set as --> frontEndLatency + forwardLatency In case the snoop filter is enabled, the request path latency is charged also by look-up latency of the snoop filter. --> frontEndLatency + SF(lookupLatency) + forwardLatency. The latency of the response path through the xbar is set instead as --> responseLatency. In case of snoop response, if the response is treated as a normal response the latency associated is again --> responseLatency; If instead it is forwarded as snoop response we add an additional variable + snoopResponseLatency and the latency associated is --> snoopResponseLatency; Furthermore, this patch lets the crossbar progress on the next clock edge after an unused retry, changing the time the crossbar considers itself busy after sending a retry that was not acted upon.
Diffstat (limited to 'src/mem/xbar.hh')
-rw-r--r--src/mem/xbar.hh16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/mem/xbar.hh b/src/mem/xbar.hh
index f51b08da2..ed678d9d0 100644
--- a/src/mem/xbar.hh
+++ b/src/mem/xbar.hh
@@ -309,8 +309,15 @@ class BaseXBar : public MemObject
{ retry_port->sendRetrySnoopResp(); }
};
- /** cycles of overhead per transaction */
- const Cycles headerCycles;
+ /**
+ * Cycles of front-end pipeline including the delay to accept the request
+ * and to decode the address.
+ */
+ const Cycles frontendLatency;
+ /** Cycles of forward latency */
+ const Cycles forwardLatency;
+ /** Cycles of response latency */
+ const Cycles responseLatency;
/** the width of the xbar in bytes */
const uint32_t width;
@@ -404,8 +411,11 @@ class BaseXBar : public MemObject
* headerDelay and payloadDelay fields of the packet
* object with the relative number of ticks required to transmit
* the header and the payload, respectively.
+ *
+ * @param pkt Packet to populate with timings
+ * @param header_delay Header delay to be added
*/
- void calcPacketTiming(PacketPtr pkt);
+ void calcPacketTiming(PacketPtr pkt, Tick header_delay);
/**
* Remember for each of the master ports of the crossbar if we got