圖形與計算那些事 AMD次世代架構(gòu)解析
AMD的GPU架構(gòu)介紹了這么多,對于其優(yōu)缺點也心知肚明了,之前筆者反復(fù)提到了“效率”二字,其參照物當(dāng)然就是NVIDIA的GPU,現(xiàn)在我們就來看看NVIDIA的GPU架構(gòu)有什么特點,效率為什么會比較高?為什么更適合并行計算?
SIMD效率不高的根本原因
無論AMD怎么調(diào)整架構(gòu),5D還是4D的結(jié)構(gòu)都還是SIMD,也就是這4-5個ALU要共用一個指令發(fā)射端口,這樣就對GPU指令派發(fā)器提出了很高的要求:如果沒有把4-5個指令打包好發(fā)送到過來,那么運算單元就不會全速運行;如果發(fā)送過來的4-5個指令當(dāng)中包含條件指令,但運行效率就會降至連50%都不到,造成災(zāi)難性的資源浪費。
解決方法也不是沒有,但都治標(biāo)不治本,需要對游戲/程序本身進行優(yōu)化,盡量避免使用標(biāo)量指令、條件指令和混合指令,驅(qū)動為程序?qū)iT做優(yōu)化,難度可想而知。
而治本的方法就是拋棄SIMD架構(gòu),從源頭上解決指令組合預(yù)分配的問題。
G80革命性的MIMD架構(gòu)
NVIDIA的科學(xué)家對圖形指令結(jié)構(gòu)進行了深入研究,它們發(fā)現(xiàn)標(biāo)量數(shù)據(jù)流所占比例正在逐年提升,如果渲染單元還是堅持SIMD設(shè)計會讓效率下降。為此NVIDIA在G80中做出大膽變革:流處理器不再針對矢量設(shè)計,而是統(tǒng)統(tǒng)改成了標(biāo)量ALU單元,這種架構(gòu)叫做MIMD(Multiple Instruction Multiple Data,多指令多數(shù)據(jù)流)
G80核心架構(gòu),每個流處理器就是一個標(biāo)量ALU
如此一來,對于依然占據(jù)主流的4D矢量操作來說,G80需要讓1個流處理器在4個周期內(nèi)才能完成,或者是調(diào)動4個流處理器在1個周期內(nèi)完成,那么G80的執(zhí)行效率豈不是很低?沒錯,所以NVIDIA大幅提升了流處理器工作頻率(兩倍于核心頻率),擴充了流處理器的規(guī)模(128個),這樣G80的128個標(biāo)量流處理器的運算能力就基本相當(dāng)于傳統(tǒng)的64個(128×2?)4D矢量ALU。大家應(yīng)該知道R600擁有64個5D矢量ALU,最終的性能G80要遠勝R600。
當(dāng)然這只是在處理4D指令時的情形,隨著圖形畫面越來越復(fù)雜,1D、2D、3D指令所占比例正在逐年增多,而G80在遇到這種指令時可說是如魚得水,與4D一樣不會有任何效能損失,指令轉(zhuǎn)換效率高并且對指令的適應(yīng)性非常好,這樣G80就將GPU Shader執(zhí)行效率提升到了新的境界!
MIMD架構(gòu)的劣勢
G80的架構(gòu)聽起來很完美,但也存在不可忽視的缺點:根據(jù)前面的分析可以得知,4個1D標(biāo)量ALU和1個4D矢量ALU的運算能力是相當(dāng)?shù)?,但是前者需?個指令發(fā)射端和4個控制單元,而后者只需要1個,如此一來MIMD架構(gòu)所占用的晶體管數(shù)將遠大于SIMD架構(gòu)!
所以AMD的SIMD架構(gòu)可以用較少的晶體管造出龐大數(shù)量的流處理器、擁有恐怖的理論浮點運算能力;而NVIDIA的MIMD架構(gòu)必須使用更多的晶體管制造出看似比較少的流處理器,理論浮點運算能力相差很遠。雙方走的都是極端路線,AMD以數(shù)量彌補效率的不足,而NVIDIA以效率彌補數(shù)量的劣勢。
關(guān)注我們
