後藤弘茂のWeekly海外ニュース

環境条件を利用して性能を引き上げるターボモードの秘密




●イスラエルのハイファデザインセンターの研究開発

ハイファデザインセンター
IntelのRon Friedman(ロン・フリードマン)氏

 Intelは、“ターボモード”をCPUに実装し、CPU内外のさまざまな条件の変化に応じてCPUコア単位でパフォーマンスをブーストする。それによって、システムの冷却能力の枠内で、効率的にパフォーマンスを高める方向へと進もうとしている。イスラエルのハイファ(Haifa)にある開発施設「Haifa Design Centre(ハイファデザインセンター)」では、ターボモードの広汎な適用を研究している。そして、ターボモード技術は同センターの開発したCPUだけでなく、Intel CPU全体で適用されると見られる。

 Intelは、ハイファデザインセンターで、ターボモードのビジョンの説明を行なった。ハイファデザインセンターを担当するIntelのRon Friedman(ロン・フリードマン)氏(Vice President, General Manager, Mobile Microprocessors Group)は、同センターのCPU開発の基本思想を説明。その中で、ターボモードが広汎に適用される技術であることを強調した。

 ハイファデザインセンターが開発したCore Microarchitecture(Core MA)では「Enhanced Dynamic Acceleration Technology(EDAT)」と呼ぶターボモードを実装した。EDATは45nm版のCore 2 Duo(Penryn:ペンリン)からイネーブル(有効に)される。Intelは、PenrynのEDATがシングルスレッドアプリケーションの性能をブーストする技術だと説明してきた。

「Haifa Design Centre(ハイファデザインセンター)」
PDF版はこちら

 具体的には、EDATはデュアルコアのPenrynで、シングルスレッドアプリケーションを実行する時に、片方のCPUコアがアイドル状態のC3ステイトに入った場合、アクティブCPUコアの周波数を1段階(1 bin)引き上げる。スリープ状態のCPUコアによって減った分の電力消費を、アクティブ状態のCPUコアが消費することでパフォーマンスを引き上げる。

 このEDATメカニズムによって、同じTDP(Thermal Design Power:熱設計消費電力)の枠内で、シングルスレッド性能を動的に引き上げることができるとIntelは説明している。Intelは、通常、新機能は1世代前のCPUに隠し機能として試験的に実装して、実シリコンで実効性をテストする。そのため、EDATも実際にはMeromから実装され、テストされており、Penrynで初めてイネーブルされるものと推測される。

「Enhanced Dynamic Acceleration Technology(EDAT)」
※別ウィンドウで開きます
PDF版はこちら
EDAT実装の概要
※別ウィンドウで開きます
PDF版はこちら
EDATの性能向上
※別ウィンドウで開きます
PDF版はこちら

●CPUコア自身が環境を認識してターボに入る

 有効に見えるEDATだが、Intelの発表を受けたCPU業界の反応には懐疑的なものもあった。AMDを始め、複数のCPU関係者から否定的な意見を聞いた。

 クエスチョンの1つは、片方のコアだけが高デマンドでもう片方のコアがC3に入るチャンスがどれだけあるかという点。もう1つは、ブーストするのが1 Binだけではパフォーマンスがそうそうアップしないという点。そのため、EDATは、実装して実効性があるのかが疑問だったというわけだ。

 だが、今回、Core MAを開発したハイファデザインセンターのFriedman氏は、Penrynからイネーブリングされる“ターボモード”は、将来的にはEDATで示された条件だけでなく、もっと広い範囲での適用を考えていることを明らかにした。また、ターボアップのレベルも1 BinにとどまらないことがFriedman氏により示された。

 「興味深い現象は、今後、プロセッサコアが、デュアルコア、クアッドコア、さらにその先と、もっともっと増えて行くことだ。そして、(CPUの)マックスパワーは、マルチコアCPUの全てのコアがフル帯域で働いた時に消費する電力で定義されている。しかし、常にそうした状態になるわけではない。

 4コアのうち2コアしかフルで働かない時もあるし、あるいはたった1コアしか働かない時もある。すると、1~2コアが走っていて、他のコアがスリープしている時に、うまくパフォーマンスが得られるようにすることが考えられる。また、室温が35度以下だった時や、プラットフォームが冷たい時に、それを利用してもっとパフォーマンスを得ることも考えられる。

 我々は、これをターボモードと呼んでいる。まず、CPU自身が、コアの稼働状況や温度などの状態を認識する。そして、もしOSが、アクティブなコアに対してより高いパフォーマンスを要求した時には、アクティブなコアのパフォーマンスを消費電力の枠の中で最大まで引き上げる。他のコアがウエイクアップするか、室温やプラットフォームの温度が変わるまでターボ状態を継続する」(Friedman氏)

 Penrynでは、EDATのために、中間のPステイトでのオペレーションポイントのステップを変化させずに、ブースト時の周波数を引き上げることができるメカニズムを実装した。しかし、この実装のトリガーは、CPUコアのアイドル状態だけに限定されていない。つまり、同じメカニズムを、違うトリガーで働かせることができる。Penrynで導入されたのは、そのための基本メカニズムであり、Intelはトリガーをどんどん増やして行くつもりだ。

●環境条件を利用してCPUのパフォーマンスを引き上げる

 こうして見ると、Intelが導入しつつあるターボモードは、包括的なCPUの効率化のメカニズムであることがわかる。Friedman氏は次のように語る。

 「ターボモードは、環境条件をうまく使うことで、同じ消費電力(TDP)の中でより高いパフォーマンスを引き出すための、新しいメカニズムだ。ターボモードの本質は、楽観主義的なものであって、必ずしも常に利用できるわけではない。しかし、ユーザーが使う時間のほとんどで、ターボモードのベネフィットを得られると考えている。

 例えば、CPUのスペックでは、環境(ambient)温度が35度で定義されている。ところが、オフィスでは、実際には室温が30度以上になることはない。通常のオフィスはそれより低く、例えば、このビル(ハイファデザインセンター)は23度だ。ターボモードでは、そうした環境の条件を動的に利用する。環境が変われば、ターボ状態から戻る。例えば、(オフィスを出て)アリゾナ砂漠に旅行すれば、環境が変わり、ターボ状態ではなくなる」

 ハイファデザインセンターが考えるターボモードは、一定のサーマルバジェット(冷却能力の余裕)の中で、CPUコアを効率的に働かせるメカニズムの総称だ。デュアルコアの片方のCPUコアのブーストに留まらず、あらゆるチャンスを捉えてCPUコアのパフォーマンスをターボすると見られる。また、ターボする幅も1 Binにとどまらない。Friedman氏は、ほとんどのケースで20%を超えるパフォーマンス向上が得られるだろうと示す。

 こうしたターボモードのビジョンを知ると、これが小さなアイデアではなく、今後のハイファデザインセンターのCPUの、基本的なキーフィーチャとして広く活用されて行くことがわかる。また、イスラエル開発のCPUだけでなく、NehalemなどIntelの他のデザインセンターのCPUにも実装されて行くようだ。モバイルCPUだけでなく、全てのセグメントのCPUに取り入れて行かれると推測される。

TDP枠内で最も高い性能を得る方法

●マルチコア化が進むと利点が増えるターボモード

 ターボモードへの遷移のトリガーには、さまざまな条件が想定されている。(1)マルチコアCPUで、一部のCPUコアがアイドルになった場合を利用するEDAT型の方法、(2)環境温度の変化を利用する方法、(3)プラットフォーム温度の変化を利用する方法、(4)このほか、マルチダイCPUの場合にパッケージレベルで複数のダイの電力消費の差を利用する方法がある。

 (1)EDAT型のマルチコアの制御では、CPUコア数が増えれば増えるほどベネフィットが増える。クアッドコアやオクタコアになった場合は、全てのCPUコアがフルに稼働できるアプリケーションは限られる。しかし、CPUの電力効率を高めるためには、CPUコアはあまり肥大化させず、CPUコア数を増やすことでピークパフォーマンスを上げる方がいい。そのため、PCのようにスレッド並列性が得にくいソフトウェア環境では、スレッド数が少ない場合と多い場合の両方に、動的にランタイムで適合できるアーキテクチャが望ましい。

 ターボモードは、そうした場合に最適だ。並列性の高いアプリケーションの場合には、全てのCPUコアを規定の周波数で動かすことでパフォーマンスを得る。しかし、スレッド並列性の低い場合には、不要なCPUコアはスリープさせて、アクティブなCPUコアの周波数をブーストさせる。動的に、ある程度細かな粒度で制御することで、同じTDPの枠内で、スレッド並列性の低いアプリの性能を飛躍させる。この手法はCPUコア数が増えれば増えるほど有用であるため、クアッドコアがメインとなるNehalemにも実装されている。

PenrynのEDATと将来CPUの予測されるターボモード
※別ウィンドウで開きます
PDF版はこちら

●低いオフィス温度に合わせてターボする

 (2)環境温度の変化を利用する方法を理解するには、まずCPUの冷却能力の算出方法を知る必要がある。通常、PCを設置する部屋の温度である環境温度(Max External Ambient Temperature:Te)は摂氏35度と仮定される。筐体内のプロセッサ周辺の空気の環境温度(Max Local Ambient Temperature:Ta)は、現在はTeに数度プラスした温度に設定される。デスクトップの場合は、このTaとCPUのケース温度(Tc)の差がサーマルバジェットとなる。つまり、Tcの上限が摂氏67度で、Taが摂氏38度というスペックとなっている場合は、両温度の差である摂氏29度を利用してCPUを冷却できる。この温度差が、温度バジェット(temperature budget)だ。そして、冷却機構の能力は、(Tc-Ta)/TDPとなるため、もしTDPが100Wなら、29/100=0.29度/Wがターゲットの冷却能力となる。

 Friedman氏が指摘しているのは、ここで、オフィス温度が実際には摂氏23度だった場合。摂氏23度の場合には、スペックである摂氏35度より12度も低い。CPUを冷却できる温度差、つまり温度バジェットも、実際にはスペックの29度分ではなく、41度分が確保できることになる。ところが、冷却機構自体は、(Tc-Ta)/TDPで設計されている。そのため、Taがスペックより低下する分、冷却できる能力が実質的に増える。その分だけ、ターボできる余地が産まれることになる。数字遊び的に見えなくもないが、Intelは環境温度に合わせた制御によって、数%のターボが可能だと見ている。

 環境温度を利用する場合には、(1)のアクティブなCPUコア数をベースとした制御とは関係がない。しかし、当然、組み合わせにもできる。(1)と(2)の組み合わせで、アクティブCPUコアのパフォーマンスは定格よりかなりのアップが可能になると推測される。その結果、20%といったパフォーマンスアップが得られる可能性がある。

●プラットフォームの温度を利用して短期間ブースト

 (3)CPUの周囲のプラットフォームがクールダウンしているチャンスを捉えるターボは、よりダイナミックで短いタイミングとなるようだ。

 環境温度の変化に合わせる場合は、環境温度が一定なら、長期的にターボ状態が続く。それに対してプラットフォームがコールドな状態を利用する時は、ターボによってCPUの電力消費が上がり、プラットフォーム自体の温度が上昇すればターボを解除する。一時的にTDPを超えてブーストする、短サイクルのモードと見られる。例えば、1分間といった短スパンでのターボが想定されているようだ。また、周波数の向上の幅も、30数%とより大きくなる。

 このターボモードが想定できるのは、システムの稼働率が低く、プラットフォームが冷えた状態から、高負荷のアプリケーションを立ち上げた状態などだろう。それまでクールだった分のバジェットを使って短期間ターボする。そのため、高負荷のアプリケーションのレスポンスが向上すると考えられる。

 (4)パッケージレベルのターボも、MCM(Multi-Chip Module)型のCPUで想定できる。これについては、Friedman氏の説明はなかったが、容易に推測が可能だ。

 例えば、Havendale/Auburndaleのように、CPUパッケージの中にCPUダイ(半導体本体)と、GMCHのダイの2つが含まれる場合。もし、CPUのTDPが25Wで、ペアチップのTDPが10Wだった場合、TDPは両ダイの合計である35Wに設定される。

 しかし、CPUが実際には10W程度しか消費しない状態もありうる。そうした場合には、ペアとなるチップを10WのTDPを超えてパフォーマンスブーストする余地が産まれる。逆にペアチップが5W程度しか消費しない時は、CPU側をブーストできる。MCMの片方のダイの電力をチェックして、ターボモードに遷移するメカニズムを組むことは可能だろう。

 もちろん、両チップのダイのホットスポットの温度が「Tj(junction)」のスペックを超えた場合には、サーマルセンサによりターボがストップされることになるだろう。Tjが事実上の制約となると推定される。そのため、ヒートシンクやヒートスプレッダとのサーマルインターフェイスマテリアルの熱抵抗値を下げられれば、さらにターボの余地が増える。

ターボモードが使える例

●ボルテージレギュレータの改革も必要に

 多彩なトリガーでパフォーマンスをブーストするターボモード。ハイファデザインセンターは、以前からターボモードを、Intel社内で推進していたという。こうして同センターのターボモードの全体構想を聞くと、その理由がよくわかる。ターボモードは、一定の冷却能力の下で、CPUの性能最適化を図るためのメカニズムとして位置づけられている。

 また、ターボモードの制御には、さまざまな発展系も考えられる。例えば、ターボ動作によってホットスポットの熱が限界に近づいたCPUコアを、スリープしていたCPUコアと交代させる。CPUコアが8コアといった多数になれば、そうした動的なスワップで、CPUダイ全体の発熱を均質化する意味が出てくる。

 また、将来個々のCPUコアに対して個別の電圧供給が実現できるようになれば、ターボモードはさらに活用できる。スリープするCPUコアの電圧を落として、より電力消費を減らすことで、ターボするCPUコアの周波数をさらに引き上げることができるからだ。

 もっとも、そのためにはボルテージレギュレータの改革が必要になる。そして、そのハードルは高い。Friedman氏は次のように説明する。

 「我々がコスト面も考慮する必要があることを思い出して欲しい。もし、各コアにそれぞれ独立した電力供給を行なうなら、システムの電力供給のコストがはね上がってしまう。ところが、現状では、PC価格はどんどん低くなっている。そのため、システムコストと電力最適化のバランスを取らなければならない。

 将来、電力供給で、もっとコストエフェクティブなソリューションが実現したら、各コアに対して専用の電力供給が実現するだろう。しかし、それまでは、それはコストが高すぎる。さまざまな技術があるが、今のところ量産にはコストが高すぎる」

 予想される解決策は、2005年のIntel Developer Forum(IDF)でIntelが示したCMOSボルテージレギュレータだ。CMOS技術で作られたチップサイズのレギュレータを、CPUダイと同じサブストレート上に載せて電力供給を行なう。CMOSボルテージレギュレータは、複数の電圧レベルでの電力供給を低コストに行なうことができる他、電圧の切り替えも非常に短いレイテンシで可能にする。そのため、オンデマンドで、コア単位の電圧を小刻みの変更できる。

 IntelのJustin R. Rattner(ジャスティン・R・ラトナー)氏(Senior Fellow, Corporate Technology Group兼CTO, Intel)は、2005年のIDF時には次のように説明していた。

 「CMOSチップのレギュレータによって、個々のコア単位どころか、個々の機能ブロック単位で電力の制御が可能になるだろう。ブロック毎に、個別に電力をアップしたりダウンする。もっとも、最初の目的は、各コアに供給する電圧を細かく切り替えることで、コア単位のレギュレートを効率的に行なうことだ。

 マルチコアCPUでの電力制御での課題は、全て一緒にアップあるいはダウンしなければならないと、せっかくのマルチコアの潜在的なベネフィットを失ってしまう点にある。そのために、電圧のレギュレートをしたい。電圧と周波数を、コア単位で精密に制御する、それが我々の研究課題となっている」

 CMOSボルテージレギュレータなどの技術が量産レベルで実現できれば、マルチコアの各CPUコアに自在に異なる電圧で電力を供給できるようになる。それが、ターボモードの制御と一体になれば、マルチコアCPUのパフォーマンスは自由に最適化できるようになる。ただし、Friedman氏が指摘するように、それは先のこととなりそうだ。

2005年のIDF、ラトナー氏の基調講演で示された図

□関連記事
【12月14日】【海外】平均消費電力を大きく低減するPenrynらのC6ステイト
http://pc.watch.impress.co.jp/docs/2007/1214/kaigai407.htm
【12月11日】【海外】イスラエルから発信されるIntelの次世代CPUテクノロジー
http://pc.watch.impress.co.jp/docs/2007/1211/kaigai406.htm

バックナンバー

(2007年12月17日)

[Reported by 後藤 弘茂(Hiroshige Goto)]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp ご質問に対して、個別にご回答はいたしません

Copyright (c) 2007 Impress Watch Corporation, an Impress Group company. All rights reserved.