NMI(エヌエムアイ)
英語表記: NMI (Non-Maskable Interrupt)
概要
NMI(非マスク可能割り込み)とは、コンピュータシステムにおいて、CPU(中央処理装置)が現在実行している処理を強制的に中断させ、直ちに対応が必要な事態を伝えるための、非常に優先度の高い制御信号です。これは、コンピュータの構成要素のうち、特に制御装置(命令の解釈と制御信号)が担う制御フロー管理メカニズムの一つであり、通常の割り込み(IRQ)とは異なり、CPUが意図的にその信号を「マスク」(無視)することができません。主に、電源異常や深刻なメモリ破損など、システム全体の安定性に影響を及ぼす致命的なハードウェアエラーが発生した際に利用されます。この仕組みがあるからこそ、システムは最悪の事態が発生する前に、最低限のデータ保護やエラーログの記録といった緊急措置をとることができるのです。
詳細解説
制御フロー管理におけるNMIの役割
NMIの存在意義は、制御装置が管理するプログラムの実行順序(制御フロー)を、緊急時に確実に変更することにあります。通常のプログラム実行は、メモリから命令を読み込み、実行し、次の命令へ進むという順次的な流れが基本です。割り込み(Interrupt)は、この順次的な流れを一時的に中断し、外部からの要求に応答させるための仕組みですが、ほとんどの割り込みは、CPUが現在クリティカルな処理を実行している場合、一時的に受け付けを停止(マスク)することができます。
しかし、NMIは違います。NMIは「非マスク可能」という名の通り、CPUの内部状態や実行中のタスクに関わらず、制御装置に対して即座の対応を強制します。これは、制御装置が命令の解釈を行っている最中であっても、そのプロセスを中断させる権限を持っていることを意味します。
動作原理と目的
NMIの主な目的は、システムが回復不可能な状態に陥る前に、最後の手段として情報を保存したり、安全にシャットダウンしたりするための時間稼ぎをすることです。
- 発生源: NMIは通常、システム内の特定のハードウェアコンポーネント(例:メモリコントローラ、電源監視回路、バスエラー検出ロジックなど)によって生成されます。これらのコンポーネントは、通常のソフトウェア処理では検出が間に合わない、または対応できないレベルの異常を検出します。
- 制御装置の応答: NMI信号がCPUの制御装置に入力されると、制御装置は現在実行中の命令を完了させず、直ちに割り込み処理に移行します。この際、通常のプログラムカウンタやレジスタの状態といった制御フローを復元するために必要な情報を、スタックと呼ばれる領域に退避させます。
- ハンドラの実行: その後、制御装置はNMI専用に予約された特定のアドレス(割り込みベクタ)に格納されている処理ルーチン(NMIハンドラ)に制御を移します。このNMIハンドラが、エラーの詳細を記録したり、システムを安全に停止させたりする緊急対応を実行します。
この一連の流れは、制御フロー管理の観点から見ると、プログラムの順次実行という「メインストリーム」の制御フローを、緊急対応という「アウトオブバンド(帯域外)」の制御フローへ強制的に切り替える操作に他なりません。NMIは、システム全体の信頼性を担保する上で、制御装置に不可欠な機能なのです。
制御装置における優先度
NMIは、他の一般的な割り込み(タイマー割り込み、I/O完了割り込みなど)やソフトウェア割り込みよりも、常に最高の優先度を持ちます。これは、制御装置が複数の割り込み要求を同時に受け取った場合でも、NMIを最優先で処理しなければならないという設計原則に基づいています。この高い優先度こそが、致命的なエラーに対する即時対応を可能にしている重要な要素です。
具体例・活用シーン
NMIは、一般ユーザーが日常的に意識する機会はほとんどありませんが、システムの「命綱」として非常に重要な役割を果たしています。
1. データセンターの電源監視
データセンターのサーバーでは、予期せぬ停電や電圧の急激な低下が発生する可能性があります。この際、UPS(無停電電源装置)がバッテリー駆動に切り替わったことを示す信号が、NMIとしてサーバーのCPUに送られることがあります。
- 活用シーン: NMIを受け取ったサーバーは、通常のシャットダウン処理を行うには時間が足りないと判断し、即座にメモリの内容をフラッシュストレージに書き込み(クラッシュダンプ)、安全に電源を落とす準備をします。これにより、データ損失を最小限に抑えることができます。
2. メモリパリティエラーの検出
古いシステムや一部のエンタープライズシステムでは、メモリセルが物理的に破損し、データが反転してしまう「パリティエラー」を検出する機能があります。このエラーは、プログラムの実行結果を予期せぬものに変えてしまうため、非常に危険です。
- 活用シーン: メモリコントローラがパリティエラーを検出した場合、NMIを発生させます。CPUは直ちに実行を停止し、エラーが発生したことをログに記録した後、システムを停止させることが多いです。これは、壊れたデータで処理を続けるよりも、システムを止めて安全を確保するという制御フロー管理の判断の結果です。
3. アナロジー:「消防車のサイレン」
NMIの動作を初心者の方に理解していただくために、制御装置(CPU)を「忙しい会社の社長」に、制御フローを「社長がこなすべき日常業務」に例えてみましょう。
社長(制御装置)は、電話対応や会議(通常の割り込み)など、多くのタスクをこなしています。これらのタスクは、社長が「今手が離せない」と判断すれば、秘書(割り込みコントローラ)を通して一時的に保留(マスク)することができます。
しかし、NMIは「消防車のサイレン」のようなものです。
会社で火災報知器(NMI発生源)が鳴り響いた場合、社長はどんなに重要な契約書にサインしている最中(クリティカルセクションの実行中)であっても、即座にペンを置き、避難指示(NMIハンドラ)に従わなければなりません。社長が「これは無視して後回しにしよう」と判断する余地はありません。
この「消防車のサイレン」こそがNMIであり、制御フロー(日常業務)を強制的に中断させ、生命と財産(システムとデータ)を守るための最優先の行動(緊急対応)を促す、絶対的な信号なのです。
資格試験向けチェックポイント
NMIは、基本情報技術者試験や応用情報技術者試験において、コンピュータアーキテクチャやOSの基本概念を問う問題として頻出します。特に、制御装置の機能、割り込み処理の優先度、およびシステム信頼性の文脈で問われます。
| 試験レベル | 重点出題ポイント | 確認すべき知識 |
| :— | :— | :— |
| ITパスポート | 割り込みの概念と目的 | 割り込みの基本的な役割(CPUと周辺装置間の連携)を理解し、NMIが「緊急事態対応」であることを把握しましょう。制御フローを一時的に変更する仕組みだと押さえるのが重要です。 |
| 基本情報技術者 | NMIと通常の割り込み(IRQ)の区別 | 最も重要。NMIが「非マスク可能」であるのに対し、IRQ(Interrupt Request)は「マスク可能」であり、CPUがマスクレジスタを設定することで一時的に無視できる点を明確に区別してください。NMIの用途が電源異常や致命的なハードウェアエラーに限定されることを覚えておきましょう。 |
| 応用情報技術者 | 制御フロー管理における優先度と信頼性 | NMIがシステム全体の信頼性(RAS特性)を確保するための重要なメカニズムであることを理解します。割り込み処理の優先度構造において、NMIが最上位に位置し、システムクラッシュを防ぐ最後の砦としての役割を果たす文脈で問われます。また、NMI発生時の制御装置の動作(レジスタ退避、NMIベクタへのジャンプ)についても深く問われることがあります。 |
試験対策のヒント
- キーワードの関連付け: NMI = 非マスク可能 = 最優先 = 致命的なハードウェアエラー(電源、メモリ)。この連鎖を確実に覚えましょう。
- 制御フローの視点: 制御装置がプログラムの実行順序を制御する中で、NMIは「強制的に経路変更する権限」と捉えてください。
- 選択肢の比較: 割り込みに関する問題が出た場合、「マスク可能か否か」がNMIとIRQを見分ける決定的なポイントとなります。
関連用語
- 割り込み (Interrupt): CPUの制御フローを一時的に中断させ、外部からの要求や内部の事象に対応させるための一般的な仕組み。
- マスク可能割り込み (Maskable Interrupt, IRQ): CPUが一時的に受け付けを拒否(マスク)できる割り込み。
- 割り込みコントローラ (Interrupt Controller): 複数の割り込み要求を管理し、優先度を判定してCPUの制御装置に伝えるハードウェア。
- 情報不足: NMIと直接関連する用語として、特定のハードウェアエラー(例:パリティエラー、バスエラー)や、NMI処理後のシステム動作を定義するクラッシュダンプに関する情報が不足しています。これらはNMIが制御フロー管理の一環としてどのような結果をもたらすかを理解するために重要です。