gem5  v20.0.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Private Types | Private Attributes | List of all members
Request Class Reference

#include <request.hh>

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,
  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, STICKY_FLAGS = INST_FETCH
}
 
enum  : MemSpaceConfigFlagsType {
  SCOPE_VALID = 0x00000001, WAVEFRONT_SCOPE = 0x00000002, WORKGROUP_SCOPE = 0x00000004, DEVICE_SCOPE = 0x00000008,
  SYSTEM_SCOPE = 0x00000010, GLOBAL_SEGMENT = 0x00000020, GROUP_SEGMENT = 0x00000040, PRIVATE_SEGMENT = 0x00000080,
  KERNARG_SEGMENT = 0x00000100, READONLY_SEGMENT = 0x00000200, SPILL_SEGMENT = 0x00000400, ARG_SEGMENT = 0x00000800
}
 
typedef uint64_t FlagsType
 
typedef uint8_t ArchFlagsType
 
typedef ::Flags< FlagsTypeFlags
 
typedef uint32_t MemSpaceConfigFlagsType
 
typedef ::Flags< MemSpaceConfigFlagsTypeMemSpaceConfigFlags
 
using LocalAccessor = std::function< Cycles(ThreadContext *tc, Packet *pkt)>
 
enum  : MasterID { wbMasterId = 0, funcMasterId = 1, intMasterId = 2, invldMasterId = std::numeric_limits<MasterID>::max() }
 Master Ids that are statically allocated. More...
 

Public Member Functions

 Request ()
 Minimal constructor. More...
 
 Request (Addr paddr, unsigned size, Flags flags, MasterID mid)
 Constructor for physical (e.g. More...
 
 Request (Addr vaddr, unsigned size, Flags flags, MasterID mid, Addr pc, ContextID cid, AtomicOpFunctorPtr atomic_op=nullptr)
 
 Request (const Request &other)
 
 ~Request ()
 
void setContext (ContextID context_id)
 Set up Context numbers. More...
 
void setStreamId (uint32_t sid)
 
void setSubStreamId (uint32_t ssid)
 
void setVirt (Addr vaddr, unsigned size, Flags flags, MasterID mid, Addr pc, AtomicOpFunctorPtr amo_op=nullptr)
 Set up a virtual (e.g., CPU) request in a previously allocated Request object. More...
 
void setPaddr (Addr paddr)
 Set just the physical address. More...
 
void splitOnVaddr (Addr split_addr, RequestPtr &req1, RequestPtr &req2)
 Generate two requests as if this request had been split into two pieces. More...
 
bool hasPaddr () const
 Accessor for paddr. More...
 
Addr getPaddr () const
 
bool hasSize () const
 Accessor for size. More...
 
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) More...
 
Tick time () const
 Accessor for time. More...
 
bool isLocalAccess ()
 Is this request for a local memory mapped resource/register? More...
 
void setLocalAccessor (LocalAccessor acc)
 Set the function which will enact that access. More...
 
Cycles localAccessor (ThreadContext *tc, Packet *pkt)
 Perform the installed local access. More...
 
bool hasAtomicOpFunctor ()
 Accessor for atomic-op functor. More...
 
AtomicOpFunctorgetAtomicOpFunctor ()
 
Flags getFlags ()
 Accessor for flags. More...
 
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. More...
 
void setMemSpaceConfigFlags (MemSpaceConfigFlags extraFlags)
 
bool hasVaddr () const
 Accessor function for vaddr. More...
 
Addr getVaddr () const
 
MasterID masterId () const
 Accesssor for the requestor id. More...
 
uint32_t taskId () const
 
void taskId (uint32_t id)
 
ArchFlagsType getArchFlags () const
 Accessor function for architecture-specific flags. More...
 
bool extraDataValid () const
 Accessor function to check if sc result is valid. More...
 
uint64_t getExtraData () const
 Accessor function for store conditional return value. More...
 
void setExtraData (uint64_t extraData)
 Accessor function for store conditional return value. More...
 
bool hasContextId () const
 
ContextID contextId () const
 Accessor function for context ID. More...
 
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. More...
 
void incAccessDepth () const
 Increment/Get the depth at which this request is responded to. More...
 
int getAccessDepth () const
 
void setTranslateLatency ()
 Set/Get the time taken for this request to be successfully translated. More...
 
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. More...
 
Tick getAccessLatency () const
 
bool hasInstSeqNum () const
 Accessor for the sequence number of instruction that creates the request. More...
 
InstSeqNum getReqInstSeqNum () const
 
void setReqInstSeqNum (const InstSeqNum seq_num)
 
bool isUncacheable () const
 Accessor functions for flags. More...
 
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 isSecure () const
 
bool isPTWalk () const
 
bool isAcquire () const
 
bool isRelease () const
 
bool isKernel () const
 
bool isAtomicReturn () const
 
bool isAtomicNoReturn () const
 
bool isAtomic () const
 
bool isToPOU () const
 Accessor functions for the destination of a memory request. More...
 
bool isToPOC () const
 
Flags getDest () const
 
bool isScoped () const
 Accessor functions for the memory space configuration flags and used by GPU ISAs such as the Heterogeneous System Architecture (HSA). More...
 
bool isWavefrontScope () const
 
bool isWorkgroupScope () const
 
bool isDeviceScope () const
 
bool isSystemScope () const
 
bool isGlobalSegment () const
 
bool isGroupSegment () const
 
bool isPrivateSegment () const
 
bool isKernargSegment () const
 
bool isReadonlySegment () const
 
bool isSpillSegment () const
 
bool isArgSegment () const
 
bool isCacheClean () const
 Accessor functions to determine whether this request is part of a cache maintenance operation. More...
 
bool isCacheInvalidate () const
 
bool isCacheMaintenance () const
 

Public Attributes

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

Static Public Attributes

static const FlagsType STORE_NO_DATA
 

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, STICKY_PRIVATE_FLAGS = VALID_CONTEXT_ID
}
 
typedef uint16_t PrivateFlagsType
 
typedef ::Flags< PrivateFlagsTypePrivateFlags
 

Private Attributes

Addr _paddr = 0
 The physical address of the request. More...
 
unsigned _size = 0
 The size of the request. More...
 
std::vector< bool > _byteEnable
 Byte-enable mask for writes. More...
 
MasterID _masterId = invldMasterId
 The requestor ID which is unique in the system for all ports that are capable of issuing a transaction. More...
 
Flags _flags
 Flag structure for the request. More...
 
MemSpaceConfigFlags _memSpaceConfigFlags
 Memory space configuraiton flag structure for the request. More...
 
PrivateFlags privateFlags
 Private flags for field validity checking. More...
 
Tick _time = MaxTick
 The time this request was started. More...
 
uint32_t _taskId = ContextSwitchTaskId::Unknown
 The task id associated with this request. More...
 
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. More...
 
uint32_t _substreamId = 0
 The substream ID identifies an "execution context" within a device behind an SMMU/IOMMU. More...
 
Addr _vaddr = MaxAddr
 The virtual address of the request. More...
 
uint64_t _extraData = 0
 Extra data for the request, such as the return value of store conditional or the compare value for a CAS. More...
 
ContextID _contextId = InvalidContextID
 The context ID (for statistics, locks, and wakeups). More...
 
Addr _pc = MaxAddr
 program counter of initiating access; for tracing/debugging More...
 
InstSeqNum _reqInstSeqNum = 0
 Sequence number of the instruction that creates the request. More...
 
AtomicOpFunctorPtr atomicOpFunctor = nullptr
 A pointer to an atomic operation. More...
 
LocalAccessor _localAccessor
 

Detailed Description

Definition at line 86 of file request.hh.

Member Typedef Documentation

◆ ArchFlagsType

typedef uint8_t Request::ArchFlagsType

Definition at line 90 of file request.hh.

◆ Flags

Definition at line 91 of file request.hh.

◆ FlagsType

typedef uint64_t Request::FlagsType

Definition at line 89 of file request.hh.

◆ LocalAccessor

using Request::LocalAccessor = std::function<Cycles(ThreadContext *tc, Packet *pkt)>

Definition at line 251 of file request.hh.

◆ MemSpaceConfigFlags

Definition at line 220 of file request.hh.

◆ MemSpaceConfigFlagsType

Definition at line 219 of file request.hh.

◆ PrivateFlags

Definition at line 255 of file request.hh.

◆ PrivateFlagsType

typedef uint16_t Request::PrivateFlagsType
private

Definition at line 254 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 
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.

STICKY_FLAGS 

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

Definition at line 93 of file request.hh.

◆ anonymous enum

anonymous enum : MasterID

Master Ids that are statically allocated.

Enumerator
wbMasterId 

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

funcMasterId 

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

intMasterId 

This master id is used for message signaled interrupts.

invldMasterId 

Invalid master id for assertion checking only.

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

Definition at line 201 of file request.hh.

◆ anonymous enum

anonymous enum : MemSpaceConfigFlagsType
Enumerator
SCOPE_VALID 

Has a synchronization scope been set?

WAVEFRONT_SCOPE 

Access has Wavefront scope visibility.

WORKGROUP_SCOPE 

Access has Workgroup scope visibility.

DEVICE_SCOPE 

Access has Device (e.g., GPU) scope visibility.

SYSTEM_SCOPE 

Access has System (e.g., CPU + GPU) scope visibility.

GLOBAL_SEGMENT 

Global Segment.

GROUP_SEGMENT 

Group Segment.

PRIVATE_SEGMENT 

Private Segment.

KERNARG_SEGMENT 

Kergarg Segment.

READONLY_SEGMENT 

Readonly Segment.

SPILL_SEGMENT 

Spill Segment.

ARG_SEGMENT 

Arg Segment.

Definition at line 222 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 
STICKY_PRIVATE_FLAGS 

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

Definition at line 257 of file request.hh.

Constructor & Destructor Documentation

◆ Request() [1/4]

Request::Request ( )
inline

Minimal constructor.

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

Definition at line 370 of file request.hh.

◆ Request() [2/4]

Request::Request ( Addr  paddr,
unsigned  size,
Flags  flags,
MasterID  mid 
)
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 377 of file request.hh.

References Flags< T >::set().

◆ Request() [3/4]

Request::Request ( Addr  vaddr,
unsigned  size,
Flags  flags,
MasterID  mid,
Addr  pc,
ContextID  cid,
AtomicOpFunctorPtr  atomic_op = nullptr 
)
inline

Definition at line 384 of file request.hh.

◆ Request() [4/4]

Request::Request ( const Request other)
inline

Definition at line 392 of file request.hh.

References atomicOpFunctor.

◆ ~Request()

Request::~Request ( )
inline

Definition at line 411 of file request.hh.

Member Function Documentation

◆ contextId()

ContextID Request::contextId ( ) const
inline

Accessor function for context ID.

Definition at line 709 of file request.hh.

References Flags< T >::isSet().

◆ extraDataValid()

bool Request::extraDataValid ( ) const
inline

Accessor function to check if sc result is valid.

Definition at line 680 of file request.hh.

References Flags< T >::isSet().

◆ getAccessDepth()

int Request::getAccessDepth ( ) const
inline

Definition at line 761 of file request.hh.

◆ getAccessLatency()

Tick Request::getAccessLatency ( ) const
inline

Definition at line 774 of file request.hh.

◆ getArchFlags()

ArchFlagsType Request::getArchFlags ( ) const
inline

Accessor function for architecture-specific flags.

Definition at line 672 of file request.hh.

References Flags< T >::isSet().

◆ getAtomicOpFunctor()

AtomicOpFunctor* Request::getAtomicOpFunctor ( )
inline

Definition at line 606 of file request.hh.

◆ getByteEnable()

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

Definition at line 551 of file request.hh.

◆ getDest()

Flags Request::getDest ( ) const
inline

Definition at line 837 of file request.hh.

◆ getExtraData()

uint64_t Request::getExtraData ( ) const
inline

Accessor function for store conditional return value.

Definition at line 687 of file request.hh.

References Flags< T >::isSet().

◆ getFlags()

Flags Request::getFlags ( )
inline

Accessor for flags.

Definition at line 614 of file request.hh.

References Flags< T >::isSet().

◆ getPaddr()

Addr Request::getPaddr ( ) const
inline

Definition at line 511 of file request.hh.

References Flags< T >::isSet().

◆ getPC()

Addr Request::getPC ( ) const
inline

Accessor function for pc.

Definition at line 750 of file request.hh.

References Flags< T >::isSet().

◆ getReqInstSeqNum()

InstSeqNum Request::getReqInstSeqNum ( ) const
inline

Definition at line 787 of file request.hh.

References Flags< T >::isSet().

◆ getSize()

unsigned Request::getSize ( ) const
inline

Definition at line 544 of file request.hh.

References Flags< T >::isSet().

◆ getTranslateLatency()

Tick Request::getTranslateLatency ( ) const
inline

Definition at line 767 of file request.hh.

◆ getVaddr()

Addr Request::getVaddr ( ) const
inline

Definition at line 646 of file request.hh.

References Flags< T >::isSet().

◆ hasAtomicOpFunctor()

bool Request::hasAtomicOpFunctor ( )
inline

Accessor for atomic-op functor.

Definition at line 600 of file request.hh.

◆ hasContextId()

bool Request::hasContextId ( ) const
inline

Definition at line 702 of file request.hh.

References Flags< T >::isSet().

◆ hasInstSeqNum()

bool Request::hasInstSeqNum ( ) const
inline

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

Definition at line 781 of file request.hh.

References Flags< T >::isSet().

◆ hasPaddr()

bool Request::hasPaddr ( ) const
inline

Accessor for paddr.

Definition at line 505 of file request.hh.

References Flags< T >::isSet().

◆ hasPC()

bool Request::hasPC ( ) const
inline

Definition at line 743 of file request.hh.

References Flags< T >::isSet().

◆ hasSize()

bool Request::hasSize ( ) const
inline

Accessor for size.

Definition at line 538 of file request.hh.

References Flags< T >::isSet().

◆ hasSubstreamId()

bool Request::hasSubstreamId ( ) const
inline

Definition at line 723 of file request.hh.

References Flags< T >::isSet().

◆ hasVaddr()

bool Request::hasVaddr ( ) const
inline

Accessor function for vaddr.

Definition at line 640 of file request.hh.

References Flags< T >::isSet().

◆ incAccessDepth()

void 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 760 of file request.hh.

◆ isAcquire()

bool Request::isAcquire ( ) const
inline

Definition at line 815 of file request.hh.

References Flags< T >::isSet().

◆ isArgSegment()

bool Request::isArgSegment ( ) const
inline

Definition at line 915 of file request.hh.

References Flags< T >::isSet().

◆ isAtomic()

bool Request::isAtomic ( ) const
inline

Definition at line 822 of file request.hh.

References Flags< T >::isSet().

◆ isAtomicNoReturn()

bool Request::isAtomicNoReturn ( ) const
inline

Definition at line 819 of file request.hh.

References Flags< T >::isSet().

◆ isAtomicReturn()

bool Request::isAtomicReturn ( ) const
inline

Definition at line 818 of file request.hh.

References Flags< T >::isSet().

◆ isCacheClean()

bool 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 932 of file request.hh.

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

◆ isCacheInvalidate()

bool Request::isCacheInvalidate ( ) const
inline

Definition at line 933 of file request.hh.

References Flags< T >::isSet().

◆ isCacheMaintenance()

bool Request::isCacheMaintenance ( ) const
inline

Definition at line 934 of file request.hh.

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

◆ isCondSwap()

bool Request::isCondSwap ( ) const
inline

Definition at line 812 of file request.hh.

References Flags< T >::isSet().

◆ isDeviceScope()

bool Request::isDeviceScope ( ) const
inline

Definition at line 862 of file request.hh.

References Flags< T >::isSet().

◆ isGlobalSegment()

bool Request::isGlobalSegment ( ) const
inline

Definition at line 876 of file request.hh.

References Flags< T >::isSet().

◆ isGroupSegment()

bool Request::isGroupSegment ( ) const
inline

Definition at line 885 of file request.hh.

References Flags< T >::isSet().

◆ isInstFetch()

bool Request::isInstFetch ( ) const
inline

Definition at line 804 of file request.hh.

References Flags< T >::isSet().

◆ isKernargSegment()

bool Request::isKernargSegment ( ) const
inline

Definition at line 897 of file request.hh.

References Flags< T >::isSet().

◆ isKernel()

bool Request::isKernel ( ) const
inline

Definition at line 817 of file request.hh.

References Flags< T >::isSet().

◆ isLLSC()

bool Request::isLLSC ( ) const
inline

Definition at line 808 of file request.hh.

References Flags< T >::isSet().

◆ isLocalAccess()

bool Request::isLocalAccess ( )
inline

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

Definition at line 586 of file request.hh.

◆ isLockedRMW()

bool Request::isLockedRMW ( ) const
inline

Definition at line 810 of file request.hh.

References Flags< T >::isSet().

◆ isMasked()

bool 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 569 of file request.hh.

◆ isPrefetch()

bool Request::isPrefetch ( ) const
inline

Definition at line 805 of file request.hh.

References Flags< T >::isSet().

◆ isPrefetchEx()

bool Request::isPrefetchEx ( ) const
inline

Definition at line 807 of file request.hh.

References Flags< T >::isSet().

◆ isPriv()

bool Request::isPriv ( ) const
inline

Definition at line 809 of file request.hh.

References Flags< T >::isSet().

◆ isPrivateSegment()

bool Request::isPrivateSegment ( ) const
inline

Definition at line 891 of file request.hh.

References Flags< T >::isSet().

◆ isPTWalk()

bool Request::isPTWalk ( ) const
inline

Definition at line 814 of file request.hh.

References Flags< T >::isSet().

◆ isReadonlySegment()

bool Request::isReadonlySegment ( ) const
inline

Definition at line 903 of file request.hh.

References Flags< T >::isSet().

◆ isRelease()

bool Request::isRelease ( ) const
inline

Definition at line 816 of file request.hh.

References Flags< T >::isSet().

◆ isScoped()

bool Request::isScoped ( ) const
inline

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

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

Definition at line 845 of file request.hh.

References Flags< T >::isSet().

◆ isSecure()

bool Request::isSecure ( ) const
inline

Definition at line 813 of file request.hh.

References Flags< T >::isSet().

◆ isSpillSegment()

bool Request::isSpillSegment ( ) const
inline

Definition at line 909 of file request.hh.

References Flags< T >::isSet().

◆ isStrictlyOrdered()

bool Request::isStrictlyOrdered ( ) const
inline

Definition at line 803 of file request.hh.

References Flags< T >::isSet().

◆ isSwap()

bool Request::isSwap ( ) const
inline

Definition at line 811 of file request.hh.

References Flags< T >::isSet().

◆ isSystemScope()

bool Request::isSystemScope ( ) const
inline

Definition at line 869 of file request.hh.

References Flags< T >::isSet().

◆ isToPOC()

bool Request::isToPOC ( ) const
inline

Definition at line 836 of file request.hh.

References Flags< T >::isSet().

◆ isToPOU()

bool 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 835 of file request.hh.

References Flags< T >::isSet().

◆ isUncacheable()

bool 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 802 of file request.hh.

References Flags< T >::isSet().

◆ isWavefrontScope()

bool Request::isWavefrontScope ( ) const
inline

Definition at line 848 of file request.hh.

References Flags< T >::isSet().

◆ isWorkgroupScope()

bool Request::isWorkgroupScope ( ) const
inline

Definition at line 855 of file request.hh.

References Flags< T >::isSet().

◆ localAccessor()

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

Perform the installed local access.

Definition at line 591 of file request.hh.

◆ masterId()

MasterID Request::masterId ( ) const
inline

Accesssor for the requestor id.

Definition at line 654 of file request.hh.

◆ setAccessLatency()

void 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 773 of file request.hh.

References curTick().

◆ setByteEnable()

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

Definition at line 557 of file request.hh.

References MipsISA::be.

◆ setContext()

void Request::setContext ( ContextID  context_id)
inline

Set up Context numbers.

Definition at line 417 of file request.hh.

References Flags< T >::set().

◆ setExtraData()

void Request::setExtraData ( uint64_t  extraData)
inline

Accessor function for store conditional return value.

Definition at line 695 of file request.hh.

References Flags< T >::set().

◆ setFlags()

void 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 625 of file request.hh.

References Flags< T >::isSet(), and Flags< T >::set().

◆ setLocalAccessor()

void Request::setLocalAccessor ( LocalAccessor  acc)
inline

Set the function which will enact that access.

Definition at line 588 of file request.hh.

◆ setMemSpaceConfigFlags()

void Request::setMemSpaceConfigFlags ( MemSpaceConfigFlags  extraFlags)
inline

Definition at line 632 of file request.hh.

References Flags< T >::isSet(), and Flags< T >::set().

◆ setPaddr()

void Request::setPaddr ( Addr  paddr)
inline

Set just the physical address.

This usually used to record the result of a translation.

Definition at line 468 of file request.hh.

References Flags< T >::set().

◆ setPC()

void Request::setPC ( Addr  pc)
inline

Definition at line 736 of file request.hh.

References MipsISA::pc, and Flags< T >::set().

◆ setReqInstSeqNum()

void Request::setReqInstSeqNum ( const InstSeqNum  seq_num)
inline

Definition at line 794 of file request.hh.

References Flags< T >::set().

◆ setStreamId()

void Request::setStreamId ( uint32_t  sid)
inline

Definition at line 424 of file request.hh.

References Flags< T >::set().

◆ setSubStreamId()

void Request::setSubStreamId ( uint32_t  ssid)
inline

Definition at line 431 of file request.hh.

References Flags< T >::isSet(), and Flags< T >::set().

◆ setTranslateLatency()

void Request::setTranslateLatency ( )
inline

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

Definition at line 766 of file request.hh.

References curTick().

◆ setVirt()

void Request::setVirt ( Addr  vaddr,
unsigned  size,
Flags  flags,
MasterID  mid,
Addr  pc,
AtomicOpFunctorPtr  amo_op = nullptr 
)
inline

Set up a virtual (e.g., CPU) request in a previously allocated Request object.

Definition at line 443 of file request.hh.

References Flags< T >::clear(), curTick(), MipsISA::pc, Flags< T >::set(), and MipsISA::vaddr.

◆ splitOnVaddr()

void 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 481 of file request.hh.

References Flags< T >::isSet(), and Flags< T >::noneSet().

Referenced by Gcn3ISA::Inst_SMEM::initMemRead(), and Gcn3ISA::Inst_SMEM::initMemWrite().

◆ streamId()

uint32_t Request::streamId ( ) const
inline

Definition at line 716 of file request.hh.

References Flags< T >::isSet().

◆ substreamId()

uint32_t Request::substreamId ( ) const
inline

Definition at line 729 of file request.hh.

References Flags< T >::isSet().

◆ taskId() [1/2]

uint32_t Request::taskId ( ) const
inline

Definition at line 660 of file request.hh.

◆ taskId() [2/2]

void Request::taskId ( uint32_t  id)
inline

Definition at line 666 of file request.hh.

References ArmISA::id.

◆ time()

Tick Request::time ( ) const
inline

Accessor for time.

Definition at line 579 of file request.hh.

References Flags< T >::isSet().

Member Data Documentation

◆ _byteEnable

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

Byte-enable mask for writes.

Definition at line 298 of file request.hh.

◆ _contextId

ContextID Request::_contextId = InvalidContextID
private

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

Definition at line 350 of file request.hh.

◆ _extraData

uint64_t 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 347 of file request.hh.

◆ _flags

Flags Request::_flags
private

Flag structure for the request.

Definition at line 306 of file request.hh.

◆ _localAccessor

LocalAccessor Request::_localAccessor
private

Definition at line 361 of file request.hh.

◆ _masterId

MasterID Request::_masterId = invldMasterId
private

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

Definition at line 303 of file request.hh.

◆ _memSpaceConfigFlags

MemSpaceConfigFlags Request::_memSpaceConfigFlags
private

Memory space configuraiton flag structure for the request.

Definition at line 309 of file request.hh.

◆ _paddr

Addr Request::_paddr = 0
private

The physical address of the request.

Valid only if validPaddr is set.

Definition at line 288 of file request.hh.

◆ _pc

Addr Request::_pc = MaxAddr
private

program counter of initiating access; for tracing/debugging

Definition at line 353 of file request.hh.

◆ _reqInstSeqNum

InstSeqNum Request::_reqInstSeqNum = 0
private

Sequence number of the instruction that creates the request.

Definition at line 356 of file request.hh.

◆ _size

unsigned 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 295 of file request.hh.

◆ _streamId

uint32_t 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 331 of file request.hh.

◆ _substreamId

uint32_t 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 339 of file request.hh.

◆ _taskId

uint32_t Request::_taskId = ContextSwitchTaskId::Unknown
private

The task id associated with this request.

Definition at line 324 of file request.hh.

◆ _time

Tick 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 319 of file request.hh.

◆ _vaddr

Addr Request::_vaddr = MaxAddr
private

The virtual address of the request.

Definition at line 342 of file request.hh.

◆ accessDelta

Tick Request::accessDelta = 0

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

Definition at line 526 of file request.hh.

◆ atomicOpFunctor

AtomicOpFunctorPtr Request::atomicOpFunctor = nullptr
private

A pointer to an atomic operation.

Definition at line 359 of file request.hh.

Referenced by Request().

◆ depth

int Request::depth = 0
mutable

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

0 = L1; 1 = L2).

Definition at line 532 of file request.hh.

◆ privateFlags

PrivateFlags Request::privateFlags
private

Private flags for field validity checking.

Definition at line 312 of file request.hh.

◆ STORE_NO_DATA

const FlagsType Request::STORE_NO_DATA
static

◆ translateDelta

Tick Request::translateDelta = 0

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

Definition at line 520 of file request.hh.


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

Generated on Thu May 28 2020 16:21:50 for gem5 by doxygen 1.8.13