IP Library › Granted Patent US 12,141,073
Granted Patent B1
US 12,141,073 · App. 18/305,437 · Granted Nov 12, 2024

Methods and apparatus for inflight data forwarding and invalidation of pending writes in store queue

Inventors: Naveen Bhoria (Plano, TX); Timothy David Anderson (University Park, TX); Pete Michael Hippleheuser (Murphy, TX)
Assignee: Texas Instruments Incorporated
G06F12/0891G06F12/1027
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,141,073
App. No.
18/305,437
Granted
Nov 12, 2024
Kind
B1
Abstract

Methods, apparatus, systems and articles of manufacture are disclosed to forward and invalidate inflight data in a store queue. An example apparatus includes a cache storage, a cache controller coupled to the cache storage and operable to receive a first memory operation, determine that the first memory operation corresponds to a read miss in the cache storage, determine a victim address in the cache storage to evict in response to the read miss, issue a read-invalidate command that specifies the victim address, compare the victim address to a set of addresses associated with a set of memory operations being processed by the cache controller, and in response to the victim address matching a first address of the set of addresses corresponding to a second memory operation of the set of memory operations, provide data associated with the second memory operation.

Claims (78)

1. An integrated circuit comprising:

a cache memory; and

a store queue coupled to the cache memory and configured to:

store a first address and a first set of data associated with an instruction;

receive a second address associated with an eviction of a second set of data from the cache memory;

determine whether the first address and the second address are the same; and

based on the first address and the second address being the same, invalidate the first set of data in the store queue.

2. The integrated circuit of claim 1 , wherein:

the store queue includes:

a set of pipeline stages; and

a pending address data store configured to store, for each pipeline stage of the set of pipeline stages, a respective address associated with the respective pipeline stage; and

the store queue is configured to determine whether the first address and the second address are the same by comparing the second address to the respective address of each pipeline stage of the set of pipeline stages as stored in the pending address data store.

3. The integrated circuit of claim 1 , wherein:

the cache memory is a main cache memory;

the integrated circuit further includes a victim cache memory coupled to the store queue; and

the store queue is configured to, based on the first address and the second address being the same, provide the first set of data for writing to the victim cache memory.

4. The integrated circuit of claim 3 , wherein:

the store queue includes a set of pipeline stages;

each stage of the set of pipeline stages includes a respective set of latches; and

the store queue includes a multiplexer that includes a respective input coupled to each set of latches of the sets of latches of the set of pipeline stages and an output configured to provide the first set of data for writing to the victim cache memory.

5. The integrated circuit of claim 1 , wherein:

the cache memory is a level one (L1) cache memory;

the integrated circuit further includes a level two (L2) cache memory; and

the store queue is configured to, based on the first address and the second address being the same, provide the first set of data for writing to the L2 cache memory.

6. The integrated circuit of claim 5 , wherein:

the store queue includes a set of pipeline stages;

each stage of the set of pipeline stages includes a respective set of latches; and

the store queue includes a multiplexer that includes a respective input coupled to each set of latches of the sets of latches of the set of pipeline stages and an output configured to provide the first set of data for writing to the L2 cache memory.

7. The integrated circuit of claim 1 further comprising a cache controller coupled to the cache memory and to the store queue and configured to:

receive a read instruction;

determine that the read instruction corresponds to a read miss in the cache memory; and

based on the read instruction corresponding to the read miss:

determine the second address associated with the eviction of the second set of data from the cache memory; and

provide the second address to the store queue.

8. The integrated circuit of claim 7 further comprising a tag memory coupled to the cache controller, wherein the cache controller is configured to determine that the read instruction corresponds to the read miss in the cache memory based on the tag memory.

9. The integrated circuit of claim 1 , wherein the instruction is a write instruction.

10. The integrated circuit of claim 1 , wherein the store queue is configured to receive the second address by receiving a read-invalidate instruction that specifies the second address.

11. A circuit device comprising:

a cache memory;

a processor configured to provide a write instruction and a read instruction directed to the cache memory, wherein the write instruction has a first set of data and a first address associated therewith;

a cache controller coupled to the processor and configured to provide an invalidate instruction in response to the read instruction, wherein the invalidate instruction specifies a second address of a second set of data to be evicted from the cache memory; and

a store queue coupled to the cache controller and to the cache memory and that includes:

a set of pipeline stages; and

a pending address data store configured to store, for each pipeline stage of the set of pipeline stages, a respective address associated with the respective pipeline stage, wherein the store queue is configured to:

store the first address associated with the write instruction in the pending address data store; and

based on the invalidate instruction:

compare the second address of the second set of data to be evicted from the cache memory to the first address associated with the write instruction; and

based on the second address of the second set of data to be evicted from the cache memory matching the first address associated with the write instruction, invalidate the first set of data.

12. The circuit device of claim 11 , wherein:

the cache memory is a first cache memory;

each pipeline stage of the first set of pipeline stages includes a respective set of latches; and

the store queue includes a multiplexer that includes a respective input coupled to the respective set of latches of each pipeline stage of the first set of pipeline stages and an output configured to provide the first set of data for writing to a second cache memory.

13. The circuit device of claim 12 , wherein:

the first cache memory is a main cache memory; and

the second cache memory is a victim cache memory.

14. The circuit device of claim 12 , wherein:

the first cache memory is a level one (L1) cache memory; and

the second cache memory is a level two (L2) cache memory.

15. A method comprising:

receiving a first instruction that has a first address and a first set of data associated therewith;

storing the first address and the first set of data in a store queue coupled to a cache memory;

receiving, at the store queue, a second address associated with an eviction of a second set of data from the cache memory;

determining whether the first address and the second address are the same; and

determining whether to invalidate the first set of data in the store queue based on whether the first address and the second address are the same.

16. The method of claim 15 , wherein:

the cache memory is a main cache memory; and

the method further comprises determining whether to forward the first set of data from the store queue for writing to a victim cache memory based on whether the first address and the second address are the same.

17. The method of claim 15 , wherein:

the cache memory is a level one (L1) cache memory; and

the method further comprises determining whether to forward the first set of data from the store queue for writing to a level two (L2) cache memory based on whether the first address and the second address are the same.

18. The method of claim 15 further comprising:

receiving a read instruction;

determining whether the read instruction corresponds to a miss in the cache memory; and

based on the read instruction corresponding to the miss in the cache memory:

determining the second address associated with the eviction of the second set of data from the cache memory; and

providing the second address to the store queue.

19. The method of claim 15 , wherein the first instruction is a write instruction.

20. The method of claim 15 , wherein the receiving of the second address includes receiving a read-invalidate instruction that specifies the second address.

Continuity (2)
Continuation 16882252 · May 22, 2020
Provisional Application 62852494 · May 24, 2019