Немаскируемое прерывание - Non-maskable interrupt

В вычислении , А немаскируемое прерывание ( NMI ) представляет собой аппаратное прерывание , что стандартные методы прерывания маскировки в системе не могут игнорировать. Обычно это происходит, чтобы сигнализировать о неисправимых аппаратных ошибках . Некоторые NMI могут быть замаскированы, но только с использованием собственных методов, специфичных для конкретного NMI.

NMI часто используется, когда время отклика критично или когда прерывание никогда не должно отключаться во время нормальной работы системы. Такое использование включает в себя создание отчетов о неисправимых аппаратных ошибках, отладку и профилирование системы, а также обработку особых случаев, таких как перезагрузка системы.

Современные компьютерные архитектуры обычно используют NMI для обработки неисправимых ошибок, которые требуют немедленного внимания. Следовательно, такие прерывания не должны маскироваться при нормальной работе системы. Эти ошибки включают невосстановимые внутренние ошибки системного набора микросхем , повреждение системной памяти, такое как ошибки четности и ECC , а также повреждение данных, обнаруженное на системной и периферийной шинах.

В некоторых системах пользователь компьютера может запускать NMI с помощью аппаратных и программных интерфейсов отладки и кнопок сброса системы.

Программисты обычно используют отладочные NMI для диагностики и исправления ошибочного кода. В таких случаях NMI может выполнить обработчик прерывания, который передает управление специальной программе мониторинга. С помощью этой программы разработчик может проверить память машины и проверить внутреннее состояние программы в момент ее прерывания. Это также позволяет отлаживать или диагностировать зависшие компьютеры .

История

В старых архитектурах NMI использовались для прерываний, которые обычно никогда не отключались из-за необходимого времени отклика. Это были скрытые сигналы. Примеры включают контроллер гибких дисков на Amstrad PCW , сопроцессор 8087 на x86 при использовании в IBM PC или его совместимых устройствах (хотя Intel рекомендовала подключать его к обычному прерыванию) и сигнал низкого заряда батареи на HP 95LX .

В исходном IBM PC NMI запускался, если ошибка четности обнаруживалась в системной памяти или сообщалась внешним устройством. В любом случае ПК отобразит сообщение об ошибке и остановится. Некоторые более поздние клоны ПК использовали NMI, чтобы скрыть аппаратные отличия от стандартного ПК. На таких компьютерах NMI будет сгенерирован, когда программа попытается получить доступ к несовместимому оборудованию. Затем обработчик прерывания BIOS переводит запрос программы в соответствие с фактически присутствующим оборудованием. SMM в 386SL является лучшим способом сделать это.

Некоторые 8-битные домашние компьютеры использовали линию NMI для «горячего старта», если система зависла. Как правило, это восстанавливает регистры управления до заведомо исправных значений, хранящихся в ПЗУ , без уничтожения любых данных, которые пользователь мог в данный момент загрузить. На 8-битных машинах Commodore клавиша RESTORE была подключена прямо или косвенно к линии NMI на ЦП серии 6502 , но сброс будет происходить только в том случае, если подпрограмма обработчика NMI в ПЗУ обнаружила, что RUN / STOP также выполнялся. удерживалась при ударе ВОССТАНОВЛЕНИЯ (эта комбинация является версией Commodore салюта тремя пальцами ). Commodore также подключил MOS Technology 6526 CIA # 2 в C64 и C128 к линии NMI процессора, которая была частью средств, с помощью которых выполнялась программная эмуляция 6551 ACIA . В 8-битной строке Atari для этой же цели использовалась кнопка SYSTEM RESET .

Отладочные NMI появились в нескольких формах, включая «программистскую кнопку» Apple Macintosh и определенные комбинации клавиш на рабочих станциях Sun. С появлением Windows 2000 , Microsoft позволила использовать НЙ привести систему в любой перерыв в отладчик , или сбросить содержимое памяти на диск и перезагрузите компьютер.

Отладочные NMI также использовались устройствами, которые позволяют отдыхающим пользователям и геймерам манипулировать запущенными программами. Устройства , которые добавили кнопку , чтобы генерировать NMI, такие как Romantic робота Multiface , были популярным аксессуаром для 1980 - й лет 8-битных и 16-битных домашних компьютеров. Эти периферийные устройства имели небольшой объем ПЗУ и кнопку NMI. Нажатие кнопки передает управление программному обеспечению в ПЗУ периферийного устройства, позволяя сохранить приостановленную программу на диск (очень полезно для игр на магнитной ленте без поддержки диска, но также для сохранения текущих игр), снимки экрана для сохранения или печати или ценности в памяти, которыми нужно манипулировать - например, метод обмана для получения дополнительных жизней.

Не все компьютеры предоставляют механизм для запуска NMI; однако многие машины (обычно серверы, монтируемые в стойку ) имеют физическую кнопку специально для этой цели. Другие машины могут предоставлять эту функцию через карту расширения.

Miles Gordon Technology «s Disciple и + D продукты для ZX Spectrum признакам NMI-продуцирующие "волшебной кнопки".

В системе Nintendo Entertainment System NMI генерируется во время каждого интервала вертикального гашения . Поскольку эти NMI (часто называемые «пустыми прерываниями») происходят через частые регулярные интервалы, код, который управляет игровой графикой и звуком, часто выполняется внутри процедуры обработчика NMI. Очистка 7 - й бит ППУ в $ 2000 регистр отключает vblank прерываний, и его установка позволяет им.

Смотрите также

Примечания

внешние ссылки