²Polytech Marseille/Dépt Informatique A3– 2016/2017² ²TP Interface Matériel Logiciel² Annexe fiche 4 : Introduction aux Entrées/Sorties Léon Mugwaneza L’objectif de cette annexe est de faire comprendre l’interface entre les dispositifs d’entrées/sorties1 (E/S dans la suite), la mémoire, le processeur et le système d’exploitation (aussi nommé SE dans la suite). 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 1 ci-dessous donne le principe de l’interconnexion des divers composants matériels d’un ordinateur. processeur registres UAL bus système bus mémoire mémoire principale pont d‘E/S interface bus bus E/S controleur USB souris clavier adaptateur graphique controleur disque slots d‘extensions pour d‘autres organes d‘E/S (carte réseaux …) écran disque Figure 1 : Interconnexion des composants matériels d’un ordinateur. Les dispositifs d’entrées/sorties sont contrôlés par des processeurs spécialisés (on parle de contrôleurs ou adaptateurs d’E/S). Les contrôleurs d’E/S sont connectés à un bus d’E/S lui même connecté à la mémoire et au processeur à travers un pont d’E/S. 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 ; - la gestion des interruptions provenant de dispositifs d’E/S ; - le partage des ressources : le SE doit offrir un accès équitable (ou selon une autre politique de partage) aux dispositifs d’E/S qu’il contrôle. Pour assurer ces fonctions, le SE doit pouvoir 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 (ou le processeur) 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 de registres de données. On distingue 2 méthodes pour adresser un dispositif d’E/S : Entrées/Sorties mappées en mémoire et Entrées/Sorties par instructions spéciales d’E/S. 1 Aussi appelés périphériques d’entrées/sorties 1/4 ²Polytech Marseille/Dépt Informatique A3– 2016/2017² ²TP Interface Matériel Logiciel² fiche E/S – TP4 2.1. E/S mappées en mémoire Le dispositif d’E/S est dans l’espace d’adressage mémoire (cf. figure 2 ci-dessous). 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 Figure 2 : E/S mappées en mémoire Le simulateur SPIM simule un terminal mappé en mémoire (deux dispositifs d’E/S) : - entrées à partir du clavier (receiver) : 2 registres ; - sorties sur l’écran (transmitter) : 2 registres. La figure 3 ci-dessous montre les adresses affectées au terminal SPIM (les 4 mots aux adresses 0xffff0000, 0xffff0004, 0xffff0008, et 0xffff000c) : (IE) Receiver Control 0xffff0000 Receiver 0xffff0004 Transmitter Control 0xffff0008 Transmitter 0xffff000c Unused Data Unused Data Received Byte (00...00) Unused (I.E.) Ready (00...00) (I.E.) Ready (00...00) Transmitted Byte Unused Figure 3 : E/S mappées en mémoire du simulateur SPIM 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 signifie que le transmitter est encore occupé à écrire le dernier caractère. Bit 1 du registre de contrôle : I.E. (voir 4.2 : Fonctionnement des E/S par interruptions – l’exemple de SPIM). 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 Le jeu d’instructions 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 4). On notera que 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. 2/4 ²Polytech Marseille/Dépt Informatique A3– 2016/2017² ²TP Interface Matériel Logiciel² fiche E/S – TP4 cntrl reg. data reg. @ E/S 0xFFFFFFFF cntrl reg. data reg. 0 @ Mémoire 0xFFFFFFFF Mémoire 0 Figure 4 : E/S par instructions spéciales d’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 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. 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 du terminal SPIM Pour lire un caractère du clavier et le ranger dans $v0, on utilise (par exemple) la séquence suivante : Waitloop: li $t0, 0xffff0000 # Adresse du registre de contrôle dans $t0 # Attendre que le bit ready soit à 1 lw $t1, 0($t0) #control andi $t1, $t1, 0x0001 beq $t1, $0, Waitloop # ready = 1 : on peut lire dans le registre de données lw $v0, 4($t0) #data Pour écrire à l’écran le caractère dans $a0, la séquence suivante peut être utilisée : Waitloop: li $t0, 0xffff0000 # Attendre que le bit ready soit à 1 lw $t1, 8($t0) #control andi $t1, $t1,0x0001 beq $t1, $0, Waitloop # ready = 1 : on peut écrire dans le registre de données sw $a0, 12($t0) #data 3/4 ²Polytech Marseille/Dépt Informatique A3– 2016/2017² fiche E/S – TP4 ²TP Interface Matériel Logiciel² 4.2 Fonctionnement des E/S par interruptions. La figure 5 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’exceptions en mode maître interruptions masquées (2 et 3), le traitant d’exceptions détermine le service demandé et réalise le transfert (4) avant de revenir au programme interrompu (5). Mémoire add ... (1) interruption d’E/S sub ... and ... (2) sauvegarder le contexte 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 … Figure 5 : Contrôle des E/S par interruption (le principe) E/S par interruptions : exemple du 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 le bit I.E a la valeur 1, une interruption est générée à chaque fois que le bit Ready passe de 0 à 1. Le clavier (receiver) interrompt le processeur sur le niveau 0. L’écran (transmitter) interrompt le processeur sur le niveau 1. 4/4