Go to the documentation of this file.
34 #ifndef __TLB_COALESCER_HH__
35 #define __TLB_COALESCER_HH__
51 #include "params/TLBCoalescer.hh"
103 typedef std::map<int64_t, std::vector<coalescedReq>>
145 fatal(
"recvRespRetry() is not implemented in the TLB "
175 fatal(
"recvRespRetry() not implemented in TLB coalescer");
226 #endif // __TLB_COALESCER_HH__
This is a simple scalar statistic, like a counter.
statistics::Scalar queuingCycles
#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.
virtual bool recvTimingReq(PacketPtr pkt)
Receive a timing request from the peer.
virtual void recvRangeChange()
MemSidePort(const std::string &_name, TLBCoalescer *tlb_coalescer, PortID _index)
virtual void recvReqRetry()
void processCleanupEvent()
virtual Tick recvAtomic(PacketPtr pkt)
CoalescingTable issuedTranslationsTable
std::queue< Addr > cleanupQueue
std::vector< MemSidePort * > memSidePort
const PortID InvalidPortID
void processProbeTLBEvent()
virtual void recvFunctional(PacketPtr pkt)
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
virtual bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the peer.
virtual void recvRespRetry()
TLBCoalescer(const Params &p)
virtual void recvRangeChange()
Called to receive an address range change from the peer response port.
void updatePhysAddresses(PacketPtr pkt)
std::map< int64_t, std::vector< coalescedReq > > CoalescingFIFO
virtual void recvReqRetry()
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
ProbePointArg< PacketInfo > Packet
Packet probe point.
uint64_t Tick
Tick count type.
std::vector< PacketPtr > coalescedReq
std::unordered_map< Addr, coalescedReq > CoalescingTable
virtual AddrRangeList getAddrRanges() const
Get a list of the non-overlapping address ranges the owner is responsible for.
statistics::Formula localLatency
std::vector< CpuSidePort * > cpuSidePort
EventFunctionWrapper cleanupEvent
The cleanupEvent is scheduled after a TLBEvent triggers in order to free memory and do the required c...
bool canCoalesce(PacketPtr pkt1, PacketPtr pkt2)
CoalescingFIFO coalescerFIFO
virtual void recvRespRetry()
Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called...
statistics::Scalar localqueuingCycles
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
The TLBCoalescer is a ClockedObject sitting on the front side (CPUSide) of each TLB.
CpuSidePort(const std::string &_name, TLBCoalescer *tlb_coalescer, PortID _index)
EventFunctionWrapper probeTLBEvent
This event issues the TLB probes.
A ResponsePort is a specialization of a port.
statistics::Scalar uncoalescedAccesses
statistics::Scalar coalescedAccesses
std::deque< PacketPtr > retries
Ports are used to interface objects to each other.
gem5::TLBCoalescer::TLBCoalescerStats stats
TLBCoalescerParams Params
TLBCoalescerStats(statistics::Group *parent)
virtual Tick recvAtomic(PacketPtr pkt)
Receive an atomic request packet from the peer.
virtual void recvFunctional(PacketPtr pkt)
Receive a functional request packet from the peer.
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
Generated on Tue Sep 21 2021 12:25:25 for gem5 by doxygen 1.8.17