gem5  v21.1.0.2
Protected Member Functions | Friends | List of all members
gem5::TimingRequestProtocol Class Referenceabstract

#include <timing.hh>

Inheritance diagram for gem5::TimingRequestProtocol:
gem5::RequestPort gem5::AddrMapper::MapperRequestPort 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::ITLBPort gem5::ComputeUnit::LDSPort gem5::ComputeUnit::ScalarDataPort gem5::ComputeUnit::ScalarDTLBPort gem5::ComputeUnit::SQCPort gem5::DmaPort gem5::ExternalMaster::ExternalPort gem5::GarnetSyntheticTraffic::CpuPort gem5::Gicv3Its::DataPort gem5::MasterPort gem5::MemCheckerMonitor::MonitorRequestPort gem5::MemTest::CpuPort gem5::MinorCPU::MinorCPUPort gem5::NoncoherentXBar::NoncoherentXBarRequestPort gem5::o3::Fetch::IcachePort gem5::o3::LSQ::DcachePort gem5::ProtocolTester::SeqPort gem5::QueuedRequestPort 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::System::SystemPort gem5::TimingSimpleCPU::TimingCPUPort gem5::TLBCoalescer::MemSidePort gem5::TokenRequestPort gem5::TraceCPU::DcachePort gem5::TraceCPU::IcachePort gem5::X86ISA::GpuTLB::MemSidePort gem5::X86ISA::Walker::WalkerPort sc_gem5::TlmToGem5Bridge< BITWIDTH >::BridgeRequestPort

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
 

Detailed Description

Definition at line 51 of file timing.hh.

Member Function Documentation

◆ recvReqRetry()

virtual void gem5::TimingRequestProtocol::recvReqRetry ( )
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::ComputeUnit::ScalarDTLBPort, gem5::BaseKvmCPU::KVMCpuPort, gem5::ComputeUnit::ScalarDataPort, gem5::CoherentXBar::SnoopRespPort, gem5::CoherentXBar::CoherentXBarRequestPort, gem5::DmaPort, gem5::SimpleCache::MemSidePort, gem5::SimpleMemobj::MemSidePort, gem5::NoncoherentXBar::NoncoherentXBarRequestPort, gem5::AddrMapper::MapperRequestPort, gem5::minor::LSQ::DcachePort, sc_gem5::TlmToGem5Bridge< BITWIDTH >::BridgeRequestPort, gem5::System::SystemPort, gem5::ComputeUnit::LDSPort, gem5::ComputeUnit::ITLBPort, gem5::ComputeUnit::DTLBPort, gem5::ComputeUnit::SQCPort, gem5::ComputeUnit::DataPort, gem5::ComputeUnit::GMTokenPort, gem5::ruby::AbstractController::MemoryPort, gem5::Bridge::BridgeRequestPort, gem5::SerialLink::SerialLinkRequestPort, gem5::TraceCPU::DcachePort, gem5::X86ISA::GpuTLB::MemSidePort, gem5::TraceCPU::IcachePort, gem5::TimingSimpleCPU::DcachePort, gem5::TimingSimpleCPU::IcachePort, gem5::TLBCoalescer::MemSidePort, gem5::CommMonitor::MonitorRequestPort, gem5::o3::LSQ::DcachePort, gem5::BaseTrafficGen::TrafficGenPort, gem5::AtomicSimpleCPU::AtomicCPUPort, gem5::MemCheckerMonitor::MonitorRequestPort, gem5::QueuedRequestPort, gem5::MemTest::CpuPort, gem5::Gicv3Its::DataPort, gem5::o3::Fetch::IcachePort, gem5::ProtocolTester::GMTokenPort, gem5::GarnetSyntheticTraffic::CpuPort, gem5::minor::Fetch1::IcachePort, gem5::RubyTester::CpuPort, gem5::ProtocolTester::SeqPort, gem5::RiscvISA::Walker::WalkerPort, gem5::X86ISA::Walker::WalkerPort, gem5::SMMUTableWalkPort, gem5::RubyDirectedTester::CpuPort, and gem5::SMMURequestPort.

Referenced by gem5::TimingResponseProtocol::sendRetryReq().

◆ recvRetrySnoopResp()

virtual void gem5::TimingRequestProtocol::recvRetrySnoopResp ( )
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::RequestPort, gem5::CommMonitor::MonitorRequestPort, and gem5::QueuedRequestPort.

Referenced by gem5::TimingResponseProtocol::sendRetrySnoopResp().

◆ recvTimingResp()

virtual bool gem5::TimingRequestProtocol::recvTimingResp ( PacketPtr  pkt)
protectedpure virtual

Receive a timing response from the peer.

Implemented in gem5::ComputeUnit::GMTokenPort, gem5::ProtocolTester::GMTokenPort, gem5::ArmISA::TableWalker::Port, gem5::ComputeUnit::ScalarDTLBPort, gem5::BaseKvmCPU::KVMCpuPort, gem5::ComputeUnit::ScalarDataPort, gem5::CoherentXBar::SnoopRespPort, gem5::DmaPort, gem5::CoherentXBar::CoherentXBarRequestPort, gem5::SimpleCache::MemSidePort, gem5::SimpleMemobj::MemSidePort, gem5::NoncoherentXBar::NoncoherentXBarRequestPort, gem5::X86ISA::IntRequestPort< Device >, gem5::X86ISA::IntRequestPort< gem5::X86ISA::Interrupts >, gem5::X86ISA::IntRequestPort< gem5::X86ISA::I82094AA >, gem5::AddrMapper::MapperRequestPort, gem5::minor::LSQ::DcachePort, gem5::System::SystemPort, gem5::MemDelay::RequestPort, gem5::ComputeUnit::LDSPort, gem5::ComputeUnit::ITLBPort, gem5::ComputeUnit::DTLBPort, gem5::ComputeUnit::SQCPort, gem5::ComputeUnit::DataPort, gem5::ruby::AbstractController::MemoryPort, gem5::Bridge::BridgeRequestPort, gem5::SerialLink::SerialLinkRequestPort, gem5::TraceCPU::DcachePort, gem5::X86ISA::GpuTLB::MemSidePort, gem5::BaseCache::MemSidePort, gem5::TimingSimpleCPU::DcachePort, gem5::TraceCPU::IcachePort, gem5::TimingSimpleCPU::IcachePort, gem5::TLBCoalescer::MemSidePort, gem5::o3::LSQ::DcachePort, gem5::BaseTrafficGen::TrafficGenPort, gem5::CommMonitor::MonitorRequestPort, gem5::AtomicSimpleCPU::AtomicCPUPort, gem5::ruby::RubyPort::PioRequestPort, gem5::SMMUATSMemoryPort, gem5::MemCheckerMonitor::MonitorRequestPort, gem5::MemTest::CpuPort, gem5::Gicv3Its::DataPort, gem5::o3::Fetch::IcachePort, gem5::GarnetSyntheticTraffic::CpuPort, gem5::RubyTester::CpuPort, gem5::minor::Fetch1::IcachePort, gem5::ProtocolTester::SeqPort, gem5::RiscvISA::Walker::WalkerPort, gem5::ruby::RubyPort::MemRequestPort, gem5::X86ISA::Walker::WalkerPort, gem5::SMMUTableWalkPort, gem5::RubyDirectedTester::CpuPort, gem5::SMMURequestPort, and sc_gem5::TlmToGem5Bridge< BITWIDTH >::BridgeRequestPort.

Referenced by gem5::TimingResponseProtocol::sendResp().

◆ recvTimingSnoopReq()

virtual void gem5::TimingRequestProtocol::recvTimingSnoopReq ( PacketPtr  pkt)
protectedpure virtual

◆ sendReq()

bool gem5::TimingRequestProtocol::sendReq ( TimingResponseProtocol peer,
PacketPtr  pkt 
)
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.

Parameters
peerPeer to send packet to.
pktPacket to send.
Returns
If the send was succesful or not.

Definition at line 49 of file timing.cc.

References gem5::Packet::isRequest(), and gem5::TimingResponseProtocol::recvTimingReq().

Referenced by gem5::RequestPort::sendTimingReq().

◆ sendRetryResp()

void gem5::TimingRequestProtocol::sendRetryResp ( TimingResponseProtocol peer)
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().

◆ sendSnoopResp()

bool gem5::TimingRequestProtocol::sendSnoopResp ( TimingResponseProtocol peer,
PacketPtr  pkt 
)
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.

Parameters
pktPacket to send.

Definition at line 64 of file timing.cc.

References gem5::Packet::isResponse(), and gem5::TimingResponseProtocol::recvTimingSnoopResp().

Referenced by gem5::RequestPort::sendTimingSnoopResp().

◆ trySend()

bool gem5::TimingRequestProtocol::trySend ( TimingResponseProtocol peer,
PacketPtr  pkt 
) const
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.

Parameters
peerPeer to send packet to.
pktPacket to send.
Returns
If the send was succesful or not.

Definition at line 56 of file timing.cc.

References gem5::Packet::isRequest(), and gem5::TimingResponseProtocol::tryTiming().

Referenced by gem5::RequestPort::tryTiming().

Friends And Related Function Documentation

◆ TimingResponseProtocol

friend class TimingResponseProtocol
friend

Definition at line 53 of file timing.hh.


The documentation for this class was generated from the following files:

Generated on Tue Sep 21 2021 12:28:15 for gem5 by doxygen 1.8.17