stringtranslate.com

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 en el sistema no pueden ignorar. Normalmente se produce para señalar errores de hardware no recuperables . Algunas NMI se pueden enmascarar, pero solo mediante el uso de métodos propietarios específicos para la NMI en particular. Con respecto a SPARC , la interrupción no enmascarable (NMI), a pesar de tener la mayor prioridad entre las interrupciones, se puede evitar que se produzca mediante el uso de una máscara de interrupción. [1]

Una NMI se utiliza 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 la notificación de errores de hardware no recuperables, la depuración y la creación de perfiles del sistema y el manejo de casos especiales como los reinicios del sistema.

Las arquitecturas informáticas modernas suelen utilizar NMI para gestionar errores no recuperables que requieren atención inmediata. Por lo tanto, dichas interrupciones no deben quedar ocultas en el funcionamiento normal del sistema. Estos errores incluyen errores no recuperables del chipset interno del sistema , 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 reparar código defectuoso. En tales 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 su interrupción. Esto también permite la depuración o el diagnóstico de equipos que parecen colgados .

Historia

En arquitecturas más antiguas, las NMI se utilizaban 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 utilizaba 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 NMI si se detectaba un error de paridad en la memoria del sistema o si un dispositivo externo lo informaba. En cualquier caso, el PC mostraba un mensaje de error y se detenía. Algunos IBM compatibles posteriores utilizaban una NMI para ocultar las diferencias de hardware con respecto al IBM PC original. En dichas computadoras, se generaba una NMI cuando un programa intentaba acceder a hardware incompatible. Un manejador de interrupciones del BIOS luego traducía la solicitud del programa para que coincidiera con el hardware que estaba realmente presente. El SMM en el 386SL es una mejor manera de hacer esto.

Algunas computadoras domésticas de 8 bits usaban la línea NMI para permitir un "arranque en caliente" si el sistema se había bloqueado. Normalmente, esto restauraba los registros de control a valores buenos conocidos almacenados en la ROM , sin destruir los datos que el usuario pudiera tener cargados en ese momento. En las máquinas Commodore de 8 bits, la tecla RESTORE estaba conectada directa o indirectamente a la línea NMI en la CPU de la serie 6502 , pero el reinicio se producía solo si la rutina del controlador NMI en la ROM detectaba que también se mantenía presionada la tecla RUN/STOP cuando se presionaba RESTORE (esta combinación es la versión Commodore de un saludo con tres dedos ). Commodore también conectaba la CIA n.º 2 MOS Technology 6526 en el C64 y C128 a la línea NMI del procesador, que era parte de los medios por los que se lograba la emulación de software de la ACIA 6551. La línea de 8 bits de Atari usaba un botón SYSTEM RESET para este mismo propósito.

Las NMI de depuración han aparecido en varias formas, incluido el "botón de programadores" 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 una NMI para hacer que un sistema ingrese a un depurador o descargue el contenido de la memoria al disco y se reinicie. [3]

Los dispositivos que permiten a los usuarios y jugadores de ocio manipular programas en ejecución también han utilizado NMI de depuración. Los dispositivos que añadían un botón para generar un NMI, como el Multiface de Romantic Robot , eran 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 de 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 de disco, pero también para guardar juegos en curso), guardar o imprimir capturas de pantalla o manipular valores en la memoria (una técnica de trampa para adquirir vidas extra, por ejemplo).

No todas las computadoras cuentan con un mecanismo para activar las NMI; sin embargo, muchas máquinas (normalmente servidores montados en bastidor ) cuentan con un botón físico específicamente para este propósito. Otras máquinas pueden ofrecer esta funcionalidad a través de una tarjeta de expansión. [4]

Los productos DISCiPLE y +D de Miles Gordon Technology para ZX Spectrum presentaban un "botón mágico" productor de NMI.

En la Nintendo Entertainment System , se genera una NMI durante cada intervalo de borrado vertical . Debido a que estas NMI (a menudo denominadas "interrupciones vblank") ocurren a intervalos frecuentes y regulares, el código que manipula los gráficos y el audio del juego a menudo se ejecuta dentro de la rutina del controlador NMI. Borrar el séptimo bit del registro $2000 de la PPU deshabilita las interrupciones vblank, y configurarlo las habilita.

Véase también

Notas

  1. ^ "Niveles de interrupción" . Consultado el 30 de noviembre de 2023 .
  2. ^ "8.7.2: Submodo de compatibilidad con MS-DOS*". Manual del desarrollador de software de 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 núcleo mediante un NMI en un sistema basado en Windows". Microsoft . 2011-06-08 . Consultado el 2013-08-31 .
  4. ^ "Tarjeta de conmutación PCI Dump". Connect Tech Inc. Consultado el 31 de agosto de 2013 .

Enlaces externos