GPU如何工作:PowerVR/高通Adreno/ARM Mali的渲染模式分析
下表是常見的PowerVR Series 6 GPU規(guī)格表,浮點性能部分依舊是以1GHz頻率為參考。
本文引用地址:http://www.ex-cimer.com/article/201606/292810.htm其中的G6200目前在諸如紅米Note2/Note 3、魅族 MX5、魅藍 Metal、索尼 Sony Xperia M5/M5 Dual、亞馬遜Fire HD 8/10等智能手機和平板設(shè)備中采用,尤其是前三者,目前在市場上屬于比較火的產(chǎn)品。
以紅米Note 2為例,標準版的G6200頻率是550MHz,增強版是750MHz,單精度性能分別是42 GFLOPS和57.6 GFLOPS,和iPhone 6s的150+GFLOS顯然是有明顯差距的,從GPU的角度而言,搭配G6200的設(shè)備在運行重度三維游戲的時候會明顯比iPhone 6s慢,以GFXBench為例,各項測試結(jié)果差距在3倍到13倍左右。
例如在離屏模式下,1080p算術(shù)邏輯單元2測試結(jié)果紅米Note 2是 749.4 frames,iPhone 6s是 3824 frames,大約是5.1倍,這意味著iPhone 6s GPU的浮點性能是214 GFLOPS左右,推算出來的iPhone 6s GPU頻率是550MHz到600MHz左右(假設(shè) Metal API 版渲染動作、精度都是和OpenGL ES版本是一樣的)。
在2016年,我們預(yù)期會看搭載到比GT7600快接近一倍的頂配PowerVR GPU手機產(chǎn)品。目前手機 AP(應(yīng)用處理器)還基本能按照摩爾定律高速發(fā)展,行業(yè)的增長勢頭還算是比較樂觀,廠商有足夠多的資金用于制程的而研發(fā)改進,例如對16nm/14nm制程進行改進,降低功耗,適當增大電池容量,對微架構(gòu)進行調(diào)優(yōu)以及內(nèi)存技術(shù)的變化,都有望增加實現(xiàn)速度提升一倍的機會。
上圖是ImgTec日前發(fā)布的PowerVRSeries XT 7 Plus,顧名思義,它是PowerVR Series XT 7 的加強版,主要加強的地方包括:
增強整數(shù)單元的單元數(shù)和靈活性,例如每個其中的兩個32位整數(shù)單元可以同時執(zhí)行8個8位整數(shù)操作,這對于OpenCV這類可視化計算來說是有不少好處的。
首次實現(xiàn)了OpenCL 2.0的支持,CPU和GPU可以在同一塊虛擬內(nèi)存上運作,編程的時候內(nèi)存指針不需要再作嚴格區(qū)分。
增加了動態(tài)并行化功能,可以在無需GPU干預(yù)的情況下創(chuàng)建新的GPU線程。
新增了一個2D圖片處理數(shù)據(jù)前端,主要用于不涉及幾何和塊元的處理,適合做二維以及圖片處理應(yīng)用。
不過按照ImgTec的說法,PVR SXT7 Plus需要到2017年才有望看到,當然,我們不排除在下一代iPhone或者iPad上出現(xiàn)PowerVR Series 7。
中低端方面GPU的提升有可能會更激進一些,假設(shè)今年的中檔手機也是搭配 MT6795的制程升級版,可以預(yù)期GPU也會得到相應(yīng)的提升,在保持同樣功耗的情況下,GPU有望升級至G6430等級(150 GFLOPS)。
高通Adreno系列——ATI血脈
相較于ImgTec而言,高通公司在GPU方面的耕耘其實是有一定差距的,在缺乏底蘊的情況下,一家土豪型的公司最簡單、最直接的收購,而對象則是AMD的Imageon。
雖然說是AMD的Imageon,但是Imageon其實是AMD 2006年收購的顯卡公司ATI的項目,高通在2009年收購了這個項目并將其更名為Adreno,當年AMD和Intel拋售非x86業(yè)務(wù)給人的感覺是非常果斷的,他們可曾料到一年后喬布斯推出的iPhone所引領(lǐng)的智能手機現(xiàn)在正在給他們帶來最痛苦的時刻。
既然是源自ATI的,這個Adreno自然有很深的ATI烙印。在2000年后,NVIDIA和ATI的GPU(NV3X的EarlyZ、R200的HyperZ等)都或多或少地采用分塊式立即渲染架構(gòu),也就是TBIMR(Tile Based Immediate Mode Rendering),Adreno 200 就是源ATI 2002年時候的Imageon Z430。
TBIMR和TBDR相比,每個三角形都會按照遞交的順序交給著色器處理,理論上所有三角形都必須依照遞交的次序處理,不過GPU廠商引入了Early-Z技術(shù)來嘗試將一些不可見的片元剔除掉。
在高通的“Qualcomm? Adreno? OpenGL ES Developer Guide”里,對Early-Z有以下的介紹:
在早期(2001年前)的GPU里,Z-test(Z軸深度測試)都是和阿爾法測試一樣在像素著色完成后才進行的。
后來到了NVIDIA GeForce 3(NV20)和ATI RADEON 8500(R200)的時候,GPU 中開始引入名為Early-Z的操作(NVIDIA將其歸入到名為Lighspeed Memory Architecture的概念中,ATI則將其歸入到Hyper-Z里)。
Early-Z在GPU渲染流水線中位于三角形遍歷和像素著色器(含紋理單元)之間,它會讀取并測試片元的Z深度值,在進入像素著色單元之前拋棄掉不可視的片元。
Early-Z只有在三角形按照從前往后(由近及遠)的遞交順序才能起作用,而且為了做到片上高速處理,一般會采取層次化Z緩存(Hierarchical Z-buffer)技術(shù)。
在采用Hierarchical Z-buffer的時候,GPU 會把每2×2個片元的四個 Z值中最接近屏幕或者眼睛的Z值取出來,存到一個更“粗糙”的版本。
這個更“粗糙”版本的Z-buffer分辨率只有原 Z-Buffer的四分之一,GPU再對這個“粗糙”版本的Z-buffer再做同樣的事,一直重復(fù)直到分辨率只有一個片元。這樣一來,就形成一個pyramid(金字塔)。
評論