画像提供:マイナビニュース

写真拡大

●2nd Gen EPYC - Internal Architecture DeepDive

とりあえず会場から速報ニュースだけお送りしたAMDの第2世代EPYCであるが、実際はDeep Diveに加えて色々な性能評価結果なども示された。本稿ではこのあたりをまとめて、第2世代EPYCレポートのDeep Dive編としてご紹介したいと思う(Photo01)。

○◆内部構造

第2世代EPYCも、初代EPYC同様CPUダイはRyzenと共通である。なので、こちらの記事で紹介したZen2コアの特徴はそのまま引き継いでいる。異なるのはそのCPUダイをどう繋ぐか、という事である。Photo02は従来(=IntelのXeon系列や、過去のOpteron系)の接続方式から初代EPYC、そして第2世代EPYCの結合方式をまとめたものである。結果としてI/O Chipletは巨大になったが、全体としては効率的な構成になったと言える。

加えて、Infinity Fabricそのものも高速化された(Photo03)。元々、こちらの分析のグラフ35とかグラフ36でも示している様に、Zen2ではInfinity FabricのLatecnyが大幅に短縮されており、あるCCXから同一または別のダイへのCCXへの通信は70〜90ns程度のLatencyになっている。Zen+コアの場合、同一ダイ上の2つのCCXの通信のLatencyが120ns程度だったから、ほぼLatencyが2/3になった計算である。勿論第3世代Ryzenと第2世代EPYCが同じLatencyという保証はない(大規模になっている分、若干Latencyは増えている可能性はある)が、少なくとも初代EPYCに比べればずっと高速と考えられる(初代EPYCのLatencyは、概ねRYZEN Threadripper 2950Xとか2990WXに近いと考えられる。こちらは以前のThreadripper 2のレビューでご紹介した通り、異なるダイ間の通信のLatencyが250ns程度となっている)。

さらに加えて、Photo03にあるように

CPU Chiplet⇔I/O Chiplet:48Bytes/cycle

I/O Chiplet⇔I/O Chiplet:18GT×2×4

となっている。まずCPU ChipletとI/O Chipletは第3世代Ryzenと同じく、32Bytes/cycleのRead(I/O Chiplet→CPU Chiplet)+16Bytes/cycleのWrite(CPU Chiplet→I/O Chiplet)という構成である。このCycleはFCLKに同期する、というのも第3世代Ryzenの構成と同じで、仮にDDR4-3200を利用時なら合計で38.4GB/secに達する計算である。初代EPYCだとこれは25.6GB/secでしかなかった。

また2 Socket構成の場合、従来はPCI Expressレーンを利用して10.7GT/secで相互接続していた(レーン数は合計64)が、第2世代EPYCでは相互接続専用PHYが別に用意されており、こちらは18GT/secまでスピードが引き上げられている。勿論従来のNaplesプラットフォーム上で第2世代EPYCを使う場合、互換モードで動作するのでPCI Expressレーンを利用して10.7GT/secでの接続となるが、今回第2世代EPYCにあわせて発表されたRomeプラットフォームだと、より高速に接続が可能となる。Latencyが下がり、帯域が上がれば当然性能の向上に繋がる訳で、ここは大きなポイントである

なおLatencyについては、NUMAモードにおけるLatencyが示されている(Photo04)が、初代EPYCの場合はそれぞれのCPUダイごとに1つのNUMAノードを構成する形になっており、同一ダイ上のCCX間は90ns、同一パッケージ上の異なるダイ間は141ns、異なるパッケージ間は234nsなのに対し、第2世代EPYCでは同一パッケージ上が104ns、異なるパッケージ間も201nsに短縮されているとする。

ちなみにこの18GT/secのPHYはSATAポートなどの接続にも流用可能になっており、なのでレーン数は「最大4対」という表現になっているほか、速度も色々変更可能となっている(Photo05)。最大の18GT/secの場合、理論転送帯域は18GT/s×16bit×8=288GB/secとなる計算で、実効でも202GB/secに達するとする。初代EPYCだと理論転送帯域ですら10.7GT/s×16bit×4=85.6GB/secでしかないから、3倍以上高速化された形だ。

その一方でメモリは引き続き8chに据え置きになった(Photo06)。これはちょっと解せなかったので、講演の後で「なぜ16chにしなかったのか」と質問したところ「8chのままでもL3キャッシュの大容量化とDDR4-3200のサポートで、性能は十分スケールする(から16chは不要だった)」という返事が返ってきた。端的に言えば、一つのSocketから16ch分のDDR4を引っ張り出すことは無理ではないにせよ、配線的にかなり厳しいのは間違いない。

策が無いかといえばそうでもなく、例えばOpenCAPI向けのMemory Interfaceとして新たに提唱されているOMI(Open Memory Interface)向けにMicrochipから先日発表されたSMC1000 8x25Gという一種のBridge Chipを利用すると、Registered DDR4-3200の72bit分の信号線を8bitの信号に変換してホストに接続するといった技はあるのだが、Bridgeを挟む分Latencyは増えるし、BOMコストも上がる。おまけにCPUとこのBridgeの間は25GT/secの信号が通るので、配線が厳しい事にはあまり変わりが無かったりする。この辺りを勘案して、メモリを8chに据え置きにしつつ、ただしコアの数が倍増するのにあわせてL3キャッシュを2倍に増加させたことで、バランスを取ったというのが正確なところだろう。実際AMDの説明によれば、コアの数と性能がスケールする(メモリ帯域が倍にならなくても、性能がほぼ倍になる)としており(Photo07)、実質的には支障ないという返事であった。

メモリ搭載量そのものは、今回4TB/Socketとされている。初代EPYCは2TB/Socketという話であったが、確認したところ「初代EPYCの時は8GbitチップがDRAMの最大容量だったが、今は16Gbitチップが入手可能であり、このためDIMM容量を2倍にすることが出来た」のが最大の違いだそうである。この16Gbitチップを搭載したDIMMを使えば、初代EPYCでも理論上は4TB/Socketのメモリ容量を実現可能だが、それにはマザーボードメーカーのBIOS Updateが必須という話であった。

ところでPCI Expressであるが、1 Socketあたり128Lane(8×16)というのは以前と変わらない。ただ、16Laneあたり8台までDeviceを接続できるようになったので、例えば間にPCI Express Switchを挟むと従来のGen3×4 NVMeSSDを8枚ぶら下げる(SwitchでGen3×4をGen4×2に変換する)なんて事も可能になった。またPCI Express P2P(PCI Expressデバイス同士での直接の通信:例えばアクセラレータ同士がCPUを介さずに通信する)も可能になっている。

面白いのは2 Socketの構成である。初代EPYCの場合、各々のSocketから128LaneのPCI Expressが出たが、うち半分の64LaneはInfinity Fabricを利用してのSocket間通信に転用されたので、I/O向けにはそれぞれのSocketから64Laneづつ、合計で128Laneという構成だった。これに対し、第2世代EPYCではSocket間に専用Linkが使えるため、PCI ExpressはSocketあたり81Lane、2 Socket合計で162Laneが利用可能となっている。もっとも先のSATA転用の話などを勘案すると、相互接続用のうち32Lane分(Photo03の右側で、"SATA compatible on lower 8 lanes"とある破線のもの)はPCI Expressとピンが共用になっているのかもしれない。とはいえ、2 Socket Serverで10枚のPCI Expressアクセラレータを搭載し、更に管理用あるいは通信用などにPCI Express 2x1が利用できる形なので、普通に考えればこれで十分であろう(アクセラレータが8枚+InfiniBand HDR or 200G Ethernetカード×2、というあたりがあり得る構成だろうか)。

話は変わるが、初代EPYCとかRyzen Proでは、Ryzenでは無効にされていたセキュリティ機能が有効化されている。これは第2世代EPYCでも同じで、従来同様Cortex-A5をSecurity Processorとして搭載する(Photo09)他、SME(Secure Memory Encryption)/SEV(Secure Encrypted Virtualization)も引き続き利用できる(Photo10)。

大きな違いは、このMemory Encryptionで、暗号化方式は従来同様AES-128であるが、初代EPYC(というか初代Zen)が15種類の暗号化キーを利用可能だったのに対し、第2世代EPYCではこれが509種類に拡充されている。例えばHypervisor上で複数のVMを動かす、なんてケースでVM毎に異なるキーを利用することで、あるVMが他のVMのメモリの内容を参照できない様に防御したい、というのは普通の要求だと思うが、初代だと15種類しかキーが無いから、どうしても使いまわしは避けられなかった。

ところが今回509ものキーを利用可能になったので、それこそ500以上のVMを同時に動かすといったケースでない限りほぼ問題なくVM毎にキーを分けられるようになった。またこれを利用する場合、VM内で明示的に暗号化キーを利用する必要があるが、今回Virtual-transparent-encryptionの機能が追加され、VM側が未指定でも暗号化を利用できるようになった(Photo11)。このSEVであるが、既に初代EPYCでほぼ最新のOSの対応は終わっており、第2世代EPYCでもそのまま利用可能となっている(Photo12)。

最後にパフォーマンスの話を。ラインナップは後述するが、今回TDPは最大240Wになっており、ほぼ180W(EPYC 7371のみ例外的に200W)だった初代EPYCに比べるとややTDPは大きくなっている。ただしConfigurable TDPをサポートしており、初代EPYCと同じTDP枠にすることでそのままアップグレードも可能な形に配慮している。

それはともかくとして、やはり動作周波数は動的に変化するのだが、最大動作周波数を見ると8コアで3.4GHzなのが64コアで3.2GHz、とコア数の変化の割に最大動作周波数に差が無い(Photo13)。コンシューマ向けの第3世代Ryzenでは4GHz超えであるが、サーバー向けでは最大動作周波数はかなり低めに抑えており、ワークロードの変化に応じて性能がコア数にScaleするような電力管理が行われている事が明らかにされている。

もともと初代のEPYCとRyzen、Ryzen Threadripperでは

Ryzen Threadripper:高動作周波数のコアを選別

EPYC:安定性の高いコアを選別

Ryzen:普通のコアを利用

といった形で作りわけがされており、これは第2世代EPYCでも恐らく同じ様になされているものと思われる。恐らくはこの第2世代EPYCでは、Ryzen 7/9向け程には高速動作はしないが、その代わりに動作周波数が上がっても消費電力の上がりにくい、安定したコアを選別して利用していると思われ、そうした事もこのグラフの特性の獲得に貢献しているのだろう。

ところでこのPhoto13、何気に"No turbo limitations based on instruction mix"とあるのは、IntelのAVX2/AVX512 Offsetへの当てこすり、と考えて良いだろう。要するにAVX2あるいはAVX512をフルに動かすとThermal/Power Limitを簡単に超えてしまうので、AVX2/AVX512をある程度連続して稼働させるときには自動的に動作周波数を落とす仕組みが用意されている。こうした配慮は第2世代EPYCには不要、というメッセージである。

●2nd Gen EPYC - Product SKU DeepDive

○◆製品SKU

Photo15が1/2 Socket対応の、Photo16が1 Socket専用の第2世代EPYCの製品SKUとなる。初代EPYCは両方合わせても12製品(のちに2製品追加され、合計14製品)でしかなかったのに、今回は合計で19製品が一挙発売となった。

ちょっとこのままだと比較しにくいので、第1世代と第2世代を混ぜて示したのが表1と表2である。

必ずしも製品が1:1対応しているわけではないのだが、例えばEPYC 7251とEPYC 7252ではコア数と価格は据え置きながら、動作周波数が引きあがっている。EPYC 7281とEPYC 7282なども同じだ。もっとすごいのがEPYC 7401とEPYC 7402とかEPYC 7451とEPYC 7452などで、動作周波数が引きあがったり、コア数が増えたりしていながら、むしろ価格は下がっている。さすがにEPYC 7551とEPYC 7552では価格は上がっているが、コア数が16個増えていながらTDPがむしろ下がっているから、トータルとしてはかなりお得だろう。全般的に、より性能価格比が向上するだけでなく、殆どのケースで消費電力の削減も実現している。

ちなみにSKUをみるとちょっと興味深いのは、EPYC 7252/7262である。コア数は8ながらL3が64/128MBということで、これはCPU Chipletが2つないし4つの構成になっていると思われる。ということはCPU Chipletあたり4コアないし2コアしか使ってない訳で、その分Base Frequencyを高く取れるという事であろう。このあたりはChipletによってダイの数を好きにいじれることのメリットが出てきたことになる。

また、初代EPYCと異なり、ダイの数そのものを増減できるから、原価そのものも下げられる。一番安いのがEPYC 7232Pで、これはCPU ChipletとI/O Chipletがそれぞれ1つづつという構成である。だからこそ、EPYCでありながら450ドルという破格の値段で販売可能なのだろう。EPYC 7252/7262は、むしろアクセラレータなどを大量にぶら下げてのコントローラ向けという扱いがメインなので、コア数よりも動作周波数を高くする(&実効転送速度を稼ぐためにL3を多め)という構成になっているものと考えられる。

この価格であるが、競合製品である第2世代Xeon Scalable Processorと比較してみたのが表3である。

リストは価格の降順になっている。こうやってみると、第2世代EPYCはXeon PlatinumというよりはXeon Gold〜Xeon Silverの価格帯で提供されているのが良く分かる。ハイエンドのEPYC 7742ですら6950ドルを切っており、Xeon Platinum 8280Lの半額以下(というか4割程度)でしかない。この価格競争力の高さが、第2世代EPYCの大きな強みである。実際発表の中でも、それを強調するスライドがいくつかあった(Photo17〜22)。

もっともAMDからすれば、従来のハイエンドであるEPYC 7601が4200ドルだったわけで、より高価格帯製品を投入できるようになった、という事でもある。

●2nd Gen EPYC - Performance DeepDive

○◆性能と普及状況

ここまではSPECRate_int_Peakなどを使っての性能比較がメインだったが、実際にアプリケーションワークロードでの比較も色々紹介された。

科学技術計算の分野ではAltair RADIOSSを利用してのTaurus Crash Simulation(Photo23)とかGROMACSを利用してのLignocellulosic biomass Simulation(Photo24)などの他、様々な分野でXeonに比べて高い性能を発揮している事をアピールした。

またBlenderを利用してのライブデモ(Photo25)なども行われていた。

クラウド環境については、さすがにライブデモというのは難しかったようで結果のみの表示であったが、例えばAmazon AWSのEC2 M5aのコスト比較ではEPYCを利用したノードの方がコスト節約になるとされていた(Photo27)。Photo28はPublic Cloudを構成した場合のコスト試算で、EPYCを利用することでTCOを半減させられるとしている。

Photo29・30はVMmarkを実施した例で、vSANを使うケースとSANを使うケースのどちらでも、EPYC 7702が40%ほど密度を上げられるとしている。

講演の中でLisa Su CEOは「第2世代EPYCは80もの世界記録を作った」とアピールしたが、その内訳がこちら(Photo31)。細かなデータはこちらから参照できる。

これに加えて、OEMベンダーも第2世代EPYCサーバーを利用してやはり新記録を出している。Twitterは、第2世代EPYCを利用することで、同じ消費電力/冷却能力のまま、既存のサーバーからコアの数を40%増やすことに成功している(Photo32)と説明した。

CRAYはAMDと共同で2021年中に稼働予定のFrontierを既に受注しているが、これに加えて米空軍の天候シミュレーションに利用するHPC11というシステムをこの第2世代EPYCで構成し、2020年に稼働させることを発表した(Photo33)。

Microsoftは第1世代EPYCをベースとしたAzure HBv2の提供を開始することも発表し(Photo34〜36)、これは第2世代EPYCをベースとしたものである。会場ではこのHBv2用のサーバーも展示されていた(Photo37,38)。

クラウドで言えば、Googleも自社のGoogle Cloud Compute Engineに第2世代EPYCを利用するアナウンスをしていたほか、HPEはProLiantとApolloのラインナップに第2世代EPYCを搭載した製品を同日から追加して出荷開始(Photo39)、Lenovoも8月に第2世代EPYC搭載製品を出荷予定で(Photo40)、DellEMCもやはり搭載製品を予定している事を発表した(Photo41)。

ソフトウェアで言えば、先にPhoto12でVMwareのSEV対応は"Contact Vendor For Schedule"となっていたが、会場ではVMware vSphere上でSEV対応を行ったプロトタイプの動作デモを行っていた(Photo42)。

I/O性能に関しては、AMDがRadeon Instinct MI50へのアクセス性能をデモしていた(Photo43)ほか、MellanoxがConnectX-6を展示(Photo44)していた。他にXilinxは前日に発表されたAlveo U50を展示し、Spark Query AccelerationでQuery 1が4.7倍、Query 2が6.5倍高速化されたと説明していた。

またSamsungは8月9日に第2世代EPYCに対応したSSDと高密度DIMMを発表したが、会場にはU.2タイプのPM1733 SSD(PCIe Gen4×4)が展示されていた(Photo45)。

なお、講演の最後で第4世代EPYCの開発コード名が「GENOA」であることが明らかにされた(Photo46)。