Go to the documentation of this file.
32 #ifndef __ARCH_AMDGPU_VEGA_TLB_COALESCER_HH__
33 #define __ARCH_AMDGPU_VEGA_TLB_COALESCER_HH__
44 #include "params/VegaTLBCoalescer.hh"
156 fatal(
"recvRespRetry() is not implemented in the TLB "
186 fatal(
"recvRespRetry() not implemented in TLB coalescer");
250 #endif // __ARCH_AMDGPU_VEGA_TLB_COALESCER_HH__
This is a simple scalar statistic, like a counter.
bool mustStallCUPort(CpuSidePort *)
void regStats() override
Callback to set stat parameters.
#define fatal(...)
This implements a cprintf based fatal() function.
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
statistics::Scalar queuingCycles
std::map< CpuSidePort *, CpuSidePort * > stalledPortsMap
CpuSidePort * stalledPort
CpuSidePort(const std::string &_name, VegaTLBCoalescer *tlb_coalescer, PortID _index)
void decrementNumDownstream()
std::vector< PacketPtr > coalescedReq
std::map< Tick, std::vector< coalescedReq > > CoalescingFIFO
VegaTLBCoalescer(const VegaTLBCoalescerParams &p)
void processCleanupEvent()
statistics::Scalar coalescedAccesses
CoalescingTable issuedTranslationsTable
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
std::queue< CpuSidePort * > stalledPortsQueue
statistics::Scalar localqueuingCycles
VegaTLBCoalescer * coalescer
virtual void recvRespRetry()
Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called...
const PortID InvalidPortID
virtual void recvRangeChange()
VegaTLBCoalescer * coalescer
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
void incrementNumDownstream()
unsigned int availDownstreamSlots()
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
The VegaTLBCoalescer is a ClockedObject sitting on the front side (CPUSide) of each TLB.
virtual AddrRangeList getAddrRanges() const
Get a list of the non-overlapping address ranges the owner is responsible for.
ProbePointArg< PacketInfo > Packet
Packet probe point.
uint64_t Tick
Tick count type.
MemSidePort(const std::string &_name, VegaTLBCoalescer *tlb_coalescer, PortID _index)
void insertStalledPortIfNotMapped(CpuSidePort *)
virtual Tick recvAtomic(PacketPtr pkt)
Receive an atomic request packet from the peer.
virtual void recvFunctional(PacketPtr pkt)
EventFunctionWrapper probeTLBEvent
This event issues the TLB probes.
CoalescingFIFO coalescerFIFO
virtual void recvReqRetry()
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
std::deque< PacketPtr > retries
virtual Tick recvAtomic(PacketPtr pkt)
bool canCoalesce(PacketPtr pkt1, PacketPtr pkt2)
A ResponsePort is a specialization of a port.
statistics::Scalar uncoalescedAccesses
virtual void recvReqRetry()
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
virtual void recvRespRetry()
statistics::Scalar localCycles
unsigned int numDownstream
Ports are used to interface objects to each other.
std::queue< Addr > cleanupQueue
EventFunctionWrapper cleanupEvent
The cleanupEvent is scheduled after a TLBEvent triggers in order to free memory and do the required c...
virtual void recvFunctional(PacketPtr pkt)
Receive a functional request packet from the peer.
std::unordered_map< Addr, coalescedReq > CoalescingTable
statistics::Formula localLatency
statistics::Formula latency
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
virtual void recvRangeChange()
Called to receive an address range change from the peer response port.
std::vector< CpuSidePort * > cpuSidePort
virtual bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the peer.
void processProbeTLBEvent()
virtual bool recvTimingReq(PacketPtr pkt)
Receive a timing request from the peer.
void updatePhysAddresses(PacketPtr pkt)
std::vector< MemSidePort * > memSidePort
Generated on Sun Jul 30 2023 01:56:33 for gem5 by doxygen 1.8.17