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

ROB

(重排序緩存)

鎖定
ROB,Re-order Buffer的縮寫,是指重排序緩存。用在Tomasulo算法中,使得指令順序被提交。
中文名
重排序緩存
外文名
ROB
任    務
令變序執行與實際結束分離
變序執行
動態調度的需要
必    須
把指令的執行結果
步    驟
變序執行與實際結束分離開來

ROB概念

(ROB,Reorder Buffer):重排序緩存。基於硬件的推測:
必須把指令變序執行與實際結束分離開來,成為兩步實現;
1、變序執行是動態調度的需要,必須把指令的執行結果,通過旁路方法,隨時提供給其它指令使用;
2、按序結束是為了確保實現精確中斷的需要(能確保恢復中斷前的狀態)。
為此,在Tomasulo算法把指令分為Issue, Execute, 和Write result三步的基礎上,增加一步,稱為Commit(交付,後提交)。Commit的功能(將在下面作進一步介紹)是指令將其結果交付給(寫入)目的寄存器或存儲單元
必須增加一硬件緩衝存儲器(buffer),供Write Result這一步存放已獲得的結果,並可以提供給其它指令應用這些結果。當指令進入Commit這一步時,將結果從buffer中拷貝到目的寄存器或存儲單元。這一硬件緩衝存儲器稱為重排序緩存(ROB,Reorder Buffer)。

ROB作用

相當於一個額外虛擬寄存器,相當於Tomasulo算法中的保存站、Load buffer和store buffer等的功能。(注意,在基於Tomasulo的硬件推測中,取消了Load buffer部件,將其和ROB合併在一起。)
1、ROB在指令完成操作之後直到交付之前這段時間裏保存該指令的結果,作為其它指令操作數的源,類似於Tomasulo算法中保留站作用。
2、不同之處在於:Tomasulo算法中在Write Result這一拍中就可以更新register file,而這裏只能等到進入Commit節拍才能更新register file。

ROB重排序

再定序緩衝ROB的每個項包含三個域:
(1)指令類型域:用來説明指令類型
轉移指令——無目標結果
Store——以存儲器地址作為目標結果
Reg操作(ALU或Load):以Reg.作為目標結果
(2)目標域:
寄存器號(針對ALU和Load操作指令)
存儲器地址(針對Store指令)
(3)值域:用來存放指令的結果,直到指令進入交付節拍。

ROB不同之處

1、增加了ROB;
2、撤銷了load buffer 和store buffer;
3、寄存器改名功能由ROB(重排序緩存號)來實現,而不再由保留站來完成;
4、保留站的功能僅為在指令發射到開始執行這段時間內保存指令的操作碼操作數
5、用重排序緩存單元號來標識指令的結果,而不再用保留站號來標識,因為每一指令在其交付前均在重排序緩存中有一單元。