IP Library Granted Patent US 9,996,358
Granted Patent B2
US 9,996,358 · App. 14/871,417 · Granted Jun 12, 2018

Unified prefetching into instruction cache and branch target buffer

Inventors: Babak Falsafi (Chexbres, CH); Ilknur Cansu Kaynak (Renens, CH); Boris Robert Grot (Edinburgh, GB)
Assignee: ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE
G06F9/3806G06F12/0875G06F2212/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,996,358
App. No.
14/871,417
Granted
Jun 12, 2018
Kind
B2
Abstract

A system and method of coupling a Branch Target Buffer (BTB) content of a BTB with an instruction cache content of an instruction cache. The method includes: tagging a plurality of target buffer entries that belong to branches within a same instruction block with a corresponding instruction block address and a branch bitmap to indicate individual branches in the block; coupling an overflow buffer with the BTB to accommodate further target buffer entries of instruction blocks, distinct from the plurality of target buffer entries, which have more branches than the bundle is configured to accommodate in the corresponding instruction's bundle in the BTB; and predicting the instructions or the instruction blocks that are likely to be fetched by the core in the future and fetch those instructions from the lower levels of the memory hierarchy proactively by means of a prefetcher.

Claims (39)

1. A method of coupling a content of a Branch Target Buffer (BTB) with an instruction cache content of an instruction cache comprising:

in a block-based BTB, tagging a plurality of target buffer entries that belong to branches within a same instruction block with a corresponding instruction block address and a branch bitmap to indicate individual branches in the block, whereby a predefined number of BTB entries tagged with an instruction block address and a bitmap constitute a bundle;

coupling an overflow buffer with the BTB to accommodate further BTB entries of instruction blocks, distinct from the plurality of BTB entries, which have more branches than the bundle is configured to accommodate in a corresponding instruction bundle in the BTB; and

predicting instructions or instruction blocks that are likely to be fetched by a core and fetching those instructions from lower levels of a memory hierarchy.

2. The method of claim 1 , wherein organization of the block-based BTB comprises a same number of sets and ways as the instruction cache to maintain only the bundles of the instruction-cache-resident blocks.

3. The method of claim 1 , further comprising

inserting an instruction block into the instruction cache;

pre-decoding the instructions in the instruction block to identify branch instructions and calculate target addresses of the branch instructions; and

inserting the branches identified within the block into the bundle of the corresponding instruction block.

4. The method of claim 1 , further comprising

evicting an instruction block from the instruction cache; and

evicting the corresponding bundle from the BTB.

5. The method of claim 1 , wherein a single common prefetcher performs insertions into the instruction cache and into the BTB in sync.

6. A computing system for coupling content of a Branch Target Buffer (BTB) with an instruction cache content of an instruction cache, comprising:

a system that tags a plurality of target buffer entries in a block-based BTB that belong to branches within a same instruction block with a corresponding instruction block address and a branch bitmap to indicate individual branches in the block, wherein a predefined number of BTB entries tagged with an instruction block address and a bitmap constitute a bundle;

a system that couples an overflow buffer with the BTB to accommodate further BTB entries of instruction blocks, distinct from the BTB entries, which have more branches than the bundle is configured to accommodate in a corresponding bundle in the BTB; and

a system that identifies predicted instructions or predicted instruction blocks that are likely to be fetched by a core and that fetches the predicted instructions or predicted instruction blocks from lower levels of a memory hierarchy.

7. The computing system of claim 6 , wherein the block-based BTB comprises a same number of sets and ways as the instruction cache to maintain only the bundles of the instruction-cache-resident blocks.

8. The computing system of claim 6 , further comprising:

a system that inserts an instruction block into the instruction cache;

a system that pre-decodes the instructions in the instruction block to identify branch instructions and calculates target addresses of the branch instructions; and

a system that inserts the branches identified within the block into the bundle of the corresponding instruction block.

9. The computing system of claim 6 , further comprising:

a system that evicts an instruction block from the instruction cache; and

a system that evicts the corresponding bundle from the BTB.

10. The computing system of claim 6 , wherein a system comprising a single common prefetcher performs insertions into the instruction cache and into the BTB in sync.

11. A computer program product stored on a non-transitory computer readable storage medium, which when executed by a computing system, couples content of a Branch Target Buffer (BTB) with an instruction cache content of an instruction cache, the computer program product comprising:

program instructions that tag a plurality of target buffer entries in a block-based BTB that belong to branches within a same instruction block with a corresponding instruction block address and a branch bitmap to indicate individual branches in the block, wherein a predefined number of BTB entries tagged with an instruction block address and a bitmap constitute a bundle;

program instructions that couple an overflow buffer with the BTB to accommodate further BTB entries of instruction blocks, distinct from the BTB entries, which have more branches than the bundle is configured to accommodate in a corresponding bundle in the BTB; and

program instructions that identify predicted instructions or predicted instruction blocks that are likely to be fetched by a core and that fetch the predicted instructions or predicted instruction blocks from lower levels of a memory hierarchy.

12. The computer program product of claim 11 , wherein the block-based BTB comprises a same number of sets and ways as the instruction cache to maintain only the bundles of the instruction-cache-resident blocks.

13. The computer program product of claim 11 , further comprising

program instructions that insert an instruction block into the instruction cache;

program instructions that pre-decode the instructions in the instruction block to identify branch instructions and calculate target addresses of the branch instructions; and

program instructions that insert the branches identified within the block into the bundle of the corresponding instruction block.

14. The computer program product of claim 11 , further comprising

program instructions that evict an instruction block from the instruction cache; and

program instruction that evict the corresponding bundle from the BTB.

15. The computer program of claim 11 , program instructions implementing a single common prefetcher that performs insertions into the instruction cache and into the BTB in sync.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2015
From: FALSAFI, BABAK; KAYNAK, ILKNUR CANSU; GROT, BORIS ROBERT
To: ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE (EPFL)
Reel/Frame 037232/0642 →
Continuity (1)
Related Publication 20170090935A1 · Mar 30, 2017