gem5
v20.1.0.0
|
#include <lsq.hh>
Public Member Functions | |
SingleDataRequest (LSQUnit *port, const DynInstPtr &inst, bool isLoad, const Addr &addr, const uint32_t &size, const Request::Flags &flags_, PacketDataPtr data=nullptr, uint64_t *res=nullptr, AtomicOpFunctorPtr amo_op=nullptr) | |
virtual | ~SingleDataRequest () |
virtual void | initiateTranslation () |
virtual void | finish (const Fault &fault, const RequestPtr &req, ThreadContext *tc, BaseTLB::Mode mode) |
virtual bool | recvTimingResp (PacketPtr pkt) |
virtual void | sendPacketToCache () |
virtual void | buildPackets () |
virtual Cycles | handleLocalAccess (ThreadContext *thread, PacketPtr pkt) |
Memory mapped IPR accesses. More... | |
virtual bool | isCacheBlockHit (Addr blockAddr, Addr cacheBlockMask) |
Test if the request accesses a particular cache line. More... | |
virtual std::string | name () const |
Public Member Functions inherited from LSQ< Impl >::LSQRequest | |
void | packetSent () |
Update the status to reflect that a packet was sent. More... | |
void | packetNotSent () |
Update the status to reflect that a packet was not sent. More... | |
void | sendFragmentToTranslation (int i) |
bool | isComplete () |
bool | isInTranslation () |
bool | isTranslationComplete () |
bool | isTranslationBlocked () |
bool | isSent () |
bool | isPartialFault () |
bool | isMemAccessRequired () |
void | setStateToFault () |
void | freeLSQEntry () |
The LSQ entry is cleared. More... | |
void | discard () |
The request is discarded (e.g. More... | |
void | packetReplied () |
void | writebackScheduled () |
void | writebackDone () |
void | squashTranslation () |
void | complete () |
void | setContext (const ContextID &context_id) |
Convenience getters/setters. More... | |
const DynInstPtr & | instruction () |
void | setVirt (Addr vaddr, unsigned size, Request::Flags flags_, RequestorID requestor_id, Addr pc) |
Set up virtual request. More... | |
void | taskId (const uint32_t &v) |
uint32_t | taskId () const |
RequestPtr | request (int idx=0) |
const RequestPtr | request (int idx=0) const |
Addr | getVaddr (int idx=0) const |
PacketPtr | packet (int idx=0) |
virtual PacketPtr | mainPacket () |
virtual RequestPtr | mainRequest () |
void | senderState (LSQSenderState *st) |
const LSQSenderState * | senderState () const |
void | discardSenderState () |
Mark senderState as discarded. More... | |
bool | isAnyOutstandingRequest () |
Test if there is any in-flight translation or mem access request. More... | |
bool | isSplit () const |
Public Member Functions inherited from BaseTLB::Translation | |
virtual | ~Translation () |
Protected Types | |
using | Flag = typename LSQRequest::Flag |
using | State = typename LSQRequest::State |
Protected Types inherited from LSQ< Impl >::LSQRequest | |
enum | Flag : FlagsStorage { IsLoad = 0x00000001, WbStore = 0x00000002, Delayed = 0x00000004, IsSplit = 0x00000008, TranslationStarted = 0x00000010, TranslationFinished = 0x00000020, Sent = 0x00000040, Retry = 0x00000080, Complete = 0x00000100, TranslationSquashed = 0x00000200, Discarded = 0x00000400, LSQEntryFreed = 0x00000800, WritebackScheduled = 0x00001000, WritebackDone = 0x00002000, IsAtomic = 0x00004000 } |
enum | State { State::NotIssued, State::Translation, State::Request, State::Fault, State::PartialFault } |
typedef uint32_t | FlagsStorage |
typedef ::Flags< FlagsStorage > | FlagsType |
Protected Member Functions | |
bool | isLoad () const |
bool | isTranslationComplete () |
LSQUnit * | lsqUnit () |
RequestPtr | request (int idx=0) |
const RequestPtr | request (int idx=0) const |
void | sendFragmentToTranslation (int i) |
void | setState (const State &newState) |
Protected Member Functions inherited from LSQ< Impl >::LSQRequest | |
void | setState (const State &newState) |
void | markDelayed () override |
Signal that the translation has been delayed due to a hw page table walk. More... | |
bool | isDelayed () |
LSQUnit * | lsqUnit () |
LSQRequest (LSQUnit *port, const DynInstPtr &inst, bool isLoad) | |
LSQRequest (LSQUnit *port, const DynInstPtr &inst, bool isLoad, const Addr &addr, const uint32_t &size, const Request::Flags &flags_, PacketDataPtr data=nullptr, uint64_t *res=nullptr, AtomicOpFunctorPtr amo_op=nullptr) | |
bool | isLoad () const |
bool | isAtomic () const |
void | install () |
Install the request in the LQ/SQ. More... | |
virtual bool | squashed () const override |
This function is used by the page table walker to determine if it should translate the a pending request or if the underlying request has been squashed. More... | |
bool | isReleased () |
Test if the LSQRequest has been released, i.e. More... | |
void | release (Flag reason) |
Release the LSQRequest. More... | |
void | addRequest (Addr addr, unsigned size, const std::vector< bool > &byte_enable) |
Helper function used to add a (sub)request, given its address addr , size size and byte-enable mask byteEnable . More... | |
virtual | ~LSQRequest () |
Destructor. More... | |
Protected Attributes | |
const Addr | _addr |
std::vector< Fault > | _fault |
const Request::Flags | _flags |
const uint32_t | _size |
std::vector< bool > | _byteEnable |
std::vector< RequestPtr > | _requests |
const DynInstPtr | _inst |
std::vector< PacketPtr > | _packets |
LSQUnit & | _port |
uint64_t * | _res |
uint32_t | _taskId |
LSQSenderState * | _senderState |
State | _state |
FlagsType | flags |
uint32_t | numInTranslationFragments |
uint32_t | numTranslatedFragments |
uint32_t | _numOutstandingPackets |
AtomicOpFunctorPtr | _amo_op |
Protected Attributes inherited from LSQ< Impl >::LSQRequest | |
FlagsType | flags |
State | _state |
LSQSenderState * | _senderState |
uint32_t | numTranslatedFragments |
uint32_t | numInTranslationFragments |
uint32_t | _entryIdx |
LQ/SQ entry idx. More... | |
Additional Inherited Members | |
Public Attributes inherited from LSQ< Impl >::LSQRequest | |
LSQUnit & | _port |
const DynInstPtr | _inst |
uint32_t | _taskId |
PacketDataPtr | _data |
std::vector< PacketPtr > | _packets |
std::vector< RequestPtr > | _requests |
std::vector< Fault > | _fault |
uint64_t * | _res |
const Addr | _addr |
const uint32_t | _size |
const Request::Flags | _flags |
std::vector< bool > | _byteEnable |
uint32_t | _numOutstandingPackets |
AtomicOpFunctorPtr | _amo_op |
|
protected |
|
protected |
|
inline |
|
inlinevirtual |
|
virtual |
Implements LSQ< Impl >::LSQRequest.
Definition at line 1022 of file lsq_impl.hh.
References Packet::createRead(), Packet::createWrite(), and DPRINTF.
|
virtual |
Implements BaseTLB::Translation.
Reimplemented in LSQ< Impl >::HtmCmdRequest.
Definition at line 768 of file lsq_impl.hh.
References LSQ< Impl >::LSQRequest::_fault, LSQ< Impl >::LSQRequest::_inst, LSQ< Impl >::LSQRequest::_res, LSQ< Impl >::LSQRequest::flags, NoFault, LSQ< Impl >::LSQRequest::numInTranslationFragments, LSQ< Impl >::LSQRequest::numTranslatedFragments, Flags< T >::set(), LSQ< Impl >::LSQRequest::setState(), and LSQ< Impl >::LSQRequest::squashTranslation().
|
virtual |
Memory mapped IPR accesses.
Implements LSQ< Impl >::LSQRequest.
Definition at line 1143 of file lsq_impl.hh.
References Packet::req, and LSQ< Impl >::thread.
|
virtual |
Implements LSQ< Impl >::LSQRequest.
Reimplemented in LSQ< Impl >::HtmCmdRequest.
Definition at line 850 of file lsq_impl.hh.
|
virtual |
Test if the request accesses a particular cache line.
Implements LSQ< Impl >::LSQRequest.
Definition at line 1172 of file lsq_impl.hh.
References LSQ< Impl >::LSQRequest::_requests.
|
inlineprotected |
|
inlineprotected |
|
inlinevirtual |
Reimplemented from LSQ< Impl >::LSQRequest.
Reimplemented in LSQ< Impl >::HtmCmdRequest.
Implements LSQ< Impl >::LSQRequest.
Definition at line 981 of file lsq_impl.hh.
References Complete, LSQ< Impl >::LSQSenderState::outstanding, and Packet::senderState.
|
inlineprotected |
|
inlineprotected |
|
protected |
Definition at line 970 of file lsq_impl.hh.
|
virtual |
Implements LSQ< Impl >::LSQRequest.
Definition at line 1122 of file lsq_impl.hh.
|
inlineprotected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |