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

ARMが発表した新設計のミッドレンジCPU「Cortex-A12」

メインストリーム市場に新しいCPUコアを開発

 ARMは、台湾で開催中のCOMPUTEXで、新CPUコア「Cortex-A12」を発表した。Cortex-A12は、メインストリームの市場を狙うCPUコアで、現在のCortex-A9と似た位置づけとなる。プレミアム向けのコア「Cortex-A15」と、エントリレベル向けのコア「Cortex-A7」の間を埋めるコアだ。下のスライドでは中央のブルーの部分がCortex-A12の市場となる。一言で言えば、中程度のパフォーマンスで、中程度のコアサイズと消費電力の、お手頃コアだ。位置づけ的には、現在のCortex-A9の後継と見ることができる。

Cortex-A12の位置づけ
Cortex-A12の概要
Noel Hurley氏

 もっとも、Cortex-A9と同じレンジを狙うが、CPUの設計自体はCortex-A9とは、全く異なるという。ARMのプロセッサ部門のNoel Hurley氏(VP Marketing & Strategy, Processor Division, ARM)は次のように説明する。

 「Cortex-A12は、Cortex-A9とは異なる完全に新しい設計(ground up)だ。Cortex-A9の最新リビジョンに対して、同クロック(clock to clock)で、約40%のパフォーマンス向上を実現する。パフォーマンスが上がる要因の1つは、まずメモリシステムを改良したこと。それから、Cortex-A9とは異なるパイプラインに再設計したことだ」。

 また、命令セット&モードもCortex-A9とは異なる。Cortex-A12は、命令セット&フィーチャ的にはCortex-A15相当となる。つまり、ARMv7A命令セットに、バーチャライゼーションと40-bitアドレッシングのLarge Physical Address Extension(LPAE)を加えたものになる。ソフトウェア側から見た場合、Cortex-A12とA15、そしてA7は互換ということになる。また、システムバスアーキテクチャでも、Cortex-A12はA15/A7と互換になる。

40-bitアドレッシングをサポートする

 これらの互換性は、big.LITTLEの条件を満たすことでもある。big.LITTLEでは、大型でハイパフォーマンスのbigコアと、小型で省電力のLITTLEコアを組み合わせる。しかし、現在の制御では、ソフトウェア側からは同じ種類のCPUコアであるように見せかけて、OSのスケジューラの下層でコアをスイッチしている。そのため、CPUの命令やモードは互換である必要がある。

 従来のCortex-A9はCortex-A7やA15とは互換ではないため、big.LITTLE構成を取ることができなかった。しかし、Cortex-A12では、命令&モードが互換であるため、big.LITTLEの構成にすることができる。Cortex-A12とCortex-A7のbig.LITTLEを取ることが可能だ。そのため、ARMはCortex-A12をbig.LITTLE対応と謳う。

メインストリームの市場で望まれているコア

 もっとも、Cortex-A12においては、big.LITTLEは付け足し要素に過ぎない。最大の狙いは、メインストリームの市場向けのCPUコアをリフレッシュすることにある。ARMはCortex-A15の投入で、パフォーマンスレンジを上に伸ばした。そして、Cortex-A7の投入で、より低い価格レンジの市場もカバーできるようにした。だが、ミッドレンジのパフォーマンス帯はCortex-A9のままだった。ここに新コアを投入することでテコ入れをすることがCortex-A12の主目的と見られる。ARMのNoel Hurley氏は次のように語る。

 「我々は、Cortex-A15によって、より高いパフォーマンスを提供できるようになった。しかし、我々の顧客は、今も多くのCortex-A9製品を抱えている。そして、我々のパートナーは、それらの製品のリフレッシュも我々に望んでおり、それに応える必要があった。

 また、同時に、モバイルでのメインストリーム市場自体が拡大をしているという状況もあった。拡大する市場にフィットする製品が必要だった。そこで、我々は、究極のパフォーマンスと、メインストリーム市場で顧客にかかっているコスト圧力の間で、バランスを取ったソリューションを用意することにした。それがCortex-A12だ」。

 Cortex-A15だとパフォーマンスは高いもののコストも高い。しかし、Cortex-A7ではコストは低いもののパフォーマンスが十分ではない。そこで、両者の間を取ったソリューションとして、そこそこのパフォーマンスとコストのCortex-A12を提供するというストーリーだ。そして、拡大しつつあるメインストリームの市場が、そうした製品を求めているとする。下は2015年のモバイルデバイスの市場予測で、ブルーの200〜350ドルのミッドレンジ層が拡大する予想となっている。

Cortex-A12が狙う価格帯
ミドルレンジ向けという位置づけ

 Cortex-A9を継続せずに、Cortex-A9をリフレッシュする理由は明瞭だ。Cortex-A9も導入から時間が経ち、さまざまなアーキテクチャ上の難点が顕在化しており、またA15/A7との互換性も将来的には問題になる可能性があるからだ。

マイクロアーキテクチャに大きく手を入れるCortex-A12

 そうした理由から、Cortex-A12では、Cortex-A9の単なるリビジョンアップではなく、新アーキテクチャを取った。ARMが言っているように完全に新しい設計かどうかはわからないが、Cortex-A9ベースだとしてもアーキテクチャに大きく手を入れるようだ。それによって、同クロック時に40%のパフォーマンスアップを実現する。

 ARMは、まだ詳細は明らかにしていないが、いくつかのヒントは出している。

 まず、ARMが指摘したのはメモリアクセスだ。これは、SoC(System on a Chip)のメモリインターフェイス回りのことではなく、CPUコアのロード/ストア回りのアーキテクチャだ。実は、Cortex-A9はメモリパフォーマンスが非常に悪く、それがパフォーマンスのボトルネックの1つになっていた。「メモリシステムについては、多くの作業を行なった」とHurley氏は語る。

 そもそも、Cortex-A9の命令発行ポートの構成は、非常に制約が強く、例えば、浮動小数点/SIMD(Single Instruction, Multiple Data)演算パイプと、ロード/ストアのアドレス生成パイプが同じ命令発行ポートに配置されている。もっとも、SIMD演算はダブルパンプなので、SIMD演算中は2回に1回はポートが空くため、ロード/ストアが実行できる仕組みにはなっている。Cortex-A12では、命令ポートからロード/ストアユニットに至るまでの部分に大きく手が入ると見られる。

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

 また、Cortex-A9では浮動小数点/SIMD演算パイプはアウトオブオーダ実行になっておらず、インオーダ実行のままだ。これもCortex-A9の難点の1つだが、Cortex-A12ではこの部分も拡張される。「Cortex-A12は完全なアウトオブオーダ実行パイプラインになる。Cortex-A9では部分的にアウトオブオーダ実行だったが、Cortex-A12は違う」ととHurley氏は言う。

 Cortex-A12はCortex-A9に対して同クロックでも性能が上がるとARMは主張する。しかし、Cortex-A12は、Cortex-A9よりパイプラインも深くなっており、クロックも上がる。Cortex-A9のパイプラインは、整数演算で9ステージだった。それに対してCortex-A12では11ステージになるとHurley氏は説明する。しかし、Cortex-A15の15ステージよりはずっと短く、その分、動作クロックの上限も低くなり、電力消費は少なくなる。ステージ間のラッチ回路の電力消費が減る上に、分岐予測ミス時にロスする命令数などのムダも減る。下は左がCortex-A9、右がCortex-A15のパイプラインだ。Cortex-A12はこの中間程度になる。

Cortex-A15のパイプライン構成
PDF版はこちら

 Cortex-A12では、このようにCPUマイクロアーキテクチャの各所に手が入ると見られる。しかし、依然として2命令デコードのCPUであり、3命令デコードのCortex-A15よりはずっと小規模となる。ポジショニングとしてはCortex-A9のラインだ。

メインストリームの64-bit化はまだ先と判断

 ARMは、もともとのロードマップにはCortex-A12がなく、Cortex-A9がしばらく継続することになっていた。しかし、ARMの顧客の一部はCortex-A12のような製品を望んでいた。実際に、アーキテクチャルライセンスでCortex-A9を、Cortex-A15互換となるように拡張しようとしていたメーカーもある。Cortex-A12は、そうした顧客の声に応えたCPUコアでもある。

 しかし、傍目から見てもCortex-A12の投入は時期がずれている。Cortex-A12のような製品は、本来なら、Cortex-A15やCortex-A7と同時期かそれほど間を置かずに提供されていなければおかしい。しかし、ARMは現在「POP(Processor Optimized Packages)」とRTLの提供を始めたところであり、製品は来年(2014年)の中盤から2015年がターゲットだ。

 ところが、ARMは64-bit命令セットを含む新命令セット体系「ARMv8」に対応したbigコア「Cortex-A57」とLITTLEコア「Cortex-A53」を発表し、RTLをOEMに提供している。Cortex-A57/53は来年(2014年)には登場する。しかし、今回発表したCortex-A12は32-bitのARMv7A命令セットのCPUコアだ。ARMは、市場の64-bitへの移行をどう見ているのだろう。

 「我々は、64-bitへの移行はプレミアムエンドから始まると予想している。プレミアム帯の、特にタブレットからスタートして、徐々に下の市場へとなだれ落ちてくると見ている。ただし、64-bitの浸透がどう進展するかについては、我々は今のところ様子を見ている。OSとアプリケーションの対応状況に依存するからで、ソフトウェアが、コンシューマの64-bit化をドライブする。どんなタイミングになるかは、誰も予測ができないだろう」(ARM、Hurley氏)。

 ARMは、64-bitのモバイル市場への浸透については、まだどの程度のペースで進むのか確信が持てていない。そのために、プレミアム帯では32-bitのCortex-A15と64-bitのCortex-A57と2種類を用意して、とりあえず様子を見ている。また、Cortex-A57とbig.LITTLEでペアを組む省電力コアにも64-bitのCortex-A53を同時期に提供する。しかし、メインストリームについては、とりあえずは32-bitのCortex-A12と考えているようだ。

64-bitをサポートするARMv8命令セット

ダイエリアと性能のギャップが大きいCortex-A15とA7

 ARMにとっても、3つのCPU製品のラインを開発・提供するのは、それだけ荷が重いことを暗示している。それでも、ARMは第3のCPUコアを必要とした。その理由はCortex-A15とCortex-A7のギャップがあまりに大きいからだ。下はCortex-A15とA7、A9のコアエリアの比較だ。右端はCortex-A7の単体コア、右から2つ目がCortex-A9コア、中央がCortex-A15コアだ。いずれも同じ28nm世代のプロセスだ。もっとも、Cortex-A7はARMの計算上のダイエリア、Cortex-A9はNVIDIAのTegra 4iでTSMCの28nm HPM、Cortex-A15はNVIDIAのTegra 4で28nm HPLという違いはあるが、大まかには比率は掴めるはずだ。

Cortexシリーズのダイサイズ比較
PDF版はこちら

 見ればわかる通り、Cortex-A7は同じプロセスのCortex-A9の2分1以下、Cortex-A15の6分の1のサイズとなっている。Cortex-A7とCortex-A15では、コアサイズで6倍もの開きがあり、パフォーマンスギャップも極めて大きい。これはCortex-A7が極めてシンプルなインオーダ実行パイプラインになっているためだ。

各コアの性能比較
Cortex-A7のブロックダイアグラム
PDF版はこちら

 これを、これまでのARMのCortex-Aシリーズや、QualcommのKraitと比べると下の図のようになる。まず、明白なのは、Cortex-A15やKraitのクラスのコアを4コア構成にすると、28nmでも実装面積が非常に大きいことだ。40nmプロセスでの主流だったCortex-A9のデュアルコアでは、サイズは5〜7平方mm程度。それが、Samsungの28nmでのCortex-A15、はSRAMエリア込みで19平方mmとなっている。

 これを見ると、メインストリーム向けの製品では、Cortex-A15なら2コアがせいぜいとなる。それでも比率としてはまだ大きい。ところが、Cortex-A9なら4コアでも、各コアが1.x平方mmなので、40nmプロセスのCortex-A9の2コア程度しか食わない。簡単に言えば、40nmでCortex-A9のデュアルコアのSoC(System on a Chip)を設計していたなら、28nmではCortex-A9のクアッドコアが最適なサイズになる。

ARMコアのダイサイズ比較
PDF版はこちら

最初はbig.LITTLEは取られない?

 ARMは、big.LITTLEのコンセプトでプレミアのbigコアとローパワーのLITTLEコアのギャップを維持しようとしている。そのため、必然的に間に大きなギャップが開く。すると、そこを埋めるCortex-A12が必要になるわけだ。

 Cortex-A12はCortex-A15/A7互換であることからbig.LITTLE対応を謳うが、OEMが本気でCortex-A12とCortex-A7のbig.LITTLE構成を取るかどうかは疑問だ。big.LITTLEは、Cortex-A15のパフォーマンスアップと電力消費が大きいために、低負荷時にCortex-A7に落とし込むことに意味がある。パフォーマンスギャップが狭いと、big.LITTLEで得られるパフォーマンスゲインが小さくなるため、big.LITTLEのうまみが薄らぐ。bigコアとLITTLEコアのスイッチにもロスサイクルがある、利点が少ないとロスで相殺されてしまうからだ。

Cortex-A12の推奨構成

 ARMも推奨構成として打ち出しているのは、あくまでもCortex-A12のみのソリューションだ。big.LITTLE対応は、Cortex-A15/A7互換という意味だと捉えた方がいいだろう。ただし、ARMがうまくbig.LITTLEのMP構成のソリューションを軌道に乗せることができれば、話は少し違ってくる。CPUコアを切り替えなしで、全て使えるようになるため、Cortex-A12とCortex-A7の混載も意味を持ってくる。

big.LITTLEのソフトウェアモデル
PDF版はこちら

28nmから20nmをターゲットにするCortex-A12

 Cortex-A12については、28nmプロセスを最初のターゲットにしており、その後20nmに移行するとARMは見ている。そのため、ARMは、Cortex-A12をすぐに使えるように、「POP(Processor Optimized Packages)」をすぐに提供する。POPは、ファウンダリのプロセス毎に設計を最適化したパッケージだ。Cortex-A12については、TSMCの28nm HPMプロセスと、GLOBALFOUNDRIESの28nm SLPプロセスに向けて提供される。

 TSMCの28HPMは、ハイパフォーマンスモバイルの主力プロセスで、他のIPの多くも28HPMでPOPが提供されている。興味深いのは、GLOBALFOUNDRIESでPOPが提供されるのが、モバイル向けのハイパフォーマンスプロセスの28LPHなどではなく28SLPである点。これがファウンダリ側の都合なのか、顧客の要請なのか、まだわからない。

TSMCとGLOBALFOUNDRIES向けにPOPを提供
Intelやファウンダリのプロセスロードマップ
PDF版はこちら

 Cortex-A12で3層のCPU階層を組み立てたARM。市場の拡大に従って、ARMの製品ラインも、ますます拡張されて行く。

(後藤 弘茂 (Hiroshige Goto) E-mail