●マルチコア化で出遅れていたIntel Intelは2005年に、デスクトップPC、ノートPC、サーバー&ワークステーションそれぞれのIA-32 CPUと、IA-64 CPUでマルチコア製品を一斉に投入する。 デスクトップ向けデュアルコアの「Smithfield(スミスフィールド)」は、2006年後半にデュアルコアCPUの予定だったのを、2005年後半に繰り上げての投入だ。CPU開発計画を変更してまで、マルチコアを前倒しするIntel。なぜ、Intelはマルチコアへ急ぐのだろう。 それはIntelが出遅れていたからだ。CPU業界のトレンドは、もう何年も前からマルチコアへと向かっていた。Intelは、その中ではどちらかというと後発組だった。Intelは、業界の流れに追いつくために、マルチコア化を加速していると見られる。 マルチコア化が始まったのはサーバー向けCPUだ。IBMはすでにPowerアーキテクチャで前世代のPower4からデュアルコアを採用。さらに現在のPower5ではデュアルコア+Simultaneous Multithreading(SMT)で、実質4スレッドの並列処理をできるようにした。 IBM同様にサーバー市場に重点を置くSun Microsystemsも、2003年春に全面的なマルチコア化路線を明らかにした。富士通も「SPARC64 VI」でマルチコア採用と発表しており、同CPUはSunのロードマップにも組み込まれる見込みだ。 もともと多数のスレッドが走るサーバーマシンでは、スレッドの並列処理「スレッドレベルパラレリズム(TLP:Thread-Level Parallelism)」が効きやすい。そのため、サーバーのマルチコア化は当然の流れだ。面白いのはSunの路線で、高パフォーマンスコアのUltra SPARCラインをデュアルコアにするだけでなく、低パフォーマンスコアを多数搭載するマルチコアCPU「Niagara」をエッジサーバー向けに開発している。これは、エッジサーバーでは、各スレッドがそれほど高性能を必要としないが、多数のスレッドを走らせる必要があるからだ。このエッジサーバー向けCPUのため、SunはマルチコアCPU開発メーカーのAfara Microsystemsを買収している。 サーバー向けCPUでは、Intelも何度かのロードマップ変更の結果、流れに追いつきつつある。2005年にはIA-64とIA-32の両サーバーCPUでデュアルコアを投入、2006年には5個以上のCPUコアを搭載したIA-64 CPU「Tukwila(タックウィラ)」を投入する予定だ。また、SunのNiagaraに相当する低パフォーマンス&低消費電力のマルチコアCPUの開発にも着手したとも報道されていた。 しかし、マルチコアへ向かうのはサーバーばかりではない。むしろ、サーバー以外の分野のCPUの方が、ここへ来てマルチコア化が目立つ。それはゲーム機だ。 ●マルチコアへ向かう次世代ゲーム機 ゲーム機ではソニー・コンピューターエンタテインメント(SCE)の次世代PlayStation 3に搭載されるCellプロセッサがマルチコアを採用する。2次世代Xbox(コードネーム:Xenon)に搭載されるPowerPCも、確認は取れていないが、マルチコアになると言われている。 ゲーム機がマルチコアへ向かうのもリーズナブルな動きだ。それは、ゲーム機にはレガシーソフトウェア資産の足かせがなく、コンピューティングの多くがマルチメディア系処理だからだ。 PCの場合には、従来のソフトウェアがシングルスレッドを前提として作られていたため、マルチコア化しても既存のソフトはシングルアプリケーションの性能を上げにくい。それに対して、ゲーム機では世代毎に従来のソフトウェア資産をご破算にして、新しく作り直す。そのため、マルチスレッド化を支援できる開発環境を用意できれば、ソフトウェアをマルチコアハードに最適化させやすい。 また、一般論で言えば、マルチメディア系処理の方が、マルチスレッドに分解しやすい。そして、特定のCPUリソースを占有することの多いマルチメディア処理では、SMTよりもマルチコアの方が性能を上げやすい。 ソフトウェア資産の縛りがゆるいゲーム機は、ハードウェア面で革新的なジャンプがしやすい。その利点が、マルチコア化でも活かされることになる。 ゲーム機に採用されるマルチコアCPUは、他の用途にも転用される可能性が高い。例えば、Cellは、SCE、IBM、東芝の3社が協同で米オースティンのSTI Design Centerで開発しており、3社はPlayStation 3以外にも展開する。SCE/ソニーはCellベースのワークステーションの開発表明をしており、サーバーにも展開する見込みだ。IBMも、CellをSunのNiagaraと似たような位置づけで使う可能性は高いと思われる。また、SCEと東芝は、ホームサーバーにCellを採用することを、以前から示唆している。ちなみに、最初のCellワークステーションやサーバーはPlayStation 3搭載のCellと同じCPUをデュアルプロセッサで搭載、ホームサーバーはCell内部のCPUコアを増やした構成になると見られる。 Xenonに搭載されると言われるIBMのPowerPC 970(PowerPC G5)系も、もともとデュアルコアのPower4から派生して来た第2世代のPowerPCアーキテクチャだ。そのため、同アーキテクチャの発展の次のステップがマルチコア(またはマルチコア+SMT)になるのは自然の流れだ。その意味では、PowerPC G5系は、将来的には、PC向けも含めてマルチコア化していくことが予想される。 PC向けのマルチコアも、水面下で進展していた。PC向けx86系CPUのマルチコア化では、AMDが最初に名乗りを挙げた。AMDは2001年にHammer(K8)アーキテクチャの概要を発表した際に、デュアルコアを見越してHammerを開発していることを明らかにした。おそらく、その時点から90nmプロセスでデュアルコア化することを計画していたと見られる。 面白いのは、これらのゲーム機&組み込みやPC向けマルチコアCPUも、サーバー向けマルチコアCPUとほぼ同じ時期に登場してくることだ。Cellを搭載したPlayStation 3は2006年前半までには登場し、Cellベースの他の機器もそれと前後して姿を現すと見られている。AMDは2005年第2四半期にデュアルコアのOpteron群を準備していると言われており、2005年中にはAthlon 64 FXもデュアルコア化する見込みだ。 こうして見ると、マルチコア化の流れの中では、Intelはどちらかというと出遅れていたことがわかる。特にフラッグシップのデスクトップ向けCPUでは、2006年後半にようやくデュアルコアの予定で、明らかに一歩遅れていた。対AMDだけでなく、CPU業界全体のトレンドに、やや遅れていた。それが、Intelが慌てている理由の1つだと思われる。
●スレッド並列化が性能向上の唯一の道 なぜCPUが一斉にマルチコア化し始めたのか。それにはいくつかの理由がある。(1)まず、根元的な理由は、TLPを向上させないとCPUの性能が上がらなくなってきたこと。(2)CPUの性能強化の方向が周波数向上よりも並列度向上に傾いてきたことも重要な要素だ。(3)そして、マルチコアにしないとCPU設計が難しくなってしまったことも要因として挙げられる。 CPUの性能向上は、動作周波数の向上と1サイクルで実行できる命令数(instruction per cycle:IPC)の向上で達成される。これまでのCPUは、スーパースカラ型アーキテクチャを採ってICPを1以上に高めてきた。Athlon 64やAthlon XPは3命令を1サイクルにデコード可能で、Pentium 4は3内部命令(uOPs)を1サイクルにフェッチできる。つまり、ピークで3命令/サイクルが可能なわけだ。しかし、従来のx86系CPUの場合、IPCを平均で3命令/サイクル以上に引き上げることは難しいと言われていた。 IPCを上げられない最大の原因は、1つのインストラクションフロー(命令の流れ)の中で、命令を並べ替えてスケジューリングする場合には、3命令以上の並列化を抽出することが難しいからだ。 だが、TLPによって複数スレッドを並列に走らせる場合には話が違ってくる。TLPでは依存性の薄い複数のインストラクションフローから並列化できる命令をそれぞれ抽出するため、CPU全体でのIPCを従来アーキテクチャより大幅に高めることができる。言い換えると、CPUの処理の並列化を、命令レベルからスレッドレベルへと引き上げることで、より高い並列度を実現するのがTLPというわけだ。 CPUの性能は、周波数×並列度で決まるが、Pentium 4はTLPの実装以外は、どちらかといと周波数向上に、よりフォーカスした設計だった。しかし、現在の流れを見ると、ハイエンドCPU設計のトレンドは、動作周波数の向上から並列度向上へと比重が移りつつあるように見える。 その背景には、高周波数で高電圧、長パイプラインのCPUでは電力効率が悪いという事情もある。周波数向上はそこそこに止めて、並列度を上げた方が、消費電力のうちのアクティブ成分は削減できる。Intelの場合では、モバイル向けのデュアルコアCPU「Yonah(ヨナ)」がそうした理由から、デュアルコアになっている。つまり、CPUアーキテクチャのトレンドが並列度重視へと傾き、そのためにTLPの強化に向かっているという側面もある。 ●流れはマルチコアまたはマルチコア+SMT 問題はTLPの実装方法で、1CPUでTLPを実現するには次の3つの方法がある。(1)Hyper-Threadingのように単一のCPUコアで複数スレッドを同時処理するSMT、(2)複数のCPUコアを1個のCPUに搭載するマルチコア、(3)SMTとマルチコアの両方を合わせたアプローチ。 これまでの流れでは、サーバー系CPUはマルチコアまたはマルチコア+SMT。ゲーム機などはマルチコア。IntelがSMTだけをデスクトップPC向けCPUに実装したが、そのIntelもノートPCではマルチコア、サーバーではマルチコア(おそらく+SMT)へ向かっていた。そこへAMDがマルチコアだけを実装して来る状況になり、IntelがデスクトップPCにデュアルコアを前倒ししたわけだ。 SMTとマルチコアにはそれぞれ利点がある。 SMTの利点はCPUリソースをそれほど増やすことなくTLPを実現できる点。IntelのPentium 4がいい例で、ほんの5~10%程度のダイの拡張で2スレッドの並列処理ができるようになった。ただし、CPUリソースはスレッド間で共有するために、リソースが競合する場合には性能向上が望めない。 それに対して、マルチコアの利点はリソースの競合がないことで、各スレッドがシングルCPU時と同等のCPU内部リソースを使うことができる。その反面、CPUコアが2倍になる分、トランジスタ数はより必要になる。逆を言えば、複数コアが経済的なダイサイズ(半導体本体の面積)に収まるプロセス技術が可能になれば、マルチコアでも問題はなくなるわけだ。 これまでの流れだと、Intelが先にSMTを導入したために、SMT対マルチコアの技術対立のように見えるが、実際にはそうではない。マルチコアがSMTに取って代わるわけでもない。SMTにも明確な利点があるからだ。 SMTの最大の利点は、CPUリソースの有効利用で、特にメモリレイテンシの見かけ上の隠蔽には効果がある。SMT CPUの場合は、1つのスレッドがメモリアクセス待ちでストールしている間も、同じCPUコアが別なスレッドを走らせることができるからだ。つまり、現在のCPUの最大の問題である、メモリ待ちによるCPUコアのストールを防ぐことができる。現在のCPUの場合、メモリ待ちで数100サイクルをロスすることも珍しくない。そのため、CPUの実行リソースを増やさなくても、メモリレイテンシの隠蔽だけで全体の処理性能を上げることができる。 ただし、現在のCPUのトレンドは、SMTだけを強化していく方向にはない。大きなトレンドでは、マルチコアまたはSMT+マルチコアのどちらかに収斂していくように見える。これは、SMTの発展性の限界に原因がある。 SMTでIPCを上げようとすると、命令フェッチや実行リソースをもっとリッチにしなければならない。しかし、現状では、リソースはそれほど強化せずにSMTを実装したCPUコアを複数個搭載するマルチコア+SMTがトレンドだ。サーバー系CPUの大勢は、こうした方向に向かっているように見える。その背景には、CPUコアをこれ以上複雑にすることが難しいという事情もある。 ●難しくなるCPU設計がマルチコアを後押し CPU設計の難度が上がっていることも、マルチコア化の大きな理由だ。 なぜ、CPUの設計が難しくなっているかというと、CPUの複雑度が増しているからだ。ムーアの法則に従って、CPUに搭載できるトランジスタ数は指数関数的に増えてきた。問題は、それに伴いバグも開発コストも増え、パフォーマンスチューニングも難しくなってきたことだ。複雑化した現在の最先端CPUでは、設計の全体像を把握することも難しくなり、プロジェクトの管理も難しくなっているという。つまり、OSが巨大化するにつれて開発が難しくなるのと同様に、巨大CPUの開発も難しくなってきたわけだ。 特に、一から作られたCPUと異なり、多くの資産を引きずるIA-32の場合はパフォーマンスチューニングが難しいという。この問題は、IntelでPentium III/4などのアーキテクトだったBob Colwell(ボブ・コールウエル)氏が、2004年2月、米スタンフォード大学で行なった講演「Things CPU Architects Need To Think About」などで指摘されている。同氏は、IA-32のパフォーマンス向上を、「ゾウを急坂に押し上げるようなもの(Pushing Elephants up Steep Hills)」と形容。無理な高速化により、アーキテクチャ上の脆弱性が増していると説明している。 例えば、現在のCPU設計では、正確なパフォーマンス分析ができる段階になって問題が発見されても、設計が進みすぎていて本質的な修正ができない。そのため、ボロ隠しのような小手先の修正を加えることになる。しかし、その結果、複雑さの上に複雑さを重ねることになり、別な問題を招いてしまうことがある。例えば、1つの問題箇所を直すと、2つの問題が発生するようなことになるという。あるCPU設計者は、これはCPU開発ではしばしば発生する問題だと同意する。 こうしたCPU開発の現状からは、シングルコアをより複雑に高機能にする方向には、限界が近づいていることがうかがえる。それなら、CPUコア自体はむやみに複雑化せずに、CPUコアを複数個載せて性能をアップした方が、より安全で確実な道ということになる。 つまり、CPUの性能向上だけでなく、CPU設計の事情からも、マルチコアは当然の流れというわけだ。
Things CPU Architects Need To Think About (2004年8月12日) [Reported by 後藤 弘茂(Hiroshige Goto)]
【PC Watchホームページ】
|
|