Interruption non masquable - Non-maskable interrupt

En informatique , une interruption non masquable ( NMI ) est une interruption matérielle que les techniques de masquage d'interruption standard du système ne peuvent pas ignorer. Cela se produit généralement pour signaler des erreurs matérielles non récupérables . Certains NMI peuvent être masqués, mais uniquement en utilisant des méthodes propriétaires spécifiques au NMI particulier.

Une NMI est souvent utilisée lorsque le temps de réponse est critique ou lorsqu'une interruption ne doit jamais être désactivée pendant le fonctionnement normal du système. De telles utilisations incluent le signalement d'erreurs matérielles non récupérables, le débogage et le profilage du système et la gestion de cas particuliers tels que les réinitialisations du système.

Les architectures informatiques modernes utilisent généralement des NMI pour gérer les erreurs non récupérables qui nécessitent une attention immédiate. Par conséquent, de telles interruptions ne doivent pas être masquées dans le fonctionnement normal du système. Ces erreurs incluent des erreurs de chipset système internes non récupérables , une corruption de la mémoire système telle que des erreurs de parité et ECC , et une corruption de données détectée sur les bus système et périphériques.

Sur certains systèmes, un utilisateur d'ordinateur peut déclencher une NMI via des interfaces de débogage matérielle et logicielle et des boutons de réinitialisation du système.

Les programmeurs utilisent généralement des NMI de débogage pour diagnostiquer et corriger le code défectueux. Dans de tels cas, une NMI peut exécuter un gestionnaire d'interruptions qui transfère le contrôle à un programme de surveillance spécial. A partir de ce programme, un développeur peut inspecter la mémoire de la machine et examiner l'état interne du programme au moment de son interruption. Cela permet également le débogage ou le diagnostic des ordinateurs qui semblent bloqués .

Histoire

Dans les architectures plus anciennes, les NMI étaient utilisées pour les interruptions qui n'étaient généralement jamais désactivées en raison du temps de réponse requis. C'étaient des signaux cachés. Les exemples incluent le contrôleur de disquette sur l' Amstrad PCW , le coprocesseur 8087 sur le x86 lorsqu'il est utilisé dans le PC IBM ou ses compatibles (même si Intel a recommandé de le connecter à une interruption normale), et le signal de batterie faible sur le HP 95LX .

Dans le PC IBM d' origine , une NMI était déclenchée si une erreur de parité était détectée dans la mémoire système ou signalée par un périphérique externe. Dans les deux cas, le PC afficherait un message d'erreur et s'arrêterait. Certains clones de PC ultérieurs utilisaient un NMI pour masquer les différences matérielles par rapport à celui d'un PC standard. Sur de tels ordinateurs, une NMI serait générée lorsqu'un programme tentait d'accéder à du matériel incompatible. Un gestionnaire d'interruptions du BIOS traduirait alors la demande du programme pour qu'elle corresponde au matériel réellement présent. Le SMM du 386SL est un meilleur moyen de le faire.

Certains ordinateurs domestiques 8 bits utilisaient la ligne NMI pour permettre un "démarrage à chaud" si le système s'était verrouillé. Typiquement, cela restaurerait les registres de contrôle aux bonnes valeurs connues stockées dans la ROM , sans détruire les données que l'utilisateur pourrait avoir actuellement chargées. Sur les machines Commodore 8 bits, la clé RESTORE était connectée directement ou indirectement à la ligne NMI sur le processeur série 6502 , mais la réinitialisation n'aurait lieu que si la routine de gestion NMI dans la ROM détectait que RUN/STOP était également en cours. maintenu enfoncé lorsque RESTORE a été frappé (cette combinaison étant la version Commodore d'un salut à trois doigts ). Commodore a également connecté la technologie MOS 6526 CIA #2 dans le C64 et le C128 à la ligne NMI du processeur, qui faisait partie des moyens par lesquels l'émulation logicielle du 6551 ACIA a été accomplie. La ligne 8 bits d' Atari utilisait un bouton SYSTEM RESET dans le même but.

Les NMI de débogage sont apparues sous un certain nombre de formes, y compris le "bouton des programmeurs" d' Apple Macintosh et certaines combinaisons de touches sur les stations de travail Sun. Avec l'introduction de Windows 2000 , Microsoft a autorisé l'utilisation d'un NMI pour qu'un système soit soit piraté dans un débogueur , soit vide le contenu de la mémoire sur le disque et redémarré.

Les NMI de débogage ont également été utilisées par des appareils qui permettent aux utilisateurs de loisirs et aux joueurs de manipuler des programmes en cours d'exécution. Les appareils qui ajoutaient un bouton pour générer un NMI, tels que le Multiface de Romantic Robot , étaient un accessoire populaire pour les ordinateurs personnels 8 bits et 16 bits des années 1980. Ces périphériques avaient une petite quantité de ROM et un bouton NMI. En appuyant sur le bouton, le contrôle est transféré au logiciel dans la ROM du périphérique, permettant de sauvegarder le programme suspendu sur le disque (très utile pour les jeux sur bande sans support de disque, mais aussi pour sauvegarder les jeux en cours), les captures d'écran à enregistrer ou à imprimer , ou des valeurs en mémoire à manipuler - une technique de triche pour acquérir des vies supplémentaires, par exemple.

Tous les ordinateurs ne fournissent pas de mécanisme pour déclencher les NMI ; cependant, de nombreuses machines (généralement des serveurs montés en rack ) fournissent un bouton physique spécifiquement à cet effet. D'autres machines peuvent exposer cette fonctionnalité via une carte d'extension.

Miles Gordon Technology « s Disciple et + D produits pour le ZX Spectrum en vedette un « bouton magique » produisant des INM.

Sur la Nintendo Entertainment System , un NMI est généré pendant chaque intervalle de suppression verticale . Étant donné que ces NMI (souvent appelées « interruptions vblank ») se produisent à intervalles réguliers et fréquents, le code qui manipule les graphiques et l'audio du jeu est souvent exécuté à l'intérieur de la routine du gestionnaire NMI. L'effacement du 7ème bit du registre $ 2000 du PPU désactive les interruptions vblank et le réglage les active.

Voir également

Remarques

Liens externes