2012.04.01 14:00

完全看懂 HD 7970 新架構,GPU 如何跑出更高的效能?

ADVERTISEMENT

GCN:混血新架構

沒有什麼架構可以用一輩子,遲早得面對效能不彰、擴增不易的問題,GCN架構也就應運而生。為了解決通用運算以及 5、VLIW 4效率不彰的問題,GCN架構試圖在改革與延續之間取得平衡點,兼具(Single Instruction Multiple Data,單指令流多數據流)與(Multiple Instruction Multiple Data,多指令流多數據流)的特性。
先前VLIW 4是採用SIMD架構,特色是單一發射口對上4個ALU,因為共用發射口,所以電晶體數量較少。雖然每週期可執行4次操作(operations),但是仍為1條指令。而的GF 100與GF 110則是MIMD架構,每個CUDA Core都有自己的發射口,電晶體數量較多,每個CUDA Core都能獨立運算指令。

成敗都在編譯器

這次GCN也就是所謂Non-VLIW架構中,過去VLIW特性將會大幅改變,但是從根本上來說還是非常相似,而效率卻是天差地遠。VLIW所採用的是指令平行(instruction level parallelism),GCN則是執行緒平行(thread level parallelism)。就是為了改善通用計算的瓶頸,強化指令編譯的靈活性。

VLIW效率不佳,有很大的因素是受到編譯器限制,無法動態調整指令。雖然理論效能極佳,但是得在特定環境與編譯器最佳化的情況下才能實現。舉例而言,VLIW架構運作時,指令執行過程只能依照既有的順序進行運算,若有額外加入或是相關性指令,都只能僵化地依照順序執行,無法動態調整以提高效率。

ADVERTISEMENT

CU是基本運算區塊

為了改善編譯器問題,GCN在架構上做了強化。攤開架構圖,可看到核心內藏32個CU(Compute Unit),這些CU是GCN也是Tahiti核心的基本運算區塊。每個CU內包含4個SIMD陣列、1個純量運算單元(Scalar Unit)、Instruction Fetch Arbitration、Control and Decode、快取記憶體等單元,還有用於抽取、編譯、調度Wavefront與指令的Branch & Message Unit。

每個SIMD陣列則由16個向量運算單元(Vector Unit)構成,1個週期內SIMD可執行16個single precision multiply-add(單精度乘加)運算。若以CU來計算,每個週期則可執行64次,也就是4條單精度乘加運算,因此可說是具備MIMD的特性。

新增硬體調度器

先前提到的指令調度問題,靈活性方面,可透過CU內的硬體分支單元Branch & Message Unit解決,這硬體的角色可稱之為調度器(hardware scheduler)。當指令集(instruction set)來到編譯器,編譯器會將指令打散成Wavefront(NVIDIA則是Warp),並排列出高低順位。在實作中AMD的Wavefront是64個為1組,理想狀態下,Wavefront依序進入ALU中平行運算,可讓ALU使用率達到100%,可惜事實上並沒有這麼簡單。

ADVERTISEMENT

相依性是效率關鍵

現在需要動態調度的原因是,當編譯器決定Wavefront的順序後,只能依序將指令丟入ALU運算。然而在實際運算中,Wavefront之間存在相依性(dependency),也就是必須等到順位高的Wavefront運算完畢後,才能運算順位低的Wavefront,而相依性會造成流水線塞車,導致ALU效率偏低。

相依性的原因有點像是解方程式,假設B+2=4,B+C=6,必須先算出B才能解出C。問題是 4架構中,編譯器不能改變既定的Wavefront順位,空下來的閒置ALU就會造成效率不彰的問題。

透過動態調度,假設原本VLIW 4運算A~O共15個Wavefront共要6個週期,而透過GCN的CU只需要4個週期就能運算完畢。若指令越零散或相關性越高,透過CU運算的效益就越明顯。

ADVERTISEMENT

新架構減輕編譯器壓力

上述介紹中不難看出以往在 4架構中,效率高低的關鍵是編譯器的能力。以往缺乏硬體調度的情況下,Wavefront排列後只能依序運算,新增hardware scheduler之後,可讓Wavefront調度更有彈性,碰到彼此有相依性的Wavefront也能透過更改優先順序提高運算效率。

沒有40個CU的Tahiti


▲GCN內含32組CU,而CU內又有4個SIMD陣列,每個SIMD陣列又由16個ALU構成,所以總計有2048個ALU。其中CU內的Branch & Message Unit用於指令調度,是這次新架構的重要硬體元件。先前有廠商洩漏出40個CU的HD 7970,不過AMD官方也立刻回應Tahiti沒有任何被遮蔽的核心。依照往常的經驗,更換65nm、40nm都有良率問題,加上在GF 100時期,讓GTX 480架構精簡,很難想像28nm的HD 7970沒有遮蔽任何元件。或許是天生神力,加上良率穩定且設計出色,才沒有遮蔽的需要。

ADVERTISEMENT

(下一頁:圖解編譯器指令集排程)

ADVERTISEMENT