IP Library › Granted Patent US 12,353,881
Granted Patent B2
US 12,353,881 · App. 17/033,680 · Granted Jul 8, 2025

Circuitry and methods for power efficient generation of length markers for a variable length instruction set

Inventors: Thomas Madaelil (Austin, TX); Jonathan Combs (Austin, TX); Khary Alexander (Cedar Park, TX); Martin Licht (Round Rock, TX); Vikash Agarwal (Austin, TX)
Assignee: Intel Corporation
G06F9/30149G06F9/30152G06F9/3016G06F9/382G06F12/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,353,881
App. No.
17/033,680
Granted
Jul 8, 2025
Kind
B2
Abstract

Systems, methods, and apparatuses for power efficient generation of length markers for a variable length instruction set are described. In one embodiment, a hardware processor core includes a decoder circuit to decode instructions into decoded instructions, an execution circuit to execute the decoded instructions, an instruction cache, an instruction length decoder circuit, a predecode cache comprising a predecode bit, for each section of multiple sections of instruction data, that indicates when that section is identified as an end boundary of a variable length instruction, an incomplete decode table comprising a bit, for each proper subset of sections of instruction data, that indicates when that proper subset of sections has one or more invalid predecode bits in the predecode cache; and a fetch circuit to, for an incoming address of instruction data, perform a lookup in the instruction cache and the incomplete decode table, and, when there is a hit in the instruction cache for the instruction data at the incoming address and a hit in the incomplete decode table that indicates a proper subset of sections of the instruction data for the incoming address has one or more invalid predecode bits in the predecode cache, causes the instruction length decoder circuit to generate one or more predecode bits for the proper subset of sections of the instruction data for the incoming address that has the one or more invalid predecode bits.

Claims (46)

1. A hardware processor core comprising:

a decoder circuit to decode instructions into decoded instructions;

an execution circuit to execute the decoded instructions;

an instruction cache;

an instruction length decoder circuit;

a predecode cache comprising a predecode bit, for each section of multiple sections of instruction data, that indicates when that section is identified as a boundary of a variable length instruction;

storage for an incomplete decode table comprising a single bit, for each proper subset of the multiple sections of the instruction data, that indicates when that proper subset of the multiple sections has one or more invalid predecode bits in the predecode cache; and

a fetch circuit to, for an incoming address of the instruction data, perform a lookup in the instruction cache and the incomplete decode table, and, when there is a hit in the incomplete decode table that indicates a first proper subset of the multiple sections of the instruction data for the incoming address has the one or more invalid predecode bits in the predecode cache and a hit in the instruction cache for the instruction data at the incoming address, cause the instruction length decoder circuit to generate one or more predecode bits for the first proper subset of the multiple sections of the instruction data for the incoming address that has the one or more invalid predecode bits.

2. The hardware processor core of claim 1 , wherein the instruction length decoder circuit is enabled from a disabled state when there is the hit in the instruction cache and the hit in the incomplete decode table.

3. The hardware processor core of claim 1 , wherein, when there is the hit in the instruction cache and the hit in the incomplete decode table, the instruction length decoder circuit is to send the one or more predecode bits for the first proper subset of the multiple sections of the instruction data for the incoming address to the decoder circuit.

4. The hardware processor core of claim 1 , wherein, when there is the hit in the instruction cache and the hit in the incomplete decode table, the instruction length decoder circuit is to store the one or more predecode bits in the predecode cache and update one or more corresponding bits in the incomplete decode table as valid.

5. The hardware processor core of claim 1 , wherein, when there is a miss in the instruction cache for the instruction data at the incoming address, the fetch circuit causes:

a fetch of the instruction data from memory;

the instruction length decoder circuit to generate one or more predecode bits for the instruction data at the incoming address; and

an update of one or more corresponding bits in the incomplete decode table as valid.

6. The hardware processor core of claim 1 , wherein the decoder circuit comprises instruction length verification circuitry that updates a counter with a number of incorrect predecode bits from the predecode cache for decoded instructions, and when the counter exceeds a threshold, enables the instruction length decoder circuit from a disabled state.

7. The hardware processor core of claim 1 , further comprising disable logic circuitry to perform a comparison of predecode bits from the predecode cache to corresponding predecode bits generated by the instruction length decoder circuit, and disable the instruction length decoder circuit from an enabled state when the comparison indicates matches exceed a disengagement threshold number of matches.

8. The hardware processor core of claim 1 , wherein the fetch circuit is to, when there is a miss in the incomplete decode table that indicates the first proper subset of the multiple sections of the instruction data for the incoming address has one or more valid predecode bits in the predecode cache and a hit in the instruction cache for the instruction data at the incoming address, cause the one or more valid predecode bits for the first proper subset of the multiple sections of the instruction data for the incoming address from the predecode cache and corresponding instruction data from the instruction cache to be sent to the decoder circuit.

9. A method comprising:

receiving an incoming address of instruction data at a fetch circuit of a processor;

performing a lookup in an instruction cache of the processor for the instruction data at the incoming address in response to the receiving;

performing a lookup in an incomplete decode table of the processor for the instruction data at the incoming address in response to the receiving, the incomplete decode table comprising a single bit, for each proper subset of multiple sections of the instruction data, that indicates when that proper subset of the multiple sections has one or more invalid predecode bits in a predecode cache of the processor comprising a predecode bit, for each section of the multiple sections of the instruction data, that indicates when that section is identified as a boundary of a variable length instruction; and

generating, when there is a hit in the incomplete decode table that indicates a first proper subset of the multiple sections of the instruction data for the incoming address has the one or more invalid predecode bits in the predecode cache and a hit in the instruction cache for the instruction data at the incoming address, one or more predecode bits for the first proper subset of the multiple sections of the instruction data for the incoming address that has the one or more invalid predecode bits by an instruction length decoder circuit of the processor.

10. The method of claim 9 , further comprising enabling the instruction length decoder circuit from a disabled state when there is the hit in the instruction cache and the hit in the incomplete decode table.

11. The method of claim 9 , further comprising sending the one or more predecode bits for the first proper subset of the multiple sections of the instruction data for the incoming address from the instruction length decoder circuit to a decoder circuit when there is the hit in the instruction cache and the hit in the incomplete decode table.

12. The method of claim 9 , further comprising storing the one or more predecode bits from the instruction length decoder circuit into the predecode cache and updating one or more corresponding bits in the incomplete decode table as valid when there is the hit in the instruction cache and the hit in the incomplete decode table.

13. The method of claim 9 , further comprising, when there is a miss in the instruction cache for the instruction data at the incoming address, fetching the instruction data from memory by the fetch circuit, generating one or more predecode bits for the instruction data at the incoming address by the instruction length decoder circuit, and updating one or more corresponding bits in the incomplete decode table as valid.

14. The method of claim 9 , further comprising updating a counter with a number of incorrect predecode bits from the predecode cache for decoded instructions by instruction length verification circuitry of the processor, and enabling the instruction length decoder circuit from a disabled state when the counter exceeds a threshold.

15. The method of claim 9 , further comprising performing a comparison of predecode bits from the predecode cache to corresponding predecode bits generated by the instruction length decoder circuit, and disabling the instruction length decoder circuit from an enabled state when the comparison indicates matches exceed a disengagement threshold number of matches.

16. The method of claim 9 , wherein, when there is a miss in the incomplete decode table that indicates the first proper subset of the multiple sections of the instruction data for the incoming address has one or more valid predecode bits in the predecode cache and a hit in the instruction cache for the instruction data at the incoming address, sending the one or more valid predecode bits for the first proper subset of the multiple sections of the instruction data for the incoming address from the predecode cache and corresponding instruction data from the instruction cache to a decoder circuit.

17. An apparatus comprising:

an instruction cache;

an instruction length decoder circuit;

a predecode cache comprising a predecode bit, for each section of multiple sections of instruction data, that indicates when that section is identified as a boundary of a variable length instruction;

storage for an incomplete decode table comprising a single bit, for each proper subset of multiple sections of the instruction data, that indicates when that proper subset of the multiple sections has one or more invalid predecode bits in the predecode cache; and

a circuit to, for an incoming address of the instruction data, perform a lookup in the instruction cache and the incomplete decode table, and, when there is a hit in the incomplete decode table that indicates a first proper subset of the multiple sections of the instruction data for the incoming address has the one or more invalid predecode bits in the predecode cache and a hit in the instruction cache for the instruction data at the incoming address, cause the instruction length decoder circuit to generate one or more predecode bits for the first proper subset of the multiple sections of the instruction data for the incoming address that has the one or more invalid predecode bits.

18. The apparatus of claim 17 , wherein the instruction length decoder circuit is enabled from a disabled state when there is the hit in the instruction cache and the hit in the incomplete decode table.

19. The apparatus of claim 17 , wherein, when there is the hit in the instruction cache and the hit in the incomplete decode table, the instruction length decoder circuit is to send the one or more predecode bits for the first proper subset of the multiple sections of the instruction data for the incoming address to a decoder circuit that decodes instructions into decoded instructions for execution.

20. The apparatus of claim 17 , wherein, when there is the hit in the instruction cache and the hit in the incomplete decode table, the instruction length decoder circuit is to store the one or more predecode bits in the predecode cache and update one or more corresponding bits in the incomplete decode table as valid.

21. The apparatus of claim 17 , wherein, when there is a miss in the instruction cache for the instruction data at the incoming address, the circuit causes:

a fetch of the instruction data from memory;

the instruction length decoder circuit to generate one or more predecode bits for the instruction data at the incoming address; and

an update of one or more corresponding bits in the incomplete decode table as valid.

22. The apparatus of claim 17 , further comprising instruction length verification circuitry that updates a counter with a number of incorrect predecode bits from the predecode cache for decoded instructions, and when the counter exceeds a threshold, enables the instruction length decoder circuit from a disabled state.

23. The apparatus of claim 17 , wherein the circuit is to perform a comparison of predecode bits from the predecode cache to corresponding predecode bits generated by the instruction length decoder circuit, and disable the instruction length decoder circuit from an enabled state when the comparison indicates matches exceed a disengagement threshold number of matches.

24. The apparatus of claim 17 , wherein the circuit is to, when there is and a miss in the incomplete decode table that indicates the first proper subset of the multiple sections of the instruction data for the incoming address has one or more valid predecode bits in the predecode cache and a hit in the instruction cache for the instruction data at the incoming address, cause the one or more valid predecode bits for the first proper subset of the multiple sections of the instruction data for the incoming address from the predecode cache and corresponding instruction data from the instruction cache to be sent to a decoder circuit that decodes instructions into decoded instructions for execution.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 9, 2021
From: MADAELIL, THOMAS; COMBS, JONATHAN; ALEXANDER, KHARY; LICHT, MARTIN; AGARWAL, VIKASH
To: INTEL CORPORATION
Reel/Frame 055203/0828 →
Continuity (1)
Related Publication 20220100516A1 · Mar 31, 2022
References Cited (14)
US 5488710A · Sato · 1996 [cited by examiner]
US 5941980A · Shang · 1999 [cited by examiner]
US 6041405A · Green · 2000 [cited by examiner]
US 6092182A · Mahalingaiah · 2000 [cited by applicant]
US 7305542B2 · Madduri · 2007 [cited by applicant]
US 7681013B1 · Trivedi et al. · 2010 [cited by applicant]
US 20070260854A1 · Smith et al. · 2007 [cited by applicant]
US 20130262771A1 · Galan · 2013 [cited by examiner]
US 20140281246A1 · Breternitz, Jr. · 2014 [cited by examiner]
US 20190020360A1 · Balasubramanian et al. · 2019 [cited by applicant]
US 20200159677A1 · Evans et al. · 2020 [cited by applicant]
TW 201905702A · 2019 [cited by applicant]
International Search Report and Written Opinion, PCT App. No. PCT/US21/47823, Nov. 23, 2021, 8 pages. [cited by applicant]
Office Action, TW App. No. 110130686, Dec. 26, 2024, 16 pages (09 pages of English Translation and 07 pages of Original Document). [cited by applicant]