1. 程式人生 > >(轉)移動GPU三種主流架構優缺點淺析

(轉)移動GPU三種主流架構優缺點淺析

與運算 區塊 pix 緩沖 微軟 32bit 方法 一個個 必須

技術分享圖片

導讀: GPU是Graphic Processor Unit的簡稱,顧名思義就是圖形處理器。 GPU的概念最早是從圖形工作站發展而來,從90年代的個人電腦普及開始,GPU迎來了其大發展的時代。 在90年代中期,桌面GPU經歷了2D到3D的跨越,從此3D圖形渲染取代2D成為PC遊戲的主流

1. 移動GPU與桌面GPU移動GPU相對桌面GPU只能算是小弟弟。 移動GPU的劣勢主要表現在理論性能和帶寬。 移動GPU受限於芯片的面積,能耗以及成本所以必須犧牲部分性能和帶寬來求得性價比和電池續航力的平衡。 與桌面GPU動輒256bit甚至512bit的位寬、1.2-1.5GHz的高頻顯存相比,移動GPU不僅要和CPU共享內存帶寬,而且普遍使用的是雙32bit位寬、LPDDR2-800或1066左右的內存系統,總帶寬普遍在10GB/s以內

技術分享圖片

在上圖中移動處理器中內存帶寬最高的是iPad 3/4,因為他們使用Retina屏幕,2048x1536的高分辨率對GPU帶寬要求更高,不過就算是這兩款產品,17GB/s的帶寬與PC顯卡上動輒200GB/s以上的帶寬相比還是小兒科。 沒有高帶寬就沒有大容量紋理數據,也就不會擁有高畫質。 盡管帶寬不是制約移動GPU發展的唯一因素,但是在目前的限制下,移動GPU廠商關心的頭、、大事就是如何在盡可能小的帶寬需求下提升GPU性能及畫質,紋理壓縮是一個方法,還有一種就是使用不同的渲染架構。 目前在GPU領域主要有IMR、TBR及TBDR、三種主流架構2. 移動GPU的模式

2.1. IMR模式

技術分享圖片

IMR(Immediate Mode Rendering)就如字面意思一樣,提交的每個渲染命令都會立即開始執行,並且該渲染命令會在整條流水線中執行完畢後才開始執行下一個渲染命令

這種模式的優點:

1. GPU架構比TBR模式簡單直接

2. 在一幀裏面執行FBO操作時,不會因為需要清空緩沖的渲染指令而影響性能

3. 不用像TBR架構一樣需要片上高速緩存來保存中間結果

4. 不用像TBR架構一樣緩存Triangle List,因此在有大量頂點運算的場景時比TBR有優勢。 例如PC上面的復雜模型可能有幾百萬個triangle

這種模式的缺點就是:

1. IMR的渲染會存在浪費帶寬的情況。 例如,當兩次渲染有前後遮蔽關系時,IMR模式因為兩次draw命令都要執行,因此會存在經過Pixel Shader後的Pixel被Depth test拋棄,這樣就浪費了Shader Unit運算能力。 不過幸運的是,目前幾乎所有的IMR架構的GPU都會提供Early Z的判斷方式,一般是在Rasterizer裏面對圖形的遮蔽關系進行判斷,如果需要渲染的圖形被遮擋住,那麽就直接拋棄該圖形而不需要執行Pixel Shader

2. IMR的另外一個缺點就是其渲染命令在執行需要隨時讀寫frame buffer,depth buffer和stencil buffer,這帶來大量的內存帶寬消耗,在移動平臺上面訪問片外內存是最消耗電量和最耗時的操作

因此在桌面GPU領域,TBR節省帶寬和低性能不符合PC機的要求,IMR一統江湖。 但是在移動GPU領域,TBR的低帶寬消耗,低功耗正好滿足移動設備需求,與其在PC端的待遇相反,移動設備領域TBR幾乎一統江湖

3.2. TBR模式與IMR簡單粗暴的做法不同,TBR(Tile Based Rendering)它將需要渲染的畫面分成一個個的矩形區塊(tile),tile一般是4x4或者8x4的矩形塊。 模型的頂點經過Vertex Shader運算以後會組裝成一個個的triangle,這些triangle會被緩存在一個triangle cache裏面。 如果某個triangle需要在某個tile裏面繪制,那麽就會在該tile的triangle list中存一個索引。 、、一幀裏面所有的渲染命令都經執行完Vertex Shader生成triangle以後,每個tile就會擁有一個triangle list,這list就包含了需要在該tile內部繪制的所有triangle。 然後GPU再基於triangle list執行每個tile的raster和Per-fragment operation

TBR的優點是:

執行raster和Per-fragment operation時不需要反復的訪問frame buffer,depth buffer,stencil buffer。 這是因為GPU可以把整個tile的frame buffer/depth buffer/stencil buffer保存在一個片上的高速緩存中,這樣GPU就直接訪問tile,而不需要訪問外部內存。 這大大減少了內存的帶寬消耗,也意味著能耗的降低

TBR的缺點是:

需要保存Vertex Shader執行後的結果以及每個tile的triangle list。 這意味著如果場景裏面有很多的頂點,那麽片上緩存就不可能存下這麽多頂點信息和triangle list,就不得不依靠外部內存來存儲,就會擁有額外的帶寬消耗。 不過慶幸的是當前的移動3D繪制都不會擁有太多的triangle的場景。 一個復雜的模型也就1萬多個triangle,因此一個通常的場景大概就是幾十萬triangle。 隨著移動遊戲越來越復雜精美,模型的復雜程度也會快速上升,這也是TBR架構在未來將會面臨的一大挑戰

如果在一幀裏面有兩遍及其以上的渲染,那麽就需要使用Frame buffer object來緩存中間結果,這對TBR又是一大性能損耗。 根據我們前面的講解,TBR需要緩沖一幀所有的圖元,所有圖元執行完畢後才開始raster和Per-fragment operation。 在這種情況下,一旦後面的draw命令需要使用到前面渲染生成的結果,那麽就不得不在該命令執行前,要求GPU把緩存的所有draw命令都執行完畢,然後放棄當前緩存內容。 在極致情況下,例如每次draw都需要讀取前一次draw渲染的結果,那麽TBR就會直接退化成IMR模式基於以上的缺點,我們可以看出在桌面GPU領域TBR沒有任何優勢,因此其完全退出桌面GPU市場。 但是在移動GPU市場它更能適應性能/帶寬/能耗三者的平衡

3.3. TBDR模式

技術分享圖片

? ?

TBDR(Tile Based Deferred Rendering,貼圖延遲渲染)算是TBR的近親,它跟TBR原理相似,但是通過HSR(Hidden Surface Removal,隱藏面消除)操作,在執行Pixel Shader之前進一步減少了不需要渲染的fragment,降低了帶寬需求。 在執行Pixel Shader之前,對Raster生成的每個像素都做depth test的比較,剔除被遮擋的像素,這就是HSR的原理。 理論上經過HSR剔除以後,TBDR每幀需要渲染的像素上限就是屏幕像素的數量(沒有考慮alpha blend的情況下)。 而傳統的TBR在執行復雜一點的遊戲時可能需要渲染6倍於屏幕的像素

TBDR是PowerVR的王牌,因為TBR和HSR帶來的帶寬與運算開銷的降低,使得手機的續航能力讓人驚嘆。 下圖是PowerVR的SGX系列的GPU架構圖,可以看到其復雜程度的架構

技術分享圖片

? ?

技術分享圖片

導讀: GPUGraphic Processor Unit的簡稱,顧名思義就是圖形處理器。 GPU的概念最早是從圖形工作站發展而來,從90年代的個人電腦普及開始,GPU迎來了其大發展的時代。 90年代中期,桌面GPU經歷了2D3D的跨越,從此3D圖形渲染取代2D成為PC遊戲的主流

1. 移動GPU與桌面GPU移動GPU相對桌面GPU只能算是小弟弟。 移動GPU的劣勢主要表現在理論性能和帶寬。 移動GPU受限於芯片的面積,能耗以及成本所以必須犧牲部分性能和帶寬來求得性價比和電池續航力的平衡。 與桌面GPU動輒256bit甚至512bit的位寬、1.2-1.5GHz的高頻顯存相比,移動GPU不僅要和CPU共享內存帶寬,而且普遍使用的是雙32bit位寬、LPDDR2-8001066左右的內存系統,總帶寬普遍在10GB/s以內

技術分享圖片

在上圖中移動處理器中內存帶寬最高的是iPad 3/4,因為他們使用Retina屏幕,2048x1536的高分辨率對GPU帶寬要求更高,不過就算是這兩款產品,17GB/s的帶寬與PC顯卡上動輒200GB/s以上的帶寬相比還是小兒科。 沒有高帶寬就沒有大容量紋理數據,也就不會擁有高畫質。 盡管帶寬不是制約移動GPU發展的唯一因素,但是在目前的限制下,移動GPU廠商關心的頭、、大事就是如何在盡可能小的帶寬需求下提升GPU性能及畫質,紋理壓縮是一個方法,還有一種就是使用不同的渲染架構。 目前在GPU領域主要有IMRTBRTBDR、三種主流架構2. 移動GPU的模式

2.1. IMR模式

技術分享圖片

IMRImmediate Mode Rendering)就如字面意思一樣,提交的每個渲染命令都會立即開始執行,並且該渲染命令會在整條流水線中執行完畢後才開始執行下一個渲染命令

這種模式的優點:

1. GPU架構比TBR模式簡單直接

2. 在一幀裏面執行FBO操作時,不會因為需要清空緩沖的渲染指令而影響性能

3. 不用像TBR架構一樣需要片上高速緩存來保存中間結果

4. 不用像TBR架構一樣緩存Triangle List,因此在有大量頂點運算的場景時比TBR有優勢。 例如PC上面的復雜模型可能有幾百萬個triangle

這種模式的缺點就是:

1. IMR的渲染會存在浪費帶寬的情況。 例如,當兩次渲染有前後遮蔽關系時,IMR模式因為兩次draw命令都要執行,因此會存在經過Pixel Shader後的PixelDepth test拋棄,這樣就浪費了Shader Unit運算能力。 不過幸運的是,目前幾乎所有的IMR架構的GPU都會提供Early Z的判斷方式,一般是在Rasterizer裏面對圖形的遮蔽關系進行判斷,如果需要渲染的圖形被遮擋住,那麽就直接拋棄該圖形而不需要執行Pixel Shader

2. IMR的另外一個缺點就是其渲染命令在執行需要隨時讀寫frame bufferdepth bufferstencil buffer,這帶來大量的內存帶寬消耗,在移動平臺上面訪問片外內存是最消耗電量和最耗時的操作

因此在桌面GPU領域,TBR節省帶寬和低性能不符合PC機的要求,IMR一統江湖。 但是在移動GPU領域,TBR的低帶寬消耗,低功耗正好滿足移動設備需求,與其在PC端的待遇相反,移動設備領域TBR幾乎一統江湖

3.2. TBR模式IMR簡單粗暴的做法不同,TBRTile Based Rendering)它將需要渲染的畫面分成一個個的矩形區塊(tile),tile一般是4x4或者8x4的矩形塊。 模型的頂點經過Vertex Shader運算以後會組裝成一個個的triangle,這些triangle會被緩存在一個triangle cache裏面。 如果某個triangle需要在某個tile裏面繪制,那麽就會在該tiletriangle list中存一個索引。 、、一幀裏面所有的渲染命令都經執行完Vertex Shader生成triangle以後,每個tile就會擁有一個triangle list,這list就包含了需要在該tile內部繪制的所有triangle 然後GPU再基於triangle list執行每個tilerasterPer-fragment operation

TBR的優點是:

執行rasterPer-fragment operation時不需要反復的訪問frame bufferdepth bufferstencil buffer 這是因為GPU可以把整個tileframe buffer/depth buffer/stencil buffer保存在一個片上的高速緩存中,這樣GPU就直接訪問tile,而不需要訪問外部內存。 這大大減少了內存的帶寬消耗,也意味著能耗的降低

TBR的缺點是:

需要保存Vertex Shader執行後的結果以及每個tiletriangle list 這意味著如果場景裏面有很多的頂點,那麽片上緩存就不可能存下這麽多頂點信息和triangle list,就不得不依靠外部內存來存儲,就會擁有額外的帶寬消耗。 不過慶幸的是當前的移動3D繪制都不會擁有太多的triangle的場景。 一個復雜的模型也就1萬多個triangle,因此一個通常的場景大概就是幾十萬triangle 隨著移動遊戲越來越復雜精美,模型的復雜程度也會快速上升,這也是TBR架構在未來將會面臨的一大挑戰

如果在一幀裏面有兩遍及其以上的渲染,那麽就需要使用Frame buffer object來緩存中間結果,這對TBR又是一大性能損耗。 根據我們前面的講解,TBR需要緩沖一幀所有的圖元,所有圖元執行完畢後才開始rasterPer-fragment operation 在這種情況下,一旦後面的draw命令需要使用到前面渲染生成的結果,那麽就不得不在該命令執行前,要求GPU把緩存的所有draw命令都執行完畢,然後放棄當前緩存內容。 在極致情況下,例如每次draw都需要讀取前一次draw渲染的結果,那麽TBR就會直接退化成IMR模式基於以上的缺點,我們可以看出在桌面GPU領域TBR沒有任何優勢,因此其完全退出桌面GPU市場。 但是在移動GPU市場它更能適應性能/帶寬/能耗三者的平衡

3.3. TBDR模式

技術分享圖片

? ?

TBDRTile Based Deferred Rendering,貼圖延遲渲染)算是TBR的近親,它跟TBR原理相似,但是通過HSRHidden Surface Removal,隱藏面消除)操作,在執行Pixel Shader之前進一步減少了不需要渲染的fragment,降低了帶寬需求。 在執行Pixel Shader之前,對Raster生成的每個像素都做depth test的比較,剔除被遮擋的像素,這就是HSR的原理。 理論上經過HSR剔除以後,TBDR每幀需要渲染的像素上限就是屏幕像素的數量(沒有考慮alpha blend的情況下)。 而傳統的TBR在執行復雜一點的遊戲時可能需要渲染6倍於屏幕的像素

TBDRPowerVR的王牌,因為TBRHSR帶來的帶寬與運算開銷的降低,使得手機的續航能力讓人驚嘆。 下圖是PowerVRSGX系列的GPU架構圖,可以看到其復雜程度的架構

技術分享圖片

? ?

來自 <https://blog.csdn.net/pizi0475/article/details/58627435>

(轉)移動GPU三種主流架構優缺點淺析