Translation Address Cache for Indirect Branch Handling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing approaches to translating architectural-level instructions between instruction set architectures face challenges with indirectly-branched processes, as it is difficult to determine the target of an indirect branch, leading to potential microprocessor stalls and inefficiencies.

Innovation Solution

The method involves hashing the address of an instruction to determine if an alternate version exists, and if so, aborting the retrieval of the original instruction to execute the alternate version, which provides optimized performance by avoiding decode operations and utilizing a translation address cache to store native translations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If chained software optimizations are used to pass control between optimizations, then execution efficiency is improved, but the system cannot handle indirectly-branched processes effectively

Engineering Contradiction:
Improveexecution efficiencyVSAvoidhandling of indirectly-branched processes
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent pre-calculates and stores multiple possible target addresses in the translation address cache before indirect branching occurs. When an indirect branch is encountered, the system can immediately retrieve the correct target address from the pre-computed cache entries, avoiding stalls and maintaining both high execution efficiency and proper handling of indirect branches.

Inventive Principle:
Principle #10Preliminary action

2Adaptability or versatility

If the target of an indirect branch is determined dynamically, then adaptability is improved, but processing time increases causing microprocessor stalls

Engineering Contradiction:
Improvedynamic branch target determinationVSAvoidprocessing time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The system pre-computes and stores multiple possible indirect branch target addresses in the translation address cache during instruction translation or cache fill operations. When an indirect branch is executed, the correct target is already available in the cache, eliminating dynamic computation delays and preventing microprocessor stalls while maintaining adaptability to different branch targets.

Inventive Principle:
Principle #10Preliminary action

3Speed

If translation address cache is used to store native translations, then retrieval speed is improved, but memory usage increases

Engineering Contradiction:
Improveretrieval speedVSAvoidmemory usage
Core Design Contradiction:
SpeedVSQuantity of substance

Solution Approach 1:

The patent extracts and stores only the essential translation address information needed for indirect branching in the translation address cache, rather than storing complete translation contexts. This selective extraction maintains fast retrieval speed while minimizing the memory footprint of the cache structure.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS10146545B2Translation address cache for a microprocessor
Publication Date: 2018.12.04 NVIDIA CORP
  • US10146545B2 patent drawing
  • US10146545B2 patent drawing
  • US10146545B2 patent drawing

AI summary

Embodiments related to fetching instructions and alternate versions achieving the same functionality as the instructions from an instruction cache included in a microprocessor are provided. In one example, a method is provided, comprising, at an example microprocessor, fetching an instruction from an instruction cache. The example method also includes hashing an address for the instruction to determine whether an alternate version of the instruction which achieves the same functionality as the instruction exists. The example method further includes, if hashing results in a determination that such an alternate version exists, aborting fetching of the instruction and retrieving and executing the alternate version.