|
gem5 [DEVELOP-FOR-25.0]
|
#include <scoreboard_check_stage.hh>
Classes | |
| struct | ScoreboardCheckStageStats |
Public Types | |
| enum | nonrdytype_e { NRDY_ILLEGAL , NRDY_WF_STOP , NRDY_IB_EMPTY , NRDY_WAIT_CNT , NRDY_SLEEP , NRDY_BARRIER_WAIT , NRDY_VGPR_NRDY , NRDY_SGPR_NRDY , NRDY_MATRIX_CORE , INST_RDY , NRDY_CONDITIONS } |
Public Member Functions | |
| ScoreboardCheckStage (const ComputeUnitParams &p, ComputeUnit &cu, ScoreboardCheckToSchedule &to_schedule) | |
| ~ScoreboardCheckStage () | |
| void | exec () |
| const std::string & | name () const |
Protected Attributes | |
| gem5::ScoreboardCheckStage::ScoreboardCheckStageStats | stats |
Private Member Functions | |
| void | collectStatistics (nonrdytype_e rdyStatus) |
| int | mapWaveToExeUnit (Wavefront *w) |
| bool | ready (Wavefront *w, nonrdytype_e *rdyStatus, int *exeResType, int wfSlot) |
| std::string | rdyStatusStr (const nonrdytype_e &rdyStatus) |
Private Attributes | |
| ComputeUnit & | computeUnit |
| ScoreboardCheckToSchedule & | toSchedule |
| Interface between scoreboard check and schedule stages. | |
| const std::string | _name |
Definition at line 61 of file scoreboard_check_stage.hh.
| Enumerator | |
|---|---|
| NRDY_ILLEGAL | |
| NRDY_WF_STOP | |
| NRDY_IB_EMPTY | |
| NRDY_WAIT_CNT | |
| NRDY_SLEEP | |
| NRDY_BARRIER_WAIT | |
| NRDY_VGPR_NRDY | |
| NRDY_SGPR_NRDY | |
| NRDY_MATRIX_CORE | |
| INST_RDY | |
| NRDY_CONDITIONS | |
Definition at line 64 of file scoreboard_check_stage.hh.
| gem5::ScoreboardCheckStage::ScoreboardCheckStage | ( | const ComputeUnitParams & | p, |
| ComputeUnit & | cu, | ||
| ScoreboardCheckToSchedule & | to_schedule ) |
Definition at line 48 of file scoreboard_check_stage.cc.
References _name, computeUnit, name(), gem5::MipsISA::p, stats, and toSchedule.
| gem5::ScoreboardCheckStage::~ScoreboardCheckStage | ( | ) |
Definition at line 57 of file scoreboard_check_stage.cc.
|
private |
Definition at line 62 of file scoreboard_check_stage.cc.
References NRDY_CONDITIONS, NRDY_ILLEGAL, panic_if, and stats.
Referenced by exec().
| void gem5::ScoreboardCheckStage::exec | ( | ) |
Reset the ready list for all execution units; ready list will be constructed every cycle because resource availability may change.
Definition at line 273 of file scoreboard_check_stage.cc.
References collectStatistics(), computeUnit, DPRINTF, gem5::Wavefront::lastInstRdyStatus, gem5::Wavefront::nextInstr(), NRDY_ILLEGAL, rdyStatusStr(), ready(), gem5::Wavefront::simdId, toSchedule, and gem5::Wavefront::wfDynId.
|
private |
NOTE: Flat memory ops requires both GM and LM resources. The simulator models consumption of both GM and LM resources in the schedule stage. At instruction execution time, after the aperture check is performed, only the GM or LM pipe is actually reserved by the timing model. The GM unit is returned here since Flat ops occupy the GM slot in the ready and dispatch lists. They also consume the LM slot in the dispatch list.
Definition at line 231 of file scoreboard_check_stage.cc.
References computeUnit, panic, and gem5::MipsISA::w.
Referenced by ready().
|
inline |
Definition at line 85 of file scoreboard_check_stage.hh.
References _name.
Referenced by ScoreboardCheckStage().
|
inlineprivate |
Definition at line 103 of file scoreboard_check_stage.hh.
References INST_RDY, NRDY_BARRIER_WAIT, NRDY_IB_EMPTY, NRDY_ILLEGAL, NRDY_MATRIX_CORE, NRDY_SGPR_NRDY, NRDY_SLEEP, NRDY_VGPR_NRDY, NRDY_WAIT_CNT, and NRDY_WF_STOP.
Referenced by exec().
|
private |
The waitCnt checks have to be done BEFORE checking for Instruction buffer empty condition. Otherwise, it will result into a deadlock if the last instruction in the Instruction buffer is a waitCnt: after executing the waitCnt, the Instruction buffer would be empty and the ready check logic will exit BEFORE checking for wait counters being satisfied.
Definition at line 75 of file scoreboard_check_stage.cc.
References computeUnit, gem5::curTick(), DPRINTF, INST_RDY, mapWaveToExeUnit(), NRDY_BARRIER_WAIT, NRDY_IB_EMPTY, NRDY_MATRIX_CORE, NRDY_SGPR_NRDY, NRDY_SLEEP, NRDY_VGPR_NRDY, NRDY_WAIT_CNT, NRDY_WF_STOP, gem5::ArmISA::opcode, panic, panic_if, gem5::Wavefront::S_BARRIER, gem5::Wavefront::S_RETURNING, gem5::Wavefront::S_STALLED, gem5::Wavefront::S_STALLED_SLEEP, gem5::Wavefront::S_STOPPED, gem5::Wavefront::S_WAITCNT, and gem5::MipsISA::w.
Referenced by exec().
|
private |
Definition at line 101 of file scoreboard_check_stage.hh.
Referenced by name(), and ScoreboardCheckStage().
|
private |
Definition at line 92 of file scoreboard_check_stage.hh.
Referenced by exec(), mapWaveToExeUnit(), ready(), and ScoreboardCheckStage().
|
protected |
Referenced by collectStatistics(), and ScoreboardCheckStage().
|
private |
Interface between scoreboard check and schedule stages.
Each cycle the scoreboard check stage populates this interface with information needed by the schedule stage.
Definition at line 99 of file scoreboard_check_stage.hh.
Referenced by exec(), and ScoreboardCheckStage().