Jump to content

Re-order buffer

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 114.70.10.1 (talk) at 13:22, 20 September 2009. 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.

Additional benefits include allowing for precise exceptions and easy rollback for control of target address mispredictions (branch or jump). this is really good

Also, a reorder buffer is an additional place that execution units (or issue units) must look for operands in addition to the actual registers, and generally somewhere else as well (as we will see when we look at dynamic scheduling algorithms in chapter 9). This again means more work to do, and potentially worse performance.

An alternative is instead to provide a large set of registers and dynamically decide at any point in time which ones represent the actual architectural registers. For example, in a machine with 16 architectural registers we might provide a set of 64 physical registers. At any point in time, only 16 of these will correspond with the actual architectural register set – precisely which 16 changing as the program executes. This method – usually just called Register Renaming – solves the problems above.

However, it has problems of its own. One is deciding at any one time which registers are live – that is, contain results that are still needed. Note that the live registers are not exactly the same set of registers as those corresponding with the architectural ones – determining those is another problem.

Most of the time it does not matter which registers correspond with the architectural ones. However, when a context switch occurs it is necessary to know which ones to save – so there must be a means of finding this out. This is potentially a fair amount of work – however much of it can be done in parallel with the operation of the rest of the pipeline, meaning it is not on the critical path and will not slow it down. The Pentium 4 has chosen to change from a reorder buffer to register renaming.