1
CHAPITRE VI
E
En
nt
tr
ré
ée
es
s
/
/
S
So
or
rt
ti
ie
es
s
D
De
e
l
l
o
oc
ct
te
et
t
a
au
u
m
me
es
ss
sa
ag
ge
e
Les objets deviennent communicants, on ne va plus savoir ce qu’ils savent
2
Objectif : la communication, les échanges avec le monde extérieur.
Ce chapitre met en exergue la problématique de l’échange de données avec le monde
extérieur, c'est-à-dire à tout ce qui environne le domaine réduit ‘minipucien’ de cette machine
à broyer les bits qu’est le processeur. Les objets de la vie courante intègrent de plus en plus de
l’informatique dite embarquée (embedded) afin d’adapter au mieux le travail ou le service de
l’objet (voiture, téléphone, robot ménager, …). L’ère qui se prépare est celle de l’informatique
dite pervasive, c'est-à-dire une informatique qui s’intègre (s’infiltre ?) dans nos activités
courantes quotidiennes de manière transparente : l’équipement prend connaissance de son
environnement et cherche les autres équipements avec lesquels il pourra dialoguer. La gestion
des périphériques ou des moyens de communications est certainement un des domaines qui
évoluera le plus et engendrera d’importants changements dans nos activités quotidiennes.
Notre point de départ est le point d’arrivée du chapitre II : la Carte Unité Centrale avec son
schéma général déjà présenté.
Les composants caractéristiques de la carte unité centrale assurent les fonctionnalités de base
d’un ordinateur : l’unité de traitement, la mémorisation et la communication avec le mode
extérieur.
Bus de Données
Bus d’adresse
Bus de Commande
CPU Contrôleur de
Mémoire
RAM
ROM Contrôleurs d’Entrées-Sorties
E/S
parallèles
E/S
séries
E/S
interruptions
01001101
01001101
Interface BUS « machine »
Bus de Données
Bus d’adresse
Bus de Commande
CPU Contrôleur de
Mémoire
RAM
ROM Contrôleurs d’Entrées-Sorties
E/S
parallèles
E/S
séries
E/S
interruptions
01001101
01001101
Interface BUS « machine »
L’objectif de ce chapitre est de
décrir
e les mécanismes mis en oeuvre la gestion des
entrées-sorties, c'est-à-dire les échanges avec le monde extérieur : principes de
fonctionnement des coupleurs d’entrées-sorties, les canaux de communication utilisés
pour les périphériques et la virtualisation de ces périphériques, comme le disque devenant
un système de fichiers.
3
Le bus interne du processeur, c'est-à-dire celui qui est issu du processeur, définit le moyen de
connexion du processeur avec ses contrôleurs (coupleurs) compagnons (mémoire, E/S). Ce
bus est relié via une interface au bus « machine », c'est-à-dire un bus défini pour un ordinateur
et non plus pour un processeur, par exemple le bus PCI, VME, …Un tel bus autorise la
création dextensions qui pourront être indépendantes du processeur et à partir de ce principe
il est aisé de construire des machines multi-carte unité centrale (bus VME, Multibus, …).
Approfondir la description des coupleurs d’entrées-sorties et les différents bus d’extension
constitue le centre d’intérêt de la première partie de ce chapitre. Les termes coupleurs et
contrôleurs seront utilisés indifféremment dans la suite du document.
Rappelons que les contrôleurs d’entrées-sorties ont été classés en trois catégories. Les
entrées-sorties parallèles sont faites pour communiquer un ensemble de bits (8, 12, 16, 32)
simultanément sur un canal de communication pour obtenir le transfert le plus rapide possible
(interfaces disques, imprimantes, …). Par contre cette possibilité n’est offerte que sur des
distances courtes (quelques dizaines de centimètres à quelques mètres suivant le débit et le
canal). Les entrées-sorties séries servent à transmettre les données bit après bit sur une
liaison à « un fil ». Les entrées-sorties par interruption correspondent à la signalisation
d’un événement dans le temps : elles signalent une occurrence.
Fonctions et Architecture des coupleurs d’entrées-sorties.
La relation entre le monde du processeur et le monde extérieur est une interface entre
l’information et le monde physique, ou le monde de la physique. Elle requiert des dispositifs
particuliers, appelés périphériques, pour :
- la saisie (importation) de données déjà numériques, en provenance par exemple d’un
autre ordinateur, ou d’autres qui sont analogiques, en provenance de capteurs, et qui
doivent donc être numérisées. Le périphérique d’entrée a pour entrée une action
physique et produit une donnée d’information à destination du processeur.
- l’exportation de données pour la transmission, la présentation (visualisation), le
stockage ou une transformation d’une information en travail (énergie) dans le cas d’un
actionneur. Le périphérique de sortie a pour entrée les données d’information en
provenance du processeur et produit en sortie une action physique.
Les deux mondes évoluent suivant des échelles de temps très différentes et les comportements
respectifs sont donc totalement asynchrones. Dans ces conditions et si de plus les deux
doivent coopérer, il faut impérativement qu’entre les deux entités soit interposé un dispositif
de stockage, une sorte de file d’attente, pour absorber les différences de rythme de
fonctionnement des deux mondes. La coopération implique que, dans une relation de
producteur consommateur, le rythme de consommation est en moyenne inférieur ou égal au
rythme de production, sinon gare au débordement de la file d’attente. Elle implique, d’autre
part, l’introduction d’un mécanisme de synchronisation comme par exemple l’attente sur une
file d’attente vide. Un périphérique d’entrée ou de sortie peut avoir sa propre file d’attente il
peut d’ailleurs comporter un ordinateur embarqué mais cela n’est pas le propos de ce
chapitre et seuls les coupleurs vont retenir l’attention dans ce propos. La file d’attente est
donc une file contenant les données échangées entre le processeur et le périphérique. Or une
information (cf. chapitre codage) est représentée par une donnée obtenue par un codage choisi
en fonction de l’utilisation qui en sera faite. La même information n’aura vraisemblablement
pas la même représentation pour son traitement au niveau du processeur et celui au niveau du
périphérique. Un caractère est représenté par son code ASCII au niveau du processeur et sera
représenté par une matrice de point au niveau de l’écran. Le coupleur peut donc associer à la
fonction de stockage une fonction de transcodage. Généralement ce transcodage correspond à
un codage de type binaire à signal, par exemple le codage Manchester utilisé par un coupleur
Ethernet.
4
La relation entre le monde du processeur et le monde extérieur n’est pas spécialement
symétrique. Si l’ordinateur peut influencer dans une certaine mesure l’évolution du monde
extérieur, il ne peut, du moins on peut le penser pour l’instant, agir sur le cours du temps. Le
temps du processeur s’écoule en voisin du temps universel, parfois en avance, parfois en
retard et c’est à lui d’ajuster son horloge pour s’accrocher au temps universel : l’occurrence
d’un évènement extérieur, vu par la machine par le biais d’une interruption, permet de mettre
en relation cet évènement extérieur avec un évènement interne et ainsi de recaler le temps.
Concrètement, cela signifie que notre interface doit présenter des capacités de stockage de
données complétées éventuellement par des possibilités de transcodage ou conversion et des
mécanismes de synchronisation.
Architecture générale d’un coupleur d’entrées-sorties.
Partant de ce principe, le coupleur est en quelque sorte un processeur spécialisé dans le
dialogue entre le processeur central et un périphérique. D’un coté, il communique avec le
processeur, de l’autre avec le ou les périphériques qu’il pilote. En interne il doit pouvoir
réaliser des opérations de codage sur des données temporairement stockées. Le stockage
pouvant se faire dans des registres, le coupleur peut effectivement être vu comme un
processeur spécialisé ne disposant que des quelques instructions relatives à l’émission et à la
réception des données. Par contre, la différence essentielle entre un processeur et un coupleur
est qu’un processeur enchaîne automatiquement et indéfiniment une suite d’instruction -un
programme-, le coupleur travaille à la demande, demande venant soit du processeur, soit du
périphérique. Son mode de fonctionnement est typiquement évènementiel.
Ce schéma d’un coupleur en tant qu’interface entre processeur et périphérique apporte une
indépendance vis-à-vis des périphériques : il est possible d’écrire des logiciels pilotes
« génériques » pour une même catégorie de périphériques homogènes du point de vue de la
communication,. Un coupleur de liaison série sur un PC (port Com1) peut servir pour une
imprimante, une souris, un téléphone pour une connexion GSM, …
La complexité d’un coupleur va d’un simple bistable mémorisant une occurrence à la carte
contrôleur -comprenant son propre processeur, mémoire et coupleurs locaux spécialisés, voire
un système d’exploitation- en passant par le contrôleur sous forme d’un circuit intégré. On
parle de microcontrôleur lorsque la carte contrôleur (avec son processeur) se réduit à un seul
circuit intégré et il dispose souvent d’un logiciel système embarqué et d’un mini-langage de
commande.
Le modèle de programmation
d’un coupleur est réduit à
l’utilisation de ses registres. Le
coupleur effectue le travail
demandé lorsque celui-ci est
spécifié dans un registre qui est
l’équivalent du registre
d’instruction d’un processeur. A
la différence du processeur qui
alimente lui-même ce registre à
partir du compteur de
programme, le coupleur attend
qu’une instruction lui soit
transférée dans ce registre que
l’on appellera registre de
commande. Plusieurs registres
Registres Commandes
Données
BUS
CPU
Interface
Périphérique
Données
Handshake,
poignée de main
PORTS
Registres Commandes
Données
BUS
CPU
Interface
Périphérique
Données
Handshake,
poignée de main
Registres Commandes
Données
BUS
CPU
Interface
Périphérique
Données
Handshake,
poignée de main
PORTS
5
de commandes peuvent être nécessaires suivant la complexité de l’instruction. Un registre est
en général dédié à l’état du contrôleur. Les autres registres sont des registres de données qui
servent au stockage temporaires des données entre le processeur et le périphérique.
Le jeu d’instruction du coupleur est réduit et, sauf cas particuliers, se limite à un codage
binaire direct, c'est-à-dire qu’il n’y a pratiquement jamais de langage de programmation. Le
programmeur devra composer lui-même le code de l’instruction à partir des notices du
constructeur : c’est l’une des difficultés de la programmation d’un coupleur d’entrées-sorties.
Le chargement d’une instruction dans un registre de commande est fait à l’initiative d’un
programme en exécution au niveau du processeur. C’est donc l’exécution d’une instruction au
niveau du processeur qui seule peut effectuer le chargement d’une instruction dans un registre
du coupleur. Les registres du coupleur son vus comme des mémoires qui sont accessibles en
écriture pour les registres de commandes et en lecture-écriture pour les registres de données.
Se pose alors le problème de l’adressage : les instructions du type « move » qui effectuent les
transfert comporte une adresse source et une adresse destination qui correspondent soit à des
registres du processeur, soit à des adresses en mémoire centrale. Il n’y a, dans ces conditions,
rien de prévu pour adresser les registres des coupleurs.
Communication et adressage
Ports d’entrées sorties et espace d’adressage
L’espace mémoire des entrées-sorties.
A priori, une solution pour résoudre le problème de l’accessibilité des registres, réside dans la
création d’un espace mémoire dédié aux entrées-sorties et indépendant de la mémoire centrale
du processeur. Si l’on crée un tel espace, appelé en raccourci espace des entrées-sorties, il
faut créer le chemin de données, ou bus, reliant cet espace au processeur, chemin constitué
d’un bus de données et d’un bus d’adresse.
L’espace séparé.
Vu le nombre de connexions supplémentaires qu’il faudrait ajouter au niveau du brochage du
processeur, l’économie générale de l’architecture incite à utiliser le bus existant. L’espace
d’entrées-sorties est alors introduit par l’équivalent d’un bit d’adresse supplémentaire qui
ajouté au bus d’adresse effectue de fait la sélection entre l’espace mémoire et l’espace des
entrées-sorties. Ce bit supplémentaire, appelons-le Mem/IO, est positionné par le processeur
et en fonction de sa valeur c’est le contrôleur de mémoire qui réagit ou l’un des coupleurs.
Reste à savoir maintenant comment activer le signal Mem/IO. L’instruction « move », a priori
destinée à un transfert avec la mémoire, positionnera le signal Mem vrai. Il faudra alors une
instruction particulière « move IO » pour positionner IO à vrai. Cette solution a été prise par
Intel pour les processeurs x86 qui disposent d’instructions in et out pour les transferts avec
l’espace des entrées-sorties.
Les transferts se font depuis et
vers le registre AX du x86 :
- out @E/S, AX ;
- in AX, @E/S.
Ce choix d’architecture a pour
conséquence de ne pas pouvoir faire de transfert entre l’espace mémoire et l’espace des
entrées-sorties. Un transfert d’un registre d’un coupleur vers une adresse en mémoire centrale
demandera deux transferts : coupleur vers registre-CPU puis registre-CPU vers mémoire
centrale, c'est-à-dire l’exécution de deux instructions au niveau du processeur. Sachant que
chaque instruction peut demander plusieurs cycles « mémoire » ce type de transfert n’est pas
très efficace lorsqu’il s’agit de transférer une grande quantité de données.
CPU
RAM Bus : @, D
Mem*/IO
E/S
CPU
RAM Bus : @, D
Mem*/IO
E/S
1 / 46 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 !