GPU架構解析 NVIDIA AMD

2021-06-26 18:44:01 字數 2739 閱讀 2902

nvidia公司在2023年首次提出gpu概念,硬體t&l(transform and lightning)多邊形轉換與光源處理是gpu問世的標誌。除此之外,gpu採用的核心技術還包括:立方環境材質貼圖和頂點混合、紋理壓縮和凹凸對映貼圖、雙重紋理四畫素256位渲染引擎等。

gpu的發展經歷了固定渲染管線、可程式設計渲染管線、和統一渲染架構三個時期。

也稱為渲染流水線,傳統的一條渲染管線由畫素著色單元(psu)、紋理貼圖單元(tmu)、光柵化引擎(rop)三部分組成。從功能上來講,psu負責畫素處理,tmu負責紋理渲染,rop完成畫素的最終輸出。

著色器替代了固定渲染管線,通過對著色器的程式設計,著色器可以完成以前固定管線無法實現的特效。著色器又可分為頂點著色器(vertex shader)和畫素著色器(pixel shader)。通過對頂點著色器程式設計可以進行頂點變換、光照等;通過對畫素著色器進行程式設計,可以控制畫素顏色和紋理取樣等。gpu在渲染3d影象的時候,實際上就是對頂點和畫素的操作和計算,在程式中頂點資訊格式為(x,y,z,w),畫素資訊為(r,g,b,a)。著色器的計算的目的就是去改變每乙個畫素的頂點資訊和畫素資訊,通過大量的渲染工作構建出了一幅3d畫面和各種特效。

simd介紹:即單指令多資料結構,普通alu為標量形式,一次只能處理乙個scalar資料。gpu中的alu一般被設計為向量的形式,即每次可以處理乙個4d vector。剛好為乙個頂點資訊或乙個畫素資訊,大大提公升了gpu的運算效率。但一旦用simd結構處理標量資料,計算效率便下降為原來的1/4。為了解決上述資源浪費問題,現代gpu一般採用混合設計,例如r300採用了3d+1d的設計,並允許向量和標量並行操作(co-issue),nv40以後的gpu又支援2d+2d和3d+1d兩種模式。

其核心思想為「將頂點著色器和畫素著色器合併為乙個具有完整執行能力的統一渲染單元(us)」。微軟在directx 10中首次提出了統一渲染架構,在統一渲染架構中,指令可以直接面對alu而非過去的特定單元。nvidia推出了業界第一款統一渲染架構gpu——g80

從g80架構可以看出,該gpu包含1個仲裁資源的幾何處理單元,8組與gti相連的sm陣列,6組ta(紋理定址單元),6組rop(光柵化引擎)。整個架構以高速交叉匯流排相連。g80中將原有的4d著色器完全打散,由原來的向量流處理器變為標量運算單元,每個alu擁有自己的指令發射器,第一代產品擁有128個標量運算器(sp),這些處理單元可以執行1d、2d、3d、4d指令。g80屬於mimd(多指令多資料)架構。四個標量處理單元相當於以前的乙個4d vector處理單元,多出的指令發射器占用了大量的晶元面積,成為g80的軟肋。

tick-tock(工藝年——架構年)是英特爾提出的晶元發展模式,此發展模式也被gpu研發廠商採用。nvidia第二次架構革新為gt200架構,本次架構公升級是對g80架構的繼承和提高,主要改進為:每個sm最大執行緒數由原來的768提公升至1024,並且增加了sm的總數;每個sm的local memory容量從16kb提公升到32kb;增加了atomic單元和simt特性。

nvidia的第三次統一架構革新誕生了gf100架構。整個gpu由四**形處理簇(gpc)組成,每個gpc擁有自己的幾何處理引擎和光柵化流水線。gpc之間通過l2 cache通訊、kernel和thread協調以及資料共享。這些功能的引入實現了並行化分塊渲染操作,同時三角形吞吐量有了300%的提公升。與此同時,gr100還新增了多邊形引擎(pe)、光柵引擎(re)兩個模組。pe主要負責頂點拾取、細分曲面、視角轉換、屬性設定、流輸出等工作。re可以說是對之前光柵化硬體單元的組合,以流水線方式執行邊緣設定->光柵化->z軸壓縮的操作。

amd在2023年也推出了自己的第一款統一渲染架構gpu——r600。從上面的架構圖可以發現,r600由一套幾何處理單元,乙個執行緒仲裁單元utdp,流處理單元(spu)和紋理貼圖單元(tmu)與仲裁機構相連,以及與之相連的完整後端組成。個單元之間以環狀匯流排相連(ringbus)。與g80不同,r600仍然採用simd架構,其擁有4個simd陣列,每個陣列包括16個spu,每個spu包含5個alu——為5d超標量架構。

r600架構中乙個的spu包含1個全功能alu和4個非全功能alu,在乙個時鐘週期內可以進行5次乘加運算,全功能alu還可以進行sin()、cos()、log()、exp()等函式運算。

相比於nvidia的三次架構公升級,amd也有三次重大技術革新。包括對應gt200的rv770以及對應於gf100的rv870。rv770在r600的基礎上進行了大膽的改造。從架構圖上看r600為縱向4組simd陣列,rv770為橫向10組simd陣列,每組16個shader,每個shader 5個流處理器。rv770還放棄了沿用多年的環形匯流排,改為交叉匯流排。經歷了rv707大刀闊斧的公升級,amd的第三次公升級可以看做只是在rv770的基礎上進行了資源的翻倍,從結構圖也可以看出,rv870基本上是併排放置了兩個rv770,對其架構改進這裡不再贅述。

以上博文主要參考:顯示卡帝教你輕鬆讀懂gpu架構圖 輕鬆做達人

GPU架構變遷

一 採用渲染管線 一條完整的畫素管線意味著在乙個時鐘週期完成至少進行1個ps運算,並輸出一次紋理 渲染管線是由包括pixel shader unit 畫素著色單元 tmu 紋理貼圖單元 rop 光柵化引擎 三部分組成的。用公式表達可以簡單寫作 ps psu tmu rop。psu完成畫素處理,tmu...

kepler架構GPU新特性 HyperQ

對於kepler架構gpu的新特性 hyperq,往上的討論貼子還是比較少的,官方文件中也只是有乙個sample,給出了 但對於有些情況下,hyperq不能成功的原因沒有過多的涉及,我們今天就來談一談。hyperq允許多個cpu執行緒或程序同時向乙個gpu發射任務,提高了gpu的使用率。我們來看乙個...

Android CPU架構解析

armeabi armeabi v7a arm64 v8a x86x86 64 mips mips64 arm架構屬於risc指令集,指令集精簡 指令等長,雖然這樣的設計可以提高處理效率,但在遇到複雜的指令後,就需要更多的簡單指令來堆砌複雜任務 arm從來只是設計低功耗處理器。其宗旨是設計低功耗處理...