Speculation

2 min read Updated Fri Apr 24 2026 03:46:02 GMT+0000 (Coordinated Universal Time)

Execute instructions along predicted path. Commit only if prediction correct. Otherwise throw away ROB entries. Requires branch prediction. Handled by hardware.

More speculation provides better performance but has downsides:

  • Higher misprediction penalty
  • Higher energy usage
  • More cache/TLB misses

Degrades energy efficiency if predictions are frequently wrong (relative to no speculation). Might also cause cache pollution.

Reorder Buffer

Aka. ROB. Holds results until they are ready to be committed. Prevents state update until commit.

Stores:

  • Instruction type
  • Destination register
  • Value
  • Ready bit

Steps

Issue

Allocate a Reservation Station entry and a Reorder Buffer entry for the instruction. Read any source operands that are already available; if not available, store the tags of the producing instructions. Dispatch step in hardware-based speculation.

Execute

The instruction in the RS begins execution as soon as all operand values are ready. Enables out-of-order execution.

Write Result

When the functional unit finishes, the result and ROB tag are broadcasted using CDB. ROB entry will be updated to be ready. Any RS entries waiting for that tag capture the value.

Commit

When the instruction reaches the head of the ROB and its ready:

  • The CPU updates the architectural register file or memory.
  • The ROB entry is freed.

If the committing instruction is a mispredicted branch, speculated entries are discarded. The pipeline is flushed and execution restarts from the correct path.