gem5
v20.1.0.0
|
#include <timing.hh>
Protected Member Functions | |
bool | sendReq (TimingResponseProtocol *peer, PacketPtr pkt) |
Attempt to send a timing request to the peer by calling its corresponding receive function. More... | |
bool | trySend (TimingResponseProtocol *peer, PacketPtr pkt) const |
Check if the peer can handle a timing request. More... | |
bool | sendSnoopResp (TimingResponseProtocol *peer, PacketPtr pkt) |
Attempt to send a timing snoop response packet to it's peer by calling its corresponding receive function. More... | |
void | sendRetryResp (TimingResponseProtocol *peer) |
Send a retry to the peer that previously attempted a sendTimingResp to this protocol and failed. More... | |
virtual bool | recvTimingResp (PacketPtr pkt)=0 |
Receive a timing response from the peer. More... | |
virtual void | recvTimingSnoopReq (PacketPtr pkt)=0 |
Receive a timing snoop request from the peer. More... | |
virtual void | recvReqRetry ()=0 |
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on the peer) and was unsuccessful. More... | |
virtual void | recvRetrySnoopResp ()=0 |
Called by the peer if sendTimingSnoopResp was called on this protocol (causing recvTimingSnoopResp to be called on the peer) and was unsuccessful. More... | |
Friends | |
class | TimingResponseProtocol |
|
protectedpure virtual |
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on the peer) and was unsuccessful.
Implemented in ComputeUnit::ScalarDTLBPort, ComputeUnit::ScalarDataPort, BaseKvmCPU::KVMCpuPort, CoherentXBar::SnoopRespPort, CoherentXBar::CoherentXBarRequestPort, SimpleCache::MemSidePort, SimpleMemobj::MemSidePort, NoncoherentXBar::NoncoherentXBarRequestPort, DmaPort, Minor::LSQ::DcachePort, sc_gem5::TlmToGem5Bridge< BITWIDTH >::BridgeRequestPort, System::SystemPort, ComputeUnit::LDSPort, ComputeUnit::ITLBPort, ComputeUnit::DTLBPort, ComputeUnit::SQCPort, ComputeUnit::DataPort, ComputeUnit::GMTokenPort, Bridge::BridgeRequestPort, TraceCPU::DcachePort, SerialLink::SerialLinkRequestPort, X86ISA::GpuTLB::MemSidePort, TraceCPU::IcachePort, AbstractController::MemoryPort, TimingSimpleCPU::DcachePort, TimingSimpleCPU::IcachePort, TLBCoalescer::MemSidePort, CommMonitor::MonitorRequestPort, LSQ< Impl >::DcachePort, AddrMapper::MapperRequestPort, BaseTrafficGen::TrafficGenPort, MemCheckerMonitor::MonitorRequestPort, AtomicSimpleCPU::AtomicCPUPort, QueuedRequestPort, MemTest::CpuPort, DefaultFetch< Impl >::IcachePort, Gicv3Its::DataPort, GarnetSyntheticTraffic::CpuPort, RubyTester::CpuPort, Minor::Fetch1::IcachePort, RiscvISA::Walker::WalkerPort, X86ISA::Walker::WalkerPort, SMMUTableWalkPort, RubyDirectedTester::CpuPort, and SMMURequestPort.
Referenced by TimingResponseProtocol::sendRetryReq().
|
protectedpure virtual |
Called by the peer if sendTimingSnoopResp was called on this protocol (causing recvTimingSnoopResp to be called on the peer) and was unsuccessful.
Implemented in RequestPort, CommMonitor::MonitorRequestPort, and QueuedRequestPort.
Referenced by TimingResponseProtocol::sendRetrySnoopResp().
|
protectedpure virtual |
Receive a timing response from the peer.
Implemented in ComputeUnit::GMTokenPort, ComputeUnit::ScalarDTLBPort, ComputeUnit::ScalarDataPort, BaseKvmCPU::KVMCpuPort, CoherentXBar::SnoopRespPort, CoherentXBar::CoherentXBarRequestPort, SimpleCache::MemSidePort, SimpleMemobj::MemSidePort, NoncoherentXBar::NoncoherentXBarRequestPort, DmaPort, X86ISA::IntRequestPort< Device >, X86ISA::IntRequestPort< X86ISA::Interrupts >, X86ISA::IntRequestPort< X86ISA::I82094AA >, Minor::LSQ::DcachePort, sc_gem5::TlmToGem5Bridge< BITWIDTH >::BridgeRequestPort, System::SystemPort, MemDelay::RequestPort, ComputeUnit::LDSPort, ComputeUnit::ITLBPort, ComputeUnit::DTLBPort, ComputeUnit::SQCPort, ComputeUnit::DataPort, Bridge::BridgeRequestPort, SerialLink::SerialLinkRequestPort, TraceCPU::DcachePort, X86ISA::GpuTLB::MemSidePort, TraceCPU::IcachePort, AbstractController::MemoryPort, TimingSimpleCPU::DcachePort, BaseCache::MemSidePort, TimingSimpleCPU::IcachePort, TLBCoalescer::MemSidePort, LSQ< Impl >::DcachePort, CommMonitor::MonitorRequestPort, BaseTrafficGen::TrafficGenPort, AtomicSimpleCPU::AtomicCPUPort, AddrMapper::MapperRequestPort, SMMUATSMemoryPort, RubyPort::PioRequestPort, MemCheckerMonitor::MonitorRequestPort, DefaultFetch< Impl >::IcachePort, MemTest::CpuPort, Gicv3Its::DataPort, GarnetSyntheticTraffic::CpuPort, RubyTester::CpuPort, Minor::Fetch1::IcachePort, RiscvISA::Walker::WalkerPort, RubyPort::MemRequestPort, X86ISA::Walker::WalkerPort, SMMUTableWalkPort, RubyDirectedTester::CpuPort, and SMMURequestPort.
Referenced by TimingResponseProtocol::sendResp().
|
protectedpure virtual |
Receive a timing snoop request from the peer.
Implemented in RequestPort, CoherentXBar::CoherentXBarRequestPort, Minor::LSQ::DcachePort, MemDelay::RequestPort, TraceCPU::DcachePort, TraceCPU::IcachePort, TimingSimpleCPU::DcachePort, BaseCache::MemSidePort, CommMonitor::MonitorRequestPort, LSQ< Impl >::DcachePort, BaseTrafficGen::TrafficGenPort, AddrMapper::MapperRequestPort, MemCheckerMonitor::MonitorRequestPort, and MemTest::CpuPort.
Referenced by TimingResponseProtocol::sendSnoopReq().
|
protected |
Attempt to send a timing request to the peer by calling its corresponding receive function.
If the send does not succeed, as indicated by the return value, then the sender must wait for a recvReqRetry at which point it can re-issue a sendTimingReq.
peer | Peer to send packet to. |
pkt | Packet to send. |
Definition at line 46 of file timing.cc.
References Packet::isRequest(), and TimingResponseProtocol::recvTimingReq().
Referenced by RequestPort::sendTimingReq().
|
protected |
Send a retry to the peer that previously attempted a sendTimingResp to this protocol and failed.
Definition at line 69 of file timing.cc.
References TimingResponseProtocol::recvRespRetry().
Referenced by RequestPort::sendRetryResp().
|
protected |
Attempt to send a timing snoop response packet to it's peer by calling its corresponding receive function.
If the send does not succeed, as indicated by the return value, then the sender must wait for a recvRetrySnoop at which point it can re-issue a sendTimingSnoopResp.
pkt | Packet to send. |
Definition at line 61 of file timing.cc.
References Packet::isResponse(), and TimingResponseProtocol::recvTimingSnoopResp().
Referenced by RequestPort::sendTimingSnoopResp().
|
protected |
Check if the peer can handle a timing request.
If the send cannot be handled at the moment, as indicated by the return value, then the sender will receive a recvReqRetry at which point it can re-issue a sendTimingReq.
peer | Peer to send packet to. |
pkt | Packet to send. |
Definition at line 53 of file timing.cc.
References Packet::isRequest(), and TimingResponseProtocol::tryTiming().
Referenced by RequestPort::tryTiming().
|
friend |