gem5  v21.1.0.2
wavefront.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011-2017 Advanced Micro Devices, Inc.
3  * All rights reserved.
4  *
5  * For use for simulation and test purposes only
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright notice,
11  * this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright notice,
14  * this list of conditions and the following disclaimer in the documentation
15  * and/or other materials provided with the distribution.
16  *
17  * 3. Neither the name of the copyright holder nor the names of its
18  * contributors may be used to endorse or promote products derived from this
19  * software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
25  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31  * POSSIBILITY OF SUCH DAMAGE.
32  */
33 
34 #ifndef __GPU_COMPUTE_WAVEFRONT_HH__
35 #define __GPU_COMPUTE_WAVEFRONT_HH__
36 
37 #include <cassert>
38 #include <deque>
39 #include <list>
40 #include <memory>
41 #include <unordered_map>
42 #include <vector>
43 
44 #include "arch/gpu_isa.hh"
45 #include "base/logging.hh"
46 #include "base/statistics.hh"
47 #include "base/stats/group.hh"
48 #include "base/types.hh"
49 #include "config/the_gpu_isa.hh"
54 #include "gpu-compute/lds_state.hh"
55 #include "gpu-compute/misc.hh"
56 #include "params/Wavefront.hh"
57 #include "sim/sim_object.hh"
58 
59 namespace gem5
60 {
61 
62 class Wavefront : public SimObject
63 {
64  public:
65  enum status_e
66  {
67  // wavefront is stalled
69  // wavefront is returning from a kernel
71  // wavefront is running normally
73  // wavefront is stalled
75 
77 
95  };
96 
97  // HW slot id where the WF is mapped to inside a SIMD unit
98  const int wfSlotId;
99  int kernId;
100  // SIMD unit where the WV has been scheduled
101  const int simdId;
102  // id of the execution unit (or pipeline) where the oldest instruction
103  // of the WF is scheduled
107  // pointer to parent CU
110 
112 
114  bool dropFetch;
115  // last tick during which all WFs in the CU are not idle
117 
118  // Execution unit resource ID's associated with this WF
119  // These are static mappings set at WF slot construction and
120  // based off of the simdId and wfSlotId.
121 
122  // Index to scalarALUs resource vector in CU
124 
125  // Indices into readyList/dispatchList of resources used by this
126  // wavefront
129  int localMem;
131 
132  // number of VGPRs required by WF
133  uint32_t maxVgprs;
134  // number of SGPRs required by WF
135  uint32_t maxSgprs;
136  void freeResources();
138  void setStatus(status_e newStatus);
139  status_e getStatus() { return status; }
140  void resizeRegFiles(int num_vregs, int num_sregs);
143  bool isOldestInstWaitcnt();
144  bool isOldestInstSleep();
145  bool isOldestInstGMem();
146  bool isOldestInstLMem();
147  bool isOldestInstPrivMem();
148  bool isOldestInstFlatMem();
149  bool isOldestInstVectorALU();
150  bool isOldestInstScalarALU();
151  bool isOldestInstScalarMem();
152  bool isOldestInstBarrier();
153 
154  // used for passing spill address to DDInstGPU
158  /* kernel launch parameters */
159  uint32_t workGroupId[3];
160  uint32_t workGroupSz[3];
161  uint32_t gridSz[3];
162  uint32_t wgId;
163  uint32_t wgSz;
164  /* the actual WG size can differ than the maximum size */
165  uint32_t actualWgSz[3];
166  uint32_t actualWgSzTotal;
167  void computeActualWgSz(HSAQueueEntry *task);
168  // wavefront id within a workgroup
169  uint32_t wfId;
170  uint32_t maxDynWaveId;
171  uint32_t dispatchId;
172  // vector and scalar memory requests pending in memory system
174  // outstanding global memory write requests
176  // outstanding local memory write requests
178  // outstanding global memory read requests
180  // outstanding local memory read requests
182  // outstanding scalar memory read requests
184  // outstanding scalar memory write requests
192 
194  uint64_t lastTrace;
195  // number of virtual vector registers reserved by WF
197  // number of virtual scalar registers reserved by WF
199  // Index into the Vector Register File's namespace where the WF's registers
200  // will live while the WF is executed
201  uint32_t startVgprIndex;
202  // Index into the Scalar Register File's namespace where the WF's registers
203  // will live while the WF is executed
204  uint32_t startSgprIndex;
205 
206  // Old value of destination gpr (for trace)
208  // Id of destination gpr (for trace)
209  uint32_t oldVgprId;
210  // Tick count of last old_vgpr copy
211  uint64_t oldVgprTcnt;
212 
213  // Old value of destination gpr (for trace)
215  // Id of destination gpr (for trace)
216  uint32_t oldDgprId;
217  // Tick count of last old_vgpr copy
218  uint64_t oldDgprTcnt;
219 
220  // Execution mask at wavefront start
222 
223  // a pointer to the fraction of the LDS allocated
224  // to this workgroup (thus this wavefront)
226 
227  // unique WF id over all WFs executed across all CUs
228  uint64_t wfDynId;
229 
230  // dyn inst id (per SIMD) of last instruction exec from this wave
231  uint64_t lastInstExec;
232 
233  // Map to track the dyn instruction id of each vector register value
234  // produced, indexed by physical vector register ID
235  std::unordered_map<int,uint64_t> rawDist;
236 
237  // Counts the number of reads performed to each physical register
238  // - counts are reset to 0 for each dynamic wavefront launched
240 
241  void initRegState(HSAQueueEntry *task, int wgSizeInWorkItems);
242 
243  // context for save/restore
244  uint8_t *context;
245 
246  typedef WavefrontParams Params;
247  Wavefront(const Params &p);
248  ~Wavefront();
249  virtual void init();
250 
251  void
253  {
254  computeUnit = cu;
255  }
256 
258  void start(uint64_t _wfDynId, uint64_t _base_ptr);
259  void exec();
260  // called by SCH stage to reserve
262  bool stopFetch();
263 
264  Addr pc() const;
265  void pc(Addr new_pc);
266 
267  VectorMask& execMask();
268  bool execMask(int lane) const;
269 
270 
271  void discardFetch();
272 
273  bool waitCntsSatisfied();
274  void setWaitCnts(int vm_wait_cnt, int exp_wait_cnt, int lgkm_wait_cnt);
275  void clearWaitCnts();
276 
277  void incVMemInstsIssued();
278  void incExpInstsIssued();
279  void incLGKMInstsIssued();
280  void decVMemInstsIssued();
281  void decExpInstsIssued();
282  void decLGKMInstsIssued();
283 
285  void freeRegisterFile();
286 
287  bool sleepDone();
288  void setSleepTime(int sleep_time);
289 
290  TheGpuISA::GPUISA&
292  {
293  return _gpuISA;
294  }
295 
296  void barrierId(int bar_id);
297  int barrierId() const;
298  bool hasBarrier() const;
299  void releaseBarrier();
300 
301  private:
302  TheGpuISA::GPUISA _gpuISA;
303 
306 
329  int sleepCnt;
333  int barId;
334 
335  public:
337  {
339 
340  // Number of instructions executed by this wavefront slot across all
341  // dynamic wavefronts
343 
344  // Number of cycles this WF spends in SCH stage
346 
347  // Number of stall cycles encounterd by this WF in SCH stage
349 
350  // The following stats sum to the value of schStalls, and record, per
351  // WF slot, what the cause of each stall was at a coarse granularity.
352 
353  // Cycles WF is selected by scheduler, but RFs cannot support
354  // instruction
356  // Cycles spent waiting for execution resources
358  // cycles spent waiting for RF reads to complete in SCH stage
360  // LDS arbitration stall cycles. WF attempts to execute LM instruction,
361  // but another wave is executing FLAT, which requires LM and GM and
362  // forces this WF to stall.
364 
365  // number of times an instruction of a WF is blocked from being issued
366  // due to WAR and WAW dependencies
368  // number of times an instruction of a WF is blocked from being issued
369  // due to WAR and WAW dependencies
371 
372  // Distribution to track the distance between producer and consumer
373  // for vector register values
375 
376  // Distribution to track the number of times every vector register
377  // value produced is consumed.
379  } stats;
380 };
381 
382 } // namespace gem5
383 
384 #endif // __GPU_COMPUTE_WAVEFRONT_HH__
gem5::statistics::Scalar
This is a simple scalar statistic, like a counter.
Definition: statistics.hh:1927
gem5::Wavefront::expWaitCnt
int expWaitCnt
Definition: wavefront.hh:324
gem5::Wavefront::workItemFlatId
std::vector< uint32_t > workItemFlatId
Definition: wavefront.hh:157
gem5::Wavefront::vecReads
std::vector< int > vecReads
Definition: wavefront.hh:239
gem5::Wavefront::S_STALLED
@ S_STALLED
Definition: wavefront.hh:74
gem5::Wavefront::vmemInstsIssued
int vmemInstsIssued
Definition: wavefront.hh:326
hsa_queue_entry.hh
gem5::Wavefront::lastAddr
std::vector< Addr > lastAddr
Definition: wavefront.hh:155
gem5::Wavefront::isOldestInstFlatMem
bool isOldestInstFlatMem()
Definition: wavefront.cc:716
gem5::Wavefront::computeActualWgSz
void computeActualWgSz(HSAQueueEntry *task)
Definition: wavefront.cc:1405
gem5::Wavefront::S_RUNNING
@ S_RUNNING
Definition: wavefront.hh:72
gem5::statistics::Distribution
A simple distribution stat.
Definition: statistics.hh:2081
gem5::Wavefront::setSleepTime
void setSleepTime(int sleep_time)
Definition: wavefront.cc:1263
gem5::Wavefront::releaseBarrier
void releaseBarrier()
Definition: wavefront.cc:1436
gem5::Wavefront::flatLmUnitId
int flatLmUnitId
Definition: wavefront.hh:105
gem5::Wavefront::WavefrontStats::schStalls
statistics::Scalar schStalls
Definition: wavefront.hh:348
gem5::Wavefront::isOldestInstBarrier
bool isOldestInstBarrier()
Definition: wavefront.cc:651
group.hh
gem5::Wavefront::oldVgpr
std::vector< uint32_t > oldVgpr
Definition: wavefront.hh:207
gem5::Wavefront::_execMask
VectorMask _execMask
Definition: wavefront.hh:332
gem5::Wavefront::maxSgprs
uint32_t maxSgprs
Definition: wavefront.hh:135
gem5::Wavefront::exec
void exec()
Definition: wavefront.cc:864
gem5::Wavefront::oldDgpr
std::vector< uint64_t > oldDgpr
Definition: wavefront.hh:214
gem5::Wavefront::ldsChunk
LdsChunk * ldsChunk
Definition: wavefront.hh:225
gem5::Wavefront
Definition: wavefront.hh:62
gem5::Wavefront::isOldestInstLMem
bool isOldestInstLMem()
Definition: wavefront.cc:690
gem5::HSAQueueEntry
Definition: hsa_queue_entry.hh:61
compute_unit.hh
gem5::Wavefront::S_STALLED_SLEEP
@ S_STALLED_SLEEP
Definition: wavefront.hh:76
gem5::Wavefront::stopFetch
bool stopFetch()
Definition: wavefront.cc:729
gem5::Wavefront::gpuISA
TheGpuISA::GPUISA & gpuISA()
Definition: wavefront.hh:291
gem5::Wavefront::WavefrontStats::schOpdNrdyStalls
statistics::Scalar schOpdNrdyStalls
Definition: wavefront.hh:359
gem5::VectorMask
std::bitset< std::numeric_limits< unsigned long long >::digits > VectorMask
Definition: misc.hh:47
gem5::Wavefront::kernId
int kernId
Definition: wavefront.hh:99
misc.hh
gem5::Wavefront::isOldestInstVectorALU
bool isOldestInstVectorALU()
Definition: wavefront.cc:636
gem5::Wavefront::setWaitCnts
void setWaitCnts(int vm_wait_cnt, int exp_wait_cnt, int lgkm_wait_cnt)
Definition: wavefront.cc:1270
gem5::Wavefront::pendingFetch
bool pendingFetch
Definition: wavefront.hh:113
gem5::Wavefront::pc
Addr pc() const
Definition: wavefront.cc:1365
gem5::Wavefront::WavefrontStats::WavefrontStats
WavefrontStats(statistics::Group *parent)
Definition: wavefront.cc:1441
gem5::Wavefront::startSgprIndex
uint32_t startSgprIndex
Definition: wavefront.hh:204
std::vector< Addr >
gem5::Wavefront::lastNonIdleTick
Tick lastNonIdleTick
Definition: wavefront.hh:116
gem5::Wavefront::initRegState
void initRegState(HSAQueueEntry *task, int wgSizeInWorkItems)
Definition: wavefront.cc:119
gem5::Wavefront::reservedVectorRegs
int reservedVectorRegs
Definition: wavefront.hh:196
gem5::Wavefront::S_STOPPED
@ S_STOPPED
Definition: wavefront.hh:68
gem5::Wavefront::WavefrontStats::schCycles
statistics::Scalar schCycles
Definition: wavefront.hh:345
gem5::Wavefront::wgSz
uint32_t wgSz
Definition: wavefront.hh:163
gem5::Wavefront::scalarRdGmReqsInPipe
int scalarRdGmReqsInPipe
Definition: wavefront.hh:190
gem5::Wavefront::oldDgprId
uint32_t oldDgprId
Definition: wavefront.hh:216
gem5::Wavefront::actualWgSz
uint32_t actualWgSz[3]
Definition: wavefront.hh:165
gem5::Wavefront::workGroupSz
uint32_t workGroupSz[3]
Definition: wavefront.hh:160
gem5::Wavefront::_gpuISA
TheGpuISA::GPUISA _gpuISA
Definition: wavefront.hh:302
gem5::Wavefront::_pc
Addr _pc
Definition: wavefront.hh:331
gem5::Wavefront::rawDist
std::unordered_map< int, uint64_t > rawDist
Definition: wavefront.hh:235
gem5::Wavefront::isOldestInstSleep
bool isOldestInstSleep()
Definition: wavefront.cc:590
gem5::Wavefront::workItemId
std::vector< uint32_t > workItemId[3]
Definition: wavefront.hh:156
gem5::Wavefront::flatGmUnitId
int flatGmUnitId
Definition: wavefront.hh:106
gem5::Wavefront::wrLmReqsInPipe
int wrLmReqsInPipe
Definition: wavefront.hh:188
gem5::Wavefront::oldVgprTcnt
uint64_t oldVgprTcnt
Definition: wavefront.hh:211
gem5::Wavefront::clearWaitCnts
void clearWaitCnts()
Definition: wavefront.cc:1315
gem5::Wavefront::wgId
uint32_t wgId
Definition: wavefront.hh:162
gem5::Wavefront::wfId
uint32_t wfId
Definition: wavefront.hh:169
gem5::Wavefront::isGmInstruction
bool isGmInstruction(GPUDynInstPtr ii)
Definition: wavefront.cc:568
gem5::Wavefront::setStatus
void setStatus(status_e newStatus)
Definition: wavefront.cc:520
gem5::Wavefront::maxIbSize
int maxIbSize
Definition: wavefront.hh:109
gem5::Wavefront::start
void start(uint64_t _wfDynId, uint64_t _base_ptr)
Definition: wavefront.cc:557
gem5::ComputeUnit
Definition: compute_unit.hh:203
gem5::Wavefront::WavefrontStats::numTimesBlockedDueRAWDependencies
statistics::Scalar numTimesBlockedDueRAWDependencies
Definition: wavefront.hh:370
gem5::Wavefront::freeRegisterFile
void freeRegisterFile()
Freeing VRF space.
Definition: wavefront.cc:1389
gem5::Wavefront::validateRequestCounters
void validateRequestCounters()
Definition: wavefront.cc:748
gem5::Wavefront::WavefrontStats::schRfAccessStalls
statistics::Scalar schRfAccessStalls
Definition: wavefront.hh:355
gem5::Wavefront::reservedScalarRegs
int reservedScalarRegs
Definition: wavefront.hh:198
gem5::Wavefront::wrGmReqsInPipe
int wrGmReqsInPipe
Definition: wavefront.hh:189
gem5::Wavefront::outstandingReqs
int outstandingReqs
Definition: wavefront.hh:173
sim_object.hh
gem5::Wavefront::isOldestInstGMem
bool isOldestInstGMem()
Definition: wavefront.cc:664
gem5::Wavefront::lgkmInstsIssued
int lgkmInstsIssued
Definition: wavefront.hh:328
gem5::Wavefront::resizeRegFiles
void resizeRegFiles(int num_vregs, int num_sregs)
Definition: wavefront.cc:509
gem5::Wavefront::rdLmReqsInPipe
int rdLmReqsInPipe
Definition: wavefront.hh:186
gem5::Wavefront::oldDgprTcnt
uint64_t oldDgprTcnt
Definition: wavefront.hh:218
gem5::Wavefront::incLGKMInstsIssued
void incLGKMInstsIssued()
Definition: wavefront.cc:1341
gem5::MipsISA::p
Bitfield< 0 > p
Definition: pra_constants.hh:326
statistics.hh
gem5::Wavefront::scalarWrGmReqsInPipe
int scalarWrGmReqsInPipe
Definition: wavefront.hh:191
gem5::Wavefront::scalarOutstandingReqsRdGm
int scalarOutstandingReqsRdGm
Definition: wavefront.hh:183
gem5::Tick
uint64_t Tick
Tick count type.
Definition: types.hh:58
gem5::Wavefront::scalarMem
int scalarMem
Definition: wavefront.hh:130
gem5::Wavefront::memTraceBusy
int memTraceBusy
Definition: wavefront.hh:193
gem5::Wavefront::wfSlotId
const int wfSlotId
Definition: wavefront.hh:98
gem5::Wavefront::execUnitId
int execUnitId
Definition: wavefront.hh:104
gem5::Wavefront::S_BARRIER
@ S_BARRIER
WF is stalled at a barrier.
Definition: wavefront.hh:94
gem5::Wavefront::scalarOutstandingReqsWrGm
int scalarOutstandingReqsWrGm
Definition: wavefront.hh:185
gpu_dyn_inst.hh
gem5::Wavefront::Wavefront
Wavefront(const Params &p)
Definition: wavefront.cc:50
gem5::Wavefront::~Wavefront
~Wavefront()
Definition: wavefront.cc:515
gem5::Wavefront::expInstsIssued
int expInstsIssued
Definition: wavefront.hh:327
gem5::Wavefront::waitCntsSatisfied
bool waitCntsSatisfied()
Definition: wavefront.cc:1201
gem5::Wavefront::isOldestInstWaitcnt
bool isOldestInstWaitcnt()
Definition: wavefront.cc:604
gem5::LdsChunk
this represents a slice of the overall LDS, intended to be associated with an individual workgroup
Definition: lds_state.hh:58
gem5::SimObject
Abstract superclass for simulation objects.
Definition: sim_object.hh:146
gem5::Wavefront::reserveLmResource
void reserveLmResource(GPUDynInstPtr ii)
Definition: wavefront.cc:792
gem5::Wavefront::lastTrace
uint64_t lastTrace
Definition: wavefront.hh:194
gem5::Wavefront::nextInstr
GPUDynInstPtr nextInstr()
Definition: wavefront.cc:1169
gem5::Wavefront::discardFetch
void discardFetch()
Definition: wavefront.cc:1188
gem5::Wavefront::wfDynId
uint64_t wfDynId
Definition: wavefront.hh:228
gem5::Wavefront::computeUnit
ComputeUnit * computeUnit
Definition: wavefront.hh:108
gem5::Wavefront::execMask
VectorMask & execMask()
Definition: wavefront.cc:1377
gem5::Wavefront::barrierId
int barrierId() const
Definition: wavefront.cc:1424
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
gem5::Wavefront::initMask
VectorMask initMask
Definition: wavefront.hh:221
gem5::Wavefront::decExpInstsIssued
void decExpInstsIssued()
Definition: wavefront.cc:1353
gem5::Wavefront::Params
WavefrontParams Params
Definition: wavefront.hh:246
gem5::Wavefront::WavefrontStats::numInstrExecuted
statistics::Scalar numInstrExecuted
Definition: wavefront.hh:342
gem5::GPUDynInstPtr
std::shared_ptr< GPUDynInst > GPUDynInstPtr
Definition: misc.hh:51
gem5::Wavefront::decVMemInstsIssued
void decVMemInstsIssued()
Definition: wavefront.cc:1347
gem5::Wavefront::rdGmReqsInPipe
int rdGmReqsInPipe
Definition: wavefront.hh:187
gem5::Wavefront::outstandingReqsWrLm
int outstandingReqsWrLm
Definition: wavefront.hh:177
gem5::Wavefront::hasBarrier
bool hasBarrier() const
Definition: wavefront.cc:1430
gem5::Wavefront::incExpInstsIssued
void incExpInstsIssued()
Definition: wavefront.cc:1335
gem5::Wavefront::decLGKMInstsIssued
void decLGKMInstsIssued()
Definition: wavefront.cc:1359
gem5::Wavefront::S_RETURNING
@ S_RETURNING
Definition: wavefront.hh:70
gem5::Wavefront::vmWaitCnt
int vmWaitCnt
the following are used for waitcnt instructions vmWaitCnt: once set, we wait for the oustanding numbe...
Definition: wavefront.hh:323
gem5::Wavefront::reserveResources
std::vector< int > reserveResources()
Definition: wavefront.cc:810
gem5::Wavefront::init
virtual void init()
init() is called after all C++ SimObjects have been created and all ports are connected.
Definition: wavefront.cc:104
gem5::Wavefront::globalMem
int globalMem
Definition: wavefront.hh:128
gem5::Wavefront::outstandingReqsRdLm
int outstandingReqsRdLm
Definition: wavefront.hh:181
gem5::Wavefront::gridSz
uint32_t gridSz[3]
Definition: wavefront.hh:161
types.hh
gem5::Wavefront::actualWgSzTotal
uint32_t actualWgSzTotal
Definition: wavefront.hh:166
gem5::Wavefront::lgkmWaitCnt
int lgkmWaitCnt
Definition: wavefront.hh:325
gem5::Wavefront::scalarAlu
int scalarAlu
Definition: wavefront.hh:123
gem5::Wavefront::S_WAITCNT
@ S_WAITCNT
wavefront has unsatisfied wait counts
Definition: wavefront.hh:90
gem5::Wavefront::WavefrontStats
Definition: wavefront.hh:336
std::deque< GPUDynInstPtr >
logging.hh
gem5::statistics::Group
Statistics container.
Definition: group.hh:93
gem5::Wavefront::maxVgprs
uint32_t maxVgprs
Definition: wavefront.hh:133
gem5::Wavefront::outstandingReqsWrGm
int outstandingReqsWrGm
Definition: wavefront.hh:175
gem5::Wavefront::isOldestInstScalarALU
bool isOldestInstScalarALU()
Definition: wavefront.cc:621
gem5::Wavefront::WavefrontStats::readsPerWrite
statistics::Distribution readsPerWrite
Definition: wavefront.hh:378
gem5::Wavefront::instructionBuffer
std::deque< GPUDynInstPtr > instructionBuffer
Definition: wavefront.hh:111
gem5::Wavefront::isLmInstruction
bool isLmInstruction(GPUDynInstPtr ii)
Definition: wavefront.cc:579
gem5::Wavefront::dispatchId
uint32_t dispatchId
Definition: wavefront.hh:171
gem5::Wavefront::stats
gem5::Wavefront::WavefrontStats stats
gem5::Wavefront::outstandingReqsRdGm
int outstandingReqsRdGm
Definition: wavefront.hh:179
gem5::Wavefront::sleepCnt
int sleepCnt
Definition: wavefront.hh:329
gem5::Wavefront::setParent
void setParent(ComputeUnit *cu)
Definition: wavefront.hh:252
gem5::Wavefront::freeResources
void freeResources()
Definition: wavefront.cc:743
dispatcher.hh
gem5::Wavefront::isOldestInstPrivMem
bool isOldestInstPrivMem()
Definition: wavefront.cc:703
gem5::Wavefront::status_e
status_e
Definition: wavefront.hh:65
gem5::Wavefront::sleepDone
bool sleepDone()
Definition: wavefront.cc:1244
gem5::Wavefront::incVMemInstsIssued
void incVMemInstsIssued()
Definition: wavefront.cc:1329
gem5::Wavefront::getStatus
status_e getStatus()
Definition: wavefront.hh:139
gem5::Wavefront::WavefrontStats::schResourceStalls
statistics::Scalar schResourceStalls
Definition: wavefront.hh:357
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: decoder.cc:40
gem5::Wavefront::startVgprIndex
uint32_t startVgprIndex
Definition: wavefront.hh:201
gem5::Wavefront::context
uint8_t * context
Definition: wavefront.hh:244
gem5::Wavefront::oldVgprId
uint32_t oldVgprId
Definition: wavefront.hh:209
gem5::Wavefront::barId
int barId
Definition: wavefront.hh:333
gem5::Wavefront::scalarAluGlobalIdx
int scalarAluGlobalIdx
Definition: wavefront.hh:127
gem5::Wavefront::WavefrontStats::numTimesBlockedDueWAXDependencies
statistics::Scalar numTimesBlockedDueWAXDependencies
Definition: wavefront.hh:367
gem5::Wavefront::WavefrontStats::vecRawDistance
statistics::Distribution vecRawDistance
Definition: wavefront.hh:374
gem5::Wavefront::lastInstExec
uint64_t lastInstExec
Definition: wavefront.hh:231
gem5::Wavefront::reserveGmResource
void reserveGmResource(GPUDynInstPtr ii)
Definition: wavefront.cc:762
gem5::Wavefront::WavefrontStats::schLdsArbStalls
statistics::Scalar schLdsArbStalls
Definition: wavefront.hh:363
gem5::Wavefront::isOldestInstScalarMem
bool isOldestInstScalarMem()
Definition: wavefront.cc:677
gem5::Wavefront::localMem
int localMem
Definition: wavefront.hh:129
gem5::Wavefront::maxDynWaveId
uint32_t maxDynWaveId
Definition: wavefront.hh:170
gem5::Wavefront::workGroupId
uint32_t workGroupId[3]
Definition: wavefront.hh:159
gem5::Wavefront::dropFetch
bool dropFetch
Definition: wavefront.hh:114
gem5::Wavefront::status
status_e status
Definition: wavefront.hh:330
gem5::Wavefront::simdId
const int simdId
Definition: wavefront.hh:101
lds_state.hh

Generated on Tue Sep 21 2021 12:25:25 for gem5 by doxygen 1.8.17