Constant Memory Segmentation for Low-Latency GPU Caching

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods for storing constants in on-chip cache for GPUs result in high latency, increased rates of missing constants, and inefficient data fetching, especially in systems with larger constant memory or shared GPUs.

Innovation Solution

Partitioning constant memory into segments and storing only the necessary data portions in the cache memory based on application needs, using identifier data to determine which segments to fetch and store.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If all data from constant memory is fetched for storage in on-chip cache before kernel launch, then constants are available in cache, but unnecessary data is also fetched increasing memory bandwidth usage and latency

Engineering Contradiction:
Improveconstants availabilityVSAvoidlatency
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The constant memory is divided into multiple segments, each associated with specific kernels. The system fetches and stores only the segments required by the upcoming kernel in the on-chip cache, rather than fetching all constant memory data. This selective segment-based approach reduces memory bandwidth usage and latency while ensuring constants are available when needed.

Inventive Principle:
Principle #1Segmentation

2Productivity

If constants are fetched when missing from cache at runtime, then cache is used efficiently, but latency increases and performance decreases

Engineering Contradiction:
Improvecache efficiencyVSAvoidlatency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The system performs preliminary actions by fetching and storing the required constant memory segments in the on-chip cache before the kernel is launched. The compiler analyzes which segments are needed and pre-loads them, eliminating runtime cache misses and reducing latency during kernel execution.

Inventive Principle:
Principle #10Preliminary action

3Quantity of substance

If larger constant memory is used in GPUs, then more constants can be stored, but the problems of fetching unnecessary data and increasing latency worsen

Engineering Contradiction:
Improveconstant memory capacityVSAvoidlatency
Core Design Contradiction:
Quantity of substanceVSLoss of time

Solution Approach 1:

The constant memory is segmented into multiple sections, with each segment associated with specific kernels or groups of kernels. The system selectively fetches only the segments required by the current or upcoming kernels into the on-chip cache, rather than fetching all data from the larger constant memory. This maintains the benefit of having large constant memory capacity while avoiding the penalty of fetching unnecessary data.

Inventive Principle:
Principle #1Segmentation

4Adaptability or versatility

If multiple devices share GPUs, then resource utilization improves, but contention for constant memory and cache increases affecting performance

Engineering Contradiction:
Improvedevice sharing capabilityVSAvoidperformance
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The constant memory is divided into segments that can be selectively allocated to different devices or kernels. When multiple devices share a GPU, each device can be assigned specific segments of the constant memory, reducing contention for the same memory resources. The on-chip cache also benefits from segment-based management, allowing more efficient sharing among multiple devices by loading only the segments each device needs.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS12450058B2Constant memory segmentation for parallel processors
Publication Date: 2025.10.21 NVIDIA CORP
  • US12450058B2 patent drawing
  • US12450058B2 patent drawing
  • US12450058B2 patent drawing

AI summary

In various examples, constant memory segmentation for autonomous systems and applications is described herein. Systems and methods are disclosed that partition a constant memory into a number of segments. In some examples, the constant memory is partitioned into equally sized segments while, in some examples, the constant memory is partitioned into varying sized segments. The systems and methods may then use the segments in order to store only a portion(s) of the data from the constant memory in a cache memory (e.g., an on-chip cache). For instance, if an application(s) (e.g., a kernel(s) executing a portion of the application) uses only a portion(s) of the data from the constant memory, then the segments may be used to store the portion(s) of the data from the constant memory in the cache memory without storing another portion(s) of the data from the constant memory in the cache memory.