Go to the documentation of this file.
46 #ifndef __MEM_SIMPLE_MEMORY_HH__
47 #define __MEM_SIMPLE_MEMORY_HH__
53 #include "params/SimpleMemory.hh"
182 void init()
override;
192 #endif //__MEM_SIMPLE_MEMORY_HH__
std::list< DeferredPacket > packetQueue
Internal (unbounded) storage to mimic the delay caused by the actual memory access.
A ResponsePort is a specialization of a port.
EventFunctionWrapper dequeueEvent
Tick recvAtomic(PacketPtr pkt) override
Receive an atomic request packet from the peer.
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
void release()
Release the memory after being busy and send a retry if a request was rejected in the meanwhile.
Tick getLatency() const
Detemine the latency.
Tick recvAtomic(PacketPtr pkt)
const PortID InvalidPortID
void recvFunctional(PacketPtr pkt)
The simple memory is a basic single-ported memory controller with a configurable throughput and laten...
uint64_t Tick
Tick count type.
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
bool recvTimingReq(PacketPtr pkt) override
Receive a timing request from the peer.
bool recvTimingReq(PacketPtr pkt)
DrainState drain() override
Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are pa...
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
bool retryResp
Remember if we failed to send a response and are awaiting a retry.
DrainState
Object drain/handover states.
Tick recvAtomicBackdoor(PacketPtr pkt, MemBackdoorPtr &_backdoor)
An abstract memory represents a contiguous block of physical memory, with an associated address range...
void recvRespRetry() override
Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called...
EventFunctionWrapper releaseEvent
void dequeue()
Dequeue a packet from our internal packet queue and move it to the port where it will be sent as soon...
DeferredPacket(PacketPtr _pkt, Tick _tick)
SimpleMemory(const SimpleMemoryParams *p)
bool retryReq
Remember if we have to retry an outstanding request that arrived while we were busy.
Ports are used to interface objects to each other.
A deferred packet stores a packet along with its scheduled transmission time.
bool isBusy
Track the state of the memory as either idle or busy, no need for an enum with only two states.
AddrRangeList getAddrRanges() const override
Get a list of the non-overlapping address ranges the owner is responsible for.
const double bandwidth
Bandwidth in ticks per byte.
std::unique_ptr< Packet > pendingDelete
Upstream caches need this packet until true is returned, so hold it for deletion until a subsequent c...
Tick recvAtomicBackdoor(PacketPtr pkt, MemBackdoorPtr &_backdoor) override
Default implementations.
void recvFunctional(PacketPtr pkt) override
Receive a functional request packet from the peer.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
const Tick latency_var
Fudge factor added to the latency.
const Tick latency
Latency from that a request is accepted until the response is ready to be sent.
MemoryPort(const std::string &_name, SimpleMemory &_memory)
Generated on Wed Sep 30 2020 14:02:14 for gem5 by doxygen 1.8.17