Variable Branch Delay Slots and Prediction in Pipelined Architectures

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional techniques for dealing with idle cycles in pipelined processors, such as branch delay slots and branch prediction, fall short in effectively managing pipeline latency, leading to performance losses due to unfilled slots and prediction errors.

Innovation Solution

A hybrid approach that combines variable branch delay slots with advanced branch prediction, where the prediction is made from the perspective of the last instruction in the branch delay slots, allowing for dynamic adjustment of branch delay slot size and reducing the need for filler NOPs, and utilizing a prediction stage to improve prediction accuracy.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If branch delay slots are used to fill pipeline latency, then pipeline utilization is improved, but performance is worsened due to unfilled slots requiring filler NOPs

Engineering Contradiction:
Improvepipeline utilizationVSAvoidperformance loss
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by making branch predictions in advance (in the instruction fetch stage) before the branch condition is actually evaluated. This allows the pipeline to pre-fetch instructions from the predicted target address, so that when the branch is resolved, the pipeline is already stocked with correct instructions, eliminating idle cycles and performance loss.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent implements dynamics by allowing the branch delay slot size to vary dynamically rather than being fixed. The system can adjust the number of delay slots based on the specific branch instruction and prediction outcomes, optimizing pipeline utilization for different scenarios without requiring filler NOPs for unfilled slots.

Inventive Principle:
Principle #15Dynamics

2Loss of time

If branch prediction is used to reduce idle cycles, then pipeline continuity is improved, but accuracy is worsened due to prediction errors

Engineering Contradiction:
Improveidle cyclesVSAvoidprediction accuracy
Core Design Contradiction:
Loss of timeVSReliability

Solution Approach 1:

The patent applies partial action by making predictions with available information even when complete accuracy cannot be guaranteed. Rather than waiting for certain knowledge (which would cause idle cycles), the system makes the best possible prediction with current data and accepts that some errors may occur, balancing pipeline continuity with prediction reliability.

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

The patent implements feedback by using the actually executed branch instruction to update and refine prediction mechanisms. The system learns from past branch outcomes and uses this feedback to improve future predictions, gradually increasing accuracy while maintaining pipeline continuity.

Inventive Principle:
Principle #23Feedback

3Device complexity

If fixed branch delay slot size is used, then implementation is simplified, but adaptability is worsened due to inability to optimize for different branch scenarios

Engineering Contradiction:
Improveimplementation complexityVSAvoidbranch optimization
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The patent applies dynamics by making the branch delay slot size variable rather than fixed. The system can dynamically adjust the number of delay slots based on the specific branch instruction characteristics and prediction outcomes, allowing optimization for different branch scenarios while managing complexity through systematic control mechanisms.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent implements parameter changes by allowing the branch delay slot size parameter to vary depending on the branch situation. Rather than being a fixed hardware parameter, it can be adjusted based on prediction needs and branch characteristics, providing adaptability without requiring completely different implementation approaches for different scenarios.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS9535701B2Efficient use of branch delay slots and branch prediction in pipelined computer architectures
Publication Date: 2017.01.03 TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
  • US9535701B2 patent drawing
  • US9535701B2 patent drawing
  • US9535701B2 patent drawing

AI summary

A pipelined processor selects an instruction fetch mode from a number of fetch modes including an executed branch fetch mode, a predicted fetch mode, and a sequential fetch mode. Each branch instruction is associated with branch delay slots, the size of which can be greater than or equal to zero, and can vary from one branch instance to another. Branch prediction is used to fetch instructions, with the source of information for predictions deriving from a last instruction in the branch delay slots. When a prediction error occurs, the executed branch fetch mode uses an address from branch instruction evaluation to fetch a next instruction.