Go to the documentation of this file.
34 #ifndef __TLB_COALESCER_HH__
35 #define __TLB_COALESCER_HH__
43 #include "arch/isa.hh"
51 #include "params/TLBCoalescer.hh"
100 typedef std::unordered_map<int64_t, std::vector<coalescedReq>>
142 fatal(
"recvRespRetry() is not implemented in the TLB "
172 fatal(
"recvRespRetry() not implemented in TLB coalescer");
221 #endif // __TLB_COALESCER_HH__
#define fatal(...)
This implements a cprintf based fatal() function.
A ResponsePort is a specialization of a port.
CoalescingTable issuedTranslationsTable
EventFunctionWrapper cleanupEvent
The cleanupEvent is scheduled after a TLBEvent triggers in order to free memory and do the required c...
std::unordered_map< Addr, coalescedReq > CoalescingTable
void processCleanupEvent()
CoalescingFIFO coalescerFIFO
const PortID InvalidPortID
The TLBCoalescer is a ClockedObject sitting on the front side (CPUSide) of each TLB.
TLBCoalescerParams Params
virtual void recvFunctional(PacketPtr pkt)
bool canCoalesce(PacketPtr pkt1, PacketPtr pkt2)
MemSidePort(const std::string &_name, TLBCoalescer *tlb_coalescer, PortID _index)
uint64_t Tick
Tick count type.
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
virtual AddrRangeList getAddrRanges() const
Get a list of the non-overlapping address ranges the owner is responsible for.
TLBCoalescer::TLBCoalescerStats stats
std::unordered_map< int64_t, std::vector< coalescedReq > > CoalescingFIFO
CpuSidePort(const std::string &_name, TLBCoalescer *tlb_coalescer, PortID _index)
virtual void recvReqRetry()
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
Stats::Scalar localqueuingCycles
This is a simple scalar statistic, like a counter.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
virtual bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the peer.
Ports are used to interface objects to each other.
void updatePhysAddresses(PacketPtr pkt)
void processProbeTLBEvent()
virtual bool recvTimingReq(PacketPtr pkt)
Receive a timing request from the peer.
Stats::Scalar uncoalescedAccesses
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
virtual void recvFunctional(PacketPtr pkt)
Receive a functional request packet from the peer.
TLBCoalescerStats(Stats::Group *parent)
virtual void recvRangeChange()
Called to receive an address range change from the peer response port.
virtual void recvRespRetry()
std::vector< MemSidePort * > memSidePort
EventFunctionWrapper probeTLBEvent
This event issues the TLB probes.
Stats::Formula localLatency
std::deque< PacketPtr > retries
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
std::queue< Addr > cleanupQueue
virtual void recvRangeChange()
TLBCoalescer(const Params &p)
std::vector< CpuSidePort * > cpuSidePort
std::vector< PacketPtr > coalescedReq
virtual void recvRespRetry()
Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called...
Stats::Scalar coalescedAccesses
virtual Tick recvAtomic(PacketPtr pkt)
virtual Tick recvAtomic(PacketPtr pkt)
Receive an atomic request packet from the peer.
virtual void recvReqRetry()
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
Stats::Scalar queuingCycles
Generated on Tue Mar 23 2021 19:41:27 for gem5 by doxygen 1.8.17