gem5 v24.0.0.0
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()

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

◆ ~ScheduleStage()

gem5::ScheduleStage::~ScheduleStage ( )

Definition at line 69 of file schedule_stage.cc.

References scheduler, schList, and wavesInSch.

Member Function Documentation

◆ addToSchList()

◆ arbitrateVrfToLdsBus()

◆ checkMemResources()

◆ checkRfOperandReadComplete()

◆ deleteFromSch()

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

Definition at line 787 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

◆ doDispatchListTransition() [2/2]

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

◆ exec()

◆ fillDispatchList()

◆ init()

◆ name()

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

Definition at line 73 of file schedule_stage.hh.

References _name.

◆ reinsertToSchList()

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

Definition at line 363 of file schedule_stage.cc.

References RFREADY, and schList.

Referenced by arbitrateVrfToLdsBus(), and scheduleRfDestOperands().

◆ reserveResources()

◆ schedRfWrites()

◆ scheduleRfDestOperands()

Member Data Documentation

◆ _name

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

Definition at line 133 of file schedule_stage.hh.

Referenced by name().

◆ computeUnit

◆ fromScoreboardCheck

ScoreboardCheckToSchedule& gem5::ScheduleStage::fromScoreboardCheck
private

Definition at line 126 of file schedule_stage.hh.

Referenced by exec(), and init().

◆ glbMemBusRdy

bool gem5::ScheduleStage::glbMemBusRdy
private

Definition at line 147 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ glbMemIssueRdy

bool gem5::ScheduleStage::glbMemIssueRdy
private

Definition at line 148 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ locMemBusRdy

bool gem5::ScheduleStage::locMemBusRdy
private

Definition at line 149 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ locMemIssueRdy

bool gem5::ScheduleStage::locMemIssueRdy
private

Definition at line 150 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ scalarAluRdy

bool gem5::ScheduleStage::scalarAluRdy
private

Definition at line 144 of file schedule_stage.hh.

Referenced by dispatchReady().

◆ scalarMemBusRdy

bool gem5::ScheduleStage::scalarMemBusRdy
private

Definition at line 145 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ scalarMemIssueRdy

bool gem5::ScheduleStage::scalarMemIssueRdy
private

Definition at line 146 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ 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().

◆ 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 Tue Jun 18 2024 16:24:14 for gem5 by doxygen 1.11.0