32#ifndef __GPU_COMPUTE_WAVEFRONT_HH__
33#define __GPU_COMPUTE_WAVEFRONT_HH__
40#include <unordered_map>
43#include "arch/gpu_isa.hh"
48#include "config/the_gpu_isa.hh"
55#include "params/Wavefront.hh"
265 void start(uint64_t _wfDynId, uint64_t _base_ptr);
281 void setWaitCnts(
int vm_wait_cnt,
int exp_wait_cnt,
int lgkm_wait_cnt);
294 std::unordered_map<InstSeqNum, std::string>
cntInsts;
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,...
this represents a slice of the overall LDS, intended to be associated with an individual workgroup
bool isOldestInstWaitcnt()
InstSeqNum lastInstSeqNum
void reserveGmResource(GPUDynInstPtr ii)
std::vector< Addr > lastAddr
std::set< InstSeqNum > expIssued
void setStatus(status_e newStatus)
void untrackInst(InstSeqNum seqNum)
void validateRequestCounters()
void trackInst(GPUDynInstPtr gpu_dyn_inst)
void trackVMemInst(GPUDynInstPtr gpu_dyn_inst)
bool isOldestInstPrivMem()
bool isOldestInstScalarMem()
Wavefront(const Params &p)
bool isOldestInstBarrier()
void resizeRegFiles(int num_vregs, int num_sregs)
TheGpuISA::GPUISA & gpuISA()
int scalarOutstandingReqsWrGm
std::set< InstSeqNum > lgkmIssued
std::vector< uint32_t > oldVgpr
void initRegState(HSAQueueEntry *task, int wgSizeInWorkItems)
void setSleepTime(int sleep_time)
ComputeUnit * computeUnit
std::vector< uint32_t > workItemFlatId
int vmWaitCnt
the following are used for waitcnt instructions vmWaitCnt: once set, we wait for the oustanding numbe...
std::vector< int > vecReads
std::deque< GPUDynInstPtr > instructionBuffer
bool isLmInstruction(GPUDynInstPtr ii)
GPUDynInstPtr nextInstr()
std::vector< uint32_t > workItemId[3]
std::vector< uint64_t > oldDgpr
bool isOldestInstScalarALU()
void untrackExpInst(GPUDynInstPtr gpu_dyn_inst)
bool isOldestInstFlatMem()
void decVMemInstsIssued()
void computeActualWgSz(HSAQueueEntry *task)
std::string lastInstDisasm
void setWaitCnts(int vm_wait_cnt, int exp_wait_cnt, int lgkm_wait_cnt)
void setParent(ComputeUnit *cu)
std::unordered_map< int, uint64_t > rawDist
void untrackLGKMInst(GPUDynInstPtr gpu_dyn_inst)
std::vector< int > reserveResources()
void decLGKMInstsIssued()
void incLGKMInstsIssued()
virtual void init()
init() is called after all C++ SimObjects have been created and all ports are connected.
void untrackVMemInst(GPUDynInstPtr gpu_dyn_inst)
void trackExpInst(GPUDynInstPtr gpu_dyn_inst)
bool isOldestInstVectorALU()
std::unordered_map< InstSeqNum, std::string > cntInsts
std::set< InstSeqNum > vmemIssued
void trackLGKMInst(GPUDynInstPtr gpu_dyn_inst)
int scalarOutstandingReqsRdGm
void incVMemInstsIssued()
std::string statusToString(status_e status)
void reserveLmResource(GPUDynInstPtr ii)
std::string lastInstRdyStatus
@ S_BARRIER
WF is stalled at a barrier.
@ S_WAITCNT
wavefront has unsatisfied wait counts
gem5::Wavefront::WavefrontStats stats
void freeRegisterFile()
Freeing VRF space.
bool isGmInstruction(GPUDynInstPtr ii)
void start(uint64_t _wfDynId, uint64_t _base_ptr)
TheGpuISA::GPUISA _gpuISA
A simple distribution stat.
This is a simple scalar statistic, like a counter.
The GPUDispatcher is the component of the shader that is responsible for creating and dispatching WGs...
SimObject(const Params &p)
HSAQueuEntry is the simulator's internal representation of an AQL queue entry (task).
Copyright (c) 2024 Arm Limited All rights reserved.
std::shared_ptr< GPUDynInst > GPUDynInstPtr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
uint64_t Tick
Tick count type.
std::bitset< std::numeric_limits< unsigned long long >::digits > VectorMask
Declaration of Statistics objects.
statistics::Scalar numTimesBlockedDueRAWDependencies
statistics::Scalar schResourceStalls
WavefrontStats(statistics::Group *parent)
statistics::Distribution vecRawDistance
statistics::Distribution readsPerWrite
statistics::Scalar schCycles
statistics::Scalar numTimesBlockedDueWAXDependencies
statistics::Scalar schRfAccessStalls
statistics::Scalar schOpdNrdyStalls
statistics::Scalar numInstrExecuted
statistics::Scalar schStalls
statistics::Scalar schLdsArbStalls