GPU挑戰(zhàn)CPU地位!詳解CUDA+OpenCL威力
較多核CPU確實很誘人,但只能存在于實驗室中,距離我們似乎非常遙遠。由于較多核CPU的架構(gòu)與目前的雙核/四核CPU有很大的不同,因此大家不必拘泥于傳統(tǒng)處理器的概念。其實較多核處理器“遠在天邊、近在眼前”——高配置電腦當(dāng)中肯定擁有一顆GPU(顯卡),9800GTX+是128核心、GTX280則擁有240顆核心,GPU的每一個流處理器就是一顆核心。
目前X86架構(gòu)的處理器經(jīng)過30年的發(fā)展,指令集、平臺、系統(tǒng)和軟件支持已經(jīng)接近完美,因此使用CPU處理數(shù)據(jù)是天經(jīng)地義的。GPU雖然也誕生了近20年,但它從來都只能渲染圖形,想要讓他進入全新并行計算領(lǐng)域,無論硬件架構(gòu)還是軟件平臺都需要作相應(yīng)的調(diào)整。
● GPU在硬件架構(gòu)方面的進步
傳統(tǒng)GPU的核心組成部分是Shader(著色器),分為Pixel Shader(像素單元)和Vertex Shader(頂點單元),每一個Shader是一個4D或5D的矢量運算單元,之所以設(shè)計成這樣是因為在圖形處理中,最常見的像素都是由RGB(紅黃藍)三種顏色構(gòu)成的,加上它們共有的信息說明(Alpha),總共是4個通道。而頂點數(shù)據(jù)一般也是由XYZW四個坐標(biāo)構(gòu)成,這樣也是4個通道。在3D圖形進行渲染時,其實就是改變RGBA四個通道或者XYZW四個坐標(biāo)的數(shù)值。為了一次性處理1個完整的像素渲染或幾何轉(zhuǎn)換,GPU的像素著色單元和頂點著色單元從一開始就被設(shè)計成為同時具備4次運算能力的運算器(ALU)。

傳統(tǒng)Shader結(jié)構(gòu)的GPU只適合做圖形渲染
這樣的4D矢量運算單元在渲染3D圖形時會有很高的效率,但在處理復(fù)雜指令時的效率會大打折扣,比如DX10新引入的幾何著色、物理加速等,尤其在面對非圖形渲染指令時優(yōu)勢全無。
NVIDIA的科學(xué)家對圖形指令結(jié)構(gòu)進行了深入研究,它們發(fā)現(xiàn)標(biāo)量數(shù)據(jù)流所占比例正在逐年提升,如果渲染單元還是堅持SIMD(單指令多數(shù)據(jù)流)設(shè)計會讓效率下降。為此NVIDIA在G80中做出大膽變革:流處理器不再針對矢量設(shè)計,而是統(tǒng)統(tǒng)改成了標(biāo)量ALU單元。用通俗的話說就是:Shader單元內(nèi)部ALU完全打散,設(shè)計成為各自獨立的流處理器,并分配相應(yīng)的指令發(fā)射端和控制單元,這樣的架構(gòu)在面對任何形式的指令(包括組合指令)時都能保證最高的執(zhí)行效率,這也就是NVIDIA在DX10時代游戲性能大幅領(lǐng)先于競爭對手的根本原因!

G80革命性的標(biāo)量流處理器架構(gòu)設(shè)計,每一個SP都是一個核心
隨著圖形畫面越來越復(fù)雜,1D、2D、3D指令所占比例正在逐年增多,而G80在遇到這種指令時可說是如魚得水,與普通4D指令一樣不會有任何效能損失,指令轉(zhuǎn)換效率高并且對指令的適應(yīng)性非常好,這樣G80就將GPU Shader執(zhí)行效率提升到了新的境界!
這種富有彈性的架構(gòu)不僅擁有很強的圖形渲染能力,而且能夠處理以往不敢奢想的非圖形運算指令,理論上來講只要是浮點運算指令都可以交給GPU來處理。而在以往,程序員必須針對GPU的架構(gòu)特點,對指令重新分類打包并模擬圖形指令交給GPU處理器,工作量可想而知,效率也極為低下。
G80的架構(gòu)無論對于圖形渲染還是并行計算都是革命性的,但NVIDIA并沒有滿足于此,為了進一步提高GPU的并行計算效能,把GPU改造成為一顆真正的通用處理器,NVIDIA在GTX200核心大規(guī)模擴充流處理器數(shù)量的同時,也對內(nèi)核架構(gòu)進行了諸多優(yōu)化與改進,使之更適合做超大規(guī)模并行數(shù)據(jù)處理。

GTX200核心的主要改進有:
- 每個SM(8個流處理器為一簇)可執(zhí)行線程從768提升至1024條;
- 每個SM的指令寄存器容量翻倍,從16K提升至32K;
- 將雙指令執(zhí)行(Dual-Issue)效率提升至94%,接近于理論值;
- 512Bit顯存控制器,4GB顯存容量支持,防止指令排隊溢出;
- 支持雙精度64Bit浮點運算,55nm版GTX200的雙精度運算能力提高4倍!
以上所有的改進(顯存位寬除外)并不會讓GTX200核心的圖形渲染能力得到提高,但卻能夠大幅提升GPU在進行海量數(shù)據(jù)處理時的效率。由此我們可以看出NVIDIA的野心與實力——G80與GTX200已經(jīng)不再是一顆圖形處理器,而是較多核通用處理器!而NVIDIA這種圖形架構(gòu)與并行計算架構(gòu)合二為一的架構(gòu)就被稱為CUDA。
關(guān)注我們


