マスク不能割り込み
コンピューティングにおいて、 マスク不能割り込み ( NMI )は、システムの標準の割り込みマスキング技術では無視できないハードウェア割り込みです。通常、回復不能なハードウェアエラーの注意を促すために発生します。 (一部のNMIはマスクされる場合がありますが、特定のNMIに固有の独自の方法を使用する場合のみです。)
(NMI)は、応答時間が重要な場合、または通常のシステム操作中に割り込みを無効にしない場合によく使用されます。このような用途には、回復不能なハードウェアエラーの報告、システムのデバッグとプロファイリング、システムリセットなどの特殊なケースの処理が含まれます。
最近のコンピューターアーキテクチャは通常、NMIを使用して、すぐに注意が必要な回復不可能なエラーを処理します。したがって、このような割り込みは、システムの通常の動作ではマスクしないでください。これらのエラーには、回復不能な内部システムチップセットエラー、パリティエラーやECCエラーなどのシステムメモリの破損、およびシステムバスと周辺バスで検出されたデータ破損が含まれます。
一部のシステムでは、コンピューターユーザーはハードウェアおよびソフトウェアデバッグインターフェイスとシステムリセットボタンを介してNMIをトリガーできます。
プログラマは通常、デバッグNMIを使用して、障害のあるコードを診断および修正します。このような場合、NMIは特別な監視プログラムに制御を移す割り込みハンドラーを実行できます。このプログラムから、開発者はマシンのメモリを検査し、中断の瞬間にプログラムの内部状態を検査できます。これにより、ハングしているように見えるコンピューターのデバッグまたは診断も可能になります。
歴史
古いアーキテクチャでは、NMIが割り込みに使用されましたが、通常、応答時間が必要なために無効にされることはありませんでした。それらは隠された信号でした。例には、Amstrad PCWのフロッピーディスクコントローラー、IBM PCまたはその互換機で使用する場合のx86の8087コプロセッサー(Intelが通常の割り込みに接続することを推奨しているにもかかわらず)、およびHP 95LXのLow Battery信号が含まれます。
元のIBM PCでは、システムメモリでパリティエラーが検出された場合、または外部デバイスによって報告された場合、NMIがトリガーされました。どちらの場合でも、PCはエラーメッセージを表示して停止します。後のPCクローンの中には、NMIを使用して、標準のPCとは異なるハードウェアの違いを隠すものがありました。そのようなコンピューターでは、プログラムが互換性のないハードウェアにアクセスしようとしたときにNMIが生成されます。 BIOS割り込みハンドラーは、プログラムの要求を実際に存在するハードウェアと一致するように変換します。これを行うには、386SLのSMMがより良い方法です。
一部の8ビットホームコンピューターは、システムがロックされた場合に「ウォームスタート」を許可するためにNMIラインを使用しました。通常、これにより、ユーザーが現在ロードしているデータを破壊することなく、ROMに格納されている既知の適切な値に制御レジスタが復元されます。 Commodore 8ビットマシンでは、RESTOREキーは6502シリーズCPUのNMIラインに直接または間接的に接続されましたが、ROMのNMIハンドラルーチンがRUN / STOPも検出された場合にのみリセットが行われましたRESTOREが打たれたときに押された(この組み合わせは3本指の敬礼のコモドールバージョンです)。また、コモドールは、C64およびC128のMOSテクノロジー6526 CIA#2をプロセッサのNMIラインに接続しました。これは、AC551 6551のソフトウェアエミュレーションを実現する手段の一部でした。 Atariの8ビットラインは、これと同じ目的でSYSTEM RESETボタンを使用しました。
NMIのデバッグは、Apple Macintoshの「プログラマー」ボタンや、SUNワークステーション上の特定のキーの組み合わせなど、さまざまな形で登場しています。 Windows 2000の導入により、MicrosoftはNMIを使用してシステムがデバッガーに侵入するか、メモリーの内容をディスクにダンプして再起動することを許可しました。
デバッグNMIは、レジャーユーザーやゲーマーが実行中のプログラムを操作できるようにするデバイスでも使用されています。 Romantic RobotのMultifaceなど、NMIを生成するためのボタンを追加したデバイスは、1980年代の8ビットおよび16ビットの家庭用コンピューターの一般的なアクセサリーでした。これらの周辺機器には、少量のROMとNMIボタンがありました。ボタンを押すと、コントロールが周辺機器のROMのソフトウェアに転送され、一時停止したプログラムをディスクに保存できます(ディスクをサポートしないテープベースのゲームに非常に便利ですが、進行中のゲームの保存にも役立ちます)、スクリーンショットを保存または印刷します、または操作するメモリ内の値。たとえば、余分な生命を獲得するための不正行為のテクニック。
すべてのコンピューターがNMIをトリガーするメカニズムを提供するわけではありません。ただし、多くのマシン(通常はラックマウントサーバー)には、この目的専用の物理的なボタンがあります。他のマシンは、拡張カードを介してこの機能を公開する場合があります。
Miles Gordon TechnologyのZX Spectrum用のDISCiPLEおよび+ D製品は、NMIを生成する「マジックボタン」を備えていました。
Nintendo Entertainment Systemでは、各垂直ブランキング間隔でNMIが生成されます。これらのNMI(「vblank割り込み」と呼ばれることが多い)は頻繁に一定の間隔で発生するため、ゲームのグラフィックとオーディオを操作するコードはNMIハンドラルーチン内で実行されることがよくあります。 PPUの$ 2000レジスタの7番目のビットをクリアすると、vblank割り込みが無効になり、それを設定すると有効になります。