英特爾下一代GPU架構可能帶來什麼?


展望英特爾Xe3 GPU 架構。

過去幾年來,英特爾在高性能圖形領域的進軍取得了令人矚目的進展,而且該公司並沒有鬆懈腳步。英特爾的Tom Peterson表示,Xe3 硬體設計已經完成,軟體工作正在進行中。

GPU 組織:更大的渲染切片?

現代GPU 是基於細分等級的層次結構建構的,因此它們可以擴展以達到不同的性能、功耗和價格目標。在英特爾GPU 上運行的著色器程式可以透過讀取(狀態暫存器0)架構暫存器的低位元來檢查其運作的位置sr0。

sr0Xe3 上的拓樸位具有不同的佈局。渲染切片中的Xe 核心用四位列舉,高於前幾代中的兩位。因此,Xe3 的拓樸位將能夠處理最多16 個Xe 核心的渲染切片。前幾代Xe 每個渲染切片只能有四個Xe 核心,而且通常會一直這樣。B580 和A770 都在每個渲染切片中放置了四個Xe 核心。

擁有足夠的位元來描述某種組態並不意味著英特爾會推出如此大的產品。Xe 確實在Arc A770 中使用了其最大32 核、4096 通道設定。然而,Xe2 在Arc B580 上最大達到了20 核和2560 通道。Xe2 的sr0格式理論上可以列舉16 個切片。給每個切片最多4 個Xe 核心將形成一個64 Xe 核心GPU,具有8192 個FP32 通道。顯然,B580 根本無法達到這個水準。

在假設的巨型Xe2 實作上可視化著色器陣列,該實現最大化所有拓撲列舉位

Xe3 則更進一步。最大化所有拓樸列舉位元將產生一個非常大的256 Xe Core 組態,具有32768 個FP32 通道。這甚至比Nvidia 的RTX 5090 還要大,後者「僅」有21760 個FP32 通道。相反,筆者認為英特爾希望更靈活地擴展運算能力,而不受ROP 和光柵化器等固定功能硬體的影響。 AMD 和Nvidia 的SA 和GPC 都包含遠超過四個核心的核心。例如,RX 6900XT 的著色器引擎各有10 個WGP。 Nvidia 的RTX 4090 在每個GPC 中放置了八個SM。隨著遊戲使用更複雜的著色器程序,GPU 的計算量隨著時間的推移變得越來越大。英特爾似乎也遵循同樣的趨勢。

XVE 變化

Xe 向量引擎(XVE) 在英特爾GPU 上執行著色器程式。它們結合使用向量級和執行緒級並行來隱藏延遲。

佔用率更高,平行度更高

Xe3 XVE 可以同時運行10 個執行緒,而前幾代只有8 個。與CPU 上的SMT 一樣,追蹤多個執行緒有助於XVE 使用執行緒級並行性隱藏延遲。如果一個執行緒停滯,XVE 有望找到一個未停滯的執行緒來發出指令。活動執行緒數也稱為執行緒佔用率。 GPU 上的100% 佔用率類似於Windows 工作管理員中的100% 使用率。與CPU SMT 實作不同,GPU 佔用率可能受暫存器檔案容量限制。

之前的英特爾GPU 有兩種暫存器分配模式。通常每個執行緒獲得128 個512 位元暫存器,每個執行緒8 KB 暫存器。 「大型GRF」模式為每個執行緒提供256 個暫存器,但由於暫存器檔案容量限制,佔用率降至4 個執行緒。 Xe3 繼續為每個XVE 使用64 KB 暫存器檔案,但靈活地在32 個條目區塊中分配暫存器。只要每個執行緒使用96 個或更少的暫存器,Xe3 的XVE 就可以同時執行10 個執行緒。如果著色器程式需要大量暫存器,則佔用率會比前幾代產品下降得更平穩。

Nvidia 和AMD GPU 以更精細的粒度分配暫存器。例如,AMD 的RDNA 2 以16 個區塊為單位分配暫存器。但Xe3 仍然比前幾代英特爾產品更靈活。透過這項變化,只需要幾個暫存器的簡單著色器將透過更多的執行緒級並行性享受更好的延遲容忍度。而更複雜的著色器可以避免降到「大型GRF」模式。

Xe3 的XVE 也擁有更多的記分板代幣。與AMD 和Nvidia 一樣,英特爾使用編譯器輔助調度來處理長延遲指令(如記憶體存取)。長延遲指令可以設定記分牌條目,而依賴指令可以等到該條目被清除。每個Xe3 執行緒都會獲得32 個記分板令牌,無論佔用情況如何,因此XVE 總共有320 個記分板令牌。在Xe2 上,如果XVE 運行八個執行緒,則執行緒獲得16 個令牌,或者在四個執行緒的“大型GRF”模式下獲得32 個令牌。因此,Xe2 的XVE 總共只有128 個記分板令牌。更多的令牌讓執行緒擁有更多未完成的長延遲指令。這很可能轉化為每個執行緒更多的記憶體級並行性。

「標量」暫存器(s0 )

英特爾的GPU ISA 有一個向量暫存器檔案(GRF,即通用暫存器檔案),用於儲存著色器程式的大部分資料並為向量執行單元提供資料。它還有一個帶有特殊暫存器的“架構暫存器檔案”(ARF)。其中一些可以儲存資料,例如累加器暫存器。但其他暫存器則用於特殊用途。例如,sr0如上所述,提供GPU 拓撲訊息,以及浮點異常狀態和執行緒優先權。 32 位元指令指標指向目前指令位址,相對於指令基址。

英特爾ARF 說明,其中藍色部分顯示了從Xe2 到Xe3 的變化

s0Xe3在ARF中加入了一個「標量暫存器」 。 s0其佈局與位址暫存器(a0)非常相似,用於收集傳送指令。 XVE 透過使用send指令透過Xe Core 的訊息結構傳送訊息來存取記憶體並與其他共享使用進行通訊。收集傳送似乎讓Xe3 從暫存器檔案中收集不連續的值,並使用單一指令傳送它們send。

除了新增標量暫存器之外,Xe3 還擴展了執行緒依賴暫存器(TDR) 以處理10 個執行緒。 sr0由於未知原因獲得了額外的32 位元雙字。

指令變更

Xe3 支援FCVT 的飽和度修飾符,這是一種在不同浮點類型之間(而不是在整數和浮點之間)進行轉換的指令。 FCVT 是在Ponte Vecchio 中引入的,但飽和度修飾符可以簡化從高精度浮點格式到低精度浮點格式的轉換。 Xe3 還獲得了HF8(半浮點8 位元)格式支援,除了Xe2 中已經支援的BF8 類型之外,還提供了另一種8 位元浮點格式選項。

對於XMX 單元,Xe3 增加了一條xdpas指令。 sdpas代表稀疏脈動點積與累加。具有大量零元素的矩陣稱為稀疏矩陣。稀疏矩陣上的運算可以進行最佳化,因為任何乘以零的數顯然都是零。 Nvidia 和AMD GPU 都實現了稀疏性最佳化,而英特爾顯然也在尋求做同樣的事情。

光線追蹤

子三角形不透明度剔除(STOC) 將BVH 葉節點中的三角形細分,並將子三角形標示為透明、不透明或部分透明。主要動機是減少遊戲使用紋理alpha 通道處理複雜幾何圖形時浪費的任意命中著色器工作。英特爾的論文以樹葉為例,指出程式設計師可能會使用低頂點數來減少「渲染、動畫甚至模擬執行階段間」。

從API 角度來看,BVH 幾何只能完全透明或不透明,因此遊戲將所有部分透明的圖元標記為透明。每個光線相交都會觸發一個任意命中著色器,該著色器執行alpha 測試。如果alpha 測試顯示光線與圖元的透明部分相交,則著色器程式不會貢獻樣本,且任意命中著色器啟動基本上是浪費的。如果光線與完全透明或完全不透明的子三角形相交,STOC 位元會讓任意命中著色器跳過alpha 測試。

摘自英特爾的論文,展示了樹葉紋理的範例

儲存每個子三角形的不透明度資訊需要兩位,因此與使用單一不透明度位元來儲存整個三角形相比,STOC 確實需要更多儲存空間。不過,它比將整個紋理打包到BVH 中更實用。英特爾的論文發現,在處理半透明光線追蹤陰影時,與標準alpha 測試相比,純軟體STOC 實作可將效能提高5.9-42.2%。

Elden Ring 的BVH 使用較大的三角形來表示Leyndell 中的樹葉,如Radeon Raytracing Analyzer 所示。STOC 可能會很好地對應到此場景

STOC 感知光線追蹤硬體可以提供進一步的增益,尤其是使用英特爾的光線追蹤實現時。英特爾的光線追蹤加速方法與DXR 1.0 標準非常接近。光線追蹤加速器(RTA) 透過向Xe Core 的執行緒調度程序傳送訊息來自主處理遍歷並啟動命中/未命中著色器。如果光線與完全透明的子三角形相交,STOC 位元可以讓RTA 跳過著色器啟動。對於不透明的子三角形,RTA 可以告訴著色器程式跳過alpha 測試,並提前終止光線。

說明STOC 試圖解決的問題

Xe3 將STOC 位元帶入硬體光線追蹤資料結構,複雜程度有兩級。基本實作保留64B 葉節點,但創造性地找到空間容納18 個額外位元。英特爾的QuadLeaf結構代表一對合併的三角形。每個三角形獲得8 個STOC 位,這意味著四個子三角形。另外兩位指示任意命中著色器是否應在軟體中進行STOC 模擬,可能讓程式設計師關閉硬體STOC 進行偵錯。此模式在程式碼中名為「STOC1」。

為Xe/Xe2 和Xe3 勾勒出三角形(葉)節點格式。藍色= STOC 相關,紫色= 非STOC 射線追蹤資料結構變化

「STOC3」結構透過儲存指向STOC 位元的指標而不是將其嵌入到BVH 中,使事情更進一步。這允許在STOC 位元可以使用的儲存量方面有更大的靈活性。 STOC3 也指定了STOC 位元的遞迴等級,可能用於遞迴劃分三角形。進一步細分將減少部分透明子三角形的數量,這需要從任意命中著色器進行alpha 測試。儲存STOC3 的指標將葉節點大小增加到128 字節,從而增加了BVH 記憶體佔用量。

可能的效能提升令人興奮,但使用STOC 需要遊戲開發人員或遊戲引擎的工作。英特爾建議STOC 位元可以作為遊戲資產編譯的一部分離線產生。藝術家必須確定使用STOC 是否會為特定場景提供效能提升。有大量樹葉的場景可能會從STOC 中受益匪淺。鐵絲網圍籬可能是另一回事。 STOC 不是DirectX 或Vulkan 標準的一部分,這可能是採用的另一個障礙。但是,純軟體STOC 仍然可以提供好處。這可能會鼓勵開發人員嘗試它。如果他們確實實施了它,那麼支援STOC 的Xe3 硬體將比純軟體解決方案獲得更多收益。

距離真正的Xe3 產品還有一段時間。但軟體變化顯示Xe3 是英特爾圖形架構向前邁出的又一大步。 Xe2 是英特爾進軍獨立顯示卡領域的堅實一步,它以名義上較小的GPU 提供了比Xe 更好的性能。 Xe3 再次調整了架構,可能有類似的目標。更高的佔用率和動態暫存器分配將使Xe Cores 更能容忍延遲,從而提高利用率。這些變化也使英特爾的圖形架構更接近AMD 和Nvidia。

XVE 的變化表明英特爾仍在忙於改進其核心運算架構。相較之下,Nvidia 的串流多處理器從Ampere 到Blackwell 並沒有發生重大變化。 Nvidia 可能覺得Ampere 的SM 架構已經夠好了,於是將精力轉向調整功能,同時擴大GPU 規模以繼續提供世代收益。同時,英特爾尋求從每個Xe 核心中獲得更多收益(Xe2 以更少的Xe 核心實現了比Xe 更高的性能)。

與Nvidia 類似,英特爾正在大力推進功能,顯然已投入研究。 GPU 通常會嘗試避免做無用的工作。就像光柵化管道使用早期深度測試來避免無用的像素著色器呼叫一樣,STOC 避免產生無用的任何命中著色器。現在判斷STOC 或其他Xe3 功能會帶來什麼樣的差異還為時過早。但任何懷疑英特爾致力於推動其GPU 架構發展的人都應該認真研究Mesa 和英特爾圖形編譯器的變化。 (半導體產業縱橫)