gem5 v24.0.0.0
Loading...
Searching...
No Matches
gem5::Request Class Reference

#include <request.hh>

Inheritance diagram for gem5::Request:
gem5::Extensible< Request >

Public Types

enum  : FlagsType {
  ARCH_BITS = 0x000000FF , INST_FETCH = 0x00000100 , PHYSICAL = 0x00000200 , UNCACHEABLE = 0x00000400 ,
  STRICT_ORDER = 0x00000800 , PRIVILEGED = 0x00008000 , CACHE_BLOCK_ZERO = 0x00010000 , NO_ACCESS = 0x00080000 ,
  LOCKED_RMW = 0x00100000 , LLSC = 0x00200000 , MEM_SWAP = 0x00400000 , MEM_SWAP_COND = 0x00800000 ,
  READ_MODIFY_WRITE = 0x0020000000000000 , PREFETCH = 0x01000000 , PF_EXCLUSIVE = 0x02000000 , EVICT_NEXT = 0x04000000 ,
  ACQUIRE = 0x00020000 , RELEASE = 0x00040000 , ATOMIC_RETURN_OP = 0x40000000 , ATOMIC_NO_RETURN_OP = 0x80000000 ,
  KERNEL = 0x00001000 , SECURE = 0x10000000 , PT_WALK = 0x20000000 , INVALIDATE = 0x0000000100000000 ,
  CLEAN = 0x0000000200000000 , DST_POU = 0x0000001000000000 , DST_POC = 0x0000002000000000 , DST_BITS = 0x0000003000000000 ,
  HTM_START = 0x0000010000000000 , HTM_COMMIT = 0x0000020000000000 , HTM_CANCEL = 0x0000040000000000 , HTM_ABORT = 0x0000080000000000 ,
  TLBI = 0x0000100000000000 , TLBI_SYNC = 0x0000200000000000 , TLBI_EXT_SYNC = 0x0000400000000000 , TLBI_EXT_SYNC_COMP = 0x0000800000000000 ,
  STICKY_FLAGS = INST_FETCH
}
 
enum  : CacheCoherenceFlagsType {
  I_CACHE_INV = 0x00000001 , INV_L1 = I_CACHE_INV , V_CACHE_INV = 0x00000002 , K_CACHE_INV = 0x00000004 ,
  GL1_CACHE_INV = 0x00000008 , K_CACHE_WB = 0x00000010 , FLUSH_L2 = 0x00000020 , GL2_CACHE_INV = 0x00000040 ,
  SLC_BIT = 0x00000080 , DLC_BIT = 0x00000100 , GLC_BIT = 0x00000200 , CACHED = 0x00000400 ,
  READ_WRITE = 0x00000800 , SHARED = 0x00001000
}
 These bits are used to set the coherence policy for the GPU and are encoded in the Vega instructions. More...
 
typedef uint64_t FlagsType
 
typedef uint8_t ArchFlagsType
 
typedef gem5::Flags< FlagsTypeFlags
 
typedef uint64_t CacheCoherenceFlagsType
 
typedef gem5::Flags< CacheCoherenceFlagsTypeCacheCoherenceFlags
 
using LocalAccessor
 
enum  : RequestorID { wbRequestorId = 0 , funcRequestorId = 1 , intRequestorId = 2 , invldRequestorId = std::numeric_limits<RequestorID>::max() }
 Requestor Ids that are statically allocated. More...
 

Public Member Functions

 Request ()
 Minimal constructor.
 
 Request (Addr paddr, unsigned size, Flags flags, RequestorID id)
 Constructor for physical (e.g.
 
 Request (Addr vaddr, unsigned size, Flags flags, RequestorID id, Addr pc, ContextID cid, AtomicOpFunctorPtr atomic_op=nullptr)
 
 Request (const Request &other)
 
 ~Request ()
 
void setContext (ContextID context_id)
 Set up Context numbers.
 
void setStreamId (uint32_t sid)
 
void setSubstreamId (uint32_t ssid)
 
void setVirt (Addr vaddr, unsigned size, Flags flags, RequestorID id, Addr pc, AtomicOpFunctorPtr amo_op=nullptr)
 Set up a virtual (e.g., CPU) request in a previously allocated Request object.
 
void setPaddr (Addr paddr)
 Set just the physical address.
 
void splitOnVaddr (Addr split_addr, RequestPtr &req1, RequestPtr &req2)
 Generate two requests as if this request had been split into two pieces.
 
bool hasPaddr () const
 Accessor for paddr.
 
Addr getPaddr () const
 
bool hasInstCount () const
 Accessor for instruction count.
 
Counter getInstCount () const
 
void setInstCount (Counter val)
 
bool hasSize () const
 Accessor for size.
 
unsigned getSize () const
 
const std::vector< bool > & getByteEnable () const
 
void setByteEnable (const std::vector< bool > &be)
 
bool isMasked () const
 Returns true if the memory request is masked, which means there is at least one byteEnable element which is false (byte is masked)
 
Tick time () const
 Accessor for time.
 
bool isLocalAccess ()
 Is this request for a local memory mapped resource/register?
 
void setLocalAccessor (LocalAccessor acc)
 Set the function which will enact that access.
 
Cycles localAccessor (ThreadContext *tc, Packet *pkt)
 Perform the installed local access.
 
bool hasAtomicOpFunctor ()
 Accessor for atomic-op functor.
 
AtomicOpFunctorgetAtomicOpFunctor ()
 
void setAtomicOpFunctor (AtomicOpFunctorPtr amo_op)
 
bool hasHtmAbortCause () const
 Accessor for hardware transactional memory abort cause.
 
HtmFailureFaultCause getHtmAbortCause () const
 
void setHtmAbortCause (HtmFailureFaultCause val)
 
Flags getFlags ()
 Accessor for flags.
 
void setFlags (Flags flags)
 Note that unlike other accessors, this function sets specific flags (ORs them in); it does not assign its argument to the _flags field.
 
void clearFlags (Flags flags)
 
void setCacheCoherenceFlags (CacheCoherenceFlags extraFlags)
 
void clearCacheCoherenceFlags (CacheCoherenceFlags extraFlags)
 
bool hasVaddr () const
 Accessor function for vaddr.
 
Addr getVaddr () const
 
RequestorID requestorId () const
 Accesssor for the requestor id.
 
void requestorId (RequestorID rid)
 
uint32_t taskId () const
 
void taskId (uint32_t id)
 
ArchFlagsType getArchFlags () const
 Accessor function for architecture-specific flags.
 
bool extraDataValid () const
 Accessor function to check if sc result is valid.
 
uint64_t getExtraData () const
 Accessor function for store conditional return value.
 
void setExtraData (uint64_t extraData)
 Accessor function for store conditional return value.
 
bool hasContextId () const
 
ContextID contextId () const
 Accessor function for context ID.
 
void setSystemReq (bool sysReq)
 
bool systemReq () const
 
bool hasStreamId () const
 
uint32_t streamId () const
 
bool hasSubstreamId () const
 
uint32_t substreamId () const
 
void setPC (Addr pc)
 
bool hasPC () const
 
Addr getPC () const
 Accessor function for pc.
 
void incAccessDepth () const
 Increment/Get the depth at which this request is responded to.
 
int getAccessDepth () const
 
void setTranslateLatency ()
 Set/Get the time taken for this request to be successfully translated.
 
Tick getTranslateLatency () const
 
void setAccessLatency ()
 Set/Get the time taken to complete this request's access, not including the time to successfully translate the request.
 
Tick getAccessLatency () const
 
bool hasInstSeqNum () const
 Accessor for the sequence number of instruction that creates the request.
 
InstSeqNum getReqInstSeqNum () const
 
void setReqInstSeqNum (const InstSeqNum seq_num)
 
bool isUncacheable () const
 Accessor functions for flags.
 
bool isStrictlyOrdered () const
 
bool isInstFetch () const
 
bool isPrefetch () const
 
bool isPrefetchEx () const
 
bool isLLSC () const
 
bool isPriv () const
 
bool isLockedRMW () const
 
bool isSwap () const
 
bool isCondSwap () const
 
bool isReadModifyWrite () const
 
bool isSecure () const
 
bool isPTWalk () const
 
bool isRelease () const
 
bool isKernel () const
 
bool isAtomicReturn () const
 
bool isAtomicNoReturn () const
 
bool isHTMStart () const
 
bool isHTMCommit () const
 
bool isHTMCancel () const
 
bool isHTMAbort () const
 
bool isHTMCmd () const
 
bool isTlbi () const
 
bool isTlbiSync () const
 
bool isTlbiExtSync () const
 
bool isTlbiExtSyncComp () const
 
bool isTlbiCmd () const
 
bool isMemMgmt () const
 
bool isAtomic () const
 
bool isToPOU () const
 Accessor functions for the destination of a memory request.
 
bool isToPOC () const
 
Flags getDest () const
 
bool isAcquire () const
 
bool isGLCSet () const
 Accessor functions for the cache bypass flags.
 
bool isSLCSet () const
 
bool isInvL1 () const
 Accessor functions for the memory space configuration flags and used by GPU ISAs such as the Heterogeneous System Architecture (HSA).
 
bool isInvL2 () const
 
bool isGL2CacheFlush () const
 
bool isCacheClean () const
 Accessor functions to determine whether this request is part of a cache maintenance operation.
 
bool isCacheInvalidate () const
 
bool isCacheMaintenance () const
 
- Public Member Functions inherited from gem5::Extensible< Request >
 Extensible ()=default
 
 Extensible (const Extensible &other)
 
virtual ~Extensible ()=default
 
void setExtension (std::shared_ptr< T > ext)
 Set a new extension to the packet and replace the old one, if there already exists the same type of extension in this packet.
 
void removeExtension (void)
 Remove the extension based on its type.
 
std::shared_ptr< T > getExtension ()
 Get the extension pointer by linear search with the extensionID.
 

Static Public Member Functions

static RequestPtr createMemManagement (Flags flags, RequestorID id)
 Factory method for creating memory management requests, with unspecified addr and size.
 

Public Attributes

Tick translateDelta = 0
 Time for the TLB/table walker to successfully translate this request.
 
Tick accessDelta = 0
 Access latency to complete this memory transaction not including translation time.
 
int depth = 0
 Level of the cache hierachy where this request was responded to (e.g.
 

Static Public Attributes

static const FlagsType STORE_NO_DATA
 
static const FlagsType HTM_CMD
 
static const FlagsType TLBI_CMD
 

Private Types

enum  : PrivateFlagsType {
  VALID_SIZE = 0x00000001 , VALID_PADDR = 0x00000002 , VALID_VADDR = 0x00000004 , VALID_INST_SEQ_NUM = 0x00000008 ,
  VALID_PC = 0x00000010 , VALID_CONTEXT_ID = 0x00000020 , VALID_EXTRA_DATA = 0x00000080 , VALID_STREAM_ID = 0x00000100 ,
  VALID_SUBSTREAM_ID = 0x00000200 , VALID_HTM_ABORT_CAUSE = 0x00000400 , VALID_INST_COUNT = 0x00000800 , STICKY_PRIVATE_FLAGS = VALID_CONTEXT_ID
}
 
typedef uint16_t PrivateFlagsType
 
typedef gem5::Flags< PrivateFlagsTypePrivateFlags
 

Private Attributes

Addr _paddr = 0
 The physical address of the request.
 
unsigned _size = 0
 The size of the request.
 
std::vector< bool > _byteEnable
 Byte-enable mask for writes.
 
RequestorID _requestorId = invldRequestorId
 The requestor ID which is unique in the system for all ports that are capable of issuing a transaction.
 
Flags _flags
 Flag structure for the request.
 
CacheCoherenceFlags _cacheCoherenceFlags
 Flags that control how downstream cache system maintains coherence.
 
PrivateFlags privateFlags
 Private flags for field validity checking.
 
Tick _time = MaxTick
 The time this request was started.
 
uint32_t _taskId = context_switch_task_id::Unknown
 The task id associated with this request.
 
uint32_t _streamId = 0
 The stream ID uniquely identifies a device behind the SMMU/IOMMU Each transaction arriving at the SMMU/IOMMU is associated with exactly one stream ID.
 
uint32_t _substreamId = 0
 The substream ID identifies an "execution context" within a device behind an SMMU/IOMMU.
 
bool _systemReq = 0
 For fullsystem GPU simulation, this determines if a requests destination is system (host) memory or dGPU (device) memory.
 
Addr _vaddr = MaxAddr
 The virtual address of the request.
 
uint64_t _extraData = 0
 Extra data for the request, such as the return value of store conditional or the compare value for a CAS.
 
ContextID _contextId = InvalidContextID
 The context ID (for statistics, locks, and wakeups).
 
Addr _pc = MaxAddr
 program counter of initiating access; for tracing/debugging
 
InstSeqNum _reqInstSeqNum = 0
 Sequence number of the instruction that creates the request.
 
AtomicOpFunctorPtr atomicOpFunctor = nullptr
 A pointer to an atomic operation.
 
LocalAccessor _localAccessor
 
Counter _instCount = 0
 The instruction count at the time this request is created.
 
HtmFailureFaultCause _htmAbortCause = HtmFailureFaultCause::INVALID
 The cause for HTM transaction abort.
 

Additional Inherited Members

- Protected Member Functions inherited from gem5::Extensible< Request >
std::list< std::shared_ptr< ExtensionBase > >::iterator findExtension ()
 Go through the extension list and return the iterator to the instance of the type of extension.
 
- Protected Attributes inherited from gem5::Extensible< Request >
std::list< std::shared_ptr< ExtensionBase > > extensions
 

Detailed Description

Definition at line 97 of file request.hh.

Member Typedef Documentation

◆ ArchFlagsType

Definition at line 101 of file request.hh.

◆ CacheCoherenceFlags

◆ CacheCoherenceFlagsType

Definition at line 290 of file request.hh.

◆ Flags

Definition at line 102 of file request.hh.

◆ FlagsType

typedef uint64_t gem5::Request::FlagsType

Definition at line 100 of file request.hh.

◆ LocalAccessor

Initial value:
std::function<Cycles(ThreadContext *tc, Packet *pkt)>

Definition at line 342 of file request.hh.

◆ PrivateFlags

Definition at line 347 of file request.hh.

◆ PrivateFlagsType

typedef uint16_t gem5::Request::PrivateFlagsType
private

Definition at line 346 of file request.hh.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum : FlagsType
Enumerator
ARCH_BITS 

Architecture specific flags.

These bits int the flag field are reserved for architecture-specific code. For example, SPARC uses them to represent ASIs.

INST_FETCH 

The request was an instruction fetch.

PHYSICAL 

The virtual address is also the physical address.

UNCACHEABLE 

The request is to an uncacheable address.

Note
Uncacheable accesses may be reordered by CPU models. The STRICT_ORDER flag should be set if such reordering is undesirable.
STRICT_ORDER 

The request is required to be strictly ordered by CPU models and is non-speculative.

A strictly ordered request is guaranteed to never be re-ordered or executed speculatively by a CPU model. The memory system may still reorder requests in caches unless the UNCACHEABLE flag is set as well.

PRIVILEGED 

This request is made in privileged mode.

CACHE_BLOCK_ZERO 

This is a write that is targeted and zeroing an entire cache block.

There is no need for a read/modify/write

NO_ACCESS 

The request should not cause a memory access.

LOCKED_RMW 

This request will lock or unlock the accessed memory.

When used with a load, the access locks the particular chunk of memory. When used with a store, it unlocks. The rule is that locked accesses have to be made up of a locked load, some operation on the data, and then a locked store.

LLSC 

The request is a Load locked/store conditional.

MEM_SWAP 

This request is for a memory swap.

MEM_SWAP_COND 
READ_MODIFY_WRITE 

This request is a read which will be followed by a write.

PREFETCH 

The request is a prefetch.

PF_EXCLUSIVE 

The request should be prefetched into the exclusive state.

EVICT_NEXT 

The request should be marked as LRU.

ACQUIRE 

The request should be marked with ACQUIRE.

RELEASE 

The request should be marked with RELEASE.

ATOMIC_RETURN_OP 

The request is an atomic that returns data.

ATOMIC_NO_RETURN_OP 

The request is an atomic that does not return data.

KERNEL 

The request should be marked with KERNEL.

Used to indicate the synchronization associated with a GPU kernel launch or completion.

SECURE 

The request targets the secure memory space.

PT_WALK 

The request is a page table walk.

INVALIDATE 

The request invalidates a memory location.

CLEAN 

The request cleans a memory location.

DST_POU 

The request targets the point of unification.

DST_POC 

The request targets the point of coherence.

DST_BITS 

Bits to define the destination of a request.

HTM_START 

hardware transactional memory

The request starts a HTM transaction

HTM_COMMIT 

The request commits a HTM transaction.

HTM_CANCEL 

The request cancels a HTM transaction.

HTM_ABORT 

The request aborts a HTM transaction.

TLBI 

The Request is a TLB shootdown.

TLBI_SYNC 

The Request is a TLB shootdown sync.

TLBI_EXT_SYNC 

The Request tells the CPU model that a remote TLB Sync has been requested.

TLBI_EXT_SYNC_COMP 

The Request tells the interconnect that a remote TLB Sync request has completed.

STICKY_FLAGS 

These flags are not cleared when a Request object is reused (assigned a new address).

Definition at line 104 of file request.hh.

◆ anonymous enum

anonymous enum : RequestorID

Requestor Ids that are statically allocated.

Enumerator
wbRequestorId 

This requestor id is used for writeback requests by the caches.

funcRequestorId 

This requestor id is used for functional requests that don't come from a particular device.

intRequestorId 

This requestor id is used for message signaled interrupts.

invldRequestorId 

Invalid requestor id for assertion checking only.

It is invalid behavior to ever send this id as part of a request.

Definition at line 271 of file request.hh.

◆ anonymous enum

anonymous enum : CacheCoherenceFlagsType

These bits are used to set the coherence policy for the GPU and are encoded in the Vega instructions.

The Vega ISA defines two cache levels See the AMD Vega ISA Architecture Manual for more details.

INV_L1: L1 cache invalidation FLUSH_L2: L2 cache flush

Invalidation means to simply discard all cache contents. This can be done in the L1 since it is implemented as a write-through cache and there are other copies elsewhere in the hierarchy.

For flush the contents of the cache need to be written back to memory when dirty and can be discarded otherwise. This operation is more involved than invalidation and therefore we do not flush caches with redundant copies of data.

SLC: System Level Coherent. Accesses are forced to miss in the L2 cache and are coherent with system memory.

GLC: Globally Coherent. Controls how reads and writes are handled by the L1 cache. Global here referes to the data being visible globally on the GPU (i.e., visible to all WGs).

For atomics, the GLC bit is used to distinguish between between atomic return/no-return operations. These flags are used by GPUDynInst.

Enumerator
I_CACHE_INV 

mem_sync_op flags

INV_L1 
V_CACHE_INV 
K_CACHE_INV 
GL1_CACHE_INV 
K_CACHE_WB 
FLUSH_L2 
GL2_CACHE_INV 
SLC_BIT 

user-policy flags

DLC_BIT 
GLC_BIT 
CACHED 

mtype flags

READ_WRITE 
SHARED 

Definition at line 320 of file request.hh.

◆ anonymous enum

anonymous enum : PrivateFlagsType
private
Enumerator
VALID_SIZE 

Whether or not the size is valid.

VALID_PADDR 

Whether or not paddr is valid (has been written yet).

VALID_VADDR 

Whether or not the vaddr is valid.

VALID_INST_SEQ_NUM 

Whether or not the instruction sequence number is valid.

VALID_PC 

Whether or not the pc is valid.

VALID_CONTEXT_ID 

Whether or not the context ID is valid.

VALID_EXTRA_DATA 

Whether or not the sc result is valid.

VALID_STREAM_ID 

Whether or not the stream ID and substream ID is valid.

VALID_SUBSTREAM_ID 
VALID_HTM_ABORT_CAUSE 

Whether or not the abort cause is valid.

VALID_INST_COUNT 

Whether or not the instruction count is valid.

STICKY_PRIVATE_FLAGS 

These flags are not cleared when a Request object is reused (assigned a new address).

Definition at line 349 of file request.hh.

Constructor & Destructor Documentation

◆ Request() [1/4]

gem5::Request::Request ( )
inline

Minimal constructor.

No fields are initialized. (Note that _flags and privateFlags are cleared by Flags default constructor.)

Definition at line 480 of file request.hh.

◆ Request() [2/4]

gem5::Request::Request ( Addr paddr,
unsigned size,
Flags flags,
RequestorID id )
inline

Constructor for physical (e.g.

device) requests. Initializes just physical address, size, flags, and timestamp (to curTick()). These fields are adequate to perform a request.

Definition at line 487 of file request.hh.

References _byteEnable, _flags, flags, privateFlags, gem5::Flags< T >::set(), VALID_PADDR, and VALID_SIZE.

◆ Request() [3/4]

gem5::Request::Request ( Addr vaddr,
unsigned size,
Flags flags,
RequestorID id,
Addr pc,
ContextID cid,
AtomicOpFunctorPtr atomic_op = nullptr )
inline

Definition at line 495 of file request.hh.

References _byteEnable, flags, gem5::MipsISA::pc, setContext(), setVirt(), and gem5::MipsISA::vaddr.

◆ Request() [4/4]

gem5::Request::Request ( const Request & other)
inline

Definition at line 504 of file request.hh.

References atomicOpFunctor.

◆ ~Request()

gem5::Request::~Request ( )
inline

Definition at line 524 of file request.hh.

Member Function Documentation

◆ clearCacheCoherenceFlags()

void gem5::Request::clearCacheCoherenceFlags ( CacheCoherenceFlags extraFlags)
inline

Definition at line 826 of file request.hh.

References _cacheCoherenceFlags, gem5::Flags< T >::clear(), hasPaddr(), and hasVaddr().

◆ clearFlags()

void gem5::Request::clearFlags ( Flags flags)
inline

Definition at line 811 of file request.hh.

References _flags, gem5::Flags< T >::clear(), flags, hasPaddr(), and hasVaddr().

◆ contextId()

ContextID gem5::Request::contextId ( ) const
inline

Accessor function for context ID.

Definition at line 910 of file request.hh.

References _contextId, and hasContextId().

◆ createMemManagement()

static RequestPtr gem5::Request::createMemManagement ( Flags flags,
RequestorID id )
inlinestatic

Factory method for creating memory management requests, with unspecified addr and size.

Definition at line 531 of file request.hh.

References gem5::curTick(), flags, and gem5::ArmISA::id.

Referenced by gem5::o3::LSQ::checkStaleTranslations(), and gem5::TimingSimpleCPU::DcachePort::recvTimingSnoopReq().

◆ extraDataValid()

bool gem5::Request::extraDataValid ( ) const
inline

Accessor function to check if sc result is valid.

Definition at line 881 of file request.hh.

References gem5::Flags< T >::isSet(), privateFlags, and VALID_EXTRA_DATA.

Referenced by getExtraData().

◆ getAccessDepth()

int gem5::Request::getAccessDepth ( ) const
inline

Definition at line 972 of file request.hh.

References depth.

◆ getAccessLatency()

Tick gem5::Request::getAccessLatency ( ) const
inline

Definition at line 985 of file request.hh.

References accessDelta.

◆ getArchFlags()

ArchFlagsType gem5::Request::getArchFlags ( ) const
inline

Accessor function for architecture-specific flags.

Definition at line 873 of file request.hh.

References _flags, ARCH_BITS, hasPaddr(), and hasVaddr().

◆ getAtomicOpFunctor()

AtomicOpFunctor * gem5::Request::getAtomicOpFunctor ( )
inline

Definition at line 754 of file request.hh.

References atomicOpFunctor.

◆ getByteEnable()

const std::vector< bool > & gem5::Request::getByteEnable ( ) const
inline

Definition at line 699 of file request.hh.

References _byteEnable.

◆ getDest()

Flags gem5::Request::getDest ( ) const
inline

Definition at line 1078 of file request.hh.

References _flags, and DST_BITS.

◆ getExtraData()

uint64_t gem5::Request::getExtraData ( ) const
inline

Accessor function for store conditional return value.

Definition at line 888 of file request.hh.

References _extraData, and extraDataValid().

◆ getFlags()

Flags gem5::Request::getFlags ( )
inline

Accessor for flags.

Definition at line 793 of file request.hh.

References _flags, hasPaddr(), and hasVaddr().

◆ getHtmAbortCause()

HtmFailureFaultCause gem5::Request::getHtmAbortCause ( ) const
inline

Definition at line 777 of file request.hh.

References _htmAbortCause, and hasHtmAbortCause().

◆ getInstCount()

Counter gem5::Request::getInstCount ( ) const
inline

Definition at line 653 of file request.hh.

References _instCount, and hasInstCount().

◆ getPaddr()

Addr gem5::Request::getPaddr ( ) const
inline

Definition at line 638 of file request.hh.

References _paddr, and hasPaddr().

◆ getPC()

Addr gem5::Request::getPC ( ) const
inline

Accessor function for pc.

Definition at line 961 of file request.hh.

References _pc, and hasPC().

◆ getReqInstSeqNum()

InstSeqNum gem5::Request::getReqInstSeqNum ( ) const
inline

Definition at line 998 of file request.hh.

References _reqInstSeqNum, and hasInstSeqNum().

◆ getSize()

unsigned gem5::Request::getSize ( ) const
inline

Definition at line 692 of file request.hh.

References _size, and hasSize().

◆ getTranslateLatency()

Tick gem5::Request::getTranslateLatency ( ) const
inline

Definition at line 978 of file request.hh.

References translateDelta.

◆ getVaddr()

Addr gem5::Request::getVaddr ( ) const
inline

Definition at line 841 of file request.hh.

References _vaddr, gem5::Flags< T >::isSet(), privateFlags, and VALID_VADDR.

◆ hasAtomicOpFunctor()

bool gem5::Request::hasAtomicOpFunctor ( )
inline

Accessor for atomic-op functor.

Definition at line 748 of file request.hh.

References atomicOpFunctor.

◆ hasContextId()

bool gem5::Request::hasContextId ( ) const
inline

Definition at line 903 of file request.hh.

References gem5::Flags< T >::isSet(), privateFlags, and VALID_CONTEXT_ID.

Referenced by contextId().

◆ hasHtmAbortCause()

bool gem5::Request::hasHtmAbortCause ( ) const
inline

Accessor for hardware transactional memory abort cause.

Definition at line 771 of file request.hh.

References gem5::Flags< T >::isSet(), privateFlags, and VALID_HTM_ABORT_CAUSE.

Referenced by getHtmAbortCause().

◆ hasInstCount()

bool gem5::Request::hasInstCount ( ) const
inline

Accessor for instruction count.

Definition at line 648 of file request.hh.

References gem5::Flags< T >::isSet(), privateFlags, and VALID_INST_COUNT.

Referenced by getInstCount().

◆ hasInstSeqNum()

bool gem5::Request::hasInstSeqNum ( ) const
inline

Accessor for the sequence number of instruction that creates the request.

Definition at line 992 of file request.hh.

References gem5::Flags< T >::isSet(), privateFlags, and VALID_INST_SEQ_NUM.

Referenced by getReqInstSeqNum().

◆ hasPaddr()

bool gem5::Request::hasPaddr ( ) const
inline

◆ hasPC()

bool gem5::Request::hasPC ( ) const
inline

Definition at line 954 of file request.hh.

References gem5::Flags< T >::isSet(), privateFlags, and VALID_PC.

Referenced by getPC().

◆ hasSize()

bool gem5::Request::hasSize ( ) const
inline

Accessor for size.

Definition at line 686 of file request.hh.

References gem5::Flags< T >::isSet(), privateFlags, and VALID_SIZE.

Referenced by getSize().

◆ hasStreamId()

bool gem5::Request::hasStreamId ( ) const
inline

Definition at line 921 of file request.hh.

References gem5::Flags< T >::isSet(), privateFlags, and VALID_STREAM_ID.

Referenced by setSubstreamId(), and streamId().

◆ hasSubstreamId()

bool gem5::Request::hasSubstreamId ( ) const
inline

Definition at line 934 of file request.hh.

References gem5::Flags< T >::isSet(), privateFlags, and VALID_SUBSTREAM_ID.

Referenced by substreamId().

◆ hasVaddr()

bool gem5::Request::hasVaddr ( ) const
inline

◆ incAccessDepth()

void gem5::Request::incAccessDepth ( ) const
inline

Increment/Get the depth at which this request is responded to.

This currently happens when the request misses in any cache level.

Definition at line 971 of file request.hh.

References depth.

◆ isAcquire()

bool gem5::Request::isAcquire ( ) const
inline

Definition at line 1080 of file request.hh.

References _cacheCoherenceFlags, ACQUIRE, and gem5::Flags< T >::isSet().

◆ isAtomic()

bool gem5::Request::isAtomic ( ) const
inline

Definition at line 1063 of file request.hh.

References _flags, ATOMIC_NO_RETURN_OP, ATOMIC_RETURN_OP, and gem5::Flags< T >::isSet().

◆ isAtomicNoReturn()

bool gem5::Request::isAtomicNoReturn ( ) const
inline

Definition at line 1037 of file request.hh.

References _flags, ATOMIC_NO_RETURN_OP, and gem5::Flags< T >::isSet().

◆ isAtomicReturn()

bool gem5::Request::isAtomicReturn ( ) const
inline

Definition at line 1036 of file request.hh.

References _flags, ATOMIC_RETURN_OP, and gem5::Flags< T >::isSet().

◆ isCacheClean()

bool gem5::Request::isCacheClean ( ) const
inline

Accessor functions to determine whether this request is part of a cache maintenance operation.

At the moment three operations are supported:

1) A cache clean operation updates all copies of a memory location to the point of reference, 2) A cache invalidate operation invalidates all copies of the specified block in the memory above the point of reference, 3) A clean and invalidate operation is a combination of the two operations.

Definition at line 1119 of file request.hh.

References _flags, CLEAN, and gem5::Flags< T >::isSet().

◆ isCacheInvalidate()

bool gem5::Request::isCacheInvalidate ( ) const
inline

Definition at line 1120 of file request.hh.

References _flags, INVALIDATE, and gem5::Flags< T >::isSet().

◆ isCacheMaintenance()

bool gem5::Request::isCacheMaintenance ( ) const
inline

Definition at line 1121 of file request.hh.

References _flags, CLEAN, INVALIDATE, and gem5::Flags< T >::isSet().

◆ isCondSwap()

bool gem5::Request::isCondSwap ( ) const
inline

Definition at line 1026 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), and MEM_SWAP_COND.

◆ isGL2CacheFlush()

bool gem5::Request::isGL2CacheFlush ( ) const
inline

Definition at line 1102 of file request.hh.

References _cacheCoherenceFlags, FLUSH_L2, and gem5::Flags< T >::isSet().

◆ isGLCSet()

bool gem5::Request::isGLCSet ( ) const
inline

Accessor functions for the cache bypass flags.

The cache bypass can specify which levels in the hierarchy to bypass. If GLC_BIT is set, the requests are globally coherent and bypass TCP. If SLC_BIT is set, then the requests are system level coherent and bypass both TCP and TCC.

Definition at line 1090 of file request.hh.

References _cacheCoherenceFlags, GLC_BIT, and gem5::Flags< T >::isSet().

◆ isHTMAbort()

bool gem5::Request::isHTMAbort ( ) const
inline

Definition at line 1042 of file request.hh.

References _flags, HTM_ABORT, and gem5::Flags< T >::isSet().

Referenced by isHTMCmd(), and setHtmAbortCause().

◆ isHTMCancel()

bool gem5::Request::isHTMCancel ( ) const
inline

Definition at line 1041 of file request.hh.

References _flags, HTM_CANCEL, and gem5::Flags< T >::isSet().

Referenced by isHTMCmd().

◆ isHTMCmd()

bool gem5::Request::isHTMCmd ( ) const
inline

Definition at line 1044 of file request.hh.

References isHTMAbort(), isHTMCancel(), isHTMCommit(), and isHTMStart().

Referenced by isMemMgmt().

◆ isHTMCommit()

bool gem5::Request::isHTMCommit ( ) const
inline

Definition at line 1040 of file request.hh.

References _flags, HTM_COMMIT, and gem5::Flags< T >::isSet().

Referenced by isHTMCmd().

◆ isHTMStart()

bool gem5::Request::isHTMStart ( ) const
inline

Definition at line 1039 of file request.hh.

References _flags, HTM_START, and gem5::Flags< T >::isSet().

Referenced by isHTMCmd().

◆ isInstFetch()

bool gem5::Request::isInstFetch ( ) const
inline

Definition at line 1015 of file request.hh.

References _flags, INST_FETCH, and gem5::Flags< T >::isSet().

◆ isInvL1()

bool gem5::Request::isInvL1 ( ) const
inline

Accessor functions for the memory space configuration flags and used by GPU ISAs such as the Heterogeneous System Architecture (HSA).

Note that setting extraFlags should be done via setCacheCoherenceFlags().

Definition at line 1098 of file request.hh.

References _cacheCoherenceFlags, INV_L1, and gem5::Flags< T >::isSet().

◆ isInvL2()

bool gem5::Request::isInvL2 ( ) const
inline

Definition at line 1099 of file request.hh.

References _cacheCoherenceFlags, GL2_CACHE_INV, and gem5::Flags< T >::isSet().

◆ isKernel()

bool gem5::Request::isKernel ( ) const
inline

Definition at line 1035 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), and KERNEL.

◆ isLLSC()

bool gem5::Request::isLLSC ( ) const
inline

Definition at line 1022 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), and LLSC.

◆ isLocalAccess()

bool gem5::Request::isLocalAccess ( )
inline

Is this request for a local memory mapped resource/register?

Definition at line 734 of file request.hh.

References _localAccessor.

◆ isLockedRMW()

bool gem5::Request::isLockedRMW ( ) const
inline

Definition at line 1024 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), and LOCKED_RMW.

◆ isMasked()

bool gem5::Request::isMasked ( ) const
inline

Returns true if the memory request is masked, which means there is at least one byteEnable element which is false (byte is masked)

Definition at line 717 of file request.hh.

References _byteEnable.

◆ isMemMgmt()

bool gem5::Request::isMemMgmt ( ) const
inline

Definition at line 1060 of file request.hh.

References isHTMCmd(), and isTlbiCmd().

◆ isPrefetch()

bool gem5::Request::isPrefetch ( ) const
inline

Definition at line 1017 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), PF_EXCLUSIVE, and PREFETCH.

◆ isPrefetchEx()

bool gem5::Request::isPrefetchEx ( ) const
inline

Definition at line 1021 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), and PF_EXCLUSIVE.

◆ isPriv()

bool gem5::Request::isPriv ( ) const
inline

Definition at line 1023 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), and PRIVILEGED.

◆ isPTWalk()

bool gem5::Request::isPTWalk ( ) const
inline

Definition at line 1033 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), and PT_WALK.

◆ isReadModifyWrite()

bool gem5::Request::isReadModifyWrite ( ) const
inline

Definition at line 1028 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), LOCKED_RMW, and READ_MODIFY_WRITE.

◆ isRelease()

bool gem5::Request::isRelease ( ) const
inline

Definition at line 1034 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), and RELEASE.

◆ isSecure()

bool gem5::Request::isSecure ( ) const
inline

Definition at line 1032 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), and SECURE.

◆ isSLCSet()

bool gem5::Request::isSLCSet ( ) const
inline

Definition at line 1091 of file request.hh.

References _cacheCoherenceFlags, gem5::Flags< T >::isSet(), and SLC_BIT.

◆ isStrictlyOrdered()

bool gem5::Request::isStrictlyOrdered ( ) const
inline

Definition at line 1014 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), and STRICT_ORDER.

◆ isSwap()

bool gem5::Request::isSwap ( ) const
inline

Definition at line 1025 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), MEM_SWAP, and MEM_SWAP_COND.

◆ isTlbi()

bool gem5::Request::isTlbi ( ) const
inline

Definition at line 1050 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), and TLBI.

Referenced by isTlbiCmd().

◆ isTlbiCmd()

bool gem5::Request::isTlbiCmd ( ) const
inline

Definition at line 1055 of file request.hh.

References isTlbi(), isTlbiExtSync(), isTlbiExtSyncComp(), and isTlbiSync().

Referenced by isMemMgmt().

◆ isTlbiExtSync()

bool gem5::Request::isTlbiExtSync ( ) const
inline

Definition at line 1052 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), and TLBI_EXT_SYNC.

Referenced by isTlbiCmd().

◆ isTlbiExtSyncComp()

bool gem5::Request::isTlbiExtSyncComp ( ) const
inline

Definition at line 1053 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), and TLBI_EXT_SYNC_COMP.

Referenced by isTlbiCmd().

◆ isTlbiSync()

bool gem5::Request::isTlbiSync ( ) const
inline

Definition at line 1051 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), and TLBI_SYNC.

Referenced by isTlbiCmd().

◆ isToPOC()

bool gem5::Request::isToPOC ( ) const
inline

Definition at line 1077 of file request.hh.

References _flags, DST_POC, and gem5::Flags< T >::isSet().

◆ isToPOU()

bool gem5::Request::isToPOU ( ) const
inline

Accessor functions for the destination of a memory request.

The destination flag can specify a point of reference for the operation (e.g. a cache block clean to the the point of unification). At the moment the destination is only used by the cache maintenance operations.

Definition at line 1076 of file request.hh.

References _flags, DST_POU, and gem5::Flags< T >::isSet().

◆ isUncacheable()

bool gem5::Request::isUncacheable ( ) const
inline

Accessor functions for flags.

Note that these are for testing only; setting flags should be done via setFlags().

Definition at line 1013 of file request.hh.

References _flags, gem5::Flags< T >::isSet(), and UNCACHEABLE.

◆ localAccessor()

Cycles gem5::Request::localAccessor ( ThreadContext * tc,
Packet * pkt )
inline

Perform the installed local access.

Definition at line 739 of file request.hh.

References _localAccessor.

◆ requestorId() [1/2]

RequestorID gem5::Request::requestorId ( ) const
inline

Accesssor for the requestor id.

Definition at line 849 of file request.hh.

References _requestorId.

◆ requestorId() [2/2]

void gem5::Request::requestorId ( RequestorID rid)
inline

Definition at line 855 of file request.hh.

References _requestorId.

◆ setAccessLatency()

void gem5::Request::setAccessLatency ( )
inline

Set/Get the time taken to complete this request's access, not including the time to successfully translate the request.

Definition at line 984 of file request.hh.

References _time, accessDelta, gem5::curTick(), and translateDelta.

◆ setAtomicOpFunctor()

void gem5::Request::setAtomicOpFunctor ( AtomicOpFunctorPtr amo_op)
inline

Definition at line 761 of file request.hh.

References atomicOpFunctor.

◆ setByteEnable()

void gem5::Request::setByteEnable ( const std::vector< bool > & be)
inline

Definition at line 705 of file request.hh.

References _byteEnable, _size, and gem5::MipsISA::be.

◆ setCacheCoherenceFlags()

void gem5::Request::setCacheCoherenceFlags ( CacheCoherenceFlags extraFlags)
inline

Definition at line 818 of file request.hh.

References _cacheCoherenceFlags, hasPaddr(), hasVaddr(), and gem5::Flags< T >::set().

◆ setContext()

void gem5::Request::setContext ( ContextID context_id)
inline

Set up Context numbers.

Definition at line 546 of file request.hh.

References _contextId, privateFlags, gem5::Flags< T >::set(), and VALID_CONTEXT_ID.

Referenced by Request().

◆ setExtraData()

void gem5::Request::setExtraData ( uint64_t extraData)
inline

Accessor function for store conditional return value.

Definition at line 896 of file request.hh.

References _extraData, privateFlags, gem5::Flags< T >::set(), and VALID_EXTRA_DATA.

◆ setFlags()

void gem5::Request::setFlags ( Flags flags)
inline

Note that unlike other accessors, this function sets specific flags (ORs them in); it does not assign its argument to the _flags field.

Thus this method should rightly be called setFlags() and not just flags().

Definition at line 804 of file request.hh.

References _flags, flags, hasPaddr(), hasVaddr(), and gem5::Flags< T >::set().

◆ setHtmAbortCause()

void gem5::Request::setHtmAbortCause ( HtmFailureFaultCause val)
inline

◆ setInstCount()

void gem5::Request::setInstCount ( Counter val)
inline

◆ setLocalAccessor()

void gem5::Request::setLocalAccessor ( LocalAccessor acc)
inline

Set the function which will enact that access.

Definition at line 736 of file request.hh.

References _localAccessor.

◆ setPaddr()

void gem5::Request::setPaddr ( Addr paddr)
inline

Set just the physical address.

This usually used to record the result of a translation.

Definition at line 597 of file request.hh.

References _paddr, privateFlags, gem5::Flags< T >::set(), and VALID_PADDR.

◆ setPC()

void gem5::Request::setPC ( Addr pc)
inline

Definition at line 947 of file request.hh.

References _pc, gem5::MipsISA::pc, privateFlags, gem5::Flags< T >::set(), and VALID_PC.

◆ setReqInstSeqNum()

void gem5::Request::setReqInstSeqNum ( const InstSeqNum seq_num)
inline

Definition at line 1005 of file request.hh.

References _reqInstSeqNum, privateFlags, gem5::Flags< T >::set(), and VALID_INST_SEQ_NUM.

◆ setStreamId()

void gem5::Request::setStreamId ( uint32_t sid)
inline

Definition at line 553 of file request.hh.

References _streamId, privateFlags, gem5::Flags< T >::set(), and VALID_STREAM_ID.

◆ setSubstreamId()

void gem5::Request::setSubstreamId ( uint32_t ssid)
inline

◆ setSystemReq()

void gem5::Request::setSystemReq ( bool sysReq)
inline

Definition at line 917 of file request.hh.

References _systemReq.

◆ setTranslateLatency()

void gem5::Request::setTranslateLatency ( )
inline

Set/Get the time taken for this request to be successfully translated.

Definition at line 977 of file request.hh.

References _time, gem5::curTick(), and translateDelta.

◆ setVirt()

void gem5::Request::setVirt ( Addr vaddr,
unsigned size,
Flags flags,
RequestorID id,
Addr pc,
AtomicOpFunctorPtr amo_op = nullptr )
inline

◆ splitOnVaddr()

void gem5::Request::splitOnVaddr ( Addr split_addr,
RequestPtr & req1,
RequestPtr & req2 )
inline

Generate two requests as if this request had been split into two pieces.

The original request can't have been translated already.

Definition at line 610 of file request.hh.

References _byteEnable, _size, _vaddr, hasPaddr(), and hasVaddr().

◆ streamId()

uint32_t gem5::Request::streamId ( ) const
inline

Definition at line 927 of file request.hh.

References _streamId, and hasStreamId().

◆ substreamId()

uint32_t gem5::Request::substreamId ( ) const
inline

Definition at line 940 of file request.hh.

References _substreamId, and hasSubstreamId().

◆ systemReq()

bool gem5::Request::systemReq ( ) const
inline

Definition at line 918 of file request.hh.

References _systemReq.

◆ taskId() [1/2]

uint32_t gem5::Request::taskId ( ) const
inline

Definition at line 861 of file request.hh.

References _taskId.

◆ taskId() [2/2]

void gem5::Request::taskId ( uint32_t id)
inline

Definition at line 867 of file request.hh.

References _taskId, and gem5::ArmISA::id.

◆ time()

Tick gem5::Request::time ( ) const
inline

Accessor for time.

Definition at line 727 of file request.hh.

References _time, hasPaddr(), and hasVaddr().

Member Data Documentation

◆ _byteEnable

std::vector<bool> gem5::Request::_byteEnable
private

Byte-enable mask for writes.

Definition at line 396 of file request.hh.

Referenced by getByteEnable(), isMasked(), Request(), Request(), setByteEnable(), and splitOnVaddr().

◆ _cacheCoherenceFlags

CacheCoherenceFlags gem5::Request::_cacheCoherenceFlags
private

Flags that control how downstream cache system maintains coherence.

Definition at line 407 of file request.hh.

Referenced by clearCacheCoherenceFlags(), isAcquire(), isGL2CacheFlush(), isGLCSet(), isInvL1(), isInvL2(), isSLCSet(), and setCacheCoherenceFlags().

◆ _contextId

ContextID gem5::Request::_contextId = InvalidContextID
private

The context ID (for statistics, locks, and wakeups).

Definition at line 454 of file request.hh.

Referenced by contextId(), and setContext().

◆ _extraData

uint64_t gem5::Request::_extraData = 0
private

Extra data for the request, such as the return value of store conditional or the compare value for a CAS.

Definition at line 451 of file request.hh.

Referenced by getExtraData(), and setExtraData().

◆ _flags

◆ _htmAbortCause

HtmFailureFaultCause gem5::Request::_htmAbortCause = HtmFailureFaultCause::INVALID
private

The cause for HTM transaction abort.

Definition at line 471 of file request.hh.

Referenced by getHtmAbortCause(), and setHtmAbortCause().

◆ _instCount

Counter gem5::Request::_instCount = 0
private

The instruction count at the time this request is created.

Definition at line 468 of file request.hh.

Referenced by getInstCount(), and setInstCount().

◆ _localAccessor

LocalAccessor gem5::Request::_localAccessor
private

Definition at line 465 of file request.hh.

Referenced by isLocalAccess(), localAccessor(), setLocalAccessor(), and setVirt().

◆ _paddr

Addr gem5::Request::_paddr = 0
private

The physical address of the request.

Valid only if validPaddr is set.

Definition at line 386 of file request.hh.

Referenced by getPaddr(), and setPaddr().

◆ _pc

Addr gem5::Request::_pc = MaxAddr
private

program counter of initiating access; for tracing/debugging

Definition at line 457 of file request.hh.

Referenced by getPC(), setPC(), and setVirt().

◆ _reqInstSeqNum

InstSeqNum gem5::Request::_reqInstSeqNum = 0
private

Sequence number of the instruction that creates the request.

Definition at line 460 of file request.hh.

Referenced by getReqInstSeqNum(), and setReqInstSeqNum().

◆ _requestorId

RequestorID gem5::Request::_requestorId = invldRequestorId
private

The requestor ID which is unique in the system for all ports that are capable of issuing a transaction.

Definition at line 401 of file request.hh.

Referenced by requestorId(), requestorId(), and setVirt().

◆ _size

unsigned gem5::Request::_size = 0
private

The size of the request.

This field must be set when vaddr or paddr is written via setVirt() or a phys basec constructor, so it is always valid as long as one of the address fields is valid.

Definition at line 393 of file request.hh.

Referenced by getSize(), setByteEnable(), setVirt(), and splitOnVaddr().

◆ _streamId

uint32_t gem5::Request::_streamId = 0
private

The stream ID uniquely identifies a device behind the SMMU/IOMMU Each transaction arriving at the SMMU/IOMMU is associated with exactly one stream ID.

Definition at line 429 of file request.hh.

Referenced by setStreamId(), and streamId().

◆ _substreamId

uint32_t gem5::Request::_substreamId = 0
private

The substream ID identifies an "execution context" within a device behind an SMMU/IOMMU.

It's intended to map 1-to-1 to PCIe PASID (Process Address Space ID). The presence of a substream ID is optional.

Definition at line 437 of file request.hh.

Referenced by setSubstreamId(), and substreamId().

◆ _systemReq

bool gem5::Request::_systemReq = 0
private

For fullsystem GPU simulation, this determines if a requests destination is system (host) memory or dGPU (device) memory.

Definition at line 443 of file request.hh.

Referenced by setSystemReq(), and systemReq().

◆ _taskId

uint32_t gem5::Request::_taskId = context_switch_task_id::Unknown
private

The task id associated with this request.

Definition at line 422 of file request.hh.

Referenced by taskId(), and taskId().

◆ _time

Tick gem5::Request::_time = MaxTick
private

The time this request was started.

Used to calculate latencies. This field is set to curTick() any time paddr or vaddr is written.

Definition at line 417 of file request.hh.

Referenced by setAccessLatency(), setTranslateLatency(), setVirt(), and time().

◆ _vaddr

Addr gem5::Request::_vaddr = MaxAddr
private

The virtual address of the request.

Definition at line 446 of file request.hh.

Referenced by getVaddr(), setVirt(), and splitOnVaddr().

◆ accessDelta

Tick gem5::Request::accessDelta = 0

Access latency to complete this memory transaction not including translation time.

Definition at line 674 of file request.hh.

Referenced by getAccessLatency(), setAccessLatency(), and setVirt().

◆ atomicOpFunctor

AtomicOpFunctorPtr gem5::Request::atomicOpFunctor = nullptr
private

A pointer to an atomic operation.

Definition at line 463 of file request.hh.

Referenced by getAtomicOpFunctor(), hasAtomicOpFunctor(), Request(), setAtomicOpFunctor(), and setVirt().

◆ depth

int gem5::Request::depth = 0
mutable

Level of the cache hierachy where this request was responded to (e.g.

0 = L1; 1 = L2).

Definition at line 680 of file request.hh.

Referenced by getAccessDepth(), incAccessDepth(), and setVirt().

◆ HTM_CMD

const FlagsType gem5::Request::HTM_CMD
static
Initial value:
@ HTM_COMMIT
The request commits a HTM transaction.
Definition request.hh:210
@ HTM_ABORT
The request aborts a HTM transaction.
Definition request.hh:216
@ HTM_CANCEL
The request cancels a HTM transaction.
Definition request.hh:213
@ HTM_START
hardware transactional memory
Definition request.hh:207

Definition at line 263 of file request.hh.

Referenced by gem5::o3::LSQ::pushRequest().

◆ privateFlags

◆ STORE_NO_DATA

const FlagsType gem5::Request::STORE_NO_DATA
static
Initial value:
@ INVALIDATE
The request invalidates a memory location.
Definition request.hh:191
@ CLEAN
The request cleans a memory location.
Definition request.hh:193
@ CACHE_BLOCK_ZERO
This is a write that is targeted and zeroing an entire cache block.
Definition request.hh:143

Definition at line 260 of file request.hh.

Referenced by gem5::minor::LSQ::pushRequest(), gem5::o3::LSQUnit::write(), gem5::AtomicSimpleCPU::writeMem(), gem5::CheckerCPU::writeMem(), and gem5::TimingSimpleCPU::writeMem().

◆ TLBI_CMD

const FlagsType gem5::Request::TLBI_CMD
static
Initial value:
@ TLBI
The Request is a TLB shootdown.
Definition request.hh:241
@ TLBI_EXT_SYNC
The Request tells the CPU model that a remote TLB Sync has been requested.
Definition request.hh:248
@ TLBI_EXT_SYNC_COMP
The Request tells the interconnect that a remote TLB Sync request has completed.
Definition request.hh:252
@ TLBI_SYNC
The Request is a TLB shootdown sync.
Definition request.hh:244

Definition at line 266 of file request.hh.

Referenced by gem5::o3::LSQ::pushRequest().

◆ translateDelta

Tick gem5::Request::translateDelta = 0

Time for the TLB/table walker to successfully translate this request.

Definition at line 668 of file request.hh.

Referenced by getTranslateLatency(), setAccessLatency(), setTranslateLatency(), and setVirt().


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

Generated on Tue Jun 18 2024 16:24:14 for gem5 by doxygen 1.11.0