●Intel初のデュアルコアCPUはMontecito IntelがいよいよデュアルコアCPUのライブデモを行なう。 Intelは今週開催される開発者向けカンファレンス「Intel Developer Forum(IDF)」で、マルチコアを前面に押し出す。IDFでは、エンタープライズソリューションのキーノートスピーチの中で、デュアルコアCPUのデモを行なう予定だ。おそらく、デモが行なわれるデュアルコアCPUは、次期IA-64プロセッサ「Montecito(モンテシト)」になるだろう。 Montecitoは2005年中盤に投入される予定の次世代Itanium系デュアルコアCPU。Intelの、2005年のデュアルコアCPUラッシュの一番手になると予想されている。Intelは、8月のチップ業界カンファレンス「Hotchips 16」(8月22~24日)で、すでにMontecitoの概要を明かしている。そのプレゼンテーションを見ると、MontecitoがIntel系CPUの中では一番のモンスターだということがよくわかる。また、Montecitoには、IA-32系CPUも含めた、今後のIntel CPUの進む技術的なトレンドも映し出されている。 Montecitoは、Prescott(プレスコット)同様に90nmプロセスで製造し、Itanium2系CPUコアをデュアルで搭載する。キャッシュを合計27MB以上搭載するため、トランジスタ数は17億2000万に達する。Prescottの10倍以上だ。 CPUコア自体も強化されており、マルチスレッド技術「Coarse-Grain Multithreading」技術を採用し、それぞれのコアが2スレッドをオンザフライで走らせることができる。つまり、合計で4スレッドのスレッド並列性(TLP:Thread-Level Parallelism)がある。 下がMontecitoのブロック図だ。L3キャッシュまできれいに分かれた2つのコアが1つのCPUの中に搭載されている。コア間でのキャッシュの共有は行なわず、2つのコアが共有するのはシステムバスのみだ。この構成は、AMDのデュアルコア構成と似ている。AMDもL2キャッシュを2つのコアに分離して持たせるデュアルコアを取る。
Montecitoの場合は、コアのキャッシュ構成を変えなかったのは、既存のIA-64プログラムの最適化との互換性も考慮したためと推測される。IA-64の場合は、スタティックコンパイラで命令レベルのスケジューリングを行なうため、キャッシュ構成の変化などは最適化に影響すると思われる。もっともMontecitoコアでは、L2キャッシュは従来のMcKinley/Madisonコアと若干異なる。従来はこれまで統合型だったL2キャッシュが、命令とデータに分離されている。1MBのL2命令キャッシュと、256KBのL2データキャッシュの構成となっている。 Montecitoではシステムバスも、従来のItanium2系と互換性を持つ(533MHzの高速バスも導入されるがアーキテクチャは同じ)。サポートチップセットもIntel E8870と、今までと変わらない。 ●Montecitoでマルチスレッド技術を導入 MontecitoのCPUコアは、基本的にItanium2(McKinley/Madison)系のアーキテクチャとなっている。命令発行ポートと実行ユニットはItanium2同様に11だ。ただし、Itanium2と異なる点もある。目立つのは、レジスタなどのリソースの二重化。整数レジスタ、浮動小数点レジスタ、ブランチレジスタ、プレディケイトレジスタといった、アーキテクチュラルリソースが全て二重化されている。また、L1キャッシュのTLBなども拡張されている。これは、マルチスレッディングのためだ。
もっとも、Montecitoが採用するCoarse-Grain Multithreadingは、比較的簡易なマルチスレッディング技術だ。Hyper-ThreadingなどのSMT(Simultaneous Multithreading)技術では、複数のスレッドの命令を同時に実行することができる。それに対して、Coarse-Grainでは複数スレッドでパイプラインのタイムシェアリングを行なう。 通常、L3ミスやキャッシングが不能なアクセスが生じた場合、CPUコアはメインメモリまでアクセスしなければならないため、非常に長いレイテンシが生じてしまう。従来のシングルスレッドCPUでは、こうした場合は、データロードを待ってから処理を再開、それから次のスレッドに切り替える。そのため、アクセス待ちの間はCPUコアはアイドル状態になってしまう。Intelによると、アプリケーションによっては、このアイドル状態がCPUサイクルの大半を占めているという。 そこで、Coarse-Grainマルチスレッディングでは、メインメモリアクセスなど長レイテンシのイベントが発生した時点で、別スレッドに処理を切り替える。その時、アクセス待ちをしている方のスレッドのアーキテクチュラルステイト(レジスタ内容など)はそのまま保持する。2つ目のスレッドを、別な独立したアーキテクチュラルステイトで走らせる。 Montecitoがレジスタセットなどを二重化しているのはそのためだ。SMTと同様に2つのステイトが保持されるため、Coarse-Grainマルチスレッディングでも、見かけ上は1個の物理CPUコアが、2個の論理プロセッサに見える。
●メモリレイテンシの隠蔽に主眼を置いた技術 ただし、SMTは複数スレッドの命令を完全に混在させて実行できるが、Coarse-Grainマルチスレッディングはそうではない。スレッド0がストールしている間にスレッド1を走らせるだけで、同一サイクルで2つのスレッドの命令を混在させて実行することはできない。つまり、2スレッド/サイクルはできない。各スレッドは同サイクルで他のスレッドと、実行リソースを共有しないわけだ。 しかし、アクセス待ちでCPUコアがストールしている時間に別スレッドを実行できるため、CPUコアをよりビジーに保つことができる。CPUコア側から見れば、メモリ待ちのアイドル状態をある程度解消できるため、見かけ上メモリレイテンシが隠蔽される。 IA-64の場合、スタティックなスケジューリングで命令並列性(Instruction Level Pararelism:ILP)を高めているため、SMTのように複数スレッドから並列できる命令を抽出して、命令スロットを埋める必要は薄い。しかし、メモリレイテンシのペナルティはIA-64でも、抜本的には解消できない(ロード命令をストア命令や分岐命令の前に実行することはできる)。そのため、メモリレイテンシの隠蔽に効果のあるCoarse-Grainマルチスレッディングを採用したと思われる。 また、IA-64プロセッサは、スケジューリングをコンパイラが行なうため、動的な命令スケジューリング機構を持たない。そのため、SMTで複数スレッドを命令レベルで混在させるためには、動的にスケジューリングを行なうリソースの追加が必要になってしまう。Intelによると、Montecitoではコアを2%増やしただけでCoarse-Grainマルチスレッドが実現できたという。Coarse-Grainマルチスレッディングは最小のコストで、IA-64である程度有効なマルチスレッドを実現する手段だったとも言える。また、IA-64にSMTを導入した場合、せっかく依存関係のない命令を抽出して命令グループ「Bundle(バンドル)」単位でまとめたものを、ある程度崩してスケジューリングすることになる。 マルチスレッディングにはこの他、複数スレッドの命令を1サイクル毎に切り替えて実行する「Fine-Grainマルチスレッディング」技術もある。IA-64アーキテクチャの場合でも、Fine-Grainマルチスレッディングは比較的容易に実装できると推測される。Fine-GrainはCoarse-Grainより効率的にアイドル状態を解消できるが、Montecitoでは採用しなかった。その理由も、IA-64バイナリの最適化を崩さないためだと思われる。IA-64ではレイテンシを考慮してスケジューリングしているため、ある程度の粒度を保たないとせっかくの最適化が崩れてしまう。 Montecitoは、デュアルコアとCoarse-Grainマルチスレッディングによってスレッド並列性(TLP)を高める。従来のItanium2が1CPUコアであったのに対して、Montecitoでは物理的には2CPUコア、論理的には4CPUコアになる。物理リソースを増やしてマルチスレッドパフォーマンスを向上させるためにデュアルコアを導入し、メモリレイテンシの隠蔽にコア内でのマルチスレッディングを使うといった配置だ。 おそらく、これは今後のCPUの大きなトレンドになるだろう。Intelのデスクトップ向けのデュアルコアCPU「Smithfield(スミスフィールド)」は、現状ではHyper-Threadingがイネーブルにされるかどうかはわからない。しかし、長期的なトレンドでは、おそらくマルチコア+SMTへと向かうだろう。デュアルコアだけでは、メモリレイテンシによって各コアの実行効率が落ちてしまうからだ。 ●SpeedStepライクな省電力技術も導入 Montecitoには、この他にも新技術がいくつか導入されている。SpeedStepライクな電圧&周波数のダイナミック切り替え技術「Foxton(フォックストン)」テクノロジ、仮想マシン支援ハード「Silvervale(シルバーベイル)」テクノロジ、キャッシュのエラーチェックメカニズム「PELLSTON(ペルストン)」テクノロジなどだ。 Foxtonは動的にCPUの電圧と周波数を切り替える技術で、基本的にはSpeedStepと同じだ。ただし、モバイルCPUのSpeedStepが平均消費電力を下げるために使われるのに対して、FoxtonはCPUの消費電力枠(Power Envelope)を下げたり制御するために使われる。この点は、IntelがデスクトップCPUのPentium 4 6xxで導入する「Enhanced Intel Speedstep Technology(EIST)」でも同じだと思われる。 Foxtonの仕組みは比較的単純だ。CPUの消費電力が規定の枠(Power Envelope)を超えたり、CPU温度が既定値を超えた場合、Montecitoは自動的に電圧(&周波数)を下げ始める。電力消費がPower Envelopeまで下がったら、その状態を維持できる電圧を保つ。CPUの負荷が下がり消費電力がPower Envelopeを下回り始めたら、ある程度のレイテンシ後に電圧を上昇させる。そして、通常状態では、最高周波数を保つことができる最低電圧を維持する。 Foxtonの導入によって、MontecitoではPower Envelopeを従来のItanium2の130Wから100Wへと下げている(MontecitoではPower EnvelopeはOEMが設定できるため100WはあくまでもIntelの規定した値)。つまり、0.13μmでシングルコアのItanium2が130Wであるのに対して、90nmのMontecitoはコアがデュアルになったにもかかわらず100Wに抑えられたわけだ。これを見ると、EISTによってSmithfieldのTDPもかなり引き下げられる可能性がある。前回のコラムの予想は間違えていたかもしれない。また、Power Envelopeが100Wということは、ついに、Itanium系がPentium 4系よりも消費電力が下がったことを意味する。
Silvervaleは、IntelがデスクトップCPUで導入しようとしている「Vanderpool(バンダプール)」と類似の技術だ。仮想マシンマネージャ(VMM:Virtual Machine Manager)ソフトウェアをハードウェアで支援する。ただし、以前Intel関係者は、SilvervaleはVanderpoolより機能的には強化されるだろうと語っていた。IBMがメインフレームzシリーズで導入しているような高度な仮想マシン技術を持ってくるという。 Silvervaleも、機構的には、おそらくCPUに新しい特権レベルを設け、そのレベルでしか利用できない機能を用意することで実現すると見られる。そのため、同系列の機能拡張の上にハードウェアセキュリティ機能も実装されると予想される。 このように、Montecitoは、デュアルコア、(コア内での)マルチスレッディング、動的電圧&周波数切り替え、仮想マシン支援といった技術を満載する。これらの技術は、基本的にはIA-32側のPrescott/Smithfield世代と同じだ。つまり、IA-32とIA-64といった命令セットアーキテクチャの違いにもかかわらず、Intel CPUは同じ方向へと向かっている。これらの技術が、Intel全体の技術トレンドだということだ。 □関連記事 (2004年9月6日) [Reported by 後藤 弘茂(Hiroshige Goto)]
【PC Watchホームページ】
|
|