From 268d9e59c5e69a00456a40c837b0150a8f3f6bf8 Mon Sep 17 00:00:00 2001 From: Marco Balboni Date: Wed, 11 Feb 2015 10:23:47 -0500 Subject: mem: Clarification of packet crossbar timings This patch clarifies the packet timings annotated when going through a crossbar. The old 'firstWordDelay' is replaced by 'headerDelay' that represents the delay associated to the delivery of the header of the packet. The old 'lastWordDelay' is replaced by 'payloadDelay' that represents the delay needed to processing the payload of the packet. For now the uses and values remain identical. However, going forward the payloadDelay will be additive, and not include the headerDelay. Follow-on patches will make the headerDelay capture the pipeline latency incurred in the crossbar, whereas the payloadDelay will capture the additional serialisation delay. --- src/mem/coherent_xbar.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/mem/coherent_xbar.cc') diff --git a/src/mem/coherent_xbar.cc b/src/mem/coherent_xbar.cc index 02580702b..454de69ce 100644 --- a/src/mem/coherent_xbar.cc +++ b/src/mem/coherent_xbar.cc @@ -168,7 +168,7 @@ CoherentXBar::recvTimingReq(PacketPtr pkt, PortID slave_port_id) unsigned int pkt_cmd = pkt->cmdToIndex(); calcPacketTiming(pkt); - Tick packetFinishTime = pkt->lastWordDelay + curTick(); + Tick packetFinishTime = curTick() + pkt->payloadDelay; // uncacheable requests need never be snooped if (!pkt->req->isUncacheable() && !system->bypassCaches()) { @@ -222,7 +222,7 @@ CoherentXBar::recvTimingReq(PacketPtr pkt, PortID slave_port_id) assert(!pkt->memInhibitAsserted()); // undo the calculation so we can check for 0 again - pkt->firstWordDelay = pkt->lastWordDelay = 0; + pkt->headerDelay = pkt->payloadDelay = 0; DPRINTF(CoherentXBar, "recvTimingReq: src %s %s 0x%x RETRY\n", src_port->name(), pkt->cmdString(), pkt->getAddr()); @@ -301,7 +301,7 @@ CoherentXBar::recvTimingResp(PacketPtr pkt, PortID master_port_id) unsigned int pkt_cmd = pkt->cmdToIndex(); calcPacketTiming(pkt); - Tick packetFinishTime = pkt->lastWordDelay + curTick(); + Tick packetFinishTime = curTick() + pkt->payloadDelay; if (snoopFilter && !pkt->req->isUncacheable() && !system->bypassCaches()) { // let the snoop filter inspect the response and update its state @@ -427,7 +427,7 @@ CoherentXBar::recvTimingSnoopResp(PacketPtr pkt, PortID slave_port_id) assert(!pkt->isExpressSnoop()); calcPacketTiming(pkt); - Tick packetFinishTime = pkt->lastWordDelay + curTick(); + Tick packetFinishTime = curTick() + pkt->payloadDelay; // forward it either as a snoop response or a normal response if (forwardAsSnoop) { @@ -608,8 +608,8 @@ CoherentXBar::recvAtomic(PacketPtr pkt, PortID slave_port_id) transDist[pkt_cmd]++; } - // @todo: Not setting first-word time - pkt->lastWordDelay = response_latency; + // @todo: Not setting header time + pkt->payloadDelay = response_latency; return response_latency; } @@ -648,8 +648,8 @@ CoherentXBar::recvAtomicSnoop(PacketPtr pkt, PortID master_port_id) snoops++; } - // @todo: Not setting first-word time - pkt->lastWordDelay = snoop_response_latency; + // @todo: Not setting header time + pkt->payloadDelay = snoop_response_latency; return snoop_response_latency; } -- cgit v1.2.3