gem5 v24.0.0.0
|
#include <timing.hh>
Protected Member Functions | |
bool | sendResp (TimingRequestProtocol *peer, PacketPtr pkt) |
Attempt to send a timing response to the peer by calling its corresponding receive function. | |
void | sendSnoopReq (TimingRequestProtocol *peer, PacketPtr pkt) |
Attempt to send a timing snoop request packet to the peer by calling its corresponding receive function. | |
void | sendRetryReq (TimingRequestProtocol *peer) |
Send a retry to the peer that previously attempted a sendTimingReq to this protocol and failed. | |
void | sendRetrySnoopResp (TimingRequestProtocol *peer) |
Send a retry to the peer that previously attempted a sendTimingSnoopResp to this peer and failed. | |
virtual bool | recvTimingReq (PacketPtr pkt)=0 |
Receive a timing request from the peer. | |
virtual bool | tryTiming (PacketPtr pkt)=0 |
Availability request from the peer. | |
virtual bool | recvTimingSnoopResp (PacketPtr pkt)=0 |
Receive a timing snoop response from the peer. | |
virtual void | recvRespRetry ()=0 |
Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called on the peer) and was unsuccessful. | |
Friends | |
class | TimingRequestProtocol |
|
protectedpure virtual |
Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called on the peer) and was unsuccessful.
Implemented in gem5::AddrMapper::MapperResponsePort, gem5::Bridge::BridgeResponsePort, gem5::CommMonitor::MonitorResponsePort, gem5::LdsState::CuSidePort, gem5::MemCheckerMonitor::MonitorResponsePort, gem5::memory::CfiMemory::MemoryPort, gem5::memory::DRAMSim2::MemoryPort, gem5::memory::DRAMsim3::MemoryPort, gem5::memory::SimpleMemory::MemoryPort, gem5::OutgoingRequestBridge::OutgoingRequestPort, gem5::QueuedResponsePort, gem5::ResponsePortWrapper, gem5::SerialLink::SerialLinkResponsePort, gem5::SimpleCache::CPUSidePort, gem5::SimpleMemobj::CPUSidePort, gem5::StubSlavePort, gem5::SysBridge::SysBridgeSourcePort, gem5::ThreadBridge::IncomingPort, gem5::TLBCoalescer::CpuSidePort, gem5::TokenResponsePort, gem5::VegaISA::GpuTLB::CpuSidePort, gem5::VegaTLBCoalescer::CpuSidePort, gem5::X86ISA::GpuTLB::CpuSidePort, and sc_gem5::Gem5ToTlmBridge< BITWIDTH >::BridgeResponsePort.
Referenced by gem5::TimingRequestProtocol::sendRetryResp().
|
protectedpure virtual |
Receive a timing request from the peer.
Implemented in gem5::AddrMapper::MapperResponsePort, gem5::BaseCache::CpuSidePort, gem5::Bridge::BridgeResponsePort, gem5::CoherentXBar::CoherentXBarResponsePort, gem5::CommMonitor::MonitorResponsePort, gem5::LdsState::CuSidePort, gem5::MemCheckerMonitor::MonitorResponsePort, gem5::MemDelay::ResponsePort, gem5::memory::CfiMemory::MemoryPort, gem5::memory::DRAMSim2::MemoryPort, gem5::memory::DRAMsim3::MemoryPort, gem5::memory::MemCtrl::MemoryPort, gem5::memory::qos::MemSinkCtrl::MemoryPort, gem5::memory::SimpleMemory::MemoryPort, gem5::NoncoherentXBar::NoncoherentXBarResponsePort, gem5::OutgoingRequestBridge::OutgoingRequestPort, gem5::ResponsePortWrapper, gem5::ruby::GPUCoalescer::GMTokenPort, gem5::ruby::RubyPort::MemResponsePort, gem5::ruby::RubyPort::PioResponsePort, gem5::SerialLink::SerialLinkResponsePort, gem5::SimpleCache::CPUSidePort, gem5::SimpleMemobj::CPUSidePort, gem5::SimpleTimingPort, gem5::SMMUATSDevicePort, gem5::SMMUDevicePort, gem5::StubSlavePort, gem5::SysBridge::SysBridgeSourcePort, gem5::ThreadBridge::IncomingPort, gem5::TLBCoalescer::CpuSidePort, gem5::VegaISA::GpuTLB::CpuSidePort, gem5::VegaTLBCoalescer::CpuSidePort, gem5::X86ISA::GpuTLB::CpuSidePort, and sc_gem5::Gem5ToTlmBridge< BITWIDTH >::BridgeResponsePort.
Referenced by gem5::TimingRequestProtocol::sendReq().
|
protectedpure virtual |
Receive a timing snoop response from the peer.
Implemented in gem5::AddrMapper::MapperResponsePort, gem5::BaseCache::CpuSidePort, gem5::CoherentXBar::CoherentXBarResponsePort, gem5::CommMonitor::MonitorResponsePort, gem5::MemCheckerMonitor::MonitorResponsePort, gem5::MemDelay::ResponsePort, gem5::ResponsePort, gem5::StubSlavePort, gem5::SysBridge::SysBridgeSourcePort, and sc_gem5::Gem5ToTlmBridge< BITWIDTH >::BridgeResponsePort.
Referenced by gem5::TimingRequestProtocol::sendSnoopResp().
|
protected |
Attempt to send a timing response 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 recvRespRetry at which point it can re-issue a sendTimingResp.
peer | Peer to send the packet to. |
pkt | Packet to send. |
Definition at line 80 of file timing.cc.
References gem5::Packet::isResponse(), and gem5::TimingRequestProtocol::recvTimingResp().
Referenced by gem5::ResponsePort::sendTimingResp().
|
protected |
Send a retry to the peer that previously attempted a sendTimingReq to this protocol and failed.
Definition at line 95 of file timing.cc.
References gem5::TimingRequestProtocol::recvReqRetry().
Referenced by gem5::ResponsePort::sendRetryReq().
|
protected |
Send a retry to the peer that previously attempted a sendTimingSnoopResp to this peer and failed.
Definition at line 101 of file timing.cc.
References gem5::TimingRequestProtocol::recvRetrySnoopResp().
Referenced by gem5::ResponsePort::sendRetrySnoopResp().
|
protected |
Attempt to send a timing snoop request packet to the peer by calling its corresponding receive function.
Snoop requests always succeed and hence no return value is needed.
peer | Peer to send the packet to. |
pkt | Packet to send. |
Definition at line 87 of file timing.cc.
References gem5::Packet::isRequest(), and gem5::TimingRequestProtocol::recvTimingSnoopReq().
Referenced by gem5::ResponsePort::sendTimingSnoopReq().
|
protectedpure virtual |
Availability request from the peer.
Implemented in gem5::BaseCache::CpuSidePort, gem5::CommMonitor::MonitorResponsePort, gem5::MemDelay::ResponsePort, gem5::ResponsePort, gem5::SysBridge::SysBridgeSourcePort, and sc_gem5::Gem5ToTlmBridge< BITWIDTH >::BridgeResponsePort.
Referenced by gem5::TimingRequestProtocol::trySend().
|
friend |