AMDとIntel共著のAPX仕様、x86を作り直す
レジスタが16から32に倍増する。ロードは10%、ストアは20%減る。Intel単独だったAPXが、AMDとの共通仕様として書き直された。x86 EAGの第2弾、汎用命令そのものの作り替えだ。
Intel単独の拡張から、業界共通の標準へ
x86 Ecosystem Advisory Group(EAG)が4月28日付で公開したブログ記事「APX – Revitalizing the x86 General-Purpose Instruction Set」が、業界の景色を塗り替えている。タイトルにある「Revitalize」は単なる性能向上ではなく、汎用命令そのものを作り直すという宣言だ。
APX、すなわちAdvanced Performance Extensionsは、もともと2023年7月にIntelが単独で発表していた拡張命令である。今回の発表で重要なのは技術内容そのものではなく、EAGの共通仕様への格上げだ。AMDとIntelが同じ仕様書を共有する状態は、x86の歴史でほとんど前例がない。
EAGは2024年10月にIntel・AMD・主要OEMが共同で立ち上げた業界団体で、AVX10、FRED、ChkTag、ACEといった次世代仕様を共同で策定してきた。2025年10月の1周年プレスリリースの時点では、APXは合意に至らなかった項目として目立っていた。それから半年を経て、APXがEAGのブログに正式に載った意味は重い。
APXは新しい命令を大量に追加する拡張ではない。既存命令の使い方を作り替えることで、コンパイラが生成するコードそのものの形を変える拡張だ。
レジスタ倍増が変えるコードの形
APXの最大の変更点は、汎用レジスタ(GPR)の数を16本から32本へ倍増させたことだ。GPRは、CPUが計算中のデータを一時的に置く最も高速な記憶領域で、ここに値が乗っているほど計算は速く、消費電力も低い。
x86の汎用レジスタは、1978年の8086時代の8本から拡張され続けてきたが、64ビット化(x86-64)以来、20年以上16本のままだった。ARMやRISC-Vが32本のレジスタを標準としているなか、x86のレジスタ不足はコンパイラ最適化のボトルネックとして長く指摘されてきた問題でもある。
EAGはAPXを使ってコンパイルしたコードについて、x86-64ベースラインと比較して ロードが10%、ストアが20%減る と説明している。これはSPEC CPU 2017整数ベンチマークのプロトタイプ模擬による数値であり、実シリコンの結果ではない。とはいえ、ロード・ストア命令はCPUのなかで最も電力を食う処理のひとつで、その削減は単なる速度向上以上に、消費電力と発熱に直接効いてくる。
APXが追加するのは新命令の山ではなく、既存命令の「使い方」だ。EVEXプレフィックスの拡張により、既存の整数命令から新しいレジスタへアクセスできる。命令長は若干増えるが、命令数自体が10%減るため、コード密度は既存バイナリとほぼ同等に保たれる。
|
1978年
8086 / 16ビット時代
汎用レジスタ 8本
最初のx86アーキテクチャ。AX/BX/CX/DX等の8本構成。
2003年
x86-64 / 64ビット拡張
汎用レジスタ 16本
AMD Opteronで導入。R8〜R15の8本が追加され、以降20年以上この構成が続く。
2026年
APX / EAG共通仕様
汎用レジスタ 32本
x86 EAGがAPXをブログで正式公開。R16〜R31の16本を追加し、ARM・RISC-Vと同水準の本数に。
|
条件付き実行と非破壊形式の導入
レジスタ拡張と並ぶAPXのもう一つの柱が、条件付き命令の大幅な拡張だ。x86の条件付き実行は1995年のPentium ProでCMOV/SET命令として導入されたが、ロードやストアといった主要操作には適用できなかった。
APXでは条件付きロード、条件付きストア、条件付き比較・テスト命令が追加され、コンパイラが分岐をなくして条件付き命令に置き換える「if変換」の適用範囲が大きく広がる。深いパイプラインを持つ最新の高性能CPUでは、分岐予測の失敗が性能低下の主犯になる。データに依存する分岐は本質的に予測が困難なため、分岐そのものを減らす方向の最適化は、出力をパイプライン化する設計が深くなるほど効果が大きい。
加えてAPXは、整数命令に 非破壊形式 を導入した。従来のx86命令は基本的に「ソースを上書きする」設計で、計算前の値を保持したい場合はコンパイラが事前に別レジスタへコピーする必要があった。非破壊形式では、宛先レジスタを別に指定できるため、無駄なコピー命令が消える。
スタック操作にも手が入った。新たに追加された PUSH2/POP2命令 は、2つのレジスタを1回のメモリ操作で転送する。関数呼び出しの多いコードでは、レジスタ退避・復帰のコストが累積してくるため、この最適化は地味ながら無視できない。
| 項目 | 従来のx86-64 | APX対応後 | 主な利点 |
|---|---|---|---|
| 汎用レジスタ数 | 16本 | 32本 | レジスタ常駐値が増加 |
| ロード命令数 | 基準値 | 10%減 | メモリ読み出し低減 |
| ストア命令数 | 基準値 | 20%減 | 消費電力の削減 |
| 命令形式 | ソース上書き型 | 非破壊形式に拡張 | 無駄なコピー命令を削減 |
| 条件付き実行 | CMOV / SETのみ | ロード・ストア・ 比較まで拡張 |
分岐ミス予測の 影響を縮小 |
| スタック操作 | PUSH / POP (1レジスタ) |
PUSH2 / POP2を 追加(2レジスタ) |
関数呼び出しの 退避コスト圧縮 |
| コード密度 | 基準値 | ほぼ同等 | 命令長増を 命令数減で相殺 |
| レガシー互換性 | — | 完全維持 | 再コンパイルのみで 恩恵を享受 |
「過去への配慮」が決断のすべて
APXがEAG共通仕様に組み込まれた背景には、もう一つ意味深い事実がある。新しいGPRはXSAVEで管理され、廃止されたMPX(Memory Protection Extensions)レジスタの空きスペースに収まる設計になっている。XSAVEとは、コンテキストスイッチでCPUの状態を保存・復元する仕組みで、APX対応OSが既存のXSAVE領域のサイズや配置を変えずに済むよう配慮されている。
この設計が示すのは、APXがレガシーソフトウェアとの共存を最優先したという事実だ。APXに対応していない命令は今までどおり16本のレジスタで動き、APXを使う新しいバイナリだけが32本のレジスタを使う。OSとアプリケーション・バイナリ・インターフェース(ABI)の期待を壊さないよう設計されており、新しいGPRはABI上「caller-saved(呼び出し元が保存)」として扱われる。
APXのコンパイラ対応はシンプルである。レガシーの整数命令とAVX命令は、命令エンコーディングを拡張するかたちで新しいレジスタにアクセスする。ソースコードの変更は基本的に不要で、再コンパイルだけで恩恵を受けられる。
x86は44年間、命令エンコーディングの可変長性によって新機能を増分的に追加してきた歴史を持つ。APXはその設計思想の延長にあり、デコードハードウェアの増分的な変更だけで命令セット全体を強化できる柔軟性が、x86の長寿を支えてきた事実を改めて示すものだ。
| 拡張名 | 機能・役割 | 合意状態 |
|---|---|---|
| FRED | 低遅延・高信頼な 割り込みモデル |
標準機能として確定 |
| AVX10 | 次世代ベクトル命令 セット拡張 |
共通仕様として確立 |
| ChkTag | メモリ安全性向上の ハードウェアタグ機能 |
仕様策定中、年内完成予定 |
| ACE | 行列乗算アクセラレータ (AI演算高速化) |
採用・実装が進行中 |
| APX | 汎用レジスタ倍増・ 条件付き命令拡張 |
2026年4月にブログで公開 |
残された問いはAMDの実装時期
EAGがAPXを共通仕様として認めた以上、Intel側の実装はほぼ確定している。Intelは2025年11月13日に「Architecture Instruction Set Extensions and Future Features Programming Reference」第60版を公開し、次期デスクトップCPU「Nova Lake」でAPXとAVX10.2を公式サポートすると明言した。Nova Lakeは2026年末から2027年初めの投入が見込まれる。
問題はAMDだ。Linuxカーネル6.16ではX86_FEATURE_APXフラグやAPXステート管理がマージされ、ユーザー空間からAPX対応CPUを扱う準備は完了している。一方で、AMD公式が2025年10月のEAG 1周年プレスリリースで挙げた合意項目はFRED・AVX10・ChkTag・ACEの4つにとどまり、APXは含まれなかった。AMDが どの世代でAPXを実装するか は依然として明確ではない。
2025年12月にマージされたGCC 16のZen 6サポートパッチでは、AVX512_FP16やAVX_VNNI_INT8など複数の拡張命令が列挙されたが、APXは含まれていない。Zen 6世代での実装は当面見送りという見方が現実的だが、EAGがブログでAPXを正式に取り上げた今回の動きは、AMDがその先での実装を視野に入れているサインとも読める。
Intel単独の最適化機能と、AMDも実装する業界標準とでは、コンパイラ作者にとっての意味がまったく違う。両CPUベンダーが同じ命令セットをサポートする保証があれば、デフォルトで生成するコードに含めやすい。
ACEに続いてAPXがEAGの旗の下に並んだ。Intel・AMDの長年の競合関係において、ISAレベルの分断は縮小に向かっている。x86を共通の競争基盤として保つ意思を、両社が文書として残した。
x86は今、終わった命令セットの整理ではなく、次の40年に向けた書き直しに入っている。レジスタの数を増やす話に見えて、その実、x86が誰のものなのかを問い直す作業だ。
参照元
- APX – Revitalizing the x86 General-Purpose Instruction Set - x86 Ecosystem Advisory Group
- Introducing Intel Advanced Performance Extensions (Intel APX)
関連記事
- AMDとIntelが共同提唱、x86の行列演算を一気に16倍へ
- Intel Nova Lake、bLLC最大288MBで9950X3D2超え
- Intel Nova Lake、52コアと独自巨大L3の全貌
- Intel 8086の「遅すぎる掛け算」を2.5倍速にしたISAカードの話
- Nova LakeはIPC優位、クロックはZen 6が制す
- Intel、X3D追撃へ5年計画を全面刷新。鍵はソフト
- Intel、オーバークロックを高価格SKUの特権から外す方針
- CPU不足はメモリより深刻、Intel 18Aが命運を握る
- Intel、LGA 1700にもう一度。5年目の延命とAMD戦略の本気度
- 中国製コアを積んだロシア製CPU「イルティシュ」でウィッチャー3が動いた