GPU的基本原理

鏈接地址:http://blog.chinaunix.net/uid-9620812-id-3061237.html

推薦博客:http://blog.chinaunix.net/uid/9620812.html

最近研究GPU架構,關於GPU的基本原理(頂點->紋理->像素->光柵  這個pipeline)可以參考我之前閱讀的一些文章,相信讀了他們,會對什麼是GPU,GPU的工作原理等之類的問題有了一定的感性認識,具體如下:

    1 GPU大百科全書系列  http://vga.zol.com.cn/251/2511984.html
    2 圖形與計算那些事 AMD次世代架構解析  http://www.pcpop.com/doc/0/748/748571.shtml
    3 DixrectX支配遊戲! 歷代GPU架構全解析  http://tech.163.com/digi/10/0430/08/65GM21CJ001618J7.html


讀過這三篇文章後,會熟知AMD與NVIDIA的不同架構,本質來說,在架構上兩家都是採用的“極端”的設計方法:AMD採用基於SMID(單指令多數據)的VLIW架構,而NVIDIA則採用的MIMD(多指令多數據)的多發射的超標量;

AMD 優點:
1 超強的計算能力
  SIMD架構能夠有效提升GPU的矢量處理性能,由於VS和PS的絕大部分運算都是4D Vector,它只需要一個指令端口就能在單週期內完成4倍運算量,效率達到100%。
2 節省晶體管,避免功耗問題
  採用VLIW架構,指令的捆綁全由編譯器完成,因此只需一個發射單元,這就可以節省下一大堆的晶體管,避免了功耗問題。

AMD 缺點:
1 ALU計算單元不能充分利用:
 4D SIMD架構一旦遇到1D標量指令時,效率就會下降到原來的1/4,3/4的模塊被完全浪費,尤其是一旦遇上分支預測的情況,SIMD在矢量處理方面高效能的優勢將會被損失殆盡。 例如:指令一:a=b+c;指令二:d=a*e。這兩條指令中,第二條指令中的a必須等待第一條指令的運算結果,出現這樣的情況時候,兩條指令大多數情況下就不能實現超標量執行了。

  NVIDIA的科學家對圖形指令結構進行了深入研究,它們發現標量數據流所佔比例正在逐年提升,如果渲染單元還是堅持SIMD設計會讓效率下降。爲此NVIDIA在G80中做出大膽變革:流處理器不再針對矢量設計,而是統統改成了標量ALU單元,這種架構叫做MIMD(Multiple Instruction Multiple Data,多指令多數據流)。
NVIDIA 優點:
1 ALU得到充分利用,到達了CPU級的利用水平;
   如此一來,對於依然佔據主流的4D矢量操作來說,G80需要讓1個流處理器在4個週期內才能完成,或者是調動4個流處理器在1個週期內完成,那麼G80的執行效率豈不是很低?沒錯,所以NVIDIA大幅提升了流處理器工作頻率(兩倍於核心頻率),擴充了流處理器的規模(128個),這樣G80的128個標量流處理器的運算能力就基本相當於傳統的64個(128×2?)4D矢量ALU。大家應該知道R600擁有64個5D矢量ALU,最終的性能G80要遠勝R600。
2 強大高效的ALU運算單元,適合於通用計算Tesla。
   G80的MIMD架構開了一個好頭,128個流處理器雖然聽起來雖然沒有AMD 320個那麼多,但這些流處理器是可以媲美真正的CPU核心,在執行任何指令時都能發揮出接近理論值的性能,這樣高效率的核心如果只是用來玩遊戲豈不太可惜了?
   隨着圖形畫面越來越複雜,1D、2D、3D指令所佔比例正在逐年增多,而G80在遇到這種指令時可說是如魚得水,與4D一樣不會有任何效能損失,指令轉換效率高並且對指令的適應性非常好,這樣G80就將GPU Shader執行效率提升到了新的境界;

NVIDIA 缺點:
1 需要更多的晶體管,存在功耗問題

    G80的架構聽起來很完美,但也存在不可忽視的缺點:根據前面的分析可以得知,4個1D標量ALU和1個4D矢量ALU的運算能力是相當的,但是前者需要4個指令發射端和4個控制單元,而後者只需要1個,如此一來MIMD架構所佔用的晶體管數將遠大於SIMD架構!

    所以AMD的SIMD架構可以用較少的晶體管造出龐大數量的流處理器、擁有恐怖的理論浮點運算能力;而NVIDIA的MIMD架構必須使用更多的晶體管製造出看似比較少的流處理器,理論浮點運算能力相差很遠。雙方走的都是極端路線,AMD以數量彌補效率的不足,而NVIDIA以效率彌補數量的劣勢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章