DYNAMICALLY ALLOCATED STORE QUEUE FOR A MULTITHREADED PROCESSOR
First Claim
1. A store queue comprising:
- an array comprising a plurality of entries, wherein each entry is configured to store data for a committed store instruction, and wherein the array is configured to;
dynamically allocate an entry of the array out of program order; and
convey store data of each entry of the plurality of entries in program order;
circuitry configured to;
identify a first entry of the entries that corresponds to an oldest committed store instruction for a given thread; and
determine a next entry of the array that corresponds to a next committed store instruction in program order following the oldest committed store instruction of the given thread, wherein said next entry includes data identifying the first entry.
2 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods for storage of writes to memory corresponding to multiple threads. A processor comprises a store queue, wherein the queue dynamically allocates a current entry for a committed store instruction in which entries of the array may be allocated out of program order. For a given thread, the store queue conveys store data to a memory in program order. The queue is further configured to identify an entry of the plurality of entries that corresponds to an oldest committed store instruction for a given thread and determine a next entry of the array that corresponds to a next committed store instruction in program order following the oldest committed store instruction of the given thread, wherein said next entry includes data identifying the entry. The queue marks an entry as unfilled upon successful conveying of store data to the memory.
34 Citations
20 Claims
-
1. A store queue comprising:
-
an array comprising a plurality of entries, wherein each entry is configured to store data for a committed store instruction, and wherein the array is configured to; dynamically allocate an entry of the array out of program order; and convey store data of each entry of the plurality of entries in program order; circuitry configured to; identify a first entry of the entries that corresponds to an oldest committed store instruction for a given thread; and determine a next entry of the array that corresponds to a next committed store instruction in program order following the oldest committed store instruction of the given thread, wherein said next entry includes data identifying the first entry. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method comprising:
-
storing data for a committed store instruction in an array comprising a plurality of entries; dynamically allocating an entry of the array out of program order; and conveying store data of each entry of the plurality of entries in program order; identifying a first entry of the plurality of entries that corresponds to an oldest committed store instruction for a given thread; and determining a next entry of the array that corresponds to a next committed store instruction in program order following the oldest committed store instruction of the given thread, wherein said next entry includes data identifying the first entry. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A computer readable storage medium storing program instructions operable to efficiently store pending writes to memory corresponding to multiple threads, wherein the program instructions are executable to:
-
store data for a committed store instruction in an array comprising a plurality of entries; dynamically allocate an entry of the array for a committed store instruction, wherein entries of the array may be allocated out of program order; and convey store data of committed store instructions of each entry of the plurality of entries in program order; identify a first entry of the plurality of entries that corresponds to an oldest committed store instruction for a given thread; and determine a next entry of the array that corresponds to a next committed store instruction in program order following the oldest committed store instruction of the given thread, wherein said next entry includes data identifying the first entry. - View Dependent Claims (18, 19, 20)
-
Specification