gem5  v22.1.0.0
Classes | Public Member Functions | Private Attributes | List of all members
gem5::HWScheduler Class Reference

#include <hw_scheduler.hh>


class  SchedulerWakeupEvent

Public Member Functions

 HWScheduler (HSAPacketProcessor *hsa_pp, Tick wakeup_delay)
void write (Addr db_addr, uint64_t doorbell_reg)
void registerNewQueue (uint64_t hostReadIndexPointer, uint64_t basePointer, uint64_t queue_id, uint32_t size, int doorbellSize, GfxVersion gfxVersion, Addr offset=0, uint64_t rd_idx=0)
void unregisterQueue (uint64_t queue_id, int doorbellSize)
void wakeup ()
void schedWakeup ()
bool isRLQIdle (uint32_t rl_idx)
bool findNextActiveALQ ()
bool findNextIdleRLQ ()
bool unmapQFromRQ ()
bool contextSwitchQ ()
bool findEmptyHWQ ()
bool mapQIfSlotAvlbl (uint32_t al_idx, AQLRingBuffer *aql_buf, HSAQueueDescriptor *q_desc)
void addQCntxt (uint32_t al_idx, AQLRingBuffer *aql_buf, HSAQueueDescriptor *q_desc)
void removeQCntxt ()
void scheduleAndWakeupMappedQ ()
void updateRRVars (uint32_t al_idx, uint32_t rl_idx)

Private Attributes

std::map< uint32_t, QCntxtactiveList
std::map< Addr, uint32_t > dbMap
std::map< uint64_t, AddrqidMap
std::map< uint32_t, uint32_t > regdListMap
uint32_t nextALId
uint32_t nextRLId
const Tick wakeupDelay
SchedulerWakeupEvent schedWakeupEvent

Detailed Description

Definition at line 50 of file hw_scheduler.hh.

Constructor & Destructor Documentation

◆ HWScheduler()

gem5::HWScheduler::HWScheduler ( HSAPacketProcessor hsa_pp,
Tick  wakeup_delay 

Definition at line 53 of file hw_scheduler.hh.

Member Function Documentation

◆ addQCntxt()

void gem5::HWScheduler::addQCntxt ( uint32_t  al_idx,
AQLRingBuffer aql_buf,
HSAQueueDescriptor q_desc 

◆ contextSwitchQ()

bool gem5::HWScheduler::contextSwitchQ ( )

◆ findEmptyHWQ()

bool gem5::HWScheduler::findEmptyHWQ ( )

◆ findNextActiveALQ()

bool gem5::HWScheduler::findNextActiveALQ ( )

Definition at line 272 of file

References activeList, DPRINTF, MAX_ACTIVE_QUEUES, nextALId, and regdListMap.

Referenced by contextSwitchQ().

◆ findNextIdleRLQ()

bool gem5::HWScheduler::findNextIdleRLQ ( )

Definition at line 294 of file

References hsaPP, isRLQIdle(), nextRLId, and gem5::HSAPacketProcessor::numHWQueues.

Referenced by unmapQFromRQ().

◆ isRLQIdle()

bool gem5::HWScheduler::isRLQIdle ( uint32_t  rl_idx)

◆ mapQIfSlotAvlbl()

bool gem5::HWScheduler::mapQIfSlotAvlbl ( uint32_t  al_idx,
AQLRingBuffer aql_buf,
HSAQueueDescriptor q_desc 

◆ registerNewQueue()

void gem5::HWScheduler::registerNewQueue ( uint64_t  hostReadIndexPointer,
uint64_t  basePointer,
uint64_t  queue_id,
uint32_t  size,
int  doorbellSize,
GfxVersion  gfxVersion,
Addr  offset = 0,
uint64_t  rd_idx = 0 

◆ removeQCntxt()

void gem5::HWScheduler::removeQCntxt ( )

◆ scheduleAndWakeupMappedQ()

void gem5::HWScheduler::scheduleAndWakeupMappedQ ( )

◆ schedWakeup()

void gem5::HWScheduler::schedWakeup ( )

◆ unmapQFromRQ()

bool gem5::HWScheduler::unmapQFromRQ ( )

Definition at line 240 of file

References findNextIdleRLQ(), and removeQCntxt().

Referenced by contextSwitchQ().

◆ unregisterQueue()

void gem5::HWScheduler::unregisterQueue ( uint64_t  queue_id,
int  doorbellSize 

◆ updateRRVars()

void gem5::HWScheduler::updateRRVars ( uint32_t  al_idx,
uint32_t  rl_idx 

◆ wakeup()

void gem5::HWScheduler::wakeup ( )

Definition at line 58 of file

References contextSwitchQ(), and schedWakeup().

Referenced by gem5::HWScheduler::SchedulerWakeupEvent::process().

◆ write()

void gem5::HWScheduler::write ( Addr  db_addr,
uint64_t  doorbell_reg 

Member Data Documentation

◆ activeList

std::map<uint32_t, QCntxt> gem5::HWScheduler::activeList

◆ dbMap

std::map<Addr, uint32_t> gem5::HWScheduler::dbMap

Definition at line 95 of file hw_scheduler.hh.

Referenced by registerNewQueue(), removeQCntxt(), unregisterQueue(), and write().

◆ hsaPP

HSAPacketProcessor* gem5::HWScheduler::hsaPP

◆ nextALId

uint32_t gem5::HWScheduler::nextALId

Definition at line 109 of file hw_scheduler.hh.

Referenced by contextSwitchQ(), findNextActiveALQ(), and updateRRVars().

◆ nextRLId

uint32_t gem5::HWScheduler::nextRLId

◆ qidMap

std::map<uint64_t, Addr> gem5::HWScheduler::qidMap

Definition at line 97 of file hw_scheduler.hh.

Referenced by registerNewQueue(), and unregisterQueue().

◆ regdListMap

std::map<uint32_t, uint32_t> gem5::HWScheduler::regdListMap

◆ schedWakeupEvent

SchedulerWakeupEvent gem5::HWScheduler::schedWakeupEvent

Definition at line 112 of file hw_scheduler.hh.

Referenced by schedWakeup().

◆ wakeupDelay

const Tick gem5::HWScheduler::wakeupDelay

Definition at line 111 of file hw_scheduler.hh.

Referenced by schedWakeup().

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

Generated on Wed Dec 21 2022 10:23:19 for gem5 by doxygen 1.9.1