gem5  v21.1.0.2
Classes | Public Types | Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
gem5::ScoreboardCheckStage Class Reference

#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

ComputeUnitcomputeUnit
 
ScoreboardCheckToScheduletoSchedule
 Interface between scoreboard check and schedule stages. More...
 
const std::string _name
 

Detailed Description

Definition at line 63 of file scoreboard_check_stage.hh.

Member Enumeration Documentation

◆ nonrdytype_e

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 66 of file scoreboard_check_stage.hh.

Constructor & Destructor Documentation

◆ ScoreboardCheckStage()

gem5::ScoreboardCheckStage::ScoreboardCheckStage ( const ComputeUnitParams &  p,
ComputeUnit cu,
ScoreboardCheckToSchedule to_schedule 
)

Definition at line 50 of file scoreboard_check_stage.cc.

◆ ~ScoreboardCheckStage()

gem5::ScoreboardCheckStage::~ScoreboardCheckStage ( )

Definition at line 59 of file scoreboard_check_stage.cc.

Member Function Documentation

◆ collectStatistics()

void gem5::ScoreboardCheckStage::collectStatistics ( nonrdytype_e  rdyStatus)
private

◆ exec()

void gem5::ScoreboardCheckStage::exec ( )

◆ mapWaveToExeUnit()

int gem5::ScoreboardCheckStage::mapWaveToExeUnit ( Wavefront w)
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 208 of file scoreboard_check_stage.cc.

References computeUnit, gem5::ComputeUnit::numExeUnits(), panic, and gem5::MipsISA::w.

Referenced by ready().

◆ name()

const std::string& gem5::ScoreboardCheckStage::name ( ) const
inline

Definition at line 86 of file scoreboard_check_stage.hh.

References _name.

◆ ready()

bool gem5::ScoreboardCheckStage::ready ( Wavefront w,
nonrdytype_e rdyStatus,
int *  exeResType,
int  wfSlot 
)
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 77 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().

Member Data Documentation

◆ _name

const std::string gem5::ScoreboardCheckStage::_name
private

Definition at line 102 of file scoreboard_check_stage.hh.

Referenced by name().

◆ computeUnit

ComputeUnit& gem5::ScoreboardCheckStage::computeUnit
private

Definition at line 93 of file scoreboard_check_stage.hh.

Referenced by exec(), mapWaveToExeUnit(), and ready().

◆ stats

gem5::ScoreboardCheckStage::ScoreboardCheckStageStats gem5::ScoreboardCheckStage::stats
protected

Referenced by collectStatistics().

◆ toSchedule

ScoreboardCheckToSchedule& gem5::ScoreboardCheckStage::toSchedule
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 100 of file scoreboard_check_stage.hh.

Referenced by exec().


The documentation for this class was generated from the following files:

Generated on Tue Sep 21 2021 12:28:05 for gem5 by doxygen 1.8.17