Branch Prediction Module Hashing Execution Paths

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current branch prediction methods in processors are inefficient for indirect jumps, as they do not accurately predict the execution path, leading to pipeline stalls and decreased performance due to the inability to fetch instructions before conditional branch evaluations.

Innovation Solution

A branch prediction module that receives branch addresses and instruction addresses, creates an execution path identifier, and searches a prediction table to anticipate the target address for indirect jumps, allowing for informed fetching of instructions before execution.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional branch prediction methods are used for indirect jumps, then the branch prediction unit can operate with simple logic, but the prediction accuracy deteriorates leading to pipeline stalls

Engineering Contradiction:
Improvebranch prediction accuracyVSAvoidbranch prediction logic complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The branch prediction problem is segmented into two parts: a small hash table for storing execution path identifiers and their corresponding target addresses, and a larger prediction table for storing detailed branch prediction information. This segmentation allows the system to achieve high accuracy for indirect jumps without requiring a completely complex prediction logic for all branch types.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

An execution path identifier serves as an intermediary between the branch instruction and the prediction table. The identifier is generated by hashing the branch address and previous instruction address, then used to index into the prediction table. This intermediary enables accurate prediction of indirect jumps by capturing the execution context without requiring direct complex analysis of the branch target.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Speed

If branch prediction is performed without accurate execution path identification, then the processing speed can be maintained, but pipeline stalls occur due to incorrect predictions

Engineering Contradiction:
Improveinstruction fetching speedVSAvoidpipeline stall time
Core Design Contradiction:
SpeedVSLoss of time

Solution Approach 1:

The system performs preliminary action by pre-computing and storing execution path identifiers in a hash table during instruction execution. When an indirect jump is encountered, the prediction table is quickly searched using the pre-computed identifier, allowing the branch prediction to be made rapidly without stalling the pipeline. The actual branch resolution is deferred until the prediction is made, maintaining instruction fetching speed.

Inventive Principle:
Principle #10Preliminary action

3Reliability

If a comprehensive branch prediction table is used for all branch types, then prediction accuracy can be maintained, but the memory access time increases

Engineering Contradiction:
Improveprediction accuracyVSAvoidmemory access time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The prediction system is segmented into a small hash table that stores execution path identifiers and a larger prediction table that stores detailed branch information. The hash table requires minimal memory access time due to its small size, while the prediction table can be larger and potentially cached. This segmentation allows the system to maintain prediction accuracy without excessive memory access time for the critical path of indirect jump prediction.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS9652245B2Branch prediction for indirect jumps by hashing current and previous branch instruction addresses
Publication Date: 2017.05.16 LENOVO GLOBAL TECHNOLOGIES SWITZERLAND INTERNATIONAL GMBH
  • US9652245B2 patent drawing
  • US9652245B2 patent drawing
  • US9652245B2 patent drawing

AI summary

Branch prediction for indirect jumps, including: receiving, by a branch prediction module, a branch address for each of a plurality of executed branch instructions; receiving, by the branch prediction module, an instruction address of a current branch instruction; creating, by the branch prediction module, an execution path identifier in dependence upon the branch address for each of the plurality of executed branch instructions and the instruction address of the current branch instruction; and searching, by the branch prediction module, a branch prediction table for an entry that matches the execution path identifier.