Prefetch Prediction Vector for Instruction Cache Misses

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current instruction prefetching methods in computer processors are inefficient as they often cause cache pollution by prefetching unused lines, leading to increased memory bandwidth requirements and reduced accuracy in predicting which instructions will be executed next.

Innovation Solution

The method involves retrieving a prefetch prediction vector upon an instruction cache miss, which indicates contiguous instruction cache lines likely to be executed, and prefetching these lines from backing memory into the instruction cache, rather than simply fetching the next n cache lines, thereby improving prefetching accuracy.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If traditional prefetching methods fetch the next n cache lines, then the instruction cache is populated with future instructions, but this causes cache pollution by prefetching unused lines and increases memory bandwidth requirements

Engineering Contradiction:
Improveinstruction fetch efficiencyVSAvoidmemory bandwidth consumption
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The patent changes the prefetching parameter from a fixed number of cache lines (next n lines) to a dynamically determined set of cache lines based on branch prediction outcomes and instruction flow analysis. The prefetching unit now uses branch prediction vectors and instruction cache miss information to adaptively select which cache lines to prefetch, rather than using a static prefetch distance parameter.

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

The patent implements feedback mechanisms where the prefetching unit receives information about actual branch outcomes and instruction cache misses to refine future prefetching decisions. The system uses feedback from branch prediction accuracy and actual instruction execution patterns to adjust prefetching behavior, reducing cache pollution from incorrectly predicted branches.

Inventive Principle:
Principle #23Feedback

2Productivity

If traditional prefetching methods fetch the next n cache lines, then the instruction cache is populated with future instructions, but this reduces accuracy in predicting which instructions will be executed next

Engineering Contradiction:
Improveprefetching effectivenessVSAvoidprefetch prediction accuracy
Core Design Contradiction:
ProductivityVSMeasurement precision

Solution Approach 1:

The patent segments the prefetching process into multiple independent prediction mechanisms: branch prediction for control flow, instruction cache miss analysis for actual execution patterns, and separate prefetching decisions for different cache line sets. This segmentation allows each component to specialize in its specific prediction task, improving overall accuracy compared to a monolithic prefetching approach.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary branch prediction and instruction flow analysis before actual instruction execution to pre-determine which cache lines are most likely to be needed. The system uses preliminary information about branch outcomes and instruction cache behavior to make informed prefetching decisions in advance, improving prediction accuracy by acting on early indicators rather than waiting for actual execution patterns.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10175987B2Instruction prefetching in a computer processor using a prefetch prediction vector
Publication Date: 2019.01.08 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US10175987B2 patent drawing
  • US10175987B2 patent drawing
  • US10175987B2 patent drawing

AI summary

Instruction prefetching in a computer processor includes, upon a miss in an instruction cache for an instruction cache line: retrieving, for the instruction cache line, a prefetch prediction vector, the prefetch prediction vector representing one or more cache lines of a set of contiguous instruction cache lines following the instruction cache line to prefetch from backing memory; and prefetching, from backing memory into the instruction cache, the instruction cache lines indicated by the prefetch prediction vector.