System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word
First Claim
1. A method for forwarding store data accessed by a load from a store queue, the method comprising:
- selecting a first byte accessed by said load from a first store queue entry within said store queue, wherein a first store corresponding to said first store queue entry is most recent, in program order, to update said first byte; and
selecting a second byte accessed by said load from a second store queue entry within said store queue, wherein said second store queue entry is different than said first store queue entry, and wherein a second store corresponding to said second store queue entry is most recent, in program order, to update said second byte, and wherein said selecting said second byte is independent of said selecting said first byte.
3 Assignments
0 Petitions
Accused Products
Abstract
A load/store unit searches a store queue included therein for each byte accessed by the load independently from the other bytes, and determines the most recent store (in program order) to update that byte. Accordingly, even if one or more bytes accessed by the load are modified by one store while one or more other bytes accessed by the load are modified by another store, the forwarding mechanism may assemble the bytes accessed by the load. More particularly, load data may be forwarded accurately from an arbitrary number of stores. In other words, forwarding may occur up to N stores (where N is the number of bytes accessed by the load). In one particular embodiment, the load/store unit generates a bit vector from a predetermined set of least significant bits of the addresses of loads and stores. The bit vector includes a bit for each byte in a range defined by the number of least significant bits. The bit indicates whether or not the byte is updated (for store bit vectors) or accessed (for load bit vectors). The load/store unit may then examine the bit vectors (and compare the remaining bits of the store and load addresses, exclusive of the least significant bits used to generate the bit vectors) in order to locate the most recent update of each byte.
132 Citations
26 Claims
-
1. A method for forwarding store data accessed by a load from a store queue, the method comprising:
-
selecting a first byte accessed by said load from a first store queue entry within said store queue, wherein a first store corresponding to said first store queue entry is most recent, in program order, to update said first byte; and selecting a second byte accessed by said load from a second store queue entry within said store queue, wherein said second store queue entry is different than said first store queue entry, and wherein a second store corresponding to said second store queue entry is most recent, in program order, to update said second byte, and wherein said selecting said second byte is independent of said selecting said first byte. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A load/store unit comprising:
-
a store queue configured to store addresses and data corresponding to stores which are not yet retired to a data cache; and forwarding logic coupled to said store queue and to receive a load address, wherein said forwarding logic is configured to determine, independently for each one of a plurality of bytes accessed by a load corresponding to said load address, which one of said stores stored in said store queue is a most recent update of said one of said plurality of bytes, and wherein said forwarding logic is configured to select at least one of said plurality of bytes from one store within said store queue and at least another one of said plurality of bytes from another store within said store queue. - View Dependent Claims (15, 16, 17)
-
-
18. A processor comprising:
-
at least one execution core including one or more address generation units, wherein said address generation units are configured to generate load addresses corresponding to loads and store addresses corresponding to stores; and a load/store unit coupled to said execution core, said load/store unit including a store queue configured to store said store addresses and corresponding store data for stores outstanding within said processor, said load/store unit configured to receive said load addresses and to forward store data corresponding to said loads from said store queue if store data corresponding to said loads is stored therein, wherein said load/store unit is configured to select a particular store within said store queue from which to forward data independently, on a byte by byte basis, for each byte accessed by a particular load. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26)
-
Specification