Multi-Level Instruction Cache Prefetching via Pseudorandom Sector Selection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional multi-level cache prefetching techniques in high-speed computing systems, such as multithreaded processors, face challenges in maintaining high L1 cache hit rates and reducing instruction fetch latency, especially when processors operate at fast speeds or encounter branch operations, leading to increased cache misses and decreased performance.

Innovation Solution

A computer-implemented method where a fetch unit determines a memory location, generates a pseudo-random number, and selects a cache line from a first cache based on this number to transfer a sector from a second cache, optimizing the prefetching of L1 cache lines to improve hit rates and reduce latency, even with fast instruction consumption.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the fetch unit prefetches two L1 cache lines ahead from the L1.5 cache, then the L1 cache hit rate is improved for sequential accesses, but cache misses increase when branches occur to non-sequential locations

Engineering Contradiction:
ImproveL1 cache hit rateVSAvoidperformance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The prefetching mechanism dynamically adapts its behavior based on the processor's access pattern. When sequential access is detected, the fetch unit prefetches two cache lines ahead. When a branch to non-sequential location is detected, the mechanism adjusts to prefetch only one cache line ahead, preventing unnecessary cache misses while maintaining high hit rates for sequential accesses.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The fetch unit monitors processor access patterns and uses this feedback to adjust prefetching behavior. By detecting whether the processor is executing sequentially or has taken a branch, the system adjusts the prefetch distance accordingly, optimizing performance for the current execution context.

Inventive Principle:
Principle #23Feedback

2Productivity

If the processor consumes instructions at high speed, then throughput is improved, but the fetch unit cannot prefetch cache lines quickly enough, causing increased cache misses

Engineering Contradiction:
Improveprocessor throughputVSAvoidcache hit rate
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The fetch unit performs preliminary prefetching actions in advance of actual instruction consumption. By prefetching cache lines before they are needed, the system ensures that high-speed instruction consumption does not result in cache misses, as the required cache lines are already loaded into the L1 cache ahead of time.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The fetch unit prefetches more cache lines than immediately needed (two lines ahead for sequential access), ensuring that even if the processor consumes instructions faster than expected, there is a buffer of pre-loaded cache lines available, preventing cache misses during high-speed execution.

Inventive Principle:
Principle #16Partial or excessive action

3Measurement precision

If the fetch unit monitors processor accesses by sector to prefetch cache lines, then prefetching accuracy is improved, but the system complexity increases

Engineering Contradiction:
Improveprefetch accuracyVSAvoidfetch unit complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The L1 cache line is divided into four sectors, and the fetch unit monitors which sector the processor accesses at any given time. This segmentation allows precise tracking of instruction consumption patterns within a cache line, enabling accurate determination of when to initiate prefetching without requiring complex monitoring of every individual instruction.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS9110810B2Multi-level instruction cache prefetching
Publication Date: 2015.08.18 NVIDIA CORP
  • US9110810B2 patent drawing
  • US9110810B2 patent drawing
  • US9110810B2 patent drawing

AI summary

One embodiment of the present invention sets forth an improved way to prefetch instructions in a multi-level cache. Fetch unit initiates a prefetch operation to transfer one of a set of multiple cache lines, based on a function of a pseudorandom number generator and the sector corresponding to the current instruction L1 cache line. The fetch unit selects a prefetch target from the set of multiple cache lines according to some probability function. If the current instruction L1 cache 370 is located within the first sector of the corresponding L1.5 cache line, then the selected prefetch target is located at a sector within the next L1.5 cache line. The result is that the instruction L1 cache hit rate is improved and instruction fetch latency is reduced, even where the processor consumes instructions in the instruction L1 cache at a fast rate.