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