gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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, WritebackDirty, WritebackClean,
  CleanEvict, SoftPFReq, HardPFReq, SoftPFResp,
  HardPFResp, WriteLineReq, UpgradeReq, SCUpgradeReq,
  UpgradeResp, SCUpgradeFailReq, UpgradeFailResp, ReadExReq,
  ReadExResp, ReadCleanReq, ReadSharedReq, LoadLockedReq,
  StoreCondReq, StoreCondFailReq, StoreCondResp, SwapReq,
  SwapResp, MessageReq, MessageResp, MemFenceReq,
  MemFenceResp, InvalidDestError, BadAddressError, FunctionalReadError,
  FunctionalWriteError, PrintReq, FlushReq, InvalidateReq,
  InvalidateResp, 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 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,
  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 73 of file packet.hh.

Member Enumeration Documentation

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 
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 136 of file packet.hh.

List of all commands associated with a packet.

Enumerator
InvalidCmd 
ReadReq 
ReadResp 
ReadRespWithInvalidate 
WriteReq 
WriteResp 
WritebackDirty 
WritebackClean 
CleanEvict 
SoftPFReq 
HardPFReq 
SoftPFResp 
HardPFResp 
WriteLineReq 
UpgradeReq 
SCUpgradeReq 
UpgradeResp 
SCUpgradeFailReq 
UpgradeFailResp 
ReadExReq 
ReadExResp 
ReadCleanReq 
ReadSharedReq 
LoadLockedReq 
StoreCondReq 
StoreCondFailReq 
StoreCondResp 
SwapReq 
SwapResp 
MessageReq 
MessageResp 
MemFenceReq 
MemFenceResp 
InvalidDestError 
BadAddressError 
FunctionalReadError 
FunctionalWriteError 
PrintReq 
FlushReq 
InvalidateReq 
InvalidateResp 
NUM_MEM_CMDS 

Definition at line 81 of file packet.hh.

Constructor & Destructor Documentation

MemCmd::MemCmd ( Command  _cmd)
inline

Definition at line 230 of file packet.hh.

MemCmd::MemCmd ( int  _cmd)
inline

Definition at line 231 of file packet.hh.

MemCmd::MemCmd ( )
inline

Definition at line 232 of file packet.hh.

Member Function Documentation

bool MemCmd::fromCache ( ) const
inline

Definition at line 197 of file packet.hh.

References FromCache, and testCmdAttrib().

Referenced by Packet::fromCache().

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 210 of file packet.hh.

References HasData, and testCmdAttrib().

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

bool MemCmd::isError ( ) const
inline

Definition at line 216 of file packet.hh.

References IsError, and testCmdAttrib().

Referenced by Packet::isError().

bool MemCmd::isEviction ( ) const
inline

Definition at line 196 of file packet.hh.

References IsEviction, and testCmdAttrib().

Referenced by Packet::isEviction().

bool MemCmd::isFlush ( ) const
inline

Definition at line 218 of file packet.hh.

References IsFlush, and testCmdAttrib().

Referenced by Packet::isFlush().

bool MemCmd::isHWPrefetch ( ) const
inline

Definition at line 213 of file packet.hh.

References IsHWPrefetch, and testCmdAttrib().

bool MemCmd::isInvalidate ( ) const
inline

Definition at line 195 of file packet.hh.

References IsInvalidate, and testCmdAttrib().

Referenced by Packet::isInvalidate().

bool MemCmd::isLLSC ( ) const
inline

Definition at line 211 of file packet.hh.

References IsLlsc, and testCmdAttrib().

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

bool MemCmd::isPrefetch ( ) const
inline

Definition at line 214 of file packet.hh.

References IsHWPrefetch, IsSWPrefetch, and testCmdAttrib().

Referenced by Cache::allocOnFill().

bool MemCmd::isPrint ( ) const
inline

Definition at line 217 of file packet.hh.

References IsPrint, and testCmdAttrib().

Referenced by Packet::isPrint().

bool MemCmd::isRead ( ) const
inline
bool MemCmd::isRequest ( ) const
inline

Definition at line 191 of file packet.hh.

References IsRequest, and testCmdAttrib().

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

bool MemCmd::isResponse ( ) const
inline

Definition at line 192 of file packet.hh.

References IsResponse, and testCmdAttrib().

Referenced by Packet::isResponse().

bool MemCmd::isSWPrefetch ( ) const
inline

Definition at line 212 of file packet.hh.

References IsSWPrefetch, and testCmdAttrib().

Referenced by Cache::recvTimingReq(), and Cache::recvTimingResp().

bool MemCmd::isUpgrade ( ) const
inline

Definition at line 190 of file packet.hh.

References IsUpgrade, and testCmdAttrib().

Referenced by Packet::isUpgrade().

bool MemCmd::isWrite ( ) const
inline
bool MemCmd::isWriteback ( ) const
inline

A writeback is an eviction that carries data.

Definition at line 202 of file packet.hh.

References HasData, IsEviction, and testCmdAttrib().

Referenced by Packet::isWriteback().

bool MemCmd::needsResponse ( ) const
inline

Definition at line 194 of file packet.hh.

References NeedsResponse, and testCmdAttrib().

Referenced by Packet::needsResponse().

bool MemCmd::needsWritable ( ) const
inline

Definition at line 193 of file packet.hh.

References NeedsWritable, and testCmdAttrib().

Referenced by Packet::needsWritable().

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

Definition at line 235 of file packet.hh.

References cmd.

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

Definition at line 234 of file packet.hh.

References cmd.

Command MemCmd::responseCommand ( ) const
inline
bool MemCmd::testCmdAttrib ( MemCmd::Attribute  attrib) const
inlineprivate
int MemCmd::toInt ( ) const
inline

Definition at line 228 of file packet.hh.

References cmd.

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

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

Friends And Related Function Documentation

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 75 of file packet.hh.

Member Data Documentation

Command MemCmd::cmd
private
const MemCmd::CommandInfo MemCmd::commandInfo
staticprivate

Array to map Command enum to associated info.

Definition at line 174 of file packet.hh.

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


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

Generated on Fri Jun 9 2017 13:04:14 for gem5 by doxygen 1.8.6