Re-Order Buffer

AMULET3 uses a re-order buffer to merge results from the data memory and the ALU prior to writing them back in issue order to the register bank. Values stored in the re-order buffer pending writeback can be forwarded to following instructions. This model is a simplified version of the AMULET3 mechanism that omits many of the details.

The source code can be found here.

Here is a screenshot from the execution of the model:

At the top left of the display a new instruction requests a value from register 2. The ROB responds by forwarding the value 72. The new instruction then requests a space in the ROB for its result, destined for register 1. The ROB responds by allocating tag 2.

The instruction is despatched to the data memory and at around time 1400 the result, 40, is passed to the ROB along with its tag 2. Shortly later the ROB writes this value into the register bank in register 1, as originally requested.