Go to the documentation of this file.
36 #include "debug/GPUMem.hh"
37 #include "debug/GPUPort.hh"
48 : computeUnit(cu), _name(cu.
name() +
".LocalMemPipeline"),
49 lmQueueSize(
p.local_mem_queue_size), stats(&cu)
60 bool accessVrf =
true;
63 if ((
m) &&
m->latency.rdy() && (
m->isLoad() ||
m->isAtomicRet())) {
66 accessVrf =
w->computeUnit->vrf[
w->simdId]->
67 canScheduleWriteOperandsFromLoad(
w,
m);
79 if (
m->isFlat() && !
m->isMemSync() && !
m->isEndOfKernel()
80 &&
m->allLanesZero()) {
84 DPRINTF(GPUMem,
"CU%d: WF[%d][%d]: Completing local mem instr %s\n",
85 m->cu_id,
m->simdId,
m->wfSlotId,
m->disassemble());
87 w->decLGKMInstsIssued();
89 if (
m->isLoad() ||
m->isAtomicRet()) {
90 w->computeUnit->vrf[
w->simdId]->
91 scheduleWriteOperandsFromLoad(
w,
m);
97 if (
m->isStore() ||
m->isAtomic()) {
102 if (
m->isLoad() ||
m->isAtomic()) {
110 w->computeUnit->vectorSharedMemUnit.set(
m->time);
122 DPRINTF(GPUPort,
"packet was nack'd and put in retry queue");
132 if (gpuDynInst->isLoad()) {
135 }
else if (gpuDynInst->isStore()) {
149 gpuDynInst->setAccessTime(
curTick());
156 : statistics::
Group(parent,
"LocalMemPipeline"),
157 ADD_STAT(loadVrfBankConflictCycles,
"total number of cycles LDS data "
158 "are delayed before updating the VRF")
Tick curTick()
The universal simulation clock.
void issueRequest(GPUDynInstPtr gpuDynInst)
LocalMemPipelineStats(statistics::Group *parent)
void validateRequestCounters()
LocalMemPipeline(const ComputeUnitParams &p, ComputeUnit &cu)
WaitClass vectorSharedMemUnit
#define ADD_STAT(n,...)
Convenience macro to add a stat to a statistics group.
std::queue< GPUDynInstPtr > lmReturnedRequests
TokenManager * getTokenManager()
const std::string & name()
std::shared_ptr< GPUDynInst > GPUDynInstPtr
void ScheduleAdd(int *val, Tick when, int x)
std::queue< GPUDynInstPtr > lmIssuedRequests
void recvTokens(int num_tokens)
Increment the number of available tokens by num_tokens.
ComputeUnit & computeUnit
GEM5_NO_DISCARD bool sendToLds(GPUDynInstPtr gpuDynInst)
send a general request to the LDS make sure to look at the return value here as your request might be...
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
bool rdy(Cycles cycles=Cycles(0)) const
Generated on Tue Sep 21 2021 12:25:25 for gem5 by doxygen 1.8.17