変更要約: 初版
6.2低消費電力設計
CPUを止めて消費電力を落とすスリープ・ディープスリープ、不要な回路への動作クロックを止めるクロックゲーティング、処理負荷に応じて電圧・周波数を動的に下げるDVFS、普段は休止し必要な時だけ起きて通信する間欠動作、そしてこれらを踏まえた平均電流と電池寿命の見積りを学びます。
電池駆動のIoT機器で「電池交換なしで何年動かせるか」を左右するのは、平均消費電流に尽きます。組込み設計者には、常時フル稼働させるのではなく、必要な瞬間だけ電力を使い、それ以外は徹底的に電力を落とす設計判断と、その結果を平均電流・電池寿命として数値で見積もり要件を満たすか検証する能力が求められます。
6.2.1スリープ・ディープスリープとクロックゲーティング
- スリープ=CPUのクロック供給を止めて命令実行を停止するが、周辺回路やRAMの内容は保持し、割込みが発生すれば速やかに復帰できる低消費電力モード。ディープスリープ=CPUに加え多くの周辺回路への電源供給自体を止める、より深い低消費電力モード。消費電力はスリープより格段に低いが、復帰(ウェイクアップ)に時間がかかり、RAM内容が失われる場合もあるトレードオフを伴う。
- クロックゲーティング=使用していない回路ブロックへの動作クロック供給を個別に止める省電力技術。回路自体は電源が入ったままでも、クロックが止まればその回路のスイッチング動作(=動的消費電力)はほぼゼロになる。必要な回路だけクロックを供給し続けることで、全体を止めずにきめ細かく電力を削減できる。
6.2.2DVFSと間欠動作
- DVFS(Dynamic Voltage and Frequency Scaling)=処理負荷が軽いときは動作電圧とクロック周波数を動的に下げ、負荷が重いときだけ引き上げる制御。CPUの消費電力は概ね電圧の2乗×周波数に比例して増えるため、性能に余裕がある局面で電圧・周波数を下げることは、常時最高性能で動かすより大幅な消費電力削減につながる。
- 間欠動作=普段はディープスリープ等で休止し、あらかじめ決めた周期(例:10秒ごと)だけ短時間起床してセンサ測定・無線送信を行い、終わればまた休止する動作方式。起床時間の割合(デューティ比)を小さくするほど平均消費電流は下がるが、起床間隔を延ばしすぎるとデータの鮮度やリアルタイム性が損なわれるトレードオフがある。
「スリープ=RAM保持・速い復帰」「ディープスリープ=電源自体を落とす・復帰は遅い/RAM喪失もある」「クロックゲーティング=未使用回路のクロックのみ停止」「DVFS=負荷に応じ電圧・周波数を動的制御(電力は概ね電圧の2乗に比例)」「間欠動作=デューティ比を下げるほど平均電流が下がる」の対比が最頻出です。平均電流の計算式(各状態の電流×時間の総和÷周期)を必ず押さえましょう。
6.2.3平均電流と電池寿命の見積り
- 平均電流の見積りは、間欠動作の1周期内で「各状態(アクティブ/スリープ)の電流値 × その状態が続く時間」を合計し、周期全体の時間で割ることで求める。電池寿命は電池容量(mAh)を平均電流(mA)で割ることで、駆動可能な時間(時間単位)として概算できる。
- 例:周期10秒のうちアクティブ0.1秒=20mA、残りスリープ9.9秒=0.002mAとすると、平均電流=(20mA×0.1s+0.002mA×9.9s)÷10s=(2+0.0198)÷10≈0.202mA。電池容量1000mAhなら電池寿命=1000÷0.202≈4950時間(約206日、約6.8か月)。アクティブ時間や起床頻度を減らすほど平均電流は下がり電池寿命は延びる。
あるファームウェア開発者が、コイン電池(容量220mAh)で駆動する環境センサ端末を、電池交換なしで2年(約17,520時間)運用するという要件を満たせるか検証するとします。まず現行設計を測定すると、10秒周期でアクティブ0.1秒=20mA、スリープ9.9秒=0.002mAという条件で、平均電流は約0.202mAと算出されました。電池寿命は220mAh÷0.202mA≈1089時間(約45日)にしかならず、2年の要件を大幅に下回っていることが判明します。開発者はまず、周期を延ばして起床頻度を下げる(間欠動作のデューティ比を下げる)対策を検討します。周期を10秒から60秒に延ばすと、平均電流=(20mA×0.1s+0.002mA×59.9s)÷60s=(2+0.1198)÷60≈0.0353mAとなり、電池寿命は220÷0.0353≈6232時間(約260日)まで伸びますが、それでもまだ2年には届きません。次に、アクティブ時間そのものの電流を減らす対策として、センサ測定と無線送信の処理でDVFSを適用し負荷に応じてクロックを下げる、さらにアクティブ時間中も未使用の周辺回路にクロックゲーティングをかけて無駄な消費を削るという設計を追加します。これによりアクティブ時の平均電流を20mAから8mAへ低減できたとすると、周期60秒での平均電流=(8mA×0.1s+0.002mA×59.9s)÷60s≈0.01400mAとなり、電池寿命は220÷0.0140≈15714時間(約1.79年)まで伸びます。要件の2年にはまだわずかに届かないため、開発者は最後にディープスリープの採用(スリープ時の電流をさらに数分の1へ削減)を検討する、という段階的な省電力設計と数値検証の反復が実務の姿です。
| 技術 | 効果 | トレードオフ |
|---|---|---|
| スリープ | CPU停止・RAM保持 | 復帰は速いが省電力効果は限定的 |
| ディープスリープ | 電源自体を遮断・大幅な省電力 | 復帰が遅い・RAM喪失の可能性 |
| クロックゲーティング | 未使用回路のクロックのみ停止 | 回路自体は通電したまま |
| DVFS | 負荷に応じ電圧・周波数を低減 | 性能が必要な瞬間は電力が増える |
| 間欠動作 | デューティ比を下げ平均電流を削減 | 間隔を延ばすとデータの鮮度が低下 |
ひっかけ: 「ディープスリープはスリープより常に優れているのですぐ切り替えればよい」は誤りです——ディープスリープは復帰に時間がかかりRAM内容を失う場合があるため、頻繁な起床が必要な用途では復帰オーバーヘッドがかえって不利になり得ます。「電池寿命は電池容量だけで決まる」も誤り=平均電流(アクティブ時間・電流値・起床頻度の総合)で決まり、容量が同じでも設計次第で寿命は大きく変わります。
6.2.4この節のまとめ
- スリープ=RAM保持・速い復帰、ディープスリープ=電源遮断・大幅省電力だが復帰は遅い
- クロックゲーティング=未使用回路のクロック停止、DVFS=負荷に応じ電圧・周波数を動的制御
- 間欠動作のデューティ比を下げると平均電流が下がり電池寿命が延びる(電池容量[mAh]÷平均電流[mA]=寿命[時間])
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. コイン電池駆動の環境センサが、周期10秒でアクティブ0.1秒(20mA)・スリープ9.9秒(0.002mA)の間欠動作をしており、電池寿命が要件の2年に対し約45日しかないことが判明した。まず着手すべき最も直接的な対策はどれか。
Q2. 周期60秒・アクティブ0.1秒(8mA)・スリープ59.9秒(0.002mA)の間欠動作を行うセンサに220mAhの電池を搭載する。この設計で得られる電池寿命に最も近いものはどれか。
Q3. あるIoT端末では、処理負荷が低い待機的な計測処理でも常にCPUを最高クロック・最高電圧で動作させており、消費電力が過大になっている。負荷に応じて電力を抑える設計として最も適切なものはどれか。

