記分板

記分板

記分板是在資源部件充足,沒有數據相關存在的前提下,允許指令亂序執行的一種技術。

原理

它通過使用硬體來支持指令級並行,從而能夠處理某些在編譯階段無法知道的相關關係(如涉及記憶體引用時),並簡化編譯設計;能夠允許一個流水線機器上編譯的指令,在另一個流水線上也能有效運行

記分板的目的是,在沒有資源衝突的前提下,使每條指令儘可能早的執行,以保持每一個時鐘周期執行一條指令的速率。即,當某條指令將要執行的指令被暫停時,其他沒有相關於任何正在執行或被暫停指令的指令,應該可以提到前面來發射並執行。

它的核心思路是:

(1)允許暫停指令之後的指令被執行,實現按序發射、亂序執行、亂序完成;

(2)對於亂序完成產生的WAR、WAW冒險,採用以下方法解決:對於WAR,要求排隊等待操作以及他們運算元的拷貝,並只在讀操作階段才讀取暫存器。對於WAW,則檢測冒險,暫停並等待其它指令完成;

(3)把ID階段分成Issue和Read Operands兩段,這裡將檢測所有結構冒險,等待不存在數據冒險的情況,從而支持在保證按序發射的情況下亂序執行。

結構

圖中給出了記分板的基本系統結構,記分板的功能是控制指令的執行,所有數據通過匯流排為這一組功能部件提供服務。不僅負責實現指令發射和執行的,也負責所有衝突的檢測。

(1)每條指令都要從記分板部件通過,並在這裡建立相應的數據相關結構,這一步代替了ID階段的發射部分。

(2)由記分板部件決定何時可以讀運算元、執行指令,如果判斷還不能立即執行,則會監視硬體上的每一個變化並決定該指令何時才能執行。

(3)記分板還可以控制指令寫入目標暫存器的操作。

這樣,所有的衝突檢測及解除工作都集中在記分板部件上。

記分板由三部分構成:

1)、指令狀態。說明指令處於4個階段中的哪個階段(issue、read operands、execution、write back)。

2)、功能部件狀態。指明功能部件的狀態,每一個功能部件包括9個域。

Busy指明功能部件是否正被使用;Op指明功能部件正在進行的操作;

Fi指明目的暫存器;Fj、Fk指明源運算元所在的暫存器;

當源運算元不直接從暫存器取到,而要等待前面執行的指令的功能部件產生時,使用Qj、Qk分別指明Fj、Fk將由哪個功能部件產生;

Rj、Rk指明源運算元(即Fj、Fk)現在是否可用,若這兩個域指示不可用,說明需要等待別的功能部件(即Qj、Qk)產生。

3)、暫存器結果狀態。

指明哪個功能部件將寫入該暫存器。如果沒有指令將寫入該暫存器,則該暫存器的狀態為空白。

步驟

記分板用四個階段代替ID、EX、WB三個階段。4個階段分別如下:

1)、issue階段。該階段完成指令解碼,並檢測結構冒險。

該階段按程式的次序發射指令。當

需要發射的那條指令要用到的功能部件空閒(沒有結構冒險),

而且待發射指令與已發射但尚未完成的指令之間沒有輸出相關——沒有其他活動指令和該指令爭用同一個目的暫存器時(沒有WAW冒險),

記分板就直接把指令發射到功能部件並更新自己的內部數據結構。

否則(如果存在結構冒險或寫寫冒險)暫停發射任何後繼指令,直至冒險解決。

(通過確保無其他活動的功能部件與其爭用同一目標暫存器,可以杜絕WAW冒險。)

2)、讀運算元(read operands)。等待更早發射但未完成的指令寫回其結果,所以在該階段可解決所有真數據相關。

記分板監視源運算元的可用情況,

如果沒有更早發射的指令要寫源運算元所在暫存器(沒有RAW冒險),或者存放源運算元的暫存器此刻正在被某個活動的功能部件寫入,那么源運算元是可用的。此時功能部件可以讀取運算元。否則,暫停在該階段直到滿足條件。

通過這種方法,記分板解決了寫讀冒險,指令從而可以亂序的進入執行階段。

3)、執行(Execution)。功能部件在得到運算元之後即開始執行,執行結束,結果產生後,通知記分板已經完成執行。

4)、寫結果(write back)。當不存在WAR冒險時,功能部件寫回結果到暫存器。

判斷的方法是:如果在該執行完的指令之前的指令尚未讀取其運算元(前面要讀得還沒讀),且其中一個運算元使用的暫存器正好與等待寫回結果的暫存器相同(先寫得還沒先),則判斷為此時存在WAR。一旦WAR冒險被解決後,記分板就通知功能部件讓其寫回運算結果。

局限性

減少流水線暫停受到限制——指令中可並行的數量、記分板入口數量、功能部件的種類和數量、反相關和輸出相關。

1)、沒有前遞硬體,只用暫存器傳值;

2)、指令調度局限於基本塊內,指令視窗小;而實際上程式中常常存在很多branch,使得基本塊很小。

3)、功能部件少,容易引起結構冒險,特別是用得多的integer/load store部件;

——>存在結構冒險,就暫停發射指令,按序發射耽誤了時間;

4)、由於暫存器不夠多,存在WAR、WAW冒險。

——>需要等待,防止出現WAW冒險,直到WAR冒險解決

相關詞條

熱門詞條

聯絡我們