このページの本文へ

データセンターやネットワーク、プロセッサー、ストレージまでCSAが解説

自社開発技術満載!Microsoft Azureの物理インフラを大解剖

2017年03月30日 07時00分更新

文● 羽野三千世/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

いまどきのデータセンターの中には4種類のチップがいる

羽野:次に、Azureデータセンターの中のことを教えてください。

真壁:Azureデータセンターの中には、CPU、GPU、FPGA、ASICという代表的な4種類の演算チップがいます。かつて、データセンターに使われる演算用のチップで意識するのは、サーバーにいるCPU、サーバーのネットワークインターフェイスやネットワーク装置にいるASICの2種類でしたが、最近はGPUとFPGAが注目されています。

Azureデータセンターで使われている4つの演算チップ

CPUとGPUはソフトウェアロジック、FPGAは書き換え可能なハードウェアロジック、ASICは書き換え不可のハードウェアロジックで動きます。と言っても分かりにくいと思うので、4つのチップの特徴を、中華料理屋にあるものに例えて説明しましょう。

CPUは中華包丁。中華料理なら何でも料理できる万能な包丁ですが、店の調理場を1人で切り盛りするコックさんが使うものです。その中華料理屋に、1000人のお客さんが来店して、全員が「うさぎりんご」を注文したとします。コックさんが中華包丁でりんごをむくこともできますが、それよりも、何人かのアルバイトが果物ナイフでむいたほうが早い。この果物ナイフがGPU。軽い処理をたくさんこなすのに適したチップです。

GPUはもともと描画処理用に開発されたものだけあって、画像の各ピクセルに対する処理をまとめて行なうような細かい並列処理が得意なのです。

FPGAは中華鍋。炒めたり揚げたりいろいろな使い方ができますが、使う前に、空だきをしたり油をひいたりと準備が必要です。準備というのは、FPGA向けのロジックを書き、ハードウェアにロジックを書き込む作業を指します。この作業を扱えるエンジニアは多くありません。そして、ハードウェアロジックが何度でも書き換えられるといっても、時間はかかります。ソフトウェアほどお手軽ではありません。でも「そのロジックよりいいロジックが見つかった」「ロジックにバグが見つかった」というケースで対処できるのは大きな利点です。

ASICは餃子マシンです。餃子を作るスループットは最高ですが餃子以外は作れません。また、一度購入したら長期間使う必要があります。つまり、ハードウェアのロジックを決めたらもう変更できないので、その設計を長く使い続けなければいけません。

羽野:4種類のチップは、データセンターの中でそれぞれ何をしているのでしょうか。

真壁:Azure上でユーザーから見えているのは、IaaS仮想マシンにいるCPUとGPUだけですね。仮想マシンでは、x86系CPUと、NVIDIA製のGPUが利用可能です(Azure仮想マシンの「Nシリーズ」で「NVIDIA Tesla M60」「NVIDIA Tesla K80」の2種類のGPUを提供)。

CPUとGPUは、データセンターの中の、ユーザーから見えないところでインフラやアプリケーションの処理も行なっています。ここで、CPUの負荷を下げるためにお手伝いしているがFPGAとASIC。特にマイクロソフトは、新しいプロトコルをどんどん載せられる柔軟性から現時点ではFPGAの方に注力しており、Altera製FPGAを搭載した拡張カード「Catapult」を自社開発しています。

インフラ処理でCPUを使ったら負け

真壁:FPGAは、データセンター内部でCPUのアクセラレーターとして、ネットワークのパケットフィルタリングや暗号化、ストレージの圧縮・暗号化などの処理を行なっています。特に最近の広帯域なネットワークの処理は重たいので、CPUにまかせるとその処理だけでいっぱいいっぱいになってしまう。そこで、ネットワーク処理に特化したロジックを持つFPGAを使ってCPUの仕事を減らしてあげるわけです。CPUのパワーはなるべくユーザーアプリケーションのためにとっておきたいものですから、インフラ処理でCPUを使ったら負けです。

羽野:使ったら負け。で、FPGAは具体的にデータセンターのどこにいるのですか?

まず下図のようにCPUとNIC(ネットワークインターフェイスカード)の間にいます。TOR(ラックの上でネットワークを束ねるスイッチ)の処理で、ラック間が通信する際にいったんFPGAをいったん通してCPUとNICが楽をできるように助けています。NICの前処理をするFPGA付きのかしこいNICということで、「SmartNIC」と呼んでいます。

FPGAアクセラレーションのコンセプト(出典:A Cloud-Scale Acceleration Architecture)

この「SmartNIC」が、Azureデータセンター内でSDNを実現するコア機能「VFP(Virtual Filtering Platform)」と連携します。

SmartNIC(出典:SmartNIC: Accelerating Azure’s Network with FPGAs on OCS)

VFPとは、Hyper-V仮想スイッチを拡張するもので、仮想マシン間の通信において、ACLs(アクセスコントロールリストによる制御)、VNET(仮想ネットワーク識別タグの付与)、SLB(サーバーロードバランサー)といった機能を提供しています。VFPの処理はSmartNICが担っています。VFPがSDNコントローラーの指示を受けて作ったGFT(Generic Flow Table)に従って、SmartNIC上のFPGAが仕事をするイメージです。

Azureデータセンター内でSDNを実現するコア機能「VFP」

FPGAありきでノード間通信のプロトコルを再設計

真壁:VFPの説明で話が難しくなったついでに、「低遅延FPGA間通信」の話もしましょう。データセンター内のサーバーノード間の通信の話です。

低遅延FPGA間通信(出典:『Microsoft's Production Configurable Cloud』)

現状、Azureデータセンターでは、同一ラック内のサーバーノード間通信(L0)や、ラックをまたいだサーバーノード間通信(L1/L2)に、TCPというプロトコルを使っています。このTCPの処理は重たく、CPUに負荷がかかるので、FPGAで何とかしようと考えました。

通信する始端ノードと終端ノードのどちらにもFPGAが搭載されていたら、何かもっと工夫ができないか。そんな発想から、FPGAありきでプロトコルとネットワーク転送レイヤーを新しく設計したものが、Azureデータセンターの次世代ネットワーク構想「低遅延FPGA間通信」です。FPGA搭載ノード同士が通信する際のプロトコルとして、TCPより処理が軽いUDPを採用しています。

羽野:TCPとUDPの違いを優しめに教えてください。

真壁:TCPは、始端ノードが終端ノードに向けてパケットを送る前に「話かけていいですか?」と常に確認します。UDPは、一方的にしゃべりかけます。また、TCPの会話は「明日、ビールを、飲みに行こう」というように決まった順番で話すのに対し、UDPの会話は順番が保証されておらず「ビールを飲みに行こう」と言ってから「明日」が届く可能性がある。それ先に言ってよ、的な。順番は重要ですよね。

UDPはTCPより負荷が軽いのですが、言葉が届いたか確認したり、話の順序を正しく並べ替えるような処理のためには通信スタックの代わりにアプリケーションが忙しく働く必要があります。

話をAzureの低遅延FPGA通信に戻しますが、この通信では、終端ノードのFPGAがUDPの各種処理をカバーし、TCPのような送達確認や順序制御を行ないます。そのため、マイクロソフトはより軽量なネットワーク転送レイヤー「LTL(Lightweight Transport Layer)」を開発しました。UDP+LTLで軽いもの同士を組み合わせてFPGAで処理した結果、同一ラック内のサーバー間通信のラウンドトリップ遅延が3マイクロ秒を安定して下回るようになりました。これは、Infiniband並みのスペックです。

カテゴリートップへ