共找到2條詞條名為記分板的結果 展開
記分板
記分板
記分板是在資源部件充足,沒有數據相關存在的前提下,允許指令亂序執行的一種技術。
它通過使用硬體來支持指令級并行,從而能夠處理某些在編譯階段無法知道的相關關係(如涉及內存引用時),並簡化編譯設計;能夠允許一個流水線機器上編譯的指令,在另一個流水線上也能有效運行
記分板的目的是,在沒有資源衝突的前提下,使每條指令儘可能早的執行,以保持每一個時鐘周期執行一條指令的速率。即,當某條指令將要執行的指令被暫停時,其他沒有相關於任何正在執行或被暫停指令的指令,應該可以提到前面來發射並執行。
它的核心思路是:
(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冒險解決