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

ADVERTISEMENT

GCN:混血新架構

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

成敗都在編譯器

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

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

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%,可惜事實上並沒有這麼簡單。

相依性是效率關鍵

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

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

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

新架構減輕編譯器壓力

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

沒有40個CU的Tahiti

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

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

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

魯蛇實驗室
作者

戶田惠梨香 新垣結衣 長澤雅美 吉高由里子 志田未來 北川景子 香里奈 竹內結子 北乃紀伊 菅野美穗 黑川智花 宮崎葵 夏帆 貫地谷詩穗梨 石原里美 有村架純 井上真央 真野恵里菜 能年玲奈 深田恭子

使用 Facebook 留言
PCABC
1.  PCABC (發表於 2012年4月01日 15:18)
看了這篇之後 我更想了解開普勒的架構了

真不知道是怎樣弄得 竟然功耗降著麼多

680還可以把7970壓在地上打

Charlie Chou
3.  Charlie Chou (發表於 2012年4月01日 17:36)
"...即使是X79用的四通道記憶體頻寬(memory bandwidth)不過30~50GB/s左右,HD 7970上的GDDR5記憶體頻寬可高達264GB/s,是系統記憶體的數倍,有助於通用運算與少部分遊戲。"

問題是就算是PCI-E 3.0的極限頻寬也才32GB/s(應該是雙向各16GB/s沒錯吧...)
然後加上延遲應該會比系統記憶體更高...
這樣真的會有用嗎?
PCABC
4.  PCABC (發表於 2012年4月01日 20:04)
※ 引述《Charlie20083》的留言:
> "...即使是X79用的四通道記憶體頻寬(memory bandwidth)不過30~50GB/s左右,HD 7970上的GDDR5記憶體頻寬可高達264GB/s,是系統記憶體的數倍,有助於通用運算與少部分遊戲。"
>
> 問題是就算是PCI-E 3.0的極限頻寬也才32GB/s(應該是雙向各16GB/s沒錯吧...)
> 然後加上延遲應該會比系統記憶體更高...
> 這樣真的會有用嗎?
>




記憶體是雙向的阿

對主板那邊當然是夠 但對GPU那裡當然是要更快才行啦

CPU的快取也是相同道理 一樣快的話 何須另加記憶體

資料全部暫存在主機板的記憶體就好啦 還比較便宜咧

╮(╯_╰)╭
Shinwill
1人給推

5.  Shinwill (發表於 2012年4月01日 20:47)
※ 引述《Charlie20083》的留言:
> 問題是就算是PCI-E 3.0的極限頻寬也才32GB/s(應該是雙向各16GB/s沒錯吧...)
> 然後加上延遲應該會比系統記憶體更高...
> 這樣真的會有用嗎?

一般顯示卡所稱的記憶體頻寬
是指 GPU 與 VRAM 間溝通的頻寬
05f1939cb8e3224017e4aa38bb3e4f88?size=48&default=wavatar
6.  00351 (發表於 2012年4月01日 21:10)
難怪AMD一直都有驅動程式的包袱
每出一批新遊戲
都必須一一改版來修正遊戲特效BUG
或效能低落的問題
魯蛇實驗室
1人給推

7.  魯蛇實驗室 (發表於 2012年4月02日 10:11)
※ 引述《PCABC》的留言:
> 看了這篇之後 我更想了解開普勒的架構了
>
> 真不知道是怎樣弄得 竟然功耗降著麼多
>
> 680還可以把7970壓在地上打
>
>
28nm是主因,再者,kepler持續改良兩代的fermi架構
架構上更完善,電力效率自然表現更好
PCABC
8.  PCABC (發表於 2012年4月02日 14:18)
※ 引述《tandee》的留言:
> ※ 引述《PCABC》的留言:
> > 看了這篇之後 我更想了解開普勒的架構了
> >
> > 真不知道是怎樣弄得 竟然功耗降著麼多
> >
> > 680還可以把7970壓在地上打
> >
> >
> 28nm是主因,再者,kepler持續改良兩代的fermi架構
> 架構上更完善,電力效率自然表現更好



這期雜誌講的還蠻詳細的

Shader的部分更證實了我的疑慮 拿掉後核心頻率終於上的來了

若真有GK110 GTX685我想應該就像是460跟465的差距一樣吧

通用運算效能大增 但遊戲效能沒增多少

GPU面積大增 結果超吃電 ╮(╯_╰)╭


4fee7e03816a5222df6f7d5fb4297ec4?size=48&default=wavatar
9.  散彈槍 (發表於 2012年4月02日 20:19)
※ 引述《PCABC》的留言:
> ※ 引述《tandee》的留言:
> > ※ 引述《PCABC》的留言:
> > > 看了這篇之後 我更想了解開普勒的架構了
> > >
> > > 真不知道是怎樣弄得 竟然功耗降著麼多
> > >
> > > 680還可以把7970壓在地上打
> > >
> > >
> > 28nm是主因,再者,kepler持續改良兩代的fermi架構
> > 架構上更完善,電力效率自然表現更好
>
>
>
> 這期雜誌講的還蠻詳細的
>
> Shader的部分更證實了我的疑慮 拿掉後核心頻率終於上的來了
>
> 若真有GK110 GTX685我想應該就像是460跟465的差距一樣吧
>
> 通用運算效能大增 但遊戲效能沒增多少
>
> GPU面積大增 結果超吃電 ╮(╯_╰)╭
>
> 很難講喔,以規格來說,基本上可以把兩家目前的雙核卡王打趴,而且可能跟580差不多耗電而已,跟460和465是完全不一樣的狀況阿,畢竟GK110比GK104較像是GTX580比上GTX460才對(所以我覺得GK110相當有可能是7系列的),不過因為良率問題,所以要等到8月才會出來。
>
方
10.  (發表於 2012年4月04日 11:07)
其實打趴這句話言過其實了╯-__-)╯ ╩╩
兩者拉距肯定在玩遊戲時看不太出來
為求爽度而已

7970輸在兩點
1. 價格還不降?
2. 不CP求爽度時~我若有錢想買只買老大 ~說白點680也不夠看
發表回應
謹慎發言,尊重彼此。按此展開留言規則