2006年11月27日 星期一

Cell處理器開啟多重處理架構的新紀元

 

Cell處理器開啟多重處理架構的新紀元
上網時間: 2006年07月24日

還記得第一次對一款處理器進行編程?那一定是既興奮又具有挑戰性的過程。

對經驗豐富的程式設計師或開發團隊來說,即使是一般的微處理器也充滿著各種挑戰。現在,想像要從單一原始程式碼串流突然為九個不同的處理器進行編程,並使其全部能協同工作;而當處理器運作時,它仍能出乎意外的順利執行。要使這些微處器能協同工作,最重要的就是技巧。

這便是IBM、東芝和Sony等公司歷經幾年開發出的Cell處理器,一種令人驚歎的全新多重處理微處理器晶片;該晶片將於今年底在Sony的PlayStation 3視訊遊戲機、東芝的高階電視與IBM的刀鋒型伺服器上首次露面。對這三家公司而言,Cell將開啟一系列新產品的發展,未來幾年可望席捲消費性、電腦與嵌入式系統領域。

既酷又複雜

沒有多少產業的製造技術是超越過其設計技術的。在人類歷史上,許多事物,如太空船、摩天樓、噴射推進器、海底呼吸設備或可攜式電腦等,在尚未製造出來前我們就已經開始夢想了。但半導體產業的形式正好相反:晶片製造者可以製造出超乎其設計能力的更大型、更複雜晶片。製造技術遠超過設計能力。我們可以製造出更多超乎我們能力所及的電晶體。

Cell對終止這種模式大有幫助。Cell是一種有著約2.5億個電晶體(Pentium 4只有1.25億個)的極複雜晶片,執行速度超過4GHz。據IBM表示,在適當的條件下,Cell處理器每秒可完成2,560億次浮點運算。

值得注意的是,Cell處理器並非開發給科學應用、軍事電腦或解碼之用。Cell處理器主要用於娛樂。這三家跨國公司投入了數百萬美元研發經費和數千名研究人員,致力於開發世界上最複雜的處理器,卻僅僅是為了玩具。

這並不是指Cell處理器無法用於更'嚴肅'的應用。如我們所見,Cell處理器提供了平行處理,可用於科學模擬和醫學影像。事實上,將其用於Sony的PS3來玩Gran Turismo遊戲才是額外的效益。

圖1為Cell系列首款處理器的頂層方塊圖,正確來說是Cell寬頻引擎(Cell Broadband Engine),或稱CBE。



圖:Cell處理器中包含了一顆PowerPC處理器,以及8個協同處理器

Cell是以一顆獨立64位元PowerPC處理器為基礎,周圍環繞了八個相同的協同處理器。中央的PowerPC處理器可同時執行兩條指令。但Intel、AMD及其他廠商也已開發出雙核心處理器,甚至64位元雙核心處理器。因此,Cell的核心實際上是相當平凡的。

值得注意的是,儘管中央處理器基於IBM的PowerPC架構,但它是全新設計,而非採用現有PowerPC核心。此外,Cell的中央處理器也相當類似目前的PowerPC 970晶片。該中央處理器包括VMX(類似於AltiVec的視覺媒體擴展)指令集擴展,以及基本PowerPC指令集。中央處理器有一對32K一級(L1)快取記憶體和統一的512K二級(L2)快取記憶體。這可保持處理器執行在4GHz。

協同處理器的魔力

Cell真正神奇之處在於其八個協同處理器(SPE),這些經過特別設計的處理器是由IBM、Sony與東芝的聯合開發團隊所設計,它們有自己的獨立指令集和內部架構,不相容於Power或PowerPC程式碼。對大部份的程式碼,特別針對平行向量運算,這八個SPE負擔著複雜吃重的工作。每個SPE與其鄰近的SPE完全一樣,且均與中央Power處理器單元(PPE)共用一個通用匯流排。

如同中央的PowerPC處理器,每個SPE均為雙核心機制,但卻不像PPE的兩個執行管線並不對稱。換句話說,每個SPE可以同時執行兩條指令,但不是兩條同樣的指令。SPE管線是'不平衡的',因為其一端僅能執行定點或浮點算術運算,而另端僅能執行邏輯、記憶體或流量控制運算。這並不罕見,其他的超純量處理器也具有不平衡的管線。例如,大部份現代的x86晶片都具有數學、邏輯或者流量控制指令專用的內部執行單元,以及硬體(或編譯器),以決定每週期實際上可使用多少。這些要素決定了處理器最終的性能和對任務的適用性。

每個SPE都是一個128位元的機器,具有128個128位元寬的暫存器。其內部執行單元也是128位元寬,每個SPE都能同時處理極大數量或幾個小量運算。例如,每個SPE可在單週期內處理兩個雙精確度浮點、四個單精確度浮點、長整數、八個16位元短整數、16個字元型或其他位元組等數量的運算。

儘管大幅擴展了定義,但每個SPE都具有類似RISC的指令集。它們能負載和儲存僅四個字(128位元)的數量,且所有的處理都必須對齊位址。如果想要負載或儲存一個位元組或字元,首先就要轉換整個16位元組的數量,然後遮蔽、合併或擷取想要的位元。

每個SPE實際上都具有七個不同的執行單元,但僅有兩個可以同時使用。因為兩個執行管線中的一個是專用於演算法運算,而當其他的管線中的執行單元處理程式流量時,一個SPE能夠不間斷地處理定點或浮點運算。這減少了(但無法預防)阻礙資料流程的管線'泡泡'。某些DSP處理器具有相似的內部架構,從資料處理中分離程式串流,且大部份時間正常運作。如果程式碼試圖同時執行兩個演算法運算,晶片便會依次執行而非平行處理。這並不是編程錯誤,但卻減少了相當程度的SPE總處理能力。

內部資料流程

不像PPE,SPE沒有快取記憶體;但是它們卻分別具有256K的本地記憶體。SPE的所有程式碼和資料必須被儲存在這256K的本地範圍內。事實上,SPE根本不能'看到'晶片位址空間的剩餘部份。它們不能存取彼此的本地記憶體,也不能存取PPE的快取記憶體或其他晶片內外部資源。實際上,每個SPE是不可見的,且被侷限在Cell的一角中。

為何削弱地址映射呢?為確保性能,每個SPE都被限制在具有決定存取特性的單獨記憶體庫中。晶片外(或晶片內)記憶體存取花費許多無法預期的時間,且不利於實現SPE的目的。它們被設計來處理串流媒體的超快速和超可靠單元,經常處在資料不能被傳送的即時狀態中。由於限制了選擇和目的,Cell的設計者賦予SPE決定性的關鍵性能。

每個SPE在與Cell的本地匯流排間都具有自己的128位元寬DMA控制器(64位元輸入/出)。PPE和全部八個SPE分享同樣的匯流排,稱為元件互連匯流排(Element Interconnect Bus,EIB)。透過該匯流排,每個DMA控制器取得與SPE相關的指令和資料。DMA控制器也將結果送到通用匯流排,使其可輸出到晶片外,以傳送給晶片上的週邊設備或PPE快取記憶體。

中央處理器的L1和L2快取記憶體可監控EIB,因此快取記憶體是完全一致的。而SPE並不會監控匯流排,事實上,它們完全不監控匯流排流量。這意味著中央PowerPC處理器可意識到SPE所傳輸的資料,但SPE則完全不知道毗鄰的任何流量。這將保持SPE的簡易性,並限制在其執行時的中斷或不必要的影響。如果SPE需要知道外部資料的變化,其各自的DMA控制器便負責擷取資訊。而這些動作想必會受到中央PPE的控制。

超級單元

雖然任何人都能對Cell處理器編程,但這是一種獨特的經歷。部份嵌入式系統開發者已具有編程多重處理器系統的經驗;一些人甚至已經對多核心處理器編寫程式碼。但Cell必須提升遊戲效能。該晶片內九個獨立處理器單元中的每一個均為具備複雜管線互鎖的dual-issue(允許在不同單元同時執行運算)機制、快取記憶體一致性,以及同步問題。重點是必須確保八個SPE都能即時運作。如果你的應用能受益於連續的高速浮點運算,且能平行通過兩個或多個SPE,那你就能讓你的程式碼開始運作了。

BM正致力於開發'Octopiler'設計工具,以編譯C程式碼並透過Cell的八個SPE進行平衡。如果Cell可以成功,類似的工具是絕對必要的。以另一個視訊遊戲機為例,Sega公司的Saturn遊戲機是一個極大的失敗,因為它的四處理器架構(三個SuperH晶片和一個68000)太難以編程了。開發者在緊張的截止日期下工作,忽視了系統的強大功能,因為他們不能有效地利用它。Cell帶來許多問題,但它在電腦架構和半導體製造領域則是一項重大成功。以Cell為基礎的產品保證同樣令人印象深刻。但要實現Cell,仍需要軟體的協助。

作者:杜立 (Jim Turley)


此文章源自《電子工程專輯》網站:
http://www.eettaiwan.com/ART_8800426546_876045_ec7dfb5c200607.HTM http://www.eettaiwan.com/ART_8800426546_876045_ec7dfb5c200607.HTM

 




沒有留言:

張貼留言