NMI(マスク不可能割り込み)
プロセッサが無効にできない割り込み。ほかの割り込みをすべて禁止していても割り込んでくる。
通常の割り込みはマスクできる。コードはクリティカルセクションの前後で割り込みを止め、終わってからまとめて処理する。NMIにはそのスイッチがない。だからこれは、プログラムがそのとき何をしていようと、それより重要な事象を知らせるための経路になる。メモリのパリティエラー、ウォッチドッグの発火、電源の落ちかけなどである。
発想自体は古い。6502には専用のNMIピンがあり、NESはこれで垂直帰線期間ごとにゲームを起こしていた。x86では初期のPCがメモリエラーの通知に使い、Linuxは今も、固まったコアを捕まえる「NMIウォッチドッグ」にこれを使っている。Cortex-MではNMIは例外番号2で、優先度は−2に固定されており、これより上位なのはリセットだけだ。
問題は、NMIハンドラが保護されていると信じられていたコードのど真ん中にも割り込みうることだ。そのためハンドラは短くなければならず、ロックを取ってはならない。