• Usually used with Operand Forwarding to handle negative performance impact caused by Pipeline Stall
  • The idea is to execute independent Instruction in between instruction that are dependent on each other by shifting the order of execution defined in a given program. So those independent instructions can avoid pipeline stall. Thus, minimize idle time


Without Out-of-Order Execution

  • The third instruction has to stop because the second instruction stops

With Out-of-Order Execution

  • 2 pipeline stalls are removed