流處理器緣何差6倍!A/N GPU架構(gòu)解析
G80的128個(gè)1D標(biāo)量ALU聽起來規(guī)模很龐大,而且將4D矢量指令轉(zhuǎn)換為4個(gè)1D標(biāo)量指令時(shí)的效率也能達(dá)到100%,但實(shí)際上如果用相同的晶體管規(guī)模,可以設(shè)計(jì)出更加龐大的ALU運(yùn)算器,這就是R600的流處理器架構(gòu)。
● ATI改進(jìn)傳統(tǒng)架構(gòu),制造龐大規(guī)模的流處理器
與革命性的G80架構(gòu)不同,R600身上有很多傳統(tǒng)GPU的影子,其Stream Processing Units很像上代的Shader Units,它依然是傳統(tǒng)的SIMD架構(gòu)。
R600擁有4個(gè)SIMD陣列,每個(gè)SIMD陣列包括了16個(gè)Stream Processing Units,這樣總共就是64個(gè),但不能簡單地認(rèn)為它擁有64個(gè)流處理器,因?yàn)镽600的每個(gè)Units內(nèi)部包含了5個(gè)ALU:
我們來仔細(xì)看看R600的流處理器架構(gòu):Branch Execution Unit(分歧執(zhí)行單元)就是指令發(fā)射和控制器,它獲得指令包后將會(huì)安排至它管轄下5個(gè)ALU,進(jìn)行流控制和條件運(yùn)算。General Purpose Registers(通用寄存器)存儲(chǔ)輸入數(shù)據(jù)、臨時(shí)數(shù)值和輸出數(shù)據(jù),并不存放指令。
由于內(nèi)部的5個(gè)1D ALU共享同一個(gè)指令發(fā)射端口,因此宏觀上R600應(yīng)該算是SIMD(單指令多數(shù)據(jù)流)的5D矢量架構(gòu)。但是R600內(nèi)部的這5個(gè)ALU與傳統(tǒng)GPU的ALU有所不同,它們是各自獨(dú)立能夠處理任意組合的1D/2D/3D/4D/5D指令,完美支持Co-issue(矢量指令和標(biāo)量指令并行執(zhí)行),因此微觀上可以將其稱為5D Superscalar超標(biāo)量架構(gòu)。
通過上圖就可以清楚的看到,單指令多數(shù)據(jù)流的超標(biāo)量架構(gòu)可以執(zhí)行任意組合形式的混合指令,在一個(gè)Stream Processing Units內(nèi)部的5個(gè)ALU可以在單時(shí)鐘周期內(nèi)進(jìn)行5次MAD(Multiply-Add,乘加)運(yùn)算,其中比較“胖”的ALU除了MAD之外還能執(zhí)行一些函數(shù)(SIN、COS、LOG、EXP等)運(yùn)算,在特殊條件下提高運(yùn)算效率!
現(xiàn)在我們就知道R600確實(shí)擁有64x5=320個(gè)流處理器。R600的流處理器之所以能比G80多好幾倍就是得益于SIMD架構(gòu),可以用較少的晶體管堆積出龐大規(guī)模的流處理器。但是在指令執(zhí)行效率方面,SIMD架構(gòu)非常依賴于將離散指令重新打包組合的算法和效率,正所謂有得必有失。
通過前面的分析我們可以初步得出這樣的結(jié)論:G80的MIMD標(biāo)量架構(gòu)需要占用額外的晶體管數(shù),在流處理器數(shù)量和理論運(yùn)算能力方面比較吃虧,但卻能保證超高的執(zhí)行效率;而R600的SIMD超標(biāo)量架構(gòu)可以用較少的晶體管數(shù)獲得很多的流處理器數(shù)量和理論運(yùn)算能力,但執(zhí)行效率方面要依具體情況而定。
關(guān)注我們
