Branch Target Buffer Prediction for Pipeline Flush Reduction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In existing pipelined processor architectures, branch instructions cause inefficiency by flushing subsequent instructions when a branch is taken, resulting in wasted clock cycles.

Innovation Solution

A method and system for predicting branch instructions by matching the program counter (PC) value of an incoming instruction with historical PC values stored in a branch target buffer, allowing for early determination of branch targets and reducing the need for clock cycle wastage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If branch instructions are executed in a pipelined architecture, then instruction execution efficiency is improved through parallel processing, but clock cycles are wasted when branches are taken requiring instruction flushing

Engineering Contradiction:
Improveinstruction execution efficiencyVSAvoidwasted clock cycles
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by performing branch prediction before the branch instruction is fully executed. The system checks PC values in advance against historical branch patterns, predicts the branch target address beforehand, and prepares the pipeline for the target instructions before the branch is actually taken. This eliminates the need to flush instructions later, thus preventing wasted clock cycles while maintaining pipeline efficiency

Inventive Principle:
Principle #10Preliminary action

2Reliability

If the processor flushes next instructions when a branch is taken, then correct execution sequence is maintained, but one clock cycle is wasted

Engineering Contradiction:
Improveexecution sequence correctnessVSAvoidwasted clock cycle
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs preliminary branch prediction by checking the current PC value against stored historical PC values before executing the branch instruction. The branch target address is determined in advance, allowing the processor to pre-fetch and prepare target instructions while maintaining correct execution sequence through validation mechanisms

Inventive Principle:
Principle #10Preliminary action

3Productivity

If branch target address is obtained beforehand, then pipeline flushing is avoided, but additional hardware structures are required

Engineering Contradiction:
Improvepipeline efficiencyVSAvoidhardware structure complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent uses copying by creating a simplified copy of historical branch information in the branch target buffer. Instead of complex prediction algorithms, the system stores historical PC values and their corresponding target addresses, then copies and compares these values during branch prediction. This approach achieves accurate prediction with relatively simple hardware structures

Inventive Principle:
Principle #26Copying

Data Source

PatentUS12536021B2Method and system for predicting branch instructions
Publication Date: 2026.01.27 REALTEK SEMICON CORP
  • US12536021B2 patent drawing
  • US12536021B2 patent drawing
  • US12536021B2 patent drawing

AI summary

A method and a system for predicting branch instructions are provided. The method includes reading a branch target buffer that stores a plurality of reference program counter (PC) values and a plurality of prediction target addresses. The reference PC values include plurality of history PC values of a plurality of history instructions that are executed before the branch instructions, and the plurality of prediction target addresses corresponding to the plurality of history PC values are a plurality of target addresses of the branch instructions, respectively. The method then checks that a PC value of a first instruction that enters an instruction fetch stage matches with a history PC value of a history instruction executed before a branch instruction, for obtaining beforehand a branch target address of a second instruction that is executed after the first instruction.