開普勒之架構(gòu):流處理器暴增之謎
基于效能和計算能力方面的考慮,NVIDIA與AMD不約而同的改變了架構(gòu),NVIDIA雖然還是采用SIMT架構(gòu),但也借鑒了AMD“較老”的SIMD 架構(gòu)之作法,降低控制邏輯單元和指令發(fā)射器的比例,用較少的邏輯單元去控制更多的CUDA核心。于是一組SM當(dāng)中容納了192個核心的壯舉就變成了現(xiàn)實!
通過上面這個示意圖就看的很清楚了,CUDA核心的縮小主要歸功于28nm工藝的使用,而如此之多的CUDA核心,與之搭配的控制邏輯單元面積反而縮小了,NVIDIA強化運算單元削減控制單元的意圖就很明顯了。
此時相信有人會問,降低控制單元的比例那是不是意味著NVIDIA賴以成名的高效率架構(gòu)將會一去不復(fù)返了?理論上來說效率肯定會有損失,但實際上并沒有想 象中的那么嚴重。NVIDIA發(fā)現(xiàn)線程的調(diào)度有一定的規(guī)律性,編譯器所發(fā)出的條件指令可以被預(yù)測到,此前這部分工作是由專門的硬件單元來完成的,而現(xiàn)在可 以用簡單的程序來取代,這樣就能節(jié)約不少的晶體管。
隨意在開普勒中NVIDIA將一大部分指令派發(fā)和控制的操作交給了軟件(驅(qū)動)來處理。而且GPU的架構(gòu)并沒有本質(zhì)上的改變,只是結(jié)構(gòu)和規(guī)模以及控制方式 發(fā)生了變化,只要驅(qū)動支持到位,與游戲開發(fā)商保持緊密的合作,效率損失必然會降到最低——事實上NVIDIA著名的The Way策略就是干這一行的!
這方面NVIDIA與AMD的思路和目的是相同的,但最終體現(xiàn)在架構(gòu)上還是有所區(qū)別。NVIDIA的架構(gòu)被稱為SIMT(Single Instruction Multiple Threads,單指令多線程),NVIDIA并不像AMD那樣把多少個運算單元捆綁為一組,而是以線程為單位自由分配,控制邏輯單元會根據(jù)線程的任務(wù)量 和SM內(nèi)部CUDA運算單元的負載來決定調(diào)動多少個CUDA核心進行計算,這一過程完全是動態(tài)的。
但不可忽視的是,軟件預(yù)解碼雖然大大節(jié)約了GPU的晶體管開銷,讓流處理器數(shù)量和運算能力大增,但對驅(qū)動和游戲優(yōu)化提出了更高的要求,這種情況伴隨著AMD度過了好多年,現(xiàn)在NVIDIA也要面對相同的問題了,希望他能做得更好一些。