【元記事をASCII.jpで読む】

 AMDのInstinct MI300に関しては連載701回連載726回連載751回などで説明してきたが、今年のISSCCでAMD自身によるDeep Diveの説明があったので、この内容を解説しよう。といっても性能に関しては言及がなく、焦点は3D構造の実装になる。

複雑なMI300A/Xの内部構造
IODは共通で、XCDとCCDのどちらも搭載できる

 まずおさらいであるが、MI300A/Xともに複数のGPU(XCD)と、MI300AはさらにCPU(CCD)を、インフィニティ・キャッシュを搭載したI/O Die(IOD)の上に搭載、さらにこのIOD同士を2.5Dで接続し、外付けに8スタックのHBM3を接続する構造になっている。

 ちなみにIODの説明だが、128chのHBM3チャンネルや256MBのインフィニティ・キャッシュは4つのIODの合計の数字であり、IOD1つあたりで言えばインフィニティ・キャッシュは64MB、HBM3は32ch(HBM3は1スタックあたり16chのI/Fを持つ)という計算になる。

 インフィニティ・ファブリック・リンクの数とPCIeの数が割り切れないのは、おそらくおのおののIODには64ch分のPCIe/インフィニティ・ファブリック共用のPHYが用意されており、インフィニティ・ファブリックは32ch分で1リンクとなるのだろう。したがって4つのIODで合計256chのPHYがあり、このうち224chは7本のインフィニティ・ファブリック・リンクに割り当てられ、残りの32chが2×PCIe Gen5x16に割り当てられるという構造と考えられる。

 下の画像が内部構造図なのだが、これはややわかりにくい。左側はあえて簡略化しているのだろうが、XCDには40個のCUが搭載されており、うち2つが無効化され実際に利用されるのは38CUである。これが8つでトータル304CUというわけだ。

 2次キャッシュは4MBであるが、メモリー階層構造を見る限り、この2次キャッシュは1つのXCD内のCUで共有という形であり、異なるXCD同士の2次キャッシュは上位のクロスバー(つまりインフィニティ・キャッシュ)経由での接続になるので、グローバル・キャッシュというよりはローカル・キャッシュとみなすべきなのだろう。

 まず実装方法である。先に書いたように、XCD/CCDはIODの上に載っているが、XCDおよびCCDはどちらも一種類で、これをそのまま載せるか、180度回転させて載せるかであるが、IODに関してはやはりミラー構造を採用することになった。

 このミラーというのは、要するに鏡対称のことだ。これ、Sapphire Rapidsの構造の議論のところでも出てきた話だが、上の画像で言えば左上のIODと左下IODは、回転させてもいろいろつじつまが合わないことになる。

 左上と左下は、ちょうど真ん中で相互接続する必要があるし、左端にはPCIe/インフィニティ・キャッシュのI/Fを集約する必要がある。また上下にHBMのI/Fも設けなければならない。これを満たそうとすると、どうやっても鏡対称となる2種類のダイを作らなければ解決しないことになる。

 実際Sapphire Rapidsでも4タイル構成のXCC SKUは鏡対称となる2種類のダイが用意されていることが確認されており、AMDもこれにならったわけだ。

 このことはそれほど驚きではないのだが、ここではっきり"Four unique tape-outs:two IODs, one XCD and one CCD"とあるのは驚きだった。上の画像の右上にあたるIODは、Instinct MI300AとInstinct MI300Xで共通になるからだ。要するにIODは、XCDとCCDのどちらも搭載できるように設計されているわけだ。てっきり筆者は、XCD用とCCD用で異なるIODを用意していると考えていたからだ。

シリコン・インターポーザーはInstinct MI250Xの時と異なる構造

 さてそのXCD/CCDとIODの接続方法であるが、TSVのピッチは9μmで、これはRyzenの3D V-Cacheと同じ数値であるが、そもそも3D V-Cacheは3次キャッシュの上に3D Vキャッシュを積層する形だったので面積が小さかった。ところがMI300ではXCDを積層するために、5倍以上の面積でのボンディングが行なわれた。

 またボンディングの方法も変わった。基本的にトップダイとボトムダイの間をファンデルワールス力で接続、つまり接続面を極めて平坦にした上で分子間力を利用して接続する方式で、半田ボールベースのマイクロバンプではないことそのものは3D Vキャッシュと同じであるが、その接続が変わった。

 3D Vキャッシュの場合、配線層の一番下ではなく、その一つ手前(M13)からBPV(Bond Pad VIA)を使って配線を引っ張り出し、それをボトムダイの上面に構成されたBPM(Bond Pad Metal)に接続する形を取っていた。

 この方式を使ったのは、おそらくだが3D Vキャッシュは32MBSRAMのダイを2枚あらかじめ重ねた上で、それをZen 4の3次キャッシュの上に積層するという構造になっている。したがって2枚の32MB SRAMダイは上下にTSVが出るような構造になっている。でないと上側のSRAMダイからの配線を下側SRAMに伝えられないからだ。

 この関係で必要な配線は内部からBPV経由で外に引き出す形になっていると思われるのだが、MI300の場合はトップダイがロジック(CCDなりXCD)であり、その上にはダイが載らない。

 またXCDはともかくCCDに関してはもともとはRyzenやEPYCなど、有機パッケージ上に直接バンプ経由で接続する構造になっており、M13の下(ダイ的に言えば上なのだろうが)にAlの配線が来る。そこに薄い銅ベースのBPVを挟み、これをBPMと接続するという形にしたのがMI300である。

 想像だが、これはすでにあるZen 4のダイをIODの上に接続するための苦心の策なように思われる。そもそもZen 4のダイはバンプでパッケージと接続するのが前提の構造だったはずで、バンプの代わりにこのBPVをダイの底面(というか上面)に構築する形で対応したのだろうと想像される。

 一方でIOD同士の接続は、シリコン・インターポーザーを経由しての接続であり、これはHBMに関しても同じである。少し意外だったのは、このシリコン・インターポーザーがInstinct MI250Xの時と異なる構造になっていることだ。

 Instinct MI250Xの際にはElevated Fanout Bridge 2.5Dが利用された。要するに実際に接続する部分(上の画像で言えば、IOD同士の接続と、IOD⇔HBM3の接続の配線部)のみにシリコン・インターポーザーを配し、後の部分(つまり2つ上の画像で言えばSubstrateと直接接続する部分)はCuの柱(Pillar)を立てるという方法だった。

 これはASEの提供するFOCoS-Bridgeを利用していたものと思われる。なのだがInstinct MI300Xでは全体をカバーする巨大なシリコン・インターポーザーを利用する方式に変わった。こちらはおそらくTSMCのCoWoSベースである。

 以前はCoWoSはReticle Limit(つまり1回の露光でパターンを生成できるサイズの限界)に縛られていたが、やっとここに来てTSMCが従来から主張していた「Reticle Limitの2倍≒1700mm2前後」のインターポーザーが実用になったようだ。

 ただこれは「マスクとシリコンの距離を大きくする=パターンが大きく露光される」ことを利用しており、欠点として配線密度が低下する(単に2倍に拡大されるので、縦横等倍だとすると配線密度は1/√2≒0.7倍程になる)のだが、上の画像を見るとIOD同士の配線はかなり密であり、このあたりの欠点をなんらかの方法で克服したものと思われる。

IODを貫通して直接シリコン・インターボーザーから電力を供給できる

 配線に関しては、信号だけでなく電力供給周りもずいぶん苦労したようだ。IODには3ヵ所に電力供給用のTSVが集中的に配置されており、XCDはこれを2+1で、CCDはそれぞれ1つづつ接続する形で配している。

 もっとも2+1といっても、2つ上の画像で言えば上段左側のXCDは、この両方を使うわけではなく、片方だけを使っていると思うのだが。このPower TSVに関しては、IODを貫通して直接シリコン・インターボーザーから電力を供給できるような工夫がなされているらしい。

 この配線に関して、電力以外はいいのか? という疑問もあるのだが。ただ3D Vキャッシュと異なり、CCDの3次キャッシュとインフィニティ・キャッシュは別に連携しているわけではない(CCDからは4次キャッシュとしてインフィニティ・キャッシュが見えている形になっていると思われる)ので、まだどうにかできるということかもしれない。

 このあたりの模式図(ただしMI300X)が下の画像だ。パワープレーンはIODあたり1つになっているようで、MI300Xは2つのXCDで1つのパワープレーンを共用することになる。

 ただRyzen同様に、オンダイでLDO(Low Drop Out Regurator)による電圧調整は可能だろうし、Power Gatingも可能になっていると思われるので、これはそれほど問題にはならないだろう。ちなみにUSRというのはUltra Short Reachの略で、これはIOD同士の接続の配線の意味である。

 あと、冷静に考えれば当然そうなのだが、モバイルチップ的なパワーシェアリングの機能も搭載されていることが説明された。

 あくまでも上限のパワーは決まっており、この枠の中でワークロードに応じて電力枠を配分する仕組みが入っているというわけだ。サーバー向けだからといって、むやみに電力枠を増やしても性能電力比が悪化するだけであり、このあたりはAMDらしい実装という気がする。

 3D構造のチップレットを利用したGPUという観点で言えばインテルのPonte Vecchioが先行しているわけであるが、AMDの実装は過去の同社の実装(3D VキャッシュやInstinct MI250Xなど)の延長にあることが改めて確認できた格好である。

 そして、CPUとGPUのユニファイド構成という観点で言えば今のところInstinct MI300Aが唯一であり他社製品にはない。NVIDIAのGH100/200やBH100/200は単に同じパッケージにCPUとGPUが載っているだけで、メモリーはそれぞれ別々になっており、メモリー同士のインターコネクトも存在しない。インテルFalcon Shore待ちである。

 しかもそれを最小限のコストで実装している(まさかIODが共通とは思わなかった)ことを改めて確認できた発表であった。

Instinct MI300のI/OダイはXCDとCCDのどちらにも搭載できる驚きの構造 AMD GPUロードマップ