gem5
|
#include <wavefront.hh>
Public Types | |
enum | itype_e { I_ALU, I_GLOBAL, I_SHARED, I_FLAT, I_PRIVATE } |
enum | status_e { S_STOPPED, S_RETURNING, S_RUNNING } |
typedef WavefrontParams | Params |
Public Types inherited from SimObject | |
typedef SimObjectParams | Params |
Public Member Functions | |
uint32_t | remap (uint32_t vgprIndex, uint32_t size, uint8_t mode=0) |
void | resizeRegFiles (int num_cregs, int num_sregs, int num_dregs) |
bool | isGmInstruction (GPUDynInstPtr ii) |
bool | isLmInstruction (GPUDynInstPtr ii) |
bool | isOldestInstGMem () |
bool | isOldestInstLMem () |
bool | isOldestInstPrivMem () |
bool | isOldestInstFlatMem () |
bool | isOldestInstALU () |
bool | isOldestInstBarrier () |
void | computeActualWgSz (NDRange *ndr) |
void | initCallArgMem (int func_args_size_per_item, int wf_size) |
template<typename CType > | |
CType | readCallArgMem (int lane, int addr) |
template<typename CType > | |
void | writeCallArgMem (int lane, int addr, CType val) |
Wavefront (const Params *p) | |
~Wavefront () | |
virtual void | init () |
init() is called after all C++ SimObjects have been created and all ports are connected. More... | |
void | setParent (ComputeUnit *cu) |
void | start (uint64_t _wfDynId, uint64_t _base_ptr) |
void | exec () |
void | updateResources () |
int | ready (itype_e type) |
bool | instructionBufferHasBranch () |
void | regStats () |
Register statistics for this object. More... | |
VectorMask | getPred () |
bool | waitingAtBarrier (int lane) |
void | pushToReconvergenceStack (uint32_t pc, uint32_t rpc, const VectorMask &exec_mask) |
void | popFromReconvergenceStack () |
uint32_t | pc () const |
uint32_t | rpc () const |
VectorMask | execMask () const |
bool | execMask (int lane) const |
void | pc (uint32_t new_pc) |
void | discardFetch () |
uint32_t | getStaticContextSize () const |
Returns the size of the static hardware context of a particular wavefront This should be updated everytime the context is changed. More... | |
void | getContext (const void *out) |
Returns the hardware context as a stream of bytes This method is designed for HSAIL execution. More... | |
void | setContext (const void *in) |
Sets the hardware context fromt a stream of bytes This method is designed for HSAIL execution. More... | |
TheGpuISA::GPUISA & | gpuISA () |
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... | |
Private Attributes | |
TheGpuISA::GPUISA | _gpuISA |
std::deque< std::unique_ptr < ReconvergenceStackEntry > > | reconvergenceStack |
Stack containing Control Flow Graph nodes (i.e., kernel instructions) to be visited by the wavefront, and the associated execution masks. More... | |
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 |
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 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... | |
Definition at line 147 of file wavefront.hh.
typedef WavefrontParams Wavefront::Params |
Definition at line 321 of file wavefront.hh.
enum Wavefront::itype_e |
Enumerator | |
---|---|
I_ALU | |
I_GLOBAL | |
I_SHARED | |
I_FLAT | |
I_PRIVATE |
Definition at line 150 of file wavefront.hh.
enum Wavefront::status_e |
Enumerator | |
---|---|
S_STOPPED | |
S_RETURNING | |
S_RUNNING |
Definition at line 151 of file wavefront.hh.
Wavefront::Wavefront | ( | const Params * | p | ) |
Definition at line 51 of file wavefront.cc.
References barCnt, barrierCnt, condRegState, dropFetch, ArmISA::i, lastAddr, lastTrace, maxDpVgprs, maxSpVgprs, memReqsInPipe, memTraceBusy, oldBarrierCnt, oldDgpr, oldDgprTcnt, oldVgpr, oldVgprTcnt, outstandingReqs, outstandingReqsRdGm, outstandingReqsRdLm, outstandingReqsWrGm, outstandingReqsWrLm, pendingFetch, rdGmReqsInPipe, rdLmReqsInPipe, reservedVectorRegs, S_STOPPED, simdId, stalledAtBarrier, startVgprIndex, status, wfSlotId, workItemFlatId, workItemId, wrGmReqsInPipe, and wrLmReqsInPipe.
Wavefront::~Wavefront | ( | ) |
Definition at line 149 of file wavefront.cc.
References callArgMem, and condRegState.
void Wavefront::computeActualWgSz | ( | NDRange * | ndr | ) |
Definition at line 982 of file wavefront.cc.
References actualWgSz, actualWgSzTotal, ArmISA::d, gridSz, NDRange::wgId, and workGroupSz.
Referenced by ComputeUnit::fillKernelState().
void Wavefront::discardFetch | ( | ) |
Definition at line 809 of file wavefront.cc.
References dropFetch, instructionBuffer, and pendingFetch.
Referenced by exec().
void Wavefront::exec | ( | ) |
Definition at line 642 of file wavefront.cc.
References _gpuISA, ComputeUnit::activeLanesPerGMemInstrDist, ComputeUnit::activeLanesPerLMemInstrDist, ComputeUnit::aluPipe, computeUnit, ComputeUnit::controlFlowDivergenceDist, ComputeUnit::cu_id, discardFetch(), DPRINTF, dstRegOpDist, execMask(), ComputeUnit::execRateDist, ComputeUnit::GlbMemUnitId(), Shader::hsail_mode, instructionBuffer, isGmInstruction(), isLmInstruction(), ComputeUnit::issuePeriod, ComputeUnit::lastExecCycle, ComputeUnit::nextGlbRdBus(), ComputeUnit::nextLocRdBus(), ComputeUnit::numInstrExecuted, ComputeUnit::numVecOpsExecuted, pc(), popFromReconvergenceStack(), rpc(), S_RETURNING, S_STOPPED, Stats::DistBase< Derived, Stor >::sample(), ComputeUnit::shader, ComputeUnit::ShrMemUnitId(), simdId, Shader::SIMT, ComputeUnit::spBypassLength(), srcRegOpDist, status, Shader::ticks(), ComputeUnit::totalCycles, ComputeUnit::updateInstStats(), Stats::ScalarBase< Derived, Stor >::value(), ComputeUnit::vrf, ComputeUnit::vrfToGlobalMemPipeBus, ComputeUnit::vrfToLocalMemPipeBus, wfDynId, wfSlotId, and ComputeUnit::wfWait.
VectorMask Wavefront::execMask | ( | ) | const |
Definition at line 828 of file wavefront.cc.
References reconvergenceStack.
Referenced by RegAddrOperand< RegOperandType >::calcVector(), exec(), HsailISA::CbrInstBase< TargetType >::execute(), HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), getPred(), HsailISA::Call::MagicAtomicNRAddGlobalU32Reg(), HsailISA::Call::MagicAtomicNRAddGroupU32Reg(), HsailISA::Call::MagicLoadGlobalU32Reg(), HsailISA::Call::MagicSimBreak(), and popFromReconvergenceStack().
bool Wavefront::execMask | ( | int | lane | ) | const |
Definition at line 834 of file wavefront.cc.
References reconvergenceStack.
void Wavefront::getContext | ( | const void * | out | ) |
Returns the hardware context as a stream of bytes This method is designed for HSAIL execution.
Definition at line 857 of file wavefront.cc.
References barCnt, barrierCnt, barrierId, computeUnit, condRegState, ComputeUnit::cu_id, ArmISA::i, initMask, ldsChunk, maxBarCnt, maxDpVgprs, maxSpVgprs, ConditionRegisterState::numRegs(), oldBarrierCnt, privBase, ConditionRegisterState::read(), LdsChunk::read(), reconvergenceStack, remap(), simdId, LdsChunk::size(), spillBase, X86ISA::val, ComputeUnit::vrf, wfId, ComputeUnit::wfSize(), wgId, and workItemId.
|
inline |
Definition at line 338 of file wavefront.hh.
References execMask(), and initMask.
Referenced by HsailISA::Call::execPseudoInst(), HsailISA::LdaInst< DestDataType, AddrOperandType >::execute(), HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::Ret::execute(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), HsailISA::Call::MagicJoinWFBar(), HsailISA::Call::MagicMaskLower(), HsailISA::Call::MagicMaskUpper(), HsailISA::Call::MagicMostSigBroadcast(), HsailISA::Call::MagicMostSigThread(), HsailISA::Call::MagicPanic(), HsailISA::Call::MagicPrefixSum(), HsailISA::Call::MagicPrintLane(), HsailISA::Call::MagicPrintLane64(), HsailISA::Call::MagicPrintWF32(), HsailISA::Call::MagicPrintWF32ID(), HsailISA::Call::MagicPrintWF64(), HsailISA::Call::MagicPrintWFFloat(), HsailISA::Call::MagicPrintWFID64(), HsailISA::Call::MagicReduction(), HsailISA::Call::MagicWaitWFBar(), and HsailISA::Call::MagicXactCasLd().
uint32_t Wavefront::getStaticContextSize | ( | ) | const |
Returns the size of the static hardware context of a particular wavefront This should be updated everytime the context is changed.
Definition at line 847 of file wavefront.cc.
References barCnt, barrierCnt, barrierId, computeUnit, ComputeUnit::cu_id, initMask, ldsChunk, maxBarCnt, oldBarrierCnt, privBase, spillBase, wfId, ComputeUnit::wfSize(), and wgId.
|
inline |
Definition at line 378 of file wavefront.hh.
References _gpuISA.
|
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 SimObject.
Definition at line 135 of file wavefront.cc.
References reservedVectorRegs, and startVgprIndex.
|
inline |
Definition at line 302 of file wavefront.hh.
References callArgMem.
bool Wavefront::instructionBufferHasBranch | ( | ) |
Definition at line 266 of file wavefront.cc.
References instructionBuffer.
Referenced by FetchUnit::exec().
bool Wavefront::isGmInstruction | ( | GPUDynInstPtr | ii | ) |
Definition at line 165 of file wavefront.cc.
Referenced by exec().
bool Wavefront::isLmInstruction | ( | GPUDynInstPtr | ii | ) |
Definition at line 174 of file wavefront.cc.
Referenced by exec().
bool Wavefront::isOldestInstALU | ( | ) |
Definition at line 184 of file wavefront.cc.
References instructionBuffer, S_STOPPED, and status.
Referenced by ScoreboardCheckStage::collectStatistics().
bool Wavefront::isOldestInstBarrier | ( | ) |
Definition at line 199 of file wavefront.cc.
References instructionBuffer, S_STOPPED, and status.
bool Wavefront::isOldestInstFlatMem | ( | ) |
Definition at line 251 of file wavefront.cc.
References instructionBuffer, S_STOPPED, and status.
Referenced by ScoreboardCheckStage::collectStatistics().
bool Wavefront::isOldestInstGMem | ( | ) |
Definition at line 212 of file wavefront.cc.
References instructionBuffer, S_STOPPED, and status.
Referenced by ScoreboardCheckStage::collectStatistics().
bool Wavefront::isOldestInstLMem | ( | ) |
Definition at line 225 of file wavefront.cc.
References instructionBuffer, S_STOPPED, and status.
Referenced by ScoreboardCheckStage::collectStatistics().
bool Wavefront::isOldestInstPrivMem | ( | ) |
Definition at line 238 of file wavefront.cc.
References instructionBuffer, S_STOPPED, and status.
Referenced by ScoreboardCheckStage::collectStatistics().
uint32_t Wavefront::pc | ( | ) | const |
Definition at line 816 of file wavefront.cc.
References reconvergenceStack.
Referenced by exec(), HsailISA::BrnInstBase< TargetType >::execute(), HsailISA::CbrInstBase< TargetType >::execute(), HsailISA::BrInstBase< TargetType >::execute(), FetchUnit::initiateFetch(), popFromReconvergenceStack(), and pushToReconvergenceStack().
void Wavefront::pc | ( | uint32_t | new_pc | ) |
Definition at line 841 of file wavefront.cc.
References reconvergenceStack.
void Wavefront::popFromReconvergenceStack | ( | ) |
Definition at line 791 of file wavefront.cc.
References computeUnit, ComputeUnit::cu_id, DPRINTF, execMask(), pc(), reconvergenceStack, simdId, wfDynId, and wfSlotId.
Referenced by exec(), HsailISA::BrnInstBase< TargetType >::execute(), HsailISA::CbrInstBase< TargetType >::execute(), and HsailISA::BrInstBase< TargetType >::execute().
void Wavefront::pushToReconvergenceStack | ( | uint32_t | pc, |
uint32_t | rpc, | ||
const VectorMask & | exec_mask | ||
) |
Definition at line 783 of file wavefront.cc.
References pc(), reconvergenceStack, and rpc().
Referenced by HsailISA::CbrInstBase< TargetType >::execute(), setContext(), and ComputeUnit::startWavefront().
|
inline |
Definition at line 309 of file wavefront.hh.
References callArgMem, and CallArgMem::getLaneAddr().
Referenced by HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute().
int Wavefront::ready | ( | itype_e | type | ) |
Definition at line 305 of file wavefront.cc.
References ComputeUnit::AllAtBarrier(), barrierCnt, barrierId, computeUnit, ComputeUnit::cu_id, dispatchId, DPRINTF, ComputeUnit::getRefCounter(), ComputeUnit::globalMemoryPipe, I_ALU, I_FLAT, I_GLOBAL, I_PRIVATE, I_SHARED, instructionBuffer, ArmISA::j, ComputeUnit::localMemoryPipe, M5_VAR_USED, memReqsInPipe, ComputeUnit::numGlbMemUnits, ComputeUnit::numLocMemUnits, oldBarrierCnt, outstandingReqs, outstandingReqsRdGm, outstandingReqsRdLm, outstandingReqsWrGm, outstandingReqsWrLm, panic, RD_WR, rdGmReqsInPipe, rdLmReqsInPipe, S_RETURNING, S_STOPPED, simdId, stalledAtBarrier, status, ComputeUnit::vrf, ComputeUnit::vrfToGlobalMemPipeBus, ComputeUnit::vrfToLocalMemPipeBus, wfSlotId, ComputeUnit::wfWait, wgId, wrGmReqsInPipe, and wrLmReqsInPipe.
Referenced by ScoreboardCheckStage::exec().
|
virtual |
Register statistics for this object.
Reimplemented from SimObject.
Definition at line 95 of file wavefront.cc.
References Stats::DataWrap< Derived, InfoProxyType >::desc(), dstRegOpDist, Stats::Distribution::init(), SimObject::name(), Stats::DataWrap< Derived, InfoProxyType >::name(), numTimesBlockedDueRAWDependencies, numTimesBlockedDueVrfPortAvail, numTimesBlockedDueWAXDependencies, SimObject::regStats(), and srcRegOpDist.
uint32_t Wavefront::remap | ( | uint32_t | vgprIndex, |
uint32_t | size, | ||
uint8_t | mode = 0 |
||
) |
Definition at line 282 of file wavefront.cc.
References computeUnit, maxSpVgprs, reservedVectorRegs, simdId, startVgprIndex, and ComputeUnit::vrf.
Referenced by HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::completeAcc(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::completeAcc(), VectorRegisterFile::exec(), getContext(), VectorRegisterFile::operandsReady(), SRegOperand::set(), DRegOperand::set(), setContext(), and VectorRegisterFile::updateResources().
void Wavefront::resizeRegFiles | ( | int | num_cregs, |
int | num_sregs, | ||
int | num_dregs | ||
) |
Definition at line 142 of file wavefront.cc.
References condRegState, ConditionRegisterState::init(), maxDpVgprs, and maxSpVgprs.
Referenced by ComputeUnit::fillKernelState().
uint32_t Wavefront::rpc | ( | ) | const |
Definition at line 822 of file wavefront.cc.
References reconvergenceStack.
Referenced by exec(), HsailISA::BrnInstBase< TargetType >::execute(), HsailISA::CbrInstBase< TargetType >::execute(), HsailISA::BrInstBase< TargetType >::execute(), and pushToReconvergenceStack().
void Wavefront::setContext | ( | const void * | in | ) |
Sets the hardware context fromt a stream of bytes This method is designed for HSAIL execution.
Restoring LDS contents
Definition at line 924 of file wavefront.cc.
References barCnt, barrierCnt, barrierId, computeUnit, condRegState, ComputeUnit::cu_id, ReconvergenceStackEntry::execMask, ArmISA::i, initMask, ldsChunk, maxBarCnt, maxDpVgprs, maxSpVgprs, ConditionRegisterState::numRegs(), oldBarrierCnt, ReconvergenceStackEntry::pc, privBase, pushToReconvergenceStack(), remap(), ReconvergenceStackEntry::rpc, simdId, LdsChunk::size(), spillBase, X86ISA::val, ComputeUnit::vrf, wfId, ComputeUnit::wfSize(), wgId, workItemId, ConditionRegisterState::write(), and LdsChunk::write().
|
inline |
Definition at line 327 of file wavefront.hh.
References computeUnit.
void Wavefront::start | ( | uint64_t | _wfDynId, |
uint64_t | _base_ptr | ||
) |
Definition at line 157 of file wavefront.cc.
References basePtr, S_RUNNING, status, and wfDynId.
Referenced by ComputeUnit::startWavefront().
void Wavefront::updateResources | ( | ) |
Definition at line 542 of file wavefront.cc.
References ComputeUnit::aluPipe, computeUnit, ComputeUnit::GlbMemUnitId(), instructionBuffer, ComputeUnit::issuePeriod, memReqsInPipe, ComputeUnit::nextGlbRdBus(), ComputeUnit::nextLocRdBus(), rdGmReqsInPipe, rdLmReqsInPipe, ComputeUnit::shader, ComputeUnit::ShrMemUnitId(), simdId, ComputeUnit::spBypassLength(), Shader::ticks(), ComputeUnit::vrf, ComputeUnit::vrfToGlobalMemPipeBus, ComputeUnit::vrfToLocalMemPipeBus, ComputeUnit::wfWait, wrGmReqsInPipe, and wrLmReqsInPipe.
Referenced by ScheduleStage::exec().
bool Wavefront::waitingAtBarrier | ( | int | lane | ) |
Definition at line 777 of file wavefront.cc.
|
inline |
Definition at line 316 of file wavefront.hh.
References addr, callArgMem, CallArgMem::setLaneAddr(), and X86ISA::val.
Referenced by ListOperand::set().
|
private |
Definition at line 384 of file wavefront.hh.
uint32_t Wavefront::actualWgSz[3] |
Definition at line 202 of file wavefront.hh.
Referenced by computeActualWgSz(), and ComputeUnit::startWavefront().
uint32_t Wavefront::actualWgSzTotal |
Definition at line 203 of file wavefront.hh.
Referenced by computeActualWgSz(), ComputeUnit::startWavefront(), and ComputeUnit::StartWorkgroup().
std::vector<int> Wavefront::barCnt |
Definition at line 253 of file wavefront.hh.
Referenced by getContext(), getStaticContextSize(), HsailISA::Call::MagicJoinWFBar(), HsailISA::Call::MagicWaitWFBar(), setContext(), ComputeUnit::startWavefront(), waitingAtBarrier(), and Wavefront().
uint32_t Wavefront::barrierCnt |
Definition at line 157 of file wavefront.hh.
Referenced by ComputeUnit::AllAtBarrier(), HsailISA::Barrier::execute(), getContext(), getStaticContextSize(), ready(), ComputeUnit::DataPort::recvTimingResp(), setContext(), ComputeUnit::startWavefront(), and Wavefront().
uint32_t Wavefront::barrierId |
Definition at line 158 of file wavefront.hh.
Referenced by ComputeUnit::AllAtBarrier(), getContext(), getStaticContextSize(), ready(), setContext(), and ComputeUnit::startWavefront().
uint32_t Wavefront::barrierSlots |
Definition at line 159 of file wavefront.hh.
Referenced by ComputeUnit::startWavefront().
uint64_t Wavefront::basePtr |
Definition at line 154 of file wavefront.hh.
Referenced by FetchUnit::initiateFetch(), and start().
CallArgMem* Wavefront::callArgMem |
Definition at line 300 of file wavefront.hh.
Referenced by initCallArgMem(), readCallArgMem(), writeCallArgMem(), and ~Wavefront().
ComputeUnit* Wavefront::computeUnit |
Definition at line 167 of file wavefront.hh.
Referenced by HsailISA::Call::calcAddr(), HsailISA::calcPrivAddr(), RegAddrOperand< RegOperandType >::calcVector(), NoRegAddrOperand::calcVector(), HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::completeAcc(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::completeAcc(), LocalMemPipeline::exec(), GlobalMemPipeline::exec(), ConditionRegisterState::exec(), exec(), HsailISA::Call::execPseudoInst(), HsailISA::LdaInst< DestDataType, AddrOperandType >::execute(), HsailISA::CbrInstBase< TargetType >::execute(), HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::Ret::execute(), HsailISA::MemFence::execute(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), getContext(), getStaticContextSize(), HsailISA::MemFence::initiateAcc(), HsailISA::Call::MagicAtomicNRAddGlobalU32Reg(), HsailISA::Call::MagicAtomicNRAddGroupU32Reg(), HsailISA::Call::MagicJoinWFBar(), HsailISA::Call::MagicLoadGlobalU32Reg(), HsailISA::Call::MagicMaskLower(), HsailISA::Call::MagicMaskUpper(), HsailISA::Call::MagicMostSigBroadcast(), HsailISA::Call::MagicMostSigThread(), HsailISA::Call::MagicPanic(), HsailISA::Call::MagicPrefixSum(), HsailISA::Call::MagicPrintLane(), HsailISA::Call::MagicPrintLane64(), HsailISA::Call::MagicPrintWF32(), HsailISA::Call::MagicPrintWF32ID(), HsailISA::Call::MagicPrintWF64(), HsailISA::Call::MagicPrintWFFloat(), HsailISA::Call::MagicPrintWFID64(), HsailISA::Call::MagicReduction(), HsailISA::Call::MagicSimBreak(), HsailISA::Call::MagicWaitWFBar(), HsailISA::Call::MagicXactCasLd(), popFromReconvergenceStack(), ready(), remap(), SRegOperand::set(), DRegOperand::set(), CRegOperand::set(), ListOperand::set(), setContext(), setParent(), and updateResources().
class ConditionRegisterState* Wavefront::condRegState |
Definition at line 175 of file wavefront.hh.
Referenced by getContext(), resizeRegFiles(), CRegOperand::set(), setContext(), Wavefront(), and ~Wavefront().
uint32_t Wavefront::dispatchId |
Definition at line 208 of file wavefront.hh.
Referenced by HsailISA::Ret::execute(), ready(), and ComputeUnit::startWavefront().
bool Wavefront::dropFetch |
Definition at line 172 of file wavefront.hh.
Referenced by discardFetch(), HsailISA::Ret::execute(), HsailISA::Call::MagicWaitWFBar(), ComputeUnit::startWavefront(), and Wavefront().
Stats::Distribution Wavefront::dstRegOpDist |
Definition at line 296 of file wavefront.hh.
Referenced by exec(), and regStats().
uint32_t Wavefront::gridSz[3] |
Definition at line 198 of file wavefront.hh.
Referenced by computeActualWgSz(), and ComputeUnit::fillKernelState().
VectorMask Wavefront::initMask |
Definition at line 250 of file wavefront.hh.
Referenced by HsailISA::Ret::execute(), getContext(), getPred(), getStaticContextSize(), setContext(), and ComputeUnit::startWavefront().
std::deque<GPUDynInstPtr> Wavefront::instructionBuffer |
Definition at line 169 of file wavefront.hh.
Referenced by ScoreboardCheckStage::collectStatistics(), discardFetch(), FetchUnit::exec(), exec(), HsailISA::Ret::execute(), FetchUnit::initiateFetch(), instructionBufferHasBranch(), isOldestInstALU(), isOldestInstBarrier(), isOldestInstFlatMem(), isOldestInstGMem(), isOldestInstLMem(), isOldestInstPrivMem(), HsailISA::Call::MagicWaitWFBar(), ready(), ComputeUnit::startWavefront(), and updateResources().
uint8_t* Wavefront::kernelArgs |
Definition at line 280 of file wavefront.hh.
Referenced by HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), and ComputeUnit::fillKernelState().
int Wavefront::kernId |
Definition at line 163 of file wavefront.hh.
Referenced by HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::MemFence::execute(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), HsailISA::Call::MagicSimBreak(), GpuDispatcher::notifyWgCompl(), ComputeUnit::DataPort::recvTimingResp(), and ComputeUnit::startWavefront().
std::vector<Addr> Wavefront::lastAddr |
Definition at line 192 of file wavefront.hh.
Referenced by HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), and Wavefront().
uint64_t Wavefront::lastTrace |
Definition at line 228 of file wavefront.hh.
Referenced by Wavefront().
LdsChunk* Wavefront::ldsChunk |
Definition at line 260 of file wavefront.hh.
Referenced by HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execAtomic(), getContext(), getStaticContextSize(), setContext(), and ComputeUnit::startWavefront().
int Wavefront::maxBarCnt |
Definition at line 254 of file wavefront.hh.
Referenced by getContext(), getStaticContextSize(), HsailISA::Call::MagicJoinWFBar(), HsailISA::Call::MagicWaitWFBar(), setContext(), ComputeUnit::startWavefront(), and waitingAtBarrier().
uint32_t Wavefront::maxDpVgprs |
Definition at line 179 of file wavefront.hh.
Referenced by getContext(), resizeRegFiles(), setContext(), and Wavefront().
uint32_t Wavefront::maxDynWaveId |
Definition at line 207 of file wavefront.hh.
uint32_t Wavefront::maxSpVgprs |
Definition at line 177 of file wavefront.hh.
Referenced by getContext(), remap(), resizeRegFiles(), setContext(), and Wavefront().
uint32_t Wavefront::memReqsInPipe |
Definition at line 213 of file wavefront.hh.
Referenced by HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::MemFence::execute(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), HsailISA::Call::MagicAtomicNRAddGlobalU32Reg(), HsailISA::Call::MagicAtomicNRAddGroupU32Reg(), HsailISA::Call::MagicLoadGlobalU32Reg(), ready(), updateResources(), and Wavefront().
int Wavefront::memTraceBusy |
Definition at line 227 of file wavefront.hh.
Referenced by Wavefront().
Stats::Scalar Wavefront::numTimesBlockedDueRAWDependencies |
Definition at line 292 of file wavefront.hh.
Referenced by VectorRegisterFile::operandsReady(), and regStats().
Stats::Scalar Wavefront::numTimesBlockedDueVrfPortAvail |
Definition at line 286 of file wavefront.hh.
Referenced by regStats().
Stats::Scalar Wavefront::numTimesBlockedDueWAXDependencies |
Definition at line 289 of file wavefront.hh.
Referenced by VectorRegisterFile::operandsReady(), and regStats().
uint32_t Wavefront::oldBarrierCnt |
Definition at line 156 of file wavefront.hh.
Referenced by HsailISA::Barrier::execute(), getContext(), getStaticContextSize(), ready(), setContext(), ComputeUnit::startWavefront(), and Wavefront().
std::vector<uint64_t> Wavefront::oldDgpr |
Definition at line 243 of file wavefront.hh.
Referenced by Wavefront().
uint32_t Wavefront::oldDgprId |
Definition at line 245 of file wavefront.hh.
uint64_t Wavefront::oldDgprTcnt |
Definition at line 247 of file wavefront.hh.
Referenced by Wavefront().
std::vector<uint32_t> Wavefront::oldVgpr |
Definition at line 236 of file wavefront.hh.
Referenced by Wavefront().
uint32_t Wavefront::oldVgprId |
Definition at line 238 of file wavefront.hh.
uint64_t Wavefront::oldVgprTcnt |
Definition at line 240 of file wavefront.hh.
Referenced by Wavefront().
uint32_t Wavefront::outstandingReqs |
Definition at line 210 of file wavefront.hh.
Referenced by ComputeUnit::AllAtBarrier(), LocalMemPipeline::exec(), GlobalMemPipeline::exec(), HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::MemFence::execute(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), HsailISA::Call::MagicAtomicNRAddGlobalU32Reg(), HsailISA::Call::MagicAtomicNRAddGroupU32Reg(), HsailISA::Call::MagicLoadGlobalU32Reg(), ready(), ComputeUnit::DataPort::recvTimingResp(), and Wavefront().
uint32_t Wavefront::outstandingReqsRdGm |
Definition at line 219 of file wavefront.hh.
Referenced by GlobalMemPipeline::exec(), HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), HsailISA::Call::MagicAtomicNRAddGlobalU32Reg(), HsailISA::Call::MagicAtomicNRAddGroupU32Reg(), HsailISA::Call::MagicLoadGlobalU32Reg(), ready(), and Wavefront().
uint32_t Wavefront::outstandingReqsRdLm |
Definition at line 221 of file wavefront.hh.
Referenced by LocalMemPipeline::exec(), HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), ready(), and Wavefront().
uint32_t Wavefront::outstandingReqsWrGm |
Definition at line 215 of file wavefront.hh.
Referenced by GlobalMemPipeline::exec(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), HsailISA::Call::MagicAtomicNRAddGlobalU32Reg(), HsailISA::Call::MagicAtomicNRAddGroupU32Reg(), ready(), and Wavefront().
uint32_t Wavefront::outstandingReqsWrLm |
Definition at line 217 of file wavefront.hh.
Referenced by LocalMemPipeline::exec(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), ready(), and Wavefront().
bool Wavefront::pendingFetch |
Definition at line 171 of file wavefront.hh.
Referenced by discardFetch(), FetchUnit::exec(), HsailISA::Ret::execute(), HsailISA::Call::MagicWaitWFBar(), ComputeUnit::startWavefront(), and Wavefront().
Addr Wavefront::privBase |
Definition at line 270 of file wavefront.hh.
Referenced by HsailISA::calcPrivAddr(), HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), getContext(), getStaticContextSize(), setContext(), and ComputeUnit::startWavefront().
uint32_t Wavefront::privSizePerItem |
Definition at line 272 of file wavefront.hh.
Referenced by HsailISA::calcPrivAddr(), HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), and ComputeUnit::fillKernelState().
uint32_t Wavefront::rdGmReqsInPipe |
Definition at line 223 of file wavefront.hh.
Referenced by HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::MemFence::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), HsailISA::Call::MagicAtomicNRAddGlobalU32Reg(), HsailISA::Call::MagicAtomicNRAddGroupU32Reg(), HsailISA::Call::MagicLoadGlobalU32Reg(), ready(), updateResources(), and Wavefront().
uint32_t Wavefront::rdLmReqsInPipe |
Definition at line 222 of file wavefront.hh.
Referenced by HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), ready(), updateResources(), and Wavefront().
|
private |
Stack containing Control Flow Graph nodes (i.e., kernel instructions) to be visited by the wavefront, and the associated execution masks.
The reconvergence stack grows every time the wavefront reaches a divergence point (branch instruction), and shrinks every time the wavefront reaches a reconvergence point (immediate post-dominator instruction).
Definition at line 392 of file wavefront.hh.
Referenced by execMask(), getContext(), pc(), popFromReconvergenceStack(), pushToReconvergenceStack(), and rpc().
int Wavefront::reservedVectorRegs |
Definition at line 230 of file wavefront.hh.
Referenced by HsailISA::Ret::execute(), init(), remap(), ComputeUnit::StartWorkgroup(), and Wavefront().
Addr Wavefront::roBase |
Definition at line 275 of file wavefront.hh.
Referenced by HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), and ComputeUnit::fillKernelState().
uint32_t Wavefront::roSize |
Definition at line 277 of file wavefront.hh.
Referenced by HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), and ComputeUnit::fillKernelState().
int Wavefront::simdId |
Definition at line 165 of file wavefront.hh.
Referenced by ScheduleStage::arbitrate(), HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::completeAcc(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::completeAcc(), LocalMemPipeline::exec(), ScheduleStage::exec(), GlobalMemPipeline::exec(), ConditionRegisterState::exec(), VectorRegisterFile::exec(), exec(), HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::Ret::execute(), HsailISA::MemFence::execute(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), FetchStage::fetch(), FetchUnit::fetch(), getContext(), FetchUnit::initiateFetch(), HsailISA::Call::MagicAtomicNRAddGlobalU32Reg(), HsailISA::Call::MagicAtomicNRAddGroupU32Reg(), HsailISA::Call::MagicLoadGlobalU32Reg(), HsailISA::Call::MagicSimBreak(), HsailISA::Call::MagicXactCasLd(), popFromReconvergenceStack(), ready(), ComputeUnit::DataPort::recvTimingResp(), remap(), SRegOperand::set(), DRegOperand::set(), CRegOperand::set(), ListOperand::set(), setContext(), ComputeUnit::startWavefront(), updateResources(), and Wavefront().
Addr Wavefront::spillBase |
Definition at line 263 of file wavefront.hh.
Referenced by HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), getContext(), getStaticContextSize(), setContext(), and ComputeUnit::startWavefront().
uint32_t Wavefront::spillSizePerItem |
Definition at line 265 of file wavefront.hh.
Referenced by HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), and ComputeUnit::fillKernelState().
uint32_t Wavefront::spillWidth |
Definition at line 267 of file wavefront.hh.
Referenced by HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), and ComputeUnit::startWavefront().
Stats::Distribution Wavefront::srcRegOpDist |
Definition at line 295 of file wavefront.hh.
Referenced by exec(), and regStats().
bool Wavefront::stalledAtBarrier |
Definition at line 256 of file wavefront.hh.
Referenced by HsailISA::Barrier::execute(), ready(), ComputeUnit::startWavefront(), and Wavefront().
uint32_t Wavefront::startVgprIndex |
Definition at line 233 of file wavefront.hh.
Referenced by HsailISA::Ret::execute(), init(), remap(), ComputeUnit::StartWorkgroup(), and Wavefront().
status_e Wavefront::status |
Definition at line 160 of file wavefront.hh.
Referenced by ComputeUnit::AllAtBarrier(), FetchUnit::exec(), exec(), HsailISA::Ret::execute(), isOldestInstALU(), isOldestInstBarrier(), isOldestInstFlatMem(), isOldestInstGMem(), isOldestInstLMem(), isOldestInstPrivMem(), ready(), ComputeUnit::DataPort::recvTimingResp(), start(), ComputeUnit::StartWorkgroup(), and Wavefront().
uint64_t Wavefront::wfDynId |
Definition at line 282 of file wavefront.hh.
Referenced by OFSchedulingPolicy::chooseWave(), exec(), HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::Ret::execute(), HsailISA::MemFence::execute(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), HsailISA::Call::MagicAtomicNRAddGlobalU32Reg(), HsailISA::Call::MagicAtomicNRAddGroupU32Reg(), HsailISA::Call::MagicLoadGlobalU32Reg(), HsailISA::Call::MagicPrintWF32(), HsailISA::Call::MagicPrintWF32ID(), HsailISA::Call::MagicPrintWF64(), HsailISA::Call::MagicPrintWFFloat(), HsailISA::Call::MagicPrintWFID64(), popFromReconvergenceStack(), ComputeUnit::DataPort::recvTimingResp(), and start().
uint32_t Wavefront::wfId |
Definition at line 206 of file wavefront.hh.
Referenced by getContext(), getStaticContextSize(), setContext(), and ComputeUnit::startWavefront().
int Wavefront::wfSlotId |
Definition at line 162 of file wavefront.hh.
Referenced by ScheduleStage::arbitrate(), HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::completeAcc(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::completeAcc(), FetchUnit::exec(), ScheduleStage::exec(), exec(), HsailISA::LdInst< MemDataType, DestDataType, AddrOperandType >::execute(), HsailISA::Ret::execute(), HsailISA::MemFence::execute(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), FetchUnit::fetch(), FetchUnit::initiateFetch(), HsailISA::Call::MagicAtomicNRAddGlobalU32Reg(), HsailISA::Call::MagicAtomicNRAddGroupU32Reg(), HsailISA::Call::MagicLoadGlobalU32Reg(), HsailISA::Call::MagicSimBreak(), HsailISA::Call::MagicXactCasLd(), popFromReconvergenceStack(), ready(), ComputeUnit::DataPort::recvTimingResp(), SRegOperand::set(), DRegOperand::set(), CRegOperand::set(), ListOperand::set(), ComputeUnit::startWavefront(), and Wavefront().
uint32_t Wavefront::wgId |
Definition at line 199 of file wavefront.hh.
Referenced by HsailISA::Ret::execute(), getContext(), getStaticContextSize(), ready(), setContext(), and ComputeUnit::startWavefront().
uint32_t Wavefront::wgSz |
Definition at line 200 of file wavefront.hh.
Referenced by ComputeUnit::fillKernelState().
uint32_t Wavefront::workGroupId[3] |
Definition at line 196 of file wavefront.hh.
Referenced by ComputeUnit::startWavefront().
uint32_t Wavefront::workGroupSz[3] |
Definition at line 197 of file wavefront.hh.
Referenced by computeActualWgSz(), and ComputeUnit::fillKernelState().
std::vector<uint32_t> Wavefront::workItemFlatId |
Definition at line 194 of file wavefront.hh.
Referenced by ComputeUnit::startWavefront(), and Wavefront().
std::vector<uint32_t> Wavefront::workItemId[3] |
Definition at line 193 of file wavefront.hh.
Referenced by getContext(), setContext(), ComputeUnit::startWavefront(), and Wavefront().
uint32_t Wavefront::wrGmReqsInPipe |
Definition at line 225 of file wavefront.hh.
Referenced by HsailISA::MemFence::execute(), HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), HsailISA::Call::MagicAtomicNRAddGlobalU32Reg(), HsailISA::Call::MagicAtomicNRAddGroupU32Reg(), ready(), updateResources(), and Wavefront().
uint32_t Wavefront::wrLmReqsInPipe |
Definition at line 224 of file wavefront.hh.
Referenced by HsailISA::StInst< MemDataType, SrcDataType, AddrOperandType >::execute(), HsailISA::AtomicInst< MemDataType, AddrOperandType, NumSrcOperands, HasDst >::execute(), ready(), updateResources(), and Wavefront().