Register renaming
A read from a register or memory location must return the value placed there by the last write in program order, not some other write.  This is referred to as a true dependency or flow dependency, and requires the instructions to execute in program order.