mem-cache, stats: Stats update for snoop filter
Change-Id: I339bbc4268d5b9501421a2a6a76e5267422c87aa Signed-off-by: Maryam Babaie <mbabaie@ucdavis.edu> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/36355 Reviewed-by: Bobby R. Bruce <bbruce@ucdavis.edu> Maintainer: Bobby R. Bruce <bbruce@ucdavis.edu> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
@@ -97,12 +97,12 @@ SnoopFilter::lookupRequest(const Packet* cpkt, const ResponsePort&
|
||||
// updateRequest.
|
||||
reqLookupResult.retryItem = sf_item;
|
||||
|
||||
totRequests++;
|
||||
stats.totRequests++;
|
||||
if (is_hit) {
|
||||
if (interested.count() == 1)
|
||||
hitSingleRequests++;
|
||||
stats.hitSingleRequests++;
|
||||
else
|
||||
hitMultiRequests++;
|
||||
stats.hitMultiRequests++;
|
||||
}
|
||||
|
||||
DPRINTF(SnoopFilter, "%s: SF value %x.%x\n",
|
||||
@@ -207,12 +207,12 @@ SnoopFilter::lookupSnoop(const Packet* cpkt)
|
||||
|
||||
SnoopMask interested = (sf_item.holder | sf_item.requested);
|
||||
|
||||
totSnoops++;
|
||||
stats.totSnoops++;
|
||||
|
||||
if (interested.count() == 1)
|
||||
hitSingleSnoops++;
|
||||
stats.hitSingleSnoops++;
|
||||
else
|
||||
hitMultiSnoops++;
|
||||
stats.hitMultiSnoops++;
|
||||
|
||||
// ReadEx and Writes require both invalidation and exlusivity, while reads
|
||||
// require neither. Writebacks on the other hand require exclusivity but
|
||||
@@ -387,36 +387,26 @@ SnoopFilter::updateResponse(const Packet* cpkt, const ResponsePort&
|
||||
__func__, sf_item.requested, sf_item.holder);
|
||||
}
|
||||
|
||||
SnoopFilter::SnoopFilterStats::SnoopFilterStats(Stats::Group *parent):
|
||||
Stats::Group(parent),
|
||||
ADD_STAT(totRequests,"Total number of requests made to the snoop filter."),
|
||||
ADD_STAT(hitSingleRequests,
|
||||
"Number of requests hitting in the snoop filter with a single "\
|
||||
"holder of the requested data."),
|
||||
ADD_STAT(hitMultiRequests,
|
||||
"Number of requests hitting in the snoop filter with multiple "\
|
||||
"(>1) holders of the requested data."),
|
||||
ADD_STAT(totSnoops,"Total number of snoops made to the snoop filter."),
|
||||
ADD_STAT(hitSingleSnoops,
|
||||
"Number of snoops hitting in the snoop filter with a single "\
|
||||
"holder of the requested data."),
|
||||
ADD_STAT(hitMultiSnoops,
|
||||
"Number of snoops hitting in the snoop filter with multiple "\
|
||||
"(>1) holders of the requested data.")
|
||||
{}
|
||||
|
||||
void
|
||||
SnoopFilter::regStats()
|
||||
{
|
||||
SimObject::regStats();
|
||||
|
||||
totRequests
|
||||
.name(name() + ".tot_requests")
|
||||
.desc("Total number of requests made to the snoop filter.");
|
||||
|
||||
hitSingleRequests
|
||||
.name(name() + ".hit_single_requests")
|
||||
.desc("Number of requests hitting in the snoop filter with a single "\
|
||||
"holder of the requested data.");
|
||||
|
||||
hitMultiRequests
|
||||
.name(name() + ".hit_multi_requests")
|
||||
.desc("Number of requests hitting in the snoop filter with multiple "\
|
||||
"(>1) holders of the requested data.");
|
||||
|
||||
totSnoops
|
||||
.name(name() + ".tot_snoops")
|
||||
.desc("Total number of snoops made to the snoop filter.");
|
||||
|
||||
hitSingleSnoops
|
||||
.name(name() + ".hit_single_snoops")
|
||||
.desc("Number of snoops hitting in the snoop filter with a single "\
|
||||
"holder of the requested data.");
|
||||
|
||||
hitMultiSnoops
|
||||
.name(name() + ".hit_multi_snoops")
|
||||
.desc("Number of snoops hitting in the snoop filter with multiple "\
|
||||
"(>1) holders of the requested data.");
|
||||
}
|
||||
|
||||
@@ -94,7 +94,8 @@ class SnoopFilter : public SimObject {
|
||||
SnoopFilter (const SnoopFilterParams &p) :
|
||||
SimObject(p), reqLookupResult(cachedLocations.end()),
|
||||
linesize(p.system->cacheLineSize()), lookupLatency(p.lookup_latency),
|
||||
maxEntryCount(p.max_capacity / p.system->cacheLineSize())
|
||||
maxEntryCount(p.max_capacity / p.system->cacheLineSize()),
|
||||
stats(this)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -310,13 +311,17 @@ class SnoopFilter : public SimObject {
|
||||
};
|
||||
|
||||
/** Statistics */
|
||||
Stats::Scalar totRequests;
|
||||
Stats::Scalar hitSingleRequests;
|
||||
Stats::Scalar hitMultiRequests;
|
||||
struct SnoopFilterStats : public Stats::Group {
|
||||
SnoopFilterStats(Stats::Group *parent);
|
||||
|
||||
Stats::Scalar totSnoops;
|
||||
Stats::Scalar hitSingleSnoops;
|
||||
Stats::Scalar hitMultiSnoops;
|
||||
Stats::Scalar totRequests;
|
||||
Stats::Scalar hitSingleRequests;
|
||||
Stats::Scalar hitMultiRequests;
|
||||
|
||||
Stats::Scalar totSnoops;
|
||||
Stats::Scalar hitSingleSnoops;
|
||||
Stats::Scalar hitMultiSnoops;
|
||||
} stats;
|
||||
};
|
||||
|
||||
inline SnoopFilter::SnoopMask
|
||||
|
||||
Reference in New Issue
Block a user