IP Library Granted Patent US 10,901,747
Granted Patent B2
US 10,901,747 · App. 16/261,251 · Granted Jan 26, 2021

Unified store buffer

Inventors: Deepak Panwar (Austin, TX); Muhammad Tauseef Rab (Austin, TX)
Assignee: Western Digital Technologies, Inc.
G06F9/3867G06F9/3861
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,901,747
App. No.
16/261,251
Granted
Jan 26, 2021
Kind
B2
Abstract

Techniques are disclosed relating to speculative execution of store instructions. In various embodiments, an integrated circuit includes an execution pipeline having a load store circuit. The load store circuit is configured to receive a first store instruction executable to store a first value in a memory accessible to the integrated circuit. Prior to the first store instruction committing, the load store circuit stores the first value in a store buffer. In response to the first store instruction committing, the load store circuit stores, in the store buffer, an indication that the first store instruction has committed. In various embodiments, the integrated circuit reads the stored indication to determine whether the first store instruction has committed and, responsive to the read indication, provides the first value for storage in the memory.

Claims (54)

1. An integrated circuit, comprising:

an execution pipeline comprising a load store circuit, wherein the load store circuit is configured to:

receive a first store instruction executable to store a first value in a memory accessible to the integrated circuit;

prior to the first store instruction committing, store the first value in an entry of a store buffer within the load store circuit;

store, in the entry of the store buffer, a validity indication for the entry responsive to storing the first value in the entry of the store buffer, wherein the first value resides in the entry until after the first store instruction commits; and

in response to the first store instruction committing, store, in the entry of the store buffer, a commit indication that the first store instruction has committed.

2. The integrated circuit of claim 1 , wherein the integrated circuit is further configured to:

read the stored commit indication to determine whether the first store instruction has committed; and

responsive to the read commit indication, provide the first value for storage in the memory.

3. The integrated circuit of claim 2 , wherein the integrated circuit is further configured to:

identify the entry in the store buffer that includes the first value by accessing a read pointer of the store buffer, wherein the read pointer specifies an entry having a next value to be read from the store buffer; and

read the first value from the identified entry to provide the first value for storage in the memory.

4. The integrated circuit of claim 2 , wherein the first value is provided to a data cache included in the integrated circuit.

5. The integrated circuit of claim 1 , wherein the first store instruction is received from a decoder of the execution pipeline; and

wherein the load store circuit is further configured to:

identify the entry in the store buffer to store the first value by accessing a write pointer that identifies an available entry to store a newly received value; and

advance the write pointer such that the store buffer implements a circular buffer.

6. The integrated circuit of claim 5 , wherein the load store circuit is further configured to:

store, in the identified entry, a memory address identified by the first store instruction and indicating where the first value is to be stored in the memory.

7. The integrated circuit of claim 1 , wherein the load store circuit is further configured to:

store, in the store buffer, a second value of a second store instruction received by the load store circuit;

receive an indication that the second store instruction is not to be committed; and

in response to the received indication, flush the second value from the store buffer.

8. The integrated circuit of claim 7 , wherein flushing the second value includes the load store circuit reverting a write pointer of the store buffer to cause the second value to be subsequently overwritten.

9. The integrated circuit of claim 7 , wherein flushing the second value includes the load store circuit clearing a validity bit for an entry including the second value.

10. A method, comprising:

a processor issuing a first store instruction to a load store circuit of the processor, wherein the first store instruction is executable to store a first value in memory;

the load store circuit storing the first value in an entry of a store buffer of the processor wherein the storing includes storing a validity bit in the entry;

subsequent to the storing, the processor determining to commit the first store instruction;

in response to the determining, the load store circuit storing a drain bit in the entry, wherein the drain bit indicates that the first store instruction has been committed and that the first value is permitted to be provided to the memory; and

based on the drain bit, the processor providing the first value from the store buffer to the memory for storage.

11. The method of claim 10 ,

wherein the store buffer is configured to simultaneously store values of committed store instructions and values of non-committed store instructions.

12. The method of claim 10 , wherein the storing includes using a write pointer of the store buffer to identify the entry in the store buffer to store the first value; and

wherein the providing includes using a read pointer of the store buffer to identify the entry to read the first value from the store buffer.

13. The method of claim 10 , further comprising:

the processor determining that a misprediction of a branch instruction has occurred; and

in response to the misprediction, the processor causing one or more values of non-committed store instructions to be flushed from the store buffer and not written to the memory.

14. The method of claim 13 , further comprising:

the load store circuit flushing the one or more values by reverting a write pointer of the store buffer to a previously identified entry of a committed store instruction.

15. A computing device, comprising:

a processor comprising a load store circuit configured to facilitate execution of store instructions executable to store data values in memory; and

wherein the load store circuit is configured to:

write the data values to a store buffer while the store instructions commit and until the data values are written to memory, wherein writing the data values includes:

storing a first data value of a first store instruction in the store buffer;

receiving a first indication that the first store instruction is being committed by the processor; and

in response to the first indication, storing a commit value in the store buffer to indicate that the first data value is permitted to be written to memory.

16. The computing device of claim 15 , wherein the load store circuit is further configured to:

store a second data value of a second store instruction in the store buffer;

receive a second indication that the second store instruction is not being committed; and

in response to the second indication, store a value in the store buffer to indicate that the second data value is not permitted to be written to memory.

17. The computing device of claim 16 , wherein the processor is configured to provide the second indication in response to determining that an outcome of a branch instruction has been mispredicted.

18. The computing device of claim 16 , wherein the load store circuit is further configured to:

in response to the second indication, reset a write pointer of the store buffer to an entry corresponding to a most recently committed store instruction, wherein the write pointer is usable by the load store circuit to identify an available entry in the store buffer to store a newly received data value of a store instruction.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2022
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: CADENCE DESIGN SYSTEMS, INC.
Reel/Frame 060334/0340 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2019
From: PANWAR, DEEPAK; RAB, MUHAMMAD TAUSEEF
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 048170/0935 →
Continuity (2)
Provisional Application 62773802 · Nov 30, 2018
Related Publication 20200174795A1 · Jun 4, 2020