Introduction aux Entrées/Sorties 2. Comment un processeur adresse

ESIL/Dépt Informatique A1 – 06/07 TP Logiciel de base
1/4
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.
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.
moire
principale
pont
d’E/S
interface bus
UAL
registres
processeur
bus système busmoire
controleur
disque
adaptateur
graphique
controleur
USB
souris clavier écran disque
bus E/S slots d’extensions pour
d’autres organes d’E/S
(carte réseaux …)
ESIL/Dépt Informatique – 05/06 fiche E/S Projet Logiciel de base
2/4
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.
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) :
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.
cntrl reg .
data reg .
0xFFFFFFFF
0xFFFF0000
@
M
E
M
O
I
R
E
0
cntrl reg.
data reg.
0
0xFFFFFFFF
@ E/S
0
0xFFFFFFFF
@ Mémoire
moire
cntrl reg.
data reg.
Received
Byte
Receiver Data
0xffff0004 Unused (00...00)
(IE)
Receiver Control
0xffff0000 Ready
(I.E.)
Unused (00...00)
Transmitted
Byte
Transmitter Control
0xffff0008
Transmitter Data
0xffff000c
Ready
(I.E.)
Unused (00...00)
Unused
ESIL/Dépt Informatique – 05/06 fiche E/S Projet Logiciel de base
3/4
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 $t0, 0xffff #ffff0000
Waitloop: lw $t1, 0($t0) #control
andi $t1,$t1,0x0001
beq $t1,$zero, Waitloop
lw $v0, 4($t0) #data
Pour écrire à l’écran le caractère dans $a0, la séquence suivante peut être utilisée :
lui $t0, 0xffff #ffff0000
Waitloop: lw $t1, 8($t0) #control
andi $t1,$t1,0x0001
beq $t1,$zero, Waitloop
sw $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).
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.
Mémoire
(1) interruption
d’E/S
(2) sauvegarder le contexte
add ...
sub ...
and ...
or ...
programme
utilisateur
lw
sw
jr …
traitant d’IT
(3) aller exécuter
le traitant d’IT
(4) réaliser le
transfert
(5) Retour au
Prg. utilisateur
ESIL/Dépt Informatique – 05/06 fiche E/S Projet Logiciel de base
4/4
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 comportement partenaire Vitesse (K Octets/s)
clavier entrée humain 0,01
souris entrée humain 0,02
haut parleur sortie humain 5,00
disquette stockage machine 50,00
imprimante laser sortie humain 100,00
disque magnétique stockage machine 10 000
réseaux sans fil E ou S machine 10 000
Ecran graphique sortie humain 30 000
Réseau local (wired LAN) E ou S machine 1 000 000
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !