指令級並行:動態調度技術


動態調度技術用於實現基本塊內並行。即保持控制相關,以避免控制冒險產生。其基本思想是將取數段ID拆成發射段IS和取數段OF,用發射(流出)段處理結構冒險,用取數段處理數據冒險。操作數就緒的指令優先通過取數段,以實現順序到亂序的轉換。

動態調度實現的基本要求是:用指令窗口提供選擇平台,並且保持指令的異常行為,當然我們允許異常推遲產生。采用動態調度技術后,各執行部件的時延可以不同,因此縮短了指令周期;同時,屬於不同功能部件的多條指令可以同時執行,提高了並行度。

動態調度技術的常用調度算法主要有記分牌算法和Tomasulo算法。

記分牌算法

記分牌動態調度的核心思想是:操作數就緒的指令優先執行,冒險全部用阻塞法處理。具體而言,IS段在沒有結構冒險也沒有WAW冒險時發射指令,否則阻塞;OF段在指令所有源操作數就緒時令部件讀OPD;EX段部件進行操作;WB段在無WAR冒險時寫結果,否則阻塞。

所謂記分牌,其本質時一個狀態記錄控制器,用狀態表記錄指令的執行狀態、部件的工作狀態和REG的狀態,根據狀態表檢測冒險並控制部件操作。指令狀態表中,對每條指令,記錄它執行到了哪個流水段。功能部件狀態表中,為每個功能部件設置一行,其中包含這個部件是否忙碌、工作內容(指令類型)、操作數(寄存器編號),同時還需要為源操作數准備一個就緒狀態位(表示操作數就緒並且未被執行部件取走)和一個來源部件名(若操作數未就緒,則此處記錄哪個部件將產生這個操作數)。

Tomasulo 算法

記分牌調度只是引入了亂序執行,其對所有的冒險都采用阻塞法處理。Tomasulo算法在冒險處理上采取更加巧妙的機制。Tomasulo算法中操作數一旦就緒立即執行指令,其采用轉發法獲取操作數,而非通過讀寄存器來獲取;同時,采用寄存器重命名技術來消除讀后寫WAR和寫后寫WAW冒險。

Tomasulo沿用了記分牌中在IS段處理結構冒險,OF段處理數據冒險的方法。但其將記分牌部件細化,拆分為保留站RS、取緩沖FLB、存緩沖SDB和寄存器組FLR。保留站中保存經過換名后的指令,在操作數就緒時送給ALU執行;FLB中保存經過換名后的取數指令,就緒后控制MEM讀。ALU執行和MEM讀結果送上公共數據總線CDB,需要這個結果的部件自行獲取之。因此,WB段本質上時通過寄存器組FLR自行獲取CDB上的結果來實現的,存數是通過SDB中的指令就緒后控制MEM寫入來實現的。

Tomasulo算法中,各流水段的功能總體與記分牌類似。IS段在沒有結構冒險時發射指令,並通過寄存器重命名消除WAR冒險和WAW冒險。OF段被隱含,其內容為RS/FLB/SDB監視CDB,在CDB上有所需數據時接收之。EX段時,RS/FLB在部件空閑、OPD就緒時控制操作實現。WB段中,等待結果的部件接收CDB上的結果數據,SDB在地址數據就緒時控制訪存操作實現。

與記分牌不同,Tomasulo算法的緩沖器中對於操作數要么保存值,要么保存其值來源的保留站(或FLB)站號。正因此,在指令IS的時刻后,其來源的寄存器編號就已經失去意義,其值已經確定,只不過有時需要延遲一段時間才能產生罷了。這是寄存器重命名技術實現的關鍵,也是轉發解決RAW冒險的關鍵。對於WAW冒險,在后一條指令發射時,直接覆蓋掉FLR中舊的來源站號Qi即可,因為需要它的指令都已經發射,關聯關系已經被確定,后面的指令需要的值都是由新的來源站號產生的。

從結構上分析Tomasulo和記分牌的不同之處,由於每個緩沖器都有它的長度,而IS段阻塞當且僅當其所需的緩沖器已滿,因此可以同時發射到緩沖器中的指令數是記分牌的m倍。由於RS、FLB、SDB分離,操作分配和冒險檢測都得到了簡化。操作數直接以值或地址的形式保存在緩沖器中,不需要在使用時臨時讀取FLR,這樣有利於轉發的實現,同時實現了寄存器重命名技術,解決了WAR冒險。

總結Tomasulo算法對數據冒險的處理,對於寫后讀RAW,源操作數部件FLR的忙位Bs=1時存在冒險,此時將該FLR的來源站號Qi抄到當前指令的緩沖器的對應源操作數的來源站號Qj/Qk中,由於數據未就緒,這條指令會等待,直到這個來源站的結果產生並送上CDB時,該指令緩沖器收數據改狀態,RAW冒險就此消除。對於讀后寫WAR,指令有源操作數時都需要警惕,方法是,在該源操作數Bs=0時趕緊把值取走,Bs=1時把產生部件站號取走,這樣后面的寫入指令就不會影響到本條指令的源操作數,也就避免了亂序導致的結果錯誤。對於WAW,當目的操作數部件忙位Bs=1時,意味着上一個結果還沒有產生,需要警惕本次結果先產生而上次結果后產生導致最后的結果等於舊結果而不是新結果的情況,因此,直接用本條指令的站號覆蓋到FLR中對應行的來源站號上,這樣保證最后只有新的指令能實現FLR的寫入。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM