gem5 v24.0.0.0
|
#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 , 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< FlagsType > | Flags |
typedef uint64_t | CacheCoherenceFlagsType |
typedef gem5::Flags< CacheCoherenceFlagsType > | CacheCoherenceFlags |
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. | |
AtomicOpFunctor * | getAtomicOpFunctor () |
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< PrivateFlagsType > | PrivateFlags |
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 |
Definition at line 97 of file request.hh.
typedef uint8_t gem5::Request::ArchFlagsType |
Definition at line 101 of file request.hh.
Definition at line 291 of file request.hh.
typedef uint64_t gem5::Request::CacheCoherenceFlagsType |
Definition at line 290 of file request.hh.
typedef gem5::Flags<FlagsType> gem5::Request::Flags |
Definition at line 102 of file request.hh.
typedef uint64_t gem5::Request::FlagsType |
Definition at line 100 of file request.hh.
Definition at line 342 of file request.hh.
|
private |
Definition at line 347 of file request.hh.
|
private |
Definition at line 346 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. |
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 : RequestorID |
Requestor Ids that are statically allocated.
Definition at line 271 of file request.hh.
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.
|
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.
|
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.
|
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.
|
inline |
Definition at line 495 of file request.hh.
References _byteEnable, flags, gem5::MipsISA::pc, setContext(), setVirt(), and gem5::MipsISA::vaddr.
|
inline |
Definition at line 504 of file request.hh.
References atomicOpFunctor.
|
inline |
Definition at line 524 of file request.hh.
|
inline |
Definition at line 826 of file request.hh.
References _cacheCoherenceFlags, gem5::Flags< T >::clear(), hasPaddr(), and hasVaddr().
|
inline |
Definition at line 811 of file request.hh.
References _flags, gem5::Flags< T >::clear(), flags, hasPaddr(), and hasVaddr().
|
inline |
Accessor function for context ID.
Definition at line 910 of file request.hh.
References _contextId, and hasContextId().
|
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().
|
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().
|
inline |
Definition at line 972 of file request.hh.
References depth.
|
inline |
Definition at line 985 of file request.hh.
References accessDelta.
|
inline |
Accessor function for architecture-specific flags.
Definition at line 873 of file request.hh.
References _flags, ARCH_BITS, hasPaddr(), and hasVaddr().
|
inline |
Definition at line 754 of file request.hh.
References atomicOpFunctor.
|
inline |
Definition at line 699 of file request.hh.
References _byteEnable.
|
inline |
Definition at line 1078 of file request.hh.
|
inline |
Accessor function for store conditional return value.
Definition at line 888 of file request.hh.
References _extraData, and extraDataValid().
|
inline |
Accessor for flags.
Definition at line 793 of file request.hh.
References _flags, hasPaddr(), and hasVaddr().
|
inline |
Definition at line 777 of file request.hh.
References _htmAbortCause, and hasHtmAbortCause().
|
inline |
Definition at line 653 of file request.hh.
References _instCount, and hasInstCount().
|
inline |
Definition at line 638 of file request.hh.
References _paddr, and hasPaddr().
|
inline |
|
inline |
Definition at line 998 of file request.hh.
References _reqInstSeqNum, and hasInstSeqNum().
|
inline |
Definition at line 692 of file request.hh.
|
inline |
Definition at line 978 of file request.hh.
References translateDelta.
|
inline |
Definition at line 841 of file request.hh.
References _vaddr, gem5::Flags< T >::isSet(), privateFlags, and VALID_VADDR.
|
inline |
Accessor for atomic-op functor.
Definition at line 748 of file request.hh.
References atomicOpFunctor.
|
inline |
Definition at line 903 of file request.hh.
References gem5::Flags< T >::isSet(), privateFlags, and VALID_CONTEXT_ID.
Referenced by contextId().
|
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().
|
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().
|
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().
|
inline |
Accessor for paddr.
Definition at line 632 of file request.hh.
References gem5::Flags< T >::isSet(), privateFlags, and VALID_PADDR.
Referenced by clearCacheCoherenceFlags(), clearFlags(), getArchFlags(), getFlags(), getPaddr(), setCacheCoherenceFlags(), setFlags(), splitOnVaddr(), and time().
|
inline |
Definition at line 954 of file request.hh.
References gem5::Flags< T >::isSet(), privateFlags, and VALID_PC.
Referenced by getPC().
|
inline |
Accessor for size.
Definition at line 686 of file request.hh.
References gem5::Flags< T >::isSet(), privateFlags, and VALID_SIZE.
Referenced by getSize().
|
inline |
Definition at line 921 of file request.hh.
References gem5::Flags< T >::isSet(), privateFlags, and VALID_STREAM_ID.
Referenced by setSubstreamId(), and streamId().
|
inline |
Definition at line 934 of file request.hh.
References gem5::Flags< T >::isSet(), privateFlags, and VALID_SUBSTREAM_ID.
Referenced by substreamId().
|
inline |
Accessor function for vaddr.
Definition at line 835 of file request.hh.
References gem5::Flags< T >::isSet(), privateFlags, and VALID_VADDR.
Referenced by clearCacheCoherenceFlags(), clearFlags(), getArchFlags(), getFlags(), setCacheCoherenceFlags(), setFlags(), splitOnVaddr(), and time().
|
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.
|
inline |
Definition at line 1080 of file request.hh.
References _cacheCoherenceFlags, ACQUIRE, and gem5::Flags< T >::isSet().
|
inline |
Definition at line 1063 of file request.hh.
References _flags, ATOMIC_NO_RETURN_OP, ATOMIC_RETURN_OP, and gem5::Flags< T >::isSet().
|
inline |
Definition at line 1037 of file request.hh.
References _flags, ATOMIC_NO_RETURN_OP, and gem5::Flags< T >::isSet().
|
inline |
Definition at line 1036 of file request.hh.
References _flags, ATOMIC_RETURN_OP, and gem5::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 1119 of file request.hh.
References _flags, CLEAN, and gem5::Flags< T >::isSet().
|
inline |
Definition at line 1120 of file request.hh.
References _flags, INVALIDATE, and gem5::Flags< T >::isSet().
|
inline |
Definition at line 1121 of file request.hh.
References _flags, CLEAN, INVALIDATE, and gem5::Flags< T >::isSet().
|
inline |
Definition at line 1026 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), and MEM_SWAP_COND.
|
inline |
Definition at line 1102 of file request.hh.
References _cacheCoherenceFlags, FLUSH_L2, and gem5::Flags< T >::isSet().
|
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().
|
inline |
Definition at line 1042 of file request.hh.
References _flags, HTM_ABORT, and gem5::Flags< T >::isSet().
Referenced by isHTMCmd(), and setHtmAbortCause().
|
inline |
Definition at line 1041 of file request.hh.
References _flags, HTM_CANCEL, and gem5::Flags< T >::isSet().
Referenced by isHTMCmd().
|
inline |
Definition at line 1044 of file request.hh.
References isHTMAbort(), isHTMCancel(), isHTMCommit(), and isHTMStart().
Referenced by isMemMgmt().
|
inline |
Definition at line 1040 of file request.hh.
References _flags, HTM_COMMIT, and gem5::Flags< T >::isSet().
Referenced by isHTMCmd().
|
inline |
Definition at line 1039 of file request.hh.
References _flags, HTM_START, and gem5::Flags< T >::isSet().
Referenced by isHTMCmd().
|
inline |
Definition at line 1015 of file request.hh.
References _flags, INST_FETCH, and gem5::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 setting extraFlags should be done via setCacheCoherenceFlags().
Definition at line 1098 of file request.hh.
References _cacheCoherenceFlags, INV_L1, and gem5::Flags< T >::isSet().
|
inline |
Definition at line 1099 of file request.hh.
References _cacheCoherenceFlags, GL2_CACHE_INV, and gem5::Flags< T >::isSet().
|
inline |
Definition at line 1035 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), and KERNEL.
|
inline |
Definition at line 1022 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), and LLSC.
|
inline |
Is this request for a local memory mapped resource/register?
Definition at line 734 of file request.hh.
References _localAccessor.
|
inline |
Definition at line 1024 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), and LOCKED_RMW.
|
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.
|
inline |
Definition at line 1060 of file request.hh.
References isHTMCmd(), and isTlbiCmd().
|
inline |
Definition at line 1017 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), PF_EXCLUSIVE, and PREFETCH.
|
inline |
Definition at line 1021 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), and PF_EXCLUSIVE.
|
inline |
Definition at line 1023 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), and PRIVILEGED.
|
inline |
Definition at line 1033 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), and PT_WALK.
|
inline |
Definition at line 1028 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), LOCKED_RMW, and READ_MODIFY_WRITE.
|
inline |
Definition at line 1034 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), and RELEASE.
|
inline |
Definition at line 1032 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), and SECURE.
|
inline |
Definition at line 1091 of file request.hh.
References _cacheCoherenceFlags, gem5::Flags< T >::isSet(), and SLC_BIT.
|
inline |
Definition at line 1014 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), and STRICT_ORDER.
|
inline |
Definition at line 1025 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), MEM_SWAP, and MEM_SWAP_COND.
|
inline |
Definition at line 1050 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), and TLBI.
Referenced by isTlbiCmd().
|
inline |
Definition at line 1055 of file request.hh.
References isTlbi(), isTlbiExtSync(), isTlbiExtSyncComp(), and isTlbiSync().
Referenced by isMemMgmt().
|
inline |
Definition at line 1052 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), and TLBI_EXT_SYNC.
Referenced by isTlbiCmd().
|
inline |
Definition at line 1053 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), and TLBI_EXT_SYNC_COMP.
Referenced by isTlbiCmd().
|
inline |
Definition at line 1051 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), and TLBI_SYNC.
Referenced by isTlbiCmd().
|
inline |
Definition at line 1077 of file request.hh.
References _flags, DST_POC, and gem5::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 1076 of file request.hh.
References _flags, DST_POU, and gem5::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 1013 of file request.hh.
References _flags, gem5::Flags< T >::isSet(), and UNCACHEABLE.
|
inline |
Perform the installed local access.
Definition at line 739 of file request.hh.
References _localAccessor.
|
inline |
|
inline |
Definition at line 855 of file request.hh.
References _requestorId.
|
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.
|
inline |
Definition at line 761 of file request.hh.
References atomicOpFunctor.
|
inline |
Definition at line 705 of file request.hh.
References _byteEnable, _size, and gem5::MipsISA::be.
|
inline |
Definition at line 818 of file request.hh.
References _cacheCoherenceFlags, hasPaddr(), hasVaddr(), and gem5::Flags< T >::set().
|
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().
|
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.
|
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().
|
inline |
Definition at line 784 of file request.hh.
References _htmAbortCause, isHTMAbort(), privateFlags, gem5::Flags< T >::set(), gem5::X86ISA::val, and VALID_HTM_ABORT_CAUSE.
|
inline |
Definition at line 659 of file request.hh.
References _instCount, privateFlags, gem5::Flags< T >::set(), gem5::X86ISA::val, and VALID_INST_COUNT.
|
inline |
Set the function which will enact that access.
Definition at line 736 of file request.hh.
References _localAccessor.
|
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.
|
inline |
Definition at line 947 of file request.hh.
References _pc, gem5::MipsISA::pc, privateFlags, gem5::Flags< T >::set(), and VALID_PC.
|
inline |
Definition at line 1005 of file request.hh.
References _reqInstSeqNum, privateFlags, gem5::Flags< T >::set(), and VALID_INST_SEQ_NUM.
|
inline |
Definition at line 553 of file request.hh.
References _streamId, privateFlags, gem5::Flags< T >::set(), and VALID_STREAM_ID.
|
inline |
Definition at line 560 of file request.hh.
References _substreamId, hasStreamId(), privateFlags, gem5::Flags< T >::set(), and VALID_SUBSTREAM_ID.
|
inline |
Definition at line 917 of file request.hh.
References _systemReq.
|
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.
|
inline |
Set up a virtual (e.g., CPU) request in a previously allocated Request object.
Definition at line 572 of file request.hh.
References _flags, _localAccessor, _pc, _requestorId, _size, _time, _vaddr, accessDelta, atomicOpFunctor, gem5::Flags< T >::clear(), gem5::curTick(), depth, flags, gem5::ArmISA::id, gem5::MipsISA::pc, privateFlags, gem5::Flags< T >::set(), STICKY_FLAGS, STICKY_PRIVATE_FLAGS, translateDelta, gem5::MipsISA::vaddr, VALID_PC, VALID_SIZE, and VALID_VADDR.
Referenced by Request().
|
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().
|
inline |
Definition at line 927 of file request.hh.
References _streamId, and hasStreamId().
|
inline |
Definition at line 940 of file request.hh.
References _substreamId, and hasSubstreamId().
|
inline |
Definition at line 918 of file request.hh.
References _systemReq.
|
inline |
Definition at line 861 of file request.hh.
References _taskId.
|
inline |
Definition at line 867 of file request.hh.
References _taskId, and gem5::ArmISA::id.
|
inline |
Accessor for time.
Definition at line 727 of file request.hh.
References _time, hasPaddr(), and hasVaddr().
|
private |
Byte-enable mask for writes.
Definition at line 396 of file request.hh.
Referenced by getByteEnable(), isMasked(), Request(), Request(), setByteEnable(), and splitOnVaddr().
|
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().
|
private |
The context ID (for statistics, locks, and wakeups).
Definition at line 454 of file request.hh.
Referenced by contextId(), and setContext().
|
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().
|
private |
Flag structure for the request.
Definition at line 404 of file request.hh.
Referenced by clearFlags(), getArchFlags(), getDest(), getFlags(), isAtomic(), isAtomicNoReturn(), isAtomicReturn(), isCacheClean(), isCacheInvalidate(), isCacheMaintenance(), isCondSwap(), isHTMAbort(), isHTMCancel(), isHTMCommit(), isHTMStart(), isInstFetch(), isKernel(), isLLSC(), isLockedRMW(), isPrefetch(), isPrefetchEx(), isPriv(), isPTWalk(), isReadModifyWrite(), isRelease(), isSecure(), isStrictlyOrdered(), isSwap(), isTlbi(), isTlbiExtSync(), isTlbiExtSyncComp(), isTlbiSync(), isToPOC(), isToPOU(), isUncacheable(), Request(), setFlags(), and setVirt().
|
private |
The cause for HTM transaction abort.
Definition at line 471 of file request.hh.
Referenced by getHtmAbortCause(), and setHtmAbortCause().
|
private |
The instruction count at the time this request is created.
Definition at line 468 of file request.hh.
Referenced by getInstCount(), and setInstCount().
|
private |
Definition at line 465 of file request.hh.
Referenced by isLocalAccess(), localAccessor(), setLocalAccessor(), and setVirt().
|
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().
program counter of initiating access; for tracing/debugging
Definition at line 457 of file request.hh.
|
private |
Sequence number of the instruction that creates the request.
Definition at line 460 of file request.hh.
Referenced by getReqInstSeqNum(), and setReqInstSeqNum().
|
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().
|
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().
|
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().
|
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().
|
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().
|
private |
The task id associated with this request.
Definition at line 422 of file request.hh.
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().
The virtual address of the request.
Definition at line 446 of file request.hh.
Referenced by getVaddr(), setVirt(), and splitOnVaddr().
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().
|
private |
A pointer to an atomic operation.
Definition at line 463 of file request.hh.
Referenced by getAtomicOpFunctor(), hasAtomicOpFunctor(), Request(), setAtomicOpFunctor(), and setVirt().
|
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().
|
static |
Definition at line 263 of file request.hh.
Referenced by gem5::o3::LSQ::pushRequest().
|
private |
Private flags for field validity checking.
Definition at line 410 of file request.hh.
Referenced by extraDataValid(), getVaddr(), hasContextId(), hasHtmAbortCause(), hasInstCount(), hasInstSeqNum(), hasPaddr(), hasPC(), hasSize(), hasStreamId(), hasSubstreamId(), hasVaddr(), Request(), setContext(), setExtraData(), setHtmAbortCause(), setInstCount(), setPaddr(), setPC(), setReqInstSeqNum(), setStreamId(), setSubstreamId(), and setVirt().
|
static |
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().
|
static |
Definition at line 266 of file request.hh.
Referenced by gem5::o3::LSQ::pushRequest().
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().