Shared Local Registers for GPU Thread Team Latency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The increasing number of processing resources in graphics processing units (GPUs) leads to increased latency in memory access due to the growing distance between resources and data storage, as well as competition for memory bandwidth, particularly in systems using shared local memory accessible by multiple threads.

Innovation Solution

Implementing a thread team construct with shared local registers that are accessible to each thread, allowing data to be processed in close proximity and reducing memory access latency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If the number of processing resources in GPUs is increased to improve processing capacity, then productivity is improved, but the distance between resources and data storage increases causing memory access latency to worsen

Engineering Contradiction:
Improveprocessing capacityVSAvoidmemory access latency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent segments the memory hierarchy into multiple levels: shared local memory (SLM) accessible by thread teams, and global memory. By dividing the memory access paths and creating localized memory regions close to processing resources, the system reduces the effective distance for frequent accesses while maintaining the scaled-up processing capacity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a new dimension in the memory hierarchy by placing shared local memory physically closer to processing resources in the architectural layout. This spatial reorganization creates a near-far memory access dimension, where frequently accessed data resides in SLM close to processors, reducing latency without limiting the number of processing resources.

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

2Productivity

If shared local memory is made accessible to multiple threads to improve parallel processing, then productivity is improved, but competition for memory bandwidth increases causing memory access latency to worsen

Engineering Contradiction:
Improveparallel processing capabilityVSAvoidmemory access latency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent applies local quality by providing each thread team with its own dedicated shared local memory region. This localized memory allocation ensures that threads within a team have preferential, low-latency access to their specific data without competing with threads from other teams, thereby maintaining high parallel processing capability while reducing access latency.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The shared local memory acts as an intermediary buffer between global memory and processing resources. By caching frequently accessed data in SLM, the system mediates the bandwidth competition - threads access fast local memory rather than contending for global memory bandwidth, reducing latency while supporting multi-thread parallelism.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS20240112295A1Shared local registers for thread team processing
Publication Date: 2024.04.04 INTEL CORP
  • US20240112295A1 patent drawing
  • US20240112295A1 patent drawing
  • US20240112295A1 patent drawing

AI summary

Shared local registers for thread team processing is described. An example of an apparatus includes one or more processors including a graphic processor having multiple processing resources; and memory for storage of data, the graphics processor to allocate a first thread team to a first processing resource, the first thread team including hardware threads to be executed solely by the first processing resource; allocate a shared local register (SLR) space that may be directly reference in the ISA instructions to the first processing resource, the SLR space being accessible to the threads of the thread team and being inaccessible to threads outside of the thread team; and allocate individual register spaces to the thread team, each of the individual register spaces being accessible to a respective thread of the thread team.