●割り込みマスクとは

Q:ウォッチドッグ・タイマがマイコンの暴走を検出すると、システムをリセットするか、NMIという特別な割り込みを発生すると聞きました。このNMIって、どこが特別なのですか?

A:NMIというのは、ノンマスカブル割り込み(Non Maskable Interrupt)の略で、マスクできない割り込みです。割り込みを大別すると、マスクできる割り込みと、マスクできない割り込みの2種類があります。マスクできる方が普通の割り込みです。まず、このマスクという用語を説明しましょう。

CPUは、通常は一連のプログラムを連続して実行しています。その途中で、何か外部で割り込み要求が発生したときに、あらかじめ用意した割り込みプログラムを起動して実行するのが割り込みの仕組みです。なお、この割り込みプログラムは、一般に割り込みサービスルーチン(ISR)または割り込みハンドラと呼びます。

割り込みを利用すると、通常のプログラムとは無関係に、必要な処理を必要なタイミングで実行できます。たとえば、スイッチが押されたら割り込みが発生してランプを点灯するとか、タイマをセットして10秒たったら割り込みが発生してランプをオフにするとか、外部の通信相手からデータが送られてきたら割り込みが発生してデータを受信するというような仕事を簡単に実現できます。

 

図1 割り込み

 割り込みの仕組みはとても便利ですが、弊害がないわけではありません。割り込みプログラムを実行している間は、通常のプログラムは実行を中断されるので、実行効率は落ちてしまいます。通常のプログラムが急ぎの仕事をしているときでも、割り込みプログラムのために長時間待たされてしまうこともあります。

そのため、割り込みプログラムはなるべく短く、短時間で終了するように作ることが必要です。また、システム全体の設計で、割り込みの頻度が高くなりすぎないようにすることも必要です。

そして、もう1つ、通常のプログラムがどうしても割り込まれたくないときに、割り込み受付を禁止できる割り込みマスクという手段が用意されています。この場合のマスクとは、割り込み要求ビットを覆い隠して見えなくしまうというような意味をもっています。

Q:割り込みをマスクすると、割り込み要求が受け付けられなくなるのですか?

A:そうです。マスク期間中は割り込み要求は受け付けられないので、割り込み側が待たされることになります。この時間が長くなってしまうと、割り込みの効果が十分に得られなくなってしまいます。

割り込まれる側(通常のプログラムの側)では、ここは絶対に割り込まれたくないという最小限の期間だけ、割り込みをマスクします。

 

図2 割り込みマスク

●マスカブル割り込みとノンマスカブル割り込み

Q:割り込みたい側と、割り込まれたくない側のバランスが大切なのですね。

A:その通りです。さて、通常の割り込みは、割り込まれる側からマスク可能なので、マスカブル割り込みと呼ばれています。

ただし、割り込む側が本当に緊急で処理しなければいけない場合には、待たされずに即座に受け付けられる割り込みも必要です。そのような割り込みをNMI(ノンマスカブル割り込み)と呼んでいます。

例えば、ウォッチドッグ・タイマの場合には、割り込みマスクの状態でプログラムが暴走するとマスカブル割り込みではシステムを再起動できなくなります。そのため、暴走検出時にはNMIかリセット入力を使う必要があります。

なお、リセット入力というのは、特定の割り込みプログラムを実行する代わりに、通常のプログラムを初期状態から再起動するという機能を持っています。広義では、リセットは特別な割り込みの一種と考えることもできます。リセット入力もソフトウェアでマスクすることができません。

たとえば、テキサスインスツルメンツ(TI)のMSP430ファミリでは、リセット、NMI、通常の(マスカブル)割り込みを持っています。

さて、今回はマスク可能、マスク不可能という観点から割り込みの種類を考えてみましたが、割り込みには別の分類方法もあります。それについては次回に説明しましょう。

[関連リンク]

● 低リーク電流のトランスインピーダンス・アンプを内蔵した、世界初のマイコン『MSP430FR2311』

● ハードウェアIP CapTIvate™テクノロジーの詳細

● 業界最高のノイズ耐性で、初のIEC 61000-4-6 RFイミュニティ適合認証取得済ソリューションを提供する容量性タッチ・マイコン『MSP430FR2633』の詳細 

※CapTIvate、MSP430およびMSP432はTexas Instruments Incorporatedの商標です。その他すべての商標および登録商標はそれぞれの所有者に帰属します。

*ご質問は E2E 日本語コミュニティにお願い致します。

Anonymous