AMDに関する話題
AMD、スケーラビリティ重視の「Zen 4c」を発表 - マイナビ
AMD Bergamo to hit 128 Cores and Genoa at 96 Cores - ServeTheHome
AMDの発表でのテーマは3D V-Cache搭載のZen 3世代Epyc = "Milan-X"だったのだろうが、個人的に興味深かったのはZen 4搭載Epyc = "Genoa" / Zen 4c搭載Epyc = "Bergamo"の話題の方だった。
"Genoa", "Bergamo"
Zen 4世代Epyc = "Genoa"が96コアというウワサは既報の通りだが、Zen 4c搭載の"Bergamo"も併せて考えると非常に興味深い。なぜならメモリートポロジーの変更もありえるからだ。
記事中にある通り、"Genoa"・"Bergamo"はソケットおよび命令セットを共有する。普通に考えれば、これは対応メモリーのスペック・チャンネル数とPCIeのスペック・レーン数が共通ということを示唆している。
ところが、このうち対応メモリーのスペック(DDR5)はともかくチャンネル数については現行Zen 2/Zen 3世代からのメモリートポロジーの変更を示唆しているようにも見える。
まず、現行Zen 2/Zen 3世代Epycのメモリートポロジーを振り返ってみる。以前も本ブログでも取り上げたことがあるが、Zen 2世代Epycについて、ServeTheHomeが「Quadrant」という構成単位を解説したことがある。このQuadrantという単位について筆者はAMD公式の資料で見たことが無いので名称の正当性は不明であるが、概念そのものはAMDのISSCC 2020の発表資料での解説とも合致する妥当なものだ。Anandtechのような海外メディアでも用いられることがある。
1つのQuadrantは1~2 CCD x DDR4 2ch・PCIe 32レーンで構成され、Zen 2/Zen 3世代ではRyzenからEpycまで、このQuadrant単位でスケールする。Epycでは4つのQuadrantにより8 CCD・DDR4 8ch・PCIe 128レーンという構成・Ryzenでは1つのQuadrantにより1~2 CCD・DDR4 2ch・PCIe 32レーンという構成となっている。
実際、AMDのISSCC 2020でのsIODの説明資料(Anandtechの記事中の画像)を参照しても、内部で4分割されリングバスで相互接続されていることが解る。そして、NUMAモードで運用するような場合にはNode per Socket(NPS)でQuadrant単位で分割されることになる(NPS=1の場合1 Node = 4 Quadrant・NPS=4の場合1 Node = 1 Quadrant)。
つまり、Zen 2/Zen 3世代Epycは4 Quadrant構成のため、必ずCCD数・メモリーチャンネル数も4の倍数となりバランスされている。
もし仮に最大8コア/CCDでZen 2/Zen 3のトポロジーのまま96コアを実現するとすれば普通に考えれば6 Quadrant構成で12 CCD・メモリー 12chとなるはずである。
実際、Zen 4世代Epyc "Genoa"は最大96コア・12 CCDという構成(これは以前もウワサされていたが今回の発表でも明らかになっている)で、メモリーチャンネル数は公式には発表されていないがDDR5 12chとウワサされており、もしZen 2/Zen 3のメモリートポロジーが維持されていても構造的に問題はない。
ところが、Zen 4c搭載Epyc "Bergamo"ではこの計算が合わないように見える。"Bergamo"はクラウドハイパースケーラー向けの高密度サーバー用で、上述の通り"Genoa"とソケットが共通とされている。
しかし、CPUコア数は128で6の倍数ではなく6 Quadrantとは考え難い。マイナビ記事中で大原氏が「CCXそのものは8コアのままで16ダイを搭載か、それともCCXそのものを16コアに拡張して8ダイ構成なのかは現状不明」とされているが、いずれにせよ6 Quadrantにはならない。128コアという数字から逆算すると4 Quadrantまたは8 Quadrantが妥当で、この場合のメモリーチャンネル数は8 chまたは16 chということになる。
"Genoa"についても"Bergamo"についてもスペックの詳細が明かされたわけでもモノが出たわけでもないので、どのようになっているのか詳細は不明である。(1) メモリートポロジーが変更されておりQuadrant単位ではなくなっている場合 (2) "Genoa"と"Bergamo"で物理的・電気的に「ソケットは共通」だが最大メモリーチャンネル数は異なる場合の2通りが考えられる。
通常、(2)のようなことはありえないが、"Bergamo"が特定ユーザー=クラウドハイパースケーラー限定の一般に出回らないSKUなのだとすれば特に問題にならない可能性もある。
ちなみに、ウワサではZen 5世代でも192コア構成の通常用と256コア構成の高密度サーバー用の2種類が用意されるとされている。
※ 8 Quadrant構成で"Genoa"の96コアが12コア x 8 CCDや6コア x 16 CCDというのも計算上は成り立つが、AMDの発表資料では12 CCDのため、やはり辻褄が合わない。
Zen 4, Zen 4c
Zen 4cという派生コアの登場は興味深い。というのも、Zen 5世代ではZen 5/Zen 5L(いずれも正式名称ではなくウワサされている名称)という2種類のコアによるAMD版big.LITTLEの導入がウワサされているからだ。
もし"Genoa" 最大96コアと"Bergamo" 最大128コアのCCDの占める面積(≒トランジスター数)がほぼ同等とするならZen 4cはZen 4比で概ね75%という計算になる。AMDは世代毎に約+20%程度CPUコアのトランジスターバジェットを増やしているため、Zen 3→Zen 4でも同等と仮定するとZen 4とZen 4cとのトランジスター数の比率は概ね120:90となることが想定される(Zen 3を基準=100とする場合)。
つまり上述の仮定が正しい場合ではZen 4cコアのトランジスター数はZen 4比で約75%でしかなく、big.LITTLE構成の省電力コアとしてはかなり大型となってしまい中途半端になってしまう。ちなみにIntel P-Core/E-CoreでもArm Cortex-A70系/A50系でも省電力コアは高性能コアの1/4以下でしかない。
しかし、さらに世代を進めZen 5世代以降では話は変わってくるかもしれない。Zen 3→Zen 4→Zen 5でこれまで通り世代毎に約+20%程度CPUコアのトランジスターバジェットが増え、さらにZen 4c→Zen 5Lのトランジスターバジェットが同等と仮定すると、Zen 5とZen 5Lとのトランジスター数の比率は144:90となり相対的に約60%まで縮小することになる。
もちろん、上述の仮定(「"Genoa" 最大96コアと"Bergamo" 最大128コアのCCDの占める面積(≒トランジスター数)がほぼ同等」「Zen 4c→Zen 5Lのトランジスターバジェットが同等」)は筆者の推定に基づく根拠の無い数字ではあるが、技術的には実現可能そうに思える。
CDNA2
AMDのエクサスパコン用CPU「Milan-X」とGPU「Instinct MI200」を読み解く - マイナビ
AMD、Frontierに採用のカスタム版EPYCとRadeon Instinct MI200の詳細を公開 - マイナビ
The AMD “Aldebaran” GPU that won Exascale - The Next Platform
AMDはCDNA2のWhitepaperを既に公開しており、なかなか興味深い。
CDNA2のアーキテクチャーはCDNAによく似ている。
個人的に気になるのは一般的な市場で売る気があるのかどうかである。FP64 Vector演算とFP64 Matrix演算の性能が大幅に強化されており、Frontierを強く意識しているように見える。その一方でFP32/FP16/bFP16についてはCDNAからほとんど変化が無く、HPC以外の用途をどの程度想定しているのか疑問である。
MI250Xは2ダイのオンパッケージのMCMで構成されているが、各ダイのスペックはCDNA世代のMI100と酷似している。
下の表はMI100・MI250XそしてMI250Xのダイあたりのスペックを示したものであるが、MI100とMI250X 1ダイのスペックはよく似ており、FP64 Vector・FP64 Matrixが重点的に強化されたことが解る。
| MI100 "Arcturus" | MI250X "Aldebaran" | MI250X (1 die only) |
---|
Technology | TSMC N7 | TSMC N6 |
---|
Die | 25.6 billion 750 mm2 | 58.2 billion | 29.1 billion |
---|
Compute Units | 120 | 220 | 110 |
---|
Engine Clock | 1520 MHz | 1700 MHz |
---|
Memory | HBM2 32GB 4 stack | HBM2E 128GB 8 stack | HBM2E 64GB 4 stack |
---|
Memory Bandwidth
| 1.23 TB/s | 3.2 TB/s | 1.6 TB/s |
---|
FP64 Vector | 11.5 TFLOPS | 47.9 TFLOPS | 23.9 TFLOPS |
---|
FP64 Matrix | 11.5 TFLOPS | 95.7 TFLOPS | 47.9 TFLOPS |
---|
FP32 Vector | 23.1 TFLOPS | 47.9 TFLOPS | 23.9 TFLOPS |
---|
FP32 Matrix | 46.1 TFLOPS | 95.7 TFLOPS | 47.9 TFLOPS |
---|
FP16 Matrix | 184.6 TFLOPS | 383.0 TFLOPS | 191.5 TFLOPS |
---|
そもそも、CDNAはTSMC N7で製造されたのに対し、CDNA2はTSMC N6で製造されている。N6はN7のハーフノード世代=改良版でトランジスター密度は微増で、マクロの種類によっても異なるが、N7の96.5 MTr/mm2に対しN6は114.2 MTr/mm2で+18%に留まる。そのためMI100からMI250Xで同等のトランジスター数を維持するのであれば+13%のトランジスター数増加というのは妥当そうに思える。
言い方を変えれば、AMDは+18%程度のトランジスターの追加でFrontierに搭載するGPUを考えたはずで、しかもEpycとの接続のためにInifnity Fabricリンクを完全結合できるように追加する必要があるから、2 ダイMCM化とFP64に絞った性能強化となったのだろう。
AMD CDNAのMatrix UnitはNVIDIAのTensorCoreとは異なり、独立した演算ユニットではなく、既存のシェーダーの512-bit幅SIMDエンジン(shSIMD)を拡張し、Matrix演算用に512-bit幅レジスタファイルと512-bit SIMDエンジン(miSIMD)を追加したものだ。そのためMatrix演算時にはshSIMDとmiSIMDの両方が動作しVector演算の2倍のスループットを実現している。shSIMDはFP64に対応していたわけで、今回miSIMDがFP64に対応してMatrix演算でFP64演算が可能となったようだ。
Frontier
御存知の通り、CDNA2アーキテクチャーのMI250Xは米エネルギー省フラッグシップHPC「Frontier」に搭載予定だが、CDNA2のブロック図のほか、Frontierのノード内のトポロジーについても言及がある。 以下の図はCDNA2のWhitepaperからの抜粋である。
MI250Xでは2つのダイをパッケージ内で相互接続するMulti-Chip Moduleとなっているが、ダイにはInfinity Fabricリンクのインターフェースが8基搭載され、うち4基を使って恐らく16レーン x 2リンクづつの双方向接続を行うようだ。

Frontierでは「最適化した」EpycにMI250Xを4基接続される。
上述の通りダイ=GCD間は2リンクで接続されるが、下の図のように全体で3種類のリング接続を行うようだ。これによりすべてのGCDが必ず1~2ホップで相互接続されることになる。

ところで、Epycの「最適化」の内容が不明なのだが、1つはPCIe/Infinity Fabricレーンの使い方なのかもしれない。現行Zen 3世代EpycのsIODにはPCIe/Infinity Fabric共用のSerDesを128レーン搭載しているのだが、一部はSATAとも共有しているため、図のように16レーン x 8リンク=128レーンをすべてInfinity Fabricで使ってしまうとNVMe SSDはおろかSATA SSD/HDDすら接続できなくなってしまう。恐らく何らかの起動用ストレージは接続されると思うが、USB 3.1で接続されるのかもしれない。
ちなみにInfinity Fabricの帯域については「800 GB/sec」という表記がある。16レーン x 8リンクの合計とすると1リンクあたり100 GB/secで、これはPCI Express 5.0 x16(63 GB/sec)よりも高速なものである。実は、Zen 3世代EpycのPCIeはPCIe Gen 4(16.0 GT/s/Lane)であるが、Infinity Fabricと共用していることもありPHYは高速なものが使用されているようで、Zen 2世代Epyc登場時に2ソケット時のIFIS(Infinity Fabric Inter-Socket)双方向48 Laneで307.2 GB/sec(16 Laneあたり102.4 GB/sec)というのが話題になったことがある。