Go to the documentation of this file.
40 #ifndef __MEM_COMM_MONITOR_HH__
41 #define __MEM_COMM_MONITOR_HH__
45 #include "params/CommMonitor.hh"
387 const CommMonitorParams &
params);
390 bool expects_response);
433 #endif //__MEM_COMM_MONITOR_HH__
This is a simple scalar statistic, like a counter.
The communication monitor is a SimObject which can monitor statistics of the communication happening ...
statistics::Histogram outstandingReadsHist
Histogram of outstanding read requests.
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
statistics::Histogram readTransHist
Histogram of number of read transactions per time bin.
bool recvTimingResp(PacketPtr pkt)
Tick recvAtomic(PacketPtr pkt)
A simple distribution stat.
CommMonitor(const Params ¶ms)
Constructor based on the Python params.
unsigned int outstandingReadReqs
void recvFunctionalSnoop(PacketPtr pkt)
Receive a functional snoop request packet from the peer.
statistics::Histogram writeBurstLengthHist
Histogram of write burst lengths.
void recvTimingSnoopReq(PacketPtr pkt)
bool tryTiming(PacketPtr pkt)
Availability request from the peer.
statistics::Histogram writeTransHist
Histogram of number of timing write transactions per time bin.
~CommMonitorSenderState()
Destructor.
statistics::Histogram readBandwidthHist
bool recvTimingReq(PacketPtr pkt)
Receive a timing request from the peer.
void recvReqRetry()
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
bool disableLatencyHists
Disable flag for latency histograms.
Tick recvAtomicSnoop(PacketPtr pkt)
MonitorStats stats
Instantiate stats.
AddrRangeList getAddrRanges() const
Get a list of the non-overlapping address ranges the owner is responsible for.
const Addr readAddrMask
Address mask for sources of read accesses to be captured.
bool isSnooping() const
Determine if this request port is snooping or not.
statistics::SparseHistogram readAddrDist
Histogram of number of read accesses to addresses over time.
Tick recvAtomic(PacketPtr pkt)
Receive an atomic request packet from the peer.
const Addr writeAddrMask
Address mask for sources of write accesses to be captured.
statistics::SparseHistogram writeAddrDist
Histogram of number of write accesses to addresses over time.
bool recvTimingSnoopResp(PacketPtr pkt)
Receive a timing snoop response from the peer.
AddrRangeList getAddrRanges() const
statistics::Scalar totalWrittenBytes
unsigned int readBytes
Histogram for read bandwidth per sample window.
void samplePeriodic()
This function is called periodically at the end of each time bin.
const PortID InvalidPortID
statistics::Histogram readLatencyHist
Histogram of read request-to-response latencies.
void recvRangeChange()
Called to receive an address range change from the peer response port.
void regProbePoints() override
Register probe points for this object.
Sender state class for the monitor so that we can annotate packets with a transmit time and receive t...
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
EventFunctionWrapper samplePeriodicEvent
Periodic event called at the end of each simulation time bin.
unsigned int writtenBytes
Histogram for write bandwidth per sample window.
statistics::Scalar totalReadBytes
probing::PacketUPtr ppPktReq
Successfully forwarded request packet.
bool recvTimingSnoopResp(PacketPtr pkt)
bool recvTimingReq(PacketPtr pkt)
const Params & params() const
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
statistics::Histogram readBurstLengthHist
Histogram of read burst lengths.
probing::PacketUPtr ppPktResp
Successfully forwarded response packet.
bool disableBandwidthHists
Disable flag for the bandwidth histograms.
uint64_t Tick
Tick count type.
This is the CPU-side port of the communication monitor.
statistics::Distribution ittReqReq
void startup() override
startup() is the final initialization call before simulation.
statistics::Histogram outstandingWritesHist
Histogram of outstanding write requests.
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
statistics::Distribution ittWriteWrite
Abstract superclass for simulation objects.
void recvFunctional(PacketPtr pkt)
A virtual base opaque structure used to hold state associated with the packet (e.g....
std::unique_ptr< Packet > PacketUPtr
statistics::Distribution ittReadRead
Inter transaction time (ITT) distributions.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
void recvTimingSnoopReq(PacketPtr pkt)
Receive a timing snoop request from the peer.
void recvFunctional(PacketPtr pkt)
Receive a functional request packet from the peer.
bool disableTransactionHists
Disable flag for transaction histograms.
bool disableBurstLengthHists
Disable flag for burst length histograms.
bool tryTiming(PacketPtr pkt)
A ResponsePort is a specialization of a port.
bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the peer.
CommMonitorParams Params
Parameters of communication monitor.
Ports are used to interface objects to each other.
MonitorRequestPort(const std::string &_name, CommMonitor &_mon)
void updateRespStats(const probing::PacketInfo &pkt, Tick latency, bool is_atomic)
This is the request port of the communication monitor.
Tick recvAtomicSnoop(PacketPtr pkt)
Receive an atomic snoop request packet from our peer.
bool disableOutstandingHists
Disable flag for outstanding histograms.
bool disableITTDists
Disable flag for ITT distributions.
Tick transmitTime
Tick when request is transmitted.
Stats declarations, all in a struct for convenience.
MonitorResponsePort cpuSidePort
Instance of response port, i.e.
statistics::Formula averageWriteBandwidth
CommMonitorSenderState(Tick _transmitTime)
Construct a new sender state and store the time so we can calculate round-trip latency.
const double samplePeriod
Sample period in seconds.
A struct to hold on to the essential fields from a packet, so that the packet and underlying request ...
void recvFunctionalSnoop(PacketPtr pkt)
statistics::Formula averageReadBandwidth
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
void recvRetrySnoopResp()
Called by the peer if sendTimingSnoopResp was called on this protocol (causing recvTimingSnoopResp to...
bool disableAddrDists
Disable flag for address distributions.
MonitorStats(statistics::Group *parent, const CommMonitorParams ¶ms)
Create the monitor stats and initialise all the members that are not statistics themselves,...
void recvRespRetry()
Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called...
void recvRetrySnoopResp()
statistics::Histogram writeBandwidthHist
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
const Tick samplePeriodTicks
Length of simulation time bin.
unsigned int outstandingWriteReqs
statistics::Histogram writeLatencyHist
Histogram of write request-to-response latencies.
MonitorResponsePort(const std::string &_name, CommMonitor &_mon)
void updateReqStats(const probing::PacketInfo &pkt, bool is_atomic, bool expects_response)
MonitorRequestPort memSidePort
Instance of request port, facing the memory side.
Generated on Sun Jul 30 2023 01:56:58 for gem5 by doxygen 1.8.17