Return Address Stack Rollback for Branch Mispredict Recovery

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Branch mispredictions in processor pipelines lead to performance penalties, particularly in RISC processors, due to the need to flush the return address stack (RAS) and restart execution, especially in nested function calls.

Innovation Solution

Implement a return address stack (RAS) with branch mispredict recovery by storing additional state information and using a branch execution unit to reconfigure the RAS upon incorrect predictions, allowing partial rollback without clearing the entire stack.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If branch misprediction occurs in traditional processor pipelines, then the pipeline must be flushed and execution restarted, but this causes significant performance penalties and time loss

Engineering Contradiction:
Improvebranch prediction accuracyVSAvoidmisprediction recovery time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The return address stack is segmented into multiple stacks (e.g., two stacks) that can be independently managed. When a misprediction occurs, only the affected stack segment needs to be rolled back rather than flushing the entire pipeline and restarting execution. This segmentation allows partial recovery, reducing the time loss associated with branch mispredictions while maintaining reliable branch prediction functionality.

Inventive Principle:
Principle #1Segmentation

2Reliability

If the return address stack is flushed upon branch misprediction, then incorrect predictions are corrected, but the entire stack is cleared causing performance hits especially in nested function calls

Engineering Contradiction:
Improvereturn address correctnessVSAvoidexecution throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

By dividing the return address stack into multiple independent stacks, the system can correct return address correctness issues in only the affected stack segment rather than clearing the entire stack. This maintains productivity by preserving valid return addresses in other stacks, especially benefiting nested function calls where only the innermost call may be affected by misprediction.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system discards only the incorrect return addresses in the affected stack segment upon misprediction detection, while recovering and preserving the correct return addresses in other stack segments. This selective discarding and recovering approach maintains both return address correctness and execution throughput by minimizing the loss of valid computational state.

Inventive Principle:
Principle #34Discarding and recovering

3Loss of time

If additional state information is stored in the return address stack, then misprediction recovery is improved, but the device complexity increases

Engineering Contradiction:
Improverecovery timeVSAvoidreturn address stack structure
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The additional state information is organized in a segmented manner corresponding to multiple stacks, where each stack maintains its own state information independently. This segmentation allows the system to improve recovery time by quickly identifying and rolling back only the affected stack segment's state, while the modular structure prevents excessive overall complexity by localizing the additional state management to discrete, manageable units.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS12547407B2Return address stack with branch mispredict recovery
Publication Date: 2026.02.10 AKEANA INC
  • US12547407B2 patent drawing
  • US12547407B2 patent drawing
  • US12547407B2 patent drawing

AI summary

Techniques for providing a return address stack with branch mispredict recovery are disclosed. A processor core is accessed. The processor core includes a return address stack (RAS), a local cache hierarchy, and branch prediction logic. RAS state information, including a write pointer, a read pointer, and a RAS count, is sent to a branch execution unit. One or more call instructions are detected in an instruction stream. The detecting generates a predicted return address for each of the one or more call instructions which are pushed on the RAS. The pushing is directed by the write pointer. One or more return instructions are recognized in the instruction stream. The write pointer and the read pointer for the RAS are updated, based on information from the branch execution unit. The predicted return address for each of the one or more return instructions is popped from the RAS.