RDNA 3 代表了 AMD RDNA 架構(gòu)的第三次迭代,它在其消費(fèi)類圖形產(chǎn)品線中取代了 GCN。在較高層面上,與 RDNA 2 相比,RDNA 3 的目標(biāo)是大規(guī)模擴(kuò)展。緩存設(shè)置在各個(gè)層面進(jìn)行了調(diào)整,以提供更高的帶寬。為了擴(kuò)展計(jì)算吞吐量而不僅僅是添加更多 WGP,AMD 為通用指令的子集實(shí)現(xiàn)了雙重發(fā)布功能。
在本文中,我們將對(duì) 7900XTX 進(jìn)行一些微基準(zhǔn)測(cè)試,看看與 AMD 的 RDNA 2 架構(gòu)相比的差異。我們還將結(jié)合Nemes 的 GPU 微基準(zhǔn)測(cè)試套件的結(jié)果。雖然我對(duì) CPU 微基準(zhǔn)測(cè)試有相當(dāng)多的了解,但我無法將幾乎那么多的時(shí)間投入到我的 OpenCL bsaed 測(cè)試中。Nemes 在她基于 Vulkan 的 GPU 測(cè)試套件上取得了很好的進(jìn)展,她的測(cè)試在某些領(lǐng)域提供了更好的覆蓋。
內(nèi)存延遲
測(cè)試緩存和內(nèi)存延遲讓我們可以很好地了解 RDNA 3 的緩存和內(nèi)存設(shè)置。延遲測(cè)試在后 GCN AMD 圖形架構(gòu)上也很復(fù)雜,因?yàn)槿謨?nèi)存層次結(jié)構(gòu)可以通過標(biāo)量或矢量數(shù)據(jù)路徑訪問,它們具有不同的一級(jí)緩存。如果編譯器確定加載的值在整個(gè)波前(wavefront)是恒定的,它可以告訴 GPU 使用標(biāo)量數(shù)據(jù)路徑。因?yàn)闃?biāo)量路徑用于延遲敏感的東西,比如計(jì)算波前負(fù)載的內(nèi)存地址,延遲是相當(dāng)不錯(cuò)的(對(duì)于 GPU)。在訪問全局內(nèi)存時(shí),AMD 大量使用矢量和標(biāo)量端。確切的比例會(huì)因工作量而異,但通常兩者都很重要。
Radeon GPU Profiler 的統(tǒng)計(jì)數(shù)據(jù)顯示了在 RDNA 2 上運(yùn)行的幾個(gè)工作負(fù)載上執(zhí)行的指令混合。SMEM(標(biāo)量路徑)和 VMEM(矢量路徑)都用于命中全局內(nèi)存。
讓我們從標(biāo)量方面開始。與 RDNA 2 一樣,RDNA 3 具有 16 KB、4 路組關(guān)聯(lián)標(biāo)量緩存。此緩存的加載到使用延遲非常好,RDNA 3 為 15.4 ns,RDNA 2 為 17.4 ns。RDNA 3 的延遲優(yōu)勢(shì)至少部分歸功于更高的時(shí)鐘速度。Nvidia 的 Ada Lovelace 在到達(dá) SM 的 L1 時(shí)的延遲稍好一些,考慮到 Nvidia 緩存的大小,這令人印象深刻。我們?cè)谶@里看到 64 KB 的 L1 緩存容量,但 Ada Lovelace 實(shí)際上有一個(gè) 128 KB 的 SRAM 塊,可以在 L1 和共享內(nèi)存 (LDS) 使用之間靈活分區(qū)。
AMD 還增加了 L1 和 L2 中級(jí)緩存的容量,以便更好地處理更大 GPU 的帶寬需求。RDNA 2 有一個(gè) 128 KB、16 路集關(guān)聯(lián) L1,在著色器陣列中共享。RDNA 3 將容量翻倍至 256 KB,同時(shí)保持 16 向結(jié)合性。L2 緩存容量增加到 6 MB,而 RDNA 2 上為 4 MB,同時(shí)還保持 16 路關(guān)聯(lián)性。盡管容量有所增加,但 RDNA 3 在 L1 和 L2 上都提供了可測(cè)量的延遲改進(jìn)。
AMD 的幻燈片描述了 RDNA 3 的緩存系統(tǒng)
然而,RDNA 3 的 Infinity Cache 有所退步。容量從 128 MB 減少到 96 MB,同時(shí)延遲增加。這并不奇怪,因?yàn)?RDNA 3 的 Infinity Cache 是在單獨(dú)的內(nèi)存控制器芯片上實(shí)現(xiàn)的。但這也不應(yīng)該是一個(gè)大問題。RDNA 3 可能能夠通過其片上 L2 為更多內(nèi)存訪問提供服務(wù),而不必經(jīng)常訪問 Infinity Cache。
為了減少內(nèi)存帶寬需求,Nvidia 選擇大規(guī)模擴(kuò)展 L2 而不是添加另一級(jí)緩存。與 AMD 最近的 GPU 相比,這稍微提高了 L2 延遲,但確實(shí)提供了比 Ada Lovelace 更優(yōu)越的延遲特性,以應(yīng)對(duì)數(shù)十兆字節(jié)范圍內(nèi)的內(nèi)存占用。RTX 4090 的 L2 容量為 72 MB,比芯片上實(shí)際存在的 96 MB SRAM 有所縮減。
與 RDNA 2 相比,RDNA 3 上的 VRAM 延遲略有上升。Nvidia 在該領(lǐng)域具有優(yōu)勢(shì),部分原因是 AMD 在前往 DRAM 的途中檢查額外級(jí)別的緩存時(shí)會(huì)產(chǎn)生額外的延遲。
矢量延遲
當(dāng)然,矢量路徑的延遲也很重要,因此我修改了測(cè)試以防止編譯器確定加載的值在整個(gè)波前保持不變。從矢量方面來看,AMD 發(fā)現(xiàn)延遲增加了,但矢量訪問對(duì)延遲的敏感度應(yīng)該較低。向量緩存的設(shè)計(jì)也發(fā)揮了作用——與 4 路標(biāo)量緩存相比,它在 RDNA 2 和 RDNA 3 上都是 32 路組關(guān)聯(lián)。在一次查找中檢查 32 個(gè)標(biāo)簽可能會(huì)比檢查四個(gè)標(biāo)簽產(chǎn)生更高的延遲。
盡管如此,與 RDNA 2 相比,RDNA 3 設(shè)法減少了 L0 向量緩存延遲,同時(shí)將容量翻了一番,達(dá)到每個(gè) CU 32 KB。
在緩存層次結(jié)構(gòu)的下方,延遲特性主要反映標(biāo)量端的特性,盡管絕對(duì)延遲當(dāng)然更高。當(dāng)我們從矢量端進(jìn)行測(cè)試時(shí),RDNA 2 的 VRAM 延遲優(yōu)勢(shì)也會(huì)降低。這兩種架構(gòu)在 1 GB 的測(cè)試大小下結(jié)束了幾納秒,這基本上沒有。
內(nèi)存帶寬
Radeon 7900 XTX 比 6900 XT 擁有更多的 WGP。同時(shí),每個(gè) WGP 都有更多的計(jì)算吞吐量,因此必須加強(qiáng)內(nèi)存子系統(tǒng)來滿足它們的需求。因此,RDNA 3 在內(nèi)存子系統(tǒng)的每個(gè)級(jí)別都看到了巨大的帶寬增加。L1 和 L2 緩存的增益尤其顯著,與 RDNA 2 相比,帶寬大約翻了一番,盡管它們的容量也有所增加。
使用 Nemes 的帶寬測(cè)試,因?yàn)樗任业母蓛舻匾绯鼍彺婕?jí)別
Infinity Cache 帶寬也有大幅增加。使用純讀取訪問模式,我們無法獲得理論上可能實(shí)現(xiàn)的 2.7 倍帶寬增長(zhǎng)。盡管如此,1.8 倍的帶寬提升并不是開玩笑的??紤]到 Infinity Cache 在不同的小芯片上物理實(shí)現(xiàn),帶寬優(yōu)勢(shì)令人印象深刻,而 RDNA 2 將 Infinity Cache 保留在芯片上。
AMD 還為 7900XTX 配備了更大的 GDDR6 設(shè)置,使其帶寬比 6900XT 高得多。事實(shí)上,它的 VRAM 帶寬更接近 GA102 的帶寬。這可能使 AMD 能夠保持高性能,同時(shí)減少末級(jí)緩存的數(shù)量,從而允許使用更小的內(nèi)存控制器芯片。
占用率較低時(shí)的帶寬
現(xiàn)代 GPU 旨在利用大量顯式并行性。但是一些工作負(fù)載沒有足夠的并行性來填充所有可用的計(jì)算單元。頂點(diǎn)著色器,我在看著你。Nemes 的測(cè)試套件目前沒有為較低的工作組數(shù)量提供結(jié)果,所以我在這里使用 OpenCL 結(jié)果。
讓我們從單個(gè)工作組的帶寬開始。運(yùn)行單個(gè)工作組將我們限制在 AMD 上的單個(gè) WGP,或 Nvidia 架構(gòu)上的 SM。這是我們可以在 CPU 上獲得的最接近單核帶寬的值。與 CPU 上的單核帶寬一樣,此類測(cè)試并不特別代表任何現(xiàn)實(shí)世界的工作負(fù)載。但它確實(shí)讓我們從單個(gè)計(jì)算單元的角度了解了內(nèi)存層次結(jié)構(gòu)。
同樣,我們可以看到 RDNA 3 更大的片上緩存。從單個(gè) WGP 的角度來看,所有這三個(gè)緩存級(jí)別都提供了更高的帶寬。Nvidia 有一個(gè)非常大和快速的一級(jí)緩存,但在那之后,只要它可以服務(wù)于 L1 或 L2 的訪問,AMD 就有優(yōu)勢(shì)。
從 Infinity Cache 來看,RDNA 3 的日子更難過,這可能是因?yàn)閱蝹€(gè) WGP 沒有獲得足夠的內(nèi)存級(jí)并行能力增加來吸收 Infinity Cache 延遲的增加。事實(shí)上,一個(gè) WGP 的 Infinity Cache 帶寬與 RDNA 2 中的帶寬相比有所下降。當(dāng)我們使用 VRAM 時(shí),情況再次翻轉(zhuǎn),RDNA 3 領(lǐng)先。
帶寬縮放
共享緩存很好,因?yàn)榭梢愿行У厥褂盟鼈兊娜萘俊9蚕砭彺婵梢源鎯?chǔ)數(shù)據(jù)一次并為來自多個(gè)計(jì)算單元的請(qǐng)求提供服務(wù),而不是在多個(gè)私有緩存之間復(fù)制共享數(shù)據(jù)。然而,共享緩存很難實(shí)現(xiàn),因?yàn)樗仨毮軌蛱幚硭锌蛻舳说膸捫枨蟆?/p>
我們將從 L2 帶寬開始,因?yàn)?L0 和 L1 帶寬幾乎呈線性擴(kuò)展。L2 縮放更難實(shí)現(xiàn),因?yàn)閱蝹€(gè) 6 MB L2 緩存必須為 GPU 上的所有 48 個(gè) WGP 提供服務(wù)??紤]到這一點(diǎn),RDNA 3 的 L2 在擴(kuò)展方面做得非常好,可以滿足所有這些 WGP 的帶寬需求。隨著 WGP 數(shù)量的增加,RDNA 3 的 L2 帶寬開始遠(yuǎn)離 RDNA 2。
與 Nvidia 的 Ada Lovelace 相比,這兩種 AMD 架構(gòu)都能夠?yàn)槠ヅ涞墓ぷ鹘M數(shù)量提供更多的 L2 帶寬。但是,RTX 4090 具有更大的一級(jí)緩存,應(yīng)該可以減少 L2 流量。Ada Lovelace 的 L2 也起著稍微不同的作用,兼作某種 Infinity Cache??紤]到其非常大的容量,Nvidia 的 L2 表現(xiàn)非常出色。如果我們與具有相似容量的 RDNA 3 的 Infinity Cache 進(jìn)行比較,Ada 的 L2 在低占用率下保持相似的帶寬。當(dāng) Ada 的所有 SM 都發(fā)揮作用時(shí),Nvidia 將享有巨大的帶寬優(yōu)勢(shì)。當(dāng)然,AMD 的 Infinity Cache 不需要提供那么多的帶寬,因?yàn)?L2 緩存通常會(huì)吸收相當(dāng)比例的 L1 未命中流量。
與 RDNA 2 相比,RDNA 3 的 Infinity Cache 的提升速度稍慢,并且加載不到其 WGP 的一半處于劣勢(shì)。但是,當(dāng)工作負(fù)載擴(kuò)展到填滿所有 WGP 時(shí),RDNA 3 的 Infinity Cache 顯示出比 RDNA 2 更大的帶寬優(yōu)勢(shì)。
4090 夸大了其最大內(nèi)存帶寬,因?yàn)槲覀兊臏y(cè)試無法完全擊敗 4090 上的讀取組合
從 VRAM 來看,兩種 AMD 架構(gòu)都以低占用率享有非常好的帶寬。
RDNA 3 從一個(gè)小優(yōu)勢(shì)開始,隨著更多 WGP 發(fā)揮作用而變得更大。從另一個(gè)角度來看,RDNA 2 的 256 位 GDDR6 設(shè)置可能僅用 10 個(gè) WGP 就可以飽和。RDNA 3 更大的 VRAM 子系統(tǒng)可以滿足更多需要全帶寬的 WGP。如果僅加載少量 SM,Nvidia 在 VRAM 帶寬方面會(huì)遇到更多麻煩,但在占用率較高時(shí)處于領(lǐng)先地位。
本地內(nèi)存延遲
除了常規(guī)的全局內(nèi)存層次結(jié)構(gòu)之外,GPU 還具有快速暫存器內(nèi)存。OpenCL 調(diào)用這個(gè)本地內(nèi)存。在 AMD GPU 上,相應(yīng)的結(jié)構(gòu)稱為本地?cái)?shù)據(jù)共享 (LDS)。Nvidia GPU 稱之為共享內(nèi)存。與緩存不同,軟件必須明確分配和管理本地內(nèi)存容量。一旦數(shù)據(jù)在 LDS 中,軟件就可以期望有保證的高帶寬和低延遲訪問該數(shù)據(jù)。
與前幾代 RDNA 一樣,每個(gè) RDNA 3 WGP 都有一個(gè) 128 KB 的 LDS。LDS 內(nèi)部構(gòu)建有兩個(gè) 64 KB 塊,每個(gè)塊都隸屬于 WGP 中的一個(gè) CU。每個(gè) 64 KB 塊包含 32 個(gè)存儲(chǔ)區(qū),每個(gè)存儲(chǔ)區(qū)可以處理 32 位寬的訪問。這使得 LDS 可以在每個(gè)周期為波前范圍的負(fù)載提供服務(wù)。我們目前沒有針對(duì) LDS 帶寬的測(cè)試,但 RDNA 3 似乎具有非常低的延遲 LDS。
*Xavier 結(jié)果可能不準(zhǔn)確,因?yàn)樵?GPU 上的時(shí)鐘斜坡非常慢
由于架構(gòu)改進(jìn)和更高的時(shí)鐘速度相結(jié)合,RDNA 3 大大改善了 LDS 延遲。Nvidia 的本地內(nèi)存延遲略高于 AMD 的架構(gòu),但 RDNA 3 改變了這一點(diǎn)。當(dāng) RDNA 3 處理光線追蹤時(shí),低 LDS 延遲可能非常有用,因?yàn)?LDS 用于存儲(chǔ) BVH 遍歷堆棧。
作為比較,RDNA 2 的 LDS 具有與其標(biāo)量緩存大致相同的加載到使用延遲。它仍然非常有用,因?yàn)樗梢员葟?L0 向量緩存中更快地將數(shù)據(jù)放入向量寄存器。我檢查了這個(gè)測(cè)試的編譯代碼,它正在使用向量寄存器,即使工作組中除了一個(gè)線程之外的所有線程都被屏蔽了。
WGP 計(jì)算特性
相比RDNA 2,RDNA 3在計(jì)算吞吐量上明顯有很大優(yōu)勢(shì)。畢竟,它具有更高的 WGP 計(jì)數(shù)。但計(jì)算吞吐量的潛在增長(zhǎng)不止于此,因?yàn)?RDNA 3 的 SIMD 獲得了有限的雙重發(fā)布能力。在 wave32 模式下,某些常用操作可以打包到單個(gè) VOPD(向量操作,對(duì)偶)指令中。在 wave64 模式下,SIMD 自然會(huì)嘗試在單個(gè)周期內(nèi)開始執(zhí)行 64 寬波前,前提是指令可以雙重發(fā)出。
RDNA 3 VOPD 指令以八個(gè)字節(jié)編碼,并支持兩個(gè)操作中的每一個(gè)的兩個(gè)源和一個(gè)目標(biāo)。這不包括需要三個(gè)輸入的操作,例如通用的融合乘加操作。雙重發(fā)行機(jī)會(huì)進(jìn)一步受到可用執(zhí)行單元、數(shù)據(jù)依賴性和寄存器文件帶寬的限制。
同一位置的操作數(shù)不能從同一寄存器組(register bank)讀取。早些時(shí)候我們推測(cè)這是handling bank 沖突的局限性。然而,AMD 的 ISA 手冊(cè)明確指出,每個(gè)存儲(chǔ)體實(shí)際上都有一個(gè)寄存器緩存,其中包含三個(gè)讀取端口,每個(gè)端口都與一個(gè)操作數(shù)位置相關(guān)聯(lián)。來自相同源位置的相同存儲(chǔ)體的兩次讀取將超額訂閱寄存器高速緩存端口。另一個(gè)限制適用于目標(biāo)寄存器,它不能同時(shí)是偶數(shù)或奇數(shù)。
在此測(cè)試中,我們運(yùn)行單個(gè)工作組以將測(cè)試保持在 WGP 的本地。由于最近 GPU 上的提升行為變化很大,我們將時(shí)鐘鎖定到 1 GHz 以深入了解每個(gè)時(shí)鐘的行為。
我的測(cè)試肯定高估了 Ada 的 FP32 和 INT32 添加,或者 2.7 GHz 時(shí)鐘速度的假設(shè)已關(guān)閉
不幸的是,通過 OpenCL 進(jìn)行測(cè)試很困難,因?yàn)槲覀円蕾嚲幾g器來尋找雙重問題機(jī)會(huì)。我們只看到 FP32 添加令人信服的雙重問題行為,其中編譯器發(fā)出 v_dual_add_f32 指令?;旌?INT32 和 FP32 加法測(cè)試看到了一些好處,因?yàn)?FP32 加法是雙重發(fā)出的,但由于缺少用于 INT32 操作的 VOPD 指令,因此無法為 INT32 生成 VOPD 指令。用于計(jì)算 GPU 的標(biāo)題 TFLOPs 數(shù)的融合乘加看到很少發(fā)出雙重問題指令。兩種架構(gòu)都可以雙倍速率執(zhí)行 16 位操作,盡管這與 RDNA 3 的新雙發(fā)射功能無關(guān)。相反,16 位指令受益于以壓縮數(shù)學(xué)模式發(fā)出的單個(gè)操作。在其他主要類別中,吞吐量與 RDNA 2 基本相似。
為融合乘加測(cè)試生成的 RDNA 3 代碼,雙問題對(duì)標(biāo)記為紅色
我猜 RDNA 3 的雙發(fā)模式影響有限。它在很大程度上依賴于編譯器來尋找 VOPD 的可能性,而編譯器在看到非常簡(jiǎn)單的優(yōu)化時(shí)愚蠢得令人沮喪。例如,上面的 FMA 測(cè)試對(duì)兩個(gè)輸入使用一個(gè)變量,這應(yīng)該使編譯器能夠滿足雙重問題約束。但顯然,編譯器并沒有讓它發(fā)生。我們還使用 clpeak 進(jìn)行了測(cè)試,并在那里看到了類似的行為。即使編譯器能夠發(fā)出 VOPD 指令,只有在計(jì)算吞吐量成為瓶頸而不是內(nèi)存性能時(shí),性能才會(huì)提高。
從 AMD 的新聞稿中幻燈片,注意到新的雙重發(fā)行能力
另一方面,VOPD 確實(shí)留下了改進(jìn)的潛力。AMD 可以通過用手動(dòng)優(yōu)化的程序集替換已知的著色器來優(yōu)化游戲,而不是依賴于編譯器代碼生成。與編譯器所希望的相比,人類更善于發(fā)現(xiàn)雙重問題機(jī)會(huì)。Wave64 模式是另一個(gè)機(jī)會(huì)。在 RDNA 2 上,AMD 似乎將許多像素著色器編譯為 wave64 模式,在這種模式下,雙重問題可能會(huì)在編譯器沒有任何調(diào)度或寄存器分配智能的情況下發(fā)生。
一旦 AMD 有更多時(shí)間優(yōu)化架構(gòu),看看 RDNA 3 的性能將會(huì)很有趣,但他們絕對(duì)有理由不將 VOPD 雙問題功能作為額外的著色器來宣傳。通常,GPU 制造商使用著色器計(jì)數(shù)來描述他們的 GPU 每個(gè)周期可以完成多少 FP32 操作。理論上,VOPD 將使每個(gè) WGP 的 FP32 吞吐量翻倍,除了額外的執(zhí)行單元外,硬件開銷非常小。但它是通過將繁重的調(diào)度責(zé)任推給編譯器來實(shí)現(xiàn)的。AMD 可能意識(shí)到編譯器技術(shù)無法勝任這項(xiàng)任務(wù),而且不會(huì)很快達(dá)到目標(biāo)。
在指令延遲方面,RDNA 3 與之前的 RDNA 架構(gòu)相似。常見的 FP 操作以 5 個(gè)周期的延遲執(zhí)行。Nvidia 在這方面略有優(yōu)勢(shì),能夠以 4 個(gè)周期的延遲執(zhí)行常見操作。
GPU 不進(jìn)行分支預(yù)測(cè),也不像 CPU 那樣具有強(qiáng)大的標(biāo)量執(zhí)行能力,因此循環(huán)開銷通常會(huì)導(dǎo)致延遲被高估,即使在展開時(shí)也是如此
從圖靈開始,Nvidia 也實(shí)現(xiàn)了非常好的整數(shù)乘法性能。整數(shù)乘法在著色器代碼中似乎極為罕見,而且 AMD 似乎也沒有針對(duì)它進(jìn)行優(yōu)化。32 位整數(shù)乘法的執(zhí)行速度約為 FP32 的四分之一,而且延遲也相當(dāng)高。
全 GPU 吞吐量——Vulkan
在這里,我們使用 Nemes 的 GPU 基準(zhǔn)測(cè)試套件來測(cè)試完整的 GPU 吞吐量,其中考慮了所有 WGP 處于活動(dòng)狀態(tài)時(shí)的加速時(shí)鐘。RDNA 3 通過 VOPD 指令、更高的 WGP 計(jì)數(shù)和更高的時(shí)鐘速度實(shí)現(xiàn)更高的吞吐量。奇怪的是,AMD的編譯器非常愿意將Nemes的測(cè)試代碼序列轉(zhuǎn)化為VOPD指令。
為了從每秒操作中獲得 FLOP 數(shù),將 FMA 數(shù)乘以 2,這為 FP32 和 FP16 FMA 計(jì)算提供了 62.9 TFLOP。
結(jié)果是 FP32 吞吐量大幅增加。FP16 的吞吐量增加較小,因?yàn)?RDNA 2 能夠使用打包的 FP16 執(zhí)行,以及 v_pk_add_f16 等指令。這些指令將每個(gè) 32 位寄存器解釋為兩個(gè) 16 位元素,從而使吞吐量翻倍。RDNA 3 做同樣的事情,但不能雙重發(fā)出這樣的打包指令。奇怪的是,RDNA 3 實(shí)際上在 FP64 吞吐量上倒退了。我們之前已經(jīng)在 OpenCL 中看到了這一點(diǎn),其中一個(gè) RDNA 2 WGP 每個(gè)周期可以執(zhí)行八個(gè) FP64 操作。RDNA 3 將吞吐量減半,這意味著 WGP 可以執(zhí)行四次 FP64 操作——可能每個(gè)周期每個(gè) SIMD 一個(gè)。
兩個(gè) GPU 上特殊操作的吞吐量都較低。倒數(shù)通常用作避免昂貴的除法運(yùn)算的一種方式,并且在兩種體系結(jié)構(gòu)上都以四分之一的速率運(yùn)行。除法甚至更慢,對(duì)整數(shù)運(yùn)算進(jìn)行模塊化運(yùn)算與進(jìn)行 FP64 一樣慢。
現(xiàn)在,讓我們談?wù)?AMD 聲稱的 123TFLOP FP16 數(shù)字。雖然這在技術(shù)上是正確的,但這個(gè)數(shù)字有很大的局限性。查看 RDNA3 ISA 文檔,只有一個(gè) VOPD 指令可以同時(shí)發(fā)出打包的 FP16 指令和另一個(gè)可以使用打包的 BF16 數(shù)字的指令。
這些是可以使用壓縮數(shù)學(xué)的 2 條 VOPD 指令。
這意味著標(biāo)題 123TF FP16 數(shù)字只會(huì)在非常有限的場(chǎng)景中看到,主要是在 AI 和 ML 工作負(fù)載中,盡管游戲已經(jīng)開始更頻繁地使用 FP16。
PCIe鏈路
Radeon 7900 XTX 通過 PCIe 4.0 x16 鏈接連接到主機(jī)。與 RDNA 2 一樣,AMD 的新圖形架構(gòu)在將數(shù)據(jù)移動(dòng)到 GPU 時(shí)表現(xiàn)非常出色,尤其是在中等大小的塊中。從 GPU 獲取數(shù)據(jù)時(shí)傳輸速率較低。
使用 Smcelrea 的 6700 XT 結(jié)果是因?yàn)槲业?6900 XT 沒有設(shè)置可調(diào)整大小的 BAR,這似乎會(huì)影響 OpenCL 帶寬結(jié)果。
Nvidia 處于中間位置,在所有副本大小和方向上都具有不錯(cuò)的傳輸速度。在大拷貝尺寸下,Nvidia 似乎比 AMD 在 PCIe 傳輸帶寬方面具有優(yōu)勢(shì)。
內(nèi)核啟動(dòng)延遲
在這里,我們使用clpeak來估計(jì) GPU 啟動(dòng)內(nèi)核并報(bào)告其完成所需的時(shí)間。Clpeak 通過向 GPU 提交極少量的工作并測(cè)試完成所需的時(shí)間來做到這一點(diǎn)。
Terascale 2 在這里做什么?5850怎么還活著?不要質(zhì)疑它......
結(jié)果似乎相差很大,我們無法將平臺(tái)與我們的測(cè)試模型相匹配。然而,我們可以看出 RDNA 3 沒有任何異常。Nvidia 的 GPU 內(nèi)核啟動(dòng)速度可能稍快一些,但由于我們無法匹配平臺(tái),因此很難得出任何結(jié)論。
最后的話
AMD 的 RDNA 2 架構(gòu)使該公司的 GPU 與 Nvidia 的最佳性能相差無幾,這標(biāo)志著 AMD 與 Nvidia 最高端卡的距離達(dá)到了另一個(gè)例子。
RDNA 3 希望通過擴(kuò)大 RDNA 2 來推進(jìn)這一點(diǎn),同時(shí)引入旨在提高性能的架構(gòu)改進(jìn),而不僅僅是添加 WGP。AMD 采用多管齊下的策略來實(shí)現(xiàn)這一目標(biāo)。
在物理實(shí)現(xiàn)方面,AMD 轉(zhuǎn)向了臺(tái)積電更先進(jìn)的 5 納米工藝節(jié)點(diǎn)。5 nm 允許更高的晶體管密度,并在沒有膨脹區(qū)域的情況下改進(jìn) WGP。因此,WGP 獲得了增加的寄存器文件大小和雙重發(fā)布能力。Chiplet 技術(shù)通過將 Infinity Cache 和內(nèi)存控制器移動(dòng)到單獨(dú)的芯片上,可以實(shí)現(xiàn)更小的 5 納米主芯片。這有助于通過在圖形芯片上使用更少的區(qū)域來實(shí)現(xiàn) VRAM 連接,從而實(shí)現(xiàn)更高帶寬的 VRAM 設(shè)置。
更高的帶寬是支持更大 GPU 的關(guān)鍵,而 AMD 超越了 VRAM 帶寬。緩存帶寬在每個(gè)級(jí)別都會(huì)增加。AMD 還增加了片上緩存的容量,因?yàn)榧词乖谄g有中介層,片外訪問也更耗電。即使采用小芯片設(shè)置,AMD 也需要最大限度地提高面積效率,dual issue 就是一個(gè)很好的例子。VOPD 指令允許 AMD 為最常見的操作添加額外的執(zhí)行單元,但在其他地方的額外開銷很少。AMD 還增加了矢量寄存器文件容量,這應(yīng)該有助于提高占用率。而且,它們極大地減少了 LDS 延遲。光線追蹤似乎是這一變化的明顯受益者。
結(jié)果是 GPU 的性能非常接近 Nvidia 的 RTX 4080。根據(jù)Hardware?Unboxed,7900 XTX 在 1440p 時(shí)慢 1%,在 4K 時(shí)快 1%。AMD 沒有使用非常大的 WGP/SM 數(shù)量,而是通過提高每個(gè) WGP 的吞吐量來實(shí)現(xiàn)其性能。他們還專注于為 WGP 提供更復(fù)雜的內(nèi)存層次結(jié)構(gòu)。與上一代相比,最后一級(jí)緩存的總?cè)萘坑兴陆?,因?yàn)?384 位內(nèi)存總線意味著 RDNA 3 不需要那么高的緩存命中率來避免帶寬瓶頸。
?
AMD 和 Nvidia 因此做出不同的權(quán)衡以達(dá)到相同的性能水平。通過將緩存和內(nèi)存控制器放在單獨(dú)的 6 納米芯片上,小芯片設(shè)置幫助 AMD 在領(lǐng)先的工藝節(jié)點(diǎn)中使用比 Nvidia 更少的芯片面積。作為交換,AMD 必須支付更昂貴的封裝解決方案費(fèi)用,因?yàn)楹?jiǎn)單的封裝走線在處理 GPU 的高帶寬要求方面表現(xiàn)不佳。
Nvidia 將所有東西都放在一個(gè)更大的芯片上,采用尖端的 4 納米節(jié)點(diǎn)。這使得 4080 的 VRAM 帶寬和緩存比 7900 XTX 更少。它們的晶體管密度在技術(shù)上低于 AMD,但這是因?yàn)?Nvidia 更高的 SM 數(shù)量意味著與寄存器文件和 FMA 單元相比它們具有更多的控制邏輯。每個(gè) SM 更少的執(zhí)行單元意味著 Ada Lovelace 將更容易讓這些執(zhí)行單元得到滿足。
Nvidia 還具有更簡(jiǎn)單的緩存層次結(jié)構(gòu)的優(yōu)勢(shì),它仍然提供相當(dāng)大的緩存容量。
無論如何,很高興看到 AMD 和 Nvidia 在 Nvidia 多年無可置疑的領(lǐng)先優(yōu)勢(shì)之后繼續(xù)正面交鋒。希望這會(huì)導(dǎo)致未來 GPU 價(jià)格下降,以及雙方更多的創(chuàng)新。
編輯:黃飛
?
評(píng)論