Branch Mis-prediction Buffer for Zero Penalty Instruction Retrieval

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional branch prediction methods suffer from significant time delays and computational penalties due to mis-predictions, as they discard mis-predicted instructions, leading to inefficient retrieval of correct instructions from program memory during subsequent branch mis-predictions.

Innovation Solution

A branch mis-prediction buffer is introduced to store correct instructions that were not predicted during previous mis-predictions, allowing for zero mis-prediction penalty by retrieving them directly from the buffer during subsequent mis-predictions, rather than from program memory.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If branch prediction is used to reduce time delays, then instruction retrieval speed is improved, but mis-prediction penalties increase computational cycles

Engineering Contradiction:
Improveinstruction retrieval speedVSAvoidmis-prediction penalty
Core Design Contradiction:
SpeedVSLoss of time

Solution Approach 1:

The branch mis-prediction buffer pre-stores instructions that were incorrectly predicted during previous branch mis-predictions. When a mis-prediction occurs, the system checks the buffer first before retrieving from program memory, effectively performing the retrieval action in advance for future mis-predictions of the same branch pattern.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system creates a copy of mis-predicted instructions and stores them in a separate buffer structure. This copy mechanism allows the system to quickly retrieve instruction copies from the buffer without accessing the original program memory, eliminating the time penalty associated with re-fetching the same mis-predicted instructions.

Inventive Principle:
Principle #26Copying

2Productivity

If mis-predicted instructions are discarded, then pipeline efficiency is maintained, but computational cycles are wasted retrieving correct instructions from program memory

Engineering Contradiction:
Improvepipeline efficiencyVSAvoidcomputational cycles for instruction retrieval
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

Instead of completely discarding mis-predicted instructions, the system recovers valuable information by identifying and storing the correct instructions that were missed during mis-predictions. The buffer recovers these instructions for future use, transforming what would be wasted retrieval cycles into productive pre-cached data.

Inventive Principle:
Principle #34Discarding and recovering

3Measurement precision

If dynamic branch prediction is used, then prediction accuracy improves for correlated branches, but it provides no benefit for algorithms with no branch correlation

Engineering Contradiction:
Improveprediction accuracyVSAvoidapplicability to different algorithms
Core Design Contradiction:
Measurement precisionVSAdaptability or versatility

Solution Approach 1:

The branch mis-prediction buffer provides a universal solution that benefits all branch prediction scenarios regardless of algorithm type. Whether the branch predictor is static or dynamic, correlated or uncorrelated, the buffer captures and stores mis-predicted instructions from any source, making the system adaptable to different algorithm characteristics without requiring algorithm-specific optimization.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS10409605B2System and method for using a branch mis-prediction buffer
Publication Date: 2019.09.10 CEVA TECH LTD
  • US10409605B2 patent drawing
  • US10409605B2 patent drawing
  • US10409605B2 patent drawing

AI summary

A system and method is provided for executing a conditional branch instruction. The system and method may include a branch predictor to predict one or more instructions that depend on the conditional branch instruction and a branch mis-prediction buffer to store correct instructions that were not predicted by the branch predictor during a branch mis-prediction.