IP Library › Granted Patent US 9,811,341
Granted Patent B2
US 9,811,341 · App. 13/995,649 · Granted Nov 7, 2017

Managed instruction cache prefetching

Inventors: Kyriakos A. Stavrou (Barcelona, ES); Enric Gibert Codina (Barcelona, ES); Josep M. Codina (Hospitalet de Llobregat, ES); Crispin Gomez Requena (Valencia, ES); Antonio Gonzalez (Barcelona, ES); Mirem Hyuseinova (Barcelona, ES); Christos E. Kotselidis (Linz, AT); Fernando Latorre (Barcelona, ES); Pedro Lopez (Molins de Rei, ES); Marc Lupon (Barcelona, ES); Carlos Madriles Gimeno (Barcelona, ES); Grigorios Magklis (Barcelona, ES); Pedro Marcuello (Barcelona, ES); Alejandro Martinez Vicente (Barcelona, ES); Raul Martinez (Barcelona, ES); Daniel Ortega (Barcelona, ES); Demos Pavlou (Barcelona, ES); Georgios Tournavitis (Barcelona, ES); Polychronis Xekalakis (Barcelona, ES)
Assignee: Intel Corporation
G06F9/3804G06F9/3017G06F9/30047G06F9/3802G06F9/3806G06F9/3848G06F12/0862G06F2212/452
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,811,341
App. No.
13/995,649
Granted
Nov 7, 2017
Kind
B2
Abstract

Disclosed is an apparatus and method to manage instruction cache prefetching from an instruction cache. A processor may comprise: a prefetch engine; a branch prediction engine to predict the outcome of a branch; and dynamic optimizer. The dynamic optimizer may be used to control: identifying common instruction cache misses and inserting a prefetch instruction from the prefetch engine to the instruction cache.

Claims (29)

1. A method to manage instruction cache prefetching from an instruction cache comprising:

storing information about instruction cache misses, wherein the information includes an instruction cache line address, branch target characteristics including a type of branch indicator, the confidence of the prediction, and a branch address;

identifying common instruction cache misses; predicting the outcome of a branch and providing a confidence of the prediction;

for an indirect branch, inserting, regardless of the confidence, a prefetch instruction from a prefetch engine to the instruction cache; and

for a direct branch, inserting the prefetch instruction from the prefetch engine to the instruction cache is based upon whether the taken branch had a strong prediction or a weak prediction and the prefetch instruction is executed or not executed dependent upon the confidence of the prediction.

2. A processor to manage instruction cache prefetching from an instruction cache comprising:

a prefetch engine;

a branch prediction engine to predict the outcome of a branch and provide a confidence of the prediction; and

a dynamic optimizer to control:

storing information about cache misses, wherein the information includes an instruction cache line address, branch target characteristics including a type of branch indicator, the confidence of the prediction, and a branch address;

identifying common instruction cache misses;

for an indirect branch, to insert, regardless of the confidence, a prefetch instruction from the prefetch engine to the instruction cache; and

for a direct branch, to insert a prefetch instruction from the prefetch engine to the instruction cache is based upon whether the taken branch had a strong prediction or a weak prediction and the prefetch instruction is executed or not executed dependent upon the confidence of the prediction.

3. A computer system comprising:

a memory control hub coupled to a memory; and

a processor to manage instruction cache prefetching comprising:

a prefetch engine; a branch prediction engine to predict the outcome of a branch and provide a confidence of the prediction; and

a dynamic optimizer to control:

storing information about cache misses, wherein the information includes an instruction cache line address, branch target characteristics characteristics including a type of branch indicator, the confidence of the prediction, and a branch address;

identifying common instruction cache misses;

for an indirect branch, inserting, regardless of the confidence, a prefetch instruction from the prefetch engine to the instruction cache; and

for a direct branch, inserting the prefetch instruction from the prefetch engine to the instruction cache is based upon whether the taken branch had a strong prediction or a weak prediction and the prefetch instruction is executed or not executed dependent upon the confidence of the prediction.

4. A computer program product comprising:

a non-transitory computer-readable medium comprising code for:

storing information about instruction cache misses, wherein the information includes an instruction cache line address, branch target characteristics including a type of branch indicator, the confidence of the prediction, and a branch address;

identifying common instruction cache misses; predicting the outcome of a branch and providing a confidence of the prediction; and

for an indirect branch, inserting, regardless of the confidence, a prefetch instruction from a prefetch engine to the instruction cache; and

for a direct branch, inserting the prefetch instruction from the prefetch engine to the instruction cache is based upon whether the taken branch had a strong prediction or a weak prediction and the prefetch instruction is executed or not executed dependent upon the confidence of the prediction.

5. The computer program product of claim 4 , further comprising code for creating a table to store profiled information including at least an address of an instruction missed in the instruction cache.

Continuity (1)
Related Publication 20140019721A1 · Jan 16, 2014