Go to the documentation of this file.
41 #ifndef __MEM_QOS_MEM_SINK_HH__
42 #define __MEM_QOS_MEM_SINK_HH__
47 #include "params/QoSMemSinkCtrl.hh"
49 struct QoSMemSinkInterfaceParams;
149 void init()
override;
AddrRangeList getAddrRanges() const
Gets the configured address ranges for this port.
RespPacketQueue queue
Outgoing packet responses queue.
MemSinkCtrlStats(Stats::Group *parent)
MemSinkCtrl(const QoSMemSinkCtrlParams &)
QoS Memory Sink Constructor.
void setMemCtrl(QoS::MemSinkCtrl *_ctrl)
Setting a pointer to the interface.
The QoS::MemCtrl is a base class for Memory objects which support QoS - it provides access to a set o...
QoSMemSinkInterface *const interface
Create pointer to interface of actual media.
const PortID InvalidPortID
EventWrapper< MemSinkCtrl, &MemSinkCtrl::processNextReqEvent > nextReqEvent
Event wrapper to schedule next request handler function.
void processNextReqEvent()
Processes the next Request event according to configured request latency.
std::vector< PacketQueue > readQueue
QoS-aware (per priority) incoming read requests packets queue.
MemoryPort(const std::string &, MemSinkCtrl &)
Constructor.
bool writeQueueFull(const uint64_t packets) const
Check if the write queue has room for more entries.
uint64_t Tick
Tick count type.
const uint64_t readBufferSize
Read request packets queue buffer size in #packets.
bool recvTimingReq(PacketPtr pkt)
Receive a Packet in Timing mode.
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
void recvFunctional(PacketPtr pkt)
Receive a Packet in Functional mode.
Stats::Scalar numReadRetries
Count the number of read retries.
void recvFunctional(PacketPtr pkt)
Receive a Packet in Functional mode.
DrainState
Object drain/handover states.
This is a simple scalar statistic, like a counter.
An abstract memory represents a contiguous block of physical memory, with an associated address range...
bool recvTimingReq(PacketPtr pkt)
Receive a Packet in Timing mode.
Tick recvAtomic(PacketPtr pkt)
Receive a Packet in Atomic mode.
Ports are used to interface objects to each other.
void init() override
Initializes this object.
Port & getPort(const std::string &if_name, PortID=InvalidPortID) override
Getter method to access this memory's response port.
A queued port is a port that has an infinite queue for outgoing packets and thus decouples the module...
DrainState drain() override
Checks and return the Drain state of this SimObject.
QoSMemSinkInterface(const QoSMemSinkInterfaceParams &_p)
const uint64_t writeBufferSize
Write request packets queue buffer size in #packets.
bool readQueueFull(const uint64_t packets) const
Check if the read queue has room for more entries.
std::vector< PacketQueue > writeQueue
QoS-aware (per priority) incoming read requests packets queue.
const uint64_t memoryPacketSize
Memory packet size in bytes.
Stats::Scalar numWriteRetries
Count the number of write retries.
bool retryRdReq
Read request pending.
MemoryPort port
Memory response port.
Tick recvAtomic(PacketPtr pkt)
Receive a Packet in Atomic mode.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Tick nextRequest
Next request service time.
QoS::MemSinkCtrl * ctrl
Pointer to the controller.
MemSinkCtrl & memory
reference to parent memory object
bool retryWrReq
Write request pending.
const Tick requestLatency
Memory between requests latency (ticks)
const Tick responseLatency
Memory response latency (ticks)
Generated on Tue Jun 22 2021 15:28:29 for gem5 by doxygen 1.8.17