|
gem5 [DEVELOP-FOR-25.0]
|
#include <schedule_stage.hh>
Classes | |
| struct | ScheduleStageStats |
Public Member Functions | |
| ScheduleStage (const ComputeUnitParams &p, ComputeUnit &cu, ScoreboardCheckToSchedule &from_scoreboard_check, ScheduleToExecute &to_execute) | |
| ~ScheduleStage () | |
| void | init () |
| void | exec () |
| const std::string & | name () const |
| void | deleteFromSch (Wavefront *w) |
Protected Attributes | |
| gem5::ScheduleStage::ScheduleStageStats | stats |
Private Member Functions | |
| bool | addToSchList (int exeType, const GPUDynInstPtr &gpu_dyn_inst) |
| void | reinsertToSchList (int exeType, const GPUDynInstPtr &gpu_dyn_inst) |
| void | checkRfOperandReadComplete () |
| void | checkMemResources () |
| bool | dispatchReady (const GPUDynInstPtr &gpu_dyn_inst) |
| void | fillDispatchList () |
| void | arbitrateVrfToLdsBus () |
| void | scheduleRfDestOperands () |
| bool | schedRfWrites (int exeType, const GPUDynInstPtr &gpu_dyn_inst) |
| void | reserveResources () |
| void | doDispatchListTransition (int unitId, DISPATCH_STATUS s, const GPUDynInstPtr &gpu_dyn_inst) |
| void | doDispatchListTransition (int unitId, DISPATCH_STATUS s) |
Private Attributes | |
| ComputeUnit & | computeUnit |
| ScoreboardCheckToSchedule & | fromScoreboardCheck |
| ScheduleToExecute & | toExecute |
| std::vector< Scheduler > | scheduler |
| const std::string | _name |
| bool | vectorAluRdy |
| bool | scalarAluRdy |
| bool | scalarMemBusRdy |
| bool | scalarMemIssueRdy |
| bool | glbMemBusRdy |
| bool | glbMemIssueRdy |
| bool | locMemBusRdy |
| bool | locMemIssueRdy |
| std::unordered_set< uint64_t > | wavesInSch |
| std::vector< std::deque< std::pair< GPUDynInstPtr, SCH_STATUS > > > | schList |
Definition at line 62 of file schedule_stage.hh.
| Enumerator | |
|---|---|
| RFBUSY | |
| RFREADY | |
Definition at line 118 of file schedule_stage.hh.
Definition at line 74 of file schedule_stage.hh.
| Enumerator | |
|---|---|
| SCH_VRF_OPD_NRDY | |
| SCH_SRF_OPD_NRDY | |
| SCH_RF_OPD_NRDY | |
| SCH_RF_OPD_NRDY_CONDITIONS | |
Definition at line 97 of file schedule_stage.hh.
| Enumerator | |
|---|---|
| SCH_VRF_RD_ACCESS_NRDY | |
| SCH_VRF_WR_ACCESS_NRDY | |
| SCH_SRF_RD_ACCESS_NRDY | |
| SCH_SRF_WR_ACCESS_NRDY | |
| SCH_RF_ACCESS_NRDY | |
| SCH_RF_ACCESS_NRDY_CONDITIONS | |
Definition at line 104 of file schedule_stage.hh.
| gem5::ScheduleStage::ScheduleStage | ( | const ComputeUnitParams & | p, |
| ComputeUnit & | cu, | ||
| ScoreboardCheckToSchedule & | from_scoreboard_check, | ||
| ScheduleToExecute & | to_execute ) |
Definition at line 49 of file schedule_stage.cc.
References _name, computeUnit, gem5::MipsISA::dq, fromScoreboardCheck, glbMemBusRdy, glbMemIssueRdy, locMemBusRdy, locMemIssueRdy, name(), gem5::ComputeUnit::numExeUnits(), gem5::MipsISA::p, scalarAluRdy, scalarMemBusRdy, scalarMemIssueRdy, scheduler, schList, stats, toExecute, vectorAluRdy, and wavesInSch.
| gem5::ScheduleStage::~ScheduleStage | ( | ) |
Definition at line 69 of file schedule_stage.cc.
References scheduler, schList, and wavesInSch.
|
private |
Definition at line 299 of file schedule_stage.cc.
References computeUnit, DPRINTF, gem5::Wavefront::hasBarrier(), gem5::Wavefront::isOldestInstBarrier(), gem5::Wavefront::isOldestInstSleep(), gem5::Wavefront::isOldestInstWaitcnt(), gem5::Wavefront::lastSrfStatus, gem5::Wavefront::lastVrfStatus, RFBUSY, gem5::Wavefront::S_BARRIER, gem5::Wavefront::S_STALLED_SLEEP, gem5::Wavefront::S_WAITCNT, SCH_RF_ACCESS_NRDY, SCH_SRF_RD_ACCESS_NRDY, SCH_VRF_RD_ACCESS_NRDY, schList, gem5::Wavefront::WavefrontStats::schRfAccessStalls, gem5::Wavefront::WavefrontStats::schStalls, gem5::Wavefront::setStatus(), gem5::Wavefront::simdId, stats, gem5::Wavefront::stats, wavesInSch, and gem5::Wavefront::wfDynId.
Referenced by exec().
|
private |
Definition at line 639 of file schedule_stage.cc.
References computeUnit, doDispatchListTransition(), DPRINTF, gem5::EXREADY, gem5::ArmISA::i, gem5::Wavefront::localMem, reinsertToSchList(), gem5::SKIP, stats, and toExecute.
Referenced by exec().
|
private |
Definition at line 385 of file schedule_stage.cc.
References computeUnit, glbMemBusRdy, glbMemIssueRdy, locMemBusRdy, locMemIssueRdy, scalarMemBusRdy, and scalarMemIssueRdy.
Referenced by fillDispatchList().
|
private |
Definition at line 678 of file schedule_stage.cc.
References computeUnit, DPRINTF, gem5::MipsISA::p, RFBUSY, RFREADY, SCH_RF_OPD_NRDY, SCH_SRF_OPD_NRDY, SCH_VRF_OPD_NRDY, gem5::Wavefront::WavefrontStats::schCycles, schList, gem5::Wavefront::WavefrontStats::schOpdNrdyStalls, gem5::Wavefront::WavefrontStats::schStalls, gem5::Wavefront::simdId, stats, gem5::Wavefront::stats, and gem5::Wavefront::wfDynId.
Referenced by exec().
| void gem5::ScheduleStage::deleteFromSch | ( | Wavefront * | w | ) |
Definition at line 800 of file schedule_stage.cc.
References gem5::MipsISA::w, and wavesInSch.
|
private |
Definition at line 423 of file schedule_stage.cc.
References computeUnit, glbMemBusRdy, glbMemIssueRdy, locMemBusRdy, locMemIssueRdy, panic, gem5::Wavefront::rdLmReqsInPipe, gem5::Wavefront::scalarAlu, scalarAluRdy, scalarMemBusRdy, scalarMemIssueRdy, gem5::Wavefront::scalarRdGmReqsInPipe, gem5::Wavefront::scalarWrGmReqsInPipe, SCH_FLAT_MEM_BUS_BUSY_NRDY, SCH_FLAT_MEM_COALESCER_NRDY, SCH_FLAT_MEM_FIFO_NRDY, SCH_FLAT_MEM_ISSUE_NRDY, SCH_FLAT_MEM_REQS_NRDY, SCH_LOCAL_MEM_BUS_BUSY_NRDY, SCH_LOCAL_MEM_FIFO_NRDY, SCH_LOCAL_MEM_ISSUE_NRDY, SCH_RDY, SCH_SCALAR_ALU_NRDY, SCH_SCALAR_MEM_BUS_BUSY_NRDY, SCH_SCALAR_MEM_FIFO_NRDY, SCH_SCALAR_MEM_ISSUE_NRDY, SCH_VECTOR_ALU_NRDY, SCH_VECTOR_MEM_BUS_BUSY_NRDY, SCH_VECTOR_MEM_COALESCER_NRDY, SCH_VECTOR_MEM_ISSUE_NRDY, SCH_VECTOR_MEM_REQS_NRDY, gem5::Wavefront::simdId, stats, vectorAluRdy, and gem5::Wavefront::wrLmReqsInPipe.
Referenced by fillDispatchList().
|
private |
Definition at line 225 of file schedule_stage.cc.
References gem5::ArmISA::s, and toExecute.
|
private |
Definition at line 218 of file schedule_stage.cc.
References gem5::ArmISA::s, and toExecute.
Referenced by arbitrateVrfToLdsBus(), fillDispatchList(), and scheduleRfDestOperands().
| void gem5::ScheduleStage::exec | ( | ) |
Remove any wave that already has an instruction present in SCH waiting for RF reads to complete. This prevents out of order execution within a wave.
Definition at line 91 of file schedule_stage.cc.
References addToSchList(), arbitrateVrfToLdsBus(), checkRfOperandReadComplete(), computeUnit, fillDispatchList(), fromScoreboardCheck, gem5::Wavefront::incExpInstsIssued(), gem5::Wavefront::incLGKMInstsIssued(), gem5::Wavefront::incVMemInstsIssued(), gem5::Wavefront::instructionBuffer, reserveResources(), gem5::Wavefront::WavefrontStats::schCycles, scheduler, scheduleRfDestOperands(), stats, gem5::Wavefront::stats, toExecute, gem5::Wavefront::trackExpInst(), gem5::Wavefront::trackLGKMInst(), gem5::Wavefront::trackVMemInst(), and wavesInSch.
|
private |
Definition at line 563 of file schedule_stage.cc.
References checkMemResources(), computeUnit, dispatchReady(), doDispatchListTransition(), DPRINTF, gem5::EMPTY, gem5::EXREADY, gem5::ArmISA::mp, RFREADY, schList, stats, and toExecute.
Referenced by exec().
| void gem5::ScheduleStage::init | ( | ) |
Definition at line 77 of file schedule_stage.cc.
References computeUnit, fatal_if, fromScoreboardCheck, and scheduler.
|
inline |
|
private |
Definition at line 369 of file schedule_stage.cc.
References RFREADY, and schList.
Referenced by arbitrateVrfToLdsBus(), and scheduleRfDestOperands().
|
private |
Definition at line 734 of file schedule_stage.cc.
References computeUnit, DPRINTF, gem5::EMPTY, gem5::EXREADY, gem5::Wavefront::globalMem, gem5::Wavefront::localMem, panic_if, gem5::Wavefront::reserveResources(), gem5::ArmISA::s, gem5::Wavefront::simdId, gem5::SKIP, gem5::ArmISA::ss, toExecute, and gem5::Wavefront::wfDynId.
Referenced by exec().
|
private |
Definition at line 231 of file schedule_stage.cc.
References computeUnit, SCH_RF_ACCESS_NRDY, SCH_SRF_WR_ACCESS_NRDY, SCH_VRF_WR_ACCESS_NRDY, gem5::Wavefront::WavefrontStats::schRfAccessStalls, gem5::Wavefront::WavefrontStats::schStalls, gem5::Wavefront::simdId, stats, and gem5::Wavefront::stats.
Referenced by scheduleRfDestOperands().
|
private |
Definition at line 267 of file schedule_stage.cc.
References computeUnit, doDispatchListTransition(), gem5::EMPTY, gem5::Wavefront::instructionBuffer, gem5::Wavefront::localMem, reinsertToSchList(), schedRfWrites(), gem5::SKIP, and toExecute.
Referenced by exec().
|
private |
Definition at line 133 of file schedule_stage.hh.
Referenced by name(), and ScheduleStage().
|
private |
Definition at line 125 of file schedule_stage.hh.
Referenced by addToSchList(), arbitrateVrfToLdsBus(), checkMemResources(), checkRfOperandReadComplete(), dispatchReady(), exec(), fillDispatchList(), init(), reserveResources(), schedRfWrites(), scheduleRfDestOperands(), and ScheduleStage().
|
private |
Definition at line 126 of file schedule_stage.hh.
Referenced by exec(), init(), and ScheduleStage().
|
private |
Definition at line 147 of file schedule_stage.hh.
Referenced by checkMemResources(), dispatchReady(), and ScheduleStage().
|
private |
Definition at line 148 of file schedule_stage.hh.
Referenced by checkMemResources(), dispatchReady(), and ScheduleStage().
|
private |
Definition at line 149 of file schedule_stage.hh.
Referenced by checkMemResources(), dispatchReady(), and ScheduleStage().
|
private |
Definition at line 150 of file schedule_stage.hh.
Referenced by checkMemResources(), dispatchReady(), and ScheduleStage().
|
private |
Definition at line 144 of file schedule_stage.hh.
Referenced by dispatchReady(), and ScheduleStage().
|
private |
Definition at line 145 of file schedule_stage.hh.
Referenced by checkMemResources(), dispatchReady(), and ScheduleStage().
|
private |
Definition at line 146 of file schedule_stage.hh.
Referenced by checkMemResources(), dispatchReady(), and ScheduleStage().
|
private |
Definition at line 131 of file schedule_stage.hh.
Referenced by exec(), init(), ScheduleStage(), and ~ScheduleStage().
|
private |
Definition at line 185 of file schedule_stage.hh.
Referenced by addToSchList(), checkRfOperandReadComplete(), fillDispatchList(), reinsertToSchList(), ScheduleStage(), and ~ScheduleStage().
|
protected |
|
private |
Definition at line 127 of file schedule_stage.hh.
Referenced by arbitrateVrfToLdsBus(), doDispatchListTransition(), doDispatchListTransition(), exec(), fillDispatchList(), reserveResources(), scheduleRfDestOperands(), and ScheduleStage().
|
private |
Definition at line 143 of file schedule_stage.hh.
Referenced by dispatchReady(), and ScheduleStage().
|
private |
Definition at line 174 of file schedule_stage.hh.
Referenced by addToSchList(), deleteFromSch(), exec(), ScheduleStage(), and ~ScheduleStage().