Instruction Sequence Buffer for Branch Prediction Latency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current computer architectures face performance bottlenecks in single-threaded execution due to the sequential nature of branch processing, leading to penalties from incorrect branch prediction, which often result in flushing the entire pipeline and reloading instructions, making it inefficient to predict multiple branches simultaneously.

Innovation Solution

Implementing a method to cache branch instructions with reliably predictable sequences by tracking repetitive hits and identifying frequently executed branch instructions, storing these sequences in a buffer for quick retrieval when needed, thereby reducing latency penalties associated with incorrect predictions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If branch prediction logic is implemented to predict branch outcomes, then the fetch logic can anticipate the next instruction sequence, but incorrect predictions cause pipeline flushing and performance penalties

Engineering Contradiction:
Improvebranch prediction penaltyVSAvoidbranch prediction accuracy
Core Design Contradiction:
Loss of timeVSReliability

Solution Approach 1:

The patent pre-calculates and stores alternative instruction sequences in a buffer before they are needed. When a branch is predicted, both the predicted path and alternative paths are prepared in advance, allowing quick switching if the prediction is wrong without flushing the entire pipeline.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

An intermediary buffer structure is introduced between the branch prediction logic and the instruction pipeline. This buffer holds pre-fetched alternative instruction sequences, acting as a mediator that provides quick access to alternative paths without requiring pipeline flushes when predictions fail.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If multiple branches are predicted simultaneously, then throughput can be improved, but the sequential nature of branch processing creates a performance bottleneck

Engineering Contradiction:
Improveinstruction throughputVSAvoidbranch processing complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments the instruction fetch process by creating separate buffer entries for different branch outcomes. Each branch prediction can independently access its own pre-calculated alternative sequences, allowing parallel processing of multiple branches without interfering with each other's sequential processing requirements.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent adds a temporal dimension to branch processing by pre-calculating and storing alternative instruction sequences in advance. This transforms the traditionally sequential branch processing into a parallel operation where multiple branch outcomes are prepared simultaneously in different time slots, then accessed sequentially when needed.

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

3Reliability

If the pipeline is flushed on incorrect branch prediction, then the correct instruction sequence can be loaded, but the entire pipeline must be cleared and reloaded, greatly reducing performance

Engineering Contradiction:
Improveinstruction sequence correctnessVSAvoidexecution speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent extracts the alternative instruction sequences from the main pipeline and stores them in a separate buffer. When a prediction error occurs, only the affected portion needs to be corrected by switching to the pre-stored alternative sequence, rather than flushing and reloading the entire pipeline.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent prepares alternative instruction sequences in advance and cushions against potential prediction errors by having ready-to-use alternative paths stored in the buffer. This beforehand preparation eliminates the need for costly pipeline flushes when predictions go wrong.

Inventive Principle:
Principle #11Beforehand cushioning (Prior cushioning)

Data Source

PatentEP3306466B1An instruction sequence buffer to store branches having reliably predictable instruction sequences
Publication Date: 2020.05.13 INTEL CORP
  • EP3306466B1 patent drawingFigure 1
  • EP3306466B1 patent drawingFigure 2
  • EP3306466B1 patent drawingFigure 3

AI summary

The present invention relates to a method for outputting reliably predictable instruction sequences, comprising: tracking fetches of instruction sequences from memory; determining instruction sequences that exceed a threshold frequency of fetches to be a reliably predictable instruction sequence; identifying a branch instruction preceding the instruction sequences that exceed the threshold; storing the reliably predictable instruction sequence into a buffer; and outputting the reliably predictable instruction sequence from the buffer into the pipeline of the processor, in response to a subsequent access of the branch instruction.