Fast Conditional Branch Resolution in Pipelined Microprocessors
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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
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.
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
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.
Data Source
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.


