ESIL/Dépt Informatique A1 – 06/07 TP Logiciel de base Introduction aux Entrées/Sorties Léon Mugwaneza L’objectif de cette fiche est de faire comprendre l’interface entre les dispositifs d’entrées/sorties (E/S dans la suite), la mémoire, le processeur et le système d’exploitation. Le fonctionnement des principaux périphériques d’E/S (ex. clavier, écran, disque, souris, …) vous sera expliqué dans le cours d’Architecture des ordinateurs au second semestre. La figure ci-dessous donne le principe de l’interconnexion des divers composants matériel d’un ordinateur. p ro c e s s e u r r e g is t r e s UAL b u s s y s tè m e b u s m é m o ir e m é m o ir e p r in c ip a l e pont d ’E /S in t e r f a c e b u s b u s E /S c o n t r o le u r USB s o u r is c la v i e r a d a p ta te u r g r a p h iq u e c o n t r o le u r d is q u e s lo t s d ’e x t e n s io n s p o u r d ’a u t r e s o r g a n e s d ’E /S (c a rte ré s e a u x … ) é c ra n d is q u e 1. Contrôle des E/S : rôle du système d’exploitation Le système d’exploitation joue un rôle important dans la réalisation des E/S, ceci pour au moins 3 raisons : - l’ordinateur (système informatique -au sens large-) est partagé par plusieurs programmes ; - les sous-systèmes d’E/S (les programmes qui contrôlent les E/S) utilisent souvent les interruptions, et ces dernières sont traitées en mode maître (donc par le système d’exploitation) ; - le contrôle des E/S au bas niveau est très complexe. Le SE doit offrir diverses fonctions dans la gestion des E/S, notamment : - la protection : il doit vérifier que l’utilisateur n’accède pas à une partie du système d’E/S à laquelle il n’a pas droit (par exemple en écrivant – ou même en lisant – des fichiers d’autres utilisateurs) ; - l’abstraction : il doit offrir un interface utilisateur plus simple en « cachant » les opérations de très bas niveau ; - gestion des interruptions provenant de dispositifs d’E/S ; - le partage des ressources : le SE doit offrir une accès équitable (ou selon une autre politique de partage) aux dispositifs d’E/S qu’il contrôle. Pour assurer ces fonctions SE doit communiquer avec les dispositifs d’E/S. On distingue généralement 3 types de communications entre le SE et les dispositifs d’E/S : - les requêtes : le SE commande les dispositifs d’E/S ; - les acquittements : le dispositif d’E/S notifie au SE qu’il a fini ou qu’il y a une erreur ; - et les transferts : transfert des données entre la mémoire et le dispositif d’E/S. Ces 3 types de communication nécessitent que le processeur puisse adresser (nommer) les dispositifs d’E/S. 2. Comment un processeur adresse-t-il les dispositifs d’E/S ? L’interface d’un dispositif d’E/S est constitué de registres de contrôle dans lesquels le processeur écrit les commandes et lit l’état du dispositif, et des registres de données. On distingue 2 méthodes pour adresser un dispositif d’E/S : E/S mappées en mémoire et E/S par instructions spéciales d’E/S. 1/4 ESIL/Dépt Informatique – 05/06 Projet Logiciel de base fiche E/S 2.1. E/S mappées en mémoire Le dispositif d’E/S est dans l’espace d’adressage mémoire (cf. figure suivante). L’écriture ou la lecture des registres du dispositif d’E/S sont faites avec les instructions d’accès à la mémoire. Tous les systèmes peuvent utiliser les entrées sorties mappées en mémoire, certains processeurs (ex. MIPS, Motorola) n’offrent que cette alternative. @ M E M O I R E 0xFFFFFFFF cntrl reg . data reg . 0xFFFF0000 0 Par exemple SPIM simule un terminal mappé en mémoire (deux dispositifs d’E/S : clavier et écran) - entrées à partir du clavier (receiver) : 2 registres ; - sorties sur l’écran (transmitter) : 2 registres La figure suivante montre les adresses affectées au terminal SPIM (les 4 mots aux adresses 0xffff0000, 0xffff0004, 0xffff0008, et 0xffff000c) : (IE) Receiver Control 0xffff0000 Receiver 0xffff0004 Transm itter Control 0xffff0008 Transm itter 0xffff000c Unused Data Unused Received B yte (00...00) Unused Data (I.E.) Ready (00...00) (I.E.) Ready (00...00) Transm itted B yte Unused La signification des registres du terminal SPIM est la suivante : Bit de poids faibles du registre de contrôle (0) : Ready - Receiver : Ready==1 signifie que le caractère dans le registre de données est prêt et n’a pas encore été lu ; Ready passe de 1 à 0 quand le registre de données est lu. - Transmitter : Ready==1 signifie que le transmitter est prêt à accepter un nouveau caractère ; Ready == 0 => transmitter encore occupé à écrire le dernier caractère. Bit 1 du registre de contrôle : I.E. (voir plus loin). Octet de poids faibles du registre de données : - Receiver : dernier caractère tapé au clavier (lecture seule). - Transmitter : l’octet écrit dans ce registre est “affiché” au terminal (écriture seule). Lorsque ce registre est écrit, le bit Ready du Transmitter passe à 0 pendant un temps suffisamment long pour que le caractère soit écrit à l’écran, puis repasse à 1. 2.2. E/S par instructions spéciales d’E/S L’ISA définit des instructions dédiées aux opérations d’E/S (ex. instructions in et out des processeurs INTEL). Dans ce dernier cas, il y a donc deux espaces d’adressage : un espace d’adressage mémoire et un espace d’adressage E/S (cf figure suivante). Dans un système où le processeur offre des instructions d’E/S, on peut évidemment utiliser des E/S mappées en mémoire. c n trl re g . d a ta re g . @ E/S 0xFFFFFFFF c n trl re g . d a ta re g . 0 @ Mémoire 0xFFFFFFFF M é m o ir e 0 2/4 ESIL/Dépt Informatique – 05/06 Projet Logiciel de base fiche E/S 3. Comment protège-t-on les E/S ? Les opérations d’E/S doivent être protégées. Dans le cas des E/S mappées en mémoire, les adresses physiques correspondant aux dispositifs d’E/S sont protégées par le mécanisme de gestion mémoire. Elles sont allouées dans la partie de l’espace d’adressage réservée au système d’exploitation. La partie de l’espace d’adressage système réservée aux E/S est en général non paginée (les adresses correspondent aux adresses physiques). Dans le cas des E/S par instructions spéciales, les instructions d’E/S sont des instructions privilégiées qui ne peuvent être exécutées qu’en mode maître. 4. Comment le dispositif d’E/S notifie-t-il au processeur qu’il est prêt ? On distingue deux façons de faire : - E/S par polling (scrutation) : le processeur « consulte » le registre de contrôle du dispositif d’E/S « tout le temps » pour voir si le dispositif est prêt ; - E/S par interruptions : le dispositif d’E/S a un mode de fonctionnement dans lequel il interrompt le processeur quand il a terminé une opération d’E/S. 4.1. E/S par polling : exemple terminal SPIM Pour lire un caractère du clavier et le ranger dans $v0, on utilise (par exemple) la séquence suivante : lui Waitloop: lw andi beq lw $t0, 0xffff #ffff0000 $t1, 0($t0) #control $t1,$t1,0x0001 $t1,$zero, Waitloop $v0, 4($t0) #data Pour écrire à l’écran le caractère dans $a0, la séquence suivante peut être utilisée : lui Waitloop: lw andi beq sw $t0, 0xffff #ffff0000 $t1, 8($t0) #control $t1,$t1,0x0001 $t1,$zero, Waitloop $a0, 12($t0) #data 4.2 Fonctionnement des E/S par interruptions. La figure suivante rappelle le principe du contrôle des E/S par interruptions. Le programme utilisateur est interrompu par le dispositif d’E/S (1), l’interruption est prise en compte par le processeur en sauvegardant un contexte minimal et en allant exécuter le traitant d’exception en mode maître IT masquées (2 et 3), le traitant d’exception détermine le service demandé et réalise le transfert (4) avant de revenir au programme interrompu (5). Mémoire (1) interruption d’E/S (2) sauvegarder le contexte add ... sub ... and ... programme utilisateur or ... (3) aller exécuter le traitant d’IT lw … (5) Retour au Prg. utilisateur sw … … traitant d’IT (4) réaliser le transfert jr … E/S par interruptions : exemple terminal SPIM Le Bit I.E. (Interrupt Enable) du registre de contrôle permet de configurer le dispositif d’E/S dans un mode de fonctionnement par interruptions. Si I.E = 1, une interruption est générée à chaque fois que le bit Ready passe à 1. 3/4 ESIL/Dépt Informatique – 05/06 Projet Logiciel de base fiche E/S 5. Coût du contrôle des E/S : E/S par interruptions ou E/S par polling ? Exercice 1 : coût des E/S par polling Supposons qu’un processeur avec une fréquence d’horloge de 1 GHz mette 400 cycles à chaque fois qu’il consulte un périphérique (accès aux registres de contrôle et de données du périphérique, et retour au programme appelant). Calculer le pourcentage du temps CPU utilisé pour contrôler par polling chacun des 3 périphériques suivants : - a) une souris que l’on doit scruter au moins 30 fois par seconde (pour ne pas manquer des mouvements de la souris). - b) un lecteur de disquettes: les données sont transférées par blocs de 2 octets à une vitesse de 50 KO par seconde ; et évidemment, aucune donnée ne doit être perdue. - c) un disque dur : les données sont transférées par blocs de 16 octets, à une vitesse de 8 MO/seconde. Aucune donnée ne doit être perdue. Exercice 2 : coût des E/S par interruptions Considérons le processeur de l’exercice 1 qui contrôle le même disque dur cette fois-ci par interruptions. Supposons que chaque transfert prend 500 cycles (transfert et traitement de l’interruption). Calculer le pourcentage du temps CPU utilisé pour contrôler le disque dur si ce dernier est actif : - a) tout le temps - b) seulement 10% du temps 6. E/S par DMA (Direct Memory Access) Dans le mode de communication entre les périphériques et le processeur décrit ci-dessus, c’est le processeur qui réalise le transfert des données entre la mémoire et le périphérique. Comme le montrent les exemples des exercices 1 et 2, ceci a souvent un coût inacceptable notamment si le périphérique est rapide ou si le système est multi-utilisateurs. Dans le cas des périphériques rapides (ex. disque dur) le transfert se fait par de blocs de grande taille. Pour améliorer les performances du système on décharge le processeur du transfert des données entre le périphérique et la mémoire en le confiant à un circuit contrôleur d’E/S qui accède directement à la mémoire. On parle de contrôleur DMA (Direct Memory Access). On a 3 étapes dans le contrôle des E/S par DMA : -1) le CPU initialise le DMA en donnant l’identité du dispositif d’E/S, l’opération à réaliser (entrée ou sortie), et l’adresse mémoire (destination ou source) . -2) le contrôleur commence l’opération sur le dispositif d’E/S et utilise le bus en mode DMA (en concurrence avec le processeur). Un buffer dans le contrôleur est souvent nécessaire pour masquer les délais introduits par l’attente du bus mémoire. -3) Lorsque le transfert d’un bloc est terminé, le contrôleur interrompt le processeur. Dans le « traitement » de l’interruption, le processeur peut « interroger » le contrôleur pour avoir le compte rendu de l’opération. Exercice 3 : coût du contrôle des E/S par DMA Reprendre l’exercice 2 dans le cas où le disque dur est contrôlé par un contrôleur DMA qui réalise des transferts par blocs de 4 K octets. On supposera que l’initialisation du contrôleur prend 1000 cycles, et que le traitement de l’interruption d’E/S prend 500 cycles. On négligera les conflits d’accès au bus entre le processeur et le contrôleur. Exercice 4 : DMA et mémoire virtuelle – DMA et cache a) Décrire les problèmes qui se posent pour implanter un contrôleur d’E/S fonctionnant en mode DMA dans un système muni d’une mémoire virtuelle (le DMA utilise-t-il des adresses physiques ou des adresses virtuelles ?). Imaginer des solutions à ces problèmes. b) Décrire les problèmes qui se posent pour implanter un contrôleur DMA dans un système où le CPU accède à la mémoire via un cache. Comment peut-on résoudre ces problèmes ? Annexe : Vitesse des dispositifs d’E/S Le tableau ci-dessous donne quelques vitesses types des principales dispositifs d’E/S. De la souris au Gigabit LAN , on a un rapport de 1 à 100-millions. dispositif clavier souris haut parleur disquette imprimante laser disque magnétique réseaux sans fil Ecran graphique Réseau local (wired LAN) comportement entrée entrée sortie stockage sortie stockage E ou S sortie E ou S partenaire humain humain humain machine humain machine machine humain machine Vitesse (K Octets/s) 0,01 0,02 5,00 50,00 100,00 10 000 10 000 30 000 1 000 000 4/4