# Realizing the AMD Exascale Heterogeneous Processor Vision > [!abstract] 概要 > AMD はこれまでに、初期の目標と要件から、高性能計算(HPC)向けのアクセラレーテッド・プロセッシング・ユニット(APU)であるエクサスケール・ヘテロジニアス・プロセッサ(EHP)の構想の開発と進化に至るまで、エクサスケール研究の道のりを詳述してきた。その作業の終わりに、得られた知見は世界初のエクサスケール機である Frontier スーパーコンピュータのノードアーキテクチャの設計に反映された。しかし、Frontier のノードアーキテクチャは EHP 構想の多くの属性を体現していたものの、当時の先進的な異種集積の能力は、HPC と AI のための完全統合型 APU という我々の構想を実現するにはまだ十分に成熟していなかった。本論文では、EHP の物語を締めくくるために、当時の最初のエクサスケールアーキテクチャにとってなぜ APU が適切な解ではなかったのか、従来の EHP 構想にどのような欠点があったのか、そして AMD がこの構想を AMD Instinct MI300A APU へとさらにどう発展させたのかを掘り下げる。MI300A は、先進パッケージング技術、APU のハードウェアとソフトウェアにおける長年の AMD の開発の集大成であり、エクサスケール計算のための画期的な設計を提供するだけでなく、新しい大規模言語モデルや生成 AI アプリケーションの要求にも応える、AMD の効果的なチップレット戦略の次の一歩である。 ## 論文情報 - 著者: Alan Smith、Gabriel H. Loh、Michael J. Schulte、Mike Ignatowski、Samuel Naffziger ほか計 13 名。全員が Advanced Micro Devices, Inc. に所属する - 掲載: ISCA 2024 の Industry Track(ACM)。産業論文であり、性能そのものではなく設計判断の経緯の共有を目的とする - 位置づけ: ISCA 2023 の回顧論文(EHP と Frontier の物語)の続編にあたる。対象は [[Exascale Heterogeneous Processor]]、[[AMD Instinct MI300A]]、[[AMD Instinct MI300X]]。MI300A は [[El Capitan]] に採用される ## 概要 [[Frontier]] のノードは EHP の論理構成を持つが別パッケージで作られた。本論文は、なぜ当時 APU にしなかったか、EHP の何が足りなかったかを述べ、その後継である MI300A を説く。MI300A は CPU と GPU のチップレットと HBM を 1 パッケージに統合し、4 枚の IOD 上へ 3D ハイブリッドボンディングで載せる。同じ部品の組み替えで GPU 専用の MI300X も作れる。 ## 問題設定 - DOE は 10 年以上前に、ムーアの法則とデナード則の終焉、電力、メモリの壁、規模に伴う信頼性をエクサスケールの障害と見て、官民研究を通じて準備した - AMD の研究構想が EHP である。CPU と GPU、複数スタックの HBM、その他 SoC 部品を 1 つの物理パッケージに統合した APU である - GPU は電力当たり・体積当たりの演算性能が高く、CPU は並列化しにくい部分(アムダールの法則)と GPU タスクの発行に要る。同一パッケージ化でデータ移動の遅延、帯域、同期の負荷が減り、HBM 共有によるゼロコピーと部品間の動的な電力融通が可能になる - 十年の間に機械学習が台頭し、低精度演算と大容量メモリという要件が加わった。HPC と ML の双方に応える必要が生じ、チップレット戦略を 3D のモジュラー性へ拡張する動機となった ## 提案手法 ### EHP の各版と Frontier ノード EHPv3 は能動インターポーザ上に計算チップレットと HBM を 3D 積層する構想であった。EHPv4 は積層を後退させ、有機基板上の 2D チップレットと 2.5D の受動シリコンインターポーザを使った。 ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig01-ehp-versions.png]] 図1(Figure 1): (a) EHP の「バージョン 3」と (b) 「バージョン 4」の構成 Frontier のノードは CPU 1 基と個別 GPU 4 基を Infinity Fabric で結ぶ。色分けした 1 組(CPU チップレット 2、大型 GPU ダイ 2、HBM 8 スタック)が EHPv4 の 1 個分に相当し、EHP 4 個を共通 I/O ダイで束ねた形である。CPU と GPU の間は、フラットなアドレス空間とキャッシュコヒーレンスにより、APU 的に見える。 ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig02-frontier-node.png]] 図2(Figure 2): Frontier ノードアーキテクチャの計算部品 ### MI300A の論理構成 MI300A は、6 基のアクセラレータ複合ダイ(XCD)、3 基の CPU 複合ダイ(CCD)、共有の Infinity Cache、8 スタックの HBM、I/O、Infinity Fabric で構成される。 ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig05-mi300a-block.png]] 図5(Figure 5): MI300A の論理・アーキテクチャブロック図 - XCD: 5 nm。1 基に 40 CU を実装し、歩留まりのため 38 CU を使う(計 228 CU)。共有スケジューラ、4 基の ACE、4 MB の L2 を持つ。CU は 32 KB の L1 データキャッシュと 64 KB の LDS を持ち、キャッシュライン長を 128 B に伸ばして CDNA 2 のキャッシュ帯域を実効 2 倍にした。2 CU で 64 KB の命令キャッシュを共有する - マトリクスコアは FP8 に対応し、4:2 スパース性を使うとピークは FP8/INT8 で 8192 演算/サイクル/CU に達する ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/table1-ops-per-clock.png]] 表1(Table 1): MI250X の CDNA 2 と MI300A の CDNA 3 における 1 CU・1 クロック当たりのピーク演算数 - CCD: 5 nm の「Zen 4」CCD をハイブリッドボンディング向けに改変して流用する。1 基が 8 コアと 32 MB の L3 を持ち、3 基で 24 コアになる - メモリ: CCD と XCD が HBM ベースの統一メモリを共有し、直接ロード・ストアできる。CPU は他の CPU と GPU にハードウェアコヒーレントである。GPU は他ソケットの GPU にはソフトウェアコヒーレントである。容量は 128 GB、128 チャネル、ピーク約 5.3 TB/s。4 KB ごとにアドレスハッシュで HBM スタックへインターリーブする - Infinity Cache: 各チャネルに 2 MB のスライスを対応させ、計 256 MB。メモリ側キャッシュのためコヒーレンスに関与せず、HBM の帯域を最大 17 TB/s へ増幅する ### 物理構成 MI300A は約 1,460 億トランジスタ(HBM を除く)で、複数レチクル分の論理を持つ。HBM 8 スタックと I/O の外周長が要る面積は標準レチクルを超える単一 IOD には収まらないため、IOD を 4 枚に分割する。XCD と CCD は 3D ハイブリッドボンディングで IOD に垂直接続し、IOD 同士は超短距離(USR)PHY で結び、IOD 群と HBM 8 スタックは 2.5D シリコンインターポーザに載る。ハイブリッドボンディングは微小バンプではなく金属パッドの直接接合で、ピッチは 9 µm、熱伝導もマイクロバンプ方式より優れる。USR PHY は従来の SerDes より面積帯域密度が 10 倍超高く、消費電力は 0.4 mW/Gbps で、USR のバンプピッチは最小 35 µm である。 ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig06-heterogeneous-integration.png]] 図6(Figure 6): 複数の先進集積・パッケージング技術を用いた MI300A の異種集積構造 ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig07-iod-bandwidth.png]] 図7(Figure 7): 各インターフェースにおける MI300A の IOD 帯域 USR の総帯域は複数 TB/s に達し、HBM へのアクセスは、Infinity Fabric が単一のモノリシック IOD にあるかのように見える。 ### 3D インターフェースと IOD 鏡像化 XCD は MI300A 専用に設計したため 3D インターフェースを IOD の接続点へ直接合わせられた。CCD は EPYC と共通の設計を使うので、ボンドパッド金属(BPM)の着地点を足し、2D SerDes と 3D の間を単純な多重化で切り替える。IOD は CCD 用と XCD 用の接続の上位集合を実装し、同一の物理設計を CCD 搭載にも XCD 搭載にも使う。 ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig08-3d-interfaces.png]] 図8(Figure 8): (a) CCD の 2D・3D インターフェース、(b) IOD の CCD 用 3D インターフェース、(c) IOD の XCD 用 3D インターフェース IOD は全 4 枚のうち 2 枚が最小限の改変による鏡像であり、フロアプランと物理設計をほぼ再利用できた。隣接 IOD と TX と RX が対になるよう USR の TX・RX モジュールを鏡像側で入れ替える。CCD と XCD の鏡像版は作らないので、非鏡像チップが鏡像 IOD にも合うように、3D 信号用 TSV を冗長に複製する。 ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig09-iod-mirroring.png]] 図9(Figure 9): 非鏡像チップに合わせる TSV の複製と、USR PHY を合わせた IOD の鏡像化 ### 電力供給、熱、パッケージ - 電源・グラウンド用 TSV を CCD と XCD で共通の一様なグリッドにし、あらゆる鏡像・回転の組み合わせで整列させる。IOD の TSV グリッドは 1.5 A/mm² 超を最小の I²R 損失で供給し、IOD 下面のマイクロバンプがさらに 0.5 A/mm² を IOD 自身に供給する - Infinity Cache の SRAM アレイは、電源 TSV の縞の間に収まるようピッチを合わせて特注する ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig10-tsv-infinity-cache.png]] 図10(Figure 10): チップレットの電源 TSV と Infinity Cache SRAM アレイマクロの協調フロアプラン - ハイブリッドボンディング面は、V-Cache では BPM がボンドパッドビアで SRAM ダイの最上位メタルに接続していた。MI300A は電力要件が高い CCD・XCD を上に載せるため、ボンドパッドビアを抵抗の低いアルミ再配線層へ直接落とす ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig11-hybrid-bonding.png]] 図11(Figure 11): (a) 従来の V-Cache 実装と (b) MI300A における 3D ボンディングインターフェース - 電力は、演算集約の局面では計算チップレットへ、メモリ集約の局面ではメモリ系・データファブリック・USR へ、IOD と計算チップレットの間で垂直に融通する。熱シミュレーションでは、GPU 集約では XCD が、メモリ集約では HBM PHY と USR も含めて熱源が分散する ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig12-power-thermal.png]] 図12(Figure 12): (a) ワークロード別の代表的な電力分布、(b) GPU 集約と (c) メモリ集約の熱シミュレーション予測 ### プログラミングモデルとソフトウェア MI300A は 6 基の XCD を 1 個の GPU として見せる。ユーザモードのキューに HSA の AQL パケットを積む方式で、各 XCD の ACE が同じパケットを読み、自分が担当するワークグループの部分集合だけを起動する。担当の割り当ては、L2 でのデータ再利用と全 XCD の活用による帯域最大化のあいだで調整できる。XCD 間の同期には Infinity Fabric の高優先チャネルを使い、単一のカーネルをチップレット間へ分散する。専用のスケジューリングチップレットを持たず、チップレットごとのスケジューラを使うことで、配線を減らし、チップレット数が増えても発行スループットを保ち、異なる XCD 数の区画も作れる。 ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig13-multi-xcd-dispatch.png]] 図13(Figure 13): 複数 XCD にわたるカーネルの発行と完了のフロー EHPv4 は GPU チップレット間の帯域が低く、1 つのカーネルを両方で実行するのに向かなかった。MI250X が GCD を別々のアクセラレータとして見せたのも同じ理由である。MI300A では、OpenMP、RAJA、Kokkos、PyTorch、TensorFlow、JAX、Triton などがそのまま使え、ROCm が最適化ライブラリを提供する。 [[統合メモリ]]により、ホストとデバイスのメモリ空間の区別と冗長なコピーが消える。CPU 専用コード、個別 GPU、APU の 3 通りを比べると、個別 GPU では hipMalloc と 2 回の hipMemcpy が要るが、APU では CPU 用コードと同じ形になる。 ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig14-programming-models.png]] 図14(Figure 14): (a) CPU 専用、(b) 個別 GPU で分離メモリ、(c) 統合メモリの APU における、コードとデータ移動・同期の例 個別 GPU ではホストと GPU 間の帯域が PCIe の数十 GB/s に制約されるが、APU では CPU が HBM に書いた直後に GPU が HBM の速度で処理できる。出力要素ごとの完了フラグを使うと、GPU の生成と CPU の後処理を要素単位で重ねられ、カーネル単位の粗い同期が要らなくなる。BLAS や LAPACK のような標準ライブラリ呼び出しは、問題サイズなどの単純なヒューリスティックで CPU か GPU に振り分ける薄いシム経由にでき、CPU 専用コードをコード改変なしに APU へオフロードできる。 ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig15-cpu-gpu-overlap.png]] 図15(Figure 15): (a) GPU と CPU の実行を細粒度に切り離すコード例、(b) 両者が重なるタイムライン、(c) 元のコードのタイムライン ### MI300X とプラットフォーム MI300X は MI300A の 3 基の CCD を 2 基の XCD に差し替えた GPU 専用モジュールで、XCD 8 基により 304 CU を持ち、FLOPS/mm³ が MI300A より高い。12 段積みの HBM を使い、容量は 192 GB(1 スタック 24 GB)である。LLM は、プロンプト段階が計算集約、トークン生成が帯域律速で、モデルが大きく容量も要るため、この構成が向く。従来のチップレット再利用は EPYC と Ryzen のように製品ラインをまたいで同じ型を使うものだったが、今回は同一パッケージ内でチップレット種別を選択して差し替えられる点が新しい。 ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig16-mi300x-swap.png]] 図16(Figure 16): MI300A の CCD を XCD に差し替えて MI300X を作る構成 区画化(パーティショニング)は、[[GPUパーティショニング]]の観点で MI300A が XCD 6 基を 1 台または 3 区画、MI300X が 2 の冪で 1 区画から 8 区画まで選べる。メモリは単一 NUMA(NPS1)を基本とし、MI300X は 1 ソケット 4 NUMA(NPS4)も選べる。SR-IOV では PCIe の仮想関数ごとに区画を対応させられる。 ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig17-partitioning.png]] 図17(Figure 17): (a) MI300A と (b) MI300X の計算・メモリの区画化モード I/O は各 IOD が x16 リンクを 2 本持ち、1 本は Infinity Fabric 専用、もう 1 本は Infinity Fabric か PCIe Gen5 として使える。1 ソケット 8 本で、x16 は双方向 128 GB/s、計 1,024 GB/s である。4 基の MI300A ノードは 6 本で完全結合の Infinity Fabric を構成し(各 APU 対に x16 を 2 本)、全 HBM をフラットな物理アドレス空間で直接ロード・ストアできる。8 基の MI300X ノードは 7 本で完全結合し、残り 1 本で EPYC ホストへ PCIe 接続する。IOD は同一設計でありながら、インターフェース構成の違いで異なるシステムになる。 ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig18-node-topologies.png]] 図18(Figure 18): (a) MI300A APU と (b) MI300X アクセラレータの例示ノード構成 ## 新規性 - 従来の EHP 研究に対して、EHP が実現しなかった理由の回顧と、後継の実装(MI300A)への発展を 1 本にまとめる。単なる製品紹介ではなく、設計判断の経緯を共有する産業論文である - チップレットの再利用を製品ライン間から、同一パッケージ内での CPU・GPU チップレット種別の差し替えへ広げた。設計対象は XCD と IOD の 2 種で、CCD は既存品の改変で済む - IOD の鏡像化と、鏡像・回転のすべての組み合わせに合う冗長 TSV により、CCD と XCD の鏡像版を作らずに済ませた ## 実験設定 - 産業論文であり、性能は主目的ではなく「便益の味わい」を示すにとどまる - MI300A の結果は 128 GB HBM3、TDP 550 W のブリングアップ用リファレンスプラットフォーム、Ubuntu Linux と ROCm 6.0 で測定した。基準の MI250X は 128 GB HBM2e、TBP 560 W、ROCm 5.4.3 である。すべて単一の APU または GPU で実行した - ワークロードは GROMACS、N-body カーネル、HPCG、OpenFOAM(Motorbike 入力)である - MI300X は Llama-2 70B の推論で、バッチサイズ 1、入力 2048 トークン、出力 128 トークンである。基準 GPU と vLLM(FP16)、TensorRT-LLM、FP8 の 3 条件で比べる ## 実験結果 - 世代間の向上: 演算のピーク性能は全般に増加し、ピークのメモリ帯域は MI250X 比で 70% 向上、I/O 帯域は 2 倍になる。MI300X はメモリ容量が 50% 多い ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig19-generational-uplift.png]] 図19(Figure 19): MI250X に対する MI300A と MI300X の世代間向上 - HPC: GROMACS、N-body、HPCG で MI300A が上回る。前二者は演算性能、HPCG は HBM3 の帯域による。OpenFOAM は 2.75 倍で、演算集約、高メモリ帯域、CPU と GPU 間のデータ移動が多い(個別 GPU 実装で)という APU 向きの性質を全て備える ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig20-hpc-speedups.png]] 図20(Figure 20): MI250X に対する MI300A APU の HPC ワークロードでの実測高速化 - LLM 推論: vLLM 条件で MI300X は基準 GPU に対しレイテンシが 2 倍超改善する。基準側に最適化した TensorRT-LLM でも約 30% 改善する。基準側を FP8 にして演算とメモリのピークを実質 2 倍にする条件では、vLLM が FP8 に未対応のため MI300X は FP16 のままだが、絶対レイテンシでは優位を保つ ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig21-llama2-inference.png]] 図21(Figure 21): バッチサイズ 1、入力 2048 トークン、出力 128 トークンでの Llama-2 70B 推論レイテンシ(中央値) ## 考察 - EHPv3 を採らなかった理由は、積層が過度に攻撃的だった点にある。GPU チップレットは 1 個が HBM スタック(約 100 mm²)以上の面積で、その 4 個を 400 mm² 超の能動インターポーザに載せ、さらに各 GPU チップレット上へ HBM を積む。工程の追加、個別に扱う多数のダイ、2 段を超える積層の薄化と TSV、構造の大型化があり、放熱も当時の冷却能力を超えた。V-Cache は数十 mm² の CPU チップレットに SRAM を載せるだけで、規模が桁違いである ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig03-vcache-ehpv3-stack.png]] 図3(Figure 3): (a) CPU チップレット上に SRAM チップレットを積む V-Cache と、(b) EHPv3 の GPU 複合体の積層(概ね縮尺どおり) - EHPv4 は、EPYC サーバ用 IOD の流用が仇になった。ダイ間インターフェースの大きさと位置が制約し、2 つの GPU が遠く離れて、反対側の HBM へのアクセスで帯域が下がり電力が増える。隣接ダイ向けの高帯域パッケージ(受動インターポーザや EFB)が使えず、MI250X の GCD 間と同様の 2D Infinity Fabric リンクに限られる。リンクは DDR 級の帯域を想定していて HBM 中心の構成には細い。CPU から HBM まで 2 回のダイ間ホップが要る。IOD の 12 本の IF リンクの一部は未接続となり、GPU と HBM の配置が DDR チャネルや I/O のエスケープ経路を塞ぐため、面積が無駄になる ![[wiki/sources/_attachments/Realizing-the-AMD-Exascale-Heterogeneous-Processor-Vision/fig04-ehpv4-challenges.png]] 図4(Figure 4): EHPv4 に残っていた各種の課題 - 結論として、EPYC CPU と MI250X GPU をコヒーレントに結ぶ Frontier の構成は、第 1 世代エクサスケールには正しい選択だった。異なる先進パッケージ技術を組み合わせた Frontier の成功と、それに得た学びが、HPC と ML 向けの APU に道を開いた - MI300A と EHP の比較では、単一パッケージの APU、統一されたパッケージ内メモリ、GPU 2 に対して CCD 1 という比率(EHPv4 は 4 対 2、MI300A は 6 対 3)、HBM スタック数が共通する。EHPv3 が予見した 3D 積層の能動インターポーザ構成も採る。差は、ハイブリッドボンディングとマイクロバンプの 2.5D が揃ったため、計算チップレット、HBM、I/O の間に高帯域で高効率のデータ移動基盤を作れた点にある。IOD は事実上 1 種類で、CCD と XCD を選んで載せられる。EHPv3 の能動インターポーザ 2 種のようなコスト増もない - 結論として、APU を第 1 世代に採らなかったのは技術的な否定ではなく、時期の問題であった。技術・市場・顧客の要求が変わり、今が高性能 APU の時である ## 強み / 弱点・課題 強み - 設計判断を「採らなかった理由」の側から具体的な数値(面積、積層数、リンク数)で説明しており、産業側の一次情報として価値が高い - IOD 鏡像化、冗長 TSV、共通の電源グリッド、ピッチを合わせた SRAM といった、3D チップレットの実装上の工夫が粒度高く記述される - ハードウェア(単一 GPU に見せる XCD 間発行)とソフトウェア(統合メモリ、既存フレームワークのサポート)を一貫して述べる 弱点・課題 - 産業論文であり、評価は少数のワークロードで、比較対象の詳細な構成は外部資料に依る。性能比較は AMD 自身の測定で、独立検証はない - MI300A の HPC 結果はブリングアップ用リファレンスと ROCm の版が MI250X と異なる(6.0 対 5.4.3)ため、ソフトウェアの差が混ざる - MI300X の推論比較は数値形式が揃わない条件(FP16 対 FP8)を含み、基準 GPU の名称は本文で明示されない - 電力・熱の定量的な評価(例: 実測の消費電力対性能)は本文に無く、シミュレーション図の定性的な提示にとどまる