Go to the documentation of this file.
32 #ifndef __ARCH_AMDGPU_VEGA_TLB_HH__
33 #define __ARCH_AMDGPU_VEGA_TLB_HH__
46 #include "params/VegaGPUTLB.hh"
65 GpuTLB(
const VegaGPUTLBParams &
p);
95 virtual bool squashed()
const {
return false; }
189 VegaTlbEntry *
insert(
Addr vpn, VegaTlbEntry &entry);
205 VegaTlbEntry *tlb_entry,
Mode mode);
208 Addr phys_page_addr);
327 #endif // __ARCH_AMDGPU_VEGA_TLB_HH__
This is a simple scalar statistic, like a counter.
statistics::Scalar pageTableCycles
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
VegaTlbEntry * tlbLookup(const RequestPtr &req, bool update_stats)
TLB_lookup will only perform a TLB lookup returning the TLB entry on a TLB hit and nullptr on a TLB m...
std::vector< CpuSidePort * > cpuSidePort
std::queue< Addr > cleanupQueue
std::vector< EntryList > freeList
void issueTLBLookup(PacketPtr pkt)
Do the TLB lookup for this coalesced request and schedule another event <TLB access latency> cycles l...
VegaTlbEntry * lookup(Addr va, bool update_lru=true)
Addr pageAlign(Addr vaddr)
bool FA
true if this is a fully-associative TLB
statistics::Scalar localCycles
GpuTLB(const VegaGPUTLBParams &p)
EntryList::iterator lookupIt(Addr va, bool update_lru=true)
VegaTlbEntry * insert(Addr vpn, VegaTlbEntry &entry)
virtual bool recvTimingReq(PacketPtr pkt)
recvTiming receives a coalesced timing request from a TLBCoalescer and it calls issueTLBLookup() It o...
statistics::Scalar localNumTLBHits
statistics::Scalar globalNumTLBAccesses
void walkerResponse(VegaTlbEntry &entry, PacketPtr pkt)
tlbOutcome outcome
outcome can be TLB_HIT, TLB_MISS, or PAGE_WALK
virtual void recvFunctional(PacketPtr pkt)
const PortID InvalidPortID
std::list< VegaTlbEntry * > EntryList
virtual bool squashed() const
This function is used by the page table walker to determine if it should translate the a pending requ...
statistics::Scalar globalNumTLBHits
std::vector< EntryList > entryList
An entryList per set is the equivalent of an LRU stack; it's used to guide replacement decisions.
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
std::deque< PacketPtr > retries
statistics::Scalar maxDownstreamReached
void demapPage(Addr va, uint64_t asn)
const char * description() const
Return a C string describing the event.
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
bool allocationPolicy
Allocation Policy: true if we always allocate on a hit, false otherwise.
void updateOutcome(tlbOutcome _outcome)
virtual void recvFunctional(PacketPtr pkt)
Receive a functional request packet from the peer.
bool hasMemSidePort
if true, then this is not the last level TLB
std::shared_ptr< FaultBase > Fault
std::unordered_map< Addr, TLBEvent * > translationReturnEvent
virtual void recvRangeChange()
statistics::Formula globalTLBMissRate
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
statistics::Scalar accessCycles
virtual void recvReqRetry()
ProbePointArg< PacketInfo > Packet
Packet probe point.
virtual void markDelayed()=0
Signal that the translation has been delayed due to a hw page table walk.
gem5::VegaISA::GpuTLB::VegaTLBStats stats
uint64_t Tick
Tick count type.
statistics::Scalar localNumTLBMisses
std::shared_ptr< Request > RequestPtr
statistics::Formula localLatency
TLBEvent(GpuTLB *_tlb, Addr _addr, tlbOutcome outcome, PacketPtr _pkt)
virtual bool recvTimingResp(PacketPtr pkt)
MemSidePort receives the packet back.
Device model for an AMD GPU.
virtual void recvRespRetry()
Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called...
statistics::Scalar globalNumTLBMisses
void updatePhysAddresses(Addr virt_page_addr, VegaTlbEntry *tlb_entry, Addr phys_page_addr)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
statistics::Scalar outstandingReqsMax
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
virtual Tick recvAtomic(PacketPtr pkt)
void handleTranslationReturn(Addr addr, tlbOutcome outcome, PacketPtr pkt)
handleTranslationReturn is called on a TLB hit, when a TLB miss returns or when a page fault returns.
Fault createPagefault(Addr vaddr, Mode mode)
MemSidePort is the TLB Port closer to the memory side If this is a last level TLB then this port will...
A ResponsePort is a specialization of a port.
Ports are used to interface objects to each other.
MemSidePort(const std::string &_name, GpuTLB *gpu_TLB, PortID _index)
virtual AddrRangeList getAddrRanges() const
Get a list of the non-overlapping address ranges the owner is responsible for.
void pagingProtectionChecks(PacketPtr pkt, VegaTlbEntry *tlb_entry, Mode mode)
Do Paging protection checks.
CpuSidePort(const std::string &_name, GpuTLB *gpu_TLB, PortID _index)
void handleFuncTranslationReturn(PacketPtr pkt, tlbOutcome outcome)
handleFuncTranslationReturn is called on a TLB hit, when a TLB miss returns or when a page fault retu...
EventFunctionWrapper cleanupEvent
std::vector< MemSidePort * > memSidePort
std::vector< VegaTlbEntry > tlb
virtual void serialize(CheckpointOut &cp) const override
Serialize an object.
std::ostream CheckpointOut
virtual void unserialize(CheckpointIn &cp) override
Unserialize an object.
void translationReturn(Addr virtPageAddr, tlbOutcome outcome, PacketPtr pkt)
A TLBEvent is scheduled after the TLB lookup and helps us take the appropriate actions: (e....
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
virtual void recvReqRetry()
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
statistics::Scalar localNumTLBAccesses
virtual Tick recvAtomic(PacketPtr pkt)
Receive an atomic request packet from the peer.
virtual void recvRangeChange()
Called to receive an address range change from the peer response port.
virtual void finish(Fault fault, const RequestPtr &req, Mode mode)=0
The memory for this object may be dynamically allocated, and it may be responsible for cleaning itsle...
VegaTLBStats(statistics::Group *parent)
statistics::Formula localTLBMissRate
#define panic(...)
This implements a cprintf based panic() function.
Generated on Sun Jul 30 2023 01:56:33 for gem5 by doxygen 1.8.17