CPC G06F 12/0891 (2013.01) [G06F 9/30043 (2013.01); G06F 9/3836 (2013.01)] | 31 Claims |
1. A microprocessor that prevents same address load-load ordering violations, comprising:
a cache;
a load queue, wherein each entry of the load queue is configured to hold:
a load physical memory line address associated with a load instruction; and
an indication of whether the load instruction has completed execution;
wherein the microprocessor is configured to:
perform a fill of a copy of a line of memory specified by a fill physical memory line address into an entry of the cache;
perform a snoop of the load queue with the fill physical memory line address, wherein the snoop is performed either before the fill or in an atomic manner with the fill, wherein the atomic manner is with respect to ability of the filled entry to be hit upon by any load instruction;
determine, based on the snoop, whether a condition is true, wherein the condition comprises:
the fill physical memory line address matches one or more load physical memory line addresses in one or more entries of the load queue associated with one or more load instructions that have completed execution; and
there are one or more other load instructions in the load queue that have not completed execution; and
if the condition is true, flush at least the one or more other load instructions in the load queue that have not completed execution.
|