IP Library › Granted Patent US 12,307,253
Granted Patent B2
US 12,307,253 · App. 17/742,615 · Granted May 20, 2025

Affinity groups in a micro-operations cache of a processor

Inventor: Pranjal Kumar Dutta (Sunnyvale, CA)
Assignee: Nokia Solutions and Networks OY
G06F9/3016G06F12/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 12,307,253
App. No.
17/742,615
Granted
May 20, 2025
Kind
B2
Abstract

Various example embodiments for supporting affinity groups in a micro-operations cache (UC) of a processor are presented herein. Various example embodiments for supporting affinity groups in a UC of a processor may be configured to support grouping of cache lines of the UC into affinity groups. Various example embodiments for supporting affinity groups in a UC of a processor may be configured to support grouping of cache lines of the UC into affinity groups such that micro-operations (UOPs) of multiple cache lines of an affinity group may be supplied to an execution unit of the processor as a group, thereby enabling execution of the UOPs of the multiple cache lines of the affinity group within a given clock cycle of the processor.

Claims (55)

1. An apparatus, comprising:

a decode unit configured to decode a set of instructions of an execution sequence, wherein a first instruction of the set of instructions is decoded into a first set of micro-operations and a second instruction of the set of instructions is decoded into a second set of micro-operations; and

a micro-operations cache configured to:

store the first set of micro-operations in a first cache line of the micro-operations cache and the second set of micro-operations in a second cache line of the micro-operations cache; and

assign, at the micro-operations cache based on the first set of micro operations and the second set of micro-operations being associated with the execution sequence, the first cache line and the second cache line to an affinity group for the execution sequence.

2. The apparatus of claim 1 , wherein, to assign the first cache line to the affinity group for the execution sequence, the micro-operations cache is configured to:

store, by the micro-operations cache for the first cache line, an affinity group record indicative of assignment of the first cache line to the affinity group for the execution sequence.

3. The apparatus of claim 2 , wherein the affinity group record is stored as a part of metadata of the first cache line.

4. The apparatus of claim 2 , wherein the affinity group record includes an affinity group identifier of the affinity group for the execution sequence and a position value indicative of a position of the first cache line in the affinity group for the execution sequence.

5. The apparatus of claim 1 , wherein, to assign the second cache line to the affinity group for the execution sequence, the micro-operations cache is configured to:

store, by the micro-operations cache for the second cache line, an affinity group record indicative of assignment of the second cache line to the affinity group for the execution sequence.

6. The apparatus of claim 5 , wherein the affinity group record is stored as a part of metadata of the second cache line.

7. The apparatus of claim 5 , wherein the affinity group record includes an affinity group identifier of the affinity group for the execution sequence and a position value indicative of a position of the second cache line in the affinity group for the execution sequence.

8. The apparatus of claim 1 , wherein the first cache line is assigned to a first position of the affinity group for the execution sequence, wherein the second cache line is assigned to a second position of the affinity group for the execution sequence.

9. The apparatus of claim 1 , wherein, to assign the first cache line and the second cache line to the affinity group for the execution sequence, the micro-operations cache is configured to:

store, by the micro-operations cache for the first cache line, a first affinity group record indicative of assignment of the first cache line to the affinity group for the execution sequence; and

store, by the micro-operations cache for the second cache line, a second affinity group record indicative of assignment of the second cache line to the affinity group for the execution sequence.

10. The apparatus of claim 9 , wherein:

the first affinity group record includes an affinity group identifier of the affinity group for the execution sequence and a first position value indicative of a position of the first cache line in the affinity group for the execution sequence; and

the second affinity group record includes the affinity group identifier of the affinity group for the execution sequence and a second position value indicative of a position of the second cache line in the affinity group for the execution sequence.

11. The apparatus of claim 1 , wherein the micro-operations cache is configured to:

identify, based on a request to lookup the first instruction of the execution sequence, the first cache line storing the first set of micro-operations;

determine, based on the first cache line, the affinity group for the execution sequence;

determine, based on the affinity group for the execution sequence, that the second cache line is assigned to the affinity group for the execution sequence; and

supply, to an execution unit based on the first cache line and the second cache line being assigned to the affinity group for the execution sequence, a group of micro-operations including each micro-operation in the first cache line and each micro-operation in the second cache line.

12. The apparatus of claim 11 , wherein the micro-operations in the group of micro-operations are supplied to the execution unit in an order that is based on respective positions of the first cache line and the second cache line in the affinity group for the execution sequence.

13. A method, comprising:

decoding, by a decode unit, a set of instructions of an execution sequence, wherein a first instruction of the set of instructions is decoded into a first set of micro-operations and a second instruction of the set of instructions is decoded into a second set of micro-operations;

storing, by a micro-operations cache, the first set of micro-operations in a first cache line of the micro-operations cache and the second set of micro-operations in a second cache line of the micro-operations cache; and

assigning, at the micro-operations cache based on the first set of micro-operations and the second set of micro-operations being associated with the execution sequence, the first cache line and the second cache line to an affinity group for the execution sequence.

14. The method of claim 13 , wherein assigning the first cache line to the affinity group for the execution sequence includes:

storing, by the micro-operations cache for the first cache line, an affinity group record indicative of assignment of the first cache line to the affinity group for the execution sequence.

15. The method of claim 14 , wherein the affinity group record is stored as a part of metadata of the first cache line.

16. The method of claim 14 , wherein the affinity group record includes an affinity group identifier of the affinity group for the execution sequence and a position value indicative of a position of the first cache line in the affinity group for the execution sequence.

17. The method of claim 13 , further comprising:

storing, by the micro-operations cache for the second cache line, an affinity group record indicative of assignment of the second cache line to the affinity group for the execution sequence.

18. The method of claim 17 , wherein the affinity group record is stored as a part of metadata of the second cache line.

19. The method of claim 17 , wherein the affinity group record includes an affinity group identifier of the affinity group for the execution sequence and a position value indicative of a position of the second cache line in the affinity group for the execution sequence.

20. The method of claim 13 , wherein the first cache line is assigned to a first position of the affinity group for the execution sequence, wherein the second cache line is assigned to a second position of the affinity group for the execution sequence.

21. The method of claim 13 , wherein assigning the first cache line and the second cache line to the affinity group for the execution sequence comprises:

storing, by the micro-operations cache for the first cache line, a first affinity group record indicative of assignment of the first cache line to the affinity group for the execution sequence; and

storing, by the micro-operations cache for the second cache line, a second affinity group record indicative of assignment of the second cache line to the affinity group for the execution sequence.

22. The method of claim 21 , wherein:

the first affinity group record includes an affinity group identifier of the affinity group for the execution sequence and a first position value indicative of a position of the first cache line in the affinity group for the execution sequence; and

the second affinity group record includes the affinity group identifier of the affinity group for the execution sequence and a second position value indicative of a position of the second cache line in the affinity group for the execution sequence.

23. The method of claim 13 , further comprising:

identifying, based on a request to lookup the first instruction of the execution sequence, the first cache line storing the first set of micro-operations;

determining, based on the first cache line, the affinity group for the execution sequence;

determining, based on the affinity group for the execution sequence, that the second cache line is assigned to the affinity group for the execution sequence; and

supplying, to an execution unit based on the first cache line and the second cache line being assigned to the affinity group for the execution sequence, a group of micro-operations including each micro-operation in the first cache line and each micro-operation in the second cache line.

24. The method of claim 23 , wherein the micro-operations in the group of micro-operations are supplied to the execution unit in an order that is based on respective positions of the first cache line and the second cache line in the affinity group for the execution sequence.

25. A non-transitory computer-readable storage medium storing computer program code which, when executed by an apparatus, causes the apparatus at least to perform:

decoding, by a decode unit, a set of instructions of an execution sequence, wherein a first instruction of the set of instructions is decoded into a first set of micro-operations and a second instruction of the set of instructions is decoded into a second set of micro-operations;

storing, by a micro-operations cache, the first set of micro-operations in a first cache line of the micro-operations cache and the second set of micro-operations in a second cache line of the micro-operations cache; and

assigning, at the micro-operations cache based on the first set of micro-operations and the second set of micro-operations being associated with the execution sequence, the first cache line and the second cache line to an affinity group for the execution sequence.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 23, 2022
From: KUMAR DUTTA, PRANJAL
To: NOKIA OF AMERICA CORPORATION
Reel/Frame 059978/0515 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 23, 2022
From: NOKIA OF AMERICA CORPORATION
To: NOKIA SOLUTIONS AND NETWORKS OY
Reel/Frame 059978/0527 →
Continuity (1)
Related Publication 20230367600A1 · Nov 16, 2023
References Cited (15)
US 5630083A · Carbine · 1997 [cited by examiner]
US 20030009620A1 · Solomon · 2003 [cited by examiner]
US 20090249036A1 · Rappoport · 2009 [cited by examiner]
US 20190188142A1 · Rappoport · 2019 [cited by examiner]
US 20200019406A1 · Kalamatianos · 2020 [cited by examiner]
US 20200150966A1 · Agrawal · 2020 [cited by examiner]
US 20200285466A1 · Kotra · 2020 [cited by examiner]
US 20200410088A1 · Greenhalgh · 2020 [cited by examiner]
US 20210279054A1 · Kotra · 2021 [cited by examiner]
US 20220107810A1 · Dutta · 2022 [cited by applicant]
WO 2013077875A1 · 2013 [cited by applicant]
WO 2021216564A1 · 2021 [cited by applicant]
Bird, S., et al., “Performance Characterization of SPEC CPU Benchmarks on Intel's Core Microarchitecture Based Processor,” accessed from https://www.spec.org/workshops/2007/austin/papers/Performance_Characterization_SPE… [cited by applicant]
Kanter, D., “Haswell Instruction Set and Front-end,” Intel's Haswell CPU Microarchitecture, accessed from http://www.realworldtech.com/haswell-cpu/2/, Nov. 13, 2012, 3 pages. [cited by applicant]
Extended EP Search Report, Application No. 23169893.7, Sep. 28, 2023, 9 pages. [cited by applicant]