スリープ|低消費電力で待機と復帰最適化制御

スリープ

スリープとは、マイクロコントローラやSoC、PCなどの電子機器が動作を一時的に抑え、消費電力を大幅に低減する低電力動作状態をいう。クロック停止や電源領域の遮断により回路活動を最小化し、必要最小限の回路のみを保持することで、バッテリ駆動時間の延伸や熱設計余裕の確保、待機時騒音の低減に寄与する。復帰(ウェイクアップ)時は、割り込みやタイマ、外部信号などのイベントを契機に、保存していたコンテキストを再開し通常動作に戻る。低消費電力設計では、アイドルからディープスリープまで複数の段階を用意し、用途に応じた遷移戦略を設計することが重要である。

低電力モードの階層

一般にスリープは段階的に定義される。代表例として、(1)アイドル: CPUコアのみ停止し周辺回路は動作、(2)スタンバイ/ストップ: 主系クロックを停止し一部周辺のみ動作、(3)ディープスリープ: 多くの電源ドメインを遮断しレテンション領域のみ保持、(4)シャットダウン相当: RTC等の極小ブロック以外を停止、が挙げられる。段階が深いほど消費電力は減るが、復帰に要するレイテンシや初期化コスト、再同期の負担が増す。

動作原理と主要技術

  • クロックゲーティング: 不要ブロックへのクロック供給を遮断しスイッチング損失を削減する。
  • パワーゲーティング: 電源スイッチで電源ドメインを切り離しリーク電流を抑制する。
  • 状態保持(レテンション): 専用フリップフロップやSRAMレテンションで重要レジスタを維持する。
  • 電圧/周波数スケーリング(DVFS): 動的に電圧とクロックを下げ、P=CV²fの関係で消費を下げる。

ウェイクアップ要因

スリープからの復帰は、外部割り込み(GPIOエッジ)、RTC/タイマ満了、通信周辺(UART/I2C/SPI)の受信、アナログ比較器やADCしきい値越え、ウォッチドッグタイマのリセット要求などで起動する。これらは常時給電や低周波クロックにより監視され、イベント検出時にクロック再開とレジスタ復旧が行われる。

電力見積りと指標

平均消費電流は、Iavg=(Irun×Trun+Isleep×Tsleep)/Tcycleで概算できる。IsleepはµA〜nAオーダーまで設計可能だが、ボード実装のリークやセンサ、LDOの静止電流(Iq)がボトルネックになることが多い。レイテンシはウェイクアップソース、クロック源(内部RC/外部Xtal)、メモリ再初期化の有無で変動する。

ボード設計上の注意

  • プルアップ/プルダウン抵抗: 入力不定でリークが増えないように強度と論理を整える。
  • 電源トポロジ: レギュレータIq、DC/DCの軽負荷効率、バックアップ電源(コインセル)を考慮する。
  • 外付け水晶: スタートアップ時間が復帰遅延を支配する場合がある。
  • フラッシュ/EEPROM: スリープ直前の書込み完了を待たないとデータ化けのリスクがある。

ファームウェア設計と手順

  1. スリープ方針の定義: 目標バッテリ寿命、許容レイテンシ、必要な常時監視機能を言語化する。
  2. クロック/電源ツリーの整理: どの周辺がどのクロック・電源に依存するかを表にする。
  3. 割り込み設計: ウェイクアップを許可するIRQのみを有効化し、不要IRQはマスクする。
  4. 遷移シーケンス: 周辺停止→レジスタ保存→キャッシュ/バス整列→WFI/WFE命令→復帰後の順次再開。
  5. フェイルセーフ: ウォッチドッグと復帰回数カウンタで異常ループを検知する。

RTOSとの連携

RTOSはアイドルフックやtickless idleを用いて自動的にスリープへ移行できる。カーネルは最短タイマ期限を算出し、その間CPUを停止する。深いモードを使う場合、コンテキスト保持と周辺停止の順序をOSサービスに埋め込むと安全である。周期タスクのジッタやタイムスタンプ精度の劣化に注意する。

測定と検証

実機評価ではシャント抵抗とオシロスコープ/ロガーでトランジェントを観測し、遷移直後のラッシュ電流や安定化時間を確認する。DMMの平均値だけでは短パルスを見落とすため、時間分解測定が必要である。外気温や供給電圧の変動を振って境界条件を詰める。

よくある不具合

  • ゴーストイベント: 浮いた入力ピンで誤ウェイクが発生する。
  • レースコンディション: 周辺停止後に割り込みが入って復帰できない。
  • レテンション漏れ: 保存対象レジスタの取りこぼしで復帰後に通信が不安定化。
  • 時計漂移: 低速RC時計のみで長時間運用し、RTC誤差が累積する。

応用例と設計トレードオフ

IoTノードでは、センサ計測→送信→スリープを短時間で周回し、デューティ比を極小化する。一方、ウェアラブルではユーザ操作に即応するため浅いモードを多用する。計測周期、通信プロトコル、セキュア要件、ファーム更新(FOTA)可否など、製品要件に応じてモード構成を最適化することが重要である。