diff options
Diffstat (limited to 'src/mem/coherent_xbar.cc')
-rw-r--r-- | src/mem/coherent_xbar.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/mem/coherent_xbar.cc b/src/mem/coherent_xbar.cc index f33a33b0f..c0d8ab037 100644 --- a/src/mem/coherent_xbar.cc +++ b/src/mem/coherent_xbar.cc @@ -317,8 +317,10 @@ CoherentXBar::recvTimingReq(PacketPtr pkt, PortID slave_port_id) pktSize[slave_port_id][master_port_id] += pkt_size; transDist[pkt_cmd]++; - if (is_express_snoop) + if (is_express_snoop) { snoops++; + snoopTraffic += pkt_size; + } } if (sink_packet) @@ -415,8 +417,10 @@ CoherentXBar::recvTimingSnoopReq(PacketPtr pkt, PortID master_port_id) pkt->getAddr()); // update stats here as we know the forwarding will succeed + unsigned int pkt_size = pkt->hasData() ? pkt->getSize() : 0; transDist[pkt->cmdToIndex()]++; snoops++; + snoopTraffic += pkt_size; // we should only see express snoops from caches assert(pkt->isExpressSnoop()); @@ -588,6 +592,7 @@ CoherentXBar::recvTimingSnoopResp(PacketPtr pkt, PortID slave_port_id) // stats updates transDist[pkt_cmd]++; snoops++; + snoopTraffic += pkt_size; return true; } @@ -739,7 +744,9 @@ CoherentXBar::recvAtomicSnoop(PacketPtr pkt, PortID master_port_id) pkt->cmdString()); // add the request snoop data + unsigned int pkt_size = pkt->hasData() ? pkt->getSize() : 0; snoops++; + snoopTraffic += pkt_size; // forward to all snoopers std::pair<MemCmd, Tick> snoop_result; @@ -965,6 +972,11 @@ CoherentXBar::regStats() .desc("Total snoops (count)") ; + snoopTraffic + .name(name() + ".snoopTraffic") + .desc("Total snoop traffic (bytes)") + ; + snoopFanout .init(0, snoopPorts.size(), 1) .name(name() + ".snoop_fanout") |