gem5
|
#include <GPUCoalescer.hh>
Classes | |
class | GPUCoalescerWakeupEvent |
class | IssueEvent |
Public Types | |
typedef RubyGPUCoalescerParams | Params |
Public Types inherited from RubyPort | |
typedef RubyPortParams | Params |
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 |
Public Member Functions | |
GPUCoalescer (const Params *) | |
~GPUCoalescer () | |
void | wakeup () |
void | printProgress (std::ostream &out) const |
void | resetStats () |
Reset statistics associated with this object. More... | |
void | collateStats () |
void | regStats () |
Register statistics for this object. More... | |
void | writeCallback (Addr address, DataBlock &data) |
void | writeCallback (Addr address, MachineType mach, DataBlock &data) |
void | writeCallback (Addr address, MachineType mach, DataBlock &data, Cycles initialRequestTime, Cycles forwardRequestTime, Cycles firstResponseTime, bool isRegion) |
void | writeCallback (Addr address, MachineType mach, DataBlock &data, Cycles initialRequestTime, Cycles forwardRequestTime, Cycles firstResponseTime) |
void | readCallback (Addr address, DataBlock &data) |
void | readCallback (Addr address, MachineType mach, DataBlock &data) |
void | readCallback (Addr address, MachineType mach, DataBlock &data, Cycles initialRequestTime, Cycles forwardRequestTime, Cycles firstResponseTime) |
void | readCallback (Addr address, MachineType mach, DataBlock &data, Cycles initialRequestTime, Cycles forwardRequestTime, Cycles firstResponseTime, bool isRegion) |
void | atomicCallback (Addr address, MachineType mach, const DataBlock &data) |
void | recordCPReadCallBack (MachineID myMachID, MachineID senderMachID) |
void | recordCPWriteCallBack (MachineID myMachID, MachineID senderMachID) |
virtual RequestStatus | makeRequest (PacketPtr pkt) |
int | outstandingCount () const |
bool | isDeadlockEventScheduled () const |
void | descheduleDeadlockEvent () |
bool | empty () const |
void | print (std::ostream &out) const |
void | checkCoherence (Addr address) |
void | markRemoved () |
void | removeRequest (GPUCoalescerRequest *request) |
void | evictionCallback (Addr address) |
void | completeIssue () |
void | insertKernel (int wavefront_id, PacketPtr pkt) |
void | recordRequestType (SequencerRequestType requestType) |
Stats::Histogram & | getOutstandReqHist () |
Stats::Histogram & | getLatencyHist () |
Stats::Histogram & | getTypeLatencyHist (uint32_t t) |
Stats::Histogram & | getMissLatencyHist () |
Stats::Histogram & | getMissTypeLatencyHist (uint32_t t) |
Stats::Histogram & | getMissMachLatencyHist (uint32_t t) const |
Stats::Histogram & | getMissTypeMachLatencyHist (uint32_t r, uint32_t t) const |
Stats::Histogram & | getIssueToInitialDelayHist (uint32_t t) const |
Stats::Histogram & | getInitialToForwardDelayHist (const MachineType t) const |
Stats::Histogram & | getForwardRequestToFirstResponseHist (const MachineType t) const |
Stats::Histogram & | getFirstResponseToCompletionDelayHist (const MachineType t) const |
Public Member Functions inherited from RubyPort | |
RubyPort (const Params *p) | |
virtual | ~RubyPort () |
void | init () override |
init() is called after all C++ SimObjects have been created and all ports are connected. More... | |
BaseMasterPort & | getMasterPort (const std::string &if_name, PortID idx=InvalidPortID) override |
Get a master port with a given name and index. More... | |
BaseSlavePort & | getSlavePort (const std::string &if_name, PortID idx=InvalidPortID) override |
Get a slave port with a given name and index. More... | |
void | setController (AbstractController *_cntrl) |
uint32_t | getId () |
DrainState | drain () override |
Notify an object that it needs to drain its state. More... | |
bool | isCPUSequencer () |
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 | 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 Types | |
typedef std::unordered_map < Addr, std::vector < RequestDesc > > | CoalescingTable |
typedef std::unordered_map < Addr, GPUCoalescerRequest * > | RequestTable |
Protected Member Functions | |
bool | tryCacheAccess (Addr addr, RubyRequestType type, Addr pc, RubyAccessMode access_mode, int size, DataBlock *&data_ptr) |
virtual void | issueRequest (PacketPtr pkt, RubyRequestType type) |
void | kernelCallback (int wavfront_id) |
void | hitCallback (GPUCoalescerRequest *request, MachineType mach, DataBlock &data, bool success, Cycles initialRequestTime, Cycles forwardRequestTime, Cycles firstResponseTime, bool isRegion) |
void | recordMissLatency (GPUCoalescerRequest *request, MachineType mach, Cycles initialRequestTime, Cycles forwardRequestTime, Cycles firstResponseTime, bool success, bool isRegion) |
void | completeHitCallback (std::vector< PacketPtr > &mylist, int len) |
PacketPtr | mapAddrToPkt (Addr address) |
RequestStatus | getRequestStatus (PacketPtr pkt, RubyRequestType request_type) |
bool | insertRequest (PacketPtr pkt, RubyRequestType request_type) |
bool | handleLlsc (Addr address, GPUCoalescerRequest *request) |
Protected Member Functions inherited from RubyPort | |
void | trySendRetries () |
void | ruby_hit_callback (PacketPtr pkt) |
void | testDrainComplete () |
void | ruby_eviction_callback (Addr address) |
bool | recvTimingResp (PacketPtr pkt, PortID master_port_id) |
Called by the PIO port when receiving a timing response. More... | |
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... | |
Private Member Functions | |
GPUCoalescer (const GPUCoalescer &obj) | |
GPUCoalescer & | operator= (const GPUCoalescer &obj) |
Additional Inherited Members | |
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 |
Definition at line 96 of file GPUCoalescer.hh.
|
protected |
Definition at line 288 of file GPUCoalescer.hh.
typedef RubyGPUCoalescerParams GPUCoalescer::Params |
Definition at line 99 of file GPUCoalescer.hh.
|
protected |
Definition at line 292 of file GPUCoalescer.hh.
GPUCoalescer::GPUCoalescer | ( | const Params * | p | ) |
Definition at line 118 of file GPUCoalescer.cc.
References assumingRfOCoherence, m_data_cache_hit_latency, m_dataCache_ptr, m_deadlock_threshold, m_instCache_ptr, m_load_waiting_on_load_cycles, m_load_waiting_on_store_cycles, m_max_outstanding_requests, m_outstanding_count, m_runningGarnetStandalone, m_store_waiting_on_load_cycles, and m_store_waiting_on_store_cycles.
GPUCoalescer::~GPUCoalescer | ( | ) |
Definition at line 149 of file GPUCoalescer.cc.
|
private |
Definition at line 1073 of file GPUCoalescer.cc.
References completeHitCallback(), DPRINTF, Packet::getAddr(), DataBlock::getData(), getOffset(), Packet::getPtr(), Packet::getSize(), ArmISA::i, ArmISA::len, RubyPort::m_usingRubyTester, m_writeRequestTable, makeLineAddress(), markRemoved(), SubBlock::mergeFrom(), Packet::SenderState::predecessor, recordMissLatency(), reqCoalescer, safe_cast(), Packet::senderState, and RubyTester::SenderState::subBlock.
void GPUCoalescer::checkCoherence | ( | Addr | address | ) |
Definition at line 986 of file GPUCoalescer.cc.
References RubyPort::m_ruby_system.
void GPUCoalescer::collateStats | ( | ) |
|
protected |
Definition at line 1176 of file GPUCoalescer.cc.
References ArmISA::i, ArmISA::len, RubyPort::SenderState::port, Packet::SenderState::predecessor, safe_cast(), ArmISA::ss, RubyPort::testDrainComplete(), and RubyPort::trySendRetries().
Referenced by atomicCallback(), and hitCallback().
void GPUCoalescer::completeIssue | ( | ) |
Definition at line 1006 of file GPUCoalescer.cc.
References DPRINTF, Request::getPaddr(), ArmISA::i, insertRequest(), issueRequest(), kernelCallback(), ArmISA::len, newKernelEnds, newRequests, panic, RequestDesc::pkt, RequestDesc::primaryType, Packet::req, reqCoalescer, and RequestDesc::secondaryType.
Referenced by VIPERCoalescer::invCallback(), VIPERCoalescer::makeRequest(), and VIPERCoalescer::wbCallback().
|
inlinevirtual |
Implements RubyPort.
Definition at line 173 of file GPUCoalescer.hh.
References deadlockCheckEvent, and EventManager::deschedule().
bool GPUCoalescer::empty | ( | ) | const |
Definition at line 680 of file GPUCoalescer.cc.
References m_readRequestTable, and m_writeRequestTable.
void GPUCoalescer::evictionCallback | ( | Addr | address | ) |
Definition at line 1057 of file GPUCoalescer.cc.
References RubyPort::ruby_eviction_callback().
|
inline |
Definition at line 221 of file GPUCoalescer.hh.
References m_FirstResponseToCompletionDelayHist, and ArmISA::t.
|
inline |
Definition at line 217 of file GPUCoalescer.hh.
References m_ForwardToFirstResponseDelayHist, and ArmISA::t.
|
inline |
Definition at line 213 of file GPUCoalescer.hh.
References m_InitialToForwardDelayHist, and ArmISA::t.
Referenced by Profiler::collateStats().
|
inline |
Definition at line 209 of file GPUCoalescer.hh.
References m_IssueToInitialDelayHist, and ArmISA::t.
Referenced by Profiler::collateStats().
|
inline |
Definition at line 193 of file GPUCoalescer.hh.
References m_latencyHist.
Referenced by Profiler::collateStats().
|
inline |
Definition at line 197 of file GPUCoalescer.hh.
References m_missLatencyHist.
Referenced by Profiler::collateStats().
|
inline |
Definition at line 202 of file GPUCoalescer.hh.
References m_missMachLatencyHist, and ArmISA::t.
Referenced by Profiler::collateStats().
|
inline |
Definition at line 199 of file GPUCoalescer.hh.
References m_missTypeLatencyHist, and ArmISA::t.
Referenced by Profiler::collateStats().
|
inline |
Definition at line 206 of file GPUCoalescer.hh.
References m_missTypeMachLatencyHist, MipsISA::r, and ArmISA::t.
Referenced by Profiler::collateStats().
|
inline |
Definition at line 191 of file GPUCoalescer.hh.
References m_outstandReqHist.
Referenced by Profiler::collateStats().
|
protected |
Definition at line 234 of file GPUCoalescer.cc.
References MessageBuffer::areNSlotsAvailable(), Clocked::clockEdge(), Packet::getAddr(), AbstractController::isBlocked(), RubyPort::m_controller, m_load_waiting_on_load_cycles, m_load_waiting_on_store_cycles, RubyPort::m_mandatory_q_ptr, m_readRequestTable, m_store_waiting_on_load_cycles, m_store_waiting_on_store_cycles, m_writeRequestTable, and makeLineAddress().
Referenced by insertRequest(), and makeRequest().
|
inline |
Definition at line 194 of file GPUCoalescer.hh.
References m_typeLatencyHist, and ArmISA::t.
Referenced by Profiler::collateStats().
|
protected |
Definition at line 411 of file GPUCoalescer.cc.
References CacheMemory::clearLocked(), CacheMemory::isLocked(), CacheMemory::isTagPresent(), m_dataCache_ptr, GPUCoalescerRequest::m_type, RubyPort::m_version, GPUCoalescerRequest::pkt, Packet::req, Request::setExtraData(), and CacheMemory::setLocked().
Referenced by writeCallback().
|
protected |
Definition at line 593 of file GPUCoalescer.cc.
References completeHitCallback(), DPRINTF, Packet::getAddr(), DataBlock::getData(), getOffset(), Packet::getPtr(), Packet::getSize(), ArmISA::i, CacheMemory::isTagPresent(), ArmISA::len, m_dataCache_ptr, m_instCache_ptr, GPUCoalescerRequest::m_type, RubyPort::m_usingRubyTester, makeLineAddress(), SubBlock::mergeFrom(), GPUCoalescerRequest::pkt, Packet::SenderState::predecessor, recordMissLatency(), reqCoalescer, safe_cast(), Packet::senderState, DataBlock::setData(), CacheMemory::setMRU(), RubyTester::SenderState::subBlock, and X86ISA::type.
Referenced by readCallback(), and writeCallback().
void GPUCoalescer::insertKernel | ( | int | wavefront_id, |
PacketPtr | pkt | ||
) |
Definition at line 294 of file GPUCoalescer.cc.
References DPRINTF, and kernelEndList.
Referenced by VIPERCoalescer::makeRequest(), and makeRequest().
|
protected |
Definition at line 311 of file GPUCoalescer.cc.
References MessageBuffer::areNSlotsAvailable(), Clocked::clockEdge(), Clocked::curCycle(), curTick(), deadlockCheckEvent, DPRINTF, Packet::getAddr(), Request::getPaddr(), getRequestStatus(), ArmISA::i, Request::isLockedRMW(), M5_VAR_USED, m_deadlock_threshold, RubyPort::m_mandatory_q_ptr, m_outstanding_count, m_outstandReqHist, m_readRequestTable, m_writeRequestTable, makeLineAddress(), MipsISA::r, Packet::req, Stats::DistBase< Derived, Stor >::sample(), EventManager::schedule(), and Event::scheduled().
Referenced by completeIssue().
|
inlinevirtual |
Implements RubyPort.
Definition at line 167 of file GPUCoalescer.hh.
References deadlockCheckEvent, and Event::scheduled().
|
protectedvirtual |
Definition at line 873 of file GPUCoalescer.cc.
References DataBlock::clear(), Clocked::clockEdge(), Request::contextId(), curTick(), DPRINTFR, MessageBuffer::enqueue(), fatal_if(), Packet::getAddr(), Packet::getAtomicOp(), RubySystem::getBlockSizeBytes(), Request::getPC(), Packet::getPtr(), Packet::getSize(), Request::hasContextId(), Request::hasPC(), ArmISA::i, Packet::isAtomicOp(), Packet::isWrite(), ArmISA::j, m_data_cache_hit_latency, RubyPort::m_mandatory_q_ptr, RubyPort::m_version, makeLineAddress(), pc, printAddress(), Packet::req, reqCoalescer, reqScopeToHSAScope(), and reqSegmentToHSASegment().
Referenced by completeIssue().
|
protected |
Definition at line 1063 of file GPUCoalescer.cc.
References kernelEndList, and RubyPort::ruby_hit_callback().
Referenced by completeIssue().
|
virtual |
Implements RubyPort.
Reimplemented in VIPERCoalescer.
Definition at line 695 of file GPUCoalescer.cc.
References assumingRfOCoherence, Request::contextId(), curTick(), X86ISA::FlagShift, Packet::getAddr(), Request::getFlags(), getRequestStatus(), Request::hasContextId(), insertKernel(), Request::isAcquire(), Packet::isAtomicOp(), Packet::isFlush(), Request::isInstFetch(), Request::isKernel(), Packet::isLLSC(), Request::isLockedRMW(), Packet::isRead(), Request::isRelease(), issueEvent, Packet::isWrite(), m_max_outstanding_requests, m_outstanding_count, makeLineAddress(), newKernelEnds, newRequests, panic, Packet::req, reqCoalescer, EventManager::schedule(), Event::scheduled(), ArmISA::status, and X86ISA::StoreCheck.
Referenced by VIPERCoalescer::makeRequest().
Definition at line 1194 of file GPUCoalescer.cc.
References ArmISA::i, m_readRequestTable, and GPUCoalescerRequest::pkt.
void GPUCoalescer::markRemoved | ( | ) |
Definition at line 381 of file GPUCoalescer.cc.
References m_outstanding_count, m_readRequestTable, and m_writeRequestTable.
Referenced by atomicCallback(), readCallback(), removeRequest(), and writeCallback().
|
private |
|
inlinevirtual |
Implements RubyPort.
Definition at line 164 of file GPUCoalescer.hh.
References m_outstanding_count.
void GPUCoalescer::print | ( | std::ostream & | out | ) | const |
Definition at line 973 of file GPUCoalescer.cc.
References m_outstanding_count, m_readRequestTable, RubyPort::m_version, and m_writeRequestTable.
Referenced by operator<<().
void GPUCoalescer::printProgress | ( | std::ostream & | out | ) | const |
Definition at line 229 of file GPUCoalescer.cc.
Definition at line 537 of file GPUCoalescer.cc.
Referenced by readCallback().
Definition at line 543 of file GPUCoalescer.cc.
References readCallback().
void GPUCoalescer::readCallback | ( | Addr | address, |
MachineType | mach, | ||
DataBlock & | data, | ||
Cycles | initialRequestTime, | ||
Cycles | forwardRequestTime, | ||
Cycles | firstResponseTime | ||
) |
Definition at line 551 of file GPUCoalescer.cc.
References readCallback().
void GPUCoalescer::readCallback | ( | Addr | address, |
MachineType | mach, | ||
DataBlock & | data, | ||
Cycles | initialRequestTime, | ||
Cycles | forwardRequestTime, | ||
Cycles | firstResponseTime, | ||
bool | isRegion | ||
) |
Definition at line 565 of file GPUCoalescer.cc.
References DPRINTF, hitCallback(), ArmISA::i, m_readRequestTable, makeLineAddress(), and markRemoved().
Definition at line 1148 of file GPUCoalescer.cc.
References CP_LdMiss, CP_TCCLdHits, CP_TCPLdHits, CP_TCPLdTransfers, and machineIDToMachineType().
Definition at line 1162 of file GPUCoalescer.cc.
References CP_StMiss, CP_TCCStHits, CP_TCPStHits, CP_TCPStTransfers, and machineIDToMachineType().
|
protected |
Definition at line 1203 of file GPUCoalescer.cc.
References Clocked::curCycle(), curTick(), DPRINTFR, Packet::getAddr(), GPU_LdMiss, GPU_StMiss, GPU_TCCLdHits, GPU_TCCStHits, GPU_TCPLdHits, GPU_TCPLdTransfers, GPU_TCPStHits, GPU_TCPStTransfers, GPUCoalescerRequest::issue_time, m_FirstResponseToCompletionDelayHist, m_ForwardToFirstResponseDelayHist, m_InitialToForwardDelayHist, m_IssueToInitialDelayHist, m_latencyHist, m_missLatencyHist, m_missMachLatencyHist, m_missTypeLatencyHist, m_missTypeMachLatencyHist, GPUCoalescerRequest::m_type, m_typeLatencyHist, RubyPort::m_version, GPUCoalescerRequest::pkt, printAddress(), Stats::DistBase< Derived, Stor >::sample(), and X86ISA::type.
Referenced by atomicCallback(), and hitCallback().
void GPUCoalescer::recordRequestType | ( | SequencerRequestType | requestType | ) |
Definition at line 994 of file GPUCoalescer.cc.
References DPRINTF.
|
virtual |
Register statistics for this object.
Reimplemented from SimObject.
Definition at line 1281 of file GPUCoalescer.cc.
References CP_LdMiss, CP_StMiss, CP_TCCLdHits, CP_TCCStHits, CP_TCPLdHits, CP_TCPLdTransfers, CP_TCPStHits, CP_TCPStTransfers, Stats::DataWrap< Derived, InfoProxyType >::desc(), GPU_LdMiss, GPU_StMiss, GPU_TCCLdHits, GPU_TCCStHits, GPU_TCPLdHits, GPU_TCPLdTransfers, GPU_TCPStHits, GPU_TCPStTransfers, ArmISA::i, Stats::Histogram::init(), ArmISA::j, m_FirstResponseToCompletionDelayHist, m_ForwardToFirstResponseDelayHist, m_InitialToForwardDelayHist, m_IssueToInitialDelayHist, m_latencyHist, m_missLatencyHist, m_missMachLatencyHist, m_missTypeLatencyHist, m_missTypeMachLatencyHist, m_outstandReqHist, m_typeLatencyHist, SimObject::name(), Stats::DataWrap< Derived, InfoProxyType >::name(), and ClockedObject::regStats().
void GPUCoalescer::removeRequest | ( | GPUCoalescerRequest * | request | ) |
Definition at line 389 of file GPUCoalescer.cc.
References Packet::getAddr(), m_outstanding_count, m_readRequestTable, GPUCoalescerRequest::m_type, m_writeRequestTable, makeLineAddress(), markRemoved(), and GPUCoalescerRequest::pkt.
|
virtual |
Reset statistics associated with this object.
Reimplemented from SimObject.
Definition at line 206 of file GPUCoalescer.cc.
References ArmISA::i, ArmISA::j, m_FirstResponseToCompletionDelayHist, m_ForwardToFirstResponseDelayHist, m_InitialToForwardDelayHist, m_IssueToInitialDelayHist, m_latencyHist, m_missLatencyHist, m_missMachLatencyHist, m_missTypeLatencyHist, m_missTypeMachLatencyHist, m_typeLatencyHist, and Stats::DistBase< Derived, Stor >::reset().
|
protected |
void GPUCoalescer::wakeup | ( | ) |
Definition at line 154 of file GPUCoalescer.cc.
References Clocked::clockPeriod(), Clocked::curCycle(), curTick(), deadlockCheckEvent, Packet::getAddr(), GPUCoalescerRequest::issue_time, m_deadlock_threshold, m_outstanding_count, m_readRequestTable, RubyPort::m_version, m_writeRequestTable, panic, GPUCoalescerRequest::pkt, and EventManager::schedule().
Referenced by GPUCoalescer::GPUCoalescerWakeupEvent::process().
Definition at line 455 of file GPUCoalescer.cc.
Referenced by writeCallback().
Definition at line 461 of file GPUCoalescer.cc.
References writeCallback().
void GPUCoalescer::writeCallback | ( | Addr | address, |
MachineType | mach, | ||
DataBlock & | data, | ||
Cycles | initialRequestTime, | ||
Cycles | forwardRequestTime, | ||
Cycles | firstResponseTime, | ||
bool | isRegion | ||
) |
Definition at line 482 of file GPUCoalescer.cc.
References AbstractController::blockOnQueue(), DPRINTF, handleLlsc(), hitCallback(), ArmISA::i, RubyPort::m_controller, RubyPort::m_mandatory_q_ptr, m_runningGarnetStandalone, m_writeRequestTable, makeLineAddress(), markRemoved(), and AbstractController::unblock().
void GPUCoalescer::writeCallback | ( | Addr | address, |
MachineType | mach, | ||
DataBlock & | data, | ||
Cycles | initialRequestTime, | ||
Cycles | forwardRequestTime, | ||
Cycles | firstResponseTime | ||
) |
Definition at line 469 of file GPUCoalescer.cc.
References writeCallback().
|
protected |
Definition at line 324 of file GPUCoalescer.hh.
Referenced by GPUCoalescer(), and makeRequest().
|
protected |
Definition at line 340 of file GPUCoalescer.hh.
Referenced by recordCPReadCallBack(), and regStats().
|
protected |
Definition at line 345 of file GPUCoalescer.hh.
Referenced by recordCPWriteCallBack(), and regStats().
|
protected |
Definition at line 339 of file GPUCoalescer.hh.
Referenced by recordCPReadCallBack(), and regStats().
|
protected |
Definition at line 344 of file GPUCoalescer.hh.
Referenced by recordCPWriteCallBack(), and regStats().
|
protected |
Definition at line 337 of file GPUCoalescer.hh.
Referenced by recordCPReadCallBack(), and regStats().
|
protected |
Definition at line 338 of file GPUCoalescer.hh.
Referenced by recordCPReadCallBack(), and regStats().
|
protected |
Definition at line 342 of file GPUCoalescer.hh.
Referenced by recordCPWriteCallBack(), and regStats().
|
protected |
Definition at line 343 of file GPUCoalescer.hh.
Referenced by recordCPWriteCallBack(), and regStats().
|
protected |
Definition at line 323 of file GPUCoalescer.hh.
Referenced by descheduleDeadlockEvent(), insertRequest(), isDeadlockEventScheduled(), and wakeup().
|
protected |
Definition at line 330 of file GPUCoalescer.hh.
Referenced by recordMissLatency(), and regStats().
|
protected |
Definition at line 335 of file GPUCoalescer.hh.
Referenced by recordMissLatency(), and regStats().
|
protected |
Definition at line 329 of file GPUCoalescer.hh.
Referenced by recordMissLatency(), and regStats().
|
protected |
Definition at line 334 of file GPUCoalescer.hh.
Referenced by recordMissLatency(), and regStats().
|
protected |
Definition at line 327 of file GPUCoalescer.hh.
Referenced by recordMissLatency(), and regStats().
|
protected |
Definition at line 328 of file GPUCoalescer.hh.
Referenced by recordMissLatency(), and regStats().
|
protected |
Definition at line 332 of file GPUCoalescer.hh.
Referenced by recordMissLatency(), and regStats().
|
protected |
Definition at line 333 of file GPUCoalescer.hh.
Referenced by recordMissLatency(), and regStats().
|
protected |
Definition at line 268 of file GPUCoalescer.hh.
Referenced by VIPERCoalescer::makeRequest(), and makeRequest().
|
protected |
Definition at line 298 of file GPUCoalescer.hh.
Referenced by insertKernel(), VIPERCoalescer::invCallback(), kernelCallback(), VIPERCoalescer::makeRequest(), and VIPERCoalescer::wbCallback().
|
protected |
Definition at line 282 of file GPUCoalescer.hh.
Referenced by GPUCoalescer(), VIPERCoalescer::invL1(), VIPERCoalescer::invwbL1(), issueRequest(), and VIPERCoalescer::wbL1().
|
protected |
Definition at line 276 of file GPUCoalescer.hh.
Referenced by GPUCoalescer(), handleLlsc(), hitCallback(), VIPERCoalescer::invL1(), VIPERCoalescer::invwbL1(), and VIPERCoalescer::wbL1().
|
protected |
Definition at line 297 of file GPUCoalescer.hh.
|
protected |
Definition at line 274 of file GPUCoalescer.hh.
Referenced by GPUCoalescer(), insertRequest(), and wakeup().
|
protected |
Definition at line 368 of file GPUCoalescer.hh.
Referenced by getFirstResponseToCompletionDelayHist(), recordMissLatency(), regStats(), and resetStats().
|
protected |
Definition at line 367 of file GPUCoalescer.hh.
Referenced by getForwardRequestToFirstResponseHist(), recordMissLatency(), regStats(), and resetStats().
|
protected |
Definition at line 366 of file GPUCoalescer.hh.
Referenced by getInitialToForwardDelayHist(), recordMissLatency(), regStats(), and resetStats().
|
protected |
Definition at line 277 of file GPUCoalescer.hh.
Referenced by GPUCoalescer(), and hitCallback().
|
protected |
Histograms for recording the breakdown of miss latency.
Definition at line 365 of file GPUCoalescer.hh.
Referenced by getIssueToInitialDelayHist(), recordMissLatency(), regStats(), and resetStats().
|
protected |
Histogram for holding latency profile of all requests.
Definition at line 351 of file GPUCoalescer.hh.
Referenced by getLatencyHist(), recordMissLatency(), regStats(), and resetStats().
|
protected |
Definition at line 304 of file GPUCoalescer.hh.
Referenced by getRequestStatus(), and GPUCoalescer().
|
protected |
Definition at line 303 of file GPUCoalescer.hh.
Referenced by getRequestStatus(), and GPUCoalescer().
|
protected |
Definition at line 273 of file GPUCoalescer.hh.
Referenced by GPUCoalescer(), and makeRequest().
|
protected |
Histogram for holding latency profile of all requests that miss in the controller connected to this sequencer.
Definition at line 356 of file GPUCoalescer.hh.
Referenced by getMissLatencyHist(), recordMissLatency(), regStats(), and resetStats().
|
protected |
Histograms for profiling the latencies for requests that required external messages.
Definition at line 361 of file GPUCoalescer.hh.
Referenced by getMissMachLatencyHist(), recordMissLatency(), regStats(), and resetStats().
|
protected |
Definition at line 357 of file GPUCoalescer.hh.
Referenced by getMissTypeLatencyHist(), recordMissLatency(), regStats(), and resetStats().
|
protected |
Definition at line 362 of file GPUCoalescer.hh.
Referenced by getMissTypeMachLatencyHist(), recordMissLatency(), regStats(), and resetStats().
|
protected |
Definition at line 296 of file GPUCoalescer.hh.
Referenced by GPUCoalescer(), insertRequest(), makeRequest(), markRemoved(), outstandingCount(), print(), removeRequest(), and wakeup().
|
protected |
Histogram for number of outstanding requests per cycle.
Definition at line 348 of file GPUCoalescer.hh.
Referenced by getOutstandReqHist(), insertRequest(), and regStats().
|
protected |
Definition at line 294 of file GPUCoalescer.hh.
Referenced by empty(), getRequestStatus(), insertRequest(), mapAddrToPkt(), markRemoved(), print(), readCallback(), removeRequest(), and wakeup().
|
protected |
Definition at line 306 of file GPUCoalescer.hh.
Referenced by GPUCoalescer(), and writeCallback().
|
protected |
Definition at line 301 of file GPUCoalescer.hh.
Referenced by getRequestStatus(), and GPUCoalescer().
|
protected |
Definition at line 302 of file GPUCoalescer.hh.
Referenced by getRequestStatus(), and GPUCoalescer().
|
protected |
Definition at line 352 of file GPUCoalescer.hh.
Referenced by getTypeLatencyHist(), recordMissLatency(), regStats(), and resetStats().
|
protected |
Definition at line 293 of file GPUCoalescer.hh.
Referenced by atomicCallback(), empty(), getRequestStatus(), insertRequest(), markRemoved(), print(), removeRequest(), wakeup(), and writeCallback().
|
protected |
Definition at line 299 of file GPUCoalescer.hh.
Referenced by completeIssue(), VIPERCoalescer::invCallback(), VIPERCoalescer::makeRequest(), makeRequest(), and VIPERCoalescer::wbCallback().
|
protected |
Definition at line 290 of file GPUCoalescer.hh.
Referenced by completeIssue(), and makeRequest().
|
protected |
Definition at line 289 of file GPUCoalescer.hh.
Referenced by atomicCallback(), completeIssue(), hitCallback(), issueRequest(), and makeRequest().