このページの本文へ

前へ 1 2 3 4 次へ

基礎から覚える 最新OSのアーキテクチャー 第11回

マルチコアCPUの消費電力はスケジューリングで変わる?

2012年02月16日 14時00分更新

文● 塩田紳二

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

実はCPUの消費電力と
関係が深いスケジューリング

 スレッドが起動されるタイミングによっては、スケジューリングの振る舞いは変わってくる。例えば、10個のスレッドがほぼ同時に起動するのと、起動時間にある程度の差を付けて起動するのでは、瞬間的な負荷は違ってくるし、ほかのスレッドの実行順序や継続時間などにも影響が出る。

 そのためスケジューリングは、ほんのわずかな違いが大きな変動につながるような動作をしているように見える。ある程度までは汎用的なスケジューリングアルゴリズムを考えることで、効率的な動作が可能である。だが実際にパソコンを動作させていると、「時と場合によって違う」部分もある。例えばGUIに関わるスレッドに多くの時間を割り当てるというのは、対処療法的な方法とも言える。しかし、それもWindowsが長い間、段階的にチューニングされてきた結果でもある。

 スケジューリングは消費電力にも大きく影響している。人間が操作するコンピューターは、アイドル状態である時間の比率が高い。ここでいかに消費電力を小さくするかで、全体の消費電力が違ってくる。プロセッサーの性能がピークにあるときの消費電力を小さくするのは難しい。ハードウェアの特性として、クロック周波数を高くすればするほど、電源電圧を大きくする必要がある。オーバークロックで電圧を操作する必要があるのはそのためだ。しかし電圧やクロック周波数を高くすることは、消費電力の増大につながる。

 一方でピーク性能時の消費電力が同程度なら、動作速度が速ければ速いほどいい。なぜなら処理速度が速いほうが、消費電力の大きなピーク性能動作の時間が短くなるので、より長い間アイドル状態でいられるからだ。

 また、マルチコアCPUやマルチプロセッサー環境では、スケジューリングはどのコアでスレッドを実行するかにも関わる。処理性能だけを考えたら、より多くのコアにスレッドを分散させたほうが有利だが、プロセッサー構成を考慮することで、動作しているプロセッサーの数を減らすことができ、消費電力を減らすことができるのだ(図2)。

図2 マルチプロセッサー環境でのCPUパッケージとスレッド割り当てによる消費電力の違いのイメージ図

 また比較的CPU負荷の軽いスレッドなら、1つのコアに複数のスレッドを割り当てても処理時間に影響が出ることはない。そのような場合は、消費電力を減らせるコアの割り当て方がある(図3)。

図3 1スレッドのCPU負荷が小さく処理への影響が小さければ、消費電力で有利になる割り当て方法がある。コツは動かすCPUパッケージを減らすことだ

 ハイパー・スレッディングのような「SMT」(同期マルチスレッディング)の場合、論理コアは別だが物理コアとしては同一となる組み合わせがある。その組み合わせへのスレッドの割り当て方によっても、消費電力が違ってくる(図4)。例えば、ある論理コアが動いているなら、同一物理コアにある別の論理コアがアイドル状態でも、消費電力は減らない。

図4 ある物理コア中で論理コアが1つでも動いていると、その物理コアはオフにできない。消費電力削減のためには、同じ物理コアにある論理コアを動かす方が効率的だ

 そこでWindowsには「Core Parking」と呼ばれる機能がある。スレッド数に比べてコア数が多い場合には、CPU数や物理コアと論理コアの関係を考慮して、スレッドの実行を特定のCPU(または物理コア)に“集める”わけだ。Windowsのスケジューリングアルゴリズムもまた、ハードウェアの進化や消費電力のトレンドに合わせて、進化を求められていることがご理解いただけただろうか。

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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