後藤弘茂のWeekly海外ニュース

スマートフォンを100ドル以下にするARMの新CPU「Cortex-A7」



●ARMからスマートフォン向けの新しいCPUコアが登場

 ARMが新CPU「Cortex-A7(Kingfisher:キングフィッシャ)」の概要を米サンタクララで開催中のARMの技術カンファレンス「ARM Techcon 2011」で発表した。Cortex-A7は、ARMv7命令セットのCPUファミリ「Cortex-A」系の5番目のCPUコアだ。28nmプロセスを最初の実装のターゲットにしており、2013年頃に市場に登場する見込みだ。

 Cortex-A7の特長は、そこそこの性能を、極端に小さなコアと消費電力で実現できること。2命令デコード&イシューのインオーダパイプラインで、最高1.2GHzで動作し、マルチコアもサポートする。命令セットと機能の点では、Cortex-A7はARMの最先端コアのCortex-A15と同等だ。

 ARMは、Cortex-A7を使って、100ドル以下の廉価版スマートフォンの市場を立ち上げることを目指している。Cortex-A7デュアルコアで、現在のスマートフォンと同等クラスの性能を100ドル以下のレンジにもたらす計画だ。

 また、ARMは、Cortex-A7コアを、高パフォーマンスのCortex-A15コアと組み合わせた「ヘテロジニアス(Heterogeneous:異種混合)マルチコア」の構成も提案している。この構成では、高負荷時にはCortex-A15を、低負荷時にはCortex-A7を使うことで、ハイエンドのスマートフォンやタブレットのバッテリ駆動時間化を伸ばすことが可能になる。「big.LITTLE Processing」と呼ぶこのコンセプトで、ARMはOSがシームレスにコア間を移行できる仕組みも整える。

Cortex-A7の特徴Cortex-A7のターゲット

●2011年のハイエンドスマートフォンの性能を2年後に100ドルに
Cortex-Aシリーズのラインナップ

 ARMのCPU群の中で、スマートフォンなど比較的高パフォーマンスの携帯機器をターゲットとするCortex-Aファミリには、最初のコアであるCortex-A8、高パフォーマンス&マルチコアのCortex-A9、ローコスト&超低消費電力のCortex-A5の3系統がある。来年(2012年)には、ハイエンドのCortex-A15がこれに加わる見込みだ。iPhoneで説明すると、iPhone 3GS/4がCortex-A8シングルコア、iPhone 4SがCortex-A9デュアルコアだ。それ以前のiPhoneはARM11系だった。


Brian Jeff氏

 5番目のコアであるCortex-A7のコンセプトは、Cortex-A8クラスの性能をCortex-A5クラスの電力とコストで実現すること。「今日のメインストリームスマートフォンに使われている40nmのCortex-A8と比べると、28nmのCortex-A7は20%パフォーマンスが高い。多くのベンチマークでCortex-A8に勝るという結果が出ている。しかし、電力は60%も低い」とARM TechconでCortex-A7の説明をしたBrian Jeff氏(Product Manager, ARM)は語る。


Cortex-A7の効率性とフットプリントミドルレンジ向けARMコアの消費電力比較

 ラフに言えば、iPhone 3GS/4クラスの性能を、ローエンドの携帯電話のCPUの消費電力とコストで実現できることになる。また、Cortex-A7のコストは非常に安いため、100ドル以下のローエンドスマートフォンでもデュアルコア化が可能だ。今年(2011年)のハイエンドスマートフォンに匹敵する性能レンジを、2013年には100ドルに引き下げることができることになる。

 Jeff氏は「Cortex-A7が、フル機能を持ちながら低価格なスマートフォンの市場を開く。2015年には3億4,000万台の低価格スマートフォンが出荷されるという市場予測もある」と指摘する。スマートフォンが年間に数億台ずつ出て、携帯電話を全て置き換え始める時代のためのCPUが、Cortex-A7という位置づけだ。

低価格スマートフォンでデュアルコアを実現ベンチマークの比較

●わずか0.45平方mmのCPUコアサイズ
Cortex-A7のダイサイズ

 Cortex-A7が低コストであるのは、ダイエリアが小さいからだ。Cortex-A7のシングルCPUコアの面積は、28nmでわずか0.45平方mm。Cortex-A7が、どれくらい小さいかは、現在の他のモバイルCPUコアと比べるとわかる。下の図は、同じARMのCortex-A9コア、それにAMDのBobcat(ボブキャット)コア、IntelのAtom(Bonnell:ボンネル)コアを比較したものだ。Cortex-A7が冗談のように小さいことがよくわかる。

ARM Cortex-A9/A7とAtom/Bobcatのサイズ比較
PDF版はこちら

 もっとも、この図は公平なチャートではない。Cortex-A9とBobcatは40nmプロセスで、IntelのBonnellは45nmと、プロセス世代が揃っていないからだ。また、Cortex-A9はデュアルコア構成で、他のコアはシングルだ。BobcatとBonnellはL2キャッシュも含んでいる。これを、もう少しわかりやすくしたのが下の図だ。

CPUコアのみのサイズ比較
PDF版はこちら

 同じプロセス技術に揃えるなら、BobcatとCortex-A9のコアのサイズは半分になり、Bonnellのサイズは半分よりさらに小さくなる。しかし、それでもCortex-A7のサイズには遠く及ばないことがわかる。Cortex-A9を28nmに移行しても、Cortex-A7より2.5~3倍のサイズのコアになると推定される。x86系CPUコアでは、今のところサイズでは太刀打ちしようがない。

 これを搭載デバイスで比べると、一番下のBonnellはこれまでのネットブック、上から2つ目のCortex-A9は現在のハイエンドスマートフォン、そしてCortex-A7は2013年のローエンドスマートフォンとなる。現在のスマートフォンのチップは、性能を上げるために大型化しておりコストが上がる傾向にあるが、Cortex-A7ではそれをリセットできる。

●効率を追求したCortex-A7のパイプライン

 Cortex-A7が、小さなダイで、比較的高いパフォーマンスを実現できる理由を、ARMは効率の高いマイクロアーキテクチャを開発したことだとしている。

 Cortex-Aファミリは、ローエンドのCortex-A5が1命令デコードでインオーダ実行、現在のミッドレンジのCortex-A8は2命令デコードでインオーダ実行、現在のハイエンドのCortex-A9は2命令デコードでアウトオブオーダ実行、来年(2012年)のハイエンドのCortex-A15は3命令デコードでアウトオブオーダ実行となっている。インオーダ実行よりアウトオブオーダ実行の方がパフォーマンスは高くなるが電力効率は落ちる。デコード命令数が増えるほど1クロック当たりのパフォーマンスは高くなるが、やはり電力効率は落ちる。

 Cortex-A7は限定された2命令デコードでインオーダ実行のパイプラインを取る。2命令デコードでインオーダという点はCortex-A8と同じだが、Cortex-A7は限定された2命令デコードだ。基本のアーキテクチャの複雑度的には、ローエンドのCortex-A5より複雑だが、Cortex-A8より簡素となっている。

Cortex-Aファミリのアーキテクチャ
PDF版はこちら

 しかし、内部のパイプラインを見ると、実際にはCortex-A7とCortex-A8では、大きく異なっていることがわかる。下がCortex-A7のパイプラインのスライドと、そこから図に起こしたものだ。整数演算でのステージ数は8ステージ。実行ユニットは、整数ALUと乗算ユニット、浮動小数点(FP)/NEON SIMD(Single Instruction, Multiple Data)演算ユニット、ロード/ストアユニット、そしてデュアルイシュー(2命令発行)時の実行ユニットとなっている。「デュアルイシューパイプラインはコモンなシンプル命令しか実行できない。実際にはデュアルイシュー時だけに使われるユニットではなく、通常のパイプラインで使う機能も含まれる」とPeter Greenhalgh氏(Cortex-A7 & big.LITTLE Technical Lead, ARM)は説明する。

Cortex-A7のブロックダイアグラム
PDF版はこちら
Cortex-Aシリーズのパイプライン

 ARMは、Cortex-A7のデュアルイシューの思想について、次のように説明する。

 「Cortex-A5から大きく拡張された点はデュアルイシューだ。Cortex-A7のデュアルイシューでは、複雑なペナルティチェック機構を持たないように設計した。デュアルイシューが、電力消費を増やしてしまうのは、チェック機構のためだからだ。そのため、Cortex-A7のデュアルイシューは、Cortex-A8のような完全なデュアルイシューではない。限定されたものとなっている」(Jeff氏)「全てをデュアルイシューできるわけではない。2つ目のデコーダはデータプロセッシング分岐などしかデコードできない」(Greenhalgh氏)

 デュアルイシューを限定することで、命令ユニット回りを簡素化し、電力効率を上げていると言う。だが、Cortex-A8と比べると大きく拡張されている部分もある。下はCortex-A8のパイプラインだ。

Cortex-A8のパイプライン
PDF版はこちら

 Cortex-A7をCortex-A8と比べると、まず、目立つのはSIMD演算のNEONパイプラインがオプション扱いではなく、パイプラインに完全に取りこまれたことだ。ただし、NEONユニットは64-bit SIMDで、命令セット上のSIMD幅の半分に抑えられたままだ。これは実装面積とのトレードオフだ。

 分岐予測も相対的に強化されている。分岐予測を強化すると、予測ミスが減るため、結果として省電力化に役立つとARMは説明する。また、命令デコーダと命令イシューの間には命令キューが設けられ、デコードまでのフロントエンドのパイプラインが実行パイプラインと分離されている。

 ロード/ストアのデータパスは64-bitで、NEONユニットと見合う幅に拡張されている。また、L1データキャッシュには、x86 CPUで見られるようなプリデコーダが加えられた。その一方で、L2キャッシュコントローラを簡素化するなど、ダイを小さく保つための工夫も加えられている。メモリ回りでは物理メモリアドレスをキャッシュする「Translation Lookaside Buffer (TLB)」が強化された。TLBについては、上位のはずのCortex-A9が128エントリなのに、Cortex-A7は256エントリと倍増されている。「TLBの強化はWebブラウジングのような実ワークロードでの性能を上げる。ドライストーンなどのベンチマークではこの違いは出ないが、現実のアプリケーションでは効果を発揮する」とJeff氏は説明する。

内蔵のL2キャッシュやTLBの強化などL1データキャッシュの改善

●ハイエンドスマートフォンのバッテリ駆動時間を延ばす

 Cortex-A7は、命令セットでは最上位のCortex-A15と互換だ。バーチャライゼーション支援や40-bitメモリアドレッシングといったローエンドに必要がないような機能も実装されている。また、システムバスは最新の「AMBA4」に対応し、コヒーレンシ維持のためのスヌープコントロールユニットも備える。こうした機能は、Cortex-A15とCortex-A7を組み合わせるbig.LITTLEプロセッシングのためのものだ。

 big.LITTLEについては改めてレポートするが、高パフォーマンスであるため電力効率が落ちるCortex-A15を補完するための仕掛けだ。スマートフォンの稼働時間のほとんどを占める低負荷時に、稼働するCPUコアをCortex-A15からCortex-A7に切り替えることで、バッテリ駆動時間を延ばすことを目指す。

 基本のコンセプトは下のスライドのようにシンプルだ。負荷の高い処理はCortex-A15コアを使い、負荷が減るに従って電圧と周波数を落として行く。そして、一定レベルまでパフォーマンスを落としたら、その段階で、より電力の少ないCortex-A7へと切り替える。

big.LITTLEの仕組みCortex-A7とA15の性能/消費電力比較

 現在の、高パフォーマンススマートフォンの最大の悩みは、バッテリ駆動時間だ。進化する度に、バッテリ駆動時間が短くなる傾向にある。Cortex-A7は、この問題にも解決策を提示できるとARMは説明する。スマートフォンのSoCには、Cortex-A15に加えてCortex-A7も載せる必要があるが、Cortex-A7のコアサイズが極めて小さいため、現実的なアイデアとなる。

Cotex-A15のブロックダイアグラム
PDF版はこちら