首頁 > 硬體

萬字剖析:NVIDIA、AMD的巔峰之戰!

2020-12-14 04:00:20

對於GPU愛好者來說,這是一個漫長的等待。 NVIDIA將Turing產品線維持了兩年,然後在2020年9月用Ampere取代了它。AMD更友善一點,他們的新設計間隔了15個月,但大多數人對此並不感興趣。

他們希望看到的是AMD推出一款高階機型,與NVIDIA(NVIDIA)最優秀的產品展開正面競爭。他們做到了,現在我們已經看到了結果,在花錢買最好的圖形卡時,PC遊戲玩家現在(在理論上)有了很多選擇。

但是驅動它們的晶片呢?其中一個從根本上來說比另一個好嗎?繼續讀下去,看看Ampere和RDNA 2是如何決一死戰的!

NVIDIA衰退,AMD成長

節點和die尺寸

多年來,高階GPU一直比 CPU大得多,而且它們的尺寸一直在穩步增長。AMD最新推出的Navi晶片面積約為520mm2,是之前Navi晶片的兩倍多。不過,這並不是他們最大的——這項榮譽頒給了他們的Instinct MI100加速器(約750 mm2)中的GPU。

上一次AMD製造的接近Navi 21大小的遊戲處理器是為Radeon R9 Fury和Nano顯示卡設計的,這兩款產品在Fiji 晶片上採用了GCN 3.0架構。它的裸片面積為596 mm2,但它是在臺積電的28HP工藝節點上生產的。

自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製造的可能規模。

把它們放在一起突出了NVIDIA最大的GPU有多大。Navi 21看起來相當苗條,儘管處理器的功能不僅僅是晶片區。GA102封裝了283億個電晶體,而AMD的新晶片減少了5%,達到268億個。

我們不知道每個GPU構建多少層,因此我們所能比較的是電晶體與die面積的比率,通常稱為die密度。Navi 21的電晶體約為每平方毫米5150萬個電晶體,但GA102明顯低於41.1,這可能是NVIDIA的晶片堆疊程度比AMD的略高,但它更可能表示工藝節點。

如前所述,Navi 21是由臺積電生產的,採用N7P生產方法,效能比N7略有提高;但在新產品GA102上,NVIDIA求助於三星來完成生產任務。這家韓國半導體巨頭正在使用他們所謂的8nm節點(標記為8N或8NN)的改良版本,專門為NVIDIA設計。

這些節點值,7和8,與晶片元件的實際尺寸沒有多大關係:它們只是市場行銷術語,用於區分不同的生產技術。也就是說,即使GA102比Navi 21有更多的層,die尺寸確實有一個特殊的影響。

一臺300毫米(12英寸)的晶圓片正在臺積電的製造工廠進行測試。

微處理器和其他晶片是由高度精煉的矽和其他材料製成的大圓盤,稱為晶圓。臺積電和三星為AMD和NVIDIA使用的是300毫米晶圓,相對於更大的die,使用更小的die,每塊晶圓將產生更多的晶片。

這種差異不可能很大,但是在降低製造成本方面,當每片晶圓的生產成本達到數千美元時,AMD相對於NVIDIA而言優勢較小。 當然,這是假設三星或臺積電沒有與AMD / NVIDIA進行某種財務交易。

如果晶片本身不能很好地完成設計工作,那麼所有這些die尺寸和電晶體數量都將是徒勞的。 因此,讓我們深入研究每個新GPU的佈局,看看它們背後的東西。

剖析die

Ampere GA102和RDNA 2 Navi 21的總體架構

我們從分析Ampere GA102和RDNA 2 Navi 21 GPU的總體架構開始我們對架構的探索——這些圖表不一定向我們展示所有的物理佈局,但它們給出了處理器有多少元件的明確指示。

在這兩種情況下,佈局都是非常熟悉的,因為它們基本上都是其前身的擴充套件版本。在處理指令中新增更多的單元將始終提高GPU的效能,因為在最新的3D大片中,在高解析度下,渲染工作量涉及大量的平行計算。

這樣的圖表是有用的,但是對於這個特定的分析來說,更有趣的是看看各個元件在GPU中的位置。在設計大型處理器時,您通常希望共用資源(如控制器和快取)位於中心位置,以確保每個元件都具有相同的路徑。

介面系統,如本地記憶體控制器或視訊輸出,應該安裝在晶片的邊緣,以便更容易地將它們連線到連線GPU和顯示卡其餘部分的數千根單獨的電線上。

以下是AMD的Navi 21和NVIDIA的GA102 die的偽彩色影象。 它們實際上只顯示了晶片中的一層;但它們確實給我們提供了一個現代GPU內部的極好檢視。

兩種設計之間最明顯的區別在於,NVIDIA在晶片佈局上沒有遵循集中化的方法——所有的系統控制器和主快取都在底部,邏輯單元以長列形式執行。他們過去也這樣做過,但只針對中低端機型。

例如,Pascal GP106(用於GeForce GTX 1060等)實際上是GP104(來自GeForce GTX 1070)的一半。 後者是較大的晶片,其快取和控制器位於中間。 這些都移到了它的兄弟姐妹那一邊,但這只是因為設計已經被拆分了。

對於之前所有的高階GPU佈局,NVIDIA都使用了經典的集中式結構。為什麼這裡會有變化呢?這不可能是由於介面的原因,因為記憶體控制器和PCI Express系統都執行在die的邊緣。

這也不是出於熱學原因,因為即使die 的快取/控制器部分比邏輯部分的溫度更高,您仍然希望在其中間具有更多的矽以幫助吸收和散發熱量 。儘管我們不能完全確定更改的原因,但我們懷疑這與NVIDIA對晶片中ROP(渲染輸出)單元實施的更改有關。

我們將在後面更詳細地討論它們,但是現在讓我們說,雖然佈局的改變看起來很奇怪,但它不會對效能產生顯著的影響。這是因為3D渲染充斥著許多長時間的延遲,通常是由於必須等待資料。因此,由於一些邏輯單元比其他邏輯單元離快取更遠而增加的納秒數,都被隱藏在了整個系統中。

在我們繼續之前,值得注意的是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提高了時鐘速度,但部分原因是使用了更小、更高效的程序節點。

我們對Ampere和RDNA 2顯示卡的每瓦特效能檢查顯示,兩家供應商在這方面都取得了顯著的改進,但AMD和臺積電取得了一些相當顯著的成就——比較上圖中Radeon RX 6800和Radeon VII之間的差異。

後者是他們首次使用N7節點進行GPU合作,並且在不到兩年的時間內,他們將每瓦效能提高了64%。的確,如果NVIDIA繼續與臺積電合作,那Ampere GA102的效能會好得多。

管理GPU工廠

晶片內部的一切組織方式

當涉及到指令處理和資料傳輸管理時,Ampere和RDNA2都遵循類似的模式來組織晶片內部的一切。遊戲開發人員使用圖形API編寫標題,以製作所有影象;它可能是Direct3D、OpenGL或Vulkan。這些基本上是軟體庫,充滿了規則、結構和簡化指令的“書籍”。

AMD和NVIDIA為他們的晶片建立的驅動程式本質上起著翻譯的作用:將通過API釋出的例程轉換為GPU能夠理解的操作序列。在那之後,就完全由硬體來管理了,比如什麼指令首先執行,晶片的哪個部分執行這些指令,等等。

指令管理的初始階段由合理地集中在晶片中的一組單元處理。在RDNA 2中,圖形和計算著色器通過單獨的管線進行路由,這些管線將指令排程並分派到晶片的其餘部分。前者稱為圖形命令處理器,後者是非同步計算引擎(ACE)。

NVIDIA只是用一個名字來描述他們的一組管理單元,即GigaThread Engine,在Ampere中它執行與RDNA 2相同的任務,儘管NVIDIA並未過多說明其實際管理方式。總之,這些命令處理器的功能類似於工廠的生產經理。

GPU通過並行執行所有操作來獲得效能,因此在整個晶片上覆制了下一個組織層次。堅持工廠的類比,這類似於一家擁有中央辦公室但在多個地點生產商品的企業。

AMD使用標籤著色器引擎(SE),而NVIDIA則稱其為圖形處理叢集(GPC)-不同的名稱,相同的角色。

對晶片進行這種分割區的原因很簡單:命令處理單元不能處理所有事情,因為它最終會變得過於龐大和複雜。因此,將一些日程安排和組織職責進一步向下推進是有意義的。這也意味著每個分離分割區可以完全獨立於其他分割區執行某些操作,因此一個分割區可以處理大量的圖形著色器,而其他分割區則在處理長而複雜的計算著色器。

在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在這方面有優勢,因為更多的ROP意味著每個時鐘可以處理更多的畫素。但是這樣的單元需要對快取和本地記憶體的良好存取,我們將在本文後面詳細介紹。現在,讓我們繼續研究SE/GPC分割區是如何進一步劃分的。

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應該有一個顯著的優勢,因為完整的晶片擁有42個原始設定單元,而AMD的新RDNA 2只有4個。但由於每個光柵引擎有6個TPC, GA102實際上有7個完整的原始系統,而Navi 21有4個。由於後者的時鐘並沒有比前者高75%,當涉及到幾何處理(儘管沒有遊戲可能在這方面受到限制)時,似乎英偉達在這方面具有明顯的領先優勢。

晶片組織的最後一層是RDNA 2中的計算單元(CU)和Ampere中的流式多處理器(SM),這是我們GPU工廠的生產線。

這些是圖形處理器餡餅中的肉和蔬菜,因為它們擁有所有用於處理圖形、計算和現在的光線追蹤著色器的高度可程式化單元。正如你在上圖中看到的,每一個晶片都只佔整個晶片空間的很小一部分,但是它們仍然是非常複雜的,並且對晶片的整體效能非常重要。

到目前為止,在兩個GPU的佈局和組織方式方面,還沒有什麼真正的突破性協定。術語全都不同,但是它們的功能卻大同小異。而且由於它們所做的很多事情都受可程式化性和靈活性的限制,因此一個相對於另一個所具有的任何優勢,都只能歸結為規模感,即哪個擁有最大的特色。

但是對於CU和SM,AMD和NVIDIA採取了不同的方式來處理著色器。在某些領域,它們有很多共同點,但在其他許多領域則並非如此。

計數核心是NVIDIA的方式

由於安培(Ampere)在RDNA 2之前就冒險進入野外,我們首先來看看NVIDIA的SM。現在沒有必要檢視裸片本身的影象,因為它們無法準確告訴我們其中的內容,因此讓我們使用組織圖。這些不應該代表晶片中各種元件的物理排列方式,而只是每種型別中存在多少種。

圖靈對其桌上型電腦前身Pascal進行了實質性更改(去掉了一堆FP64單元和暫存器,但是增加了張量核和光線跟蹤),而Ampere實際上是一個相當溫和的更新-至少從表面上看。不過,就NVIDIA的市場部門而言,新設計使每個SM中CUDA核心的數量增加了一倍以上。

在圖靈中,流多處理器包含四個分割區(有時稱為處理塊),每個分割區中容納16個INT32和16x FP32邏輯單元。這些電路旨在對32位元資料值執行非常具體的數學運算:INT單位處理整數,而FP單位處理浮點數(即十進位制)。

英偉達表示,一個Ampere SM總共有128個CUDA核心,但嚴格來說,這是不正確的-或者,如果我們必須堅持這一點,那麼圖靈(Turing)也是如此。該晶片中的INT32單元實際上可以處理浮點值,但只能以非常少量的簡單操作進行。對於Ampere,NVIDIA已開放了它們支援的浮點數學運算範圍,以匹配其他FP32單元。這意味著每個SM的CUDA核心總數並沒有真正改變。只是其中的一半現在擁有更多功能。

每個SM分割區中的所有核心都可以隨時處理同一條指令,但是由於INT / FP單元可以獨立執行,因此Ampere SM每個週期最多可以處理128x FP32計算,或一起處理64x FP32和64x INT32操作。而圖靈只是後者。

因此,新的GPU可能使FP32的輸出量比其上一代產品大一倍。對於計算工作負載,尤其是在專業應用程式中,這是向前邁出的一大步。但是對於遊戲而言,優勢卻遠遠沒有達到預期。當我們首次測試GeForce RTX 3080時,這一點很明顯,它使用啟用了68個SM的GA102晶片。

儘管FP32的峰值吞吐量比GeForce 2080 Ti高出121%,但平均幀速率僅提高了31%。那麼,為什麼所有這些計算能力都會浪費掉呢?一個簡單的答案是,遊戲並非一直在執行FP32指令。

當NVIDIA在2018年釋出Turing時,他們指出, GPU處理的指令平均約有36%涉及INT32例程。這些計算通常用於計算記憶體地址,兩個值之間的比較以及邏輯流/控制。

因此,對於這些操作,雙速率FP32功能不起作用,因為具有兩個資料路徑的單元只能執行整數或浮點運算。而且,只有在當時由它處理的所有32個執行緒都排隊處理相同的FP32操作時,SM分割區才會切換到此模式。在所有其他情況下,安培中的分割區與圖靈中的分割區一樣執行。

這意味著在INT + FP模式下執行時,GeForce RTX 3080之類的FP32僅比2080 Ti具有11%的FP32優勢。這就是為什麼在遊戲中看到的實際效能提升沒有原始資料所預期的那麼高的原因。

至於其他改進。每個SM分割區的Tensor Core更少,但每個都比Turing中的功能強大得多。這些電路執行非常具體的計算(例如將兩個FP16值相乘並用另一個FP16編號累加答案),每個核心現在每個週期執行32次這些操作。

它們還支援一種名為“細粒度結構稀疏性”的新特性,在不涉及所有細節的情況下,這意味著通過剔除那些對答案沒有影響的資料,計算率可以翻倍。同樣,這對於從事神經網路和人工智慧工作的專業人員來說是個好訊息,但目前對遊戲開發者來說並沒有什麼明顯的好處。

光線跟蹤核心也已進行了調整:它們現在可以獨立於CUDA核心工作,因此,在進行BVH遍歷或光線原始相交數學時,SM的其餘部分仍可以處理著色器。處理射線是否與原語相交測試的RT核心的部分效能也增加了一倍。

RT核心還具有附加的硬體,可幫助將光線跟蹤應用於運動模糊,但是此功能目前僅通過NVIDIA專有的Optix API公開。

還有其他一些調整,但是整體方法是明智但穩定的演進之一,而不是主要的新設計。但是考慮到圖靈的原始功能並沒有什麼特別的錯誤,因此看到這一點不足為奇。

那麼AMD怎麼辦?他們對RDNA 2中的計算單元做了什麼?

  • 首頁
  • 上一頁
  • 1
  • 2
  • 3
  • 下一頁
  • 尾頁
  • 全文

IT145.com E-mail:sddin#qq.com