第5章 Windows 8を支える機能たち - バッテリ使用効率を向上させる「Connected Standby」
本来は前章で語るべきかもしれないが、どちらかといえば技術的側面が大きいので本章で解説する。バッテリ消費を抑える省電力は、コンピューターの主流がデスクトップ型からノート型、ノート型からスマートフォンへと移る過程で重要視されるようになった。そのため、Windows 7でも全体的なパフォーマンスを向上させるために、イベントサウンドの長さを見直し、マルチタスクの割り込みにそれまでとは異なるタイミングを設けるなど、さまざまな改良を施している。
そもそも省電力化を実現するには、バッテリ消費量の高いサービスを無効にし、過度にプロセッサを乱用するアプリケーションの使用を控えるといった、全体的な見直しが必要である。例えばInternet Explorerは、前バージョンの同9からリッチな表示能力や、パフォーマンス向上を実現したJavaScriptが省電力化と相反するため、タイマ間隔を調整する項目を設けるようになった。ユーザーは同項目を調整することで若干ながら、外出先での駆動時間を延長させることが可能になっている(図351)。
Windows 8では、中心に位置するといっても過言ではないWindowsストアアプリの動作設計を見直すことで、さらなる省電力化を実現した。まずは前提から説明しよう。本来マルチタスクとは、複数のプロセスを切り替えて実行できるシステム・OSを指し、これまでのWindows OSでは標準搭載されてきた機能である。我々はバックグラウンド(背面)アプリケーションに任意の処理を行わせながらも、フォアグラウンド(前面)アプリケーションで作業を継続することができたのも同機能のおかげだ。
しかし、このマルチタスク処理は結果として消費電力の増加につながってしまう。そこでWindowsストアアプリでは、非稼働中のアプリケーションをサスペンドすることで、消費電力の軽減を実現した。ロジック自体は目新しいものではなく、UNIX系OSではシグナルという仕組みで任意のプロセスを一時停止する仕組みは以前から実現しており、Windows OSでもWindows NT 3.1時代の頃からスレッド単位で実行の中断や再開を行うAPIが用意されていたが、ユーザーレベルで操作する場面はほぼ皆無である。起動したアプリケーションは動作するのがあたり前、というあたり前の発想を逆手に取った面白い実装だ。
このロジックはReclaiming Memoryによるメモリの再利用と同じものだが、結果的に物理メモリのリサイクルと消費電力の軽減、つまり省電力化を実現したことになる。もう一つの改善は同社開発陣が「Idle hygiene」と呼んでいたアイドル状態の改善だ。バッテリはプロセッサやストレージなど各種デバイスの稼働で消費するだけに、アイドル状態を見直すことでバッテリ寿命の延長につながるというものだ(図352)。
Windows 8では「Connected Standby」と呼ばれる新しいスタンバイモードを用意し、ディスプレイは電源オフになるものの、カーネルは動作した状態になる。同社によると同モードによるバッテリ消費は、約16時間で5パーセント以下を実現できるそうだ。Windowsストアアプリは同モードに移行した際でも動作し、前述したバックグラウンド動作が実現可能。本機能により新しいハードウェアとWindows 8を組み合わせることで、省電力を実現しながらも、これまで以上に利便性の高い操作環境を得られることになる(図353~354)。
Microsoftはその結果を検証するため、OS自身やアプリケーション、サービスなどに代表されるソフトウェアのパフォーマンスを測定するWindows Performance Analysisや、ソフトウェアの診断情報を取得するためのEvent Tracingといったツールを使ってWindows 7とWindows 8の比較を試みた。その結果が上記の図352。Windows 7は15ミリ秒のタイミングで100パーセントのアイドル時間を確保しているが、Windows 8は100ミリ秒以上の長いアイドル時間を確保することに成功している。プロセッサやチップセットのアイドル状態を意識的に活用することで、この結果を導き出したのだろう。
これらはWinRT上で動作し、従来のデスクトップアプリケーションは未サポート。だが、バッテリ消費を軽減するため、DAM(Desktop Activity Moderation)呼ばれる機能でWin32アプリケーションは強制的にサスペンドされるという。DAMに関する技術資料はWebページ上で確認できるが、執筆時点では英語版ドキュメントのみ。興味がある方はリンク先にアクセスしてほしい。