このページの本文へ

前へ 1 2 次へ

Windows Info 第109回

Windows on ARMにおいて気になる電源管理への対応

2017年12月17日 10時00分更新

文● 塩田紳二 編集● ASCII編集部

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

 今回は前回紹介したドンキの2万円PCについて記事を書く予定だったが、問題が起きてしまった。簡単に言うと、この2万円PCは、OSのアップグレードや入れ替えで問題が起きやすいタイプのハードウェアのようで、正しく稼働していない状態になり、検証が不可能になってしまった。

 RS3ことFall Creators UpdateのインストールUSBメモリを作り、ここからのアップデートを試みたのだが、インストール中にネットワークデバイスが認識されず、インストール後にも無線LANデバイスが見えないままとなった。

 同機には無線LANしかネットワークデバイスがないので、このままでは何もできない状態でインストールも不完全なままだった。ネットワークドライバを直接インストールしようとしたが、どうも親デバイス(SDIO)からして正しく認識されておらず、うまくいかなった。回復パーティションもRS3に書き換わり、購入時の状態に戻すことはできなかった。

 実はその後はある程度まで復帰させることができた。解決策としては、OS標準のドライバで対応可能な有線LANアダプタ(筆者はASIX AX88772Aを搭載したアダプタを利用)を用意し、これを接続した状態でRS3を再インストールした。これで多くのデバイスが導入されたが、現時点ではまだ4つほどのデバイスが「不明なデバイス」のままになっている。サウンドデバイスが認識されていないため、残り4つはそれ関係ではないかと思われるが、なにせドライバが公開されていないので、そのままにしてある。また、バッテリデバイスなども認識されておらず、間違ったデバイスが登録されている可能性もある。

 そういうわけで、OSを入れ替えようなどと考えている人は十分に注意されたい。おそらく、インストーラーがデバイスの列挙に失敗し、いくつかのデバイスが見えないままとなり、インストールに失敗したようである。ファームウェア側の問題だとすると、Linuxなどのインストーラーでも同様の問題が起こる可能性は否定できないため、かなりのリスクを認識の上作業する必要がある。こうした事情なので、同機種についてはもう少し回復させてから再度記事にさせていただきたい。

移植自体はそう難しくはなかったと考えられる
Windows on ARM

 さて、今回は2万円PCの前に2回に渡って紹介してきた「Windows On ARM」の内部的な考察をさらに進めていきたい。

 ARMプロセッサは、PCで広く使われているインテル系プロセッサとはアーキテクチャが違う。CPUの命令セットについて言えば、Windows 10を含むWindows NT系カーネルは、過去に異なるアーキテクチャへの対応が行なわれてきたために移植の障害にはならなかったと思われる。

 しかし電力管理などでは、それらの対応が進んだのがここ最近であること、32bit ARMアーキテクチャ(ARMv7)に移植されたWindows 10 Mobileでは、ハードウェアが特定されていて多様なARMプロセッサに対応していたわけではないことから、Windows On ARMでどのような対応するのか非常に興味のある部分だったのだ。

ARMプロセッサにおける電力管理

 ARMプロセッサには、大きく2つの省電力機能がある。1つは、負荷に応じてSoCの動作クロック周波数や電源電圧を制御する「DVFS」、もう1つは、処理性能の高いコアと電力効率の高いコアを組みあわせ、電力効率と処理性能を高める「big.LITTLE」技術である。

 DVFSとは「Dynamic Voltage and Frequency Scaling」の略で、簡単に言えば、CPU負荷に応じて、コアやSoCの電源電圧とクロック周波数を増減させるものだ。一般にCPUコアの処理中の消費電力は、電源電圧の2乗とクロック周波数に比例する。このため、電源電圧を下げることで、一定処理に対する消費電力を下げることができる。

 ただし、電源電圧により動作クロックの上限が決まってしまうため、クロック周波数も同時に下げる必要がある。クロック周波数を下げると処理に要する時間が増えるので、クロック周波数を半分にすると処理時間が2倍になるだけだ。このため、クロック周波数自体は結果的には消費電力に影響がない。これに対して、電源電圧の2乗が消費電力に影響することになるため、電源電圧を下げると大きな電力消費が可能になる。DVFSはこの原理の上に成り立つ省電力技術だ。

 インテル系プロセッサでも、Skylakeから「SpeedShift」技術が導入されている。従来の「SpeedStep」では、CPUの動作モードのうち、仕様上の最高クロック周波数(保証周波数、カタログに記載されるCPUの動作周波数のこと)と最低周波数の間をOSと協調して切り替えていて、保証周波数に達したとき、熱的な余裕があるならCPUが自動でターボ周波数に切り替えていた。

Intel SpeedStepは、OS側がPステートを切り替えるがP0ステート(ターボ周波数)はプロセッサが自動で行なう

 このSpeedStepもある意味、負荷に応じてクロックおよび電源周波数を切り替えるものだったが、OS側でPステートを切り替える必要があり、切り替え自体に時間がかかっていた。

 これに対して、SpeedShiftでは、最低動作周波数からターボ周波数まで、クロック周波数(と電源電圧)の切り替えをCPU側が自動で行なう。

SpeedShiftでは、OS側は最大、最小のPステートを指定するが、Pステートの変更はプロセッサ側が負荷を考慮して自動的に行なう

 このため、SpeedStepと比較すると短い時間でクロック周波数と電源電圧の切り替えが可能だ。つまり、負荷が高くなってからクロック周波数と電源電圧を上げるまでの時間が短くなるため、処理を短時間で終了させることができ、かつ負荷が低くなったときにも短時間でクロック周波数と電源電圧を素早く下げることができる。ある意味、SpeedShiftはDVFSのインテル版ともいえる。なお、SpeedShiftではOS側は最大/最小の動作クロック周波数を設定し、SpeedShiftは設定された範囲内で負荷に応じてPステートを切り替える。

 Windows 10はSpeedShiftに対応しており、RS3(Windows Ver.1709)からはSpeedShiftを使い、バックグラウンドタスクの消費電力を下げる「Power throttling」と呼ばれる技術が導入された。

Windows 10 RS3のタスクマネージャーは、Power Shrottlingの状態を表示できるようになっている

 SpeedStepとSpeedShiftは排他的で、CPUの設定としてはどちらかを選ばないといけないため、Power Throttlingが動作しているならそのシステムはSpeedShiftで動作している(SpeedShiftを有効にすると、CPUをリセットするまで停止できない)。

 Windowsでは、フォアグラウンドになれるタスク(プログラム)は1つのみなので、それ以外のプログラムはすべてバックグラウンド状態となる。Power Throttlingはバックグラウンドタスクには、最大動作周波数を下げるなどして、低消費電力状態で実行できるようにしていると思われる。このため、Windows 10 RS3以降であれば、DVFSを使ったARMプロセッサの省電力機能には対応することはそれほど困難ではないと考えられる。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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