最大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はサンフランシスコで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。数字を並べると途方もないモンスターだ。 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では、エコシステムの盛り上がりが明瞭に見えてきた。

現在のサーバーソフトウェアの潮流に合わせた設計思想 なぜ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の数が多いことは、経済的にメモリ量を増やすことや、データセンターでどんどん重要となっているアクセラレータを含めたデバイス接続を増やすことを容易にしている。 また、サーバーのソフトウェアスタックが、粒度の小さなVM(仮想マシン)やコンテナ(container)を大量に使う方向に向かっていることに最適化していることもEPYCの重要な特徴だ。1～4 CPUコアまでの粒度の小さなVMやコンテナをメインのターゲットとすることで、CPUコアを4個セットのバンドル単位で実装。それによって、モジュラー設計を容易にしている。そして、モジュラー設計の経済性と設計迅速性があるため、7nmのような最先端プロセスの採用が可能となっている。また、VM数が増えるとメモリ量が必要となるが、この点でもメモリチャネル重視のAMDの設計思想がマッチしている。 対するIntelサーバーCPUは、伝統的にコンピュートに対する、メモリやI/Oのバランスがコンピュート寄りで、メモリとI/Oの負荷が高くなっている現在のクラウドに必ずしも最適化されているとは言いにくい。CPUコストに対してメモリチャネル数やI/Oチャネル数が相対的に少ないので、経済的にメモリ量を増やすことや、効率的にI/Oデバイス数を増やすことが難しい。粒度の大きなVMでも効率良く走るトポロジにこだわっている。また、現在のIntelは、まだモノリシックなCPU設計を取っているため、大型のサーバー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へと倍増されている。 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にも使っている。多種の製品を簡単に派生させることができる点もモジュラー設計の強味だ。

設計を大きく変えた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倍転送レート)。 また、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リンクを備える。ソケット間のピーク帯域はほぼ倍近くに拡張されることになる。