gem5
|
A coherent crossbar connects a number of (potentially) snooping masters and slaves, and routes the request and response packets based on the address, and also forwards all requests to the snoopers and deals with the snoop responses. More...
#include <coherent_xbar.hh>
Classes | |
class | CoherentXBarMasterPort |
Declaration of the coherent crossbar master port type, one will be instantiated for each of the slave interfaces connecting to the crossbar. More... | |
class | CoherentXBarSlavePort |
Declaration of the coherent crossbar slave port type, one will be instantiated for each of the master ports connecting to the crossbar. More... | |
class | SnoopRespPort |
Internal class to bridge between an incoming snoop response from a slave port and forwarding it through an outgoing slave port. More... | |
Public Member Functions | |
virtual void | init () |
init() is called after all C++ SimObjects have been created and all ports are connected. More... | |
CoherentXBar (const CoherentXBarParams *p) | |
virtual | ~CoherentXBar () |
virtual void | regStats () |
Register statistics for this object. More... | |
Public Member Functions inherited from BaseXBar | |
virtual | ~BaseXBar () |
BaseMasterPort & | getMasterPort (const std::string &if_name, PortID idx=InvalidPortID) |
A function used to return the port associated with this object. More... | |
BaseSlavePort & | getSlavePort (const std::string &if_name, PortID idx=InvalidPortID) |
Get a slave port with a given name and index. More... | |
Public Member Functions inherited from MemObject | |
const Params * | params () const |
MemObject (const Params *params) | |
Public Member Functions inherited from ClockedObject | |
ClockedObject (const ClockedObjectParams *p) | |
const Params * | params () const |
void | serialize (CheckpointOut &cp) const override |
Serialize an object. More... | |
void | unserialize (CheckpointIn &cp) override |
Unserialize an object. More... | |
Enums::PwrState | pwrState () const |
std::string | pwrStateName () const |
std::vector< double > | pwrStateWeights () const |
Returns the percentage residency for each power state. More... | |
void | computeStats () |
Record stats values like state residency by computing the time difference from previous update. More... | |
void | pwrState (Enums::PwrState) |
void | regStats () override |
Register statistics for this object. More... | |
Public Member Functions inherited from SimObject | |
const Params * | params () const |
SimObject (const Params *_params) | |
virtual | ~SimObject () |
virtual const std::string | name () const |
virtual void | loadState (CheckpointIn &cp) |
loadState() is called on each SimObject when restoring from a checkpoint. More... | |
virtual void | initState () |
initState() is called on each SimObject when not restoring from a checkpoint. More... | |
virtual void | resetStats () |
Reset statistics associated with this object. More... | |
virtual void | regProbePoints () |
Register probe points for this object. More... | |
virtual void | regProbeListeners () |
Register probe listeners for this object. More... | |
ProbeManager * | getProbeManager () |
Get the probe manager for this object. More... | |
virtual void | startup () |
startup() is the final initialization call before simulation. More... | |
DrainState | drain () override |
Provide a default implementation of the drain interface for objects that don't need draining. More... | |
virtual void | memWriteback () |
Write back dirty buffers to memory using functional writes. More... | |
virtual void | memInvalidate () |
Invalidate the contents of memory buffers. More... | |
void | serialize (CheckpointOut &cp) const override |
Serialize an object. More... | |
void | unserialize (CheckpointIn &cp) override |
Unserialize an object. More... | |
Public Member Functions inherited from EventManager | |
EventManager (EventManager &em) | |
EventManager (EventManager *em) | |
EventManager (EventQueue *eq) | |
EventQueue * | eventQueue () const |
void | schedule (Event &event, Tick when) |
void | deschedule (Event &event) |
void | reschedule (Event &event, Tick when, bool always=false) |
void | schedule (Event *event, Tick when) |
void | deschedule (Event *event) |
void | reschedule (Event *event, Tick when, bool always=false) |
void | wakeupEventQueue (Tick when=(Tick)-1) |
void | setCurTick (Tick newVal) |
Public Member Functions inherited from Serializable | |
Serializable () | |
virtual | ~Serializable () |
void | serializeSection (CheckpointOut &cp, const char *name) const |
Serialize an object into a new section. More... | |
void | serializeSection (CheckpointOut &cp, const std::string &name) const |
void | unserializeSection (CheckpointIn &cp, const char *name) |
Unserialize an a child object. More... | |
void | unserializeSection (CheckpointIn &cp, const std::string &name) |
Public Member Functions inherited from Drainable | |
DrainState | drainState () const |
Return the current drain state of an object. More... | |
virtual void | notifyFork () |
Notify a child process of a fork. More... | |
Public Member Functions inherited from Clocked | |
void | updateClockPeriod () const |
Update the tick to the current tick. More... | |
Tick | clockEdge (Cycles cycles=Cycles(0)) const |
Determine the tick when a cycle begins, by default the current one, but the argument also enables the caller to determine a future cycle. More... | |
Cycles | curCycle () const |
Determine the current cycle, corresponding to a tick aligned to a clock edge. More... | |
Tick | nextCycle () const |
Based on the clock of the object, determine the start tick of the first cycle that is at least one cycle in the future. More... | |
uint64_t | frequency () const |
Tick | clockPeriod () const |
double | voltage () const |
Cycles | ticksToCycles (Tick t) const |
Tick | cyclesToTicks (Cycles c) const |
Protected Member Functions | |
bool | recvTimingReq (PacketPtr pkt, PortID slave_port_id) |
Function called by the port when the crossbar is recieving a Timing request packet. More... | |
bool | recvTimingResp (PacketPtr pkt, PortID master_port_id) |
Function called by the port when the crossbar is recieving a Timing response packet. More... | |
void | recvTimingSnoopReq (PacketPtr pkt, PortID master_port_id) |
Function called by the port when the crossbar is recieving a timing snoop request. More... | |
bool | recvTimingSnoopResp (PacketPtr pkt, PortID slave_port_id) |
Function called by the port when the crossbar is recieving a timing snoop response. More... | |
void | recvReqRetry (PortID master_port_id) |
Timing function called by port when it is once again able to process requests. More... | |
void | forwardTiming (PacketPtr pkt, PortID exclude_slave_port_id) |
Forward a timing packet to our snoopers, potentially excluding one of the connected coherent masters to avoid sending a packet back to where it came from. More... | |
void | forwardTiming (PacketPtr pkt, PortID exclude_slave_port_id, const std::vector< QueuedSlavePort * > &dests) |
Forward a timing packet to a selected list of snoopers, potentially excluding one of the connected coherent masters to avoid sending a packet back to where it came from. More... | |
Tick | recvAtomic (PacketPtr pkt, PortID slave_port_id) |
Function called by the port when the crossbar is recieving a Atomic transaction. More... | |
Tick | recvAtomicSnoop (PacketPtr pkt, PortID master_port_id) |
Function called by the port when the crossbar is recieving an atomic snoop transaction. More... | |
std::pair< MemCmd, Tick > | forwardAtomic (PacketPtr pkt, PortID exclude_slave_port_id) |
Forward an atomic packet to our snoopers, potentially excluding one of the connected coherent masters to avoid sending a packet back to where it came from. More... | |
std::pair< MemCmd, Tick > | forwardAtomic (PacketPtr pkt, PortID exclude_slave_port_id, PortID source_master_port_id, const std::vector< QueuedSlavePort * > &dests) |
Forward an atomic packet to a selected list of snoopers, potentially excluding one of the connected coherent masters to avoid sending a packet back to where it came from. More... | |
void | recvFunctional (PacketPtr pkt, PortID slave_port_id) |
Function called by the port when the crossbar is recieving a Functional transaction. More... | |
void | recvFunctionalSnoop (PacketPtr pkt, PortID master_port_id) |
Function called by the port when the crossbar is recieving a functional snoop transaction. More... | |
void | forwardFunctional (PacketPtr pkt, PortID exclude_slave_port_id) |
Forward a functional packet to our snoopers, potentially excluding one of the connected coherent masters to avoid sending a packet back to where it came from. More... | |
bool | sinkPacket (const PacketPtr pkt) const |
Determine if the crossbar should sink the packet, as opposed to forwarding it, or responding. More... | |
Protected Member Functions inherited from BaseXBar | |
virtual void | recvRangeChange (PortID master_port_id) |
Function called by the port when the crossbar is recieving a range change. More... | |
PortID | findPort (Addr addr) |
Find which port connected to this crossbar (if any) should be given a packet with this address. More... | |
PortID | checkPortCache (Addr addr) const |
void | updatePortCache (short id, const AddrRange &range) |
void | clearPortCache () |
AddrRangeList | getAddrRanges () const |
Return the address ranges the crossbar is responsible for. More... | |
void | calcPacketTiming (PacketPtr pkt, Tick header_delay) |
Calculate the timing parameters for the packet. More... | |
BaseXBar (const BaseXBarParams *p) | |
Protected Member Functions inherited from Drainable | |
Drainable () | |
virtual | ~Drainable () |
virtual void | drainResume () |
Resume execution after a successful drain. More... | |
void | signalDrainDone () const |
Signal that an object is drained. More... | |
Protected Member Functions inherited from Clocked | |
Clocked (ClockDomain &clk_domain) | |
Create a clocked object and set the clock domain based on the parameters. More... | |
Clocked (Clocked &)=delete | |
Clocked & | operator= (Clocked &)=delete |
virtual | ~Clocked () |
Virtual destructor due to inheritance. More... | |
void | resetClock () const |
Reset the object's clock using the current global tick value. More... | |
Protected Attributes | |
std::vector< ReqLayer * > | reqLayers |
Declare the layers of this crossbar, one vector for requests, one for responses, and one for snoop responses. More... | |
std::vector< RespLayer * > | respLayers |
std::vector< SnoopRespLayer * > | snoopLayers |
std::vector< SnoopRespPort * > | snoopRespPorts |
std::vector< QueuedSlavePort * > | snoopPorts |
std::unordered_set< RequestPtr > | outstandingSnoop |
Store the outstanding requests that we are expecting snoop responses from so we can determine which snoop responses we generated and which ones were merely forwarded. More... | |
System * | system |
Keep a pointer to the system to be allow to querying memory system properties. More... | |
SnoopFilter * | snoopFilter |
A snoop filter that tracks cache line residency and can restrict the broadcast needed for probes. More... | |
const Cycles | snoopResponseLatency |
Cycles of snoop response latency. More... | |
const bool | pointOfCoherency |
Is this crossbar the point of coherency? More... | |
std::unique_ptr< Packet > | pendingDelete |
Upstream caches need this packet until true is returned, so hold it for deletion until a subsequent call. More... | |
Stats::Scalar | snoops |
Stats::Scalar | snoopTraffic |
Stats::Distribution | snoopFanout |
Protected Attributes inherited from BaseXBar | |
const Cycles | frontendLatency |
Cycles of front-end pipeline including the delay to accept the request and to decode the address. More... | |
const Cycles | forwardLatency |
Cycles of forward latency. More... | |
const Cycles | responseLatency |
Cycles of response latency. More... | |
const uint32_t | width |
the width of the xbar in bytes More... | |
AddrRangeMap< PortID > | portMap |
std::unordered_map< RequestPtr, PortID > | routeTo |
Remember where request packets came from so that we can route responses to the appropriate port. More... | |
AddrRangeList | xbarRanges |
all contigous ranges seen by this crossbar More... | |
AddrRange | defaultRange |
PortCache | portCache [3] |
std::vector< bool > | gotAddrRanges |
Remember for each of the master ports of the crossbar if we got an address range from the connected slave. More... | |
bool | gotAllAddrRanges |
std::vector< QueuedSlavePort * > | slavePorts |
The master and slave ports of the crossbar. More... | |
std::vector< MasterPort * > | masterPorts |
PortID | defaultPortID |
Port that handles requests that don't match any of the interfaces. More... | |
const bool | useDefaultRange |
If true, use address range provided by default device. More... | |
Stats::Vector | transDist |
Stats for transaction distribution and data passing through the crossbar. More... | |
Stats::Vector2d | pktCount |
Stats::Vector2d | pktSize |
Protected Attributes inherited from ClockedObject | |
Enums::PwrState | _currPwrState |
To keep track of the current power state. More... | |
Tick | prvEvalTick |
Stats::Scalar | numPwrStateTransitions |
Stats::Distribution | pwrStateClkGateDist |
Stats::Vector | pwrStateResidencyTicks |
Protected Attributes inherited from SimObject | |
const SimObjectParams * | _params |
Cached copy of the object parameters. More... | |
Protected Attributes inherited from EventManager | |
EventQueue * | eventq |
A pointer to this object's event queue. More... | |
Additional Inherited Members | |
Public Types inherited from MemObject | |
typedef MemObjectParams | Params |
Public Types inherited from ClockedObject | |
typedef ClockedObjectParams | Params |
Parameters of ClockedObject. More... | |
Public Types inherited from SimObject | |
typedef SimObjectParams | Params |
Static Public Member Functions inherited from SimObject | |
static void | serializeAll (CheckpointOut &cp) |
Serialize all SimObjects in the system. More... | |
static SimObject * | find (const char *name) |
Find the SimObject with the given name and return a pointer to it. More... | |
Static Public Member Functions inherited from Serializable | |
static const std::string & | currentSection () |
Get the fully-qualified name of the active section. More... | |
static void | serializeAll (const std::string &cpt_dir) |
static void | unserializeGlobals (CheckpointIn &cp) |
Static Public Attributes inherited from Serializable | |
static int | ckptCount = 0 |
static int | ckptMaxCount = 0 |
static int | ckptPrevCount = -1 |
A coherent crossbar connects a number of (potentially) snooping masters and slaves, and routes the request and response packets based on the address, and also forwards all requests to the snoopers and deals with the snoop responses.
The coherent crossbar can be used as a template for modelling QPI, HyperTransport, ACE and coherent OCP buses, and is typically used for the L1-to-L2 buses and as the main system interconnect.
Definition at line 71 of file coherent_xbar.hh.
CoherentXBar::CoherentXBar | ( | const CoherentXBarParams * | p | ) |
Definition at line 58 of file coherent_xbar.cc.
References BaseXBar::clearPortCache(), csprintf(), BaseXBar::defaultPortID, ArmISA::i, BaseXBar::masterPorts, SimObject::name(), reqLayers, respLayers, BaseXBar::slavePorts, snoopLayers, and snoopRespPorts.
|
virtual |
Definition at line 104 of file coherent_xbar.cc.
References MipsISA::l, MipsISA::p, reqLayers, respLayers, snoopLayers, and snoopRespPorts.
|
inlineprotected |
Forward an atomic packet to our snoopers, potentially excluding one of the connected coherent masters to avoid sending a packet back to where it came from.
pkt | Packet to forward |
exclude_slave_port_id | Id of slave port to exclude |
Definition at line 349 of file coherent_xbar.hh.
References InvalidPortID, and snoopPorts.
Referenced by recvAtomic(), and recvAtomicSnoop().
|
protected |
Forward an atomic packet to a selected list of snoopers, potentially excluding one of the connected coherent masters to avoid sending a packet back to where it came from.
pkt | Packet to forward |
exclude_slave_port_id | Id of slave port to exclude |
source_master_port_id | Id of the master port for snoops from below |
dests | Vector of destination ports for the forwarded pkt |
Definition at line 774 of file coherent_xbar.cc.
References System::bypassCaches(), Packet::cacheResponding(), Packet::cmd, MemCmd::InvalidCmd, InvalidPortID, Packet::isResponse(), BaseXBar::masterPorts, MipsISA::p, Stats::DistBase< Derived, Stor >::sample(), BaseXBar::slavePorts, snoopFanout, snoopFilter, system, SnoopFilter::updateSnoopForward(), and SnoopFilter::updateSnoopResponse().
Forward a functional packet to our snoopers, potentially excluding one of the connected coherent masters to avoid sending a packet back to where it came from.
pkt | Packet to forward |
exclude_slave_port_id | Id of slave port to exclude |
Definition at line 901 of file coherent_xbar.cc.
References System::bypassCaches(), InvalidPortID, Packet::isResponse(), MipsISA::p, snoopPorts, and system.
Referenced by recvFunctional(), and recvFunctionalSnoop().
Forward a timing packet to our snoopers, potentially excluding one of the connected coherent masters to avoid sending a packet back to where it came from.
pkt | Packet to forward |
exclude_slave_port_id | Id of slave port to exclude |
Definition at line 315 of file coherent_xbar.hh.
References snoopPorts.
Referenced by recvTimingReq(), and recvTimingSnoopReq().
|
protected |
Forward a timing packet to a selected list of snoopers, potentially excluding one of the connected coherent masters to avoid sending a packet back to where it came from.
pkt | Packet to forward |
exclude_slave_port_id | Id of slave port to exclude |
dests | Vector of destination ports for the forwarded pkt |
Definition at line 598 of file coherent_xbar.cc.
References System::bypassCaches(), DPRINTF, InvalidPortID, MipsISA::p, Packet::print(), Stats::DistBase< Derived, Stor >::sample(), snoopFanout, and system.
|
virtual |
init() is called after all C++ SimObjects have been created and all ports are connected.
Initializations that are independent of unserialization but rely on a fully instantiated and connected SimObject graph should be done here.
Reimplemented from BaseXBar.
Definition at line 117 of file coherent_xbar.cc.
References DPRINTF, BaseXBar::init(), SimObject::name(), MipsISA::p, SnoopFilter::setSlavePorts(), BaseXBar::slavePorts, snoopFilter, snoopPorts, and warn.
Function called by the port when the crossbar is recieving a Atomic transaction.
Definition at line 635 of file coherent_xbar.cc.
References System::bypassCaches(), Clocked::clockPeriod(), Packet::cmd, Packet::cmdToIndex(), DPRINTF, BaseXBar::findPort(), SnoopFilter::finishRequest(), forwardAtomic(), Packet::getAddr(), Packet::getSize(), Packet::hasData(), MemCmd::InvalidCmd, InvalidPortID, Packet::isRead(), Packet::isResponse(), Packet::isSecure(), Packet::isWrite(), SnoopFilter::lookupRequest(), Packet::makeResponse(), BaseXBar::masterPorts, SimObject::name(), Packet::needsResponse(), Packet::payloadDelay, BaseXBar::pktCount, BaseXBar::pktSize, pointOfCoherency, Packet::print(), sinkPacket(), BaseXBar::slavePorts, snoopFilter, system, BaseXBar::transDist, and SnoopFilter::updateResponse().
Referenced by CoherentXBar::CoherentXBarSlavePort::recvAtomic().
Function called by the port when the crossbar is recieving an atomic snoop transaction.
Definition at line 733 of file coherent_xbar.cc.
References Clocked::clockPeriod(), Packet::cmd, DPRINTF, forwardAtomic(), Packet::getSize(), Packet::hasData(), MemCmd::InvalidCmd, InvalidPortID, Packet::isResponse(), SnoopFilter::lookupSnoop(), BaseXBar::masterPorts, SimObject::name(), Packet::payloadDelay, Packet::print(), snoopFilter, snoops, and snoopTraffic.
Referenced by CoherentXBar::CoherentXBarMasterPort::recvAtomicSnoop().
Function called by the port when the crossbar is recieving a Functional transaction.
Definition at line 845 of file coherent_xbar.cc.
References System::bypassCaches(), DPRINTF, BaseXBar::findPort(), forwardFunctional(), Packet::getAddr(), Packet::isPrint(), Packet::isResponse(), Packet::makeResponse(), BaseXBar::masterPorts, SimObject::name(), Packet::needsResponse(), MipsISA::p, Packet::print(), BaseXBar::slavePorts, and system.
Referenced by CoherentXBar::CoherentXBarSlavePort::recvFunctional().
Function called by the port when the crossbar is recieving a functional snoop transaction.
Definition at line 880 of file coherent_xbar.cc.
References DPRINTF, forwardFunctional(), InvalidPortID, Packet::isPrint(), Packet::makeResponse(), BaseXBar::masterPorts, SimObject::name(), Packet::needsResponse(), MipsISA::p, Packet::print(), and BaseXBar::slavePorts.
Referenced by CoherentXBar::CoherentXBarMasterPort::recvFunctionalSnoop().
|
protected |
Timing function called by port when it is once again able to process requests.
Definition at line 626 of file coherent_xbar.cc.
References reqLayers.
Referenced by CoherentXBar::CoherentXBarMasterPort::recvReqRetry().
Function called by the port when the crossbar is recieving a Timing request packet.
Definition at line 142 of file coherent_xbar.cc.
References addr, System::bypassCaches(), Packet::cacheResponding(), BaseXBar::calcPacketTiming(), Clocked::clockEdge(), Clocked::clockPeriod(), Packet::cmdToIndex(), DPRINTF, BaseXBar::findPort(), SnoopFilter::finishRequest(), BaseXBar::forwardLatency, forwardTiming(), BaseXBar::frontendLatency, Packet::getAddr(), Packet::getSize(), Packet::hasData(), Packet::headerDelay, Packet::isEviction(), Packet::isExpressSnoop(), Packet::isRead(), Packet::isSecure(), Packet::isWrite(), SnoopFilter::lookupRequest(), Packet::makeResponse(), BaseXBar::masterPorts, Port::name(), Packet::needsResponse(), outstandingSnoop, panic_if(), Packet::payloadDelay, pendingDelete, BaseXBar::pktCount, BaseXBar::pktSize, pointOfCoherency, Packet::print(), Packet::req, reqLayers, BaseXBar::routeTo, Packet::setBlockCached(), Packet::setExpressSnoop(), sinkPacket(), BaseXBar::slavePorts, Packet::snoopDelay, snoopFilter, snoops, snoopTraffic, system, BaseXBar::transDist, and SnoopFilter::updateResponse().
Referenced by CoherentXBar::CoherentXBarSlavePort::recvTimingReq().
Function called by the port when the crossbar is recieving a Timing response packet.
Definition at line 350 of file coherent_xbar.cc.
References System::bypassCaches(), BaseXBar::calcPacketTiming(), Clocked::clockEdge(), Clocked::clockPeriod(), Packet::cmdToIndex(), curTick(), DPRINTF, Packet::getSize(), Packet::hasData(), Packet::headerDelay, InvalidPortID, BaseXBar::masterPorts, Port::name(), Packet::payloadDelay, BaseXBar::pktCount, BaseXBar::pktSize, Packet::print(), Packet::req, respLayers, BaseXBar::responseLatency, BaseXBar::routeTo, BaseXBar::slavePorts, snoopFilter, system, BaseXBar::transDist, and SnoopFilter::updateResponse().
Referenced by CoherentXBar::CoherentXBarMasterPort::recvTimingResp().
Function called by the port when the crossbar is recieving a timing snoop request.
Definition at line 412 of file coherent_xbar.cc.
References Packet::cacheResponding(), BaseXBar::calcPacketTiming(), Clocked::clockPeriod(), Packet::cmdToIndex(), DPRINTF, BaseXBar::findPort(), BaseXBar::forwardLatency, forwardTiming(), Packet::getAddr(), Packet::getSize(), Packet::hasData(), Packet::headerDelay, InvalidPortID, Packet::isExpressSnoop(), SnoopFilter::lookupSnoop(), BaseXBar::masterPorts, SimObject::name(), Packet::print(), Packet::req, BaseXBar::routeTo, Packet::snoopDelay, snoopFilter, snoops, snoopTraffic, and BaseXBar::transDist.
Referenced by CoherentXBar::CoherentXBarMasterPort::recvTimingSnoopReq().
Function called by the port when the crossbar is recieving a timing snoop response.
Definition at line 472 of file coherent_xbar.cc.
References BaseXBar::calcPacketTiming(), Clocked::clockEdge(), Clocked::clockPeriod(), Packet::cmdToIndex(), curTick(), DPRINTF, Packet::getSize(), Packet::hasData(), Packet::headerDelay, InvalidPortID, Packet::isExpressSnoop(), M5_VAR_USED, BaseXBar::masterPorts, Port::name(), outstandingSnoop, Packet::payloadDelay, BaseXBar::pktCount, BaseXBar::pktSize, Packet::print(), Packet::req, respLayers, BaseXBar::responseLatency, BaseXBar::routeTo, BaseXBar::slavePorts, snoopFilter, snoopLayers, snoopResponseLatency, snoopRespPorts, snoops, snoopTraffic, BaseXBar::transDist, SnoopFilter::updateSnoopForward(), and SnoopFilter::updateSnoopResponse().
Referenced by CoherentXBar::CoherentXBarSlavePort::recvTimingSnoopResp().
|
virtual |
Register statistics for this object.
Reimplemented from BaseXBar.
Definition at line 947 of file coherent_xbar.cc.
References Stats::DataWrap< Derived, InfoProxyType >::desc(), Stats::Distribution::init(), MipsISA::l, SimObject::name(), Stats::DataWrap< Derived, InfoProxyType >::name(), BaseXBar::regStats(), reqLayers, respLayers, snoopFanout, snoopLayers, snoopPorts, snoops, and snoopTraffic.
|
protected |
Determine if the crossbar should sink the packet, as opposed to forwarding it, or responding.
Definition at line 923 of file coherent_xbar.cc.
References Packet::cacheResponding(), Packet::isBlockCached(), Packet::isCleanEviction(), Packet::isRead(), Packet::isWrite(), Packet::needsResponse(), Packet::needsWritable(), pointOfCoherency, and Packet::responderHadWritable().
Referenced by recvAtomic(), and recvTimingReq().
|
protected |
Store the outstanding requests that we are expecting snoop responses from so we can determine which snoop responses we generated and which ones were merely forwarded.
Definition at line 263 of file coherent_xbar.hh.
Referenced by recvTimingReq(), and recvTimingSnoopResp().
|
protected |
Upstream caches need this packet until true is returned, so hold it for deletion until a subsequent call.
Definition at line 285 of file coherent_xbar.hh.
Referenced by recvTimingReq().
|
protected |
Is this crossbar the point of coherency?
Definition at line 279 of file coherent_xbar.hh.
Referenced by recvAtomic(), recvTimingReq(), and sinkPacket().
|
protected |
Declare the layers of this crossbar, one vector for requests, one for responses, and one for snoop responses.
Definition at line 80 of file coherent_xbar.hh.
Referenced by CoherentXBar(), recvReqRetry(), recvTimingReq(), regStats(), and ~CoherentXBar().
|
protected |
Definition at line 81 of file coherent_xbar.hh.
Referenced by CoherentXBar(), recvTimingResp(), recvTimingSnoopResp(), regStats(), and ~CoherentXBar().
|
protected |
Definition at line 400 of file coherent_xbar.hh.
Referenced by forwardAtomic(), forwardTiming(), and regStats().
|
protected |
A snoop filter that tracks cache line residency and can restrict the broadcast needed for probes.
NULL denotes an absent filter.
Definition at line 273 of file coherent_xbar.hh.
Referenced by forwardAtomic(), init(), recvAtomic(), recvAtomicSnoop(), recvTimingReq(), recvTimingResp(), recvTimingSnoopReq(), and recvTimingSnoopResp().
|
protected |
Definition at line 82 of file coherent_xbar.hh.
Referenced by CoherentXBar(), recvTimingSnoopResp(), regStats(), and ~CoherentXBar().
|
protected |
Definition at line 256 of file coherent_xbar.hh.
Referenced by forwardAtomic(), forwardFunctional(), forwardTiming(), init(), and regStats().
|
protected |
Cycles of snoop response latency.
Definition at line 276 of file coherent_xbar.hh.
Referenced by recvTimingSnoopResp().
|
protected |
Definition at line 254 of file coherent_xbar.hh.
Referenced by CoherentXBar(), recvTimingSnoopResp(), and ~CoherentXBar().
|
protected |
Definition at line 398 of file coherent_xbar.hh.
Referenced by recvAtomicSnoop(), recvTimingReq(), recvTimingSnoopReq(), recvTimingSnoopResp(), and regStats().
|
protected |
Definition at line 399 of file coherent_xbar.hh.
Referenced by recvAtomicSnoop(), recvTimingReq(), recvTimingSnoopReq(), recvTimingSnoopResp(), and regStats().
|
protected |
Keep a pointer to the system to be allow to querying memory system properties.
Definition at line 269 of file coherent_xbar.hh.
Referenced by forwardAtomic(), forwardFunctional(), forwardTiming(), recvAtomic(), recvFunctional(), recvTimingReq(), and recvTimingResp().