GPU Cache Partitioning and Dynamic Overfetch for Lower Latency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional cache structures in graphics processing units (GPUs) are inefficient, leading to suboptimal performance in processing graphics and machine-learning operations due to inefficiencies in cache access and management.

Innovation Solution

The implementation of a partitioning mechanism for large GPU caches, dynamic overfetching of cache lines, and cache scrubbing and pre-eviction techniques to optimize cache utilization and reduce latency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If conventional cache structures are used in GPUs, then the cache can store data, but the cache access efficiency is poor leading to suboptimal performance

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

Solution Approach 1:

The cache is divided into multiple partitions or sets, where each partition can be independently accessed. This segmentation allows parallel access to different cache partitions by different thread groups, thereby reducing access latency and improving overall processing efficiency without sacrificing cache capacity.

Inventive Principle:
Principle #1Segmentation

2Quantity of substance

If cache size is increased to improve data storage capacity, then more data can be cached, but cache management complexity increases

Engineering Contradiction:
Improvecache capacityVSAvoidcache management complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The large cache is segmented into multiple smaller partitions, each managed independently with its own tag array and data array. This segmentation reduces the complexity of cache management by allowing simpler, independent management of each partition while collectively providing large cache capacity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Each cache partition is designed to be self-managing with independent hit/miss determination logic. When a cache access occurs, the relevant partition autonomously determines whether to service the request without requiring complex centralized arbitration, thereby reducing overall management complexity.

Inventive Principle:
Principle #25Self-service

3Productivity

If conventional cache access methods are used, then simple access logic is maintained, but cache access latency is high reducing processing throughput

Engineering Contradiction:
Improveprocessing throughputVSAvoidcache access time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The cache is organized into multiple partitions that can be accessed in parallel. Different thread groups can simultaneously access different partitions, effectively multiplying the access throughput while keeping individual access logic simple. This parallel access mechanism reduces overall access latency and improves processing throughput.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The cache system implements overfetching by pre-loading data into the cache before it is actually needed by the processing units. This partial action of fetching data early reduces the effective access time by ensuring data is already in cache when needed, thereby improving throughput without requiring faster access logic.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS12066975B2Cache structure and utilization
Publication Date: 2024.08.20 INTEL CORP
  • US12066975B2 patent drawing
  • US12066975B2 patent drawing
  • US12066975B2 patent drawing

AI summary

Embodiments are generally directed to cache structure and utilization. An embodiment of an apparatus includes one or more processors including a graphics processor; a memory for storage of data for processing by the one or more processors; and a cache to cache data from the memory; wherein the apparatus is to provide for dynamic overfetching of cache lines for the cache, including receiving a read request and accessing the cache for the requested data, and upon a miss in the cache, overfetching data from memory or a higher level cache in addition to fetching the requested data, wherein the overfetching of data is based at least in part on a current overfetch boundary, and provides for data is to be prefetched extending to the current overfetch boundary.