Patentable/Patents/US-6591342
US-6591342

Memory disambiguation for large instruction windows

PublishedJuly 8, 2003
Assigneenot available in USPTO data we have
Inventorsnot available in USPTO data we have
Technical Abstract

A memory disambiguation apparatus includes a store queue, a store forwarding buffer, and a version count buffer. The store queue includes an entry for each store instruction in the instruction window of a processor. Some store queue entries include resolved store addresses, and some do not. The store forwarding buffer is a set-associative buffer that has entries allocated for store instructions as store addresses are resolved. Each entry in the store forwarding buffer is allocated into a set determined in part by a subset of the store address. When the set in the store forwarding buffer is full, an older entry in the set is discarded in favor of the newly allocated entry. A version count buffer including an array of overflow indicators is maintained to track overflow occurrences. As load addresses are resolved for load instructions in the instruction window, the set-associative store forwarding buffer can be searched to provide memory disambiguation.

Patent Claims
24 claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

1. A method of executing instructions in an out-of-order processor, the method comprising: receiving a first instruction to store a data value to a memory address; allocating a queue entry that corresponds to the first instruction; and conditionally assigning the first instruction to an entry in a set-associative buffer.

2

2. The method of claim 1 wherein conditionally assigning the first instruction to the entry in the set-associative buffer comprises: selecting a first set in the set-associative buffer; and when the first set is not full, assigning the first instruction to the first set.

3

3. The method of claim 2 further comprising: when the first set is full and an existing entry of the first set is older than the first instruction, discarding the existing entry of the first set and recording an overflow occurrence.

4

4. The method of claim 3 wherein recording an overflow occurrence comprises modifying an overflow indicator, the overflow indicator being one of a plurality of overflow indicators, including generating an overflow indicator address from the existing entry of the first set, and incrementing a value at the overflow indicator address.

5

5. The method of claim 4 wherein the plurality of overflow indicators are N in number, and generating the overflow indicator address comprises determining the memory address modulo N.

6

6. The method of claim 2 further comprising: when the first set is full and an existing entry of the first set is not older than the first instruction, not assigning the first instruction to an entry in the set associative buffer, and recording an overflow occurrence.

7

7. A method of executing store instructions, the method comprising: issuing a first store instruction from a queue to a memory, the first store instruction having a memory address and a data value associated therewith; removing the first store instruction from the queue; searching a set-associative buffer for an entry corresponding to the first store instruction; and when the entry corresponding to the first store instruction is found, removing the entry from the set-associative buffer.

8

8. The method of claim 7 further comprising: searching an array of overflow indicators for an indication that the set-associative buffer has overflowed in the past; and modifying the array of overflow indicators to reflect a reduction in the number of overflows by one.

9

9. The method of claim 8 wherein the memory address is represented by M and the array is of integer size N, and searching the array comprises: determining an overflow indicator address as M modulo N; and inspecting a value at the overflow indicator address.

10

10. The method of claim 7 further comprising: looking up a counter value in a version count buffer, the counter value corresponding to the memory address associated with the first store instruction; and decrementing the counter value.

11

11. A method of executing instructions in an out-of-order processor, the method comprising: receiving a first instruction to load a data value from a memory address; and searching a set of a set-associative buffer for a second instruction upon which the first instruction depends.

12

12. The method of claim 11 further comprising: when the second instruction upon which the first instruction depends is found, retrieving the data value from the second instruction to execute the first instruction.

13

13. The method of claim 11 further comprising: when the second instruction upon which the first instruction depends is not found, searching an array of overflow indicators for an indication of a prior set-associative buffer overflow; and if the indication of a prior set-associative buffer overflow is not found, executing the first instruction.

14

14. A memory disambiguation apparatus comprising: a first queue to hold a first plurality of store instructions, the first plurality of store instructions being store instructions that are in an instruction window; and a set-associative buffer to hold a second plurality of store instructions organized in a plurality of sets to be searched for store instructions upon which any of a plurality of load instructions depend, each of the plurality of sets including a subset of the first plurality of store instructions, at least one of the second plurality of store instructions having resolved memory addresses included therewith.

15

15. The memory disambiguation apparatus of claim 14 further comprising: at least one overflow indicator to indicate when at least one of the plurality of sets in the set-associative buffer overflows.

16

16. The memory disambiguation apparatus of claim 15 wherein the at least one overflow indicator comprises a counter having a value that reflects a number of overflow occurrences.

17

17. The memory disambiguation apparatus of claim 15 wherein the at least one overflow indicator comprises an array of counters, each counter of the array of counters having a value that reflects a number of overflow occurrences.

18

18. The memory disambiguation apparatus of claim 14 wherein the set-associative buffer provides data to any of the plurality instructions when a dependence is found.

19

19. The memory disambiguation apparatus of claim 14 wherein the first queue holds the first plurality of store instructions in a first plurality of queue entries, each of the first plurality of queue entries comprising: a memory address field; a data value field; and a queue entry identifier field.

20

20. The memory disambiguation apparatus of claim 19 wherein each of the first plurality of store instructions that has a resolved memory address in the memory address field is included in the second plurality of store instructions, and each of the first plurality of store instructions that does not have a resolved memory address in the memory address field is not included in the second plurality of store instructions.

21

21. A memory disambiguation apparatus comprising: a set-associative buffer having a plurality of sets, each set including a plurality of buffer entries, each of the plurality of buffer entries including a tag field, wherein each of the plurality of buffer entries corresponds to one of a first plurality of store instructions in an instruction window; and a plurality of overflow indicators, each of the plurality of overflow indicators having a one-to-many relationship with the plurality of buffer entries in the set-associative buffer.

22

22. The memory disambiguation apparatus of claim 21 further comprising: a first queue including a first plurality of queue entries, wherein each of the first plurality of queue entries corresponds to one of a second plurality of store instructions, the first plurality of queue entries being a subset of the second plurality of store instructions.

23

23. The memory disambiguation apparatus of claim 22 wherein each of the plurality of buffer entries has a resolved memory address associated therewith.

24

24. The memory disambiguation apparatus of claim 22 further comprising a second queue having a second plurality of queue entries, wherein each of the plurality of second queue entries corresponds to one of a plurality of load instructions in the instruction window.

Classification Codes (CPC)

Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.

Patent Metadata

Filing Date

December 14, 1999

Publication Date

July 8, 2003

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “Memory disambiguation for large instruction windows” (US-6591342). https://patentable.app/patents/US-6591342

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.