From a2286fe344f0fd6484f232329a56e9f07e2136de Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Mon, 23 Sep 2019 18:18:28 +0100 Subject: mem: Use new-style stats in the XBar models Migrate to new-world stats with an explicit hierarchy in all of the XBar models. Change-Id: I18b6746a1303ca415638e6d382fb4757607f1123 Signed-off-by: Andreas Sandberg Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/21141 Tested-by: kokoro Reviewed-by: Daniel Carvalho Reviewed-by: Nikos Nikoleris Maintainer: Nikos Nikoleris --- src/mem/coherent_xbar.cc | 41 ++++++++++++----------------------------- 1 file changed, 12 insertions(+), 29 deletions(-) (limited to 'src/mem/coherent_xbar.cc') diff --git a/src/mem/coherent_xbar.cc b/src/mem/coherent_xbar.cc index a339500a8..713c6421b 100644 --- a/src/mem/coherent_xbar.cc +++ b/src/mem/coherent_xbar.cc @@ -62,7 +62,11 @@ CoherentXBar::CoherentXBar(const CoherentXBarParams *p) maxOutstandingSnoopCheck(p->max_outstanding_snoops), maxRoutingTableSizeCheck(p->max_routing_table_size), pointOfCoherency(p->point_of_coherency), - pointOfUnification(p->point_of_unification) + pointOfUnification(p->point_of_unification), + + snoops(this, "snoops", "Total snoops (count)"), + snoopTraffic(this, "snoopTraffic", "Total snoop traffic (bytes)"), + snoopFanout(this, "snoop_fanout", "Request fanout histogram") { // create the ports based on the size of the master and slave // vector ports, and the presence of the default port, the ports @@ -72,9 +76,9 @@ CoherentXBar::CoherentXBar(const CoherentXBarParams *p) MasterPort* bp = new CoherentXBarMasterPort(portName, *this, i); masterPorts.push_back(bp); reqLayers.push_back(new ReqLayer(*bp, *this, - csprintf(".reqLayer%d", i))); + csprintf("reqLayer%d", i))); snoopLayers.push_back( - new SnoopRespLayer(*bp, *this, csprintf(".snoopLayer%d", i))); + new SnoopRespLayer(*bp, *this, csprintf("snoopLayer%d", i))); } // see if we have a default slave device connected and if so add @@ -85,10 +89,10 @@ CoherentXBar::CoherentXBar(const CoherentXBarParams *p) MasterPort* bp = new CoherentXBarMasterPort(portName, *this, defaultPortID); masterPorts.push_back(bp); - reqLayers.push_back(new ReqLayer(*bp, *this, csprintf(".reqLayer%d", + reqLayers.push_back(new ReqLayer(*bp, *this, csprintf("reqLayer%d", defaultPortID))); snoopLayers.push_back(new SnoopRespLayer(*bp, *this, - csprintf(".snoopLayer%d", + csprintf("snoopLayer%d", defaultPortID))); } @@ -98,7 +102,7 @@ CoherentXBar::CoherentXBar(const CoherentXBarParams *p) QueuedSlavePort* bp = new CoherentXBarSlavePort(portName, *this, i); slavePorts.push_back(bp); respLayers.push_back(new RespLayer(*bp, *this, - csprintf(".respLayer%d", i))); + csprintf("respLayer%d", i))); snoopRespPorts.push_back(new SnoopRespPort(*bp, *this)); } } @@ -1104,30 +1108,9 @@ CoherentXBar::forwardPacket(const PacketPtr pkt) void CoherentXBar::regStats() { - // register the stats of the base class and our layers BaseXBar::regStats(); - for (auto l: reqLayers) - l->regStats(); - for (auto l: respLayers) - l->regStats(); - for (auto l: snoopLayers) - l->regStats(); - - snoops - .name(name() + ".snoops") - .desc("Total snoops (count)") - ; - - snoopTraffic - .name(name() + ".snoopTraffic") - .desc("Total snoop traffic (bytes)") - ; - - snoopFanout - .init(0, snoopPorts.size(), 1) - .name(name() + ".snoop_fanout") - .desc("Request fanout histogram") - ; + + snoopFanout.init(0, snoopPorts.size(), 1); } CoherentXBar * -- cgit v1.2.3