Microprocessor Branch Prediction Unit for Loop Type Classification

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current microprocessors face challenges in efficiently predicting and executing loops of varying sizes, leading to high power consumption and complex design, especially in applications like AI and machine learning where loops can iterate hundreds or thousands of times.

Innovation Solution

A microprocessor design that implements a branch prediction unit using basic block branch prediction, with different loop types (tiny, small, large, extra-large) managed through various queues (instruction tag queue, instruction cache queue, instruction decode queue, and branch prediction queue), allowing for accurate prediction and efficient handling of nested loops.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of energy

If loops are fetched repeatedly from the instruction cache, then loop execution is maintained, but power consumption increases significantly

Engineering Contradiction:
Improvepower consumptionVSAvoidloop execution efficiency
Core Design Contradiction:
Loss of energyVSProductivity

Solution Approach 1:

The patent performs preliminary classification of loop types (tiny, small, large, extra-large) and pre-determines the appropriate queue for each loop type. By categorizing loops before execution and storing them in dedicated queues with appropriate sizes, the system avoids repeated cache fetches and prepares instructions for efficient iterative execution, thereby reducing power consumption while maintaining execution efficiency.

Inventive Principle:
Principle #10Preliminary action

2Device complexity

If different loop types are handled with a unified approach, then design is simpler, but prediction accuracy and performance decrease

Engineering Contradiction:
Improvedesign complexityVSAvoidprediction accuracy
Core Design Contradiction:
Device complexityVSReliability

Solution Approach 1:

The patent segments the instruction queue into multiple specialized queues (tiny loop queue, small loop queue, large loop queue, extra-large loop queue) based on loop size characteristics. Each queue is optimized for specific loop types, enabling accurate prediction and efficient handling of different loop categories while maintaining a structured and manageable design through clear segmentation criteria.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies local quality by assigning different queue sizes and characteristics to different loop types. Each queue is locally optimized for its specific loop category, with tiny loops using a compact queue and extra-large loops using a larger queue, thereby achieving high prediction accuracy for each loop type while maintaining overall design coherence through consistent classification rules.

Inventive Principle:
Principle #3Local quality

3Adaptability or versatility

If the instruction cache queue size is increased to accommodate larger loops, then more loop types can be handled, but device complexity and power consumption increase

Engineering Contradiction:
Improveloop size accommodationVSAvoidqueue management complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent divides the instruction storage into multiple segmented queues with different capacities (tiny, small, large, extra-large loop queues). This segmentation allows the system to accommodate various loop sizes without requiring a single large cache, thereby maintaining adaptability while reducing overall device complexity and power consumption through targeted, size-appropriate queue allocation.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS20240338220A1Apparatus and method for implementing many different loop types in a microprocessor
Publication Date: 2024.10.10 SIMPLEX MICRO INC
  • US20240338220A1 patent drawing
  • US20240338220A1 patent drawing
  • US20240338220A1 patent drawing

AI summary

A processor includes a branch execution unit to detect different loop types based on the number of instructions in the loop and generates a predicted loop count to write to an entry of a branch target buffer (BTB). The different detected loop types are executed in a plurality of instruction queues in the processor depending on the loop type, which is a function of the loop size.