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