Runtime Branch Trace Merging for Processor Pipeline Efficiency

Solution Overview

Problem

Modern processors face performance degradation due to branch misprediction, which existing techniques have not adequately addressed, especially in long instruction pipelines where misprediction can cause significant latency and inefficiency.

Innovation Solution

A processor method that identifies conditional blocks with branch instructions diverging into multiple flow-control traces and creates a logically equivalent alternative block at runtime, merging these traces into a single flow-control trace, thereby eliminating the impact of misprediction by processing the alternative block instead.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If branch prediction mechanisms are used to improve processor performance, then execution speed is improved, but branch misprediction causes significant degradation in latency and efficiency

Engineering Contradiction:
Core Design Contradiction:
SpeedVSReliability

Solution Approach 1:

The patent creates a copy of the instruction block with modified flow control logic. The alternative block replicates the functional behavior but eliminates conditional branches by using unconditional jumps and register conditional moves, thus copying the essential functionality while removing the source of misprediction errors

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The patent changes the control flow parameters from conditional branches to unconditional jumps combined with data-level conditionality. By transforming the control mechanism from flow-based conditionality to data-based conditionality (using register conditional moves), the system maintains correctness while eliminating branch prediction dependencies

Inventive Principle:
Principle #35Parameter changes

2Ease of operation

If conditional branches are used to implement control flow, then program logic is expressed clearly, but misprediction causes performance degradation and instruction flushing

Engineering Contradiction:
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The patent substitutes the mechanical control flow mechanism (conditional branches that require pipeline flushing) with a data-level mechanism (register conditional moves). This replacement eliminates the need for pipeline interruption while maintaining the same control logic, as conditions are evaluated at the data level rather than the control flow level

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

3Adaptability or versatility

If multiple flow-control traces are created by conditional branches, then different execution paths are enabled, but trace convergence requires complex branch handling and increases misprediction risk

Engineering Contradiction:
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent merges multiple flow control traces into a single unified trace by eliminating conditional branches. All execution paths converge through unconditional jump instructions and register conditional moves, creating a single linear trace that maintains the logical separation of execution paths without requiring complex branch prediction and handling mechanisms

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS10013255B2Hardware-based run-time mitigation of conditional branches
Publication Date: 2018.07.03
  • US10013255B2 patent drawing
  • US10013255B2 patent drawing
  • US10013255B2 patent drawing

AI summary

A method includes, in a processor, processing a sequence of pre-compiled instructions by an instruction pipeline of the processor. A first block of instructions is identified in the instructions flowing via the pipeline. The first block includes a conditional branch instruction that conditionally diverges execution of the instructions into at least first and second flow-control traces that differ from one another in multiple instructions and converge at a given instruction that is again common to the first and second flow-control traces. A second block of instructions, which is logically equivalent to the first block but replaces the first and second flow-control traces by a single flow-control trace, is created by the processor at runtime. The pipeline is caused to execute the second block instead of the first block.