• Aucun résultat trouvé

Interfaçage et stratégies Entrées / Sorties

Évaluation de l’unité

Unité 4 Interfaçage et stratégies Entrées / Sorties

Introduction à l’unité

Les Entrées/Sorties désignent l’ensemble des transferts de données qui permettent au microprocesseur et à la mémoire de communiquer avec le monde extérieur. Une entrée est une donnée allant du monde extérieur vers le microprocesseur. Une sortie est une donnée allant du microprocesseur vers le monde extérieur. Un périphérique est un appareil qui interagit avec le microprocesseur et la mémoire. Certains périphériques sont branchés à l’intérieur de l’ordinateur (disques durs, carte réseau,…) alors que d’autres sont branchés sur des interfaces externes de l’ordinateur (clavier, écrans, souris, etc.).

• Les Entrées/Sorties proviennent des périphériques.

• Le traitement des E/S est complexe pour plusieurs raisons:

• Les périphériques ont des modes de fonctionnement variés.

• Les périphériques ont souvent leur propre format de données.

• Les périphériques ne vont pas à la même vitesse que le processeur. Beaucoup sont très lents par rapport à ce dernier alors que certains sont plus rapides.

Pour chaque périphérique, il existe une unité spéciale appelée module d’E/S qui sert d’interface entre le périphérique et le microprocesseur

Objectifs de l’unité

À la fin de cette unité, vous devriez être capable de:

• Démontrer les modes de l’interaction entre le processeur et les interfaces d’E/S ;

• Connaître l’organisation de l’interface I / O ;

• Identifier les techniques de transfert de données entre le processeur et les modules d’entrée-sorties.

TERMES DES

Une interruption est un arrêt temporaire de l’exécution normale d’un programme informatique par le microprocesseur afin d’exécuter un autre programme.

Le contrôleur d’interruptions 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.

Activités d’apprentissage

Activité 1 - Principes fondamentaux des E/S : Transfert et tamponnage

Introduction

Détails de l’activité

Les modules d’E/S sont des interfaces entre le microprocesseur et un périphérique spécifique.

Ces modules sont habituellement appelés « contrôleur ».

Par exemple, le module d’E/S servant d’interface entre le microprocesseur et un disque dur sera appelé contrôleur de disque.

Les modules d’E/S ont plusieurs fonctions dont les principales sont:

• Lire ou écrire des données du périphérique.

• Lire ou écrire des données du Microprocesseur/Mémoire. Cela implique du décodage d’adresses, de données et de lignes de contrôle. Certains modules d’E/S doivent générer des interruptions ou accéder directement à la mémoire.

• Contrôler le périphérique et lui faire exécuter des séquences de tâches.

• Tester le périphérique et détecter des erreurs.

• Mettre certaines données du périphérique ou du microprocesseur en mémoire tampon afin d’ajuster les vitesses de communication.

Les principes des entrées /sorties

• Le premier principe est celui d’indépendance par rapport au matériel, le

programme doit accéder à n’importe quel périphérique d’entrée/sorties sans que l’on ait à préciser le type de périphérique.

• Le second principe est celui de désignation universelle, le nom d’un fichier ou d’un périphérique doit être une chaîne simple et ne pas dépendre du type de périphérique.

• Le troisième principe concerne la gestion des erreurs, elle doit être aussi près du matériel que possible.

Si le contrôleur détecte une erreur de lecture, il essaie d’abord de la corriger lui-même, s’il ne peut pas, c’est le pilote qui la gère (en redemandant la lecture par exemple dans le cas d’une poussière...), si le pilote échoue, il en informe la couche logicielle supérieure qui gère alors l’interruption.

On distingue les transferts synchrones, bloquant le processeur, et les transferts asynchrones qui libèrent le processeur dès que le transfert est commencé.

En général, un programme utilisateur doit être suspendu jusqu’à ce que sa requête d’entrée/

sortie soit réalisée, c’est le système d’exploitation qui assure que les opérations engendrées par les interruptions paraissent bloquantes pour les programmes utilisateurs.

Un autre principe des logiciels d’entrées /sorties est l’usage d’une mémoire tampon pour stocker les données, pour examiner de façon globale le transfert (pour décider où le placer par exemple), pour des contraintes de temps réel (son)...

Enfin, on distingue les périphériques partageables (disque), et les périphériques dédiés ou non partageables (imprimante), le système d’exploitation doit pouvoir gérer les périphériques non partageables sans inter blocage.

Les techniques pour communiquer avec les périphériques

Il existe plusieurs techniques pour communiquer à partir du CPU/Mémoire vers un périphérique à travers un module d’E/S.

Les trois principales techniques sont les E/S programmées, les E/S avec interruptions et le DMA.

Les E/S programmées

Il consiste à un échange de données entre le processeur et le module E/S. Le programme contrôle totalement l’opération durant toute sa durée. Il doit attendre la fin de l’opération avec pour inconvénient une perte de temps.

Un module E/S peut recevoir quatre types de commandes du processeur :

• Control : Active le périphérique et lui indique ce qu’il doit faire

• Test : Teste les différentes conditions d’état (alimenté, prêt, …)

• Read : Lecture des données du périphérique et placement le tampon du module E/S

• Write : Transmission d’une donnée provenant du processeur au périphérique via le bus système

Les E/S avec interruptions

1. Le processeur émet une commande puis exécute un autre travail

2. Quand le module E/S a traité la commande, il émet une requête de service 3. Le processeur interrompt son travail

Du point de vue du module E/S:

• Entrée : réception d’une commande du processeur

• Lecture des données du périphérique

• Écriture de la donnée dans le tampon (registre de données)

• Interruption transmise au processeur (via ligne de contrôle du bus système)

• Attente que le processeur réclame la donnée

• Le module place la donnée sur le bus

Du point de vue du processeur

• Émission d’une commande

• Exécution d’une ou plusieurs tâches

• À la fin de chaque cycle d’instructions, test des interruptions

• S’il y a une requête, il sauvegarde le contexte du programme en cours

• Stockage des données transmises dans la mémoire interne

• Restauration du contexte du programme interrompu

Les interruptions peuvent venir de plusieurs modules

• quel module a envoyé quelle interruption ?

• ordonner les interruptions qui arrivent en même temps (priorités affectées aux périphériques)

• Les E/S gérées par interruption demandent néanmoins une intervention active du processeur

• Le transfert des données doit passer par le processeur

• Le débit de transfert est donc limité par la vitesse à laquelle le processeur teste et sert un périphérique

• Le processeur est occupé à gérer chaque transfert E/S

• à l’accès direct à la mémoire est utile pour le transfert de gros volumes de données

Accès DMA ou Direct Memory Access

L’accès direct à la mémoire ou Direct Memory Access (DMA) est un transfert de données direct entre un périphérique et la mémoire ou vice versa, effectué sans intervention du microprocesseur.

Le contrôleur de DMA est un circuit intégré qui gère le transfert par DMA.

Le transfert par DMA se fait par bloc de données, les données étant à des adresses contigües de la mémoire et provenant habituellement du même périphérique.

Les transferts par DMA sont configurés par des instructions de la mémoire exécutées par le microprocesseur. Habituellement, le microprocesseur configure le transfert de DMA en exécutant ces instructions. Au minimum, les instructions configureront:

La plage de mémoire visée par le transfert de données (l’adresse de départ et le nombre de données à transférer).

Le périphérique visé par le DMA

La vitesse de transfert, la taille des données transférées et le mode de transfert (la façon dont sera déclenché le transfert, seul le mode de transfert “unique” –un seul bloc de données- sera vu dans le cadre du cours).

Une fois le transfert configuré, le transfert par DMA débute automatiquement lors d’un signal de périphérique ou lors que le microprocesseur exécute une instruction initiant le transfert, en fonction du mode de transfert.

Lors de l’initialisation d’un transfert par DMA, le contrôleur de DMA négocie l’accès au bus de données avec le microprocesseur d’adresse et de données pour effectuer le transfert.

Le microcontrôleur et le contrôleur de DMA ne peuvent contrôler les bus en même temps.

Le transfert s’effectue habituellement avec un compteur sur le bus d’adresse.

Lors du transfert de chaque donnée, le compteur d’adresse est incrémenté à partir de l’adresse de base du bloc de mémoire visé.

Le contrôleur de DMA possède souvent un tampon de mémoire pour emmagasiner les données échangées entre la mémoire et un périphérique.

Le transfert se fait en deux temps: lecture de données puis écriture de données.

Le transfert par DMA est beaucoup plus rapide que le transfert avec des instructions MOV ou IN/OUT et il soulage le microprocesseur de cette tâche:

Entre le transfert de chaque donnée, le microprocesseur n’a pas à lire et exécuter des instructions.

Le transfert se fait par bloc, directement de la mémoire au périphérique ou vice versa: les données ne sont pas entreposées temporairement dans des registres du microprocesseur.

Pendant le transfert, le microprocesseur peut effectuer d’autres tâches.

Dans les systèmes modernes, le microprocesseur n’est pas pausé pendant le transfert par DMA.

Plusieurs stratégies peuvent permettre l’exécution d’instructions même si le contrôleur de DMA contrôle un bus d’accès à la mémoire de données:

Dans l’architecture Harvard, le contrôleur de DMA monopolise le bus de données seulement.

Le bus d’instruction relié à la mémoire d’instruction reste sous le contrôle du microprocesseur qui peut lire et exécuter des instructions pendant le transfert, sauf si ces instructions accèdent à la mémoire de données.

Deux bus d’accès à la mémoire peuvent permettre au contrôleur de DMA et au microprocesseur d’accéder simultanément à la mémoire.

L’accès au bus de données par le contrôleur de DMA est subordonné à celui du microprocesseur: le contrôleur de DMA effectue le transfert entre chaque moment d’utilisation du bus par le microcontrôleur.

Les caches contiennent des données utilisées par le microprocesseur alors que le transfert par DMA modifie la mémoire seulement.

Le DMA est utilisé abondamment dans vos ordinateurs: transfert de données entre la

mémoire et le disque dur, transfert de données vers la carte graphique ou la carte de son, etc.

Conclusion

[Ajouter le texte ici]

Évaluation

[Ajouter le texte ici]

Activité 2 - Mécanismes d’interruption : Reconnaissance d’interruption vectorisée et privilégiée

Introduction

Le processeur passe son temps à exécuter les instructions « écrites » par le programmeur et qui ne concernent que le fonctionnement des programmes de son cru. Cependant, un événement externe ou interne imprévu peut se produire, qui nécessite une réaction de l’ordinateur. Il faut alors temporairement interrompre le fonctionnement normal du processeur pour lui faire exécuter un programme en réponse à l’événement.

Détails de l’activité

Une interruption permet d’arrêter un programme, en cours d’exécution sur le processeur, pour que celui-ci traite une tâche considérée comme plus urgente. Quand cette tâche est terminée, le processus interrompu doit alors être repris en l’état où il avait été laissé. Lorsqu’une interruption est acceptée par le processeur, elle va permettre au périphérique ou au logiciel de suspendre le fonctionnement du microprocesseur et de lui demander l’exécution d’un sous-programme de service, dit également sous-programme d’interruption.

Les différents types d’interruptions

Une interruption peut être provoquée de diverses manières : par un périphérique (interruption externe et matérielle), par un programme (l’interruption externe et logicielle) ou alors par le processeur (l’interruption interne également appelée exception).

Les exceptions les plus courantes sont la division par zéro, le dépassement de capacité, un accès anormal à une zone mémoire...

Hiérarchisation des interruptions

Parfois le microprocesseur est sollicité par plusieurs interruptions en même temps, pour répondre à ces appels un ordre de priorité est souvent pris en compte pour leurs traitements.

Les interruptions augmentent considérablement l’efficacité du processeur.

Certaines interruptions peuvent être plus importantes que d’autres et se doivent donc d’être prioritaires :

Les interruptions non masquables

Les processeurs disposent d’instructions autorisant ou interdisant les interruptions. C’est ainsi que, si le programme ne doit absolument pas être interrompu (processus système prioritaire en cours de traitement par exemple), on interdira les interruptions qui pourraient se produire, et en perturber le déroulement. Cependant, certaines interruptions ne sauraient être interdites, soit du fait de leur nécessité, soit du fait de leur niveau de priorité. L’exemple le plus flagrant est l’interruption pour coupure de courant. Ces interruptions sont dites non masquables.

Les interruptions masquables

Par opposition, une interruption est dite masquable quand on peut demander à l’unité centrale de l’ignorer. On peut ainsi masquer, à un moment donné, certaines interruptions afin de préserver le déroulement du programme en cours, de toute interruption intempestive (sauf bien évidemment des interruptions non masquables).

Reconnaissance des interruptions

Interruption multi-niveau : chaque équipement susceptible d’émettre une interruption est relié à une entrée d’interruption particulière. Cette solution, techniquement la plus simple, est cependant coûteuse en broches d’entrées du processeur et de ce fait peu utilisée.

Interruption ligne unique : dans cette technique, une seule entrée est réservée au niveau de l’unité centrale, lui indiquant si une interruption est demandée. Si plusieurs équipements sont reliés à cette ligne, quand l’UC reçoit le demande d’interruption, elle doit alors scruter tous les équipements pour en déterminer l’émetteur ; cette technique est appelée scrutation.

Interruption vectorisée : ce type d’interruption ne consiste pas seulement en un signal de demande, mais comporte également un identificateur qui permet de se brancher directement sur le sous-programme de service approprié. Cet identificateur est un “numéro” appelé vecteur, identifiant le périphérique qui est à l’origine de la demande d’interruption.

Ce vecteur déposé sur le bus de données peut être fourni par un composant particulier appelé contrôleur d’interruptions, ou par le périphérique lui-même, mais il est alors nécessaire de gérer une hiérarchisation des priorités afin de ne pas déposer simultanément deux vecteurs sur le bus de données.

Traitement des interruptions

Le traitement d’une interruption se déroule généralement de la manière suivante :

• Réception par l’unité centrale d’une demande d’interruption interne ou externe

• Acceptation (ou rejet) de cette demande par l’unité centrale

• Fin du traitement de l’instruction en cours

• Sauvegarde de l’état du système, c’est-à-dire du contenu des divers registres (compteur ordinal, registre d’état...), de manière à pouvoir reprendre l’exécution du programme interrompu en l’état où il se trouvait au moment de l’interruption,

• Modification du contenu du compteur ordinal qui prend comme nouvelle valeur l’adresse de la première instruction du sous-programme associé à cette interruption.

Le sous-programme d’interruption une fois terminé provoque la restauration de l’état dans lequel se trouvait le système au moment de la prise en compte de l’interruption.

Les interruptions sont de deux types :

• Interruption matérielle.

• Interruption logicielle.

Application aux microprocesseurs INTEL I86

Les microprocesseurs de la gamme Intel i86 peuvent recevoir jusqu’à 256 interruptions différentes référencées IRQn (Interruption ReQuest, par exemple IRQ1), repérées par un vecteur appelé type de l’interruption.

http://www.technologuepro.com/microprocesseur/chap5_microprocesseur.html

http://www.technologuepro.com/microprocesseur/chap5_microprocesseur.html

Les interruptions externes matérielles

Le microprocesseur possède deux broches susceptibles de recevoir les interruptions externes matérielles NMI et INTR.

- NMI est une broche destinée aux interruptions externes non masquables, utilisable pour faire face à un événement “catastrophique” (défaillance d’alimentation, sortir le microprocesseur de l’exécution d’une boucle infinie).

- INTR est une entrée d’interruption externe, masquable, destinée à recevoir le signal généré par un contrôleur d’interruption, lui-même connecté aux périphériques qui peuvent avoir besoin d’interrompre le processeur. Quand INTR est actif, l’état d’un des indicateurs du registre d’état conditionne la réponse du processeur. L’interruption ne sera toutefois prise en compte qu’à la fin de l’exécution complète de l’instruction en cours. Une interruption sur la broche NMI a une priorité plus haute que INTR.

Quand un périphérique (carte réseau, carte graphique, clavier...) souhaite communiquer avec le processeur, il lui envoie une demande d’interruption. Quand cette demande arrive, le processeur examine le niveau de priorité de l’interruption et éventuellement termine et sauvegarde le travail en cours ainsi qu’un certain nombre d’informations relatives à l’état du système. Les interruptions sont donc repérées par un numéro de 0 à 15 dans l’ordre des priorités décroissantes. L’horloge système a ainsi l’IRQ de valeur 0 car c’est elle qui est prioritaire.

La gestion des IRQ est parfois assez délicate et, selon la machine ou le système d’exploitation, il n’est pas toujours facile de trouver une valeur d’interruption disponible pour une carte, par exemple la carte réseau. Pour une telle carte, on peut alors tenter d’utiliser l’IRQ 5 qui est en principe réservée au port physique LPT2 (imprimante parallèle en principe...) ou l’IRQ 7 qui correspond normalement au port physique LPT1 (imprimante parallèle en principe...) car ces interruptions sont, en principe, partageables.

Pour connaître les IRQ utilisables ou les adresses d’E/S disponibles, il faut souvent passer par un utilitaire (MSD : MicroSoft Diagnostic, ou PCTools, Norton Utilities, QEMM Manifest, Checkit...

ou le Panneau de Configuration Système sous Windows 95 ou sous Windows NT).

Tableau des affectations habituelles des IRQ

Assignation fixe Assignation habituellement constatée

IRQ0 Horloge système (Timer) IRQ1 Clavier

IRQ2 Carte écran EGA, VGA,

contrôleur d’interruptions, Scanner, carte son, …

IRQ3 Port série COM2, COM4,

modem-fax, cédérom, …

IRQ4 Port série, COM1, COM3,

modem-fax, souris-bus, cédérom, …

IRQ5 Port parallèle LPT2, souris-bus,

carte réseau, cédérom, carte son, scanner à main, …

IRQ6 Contrôleur de disquette

IRQ7 Port parallèle LPT1 (partageable) Carte réseau, carte son, … IRQ8 Horloge temps réel

IRQ9 IRQ2 redirigée, cédérom, carte

son, carte graphique

IRQ10 Carte réseau, cédérom, scanner

à main, carte son, contrôleur SCSI...

IRQ11 Carte réseau, cédérom, scanner

à main, carte son, contrôleur SCSI...

IRQ12 Carte réseau, cédérom, port

souris, … IRQ13 Coprocesseur

IRQ14 1er contrôleur disque dur

IRQ15 Carte réseau, cédérom, 2ème contrôleur disque dur, … Les interruptions logicielles

Une interruption logicielle est provoquée par l’instruction INT. Le type de l’intervention est alors placé dans la zone opérande de l’instruction et indique ainsi au processeur la procédure à exécuter.

Les exceptions

Il arrive parfois que le processeur ne puisse réaliser l’opération demandée, par exemple une division par zéro. Dans ce cas, le processeur génère une exception qui est une interruption d’un type prédéterminé.

Exemples d’exceptions générées par un processeur de la gamme i86 : erreur de division, périphérique non disponible …

L’interruption IRQ n’est généralement pas, hélas, le seul paramètre à considérer pour régler les conflits qui existent entre composants (carte réseau, carte son, carte graphique...). Parmi les sources de conflits “habituelles”, on rencontre aussi les adresses d’entrées/sorties et les canaux DMA.

Adresse du port d’entrée sortie (E/S) ou port I/O (INPUT OUTPUT)

Dans un micro-ordinateur, on utilise une adresse de base d’Entrée/Sortie (en hexadécimal) qui permet d’envoyer des informations vers la carte ou de lire des informations en provenance de cette carte. Le connecteur (slot d’extension) ne possède pas d’adresse physique attitrée, c’est seulement l’adresse physique attribuée à la carte qui va être utilisée. Deux cartes ne doivent pas utiliser la même adresse, sinon il y a un risque de conflit quand on croit s’adresser à l’une des cartes.

L’attribution de l’adresse peut être faite automatiquement lors de l’installation mais parfois il faut définir “à la main”” une adresse en cas de conflit. La plupart du temps les adresses destinées aux cartes réseaux sont 300h et 340h, mais on peut utiliser des adresses non standard.

Pour “piloter” la carte, on va utiliser des programmes écrits spécifiquement pour cette carte.

Ces programmes portent le nom de pilotes ou drivers (suffixés .drv -comme driver-, .vxd ou encore .dll).

Plages mémoires réservées aux pilotes

Usage habituellement constaté

200 20F Port de jeu

210 21F

220 22F Carte son

230 23F Souris-bus, carte son

240 24F Carte son

250 25F Carte son

260 26F Carte son

270 27F Modem-fax, carte son, scanner à main

280 28F Modem-fax, carte son

290 29F Carte son

2A0 2AF

2B0 2BF

2C0 2CF

2D0 2DF

2.00E+0 2EF Modem-fax, carte réseau, carte graphique, scanner à main

2F0 2FF Modem-fax

300 30F Carte réseau, CD-ROM, carte capture vidéo, interface

300 30F Carte réseau, CD-ROM, carte capture vidéo, interface

Documents relatifs