外设堂

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
外设堂 首页 业界动态 图形 查看内容

GPU发展简史 NVIDIA从Fermi到Maxwell

2014-4-26 02:42| 发布者: admin| 查看: 3804| 评论: 3|来自: techbang

摘要: 非常可惜大家無緣見到Kepler中低階顯卡了,因為從GTX 750 Ti以下將會是新架構Maxwell的天下。Maxwell插隊的原因是什麼我們不知道,但這已經打破過去2代換架構的規律。至於說好的Unified Virtual Memory(統一虛擬記 ...

非常可惜大家無緣見到Kepler中低階顯卡了,因為從GTX 750 Ti以下將會是新架構Maxwell的天下。Maxwell插隊的原因是什麼我們不知道,但這已經打破過去2代換架構的規律。至於說好的Unified Virtual Memory(統一虛擬記憶體,簡稱UVM)功能呢?或許在完整版Maxwwell架構的GTX 800系列才能看到。

新架構首重效率

效率應該是現在各家廠商著重的重點,而這次Maxwell架構也是頂著「效率」的光環而來。這效率不僅代表著效能的提升,更代表電力消耗的降低。根據Maxwell架構白皮書所提供的數據,GTX 750 Ti擁有接近數年前卡王GTX 480的效能表現,且電力消耗更低於採用40nm製程的GF 100核心。那如何提升運算效率?更換製程或許是個方式,但這次NVIDIA使用的方式為重新設計架構,或者說是重新排列讓管線最佳化。

關鍵字:James Clerk Maxwell

Maxwell是英國物理學家,主要貢獻於電磁學領域,建立了Maxwell's equations(馬克士威方程組)。NVIDIA自從GTX 400系列之後,歷代核心代號皆以科學家為主。GTX 400系列核心代號是Fermi(費米)、GTX 600則是Kepler(克卜勒),而在Maxwell之後的則是義大利物理學家Volta(伏打)。圖片來源:Wikipedia

從Fermi到Maxwell的架構轉變

歷經2代Fermi、2代Kepler,到現在的Maxwell架構,從GPU構成方面來說,其實並沒有太大的變動。差別在於製程與電路的精進,並且改善溫控效率,在核心當中塞入更多的核心也就是CUDA Core。而CUDA Core又是GPU構成的最基本運算單位,理論上CUDA Core的數量會與效能成正比。那CUDA Core前身又是什麼?讓我們稍微服務一下新讀者,回頭溫習一下近10年的Shader(著色引擎)演進,再來探討Maxwell架構的改變。

GPU提供T&L功能

我們不用回顧到太久之前,從現在還可見的DirectX 9時代前面一些說起。早期遊戲與顯示卡還沒這麼複雜,主要負責的工作就是處理幾何圖形的變換,還有光線的渲染。當時遊戲影像生成的4個步驟,相信老玩家應該都有印象,那就是Transform(座標轉換)、Lighting(光線投影)、Triangle Setup(三角形設定),以及最後的Rendering(渲染)。

這些步驟當中,Transform與Lighting是由CPU負責,經常會將兩者簡稱為T&L。後來NVIDIA先將T&L加入到GPU功能當中,此後CPU就不需要負責這工作,也減輕遊戲對於CPU效能的需求。也就是因為GPU取代了CPU的T&L功能,這也讓T&L成為當時顯卡的規格指標之一。看哪張卡的T&L管線較多,自然能有較佳的效能。此時NVIDIA代表的顯卡為GeForce 256與GeForce 2 MX,其中GeForce 256是前幾張導入T&L功能的顯卡,但這不是最成功的,最成功的是以低價打入市場的GeForce 2 MX。

DirectX 10大一統時代

說完T&L,再來說說3D模組。直到DirectX 9末期以前,顯示卡架構中最重要的2個基本單元就是Vertex Shader(頂點著色引擎,簡稱VS)與Pixel Shader (像素著色引擎,簡稱PS)。看名字大概也了解它們的作用是什麼,重點要知道的是,Vertex Shader與Pixel Shader只能負責GPU賦予它的作用,Vertex Shader不能處理Pixel Shader的工作,反之亦然。這樣不是很沒有效率嗎?如果能互相幫忙是不是更好?是的,微軟想到解決方案。

在DirectX 10中,微軟取消了Vertex Shader與Pixel Shader,取而代之的是效率更高的Unified Shader(統一著色引擎)。換個名字大家可能更清楚,那就是Stream Processor(串流處理器,簡稱SP)。AMD與NVIDIA對於Stream Processor的稱呼變來變去,AMD大多簡稱為SP,或者是ALU(Arithmetic Logic Unit,算數邏輯單元)。至於NVIDIA則在Fermi之後統一將SP稱為CUDA Core而沿用至今。 

關鍵字:CUDA

CUDA是Compute Unified Device Architecture的縮寫,中文為統一計算架構,是NVIDIA推行的GPGPU技術。可使用GeForce 8系列之後的顯卡進行運算,相容於OpenCL以及自家的C-編譯器。自從Fermi架構推出後,以往通稱的SP全都改為CUDA Core。

Fermi:DX 11、高速運算的起點

若要談這次的Maxwell架構,得先從首度支援DirectX 11的Fermi架構說起,會讓人更容易了解。核心代號中的GF、GK乃至於現在的GM,其中的F、K、M代表的即為Fermi、Kepler與Maxwell。三者的設計雖有差異,但大致上仍有相當大的共通性,因此我們先從最初的Fermi開始看起。

遊戲是運算的延伸

從G80時代開始,NVIDIA就開始GPGPU(General-purpose computing on graphics processing units,通用繪圖處理器)的大型計畫,試圖利用平行運算搶攻高速運算領域。到了Fermi架構,重視平行運算的特色就更加明顯,且結合GT200與G80等老前輩的特色,核心架構可支援運算與遊戲。當時Fermi首度支援ECC(Error Correction Code),對於雙精度、快取等方面都有相當的進步。這些功能在現在的GPU或許已經習以為常,但對於10~20年前的GPU可是發展初期而已,而Fermi算是NVIDIA可以拿出檯面且有實質運算效能的代表產品。

基本構成第三代SM

先前提過SP也就是NVIDIA所謂的CUDA Core,是架構當中最基本的運算單元。那麼由CUDA Core與眾多元件組成的SM(Streaming Multiprocessor),則是GPU的基本運算區塊,內含SFU(Special Function Unit,特殊運算單元)、Instruction Cache、Warp Scheduler等元件。從Fermi到Maxwell的GPU架構,大多也是在SM當中做結構調整,不外乎是堆疊CUDA Core等元件數量,藉此提升運算效能。

Fermi所採用的第三代SM,現在看起來結構非常陽春,GF 100核心使用的SM內含32個CUDA Core而已,Kepler則是192個,到了Maxwell則是調整為128個。看似Maxwell的SM內藏CUDA Core數量較少,但L2容量從256KB提升到2MB,加上一些架構上的最佳化,單位效能才得以提升。

第三代SM單元基本架構

▲Fermi時期稱為SM,Kepler稱為SMX,到了Maxwell改名成SMM,但都是相同的東西。LD/ST指的是存(Load)取(Store)單元,SM內含16組代表周期內可執行16個執行緒。此外CUDA Core內亦有更小的元件,像是FP Unit(浮點數單元)等。 

PolyMorph處理Tessellation

說到Fermi就不能不提到PolyMorph Engine(多形體引擎),它是Fermi新增的硬體元件,附屬於SM當中,是專為DirectX 11設計的硬體架構。架構圖中可看到它位於SM底端,內含Vertex Fetch(頂點預取)、Tessellator(Tessellation產生器)、Viewport Transform(視口轉換)、Attribute Setup(屬性建立)與Stream Output(數據流輸出)等功能。PolyMorph Engine從Fermi到Kepler沒有太大的改變,但名稱改為PolyMorph Engine 2.0,Maxwell架構並未對於PolyMorph Engine多做著墨,應該仍延續Kepler的設計。

PolyMorph Engine運作時會先從緩衝區預取頂點,在SM內進行頂點與像素的運算,並且同時計算Tessellation參數,接著則是輸出Tessellation的頂點。確認後將資料傳送給Domain Shader(區域著色引擎,簡稱DS)跟Geometry Shader(幾何著色引擎,簡稱GS)運算。DS根據Hull Shader(外殼著色引擎,簡稱HS)加上Tessellator給予的數據,生成最終的3D模組頂點。完成本階段後後,會透過Displacement Mapping(位移貼圖),讓Tessellation生成的圖形表面更加立體與細緻。

至於Viewport Transform的作用,則是那字面上的視口轉換以及視角校正,完成後則是Attribute Setup,會將這些頂點參數轉換為方程式。最後Stream Output則是將這些數據傳送到記憶體內,接著讓SM之外的另一個單元Raster Engine來處理。

PolyMorph Engine功能

▲PolyMorph Engine是針對DirectX 11推出的新硬體架構,包含Vertex Fetch(頂點預取)、Tessellator(Tessellation產生器)、Viewport Transform(視口轉換)、Attribute Setup(屬性建立)與Stream Output(數據流輸出)。

Raster Engine負責2D化

Raster Engine簡單說就是負責將3D模組變成2D化,因為你看到的影像,並非實際的3D模組,而只是這3D模組的其中的某個「面」。Raster Engine的3個運作階段分別是Edge Setup(邊緣建立)、Rasterizer(光柵器)和Z-Cull(Z座標剔除)。可想像成窗外有顆樹,樹後有條被遮住的狗,雖說3D模組中狗是存在的,但受到視角的限制,從窗戶(螢幕)這角度來看狗是不存在的。Raster Engine則會將影像中看不見的部分去除,或者說是接近「平面化」。

在Fermi架構的GF 100核心中,共計有4組Raster Engine,Kepler架構的GK 104則也是4組Raster Engine。但因為Kepler的CUDA Core數量遠高於Fermi,因每組Raster Engine的負擔其實是提升的。至於Maxewll則因為目前只有中階的GM 107,無法得知高階版本的Raster Engine總數會是多少。但從目前知道的規格來看,GF 100的Raster Engine負擔128個CUDA Core的運算量,GK 104則是負擔384個,到了GM 107更是大幅增加到640個CUDA Core。雖然架構、製程等諸多因素無法直接比較,但可看到Raster Engine的負擔其實是增加的。

Raster Engine運作流程

▲Raster Engine的功能簡單來說就是3D變成2D,讓GPU產生的3D模組變成你看到螢幕上的2D影像。

負責排程的Warp Scheduler

GPU內的元件非常多,再講下去就沒完沒了,我們最後再講個重要的元件,那就是Warp Scheduler。字面上來看不難看出它是負責排程的單元,但排什麼東西的排程呢?原來CUDA Core會接受來自Warp Scheduler的指令,以便執行某個執行緒(Thread)。在Fermi當中每個SM內有2組Warp Scheduler,負責該SM內32個CUDA Core要處理的執行緒,而這些執行緒就是所謂的Warp。Warp Scheduler關係到運算效率,畢竟排程排的好,能高度利用GPU的運算能力,排的不好那就讓指令遲遲等,那效率就是場悲劇。

關鍵字:Tessellation

Tessellation原意是鑲嵌,大多翻譯為細分曲面(subdivision surface)、平面填充或密鋪。在支援DirectX 11的顯卡上,因為Tessellator而具備「無中生有」的能力,可讓原本的3D模組產生更多三角形。用白話來說就是一種讓多邊形細分為碎片的方法,藉此獲得更細緻的物體表面。

Fermi核心架構圖

從Fermi到Maxwell架構,GPU中基本元件都沒大幅度的改變,每次更新才會添加少量的新功能。架構改變時,最大的變化還是各元件的數量與排列,前者直接影響效能,後者則是可能影響到效率。 

大量CUDA Core配合Giga Thread快速轉換執行緒,運算效率高於傳統多核心CPU。即使到了Kepler、Maxwell時期,這個方向與架構仍未有改變,透過搭載更多的核心,運算效率可望向上提升。


Keper:28nm製程先行者

從Fermi接棒到Kepler,最明顯的規格差異就是製程從40nm提升到28nm,意即相同的面積內能塞下更多的電晶體。或是相同的電晶體數量,只需要更小的面積即可達到相同的效能。

取消Shader分頻機制

老玩家應該都知道NVIDIA的架構設計相當特別,Shader時脈不等於核心時脈。早在G71時期NVIDIA嘗試Shader分頻技術,當時Shader時脈僅比核心時脈(Core Clock)高出數10MHz,直到G80時期才徹底近入分頻時代,到了GT 200之後,核心、Shader時脈才將比例固定為1:2。如果安裝GPU-Z等軟體,可看到早期NVIDIA顯卡的Shader時脈,而現在沒了Shader時脈,但卻多了Boost時脈。

Shader分頻技術對當時NVIDIA好處是很明顯的,能夠以較少的運算資源換取大量的吞吐量。搭配Co-Issue技術,讓NVIDIA保住Shader運算量的底限。以至於G80甚至後期的GF 110,都能用較少的CUDA Core數量來取得運算上的抗衡能力。節省出來的電晶體,更可用來配置其他硬體單元,這些都是Shader分頻所帶來的優勢,但到了Kepler卻放棄這行之有年的設計,為什麼呢?

分頻設計好歸好,但是仍是雙面刃。這問題不難想像,主要是分頻後的Shader時脈過高,會提早壓迫到核心與技術所能承受的時脈上限,讓GPU的溫度與發展都受到限制。實際來說會造成核心發熱量不均,連帶影響其他元件的效能。且嚴重時會迫使其他硬體單元以較低的時脈運作,破壞整個GPU運算流水線的平衡。Kepler回歸同頻機制,也讓Kepler有較大的時脈提升空間,把核心時脈一舉突破1.0 GHz大關。

動態超頻的GPU Boost

相較於CPU有動態超頻的Turbo Boost等技術,NVIDA在Kepler時期也導入GPU Boost功能,而AMD陣營也有類似但不相同的技術,該技術名為Boost State。簡單來說,該技術會視運作環境的功耗、負載、時脈等參數,若在容許值範圍內,則會稍微再拉高時脈,藉此提升效能表現。可以想像成早期顯示卡在2D與3D模式下的時脈設計,但過程更為複雜且會即時、動態調整時脈。當然這一切都是自動在背景作業,你能變動的並不多,最多就是調整Power Target(目標功耗),讓顯卡的超頻空間更高,但仍有個上限並非無限提升。

核心大堆疊時代

相較於Fermi的CUDA Core數量,Kepler時代得益於製程,有爆發性的提升。比較GF 100、GF 110、GK 104、GK 110的CUDA Core數量,分別為480個、512個、1533個、2880個。不難看出Kepler時代的高階卡,CUDA Core數量遠高於Fermi時代。若未來Maxwell有機會使用20nm製程,或許這數字還會向上攀升,畢竟效能提升的最快方法,就是大量堆疊內容。當然,Kepler還有許多創新的功能,像是Adaptive VSync、TXAA等,但礙於篇幅有限,只能讓我們繼續看接下來的Maxwell。 

Kepler核心架構圖

比較前幾頁的Fermi,Kepler核心規模大得多。但基本構成單位CUDA Core沒改變,但SM內藏的數量與結構有大幅度的調整。此外,Kepler的PCI-E介面更改為3.0版本,也是此架構最大的特點。 

SMX架構圖

如果把Kepler核心的SMX放大,則會看到比Fermi更多的LD/ST存取單元,這也代表Kepler在單一周期處理的執行緒數量高於Fermi。

Maxwell:製程不變,效率取勝

終於來到了這次的主角Maxwell,Fermi帶來全新的PolyMorph Engine,Kepler藉由製程精進大幅堆疊CUDA Core數量,且取消了行之有年的Shader分頻機制。那麼Maxwell帶來什麼新的架構設計呢?有,那就是重新排列組合的SMM單元。

大量部署控制邏輯

SMM是什麼東西,原來就是Fermi時代的SM、Kepler時代的SMX,指的都是那由CUDA Core、PolyMorph Engine等單元構成的Streaming Multiprocessor,為了不讓。改名成SMM有什麼變化?簡單來說是將SMM單元內藏的CUDA Core數量微調,從192個降低到128個。其中SMM內分成4個小區塊,每個區塊內有獨立的控制邏輯(Control Logic),以往這些控制邏輯需要負責大量的CUDA Core,透過小區塊切割,根據官方數據每個CUDA Core效能約是先前的1.35倍,而每瓦的效能約是先前的2倍。

目前Maxwell架構的GPU只有GM 107這個型號,在GM 107當中共計有5個SMM組成1個GPC(Graphics Processing Cluster)。也因為GM 107並不像GK 104、GK110是高階核心,因此架構規模相對精簡。未來Maxwell若推出高階核心,像是GM 100就有可能搭載多個GPC,而這次的GM 107只是基本版Maxwell而已。

如果先翻下一章節的效能篇,可以看到Maxwell架構的確優於過去的同級產品,意即在效率方面的確有其出色之處。但若要說Maxwell在架構上有些什麼重大改變,若只從架構圖以及僅有的GM 107中階核心來看,的確沒有太大的改變。而2013年GTC曾公開的規劃上,2014年推出的Maxwell應搭載Unified Virtual Memory技術。但這次的產品上並無支援該功能,或許得真的要等到年中之後完整版才會看到。

GM 107只是個開始

通常新架構都能讓人感到驚喜,但這次NVIDIA改變以往的策略,並非從最高階的版本向下依序推出,而是從GTX 700系列中間殺出,讓人惋惜沒機會見到Kepler新一代的中階卡。至於新推出的Maxwell架構除最佳化外,看不太出來有太大幅度的變革,或許驚喜還在未來高階版本上。

Maxwell核心架構圖

畢竟是中階卡,GM 107的核心規模比不上Kepler那麼誇張。但從中不難看出,若未來高階版本推出,必然是這規模的2倍甚至4倍以上的規格。那時考驗的不僅是工藝技術,更會考驗散熱的設計能力。

SMM架構圖

從SM、SMX、SMM一路走來,內藏的單元種類變動量不大,大多是數量上的調整。這次SMM內被切割成4個子區塊,有助於提升單一CUDA Core的運算效率。

每次架構更新都會有主要的強化項目,但Maxwell這次受限於提早佈局,原先預定的Unified Virtual Memory並未有更進一步的說明。

近年GPU發展相對遲緩,除了堆疊架構增加效能之外,再來就是架構排列最佳化,讓運算效率藉此提升。

发表评论

最新评论

引用 D.kun`PaJero 2014-4-26 16:24
文字有点多,信息量有点大,看不懂
引用 教父 2014-4-26 13:30
受教了~
引用 26834351 2014-4-26 09:27
哇~看来有资金、有时间才有发展昂~

查看全部评论(3)

手机版|外设堂 ( 辽ICP备13014379号 )辽公网安备 21010202000549号

GMT+8, 2024-5-20 17:31 , Processed in 0.066747 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部