このページの本文へ

前へ 1 2 次へ

Windows Info 第109回

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

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

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

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

高性能コアと省電力コアと異なるコアの組み合わせである
big.LITTLEへのWindows 10の対応はどうなっている?

 もう1つのARMの省電力技術がbig.LITTLEだ。PCやスマートフォンに対する性能向上の要求はいまだに強く、プロセッサには年々処理速度の向上が求められる。このため、高性能なプロセッサコアでは、アウトオブオーダー実行、スーパースケーラー構造といった複雑な仕組みが使われる。

 しかし、一般にこうした機能のために回路規模が増大すると、消費電力もそれに応じて大きくなっていく。このため、最低クロック周波数、最低電源電圧のときの消費電力すらも大きくなってしまう。つまり負荷が低い場合の消費電力を一定以下にすることが不可能になる。

 big.LITTLEは、こうした問題に対処したもので、高い性能を持つが最低動作時の消費電力があまり小さくない「big」プロセッサコアと、処理性能はそれほど高くないものの電力効率が高い「LITTLE」コアを組合せ、負荷に応じてタスク割り当てを切り替える方式だ。

 bigコアには複雑なパイプラインを持つ高性能コアが、LITTLEコアには、単純なパイプラインを持つコアが使われる。電力効率の高いコアは、クロック周波数や電源電圧を下げたときの消費電力が小さい。また負荷が低いタスクには高い処理性能が不要だ。このため、2種類のコアを負荷に応じて切り替えれば、負荷の高いときのみ消費電力の大きなコアが動作し、負荷の低いときには、電力効率のいいコアが動作することで、システムの消費電力を下げることが可能になる。

 タスクをLITTLEコアで実行しているときに負荷が高くなったら、最初はDVFSが対応しクロック周波数が上がる、さらに負荷が高くなり、最高クロック周波数(最大電源電圧)となった時点で、bigコアへとタスクを切り替える。逆にbigコアで実行していたタスクの負荷が小さくなって、動作周波数と電源電圧をDVFSで下げ、最低クロック、最小電源電圧となった時点でタスクをLITTLEコアで実行する。

big.LITTLEでは、タスクの負荷が軽くなったら、bigコア(図左側のA15コア)からLITTLEコア(図右側のA7コア)へ割り当てを変更する。タスクの負荷が高くなれば、逆にLITTLEコアからbigコアへと割り当てを変える

 コアの切り替え方法には、いくつか手法があるが、一番柔軟性が高いのが、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で認識されている。

今年6月でのWindows on ARMのデモ。タスクマネージャーでは8つのコアが表示されていて、コアの最大クロックは1.9GHzと認識されている

 当初の予定では、2017年中に登場だったWindows On ARMだが、12月5日にQualcommがプライベートイベントでASUSやHPの製品を発表した。また、現時点ではマイクロソフト自身からの正式アナウンスはない。このあたりをみると、Windows On ARMはQualcomm主導でプロジェクトが進められたと思われる。前述のbig.LITTLEの実装などがどうなっているのか、非常に興味がある。実機が入手できるようなら、このあたりも検証したいところだ。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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