首頁 > 軟體

AMD RDNA與GCN GPU架構之間的區別:Radeon如何適應NVIDIA

2021-05-15 01:00:35

隨著Big Navi顯示卡的釋出,AMD終於重回高階GPU空間。儘管RDNA 2設計在計算和圖形流水線方面與RDNA 1非常相似,但仍有一些更改允許包含Infinity Cache和高提升時鐘。

下面,我們將討論Navi GPU與由GCN架構提供支援的傳統Vega和Polaris部件有何不同。

AMD的GCN架構為Radeon顯示卡提供了近十年的支援。儘管該設計具有強大的Compute Engine,硬體排程程式和統一記憶體等優勢,但對於遊戲而言並不是十分有效。與當代NVIDIA部件相比,硬體利用率相當差,每個著色引擎的前11個CU後縮放比例急劇下降,並且總體而言,每個GPU使用64個以上的CU是不可行的。

結果,儘管採用了強大的計算架構,AMD的GCN GPU(Vega)卻屢屢輸給NVIDIA的高階遊戲產品,同時卻獲得了更高的效能。

RDNA是GPU架構,而Navi是使用它構建的圖形處理器的代號。同樣,GCN是體系結構,而Vega和Polaris是代號。

支援Navi 10和Navi 14 GPU(Radeon RX 5500 XT,5600 XT和5700 / XT)的第一代RDNA架構基於與GCN相同的構造塊:一種向量處理器,帶有一些用於地址計算和控制的專用標量流,非同步運行的獨立計算和圖形流水線。稱為流處理器的ALU提供了計算能力,命令處理器(與ACE一起)處理每個計算單元的工作量排程。

核心區別在於RDNA重組了GCN的基本元件,以實現更高的IPC,更低的延遲和更高的效率。這就是Navi的全部意義:用更少的硬體就能完成更多的工作!

AMD GCN:功能強大但未充分利用

AMD的GCN圖形體系結構每個計算單元包含64個波前或工作項(以及ALU /核心)。它們分為四個SIMD(多種資料類型的單個指令),每個SIMD包裝16個ALU(SP)。

這是大多數人感到困惑的地方。是的,這是真的,排程可能每四個週期後發出新一波的群體,但同時每個計算單元也將上工作464項波,而不是一個64項波。像推土機一樣,目標是最大程度地實現並行化。同時,GCN並不是亂序的架構。波前的指令仍按其順序執行。區別在於CU或SIMD可以切換到四個可用波中的任何一個。

之所以不太有效,是因為大多數遊戲使用較短的工作佇列,因為每個執行週期只有四個波前中的一個或兩個飽和。因此,具有相同著色器數量的競爭NVIDIA GPU憑藉其超標量體系結構要快得多,並且只需一到兩個週期即可執行這些較短的排程。另一方面,儘管有更多波前的餘地,AMD同行仍需要等待四個週期才能進行下一個週期。

每個向量可以對多個數據集執行相同的指令。向量排程的工作原理是,始終有一條指令要在多個項目上執行。如果只有一兩套可用,則其餘插槽將在該週期內處於空閒狀態。

總結起來,與許多其他SIMD設計一樣,GCN計算單元一次在四個波前工作,並花費四個週期來執行它們。在理想世界中,這意味著一波的有效時間為一個週期。但是,由於SIMD的工作方式,情況並非如此,並且CU經常未得到充分利用。

AMD RDNA:雙重計算架構和Wave32

在Navi中實現的RDNA架構使用wave32,這是一個具有32個工作項的較窄波前。它比舊的wave64設計更簡單,更有效。每個SIMD較寬,但計算單位較窄。

在計算單元是GCN中基本著色器單元的地方,RDNA用WGP(工作組處理器)代替了它:兩個CU與共享的本地資料協同工作。RDNA SIMD由32個著色器或ALU組成,是GCN的兩倍。每個CU有兩個SIMD,雙計算單元中有四個。CU中的流處理器總數仍為64,但是它們分佈在兩個(不是四個)較寬的SIMD中。參閱四個週期VS每指令的一個週期以下進一步示圖。

RDNA SIMD由32個著色器或ALU組成,是GCN的兩倍。每個CU有兩個SIMD,雙計算單元中有四個。CU中的流處理器總數仍為64,但是它們分佈在兩個(不是四個)較寬的SIMD中。

這種安排允許在一個時鐘週期內執行一個完整的波前,從而減少瓶頸並將IPC提升4倍。通過更快地完成4倍的波前,可以更快地釋放寄存器和快取記憶體,從而總體上可以排程更多的指令。此外,wave32使用的寄存器數量是wave64的一半,從而也降低了電路複雜度和成本。

為了適應較窄的波前,向量寄存器檔案也已進行了重組。每個向量通用寄存器(vGPR)現在包含32個32位寬的通道(對於FP32),並且SIMD總共包含1,024個vGPR-再次是GCN中寄存器數量的4倍。

總體而言,更窄的wave32模式可通過改善IPC和併發波前總數來提高吞吐量,從而顯著提高效能和效率。

非同步計算隧道

GCN架構的主要亮點之一是在NVIDIA將其整合到其圖形卡之前使用了非同步計算引擎方式。RDNA保留了該功能,並且加倍了。

命令處理器處理來自API的命令,然後將它們釋出到相應的管道:圖形命令處理器管理圖形管道(著色器和固定功能硬體),而四個非同步計算引擎(ACE)負責計算。Navi 10晶片(RX 5700 XT)具有一個圖形命令處理器和四個ACE。每個ACE都有一個獨特的命令流,而GCP對於每種著色器類型(域,頂點,畫素,柵格等)都有單獨的流。

在GCN中,命令處理器可以優先於圖形進行計算。在RDNA架構中,GPU可以使用所有資源來執行高優先順序的計算任務,從而完全掛起圖形管線。

DNA體系結構通過引入一種稱為「非同步計算隧道」的新功能,改善了指令級的並行處理。GCN和較新的Navi GPU均支援非同步計算(圖形和計算管道的同時執行),但RDNA則更進一步。當一個任務(圖形或計算)比其他任務對延遲的敏感度高得多時,Navi可以完全暫停另一個任務。

在基於GCN的Vega設計中,命令處理器可以使計算優先於圖形,並在著色器上花費更少的時間。在RDNA架構中,GPU可以使用所有資源來執行高優先順序的計算任務,從而完全掛起圖形管線。這可以顯著提高對延遲最敏感的工作負載(例如虛擬現實)的效能。

控制流的標量執行

實際上,AMD GCN和RDNA架構中的大多數計算都是由SIMD執行的,而SIMD本質上是向量:對多種資料類型執行一條指令(每個SIMD每個週期同時執行32 INT / 32 FP)。但是,每個CU中也有標量單位。RDNA 1中的每個計算單元每個週期可以啟動(排程)四個指令,兩個標量,兩個向量。在RDNA1 WGP中,總吞吐量為每個時鐘128個向量和4個標量。四個SIMD各自為該數字做出了相同的貢獻。

結論

儘管RDNA和Navi並沒有完全重新發明Radeon設計,但它們主要只是對其進行了改進。消除了管道瓶頸,減少了延遲,現在每個SIMD都變得越來越寬和更快。

每個著色器引擎都有更多的渲染後端,具有三個級別的統一快取,這是對之前的Vega GPU的重大改進。看看RDNA 2與現有的Navi GPU有何不同將是很有趣的。

我認為不會有任何根本性的變化。可能會有一些專用的光線跟蹤加速或放大核心,僅此而已。AMD需要從事的工作是他們的軟體和驅動程式。

#科技日報#


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