36 #ifndef __TLB_COALESCER_HH__ 37 #define __TLB_COALESCER_HH__ 45 #include "arch/isa.hh" 46 #include "arch/isa_traits.hh" 54 #include "params/TLBCoalescer.hh" 176 fatal(
"recvRespRetry() is not implemented in the TLB coalescer.\n");
196 virtual bool recvTimingResp(
PacketPtr pkt);
205 fatal(
"recvRespRetry() not implemented in TLB coalescer");
231 #endif // __TLB_COALESCER_HH__ A MasterPort is a specialisation of a BaseMasterPort, which implements the default protocol for the t...
Ports are used to interface objects to each other.
TLBCoalescer(const Params *p)
#define fatal(...)
This implements a cprintf based fatal() function.
CoalescingFIFO coalescerFIFO
void updatePhysAddresses(PacketPtr pkt)
const PortID InvalidPortID
The TLBCoalescer is a ClockedObject sitting on the front side (CPUSide) of each TLB.
Declaration of a request, the overall memory request consisting of the parts of the request that are ...
CoalescingTable issuedTranslationsTable
CpuSidePort(const std::string &_name, TLBCoalescer *tlb_coalescer, PortID _index)
A SlavePort is a specialisation of a port.
Tick Frequency
The simulated frequency of curTick(). (In ticks per second)
ThreadContext is the external interface to all thread state for anything outside of the CPU...
std::unordered_map< Addr, coalescedReq > CoalescingTable
virtual void recvRespRetry()
Declaration of Statistics objects.
This is a simple scalar statistic, like a counter.
MemSidePort(const std::string &_name, TLBCoalescer *tlb_coalescer, PortID _index)
virtual void recvRangeChange()
Stats::Scalar localqueuingCycles
std::queue< Addr > cleanupQueue
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
void processCleanupEvent()
Tick curTick()
The current simulated tick.
EventFunctionWrapper probeTLBEvent
This event issues the TLB probes.
uint64_t Tick
Tick count type.
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
TLBCoalescerParams Params
ClockedObject declaration and implementation.
Stats::Formula localLatency
Tick ticks(int numCycles) const
Stats::Scalar coalescedAccesses
EventFunctionWrapper cleanupEvent
The cleanupEvent is scheduled after a TLBEvent triggers in order to free memory and do the required c...
std::vector< CpuSidePort * > cpuSidePort
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
virtual void recvFunctional(PacketPtr pkt)
Receive a functional request packet from the peer.
virtual Tick recvAtomic(PacketPtr pkt)
Receive an atomic request packet from the peer.
std::vector< MemSidePort * > memSidePort
virtual AddrRangeList getAddrRanges() const
Get a list of the non-overlapping address ranges the owner is responsible for.
void regStats() override
Callback to set stat parameters.
Stats::Scalar uncoalescedAccesses
virtual void recvRangeChange()
Called to receive an address range change from the peer slave port.
virtual void recvReqRetry()
virtual void recvRespRetry()
Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called...
Stats::Scalar queuingCycles
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 Tick recvAtomic(PacketPtr pkt)
std::vector< PacketPtr > coalescedReq
void processProbeTLBEvent()
bool canCoalesce(PacketPtr pkt1, PacketPtr pkt2)
std::deque< PacketPtr > retries
std::unordered_map< int64_t, std::vector< coalescedReq > > CoalescingFIFO
Tick tickToCycles(Tick val) const