AMD HD 7970 之 GCN 架構完全解析,帶來 GPU 革命

ADVERTISEMENT

4D源於顏色與座標

那為什麼要分SIMD與MIMD呢?這應該要先從3D影像的特性說起。對於影像而言,最重要的就是顏色及位置,1個像素顏色可由RGB三原色配上半透明通道Alpha構成,可利用RGBA來描述像素顏色。像素的座標則可透過XYZ三維座標,加上遠近參數W,形成齊次座標XYZW來描述。

顏色跟座標都是使用4個數據進行標定,因此1個像素進行位置或顏色的變換,需要透過4次運算,這也是為什麼AMD的向量架構用的是4D+1D或4D架構,而不是6D或7D之類。

AMD的ALU可在1個週期內執行4次平行運算,則稱之為4D向量運算。跟向量運算對應的是純量,恰巧NVIDIA用的就是純量架構。純量是單一數值,多個純量平行串在一起也能組成向量。

AMD所用的SIMD就是由1個發射端,配上4或5個ALU而成。其中Radeon HD 6970用的就是修改過的VLIW 4,即為4D向量架構,而之前採用VLIW 5的則是4D+1D或稱為5D向量架構。

強化的4D架構

AMD的VLIW 5也就是4D+1D架構,內有5個1D的ALU,還有1個Branch Unit。運算時,1個發射口會對上5個ALU,這5個ALU會以1+1+1+1+1或2+3等不同方式分配運算。收到指令時,會透過驅動程式編譯並最佳化分配,再轉給ALU去執行。

Cayman核心使用的4D架構,則是少了VLIW 5用於運算Sin、Cos、Log等特殊運算的ALU(T Unit),但是剩下的4個ALU與原先的4個ALU又略有不同,反而像是被去掉運算能力比較強的那個T Unit。因此雖然看起來架構精簡,但實際上效能不減反增,不過也造成一些隱憂。

VLIW 4/5架構對比圖

AMD HD 7970 之 GCN 架構完全解析,帶來 GPU 革命

▲前後代差異在用於特殊運算的T Unit,VLIW 4雖然看似架構精簡,但是每個ALU都堪比這個特殊運算的T Unit,因此整體效能會比較好。此外,架構上ALU總數減少,但是以核心架構來看,反而增加80個發射端、Branch Unit與General Purpose Registers,讓電晶體總數來說反而增加,也連帶讓功耗明顯提升。

VLIW 4功耗、成本高

要比較VLIW 4與5,可從HD 5870與HD 6970來看。前者ALU數量是1600個後者則是1536個,數量相當相近因此可以稍做比較。從核心面積、電晶體數量與TDP等規格來看,HD 6970都比較高,代表不計效能的前提下,光成本與功耗VLIW 4都比VLIW 5還高。

HD 5870核心面積、電晶體數量與TDP分別為334平方公厘、21.5億個與188W,HD 6970則是389平方公厘、26.4億個與250W。雖然兩者架構不甚相同,但是從ALU數量、核心面積等參數來看,也不難想像4D架構的缺點就是要耗費更多的電晶體,而且TDP也比較大。

SIMD成本低、堆疊容易

NVIDIA打從G80以來,使用的MIMD架構,是把所有單元打散成最基本的1D純量,特點是比4D或5D架構靈活。以往4D向量運算,透過1D純量運算,可變成1個週期內,4個ALU各自運算;或是4個週期內,1個ALU獨自完成,不論1D、2D、3D或4D都得拆成1D指令。

雖然MIMD架構看起來很好,但是最大缺點就是每個SP都要有獨立的發射口,電晶體數量與功耗都會增加,自然成本會更高。簡單來說,AMD以前的SIMD架構,特點是1個發射口對上4~5個ALU,成本比較低。而且若能讓驅動程式最佳化,理論上的效能會比MIMD更高。而NVIDIA的MIMD架構,優勢是運算靈活,實際效能會比SIMD更高,但是電晶體使用量跟功耗會比SIMD架構更多。

有位網友jk21234對於雙方架構的比喻雖粗俗但不失中肯,他說:「剛踏入Unified Shader的時代一家想要又粗又長,一家想要抽插速度很快」,其中那個想要又粗又長的是AMD,而想要速度很快的則是NVIDIA。對照一下上面的原理,再看看這比喻會比較容易了解吧!

Cayman與GF 110

AMD HD 7970 之 GCN 架構完全解析,帶來 GPU 革命

▲Cayman使用的VLIW 4架構核心就是24組SIMD陣列,而GF 110使用的MIMD架構,則是16組SM(Streaming Multiprocessors)為主。

AMD HD 7970 之 GCN 架構完全解析,帶來 GPU 革命

▲AMD會想將VLIW 4架構修正,其中一個原因是MIMD架構有利於GPGPU運算,而大動快取設計,也是為了強化處理器與顯示核心間的聯繫。

砍掉做成GCN架構

VLIW架構設計能夠提升4D向量運算能力,但是若碰到1D純量運算時,使用率就會只剩四分之一,容易出現效能不彰的問題。必須依靠強而有力的驅動程式進行最佳化與資源調度,才能發揮最大效益。

從DirectX 9之後,雙方相繼投入Co-issue運算模式,可執行向量與純量運算。某些方面而言可緩解效能不彰的問題,但是隨API複雜化,4D向量指令比重隨之降低,這也是為什麼後來4D+1D架構改為4D架構,後來又將4D改為GCN架構的原因之一。

影像品質難以提升

另一個原因則是現今3D影像品質難以向上提升,除非Ray Tracing(光線追蹤)技術能成熟,否則對高階卡而言,流暢度已經相當足夠,不停堆疊ALU沒有太大的意義。

反觀GPGPU應用一直是AMD的罩門,而NVIDIA的CUDA又有相當的斬獲,AMD對此難免會緊張。雖然VLIW的理論效能比對手還好,但是實際效能卻不是這麼回事,這也加速AMD更改架構的決心。

Keyword:Ray Tracing(光線追蹤)

AMD HD 7970 之 GCN 架構完全解析,帶來 GPU 革命

▲Ray Tracing稱為光線追蹤,是幾何光學的一項技術。它會計算光線經過物體時的折射與反射,讓物體的光線質感更逼真。目前3D模組也有應用光線追蹤技術讓影像更逼真,然而此技術需要大量的運算效能,即便用高階顯卡在轉換時仍稱不上流暢,但勢必會成為未來遊戲的發展方向之一。圖中的車輛就是透過光線追蹤技術而來,車輛板金上的光影十分逼真。

(後面還有MIMD運算架構)

魯蛇實驗室
作者

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

使用 Facebook 留言
036a5697218da19bc678160938417d48?size=48&default=wavatar
2.  Ed (發表於 2012年1月30日 14:35)
建議這種電腦結構的介紹文章可以減少縮寫或特殊名詞的使用,因為在這些元件/名詞有些並不是文章中的主角,甚至只是稍微提到而已,但卻可能會使閱讀短暫中斷(因為無法理解內容)。

其實現在很多新名詞都是廠商創造出來的商業口號,有些時候拿起書本翻一翻,會突然發現,"咦,這根本就是最近在推的XX嘛"。

個人認為,可以記得住各種電腦名詞用語固然有趣,但最有趣的還是當你看到隱藏在這詭異詞語之後的美麗原理,恍然大悟的那一刻。

所以,電腦王要不要從電腦圖學開始介紹啊?(逃)
Shinwill
4.  Shinwill (發表於 2012年1月30日 16:22)
夠專業的好文章 !!
就是要到這種程度才是T客邦應該要有的水準 <( ̄︶ ̄)>
收藏了~~~~
A0ed2e1e9af88778b2d17b10b90cf471?size=48&default=wavatar
8.  halien (發表於 2012年1月30日 19:41)
VLIW跟SIMD八竿子打不著,你的計算機結構該重修了.
546cac667d5d492896df1aa9f732fc71?size=48&default=wavatar
10.  pppee (發表於 2012年1月31日 07:53)
※ 引述《halien》的留言:
> VLIW跟SIMD八竿子打不著,你的計算機結構該重修了.
>
我到覺得你國文閱讀能力才應該加強
A0ed2e1e9af88778b2d17b10b90cf471?size=48&default=wavatar
11.  halien (發表於 2012年1月31日 13:58)
※ 引述《pppee》的留言:
> ※ 引述《halien》的留言:
> > VLIW跟SIMD八竿子打不著,你的計算機結構該重修了.
> >
> 我到覺得你國文閱讀能力才應該加強
讓我們重看一遍原文:
===
AMD則以R600為主,使用的是SIMD(Single Instruction Multiple Data,單指令流多數據流)的4D+1D向量(Vector)架構,也就是VLIW(Very Long Instruction Word,超長指令集)體系
===
請問這位計算機結構大師, 哪一本計算機結構的教科書教你SIMD是VLIW的體系?
陳茗豪
12.  陳茗豪 (發表於 2012年9月10日 21:23)
"AMD則以R600為主,使用的是SIMD(Single Instruction Multiple Data,單指令流多數據流)的4D+1D向量(Vector)架構,也就是VLIW(Very Long Instruction Word,超長指令集)體系"
這句話的確有待商榷..SIMD.與VLIW本質上是不能混為一談的
但也不至於八竿子打不著關係..一直以來..對於提升處理器性能
大致上朝向兩個方向發展..
1.透過製程精進.將電子元件的體積規模不斷微縮.在有限面積裡能集成更多的電路元件.增加處理器晶片更多的功能性單元.也減少了電子元件工作時所產生的廢熱.可以讓處理器平穩運行於更高的時脈設定.
2.平行運算:平行運算其實也可以算是由精進製程所衍生的
相對於提升時脈是讓處理器能在更短的時間完成一項工作(降低CPI)平行運算則是在同樣的時間裡完成更多的工作(提升IPC)由於處理器能夠集成更多的IC電路.將這些增加的電晶體用在提升效能的刀口上.正是平行運算的思維.而SIMD與VLIW都是基於平行運算而生的架構
平行運算大致可分為時間平行與空間平行兩個主軸..由這兩項主軸對於不同層級運算瓶頸增加硬體運算單元.從而使效能得到提升.這種"哪裡癢,抓哪裡"直覺式思維..說來簡單..做來卻不容易
每個架構都有其優點..當然不免也有"力有未逮"的缺憾..
SIMD的作法是以一組控制器加上多組平行處理微元.能夠同時的處理多筆的資料.很明顯屬於空間平行而就程式的運行層級來區分是屬於資料平行..這種架構的優勢在於不需要增加許多複雜的電路結構.就能夠達到加速運算的結果.能夠取得最佳指令執行效率.不過只能適用於指令所處理的資料都具備同樣的性質而且之間不存在相依關聯性一般來說..只有影像等多媒體程式才具備這樣的性質所以在應用上有其侷限
至於VLIW的作法是將多個短指令結合成一串長指令執行..相當於處理器核心同時執行多個指令..屬於時間並行而就運算層級區分
則是指令級並行.不能避免的VLIW也有指令依存的頭疼問題
指令能不能並行是最重要的障礙..相較於管線化技術把指令依存的交由硬體管線判斷.指令在解碼後會在經過分派決定那些任務可以同時執行.但這增加硬體結構設計的複雜度.'當然開發成本也因此提高.VLIW則是以另一種方式因應..一開始在短指令組成長指令串時就已經將不能並行的指令排除處理器核心就無需顧慮是否有依存的指令只要傻傻地運算就輸出效率來說肯定是會提高.不過
並不是指令依存的障礙就此消失.由於一開始指令編譯時就得避免將無法並行的指令排除..代表指令執行的分派重任得由編譯器一肩扛起..所以開發編譯器的複雜度自然提高..除此之外..VLIW架構還有相容性的問題.編譯器只能適用於特定架構也就是說VLIW4的編譯器無法用於VLIW5..而能夠有效調度這麼多平行指令的任何編譯器都將是十分複雜而且難以編寫..加上VLIW編譯軟體絕大部份要比它所控制的硬體落後.都是VLIW架構目前所遭遇到的責難另外運行過程中無法隨時改變指令執行條件使得VLIW僅能在圖像處理技術中發揮所長所以一般使用VLIW架構的多為DSP
嵌入式晶片
發表回應
謹慎發言,尊重彼此。按此展開留言規則