笠原一輝のユビキタス情報局

水面下で静かに進むDC向けArm CPUの普及、AWSのArm CPU「Graviton3/3E」の正体

Graviton3、7つのチップから構成されているチップレットを採用している

 Amazon.comの子会社でCSP(クラウド・サービス・プロバイダー)最大手の米Amazon Web Services(AWS)は、11月28日~12月1日(現地時間、日本時間11月29日~12月2日)の4日間にわたって、同社の年次イベント「AWS re:Invent 2022」を、米国ネバダ州ラスベガス市にある「The Venetian Convention and Expo Center」を中心とした会場において開催した。

 re:InventはAWS上で動作するサービスを中心としたソフトウェア開発に関する情報が中心だが、その中で例外的にハードウェアの話になるのがEC2(Elastic Compute Cloud)インスタンスと呼ばれるクラウド化されたハードウェアに関する話題だ。

 そのEC2サービスとして提供されているCPUは、AMDのEPYC、IntelのXeon Scalable Processorなどのx86プロセッサに混じって、2018年からGraviton(グラビトン)という名称のAWS自社設計のArm CPUも提供されている。よく知られているように、いわゆるデータセンター向けCPUはAMDおよびIntelが提供するx86プロセッサが90%以上を占める2社の独占市場になっている。

 しかし、近年AWSが提供しているGravitonを始めとする、ArmアーキテクチャのCPUが市場を伸ばし始めており、それに一役買っているのが、AWSが提供するArm CPU「Graviton」シリーズなのだ。今回re:Inventを取材してわかった、Gravitonの歴史や詳細などについて紹介していきたい。

イスラエルベースのAWS子会社 Annapurna Labsが開発しているGravitonシリーズ

AWS 副社長 兼 EC2担当ディスティングイッシュエンジニア アンソニー・リグォーリ氏

 Gravitonシリーズを始め、AWSのカスタムチップを開発しているのはイスラエルベースのAWS子会社Annapurna Labsだ。Annapurna Labsは元々イスラエルのスタートアップとして設立された半導体設計会社で、2015年の1月にAWSに買収されたが、今もAWSの子会社として独立して運営されている。

 AWS 副社長 兼 EC2担当ディスティングイッシュエンジニア アンソニー・リグォーリ氏は「われわれは2012年に初代Nitroの開発を始め、それをAnnapurna Labsと一緒に開発してきた。そこから関係が始まり、2015年に買収することを決定し、それ以来われわれの一部としてさまざまなAWS用のカスタムチップを開発してきた。

 そして2018年に提供開始した初代Gravitonも彼が率いて開発したものになる。2019年にはGraviton2、そして昨年(2021年)にはGraviton3として発表され今年から提供を介している」との通りで、2018年に初代Graviton、2019年に第2世代となるGraviton2、そして2021年に第3世代となるGraviton3が発表されている。

Annapurna Labsが設計したAWSの半導体、左からGraviton3、Inferentia(インファレンシア、ML/DL推論用のアクセラレータ)、Trainium(トレニアム、ML/DL学習用アクセラレータ)

 Gravitonシリーズの最大の特徴は、命令セットアーキテクチャ(ISA)にArmを採用していることだ。一般的にデータセンター向けCPUはISAにx86アーキテクチャを採用していることが一般的だ。実はArmアーキテクチャのデータセンター向けCPUは、以前は死屍累々というのが状況だった。AMDは2010年代の前半にArmアーキテクチャの「Seattle」などのArm CPUを計画していたが、結局出荷されることなく、EPYCの開発に軸足を移して、今やIntelからシェアを奪いつつある状況だ。

 また、Qualcommも2017年11月に「Centriq 2400」という10nmプロセスノードを利用した製品を発表したが、こちらも翌年には事業の断念が発表されるなど、どのベンダーも成功には至らなかった。唯一ある程度の成功を収めたのは、AmpereのAltraが2020年に出荷にこぎ着けた例ぐらいで、AMDやQualcommといった大きな会社でもある程度の赤字が我慢できるレベルにも満たないところで事業断念となっている。

 しかし、AWSのGravitonシリーズ、そしてAmpere Altraの出荷開始以降、Arm CPUの市場でのシェアは増え続けている。イギリスの調査会社Group Omdiaの発表によれば、2021年の第3四半期の段階ではデータセンター向け全体のCPU市場におけるArmベースの市場シェアは5%とされており、2018年段階ではほぼ0だったマーケットシェアが徐々に上昇していることが明らかになっている。つまり、データセンター向けCPUは、だんだんとx86の独占市場ではなくなりつつある。

AWSのEC2インスタンスとして提供されているGravitonシリーズ、チップレットを採用

Graviton3の実チップ、100円玉と比較すると大きなチップであることがわかる

 AWSは2018年にGraviton、2019年にGraviton2、そして2021年にGraviton3というCPUを発表し、今年に入ってEC2インスタンスとして提供を開始している。

Gravitonの歴史

 このEC2とはElastic Compute Cloudの略で「クラウド経由で提供される伸縮自在な演算サービス」という意味になる。これは、CPUはAWSが提供するパブリック・クラウドのデータセンター(日本では東京、大阪の2つのリージョンで運営されている、リージョンとはデータセンターが設置されている地域のこと)に置かれており、インターネット経由でプログラムを走らせることで、さまざまな処理を行なうことができる。

 例えば、Hypervisor OSを実行し、その上で仮想マシンを動かして社員にVDI(Virtual Desktop Infrastructure、仮想デスクトップ環境)サービスを提供し、サーバーアプリケーションのコンテナ(KubernetesやDocker)などを走らせて、一般消費者向けのサービスを提供することなどができる。ほかにも、AWSではS3(Simple Storage Service)というストレージサービスも提供しており、EC2とS3を組み合わせて利用することで、AWS上に巨大なサーバーが仮想的にあるイメージで使うことが可能になっている。

 このため、逆にGravitonシリーズを自社のオンプレミスのデータセンターで走らせ、Dell Technologies、HPE、Lenovoなどのサーバー機器ベンダーから購入することもできない。基本的にはEC2インスタンスのみでしか利用できないのがGravitonシリーズということになる。

Graviton3のマイクロアーキテクチャ、Neoverse V1に基づいたアーキテクチャになっている
CPUコアのインターコネクトはメッシュ構造になっており、ML/DLなどの並列演算時に高い性能を発揮する

 Graviton3は昨年のre:Inventで発表された最新CPUで、Gravitonシリーズとしては第3世代となる。AWSはGravitonシリーズのCPUに、Armが提供しているIPライセンスを採用している。前世代となるGraviton2では「Neoverse N1」と呼ばれるCPU IPデザインが採用されている。もともとNeoverse N1はネットワーク機器を意識して作られたCPU IPデザインで、4~8ワイドフェチ、4ワイドデコーダというフロントエンド構成になっており、SIMDが2つ、ロード/ストアが2つ、ALUが3つ、BRが1つという8ワイドイッシュのスケジューラを備える構造になっていた。

 これに対してGraviton3で採用されているのはArmの「Neoverse V1」で、Neoverse Nシリーズよりもより高性能向けを意識して作られたCPU IPデザインとなっている。フロントエンドは8ワイドフェッチ、5~8ワイドのデコーダに強化されており、さらに実行演算ユニットはSIMDが4、ロード/ストアが2、ロード専用が1、ストア専用が2というメモリ関連、ALU/Multiが2とALUが2の合計4ALU、さらにはBRが2と合計15が用意されており、15ワイドイッシュのスケジューラで命令ウインドウは2倍に強化されている。

 また、SMT(Intelで言うところのHyper Threading)はなく、すべての仮想CPUが物理コアに1:1で割り当てられる構造になっている。SMTを活用しないことで、性能を予測しやすくなり、ノイジーネイバーと呼ばれるVMがCPUのリソースを無駄に消費するなどの事態を避けることができるからだ。なお、Graviton3では物理的なCPUコア数は最大64コアとなっている。

Graviton3の性能

 こうしたマイクロアーキテクチャの改良により、Graviton3はGraviton2に比べて25%性能が向上し、さらに同じような性能を持つ違うアーキテクチャのEC2インスタンスと比較して、60%ほど電力効率が改善されているとAWSは説明している。

チップレットを採用している

 Graviton3のもう1つ特徴は、ArmアーキテクチャのCPUとしては(おそらく)初めてチップレットを採用したことにある。チップレットはAMDがCPUやGPUなどに採用している1つのパッケージに、複数のダイを混載する技術だ。Graviton3では、CPUダイは1つだが、メモリコントローラ(DDR4対応、1チップで2コントローラ)が4つ、PCI Express Gen 5のコントローラが1つという合計7つのダイから構成されている。

GravitonのFPUとNeonエンジンの供給電力と動作周波数を引き上げたのがGraviton3E

発表されたGraviton3E、HPLで35%性能向上を実現

 そうしたGraviton3を今年になってEC2インスタンス(C7g)として提供を開始しているAWSだが、今回のre:Inventでは「Graviton3E」というGraviton3のバリエーション製品が発表された。このGraviton3Eに関して、AWSは浮動小数点演算およびベクトル演算の性能が最大35%と説明した以外は、構造がどうなっているのか、その35%の性能向上はどこから来ているのかなどに関して説明していなかった。

 AWSのリグォーリ氏に、Graviton3Eの位置づけについて聞くと「Graviton3Eはその名前の通りGraviton3のバリエーションとして提供される。このため、CPUのマイクロアーキテクチャなどはGraviton3と同じだ。

 しかし、顧客からはもっと性能をという声が多かったので、Graviton3Eでは性能を向上させることにして、浮動小数点演算とベクトル演算の性能を最大35%向上させている。このため弊社ではGraviton3EをHPC向けと位置づけている。Graviton3Eを利用するEC2インスタンスのHPC7gでは200Gbpsのネットワークも合わせて提供し、HPCとして利用する場合のスケールアウトを実現できるようにしている」と説明した。つまりHPC向けにGraviton3を使いたいユーザー向けに性能を強化したバージョンとしてGraviton3Eは提供されるということだ。

 ではどうやって35%性能が向上しているのかと聞くと、リグォーリ氏は「電力供給の量を増やすなどいくつかの最適化により実現されている。ご存じの通りモダンなプロセッサの内部動作周波数は1つではない。複数のユニットはそれぞれ違う周波数で動いているのが一般的だ。そこで、我々はいくつかの領域の動作周波数だけを引き上げることに決めた、それがFPUとNeonエンジンで、そこにだけより電力を供給できるように調整している」と説明した。

 簡単に言えば、FPUとNeonエンジン(x86プロセッサで言えばSSEのエンジンのこと)に供給する電力を引き上げ、その2つの動作クロックを引き上げたということだ。結果的に浮動小数点演算とベクトル演算の性能が35%引き上げられたのがGraviton3Eだと言える。

 リグォーリ氏は明言しなかったが、おそらくダイそのものはGraviton3とほとんど変わらないだろう。これは100%推測だが、最初からGPUとNeonにだけ供給する電力と動作周波数を引き上げる仕組みが入っていて、それを活用したと考えることが妥当だし、Graviton3が発表されてから1年がたち、その間に歩留まりが上がる、あるいはリビジョンアップなどの回路レベルでの最適化が進んだ結果、電力供給量や動作周波数をあげることが可能になった、そう理解するのが正しいと思う。それがGraviton3Eの正体だと言える。

電力効率と低コストが売りのGraviton、課題はアプリの書き換えと絶対性能

AWSの顧客であるstripe Core Compute責任者 オラン・バラク氏のスライド、Gravitonへ移行する理由は電力効率とコスト削減だという

 こうしたGraviton3/3Eだが、AWSはその性能に関して盛んに「電力効率に優れている」とアピールしている。じゃあ、現在のデータセンターにおける主力であるx86のプロセッサと比較してどうなのかというと、公開されているデータは前世代となるGraviton2との比較になる。AWSがGraviton Deep Diveで紹介したデータを引用するとGraviton2に比べて全体的な性能は25%向上し、浮動小数点演算は2倍、暗号化で2倍、マシンラーニング性能で3倍という数字を明らかにしている。

 x86プロセッサとの比較という意味では「同性能の他のEC2インスタンス(要するにAMDないしはIntelのx86 CPUのインスタンスのこと)と比べて60%電力効率に優れている」という表現で、電力効率に優れているとアピールしているだけで、「絶対性能でx86を上回っている」という表現はしていない。つまり、絶対性能ではまだ追い付いていない、それが現実だ。

 実際、Graviton Deep Diveに登壇したGravitonのユーザー企業であるstripe Core Compute責任者 オラン・バラク氏は「AWSに乗り換えるモチベーションはx86に比べて最大40%の電力効率の向上と20~30%のコスト削減だ」と説明しており、電力効率の向上とコスト削減がGravitonシリーズに乗り換える理由だと説明している。

 どういうことかと言えば、AWSのEC2インスタンスは、電力利用料金などいわゆるTCO(Total Cost of Ownership)も含む価格になっているのだが、AWSでx86のECインスタンスを利用する料金、そしてオンプレミスで自社サーバーを動かす場合にイニシャルコスト(サーバーを購入する料金)とTCO(電気代など)を合計した料金と、GravitonベースのEC2インスタンスの利用料金を比較すると、GravitonのEC2インスタンスの方がトータルに安くなる、そういうことになる。

 もちろん、x86のECインスタンスやオンプレミスからGravitonのEC2インスタンスに移行するには、サーバー上で動くアプリケーションのコードを手直しする必要も出てくる。バラク氏のstripeでは、サーバーアプリケーションをx86とArmの両対応にするための改修が必要で、そのコストも考慮に入れておく必要があるということだった。ただ、既にプラットホームに依存する機能を使っているコンシューマ向けのアプリケーションに比較すると、サーバーのアプリケーションを改修するのは比較的容易だ。

AWSのサービス(AWSが提供する管理不要のサーバーアプリケーションの事)は既にArmに対応済み
コンテナはArmバイナリを用意する必要がある
JavaはアプリケーションレベルではISAに非依存
C/C++はコードの書き換えが必要、特にAVXなどの拡張命令をNeon/SVEに書き換えることが必要になる

 例えば、最近のサーバーで当たり前のように利用されているコンテナ(DockerやKubernetes)などはArmバイナリが必要になるが、既に多くのプロバイダーがx86とArm両対応している場合がほとんどで、対応はさほど難しくないし、自社でコンパイルする場合にはx86とArmの両方のバイナリを用意すればよいだけだ。Javaはもともと中間レイヤーでISAの違いを吸収する仕組みであるため、Armに対応するJDKを入手すればよい。

 C/C++のようなプラットホームの違いをプログラミングツールで吸収している場合が一番面倒で、最新のツールを利用してArm版バイナリをリコンパイル必要があり、IntelのAVX-512などのプラットホーム依存の拡張命令セットを利用している場合にはNeon/SVE2などArm側の拡張命令セットに対応するようにコードを書き直す必要がある(オープンソースのSIMDeを利用するとコードの書き換えをある程度自動で行なうことができる)。

 このように、絶対性能、そしてx86からのコードの書き換え(特にAVX命令への対応)など、Arm環境に移行するにはハードルがあるのも事実だが、いつも言っているがそういうのは「鶏と卵」(鶏が先か、卵が先かという議論)であって、時間が解決していくだろう。

 その意味で、Graviton3に採用されているCPU IPデザインであるNeoverse V1の後継となるNeoverse V2は要注目だろう。Armは9月にNeoverse V2(開発コードネーム:Demeter)を正式に発表しており、来年市場に登場するサーバーCPUに採用すると明らかにしている。

Armが9月に発表したNeoverse V2の詳細(出典:Arm Building the Future Infrastructure on Arm)
Armが9月に公開したNeoverse V2を採用したGraceの予想性能。白のTraditional 2023がAMDの第4世代EPYC、灰のTraditional 2023がIntelのSapphire Rapidsのことだと思われる(出典:Arm Building the Future Infrastructure on Arm)

 現時点では次世代GravitonでNeoverse V2が採用されるという発表はされていないが、これまでの経緯(歴代GravitonがNeoverseシリーズを採用していること)を考えれば、十分にあり得るといよりはほぼ確実にそうなるだろう。このNeoverse V2の採用を既に明らかにしているのはNVIDIAで、2023年に投入するGrace(開発コードネーム)は、Traditional 2023と書かれているAMDの第4世代EPYCとIntelのSapphire Rapids(第4世代Xeon Scalable Processorとして1月に発表される予定)よりも高いソケットあたりの性能を発揮するとArmは説明している。

 同じNeoverse V2を採用するとしたら、次世代Gravitonも同じような性能を発揮する可能性は高い。その意味で、2023年はArmベースのデータセンター向けCPUは大きな転換点を迎える可能性が高いのではないだろう。調査会社などの予測をみていても、いきなりx86のシェアがガクッと減るということは考えられないが、現状1桁のシェアが2020年代の後半に向けて2桁のシェアに増えていく、そういうことは十分あり得るストーリーなのではないかと思う。それが20%などある程度の勢力となるような数まで増えるかどうかが焦点と言え、その意味でGravitonの動向は今後も要注目だ。