今回は前回紹介したドンキの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が自動でターボ周波数に切り替えていた。
このSpeedStepもある意味、負荷に応じてクロックおよび電源周波数を切り替えるものだったが、OS側でPステートを切り替える必要があり、切り替え自体に時間がかかっていた。
これに対して、SpeedShiftでは、最低動作周波数からターボ周波数まで、クロック周波数(と電源電圧)の切り替えをCPU側が自動で行なう。
このため、SpeedStepと比較すると短い時間でクロック周波数と電源電圧の切り替えが可能だ。つまり、負荷が高くなってからクロック周波数と電源電圧を上げるまでの時間が短くなるため、処理を短時間で終了させることができ、かつ負荷が低くなったときにも短時間でクロック周波数と電源電圧を素早く下げることができる。ある意味、SpeedShiftはDVFSのインテル版ともいえる。なお、SpeedShiftではOS側は最大/最小の動作クロック周波数を設定し、SpeedShiftは設定された範囲内で負荷に応じてPステートを切り替える。
Windows 10はSpeedShiftに対応しており、RS3(Windows Ver.1709)からはSpeedShiftを使い、バックグラウンドタスクの消費電力を下げる「Power throttling」と呼ばれる技術が導入された。
SpeedStepとSpeedShiftは排他的で、CPUの設定としてはどちらかを選ばないといけないため、Power Throttlingが動作しているならそのシステムはSpeedShiftで動作している(SpeedShiftを有効にすると、CPUをリセットするまで停止できない)。
Windowsでは、フォアグラウンドになれるタスク(プログラム)は1つのみなので、それ以外のプログラムはすべてバックグラウンド状態となる。Power Throttlingはバックグラウンドタスクには、最大動作周波数を下げるなどして、低消費電力状態で実行できるようにしていると思われる。このため、Windows 10 RS3以降であれば、DVFSを使ったARMプロセッサの省電力機能には対応することはそれほど困難ではないと考えられる。
この連載の記事
-
第428回
PC
Google/Bingで使える検索オプション -
第427回
PC
WindowsのPowerShellのプロファイルを設定する -
第426回
PC
WindowsでAndroidスマホをWebカメラにする機能を試した -
第425回
PC
無料で使えるExcelにWord、Microsoft 365のウェブ版を調べた -
第424回
PC
Windowsの基本機能であるクリップボードについてあらためて整理 -
第423回
PC
PowerShellの今を見る 2つあるPowerShellはどっち使えばいい? -
第422回
PC
Windows 11の目玉機能が早くも終了、Windows Subsystem for Android(WSA)を振り返る -
第421回
PC
進化しているPowerToys LANで接続したマシンでキーボード/マウス共有機能などが追加 -
第420回
PC
Windowsプレビュー版に搭載されたsudoを試す -
第419回
PC
Windows Insider Previewが変わって、今秋登場のWindows 11 Ver.24H2の新機能が見えてきた? -
第418回
PC
Windows 11のスマートフォン連携は新機能が追加されるなど、いまだ進化している - この連載の一覧へ