■後藤弘茂のWeekly海外ニュース■
スマートフォン&タブレットに代表されるモバイルデバイスのCPUのアーキテクチャは、ARMが主流となっている。そして、この市場に対するx86の挑戦は失敗に終わり、ARMアーキテクチャの独占になる可能性がある。こうした状況に応じて、Intelを始めとするx86ベンダーも、モバイル市場へはARMコアを投入する戦略へと切り替える可能性がある。実際、x86ベンダーは、水面下ではARMへの転換を模索または、すでに開発をスタートさせていると言われる。
ある業界関係者は、Intelが自社開発のARMコアのSOC(System on a Chip)を、2年以内にモバイル市場へ投入すると語る。具体的なチップのスペックは見えないが、プランは動き始めていると言う。また、AMDがARMと何らかの交渉を行なっているという噂も、業界内では今春から盛んに流れていた。VIA Technologiesは、S3 GraphicsをHTCに売却する発表を行なう前は、ファウンドリのARMコアを使ったSOCを投入する可能性があると言われていた。火のないところに煙は立たずの原則に従えば、x86ベンダーが何らかの動きをしている可能性は高い。
現在の構図では、ARMで占められたモバイルデバイス市場に、Intelがx86 CPUで挑む形となっている。もちろん、これはモバイルデバイスの高機能化に合わせた動きで、低消費電力のARMは高パフォーマンスCPUコアを急速に加えつつあり、高パフォーマンスのx86は低消費電力CPUコアを加えつつある。現状だけを見ると、急伸するモバイルコンピューティング市場に向けて、ARMとx86の2つの命令セットアーキテクチャが戦っているように見える。
しかし、実際にはx86ベンダーがx86命令セットになんとしても固執しなければならない理由はない。x86命令セットのソフトウェア資産を活かせるからx86ベンダーが有利というPCの図式は、必ずしもモバイルデバイスでは当てはまらない。むしろ、x86であることがSOC(System on a Chip)のバリエーションなどさまざまな面での足かせとなっている面がある。多数のベンダーが、多種多様なソリューションを提供するARMワールドの方が、デバイスの差異が激しいモバイル市場では有利となっている。
また、PCで築き上げられたx86命令セットへの依存性と、ある程度似たようなARM命令セットへの依存も進行しつつある。例えば、ARM上でのスマートフォン&タブレットの2陣営の片方であるAndroidでは、これまでDalvik VM(Virtual Machine)による抽象化によってARMネイティブ命令への依存は断たれていた。しかし、Googleはネイティブプログラムを開発するためのAndroid NDK(Native Development Kit)を急速に進化させており、ゲームのようなパフォーマンスがクリティカルなアプリケーションをNDKへと誘おうとしている。そのため、x86=Windows PCほど堅固ではないものの、ARM命令へのゆるい依存がARM系Androidプラットフォームで生じて行く可能性もある。
●一時はARMベースのXScaleを推進したIntelIntelのAtom系コアは、当初の見込みでは今ごろモバイルデバイス市場にがっちりと足場を築いているはずだった。しかし、現状はお世辞にも、マーケットで成功したとは言えない。IntelはAtomコアをタブレットやスマートフォンへも推進しているが、絶対数で見ればモバイル市場は依然としてARMに占められていると言っていい。また、この状況をひっくり返すだけの勢いも、まだIntelは得られていない。Intelの苦戦は、傍目にも明かだ。
こうした状況で、Intelはモバイルデバイス向けには、ARMコアのSoCを投入することを検討していると伝えられる。現状では、いつ投入するのか、x86 Atomと共存するのか、どこまでの市場をカバーするつもりなのか、全くわからない。しかし、少なくとも、タブレットなどのモバイルコンピューティングデバイスについては、ARMコアSoCの投入を考慮しているようだ。
もっとも、IntelがARMコアを開発していたとしても、驚くことではないだろう。Intelは、一時はARMコアを開発して、モバイルと組み込み市場向けに推進していたからだ。Intelは、DECから買い取ったARM系CPU「StrongARM」をベースとした「XScale」を、ちょうど今のAtomコアのような位置に据えていた。10年前、IntelはXScaleで携帯電話市場をターゲットの1つとし、1GHzの高パフォーマンスで市場を取ると説明していた。そうした経緯を考えると、IntelがARMを再び持ってきたとしても、おかしくはない。
IDF 2001でのXScaleのスライド |
もっとも、Xscaleの時は、Intelはしばらくして、Atom系の低消費電力x86のプロジェクト「LPIA」を立ち上げ、XScaleはMarvell Technology Groupに売却してしまった。その理由について、Intelは、モバイルデバイスが進化してインターネットデバイスになると、インターネット上でコード資産があるx86が有利になるからだと説明していた。PCでのx86の資産が、モバイルデバイスにまで広がると踏んだわけだ。だが、ARMの急伸を前に、Intelの戦略は揺らいでしまった。
●ARMコアでも発揮できるIntelの強味Intelが、XScale以来の自社ARMコアに復帰するとしたら、それは大きな戦略転換となるだろう。x86のソフトウェア資産の優位を諦めることになるからだ。だが、それでもIntelには、プロセス技術の優位と、自社で独自のマイクロアーキテクチャを開発できるという利点が残ると見られる。これは、XScaleの際のIntelの優位点だった。
プロセス技術では、Intelは常に先端製品の量産時期で、常に他社に先行している。また、高パフォーマンスなプロセス技術の低リーク電流(Leakage)化に優れている。そのため、Intelは、例え同じアーキテクチャのARMコアであっても、高いパフォーマンス/電力で走らせることができる。また、Intelは、ARMアーキテクチャライセンスを持っているため、独自の高速化ノウハウを盛り込んだ高パフォーマンスコアを開発することができる。同じARMコアでも、Intelが踏み出すなら、それなりの強味を持つことができると推測される。
ちなみに、AMDは、ARMコアについて、Intelほど話は聞こえてこない。しかし、AMDもARMコアをやろうとしている、とある業界関係者は言う。現時点で具体化な話が聞こえてこないことは、投入するとしてもIntelに遅れを取る可能性がある。ただし、AMDが自社でARMコアを開発せずに、TSMCやGLOBALFOUNDRIESのプロセスに載っているARMコアを使う気なら、話は別だ。その場合は、CPUコアのマイクロアーキテクチャ以外の部分で、AMDとしての差別化を行なわなければならないが、投入はスピーディにできる。
ただし、Intelが自社開発のARMコアを投入する場合でも、易々とリードを奪うことはできないだろう。そもそも、Intelの誤算の1つは、ARM陣営側が急速にCPUコアを進化させ、高パフォーマンス化を進めたことだ。
●急激に進化するARMのCortex-AファミリARMは、ARM v7命令セットのCortexファミリ世代になってから、積極的に高パフォーマンス化を進めている。2命令デコードのCortex-A8を皮切りに、2命令デコードでOut-of-Order実行のCortex-A9、3命令デコードでOut-of-OrderのCortex-A15と、矢継ぎ早に拡張を続けている。
ARM Cortex-Aファミリのアーキテクチャ(PDF版はこちら) |
この3世代のCortex-Aファミリのマイクロアーキテクチャを見ると、ARMが急激にコアを拡張していることがわかる。Cortex-A8は、Cortex-Aファミリの最初の実装で、In-Order実行で2命令デコード、実行パイプは基本の整数演算ALUパイプが2本で、同時発行が可能な乗算ユニットとロード/ストアパイプを備えている。整数演算パイプはライトバックまで含めて13ステージだ。
Cortex-A8世代では、SIMD(Single Instruction, Multiple Data)拡張命令のNEONは"張り出し"的な実装になっており、通常のパイプラインの後にNEONエンジンが配置されている。Cortex-A8のパイプラインでは、NEONのプロセッシング命令は整数パイプをスルーして後段のデコーダに送られる。
ARM Cortex-A8ブロック図(PDF版はこちら) |
これが、Cortex-A9になると、パイプラインにNEONエンジンがもっと密接に融合される。2命令デコードの最大4命令発行のOut-of-Order実行で、レジスタリネーミングでレジスタ競合を回避する。整数シンプル演算は1ステージとなり、整数演算パイプはライトバックを含めて最短9ステージとなった。
ショートループをバッファすることで、ループ時の命令フェッチを回避する機能などが加えられた。ちなみに、Cortex-A8とA9で、図中で用語の統一が取れていない。例えば、Cortex-A8ではBTB(Branch Target Buffer)となっている部分が、Cortex-A9ではBTAC(Branch Target Address Cache)という名称になっている。これは単純にARMの文書上の表記をそのまま取り入れているためだ。分岐予測は、Cortex-A9がA8を拡張したものとなっている。
ARM Cortex-A9ブロック図(PDF版はこちら) |
来年(2012年)登場するCortex-A15になると、さらにパイプラインに拡張が加えられる。下の図は一部推定だが、Cortex-A9とは大きく異なる設計であることがわかる。命令デコードは3命令となり、実行パイプへの命令発行ポートは8個に増える。NEON/浮動小数点演算パイプは2本となり、完全に組み込まれ、独自の発行ポートを持つ。Out-of-Order実行のウインドウも広がり、分岐予測もBTBが2階層になるなど拡張される。より本格的な、スーパースカラプロセッサとなっている。パイプラインの深さは、整数演算で最短15ステージだ。
ARM Cortex-A15ブロック図(PDF版はこちら) |
ARM Cortex-A15パイプライン(PDF版はこちら) |
●いざという時の保険にもなるARMコア開発
こうしてARMのCortex-Aファミリの進化を見ると、急激にマイクロアーキテクチャを拡張していることがよくわかる。もともと、ARMコアはパイプラインがシンプルで、トランジスタ数が少なくダイ(半導体本体)面積が小さいため、拡張の余地が大きかった。ARMはプロセス技術の進歩を使い、どんどんコアを革新している。
ARM Cortex-Aの性能向上(PDF版はこちら) |
加えて、Qualcommなどが、独自のマイクロアーキテクチャのARM v7コア「Scorpion(スコーピオン)」と後継の「Krait(クレイト)」を開発している。KraitはCortex-A15対抗だ。NVIDIAも、ARMのマイクロアーキテクチャをベースに、独自の拡張を加えたコアを開発することを表明している。
IntelがAtomコア(Silverthorne:シルバーソーン)を開発している段階では、これだけのARMコアの急伸は予測していなかった可能性がある。そして、Cortex-A15世代になると、CPUアーキテクチャだけを見れば、現行Atomコアよりかなりリッチな構成になる。そのため、純粋にパフォーマンス面での魅力をIntelが打ち出すことが難しくなる。
こうした状況にあるため、もし、Intelが自社ARMコアを開発しているとしたら、ターゲットは、このCortex-A15とそれ以降の世代となるだろう。となると、x86で2命令デコードのIn-Order実行の現行Atomより、かなり拡張されたマイクロアーキテクチャを取ると推測される。
x86では、Intelは上位のPC向けCPUコアとの差別化のために、モバイルデバイス向けCPUコアのマイクロアーキテクチャを抑える必要がある。しかし、モバイルをARMコアベースにするならば、Intelはそうした配慮を行なう必要がない。思う存分、ARMコアを拡張することができる。
IntelにとってARMコアに手を付けることは、万が一の保険にもなるだろう。それは、ARMベースのコンピューティングデバイスの世界が広がり、x86ベースのPC市場を侵食し始めた場合だ。そうした転換が起こった場合でも、Intelは自社ARMコアで対抗することができる。
こうして概観すると、IntelにとってARMコア製品を開発する合理的な理由があることがわかる。とはいえ、実際にIntelがARMという選択をしたとしても、表面化するには、まだ時間がかかりそうだ。