SPECIALIST

多様な専門性を持つNRIデジタル社員のコラム、インタビューやインサイトをご紹介します。

BACK

AWS Graviton2 に見る、クラウドベンダがプロセッサ開発する理由

はじめに:本稿では、クラウドエンジニアが、(AWSを中心とした)クラウドベンダがプロセッサ開発を行うのか? の概観をつかむことを目的としています。半導体技術に関する専門的な深さはありませんのでご注意ください。

Graviton2:そもそもなぜAWSがプロセッサ開発をするのか?

今年もAWS re:Inventの季節がやってきましたね。NRIデジタルの松村です。今年は全面オンライン&3週間(←去年までは1週間)という、スケールアップ&お財布にやさしい構成となりました。
日本でのプレーヤーも非常に多くなり、新規発表も続々と(場合によってはほぼリアルタイムで!)日本語記事が公開されているこの状況は、日本でエンジニアをしている身としては非常に幸福に感じています。と共に、「単に新しいことを触ってみるだけでは生きていけないんだぞ」という危機感を感じさせてもくれます。

ということで、アーキテクトっぽい深みを出すべく、今回はGraviton2の発表に注目したいと思います。
諸兄ご認識の通り、発表としては特に目新しいものではありません。初出は re:Invent2019でのAndy Jassyキーノートであり、実用化したインスタンスの発表は2020年6月ごろになります。一方で今年のre:Inventでも、Andy Jassyキーノートにおけるインスタンス紹介や、Infrastructureキーノートでのプロセッサ設計におけるSMT1)同時マルチスレッディング。1つのコア内で複数のスレッドを処理する方式のこと。初出はIntelのHyper-threadingであり、2000年頃。への言及/低電力化への貢献などと折に触れ露出しており、非常に息が長いテーマともいえます。

そこで本稿では、Graviton2の特性に触れつつ、なぜプロセッサ開発をするのかについての理由を紐解いていきたいと思います。紐解いていくと、これは単純な技術の問題ではなく、経済的な問題、企業戦略上の判断など、複数の要因により構成されていることがわかります。
なお、筆者はクラウドエンジニアとしての経歴は長いですが、半導体技術者としては素人(というかほぼ接点がない)です。当然ながら調査はしていますが、専門家から見た際にはおかしい部分やずれている部分が存在する可能性があります。発覚し次第修正はしますが、ご容赦・ご認識のほど、よろしくお願いいたします。

いいから結論早く!2)これで満足できたら読まなくていいかもしれません

  • Nitro systemなど、ASICを垂直統合開発したいニーズがあった
  • プロセッサの分業化/特性の分化が進んでいる

プロセッサ発展の歴史:超短縮版

え?何か見えました? 気のせいですよね。
そもそもなぜプロセッサ開発に手を出したのか、を理解しようと思うと、プロセッサがどのように発展してきたのか、ということを把握しておく必要があります。

ここでは、LSIが開発された70年代以降でどのようなことが起きてきたのか、を、本題である「なぜプロセッサ開発に手を出すことになったのか」という側面からピックアップしてお届けします。
3)全体的な年表を知りたい方はWikipediaのCPU年表をご覧ください

ムーアの法則:指数的に性能向上する4)集積度やクロック、18ヶ月で2倍などの色々な表現がありますが、議論が分かれる点でもあるため、ここでは概念的な説明に留めています(70年代~90年代)

個人的には、プロセッサの基底となる考え方だと思っています。ユーザ目線でもっとざっくり言ってしまうと、「待っていれば(後で買えば)それだけで処理速度が速くなる」ということです。70年には既に広く知れ渡っており、これに沿ってプロセッサが発展してきた、と言ってもそう外れてはいないでしょう。当然、開発側からしたら「同じことをやっていたらそのまま性能がよくなるなんてそんなもんじゃない」ということですが、結果としてこの流れは2000年ごろまではそれほど大きく詰まることなく進むことになります。

なぜトントンと進むかというと、微細化効果というものです。プロセッサとは半導体の上に回路を載せたものなわけですが、回路を細かくしていくと、

  • 信号の進む距離が短くなる → 速くなる
  • 回路の開け閉めなどの処理が(物理的に小さなものになるので)軽くなる → 消費電力が少なくなる
  • 大きさが小さくなる(使用する材料が減る) → 安くなる

と、相乗効果があるためです5)詳しくは【CPUの基本】図解でよく分かる「プロセスルール」の意味をご参考ください。そのため、極端なことを言うと、他のことを考えずに「いかに小さく作るか」を突き詰めれば、全てがついてきたわけです。

もう限界だ! 限界…だ…?(2000年代)

線路は続くよどこまでも~、と、どこまでも続きそうなのは気持ちだけであって当然線路もどこかで終点にたどり着きます。プロセッサ微細化における終点は明白で、原子の大きさになります。原子は「それ以上分解できない単位6)もちろん中性子と電子に分解できてそれ以下にもなることは理解していますが、ここでは単独で分解できない単位、という意味です」ですので、原子が見えてくると色々な制約にぶち当たります。代表的なものとして、リーク電流(量子のトンネル効果により、回路外に電流が漏れる:無駄に電力を食う)、露光精度(回路を削り出す際に、削る刃先が小さくならない)があります7)東京大学入江先生の半導体微細化の物理的限界がシンプルで理解しやすいです。露光精度は「そもそも作れない」という問題ですし、リーク電流は「電流が漏れる→熱が上がる→さらに漏れる」という悪循環を(一部)起こす特性もあり、放置するとすぐに動かなくなります。PCやスマホが熱くなってくると動きが悪くなる、という現象に心当たりがある人も多いのではないでしょうか。

これら微細化の限界に行き詰り始めたのが、2000年代からになります。その象徴的な製品がIntel Pentium4 開発コードPrescott8)Wikipedia参照 です。この時点でクロック数(≒計算速度、この当時まで)は3.8GHzと、1970年当初の500KHz9)デスクトップパソコン向けCPUの歴史参照などから考えるととてつもない数字になっているわけですが、詰まってきた結果として消費電力がすごいこと10)max 115W。電球かよ。ちなみにCPUの消費電力は排熱量に直結しますとなり、「全力を出したら一瞬で燃え尽きる(=性能が出なくなる)」という状態になります。そのため、これまでは製品名に「Pentium4 3.8GHz」のようにクロック数をつけていたものから、プロセッサ・ナンバー制に移行します。

実際には今日まで微細化は完全に行き詰まることなく進んでおり、この当時の90nmプロセス
11)回路幅。詳しくは【CPUの基本】図解でよく分かる「プロセスルール」の意味をご参考くださいから 7nmプロセス まで様々な試行錯誤で進化してきています。しかし、クロック数が行き詰まったことにより「待っていればどんどん早くなる」わけではないというコンセンサスが生まれ、CPUの進化方向に多様性が生まれたのがこのタイミングであることは間違いありません。

実ユースケースへの適合(2010年前後)

クロック数で行き詰まりを見せたあと、「よく使われる使われ方に合わせる」という方向性にかじを切ります。これは当初からいくつかのアプローチがありました。

  • 命令セットの高度化/組み換え(1クロックあたりに処理できる処理量の増加:よく使われるものを1処理にまとめるなど)
  • マルチスレッド化/マルチコア化(OSは数多くの処理を並行化しており、1つ単独で高速でなくとも、並行処理できれば全体の処理速度は向上する)
  • GPGPU12)これは2000年より前からあるGPUの転用ですが、時代背景的文脈として併記しています(画面描画などを行う際に利用するGPUを、その他一般的な浮動小数点・ベクトル演算などで利用できるように展開)

などです。このように、パソコンやサーバなどでよく使われる機能に特性を合わせつつ、汎用的なプロセッサを開発していくことで、クロック数ではない形で処理の特定部位、もしくは複数処理を含めた全体の速度を向上させていきます。
AWSを初め、パブリッククラウドが隆盛を誇り始めてきた時代でもあります。

パブリッククラウド特化(2015年頃~)

パブリッククラウドが大規模化するにつれ、「実ユースケース」が広がり始める。正確には、その前段階として仮想化技術があります。仮想化技術は処理を層別化し、(極端な言い方をすると)サーバとネットワークでできていたシステムの構成を、より職能化していった。コンピューティングとストレージは別物として分離されたし、ハイパーバイザー13)仮想化環境のコントロールを行うミドルウェア層のこととVMでネットワークの役割を分担することになりました。

パブリッククラウドベンダは、仮想化技術を元に分割したコンポーネントをサービスという単位でまとめ、個別に販売するようになりました。つまり、今までのように1つのCPUが計算もしてパケット処理もしてディスクにも書き込むといったことではなく、別のサービス、別のコンピューティングリソースがそれぞれの専門領域を担当することになります。

ここで、規模の経済、という理論が働きます。プロセッサにおける規模の経済は実は非常に働きにくく、これは設備投資が巨額となるため14)後述しますが、正確には製造の設備投資が非常に巨額になるだけで、設計などはそれと比して少額です。ただ、製造ラインを動かすにはそれなりのロットが必要なため、結局は初めの第一歩にかなりの物量が必要になることは変わりませんです。そのため、多少のマーケット(2000年代にVMWareユーザの2割が使うだろう、みたいなもの)では動くことができません。しかし、パブリッククラウド事業が巨大になり、「決まった処理を高速に実行する」プロセッサが大量に必要であることが明確になると、特化型プロセッサ、つまりASICを開発する機運が高まります。この領域で初めに着手する箇所として、当時も半導体メーカーが開発を進めていた、ネットワーク処理のオフロードが挙げられました。その後もハイパーバイザー層の処理をASIC化することにより、全体としての処理高速化(コストパフォーマンス上昇)と、コンピューティングリソースを解放して15)仮想化されたVMのCPU使用率における「steal」のことですユーザが利用できるようになるという2つのメリットを享受することとなります。

DeepLearning(2010年代~)

今では聞いたことがない人はいないのではないか、というほどに広まったDeepLearningですが、コンピューティングリソースをドカ食いすることでも有名です。通常、それまでの機械学習であれば、実現可能な範囲に落とし込むためにアルゴリズムを改修するか、スパコンなどコンピューティングリソースを莫大に用意するか、という2つのアプローチでした。しかし、DeepLearningはその大きな可能性を見せつけたこともあり、またプロセッサの特化という時代背景もあり、専用のプロセッサが用意されるに至りました。そのうちの1つでもっとも有名なものが、Googleの開発したTPUです。これもASICの一つとなります。

AWSでは、AWS Inferentia(EC2 Inf1 インスタンス)や、今回発表された AWS Trainium がこのラインナップに該当します。

AWSのプロセッサ戦略とMicrosoft、Google

AWSは半導体メーカーを買収、内製化

2015年、AWSは2014年から専用ASICを発注していた、イスラエルの半導体メーカーAnnapurnaLabsを買収し、様々な自社ASIC開発に専従させます。この集大成のひとつが、re:Invent2017で発表されたNitro systemです16)日経ビジネス 「AWSが新しいEC2基盤、Nitroの正体」参考。これは、前述のとおり今後大規模なASIC開発を続けていくという観点から妥当な判断だという見方もできますが、Amazonという会社の戦略を端的に表している側面であるともいえます。

Amazonはご存じ本屋から始まった巨大ECですが、その第二成長期はマーケットプレイスにあります。マーケットプレイスにより、自社では調達できない幅の商品を一挙に調達し、さらにその中で売れ筋のセグメントではプライベートブランドを投入するといった、水平分業と垂直統合を行っています。一般に、水平分業は特定領域へリソースを集約することによる効率性を高め、垂直統合はプロダクト全体を通じてコントロールすることによる特異性を高める、という性質がありますが17)國學院大學 藤山先生の 「イノベーションのジレンマ」で垂直統合型と水平分業型を理解する など参照、その他にも中間コスト削減によるトータルコスト削減や、マーケットイン・アプローチによる品質の適正化、などの側面もあります。こういった、垂直統合メリットをエンドユーザに還元する、というポリシーがあるように感じます。

AWSでも同様に、顧客の声に準じたサービス開発をしており、多くのサービスは明確にファーストユーザがいる。同様に、ASIC領域においても、需要が明確にある領域については垂直統合して全体最適を行うことで効率化し、その成果を顧客に(コストダウンや性能アップという形で)還元する、という方針のように感じます。

逆に、機械学習特化のプロセッサである Inferentia は、re:Invent2018 で存在発表、実際のインスタンスは re:Invent2019 で発表、今回発表された Trainium は2021年ローンチ見込み、となっており、ようやく優先度が上がってきたかな、という雰囲気を感じます。

Microsoftは半導体メーカーと20年来のプロセッサ開発経験がある

MicrosoftといえばAzure、という観点で見ると、何のことかさっぱりわからないと思います。

答えはXboxです18)私も見つけたときは「あぁ!」でした。家庭用ゲーム機というのは、PlaystationもNintendo Switchもそうですが、プロセッサに汎用機とは異なる特異な特性を求めるため、最近のものは全て独自開発されています。また、汎用機の世界における Intel or ARM のどちらかのアーキテクチャ19)半導体メーカーの役割は、アーキテクチャ開発、チップ設計、製造、販売と大きく4つに分かれているようです。ここでは、そのうちのアーキテクチャ開発部分を指しています。詳しくは PC Watch IDMのビジネスモデルを根底から転換しつつあるIntel をご参照ください、ということなく、様々なプレーヤが活躍しており、当然協業するメーカーも多岐にわたります。また、Surfaceのプロセッサについても独自開発を進めています。こちらの方がサーバ用プロセッサには近しいですね。実際、端末系のプロセッサという意味では、2018年にAzure Sphereという、Xboxの経験を元に開発したプロセッサ+カスタムLinuxのIoTエッジサービスを発表しています。

一方、AWSで述べていたNitroのようなクラウド内部の利用については、FPGA20)field-programmable gate array。一部をプログラム可能にしたASIC、と理解すればよいでしょう。Xilinx社が供給元として最も有名ですを活用する方針を打ち出しています21)ASCIIさんの、自社開発技術満載!Microsoft Azureの物理インフラを大解剖 の記事がわかりやすいです。これは、AWSのようなASICベンダを買う、みたいな巨額投資およびリスクテークをせず、しかしクラウドプラットフォーム部分の処理アウトソース化を柔軟に行うためのアプローチをとる、ということなのだろうと思います。機械学習プロセッサ領域においても、同様にFPGAを利用するアプローチをとっています。それが Project Brainwave です。2016年ごろから露出が始まっており、2018年には実際にユーザがプレビューで利用できる形として提供が始まりました

Googleは自社サービスで使うものを開発し、提供する

Googleの方針としてはこの1つで一貫しています。GCP自体もそうですし、Dremel(BigQuery)、Borg(Kubernates)など、全てGoogleというサービスを発展させるために必要な技術を論文化し、プロダクト化し、時にはオープンソース化して提供します。先だってのTPUについても同様で、Google社内で日々膨大に実行されているDeepLearning(含むTensor flow)処理を高速にこなすために開発されたプロセッサであり、現在ではGCP上でコンピューティングリソースとして利用することができます。

基本的には、独自性が強くキラーコンテンツになりうる技術を、自社内で発展させてから(違う言い方をすると十分に受益してから)公開するという方針です。そのため、独自性の低い内部アーキテクチャや、逆にGoogle内で最先端のものは情報が公開されません。上述にあるようなネットワーキングレイヤの高速化/ASIC・FPGA化などは、筆者が知る限りでは情報が出てきていません。恐らく実現はされているのだと思いますが、特に公開する意味がないので公開しない、ということなのではないでしょうか。

まとめ

AWSでは主に仮想化層における共通的な処理を専用でオフロードするために半導体メーカーを買収して次々と専用化を進めたこと、これは汎用プロセッサを並べるより効率的であること、この副産物としてGravitonなどの「クラウドに適した垂直統合型」プロセッサ開発が進んだこと、を見て取ることができたのではないでしょうか。また、機械学習の発展に伴い、高速に機械学習できること、が競争領域となっていること、これらのプロセッサ開発を含む垂直統合型で各社が捉えていること、も分かるかと思います。

前出の水平分業・垂直統合のモデル議論では、垂直統合型での価値提供はまだまだこれから発展途上にあることも意味すると言います。これからのクラウドプラットフォームの発展から、ますます目が離せません。

最後に、本稿は公開情報を元に筆者が類推した情報を多分に含みます。可能な範囲で複数の情報を確認してはいますが、当時、および現時点での各社の戦略と必ずしも合致しない可能性は十分にありますので、その点はご認識おきください。

References   [ + ]

1. 同時マルチスレッディング。1つのコア内で複数のスレッドを処理する方式のこと。初出はIntelのHyper-threadingであり、2000年頃。
2. これで満足できたら読まなくていいかもしれません
3. 全体的な年表を知りたい方はWikipediaのCPU年表をご覧ください
4. 集積度やクロック、18ヶ月で2倍などの色々な表現がありますが、議論が分かれる点でもあるため、ここでは概念的な説明に留めています
5. 詳しくは【CPUの基本】図解でよく分かる「プロセスルール」の意味をご参考ください
6. もちろん中性子と電子に分解できてそれ以下にもなることは理解していますが、ここでは単独で分解できない単位、という意味です
7. 東京大学入江先生の半導体微細化の物理的限界がシンプルで理解しやすいです
8. Wikipedia参照
9. デスクトップパソコン向けCPUの歴史参照
10. max 115W。電球かよ。ちなみにCPUの消費電力は排熱量に直結します
11. 回路幅。詳しくは【CPUの基本】図解でよく分かる「プロセスルール」の意味をご参考ください
12. これは2000年より前からあるGPUの転用ですが、時代背景的文脈として併記しています
13. 仮想化環境のコントロールを行うミドルウェア層のこと
14. 後述しますが、正確には製造の設備投資が非常に巨額になるだけで、設計などはそれと比して少額です。ただ、製造ラインを動かすにはそれなりのロットが必要なため、結局は初めの第一歩にかなりの物量が必要になることは変わりません
15. 仮想化されたVMのCPU使用率における「steal」のことです
16. 日経ビジネス 「AWSが新しいEC2基盤、Nitroの正体」参考
17. 國學院大學 藤山先生の 「イノベーションのジレンマ」で垂直統合型と水平分業型を理解する など参照
18. 私も見つけたときは「あぁ!」でした
19. 半導体メーカーの役割は、アーキテクチャ開発、チップ設計、製造、販売と大きく4つに分かれているようです。ここでは、そのうちのアーキテクチャ開発部分を指しています。詳しくは PC Watch IDMのビジネスモデルを根底から転換しつつあるIntel をご参照ください
20. field-programmable gate array。一部をプログラム可能にしたASIC、と理解すればよいでしょう。Xilinx社が供給元として最も有名です
21. ASCIIさんの、自社開発技術満載!Microsoft Azureの物理インフラを大解剖 の記事がわかりやすいです