gem5
v19.0.0.0
|
#include <request.hh>
Public Types | |
enum | : FlagsType { ARCH_BITS = 0x000000FF, INST_FETCH = 0x00000100, PHYSICAL = 0x00000200, UNCACHEABLE = 0x00000400, STRICT_ORDER = 0x00000800, MMAPPED_IPR = 0x00002000, 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< FlagsType > | Flags |
typedef uint32_t | MemSpaceConfigFlagsType |
typedef ::Flags< MemSpaceConfigFlagsType > | MemSpaceConfigFlags |
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, InstSeqNum seq_num, ContextID cid) | |
Request (Addr paddr, unsigned size, Flags flags, MasterID mid) | |
Constructor for physical (e.g. More... | |
Request (Addr paddr, unsigned size, Flags flags, MasterID mid, Tick time) | |
Request (Addr paddr, unsigned size, Flags flags, MasterID mid, Tick time, Addr pc) | |
Request (uint64_t asid, Addr vaddr, unsigned size, Flags flags, MasterID mid, Addr pc, ContextID cid) | |
Request (uint64_t asid, Addr vaddr, unsigned size, Flags flags, MasterID mid, Addr pc, ContextID cid, AtomicOpFunctorPtr atomic_op) | |
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 (uint64_t asid, 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 | hasAtomicOpFunctor () |
Accessor for atomic-op functor. More... | |
AtomicOpFunctor * | getAtomicOpFunctor () |
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) |
uint64_t | getAsid () const |
Accessor function for asid. More... | |
void | setAsid (uint64_t asid) |
Accessor function for asid. More... | |
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 | isMmappedIpr () 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 |
Time for the TLB/table walker to successfully translate this request. More... | |
Tick | accessDelta |
Access latency to complete this memory transaction not including translation time. More... | |
int | depth |
Level of the cache hierachy where this request was responded to (e.g. More... | |
uint32_t | _streamId |
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 |
The substream ID identifies an "execution context" within a device behind an SMMU/IOMMU. More... | |
uint64_t | _asid |
The address space ID. 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< PrivateFlagsType > | PrivateFlags |
Private Member Functions | |
void | setPhys (Addr paddr, unsigned size, Flags flags, MasterID mid, Tick time) |
Set up a physical (e.g. More... | |
Private Attributes | |
Addr | _paddr |
The physical address of the request. More... | |
unsigned | _size |
The size of the request. More... | |
std::vector< bool > | _byteEnable |
Byte-enable mask for writes. More... | |
MasterID | _masterId |
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 |
The time this request was started. More... | |
uint32_t | _taskId |
The task id associated with this request. More... | |
union { | |
struct { | |
uint32_t _streamId | |
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 | |
The substream ID identifies an "execution context" within a device behind an SMMU/IOMMU. More... | |
} | |
uint64_t _asid | |
The address space ID. More... | |
}; | |
Addr | _vaddr |
The virtual address of the request. More... | |
uint64_t | _extraData |
Extra data for the request, such as the return value of store conditional or the compare value for a CAS. More... | |
ContextID | _contextId |
The context ID (for statistics, locks, and wakeups). More... | |
Addr | _pc |
program counter of initiating access; for tracing/debugging More... | |
InstSeqNum | _reqInstSeqNum |
Sequence number of the instruction that creates the request. More... | |
AtomicOpFunctorPtr | atomicOpFunctor |
A pointer to an atomic operation. More... | |
Definition at line 88 of file request.hh.
typedef uint8_t Request::ArchFlagsType |
Definition at line 92 of file request.hh.
typedef ::Flags<FlagsType> Request::Flags |
Definition at line 93 of file request.hh.
typedef uint64_t Request::FlagsType |
Definition at line 91 of file request.hh.
Definition at line 224 of file request.hh.
typedef uint32_t Request::MemSpaceConfigFlagsType |
Definition at line 223 of file request.hh.
|
private |
Definition at line 256 of file request.hh.
|
private |
Definition at line 255 of file request.hh.
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.
|
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. |
MMAPPED_IPR | This request is to a memory mapped register. |
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 95 of file request.hh.
anonymous enum : MasterID |
Master Ids that are statically allocated.
Definition at line 205 of file request.hh.
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 226 of file request.hh.
|
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 & asid are 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 258 of file request.hh.
|
inline |
Minimal constructor.
No fields are initialized. (Note that _flags and privateFlags are cleared by Flags default constructor.)
Definition at line 396 of file request.hh.
|
inline |
Definition at line 404 of file request.hh.
References curTick(), and Flags< T >::set().
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 422 of file request.hh.
References curTick().
Definition at line 432 of file request.hh.
|
inline |
Definition at line 442 of file request.hh.
References Flags< T >::set().
|
inline |
Definition at line 454 of file request.hh.
|
inline |
Definition at line 466 of file request.hh.
|
inline |
Definition at line 474 of file request.hh.
References atomicOpFunctor.
|
inline |
Definition at line 493 of file request.hh.
|
inline |
Accessor function for context ID.
Definition at line 798 of file request.hh.
References Flags< T >::isSet().
|
inline |
Accessor function to check if sc result is valid.
Definition at line 769 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 850 of file request.hh.
|
inline |
Definition at line 863 of file request.hh.
|
inline |
Accessor function for architecture-specific flags.
Definition at line 761 of file request.hh.
References Flags< T >::isSet().
|
inline |
Accessor function for asid.
Definition at line 746 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 680 of file request.hh.
|
inline |
Definition at line 636 of file request.hh.
|
inline |
Definition at line 927 of file request.hh.
|
inline |
Accessor function for store conditional return value.
Definition at line 776 of file request.hh.
References Flags< T >::isSet().
|
inline |
|
inline |
Definition at line 596 of file request.hh.
References Flags< T >::isSet().
|
inline |
Accessor function for pc.
Definition at line 839 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 876 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 629 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 856 of file request.hh.
|
inline |
Definition at line 720 of file request.hh.
References Flags< T >::isSet().
|
inline |
Accessor for atomic-op functor.
Definition at line 674 of file request.hh.
|
inline |
Definition at line 791 of file request.hh.
References Flags< T >::isSet().
|
inline |
Accessor for the sequence number of instruction that creates the request.
Definition at line 870 of file request.hh.
References Flags< T >::isSet().
|
inline |
|
inline |
Definition at line 832 of file request.hh.
References Flags< T >::isSet().
|
inline |
|
inline |
Definition at line 812 of file request.hh.
References Flags< T >::isSet().
|
inline |
Accessor function for vaddr.
Definition at line 714 of file request.hh.
References Flags< T >::isSet().
|
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 849 of file request.hh.
|
inline |
Definition at line 905 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 1005 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 912 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 909 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 908 of file request.hh.
References Flags< T >::isSet().
|
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 1022 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 1023 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 1024 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 901 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 952 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 966 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 975 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 893 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 987 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 907 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 897 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 899 of file request.hh.
References Flags< T >::isSet().
|
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 654 of file request.hh.
|
inline |
Definition at line 902 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 894 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 896 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 898 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 981 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 904 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 993 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 906 of file request.hh.
References Flags< T >::isSet().
|
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 935 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 903 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 999 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 892 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 900 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 959 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 926 of file request.hh.
References Flags< T >::isSet().
|
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 925 of file request.hh.
References Flags< T >::isSet().
|
inline |
Accessor functions for flags.
Note that these are for testing only; setting flags should be done via setFlags().
Definition at line 891 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 938 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 945 of file request.hh.
References Flags< T >::isSet().
|
inline |
Accesssor for the requestor id.
Definition at line 728 of file request.hh.
|
inline |
Set/Get the time taken to complete this request's access, not including the time to successfully translate the request.
Definition at line 862 of file request.hh.
References curTick().
|
inline |
|
inline |
Definition at line 642 of file request.hh.
References MipsISA::be.
|
inline |
|
inline |
Accessor function for store conditional return value.
Definition at line 784 of file request.hh.
References Flags< T >::set().
|
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 699 of file request.hh.
References Flags< T >::isSet(), and Flags< T >::set().
|
inline |
Definition at line 706 of file request.hh.
References Flags< T >::isSet(), and Flags< T >::set().
|
inline |
Set just the physical address.
This usually used to record the result of a translation. However, when using virtualized CPUs setPhys() is sometimes called to finalize a physical address without a virtual address, so we can't check if the virtual address is valid.
Definition at line 553 of file request.hh.
References Flags< T >::set().
|
inline |
Definition at line 825 of file request.hh.
References MipsISA::pc, and Flags< T >::set().
|
inlineprivate |
Set up a physical (e.g.
device) request in a previously allocated Request object.
Definition at line 290 of file request.hh.
|
inline |
Definition at line 883 of file request.hh.
References Flags< T >::set().
|
inline |
Definition at line 506 of file request.hh.
References Flags< T >::set().
|
inline |
Definition at line 513 of file request.hh.
References Flags< T >::isSet(), and Flags< T >::set().
|
inline |
Set/Get the time taken for this request to be successfully translated.
Definition at line 855 of file request.hh.
References curTick().
|
inline |
Set up a virtual (e.g., CPU) request in a previously allocated Request object.
Definition at line 525 of file request.hh.
References ArmISA::asid, Flags< T >::clear(), curTick(), MipsISA::pc, Flags< T >::set(), and MipsISA::vaddr.
|
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 566 of file request.hh.
References Flags< T >::isSet(), and Flags< T >::noneSet().
|
inline |
Definition at line 805 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 818 of file request.hh.
References Flags< T >::isSet().
|
inline |
Definition at line 734 of file request.hh.
|
inline |
Definition at line 740 of file request.hh.
References ArmISA::id.
|
inline |
union { ... } |
uint64_t Request::_asid |
The address space ID.
Definition at line 366 of file request.hh.
|
private |
Byte-enable mask for writes.
Definition at line 319 of file request.hh.
|
private |
The context ID (for statistics, locks, and wakeups).
Definition at line 378 of file request.hh.
|
private |
Extra data for the request, such as the return value of store conditional or the compare value for a CAS.
Definition at line 375 of file request.hh.
|
private |
Flag structure for the request.
Definition at line 327 of file request.hh.
|
private |
The requestor ID which is unique in the system for all ports that are capable of issuing a transaction.
Definition at line 324 of file request.hh.
|
private |
Memory space configuraiton flag structure for the request.
Definition at line 330 of file request.hh.
|
private |
The physical address of the request.
Valid only if validPaddr is set.
Definition at line 309 of file request.hh.
|
private |
program counter of initiating access; for tracing/debugging
Definition at line 381 of file request.hh.
|
private |
Sequence number of the instruction that creates the request.
Definition at line 384 of file request.hh.
|
private |
The size of the request.
This field must be set when vaddr or paddr is written via setVirt() or setPhys(), so it is always valid as long as one of the address fields is valid.
Definition at line 316 of file request.hh.
uint32_t Request::_streamId |
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 354 of file request.hh.
uint32_t Request::_substreamId |
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 362 of file request.hh.
|
private |
The task id associated with this request.
Definition at line 345 of file request.hh.
|
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 340 of file request.hh.
|
private |
The virtual address of the request.
Definition at line 370 of file request.hh.
Tick Request::accessDelta |
Access latency to complete this memory transaction not including translation time.
Definition at line 611 of file request.hh.
|
private |
A pointer to an atomic operation.
Definition at line 387 of file request.hh.
Referenced by Request().
|
mutable |
Level of the cache hierachy where this request was responded to (e.g.
0 = L1; 1 = L2).
Definition at line 617 of file request.hh.
|
private |
Private flags for field validity checking.
Definition at line 333 of file request.hh.
|
static |
Definition at line 200 of file request.hh.
Referenced by Minor::LSQ::pushRequest(), LSQUnit< Impl >::write(), AtomicSimpleCPU::writeMem(), TimingSimpleCPU::writeMem(), and CheckerCPU::writeMem().
Tick Request::translateDelta |
Time for the TLB/table walker to successfully translate this request.
Definition at line 605 of file request.hh.