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



