Go to the documentation of this file.
   39 #include "debug/GPUSched.hh" 
   49     : computeUnit(cu), fromSchedule(from_schedule),
 
   50       lastTimeInstExecuted(false),
 
   51       thisTimeInstExecuted(false), instrExecuted (false),
 
   52       executionResourcesUsed(0), _name(cu.
name() + 
".ExecStage"),
 
  115     std::string 
s(
"INVALID");
 
  133     std::stringstream 
ss;
 
  141             Wavefront *wf = gpu_dyn_inst->wavefront();
 
  149         DPRINTF(GPUSched, 
"Dispatch List:\n%s", 
ss.str());
 
  157     if (debug::GPUSched) {
 
  172                 assert(gpu_dyn_inst);
 
  173                 Wavefront *wf = gpu_dyn_inst->wavefront();
 
  174                 DPRINTF(GPUSched, 
"Exec[%d]: SIMD[%d] WV[%d]: %s\n",
 
  176                         gpu_dyn_inst->disassemble());
 
  177                 DPRINTF(GPUSched, 
"dispatchList[%d] EXREADY->EMPTY\n", unitId);
 
  188                 assert(gpu_dyn_inst);
 
  189                 Wavefront *wf = gpu_dyn_inst->wavefront();
 
  190                 DPRINTF(GPUSched, 
"dispatchList[%d] SKIP->EMPTY\n", unitId);
 
  196             panic(
"Unknown dispatch status in exec()\n");
 
  204     : statistics::
Group(parent, 
"ExecStage"),
 
  206                "number of CU transitions from active to idle"),
 
  207       ADD_STAT(numCyclesWithNoIssue, 
"number of cycles the CU issues nothing"),
 
  209                "number of cycles the CU issued at least one instruction"),
 
  211                "Execution units active per cycle (Exec unit=SIMD,MemPipe)"),
 
  212       ADD_STAT(idleDur, 
"duration of idle periods in cycles"),
 
  213       ADD_STAT(numCyclesWithInstrTypeIssued, 
"Number of cycles at least one " 
  214                "instruction issued to execution resource type"),
 
  215       ADD_STAT(numCyclesWithNoInstrTypeIssued, 
"Number of clks no instructions" 
  216                " issued to execution resource type")
 
  
Communication interface between Schedule and Execute stages.
bool thisTimeInstExecuted
statistics::Vector numCyclesWithNoInstrTypeIssued
const std::string to_string(sc_enc enc)
Derived & subname(off_type index, const std::string &name)
Set the subfield name for the given index, and marks this stat to print at the end of simulation.
bool lastTimeInstExecuted
DISPATCH_STATUS dispatchStatus(int func_unit_id) const
gem5::ExecStage::ExecStageStats stats
statistics::Distribution idleDur
statistics::Vector numCyclesWithInstrTypeIssued
int executionResourcesUsed
void sample(const U &v, int n=1)
Add a value to the distribtion n times.
ComputeUnit & computeUnit
statistics::Distribution spc
std::string dispStatusToStr(int j)
GPUDynInstPtr & readyInst(int func_unit_id)
Distribution & init(Counter min, Counter max, Counter bkt)
Set the parameters of this distribution.
#define ADD_STAT(n,...)
Convenience macro to add a stat to a statistics group.
statistics::Scalar numCyclesWithInstrIssued
ExecStage(const ComputeUnitParams &p, ComputeUnit &cu, ScheduleToExecute &from_schedule)
void collectStatistics(enum STAT_STATUS stage, int unitId)
ScheduleToExecute & fromSchedule
const std::string & name()
std::shared_ptr< GPUDynInst > GPUDynInstPtr
ExecStageStats(statistics::Group *parent)
statistics::Scalar numCyclesWithNoIssue
void dispatchTransition(const GPUDynInstPtr &gpu_dyn_inst, int func_unit_id, DISPATCH_STATUS disp_status)
Once the scheduler has chosen a winning WF for execution, and after the WF's oldest instruction's ope...
statistics::Scalar numTransActiveIdle
std::deque< GPUDynInstPtr > instructionBuffer
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Derived & init(size_type size)
Set this vector to have the given size.
ScheduleStage scheduleStage
#define panic(...)
This implements a cprintf based panic() function.
Generated on Tue Sep 21 2021 12:25:23 for gem5 by  doxygen 1.8.17