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

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

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

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

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

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

История

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

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

Некоторые 8-битные домашние компьютеры использовал линию NMI, чтобы разрешить «теплый старт», если система заблокировалась. Обычно это восстанавливает регистры управления до заведомо исправных значений, хранящихся в ПЗУ, не уничтожая данные, которые пользователь мог загрузить в данный момент. На Коммодор 8-битные машины, ВОССТАНОВИТЬ ключ был подключен прямо или косвенно к линии NMI на 6502 -series CPU, но сброс произойдет, только если процедура обработчика NMI в ПЗУ обнаружит, что ЗАПУСК / СТОП также удерживался, когда ВОССТАНОВИТЬ был поражен (эта комбинация Коммодор версия салют тремя пальцами ). Коммодор также подключил Технология MOS 6526 ЦРУ №2 в C64 и C128 к линии NMI процессора, которая была частью средств программной эмуляции 6551 ACIA было выполнено. Atari 8-битная строка использовала СБРОС СИСТЕМЫ кнопка для той же цели.

Отладочные NMI появились в нескольких формах, включая Apple Macintosh "программистская кнопка" и определенные комбинации клавиш на солнце рабочие станции. С введением Windows 2000, Microsoft позволил использовать NMI, чтобы заставить систему взломать отладчик, либо выгрузите содержимое памяти на диск и перезагрузитесь.[2]

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

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

Miles Gordon Technology с ДИСЦИПЛИРОВАТЬ и + D продукты для ZX Spectrum показала "волшебную кнопку", производящую НМИ.

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

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

Примечания

  1. ^ «8.7.2: Подрежим совместимости с MS-DOS *». Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32. 1. Корпорация Intel. Июнь 2013. с. 8–31.
  2. ^ «Как создать полный файл аварийного дампа или файл аварийного дампа ядра с помощью NMI в системе на базе Windows». Microsoft. 2011-06-08. Получено 2013-08-31.
  3. ^ «Плата переключателя дампа PCI». Connect Tech Inc. Получено 2013-08-31.

внешняя ссылка