The reorder buffer keeps the original program order of the instructions after instruction issue and allows result serialization during the retire stage.
State bits store if an instruction is on a speculative path, and when the branch is resolved, if the instruction is on a correct path or must be discarded.
When an instruction completes, the state is marked in its entry.
Exceptions are marked in the reorder buffer entry of the triggering instruction.
The reorder buffer is implemented as a circular FIFO buffer.
Reorder buffer entries are allocate in the (first) issue stage and deallocated serially when the instruction retires.