gem5  v21.1.0.2
Public Member Functions | Public Attributes | List of all members
gem5::memory::MemPacket Class Reference

A memory packet stores packets along with the timestamp of when the packet entered the queue, and also the decoded address. More...

#include <mem_ctrl.hh>

Public Member Functions

void qosValue (const uint8_t qv)
 Set the packet QoS value (interface compatibility with Packet) More...
 
uint8_t qosValue () const
 Get the packet QoS value (interface compatibility with Packet) More...
 
RequestorID requestorId () const
 Get the packet RequestorID (interface compatibility with Packet) More...
 
unsigned int getSize () const
 Get the packet size (interface compatibility with Packet) More...
 
Addr getAddr () const
 Get the packet address (interface compatibility with Packet) More...
 
bool isRead () const
 Return true if its a read packet (interface compatibility with Packet) More...
 
bool isWrite () const
 Return true if its a write packet (interface compatibility with Packet) More...
 
bool isDram () const
 Return true if its a DRAM access. More...
 
 MemPacket (PacketPtr _pkt, bool is_read, bool is_dram, uint8_t _rank, uint8_t _bank, uint32_t _row, uint16_t bank_id, Addr _addr, unsigned int _size)
 

Public Attributes

const Tick entryTime
 When did request enter the controller. More...
 
Tick readyTime
 When will request leave the controller. More...
 
const PacketPtr pkt
 This comes from the outside world. More...
 
const RequestorID _requestorId
 RequestorID associated with the packet. More...
 
const bool read
 
const bool dram
 Does this packet access DRAM? More...
 
const uint8_t rank
 Will be populated by address decoder. More...
 
const uint8_t bank
 
const uint32_t row
 
const uint16_t bankId
 Bank id is calculated considering banks in all the ranks eg: 2 ranks each with 8 banks, then bankId = 0 --> rank0, bank0 and bankId = 8 --> rank1, bank0. More...
 
Addr addr
 The starting address of the packet. More...
 
unsigned int size
 The size of this dram packet in bytes It is always equal or smaller than the burst size. More...
 
BurstHelperburstHelper
 A pointer to the BurstHelper if this MemPacket is a split packet If not a split packet (common case), this is set to NULL. More...
 
uint8_t _qosValue
 QoS value of the encapsulated packet read at queuing time. More...
 

Detailed Description

A memory packet stores packets along with the timestamp of when the packet entered the queue, and also the decoded address.

Definition at line 97 of file mem_ctrl.hh.

Constructor & Destructor Documentation

◆ MemPacket()

gem5::memory::MemPacket::MemPacket ( PacketPtr  _pkt,
bool  is_read,
bool  is_dram,
uint8_t  _rank,
uint8_t  _bank,
uint32_t  _row,
uint16_t  bank_id,
Addr  _addr,
unsigned int  _size 
)
inline

Definition at line 202 of file mem_ctrl.hh.

Member Function Documentation

◆ getAddr()

Addr gem5::memory::MemPacket::getAddr ( ) const
inline

Get the packet address (interface compatibility with Packet)

Definition at line 183 of file mem_ctrl.hh.

References addr.

◆ getSize()

unsigned int gem5::memory::MemPacket::getSize ( ) const
inline

Get the packet size (interface compatibility with Packet)

Definition at line 177 of file mem_ctrl.hh.

References size.

◆ isDram()

bool gem5::memory::MemPacket::isDram ( ) const
inline

◆ isRead()

bool gem5::memory::MemPacket::isRead ( ) const
inline

◆ isWrite()

bool gem5::memory::MemPacket::isWrite ( ) const
inline

Return true if its a write packet (interface compatibility with Packet)

Definition at line 195 of file mem_ctrl.hh.

References read.

◆ qosValue() [1/2]

uint8_t gem5::memory::MemPacket::qosValue ( ) const
inline

Get the packet QoS value (interface compatibility with Packet)

Definition at line 165 of file mem_ctrl.hh.

References _qosValue.

◆ qosValue() [2/2]

void gem5::memory::MemPacket::qosValue ( const uint8_t  qv)
inline

Set the packet QoS value (interface compatibility with Packet)

Definition at line 159 of file mem_ctrl.hh.

References _qosValue.

Referenced by gem5::memory::MemCtrl::addToReadQueue(), and gem5::memory::MemCtrl::addToWriteQueue().

◆ requestorId()

RequestorID gem5::memory::MemPacket::requestorId ( ) const
inline

Get the packet RequestorID (interface compatibility with Packet)

Definition at line 171 of file mem_ctrl.hh.

References _requestorId.

Referenced by gem5::memory::MemCtrl::doBurstAccess().

Member Data Documentation

◆ _qosValue

uint8_t gem5::memory::MemPacket::_qosValue

QoS value of the encapsulated packet read at queuing time.

Definition at line 153 of file mem_ctrl.hh.

Referenced by qosValue().

◆ _requestorId

const RequestorID gem5::memory::MemPacket::_requestorId

RequestorID associated with the packet.

Definition at line 111 of file mem_ctrl.hh.

Referenced by requestorId().

◆ addr

Addr gem5::memory::MemPacket::addr

The starting address of the packet.

This address could be unaligned to burst size boundaries. The reason is to keep the address offset so we can accurately check incoming read packets with packets in the write queue.

Definition at line 136 of file mem_ctrl.hh.

Referenced by gem5::memory::MemCtrl::addToReadQueue(), gem5::memory::MemCtrl::addToWriteQueue(), gem5::memory::MemCtrl::doBurstAccess(), gem5::memory::DRAMInterface::doBurstAccess(), gem5::memory::NVMInterface::doBurstAccess(), and getAddr().

◆ bank

const uint8_t gem5::memory::MemPacket::bank

◆ bankId

const uint16_t gem5::memory::MemPacket::bankId

Bank id is calculated considering banks in all the ranks eg: 2 ranks each with 8 banks, then bankId = 0 --> rank0, bank0 and bankId = 8 --> rank1, bank0.

Definition at line 128 of file mem_ctrl.hh.

Referenced by gem5::memory::DRAMInterface::doBurstAccess(), and gem5::memory::NVMInterface::doBurstAccess().

◆ burstHelper

BurstHelper* gem5::memory::MemPacket::burstHelper

A pointer to the BurstHelper if this MemPacket is a split packet If not a split packet (common case), this is set to NULL.

Definition at line 148 of file mem_ctrl.hh.

Referenced by gem5::memory::MemCtrl::addToReadQueue(), and gem5::memory::MemCtrl::processRespondEvent().

◆ dram

const bool gem5::memory::MemPacket::dram

Does this packet access DRAM?

Definition at line 116 of file mem_ctrl.hh.

Referenced by isDram().

◆ entryTime

const Tick gem5::memory::MemPacket::entryTime

When did request enter the controller.

Definition at line 102 of file mem_ctrl.hh.

Referenced by gem5::memory::MemCtrl::doBurstAccess(), gem5::memory::DRAMInterface::doBurstAccess(), and gem5::memory::NVMInterface::doBurstAccess().

◆ pkt

const PacketPtr gem5::memory::MemPacket::pkt

This comes from the outside world.

Definition at line 108 of file mem_ctrl.hh.

Referenced by gem5::memory::MemCtrl::processRespondEvent().

◆ rank

const uint8_t gem5::memory::MemPacket::rank

◆ read

const bool gem5::memory::MemPacket::read

Definition at line 113 of file mem_ctrl.hh.

Referenced by isRead(), and isWrite().

◆ readyTime

Tick gem5::memory::MemPacket::readyTime

◆ row

const uint32_t gem5::memory::MemPacket::row

◆ size

unsigned int gem5::memory::MemPacket::size

The size of this dram packet in bytes It is always equal or smaller than the burst size.

Definition at line 142 of file mem_ctrl.hh.

Referenced by gem5::memory::MemCtrl::doBurstAccess(), and getSize().


The documentation for this class was generated from the following file:

Generated on Tue Sep 21 2021 12:31:28 for gem5 by doxygen 1.8.17