Go to the documentation of this file.
43 #ifndef __MEM_DRAMSIM3_HH__
44 #define __MEM_DRAMSIM3_HH__
48 #include <unordered_map>
53 #include "params/DRAMsim3.hh"
204 void init()
override;
218 #endif // __MEM_DRAMSIM3_HH__
std::unordered_map< Addr, std::queue< PacketPtr > > outstandingWrites
void readComplete(unsigned id, uint64_t addr)
Read completion callback.
std::function< void(uint64_t)> write_cb
A ResponsePort is a specialization of a port.
DRAMsim3Wrapper wrapper
The actual DRAMsim3 wrapper.
bool recvTimingReq(PacketPtr pkt)
MemoryPort(const std::string &_name, DRAMsim3 &_memory)
const PortID InvalidPortID
void writeComplete(unsigned id, uint64_t addr)
Write completion callback.
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
void recvFunctional(PacketPtr pkt)
void tick()
Progress the controller one clock cycle.
uint64_t Tick
Tick count type.
std::unordered_map< Addr, std::queue< PacketPtr > > outstandingReads
Keep track of what packets are outstanding per address, and do so separately for reads and writes.
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
virtual Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
Wrapper class to avoid having DRAMsim3 names like ClockDomain etc clashing with the normal gem5 world...
std::deque< PacketPtr > responseQueue
Queue to hold response packets until we can send them back.
unsigned int nbrOutstanding() const
void recvRespRetry()
Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called...
DrainState
Object drain/handover states.
An abstract memory represents a contiguous block of physical memory, with an associated address range...
bool retryResp
Are we waiting for a retry for sending a response.
AddrRangeList getAddrRanges() const
Get a list of the non-overlapping address ranges the owner is responsible for.
Ports are used to interface objects to each other.
unsigned int nbrOutstandingWrites
std::unique_ptr< Packet > pendingDelete
Upstream caches need this packet until true is returned, so hold it for deletion until a subsequent c...
void startup() override
startup() is the final initialization call before simulation.
bool recvTimingReq(PacketPtr pkt)
Receive a timing request from the peer.
DRAMsim3(const Params *p)
bool retryReq
Is the connected port waiting for a retry from us.
void accessAndRespond(PacketPtr pkt)
When a packet is ready, use the "access()" method in AbstractMemory to actually create the response p...
Tick recvAtomic(PacketPtr pkt)
unsigned int nbrOutstandingReads
Count the number of outstanding transactions so that we can block any further requests until there is...
EventFunctionWrapper sendResponseEvent
Event to schedule sending of responses.
EventFunctionWrapper tickEvent
Event to schedule clock ticks.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Tick recvAtomic(PacketPtr pkt)
Receive an atomic request packet from the peer.
Tick startTick
Keep track of when the wrapper is started.
AbstractMemoryParams Params
DrainState drain() override
Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are pa...
void resetStats() override
Callback to reset stats.
void recvFunctional(PacketPtr pkt)
Receive a functional request packet from the peer.
std::function< void(uint64_t)> read_cb
Callback functions.
The memory port has to deal with its own flow control to avoid having unbounded storage that is impli...
Generated on Wed Sep 30 2020 14:02:13 for gem5 by doxygen 1.8.17