後藤弘茂のWeekly海外ニュース
来年以降のスマートフォンの主役となるCPU「Cortex-A12」の位置付け
(2013/11/11 06:00)
3つに分化したモバイル市場
スマートフォンやタブレットの市場は3つに分化しつつある。ハイエンドとミッドレンジ、そしてエントリーレベルの3階層だ。ARMはこうした階層分化に合わせて、CPUコアとGPUコアも階層化しつつある。例えば、従来は2階層だったCPUファミリの構成を、異なる電力と性能とコスト「PPA(Power, Performance and Area)」のバランスの3階層へと深化させつつある。現在のラインナップで言えばCortex-A15がプレミアム、Cortex-A9がミッドレンジ、Cortex-A7(少し前はCortex-A8シングルコアなど)がエントリーレベルとなる。
これら3つの階層は、デバイスの価格レンジが異なる。プレミアムは400ドル前後から上の価格帯の市場、ミッドレンジは200~350ドル前後までの価格帯の市場、そしてエントリーレベルは150ドル前後から下の市場だ。そして、現在伸びているのは下の2つの階層だと言う。
もっとも、この価格帯の話は「ん?」と感じる人も多いかも知れない。日本や米国など多くの国でキャリアの2年縛りによる割賦販売でプレミアム価格帯のスマートフォンでも低い初期費用で手に入るからだ。そのため、プレミアムセグメントの製品が支配的だ。しかし、ARMが示しているのはあくまでも端末自体の価格ラインだ。そして、割賦販売が取りにくい国や地域では、そのために価格が重要な意味を持つ。そうした国や地域では、スマートフォンやタブレットが普及するに従って、低価格のミッドレンジとエントリーレベルが伸びる傾向が強まっている。
デバイスの価格帯が異なるなら、製造コストも異なり、チップも異なる。具体的には、それぞれの価格レンジで、デバイスに搭載されているモバイルSoCのダイサイズが異なっている。ARMによるとプレミアムデバイスのSoCは80~100平方mm程度かそれ以上、ミッドレンジのSoCは50~80平方mm、エントリーレベルのSoCは25~40平方mmとなる。
グレードによって異なるCPUコアサイズ
SoCのダイサイズが異なると、SoCに載せることができるCPUコア部分のダイ面積も異なって来る。ARMはマルチプロセッサ構成のCPUコアとL2キャッシュの合計面積で、ミッドレンジなら5~10平方mmが適切と見積もっている。これがプレミアムになると10平方mm台で20平方mmに近いレンジまで許容される。しかし、エントリーレベルになると、CPUの面積は2~5平方mmに抑えなければならない。大まかに言って、エントリーレベル→ミッドレンジ→プレミアムで、CPUコア+L2の面積は倍々に増える。SoCダイ全体の十数%をCPUに割く計算だ。
CPUに割くことができるダイ面積が限定されるとCPUコアのサイズも決まってくる。クアッドコア構成なら、プレミアムのCPUコアの実装面積は2~3平方mm台、ミッドレンジは1~1.5平方mm程度、エントリーレベルは0.5平方mm前後となると推測される。下のCPUコアの実装の例を見るとその推測の範囲に収まっていることがわかる。
ダイ面積とともにCPU部分の消費電力も制限される。マルチコアCPUプラスL2キャッシュの電力消費の目安はプレミアムで750mW、ミッドレンジで400~450mW、エントリーレベルで150mWのレンジだという。
CPU面積の面積と電力が決まると、CPUコア種も必然的に決まってくる。来年(2014年)のラインナップなら、プレミアムがCortex-A15かCortex-A15とA7のbig.LITTLE構成、エントリーレベルがCortex-A7のデュアルまたはクアッド構成、そしてミッドレンジを担うのが新しい「Cortex-A12」だ。これは、64-bit化が進み始めるとプレミアムがCortex-A57とA53、エントリーレベルにもCortex-A53が部分的に浸透する。しかし、ミッドレンジはその段階でもCortex-A12が担う。
Cortex-A9以降に経験値を高めたARM
Cortex-A9はスマートフォンやタブレットの代表的なCPUコアとして過去3年間市場を席巻してきた。ARMのStephane Brochier氏(Consultant Engineer, Processors Division, ARM)によると「今年(2013年)末までにCortex-A9の出荷ユニット数は10億に達し、コアIPライセンスシの数は60社に達する」という。使われている分野もモバイルだけでなく、ネットワーク機器、サーバー、デジタルTVやホームゲートウェイなどの家電、産業用、車載など多岐に渡る。一言で言えば成功したコアだ。
ARMはCortex-A9の成功の原因を、2008年に半導体メーカーに提供を始めたコアとしては先進的な設計だったためだと分析する。モバイル向けのCPUコアのほとんどがインオーダー実行(Cortex-A8など)だった時に部分的とはいえデュアルイシューのアウトオブオーダー実行を採用。4コアまでのマルチコアもサポートし、当時のモバイルCPUとしては優れた性能を達成しながら、電力とダイ面積も抑えた。
しかし、2008年にリリースしたCortex-A9は、5年後の今は、決して最新のモバイルCPUアーキテクチャではなく、現在のモバイル市場の状況にも適応しているとは言い難い。そのため、ARMはCortex-A9と同レベルで、アーキテクチャを刷新したCPUコアを開発することにした。それがCortex-A12だ。ARMのJames Bruce氏(Lead Mobile Strategist,ARM)はCOMPUTEX時に次のように語っている。
「Cortex-A9は設計をスタートしたのが2006年だった。当時の当社のエンジニアリングは、まだ十分な経験に裏打ちされていなかったと言えるかも知れない。しかし、Cortex-A9で実際にコードを走らせて、多くの分析結果を得て、改良すべき点を見つけ、そのうちのいくつかをCortex-A9r4に盛り込んだ。メモリサブシステムを改良するなどのチューニングだ。Cortex-A12は、そうしたCortex-A9の経験を経て、完全に新設計した」。
Cortex-A9は、ARMにとって最初のアウトオブオーダー実行コアで、さまざまな面で、完全ではなかった。Cortex-A12は、Cortex-A9と同クラスのミッドレンジデバイス向けのCPUコアだ。しかし、設計は完全に一新され、Cortex-A9に対して性能を40%以上もアップさせた。「同じ消費電力の枠の中で、ほとんどのモバイルワークロードでCortex-A9に対して40%かそれ以上の性能向上を達成した。性能の向上に寄与しているのは、おもにIPC(Instruction-per-Clock)の向上だ。動作周波数は、Cortex-A9とほとんど変わらない」とARMのBrochier氏は言う。Cortex-A9の5年も古い設計を、フロムスクラッチで設計し直せば40%も性能を上げる余地があったということになる。
32-bitのミッドレンジコアに空いた穴を埋める
実際、ARMのCPUコア設計は、Cortex-A15のあたりから大きく変わった。より高性能指向の本格的なアウトオブオーダー実行CPUマイクロアーキテクチャになった。言ってみれば、Cortex-A9は性能の高いCPUコアのための習作で、Cortex-A15からその経験が活かされたマイクロアーキテクチャへと進化した雰囲気がある。ARMのCPUコアは、Cortex-A9とA15で飛躍があり、世代が分けられる。そのため、ARMはミッドレンジCPUで、Cortex-A15以降と同じ世代のマイクロアーキテクチャのCPUを必要としていた。また、命令セット面でもCortex-A15と同じ世代のミッドレンジコアが欠けていた。
Cortex-A9と後続のCortex-A15/A7は、同じARMv7命令セットアーキテクチャベースだが、Cortex-A15/A7では命令と機能が拡張されている。新たに1TBまでの物理メモリアドレッシング「Long Physical Address Extensions (LPAE)」とハードウェア仮想化のサポートが加わった。また、整数割り算などの新しい命令も加えられた。そのため、同じARMv7でも、Cortex-A9とCortex-A15で、部分的に互換性が取れない部分が発生していた。
ARMのCPUコアIPのラインナップを見ると、こうした事情がよくわかる。ARMはプレミアムとエントリーレベルでは、命令セットが拡張されマイクロアーキテクチャも新しいCPUコアを持っている。しかし、ミッドレンジは命令セットもマイクロアーキテクチャも古いCortex-A9のままだった。ARMは、ARMv7拡張アーキテクチャで、もっと発展したマイクロアーキテクチャのCPUをミッドレンジに必要としていた。その答えがCortex-A12というわけだ。
もっとも、ARMのロードマップには、依然として抜けもある。Cortex-A12の少し前に登場するプレミアムCPUのCortex-A57とエントリーレベルCPUのCortex-A53は、64-bit命令を含むARMv8アーキテクチャであるのに、それより遅いCortex-A12が32-bitのARMv7アーキテクチャベースだ。そのため、現状ではミッドレンジにだけARMv8 64-bitアーキテクチャのCPUコアが抜けている。
これには2つの理由がある。まず、Cortex-A53はエントリーレベルCPUだが、それ以上にCortex-A57とbig.LITTLEで組み合わせるCPUコアであることだ。そのため、プレミアムのCortex-A57と同時にA53も必要になる。それに対して、ミッドレンジCPUはbig.LITTLEでプレミアムCPUと組み合わせる必然性がないため、ARMv8に揃える必要がない。
もう1つは、すでに説明したようにCortex-A15と同世代のコアがミッドレンジに欠けていることだ。そのため、ARMは、まずARMv7拡張版のCPUを出し、次に64-bit ARMv8版を出すと見られる。ARMは、モバイルでは64-bitはハイエンドから段階的に浸透すると考えており、そのためにミッドレンジを後回しにしたと推測される。ただし、ソフトウェアベンダー側はコードベースをできるだけ均質にしたいはずで、ARMの思惑からはずれるかも知れない。
NEON SIMDエンジンなどを完全に統合
また、Cortex-A12は、旧来の組み込み用途という枠からも抜け出した。Cortex-A9では依然としてオプション扱いだったFPU/NEON SIMD(Single Instruction, Multiple Data)エンジンのパイプラインが完全に統合された。「Cortex-A12とCortex-A9の最大の違いの1つは、従来はオプションだったNEON SIMD/VFPv4 FPUが統合されたことだ。また、L2キャッシュの管理も完全に統合された」とARMのBrochier氏は説明する。
ARMがNEONなどを分離したオプションユニットとしたのは、Cortex-A9が組み込み市場で使われる可能性を意識してのことだった。また、Cortex-A9を開発していた2007年頃の状況では、浮動小数点/SIMD演算の性能がモバイルで重要になることを想定していなかった。ARMのBruce氏は次のように語る。
「正直に言えば、6年前は、スマートフォンでは浮動小数点演算性能はそんなに重視していなかった。また、組み込みに使われる場合も想定して、NEONをセパレートユニットにした。しかし、状況は変わり、現在ではすでに浮動小数点演算ユニットとNEONは、標準のフィーチャになったと思う。その理由の1つは、ソフトウェアベースが完全に変わり、多くのソフトがNEONコードを使うようになったことだ」。
ソフトウェア側の状況の変化が、CPUマイクロアーキテクチャの変化も促した。