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