2013-03-19
全新「GCN」GPU架構
AMD Radeon HD 7970繪圖卡
文: Grove Yeung / 評測中心


AMD 正式發佈基於全新「 GCN 」微架構設計、核心代號「 Tahiti 」的「 Radeon HD 7970 」高階繪圖卡,整合「 Vector Unit 」與「 Scalar Co-Processor 」單元令性能進一步提升,記憶體介面提升至 384Bit 寬度並搭載高達 3GB GDDR5 記憶體,率先新一代 PCI-Express 3.0 傳輸並提升至支援 DirectX 11.1 繪圖規格。



一切由 VLIW 5 架構開始

 

Radeon HD 7970

GPU 發展由 Fixed Fuction 、 Simple Shaders 發展至今日 Graphics Parallel Core

 

GPU 設計在進入 Direct X10 時代出現重大變化,由以往採用 Fixed Fuction 、 Simple Shaders 進化至 Graphics Parallel Core 設計,同時 GPU 亦不再局限於 3D 遊戲及繪圖應用,並朝向 GPGPU 通用運算發展, GPU 的用途變得更廣泛,這一年 ATI ( 及後被 AMD 併購 ) 與 NVIDIA 均朝向 Unified Shader 方向發展,但微架構理念卻各不相同。

 

 ATI 決定選擇 VLIW 架構 (Very Long Instruction Word) 的 SIMD 架構,每組 Stream Processor Unit 內建 5 個 ALU 運算單元,稱為「 VLIW5 」微架構,這 5 個 ALU 單元並非全功能,其中 4 個 ALU 單一週期可運算 4 個 32Bit FP MAD 、 2 個 64Bit FP MUL / ADD 、 1 個 64Bit FP MAD 或是 4 個 24Bit Int MUL / ADD 指令,卻不能執行 Special Function 或 Transcendentals 指令,餘下的一個是專門化 ALU ,單一週期可處理一組 Special Function 或 Transcendentals 指令,或是 1 組 32Bit FP MAD 指令。

 

R600
ATI R600 是首顆採用 VLIW 架構的 GPU 產品

 

採用「 VLIW5 」架構好處是 5 組 ALU 運算單元能共享一組 Branch Execution Unit 、 Registers 等單元,節省電晶體使用數,減低成本、晶片功耗及提升未來擴展性。同時, ATI 希望新架構在支援 DirectX 10 規格之餘,亦能提共優勢的 DirectX 9 的遊戲性能,「 VLIW5 」架構正好能滿足 DirectX 9 需要計算像素位置參數 (XYZW) 及顏色參數 (RGB) ,需要同時處理 4 筆資料的要求。

 

NVIDIA 選擇了與 ATI 完全相異的 1D Scalar 的 MIMD 多指令多數據設計,每個 Stream Processor 僅內建 1 組全功能的 ALU ,並擁有獨立的 Branch Execution Unit 、 Registers 等,雖然 Stream Processor 所需電晶體相較對手多, ALU 數目亦較對手為低,在最高運算理論值上不及對手,簡單直接的 GPU 架構令內部單元運用效率高,不僅在 3D 性能上長期壓倒對手,同時亦有利於 GPGPU 領域發展。

 

Tahiti

為平衡 DirectX 9 與 DirectX 10 性能, VLIW5 採用 4+1 ALU 設計

 

 

反觀 ATI 的「 VLIW5 」需要把指令轉譯至 VLIW 指令並盡量填滿 Stream Processor 的 ALU ,只可惜「 VLIW5 」架構內的 ALU 的功能並不完整,部份更具有特殊性執行條件, Ultra Threaded Dispatch Unit 需要把盡量把 5 個互相間並無依賴性的 Shader 指令,結合成一 5D VLIW 指令的難度甚高,雖然最理想情況下每個 Stream Processor 最高可完成 5 筆指令,但亦常出現只有 4 組 ALU 出現閒置的情況,導致運算能力只有理論值的 1/5 ,而平均指令填充率則在 2-3 個 ALU 單元之間,很視乎繪圖程序設計及驅動程式優化,故此 AMD 繪圖核心的最高運算效率理論值,往往與實際運算效率相距甚遠。

 

為此 AMD 必需要努力優化驅動編譯器,以避免運算單位閒置,同時不斷增加 Stream Processors 數目,從 Radeon HD 2900XT 的 320 個猛增至 Radeon HD 5870 時的 1,600 個,實行以數量填補效率偏低問題。

 

進入 DirectX 11 時代, AMD 明白不斷提升 Stream Processor 數目並非良策,不僅成本與功耗無法與對手比較,同時需要投放大量資源於優化驅動編譯器上,因此 AMD 決定於 Radeon HD 6900 系列中採用經改良的「 VLIW4 」架構。

 

經改良的 VLIW4 架構

 

Tahiti

針對 VILW5 不足改良而成的 VILW4 , 4 個 ALU 功能完全相同有效減少運算單元閒置

 

AMD 在 Radeon HD 6900 系列中首次針對 VLIW 架構作出改良,雖然微架構仍沿自「 R600 」繪圖核心,但 Stream Processor 則由「 VLIW5 」變成「 VLIW4 」設計。顧名思義「 VLIW4 」的 Streasm Processor 內建了 4 個 ALU 單元,數目比「 VLIW5 」少了一個 ALU ,刪去了原本只針對 Special Function 或 Transcendentals 指令,或是 1 組 32Bit FP MAD 指令的 T-Unit 特殊運算單元,雖然每組 Stream Processor 擁有 ALU 運算單元數目減至 4 個,但這 4 個 ALU 卻是功能性相同並具完整的。

 

「 VLIW4 」架構的 Stream Processor 單一週期處理 4 筆 32-Bit FMA 、 MAD 、 MUL 或 ADD 、或是 2 筆 64Bit ADD 、或是 1 筆 64Bit FMA 或 MUL 浮點運算指令。整數運算方面則支援單一週期處理 4 筆 24-Bit MAD 、 MUL 或 ADD 、或是 4 筆 32Bit ADD 或 bitwise 指令、或是 1 筆 32Bit MAD 或 MUL 整數運算、或是一筆 64Bit ADD 整數運算。

 

「 VLIW4 」把 4 個 ALU 功能變成全功能及對等,達成了 4-Way co-issue 支援,刪去了 T-Unit 特殊運算單元,取而代之是 4 個 ALU 均能處理 Special Function 或 Transcendentals 指令,不過處理一組 Special Function 或 Transcendentals 指令的 ALU ,需要佔用 4-Way co-issue 中的其中 3 組 issue slot ,令 Stream Processor 內只餘下 1 組可執行其他指令。

 

Radeon HD 6950
首顆採用「 VLIW4 」架構是採用代號「 Cayman 」繪圖核心 Radeon HD 6950/6970

 

「 VLIW4 」由 5 個 ALU 減至 4 個 ALU ,令 VLIW 指令在排程及暫存器管理方面變得簡單,預測分支與 VLIW 指令編繹較易處理,大大減少核心被閒置的機會,並可在相約的 SPU 數目下達成更高的繪圖運算效能。

 

據 AMD 指出,全新「 VLIW4 」 Core 設計相較舊有的「 VLIW5 」 Core ,更有效把更多的指令填充至每個運算單元,簡化了排程及暫存器管理工序, AMD 透過微架構改良,每 mm2晶片尺寸達成 10% 效能提升。

 

儘管「 VLIW4 」擁有不俗的性能提升,但「 VLIW4 」設計仍然有更大的改善空間,否則將無法與對手抗衡,在遊戲性能方面需考慮如何減低 VLIW 編譯器及驅動程式因素,令大部份遊戲開發者無論驅動程式優化,即可提供強大的 3D 遊戲性能。

 

同時﹐針對 GPGU 方面需進一步加強 Double Precision 指令的執行,現有的 Stream Processor 可以在單一週期內,每 1 個 ALU 處理完成 1 個 Singe Precision 指令,因此「 VLIW4 」單一週期  4 個 Single Precision 指令,但每個 Stream Processor 單一週期均只能執行 1 個 Double Precision 指令,在 GPGPU 應用上大幅落後對手。

分享到:
發表評論
本篇文章被 28542 人閱讀,共有 個評論