Intel Arc向け「arc-rebar」、ReBAR非対応環境でVRAM帯域を改善
出典: game.intel.com

Intel Arc GPU向けの起動時ツール「arc-rebar」は、Resizable BARに対応しないマザーボードで、CPUからGPUのVRAMを広く参照できるようにします。2015年世代のマザーボードとArc B580を使った検証では、測定されたVRAM帯域が15 GB/sから392 GB/sに上がりました。

ReBARがArcの性能に関わる理由

Resizable BAR(ReBAR)は、CPUがGPUのビデオメモリー(VRAM)を参照するためのPCI Express機能です。通常の設定ではCPUから見える範囲が256 MBに限られる場合がありますが、ReBARを使うと、GPUが備えるより大きなメモリー領域をアドレス空間に割り当てられます。

Arc Bシリーズでゲームなどのアプリケーションから最適な性能を得るには、ReBARまたはAMDのSmart Access Memoryを有効にする必要があります。ReBARが無効だと、CPUからGPUメモリーへの読み書きが小さな転送に分かれ、メモリーコントローラーへの転送回数が増えます。

場面転換や新しいレベルの読み込み、新たなエフェクトの発生時には、ReBAR無効環境でフレーム時間の急増が大きくなる場合があります。AMDやNVIDIAのGPU設計はReBARが一般化する前から進められた一方、Intelの新しいGPU世代ではReBARが中核機能になっています。

arc-rebarが対処する起動時の問題

arc-rebarはLinuxのinitramfs(起動初期に使われるファイル群)からGPUドライバーの読み込み前に動き、カードのResizable BAR設定を変更してPCIe機器を再認識させます。BIOSやGPUファームウェアを書き換えず、起動のたびに処理します。

対象となるArcカードにはPCIeスイッチがあり、その上流ポートのBAR(Base Address Register、機器をメモリー空間へ割り当てるためのレジスター)が、GPUのVRAM用領域と重なることがあります。LinuxのxeドライバーがGPU側のBARを拡大しようとしても、このスイッチ側の領域が解放されず、割り当てに失敗します。arc-rebarはこの問題に対処します。

arc-rebarはカード側のスイッチを含む構成をいったんカーネルから外し、GPUのBARサイズを設定してから再スキャンします。検証した環境では、256 MiBだったCPU可視のVRAM領域が16 GiBのウィンドウになり、12 GBのVRAM全体にアクセスできるようになりました。

検証結果と適用範囲

検証にはIntel Arc B580 12 GB、2015年製のIntel C602搭載Supermicroマザーボード、Debian 13、Linuxカーネル7.1.8、xeドライバーが使われました。VRAM帯域はsaxpy測定で15 GB/sから392 GB/sとなり、4KのVulkanフィルター処理は停止状態から毎秒39〜50フレームになりました。

このツールは、ArcカードのPCIe接続やルートポート配下の機器構成などを確認し、条件が合わない場合は適用を見送ります。検証した構成では、GPUのBAR拡大後にカードを再認識し、起動をまたいで設定が機能しました。

Arc Bシリーズの構成要件にはResizable BAR対応マザーボードが含まれ、BIOSで「Above 4G Decoding」と「Re-Size BAR Support」を有効にします。arc-rebarは、こうした通常のBIOS設定が使えない環境で、Intel Arc GPUのBAR割り当てに対処する方法です。動作確認の対象は記載されたArcカードと構成に限られ、一般的なReBAR非対応マザーボード全般に使えるものではありません。