高性能コアと省電力コアと異なるコアの組み合わせである
big.LITTLEへのWindows 10の対応はどうなっている?
もう1つのARMの省電力技術がbig.LITTLEだ。PCやスマートフォンに対する性能向上の要求はいまだに強く、プロセッサには年々処理速度の向上が求められる。このため、高性能なプロセッサコアでは、アウトオブオーダー実行、スーパースケーラー構造といった複雑な仕組みが使われる。
しかし、一般にこうした機能のために回路規模が増大すると、消費電力もそれに応じて大きくなっていく。このため、最低クロック周波数、最低電源電圧のときの消費電力すらも大きくなってしまう。つまり負荷が低い場合の消費電力を一定以下にすることが不可能になる。
big.LITTLEは、こうした問題に対処したもので、高い性能を持つが最低動作時の消費電力があまり小さくない「big」プロセッサコアと、処理性能はそれほど高くないものの電力効率が高い「LITTLE」コアを組合せ、負荷に応じてタスク割り当てを切り替える方式だ。
bigコアには複雑なパイプラインを持つ高性能コアが、LITTLEコアには、単純なパイプラインを持つコアが使われる。電力効率の高いコアは、クロック周波数や電源電圧を下げたときの消費電力が小さい。また負荷が低いタスクには高い処理性能が不要だ。このため、2種類のコアを負荷に応じて切り替えれば、負荷の高いときのみ消費電力の大きなコアが動作し、負荷の低いときには、電力効率のいいコアが動作することで、システムの消費電力を下げることが可能になる。
タスクをLITTLEコアで実行しているときに負荷が高くなったら、最初はDVFSが対応しクロック周波数が上がる、さらに負荷が高くなり、最高クロック周波数(最大電源電圧)となった時点で、bigコアへとタスクを切り替える。逆にbigコアで実行していたタスクの負荷が小さくなって、動作周波数と電源電圧をDVFSで下げ、最低クロック、最小電源電圧となった時点でタスクをLITTLEコアで実行する。
コアの切り替え方法には、いくつか手法があるが、一番柔軟性が高いのが、OS側のタスクスケジューラーで、タスク切り替えによりコアを切り替える方式だ。しかし、このためにはタスクスケジューラーがコアの種類を区別し、タスクの負荷に応じた割り当てをする必要がある。
Linuxでは、そのためにカーネルに「Power-Aware」(あるいはEnergy-Aware)スケジューリング機能を組み込んだ。これは一般的に、OSのスケジューリングで、電力消費の観点で異なる特性を持つコアがあるときに、電力効率あるいは性能などを考慮してコア割り当てを行うスケジューリングを指している。
Windowsのスケジューリングに関しては、現状のインテルのCPUは、異なる電力効率のコアを組みあわせることができないため、Power-Awareにはなっていなかったと推測される。ただし、Windowsのスケジューラーは、コアに対するタスク割り付けに関しては、論理コアと物理コアの対応を認識している。IntelのHyper-ThreadingやAMDのbulldozer Coreへの対応などのためにWindows 8の段階で実装されており、処理性能が落ちないように論理コアと物理コアを区別して割り当てをしている。
一般にスケジューリングでは、キャッシュなどを有効に利用するため、一度特定のコアに対して割り当てたタスクは、同じコアに割り当てようとする。このようにすることで、前回実行時にキャッシュに取り込まれたデータや、プロセッサに直結しているメモリにあるデータ(マルチプロセッサでNUMA構成の場合)を利用できる可能性が高くなるためだ。
そこでOSをbig.LITTLEにきちんと対応させようとすれば、カーネルにある程度の改修が必要になると思われる。big.LITTLEは、Android向けに最初はLinuxで実装がされたが、かなりの時間がかかっている。ただLinux側で、以前からbig.LITTLEとは独立してPower-Awareなスケジューリングについては議論が進んでいた。
Windows On ARMに使われるSnapdragon 835には、性能を重視したコアと電力効率を重視したコアがそれぞれ4つ内蔵されており、合わせて8コアを搭載する。どちらもKryo 280と呼ばれているが、ARM社のCortex-AシリーズのARM v8コアをベースに改良を加えたものだ。おそらくは、Cortex-A73(あるいはA72)とA53を改良したものと推測される。
性能重視のコアは、クロック周波数が最大2.45GHz、2次キャッシュが2MB。これに対して電力効率を重視するコアは、最大1.9GHz/1MBとなっている。ハードウェアとしては、big.LITTLEに対応せざるをえず、手法としては、タスクスケジューリングで対応しなければならない構成だ。
下の写真は、今年6月のCOMPUTEXでのデモで撮影したタスクマネージャーの写真だ。物理コア8つ、論理プロセッサーも8つで認識されている。タスクスケジューラーからは、コアの特性の違いは感じられないが、最大クロック周波数は、LITTLE側の1.9GHzで認識されている。
当初の予定では、2017年中に登場だったWindows On ARMだが、12月5日にQualcommがプライベートイベントでASUSやHPの製品を発表した。また、現時点ではマイクロソフト自身からの正式アナウンスはない。このあたりをみると、Windows On ARMはQualcomm主導でプロジェクトが進められたと思われる。前述のbig.LITTLEの実装などがどうなっているのか、非常に興味がある。実機が入手できるようなら、このあたりも検証したいところだ。
この連載の記事
-
第429回
PC
Windows Updateの「利用可能になったらすぐに最新の更新プログラムを入手する」はオンにした方がいいか? -
第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の新機能が見えてきた? - この連載の一覧へ