圖形與計算那些事 AMD次世代架構(gòu)解析
看了上頁圖形引擎部分的介紹,很多人可能會失望——基本沒動嘛,還說什么次世代圖形核心?別著急,好戲在后頭。我們知道AMD歷代GPU的瓶頸除了曲面細分以外,其實最重要的是5D/4D VLIW架構(gòu)的效率問題?,F(xiàn)在Tahiti的GCN架構(gòu)就是要解決這個問題,它的流處理器結(jié)構(gòu)已經(jīng)面目全非了。
Tahiti徹底拋棄VLIW架構(gòu)
通過Tahiti的整體架構(gòu)圖我們看到,傳統(tǒng)的SIMD流處理器陣列消失了,取而代之的是GCN陣列,Tahiti總計擁有2048個流處理器,這樣每個GCN陣列里面擁有64個流處理器?,F(xiàn)在來看看GCN陣列的微觀結(jié)構(gòu)。
GCN與GF100的SM何其相似
Tahiti的GCN陣列微觀結(jié)構(gòu)
GCN陣列里有4組SIMD單元,每組SIMD單元里面包括16個流處理器、或者說是標量運算器。GCN架構(gòu)已經(jīng)完全拋棄了此前5D/4D流處理器VLIW超長指令架構(gòu)的限制,不存在5D/4D指令打包-派發(fā)-解包的問題,所有流處理器以16個為一組SIMD陣列完成指令調(diào)度。簡單來說,以往是指令集并行,而現(xiàn)在是線程級并行。
GF100的SM(流處理器簇)微觀結(jié)構(gòu)
可以這么理解,一個GCN陣列與GF100當中的一組SM相當,GF100的一組SM當中有4組共計32個流處理器,而Tahiti的一組GCN當中有4組共計64個流處理器。
緩存部分
每個SIMD-16單元都擁有64KB向量寄存器
每組GCN陣列擁有64KB的本地數(shù)據(jù)共享緩存,還有16KB的一級緩存
每組GCN陣列有一個標量運算單元,用于執(zhí)行整數(shù)指令、媒體指令和浮點原子操作,這個標量運算單元擁有自己的4KB寄存器
而GF100的緩存設(shè)計得更加靈活,每組SM里面擁有總計64KB的共享緩存+一級緩存,這64KB緩存可以根據(jù)實際運算量來動態(tài)調(diào)整,如果把16KB分配給一級緩存的話,那剩下的48KB就是共享緩存,反之亦然。
一般來說,進行圖形渲染時需要共享緩存比較多,而并行計算時則會用到更多的一級緩存。GF100這種靈活的緩存分配機制更適合做并行計算,而GCN架構(gòu)更大的共享緩存會有更好的圖形渲染性能,并行計算則會稍遜一籌。
更多的線程調(diào)度
從緩存部分的設(shè)計來看,雖然GCN擁有更大的緩存容量,但在并行計算領(lǐng)域經(jīng)營多年的NVIDIA顯然要棋高一手。
從線程級別來看,GCN與SM是不可分割的最小單元,GCN一次可以執(zhí)行64個線程,而SM是48個(其實就是流處理器的數(shù)量)。
從多線程執(zhí)行上來看,GCN可以同時執(zhí)行4個硬件線程,而SM是雙線程調(diào)度器的設(shè)計(參見架構(gòu)圖)。
如此來看,GCN架構(gòu)的多線程性能會更好一些。
小結(jié):AMD GCN抄襲NVIDIA SM架構(gòu)?
在流處理器部分,終于不用費勁的把AMD和NVIDIA GPU架構(gòu)分開介紹了,因為GCN與SM已經(jīng)沒有本質(zhì)區(qū)別。剩下的只是緩存容量、流處理器簇的數(shù)量、線程調(diào)度機制的問題,雙方根據(jù)實際應(yīng)用自然會有不同的判斷,自家的前后兩代產(chǎn)品也會對這些數(shù)量和排列組合進行微調(diào)。
AMD向NVIDIA的架構(gòu)靠攏,證明了他這么多年來確實是在錯誤的道路上越走越遠,還好浪子回頭金不換,這次GCN架構(gòu)簡直就是大躍進!
關(guān)注我們
