1カ月集中講座

2014年最新CPUの成り立ちを知る 第3回

〜x86 CPUはどうしてこうなった?

 第1回、第2回で、市場がどのように変化しているかについてご紹介した。残る2回は、その結果としてプロセッサはどう変わったかについて説明したい。今回は、x86系プロセッサについてご紹介したいと思う。

 まずはx86の総本山であるIntelから。どの時点から話を始めるか悩ましいが、とりあえず2006年のIDFの記事(下記参照)から始めたいと思う。

Core i7/5/3ブランドの第1世代となる「Nehalem」のウェハ

 この当時、IntelのCPUに対するスタンスは「とにかくIPC(クロック当たりの性能)を引き上げること」だった。ただしx86命令そのもののIPCを引き上げるのはそう簡単ではない。そこでマルチコア化やSIMD命令の拡張、あるいはアクセラレータを使った形で性能の引き上げを図る方向に向いている。IPCの引き上げが難しい、という話は「SSE4命令とアクセラレータから見えるIntel CPUの方向性」の中で言及されているJoel S. Emer氏の

 「シングルコアのILPは今後も継続して向上する。しかし、それほど目覚ましいレートにはならない。ILPを上げるための実装コストが高くなったからだ。我々は、継続してコアも拡張して行くが、シリコンをより有効に使うためにCPUコアの数も増やして行く。LIPとTLPの組み合わせのバランスを取る」

という説明からも明確である。また、アーキテクチャ的にはまだ密結合の、スケールアップ方向の拡張を前提にしている。これは2007年に明らかになった「Nehalem」のプロセッサ拡張(下記記事参照)の構成からも分かる。スケールアップの場合、基本的にはメモリ空間がUMA(Unified Memory Address、共有メモリ)構成でないと作りこみが大変になるし、これを実現するためにはメモリコントローラ同士が広帯域・低レイテンシのインターコネクトで繋がっている必要がある。AMDのHyperTransportに続いてIntelがCSI(後のQPI:QuickPath Interconnect)を導入したのは、スケールアップ時に十分な性能を確保するための手段である。

 ただそうは言っても、この時点ではまだ基本的な方向性はIPCの向上である。Nehalemの内部構造は、省電力化(というか不必要に消費電力を増やさない)に留意しつつ、基本はIPCを上げる方向に最適化されていることが分かる。また、この世代ではどこまでスケールアップの規模を増やすか明確ではないにせよ、基本的には従来よりも大規模に拡張できる余地を残す方向と考えられた。

 これと並行してIntelは、低消費電力製品のポートフォリオも拡充を始めた。要するにAtomのことだ。

 2007年に最初のコアである「Bonnell」を明らかにする。低価格、低消費電力という市場を狙ったモバイル向けのCPUであるが、消費電力を抑えるためにはトランジスタ数を減らすのが有効であり、ここから逆算してイン・オーダーの構成となった。

 これは初代のLPIA(Low Power IA)プロセッサの「Dothan」がアウト・オブ・オーダー/スーパースカラ構成だったことを考えるとやや逆方向の進化となる。IPCは低下するが、パイプライン化による高速動作(〜2GHz)で補う、という従来とは逆のアプローチである。Intelはこのコアをモバイル以外にSoCなどに広く適用することを目論んでいた。その最初のものが「Tolapai」であり、第2弾が「Lincroft」である。

Diamondvilleこと初代「Atom」
AtomベースのSoC「Tolapai」のダイ

 ところが、色々な意味でAtomは不遇だった。第1回で説明した通り、この頃はまだスマートフォンのようなソフトウェア環境がなく、ネットブック/ネットトップというフォームファクタで活路を見出した結果が、

である。結果、デスクトップ/ノートPC向けのAtomの市場はIntelが期待するほど伸びなかった。

 話をNehalemに戻すが、Nehalemのアーキテクチャが固まったのは2003年頃であるとしている。この時点でのプロセッサトレンドは、マルチコア化によるスケールアップだったから、この時点でスケールアウトに関して考えが及ばなかったのは、ある意味当然とも言える。そして、この後は「Tick-Tock」モデルを使って毎年新コアを投入することになるのだが、これを採用することによって必然的な制約条件が発生する。

 Tick-Tockの場合、新プロセスと新アーキテクチャを2年毎に投入するわけだが、プロセスはともかくプロセッサアーキテクチャを新規に起こそうとすると4〜5年はかかるわけで、逆に言えば2年毎にゼロから新アーキテクチャを投入しようとすると、少なくとも3つの開発チームがパイプラインを組む必要がある。Intelはご存知の通り米オレゴンとイスラエルのハイファにそれぞれ有能な設計チームを抱えるが、ほかにも開発すべきものがある中で、2年毎のフルスクラッチ開発をやれるほどの余力はない。必然的に前世代の部分的な改良、という形になっていく。そうなると最初に立てた設計目標である「マルチコア化によるスケールアップ」を否定できるほどの変更を入れるのは難しい事になる。

 結果、「Sandy Bridge」はNehalemの堅実な拡張版という形になった(下記記事参照)し、「Ivy Bridge」は22nm FinFETプロセスこそ革新的であるが、アーキテクチャそのものはSandy Bridgeとあまり変わらない。

Haswellこと第4世代Coreプロセッサ

 ただこの頃から、Intelの先行きは怪しいものになってきていた。デスクトップ向けの売れ行きが減少し、モバイル向けが増えるというシナリオは2006年頃からずっと言われていたことだが、これに加えてPCの需要そのものが減り始めたことで、製品ラインナップの見直しを余儀なくされるようになった。特に重要なのは、これまでは高性能・高消費電力向けのプロセッサをメインに据えればよかったのがモバイル市場の伸張により、相対的に低消費電力向けが主流になり始めたことだ。

 実はこれに関してはIntelも予測していた。予測していなかったのは、サーバー向けまでも、やはり低消費電力向けが主流になり始めたことだ。ところが、プロセッサのマイクロアーキテクチャをそれに向けて急速に変えることはできないし、プロセスも同様である。この結果として、小手先の解決案(と言っては失礼な技術ではあるが)として、「Haswell」の世代では省電力機構をさらに充実させるとともに、電圧レギュレータを統合することで効率改善を図り、さらに一部のSKUにはeDRAMソリューションを提供することで、絶対性能の引き上げ以外にも「動作周波数を抑えたモデルでも性能を落とさない」ことに成功した。これらHaswellに盛り込まれた技術については下記記事が詳しい。

 さらに間もなく登場するBroadwell世代では、プロセスそのものを省電力方向に振ることで、省電力性への高まる要求に応える。従来Intelのプロセスは偶数番号(P1266/1268/1270)がCPU向け、奇数番号(P1267/1269/1271)がSoC向けとされていた。この法則で行けば、14nmプロセスのP1272はCPU向けの高速・大消費電力のプロセスになるはずだったが、実際にはSoC向けの低速・低消費電力プロセスを先行させる決断を下した。これにより、デスクトップ向けのBroadwellが登場するのは2015年以降になったし、この結果、デスクトップ向けには「Haswell Refresh」が投入されたのは、当初投入されるBroadwellがほぼ全て低消費電力向けであるからにほかならない。

 そして、Broadwellの次の「Skylake」の世代では、アーキテクチャ自体がもう少し低消費電力向けに振られる可能性すら出てきた。そもそもSkylake自身がGPUに関して一度仕切り直しており、この時点でコアの見直しが出る可能性は十分ある。ただ、どんなに急いでも2015年後半の投入で、14nmプロセスの立ち上がりが遅れていることもあり、さらに遅れる可能性もある。その一方で、特にサーバー向けに関して言えば、既存のNehalem/Sandy Bridge/Haswellの流れのアーキテクチャは過剰とも言える構成である。

 この結果として、Intelは急速にAtomへのテコ入れを余儀なくされる。45nm SoCプロセス(当初はP1267になる予定だったのが、最終的にはP1266.8となった)の躓きで、この世代のSoCがまともに作れなかったが、幸いにも32nm世代のP1269には問題がなく、これを利用してスマートフォン向けの「Medfield」とタブレット向けの「Clover Trail」を矢継ぎ早にリリースする。

Avotonこと「Atom C2000」シリーズ

 この2つはどちらも「Saltwell」コアであるが、中身はBonnellとほとんど変わらない。これはいわばTick-TockのTickに当たるプロセス微細化版である。ただこれに続くSilvermontコアでは、下記の記事にある通り、内部を完全に作り直した。

 理由は単純で、低消費電力(=低動作周波数)であっても、ある程度の性能が必要というのが市場の要求だったからだ。これは使ったことがあるユーザーはお分かりかと思うが、BonnellコアのAtomは決して高速ではない……と言うか遅い。ラフに言えば、2GHzのAtomコアは、600MHzのDothanコアよりは高速ながら、1GHz位で動くDothanよりも遅い程度。つまり同一周波数であれば、5分の2程度の性能しか持ち合わせていなかった。もちろんこれは45nmプロセスを前提にした場合、これ以上複雑なコアにすると消費電力が上がってしまうからギリギリの選択だった、という考え方もできる。ただ、同じく低消費電力向けのARM「Cortex-A」シリーズでも、Bonnellと同じイン・オーダーのコアはCortex-A5とA7という本当にローエンド向けのみであり、Cortex-A9/12/15といった主流のコアはアウト・オブ・オーダー/スーパースカラを実装している(ちなみにCortex-A8はイン・オーダーながらスーパースカラだが)。これを考えると、やはり設計段階での見積もりが間違っていたという見方も出来るだろう。

 何はともあれ、Silvermont世代はマイクロアーキテクチャを一新し、Cortex-A15と戦えるようなスペックを実現した。別の言い方をすれば、スケールアウトに適した最初のアーキテクチャがこのSilvermontで、これ搭載した「Avoton」は、まさしくスケールアウト向けに構成されたサーバー向けSoCである。従来はXeonの市場を侵食することになるから、と揉めていたであろうこの製品を、今では同社のサーバー部門が大々的にアピールしているあたりが、Intelもサーバー向けトレンドを明確に理解し、その上で64bit ARMサーバーと互角に戦える製品を用意した、という状況の表れと考えていいかと思う。

 Intelは14nm世代でも、この路線を強化してゆく。当初投入されるコアは「Airmont」と呼ばれるが、おそらくこれはTickにあたるプロセス微細化版で、そう大きな機能追加はないと思われる。ただこの後には「Goldmont」と呼ばれる機能拡張版コアも予定されており、Intelがこのセグメントに本腰を入れていることが分かる。Skylakeやこれに続くCannonlakeといった従来のメインストリームコアが今後も現在の高IPC/高消費電力の重厚な構成を維持してゆくのか、あるいは一転して軽量コアの方向に行くのかは今のところ明らかにされていない。

「Bobcat」と「Jaguar」が消えかけた火を再燃させたAMD

 ではもう1つのx86プロセッサベンダーの雄であるAMDはどうかというと、やや不思議な経緯になっている。

 AMDはATIの買収によってAPUというカテゴリを創造する方針を固め、これに沿って「Llano」→「Trinity/Richland」→「Kaveri」というラインナップをメインストリーム向けに提供しているわけだが、これと同時にもう1つ重要だったのは、サーバー市場におけるシェア拡大である。実際、IntelがCoreマイクロアーキテクチャベースのXeonの提供を開始する直前、同社のサーバー市場シェアは3割を超えていた。K8ベースのマルチコア対Netburstベースのマルチコアでは、絶対性能の面でも、性能/消費電力比の面でもAMDに利があるのは当然であるが。

 ところが、IntelがCoreマイクロアーキテクチャベースの「Woodcrest」を投入したことで、絶対性能でも性能/消費電力比でもK8ベースのOpteronを上回るようになり、AMDが投入した「Barcelona」コアは、内部構造は大幅に強化された(下記記事参照)ものの、猛烈に消費電力が高かったことで一気にそっぽを向かれた。45nmの「Shanghai」や、これの6コア版である「Istanbur」が投入されて状況は多少改善したものの、結果としてAMDはサーバーマーケットをじりじりと失い始めた。

 「Bulldozer」はこの状況に歯止めをかけ、可能なら逆転するための武器であったが、ここでちょっとしたボタンの掛け違い、あるいは状況判断のミスがあった。

 Bulldozerの設計目標および設計は下記記事に詳しいが、この判断そのものは間違っていない。問題は、急速にスケールアウトに移行することをあまり考慮していなかったことだ。結果、Bulldozerはスレッド性能はともかく、絶対性能があまり高くないコアになった。この性能の低さをカバーすべく動作周波数を引き上げた結果として、消費電力が増えてしまうという、まるで「Barcelona」の再来といった状況に陥っていた。

Bulldozerモジュール

 振り返ってみれば、Bulldozerはあまりに中途半端であった。デコーダは4命令/サイクルとNehalemに比肩しうるものだったが、これを強制的に2つのスレッドに振り分けたから、実質2命令/サイクルでしかなくなり、絶対性能は“お話にならない”程度だった。逆にマルチスレッドに最適化されたアプリケーションではそれなりの性能が出たのだが、クラウドなどで要求されるスケールアウト型アプリケーションを動かすには、あまりにCPUの消費電力が多く、スケールアウトが要求されるの現場ではあまりプロセッサ数が増やせない点がネックになった。つまりBulldozerは、あくまでもスケールアップ的な使い方の範疇でマルチスレッドに特化したコアでしかなく、この読みが外れた瞬間に“使えない子”扱いされてしまったのは無理もないことである。この結果として、そうでなくても低かったサーバー市場のシェアは、ほとんどなくなるところまで来てしまった。

 AMDはBulldozerの次の「Steamroller」でデコーダを若干強化し、さらにデコーダ分離を行なうといったことで性能強化を図ったが、デコーダと実行ユニットはペアで強化しないと余り意味はなく、そこまで強化するともはやBulldozerのメリットであった「相対的に小さなコア」から逸脱しかねない。この結果として、従来のロードマップに示されていた(Steamrollerの後継になる予定の)「Excavator」がロードマップから消えてしまったのも仕方のないことと言える。

AMDにとって救世主となった「Bobcat」コア

 これはAMDにとっては深刻な状況であり、x86ビジネスが危機的状況に陥る……かと思ったら、意外に影響が小さかった、というのが不思議なところである。救世主は、Bulldozerと同時に開発された「Bobcat」コアである。こちらは組み込みやモバイルなどの省電力向けに設計されたコアであるが、小規模ながらスーパースカラ/アウト・オブ・オーダーのバランスが取れた構造であり、同世代のプロセスを使うAtomと比較しても一回り小さく仕上がった。あえて言うならば、IntelのSilvermontコアを3年前倒しで投入したのがBobcatとしてもいいかもしれない。この結果、急速に立ち上がったスケールアウト型サーバー市場向けに、AMDはこのBobcatをベースにしたSoCを「スケールアウトに適したプロセッサ」として供給できることになった。

 次いでAMDはこのBobcatコアを改良した「Jaguar」を投入する。ピーク性能という観点で言えば「Atomよりマシ」という程度でしかない(から、メインストリーム向けには無理がある)が、ローエンドやタブレットにはこれで十分であり、またクアッドコア構成を前提にすることで、トータルでの性能はそこそこ持ったものになった。おまけにこのJaguarコアは、「PlayStation 4」や「Xbox One」にも採用されるなど、おそらくAMDが当初に考えていたよりも広く使われるようになった。結果、AMDはx86のプロセッサビジネスを、Jaguarやその後継となる「Puma+」コアをベースに再編することになった。

 加えて、BulldozerベースのOpteronの致命的なまでの売れなさに、わりと諦めが簡単についたようで、いきなり64bit ARMベースに乗り換えるという決断を下した。こう言ってはなんだが、もしBulldozerがもう少し出来がよく、そこそこのシェアを維持できていたとしたら、この決断が下せたかどうか分からない。失うものがなかったからこそのアーキテクチャ変更の決断であり、結果としてこれから立ち上がる64bit ARMサーバー市場の主導権を握れるかもしれない位置に付けたのは、現時点の判断としては、むしろ幸いと言えるかもしれない。

AMDのロードマップ

 加えて、PC向けのメインストリームではAPUが非常に健闘している。純粋にCPU性能だけを見ればHaswellなどにはまだ及ばないのだが、初回に説明した通り、絶対的なCPU性能が要求されるシーンが減ってきているから、これは致命的な問題にはならない。その一方でGPUコアの性能はIntelを圧倒しており、バランスが取れているからだ。

 結果、財務状態はともかくとして、提供している製品ポートフォリオという観点で言えば、見事にAMDは主要な市場でIntelと互角のラインナップが提供できるようになった。しかも今後はARMの市場もアクセスできるようになるわけで、一時期は滅亡の淵に立たされているといっても過言ではなかったのが、今ではすっかり立ち直ったかのようにすら見える。

(大原 雄介)