46#ifndef __HETERO_MEM_CTRL_HH__
47#define __HETERO_MEM_CTRL_HH__
50#include "params/HeteroMemCtrl.hh"
99 bool& retry_rd_req)
override;
virtual void processRespondEvent(MemInterface *mem_intr, MemPacketQueue &queue, EventFunctionWrapper &resp_event, bool &retry_rd_req) override
void drainResume() override
Resume execution after a successful drain.
virtual bool pktSizeCheck(MemPacket *mem_pkt, MemInterface *mem_intr) const override
Check if mem pkt's size is sane.
HeteroMemCtrl(const HeteroMemCtrlParams &p)
Tick doBurstAccess(MemPacket *mem_pkt, MemInterface *mem_int) override
Actually do the burst based on media specific access function.
virtual bool memBusy(MemInterface *mem_intr) override
Checks if the memory interface is already busy.
Tick recvAtomic(PacketPtr pkt) override
virtual Addr burstAlign(Addr addr, MemInterface *mem_intr) const override
Burst-align an address.
virtual std::pair< MemPacketQueue::iterator, Tick > chooseNextFRFCFS(MemPacketQueue &queue, Tick extra_col_delay, MemInterface *mem_intr) override
For FR-FCFS policy reorder the read/write queue depending on row buffer hits and earliest bursts avai...
DrainState drain() override
Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are pa...
bool recvTimingReq(PacketPtr pkt) override
AddrRangeList getAddrRanges() override
MemPacketQueue::iterator chooseNext(MemPacketQueue &queue, Tick extra_col_delay, MemInterface *mem_int) override
The memory schduler/arbiter - picks which request needs to go next, based on the specified policy suc...
Tick minReadToWriteDataGap() override
Calculate the minimum delay used when scheduling a read-to-write transision.
bool allIntfDrained() const override
Ensure that all interfaced have drained commands.
virtual void nonDetermReads(MemInterface *mem_intr) override
Will access nvm memory interface and select non-deterministic reads to issue.
Tick minWriteToReadDataGap() override
Calculate the minimum delay used when scheduling a write-to-read transision.
virtual bool nvmWriteBlock(MemInterface *mem_intr) override
Will check if all writes are for nvm interface and nvm's write resp queue is full.
NVMInterface * nvm
Create pointer to interface of the actual nvm media when connected.
void recvFunctional(PacketPtr pkt) override
MemCtrl(const MemCtrlParams &p)
General interface to memory device Includes functions and parameters shared across media types.
A memory packet stores packets along with the timestamp of when the packet entered the queue,...
Interface to NVM devices with media specific parameters, statistics, and functions.
std::list< AddrRange > AddrRangeList
Convenience typedef for a collection of address ranges.
DrainState
Object drain/handover states.
std::deque< MemPacket * > MemPacketQueue
Copyright (c) 2024 Arm Limited All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
uint64_t Tick
Tick count type.