Graphics Pipeline State Management via Segmented Registers

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional graphics processing units (GPUs) face challenges in managing the increased number of state packages required by newer APIs, such as DirectX 10, due to limited register capacity, leading to potential timing issues and increased CPU workload when attempting to compensate through software reordering of commands.

Innovation Solution

An efficient state management system is implemented, where a command processor manages a global state and block states independently, allowing for a greater number of different values to be executed by the GPU, using a global-state dirty bit and block-state dirty bit to manage updates and allocate registers effectively.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If the number of state packages supported by the graphics pipeline is increased to handle newer APIs, then the API compatibility and functionality are improved, but the die area significantly increases due to additional registers required

Engineering Contradiction:
ImproveAPI compatibilityVSAvoiddie area
Core Design Contradiction:
Adaptability or versatilityVSArea of stationary object

Solution Approach 1:

The patent divides the state management into two segments: a small number of global state packages maintained in pipeline registers (8 registers) and a larger number of block-specific state packages maintained in separate block state registers. This segmentation allows the system to support more total state packages without proportionally increasing the main pipeline register count, thus reducing die area while maintaining API compatibility.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a new dimension for state storage by adding block state registers separate from the traditional global state registers. This dimensional expansion allows the system to accommodate more state packages by distributing them across multiple storage dimensions (global vs. block-specific) rather than relying solely on increasing the size of a single register file.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Adaptability or versatility

If the number of state packages is increased to support more frequent context switches, then the API functionality is improved, but timing issues occur because the graphics pipeline stalls when state packages exceed storage capacity

Engineering Contradiction:
Improvecontext switch capabilityVSAvoidtiming consistency
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

By segmenting state management into global and block-specific states, the patent allows context switches to be handled more efficiently. Block-specific state changes can be managed independently without stalling the entire pipeline, improving timing consistency while supporting frequent context switches required by newer APIs.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces block state registers as an intermediary layer between the global state and the processing blocks. This intermediary allows state changes to be buffered and managed without causing pipeline stalls, maintaining timing consistency while enabling frequent context switches.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Productivity

If software reordering of commands is used to reduce the number of state changes, then the CPU workload increases significantly due to searching and sorting input transactions

Engineering Contradiction:
Improveworkload efficiencyVSAvoidCPU workload
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent implements self-service by allowing each processing block to independently manage its own state packages through block state registers. This eliminates the need for CPU-driven reordering of commands to optimize state changes, as the hardware automatically handles state management efficiently without requiring CPU intervention for searching and sorting transactions.

Inventive Principle:
Principle #25Self-service

4Quantity of substance

If the number of state packages is increased using additional registers, then the state capacity is improved, but the device complexity increases due to the larger register file requirements

Engineering Contradiction:
Improvestate package capacityVSAvoidregister file complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent segments the register file into two separate structures: a small global state register file (8 registers) and block-specific state register files. This segmentation increases total state package capacity without proportionally increasing the complexity of any single register file, as each segment remains relatively simple while collectively providing large capacity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The block state registers serve multiple functions: they store state packages for different processing blocks, handle context switches, and reduce global register access conflicts. This multi-functionality increases state capacity without requiring a single large complex register file, thereby reducing overall device complexity.

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

Data Source

PatentEP2232447B1Efficient state management for a graphics pipeline
Publication Date: 2019.05.08 ADVANCED MICRO DEVICES INC
  • EP2232447B1 patent drawingFigure 1
  • EP2232447B1 patent drawingFigure 2
  • EP2232447B1 patent drawingFigure 3

AI summary

The present invention provides an efficient state management system for a complex ASIC, and applications thereof. In an embodiment, a computer-based system executes state-dependent processes. The computer-based system includes a command processor (CP) and a plurality of processing blocks. The CP receives commands in a command stream and manages a global state responsive to global context events in the command stream. The plurality of processing blocks receive the commands in the command stream and manage respective block states responsive to block context events in the command stream. Each respective processing block executes a process on data in a data stream based on the global state and the block state of the respective processing block.