36 #ifndef __TLB_COALESCER_HH__
37 #define __TLB_COALESCER_HH__
45 #include "arch/isa.hh"
46 #include "arch/isa_traits.hh"
55 #include "params/TLBCoalescer.hh"
176 fatal(
"recvRespRetry() is not implemented in the TLB coalescer.\n");
205 fatal(
"recvRespRetry() not implemented in TLB coalescer");
252 #endif // __TLB_COALESCER_HH__
A MasterPort is a specialisation of a BaseMasterPort, which implements the default protocol for the t...
TLBCoalescer(const Params *p)
virtual void recvFunctional(PacketPtr pkt)
CoalescingFIFO coalescerFIFO
void updatePhysAddresses(PacketPtr pkt)
virtual void recvReqRetry()
Called by the slave port if sendTimingReq was called on this master port (causing recvTimingReq to be...
const char * description() const
Return a C string describing the event.
The TLBCoalescer is a MemObject 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 ...
Tick ticks(int numCycles) const
BaseSlavePort & getSlavePort(const std::string &if_name, PortID idx)
Get a slave port with a given name and index.
CoalescingTable issuedTranslationsTable
CpuSidePort(const std::string &_name, TLBCoalescer *tlb_coalescer, PortID _index)
A SlavePort is a specialisation of a port.
CleanupEvent(TLBCoalescer *_coalescer)
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()
A BaseSlavePort is a protocol-agnostic slave port, responsible only for the structural connection to ...
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
IssueProbeEvent(TLBCoalescer *_coalescer)
std::queue< Addr > cleanupQueue
Tick tickToCycles(Tick val) const
Tick curTick()
The current simulated tick.
BaseMasterPort & getMasterPort(const std::string &if_name, PortID idx)
Get a master port with a given name and index.
uint64_t Tick
Tick count type.
const char * description() const
Return a C string describing the event.
TLBCoalescerParams Params
Stats::Formula localLatency
Stats::Scalar coalescedAccesses
std::vector< CpuSidePort * > cpuSidePort
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
CleanupEvent cleanupEvent
virtual void recvFunctional(PacketPtr pkt)
Receive a functional request packet from the master port.
virtual Tick recvAtomic(PacketPtr pkt)
Receive an atomic request packet from the master port.
std::vector< MemSidePort * > memSidePort
The MemObject class extends the ClockedObject with accessor functions to get its master and slave por...
A BaseMasterPort is a protocol-agnostic master port, responsible only for the structural connection t...
IssueProbeEvent probeTLBEvent
virtual AddrRangeList getAddrRanges() const
Get a list of the non-overlapping address ranges the owner is responsible for.
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 master port if sendTimingResp was called on this slave port (causing recvTimingResp to ...
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 master port.
virtual Tick recvAtomic(PacketPtr pkt)
std::vector< PacketPtr > coalescedReq
bool canCoalesce(PacketPtr pkt1, PacketPtr pkt2)
std::deque< PacketPtr > retries
std::unordered_map< int64_t, std::vector< coalescedReq > > CoalescingFIFO
void regStats()
Register statistics for this object.
virtual bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the slave port.