Instiq
第1章 · プロセッサとコンピュータ構成·v1.0.0·更新 2026/7/10·読了目安 約15分

変更要約: 初版

1.3割込み機構

この節の要点

外部/内部割込みの違い、割込み発生時に処理ルーチンの先頭アドレスを引くベクタテーブル、複数の割込みを裁く優先度多重割込み(ネスト)、割込み発生から処理開始までの割込み遅延、そしてISR(割込みサービスルーチン)を短く保つ設計判断を学びます。

組込み機器は「センサから値が届いた」「タイマが満了した」「通信データを受信した」といった非同期のイベントに素早く反応する必要があり、その仕組みが割込みです。単に「割込みとは何か」を知るだけでなく、複数の割込みが同時に競合したときにどう優先度を設計するか、ISRの中で何をして何をしてはいけないかを判断する力が、システムの応答性と安定性を左右します。

1.3.1外部割込みと内部割込み、ベクタテーブル

  • 外部割込み=GPIOピンの電圧変化・タイマ満了・通信モジュールのデータ受信など、CPUの外部にある要因によって発生する割込み。内部割込み=ゼロ除算やアクセス違反、システムコール(ソフトウェア割込み)などCPU内部の命令実行そのものが原因で発生する割込み(例外と呼ばれることも多い)。
  • ベクタテーブル=各割込み要因ごとに、対応する割込みサービスルーチン(ISR)の先頭アドレスを格納した表。割込みが発生するとCPUは割込み番号をもとにベクタテーブルを引き、該当ISRへ直接ジャンプする。これにより「どの割込みが来たかを毎回ソフトウェアで判定する」処理を省き、応答性を高める

1.3.2優先度・多重割込み・割込み遅延

  • 優先度=複数の割込みが同時または処理中に発生した場合、どれを先に処理するかを決める順位。多重割込み(ネスト)=ISRの実行中により高い優先度の割込みが発生した場合に、現在のISRの処理を一時中断して高優先度側を先に処理し、完了後に元のISRへ戻る仕組み。低優先度の割込みが処理中の別の割込みを中断することはできない。
  • 割込み遅延(インタラプトレイテンシ)=割込み要因が発生してから、実際にISRの最初の命令が実行されるまでの時間。現在実行中の命令の完了待ち・割込みマスク(禁止)状態・より高優先度の割込み処理の割込みなどが遅延の要因になり、リアルタイム制御ではこの遅延の最悪値を把握しておく必要がある。
試験ポイント

「ベクタテーブルはISRの先頭アドレスを引く表」「多重割込みは高優先度が低優先度のISRを中断できるが逆は不可」「割込み遅延は割込みマスク中や高優先度処理中に増大する」が最頻出です。ISRを短く保つべき理由(後続割込みの応答性を守るため)も判断問題として問われます。

あなたは組込みファームウェア開発者で、モータの回転位置を検出する高頻度の割込み(1ms周期)と、通信モジュールからのデータ受信割込み(不定期・低頻度)の2種類を扱うシステムを設計しています。ある同僚が「データ受信ISRの中で受信データの検証・変換・後続処理までまとめて全部やってしまえば、コードがシンプルになり見通しが良い」と提案しました。ここで問題になるのが、このISRの実行中は優先度が同等以下の他の割込み(この場合はモータ位置検出割込み)が待たされることです。もしデータ受信ISRの処理に数ミリ秒かかる設計にすると、その間モータ位置検出割込みの処理が遅延し、1ms周期で必要なモータ制御のリアルタイム性が崩れます。適切な設計は、ISR内では「割込み要因のフラグクリア」「受信データをバッファへ退避」などの最小限の処理だけを行い、検証・変換・後続処理は優先度の低いタスクやメインループ側の処理へ委譲することです。もしモータ位置検出割込みとデータ受信割込みが同時に発生した場合は、優先度の高いモータ位置検出割込み側を先に処理する多重割込み(ネスト)が正しく機能するよう優先度を設定しておく必要があります。「ISRを長くしても機能的には正しく動く」という判断は、割込み遅延が後続の高優先度イベントの応答性を悪化させるという組込みシステム特有の副作用を見落としています。

割込み種別発生要因代表例
外部割込みCPU外部の物理的な要因GPIOピン変化・タイマ満了・通信受信
内部割込み(例外)CPU内部の命令実行そのものゼロ除算・アクセス違反・システムコール
注意

ひっかけ: 「多重割込みでは、優先度に関係なくどの割込みも実行中のISRを中断できる」は誤りです——中断できるのは現在実行中のISRより優先度が高い割込みのみで、同等以下の優先度の割込みは待たされます。また「ISRの中で時間のかかる処理をすべて完結させるべき」も誤り=ISRは最小限の処理に留め、重い処理は優先度の低いタスクへ委譲することで後続割込みの応答性を守るのが適切な設計です。

ベクタ/優先度/多重割込みの図。
外部事象に即応する

1.3.3この節のまとめ

  • 外部割込みはCPU外部の要因、内部割込み(例外)はCPU内部の命令実行が原因で発生する
  • ベクタテーブルでISRへ直接ジャンプし応答性を高める。多重割込みは高優先度のみ低優先度ISRを中断できる
  • ISRは最小限の処理に留め重い処理は委譲する設計が、割込み遅延を抑え後続割込みの応答性を守る

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. モータ回転位置検出割込み(1ms周期・高優先度)とデータ受信割込み(不定期・低優先度)を扱うシステムで、データ受信ISRの中で検証・変換・後続処理まですべて実行する設計が提案された。この設計の問題点として最も適切なものはどれか。

Q2. 割込みのベクタテーブルの役割に関する記述として最も適切なものはどれか。

Q3. 高優先度のISR-A実行中に、ISR-Aより優先度の低い割込みB、ISR-Aより優先度の高い割込みCが同時に発生した。多重割込み(ネスト)が正しく機能している場合の挙動として最も適切なものはどれか。

理解度を確認第1章「プロセッサとコンピュータ構成」の問題を解く