對于GPU愛好者來說,這是一個漫長的等待。 NVIDIA將Turing產品線維持了兩年,然后在2020年9月用Ampere取代了它。AMD更友善一點,他們的新設計間隔了15個月,但大多數人對此并不感興趣。
他們希望看到的是AMD推出一款高端機型,與NVIDIA(NVIDIA)最優(yōu)秀的產品展開正面競爭。他們做到了,現(xiàn)在我們已經看到了結果,在花錢買最好的圖形卡時,PC游戲玩家現(xiàn)在(在理論上)有了很多選擇。
但是驅動它們的芯片呢?其中一個從根本上來說比另一個好嗎?繼續(xù)讀下去,看看Ampere和RDNA 2是如何決一死戰(zhàn)的!
NVIDIA衰退,AMD成長
節(jié)點和die尺寸
多年來,高端GPU一直比 CPU大得多,而且它們的尺寸一直在穩(wěn)步增長。AMD最新推出的Navi芯片面積約為520mm2,是之前Navi芯片的兩倍多。不過,這并不是他們最大的——這項榮譽頒給了他們的Instinct MI100加速器(約750 mm2)中的GPU。
上一次AMD制造的接近Navi 21大小的游戲處理器是為Radeon R9 Fury和Nano顯卡設計的,這兩款產品在Fiji 芯片上采用了GCN 3.0架構。它的裸片面積為596 mm2,但它是在臺積電的28HP工藝節(jié)點上生產的。
自2018年以來,AMD一直在使用臺積電更小的N7工藝,該生產線生產的最大芯片是Vega 20 (Radeon VII),面積為331mm2。他們所有的Navi GPU都是在略微升級的N7P處理器上制作的,所以可以比較這些產品。
Radeon R9 Nano:微型卡,大型GPU
但說到純粹的die尺寸,NVIDIA拿下了王冠,并不是說這一定是件好事。最新的基于Ampere的芯片,GA102,是628mm2。這實際上比它的前身TU102小了17%——GPU面積達到驚人的754mm2。
與NVIDIA巨大的GA100芯片(用于AI和數據中心)相比,這兩款芯片的尺寸都相形見絀,其GPU為826 mm2,采用的是臺積電的N7芯片。雖然它從來沒有被設計用來驅動桌面顯卡,但它確實顯示了GPU制造的可能規(guī)模。
把它們放在一起突出了NVIDIA最大的GPU有多大。Navi 21看起來相當苗條,盡管處理器的功能不僅僅是芯片區(qū)。GA102封裝了283億個晶體管,而AMD的新芯片減少了5%,達到268億個。
我們不知道每個GPU構建多少層,因此我們所能比較的是晶體管與die面積的比率,通常稱為die密度。Navi 21的晶體管約為每平方毫米5150萬個晶體管,但GA102明顯低于41.1,這可能是NVIDIA的芯片堆疊程度比AMD的略高,但它更可能表示工藝節(jié)點。
如前所述,Navi 21是由臺積電生產的,采用N7P生產方法,性能比N7略有提高;但在新產品GA102上,NVIDIA求助于三星來完成生產任務。這家韓國半導體巨頭正在使用他們所謂的8nm節(jié)點(標記為8N或8NN)的改良版本,專門為NVIDIA設計。
這些節(jié)點值,7和8,與芯片組件的實際尺寸沒有多大關系:它們只是市場營銷術語,用于區(qū)分不同的生產技術。也就是說,即使GA102比Navi 21有更多的層,die尺寸確實有一個特殊的影響。
一臺300毫米(12英寸)的晶圓片正在臺積電的制造工廠進行測試。
微處理器和其他芯片是由高度精煉的硅和其他材料制成的大圓盤,稱為晶圓。臺積電和三星為AMD和NVIDIA使用的是300毫米晶圓,相對于更大的die,使用更小的die,每塊晶圓將產生更多的芯片。
這種差異不可能很大,但是在降低制造成本方面,當每片晶圓的生產成本達到數千美元時,AMD相對于NVIDIA而言優(yōu)勢較小。 當然,這是假設三星或臺積電沒有與AMD / NVIDIA進行某種財務交易。
如果芯片本身不能很好地完成設計工作,那么所有這些die尺寸和晶體管數量都將是徒勞的。 因此,讓我們深入研究每個新GPU的布局,看看它們背后的東西。
剖析die
Ampere GA102和RDNA 2 Navi 21的總體架構
我們從分析Ampere GA102和RDNA 2 Navi 21 GPU的總體架構開始我們對架構的探索——這些圖表不一定向我們展示所有的物理布局,但它們給出了處理器有多少組件的明確指示。
在這兩種情況下,布局都是非常熟悉的,因為它們基本上都是其前身的擴展版本。在處理指令中添加更多的單元將始終提高GPU的性能,因為在最新的3D大片中,在高分辨率下,渲染工作量涉及大量的并行計算。
這樣的圖表是有用的,但是對于這個特定的分析來說,更有趣的是看看各個組件在GPU中的位置。在設計大型處理器時,您通常希望共享資源(如控制器和緩存)位于中心位置,以確保每個組件都具有相同的路徑。
接口系統(tǒng),如本地內存控制器或視頻輸出,應該安裝在芯片的邊緣,以便更容易地將它們連接到連接GPU和顯卡其余部分的數千根單獨的電線上。
以下是AMD的Navi 21和NVIDIA的GA102 die的偽彩色圖像。 它們實際上只顯示了芯片中的一層;但它們確實給我們提供了一個現(xiàn)代GPU內部的極好視圖。
兩種設計之間最明顯的區(qū)別在于,NVIDIA在芯片布局上沒有遵循集中化的方法——所有的系統(tǒng)控制器和主緩存都在底部,邏輯單元以長列形式運行。他們過去也這樣做過,但只針對中低端機型。
例如,Pascal GP106(用于GeForce GTX 1060等)實際上是GP104(來自GeForce GTX 1070)的一半。 后者是較大的芯片,其緩存和控制器位于中間。 這些都移到了它的兄弟姐妹那一邊,但這只是因為設計已經被拆分了。
對于之前所有的高端GPU布局,NVIDIA都使用了經典的集中式結構。為什么這里會有變化呢?這不可能是由于接口的原因,因為內存控制器和PCI Express系統(tǒng)都運行在die的邊緣。
這也不是出于熱學原因,因為即使die 的緩存/控制器部分比邏輯部分的溫度更高,您仍然希望在其中間具有更多的硅以幫助吸收和散發(fā)熱量 。盡管我們不能完全確定更改的原因,但我們懷疑這與NVIDIA對芯片中ROP(渲染輸出)單元實施的更改有關。
我們將在后面更詳細地討論它們,但是現(xiàn)在讓我們說,雖然布局的改變看起來很奇怪,但它不會對性能產生顯著的影響。這是因為3D渲染充斥著許多長時間的延遲,通常是由于必須等待數據。因此,由于一些邏輯單元比其他邏輯單元離緩存更遠而增加的納秒數,都被隱藏在了整個系統(tǒng)中。
在我們繼續(xù)之前,值得注意的是AMD在Navi 21布局中實施的工程改變,與驅動類似Radeon rx5700 XT的Navi 10相比。盡管新芯片在面積和晶體管數量上都比之前的芯片大了一倍,但設計者還設法在不顯著增加功耗的情況下提高了時鐘速度。
例如,Radeon RX 6800 XT運動的基時鐘和升壓時鐘分別為1825和2250mhz, TDP為300 W;Radeon RX 5700 XT的相同性能為1605 MHz、1905 MHz和225 W。英偉達也通過Ampere提高了時鐘速度,但部分原因是使用了更小、更高效的進程節(jié)點。
我們對Ampere和RDNA 2顯卡的每瓦特性能檢查顯示,兩家供應商在這方面都取得了顯著的改進,但AMD和臺積電取得了一些相當顯著的成就——比較上圖中Radeon RX 6800和Radeon VII之間的差異。
后者是他們首次使用N7節(jié)點進行GPU合作,并且在不到兩年的時間內,他們將每瓦性能提高了64%。的確,如果NVIDIA繼續(xù)與臺積電合作,那Ampere GA102的性能會好得多。
管理GPU工廠
芯片內部的一切組織方式
當涉及到指令處理和數據傳輸管理時,Ampere和RDNA2都遵循類似的模式來組織芯片內部的一切。游戲開發(fā)人員使用圖形API編寫標題,以制作所有圖像;它可能是Direct3D、OpenGL或Vulkan。這些基本上是軟件庫,充滿了規(guī)則、結構和簡化指令的“書籍”。
AMD和NVIDIA為他們的芯片創(chuàng)建的驅動程序本質上起著翻譯的作用:將通過API發(fā)布的例程轉換為GPU能夠理解的操作序列。在那之后,就完全由硬件來管理了,比如什么指令首先執(zhí)行,芯片的哪個部分執(zhí)行這些指令,等等。
指令管理的初始階段由合理地集中在芯片中的一組單元處理。在RDNA 2中,圖形和計算著色器通過單獨的管線進行路由,這些管線將指令調度并分派到芯片的其余部分。前者稱為圖形命令處理器,后者是異步計算引擎(ACE)。
NVIDIA只是用一個名字來描述他們的一組管理單元,即GigaThread Engine,在Ampere中它執(zhí)行與RDNA 2相同的任務,盡管NVIDIA并未過多說明其實際管理方式??傊?,這些命令處理器的功能類似于工廠的生產經理。
GPU通過并行執(zhí)行所有操作來獲得性能,因此在整個芯片上復制了下一個組織層次。堅持工廠的類比,這類似于一家擁有中央辦公室但在多個地點生產商品的企業(yè)。
AMD使用標簽著色器引擎(SE),而NVIDIA則稱其為圖形處理集群(GPC)-不同的名稱,相同的角色。
對芯片進行這種分區(qū)的原因很簡單:命令處理單元不能處理所有事情,因為它最終會變得過于龐大和復雜。因此,將一些日程安排和組織職責進一步向下推進是有意義的。這也意味著每個分離分區(qū)可以完全獨立于其他分區(qū)執(zhí)行某些操作,因此一個分區(qū)可以處理大量的圖形著色器,而其他分區(qū)則在處理長而復雜的計算著色器。
在RDNA 2的例子中,每個SE都有自己一套固定的功能單元:被設計用來完成一項特定任務的電路,程序員通常無法對其進行大量調整。
mitive Setup unit——獲取頂點,準備好進行處理,同時生成更多的頂點(essellation)并將其剔除
Rasterizer——將三角形的3D世界轉換為像素的2D網格
Render Outputs(ROPs)——讀取、寫入和混合像素
原始的設置單元以每個時鐘周期1個三角形的速率運行。這聽起來可能不是很多,但是不要忘記這些芯片運行在1.8到2.2 GHz之間,所以原始的設置不應該成為GPU的瓶頸。對Ampere來說,原始單位是在組織的下一層找到的,我們很快就會講到。
AMD和NVIDIA都沒有過多提及他們的光柵化器。后者稱為光柵引擎,我們知道它們每個時鐘周期處理一個三角形,并輸出若干像素,但沒有進一步的信息,例如它們的亞像素精度。
Navi 21芯片中的每個SE都有4組8個ROP,總共產生128個渲染輸出單元;NVIDIA的GA102每GPC包含2組8個ROP,因此整個芯片可運動112個ROP。這看起來AMD在這方面有優(yōu)勢,因為更多的ROP意味著每個時鐘可以處理更多的像素。但是這樣的單元需要對緩存和本地內存的良好訪問,我們將在本文后面詳細介紹?,F(xiàn)在,讓我們繼續(xù)研究SE/GPC分區(qū)是如何進一步劃分的。
AMD的著色引擎被劃分為雙計算單元(DCU),Navi 21芯片本身就有10個DCU——請注意,在一些文檔中,它們也被歸類為工作組處理器(WGP)。在Ampere和GA102的例子中,它們被稱為紋理處理簇(TPC),每個GPU包含6個tpc。NVIDIA設計的每一個集群都有一個叫做“變形引擎”的東西——本質上是Ampere的原始設置單元。
NVIDIA也以每時鐘1個三角形的速度運行,盡管NVIDIA的GPU比AMD的低,但他們的TPC數量比Navi 21的SE要多得多。因此,對于相同的時鐘速度,GA102應該有一個顯著的優(yōu)勢,因為完整的芯片擁有42個原始設置單元,而AMD的新RDNA 2只有4個。但由于每個光柵引擎有6個TPC, GA102實際上有7個完整的原始系統(tǒng),而Navi 21有4個。由于后者的時鐘并沒有比前者高75%,當涉及到幾何處理(盡管沒有游戲可能在這方面受到限制)時,似乎英偉達在這方面具有明顯的領先優(yōu)勢。
芯片組織的最后一層是RDNA 2中的計算單元(CU)和Ampere中的流式多處理器(SM),這是我們GPU工廠的生產線。
這些是圖形處理器餡餅中的肉和蔬菜,因為它們擁有所有用于處理圖形、計算和現(xiàn)在的光線追蹤著色器的高度可編程單元。正如你在上圖中看到的,每一個芯片都只占整個芯片空間的很小一部分,但是它們仍然是非常復雜的,并且對芯片的整體性能非常重要。
到目前為止,在兩個GPU的布局和組織方式方面,還沒有什么真正的突破性協(xié)議。術語全都不同,但是它們的功能卻大同小異。而且由于它們所做的很多事情都受可編程性和靈活性的限制,因此一個相對于另一個所具有的任何優(yōu)勢,都只能歸結為規(guī)模感,即哪個擁有最大的特色。
但是對于CU和SM,AMD和NVIDIA采取了不同的方式來處理著色器。在某些領域,它們有很多共同點,但在其他許多領域則并非如此。
計數核心是NVIDIA的方式
由于安培(Ampere)在RDNA 2之前就冒險進入野外,我們首先來看看NVIDIA的SM。現(xiàn)在沒有必要查看裸片本身的圖像,因為它們無法準確告訴我們其中的內容,因此讓我們使用組織圖。這些不應該代表芯片中各種組件的物理排列方式,而只是每種類型中存在多少種。
圖靈對其臺式機前身Pascal進行了實質性更改(去掉了一堆FP64單元和寄存器,但是增加了張量核和光線跟蹤),而Ampere實際上是一個相當溫和的更新-至少從表面上看。不過,就NVIDIA的市場部門而言,新設計使每個SM中CUDA內核的數量增加了一倍以上。
在圖靈中,流多處理器包含四個分區(qū)(有時稱為處理塊),每個分區(qū)中容納16個INT32和16x FP32邏輯單元。這些電路旨在對32位數據值執(zhí)行非常具體的數學運算:INT單位處理整數,而FP單位處理浮點數(即十進制)。
英偉達表示,一個Ampere SM總共有128個CUDA內核,但嚴格來說,這是不正確的-或者,如果我們必須堅持這一點,那么圖靈(Turing)也是如此。該芯片中的INT32單元實際上可以處理浮點值,但只能以非常少量的簡單操作進行。對于Ampere,NVIDIA已開放了它們支持的浮點數學運算范圍,以匹配其他FP32單元。這意味著每個SM的CUDA內核總數并沒有真正改變。只是其中的一半現(xiàn)在擁有更多功能。
每個SM分區(qū)中的所有內核都可以隨時處理同一條指令,但是由于INT / FP單元可以獨立運行,因此Ampere SM每個周期最多可以處理128x FP32計算,或一起處理64x FP32和64x INT32操作。而圖靈只是后者。
因此,新的GPU可能使FP32的輸出量比其上一代產品大一倍。對于計算工作負載,尤其是在專業(yè)應用程序中,這是向前邁出的一大步。但是對于游戲而言,優(yōu)勢卻遠遠沒有達到預期。當我們首次測試GeForce RTX 3080時,這一點很明顯,它使用啟用了68個SM的GA102芯片。
盡管FP32的峰值吞吐量比GeForce 2080 Ti高出121%,但平均幀速率僅提高了31%。那么,為什么所有這些計算能力都會浪費掉呢?一個簡單的答案是,游戲并非一直在運行FP32指令。
當NVIDIA在2018年發(fā)布Turing時,他們指出, GPU處理的指令平均約有36%涉及INT32例程。這些計算通常用于計算內存地址,兩個值之間的比較以及邏輯流/控制。
因此,對于這些操作,雙速率FP32功能不起作用,因為具有兩個數據路徑的單元只能執(zhí)行整數或浮點運算。而且,只有在當時由它處理的所有32個線程都排隊處理相同的FP32操作時,SM分區(qū)才會切換到此模式。在所有其他情況下,安培中的分區(qū)與圖靈中的分區(qū)一樣運行。
這意味著在INT + FP模式下運行時,GeForce RTX 3080之類的FP32僅比2080 Ti具有11%的FP32優(yōu)勢。這就是為什么在游戲中看到的實際性能提升沒有原始數據所預期的那么高的原因。
至于其他改進。每個SM分區(qū)的Tensor Core更少,但每個都比Turing中的功能強大得多。這些電路執(zhí)行非常具體的計算(例如將兩個FP16值相乘并用另一個FP16編號累加答案),每個內核現(xiàn)在每個周期執(zhí)行32次這些操作。
它們還支持一種名為“細粒度結構稀疏性”的新特性,在不涉及所有細節(jié)的情況下,這意味著通過剔除那些對答案沒有影響的數據,計算率可以翻倍。同樣,這對于從事神經網絡和人工智能工作的專業(yè)人員來說是個好消息,但目前對游戲開發(fā)者來說并沒有什么明顯的好處。
光線跟蹤核心也已進行了調整:它們現(xiàn)在可以獨立于CUDA核心工作,因此,在進行BVH遍歷或光線原始相交數學時,SM的其余部分仍可以處理著色器。處理射線是否與原語相交測試的RT核心的部分性能也增加了一倍。
RT內核還具有附加的硬件,可幫助將光線跟蹤應用于運動模糊,但是此功能目前僅通過NVIDIA專有的Optix API公開。
還有其他一些調整,但是整體方法是明智但穩(wěn)定的演進之一,而不是主要的新設計。但是考慮到圖靈的原始功能并沒有什么特別的錯誤,因此看到這一點不足為奇。
那么AMD怎么辦?他們對RDNA 2中的計算單元做了什么?
追尋美妙的光線
從表面上看,AMD在計算單元方面并沒有太大變化-它們仍然包含兩組SIMD32向量單元,一個SISD標量單元,紋理單元以及各種緩存堆棧。關于它們可以執(zhí)行的數據類型和相關的數學運算,已經發(fā)生了一些變化,我們稍后將詳細介紹。對于普通消費者而言,最明顯的變化是AMD現(xiàn)在為光線跟蹤中的特定例程提供了硬件加速。
CU的這部分執(zhí)行ray-box或ray-triangle交叉檢查——與安培中的RT內核相同。然而,后者也加速了BVH遍歷算法,而在RDNA 2,這是通過使用SIMD 32單元計算著色器來完成的。
不管一個著色器內核有多少個,或者它們的時鐘速率有多高,使用設計為僅完成一項工作的定制電路總是比通用方法更好。這就是為什么首先發(fā)明GPU的原因:渲染世界中的所有事物都可以使用CPU來完成,但是它們的通用性使其不適合于此。
RA單元緊鄰紋理處理器,因為它們實際上是同一結構的一部分。早在2019年7月,我們就報道了AMD申請的一項專利的內容,該專利使用``混合''方法詳細處理了光線追蹤中的關鍵算法...
盡管該系統(tǒng)確實提供了更大的靈活性,并且消除了當存在光線追蹤工作量時裸片的一部分不做任何事情的需求,但AMD的第一個實現(xiàn)確實有一些缺點。最值得注意的是,紋理處理器在任何時候都只能處理涉及紋理或ray-primitive交點的操作。
鑒于NVIDIA的RT核心現(xiàn)在完全獨立于SM的其余部分而運行,與RNDA 2相比,在通過光線跟蹤所需的加速結構和交叉測試進行磨削時,這似乎給Ampere帶來了明顯的領先優(yōu)勢。
盡管我們僅簡要檢查了AMD最新圖形卡中的光線追蹤性能,但到目前為止,我們確實發(fā)現(xiàn)使用光線追蹤的影響很大程度上取決于所玩的游戲。
例如,在Gears 5中,Radeon RX 6800(使用Navi 21 GPU的60 CU變體)僅降低了17%的幀速率,而在《古墓麗影》的陰影中,平均損失達到52% 。相比之下,NVIDIA的RTX 3080(使用68 SM GA102)在這兩款游戲中的平均幀率損失分別為23%和40%。
需要對射線追蹤進行更詳細的分析來說明AMD的實現(xiàn),但是作為該技術的第一個迭代,它看起來很有競爭力,但對應用程序正在進行的射線追蹤很敏感。
如前所述,RDNA 2中的計算單元現(xiàn)在支持更多數據類型。最值得注意的是低精度數據類型,例如INT4和INT8。它們用于機器學習算法中的張量運算,而AMD具有用于AI和數據中心的單獨架構(CDNA),但此更新適用于DirectML。
該API是Microsoft DirectX 12家族的最新成員,硬件和軟件的組合將為光線跟蹤和時間放大算法中的降噪提供更好的加速。對于后者,NVIDIA當然擁有自己的名稱,稱為DLSS。他們的系統(tǒng)使用SM中的Tensor核心執(zhí)行部分計算,但是鑒于可以通過DirectML構建類似的過程,因此這些單元似乎有些多余。但是,在Turing和Ampere中,Tensor核心還可以處理所有涉及FP16數據格式的數學運算。
對于RDNA 2,此類計算是使用著色器單元,使用打包數據格式完成的,即每個32位向量寄存器都包含兩個16位寄存器。那么哪種方法更好呢?AMD將其SIMD32單元標記為矢量處理器,因為它們能針對多個數據值發(fā)出一條指令。
每個向量單元包含32個流處理器,由于每個流處理器只處理單個數據片段,因此實際操作本身是標量的。這本質上與安培中的SM分區(qū)相同,其中每個處理塊還針對32個數據值攜帶一條指令。
但是,在NVIDIA設計中的整個SM每個周期最多可以處理128個FP32 FMA計算(融合乘加)時,單個RDNA 2計算單元只能處理64個。在執(zhí)行標準FP16數學時,使用FP16可以將其提高到每個周期128 FMA,這與Ampere的Tensor核心是一樣的。
NVIDIA的SM可以處理指令時可以同時處理整數和浮點值(例如64 FP32和64 INT32),并且具有用于FP16操作,張量數學和光線跟蹤例程的獨立單元。盡管AMD CU具有獨立的支持簡單整數數學的標量單元,但它們在SIMD32單元上承擔了大部分工作量。
因此,安培似乎在這方面有優(yōu)勢:GA102比Navi 21擁有更多的CU,而且在峰值吞吐量、靈活性和提供的功能方面,它們的表現(xiàn)更出色。但是AMD有一個相當不錯的錦囊妙計。
內存系統(tǒng),多層緩存
擁有成千上萬個邏輯單元的GPU,在復雜的數學運算中一路高歌猛進,這一切都很好,但是但如果他們不能足夠快地提供所需的指令和數據,他們將在海量的數據中掙扎。這兩種設計都擁有豐富的多級緩存,擁有巨大的帶寬。
讓我們來看看安培的??傮w而言,內部發(fā)生了一些顯著變化。2級緩存的數量增加了50%(圖靈TU102的運動速度分別為4096 kB),并且每個SM中的1級緩存的大小都增加了一倍。
與以前一樣,就可以為數據,紋理或一般計算用途分配多少緩存空間而言,Ampere的L1緩存是可配置的。但是,對于圖形著色器(例如頂點,像素)和異步計算,緩存實際上設置為:
64 kB用于數據和紋理
48 kB用于共享通用內存
16 kB保留用于特定操作
只有在完全計算模式下運行時,L1才可以完全配置。從好的方面來說,可用帶寬的數量也增加了一倍,因為緩存現(xiàn)在可以每個時鐘讀取/寫入128個字節(jié)(盡管沒有關于延遲是否得到改善的消息)。
內部存儲器系統(tǒng)的其余部分在Ampere中保持不變,但是當我們僅移至GPU外部時,對于我們來說,這是一個很好的驚喜。NVIDIA與DRAM制造商美光合作,將GDDR6的修改版本用于其本地內存需求。從本質上講,它仍然是GDDR6,但數據總線已被完全替換。GDDR6X使用四個電壓,而不是使用傳統(tǒng)的每個引腳設置1位(信號只是在兩個電壓(又名PAM)之間快速反彈)設置的方式:
進行此更改后,GDDR6X每個周期每個引腳有效傳輸2位數據-因此,對于相同的時鐘速度和引腳數,帶寬增加了一倍。GeForce RTX 3090具有24個GDDR6X模塊,它們以單通道模式運行,額定速率為19 Gbps,提供的峰值傳輸帶寬為936 GB / s。
與GeForce RTX 2080 Ti相比,這增加了52%,并且不能輕易忽視。過去僅通過使用類似HBM2的方式獲得了這樣的帶寬數字,與GDDR6相比,HBM2的實現(xiàn)成本很高。
但是,只有Micron可以制造這種存儲器,而PAM4的使用為生產過程增加了額外的復雜性,對信號的公差要嚴格得多。AMD走了一條不同的道路-他們沒有尋求外部機構的幫助,而是利用其CPU部門為桌面帶來了新的東西。與它的前代產品相比,RDNA 2中的整個內存系統(tǒng)沒有太大變化,只有兩個主要變化。
每個著色器引擎現(xiàn)在都有兩組Level 1緩存,但是由于它們現(xiàn)在具有兩組Dual Compute Unit(RDNA擁有一組),因此這種改變是可以預期的。但是將128 MB的3級緩存緩存到GPU中嗎?這讓很多人感到驚訝。利用其EPYC系列Zen 2服務器芯片中的L3高速緩存的SRAM設計,AMD在該芯片中嵌入了兩組64 MB高密度高速緩存。數據事務由16組接口處理,每個接口每個時鐘周期移位64個字節(jié)。
所謂的無限緩存具有其自己的時鐘域,并且可以在1.94 GHz上運行,從而提供1986.6 GB / s的內部峰值傳輸帶寬。而且由于它不是外部DRAM,因此涉及的延遲非常低。這種高速緩存非常適合存儲光線跟蹤加速結構,并且由于BVH遍歷涉及大量數據檢查,因此Infinity高速緩存應特別為此提供幫助。
兩個64 MB的Infinity緩存條和Infinity Fabric系統(tǒng)目前,尚不清楚RDNA 2中的3級緩存是否以與Zen 2 CPU中相同的方式運行:即作為2級victim緩存。通常,當需要清除最后一級的高速緩存以為新數據騰出空間時,對該信息的任何新請求都必須發(fā)送到DRAM。
victim緩存存儲的數據已經被標記為要從下一層內存移除,并且有128MB的數據可用,Infinity緩存可能存儲32個完整的L2緩存集。
該系統(tǒng)的結果是,在GDDR6控制器和DRAM上放置的需求更少。AMD的較舊GPU設計一直在缺乏內部帶寬的情況下苦苦掙扎,尤其是當它們的時鐘速度提高后,但是額外的緩存將使該問題逐漸消失。
那么,哪種設計更好呢?GDDR6X的使用為GA102提供了到本地內存的巨大帶寬,并且更大的緩存將有助于減少緩存未命中(這會使線程的處理停滯)的影響。Navi 21的大型3級緩存意味著DRAM不必經常被竊聽,并利用了以更高的時鐘速度運行GPU的能力,而不會出現(xiàn)數據匱乏的情況。
AMD決定堅持使用GDDR6的決定意味著第三方供應商可以使用更多的內存,同時任何制造GeForce RTX 3080或3090的公司都必須使用美光。盡管GDDR6有多種模塊密度,但GDDR6X當前限于8 Gb。
RDNA 2中的緩存系統(tǒng)可以說是比Ampere中使用的緩存系統(tǒng)更好的方法,因為與外部DRAM無關,使用多個級別的片上SRAM始終比外部DRAM提供更低的延遲和更好的性能(在給定的功率范圍內)。
GPU的來龍去脈
渲染管線這兩種架構都對渲染管線的前端和后端進行了大量更新。DirectX12 Ultimate中的Ampere和RDNA 2完全具有運動型網格著色器和可變速率著色器,但NVIDIA的芯片具有更出色的幾何性能,而這要歸功于NVIDIA用了更多的任務處理器。
盡管使用網格著色器可以使開發(fā)人員創(chuàng)建更加逼真的環(huán)境,但沒有一款游戲的性能會完全以來于渲染過程中的這個階段。因為大部分最難的工作是在像素或光線跟蹤階段。
這就是使用可變率著色器發(fā)揮作用的地方——基本上該過程涉及在一個像素塊而不是單個像素上應用照明和顏色著色器。這類似于為了提高性能而降低游戲的分辨率,但由于它只能應用于選定的區(qū)域,因此視覺質量的損失并不明顯。
無論是否使用可變速率著色器,這兩種體系結構都已更新了其渲染輸出單元(ROP),這將提高在高分辨率下的性能。在所有以前的GPU中,NVIDIA都將ROPs與內存控制器和二級緩存綁定在一起。
在Turing中,8個ROP單元(統(tǒng)稱為一個分區(qū))會直接鏈接到一個控制器和一個512kb的高速緩存上。添加更多的ROP會帶來問題,因為它需要更多的控制器和緩存,因此對于Ampere而言,現(xiàn)在ROP已完全分配給了GPC。GA102每個GPC擁有12個ROP(每個時鐘周期處理1個像素),整個芯片共有112個單位。
AMD采用了與NVIDIA的舊方法類似的系統(tǒng)(即與內存控制器和L2緩存片綁定),盡管它們的ROP主要使用1級緩存進行像素讀/寫和混合。在Navi 21芯片中,已經為它們提供了急需的更新,并且每個ROP分區(qū)現(xiàn)在每個周期以32位顏色處理8個像素,并以64位處理4個像素。
NVIDIA還為Ampere帶來了RTX IO,這是一種數據處理系統(tǒng),可以讓GPU直接訪問存儲驅動器,復制所需的數據,然后使用CUDA內核解壓。但是,目前該系統(tǒng)不能在任何游戲中使用,因為NVIDIA正在使用DirectStorage API(另一種DirectX12增強功能)來控制它,并且尚未準備好公開發(fā)布。
目前使用的方法包括讓CPU管理所有這一切:它接收來自GPU驅動程序的數據請求,將數據從存儲驅動器復制到系統(tǒng)內存中,進行解壓縮,然后再復制到圖形卡的DRAM中。
除了涉及大量浪費的復制之外,這種機制在本質上是串行的——CPU一次只能處理一個請求。NVIDIA聲稱可以達到“100倍的數據吞吐量”和“20倍的CPU利用率低”,但是在系統(tǒng)能夠在現(xiàn)實世界中測試之前,并不能證明它能夠實現(xiàn)這種效果。
當AMD推出RDNA 2和新的Radeon RX 6000圖形卡時,他們推出了稱為Smart Access Memory的產品。這不是他們對NVIDIA的RTX IO的答案——實際上,它甚至不是真正的新功能。默認情況下,每個單獨的訪問請求中,CPU中的PCI Express控制器最多可以尋址256 MB的圖形卡內存。
此值由基址寄存器(BAR)的大小設置,并且早在2008年,PCI Express 2.0規(guī)范中就有一項可選功能,可以調整其大小。這樣做的好處是,只需處理較少的訪問請求即可訪問整個卡的DRAM。
該功能需要操作系統(tǒng),CPU,主板,GPU及其驅動程序的支持。當前,在Windows PC上,系統(tǒng)僅限于Ryzen 5000 CPU,500系列主板和Radeon RX 6000圖形卡的特定組合。
測試時,這個簡單的功能給出了一些令人吃驚的結果——在4K環(huán)境下將性能提升15%是不容小覷的,所以英偉達表示他們將在不久的將來為RTX 3000范圍提供這個特性也就不足為奇了。
是否可調整大小的BAR支持是否適用于其他平臺組合還有待觀察,但是它的使用無疑是受歡迎的,即使它不是Ampere / RDNA 2的體系結構功能。
視頻取代了廣播
多媒體引擎,視頻輸出
GPU世界通常由核心訪問量、TFLOPS、GB/s和一些其他指標為主導,由于YouTube內容創(chuàng)造者和直播游戲流的崛起,使得市場開始注意GPU的顯示和多媒體引擎的能力。
隨著支持此類功能的顯示器價格的下降,對所有分辨率下的超高刷新率的需求也在增長。兩年前,一臺144 Hz 4K 27”的HDR顯示器要花你2000美元;今天,你可以用幾乎一半的價格買到類似的東西。
兩種架構均通過HDMI 2.1和DisplayPort 1.4a提供顯示輸出。前者提供了更多的信號帶寬,但是在HDR和240 Hz時,它們的額定頻率均為4K,在60 Hz時,其額定值為8K。這是通過使用4:2:0色度二次采樣或DSC 1.2a實現(xiàn)的。這些是視頻信號壓縮算法,可顯著減少帶寬需求,而不會損失太多的視覺質量。如果沒有它們,即使HDMI 2.1的峰值帶寬為6gb /s,也不足以以6hz的速率傳輸4K圖像。
48英寸LG CK OLED'顯示器'-120 Hz時的4K需要HDMI 2.1Ampere和RDNA 2還支持可變刷新率系統(tǒng)(用于AMD的FreeSync,用于NVIDIA的G-Sync),在視頻信號的編碼和解碼方面,也沒有明顯的區(qū)別。
無論您使用哪種處理器,您都會發(fā)現(xiàn)對8K AV1、4K H.264和8K H.265解碼的支持,盡管它們在這種情況下的性能究竟如何還沒有得到徹底的研究。兩家公司都沒有詳細說明他們的顯示和多媒體引擎的內部結構。盡管它們很重要,但GPU的其余部分依舊值得關注。
不同的策略
為計算而生,還是為游戲而生GPU歷史的愛好者將知道AMD和NVIDIA過去在架構選擇和配置上采用了截然不同的方法。但是,隨著3D圖形越來越受到計算世界和API的同質化的支配,它們的總體設計也越來越相似。
如今的游戲并不是以渲染需求為架構定下基調,GPU產業(yè)已經擴展到的市場領域才是引領方向。在撰寫本文時,NVIDIA有三種使用Ampere 技術的芯片:GA100、GA102和GA104。
GA104可以在GeForce RTX 3060 Ti中找到最后一個只是GA102的精簡版——每個GPC擁有的TPC更少(整體GPU更少),而二級緩存則只有三分之二。其他所有內容都完全相同。而GA100則是與此完全不同的產品。
GA100沒有RT核,也沒有INT32 + FP32支持的CUDA核。相反,它打包了許多額外的FP64單元,更多的加載/存儲系統(tǒng)以及大量的L1 / L2緩存。它也沒有顯示器或多媒體引擎。這是因為它完全是為用于AI和數據分析的大規(guī)模計算集群而設計的。
從應用場景上看,GA102/104需要覆蓋NVIDIA瞄準市場是:游戲愛好者、專業(yè)圖形藝術家和工程師,以及小規(guī)模的人工智能和計算工作。Ampere則想要成為“萬事通”,并且能夠精通所有行業(yè),但這可不是一件容易的事。
750平方毫米的Arcturus CDNARDNA 2專為PC和游戲機上的游戲而設計,盡管它可以轉向與Ampere相同的應用市場。然而,AMD選擇繼續(xù)他們的GCN架構,并更新它,以滿足今天的專業(yè)客戶的需求。
RDNA 2產生了“ Big Navi”,而CDNA產生了“ Big Vega”-Instinct MI100裝有Arcturus芯片,這是一個擁有128個計算單元的500億晶體管GPU。與NVIDIA的GA100一樣,它也不包含顯示器或多媒體引擎。
盡管NVIDIA憑借Quadro和特斯拉(Tesla)等在專業(yè)市場占據了主導地位,但Navi 21之類的產品并非旨在與之抗衡,而是進行了相應的設計。這是否會使RDNA 2成為更好的結構體系; Ampere 適應多種市場的要求是否在限制了它的發(fā)展?
當您查看證據時,答案似乎是:不。
AMD將很快發(fā)布Radeon RX 6900 XT,它使用了完整的Navi 21(沒有禁用CUs),其性能可能與GeForce RTX 3090或更好。但是那張卡上的GA102也沒有被完全釋放,所以NVIDIA總是可以選擇升級到一個“超級”版本,就像他們去年對 Turing所做的那樣。
可能有人會說,因為RDNA 2被用在Xbox系列X/S和PlayStation 5中,游戲開發(fā)者會傾向于將這種架構用于他們的游戲引擎。但是,您只需要查看在Xbox One和PlayStation 4中使用了GCN的時間,便可以了解這種情況如何發(fā)揮作用。
前者在2013年的第一次發(fā)布中使用了基于GCN 1.0架構的GPU——這種設計直到第二年才出現(xiàn)在桌面PC圖形卡中。2017年發(fā)布的Xbox One X使用的是GCN 2.0,這是一個已經使用了3年多的成熟設計。
那么,所有為Xbox One或PS4制作的游戲,只要移植到PC上,就能在AMD顯卡上運行得更好嗎?實際上,并沒有。因此,盡管RDNA 2具有令人印象深刻的功能,但我們不能認為該產品會與RDNA 2有所不同。
但這些最終都無關緊要,因為這兩種GPU設計都具有非凡的能力,是半導體制造領域的奇跡。NVIDIA和AMD帶來了不同的工具,因為他們都在試圖解決不同的問題;Ampere的目標是面向所有人,RDNA 2主要是關于游戲的。
這一次,戰(zhàn)斗陷入了僵局,盡管雙方都可以在特定的一兩個區(qū)域宣告勝利。
GPU之戰(zhàn)將持續(xù)到明年,一個新的競爭者將加入這場戰(zhàn)斗:英特爾的Xe系列芯片。在不久的將來,我們就能看到這場戰(zhàn)斗的結果了!
上一篇:美國Micro Magic公司研制64位RISC-V內核,居然快過M1?
下一篇:十四五芯藍圖:推動數字化發(fā)展,攻克關鍵核心技術
推薦閱讀
史海拾趣