Fast Conditional Branch Resolution in Pipelined Microprocessors

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional microprocessors face inefficiencies in executing conditional branch instructions due to reliance on branch prediction, leading to increased execution time and misprediction penalties, especially in deeply pipelined and out-of-order execution architectures.

Innovation Solution

Incorporating a fast conditional branch (FCB) instruction that allows the fetch unit to non-selectively correctly resolve the branch within the pipeline using a static branch condition state, eliminating the need for execution unit resolution and prediction, thereby avoiding misprediction penalties.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If conventional conditional branch instructions are resolved by the execution unit in a pipelined microprocessor, then the branch condition can be accurately evaluated, but the execution time increases significantly due to pipeline flushing and misprediction penalties

Engineering Contradiction:
Improvebranch resolution accuracyVSAvoidbranch execution time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the branch resolution function from the execution unit and places it in the fetch unit. This allows conditional branch instructions to be resolved early in the pipeline during the fetch stage, before instructions are dispatched to execution units. The fetch unit evaluates branch conditions using previously computed results available in register files, enabling accurate branch prediction without requiring execution unit involvement and avoiding pipeline flushes.

Inventive Principle:
Principle #1Segmentation

2Measurement precision

If the microprocessor waits for execution units to produce results for branch condition state, then accurate branch resolution is achieved, but instructions fetched and processed in the pipeline must be flushed, increasing execution time

Engineering Contradiction:
Improvebranch condition evaluation accuracyVSAvoidinstruction throughput
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The patent implements preliminary action by having the fetch unit proactively resolve conditional branch instructions using branch condition states that are already available from previously executed instructions. Instead of waiting for the execution unit to produce results, the fetch unit uses previously computed values stored in register files to evaluate branch conditions early in the pipeline, maintaining accuracy while preventing pipeline flushes and preserving instruction throughput.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If deeply pipelined microprocessors use conventional branch resolution, then more instructions can be processed in parallel, but misprediction penalties increase due to flushing erroneously fetched instructions

Engineering Contradiction:
Improveinstruction parallelismVSAvoidmisprediction penalty
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent implements feedback by having the fetch unit continuously monitor branch condition states and resolve conditional branch instructions based on current processor state. This feedback mechanism allows the fetch unit to accurately determine branch outcomes using previously computed results, enabling the deeply pipelined processor to maintain high instruction parallelism without incurring misprediction penalties, as branches are resolved correctly before instructions are fetched.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS8635437B2Pipelined microprocessor with fast conditional branch instructions based on static exception state
Publication Date: 2014.01.21 VIA TECH INC
  • US8635437B2 patent drawing
  • US8635437B2 patent drawing
  • US8635437B2 patent drawing

AI summary

A microprocessor includes a memory that stores an exception handler to handle an exception condition. The exception handler is a non-user program private to the microprocessor and includes a conditional branch instruction. A first fetch unit fetches instructions of a user program that includes a user program instruction that causes the exception condition. An execution unit executes the user program instructions fetched by the first fetch unit and executes instructions of the exception handler. The execution unit also saves a state in response to detecting the exception condition caused by the user program instruction. A second fetch unit fetches the exception handler instructions from the memory and resolves the conditional branch instruction based on the saved state without sending the conditional branch instruction to the execution unit to resolve the conditional branch instruction.