Store forwarding for data caches
First Claim
1. A memory device comprising:
- a data buffer storing data destined for a cache until the cache is ready to accept the data;
a store address buffer storing addresses of data stored in the data buffer, wherein the addresses are stored as address entries in the store address buffer, and wherein each address entry includes an address range;
a demarcator to identify (i) those address entries in the store address buffer that include an address range at least partially overlapping with an address of data to be loaded and (ii) whether or not the address range of each respective address entry in the store address buffer has been overwritten by an address range of a later added address entry; and
a processing device to load at least a subset of data from the data buffer instead of the cache if only one address entry in the store address buffer is identified as both having an overlapping address range and as not having its address range been overwritten.
1 Assignment
0 Petitions
Accused Products
Abstract
A bit or other vector may be used to identify whether an address range entered into an intermediate buffer corresponds to most recently updated data associated with the address range. A bit or other vector may also be used to identify whether an address range entered into an intermediate buffer overlaps with an address range of data that is to be loaded. A processing device may then determine whether to obtain data that is to be loaded entirely from a cache, entirely from an intermediate buffer which temporarily buffers data destined for a cache until the cache is ready to accept the data, or from both the cache and the intermediate buffer depending on the particular vector settings. Systems, devices, methods, and computer readable media are provided.
14 Citations
20 Claims
-
1. A memory device comprising:
-
a data buffer storing data destined for a cache until the cache is ready to accept the data; a store address buffer storing addresses of data stored in the data buffer, wherein the addresses are stored as address entries in the store address buffer, and wherein each address entry includes an address range; a demarcator to identify (i) those address entries in the store address buffer that include an address range at least partially overlapping with an address of data to be loaded and (ii) whether or not the address range of each respective address entry in the store address buffer has been overwritten by an address range of a later added address entry; and a processing device to load at least a subset of data from the data buffer instead of the cache if only one address entry in the store address buffer is identified as both having an overlapping address range and as not having its address range been overwritten. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method comprising:
-
comparing an address range of data to be loaded to address ranges of a plurality of address entries, wherein the address entries are temporarily stored in an intermediate buffer together with associated data until a cache is ready to accept the associated data; identifying those address entries, if any, that have an address range at least partially overlapping with the address range of the data to be loaded, using a processing device; identifying whether each of the address entries includes an address range that has been overwritten by an address range of a later added address entry; loading the data to be loaded from the cache if no address entries are identified as having an overlapping address range; and loading at least a subset of the data to be loaded from the intermediate buffer if only one of the address entries is identified as both having an overlapping address range and not having its address range been overwritten. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A non-transitory computer readable medium storing instructions that, when executed by a processing device, cause the processing device to:
-
compare an address range of data to be loaded to a plurality of address ranges of address entries, wherein the address entries are temporarily stored in an intermediate buffer together with associated data until a cache is ready to accept the associated data; identify those address entries, if any, that have an address range at least partially overlapping with the address range of the data to be loaded; identify whether the address range of each of the address entries has been overwritten by an address range of a later added address entry; load the data to be loaded from the cache if no address entries are identified as having an overlapping address range; and load at least a subset of the data to be loaded from the intermediate buffer if only one of the address entries is identified as both having an overlapping address range and not having its address range been overwritten. - View Dependent Claims (16, 17)
-
-
18. A system comprising:
-
a cache; a data buffer storing data destined for a cache until the cache is ready to accept the data; a store address buffer storing, for each data entry stored in the data buffer, an associated address entry, a first vector, and a second vector, wherein the first vector is set to a first value if an address range of a respective address entry has not been overwritten by an address range of a later added address entry, and wherein the second vector is set to a second value if the address range of the respective address entry at least partially overlaps with an address range of data to be loaded; and a processing device configured to load the data to be loaded;
(i) from the cache if the first and the second vectors are not set to the respective first and second values for any of the address entries in the store address buffer and (ii) at least in part from the data buffer if the first and the second vectors are set to the respective first and second values for only one of the address entries in the store address buffer. - View Dependent Claims (19, 20)
-
Specification