#include "base/hashmap.hh"
#include "mem/packet.hh"
#include "mem/port.hh"
+#include "mem/qport.hh"
#include "params/SnoopFilter.hh"
#include "sim/sim_object.hh"
#include "sim/system.hh"
*/
class SnoopFilter : public SimObject {
public:
- typedef std::vector<SlavePort*> SnoopList;
+ typedef std::vector<QueuedSlavePort*> SnoopList;
SnoopFilter (const SnoopFilterParams *p) : SimObject(p),
linesize(p->system->cacheLineSize()), lookupLatency(p->lookup_latency)
*
* @param bus_slave_ports Vector of slave ports that the bus is attached to.
*/
- void setSlavePorts(const std::vector<SlavePort*>& bus_slave_ports) {
+ void setSlavePorts(const SnoopList& bus_slave_ports) {
slavePorts = bus_slave_ports;
}
return std::make_pair(empty , latency);
}
+ virtual void regStats();
+
protected:
typedef uint64_t SnoopMask;
/**
const unsigned linesize;
/** Latency for doing a lookup in the filter */
const Cycles lookupLatency;
+
+ /** Statistics */
+ Stats::Scalar totRequests;
+ Stats::Scalar hitSingleRequests;
+ Stats::Scalar hitMultiRequests;
+
+ Stats::Scalar totSnoops;
+ Stats::Scalar hitSingleSnoops;
+ Stats::Scalar hitMultiSnoops;
};
inline SnoopFilter::SnoopMask