Branch Target Buffer for Indirect Branch Prediction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing bytecode processing systems face inefficiencies in predicting the target address of indirect branches in dispatch loops, leading to increased processing time for repeated bytecodes.

Innovation Solution

A bytecode processing device and method utilizing a branch target buffer with a tag field, target address field, and operation code bit field, along with a fetch unit, extraction unit, search unit, and execution unit, to efficiently predict and store target addresses for indirect branches, reducing the need for repeated calculations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If traditional bytecode processing is used without pre-storing target addresses, then the system structure remains simple, but the processing time for repeated bytecodes increases and branch prediction accuracy decreases

Engineering Contradiction:
Improveprocessing time for repeated bytecodesVSAvoidsystem structure complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The patent implements a branch target buffer that pre-stores target addresses of indirect branches before they are executed. When an indirect branch is encountered, the system first checks the branch target buffer for a matching operation code, and if found, retrieves the pre-stored target address immediately. This preliminary storage and retrieval mechanism eliminates the need for repeated decoding and target address calculation, significantly reducing processing time for repeated bytecodes while maintaining a relatively simple system structure through targeted caching rather than comprehensive preprocessing.

Inventive Principle:
Principle #10Preliminary action

2Measurement precision

If target addresses are calculated by decoding bytecode each time, then the system requires full decoding capability, but the branch prediction accuracy decreases and processing speed slows down

Engineering Contradiction:
Improvebranch prediction accuracyVSAvoidbytecode processing speed
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The system performs preliminary decoding and target address calculation only once when encountering a new indirect branch operation code. The decoded operation code and its corresponding target address are then stored in the branch target buffer. Subsequent indirect branches with the same operation code can directly retrieve the pre-stored target address without repeating the decoding process, thereby maintaining high branch prediction accuracy while significantly improving bytecode processing speed.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

Instead of recalculating target addresses by decoding bytecode every time, the system creates a copy of the target address information and stores it in the branch target buffer associated with the operation code. This copied information can be quickly retrieved and used for subsequent identical operations, eliminating redundant decoding work and enhancing both prediction accuracy and processing efficiency.

Inventive Principle:
Principle #26Copying

3Measurement precision

If the branch target buffer stores all possible operation codes and target addresses, then prediction accuracy is maximized, but the buffer size and memory requirements increase significantly

Engineering Contradiction:
Improvebranch prediction accuracyVSAvoidbuffer size
Core Design Contradiction:
Measurement precisionVSQuantity of substance

Solution Approach 1:

The branch target buffer is designed to store only the specific operation codes and their corresponding target addresses that are actually encountered during program execution, rather than pre-populating the buffer with all possible operation codes. This localized storage approach focuses resources on the relevant subset of bytecode operations, achieving high prediction accuracy for actual program paths while keeping the buffer size proportional to the number of unique indirect branches encountered, not the total possible instruction space.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The system implements a branch target buffer with a practical, limited capacity that stores a partial set of operation code-target address mappings based on actual execution needs. Rather than attempting to store all possible mappings (excessive action), the buffer dynamically adapts to store only what is necessary for the current program's indirect branches, achieving sufficient prediction accuracy with minimal memory overhead through selective caching of frequently encountered branches.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS10732977B2Bytecode processing device and operation method thereof
Publication Date: 2020.08.04 SEOUL NATIONAL UNIVERSITY R&DB FOUNDATION
  • US10732977B2 patent drawing
  • US10732977B2 patent drawing
  • US10732977B2 patent drawing

AI summary

The bytecode processing device includes a branch target buffer including a tag field, a target address field corresponding to the tag field and an operation code bit field for representing whether a value stored in the tag field is an operation code, a bytecode fetch unit configured to fetch a bytecode including an operation code, an operation code extraction unit configured to extract the operation code from the bytecode, a branch target buffer search unit configured to perform a search to determine whether the extracted operation code exists in the tag field of the branch target buffer, and if the operation code exists in the tag field, extract a target address corresponding to the operation code from the target address field, and a bytecode execution unit configured to execute the bytecode by branching to the target address.