<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

PowerVR GPU架構的性能優化建議

汽車玩家 ? 來源:YEMI'S BLOG ? 作者:YEMI'S BLOG ? 2020-03-15 17:24 ? 次閱讀

最近在看移動GPU優化的時候對TiledBased GPU有一些疑惑,特別是常說的Alpha-Blend比Alpha-Test在移動GPU上快的奇特性質,于是找了powerVR相關的文檔來閱讀,也做個記錄。

Imagination的powerVR架構的GPU之前主要是iOS手機系列的GPU供應商,而蘋果自從17年宣布要逐步放棄使用imagination的GPU技術轉而自主研發GPU開始,powerVR架構就似乎前途未卜。Apple A11處理器開始到最新iphone XS 使用的A12處理器,都是蘋果自研的GPU,相比起之前的powerVR的GPU有巨大的性能提升。雖然蘋果轉向了自研GPU,但似乎其架構還是繼承于PVR,相應的TBDR也是保留的,所以powerVR架構相關的知識對于iOS的GPU開發依舊還是有用的。同時Metal2提供了一些新的feature如Imageblocks,Raster Order Groups等新feature,這部分是Apple對TBDR架構的加強與優化。

主流圖形架構

Immediate Mode Renderer(IMR)

Tile Based Renderer(TBR)

Tile Based Deferred Renderer(TBDR)

Unified and Non-unified shader architecture

PowerVR GPU架構的性能優化建議

非統一的著色器架構上Vertex Shader要等待Fragment Shader執行完后才能push處理完的頂點數據丟給FS單元。

而統一的著色器架構,處理會減少等待時間,提升性能。PowerVR全部采用的都是Unified Shader Architecture.

Overdraw

由于geometry提交順序的不同,會有一些fragment會被重復繪制。

為了減少overdraw的情形,圖形計算核心會進行Early-Z testing的操作以減少Overdraw。

IMR

每一個渲染對象/drawcall完成了整個渲染管線流程寫入frameBuffer才會開始渲染下一個對象/drawcall。在IMR模式下,Early-Z test可以直接將深度測試的幾何圖元跳過以提升性能,但是Early-Z test依賴渲染繪制對象的提交順序是從前往后的。

同時每一次渲染完的color與depth數據讀取寫回到colorbuffer與depth/stencil buffer是都會產生很大的帶寬消耗。普通的Read-Modify-Write都是在system memory與GPU之間傳輸數據,如ZWrite/Write,Blend這些。所以IMR的架構會有一個很大顯存cache來優化這部分大量的內存帶寬消耗。

TBR

整個光柵化和fragment處理會被分為一個個Tile進行處理,通常為16×16大小的Tile。

TBR的結構添加了on-chip buffers用來儲存tiling后的Depth Buffer和Color buffer。原先IMR架構中對主存中color/depth buffer進行Read-Modify-Write的操作變成直接在GPU中的高速內存操作,減少了最影響性能的系統內存傳輸的開銷。

雖然TBR減少了IMR的帶寬開銷,但是依然沒有解決overdraw的問題。

TBDR

PowerVR的渲染架構 Tile Based Deferred Rendering(TBDR)

數據從內存到GPU之間的傳輸是最大的性能消耗,powerVR架構的TBDR,on-chip buffer都為了該目標而優化。

TBDR 架構關注于在渲染管線中盡可能移除冗余的操作與計算,最小化內存帶寬和能耗同時提升管線處理的吞吐量。

TBDR將每個Tiler的渲染過程拆分為兩個步驟,一個是Hidden Surface Removal(HSR)和 deferred pixel shading。

TBDR會盡可能地延遲pixel shading的時間,直到所有光柵化后的fragment完成了DepthTest和HSR。對于一個場景中全是不透明幾何圖元的渲染畫面來說。每一個光柵化完的fragment patch會經過HSR和Depth test,在所有triangle完成了raster之后,最后留下來的fragment會留下來執行pixel shading。也就是在這種情況下tile中的每一個像素只執行一次pixel shader。

如果渲染流程中有alpha test/blend/pixel depth write,就會阻斷deferred shading,因為這個時候需要執行shading,才能正確進行后續fragment的計算。

Alpha Test需要執行shading 算出當前fragment的alpha,判斷該fragment是否被丟棄。

Alpha Blend 需要讀取framebuffer中當前像素之前的顏色。

Pixel Depth write會影響到后續fragment的HSR與Depth test。

這三種情況下Pixel Depth Write,因為會影響到后續fragment HSR/Depth,所以這個時候一定要執行該像素的shading,打亂了原先deferred的流程。具體要看GPU實現時時把整個HSR步驟積累的fragment都shading掉還是只把當前fragment shading掉。

而對于AlphaBlend來說,它并不一定要打斷deferred shading。

遇到blending的fragment,可以把該fragment像素位置的所有fragment按順序保留在列表中,等到shading時按順序計算blend。

但這樣就會增加pixel shading的次數。具體的實現還是要參照GPU的實現方式,由于使用TBR,Blend的開銷相對比IMR還是降低了很多。

Alpha-Test的情況是和Pixel Depth Write類似,由于Alpha Test失敗fragment會被丟棄,如果其開啟了DepthWrite,那么就一定要執行shading。因為alpha-test會影響后續fragment的HSR/Z-Test的流程。如果沒有開啟depth Write,也可以和Blend一樣保留后續所有fragment的方式來延遲shading。但是這個時候后續該位置的fragment patch都是不能被移出shading列表的,延遲shading也沒有意義了。

關于PowerVR 架構

Vector處理單元

高效計算單元,同時計算3到4個元素。如果一個計算的值小于4個,那么其他的計算會被浪費。只對一個元素進行計算時,效率會降低到25%,造成計算和電能的浪費,可以通過合并vector來優化。

Scalar處理單元

標量計算單元更加靈活,不需要填充其他的位寬數據。每一個硬件tick比起非向量化優化的代碼能處理更多有效的數據值。

Verte Processing (Tiler)

Tile Accelerator(TA)計算每個transform后的圖元屬于哪個tile。

計算完后,per-tile隊列會更新。變換后的幾何體和tile list會被儲存在Parameter Buffer(PB)中。PB被儲存在系統內存中。

Per-Tile Rasterization (Render)

Image Sythesis Processor(ISP)獲取當前tile的primitive數據,進行HSR,同時進行Z-Test和Stencil Test。ISP只處理ScreenSpace Position,和vertex data。

接下來是Texture and Shading Processor (TSP),處理fragment shaders和visible pixels。當Tile的渲染結束之后,color data會被寫回到主存中的framebuffer中。直到所有的tile都完成渲染后,整個frameBuffer就完成了。

PowerVR Shader Engine

massive multi-threaded and multi-tasking approah.

HSR Efficiency

Early-Z testing 需要按從前往后順序提交opaque對象的draw call,需要進行排序會有額外的overhead。當物體有intersection時,Eearly-Z testing并不能移除所有的overdraw,同時對draw call進行排序可能會造成pipeline 狀態改變產生的overhead。

PowerVR 的HSR盡可能減少了fragment shading的數量。

性能優化建議

對drawcall進行排序

對于TBDR架構來說,所有的drawcall 按照 opaque - alpha-tested - blended進行排序會最大程度利用HSR減少overdraw。對于有blend的pixel來說,后續所有相同位置的pixel都需要進行pixel shading,而alpha-test在完成后的像素還是可以繼續進行HSR的優化。所以比先blend提交alpha-test可以盡可能減少overdraw。

始終進行Clear操作

在IMR架構中,進行Clear操作需要對fragment buffer每個像素設置一遍值。如果確認畫面會被完全重繪覆蓋的情況下,不進行Clear操作會有減少這部分的性能開銷。而在移動平臺的GPU上并不是這樣,由于移動平臺為了減少內存與GPU間的帶寬消耗,frameBuffer是分塊存在on-chip memory中的。在整個渲染過程結束后將所有的tiled framebuffer 拷貝到主存中的framebuffer中。如果不進行clear,而在上一幀的buffer上重新繪制,需要在每個tiled frameBuffer開始繪制之前從主存再同步到on-chip的內存中。這一部分會有很大的overhead。

不要在每一幀開始繪制之后更新Buffer

由于GPU繪制采用的是雙緩沖繪制,當前幀提交的draw call會在下一幀進行繪制,而當前幀繪制上一幀提交的draw call。如果在幀中間更新buffer,而這個buffer在上一幀提交的drawcall中被使用,有可能當前幀更新的buffer正在GPU中渲染,而此時驅動層將復制一份buffer來進行數據的更新或者等待當前繪制命令完成再進行更新。這兩種情況一種會造成驅動層的overhead,而另一種會造成CPU的阻塞。

使用壓縮貼圖和Mipmapping

使用壓縮的貼圖格式會減少傳輸的帶寬,從而提升性能。同時由于在TileBased架構下,部分按塊壓縮的貼圖壓縮格式可以和FrameBuffer的Tile進行匹配,其結構對于貼圖緩存來說更加友好。

盡可能使用Mipmapping,首先使用mipmap,對于較遠以及較小的貼圖物體會有更好的抗鋸齒效果,減少畫面的閃爍以提升畫面效果。其次使用在采樣貼圖時,對于不同大小的物體選用其大小相對應層級的貼圖到對應的TextureCache能有效減少貼圖緩存missing的幾率以提升貼圖采樣的效率。同時由于有不同層級的貼圖,會大量減少每次將貼圖從內存復制到GPU的帶寬消耗,同時使用Mipmap只會增加33%的內存消耗。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • gpu
    gpu
    +關注

    關注

    27

    文章

    4470

    瀏覽量

    127060
  • powervr
    +關注

    關注

    0

    文章

    98

    瀏覽量

    30956
收藏 人收藏

    評論

    相關推薦

    進一步解讀英偉達 Blackwell 架構、NVlink及GB200 超級芯片

    。 **英偉達Blackwell架構在數據中心方面的應用有哪些?** 1. **AI **大模型訓練 Blackwell 架構GPU 針對當前火爆的 AI 大模型進行了優化,能夠
    發表于 05-13 17:16

    FPGA在深度學習應用中或將取代GPU

    系統等其他行業也面臨著類似的挑戰。 FPGA 和深度學習 FPGA 是可定制的硬件設備,可對其組件進行調節,因此可以針對特定類型的架構 (如 卷積神經網絡) 進行優化。其可定制性特征降低了對電力的需求
    發表于 03-21 15:19

    深入解讀AMD最新GPU架構

    GCN 取代了 Terascale,并強調 GPGPU 和圖形應用程序的一致性能。然后,AMD 將其 GPU 架構開發分為單獨的 CDNA 和 RDNA 線路,分別專門用于計算和圖形。
    發表于 01-08 10:12 ?575次閱讀
    深入解讀AMD最新<b class='flag-5'>GPU</b><b class='flag-5'>架構</b>

    揭秘GPU: 高端GPU架構設計的挑戰

    在計算領域,GPU(圖形處理單元)一直是性能飛躍的代表。眾所周知,高端GPU的設計充滿了挑戰。GPU架構創新,為軟件承接大模型訓練和推理場
    的頭像 發表于 12-21 08:28 ?490次閱讀
    揭秘<b class='flag-5'>GPU</b>: 高端<b class='flag-5'>GPU</b><b class='flag-5'>架構</b>設計的挑戰

    NVIDIA GPU的核心架構架構演進

    在探討 NVIDIA GPU 架構之前,我們先來了解一些相關的基本知識。GPU 的概念,是由 NVIDIA 公司在 1999 年發布 Geforce256 圖形處理芯片時首先提出,從此 NVIDIA
    發表于 11-21 09:40 ?516次閱讀
    NVIDIA <b class='flag-5'>GPU</b>的核心<b class='flag-5'>架構</b>及<b class='flag-5'>架構</b>演進

    Mali GPU性能分析工具

    本文檔描述了馬里GPU性能分析工具2.2版中的已知勘誤表。 這是一個貫穿整個產品生命周期的工作文檔,因此,隨著新信息的發現,其內容可能會被修改。 本文中包含的信息是ARM有限公司的財產,對錯誤或遺漏
    發表于 09-05 07:08

    針對1.0版移動設備上的圖形內容的優化建議

    CPU、頂點或片段的限制。 一旦您了解了這一點,就可以使用下面的建議來提高應用程序的性能: ·避免重復工作·降低精度·以正確的順序僅發布可見的繪圖·優化著色器程序·使用紋理壓縮、網格細節級別和mipmap技術。 有關基于馬里的設
    發表于 08-24 06:57

    一文帶你詳解芯片--SL8541e-系統性能優化

    背景 伙伴反饋,設備操作卡頓,OH基礎系統版本應用操作慢,應用人機交互體驗差。本文為你總結芯片解決方案–SL8541e-系統性能優化。主要內容包括: *1. 確定優化思路 幀率優化
    發表于 08-22 09:12

    UWA推出全新GPU性能測評工具,支持多款PowerVR芯片優化

    移動設備GPU性能優化對玩家游戲體驗至關重要。侑虎科技UWA一直專注于游戲和VR應用的性能優化,移動設備
    的頭像 發表于 08-14 10:13 ?813次閱讀
    UWA推出全新<b class='flag-5'>GPU</b><b class='flag-5'>性能</b>測評工具,支持多款<b class='flag-5'>PowerVR</b>芯片<b class='flag-5'>優化</b>

    ARM GPU最佳實踐開發人員指南

    我們的指南提供了在為Arm Immortalis和Mali GPU開發時如何優化應用程序的建議。這些建議是為那些希望開始使用Arm GPU
    發表于 08-10 06:58

    Bifrost GPU可編程核心的頂級布局、優勢和著色器核心功能

    優化應用程序的二維和三維性能時,您需要對硬件的工作原理有一個高層次的了解。例如,在使用GPU性能計數器進行優化時,了解馬里
    發表于 08-02 17:52

    Mali-Valhall系列GPU可編程內核

    2018年起。當使用GPU優化應用程序時,至少有一個高級心理模型是有用的了解底層硬件的工作方式。了解預期性能也很有用以及它可能執行的不同類型操作的數據速率。在優化使用Mali時,了解塊
    發表于 08-02 16:38

    基于磁貼的GPU架構優缺點

    本指南介紹了基于磁貼的GPU架構的優缺點。它還將ARM馬里基于瓷磚的GPU架構設計與臺式PC或控制臺中常見的更傳統的即時模式GPU進行了比較
    發表于 08-02 12:54

    為什么我們是RISC-V的首選 GPU

    熟悉圖形處理器。在過去的時間里,我們不斷創新,以保持在圖形市場的技術領先地位。PowerVR獨特的基于?分塊的延遲渲染(TBDR)架構?在90年代初就成為了具有革
    的頭像 發表于 06-13 10:47 ?408次閱讀
    為什么我們是RISC-V的首選 <b class='flag-5'>GPU</b>

    為什么我們是RISC-V的首選 GPU

    談起 GPU,很容易想到 Imagination。毫無疑問,鑒于Imagination 在圖形處理領域的積累,也成為 RISC-V 的首選 GPU。 憑借 30 多年的 PowerVR GPU
    的頭像 發表于 06-08 16:55 ?519次閱讀
    為什么我們是RISC-V的首選 <b class='flag-5'>GPU</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>