IP Library Granted Patent US 9,146,744
Granted Patent B2
US 9,146,744 · App. 12/116,009 · Granted Sep 29, 2015

Store queue having restricted and unrestricted entries

Inventors: Paul Caprioli (Santa Clara, CA); Martin Karlsson (San Francisco, CA); Shailender Chaudhry (San Francisco, CA); Gideon N. Levinsky (Austin, TX)
Assignee: ORACLE AMERICA, INC.
G06F9/3826G06F9/383G06F9/3842G06F9/3855
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 9,146,744
App. No.
12/116,009
Granted
Sep 29, 2015
Kind
B2
Abstract

Embodiments of the present invention provide a system which executes a load instruction or a store instruction. During operation the system receives a load instruction. The system then determines if an unrestricted entry or a restricted entry in a store queue contains data that satisfies the load instruction. If not, the system retrieves data for the load instruction from a cache. If so, the system conditionally forwards data from the unrestricted entry or the restricted entry by: (1) forwarding data from an unrestricted entry that contains the youngest store that satisfies the load instruction when any number of unrestricted or restricted entries contain data that satisfies the load instruction; (2) forwarding data from an unrestricted entry when only one restricted entry and no unrestricted entries contain data that satisfies the load instruction; and (3) deferring the load instruction by placing the load instruction in a deferred queue when two or more restricted entries and no unrestricted entries contain data that satisfies the load instruction.

Claims (85)

1. A method for processing a load instruction, comprising:

receiving the load instruction;

determining if an entry in a store queue contains data that satisfies the load instruction;

if no entry in the store queue contains data that satisfies the load instruction, retrieving data for the load instruction from a cache; and

if an entry in the store queue contains data that satisfies the load instruction, conditionally forwarding data from entry by:

forwarding data from an unrestricted entry that contains the youngest store that satisfies the load instruction when any number of unrestricted or restricted entries contain data that satisfies the load instruction;

forwarding data from an unrestricted entry when only one restricted entry and no unrestricted entries contain data that satisfies the load instruction; and

deferring the load instruction by placing the load instruction in a deferred queue when two or more restricted entries and no unrestricted entries contain data that satisfies the load instruction.

2. The method of claim 1 , wherein determining if an unrestricted entry contains data that satisfies the load instruction involves:

determining if any unrestricted entry in a set of unrestricted entries in the store queue contains a buffered store to a same cache line as the load;

for each such unrestricted entry, determining if an age of the unrestricted entry matches a global age counter; and

if the age of an unrestricted entry matches the global age counter, using a bitmask for the unrestricted entry to determine if each byte needed to satisfy the load instruction is contained in the unrestricted entry;

wherein an unrestricted entry satisfies the load instruction when the buffered store is directed to the same cache line, the bitmask indicates that each byte needed to satisfy the load instruction is contained in the entry, and the age of the entry and the global age counter match.

3. The method of claim 1 , wherein determining if a restricted entry contains data that satisfies the load instruction involves:

determining if any one restricted entry in the store queue contains a store directed to the same cache line as the load; and

for the restricted entry, using a bitmask for the restricted entry to determine if each byte for the load instruction is contained in the restricted entry;

wherein a restricted entry satisfies the load instruction when the buffered store is directed to the same cache line and the bitmask indicates that each byte needed to satisfy the load instruction is contained in the entry.

4. The method of claim 1 , wherein the method further comprises re-executing the deferred load when no more than one of the restricted entries contain data that satisfies the load instruction.

5. The method of claim 1 , further comprising:

receiving a new store to a cache line; and

determining if one or more unrestricted entries in the store queue contain buffered stores that are directed to a same cache line;

if not, buffering the new store in a next entry in the store queue;

if so, determining an age of the one or more unrestricted entries;

if an age of an unrestricted entry matches a global age counter, merging the new store into the unrestricted entry,

otherwise, buffering the new store in the next entry in the store queue.

6. The method of claim 1 , wherein forwarding data involves copying the data from an entry in the store queue to a processor register so that the processor register can be used in subsequent computational operations.

7. An apparatus that processes a load instruction, comprising:

a processor;

a cache coupled to the processor, wherein the cache stores data for the processor;

a store queue in the processor, wherein the processor is configured to buffer stores into the store queue until the stores have been committed to the cache;

wherein the processor is configured to receive a load instruction;

in response to receiving the load instruction, the processor is configured to determine if an entry in the store queue contains data that satisfies the load instruction;

if no entry in the store queue contains data that satisfies the load instruction, the processor is configured to retrieve data for the load instruction from the cache; and

if an entry in the store queue contains data that satisfies the load instruction, the processor is configured to conditionally forward data from the entry by:

forwarding data from an unrestricted entry that contains the youngest store that satisfies the load instruction when any number of unrestricted or restricted entries contain data that satisfies the load instruction;

forwarding data from an unrestricted entry when only one restricted entry and no unrestricted entries contain data that satisfies the load instruction; and

deferring the load instruction by placing the load instruction in a deferred queue when two or more restricted entries and no unrestricted entries contain data that satisfies the load instruction.

8. The apparatus of claim 7 , wherein when determining if an unrestricted entry contains data that satisfies the load instruction, the processor is configured to:

determine if any unrestricted entry in a set of unrestricted entries in the store queue contains a buffered store to a same cache line as the load;

for each such unrestricted entry, use a bitmask for the unrestricted entry to determine if each byte needed to satisfy the load instruction is contained in the unrestricted entry; and

if each byte needed to satisfy the load instruction is contained in the unrestricted entry, determine if an age of the unrestricted entry matches a global age counter;

wherein an unrestricted entry satisfies the load instruction when the buffered store is directed to the same cache line, the bitmask indicates that each byte needed to satisfy the load instruction is contained in the entry, and the age of the entry and the global age counter match.

9. The apparatus of claim 7 , wherein when determining if a restricted entry contains data that satisfies the load instruction, the processor is configured to:

determine if any one restricted entry in the store queue contains a store directed to the same cache line as the load; and

for the restricted entry, use a bitmask for the restricted entry to determine if each byte for the load instruction is contained in the restricted entry;

wherein a restricted entry satisfies the load instruction when the buffered store is directed to the same cache line and the bitmask indicates that each byte needed to satisfy the load instruction is contained in the entry.

10. The apparatus of claim 7 , wherein the processor is configured to re-execute the deferred load when no more than one of the restricted entries contain data that satisfies the load instruction.

11. The apparatus of claim 7 , wherein the processor is further configured to:

receive a new store to a cache line; and

determine if one or more unrestricted entries in the store queue contain buffered stores that are directed to a same cache line;

if not, the processor is configured to buffer the new store in a next entry in the store queue;

if so, the processor is configured to determine an age of the one or more unrestricted entries;

if an age of an unrestricted entry matches a global age counter, the processor is configured to merge the new store into the unrestricted entry,

otherwise, the processor is configured to buffer the new store in the next entry in the store queue.

12. The apparatus of claim 7 , wherein when forwarding data, the processor is configured to copy the data from an entry in the store queue to a processor register so that the processor can use the register in subsequent computational operations.

13. A computer system, comprising:

a processor;

a cache coupled to the processor, wherein the cache is a fast-access memory that stores recently-used data for the processor;

a mass-storage device coupled to the cache, wherein the mass-storage device is a high-capacity, slow-access storage memory that stores data for the processor;

a store queue in the processor, wherein the processor is configured to buffer stores into the store queue until the stores have been committed to the cache;

wherein the processor is configured to receive a load instruction;

in response to receiving the load instruction, the processor is configured to determine if an entry in the store queue contains data that satisfies the load instruction;

if no entry in the store queue contains data that satisfies the load instruction, the processor is configured to retrieve data for the load instruction from the cache; and

if an entry in the store queue contains data that satisfies the load instruction, the processor is configured to conditionally forward data from the entry by:

forwarding data from an unrestricted entry that contains the youngest store that satisfies the load instruction when any number of unrestricted or restricted entries contain data that satisfies the load instruction;

forwarding data from an unrestricted entry when only one restricted entry and no unrestricted entries contain data that satisfies the load instruction; and

deferring the load instruction by placing the load instruction in a deferred queue when two or more restricted entries and no unrestricted entries contain data that satisfies the load instruction.

14. The computer system of claim 13 , wherein when determining if an unrestricted entry contains data that satisfies the load instruction, the processor is configured to:

determine if any unrestricted entry in a set of unrestricted entries in the store queue contains a buffered store to a same cache line as the load;

for each such unrestricted entry, use a bitmask for the unrestricted entry to determine if each byte needed to satisfy the load instruction is contained in the unrestricted entry; and

if each byte needed to satisfy the load instruction is contained in the unrestricted entry, determine if an age of the unrestricted entry matches a global age counter;

wherein an unrestricted entry satisfies the load instruction when the buffered store is directed to the same cache line, the bitmask indicates that each byte needed to satisfy the load instruction is contained in the entry, and the age of the entry and the global age counter match.

15. The computer system of claim 13 , wherein when determining if a restricted entry contains data that satisfies the load instruction, the processor is configured to:

determine if any one restricted entry in the store queue contains a store directed to the same cache line as the load; and

for the restricted entry, use a bitmask for the restricted entry to determine if each byte for the load instruction is contained in the restricted entry;

wherein a restricted entry satisfies the load instruction when the buffered store is directed to the same cache line and the bitmask indicates that each byte needed to satisfy the load instruction is contained in the entry.

16. The computer system of claim 13 , wherein the processor is configured to re-execute the deferred load when no more than one of the restricted entries contain data that satisfies the load instruction.

17. The computer system of claim 13 , wherein the processor is further configured to:

receive a new store to a cache line; and

determine if one or more unrestricted entries in the store queue contain buffered stores that are directed to a same cache line;

if not, the processor is configured to buffer the new store in a next entry in the store queue;

if so, the processor is configured to determine an age of the one or more unrestricted entries;

if an age of an unrestricted entry matches a global age counter, the processor is configured to merge the new store into the unrestricted entry,

otherwise, the processor is configured to buffer the new store in the next entry in the store queue.

18. The computer system of claim 13 , wherein when forwarding data, the processor is configured to copy the data from an entry in the store queue to a processor register so that the processor can use the register in subsequent computational operations.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2008
From: CAPRIOLI, PAUL; KARLSSON, MARTIN; CHAUDHRY, SHAILENDER; LEVINSKY, GIDEON N.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 021046/0086 →
Continuity (1)
Related Publication 20090282225A1 · Nov 12, 2009