雑誌無償購読申込み 最新号 バックナンバー 広告資料請求 EDN Japanについて お問合せ
雑誌無償購読申し込み
メールニュースレター登録
登録内容変更
アナログ IC/ディスクリート
電源/電池/コントローラー
PLD / メモリー
組み込みシステム
コンピュータ&ボード
EDA/IP/CAE/ソフトウェア
電子部品
計測器
ディスプレイ
デジタル家電
通信・ネットワーク
カーエレクトロニクス/産業機器
EDN Japan 記事検索
検索方法の詳細
雑誌無償購読申込み ニュースレター登録 この記事に対する感想/ご意見
coverstory
2004年6月号
Illustration by Don Arday
組み込みシステムの低電力化、
無駄な消費電力を絞り落とせ


組み込みシステムにおいて、低消費電力化は重要な課題である。消費電力を低減すれば、システムの外形寸法とコストを削減できるからだ。システム設計の初期段階から低消費電力化を考慮しておく必要がある。低消費電力化のカギを握るのはプロセッサー・アーキテクチャーである。ハードウエア技術とソフトウエア技術の両方を駆使して低消費電力化に挑む。

ロバート・クラボッタ
Robert Cravotta
 システムの消費電力を減らす。これは電池で駆動する機器に限った設計課題ではない。高性能ハードウエアを使って実現するような組み込みシステムも同じ課題を抱えている。
 低消費電力化のメリットは明らかである。まず電池駆動の機器を考えてみよう。消費電力を低減すれば、駆動時間を延長できる。駆動時間を延ばす必要がない場合には、より容量の小さい電池を選択することで機器の外形寸法や重量、コストなどを低減可能である。
 次に、電源コンセントから電力供給を受けるシステムを考えてみる。消費電力を抑えれば、放熱用のファンやエアコンに求められる放熱性能を軽減できる。消費電力が小さければシステムの発生熱量も少ないからだ。電源供給ユニットの外形寸法を小さくできるため、ファンの数を減らしたり、駆動音の小さいファンを採用したりできる。結果としてシステムの駆動音が小さくなる。このほか消費電力を低減することで、ホット・スポット(温度上昇が特に激しい部分)による部品実装密度の制限を解消できる可能性もある。部品実装密度が高まれば、一定の容積当たりのシステム処理性能を高められる。
 このように、消費電力を低減することでシステムの外形寸法とコストの両方を抑えられることが分かる。

プロセッサーLSIに注目

 では、実際に消費電力を低減するにはどうしたらよいのだろうか。組み込みシステムにおいては、プロセッサーLSIに注目する必要がある。
Advertisement
 組み込みシステムの消費電力のうち、プロセッサーLSIによって消費される電力はそれほど大きくない。ところが、プロセッサーLSIのハードウエア・アーキテクチャーやソフトウエア・アーキテクチャーによって、システム全体の消費電力や処理性能、さらにはEMI*特性が大きく変化するのである。
 無駄な消費電力を絞り落とすには、システムのハードウエア・アーキテクチャーとソフトウエア・アーキテクチャーの両方を、実装するアプリケーションに合わせて最適化する必要がある。最適化の手法は、アプリケーションによって変わる。すなわち、アプリケーションを実行するためにシステムが連続的に動作するか、イベントに応じて間欠的に動作するかによって決まる。
 連続動作においては、システムは高い処理性能を連続的に発揮する必要がある。従って、処理動作を実行していない待ち受け時間(アイドル時間)は比較的短い。一方で間欠的な動作では、システムの処理動作は離散的(バースト的)である。イベントが発生したときだけ処理動作を実行する。このためアイドル時間は比較的長い。

静止時と動作時の消費電力

 アプリケーションの動作が連続的であるか、間欠的であるかによって、システムの最適化方法が異なると述べた。そこでまず、各アプリケーションにおいて電力がどのように消費されているのかを確認しておく。
 現在、ハードウエアのほとんどはCMOS技術で製造されている。CMOS回路の消費電力は、スタチック(静的)な電力とダイナミック(動的)な電力に分けられる。静的な電力には、トランジスタのリーク電流が含まれている。このリーク電流は、トランジスタのスイッチング動作と無関係に発生する。このため、回路が動作していない状態でも常に電力を消費してしまう。
 リーク電流の正体は、逆方向バイアスされたソース(あるいはドレイン)のダイオード電流と、ドレイン・ソース間の弱反転層領域に流れる電流、およびトンネル電流(いわゆるゲート・リーク電流)である。これらの電流の大きさは主に、トランジスタの製造に使用するプロセス技術と回路設計に使用するセル・ライブラリーによって決まる。
 リーク電流はトランジスタが理論的にオフ状態にあるときにも消費される、無駄な電流である(下記の「リーク電流の低減に挑む」を参照)。システムが間欠的に動くアプリケーションではアイドル時間が長いため、システム全体を見ると消費電力のほとんどが静的な電力である。
 動的な電力は、回路や信号が異なる論理状態に遷移するときに発生する。その大きさはシステムの電源電圧、クロック周波数、およびスイッチング動作を行うトランジスタの数に依存する。システムが連続的に動作するアプリケーションにおいては、動的な消費がシステムの電力効率を決定する主要因となる。
 システムが動作しているときの消費電力はP=CfV2で近似できる。ここでCは静電容量、fはスイッチング周波数、Vは電源電圧である。静電容量はプロセス技術とセル・ライブラリーによって決まる固定値である。
 消費電力は電源電圧の2乗に比例する。このことから、電力消費に最も大きく影響するのが電源電圧であることが分かる。このため電源電圧の低減が進められているのである。しかし、使用可能な最小電圧は回路の最高スイッチング周波数と相関があり、同じプロセス技術で比較すればクロック周波数が高くなるほど、より高い電源電圧が要求される。

消費電力の評価指標

 システム設計者が直接、トランジスタのリーク電流を低減することはできない。そこで組み込みシステムの開発においては、電力効率を高めるように設計された部品を選択することが低消費電力化への第一歩になる。
 では、プロセッサーLSIの電力効率はどのように評価すればよいのだろうか。動作周波数当たりの消費電力(mW/MHz)をベンチマーク(評価指標)として利用する方法がある。ただしこの評価指標には問題がある。プロセッサーLSIの1クロック・サイクル当たりの処理性能が考慮されていないことである。
 例えば、mW/MHz値が相対的に小さいプロセッサーLSIと、相対的に大きいプロセッサーLSIがあるとする。両者を比べると、必ずしもmW/MHz値の小さいプロセッサーLSIの電力効率が高いわけではない。つまりmW/MHz値が小さくても、同じ作業をこなすためにmW/MHz値の大きいプロセッサーLSIの2倍の動作周波数で動作しなければならないなど、結果としてより多くの電力を消費してしまう可能性がある。
 そこで、mW/MHz値の代わりに処理性能当たりの消費電力(mW/MIPS*)を使う方法がある。ただしこの評価指標も完全ではない。mW/MIPS値を求める際にプロセッサーLSIに与える命令シーケンスが不明確であるからだ。例えば、NOP*命令だけを実行させると、mW/MIPS値はプロセッサー・コア動作時の最低値を示すはずである。この最低値は、実際のアプリケーションを処理しているときの消費電力とはかけ離れているだろう。
 より実用的なmW/MIPS値を求めるには、あるアルゴリズムの命令シーケンスをキャッシュ・メモリーあるいはローカル・メモリーに格納しておき、実行時の消費電力を測定する必要がある。ただしこの場合も、実際のアプリケーション処理におけるmW/MIPS値と完全に一致するわけではないので注意が必要だ。プロセッサー・コアがローカル・メモリーあるいはキャッシュ・メモリーの一方にまったくアクセスしない可能性があるからである。
 こうした理由から、プロセッサー・アーキテクチャーの優劣は、ベンダーが公表している消費電力の標準値や最大値だけでは判断できないことが分かる。参考程度と見なすべきであろう。実際の消費電力は、プロセッサーLSI上で実行する命令と処理するデータの量、プロセッサーLSIと外部のLSIでやりとりするデータの量、そして動的な消費電力管理機能などに大きく依存するからだ。
 すでにプロセッサーLSIベンダーは、こうした要因を考慮しつつプロセッサーLSIの消費電力を評価できるツールを用意し始めている。具体的には、アプリケーションの動作や命令シーケンス、プロセッサーLSIと外部のLSIでやりとりするデータの量と種類、およびプロセッサーLSIに組み込んだ消費電力管理機能の効果などをユーザーが手動で指定できるスプレッドシートと解析ツールである。ただし現在のところ、これらのツールの完成度はそれほど高くない。
 ここで消費電力管理機能とは、動作していない回路ブロックへの電源供給およびクロック信号入力を止める機能や、クロック周波数を動的に変化させる機能、クロック周波数に応じて電源電圧を動的に調整する機能などである。

消費電力を管理する

 ほとんどのプロセッサーLSIは、消費電力を低減するために特定の回路ブロックに対する電源供給を遮断する消費電力管理機能を搭載している。対象とする回路ブロックによって「スリープ(休眠)・モード」や「スタンバイ(待機)・モード」、あるいは「ロー・パワー・(低電力)モード」などと呼び分ける。ここで回路ブロックとは、プロセッサー・コアのほか、プロセッサー・コアの周辺回路、メモリー、クロック生成用発振器などを指す。これらの回路ブロックに対する電源供給を選択的に止めることで、処理性能に寄与していない回路ブロックの消費電力をゼロにできる。
 これらの消費電力管理モードでは、メモリーへの電源供給を維持することが多い。アプリケーションのステート情報をいったんメモリーに退避させておくことで、アプリケーションの処理を途中から再開できるようにするためだ。
 動作を止めていた回路ブロックを再起動する際には、回路ブロックに供給する電源電圧が安定するまでの遅延時間が発生する。このため、電源の供給を遮断することで回路ブロックの動作を停止させる手法は、次のような場合には使えない。すなわち、処理動作間の待ち受け時間が安定化に要する遅延時間よりも短い場合や、発生したイベントに遅延時間よりも短い時間で応答する必要がある場合である。

クロック・ツリーの消費電力

 プロセッサーLSIのクロックは、クロック・ツリーをはじめとしたクロック分配回路を経由して回路ブロックに配信される。このクロック・ツリーはかなりの電力を消費する。LSI全体の消費電力の50%に達することさえある。クロック以外の信号に比べて周波数が少なくとも2倍以上と高く、さらにLSI上のあらゆる部分に分配されているからだ。
 このクロック・ツリーの消費電力を抑えるための工夫が、複数のクロック・ドメインを使うことである。互いに独立したクロックを複数用意しておいて、プロセッサーLSIの回路を各クロックに同期して動作する回路ブロック(クロック・ドメイン)群で分割する。こうすると、プロセッサーLSI全体を高い周波数で動作させる必要がなくなる。高い処理性能を必要としないクロック・ドメインは、低いクロック周波数で動作させる。この結果、消費電力を低減できるわけだ。
 さらにシステムのEMI特性を改善する効果も期待できる。クロック周波数を下げることによって、同期回路におけるデジタル信号の立ち上り/降下時間を長くできるからである。

クロックを止めて電力を低減

 クロック・ゲーティングは、ソフトウエアに依存せずに消費電力を動的に管理できる技術である。処理動作に貢献していない回路ブロックへのクロック供給を停止することによって、動的な消費電力とEMIを低減する。クロック・ゲーティングでは、回路ブロックに電源電圧を供給し続ける。このため、静的な消費電力は低減されない。ただし回路ブロックの再起動時に遅延時間が発生しないという利点がある。さらに、回路ブロックを動作させたり停止させたりという制御をクロックごとに細かく実施できる。
 クロック・ゲーティングによってシステムの消費電力を低減するためには、クロック・ゲーティングを制御する回路の消費電力が、クロック・ゲーティングによって低減される消費電力よりも小さくなければならない。
 クロックを使わない非同期型回路は、高性能と超低消費電力を両立させるための特別な手法である(下記の「非同期型回路で消費電力を低減」を参照)。

クロックと電源電圧を動的に制御

 消費電力を管理するもう1つの方法は、クロックの周波数を動的に制御することである。クロック分周器と低速クロック発生回路をあらかじめ用意しておく。これらをソフトウエアで制御して、クロック周波数を動的に変化させる。この方法は柔軟性が高い。高い処理性能を必要としないときだけプロセッサーLSIの動作速度を低くできるからだ。消費電力はクロック周波数に比例して大きくなる。
 プロセッサーLSIによっては、デュアル・スピード・スタートアップ機能に対応した低速クロック発生回路を搭載している。消費電力低減のために停止させておいた回路ブロックと高速クロック発生回路の両方を再起動する場合に使える。この機能はまず、低速クロック発生回路を使って回路ブロックを始動させる。低速クロック発生回路は安定したクロックを発生させるまでの時間が短く、さらに消費電力が小さいという特徴がある。次に、回路ブロックの動作が安定したところで、高速クロック発生器からのクロック信号に切り替える。高速クロック発生器はクロック出力を安定化するまでに要する時間が長く、消費電力が大きい。
 動的制御が可能なのはクロック周波数だけではない。電源電圧も動的に調整できる。実際に、消費電力の最適化を狙ったプロセッサー・アーキテクチャーの多くが、電源電圧の動的制御技術を採用している。
 電源電圧の動的制御はソフトウエアを使って実施する。消費電力は電源電圧の2乗に比例することは先に述べた。このことから、プロセッサーLSIを部分的にでも低い電圧で動作させることは、低消費電力化に最も効果的であると言える。
 クロック周波数と電源電圧を動的に制御する際には、プロセッサーLSIを動かすクロック周波数と電源電圧の組み合わせをシステムの設計段階で検証しておく。すべての動作条件において処理性能に十分なマージンを確保する必要があるからだ。
 動作中のプロセッサーLSIのクロック周波数をより高く設定し、それに応じてより高い電源電圧を供給するための制御は次の3ステップになる。まず、プロセッサーLSIの電源電圧を高い値に設定する。次に、電源電圧が設定値に達して安定するまで待機する。最後にクロック周波数を切り替える。つまり、電源電圧を先に変化させ、続いてクロック周波数を変化させる必要がある。
 クロック周波数をより低く変化させる場合も同様である。まず電源電圧を低く設定し、次にクロック周波数を変化させる。ただしこの場合は、電源電圧が安定するのを待つ必要はない。電源電圧の値はすでに、周波数切り替え後のクロックに対応するために必要な電圧値よりも高くなっているからだ。

システム構成によって消費電力が変化

 プロセッサーLSIにおいて割り込み処理に要するクロック・サイクル数は、消費電力管理機能と直接的な関係はない。ただし、割り込み処理は電力と時間を消費しているにもかかわらず、アプリケーション・レベルの作業には一切貢献していない。
 割り込み処理を実行するためには、プロセッサーのパイプラインをすべてフラッシュする(空の状態にする)ことが必要である。システム状態は、ステート情報をメモリーに退避させるか、レジスター・セットを別のセットに切り替えることで保存しておく。割り込み処理を開始する際には、プロセッサーLSIまたはオペレーティング・システムが割り込みベクトルを決定し、割り込みルーチンを呼び出す。割り込みルーチンを実行した後は、割り込み前のシステム状態を呼び戻す。このとき、パイプラインをもう一度フラッシュする必要があるかもしれない。
 こうした一連の作業に要するクロック・サイクル数が多いと、割り込み処理によって大きな電力が消費されてしまう。特に、割り込みに応じて低消費電力のスタンバイ・モードから周期的に起動されるようなシステムでは、かなりの電力が消費される。1回の割り込み処理で発生するクロック・サイクルが少なくても、割り込み処理の回数が多いからだ。さらに、スタンバイ・モードから立ち上がる際にシステム中の回路ブロックを再起動し、割り込み処理が完了してからスタンバイ・モードに戻るときには、先ほど再起動した回路ブロックすべてをもう一度シャット・ダウンしなければならないかもしれない。
 レジスター・ファイルやキャッシュ・メモリーなどのメモリー・サイズを適切に設定しておくことも低消費電力化に貢献する。アプリケーションに応じてオンチップ・メモリーの容量を調整することで、プロセッサーLSIに外付けした外部メモリーへのアクセス頻度が高くならないようにしておく。外部メモリーへのアクセスは比較的大きな電力を消費してしまうからである。
 外部メモリーのような外部のLSIにアクセスすると、同等の機能を備えたオンチップ回路ブロックにアクセスする場合に比べてより大きな容量性負荷を駆動する必要が生じる。メモリーをなるべくプロセッサー・コアの近くに配置すれば、容量性負荷の大きさを抑えられる。この結果レジスター・ファイルやキャッシュ・メモリーはデータや命令へのアクセスを高速化でき、さらにプロセッサーLSI全体の消費電力を低減できる。
 キャッシュ・ロック機能は、命令コードをキャッシュ・メモリー内にロックする機能である。プロセッサー・コアが外部メモリーにアクセスしないようにできる。不要なメモリーがシステム内に存在するということは、そのメモリーへの電源供給を停止しない限り、必要以上のリーク電流が流れることで電力が無駄に消費されてしまうことを意味する。
 あらかじめバンクに分割しておいたメモリーのうち、アイドル状態にあるメモリー・バンクに対する電力供給を選択的に遮断できれば、消費電力はさらに削減できる。ここでアイドル状態とは、メモリーに有効なデータが含まれていない状態を指す。単にアプリケーション・ソフトウエアがメモリーにアクセスしていない状態を指しているのではないことに注意されたい。
 メモリー・バンクの最適な大きさと数は、アプリケーション・ソフトウエアによって異なる。具体的にはアプリケーション・ソフトウエアの大きさやデータ構成、メモリーへのアクセス・パターンなどに依存する。
 このほか、1クロック・サイクル当たりの処理性能を高めることで、プロセッサーLSIの動作周波数を下げる手法もある。具体的には、アプリケーション固有の命令セットを用意したり、アクセラレーターやコプロセッサーを集積したり、あるいは冗長コアまたはヘテロジニアス・コアを採用したりすることでクロック当たりの処理性能を高める。
 アクセラレーターやコプロセッサーなどのハードウエア・マクロは、1クロック・サイクル当たりの消費電力が基本的なプロセッサー・コアよりも大きくなってしまう可能性がある。しかし同じ処理をより短い時間で実行できるため、結果としてプロセッサーLSI全体の消費電力を低減できるはずである。

ソフトウエアで消費電力を管理

 クロック・ドメインの分割やクロック・ゲーティングなどの低消費電力化機能、低速かつ小リーク電流のトランジスタをはじめとしたプロセス技術は、ハードウエア・アーキテクチャーで実現する消費電力低減技術である。ソフトウエア・アーキテクチャーには依存しない。しかし、ハードウエアで実現した消費電力低減技術の効率を最大限に引き出すためには、消費電力管理に対応したソフトウエアが必要になる。
 消費電力を管理するソフトウエアはBIOS*、周辺回路のドライバー・ソフトウエア、オペレーティング・システム(OS*)、消費電力管理用ミドルウエア、アプリケーション・コードなどのいずれか、あるいはこれらの組み合わせとして存在する。
 ノート・パソコンやデスクトップ・パソコン、サーバーなどには、電力制御に関する標準規格として「アドバンスド・パワー・マネジメント(APM*)」や「アドバンスド・コンフィギュレーション・アンド・パワー・インターフェース(ACPI*)」などがある。OS主導型の電力制御に向けた仕様である。ところが、組み込みシステムではこうした標準規格が確立されていない。
 そこで、OSとアプリケーション・ソフトウエアの間で電力管理用ミドルウエア「パワー・ポリシー・マネジャー」を使用する(図1)
 パワー・ポリシー・マネジャーはプロセッサー使用率を利用してクロック周波数と電源電圧を動的に調整する役割を果たす。すなわちプロセッサー使用率が低下すると、消費電力を低減するためにクロック周波数と電源電圧を下げる。反対にプロセッサー使用率が上昇すると、処理性能を維持するためにクロック周波数と電源電圧を上げる。
 消費電力管理ソフトウエアの動作は、アプリケーション・ソフトウエアに近づくに従って、よりアプリケーションに特化したものになり、消費電力低減効果を高めることが可能になる。

電力管理ソフトの開発ツール

 組み込みシステムのソフトウエア開発ツールには、電力管理に対応したものがある。コード・プロファイラーやパイプライン・ビューワー、キャッシュ・ビューワーのような解析ツールである。
 これらのツールはパイプラインのフラッシュやキャッシュ・メモリーのミスヒットがどこで発生しているかを示してくれる。つまり、無駄に発生するクロック・サイクルを見つけ出せるのだ。すなわちコード中のどの部分を最適化すれば無駄な電力消費をなくせるかを、間接的に指摘してくれる。
 ただしこうした解析ツールは、特定の回路ブロックのアイドル時間を長くして電力消費を減らせるように、コードの実行順序を再構築してくれたりはしない。このため現在のところ、実際に消費電力管理機能をソフトウエアに組み込む作業は、ほとんどがユーザーによる手作業となっている。
 消費電力管理ソフトウエアの開発は、動作していないプロセッサー・リソースや回路を、できるだけ短時間かつできるだけ頻繁に、パワー・ダウンしたりロー・パワー・モードに設定したりできるかに注力する必要がある。
 イベントが発生したときに割り込みを発生させるような制御と、イベントが発生するまでポーリング・ループを動作させておく制御は、機能だけを考えると同じに見える。ただし、低消費電力化の観点から見ると両者は異なっている。つまり、イベント発生時に割り込みを発生させる制御の方が、消費電力が少なくて済む可能性がある。割り込み処理時以外にプロセッサー・コアが完全にアイドル状態となっている場合である。通常はプロセッサー・コアをシャット・ダウンしておき、割り込みイベントが発生したときだけ起動すればよい。
 さらに、アルゴリズムを変更したりループの繰り返しの実行順序を並べ変えたりすることによってアイドル時間の長さを調整し、消費電力管理ソフトウエアの効率をさらに高められるかどうかの検討も重要である。例えば、メモリー・バンクがロー・パワー・モードに移行する頻度を高め、ロー・パワー・モードの時間を長くするようにアルゴリズムを変更するといった方法がある。

消費電力でシステムを最適化

 このほかの消費電力管理手法として、プロセッサー・コアをできるだけ高速に動かして処理を短時間で終了させ、処理するタスクがない期間はプロセッサー・コアを完全にシャット・ダウンしてしまう方法がある。これと対照的に、性能要求に応えられる範囲でプロセッサーLSIのクロック周波数および電源電圧を下げる方法もある。どちらの手法を選択するべきであるかはアプリケーションによって変わる。ケース・バイ・ケースで決定すべきであろう。
 メモリーは性能と消費電力の両方でボトルネックとなる。このため、システムにおいて使用するメモリーのサイズをできるだけ抑えることが重要である。メモリー使用量を最小化するために、ハードウエアによるコード圧縮機能の使用を検討するべきであろう。また、内部バスを経由するデータの移動や、内部メモリーと外部メモリー間のデータの移動も必要最小限にとどめる必要がある。不必要にデータを移動させると、かなりの電力が無駄に消費されることになる。従って、コードの実行順序を十分に検討することも重要な作業であると言えよう。

アーキテクチャーを選択する

 プロセッサー・アーキテクチャーの選択は非常に重要な設計判断である。消費電力管理ソフトウエアを駆使して回路の消費電力を絞り落とせるかどうかに大きく影響してしまう。プロセッサー・アーキテクチャーを構成する命令実行ユニットやデータ・フロー構造、周辺回路、電力管理機構などが、アプリケーション・ソフトウエアの振る舞いに合致しているかどうかだ。
 汎用マイクロプロセッサーの設計はソフトウエアの柔軟性と性能に影響を与える。マイクロプロセッサーでは柔軟性を確保するために外部メモリーをはじめとした外付けのLSIを使うことが多い。さらに性能向上のために投機的実行や分岐予測の手法を導入している。ただしこれらはすべて、消費電力とコストを消費する。
 リアルタイム制御に向けたマイコン製品は、オンチップに集積した周辺回路やメモリー容量の異なる品種をデバイス・ファミリーとして数多く用意している。ユーザーがアプリケーションに合わせて、マイコンの性能と消費電力、コストを最適化できるようにするためである。
 マイコン・アーキテクチャーは、高速割り込み処理によって非決定的イベントに素早く応答できるように設計されている。これに対しDSPアーキテクチャーは、アプリケーション固有の信号処理機能を最適化するために専用化した実行ユニットとデータ・フロー構造を備え、ストリーミング・データを高速に処理できるように設計されている。DSPアーキテクチャーでは一般に、マイコンと異なり、コンテキスト・スイッチング(状況の切り替え)速度の広い範囲にわたってデータの移動効率とループ効率を高めることに重点が置かれている。
 組み込みシステムの設計時には、プロセッサー・アーキテクチャーが重要だ。消費電力を低減し、EMI特性を向上させるためである。アプリケーションのアルゴリズムと動作に最適な周辺回路とメモリー、電力管理機能を備えたプロセッサー・アーキテクチャーを選択する必要がある。命令シーケンスとデータ、メモリーへのアクセス・パターン、回路ブロックを動作させるパターン、外付け部品とのやりとりなどを最適化することで、低消費電力化と低EMI化が可能になる。
非同期型回路で消費電力を低減

 現在、プロセッサーLSIのハードウエア・アーキテクチャーはほとんどが同期型である。すなわち、回路ブロック同士を同期させるためのタイミング信号としてクロックを利用している。クロック発生回路から回路ブロックまでは、クロック・ツリーをはじめとしたクロック分配回路を使ってクロックを配信する。ところが、このクロック・ツリーの消費電力が無視できない。実際に大規模なプロセッサーLSIでは、動作時の消費電力の中でクロック・ツリーによる消費電力がかなりの割合を占めている。
 そこで登場するのが非同期型アーキテクチャーである。非同期型回路はクロックを使わない。回路ブロック同士がハンドシェークを行ってデータをやりとりする*A-1)。このため回路全体のタイミング制御とクロック分配回路が不要である。従って同期型回路に比べて消費電力が低く、処理速度が高い。さらにEMI(放射電磁雑音)が比較的小さいという利点もある。
 非同期型アーキテクチャーを採用した実際の製品例としては、米フルクラム・マイクロシステムズ社*SPI-4.2*インターフェース対応スイッチLSIを販売している。
 非同期型の回路ブロック同士は、処理すべきデータがあるときだけ動作すれば済むように、ハンドシェーク・プロトコルを利用してタイミング情報を交換する。各回路ブロックはデータ入力がない限り、待ち受け(アイドル)状態を維持し続ける。この間は静的な電力だけしか消費しない。これは、同期型回路において完全なクロック・ゲーティングを実現した状態に等しいと言える。無駄な消費電力が発生しないため、処理性能と消費電力が完全に比例する。
 非同期型回路においても、同期型回路と同様に、電源電圧とクロック周波数を低減することで消費電力を低減できる。同期型回路においては、電圧とクロック周波数を何段階かに分けて調整する必要があった。電圧やクロック周波数を変更すると、処理性能や回路ブロック間のタイミング特性が変化してしまう。このためシステム設計者は、電圧とクロック周波数の設定値ごとに回路の動作を完全に把握し、動作を検証しながら設計を進める必要があった。
 非同期型回路においては、システム設計者は比較的容易に回路ブロックの性能やタイミング特性の変化を把握し、検証できる。なぜならば、回路ブロック同士のローカルなハンドシェークによって回路ブロック間のデータ伝送が実現されていることに加え、クロックによる遅延時間が発生しないからである。
 非同期型回路は、同期型回路よりも高い動作速度を実現できる可能性が高い。ある回路ブロックにおける処理が完了すると、その出力を次の回路ブロックが直ちに処理できるからだ。クロックが分配されるのを待つ必要がない。このため非同期型回路の動作速度は、回路ブロックの平均動作速度によって決まる。同期型回路と違い、最も低速な回路ブロックによって制限されてしまうことがない。回路ブロック間のハンドシェーク処理に必要なオーバーヘッドが小さい場合には、同期型回路よりも高速に動作可能である。
 非同期型回路の採用は、特に低消費電力のアプリケーションにおいて検討する価値がある。ただし、実際に非同期型アーキテクチャーを採用するのはそれほど簡単ではない。各回路ブロックはそれぞれのタイミングで好き勝手に動作する。しかもそのタイミングは、必ずしも一定ではない。複数の回路ブロックが同時に動作すると、膨大な数のシーケンスが発生する可能性がある。複雑な回路に対して、すべてのシーケンスを検証することは困難である。
 非同期型アーキテクチャーはこのように、設計検証という課題を残している。それでもアプリケーションによっては、非同期型アーキテクチャーが低消費電力化の有効な手段になる可能性がある。
▲本文へ戻る
リーク電流の低減に挑む

 プロセッサーLSIの高速化を支えるのはトランジスタの進化である。現在もトランジスタのスイッチング速度は向上し続け、それに伴って物理寸法は縮小し続けている。
 ところが、高速化と小型化が進むにつれて、トランジスタを完全にオフすることが難しくなってきた。原因はリーク電流である。トランジスタのリーク電流は、ゲート絶縁膜が薄くなるに従って指数関数的に増加する。ゲート絶縁膜の絶縁能力が低下し、電流がゲート絶縁膜を通り抜けてしまうからである。こうなるとトランジスタは、理想的な「オン」状態と「オフ」状態を作り出せなくなる。「オン」状態と「半オフ」状態の間をスイッチングすることになってしまう。
 プロセッサーLSIに供給する電源電圧を下げれば、消費電力を低減することは可能だ。ただし電源電圧を下げつつ従来と同等の処理性能を維持するためには、トランジスタのしきい値電圧も同時に低下させる必要がある。
 半導体プロセスの設計ルールが90nm以下に移行するに従って、リーク電流によって消費されてしまう無駄な電力が、プロセッサーLSIの消費電力に占める割合がかなり大きくなってきた。このため、リーク電流の増加を抑えるための工夫が不可欠になっている。
 プロセッサーLSIで消費されるリーク電流を抑える手法の1つは、構造の異なるトランジスタを混載することである。動作速度は高くないがリーク電流が小さいトランジスタと、リーク電流が大きくてもしきい値電圧が低く、動作速度が高いトランジスタの2種類を使い分ける。つまり、高速動作を必要としない回路ブロックには低速でリーク電流の小さいトランジスタを使い、高速動作が要求される回路ブロックには高速でリーク電流の大きいトランジスタを使用するという手法である。
 現在のところ、この手法を実際のプロセッサーLSI設計に取り入れるためには、低速かつ小リーク電流のトランジスタを適用できる回路ブロックを、プロセッサーLSIの設計者が手作業で選別する必要がある。設計者はまず、回路ブロックの静的タイミング解析を実施して、タイミング・マージンの大きい回路ブロックを見つけ出す。次に、その回路ブロックのトランジスタを低速かつ小リーク電流のトランジスタに置き換えるのである。

トランジスタのリーク電流を操る

 プロセッサーLSI全体のリーク電流を抑える技術のほか、高速かつ大リーク電流のトランジスタそのもののリーク電流を低減する技術も存在する。まずは、動作していない、つまり待ち受け(アイドル)状態にあるトランジスタを不活性化させる技術である。実際には、トランジスタに供給する電源電圧を遮断する。
 この手法では、回路ブロックをオン・オフするときにある程度の電力が消費されてしまう。従って、プロセッサーLSI全体を考えたときに消費電力が低減されなければ、この技術を投入する意味がない。つまり回路ブロックのアイドル時間が短すぎる場合は採用できないことがある。回路ブロックをオン・オフする際に消費される活性化エネルギーと不活性化エネルギーが、不活性化によって低減できる消費電力よりも大きくなってしまう可能性が高いからだ。
 このほか、回路ブロックが不活性状態から起動して活性化状態に達するまでの遅延時間も考慮する必要がある。つまり、ある程度の遅延時間を許容できないアプリケーションではこの技術を導入できないことになる。
 リーク電流を制御するもう1つの技術は、トランジスタを形成する基板のバイアス電圧を制御することである。トランジスタのボディ領域に印加するバイアス電圧を動的に制御する。この技術を使えば、必要に応じて回路ブロックを高速動作させたり、動作速度を低くすることでリーク電流を低減したりといった制御を実現できる(図B)
 このほか、直列接続した2個のトランジスタを縦に積み重ねる(スタックする)技術も利用可能である。単一のトランジスタに比べてリーク電流を抑えられる。ただし高速動作が要求されない回路ブロックにしか適用できない。動作速度が単一のトランジスタよりも低くなってしまうからである。リーク電流による無駄な消費電力がトランジスタの数よりも大きな制約要件になっている場合に有効である。
▲本文へ戻る

用語解説 / 会社情報
【EMI】
electromagnetic interference
電磁波妨害
▲本文へ戻る
【MIPS】
million instructions per second
▲本文へ戻る
【NOP】
no operation
何もしない命令
▲本文へ戻る
【BIOS】
basic input output system
▲本文へ戻る
【OS】
operating system
▲本文へ戻る
【APM】
Advanced Power Management
▲本文へ戻る
【ACPI】
Advanced Configuration and Power Interface
▲本文へ戻る
*A-1)参考文献
アンドリュー・ラインズ、「非同期型回路を見直す、低電力化で同期型より優位に」、EDN Japan、2003年8月号、no.30、pp.61-65.
http://www.ednjapan.com/content/issue/2003/08/designf20308.html
▲本文へ戻る
【米フルクラム・マイクロシステムズ社】
Fulcrum Microsystems, Inc.
高性能な非同期型システムLSIを手がける企業。同社のホームページ・アドレスはhttp://www.fulcrummicro.com/
▲本文へ戻る
【SPI-4.2】
System Packet Interface Level4, Phase2
▲本文へ戻る
雑誌無償購読申込み ニュースレター登録 この記事に対する感想/ご意見
Reed Electronics Group
Electronic BUSINESS Japan | Design News Japan | Semiconductor INTERNATIONAL | DETAIL JAPAN
EDN Japanについて | 広告掲載について | サイトマップ | お問合せ
 Copyright (C) 2000-2007 Reed Business Information Japan K.K. 
個人情報に関する方針 | 著作権・リンクについて | 会社情報