このページの本文へ

塩田紳二のWindows 8 IN-N-OUT 第13回

Windows 8はクラウドも使ってアプリの消費電力を減らす

2012年07月26日 12時00分更新

文● 塩田紳二

  • この記事をはてなブックマークに追加
  • 本文印刷

Windows 8で導入される新ドライバー
「Power Engine Plugin」

 Windows 8の開発時には、まず消費電力の計測を行なう専用マシンを、主要なプロセッサーベンダーごとに作ったという。そしてOSのビルド※1ごとに、このテストマシンに自動インストールを行なって、消費電力を自動測定しているという。消費電力はアイドル時、ウェブブラウジング、ビデオ再生、オーディオ再生、スタンバイ状態などの複数の状態で測定して、ソフトウェアの完成に向かうに従って消費電力が増大してしまわないように、注意を払って開発が進められているようだ。
※1 ある時点でのソースコードから実行可能なバイナリを生成すること。

 OSが注意したとしても、実際の利用では設定などによるバックグラウンドタスクの状態により、アイドル状態が連続しない可能性もある。一般にプロセッサーの省電力機能は段階的に働いており、アイドル時間が長くなるほど消費電力を小さくする「深い休眠状態」(Deep Sleep)に入っていく。マイクロソフトがWindows 8と7でこれを測定したところ、画面がオンになっている状態では、Windows 7のアイドル時間は最大で15.6ミリ秒が限界だったのに対して、Windows 8ではアイドル時間の35%が100ミリ秒を超えるようになったという。

 またWindows 8では、プロセッサーやチップセットあるいはSoCの電源管理用ドライバーとして「Power Engine Plugin」 (PEP)という仕組みが用意された(図1)。このドライバーは、各プロセッサーシステム向けに省電力機能を統括するもので、SoCやチップセット内蔵のUSBコントローラーやキーボードコントローラーなどの省電力機能を、プラグイン側で管理するためのminiportドライバーだ。各種デバイスドライバーと電力管理機能を分離できるため、サーバー向けやデスクトップ、タブレットといったプラットフォームごとに、デバイスドライバーを作り分ける必要がなくなった。

図1 PEPは電力管理のプラグインとして、各プラットフォーム別に用意される。PEPがプラットフォームハードウェア固有の電力制御機能を持ち、プラットフォーム内蔵デバイスの電力制御を行なう。そのためデバイスドライバーは、プラットフォーム固有の電力管理と分離される

Metroアプリはデスクトップアプリよりも
省電力に動作する

 しかし、さらなる省電力を実現するためには、アプリケーションの構造にまで踏み込む必要がある。というのは、システム側でプロセッサーをアイドル状態に保つように配慮しても、アプリケーションが動き続ければ、プロセッサーをアイドル状態にすることはできないからだ。Windows 8でいうデスクトップアプリケーションは、構造的にバッテリー駆動であることを想定して作られておらず、実行状態と停止状態(スリープ/休止状態)の2つしかないという前提で作られている。中には、なんらかのチェックのために一定時間ごとにプログラムが動作し、電力を消費してしまうようなアプリケーションもある。

 Windows 7の場合、「デスクトップガジェット」の表示をやめると、バッテリー寿命が延びることが知られている。これは、ガジェットがタイマーなどで定期的に動き、その実行で電力を消費するからである。ガジェットはJavaScriptやVBScriptなどのインタプリタ言語で記述されているため、同等の機能を持つ機械語コードのアプリケーションよりも、実行には長い時間がかかる。そのため、例えば時計ガジェットのように1秒に1回の動作でも、トータルではバッテリー駆動時間に大きな影響を及ぼすことになる。Windows 8でもガジェットを含むデスクトップアプリケーションに関して言えば、バッテリーに与える影響はWindows 7と変わらない。

 そのため、新しく作られたMetroスタイルアプリケーションは、最初から省電力になるようにプログラムを作る仕組みが導入されている。そのひとつが、アプリケーションのライフタイムをアプリケーション自身ではなく、Windows 8側で管理するというものだ(図2)。

図2 Metroアプリは、バックグラウンドになると5秒後に一時停止(Suspended)になり、スケジューリングの対象からも外される。他のアプリの起動などでメモリーなどが必要になれば、通知なしにそのまま強制終了させられる

 Metroスタイルアプリケーション(以下Metroアプリ)は全画面を占有するので、他のMetroアプリがフォアグラウンドとなれば、いままで実行されていたMetroアプリはバックグラウンドになる(図3)。このときバックグラウンドになったMetroアプリには「バックグラウンドになった」との通知が行なわれ、5秒後にSuspend(一時停止)状態にされる。Metroアプリはこの5秒間の間に、再開に必要な情報などをセーブする。

図3 Metroアプリは全画面を占有するため、他のMetroアプリがフォアグラウンドになれば、残りはバックグラウンドになる(スプリットなど一部例外あり)。バックグラウンドになったアプリは一時中断状態となる

 一時停止状態となったアプリケーションは、スケジューラーの対象からも外れる。さらにメモリーが逼迫したときなどには、通知なしに強制終了させられる。このような構造になっているため、バックグラウンドのMetroアプリが消費電力に影響を与えることはほとんどない。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン