Nvidia 的 RTX 4090 采用 Nvidia 的最新架構,以早期計算先驅Ada Lovelace的名字命名。與之前的架構 Ampere 相比,Ada Lovelace 享有制程節點優勢,使用臺積電為 GPU 定制的 4 納米制程。Nvidia 還強調了光線追蹤性能,以及旨在彌補啟用光線追蹤對性能造成的巨大影響的技術。但光線追蹤性能并不是唯一重要的事情,因為有很多游戲根本不支持光線追蹤。此外,大多數使用光線追蹤的游戲僅使用它來渲染某些效果;傳統的光柵化仍然負責渲染大部分場景。
我還覺得對光線追蹤的關注掩蓋了 Nvidia 工程師為提高其他領域的性能所做的工作。在本文中,我們將使用一組正在進行的微基準測試來研究 Nvidia 的 Ada Lovelace 架構。我們將關注影響各種工作負載性能的領域,無論是否有光線追蹤,特別強調緩存和內存子系統。
特別感謝Skyjuice在 RTX 4090 上運行測試。
GPU 概覽
SM 或流式多處理器構成了 Nvidia GPU 的基本構建塊。它們與 AMD 的 RDNA 和 RDNA 2 架構上的 WGP 或工作組處理器大致相當。SM 和 WGP 都具有 128 個 FP32 通道(或著色器,如果您愿意的話),并進一步分為四個塊,每個塊有 32 個通道。Ampere 最大的客戶端芯片 GA102 已經非常龐大。
GA102 框圖,來自 Nvidia 的白皮書 Ada Lovelace 表面上與 Ampere 相似,每個 SM 具有相似的計算特性。然而,它已經通過roof擴大了規模。AD102 有 144 個 SM,而 GA102 有 84 個,代表 SM 數量增加了 71%。RTX 4090 僅啟用了 128 個 SM,但這仍然代表了 52% 的增長。將其與較大的時鐘速度提升相結合,我們正在研究計算能力的巨大飛躍。
AD102 框圖,來自 Nvidia 的白皮書 但擴大 GPU 的規模不僅僅是復制和粘貼工作。GPU 往往需要來自內存子系統的大量帶寬,所有這些額外的 SM 都必須以某種方式提供。讓我們轉向我們正在進行的微基準測試,看看 Ada Lovelace 的內存層次結構。
緩存和內存延遲
我們正在啟動緩存和內存延遲基準測試,因為這將使我們對緩存設置有一個很好的了解。 與 Ampere 一樣,Ada Lovelace 堅持使用經過驗證的真正的兩級緩存方案。Nvidia 最近的兩種架構都為每個 SM 提供了一個大型 L1 緩存,但 Ada Lovelace 大大擴展了 L2 緩存。Ampere 具有傳統大小的 6 MB L2,但 AD102 包含 96 MB L2。RTX 4090 啟用了 72 MB 的二級緩存。從 Ampere 到 Ada Lovelace,Nvidia 沒有享受到顯著的 VRAM 帶寬增加,因此 Ada 的 L2 獲得了巨大的容量提升,以防止隨著計算容量的擴大而出現內存帶寬瓶頸。 AMD 的 RDNA 2 架構選擇了復雜的四級緩存系統,具有三級共享緩存。每個著色器陣列中有一個 128 KB 的 L1 來吸收來自相對較小 (16KB) 的 L0 緩存的緩存未命中流量。L2 的作用可與 Ampere 的 L2 相媲美,而大型 Infinity Cache 可幫助 AMD 通過更便宜(且功耗更低)的 VRAM 子系統實現高性能。
有趣的是,英特爾的 A770 的 L2 延遲與 RTX 4090 相似 Ada Lovelace 的緩存子系統具有令人印象深刻的延遲特性。第一級 SM 私有緩存看起來與 Ampere 的相似,但 Ada Lovelace 的更高時鐘速度使其具有整體延遲優勢。但 L2 是樂趣的開始。盡管容量比 Ampere 的 L2 增加了 12 倍,但 Nvidia 還是設法將延遲降低了大約 30 ns。Ampere 的 L2 在延遲方面接近 AMD 的 Infinity Cache,但 Ada Lovelace 的 L2 現在在容量和延遲方面位于 RDNA2 的 L2 和 Infinity Cache 之間。 與 Ampere 相比,RDNA 2 的緩存子系統看起來很有競爭力。這兩個交易在小測試規模上受到打擊,而 AMD 在 L2 規模及以上區域具有明顯優勢。Ada Lovelace 改變了這一點,隨著測試規模從 AMD 的 L2 溢出,Nvidia 現在享有明顯的優勢。Ada Lovelace 的內存延遲也有所下降,盡管這在很大程度上可能是由于更好的 L2 性能,因為必須在通往內存的路上檢查 L2。 隨著 Ada Lovelace 改進 L2,AMD 發現自己處于一個不舒服的位置,Nvidia 使用單級緩存來填補 AMD 的 L2 和 Infinity Cache 的角色。更少的緩存級別意味著更低的復雜性,以及更少的潛在標簽和每次內存訪問的狀態檢查。當然,更多的緩存級別意味著在容量、延遲和帶寬權衡方面具有更大的靈活性。RDNA 2 與 Ampere 相比無疑證明了這一點,它具有更快的 L2 緩存和更大的 Infinity Cache,幾乎與 Ampere 的 L2 一樣快。但艾達洛夫萊斯是一個不同的故事。
帶寬
延遲是影響 GPU 性能的一個因素,但帶寬也是一個因素,而且 GPU 往往比 CPU 更需要帶寬。首先,我們將使用單個 OpenCL 工作組測試帶寬。屬于同一工作組的線程能夠共享本地內存,這意味著它們將被限制在單個 WGP 或 SM 上運行。這是我們可以得到的最接近 GPU 單核帶寬測試的結果。
一旦我們進入 L2 及更高級別,RDNA 2 WGP 就比 Ampere SM 享有良好的帶寬優勢。Ada Lovelace 并沒有改變這一點,但 L2 帶寬確實比 Ampere 有所提高。再次,我們看到 Nvidia 的工程師在 L2 上做得非常出色。在 AMD 方面,我們開始看到 RDNA 2 非常擅長處理低占用工作負載的跡象。讓我們增加工作組數量來測試擴展,看看這種優勢能持續多久。
帶寬擴展
共享緩存設計很難,尤其是在 GPU 中,因為緩存必須連接到大量客戶端并滿足它們的帶寬需求。在這里,我們正在使用越來越多的工作組來測試帶寬。和以前一樣,每個工作組都必須使用單個 WGP 或 SM,因此我們看到共享緩存可以應對更多 WGP 和 SM 發揮作用并開始要求帶寬的能力。 Ada Lovelace 是對 Ampere 的明顯改進,并且在匹配的工作組數量下實現了更高的帶寬。使用 RTX 4090 的所有 SM 時,我們看到了驚人的 5 TB/s 帶寬——幾乎是使用 RTX 3090 的 84 個 SM 時看到的兩倍。Nvidia 成功地擴大了 L2 容量,同時也擴大了帶寬以支持大量 SM,這是一項了不起的成就。Ada Lovelace 在低入住率的情況下超越 Ampere 的能力是錦上添花。
AMD 在小型工作負載方面仍然具有優勢。RDNA 2 的 L2 在擴展方面尤其令人印象深刻,可以處理 40 個 WGP,要求最大帶寬,而不會出現爭用問題。大型 Infinity Cache 也表現不錯,在low occupancy.的情況下擊敗了 Ampere 和 Ada Lovelace。但與我們在英特爾的 Arc A770 上看到的不同,英偉達也不甘落后。 更重要的是,Ada Lovelace 在低占用率下的性能提升意味著 RDNA 2 失去優勢的速度比對抗 Ampere 的速度更快。由于有超過 24 個工作組在運行,Ada Lovelace 的 SM 可以從 L2 提取比 RDNA 2 的 WGP 從 Infinity Cache 獲得的更多帶寬。RDNA 2 的 L2 帶寬優勢一直持續到 Nvidia 擁有超過 50 個 SM。但是 RDNA 2 和 Ada Lovelace 之間的 L2 比較就不那么簡單了,因為 L2 容量不再像 RDNA 2 和 Ampere 那樣處于同一個范圍內。在高入住率下,Ampere 比 RDNA 2 具有相當大的優勢,但 Ada Lovelace 更進一步。RDNA 2 的 L2 和 Infinity Cache 與 Lovelace 的 L2 相比都處于明顯劣勢。 接下來,讓我們看看當測試大小大到足以溢出緩存時會發生什么。
我們測量的 RTX 4090 在高占用率下的理論帶寬高于理論帶寬,這可能是因為一些重復讀取被合并并廣播到多個 SM。我有沒有提到 GPU 測試很難? Ada Lovelace 的擴展速度不如 Ampere,但這種優勢并不是特別重要,因為 Ada Lovelace 應該為 L2 之外的更多內存訪問提供服務。VRAM 帶寬也沒有比 Ampere 顯著增加,但兩張 Nvidia 卡的絕對帶寬仍然很大。從角度來看,它們的理論顯存帶寬幾乎與 AMD 的 Radeon VII 一樣多,后者具有基于 HBM2 的顯存子系統。 AMD 的 RDNA 2 在低占用率下再次享有帶寬優勢,但 Nvidia 最近的架構為大型工作負載提供了更多的 VRAM 帶寬。AMD 也更依賴于他們的 Infinity Cache,因為他們的 VRAM 帶寬在加載十幾個 WGP 后停止擴展。 最后,讓我們測試 512 個工作組在高占用率下的帶寬。這應該讓每個 SM 或 WGP 有多個工作組可供使用,每個工作組中都有大量的并行性。
使用Nemes的基于 Vulkan 的帶寬測試獲得的 RTX 3090 結果。與此處的 OpenCL 結果不直接可比較,但無論如何都提供了上下文 由于 RTX 4090 的高時鐘速度和瘋狂的 SM 數量,Ada Lovelace 的 L1 帶寬突破了roof并破壞了該圖表上的比例。L2 緩存帶寬也不是開玩笑的,它比 Ampere 的帶寬有了很大的改進。即使 RDNA 2 可以為 L2 或 Infinity Cache 的內存訪問提供服務,RDNA 2 也難以與之競爭。AMD 確實為他們完成了工作。
本地內存延遲
在 GPU 上,本地內存是一小塊暫存器內存,由工作組中的所有線程共享,并且在工作組之外無法訪問。軟件必須明確地將數據加載到本地內存中,一旦工作組完成執行,本地內存內容就會消失。這使得本地內存更難使用,但作為交換,本地內存通常比普通的全局內存子系統提供更快和更一致的性能。本地內存的一種用途是在光線追蹤時存儲 BVH 遍歷堆棧。 Nvidia 將本地內存稱為“共享內存”,而 AMD 將其稱為“本地數據共享”或 LDS。
*由于時鐘斜坡非常緩慢,Nvidia Xavier 的測量可能不準確 與 Ampere 相比,Ada Lovelace 在本地內存延遲方面提供了不錯的改進,從而擴大了 Nvidia 在 RDNA 2 上的領先優勢。這里需要注意的是,Nvidia 的兩種架構都使用單個 128 KB 的 SRAM 塊作為 L1 緩存和本地內存。該架構可以通過改變標記 SRAM 的數量來提供 L1 高速緩存和本地內存大小的不同組合。相比之下,AMD 為每個 CU(WGP 的一半)使用 16 KB 的專用 L0 矢量緩存,以及 128 KB 的專用本地內存。這意味著 Nvidia 在實踐中將擁有更少的本地內存容量。
計算
試圖確定每個周期、每個 WGP 的吞吐量數據是一種令人沮喪的練習,因為很難確定 GPU 運行的時鐘速度。我們還需要調查 Nvidia 的 Ampere 和 Ada Lovelace 架構是否在我們的指令速率測試中做了一些奇怪的事情,這很難,因為我也不擁有。 至少據我們所知,Ada Lovelace 的表現很像 Ampere。常見 FP32 操作(如加法和融合乘法加法)的延遲保持在 4 個周期。用于比較的 RDNA 2 對這些操作有 5 個周期延遲。 總結各種操作的吞吐量特征:
RDNA 2 還以雙倍速率執行 FP16 操作。根據 Ada 白皮書,Ampere 和 Ada Lovelace 可以以 1:1 的速率執行 FP16,但我們無法驗證這一點,因為 Nvidia 卡都不支持 OpenCL 的 FP16 擴展。
Atomics延遲
與 CPU 非常相似,現代 GPU 支持原子操作以允許線程之間的同步。OpenCL 通過 atomic_cmpxchg 內在函數公開這些原子操作。這是我們可以在 GPU 上進行的最接近內核到內核延遲測試的方法。跟游戲有關系嗎?可能不會,因為我從未見過在游戲著色器代碼中使用這些指令。但是測試有趣嗎?是的。 與 CPU 不同,GPU 具有不同的atomic指令來處理本地和全局內存。本地內存(共享內存或 LDS)上的原子應該完全包含在 SM 或 WGP 中,因此應該比全局內存上的原子快得多。如果我們想稍微擴展一下,本地內存上的原子延遲大致相當于測量 CPU 內核上兄弟 SMT 線程之間的內核到內核延遲。
Ada Lovelace 在這里提供了對 Ampere 的增量改進,這在很大程度上可能是由于更高的時鐘速度。AMD 的 RDNA 2 在這項測試中表現非常出色。從絕對意義上說,有趣的是 GPU 上的“核心到核心”延遲如何與 Ryzen CPU 上的跨 CCX 訪問相媲美。
最后的話
審核編輯 :李倩
-
處理器
+關注
關注
68文章
19259瀏覽量
229652 -
gpu
+關注
關注
28文章
4729瀏覽量
128890 -
英偉達
+關注
關注
22文章
3770瀏覽量
90986
原文標題:英偉達最新GPU架構,深度解讀!
文章出處:【微信號:芯長征科技,微信公眾號:芯長征科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論