●マルチコア時代になってCPUの周波数は60%に低下 マルチコア時代は、低周波数の時代でもある。IBMという例外を除けば、ほとんどのパフォーマンスCPUは、比較的低い動作周波数で複数のCPUコアを載せる方向へと向かっている。下のスライドは、8月20日から米スタンフォードで開催されたハイパフォーマンスチップのカンファレンス「HotChips 18」でのIBMのキーノートスピーチにあったスライドだが、「あのGHzはどこへ行った」というのは、多くの人が抱いている疑問だ。
終わりなきGHz追求からの転換が、もっとも典型的だったのはIntelだ。Intelの現在のCPUの動作周波数は、2002年頃までの予測を大きく下回っている。もともとの計画では、Intelは90nmプロセスの「Tejas(テハス)」で4.4GHz~5GHz、Tejasの65nm版は5GHz以上からスタートする予定だった。しかし、Intelの新マイクロアーキテクチャ「Core Microarchitecture (Core MA)」は65nmで3GHz前後止まり。動作周波数は、オリジナルプランの60%前後にまで落ちた計算だ。分岐点になっているのは、前回のレポートで紹介したIBMの指摘通り2003年だ。
しかし、IntelがCore MAで周波数を落としたことで、x86系のパフォーマンスCPUの周波数は似たようなラインに揃った。今や、IntelのCore MAとAMDのK8で、CPUの周波数に決定的な差はない。周波数が横並びになった原因は単純で、両アーキテクチャのパイプライン段数が近いレベルにあるからだ。パイプラインはCore MAが14ステージ、K8が12ステージ。同じような複雑度のCPUが、パイプライン段数で極端に違わないのなら、動作周波数も大きくは違ってこない。これが、NetBurstマイクロアーキテクチャの20~31ステージという深いパイプラインなら、周波数も60%もの大差が開くのは当然となる。 IntelはAMDとそれほど変わらないレベルのパイプライン段数に抑えた理由を、パフォーマンス/消費電力を上げるためと説明する。これは、パイプライン段数とパフォーマンス/消費電力がトレードオフの関係にあるからだ。そして、両社ともパイプラインを浅くし、周波数を抑えたCPUコアを複数並べたマルチコアが、効率上は有利になると説明する。 ●周波数とIPCのバランスを取って周波数を決める CPUのパフォーマンスは、「周波数×IPC (instruction per cycle:1サイクルで実行できる命令数)」に比例する。つまり、“どれだけ速く命令を実行するか”דどれだけ多くの命令を1サイクルに実行できるか”が性能を決める。下のIntelのスライドの、上側のチャートが示す通り、これがCPUパフォーマンスの基本セオリーだ。
そのため、1 IPC×3 GHzのCPUは、2 IPC×1.5 GHzのCPUと、理論上は同程度のパフォーマンスということになる。そして、CPUマイクロアーキテクチャ(内部アーキテクチャ)上は、周波数とIPCは一般的にトレードオフの関係にある。 周波数を上げる方法はさまざまだが、マイクロアーキテクチャ上のテクニックではパイプラインを深くすることが、ほぼ高周波数化と同義になっている。パイプラインを細分化すればするほど、原理的には高周波数動作が可能となる。
しかし、パイプライン段数を多くすると周波数が上がる代わりにIPCが落ちる。パイプラインが乱れた場合のペナルティなどが大きくなるからだ。逆に段数を少なくしてIPCを上げると周波数が下がってしまう。そのため、CPUマイクロアーキテクチャでは、周波数とIPCのバランスを取って、パフォーマンスが最高となる最適スポットを見つけることが重要となる。 下の図はよくあるパイプライン段数とパフォーマンス(周波数×IPC)の関係を示す概念図だ。実際には、IPCも一般論で語ることはできず、主にどんなアプリケーションを考えるかによって、この図はかなり異なってくる。図は、ISSCC(IEEE International Solid-State Circuits Conference) 2006でIBMが行なったPower 6の論文のプレゼンテーション(「24.1 4GHz+ Low-Latency Fixed-Point and Binary Floating-Point Execution Units for the POWER6 Processor」B. Curran1, B. McCredie2, L. Sigal3, E. Schwarz1, B. Fleischer3, Y-H. Chan1, D. Webber1, M. Vaden2, A. Goyal)で示したスライドを参考にして作成している。
周波数とIPCはトレードオフにあるため、CPUのパフォーマンスは山なりの曲線を描くことになる。周波数が高すぎても、IPCが高すぎても、論理性能は落ちてしまう。そのため、極端に偏重するよりも、適度な周波数と適度なIPCの組み合わせがパフォーマンスをピークにする。 図で言うと、カーキのパフォーマンス曲線がピークになるあたりが、論理上ではCPUマイクロアーキテクチャのスイートスポットとなる。図中のスイートスポットの部分は元のIBMのスライドにはなく、書き足したものだ。純粋にIPCと周波数のかけ算で考えると、スイートスポットは一定のレンジに決まってくる。もちろん、ターゲットとするアプリケーションによって、ある程度の違いは出る。 ●パフォーマンス/消費電力に注目するとスポットが変わる ところが、実際にはアプリケーション環境が同じはずのPC向けCPUであっても、IPCと周波数のバランスはかなり異なる。NetBurstの深いパイプラインも、こうしたシミュレーションで決定されているが、K8系の中程度の深度のパイプラインとは大きく異なっていた。どうしてそうなるかというと、そこに消費電力が要素として加わるためだ。 パフォーマンス/消費電力に注目すると、チャートがどう変わるかもCPU研究者によって説明されている。これもIBMのISSCC 06のチャートを参考にすると、下の図のようになる。図中のスイートスポットの部分は元のIBMの図にはなく、書き加えている。
図の通り、消費電力はパイプライン段数が深くなるに従って上がっていく。もっとも、どの程度電力が上がるかは、マイクロアーキテクチャによってかなり差が出るはずで、それによって図も変わる。この図は、右に行くに従ってパイプライン段数を上げるだけでなくダイナミック回路など、より消費電力の多い回路を多用することを想定しているため、急激な曲線になっているようだ。しかし、そうでなくても、段数が増えれば回路的にはラッチが増え、アーキテクチャ的には内部命令スロットなどが増えるので消費電力は上がるとされている。 周波数が上がるにつれて増える消費電力。そのため、パフォーマンス/電力を主眼にマイクロアーキテクチャを考えると、スイートスポットは変わってくる。パフォーマンス/消費電力は、図の左(低周波数)へ行けば行くほど上がるが、PC向けCPUでは絶対パフォーマンスも必要だ。そのため、パフォーマンス/消費電力が比較的良好な割にパフォーマンスが高いスポットがPC向けのスイートスポットとなる。だから、スイートスポットが、従来より左、つまり、やや低周波数かつ高IPCのレンジに落ち着いたわけだ。IBMはISSCCのキーノート(Plenary Session)でも、これと同じような図での説明を行なっている。 実際、AMDは、パフォーマンス/消費電力に注目すると、K8で高周波数アーキテクチャは取れなかったと説明している。つまり、周波数を考慮した結果、K8では従来より左の位置に周波数とIPCのバランスを持ってきた。そして、IntelもCore MAでは、Tejas計画の60%程度の周波数のところに来た。 つまり、パフォーマンス/消費電力でCPUマイクロアーキテクチャを決定する必要がある現在では、IPCと周波数のバランスは、これまでより高IPCかつ低周波数寄りにずれるのが論理的となる。パフォーマンスからパフォーマンス/消費電力へとフォーカスが変わった結果、必然的にスイートスポットが移動したわけだ。 もっとも、ここで言っている周波数の要素は、パイプライン段数だ。そのため、パイプライン段数を増やさずに(=消費電力を増やさずに)周波数を上げることができるなら、このチャートは当てはまらない。実際、IBMは次期Powerマイクロアーキテクチャ「Power6」で、パイプライン段数を増やさずに4~5GHzの高周波数を達成している。 ●周波数を下げてCPUコア数を増やすとパフォーマンス/消費電力が上がる こうした背景から、低周波数かつ高IPCのCPUコアアーキテクチャが、論理的にパフォーマンス/消費電力上では合理的となる。では、その高効率のCPUコアを1個でなく複数個積んだ方が、さらにパフォーマンス/消費電力で有利になるのはなぜなのか。 これについては、低周波数のデュアルコア/クアッドコアへと移行を進めるIntelとAMDが、それぞれほぼ同じ内容の説明を行なっている。下がAMDがHotChips 18で示したプレゼンテーションスライドだ。
いちばん左がデュアルコアCPUを高周波数にした場合、真ん中が基準でデュアルコアCPUを一定周波数で動作させた場合、右がクアッドコアCPUを低周波数で動作させた場合。それぞれ、緑が性能、赤が消費電力を示している。 左のバーを見ると、デュアルコアのままで16%周波数を上げると14%パフォーマンスが上がるが、消費電力は51%も上がってしまう。しかし、右を見ると、クアッドコアにして16%周波数を抑えるとパフォーマンスは73%も上がり、消費電力は1%低下とほぼ同じラインを維持する。つまり、低周波数化してもCPUコア数を増やした方が、パフォーマンスが上がるし、パフォーマンス/消費電力は向上するとAMDは主張しているわけだ。 どうしてこうなるのか。それは、周波数の引き上げが3乗で消費電力に響くからだ。CPUの消費電力のうちアクティブ電力は「キャパシタンス(Cdynamic)×電圧(Vdd)の2乗×動作周波数(F)」で決まる。コアのマイクロアーキテクチャが同じなら、キャパシタンスは必然的に決まるので、あとは電圧の2乗×周波数に比例することになる。下は、最初に出したのと同じIntelのスライドだが、この下のチャートがこのセオリーを示している。
●周波数は3乗の法則で消費電力を押し上げる 問題は、電圧と動作周波数が連動していること。同じダイで周波数を上げようとすると、電源電圧も上げる必要がある。これは、電圧を上げることでオーバークロックが可能になることでわかる。しかし、消費電力は電圧の2乗×周波数に比例するので、周波数を少し上げるだけで、消費電力に大きな影響が出てしまう。 単純化すると、16%高周波数にするために、16%電圧を上げる必要があったとする。その場合のコアの電力消費は、116%の3乗で156%となる。逆に16%周波数を下げることで、電圧も16%下げることが可能になったとする。その場合、コアの電力消費は84%の3乗で59%になる。そして、84%周波数で59%消費電力のコアを2倍に増やすと、消費電力は118%となる。 もっとも、実際には、電圧と周波数は単純にリニアに連動しているわけではない。また、周波数の向上分だけパフォーマンスも上がるわけではない。だから、理論値とAMDのチャートとはある程度の誤差がある。しかし、AMDのチャートを見る限り、大まかにいって、この公式が当てはまることがわかる。 こうした背景から、理論上、同じアーキテクチャのCPUコアでも、高周波数で動作させればさせるほど、消費電力は劇的に跳ね上がる。3乗の法則が効くため、低周波数動作のCPUほど、パフォーマンス/消費電力がぐっと高くなる。 つまり、これまでは、CPUに周波数を引き上げるヘッドルームがあれば、どんどん周波数を引き上げた。しかし、今では、ヘッドルームがあっても、抑えて低周波数かつ低電圧に保った方が効率がいいCPUになるということになる。 もっとも、低周波数にすると、CPUコア自体のパフォーマンスは下がってしまう。AMDのチャートでも、デュアルコアの性能は90%以下に下がってしまっている。そこは、搭載するCPUコア数を増やすことで埋める。AMDのチャートでは、コアを2倍にしてクアッドコアにすることで173%のパフォーマンスを実現する。低周波数で動作させた低消費電力のコアを、2倍の個数積むと効率的になると示したのがAMDのチャートというわけだ。 整理すると、CPUコアの周波数と電圧を下げて消費電力を落とすことが可能になるのは、マルチコア化によってパフォーマンスを上げることを前提としているためだ。シングルコアで無理してパフォーマンスを上げるのはやめて、マルチコアでCPUパフォーマンスを上げようとなって、初めて、CPUコアを低周波数&低電圧にして、パフォーマンス/消費電力を上げようという話になる。マルチコア化と低周波数化が、ここで密にリンクしてくるわけだ。 □関連記事 (2006年8月31日) [Reported by 後藤 弘茂(Hiroshige Goto)]
【PC Watchホームページ】
|
|