ノンマスカブル割り込み(Non-Maskable Interrupt / NMI)は、コンピュータシステムにおける最も優先度の高い割り込みであり、緊急事態や致命的なエラー時に強制的に処理を割り込む仕組みです。
通常の割り込みとは異なり、CPUの設定によって無効化(マスク)できないため、システムの安全性や安定性を確保するために非常に重要です。
本記事では、NMIの基本構造から、マスカブル割り込みとの違い、具体的な用途、実装例までを専門的に解説します。
ノンマスカブル割り込み(NMI)の基礎
NMIとは何か?
ノンマスカブル割り込み(NMI)とは、CPUに対して発行されるマスク不可能なハードウェア割り込みです。
通常の割り込み(マスカブル割り込み)と異なり、制御命令で割り込みを無効化することができず、いかなる状況でも割り込みが発生します。
これは以下のような場面で活用されます:
-
ハードウェアの致命的エラー(メモリ破損、CPU過熱など)
-
システム障害時のログ取得
-
ウォッチドッグタイマーによる緊急制御
マスカブル割り込みとの違い
NMIの仕組みと動作原理
割り込み処理の流れ
-
ハードウェアからNMI信号がCPUに送られる
-
実行中の命令が中断され、NMIハンドラ(専用処理ルーチン)に制御が移る
-
問題をログに記録・診断処理を実行
-
必要に応じてシステムをリセット・シャットダウン
このように、NMIは通常の割り込みよりも高いレベルで処理され、割り込み処理中に他の割り込みを一切受け付けないことが一般的です。
ハードウェア実装例
x86アーキテクチャの場合
Intel系CPUでは、NMIは専用の割り込みベクタ(通常はINT 2)を使って処理されます。
BIOSレベルでのエラーチェックや、ハードウェア障害の通知に使われることが多いです。
組込みシステムでのNMI
組込みプロセッサ(例:ARM Cortex-Mシリーズ)でもNMIは搭載されており、ウォッチドッグタイマーのタイムアウト処理など、リアルタイム性が求められる環境で活用されます。
NMIの活用シーンと実践例
障害ログの取得と診断
システムクラッシュが発生した際にNMIをトリガーすることで、メモリ内容やレジスタ状態などをダンプ(メモリダンプ)し、後の障害解析に利用できます。
ハードウェアの監視と保護
-
ECCメモリエラーの検出
-
CPUの温度センサが異常を検出した際の強制処理
-
マザーボードレベルの障害通知
セキュリティ・フォレンジック用途
セキュリティ分野では、NMIを使ってマルウェア検出や不正アクセスの強制検出など、システムの信頼性を担保する目的で用いられるケースもあります。
開発・設計時の注意点
-
NMIはデバッグが難しいため、発生時のログ取得や処理完了確認などを事前に設計しておく必要があります。
-
ハンドラはできる限り短く簡潔に処理し、他の処理系に影響を及ぼさないよう配慮します。
-
マルチコア環境ではNMIが全コアに伝播するかどうかなど、アーキテクチャ依存の挙動に注意が必要です。
まとめ
ノンマスカブル割り込み(NMI)は、システムの健全性や信頼性を担保するために不可欠な高優先度の割り込み機構です。
通常の処理が困難な状況においても強制的に割り込み処理を実行できるため、ハードウェア障害対応や診断、セキュリティ用途など幅広い場面で活用されています。
マスカブル割り込みとの違いを正しく理解し、NMIの特性に合った設計・実装を行うことで、システム全体の堅牢性を大きく向上させることができます。
この技術を正しく活かすことは、信頼性重視のシステム開発における重要なスキルの一つです。
さらに参考してください:
非同期I/Oとは?ノンブロッキングI/Oとの違いと実践活用法を徹底解説