|
gem5
v21.2.1.1
|
#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, gem5::ThreadContext *tc, BaseMMU::Mode mode) |
| virtual bool | recvTimingResp (PacketPtr pkt) |
| virtual void | sendPacketToCache () |
| virtual void | buildPackets () |
| virtual Cycles | handleLocalAccess (gem5::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 gem5::o3::LSQ::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... | |
| ContextID | contextId () const |
| void | taskId (const uint32_t &v) |
| uint32_t | taskId () const |
| RequestPtr | req (int idx=0) |
| const RequestPtr | req (int idx=0) const |
| Addr | getVaddr (int idx=0) const |
| PacketPtr | packet (int idx=0) |
| virtual PacketPtr | mainPacket () |
| virtual RequestPtr | mainReq () |
| bool | isAnyOutstandingRequest () |
| Test if there is any in-flight translation or mem access request. More... | |
| bool | isReleased () |
| Test if the LSQRequest has been released, i.e. More... | |
| bool | isSplit () const |
| bool | needWBToRegister () const |
Public Member Functions inherited from gem5::BaseMMU::Translation | |
| virtual | ~Translation () |
Public Member Functions inherited from gem5::Packet::SenderState | |
| SenderState () | |
| virtual | ~SenderState () |
Additional Inherited Members | |
Public Attributes inherited from gem5::o3::LSQ::LSQRequest | |
| LSQUnit & | _port |
| const DynInstPtr | _inst |
| uint32_t | _taskId |
| PacketDataPtr | _data |
| std::vector< PacketPtr > | _packets |
| std::vector< RequestPtr > | _reqs |
| 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 |
Public Attributes inherited from gem5::Packet::SenderState | |
| SenderState * | predecessor |
Protected Types inherited from gem5::o3::LSQ::LSQRequest | |
| enum | Flag : FlagsStorage { IsLoad = 0x00000001, WriteBackToRegister = 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 inherited from gem5::o3::LSQ::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... | |
| 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... | |
| void | release (Flag reason) |
| Release the LSQRequest. More... | |
| void | addReq (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 inherited from gem5::o3::LSQ::LSQRequest | |
| FlagsType | flags |
| State | _state |
| uint32_t | numTranslatedFragments |
| uint32_t | numInTranslationFragments |
|
inline |
|
inlinevirtual |
|
virtual |
Implements gem5::o3::LSQ::LSQRequest.
Definition at line 1155 of file lsq.cc.
References gem5::Packet::createRead(), gem5::Packet::createWrite(), and DPRINTF.
|
virtual |
Implements gem5::BaseMMU::Translation.
Reimplemented in gem5::o3::LSQ::HtmCmdRequest.
Definition at line 851 of file lsq.cc.
References gem5::o3::LSQ::LSQRequest::_fault, gem5::o3::LSQ::LSQRequest::_inst, gem5::o3::LSQ::LSQRequest::_res, gem5::o3::LSQ::LSQRequest::Fault, gem5::o3::LSQ::LSQRequest::flags, gem5::NoFault, gem5::o3::LSQ::LSQRequest::numInTranslationFragments, gem5::o3::LSQ::LSQRequest::numTranslatedFragments, gem5::o3::LSQ::LSQRequest::Request, gem5::Flags< T >::set(), gem5::o3::LSQ::LSQRequest::setState(), and gem5::o3::LSQ::LSQRequest::squashTranslation().
|
virtual |
Memory mapped IPR accesses.
Implements gem5::o3::LSQ::LSQRequest.
Definition at line 1271 of file lsq.cc.
References gem5::Packet::req, and gem5::o3::LSQ::thread.
|
virtual |
Implements gem5::o3::LSQ::LSQRequest.
Reimplemented in gem5::o3::LSQ::HtmCmdRequest.
|
virtual |
Test if the request accesses a particular cache line.
Implements gem5::o3::LSQ::LSQRequest.
Definition at line 1298 of file lsq.cc.
References gem5::o3::LSQ::LSQRequest::_reqs.
|
inlinevirtual |
Reimplemented from gem5::o3::LSQ::LSQRequest.
Reimplemented in gem5::o3::LSQ::HtmCmdRequest.
|
virtual |
Implements gem5::o3::LSQ::LSQRequest.
Definition at line 1120 of file lsq.cc.
References gem5::Complete.
|
virtual |
Implements gem5::o3::LSQ::LSQRequest.