CPU和GPU真融合 APU異構系統架構解析
泡泡網CPU頻道5月28日 任何一種處理器芯片的發展,都是為了要面向未來的應用而設計的。那么我們就從最近幾年的互聯網、PC、平板、智能手機的應用和交互形式來看,新一代處理器應該滿足什么樣的需求:
1. 用戶越來越希望能夠借助手勢、眼睛、身體,用自然表達的方式和機器交互;
2. 人們更加追求高像素、高清電影和視頻交互;
3. 基于社交網絡的應用和游戲應用會越來越多地介入到人的生活當中;
4. 越來越多的人喜歡大屏幕,越來越多的人喜歡在同一時間協同工作,而不是像以前的點對點工作方式,協同工作會增加效率;
5. 云計算作為下一代互聯網、或整個人類在生存環境當中特別需要看重的一種應用。
市面上所有的應用包括未來應用基本上都是基于這幾大類,那這些東西對CPU的要求又是什么呢?
1. 性能與效率
目前有兩大處理器:CPU和GPU。不管CPU還是GPU,所有人都在追求性能,但性能受制于半導體制造工藝的限制,又不能無限制的提升,否則功耗和成本就無法控制,應用領域會受到嚴重的限制。所以現在很多人都看重“每瓦性能”,或者是說效率。
2. 功能與架構
在處理器發展歷史中,為了解決各種特定的問題,不斷有互不兼容的特定功能計算模塊被加入系統,卻很少從全局優化的角度加以考察。計算機整體效率不高的現狀正是這種設計模式的直接后果。常見情況是軟件的計算負載被調度在一個并不適合當前任務的模塊上低效執行。
無論X86架構還是ARM架構都是同步處理器系統,一種處理器系統能否解決所有的運算?CPU和GPU都有獨特的運算能力,他們有沒有被用于執行最適合自己架構的應用?處理器是用來處理器數據的,而數據是在不同的子系統中來回搬遷的,而搬遷數據的難易程度又會嚴重影響處理器的效率。
3. 應用與開發
硬件的性能需要軟件來發揮,軟件開發者需要強大的編程模型來充分利用新的計算能力。應用軟件需要支持和兼容廣泛的硬件平臺也日益變得重要。對開發者而言,隨著平臺種類的不斷增多,目前反復移植代碼的慣常方法必然難以為繼。
綜上,處理器產業需要一種新的發展思路——讓處理器架構更加高效, 才能在上述需求交織的復雜環境中前行。這種新的思路需承諾在功耗、性能、可編程性和可移植性這四個維度上同時都有改進。
計算機從誕生之日起就配有中央處理器,即執行通用計算任務的CPU。但在過去的二、三十年中,主流的計算系統同時配置了其他計算處理單元,其中最常見的是圖形處理器(GPU)。最初,GPU應用于并行化的特殊的圖形計算。隨著時間推移,GPU的絕對計算能力越來越強,而專用芯片的特點則逐漸淡化,此消彼長的結果是,GPU可以較好的性能-功耗比完成通用并行計算的任務。
今天數量越來越多的主流應用要求兼具高性能和低功耗的素質,并行計算是達成目標的唯一途徑。但是,當前的CPU和GPU是分立設計的處理器,不能高效率地協同工作,編寫同時運行于CPU和GPU的程序也是相當麻煩。由于CPU和GPU擁有獨立的地址空間,應用程序不得不明確地控制數據在CPU和GPU之間的流動。
CPU代碼通過系統調用向GPU發送任務,此類系統調用一般由GPU驅動程序管理,而驅動程序本身又受到其他調度程序管理。這么多的環節造成了很大的調用開銷,以至于,只有在任務所需處理的數據規模足夠大,任務的并行計算量足夠大時,這樣的調用開銷才是劃算的。而其他的調用形式,比如由GPU向CPU發送任務,或者GPU向自己發送任務,在今天則根本不被支持!
為了充分釋放并行處理器的計算能力,架構設計者必須打破既有格局,采用新的思路。設計者必須重塑計算系統,把同一個平臺上分立的處理單元緊密整合成為不斷演進單顆處理器,同時無需軟件開發者的編程方式發生重大的改變,這是HSA設計中的首要目標。
為此,異構系統架構(HSA,Heterogeneous System Architecture)創造了一種更佳的處理器設計,展示了CPU和GPU被無縫集成后所帶來的益處和潛能。通過HSA,程序可以在統一的地址空間中建立數據結構,在最合適的處理器上創建任務。處理器之間的數據交互不過是傳遞一個指針。多個計算任務之間通過coherent memory,barrier,和atomic等操作來保證數據的同步(和多核CPU的方式相同)。
HSA用一句話來概括就是:一種智能計算架構,通過無縫地分配相應的任務至最適合的處理單元,使CPU、GPU和其他處理器和諧工作在單一芯片上。
上一代APU雖然已經將CPU和GPU無縫融合在了一起,但并沒有實現“分配相應的任務至最適合的處理單元”,這就是HSA架構的精髓,也是AMD未來APU想要努力實現的方向。
HSA系統的幾大特性:
1. 任何處理單元的數據可以輕易地被其它處理單元所訪問;
2. 異構計算不僅包括GPU,還包括其它專用處理單元或協處理器;
3. 編程人員不用知道程序在什么處理單元上運行;
4. GPU和其它處理單元無縫訪問虛擬內存,解決數據搬遷瓶頸,數據無需復制。
HSA成功的一個關鍵是最小化應用程序移植的代價。從過去的經驗來看,要求軟件供應商修改代碼以適應新的硬件的這種做法充其量只能獲得有限度的成功。對于廠商專有解決方案就更是如此了。要成為主流技術,必須降低使用者的門檻。這就是HSA的設計思路。HSA解決方案為應用程序員提供了硬件、接口、通用的中間語言和基本的運行時環境,封裝并隱藏了內存一致性,任務調度管理等等復雜的底層細節。
我們的系統中會有很多處理器、音頻處理器、視頻處理器、固定功能加速器,圖形信號處理器等,很多時候這些處理器都是需要協同工作的,實際上在異構系統當中已經變成可能,由完全一致性的共享內存使整個處理器的各個子系統一次性的可見變成一種可能。HSA架構下,GPU也是支持C++的,最重要的是CPU指針,在現在操作系統當中,內存實際上是通過虛擬內存的管理來實現的,實際上在異構系統當中最重要的變化是這種配置是全局可見的,在未來GPU將變成可搶占性的,意味著操作系統是可以參與調配的。
可以看到,在硬件層面,HSA架構當中的異構統一內存訪問是一項關鍵技術,因此有必要詳細介紹一下UMA:
一個真正的UMA系統中,所有的計算核心共享一個單一的內存地址空間,而NUMA采用非統一內存訪問的GPU計算系統,不同的地址需要額外的數據來實現堆棧管理,頻繁的拷貝,同步和地址轉換增加了編程復雜性。HSA恢復GPU到統一內存訪問,異構計算取代GPU計算。
hUMA的主要特性:
1. 雙向的一致性,CPU和GPU任何一個處理單元做出的更新對其他的處理單元都是可見的。
2. GPU支持分頁內存管理,GPU可以產生缺頁異常,不再受限于傳統的頁表鎖定內存;
3. 系統整體內存空間的全局管理,CPU和GPU進程可以從整個內存空間中動態分配內存。
以往的處理器都不支持hUMA架構,此時數據需要在CPU和GPU之間復制,CPU先把數據從內存復制到顯存中,等GPU完成計算之后,再從顯存中復制到內存中。如此頻繁的轉移數據,會浪費不少處理器時間,導致處理器效能不高,同時占據了大量的系統總線帶寬。
未來處理器采用hUMA架構之后,數據就無需復制了,CPU只需將指針傳遞到GPU,GPU處理完畢后,CPU就可以直接讀取結果,這樣將極大的提高處理器效能,并降低對總線帶寬的占用。
最后再來回顧一下hUMA架構的特性:整體內存空間訪問、分頁內存、雙向一致性、GPU快速訪問系統內存、動態內存分配。值得一提的是,目前已經上市的APU產品還不能支持hUMA架構,AMD會在下半年發布的下一代APU產品中提供支持,屆時異構計算的效能將會得到釋放。
如果意圖在更廣泛的應用中被采納,HSA必須超越自身,不再僅僅是某個硬件廠商的獨家解決方案。軟件開發者的理想一直是“一次編碼,處處運行”,實現這個理想需要具備一個跨平臺和跨設備的基礎架構。這也是HSA的愿景。HSA基金會由此成立,作為一個開放的工業標準組織,基金會的工作是把計算產業的參與者們聯合到同一面旗幟之下。HSA的五家創始會員分別是:AMD、ARM、Imagination Technologies、MediaTek, TI和Samsung。
HSA基金會的目標是協助系統設計者把CPU、GPU這樣不兼容的計算單元很好地整合在一起,消除計算單元之間數據共享和任務調用的開銷。透過HSA中間語言(HSAIL, HSA Intermediate Language),不同的硬件實現向上暴露出統一的軟件接口。HSAIL也是所有底層軟件模塊、開發工具一致的目標平臺。同時,HSAIL足夠靈活并且接近硬件,各個硬件廠商可以高效地把它映射到自己的硬件設計上。HSAIL也解放了程序員,后者不必為不同硬件平臺裁剪自己的代碼,同一套代碼可以順利運行在不同CPU/GPU配置的系統上。
由于HSA是面向未來的架構,所以首先需要軟件開發者配合,他們開發出來高質量高性能的軟件,再加上操作系統層面的支持,最終用戶將會得到豐富完美的體驗,當然這需要較長的時間才能實現并完善。
硬件方面,一旦處理器使用HSA架構之后,異構計算的效率將會大幅提高,這樣就能用相同尺寸和成本的芯片提供更高的性能,OEM廠商可以降低產品的整體厚度和重量,產品擁有更長的電池續航,從而給用戶帶來更好的使用體驗。
由于目前還沒有支持HSA的處理器產品問世,所以所有的技術介紹及數據都來自于AMD內部。AMD大中華區游戲,軟件及異構計算合作與技術總監楚含進向大家分享了HSA架構的應用實例——人臉識別技術:
人臉識別技術看似簡單,實則是通過暴力計算的方式來實現,處理器需要在一張圖片中畫出無數個搜索框,從中尋找人臉的關鍵特征,一張1080p像素的全高清圖片需要分析200萬次……
一張圖片中可能會有無數個人臉,處理器一開始并不知道人臉有多大,所以需要不斷地對圖片進行縮放從而尋找合適大小的臉。
最終,人臉識別的過程被細分為22個階段,每一個搜索框都需要重復這22個階段,如果是靜態圖像還好,動態視頻的話30FPS就需要每秒1.4萬億次的計算能力……而且這個速度僅能識別正面人臉。
經過測試,這22個階段中,并不是所有階段都是GPU處理速度更快,也有CPU占據明顯優勢的,也有性能速度差不多的,畢竟兩者計算架構完全不同,適應不同的運算。
22個階段CPU和GPU各有所長,最終根據效率高低,第0階段讓CPU獨立計算,第9-22階段讓GPU獨立計算,而1-8階段讓CPU和GPU協同計算會更快一些。
最終經過測試獲得的數據顯示,HSA為CPU和GPU智能分配任務后,人臉識別速度提高了2.5倍之多!
這個案例意味著什么呢?我們再來回顧一下本文第一頁提到的內容:用戶越來越希望能夠借助手勢、眼睛、身體,用自然表達的方式和機器交互——沒錯,體感!然后呢?游戲機——索尼PS4和微軟Xbox One——它們都用的是AMD下一代的APU,都是基于HSA架構而設計的,而且是低功耗的CPU架構搭配為計算優化的GCN GPU架構!
只有HSA架構才能徹底的將GPU強大的運算能力釋放出來,從而降低對CPU的依賴,大幅提升性能功耗比,降低應用開發難度,這就是索尼和微軟不約而同的選用AMD APU的根本原因,否則傳統PC架構優異CPU搭配獨立顯卡不是更好么?游戲機硬件一旦確立,未來5年內甚至更長時間都不會再改變,因此必須選用前瞻性的架構,索尼的微軟為次世代游戲主機選擇了HSA和APU,PC同樣是大勢所趨,讓我們一同期待AMD下一代桌面級APU的表現吧!■<
關注我們



