既報の通り、ARMはCOMPUTEX TAIPEI 2013のタイミングで「Cortex-A12」コアを発表した。前回の記事は専らテクニカルな部分に絞ってレポートしたので、もう少しマーケティング的な部分についてこちらで補足したいと思う。

そもそもCortex-A12を投入すべき理由は何か、というとこのマーケットの伸びが著しいことに起因する。Photo01はSmartphone/Tabletのマーケットの動向予測であるが、ここで注目すべきはミッドレンジ、つまり$200~$350の範囲も馬鹿にできない伸びを示していることだ。実はARMのラインナップでは、ローエンドはCortex-A7とか、もしISAが古くてもよければCortex-A5があり、また将来向けとしては64bitに対応したCortex-A53が既に控えている。一方ハイエンドはCortex-A15が既にあり、更に64bitに対応したCortex-57もある。ところがこのミッドレンジに対応する製品が丁度同社のラインナップからは抜け落ちているという問題があった。

Photo01: このミッドレンジのマーケットの伸びが馬鹿にならない、というのが同社の主張。実際これはまぁ理解できる。

で、このミッドレンジのマーケットにおけるユースケース(Photo02)を見ると、結局のところ現在のハイエンド向け製品で使われているアプリケーションがそのまま移行するという方向性が見えている。加えて言えば、ローエンドは途上国向けとしてある程度機能を絞ることも可能であろうが、ミッドレンジは先進国を含む全世界で、様々なユーザーに使われることを想定しなければならない(Photo03)。

Photo02: これは容易に理解しやすい。たとえばFacebookとかTwitterといったアプリケーションですら、端末の性能向上に合わせて次第に機能が増え、これに伴い処理負荷が増えている現状を考えると、将来のミッドレンジ向け製品は現在のハイエンド向けと同等の処理能力が要求されることになる。

Photo03: サービスがあれば使うのは当然であって、こうしたユーザーに対して「そこそこの性能」を提供できないといけない。

このあたりがPCと違う点である(Photo04)。PCの場合、ハイエンド向けとメインストリーム向け、バリュー向けは原則同じプロセッサで、動作周波数とかキャッシュ容量、有効コア数、機能などを適当に制限する形でセグメント分けを行なっている。これが許容されるのは、同一コアで大量生産を行うことで製造コストを低く抑えられるというメーカー側の都合以外に、ローエンド向けであっても筐体サイズにはゆとりがある(デスクトップもさることながら、ノート向けであってもキーボードサイズとか液晶サイズとかで「最小の大きさ」が縛られるため、むやみに小さくはできない)点が大きい。

Photo04: つまるところ「どこでバランスするか」という話で、Premium向けとかEntry向けとは異なる部分でバランスを取らねばならず、そのためには専用のSoCが必要、というのが主張である。

対してSmartphoneやTabletの場合、そもそも元々の容積が少ないし、なにしろ原価的にもPCよりも厳しいから、「回路は実装されているけど無効化している」的な使い方はダイサイズ(=原価)の点でも厳しいし、実装コストの面でも無駄に高価格になるから受け入れられにくい。それに無効化していてもStatic Leakはあるから消費電力の観点でも有難くない。もっと言えば、ハイエンドの製品の場合、どうしても性能をある程度高くするため、消費電力や発熱の面で厳しいものがある。これを解決するため、極限まで実装体積を減らしてバッテリー容量を増やすとか、グラファイトシートなど高価な素材を使って放熱を行なうなどのテクニックが盛り込まれるわけだが、これはそのまま製品価格が上がることになる。ミッドレンジではこうしたテクニックは製品価格の観点から使いにくく、この観点からも消費電力が上がりやすいハイエンド向けのアーキテクチャは使いにくいという問題がある。だからといってローエンド向けのCPUだと性能面でやや難しい、というのはPhoto02や03で示した通りである。

従来このマーケットは、Cortex-A9が担ってきていた(Photo05)。ただ当初Cortex-A9はハイエンド向けの製品として投入されており、ところがこれが結果としてメインストリームに落ちてきた、というのが正直なところだ。加えて言えばこのCortex-A9は、Smartphone/Tabletのみならず、幅広くEmbedded向けのControllerとしても使われている。Controllerで言えばCortex-A8が先駆であって、たとえばTIのSitaraシリーズとかDaVinchの一部製品は現在もCortex-A8をベースに広く販売されているが、そのTIもEmbedded向けに鞍替えしたOMAP 4ではCortex-A9をベースにしている。あるいはFreescaleのi.MX6シリーズはCortex-A9をベースにEmbedded向けコントローラや車載Infortainment機器向けに広く展開している。

Photo05: ある意味わかりやすいロードマップ。Cortex-A9以前は、ARM11が結果としてこのマーケットを担っていた。ただ、たとえば初代iPhoneにはARM11ベースのSoCが搭載されていたわけで、2007年の時点ではARM11もある意味Premire向けとして使われていた、ということでもある。

というわけで、Cortex-A9は引き続きこのマーケットで長く利用される事は間違いないのだが、元々Cortex-A9は65nmプロセスをターゲットに設計され、40nmは考えていたものの、28nmへの移行は当初予定になかった。ただこのミッドレンジ向けのニーズが高いため、後追いの形で28nm POPが提供されるという形で延命している経緯がある。ARMとしては、そろそろ28nm以下のプロセスに改めて最適化した製品を投入したいところだし、Cortex-A9はARM v7準拠とは言え、Cortex-A7/15で投入されたLPAEやVirtualizationには対応しておらず、特にこのLPAEに関しては今後数年の間に重要になるかもしれない(後述)ということで、どうしても対応を行なっておきたかったようだ。Photo06は6月5日の基調講演のスライドからであるが、Photo05の"New suite of IP for Mid-range"のところにCortex-A12とMali-T622が入っているのが判る。これでEntry/Mid/Premiumの3つのラインナップにそれぞれ適したIPが提供できるようになった訳だ。

Photo06: 前回の記事でも触れたが、既にIP及びPOP IPの提供は開始されているので、手際の良いメーカーなら半年程度でSoCを製造、これを使った機器は2014年中旬には投入されるかもしれない。ただこれは相当手際の良いメーカーの話で、数量的には2014年後半~2015年にかけて次第に搭載機器が増えてくることになるだろう。

さてそのCortex-A12、もう少し細かい話を御紹介する。まず製品のポジショニングだが、既に説明した通りCortex-A9の後継という位置づけだが、正確に言えば「Smartphone/Tablet分野における」Cortex-A9の後継である。どういうことかといえば、Cortex-A9は既にEmbedded分野に広く利用されており、特にMCUなどでは性能が不足する分野におけるControllerとして非常に多くの採用事例があるため、今後もCortex-A9はEmbedded分野で長く使われてゆくだろうとしており、逆にCortex-A12を(FPUとかNEONなどを省いた上で)こうしたEmbedded向けに投入する予定はない、というのが基本的な姿勢だそうである。このため、Cortex-A9ではオプション扱いとされたFPUやNEON、L2 Cacheなどは、Cortex-A12ではすべて標準装備(逆に言えば、外せない)という形になるそうだ。

64bit空間に関する考え方も面白かった。御存知の通り、最近ハイエンドのSmartphone/Tabletのメモリ容量(Flash Storageの方ではなくDRAMの方)は3GBとかに達しており、近いうちに4GBに達するのは明白となっている。勿論本質としてはOSとアプリケーションが64bit対応しない限り移行はできないし、少なくともKey Lime Pie(Android 5.0)は引き続き32bitベースとなるようだから、当面32bit環境は続くことになる。ただ64bit環境に移行するためには、まずハードウェア側の用意ができてないと駄目というのはWindowsの64bit移行を思い出せば判ることで、それもあってARMは昨年64bitのCortex-A53/57をリリースした訳だが、ARM自身はまだ当面Mobileは64bit環境には移行しないと考えているそうだ。

ただ、特にPremium向けのSmartphone/Tabletの場合、早晩4GBを超えるDRAMが搭載されそうな勢いである。これについて、James Bruce氏曰く「システム全体を見れば確かにメモリは4GBを超えるかもしれないが、アプリケーション単体で見ればまだ数百MBのオーダーでしかない。Tab Browserの場合、Tab毎に別のThreadが生成されるのが普通なので、それぞれのThreadはやはりそれほど大量のメモリを必要としない。だからOSがLPAEに対応して32bitを超えるメモリをサポートしてさえいれば、アプリケーションレベルでは64bitに移行する必要は無い」という話であった。氏によれば、Mobile向けに関する限り、向こう数年はこの状況が続くだろうと見ているそうで、なのでCortex-A12は32bitプロセッサのままで問題ない、という見解であった。

元々Cortex-A57が64bitに対応するのは、Mobile向けというよりもServer向けに64bitアドレス空間が必要(memcachedなどの用途に使うには、とにかくフラットで大量のメモリ空間があることが重要で、こうした用途には32bit+LPAEではうまくない)という話から来ており、Cortex-A53もやはり64bit対応なのは、big.LITTLE構成を行なうケースでは片方が64bit、片方が32bitという構成では当然ながらうまく動かないためである。逆に言えば、big.LITTLEを構成出来るようにするために、どうしてもCortex-A53は64bit対応でないといけないという話である。

もっともそうなると、Cortex-A15/12/7の「次」はどうなるか? という疑問も沸いてくる。サーバー向けには64bitが事実上必須であるが、Mobile向けには引き続き32bitでも十分という考え方もある。ただこれに関しては「次は基本的に64bitになる」とBruce氏は明確に述べた。ARM V8の場合、AArch64とAArch32の2種類の実行状態があるが、64bit OSの場合はx64と同じく「64bit環境(AArch64)の上で32bit環境(AArch32)が仮想的に動作する」形で両者は共存するし、OSが32bitの場合はAArch32だけが動く。このAArch32はARM v7と互換性があるので、既存のOSを含むソフトウェア資産は「原則として」そのまま移行できる。

ARMとしては、引き続き32bitと64bitの2種類のCPUコアを開発するより、Cortex-A12を最後にCortex-Aシリーズは64bitに切り替えたほうが効率が良いし、マーケットの動向もこれを後押ししている。もっともCortex-M系やCortex-R系コアは引き続き32bitのまま推移すると思われるので、これはあくまでもCortex-Aシリーズに限った話であるが。

ちなみに上で「原則として」と書いたのは、ARM v8コアで既存の32bit OSを使う場合はそのまま移行できるが、64bit OS上で32bitアプリケーションを使うというケースでは、デバイスドライバ類は全部作り直しになるからで、このあたりはWindowsの32bit→64bitの移行と同じシチュエーションである。で、この部分はARM云々というよりはむしろGoogleやApple、あるいはMozilla/Jolla/Ubuntu/MicrosoftといったOSベンダーや、これらからOSの提供を受けて自社製品にインプリメントを行なう各機器ベンダーがどう対応するか次第という、ある意味ARMからは直接コントロールできない部分の話になるため、このあたりに関して正確な予測は立て切れていない模様だ。

Photo06にも示されるように、少なくとも2015年頃までのMid Range向けとしてCortex-A12は今後ライセンス数を増やしてゆくと思われる。ARMの予測では2015年にこのマーケットが5億台に達するとしており(Photo07)、ARMにとって重要な収入源になると見込んでいるようだ。

Photo07: 数量的にはEntry Levelの方が多いが、コスト的にはEntry Levelは当然低く抑えられているから、ARMにとってのライセンス/ロイヤリティ収入という観点で見るとMid RangeはEntry Levelと同等かそれ以上に重要になると思われる。