RDNA 5のDual Issue強化──LLVMパッチが示す「本来の性能」への道筋
AMDの次世代GPUアーキテクチャが、カタログスペックを「絵に描いた餅」で終わらせない仕組みを手に入れようとしている。LLVMに投入された新しいパッチが、その具体的な手がかりを明かした。
シェーダユニットを眠らせていた制約
RDNA 5に関する新たな技術的手がかりが、コンパイラ基盤であるLLVMのコミットから浮上している。Linux系技術ブログCoelacanth's Dreamが詳細な分析を公開し、Tom's Hardwareも追って報じた。
話の核心はDual Issue VALUの改善だ。これはRDNA 3(GFX11)から導入された機能で、1サイクルに2つの演算命令を同時発行できる仕組みを指す。スペックシート上のFP32演算性能は、この同時発行が常に機能する前提で算出されている。
ところが現実には、対応する命令の種類が限られていた。VOPD系命令と呼ばれる専用の命令形式でしかDual Issueは成立せず、しかもX側とY側で異なるレジスタバンクを使わなければならないという制約もあった。Wave32モード限定という条件も加わる。
コンパイラが「この2命令はペアにできる」と判断できる場面が限られていたため、ハードウェアの能力を引き出しきれないケースが頻発していた。
結果として何が起きたか。GPUベンチマークツールのvkpeakのようなソフトウェアでは、公称ピークFP32性能の半分程度しか実測値が出ないことがあった。ハードウェアは2車線分の道路を持っているのに、交通ルールが厳しすぎて片側しか使えない──そんな状態だ。
VOPD3という新しい命令形式
今回のLLVMコミットでは、RDNA 5(gfx1310)向けに「VOPD3」と呼ばれる新たな命令エンコーディングが追加された。
従来のVOPDは主に2オペランド命令を対象としていたが、VOPD3は3オペランド命令にも対応する。ここで重要なのがFMA(Fused Multiply-Add)、つまり積和演算命令の扱いだ。
FMAは「掛け算と足し算を1回の演算でまとめて行う」命令で、グラフィックス処理の根幹を成す。RDNA 3/4ではV_FMAC_F32やV_FMAAK_F32といった累算型・リテラル定数型のFMA命令はDual Issue可能だったが、汎用的なV_FMA_F32は対象外だった。
V_FMA_F32は3つの入力にそれぞれ別のレジスタを指定できる命令形式を持つ。従来のDual Issue(VOPD)ではサポートされておらず、これがベンチマークでピーク性能の半分しか出ない原因の一つとなっていた。
RDNA 5ではこのV_FMA_F32が、VOPD3を介してX側・Y側の両方に同時発行できるようになる。コンパイラがFMAのペアリングに成功する頻度が大幅に上がるはずだ。
整数命令の拡充とレジスタ制約の緩和
変更はFMAだけにとどまらない。RDNA 5のVOPDでは整数系の命令も新たに追加されている。最大値・最小値の取得(V_MAX_I32、V_MIN_I32)、減算(V_SUB_U32)、ビットシフト(V_LSHRREV_B32、V_ASHRREV_I32)といった命令がY側スロットで使えるようになった。一方で、ビット論理積命令のV_AND_B32はVOPDから削除されている。
さらに注目すべきは、X側とY側で同じ入力レジスタを指定可能になった点だ。従来はレジスタバンクの競合を避けるため、それぞれ別のレジスタバンクを使う必要があった。この制約が緩和されれば、コンパイラがDual Issueを成立させられる場面は一段と増える。
正直なところ、この種のコンパイラレベルの改善は地味だ。だがその地味さこそが、実効性能と公称スペックの乖離を埋めるための本質的なアプローチと言える。
「性能が倍になる」の正しい読み方
ここで一つ、注意が必要だ。
Dual Issueが改善されても、GPUのピークFP32性能の「天井」そのものが上がるわけではない。変わるのは、その天井に手が届く頻度だ。
Coelacanth's Dreamの分析でも明確に指摘されている。これまでピークの半分しか出なかったワークロードが改善されれば、数値上は「2倍」に見える。だが、それは本来出せるはずだった性能にようやく追いつくだけで、アーキテクチャ全体の演算能力が2倍になるのとは意味が違う。
とはいえ、この変更がゲーマーにとって無関係かといえば、そうでもない。FMA命令はニューラルレンダリングにも広く使われる。AMDが先日発表したFSR Diamondは、RDNA 5のAI/ML加速機能を前提とした技術だ。Dual IssueでFMAの処理効率が上がれば、アップスケーリングやフレーム生成の品質向上にも波及しうる。
AnandTechフォーラムでの議論では、NVIDIAのTuring→Ampereでの実効性能向上と構造的に似ているという指摘もある。Ampereでは整数と浮動小数点の同時実行が改善され、ゲーミングで約1.4倍の性能向上につながった。RDNA 5のDual Issue改善も、同様の方向性を持っている。
ただし留意すべきは、ゲームのシェーダ処理では全命令の約30%が整数演算だという点だ。FP32のDual Issueが完全に機能しても、性能向上は理論上の2倍ではなく1.4倍前後に収まる可能性が高い。
コンパイラから始まるアーキテクチャの進化
今回の情報源はあくまでLLVMのコミット──つまりコンパイラ側の準備段階だ。RDNA 5のハードウェアそのものの詳細は、まだ公式には明かされていない。
だが、AMDがGPUアーキテクチャの改善をシリコンの物量だけに頼らず、ソフトウェアスタックの最適化で攻めようとしている姿勢は読み取れる。トランジスタを積めば演算器は増やせる。しかし、その演算器を実際に使い切れるかどうかは、コンパイラと命令セットの設計にかかっている。
RDNA 3で導入されたDual Issue VALUは、Chips and Cheeseのマイクロベンチマーク分析でも「コンパイラが最適化に失敗するケースが多い」と指摘されていた。あれから3年余り。AMDはようやく、命令セットの側からその問題を解きにかかっている。
ハードウェアのスペック競争は目立つ。だがユーザーの手元で実際に出る性能を決めるのは、カタログの数字ではなく、その数字がどれだけ現実に変換されるかだ。
ここから先は
記事が役に立ったと感じていただけたら、チップで応援いただけると嬉しいです。いただいた支援は、より深い調査と分析のための時間に充てさせていただきます。灯台を灯し続けるための燃料になります。
