changeset 53d4f7e452d6 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=53d4f7e452d6
description:
mem: Avoid unnecessary snoops on writebacks and clean evictions
This patch optimises the handling of writebacks and clean evictions
when using a snoop filter. Instead of snooping into the caches to
determine if the block is cached or not, simply set the status based
on the snoop-filter result.
diffstat:
src/mem/coherent_xbar.cc | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)
diffs (23 lines):
diff -r 6f8b2a005abb -r 53d4f7e452d6 src/mem/coherent_xbar.cc
--- a/src/mem/coherent_xbar.cc Fri Nov 06 03:26:38 2015 -0500
+++ b/src/mem/coherent_xbar.cc Fri Nov 06 03:26:40 2015 -0500
@@ -198,7 +198,18 @@
" SF size: %i lat: %i\n", src_port->name(),
pkt->cmdString(), pkt->getAddr(), sf_res.first.size(),
sf_res.second);
- forwardTiming(pkt, slave_port_id, sf_res.first);
+
+ if (pkt->evictingBlock()) {
+ // for block-evicting packets, i.e. writebacks and
+ // clean evictions, there is no need to snoop up, as
+ // all we do is determine if the block is cached or
+ // not, instead just set it here based on the snoop
+ // filter result
+ if (!sf_res.first.empty())
+ pkt->setBlockCached();
+ } else {
+ forwardTiming(pkt, slave_port_id, sf_res.first);
+ }
} else {
forwardTiming(pkt, slave_port_id);
}
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev