Go to the documentation of this file.
46 #ifndef __NVM_INTERFACE_HH__
47 #define __NVM_INTERFACE_HH__
50 #include "params/NVMInterface.hh"
85 Rank(
const NVMInterfaceParams &_p,
int _rank,
193 void init()
override;
201 void setupRank(
const uint8_t rank,
const bool is_read)
override;
204 unsigned int size,
bool is_read,
205 uint8_t pseudo_channel = 0)
override;
241 bool isBusy(
bool read_queue_empty,
bool all_writes_nvm)
override;
323 #endif //__NVM_INTERFACE_HH__
This is a simple scalar statistic, like a counter.
std::pair< MemPacketQueue::iterator, Tick > chooseNextFRFCFS(MemPacketQueue &queue, Tick min_col_at) const override
For FR-FCFS policy, find first NVM command that can issue default to first command to prepped region.
Interface to NVM devices with media specific parameters, statistics, and functions.
const uint32_t maxPendingReads
statistics::Formula busUtilWrite
statistics::Formula busUtilRead
Tick accessLatency() const override
bool writeRespQueueFull() const override
Check if the write response queue has reached defined threshold.
NVMInterface(const NVMInterfaceParams &_p)
EventFunctionWrapper readReadyEvent
void chooseRead(MemPacketQueue &queue) override
Select read command to issue asynchronously.
std::vector< Bank > banks
Vector of NVM banks.
Rank(const NVMInterfaceParams &_p, int _rank, NVMInterface &_nvm)
void drainRanks() override
The next three functions are DRAM-specific and will be ignored by NVM.
void addRankToRankDelay(Tick cmd_at) override
Add rank to rank delay to bus timing to all NVM banks in alli ranks when access to an alternate inter...
bool allRanksDrained() const override
Check drain state of NVM interface.
void processWriteRespondEvent()
void setupRank(const uint8_t rank, const bool is_read) override
Setup the rank based on packet received.
A vector of scalar stats.
statistics::Histogram pendingReads
NVM stats.
const Tick tREAD
NVM specific timing requirements.
NVM rank class simply includes a vector of banks.
statistics::Formula avgQLat
void checkRefreshState(uint8_t rank) override
This function is DRAM specific.
statistics::Formula avgBusLat
std::deque< Tick > readReadyQueue
statistics::Formula peakBW
statistics::Scalar totBusLat
const uint32_t maxPendingWrites
NVM specific device and channel characteristics.
statistics::Scalar totMemAccLat
General interface to memory device Includes functions and parameters shared across media types.
statistics::Scalar bytesRead
MemPacket * decodePacket(const PacketPtr pkt, Addr pkt_addr, unsigned int size, bool is_read, uint8_t pseudo_channel=0) override
Address decoder to figure out physical mapping onto ranks, banks, and rows.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
EventFunctionWrapper writeRespondEvent
uint64_t Tick
Tick count type.
A memory packet stores packets along with the timestamp of when the packet entered the queue,...
void suspend() override
This function is DRAM specific.
statistics::Scalar totQLat
NVMStats(NVMInterface &nvm)
void processReadReadyEvent()
statistics::Formula avgWrBW
bool isBusy(bool read_queue_empty, bool all_writes_nvm) override
This function checks if ranks are busy.
statistics::Formula avgMemAccLat
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
void init() override
Initialize the NVM interface and verify parameters.
statistics::Scalar writeBursts
bool burstReady(MemPacket *pkt) const override
Check if a burst operation can be issued to the NVM.
statistics::Formula avgRdBW
uint64_t size() const
Get the memory size.
statistics::Histogram bytesPerBank
Tick commandOffset() const override
void respondEvent(uint8_t rank) override
Following two functions are not required for nvm interface.
std::vector< Rank * > ranks
Vector of nvm ranks.
std::pair< Tick, Tick > doBurstAccess(MemPacket *pkt, Tick next_burst_at, const std::vector< MemPacketQueue > &queue) override
Actually do the burst and update stats.
statistics::Vector perBankWrBursts
void regStats() override
Callback to set stat parameters.
uint8_t rank
Current Rank index.
statistics::Scalar readBursts
NVM stats.
statistics::Formula busUtil
statistics::Vector perBankRdBursts
statistics::Histogram pendingWrites
void startup() override
startup() is the final initialization call before simulation.
Tick nextReadAt
Till when must we wait before issuing next read command?
std::list< Tick > writeRespQueue
Holding queue for non-deterministic write commands, which maintains writes that have been issued but ...
bool readsWaitingToIssue() const override
This function is NVM specific.
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
uint16_t numReadDataReady
statistics::Scalar bytesWritten
bool writeRespQueueEmpty() const
Check if the write response queue is empty.
Generated on Thu Jun 16 2022 10:41:56 for gem5 by doxygen 1.8.17