ニュース
AMD、“Milan”ことZen 3コアに進化した第3世代EPYCを発表
キャッシュ階層の改良でIPCを向上、6chメモリもサポート
Intelの第2世代Xeon SPと比較して倍以上速いと公表
2021年3月16日 00:01
AMDは3月15日午前10時(米国東海岸時間、日本時間3月15日午前0時)から、同社CEOのリサ・スー氏による記者会見を開催しており、その中で、同社が開発コード名「Milan」(ミラン、英語でイタリア北部の主要都市「ミラノ」のこと)と呼んできたサーバー向けCPUの最新製品「第3世代AMD EPYCプロセッサー」(AMD EPYC 7003シリーズ、以下は第3世代EPYCと表記)を発表したことを明らかにした。
同社のサーバー向けCPUは、2017年に発表された開発コード名「Naples(ネイプルス、英語で南伊の都市ナポリのこと)」ことAMD EPYCプロセッサー(初代EPYC)において、従来製品よりも圧倒的に高効率化されたZen(ゼン)コアを採用し、最大32コアのCPUをリリース。従来は大きな差を付けられていたIntel製品と同等の性能を実現した。
さらに、2019年に発表された開発コード名「Rome(ローマ)」こと第2世代AMD EPYCプロセッサー(以下、第2世代EPYC)では、Zenコアを改良し、IPC(Instruction Per Clock-cycle:1クロックサイクルあたりに実行できる命令数のこと。このIPCが高ければ高いほどCPUは効率よく命令を実行できる)の観点でもIntel製品に追い付いた。
加えて、初代EPYCでも採用していた、複数チップを1つのパッケージに搭載する「チップレット・アーキテクチャ」も第2世代へと進化し、コア数を飛躍的に増やすことが可能になって、1ソケットで64コアを実現。Intelの競合製品を性能で上回ってみせた。
今回の第3世代EPYCでは、CPUのマイクロアーキテクチャが第2世代EPYCのZen 2から新世代のZen 3へと進化しており、キャッシュ階層や内部の分岐予測や実行ユニットなどの見直しなどにより、IPCがさらに高くなっている。
そして、第2世代EPYCではサポート対象外となっていた6チャネルのメモリ構成などにも対応し、より柔軟にメモリ構成を検討することが可能になったという。
また、第2世代EPYCで新たに対応した仮想マシン(VM)向けのセキュリティ機能AMD SEV-ES(Secure Encrypted Virtualization-Encrypted State)が、従来のVMまでのサポートから、ネスト(入れ子にすること)されたVM(VMの中に作られたVM)にも適用になり、VMのセキュリティ性が向上されている。
1ソケットで64コアは維持しながら、Zen 3によりIPCを向上
今回発表された第3世代EPYCの特徴を一言で現すなら、「第2世代EPYCの大成功を引き継ぐ改良版」という表現になるだろう。
前述のようにAMDは2017年に初代EPYCを発表したが、新たに採用されたZenコアにより、従来製品に採用されていたCPUコアと比較してIPCが大幅に引き上げられたことが大きな特徴となっていた。これにより当時のIntel製品に性能で追い付き、特に1ソケット構成ではコストパフォーマンスの良さが買われて採用例が増えていった。
その後継として2019年に発表された第2世代EPYCでは、1ソケットで最大64コアを実現し、競合となるIntelが1ソケットあたり最大28コアにとどまっていたのと比べて、性能面で大きなアドバンテージを得ることが可能になった。
コア数の大幅な増加が実現された背景には、CPUダイの製造が7nmへと微細化され、1つ1つのダイが小さくなったため、8つ+1つのIOD(IODのみ14nmで製造される)、合計9つのダイを1つのパッケージに封入可能になったという、製造技術の進化もある。
そして、CPUコアもZen 2アーキテクチャに強化され、IPCがIntelのXeon SPに追い付き、従来のAMD製品の弱点だったシングルコア時の性能でも肩を並べることになった。
そうした観点で今回の第3世代EPYCを見ていくと、チップレット・アーキテクチャの構造に関しては第2世代EPYCと同じで大きな変化はない。製造技術はCPUが7nm、IODが14nmと同等で、1つのパッケージに最大で8つのCPUダイ+1つのIODという構成も全く同じだ。
今回の第3世代で大きく手が入れられているのはCPUのマイクロアーキテクチャで、Zen 3という第3世代のZenに強化されており、それによりIPCが向上している。これが、今回の第3世代EPYCにおける改良の目玉と言える。
キャッシュ階層やCPU内部の改良でIPCが向上しているZen 3
第3世代EPYCに採用されているZen 3は、Zen 2に比べて多くの点で改良が加えられており、性能向上につながっている。Zen 3での改善点は多岐にわたっているため、ひとつひとつ見ていこう。
最も大きな変更点はキャッシュ階層だ。従来の第2世代EPYCに採用されていたZen 2では、L3キャッシュは4つのCPUが1つのL3キャッシュを共有する仕組みになっていた。ZenシリーズではCPUはダイ(CCDと呼ばれる)内部でCCXと呼ばれるモジュールに分割されている。Zen 2では4コアが1つのCCXとなっており、そのCCX2つでCCD1つを構成していた。
それに対して、Zen 3ではCCD全体が1つの8コアから構成されている(つまりCCXとCCDは同じ意味になっており、今回から区別する必要性がなくなった)。この、CCD全体が8コアになっているメリットは、巨大なL3キャッシュをすべてのCPUコアが共有していることだ。
具体的に言うと、Zen 2では4つのCPUコアが16MBのL3キャッシュを共有していたが、Zen 3では、8つのCPUコアが32MBのL3キャッシュを共有する。1つあたり4MBという計算では同じになるので、たいした違いではないと思うかもしれないが、キャッシュの利用効率という意味では大きな違いが出てくる。
話をシンプルにするために、1つのCPUだけが動いていて、L3キャッシュを利用する場合を考えてみよう。このL3キャッシュのうち8MBを共有、残りをそれぞれのコアが使えると仮定すると、Zen2の時は、1つのCPUコアが独占で使えるキャッシュサイズは16MB-8MB=8MBになる。それに対して、Zen 3では32MB-8MB=24MBを独占して利用できるという計算になる。
利用できるキャッシュ容量が増えると、メモリレイテンシ(CPUがメモリのデータを読み込むまでの時間)が削減可能になり、CPU内部の演算効率が向上してIPCが向上するのだ。
また、CPUの内部構造も改良されている、いわゆるフロントエンドと呼ばれるデコーダーや分岐予測、そして内部の実行ユニット、そしてデータのロード/ストアにも改良が加えられている。
フロントエンドではL1 BTB(Branch Target Buffer)が2倍に強化され、分岐予測時の帯域が改善された。これにより、より精度の高い分岐予測ができるようになっている。
実行ユニットでは、特に、浮動小数演算の実行ユニットが従来は4ワイドのディスパッチ/命令実行だったのに対して、Zen 3では6ワイドで実行できるようになっている。それにあわせて、演算器としてINT8 MACとINT8 ALUも1つずつ増やされており、浮動小数点演算性能がより高くなっている。
ロード/ストアではどちらも帯域幅が向上しており、Zen 2では1クロックサイクルあたり2つのロード+1ストアだったものが、Zen 3では1クロックサイクルあたり3ロード+2ストアが可能になっている。
こうした内部の改良により、整数演算時のスループットが向上し、IN8/FPの性能は倍になっているという。そしてロード/ストアの改良やキャッシュ改良により、メモリレイテンシが削減され、IPCが19%向上しているのだ。
新たに6チャネルのメモリに対応し、より柔軟なメモリ構成が可能に
プラットフォームの観点でも、第3世代EPYCは第2世代EPYCの改良版と考えてよい。CPUソケットやマザーボードなどのインフラは第2世代EPYCと互換になっているため、全く同じCPUソケット、マザーボードを利用できる。ただし、現在第2世代EPYCで動作しているシステムを第3世代EPYCに交換するには、マザーボードのBIOS/ファームウェアを第3世代EPYC対応版にアップデートする必要がある。
プラットフォーム面での大きな変化は、第2世代EPYCまでは4チャネル/8チャネルのメモリ構成が可能になっていたが、今回の第3世代EPYCから6チャネルのメモリ構成が公式にサポートされてきたことだ。
従来の第2世代でも物理的に6チャネル構成にすることは可能だったが、CPU側がその構成をサポートしていなかったため、極端に性能が低下してしまい、実際には使うことができなかった。しかし、今回の第3世代EPYCでは6チャネル構成を公式にサポートし、選択可能になっている。
もちろん、メモリの帯域幅は8チャネルよりも下がるため、メモリ帯域が影響するようなアプリケーションに使う場合にはうれしくないが、メモリ帯域よりもメモリの適正コストを優先したいユーザーにとってはうれしい選択肢になる。
例えば従来の4チャネル/8チャネル構成だと、32GB(4×8GB)や64GB(4×16GB、8×8GB)、128GB(4×32GB、8×16GB)などの構成が可能だが、48GB(6×8GB)や96GB(6×16GB)といった構成にすることはできなかった。
これに対して競合のXeonでは6チャネル構成が先に用意されており、より柔軟なメモリ構成が可能だったので、その弱点が減らされたと考えることができるだろう。なお、この6チャネルのメモリ構成は、従来のマザーボードでも第3世代EPYC対応のBIOS/ファームウェアにアップデートすることで利用可能になる。
セキュリティ関連ではSEV-SNPとShadow Stackという機能が追加される。特に注目に値するのはSEV-SNPで、CPUに内蔵されている暗号化鍵を利用して暗号化することで仮想マシンをよりセキュアにするSEVの機能を、ネストされたVM、つまりVMの中に作られたVMでも利用可能となったため、ネストされたVMのセキュリティ性が向上されている。
パブリッククラウドを利用する企業の中では、VMの上にVMを立てるという使い方も珍しくないと思うが、そうした環境でもSEVを利用可能になり、仮想マシンのセキュリティ性をより向上させることができる。
SKU構成はよりシンプルに
こうした特徴を持つ第3世代EPYCのSKU構成は以下のようになっている。
SKUの違いは、CPUコア数とTDP(Thermal Design Power:熱設計消費電力)であり、それ以外の基本的な機能はすべてのSKUで同じになっている。DDR4-3200に対応した8チャネルのメモリ(CPUあたり最大4TB)、最大128レーンのPCI Express Gen 4スロットといった特徴も、すべてのSKUで一緒だ。
なお、今回から製品名ルールは若干変更されており、4けたの数字のうち最初の一けた目は製品のシリーズ、二けた目はコア数、三けた目は性能、四けた目が世代、そして最後にPが付く場は1P用、付かない場合には2P用となっている。
AMDによれば、SPECrate 2017 FPを利用したベンチマークにおいて、第3世代EPYC 7763は、28コアのIntel Xeon Gold 6258Rと比べ、約106%高速になるという。
また、2Pのシステムにおいて、28コアのIntel Xeon Platinum 8280との比較では、SPECjbb 2015を利用したベンチマークで約117%高速となっている。
このように、第2世代のXeon SPとの比較で倍近いスコアをたたき出すという状況だ。なお、Intelも間もなく第3世代Xeon SPの2ソケット版(開発コード名:Ice Lake SP)をリリースすると見られており、その時点でどんな差になっているかが次の焦点となるだろう。
この結果、同じ整数演算時の性能を実現すると考えると、Xeon Gold 6258Rを採用したサーバー63機から構成されている4つのサーバーラックをEPYC 7763に置き換えると、サーバーは約半分の32機、3つのサーバーラックで済むはずだと、AMDでは説明している。
また、第2世代Xeon SPを第3世代EPYCに置き換えるだけで、ラックの密度を上げられるため、物理的なサーバーを減らしてスペースが25%、消費電力は35%削減され、4年間のTCOが35%削減できるとも説明している。
*****
なおAMDによれば、第3世代EPYCはすでにOEMメーカーへの出荷が開始されており、今後、サーバーメーカーなどから搭載された製品が出荷されることになるが、ここまで説明してきた通り、第3世代EPYCと第2世代EPYCはピン互換となっており、OEMメーカーはCPUを置き換えるだけで新たな製品の展開が可能となる(もちろん、ファームウェアの対応等は必要だが)。
このため、多くのメーカーで第3世代への切り替えが即時行われる可能性が高く、メーカーによっては、すでに出荷を開始しているところもある状況とのことだ。