Tomasulo算法是由Robert Tomasulo 設計的,因而以他的名字命名。IBM360/91機器中的浮點部件首先採用了這種方法。其核心思想是:記錄和檢測指令相關,操作數一旦就緒就立即執行,把發生RAW(寫後讀)衝突的可能性減少到最少。通過寄存器換名來消除WAR(讀後寫)和WAW(寫後寫)衝突。
Tomasulo算法的三段
1、Issue―從FP Op Queue中取出指令
如果保留站空閒(無結構冒險)
控制機制發射指令&發送操作數(對寄存器進行換名).
2、Execution―對操作數執行操作(EX)
如果兩個操作數都已就緒,就執行
如果沒有就緒,就觀測公共數據總線等待所需結果
3、Write result―完成執行(WB)
通過公共數據總線將結果寫入到所有等待的部件。