Renesas Synergy™

FAQ 1006541 : スタンバイ動作について

(1)初めに
製品設計において、省エネルギーが一部の携帯機器だけの話ではなく、殆ど全ての製品で叫ばれるようになってかなりになります。
半導体関係でも、デジタル回路は比較的作りやすかったPMOS、高速化に適したNMOSやバイポーラから殆どの回路がCMOSに置き換わって、より少ない電流で動作できるようになってきました。また、プロセスの進歩による回路の微細化によりLSIの動作電流も小さくなり、いくつものICやトランジスタで作ってきたものが1個のLSIで実現できるようになりました。それに伴ってシステムとしての消費電力も格段に小さくなりました(その分、システムがより複雑化していますが)。
しかし、世の中の省エネの流れに対して、LSIは単に微細化しても簡単には動作電流を小さくできにくくなってきています。今後は使う立場からの対策が必要です。そのための手段の一つがスタンバイ機能です。

【コーヒー・ブレイク1】
8ビット・シングルチップ・マイコンが世の中に出始めた頃。新しいマイコンを開発するときに、回路の動作確認のためにモックアップと呼ばれる評価システムを標準ICの組み合わせで作りました。そうしてできた最初のものは5V電源が35A程度必要でした。回路を工夫したり、使うICを見直したりしてなんとか20A程度まで落とすことができました。そのときの対象としていたマイコンの動作電流はたしか200mA程度だったはずです。これは約1/100の省エネ?
直接の比較はできませんが、最近の8ビットマイコンは性能や機能ははるかに上なのに、電流は1桁以上も小さくなっています。
【おまけ】
初期のマイコンとして有名な8080Aはケース(当時はセラミックでしたが)に触れると熱かった記憶があります。当時は、スピードを上げるために、外部とのインタフェースは5Vでも、IC内部では12Vの電圧で強引に動作させていたから当然です。
それ以外に、8224等の触れないほど熱くなるデバイスがCPUの周りにいくつもありました。


(2)電力消費のメカニズム
最近のマイコンは殆どがCMOS化されていますので、これに絞って説明します。中の回路の基本となるインバータは下図の(a)に示すようにP-chとN-chのトランジスタが縦に並んでいます。(b)のように、上側のP-chのトランジスタがON、下側のN-chのトランジスタがOFFで出力は"H"となります。(c)のように、上側のP-chのトランジスタがOFF、下側のN-chのトランジスタがONで出力は"L"となります。これらの状態ではOFFしているトランジスタは高抵抗状態となるので、電流は殆ど流れません。つまり、同じ状態が続いていれば電力消費は無視できます。
逆に考えると信号が変化するときに電流が流れます。(d)に示すように、負荷容量がついた場合(実際には配線の容量が必ずつきます)には、この容量に充電するために余分に電流が流れます。



これを水の流れに置き換えて考えると、インバータをバルブと考えることができます。上から水が供給されていて、バルブでそれを制御します。インバータで"H"の状態は上側のバルブが開いて下側のバルブが閉じた状態、"L"の状態は上のバルブが閉じて下のバルブが開いた状態に例えることができます。ここで、"H"から"L"に変化した場合、右端に示した分の水が流れることになります。この分を消費した電力に例えると分かり易いかと思います。
上の(d)のように負荷容量が付いた場合には、バルブの右に水が溜まる部分が増えますから、流れる水の量はさらに多くなります。



(3)スタンバイ機能
殆どのアプリケーションでは、マイコンが常に動作している必要はなく、空いている時間(例えば、何かの入力を待っているとか、タイマにより時間が経過するのを待っているとか)があります。このときにまで通常動作をさせるのは無駄です。このため、最近のマイコンでは必要のない時には動作を停止させるスタンバイ機能をもっています。スタンバイとかスリープとか呼び名はいろいろありますが、どの機能まで止めるかでいくつかのモードに分けることができます。
基本的には以下の3つのモードが主です。また、このうち(a)と(c)の機能をもつものが一般的です。
(a)HALTモード(CPUの命令実行だけを止める)
(b)IDLEモード(さらに、クロックの供給を止める)
(c)STOPモード(クロックの発振から止めてしまう)

従来は、動作したときの性能だけが問題にされてきました。しかし、いろんな機器の待機時の電力が問題になったり、アプリケーションとして携帯機器の増加により、動作していないときの性能も大きな問題になりました。その重要性は現在でも益々大きくなってきています。

【コーヒー・ブレイク2】
電力消費が問題になる場合には使用しないブロックのクロックを停止するだけでなく、電源そのものを切ってしまうような対策を行っている場合もあります。最近のマイコンではいろんな機能を内蔵しておりますが、ADコンバータのように、使用するときにだけ必要な電源を発生するものもあります。
【おまけ】
最近のマイコンはいろんな省電力モードをもっているので、DC特性の規格表の中で電源電流を規定した欄のスペースが広がっています。古いマイコンでは電源電流の欄は2つか3つ程度しかありませんでしたが、最近は1ページが全部と言ったデバイスもあります。このため、どのようなときにはどの規格をあてはめるかの判断が難しくなってきています。


(4)HALTモード
昔のマイコンからあった機能ですが、本来は単に命令の実行を停止(=HALT)するだけの命令です。古いマイコンでは、割り込みが入るのを待ったりするために使用するだけで、動作電流の削減とは無関係でした。ところが、CMOS化によりCPUの命令実行を停止すると、動作電流が小さくなることから省エネのためのスタンバイ機能のひとつになりました。
このモードはCPUが停止しているだけで、他の回路は動作していますので、電流は数分の1程度までにしかなりません。それでも、内蔵された周辺機能は動作することができますし、スタンバイが解除されるとCPUは直ちに動作できる(寝起きがよい)ので、高速の応答が要求される場合などにメリットがあります。

【コーヒー・ブレイク3】
スタンバイ機能はマイコンがどのようなアプリーションを対象にしているかでも異なります。メータ用のマイコンでは、サブクロック動作でのHALTモードの電源電流を数マイクロAまで削減したデバイスも存在します。


(5)IDLEモード
HALTがCPUを停止するだけであったのに対して、その他の部分へのクロックの供給も停止してしまうものです。その結果、動作電流をHALTモードに対して比べてもさらに1/10以下にできます。
クロックの発振そのものは継続しているために、その分はSTOPモードよりも動作電流は大きくなります。しかし、クロックは発振しているので、外部からスタンバイ状態を解除するための信号が入力されると、直ちに動作を再開することができます。

(6)STOPモード
システムとしての動作クロックそのものの発振を停止してしまうので、動作電流は数十マイクロAまで小さくなります。
スタンバイからの解除の際には、クロック発振を再開させる必要があり、クロックの発振が安定するまでは動作を再開できない(血圧が低くて、起きてもすぐには動けない・・・・?)欠点があります。このため、スタンバイ解除から処理完了までの時間に制約がある場合には使用できない場合があります。

(7)まとめ
以上をまとめると、各スタンバイモードの特徴は下記の表のようになります。なお、この表の内容は一般的な場合を示しています。

 

【コーヒー・ブレイク4】
電気的特性に記載された電源電流の規格は、STOPモードは時計用のサブクロックも含めて完全にクロックが停止した状態を示しています。しかし、実際のシステムでは時計は動作させたままでSTOP命令を実行することがよくあります。この状態もSTOPモードと呼んでいるケースがありますが、スペック上ではSTOPモードとは区別されます。このようなケースでは電源電流としては、サブクロックでのHALTモード時の値が該当します。サブクロックが発振しているので、STOPモード時の2倍程度の電源電流になります。


(8)その他の省電力のための手段
電力消費のメカニズムで触れたように、CMOSの動作電流が状態の変化により引き起こされることから、
・動作クロックを下げる
・サブクロック動作
と言ったことが考えられます。マイコンの動作スピードは電源電圧に依存していますので、動作クロックが低い場合には低い電源電圧を用いることで、さらに動作電流を低減することが可能です。
下のグラフはマイコンの動作モードでの電源電圧と動作電流の関係例を示したものです。一番上が高速での動作時で、その次が低速(高速の1/4の速度)で動作したときのものです。下の2本はサブクロック(このとき、システムクロックの発振は停止している)での動作時とHALTモードを示しています。動作クロック周波数及び電源電圧による動作電流の変化を読み取ることができます。



(9)備考
(a)消費電力の計算方法
スタンバイのまとめとして、スタンバイ機能を使ったときの電力消費(動作電流)の見積もりについて検討します。
基本的には、動作している各モードでの電流値の時間平均を求めることになります。殆どの場合に、それほど厳密に計算する必要はありません。これは、動作電流が個々のマイコン(デバイス)によって変動するためです。下記の例のように高速動作が動作電流I1で時間がt1、スタンバイ動作が動作電流I2で時間がt2、低速動作では動作電流I3で時間がt3であったとすると、平均電流は
平均電流=(I1×t1+I2×t2+I3×t3)/(t1+t2+t3)
となります。



(b)注意点/考慮すべき内容

  • スタンバイから復帰時の電流
    スタンバイ、特にSTOPモードを使用したときに気をつける必要があるのがクロック発振を開始するときの発振安定時間です。短い期間ですが、発振を開始するための電流を余分に流すので、通常動作と同じ程度の電流が流れると考える必要があります。
    (低血圧で朝からなかなか起きられない人も努力はしています。マイコンも早く起きるための努力をしています。)
  • スタンバイ解除要因
    スタンバイ状態から復帰(スタンバイを解除)するためには割り込みを使用します。割り込みとしては、タイマ等の内部要因によるもの、外部からの割り込み要求信号によるもの及び、外部とのシリアル通信完了によるものなどが考えられます。スタンバイの解除に使える機能はどのスタンバイ機能を使っているかで異なります。STOPモードでは内部要因は使えないので、外部からの割り込み要求信号を使う必要がありますが、中にはクロックがないと使えない外部から割り込み要求信号もあるので、注意が必要です。
  • ウォッチドッグタイマ
    スタンバイとの組み合わせで一番問題になるのがウォッチドッグタイマです。これは二重の意味で問題があります。一つは、CPUがスタンバイ状態に入っているのにウォッチドッグタイマは動作している場合です。この場合にはウォッチドッグタイマのクリアに必ず間に合うタイミングでスタンバイを解除する必要があります。
    もう一つは、スタンバイによりウォッチドッグタイマのカウントクロックも停止してしまう場合です。この場合にはタイミングの問題はそれほどありませんが、デッドロックを回避するためにウォッチドッグタイマの機能に頼り切っていると問題があります。スタンバイ時にウォッチドッグタイマがどうなるかを前もって確認しておいてください。
  • 動作クロックとの組み合わせ問題
    スタンバイとして、3つのモードを説明してきましたが、新しいマイコンでは内蔵発振器によるクロック(デバイスにより複数あったり、発振を停止できたり発振を停止できなかったりします)をもつものがあります。これらのマイコンでは、どのクロックで動作させるかにより使用できるスタンバイ・モードとその入り方が異なります。例えば、メインクロックで動作しているときにはSTOP命令でメインクロックの発振を停止できても、他のクロックで動作している場合にはSTOP命令は使用できず、レジスタの設定で制御する必要があります。
    また、クロックを切り替えるときには発振の制御も合わせて行うことになります。サブクロックで動作している状態でメインクロックの発振の再開を指示して直ぐに動作クロックをメインクロックに切り替えると、発振が正常に行われていないクロックで動作しようとするために暴走することが考えられます(STOP命令でクロック発振が止まった場合には、割り込みによるスタンバイ解除時に発振安定時間がハード的に確保されますが、プログラムで発振を再開した場合には発振安定時間をソフト的に確保してください)。

これらのことに十分に注意して、省エネ目標を達成してください。

他にご質問がございましたら、リクエストを送信してください