後藤弘茂のWeekly海外ニュース

AMDが最高性能のx86 CPUと謳う「AMD EPYC 7002」シリーズ

最大64コア/128スレッドのモンスターCPU

 AMDが64コアの第2世代サーバーCPU「AMD EPYC 7002 Series」を投入した。第2世代のEPYCは、コードネーム「Rome(ローマ:英語発音ではローム)」と呼ばれている。CPUコア部分は7nmプロセスで製造され、マイクロアーキテクチャを拡張した「Zen 2」となった。8個のCPUコアを搭載したCPUコアダイを最大8個搭載し、メモリとI/Oの機能を統合したI/Oダイと接続する。8コア×8ダイで、最大64個のCPUコアを1つのCPUパッケージに搭載する。

AMDはEPYC 7002を最高性能のx86 CPUと宣言する
2ソケットと1ソケットで提供
EPYC 7002 Seriesの製品構成
EPYC 7002 Seriesのスペック
EPYC 7002 Seriesの概要

 AMDはサンフランシスコで8月7日(7nm製品なので7日に発表)に開催されたイベント「AMD EPYC Horizon」で、製品の概要や技術的な背景を説明した。最大構成の64コアの「AMD EPYC 7742」では、1CPU当たり、64コア/128スレッドで、ベース周波数は2.25GHz、ブースト周波数は3.4GHz、L3キャッシュの合計量が256MBで、デフォルトTDP(Thermal Design Power:熱設計消費電力)は225W。インターコネクトは、DDR4チャネルが8でDDR4-3200をサポート、PCIe gen4レーンが128(次世代のデュアルソケット版では168レーン)、メモリ容量は最大4TB。メモリ帯域は最大410GB/s、I/O帯域は512GB/s。数字を並べると途方もないモンスターだ。

会場となったサンフランシスコのPalace of Fine Arts
Lisa Su(リサ・スー)氏(President and Chief Executive Officer,AMD)

 EPYC 7002(Rome)シリーズは、サーバー市場をこれまで独占してきたIntelへの、AMDの挑戦の第2段階だ。AMDはRome世代の7nm EPYCで、データセンタ/HPC(High Performance Computing)市場での地位を確固としたものにしようとしている。第1世代のEPYCで市場の扉を開き、その評価を背景に、第2世代のEPYCで一気にシェアを伸ばしたいというのがAMDの狙いだ。

 今回の第2世代EPYCの発表で目立ったのはパートナーの支持。ハードウェアとソフトウェア、クラウドサービスのベンダーが壇上に次々に登場。発表会の最後にはGoogleが登場、Google Cloudサービスに新EPYCを導入することを明らかにした。EPYCの滑り出しでは、まだ業界全体が様子見的な雰囲気だったのが、2年後の第2世代EPYCでは、エコシステムの盛り上がりが明瞭に見えてきた。

Googleが壇上に登場

現在のサーバーソフトウェアの潮流に合わせた設計思想

 なぜEPYCの支持が広がりつつあり、第2世代EPYCも歓迎されているのか。それは、EPYCのアーキテクチャにある。EPYCの強みは、CPUコア数が多いことだけではない。CPUコア数の華々しい数字に隠されているが、じつは、それ以外の部分にもEPYCが現在のクラウド中心のサーバー市場で支持される理由がある。そして、EPYC 7002は、EPYCの強味を堅持や強化している。

 データセンターCPUとしてのEPYCの大きな特徴は、コンピュートに対するメモリ帯域とI/Oの比率を高めて、帯域とI/Oトランザクションリッチにしていること。コンピュートも第1世代で32 Zenコア、第2世代で64 Zen 2コアと弱くないのだが、CPUコア数を抑えてメモリとI/Oの比率を高めた製品がラインナップに用意されている点が特徴だ。ダイレクトにアタッチできるメモリとI/Oの数が多いことは、経済的にメモリ量を増やすことや、データセンターでどんどん重要となっているアクセラレータを含めたデバイス接続を増やすことを容易にしている。

CPUコア数だけでなくメモリチャネルと帯域、I/Oチャネルと帯域も優れる

 また、サーバーのソフトウェアスタックが、粒度の小さなVM(仮想マシン)やコンテナ(container)を大量に使う方向に向かっていることに最適化していることもEPYCの重要な特徴だ。1~4 CPUコアまでの粒度の小さなVMやコンテナをメインのターゲットとすることで、CPUコアを4個セットのバンドル単位で実装。それによって、モジュラー設計を容易にしている。そして、モジュラー設計の経済性と設計迅速性があるため、7nmのような最先端プロセスの採用が可能となっている。また、VM数が増えるとメモリ量が必要となるが、この点でもメモリチャネル重視のAMDの設計思想がマッチしている。

初代EPYCでのVM粒度との関係
PDF版はこちら

 対するIntelサーバーCPUは、伝統的にコンピュートに対する、メモリやI/Oのバランスがコンピュート寄りで、メモリとI/Oの負荷が高くなっている現在のクラウドに必ずしも最適化されているとは言いにくい。CPUコストに対してメモリチャネル数やI/Oチャネル数が相対的に少ないので、経済的にメモリ量を増やすことや、効率的にI/Oデバイス数を増やすことが難しい。粒度の大きなVMでも効率良く走るトポロジにこだわっている。また、現在のIntelは、まだモノリシックなCPU設計を取っているため、大型のサーバーCPUでは先端プロセスの導入が遅くなる。

IntelのサーバーCPUに対する優位を謳う

 CPUコア数だけを見ると、AMDとIntelがサーバーCPUでのコア数を競っているだけのように見える。しかし、よく見ると、その背後にはAMDとIntelの、サーバーCPUというものに対する設計思想の違いがあり、それが結果として両社のサーバーCPUの違いになっていることがわかる。もちろん、AMDの設計にも弱点があり、たとえば、ダイ同士の接続のレイテンシや帯域は大きな課題だ。しかし、AMDは第2世代のEPYCでは、その弱点をできるかぎり低減しようとしている。

Zen 2となりCPUコア自体の性能が向上

 第2世代のEPYC(Rome)の特徴は、7nmプロセスへの移行とともに、チップレット化をさらに推し進めたこと。シングルスレッド性能を追求したZen CPUコアをさらに強化して、浮動小数点演算性能を2倍に、IPC(Instruction-per-Clock)も高めたこと。7nmへの微細化でCPUコア数を倍増させたこと。そして、EPYCの特徴であるメモリとI/O強化の方向性を継続して、さらに発展させていること。

 第2世代EPYCのCPUコアは現在のRyzen 3000シリーズCPUと同じZen 2コア。14nmの第1世代Zenに対して、浮動小数点演算パイプが128-bitから256-bitへ拡張され、ロード/ストアも同様に256-bitに、さらにロード2とストア1のアドレス生成を並列に行なえるようになり、SIMD(Single Instruction, Multiple Data)の浮動小数点演算のピーク性能は倍増した。また、分岐予測や内部命令キャッシュの拡張によってIPC(Instruction-per-Clock)も向上している。さらに、L3キャッシュの量が、1コアあたり4MBへと倍増されている。

Zenコアから各部が拡張されたZen 2コア
PDF版はこちら
4ダイ構成から9ダイ構成に変わった
CPUコア自体のマイクロアーキテクチャも拡張された
フロントエンド部の比較
浮動小数点演算エンジンの比較
整数演算コアの比較
L3キャッシュは16MBに拡張された

 7nmのEPYCでは、Zen 2コアが4個でCPUコアのバンドル「CCX(Core Complex)」を構成しており、2個のCCXで8個のコアを搭載したCPUダイ「CCD」となっている。8コアを搭載したCCDのダイサイズは74平方mmと極めて小さく、チップレットと呼ばれている。ダイが小さいため、製造コストが高く歩留まりが悪い7nmプロセスでも経済的に製造できる。

 Romeの最大構成では、CCDが8個にI/Oダイが1個の合計9個のダイがパッケージ上に配置される。第1世代のNaplesでは、モジュラー構成でも4個のダイで、ダイの設計は同一だった。しかし、Romeでは9個のダイで、CPU側とI/O側の2種類のダイで構成されるハイブリッドマルチダイとなっている。ちなみに、AMDはEPYCに使うCPUチップレットCCDを、Ryzenにも使っている。多種の製品を簡単に派生させることができる点もモジュラー設計の強味だ。

AMDのモジュラー設計の変遷。Bulldozer時代に最初のモジュラー設計がスタートしている
PDF版はこちら
Zen 2世代のモジュラー設計によるCPU製品の派生
PDF版はこちら
CCXを2個搭載したチップレットを使う第2世代EPYC

設計を大きく変えたInfinity Fabric

 AMDがRomeの設計で力を入れたポイントの1つは、ダイ間インターコネクトの部分。AMDはオンダイとダイ間、ソケット間のすべてのインターコネクトのプロトコルを『Infinity Fabric』で統一している。しかし、同じInfinity Fabricであっても、それぞれのインターコネクトの物理実装は大きく異なる。EPYCでもオンダイとダイ間、ソケット間それぞれの伝送方式と、転送ビット幅や転送レートが異なる。

 AMDはRomeで、まずダイ間のインターコネクトの帯域と転送レートを引き上げた。第1世代のEPYCではダイ間の帯域はファブリッククロック当たり片方向16-byte(128-bit)だった。それが、第2世代EPYCでは、32-byte(256-bit)+16-byte(128-bit)へと拡張されている。ちなみに、この数字はファブリッククロック当たりの転送ビット数であり、実際のインターコネクトの物理的な実装は異なる。16-byteや32-byteの物理インターフェイスでダイが相互接続されているわけではない(第1世代EPYCの場合は片方向32-bitでファブリッククロックの4倍転送レート)。

第1世代と第2世代のEPYCのインターコネクトの比較
ダイ間接続のレイテンシを低減したRome
Romeのソケット間インターコネクトのピーク転送レートと実効転送レート

 また、AMDは第2世代であるRomeではダイ間のインターコネクトのレイテンシも短縮している。具体的には、第1世代のNaplesでは同じCPUパッケージ内の別ダイのメモリリージョンにアクセスする場合は、141ns(ナノ秒)のレイテンシだった。それに対して第2世代のRomeではCPUパッケージ内のすべてのCPUが別なI/Oダイのメモリにアクセスするアーキテクチャだが、レイテンシは104nsへと短縮されている。内部インターコネクトのアーキテクチャを変更したことでレイテンシを縮めたという。ただし、帯域とレイテンシは改善したが、消費エナジーは約2pj/bitでほとんど同じだ。

 ソケット間のインターコネクトについては、従来のNaplesではPCI ExpressとSerDesを共有したインターコネクトによって、9.6Gbpsの転送レートで接続していた。今回のRomeは、Naplesと同じマザーボードを使う場合は10.7Gbpsの転送レート、Rome向けの新しいマザーボードを使う場合は最大18Gbpsの転送レートでソケット間を接続する。1リンクが片方向16レーンで最大4リンクを備える。ソケット間のピーク帯域はほぼ倍近くに拡張されることになる。

PCI ExpressはGen4となりレーン数も新プラットフォームでは168に

 汎用I/Oは現在公表されているのはPCI Express Gen4で、Gen3から転送帯域が2倍に増えた。1ソケットでPCIe Gen4は128レーン。2ソケット時は既存のマザーボードでは同じ128レーンだが、新マザーボードではPCIeは162レーンとなる。

 第1世代のNaplesでは、PCIeはソケット間のInfinity FabricとSerDesを共有していた。Naplesでは、ソケット間接続に64レーンを使うために、2ソケットでもPCIeに128レーンしか出せなかった。それに対して、Romeでは、おそらく、ソケット間Infinity FabricのSerDesが独立しており、そのために、2ソケットでは128以上のPCIeレーンを出せるものと推測される。結果として、Romeは新マザーボードが登場する第2段階では、2ソケットで168レーンのPCIe Gen4がサポートされ、1.3倍にI/Oレーン数が増えることになる。

RomeのハイスピードI/O構成。次期2ソケットでは168レーンのPCIeがサポートされる

 各ダイにつき8チャネルのメモリ帯域はEPYCの強味だが、これも拡張された。チャネル数はそのままだが、転送レートが引き上げられる。RomeではDDR4-3200をサポートするため、2ソケットの場合は16チャネルで3.2Gbpsの転送となり、帯域は410GB/sとなる。第1世代のEPYCがDDR4-2666までで340GB/sの帯域なので、20.6%の帯域増となる。

メモリ帯域も増やしたRome

 コンピュートやI/Oの引き上げに対してメモリ帯域の向上幅は少ないが、これは現状のメモリアーキテクチャの制約だ。2ソケットで16チャネルのメモリ配線はかなりきつきつで、これ以上メモリチャネル数を増やすことは難しい。メモリ容量は最大4TBで、256GB DIMMをサポートする。これは、DRAMが4F2化することで大容量化することを見込んだ拡張だ。

 AMDは、Romeで止まらない。すでに7nm+世代のプロセスのZen 3コアの設計が終わっており、Zen 3ベースの次世代EPYC「Milan(ミラノ:英語発音ではミラーン)」が見えている。そして、Zen 4をZen 4ベースの「Genoa(ジェノバ:英語発音ではジェノア)」が設計に入っているという。

すでにZen 3の設計は完了しており、Zen 4が設計フェイズに入っている