0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PowerVR GPU架構(gòu)的性能優(yōu)化建議

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

最近在看移動(dòng)GPU優(yōu)化的時(shí)候?qū)?a target="_blank">TiledBased GPU有一些疑惑,特別是常說(shuō)的Alpha-Blend比Alpha-Test在移動(dòng)GPU上快的奇特性質(zhì),于是找了powerVR相關(guān)的文檔來(lái)閱讀,也做個(gè)記錄。

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

主流圖形架構(gòu)

Immediate Mode Renderer(IMR)

Tile Based Renderer(TBR)

Tile Based Deferred Renderer(TBDR)

Unified and Non-unified shader architecture

PowerVR GPU架構(gòu)的性能優(yōu)化建議

非統(tǒng)一的著色器架構(gòu)上Vertex Shader要等待Fragment Shader執(zhí)行完后才能push處理完的頂點(diǎn)數(shù)據(jù)丟給FS單元。

而統(tǒng)一的著色器架構(gòu),處理會(huì)減少等待時(shí)間,提升性能。PowerVR全部采用的都是Unified Shader Architecture.

Overdraw

由于geometry提交順序的不同,會(huì)有一些fragment會(huì)被重復(fù)繪制。

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

IMR

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

同時(shí)每一次渲染完的color與depth數(shù)據(jù)讀取寫回到colorbuffer與depth/stencil buffer是都會(huì)產(chǎn)生很大的帶寬消耗。普通的Read-Modify-Write都是在system memory與GPU之間傳輸數(shù)據(jù),如ZWrite/Write,Blend這些。所以IMR的架構(gòu)會(huì)有一個(gè)很大顯存cache來(lái)優(yōu)化這部分大量的內(nèi)存帶寬消耗。

TBR

整個(gè)光柵化和fragment處理會(huì)被分為一個(gè)個(gè)Tile進(jìn)行處理,通常為16×16大小的Tile。

TBR的結(jié)構(gòu)添加了on-chip buffers用來(lái)儲(chǔ)存tiling后的Depth Buffer和Color buffer。原先IMR架構(gòu)中對(duì)主存中color/depth buffer進(jìn)行Read-Modify-Write的操作變成直接在GPU中的高速內(nèi)存操作,減少了最影響性能的系統(tǒng)內(nèi)存?zhèn)鬏數(shù)拈_銷。

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

TBDR

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

數(shù)據(jù)從內(nèi)存到GPU之間的傳輸是最大的性能消耗,powerVR架構(gòu)的TBDR,on-chip buffer都為了該目標(biāo)而優(yōu)化。

TBDR 架構(gòu)關(guān)注于在渲染管線中盡可能移除冗余的操作與計(jì)算,最小化內(nèi)存帶寬和能耗同時(shí)提升管線處理的吞吐量。

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

TBDR會(huì)盡可能地延遲pixel shading的時(shí)間,直到所有光柵化后的fragment完成了DepthTest和HSR。對(duì)于一個(gè)場(chǎng)景中全是不透明幾何圖元的渲染畫面來(lái)說(shuō)。每一個(gè)光柵化完的fragment patch會(huì)經(jīng)過(guò)HSR和Depth test,在所有triangle完成了raster之后,最后留下來(lái)的fragment會(huì)留下來(lái)執(zhí)行pixel shading。也就是在這種情況下tile中的每一個(gè)像素只執(zhí)行一次pixel shader。

如果渲染流程中有alpha test/blend/pixel depth write,就會(huì)阻斷deferred shading,因?yàn)檫@個(gè)時(shí)候需要執(zhí)行shading,才能正確進(jìn)行后續(xù)fragment的計(jì)算。

Alpha Test需要執(zhí)行shading 算出當(dāng)前fragment的alpha,判斷該fragment是否被丟棄。

Alpha Blend 需要讀取framebuffer中當(dāng)前像素之前的顏色。

Pixel Depth write會(huì)影響到后續(xù)fragment的HSR與Depth test。

這三種情況下Pixel Depth Write,因?yàn)闀?huì)影響到后續(xù)fragment HSR/Depth,所以這個(gè)時(shí)候一定要執(zhí)行該像素的shading,打亂了原先deferred的流程。具體要看GPU實(shí)現(xiàn)時(shí)時(shí)把整個(gè)HSR步驟積累的fragment都shading掉還是只把當(dāng)前fragment shading掉。

而對(duì)于AlphaBlend來(lái)說(shuō),它并不一定要打斷deferred shading。

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

但這樣就會(huì)增加pixel shading的次數(shù)。具體的實(shí)現(xiàn)還是要參照GPU的實(shí)現(xiàn)方式,由于使用TBR,Blend的開銷相對(duì)比IMR還是降低了很多。

Alpha-Test的情況是和Pixel Depth Write類似,由于Alpha Test失敗fragment會(huì)被丟棄,如果其開啟了DepthWrite,那么就一定要執(zhí)行shading。因?yàn)閍lpha-test會(huì)影響后續(xù)fragment的HSR/Z-Test的流程。如果沒有開啟depth Write,也可以和Blend一樣保留后續(xù)所有fragment的方式來(lái)延遲shading。但是這個(gè)時(shí)候后續(xù)該位置的fragment patch都是不能被移出shading列表的,延遲shading也沒有意義了。

關(guān)于PowerVR 架構(gòu)

Vector處理單元

高效計(jì)算單元,同時(shí)計(jì)算3到4個(gè)元素。如果一個(gè)計(jì)算的值小于4個(gè),那么其他的計(jì)算會(huì)被浪費(fèi)。只對(duì)一個(gè)元素進(jìn)行計(jì)算時(shí),效率會(huì)降低到25%,造成計(jì)算和電能的浪費(fèi),可以通過(guò)合并vector來(lái)優(yōu)化。

Scalar處理單元

標(biāo)量計(jì)算單元更加靈活,不需要填充其他的位寬數(shù)據(jù)。每一個(gè)硬件tick比起非向量化優(yōu)化的代碼能處理更多有效的數(shù)據(jù)值。

Verte Processing (Tiler)

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

計(jì)算完后,per-tile隊(duì)列會(huì)更新。變換后的幾何體和tile list會(huì)被儲(chǔ)存在Parameter Buffer(PB)中。PB被儲(chǔ)存在系統(tǒng)內(nèi)存中。

Per-Tile Rasterization (Render)

Image Sythesis Processor(ISP)獲取當(dāng)前tile的primitive數(shù)據(jù),進(jìn)行HSR,同時(shí)進(jìn)行Z-Test和Stencil Test。ISP只處理ScreenSpace Position,和vertex data。

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

PowerVR Shader Engine

massive multi-threaded and multi-tasking approah.

HSR Efficiency

Early-Z testing 需要按從前往后順序提交opaque對(duì)象的draw call,需要進(jìn)行排序會(huì)有額外的overhead。當(dāng)物體有intersection時(shí),Eearly-Z testing并不能移除所有的overdraw,同時(shí)對(duì)draw call進(jìn)行排序可能會(huì)造成pipeline 狀態(tài)改變產(chǎn)生的overhead。

PowerVR 的HSR盡可能減少了fragment shading的數(shù)量。

性能優(yōu)化建議

對(duì)drawcall進(jìn)行排序

對(duì)于TBDR架構(gòu)來(lái)說(shuō),所有的drawcall 按照 opaque - alpha-tested - blended進(jìn)行排序會(huì)最大程度利用HSR減少overdraw。對(duì)于有blend的pixel來(lái)說(shuō),后續(xù)所有相同位置的pixel都需要進(jìn)行pixel shading,而alpha-test在完成后的像素還是可以繼續(xù)進(jìn)行HSR的優(yōu)化。所以比先blend提交alpha-test可以盡可能減少overdraw。

始終進(jìn)行Clear操作

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

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

由于GPU繪制采用的是雙緩沖繪制,當(dāng)前幀提交的draw call會(huì)在下一幀進(jìn)行繪制,而當(dāng)前幀繪制上一幀提交的draw call。如果在幀中間更新buffer,而這個(gè)buffer在上一幀提交的drawcall中被使用,有可能當(dāng)前幀更新的buffer正在GPU中渲染,而此時(shí)驅(qū)動(dòng)層將復(fù)制一份buffer來(lái)進(jìn)行數(shù)據(jù)的更新或者等待當(dāng)前繪制命令完成再進(jìn)行更新。這兩種情況一種會(huì)造成驅(qū)動(dòng)層的overhead,而另一種會(huì)造成CPU的阻塞。

使用壓縮貼圖和Mipmapping

使用壓縮的貼圖格式會(huì)減少傳輸?shù)膸?,從而提升性能。同時(shí)由于在TileBased架構(gòu)下,部分按塊壓縮的貼圖壓縮格式可以和FrameBuffer的Tile進(jìn)行匹配,其結(jié)構(gòu)對(duì)于貼圖緩存來(lái)說(shuō)更加友好。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4673

    瀏覽量

    128592
  • powervr
    +關(guān)注

    關(guān)注

    0

    文章

    98

    瀏覽量

    31045
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何構(gòu)建及優(yōu)化GPU云網(wǎng)絡(luò)

    并從計(jì)算節(jié)點(diǎn)成本優(yōu)化、集群網(wǎng)絡(luò)與拓?fù)涞倪x擇等方面論述如何構(gòu)建及優(yōu)化GPU云網(wǎng)絡(luò)。
    的頭像 發(fā)表于 11-06 16:03 ?145次閱讀
    如何構(gòu)建及<b class='flag-5'>優(yōu)化</b><b class='flag-5'>GPU</b>云網(wǎng)絡(luò)

    GPU服務(wù)器AI網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)

    眾所周知,在大型模型訓(xùn)練中,通常采用每臺(tái)服務(wù)器配備多個(gè)GPU的集群架構(gòu)。在上一篇文章《高性能GPU服務(wù)器AI網(wǎng)絡(luò)架構(gòu)(上篇)》中,我們對(duì)
    的頭像 發(fā)表于 11-05 16:20 ?124次閱讀
    <b class='flag-5'>GPU</b>服務(wù)器AI網(wǎng)絡(luò)<b class='flag-5'>架構(gòu)</b>設(shè)計(jì)

    【「算力芯片 | 高性能 CPU/GPU/NPU 微架構(gòu)分析」閱讀體驗(yàn)】--了解算力芯片GPU

    本篇閱讀學(xué)習(xí)第七、八章,了解GPU架構(gòu)演進(jìn)及CPGPU存儲(chǔ)體系與線程管理 █從圖形到計(jì)算的GPU架構(gòu)演進(jìn) GPU圖像計(jì)算發(fā)展 ●從三角形開始
    發(fā)表于 11-03 12:55

    如何優(yōu)化emc存儲(chǔ)性能

    性能。 1. 理解存儲(chǔ)架構(gòu) 在進(jìn)行任何優(yōu)化之前,了解你的EMC存儲(chǔ)系統(tǒng)的架構(gòu)是至關(guān)重要的。這包括識(shí)別存儲(chǔ)陣列的型號(hào)、配置、連接的主機(jī)以及存儲(chǔ)網(wǎng)絡(luò)的布局。了解這些基本信息可以幫助你確定可
    的頭像 發(fā)表于 11-01 15:57 ?149次閱讀

    如何優(yōu)化SOC芯片性能

    優(yōu)化SOC(System on Chip,系統(tǒng)級(jí)芯片)芯片性能是一個(gè)復(fù)雜而多維的任務(wù),涉及多個(gè)方面的優(yōu)化策略。以下是一些關(guān)鍵的優(yōu)化措施: 一、架構(gòu)
    的頭像 發(fā)表于 10-31 15:50 ?166次閱讀

    如何提高GPU性能

    在當(dāng)今這個(gè)視覺至上的時(shí)代,GPU(圖形處理單元)的性能對(duì)于游戲玩家、圖形設(shè)計(jì)師、視頻編輯者以及任何需要進(jìn)行高強(qiáng)度圖形處理的用戶來(lái)說(shuō)至關(guān)重要。GPU不僅是游戲和多媒體應(yīng)用的心臟,它還在科學(xué)計(jì)算、深度
    的頭像 發(fā)表于 10-27 11:21 ?159次閱讀

    智能駕駛用戶體驗(yàn)優(yōu)化建議

    針對(duì)智能駕駛用戶體驗(yàn)的優(yōu)化,可以從以下幾個(gè)方面提出具體建議: 一、提升系統(tǒng)性能與穩(wěn)定性 優(yōu)化路線識(shí)別算法 : 針對(duì)智能駕駛輔助系統(tǒng)(如NCA)在高架橋上行駛時(shí)出現(xiàn)的無(wú)端減速現(xiàn)象,應(yīng)
    的頭像 發(fā)表于 10-23 16:10 ?505次閱讀

    【「算力芯片 | 高性能 CPU/GPU/NPU 微架構(gòu)分析」閱讀體驗(yàn)】--全書概覽

    、GPU、NPU,給我們剖析了算力芯片的微架構(gòu)。書中有對(duì)芯片方案商處理器的講解,理論聯(lián)系實(shí)際,使讀者能更好理解算力芯片。 全書共11章,由淺入深,較系統(tǒng)全面進(jìn)行講解。下面目錄對(duì)全書內(nèi)容有一個(gè)整體了解
    發(fā)表于 10-15 22:08

    名單公布!【書籍評(píng)測(cè)活動(dòng)NO.43】 算力芯片 | 高性能 CPU/GPU/NPU 微架構(gòu)分析

    ;社區(qū)活動(dòng)專版標(biāo)題名稱必須包含【「算力芯片 | 高性能 CPU/GPU/NPU 微架構(gòu)分析」閱讀體驗(yàn)】+自擬標(biāo)題 注意事項(xiàng) 1、活動(dòng)期間如有作弊、灌水等違反電子發(fā)燒友論壇規(guī)則的行為一經(jīng)發(fā)現(xiàn)將立即取消
    發(fā)表于 09-02 10:09

    GPU云服務(wù)器架構(gòu)解析及應(yīng)用優(yōu)勢(shì)

    GPU云服務(wù)器作為一種高性能計(jì)算資源,近年來(lái)在人工智能、大數(shù)據(jù)分析、圖形渲染等領(lǐng)域得到了廣泛應(yīng)用。它結(jié)合了云計(jì)算的靈活性與GPU的強(qiáng)大計(jì)算能力,為企業(yè)和個(gè)人用戶提供了一種高效、便捷的計(jì)算解決方案。下面我們將從
    的頭像 發(fā)表于 08-14 09:43 ?299次閱讀

    進(jìn)一步解讀英偉達(dá) Blackwell 架構(gòu)、NVlink及GB200 超級(jí)芯片

    。 **英偉達(dá)Blackwell架構(gòu)在數(shù)據(jù)中心方面的應(yīng)用有哪些?** 1. **AI **大模型訓(xùn)練 Blackwell 架構(gòu)GPU 針對(duì)當(dāng)前火爆的 AI 大模型進(jìn)行了優(yōu)化,能夠
    發(fā)表于 05-13 17:16

    STM32ADC中斷的使用注意事項(xiàng)和優(yōu)化建議

    使用中斷是提高系統(tǒng)性能和精確度的關(guān)鍵。本文將詳細(xì)介紹STM32ADC中斷的使用注意事項(xiàng)和優(yōu)化建議。 注意事項(xiàng): 1. 合理選擇中斷觸發(fā)方式:STM32ADC可以通過(guò)軟件觸發(fā)(軟件啟動(dòng)轉(zhuǎn)換模式)和硬件觸發(fā)(定時(shí)器、外部事件等)兩種
    的頭像 發(fā)表于 01-12 15:17 ?3030次閱讀

    深入解讀AMD最新GPU架構(gòu)

    GCN 取代了 Terascale,并強(qiáng)調(diào) GPGPU 和圖形應(yīng)用程序的一致性能。然后,AMD 將其 GPU 架構(gòu)開發(fā)分為單獨(dú)的 CDNA 和 RDNA 線路,分別專門用于計(jì)算和圖形。
    發(fā)表于 01-08 10:12 ?1119次閱讀
    深入解讀AMD最新<b class='flag-5'>GPU</b><b class='flag-5'>架構(gòu)</b>

    揭秘GPU: 高端GPU架構(gòu)設(shè)計(jì)的挑戰(zhàn)

    在計(jì)算領(lǐng)域,GPU(圖形處理單元)一直是性能飛躍的代表。眾所周知,高端GPU的設(shè)計(jì)充滿了挑戰(zhàn)。GPU架構(gòu)創(chuàng)新,為軟件承接大模型訓(xùn)練和推理場(chǎng)
    的頭像 發(fā)表于 12-21 08:28 ?829次閱讀
    揭秘<b class='flag-5'>GPU</b>: 高端<b class='flag-5'>GPU</b><b class='flag-5'>架構(gòu)</b>設(shè)計(jì)的挑戰(zhàn)

    NVIDIA GPU的核心架構(gòu)架構(gòu)演進(jìn)

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