2013年1月30日、早稲田大学で開催された「第2回 メニーコアシンポジウム」において、ARMのプロセサ部門のDirector of Technology & SystemsであるJohn Goodacre氏がARMプロセサの発展の過程と将来方向に関する招待講演を行った。

メニーコアシンポジウムで招待講演を行うARMのGoodacre氏

ARMは現在まで21年の変遷を経て、50億以上の人が携帯やインタネットで接続される時代を作り出してきた。

ARMは21年の変遷を経て50億以上の人が接続された環境を作り出てきた(以降のスライドは、メニーコアシンポジウムにおけるGoodacre氏の講演資料を撮影したもの)

ARMプロセサの設計はシングルコア、マルチコア、マルチクラスタと3つのフェーズで発展してきた

ARMプロセサの第1フェーズはシングルコアであったが、フェーズ2でマルチコア+アクセラレータという構造になった。そして、現在は第3フェーズで、Cortex-A15のマルチコアクラスタとCortex-A7のマルチコアクラスタを使うbig.LITTLEのように、マルチコアのクラスタが複数あるというという構造になっている。

この第3フェーズのCortex-A15はスーパスカラでOut-of-Order実行を行うハイエンドコアで、現在のハイエンドのスマートフォン(スマホ)に使われているCortex-A9コアと比較して2倍の性能を持っている。一方、Cortex-A7は、これまでのARMコアの中で一番電力効率の高いコアで、40nmプロセスで作られるCortex-A9が2mm2程度のチップ面積を占めるのに対して、28nmプロセスで作られるA7コアは0.5mm2以下の面積で済む。したがってコストも安く、100ドル以下でスマホが実現できるようになる。

そして、Cortex-A15とA7は同一アーキテクチャ(ハードウェアの作りであるマイクロアーキテクチャは異なる)であり、アーキテクチャレジスタの内容をコピーして両者の間でジョブの実行を移動することができる。

big.LITTLEでは、処理の負荷が低い状態では、A7コアで実行させることにより消費電力を大幅に減らせる

この図は、DVFSで電源電圧とクロックを変えた場合のCortex-A15の性能と消費電力を青の線で示し、Cortex-A7の性能と消費電力を赤の線で表している。処理負荷が重い右側の領域ではCortex-A15コアを使用するが、左側の低負荷の領域では、同じ性能でもCortex-A7に切り替えることにより消費電力を大幅に減らすことができる。

そして第4フェーズともいえる次の5年間では、通信機器とモバイル端末、機器組み込みという従来のARMのカバレージ範囲に加えて、サーバへの進出を狙っている。

次の5年間は、サーバまでARM製品のカバーレンジを広げる計画である

次の5年間を担う最初の製品がCortex-A57とA53である。モバイル機器などでは32bitアドレス空間でも間に合うが、サーバアプリケーションは64bitアドレス空間を使うものが一般的で、32bitアーキテクチャのARM製品は本格的にサーバマーケットに参入できていなかった。

これに対して、Cortex-A57とA53は64bitアーキテクチャのARMv8命令セットをサポートし、キャッシュにECCを付けるなど信頼度にも配慮しており、サーバの要件を満たす設計となっている。

Cortex-A57は64bit ARMv8命令をサポートし、キャッシュにECCを付けるなどサーバ対応になっている

Cortex-A57は、Cortex-A15と比較して最大25%以上性能が向上しておりSPECint2000で1250以上の性能

Cortex-A57の性能であるが、性能比較のグラフでは、4スレッドの場合A15と比較して30%強の性能向上となっている。これは同一クロックでの比較では約20%の性能向上であるが、この部分で50%以上の性能向上を行おうとすると、チップ面積や消費電力が倍増してしまうので、電力効率やコストの観点から、このような性能向上は見送ったと述べられた。そして1.7GHzクロックのA57の性能としてSPECint2000で1250以上という値が示された。

このグラフでは、1スレッドで比較すると、A57は1.66GHzクロックのIntelのAtom N570の2.3倍程度の性能となっている。なお、Intelの正式な測定値ではないが、1.8GHzクロックのAtom D525のSPECint2000性能が725というデータがあり、これと比べるとA57は1.7倍程度の性能である。おおよそ、同一クロックではAtomコアの2倍程度の性能と言ったところであると考えられる。

一方、Cortex-A53は、64bit ARMv8アーキテクチャのLITTLEプロセサで、効率の高いA7のパイプラインをベースに各種の改良を盛り込んで作られている。そしてCortex-A57とA53の4コアクラスタをCCI400リンクで接続してbig.LITTLEを構成する。

Cortex-A57 4コアのクラスタと、Cortex-A53 4コアのクラスタをCCI400で接続したbig.LITTLE構成

また、CCN504という新しいリンクを使うとより多くのモジュールを接続することができ、サーバ用にはCortex-A57 4コアのクラスタを4個使い、合計16コアという大規模なコンピュートユニットを作ることができる。

しかし、今回の講演で、ARMはさらに大規模な構成の実現を考えていることが明らかにされた。コンピュートユニットを複数接続し、すべてのコンピュートユニットのメモリにグローバルアドレスを与え、リモートのメモリにもアクセスできるような構造を検討しているという。

各コンピュートユニットはInnerコヒーレントとし、単一OSで管理。隣接コンピュートユニットもOuterコヒーレントにアクセス可能であり、離れたコンピュートユニットも上側のネットワーク経由でグローバルアドレスでアクセスできるユニファイドアーキテクチャを検討している

この図では2つのコンピュートユニットがメモリへのパスでOuterコヒーレントに結ばれており、グローバルな通信領域をアクセスすると、そのアドレスは他のコンピュートユニットノードのメモリにマップされており、ローカルなメモリをアクセスする感覚で、他のノードのメモリがアクセスできるようになるという構造である。また、図の上側に書かれたネットワークを経由してその他のコンピュートユニットのメモリにもRead/Writeが行えると書かれており、システムに含まれるすべてのコンピュートユニットのメモリがグローバルアドレスを使ってアクセスできるユニファイドアーキテクチャとなっている。

他のノードと大量のデータをまとめてやり取りする場合は、分散メモリでMPIなどを使って通信しても良いが、ワード単位のような少量のデータの場合は、MPIではオーバヘッドが大きい。これに対して、このようなユニファイドアーキテクチャならソフトウェアのオーバヘッドがなく、小さいデータ量で頻繁な通信を高速に行うことができ、多数のノードを使う分散処理の性能を上げることができるという。