Non-maskable interrupt

Information about Non-maskable interrupt

A non-maskable interrupt (NMI) is a computer processor interrupt that can not be ignored by standard interrupt masking techniques in the system. It 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.)

Overview

An NMI is often used when response time is critical, and when an interrupt should never be disabled in the normal operation of the system. Such uses include the reporting of non-recoverable hardware errors, methods for system debugging, and special case handling (last minute hacks) such as system resets.

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 peripheral 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.

History

In older architectures, NMIs were used for interrupts which were typically never disabled because of the required response time. Examples include the floppy disk controller on the Amstrad PCW, the 8087 coprocessor on the x86 when used in the IBM PC or its compatibles (even though Intel recommended connecting it to a normal interrupt, causing the error pin on the 287 when used in the IBM PC/AT to be connected to a normal interrupt rather than directly to the 286 error pin, for which the handler jumps to the NMI handler, and later causing Intel, in the 486, to add the MS-DOS compatibility mode to it), and the Low Battery signal on the HP 95LX.

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 RESTORE was struck (this combination being the Commodore version of a three finger salute). Commodore also connected the MOS Technology 6526 CIA #2 in the C64 and C128 to the processor's NMI line, which was part of the means by which software emulation of the 6551 ACIA was accomplished. 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.

See also

External links

In computing, an interrupt is an asynchronous signal from hardware indicating the need for attention or a synchronous event in software indicating the need for a change in execution.
..... Click the link for more information.
A parity bit is a binary digit that indicates whether the number of bits with value of one in a given set of bits is even or odd. Parity bits are used as the simplest error detecting code.

There are two types of parity bits: even parity bit and odd parity bit.
..... Click the link for more information.
In mathematics, computer science, telecommunication, and information theory, error detection and correction has great practical importance in maintaining data (information) integrity across noisy channels and less-than-reliable storage media.
..... Click the link for more information.
Debugging is a methodical process of finding and reducing the number of bugs, or defects, in a computer program or a piece of electronic hardware thus making it behave as expected.
..... Click the link for more information.
An interrupt handler, also known as an interrupt service routine (ISR), is a callback subroutine in an operating system or device driver whose execution is triggered by the reception of an interrupt.
..... Click the link for more information.
The word hang or hanging can mean:
  • As in: "hang on a second also" and similar = "wait a second"
  • Hanging, a form of capital punishment.
  • Hang (musical instrument), a metallic drum.

..... Click the link for more information.
Amstrad PCW series (Personal Computer Word processor) was British company Amstrad's versatile line of home/personal microcomputers pitched as a complete, integrated home/office solution. It was first sold in 1985.
..... Click the link for more information.
The 8087 was the first math coprocessor for 16 bit processors designed by Intel (the I8231 was older but designed for the 8 bit Intel 8080); it was built to be paired with the Intel 8088 and 8086 microprocessors.
..... Click the link for more information.
A coprocessor is a computer processor used to supplement the functions of the primary processor (the CPU). Operations performed by the coprocessor may be floating point arithmetic, graphics, signal processing, string processing, or encryption.
..... Click the link for more information.
The generic term x86 refers to the "CISC" type instruction set of the most commercially successful CPU architecture[1] in the history of personal computing, used in processors from Intel, AMD, VIA, and others.
..... Click the link for more information.
IBM PC Series IBM Personal Computer XT • IBM Portable Personal Computer • IBM PCjr ?

IBM PC (model 5150)
Type Personal computer
Released August 12, 1981
Discontinued April 2, 1987
Processor Intel 8088 @ 4.
..... Click the link for more information.
IBM PC compatible computers are those generally similar to the original IBM PC, XT, and AT. Such computers used to be referred to as PC clones, or IBM clones since they almost exactly duplicated all the significant features of the PC, XT, or AT internal design,
..... Click the link for more information.
Bios or BIOS may refer to:
  • Life (in Greek, βίος/Bios)
  • Biographies, a genre of literature/media based on accounts of people's lives

..... Click the link for more information.
An interrupt handler, also known as an interrupt service routine (ISR), is a callback subroutine in an operating system or device driver whose execution is triggered by the reception of an interrupt.
..... Click the link for more information.
System Management Mode (SMM) is an operating mode first released with the Intel 386SL and available in later microprocessors in the x86 architecture, in which all normal execution (including the operating system) is suspended, and special separate software (usually firmware or a
..... Click the link for more information.
home computer was the description of the second generation of desktop computers, entering the market in 1977 and becoming common during the 1980s. They are also members of the class known as personal computers.
..... Click the link for more information.
The notion of read-only data can also refer to file system permissions.


Read-only memory (usually known by its acronym, ROM) is a class of storage media used in computers and other electronic devices.
..... Click the link for more information.
Commodore, the commonly used name for Commodore International, was an American electronics company based in West Chester, Pennsylvania which was a vital player in the home/personal computer field in the 1980s.
..... Click the link for more information.
MOS Technology 6510 is a microprocessor designed by MOS Technology, Inc., and is a direct successor of the very successful 6502.

The primary change from the 6502 was the addition of an 8-bit general purpose I/O port (only six I/O pins were available in the most common
..... Click the link for more information.
Commodore, the commonly used name for Commodore International, was an American electronics company based in West Chester, Pennsylvania which was a vital player in the home/personal computer field in the 1980s.
..... Click the link for more information.
the three-finger salute is a jocular term for the keyboard combination that forces a soft reboot, brings up the process manager (on Windows, BeOS or Mac OS X, and KDE-based Linuxes) or a jump to ROM monitor.
..... Click the link for more information.
Commodore, the commonly used name for Commodore International, was an American electronics company based in West Chester, Pennsylvania which was a vital player in the home/personal computer field in the 1980s.
..... Click the link for more information.
MOS Technology, Inc., also known as CSG (Commodore Semiconductor Group), was a semiconductor design and fabrication company based in Norristown, Pennsylvania, in the United States.
..... Click the link for more information.
The 6526/8520 Complex Interface Adapter (CIA) was an integrated circuit made by MOS Technology. It served as a I/O port controller for the 6502 family of microprocessors, providing for parallel and serial I/O capabilities as well as timers and a Time-of-Day (TOD) clock.
..... Click the link for more information.
Type Home computer
Released August 1982
Discontinued April 1994
Processor MOS Technology 6510 @ 1.02 MHz (NTSC version) / 0.985MHz (PAL version)
Memory 64 KB
OS Commodore BASIC 2.
..... Click the link for more information.
Type Home computer
Released 1985
Discontinued 1989
Processor MOS Tech. 8502 @ 2 MHz
Zilog Z80A @ 4 MHz
Memory 128 KB
OS Microsoft BASIC 7.
..... Click the link for more information.
Processor may refer to:
  • Central processing unit, the part of a computer that interprets instructions
  • Manuscripts processor, one who arranges and describes manuscripts collections
  • Microprocessor, a part of a microcomputer

..... Click the link for more information.
The 6551 Asynchronous Communications Interface Adapter (ACIA) was an integrated circuit made by MOS Technology. It served as a companion UART chip for the widely popular 6502 microprocessor.
..... Click the link for more information.
The 6551 Asynchronous Communications Interface Adapter (ACIA) was an integrated circuit made by MOS Technology. It served as a companion UART chip for the widely popular 6502 microprocessor.
..... Click the link for more information.
Atari, Inc.

Public (NASDAQ:  ATAR )
Founded 1972 as Atari Inc.
1984 as Atari Corporation and Atari Games
1998 as Atari Interactive
2003 as Atari Inc. (formerly Infogrames Inc./GT Interactive)
Headquarters New York, N.Y., U.S.
..... Click the link for more information.

This article is copied from an article on Wikipedia.org - the free encyclopedia created and edited by online user community. The text was not checked or edited by anyone on our staff. Although the vast majority of the wikipedia encyclopedia articles provide accurate and timely information please do not assume the accuracy of any particular article. This article is distributed under the terms of GNU Free Documentation License.