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

Yonahの消費電力はなぜ少ないのか




●Meromへとつながる? Yonahアーキテクチャ

 Intelは先週のIntel Developer Forum(IDF)で、次世代マイクロアーキテクチャCPU群を紹介した。デスクトップ「Conroe(コンロー)」、モバイル「Merom(メロン)」、サーバー「Woodcrest(ウッドクレスト)」と並ぶ次世代CPUファミリの技術概要はまだ明らかにされていない。しかし、共通のコアを使う新CPU群の元となっているのはモバイルのMeromで、Pentium M(Banias:バニアス)と同様にIntelイスラエルで開発されたことを考えると、ある程度の類推ができる。

 Meromは、おそらく、Banias/Yonah(ヨナ)系CPUの発展型と考えられる。Intelの次期モバイルCPU Yonahは、デュアルコアに最適化された設計になっているほか、CPUコアのマイクロアーキテクチャ的にもBanias/Dothanより改良が加えられている。Banias系を改良したYonahがステップとなり、フロムスクラッチ(ゼロからの設計)で開発されたMeromへと続くと推定される。そのため、Meromを知るには、まずYonahを理解する必要がある。

 Yonahが重要なのは、IntelのPC向けCPUの中で、最初にデュアルコア向けに特化して設計されたCPUだからだ。

 「我々は業界でデュアルコアが語られ始めるよりもかなり前からデュアルコアの設計をスタートさせていた。これ(デュアルコア)は2年程度の設計ではなく、2年半から3年前にすでに設計を始めていた」とIntelのMooly Eden氏(Vice President & General Manager, Mobile Platforms Group)は語る。

 Yonahアーキテクチャで重要なポイントは3つ。(1)デュアルコアに特化した省電力制御、(2)デュアルコアに特化したキャッシュなど共有リソースの設計、(3)CPUコアのマイクロアーキテクチャの改良。このうち、省電力制御やキャッシュアーキテクチャなどは、登場時期が近いMeromにかなり引き継がれる可能性が高い。

Intel Mobile CPU TDP Roadmap
PDF版はこちら

●理想は電圧と周波数のCPUコア単位での制御

 YonahはデュアルコアCPUであるため、これまでのモバイルCPUとは、省電力制御も異なる。

 IntelのマルチコアCPUの省電力制御の最終的なゴールは、CPUコアあるいはコアグループ毎に電圧と周波数を制御。必要なCPUコアだけを最適な動作周波数&電圧で駆動させ、アイドル状態のCPUコアはクロックをオフして電圧を下げ、寝かしてしまうことだ。そうすれば、動作中のコア以外は電力をほとんど消費しない、理想型の電力制御となる。IDFでも、そうした将来像が技術セッションの中で語られた。

 しかし、CPUコア単位の電圧と周波数のフレキシブルな制御には、まだ技術的な課題が多い。現状では低コストに実現することができない。そこで、Yonahでは、中間解として、できる範囲でデュアルコアに合わせて拡張した省電力制御を行なっている。Yonahでは、CPUコアが2個だけでモバイル環境なので、コア個別に電圧&周波数を制御しなくても、ユーザーが利用中の時間の多くは低電圧の省電力ステイトに納めることができるためだと見られる。Merom世代でも、コア単位の電圧と周波数のフレキシブルな制御は難しいため、基本的にはYonahと同種の制御になると推測される。

 CPUの消費電力には2つの指標がある。通常の使用での電力消費の最大値を示すTDP(Thermal Design Power:熱設計消費電力)はPCの熱設計に影響する。通常使用での平均消費電力は、PCのバッテリ駆動時間に影響する。YonahのTDPは31Wと90nm版Pentium M(Dothan:ドタン)の27Wより若干上昇している。平均消費電力はまだ公開されていない。

 Yonahで目立つのは、平均消費電力を下げるためのユニークなテクニックだ。特に、Intelは、Yonahのキャッシュ部分の電力制御に注力している。

 CPUの中でSRAM部分の電力消費は、同じ規模のロジック回路部分と比べると少ない。しかし、Yonahの場合はキャッシュ容量が2MBと大きいため、SRAM部分の消費電力も無視できない。特に、キャッシュSRAMは平均消費電力への影響が大きい。ロジック部分がアイドル状態で電力消費が最小になっている場合でも、トランジスタ数の多いキャッシュSRAM部分のリーク(漏れ)電流が電力消費を押し上げてしまうからだ。

 つまり、TDPを下げるにはロジックを、平均消費電力を下げるにはキャッシュSRAMを制御するのが効率的ということになる。モバイルCPUであるYonahでは、当然キャッシュSRAMの制御にフォーカスしている。できる限りキャッシュの電力を抑え、不要な時はキャッシュの電力をOFFにするテクニックが使われている。この点は、Banias/Dothanより大幅に進化している。そして、キャッシュ容量が増えるMerom(メロン)では、さらにこれらの技法が重要になると推測される。

●比較的単純なSpeedStepによる制御

 IntelのモバイルCPUの省電力制御は、アクティブ時とアイドル時の2段階になっている。CPUが動作中のアクティブ時にはクロック周波数と電圧を動的に切り替える「SpeedStep(Geyserville)」で平均消費電力を抑える。CPUがアイドル時にはCPUをより電力消費の少ないモードに切り替える、省電力ステイトであるCステイトの制御によりクロックのOFFや電圧低減でムダな電力消費を抑えている。

 Yonahの場合も基本は同じで、CPU外のシステム側から見る限り、YonahはこれまでのシングルコアCPUと同様に、単一のステイト、単一の電圧&周波数の遷移で動作する。しかし、Yonahの内部では、2つのCPUコアが異なる動きをする。ただし、CPU内部での、両コアのふるまいは、アクティブ時とアイドル時では異なる。

 まずアクティブ時には、2個のCPUコアはそれぞれの負荷に応じたPステイトを遷移する。CPUコア0は負荷が高くP6ステイトにあるが、CPUコア1は負荷が低くP1ステイトにあるといった具合だ。ただし、電圧と周波数は、コアのPステイトに応じてコア個別には変動しない。

 シングルコアCPUの場合は、Pステイトが下がると、SpeedStep制御で周波数&電圧も下がる。しかし、YonahではCPUコア0がトップのPステイトにある場合、CPUコア1の負荷が軽くなり低いP1ステイトなどに移行しても、Yonah自体の周波数&電圧は下がらない。両CPUコアは同一の周波数と電圧を推移する。両CPUコアのPステイトが揃った時に、初めて周波数&電圧が遷移する。IntelはCoordinated SpeedStepと呼んでいるが、じつはかなり単純な制御だ。

 YonahではCPUのパワープレーンが単一で、クロックドメインもコアで分離されていない。そのため、こうした制御になっている。2コアの周波数&電圧が連動していることは、平均消費電力にある程度の影響を与えるはずだ。しかし、Yonahの場合は、Cステイトでの省電力制御に注力した方がいいと判断したようだ。

Yonah Cordinated Platform SpeedStep Transitions
PDF版はこちら

●複雑なCステイトによるSleep制御

 アイドル時の制御は、アクティブ時のSpeedStepの制御とは異なっている。両CPUコアは、それぞれアイドル状態に入ると個別のCステイトに入ることができる。Intel CPUはC0からC4までのCステイトを持ち、Yonahもこれを備える。Yonahでは、CPUコア単位のCステイトをIntelは「CC」と呼んで区別している。

CPU Core name  
C0 CC0 Active CPU is ON
C1 CC1 Auto Halt Core clock is OFF
C2 CC2 Stop Clock Core and bus clock are OFF
C3 CC3 Deep Sleep Clock generator is OFF
C4 CC4 Deeper Sleep Reduced Vcc
DC4   Enhanced Deeper Sleep Further reduced Vcc

 SpeedStepの場合と異なり、アイドル時は、それぞれのCPUコアはCCステイトで個別に制御される。低いCCステイトに入ったアイドル状態のCPUコアは、CCステイト制御によりクロック供給を停止され、より消費電力を下げる。ただし、CPU外部のシステム側から見るとYonahは単一のCステイトのCPUとなる。

 CPU全体のCステイトは、両CPUコアのCCステイトに合わせた「Coordinated state」となる。例えば、片方のCPUコアが「CC2」に入っても、もう片方のCPUコアが「CC0」のアクティブ状態だと、システム側から見たYonahも「C0」アクティブ状態となり、Yonahの共有リソースもアクティブ状態となる。

 CPUコア全体のCステイトはOSによってコントロールされるが、CCステイトもまたOSで制御される。コントロールは、スレッド同期のためのSSE3命令「Mwait(Cx)」を使って行なう。このほかにもYonahは省電力制御のためにMwait命令を使っており、YonahからはMwait命令に、Yonah用の制御パラメータが加えられるという。

Yonahの省電力ステイト制御
PDF版はこちら

●コア単位とCPU全体のCステイト管理が複合する

 Yonahの場合は、コア個別のCCステイト制御に、デュアルコア特有のキャッシュスヌープ(探査)問題がある。Yonahは2個のCPUコアがそれぞれL1データキャッシュを備えている。片方のCPUコアがSleepに入っても、もう片方のCPUコアがCC0でアクティブ動作している場合に問題が発生する。動作中のCPUコアは、アクセスするデータが、もう片方のCPUコアのL1キャッシュにあるかどうかをチェックする必要が生じるからだ。

 アクティブなCPUコアが勝手にデータを書き換えてしまうと、キャッシュの一貫性が維持できなくなる可能性がある。そのため、アイドル中のCPUコアも、L1キャッシュとバスとスヌープのための回路(tagなど)を起こしておく必要が出てしまう。

 これを回避するため、Yonahでは、CPUコアがSleepに入る前に、L1キャッシュの内容を全てL2にダンプしてしまう。Sleep状態のCPUコアのL1は空になるので、スヌープしなくても、メモりの一貫性がとれなくなる心配はない。ダンプに電力を消費しても、結果的にその方が電力をセーブできると判断したようだ。YonahのL1データキャッシュは32KBなので、フルにダンプするケースでも、オーバーヘッドはそれほどではないと推定される。

 Deeper Sleep「C4」はコア電圧をさらに低下させる。Deeper SleepではVccは、キャッシュのデータ内容を維持できる限界レベル(Cache sustain)に電圧を下げている。DothanではDeeper Sleepで約0.3Vほど電圧が下がっている。現状のYonah世代ではコア個別には電圧を制御できない。そのため、両CPUコアのCCステイトがCC4に揃って、初めて電圧が下げられることになる。つまり、CC1からCC3まではコア個別のSleep Stateを遷移するが、CC4は両コアが揃って初めてステイト遷移が行なわれる。

 また、IDFでの説明によると、Yonahでは、キャッシュSRAMの改良で、キャッシュデータ保持(Cache data retention)時の電圧を下げることにも成功しているという。Intelによると、キャッシュデータの保持が、最低周波数時の電圧Vcc_minの制約になっているという。「キャッシュの保持電圧は、キャッシュの消費電力だけでなく、CPUコアの消費電力も制約する」とIntelのRonny Korner氏(CPU Validation Manager, Mobile Microprocessor Group)は説明する。そこで、YonahではキャッシュSRAMを工夫し、より低いVccでもキャッシュ内容を保持できるように設計、その結果、CPU全体のVccを下げることができるようになったという。

 Intelのチャートを見ると、このLow Vccだけでもかなりの効果があったことがわかる。ただし、具体的な電圧値は公表されていない。

●キャッシュ容量を動的に制御、より低電圧へと遷移

 また、Yonahでは「Dynamic Smart Cache Sizing」と呼ぶ手法で、L2キャッシュの容量を制御している。Dynamic Smart Cache Sizingは、名前の通り、回路設計技術で動的にキャッシュの容量を賢く制御する手法だ。簡単に言えば、あまりキャッシュを使わない場合には、有効にされているキャッシュの量自体を減らしてしまう。論理メモリスペースを無効にするだけでなく、物理的にもその部分のSRAMをOFFにして、電力消費を最小に抑える。つまり、Yonahの2MBという物理キャッシュ量は最大値で、低活動時には動的に2MBより減っているケースがありうるわけだ。

 Dynamic Smart Cache Sizingは、ハードウェアで自動的に行ない、ソフトウェアからは意識されないと見られる。ハードウェア実装されたアルゴリズムで、キャッシュユーセージの要求を予測する。予測は、CPUがアクティブステイトにある時間とスリープステイトにある時間の比率などを参照するという。OSがMwait命令を使って支援することができる。

 不要と判断されたキャッシュエリアは、メインメモリに書き戻されフラッシュされる。この制御は、キャッシュライン単位で制御できるという。アイドル状態が続くと、徐々にキャッシュはフラッシュされて、最後には空になり、全キャッシュがパワーOFFされる。

 その段階に入ると、Yonahは、新たに設けられたEnhanced Deeper Sleep「DC4」と呼ばれるステイトに入る。これは、Deeper Sleepよりさらに電圧を下げるステイトだ。Enhanced Deeper Sleepでは、CPUコアを再起動しないですむ、コア保持(Core retention)レベルに最低限必要な電圧にまで下げる。電圧をこれまで以上に下げるため、リーク(漏れ)電流(Leakage)を大幅に低減できる。しかし、キャッシュSRAMの内容を保持できないレベルにまで電圧を下げるため、キャッシュにデータがあるとフラッシュされてしまう。

 そのためにEnhanced Deeper Sleepは、キャッシュが完全に空で、全てのキャッシュラインがパワーOFFされている時にしか入ることができないように制御されている。Dynamic Smart Cache Sizingとの組み合わせで動作するわけだ。DC4ステイトに入った場合には、再びアクティブ状態になった時にキャッシュがフィルされるまで、多少パフォーマンスのペナルティがあるはずだ。しかし、モバイルの場合は、ユーセージモデルから考えると、アイドル状態が多いため、Enhanced Deeper Sleepでリーク電力を抑えた方が得策と判断したようだ。

 Intelの説明では、これらの省電力テクニックの併用により、Yonahの平均消費電力はDothanと同レベル以下に抑えられるという。

□IDF Fall 2005のホームページ(英文)
http://www.intel.com/idf/us/fall2005/
□関連記事
【7月20日】【笠原】なぜYonahはEM64Tに対応しないのか
http://pc.watch.impress.co.jp/docs/2005/0720/ubiq119.htm
【7月13日】インテル、モバイル向けデュアルコア「Yonah」の概要を公開
http://pc.watch.impress.co.jp/docs/2005/0713/intel.htm
【2月1日】【海外】Yonahが見えてきた、IntelのモバイルCPUロードマップ
http://pc.watch.impress.co.jp/docs/2005/0201/kaigai152.htm

バックナンバー

(2005年8月31日)

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


【PC Watchホームページ】


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

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