290 likes | 402 Views
眾 核 處理器和眾核集群的並行模擬. 洪聖 欽. Godson-T 眾核處理器. Godson—T 是一個基於 65 nm 的眾核處理器原型,它由一個 二維的 8×8 網狀網路 互連的 64 個同構的處理單元 構成。 每個小核設計成支援 32 b MIPS 指令集和一小部分 SIMD 指令的全功能 RISC 處理器,時鐘頻率為 1 GHz 。 每個小核有 32 KB 私有的 L1 cache ,並且可以配置成高速暫存記憶體 (scratch - pad memory , SPM) 使用。
E N D
眾核處理器和眾核集群的並行模擬 洪聖欽
Godson-T眾核處理器 • Godson—T是一個基於65 nm的眾核處理器原型,它由一個二維的8×8網狀網路互連的64個同構的處理單元構成。 • 每個小核設計成支援32 b MIPS指令集和一小部分SIMD指令的全功能RISC處理器,時鐘頻率為1GHz。 • 每個小核有32 KB私有的L1 cache,並且可以配置成高速暫存記憶體(scratch-pad memory,SPM)使用。 • 16個256KB的L2 cache按照位址交錯配置,分佈在晶片的4個方向,被所有的小核共用。 • 所有的64個小核、L1、L2 cache和其他晶片單元由一個二維的8×8網狀網路互連,使用X—Y路由式通訊協定。 • 每個網狀網路的路由在一個CPU週期可以傳輸128bits。
Godson-T眾核處理器 • Fig.1給出了Godson-T的體系結構以及基於事件佇列的類比原理圖:
GAS模擬器 • Godson-T體系結構模擬器(GAS)是一個基於事件驅動的眾核處理器模擬器,其設計目標是為Godson-T體系結構設計提供模組化、可配置的類比。 • GAS使用事件驅動的模擬 • 事件指發生在特定時刻模擬部件的一個動作,比如CPU的一個訪存操作。 • 一個事件會引起另一個事件的發生,比如訪存操作會引起cache不命中或者命中。 • 不同的事件按照時間先後的循序執行,每個事件都有一個執行時間t,而被它觸發的事件將在t時間後執行。
GAS模擬器 • 事件類比的核心是一個事件佇列,如Fig.1所示,所有的事件按照時間順序被插入到事件佇列中,模擬器每次從事件佇列頂部取一個事件,發給相應的處理部件處理,處理部件處理當前事件並引發另一個未來的事件,重新插入到事件佇列中。 • 這種基於事件類比的方式存在以下問題: • 1.基於一個全域的時間,整個事件佇列只能串列地執行在宿主機的一個處理器核上 • 2.當模擬的部件很多時,每次向事件佇列裡插人事件的時間變得很長,這使得串列事件驅動模擬器的擴展性非常差,在類比大規模的系統時,類比時間隨著類比規模增大呈指數增加。 • Fig.2給出了串列模擬器時間在類比不同系統規模下的減速比 • 橫坐標表示類比目標系統的核數,縱坐標表示相對於模擬單個核的時間減速比
GAS模擬器 • 目前主流的時鐘精確的串列多核模擬器執行一個基準測試程式大多在幾個小時到幾天。 • 當目標系統規模達到千核的級別時,如果仍然採用串列類比,執行時間將會需要幾個月甚至幾年,這是體系結構設計者無法接受的。 • 所以,我們需要找到一種方法讓串列的模擬器執行得更快,同時不損失原先的模擬精度。
SimK並行模擬框架 • 為了對串列模擬器進行加速,我們使用並行離散事件模擬。 • 並行離散事件類比(PDES)將目標系統劃分成一系列邏輯進程(LP),不同邏輯進程之間的交互被建模成帶時間戳記的事件消息。 • 並行離散事件模擬又分為樂觀同步和保守同步 • 在保守同步中,LP之間使用提前量(100kahead)來通知鄰居哪些事件位於可以安全處理的時間視窗。 • SimK是一個基於並行離散事件模擬的模擬框架,用MPI/Pthreads實現,為並行離散模擬提供了模組化的支援,如Fig.3所示。 • SimK為使用者提供了程式設計介面(API)來創建邏輯進程(LP),同時將任務劃分、緩衝管理、調度、通信和時間同步封裝在底層。 • SimK被設計成微內核作業系統的形式,類比的目標物件(比如CPU或者RAM)被描述成一個個LP。
SimK並行模擬框架 • 初始化時,劃分模組建立系統的拓撲。 • 類比過程 • 調度模組將LP插入到不同的運行佇列。 • 執行模組從每個運行佇列取LP並且執行每個LP的回呼函數。 • 通信模組則負責不同模組之問的通信以及時間同步。 • 作為一個高效的並行模擬框架,SimK中對通信和同步進行了優化,包括零拷貝和無鎖演算法等。 • 通過這些優化,使得SimK可以用於大規模細細微性的模擬。 • 類比目標系統規模達到了11664個節點(36-port 3-tree) 。
眾核模擬 • 並行眾核模擬的挑戰 • 如何在不損失類比精度的情況下將類比速度提高10倍。 • 如何把目標系統劃分到不同的執行序上。 • 對於原GAS模擬器,各部件互相之間是獨立的,但是通過一個全域的事件佇列緊耦合在一起,如何解決時間上的耦合關係。
並行眾核類比演算法 • 對目標系統的劃分 • 在Fig.4中我們首先對GAS進行劃分,通過網狀網路互連的部件有片上路由和L2 cache。 • 每個L2 cache和片上路由各為1個LP,又或者多個路由劃分到同一個LP。 • 在一個16核的宿主機上性能最好的情況是將二維的網狀網路劃分成16個部件,每個部件包括2×2的片上路由和與之相連的L2 cache。
並行眾核類比演算法 • 從單事件隊列到多事件隊列 • 將目標系統劃分成多個LP後,每個LP包含一個事件隊列,該事件隊列負責處理被劃分到該LP上的部件所產生的事件。 • 不同的LP之間通訊的消息需要加上時間戳,如Fig.5所示,劃分到不同LP的部件各有一個事件隊列,在同一個LP裡面還是傳統的串列離散事件模擬,而LP之間的事件則被PDES打上事件戳發送到另一個LP,LP之間的時間同步遵循並行離散事件的保守同步機制,由SimK負責。
並行眾核類比演算法 • 每個LP需要維護3個時間:clk、min-lavt和next-clk • clk:LP當前的時間 • min-lavt:最小推進時間,所有鄰居lavt的最小值 • next-clk:本地事件佇列中下一個事件的時間戳記 • 其中,和LP連接的各通道上的lavt被定義成鄰居LP的clk+lookahead,而min-lavt是所有接收通道上的lavt的最小值。 • 每次LP都會去處理事件佇列中next-clk時間小於等於min-lavt的事件,並且推進LP的時間clk。 • 本LP更新自己的clk後,和該LP相連鄰居的通道lavt也會相應改變,這一步是由SimK底層通過發空消息實現的,對使用者是不可見的。
並行眾核類比演算法 • 零延遲的問題 • 和傳統的並行離散事件模擬不同,在類比Godson-T片上網路時遇到一個特殊的問題: • GOdson-T片上網路採用的REQ!/ACK流控由於原GAS設計者並沒有考慮以後的並行模擬,所以ACK/NACK事件被設計成零延遲的,而用傳統的保守同步並行離散事件模擬提前量至少是1。 • 為了解決這個問題,我們引入了0/1提前量.當LP事件佇列的下一個事件大於當前事件時,LP的提前量被設為0,告訴它的鄰居去檢查REQ!/ACK之後再推進時鐘;而當且僅當每對REQ/ACK被匹配後,0/1提前量被設為1,表明在該時鐘週期的流控已經結束,可以進行下一拍模擬。
眾核集群模擬 • 主要考察並行類比的規模能不能在指令級精確的情況下達到千核 • 眾核集群作為一種新興的體系結構,其程式設計模型和互連網路等都是非常值得研究的問題。 • 到目前為止,片上千核的設計還是未知數,通過對千核規模的眾核集群的模擬,來驗證並行離散事件模擬對於千核處理器模擬的可行性,為千核設計作好準備。 • 眾核集群 • Fig.6是我們假設的眾核集群G-Cluster體系結構原型 • 16個Godson-T晶片通過交換機互連,每個Godson—T晶片有64個小核,整個系統共1024個小核。 • 為了類比集群需要類比網卡和交換機來建模網路上的時間 • 為每個GAS增加一個NIC用作資料交換,並且在集群上移植MPI通信庫。
網卡類比 • 對網卡的類比主要是對網卡緩衝區的類比,我們使用環狀緩衝.網卡上的延遲時間主要包括讀寫網卡緩衝區和網卡及交換機通信的時間。 • 網卡之間的資料傳輸如Fig.7所示 • 通過在Godson—T的位址空間中留出IO位址空間,程式通過訪問IO位址空間向網卡中讀寫資料。 • 網卡接收到資料後在緩衝區中排隊,然後發送到互連網路。 • 另一個要考慮的因素是流控,我們在網路中採用基於相對信用的流量控制機制。
MPICH移植 • 為了能在眾核集群上移植程式,我們需要有一個通信庫。 • 對於集群來說,MPI是默認的通信標準,通過考察,我們決定選擇移植MPICH(mpich-1、2、7)作為我們的通信庫。 • MPICH的實現分為3層,從上到下分別是: • MPI程式設計介面層——為使用者提供點對點以及集合通信介面 • ADI層——為不同底層設備提供抽象設備介面 • 通道介面層(channel interface)——和物理設備對應的資料交換接VI,通過實現類比網卡的通道介面完成對MPICH的移植。
實驗 • 分析眾核模擬器和眾核集群模擬器的性能和擴展性 • 實驗平臺 • 一台4路AMD Opteron8 347對稱多處理機。 • 每個CPU是4核,主頻1.9GHz,節點的總CPU核數是16核,節點記憶體為64GB。 • 作業系統採用64b Linux 2.6.9內核,使用GCC 4.1.1編譯器、MPICHl.2.7和POSIX Pthreads。
眾核模擬器 • 我們把並行版的GAS模擬器記為P-GAS,在模擬器上運行的是移植的SPLASH-2基準測試程式。 • 通過對比GAS和P-GAS運行的時間和類比時鐘週期來判斷P-GAS的性能和準確度。 • Fig.8給出了P-GAS相對於GAS在不同執行序數運行下的加速比 • 橫軸代表不同的測試程式 • 縱軸代表加速比 • 不同的條柱代表不同執行序數運行的情況 • 比如P-GAS 16指的是用16執行序運行P-GAS.從Fig.8可以看出,幾乎所有的程式都有線性的加速比,在16執行序的情況下,測試的4個SPLASH-2程式的平均運行速度是原來的10.9倍(splash-2 kernel) ,加速比的增加範圍為6.6倍(radix)到13.6倍(1u)
眾核模擬器 • Fig.9給出GAS和P-GAS類比的時鐘週期數對比,兩者相差小於0.1%,這個結果說明了P-GAS的準確性,也說明了保守同步的並行離散事件模擬的正確性。 • 相差的部分主要是來自記憶體和L2cache先到先服務的佇列模型這部分。 • 在GAS中,所有的請求都是串列到來的,而在P-GAS中,兩個請求可能來自不同執行序的不同部件。 • 相差很小是因為在提前量設為1的情況下,請求衝突的概率很低。
眾核集群模擬器 • Godson-T的程式設計環境是類似Pthreads的執行序庫,而集群之間是MPI,所以整個眾核集群G-Cluster上的程式設計方式使用的是混合MPI/Pthreads。 • 現有的混合MPI/Pthreads基準測試程式很少,我們在眾核集群G-Cluster上改寫了一些混合方式程式設計的微測試程式來測試G-Cluster的性能,包括cpi、計算兀值的程式dotprod、計算兩個向量的點積乘和fox、稠密矩陣乘演算法。 • Fig.10給出了不同微測試程式在不同執行序運行的情況下相對於單執行序運行的加速比。 • 橫軸代表不同執行序 • 主要縱坐標代表執行時間 • 次要縱坐標代表加速比 • 不同顏色的條柱和折線表示不同測試程式 • 從Fig.10可以看出,對於計算密集型的程式cpi.big,16執行序的加速比可以達到6.4倍,而對於同時需要計算和通信的dotprod和fox,加速比為3倍左右。 • 從絕對時間上來看,即使是運行反覆運算次數為108的cpi.big,程式也可以在600 S內結束,從而證明了在對稱多處理機上模擬千核集群或者千核處理器的可行性。