後藤弘茂のWeekly海外ニュース
Ultrabookのアイドル電力消費を100mW以下にするHaswellの省電力技術
(2013/4/26 12:44)
フォーカスはTDPよりもアイドル時消費電力の低減
秒読み状態に入ったIntelの次世代CPUアーキテクチャ「Haswell(ハスウェル)」。Intelは北京で開催した同社の技術カンファレンス「Intel Developer Forum(IDF) 2013 Beijing」で、Haswellに関連する技術セッションを多数行なった。その中で、最も重要なのは、Haswellシステムの極めて低い待機時電力と、その秘密が公式に明かされたこと。
Intelは、Ultrabook向けのHaswellシステムでは、システム全体の待機電力を大幅に下げることを宣言していたが、その仕組みの詳細は明瞭にして来なかった。今回のIDF Beijingでは省電力技術について体系的な説明が行なわれたため、これまで個別に説明されていた技術がどう連携して待機時の消費電力を下げるのかが明らかになった。
Haswellのモバイル向けCPUは4階層に分かれている。H-ProcessorとM-ProcessorはレガシーのノートPC向けで、U-Processorが主にUltrabook向け、Y-Processorはタブレットスタイルまでカバーするという位置付けだ。このうち、UとYはLynx Point PCH (Platform Controller Hub)をパッケージに統合した、ワンパッケージソリューションとなっている。Intelは、以前はこの2ダイのMCM(Multi-Chip Module)ソリューションをSoC(System on a Chip)と呼んでいたが、半導体的にはSoCではないため、さすがに最近はSoCと言わなくなって来ている。
Intelは、HaswellのUとYプロセッサでは、電圧レギュレータ(VR)を部分的に統合しPCHもパッケージに含めたにも関わらずTDP(Thermal Design Power:熱設計消費電力)を落としている。ちなみに、YプロセッサではIntelはアプリケーションユーセージのシナリオに即した熱設計枠とするSDP(Scenario Design Power)を導入して、分かりにくさを増している。しかし、IntelのHaswellでのフォーカスは、TDPを下げることではなく、アイドル時消費電力を下げることにある。
TDPも薄型化では依然として重要だが、技術的な面でのHaswellの革新部分のほとんどは、TDPではなく待機時消費電力を下げることに費やされている。正確に言えば、Haswellでは、動作時の電力を統合電圧レギュレータによって、より最適化し、Cステートの拡張とプラットフォームレベルの割り込みと電力の制御によって、アイドル時の電力を落としている。今のところ、その技術は、ワンパッケージ統合型のHaswellだけに適用される予定だ。
Haswell Ultrabookのアイドル時電力はわずか100mW
Ultrabook向けのHaswellシステムのプラットフォーム全体の電力消費は、アイドル時に100mWを切り、90mW台中盤となる。Ivy Bridge(アイビーブリッジ)では待機時(C7)にCPUの電力だけでも2.2W(max)だったため、格段に電力消費が落ちる。アイドル時の電力の内訳は下のスライドのようになっている。プロセッサがC10ステートで45mW程度、電圧レギュレータのロスが21mW程度、LPDDR3がセルフリフレッシュ(IDD6)モードで13mW、その他にはSSDが5mW、Wi-Fiが2mW程度など。いずれも、非常に少ない。
どうやってここまで下げることができるのか。ポイントは次の3つだ。
1. CPUの省電力のCステートにより省電力の「C8/9/10」ステートを加える
2. 深いCステートに入ることができるように割り込みを制御する「Power Optimizer」を導入する
3. CPU以外の各コンポーネントの省電力を制御する
この3要素が密接に組み合わせられることで、Haswell ULTでは、これまでにない低待機時電力を実現できた。要素の1つ目はIntelシリコンの内部の機能拡張だが、2と3に関してはパートナー企業の半導体チップやコンポーネントを巻き込んでいる。実際には、Intelは、今回のHaswellで実現した省電力の仕組みを2008年前後から説明しているが、パートナーの協力が必要であるため、実現までに時間がかかったと見られる。
電力消費が6分の1で応答レイテンシが30倍以上の新Cステート
CPU内部から見て行くと、HaswellではCステートが大幅に拡張された。従来のIntel CPUはC7(Deep Power Down)までの省電力ステートが設定されており、アイドル状態が続くと、より深いCステートに移行するようになっている。Intelプロセッサの省電力制御では、CPUコア毎のCステートとパッケージレベルのCステートがあり、例えば、全てのCPUコアがC7に入るとCPU全体がパッケージC7ステートに入る仕組みとなっている。
Haswellでは、C7までの従来のステートに加えて、C10までの3つの新しいステートが新設された。通常版のHaswellはC7までが実装されるが、ワンパッケージソリューションのモバイル向けHaswellではさらにC8/C9/C10の3ステートがイネーブルになっている。下のスライドのように、C7ステートで、後述するPower Optimizerフレームワークを使わない場合に対して、C10(Power Optimizerが必須)の場合は6分の1にアイドル時電力を下げることができる。C10のHaswellの待機時は45mW程度だ。
ちなみに、C7時にはディスプレイをアクティブにすることもできる(C10はディスプレイオフ)が、上のチャートはディスプレイオフ時(=ディスプレイインターフェイスの電力がオフ)のケースだ。ディスプレイがオンの場合は、さらに差が広がると見られる。
深いCステートになればなるほど消費電力が下がるが、トレードオフも大きい。それは、復帰レイテンシで、ステートが深くなればなるほどレイテンシが長くなる。割り込み応答レイテンシでは、C10はC7の30倍以上も長く、最長3ミリ秒(ms)となっている。ミリ秒単位の復帰レイテンシは、CPUでは異例に長い。
HaswellのC7ステートは、基本的にはIvy BridgeのC7ステートと同じで、CPUコアはすでにパワーゲートされていて、CPUのアーキテクチャルステートはオンダイ(On-Die)にセーブされていることが前提となっている。
C7の段階ではアーキテクチャルステートはオンダイで保持されるが、レジスタにそのまま保持されるわけではない。Intel CPUはダイ上に、オフ時にも電力が供給される、ステートセーブ専用のメモリ領域を持っており、オンダイにアーキテクチャルステート(レジスタ内容)を保持することで短サイクルで復帰できるようになっている。
C6ではCPUコア内部のL2キャッシュまでフラッシュされるが、C7では共有のLL(Last Level)キャッシュまでがフラッシュされる。ただし、C7に入る段階では、LLキャッシュはアクティブな領域がN-waysに段階的にシュリンクされて行き、最終的にフラッシュされる。その間は、LLキャッシュエリアにはリテンション電圧の水準が供給される。
GPUコアもCPUコアと同様にパワーゲートされて、アーキテクチャルステートは待避されている。また、C7では、内部クロックのほとんどは停止され、電圧レールもパワーオフされる。ただし、C7では、画面表示は可能のはずなので、この段階ではI/Oポート部分への電力は部分的に供給されていると見られる。Haswellでは、統合電圧レギュレータ(iVR)によってノースブリッジ部への電圧レーンはより細分化されている。
Haswellでは、iVRによってCPU内部の各ユニットへの電圧制御を行なうため、パッケージへの電力は単一のVccinで行なわれる。外付けの電圧レギュレータからのインプット電圧Vccinは通常は1.8Vだが、C7ステートになると1.6Vへと200mV下げられる。
C7では、ステートから脱出するメモリアクセスレイテンシは60us(マイクロ秒)、割り込みレスポンスレイテンシは80usとなる。
新設されたC8以下の超低電力ステートの概要
新しいC8ステートでは、CPU内の残った全ての内部電圧レールがパワーオフされる。PLLが完全にパワーダウンされ、通常の100MHzのベースクロック(BCLK)が完全に停止される。そして、代替として24MHzのクリティカルクロックが供給される。通常時のHaswellのベースクロックは下の通りで標準100MHzが供給されるが、C8時にはクロック供給は止まり、24MHzのベースクロックだけが供給される。
また、外部電圧レギュレータからの入力Vccinは1.2Vにまで下げられる。C7が1.6Vなので、さらに400mV下がることになる。また、ディスプレイインターフェイス群(eDP/HDMI)も完全にオフにされる。C8のメモリアクセスレイテンシは80us(マイクロ秒)、インタラプトレスポンスレイテンシは110usとなり、30%ほどC7よりレイテンシが伸びる。それだけ復帰に時間がかかる。
C9ステートになると、今度はインプット電圧Vccinが0Vへと下げられる。つまり、CPUへの電力供給が完全にストップする。しかし、この段階では、まだ外部電圧レギュレータはオフになっていない。そのため復帰レイテンシは、メモリアクセスで120us、割り込み応答で150usと、まだ100us台に留まる。
C10は、Cステートの中の大きなジャンプで、外部電圧レギュレータがディセーブルになる。VRの電力を完全にダウンさせるため、復帰レイテンシは、約3ms=3,000usまでと、C9までより格段に長くなる。100mWのプラットフォーム待機電力は、このC10ステートを前提としている。つまり、3ms以上のアイドル状態が続く場合の電力消費が、100mWという意味だ。
HaswellのディープCステートのレイテンシの一覧は下のようになる。C10はあまりにレイテンシが長いので、途中をはしょって表示してある。実際にはインタラプトへのレスポンスではC9の20倍のレイテンシとなる。
より長いアイドル時間を確保するためのPower Optimizer
従来のIntel CPUでは、動作時に、これほど長い間CPUをアイドルにすることができない。CPUに割り込みやDMAアクセスが頻繁にかかるからだ。そこで、Intelはプラットフォームパワーマネージメントのフレームワーク「Power Optimizer」をHaswellから導入し始める。これは、「CPPM」と以前呼ばれていた仕組みで、Haswellを搭載したプラットフォーム全体の電力を削減する。
Power Optimizerについては、先週開催された日本のプロセッサカンファレンス「COOL Chips XVI」でも、Intelのキーノートスピーチの中で詳しく説明された。Power Optimizerの詳細は別記事で説明するが、基本的なアイデアは、これまで非同期だったOSやデバイスからの割り込みを、バーストでまとめる点にある。
割り込みやDMAアクセスがかかると、その度にCPUはスリープステートから復帰しなければならない。下のスライドは、従来のシステムとWindows 7での、CPU(とチップセット)への割り込みやDMAアクセスを示している。横軸が時間軸で縦に伸びている矢印が割り込みやDMAアクセスで、見ての通り頻繁に割り込みなどを示す矢印が入っている。
割り込みやDMAアクセスは、OS以外では、PCI ExpressやUSB、SATAといったインターフェイスに接続されたデバイスから入る。そのため、これまでは長時間アイドル状態を継続することが難しかった。C7より深い省電力ステートは復帰レイテンシが長くなるため、従来のシステムでは、実質的に使うことができなかった。
それに対してHaswellでは、Power Optimizerが割り込みとDMAアクセスをまとめてバーストにしてしまう。タイミングクリティカルではない、またはデバイス側にバッファすることで遅延可能な割り込みを、遅らせて同期させることで、より広いアイドルウインドウを作る。
さらに、スライドのブラックの矢印で示されているOSのタイマ割り込み、これをWindows 8などOSでなくす。逆を言えば、Windows 7ではPower Optimizerがあっても、あまり長時間アイドルに入ることができず、Haswellの新しいCステイトはフルの実力を発揮できない。しかし、Windows 8ではPower Optimizerで、長時間アイドルに入ることが可能になり、割り込みの間にアイドルな時間が、ずっと長く取ることができるようになる。
HaswellのPower Optimizerフレームワークでは、レイテンシの許容値を動的にコントローラに伝えるための「Latency Tolerance Reporting (LTR)」を新たに設定した。デバイス側がLTRをHaswellに伝えることで、割り込みを制御する。
C7以下のステートのトリガーにPower Optimizerを使う場合に、具体的には、次のようになる。まず、全てのデバイスが、少なくとも60us以上のLTRをレポートする場合にC7ステートに入ることができる。同様に、C8に対しては80us以上のLTR、C9に対しては125us以上のLTRがレポートされた場合に可能となる。そして、C10に対しては3,000us(3ms)以上のLTRとなる。レイテンシと、エントリのLTRの条件の関係は下の図のようになる。
Power Optimizerの仕組みの利点は、割り込みのタイミングが予測できる点だ。推測ベースではなく、LTRでデバイス側がレポートしたレイテンシをベースにHaswellが整理したタイミングでバーストして割り込み/DMAを行なう。そのため、設定したタイミングの前に、深いアイドルステートからの復帰レイテンシを組み込むことができる。Haswellでは、スリープモードの際に、LTRで調整を行なうポリシーウインドウと、ウェイクアップの前にウォームアップするウインドウを設定している。決定論的な割り込み制御のために、深いスリープモードからも、余裕を持ってウェイクアップできるため、応答性に問題が生じない。
電圧レギュレータの電力損失を抑える
しかし、CPUを深いCステートに置けば、待機時消費電力の問題が解決するわけではない。それは、CPU以外のプラットフォームコンポーネントが、アイドル時でも電力を消費してしまうからだ。下のスライドは、ディスプレイ以外のプラットフォーム全体の電力を示しており、ディープCステートに入ったCPU以外の要素で電力が食われていることがわかる。
この問題への対応策は、CPU以外のコンポーネントの電力の低減しかない。Intelはそのために、過去5年間、さまざまなコンポーネントに対して働きかけてきた。その結果、HaswellベースのUltrabookでは、CステートによるCPU電力だけでなく、他のコンポーネントの電力も下げることが可能になりつつある。
先ほどの円グラフにあったように、電力で大きい要素は電圧レギュレータの損失と、DRAMだ。Haswellはこの両方に対して、対策している。
HaswellベースのUltrabookでは、電圧レギュレータの電力損失は意外に大きく、特に低電力時には、これが大きな電力消費源になっていた。アイドル時もそうだが、低負荷時にも、電圧レギュレータの損失は大きく響く。なぜなら、通常の電圧レギュレータは、低電力時には効率が急激に悪化して、損失が急増するからだ。そこで、IntelはUltrabook向けのプラットフォーム電圧レギュレータでは、軽負荷時の効率を高めるように「Point of Load(POL)」型のレギュレータにするように働きかけてきた。
通常は出力の電流量が0.01Aを下回ると、電圧レギュレータの効率が急速に悪化し、0.001Aになると50%ほどに効率が落ちてしまう。それに対して、POL型の電圧レギュレータでは、0.001Aでも90%近い効率を維持できるという。電圧レギュレータの損失を20mWに押さえ込むことがHaswell Ultrabookの目標になっている。
LPDDR3とDDR3L-RSのサポートでメモリのアイドル時電力を減らす
従来、待機時の電力が問題になっていたパーツの1つがDRAMだ。DRAMはデータ内容を保持するためにリフレッシュ動作が必要で、それが電力を消費する原因となっている。そして、従来のPC向けDRAMは、リフレッシュ動作に必要な電流量が非常に多い。
Haswellは、スマートフォンやタブレットなどモバイル機器向けのLPDDR3メモリをサポートすることで、この問題を解決した。LPDDR3のサポートも、Haswellの低待機時電力の重要なカギだ。
DRAMは、待機時にはセルフリフレッシュ(IDD6)モードに入る。これは、CPU側のDRAMコントローラがコマンドを与えなくても、DRAM単体で自動的にリフレッシュしてデータ内容を保持するモードだ。LPDDR系のモバイルメモリは、セルフリフレッシュ動作の制御が高度である点が通常のDDR系メモリと大きく異なっている。そのためアイドル時電力では、両メモリ規格に大きな差がある。
LPDDR3の場合は、セルフリフレッシュ時の電力を、4GBの容量なら15mW以下(25C Typical)に抑えることができる。Haswell ULTシステムの待機時電力の内訳で、LPDDR3が13mWとなっているのはそのためだ。
DDR3系は、低電圧版のDDR3Lであってもセルフリフレッシュ時でも、下のスライドのように、かなりの電力を必要とする。LPDDR3は待機時にはDDR3Lの数分の1の電力しか消費せず、セルフリフレッシュ電力に大きな違いがある。
もっとも、実際にはDDR3L系ではLPDDR系メモリの技術を一部(TCSR:Temperature Compensated Self Refresh)取り込んでセルフリフレッシュ時の電力を下げたDDR3L-RS(Reduced Standby)もある。過去半年の間に、DDR3L-RSは急浮上し、Haswell Ultrabookのメモリの本命の1つと目されるようになりつつある。
DDR3L-RSでもLPDDR3ほどではないが、セルフリフレッシュ時の電力が下がる。利点はLPDDR3よりもコストが低く、モジュールソリューションがあること。DDR3L-RSとLPDDR3のどちらがどれだけUltrabookに浸透するか予想が難しいが、どちらに転んでも待機電力のメモリの部分が下がることは確かだ。
ほかにもIntelはPower Optimizerの枠組みで、I/O回りの電力低減など、さまざまな工夫を行なっている。Haswell版Ultrabookは、こうした低消費電力技術の塊のようなシステムとなろうとしている。