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.