Instruction Slice Pre-execution for Data-Dependent Load Latency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Data-dependent load instructions in processing systems often result in high cache miss penalties, leading to performance degradation due to the dependency on parent load instructions, which cannot be effectively predicted using pattern or stride-based prefetching.

Innovation Solution

A slicer identifies qualified load instructions that will miss in the last-level cache, constructing an instruction slice from commit buffer information to pre-execute and prefetch data for subsequent occurrences, thereby reducing cache miss latency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If data-dependent load instructions are executed in sequence waiting for parent load results, then correctness is maintained, but processing speed deteriorates due to pipeline stalls

Engineering Contradiction:
ImprovecorrectnessVSAvoidprocessing speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent pre-executes instruction slices in advance of their actual execution point. When a load instruction is identified as potentially causing a cache miss, the corresponding instruction slice (containing the parent load and dependent instructions) is pre-executed to determine the target address. This preliminary action allows the system to prepare prefetch addresses before the actual data is needed, maintaining correctness while reducing pipeline stalls.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent segments the instruction stream into instruction slices that are associated with specific load instructions. Each instruction slice contains the parent load instruction and its dependent instructions. By segmenting the execution flow this way, the system can independently pre-execute specific slices without affecting the overall instruction sequence, allowing parallel processing of dependent instructions once data is available.

Inventive Principle:
Principle #1Segmentation

2Productivity

If pattern-based prefetching is used for regular load instructions, then prefetching efficiency is improved, but it becomes inapplicable to data-dependent load instructions

Engineering Contradiction:
Improveprefetching efficiencyVSAvoidapplicability to data-dependent loads
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent transitions from static pattern-based prefetching to dynamic slice-based prefetching. Instead of relying on fixed stride patterns, the system dynamically constructs instruction slices based on actual data dependencies. The pre-execution of these slices generates dynamic prefetch addresses that adapt to the specific data-dependent access patterns encountered during execution, making prefetching applicable to both regular and data-dependent load instructions.

Inventive Principle:
Principle #15Dynamics

3Reliability

If last-level cache misses occur for parent load instructions, then data must be fetched from external memory, but this causes high latency penalties

Engineering Contradiction:
Improvedata availabilityVSAvoidcache miss latency
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent performs preliminary pre-execution of instruction slices to determine prefetch addresses before the actual data is needed. When a load instruction is identified as potentially causing an L3 cache miss, the system pre-executes the associated instruction slice to calculate the target address, then initiates prefetching of the data from external memory. This preliminary action overlaps the data transfer time with computation time, hiding the latency penalty.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent maintains continuous useful action by keeping the execution pipeline full during prefetch operations. While data is being prefetched from external memory, the processor continues executing other instructions and pre-executing instruction slices. The system ensures that once prefetching completes, the data is ready and the pipeline can resume without stalls, maintaining continuous productive work.

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentEP3685260B1Slice construction for pre-executing data dependent loads
Publication Date: 2022.01.19 QUALCOMM INC
  • EP3685260B1 patent drawingFigure 1
  • EP3685260B1 patent drawingFigure 2
  • EP3685260B1 patent drawingFigure 3

AI summary

Systems and methods for constructing an instruction slice for prefetching data of a data-dependent load instruction include a slicer for identifying a load instruction in an instruction sequence as a first occurrence of a qualified load instruction which will miss in a last-level cache. A commit buffer stores information pertaining to the first occurrence of the qualified load instruction and shadow instructions which follow. For a second occurrence of the qualified load instruction, an instruction slice is constructed from the information in the commit buffer to form a slice payload. A pre-execution engine pre-executes the instruction slice based on the slice payload to determine an address from which data is to be fetched for execution of a third and any subsequent occurrences of the qualified load instruction. The data is prefetched from the determined address for the third and any subsequent occurrence of the qualified load instruction.