GPU Shared Register Allocation Cache for Reusing Secondary Programs

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The finite pool of shared registers in a GPU limits performance due to redundant execution of secondary programs and inefficient allocation strategies, particularly in tile-based architectures and ray tracing scenarios.

Innovation Solution

A shared register allocation cache is used to manage register allocations, reducing redundant execution by reusing allocated shared registers and implementing eviction policies based on task termination and availability, allowing efficient allocation and reuse across different tasks.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If more shared registers are added to increase available resources, then the GPU size increases, but the finite pool of registers still limits performance

Engineering Contradiction:
Improvenumber of shared registersVSAvoidGPU size
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

A shared register allocation cache is introduced as an intermediary data structure between the finite pool of shared registers and the multiple tasks. The cache stores allocation metadata (cache index, allocation base, allocation size) to track which registers are allocated to which tasks, enabling efficient management of the limited register pool without increasing GPU size.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system implements feedback mechanisms through the allocation cache that tracks register usage patterns. When a task needs registers, the system checks the cache for available allocations, and when tasks complete, the system updates the cache to reflect freed registers. This continuous feedback loop optimizes register distribution without requiring additional physical registers.

Inventive Principle:
Principle #23Feedback

2Productivity

If shared registers are allocated to multiple tasks, then resource utilization improves, but deadlocks may occur when tasks wait for register allocation

Engineering Contradiction:
Improveresource utilizationVSAvoiddeadlock prevention
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The allocation cache performs preliminary actions by pre-tracking which registers are allocated to which tasks before actual register allocation occurs. When a task requests registers, the system checks the cache to determine availability and makes allocation decisions in advance, preventing situations where tasks would block each other waiting for registers.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The cache maintains continuous feedback about register allocation state, allowing the system to make informed decisions about which tasks can proceed and which must wait. This feedback mechanism enables the system to prevent deadlocks by identifying allocation conflicts before they occur and managing task scheduling accordingly.

Inventive Principle:
Principle #23Feedback

3Adaptability or versatility

If secondary programs are executed multiple times for different tasks, then task flexibility is maintained, but redundant execution reduces performance

Engineering Contradiction:
Improvetask flexibilityVSAvoidperformance
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The allocation cache acts as an intermediary that stores information about which shared registers are allocated to which tasks and their corresponding secondary programs. This allows the system to determine whether a task can reuse registers from a previous allocation, avoiding redundant execution of secondary programs while maintaining the ability to execute them when necessary for task flexibility.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The cache creates a virtual copy of the allocation state, storing metadata about register allocations without actually duplicating the register contents. This allows the system to efficiently determine register availability and reuse patterns without re-executing secondary programs, thereby maintaining task flexibility while improving performance through avoidance of redundant operations.

Inventive Principle:
Principle #26Copying

Data Source

PatentEP4439313B1Resource management
Publication Date: 2026.01.14 IMAGINATION TECH LTD
  • EP4439313B1 patent drawingFigure 1
  • EP4439313B1 patent drawingFigure 2
  • EP4439313B1 patent drawingFigure 3

AI summary

A method of managing shared register allocations in a GPU is described. The method comprises, in response to receiving an allocating task, searching a shared register allocation cache for a cache entry with a cache index that identifies a secondary program that is associated with the allocating task. In response to identifying a cache entry with a cache index that identifies the secondary program that is associated with the allocating task, the method returns an identifier of the cache entry and status information indicating a cache hit. Returning the identifier of the cache entry causes the identifier of the cache entry to be associated with the allocating task and returning the status information indicating a cache hit causes the allocating task not to be issued. To be accompanied, when published, by Figure 1 of the accompanying drawings.