Microprocessor Branch Target Buffer Hotness Filtering

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional microprocessor designs often result in inefficient use of micro-op caches due to an 'always allocate' policy, which can replace more frequently used micro-ops with less frequently used ones, leading to reduced cache hit rates and increased power consumption.

Innovation Solution

Implementing a fetch block hotness counter in the branch target buffer to filter allocations into the micro-op cache based on the usage history of fetch blocks, ensuring that only 'hot' blocks with a high predicted presence in the program stream are allocated, thereby avoiding the replacement of more useful micro-ops.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If an 'always allocate' policy is used for micro-op cache entries, then the cache can store more micro-ops, but frequently used micro-ops may be replaced by less frequently used ones, reducing cache hit rate

Engineering Contradiction:
Improvenumber of micro-ops stored in cacheVSAvoidcache hit rate
Core Design Contradiction:
Quantity of substanceVSReliability

Solution Approach 1:

The patent changes the parameter of allocation policy from unconditional to conditional based on fetch block hotness. By introducing a hotness counter that tracks the frequency of fetch block execution, the system dynamically adjusts which micro-ops are allocated to cache entries, ensuring that frequently executed micro-ops are prioritized for caching while limiting the cache to a manageable size.

Inventive Principle:
Principle #35Parameter changes

2Quantity of substance

If an 'always allocate' policy is used for micro-op cache entries, then more micro-ops can be cached, but power consumption increases due to unnecessary caching of infrequently used micro-ops

Engineering Contradiction:
Improvenumber of micro-ops stored in cacheVSAvoidpower consumption
Core Design Contradiction:
Quantity of substanceVSUse of energy by moving object

Solution Approach 1:

The patent introduces a hotness threshold parameter that controls the condition for cache allocation. Only fetch blocks whose hotness counter exceeds this threshold trigger micro-op cache allocation, thereby reducing the number of caching operations for infrequently used micro-ops and lowering the associated power consumption while maintaining effective caching of hot micro-ops.

Inventive Principle:
Principle #35Parameter changes

3Reliability

If fetch block hotness counters are added to the branch target buffer, then selective filtering of macro-op cache allocations is enabled, but the device complexity increases

Engineering Contradiction:
Improvecache hit rateVSAvoidstructure of branch target buffer
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent makes the branch target buffer multi-functional by having it serve both its traditional role of storing branch target information and the additional function of tracking fetch block hotness through counters. This consolidation avoids the need for a separate tracking structure, reducing overall device complexity while enabling selective filtering of macro-op cache allocations based on hotness.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS12253951B1Microprocessor with branch target buffer whose entries include fetch block hotness counters used for selective filtering of macro-op cache allocations
Publication Date: 2025.03.18 VENTANA MICRO SYSTEMS INC
  • US12253951B1 patent drawing
  • US12253951B1 patent drawing
  • US12253951B1 patent drawing

AI summary

A microprocessor includes execution units that execute macro-operations (MOPs), a decode unit that decodes architectural instructions into MOPs, an instruction fetch unit (IFU) having an instruction cache that caches architectural instructions and a macro-operation cache (MOC) that caches MOPs into which the architectural instructions are decoded. A prediction unit (PRU) predicts a series of fetch blocks (FBs) in a program instruction stream to be fetched by the IFU from the MOC if hit or from the instruction cache otherwise. A branch target buffer (BTB) caches information about previously fetched and decoded FBs. A counter of each BTB entry is incremented when the entry predicts the associated FB is present again. For each FB in the series, the PRU indicates whether the counter has exceeded a threshold for use deciding whether to allocate the MOPs into the MOC in response to an instance of decoding the instructions into the MOPs.