Jump to content

Re-order buffer

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Sun Creator (talk | contribs) at 09:44, 17 June 2012 (General and Typo fixing, typos fixed: allready → already, successfull → successful using AWB). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

A re-order buffer (ROB) is used in a Tomasulo algorithm for out-of-order instruction execution. It allows instructions to be committed in-order.

Normally, three are three stages of instructions: "Issue", "Execute", "Write Result". In Tomasulo algorithm, an additional stage called "commit" came up. In this stage, results of instructions will be stored in the register or memory. And in the "Write Result" stage, the results are just put in the re-order buffer. All contents in this buffer can be used when executing other instructions depending on these.

There are additional fields in every entry of the buffer:

  • Instruction type (jump, store to memmory, store to register)
  • Destination (either memmory address or register number)
  • Result (value that goes to destination or indication of a (un)successful jump)
  • Validity (does the result already exist?)

Additional benefits include allowing for precise exceptions and easy rollback control of target address mispredictions (branch or jump). ROB works by storing ordered instructions. It can also be accessed from the side - each reservation station (in Tomasulo algorithm) has an additional parameter, which points to instruction in ROB. When jump prediction is not correct ROR gets deleted and reservation stations get re-initialised.