Articulo de referencia

Interrupción no enmascarable

En informática , una interrupción no enmascarable ( NMI ) es una interrupción de hardware que las técnicas estándar de enmascaramiento de interrupciones del sistema no pueden ig...

En informática , una interrupción no enmascarable ( NMI ) es una interrupción de hardware que las técnicas estándar de enmascaramiento de interrupciones del sistema no pueden ignorar. Generalmente se produce para alertar sobre errores de hardware irrecuperables . Algunas NMI pueden enmascararse, pero solo mediante métodos propietarios específicos para cada NMI en particular. En el caso de SPARC , la interrupción no enmascarable (NMI), a pesar de tener la máxima prioridad entre las interrupciones, puede evitarse mediante el uso de una máscara de interrupción. [ 1 ]

Una interrupción no mecánica (NMI) se utiliza a menudo cuando el tiempo de respuesta es crítico o cuando una interrupción nunca debe deshabilitarse durante el funcionamiento normal del sistema. Entre sus usos se incluyen la notificación de errores de hardware irrecuperables, la depuración y el análisis del rendimiento del sistema, y ​​el manejo de casos especiales como los reinicios del sistema.

Las arquitecturas informáticas modernas suelen utilizar interrupciones no mecánicas (NMI) para gestionar errores irrecuperables que requieren atención inmediata. Por lo tanto, estas interrupciones no deben enmascararse durante el funcionamiento normal del sistema. Dichos errores incluyen fallos internos irrecuperables del chipset del sistema , corrupción de 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, el usuario puede activar una interrupción no mecánica (NMI) mediante interfaces de depuración de hardware y software , así como mediante botones de reinicio del sistema.

Los programadores suelen usar interfaces no mecánicas (NMI) de depuración para diagnosticar y corregir código defectuoso. En estos casos, una NMI puede ejecutar un controlador de interrupciones que transfiere el control a un programa de monitorización 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 la interrupción. Esto también permite depurar o diagnosticar ordenadores que parecen bloqueados .

Historia

En arquitecturas más antiguas, las NMI se usaban para interrupciones que normalmente nunca se desactivaban debido al tiempo de respuesta requerido. Eran señales ocultas. Algunos ejemplos incluyen el controlador de disquete en el Amstrad PCW , el coprocesador 8087 en el x86 cuando se usaba en el IBM PC o sus compatibles (aunque Intel recomendaba conectarlo a una interrupción normal [ 2 ] ), y la señal de batería baja en el HP 95LX .

En el IBM PC original , se activaba una interrupción no de memoria (NMI) si se detectaba un error de paridad en la memoria del sistema o si un dispositivo externo lo reportaba. En ambos casos, el PC mostraba un mensaje de error y se detenía. Algunos ordenadores compatibles con IBM posteriores utilizaban una NMI para ocultar las diferencias de hardware con respecto al IBM PC original. En estos ordenadores, se generaba una NMI cuando un programa intentaba acceder a hardware incompatible. Un controlador de interrupciones de la BIOS traducía entonces la solicitud del programa para que coincidiera con el hardware presente. El SMM del 386SL es una mejor manera de lograr esto.

Algunos ordenadores domésticos de 8 bits utilizaban la línea NMI para permitir un "arranque en caliente" si el sistema se bloqueaba. Normalmente, esto restauraba los registros de control a valores correctos conocidos almacenados en la ROM , sin destruir los datos que el usuario pudiera tener cargados. En los ordenadores Commodore de 8 bits, la tecla RESTORE estaba conectada directa o indirectamente a la línea NMI de la CPU de la serie 6502 , pero el reinicio solo se producía si la rutina de control NMI en la ROM detectaba que también se mantenía pulsada la tecla RUN/STOP al pulsar RESTORE (esta combinación era la versión Commodore de un saludo con tres dedos ). Commodore también conectaba el MOS Technology 6526 CIA n.º 2 de los C64 y C128 a la línea NMI del procesador, lo que formaba parte del método para lograr la emulación por software del 6551 ACIA . La línea de 8 bits de Atari utilizaba un botón SYSTEM RESET para este mismo propósito.

Las NMI de depuración han aparecido de diversas formas, incluyendo el "botón de programador" de Apple Macintosh y ciertas combinaciones de teclas en estaciones de trabajo Sun. Con la introducción de Windows 2000 , Microsoft permitió el uso de una NMI para provocar que un sistema entrara en modo depuración o volcara el contenido de la memoria al disco y se reiniciara. [ 3 ]

Las instrucciones NMI de depuración también se han utilizado en dispositivos que permiten a usuarios ocasionales y jugadores manipular programas en ejecución. Los dispositivos que añadían un botón para generar una NMI, como el Multiface de Romantic Robot , fueron un accesorio popular para los ordenadores domésticos 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 pulsar el botón, se transfería el control al software en la ROM del periférico, lo que permitía guardar el programa suspendido en el disco (muy útil para juegos basados ​​en cinta sin soporte para disco, pero también para guardar partidas en curso), guardar o imprimir capturas de pantalla o manipular valores en la memoria, una técnica para hacer trampas y obtener vidas extra, por ejemplo.

No todos los ordenadores disponen de un mecanismo para activar las NMI; sin embargo, muchas máquinas (normalmente servidores de montaje en rack ) disponen de un botón físico específico para este fin. Otras máquinas pueden ofrecer esta funcionalidad mediante una tarjeta de expansión. [ 4 ]

Los productos DISCiPLE y +D de Miles Gordon Technology para el ZX Spectrum incluían un "botón mágico" que producía NMI (Indicador Nuevo de Medición).

En la Nintendo Entertainment System , se genera una interrupción no lineal (NMI) durante cada intervalo de borrado vertical . Debido a que estas NMI (a menudo denominadas "interrupciones de borrado vertical") ocurren a intervalos frecuentes y regulares, el código que manipula los gráficos y el audio del juego suele ejecutarse dentro de la rutina del controlador de NMI. Borrar el séptimo bit del registro $2000 de la PPU desactiva las interrupciones de borrado vertical, y activarlo las habilita. Esto permite que la CPU finalice las tareas obligatorias, a costa de un retardo .

Véase también

Notas

  1. "Niveles de interrupción" . Consultado el 30/11/2023 .
  2. "8.7.2: Submodo de compatibilidad con MS-DOS*". Manual del desarrollador de software para arquitecturas Intel® 64 e IA-32. Vol. 1. Intel Corporation . Junio ​​de 2013. págs. 8–31 .  
  3. "Cómo generar un archivo de volcado de memoria completo o un archivo de volcado de memoria del kernel mediante una NMI en un sistema basado en Windows" . Microsoft . 8 de junio de 2011. Consultado el 31 de agosto de 2013 .
  4. "Tarjeta de conmutación de volcado PCI" . Connect Tech Inc. Recuperado el 31 de agosto de 2013 .
  • "Soporte para volcado de conmutadores en Windows" . Microsoft Developer Network . 4 de diciembre de 2001. Archivado del original el 26 de octubre de 2012. Consultado el 31 de agosto de 2013 .
  • "Inicialización del CRTC en modo CGA" . Manual técnico de Amstrad PPC . seasip.info . Consultado el 31 de agosto de 2013 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Non-maskable_interrupt&oldid=1310469933 "