IP Library › Granted Patent US 12,045,619
Granted Patent B2
US 12,045,619 · App. 17/747,670 · Granted Jul 23, 2024

Store-to-load forwarding correctness checks at store instruction commit

Inventors: John G. Favor (San Francisco, CA); Srivatsan Srinivasan (Cedar Park, TX)
Assignee: Ventana Micro Systems Inc.
G06F9/3838G06F9/30043
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,045,619
App. No.
17/747,670
Granted
Jul 23, 2024
Kind
B2
Abstract

A microprocessor includes a load queue, a store queue, and a load/store unit that, during execution of a store instruction, records store information to a store queue entry. The store information comprises store address and store size information about store data to be stored by the store instruction. The load/store unit, during execution of a load instruction that is younger in program order than the store instruction, performs forwarding behavior with respect to forwarding or not forwarding the store data from the store instruction to the load instruction and records load information to a load queue entry, which comprises load address and load size information about load data to be loaded by the load instruction, and records the forwarding behavior in the load queue entry. The load/store unit, during commit of the store instruction, uses the recorded store information and the recorded load information and the recorded forwarding behavior to check correctness of the forwarding behavior.

Claims (120)

1. A microprocessor, comprising:

a load queue;

a store queue; and

a load/store unit configured to:

during execution of a store instruction:

record store information to an entry of the store queue allocated to the store instruction, wherein the store information comprises store address and store size information about store data to be stored by the store instruction;

during execution of a load instruction that is younger in program order than the store instruction:

perform forwarding behavior with respect to forwarding or not forwarding the store data from the store instruction to the load instruction;

record load information to an entry of the load queue allocated to the load instruction, wherein the load information comprises load address and load size information about load data to be loaded by the load instruction; and

record the forwarding behavior in the load queue entry; and

during commit of the store instruction:

use the recorded store information and the recorded load information and the recorded forwarding behavior to check correctness of the forwarding behavior.

2. The microprocessor of claim 1 ,

wherein the load/store unit is further configured to:

during commit of the store instruction:

write the store data to a cache memory of the microprocessor.

3. The microprocessor of claim 1 ,

wherein the load/store unit is further configured to:

during commit of the store instruction:

deallocate the entry of the store queue allocated to the store instruction.

4. The microprocessor of claim 1 ,

wherein the load/store unit is further configured to:

signal a need to abort the load instruction if the forwarding behavior was incorrect.

5. The microprocessor of claim 1 ,

wherein the recorded forwarding behavior comprises an indication of whether the load/store unit forwarded the store data to the load instruction.

6. The microprocessor of claim 1 ,

wherein the recorded forwarding behavior comprises an identifier of the store instruction whose store data was forwarded to the load instruction.

7. The microprocessor of claim 1 ,

wherein the recorded forwarding behavior comprises an indication of whether the load/store unit tried but did not forward the store data to the load instruction.

8. The microprocessor of claim 1 ,

wherein the load/store unit is further configured to:

during commit of the store instruction:

record an indication of the correctness of the forwarding behavior to the load queue entry.

9. The microprocessor of claim 1 ,

wherein the load/store unit is further configured to:

during execution of each additional store instruction of one or more store instructions additional to the first store instruction, wherein the additional store instruction is older than the load instruction:

record store information to an entry of the store queue allocated to the additional store instruction;

during execution of the load instruction:

record in the load queue entry an indication of whether the load/store unit forwarded the store data to the load instruction and, if so, an identifier of one of the first store instruction and the additional store instructions whose store data was forwarded to the load instruction; and

during commit of each respective store instruction of the first store instruction and the additional store instructions:

use the respective recorded store information and the recorded load information and the recorded indication and the recorded identifier to check correctness of the forwarding behavior performed by the load/store unit with respect to forwarding or not forwarding store data from the respective store instruction to the load instruction.

10. The microprocessor of claim 9 ,

wherein the load/store unit is further configured to:

during commit of each respective store instruction of the first store instruction and the additional store instructions:

selectively record to the load queue entry an indication of the correctness of the forwarding behavior with respect the respective store instruction.

11. The microprocessor of claim 10 ,

wherein the load/store unit is further configured to:

signal a need to abort the load instruction if, after commit of the last respective store instruction, the forwarding behavior correctness indication indicates the forwarding behavior was incorrect.

12. The microprocessor of claim 1 ,

wherein the load/store unit is further configured to:

during commit of the store instruction, for each additional entry of the load queue allocated to an additional load instruction that is younger than the store instruction:

use the recorded store information and the recorded load information of the additional load queue entry to check correctness of forwarding behavior with respect to forwarding or not forwarding the store data from the store instruction to the additional load instruction.

13. The microprocessor of claim 1 ,

wherein the store address comprises a physical memory line address; and

wherein the load address comprises a physical memory line address.

14. The microprocessor of claim 1 , further comprising:

a physically-indexed physically-tagged second-level set-associative cache, wherein each entry in the second-level cache is uniquely identified by a set index and a way of the second-level cache;

wherein the store address comprises a store physical address proxy (PAP) for a store physical memory line address, wherein the store PAP specifies the set index and the way of the entry in the second-level cache into which a cache line specified by the store physical memory line address is allocated; and

wherein the load address comprises a load PAP for a load physical memory line address, wherein the load PAP specifies the set index and the way of the entry in the second-level cache into which a cache line specified by the load physical memory line address is allocated.

15. A method, comprising:

in a microprocessor comprising a load queue and a store queue:

during execution of a store instruction:

recording store information to an entry of the store queue allocated to the store instruction, wherein the store information comprises store address and store size information about store data to be stored by the store instruction;

during execution of a load instruction that is younger in program order than the store instruction:

performing forwarding behavior with respect to forwarding or not forwarding the store data from the store instruction to the load instruction;

recording load information to an entry of the load queue allocated to the load instruction, wherein the load information comprises load address and load size information about load data to be loaded by the load instruction; and

recording the forwarding behavior in the load queue entry; and

during commit of the store instruction:

using the recorded store information and the recorded load information and the recorded forwarding behavior to check correctness of the forwarding behavior.

16. The method of claim 15 , further comprising:

during commit of the store instruction:

writing the store data to a cache memory of the microprocessor.

17. The method of claim 15 , further comprising:

during commit of the store instruction:

deallocating the entry of the store queue allocated to the store instruction.

18. The method of claim 15 , further comprising:

signaling a need to abort the load instruction if the forwarding behavior was incorrect.

19. The method of claim 15 ,

wherein the recorded forwarding behavior comprises an indication of whether the load/store unit forwarded the store data to the load instruction.

20. The method of claim 15 ,

wherein the recorded forwarding behavior comprises an identifier of the store instruction whose store data was forwarded to the load instruction.

21. The method of claim 15 ,

wherein the recorded forwarding behavior comprises an indication of whether the load/store unit tried but did not forward the store data to the load instruction.

22. The method of claim 15 , further comprising:

during commit of the store instruction:

recording an indication of the correctness of the forwarding behavior to the load queue entry.

23. The method of claim 15 , further comprising:

during execution of each additional store instruction of one or more store instructions additional to the first store instruction, wherein the additional store instruction is older than the load instruction:

recording store information to an entry of the store queue allocated to the additional store instruction;

during execution of the load instruction:

recording in the load queue entry an indication of whether the load/store unit forwarded the store data to the load instruction and, if so, an identifier of one of the first store instruction and the additional store instructions whose store data was forwarded to the load instruction; and

during commit of each respective store instruction of the first store instruction and the additional store instructions:

using the respective recorded store information and the recorded load information and the recorded indication and the recorded identifier to check correctness of the forwarding behavior performed by the load/store unit with respect to forwarding or not forwarding store data from the respective store instruction to the load instruction.

24. The method of claim 23 , further comprising:

during commit of each respective store instruction of the first store instruction and the additional store instructions:

selectively recording to the load queue entry an indication of the correctness of the forwarding behavior with respect the respective store instruction.

25. The method of claim 24 , further comprising:

signaling a need to abort the load instruction if, after commit of the last respective store instruction, the forwarding behavior correctness indication indicates the forwarding behavior was incorrect.

26. The method of claim 15 , further comprising:

during commit of the store instruction, for each additional entry of the load queue allocated to an additional load instruction that is younger than the store instruction:

using the recorded store information and the recorded load information of the additional load queue entry to check correctness of forwarding behavior with respect to forwarding or not forwarding the store data from the store instruction to the additional load instruction.

27. The method of claim 15 ,

wherein the store address comprises a physical memory line address; and

wherein the load address comprises a physical memory line address.

28. The method of claim 15 ,

wherein the microprocessor further comprises a physically-indexed physically-tagged second-level set-associative cache, wherein each entry in the second-level cache is uniquely identified by a set index and a way of the second-level cache;

wherein the store address comprises a store physical address proxy (PAP) for a store physical memory line address, wherein the store PAP specifies the set index and the way of the entry in the second-level cache into which a cache line specified by the store physical memory line address is allocated; and

wherein the load address comprises a load PAP for a load physical memory line address, wherein the load PAP specifies the set index and the way of the entry in the second-level cache into which a cache line specified by the load physical memory line address is allocated.

29. A non-transitory computer-readable medium having instructions stored thereon that are capable of causing or configuring a microprocessor comprising:

a load queue;

a store queue; and

a load/store unit configured to:

during execution of a store instruction:

record store information to an entry of the store queue allocated to the store instruction, wherein the store information comprises store address and store size information about store data to be stored by the store instruction;

during execution of a load instruction that is younger in program order than the store instruction:

perform forwarding behavior with respect to forwarding or not forwarding the store data from the store instruction to the load instruction;

record load information to an entry of the load queue allocated to the load instruction, wherein the load information comprises load address and load size information about load data to be loaded by the load instruction; and

record the forwarding behavior in the load queue entry; and

during commit of the store instruction:

use the recorded store information and the recorded load information and the recorded forwarding behavior to check correctness of the forwarding behavior.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 24, 2022
From: FAVOR, JOHN G.; SRINIVASAN, SRIVATSAN
To: VENTANA MICRO SYSTEMS INC.
Reel/Frame 060000/0566 →
Continuity (12)
Continuation In Part 17370009 · Jul 8, 2021
Continuation In Part 17351946 · Jun 18, 2021
Continuation In Part 17351927 · Jun 18, 2021
Continuation In Part 17351927 · Jun 18, 2021
Continuation In Part 17351946 · Jun 18, 2021
Continuation In Part 17315262 · May 7, 2021
Continuation In Part 17315262 · May 7, 2021
Continuation In Part 17315262 · May 7, 2021
Continuation In Part 17315262 · May 7, 2021
Provisional Application 63331487 · Apr 15, 2022
Provisional Application 63271934 · Oct 26, 2021
Related Publication 20220357955A1 · Nov 10, 2022