基于CELL Broadband Engine環(huán)境高性能計算開發(fā)應(yīng)用
CELL BE處理器包括一個基于Powerpc架構(gòu)的控制處理單元Power Processing Element (PPE)以及8個SIMD的協(xié)處理器單元——Synergistic Processing Elements (SPE),以及用以連接PPE, 輸入輸出單元以及SPE的高速環(huán)形數(shù)據(jù)總線——Element Interconnect BUS (EIB)。CELL BE同時還提供了DMA指令和控制機制以用于在不同處理單元之間提供高效的通信。PPE和SPE均為RISC結(jié)構(gòu),指令字長為32位,尋址空間為64位。SPE提供最高128位寬的SIMD的數(shù)據(jù)通路。工作在3.2GHz主頻下,單個SPE對8位整型可提供51.2 Billion的峰值計算速度,對單精度浮點可提供25.6 GFlops的峰值計算速度。 為了提高內(nèi)存訪問速度,CELL BE采用Rambus XDR DRAM內(nèi)存,提供2個32位的數(shù)據(jù)訪問通道,每個通道的訪問速率為12.8GB/s。為了提高I/O訪問速度,在CELL BE中采用了高速、可配置的I/O接口——7個發(fā)射通道和5個接收通道的Rambus PRAC FlexIO,F(xiàn)lexIO工作5GHz下時,其發(fā)送帶寬和接收帶寬分別為35GB/s和25GB/s。
PPE和SPE都是基于RISC架構(gòu),雙發(fā)射的SIMD處理器。CELL BE中所有的處理單元,I/O控制器,內(nèi)存控制器都通過高速的EIB(4路128位寬的環(huán)形總線)互聯(lián)。XIO接口提供與Rambus XDR內(nèi)存的高速互連,F(xiàn)lexIO提供了高速I/O通道。PPE是一個兼容PowerPC 970架構(gòu)的兩路并發(fā)多線程處理器,包含一個32kB的L1 Cache(32kB的數(shù)據(jù)cache和32kB的指令cache), 256kB的L2 Cache以及一個VMX(VMX是PowerPC上的AltiVec多媒體擴展,Apple稱為Velocity Engine。VMX本身就是一個向量處理單元,或者說是類似于Intel的SSE,SSE2的SIMD擴展。)單元。操作系統(tǒng)運行于PPE上,PPE負責(zé)對SPE進行調(diào)度,而SPE則負責(zé)主要的計算工作。SPE直接訪問本地的Local Storage(LS)。它通過DMA方式訪問主存,由DMA負責(zé)將指令和數(shù)據(jù)搬到LS。這種方式能夠有效地減小內(nèi)存讀寫延遲對處理器利用率的影響,因為SPE的計算和DMA傳輸可以并行地進行。SPE是一個高度可配置的處理單元,SPE可以被配置成不同的運行方式和存儲保護(Isolation)模式。在存儲保護模式下,PPU和其它SPE不能訪問該SPE的LS,從而在硬件層次上提供了安全機制。這種機制在一些場合是非常有用的,如DRM。
A1.jpg
CELL BE編程模型
對SPE的編程,可以采用高級語言,如C和C++。并且CELL BE的編譯器及開發(fā)包已經(jīng)對C/C++進行了擴展,以提供對Vector/SIMD的支持。
實際上,對于應(yīng)用程序的開發(fā)者來說,可以簡單的將CELL BE看作一個9路的多處理器。由于PPE是一個雙線程雙發(fā)射、順序執(zhí)行的RISC處理單元,它的一個時鐘周期可以處理來自兩個線程的指令(即所謂硬件多線程SMT),因此加上8個SPE,同一時刻可以有10個任務(wù)在同時運行??偟膩碚f,PPE適合作為控制和任務(wù)調(diào)度處理器,SPE則用于處理計算任務(wù)。
CELL BE 存在多種編程模型,對于簡單的SPE程序("small" SPE program)來說,與普通的應(yīng)用程序編程是類似的。我們需要將任務(wù)進行劃分,針對不同的SPE編寫不同的代碼,每個SPE完成一個特定的任務(wù)。這種方式下,SPE不需要訪問主存,只需訪問LS就夠了。在這種方式下,SPE的數(shù)據(jù)段、代碼段的大小限制為256kB (LS的大小)。