<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 元件/連接器 > 設計應用 > 科普:深度解析GPU 知道不一定就懂

科普:深度解析GPU 知道不一定就懂

作者: 時(shí)間:2017-10-14 來(lái)源:網(wǎng)絡(luò ) 收藏

  除了 (中央處理器)以外,SoC(System On a Chip:片上系統)另一個(gè)重要的組成部分是圖像處理單元(Graphical Processing Unit),就是俗稱(chēng)的 。大家或許都知道玩 3D 游戲少不了它,但具體發(fā)揮什么作用也許說(shuō)不清楚,這回我們就來(lái)揭開(kāi) 的神秘面紗。

本文引用地址:http://dyxdggzs.com/article/201710/366421.htm

  

   專(zhuān)門(mén)用于快速完成一些特定類(lèi)型的數學(xué)運算,特別是對于浮點(diǎn)、矢量和矩陣的計算,能將 3D 模型的信息轉換為 2D 表示,同時(shí)添加不同的紋理和陰影效果,所以 GPU 在硬件里也是比較特殊的存在。

  3D 模型是由許許多多小三角形組成的,通過(guò) X、Y、Z 坐標定義每個(gè)三角形的頂點(diǎn)。實(shí)際處理中,小三角形的頂點(diǎn)會(huì )相互重合,如果一個(gè)復雜的模型由 500 個(gè)小三角形組成,最后需要定義的頂點(diǎn)數并沒(méi)有 1500 個(gè)那么多。而要將一個(gè)抽象的 3D 模型展現出來(lái),三種要素不可缺少:位移、旋轉(三軸)和縮放,所有這些操作統稱(chēng)為轉換(transformation)。為了不陷入復雜繁瑣的數學(xué)運算,處理轉換(transformation)最佳的方式就是運用 4x4 的矩陣。

  從 3D 建模到最終顯示在屏幕上,GPU 渲染場(chǎng)景使用的是流水線(xiàn)操作。早些時(shí)候流水線(xiàn)操作是固定不能作任何改動(dòng)的,整個(gè)操作由讀取三角形的頂點(diǎn)數據開(kāi)始,接著(zhù) GPU 處理完后進(jìn)入幀緩沖區(frame buffer),準備發(fā)送給顯示器。GPU 也能對場(chǎng)景進(jìn)行某些特定效果的處理,不過(guò)這些都是由工程師設計固定好的,能提供的選項很少。

  可編程著(zhù)色器(Programmable shaders)

  

  在 Android 仍在萌芽之時(shí),桌面級的 GPU 就開(kāi)始可以對流水線(xiàn)部分的操作進(jìn)行編程。隨著(zhù) OpenGL ES 2.0 標準的推出,移動(dòng)版的 GPU 也開(kāi)始支持可編程操作,這些可編程的部分被稱(chēng)作著(zhù)色器(shaders),最重要的兩個(gè)著(zhù)色器是頂點(diǎn)著(zhù)色器(vertex shader)和片段著(zhù)色器(fragment shader)。每個(gè)頂點(diǎn)都會(huì )調用一次頂點(diǎn)著(zhù)色器,所以在渲染一個(gè)三角形時(shí)頂點(diǎn)著(zhù)色器需要被調用三次;而片段著(zhù)色器,我們可以簡(jiǎn)單的將每個(gè)片段(fragment)想象成屏幕上的每一個(gè)像素點(diǎn),因此每生成一個(gè)像素片段著(zhù)色器就被會(huì )調用一次。

  

  兩個(gè)著(zhù)色器充當不同的角色,頂點(diǎn)著(zhù)色器主要負責將 3D 模型的數據轉化為現實(shí)世界中的位置以及紋理貼圖或者光源,再進(jìn)行轉換(transformation);片段著(zhù)色器則用于為每個(gè)像素設置相關(guān)的顏色。簡(jiǎn)單一點(diǎn)的說(shuō)明:頂點(diǎn)著(zhù)色器就是處理頂點(diǎn)相關(guān)的信息,片段著(zhù)色器就是處理畫(huà)面的顏色信息。

  仔細觀(guān)察你會(huì )注意到每個(gè)頂點(diǎn)的處理都是相互獨立的,同樣每個(gè)片段的處理也是如此,這意味著(zhù) GPU 能夠并行運行著(zhù)色器,事實(shí)上 GPU 也是這么干的,絕大多數的移動(dòng) GPU 都有多個(gè)著(zhù)色器核心(可編程執行著(zhù)色器功能的獨立單元稱(chēng)之為著(zhù)色器核心),至于 GPU 廠(chǎng)商宣稱(chēng)對于著(zhù)色器調用優(yōu)于別家則屬于市場(chǎng)營(yíng)銷(xiāo)的問(wèn)題了。

  

  以 的 Mali GPU 為例,其系列 GPU 名稱(chēng)后綴的“MPx”中的 x 代表有多少個(gè)著(zhù)色器核心,Mali T880 MP12 就代表有 12 個(gè)著(zhù)色器核心。每一個(gè)核心里面都有一條復雜的流水線(xiàn),代表著(zhù)每完成一個(gè)著(zhù)色器操作,新的操作指令就會(huì )立刻發(fā)出,同時(shí)核心里面不止一個(gè)算術(shù)單元,所以在相同的時(shí)間內能完成多個(gè)操作。 Mali GPU(包括 Mali T600、T700 和 T800 系列)能在每一條流水線(xiàn)每個(gè)時(shí)鐘周期發(fā)出一條指令,所以一個(gè)典型的著(zhù)色器核心能并行發(fā)出 4 條指令,Mali GPU 目前最高支持 16 個(gè)核心,也就是說(shuō)可以并行發(fā)出最多 64 條指令。

  所有的一切意味著(zhù) GPU 是并行處理大量數據的工作方式,與 非常不同,不是一般的順序操作。但這只是一個(gè)小問(wèn)題,嚴峻的事實(shí)在于可編程的著(zhù)色器核心代表著(zhù)每個(gè)核心的實(shí)際表現不再由 GPU 工程師設定好,而是取決于 app 開(kāi)發(fā)者。于是一個(gè)質(zhì)量較差的著(zhù)色器代碼能讓 GPU 的表現直線(xiàn)下降,幸運的是大多數的 3D 游戲開(kāi)發(fā)者都明白這個(gè)道理,會(huì )為著(zhù)色器運行做最佳的優(yōu)化。



關(guān)鍵詞: GPU CPU ARM

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>