Out-of-order execution vs. speculative execution

Speculative execution and out-of-order execution are orthogonal. One could design a processor that is OoO but not speculative or speculative but in-order. OoO execution is an execution model in which instructions can be dispatched to execution units in an order that is potentially different from the program order. However, the instructions are still retired in … Read more

Can a speculatively executed CPU branch contain opcodes that access RAM?

The cardinal rules of speculative out-of-order (OoO) execution are: Preserve the illusion of instructions running sequentially, in program order Make sure speculation is contained to things that can be rolled back if mis-speculation is detected, and that can’t be observed by other cores to be holding a wrong value. Physical registers, the back-end itself that … Read more