gem5 v24.0.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. | |
bool | trySend (TimingResponseProtocol *peer, PacketPtr pkt) const |
Check if the peer can handle a timing request. | |
bool | sendSnoopResp (TimingResponseProtocol *peer, PacketPtr pkt) |
Attempt to send a timing snoop response packet to it's peer by calling its corresponding receive function. | |
void | sendRetryResp (TimingResponseProtocol *peer) |
Send a retry to the peer that previously attempted a sendTimingResp to this protocol and failed. | |
virtual bool | recvTimingResp (PacketPtr pkt)=0 |
Receive a timing response from the peer. | |
virtual void | recvTimingSnoopReq (PacketPtr pkt)=0 |
Receive a timing snoop request from the peer. | |
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. | |
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. | |
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 gem5::AddrMapper::MapperRequestPort, gem5::AMDGPUMemoryManager::GPUMemPort, gem5::AtomicSimpleCPU::AtomicCPUPort, gem5::BaseKvmCPU::KVMCpuPort, gem5::BaseTrafficGen::TrafficGenPort, gem5::Bridge::BridgeRequestPort, gem5::CoherentXBar::CoherentXBarRequestPort, gem5::CoherentXBar::SnoopRespPort, gem5::CommMonitor::MonitorRequestPort, gem5::ComputeUnit::DataPort, gem5::ComputeUnit::DTLBPort, gem5::ComputeUnit::GMTokenPort, gem5::ComputeUnit::ITLBPort, gem5::ComputeUnit::LDSPort, gem5::ComputeUnit::ScalarDataPort, gem5::ComputeUnit::ScalarDTLBPort, gem5::ComputeUnit::SQCPort, gem5::DmaPort, gem5::GarnetSyntheticTraffic::CpuPort, gem5::Gicv3Its::DataPort, gem5::GUPSGen::GenPort, gem5::MemCheckerMonitor::MonitorRequestPort, gem5::MemTest::CpuPort, gem5::minor::Fetch1::IcachePort, gem5::minor::LSQ::DcachePort, gem5::NoncoherentXBar::NoncoherentXBarRequestPort, gem5::o3::Fetch::IcachePort, gem5::o3::LSQ::DcachePort, gem5::PortTerminator::ReqPort, gem5::ProtocolTester::GMTokenPort, gem5::ProtocolTester::SeqPort, gem5::QueuedRequestPort, gem5::RequestPortWrapper, gem5::RiscvISA::Walker::WalkerPort, gem5::ruby::AbstractController::MemoryPort, gem5::RubyDirectedTester::CpuPort, gem5::RubyTester::CpuPort, gem5::SerialLink::SerialLinkRequestPort, gem5::SimpleCache::MemSidePort, gem5::SimpleMemobj::MemSidePort, gem5::SMMURequestPort, gem5::SMMUTableWalkPort, gem5::SpatterGen::SpatterGenPort, gem5::SysBridge::SysBridgeTargetPort, gem5::System::SystemPort, gem5::ThreadBridge::OutgoingPort, gem5::TimingSimpleCPU::DcachePort, gem5::TimingSimpleCPU::IcachePort, gem5::TLBCoalescer::MemSidePort, gem5::TraceCPU::DcachePort, gem5::TraceCPU::IcachePort, gem5::VegaISA::GpuTLB::MemSidePort, gem5::VegaISA::Walker::WalkerPort, gem5::VegaTLBCoalescer::MemSidePort, gem5::X86ISA::GpuTLB::MemSidePort, gem5::X86ISA::Walker::WalkerPort, and sc_gem5::TlmToGem5Bridge< BITWIDTH >::BridgeRequestPort.
Referenced by gem5::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 gem5::CommMonitor::MonitorRequestPort, gem5::QueuedRequestPort, gem5::RequestPort, and gem5::SysBridge::SysBridgeTargetPort.
Referenced by gem5::TimingResponseProtocol::sendRetrySnoopResp().
|
protectedpure virtual |
Receive a timing response from the peer.
Implemented in gem5::AddrMapper::MapperRequestPort, gem5::AMDGPUMemoryManager::GPUMemPort, gem5::ArmISA::TableWalker::Port, gem5::AtomicSimpleCPU::AtomicCPUPort, gem5::BaseCache::MemSidePort, gem5::BaseKvmCPU::KVMCpuPort, gem5::BaseTrafficGen::TrafficGenPort, gem5::Bridge::BridgeRequestPort, gem5::CoherentXBar::CoherentXBarRequestPort, gem5::CoherentXBar::SnoopRespPort, gem5::CommMonitor::MonitorRequestPort, gem5::ComputeUnit::DataPort, gem5::ComputeUnit::DTLBPort, gem5::ComputeUnit::GMTokenPort, gem5::ComputeUnit::ITLBPort, gem5::ComputeUnit::LDSPort, gem5::ComputeUnit::ScalarDataPort, gem5::ComputeUnit::ScalarDTLBPort, gem5::ComputeUnit::SQCPort, gem5::DmaPort, gem5::GarnetSyntheticTraffic::CpuPort, gem5::Gicv3Its::DataPort, gem5::GUPSGen::GenPort, gem5::MemCheckerMonitor::MonitorRequestPort, gem5::MemDelay::RequestPort, gem5::MemTest::CpuPort, gem5::minor::Fetch1::IcachePort, gem5::minor::LSQ::DcachePort, gem5::NoncoherentXBar::NoncoherentXBarRequestPort, gem5::o3::Fetch::IcachePort, gem5::o3::LSQ::DcachePort, gem5::PortTerminator::ReqPort, gem5::ProtocolTester::GMTokenPort, gem5::ProtocolTester::SeqPort, gem5::RequestPortWrapper, gem5::RiscvISA::Walker::WalkerPort, gem5::ruby::AbstractController::MemoryPort, gem5::ruby::RubyPort::MemRequestPort, gem5::ruby::RubyPort::PioRequestPort, gem5::RubyDirectedTester::CpuPort, gem5::RubyTester::CpuPort, gem5::SerialLink::SerialLinkRequestPort, gem5::SimpleCache::MemSidePort, gem5::SimpleMemobj::MemSidePort, gem5::SMMUATSMemoryPort, gem5::SMMURequestPort, gem5::SMMUTableWalkPort, gem5::SpatterGen::SpatterGenPort, gem5::SysBridge::SysBridgeTargetPort, gem5::System::SystemPort, gem5::ThreadBridge::OutgoingPort, gem5::TimingSimpleCPU::DcachePort, gem5::TimingSimpleCPU::IcachePort, gem5::TLBCoalescer::MemSidePort, gem5::TraceCPU::DcachePort, gem5::TraceCPU::IcachePort, gem5::VegaISA::GpuTLB::MemSidePort, gem5::VegaISA::Walker::WalkerPort, gem5::VegaTLBCoalescer::MemSidePort, gem5::X86ISA::GpuTLB::MemSidePort, gem5::X86ISA::IntRequestPort< Device >, gem5::X86ISA::IntRequestPort< gem5::X86ISA::I82094AA >, gem5::X86ISA::IntRequestPort< gem5::X86ISA::Interrupts >, gem5::X86ISA::Walker::WalkerPort, and sc_gem5::TlmToGem5Bridge< BITWIDTH >::BridgeRequestPort.
Referenced by gem5::TimingResponseProtocol::sendResp().
|
protectedpure virtual |
Receive a timing snoop request from the peer.
Implemented in gem5::AddrMapper::MapperRequestPort, gem5::BaseCache::MemSidePort, gem5::BaseTrafficGen::TrafficGenPort, gem5::CoherentXBar::CoherentXBarRequestPort, gem5::CommMonitor::MonitorRequestPort, gem5::MemCheckerMonitor::MonitorRequestPort, gem5::MemDelay::RequestPort, gem5::MemTest::CpuPort, gem5::minor::LSQ::DcachePort, gem5::o3::LSQ::DcachePort, gem5::RequestPort, gem5::SysBridge::SysBridgeTargetPort, gem5::TimingSimpleCPU::DcachePort, gem5::TraceCPU::DcachePort, and gem5::TraceCPU::IcachePort.
Referenced by gem5::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 49 of file timing.cc.
References gem5::Packet::isRequest(), and gem5::TimingResponseProtocol::recvTimingReq().
Referenced by gem5::RequestPort::sendTimingReq().
|
protected |
Send a retry to the peer that previously attempted a sendTimingResp to this protocol and failed.
Definition at line 72 of file timing.cc.
References gem5::TimingResponseProtocol::recvRespRetry().
Referenced by gem5::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 64 of file timing.cc.
References gem5::Packet::isResponse(), and gem5::TimingResponseProtocol::recvTimingSnoopResp().
Referenced by gem5::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 56 of file timing.cc.
References gem5::Packet::isRequest(), and gem5::TimingResponseProtocol::tryTiming().
Referenced by gem5::RequestPort::tryTiming().
|
friend |