低消費電力モードの研究

ご購入はこちら
エコ時代のコモンセンス
Cortex-Mマイコン
低消費電力モードの研究
最終回
第 7 回 できるだけ低消費電力に命令を実行するためのアーキアクチャ
分岐/非分岐決定
クロック1サイクル分
ループ内の命令列
Loop1:
…
中森 章
ADD
CMP
BLE Loop1
ADD
分岐しない場合はペナルティなし,分岐する場合は 余分なプリフェッチ
(a) 3段パイプライン:Cortex-M0/M1/M3/M4の場合
分岐/非分岐決定
クロック1サイクル分
ループ内の命令列
Loop1:
…
ADD
CMP
BLE Loop1
ADD
分岐しない場合はペナルティなし,分岐する場合は余分なプリフェッチ
(b) 2段パイプライン:Cortex-M0+の場合
図 1(1) パイプラインの段数が多いと分岐したときの処理のムダが多くなる…Cortex-M0+ はムダが少ない
前回(第 6 回,2016 年 1 月号)は Cortex-M で採用さ
れている Thumb-2 命令セットをはじめとする特定
の命令を用いて命令数を削減することで,Kinetis マ
イコンの消費電力が減らせることを紹介しました.
今回はパイプラインの段数の減少やフラッシュ・
キャッシュを導入してフラッシュ・メモリへのアク
セス数を削減することで,Kinetis マイコンの消費電
力が減ることを説明します.
(編集部)
Cortex-M0+が他の Cortex-M より
低消費電力…らしい理由
● パイプラインの段数が多いと分岐時の処理の
ムダが多くなる
Cortex-M0+ は 2 段,Cortex-M0/M3/M4 は 3 段パイ
プラインを採用しています.パイプラインの段数は分
岐の性能に影響を与えます.分岐が発生する場合,3
段パイプラインを例にすると,
「命令フェッチ(F)」での命令取り込み
→「命令デコード(D)」での命令解釈
→「命令実行(E)」
というパイプラインの流れにおいて,パイプライン中
で 処 理 中 の 命 令 を 破 棄 し て「 命 令 フ ェ ッ チ(F)」ス
テージから再度処理を行うことを意味します.つま
り,分岐は「命令実行(E)」ステージの終わりで決ま
164
るので,分岐発生時には「命令フェッチ(F)
」と「命令
デコード(D)
」で処理中の命令が破棄されます.この
ため,Cortex-M のパイプラインは「命令実行(E)
」ス
テージより前の段数をできるだけ削減する方向で設計
されているのです.
● 2 段パイプライン Cortex-M0+ は分岐命令処
理性能が高い
Cortex-M0/M1/M3/M4 は,
命令フェッチ→命令デコード→命令実行
の 3 ステージからなる 3 段パイプラインで,
「命令実行
ステージ」より前は 2 段です.
Cortex-M0+ は,
命令フェッチとプリデコード
→本格デコードと命令実行
の 2 ステージ(命令デコードはプリデコードと本格デ
コードの二つに分かれる)からなる 2 段パイプライン
で,
「命令実行ステージ」より前は 1 段相当です.これ
は,Cortex-M0+ は他の Cortex-M シリーズよりも分
岐命令の処理性能(サイクル数)が高いことを意味し
ます.
つまり,分岐によるペナルティ(パイプライン遅延
=分岐シャドウという)は Cortex-M0/M1/M3/M4 で
は 2 サイクル,Cortex-M0+ では 1 サイクルとなりま
第 1 回 マイコンの低消費電力化の基本方針(2015 年 8 月号)
第 2 回 Cortex-M マイコン共通の基本低消費電力モード(2015 年 9 月号)
第 3 回 スリープ状態から自動で復帰 / 移行するしくみ(2015 年 10 月号)
2016 年 2 月号