【問題8】 「ウォッチドッグタイマ」の役割とは?“組み込み力”向上! ETEC対策ドリル(8)

組み込みシステムに欠かせない「割り込み」の仕組みや種類について詳しく解説。また、今回はタイマに関する問題を出題する!!

» 2010年03月04日 00時00分 公開
[近森満(株式会社サートプロ 代表取締役社長/JASA ETEC運営事務局),@IT MONOist]

【問題7】の解答

 前回の宿題【問題7】は、「割り込み」に関する問題でした。

 割り込みは、緊急性の高いイベントが発生したときに、現在実行中の処理を一時中断して、そのイベントを処理するための仕組みです。

 今回も問題の解答に続いて、割り込みの仕組みや種類などについて解説します。この機会にしっかりと理解しておきましょう。

 それでは、解答を発表します!


問題7

割り込みに関する次の記述のうち、正しいものはどれか?

ア.外部割り込みには、数値のオーバーフローなどによる「プログラム割り込み」や
   システムコールの呼び出しによる「システムコール割り込み」などがある。
イ.割り込み要求を受けると、実行中の処理を中断して後で再開できるように、
   レジスタなどの状態を保存する「コンテキストスイッチ」が発生する。
ウ.内部割り込みは、禁止または許可を指定できる「マスカブル割り込み」と、
   禁止または許可を指定できない「ノンマスカブル割り込み」に分類できる。
エ.割り込み要求を受けると、現在実行中の処理が中断され、
   タスクハンドラに記述された割り込み処理が実行される。

答え. (←クリック)


【問題7】の補足

 以外の記述には、誤りがあります。

 は「外部割り込み」が誤りです。プログラム割り込みやシステムコール割り込みは、内部割り込みになります。は「内部割り込み」が誤りです。マスカブル割り込みとノンマスカブル割り込みに分類されるのは外部割り込みになります。は「タスクハンドラ」が誤りです。割り込み要求を受けると、現在実行中の処理の代わりに割り込みハンドラに記述された処理が実行されます。

緊急性の高い処理に対応−割り込み−

 MPUはプログラムに沿って順番に処理を実行していきます。しかし、すべての処理が順番どおりに実行されるわけではありません。例えば、組み込み機器の緊急停止ボタンが押されたとしましょう。この場合、現在実行中の処理を中断して、機器を停止する処理を実行しなければなりません。

 ここでは「ポーリング」という手法が利用できます。ポーリングは、一定間隔でハードウェアの状態を監視し、ボタンの押下などのイベントの発生を検知したら、そのイベントに対応する処理を実行します(図1)

図1 ポーリングの例

 ポーリングは、ハードウェアに依存せず、ソフトウェアで簡単に実装可能です。ただし、イベントの発生と時間差が生じるかもしれないという問題があります。例えば、ポーリングにより、5秒ごとに緊急停止ボタンが押されたかどうかをチェックしているとします。このケースですと、仮にチェックした直後にボタンが押されると、5秒後までボタンが押されたことが分かりません。状況によっては、5秒間の遅れは致命的です。逆に、チェックする間隔を短くし過ぎると、めったに押されないボタンを監視するために、常にチェック処理を実行していることになり、MPUに大きな負荷が掛かります。

 イベントの発生時に、すぐに対応する処理を実行するための仕組みが、“割り込み”です。緊急停止ボタンの押下などのイベントが発生すると、MPUに割り込み要求が送られます。MPUは割り込み要求を受けると、現在実行中の処理を中断し、割り込みハンドラを実行します。緊急停止ボタンが押されたときに実行すべき処理は、あらかじめ割り込みハンドラに記述しておきます。

 処理を実行しているとき、その処理の流れを「コンテキスト」といいます。割り込み要求に応じて、現在実行中の処理を中断し、割り込みハンドラを実行すると、コンテキストが別のコンテキストに変わることになります。そのため、中断した処理を後で再開できるように、現在使用中のレジスタの値などを一時的にどこかに退避し、割り込みハンドラの実行が完了したときに復元する必要があります。コンテキストの変更に伴ってレジスタなどの値を退避/復元する作業を「コンテキストスイッチ」といいます(図2)

図2 割り込みの例

割り込みの種類

 割り込みは、大きく「外部割り込み(ハードウェア割り込み)」と「内部割り込み(ソフトウェア割り込み)」に分類できます。割り込みには、表1に示すようなものがあります。

表1 割り込みの種類
種類
説明
外部割り込み 入出力割り込み ハードウェアの入出力によって発生する
機械チェック割り込み 機械の異常を伝えるために発生する
タイマ割り込み タイマが一定時間が過ぎたことを通知するために発生する
内部割り込み 例外割り込み ゼロによる除算やバッファオーバーフローといったプログラムのバグなどが原因で発生する
システムコール割り込み システムコールが呼び出されたときに発生する

 外部割り込みには、割り込み要求の受け付けを禁止できないものと、できるものがあります。電源のオン/オフ、ハードウェアのリセットなど、優先的に処理しなければならないイベントは、禁止できない「ノンマスカブル割り込み(NMI:Non-Maskable Interrupt)」として通知します。そのほかの割り込みは「マスカブル割り込み」になります。割り込みを禁止することを「マスク」といいます。

割り込みコントローラ

 大規模なシステムでは、ハードウェアの種類やソフトウェアの実行コード行数に比例して、割り込みの種類も増えます。そのため、多くの場合、「割り込みコントローラ(INTC:Interrupt Controller)」で数多くの割り込みを制御して、MPUに渡すことになります。割り込みコントローラでは「割り込みマスクレジスタ」によって、各割り込みを受け付けるのか、禁止するのかを指定したり、「割り込み優先順位設定レジスタ」によって割り込みの優先順位(レベル)を設定したりできます。

 図3に示すように、割り込みコントローラの入力端子には、各ハードウェアからの「割り込み要求(IRQ:Interrupt Request)」を受け付ける信号線を接続します。ハードウェアから割り込み要求信号が送られてくると、割り込みマスクレジスタの該当ビットを参照して、受け付け可能な割り込みかどうかを判定します。受け付け可能であれば、割り込み優先順位設定レジスタを参照して、最もレベルの高い割り込みを抽出してMPUに割り込み要求を送ります。

図3 割り込みコントローラの例

割り込みベクタ・テーブル

 MPUは、割り込み要求を受けると、割り込みに一意に割り振られた割り込み番号を基に、「割り込みベクタ・テーブル」にアクセスします。割り込みベクタ・テーブルは、イベントに応じてどの割り込みハンドラを実行するかを制御するテーブルです。システムの初期化処理の際に、割り込みハンドラのメモリ上の位置を示すアドレスを設定しておきます。MPUは、そのアドレスを取得して割り込みハンドラを実行します(図4)

図4 割り込みベクタ・テーブル


今回の演習問題―【問題8】

問題8

ウォッチドッグタイマ(WDT:Watchdog Timer)の説明として、正しいものはどれか?

ア.
年月日、曜日、時刻を管理するタイマ。
イ.
指定した時間が経過したことを通知するタイマ。
ウ.
MPUが正常に稼働しているかどうかを監視するタイマ。
エ.
一定の周期ごとに割り込みを発生させるタイマ。

答え. 解答はこちら(←クリック)


 いかがでしたでしょうか? 割り込みの仕組みについて理解できましたか。次回は、時間を管理する「タイマ」について解説します。お楽しみに!(次回に続く)

関連リンク:
組込みソフトウェア技術研修講座イーラーニング(サンプルIDプレゼント中)
http://www.certpro.jp/elearning.html
組込みソフトウェア技術者試験クラス2試験対策問題集(ETEC-SW2)(サンプルIDプレゼント中)
http://www.certpro.jp/etecsw2test.html

筆者プロフィール
  株式会社サートプロ 代表取締役社長
社団法人 組込みシステム技術協会 ETEC運営事務局
近森 満(ちかもり みつる)

大手電気メーカー、外資系IT教育ベンダ、オープンソース系技術者資格認定団体などを経て、2006年より組み込みシステム分野の人材育成・教育支援を行う株式会社サートプロを設立する。現在は、ETEC運営事務局としてJASAの組込みソフトウェア技術者試験の普及・啓蒙(けいもう)活動のほか、組み込み人材育成と教育支援事業を行う。

Copyright © ITmedia, Inc. All Rights Reserved.