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

publicité
—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
Téléchargement