210 likes | 339 Views
2012/1/28. 用於可 組合式 多處理器之分散控制獨立分析 Distributed Control Independence for Composable Multi-processors. 指導教授 :周 哲 民 學 生 :陳 佑 銓 CAD Group Department of Electrical Engineering National Cheng Kung University Tainan, Taiwan, R.O.C. Outline. Introduction
E N D
2012/1/28 用於可組合式多處理器之分散控制獨立分析Distributed Control Independence for ComposableMulti-processors 指導教授 :周 哲 民 學 生 :陳 佑 銓 CAD Group Department of Electrical Engineering National Cheng Kung University Tainan, Taiwan, R.O.C
Outline • Introduction • EDGE-BASED TFLEX ARCHITECTURE • DISTRIBUTED CONTROL INDEPENDENCE (DCI) • Result • Conclusion
摘要 • 可組合式多處理器採用大的指令窗口和分散式布置(distributed layout),而這兩種都將放大分支預測錯誤的損失。一旦檢測到分支預測錯誤,數百數千計的指令可能是運行中(inflight)。 • 簡單摒棄所有的錯誤預測的分支指令,將是一個很大的浪費。 • 在這些系統中,分支預測錯誤成為關鍵的瓶頸。 • 在本文中,我們介紹了分散式控制獨立(Distributed Control Independence)(DCI)來減少在一個TFlex可組合式多處理器的分支預測錯誤的瓶頸。 • 我們發現,只有一小部分的保存指令,其資料取決於控制相關的指令,需要重新執行。DCI實現了高硬體的效率和效能可擴展性。 • 我們的實驗結果表明,運行於16核心的Tflex架構,DCI有效地減輕分支預測錯誤和速度可達幾何平均值為35%.
Introduction(1/4) • 為了在一個線程中展現更多的並行性,目前處理器採用大的指令窗口和更深的管線級數,這兩者都在分支誤預測時,容易發生更嚴重的代價. • 可組合式多處理器[9]具有更大的指令窗口,並採用一個分散式的基體(substrate),從而增加在brand之間預測失誤檢測和報告的週期。 • 所以分支預測失誤將會造成很大的浪費 • 在本篇論文專注於控制獨立性,利用在清除(squash)分支預測中的相依控制指令,並讓控制獨立的指令繼續執行.
Introduction(2/4) • 圖1右邊部分是一個控制流程圖(Control Flow Graph)(CFG)的,對應到左側部分中的代碼。 • CFG包含4個指令塊。
Introduction(3/4) • 在1塊的分支錯誤預測的繼任者應該是塊3。 • 在檢測到錯誤預測,處理器與控制獨立性唯一的清除(squash)塊2,我們稱之為控制相依塊。 • 塊4,這是我們稱之為控制獨立塊,並把他保留下來。正確的繼任者(塊3),塊之間插入1和塊4。控制獨立的模塊中的某些指示需要重新執行,因為他們的數據依賴關係改變後刪除/插入控制相關塊。 • 例如,塊4應該使用新的塊3來計算正確的b的值。 • 在分支預測錯誤,保留大量的指令,只有其中的一個小的子集需要重新執行後 • 如此可以減少浪費的指令,以增加效能.
Introduction(4/4) • 我們提出一種新穎的分散式控制獨立(DCI)在TFlex可組合式多處理器。 • TFlex效能的可擴展性由四個主要瓶頸所限制,其中之一為fetch stall[11]。 • 我們的評估顯示,DCI有效地減輕這瓶頸,顯著提高大量的核心TFlex運行時的效能。
EDGE-BASED TFLEX ARCHITECTURE • EDGE ISA EDGE ISA的設計目標是為單執行緒提供一個高效,低功耗和分散式的運行平臺。 • EDGE編譯器將程式切分為單入口,多出口的指令塊。 • EDGE(Explicit Data Graph Execution) ISA支持兩種主要的特點: • 1)不可分割的(atomic)執行,提取和提交協議運行在指令塊上,而不僅是單個指令; • 2)直接指令通訊,指指令塊內部的指令實現了資料流程執行,所有指令將其消費者指令的編號記錄在自身指令的編碼中。
DISTRIBUTED CONTROL INDEPENDENCE (DCI)(1/7) • 正如在圖1中示出,DCI從分支預測失誤恢復為以下三個步驟: • 檢測分支預測錯誤時,DCI立即找出一個控制的獨立塊,稱再匯聚點(Reconvergent Point)(RP)。 • 清除在錯誤預測點(Mispredicted Point)(MP)與RP間的指令塊,然後插入正確的指令塊。 • 重新執行控制獨立的指令,修改其數據相依性。 • 以下分別介紹這三個步驟 2.correct path 3.Control dependent 3.Control independent 2.Incorrect path 1.RP 1.mis-predicted point
圖三標示出Distributed Reconvergence Predictor (DRP)在實際核心中的組成元件. • 並利用圖一來描述DRP如何運作.
DCI(3/7) • 初始化(Initialization): • 在塊1檢測到錯誤預測,塊1的協調核心會分配一個空閒的錯誤預測點緩衝器(Mispredicted Point Buffer)(MPB),然後初始化每個項目內的MPB。關鍵的一個項目是控制流列表(Control Flow List)(CFL),保存當前運行中的指令塊列表。 • 根據目前情況,CFL為塊1→塊2→塊4→塊1。 • 預測和追蹤(Prediction and track): • 協調核心採用PC(塊1地址),與最後的預測PC(塊2的地址)和Next PC(塊3的地址)指到再匯聚點表(Reconvergence Point Table)(RPT)並檢索RP(塊4的地址),然後記錄到MPB的RP。 • 協調核心會在CFL探索RP。如果發現RP,將會廣播一個信號到所有相關(participated)的核心去清除在MP和RP之間的指令(塊二)。 • 協調核心將重新訂定方向到正確的控制塊(塊3)。當此流到達RP,協調核心再次重新定向去獲取下一個Refill PC(預測塊1中的下一個數據塊的地址),然後釋放MPB。
DCI(4/7) • 更新和追蹤(Update and track): • 如果沒有有效的RP給目前的MP,處理器會清除所有在MP後的指令,然後重新定向取到正確的控制塊。 • 當預測去提取一個新的指令塊,對應的協調核心檢查新的指令塊位址是否存在於CFL中。 • 如果成功,它將使用該檢查地址去更新目前的MP的RP,然後釋放MPB。 • 當對應的核心結合再一起時,數個個別的DRPs可以結合起來成為一個強大的DRPs。 • 一個值得考慮的問題是,透過在CFL尋找的這些操作,所花費的時間成本。 • 幸運的是,所造成的延遲這些操作是微不足道的 • DRP花費很少的硬件資源來實現高準確度 • 它使用每個核心只有不到0.6KB資源
DCI(5/7) • 鏈接串列(linked-listed)的指令槽 • TFlex合併指令窗口和ROB到一structureinstruction槽中。 • 為了方便任意刪除/插入,我們改變原來的FIFO指令槽成鏈結串列(linked-listed)。 • Tflex的指令獲取與提交協議以指令塊的形式來取代個別指令. • 指令槽的邏輯長度遠遠小於實際總和插槽,這顯著降低了複雜性. • 分散式選擇性地重新執行 • 利用直接指令通信功能,輕鬆地重新執行TFlex“dirty”的指令。 • 一個TFlex指令塊可以被劃分分為三個部分: • 輸入指令(暫存器讀取和儲存) • 輸出指令(暫存器寫入,儲存和分支) • 中間指令(所有其他指令)。
圖4說明了如何提交遮罩和版本號的運作方式。這組圖形呈現一個指令塊的資料流程圖。圖4說明了如何提交遮罩和版本號的運作方式。這組圖形呈現一個指令塊的資料流程圖。 • 提交遮罩用來用來辨識所有的輸入指令. • 版本號是用來區分不同版本的輸入指令.
DCI(7/7) • 圖四(a)所有的輸入指令均執行(fired),並且所有的輸出指令產生第一筆的版本號. • 圖四(b)R2會先在執行一次並從協調核心得到一個新的版本號0x1,然後R3與LD也會在執行,並得到版本號為0x2,0x4. • WR會先從最近的LD中得到新的運算元,並通知協調核心,但協調核心辨認WR的版本號應該為0x5. • 記憶體相依預測反轉(Memory dependence speculation reversal) • TFlex上的記憶體預測器依靠記憶體存取操作的先後和計數來提高預測精度,DCI技術需要動態地從指令視窗中間移除或插入指令,引入DCI後,相當一部分應該被激進執行的記憶體讀指令被誤推測為保守執行,這就嚴重了影響了系統效能。這就擾亂了記憶體預測器的正常工作。 • 為了解決這個問題,我們簡單的將記憶體預測器的預測反轉, • 並且使用DSR來恢復由此引入的違例。
Result(1/4) • 顯示了各個測試程式運行在引入分散式控制無關技術的TFlex上所獲得的效能加速比,對比的基本物件為程式運行在相同核數配置的原版TFlex上獲得的效能。 • 在兩個核的配置下,DCI總體幾何平均加速為3.9%;當擴展到4核時為10.5%;8核時為21.3%;當把16個核運行時,所有類別均獲得最大加速比,總體為35.1%。
為了更好地分析DCI對效能的影響,圖顯示了各個應用程式運行在16核DCI配置下的分支預測失誤率為了更好地分析DCI對效能的影響,圖顯示了各個應用程式運行在16核DCI配置下的分支預測失誤率 • 本文把分支預測失誤分成四個類別。 • 第一類是發生分支預測失誤時沒有可預測的匯聚點,記為PF。當沒有在匯聚點表中找到有效的匯聚點時會導致第一類情況的發生。 • 第二類是匯聚點預測成功,但沒能在人控制流鏈表中找到期望的匯聚點,記為PS-FF。 • 第三類是在控制流鏈表中找到匯聚點,但其後的控制流沒有到達匯聚點,即匯聚點預測錯誤,記為FoR-FR。 • 最後一類是成功到達匯聚點,記為RR。只有RR類的分支預測失誤才能被DCI覆蓋。
Result(3/4) • 顯示了各個應用程式運行在16核DCI配置下最後提交的指令組成情況。 • 在圖4.6中,所有應用程式最終提交的指令被分為兩大類: • 1)沒有被分散式控制無關覆蓋(NS); • 2)被分散式控制無關覆蓋,即控制無關指令,其中又可分為需要重執行的控制無關指令(SR)和不需要重執行的控制無關指令(SNR)。 • 總體上來看,RR占分支誤預測數目總和的比重越高,DCI指令占最終提交指令的比重就越高; • SNR占DCI指令總數的比重越高,程式獲得的加速效果就越明顯。
顯示了DCI技術和原版配置在不同核數的TFlex上運行多種應用程式時取得的平均效能,所有效能資料都除以單核TFlex的效能資料。顯示了DCI技術和原版配置在不同核數的TFlex上運行多種應用程式時取得的平均效能,所有效能資料都除以單核TFlex的效能資料。 • 運行在引入DCI的TFlex上時,四種應用程式的效能都比運行在原版配置上的效能要好,並且表現出很好的效能可擴展性。 • 特別是從8核到16核的配置時,DCI技術獲得的加速比前面任何一種核數擴展帶來的加速都好。
Conclusion • 本文提出了在可組式多核心架構上的分布式控制獨立(DCI) • DCI可以避免當分支預測失誤時,消除不必要的控制獨立指令. • 分散式的在匯聚預測器涵蓋了大量的分支預測失誤, • 這説明的處理器節省post-reconvergent的指令。 • 大部分的保存的指令為資料獨立的, • 不必要的被重新執行。 • DCI降低可組合式多處理器fetch stalls的瓶頸,導致整個系統效能有著顯著的改善。