Coelacanth's Dream

レジスタファイルサイズが倍になり、Int64 のサポートが復活する Intel Xe2

Intel GPU オープンソースドライバーでは現在、Kernel Mode Driver (i915, intel-xe)、User Mode Driver (Iris [OpenGL], Anv [Vulkan]) ともに、Lunar Lake のサポート作業が進められている。
Lunar Lake は GPU コアに Xe2 アーキテクチャ、ディスプレイエンジンに Xe2-LPD を採用するとされている。

Intel Xe2

先日 Francisco Jerez 氏により公開された、コンパイラバックエンドに Xe2 アーキテクチャ のサポートを追加するマージリクエストでは従来のアーキテクチャからの変更点に触れている。

まず、Xe2 アーキテクチャ では FP64 と (Extended) Math 命令は in-order タイプのパイプラインが処理するようになる。ここでのパイプラインは実行ポートと同義と思われる。
Francisco Jerez 氏はコメントで、Xe-LP, Xe-HPG, Xe-LPG における Math 実行ポートのように out-of-order タイプの命令のトラッキングを行うよりも in-order の方が効率的だとしている。

FP64 命令は Math 実行ポートではなく Long 実行ポートに実装される。
Intel GPU は Gen11 アーキテクチャ から FP64 の実装が外され、Xe-LPG アーキテクチャ で再度実装されるようになった。
ただし Gen9 アーキテクチャ が FP32 演算性能に対して 1/4 の FP64 演算性能だったのに対し、Xe-LPG アーキテクチャ では 1/16 となっている。1

Xe2 アーキテクチャ では Int64 命令のサポートも復活するが、これは Long 実行ポートではなく Int 実行ポートに実装される。

こうした変更から見るに Xe2 アーキテクチャXe-HPC アーキテクチャ に近いものとなっている。
Intel は Xe-HPC アーキテクチャ の EU 内部構成等に関する資料を公開していないが、intel-graphics-compiler のソースコードを読むに、Math 実行ポートの in-order 化、Long 実行ポート (FP64) の追加、Int 実行ポートの Int64 サポートは Xe-HPC アーキテクチャ で実装されていた。2
推測だが、Xe (Xe1) 世代では Xe-LP, Xe-HPG, Xe-HP, Xe-HPC, Xe-LPG ではそれぞれで EU 内部構成が異なっていたが、Xe2 世代では出来る限り統一する方針となったのかもしれない。
AMD GPU における RDNA 系と CDNA 系のように、FP64 演算性能や行列演算専用命令の有無で差別化するのだろうか。

レジスタファイルサイズが倍に

Xe2 アーキテクチャ では EU あたりのレジスタファイルサイズが倍となる。

Xe-LP アーキテクチャ は EU あたり 7スレッド、スレッドあたりのレジスタファイルは 128エントリ (4KiB)、EU 全体では 28KiB のレジスタファイルを持つ構成となっていた。
それが Xe-HPG アーキテクチャ では EU あたり 8スレッドをサポートするようになり、それにあわせてレジスタファイルも触れたため、EU 全体では 32KiB のレジスタファイルを持つようになった。

変更内容から、Xe2 アーキテクチャ ではスレッドあたりのレジスタファイルが 256エントリになったことでレジスタファイルサイズが倍になったのだと思われる。

    -/** Number of general purpose registers (VS, WM, etc) */
    +/** Size of general purpose register space in REG_SIZE units */
     #define BRW_MAX_GRF 128
    +#define XE2_MAX_GRF 256

参考リンク