IP Library Granted Patent US 12,223,327
Granted Patent B2
US 12,223,327 · App. 18/487,186 · Granted Feb 11, 2025

CPUs with capture queues to save and restore intermediate results and out-of-order results

Inventors: Timothy D. Anderson (University Park, TX); Duc Bui (Grand Prairie, TX); Joseph Zbiciak (San Jose, CA); Reid E. Tatge (Los Altos, CA)
Assignee: Texas Instruments Incorporated
G06F9/3867G06F9/3838
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,223,327
App. No.
18/487,186
Granted
Feb 11, 2025
Kind
B2
Abstract

Techniques related to executing a plurality of instructions by a processor comprising a method for executing a plurality of instructions by a processor. The method comprises detecting a pipeline hazard based on one or more instructions provided for execution by an instruction execution pipeline, beginning execution of an instruction, of the one or more instructions on the instruction execution pipeline, stalling a portion of the instruction execution pipeline based on the detected pipeline hazard, storing a register state associated with the execution of the instruction based on the stalling, determining that the pipeline hazard has been resolved, and restoring the register state to the instruction execution pipeline based on the determination.

Claims (65)

1. A device comprising:

a processor that includes:

a functional unit configured to execute a first instruction, a second instruction that is subsequent to the first instruction, and a third instruction, wherein the functional unit includes a first pipe stage configured to provide a result of the second instruction and an intermediate result of the third instruction;

a capture queue that includes a first memory coupled to the first pipe stage, wherein the first memory is configured to store the result of the second instruction and the intermediate result of the third instruction; and

a circuit coupled to the functional unit and to the capture queue and that is configured to:

determine that the first instruction and the second instruction both write to a memory location, and that the first pipe stage will produce the result of the second instruction for writing to the memory location prior to completion of the first instruction; and

based on the determination:

cause the result of the second instruction to be provided by the first pipe stage and stored in the first memory; and

after completion of the first instruction, cause the result of the second instruction to be provided by the first memory and stored in the memory location.

2. The device of claim 1 , wherein:

the circuit is configured to cause the functional unit to begin execution of the third instruction after the result of the second instruction is stored in the first memory and before the result of the second instruction is provided by the first memory and stored in the memory location.

3. The device of claim 1 , wherein:

the functional unit includes a second pipe stage; and

the capture queue includes a second memory coupled to the second pipe stage.

4. The device of claim 1 , wherein:

the circuit is configured to:

detect a hazard associated with the third instruction; and

based on the hazard:

cause the intermediate result of the third instruction to be provided by the first pipe stage and stored in the first memory; and

after completion of a fourth instruction, cause the intermediate result of the third instruction to be provided by the first memory to a second pipe stage of the functional unit.

5. The device of claim 4 , wherein the circuit is configured to track a lifetime tracking value for the third instruction based on a number of cycles to complete the third instruction.

6. The device of claim 5 , wherein the circuit is configured to cause the intermediate result of the third instruction to be provided to the second pipe stage based on the lifetime tracking value.

7. The device of claim 5 , wherein the circuit is configured to, based on the hazard, cause the lifetime tracking value to be stored in the first memory.

8. The device of claim 4 , wherein the hazard is based on the third instruction reading a value to be written by the fourth instruction.

9. The device of claim 1 , wherein:

the processor includes a register; and

the memory location is associated with the register.

10. A device comprising:

a processor that includes:

a first functional unit configured to execute a first instruction;

a second functional unit configured to execute a second instruction that is subsequent to the first instruction and to execute a third instruction, wherein the second functional unit includes a first pipe stage that is configured to produce a result of the second instruction and an intermediate result of the third instruction;

a capture queue that includes:

a first set of memories coupled to the first functional unit; and

a second set of memories coupled to the second functional unit, wherein the second set of memories includes a first memory coupled to the first pipe stage, wherein the first memory is configured to store the result of the second instruction and the intermediate result of the third instruction; and

a circuit coupled to the first functional unit, the second functional unit, and the capture queue and that is configured to:

determine that the first instruction and the second instruction both write to a memory location, and that the first pipe stage will produce the result of the second instruction for writing to the memory location prior to completion of the first instruction; and

based on the determination:

cause the result of the second instruction to be provided by the first pipe stage and stored in the first memory; and

after completion of the first instruction, cause the result of the second instruction to be provided by the first memory and stored in the memory location.

11. The device of claim 10 , wherein:

the circuit is configured to cause the second functional unit to begin execution of the third instruction after the result of the second instruction is stored in the first memory and before the result of the second instruction is provided by the first memory and stored in the memory location.

12. The device of claim 10 , wherein:

the second functional unit includes a second pipe stage; and

the second set of memories includes a second memory coupled to the second pipe stage.

13. The device of claim 10 , wherein:

the circuit is configured to:

detect a hazard associated with the third instruction; and

based on the hazard:

cause the intermediate result of the third instruction to be provided by the first pipe stage and stored in the first memory; and

after completion of a fourth instruction, cause the intermediate result of the third instruction to be provided by the first memory to a second pipe stage of the second functional unit.

14. The device of claim 13 , wherein the circuit is configured to track a lifetime tracking value for the third instruction based on a number of cycles to complete the third instruction.

15. The device of claim 14 , wherein the circuit is configured to cause the intermediate result of the third instruction to be provided to the second pipe stage based on the lifetime tracking value.

16. The device of claim 14 , wherein the circuit is configured to, based on the hazard, cause the lifetime tracking value to be stored in the first memory.

17. The device of claim 13 , wherein the hazard is based on the third instruction reading a value to be written by the fourth instruction.

18. A method comprising:

beginning execution of a first instruction and a second instruction by a processor;

determining that the first instruction and the second instruction both write to a memory location and that a result of the second instruction will be produced for writing to the memory location prior to completion of the first instruction;

based on the determination:

storing the result of the second instruction in a first memory; and

after completion of the first instruction, storing the result of the second instruction at the memory location; and

storing an intermediate result of a third instruction in the first memory.

19. The method of claim 18 , wherein:

the execution of the first instruction is performed by a first functional unit of the processor; and

the execution of the second instruction is performed by a second functional unit of the processor.

20. The method of claim 18 , wherein the storing of the intermediate result of the third instruction is based on a hazard associated with the third instruction.

Continuity (4)
Continuation 17688260 · Mar 7, 2022
Continuation 16685747 · Nov 15, 2019
Provisional Application 62786374 · Dec 29, 2018
Related Publication 20240036876A1 · Feb 1, 2024
References Cited (13)
US 5509130A · Trauben et al. · 1996 [cited by applicant]
US 5838988A · Panwar · 1998 [cited by examiner]
US 5961630A · Zaidi et al. · 1999 [cited by applicant]
US 5987594A · Panwar et al. · 1999 [cited by applicant]
US 6131157A · Wang · 2000 [cited by examiner]
US 6470445B1 · Arnold · 2002 [cited by examiner]
US 6957325B1 · Chang et al. · 2005 [cited by applicant]
US 11269650B2 · Anderson et al. · 2022 [cited by applicant]
US 20020029328A1 · Nguyen · 2002 [cited by examiner]
US 20060090061A1 · Akkary et al. · 2006 [cited by applicant]
US 20090049280A1 · Tatge · 2009 [cited by applicant]
US 20140053008A1 · Rozas · 2014 [cited by applicant]
US 20150019840A1 · Anderson · 2015 [cited by examiner]