The ISA Abstraction
The Instruction Set Architecture (ISA) promises the programmer that instructions execute one after another in strict program order: Instruction N+1 sees all changes made by Instruction N.
Microarchitectures are free to violate this internal execution order as long as the program-visible outcome is 100% indistinguishable from sequential execution.