Université Saad Dahlab de Blida Faculté des Sciences Département d’Informatique Licence Génie des Systèmes Informatiques (GSI) Semestre 4 (2ème année) CHAPITRE III: INTERRUPTIONS S. AROUSSI Disponible sur https://sites.google.com/a/esi.dz/s-aroussi/ PLAN DU CHAPITRE III Introduction Définition d’une interruption Déroulement d’une routine d’interruption Types d’interruptions Registre d’interruption Détection d’une interruption Contexte du processus Recherche de la cause d’une interruption Systèmes d’interruptions hiérarchisées Système des interruptions du 8086 2 INTRODUCTION Sur une machine monoprocesseur, un seul programme (ou processus) est exécuté à la fois. Une autre composante peut demander à l’interrompre pour faire temporairement autre chose. Par exemple: Périphérique : un paquet réseau arrive, la souris a bougé Gestion erreur : erreur arithmétique, instruction invalide Il faut donc introduire un mécanisme matériel qui indique au processeur d’arrêter le traitement courant. Ce mécanisme s’appelle une interruption. 3 DÉFINITION DE L’INTERRUPTION Une interruption est un mécanisme qui permet d'interrompre l'exécution d'un processus suite à un événement extérieur ou intérieur et de passer le contrôle à une routine dite "routine d'interruption" ou traitement d’interruption. Le système d'interruption est un dispositif, incorporé au niveau du séquenceur, qui enregistre et traite les signaux d'interruption envoyés au processeur : 1. Arrêter le processus en cours ; 2. Sauvegarder le contexte du processus interrompu; 3. Exécuter le programme de routine d'interruption ; 4. Restaurer le contexte du processus interrompu; 5. Reprendre l'exécution du processus interrompu. 4 DÉROULEMENT D’UNE ROUTINE D’INTERRUPTION Donc, lorsque l'interruption se produit le processeur, après la fin de l'exécution de l'instruction en cours, transfère le contrôle à la routine d'interruption associée à l'événement. La routine d’interruption fait d’abord une sauvegarde du contexte du processus interrompu avant de réaliser son traitement. A la fin de celui-ci l, le contexte du processus interrompu est restauré ce qui lui permet de continuer son exécution convenablement à l’endroit où il a été interrompu. 5 DÉROULEMENT D’UNE ROUTINE D’INTERRUPTION 6 TYPES D’INTERRUPTIONS Les interruptions peuvent d’être d’origines diverses, mais on les classe généralement en trois grands types : Interruptions matérielles: prévient le processeur d’événements externes (top Horloge, touche clavier pressée, etc). Interruptions logicielles: est déclenchée suite à l’exécution d’une instruction d’appel d’une interruption système ou utilisateur (instruction INT en assembleur 8086; instruction read en pascal, etc) Déroutement (ou exception): suite à une erreur interne 7 du processeur (débordement, division par zéro, etc) TYPES D’INTERRUPTIONS (EXEMPLE) Le système d’interruption de IBM peut avoir 256 interruptions: Les interruptions logicielles regroupent des instructions spécifiques qui permettent d'appeler des fonctions du BIOS ou du système d'exploitation. Les déroutements sont au nombre de 6 et concernent : La division par zéro Le fonctionnement pas à pas (une interruption est générée à chaque instruction) Les problèmes pouvant apparaître lors de l'accès à la mémoire (défaut de page, par exemple) L'atteinte d'un point d'arrêt Le débordement numérique La non reconnaissance d'une instruction 8 TYPES D’INTERRUPTIONS (EXEMPLE) Les interruptions matérielles sont au nombre de 16. Elles sont baptisées IRQ 0 à 15 (IRQ: Interrupt ReQuest). Certaines sont pré-affectées, mais beaucoup d'entre elles ne sont affectées à des événements périphériques que lors de la configuration de la machine. 9 REGISTRE D’INTERRUPTION A chaque cause d’interruption, on associe un indicateur (un bit ou une bascule) : cela forme le registre d’interruption. 1 Interruption 1 0 Interruption 2 0 Interruption 3 1 Interruption 4 ….. 0 Interruption 5 Registre d’interruption 10 DÉTECTION D’UNE INTERRUPTION Supposant que le CPU possède une seule entrée interruption sur laquelle sont reçues les interruptions. Pour détecter la présence d’une interruption, le CPU teste, à la fin de chaque instruction, l’état de la Bascule d’Interruption (BI): Si BI est à « 1 », CPU remet à « 0 » la Bascule de Validation (BV) pour interdire à une autre interruption de venir la suspendre. CPU 1 0 BI ….. 11 BV 0 Registre d’Interrupt DÉTECTION D’UNE INTERRUPTION Lorsqu’une interruption est détectée, CPU procède aux opérations suivantes: 1. Sauvegarde le contexte du processus interrompu; 2. Recherche la cause de l’interruption 3. Exécution du programme de traitement de l'interruption ; 4. Restauration du contexte du processus interrompu; 5. Retour au programme interrompu avec revalidation du système d’interruption (remettre BV à 1). 12 CONTEXTE DU PROCESSUS Toutes les informations qui permettront à CPU de reprendre l’exécution du programme interrompu sont sauvegardés lorsqu’une une interruption est détectée. Ces informations sont: L’adresse de la prochaine instruction à exécuter, contenue dans le compteur ordinal (CO) Les indications sur l’état du CPU au moment de l’interruption données par le registre d’état (ou flags) Les opérandes et les résultats intermédiaires contenus dans les registres généraux. Ces informations représente l’état ou le contexte 13 du programme interrompu. CONTEXTE DU PROCESSUS Un mot d’état programme (Program Status Word ou PSW) regroupe l’adresse de la prochaine instruction (CO) et les bits de flag. Lorsque le traitement de l’interruption est terminé, le contexte du programme est restauré. Autrement dit, les informations sauvegardées sont chargés dans leurs registres respectifs 14 VECTORISATION DES INTERRUPTIONS A chaque interruption est associée l’adresse de la routine d’interruption correspondante dans une table appelée vecteur d’interruptions. 15 VECTORISATION DES INTERRUPTIONS (EXEMPLE) Suivant l’architecture d’Intel 8086, les interruptions sont classées dans un vecteur de 256 entrées: Chaque entrée occupe 4 octets et contient l’@ du programme associé à l’interruption : IP puis CS. Ce vecteur est placé dans la Mémoire Centrale à l’@ 00H et termine à l’@ 3FFH. 16 VECTORISATION DES INTERRUPTIONS (EXEMPLE) Le vecteur d’interruptions regroupe 3 catégories d’interruptions : 1. Interruptions réservées par Intel (matérielles et déroutements), à savoir, l’int 0, int 1, etc. 2. Interruptions réservées par le système d’exploitation, à savoir l’INT print screen, INT timer, etc. 3. Interruption l’utilisateur réservées afin qu’il à puisse définir ses propres interruptions suivant ses besoins. 17 RECHERCHE DE LA CAUSE D’INTERRUPTION Lors de l'occurrence d'une interruption, le processeur cherche la cause de l’interruption. Il reçoit alors un index qui pointe dans le vecteur d’interruptions. Cet index est généré par le processeur dans le cas des déroutements fourni par un circuit de la carte mère appelé contrôleur d'interruption dans le cas d'une interruption matérielle fourni par l'instruction dans le cas d'une interruption logicielle. Au vu de cet index, le processeur accède à l'entrée correspondante de la table d'interruption. 18 SYSTÈMES D’INTERRUPTIONS HIÉRARCHISÉES Dans système d'interruptions hiérarchisées, on associe aussi à chaque interruption, une priorité qui permet de regrouper les interruptions en classes ou niveaux. Chaque niveau est caractérisée par un degré d'urgence d'exécution de son programme d'interruption. Règle : Une interruption de niveau i est plus prioritaire qu'une interruption de niveau j si i j. L'intérêt d’un tel système est la solution de problèmes tels que : arrivée de plusieurs d'interruption pendant l'exécution d'une instruction, 19 arrivée d'une d'interruption pendant l'exécution du traitement d'une interruption précédente SYSTÈMES D’INTERRUPTIONS HIÉRARCHISÉES Masquer et démasquer une interruption: Certaines interruptions présentent tellement d'importance qu'il ne doit pas être possible d'interrompre leur traitement. On masquera alors les autres interruptions pour empêcher leur prise en compte. Certaines interruptions sont non-masquables : on les prend obligatoirement en compte. Une interruption masquée n'est pas ignorée : elle est prise en compte dès qu'elle est démasquée. Armer et Désarmer une interruption: Au contraire, une interruption peut être désarmée ou inhibée: elle sera ignorée et donc perdue. Par défaut, les interruptions sont évidemment armées. 20 SYSTÈMES D’INTERRUPTIONS HIÉRARCHISÉES Un système d’interruptions hiérarchisées comporte les éléments suivants: R.M.N: Registre de Mémorisation des Niveaux R.M.C.N.i: Registre de Mémorisation des Causes du Niveau i R.I.N.i: Registre d’Inhibition de Niveau i Exemple: Système d’interruptions à 4 niveaux 21 SYSTÈMES D’INTERRUPTIONS HIÉRARCHISÉES Un système d’interruptions hiérarchisées comporte les éléments suivants: Des registres d’inhibition(R.I.N.i) : à chaque niveau est associé un registre d’inhibition dans lequel une bascule est réservée pour chacune des causes de niveau Un registre masque (R.M.N): à chaque niveau est associée une bascule dans ce registre. Masquer un niveau d’interruptions revient à le bloquer momentanément. Une interruption qui pourrait survenir alors que son niveau est masqué ne peut pas être immédiatement prise en compte, mais elle est mémorisée. Elle est prise en compte dés que son niveau est démasqué par une 22 interruption appartement à u niveau non masqué. SYSTÈMES D’INTERRUPTIONS HIÉRARCHISÉES Un système d’interruptions hiérarchisées comporte les éléments suivants: Des registres d’inhibition (R.I.N.i) Un registre masque (R.M.N) Une bascule de validation (BV): permet de désactiver, lorsqu’elle est à « 0 » tout le système d’interruption. Les interruptions qui arrivent à CPU lorsque BV est à « 0 », ne sont pas perdues puisqu’elles sont mémorisées. Une bascule d’Interruption (BI): qui indique la présence d’une interruption. 23 SYSTÈMES D’INTERRUPTIONS HIÉRARCHISÉES Lorsqu’elle arrive à un point interruptible, l’unité centrale teste l’état de la bascule BI. Si elle est à « 1 », signifiant la présence d’au moins une interruption appartenant à un niveau non masqué, les opérations suivantes sont réalisées: 1. Désactivation du mécanisme d’interruption: la bascule BV est remise à « 0 » 2. Sauvegarde le contexte du programme courant: empiler le PSW et les registres généraux nécessaires. 3. Détermination du niveau de l’interruption: en testant les 24 bascule du registre niveau (R.M.N) dans l’ordre décroissant des priorités. SYSTÈMES D’INTERRUPTIONS HIÉRARCHISÉES 1. Désactivation du mécanisme d’interruption 2. Sauvegarde le contexte du programme courant 3. Détermination du niveau de l’interruption 4. Masquage des niveaux les moins prioritaires: en positionnant à « 0 » des bascules du registre masque correspondant aux niveaux qui doivent être démasqués. 5. Recherche de la cause de l’interruption: les bascules du registre de mémorisation des causes associé au niveau actif (R.M.C.N.i) sont testées dans un ordre qui définit la priorité entre les interruptions du niveau. 25 SYSTÈMES D’INTERRUPTIONS HIÉRARCHISÉES 1. Désactivation du mécanisme d’interruption 2. Sauvegarde le contexte du programme courant 3. Détermination du niveau de l’interruption 4. Masquage des niveaux les moins prioritaires 5. Recherche de la cause de l’interruption 6. Activation du mécanisme d’interruption: en remettant la bascule BV à 1 pour autoriser la prise en compte d’interruptions plus prioritaires 7. Chargement du contexte de programme de traitement de l’interruption dans l’unité centrale. 8. Traitement effectif de l’interruption. 26 SYSTÈMES D’INTERRUPTIONS HIÉRARCHISÉES 1. Désactivation du mécanisme d’interruption 2. Sauvegarde le contexte du programme courant 3. Détermination du niveau de l’interruption 4. Masquage des niveaux les moins prioritaires 5. Recherche de la cause de l’interruption 6. Activation du mécanisme d’interruption 7. Chargement du contexte de traitement de l’interruption. 8. Traitement effectif de l’interruption. 9. Acquittement de l’interruption: un accusé de réception est adressé au périphérique source de l’interruption. 27 10. Désactivation du système d’interruption (remise à « 0 » de BV) SYSTÈMES D’INTERRUPTIONS HIÉRARCHISÉES 1. Désactivation du mécanisme d’interruption 2. Sauvegarde le contexte du programme courant 3. Détermination du niveau de l’interruption 4. Masquage des niveaux les moins prioritaires 5. Recherche de la cause de l’interruption 6. Activation du mécanisme d’interruption 7. Chargement du contexte de traitement de l’interruption. 8. Traitement effectif de l’interruption. 9. Acquittement de l’interruption. 10. Désactivation du système d’interruption 11. Exécution de l’instruction de retour. Cette instruction a pour 28 effet de restaurer le contenu des registres sauvegardés et de réactiver le système d’interruption. EXERCICE 1 Soit une machine disposant d’un système d’interruption hiérarchisé. Ce système permet de recevoir 20 causes d’interruptions réparties sur 4 niveaux comme suit: Ce système permet de valide Niveau Cause Interruption 0 0 Panne de courant masquer un niveau et inhiber 1 IT contrôleur E/S une cause. 2, 3 Non utilisées 4 Non utilisée 5à7 IT contrôleur E/S 8 Non utilisée 9 à11 IT temps réel 12 à15 IT externe 16 à 19 Non utilisées ou d’invalider le système IT, 1 Questions: 1. Faire le schéma détaillé du 2 système IT en précisant dessus le contenu des principaux registres de démarrage 3 29 EXERCICE 1 2. Soit la séquence d’exécution suivante : A. Temps Programme Durée T Le système est libre T+5 Exécution d’un programme de niveau 3 20 T+10 IT de niveau 2 cause 9 10 T+12 IT de niveau 2 cause 11 8 T+15 IT de niveau 1 cause 5 5 Faire un schéma complet de la séquence jusqu’à l’exécution de tous les programme (numéroter chaque instant important) B. Indiquer le contenu de la pile et du registre masque à chaque instant 30 EXERCICE 2 Soit une machine disposant d’un système d’interruption hiérarchisé. Ce système permet de recevoir 12 causes d’interruptions réparties sur 4 niveaux comme suit: Ce système permet de valide Niveau Cause Interruption 0 0 Panne de courant 1 Inhibée 2 IT contrôleur E/S 3 Inhibée 4 IT matériel 5 IT contrôleur E/S ou d’invalider le système IT, masquer un niveau et inhiber 1 une cause. Questions: 1. Faire le schéma détaillé du 2 6 et 7 IT contrôleur E/S système IT en précisant dessus 3 8 IT contrôleur E/S 9 IT matériel 10 IT contrôleur E/S 11 Inhibée le contenu des principaux registres de démarrage 31 EXERCICE 2 2. Soit la séquence d’exécution suivante : A. Temps Programme Durée T Le système est libre T+5 Exécution d’un programme de niveau 3 20 T+10 IT de niveau 2 cause 6 10 T+12 IT de niveau 1 cause 4 8 T+15 IT de niveau 1 cause 7 5 Faire un schéma complet de la séquence jusqu’à l’exécution de tous les programme (numéroter chaque instant important) B. Indiquer le contenu de la pile et du registre masque à chaque instant 32 SYSTÈME DES INTERRUPTIONS DU 8086 Le microprocesseur 8086 peut gérer jusqu’à 256 interruptions: Les interruptions matérielles sont produites par l’activation des lignes INTR et NMI du processeur; Les interruptions logicielles sont produites par l’instruction INT n, où n est le type de l’interruption ; Les déroutements sont générées par le processeur. 33 SYSTÈME DES INTERRUPTIONS DU 8086 Il possèdent trois bornes pour gérer les interruptions matérielles : 8086 NMI est utilisée pour envoyer au processeur une interruption non masquable (NMI, Non Maskable Interrupt). Le processeur ne peut pas ignorer ce signal, et va la traiter immédiatement. Ce signal est normalement utilisé pour détecter des erreurs matérielles (mémoire principale défaillante par exemple) INTR (Interrupt Request), est utilisée pour indiquer l’arrivée 34 masquable. SYSTÈME DES INTERRUPTIONS DU 8086 Il possèdent trois bornes pour gérer les interruptions matérielles : 8086 NMI (Non Maskable Interrupt). INTR (Interrupt Request) INTA (Interrupt Acknowledge) si la demande d’interruption reçue sur INTR est acceptée, le processeur envoi l’acquittement (confirmation d’acceptation) de cette demande d’interruption sur cette ligne en injectant un 0). Cela permet aux périphériques de savoir35si leur demande d’interruption à été acceptée ou non par le processeur. SYSTÈME DES INTERRUPTIONS DU 8086 A un instant donné, les interruptions INTR sont soit masquées soit autorisées, suivant l’état de l’indicateur IF (Interrupt Flag) du registre d’état: Si IF = 1, le processeur accepte les demandes d’interruptions INTR, c’est à dire qu’il les traite immédiatement ; Si IF = 0, le processeur ignore ces interruptions. 36 SYSTÈME DES INTERRUPTIONS DU 8086 L’ordinateur est relié a plusieurs périphériques, alors qu’il n’y avait qu’un seul signal de demande d’interruption, INTR. Le contrôleur d’interruptions (PIC, pour Programmable Interruption Controler) est un circuit spécial, extérieur au processeur, dont le rôle est de distribuer et de mettre en attente les demandes d’interruptions provenant des différents périphériques. 8086 37 SYSTÈME DES INTERRUPTIONS DU 8086 Le contrôleur d’interruptions (PIC) est relié aux interfaces gérant les périphériques par les bornes IRQ (InteRrupt reQuest). Il gère les demandes d’interruption envoyées par les périphériques, de façon à les envoyer une par une au processeur (via INTR). Il est possible de programmer le contrôleur pour affecter des priorités différentes à chaque périphérique. Avant d’envoyer l’interruption suivante, le contrôleur attend d’avoir reçu le signal INTA, indiquant que le processeur a bien traité l’interruption en cours. 8086 38 SYSTÈME DES INTERRUPTIONS DU 8086 Déroulement d’une interruption externe masquable: Un signal INT est émis par un périphérique (ou plutôt par l’interface gérant celui-ci). Le contrôleur d’interruptions reçoit ce signal sur une de ses bornes IRQi. Dès que cela est possible (suivant les autres interruptions en attente de traitement), le contrôleur envoie un signal sur sa borne INT. 8086 39 SYSTÈME DES INTERRUPTIONS DU 8086 Déroulement d’une interruption externe masquable: Le processeur prend en compte le signal sur sa borne INTR après avoir achevé l’exécution de l’instruction en cours (ce qui peut prendre quelques cycles d’horloge). Si l’indicateur IF=0, le signal est ignoré, sinon, la demande d’interruption est acceptée. Si la demande est acceptée, le MPU met sa sortie INTA au niveau 0 pendant 2 cycles d’horloge, pour indiquer au contrôleur qu’il prend en compte sa demande. IF 8086 40 SYSTÈME DES INTERRUPTIONS DU 8086 Déroulement d’une interruption externe masquable: En réponse, le contrôleur d’interruption place le numéro de l’interruption associé à la borne IRQi sur le bus de données. Le processeur lit le numéro de l’interruption sur le bus de 8086 données et l’utilise pour trouver le vecteur d’interruption. Ensuite: sauvegarde les indicateurs du registre d’état sur la pile ; met l’indicateur IF à 0 (masque les interruptions suivantes) ; sauvegarde CS et IP sur la pile ; cherche dans la table des vecteurs d’interruptions l’adresse du traitant d’interruption, qu’il charge dans CS:IP. 41 SYSTÈME DES INTERRUPTIONS DU 8086 Déroulement d’une interruption externe masquable: La procédure traitant l’interruption se déroule. Pendant ce temps, les interruptions sont masquées (IF=0). Si le traitement est long, on peut dans certains cas ré-autoriser les interruptions avec l’instruction STI (positionner IF à 1). La procédure se termine par l’instruction IRET, qui restaure CS, IP et les indicateurs à partir de la pile, ce qui permet de reprendre le programme qui avait été interrompu. 42 SOURCES DE CE COURS Si Larabi Khelifati et Mouloud Koudil, Structure des ordinateurs, 2000. Mourad Loukam, Chapitre V : Gestion Des Entrees/Sorties Physiques, disponible sur www.loukam.net/2LMD_Chap5.pdf Eric Magarotto, Cours d'Informatique Industrielle, 2006, Disponible sur www.greyc.ensicaen.fr/˜emagarot/COURS.html Mohamed Feredj; Cours Architecture des ordinateurs (Archi II) , INTERRUPTIONS, 2011. Emmanuel Viennet, Architecture des ordinateurs, 2000, disponible sur www.insea.ma/download/coursarchi.pdf 43