CPC G06F 12/0864 (2013.01) [G06F 2212/6032 (2013.04)] | 21 Claims |
1. A microprocessor, comprising:
a load/store unit configured to perform store-to-load forwarding;
a physically-indexed physically-tagged second-level set-associative cache, wherein each entry in the second-level cache is uniquely identified by a set index and a way of the second-level cache;
a store queue having store entries, wherein each store entry is configured to hold, for an associated store instruction to which the store entry has been allocated:
a store physical address proxy (PAP) for a store physical memory line address that is a translation of a store virtual memory line address specified by the associated store instruction, wherein the store PAP specifies the set index and the way of the entry in the second-level cache into which a cache line specified by the store physical memory line address is allocated; and
a load queue having load entries, wherein each load entry is configured to hold, for an associated load instruction to which the load entry has been allocated:
a load PAP for a load physical memory line address that is a translation of a load virtual memory line address specified by the associated load instruction, wherein the load PAP specifies the set index and the way of the entry in the second-level cache into which a cache line specified by the load physical memory line address is allocated; and
forwarding information about store-to-load forwarding with respect to the associated load instruction; and
wherein the load/store unit is configured to:
make a comparison of the store PAP associated with the store instruction with the load PAP of each valid entry of the load queue whose associated load instruction is younger in program order than the store instruction; and
use the comparison, along with the associated forwarding information, to make a store-to-load forwarding correctness check with respect to each younger load instruction.
|