Aggregated Doorbells for GPU Queue Scheduling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional processing systems fail to efficiently monitor and schedule command buffers for unmapped queues, leading to increased polling overhead and scheduling latencies due to the lack of awareness of command buffers arriving in previously empty queues that are not mapped to the scheduler.

Innovation Solution

Implementing aggregated doorbells that are monitored by a hardware doorbell monitor, which generates interrupts when an unmapped queue becomes non-empty, allowing the scheduler to poll and schedule command buffers from these queues, and dynamically managing queue mappings to balance polling overhead and scheduling latencies.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If the scheduler monitors all queues individually, then scheduling responsiveness is improved, but polling overhead increases

Engineering Contradiction:
Improvescheduling latencyVSAvoidpolling overhead
Core Design Contradiction:
Loss of timeVSUse of energy by moving object

Solution Approach 1:

Multiple doorbells for different queues are merged into a single aggregated doorbell. When any queue in the group receives a command buffer, the aggregated doorbell is set, notifying the scheduler that at least one queue has work pending. This reduces the number of individual doorbells the scheduler must monitor while maintaining awareness of work across all queues.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The aggregated doorbell serves multiple functions: it notifies the scheduler of work in any monitored queue, enables batch polling of multiple queues through a single interrupt, and reduces the overall doorbell count in the system. This multi-functional approach resolves the contradiction by providing comprehensive monitoring coverage with reduced overhead.

Inventive Principle:
Principle #6Universality (Multi-functionality)

2Device complexity

If fewer doorbells are used, then device complexity is reduced, but scheduling awareness of unmapped queues deteriorates

Engineering Contradiction:
Improvenumber of doorbellsVSAvoidscheduler awareness of command buffers
Core Design Contradiction:
Device complexityVSLoss of information

Solution Approach 1:

The aggregated doorbell acts as an intermediary that consolidates status information from multiple queues into a single notification mechanism. Instead of requiring individual doorbells for each queue, the aggregated doorbell mediates between multiple queues and the scheduler, preserving complete awareness information while reducing the number of direct notification channels.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

Queues are segmented into groups that share a common aggregated doorbell. This segmentation allows the system to manage doorbell complexity at the group level rather than the individual queue level, reducing overall doorbell count while maintaining the ability to track work in each queue through selective polling of queue status registers.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS11132204B2Aggregated doorbells for unmapped queues in a graphics processing unit
Publication Date: 2021.09.28 ADVANCED MICRO DEVICES INC
  • US11132204B2 patent drawing
  • US11132204B2 patent drawing
  • US11132204B2 patent drawing

AI summary

A processing system includes a set of queues to store command buffers prior to execution in a corresponding plurality of pipelines. The processing system also includes one or more first doorbells and a second doorbell. The first doorbells map to one or more queues in the set of queues on a one-to-one basis. The second doorbell maps to a subset of the set of queues on a one-to-many basis. A doorbell monitor generates an interrupt in response to an empty queue in the subset becoming a non-empty queue. A scheduler polls the subset in response to the interrupt. The scheduler schedules a command buffer from the non-empty queue for execution or adds the command buffer to a pool for subsequent execution.