笠原一輝のユビキタス情報局

Skylakeの“SpeedShift”でPステートの消費電力削減を実現

~Windows 10とSkylakeでさらなる長時間バッテリ駆動が可能に

 IntelはIDF15のテクニカルセッションの中で、第6世代Coreプロセッサ(開発コードネーム:Skylake)のマイクロアーキテクチャに関しての説明を行なった。その中で、特にモバイルPCユーザーにとって注目に値する新しい省電力技術「Intel SpeedShift Technology」(以下SpeedShift)が紹介された。

Haswell/Broadwell世代ではアイドル時(Cステート)の消費電力が削減

 現代のマイクロプロセッサの消費電力を語るにはCPUがどのように動いているのかを理解する必要がある。マイクロプロセッサには大きく分けて、アクティブ時のモードとアイドル時のモードがある。OSが動作していて、CPUが何かの処理している時にはアクティブ時のモードになっている。

 PC/AT互換機の電力動作を規定しているACPI(Advanced Configuration and Power Interface)の規格では、このアクティブ時の状態を「Pステート」と定義している。もう1つがOSやアプリケーションが一時停止(アイドル)状態にあるモードで、これはCステートとなる。マイクロプロセッサはPステート(アクティブ)と、Cステート(アイドル)を行ったり来たりしながら、必要に応じて動作することで消費電力を最小限に抑える仕組みになっている。

 Intelは、第4世代のHaswellにおいて、Cステートの電力削減を実現する改良を行なっている。従来はC0~C6までしかなかったCステートを拡張し、C7~C10と呼ばれるさらに省電力なアイドルステートを追加した。C7~C10では、従来はできなかった、チップセットの電力管理をより細かく行なうなどの機能が追加され、アイドル時の消費電力削減が実現された。PCが動作している時の大半は、OSはアイドル状態になり、マイクロプロセッサはCステートへと移行するので、Haswellや第5世代のBroadwellでは、それ以前の世代と比較して、より長時間のバッテリ駆動が実現された。

アクティブ時(Pステート)の省電力管理を担当してきたのは15年前に登場したSpeedStep

 これに対して、Skylake世代では、Haswell/Broadwell世代で実現されたCステートの省電力に加えて、Pステートの省電力の拡張が行なわれる。

 これまでIntelのマイクロプロセッサでPステートの省電力管理を担ってきたのは、Intel SpeedStep Technology(以下SpeedStep)と呼ばれる技術だ。SpeedStepは、簡単に言ってしまえば、クロック周波数と駆動電圧を、動的に変えていくことで消費電力を削減する機能だ。マイクロプロセッサの消費電力は、クロック周波数に比例して、駆動電圧には2乗に比例して増えていく。従って、クロック周波数と駆動電圧の両方を下げられるのが、電力を削減するには最もよいと言える。

 しかし、電圧を上げなければクロック周波数も上げられないので、性能を上げると電力が増えてしまうことになる。そこで、性能が必要ない状況では駆動電圧もクロック周波数も下げて動作させ、性能が必要な時には駆動電圧とクロック周波数を上げて動作させることで、性能と省電力のバランスを取ることができる。これがSpeedStepの基本的な考え方だ。

 1999年に発表された最初のSpeedStepはACアダプタの有無で上位クロック/電圧、下位クロック/電圧を切り替えるというシンプルなものだった。その後2001年に投入された、130nmに微細化されたPentium IIIプロセッサ(開発コードネーム:Tualatin)では、Enhanced Intel SpeedStep Technology(EIST)と呼ばれる進化版が投入された。EISTでは、最高と最低という2つのポイントだけでなく、クロック/電圧を多段階で切り替えられるようになり、かつトリガーとしてACアダプタの有無だけでなく、CPUにかかる負荷に応じて切り換え可能になった。

 基本的に、その後リリースされたIntelのマイクロプロセッサはEISTがPステートにある時の省電力機能として利用されてきた。ただ、その後にも機能の拡張が行なわれなかったわけではない。具体的には、Nehalem世代で導入されたIntel Turbo Boost Technologyは一種のEISTの拡張と言ってもよい。Turbo Boostは、システムが冷えていて熱設計に余裕がある状態の時に、規定の稼働保証周波数を超えるクロック周波数/電圧に引き上げる機能だ。つまり、EISTがその機能を電力の削減に向けているのに対して、Turbo Boostはその逆で、それを性能向上に使うということだ。そうした拡張はあったが、省電力機能という観点で考えれば、基本的に1999年に導入されたSpeedStepがそのまま利用されてきた。

SpeedStep Technologyの考え方。Pステートにおいてクロック/電圧をCPUの負荷に応じて段階的に変動させることで省電力を実現している。青く表示されている部分がTurbo Boostの導入で拡張された部分

マイクロプロセッサに内蔵されているPCUにより自動制御されるSpeedShift

 そうしたPステートの省電力機能を、大幅に拡張するのが、Skylakeで投入されることになるSpeedShiftだ。従来のEISTがOSを含めたソフトウェア側が制御を行なうという実装で実現されていたのに対して、SpeedShiftはクロック周波数/電圧の変動をハードウェアが内部アルゴリズムに基づいて制御する。

 IntelのマイクロプロセッサはPCU(Power Control Unit)と呼ばれる電源管理のハードウェアを持っており、SkylakeではこのPCUが元々用意されているアルゴリズムに基づいて自動的にCPUの周波数と電圧を管理する。具体的には、最高周波数(従来のTurbo Boost時の最高クロック)、稼働保証周波数(従来のベースクロック)、最適電力周波数(Peと呼ばれる、自動車のエンジンの最も燃費のよい回転数のようなものだと思えば分かりやすい)、最低周波数などが定義され、その中間の周波数に設定することも可能だ。

近年のIntelのマイクロプロセッサにはPCUが内蔵されており、PCUが全てをコントロールする

 SkylakeのPCUは毎ミリ秒決められたアルゴリズムに基づいて計算しながら、アプリケーションやワークロードにより異なる最適電力周波数を探しながら、必要に応じて最高周波数に上げたり、稼働保証周波数に設定したり、最適電力周波数に設定したりということを自動で行なう。なお、最低周波数は、Skylake世代の場合には100MHzになっている。

SpeedShiftでは消費電力と性能の最適なバランスをPCUが計算しながら動作する

 この自動コントロール機能は、OS側からオフにすることもできる。その場合は、従来のSpeedStepと同じように、OS側でCPU負荷などをチェックしながら周波数の上げ下げをリクエストできる。あるいは、OS側からこの程度の省電力化を行なって欲しいなどのリクエストを出すといった仕組みも用意されている。

 PCUで自動コントロールを行なう場合のメリットは、従来のTurbo Boostで管理されていた部分も含めて、最低周波数から最高周波数までフラットにコントロールできることだ。これにより、必要に応じて性能を向上させられるし、OSの応答性を改善したり、最適電力周波数付近にできるだけ近付けるようにして、従来よりも効率よく電力管理を行なえるのだ。

SpeedShiftでは、Turbo Boostの領域を含めて、CPUがフラットにコントロールすることができる。全てはCPUの内部で完結するのでより効率よく利用することができる

Windows 10の将来のアップデートで利用可能に、Windows 10+Skylakeでさらなる長時間バッテリ駆動が実現される

 このSpeedShiftを利用するには、OS側の実装が必要になる。Intelによれば、Windows 10のSpeedShift実装を現在Microsoftと協力して進めている段階だという。近い将来リリース予定のWindows 10のアップデートなどで実装されることになる。もちろん、SpeedShiftが利用できないOSでは、SpeedStepのマイクロプロセッサとして動作するので、Windows 7/8などの以前のWindowsや現状のWindows 10で利用する上で問題はない。また、Linuxに関しても現在Linuxコミュニティと協力して開発を行なっているとのことだった。

 IDFで行なわれたテクニカルセッションでは、ベンチマーク結果も示され、WebXPRT15やTabletMark3のようなベンチマークテストでは、処理能力は上がっているのに、消費電力は下がるという結果が出ているという。これにより、トータルで考えれば、Pステート時の消費電力が下がるので、PCをバッテリでずっとアプリケーションを回しながら使うような使い方であれば、性能は向上しつつ、かつバッテリ駆動時間が増えるという挙動が実現されるだろう。

IDFのテクニカルセッションで示されたSpeedShiftを有効と無効にした場合のベンチマークの差。WebXPRT15では性能は向上し、消費電力も削減されることが確認できた。その一方でユーセージによってはほとんど変わらない場合もあるという。使い方に依存するようだ

 2-in-1デバイス、あるいは薄型ノートPCを持ち運んで使うユーザーにとっては、少しでも快適に、かつ長時間バッテリで利用したいという希望があると思う。Haswellで、新しいCステートの追加などによりその希望は大分実現されたと言えるが、Skylakeではそれに加えてPステートの新しい制御が加わることで、さらに長時間バッテリ駆動が実現できる可能性がある。Windows 10への実装と併せて、今後登場するWindows 10搭載ノートPCや2-in-1デバイスなどに実装されることを期待したいところだ。

(笠原 一輝)