Немаскируемое прерывание
В вычислительной технике немаскируемое прерывание ( NMI ) — это аппаратное прерывание , которое стандартные методы маскировки прерываний в системе не могут игнорировать. Обычно это происходит для того, чтобы сигнализировать о неустранимых аппаратных ошибках . Некоторые НМИ могут быть замаскированы, но только с использованием собственных методов, специфичных для конкретного НМИ. Что касается SPARC , то немаскируемое прерывание (NMI), несмотря на то, что оно имеет наивысший приоритет среди прерываний, можно предотвратить с помощью маски прерывания. [ 1 ]
NMI часто используется, когда время отклика имеет решающее значение или когда прерывание никогда не должно отключаться во время нормальной работы системы. Такое использование включает в себя сообщение о неисправимых аппаратных ошибках, отладку и профилирование системы, а также обработку особых случаев, таких как перезагрузка системы.
Современные компьютерные архитектуры обычно используют NMI для обработки неисправимых ошибок, требующих немедленного внимания. Поэтому такие прерывания не должны маскироваться при нормальной работе системы. Эти ошибки включают в себя неустранимые внутренние ошибки набора микросхем системы , повреждения системной памяти, такие как ошибки четности и ECC , а также повреждение данных, обнаруженное на системных и периферийных шинах.
В некоторых системах пользователь компьютера может запустить NMI через интерфейсы отладки аппаратного и программного обеспечения и кнопки сброса системы.
Программисты обычно используют отладочные NMI для диагностики и исправления ошибочного кода. В таких случаях NMI может выполнить обработчик прерываний , который передает управление специальной программе-монитору. С помощью этой программы разработчик может проверить память машины и проверить внутреннее состояние программы в момент ее прерывания. Это также позволяет выполнять отладку или диагностику компьютеров, которые кажутся зависшими .
История
[ редактировать ]В старых архитектурах NMI использовались для прерываний, которые обычно никогда не отключались из-за требуемого времени отклика. Это были скрытые сигналы. Примеры включают контроллер гибких дисков на Amstrad PCW , 8087 сопроцессор на x86 при использовании в IBM PC или его совместимых устройствах (хотя Intel рекомендовала подключать его к обычному прерыванию). [ 2 ] ) и сигнал низкого заряда батареи на HP 95LX .
В исходном IBM PC NMI запускался, если ошибка четности обнаруживалась в системной памяти или сообщалась внешним устройством. В любом случае ПК отобразит сообщение об ошибке и остановится. Некоторые более поздние клоны ПК использовали NMI, чтобы скрыть аппаратные отличия от стандартного ПК. На таких компьютерах NMI будет генерироваться, когда программа попытается получить доступ к несовместимому оборудованию. Обработчик BIOS прерываний затем преобразует запрос программы в соответствие с фактически присутствующим оборудованием. SMM — в 386SL лучший способ сделать это.
Некоторые 8-битные домашние компьютеры использовали линию NMI для обеспечения «теплого старта», если система зависла. Обычно это восстанавливает регистры управления до заведомо исправных значений, хранящихся в ПЗУ , без уничтожения любых данных, которые пользователь мог в данный момент загрузить. На Commodore 8-битных машинах Клавиша RESTORE была прямо или косвенно подключена к линии NMI на ЦП серии 6502 , но сброс происходил только в том случае, если программа-обработчик NMI в ПЗУ обнаружила, что это произошло. RUN/STOP также удерживался нажатой, когда Было нанесено ВОССТАНОВЛЕНИЕ (эта комбинация представляет собой коммодорскую версию приветствия тремя пальцами ). Commodore также подключил MOS Technology 6526 CIA # 2 в C64 и C128 к линии NMI процессора, что было частью средства программной эмуляции 6551 ACIA . использовалась В 8-битной линейке Atari Кнопка СИСТЕМНОГО СБРОСА предназначена для этой же цели.
NMI отладки появились в различных формах, включая Macintosh Apple «кнопку программистов» и определенные комбинации клавиш на Sun. рабочих станциях С появлением Windows 2000 Microsoft разрешила использовать NMI, чтобы заставить систему либо взломать отладчик , либо сбросить содержимое памяти на диск и перезагрузиться. [ 3 ]
Отладочные NMI также используются устройствами, которые позволяют отдыхающим и геймерам манипулировать запущенными программами. Устройства, в которых была добавлена кнопка для создания NMI, такие как Multiface от Romantic Robot , были популярным аксессуаром для 8-битных и 16-битных домашних компьютеров 1980-х годов. Эти периферийные устройства имели небольшой объем ПЗУ и кнопку NMI. Нажатие кнопки передает управление программному обеспечению в ПЗУ периферийного устройства, позволяя сохранять приостановленную программу на диск (очень полезно для игр на ленте без поддержки диска, а также для сохранения текущих игр), сохранять или распечатывать снимки экрана. или значения в памяти, которыми можно манипулировать — например, метод мошенничества для получения дополнительных жизней.
Не все компьютеры предоставляют механизм запуска NMI; однако на многих машинах (обычно стоечных серверах) предусмотрена физическая кнопка специально для этой цели. Другие машины могут предоставлять эту функцию через карту расширения. [ 4 ]
Miles Gordon Technology компании Продукты DISCiPLE и +D для ZX Spectrum оснащены «волшебной кнопкой», производящей NMI.
В Nintendo Entertainment System NMI генерируется во время каждого интервала вертикального гашения . Поскольку эти NMI (часто называемые «прерываниями vblank») происходят через частые и регулярные промежутки времени, код, который управляет игровой графикой и звуком, часто выполняется внутри подпрограммы обработчика NMI. Очистка 7-го бита PPU $2000 Регистр отключает прерывания vblank, а его установка включает их.
См. также
[ редактировать ]- Усовершенствованный программируемый контроллер прерываний (APIC)
- Межпроцессорное прерывание (IPI)
- Прерывать
- Обработчик прерываний
- Задержка прерывания
- Программируемый контроллер прерываний (PIC)
Примечания
[ редактировать ]- ^ «Уровни прерываний» . Проверено 30 ноября 2023 г.
- ^ «8.7.2: Подрежим совместимости с MS-DOS*». Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32 . Том. 1. Корпорация Интел . Июнь 2013. стр. 8–31.
- ^ «Как создать полный файл дампа сбоя или файл дампа сбоя ядра с помощью NMI в системе под управлением Windows» . Майкрософт . 08.06.2011 . Проверено 31 августа 2013 г.
- ^ «Карта переключения дампа PCI» . Connect Tech Inc. Проверено 31 августа 2013 г.
Внешние ссылки
[ редактировать ]- «Поддержка переключателя дампа для Windows» . Сеть разработчиков Microsoft . 04.12.2001. Архивировано из оригинала 26 октября 2012 г. Проверено 31 августа 2013 г.
- «Инициализация CRTC в режиме CGA» . Техническое руководство Amstrad PPC . seasip.info . Проверено 31 августа 2013 г.