gem5 v24.0.0.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 , 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) |
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 | |
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.
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, gem5::ScoreboardCheckStage::ScoreboardCheckStageStats::stallCycles, 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 249 of file scoreboard_check_stage.cc.
References collectStatistics(), computeUnit, DPRINTF, gem5::ScoreboardCheckToSchedule::markWFReady(), gem5::Shader::n_wf, gem5::Wavefront::nextInstr(), NRDY_ILLEGAL, gem5::ComputeUnit::numVectorALUs, ready(), gem5::ScoreboardCheckToSchedule::reset(), gem5::ComputeUnit::shader, gem5::Wavefront::simdId, toSchedule, gem5::Wavefront::wfDynId, and gem5::ComputeUnit::wfList.
Referenced by gem5::ComputeUnit::exec().
|
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 207 of file scoreboard_check_stage.cc.
References computeUnit, gem5::ComputeUnit::numExeUnits(), panic, and gem5::MipsISA::w.
Referenced by ready().
|
inline |
Definition at line 84 of file scoreboard_check_stage.hh.
References _name.
|
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 gem5::ComputeUnit::allAtBarrier(), computeUnit, gem5::ComputeUnit::cu_id, DPRINTF, INST_RDY, mapWaveToExeUnit(), NRDY_BARRIER_WAIT, NRDY_IB_EMPTY, NRDY_SGPR_NRDY, NRDY_SLEEP, NRDY_VGPR_NRDY, NRDY_WAIT_CNT, NRDY_WF_STOP, panic, gem5::ComputeUnit::releaseWFsFromBarrier(), gem5::ComputeUnit::resetBarrier(), 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, gem5::ComputeUnit::srf, gem5::ComputeUnit::vrf, and gem5::MipsISA::w.
Referenced by exec().
|
private |
Definition at line 100 of file scoreboard_check_stage.hh.
Referenced by name().
|
private |
Definition at line 91 of file scoreboard_check_stage.hh.
Referenced by exec(), mapWaveToExeUnit(), and ready().
|
protected |
Referenced by collectStatistics().
|
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 98 of file scoreboard_check_stage.hh.
Referenced by exec().