Branch Prediction Latency Reduction via Surprise-Guessed-Branch Detection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Deep pipelining in processors leads to significant performance losses due to branch prediction latency, where incorrect predictions cause wasted delay and reduced pipeline speed, as existing methods either stall instruction fetch or restart branch prediction logic, both of which are detrimental to performance.

Innovation Solution

The method involves identifying surprise-guessed-taken (SGT) and surprise-guessed-not-taken (SGNT) branches and generating signals to block refetch signals, allowing instruction delivery to continue along the predicted path, thereby avoiding unnecessary restarts of branch prediction logic and reducing latency penalties.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If branch prediction logic is restarted upon misprediction, then prediction accuracy is improved, but pipeline latency increases

Engineering Contradiction:
Improvebranch prediction accuracyVSAvoidpipeline latency
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent implements a start-up counter that预先 (in advance) detects when branch prediction logic needs to be restarted and initiates the restart process before misprediction actually occurs. This preliminary detection and initiation of restart actions reduces the overall latency by avoiding delayed responses to mispredictions.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent dynamically adjusts the behavior of the branch prediction system by conditionally restarting prediction logic based on detected mispredictions and start-up conditions. The system transitions between different operational states (normal operation vs. restart) based on runtime conditions, optimizing the balance between accuracy and latency.

Inventive Principle:
Principle #15Dynamics

2Reliability

If instruction fetch is stalled to allow prediction to catch up, then prediction accuracy is improved, but instruction fetch performance deteriorates

Engineering Contradiction:
Improvebranch prediction accuracyVSAvoidinstruction fetch speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent applies partial stalling by only halting instruction fetch when absolutely necessary (when start-up conditions are met and misprediction is detected). In normal operation, instruction fetch continues without stalling, maintaining high productivity. The stalling action is applied selectively and minimally to achieve the necessary prediction accuracy.

Inventive Principle:
Principle #16Partial or excessive action

3Speed

If deeper pipelines are used to increase instruction-level parallelism, then processing speed is improved, but susceptibility to performance loss from branch mispredictions increases

Engineering Contradiction:
Improveinstruction processing speedVSAvoidperformance loss from misprediction
Core Design Contradiction:
SpeedVSLoss of time

Solution Approach 1:

The patent implements a feedback mechanism where mispredictions are detected and fed back to the branch prediction logic, triggering a restart of the prediction system. This closed-loop feedback ensures that deeper pipelines maintain high accuracy by automatically correcting prediction errors, thereby reducing performance loss from mispredictions while preserving the speed benefits of deep pipelining.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS7822954B2Methods, systems, and computer program products for recovering from branch prediction latency
Publication Date: 2010.10.26 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US7822954B2 patent drawing
  • US7822954B2 patent drawing
  • US7822954B2 patent drawing

AI summary

A branch prediction algorithm is used to generate a prediction of whether or not a branch will be taken. One or more instructions are fetched such that, for each of the fetched instructions, the prediction initiates a fetch of an instruction at a predicted target of the branch. A test is performed to ascertain whether or not the prediction was generated late relative to the fetched instructions, so that if the branch is later detected as mispredicted, that detection can be correlated to the late prediction. When the prediction is generated late relative to the fetched instructions, a latent prediction is selected by utilizing a fetching initiated by the latent prediction such that a new fetch is not started.