PlayStation 3のエミュレータ「RPCS3」の開発者は、最新のCPUで一部採用されているIntelの命令セット「AVX-512」を用いることで示されたパフォーマンスの向上についての詳細をブログで解説している。
Whatcookies’s blog : Why Is AVX 512 Useful for RPCS3?
AVX-512命令を使用し、GoWのエミュレーションでは240FPSを達成
このブログは、RPCS3エミュレータプロジェクトの開発者の1人「Whatcookie」氏によって公開された。それによると、AVX-512命令が、標準のAVX2命令に対してどの程度の優位性を示しているかを実際のパフォーマンス比較を掲載して解説している。
AVX-512は、Intelが提案している拡張命令セットだ。主に科学的シミュレーション、財務分析、人工知能 (AI) / ディープラーニング、3D モデリング / 分析、画像およびオーディオ / ビデオ処理、暗号化、データ圧縮などのワークロードや用途でパフォーマンスを向上させることができるとされている。
今回のエミュレータ用途においては、以下の利点が得られるという。
- レジスターファイルの大型化
- 旧命令の新形式
- マスクレジスタ
ブログでは、PS3エミュレータの定番であるRPCS3において、これらの機能がどのようにパフォーマンスを向上させるかを紹介している。テストに使用したCPUはIntel Core i9-12900Kで、5.2GHz、AVX-512を有効にしている。標準のSSE2命令では5FPSしか出なかったが、SSE4.1にすると160FPSの大幅な向上が見られた。これは、PlayStation 3エミュレータに不可欠なSSSE3命令がないためとされている。
AVX2に移行すると、さらに13%の性能向上が得られ、AVX2からAVX-512に変更すると、30%の性能向上で242 FPSを実現している。
SSE4.1ターゲットでは平均160FPSを達成、AVX2/FMAターゲットでは平均190FPSを達成しました。これは、SSE4.1のターゲットと比較して18%の改善となる。AVX2はSSE4.1に比べて新しい命令はあまり含まれていないが、新しい3オペランド形式の命令が含まれており、多くのレジスタからレジスタへのmov命令が不要になった。重要なのは、AVX2をサポートするすべてのCPUがFMA命令もサポートしていることです。FMA命令は、単に乗算+加算命令のチェーンよりも高速なだけでなく、乗算と加算の間で単精度に丸められないため、異なる結果を出すことができます。FMA命令なしでこれを正確にエミュレートするとオーバーヘッドがかかるので、ネイティブのFMA演算はかなり助けになる。
Icelake層のAVX-512ターゲットは、AVX2/FMAターゲットよりも23%高速で、平均235FPSという驚異的な数値を叩き出しています。AVX-512で追加された新命令の数は非常に多く、そのうちのかなりの数がRPCS3で役に立つことになる。既存のSSE命令をそのまま256bitに拡張したAVX2とは異なり、AVX-512では、低ビット幅でもSIMDプログラミングに非常に有用な新機能が大量に追加されている。しかし、intelはAVX-512を-512という名前で販売することにしたため、この命令セットに詳しくない人は、通常512ビットベクタの側面に注目することになる。
Whatcookie’s Blog
登場当初はあまり評判の芳しくなかったAVX-512について、Intelは第12世代Alder Lake CPUからサポートを廃止しているが、性能のポテンシャルは確認できており、先日発表されたAMDのZen 4「Ryzen 7000」CPUラインナップはサポートを表明しており、実際に大きく活用することで大きなパフォーマンスアップを実現しそうだ。Zen 4コアアーキテクチャがAVX-512をサポートし、Steam Deckの後継や次世代CPUを利用した様々な携帯ゲーム機が登場すれば、その命令セットを利用して古いゲームを優れたパフォーマンスでエミュレーションする事も可能になるかも知れない。
これは、RPCS3「PlayStation 3」エミュレータにとって非常に有益であり、Intelがコンシューマ向けチップからAVX-512を取り除くことを考え直してくれる一つの判断材料になる事を願う。
コメントを残す