HD7970核心——革命的GCN架構
核心架構對顯卡性能至關重要,可能有些讀者對HD7970的核心還不熟悉,這里我們簡單介紹一下。
我們知道AMD歷代GPU的瓶頸除了曲面細分以外,其實最重要的是5D/4D VLIW架構的效率問題。HD7950和HD7970核心代號Tahiti,采用了全新的GCN架構,流處理器結構全部重新設計而來。
Tahiti徹底拋棄VLIW架構
通過Tahiti的整體架構圖我們看到,傳統的SIMD流處理器陣列消失了,取而代之的是GCN陣列,Tahiti總計擁有2048個流處理器,這樣每個GCN陣列里面擁有64個流處理器。現在來看看GCN陣列的微觀結構。
GCN與GF100的SM何其相似
GCN陣列里有4組SIMD單元,每組SIMD單元里面包括16個流處理器、或者說是標量運算器。GCN架構已經完全拋棄了此前5D/4D流處理器 VLIW超長指令架構的限制,不存在5D/4D指令打包-派發-解包的問題,所有流處理器以16個為一組SIMD陣列完成指令調度。簡單來說,以往是指令 集并行,而現在是線程級并行。
可以這么理解,一個GCN陣列與GF100當中的一組SM相當,GF100的一組SM當中有4組共計32個流處理器,而Tahiti的一組GCN當中有4組共計64個流處理器。
緩存部分
每個SIMD-16單元都擁有64KB向量寄存器
每組GCN陣列擁有64KB的本地數據共享緩存,還有16KB的一級緩存
每組GCN陣列有一個標量運算單元,用于執行整數指令、媒體指令和浮點原子操作,這個標量運算單元擁有自己的4KB寄存器
而GF100的緩存設計得更加靈活,每組SM里面擁有總計64KB的共享緩存+一級緩存,這64KB緩存可以根據實際運算量來動態調整,如果把16KB分配給一級緩存的話,那剩下的48KB就是共享緩存,反之亦然。
一般來說,進行圖形渲染時需要共享緩存比較多,而并行計算時則會用到更多的一級緩存。GF100這種靈活的緩存分配機制更適合做并行計算,而GCN架構更大的共享緩存會有更好的圖形渲染性能,并行計算則會稍遜一籌。
更多的線程調度
從緩存部分的設計來看,雖然GCN擁有更大的緩存容量,但在并行計算領域經營多年的NVIDIA顯然要棋高一手。
從線程級別來看,GCN與SM是不可分割的最小單元,GCN一次可以執行64個線程,而SM是48個(其實就是流處理器的數量)。
從多線程執行上來看,GCN可以同時執行4個硬件線程,而SM是雙線程調度器的設計(參見架構圖)。
所以GCN架構的多線程性能更加優秀。