TL

組込みプロセッサとマイクロコントローラの原理 ─ 決定性とリアルタイム

なぜマイコンは性能より時間の正確さを選ぶのか。ハーバード構成・密結合メモリ・予測可能な割り込み遅延が、締切を守るWCETをどう支えるかを原理から理解できます。

応用組込みマイコンリアルタイムWCET割り込みTCM最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.組込みCPUの目標は平均速度ではなく決定性。命令とデータを分離するハーバード構成と密結合メモリ(TCM)で、毎回ほぼ同じサイクル数を保証する。
  • 2.キャッシュは平均を速くするがヒット/ミスでアクセス時間が揺れる。リアルタイム系はキャッシュを使わない、または固定可能なTCM/スクラッチパッドに置き換えて最悪実行時間(WCET)を見積もり可能にする。
  • 3.割り込み遅延の予測可能性が要。固定ベクタ、ハードウェアによるレジスタ退避、テールチェインなど、応答時間の上限を回路で保証する設計判断を取る。

マイコンが最適化するのは「平均」ではなく「時間の正確さ」

汎用CPUの設計は平均スループットを上げる方向に進化してきました。深いパイプライン、巨大なキャッシュ階層、アウトオブオーダー実行、分岐予測。これらはどれも「ありそうな振る舞いを速くし、稀なケースは後で帳尻を合わせる」投機的な最適化です。平均は速くなりますが、個々の命令やイベントが何サイクルで終わるかは状況依存で揺れます

組込み制御の世界では、この揺れこそが問題です。モーターの転流、エンジンの点火、ブレーキの制御は「速ければよい」のではなく「決まった時刻に必ず終わる」必要があります。だから組込みプロセッサとマイクロコントローラ(マイコン)は、最適化の軸を決定性(determinism)予測可能性に置き換えます。狙うのは平均ケースの最速化ではなく、最悪ケースの上限を低く、かつ見積もり可能に保つことです。

マイコンとSoCの違い

ここでの「マイコン」は、CPUコア・フラッシュ・RAM・周辺I/O(タイマ、ADC、UART、CAN等)を1チップに集積したものを指します。外部メモリを前提とするアプリケーションプロセッサ(SoC)と違い、メモリと周辺がオンチップで固定されているため、アクセス時間が安定し、決定性を保ちやすいのが本質的な利点です。

ハーバード構成:命令とデータを物理的に分ける

汎用システムの論理モデルはノイマン型で、命令もデータも単一のメモリ空間に同居します。これは柔軟ですが、命令フェッチとデータアクセスが同じバスを奪い合うため、命令パイプラインで言う構造ハザードが起きます。

多くのマイコンはハーバード構成を採り、命令バス(フラッシュ側)とデータバス(RAM側)を物理的に分離します。これにより毎サイクル、命令フェッチとデータロードを並行できます。効果は2つです。

  • スループット:IFとMEMがバスで衝突しないため、パイプラインを単純な構造のまま詰められる。
  • 決定性:命令フェッチ経路とデータ経路の競合が原理的に無いので、アクセス遅延が他の活動に左右されにくい。
観点ノイマン型ハーバード型
メモリ空間命令とデータが同居命令とデータが分離
バス競合フェッチとデータが衝突しうる並行アクセス可能
代表例汎用CPU/PC多くのマイコン・DSP
決定性競合で揺れる経路分離で安定

実機では純粋なハーバードではなく、命令・データそれぞれにバスを持ちつつ単一アドレス空間に見せる**修正ハーバード(modified Harvard)**が一般的です。フラッシュ上の定数テーブルをデータとして読む、といった実用上の要求に応えるためです。

キャッシュレスの決定性と密結合メモリ(TCM)

キャッシュメモリは平均アクセス時間を劇的に縮めますが、その代償は時間の不確定性です。同じロード命令でも、ヒットなら数サイクル、ミスなら数十〜数百サイクルかかります。しかもどちらになるかは過去のアクセス履歴に依存し、静的には決まりません。最悪実行時間を見積もる立場からは、すべてのアクセスをミス扱いで悲観的に積み上げるしかなく、見積もりが現実離れして大きくなります。

そこでリアルタイム性が最優先の領域では、設計判断としてキャッシュを使わない、あるいはキャッシュの代わりに**密結合メモリ(TCM: Tightly Coupled Memory)**を置きます。TCMはコアに直結した小容量SRAMで、次の性質を持ちます。

  • 固定レイテンシ:常に一定サイクルでアクセスでき、ヒット/ミスの概念が無い。
  • 明示配置:何をTCMに置くかをリンカやプログラマが決める。割り込みハンドラやホットループ、時間制約のあるデータをここに固定する。
  • 競合の排除:投機やプリフェッチによる予測不能な追い出しが起きない。
キャッシュ        : 速いが、ヒット/ミスでアクセス時間が変動(履歴依存)
TCM/スクラッチパッド: 容量は小さいが、毎回固定サイクル(決定的)
通常RAM/フラッシュ : 容量は大きいが相対的に遅い(ウェイトステート)

「キャッシュは平均を最適化し、TCMは最悪を最適化する」と整理できます。前者は確率的な高速化、後者はプログラマが明示的に制御できる確定的な高速化です。決定性が必要なコードパスだけをTCMに載せ、それ以外は通常メモリに置く、という使い分けが実務の定石です。

フラッシュのウェイトステートに注意

内蔵フラッシュはコアのクロックに追従できないため、高クロック動作時は数サイクルの待ち(ウェイトステート)が入ります。これを隠すためにフラッシュ・アクセラレータ(プリフェッチバッファやラインキャッシュ)が入ることがありますが、これ自体が時間の揺れを生みます。厳密なWCET解析では、このアクセラレータの挙動まで考慮するか、対象コードをRAM/TCMで実行して影響を排除します。

割り込み遅延の予測可能性

組込みシステムの応答性は、ほとんどが割り込みで決まります。外部イベント(タイマ満了、センサ更新、通信受信)から、対応するハンドラの最初の命令が実行されるまでの時間が割り込み遅延(interrupt latency)です。リアルタイム設計で重要なのは平均遅延ではなく、その上限が保証されていることです。

割り込み遅延の上限は、おおむね次の和の最悪値で決まります。

割り込み遅延 ≒ 割り込み禁止区間の残り + パイプラインのフラッシュ/同期
              + ベクタ取得 + コンテキスト退避 + ハンドラ先頭への分岐

マイコンはこの各項を回路で短く・一定にする工夫を凝らします。

  • 固定ベクタテーブル:割り込み要因ごとにハンドラ先頭アドレスを表引きする。優先度判定をハードウェアの割り込みコントローラ(NVICなど)が担い、ソフトのポーリングを排除する。
  • ハードウェアによるレジスタ退避:割り込み受理時に一部の汎用レジスタとステータスを自動でスタックに退避する。ソフトのプロローグを減らし、退避サイクル数を一定化する。
  • テールチェイン(tail-chaining):連続する割り込みで、いったん退避した状態を復帰せずに次のハンドラへ直結する。復帰と再退避の往復を省き、背中合わせの割り込みの遅延を圧縮する。
  • late-arriving 優先処理:退避中に高優先度の割り込みが来たら、退避をやり直さず優先度の高い方へ切り替える。

これらはすべて「最悪でもこのサイクル数で応答する」という上限を回路で約束するための仕組みです。汎用CPUが平均応答を縮めるのとは逆に、マイコンは分散(ばらつき)を縮めます。割り込みの仕組みそのものは割り込みと例外処理で詳しく扱います。

割り込み禁止区間が遅延の上限を決める

最大割り込み遅延を支配するのは、しばしばハードウェアではなくソフトウェアが割り込みを禁止している最長区間です。クリティカルセクションを長く取ると、その間に来た割り込みが待たされ、保証できる上限が伸びます。決定性を守るには、割り込み禁止区間を短く、かつ上限を見積もれる形に保つ規律が不可欠です。

フラッシュ/RAM/周辺の集積とWCET

リアルタイム性の最終的な指標が**最悪実行時間(WCET: Worst-Case Execution Time)**です。あるタスクが、どんな入力・どんなキャッシュ状態でも、これ以下で必ず終わるという上限値で、スケジューラが締切を守れるかの判定に使われます。WCETは実測の最大値ではなく、起こりうる最悪を漏れなく上から押さえた保証値でなければなりません。

ここまで見た設計判断は、すべてWCETを「現実的な値に」見積もり可能にするためのものです。

  • ハーバード構成で経路競合の不確定性を消す。
  • キャッシュレス/TCMでメモリアクセスを固定サイクル化し、悲観的なミス積み上げを不要にする。
  • 予測可能な割り込み遅延で、割り込みによるタスク中断のオーバーヘッドを上限付きで見積もる。
  • オンチップ集積で、外部メモリやバス調停による予測不能な遅延要因を取り除く。

WCET解析は、プログラムの制御フローグラフ上で各基本ブロックの実行サイクル数を積み、ループ回数の上限と最悪経路を求める静的解析です。前提として「各命令のサイクル数が確定している」ことが要り、だからこそ投機やキャッシュのような履歴依存の機構を排除した単純なマイクロアーキテクチャが好まれます。深いパイプラインやCISCとRISCの設計差で言うところの複雑な可変長命令は、サイクル数の見積もりを難しくするため、組込みでは固定長・単純命令のRISC系が支配的です。

試験のポイント

「マイコンが最適化するのは平均速度ではなく決定性」「ハーバード構成は命令/データバス分離で並行アクセスと決定性を得る」「キャッシュは平均を、TCMは最悪を最適化する」「割り込み遅延は上限の保証が重要で、最長の割り込み禁止区間が支配することが多い」「WCETは実測最大ではなく保証された上限」の5点が頻出です。

まとめ

  • 組込みプロセッサ/マイコンの設計軸は平均スループットではなく決定性予測可能性であり、目標は最悪ケースの上限を低く保証可能に保つこと。
  • ハーバード構成は命令とデータのバスを分離し、競合由来の時間の揺れを原理的に排除する(実機は多くが修正ハーバード)。
  • キャッシュは平均を速くするが時間が揺れるため、リアルタイム系はキャッシュレスTCM/スクラッチパッドで固定レイテンシ化し、WCETを見積もり可能にする。
  • 割り込み遅延は固定ベクタ・自動レジスタ退避・テールチェインで上限を回路保証し、ソフトの割り込み禁止区間を短く保つ規律と合わせて応答性を担保する。
  • これらの判断はすべてWCETを現実的な保証値に落とし込むためのもので、フラッシュ・RAM・周辺のオンチップ集積が外的な不確定要因を取り除く。

時間制約のある処理を構造として追う先は割り込みと例外処理へ、サイクル数の確定性を支える命令セットの設計差はCISCとRISCの原理へ続きます。

CPU/メモリ/ディスク Article

組込みプロセッサとマイクロコントローラの原理 ─ 決定性とリアルタイムを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

組込み

比較で見る軸

難易度: advanced / カテゴリ: CPU/メモリ/ディスク / タグ数: 6

導入後に効く点

キャッシュは平均を速くするがヒット/ミスでアクセス時間が揺れる。リアルタイム系はキャッシュを使わない、または固定可能なTCM/スクラッチパッドに置き換えて最悪実行時間(WCET)を見積もり可能にする。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
CPU/メモリ/ディスク
タグ数
6

判断チェックリスト

  • 自社の用途が「組込み / マイコン」に近いか確認する。
  • 強みである「組込みCPUの目標は平均速度ではなく決定性。命令とデータを分離するハーバード構成と密結合メモリ(TCM)で、毎回ほぼ同じサイクル数を保証する。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

組込みマイコンリアルタイムWCET割り込み組込みマイコンリアルタイム
参考: 公式情報