Go to the documentation of this file.
48 #ifndef __MEM_REQUEST_HH__
49 #define __MEM_REQUEST_HH__
92 typedef ::Flags<FlagsType>
Flags;
539 req1 = std::make_shared<Request>(*
this);
540 req2 = std::make_shared<Request>(*
this);
541 req1->_size = split_addr -
_vaddr;
542 req2->_vaddr = split_addr;
543 req2->_size =
_size - req1->_size;
627 assert(
be.empty() ||
be.size() ==
_size);
965 #endif // __MEM_REQUEST_HH__
@ intRequestorId
This requestor id is used for message signaled interrupts.
Addr _pc
program counter of initiating access; for tracing/debugging
@ HTM_CANCEL
The request cancels a HTM transaction.
std::unique_ptr< AtomicOpFunctor > AtomicOpFunctorPtr
Addr _vaddr
The virtual address of the request.
RequestorID _requestorId
The requestor ID which is unique in the system for all ports that are capable of issuing a transactio...
@ ACQUIRE
The request should be marked with ACQUIRE.
int getAccessDepth() const
@ CLEAN
The request cleans a memory location.
void incAccessDepth() const
Increment/Get the depth at which this request is responded to.
void setByteEnable(const std::vector< bool > &be)
@ RELEASE
The request should be marked with RELEASE.
void setReqInstSeqNum(const InstSeqNum seq_num)
Counter getInstCount() const
Accessor for instruction count.
uint32_t _taskId
The task id associated with this request.
HtmFailureFaultCause _htmAbortCause
The cause for HTM transaction abort.
void setHtmAbortCause(HtmFailureFaultCause val)
PrivateFlags privateFlags
Private flags for field validity checking.
void setInstCount(Counter val)
Request(Addr vaddr, unsigned size, Flags flags, RequestorID id, Addr pc, ContextID cid, AtomicOpFunctorPtr atomic_op=nullptr)
@ STICKY_FLAGS
These flags are not cleared when a Request object is reused (assigned a new address).
LocalAccessor _localAccessor
@ NO_ACCESS
The request should not cause a memory access.
int ContextID
Globally unique thread context ID.
bool isStrictlyOrdered() const
uint64_t Tick
Tick count type.
::Flags< CacheCoherenceFlagsType > CacheCoherenceFlags
bool isLocalAccess()
Is this request for a local memory mapped resource/register?
@ ARCH_BITS
Architecture specific flags.
std::shared_ptr< Request > RequestPtr
@ PRIVILEGED
This request is made in privileged mode.
@ DST_POC
The request targets the point of coherence.
bool hasInstSeqNum() const
Accessor for the sequence number of instruction that creates the request.
const ContextID InvalidContextID
@ VALID_HTM_ABORT_CAUSE
Whether or not the abort cause is valid.
bool extraDataValid() const
Accessor function to check if sc result is valid.
static const FlagsType HTM_CMD
bool isCacheInvalidate() const
@ HTM_START
hardware transactional memory
@ VALID_VADDR
Whether or not the vaddr is valid.
@ DST_BITS
Bits to define the destination of a request.
InstSeqNum _reqInstSeqNum
Sequence number of the instruction that creates the request.
uint64_t CacheCoherenceFlagsType
Counter _instCount
The instruction count at the time this request is created.
Tick accessDelta
Access latency to complete this memory transaction not including translation time.
bool isSLC() const
Accessor functions for the memory space configuration flags and used by GPU ISAs such as the Heteroge...
@ INST_FETCH
The request was an instruction fetch.
int depth
Level of the cache hierachy where this request was responded to (e.g.
bool hasVaddr() const
Accessor function for vaddr.
void setFlags(Flags flags)
Note that unlike other accessors, this function sets specific flags (ORs them in); it does not assign...
std::function< Cycles(ThreadContext *tc, Packet *pkt)> LocalAccessor
uint64_t getExtraData() const
Accessor function for store conditional return value.
HtmFailureFaultCause getHtmAbortCause() const
Accessor for hardware transactional memory abort cause.
bool hasSize() const
Accessor for size.
bool isCacheMaintenance() const
int64_t Counter
Statistics counter type.
@ STRICT_ORDER
The request is required to be strictly ordered by CPU models and is non-speculative.
@ PHYSICAL
The virtual address is also 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.
@ CACHE_BLOCK_ZERO
This is a write that is targeted and zeroing an entire cache block.
uint16_t PrivateFlagsType
@ SECURE
The request targets the secure memory space.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
uint64_t _extraData
Extra data for the request, such as the return value of store conditional or the compare value for a ...
@ VALID_EXTRA_DATA
Whether or not the sc result is valid.
Addr getPC() const
Accessor function for pc.
const std::vector< bool > & getByteEnable() const
AtomicOpFunctorPtr atomicOpFunctor
A pointer to an atomic operation.
Request(const Request &other)
@ PREFETCH
The request is a prefetch.
void setExtraData(uint64_t extraData)
Accessor function for store conditional return value.
@ VALID_INST_COUNT
Whether or not the instruction count is valid.
@ wbRequestorId
This requestor id is used for writeback requests by the caches.
bool isAtomicNoReturn() const
@ SLC_BIT
user-policy flags
uint32_t _streamId
The stream ID uniquely identifies a device behind the SMMU/IOMMU Each transaction arriving at the SMM...
void setSubStreamId(uint32_t ssid)
InstSeqNum getReqInstSeqNum() const
@ ATOMIC_RETURN_OP
The request is an atomic that returns data.
@ LOCKED_RMW
This request will lock or unlock the accessed memory.
Cycles localAccessor(ThreadContext *tc, Packet *pkt)
Perform the installed local access.
@ MEM_SWAP
This request is for a memory swap.
@ invldRequestorId
Invalid requestor id for assertion checking only.
Copyright (c) 2018 Metempsy Technology Consulting All rights reserved.
bool isToPOU() const
Accessor functions for the destination of a memory request.
Tick translateDelta
Time for the TLB/table walker to successfully translate this request.
@ UNCACHEABLE
The request is to an uncacheable address.
void setPaddr(Addr paddr)
Set just the physical address.
Special TaskIds that are used for per-context-switch stats dumps and Cache Occupancy.
@ VALID_CONTEXT_ID
Whether or not the context ID is valid.
bool isPrefetchEx() const
Addr _paddr
The physical address of the request.
@ INVALIDATE
The request invalidates a memory location.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
@ DST_POU
The request targets the point of unification.
unsigned _size
The size of the request.
void setAccessLatency()
Set/Get the time taken to complete this request's access, not including the time to successfully tran...
uint32_t substreamId() const
void setStreamId(uint32_t sid)
@ HTM_COMMIT
The request commits a HTM transaction.
@ funcRequestorId
This requestor id is used for functional requests that don't come from a particular device.
Tick _time
The time this request was started.
Tick getAccessLatency() const
@ STICKY_PRIVATE_FLAGS
These flags are not cleared when a Request object is reused (assigned a new address).
Flags getFlags()
Accessor for flags.
bool isAtomicReturn() const
@ PF_EXCLUSIVE
The request should be prefetched into the exclusive state.
CacheCoherenceFlags _cacheCoherenceFlags
Flags that control how downstream cache system maintains coherence.
@ PT_WALK
The request is a page table walk.
void setContext(ContextID context_id)
Set up Context numbers.
bool hasAtomicOpFunctor()
Accessor for atomic-op functor.
bool isCacheClean() const
Accessor functions to determine whether this request is part of a cache maintenance operation.
@ HTM_ABORT
The request aborts a HTM transaction.
bool isMasked() const
Returns true if the memory request is masked, which means there is at least one byteEnable element wh...
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.
bool hasPaddr() const
Accessor for paddr.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
@ KERNEL
The request should be marked with KERNEL.
@ VALID_PADDR
Whether or not paddr is valid (has been written yet).
@ ATOMIC_NO_RETURN_OP
The request is an atomic that does not return data.
bool hasSubstreamId() const
@ INV_L1
mem_sync_op flags
Flags _flags
Flag structure for the request.
Cycles is a wrapper class for representing cycle counts, i.e.
::Flags< PrivateFlagsType > PrivateFlags
void setLocalAccessor(LocalAccessor acc)
Set the function which will enact that access.
::Flags< FlagsType > Flags
void setTranslateLatency()
Set/Get the time taken for this request to be successfully translated.
AtomicOpFunctor * getAtomicOpFunctor()
Request(Addr paddr, unsigned size, Flags flags, RequestorID id)
Constructor for physical (e.g.
bool hasContextId() const
ContextID contextId() const
Accessor function for context ID.
ArchFlagsType getArchFlags() const
Accessor function for architecture-specific flags.
Request()
Minimal constructor.
static const FlagsType STORE_NO_DATA
std::vector< bool > _byteEnable
Byte-enable mask for writes.
Tick getTranslateLatency() const
@ LLSC
The request is a Load locked/store conditional.
@ EVICT_NEXT
The request should be marked as LRU.
void setCacheCoherenceFlags(CacheCoherenceFlags extraFlags)
@ VALID_PC
Whether or not the pc is valid.
@ VALID_INST_SEQ_NUM
Whether or not the instruction sequence number is valid.
@ VALID_SIZE
Whether or not the size is valid.
uint32_t _substreamId
The substream ID identifies an "execution context" within a device behind an SMMU/IOMMU.
RequestorID requestorId() const
Accesssor for the requestor id.
uint32_t streamId() const
bool isUncacheable() const
Accessor functions for flags.
@ VALID_STREAM_ID
Whether or not the stream ID and substream ID is valid.
ContextID _contextId
The context ID (for statistics, locks, and wakeups).
Tick curTick()
The current simulated tick.
Tick time() const
Accessor for time.
Generated on Wed Sep 30 2020 14:02:13 for gem5 by doxygen 1.8.17