重排序緩衝區

重排序緩衝區英語re-order buffer, ROB))可以使指令在亂序執行,之後按照原有順序提交。

基本介紹

  • 中文名:重排序緩衝區
  • 外文名:re-order buffer
  • 含義:指令在亂序執行,之後有順應提交
  • 類型:緩衝區
  • 意義:更好的操作
簡介,Tomasulo算法,亂序執行,

簡介

在最初的動態調度亂序執行機制中,主要分三個階段:發射(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)將已計算出的值廣播給所有需要這個值作為指令源運算元的保留站。該算法儘可能降低了使用計分板技術導致的流水線停頓,從而改善了並行計算的效率。

亂序執行

計算機工程領域,亂序執行錯序執行,英語:out-of-order execution,簡稱OoOEOOE)是一種套用在高性能微處理器中來利用指令周期以避免特定類型的延遲消耗的範式。在這種範式中,處理器在一個由輸入數據可用性所決定的順序中執行指令,而不是由程式的原始數據所決定。在這種方式下,可以避免因為獲取下一條程式指令所引起的處理器等待,取而代之的處理下一條可以立即執行的指令。

相關詞條

熱門詞條

聯絡我們