Cool Chips 16において、IntelのPrincipal EngineerのMichael McCool氏が「What Supercomputers can Learn from Phones」と題する基調講演を行った。また、ARMもCortex-A5 MPプロセサの待機電力を50~80%削減する技術を、James Myers氏が招待講演で発表した。
Intelの省電力技術とスパコンが携帯から学べることは?
携帯電話などでは電池寿命を延ばすため、省電力がもっとも重要な技術となっている。また、データセンターやスパコンでも冷却や電気代の点から、省電力が重要になっている。この電力を減らす技術がPower Management(電力管理)である。McCool氏は、電力管理には、
- 性能の最適化
- 不要な電気は消す
- 出来るだけ長く眠る
- 処理をまとめる
- 熱容量を利用する
- システム全体を考える
という6つの戦略があるという。
第1の性能最適化であるが、プログラムのチューニングを行って性能を上げれば、一定の処理を行うのに必要なエネルギーは減少し、省電力につながる。最近のプロセサはマルチコア、マルチスレッドであり、SSEなどのSIMD機構を搭載しており、これらを有効に利用して並列処理を行えば、さらに性能を上げ、消費エネルギーを減らすことができる。
第2の不要な電気を消すというのが、省電力の極意である。最近のチップでは使用していない部分の電源をオフにする機能を持っているものが多い。従って、要らないものは使わない、使わないものは電源をオフにするということが重要である。
例えば、アプリがファイルをオープンにしたままにしておくと、そのファイルをアクセスしていなくてディスクの電源を切ることができない。アクセスが終わったら、すぐにクローズすれば電源を切ることができ、ムダな電力消費を減らすことができる。
携帯用のプロセサはリーク電流が少な目の半導体プロセスを使うが、それでも無視できない程度のリーク電流が流れ、電力を消費してしまう。このため、最近のプロセサでは、動作しない期間は電源をオフにしてリーク電流をカットするパワーゲートが使われている。
できるだけパワーゲートする期間を延ばすためには、「Race to Halt」という作戦が使われる。プロセサ自体のアクティブな消費電力は速度の3乗に比例するので、消費電力の点では、高速で動作させるのは不利であるが、携帯ではディスプレイの電力などが大きく、プロセサは高速で動作して短時間で処理を終わってパワーオフし、プロセサ以外のコンポーネントの動作時間を減らすほうが全体の消費電力は減るという。
パワーゲートで使っていない部分の電源をオフにすると消費電力が減るかというと、そうとは限らない。実は、パワーゲートで電源をオフするときとオンするときには余計な電力を消費してしまう。電源をオフしている期間が短いと、その期間、リーク電流を抑えた節電の効果より、オン、オフ時の追加の電力の方が多くなり、逆に消費電力が増えてしまうことになる。
このため、第4の戦略の、できるだけ長くパワーオフの状態(眠る)を続けることが重要になる。
そのためには、不必要な短時間のタイマー割り込みを要求したり、小さなループを廻って事象を待ち合わせたりするようなプログラムは避けるべきである。また、データのバッファ領域は大きくとって、I/Oデバイスへのアクセス回数を減らして、I/Oデバイスが長くスリープできるようにプログラムを書くのが良い。
眠る時間を長くするには大きく分けて2つの手がある。1つは、時間的にばらばらと入ってくる処理要求をその都度、受け入れるのではなく、ある程度の時間、溜めこんでまとめて処理するという方法である。休日と出勤日の数は変わらないが、飛び石連休を入れ替えて長い休みを作るのと同じ考えである。
もう1つの手は、全体にはあまり忙しくなく、全員がのんびり仕事をしているよりも、例えば、半分の人がフルに仕事をし、残りの人は休むという方法である。職場の場合は、いろいろと問題があるが、プロセサの場合はこの方が省電力になる。
これが第4の処理をまとめるという戦略である。このためには、時間的にばらばらの処理をまとめるOSの機能や、休ませるコアからフルに働かせるコアに仕事を移す機能が必要になる。