gem5  v20.1.0.0
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
ScheduleStage Class Reference

#include <schedule_stage.hh>

Public Types

enum  SchNonRdyType {
  SCH_SCALAR_ALU_NRDY, SCH_VECTOR_ALU_NRDY, SCH_VECTOR_MEM_ISSUE_NRDY, SCH_VECTOR_MEM_BUS_BUSY_NRDY,
  SCH_VECTOR_MEM_COALESCER_NRDY, SCH_VECTOR_MEM_REQS_NRDY, SCH_CEDE_SIMD_NRDY, SCH_SCALAR_MEM_ISSUE_NRDY,
  SCH_SCALAR_MEM_BUS_BUSY_NRDY, SCH_SCALAR_MEM_FIFO_NRDY, SCH_LOCAL_MEM_ISSUE_NRDY, SCH_LOCAL_MEM_BUS_BUSY_NRDY,
  SCH_LOCAL_MEM_FIFO_NRDY, SCH_FLAT_MEM_ISSUE_NRDY, SCH_FLAT_MEM_BUS_BUSY_NRDY, SCH_FLAT_MEM_COALESCER_NRDY,
  SCH_FLAT_MEM_REQS_NRDY, SCH_FLAT_MEM_FIFO_NRDY, SCH_RDY, SCH_NRDY_CONDITIONS
}
 
enum  schopdnonrdytype_e { SCH_VRF_OPD_NRDY, SCH_SRF_OPD_NRDY, SCH_RF_OPD_NRDY, SCH_RF_OPD_NRDY_CONDITIONS }
 
enum  schrfaccessnonrdytype_e {
  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
}
 
enum  SCH_STATUS { RFBUSY = 0, RFREADY }
 

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 regStats ()
 
void deleteFromSch (Wavefront *w)
 

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

ComputeUnitcomputeUnit
 
ScoreboardCheckToSchedulefromScoreboardCheck
 
ScheduleToExecutetoExecute
 
std::vector< Schedulerscheduler
 
Stats::Vector rdyListEmpty
 
Stats::Vector rdyListNotEmpty
 
Stats::Vector addToSchListStalls
 
Stats::Vector schListToDispList
 
Stats::Vector schListToDispListStalls
 
Stats::Vector rfAccessStalls
 
Stats::Scalar ldsBusArbStalls
 
Stats::Vector opdNrdyStalls
 
Stats::Vector dispNrdyStalls
 
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
 

Detailed Description

Definition at line 59 of file schedule_stage.hh.

Member Enumeration Documentation

◆ SCH_STATUS

Enumerator
RFBUSY 
RFREADY 

Definition at line 114 of file schedule_stage.hh.

◆ SchNonRdyType

Enumerator
SCH_SCALAR_ALU_NRDY 
SCH_VECTOR_ALU_NRDY 
SCH_VECTOR_MEM_ISSUE_NRDY 
SCH_VECTOR_MEM_BUS_BUSY_NRDY 
SCH_VECTOR_MEM_COALESCER_NRDY 
SCH_VECTOR_MEM_REQS_NRDY 
SCH_CEDE_SIMD_NRDY 
SCH_SCALAR_MEM_ISSUE_NRDY 
SCH_SCALAR_MEM_BUS_BUSY_NRDY 
SCH_SCALAR_MEM_FIFO_NRDY 
SCH_LOCAL_MEM_ISSUE_NRDY 
SCH_LOCAL_MEM_BUS_BUSY_NRDY 
SCH_LOCAL_MEM_FIFO_NRDY 
SCH_FLAT_MEM_ISSUE_NRDY 
SCH_FLAT_MEM_BUS_BUSY_NRDY 
SCH_FLAT_MEM_COALESCER_NRDY 
SCH_FLAT_MEM_REQS_NRDY 
SCH_FLAT_MEM_FIFO_NRDY 
SCH_RDY 
SCH_NRDY_CONDITIONS 

Definition at line 71 of file schedule_stage.hh.

◆ schopdnonrdytype_e

Enumerator
SCH_VRF_OPD_NRDY 
SCH_SRF_OPD_NRDY 
SCH_RF_OPD_NRDY 
SCH_RF_OPD_NRDY_CONDITIONS 

Definition at line 93 of file schedule_stage.hh.

◆ schrfaccessnonrdytype_e

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 99 of file schedule_stage.hh.

Constructor & Destructor Documentation

◆ ScheduleStage()

ScheduleStage::ScheduleStage ( const ComputeUnitParams *  p,
ComputeUnit cu,
ScoreboardCheckToSchedule from_scoreboard_check,
ScheduleToExecute to_execute 
)

◆ ~ScheduleStage()

ScheduleStage::~ScheduleStage ( )

Definition at line 66 of file schedule_stage.cc.

References scheduler, schList, and wavesInSch.

Member Function Documentation

◆ addToSchList()

bool ScheduleStage::addToSchList ( int  exeType,
const GPUDynInstPtr gpu_dyn_inst 
)
private

◆ arbitrateVrfToLdsBus()

void ScheduleStage::arbitrateVrfToLdsBus ( )
private

◆ checkMemResources()

void ScheduleStage::checkMemResources ( )
private

◆ checkRfOperandReadComplete()

void ScheduleStage::checkRfOperandReadComplete ( )
private

◆ deleteFromSch()

void ScheduleStage::deleteFromSch ( Wavefront w)

Definition at line 772 of file schedule_stage.cc.

References MipsISA::w, and wavesInSch.

◆ dispatchReady()

bool ScheduleStage::dispatchReady ( const GPUDynInstPtr gpu_dyn_inst)
private

◆ doDispatchListTransition() [1/2]

void ScheduleStage::doDispatchListTransition ( int  unitId,
DISPATCH_STATUS  s 
)
private

Definition at line 215 of file schedule_stage.cc.

References ScheduleToExecute::dispatchTransition(), ArmISA::s, and toExecute.

◆ doDispatchListTransition() [2/2]

void ScheduleStage::doDispatchListTransition ( int  unitId,
DISPATCH_STATUS  s,
const GPUDynInstPtr gpu_dyn_inst 
)
private

◆ exec()

void ScheduleStage::exec ( )

◆ fillDispatchList()

void ScheduleStage::fillDispatchList ( )
private

◆ init()

void ScheduleStage::init ( )

◆ name()

const std::string& ScheduleStage::name ( ) const
inline

Definition at line 70 of file schedule_stage.hh.

References _name.

Referenced by regStats().

◆ regStats()

void ScheduleStage::regStats ( )

◆ reinsertToSchList()

void ScheduleStage::reinsertToSchList ( int  exeType,
const GPUDynInstPtr gpu_dyn_inst 
)
private

Definition at line 351 of file schedule_stage.cc.

References RFREADY, and schList.

Referenced by arbitrateVrfToLdsBus(), and scheduleRfDestOperands().

◆ reserveResources()

void ScheduleStage::reserveResources ( )
private

◆ schedRfWrites()

bool ScheduleStage::schedRfWrites ( int  exeType,
const GPUDynInstPtr gpu_dyn_inst 
)
private

◆ scheduleRfDestOperands()

void ScheduleStage::scheduleRfDestOperands ( )
private

Member Data Documentation

◆ _name

const std::string ScheduleStage::_name
private

Definition at line 171 of file schedule_stage.hh.

Referenced by name().

◆ addToSchListStalls

Stats::Vector ScheduleStage::addToSchListStalls
private

Definition at line 139 of file schedule_stage.hh.

Referenced by exec(), and regStats().

◆ computeUnit

ComputeUnit& ScheduleStage::computeUnit
private

◆ dispNrdyStalls

Stats::Vector ScheduleStage::dispNrdyStalls
private

Definition at line 169 of file schedule_stage.hh.

Referenced by dispatchReady(), and regStats().

◆ fromScoreboardCheck

ScoreboardCheckToSchedule& ScheduleStage::fromScoreboardCheck
private

Definition at line 122 of file schedule_stage.hh.

Referenced by exec(), and init().

◆ glbMemBusRdy

bool ScheduleStage::glbMemBusRdy
private

Definition at line 185 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ glbMemIssueRdy

bool ScheduleStage::glbMemIssueRdy
private

Definition at line 186 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ ldsBusArbStalls

Stats::Scalar ScheduleStage::ldsBusArbStalls
private

Definition at line 160 of file schedule_stage.hh.

Referenced by arbitrateVrfToLdsBus(), and regStats().

◆ locMemBusRdy

bool ScheduleStage::locMemBusRdy
private

Definition at line 187 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ locMemIssueRdy

bool ScheduleStage::locMemIssueRdy
private

Definition at line 188 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ opdNrdyStalls

Stats::Vector ScheduleStage::opdNrdyStalls
private

Definition at line 164 of file schedule_stage.hh.

Referenced by checkRfOperandReadComplete(), and regStats().

◆ rdyListEmpty

Stats::Vector ScheduleStage::rdyListEmpty
private

Definition at line 133 of file schedule_stage.hh.

Referenced by exec(), and regStats().

◆ rdyListNotEmpty

Stats::Vector ScheduleStage::rdyListNotEmpty
private

Definition at line 134 of file schedule_stage.hh.

Referenced by exec(), and regStats().

◆ rfAccessStalls

Stats::Vector ScheduleStage::rfAccessStalls
private

Definition at line 155 of file schedule_stage.hh.

Referenced by addToSchList(), regStats(), and schedRfWrites().

◆ scalarAluRdy

bool ScheduleStage::scalarAluRdy
private

Definition at line 182 of file schedule_stage.hh.

Referenced by dispatchReady().

◆ scalarMemBusRdy

bool ScheduleStage::scalarMemBusRdy
private

Definition at line 183 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ scalarMemIssueRdy

bool ScheduleStage::scalarMemIssueRdy
private

Definition at line 184 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ scheduler

std::vector<Scheduler> ScheduleStage::scheduler
private

Definition at line 127 of file schedule_stage.hh.

Referenced by exec(), init(), ScheduleStage(), and ~ScheduleStage().

◆ schList

std::vector<std::deque<std::pair<GPUDynInstPtr, SCH_STATUS> > > ScheduleStage::schList
private

◆ schListToDispList

Stats::Vector ScheduleStage::schListToDispList
private

Definition at line 144 of file schedule_stage.hh.

Referenced by fillDispatchList(), and regStats().

◆ schListToDispListStalls

Stats::Vector ScheduleStage::schListToDispListStalls
private

Definition at line 148 of file schedule_stage.hh.

Referenced by fillDispatchList(), and regStats().

◆ toExecute

ScheduleToExecute& ScheduleStage::toExecute
private

◆ vectorAluRdy

bool ScheduleStage::vectorAluRdy
private

Definition at line 181 of file schedule_stage.hh.

Referenced by dispatchReady().

◆ wavesInSch

std::unordered_set<uint64_t> ScheduleStage::wavesInSch
private

Definition at line 212 of file schedule_stage.hh.

Referenced by addToSchList(), deleteFromSch(), exec(), ScheduleStage(), and ~ScheduleStage().


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

Generated on Wed Sep 30 2020 14:02:31 for gem5 by doxygen 1.8.17