gem5  v20.1.0.0
Protected Member Functions | Friends | List of all members
TimingRequestProtocol Class Referenceabstract

#include <timing.hh>

Inheritance diagram for TimingRequestProtocol:
RequestPort AbstractController::MemoryPort AddrMapper::MapperRequestPort AtomicSimpleCPU::AtomicCPUPort BaseKvmCPU::KVMCpuPort BaseTrafficGen::TrafficGenPort Bridge::BridgeRequestPort CoherentXBar::CoherentXBarRequestPort CoherentXBar::SnoopRespPort CommMonitor::MonitorRequestPort ComputeUnit::DataPort ComputeUnit::DTLBPort ComputeUnit::ITLBPort ComputeUnit::LDSPort ComputeUnit::ScalarDataPort ComputeUnit::ScalarDTLBPort ComputeUnit::SQCPort DefaultFetch< Impl >::IcachePort DmaPort ExternalMaster::ExternalPort GarnetSyntheticTraffic::CpuPort Gicv3Its::DataPort LSQ< Impl >::DcachePort MasterPort MemCheckerMonitor::MonitorRequestPort MemTest::CpuPort MinorCPU::MinorCPUPort NoncoherentXBar::NoncoherentXBarRequestPort QueuedRequestPort RiscvISA::Walker::WalkerPort RubyDirectedTester::CpuPort RubyTester::CpuPort sc_gem5::TlmToGem5Bridge< BITWIDTH >::BridgeRequestPort SerialLink::SerialLinkRequestPort SimpleCache::MemSidePort SimpleMemobj::MemSidePort SMMURequestPort SMMUTableWalkPort System::SystemPort TimingSimpleCPU::TimingCPUPort TLBCoalescer::MemSidePort TokenRequestPort TraceCPU::DcachePort TraceCPU::IcachePort X86ISA::GpuTLB::MemSidePort X86ISA::Walker::WalkerPort

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 48 of file timing.hh.

Member Function Documentation

◆ recvReqRetry()

virtual void TimingRequestProtocol::recvReqRetry ( )
protectedpure virtual

◆ recvRetrySnoopResp()

virtual void 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 RequestPort, CommMonitor::MonitorRequestPort, and QueuedRequestPort.

Referenced by TimingResponseProtocol::sendRetrySnoopResp().

◆ recvTimingResp()

virtual bool TimingRequestProtocol::recvTimingResp ( PacketPtr  pkt)
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().

◆ recvTimingSnoopReq()

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

◆ sendReq()

bool 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 46 of file timing.cc.

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

Referenced by RequestPort::sendTimingReq().

◆ sendRetryResp()

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

◆ sendSnoopResp()

bool 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 61 of file timing.cc.

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

Referenced by RequestPort::sendTimingSnoopResp().

◆ trySend()

bool 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 53 of file timing.cc.

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

Referenced by RequestPort::tryTiming().

Friends And Related Function Documentation

◆ TimingResponseProtocol

friend class TimingResponseProtocol
friend

Definition at line 50 of file timing.hh.


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

Generated on Wed Sep 30 2020 14:02:33 for gem5 by doxygen 1.8.17