開普勒之核心:SMX與SM的改動細節
全新的Kepler相比上代的Fermi架構改變了什么,看架構圖就很清楚了:
GK104相比GF110,整體架構沒有大的改變,GPU(圖形處理器集群)維持4個,顯存控制器從6個64bit(384bit)減至4個64bit(256bit),總線接口升級至PCIE 3.0。剩下的就是SM方面的改變了:
這里之所以要把GF104這顆中端核心的SM架構圖也列出來,是因為GF104相比高端的GF100核心做了一些細小的改動,這些改動也被沿用到了GK104當中。另外從核心代號上來看,GK104其實就是用來取代GF104的,而取代GF100的核心另有他人。
NVIDIA把GK104的SM(不可分割的流處理器集群)稱為SMX,原因就是暴增的CUDA核心數量。但實際上其結構與上代的SM沒有本質區別,不同的只是各部分單元的數量和比例而已。具體的區別逐個列出來進行對比:
1. NVIDIA現在把流處理器稱為CUDA核心;
2. SFU(Special Function Units,特殊功能單元)是比CUDA核心更強的額外運算單元,可用于執行抽象的指令,例如正弦、余弦、倒數和平方根,圖形插值指令也在SFU上執行;
3. Warp是并行線程調度器,每一個Warp都可以調度SM內部的所有CUDA核心或者SFU;
4. Dispatch Unit是指令分派單元,分則將Warp線程中的指令按照順序和相關性分配給不同的CUDA核心或SFU處理;
5. LD/ST就是載入/存儲單元,可以為每個線程存儲運算源地址與路徑,方便隨時隨地的從緩存或顯存中存取數據;
6. TMU是紋理單元,用來處理紋理和陰影貼圖、屏幕空間環境光遮蔽等圖形后期處理;
通過以上數據對比不難看出,GK104暴力增加CUDA核心數量的同時,SFU和TMU這兩個與圖形或計算息息相關處理單元也同比增加,但是指令分配單元 和線程調度器還有載入/存儲單元的占比都減半了。這也就是前文中提到過的削減邏輯控制單元的策略,此時如何保證把指令和線程填滿一個CUDA核心,將是一 個難題。