gem5  v21.1.0.2
Classes | Public Types | Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
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 64 of file schedule_stage.hh.

Member Enumeration Documentation

◆ SCH_STATUS

Enumerator
RFBUSY 
RFREADY 

Definition at line 120 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 76 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 99 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 106 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 70 of file schedule_stage.cc.

References scheduler, schList, and wavesInSch.

Member Function Documentation

◆ addToSchList()

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

◆ arbitrateVrfToLdsBus()

void gem5::ScheduleStage::arbitrateVrfToLdsBus ( )
private

◆ checkMemResources()

void gem5::ScheduleStage::checkMemResources ( )
private

◆ checkRfOperandReadComplete()

void gem5::ScheduleStage::checkRfOperandReadComplete ( )
private

◆ deleteFromSch()

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

Definition at line 790 of file schedule_stage.cc.

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

◆ dispatchReady()

bool gem5::ScheduleStage::dispatchReady ( const GPUDynInstPtr gpu_dyn_inst)
private

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

void gem5::ScheduleStage::exec ( )

◆ fillDispatchList()

void gem5::ScheduleStage::fillDispatchList ( )
private

◆ init()

void gem5::ScheduleStage::init ( )

◆ name()

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

Definition at line 75 of file schedule_stage.hh.

References _name.

◆ reinsertToSchList()

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

Definition at line 364 of file schedule_stage.cc.

References RFREADY, and schList.

Referenced by arbitrateVrfToLdsBus(), and scheduleRfDestOperands().

◆ reserveResources()

void gem5::ScheduleStage::reserveResources ( )
private

◆ schedRfWrites()

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

◆ scheduleRfDestOperands()

void gem5::ScheduleStage::scheduleRfDestOperands ( )
private

Member Data Documentation

◆ _name

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

Definition at line 135 of file schedule_stage.hh.

Referenced by name().

◆ computeUnit

ComputeUnit& gem5::ScheduleStage::computeUnit
private

◆ fromScoreboardCheck

ScoreboardCheckToSchedule& gem5::ScheduleStage::fromScoreboardCheck
private

Definition at line 128 of file schedule_stage.hh.

Referenced by exec(), and init().

◆ glbMemBusRdy

bool gem5::ScheduleStage::glbMemBusRdy
private

Definition at line 149 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ glbMemIssueRdy

bool gem5::ScheduleStage::glbMemIssueRdy
private

Definition at line 150 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ locMemBusRdy

bool gem5::ScheduleStage::locMemBusRdy
private

Definition at line 151 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ locMemIssueRdy

bool gem5::ScheduleStage::locMemIssueRdy
private

Definition at line 152 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ scalarAluRdy

bool gem5::ScheduleStage::scalarAluRdy
private

Definition at line 146 of file schedule_stage.hh.

Referenced by dispatchReady().

◆ scalarMemBusRdy

bool gem5::ScheduleStage::scalarMemBusRdy
private

Definition at line 147 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ scalarMemIssueRdy

bool gem5::ScheduleStage::scalarMemIssueRdy
private

Definition at line 148 of file schedule_stage.hh.

Referenced by checkMemResources(), and dispatchReady().

◆ scheduler

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

Definition at line 133 of file schedule_stage.hh.

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

◆ schList

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

◆ stats

gem5::ScheduleStage::ScheduleStageStats gem5::ScheduleStage::stats
protected

◆ toExecute

ScheduleToExecute& gem5::ScheduleStage::toExecute
private

◆ vectorAluRdy

bool gem5::ScheduleStage::vectorAluRdy
private

Definition at line 145 of file schedule_stage.hh.

Referenced by dispatchReady().

◆ wavesInSch

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

Definition at line 176 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 Sep 21 2021 12:28:05 for gem5 by doxygen 1.8.17