■後藤弘茂のWeekly海外ニュース■
スマートフォンやタブレット向けのモバイルSOC(System on a Chip)の急激な進化が止まらない。現在は、製造技術が32/28nmプロセス世代に移行しつつあり、プロセス微細化によるチップの小型化と、コアの強化のフェイズに入った。
モバイルSoCは、2010年に45/40nmプロセスに移行して以来、ダイ(半導体本体)を肥大化させて機能を強化してきた。AppleのiPhone/iPad向けの「Apple Ax」シリーズを見ると、Samsungの45nmプロセスのまま1年毎にA4(53平方mm)→A5(122.2平方mm)→A5X(163平方mm)へとダイを大型化した。45nm版のA5Xは、Intelの4コア版のIvy Bridge(アイビーブリッジ)と、ほぼ同等のダイサイズとなっている。ついにPC向けCPUのダイサイズに追いついた。下の図は、最新のモバイルSoCのダイサイズ(半導体本体の面積)のチャートだ。比較用に現在のIntel CPUのダイを並べた。
モバイルSoCダイサイズ移行図 PDF版はこちら |
今年(2012年)4月に開催されたプロセッサカンファレンス「Linley Tech Mobile Conference 2012」でも、主催のThe Linley Groupの主席アナリストのLinley Gwennap氏(Principal Analyst, The Linley Group)は「Mobile Market Overview」のキーノートスピーチで下のような図を示した。モバイルCPUのダイの大型化と、それによる製造コストの急増は業界の共通認識だ。
ダイサイズの大型化とコストの急増 |
モバイルSoCが大型化した理由の1つは、言うまでもなく、スマートフォン&タブレット競争の結果、より多くの機能を載せる必要が出たためだ。しかし、本来なら今年の前半の段階で移行できるはずだった32/28nmプロセスの立ち上がりがもたついたために、ダイを小型化できなかったという背景も大きいという。32/28nmで出すはずだったチップを45/40nmにしたために、大型化した。
Appleは32nmプロセス版のA5も出し始めており、業界全体で今年後半には32/28nmへの移行が進む見込みだ。32/28nmプロセスになることで、同じ機能のダイが小型化する。しかし、一方で、28nm世代では、よりリッチな構成のSoCへとも向かっており、今後、さらにモバイルSoCの機能競争は激化することを意味している。Linley Tech Mobile Conference 2012では下のパフォーマンス予想図が示された。1年毎にパフォーマンスが倍増するという、モバイルSoCのクレイジーなペースがまだ続く。
パフォーマンスの倍増 |
●ソフトマクロとハードマクロの中間解のソリューションも提供
モバイルSoCの急激な進化の背景には、ほとんどのモバイルSoCの中核となっているARMのライセンス戦略がある。
ARMは、CPUの命令セットアーキテクチャ(ISA)を定義すると、そのISAを実装したCPUコアを開発する。ARMも多くのIPベンダと同じように、CPUコアをRTL(Register Transfer Level)のソフトマクロとして提供している。各チップベンダーは、RTLから論理合成して、SoCを設計する。RTLベースなら、チップベンダー側にはカスタマイズの自由度がある。Cortex-A9でのRTL上のマイクロアーキテクチャの実装のオプションでは、キャッシュサイズ、TLBサイズ、NEON SIMDエンジンの有無、エラーディテクションの有無、プリロードエンジンの有無、CPUコア数など多岐に渡っている。また回路実装の段階で、省電力化や高周波数化などの工夫の余地もある。例えば、Samsungは32nmのCortex-A9のコアでは、トランジスタのボディ領域にかける電圧を動的に制御するBody Bias(ボディバイアス)で、リーク電流の抑制とパフォーマンスの向上を実現している。
とはいえ、RTLから単純に論理合成した場合は、一般的に、動作周波数やエリア面積、消費電力などで不利になる。Samsungのような回路設計やプロセス技術への最適化にはノウハウとエンジニアリング労力が必要となる。そのため、ARMは2つの方法でこの問題に対処している。大手ファウンドリの主要プロセスのライブラリとしてチューンしたハードマクロの提供。もう1つは、「POP(Processor Optimized Packages)」とARMが呼ぶ、ファウンドリプロセス毎の最適化パッケージの提供だ。
ハードマクロはプロセス技術に最適化した物理設計済みのマクロで、通常は、高速版と低消費電力版の2タイプを設計する。下のスライドは、Cortex-A9のハードマクロ「Osprey(オスプレイ)」の、2タイプのマクロの例だ。チップベンダーにとって、ハードマクロは高速または低消費電力のコアを少ないエンジニアリング労力で使うことができる手軽なソリューションだ。
Ospreyのマクロ例 |
しかし、ハードマクロはお仕着せ設計でありコンフィギュレーションができない。そこで、ARMは、最適化のノウハウをPOP(Processor Optimized Packages)として提供することで、最適なPPA(Power, Performance and Area)のバランスを得ながらカスタマイズも可能とする。同じARMのマイクロアーキテクチャのCPUコアを使う場合でも、パフォーマンスと自由度と開発労力の選択肢がある。同じマイクロアーキテクチャのARMコアでも、動作周波数や電力に広いバリエーションがあるのはそのためだ。ARMが示している下の例では、TSMCの40nmプロセス上でのCortex-A9も、RTLからそのまま論理合成すると0.95GHz止まりなのが、ハードマクロでは最高2GHz、POPを組み合わせることで1.7GHzとなっている。
最短の製品化期間でARM Cortexプロセッサの最適化設計を実現するPOP |
●独自マイクロアーキテクチャと改良マイクロアーキテクチャ
さらに、チップベンダー側はARMからフルアーキテクチャルライセンスを受けることで、ARMと命令セット互換のCPUコアを開発することもできる。モバイルではQualcommがこの方法で、独自のマイクロアーキテクチャのCPUコアを開発している。Qualcommは、S3までの「Snapdragon」のCPUコアである「Scorpion」の開発に当たって、自社の求めるパフォーマンスのコアをいち早く手に入れるためにマイクロアーキテクチャから開発する道を選んだと説明している。
加えて、ライセンシメーカーは、ARMが開発したマイクロアーキテクチャを、アーキテクチャレベルで拡張するライセンスを受けることもできる。Qualcommのように完全に独自のマイクロアーキテクチャをゼロから開発するのではなく、ARMのコアもライセンスを受けて、それをベースに機能を拡張する。例えば、Cortex-A9に、次世代ARMコアのCortex-A15(Eagle:イーグル)と同等の命令セットを実装する動きがある。NVIDIAも、「Project Denver」などでGPUに統合するARMコアについて、ARM設計のコアをベースに拡張すると説明しており、こうしたライセンス&設計を取ると推測される。
こうして見ると、ARMの多彩なライセンス&IP提供形態が、マイクロアーキテクチャと実装の多様性を産み出していることがわかる。もちろん、これだけの手間をARMがかけることができるのは、ARMベースのSoCの市場がそれだけ広がっているからだ。より正確に言えば、モバイル市場の急拡大とともに、ARMのPOPのようなソリューションが急進展して来た。
ARMのライセンス PDF版はこちら |
さらに、ARMコアIPはマルチファウンドリで、プロセス技術自体のバリエーションもある。SoCレベルでは、異なるGPUコアや他のIPが組み合わせられるため、さらにバリエーションが増える。GPUコアだけでも、ARM Mali系、PowerVR系、NVIDIA Tegra系、Qualcomm Adreno系など多種ある。他のIPでは、Texas Instrumentsは独自の強力なメディアプロセッシングエンジンを搭載している。ARMががんばらなくても、周りのライセンシがARMベースSoCを支えるという仕組みとなっている。
バリエーションが多いARMベースの製品 PDF版はこちら |
●Cortex-A9より同じクロックで40%高パフォーマンスなCortex-A15
次のステップでは、ARM系CPUコアは新しい世代に半分足を突っ込む。現在のモバイル向けARM系CPUコアは、Cortex-A8、Cortex-A9、Snapdragon Scorpionのいずれも最大2命令デコードのフロントエンドだが、次の世代では、Cortex-A15とSnapdragon S4 Kraitのいずれも3命令デコードのフロントエンドになる。また、バックエンドの実行パイプラインは、従来より命令ポートがユニット毎に分離された、命令ポートの多い構造に変わる。28nm以下のプロセスを前提に、よりリッチな構成のマイクロアーキテクチャへと発展し、シングルスレッド性能を高める。
Cortex-A15はCortex-A9の発展ではなく、全く新しいマイクロアーキテクチャで、ずっと洗練された設計となっている。命令イシューポートは実行ユニット毎に分離され、Cortex-A9では64-bit幅だったSIMDエンジンも128-bit幅になる。今のPC向けCPUにかなり似通った構造になる。
Cortex-A9のブロックダイアグラム PDF版はこちら |
Cortex-A15のブロックダイアグラム PDF版はこちら |
ARMが明かしているCortex-A15の性能ターゲットは3.5DMIPS/MHzで、2.5GHz時に8,750 DMIPSのピーク性能を目指す。ちなみに、2.0GHz以上はパフォーマンス向けプロセス技術を使った時のターゲットだ。Cortex-A9のもともとのターゲットは2.5 DMIPS/MHzだったので、ターゲット通りなら、Cortex-A15は同クロックでもCortex-A9の1.4倍の性能を達成することになる。
Cortex-A15は、今年後半のTexas Instrumentsの「OMAP5」にデュアルコア(最高2GHz)で採用される。また、ARMはCortex-A15でもハードマクロ「Seahawk(シーホーク)」を提供する。Seahawkの概要は、今年4月に横浜で開催されたプロセッサカンファレンス「CoolChips」で一部が明らかにされている。
Cortex-A15のハードマクロ |
Cortex-A15のフロアプラン |
もっとも、実際にはCortex-A15を避けて、Cortex-A9にCortex-A15互換の命令セットを実装しようという動きもある。命令セットではCortex-A15互換だが、コア自体は、より小さく省電力なCortex-A9ベースというCPUコアになる。そうした解もあるため、Cortex-A15は、モバイルではCortex-A9ほど急速に普及はしない可能性がある。
●L0キャッシュを持つSnapdragon S4系のKraitコアQualcommは、すでに「Snapdragon S4」ファミリから新CPUコア「Krait(クレイト)」を載せている。Snapdragon S4系は最新のAndroidスマートフォンに一斉に搭載されており、Scorpionの時と同様に独自にマイクロアーキテクチャを開発したことで、同クラスのCortex-A15に先んじることができた。確実なアドバンテージとなっている。
Kraitコアについては、4月に開催されたゲーム開発者向けカンファレンス「GDC(Game Developers Conference)」などで一部のフィーチャの説明が行なわれた。ターゲットはCortex-A15とかなり似ており、目指す性能レンジは3DMIPS/MHz以上。フルにアウトオブオーダ実行化されたパイプラインを持つ。
Cortex-AとSnapdragonアーキテクチャの比較 PDF版はこちら |
Kraitコアの大きな特徴の1つは、小容量のL0キャッシュ(命令4KB+データ4KB)をCPUコア内に持つことだ。キャッシュ階層はL0-L1-共有L2の3階層となる。GDC時にはセッション時の展示で、説明員がL0キャッシュを挟み込んだのは、省電力化のためだと説明していた。より小容量で、より軽い(構造が単純)L0キャッシュをCPUコアに内蔵することで、相対的に大容量で重い(構造が複雑な)L1キャッシュへのアクセスを減らす。それによってキャッシュの消費電力を減らすというアプローチだ。KraitのL0は単純なダイレクトマップ構造を取っているとされるが、単純なキャッシュ構造による省電力が目的であると推測される。前世代のScorpionでは、Qualcommは32KBの命令L1と32KBのデータL1を実装していた。Kraitでは、L0を挟む一方で、L1キャッシュは各16KBずつに減らしていると言われる。
L0のキャッシュ |
●GPUコアはタイリングとイミーディエトの両モードを切り替え
ちなみに、Snapdragon S4系では、GPUアーキテクチャも一新される。現在のSnapdragon S4 MSM8960系のGPUコアは既存アーキテクチャの拡張版であるAdreno 225だが、同じSnapdragon S4でもクアッドコアの「Snapdragon APQ8064」ではGPUコアも次期コアの「Adreno 320」になる。
Adreno 320の最大の特徴は、タイルベースの「ビニングモード(Binning Mode)」と、タイルを使わない「ダイレクト(Direct)モード」の両方を備えること。ビニングモードは、外部メモリ帯域を節約できるためモバイルGPUでは一般的で、タイリングモードとも呼ぶ。画面をタイルに分割してレンダリングすることで、デプスバッファやカラーバッファなどを内蔵メモリ(GMEM)でまかなう。ダイレクトモードは、PC向けGPUで一般的な外部メモリに直に描き込む方式で、イミーディエトモード(Immediate Mode)と呼ぶ方が一般的かも知れない。
GPUアーキテクチャの違い PDF版はこちら |
Adreno 320は両モードを切り替えて、描画するグラフィックスに最適なモードにする。Qualcommはこの技術を「FlexRender」と呼んでいる。モードの切り替えは同じアプリケーション内でも行ない、最適なパフォーマンス/電力を実現できるようにする。
いいとこ取り的なアプローチだが、実際にはモバイルGPUのダイ面積を取るタイルメモリを内蔵したままイミーディエトモードをサポートするため、ダイオーバーヘッドがある。28nmプロセスだからできる実装だ。
大きな流れを見ると、28nm世代でモバイルSoCはさらに急速に発展することがわかる。また、今後は、ダークシリコンを埋めるために、CPUコアを増やすのではなく、GPUコアなど、他の機能を充実させて行く方向も強まるだろう。