gem5  v20.1.0.0
Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
MemCmd Class Reference

#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, SwapReq, SwapResp,
  MemFenceReq = SwapResp + 3, MemSyncReq, MemSyncResp, MemFenceResp,
  CleanSharedReq, CleanSharedResp, CleanInvalidReq, CleanInvalidResp,
  InvalidDestError, BadAddressError, FunctionalReadError, FunctionalWriteError,
  PrintReq, FlushReq, InvalidateReq, InvalidateResp,
  HTMReq, HTMReqResp, HTMAbort, 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. More...
 
bool hasData () const
 Check if this particular packet type carries payload data. More...
 
bool isLLSC () const
 
bool isSWPrefetch () const
 
bool isHWPrefetch () const
 
bool isPrefetch () const
 
bool isError () const
 
bool isPrint () const
 
bool isFlush () const
 
Command responseCommand () const
 
const std::string & toString () const
 Return the string to a cmd given by idx. More...
 
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, HasData, IsError, IsPrint,
  IsFlush, FromCache, NUM_COMMAND_ATTRIBUTES
}
 List of command attributes. More...
 

Private Member Functions

bool testCmdAttrib (MemCmd::Attribute attrib) const
 

Private Attributes

Command cmd
 

Static Private Attributes

static const CommandInfo commandInfo []
 Array to map Command enum to associated info. More...
 

Friends

class Packet
 Packet probe point. More...
 

Detailed Description

Definition at line 71 of file packet.hh.

Member Enumeration Documentation

◆ Attribute

enum MemCmd::Attribute
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.

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 

Definition at line 146 of file packet.hh.

◆ Command

List of all commands associated with a packet.

Enumerator
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 
SwapReq 
SwapResp 
MemFenceReq 
MemSyncReq 
MemSyncResp 
MemFenceResp 
CleanSharedReq 
CleanSharedResp 
CleanInvalidReq 
CleanInvalidResp 
InvalidDestError 
BadAddressError 
FunctionalReadError 
FunctionalWriteError 
PrintReq 
FlushReq 
InvalidateReq 
InvalidateResp 
HTMReq 
HTMReqResp 
HTMAbort 
NUM_MEM_CMDS 

Definition at line 79 of file packet.hh.

Constructor & Destructor Documentation

◆ MemCmd() [1/3]

MemCmd::MemCmd ( Command  _cmd)
inline

Definition at line 242 of file packet.hh.

◆ MemCmd() [2/3]

MemCmd::MemCmd ( int  _cmd)
inline

Definition at line 243 of file packet.hh.

◆ MemCmd() [3/3]

MemCmd::MemCmd ( )
inline

Definition at line 244 of file packet.hh.

Member Function Documentation

◆ fromCache()

bool MemCmd::fromCache ( ) const
inline

Definition at line 209 of file packet.hh.

References FromCache, and testCmdAttrib().

Referenced by Packet::fromCache().

◆ hasData()

bool MemCmd::hasData ( ) const
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 222 of file packet.hh.

References HasData, and testCmdAttrib().

Referenced by Packet::hasData(), and Packet::hasRespData().

◆ isClean()

bool MemCmd::isClean ( ) const
inline

Definition at line 208 of file packet.hh.

References IsClean, and testCmdAttrib().

Referenced by Packet::isClean(), and Packet::setSatisfied().

◆ isError()

bool MemCmd::isError ( ) const
inline

Definition at line 228 of file packet.hh.

References IsError, and testCmdAttrib().

Referenced by Packet::isError().

◆ isEviction()

bool MemCmd::isEviction ( ) const
inline

Definition at line 207 of file packet.hh.

References IsEviction, and testCmdAttrib().

Referenced by Packet::isEviction(), and Packet::setWriteThrough().

◆ isFlush()

bool MemCmd::isFlush ( ) const
inline

Definition at line 230 of file packet.hh.

References IsFlush, and testCmdAttrib().

Referenced by Packet::isFlush().

◆ isHWPrefetch()

bool MemCmd::isHWPrefetch ( ) const
inline

Definition at line 225 of file packet.hh.

References IsHWPrefetch, and testCmdAttrib().

Referenced by Prefetcher::BOP::notifyFill().

◆ isInvalidate()

bool MemCmd::isInvalidate ( ) const
inline

Definition at line 206 of file packet.hh.

References IsInvalidate, and testCmdAttrib().

Referenced by Packet::isInvalidate().

◆ isLLSC()

bool MemCmd::isLLSC ( ) const
inline

Definition at line 223 of file packet.hh.

References IsLlsc, and testCmdAttrib().

Referenced by BaseCache::allocOnFill(), and Packet::isLLSC().

◆ isPrefetch()

bool MemCmd::isPrefetch ( ) const
inline

Definition at line 226 of file packet.hh.

References IsHWPrefetch, IsSWPrefetch, and testCmdAttrib().

Referenced by BaseCache::allocOnFill().

◆ isPrint()

bool MemCmd::isPrint ( ) const
inline

Definition at line 229 of file packet.hh.

References IsPrint, and testCmdAttrib().

Referenced by Packet::isPrint().

◆ isRead()

bool MemCmd::isRead ( ) const
inline

◆ isRequest()

bool MemCmd::isRequest ( ) const
inline

Definition at line 202 of file packet.hh.

References IsRequest, and testCmdAttrib().

Referenced by MemFootprintProbe::handleRequest(), and Packet::isRequest().

◆ isResponse()

bool MemCmd::isResponse ( ) const
inline

Definition at line 203 of file packet.hh.

References IsResponse, and testCmdAttrib().

Referenced by Packet::isResponse().

◆ isSWPrefetch()

bool MemCmd::isSWPrefetch ( ) const
inline

◆ isUpgrade()

bool MemCmd::isUpgrade ( ) const
inline

Definition at line 201 of file packet.hh.

References IsUpgrade, and testCmdAttrib().

Referenced by Packet::isUpgrade().

◆ isWrite()

bool MemCmd::isWrite ( ) const
inline

◆ isWriteback()

bool MemCmd::isWriteback ( ) const
inline

A writeback is an eviction that carries data.

Definition at line 214 of file packet.hh.

References HasData, IsEviction, and testCmdAttrib().

Referenced by Packet::isWriteback().

◆ needsResponse()

bool MemCmd::needsResponse ( ) const
inline

Definition at line 205 of file packet.hh.

References NeedsResponse, and testCmdAttrib().

Referenced by Packet::needsResponse().

◆ needsWritable()

bool MemCmd::needsWritable ( ) const
inline

Definition at line 204 of file packet.hh.

References NeedsWritable, and testCmdAttrib().

Referenced by Packet::needsWritable().

◆ operator!=()

bool MemCmd::operator!= ( MemCmd  c2) const
inline

Definition at line 247 of file packet.hh.

References MipsISA::c2, and cmd.

◆ operator==()

bool MemCmd::operator== ( MemCmd  c2) const
inline

Definition at line 246 of file packet.hh.

References MipsISA::c2, and cmd.

◆ responseCommand()

Command MemCmd::responseCommand ( ) const
inline

◆ testCmdAttrib()

bool MemCmd::testCmdAttrib ( MemCmd::Attribute  attrib) const
inlineprivate

◆ toInt()

int MemCmd::toInt ( ) const
inline

Definition at line 240 of file packet.hh.

References cmd.

Referenced by Packet::cmdToIndex(), and MemTraceProbe::handleRequest().

◆ toString()

const std::string& MemCmd::toString ( ) const
inline

Friends And Related Function Documentation

◆ Packet

friend class Packet
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.

Definition at line 73 of file packet.hh.

Member Data Documentation

◆ cmd

Command MemCmd::cmd
private

◆ commandInfo

const MemCmd::CommandInfo MemCmd::commandInfo
staticprivate

Array to map Command enum to associated info.

Definition at line 185 of file packet.hh.

Referenced by responseCommand(), testCmdAttrib(), and toString().


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

Generated on Wed Sep 30 2020 14:02:27 for gem5 by doxygen 1.8.17