IP Library Granted Patent US 10,579,535
Granted Patent B2
US 10,579,535 · App. 15/843,292 · Granted Mar 3, 2020

Defragmented and efficient micro-operation cache

Inventors: Lihu Rappoport (Haifa, IL); Jared Warner Stark, IV (Portland, OR); Franck Sala (Haifa, IL); Michael Tal (Yoqneam Illit, IL); Gil Shmueli (Haifa, IL); Adrian Flesler (Yokneam Illit, IL)
Assignee: Intel Corporation
G06F12/0891G06F1/3246G06F9/3017G06F9/30145G06F12/0855G06F12/126G06F2212/1052G06F2212/402
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 10,579,535
App. No.
15/843,292
Granted
Mar 3, 2020
Kind
B2
Abstract

A processor includes a processor core and a micro-op cache communicably coupled to the processor core. The micro-op cache includes a micro-op tag array, wherein tag array entries in the micro-op tag array are indexed according to set and way of set-associative cache, and a micro-op data array to store multiple micro-ops. The data array entries in the micro-op data array are indexed according to bank number of a plurality of cache banks and to a set within one cache bank of the plurality of cache banks.

Claims (39)

1. A processor comprising:

a processor core circuitry; and

a micro-op cache communicably coupled to the processor core circuitry, the micro-op cache comprising:

a micro-op tag array, wherein tag array entries in the micro-op tag array are indexed according to set and way of set-associative cache; and

a micro-op data array to store multiple micro-ops, wherein data array entries in the micro-op data array are indexed according to bank number of a plurality of physical cache banks and to a set within one physical cache bank of the plurality of physical cache banks, and wherein allocation to the micro-op data array is according to sequential bank numbers of the plurality of physical cache banks.

2. The processor of claim 1 , wherein a next sequential bank number after a last cache bank of the plurality of physical cache banks comprises a first bank number associated with a first cache bank of the plurality of physical cache banks.

3. The processor of claim 2 , further comprising a cache controller coupled to the micro-op cache, the cache controller to:

store, in a register of the processor, identification of a final cache bank of the plurality of physical cache banks to which a final micro-op of a first entry was allocated in the micro-op data array; and

allocate, to a next cache bank that sequentially follows the final cache bank of the plurality of physical cache banks, a first micro-op of a second entry to the micro-op data array, wherein allocation of the second entry sequentially follows allocation of the first entry.

4. The processor of claim 2 , wherein allocation to the micro-op data array is to begin allocation to a physical cache bank of the plurality of physical cache banks other than a first physical cache bank of the plurality of physical cache banks in at least some cache entry allocations.

5. The processor of claim 1 , wherein the micro-op tag array comprises a plurality of index pointers, each index pointer of the plurality of index pointers to point to a bank number and set within a physical cache bank of the plurality of physical cache banks of the micro-op data array.

6. The processor of claim 5 , wherein each physical cache bank of the plurality of physical cache banks of the micro-op data array is partitioned into a plurality of regions, each region spanning multiple consecutively-numbered sets, and wherein each index pointer of the plurality of index pointers is to point to a set within an identified region of the plurality of regions.

7. The processor of claim 1 , wherein the micro-op data array is sized to be at least thirty percent smaller than the micro-op tag array.

8. An integrated circuit comprising:

a micro-op cache comprising a micro-op tag array and a micro-op data array; and

a cache controller coupled to the micro-op cache, wherein to allocate a first entry to the micro-op cache, the cache controller is to:

allocate indexing metadata of the first entry to the micro-op tag array according to a plurality of sets of ways of set-associative cache; and

allocate a plurality of micro-ops to the micro-op data array according to an index within the micro-op data array, the index comprising bank number of a plurality of physical cache banks and a set within one physical cache bank of the plurality of physical cache banks of the micro-op data array, wherein allocation to the micro-op data array is according to sequential bank numbers of the plurality of physical cache banks.

9. The integrated circuit of claim 8 , wherein a sequential bank number after a last cache bank of the plurality of physical cache banks comprises a first bank number of a first cache bank of the plurality of physical cache banks.

10. The integrated circuit of claim 9 , wherein, upon further allocation to the micro-op cache after a period of micro-op cache hits, the cache controller is further to:

store, in a register, identification of a final cache bank of the plurality of physical cache banks associated with a final micro-op of a most-recent-hit entry in the micro-op data array; and

allocate, to a next cache bank that sequentially follows the final cache bank of the plurality of physical cache banks, a first micro-op of a second entry to the micro-op data array, wherein allocation of the second entry sequentially follows the final cache bank identified in the register.

11. The integrated circuit of claim 8 , wherein, to allocate the plurality of micro-ops to the micro-op data array, the cache controller is to begin allocation to a physical cache bank of the plurality of physical cache banks other than a first physical cache bank of the plurality of physical cache banks.

12. The integrated circuit of claim 8 , wherein the micro-op tag array comprises a plurality of index pointers, each index pointer of the plurality of index pointers to point to a bank number and set within a cache bank of the plurality of physical cache banks of the micro-op data array.

13. The integrated circuit of claim 12 , wherein each physical cache bank of the plurality of physical cache banks of the micro-op data array is partitioned into a plurality of regions, each region spanning multiple consecutively-numbered sets, and wherein each index pointer of the plurality of index pointers is to point to a set within an identified region of the plurality of regions.

14. The integrated circuit of claim 8 , wherein the micro-op data array is sized to be at least thirty percent smaller than the micro-op tag array.

15. A method comprising:

allocating, by a cache controller of a processor, indexing metadata of a first entry to a micro-op tag array of a micro-op cache according to a plurality of sets of ways of set-associative cache; and

allocating, by the cache controller, a plurality of micro-ops of the first entry to a micro-op data array of the micro-op cache, wherein allocating the plurality of micro-ops is according to an index comprising bank number of a plurality of physical cache banks and a set within one physical cache bank of the plurality of physical cache banks of the micro-op data array, and

wherein allocating the plurality of micro-ops to the micro-op data array comprises sequentially allocating each micro-op of the plurality of micro-ops across the plurality of physical cache banks according to a sequential bank number.

16. The method of claim 15 , wherein the sequential bank number after a last cache bank of the plurality of physical cache banks comprises a first bank number of a first physical cache bank of the plurality of physical cache banks.

17. The method of claim 16 , further comprising:

storing, in a register, identification of a final cache bank of the plurality of physical cache banks of the micro-op data array to which a final micro-op of the first entry was allocated; and

allocating, to a next cache bank that sequentially follows the final cache bank of the plurality of physical cache banks, a first micro-op of a second entry to the micro-op data array, wherein allocating the second entry sequentially follows allocating the first entry.

18. The method of claim 15 , wherein allocating the plurality of micro-ops to the micro-op data array comprises beginning allocation to a physical cache bank of the plurality of physical cache banks other than a first physical cache bank of the plurality of physical cache banks.

19. The method of claim 15 , wherein allocating the indexing metadata to the micro-op tag array comprises storing an index pointer for each of a plurality of micro-ops, the index pointer to point to a bank number and set within a physical cache bank of the plurality of physical cache banks of the micro-op data array.

20. The method of claim 19 , further comprising:

partitioning each physical cache bank of the plurality of physical cache banks into a plurality of regions, each region spanning multiple consecutively-numbered sets; and

configuring each index pointer to point to a set within an identified region of the plurality of regions.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2026
From: INTEL CORPORATION
To: TENSTORRENT USA, INC.
Reel/Frame 074264/0335 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2017
From: RAPPOPORT, LIHU; STARK IV, JARED WARNER; SALA, FRANCK; TAL, MICHAEL; SHMUELI, GIL; FLESLER, ADRIAN
To: INTEL CORPORATION
Reel/Frame 044406/0898 →
Continuity (1)
Related Publication 20190188142A1 · Jun 20, 2019
Cited By (16)
US 12,216,583 US 12,253,951 US 12,282,430 US 12,299,449 US 12,450,066 US 12,450,067 US 12,487,926 US 12,493,466 US 12,493,468 US 12,493,469 US 12,498,926 US 12,498,927 US 12,498,928 US 12,498,929 US 12,498,933 US 12,693,864