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

バッテリ駆動時間を延ばすARMの「big.LITTLE」技術



●2種類のCPUコアを切り替えるARMの省電力技術

 スマートフォンやタブレットのCPUのバッテリ駆動時間を延ばすARMの新技術が「big.LITTLE Processing」だ。比較的大型の高パフォーマンスCPUコア(big)と、小型で低消費電力のCPUコア(LITTLE)を組み合わせて省電力化を図る。低負荷時の電力を最低限に抑えながら、高負荷時にも十分なパフォーマンスを発揮できるようにする。ARMは自社のCPUコアを組み合わせることを前提としているが、アイデア自体はx86を含めて幅広く応用できそうだ。

性能とバッテリへの要求は同時に増している big.LITTLE Processingの概要

 現在のモバイル機器は、電力危機にある。多くのユーザーが感じている通り、モバイル機器のパフォーマンスが上がるにつれてバッテリ駆動時間はじわじわと短くなりつつある。モバイル機器のバッテリ駆動時間が短くなる主因の1つは、プロセッサの電力消費が増えていることだ。通信系デバイスの電力増大も大きな原因だが、世代毎に倍々に増えるCPUとGPUの規模が消費電力を増やしているのは確実だ。

 モバイルCPUで圧倒的な市場シェアを持つARMにとって、この問題は深刻だ。ARMは、これまで小さなCPUコアによる、圧倒的な省電力性を武器に伸びてきた。しかし、スマートフォンやタブレットのパフォーマンス要求に応えるため、プロセッサパフォーマンスを伸ばすに連れて、省電力性の利点は薄れつつある。シングルスレッド性能を伸ばすために、CPUコアはどんどん複雑になり、トランジスタ数が増えているからだ。

 その一方で、ユーザーは従来通りか、それ以上のバッテリ駆動時間を期待する。しかし、バッテリ容量は1年に11%しか向上しない。パフォーマンスアップに見合うだけのバッテリ容量の増加は見込めない。そのため、プロセッサパフォーマンスとバッテリ駆動時間はトレードオフの関係になってしまっている。

●ヘテロジニアスマルチコアによって省電力化
性能と効率を両立

 この問題を解決するために、プロセッサベンダーはさまざまな技術を編み出してきた。その最新版がbig.LITTLEだ。big.LITTLEの実態は、ヘテロジニアス型のマルチコア構成で、動的にタスクをマイグレーションする技術だ。big.LITTLEの最初の実装は、ハイパフォーマンスな次世代コアCortex-A15と、低消費電力の次世代コアCortex-A7の組み合わせとなる。ARMはその有効性に自信を持っている。

 「高いパフォーマンスと高い電力効率の両方を実現することは、コンピュータにとって聖杯(究極の目的)だ。ヘテロジニアスマルチプロセッシングでそれを実現しようという試みは、数十年間に渡ってなされて来た。big.LITTLEで実用的になった」とARMのPeter Greenhalgh氏(Cortex-A7 & big.LITTLE Technical Lead, ARM)は説明する。

ARM Cortex-A7ブロックダイヤグラム
ARM Cortex-A15ブロックダイヤグラム
big.LITTLEのシステムアーキテクチャ

 問題の根源は、モバイルCPUに要求されるパフォーマンスレンジが“広がった”ことにあるという。アプリケーションのためにより高いパフォーマンスが望まれる一方、パフォーマンスをあまり必要としないタスクも多数残されている。そして、バッテリ駆動時間のために、ARMのコアの中でも低消費電力のコアのレベルの電力が求められている。

 現在の問題は、単一のCPUアーキテクチャでは、この2つの要求に同時に答えることができない点にある。そこで、big.LITTLEでは、2種類の異なるCPUコアを組み合わせることで、この問題を解決する。

 「big.LITTLEプロセッシングは、ハイパフォーマンスCPUと高電力効率CPUのコヒーレントな組み合わせだ。それによって、これまでよりずっと広いパフォーマンスレンジをカバーし、より高いパフォーマンスから、ずっと高い電力効率の両方を達成できる」とCortex-A7を担当するBrian Jeff氏(Product Manager, ARM)は説明する。

 具体的には下の図のようになる。高パフォーマンスコアCortex-A15と、低消費電力コアCortex-A7の組み合わせだ。Cortex-A15とCortex-A7は、どちらも負荷に応じて動作周波数と電圧を遷移させる「DVFS(Dynamic Voltage and Frequency Scaling)」を行なう。これは、IntelやAMDのCPUと同じだ。big.LITTLEがユニークなのは、2種類の異なるパフォーマンスレンジのCPUで、連続的にパフォーマンス曲線をカバーする点だ。

big.LITTLEの性能と電力の領域 各用途に対応するプロセッサ

●単一プロセッサアーキテクチャの弱点をカバー

 上の図のオレンジの曲線は高パフォーマンスのCortex-A15のDVFS曲線だ。縦軸が電力で、横軸がパフォーマンス。Cortex-A15はARMコアとしては非常にパフォーマンスが高いが電力消費も大きい。そして、DVFSによって周波数と電圧を下げても、一定のレベルまでしか電力が下がらない。

 それに対してブルーの曲線のCortex-A7は非常に電力効率が高い。Cortex-A15と同レベルのパフォーマンス時でも電力は少なく、Cortex-A15では達成できない超低電力までスケールダウンすることができる。その代わり、Cortex-A7ではCortex-A15のパフォーマンスレンジはほとんどカバーできない。

 big.LITTLEのタスクをシフトするモードでは、Cortex-A15の最低クロックまでDVFSまで下がると、Cortex-A7を起動してタスクをシフトする。Cortex-A15上で走っていたOSやアプリケーションは、そのままCortex-A7へと移る。OS側から見ると、同じCPU上で異なる電圧と周波数のポイントへとシフトすることと、ほとんど変わらない。

big.LITTLEタスク遷移のユースモデル 両者の良いとこ取りを実現

 Cortex-A7へタスクを移すとCortex-A15をシャットダウンしてしまうため、電力消費はCortex-A7分だけとなる。CPUのアクティブ時間の90%近くはCortex-A7が稼働するため、平均の電力消費は抑えられるというわけだ。

 「単一のプロセッサアーキテクチャでは、高パフォーマンスと高電力効率の両方のポイントに到達できない。そのため、どちらかを妥協するしかない。しかし、プロセッサを、高性能コアと高効率コアの2つに分けると、妥協する必要がなくなる。2つのCPUが、異なるパフォーマンスレンジをスケールするからだ。例えば、Cortex-A15は一定ポイントから下へはスケールできないが、そのレンジはCortex-A7がカバーできる」(Greenhalgh氏)。

big.LITTLEと1アーキテクチャの比較

 このコンセプトを図にすると右のようになる。グリーンの曲線は、そこそこのパフォーマンスとそこそこの電力効率をカバーできるCPUアーキテクチャだ。この場合の問題は、Cortex-A15ほど高いパフォーマンスレンジをカバーすることができなければ、Cortex-A7ほど高い電力効率も達成できない点にある。パフォーマンスと電力のどちらについても妥協している。

 ところが、図のようにbig.LITTLEで2つのプロセッサアーキテクチャに分けると、単一アーキテクチャよりも高いパフォーマンスと低い電力のどちらもカバーできる。つまり、big.LITTLEでは、カバーできるパフォーマンスと電力のレンジを広げることができる。

●広がるパフォーマンスレンジの要求に応える

 big.LITTLEのコンセプトが有効なのは、現在のクライアントコンピュータのユーセージスタイルでは、パフォーマンスニーズの振れ幅が非常に大きいからだ。極端な高パフォーマンスと、極めて低いパフォーマンスの両極へとばらつきが広がっている。

 下のスライドはARMが見積もる典型的なヘビースマートフォンユーザーのユーセージと、その結果のCPU稼働率だ。現在のスマートフォンの主流CPUであるCortex-A9相当となっている。

 このチャートで700MHzがbig.LITTLEの分岐点に相当するという。700MHz以上がbigのCortex-A15、700MHzより下がLITTLEのCortex-A7のパフォーマンスレンジとなる。すると、ユーザーの使用時間のほとんどを占めるディープスリープを除くと、bigのCortex-A15が必要なアクティブCPU時間はわずか12%で、残りの88%はLITTLEのCortex-A7になると言う。

 アプリケーション毎のCPU負荷をさらに細分化したのが次のスライドだ。これを見ると、負荷が高いのはWebブラウジングで、他はそれほどの負荷でないことがわかる。つまり、多くのアプリケーションでは、大半の処理をLITTLE側のCortex-A7コアで対応できることになる。

典型的ヘビーユーザーの1日の利用内訳 プロセッサの動作周波数とその内訳 用途毎の周波数の内訳

 意外なのはこのチャートのゲームの例でのCPUの負荷が低いことだが「ゲームではGPUの方の負荷が非常に高く、その間はCPUがアイドルになる場合が多いから」(Greenhalgh氏)と言う。もちろんこの条件は、ゲームによって大きく異なる。実際に、現在スマートフォンのパフォーマンスを押し上げているのはゲームとWebブラウジングだという。

 Webブラウジングでは、レスポンスタイムを短くしてユーザーの快適度を上げるためにはパフォーマンスが重要だ。しかし、Webブラウズは負荷は高いものの「いったんWebページがレンダリングされてしまうと、後の時間のパフォーマンスニーズは低くなる」(Jeff氏)ため、実際の場面では、アイドルを間に挟むことが多い。ただし今後、モバイルのWebブラウザのHTML5への対応が進むと、Webブラウザのアプリケーションプラットフォーム化が進み、負荷は高くなると見られる。

●Intelの現在の対応策はニアしきい電圧回路技術

 概要を見ると、big.LITTLEは付け焼き刃のアイデアではなく、プロセッサのパフォーマンスレンジを広げるという現在の命題に対する、抜本的な対応策であることがわかる。bigとLITTLEの間の遷移が、充分迅速に行なわれる(処理が停止するブラックアウトタイムは20μsだが、その前後にウォームアップタイムがある)と評価されれば、有効な手段として普及する可能性がある。

 また、このアイデアの応用は、ARMアーキテクチャだけに限られるわけではない。原理的には、他のCPUアーキテクチャでも使うことができる。ただし、ARMの場合は、もともとCPUコアが非常に小さく、その中でも特にCortex-A7が小さいために、余計なコアを載せることも比較的容易という利点がある。Intelの場合は、AtomコアであってもCortex-A7よりかなり大きいため、同じことをやればダイ面積のコストがかさむ。

ARM Cortex-A7/A9とBobcat、Atomの比較

 その代わり、Intelは現在、ハイエンドでは「近しきい電圧(Near-Threshold Voltage)」技術によって、CPUコアの動作電圧をしきい電圧近くまで落としても動作できるようにしようとしている。それによって、動的な電圧と周波数の遷移を、より低パフォーマンスかつ高電力効率の点まで落とし込むことが可能になる。下の概念図がそれだ。

Intelのパワーパフォーマンス戦略

 Intelの近しきい電圧動作技術も、big.LITTLEと同じように、プロセッサのパフォーマンスレンジを広げる試みだ。こうしてみると、プロセッサの省電力技術は、パフォーマンスレンジをいかに広げて、省電力性と高パフォーマンスを両立させるかという点が焦点になりつつあることがわかる。