En informática , una interrupción no enmascarable ( NMI ) es una interrupción de hardware que las técnicas de enmascaramiento de interrupciones estándar del sistema no pueden ignorar. Por lo general, se produce para señalar la atención de errores de hardware no recuperables . Algunos INM pueden estar enmascarados, pero solo mediante el uso de métodos patentados específicos para el INM en particular.
Un NMI se usa a menudo cuando el tiempo de respuesta es crítico o cuando una interrupción nunca debe desactivarse durante el funcionamiento normal del sistema. Dichos usos incluyen informes de errores de hardware no recuperables, depuración y creación de perfiles del sistema, y manejo de casos especiales como reinicios del sistema.
Las arquitecturas informáticas modernas suelen utilizar NMI para manejar errores no recuperables que necesitan atención inmediata. Por lo tanto, estas interrupciones no deben enmascararse en el funcionamiento normal del sistema. Estos errores incluyen errores del conjunto de chips del sistema interno no recuperables , corrupción en la memoria del sistema, como errores de paridad y ECC , y corrupción de datos detectada en los buses del sistema y de los periféricos.
En algunos sistemas, un usuario de computadora puede activar una NMI a través de interfaces de depuración de hardware y software y botones de reinicio del sistema.
Los programadores suelen utilizar NMI de depuración para diagnosticar y corregir códigos defectuosos. En tales casos, un NMI puede ejecutar un manejador de interrupciones que transfiera el control a un programa de monitoreo especial. Desde este programa, un desarrollador puede inspeccionar la memoria de la máquina y examinar el estado interno del programa en el instante de su interrupción. Esto también permite la depuración o el diagnóstico de equipos que parecen bloqueados .
Historia
En arquitecturas más antiguas, los NMI se usaban para interrupciones que, por lo general, nunca se desactivaban debido al tiempo de respuesta requerido. Eran señales ocultas. Los ejemplos incluyen el controlador de disquete en el Amstrad PCW , el coprocesador 8087 en el x86 cuando se usa en el IBM PC o sus compatibles (aunque Intel recomendó conectarlo a una interrupción normal [1] ), y la señal de batería baja en el HP 95LX .
En el IBM PC original , se activaba un NMI si se detectaba un error de paridad en la memoria del sistema o si un dispositivo externo lo informaba. En cualquier caso, la PC mostraría un mensaje de error y se detendría. Algunos clones de PC posteriores utilizaron un NMI para ocultar las diferencias de hardware con respecto a un PC estándar. En tales computadoras, se generaría un NMI cuando un programa intentaba acceder a hardware incompatible. Un controlador de interrupciones del BIOS traduciría la solicitud del programa para que coincida con el hardware que estaba realmente presente. El SMM en el 386SL es una mejor manera de hacer esto.
Algunas computadoras hogareñas de 8 bits usaban la línea NMI para permitir un "arranque en caliente" si el sistema se había bloqueado. Por lo general, esto restauraría los registros de control a valores buenos conocidos almacenados en la ROM , sin destruir los datos que el usuario pueda haber cargado actualmente. En las máquinas Commodore de 8 bits, la tecla RESTORE se conectó directa o indirectamente a la línea NMI en la CPU de la serie 6502 , pero el restablecimiento se llevaría a cabo solo si la rutina del controlador NMI en la ROM detectaba que RUN / STOP también se mantenía pulsado cuando RESTORE fue golpeado (esta combinación es la versión Commodore de un saludo de tres dedos ). Commodore también conectó la tecnología MOS 6526 CIA # 2 en el C64 y C128 a la línea NMI del procesador, que fue parte de los medios por los cuales se logró la emulación de software del 6551 ACIA . La línea de 8 bits de Atari utilizó un Botón SYSTEM RESET para este mismo propósito.
Los NMI de depuración han aparecido en varias formas, incluido el "botón del programador" de Apple Macintosh y ciertas combinaciones de teclas en las estaciones de trabajo Sun. Con la introducción de Windows 2000 , Microsoft permitió el uso de un NMI para hacer que un sistema entrara en un depurador o volcara el contenido de la memoria en el disco y se reiniciara. [2]
Los dispositivos que permiten a los usuarios de ocio y a los jugadores manipular los programas en ejecución también han utilizado NMI de depuración. Los dispositivos que agregaban un botón para generar un NMI, como el Multiface de Romantic Robot , eran un accesorio popular para las computadoras domésticas de 8 y 16 bits de la década de 1980. Estos periféricos tenían una pequeña cantidad de ROM y un botón NMI. Al presionar el botón, se transfirió el control al software en la ROM del periférico, lo que permite que el programa suspendido se guarde en el disco (muy útil para juegos basados en cinta sin soporte de disco, pero también para guardar juegos en progreso), capturas de pantalla para guardar o imprimir , o valores en la memoria para ser manipulados, una técnica de trampa para adquirir vidas extra, por ejemplo.
No todas las computadoras proporcionan un mecanismo para activar NMI; sin embargo, muchas máquinas (normalmente servidores de montaje en bastidor ) proporcionan un botón físico específicamente para este propósito. Otras máquinas pueden exponer esta funcionalidad a través de una tarjeta de expansión. [3]
Miles Gordon Technology 's discípulo y + D productos para el ZX Spectrum contó con un 'botón mágico' NMI productoras.
En Nintendo Entertainment System , se genera un NMI durante cada intervalo de supresión vertical . Debido a que estas NMI (a menudo denominadas "interrupciones vblank") ocurren a intervalos regulares y frecuentes, el código que manipula los gráficos y el audio del juego a menudo se ejecuta dentro de la rutina del controlador de NMI. Borrar el séptimo bit de las PPU El registro de $ 2000 deshabilita las interrupciones vblank y su configuración las habilita.
Ver también
- Controlador de interrupciones programable avanzado (APIC)
- Interrupción entre procesadores (IPI)
- Interrumpir
- Controlador de interrupciones
- Interrupción de latencia
- Controlador de interrupción programable (PIC)
Notas
- ^ "8.7.2: Submodo de compatibilidad MS-DOS *". Manual del desarrollador de software de arquitecturas Intel® 64 e IA-32 . 1 . Intel Corporation . Junio de 2013. p. 8–31.
- ^ "Cómo generar un archivo de volcado por caída completo o un archivo de volcado por caída del kernel mediante el uso de un NMI en un sistema basado en Windows" . Microsoft . 2011-06-08 . Consultado el 31 de agosto de 2013 .
- ^ "Tarjeta PCI Dump Switch" . Conectar Tech Inc . Consultado el 31 de agosto de 2013 .
enlaces externos
- "Soporte de interruptor de volcado para Windows" . Red de desarrolladores de Microsoft . 2001-12-04. Archivado desde el original el 26 de octubre de 2012 . Consultado el 31 de agosto de 2013 .
- "Inicialización CRTC en modo CGA" . Manual técnico de Amstrad PPC . seasip.info . Consultado el 31 de agosto de 2013 .