チュートリアルC1: Software Design for Low-Power Embedded Systems 講師: Youngsoo Shin、石原 亨 (東大) 会場: D会場 時間: 7/24 9:05〜10:40 参加人数: 50人程度(DASの人も含む) 1.はじめに 特にバッテリー駆動の携帯機器を設計する場合、低消費エネルギー化(または低 消費電力化)が重要である。現在まで、電源電圧は下がってきているが、電流は 上がってきており、チップの消費電力は増え続けている。ソフトウェア自体は電 力を消費しないが、ソフトウェアの設計は消費電力に大きなインパクトを持つ。 CMOS回路の主な消費電力は充放電によるものであり、 (スイッチング確率) × (負荷容量) × (動作周波数) × (電源電圧の2乗) で表される。よって、低消費電力化を実現するためには、この4つの値を低減す る必要がある。 消費エネルギー(電力量)は、消費電力を時間軸に対して積分した値である。よっ て、実行速度に対する最適化は即ち消費エネルギーに対する最適化でもある。つ まり、実行速度に対して最適化されたソフトウェアは、その消費エネルギーも少 ない。ハードウェアの動作周波数と電源電圧が定まっている場合には、(スイッ チング確率×負荷容量)の値を低減する必要がある。 本チュートリアルでは、アプリケーション・プログラムの設計技術(ソースレベ ル設計技術とコンパイル技術)、オペレーティングシステムの最適化技術(シャッ トダウンとスローダウン)、ハードウェア・アーキテクチャの変更技術の3つに ついて説明した。 2.ソフトウェアの消費電力の見積り CISCプロセッサ486DX2を用いて、各命令を実行した際の電流を測定する実験が行 われた。その結果、以下の事が分かった。(a)命令による電流が異なる、(b)アド レッシングモードにより電流が異なる、(c)命令オペランド(メモリやレジスタ) の内容は影響を与えない、(d)前後の命令間の影響は無視できる(電流が15mA程 度)。 しかし、このCISCプロセッサの結果は、RISCプロセッサにはあてはまらない。 RISCプロセッサSA-1100に対して同様の実験が行われたが、その結果、以下のこ とが分かった。(a)命令毎の電流の差は小さい、(b)電流はアドレッシングモード やオペランドによらない。 以上の結果をまとめると、以下のことが言える。ハイエンドRISCプロセッサでは、 クロック、メモリ、データパスの順番に電力を消費する。クロックが50%以上を 占める。実行される命令の種類には影響されない。一方、ローエンドのCISCプロ セッサやDSPではコンパイラ技術による電力削減の余地がある。 3.低消費電力指向コンパイラ 基本的に、実行速度に対する最適化を行えば、低消費エネルギーが実現される。 それ以外の最適化技術は効果が小さいことが多い。しかし、ハードウェアを変更 することなく低電力化が実現されるため、適用することが簡単であり、将来的に は重要になるだろう。 コンパイラの内部処理は、入力言語に依存した処理を行うフロントエンド、中間 コードに対する処理を行うミドルエンド、プロセッサに依存した処理を行うバッ クエンドに分けられる。今日の話はハードウェアの情報が使えるバックエンドに 焦点を当てる。 現在までコンパイラの設計者は低電力指向コンパイル技術には興味を持たなかっ た。その理由は以下の通りである。(a)典型的なコンパイラは実行速度とコード サイズを目標にしている、(b)最適化コンパイラは高機能な汎用プロセッサのた めに作られている、(c)ソフトウェアとハードウェアの掛け橋がない、(d)電力の 問題はそれほど重要視されてこなかった。 低電力指向コンパイラを考えるとき、低消費電力かのために、実行速度を犠牲に することは許されないことが多い。 以降、現在までに提案された低電力指向コンパイル技術を紹介する。 Cold Scheduling はスイッチング確率の最小化を目的とした命令スケジューリン グ手法である。命令間のハミング距離が最小になるように命令を並べ替える。9 のプログラムについて実験を行った結果、20〜30%の電力が節約されたと筆者は 主張しているが、実際はあまり効果がないと思われる。 キャッシュミス時に主記憶からキャッシュに命令を転送する際の電力を低減する 命令スケジューリングも提案されている。バスの遷移が最小となるように、命令 を並び変える。基本ブロック内でのみ命令を並び変える、いわゆる局所スケジュー リングであり、効果は大きくない。制御系のアプリケーションだと基本ブロック のサイズ(命令数)が5〜10程度なのでほとんど効果がない。 DSPを対象とした最適化。まず準備として、各命令の消費電力を測定しテーブル に持っておく。また、命令間の影響も調べる。そして、コード生成を行う際、消 費電力が少なくなるように、命令を選択する。例えば、2つの変数をメモリから ロードする場合、それぞれ個別に2命令を使ってロードするではなく、 両方を 同時に1命令でロードすると消費電力が半分くらいになる。また、ブース乗算器 の場合、オペランドを並び変えることにより低電力が実現される。 レジスタの割当ての最適化。まず変数の干渉グラフを作成し、グラフ彩色により、 レジスタの割付けを決定する。命令コード中のオペランド(レジスタ)の部分の スイチングが減少するように、レジスタを変数に割り付ける。これにより、命令 デコーダや命令レジスタの電力が削減される。これを実現するためには、以下の ような方法を用いた。まず、レジスタトレースからレジスタ遷移グラフを作成し、 最も電力削減効果の大きな2つのノードを選び、スワップする。それを繰り返す。 この方法によって、32個のレジスタを持つDLXプロセッサでは、最大9.8%、平均 4.25%の電力削減が得られた。 メモリマッピングの最適化。信号処理アプリケーション(画像や音声など)はメ モリアクセスが多く、規則的なアクセスパターンを示す。アドレスバスでのスイ チングを減少させることによって、オフチップ・ドライバやデコーダ回路の電力 が削減される。メモリアドレスバスの遷移が最小になるように配列をメモリに割 り当てる。一元配列では、インタリーブ方式、2次元配列では列優先または行優 先のマッピング方法がある。画像処理のいくつかの例では、最大63%電力削減が 得られた。 4.低消費電力指向アプリケーション・プログラム設計 今までの話はパフォーマンスを犠牲にしないで、省電力を達成しようというもの であった。しかし、計算の品質と消費エネルギーのトレードオフを考えることも 可能である。例えば、画像処理のアプリケーションで、多少画質が低下しても構 わないのであれば(出力デバイスの解像度が低い場合など)、下位のビットを計 算しないことで省電力化が実現できる。 Windows APM (Advanced Power Management)などでは、全てのスレッドが待機状 態ならシステムをシャットダウンする。これを活用する。つまり、極力長い間、 待機状態にさせる。 5.低消費電力指向オペレーティングシステム シャットダウンとスローダウンによる電力管理がある。 いずれの場合も、システムの各コンポーネントの使用時間、頻度を予想すること が重要である。シャットダウンとスローダウンでは、理想的にはスローダウンの 法がより低電力である。シャットダウンとスローダウンの利点と欠点は以下の通 りである。(a)シャットダウンの方がハードウェアの実現が容易である、(b)スロー ダウンの方がオーバーヘッドが大きい、(c)シャットダウンはソフトウェアに対 して透過である、(d)スローダウンの方がエネルギー効率が良い。 シャットダウンとは、アイドル時間がある一定値を超えたら、スリープ状態に遷 移することである。しかし、スリープになるまでのアイドル状態では電力が無駄 となっている。よって、高精度な予想が必要であり、その1つの方法は、アイド ル状態の履歴を基づいて決定する方法である。 スローダウンとは、コンポーネントの使用状況を予想し、電源電圧を下げること によって、実行速度を制御することである。リアクティブシステムにおいては、 PASTという予想方法がある。この方法では、10ms〜15ms程度の窓を用いて、過去 の履歴を調べ、次の窓は前回の結果と同じになると仮定する。 リアルタイムシステムでは、クリティカル区間を調べ、その区間内にあるジョブ をEDFによってスケジュールする。その後、スケジュールされたジョブを削除し、 ほかの区間を変更する。もし予測が完全であるならば、静的スケジューリングの 方が動的スケジューリングよりも消費電力が小さくなる。 6.アーキテクチャの変更技術 アーキテクチャー変更技術では、低消費電力指向キャッシュ設計、アプリケーショ ンに特化したメモリ階層設計、コード縮小、特定用途向けプロセッサ設計、バス の符号化などがあるが、今回では、バスの符号化に焦点を当てる. バスの送信側に符号化回路、受信側に復号化回路が必要である。 Transition Signaling を用いた符号化は、転送すべきデータと直前のデータと の排他的論理和を求め、それを送信する。データの値が確率が偏っているときに、 効果的である。 Bus-Invert 符号化は、もしそうした方がバスの遷移が少なくなるのであれば、 全てのビットを反転して送信する。ランダムデータに対して効果的である。 その他、PCM信号等に適した Probability Based Mapping や、狭いバスに適した Half Identity Half Reverse (HIHR)マッピングなどが提案されている。 7.まとめ ソフトウェア設計には、まだ低消費電力化の余地が大きい。例えば、ソースレベ ルでのソフトウェア設計手法、コンパイラ最適化技術の統合、リーク電流の最適 化に関する研究が挙げられる。低電力ソフトウェアとツールを開発するためには、 ハードウェアの理解が必要である。 8.質疑応答 質問1.Transition signaling の説明をもう一度して欲しい。 回答は省略.