gem5 v24.0.0.0
|
#include <packet.hh>
Classes | |
struct | CommandInfo |
Structure that defines attributes and other data associated with a Command. More... | |
Public Types | |
enum | Command { InvalidCmd , ReadReq , ReadResp , ReadRespWithInvalidate , WriteReq , WriteResp , WriteCompleteResp , WritebackDirty , WritebackClean , WriteClean , CleanEvict , SoftPFReq , SoftPFExReq , HardPFReq , SoftPFResp , HardPFResp , WriteLineReq , UpgradeReq , SCUpgradeReq , UpgradeResp , SCUpgradeFailReq , UpgradeFailResp , ReadExReq , ReadExResp , ReadCleanReq , ReadSharedReq , LoadLockedReq , StoreCondReq , StoreCondFailReq , StoreCondResp , LockedRMWReadReq , LockedRMWReadResp , LockedRMWWriteReq , LockedRMWWriteResp , SwapReq , SwapResp , MemFenceReq = SwapResp + 3 , MemSyncReq , MemSyncResp , MemFenceResp , CleanSharedReq , CleanSharedResp , CleanInvalidReq , CleanInvalidResp , InvalidDestError , BadAddressError , ReadError , WriteError , FunctionalReadError , FunctionalWriteError , PrintReq , FlushReq , InvalidateReq , InvalidateResp , HTMReq , HTMReqResp , HTMAbort , TlbiExtSync , NUM_MEM_CMDS } |
List of all commands associated with a packet. More... | |
Public Member Functions | |
bool | isRead () const |
bool | isWrite () const |
bool | isUpgrade () const |
bool | isRequest () const |
bool | isResponse () const |
bool | needsWritable () const |
bool | needsResponse () const |
bool | isInvalidate () const |
bool | isEviction () const |
bool | isClean () const |
bool | fromCache () const |
bool | isWriteback () const |
A writeback is an eviction that carries data. | |
bool | hasData () const |
Check if this particular packet type carries payload data. | |
bool | isLLSC () const |
bool | isLockedRMW () const |
bool | isSWPrefetch () const |
bool | isHWPrefetch () const |
bool | isPrefetch () const |
bool | isError () const |
bool | isPrint () const |
bool | isFlush () const |
bool | isDemand () const |
Command | responseCommand () const |
const std::string & | toString () const |
Return the string to a cmd given by idx. | |
int | toInt () const |
MemCmd (Command _cmd) | |
MemCmd (int _cmd) | |
MemCmd () | |
bool | operator== (MemCmd c2) const |
bool | operator!= (MemCmd c2) const |
Private Types | |
enum | Attribute { IsRead , IsWrite , IsUpgrade , IsInvalidate , IsClean , NeedsWritable , IsRequest , IsResponse , NeedsResponse , IsEviction , IsSWPrefetch , IsHWPrefetch , IsLlsc , IsLockedRMW , HasData , IsError , IsPrint , IsFlush , FromCache , NUM_COMMAND_ATTRIBUTES } |
List of command attributes. More... | |
Private Member Functions | |
bool | testCmdAttrib (MemCmd::Attribute attrib) const |
Static Private Member Functions | |
static constexpr unsigned long long | buildAttributes (std::initializer_list< Attribute > attrs) |
Private Attributes | |
Command | cmd |
Static Private Attributes | |
static const CommandInfo | commandInfo [] |
Array to map Command enum to associated info. | |
Friends | |
class | Packet |
Packet probe point. | |
|
private |
List of command attributes.
Enumerator | |
---|---|
IsRead | Data flows from responder to requester. |
IsWrite | Data flows from requester to responder. |
IsUpgrade | |
IsInvalidate | |
IsClean | Cleans any existing dirty blocks. |
NeedsWritable | Requires writable copy to complete in-cache. |
IsRequest | Issued by requester. |
IsResponse | Issue by responder. |
NeedsResponse | Requester needs response from target. |
IsEviction | |
IsSWPrefetch | |
IsHWPrefetch | |
IsLlsc | Alpha/MIPS LL or SC access. |
IsLockedRMW | x86 locked RMW access |
HasData | There is an associated payload. |
IsError | Error response. |
IsPrint | Print state matching address (for debugging) |
IsFlush | Flush the address from caches. |
FromCache | Request originated from a caching agent. |
NUM_COMMAND_ATTRIBUTES |
List of all commands associated with a packet.
|
inlinestaticconstexprprivate |
Definition at line 184 of file packet.hh.
References gem5::ArmISA::attr.
|
inline |
Definition at line 237 of file packet.hh.
References FromCache, and testCmdAttrib().
Referenced by gem5::Packet::fromCache().
|
inline |
Check if this particular packet type carries payload data.
Note that this does not reflect if the data pointer of the packet is valid or not.
Definition at line 250 of file packet.hh.
References HasData, and testCmdAttrib().
Referenced by gem5::Packet::hasData(), and gem5::Packet::hasRespData().
|
inline |
Definition at line 236 of file packet.hh.
References IsClean, and testCmdAttrib().
Referenced by gem5::Packet::isClean(), and gem5::Packet::setSatisfied().
|
inline |
Definition at line 262 of file packet.hh.
References cmd, ReadCleanReq, ReadExReq, ReadReq, ReadSharedReq, WriteLineReq, and WriteReq.
Referenced by gem5::Packet::isDemand().
|
inline |
Definition at line 257 of file packet.hh.
References IsError, and testCmdAttrib().
Referenced by gem5::Packet::isError().
|
inline |
Definition at line 235 of file packet.hh.
References IsEviction, and testCmdAttrib().
Referenced by gem5::Packet::isEviction(), and gem5::Packet::setWriteThrough().
|
inline |
Definition at line 259 of file packet.hh.
References IsFlush, and testCmdAttrib().
Referenced by gem5::Packet::isFlush().
|
inline |
Definition at line 254 of file packet.hh.
References IsHWPrefetch, and testCmdAttrib().
Referenced by gem5::prefetch::BOP::notifyFill().
|
inline |
Definition at line 234 of file packet.hh.
References IsInvalidate, and testCmdAttrib().
Referenced by gem5::Packet::isInvalidate().
|
inline |
Definition at line 251 of file packet.hh.
References IsLlsc, and testCmdAttrib().
Referenced by gem5::BaseCache::allocOnFill(), and gem5::Packet::isLLSC().
|
inline |
Definition at line 252 of file packet.hh.
References IsLockedRMW, and testCmdAttrib().
Referenced by gem5::Packet::isLockedRMW().
|
inline |
Definition at line 255 of file packet.hh.
References IsHWPrefetch, IsSWPrefetch, and testCmdAttrib().
Referenced by gem5::BaseCache::allocOnFill().
|
inline |
Definition at line 258 of file packet.hh.
References IsPrint, and testCmdAttrib().
Referenced by gem5::Packet::isPrint().
|
inline |
Definition at line 227 of file packet.hh.
References IsRead, and testCmdAttrib().
Referenced by gem5::TraceGen::getNextPacket(), gem5::StackDistProbe::handleRequest(), gem5::Packet::isRead(), gem5::TraceCPU::FixedRetryGen::nextExecute(), gem5::DmaPort::sendAtomicBdReq(), gem5::CommMonitor::MonitorStats::updateReqStats(), and gem5::CommMonitor::MonitorStats::updateRespStats().
|
inline |
Definition at line 230 of file packet.hh.
References IsRequest, and testCmdAttrib().
Referenced by gem5::MemFootprintProbe::handleRequest(), and gem5::Packet::isRequest().
|
inline |
Definition at line 231 of file packet.hh.
References IsResponse, and testCmdAttrib().
Referenced by gem5::Packet::isResponse().
|
inline |
Definition at line 253 of file packet.hh.
References IsSWPrefetch, and testCmdAttrib().
Referenced by gem5::Cache::handleTimingReqMiss(), gem5::prefetch::Base::probeNotify(), and gem5::Cache::serviceMSHRTargets().
|
inline |
Definition at line 229 of file packet.hh.
References IsUpgrade, and testCmdAttrib().
Referenced by gem5::Packet::isUpgrade().
|
inline |
Definition at line 228 of file packet.hh.
References IsWrite, and testCmdAttrib().
Referenced by gem5::BaseGen::getPacket(), gem5::StackDistProbe::handleRequest(), gem5::Packet::isWrite(), gem5::TraceCPU::FixedRetryGen::send(), gem5::Packet::setWriteThrough(), gem5::CommMonitor::MonitorStats::updateReqStats(), and gem5::CommMonitor::MonitorStats::updateRespStats().
|
inline |
A writeback is an eviction that carries data.
Definition at line 242 of file packet.hh.
References HasData, IsEviction, and testCmdAttrib().
Referenced by gem5::Packet::isWriteback().
|
inline |
Definition at line 233 of file packet.hh.
References NeedsResponse, and testCmdAttrib().
Referenced by gem5::Packet::needsResponse().
|
inline |
Definition at line 232 of file packet.hh.
References NeedsWritable, and testCmdAttrib().
Referenced by gem5::Packet::needsWritable().
|
inline |
Definition at line 284 of file packet.hh.
References gem5::MipsISA::c2, and cmd.
|
inline |
Definition at line 283 of file packet.hh.
References gem5::MipsISA::c2, and cmd.
|
inline |
Definition at line 270 of file packet.hh.
References cmd, commandInfo, and gem5::MemCmd::CommandInfo::response.
Referenced by gem5::TimingSimpleCPU::buildSplitPacket(), gem5::Packet::hasRespData(), gem5::Packet::makeHtmTransactionalReqResponse(), and gem5::Packet::makeResponse().
|
inlineprivate |
Definition at line 220 of file packet.hh.
References gem5::MemCmd::CommandInfo::attributes, cmd, and commandInfo.
Referenced by fromCache(), hasData(), isClean(), isError(), isEviction(), isFlush(), isHWPrefetch(), isInvalidate(), isLLSC(), isLockedRMW(), isPrefetch(), isPrint(), isRead(), isRequest(), isResponse(), isSWPrefetch(), isUpgrade(), isWrite(), isWriteback(), needsResponse(), and needsWritable().
|
inline |
Definition at line 277 of file packet.hh.
References cmd.
Referenced by gem5::Packet::cmdToIndex(), and gem5::MemTraceProbe::handleRequest().
|
inline |
Return the string to a cmd given by idx.
Definition at line 276 of file packet.hh.
References cmd, commandInfo, and gem5::MemCmd::CommandInfo::str.
Referenced by gem5::Packet::cmdString(), gem5::DmaPort::handleResp(), gem5::DmaThread::hitCallback(), gem5::GpuWavefront::hitCallback(), gem5::X86ISA::IntResponsePort< Device >::recvAtomic(), gem5::ComputeUnit::DTLBPort::recvTimingResp(), gem5::ComputeUnit::ScalarDTLBPort::recvTimingResp(), gem5::minor::LSQ::recvTimingResp(), and gem5::BaseXBar::regStats().
|
friend |
Packet probe point.
This probe point provides a unified interface for components that want to instrument Packets in the memory system. Components should when possible adhere to the following naming scheme:
PktRequest: Requests sent out on the memory side of a normal components and incoming requests for memories. Packets should not be duplicated (i.e., a packet should only appear once irrespective of the receiving end requesting a retry).
PktResponse: Response received from the memory side of a normal component or a response being sent out from a memory.
PktRequestCPU: Incoming, accepted, memory request on the CPU side of a two-sided component. This probe point is primarily intended for components that cache or forward requests (e.g., caches and XBars), single-sided components should use PktRequest instead. The probe point should only be called when a packet is accepted.
PktResponseCPU: Outgoing response memory request on the CPU side of a two-sided component. This probe point is primarily intended for components that cache or forward requests (e.g., caches and XBars), single-sided components should use PktRequest instead.
|
private |
Definition at line 217 of file packet.hh.
Referenced by isDemand(), operator!=(), operator==(), gem5::TraceCPU::FixedRetryGen::InputStream::read(), gem5::TraceGen::InputStream::read(), responseCommand(), testCmdAttrib(), toInt(), and toString().
|
staticprivate |
Array to map Command enum to associated info.
Definition at line 213 of file packet.hh.
Referenced by responseCommand(), testCmdAttrib(), and toString().