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