Icke-maskerbart avbrott

Inom datorer är ett icke-maskerbart avbrott ( NMI ) ett hårdvaruavbrott som standardtekniker för avbrottsmaskering i systemet inte kan ignorera. Det inträffar vanligtvis för att signalera uppmärksamhet för icke-återställningsbara maskinvarufel . Vissa NMI kan vara maskerade, men endast genom att använda proprietära metoder som är specifika för det specifika NMI.

Ett NMI används ofta när svarstiden är kritisk eller när ett avbrott aldrig ska inaktiveras under normal systemdrift. Sådan användning inkluderar rapportering av icke-återställningsbara hårdvarufel, systemfelsökning och profilering och hantering av specialfall som systemåterställningar.

Moderna datorarkitekturer använder vanligtvis NMI för att hantera icke-återställningsbara fel som kräver omedelbar uppmärksamhet. Därför bör sådana avbrott inte maskeras under normal drift av systemet. Dessa fel inkluderar icke-återställningsbara interna systemkretsuppsättningsfel , korruption i systemminnet såsom paritets- och ECC -fel och datakorruption som upptäckts på system- och perifera bussar.

På vissa system kan en datoranvändare utlösa ett NMI genom felsökningsgränssnitt för hårdvara och mjukvara och systemåterställningsknappar.

Programmerare använder vanligtvis felsöknings-NMI för att diagnostisera och åtgärda felaktig kod. I sådana fall kan ett NMI utföra en avbrottshanterare som överför kontrollen till ett speciellt övervakningsprogram. Från detta program kan en utvecklare inspektera maskinens minne och undersöka programmets interna tillstånd i ögonblicket av avbrott. Detta tillåter också felsökning eller diagnostik av datorer som verkar hängda .

Historia

I äldre arkitekturer användes NMI för avbrott som vanligtvis aldrig inaktiverades på grund av den erforderliga svarstiden. De var dolda signaler. Exempel inkluderar diskettkontrollern Amstrad PCW , 8087 - samprocessorn x86 när den används i IBM PC eller dess kompatibla enheter (även om Intel rekommenderade att ansluta den till ett normalt avbrott) och signalen för lågt batteri på HP 95LX .

I den ursprungliga IBM PC:n utlöstes ett NMI om ett paritetsfel upptäcktes i systemminnet eller rapporterades av en extern enhet. I båda fallen skulle datorn visa ett felmeddelande och stanna. Några senare PC-kloner använde ett NMI för att dölja hårdvaru-skillnaderna från en vanlig PC. På sådana datorer skulle ett NMI genereras när ett program försökte komma åt inkompatibel hårdvara. En BIOS- avbrottshanterare skulle sedan översätta programmets begäran för att matcha den hårdvara som faktiskt fanns. SMM i 386SL är ett bättre sätt att göra detta .

Vissa 8-bitars hemdatorer använde NMI-linjen för att tillåta en "varmstart" om systemet hade låst sig. Vanligtvis skulle detta återställa kontrollregistren till kända bra värden lagrade i ROM , utan att förstöra all data som användaren för närvarande kan ha laddat. På Commodore 8-bitars maskiner kopplades RESTORE- nyckeln direkt eller indirekt till NMI-linjen på 6502 -seriens CPU, men återställningen skulle endast ske om NMI-hanterarrutinen i ROM upptäckte att RUN/STOP också pågick hölls nere när RESTORE slogs (denna kombination är Commodore- versionen av en tre fingrar salut ). Commodore kopplade också MOS Technology 6526 CIA #2 i C64 och C128 till processorns NMI-linje, vilket var en del av det sätt på vilket mjukvaruemulering av 6551 ACIA åstadkoms. Ataris 8-bitars linje använde en SYSTEM RESET- knapp för samma ändamål.

NMI för felsökning har dykt upp i ett antal former, inklusive Apple Macintoshs " programmerares knapp" och vissa tangentkombinationer på Sun -arbetsstationer. Med introduktionen av Windows 2000 tillät Microsoft användningen av ett NMI för att få ett system att antingen bryta sig in i en debugger eller dumpa innehållet i minnet till disken och starta om.

NMI för felsökning har också använts av enheter som tillåter fritidsanvändare och spelare att manipulera program som körs. Enheter som lade till en knapp för att generera ett NMI, som Romantic Robot's Multiface , var ett populärt tillbehör för 1980-talets 8-bitars och 16-bitars hemdatorer. Dessa kringutrustning hade en liten mängd ROM och en NMI-knapp. Genom att trycka på knappen överfördes kontrollen till programvaran i kringutrustningens ROM, vilket gjorde det möjligt för det avstängda programmet att sparas på disk (mycket användbart för bandbaserade spel utan diskstöd, men också för att spara pågående spel), skärmdumpar att sparas eller skrivas ut , eller värden i minnet som ska manipuleras - en fuskteknik för att skaffa extra liv, till exempel.

Inte alla datorer tillhandahåller en mekanism för att utlösa NMI; Men många maskiner (vanligtvis rackmonterade servrar) tillhandahåller en fysisk knapp speciellt för detta ändamål. Andra maskiner kan exponera denna funktionalitet via ett expansionskort.

Miles Gordon Technologys DISCiPLE och + D -produkter för ZX Spectrum innehöll en NMI-producerande "magisk knapp".

Nintendo Entertainment System genereras ett NMI under varje vertikalt släckintervall . Eftersom dessa NMI (ofta kallade "vblank-avbrott") inträffar med frekventa, regelbundna intervall, exekveras kod som manipulerar spelets grafik och ljud ofta i NMI-hanterarrutinen. Att rensa den 7:e biten i PPU:s $2000- register inaktiverar vblank-avbrott, och inställningen aktiverar dem.

Se även

Anteckningar

externa länkar