Computex泄密 獨家解析AMD下代GPU架構(gòu)
● NVIDIA用幾何處理能力激怒AMD
相對于圖形渲染能力(Rendering),幾何能力(Geometry)在過去沒有引起人們的足夠重視。而NVIDIA設(shè)計的Fermi架構(gòu)則重點強調(diào)幾何處理能力,這個設(shè)計方向非常吻合DirectX 11提出的要求,也增強了畫面的真實感??梢哉f幾何能力(Geometry)的飛速提升,是GPU光柵化發(fā)展歷程中的重要一步。
在本次Computex電腦展之前,NVIDIA已經(jīng)發(fā)布了Fermi架構(gòu)的GTX400系列產(chǎn)品,而在Computex電腦展開幕當天,基于Fermi架構(gòu)的GTX465產(chǎn)品也亮麗登場。NVIDIA稱Fermi GF100是一個全新架構(gòu),不但是通用計算方面,游戲方面它也發(fā)生了翻天覆地的變化,幾乎每一個原有模塊都進行了重組。特別是還有新增的光柵引擎(Raster Engine)和多形體引擎(PolyMorph Engine),這兩個概念的提出,為GPU的幾何處理能力打下堅實基礎(chǔ)。
在過去的幾年中,確切說是從Geforce 5800到Geforce GT200的這幾年間,GPU的著色器Shader計算能力提升了150倍,這幾乎全部是因為大量的頂點和像素處理壓力所致。而游戲開發(fā)商大都喜歡已經(jīng)烘焙好的材質(zhì)不愿意也沒有考慮過使用更為真實自由的材質(zhì)。
正是在這種思路的指導(dǎo)下,GPU的幾何處理能力發(fā)展緩慢,在著色器Shader計算能力迅猛提升的前提下,幾何處理能力只提升了3倍。并且負責幾何處理的GPU單元基本上沒有發(fā)生什么變化,完全是依賴規(guī)模的堆積和頻率的提升來被動提高性能。
Fermi架構(gòu)擁有數(shù)量龐大的曲面細分單元(Tessellator)
Fermi架構(gòu)的多形體引擎則要負責頂點拾取(Vertex Fetch)、曲面細分(Tessellation)、視口轉(zhuǎn)換(Viewport Transform)、屬性設(shè)定(Attribute Setup)、流輸出(Stream Output)等五個方面的處理工作,DX11中最大的變化之一曲面細分單元(Tessellator)就在這里。Fermi GF100產(chǎn)品中有16個多形體引擎,每個SM一個,或者說每個GPC擁有四個。
代號Cypress的AMD HD5000系列只有1個曲面細分單元(Tessellator)
代號Cypress的AMD HD5000系列是全球首款支持DirectX 11特效的GPU,它繼承了R600架構(gòu)高效的VLIW組織形式SIMD結(jié)構(gòu)流處理器單元,又繼承了RV770以來的RBE后端渲染單元改進,同時結(jié)合TSMC 40nm工藝,將性能和功耗完美匹配,但是在光環(huán)的背后,一直隱藏著AMD的憂慮,那就是作為Direct X11關(guān)鍵技術(shù)支撐的曲面細分單元。
最終我們看到,基于Fermi架構(gòu)的GTX480產(chǎn)品,擁有15個曲面細分單元(Tessellator),而AMD的頂級單卡HD5870,只有1個曲面細分單元。同時從最高端的HD5870到最低端的HD5450芯片,曲面細分單元(Tessellator)的數(shù)量都只有一個,其運算能力只是有工作頻率決定的。這是一種非常不合理的架構(gòu)設(shè)計。AMD下一代“Southern Island”(中文名“南島”)架構(gòu)正在尋求這個層面的突破。#p#page_title#e#
● R600以來的著色器結(jié)構(gòu)與資源追加
SIMD結(jié)構(gòu)ALU單元用作GPU著色器從提出直到現(xiàn)在,已經(jīng)在GPU設(shè)計中被沿用了10年。AMD所使用的SIMD結(jié)構(gòu)流處理器,具有非常明顯的優(yōu)勢就是執(zhí)行全4D指令時簡潔高效,對晶體管的需求量更小。
而NVIDIA為了達到MIMD流處理器設(shè)計,消耗了太多晶體管資源,同時促使NVIDIA大量花費晶體管的還有龐大的線程仲裁機制、端口、緩存和寄存器等等周邊資源。NVIDIA為了TLP(線程并行度)付出了太多的代價,而這一切代價,都是為了GPU能更好地運行在各種復(fù)雜環(huán)境下。
ImpressWatch繪制的解析流處理器結(jié)構(gòu)
但是業(yè)界普通的共識是SIMD結(jié)構(gòu)的流處理器設(shè)計能夠有效降低晶體管使用量,特別是在已經(jīng)設(shè)計好的架構(gòu)中擴展流處理器數(shù)量的難度,比起MIMD結(jié)構(gòu)要容易很多。
對比R600和G80架構(gòu)可知,4個1D標量ALU和1個4D矢量ALU的理論運算能力是相當?shù)模乔罢咝枰?個指令發(fā)射端和4個控制單元,而后者只需要1個,如此一來MIMD架構(gòu)所占用的晶體管數(shù)將遠大于SIMD架構(gòu)。
AMD的GPU產(chǎn)品在特定測試中遙遙領(lǐng)先
回顧AMD在統(tǒng)一渲染時代做出的努力,我們能夠感覺到從R600到R800時代,AMD在試圖通過不斷堆砌SIMD結(jié)構(gòu)的ALU運算器以提升性能,這是一個簡單而粗暴的真理。由于R600-R800的US是分“1大4小”,即一個全功能SP單元和4個僅能執(zhí)行乘加運算而無法執(zhí)行連乘運算的部分功能SP。所以在上圖測試的Float 5指令中,由于數(shù)據(jù)類型符合其流處理器結(jié)構(gòu),AMD的GPU設(shè)計發(fā)揮出了理論應(yīng)有的最高性能。
R600為每個US配備了1個發(fā)射端,所以如果要保證指令吞吐不受限制就通過VLIW,也就是超長指令打包的形式將若干個短指令打包在一起。在US結(jié)構(gòu)方面,從R600到R800幾乎沒有任何變化,我們所看到的性能提升,是因為周邊資源放大之后R800比RV770或者說比R600更好的通過cache機制來掩蓋延遲造成的損失。
RV870,基本上應(yīng)該就是RV770+DX11強制的硬件IC(曲面細分單元),不僅R600的構(gòu)架完全沒變,而且其周邊資源,尤其是Sram和寄存器資源理論上并沒有得到本質(zhì)性的強化。但是借由40nm工藝所帶來的頻率提升,以及長時間在RV770中的積累所帶來的寄存器和Sram時序的調(diào)整以及調(diào)度模式的轉(zhuǎn)變,HD5870獲得了非常理想的性能提升。
要想改進AMD目前的流處理器結(jié)構(gòu),在HD6000系列中幾乎已經(jīng)沒有可能,也就是說從某種程度上來講,HD6000仍然基于HD2000以來的架構(gòu)基礎(chǔ)。特別是用VLIW技術(shù)所組織的流處理器結(jié)構(gòu)這一點不會發(fā)生改變,因為AMD一旦轉(zhuǎn)變設(shè)計方向,現(xiàn)在建立起來的一切性能領(lǐng)先優(yōu)勢可能不復(fù)存在。#p#page_title#e#
● 繼續(xù)用固定硬件單元實現(xiàn)特殊功能
計算機體系結(jié)構(gòu)的基本原理是,任何軟件能夠?qū)崿F(xiàn)的,硬件都能夠?qū)崿F(xiàn),相反也成立,這被成為硬件軟件等效原理。這一原理只是功能等效,性能來說,良好優(yōu)化和設(shè)計的硬件通常要比同樣水平的軟件快很多,同樣,開發(fā)周期長,開發(fā)的成本,也要高不少,體系結(jié)構(gòu)研究的重點就是從需要出發(fā),尋求最佳的軟硬件平衡點,在一定的成本約束下,獲得最高的性能。
GPU中也是一樣,在目前統(tǒng)一渲染成為主題的今天,統(tǒng)一渲染著色器(Unified Shader)和固定功能單元(Fixed Function)是配合的,當我們重點看SP規(guī)模的時候,其實GPU性能的很大程度是由固定功能單元來完成的。
從固定功能單元的發(fā)展歷程來看,在一項新技術(shù)最初被提出時,一般廠商都希望使用一個特定的硬件IC去實現(xiàn)這項技術(shù)。而在這項技術(shù)經(jīng)歷一段時間之后,特定功能單元一般都會被大規(guī)模的可編程單元替代,尤其是在GPU的發(fā)展歷程中非常普遍。
比如說當年的T&L技術(shù)最初是由特定硬件完成的,后來逐漸被替代。頂點、像素、幾何三項著色工作在DirectX10出現(xiàn)之前也是由各自對應(yīng)的著色器來負責的,但是統(tǒng)一渲染架構(gòu)提出之后它們被統(tǒng)一渲染著色器替代。
Intel也知道這條道理,它認為固定渲染單元最終可以被Shader指令替換,Shader指令也可以由x86擴充指令替換。所以Larrabee簡單而又龐大的架構(gòu)運用而生。實際上整個IC設(shè)計領(lǐng)域都在實現(xiàn)“去功能化”這個方向,所有人都明白添加固定功能單元換取性能提升不是長久之計。
在5月28日我們對NVIDIA首席執(zhí)行官黃仁勛先生的專訪中,黃先生贊成不斷增強曲面細分能力,但是這種能力的增強,依靠的是使用固定功能單元或者說特定硬件IC,實際上也就是曲面細分單元(Tessellator)。
黃仁勛先生向我們解釋到,在考慮每瓦特性能的今天,追求性能的提升必須要衡量其他因素的影響以及控制這種影響,特別是用戶最為關(guān)注的功耗問題。圖形渲染能力(Rendering)和幾何能力(Geometry)是目前GPU最為主要的兩個發(fā)展方向,這兩個方向所需要的硬件是不同的。
曲面細分性能或者說業(yè)界對曲面細分的依賴,再次造就出獨立的Tessellation單元。當然雖然它不太符合通用處理單元的發(fā)展方向,但是如果計算晶體管的投入與性能回報,特定硬件實現(xiàn)Tessellation功能是目前最好的選擇。所以黃仁勛先生堅持以增添特定硬件IC的方式來提升GPU幾何處理能力。#p#page_title#e#
● AMD意識到RV870架構(gòu)的不足
AMD下一代GPU代號為“Southern Island”,中文名為南島。作為ATI即將發(fā)布的顯示芯片,南島有可能將在溫哥華流片。ATI下一代GPU南島系列名字在溫哥華遭泄露。這些名字將由 Whistler-Blackcomb, Robson and Seymour為我們帶來。這些名字自從南島命名出來后就已經(jīng)在暗地流傳。當然以上關(guān)于芯片名稱的解說大家只能參考,同時這也不是我們分析的重點。
“南島”在發(fā)布之前,已經(jīng)透露出了一些非常令人欣喜的特性。其中最為顯著的就是增強了DirectX 11最為重要的曲面細分(Tessellation)性能。實際上2009年9月ATI全球首發(fā)了第一款DirectX 11顯卡HD5870之后,其DirectX 11的支持力度和架構(gòu)改進幅度一直是行業(yè)內(nèi)關(guān)注的重點。
ATI公布的DirectX 11 Tessellation特性
本次“南島”仍然沒有更新R600以來的US結(jié)構(gòu),而目前我們所得到的“南島”的DirectX 11性能將在相同規(guī)模流處理器下超越自家HD5000產(chǎn)品,據(jù)此我們推測“南島”架構(gòu)增強了Tessellation能力。
Tessellation又可譯作拆嵌式細分曲面技術(shù)。其實這是ATI早在其第一代DirectX 10圖形核心R600,即HD2900XT上就引入的一個特殊的計算模塊。從HD2000系列開始,直到最新的HD5000系列,4代顯卡全部支持這一技術(shù)。
其中HD2000到HD4000系列都是使用了ATI獨有的硬件模塊來支持這一技術(shù)。從DirectX 11開始,微軟對這項技術(shù)進行了優(yōu)化,使之能與渲染流程完美的結(jié)合在一起,可以更高效率的細分出更多的多邊形和曲面。
上圖就是AMD目前的頂級產(chǎn)品HD5870架構(gòu)圖(代號RV870),這張圖片由ENET網(wǎng)站Cloud編輯繪制。我們可以看到在現(xiàn)在的RV870架構(gòu)中,微軟引入了可編程曲面細分管線。在最新Shader Model 5.0標準中,增加了Hull Shader、Compute Shader、Domain Shader三種新的Shade,它們的出現(xiàn)都是為了完善曲面細分管線,分別位于鑲嵌器的前后。#p#page_title#e#
● “南島”架構(gòu)重點加強曲面細分
我們根據(jù)各方面的情報綜合考慮,“Southern Island”(“南島”)還是延續(xù)R600架構(gòu),但是把曲面細分單元(Tessellator)放在VLIW Core中,這是一次非常難得的改進。但同時這也是南島的極限。因為要把固定功能單元要掛到VLIW Core中,就要有獨立的總線連接、獨立的資源、寄存器、端口,也就是說獨立的線程仲裁分配能力。
在VLIW Core中實現(xiàn)獨立仲裁分配能力,是AMD一直希望在GPU中做到的,如果能做到這一點,那AMD或許能夠借此實現(xiàn)更深級別的亂序執(zhí)行,這基本上就和NVIDIA站在同一起跑線。同時如果把曲面細分單元(Tessellator)放在VLIW Core中,曲面細分能力將伴隨芯片規(guī)模而變化,高中低端顯卡將擁有各自不同的曲面細分能力。這和NVIDIA將曲面細分單元(Tessellator)放在SM中是一個道理。
如果南島無法一次性將曲面細分單元(Tessellator)放在VLIW Core中,可以選擇另外一種途徑,那就是對GPU內(nèi)部單元進行分頻。正如NVIDIA將CUDA Cores的頻率以兩倍于固定單元頻率運行一樣,AMD可以選擇將幾何性能較弱的Setup Engine和Tessellator等單元按一定幅度提升頻率。
或者將GPU的前端超線程發(fā)送器(Ultra Threaded Dispatch Processor)整體頻率提升,這樣曲面細分單元自然也會受益,同時GPU的幾何處理能力會得到線性增強。
但是也有一種說法認為AMD沒有能力在HD6000芯片的VLIW Core級別中添加更多的essellator單元,因為線程仲裁能力背后的設(shè)計還很復(fù)雜,比如足夠的掛起空間。仲裁器本身沒多少晶體管,這種資源基本上都是LDS,寄存器也是。所以R800使用了搶占式多線程,但是速度和效率還是得不到保障。
另一種猜想已經(jīng)被我們否定,那就是在現(xiàn)有的前端超線程發(fā)送器(Ultra Threaded Dispatch Processor)中添加一個曲面細分單元(Tessellator)。因為這需要兩套獨立的crossbar,以及在VLIW Core外設(shè)置獨立的出口,最后還要設(shè)置搶占式多線程分配單元。
所以我們可能看到HD6000系列在流處理器規(guī)模與HD5000系列相同的情況下,在Direct X 10和Direct X 9性能方面落后于HD5000,但是由于幾何能力的提升,在Direct X 11方面,會有較為出色的表現(xiàn)。這一點和Fermi架構(gòu)的設(shè)計思路是非常接近的。#p#page_title#e#
● AMD南島架構(gòu)能否改善運算效率
Compute Shader技術(shù)是微軟DirectX 11 API新加入的特性,在Compute Shader的幫助下,程序員可直接將GPU作為并行處理器加以利用,GPU將不僅具有3D渲染能力,也具有其他的運算能力,也就是我們說的GPGPU的概念和物理加速運算。多線程處理技術(shù)使游戲更好地利用系統(tǒng)的多個核心。
Computer Shader的初衷,就是使用通用計算的手段來進行后處理。由于GPU的浮點運算能力非常強大,支持GPU進行通用計算的技術(shù)發(fā)展勢頭很快,NVIDIA和AMD分別有CUDA和Stream技術(shù),以前兩家是各自為戰(zhàn),如今微軟也看到了GPU通用計算的曙光,在DX11中加入了Compute Shader這一技術(shù),意在統(tǒng)一當前的通用計算技術(shù)。你可以認為Compute Shader標準就是微軟提出的OPEN CL。
關(guān)于A卡和N卡在OPEN CL計算方面的性能差異,很多媒體進行過測試,但大家實際上一直在找一個合適的平臺,在找一套合適的測試基準程序。目前,首款國人開發(fā)的支持GPU的OpenCL通用計算測試程序OpenCL General Purpose Computing Benchmark (簡稱GPC BenchMark OCL)已經(jīng)公開并且升級到1.1版本。中關(guān)村在線顯卡頻道決定使用這款軟件,對AMD和NVIDIA的架構(gòu)特性做一些對比,以測試它們在哪些環(huán)境中能發(fā)揮出更好的理論性能。
分析上圖得到的測試數(shù)據(jù)我們可知,在純吞吐環(huán)境中,AMD延續(xù)了R600架構(gòu)以來的特性,其浮點吞吐量的優(yōu)勢得以體現(xiàn)。特別是浮點運算(單精度)測試中,HD5870壓制了強大的Fermi架構(gòu)GTX480。在密碼學(xué)測試中,因為很少牽扯到計算層面,GPU只是不斷隨即生成數(shù)據(jù)然后去試探,所以A卡理論吞吐量高的特性再次得到體現(xiàn)。
但是只要涉及到常規(guī)數(shù)學(xué)方法測試,這種實際運算環(huán)境中將會包含大量跳轉(zhuǎn)嵌套分支等指令,只有運算器組織得當?shù)腉PU,才能有效避免理論值的大幅度衰減。A卡因為其架構(gòu)設(shè)計原因,大幅度落后于Fermi架構(gòu)。
其中HD5870落后最為明顯的圖像處理,包括亮度直方圖繪制、2維卷積(銳化)、快速非局部均值法降噪、圖片縮放(雙立方濾波)。這項測試主要考量GPU的全局存儲器和紋理訪問能力,同時局部存儲器原子操作也占到一定比重,所以架構(gòu)較新的Fermi系列產(chǎn)品表現(xiàn)優(yōu)異。
Computer Shader里同樣有大量的常規(guī)數(shù)學(xué)方法。只要和“常規(guī)數(shù)學(xué)方法”有所接觸,A卡就會因為架構(gòu)設(shè)計受到很大影響。其中矩陣,卷積,離散余弦和反余弦等用的相對比較多。
實際上超標量結(jié)構(gòu)本身并沒什么不好或者說落后,但是要讓超標量兼顧吞吐和靈活性,外圍的要求就高了。VLIW Cores必須加入更多資源和仲裁能力,晶體管數(shù)量會因此提高很多。
Computer Shader在圖形計算中發(fā)揮重要作用
在上圖中,圖一表示了Compute Shader做圖像后處理(Post Process),圖片是《地鐵2033》的游戲截圖,利用Compute Shader技術(shù)做景深處理可以得到更好的效率。圖二表示利用Compute Shader技術(shù)做IA人工智能。圖三表示CUDA或者未來的Compute Shader結(jié)合OptiX技術(shù)做光線追蹤。圖四表示SPH流體模擬,流體的模擬,是典型的通用計算應(yīng)用實例,對Shader性能要求較高。
Compute Shader可發(fā)揮的地方很多,游戲中可以使用GPU進行光線追蹤、A-Buffer采樣抗鋸齒、物理特效、人工智能AI等游戲特效運算。在游戲之外,程序員也可以利用CS架構(gòu)進行圖像處理、后處理(Post Process)等。
在硬件支持Compute Shader之后,相應(yīng)的硬件必須要比當代硬件更加靈活,因為在運行CS代碼的時候,硬件必須支持隨機讀寫、不規(guī)則列陣(而不是簡單的流體或者固定大小的2D列陣)、多重輸出、可根據(jù)程序員的需要直接調(diào)用個別或多個線程、32k大小的共享寄存空間和線程組管理系統(tǒng)、粒數(shù)據(jù)指令集、同步建構(gòu)以及可執(zhí)行無序IO運算的能力。
實際上AMD也看清了GPU未來發(fā)展的實質(zhì),首先在RV770中加入LDS存儲器,然后在RV870中對LDS的可操作性的改進,以及shared Memory的擴展,都是面向通用計算設(shè)計的?;蛘哒f,是為了Compute Shader而不得不做的事情。
我們推測在即將發(fā)布的AMD下一代GPU也就是HD6000系列“Southern Island”(“南島”)架構(gòu)中,幾何計算能力層面的突破可以依靠增加曲面細分單元(Tessellator)來實現(xiàn),但是Compute Shader計算效率的提升的重任,將落在未來的架構(gòu)身上。
無論如何,“南島”將走出AMD改革的重要一步,如果能借助自從RV770以來在產(chǎn)品方面的轉(zhuǎn)變,AMD或許能夠用自己的思路來提升GPU的運算能力。
屆時我們將看到GPU越來越通用化,其分支處理能力更加強大,運算精度不斷提升。未來的CPU則越來越注重多線程能力,以此鞏固自己在并行計算領(lǐng)域的優(yōu)勢,我們將在未來看到兩種不同的芯片向自己所沒有觸及過的領(lǐng)域發(fā)展。