|
gem5 [DEVELOP-FOR-25.0]
|
SingleDataRequest is used for requests that don't fragment. More...
#include <lsq.hh>
Public Member Functions | |
| void | startAddrTranslation () |
| Send single translation request. | |
| PacketPtr | getHeadPacket () |
| Get the head packet as counted by numIssuedFragments. | |
| void | stepToNextPacket () |
| Remember that the packet has been sent. | |
| bool | hasPacketsInMemSystem () |
| Has packet been sent. | |
| bool | sentAllPackets () |
| packetInFlight can become false again, so need to check packetSent | |
| void | retireResponse (PacketPtr packet_) |
| Keep the given packet as the response packet LSQRequest::packet. | |
| SingleDataRequest (LSQ &port_, MinorDynInstPtr inst_, bool isLoad_, PacketDataPtr data_=NULL, uint64_t *res_=NULL) | |
Public Member Functions inherited from gem5::minor::LSQ::LSQRequest | |
| LSQRequest (LSQ &port_, MinorDynInstPtr inst_, bool isLoad_, PacketDataPtr data_=NULL, uint64_t *res_=NULL) | |
| virtual | ~LSQRequest () |
| void | makePacket () |
| Make a packet to use with the memory transaction. | |
| bool | skippedMemAccess () |
| Was no memory access attempted for this request? | |
| void | setSkipped () |
| Set this request as having been skipped before a memory transfer was attempt. | |
| AddrRangeCoverage | containsAddrRangeOf (LSQRequest *other_request) |
| Does this request's address range fully cover the range of other_request? | |
| virtual bool | isBarrier () |
| Is this a request a barrier? | |
| bool | needsToBeSentToStoreBuffer () |
| This request, once processed by the requests/transfers queues, will need to go to the store buffer. | |
| void | setState (LSQRequestState new_state) |
| Set state and output trace output. | |
| bool | isComplete () const |
| Has this request been completed. | |
| void | reportData (std::ostream &os) const |
| MinorTrace report interface. | |
Public Member Functions inherited from gem5::BaseMMU::Translation | |
| virtual | ~Translation () |
| virtual bool | squashed () const |
| 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. | |
Public Member Functions inherited from gem5::Packet::SenderState | |
| SenderState () | |
| virtual | ~SenderState () |
Protected Member Functions | |
| void | finish (const Fault &fault_, const RequestPtr &request_, ThreadContext *tc, BaseMMU::Mode mode) |
| TLB interace. | |
Protected Member Functions inherited from gem5::minor::LSQ::LSQRequest | |
| void | markDelayed () |
| BaseMMU::Translation interface. | |
| void | tryToSuppressFault () |
| Instructions may want to suppress translation faults (e.g. | |
| void | disableMemAccess () |
| void | completeDisabledMemAccess () |
Protected Attributes | |
| bool | packetInFlight |
| Has my only packet been sent to the memory system but has not yet been responded to. | |
| bool | packetSent |
| Has the packet been at least sent to the memory system? | |
Additional Inherited Members | |
Public Types inherited from gem5::minor::LSQ::LSQRequest | |
| enum | LSQRequestState { NotIssued , InTranslation , Translated , Failed , RequestIssuing , StoreToStoreBuffer , RequestNeedsRetry , StoreInStoreBuffer , StoreBufferIssuing , StoreBufferNeedsRetry , Complete } |
Static Public Member Functions inherited from gem5::minor::LSQ::LSQRequest | |
| static AddrRangeCoverage | containsAddrRangeOf (Addr req1_addr, unsigned int req1_size, Addr req2_addr, unsigned int req2_size) |
| Does address range req1 (req1_addr to req1_addr + req1_size - 1) fully cover, partially cover or not cover at all the range req2. | |
Public Attributes inherited from gem5::minor::LSQ::LSQRequest | |
| LSQ & | port |
| Owning port. | |
| MinorDynInstPtr | inst |
| Instruction which made this request. | |
| bool | isLoad |
| Load/store indication used for building packet. | |
| PacketDataPtr | data |
| Dynamically allocated and populated data carried for building write packets. | |
| PacketPtr | packet |
| RequestPtr | request |
| The underlying request of this LSQRequest. | |
| uint64_t * | res |
| Res from pushRequest. | |
| bool | skipped |
| Was skipped. | |
| bool | issuedToMemory |
| This in an access other than a normal cacheable load that's visited the memory system. | |
| bool | isTranslationDelayed |
| Address translation is delayed due to table walk. | |
| LSQRequestState | state |
Public Attributes inherited from gem5::Packet::SenderState | |
| SenderState * | predecessor |
SingleDataRequest is used for requests that don't fragment.
|
inline |
Definition at line 381 of file lsq.hh.
References gem5::minor::LSQ::LSQ(), gem5::minor::LSQ::LSQRequest::LSQRequest(), packetInFlight, and packetSent.
|
protectedvirtual |
TLB interace.
Implements gem5::BaseMMU::Translation.
Definition at line 271 of file lsq.cc.
References gem5::minor::LSQ::LSQRequest::Complete, gem5::minor::LSQ::LSQRequest::completeDisabledMemAccess(), DPRINTFS, gem5::minor::Pipeline::ExecuteStageId, gem5::minor::LSQ::LSQRequest::inst, gem5::minor::LSQ::LSQRequest::isTranslationDelayed, gem5::minor::LSQ::LSQRequest::makePacket(), gem5::ArmISA::mode, gem5::NoFault, gem5::minor::LSQ::LSQRequest::port, gem5::minor::LSQ::LSQRequest::setState(), gem5::minor::LSQ::LSQRequest::Translated, and gem5::minor::LSQ::LSQRequest::tryToSuppressFault().
|
inlinevirtual |
Get the head packet as counted by numIssuedFragments.
Implements gem5::minor::LSQ::LSQRequest.
Definition at line 364 of file lsq.hh.
References gem5::minor::LSQ::LSQRequest::packet.
|
inlinevirtual |
Has packet been sent.
Implements gem5::minor::LSQ::LSQRequest.
Definition at line 370 of file lsq.hh.
References packetInFlight.
|
virtual |
Keep the given packet as the response packet LSQRequest::packet.
Implements gem5::minor::LSQ::LSQRequest.
Definition at line 325 of file lsq.cc.
References gem5::minor::LSQ::LSQRequest::Complete, DPRINTFS, gem5::minor::LSQ::LSQRequest::packet, packetInFlight, gem5::minor::LSQ::LSQRequest::port, and gem5::minor::LSQ::LSQRequest::setState().
|
inlinevirtual |
packetInFlight can become false again, so need to check packetSent
Implements gem5::minor::LSQ::LSQRequest.
Definition at line 374 of file lsq.hh.
References packetSent.
|
virtual |
Send single translation request.
Implements gem5::minor::LSQ::LSQRequest.
Definition at line 301 of file lsq.cc.
References gem5::minor::LSQ::LSQRequest::Complete, gem5::minor::LSQ::LSQRequest::disableMemAccess(), DPRINTFS, gem5::ThreadContext::getMMUPtr(), gem5::minor::LSQ::LSQRequest::inst, gem5::minor::LSQ::LSQRequest::InTranslation, gem5::isAnyActiveElement(), gem5::minor::LSQ::LSQRequest::isLoad, gem5::minor::LSQ::LSQRequest::port, gem5::BaseMMU::Read, gem5::minor::LSQ::LSQRequest::request, gem5::minor::LSQ::LSQRequest::setState(), gem5::BaseMMU::translateTiming(), and gem5::BaseMMU::Write.
|
inlinevirtual |
Remember that the packet has been sent.
Implements gem5::minor::LSQ::LSQRequest.
Definition at line 367 of file lsq.hh.
References packetInFlight, and packetSent.
|
protected |
Has my only packet been sent to the memory system but has not yet been responded to.
Definition at line 354 of file lsq.hh.
Referenced by hasPacketsInMemSystem(), retireResponse(), SingleDataRequest(), and stepToNextPacket().
|
protected |
Has the packet been at least sent to the memory system?
Definition at line 357 of file lsq.hh.
Referenced by sentAllPackets(), SingleDataRequest(), and stepToNextPacket().