gem5 v25.0.0.1
Loading...
Searching...
No Matches
gem5::ScheduleStage Class Reference

#include <schedule_stage.hh>

Classes

struct  ScheduleStageStats

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 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

ComputeUnitcomputeUnit
ScoreboardCheckToSchedulefromScoreboardCheck
ScheduleToExecutetoExecute
std::vector< Schedulerscheduler
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 62 of file schedule_stage.hh.

Member Enumeration Documentation

◆ SCH_STATUS

Enumerator
RFBUSY 
RFREADY 

Definition at line 118 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 74 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 97 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 104 of file schedule_stage.hh.

Constructor & Destructor Documentation

◆ ScheduleStage()

◆ ~ScheduleStage()

gem5::ScheduleStage::~ScheduleStage ( )

Definition at line 69 of file schedule_stage.cc.

References scheduler, schList, and wavesInSch.

Member Function Documentation

◆ addToSchList()

◆ arbitrateVrfToLdsBus()

void gem5::ScheduleStage::arbitrateVrfToLdsBus ( )
private

◆ checkMemResources()

void gem5::ScheduleStage::checkMemResources ( )
private

◆ checkRfOperandReadComplete()

◆ deleteFromSch()

void gem5::ScheduleStage::deleteFromSch ( Wavefront * w)

Definition at line 800 of file schedule_stage.cc.

References gem5::MipsISA::w, and wavesInSch.

◆ dispatchReady()

◆ doDispatchListTransition() [1/2]

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

Definition at line 225 of file schedule_stage.cc.

References gem5::ArmISA::s, and toExecute.

◆ doDispatchListTransition() [2/2]

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

Definition at line 218 of file schedule_stage.cc.

References gem5::ArmISA::s, and toExecute.

Referenced by arbitrateVrfToLdsBus(), fillDispatchList(), and scheduleRfDestOperands().

◆ exec()

◆ fillDispatchList()

void gem5::ScheduleStage::fillDispatchList ( )
private

◆ init()

void gem5::ScheduleStage::init ( )

Definition at line 77 of file schedule_stage.cc.

References computeUnit, fatal_if, fromScoreboardCheck, and scheduler.

◆ name()

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

Definition at line 73 of file schedule_stage.hh.

References _name.

Referenced by ScheduleStage().

◆ reinsertToSchList()

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

Definition at line 369 of file schedule_stage.cc.

References RFREADY, and schList.

Referenced by arbitrateVrfToLdsBus(), and scheduleRfDestOperands().

◆ reserveResources()

◆ schedRfWrites()

◆ scheduleRfDestOperands()

void gem5::ScheduleStage::scheduleRfDestOperands ( )
private

Member Data Documentation

◆ _name

const std::string gem5::ScheduleStage::_name
private

Definition at line 133 of file schedule_stage.hh.

Referenced by name(), and ScheduleStage().

◆ computeUnit

◆ fromScoreboardCheck

ScoreboardCheckToSchedule& gem5::ScheduleStage::fromScoreboardCheck
private

Definition at line 126 of file schedule_stage.hh.

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

◆ glbMemBusRdy

bool gem5::ScheduleStage::glbMemBusRdy
private

Definition at line 147 of file schedule_stage.hh.

Referenced by checkMemResources(), dispatchReady(), and ScheduleStage().

◆ glbMemIssueRdy

bool gem5::ScheduleStage::glbMemIssueRdy
private

Definition at line 148 of file schedule_stage.hh.

Referenced by checkMemResources(), dispatchReady(), and ScheduleStage().

◆ locMemBusRdy

bool gem5::ScheduleStage::locMemBusRdy
private

Definition at line 149 of file schedule_stage.hh.

Referenced by checkMemResources(), dispatchReady(), and ScheduleStage().

◆ locMemIssueRdy

bool gem5::ScheduleStage::locMemIssueRdy
private

Definition at line 150 of file schedule_stage.hh.

Referenced by checkMemResources(), dispatchReady(), and ScheduleStage().

◆ scalarAluRdy

bool gem5::ScheduleStage::scalarAluRdy
private

Definition at line 144 of file schedule_stage.hh.

Referenced by dispatchReady(), and ScheduleStage().

◆ scalarMemBusRdy

bool gem5::ScheduleStage::scalarMemBusRdy
private

Definition at line 145 of file schedule_stage.hh.

Referenced by checkMemResources(), dispatchReady(), and ScheduleStage().

◆ scalarMemIssueRdy

bool gem5::ScheduleStage::scalarMemIssueRdy
private

Definition at line 146 of file schedule_stage.hh.

Referenced by checkMemResources(), dispatchReady(), and ScheduleStage().

◆ scheduler

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

Definition at line 131 of file schedule_stage.hh.

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

◆ schList

◆ stats

◆ toExecute

◆ vectorAluRdy

bool gem5::ScheduleStage::vectorAluRdy
private

Definition at line 143 of file schedule_stage.hh.

Referenced by dispatchReady(), and ScheduleStage().

◆ wavesInSch

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

Definition at line 174 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 Sat Oct 18 2025 08:06:54 for gem5 by doxygen 1.14.0