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>>
160 fatal(
"recvRespRetry() is not implemented in the TLB "
190 fatal(
"recvRespRetry() not implemented in TLB coalescer");
216 #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.
Stats::Scalar uncoalescedAccesses
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(const Params *p)
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 ...
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.
Stats::Formula localLatency
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.
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.
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.
std::deque< PacketPtr > retries
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Stats::Scalar localqueuingCycles
std::queue< Addr > cleanupQueue
Stats::Scalar queuingCycles
virtual void recvRangeChange()
void regStats() override
Callback to set stat parameters.
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...
Generated on Wed Sep 30 2020 14:02:12 for gem5 by doxygen 1.8.17