複製鏈接
請複製以下鏈接發送給好友

重排序緩衝區

鎖定
重排序緩衝區英語re-order buffer, ROB))可以使指令在亂序執行,之後按照原有順序提交。
中文名
重排序緩衝區
外文名
re-order buffer
含    義
指令在亂序執行,之後有順應提交
類    型
緩衝區
意    義
更好的操作

重排序緩衝區簡介

在最初的動態調度亂序執行機制中,主要分三個階段:發射(issue)、執行(execute)和寫結果(write Result)。Tomasulo算法則增加了一個被稱為“提交(Commit)”的過程。在寫結果階段,指令的結果暫時被存儲在重排序緩衝區中。隨後,指令執行的結果再被儲存在寄存器或主存儲器中。如果其他指令急切需要此結果,那麼重排序緩衝區可以直接為其傳輸所需的數據。

重排序緩衝區Tomasulo算法

Tomasulo算法(托馬蘇洛算法)是IBM的Robert Tomasulo在1967年研發出來的一種用來改善處理器亂序執行指令級並行性的硬件算法
在處理器中,先後執行的指令之間經常具有相關性(例如後一條指令用到前一條指令向寄存器寫入的結果),因此早期簡單的處理器使後續指令停頓,直到其所需的資源已經由前序指令準備就緒。Tomasulo算法則通過動態調度的方式,在不影響結果正確性的前提下,重新排列指令實際執行的順序(亂序執行),提高時間利用效率。IBM System/360 Model 91處理器的浮點運算器中率先使用了這種算法。
該算法與之前同樣用於實現指令流水線動態調度的計分板不同在於它使用了寄存器重命名機制。指令之間具有數據相關性(例如後條指令的源寄存器恰好是前條指令要寫入的目標寄存器),進行動態調度時必須避免三類冒險:寫後讀(Read-after-Write, RAW)、寫後寫(Write-after-Write, WAW)、讀後寫(Write-after-Read, WAR)。第一種冒險也被稱為真數據相關(true data dependence),而後兩種冒險則並沒有那麼致命,它們可以由寄存器重命名來予以解決。Tomasulo算法使用了一個共享數據總線(common data bus, CDB)將已計算出的值廣播給所有需要這個值作為指令源操作數的保留站。該算法儘可能降低了使用計分板技術導致的流水線停頓,從而改善了並行計算的效率。 [1] 

重排序緩衝區亂序執行

在計算機工程領域,亂序執行錯序執行,英語:out-of-order execution,簡稱OoOEOOE)是一種應用在高性能微處理器中來利用指令週期以避免特定類型的延遲消耗的範式。在這種範式中,處理器在一個由輸入數據可用性所決定的順序中執行指令,而不是由程序的原始數據所決定。在這種方式下,可以避免因為獲取下一條程序指令所引起的處理器等待,取而代之的處理下一條可以立即執行的指令。 [2] 
參考資料
  • 1.    John L. Hennessy, David A. Patterson. Computer architecture : a Quantitative Approach (Fourth edition). Elsevier. ISBN 978-0-12-370490-0.
  • 2.    Smith; Pleszkun. Implementation of precise interrupts in pipelined processors. Proceeding ISCA '85 Proceedings of the 12th annual international symposium on Computer architecture. 1985.