2025/06/24 22:49 ReBarUEFI: Resizable BAR for almost any UEFI system

ロボ子、今日は「ReBarUEFI」について話すのじゃ。これは、Resizable BARを公式にサポートしていないシステムでも、Resizable BARを有効にするUEFI DXEドライバのことじゃぞ。

Resizable BARですか。博士、それは具体的にどういうものなのでしょうか?

簡単に言うと、CPUがGPUのメモリ全体にアクセスできるようにする技術じゃ。これによって、特にIntel Arc GPUの性能を最大限に引き出すことができるのじゃ。

なるほど。記事によると、NVIDIA Turing GPU(20または16シリーズ)の場合は、「NvStrapsReBar」というものを使う必要があるのですね。

そうじゃな。そして、これを使うには、BIOSで4G Decodingを有効にする必要がある場合があるぞ。BIOSがLarge BARをサポートしているとなお良いのじゃ。

4G Decodingですか。少し難しそうですね。でも、手順としては、Wikiガイドに従ってモジュールを追加して、変更したファームウェアを実行する、と。

その通りじゃ。そして、変更したファームウェアを実行したら、4G decodingが有効になっていることと、CSMが無効になっていることを確認するのじゃ。最後に、ReBarStateを実行してResizable BARのサイズを設定するぞ。

なるほど。ほとんどのファームウェアは、署名されていないモジュールでもセキュアブートで受け入れる、と書かれていますね。それは便利です。

そうじゃな。もしResizable BARが動作したら、「List of working motherboards」に返信して、情報を共有するのじゃ。

はい、わかりました。もし問題が発生した場合は、「Common Issues (and fixes)」を参照すれば良いのですね。

仕組みとしては、ReBarDxeモジュールが、PciHostBridgeResourceAllocationProtocolのPreprocessController関数を置き換えて、Resizable BAR機能をチェックし、ReBarState NVRAM変数からサイズを設定するのじゃ。

PreprocessController関数ですか。PCI列挙中にPciBusモジュールによって呼び出されるのですね。新しいBARサイズを検出して、それに応じて割り当てる、と。

そうじゃ。UEFIファームウェアは64ビットBARの処理に問題がある場合があるから、パッチを適用する必要がある場合もあるのじゃ。UEFIToolを使って、UEFIPatchフォルダにあるパッチを適用できるぞ。

なるほど。4GBや16GB、64GBのBARサイズ制限を解除したり、64ビットBARが32ビットにダウングレードされるのを防いだりするパッチがあるのですね。

他にも、MMIO空間を増やしたり、NVRAMホワイトリストを削除したり、USB 3ポートが動作しない問題を修正するパッチもあるぞ。X79 Above 4G Decoding fixなんていうのもあるのじゃ。

いろいろなパッチがあるんですね。ビルド方法も記載されていますね。edk2ツリー内でクローンした後、buildffs.pyスクリプトを使ってDXEドライバをビルドする、と。

ReBarStateは、CMakeを使ってWindowsまたはLinuxでビルドできるのじゃ。FAQもあって、PCIe Gen2システムで動作するかとか、BIOSを修正せずにResizable BARを使用できるかとか、サポートされていないBARサイズを設定してシステムが起動しない場合はどうするかとか、色々書いてあるぞ。

最適でないBARサイズでもパフォーマンスが向上する可能性があるんですね。i5 3470とRX 580の組み合わせで、2GB BARサイズで最大12%のFPS増加が得られた例もある、と。

そうじゃ。Resizable BARは、ちょっとした工夫で古いシステムでも性能を向上させることができる、面白い技術なのじゃ。

勉強になりました!博士、ありがとうございました。

どういたしまして。最後に一つ、ロボ子。Resizable BARを有効にすると、システムがより「バー」ンと速くなる… なんちゃって!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。