Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Re-order buffer
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Multiple issues| {{More citations needed|date=July 2019}} {{No footnotes|date=July 2019}} }} A '''re-order buffer''' ('''ROB''') is a hardware unit used in an extension to [[Tomasulo's algorithm]] to support [[out-of-order execution|out-of-order]] and [[speculative execution|speculative]] instruction execution. The extension forces instructions to be committed in-order. The buffer is a [[circular buffer]] (to provide a [[FIFO (computing and electronics)|FIFO]] instruction ordering queue) implemented as an [[Array (data structure)|array/vector]] (which allows recording of results against instructions as they complete out of order). There are three stages to the Tomasulo algorithm: "Issue", "Execute", "Write Result". In an extension to the algorithm, there is an additional "Commit" stage. During the Commit stage, instruction results are stored in a register or memory. The "Write Result" stage is modified to place results in the re-order buffer. Each instruction is tagged in the [[reservation station]] with its index in the ROB for this purpose. The contents of the buffer are used for data dependencies of other instructions scheduled in the buffer. The head of the buffer will be committed once its result is valid. Its dependencies will have already been calculated and committed since they must be ahead of the instruction in the buffer though not necessarily adjacent to it. Data dependencies between instructions would normally stall the pipeline while an instruction waits for its dependent values. The ROB allows the pipeline to continue to process other instructions while ensuring results are committed in order to prevent [[data hazard]]s such as read ahead of write (RAW), write ahead of read (WAR) and write ahead of write (WAW). There are additional fields in every entry of the buffer to support the extended algorithm: * Instruction type (jump, store to memory, store to register) * Destination (either memory address or register number) * Result (value that goes to destination or indication of a (un)successful jump) * Validity (does the result already exist?) The consequences of the re-order buffer include precise [[Exception handling|exceptions]] and easy [[Rollback (data management)|rollback]] control of [[Branch target predictor|target address mis-predictions]] (branch or jump). When jump prediction is not correct or a nonrecoverable exception is encountered in the instruction stream, the ROB is cleared of all instructions (by setting the circular queue tail to the head) and reservation stations are re-initialized. ==References== {{Reflist}} ==External links== *[https://www.youtube.com/watch?v=mFtX28lH4O8 Hardware Based Speculation - Prof. Dr. Ben H. Juurlink] *[https://web.archive.org/web/20040724215416/http://lgjohn.okstate.edu/6253/lectures/reorder.pdf Reorder Buffer] [[Category:Instruction processing]] {{comp-sci-stub}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Comp-sci-stub
(
edit
)
Template:Multiple issues
(
edit
)
Template:Reflist
(
edit
)