A Non-Maskable Interrupt (NMI) is a special type of interrupt that can not be ignored by standard interrupt masking techniques. Otherwise, NMIs behave and are handled just like any other interrupt. An NMI is typically used to signal attention for non-recoverable hardware errors. Some NMIs may be masked, but only by using proprietary methods specific to the particular NMI.
In modern architectures, NMIs are typically used to handle non-recoverable errors, which need immediate attention. Therefore, such interrupts should not be masked in the normal operation of the system. These errors include non-recoverable internal system chipset errors, corruption in system memory such as parity and ECC errors, and data corruption detected on system and peripherial buses.
On some systems, an NMI can be triggered by the computer's user. Such applications include hardware and software debugging interfaces, and system reset buttons.
Debugging NMIs are typically used to diagnose and fix faulty code. In such cases an NMI is used to execute an interrupt handler that transfers control to a special monitor program. From this program a developer can inspect the machine's memory, and examine the internal state of the program at the instant of its interruption. Such NMIs also allow computers which appear to be hung to be debugged or diagnosed.
In the original IBM PC, a NMI was triggered if a parity error was detected in system memory, or reported by an external device. In either case, the PC would display an error message and halt. Some later PC clones used a NMI to conceal the hardware differences from that of a standard PC. On such computers, an NMI would be generated when a program attempted to access incompatible hardware. A BIOS interrupt handler would then translate the program's request to match the hardware that was actually present. The SMM in the 386SL is a better way to do this.
Some 8-bit home computers used the NMI line to permit a "warm start" if the system had locked up. Typically, this would restore the control registers to known good values stored in ROM, without destroying whatever data that the user might currently have loaded. On the Commodore 8-bit machines, the RESTORE key was hooked up directly to the NMI line on the 6510 CPU, but the reset would only take place if RUN/STOP was also being held down when the interrupt took place. Atari's 8-bit line used a SYSTEM RESET button for this same purpose.
Debugging NMIs have appeared in a number of forms, including the Apple Macintosh's "programmers' button", and certain key combinations on SUN workstations. With the introduction of Windows 2000, Microsoft allowed the use of an NMI to cause a system to either break into a debugger, or dump the contents of memory to disk and reboot.
Debugging NMIs have also been used by devices that allow leisure users and gamers to manipulate running programs. Devices which added a button to generate an NMI, such as Romantic Robot's Multiface, were a popular accessory for 1980s 8-bit and 16-bit home computers. These peripherals had a small amount of ROM and an NMI button. Pressing the button transferred control to the software in the peripheral's ROM, allowing the suspended program to be saved to disk (very useful for tape-based games with no disk support, but also for saving games in progress), screenshots to be saved or printed, or values in memory to be manipulated -- a cheating technique to acquire extra lives, for example.
Not all computers provide a mechanism for triggering NMIs; however, many machines (typically rackmount servers) provide a physical button specifically for this purpose. Other machines may expose this functionality via a remote management card.
Miles Gordon Technology's DISCiPLE and +D products for the ZX Spectrum featured an NMI-producing "magic button".
On the Nintendo Entertainment System, an NMI is generated during each vertical blanking interval. Because these NMIs (often referred to as "vblank interrupts") occur at frequent, regular intervals, code that manipulates game graphics and audio is often executed inside of the NMI handler routine. Clearing the 7th bit of the PPU's $2000 register disables vblank interrupts, and setting it enables them.
Hardwareinterrupt | Interrupción no emascarable | Przerwanie niemaskowalne
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Non-Maskable interrupt".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world