日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

底层进阶 | 移动端 GPU 架构 -- TBR 模型

發布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 底层进阶 | 移动端 GPU 架构 -- TBR 模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在知乎上關注了好多圖形學大佬,感覺現在知乎的技術氛圍要比掘金推薦舊文好多了,經常會推送感興趣的領域內容,而且還可以和作者私信交流。

這段時間看到有大佬分享 GPU 架構相關的內容,做圖像渲染的還是要懂 GPU 才行的,畢竟是和它打交道嘛。

這位大佬就是知乎作者:無緣補天的梧桐,主頁連接如下:

https://www.zhihu.com/people/wu-tong-16-43

大佬分享了一些桌面端 GPU 架構的內容,寫了很多干貨文章:

  • 【GPU】Tesla架構(一):初識GPU架構 https://zhuanlan.zhihu.com/p/403354366

  • 【GPU】Tesla架構(二):血汗工廠 https://zhuanlan.zhihu.com/p/416334635

  • 【GPU】Tesla架構(三):通用計算及其“物流網” https://zhuanlan.zhihu.com/p/425082340

最重要的作者還分享了一篇移動端 GPU 架構的文章,閱讀之后受益良多,也分享給大家:

原文連接如下:https://zhuanlan.zhihu.com/p/433254219

以下是作者原文內容:

習慣了桌面端GPU的那一套玩法,初次接觸移動端GPU會有許多新鮮感。

桌面端GPU,數據傾瀉而下一路暢通無阻:頂點數據被分發到對應SM里的warp中,經過一通頂點運算后,就直接被甩到光柵化硬件里,然后碎成一堆片元,再次被裹挾到新warp中算出顏色值寫回幀緩沖中。

整個過程的原則就是能跑多快跑多快,單看每個數據(頂點或片元),能找到其他31個同行跟我一起跑路就行,其他數據愛跑到哪跑到哪,跟我沒有半毛錢關系。

桌面端GPU這套硬件流水線,跟邏輯管線較為接近。但這對硬件有一個最基礎的要求:國道省道小村小路整套物流系統都得十分健全,以保證海量的數據能在這里面如魚得水,玩命狂奔。而這,正是移動端GPU的死穴。

移動端GPU由于電源功率、芯片面積、布線以及封裝等天生殘缺,高帶寬意味著高耗電,別說GPU,整個手機行業最大的短板就在電池上。

我們被迫向落后科技妥協的下限頂多是一天充一次電,打一局游戲就得充一次電然后還得為忍受發熱練就鐵砂掌的魔幻局面估計沒人能夠忍受。因此注重對功耗控制的移動端,那必然是要從GPU架構設計到圖形算法上,都想方設法地壓榨帶寬消耗。畢竟幀數太少還可以靠人眼補幀,手機沒電自動關機了那還玩個錘子。(??へ??╬)

這決定了移動端GPU,無法同桌面端GPU一樣,采用圍繞大量專用帶寬而設計的即時模式渲染器(Immediate Mode Renderers, IMR)架構。當前主流的移動端GPU架構,如PowerVR、高通的Adreno和ARM的Mali,全是基于塊的渲染(Tile-Based Rendering, TBR)架構。

如果看過我之前的GPU系列文章,可能大家對桌面端GPU里,總公司、分公司、每個工作室、物流倉儲等緊密聯系的各個模塊會有些印象。

而移動端GPU的特點就是,負責運算的shader engine和外界能不交流就不交流,迫不得已要交流了,就打包成塊快速交接,活像一個自閉少年。

類似英偉達的SM,擁有專有的高速緩存,每家名字都不一樣,我之后就統一用mali的,省得混亂。

與八縱八橫的發達鐵路網不同,移動端GPU就像松散的封建老歐洲,因為山高水遠,shader engine們就像一個個獨立王國,盡可能包辦一切。現在就讓我們走進這個獨立王國,來領略一下未曾見過的異域風情吧。

打包成塊:第一次延遲

在桌面端,每個三角形都是自由自在的小精靈,大家按照提交順序進入流水線。而移動端,我們遇到的第一件新鮮事就是——分塊(Binning,PowerVR稱為Tiling)。

主要流程如下:

  • 每個三角形在運行完頂點著色器后,會將變換后的頂點存儲在片內,而不是直接光柵化

  • 將這些變換后的頂點進行圖元組裝、剔除、裁剪后,由Tilling引擎(該過程由專用的硬件單元負責,以確保足夠高效)決定每個圖元屬于哪個tile,將圖元地址存放到對應的per-tile list中(關于每一塊包含哪些圖元的信息,PowerVR稱為Primitive List,Adreno稱為Visiblity Stream)

  • per-tile lists和變換后的圖元(著色器狀態、屬性等)被存放到內存中的Parameter Buffer

看到這兒,我們可能會迷惑?啥玩意兒?不是說帶寬很緊張要勒緊褲腰帶過苦日子嗎?怎么還在主存里搞了這么一個buffer,在頂點著色器和光柵化之間橫生枝節。頂點著色器運算完直接光柵化不香嗎,非得傳回主存然后再讓shader engine讀一遍,這不是自討苦吃嗎?

因為這是TBR為了之后巨大的帶寬收益,不得不提前付出的些許帶寬代價。

正因為這些代價,三角形們得以被打包切成了塊,意味著其對應要繪制到的幀緩沖(包括深度緩沖)都可以切成塊。

而這么一個小塊交給一個單獨的shader engine來全權負責就成為了可能。shader engine就可以將這么一小塊幀緩沖存在自己內部的高速緩存中。

與IMR相比,大量深度緩沖和顏色緩沖的來回讀寫,被隔離在了片內的高速緩存中,每一塊的幀緩沖在最終渲染完成后才會被寫回主存。

這就是TBR所希冀的帶寬節省帶來的巨大收益!

絕不多算任何一個不必要的片元:第二次延遲

除了延遲光柵化以外,主流移動端GPU還會進一步延遲片元著色,以在像素級別上,實現overdraw的消除,即不將任何計算資源浪費在對最終渲染畫面無關的片元上。

每一塊的圖元光柵化成片元后,會等待所有片元全部經過深度測試后才進行片元著色,以確保只有離視線最近的片元才會被著色。

由于專利原因和實現上的細微區別,該技術在不同架構中有不同的名稱,PowerVR為HSR (Hidden Surface Removal),Adreno為Early Z Rejection,Mali為FPK (Forward Pixel Killing)。

與桌面端GPU常見的early-z硬件優化相比,這些技術不需要排序并從前往后繪制物體。且由于物體可能出現相交的復雜情況,early-z即使經過排序也只能實現粗糙的overdraw消除。

不過,有許多情況會影響硬件延遲片元著色的順利進行:

  • 半透明:會打斷HSR,會強行渲染出當前所有最近片元,以便于混合。混合完后,如果緊接著又是不透明物體,則繼續進行HSR。所以優化方案為:把半透明物體放最后畫。

  • Alpha Test/Discard:會先將它當作不透明物體經過HSR,如果未通過深度測試無事發生;如果通過深度測試那就運行片元著色器,若最終被discard,那么就會回過頭更新HSR。

各種絕境求生的騷操作

除了最主要的TBR架構外,移動端GPU為了盡可能節省帶寬消耗,還有諸多喪心病狂的技術優化手段。比如:

  • MSAA所需的巨大存儲壓力現在也可以搭便車,只存在于片內高速緩存中,幀緩沖在片內混合完樣本后再傳出

  • 在片元著色時,下一幀的頂點處理和Binning可以并行進行,當然這會帶來進一步的延遲

  • 將頂點著色器拆分成位置運算和其他屬性運算,計算完位置后就進行Binning以進一步節省帶寬

  • 前后幀未變化的塊不寫回內存,甚至通過分析用戶操作以及各種輸入是否與前一幀都相同來直接避免某一塊的運算,這對于大量畫面都是靜態的休閑手游而言,是十分實用的技術

  • 還有許多硬件上的設計細節也全是為節省帶寬和功耗而服務的,比如在高速緩存上仍然儲存紋理的壓縮格式、暫時沒有任務的元器件直接休眠等……

除了功耗這一移動端GPU優化的核心指標以外,對于渲染畫面的提升各大廠商也有自己的嘗試。

Imagination Technologies早在2016年就展示了實時光線追蹤測試板PowerVR GR6500,并計劃在不久的將來推出基于PowerVR架構的GPU,支持高級硬件光線追蹤加速器;

而在最近,三星與AMD合作,計劃在2022年推出基于AMD的RDNA 2架構的Exynos 2200 GPU,將支持硬件級光線追蹤。可以預見,消費級移動端光追硬件,將很快到來。

得益于移動端芯片架構的高效設計,蘋果在2020年末推出的M1 Soc以及在2021年推出的M1 Pro和M1 Max,標志著桌面電腦開始轉向ARM架構。

M1的GPU性能與之前的移動端GPU相比,有著巨大的提升,也證明了移動端GPU架構不僅在功耗控制上具有優勢,在性能上也具有巨大潛力。

移動端和桌面端的GPU架構互相借鑒與融合,將成為未來GPU架構設計的主要趨勢。


技術交流,歡迎加我微信:ezglumes ,拉你入技術交流群。

私信領取相關資料

推薦閱讀:

音視頻開發工作經驗分享 || 視頻版

OpenGL ES 學習資源分享

開通專輯 | 細數那些年寫過的技術文章專輯

NDK 學習進階免費視頻來了

你想要的音視頻開發資料庫來了

推薦幾個堪稱教科書級別的 Android 音視頻入門項目

覺得不錯,點個在看唄~

總結

以上是生活随笔為你收集整理的底层进阶 | 移动端 GPU 架构 -- TBR 模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。