The Intel 64 and IA-32 Architectures Software Developer's Manual says the following about re-ordering of actions by a single processor (Section 8.2.2, "Memory Ordering in P6 and More Recent Processor Families"):
Reads may be reordered with older writes to different locations but not with older writes to the same location.
Then below when discussing points where this is relaxed compared to earlier processors, it says:
Store-buffer forwarding, when a read passes a write to the same memory location.
As far as I can tell, "store-buffer forwarding" isn't precisely defined anywhere (and neither is "pass"). What does it mean for a read to pass a write to the same location here, given that above it says that reads can't be reordered with writes to the same location?
See Question&Answers more detail:os