仮想化道場

64ビット化でサーバー分野に進出するARMプロセッサ

 12月6日に開催されたARMのテクニカルコンファレンス「ARM Technology Symposium 2012 Japan」では、11月に米国で発表された64ビットARMプロセッサ「Cortex-A57/A53」に関して説明があった。今回は、サーバー向けのARMプロセッサに関して解説していこう。

Cortex-A57/A53とはどのようなプロセッサか?

ARMv8は、既存のARMv7/ARMv6/ARMv5などの機能をすべて包含しつつ、64ビットに機能拡張されている

 Cortex-A57/A53は、ARMが昨年発表した64ビットアーキテクチャのARMv8アーキテクチャをベースにしたプロセッサコアだ。

 Cortex-A57がハイパフォーマンスのプロセッサコア、Cortex-A53は64ビットアーキテクチャを採用しつつもコンパクトで省電力化されたプロセッサコア(逆に性能的には高くない)だ。

 ARMでは、“big.LITTLEコンセプト”を打ち出している。これは、1つのプロセッサに複数のCortex-A57とCortex-A53を搭載し、負荷が高いときにはハイパフォーマンスだが電力を消費するCortex-A57を利用し、負荷が少なくなれば性能はそれほど出ないが省電力化に優れたCortex-A53に切り替える、というものだ。

 big.LITTLEコンセプトを実現するためには、「ハイパフォーマンスなbigコアから省電力化されたLITTLEコアへ、タスクがきちんと移行できるか」ということが問題になる。

 例えば、プロセッサコアのレジスタの値やステイトの値を、BigコアとLITTLEコア間で移動する必要がある。また、この移動に時間がかかるようでは、BigコアとLITTLEコアが切り替わる時点で、ユーザーが待ち時間を感じられるほどのウエイトがかかってしまうことにもなりかねない。

 ARMでは、このようなウエイトをできる限り小さくするため、Bigコア・LITTELコア間を高速のバスで接続している。このバスを使って、プロセッサコアが持つデータを受け渡しする。

Cortex-A57は、ハイパフォーマンスだが、CPUコアが大きく、消費電力もある程度ある。Cortex-A53は、CPUコアも小さく、低消費電力。ただし、Cortex-A57に比べると性能的には低い
Cortex-A57/A53は、64ビットのARMv8アーキテクチャにしたがったCPUコア。Cortex-A57がハイパフォーマンス、Cortex-A53が省電力コア。この2つのGPUコアでbig.LITTLEプロセッサを構築する
Cortex-A57/A53を採用したCPUは、bigコア、LITTLEコア、GPUをCorelinという専用の内部バスで接続される
bigコアとLITTLEコアを1つのプロセッサに入れて、CPU負荷に応じて切り替えることで、システム全体としては省電力化が図れる。第1世代のbig.LITTELプロセッサとしては、Cortex-A15/A7で、第2世代がCortex-A57/A53になる

 Cortex-A57/A53のARMv8アーキテクチャは、単に64ビットアーキテクチャというだけでなく、32ビットアーキテクチャのARMv7も包含している。このため、以前の32ビットベースのアプリケーションも高速で動かすことができる。

64ビットのARMv8アーキテクチャは、今までの32ビットのARMv7を包含している。このため、32ビットのアプリケーションもARMv8では動作する
Cortex-A57は、32ビットモードでも、2012年のスマートフォンに使われていたCPUの3倍の性能を持つ。1つのプロセッサ内部に最大16コアまで搭載可能
Cortex-A53は、省電力性に優れた64ビットCPUコア。20nmプロセスを使えば、Cortex-A15/A7よりも小さなダイで製造できる

 ARMでは、「Cortex-A57/A53はサーバー向けのプロセッサコアという限定された利用法だけでない。今後スマートフォーンからタブレット、モバイルコンピュータ、サーバーまで幅広いエリアをカバーするプロセッサコアとなる」と語っている。

 実際、ARMではコア数を増減することで、スマートフォンからサーバーまで対応していこうと考えている。

 例えば、スマートフォンでは省電力性に優れたCortex-A53を4コア採用したプロセッサを使用し、ハイパフォーマンスが必要なサーバーにはCortex-A57を16個搭載したプロセッサを使用する、といったようになるだろう。

ハイパフォーマンスのサーバー向けには、16CPUコアのプロセッサが利用される。もちろん、big.LITTLEプロセッサになっているため、CPU負荷が小さくなると低消費電力コアのCortex-A53に切り替わる
Cortex-A57/A53を採用したプロセッサとして最初に提供されるのが、Applied MicroのX-Geneとなる。2013年には、64ビットARMベースのLinux OSとプロセッサがそろう

ARMサーバーのOSは?

ARMサーバーは、Linux OSがメインOSとして利用される。ARMでは、HP、AMD、Red hatなどと一緒にARMベースのLinux OSの改良を行うLinaro Enterprise Groupを組織している

 Cortex-A57/A53などの64ビットARMプロセッサ向けOSとしては、Linuxが挙げられる。実際、ARMv7などに対応したLinux OSはリリースされているため、ARMv8でもLinux OSがメインとなるだろう。

 ARMv7などの32ビットベースのLinuxとしては、Fedora(Red Hatが後援しているコミュニティプロジェクト)、Linaro(ARMプロセッサ向けにLinuxを改良している非営利団体)などが、コードを提供している。

 ただ、サーバーでの利用ということを考えれば、Red Hat Enterprise Linux(RHEL)などでARMv8がキチンとサポートされる必要があるだろう。システムを導入する側も、企業で必要とするサポートが得られるディストリビューションで利用したいと考えるケースは多い。このため、Red Hatが積極的な役割を果たすことになると考えられる。

 ただ、RHELなどのOSだけがサポートされても、システムとして利用するには足らない部分が数多くある。さまざまなミドルウェアがARMv8アーキテクチャに移植される必要があるだろう。最も期待されるのは、数多くのミドルウェアをプログラミングしているJava言語のARMv8対応版だ。

 最近注目されているビッグデータを処理するHadoopやNoSQLのデータベースCassandraなどもJava言語で記述されている。だからこそ、64ビットベースのARMv8に対応した高速なJava環境が必要となるだろう。

 ハイパーバイザー層では、ARMv8アーキテクチャ対応が徐々に進んでいる。Linuxのカーネルに融合したKVM、XenなどもARMベースの開発が進んでいる。ARMv8の1世代前のARMv7-A(Cortex-A15)から、ハイパーバイザーを高速で動作させる仮想化支援機能がサポートされている。また、64ビットアーキテクチャのARMv8へ対応も順調に進められている。

 ハイパーバイザーということでは、最大手のVMwareの動向は、ARMサーバーに関して否定的だ。先日、来日したVMwareのパット・ゲルシンガーCEOは、「ARMサーバーはアプリケーションやOSなど、さまざまなエコシステムがそろっていないため、当面は非常に限定された領域だけで使われるだけになるだろう。そのような領域においては、VMwareのハイパーバイザーは利用されないだろう」と語っている。

 ARMプロセッサは、企業が利用するメインストリームのサーバーとしては、パフォーマンス不足だとゲルシンガー氏は考えているようだ。このあたりは、Intelの元幹部であり、Xeonなどのロードマップなどをある程度分かっている人物らしい判断だろう。

 一方、MicrosoftのWindows Serverに関しては、現状ではARMv8への対応は不明だ。一部のうわさでは64ビット版のWindows RTの開発が進んでいると言われているが、ARMv8対応のWindows Serverに関しては当面リリースされないと筆者は考える。

 それは、MicrosoftにとってARMプロセッサは、スマートフォンやタブレットなどのデバイスで利用するプロセッサであり、サーバー分野に広げていくには時期尚早と考えているのでは、と思っているからだ。

 Windows ServerにおいてもRHELなどのLinux OSと同じように、OSだけでなく、データベースなどさまざまなミドルウェアをARMv8に対応する必要がある。こういった意味では、サーバー向けのソフトウェアにおいてエコシステムがきちんと構築される必要がある。

 もし、ARMv8ベースのWindows Serverがリリースされたとしても、ある特定用途に向けたプラットフォームになるだろう。

ARMサーバーはどのような分野で利用されるのか?

 ARMも、ARMプロセッサが一足飛びに、サーバー分野のメインストリームプロセッサになるとは考えていない。当初は、省電力性を生かした分野に利用されると考えている。

 AMRプロセッサは、Xeonなどのx64プロセッサに比べると、性能がそれほど高くない。しかし、同じ消費電力で搭載できるプロセッサ数は、低消費電力性が優れたARMプロセッサの方がずばぬけて多くなる。このため、消費電力というファクターを考えに入れれば、多数のARMプロセッサを使っての分散処理に効果的ということになる。

 逆に言えば、多数のARMプロセッサを使って分散処理を行うことでシステム全体で性能をアップしていくアプローチになるため、ERPやCRMなどの業務システムのサーバーには、ARMサーバーは向いていないといえる。

 ARMサーバーが期待される用途としては、Webシステムのフロントサーバーなどだ。細かなデータがやりとりされるWebサーバーなどは、多数のARMプロセッサで構成される分散処理システムの方が、高いパフォーマンスを示すだろう。また、多くのARMサーバーを用意しても、x64サーバーよりも低消費電力でシステムが構成できる。

 もう1つは、Hadoopを使ったビッグデータ解析だ。NoSQLでビッグデータを扱うCassandraなどのサーバーとしては、低消費電力なARMサーバーはぴったりかもしれない。1つ1つのサーバーは、あまりプロセッサパワーがなくても、データを数百、数千のサーバーに分割して処理をするため、システム全体で性能が向上する。

 さらに、個々のサーバーに大容量のメモリを搭載し、データをディスクではなくメモリにロードしておくインメモリデータベースなどを利用すれば、高速にビッグデータ解析が可能になる。

 64ビットアーキテクチャのCortex-A57は44ビットのメモリ空間をサポートしているため最大16TBのメインメモリに対応する(Cortex-A53は40ビットのメモリ空間をサポートし、最大1TBのメインメモリに対応)。各サーバーに最大16TBのメモリが搭載できれば、数百台、数千台のサーバーを使って、数PBになるビッグデータもインメモリで処理できるようになるだろう。

 そういう意味では、前回紹介したAtomサーバーと用途が似ることになる。

1つのプロセッサで、すべての用途をカバーすることはできない。ARMプロセッサを使ったサーバーは、ModestやModerate Computeなどの用途に使われる。
低消費電力のCPUコアを多数搭載するプロセッサが利用される。将来的には、GPGPUなどのハードウェアアクセラレータを搭載したSoCへと変化する
ARMサーバーは、負荷の軽いスケールアウトシステム、低消費電力と高密度サーバーなどでメリットがある。逆に、Compute中心のサーバーには向かない

 ARMサーバーは、クラウドやビッグデータなどで活用される可能性がある。ただ、ライバルとなるx64プロセッサも低消費電力化を進めている。Intelは、先日サーバー向けのAtom S1200シリーズ(2コア/4スレッド)を発表した。さらに、2013年には、コア数を増やし、消費電力を落とした、Avoton(開発コード名)がリリースされる。

 Atom S1200シリーズは、既存のOSやアプリケーションなどのソフトウェアがそのまま動作する。しかし、Cortex-A57/A53などのARMプロセッサは、OSやアプリケーションを移植しなければならないため、ソフトウェアのエコシステムを構築するのに時間がかかるだろう。

 ただ、ARM陣営にとっては、単にCortex-A57/A53などのプロセッサコアだけでなく、GPGPUも統合したHPC向けのプロセッサとして大きな期待がかけられている。

 NVIDIAが2011年に発表しているProject Denverは、64ビットベースのARMプロセッサとNVIDIAのGPGPUを搭載したプロセッサとなる。GPGPUを内蔵しているため、省電力とはならないが、HPCなどの分野に向けては、64ビットのARMコアとGPGPUを搭載することで、今までx86サーバーで実現できなかった性能を出そうとしている。

 Project Denverは、ARMの64ビット命令セットARMv8にしたがったコアになるが、ARMが発表したCortex-A57/A53とは異なるコアとなるようだ。このあたりは、NVIDIAが独自に拡張した機能を取り込んでいるためだ。

 ARMもGPGPUとして利用することを考えて、Mali T600シリーズを開発している。Mali T600シリーズでは、Open CLベースのGPGPUコンピューティングを考えているようだ。

 IntelもGPGPUを意識してXeon Phiなどのメニーコア プロセッサを提供しているが、既存のXeonとXeon Phiを統合して1チップ化するまでには、まだまだ時間がかかりそうだ。

 単なる省電力サーバープロセッサではなく、GPGPUを統合した新しい世代のサーバーチップという分野なら、ARMをベースにしたシステムも普及する可能性が高い。

ARMが開発したMali-T600 GPUは、Open CLを使ったGPGPUコンピューティングをサポートする。
GPUコアを増やすことで、高い性能を提供することができる。
GPGPUを念頭に置いたMali T600シリーズは、GPUコアを増やすことで高い性能を示す

(山本 雅史)