人工智能的飛速發展,需要強大的算力作為支撐,這背后NIVIDIA可謂是當之無愧的功臣。NIVIDIA先進的GPU技術和優異的軟件生態,使其在競爭中脫穎而出,成為市場霸主。目前人工智能在圖像處理及語音識別領域的研究取得了很好的發展,在手機和安防領域也有很多產品落地。在落地過程中,依然會面臨設備算力的問題,而移動端GPU則自然而然的進入了人們的視野。
移動端GPU廠商的發展史
在移動端GPU市場中,沒有形成一家獨大的競爭格局。目前主要的移動端GPU廠商有高通,arm和imaginaton。高通的adreno來自ATI的imageon,ATI最早被AMD收購,后來高通收購了AMD的移動設備資產,取得了AMD的矢量繪圖與3D繪圖技術和相關知識產權。后來高通結合AMD的手機圖形技術發展為自家的Adreno圖形處理器。另一家移動計算的巨頭ARM,ARM在移動CPU的市場地位可謂遙不可及,但是在GPU領域,它確是諸多廠商中的一家,他的GPU業務也并非一開始就擁有,而是后來組建的。其GPU技術來自一家名為Falanx的公司,這家公司是早起從挪威大學脫離出來的一個名為mali的研究小組的成員組建的,最早定位于PC領域,失利后轉向SoC GPU設計。隨著SoC市場的不斷壯大,以及移動計算的發展,ARM收購了Falanx,組建了自己的GPU事業部。最后一家,Imagination Technologies,這是一家專注于GPU技術的公司,最早在桌面級GPU的競爭中失利,后來轉戰移動端,Intel,三星,蘋果,聯發科,展訊曾經都是他的客戶,一度被認為是全球最大的移動GPU廠商。這家公司可謂命運多舛,曾經作為蘋果的供應商,由于iphone的每代產品在圖形性能方面都比arm公版的Mali GPU有優勢,一度讓Imagination風光無二,但是隨著蘋果宣布自研GPU,Imagination的股票出現了斷崖式下跌,公司瀕臨破產。后來將其業務進行拆分,MIPS業務出售給Tallwood MIPS,而GPU業務則出售給中國背景的私募基金Canyon Bridge。這一收購也填補了國內在GPU領域的空白。
在市場占有率方面,由于ARM以及高通的捆綁銷售,Imagination并無優勢,但是鑒于在物聯網以及人工智能領域,目前三家都還沒有建立起強大的生態,因此未來誰能稱雄并未可知。
在技術方面三家GPU廠商架構差異比較明顯,而且對外披露都比較少,相比較來說Imagination發面對于技術方面會開放一些。
Imagination的GPU Rogue架構淺析
在關于GPU的宣傳中很容易看到一個詞core,而且高端GPU也都是成千上萬的core。其實宣傳中的core并非CPU上“核”的概念。而真正意義上的核心,應該是AMD GCN架構中的Compute Unit, NVIDIA Maxwell架構中的SMM以及PowerVR Rogue架構中的USC等。對應于編程語言,應該是OpenCL中的Compute Unit(簡稱CU)。而宣傳中所謂的core,則是OpenCL中的ProcessElement(簡稱PE)。
目前GPU采用的是多層級的線程技術,硬件結構和軟件概念的對照如下圖所示:從硬件結構看,首先是GPU設備,叫做device;一個GPU包含多個CU,而每個CU又包含多個計算通道。從OpenCL的軟件架構看,每個NDRange對應一個GPU設備,其包含多個work-group,而每個work-group必須在一個CU上執行,也就是說,每個CU可以執行多個work-group,但是每個work-group不可以拆分到多個CU上去執行;每個work-group包含多個work-item,一個計算通道執行一個work-item。
簡單介紹一下計算通道,SIMD叫做單指令多數據流(Single instruction MultipleData),目前所有的GPU都術語SIMD,一般都是16路或者32路SIMD。
關于線程的調度,首先介紹一個概念,AMD的wavefront或者NIVIDIA的warp,這是指線程調度的最小單位,也就是說,在GPU中每次執行一個warp,一般一個warp包含32個線程;對于AMD顯卡則是一個wavefront包含64個work-item。下文中對這一概念統稱為warp,線程和work-item通用。在Rogue架構中每個warp也是包含32個線程。
如下圖所示,是Rogue架構的示意圖,GPU中包含有多個USC(個數與產品型號有關),每個USC包含著色器,駐留槽,執行單元,存儲器,紋理單元等等等。這樣每個work-item在自己的生命周期中都包含自己的片上存儲在Unified store中,shared local memory隱藏在common store中,這樣每個USC都可以在warp之間進行零開銷的上下文切換。
線程的執行過程如下圖:
圖中的Residency Slots中包含很多slot,每個slot代表一個warp,空的表示目前還沒有部署warp。而部署了warp的slots一共有三個狀態,綠色表示active,黃色表示ready,可以執行了,紅色表示阻塞;active的warp接下來會在執行單元上執行,如圖右側所示,所有的32個work-item同時并行執行。Ready的會在下一個執行周期被調度執行;阻塞的則是因為讀寫等原因進入該狀態。
下圖是USC中流水線示意圖,其中包含4個warp的調度。Warp0首先被執行,warp0會一直執行到它進入阻塞狀態,例如讀寫全局存儲,此時調度器會停止調度warp0,開始執行warp1;因為warp中的所有工作項執行相同的kernel代碼,因此就有相同的特性,例如同時進入阻塞;在warp2進入阻塞狀態時,warp0讀寫結束,進入read狀態;最后在調度器調度完warp3后,重新開始調度warp0。這樣并發執行可以實現對內存訪問延遲的隱藏。因此在編程實現中一般使用較大的工作組,來實現warp切換對內存訪問的延遲(當然,這不是絕對的,在實際中還要考慮寄存器等資源的消耗情況)。
下圖展示了Rogue架構下得PowerVR Series7XT系列的架構圖。
該系列的GPU擁有2到16個USC,因此具有100GFLOPS到1.5TFLOPS的可擴展性能。如下圖展示了該系列GPU的USC架構。
以GT7400為例,其擁有128個FP32ALU核心,256個FP16 ALU核心。每個USC中包含16個pipelines,每個pipelines中含有多個ALU。其中的SFU可以原生的處理FP16、FP32(上一代會全部推給FP32),因此這一代架構可以避免沒有必要的高精度操作,提升了性能并降低了功耗。
目前Imagenition已經發布了最新的GPU架構Furian,該架構相對于多年來已成業界標桿的Rogue架構有了在性能方面有了更大的提升。
-
gpu
+關注
關注
28文章
4760瀏覽量
129129 -
人工智能
+關注
關注
1792文章
47492瀏覽量
239176
原文標題:移動GPU淺談
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論