Beruflich Dokumente
Kultur Dokumente
Interruptions
Sommaire
Dénition 3.1 (Interruption). Une interruption est un signal déclenché par un événement in-
terne à la machine ou externe (envoyé au microprocesseur par un périphérique ou un programme)
pour l'avertir d'un évènement à traiter. Le microprocesseur suspend alors l'éxécution en cours à la
n de l' opération courante pour réagir à cet évènement et le traiter (le plus souvent, éxécution d'une
routine ). Une fois la tâche eectuée, il reprend le cours normal de ses opérations à l' endroit où il
avait été interrompu. ■
La plupart des fonctionnalités incluses dans un PC sont physiquement supportées par des compo-
sants autres que le microprocesseur. Par exemple, la communication série est assurée par un UART
16550 (situé dans un ASIC sur la carte mère), ou bien le clavier est controlé par un microcontrolleur
de type 8042. Puisque chaque périphérique (ici interne) travaille individuellement, il est nécessaire
de synchroniser toutes leurs opérations, notamment leurs échanges avec le microprocesseur. Une so-
lution pour ce dernier, consiste à interroger relativement fréquemment l'état de chaque composant.
Il s'agit de la scrutation ou polling.
43
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
Chapitre 3. Interruptions
Cette méthode est (évidemment) coûteuse en temps et possède pour inconvénient majeur de
monopoliser le microprocesseur (qui n'a plus de temps à consacrer à ses autres activités). De plus,
lorsque le ot des données est élevé, le microprocesseur peut perdre certaines données.
Une alternative consiste à utiliser des interruptions appelées logicielles. Elle possèdent la par-
ticularité d'être synchrones. En eet, elles sont générées par le microprocesseur lorsqu'il rencontre
une instruction de type INT. Ce type d'interruption est plutôt utilisé par le système d'exploita-
tion. Certaines interruptions logicielles sont appelées exceptions (fault, trap and abort). Elles sont
générées par le microprocesseur en présence d'une erreur critique interne.
En résumé, on distingue :
les interruptions (hardware) internes dites processeur : protection du système et des proces-
sus, appelées par une instruction à l'intérieur d'un programme (overow, erreur d'adressage,
code opération inexistant, problème de parité . . . ) ;
les interruptions (software) dites logicielles : permet à un processus utilisateur de faire un
appel au système. Elles sont produites par l'instruction INT n où "n" est le type de l'inter-
ruption.
les interruptions (hardware) externes dites matérielles déclenchées par une unité électronique
(lecteur, clavier, canal, contrôleur de périphérique, panne de courant, . . . ) ou par l'horloge.
Elles sont produites par l'activation des lignes INTR et NMI du microprocesseur.
44
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
3.2. Système d'interruptions hiérarchisées
45
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
Chapitre 3. Interruptions
Les interruptions externes matérielles sont dues aux périphériques (imprimante, terminal, hor-
loge externe, etc.) ou à des dispositifs extérieurs au système informatique (capteurs, système d'alarme,
etc.). Par exemple un périphérique va générer une interruption pour signaler au système qu'il a ter-
miné de traiter la requête précédente et qu'il est prêt pour recevoir une nouvelle commande. Dans
le contexte de contrôle de processus, des phénomènes physiques doivent être signalés au système,
par exemple le passage d'un objet devant un détecteur. Dans ce cas c'est le dispositif externe au
système qui émet un signal qui est reçu par le système comme une interruption. Le programme cou-
rant lui-même peut déclencher une interruption à l'aide d'une instruction spéciale. Cela permet, par
exemple, d'activer certains services du système qui nécessitent de bénécier de privilèges réservés
au système. C'est une interruption externe et logicielle.
Les interruptions internes produites par le processeur, sur des erreurs par exemple (division par
zéro, dépassement de capacité, erreur d'adressage, accès à une zone de mémoire protégée, etc.). Ces
interruptions sont généralement appelées exceptions. Les interruptions induites par l'horloge per-
mettent la gestion du temps par le système d'exploitation. Par exemple, le système peut programmer
l'horloge pour que celle-ci génère une interruption toutes les 10 ms. A chacune de ces interruptions
le système peut reprendre la main et exécuter un algorithme de choix de tâches (ordonnanceur) de
manière à éviter qu'un programme monopolise le CPU. Ces interruptions peuvent également servir
à la gestion du temps dans les programmes et pour la comptabilité.
46
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
3.4. Mécanisme d'interruption
peut être par exemple un pointeur dans une table contenant le vecteur d'interruption de chaque
routine de service. Un vecteur d'interruption contient l'adresse de début de la procédure
de traitement de l'interruption et le registre d'état du processeur nécessaire au début du
traitement. Celui-ci, qui peut contenir certains niveaux de privilèges nécessaires au traitement
de la requête, remplace le registre d'état courant, après que ce dernier ait été sauvegardé dans
la pile avec le reste du contexte du programme interrompu. Le traitement de l'interruption,
qui débute à la première instruction spécique à l'interruption, est donc plus rapide. Dans
ce schéma une routine de service peut elle-même être interrompue. La technique précédente
nécessite un mécanisme pour empêcher deux périphériques d'écrire leur code simultanément
sur le bus. Il est également possible de chaîner les périphériques. La priorité est alors dénie
par la position du périphérique sur la ligne d'interruption : câblage en daisy-chain.
47
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
Chapitre 3. Interruptions
Lors d'une interruption, le processeur se sert de la table des vecteurs (IVT) décrites à la gure 3.3.
Cette table démarre à l'adresse 0 de la mémoire. Elle contient les adresses des routines d'interruptions
(ISR) sur 4 octets (16 bits pour le segment,16 bits pour le déplacement) et les valeurs de ces quatres
octets sont chargés dans les registres CS :IP. Chaque élément contient l'adresse de début d'un
programme d'interruption sur 4 octets (oset 2 octets, segment 2 octets). La taille de la table est
donc de 4 x 256 = 1 Ko. Elle occupe les adresses 0h à 3FFh en mémoire centrale. Le tableau 3.1
donne le détails des interruptions.
48
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
3.5. Le PIC 8259
nombre de registres. Dans certaines architectures, en particulier celles orientées vers les applications
temps réel, un processeur supplémentaire peut être associé au processeur principal avec pour tâche
de gérer les opérations d'entrées/sorties et de ltrer les interruptions.
Les périphériques PCI peuvent partager les mêmes IRQ parce qu'au démarrage du PC, le BIOS
construit une table appelée PCI IRQ routing table. Cette table contient les entrées de chaque
périphérique PCI qui se verra attribuer un numéro d'IRQ ISA (les numéros de 0 à 15). Ces as-
signations d'IRQ ISA sont aussi liées, par construction matérielle cette fois, aux lignes physiques
d'interruptions PCI associées aux diérents connecteurs PCI d'un PC donné.
L'ensemble des 2 se combine en ce qui s'appelle un Link Value. Ce dernier est utilisé à chaque
fois qu'une communication s'établit avec un périphérique, et bien que des périphériques puissent
partager une même IRQ, ils auront tous un unique Link Value : il n'y a donc pas d'erreur possible !
49
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
Chapitre 3. Interruptions
50
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
3.5. Le PIC 8259
Le premier est implanté aux adresses d'E/S 0x20 à 0x2F tandis que le second est implanté aux
adresses d'E/S OxA0 à 0xAF.
Chaque circuit permet la gestion de 8 interruptions et gère :
la vectorisation avec les processeurs 80x86 ;
le déclenchement d'IT sur niveaux ou fronts ;
les priorités des interruptions ;
les masques d'interruptions.
Le microprocesseur (8086) dispose de trois lignes d'interruptions (matérielles) :
L'interruption NON MASQUABLE (NMI) : cette interruption ne peut pas être masquée, elle
n'est pas prise en charge par le bit "I" du registre de Flags ;
Les interruptions MASQUABLES (INTR : INTerrupt Request) : ces interruptions peuvent
être invalidées par le bit "I" du registre de Flags. On trouve aussi INTA (INTerrupt Acknowledgement)
qui signie que le microprocesseur a bien reçu par le bus de données le numéro d'IT envoyé
par le contrôleur ;
La broche RESET, provoque une réinitialisation du processeur (un reboot de la machine).
51
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
Chapitre 3. Interruptions
La première chose a faire est de programmer le registre OCW1 de chaque PIC (PIC1 : adresse
0x21 et PIC2 : adresse 0xA1) pour signier quelles vont être les IRQ masquables ou non en utilisant
les tableaux ?? et ??.
52
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
3.5. Le PIC 8259
53
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
Chapitre 3. Interruptions
54
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
3.7. Interruptions Logicielles
struct WORDREGS {
unsigned int ax, bx, cx, dx ;
unsigned int si, di, cag, ags ;
};
55
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
Chapitre 3. Interruptions
Un programme est dit résident si, une fois son exécution terminée, il rend le contrôle à l'en-
vironnement appelant mais reste chargé en mémoire. Il pourra alors être réactivé à tout moment,
notamment à l'aide d'une interruption. Lorsqu'il se termine, l'espace mémoire qu'il occupait n'est
pas libéré par le système d'exploitation. Un programme résidant s'écrit comme un autre programme,
il sut que la dernière instruction exécutée soit un appel à la fonction 0x31 (fonction dite TSR :
Terminate and Stay Resident) de l'interruption DOS 0x21.
Remarque 3.3. MS-DOS n'a pas été conçu pour exécuter plusieurs choses à la fois et en particulier
plusieurs appels au système (il n'est pas multi-tâches). Donc, si le programme qui s'exécute en avant-
plan utilise un service de MS-DOS, il ne faut pas que le programme de traitement de l'IT appelle
le même service, sinon c'est généralement le plantage. ■
56
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
3.8. La programmation des interruptions
La fonction biosprint(int cmd, char octet, int port) appele la routine cmd de l'IT 0x18. octet
représente l'octet à écrire si cmd = 0, port donne le numéro du port parallèle.
La fonction biostime(int cmd, long newtime) appele la fonction cmd de l'IT 0x1A. newtime
contient la nouvelle heure en nombre de battements si cmd = 1.
Il existe en C le type interrupt. Lorsqu'une fonction est déclarée de ce type, C va générer du
code pour sauver les registres en début d'exécution et pour terminer la routine avec l'instruction
57
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
Chapitre 3. Interruptions
IRET signalant le retour d'une interruption. La routine de service doit éviter un appel aux routines
système car le DOS n'est pas réentrant.
Pour réaliser un traitant d'interruption (handler), on dispose de 2 fonctions utiles comme
setvect( ) qui modie le contenu d'un vecteur et getvect( ) qui lit la valeur d'un vecteur. On
dispose aussi de 2 macros disable( ) qui met en attente de traitement tous les signaux d'interruption
et enable( ) qui autorise à nouveau le traitement des interruptions.
La fonction setvect(int num, void interrupt (*f) ( )) insère la fonction f en tant que routine de
service de l'IT num. Pour éviter cette opération, il faut éviter d'être interrompu. Il faut donc faire
précéder l'appel à setvect d'un appel à disable( ) qui masquera toutes les IT. Ensuite, un appel à
enable( ) rendra à nouveau possible l'interruption du programme.
58
Chapitre 4
Port Parallèle
Sommaire
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2 Modes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.3 Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.1 Introduction
Un port parallèle comprend 8 canaux permettant d'envoyer simultanément les huit bits qui
constituent un octet par l'intermédiaire des 8 ls. C'est une interface relativement rapide (par
rapport au port série) qui est traditionnellement utilisée pour les imprimantes. Le seul problème
posé par le port parallèle est qu'il ne peut guère être utilisé avec des câbles longs sans amplier le
signal, au risque de provoquer des erreurs de données. En eet, la longueur ocielle est limitée à
trois mètres sans perte de données. En fait, il est possible de dépasser cette longueur en veillant à
certains points (le câble doit posséder un bon blindage, la présence de transformateur ou autre source
électromagnétique à proximité du câble peuvent générer toutes sortes de dysfonctionnements). Le
Port parallèle a subi plusieurs évolutions :
Port parallèle standard (SPP) : les premiers PC n'étaient pas équipés de diérents types de
ports parallèles. Le seul port parallèle disponible était celui qui servait à envoyer des infor-
mations de l'ordinateur à un périphérique tel qu'une imprimante. Le caractèreunidirectionnel
du port parallèle du PC original était justié par son rôle premier, qui était d'envoyer des
informations à l'imprimante. Il travaillait en mode nibble (envoi de 4 bits à la fois). Par un
procédé astucieux, ce port était cependant capable d'eectuer des connexions de sortie de 8
bits et des connexions d'entrée de 4 bits. Les ports parallèles standard sont capables d'eec-
tuer des connexions à un taux de transfert eectif d'environ 150 Ko/s en sortie et 50 Ko/s en
entrée.
Port parallèle bidirectionnel (BPP) : en 1987, IBM lança le port parallèle complètement 8
bits (en sortie comme en entrée) donc un taux de transfert d'environ 150 Ko/s en entrée et
en sortie.
Port parallèle amélioré (EPP) : le port EPP (Enhanced Parallel Port) correspond à une nou-
velle spécication et est parfois appelé port parallèle mode rapide. Paru en 1991, ce type de
port fonctionne quasiment à la vitesse d'un bus ISA. Ce port permet d'atteindre un débit de
2Mo/s.
59
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
Chapitre 4. Port Parallèle
Port parallèle à capacité améliorées (ECP) : le port ECP (Enhanced Capabilities Port) a
été sorti en 1992. Tout comme le port EPP, ce port constitue une version améliorée du port
parallèle standard et requiert un circuit logique spécial. Le port ECP très performant requiert
cependant un canal DMA ce qui peut provoquer des conits avec d'autres périphériques qui
utiliserait un canal DMA. Les nouveaux ordinateurs sont généralement fournis avec des ports
ECP permettant d'eectuer des communications à haut débit. La plupart du temps, les ports
ECP peuvent être convertis en port EPP ou en port parallèle standards par l'intermédiaire du
BIOS (au setup). Il est seulement préférable de placer ce port en mode EPP pour bénécier
d'un débit maximal.
La diérence principale entre EPP et ECP se situe dans le fait que EPP génère et contrôle tous
les transferts vers et depuis le périphérique tandis que ECP nécessite que le périphérique négocie le
mode reverse et contrôle le protocole (utilisation d'un controlleur dédié à l'utilisation du port ECP).
60
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
4.1. Introduction
4.1.3 Signaux
STROBE : cette ligne active à l'état bas indique à l'imprimante que des données sont présentes
sur les lignes D0 à D7 et qu'il faut les prendre en compte.
ACK : l'imprimante met à 0 cette ligne pour indiquer à l'ordinateur qu'elle a bien reçu le
caractère transmis et que ce dernier peut continuer la transmission.
BUSY : cette ligne est mise à 0 par l'imprimante lorsque son buer de réception est plein.
L'ordinateur est ainsi averti que celle-ci ne peut plus recevoir de données. Il doit attendre que
cette ligne revienne à 1 pour recommencer à émettre.
PAPER OUT : l'imprimante indique par cette ligne à l'ordinateur que l'alimentation en papier
a été interrompue.
SELECT : cette ligne indique à l'ordinateur si l'imprimante est on line ou o line.
AUTOLINEFEED : lorsque ce signal est à 1, l'imprimante doit eectuer un saut de ligne à
chaque caractère return reçu. En eet, certaines imprimantes se contentent d'eectuer un
simple retour du chariot en présence de ce caractère.
ERROR : indique à l'ordinateur que l'imprimante a détecté une erreur. INIT-RESET : l'or-
dinateur peut eectuer une initialisation de l'imprimante par l'intermédiaire de cette ligne.
SELECT IN : l'ordinateur peut mettre l'imprimante hors ligne par l'intermédiaire de ce signal.
GND : c'est la masse du PC.
61
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
Chapitre 4. Port Parallèle
4.1.4 Protocole
Voici un exemple de dialogue entre un PC et une imprimante :
62
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
4.2. Modes de fonctionnement
registre de commande : il garde l'état de quatre bits (C0 à C3) qui sont habituellement utilisés
comme sorties.
L'adresse de base pour le port LPT1 est habituellement 0x378 (0x278 pour LPT2)
Oset Reg. R/W bit fonc. Oset Reg. R/W bit fonc. Oset Reg. R/W bit fonc.
Base+0 Données W 7 D7 Base+1 Etat R 7 busy Base+2 Commande R/W 7 inutilisé
6 D6 6 ack 6 inutilisé
5 D5 5 paper out 5 bidirectionnel
4 D4 4 select in 4 IRQ via Ack
3 D3 3 error 3 selec printer
2 D2 2 IRQ 2 reset printer
1 D1 1 reservé 1 auto linefeed
0 D0 0 reservé 0 strobe
Pour gagner du temps au niveau du protocole, on a ignoré l'accusé de réception ACK. De plus,
dans ce mode, c'est le hardware qui eectue la totalité du Handshaking a votre place. La seule
chose qui incombe au programmeur est d'écrire l'octet de données sur le port. Ce mode permet
des transferts rapides d'octets dans les deux directions. Les signaux de protocole d'accord font la
distinction entre transfert de données et d'adresse. Il possède des registres supplémentaires (voir
tableau ??).
63
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
Chapitre 4. Port Parallèle
Le mode EPP permet des transferts à haute vitesse dans les deux sens. Comme il peut com-
muter rapidement le sens de transfert, le port EPP est utile pour des dispositifs qui échangent des
petits blocs de données avec de fréquents changements de direction, tels que lecteurs de disques
externes ou interfaces de réseaux. Un port EPP fait la distinction entre deux types d'informations,
habituellement dénis comme données et adresses. Le mode EPP permet quatre opérations : écri-
ture d'adresse (gure ??), écriture de données (gure ??), lecture d'adresses (gure ??), lecture de
données (gure ??), chacune ayant un protocole d'accord diérent. Les transferts EPP dièrent du
mode SPP par le fait que les circuits du port génèrent automatiquement des signaux de contrôle et
détectent les réponses venant de l'autre extrémité. Il n'est donc pas nécessaire d'instructions par un
logiciel pour charger l'état du signal de sortie Strobe ou pour lire une entrée occupée. Les opérations
de donnée et d'adresse en mode EPP utilisent diérents signaux de contrôle pour verrouiller les oc-
tets dans le dispositif de réception. Écritures et lectures d'adresse utilisent nAStrobe (C3), lectures
et écritures de données utilisent nDStrobe (C1) : ceci est un moyen simple pour que le récepteur
fasse la distinction entre les deux types d'information. Un port EPP utilise 8 registres (tableau 5),
cinq de plus que le port original SPP.
64
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
4.2. Modes de fonctionnement
Le mode ECP permet également le transfert rapide de données dans les deux sens. Il comporte
un tampon FIFO de 16 octets pour garder les données à envoyer et les données reçues. Pour les
transferts les plus rapides, le port ECP peut compresser les données pour conditionner l'information
en moins d'octets. L'accès direct à la mémoire (DMA) permet à l'unité centrale de faire d'autres
actions pendant que les données sont transmises entre le tampon et la mémoire. En plus d'être
rapide, les transferts en mode ECP sont exibles : ils peuvent s'accommoder à des périphériques
plus lents, parce que le protocole d'accord n'a pas de timeout automatique. Les signaux de protocole
d'accord font la distinction entre données et signaux de contrôle. Un octet de contrôle peut contenir
une adresse ou une information de compression de données. Du côté de l'hôte, le port ECP contient
un tampon FIFO de 16 octets qui stocke les données à envoyer et les données reçues. L'unité centrale
(CPU) peut écrire une série d'octets dans le tampon et les circuits du port veillent à les écrire dans la
même séquence sur les sorties Données du port. Dans le sens opposé, les tampons stockent une série
d'octets reçus et la CPU lit chaque octet avant que le suivant n'arrive. Si le PC envoie des données
vers un périphérique lent, le PC peut écrire jusqu'à 16 octets dans le tampon FIFO et faire d'autres
choses ensuite. Le port ECP transférera les données automatiquement lorsque le périphérique sera
prêt. De même, si un périphérique rapide veut envoyer des données vers un PC, le tampon FIFO
du PC en stocke jusqu'à 16 octets de données reçus, que le PC pourra lire à son gré.
65
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
Chapitre 4. Port Parallèle
4.3 Programmation
Le paramétrage des ports parallèles est beaucoup plus simple que celui des ports sériels. En
standard, le PC est équipé d'un seul port parallèle, mais il serait tout à fait possible d'en rajouter
un second. Dans la plupart des BIOS, une interruption est d'ailleurs réservée d'oce à cet eet,
que le port soit présent ou non. Dans de nombreux cas, le second port est désactivé et l'IRQ 5 est
réutilisée pour un autre composant.
66
CM_InfoIndus:version du mardi 25 octobre 2005 à 3 h 15
4.3. Programmation
67