Vous êtes sur la page 1sur 464

SCIENCES SUP

Cours et exercices corrigs


coles dingnieurs IUT Licence 1re, 2e et 3e annes

ARCHITECTURE
DES MACHINES
ET DES SYSTMES
INFORMATIQUES
3e dition

Alain Cazes
Jolle Delacroix
ARCHITECTURE
DES MACHINES
ET DES SYSTMES
INFORMATIQUES
Linux
Programmation systme et rseau
2e dition
Jolle Delacroix
352 pages
Dunod, 2007

Bases de donnes et modles de calcul


Outils et mthodes pour lutilisateur
4e dition
Jean-Luc Hainaut
440 pages
Dunod, 2005
ARCHITECTURE
DES MACHINES
ET DES SYSTMES
INFORMATIQUES

Cours et exercices corrigs

Alain Cazes
Matre de confrences en informatique
au Conservatoire National des Arts et Mtiers
Jolle Delacroix
Matre de confrences en informatique
au Conservatoire National des Arts et Mtiers

3e dition
Illustration de couverture : digitalvision

Dunod, Paris, 2003, 2005, 2008


ISBN 978-2-10-053945-1
Table des matires

CHAPITRE 1 STRUCTURE GNRALE ET FONCTIONNEMENT DUN ORDINATEUR 1


1.1 Introduction 1
1.2 Structure et fonctionnement dun ordinateur 3
1.2.1 Structure gnrale dun ordinateur 3
1.2.2 La mmoire centrale 4
1.2.3 Le bus de communication 8
1.2.4 Le processeur central ou microprocesseur 10
1.3 Fonctionnement : relation microprocesseur / mmoire centrale 13
1.4 Un exemple 15
1.4.1 Le problme 15
1.4.2 Lordinateur 15
1.4.3 Le langage machine 15
1.5 Les units dchanges 16
1.6 Conclusion 17

PARTIE 1 PRODUCTION DE PROGRAMMES

CHAPITRE 2 DU PROBLME AU PROGRAMME MACHINE 23


2.1 Du problme au programme 23
2.1.1 Rappel du rle dun ordinateur 23
2.1.2 Problme, algorithme, programme et instructions 25
VI Architecture des machines et des systmes informatiques

2.2 Les diffrents niveaux de langage de lordinateur 26


2.2.1 Langage machine 27
2.2.2 Langage dassemblage 28
2.2.3 Langage de haut niveau ou volu 29
2.3 Introduction la chane de production de programmes 30
2.4 Un exemple 31
2.5 Conclusion 33

CHAPITRE 3 LA CHANE DE PRODUCTION DE PROGRAMMES 35


3.1 La compilation 36
3.1.1 Grammaire et structure dun langage de haut niveau 36
3.1.2 Analyse lexicale 38
3.1.3 Analyse syntaxique 40
3.1.4 Analyse smantique 42
3.1.5 Gnration du code final 44
3.2 Ldition des liens 46
3.2.1 Rle de lditeur de liens 46
3.2.2 Fonctionnement de lditeur de liens 47
3.3 Le chargement 59
3.3.1 Rle du chargeur 59
3.3.2 Chargement et dition des liens dynamique 61
3.4 Lutilitaire Make 62
3.4.1 Format du fichier Makefile 62
3.4.2 Fonctionnement de lutilitaire Make 63
3.5 Conclusion 64

CHAPITRE 4 LE LANGAGE MACHINE ET LA REPRSENTATION DES INFORMATIONS 65


4.1 La reprsentation des informations 65
4.1.1 Numration binaire, octale et hexadcimale 66
4.1.2 Reprsentation des nombres signs 69
4.1.3 Reprsentation des nombres flottants 74
4.1.4 Reprsentation des caractres 77
4.2 Les instructions machine 79
4.2.1 Les diffrents types dinstructions 80
4.2.2 Les diffrents types doprandes 81
4.2.3 Un exemple 82
4.3 Les instructions du langage dassemblage 84
4.3.1 Format dune instruction du langage dassemblage 85
4.3.2 Fonctionnement de lassembleur 87
4.4 Conclusion 89
Table des matires VII

CHAPITRE 5 LES CIRCUITS LOGIQUES 90


5.1 Les circuits logiques 90
5.1.1 Dfinition 90
5.1.2 Les circuits combinatoires 91
5.1.3 Les circuits squentiels 99
5.1.4 Technologie des circuits logiques 101
5.2 Le futur 106

CHAPITRE 6 EXERCICES CORRIGS 108


Production de programmes 108
6.1 Compilation 108
6.2 dition des liens 110
6.3 Utilitaire Make 111
6.4 Compilation 111
Reprsentation des informations 112
6.5 Conversions 112
6.6 Reprsentation des nombres signs 112
6.7 Reprsentation des nombres flottants 113
6.8 Synthse 113
Langage machine 113
6.9 Manipulation des modes dadressage 117
6.10 Programme assembleur 117
6.11 Manipulation de la pile 118
6.12 Programme assembleur 119

SOLUTIONS 120

PARTIE 2 STRUCTURE DE LORDINATEUR

CHAPITRE 7 LA FONCTION DEXCUTION 129


Dunod La photocopie non autorise est un dlit.

7.1 Introduction 129


7.2 Aspects externes 132
7.2.1 Le microprocesseur 132
7.2.2 Les bus 134
7.3 Aspects internes 136
7.3.1 Excution dune instruction machine 137
7.3.2 Microcommandes et micro-instructions 145
7.4 Les interruptions : modification du flux dexcution dun programme machine 154
7.4.1 Principe des interruptions 154
7.4.2 Un exemple 158
VIII Architecture des machines et des systmes informatiques

7.5 Amlioration des performances 162


7.5.1 Paralllisme des instructions 163
7.5.2 Paralllisme des processeurs 165
7.6 Conclusion 166

CHAPITRE 8 LA FONCTION DE MMORISATION 168


8.1 Gnralits 168
8.2 Mmoires de travail 171
8.2.1 Les mmoires vives 171
8.2.2 Les mmoires mortes 180
8.2.3 Les registres 180
8.3 Mmoires de stockage : le disque magntique 181
8.3.1 Caractristiques gnrales 182
8.3.2 Organisation gnrale 182
8.4 Amlioration des performances 184
8.4.1 Les mmoires caches 184
8.4.2 Mmoire virtuelle 195
8.5 Complments : approches CISC/RISC 198
8.5.1 Les performances dun processeur 199
8.5.2 La traduction des programmes 200
8.5.3 Approche CISC 200
8.5.4 Approche RISC 201
8.5.5 Pour conclure sur les RISC et les CISC 202
8.6 Conclusion 203

CHAPITRE 9 LA FONCTION DE COMMUNICATION 205


9.1 Introduction 205
9.2 Les bus 210
9.2.1 Les bus ISA (ou PC-AT), MCA et EISA 211
9.2.2 Le bus PCI (Peripherical Component Interconnect) 212
9.2.3 Le bus AGP (Accelerated Graphics Port) 216
9.2.4 Deux exemples 217
9.3 Les interfaces daccs aux priphriques 218
9.3.1 Les units dchanges 219
9.3.2 Les bus dextension 232
9.4 Les diffrents modles de gestion des entres-sorties 236
9.4.1 La liaison programme 237
9.4.2 Entres-sorties pilotes par les interruptions 239
9.4.3 Gestion des entres-sorties asynchrones 241
9.5 Conclusion 244
Table des matires IX

CHAPITRE 10 EXERCICES CORRIGS 245


La fonction dexcution 245
10.1 Rvision 245
10.2 Microcommandes 245
10.3 CISC/RISC 246
La fonction de mmorisation 247
10.4 Cache correspondance directe 247
10.5 Calcul de la taille relle dun cache 247
10.6 Cache associatif et remplacement de lignes 247
10.7 Cache correspondance directe 248
La fonction de communication 248
10.8 Questions de cours 248
10.9 Entres-sorties programmes et entres-sorties par interruption 248
10.10 Performances des oprations dentres-sorties 249
10.11 Gestion des interruptions 249
Synthse 250
10.12 Exercice de synthse 250

SOLUTIONS 253

PARTIE 3 LES SYSTMES DEXPLOITATION

CHAPITRE 11 INTRODUCTION AUX SYSTMES DEXPLOITATION MULTIPROGRAMMS 265


11.1 Rle et dfinition dun systme dexploitation multiprogramm 265
11.1.1 Un premier rle : assurer le partage de la machine physique 267
11.1.2 Un second rle : rendre conviviale la machine physique 267
11.1.3 Dfinition du systme dexploitation multiprogramm 268
11.2 Structure dun systme dexploitation multiprogramm 269
11.2.1 Composants dun systme dexploitation 269
Dunod La photocopie non autorise est un dlit.

11.2.2 La norme POSIX pour les systmes ouverts 271


11.3 Principaux types de systmes dexploitations multiprogramms 271
11.3.1 Les systmes traitements par lots 272
11.3.2 Les systmes interactifs 274
11.3.3 Les systmes temps rel 275
11.4 Notions de base 276
11.4.1 Modes dexcutions et commutations de contexte 277
11.4.2 Gestion des interruptions matrielles et logicielles 279
11.4.3 Langage de commande 282
X Architecture des machines et des systmes informatiques

11.5 Gnration et chargement dun systme dexploitation 285


11.5.1 Gnration dun systme dexploitation 285
11.5.2 Chargement dun systme dexploitation 286
11.6 Conclusion 286

CHAPITRE 12 GESTION DE LEXCUTION DES PROGRAMMES : LE PROCESSUS 288


12.1 Notion de processus 288
12.1.1 Dfinitions 288
12.1.2 tats dun processus 289
12.1.3 Bloc de contrle du processus 290
12.1.4 Oprations sur les processus 291
12.1.5 Un exemple de processus : les processus Unix 292
12.2 Ordonnancement sur lunit centrale 295
12.2.1 Ordonnancement premptif et non premptif 295
12.2.2 Entits systmes responsable de lordonnancement 297
12.2.3 Politiques dordonnancement 297
12.2.4 Exemples 302
12.3 Synchronisation et communication entre processus 304
12.3.1 Lexclusion mutuelle 305
12.3.2 Le schma de lallocation de ressources 309
12.3.3 Le schma lecteurs-rdacteurs 310
12.3.4 Le schma producteur-consommateur 312
12.4 Conclusion 314

CHAPITRE 13 GESTION DE LA MMOIRE CENTRALE 315


13.1 Mmoire physique et mmoire logique 315
13.2 Allocation de la mmoire physique 317
13.2.1 Allocation contigu de la mmoire physique 317
13.2.2 Allocation non contigu de la mmoire physique 323
13.3 Mmoire virtuelle 336
13.3.1 Principe de la mmoire virtuelle 336
13.3.2 Le dfaut de page 339
13.3.3 Le remplacement de pages 341
13.3.4 Performance 344
13.3.5 Exemples 345
13.3.6 Notion dcroulement 346
13.4 Swapping des processus 347
13.5 Conclusion 347
Table des matires XI

CHAPITRE 14 SYSTME DE GESTION DE FICHIERS 348


14.1 Le fichier logique 348
14.1.1 Dfinition 348
14.1.2 Les modes daccs 349
14.1.3 Exemples 351
14.2 Le fichier physique 354
14.2.1 Structure du disque dur 354
14.2.2 Mthodes dallocation de la mmoire secondaire 355
14.3 Correspondance fichier logique-fichier physique 366
14.3.1 Notion de rpertoire 366
14.3.2 Ralisation des oprations 372
14.4 Protection 379
14.4.1 Protection contre les accs inappropris 379
14.4.2 Protection contre les dgts physiques 380
14.5 Conclusion 381

CHAPITRE 15 INTRODUCTION AUX RSEAUX 383


15.1 Dfinition 383
15.2 Les rseaux filaires 385
15.2.1 Architecture des rseaux filaires 385
15.2.2 Circulation des informations 393
15.2.3 Exemple de rseau filaire 396
15.3 Les rseaux sans fil 399
15.3.1 Architecture des rseaux sans fil 400
15.3.2 Circulation des informations 402
15.3.3 Exemples de rseaux sans fil 407
15.4 Linterconnexion de rseaux : Internet 409
15.4.1 Architecture de lInternet 410
15.4.2 Circulation de linformation 410
Dunod La photocopie non autorise est un dlit.

CHAPITRE 16 EXERCICES CORRIGS 414


Ordonnancement de processus 414
16.1 Algorithmes dordonnancement 414
16.2 Ordonnancement par priorit premptif et non premptif 414
16.3 Chronogramme dexcutions 415
16.4 Ordonnancement sous Unix 415
16.5 Ordonnancement sous Linux 416
Synchronisation de processus 417
16.6 Producteur(s)-Consommateurs(s) 417
XII Architecture des machines et des systmes informatiques

16.7 Allocations de ressources et interblocage 417


16.8 Allocation de ressources et tats des processus 418
Gestion de la mmoire centrale 419
16.9 Gestion de la mmoire par partitions variables 419
16.10 Remplacement de pages 419
16.11 Mmoire pagine et segmente 420
16.12 Mmoire virtuelle et ordonnancement de processus 420
16.13 Pagination la demande 421
Systme de gestion de fichiers 422
16.14 Modes daccs 422
16.15 Organisation de fichiers 422
16.16 Noms de fichiers et droits daccs 422
16.17 Algorithmes de services des requtes disque 423
16.18 Fichiers Unix 423
16.19 Systme de gestion de fichiers FAT 423
16.20 Systme de gestion Unix 424
16.21 Synthse 424

SOLUTIONS 427

INDEX 445
Chapitre 1

Structure gnrale
et fonctionnement
dun ordinateur 1

Dans cette partie introductive nous rappelons quelques lments fondamentaux concer-
nant la programmation et lalgorithmique afin de prsenter le vocabulaire utilis. Il
ne sagit en aucune manire de se substituer un cours dalgorithmique mais unique-
ment de replacer du vocabulaire du point de vue de la structure gnrale dun ordina-
teur, lobjectif tant de mettre en vidence les diffrentes phases qui interviennent
dans la rsolution dun problme avec un ordinateur. Aprs cette partie introductive
nous prsentons les principaux modules constituant larchitecture dun ordinateur
type. Nous faisons un tour dhorizon des fonctionnalits de chacun de ces modules
et de leurs relations fonctionnelles. Il sagit ici uniquement de prsenter de manire
globale le fonctionnement de lordinateur.

1.1 INTRODUCTION
Le rle de linformatique est de rsoudre des problmes laide dun ordinateur. Un
problme sexprime sous la forme dun nonc qui spcifie les fonctions que lon
souhaite raliser. Par exemple dfinir toutes les fonctions dun traitement de texte.
Pour rsoudre un problme les informaticiens utilisent la notion dalgorithme.
Pour illustrer cette notion, prenons lexemple du problme suivant : confectionner
une omelette avec 6 ufs.
2 1 Structure gnrale et fonctionnement dun ordinateur

Trouver une solution ce problme repose sur lexistence dun processeur sachant
excuter une instruction (confectionner). En gnral un adulte saura excuter linstruc-
tion confectionner, cest--dire connatra le sens du mot, et sera capable de faire
toutes les actions ncessaires permettant de rsoudre le problme. On dira alors que
ladulte est un bon processeur au sens o il saura excuter linstruction confec-
tionner portant sur la donne ufs. Par contre un enfant pourra ne pas connatre le
mot confectionner : il ne saura pas faire les oprations ncessaires et ne pourra donc
pas rsoudre le problme pos (faire une omelette). Lenfant connat dautres instruc-
tions, sait excuter dautres actions que confectionner, et pour quil puisse rsoudre
le problme il faudra lexprimer autrement, sur la base des actions, instructions,
quil est capable dexcuter. Pour que lenfant puisse rsoudre le problme on pourra
lexprimer sous la forme dune squence dinstructions appartenant au langage de
lenfant. Par exemple on pourra exprimer le problme, la solution, sous la forme de
la squence des instructions suivantes :
1. casser 6 ufs dans un bol;
2. battre les ufs avec un fouet;
3. saler, poivrer;
4. placer la pole sur le gaz;
5. allumer le gaz;
6. cuisiner les ufs;
7. teindre le gaz.
Dans cet exemple, le processeur enfant sait excuter des instructions (casser, battre,
saler, poivrer, allumer, cuisiner). De plus il connat les objets manipuler (ufs,
gaz, pole). On dit alors que le processeur enfant est un bon processeur pour
excuter lalgorithme reprsent par la squence prcdente puisque lenfant est
capable dexcuter cette squence dinstructions. Cette squence dinstructions excu-
tables par le processeur enfant est une solution du problme pos pour ce processeur.
Un algorithme peut donc se dfinir comme une squence dinstructions excuta-
bles par un processeur dtermin. Cette squence dinstructions, cet algorithme, est
une solution au problme pos.
De ce petit exemple nous pouvons tirer quelques conclusions :
un algorithme est une solution un problme pos;
un algorithme est une squence dinstructions excutables par un processeur;
un algorithme est un programme excutable par un processeur dtermin;
un algorithme na de sens que pour un processeur dtermin.
Les instructions expriment les actions que peut excuter un processeur, elles sont
codes partir dun alphabet (dans notre cas lalphabet habituel). Les instructions
manipulent des donnes (ufs, sel, poivre, gaz, pole). Un processeur (ou machine
virtuelle) est une entit capable dexcuter des instructions portant sur des donnes.
Lensemble des instructions que le processeur (la machine virtuelle) peut manipuler,
constitue son langage de programmation. Ainsi le langage de programmation du
processeur dfinit compltement ce processeur. Il y a quivalence totale entre la
1.2 Structure et fonctionnement dun ordinateur 3

machine virtuelle et son langage de programmation. Aussi, connatre le langage de


programmation dune machine virtuelle quivaut connatre les capacits dexcu-
tion de cette machine.
En rsum rsoudre un problme avec une machine virtuelle consiste construire
une squence dinstructions pour cette machine ( partir de son langage de program-
mation) telle que lexcution de cette squence soit une solution ce problme. En
informatique la machine cible, celle avec laquelle nous devons rsoudre les problmes,
est lordinateur. Nous devons donc connatre les caractristiques de cette machine,
tout particulirement son langage de programmation (les instructions quelle est
capable dexcuter), lalphabet permettant de coder les instructions ainsi que les
donnes et les outils permettant dexcuter ces instructions.
Les instructions dun ordinateur sont les instructions machines, elles constituent le
langage de programmation de lordinateur : le langage machine. Rsoudre un problme
avec un ordinateur consiste donc exprimer ce problme sous la forme dune
squence dinstructions machines que nous devrons soumettre aux outils permettant
lexcution de cette squence. Cette squence dinstructions machine excutables
par lordinateur sappelle le programme machine.

1.2 STRUCTURE ET FONCTIONNEMENT


DUN ORDINATEUR
Aprs ce bref rappel sur la manire algorithmique de rsoudre un problme nous
allons nous intresser la rsolution dun problme avec comme machine cible un
ordinateur. Pour cela nous donnons tout dabord une prsentation de la structure
matrielle dun ordinateur, de son fonctionnement, pour ainsi en dduire comment
on peut laide dun ordinateur, rsoudre un problme. Lordinateur cible nous
servant de support descriptif est un ordinateur de type Von Neumann qui caractrise
bien la quasi-totalit des ordinateurs actuels. Il est compos des lments suivants :
une mmoire centrale pour le stockage des informations (programme et donnes);
un microprocesseur ou processeur central pour le traitement des informations
loges dans la mmoire centrale;
Dunod La photocopie non autorise est un dlit.

des units de contrle des priphriques et des priphriques;


un bus de communication entre ces diffrents modules.

1.2.1 Structure gnrale dun ordinateur


La figure 1.1 prsente lorganisation gnrale dun ordinateur. On y trouve deux parties
principales :
le processeur comprenant les modules mmoire centrale, processeur central (micro-
processeur), les units dchange et le bus de communication entre ces diffrents
modules;
4 1 Structure gnrale et fonctionnement dun ordinateur

les priphriques avec lesquels dialogue le processeur au travers des units dchange
(ou contrleurs). On distingue en gnral :
les priphriques dentre tels que le clavier ou la souris;
les priphriques de sortie tels que les imprimantes et les crans de visualisation;
les priphriques dentre et de sortie tels que les disques magntiques ou les
modems pour accder aux rseaux de communication.

Processeur
Horloge
central
Bus
Rseau
Mmoire
cache

d' change
Mmoire
centrale Unit dchange

Figure 1.1 Structure matrielle gnrale.

Globalement le processeur permet lexcution dun programme. Chaque proces-


seur dispose dun langage de programmation (les instructions machine) spcifique.
Ainsi rsoudre un problme avec un processeur consiste exprimer ce problme
comme une suite de ses instructions machine. La solution un problme est donc
spcifique de chaque processeur. Le programme machine et les donnes qui sont
manipules par les instructions machine sont placs dans la mmoire centrale.
Examinons prsent plus en dtail la composition et les fonctions de chacun des
modules composant le processeur.

1.2.2 La mmoire centrale


La mmoire centrale assure la fonction de stockage de linformation qui peut tre
manipule par le microprocesseur (processeur central), cest--dire le programme
machine accompagn de ses donnes. En effet, le microprocesseur nest capable
dexcuter une instruction que si elle est place dans la mmoire centrale.
1.2 Structure et fonctionnement dun ordinateur 5

Cette mmoire est constitue de circuits lmentaires nomms bits (binary digit).
Il sagit de circuits lectroniques qui prsentent deux tats stables cods sous la
forme dun 0 ou dun 1. De par sa structure la mmoire centrale permet donc de
coder les informations sur la base dun alphabet binaire et toute information stocke
en mmoire centrale est reprsente sous la forme dune suite de digits binaires. La
figure 1.2 prsente lorganisation gnrale dune mmoire centrale.

Bus adresses Mmoire centrale


Bus de commandes
Adresses mmoire
1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 0 0
0 1 1 1 0 0 1 1 1 0 0 0 1 1 0 1 1
1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 0 2
0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 1 3
1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 0 4
1 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 5
1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 0 6
0 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 7

Mot mmoire Bus


dadresse 2 donnes

Figure 1.2 La mmoire centrale.

Pour stocker linformation la mmoire est dcoupe en cellules mmoires : les


mots mmoires. Chaque mot est constitu par un certain nombre de bits qui dfinis-
sent sa taille. On peut ainsi trouver des mots de 1 bit, 4 bits (quartet) ou encore 8 bits
(octet ou byte), 16 bits voire 32 ou 64 bits. Chaque mot est repr dans la mmoire
par une adresse, un numro qui identifie le mot mmoire. Ainsi un mot est un conte-
nant accessible par son adresse et la suite de digits binaires composant le mot repr-
sente le contenu ou valeur de linformation.
Dunod La photocopie non autorise est un dlit.

La mmoire centrale est un module de stockage de linformation dont la valeur est


code sur des mots. Linformation est accessible par mot. La capacit de stockage de
la mmoire est dfinie comme tant le nombre de mots constituant celle-ci. Dans
lexemple de la figure 1.2, notre mmoire a une capacit de 8 mots de 16 bits
chacun. On exprime galement cette capacit en nombre doctets ou de bits. Notre
mmoire a donc une capacit de 16 octets ou de 128 bits. Linformation que lon
trouve en mmoire centrale est donc code sur un alphabet binaire. La figure 1.3
rappelle le nombre de combinaisons que lon peut raliser partir dune suite
dlments binaires. Coder linformation en mmoire centrale cest donc associer
chaque suite de bits un sens particulier.
6 1 Structure gnrale et fonctionnement dun ordinateur

Codage de linformation

Bit 0 1 Alphabet binaire

x 2 combinaisons 0 1

xx 4 combinaisons 0 0 n 2n
0 1
1 0 0 1
1 1 1 2
2 4
xxx 8 combinaisons 0 0 0 3 8
0 0 1 4 16
0 1 0 5 32
0 1 1 6 64
1 0 0 7 128
1 0 1 8 256
1 1 0 9 512
1 1 1 10 1024

n bits donnent 2n combinaisons diffrentes

Figure 1.3 Codage binaire.

La figure 1.4 prsente succinctement les diffrentes informations que lon trouve
dans la mmoire centrale : instructions machines et donnes manipules par les
instructions.

Informations

Instructions Donnes

Code Opration Champ oprande

Numriques Non Numriques

0001 0100
Nbentiers
positifs Nbentiers ngatifs

Signe C1 C2
Nb Fractionnaires +
valeur absolue
Virgule fixe Virgule flottante

Figure 1.4 Les diffrentes informations


prsentes en mmoire centrale.
1.2 Structure et fonctionnement dun ordinateur 7

Les instructions et les donnes sont codes sur des mots mmoires : elles peuvent
occuper un ou plusieurs mots mmoires selon la nature de lordinateur. Les instruc-
tions machines sont propres chaque microprocesseur mais sont toujours construites
de la mme manire : un code opration qui dfinit lopration excuter, le champ
oprande qui dfinit la ou les donnes sur lesquelles portent lopration :
le code opration est cod sur un nombre de digits binaires qui caractrise un
microprocesseur. Ce nombre de bits dfinit en fait le nombre doprations possi-
bles avec cet ordinateur : un code opration sur 3 bits admet 8 combinaisons
permettant la dfinition de 8 oprations diffrentes (instructions machine) possi-
bles, sur 4 bits 16 instructions possibles etc. La taille du code opration est donc
un facteur dterminant qui caractrise compltement le nombre dinstructions
quest capable dexcuter un processeur;
le champ oprande est une suite de bits qui permet de caractriser ladresse de la ou
des donne(s) que manipule(nt) linstruction machine dfinie par le code opra-
tion. Il existe plusieurs types dinstructions machines qui peuvent manipuler une
ou plusieurs donnes selon la puissance du langage machine du microproces-
seur utilis. Il existe galement plusieurs manires de dfinir, partir du champ
oprande, ladresse dune donne : cela repose sur le mcanisme dadressage dun
microprocesseur qui dfinit les diffrentes manires de calculer une adresse de
donnes. On parle galement de modes dadressages du microprocesseur.
Les donnes sont les objets que manipulent les instructions, elles sont codes sur
un ou plusieurs mots machines et sont donc adressables (reprables) dans la mmoire
centrale. Ladresse de la donne est dtermine par le type dadressage utilis par
linstruction machine. Le codage dune donne en mmoire dpend de son type : la
figure 1.4 donne les diffrents types de donnes que manipulent les instructions
machines. Pour chaque type il existe des rgles de codage. Par exemple pour coder
les caractres alphanumriques on utilise un dictionnaire (table ASCII, table EBCDIC,
codage Unicode) tandis que pour coder un nombre entier non sign on utilise une
rgle traditionnelle de codage dun nombre sur un alphabet binaire.
Dans lexemple de la figure 1.5, on suppose un nombre cod sur un octet (8 bits)
dont la position de chaque bit est numrote de 0 7, en partant du bit de poids

Octet 01100101
Dunod La photocopie non autorise est un dlit.

Informations
Position du bit 7 6 5 4 3 2 1 0
0 1 1 0 0 1 0 1
Donnes Valeur de loctet :
0 2 7 + 1 26 + 1 25 + 0 24 + 0 23 + 1 22 + 0 21 + 1 20
Soit 101 en base 10

Nb entiers positifs
La valeur maximale dun entier sur p bits est 2p 1

Figure 1.5 Un exemple de codage de linformation.


8 1 Structure gnrale et fonctionnement dun ordinateur

faible. La valeur de lentier est alors la somme des produits de chaque bit par le
nombre de symboles possibles dans la base dexpression du nombre (ici 2) lev la
puissance du rang du bit. Cette rgle est gnrale et permet de dterminer la valeur
dun entier cod sur nimporte quel alphabet. Dans le cas dun alphabet binaire la
valeur maximale que peut prendre un entier cod sur p bits est 2p. Les principales
normes de codages existantes lheure actuelle ainsi que la structure des instructions
machine et les modes dadressages courants sont dtaills au chapitre 4.
La mmoire centrale a pour objet le stockage des instructions et des donnes que
peut manipuler le microprocesseur. Les oprations possibles sur la mmoire sont la
lecture (acquisition par le microprocesseur) dun mot et lcriture (le microproces-
seur place un nouveau contenu) dans un mot mmoire. Une opration de lecture dun
mot consiste dfinir ladresse du mot et dclencher une commande de lecture qui
amne le contenu du mot de la mmoire vers le microprocesseur. Une opration
dcriture consiste dfinir ladresse du mot dont on veut changer le contenu puis
dclencher une opration dcriture qui transfre linformation du processeur vers le
mot mmoire dont ladresse est spcifie.
Enfin dautres lments importants compltent la caractrisation dune mmoire
centrale :
le temps daccs la mmoire qui mesure le temps ncessaire pour obtenir une
information loge en mmoire;
les technologies qui prsident la construction de ces mmoires;
le cot de ralisation de ces mmoires.
Nous reviendrons en dtail sur lensemble de ces points dans le chapitre sur la
mmorisation (chapitre 8).

1.2.3 Le bus de communication


Le bus de communication peut se reprsenter comme une nappe de fils transportant
des signaux et permettant lchange des informations entre les diffrents modules du
processeur. Chaque fil transporte ou non un signal : il est prsent ou absent. On
reprsente par 1 un signal prsent et par 0 un signal absent. Le nombre de fils du bus
dtermine sa largeur et dfinit ainsi le nombre dinformations diffrentes que peut
vhiculer le bus. Ainsi un bus de 3 fils permet une combinaison de 8 signaux diff-
rents et donc reprsente 8 informations possibles diffrentes.
Le bus est construit comme un ensemble de trois bus :
le bus dadresses transporte des combinaisons de signaux qui sont interprtes
comme des nombres entiers reprsentant ladresse dun mot mmoire. Par exemple,
figure 1.6, le bus dadresses a une largeur de 3 fils et est donc capable de coder
des adresses allant de 0 7. Pour adresser un mot mmoire on fait appel un circuit
de slection (dcodeur) qui en entre reoit n signaux (3 dans notre exemple) et
fournit 2n signaux de sortie (8 dans notre exemple). Parmi les signaux de sortie un
seul est positionn 1 tous les autres valant 0. Dans notre exemple, les sorties sont
numrotes de 0 7 et de haut en bas. Ainsi si la valeur dentre est 000, seule la
1.2 Structure et fonctionnement dun ordinateur 9

sortie 0 vaut 1 et toutes les autres valent 0. Pour adresser le mot mmoire 2 le
microprocesseur place sur le bus dadresses la chane 010 (qui a pour valeur 2 en
base 10), la sortie 1 du dcodeur vaut alors 1 et les autres valent 0. Ce circuit permet
donc de slectionner un mot mmoire dans la mmoire centrale. La largeur du bus
dadresses dfinit la capacit dadressage du microprocesseur et il ne faut pas
confondre capacit dadressage et taille physique de la mmoire;

Processeur
Commandes
Adresse
Donnes

Mot mmoire Bit

Mmoire centrale

Largeur
des bus :
1 fil
3 fils
16 fils
Selection

Bus

Tampon dentres-sorties

Figure 1.6 Bus de communication.


Dunod La photocopie non autorise est un dlit.

le bus de donnes permet lchange des informations (les contenus) entre les
diffrents modules. Dans notre exemple le bus de donnes a une largeur de 16 fils
et donc la taille des mots mmoires auxquels on peut accder ou dont on peut modi-
fier le contenu est de 16 bits;
le bus de commandes : cest par ce bus que le microprocesseur indique la nature des
oprations quil veut effectuer. Dans notre exemple il a une largeur dun fil et donc
le microprocesseur ne peut passer que deux commandes (la lecture et lcriture).
La figure 1.7 rsume les diffrents points abords concernant la mmoire et les
bus permettant la communication avec la mmoire. Sur cette figure 1.7, le bus
10 1 Structure gnrale et fonctionnement dun ordinateur

dadresses a une largeur de m bits, le bus de donnes une largeur de p bits ce qui
dtermine la capacit de stockage en bits de cette mmoire, soit 2m mots de p bits. Le
bus de commandes permet de dterminer le type dopration (lecture ou criture)
que lon souhaite raliser.

Bus dadresses
m bits Fonctions : stockage
Adresse programme
et donnes
Mmoire Units de stockage : Bit, Octet, Mot.
Mots
Lecture 2m mots de p bits
Adressage : Mot
criture
Temps daccs.
Bus de commandes
Technologies.
Donnes
Cots.
p bits
Bus de donnes

Figure 1.7 Bus de communication et mmoire centrale.

1.2.4 Le processeur central ou microprocesseur


Le microprocesseur (unit centrale) a pour objet dexcuter les instructions machines
places en mmoire centrale. La figure 1.8 prsente son architecture gnrale.

Y1
Z Opration
Unit Arithmtique
et Logique Y2
PSW

Bus interne

Donnes
Registres
Commandes

Squenceur
Unit de Commande
Dcodeur RI
CO
RAD
RDO

Commandes Lecture/criture
Bus Processeur / Mmoire Adresses
Donnes

Figure 1.8 Le microprocesseur.


1.2 Structure et fonctionnement dun ordinateur 11

Il est constitu de quatre parties : lunit arithmtique et logique (UAL), les regis-
tres, lunit commande et le bus de communication interne permettant lchange des
donnes et des commandes entre les diffrentes parties du microprocesseur.

Les registres
Ce sont des zones de mmorisation de linformation internes au microprocesseur. Ils
sont de faible capacit et de temps daccs trs faible. Leur nombre et leur taille sont
variables en fonction du type de microprocesseur. Ils peuvent tre de type adresse
(ils contiennent alors une adresse de mot mmoire) ou donnes (ils contiennent alors
le contenu dun mot mmoire). Ils peuvent tre spcifiques et avoir une fonction trs
prcise (par exemple le registre pointeur de pile) ou gnraux et servir essentielle-
ment aux calculs intermdiaires, par exemple, de lunit arithmtique et logique.

Lunit arithmtique et logique (UAL)


Ce module est charg de lexcution de tous les calculs que peut raliser le micro-
processeur. Cette unit est constitue de lensemble des circuits arithmtiques et
logiques permettant au processeur deffectuer les oprations lmentaires nces-
saires lexcution des instructions machine. Elle inclut donc les circuits daddition,
de soustraction, de multiplication, de comparaison, etc. Dans ce module se trouvent
galement des registres dont lobjet est de contenir les donnes sur lesquelles vont
porter les oprations effectuer. Dans notre exemple, lUAL possde deux registres
dentre (E1 et E2) et un registre de sortie (S).
Pour faire une addition :
la premire donne est place dans E1 via le bus interne de donnes;
la seconde donne est place dans E2 via le bus interne de donnes;
la commande daddition est dlivre au circuit daddition via le bus interne de
commandes;
le rsultat est plac dans le registre S.
Sur notre machine on note galement un registre particulier, le PSW (Program
Status Word), qui joue un rle fondamental de contrle de lexcution dun programme
et qui tout instant donne des informations importantes sur ltat de notre micropro-
cesseur. Par exemple puisque nous travaillons sur des mots de longueur finie la valeur
dun entier cod sur un mot ne peut dpasser la valeur maximale reprsentable sur ce
Dunod La photocopie non autorise est un dlit.

mot. Lorsque nous faisons laddition de deux entiers le rsultat peut avoir une valeur
qui nest pas reprsentable sur un mot mmoire : il y a alors dpassement de capa-
cit. Ce dpassement de capacit doit tre signal et not pour ne pas perturber le
fonctionnement de lordinateur. Ce type dinformation est stock dans le PSW.

Lunit de commande
Elle excute les instructions machines et pour cela utilise les registres et lUAL du
microprocesseur. On y trouve deux registres pour la manipulation des instructions
(le compteur ordinal CO, le registre dinstruction RI), le dcodeur, le squenceur et
deux registres (le registre dadresses RAD et le registre de donnes RDO) permettant
12 1 Structure gnrale et fonctionnement dun ordinateur

la communication avec les autres modules via le bus. Enfin, via le bus de commandes,
elle commande la lecture et/ou lcriture dans la mmoire centrale.
Le compteur ordinal CO
Cest un registre dadresses. chaque instant il contient ladresse de la prochaine
instruction excuter. Lors de lexcution dune instruction il est prvu, au cours de
cette excution, la modification du contenu du CO. Ainsi en fin dexcution de
linstruction courante le compteur ordinal pointe sur la prochaine instruction excuter
et le programme machine peut continuer se drouler.
Le registre dinstruction RI
Cest un registre de donnes. Il contient linstruction excuter.
Le dcodeur
Il sagit dun ensemble de circuits dont la fonction est didentifier linstruction
excuter qui se trouve dans le registre RI, puis dindiquer au squenceur la nature de
cette instruction afin que ce dernier puisse dterminer la squence des actions
raliser.
Le squenceur
Il sagit dun ensemble de circuits permettant lexcution effective de linstruction
place dans le registre RI. Le squenceur excute, rythm par lhorloge du micropro-
cesseur, une squence de microcommandes (micro-instructions) ralisant le travail
associ cette instruction machine. Pour son fonctionnement le squenceur utilise
les registres et lUAL. Ainsi lexcution effective dune instruction machine se traduit
par lexcution dune squence de micro-instructions excutables par les circuits de
base du microprocesseur. Nous reviendrons plus en dtail sur cet aspect des choses
dans le chapitre 7, consacr lexcution des instructions machines.
Le registre RAD
Cest un registre dadresses. Il est connect au bus dadresses et permet la slection
dun mot mmoire via le circuit de slection. Ladresse contenue dans le registre
RAD est place sur le bus dadresses et devient la valeur dentre du circuit de slection
de la mmoire centrale qui va partir de cette entre slectionner le mot mmoire
correspondant.
Le registre RDO
Cest un registre de donnes. Il permet lchange dinformations (contenu dun mot
mmoire) entre la mmoire centrale et le processeur (registre).
Ainsi lorsque le processeur doit excuter une instruction il :
place le contenu du registre CO dans le registre RAD via le bus dadresses et le
circuit de slection;
dclenche une commande de lecture mmoire via le bus de commandes;
reoit dans le registre de donnes RDO, via le bus de donnes, linstruction;
1.3 Fonctionnement : relation microprocesseur / mmoire centrale 13

place le contenu du registre de donnes RDO dans le registre instruction RI via le


bus interne du microprocesseur.
Pour lire une donne le processeur :
place ladresse de la donne dans le registre dadresses RAD;
dclenche une commande de lecture mmoire;
reoit la donne dans le registre de donnes RDO;
place le contenu de RDO dans un des registres du microprocesseur (registres gn-
raux ou registres dentre de lUAL).
On dit que pour transfrer une information dun module lautre le microproces-
seur tablit un chemin de donnes permettant lchange dinformations. Par exemple
pour acqurir une instruction depuis la mmoire centrale, le chemin de donnes est
du type : CO, RAD, commande de lecture puis RDO, RI.

1.3 FONCTIONNEMENT : RELATION


MICROPROCESSEUR / MMOIRE CENTRALE
Lobjet de cette partie est de prsenter succinctement comment sexcute un programme
machine sur le matriel que nous venons de dfinir. Pour tre excutable une instruc-
tion doit ncessairement tre prsente en mmoire centrale. La mmoire centrale
contient donc des instructions et des donnes. De plus toutes les informations en
mmoire sont codes sur un alphabet binaire. Les informations sont alors, quelle que
soit leur nature, des suites de 0 et de 1. Il faut donc pouvoir diffrencier instructions
et donnes afin que le registre instruction RI contienne bien des instructions et non
des donnes (et rciproquement). Dans le cas contraire le dcodeur ne pourrait inter-
prter la nature du travail faire (RI ne contenant pas une instruction mais une

Mmoire
Instructions Donnes

5
Dunod La photocopie non autorise est un dlit.

3
Horloge
4 1
2

Figure 1.9 Excution dune instruction.


14 1 Structure gnrale et fonctionnement dun ordinateur

donne). En gnral lors du placement du programme machine et des donnes dans


la mmoire centrale les instructions et les donnes sont spares et occupent des
espaces mmoires diffrents (voir figure 1.9). la fin du chargement du programme
machine et des donnes en mmoire le compteur ordinal CO reoit ladresse de la
premire instruction du programme excuter.
Lexcution peut alors commencer. Le principe gnral dexcution est illustr
dans la figure 1.9.
Les diffrentes phases de lexcution dune instruction sont les suivantes :
1. le contenu du compteur ordinal CO est plac dans le registre dadresses RAD : il
y a slection de linstruction excuter;
2. une commande de lecture de la mmoire centrale est dclenche via le bus de
commandes;
3. linstruction est transfre de la mmoire centrale vers le registre instruction RI
via le bus de donnes et le registre de donnes RDO;
4. le dcodeur analyse linstruction place dans le registre instruction RI, reconnat
cette instruction et indique au squenceur la nature de linstruction;
5. le squenceur dclenche au rythme de lhorloge la squence de micro-instructions
ncessaires la ralisation de linstruction.
On peut rsumer les tapes de lexcution dune instruction (chargement/dco-
dage/excution) par lalgorithme suivant :
dbut
charger linstruction excuter depuis la mmoire dans le registre
instruction;
modifier le compteur ordinal pour quil pointe sur la prochaine
instruction excuter;
dcoder linstruction qui vient dtre charge dans le registre
dinstruction;
charger les donnes ventuelles dans les registres;
excuter la squence des micro-instructions permettant la ralisation
de linstruction;
fin
Les oprations charger/modifier ralisent le chargement de linstruction dans le
registre dinstruction RI. Cette phase est la phase dite de FETCH.
Enfin, lexcution dun programme machine peut tre dcrite par lalgorithme
suivant :
dbut
excuter la premire instruction du programme
tant que ce nest pas la dernire instruction
faire
excuter linstruction;
fin faire
fin
1.4 Un exemple 15

1.4 UN EXEMPLE
Pour rsumer ce que nous venons dtudier, nous allons prendre un exemple de
problme rsoudre avec un ordinateur. Nous dfinissons tout dabord le problme
et lordinateur cible cest--dire son langage de programmation (langage machine).
Puis nous construisons le programme machine excutable par cet ordinateur. Enfin
nous plaons ce programme en mmoire centrale. Il peut alors tre excut par le
microprocesseur.

1.4.1 Le problme
Notre problme consiste raliser laddition de X qui vaut 4 avec Y qui vaut 1 et
placer le rsultat dans Z. Nous souhaitons donc, laide de notre ordinateur, raliser
lopration : Z = X + Y avec X = 4 et Y = 1.

1.4.2 Lordinateur
Cet ordinateur a la structure gnrale dfinie dans la figure 1.11. Les mots de la
mmoire sont des octets (8 bits), tous les registres du microprocesseur ont une largeur
de 8 bits, les instructions et les donnes entires sont codes sur un mot mmoire.
Donnes : X est cod : 000001002 ; Y est cod : 000000012.

1.4.3 Le langage machine


Le code opration est cod sur 4 bits, le champ oprande sur 4 bits. Le champ oprande
ne rfrence quune donne. Ainsi pour faire laddition de deux nombres un tel
langage suppose que la premire donne est spcifie dans linstruction et la seconde
occupe une adresse implicite. Dans de nombreuses machines cette adresse implicite
est un registre appel registre Accumulateur (not A). Laddition porte alors sur la
donne spcifie dans linstruction et le contenu de A, le rsultat tant plac dans A.

Code opration Champ oprande


Dunod La photocopie non autorise est un dlit.

0001 0100

0001 0100 Charger le contenu du mot mmoire dadresse 0100 dans le registre A
Additionner le contenu du registre A avec le contenu du mot
0010 0101
mmoire dadresse 0101 et placer le rsultat dans le registre A
0011 0110 Placer le contenu du registre A dans le mot mmoire dadresse 0110

0000 Stopper le programme

Figure 1.10 Le langage de la machine.


16 1 Structure gnrale et fonctionnement dun ordinateur

Les instructions du langage sont dfinies dans la figure 1.10. La figure 1.11 rsume
les diffrentes phases amenant lexcution du programme machine solution de notre
problme sur cette machine :
les donnes ont t charges aux adresses 0100 (pour X), 0101 (pour Y), le rsultat
ladresse 0110 (pour Z);
le programme machine est charg ladresse 0111;
le compteur ordinal est charg avec ladresse 0111.
titre dexercice vrifiez que lexcution du programme machine rsout bien notre
problme.

Faire laddition
de X qui vaut 4 0001 0100
et de Y qui vaut 1, Traduction en langage machine 0010 0101 Programme
placer le rsultat 0011 0110 machine
dans Z 0000

Z=X+Y Chargement
en mmoire
centrale

Mmoire
Instructions
Adresses
Donnes
0011 11001001
0100 00000100 X=4
A 0101 00000001 Y=1
0110 00000000 Z=X+Y
Excution 0111 00010100
Horloge RI
1000 00100101
CO
RAD 1001 00110110
RDO 1010 0000

Figure 1.11 Le programme solution.

1.5 LES UNITS DCHANGES


Les units dchanges permettent la communication entre les modules du processeur
et les priphriques. Cette fonction de communication est complexe et nous la
dtaillons dans le chapitre 9.
Une unit dchange a une double nature :
elle est en communication, via le bus interne du processeur, avec la mmoire
centrale et le microprocesseur. Des instructions machines spcifiques permettent
1.6 Conclusion 17

les changes entre mmoire centrale et unit dchange. On trouve des instruc-
tions dcriture permettant au microprocesseur de placer des informations dans
lunit dchange et des instructions de lecture permettant au microprocesseur
dacqurir des informations partir des units dchanges. De plus des doutils de
synchronisation permettant dharmoniser les activits du processeur avec celles
des priphriques quil pilote sont ncessaires : il ne faut, par exemple, envoyer
des caractres vers une imprimante que si celle-ci est prte imprimer et attendre
dans le cas contraire. Dans nos ordinateurs les units dchanges ne communi-
quent pas directement avec le bus interne du processeur mais au travers de bus,
dits bus dextension. Il existe une assez grande varit de ces bus dextension
(ISA, USB, FireWire, Fiberchanel, PCI) qui satisfont des fonctionnalits diverses
et plus ou moins gnrales. Nous reviendrons plus en dtail sur cette question
dans le chapitre traitant des questions de communication;
elle est en communication avec les priphriques et ce titre doit tre capable de
les piloter.

1.6 CONCLUSION
Dans ce chapitre nous avons fait le tour de toutes les tapes importantes ncessaires
la rsolution dun problme avec un ordinateur. La figure 1.12 rsume ces diff-
rentes tapes.

Programme assembleur/machine
n)
Problme
t atio
i Chargement (SE)
x plo
de Programme machine en mmoire
me
yst (Systme chargement Compteur Ordinal (CO)
(S (adresse de la premire instruction)
Algorithme on dexploitation)
il ati
mp
Co
excution programme machine
programme excution squentielle
(Processeur)
Langage de haut niveau du programme machine
Dunod La photocopie non autorise est un dlit.

(exemple C)

excution dune instruction


Programme Chargement (fetch)
machine et modification du CO
(squence Dcodage
dinstructions Excution de la squence
machine) de micro-instructions

Figure 1.12 Principales tapes de la rsolution dun problme avec lordinateur.


18 1 Structure gnrale et fonctionnement dun ordinateur

Nous voyons quune des tapes consiste exprimer lalgorithme avec un langage
de haut niveau. En fait il existe plusieurs niveaux de langage de programmation :
les langages de haut niveau (C, C++ , ADA, JAVA, COBOL, PASCAL, PYTHON)
ne sont pas directement excutables par le processeur cible que nous utilisons :
lordinateur. Il faut donc traduire les programmes exprims dans ces langages
afin dobtenir le programme machine excutable par le processeur cible. Cest
lobjet de la compilation et/ou de linterprtation. Les compilateurs (interpr-
teurs) sont des programmes (du Systme dExploitation : SE) qui ont la connais-
sance de la syntaxe des langages de haut niveau et qui connaissent le langage
machine de la machine cible. Ces langages sont ncessaires car on ne sait pas
traduire directement le langage naturel en langage machine alors que lon sait
construire des traducteurs pour ces langages de haut niveau;
les langages de bas niveaux sont des langages directement excutables par un
microprocesseur. Ce sont les langages machines. Ils se prsentent sous deux formes :
les langages machine cods binaires. Ce sont les seuls rellement excutables
par le processeur. Cods sous forme binaire ils sont difficiles manipuler;
les langages dassemblage. Ce sont des langages machines symboliques au sens
o les codes opration et les champs oprande dune instruction sont exprims
laide de symboles.
Par exemple dans la petite machine qui nous a servis dexemple, 00010010 est une
instruction machine demandant de charger le contenu de ladresse mmoire 0010 dans
le registre accumulateur A du microprocesseur. Il existe dans le langage dassem-
blage de cette machine une instruction qui a la forme Load X o Load exprime
laide de symboles alphanumriques le code opration cod binaire 0001 et X exprime
symboliquement ladresse mmoire de la donne X. Ce type de langage est beau-
coup plus simple utiliser que le langage machine cod binaire. Bien sr un programme
crit en langage dassemblage nest pas directement excutable par le microproces-
seur. Cependant la traduction, langage dassemblage, langage machine pur, est simple
car chaque instruction du langage machine correspond une instruction du langage
dassemblage. Le traducteur de tels langages sappelle lassembleur. Une program-
mation dans ce type de langage est possible mais de moins en moins frquente. Elle se
justifie encore lorsque lon recherche une grande efficacit, par exemple, dans la
programmation des jeux vidos ou des interfaces graphiques.
Le traducteur (compilateur/interprteur) place le rsultat de sa traduction (programme
machine) sur le disque magntique. Le programme machine doit tre charg en
mmoire centrale pour tre excut par le microprocesseur. Cest un programme du
systme dexploitation, le chargeur, qui ralise ce chargement en mmoire. Le char-
geur connat ladresse de la premire instruction du programme machine, il peut
ainsi initialiser le compteur ordinal pour lancer lexcution. partir de ce moment les
instructions, une une, sont prises en charge par le microprocesseur qui les excute.
La premire partie de cet ouvrage est consacre au passage du problme au
programme machine; elle prsente en dtail le fonctionnement du compilateur et des
autres outils permettant de construire un programme machine. Elle approfondit
1.6 Conclusion 19

ensuite les notions rencontres ici de langage machine, de modes dadressages et de


codages pour la reprsentation des informations.
Dans la seconde partie nous dtaillons :
la fonction dexcution o nous apportons des prcisions sur ce quest rellement
lexcution dune instruction machine. Nous prcisons la notion de micro-instruction.
Dans cette partie nous abordons galement la notion dinterruption qui est un
mcanisme fondamental dans nos ordinateurs;
la fonction de mmorisation en prcisant les diffrents types de mmoires consti-
tuant la mmoire centrale. Nous abordons les problmes de synchronisation entre
processeur et mmoire centrale et voyons comment la mmoire cache apporte des
solutions aux diffrences de vitesse entre microprocesseur et mmoire centrale;
la fonction de communication dans laquelle nous revenons sur la manire dchanger
des informations entre processeur et priphriques.
Enfin, nous commenons le voir, le systme dexploitation joue un rle central
dans la gestion et le fonctionnement des ordinateurs. Nous y consacrons la troisime
partie de cet ouvrage.
Pour terminer cette introduction, quelques mots pour prciser le processus de
dmarrage dun ordinateur. En plus de la mmoire centrale (communment appele
mmoire RAM) il existe une mmoire ROM, dite mmoire morte, uniquement acces-
sible en lecture donc non modifiable par programme et qui de plus nest pas volatile :
quand le courant est coup, le contenu de cette mmoire ROM nest pas altr
contrairement aux mmoires RAM pour lesquelles le contenu est perdu lorsque le
courant est coup. Cette mmoire ROM est charge, une fois pour toutes, avec un
programme : le bootstrap.
Par ailleurs sur le disque magntique est plac le systme dexploitation. Le
systme dexploitation est un ensemble de programmes excutables sur le micropro-
cesseur. Un de ces programmes, linterprteur de langage de commandes (le Shell
sous Unix), comprend des commandes telles que demander lexcution dun diteur
de texte, dun compilateur, dun lanceur de programmes.
Le bootstrap connat ladresse sur le disque du systme dexploitation, en particu-
lier de son noyau compos entre autre de linterprteur de langage de commandes.
Lors de la mise sous tension de lordinateur, automatiquement le bootstrap sexcute :
le bootstrap charge en mmoire centrale le noyau du systme dexploitation (en
Dunod La photocopie non autorise est un dlit.

particulier linterprteur du langage de commande) et lance son excution;


ce dernier attend, au travers dune interface de communication, les commandes de
lutilisateur. Celui-ci demande :
un diteur de texte pour saisir le code de son programme;
un compilateur pour le traduire en langage machine;
le lancement de lexcution de son programme machine rsultat de la traduction.
Pour cela, lutilisateur, doit connatre le langage de commande quest capable
de comprendre linterprteur de langage de commande du systme dexploita-
tion utilis. Il existe plusieurs types dinterface de communication qui vont de
lcriture textuelle de la ligne de commande, encore courante sous Unix, aux
20 1 Structure gnrale et fonctionnement dun ordinateur

interfaces graphiques sophistiques que lon trouve sous Windows, Mac OS X


ou Linux. Avec ces interfaces graphiques on ncrit plus de ligne de commandes,
dont il faut connatre la syntaxe, mais on clique sur des icnes faisant rfrence
au programme que lon souhaite excuter;
le lanceur du programme machine le charge (via le chargeur) en mmoire
centrale, place ladresse de la premire instruction excuter dans le compteur
ordinal : le programme machine sexcute.
PARTIE 1

PRODUCTION
DE PROGRAMMES

Lensemble des chapitres de cette partie est centr autour de la notion de chane de
production de programmes. partir de la description du rle premier dun ordina-
teur, nous prsentons succinctement les notions fondamentales dalgorithmes, de
programmation ainsi que les diffrents niveaux de langages disponibles sur un ordi-
nateur. Nous abordons ainsi les concepts de langage machine et langage haut niveau,
puis nous nous intressons aux diffrentes tapes permettant la traduction dun
programme crit en langage haut niveau vers son quivalent crit en langage machine
et excutable par lordinateur.
Le chapitre 2 introduit la notion dalgorithme et les diffrents niveaux de langages
disponibles sur un ordinateur. Le chapitre 3 dcrit la chane de production de
programmes et prsente les diffrentes tapes qui la composent, cest--dire la compi-
lation, ldition de liens et le chargement. Enfin, le chapitre 4 prsente la notion de
langage machine, de langage dassemblage et dcrit les principales conventions de
reprsentation des informations (nombres, caractres) sur la machine. Le chapitre 5
est consacr aux diffrents circuits logiques qui constituent la partie matrielle de
lordinateur et la technologie mise en uvre pour leur fabrication. Cette partie
sachve avec un ensemble dexercices corrigs.
Mots-cls : algorithme, compilation, dition des liens, langage machine, repr-
sentation binaire, circuits logiques, transistors.
Chapitre 2

Du problme
au programme machine 2

partir de la description du rle premier dun ordinateur, nous exposons le


processus qui permet un tre humain de soumettre la rsolution dun problme un
ordinateur, ceci sous forme dun programme crit dans un langage de programma-
tion dit langage de haut niveau, qui code une solution appele algorithme. Lordina-
teur ne pouvant excuter que des instructions codes en langage machine, il est
ncessaire de traduire ce langage de haut niveau vers le langage machine de lordina-
teur : cest le rle de la chane de production de programmes.

2.1 DU PROBLME AU PROGRAMME


2.1.1 Rappel du rle dun ordinateur
Lordinateur est prsent de nos jours dans de multiples domaines et lieux. En une
cinquantaine dannes, il a envahi notre quotidien et il est bien des domaines
prsent o son utilisation et sa puissance se rvlent indispensables. En effet, lordi-
nateur a investi de multiples espaces et remplit des missions trs diverses qui vont du
calcul scientifique pour par exemple squencer lADN ou analyser les modles
mtorologiques, au pilotage de procd tel que la surveillance dune centrale
nuclaire et encore les jeux ou la communication via lInternet.
De fait, la multiplicit des missions remplies par lordinateur cache en quelque
sorte son unique rle : archiver des donnes et excuter un programme de traitement
24 2 Du problme au programme machine

sur ces donnes en vue de rsoudre un problme. Lordinateur offre ltre humain
une puissance de stockage, de calcul et de traitement bien suprieure ce quoi il
peut prtendre par lui-mme. Prenons trois exemples :
en palontologie, lanalyse cladistique a pour but de mettre en vidence les liens
de parent existants entre diffrents organismes afin didentifier des clades1 et de
construire les arbres volutifs. Pour parvenir ce but, le palontologue doit iden-
tifier entre plusieurs organismes la possession en commun de caractres drivs
due une ascendance commune. Une telle recherche ne peut se faire que par une
comparaison simultane dune grande quantit de donnes, cest--dire de carac-
tres et despces, quil est inenvisageable de raliser sans le concours de lordi-
nateur. En effet la quantit de donnes comparer est telle que pour un tre
humain tablir un seul arbre demanderait un temps considrable. Grce lordi-
nateur, il est possible dtablir et de calculer des millions darbres possibles en un
temps raisonnable2 ;
en informatique de gestion, les systmes de bases de donnes permettent de
stocker, classer et grer des millions de donnes dans un espace bien plus rduit
quau temps o seul le support papier existait. Par ailleurs, les performances des
mthodes dinterrogations lies ces systmes rendent possibles des extractions
de donnes suivant des objectifs multicritres dans des temps rduits, l o il
faudrait un traitement manuel de plusieurs heures. Songez au catalogue informa-
tique de la bibliothque municipale de votre ville, comme il est ais de demander
lordinateur de rechercher dans lensemble des livres traitant de la musique
baroque, les seuls ouvrages consacrs la fois Haendel et Vivaldi. Vous navez
plus alors qu vous diriger vers le rayon dsign, prendre le livre correspondant
la cote fournie; l o il vous aurait fallu soit compulser le classeur papier tri par
ordre alphabtique ou chacun des livres du rayon musique;
dans le domaine du contrle de procd, lordinateur supple lhumain en
offrant une plus grande vitesse de raction aux vnements et une plus grande
fiabilit dans le contrle ralis. La complexit de pilotage dun avion de chasse,
par exemple, est telle, la quantit dinformations remontes au cockpit si impor-
tante (informations de pilotage, informations radios, informations lies au systme
darmes, informations lies au systme de dfense antimissiles), que le pilote ne
peut pas piloter son appareil sans le concours de linformatique embarque. Celle-
ci lui permet entre autre une vitesse de raction suprieure en prenant elle-mme
en main des rponses automatises : ainsi le systme de dfense antimissiles est
capable danalyser de lui-mme le type de missiles intercepter (thermique ou
radar), de lancer les leurres adapts (fuses clairantes ou feuilles mtalliques)
avant de remonter linformation au pilote pour que celui-ci dvie son avion afin
dviter limpact.

1. Une clade (du grec klados rameau ) dsigne une branche dun arbre volutif comprenant un
anctre et ses descendants.
2. TASSY Pascal, Le palontologue et lvolution, Collection Quatre Quatre, ditions Le Pommier-
Fayard, septembre 2000, 158 pages.
2.1 Du problme au programme 25

2.1.2 Problme, algorithme, programme et instructions


Lordinateur est puissant et rapide mais il na aucune intelligence propre et aucune
imagination. Tout ce dont lordinateur est capable, cest dexcuter ce que ltre humain
lui commande de faire; en aucun cas, il ne peut fournir de lui-mme une solution
un problme donn. Ltre humain utilise donc lordinateur pour rsoudre un problme,
encore faut-il que ce problme puisse tre exprim lordinateur : cest lactivit de
programmation. Ainsi, vouloir rsoudre un problme laide de lordinateur deman-
dera de mettre en uvre le processus suivant (figure 2.1) :
charge de ltre humain de trouver une ou plusieurs solutions au problme;
au moins une des solutions trouves est ensuite exprime sous forme de rgles
opratoires telles que des itrations, des conditionnelles, des tests boolens, des
oprations arithmtiques : cest la construction de lalgorithme;
lalgorithme est cod sous forme dinstructions dans un langage excutable et
comprhensible par lordinateur : cest lactivit de programmation qui construit
un programme. Une instruction quivaut un ordre qui entrane lexcution par
lordinateur dune tche lmentaire.

1.

Jai un problme rsoudre :


b
a primtre ?

2. Jcris une solution !


ALGORITHME
Primtre = 2 a + 2 b
Dunod La photocopie non autorise est un dlit.

3. En utilisant un langage de programmation, je code la solution


pour la faire excuter par lordinateur

PROGRAMME constitu dinstructions

function perimetre (a, b : in integer) return integer is


begin
perimetre := (2 * a) + (2 * b);
end;

Figure 2.1 Rsoudre un problme laide de lordinateur.


26 2 Du problme au programme machine

On notera quil dcoule de ce processus que lordinateur a besoin de trois lments


essentiels :
un moyen de communication avec ltre humain : clavier, souris, cran, etc.;
un moyen dexcuter les instructions du langage : le processeur;
un moyen de conserver des donnes : les priphriques de stockage tels que le
disque dur, la disquette, le CD-ROM.

2.2 LES DIFFRENTS NIVEAUX DE LANGAGE


DE LORDINATEUR
La programmation est donc lactivit qui consiste traduire par un programme un
algorithme dans un langage assimilable par lordinateur. Cette activit de program-

function perimetre (a, b : in integer) return integer is


begin
perimetre := (2 * a) + (2 * b);
end; Programme en langage de haut niveau
instructions de haut niveau

COMPILATEUR

perimetre : pop Rg1 R1


pop Rg1 R2
mul Im R1 2
mul Im R2 2 Programme en langage dassemblage :
add Rg2 R1 R2 Instructions composes de Mmmoniques
push Rg1 R1
ret

ASSEMBLEUR

MMOIRE
01101110111110011
01111010001011100 Programme excuter :
10111101110111111 instructions machine et valeurs en binaire
CPU
00111011110111011
00111111000111101

BUS Traduction

Figure 2.2 Les diffrents niveaux de programmation.


2.2 Les diffrents niveaux de langage de lordinateur 27

mation peut seffectuer diffrents niveaux, plus ou moins proches et dpendants de


larchitecture physique de la machine. Essentiellement on distinguera trois niveaux
(figure 2.2) : la programmation de bas niveau en langage machine, la programma-
tion de bas niveau en langage dassemblage, la programmation de haut niveau
laide dun langage de haut niveau ou langage volu.

2.2.1 Langage machine


La donne de base manipule par la machine physique est le bit (Binary Digit) qui
ne peut prendre que deux valeurs : 0 et 1. Ce 0 et 1 correspondent aux deux niveaux
de voltage (0-1 et 2-5 volts) admis pour les signaux lectriques issus des composants
lectroniques (transistors) qui constituent les circuits physiques de la machine (voir
chapitre 5, Les circuits logiques). Au niveau physique, toutes les informations (nombres,
caractres et instructions) ne peuvent donc tre reprsentes que par une combi-
naison de 0 et 1, cest--dire sous forme dune chane binaire. Cest le niveau de
programmation le plus bas et le plus proche du matriel, celui du langage machine.
ce niveau, la programmation et les instructions du langage sont totalement
dpendantes de larchitecture de la machine et du processeur et manipulent directe-
ment les registres du processeur ou encore les adresses en mmoire physique, tout
cela sous forme de chanes binaires. Ainsi, une instruction machine (figure 2.3) est
une chane binaire compose essentiellement de deux parties :
le code opration dsigne le type dopration effectuer (addition, ou logique,
lecture mmoire);
le reste de linstruction sert dsigner les oprandes, cest--dire les donnes sur
lesquelles lopration dfinie par le code opration doit tre ralise. Ces oprandes
sont soit des mots mmoires, soit des registres du processeur ou encore des valeurs
immdiates.

32 bits

adresse code opration dsignation des oprandes


Dunod La photocopie non autorise est un dlit.

8 bits : 28 instructions diffrentes


00000000 : addition
00100110 : multiplication
etc.

Figure 2.3 Instruction machine.

Chaque instruction est par ailleurs repre par une adresse qui mmorise la posi-
tion de linstruction dans le programme.
Ce niveau de programmation est videmment trs fastidieux, voire impraticable
par ltre humain.
28 2 Du problme au programme machine

2.2.2 Langage dassemblage


Une premire amlioration a consist substituer aux chanes binaires reprsentant
des codes oprations ou des adresses mmoires, des chanes de caractres plus ais-
ment manipulables par ltre humain que lon appelle des mnmoniques : cest le
langage dassemblage qui constitue une variante symbolique du langage machine,
permettant au programmeur de manipuler les instructions de la machine en saffran-
chissant notamment des codes binaires et des calculs dadresse. Le langage dassem-
blage comporte le mme jeu dinstructions que le langage machine et est galement
spcifique de la machine.
Une instruction du langage dassemblage (figure 2.4) est compose de champs,
spars par un ou plusieurs espaces. On identifie :
un champ tiquette, non obligatoire, qui correspond ladresse de linstruction
machine;
un champ code opration, qui correspond la chane binaire code opration de
linstruction machine;
un champ oprandes pouvant effectivement comporter plusieurs oprandes spars
par des virgules qui correspondent aux registres, mots mmoires ou valeurs imm-
diates apparaissant dans les instructions machine.

tiquette code opration dsignation des oprandes

linstruction en langage dassemblage

tiquette code opration oprandes


boucle : ADD Rg2 R0, R1

correspond linstruction machine

adresse code opration oprandes


01110110 00000000 111 0000 0001

Figure 2.4 Instruction en langage dassemblage.

La programmation au niveau du langage dassemblage, quoique bien plus aise


quau niveau machine, est encore fastidieuse pour ltre humain et requiert surtout
de connatre larchitecture du processeur et de la machine. On parle ainsi du langage
dassemblage du processeur Intel Pentium ou du langage dassemblage du proces-
seur Athlon AMD.
Lorsque la programmation en langage dassemblage est mise en uvre, elle
ncessite une tape de traduction, car seules les instructions en langage machine sont
comprhensibles et excutables par la machine. Pour pouvoir excuter un programme
crit en langage dassemblage, il faut donc traduire les instructions de celui-ci vers
2.2 Les diffrents niveaux de langage de lordinateur 29

les instructions machine correspondantes. Cette phase de traduction est ralise par
un outil appel lassembleur1.

2.2.3 Langage de haut niveau ou volu


Ltape suivante est venue de la gense des langages volus ou langages de haut
niveau. Ces langages se caractrisent principalement par le fait quils sont, contraire-
ment aux deux autres types de langage que nous venons daborder, totalement ind-
pendants de larchitecture de la machine et du processeur. Par ailleurs, ils offrent un
pouvoir dexpression plus riche et plus proche de la pense humaine, rendant ainsi
plus aise la traduction des algorithmes tablis pour rsoudre un problme. Ces langages
de fait sont davantage dfinis par rapport aux besoins dexpression du programmeur
que par rapport aux mcanismes sous-jacents de la machine physique. Ils intgrent
ainsi des structures opratoires semblables celles des algorithmes telles que les
itrations, les boucles, les conditionnelles.
Ainsi les langages de haut niveau sont plus ou moins spcialiss par rapport une
classe de problmes rsoudre : COBOL est destin aux applications de gestion tandis
que FORTRAN est plutt orient vers le domaine du calcul scientifique. Dautres
langages sont plus universels tels que C, C++ , Ada, Java ou encore Pascal.
De nos jours, les langages haut niveau sont classs selon plusieurs grandes familles.
Deux familles de langages importants et courants sont la famille des langages dits
procduraux et la famille des langages dits objets :
le langage procdural : lcriture dun programme est base sur les notions de proc-
dures et de fonctions, qui reprsentent les traitements appliquer aux donnes du
problme, de manire aboutir la solution du problme initial. Les langages C
et Pascal sont deux exemples de langages procduraux;
le langage objet : lcriture dun programme est base sur la notion dobjets, qui
reprsentent les diffrentes entits entrant en jeu dans la rsolution du problme.
chacun de ces objets sont attaches des mthodes, qui lorsquelles sont acti-
ves, modifient ltat des objets. Les langages Java et Eiffel sont deux exemples
de langages objets.
Les langages volus tant indpendants de la machine, ils ne peuvent tre direc-
tement excuts par la machine. Un programme crit en langage haut niveau doit
Dunod La photocopie non autorise est un dlit.

donc tre converti vers son quivalent en langage machine. Cest le rle du traduc-
teur de langage, qui est spcifique chaque langage volu utilis.
Les traducteurs sont diviss en deux catgories : les compilateurs et les inter-
prteurs.
un compilateur traduit une fois pour toutes le langage volu en langage machine
et construit ainsi un programme qualifi de programme objet qui est stock sur un
support de masse tel quun disque;

1. Par abus de langage, le terme assembleur dsigne tout la fois le langage dassemblage lui-
mme et loutil de traduction.
30 2 Du problme au programme machine

un interprteur lit une une les instructions du langage volu, puis il les convertit
immdiatement en langage machine avant quelles ne soient excutes au fur et
mesure. Il ny a pas de gnration dun fichier objet conservant la traduction des
instructions en langage volu vers le langage machine et la traduction doit donc
tre refaite chaque nouvelle demande dexcution du programme.
Plus gnralement, le passage dun programme dit programme source crit en
langage de haut niveau vers un programme excutable en langage machine est assur
par un processus comportant plusieurs tapes dont lune est la compilation, que lon
qualifie de chane de production de programmes.

2.3 INTRODUCTION LA CHANE DE PRODUCTION


DE PROGRAMMES
La chane de production de programmes est prsente sur la figure 2.5.
Lditeur de texte est un logiciel interactif permettant de saisir du texte partir
dun clavier et de le stocker dans un fichier le programme source , sur un support

Algorithme

diteur
Programme source
langage volu

Compilateur
Compilateur

Langage dassemblage

Assembleur

Programme objet
mmoire langage machine
centrale
cpu diteur de liens

Programme translatable
langage machine
Programme translat
langage machine
Chargeur

Figure 2.5 Chane de production de programmes.


2.4 Un exemple 31

de masse tel quun disque. Le compilateur permet la traduction du programme source


en un programme objet qui est soit directement le langage machine, soit le langage
dassemblage. Le passage du langage dassemblage au langage machine se fait par
lintermdiaire dun autre traducteur, lassembleur. Le programme objet est stock
sur le disque. Lditeur de liens est un logiciel qui permet de combiner plusieurs
programmes objet en un seul et de rsoudre des appels des modules de librairie.
Lditeur de liens rsout les rfrences externes.
Le programme construit lissue de ldition des liens comporte une allocation
des instructions commenant 0. Pour tre excut, le programme doit tre transfr
depuis le disque vers la mmoire centrale : cest le rle du chargeur de placer le
programme en mmoire centrale partir dune adresse dimplantation et de trans-
later toutes les adresses du programme de la valeur de ladresse dimplantation.

2.4 UN EXEMPLE
Considrons que nous souhaitions crire un programme qui permet le calcul du pri-
mtre ou de la surface soit dun cercle de rayon r, soit dun carr de ct a, soit dun
rectangle de cts a et b, soit dun triangle quilatral de ct a et de hauteur h. La
premire tape consiste donc crire un algorithme correspondant ce programme,
cest--dire donner une solution possible au problme. Dans une analyse base sur
lutilisation finale dun langage procdural tel que C par exemple, la solution va
sattacher identifier les fonctions raliser : ici, par exemple, nous pouvons identi-
fier deux fonctions, la premire permettant le calcul dun primtre, la seconde
permettant le calcul dune surface, sachant que :
le primtre du carr est gal 4 a, celui du rectangle est gal 2 a + 2 b,
celui du triangle est gal 3 a et celui du cercle est gal 2 r;
la surface du carr est gale a2, celle du rectangle est gale a b, celle du
triangle est gale (h a)/2 et celle du cercle est gale r2.
Lalgorithme suivant pourra tre crit par exemple pour la fonction primtre :
fonction primtre :
paramtres entrants : type de lobjet (triangle, carr, rectangle ou cercle)
caractristiques de lobjet : valeur de a, r, h, b
Dunod La photocopie non autorise est un dlit.

selon lobjet
retourne un entier qui est la valeur du primtre.
dbut
cas objet :
triangle : retourner (3 a);
cercle : retourner (2 r);
carr : retourner (4 a);
rectangle : retourner (2 a + 2 b);
fin cas;
fin
32 2 Du problme au programme machine

Qui se traduit par exemple en langage C par le programme suivant :


#define triangle 1
#define cercle 2
#define carre 3
#define rectangle 4
int perimetre (objet, a, r, h, b)
int objet, a, b, h, r;
{
switch (objet) {
case 1 : return (3 * a);
case 2 : return (2 * * r);
case 3 : return (4 * a);
case 4 : return (2 * a + 2 * b);}
}

Dans une analyse base sur lutilisation finale dun langage objet tel que C++ par
exemple, la solution va sattacher identifier les objets concerns : ici, par exemple,
nous identifierons 4 objets, le cercle, le triangle, le carr et le rectangle, chacun tant
associ deux mthodes, la mthode perimetre et la mthode surface qui lorsquelles
sont appeles rendent respectivement le primtre ou la surface de lobjet concern.
Le carr et le rectangle sont quant eux tous les deux des quadrilatres pour lesquels
le calcul de la surface et du primtre seffectue de manire identique (le carr est un
rectangle de cts a et b pour lequel a = b).
Dans cette analyse, nous allons dfinir une classe quadrilatere, une classe cercle
et une classe triangle. Une classe dfinit une collection dobjets qui partagent les
mmes proprits et sur lesquels les mmes traitements peuvent tre excuts. Nous
crons ensuite deux objets carre et rectangle, instances de la classe quadrilatere,
un objet rond instance de la classe cercle et un objet triangle_iso, instance de la
classe triangle.
Lalgorithme qui en dcoule peut tre de la forme suivante :
dfinition classe quadrilatre (
entier a, b; les cts du quadrilatre;
fonction primtre :: retourner (2 a + 2 b);
fonction surface :: retourner (a b);)
dfinition classe triangle (
entier a, h; le ct et la hauteur du triangle;
fonction primtre :: retourner (3 a);
fonction surface :: retourner ((a h)/2);)
dfinition classe cercle (
entier r; le rayon du cercle;
fonction primtre :: retourner (2 r);
fonction surface :: retourner ( r2);)
2.5 Conclusion 33

Viennent ensuite les dfinitions les objets rectangle, carre, rond et triangle_iso.
Cet algorithme peut se traduire par exemple en langage C++ par le programme
suivant o lon ne tient compte que de la classe quadrilatere et pour lequel par
souci de simplification, les paramtres du rectangle et du carr sont fixs lors de la
dclaration des objets associs :
class quadrilatere
{
int a, b;
public :
int perimetre (void);
int surface (void);
};
int quadrilatere :: perimetre (void)
{
return (2 * a + 2 * b);
}
int quadrilatere :: surface (void)
{
return (a * b);
}
int main()
{
quadrilatere carre (5, 5);
quadrilatere rectangle (7, 9);
int surfacec, perimetrec, surfacer, perimetrer;
surfacec = carre.surface();
perimetrec = carre.perimetre();
surfacer = rectangle.surface();
perimetrer = rectangle.perimetre();
}

2.5 CONCLUSION
Dunod La photocopie non autorise est un dlit.

Ce chapitre nous a permis de comprendre le rle essentiel dun ordinateur savoir


excuter un programme qui est le codage dans un langage comprhensible par la
machine dune solution un problme pos par un tre humain. La solution ce
problme est appele algorithme.
Le programmeur dispose de plusieurs niveaux de langage pour coder son algo-
rithme :
le langage de haut niveau est le niveau de programmation le plus utilis aujourdhui.
Cest un niveau de programmation indpendant de la structure physique de la
machine et de larchitecture du processeur de celle-ci;
34 2 Du problme au programme machine

le langage dassemblage est un langage au contraire dpendant de larchitecture de


la machine physique. Il correspond une forme symbolique du langage machine
associ au processeur;
le langage machine est un langage compos sur un alphabet binaire. Cest le seul
langage excutable directement par le processeur.
Chapitre 3

La chane de production
de programmes 3

La chane de production de programmes dsigne le processus permettant la cration


dun programme excutable plac en mmoire centrale partir dun programme dit
source crit en langage de haut niveau. Ce processus se dcompose en plusieurs tapes
(figure 3.1) que nous allons successivement tudier dans ce chapitre : la compilation,
ldition de liens et enfin le chargement.

prog.c
diteur de texte source Compilateur

prog.o
objet
Bibliothques
diteur de liens

prog.exe
programme excutable
stock sur disque
prog.exe
programme excutable Chargeur
sock en mmoire centrale
Figure 3.1 Chane de production de programmes.
36 3 La chane de production de programmes

Nous abordons ensuite le fonctionnement dun outil trs courant pour simplifier la
construction dun programme excutable partir de plusieurs modules sources :
lutilitaire Make.

3.1 LA COMPILATION
La compilation constitue la premire tape de la chane de production de programmes.
Elle permet la traduction dun programme dit programme source crit le plus souvent
en langage de haut niveau vers un programme dit programme objet qui est soit direc-
tement le langage machine, soit le langage dassemblage. Le programme objet est
stock sur le disque.
Le compilateur est une application. Cest un logiciel dpendant de la machine
physique vers laquelle il doit produire le langage. Ainsi un programme compil sur
une machine A ne sexcutera pas forcment sur une machine B, notamment si B est
diffrente physiquement de A.

Exemple
La compilation dun programme crit en langage C sobtient en tapant la commande
cc o prog.c et produit un fichier objet de nom prog.o. De mme la compilation
dun programme crit en Fortran sobtient en tapant la commande xlf c fichier.f
et produit un fichier objet fichier.o.

Le travail du compilateur se divise en plusieurs phases :


lanalyse lexicale (reconnaissance des mots du langage, cest--dire apprhension
du vocabulaire);
lanalyse syntaxique (vrification de la syntaxe, cest--dire apprhension de la
grammaire);
lanalyse smantique (vrification de la smantique, cest--dire apprhension
du sens) ;
loptimisation et la gnration du code objet.

3.1.1 Grammaire et structure dun langage de haut niveau


Structure dun langage de haut niveau
Avant de dbuter ltude du fonctionnement du compilateur, nous nous attachons
dfinir la structure dun langage haut niveau. La dfinition dun langage de haut niveau
sappuie sur :
un alphabet : cest lensemble des symboles lmentaires disponibles dans le langage
(caractres, chiffres, signes de ponctuation);
un ensemble de mots encore appels lexmes : un mot est un groupe de symboles
lmentaires admis par le langage dont la structure est donne par une grammaire;
3.1 La compilation 37

des phrases ou instructions : une phrase est un groupe de lexmes du langage dont
la structure est elle aussi donne par une grammaire. Cette structure peut tre dcrite
par un arbre qualifi darbre syntaxique.
Par exemple, A1 est un mot du langage compos des symboles lmentaires A et 1.
A1 = 3; constitue une phrase du langage.
Finalement, un programme est constitu comme tant une suite de phrases du
langage, chacune des phrases respectant une syntaxe donne par la grammaire asso-
cie au langage. Formellement, une grammaire est dfinie par :
un ensemble de symboles terminaux qui sont les symboles lmentaires admis dans
le langage (exemples : DEBUT, FIN, *, + , = , );
un ensemble de symboles non terminaux (exemples : <nombre>, <terme>, );
un ensemble de rgles syntaxiques encore appeles productions (exemple :
<nombre> :: = <chiffre> | <nombre> <chiffre>).
Pour dcrire la syntaxe dun langage et spcifier les rgles de production de la
grammaire associe, on utilise couramment la notation dite notation de Backus-Naur
ou BNF (Backus-Naur Form), dveloppe lorigine pour dcrire la syntaxe du langage
Algol 60. Avec ce formalisme, une rgle de production scrit :
<objet_1 du langage> :: = <objet_2 du langage> | <objet_3 du langage>
et dcrit la syntaxe de lobjet_1 du langage comme tant soit lobjet_2 du langage,
soit lobjet_3 du langage. | code lalternative et :: = spare un objet de sa
description.

Exemple
Soient les deux rgles suivantes :
<nombre> :: = <chiffre> | <nombre> <chiffre>
<chiffre> :: = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Le nombre 125 peut tre dcompos comme suit :
<nombre> 125 :: = <nombre> 12 <chiffre> 5
<nombre> 12 :: = <nombre> 1 <chiffre> 2
<nombre> 1 :: = <chiffre> 1
Dunod La photocopie non autorise est un dlit.

Un exemple
Les rgles de Backus-Naur suivantes permettent la description dun langage de
programmation que nous appellerons L_exemple contenant deux types dinstruc-
tions : dune part des instructions permettant doprer des dclarations de variables,
dautre part des instructions de type affectation.
<programme> :: = PROGRAM <identificateur> <corps de programme>
<corps de programme> :: = <suite de dclarations> DEBUT <suite
daffectations> FIN
<suite de dclarations> :: = <dclaration> | <dclaration> <suite
de dclarations>
38 3 La chane de production de programmes

<dclaration> :: = INT <identificateur>;


<suite daffectations> :: = <affectation> | <affectation> <suite
daffectations>
<affectation> :: = <identificateur> = <terme>; |
<identificateur> = <terme> <oprateur> <terme>;
<terme> :: = <entier> | <identificateur>
<oprateur> :: = + | | * | /
<identificateur> :: = <lettre> | <lettre> <chiffre>
<entier> :: = <chiffre> | <entier> <chiffre>
<lettre> :: = A | B | C | D | E. | | X | Y | Z
<chiffre> :: = 0 | 1 | 2 | 3 | 4. | .. | 9

Ainsi, la premire rgle spcifie que lobjet programme est construit partir du
symbole terminal PROGRAM suivi dun objet <identificateur> et dun objet <corps
de programme>. Un objet <identificateur> est lui-mme dcrit comme tant compos
soit dune lettre seule, soit dune lettre suivie dun chiffre. Les lettres admises sont
les 26 lettres majuscules de lalphabet et les chiffres admis sont les chiffres allant
de 0 9. Lobjet <corps de programme> est par ailleurs dfini comme tant un objet
<suite de dclarations> suivi du symbole terminal DEBUT, suivi dun objet <suite
daffectations> suivi du symbole FIN. Et ainsi de suite
Le programme Z suivant a t crit en respectant la syntaxe dicte par ces rgles.
PROGRAM Z
INT A;
INT B;
INT C2;
DEBUT
A = 4;
B = A / 2;
C2 = B + A;
FIN

3.1.2 Analyse lexicale


La premire tape de lopration de compilation sappelle lanalyse lexicale.
Lanalyseur lexical (figure 3.2) lit le programme source caractre par caractre, et
reconnat dans cette suite de caractres les lexmes du langage en sappuyant sur les
rgles de Backus Naur les dfinissant. Par ailleurs, lanalyseur lexical limine les
espaces non significatifs et les commentaires qui nont pas de signification propre.
Pour rendre plus aises les tapes ultrieures, il traduit les lexmes reconnus qui
constituent des chanes de caractres en symboles plus aisment manipulables, par
exemple en entiers.
3.1 La compilation 39

Lexmes

P
r Suite Suite
o
g de caractres de symboles
r Analyseur lexical
a
m
m
e

Erreurs : symboles non reconnus

Figure 3.2 Analyseur lexical.

Ainsi, les lexmes du langage L_exemple peuvent tre cods sur lensemble Z des
nombres entiers positifs, ngatifs ou nuls en appliquant les rgles suivantes :
cas (type_lexme reconnu) :
entier : codage_lexme = valeur de lentier;
symbole + : codage_lexme = 1;
symbole : codage_lexme = 2;
symbole * : codage_lexme = 3;
symbole / : codage_lexme = 4;
symbole = : codage_lexme = 5;
symbole ; : codage_lexme = 6;
symbole PROGRAM : codage_lexme = 7;
symbole DEBUT : codage_lexme = 8;
symbole FIN : codage_lexme = 9;
symbole INT : codage_lexme = 10;
identificateur lettre seule : (position_lettre_alphabet + 10);
identificateur lettre chiffre : ((position_lettre_alphabet + 10) +
26 (chiffre + 1));
fin cas;
Avec ce codage qui est totalement bijectif :
Dunod La photocopie non autorise est un dlit.

un lexme entier reoit une valeur positive ou nulle;


un lexme symbole du langage reoit une valeur dans lensemble [ 10, 1];
un identificateur reoit une valeur dans lensemble [ 296, 11] : en effet, liden-
tificateur A est cod par la valeur 11 tandis que lidentificateur Z9 est cod par
la valeur (36 + 260).
Le programme Z correspondra lissue de lanalyse lexicale la suite dentiers :
7 (PROGRAM), 36 (Z), 10 (INT), 11 (A), 6 (;), 10 (INT), 12 (B), 6 (;),
10 (INT), 91 (C2), 6 (;), 8 (DEBUT), 11 (A), 5 (=), 4 (4), 6 (;), 12 (B),
5 (=), 11 (A), 4 (/), 2 (2), 6 (;), 91 (C2), 5 (=), 12 (B), 1 (+), 11 (A),
6 (;), 9 (FIN).
40 3 La chane de production de programmes

Des erreurs peuvent survenir et correspondent lutilisation de symboles non


conformes au langage. Ainsi une phrase telle que INT g5 provoquera une erreur lexi-
cale dans le cadre du langage L_exemple car le symbole g ne fait pas partie de
lalphabet du langage (seules les lettres majuscules sont admises). Par contre la phrase
G 5 = 2; sera reconnue par lanalyseur lexical comme tant quivalente la suite :
17 (G) 5 (5) 5 (=) 2 (2) 6 (;).
La phase danalyse lexicale sapparente notre propre processus de lecture qui
nous permet de reconnatre et former les mots dans la suite de caractres dun texte.

3.1.3 Analyse syntaxique


Ltape suivante dans le processus de compilation est celle de lanalyse syntaxique.
Lanalyseur syntaxique (figure 3.3) analyse la suite de symboles issus de lanalyseur
lexical et vrifie si cette suite de symboles est conforme la syntaxe du langage telle
quelle est dfinie par les rgles de Backus-Naur. Pour cela, lanalyseur syntaxique
essaye de construire larbre syntaxique correspondant au programme. Dans cet arbre,
les feuilles correspondent aux symboles issus de lanalyse lexicale et les nuds inter-
mdiaires correspondent aux objets grammaticaux. Si lanalyseur syntaxique ne
parvient pas construire larbre syntaxique du programme compil, alors cela traduit
le fait que la syntaxe du programme est errone.

BNF

A
n l Suite Arbres
a e
l x de symboles syntaxiques
y i Analyseur syntaxique
s c
e a
u l
r

Erreurs de syntaxe

Figure 3.3 Analyseur syntaxique.

Larbre syntaxique est construit par application successive des rgles de Backus-
Naur dfinissant la syntaxe du langage, lensemble des symboles issus de lanalyse
lexicale. Cette construction se poursuit soit jusqu ce que le dernier symbole ait t
pris en compte avec succs (la syntaxe est correcte), soit jusqu ce quil ne soit plus
possible de faire correspondre aucune des rgles de Backus-Naur existantes avec la
suite de symboles restants (la syntaxe est errone).
Le programme Z donn en exemple au paragraphe 3.1.1 conduit larbre syntaxique
donn par la figure 3.4.
Reprenons prsent la phrase G 5 = 2; reconnue par lanalyseur lexical comme
tant quivalente la suite : 17 (G) 5 (5) 5 (=) 2 (2) 6 (;). Larbre syntaxique
3.1 La compilation 41

PROGRAM Z 7 36
INT A ; 10 11 6
INT B ; 10 12 6
INT C2 ; 10 91 6
<programme>
DEBUT 8
A=4; 11 5 4 6
B=4/2; 12 5 11 4 2 6
C2 = B + A ; 91 5 12 1 11 6
PROGRAM <identificateur> FIN 9
( 7) Z ( 36)
<corps de programme>

FIN
( 9)

<suite de dclarations>
DEBUT
( 8)
<suite daffectations>
<declaration>
<suite de dclarations>
INT ; <affectation> <suite daffectations>
( 10) ( 6) ;
( 6)
<identificateur> <identificateur> <suite daffectations>
A ( 11) A ( 11) = <terme>
( 5)
<suite de dclarations> <affectation>
<entier>
<declaration> 4 (4) ;
= ( 6)
INT ; <declaration> ( 5)
( 10) ( 6) <identificateur>
INT ; C2 ( 91) <terme>
<identificateur> ( 10) ( 6) <operateur>
B ( 12)
<identificateur>
Dunod La photocopie non autorise est un dlit.

<identificateur> <affectation>
B ( 12)
C2 ( 91)
+ <terme>
<identificateur> = <terme> <operateur> <terme> ; ( 1)
B ( 12) ( 5) ( 6)
/
( 4)

<identificateur> <entier> <identificateur>


A ( 11) 2 (2) A ( 11)
Figure 3.4 Arbre syntaxique.
42 3 La chane de production de programmes

correspondant une telle phrase ne peut pas tre construit. En effet, la rgle de
production relative un objet de type affectation choue sur le deuxime symbole.
En effet, le symbole 5 est rencontr la place du symbole = . Une erreur
syntaxique est donc leve (figure 3.5).

G 5 = 2 ; 17 5 5 2 6

<corps de programme>

<suite de declarations > DEBUT <suite daffectations>


( 8)

<affectation>

<identificateur> =
G ( 17) ( 5) ?
NON => erreur

Figure 3.5 Arbre syntaxique impossible construire sur lanalyse de G 5 = 2.

La construction des arbres syntaxiques fait apparatre la ncessit davoir dfini la


grammaire du langage sans ambigut afin qu aucun moment, une suite de symboles
issue de lanalyse lexicale puisse correspondre plusieurs rgles de production diff-
rentes, ce qui conduirait une interprtation du sens du programme peut-tre diffrente
de celle voulue par le programmeur.

3.1.4 Analyse smantique


Lanalyse smantique constitue la troisime tape danalyse du compilateur. Elle a
pour but dassocier un sens aux diffrentes phrases du programme source. Ce travail
recouvre principalement deux points diffrents :
reconnatre les objets manipuls et analyser leurs proprits : quel est le type de
lobjet, sa dure de vie, sa taille et son adresse ?
contrler que lutilisation de ces objets se fait de manire cohrente : ce niveau,
lanalyse smantique recherche les erreurs de typage, les dclarations multiples,
absentes ou inutiles, les expressions incohrentes.
Soit, par exemple, le programme Ada suivant :
procedure prog_ada is
float i; variable i de type rel
integer A, B; variables A et B de type entier
tab : array(1.5) of float; tableau de 5 rels
3.1 La compilation 43

begin
A : = 5;
B : = A/2;
for (i = 1 to 5)
loop
tab(i) : = B + i;
end loop;
end;
Lanalyseur smantique signale dans ce programme deux erreurs smantiques dues
des incohrences de type :
le rsultat de lopration A/2 donne un rsultat qui est de type rel alors que la
variable B est dclare de type entier;
la variable i qui permet de parcourir lensemble des cases du tableau tab dans la
boucle est de type rel.
procedure prog_ada is
float B; variable B de type rel
integer A, i; variables A et i de type entier
tab : array(1.5) of float; tableau de 5 rels
begin
A : = 5;
B : = A/2;
for (i = 1 to 5)
loop
tab(i) : = B + i;
end loop;
end;
Dans le programme corrig comme ci-dessus, la phrase tab(i) : = B + i; pose
encore problme car elle amne additionner entre elles une variable de type entier (i)
avec une variable de type rel (B). Dans ce dernier cas, le compilateur peut insrer de
lui-mme un ordre de conversion de la variable i du type entier vers rel, comme lexpli-
cite lexemple suivant.
procedure prog_ada is
Dunod La photocopie non autorise est un dlit.

float B; variable i de type rel


integer A, i; variables A et B de type entier
tab : array(1.5) of float; tableau de 5 rels
begin
A : = 5;
B : = A / 2;
for (i = 1 to 5)
loop
tab(i) : = B + (entierversreel)i;
end loop;
end;
44 3 La chane de production de programmes

3.1.5 Gnration du code final


La table des symboles
Tout au long des trois phases danalyse lexicale, danalyse syntaxique et danalyse
smantique, le compilateur construit une table regroupant toutes les informations
utiles sur les objets apparaissant dans le programme compil. Cette table qui comprend
une entre par objet reconnu est appele la table des symboles. Chaque entre spcifie
les proprits de lobjet associ, cest--dire notamment son type, sa taille et son
adresse. Pour pouvoir affecter une adresse chacun des objets, le compilateur mani-
pule un compteur appel compteur demplacements, initialis 0 pour le premier
objet et incrment ensuite de la taille de chaque objet rencontr. Ladresse dun
objet est gale la valeur du compteur demplacements.
Ainsi le tableau 3.1 suivant peut correspondre la table des symboles construite
lors de la compilation du programme Z.

Tableau 3.1 TABLE DES SYMBOLES DU PROGRAMME Z.

Nom de lobjet Type Taille (octets) Adresse

A entier 4 (0)16
B entier 4 (4)16
C2 entier 4 (8)16

Gnration du code et optimisation


La gnration du code constitue ltape ultime de la compilation. Elle consiste
produire dans un fichier objet le code machine quivalent au code du langage de haut
niveau. Elle se dcompose gnralement en trois tapes : la gnration dun code inter-
mdiaire, loptimisation de ce code intermdiaire, enfin, la gnration du code final.
Le code obtenu ce niveau est appel code relogeable, cest--dire que toutes les
adresses des objets figurant dans ce code sont calcules en considrant que ladresse
du premier octet du code est gale 0.

Gnration dun code intermdiaire

La gnration du code intermdiaire consiste remplacer les phrases reconnues par


des macros plus aisment manipulables. Les objets sont eux-mmes remplacs par
ladresse qui leur a t affecte dans la table des symboles. Les macros ne sont pas
des instructions machine; elles sen diffrencient notamment par le fait quelles ne
font aucune rfrence aux registres de la machine et restent donc indpendantes de
larchitecture de celle-ci. Ainsi le programme Z suivant pourra tre transform de
faon ce que INIT a b soit une macro dinitialisation qui initialise lobjet a avec la
valeur b, la macro DIV a b c correspond la division de lobjet b par lobjet c avec
stockage du rsultat dans lobjet a et enfin la macro ADD a b c reprsente laddition
de lobjet b par lobjet c avec stockage du rsultat dans lobjet a.
3.1 La compilation 45

PROGRAM Z Z :
INT A; (0)16
INT B; (4)16
INT C2; (8)16
DEBUT
A = 4; INIT (0)16 4
B = A / 2; DIV (4)16 (0)16 2
C2 = B + A; ADD (8)16 (4)16 (0)16
FIN STOP

Optimisation du code intermdiaire


Loptimisation de code vise produire un code machine plus performant, cest--
dire dune part un code dont lexcution est plus rapide et dautre part un code plus
compact dont lencombrement mmoire est moindre. Diverses amliorations peuvent
tre mises en uvre; elles diffrent grandement dun compilateur lautre. Les plus
courantes sont :
la rduction des expressions constantes : elle consiste effectuer les calculs arith-
mtiques qui ne comportent que des oprandes constants et remplacer lexpression
arithmtique par son rsultat. Par exemple, dans le programme Z, lexpression
B = A/2; peut tre calcule puisque la valeur de A est connue comme tant gale
4. B = A/2; est donc remplace par B = 2;
simplification des boucles et pr-valuation des expressions constantes : elle consiste
sortir les expressions invariantes des corps de boucles et les placer juste devant
ceux-ci. Ainsi, la boucle suivante :
for i = 1 to n
loop
j : = 3;
i : = i + 1;
end loop;
est transforme de la manire suivante :
j : = 3;
for i = 1 to n
loop
Dunod La photocopie non autorise est un dlit.

i : = i + 1;
end loop;
simplification des boucles et rduction de puissance des oprateurs : elle consiste
remplacer au sein dune boucle une opration puissante et juge plus coteuse
telle que la multiplication par une opration plus simple et moins coteuse telle
que laddition. Ainsi le code suivant :
for i = 1 to n
loop
a = i * 5;
end loop;
46 3 La chane de production de programmes

est transform de la manire suivante :


for i = 1 to n
loop
a = a + 5;
end loop;
On remarquera que lensemble des oprations prsentes dans le programme Z
peuvent tre effectues par la phase doptimisation et que le programme Z peut ainsi
se rsumer trois macros dinitialisation INIT.
PROGRAM Z Z :
INT A; (0)16
INT B; (4)16
INT C2; (8)16
DEBUT
A = 4; INIT (0)16 4
B = A / 2; B = 2; DIV (4)16 (0)16 2 INIT (4)16 2
C2 = B + A; C2 = 6; ADD (8)16 (4)16 (0)16 INIT (8)16 6
FIN STOP

Gnration du code final


Ltape finale est celle de gnration du code final. Les macros sont remplaces par
les instructions machine correspondantes avec utilisation des registres et les objets
sont remplacs par leur adresse. Les adresses gnres (donnes ici en base 16) sont
calcules partir de la valeur 0.
Z : adresse instruction commentaire
(0)16 (0)16
(4)16 (4)16
(8)16 (8)16
INIT (0)16 4 (C)16 00000 000 0001 0000000000000100 R1 4
(10)16 00001 001 0001 0000000000000000 R1 (0)16
INIT (4)16 2 (14)16 00000 000 0001 0000000000000010 R1 2
(18)16 00001 001 0001 0000000000000100 R1 (4)16
INIT (8)16 6 (1C)16 00000 000 0001 0000000000000110 R1 6
(20)16 00001 001 0001 0000000000001000 R1 (8)16
STOP

3.2 LDITION DES LIENS


3.2.1 Rle de lditeur de liens
Ldition des liens constitue la deuxime tape du processus de production de
programmes. Elle permet la construction du programme excutable final en rsolvant
les liens vers les bibliothques ou entre diffrents modules objets construits laide
de compilations spares.
3.2 Ldition des liens 47

Nous avons vu que le compilateur traduit un programme crit en langage de haut


niveau vers un programme objet, crit en langage machine. Toute modification inter-
venant au niveau du programme source en langage de haut niveau ne peut tre prise
en compte que par le biais dune opration de compilation, qui traduit la modification
en langage machine. Or, la dure dune opration de compilation est fortement lie
la taille du programme source compiler : plus celui-ci est gros, plus la compilation
est longue. Cest pourquoi on prfre souvent, pour lcriture dun gros programme,
dcouper celui-ci en modules, compilables sparment. Un module correspond souvent
une unit logique du programme : une procdure avec les donnes quelle mani-
pule, le programme principal, etc. La compilation spare de chacun des modules
source donne autant de modules objet. La construction du programme excutable
final est alors la charge de lditeur de liens, qui doit relier les modules objets entre
eux pour construire un seul programme excutable.
Par ailleurs, les modules utilisateurs vont souvent faire appel des fonctions
prdfinies disponibles dans des bibliothques du langage de haut niveau utilis : par
exemple, les fonctions mathmatiques, les fonctions graphiques, linterface des fonc-
tions du systme. Cest galement le rle de lditeur de liens que de faire la liaison
entre les appels ces fonctions dans le code source utilisateur et le code de ces fonc-
tions, stock dans les bibliothques. Pour effectuer ces oprations de liaison entre
modules utilisateurs et fonctions de bibliothques, lditeur de liens utilise des infor-
mations de liaison, crites en entte de chaque module par le compilateur : ce sont
les liens satisfaire et les liens utilisables des modules.

3.2.2 Fonctionnement de lditeur de liens


Nous allons prsent dcrire le fonctionnement de lditeur de liens. partir dun
exemple, nous commenons par dfinir les notions de liens utilisables et de liens
satisfaire.

Notion de lien utilisable et de lien satisfaire

Exemple
Considrons une application de recherche et de rservation de livres dans le cata-
Dunod La photocopie non autorise est un dlit.

logue informatique dune bibliothque. Le logiciel a t structur sous la forme de


trois modules sources distincts :
le module interface contient la procdure charge du dialogue avec le client;
le module recherche contient les procdures de recherche dans le catalogue de la
bibliothque et la procdure de rservation dun livre;
le module affichage contient les procdures permettant laffichage des rsultats
des recherches menes dans le catalogue.

Voici un code source pour chacun des modules, volontairement incomplet et


simplifi, qui porte laccent sur les dpendances entre les modules.
48 3 La chane de production de programmes

module interface
programme principal;
dbut
chane de caractres rponse, cote_livre, mot_cl;
liste liste_livre;
tant que (rponse < > 3)
faire
poser_question (" que voulez-vous faire ?
chercher un livre ? 1
rserver un livre ? 2
quitter ? 3");
lire_rponse(rponse);
cas (rponse) :
1 : poser_question ("donnez un mot-cl :");
lire_rponse (mot_cl);
chercher_livre(liste_livre, mot_cl);
afficher(liste_livre);
2 : poser_question ("donnez la cote du livre :");
lire_rponse (cote_livre);
rserver_livre(cote_livre);
3 : rien;
fin cas;
fin tant que;
fin
procdure lire_rponse (out chane : chane de caractres);
dbut
code qui lit une chane de caractres au clavier
appelle une fonction lit_clavier de la bibliothque du langage
fin
procdure poser_question (in chane : chane de caractres);
dbut
code qui crit une chane de caractres sur lcran
appelle une fonction affiche_cran de la bibliothque du langage
fin
fin module;
module recherche;
export chercher_livre, rserver_livre;
procdure chercher_livre(out liste liste_livre, in chane de caractres
mot_cl);
dbut
code qui effectue une recherche dans le catalogue de la bibliothque
appelle une fonction lire_fichier de la bibliothque du langage
fin;
3.2 Ldition des liens 49

procdure rserver_livre(in chane de caractres cote_livre);


dbut
code qui effectue une rservation de livre dans le catalogue
de la bibliothque
appelle une fonction crire_fichier de la bibliothque du langage
fin;
fin module

module affichage;
export afficher;
procdure afficher(in liste liste_livre);
dbut
code qui effectue un affichage des livres de la liste liste_livre;
appelle une fonction affiche_cran de la bibliothque du langage
fin
fin module;

Le module interface fait appel :


aux procdures poser_question et lire_rponse qui sont dfinies dans le module
mme;
aux procdures chercher_livre, rserver_livre et afficher qui ne sont pas dfi-
nies localement mais dans les deux autres modules (respectivement recherche et
affichage);
aux procdures lit_clavier et affiche_cran qui elles aussi ne sont pas dfinies
localement mais appartiennent une bibliothque du langage.
Pour sa part, le module recherche fait appel aux procdures lire_fichier et
crire_fichier qui ne sont pas dfinies localement mais appartiennent une biblio-
thque du langage.
Enfin, le module affichage fait appel la procdure affiche_cran qui nest pas
dfinie localement mais appartient une bibliothque du langage.
Pour chacun de ces modules, ces appels des objets qui ne sont pas dfinis loca-
Dunod La photocopie non autorise est un dlit.

lement correspondent des importations dobjets. Ainsi, le module interface importe


les objets chercher_livre, rserver_livre et afficher ainsi que les objets lit_clavier
et affiche_cran. Le module rechercher importe les objets lire_fichier et crire_
fichier et le module affichage importe lobjet affiche_cran.
Cependant pour que des objets puissent tre imports dans un module, il faut que
le module dans lequel ces objets sont dfinis exporte ces mmes objets, cest--dire
quil rende ces objets accessibles depuis lextrieur. Cest le rle des lignes de code
export chercher_livre, rserver_livre; et export afficher; places en en-tte des
modules rechercher et affichage. On parlera ici dexportation dobjets. La figure 3.6
schmatise les relations entre les trois modules.
50 3 La chane de production de programmes

INTERFACE AFFICHAGE

exportation exportation
afficher

afficher
affiche_ecran
chercher_livre

rserver_livre

affiche_cran

lit_clavier

BIBLIOTHQUE

RECHERCHE exportation

exportation affiche_cran

rserver_livre crire_fichier

chercher_livre lire_fichier

lit_clavier
crire_fichier

lire_fichier

Figure 3.6 Relation dimportation et dexportation dobjets


entre les modules affichage, interface et rechercher.

Lors de la compilation spare de chacun de ces modules, le code objet final ne va


pas pouvoir tre compltement gnr puisque les modules contiennent des objets
qui ne sont pas dclars localement. Le compilateur notamment ne connat pas
ladresse dimplantation de ces objets. Aussi, chaque fois que le compilateur va
trouver dans un module, un objet import, cest--dire un objet utilis dans le
module mais non dfini dans le module, il va gnrer un lien satisfaire concernant
cet objet. Le lien satisfaire correspond une demande du compilateur lintention
de lditeur de liens pour que celui-ci trouve dans un autre module, la dclaration de
lobjet cherch et ainsi son adresse. Lditeur de liens va rechercher lobjet en ques-
tion parmi les objets exports par dautres modules. Aussi, lorsque le compilateur
dans un module rencontre des dclarations dobjets exports, il cre un lien utili-
sable. Un lien utilisable signale lditeur de liens la prsence dans un module dun
objet export.
3.2 Ldition des liens 51

Exemples dimportation et dexportation dobjets


dans les langages de programmation de haut niveau
Dans un langage tel que Ada, le concept de module se traduit par celui de paquetage.
Un paquetage est divis en deux parties : une partie spcification qui contient la
dclaration des objets du paquetage accessible depuis dautres modules et une partie
corps qui contient la dfinition des objets eux-mmes, quils soient exports ou restent
privs. Dans ces paquetages, limportation dobjets externes provenant de biblio-
thques du langage seffectue grce la clause dimportation with. Ainsi, le module
recherche scrit :
package recherche is
procedure chercher_livre (liste_livre : out liste, mot_cle :
in string(1.20));
procedure reserver_livre (cote_livre : in string(1.20));
end;
with la_bibliotheque; importation des objets de la bibliotheque
package body recherche is
procedure chercher_livre (liste_livre : out liste, mot_cle :
in string(1.20)) is
begin
corps de la procedure qui utilise la fonction lire_fichier
de la bibliotheque la_bibliotheque :
appel sous forme la_bibliotheque.lire_fichier
end;
procedure reserver_livre (cote_livre : in string(1.20)) is
begin
corps de la procedure qui utilise la fonction ecrire_fichier
de la bibliotheque la_bibliotheque :
appel sous forme la_bibliotheque.ecrire_fichier
end;
end;
Dans un langage tel que C, lexportation des objets seffectue par le biais de la
Dunod La photocopie non autorise est un dlit.

clause extern. Lobjet export ainsi est rendu accessible tout autre module.

Dfinition des notions de liens utilisables et de liens satisfaire


Trois catgories dobjets peuvent donc tre rpertories au sein dun module :
les objets internes au module, inaccessibles de lextrieur car ils ne sont pas exports
(objet priv). ces objets, le compilateur ne fait correspondre aucun lien (exemple
lobjet lire_reponse dans le module interface);
les objets internes au module mais accessibles de lextrieur (objet export ou public).
ces objets, le compilateur fait correspondre un lien utilisable (LU) (exemple
lobjet chercher_livre dans le module recherche);
52 3 La chane de production de programmes

les objets nappartenant pas au module, mais utiliss par le module (objet import
ou externe). ces objets, le compilateur fait correspondre un lien satisfaire
(LAS) (exemple lobjet chercher_livre dans le module interface).
Cest donc le compilateur qui gnre les liens satisfaire et les liens utilisables en
fonction des catgories dobjets quil rencontre lors de la compilation dun module.
Les liens satisfaire et les liens utilisables sont placs en entte du module. Leur
forme est la suivante :
pour un lien utilisable, cest un couple <nom_de_lobjet, valeur> o valeur est
ladresse de lobjet dans le module qui contient sa dclaration;
pour un lien satisfaire, cest un couple <nom_de_lobjet, adr_1, adr_2, .., adr_last >
o adr_1, adr_2, .., adr_last sont les adresses dans le module o lobjet est utilis.
Outre ces informations, le compilateur indique galement en en-tte de chaque
module sa taille en octets.
Les modules interface, recherche et affichage lissue de la compilation sont
prcds des en-ttes suivants :
module interface.o;
taille (module) = 512 Ko
LAS <chercher_livre, adr_m_interface_1>
LAS <afficher, adr_m_interface_2>
LAS <rserver_livre, adr_m_interface_3>
LAS <lit_clavier, adr_m_interface_4>
LAS <affiche_cran, adr_m_interface_5>
code objet translatable correspondant au module dans lequel les adresses
adr_m_interface_1, adr_m_interface_2, adr_m_interface_3, adr_m_interface_4
et adr_m_interface_5 correspondent aux appels vers les 5 procdures
chercher_livre, afficher, rserver_livre, lit_clavier, et affiche_cran.
fin module;
module recherche.o;
taille (module) = 140 Ko
LU <chercher_livre, adr_m_recherche_1>
LU <rserver_livre, adr_m_recherche_2>
LAS <lire_fichier, adr_m_recherche_3>
LAS <crire_fichier, adr_m_recherche_4>
code objet translatable correspondant au module dans lequel les adresses
adr_m_recherche_1, adr_m_recherche_2 correspondent ladresse
des procdures chercher_livre et rserver_livre dans le module
et o adr_m_recherche_3 et adr_m_recherche_4 correspondent aux appels
vers les procdures lire_fichier et crire_fichier.
fin module;
module affichage.o;
taille (module) = 128 Ko
LU <afficher, adr_m_affichage_1>
3.2 Ldition des liens 53

LAS <affiche_cran, adr_m_affichage_2>


code objet translatable correspondant au module dans lequel ladresse
adr_m_affichage_1 correspond ladresse de la procdure afficher
dans le module et o adr_m_affichage_2 correspond lappel
vers la procdure affiche_cran.
fin module;

Fonctionnement de lditeur de liens


Le rle de lditeur de liens consiste donc associer chaque lien satisfaire avec le
lien utilisable correspondant de manire pouvoir assigner une adresse chacun des
objets prsents dans les modules. Lditeur de liens est appel en lui fournissant en
paramtre les noms de chacun des modules objets entrant en compte dans la cons-
truction du programme excutable final.

Exemple
La commande ld o fich_exe module1.o module2.o permet la construction du
programme excutable fich_exe partir des modules objets module1.o module2.o
sous un systme de type Unix.
La commande ald module_principal permet la construction dun programme
excutable partir de modules objets issus dune compilation Ada. Tous les modules
ont t au moment de la compilation rangs dans une bibliothque adalib cre au
moyen de la commande amklib adalib et module_principal est le nom du module
objet dans la bibliothque contenant le programme principal.

Ldition des liens pour un ensemble de modules objets aboutissant la construc-


tion dun programme excutable se droule en trois tapes : la construction de la
carte dimplantation du programme final, la construction de la table des liens et la
construction du programme excutable final.

Construction de la carte dimplantation

La premire tape de ldition des liens est donc la construction de la carte dimplan-
tation du programme final. Cette tape consiste placer les uns derrire les autres les
diffrents modules relogeables gnrs par le compilateur et calculer les adresses
Dunod La photocopie non autorise est un dlit.

dimplantation de ces modules, cest--dire ladresse du premier octet de chacun des


modules. Le premier module garde une adresse dimplantation gale 0 car il est le
premier dans la carte. Les modules suivants par contre ont une adresse dimplantation
qui est translate de la taille en octets des modules qui les prcdent. La taille des
modules objets est une information dlivre par le compilateur. Ainsi sur la figure 3.7,
le module B garde une adresse dimplantation gale 0. Le module C a une adresse
dimplantation translate de taille (B) et le module A a une adresse dimplantation
qui est translate de taille (B) + taille (C).
Si nous considrons la construction du programme excutable final permettant
daccder au catalogue de notre bibliothque partir des trois modules interface.o,
54 3 La chane de production de programmes

Compilation : modules ayant Carte dimplantation


pour premire adresse la valeur 0

Module A Module B Module C Module A


taille (A) taille (B) taille (C) taille (A)
0 0 taille (B) taille (B) + taille (C)

Module B
taille (B)
0

Module C
taille (C)
0

Figure 3.7 Carte dimplantation.

recherche.o et affichage.o, en les supposant placs dans cet ordre dans la carte
dimplantation du programme, les adresses dimplantation suivantes sont obtenues :
le module interface.o a une adresse dimplantation gale 0;
le module recherche.o a une adresse dimplantation gale 512 Ko;
le module affichage.o a une adresse dimplantation gale 652 Ko;
la taille totale du programme excutable final est 780 Ko.

Construction de la table des liens


La deuxime tape soccupe de construire la table des liens : cette table a pour rle de
permettre la rsolution des liens cest--dire la mise en relation des liens satisfaire
avec les liens utilisables correspondants. Chaque entre de la table des liens est cons-
titue de deux champs : le nom du lien cest--dire le nom de lobjet rfrenc par ce
lien et son adresse dans la carte dimplantation construite ltape prcdente. La table
est construite par la prise en compte dans chacun des modules entrant dans la compo-
sition finale du programme excutable des liens satisfaire et des liens utilisables.
Lalgorithme suivant explicite le droulement de cette tape pour un ensemble de
modules entrant dans la construction dun programme excutable final.
structure entre_table_des_liens une entre de la table des liens
nom_objet : chane de caractres;
adresse_objet : type_adresse;
fin structure;
structure lien un lien de type LAS ou LU
genre : type_genre; LAS ou LU
nom_objet : chane de caractres;
adresse_objet : type adresse;
fin structure;
3.2 Ldition des liens 55

table des liens : tableau (1.1000) de structure entre_table_des_liens;


la table des liens
le_lien : structure lien;
pour tous les modules de la liste
faire
se placer sur le premier lien de len-tte;
tant que (il y a un lien dans len-tte du module)
faire
si (table_des_liens.nom_objet < > lien.nom_objet pour toutes
les entres de la table)
alors
lobjet nexiste pas dans la table
crer une nouvelle entre nv_entree dans table_des_liens
pour laquelle nom_objet = lien.nom_objet;
si lien.genre = LU
alors
nv_entree.adresse_objet : = lien.adresse_objet +
adr_implantation_module;
fsi
si lien.genre = LAS
alors
nv_entree.adresse_objet : = indfinie;
fsi
sinon
il existe une entre dans la table pour laquelle
nom_objet = lien.nom_objet : cest entree_trouvee
si (lien.genre = LU et entree_trouvee.adresse_objet = indefinie)
alors
resolution LAS/LU
entree_trouvee.adresse_objet : = lien.adresse_objet +
adr_implantation_module;
fsi
si (lien.genre = LU et entree_trouvee.adresse_objet < > indefinie)
alors
Dunod La photocopie non autorise est un dlit.

deux LU pour un seul LAS : ERREUR


fsi
si (lien.genre = LAS)
alors
ne rien faire
fsi
fsi
passer au lien suivant;
fait
passer au module suivant;
fait
56 3 La chane de production de programmes

Lapplication de cet algorithme aux trois modules interface.o, recherche.o et


affichage.o mne construire la table des liens suivante :
prise en compte du module interface.o (tableau 3.2) :

Tableau 3.2 TABLE DES LIENS


APRS LA PRISE EN COMPTE DU MODULE INTERFACE.O.

Nom de lobjet Adresse dans la carte dimplantation Commentaire

chercher_livre indfinie LAS


afficher indfinie LAS
rserver_livre indfinie LAS
lit_clavier indfinie LAS
affiche_cran indfinie LAS

prise en compte du module recherche.o (tableau 3.3) :

Tableau 3.3 TABLE DES LIENS


APRS LA PRISE EN COMPTE DU MODULE RECHERCHE.O.

Nom de lobjet Adresse dans la carte dimplantation Commentaire

chercher_livre adr_m_recherche_1 + 512 Ko Rsolution LAS/LU


afficher indfinie LAS
rserver_livre adr_m_recherche_2 + 512 Ko Rsolution LAS/LU
lit_clavier indfinie LAS
affiche_cran indfinie LAS
lire_fichier indfinie LAS
crire_fichier indfinie LAS

prise en compte du module affichage.o (tableau 3.4) :

Tableau 3.4 TABLE DES LIENS


APRS LA PRISE EN COMPTE DU MODULE AFFICHAGE.O.

Nom de lobjet Adresse dans la carte dimplantation Commentaire

chercher_livre adr_m_recherche_1 + 512 Ko Rsolution LAS/LU


afficher adr_m_affichage_1 + 652 Ko Rsolution LAS/LU
rserver_livre adr_m_recherche_2 + 512 Ko Rsolution LAS/LU
lit_clavier indfinie LAS
affiche_cran indfinie LAS
lire_fichier indfinie LAS
crire_fichier indfinie LAS
3.2 Ldition des liens 57

Prise en compte des bibliothques du langage


lissue de la prise en compte des diffrents modules utilisateurs entrant dans la
construction du programme excutable final, il peut rester des entres de la table des
liens pour lesquelles le champ adresse est toujours gal la valeur indfinie. ce
niveau, lditeur de liens peut suivre deux comportements diffrents selon si ldition
des liens demande est une dition des liens statique ou une dition des liens dyna-
mique. Ces deux types dditions des liens dfinissent le comportement de lditeur
de liens vis--vis des bibliothques du langage.
Une bibliothque est une collection de modules objets prdfinis et fournie avec
la chane de production de programme relative au langage. Elle permet au program-
meur de faire appel ces fonctions sans avoir videmment les crire. Les biblioth-
ques principales sont notamment :
la bibliothque mathmatique qui fournit des fonctions mathmatiques standard
telles que la fonction racine carre, la fonction puissance ou encore les fonctions
trigonomtriques
la bibliothque graphique qui fournit des fonctions dinterface graphique permet-
tant de dessiner des traits, des ronds, de se positionner sur lcran
la bibliothque dinterface avec le systme dexploitation qui contient les procdures
permettant lappel aux services du systme dexploitation, telles que ouvrir_fichier,
fermer_fichier, lire_donnes, etc.

dition des liens statique


Lors dune dition des liens statique, lditeur de liens va rechercher les objets
encore manquants lissue de la prise en compte des modules utilisateurs dans les
bibliothques du langage. Les bibliothques prendre en compte par lditeur de
liens lui sont indiques en mme temps que la liste des modules objets utilisateur
entrant dans la composition du programme excutable final.

Exemple
La commande ld l nom_bib o fich_exe module1.o module2.o permet la construc-
tion du programme excutable fich_exe partir des modules objets utilisateurs
module1.o module2.o ainsi que de la bibliothque nom_bib sous un systme de type
Unix.
Dunod La photocopie non autorise est un dlit.

Les objets trouvs sont extraits des bibliothques et placs dans la carte dimplan-
tation du programme en cours de construction la suite des modules utilisateurs. La
table des liens est complte. lissue de la prise en compte des bibliothques,
aucune entre de la table des liens ne doit rester avec une entre pour laquelle le
champ adresse est indfini. En effet, un tel cas de figure traduit le fait quun objet na
pas t trouv et donc la construction du programme final nest pas possible.
Reprenons prsent notre exemple. Lditeur de liens va rechercher prsent les
4 objets non rsolus dans la bibliothque spcifie dans la commande ddition des
liens. Appelons la_bibliothque, cette bibliothque; elle a le format suivant :
58 3 La chane de production de programmes

module la_bibliothque;
taille (module) = 2 048 Ko
LU <crire_fichier, adr_m_bibliotheque_1>
LU <lire_fichier, adr_m_bibliotheque_2>
LU <affiche_cran, adr_m_bibliotheque_3>
LU <lit_clavier, adr_m_bibliotheque_4>
Et dautres LU correspondant aux autres fonctions prsentes
dans la bibliothque
code objet translatable des fonctions incluses dans la bibliothque
la taille en octets des fonctions est connue :
taille(crire_fichier) = 30 Ko
taille (lire_fichier) = 15 Ko
taille(affiche_cran) = 20 Ko
taille (lit_clavier) = 5 Ko
fin module;
lissue de la prise en compte de la bibliothque la_bibliothque, la carte dimplan-
tation du programme est devenue :
le module interface.o a une adresse dimplantation gale 0;
le module recherche.o a une adresse dimplantation gale 512 Ko;
le module affichage.o a une adresse dimplantation gale 652 Ko;
le module lit_clavier.o a une adresse dimplantation gale 780 Ko;
le module affiche_ecran.o a une adresse dimplantation gale 785 Ko;
le module lire_fichier.o a une adresse dimplantation gale 805 Ko;
le module crire_fichier.o a une adresse dimplantation gale 820 Ko;
la taille totale du programme excutable final est 850 Ko.
La table des liens devient (tableau 3.5) :

Tableau 3.5 TABLE DES LIENS APRS LA PRISE EN COMPTE DE LA BIBLIOTHQUE LA_BIBLIOTHQUE.

Nom de lobjet Adresse dans la carte dimplantation Commentaire


chercher_livre adr_m_recherche_1 + 512 Ko Rsolution LAS/LU
afficher adr_m_affichage_1 + 652 Ko Rsolution LAS/LU
rserver_livre adr_m_recherche_2 + 512 Ko Rsolution LAS/LU
lit_clavier 780 Ko Rsolution LAS/LU
affiche_cran 785 Ko Rsolution LAS/LU
lire_fichier 805 Ko Rsolution LAS/LU
crire_fichier 820 Ko Rsolution LAS/LU

On constate ici que toutes les entres de la table des liens sont rsolues.
3.3 Le chargement 59

dition des liens dynamique


Lors dune dition des liens dynamique, lditeur de liens ne recherche pas dans les
bibliothques du langage les objets qui nont pas t trouvs dans les modules utili-
sateurs. La table des liens reste donc avec des entres pour lesquelles le champ
adresse est une valeur indfinie.
La rsolution des liens vis--vis des modules objet appartenant des bibliothques
est repousse une tape ultrieure, soit au moment du chargement du programme en
mmoire centrale, soit au moment de son excution et de lappel lobjet non rsolu.

Construction du programme excutable final


La dernire tape est la construction du programme excutable final proprement
dite. Dans un premier temps toutes les adresses dans les modules sont translates de
la valeur de ladresse dimplantation du module. Dans un second temps, les rfrences
aux liens satisfaire dans les modules sont remplaces par ladresse de lobjet telle
quelle est dfinie dans la table des liens (figure 3.8). Le programme excutable
obtenu est stock sur un support de masse, tel quun disque dur.

Carte dimplantation

Module B Module C Module A


<LAS nom de lien>

0 taille (B) taille (B) + taille (C)

nom de lien adresse


Translation des adresses du module C
dune valeur gale taille (B)
Translation des adresses du module A
dune valeur gale taille (B) + taille (C)

Table des liens

Figure 3.8 Construction du programme excutable final.


Dunod La photocopie non autorise est un dlit.

3.3 LE CHARGEMENT
3.3.1 Rle du chargeur
Le chargement constitue la dernire tape de la chane de production de programmes
et met en uvre loutil chargeur. Le chargeur est appel lorsque lutilisateur souhaite
excuter son programme. Le chargeur copie alors le programme excutable depuis le
disque vers la mmoire centrale.
Le fichier excutable stock sur le disque par lditeur de liens est qualifi de
fichier relogeable : toutes les adresses des instructions et des donnes dans ce code
60 3 La chane de production de programmes

excutable sont calcules partir de 0, cest--dire que le premier octet du code


excutable une adresse gale 0. Lorsque le chargeur copie le code excutable
depuis le disque vers la mmoire centrale, il implante le code dans un espace libre de
la mmoire centrale, dont le premier octet na pas forcment ladresse 0 (et gnra-
lement jamais car la mmoire haute est rserve au systme), mais une adresse quel-
conque appele adresse dimplantation mmoire. Toutes les adresses adr calcules
dans le programme excutable stock sur le disque doivent donc tre modifies pour
tenir compte de cette adresse dimplantation mmoire : cest lopration de transla-
tion des adresses qui consiste ajouter chaque adresse adr apparaissant dans le
programme excutable du disque, la valeur de ladresse dimplantation mmoire
(figure 3.9).

diteur de texte

Compilateur
Adresse dimplantation
en mmoire centrale adr
+
adresse
chargeur dimplantation
diteur de liens

0 adr
Programme relogeable
Excutable sur disque

Figure 3.9 Chargement du programme excutable relogeable.

Deux types de chargement peuvent tre distingus :


le chargement statique : dans ce cas, lopration de translation des adresses adr est
effectue une fois pour toutes au moment du chargement et les adresses sont modi-
fies dans le programme excutable;
le chargement dynamique : dans ce cas, lopration de translation nest pas effec-
tue au moment du chargement, mais seulement au moment o le processeur utilise
une adresse relogeable au cours de lexcution. La valeur de ladresse dimplanta-
tion du programme en mmoire centrale est conserve dans un registre du proces-
seur appel le registre de translation et elle est ajoute ladresse adr seulement
au moment o le processeur utilise adr.
3.3 Le chargement 61

3.3.2 Chargement et dition des liens dynamique


Nous avons vu prcdemment que lors dune dition des liens dynamique, lditeur
de liens ne recherche pas dans les bibliothques du langage les objets pour lesquels
des liens nont pas t rsolus une fois les modules objets utilisateurs entrant dans la
composition du programme excutable pris en compte. Le programme excutable
construit alors est incomplet puisque des objets nont pas dadresse. En effet, dans le
cas dune dition des liens dynamique, la prise en compte des bibliothques est
repousse ltape de chargement. Dans ce cas les bibliothques du langage sont
charges en mmoire centrale. Lors du chargement du programme excutable de
lutilisateur, le chargeur rsout les liens restants en fonction des adresses en mmoire
centrale des objets appartenant aux bibliothques.
Ce mode opratoire prsente un avantage et un inconvnient vis--vis de ldition
des liens statique. Lors dune dition des liens statique, lditeur des liens extrait des
bibliothques les objets utiliss par les modules utilisateurs et les ajoute la carte
dimplantation du programme excutable en cours de construction. Imaginons que
lditeur de liens ait construit deux programmes utilisateurs faisant rfrence la
mme fonction mathmatique SQRT1. Si ces deux programmes utilisateurs sont chargs
en mme temps en mmoire centrale, alors le code de la fonction SQRT se trouvera
galement deux fois en mmoire centrale, une fois dans chacun des programmes utili-
sateurs. Cette duplication engendre ici une perte de place inutile en mmoire centrale.
Ldition des liens dynamique rsout ce problme puisque la fonction SQRT se trou-
vera une seule fois en mmoire centrale, au sein de la bibliothque (figure 3.10).

DITION DITION
DE LIENS STATIQUE DE LIENS DYNAMIQUE
Bibliothque math.lib
Fonction SQRT() a
l u
i
Module A e c
appel SQRT() n h
a
Module A r r
Fonction SQRT() appel SQRT() g
s e
o m
l e
Dunod La photocopie non autorise est un dlit.

u n
Module B Module B t
appel SQRT() appel SQRT()

Fonction SQRT()

Figure 3.10 Chargement du programme excutable relogeable.

1. Fonction racine carre.


62 3 La chane de production de programmes

A contrario, rsoudre les liens vers les objets des bibliothques au moment du
chargement ralentit cette phase de la chane de production de programmes. On notera
par ailleurs que la rsolution des liens vers les bibliothques peut mme tre retarde
jusqu lexcution du programme et jusquau moment de lutilisation de lobjet non
rsolu. Dans ce cas, cest lexcution mme du programme qui est ralentie.

3.4 LUTILITAIRE MAKE


Le Make est un outil qui exploite les dpendances existantes entre les modules
entrant en jeu dans la construction dun programme excutable pour ne lancer que les
oprations de compilations et ditions de liens ncessaires, lorsque ce programme
excutable doit tre reconstruit suite une modification intervenue dans les modules
sources.

Exemple
Dans le programme suivant x.c, linclusion du fichier defs par lordre #include
"defs" cre une dpendance entre ces deux modules.
/* fichier x.c */
#include "defs"
main()
{

}

Cet outil utilise deux sources dinformations : un fichier de description appel le


Makefile qui contient la description des dpendances entre les modules et les noms
et les dates de dernires modifications des modules.

3.4.1 Format du fichier Makefile


Le fichier Makefile dcrit les dpendances existantes entre les modules intervenant
dans la construction dun excutable : il traduit sous forme de rgles le graphe de
dpendance du programme excutable construire et indique pour chacune de ces
dpendances, laction qui lui est associe.
Une rgle dans le fichier Makefile est de la forme :
module cible : dpendances
commande pour construire le module cible

Prenons comme exemple le cas suivant : le programme excutable prog est cons-
truit partir dune tape ddition des liens prenant en compte les trois modules
objets x.o, y.o et z.o. Le module objet z.o est issu de la compilation dun programme
source z.c. Les modules x.o et y.o sont leur tour issus de la compilation respective
des modules source x.c et y.c. Ces deux derniers modules utilisent un module defs
3.4 Lutilitaire Make 63

par le biais dun ordre dinclusion #include. Le graphe de dpendance du programme


prog est donn sur la figure 3.11.
Le fichier Makefile rsultant est :
prog : x.o y.o z.o
ld x.o y.o z.o o prog
x.o : defs x.c
cc o x.c
y.o : defs y.c
cc c y.c
z.o : z.c
cc c z.c

La premire rgle stipule la dpendance associe au programme excutable prog


qui est donc construit partir des modules x.o, y.o et z.o. La commande permettant
la construction du programme excutable prog partir de ces trois modules objets
est la commande ddition des liens ld x.o y.o z.o o prog.

prog excutable

dition des liens

x.o y.o z.o objets

Compilation

x.c defs y.c z.c sources

Figure 3.11 Graphe de dpendance du fichier prog.

La seconde et la troisime rgle stipulent que le fichier objet x.o (respectivement y.o)
dpend la fois du fichier x.c (respectivement y.c) et du fichier defs. Les fichiers
y.o ou x.o sont construits par compilation des fichiers.c correspondants.
Enfin, la dernire rgle spcifie que le fichier z.o dpend uniquement de la compi-
lation du fichier z.c.
Dunod La photocopie non autorise est un dlit.

3.4.2 Fonctionnement de lutilitaire Make


Loutil Make utilise le fichier Makefile et les dates de dernires modifications des
modules pour dterminer si un module est jour. Un module est jour si : le module
existe et si sa date de dernire modification est plus rcente que les dates de dernire
modification de tous les modules dont il dpend ou bien elle est gale.
Si un module nest pas jour, la commande associe ses dpendances est excute
pour reconstruire le module.
Considrons par exemple que le module z.c soit modifi. Lutilitaire Make va
dtecter que ce module est devenu plus rcent que le module objet z.o. Il va donc
64 3 La chane de production de programmes

lancer la commande associe la rgle de dpendance du module z.o, soit la


commande de compilation cc c z.c. Lexcution de cette commande va son tour
gnrer un module z.o plus rcent que le programme excutable prog. En cons-
quence, lutilitaire Make va reconstruire le programme excutable prog en lanant la
commande ddition des liens ld x.o y.o z.o o prog. Dune faon similaire, toute
modification au sein du module defs entranera la reconstruction des modules y.o et
x.o, par le biais de deux oprations de compilation, puis la reconstruction du
programme excutable prog. Dans ces deux cas, seules les oprations de compilation
ou ddition des liens ncessaires sont excutes.
Lutilitaire Make est appel au moyen de la commande make prog qui suppose
quun fichier Makefile est prsent dans le rpertoire o la commande est lance. La
commande make f nom_fichier prog fait galement appel lutilitaire Make mais
avec un fichier de dpendance appel nom_fichier et non Makefile.

3.5 CONCLUSION
Ce chapitre nous a permis dtudier la chane de production de programmes compose
des tapes de compilation, dition des liens et chargement.
Un compilateur est un logiciel qui traduit un programme source crit en langage
de haut niveau en un programme objet en langage de bas niveau. Lanalyse lexicale
reconnat dans la suite de caractres qui constitue le programme les symboles du
langage. Lanalyse syntaxique vrifie que la syntaxe du programme est conforme aux
rgles du langage. Lanalyse smantique trouve le sens et la signification des diffrentes
phrases du langage. Enfin, la gnration de code final consiste gnrer un code
machine relogeable. Ce code final est gnr partir dun code intermdiaire optimis.
Un diteur de liens est un logiciel qui permet de combiner plusieurs modules objet
obtenus par compilation spare pour construire un seul programme excutable. Un
lien utilisable correspond un objet export par un module. Un lien satisfaire corres-
pond un objet import par un module. Le rle de lditeur de liens est de mettre en
correspondance chaque lien satisfaire avec un lien utilisable. Ldition des liens
seffectue en trois tapes qui sont respectivement la construction de la carte dimplan-
tation, la construction de la table de liens et enfin la construction du programme
excutable final.
Le chargeur est un logiciel qui installe un programme excutable en mmoire
centrale en translatant toutes les adresses de celui-ci de la valeur de ladresse dimplan-
tation du programme. ventuellement, il achve la rsolution des liens.
Chapitre 4

Le langage machine
et la reprsentation
des informations 4

La donne de base manipule par la machine physique est le bit (Binary Digit) qui
ne peut prendre que deux valeurs : 0 et 1. Au niveau physique, toutes les informa-
tions (nombres, caractres et instructions) ne peuvent donc tre reprsentes que par
une combinaison de 0 et 1, cest--dire sous forme dune chane binaire. Nous allons
tudier les principales conventions de reprsentations des informations concernant les
nombres signs, les nombres flottants et les caractres. Puis nous nous intresserons
plus particulirement au format des instructions composant le langage machine, et sa
forme symbolique, le langage dassemblage.

4.1 LA REPRSENTATION DES INFORMATIONS


Les circuits physiques de la machine sont conus partir de transistors rassembls
sur une puce de silicium. Un transistor fonctionne selon une logique deux tats :
soit le transistor est passant, auquel cas ce circuit dlivre une tension comprise
entre 2 et 5 volts, soit le transistor est bloquant auquel cas le circuit dlivre une tension
comprise entre 0 et 1 volt. Ces deux tats logiques, conventionnellement nots 1
et 0, correspondent aux deux seules valeurs lmentaires disponibles pour repr-
senter linformation au niveau physique.
Le codage de linformation se fait donc dans une base de reprsentation qui est la
base 2. Toute information est reprsente comme tant quivalente une chane binaire
66 4 Le langage machine et la reprsentation des informations

dune longueur de n bits, le bit ou Binary Digit, tant le plus petit lment manipu-
lable par la machine ne pouvant prendre pour valeur que 0 ou 1. Une chane de 4 bits
est appele un quartet tandis quune chane de 8 bits est appele un octet. Le bit le
plus droite de la chane binaire est qualifi de bit de poids faible tandis que le bit le
plus gauche de la chane binaire est qualifi quant lui de bit de poids fort.
Il existe plusieurs normes ou conventions pour la reprsentation des informations
au niveau physique :
la reprsentation des nombres entiers signs peut se faire selon la norme de la
valeur signe ou selon la norme du complment 2. Un autre format de reprsen-
tation existant est galement le codage DCB (Dcimal Cod Binaire);
la reprsentation des nombres flottants admet de nombreuses variantes. Nous prsen-
tons uniquement la convention normalise par lorganisme IEEE connue sous le
nom de forme IEEE 754;
la reprsentation des caractres admet elle aussi de nombreuses variantes que sont
les codes ASCII, EBCDIC et UNICODE.

4.1.1 Numration binaire, octale et hexadcimale


Nous commenons par faire quelques rappels concernant la reprsentation des nombres
dans une base X. Dans le cadre de la reprsentation des informations au niveau de la
machine physique, la base utilise est, comme nous lavons dj voqu, la base 2
(systme binaire). Cependant, comme les chanes binaires ne sont pas aisment mani-
pulables par lesprit humain, deux autres bases sont trs souvent utilises : la base 8
(systme octal) et la base 16 (systme hexadcimal).

Reprsentation dun nombre N en base X


Soit le nombre NX = dn di d2d1d0, d 1 d i d m, exprim dans la base X,
avec dn le digit de poids fort et d m le digit de poids faible, alors N scrit :
NX = d X avec n i m
i
i i

Ainsi 1975,5710 = 1 103 + 9 102 + 7 101 + 5 100 + 5 10 1 + 7 10 2.


Dans le reste de ce chapitre, nous allons manipuler des nombres exprims dans la
base 2, la base 10, la base 8 ou la base 16. Pour viter toute confusion dinterprtation,
nous prendrons lhabitude de prciser ct du nombre, en indice, la valeur X de sa
base dexpression tel que cela est fait ici pour le nombre 1975,5710 exprim selon la

Chiffres autoriss selon la base X de reprsentation


Base 2 : chiffre 0 et 1.
Base 8 : chiffre 0, 1, 2, 3, 4, 5, 6, 7.
Base 16 : chiffre 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
avec A = 1010, B = 1110, C = 1210, D = 1310, E = 1410, F = 1510.
4.1 La reprsentation des informations 67

base 10. En effet, ce mme nombre, de par les chiffres qui le composent, pourrait tout
fait tre un nombre exprim par exemple en base 16; sa valeur serait alors tout
fait diffrente et gale (1 163 + 9 162 + 7 161 + 5 160 + 5 16 1 + 7 16 2).

Conversion du nombre N exprim en base 10 vers une base X (2, 8, 16)


Conversion dun nombre entier
Il existe deux mthodes pour convertir un nombre entier N exprim en base 10 vers
une base X, avec X = 2, 8 ou 16 : la premire mthode est appele mthode des
divisions successives et la seconde mthode est appele mthode des soustractions
successives.

Mthode des divisions successives


N est itrativement divis par X jusqu obtenir un quotient gal 0. La conversion
du nombre N dans la base X est obtenue en notant les restes de chacune des divisions
effectues depuis la dernire division jusqu la premire.
Nota : les restes sont obligatoirement infrieurs X.

Exemple
La figure 4.1 donne la conversion de 23510 en base 2 : 23510 = 111010112.

235 2
1
117 2
1
58 2
0
29 2
1
14 2
0
7 2
1
3 2
1
Dunod La photocopie non autorise est un dlit.

1 2
1
0

Figure 4.1 Mthode des divisions.

Mthode des soustractions


La plus grande puissance de X qui est infrieure ou gale N est soustraite N. Le
processus de soustraction est rpt sur le reste de la diffrence, jusqu obtenir un
68 4 Le langage machine et la reprsentation des informations

rsultat gal 0. Le nombre N exprim en base X est alors obtenu en notant le


nombre de fois o une mme puissance de X a t retire et ce pour chaque puis-
sance depuis la plus grande apparaissant, dans lordre dcroissant des puissances.

Exemple
Convertir 23510 en base 8 :
On sait que 80 = 1; 81 = 1; 82 = 64; 83 = 512.
235 64 = 171; 171 64 = 107; 107 64 = 43; 43 8 = 35; 35 8 = 27;
27 8 = 19; 19 8 = 11; 11 8 = 3; 3 1 = 2; 2 1 = 1; 1 1 = 0
do 23510 = 3 64 + 5 8 + 3 1 = 3538.

Conversion dun nombre fractionnaire


Lorsque le nombre N est fractionnaire, la conversion de sa partie entire vers une
base X seffectue avec lune des deux mthodes que nous venons de voir. La conver-
sion de la partie fractionnaire, par contre, seffectue en multipliant cette partie frac-
tionnaire par X. La multiplication est itre sur la partie fractionnaire du rsultat
obtenu. La conversion de la partie fractionnaire du nombre N est obtenue par la suite
des parties entires de chacun des rsultats des multiplications effectues.

Exemples
Convertir 0,4510 en base 2 :
0,45 2 = 0,9 = 0 + 0,9
0,90 2 = 1,8 = 1 + 0,8
0,8 2 = 1,6 = 1 + 0,6
0,6 2 = 1,2 = 1 + 0,2
0,2 2 = 0,4 = 0 + 0,4
0,4 2 = 0,8 = 0 + 0,8
0,8 2 = 1,6 = 1 + 0,6
0,6 2 = 1,2 = 1 + 0,2
do 0,4510 = 0,011100112
Le dveloppement sarrte lorsque la prcision voulue est obtenue.
Convertir 0,4510 en base 16 :
0,45 16 = 7,20 = 7 + 0,2
0,20 16 = 3,2 = 3 + 0,2
do 0,4510 = 0,7316

Conversion du nombre N exprim en base X (2, 8, 16) vers la base 10


Le nombre NX = dn di d2d1d0, d 1 d i d m, exprim dans la base X, avec dn
le digit de poids fort et d m le digit de poids faible est converti vers la base 10 en appli-
quant la formule suivante :
NX = dn Xn + + di Xi + + d2 X2 + d1 X1 + d0 X0 + d 1 X 1 + +
d i X i + + d m X m = M10
4.1 La reprsentation des informations 69

Exemple
010101102 = 0 20 + 1 21 + 1 22 + 0 23 + 1 24 + 0 25 + 1 26 + 0 27
= 2 + 4 + 16 + 64 = 8610

Conversion du nombre N exprim dans la base 8 ou 16 vers la base 2


(et vice versa)
Conversion de la base 8 vers la base 2 (et vice versa)
Les chiffres de la base 8 sont les chiffres allant de 0 7, soit un total de 8 chiffres. En
binaire, un ensemble de n bits permet de reprsenter 2n chiffres compris entre les
valeurs 0 et 2n 1. Aussi, pour reprsenter les 8 chiffres de la base 8 en binaire, il suffit
dun ensemble de 3 bits tels que : 0002 = 08 ; 0012 = 18 ; 0102 = 28 ; 0112 = 38 ; 1002 = 48 ;
1012 = 58 ; 1102 = 68 ; 1112 = 78.
Convertir un nombre N exprim en base 8 vers la base 2 seffectue en remplaant
simplement chacun des chiffres du nombre X en base 8 par leur quivalent binaire
sur 3 bits.
Convertir un nombre N exprim en base 2 vers la base 8 seffectue en dcoupant
la chane binaire N en paquet de 3 bits, depuis le bit de poids faible jusquau bit de
poids fort pour la partie entire et inversement pour la partie fractionnaire, et en
remplaant chaque paquet de 3 bits par leur quivalent dans la base 8.

Exemple
4528 = 100 101 0102 et 11 001 111,111 012 = 317,728

Conversion de la base 16 vers la base 2 (et vice versa)


Le mme principe sapplique strictement la conversion entre la base 16 et la base 2.
Les chiffres admis pour la base 16 sont maintenant les chiffres allant de 0 15, soit
un total de 16 chiffres. 4 bits sont ncessaires pour reprsenter ces 16 valeurs.
Convertir un nombre N exprim en base 16 vers la base 2 seffectue en rempla-
ant simplement chacun des chiffres du nombre X en base 16 par leur quivalent
binaire sur 4 bits.
Convertir un nombre N exprim en base 2 vers la base 16 seffectue en dcoupant
la chane binaire N en paquet de 4 bits, depuis le bit de poids faible jusquau bit de
Dunod La photocopie non autorise est un dlit.

poids fort pour la partie entire et inversement pour la partie fractionnaire, et en


remplaant chaque paquet de 4 bits par leur quivalent dans la base 16.

Exemple
45 A16 = 0100 0101 10102 et 1100 11112 = CF16

4.1.2 Reprsentation des nombres signs


La reprsentation dun nombre sign seffectue selon une chane binaire dune
longueur fixe n bits. On parlera ainsi dune reprsentation des nombres signs sur
8 bits, 16 bits ou 32 bits.
70 4 Le langage machine et la reprsentation des informations

Plusieurs conventions de reprsentation existent. Le choix entre lune ou lautre


des conventions est effectu par le constructeur de la machine et ventuellement par
le programmeur en fonction du type affect aux variables dclares. Par exemple,
dans le langage C, une dclaration avec un type int, dtermine une reprsentation
sur 2 octets selon la convention du complment 2. Une dclaration avec un type
unsigned short dtermine au contraire une reprsentation dun nombre sur 8 bits,
non sign.

Convention de la valeur signe


Dans la convention de la valeur signe, la chane de n bits bn 1 b0 reprsentant le
nombre sign est interprte comme suit :
le bit de poids fort bn 1 est le bit de signe. Si sa valeur est 0, alors le nombre cod
est positif. Si sa valeur est 1, alors le nombre cod est ngatif;
les autres bits bn 2 b0 codent la valeur absolue du nombre.

Exemple
Reprsentation de + 7710 sur 8 bits : 010011012.
Reprsentation de 7710 sur 8 bits : 110011012.

Les remarques suivantes peuvent tre faites propos de cette reprsentation :


deux reprsentations de la valeur 0 sont possibles, correspondant dune part un
zro positif (000000002 = (+ 0)10 sur 8 bits), dautre part un zro ngatif (100000002
= ( 0)10 sur 8 bits);
lintervalle des nombres signs reprsentables (tableau 4.1) est born en fonction
de la longueur de la chane binaire utilise pour la reprsentation. Ainsi, sur 8 bits,
lintervalle des nombres reprsentables est [111111112, 0111111112], soit linter-
valle [12710, + 12710]. On notera donc ici que larithmtique des machines est
diffrente de celle de ltre humain puisque lintervalle des nombres nest plus
infini, mais dpend de la longueur des chanes de bits manipules par la machine;
la ralisation dune opration de type soustraction ncessite un circuit particulier
diffrent de celui permettant la ralisation des additions.

Tableau 4.1 INTERVALLES DES NOMBRES


REPRSENTABLES EN VALEUR SIGNE.

Longueur de la chane de bits Intervalle en base 10

8 bits [ 127, + 127]

16 bits [ 32 767, + 32 767]

32 bits [ 2 147 483 647, + 2 147 483 647]

p bits [ 2p 1 1, + 2p 1 1]
4.1 La reprsentation des informations 71

Convention du complment 2
Complment 2 dun nombre binaire N
Le complment 2 ou complment vrai dun nombre binaire N = bn 1 b0 sobtient
en ajoutant la valeur + 1 au complment restreint ou complment 1 de ce nombre.
Le complment 1 ou complment restreint dun nombre binaire N = bn 1 b0
sobtient en inversant la valeur de chacun des bits de ce nombre.
Exemple
100010012
complment restreint 011101102
+ 12
complment vrai 011101112
Convention du complment 2
Dans la convention du complment 2, un nombre ngatif N exprim sur n bits est
reprsent en prenant le complment 2 de son quivalent positif + N. Un nombre
positif + N est quant lui reprsent par sa valeur binaire sur n bits.
Exemple
Reprsentation de + 7710 sur 8 bits : 010011012
Reprsentation de 7710 sur 8 bits : + 7710 010011012
complment restreint 101100102
+ 12
7710 complment vrai 101100112
Le bit de poids fort bn 1 de la chane binaire bn 1 b0 peut tre galement inter-
prt comme bit de signe. Ainsi :
si bn 1 = 0, alors la chane binaire bn 1 b0 reprsente un nombre positif + N
dont la valeur dcimale est donne directement par la conversion de la chane
depuis la base 2 vers la base 10;
si bn 1 = 1, alors la chane binaire bn 1 b0 reprsente un nombre ngatif N dont
la valeur dcimale est celle du nombre positif associ + N obtenu en complmen-
tant 2 la chane bn 1 b0.
Exemple
Dunod La photocopie non autorise est un dlit.

La chane 001100112 code un nombre positif qui a la valeur :


+ (20 + 21 + 24 + 25)10 = + 5110
La chane 101100112 code un nombre ngatif dont la valeur est obtenue en prenant
son complment 2, soit :
101100112
010011002
+ 12
010011012 = + (20 + 22 + 23 + 26)10 = + 7710
do 101100112 = 7710.
72 4 Le langage machine et la reprsentation des informations

Les remarques suivantes peuvent tre faites propos de cette reprsentation :


une seule reprsentation du zro est admise : 000000002 = (+ 0)10 sur 8 bits.
lintervalle des nombres signs reprsentables (tableau 4.2) est born en fonction
de la longueur de la chane binaire utilise pour la reprsentation. Ainsi, sur 8 bits,
lintervalle des nombres reprsentables est [100000002, 0111111112], soit linter-
valle [ 12810, + 12710]. La chane 100000002 complmente 2 donne de nouveau
la chane 100000002. Par convention, elle reprsente la valeur 12810 ;
la ralisation dune soustraction ne ncessite pas de circuit particulier. Soustraire
un nombre A un autre nombre B quivaut additionner au nombre B le compl-
ment 2 du nombre A.

Tableau 4.2 INTERVALLES DES NOMBRES REPRSENTABLES EN COMPLMENT 2.

Longueur de la chane de bits Intervalle en base 10

8 bits [ 128, + 127]


16 bits [ 32 768, + 32 767]
32 bits [ 2 147 483 648, + 2 147 483 647]
p bits [ 22p 1, + 2p 1 1]

Convention du codage DCB (Dcimal Cod Binaire)


Chaque chiffre du nombre N10 est cod par son quivalent binaire. Comme les chif-
fres de la base 10 admettent 10 valeurs diffrentes, le codage doit se raliser sur 4 bits.
Ainsi : 00002 = 010 ; 00012 = 110 ; 00102 = 210 ; 00112 = 310 ; 01002 = 410 ; 01012 = 510 ;
01102 = 610 ; 01112 = 710 ; 10002 = 810 ; 10012 = 910.
Le codage du signe peut suivre diffrentes conventions. La plus courante consiste
coder le signe + par la valeur 10112 et le signe par la valeur 11012.

Exemple
Reprsentation de + 7710 : 1011 0111 01112.
Reprsentation de 7710 : 1101 0111 01112.

Lun des inconvnients de ce codage est quil ne se prte pas directement aux opra-
tions arithmtiques : en effet, laddition de deux valeurs dont la somme est comprise
entre 1010 et 1510 donne un code binaire sans signification. Aussi, lorsque la somme
de deux chiffres dcimaux est suprieure 910, la machine doit effectuer un ajuste-
ment dcimal, consistant ajouter la valeur + 610 la somme des deux chiffres.

Exemple
Ralisons lopration 8110 + 2210 :
1000 00012
+ 0010 00102
1010 00112
4.1 La reprsentation des informations 73

Le deuxime quartet 10102 a une valeur suprieure 910 qui est sans signification; la
valeur 01102 lui est ajoute.
1010 00112
+ 01102
1 0000 00112
Ce qui quivaut effectivement au nombre 10310.

Notion de carry et doverflow


Notion de carry

Lors dune opration arithmtique effectue sur des nombres de p bits, un p + 1er bit
peut tre gnr. Ce bit supplmentaire de poids fort nest pas perdu et est mmoris
comme tant le bit de carry. Cette mmorisation seffectue dans un registre du
processeur appel registre dtat (PSW) qui comporte plusieurs indicateurs de 1 bit,
dont lun not C, est justement positionn par loccurrence dun carry lors dune
opration arithmtique.

Exemple
Sur 8 bits, nous effectuons laddition des nombres + 7210 et + 310 reprsents selon la
convention du complment 2 :
0100 10002
+ 0000 00112
0100 10112
Il ny a pas de carry.
Sur 8 bits, nous effectuons maintenant laddition des nombres + 12710 et 210
reprsents selon la convention du complment 2 :
0111 11112
+ 1111 11102
1 0111 11012
Le 9e bit qui apparat est le bit de carry.
Dunod La photocopie non autorise est un dlit.

Notion doverflow

Lors dune opration arithmtique mettant en jeu des nombres de p bits et de mme
signe, le rsultat peut se rvler tre trop grand ou trop petit pour tre reprsentable
par la machine, cest--dire que ce rsultat est en dehors de lintervalle des nombres
reprsentables sur p bits par la convention choisie pour la reprsentation de ces
nombres signs. Le rsultat obtenu est alors erron au regard de son interprtation.
On parle alors doverflow ou de dpassement de capacit. linstar du carry,
loccurrence dun overflow est mmorise dans le registre dtat (PSW) du proces-
seur par lintermdiaire dun indicateur de 1 bit not O.
74 4 Le langage machine et la reprsentation des informations

Exemple
Sur 8 bits, nous effectuons laddition des nombres + 12710 et + 210 reprsents selon
la convention du complment 2 :
0111 11112
+ 0000 00102
1000 00012
Le rsultat obtenu est un nombre ngatif qui a pour valeur 12710 et non pas la
valeur attendue + 12910. Il y a dpassement de capacit; en effet, lintervalle des
nombres reprsentables sur 8 bits selon la convention du complment 2 est
[ 12710, + 12710].

4.1.3 Reprsentation des nombres flottants


Principe gnral
Un nombre est reprsent en virgule flottante dans la base X sil est mis sous la
forme : M1, M2 X c o M1, M2 est appel la mantisse du nombre, c est la carac-
tristique ou exposant.
Un nombre reprsent en virgule flottante est normalis sil est sous la forme :
0,M X c o M est un nombre dont le premier chiffre est non nul.

Exemple
+ 59,4151 10 5 est normalis sous la forme + 0,594151 10 3.

Il sagit de reprsenter la mantisse et son signe, ainsi que lexposant et son signe.

Reprsentation de la mantisse et de son signe : 0,M


Seul le nombre M est reprsent, soit selon la convention de la valeur signe, soit
selon la convention du complment 2, soit en base 2 non signe.

Reprsentation de lexposant et de son signe : c


La caractristique c est translate de manire toujours coder en interne une valeur
positive. Ainsi, seule la valeur de c a besoin dtre reprsente.
Supposons que 5 bits soient rservs au codage de la caractristique. Les valeurs
positives allant de + 010 + 3110 sont reprsentables pour la caractristique c, ce qui
permet en appliquant une translation k gale 1610 de reprsenter les exposants allant
de 1610 + 1510. La constante k est appele constante dexcentrement.

Un exemple : le format IBM


La reprsentation des nombres flottants pour les architectures IBM 370 (figure 4.2)
admet trois formats : un format court sur 32 bits, un format long sur 64 bits et un format
tendu sur 128 bits. Le nombre flottant est normalis sous la forme 0,M16 16c.
Chacun des trois formats adopte la codification suivante :
4.1 La reprsentation des informations 75

le signe de la mantisse est cod sur le premier bit de loctet de poids fort. Ce bit
vaut 0 si la mantisse est positive, 1 si elle est ngative;
les 7 bits restants de loctet de poids fort codent la caractristique c. Cest une
puissance de 16 code en interne avec un excentrement gal 6410 ;
les bits restants codent la mantisse, cest--dire le nombre M exprim en base 16.
Lintervalle des nombres pouvant tre reprsents dans ce format est lintervalle
[16 64, 16+ 63].

0 + puissance de 16
1 excdent 6410

S C M en base 16
1 7 24 bits
32 bits

Figure 4.2 Le format IBM 32 bits.

Exemple
Reprsentons le nombre 10,12510 selon le format court sur 32 bits.
10,12510 = 1010,0012 = A,216 = 0,A2 161
Lexposant c = 1 est translat de la valeur 64. c = 6510 = 010000012.
Le signe de la mantisse est ngatif et vaut donc 1.
Le codage donne donc la chane binaire :
1 01000001 101000100000000000000002 = A0D1000016

La norme IEEE 754


Format normalis dun nombre
La norme IEEE 754 dfinit un format standardis qui vise unifier la reprsentation
des nombres flottants, qui est trs diverse selon les constructeurs.
Cette norme propose deux formats de reprsentation : un format simple prcision
sur 32 bits et un format double prcision sur 64 bits (figure 4.3).

0 + puissance de 2
1 excdent 12710
Dunod La photocopie non autorise est un dlit.

S C M en base 2, avec un bit cach 1 Simple prcision


1 8 23 bits
32 bits

0 + puissance de 2
1 excdent 102310
S C M en base 2, avec un bit cach 1 Double prcision
1 11 52 bits
64 bits

Figure 4.3 Les formats IEEE 754.


76 4 Le langage machine et la reprsentation des informations

Dans le format simple prcision, la chane de 32 bits reprsentant le nombre est


dcompose en 1 bit pour le signe de la mantisse, 8 bits pour lexposant et 23 bits
pour le codage de la mantisse.
Dans le format double prcision, la chane de 64 bits reprsentant le nombre est
dcompose en 1 bit pour le signe de la mantisse, 11 bits pour lexposant et 52 bits
pour le codage de la mantisse.
La mantisse est normalise sous la forme 1,M 2 c o M est un nombre quel-
conque. On parle alors de pseudo-mantisse. Le 1 prcdant la virgule nest pas cod
en machine et est appel bit cach. Le signe de la mantisse est cod sur un bit (bit de
poids fort de lentier de 32 bits ou de 64 bits) valant 0 si la mantisse est positive, et 1
si elle est ngative. La valeur du nombre M est code selon la base 2.
Pour le format simple prcision, la constante k dexcentrement applique
lexposant est gale + 12710. Elle est gale + 1 02310 pour le format double prci-
sion. Lexposant c cod en interne est alors gal c + 12710 ou c + 1 02310.

Exemple
Reprsentons le nombre 10,12510 selon le format IEEE 754 simple prcision.
10,12510 = 1010,0012 = 1,0100012 23
Lexposant c = 3 est translat de la valeur 127.
c = 13010 = 100000102
Le signe de la mantisse est ngatif et vaut donc 1.
Le codage donne donc la chane binaire :
1 10000010 010001000000000000000002 = C122000016

Reprsentation du zro, des infinis, reprsentations dnormalises


En dehors du format normalis, le norme IEEE admet des codages spciaux pour la
reprsentation de la valeur 0, des valeurs + et , ainsi que des reprsentations
dnormalises (tableau 4.3) :
reprsentation du zro : la valeur 0 est reprsente avec un exposant c = 12710 et
une mantisse M = 0. Le signe S est quelconque; il y a donc existence dun zro
positif et dun zro ngatif;
reprsentation de + et : les valeurs + et sont reprsentes avec un
exposant c = + 12810 et une mantisse M = 0. Le signe S est fonction de linfini
reprsent;
reprsentation dnormalise : la reprsentation dnormalise permet de reprsenter
des nombres plus petits que ceux admis par le format IEEE normalis. Dans ce
cas, les nombres dnormaliss sont reprsents avec un exposant c = 12710 et
une mantisse sous la forme 0,M 2 c. Par ailleurs, la norme admet galement la
reprsentation de codes permettant la signalisation derreurs (par exemple, rsultat
dune division par 0). Ce sont les NaNs (Not a Number) cods avec un exposant
c = + 12810 et une mantisse M non nulle.
4.1 La reprsentation des informations 77

Tableau 4.3 RSUM DES FORMATS DE LA NORME IEEE 754.

Format Valeurs reprsentes

Normalis - 126 c + 127 2 126 2128


c = 127, M = 0, S = + ou + 0 ou 0
c = + 128, M = 0, S = + ou + ou
c = 127, M 0, S = + ou dnormalis
c = + 128, M 0, S = + ou NaNs

4.1.4 Reprsentation des caractres


La reprsentation des caractres seffectue par lassociation dune chane binaire
chaque caractre. Selon la longueur de la chane binaire choisie par le code, le nombre
de caractres pouvant tre cods est plus ou moins important. Le nombre de carac-
tres reprsentables par un code est appel puissance lexicographique du code. Les
caractres reprsenter sont :
dune part les caractres ditables, cest--dire les lettres majuscules et minus-
cules, les signes de ponctuation, les signes mathmatiques, etc. ce qui reprsente
environ 90 caractres;
dautre part les caractres non ditables ou commandes qui sont rservs la rali-
sation de fonctions particulires par lordinateur. Par exemple le caractre BEL
provoque le retentissement dune sonnerie au niveau du terminal.

Le code ASCII
Dunod La photocopie non autorise est un dlit.

Figure 4.4 Table ASCII standard.


78 4 Le langage machine et la reprsentation des informations

Le codage ASCII (American Standard Code for Information Interchange) encore


connu sous le nom dalphabet international no5 est un code 7 bits qui permet donc
de reprsenter 128 caractres. Chacun des codes associs un caractre est donn
dans une table deux entres, la premire entre codant la valeur du quartet de poids
faible et la seconde entre codant la valeur des 3 bits de poids fort du code associ au
caractre (figure 4.4). Ainsi le caractre A est cod par la chane 100 00012 soit le
code hexadcimal 4116.
Le code ASCII est trs utilis sur les processeurs de la famille Intel.

Le code EBCDIC
Le codage EBCDIC (Extended Binary Coded Decimal Interchange Code) est un
code 8 bits permettant donc de coder 256 caractres. Chacun des codes associs un
caractre est donn dans une table deux entres, la premire entre codant la valeur
du quartet de poids faible et la seconde entre codant la valeur du quartet de poids
fort du code associ au caractre (figure 4.5). Ainsi le caractre A est cod par la
chane 1100 00012 soit le code hexadcimal C116.
Le code EBCDIC est trs utilis sur les gros systmes, notamment les systmes de
la famille IBM tels que les architectures 370 et 390.

Figure 4.5 Table EBCDIC standard.

Le code UNICODE
Le codage UNICODE (Universal Code) est un code 16 bits en cours de dfinition
qui a pour but de coder le plus grand nombre possible de symboles en usage dans le
monde. Les 16 bits de code permettent de coder 65 536 caractres diffrents. Le codage
4.2 Les instructions machine 79

UNICODE reprend le codage ASCII en ce qui concerne les principaux caractres, en


tendant le code 16 bits (figure 4.6). Ainsi, le caractre A est cod par la chane hexa-
dcimale 004116. Ce code est utilis notamment sous les processeurs de type Pentium.

Figure 4.6 Table UNICODE standard.

4.2 LES INSTRUCTIONS MACHINE


Une instruction (figure 4.7) dsigne un ordre donn au processeur et qui permet
celui-ci de raliser un traitement lmentaire. Linstruction machine est une chane
binaire de p bits compose principalement de deux parties :
le champ code opration compos de m bits : il indique au processeur le type de
Dunod La photocopie non autorise est un dlit.

traitement raliser (addition, lecture dune case mmoire, etc.). Un code opra-

p bits

adresse Code opration Dsignation des oprandes

m bits : 2m instructions diffrentes


00000000 : addition
00100110 : multiplication
etc.
Figure 4.7 Format gnral dune instruction machine.
80 4 Le langage machine et la reprsentation des informations

tion de m bits permet de dfinir 2m oprations diffrentes pour la machine. Le


nombre doprations diffrentes autorises pour une machine dfinit le jeu dinstruc-
tions de la machine;
le champ oprandes compos de p m bits : il permet dindiquer la nature des
donnes sur lesquelles lopration dsigne par le code opration doit tre effec-
tue. La faon de dsigner un oprande dans une instruction peut prendre diffrentes
formes : on parle alors de mode dadressage des oprandes.

4.2.1 Les diffrents types dinstructions


Les instructions du langage machine peuvent tre ranges selon six catgories :
les instructions arithmtiques et logiques : ce sont les instructions qui permettent
de raliser les calculs entre nombres (addition, soustraction, multiplication) et les
oprations logiques (ou, et, ou exclusif). Elles mettent en jeu les circuits de lUAL.
Ainsi linstruction ADD Im R1 3 effectue laddition du contenu du registre R1 avec
la valeur immdiate 3 et stocke le rsultat dans le registre R1;
les instructions de transfert de donnes : ce sont les instructions qui permettent de
transfrer une donne depuis les registres du processeur vers la mmoire centrale
et vice versa ainsi quentre registres du processeur. Ainsi linstruction LOAD D R1 3
range la valeur contenue ladresse 3 en mmoire centrale dans le registre R1 tandis
que linstruction STORE D R1 3 crit le contenu du registre R1 ladresse mmoire 3;
les instructions dentres-sorties : ce sont les instructions qui permettent au proces-
seur de lire une donne depuis un priphrique (par exemple le clavier) ou dcrire
une donne vers un priphrique (par exemple limprimante);
les instructions de rupture de squence dexcution encore appeles instructions
de saut ou de branchement : ce sont des instructions qui permettent de rompre
lexcution squentielle des instructions dun programme. Linstruction excute
la suite dun saut nest pas celle qui suit immdiatement linstruction de saut,
mais celle dont ladresse a t spcifie dans linstruction de saut. On distingue ici
deux types dinstructions de sauts. Les instructions de sauts inconditionnels effec-
tuent toujours le dbranchement de lexcution ladresse spcifie. Les instructions
de sauts conditionnels effectuent ce dbranchement si et seulement si une condi-
tion lie aux indicateurs du registre dtat de lUAL est vrifie. Ainsi linstruc-
tion JMP D 128 effectue toujours un branchement dans le code du programme
ladresse 128 tandis que linstruction JMPO D 128 effectue ce mme branchement
si et seulement si un dpassement de capacit est positionn dans le registre dtat
de lUAL (indicateur O);
les instructions dappels de sous-programmes (CALL, RET) qui permettent de modi-
fier la valeur courante du compteur ordinal CO pour aller excuter une suite dinstruc-
tions machine constituant une fonction (cest lobjet de linstruction CALL qui
effectue lappel de sous-programme) puis de revenir excuter les instructions
machine situes juste aprs lappel (instruction RET);
les instructions particulires permettant par exemple darrter le processeur (HALT)
ou encore de masquer/dmasquer les interruptions (DI/EI).
4.2 Les instructions machine 81

4.2.2 Les diffrents types doprandes


Les oprandes dsignent les donnes sur lesquelles le code opration de linstruction
doit tre ralis. Selon le type dinstruction, le code opration peut admettre 1, 2
ou 3 oprandes.
Un oprande peut tre de trois natures diffrentes :
loprande est une valeur immdiate, par exemple la valeur 3;
loprande est un registre du processeur, par exemple le registre R1;
loprande est un mot mmoire, par exemple le mot mmoire dadresse 6316.
La nature de loprande et la faon de latteindre sont indiques par lintermdiaire
du mode dadressage. Le format du champ oprande est donc schmatiquement
compos de deux parties : le mode dadressage li loprande et une information
complmentaire qui permet conjointement avec le mode dadressage de trouver
loprande.

Exemple

information complmentaire = oprande = valeur immdiate


code opration mode adressage immdiat
3
Oprande = 3

information complmentaire = numro de registre


code opration mode adressage registre
3
Oprande = contenu de Registre 3 = 5

information complmentaire = adresse mmoire


code opration mode adressage direct
128
Oprande = contenu de la case mmoire 128 = 7

information complmentaire = adresse mmoire


code opration mode adressage indirect
64
Oprande = contenu de la case mmoire 128 = 7
Dunod La photocopie non autorise est un dlit.

Mmoire centrale
5
Registre 3 64 128

128 7

Figure 4.8 Modes dadressages.


82 4 Le langage machine et la reprsentation des informations

Lorsque loprande est une valeur immdiate, le mode dadressage associ loprande
est le mode dadressage immdiat. Linformation complmentaire est loprande lui-
mme (figure 4.8).
Lorsque loprande est contenu dans un registre, alors le mode dadressage associ
est un mode dadressage registre ou implicite. Linformation complmentaire est le
numro du registre qui contient loprande.
Lorsque loprande est un mot mmoire, lun des modes dadressage associs peut-
tre le mode dadressage direct. Dans ce cas, linformation complmentaire dsigne
ladresse du mot mmoire contenant loprande concern par lopration. Un autre
mode dadressage associ peut tre le mode dadressage indirect. Dans ce cas, linfor-
mation complmentaire dsigne galement ladresse dun mot mmoire, mais ce mot
mmoire contient lui-mme une adresse qui est ladresse du mot mmoire contenant
loprande concern par lopration.

4.2.3 Un exemple
Imaginons une machine qui admet des instructions sur 32 bits de type registre/mmoire.
Le format dune instruction est donn par la figure 4.9.

COP m reg1 reg2 champ2

0 5 8 12 16 31

Figure 4.9 Format dune instruction machine.

Ce format comprend :
COP est le Code OPration cod sur 5 bits;
m est le mode dadressage cod sur 3 bits;
reg1 et reg2 codent un numro de registre sur 4 bits (de 00002 11112);
champ2 est une valeur immdiate, une adresse mmoire ou un dplacement cod
sur 16 bits.
reg1, reg2 et champ2 codent linformation complmentaire du mode dadressage m
permettant de trouver les oprandes de lopration.
Linstruction admet soit :
un seul oprande qui est alors un registre du processeur cod dans le champ reg1;
deux oprandes, qui sont soit deux registres du processeur cods dans reg1 et
reg2, soit un registre cod dans reg1 et une valeur immdiate code dans champ2,
soit un registre cod dans reg1 et un mot mmoire cod via le mode dadressage
m et la valeur prcise dans champ2.

Les codes oprations


Le code opration est une chane de 5 bits ce qui permet de coder 32 oprations
diffrentes. Le tableau 4.4 donne quelques codes oprations :
4.2 Les instructions machine 83

Tableau 4.4 QUELQUES CODES OPRATIONS.

Nature de lopration Code binaire

chargement dun registre 00000

chargement dun mot mmoire 00001

addition 00101
complment 2 00110

et logique 01000

ou logique 01001

dbranchement dans le code 01100

Les modes dadressage : le champ m


Le champ m code le mode dadressage utilis vis--vis des oprandes. m tant cod
sur 3 bits, il autorise 8 modes dadressage diffrents. Le tableau 4.5 donne lexemple
de quelques modes dadressage.

Tableau 4.5 QUELQUES MODES DADRESSAGE.

Mode dadressage Signification pour loprande Valeur

immdiat champ2 = valeur immdiate m = 000

direct champ2 = adresse de loprande m = 001


indirect champ2 = adresse dun mot mmoire qui contient m = 011


ladresse du mot mmoire contenant loprande

Pour les valeurs de m comprises entre 0 et 5, le code opration travaille sur deux
oprandes; le premier est un registre dont le numro est cod par le champ reg1; le
Dunod La photocopie non autorise est un dlit.

deuxime est soit une valeur immdiate, soit une adresse dduite de champ2 et m.
Les valeurs m = 110 et m = 111 sont utilises pour les oprations sur des registres :
110 : la valeur champ2 ainsi que celle du champ reg2 ne sont pas significatives; le
code opration travaille sur un seul oprande, le registre reg1;
111 : le code opration travaille sur deux registres reg1 et reg2. La valeur champ2
nest pas significative.

Les valeurs des champs reg


Les valeurs reg(1ou2) = 0000 1111 codent les numros de registres du processeur.
84 4 Le langage machine et la reprsentation des informations

Exemples dinstructions machines


Prenons deux exemples dinstructions machine dans le contexte que nous venons de
dfinir :
COP m reg1 reg2 champ2
00101 000 0000 xxxx 00000000000001000
Le code opration correspond une addition avec deux oprandes. Le premier
oprande est un registre cod dans le champ reg1 qui est donc le registre R0 du
processeur. Le champ reg2 est sans signification (xxxx). Le deuxime oprande est
dsign par un mode dadressage m = 000. Cest un mode dadressage immdiat, ce
qui signifie que le deuxime oprande est la valeur 8 code dans champ2. In fine,
cette instruction effectue laddition entre le contenu du registre R0 et la valeur 8 et
range le rsultat de lopration dans R0.
COP m reg1 reg2 champ2
00000 001 0000 xxxx 00000000000100000
Le code opration correspond un chargement de registre. Le premier oprande
est un registre cod dans le champ reg1 qui est donc le registre R0 du processeur. Le
champ reg2 est sans signification (xxxx). Le deuxime oprande est dsign par un
mode dadressage m = 001. Cest un mode dadressage direct, ce qui signifie que le
deuxime oprande est le contenu du mot mmoire pour lequel ladresse est code
dans champ2. In fine, cette instruction effectue le chargement du registre R0 avec le
contenu de la case mmoire dadresse 32.
Pour terminer, le programme relogeable suivant ralise lincrmentation infinie du
contenu du registre R1 en crivant chaque tour de boucle le contenu du registre R1
ladresse mmoire 0.
adresse COP m reg1 reg2 champ2 signification
(00000000)16 cet emplacement est rserv pour stocker le contenu de R1
(00000004)16 00000 000 0001 0000 0000000000000000 R1 0
(00000008)16 00101 000 0001 xxxx 0000000000000001 R1 R1 + 1
(0000000C)16 00001 001 0001 xxxx 0000000000000000 (0)16 R1
(00000010)16 01100 001 xxxx xxxx 0000000000001000
retourner linstruction dadresse 816

4.3 LES INSTRUCTIONS DU LANGAGE DASSEMBLAGE


Le langage machine se compose dinstructions exprimes en binaire, telles quon les
trouve dans la mmoire au moment de lexcution du programme.
Le langage dassemblage est une variante symbolique du langage machine, permet-
tant au programmeur de manipuler les instructions de la machine en saffranchissant
notamment des codes binaires et des calculs dadresse. Le langage dassemblage
comporte le mme jeu dinstructions que le langage machine et est galement spci-
fique de la machine.
4.3 Les instructions du langage dassemblage 85

Pour pouvoir tre excut par la machine, le programme crit en langage dassem-
blage doit tre traduit en langage machine. Cette traduction est effectue par un outil
appel lassembleur.

4.3.1 Format dune instruction du langage dassemblage


Une instruction du langage dassemblage est compose de champs, spars par un
ou plusieurs espaces. On identifie un champ tiquette, un champ code opration, un
champ oprandes pouvant effectivement comporter plusieurs oprandes spars par
des virgules et un champ commentaires (figure 4.10).
Nous allons tudier plus en dtail le format des instructions du langage dassemblage
et la composition du langage dassemblage en considrant que ce langage dassem-
blage est celui associ au langage machine de lexemple prcdent.

tiquette Code opration Oprandes Commentaires

boucle : ADD rg2 R0, R1 Addition


correspond linstruction machine 00101 111 0000 0001

Figure 4.10 Format dune instruction en langage dassemblage.

Codes oprations
Le code opration est une chane de caractres mnmonique du code opration binaire.
Le tableau 4.6 donne lexemple de quelques mnmoniques.

Tableau 4.6 QUELQUES CODES OPRATIONS MNMONIQUES.

Nature de lopration Code assembleur mnmonique Code binaire

chargement dun registre LOAD 00000


chargement dun mot mmoire STORE 00001

addition ADD 00101
complment 2 CP2 00110
Dunod La photocopie non autorise est un dlit.

et logique ET 01000
ou logique OU 01001
dbranchement dans le code JMP 01100

Les tiquettes
Une tiquette est une chane de caractres permettant de nommer une instruction ou
une variable. Une tiquette correspond une adresse dans le programme, soit celle
de linstruction, soit celle de la variable.
86 4 Le langage machine et la reprsentation des informations

Exemple
Ltiquette boucle remplace ladresse binaire de linstruction ADD Rg2 R1, R0 :
boucle : ADD Rg2 R1, R0
ADD Rg2 R1, R3
JMP Im boucle
Une tiquette peut galement permettre de nommer une constante.

Les oprandes
Chaque oprande dans une instruction du langage dassemblage possde un nom
permettant de le rfrencer. Les oprandes dune instruction sont spars par une
virgule.
Pour les oprandes variables ou constantes, le nom est ltiquette associe par le
programmeur au moment de la dclaration des variables et constantes (cf. para-
graphe 4.3.1).
Pour les oprandes adresse dinstruction, le nom est ltiquette associe linstruc-
tion par le programmeur. Chaque registre de la machine est rfrenc par un nom :
R0, R1, R2, , R11.
Le mode dadressage dun oprande mmoire est spcifi par une chane place
aprs le code opration et qui remplace la chane binaire m. Le tableau 4.7 donne
quelques exemples de mnmoniques associs aux modes dadressage.

Tableau 4.7 QUELQUES MODES DADRESSAGE.

Mode Valeur
Signification pour loprande Mnmonique
dadressage binaire

immdiat champ2 = valeur immdiate Im m = 000


direct champ2 = adresse de loprande D m = 001

indirect champ2 = adresse dun mot mmoire qui contient I m = 011
ladresse du mot mmoire contenant loprande
registre seul reg1 code un numro de registre Rg1 m = 110
deux registres reg1 et reg2 codent un numro de registre Rg2 m = 111

Les directives
Les directives sont des pseudo-instructions : elles ne correspondent aucune instruc-
tion machine; ce sont des ordres destins au traducteur assembleur.
Les directives servent notamment la dfinition des variables : ainsi la directive DS n
permet de rserver n mots mmoire pour une variable. Associer une tiquette une
dclaration de variable permet ensuite daccder cette donne par le biais dun nom
symbolique (en loccurrence ltiquette). De mme, la directive DC n permet de dclarer
une constante prenant la valeur n. La directive STOP indique la fin dun programme.
4.3 Les instructions du langage dassemblage 87

Exemple
vecteur : DS 50 dfinition de la variable vecteur et rservation de 50 mots
un : DC 1 dfinition dune constante nomme un ayant pour valeur 1

4.3.2 Fonctionnement de lassembleur


Lassembleur est un programme qui traduit le langage dassemblage en langage
machine. Son fonctionnement est trs proche de celui du compilateur en phase de
gnration de code.
La traduction effectue par lassembleur ne peut pas se faire en une seule passe,
cest--dire que lassembleur ne peut pas travailler en traduisant directement une
une les instructions du langage dassemblage en instructions du langage machine,
ceci cause du problme des rfrences en avant, cest--dire des rfrences des
tiquettes non encore connues de lassembleur.

Exemple
JMP boucle


boucle :

Lorsque lassembleur traite linstruction JMP boucle, il ne peut pas traduire le


symbole boucle par une adresse, puisque lassembleur na pas encore rencontr la
dfinition de ltiquette boucle. Lassembleur travaille donc en deux passes. Lors de
la premire passe, lassembleur rassemble lensemble des symboles et tiquettes
dans une table et leur associe une adresse dans le code. Lors de la deuxime passe,
lassembleur rsout les rfrences en avant en utilisant la table construite lors de la
premire passe.

Premire passe de lassembleur


La principale fonction de la premire passe est de construire la table des symboles.
Cette table contient une entre pour chaque nouveau symbole du code en langage
Dunod La photocopie non autorise est un dlit.

dassemblage et met en correspondance le nom du symbole avec sa valeur dans le


code. Cette valeur est une adresse si ltiquette est associe une instruction ou
une variable; cest une valeur constante si ltiquette est associe une constante.
Pour pouvoir affecter une adresse chacun des symboles du code en langage
dassemblage, lassembleur doit assigner une adresse chacune des instructions et
des dclarations de variables. Pour ce faire, lassembleur manipule un compteur
appel compteur demplacement, mis 0 au dbut de la premire passe et incrment
de la longueur de linstruction ou de la longueur de la variable chaque instruction
ou dclaration traite. Lassembleur ralise alors une allocation du programme machine
relativement ladresse 0. La premire passe limine galement les commentaires.
88 4 Le langage machine et la reprsentation des informations

Exemple
On considre le programme en langage dassemblage suivant qui correspond au
programme machine vu prcdemment :
var : DS 1 dfinition de la variable var et rservation dun mot mmoire
un : DC 1 dfinition de la constante 1 nomme un
LOAD Im R1, 0
boucle : ADD Im R1, un
STORE D R1, var
JMP boucle
STOP

La premire passe de lassembleur construit la table des symboles suivante


(tableau 4.8) :

Tableau 4.8 TABLE DES SYMBOLES.

Nom du symbole Valeur


var 0
un 1
boucle 8

Deuxime passe de lassembleur


Lors de la deuxime passe, lassembleur gnre les instructions en code machine.
Pour cela, lassembleur remplace chaque mnmonique par son code binaire, chaque
symbole par la valeur qui lui a t attribue dans la table des symboles. Sil y a des
expressions arithmtiques, celles-ci sont values.
Si cela a t demand, lassembleur gnre galement un listing dassemblage du
programme. Ce listing comporte gnralement pour chaque ligne : un numro de ligne,
le texte source, la reprsentation interne en hexadcimal ou en octal de linstruction
machine, la signalisation dventuelles erreurs de syntaxe.

Exemple
Le programme en langage dassemblage suivant :
var : DS 1 dfinition de la variable var et rservation dun mot mmoire
un : DC 1 dfinition de la constante 1 nomme un
LOAD Im R1, 0
boucle : ADD Im R1, un
STORE D R1, var
JMP D boucle
STOP
4.4 Conclusion 89

quivaut au programme machine suivant :


adresse codeop m reg1 reg2 champ2 signification
(00000000)16 cet emplacement correspond la dclaration de la variable var
(00000004)16 00000 000 0001 0000 0000000000000000 R1 0
(00000008)16 00101 000 0001 xxxx 0000000000000001 R1 R1 + 1
(0000000C)16 00001 001 0001 xxxx 0000000000000000 (0)16 R1
(00000010)16 01100 001 xxxx xxxx 0000000000001000
retourner linstruction dadresse 816

4.4 CONCLUSION
Ce chapitre nous a permis dtudier les diffrentes normes de codage existantes pour
reprsenter au sein de lordinateur les diffrentes informations manipules par celui-ci.
Ce sont :
les donnes qui peuvent tre des nombres signs, des nombres flottants et des
caractres;
les instructions machine composes dun code opration qui spcifie la nature de
lopration raliser et doprandes qui spcifient les donnes sur lesquelles lopra-
tion doit tre effectue. Les oprandes sont dcrits selon un mode dadressage qui
permet dindiquer la nature de loprande et la faon de le trouver.
Le langage dassemblage constitue une variante symbolique du langage machine,
qui lui est strictement quivalente. Loutil assembleur permet de traduire un code
crit en langage dassemblage vers son quivalent langage machine, seul excutable
par la machine.
Dunod La photocopie non autorise est un dlit.
Chapitre 5

Les circuits logiques 5

La donne de base manipule par la machine physique est le bit (binary digit) qui ne
peut prendre que deux valeurs : 0 et 1. Ces 0 et 1 correspondent aux deux niveaux de
voltage (0-1 et 2-5 volts) admis pour les signaux lectriques issus des composants
lectroniques (transistors) qui constituent les circuits physiques de la machine. Ces
circuits physiques sont construits partir de circuits logiques, cest--dire de circuits
intgrs spcialiss, destins raliser une opration boolenne.

5.1 LES CIRCUITS LOGIQUES

5.1.1 Dfinition
Un circuit logique est un circuit intgr spcialis destin raliser une opration
boolenne. Pour un tel circuit, on fait correspondre aux signaux lectriques existants
en entre et en sortie, un tat logique valant 0 ou 1. Ltat 0, correspondant la
prsence dune tension gale ou infrieure au tiers environ de la tension dalimenta-
tion, correspond ltat bas tandis que ltat 1, correspondant la prsence dune
tension gale ou suprieure aux deux tiers environ de la tension dalimentation1, est
appel ltat haut2.

1. Les plages des tensions correspondant aux deux tats dpendent de la technologie utilise pour
la ralisation des circuits (TTL, CMOS, etc.).
2. Dans le cas de la logique dite positive. Dans le cas de la logique ngative, la valeur 1 est attri-
bue ltat bas et la valeur 0 est attribue ltat haut.
5.1 Les circuits logiques 91

Deux catgories de circuits peuvent tre diffrencies :


les circuits combinatoires : pour de tels circuits, les valeurs en sortie ne dpendent
que des valeurs en entre;
les circuits squentiels : pour de tels circuits, les valeurs en sortie dpendent des
valeurs en entre ainsi que du temps et des tats antrieurs.

5.1.2 Les circuits combinatoires


Un circuit combinatoire est un circuit logique pour lequel les sorties ne dpendent
que des entres, et non du temps et des tats antrieurs.
Le circuit combinatoire est dfini lorsque son nombre dentres, son nombre de
sorties ainsi que ltat de chaque sortie en fonction des entres ont t prciss. Ces
informations sont gnralement fournies grce une table de vrit dans laquelle les
entres et les sorties sont exprimes par des variables boolennes.

La table de vrit
Une variable boolenne ou variable logique est une variable dont la valeur appartient
lensemble {0, 1}.
Une fonction logique de n variables dfinies dans le rfrentiel E, note f (an,
an 1, , a0), est une fonction dfinissant toute partie du rfrentiel E par la combi-
naison des variables (an, an 1, , a0), au moyen des oprations somme logique,
produit logique et complmentation.

Somme logique
Note + , la somme logique de deux ensembles A et B dfinis dans le rfrentiel
E est constitue des lments appartenant soit A, soit B, soit aux deux ensembles
la fois. La somme logique correspond un oprateur OU.

Produit logique
Note , le produit logique de deux ensembles A et B dfinis dans le rfrentiel E
est constitu des lments communs aux deux ensembles A et B. Le produit logique
correspond un oprateur ET.
Complmentation
Dunod La photocopie non autorise est un dlit.


Le complment A de lensemble A dfini sur E, est lensemble A tel que : A + A = 1

et A A = 0.

Exemple

La fonction f(a, b) = a b + a b est une fonction logique.

La table de vrit dune fonction boolenne f n variables est une table n + 1 colon-
nes, n colonnes correspondant aux n variables de la fonction et la n + 1me au rsultat
de la fonction. Cette table prsente autant de lignes quil y a de cas possibles; plus
prcisment pour une fonction f n variables, elle comporte donc 2n lignes. Lexpres-
92 5 Les circuits logiques

sion de la fonction f partir de sa table de vrit sobtient en effectuant la somme


logique des produits logiques des n variables pour lesquels le rsultat de f est 1.

Exemple

La table de vrit de la fonction f(a, b) = a b + a b est une table 3 colonnes et
4 lignes (tableau 5.1).

Tableau 5.1
TABLE DE VRIT DE LA FONCTION F(A, B) = A B + A B.

a b f

0 0 0
0 1 1
1 0 0
1 1 1

Lexpression de la fonction boolenne f est schmatise partir de plusieurs


oprateurs de base qui reprsentent des fonctions logiques lmentaires par lassem-
blage desquelles il est possible de raliser des fonctions plus complexes. chacune
de ces fonctions lmentaires, correspond un circuit que lon appelle une porte.

Oprateurs de base
Loprateur NON (NOT)
La fonction NON est une fonction une variable a qui fait correspondre celle-ci,

son complment a. Elle est galement appele inverseur. Sa table de vrit est
(tableau 5.2) :

Tableau 5.2 TABLE DE VRIT DE LA FONCTION NON(A) = A.


a NON a a
0 1
1 0
Figure 5.1 Circuit NON.

Et le circuit associ est schmatis sur la figure 5.1.

Loprateur OU (OR)
La fonction OU est une fonction deux variables a et b qui fait correspondre
celles-ci, la somme logique de a et b, soit a + b. Sa table de vrit est (tableau 5.3) :
f(a, b) = a b + a b + a b
= a (b + b) + a b
= a +ab
= a + b (loi dabsorption)
5.1 Les circuits logiques 93

Tableau 5.3 TABLE DE VRIT DE LA FONCTION OU(A, B) = A + B.

a b OU a
0 0 0 a+b

0 1 1
b
1 0 1
1 1 1 Figure 5.2 Circuit OU.

Et le circuit associ est donn par figure 5.2.

Loprateur ET (AND)
La fonction ET est une fonction deux variables a et b qui fait correspondre celles-ci,
le produit logique de a et b, soit a b. Sa table de vrit est (tableau 5.4) :

Tableau 5.4 TABLE DE VRIT DE LA FONCTION ET(A, B) = A B.

a b ET a
0 0 0 ab
0 1 0
b
1 0 0
1 1 1 Figure 5.3 Circuit ET.

Et la figure 5.3 donne le circuit associ.

Loprateur OU exclusif (XOR)


La fonction OU exclusif est une fonction deux variables a et b qui fait correspondre
celles-ci, une sortie 1 si les valeurs des deux variables sont diffrentes. Elle est
note a b. Sa table de vrit est (tableau 5.5) :

Tableau 5.5 TABLE DE VRIT


DE LA FONCTION XOR(A, B) = A B.
Dunod La photocopie non autorise est un dlit.

a b XOR a
0 0 0 a+b
0 1 1
b
1 0 1
1 1 0 Figure 5.4 Circuit XOR.

f(a, b) = a b + a b = a b
Et la figure 5.4 donne le circuit associ.
94 5 Les circuits logiques

Un exemple de circuit combinatoire : ladditionneur n bits


Nous allons tudier la composition du circuit combinatoire permettant de raliser
laddition binaire de deux nombres A et B de n bits. Ce circuit est dcompos en
deux parties :
un circuit correspondant laddition des bits de poids faible a0 et b0 pour lesquels
il ny a pas de retenue propage prendre en compte;
un circuit correspondant laddition des bits de poids suprieur ai et bi, 0 < i < n
pour lesquels il faut prendre en compte la retenue ri 1 propage depuis le rang
i 1 infrieur.

Additionneur 1 bit pour les bits de poids faible a0 et b0

Laddition des bits a0 et b0 dlivre deux rsultats : le bit rsultat c0 et la retenue


propage vers le rang suprieur r0 : a0 + b0 donne la retenue r0 et le rsultat c0 La
table de vrit correspondante est (tableau 5.6) :

Tableau 5.6 TABLE DE VRIT


POUR LADDITION DES BITS DE POIDS FAIBLE A0 ET B0.
a0
c0 = a 0 + b 0

a0 b0 c0 r0
b0
0 0 0 0

0 1 1 0

1 0 1 0 r0 = a 0 b 0
1 1 0 1
Figure 5.5 Circuit additionneur
de poids faible.

Il en dcoule : c 0 = a 0 b0 + a 0 b0 = a 0 b0 et r0 = a 0 b0 .
Le circuit logique associ est donc form dune porte XOR et dune porte ET
(figure 5.5). Comme ce circuit ne tient pas compte dune retenue propage depuis le
rang infrieur, il est qualifi de demi-additionneur.

Additionneur 1 bit pour les bits de poids fort ai et bi

Laddition des bits de poids fort ai et bi doit tre faite en tenant compte de la retenue
ri 1 propage depuis le rang i 1 infrieur. Cette addition dlivre deux rsultats : le
bit rsultat ci et la retenue propage vers le rang suprieur ri.
ri ri 1
ai +1 ai ai 1
+ bi + 1 bi bi 1
rsultat c i
5.1 Les circuits logiques 95

La table de vrit correspondante est (tableau 5.7) :

Tableau 5.7 TABLE DE VRIT POUR LADDITION DES BITS DE POIDS FORT AI ET BI.

ai bi ri 1 ci ri
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

ri 1
ai ci

bi

ri
Figure 5.6 Circuit additionneur de poids fort.
Dunod La photocopie non autorise est un dlit.

Il en dcoule :
c i = a i b i ri 1 + a i b i ri 1 + a i b i ri 1 + a i b i ri 1
= ri 1 (a i b i + a i b i ) + ri 1 (a i b i + a i b i )
= ri 1 (a i b i ) + ri 1 (a i b i )
= ai bi ri1
ri = a i b i ri 1 + a i b i ri 1 + a i b i ri 1 + a i b i ri 1
= ri 1 (a i b i + a i b i ) + a i b i (ri 1 + ri 1 )
= ri 1 (a i b i ) + a i b i
96 5 Les circuits logiques

Le circuit logique associ, appel additionneur complet, est donn par la


figure 5.6.

Additionneur complet n bits


Ladditionneur n bits est obtenu en chanant entre eux un demi-additionneur et n 1
additionneurs 1 bit complets. Le chanage seffectue par le biais des retenues propa-
ges comme le montre la figure 5.7 pour un additionneur 4 bits.

a3 b3 a2 b2 a1 b1 a0 b0

r3 r2 r1 r0

c3 c2 c1 c0

Figure 5.7 Additionneur 4 bits.

Indicateur de carry
Nous avons vu au chapitre prcdent que lors dune opration arithmtique effectue
sur des nombres de n bits, un n + 1e bit, appel bit de carry, peut tre gnr. Ce bit
de carry, mmoris par lindicateur C du registre dtat du processeur, le PSW,
correspond tout simplement au niveau de ladditionneur n bits, une retenue rn 1
gale 1 pour ladditionneur complet 1 bit de plus haut niveau (figure 5.8).

a3 b 3 a2 b2 a1 b1 a0 b0

C
r3 r2 r1 r0

c3 c2 c1 c0
Registre dtat

Figure 5.8 Indicateur de carry pour ladditionneur 4 bits.

Indicateur doverflow
De mme, nous avons vu au chapitre prcdent que lors dune opration arithm-
tique mettant en jeu des nombres de n bits et de mme signe, le rsultat peut tre en
dehors de lintervalle des nombres reprsentables sur n bits par la convention choisie
5.1 Les circuits logiques 97

pour la reprsentation de ces nombres signs. Ce dpassement de capacit est mmo-


ris dans le registre dtat du processeur, le PSW, par lintermdiaire dun indicateur
de 1 bit not O.
Un dpassement de capacit ne peut se produire que lors de laddition de deux
nombres de mme signe, cest--dire soit deux nombres positifs, soit deux nombres
ngatifs. Examinons ce que cela signifie en considrant que lopration A + B = C
est effectue :
Cas 1 : deux nombres positifs, alors on a an 1 = bn 1 = 0.
Il se produit un overflow si le rsultat de laddition est ngatif, cest--dire si on a
cn 1 = 1.
On a : an 1 = bn 1 = 0 = > an 1 + bn 1 = 0 = > rn 1 = 0; do cn 1 ne peut tre gal
1 que si rn 2 = 1; on peut noter que rn 2 rn 1.
Cas 2 : deux nombres ngatifs, alors on a an 1 = bn 1 = 1.
Il se produit un overflow si le rsultat de laddition est positif, cest--dire si on a
cn 1 = 0.
On a : an 1 = bn 1 = 1 = > rn 1 = 1; do cn 1 ne peut tre gal 0 que si rn 2 = 0;
on peut noter que rn 2 rn 1.
prsent, observons quelle est la relation existante entre rn 2 et rn 1 si les deux
nombres additionner sont de signes diffrents, cest--dire si on a an 1 bn 1.
Si an 1 bn 1, alors an 1 + bn 1 = 1.
Si rn 2 = 1, cn 1 = 0 et rn 1 = 1.
Si rn 2 = 0, cn 1 = 1 et rn 1 = 0.
On peut noter que rn 2 = rn 1.
Conclusion : un overflow peut tre dtect en effectuant un test de comparaison
entre rn 2 et rn 1. Il y a overflow si rn 2 rn 1.

Regardons prsent quel circuit peut traduire cette condition. La table de vrit
associe rn 2 rn 1 est (tableau 5.8) :

Tableau 5.8 TABLE DE VRIT


Dunod La photocopie non autorise est un dlit.

POUR LINDICATEUR DOVERFLOW O.

rn 1 rn 2 O

0 0 0

0 1 1

1 0 1

1 1 0

Ce qui correspond une porte XOR. Donc O = rn 2 rn 1 (figure 5.9).


98 5 Les circuits logiques

Registre dtat a3 b 3 a 2 b2 a1 b1 a0 b 0

C
r3 r2 r1 r0

c3 c2 c1 c0

Figure 5.9 Indicateur doverflow.

Autres circuits combinatoires


Citons quelques autres circuits combinatoires :
le multiplexeur-dmultiplexeur (figure 5.10) : un multiplexeur est un circuit qui
permet daiguiller plusieurs entres sur une seule sortie. Le dmultiplexeur ralise
la fonction inverse, cest--dire quil permet daiguiller une entre sur une sortie
parmi plusieurs. Dans les deux cas, une commande de slection C permet de rgler
les conflits;

b
S

a
Multiplexeur
S = a si c = 0
S = b si c = 1
c

a
S1

S2 Dmultiplexeur
S1 = a si c = 1
S2 = a si c = 0
c

Figure 5.10 Multiplexeur et dmultiplexeur deux entres.


5.1 Les circuits logiques 99

le dcodeur dadresses (figure 5.11) : ce circuit prsente n entres appeles adresse


et 2n sorties. chaque combinaison des n entres, correspond une seule sortie
parmi les 2n.

C a b

S0

S1

S2

S3

Figure 5.11 Dcodeur dadresses deux entres.

5.1.3 Les circuits squentiels


Un circuit squentiel est un circuit logique pour lequel ltat des sorties dpend de
ltat des entres, mais aussi des sorties antrieures. Ce type de circuit tient donc
compte dans le temps des tapes passes, quil est capable de mmoriser. Tous ces
circuits, que lon qualifie de bascules, comprennent donc un tat de mmorisation
qui permet de mmoriser la valeur de 1 bit.

Principe de fonctionnement dun circuit squentiel


Considrons le circuit de la figure 5.12. Une particularit de ce circuit qui le diff-
rencie des circuits combinatoires prcdents est que la sortie S du circuit est rin-
jecte lentre du circuit. On parle de rtroaction. Ltat de sortie du circuit va
Dunod La photocopie non autorise est un dlit.

donc tre influenc par ltat antrieur.

x2
x1 S f

Figure 5.12 Un circuit squentiel.


100 5 Les circuits logiques

La table de vrit correspondant ce circuit est :

Tableau 5.9 TABLE DE VRIT POUR LE CIRCUIT SQUENTIEL DE LA FIGURE 5.1.

x1 x2 S f

0 0 0 1
0 1 S S
1 0 0 1
1 1 1 0

Ltat pour lequel x1 = 0 et x2 = 1 correspondant ltat de mmorisation du


circuit squentiel.
Il existe plusieurs types de bascules lmentaires qui combines entre elles, permet-
tent de raliser des circuits de mmorisation complexe, telle que les registres ou
encore les cellules mmoire. Nous voquons succinctement les diffrentes bascules
existantes puis le principe de ralisation dun registre.

Panorama succinct des bascules lmentaires


La figure 5.13 dresse un panorama succinct des diffrentes bascules.

Bascule D Bascule RS

D Q R Q

S
CLK (horloge) CLK (horloge)

Q=D R S Q
0 0 Q
0 1 0
Bascule JK
1 0 1
J Q 1 1 interdit

K
CLK (horloge)

J K Q
0 0 Q
0 1 0
1 0 1
1 1 Q

Figure 5.13 Bascules lmentaires.


5.1 Les circuits logiques 101

Bascule D
Cette bascule enregistre sur sa sortie Q la donne prsente sur son entre D, chaque
top horloge.

Bascule RS
Cette bascule possde deux entres de donnes R et S. Ltat pour lequel R = S = 0
est ltat de mmorisation. Les autres tats (R = 1, S = 0) et (R = 0, S = 1) permettent
de rinitialiser la bascule soit 0, soit 1. Ltat (R = 1, S = 1) est interdit.

Bascule JK
Cette bascule possde galement deux entres de donnes J et K. Elle a un fonction-
nement identique la bascule RS la diffrence prs que ltat (J = 1, K = 1) est
autoris et conduit linversion de ltat de la bascule.

Principe de ralisation dun registre


Un registre de stockage est un lment de mmorisation permettant de stocker une
information dune longueur de n bits. Une bascule ne permettant de mmoriser
quun seul bit, un registre de n bits sera donc compos dun ensemble de n bascules.
Les bascules employes sont soit des bascules D, soit des bascules JK (figure 5.14).

E1 E2 E3 E4 E5

bascule bascule bascule bascule bascule


1 bit 1 bit 1 bit 1 bit 1 bit
RAZ
CLK
S1 S2 S3 S4 S5

Figure 5.14 Un registre de 5 bits.

La commande RAZ permet de mettre zro toutes les cellules du registre en


mme temps. Le mot charger est prsent sur les entres E1 E5 et les cinq entres
Dunod La photocopie non autorise est un dlit.

sont charges en parallle, sur un signal dhorloge dlivr sur la ligne CLK. La lecture
du mot seffectue sur les sorties S1 S5, galement en parallle.

5.1.4 Technologie des circuits logiques


Les circuits logiques sont construits partir de transistors. Un transistor est un
circuit lectronique fonctionnant comme un interrupteur et pouvant prendre deux
tats auxquels sont associs les niveaux logiques 0 et 1 : ltat satur et ltat
bloqu. Dans ltat satur, le transistor dlivre en sortie une tension positive
laquelle on fait correspondre le niveau logique 1. Dans ltat bloqu, le transistor
102 5 Les circuits logiques

au contraire dlivre une tension voisine de 0, laquelle on fait correspondre le


niveau logique 01.
Il existe diffrentes technologies de transistors : les technologies TTL (Transistor,
Transistor Logic) base de transistors bipolaires, les technologies FET (Field Effect
Transistor) base de transistors effet de champ et encore les technologies MOS
(Metal Oxyde Semi-conducteur) base de transistors effet de champ MOS. Ces
diffrentes technologies diffrent au niveau performance, consommation lectrique et
niveau dintgration, mais dans tous les cas elles mettent en jeu un mme matriau :
le semi-conducteur silicium.

Quest-ce quun semi-conducteur ?


Un semi-conducteur est un matriau structure cristalline qui se comporte soit comme
un conducteur, soit comme un isolant. Les liaisons de covalence que les atomes de
ces cristaux entretiennent entre eux sont fragiles et lorsque la temprature augmente,
les lectrons engags dans ces liaisons vont pouvoir sagiter suffisamment pour briser
ces liaisons et devenir des lectrons libres. Les lectrons qui quittent les liaisons entre
atomes crent des trous chargs positivement, qui vont leur tour attirer les lec-
trons des liaisons voisines. Il sensuit la cration dun courant lectrique qui rend le
cristal, initialement isolant, conducteur.
La conductivit dun semi-conducteur peut tre galement provoque par linser-
tion dans le cristal datomes trangers qui vont soit enrichir le cristal en charges
positives, soit en charges ngatives. Cest lopration de dopage du cristal. Dans le
cas du dopage de type P, le cristal est enrichi en charges positives en introduisant
dans le cristal des atomes possdant moins dlectrons que les atomes du cristal : il
en dcoule la formation de liaisons de covalence incompltes entre les atomes et
donc une augmentation du nombre de trous positifs. Dans le cas du dopage de
type N, le cristal est enrichi en charges ngatives, en introduisant dans le cristal des
atomes possdant au contraire plus dlectrons que les atomes du cristal : des lec-
trons en surnombre ne sont pas impliqus dans les liaisons entre atomes et forment
donc des lectrons libres supplmentaires.
Le cristal le plus couramment utilis pour la fabrication des circuits intgrs et des
transistors est le silicium (Si, N = 14). Il est couramment dop ngativement avec des
atomes de phosphore (P, N = 15) et positivement avec des atomes de bore (B, N = 5).

Les diffrentes technologies de transistors


Les transistors, quelle que soit la technologie mise en uvre, sont composs par un
assemblage de zones de silicium de type N avec des zones de silicium de type P. On
distingue principalement deux familles de transistors :
la famille TTL (Transistor, Transistor Logic) conue base de transistors bipolaires;
la famille MOS (Metal Oxyde Semi-conductor) conue base de transistors uni-
polaires MOS.

1. Dans le cas de l logique positive. Lassociation inverse est ralise dans le cadre de la logique ngative.
5.1 Les circuits logiques 103

Les transistors bipolaires


Un transistor bipolaire (figure 5.15) est constitu dun empilement de trois couches
de semi-conducteur, la premire appele lmetteur dope N, la seconde appele la
base dope P et la troisime dnomme le collecteur dope N1.

Ic
N Collecteur C
B
P Base
Ib
N metteur Ie E

Figure 5.15 Transistor bipolaire.

Sans tension lectrique applique la base, les lectrons de lmetteur sont bloqus
par la barrire de potentiel induite entre les rgions N et P : le transistor est bloqu.
Au contraire, si une tension positive est applique la base, alors la barrire de
potentiel sefface et les lectrons excdentaires de lmetteur transitent vers la zone
collecteur : le transistor est devenu passant (satur).
La technologie TTL base sur ce type de transistors permet des vitesses de fonc-
tionnement leves des portes logiques, au prix cependant dune consommation de
courant relativement importante.

Les transistors unipolaires


Le transistor unipolaire (figure 5.16) est constitu dune zone de silicium dope P (le
substrat), dans laquelle sont implantes deux zones de dopage inverse N, qui consti-
tuent la source et le drain2. La rgion intermdiaire la source et au drain est recou-
verte dune couche isolante de bioxyde de silicium (silice) dans laquelle est insre
une lectrode appele la grille.

Grille G
Source S Drain D
Dunod La photocopie non autorise est un dlit.

Silice Drain D
Grille G
N N

Substrat P
Source S

Figure 5.16 Transistor unipolaire.

1. Ceci dans le cas dun transistor NPN. On trouve galement des transistors PNP, pour lesquels
lmetteur et le collecteur sont des zones dopes P et la base est une zone dope N.
2. Ceci dans le cas dun transistor canal N. Il existe galement des transistors unipolaires
canal P pour lesquels la source et le drain sont des zones dopes P.
104 5 Les circuits logiques

Lorsquune tension nulle ou ngative est applique la grille, les lectrons sont
chasss de la surface du substrat ce qui isole lectriquement la source et le drain : le
transistor est bloqu. Au contraire, lorsquune tension positive est applique la
grille, les lectrons du substrat viennent saccumuler la surface, ralisant un canal
dlectrons entre la source et le drain : le transistor est devenu passant.
La technologie MOS consomme moins de courant que la technologie TTL, mais
elle est plus lente que cette dernire. Cette technologie est elle-mme divise en trois
familles :
la technologie PMOS qui ne met en jeu que des transistors MOS canal P;
la technologie NMOS qui ne met en jeu que des transistors MOS canal N, plus
rapide que la prcdente;
la technologie CMOS qui ne met en jeu la fois des transistors MOS canal P et
des transistors MOS canal N. Les circuits rsultants sont peu gourmands en
lectricit. Cest la technologie la plus utilise lheure actuelle.

Un exemple : ralisation dune porte inverseur


Considrons le circuit de la figure 5.17. Dans ce montage, le transistor MOS est charg,
par le drain, avec une impdance de + 5 volts1. La source est par ailleurs relie la
masse (0 volt).

+5V

Charge

Sortie
Grille G Drain D
Commande
0 V ou + 5 V
Source S

Masse 0 V

Figure 5.17 Transistor unipolaire et porte inverseur.

Une tension nulle est applique la grille : le transistor est donc bloqu. Il se
comporte comme un circuit ouvert. En consquence, la tension sur la porte de sortie
est celle de limpdance de charge, soit + 5 volts.
Une tension de + 5 volts est maintenant applique la grille : le transistor devient
passant. Il se comporte comme un court-circuit. En consquence, la tension sur la
porte de sortie est celle de la masse, soit + 0 volt.
On voit donc ici que ce montage quivaut une porte inverseur.

1. Sur les processeurs pentium, la tension dalimentation des transistors est ramene 3,3 volts.
5.1 Les circuits logiques 105

Fabrication dun circuit intgr et des fonctions logiques


Les transistors, quelle que soit la technologie mise en uvre, sont donc composs
par un assemblage de zones de silicium de type N avec des zones de silicium de type
P. Leur fabrication consiste donc implanter de faon plus ou moins complexe ces
diffrentes zones des endroits trs prcis.
Cette fabrication met en uvre un procd particulier appel microlithographie
optique ou encore photolithographie qui permet de transfrer limage dune plaque
permanente appele le masque sur une rondelle de semi-conducteur appele wafer.
Le masque est usuellement une plaquette de quartz sur laquelle ont t dessins
grce un logiciel de dessin assist par ordinateur, les circuits du microprocesseur.
Le transfert du dessin seffectue travers le masque en illuminant par des rayons
ultraviolets une rsine photosensible qui recouvre le wafer. La rsine expose est
soluble par un solvant, ce qui permet aprs lillumination de dcaper les parties
exposes pour ne laisser sur la wafer que lempreinte des circuits base de silice.
Plus prcisment, les tapes suivantes permettent la cration en parallle de plusieurs
transistors :
la rondelle de silicium qui est dope de type P ou N est enduite dune couche de
bioxyde de silicium (silice), puis de rsine photosensible;
la rondelle de silicium est soumise un rayonnement ultraviolet travers un
masque. La partie de rsine expose la lumire est ensuite limine grce un
solvant, ce qui permet de dcouvrir le dessin des circuits grav sur la silice. La silice
expose est son tour dtruite chimiquement, puis la couche restante de rsine qui
navait pas t expose est dtruite. Il reste donc sur la rondelle de silicium,
lempreinte des circuits base de silice;
une nouvelle couche de silice appele oxyde de grille est nouveau dpose sur la
rondelle, puis recouverte dune couche conductrice de polysilicium et dune
nouvelle couche de rsine. Un nouveau masque est appliqu, qui correspond la
cration de la grille du transistor. Le mtal et loxyde sont attaqus comme prc-
demment, ce qui dnude des zones de silicium de part et dautre de la grille cre;
la plaquette de silicium est maintenant soumise un processus de dopage en vue
de la cration du drain et de la source;
enfin, la rondelle est enduite dune couche mtallique visant mettre en contact
les diffrentes parties du transistor et les diffrents transistors entre eux. Un troi-
Dunod La photocopie non autorise est un dlit.

sime masque est appliqu, puis les parties mtalliques inutiles sont dtruites;
chaque circuit ou puce ainsi ralis est ensuite test puis encapsul dans un botier
rectangulaire en plastique ou en cramique, sur lequel des broches rparties de part
et dautre, permettent dassurer les connexions lectriques de la puce interne. Cette
encapsulation est connue sous le nom de botier DIL ou DIP (Dual Inline Package).
Les botiers PGA (Pin Grid Array) sont quant eux des botiers carrs disposant
de connexions rparties sur les quatre cts (figure 5.18).
Toutes les tapes de cette fabrication sont ralises dans des usines spciales
qualifies de salles blanches dont les particularits sont dune part dtre appauvries
en lumire dans le spectre des bleus et des violets afin de ne pas interfrer avec le
106 5 Les circuits logiques

bombardement ultraviolet ralis pour le transfert des masques, dautre part de ne


contenir que trente-cinq particules de poussires par mtres cubes dair alors que
lair usuel en contient prs de 500 millions. Les ouvriers procdant cette fabrica-
tion sont eux-mmes vtus de combinaisons, de bottes et de gants hermtiques alors
que lair quils exhalent est absorb par un dispositif particulier port la ceinture
qui protge les tranches de silicium de toute impuret susceptible dendommager les
circuits gravs.

Figure 5.18 Botier PGA.

Niveaux dintgration
La densit dintgration pour un circuit logique et sa famille dtermine le nombre de
portes ou de transistors par circuit ou par mm2. Ainsi, les familles suivantes peuvent
tre identifies :
SSI (Small Scale Integration) : ce sont des circuits faible intgration groupant de
1 10 portes par circuit;
MSI (Medium Scale Integration) : ce sont des circuits moyenne intgration grou-
pant de 10 100 portes par circuit;
LSI (Large Scale Integration) : ce sont des circuits haute intgration groupant de
100 100 000 portes par circuit;
VLSI (Very Large Scale Integration) : ce sont des circuits trs haute intgration
groupant plus 100 000 portes par circuit. ce niveau, se trouvent les circuits tels
que les mmoires et les microprocesseurs. titre dexemple, la puce du processeur
Intel Pentium intgre plus de trois millions de transistors, sur un botier compor-
tant 273 broches.

5.2 LE FUTUR
La densit des transistors prsents sur une puce actuelle est peu prs 1 500 fois
suprieures ce quelle tait au moment de leur invention, dans les annes 1970.
Cette densit, suivant la loi de Moore, augmente de 50 % tous les deux ans.
5.2 Le futur 107

Loi de Moore
La loi de Moore est une loi propose en 1965 par Gordon Moore, cofondateur
dIntel, et dcrivant le taux de croissance du nombre de transistors par unit
de surface, compte tenu des progrs technologiques. Cette loi prvoit un double-
ment du nombre de transistors sur une mme surface tous les deux ans.

Cette augmentation incessante de la densit des transistors lve lheure actuelle


un certain nombre de dfis technologiques :
la taille des transistors dont la largeur de traits se rapproche de plus en plus du
dixime de micron ne cesse de diminuer et tend de plus en plus vers celle de la
longueur donde de la lumire visible. Lutilisation de celle-ci ou des rayons ultra-
violets dans le processus de photolithographie devient problmatique pour la conser-
vation de la nettet des images traces. Un recours des rayons ultraviolets de
plus courte longueur dondes ou mme aux rayons X sera sans doute ncessaire;
le nombre de dfauts par centimtre carr de silicium qui est lheure actuelle
de 200 pour un million de puces devra tre rduit afin de tendre vers zro;
la chaleur dgage par une puce du fait de la densit de transistors prsents sur
celle-ci et de laugmentation de leur vitesse de commutation tend devenir trop
importante. La tension dalimentation des transistors a dj t ramene de 5 volts
3,3 volts sur le microprocesseur Intel Pentium, mais elle devra tre encore abaisse
pour tendre vers 1,8 volts.
Dunod La photocopie non autorise est un dlit.
Chapitre 6

Exercices corrigs 6

PRODUCTION DE PROGRAMMES
6.1 Compilation
Soit le langage dfini par les rgles de Backus-Naur suivantes :
<programme> :: = PROGRAM <identificateur> <corps de programme>
<corps de programme> :: = <suite de declarations> DEBUT <suite
dinstructions> FIN
<suite de declarations> :: = <declaration> | <declaration> <suite
de declarations>
<declaration> :: = INT <identificateur>; | BOOLEAN <identificateur>;
<suite dinstructions> :: = <instruction> | <instruction> <suite
dinstructions>
<instruction> :: = <affectation> | <conditionnelle> | <iteration>
<affectation> :: = <identificateur> = <terme>; | <identificateur> = <terme>
<operateur> <terme>; | <identificateur> = VRAI; |
<identificateur> = FAUX;
<conditionnelle> :: = SI <expression> ALORS <suite dinstructions> FSI
<iteration> :: = LOOP <expression> FAIRE <suite dinstructions> FAIT
<expression> :: = (<terme> <operexpr> <terme>) | (<identificateur> == VRAI) |
(<identificateur> == FAUX)
<operexpr> :: = == | <|> | ?
<terme> :: = <entier>| <identificateur>
<operateur> :: = + | | * | /
<identificateur> :: = <lettre> | <lettre> <chiffre>
6 Production de programmes 109

<entier> :: = <chiffre> | <entier> <chiffre>


<lettre> :: = A | B | C | D | E | X | Y | Z
<chiffre> :: = 0 | 1 | 2 | 3 | 4 | 9

Soit prsent le programme suivant :


PROGRAM Y3
INT A;
INT B;
BOOLEAN C;
DEBUT
A = 6;
B = A * 3;
C = VRAI;
LOOP (C = VRAI)
FAIRE
SI (A > B) ALORS C = FAUX FSI
B = B 1;
FAIT
FIN

1. Donnez la suite de codes obtenus lissue de lanalyse lexicale du programme


sachant que :
cas :
entier : codage_lexme = valeur de lentier;
symbole + : codage_lexme = 1;
symbole : codage_lexme = 2;
symbole * : codage_lexme = 3;
symbole / : codage_lexme = 4;
symbole = : codage_lexme = 5;
symbole; : codage_lexme = 6;
symbole PROGRAM : codage_lexme = 7;
symbole DEBUT : codage_lexme = 8;
symbole FIN : codage_lexme = 9;
symbole INT : codage_lexme = 10;
Dunod La photocopie non autorise est un dlit.

symbole SI : codage_lexme = 11;


symbole ALORS : codage_lexme = 12;
symbole FSI : codage_lexme = 13;
symbole VRAI : codage_lexme = 14;
symbole FAUX : codage_lexme = 15;
symbole LOOP : codage_lexme = 16;
symbole FAIRE : codage_lexme = 17;
symbole FAIT : codage_lexme = 18;
symbole ( : codage_lexme = 19;
symbole ) : codage_lexme = 20;
110 6 Exercices corrigs

symbole < : codage_lexme = 21;


symbole > : codage_lexme = 22;
symbole == : codage_lexme = 23;
symbole ? : codage_lexme = 24;
symbole BOOLEAN : codage_lexme = 25;
identificateur lettre seule : (position_lettre_alphabet + 25);
identificateur lettre chiffre : ((position_lettre_alphabet + 25)
+ 26 (chiffre + 1));
fin cas;
2. Peut-on construire larbre syntaxique de ce programme ? Pourquoi ?

6.2 dition des liens


On considre un ensemble de quatre modules objets participant la construction dun
mme programme excutable prog.exe. lissue de la compilation, les liens utilisa-
bles et les liens satisfaire suivants ont t rfrencs dans chacun des modules.
module module_1;
taille (module) = 1 024 Ko
LU <afficher, 128>
LU <imprimer, 260>
LU <enregistrer, 512>
fin module
module module_2;
taille (module) = 512 Ko
LAS <afficher, 1>
LAS <perimetre, 2>
LAS <surface, 3>
LU <rectangle, 64>
LU <carre, 128>
fin module
module module_3;
taille (module) = 64 Ko
LU <perimetre, 16>
LU <surface, 32>
fin module
module module_4;
taille (module) = 100 Ko
LAS <rectangle, 1>
LAS <carre, 2>
LAS <imprimer, 3>
LAS <enregistrer, 4>
fin module
6 Production de programmes 111

1. Construisez la carte dimplantation du programme excutable en supposant que


les modules sont mis dans lordre 2, 3, 4, 1.
2. Construisez la table des liens. Les modules sont pris en compte dans lordre de la
carte dimplantation. Ldition des liens est-elle correcte ?

6.3 Utilitaire Make


Soit le graphe de dpendance du programme excutable prog.exe donn sur la
figure 6.1.

prog.exe

mod1.o mod2.o mod3.o

proc.h mod1.c const.h mod2.c mod3.c variable.h

Figure 6.1 Graphe de dpendance du programme prog.exe.

1. Donnez la structure du Makefile correspondant.


2. Que se passe-t-il si le fichier const.h est modifi ?

6.4 Compilation
Soit le langage dfini par les rgles de Backus-Naur suivantes :
<programme> ::= PROGRAM <nom de programme> <corps de programme>
<corps de programme> ::= <suite de declarations><suite dinstructions> FIN
<suite de declarations> ::= <declaration> | <declaration> <suite de decla-
rations>
<declaration> ::= <identificateur> : REEL := <valeur relle>; |
<identificateur> : ENTIER := <valeur entire>;
<suite dinstructions> ::= <instruction> | <instruction> <suite dinstruc-
tions>
Dunod La photocopie non autorise est un dlit.

<instruction> ::= <addition> | <multiplication>


<identificateur> ::= <lettre>
<valeur entire> ::= <chiffre>
<valeur relle> ::= <chiffre>, <chiffre>
<nom de programme> ::= <lettre> <chiffre>
<lettre> ::= A |B | C | D | E....| X | Y | Z
<chiffre> ::= 0 |1 | 2 | 3 | 4...| 9

1. Une addition est de la forme A := B + 3; ou A := B + 3,2;


A et B sont des identificateurs, 3 est un entier et 3,2 est un rel.
112 6 Exercices corrigs

Une multiplication est de la forme suivante : A := B * C; A, B et C sont des iden-


tificateurs.
crivez la rgle BNF donnant la syntaxe dune addition et celle donnant la
syntaxe dune multiplication.
2. Soit prsent le programme suivant :
PROGRAM A3 /
A : REEL := 3,2;
B : ENTIER := 3,2;
A := A + 5,1;
B := B * 61,
FIN

Entourez les units lexicales reconnues. Signalez les ventuelles erreurs lexicales
rencontres ce niveau.
3. Pour chaque phrase du programme donne ci-dessous, donnez larbre syntaxique
correspondant. Signalez les ventuelles erreurs syntaxiques rencontres ce niveau.
Phrase 1 A : REEL := 3,2;
Phrase 2 B : ENTIER := 3,2;
Phrase 3 A := A + 5,1;
Phrase 4 B := B * 61,

REPRSENTATION DES INFORMATIONS


6.5 Conversions
Effectuez les conversions suivantes :
+ 1 432,4510 vers la base 2.
+ 1 432,4510 vers la base 16.
+ 1 432,4516 vers la base 10.
1110101001012 vers la base 10, puis vers la base 8.

6.6 Reprsentation des nombres signs


1. On considre une reprsentation des nombres signs sur 16 bits. Donnez la repr-
sentation interne de :
+ 1 03210 en valeur signe, en complment 2, puis en DCB.
72110 en valeur signe, en complment 2, puis en DCB.
2. On considre une reprsentation des nombres signs sur 16 bits. Donnez la valeur
dcimale des chanes binaires suivantes, en considrant successivement quil sagit
dune reprsentation en valeur signe, en complment 2, puis en DCB :
0101 0000 1100 11012
1010 0001 0011 00112
6 Langage machine 113

6.7 Reprsentation des nombres flottants


1. On considre une reprsentation des nombres flottants selon la norme IEEE 754
simple prcision. Quelle est la reprsentation interne des nombres suivants ?
Exprimez le rsultat final en base 16.
+ 1 432,4510
721,2510
2. On considre une reprsentation des nombres flottants selon la norme IEEE 754
simple prcision. Quelle est la valeur dcimale des reprsentations internes suivantes ?
C657000016
42EF910016

6.8 Synthse
Codez linformation 7810 selon les formats suivants :
valeur signe sur 8 bits;
complment 2 sur 8 bits;
IEEE 754 simple prcision.

LANGAGE MACHINE
Dans la srie dexercices qui suit, nous utilisons le langage machine dun processeur
virtuel que nous spcifions maintenant.
Les registres de lunit centrale sont des registres de 32 bits.
On distingue :
un compteur ordinal CO, qui contient ladresse de la prochaine instruction
excuter;
un registre instruction RI, qui contient linstruction couramment excute;
4 registres gnraux : de R0 R3;
1 registre spcialis pour ladressage : RB, le registre de base;
1 registre Pointeur de pile : RSP;
les registres RAD et RDO;
Dunod La photocopie non autorise est un dlit.

1 registre dtat, PSW, qui contient notamment les indicateurs suivants :


O : positionn 1 si overflow, 0 sinon;
Z : positionn 1 si rsultat opration nul, 0 sinon;
C : positionn 1 si carry, 0 sinon;
S : positionn 0 si rsultat opration positif, 1 sinon;
I : masquage des interruptions : positionn 1 si interruption masque, 0 sinon.
Lunit centrale contient galement une Unit Arithmtique et Logique.
La machine admet des instructions sur 32 bits, selon le format suivant :
un code opration cod sur 8 bits;
un mode dadressage m cod sur 4 bits;
114 6 Exercices corrigs

un champ reg sur 4 bits code un numro de registre (de 0000 1111);
un champ X sur 16 bits code une valeur immdiate, une adresse mmoire, un
dplacement ou un numro de registre.
La machine supporte les modes dadressage mmoire suivants :

Mode Signification Mnmonique Valeur binaire

Immdiat Oprande = valeur immdiate Im m = 0000

Direct Oprande = [adresse] D m = 0001

Indirect Oprande = [[adresse]] I m = 0010

Bas Oprande = [[RB] + dplacement] B m = 0011

Pour les valeurs de m comprises entre 0 et 3, le code opration travaille sur deux
oprandes : le premier est un registre dont le numro est cod par le champ reg; le
second est soit une valeur immdiate, soit une adresse dduite de X et m.
Les valeurs m = 0100 et m = 0101 sont utilises pour les oprations sur des
registres :
0100 (Rg1) : le code opration travaille sur un seul oprande registre reg;
0101 (Rg2) : le code opration travaille sur deux registres, lun cod dans le champ
reg, lautre dans le champ X.
La valeur reg allant de 0000 0011 code les numros de registres gnraux R0 R3.
Les autres valeurs sont rserves pour coder les autres registres du processeur.
Ainsi :
reg = 1110 dsigne le registre RB;
reg = 1111 dsigne la registre PSW.
Ces valeurs de registres sont galement utilises dans le champ X avec un mode
dadressage Rg2.
Le jeu dinstructions du processeur comporte les instructions suivantes :

Les instructions de transfert de donnes

Transfert dun mot mmoire vers un registre banalis

X est une adresse ou un dplacement


LOAD m reg X m = B, D, I, Im
ou une valeur immdiate.

Exemples
LOAD D R1 (000A)16 : chargement du registre R1 avec la case mmoire dadresse
(000A)16 adresse en mode direct.
LOAD Im R1 (000A)16 : chargement du registre R1 avec la valeur immdiate (000A)16.
6 Langage machine 115

Transfert dun registre vers un mot mmoire

STORE m reg X m = B, D, I X est une adresse ou un dplacement

Exemple
STORE D R1 (000A)16 : criture du contenu du registre R1 dans la case mmoire dadresse
(000A)16 adresse en mode direct.

Les instructions de traitement des donnes


Ces instructions regroupent les fonctions mathmatiques et les fonctions boolennes.
Dans ces instructions, le registre dtat PSW est modifi en fonction du rsultat de
lopration.

Fonctions arithmtiques

m = B, D, I, Rg2, Im
X est soit une valeur immdiate, Addition entre le contenu de reg
ADD m reg X soit une adresse mmoire, et loprande dduit de m et X,
soit un dplacement, soit un numro puis stockage du rsultat dans reg.
de registre.

m = B, D, I, Rg2, Im
X est soit une valeur immdiate, Multiplication entre le contenu de reg
MUL m reg X soit une adresse mmoire, et loprande dduit de m et X, puis
soit un dplacement, soit un numro stockage du rsultat dans reg.
de registre.

Complment 2 de reg puis stockage


NEG Rg1 reg
du rsultat dans reg.

Exemple
ADD Im R0 (000A)16 : addition de la valeur immdiate (000A)16 avec le contenu du
registre R0 et stockage du rsultat dans R0.

Fonctions boolennes
Dunod La photocopie non autorise est un dlit.

AND m reg X m = B, D, I, Rg2, Im ET logique (OU, OU exclusif) entre le


OR m reg X X est soit une valeur immdiate, soit contenu de reg et loprande dduit
XOR m reg X une adresse mmoire, soit un dpla- de m et X, puis stockage du rsultat
cement, soit un numro de registre. dans reg.

NOT Rg1 reg Complment 1 de reg puis stockage


du rsultat dans reg.

Exemple
AND Im R0 (000A)16 : ET logique entre la valeur immdiate (000A)16 et le contenu du
registre R0 et stockage du rsultat dans R0.
116 6 Exercices corrigs

Les instructions de rupture de squence


Ces instructions permettent deffectuer des sauts dans le code dun programme, vers
une instruction donne. Il existe deux types de sauts : les sauts inconditionnels qui
sont toujours raliss et les sauts conditionnels qui ne sont effectus que si une
condition est vraie au moment o linstruction est excute par le processeur.

Sauts inconditionnels

Cette instruction permet un branchement une adresse donne et ceci incondition-


nellement. Le saut est donc toujours effectu.

JMP X X est une adresse. Saut inconditionnel ladresse X.


Les champs reg et m sont
sans signification.

Exemple
JMP (12CF)16 : saut l'adresse (12CF)16.

Sauts conditionnels

Ces instructions permettent deffectuer un branchement une adresse donne si


une condition est ralise. Ces conditions sont relatives aux indicateurs du registre
dtat PSW.
Si la condition nest pas ralise, lexcution du code se poursuit en squence.

Saut si positif.
Saut ladresse X conditionn
X est une adresse.
JMPP X au positionnement 0 du bit S
Les champs reg et m sont
du registre PSW.
sans signification.

Saut si ngatif.
Saut ladresse X conditionn
X est une adresse.
JMPN X au positionnement 1 du bit S
Les champs reg et m sont
du registre PSW.
sans signification.

Saut si overflow.
Saut ladresse X conditionn
X est une adresse.
JMPO X au positionnement 1 du bit O
Les champs reg et m sont
du registre PSW.
sans signification.

Saut si carry.
Saut ladresse X conditionn
X est une adresse.
JMPC X au positionnement 1 du bit C
Les champs reg et m sont
du registre PSW.
sans signification.

Saut si zro.
Saut ladresse X conditionn
X est une adresse.
JMPZ X au positionnement 1 du bit Z
Les champs reg et m sont
du registre PSW.
sans signification.
6 Langage machine 117

Les instructions de manipulation de la pile


Ces instructions permettent denregistrer un lment dans la pile ou dter un
lment de la pile. La pile est une zone mmoire gre selon un ordre LIFO (Last In
First Out).

Enregistrer un lment dans la pile

Le contenu du registre reg est crit


PUSH Rg1 reg
dans le mot au sommet de la pile.

ter un lment de la pile

Le mot au sommet de la pile


POP Rg1 reg
est copi dans le registre reg.

6.9 Manipulation des modes dadressage


lissue de lexcution du code assembleur suivant et compte tenu de ltat initial
de la mmoire et des registres du processeur, la case mmoire dadresse 1000 a pour
contenu la valeur 100, a ou 1998 ?
La reprsentation des nombres signs utilise la convention du complment 2.

Adresse mmoire Contenu Registre Contenu

400 2000 RB 100

404 412

408 d

412 3000

416 305

Code assembleur :
LOAD D R0 400
Dunod La photocopie non autorise est un dlit.

LOAD Im R1 1002
ADD Rg2 R0 R1
NEG Rg1 R1
ADD I R1 404
STORE B R1 900

6.10 Programme assembleur


crivez un programme en langage dassemblage qui ralise le calcul suivant :
B = (A 5) + (6 + B).
A et B sont deux variables correspondant chacune un mot mmoire.
118 6 Exercices corrigs

6.11 Manipulation de la pile


La pile constitue une zone particulire de la mmoire centrale gre selon une poli-
tique LIFO (Last In, First Out). Cette structure de donnes est caractrise par :
une base qui constitue le fond de la pile;
un sommet dont ladresse est contenue dans un registre particulier du processeur,
le registre RSP (Register Stack Pointer).
Seul le sommet de la pile repr par le registre RSP est accessible en lecture ou en
criture par deux oprations spcifiques : PUSH et POP. Le registre RSP contient
ladresse du prochain mot o crire dans la pile.
Plus prcisment, lopration PUSH oprande crit loprande ladresse mmoire
contenue dans le registre RSP puis incrmente le contenu du registre RSP pour que
celui-ci contienne ladresse du prochain mot o lcriture se fera dans la pile. Lopra-
tion POP destination, o destination est un registre, dcrmente le registre RSP pour
que celui-ci contienne ladresse de la donne prsente au sommet de la pile, puis
retire cette donne de la pile pour la placer dans destination.
La politique LIFO applique ici signifie que la dernire donne enregistre dans la
pile est la premire en sortir.
Ainsi la figure 6.2 illustre le principe de ces deux oprations avec une pile dont la
base est constitue par le mot dadresse (0020)16. En reprenant le contexte mmoire
de lexercice prcdent et en considrant une pile dans ltat du dernier dessin de la
figure 6.2, reprsentez lvolution de la pile et du registre RSP au fur et mesure de
lexcution des oprations suivantes :
POP Rg1 R1
POP Rg1 R3
STORE D R3 100
LOAD Im R2 7
ADD D R2 100
PUSH Rg1 R2

003416 003416 003416


003016 RSP 003016 003016 RSP
002C16 002C16 002C16 RSP 002C16 002C16
810 002816 002816 002816 610 002816
510 002416 510 002416 510 002416
R1 R1 R1
2010 002016 2010 002016 810 2010 002016 810
R2 POP Rg1 R1 R2 PUSH Rg1 R2 R2
610 610 610

Figure 6.2 Pile, oprations PUSH et POP.


6 Langage machine 119

6.12 Programme assembleur


crivez un programme assembleur qui additionne lentier contenu dans une case de
mmoire centrale dadresse A avec les trois premiers nombres retirs de la pile.
Si lopration daddition produit un carry, alors le calcul est arrt et le rsultat est
stock dans la pile.
Si lopration daddition produit un overflow, alors le calcul est arrt, et le rsultat
de lopration est stock ladresse en mmoire centrale (RB) + 100.
Si lopration daddition ne provoque ni carry, ni overflow le rsultat de lopra-
tion est stock ladresse A.
Dunod La photocopie non autorise est un dlit.
SOLUTIONS

6.1 Compilation
1. La suite des codes gnrs lors de lanalyse lexicale est :
7 154 10 26 6 10 27 6 25 28 6 8 26 5 6 6 27 5 26
33 6 28 5 14 6 16 19 28 5 14 20 17 11 19 26 22 27
20 12 28 5 15 13 27 5 27 2 1 6 18 9
2. La solution est donne par la figure 6.3. Larbre syntaxique ne peut pas tre cons-
truit jusquau bout car il existe une erreur de syntaxe au niveau de lexpression de
la boucle LOOP. Un signe = a t mis la place dun signe = =.

<programme>

PROGRAM <identificateur>
Y3 <corps de programme>

<suite de dclarations>
DEBUT <suite dinstructions >
<declaration>
<instruction>
; <suite de dclarations>
INT <affectation> <suite dinstructions>
<identificateur> ; <suite dinstructions>
<identificateur> <terme>
A A = <instruction> <suite dinstructions>
<suite de dclarations> <entier>
<declaration> <instruction>
<declaration> 6 <affectation>
; <iteration>
INT ; <Instruction>
LOOP
<identificateur> BOOLEAN
<identificateur> <identificateur>= VRAI ; <expression>
B <affectation>
C C
; (
<identificateur>
<terme> <terme>
B = <operateur> <identificateur>
<identificateur> <entier> C <operexpr>
A *
3 ERREUR

Figure 6.3 Arbre syntaxique.


6 Solutions 121

6.2 dition des liens


1. La carte dimplantation des modules est donne par la figure 6.4 :

Module 2 Module 3 Module 4 Module 1


512 64 100 1024

0 512 576 676 1700

Figure 6.4 Carte dimplantation.

2. La table des symboles volue comme le dcrivent les 4 tableaux qui suivent
(tableaux 6.2 6.5).

Tableau 6.2 PRISE EN COMPTE DU MODULE 2.

Nom de lobjet Adresse dans la carte dimplantation Commentaire

afficher indfinie LAS


perimetre indfinie LAS
surface indfinie LAS
rectangle 64 LU
carre 128 LU

Tableau 6.3 PRISE EN COMPTE DU MODULE 3.

Nom de lobjet Adresse dans la carte dimplantation Commentaire

afficher indfinie LAS


perimetre 16 + 512 LAS/LU
surface 32 + 512 LAS/LU
rectangle 64 LU
carre 128 LU
Dunod La photocopie non autorise est un dlit.

Tableau 6.4 PRISE EN COMPTE DU MODULE 4.

Nom de lobjet Adresse dans la carte dimplantation Commentaire

afficher indfinie LAS


perimetre 16 + 512 LAS/LU
surface 32 + 512 LAS/LU
rectangle 64 LU
carre 128 LU
imprimer indfinie LAS
enregistrer indfinie LAS
122 6 Exercices corrigs

Tableau 6.5 PRISE EN COMPTE DU MODULE 1.

Nom de lobjet Adresse dans la carte dimplantation Commentaire


afficher 128 + 676 LAS/LU
perimetre 16 + 512 LAS/LU
surface 32 + 512 LAS/LU
rectangle 64 LU
carre 128 LU
imprimer 260 + 676 LAS/LU
enregistrer 512 + 676 LAS/LU

lissue de la prise en compte de tous les modules, aucune entre de table des
liens ne demeure indfinie. Ldition des liens est donc correctement ralise.

6.3 Utilitaire Make


1. Le fichier Makefile a la structure suivante :
prog.exe : mod1.o mod2.o mod3.o
ld mod1.o mod2.o mod3.o o prog.exe
mod1.o : proc.h mod1.c const.h
cc c mod1.c
mod2.o : mod2.c mod3.c const.h
cc c mod2.c mod3.c
mod3.o : mod3.c variable.h
cc c mod3.c

2. La modification du fichier const.h entrane les actions suivantes :


Reconstruction du fichier mod2.o et du fichier mod1.o par compilation;
cc c mod2.c mod3.c
cc c mod1.c

Reconstruction du fichier prog.exe par dition des liens.


ld mod1.o mod2.o mod3.o o prog.exe

6.4 Compilation
1. <addition> ::= <identificateur> := <identificateur> +
<valeur entire>; | <identificateur> :=
<identificateur> + <valeur relle>;
<multiplication> ::= <identificateur> := <identificateur> *
<identificateur>;

2. PROGRAM A3 /
A : REEL := 3,2 ;
6 Solutions 123

B : ENTIER := 3,2 ;
A := A + 5,1 ;
B := B * 6 1 ,
FIN

Une erreur lexicale est leve la lecture du symbole / qui ne fait pas partie des
symboles admis dans le langage.
3. La figure 6.5 donne les arbres syntaxiques correspondant aux quatre phrases.

PHRASE 2 B : ENTIER := 3,2 ;


PHRASE 1 A : REEL := 3,2 ;

<Dclaration>
<Dclaration>
;
<valeur entire>
<valeur relle> <Identificateur> : ENTIER :=
<Identificateur> : REEL := 3,2
3,2 B
A erreur, une valeur
entire est attendue
PHRASE 3 A := A + 5,1; PHRASE 4 B := B + 61,

<Instruction> <Instruction>

<addition> <multiplication>
;

<valeur relle> <identificateur>


<Identificateur> := <Identificateur> + 5.1 <Identificateur> := <Identificateur> * 6
A A B B
ERREUR, 6 n'est pas
un identificateur

Figure 6.5 Arbre syntaxique.

6.5 Conversions
+ 1 432,4510 vers la base 2 :
+ 1 43210 = 1 024 + 256 + 128 + 16 + 8 = 210 + 28 + 27 + 24 + 23 = 101100110002
0,45 2 = 0,90; 0,90 2 = 1,8; 0,8 2 = 1,6; 0,6 2 = 1,2; 0,2 2 = 0,4; 0,4 2 = 0,8
Dunod La photocopie non autorise est un dlit.

do 0,4510 = 0111001100112
do + 1 432,4510 = 10110011000, 0111001100112
+ 1 432,4510 vers la base 16 :
+ 1432,4510 = 101 1001 1000, 0111 0011 00112 = 598,73316
+ 1 432,4516 vers la base 10 :
1 163 + 4 162 + 3 161 + 2 160 + 4 16 1 + 5 16 2 = + 5 170,269510
1110101001012 vers la base 10 :
211 + 210 + 29 + 27 + 25 + 22 + 20 = 2 048 + 1 024 + 512 + 128 + 32 + 4 + 1 = +
3 74910
111 010 100 1012 vers la base 8 : 72458
124 6 Exercices corrigs

6.6 Reprsentation des nombres signs


1. Reprsentation interne :
+ 1 03210 = 1 024 + 8 = 00000100000010002 en valeur signe et en compl-
ment 2.
+ 1 03210 = 1011 0001 0000 0011 00102 en DCB.
+ 72110 = 512 + 128 + 64 + 16 + 1 = 00000010110100012
do 72110 = 10000010110100012 en valeur signe;
do 72110 = 11111101001011112 en complment 2.
72110 = 1101 0111 0010 00012 en codage DCB.
2. Valeur dcimale :
0101 0000 1100 11012 = + 20 68510 en valeur signe et en complment 2.
0101 0000 1100 11012 ne peut pas tre un nombre cod selon le format DCB
car les deux derniers quartets codent des valeurs suprieures 9.
1010 0001 0011 00112 = 8 49910 en valeur signe.
1010 0001 0011 00112 = 0101 1110 1100 11012 = 24 26910 en complment 2.
1010 0001 0011 00112 ne peut pas tre un nombre cod selon le format DCB
car le quartet de poids fort correspond un code suprieur 9.

6.7 Reprsentation des nombres flottants


1. Reprsentation interne :
+ 1 432,4510 = 10110011000, 01110011002 = 1,011001100001110011002 210
Lexposant excentr est gal 10 + 127 = 137 = 100010012 do la reprsentation
interne simple prcision :
0 10001001 011001100001110011000002 = 44B30E6016
721,2510 = 1011010001,012 = 1,011010001012 29
Lexposant excentr est gal 9 + 127 = 136 = 100010002 do la reprsentation
interne simple prcision :
1 10001000 011010001010000000000002 = C434500016
2. Valeur dcimale :
C657000016 = 1 10001100 101011100000000000000002
Le signe de la mantisse est ngatif. Lexposant est gal 140 127 = 13
La mantisse est : 1,101011100000000000000002 do le nombre reprsent est :
1,10101112 213 = 14 08010
42EF910016 = 0 10000101 110111110010001000000002
Le signe de la mantisse est positif. Lexposant est gal 133 127 = 6.
La mantisse est 1, 110111110010001000000002 do le nombre reprsent est :
1, 1101111100100012 26 = + 119,78320312510.

6.8 Synthse
Valeur signe sur 8 bits : 11001110
Complment 2 sur 8 bits : 10110010
6 Solutions 125

IEEE 754 simple prcision : 1 10000101 001110000000000000000000 soit


(C29C0000)16

6.9 Manipulation des modes dadressage

R0 est charg avec la valeur contenue dans le mot mmoire dadresse 400
LOAD D R0 400
soit 2000

LOAD Im R1 1002 R1 est charg avec la valeur immdiate 1002

ADD Rg2 R0 R1 R0 R0 + R1 = 3002

R1 1002 (le complment 2 reprsente lquivalent ngatif du nom-


NEG Rg1 R1
bre)

R1 R1 + ((404)) = 1002 + 3000 = 1998. Le mot mmoire dadresse 404


ADD I R1 404 contient ladresse de loprande. Loprande est donc le contenu du mot
dadresse 412.

(1000) 1998. Le contenu du registre R1 est crit ladresse obtenue


STORE B R1 900
selon un mode bas (RB) + 900, soit 100 + 900 = 1000

6.10 Programme assembleur


LOAD D R1 A
LOAD D R2 B
ADD Im R2 6
MUL Im R1 5
ADD Rg2 R1 R2
STORE D R1 B

6.11 Manipulation de la pile


La solution est donne par la figure 6.6.

6.12 Programme assembleur


LOAD D R1 A -- R1 est charg avec le contenu du mot dadresse A.
Dunod La photocopie non autorise est un dlit.

LOAD IM R2 3 - R2 est charg avec la valeur immdiate 3.


Loop : POP Rg1 R3 - Le sommet de pile est plac dans R3.
ADD Rg2 R1 R3 -- R1 = R1 + R3
JMPC Carry - si laddition prcdente produit un carry aller
linstruction dsigne par ltiquette Carry.
JMPO Overflow -- si laddition prcdente produit un overflow aller
linstruction dsigne par ltiquette Overflow.
ADD Im R2 1 - R2 = R2 1
JMPZ Finok -- si R2 est gal 0, sortie de boucle. Les trois premiers
lments de la pile ont t pris en compte.
JMP Loop - sinon aller linstruction appele Loop et continuer.
126 6 Exercices corrigs

003416 003416 003416

003016 003016 003016


RSP
002C16 002C16 002C16 002C16
RSP
610 002816 002816 002816 002816 RSP
002416 002416
510 002416 510 002416
R1 R3
2010 002016 2010 002016 610 2010 002016
510

1. POP Rg1 R1 2. POP Rg1 R3

510 010016

R2 R2
710 1210
MC
3. STORE D R3 (100)16 4. LOAD Im R2 (7)10 5. ADD D R2 (100)16

003416

003016

002C16
RSP
002816 002816
1210 002416
R1 R3
2010 002016
610 510

6. PUSH Rg1 R2 R2
1210

Figure 6.6 Solution de lexercice 6.11.

Carry : PUSH Rg1 R1 - il y a carry. R1 qui contient la somme en cours


est plac dans la pile.
JMP Fin
Overflow : STORE B R1 100 - il y a overflow. R1 qui contient la somme
en cours est crit ladresse base (RB) + 100.
JMP fin
Finok : STORE D R1 A -- il y a ni carry, ni overflow. R1 qui contient la somme
des trois premiers lments de la pile est crit ladresse A.
Fin : STOP -- arrter le programme.
PARTIE 2

STRUCTURE
DE LORDINATEUR

Cette deuxime partie sintresse au fonctionnement et la structure dun ordinateur.


Elle prsente les caractristiques de chacune des trois fonctions principales dun
ordinateur savoir :
la fonction dexcution qui permet lexcution par un microprocesseur dun
programme crit en langage machine;
la fonction de mmorisation qui recouvre dune part la gestion de la mmoire
centrale et dautre part le mcanisme de hirarchie de mmoires;
la fonction de communication qui permet au processeur de dialoguer avec lext-
rieur via des priphriques tels que le clavier, limprimante, lcran, la souris, etc.
Ainsi le chapitre 7 est consacr la fonction dexcution et explicite la manire
dont le microprocesseur excute une instruction machine et plus gnralement un
programme machine. Le chapitre 8 sintresse aux mmoires caches ainsi qu la
mmoire virtuelle et il dfinit galement les diffrentes technologies de mmoires
existantes. Le chapitre 9 dtaille la fonction de communication. Le chapitre 10 propose
un ensemble dexercices corrigs.
Mots-cls : programme machine, instruction machine, microprocesseur, mmoire
RAM et ROM, mmoire cache, unit dchange, bus de communication.
Chapitre 7

La fonction dexcution 7

Les machines que nous tudions sont des machines programme enregistr ce qui
signifie que pour tre excut le programme machine (suite dinstructions machines)
doit tre plac (charg) en mmoire principale (mmoire centrale, mmoire RAM).
Dans cette section nous nous proposons dexaminer comment est excut un
programme machine. Dans un premier temps, nous dcrivons les caractristiques
gnrales du microprocesseur et du bus lui permettant de communiquer avec la
mmoire centrale. Nous tudions ensuite le principe de lexcution dune instruction
par le microprocesseur, ainsi que les notions lies aux microcommandes et aux
squenceurs. Nous terminons en introduisant le concept trs important des interrup-
tions, puis par un aperu des mthodes permettant une amlioration des perfor-
mances des microprocesseurs.

7.1 INTRODUCTION
Dun point de vue macroscopique , un programme machine sexcute instruction
aprs instruction selon lalgorithme suivant :
dbut (excution dune instruction)
lecture de linstruction;
mise jour du compteur ordinal;
dcodage de linstruction;
lecture ventuelle des oprandes;
excution;
rangement des rsultats;
fin (excution de linstruction).
130 7 La fonction dexcution

Le langage machine dfinit les instructions machines excutables par un micro-


processeur et caractrise compltement une machine dans le sens o il permet de
dcrire un problme comme une suite dinstructions excutables par le matriel
(hardware). Le langage machine est donc caractristique dun matriel spcifique et
lexpression dun problme dans un langage machine nest valide que pour un mat-
riel (une machine spcifique : un programme machine nest excutable que sur une
machine spcifique reconnaissant ce langage). Le matriel qui excute les instruc-
tions machine est le microprocesseur. Il existe donc autant de langages machines
quil y a de type de microprocesseurs. Un programme qui doit tre excut par un
microprocesseur Intel devra tre crit dans le langage machine de ce microprocesseur.
Il ne sera excutable que par lui et donc ne sera pas excut par un microprocesseur
dun autre constructeur (par exemple Motorola ou PowerPC).
Bien que tous les langages machines soient diffrents, les instructions machines
rpondent la mme structure :
un champ code opration. Il dfinit la nature de lopration excuter;
un champ oprande qui rfrence le ou les oprandes sur lesquels lopration doit
seffectuer. Ce champ peut tre considr comme tant compos de deux parties,
une partie mode dadressage qui dfinit la manire dont on va accder loprande
et une information complmentaire, dont le sens est dfini en fonction du mode
dadressage. Dans le cas dun adressage dit immdiat , linformation compl-
mentaire reprsente la valeur de loprande. Dans le cas dun adressage dit direct ,
linformation complmentaire reprsente ladresse mmoire de loprande.
Il existe plusieurs types darchitectures de microprocesseurs et chacun de ces
types correspond un langage machine de nature diffrente. On trouve ainsi :
les langages de type registre/mmoire : les instructions arithmtiques ont un
oprande situ en mmoire centrale, lautre oprande est dans un registre de lunit
centrale (microprocesseur), enfin le rsultat est plac dans un registre de lunit
centrale. Ce sont des instructions 1,5 oprandes, le registre intervenant pour
0,5 oprande. Ce type dinstructions est celui le plus couramment rencontr dans
les machines CISC (Complex instruction set computer). Dans un tel contexte
rsoudre lquation Z = X + Y qui signifie additionner X et Y puis placer le
rsultat dans Z, demande 3 instructions machines :
load D, R, @X (placer le contenu de ladresse
mmoire X dans le registre R)
add D, R, @Y (additionner le contenu de ladresse
mmoire Y au contenu du registre R et
placer le rsultat dans le registre R)
store D, R, @Z (placer le contenu du registre R
ladresse mmoire Z)
les langages mmoire/mmoire : linstruction porte sur des oprandes placs en
mmoire centrale, le rsultat tant lui aussi plac en mmoire. Ce type dinstruc-
tions se trouve dans les machines CISC. Dans un tel contexte lquation Z = X + Y
donne lieu une seule instruction.
7.1 Introduction 131

add D, @Z, @X, @Y (prendre le contenu de ladresse Y,


lui ajouter le contenu de ladresse X,
placer le rsultat ladresse Z).

les langages registre/registre : une instruction porte sur des oprandes pralable-
ment placs dans des registres de lunit centrale, le rsultat tant lui aussi plac
dans un registre. Ce type dinstruction se trouve surtout dans les machines RISC
(Reduced instruction set computer). Dans ce contexte lquation de notre exemple
donne lieu la squence dinstructions machine donne suivante :
load D, R1, @X (placer le contenu de ladresse X
dans le registre R1)
load D, R2, @Y (placer le contenu de ladresse Y
dans le registre R2)
add D, R3, R2, R1 (additionner le contenu de R1 au contenu de R2
puis placer le rsultat dans R3)
store D, R3, @Z (placer le contenu du registre R3 ladresse Z)
Dans la section comparant les architectures CISC et RISC, nous fournirons des
prcisions sur les raisons qui prsident lexistence de ces diffrents types de langages
et donc de microprocesseurs. Ainsi, dans les processeurs CISC (Intel par exemple)
les langages sont plutt orients registre/mmoire alors que dans les processeurs
RISC (PowerPC par exemple) les langages sont orients registre/registre.
Lexcution dune instruction implique :
le microprocesseur (unit centrale). Il est organis autour des registres, de lunit
arithmtique et logique (UAL), de lunit de commande et dun ou plusieurs bus
internes permettant la communication entre ces diffrents modules. Le nombre et
lorganisation du (des) bus de lunit centrale sont variables et les constructeurs
ont une grande libert de conception;
le bus de communication mmoire/unit centrale. Il supporte les changes de donnes
et de commandes entre lunit centrale et la mmoire centrale. Dans ce domaine
les constructeurs disposent de peu de libert quant leurs choix architecturaux car
ils doivent prendre en compte une trs grande varit des matriels (prise en
compte de nombreux contrleurs et priphriques);
Dunod La photocopie non autorise est un dlit.

la mmoire centrale. Elle contient les instructions et les donnes. Pour quune
instruction soit excutable par le microprocesseur, il faut (comme les donnes
manipules par linstruction) que celle-ci soit prsente en mmoire centrale.
Excuter une instruction quivaut permettre des interactions efficaces entre ces
trois composants. Pour examiner ces interactions nous adoptons tout dabord un
point de vue externe et descriptif permettant de prsenter les diffrents modules,
leurs caractristiques et fonctionnalits gnrales. Ensuite nous regardons dun point
de vue interne lexcution des instructions machine. Pour cela, afin de mettre en
vidence les principes fins de fonctionnement, nous dfinissons une machine arbi-
traire qui respecte les caractristiques des machines de Von Neumann.
132 7 La fonction dexcution

7.2 ASPECTS EXTERNES


Nous prsentons ici les caractristiques gnrales des microprocesseurs et des bus de
communication entre mmoire et microprocesseur. Les aspects relatifs la mmoire
sont abords dans le chapitre 8, concernant la fonction de mmorisation.

7.2.1 Le microprocesseur
Le microprocesseur communique avec les autres modules de la machine par le biais
de signaux lectriques. Il est plac dans un botier qui dispose de plusieurs broches
pour le transport des signaux (figure 7.1).
Bien que chaque microprocesseur possde un jeu spcifique de signaux, on peut,
sans tre cependant exhaustif, classer ceux-ci en grandes catgories qui se retrouvent
sur tout type de microprocesseur :
alimentation lectrique;
horloge;
bus dadresses (A0-A15), de donnes (D0-D7), de commandes (READ, WRITE);
interruptions (INTR, INTA, NMI);
slection et synchronisation mmoire ou priphriques (READY, mmoire, pri-
phrique, PRT);
gestion du bus de communication (demande de bus, ACK bus).
Les signaux sont soit des signaux dentres, soit des signaux de sorties, ou encore
des signaux dentres-sorties. Les flches sur la figure 7.1 indiquent le sens des
diffrents signaux.

Alimentation Vcc D0 D
et masse GND D1 O
RESET D2 N
D3 N
A0 M D4 E
I D5 E
A1 C S
A2 D6
R
A A3 O D7
D A4 P Read
R A5 R Write
E O INTR
S A6 C
S A7 INTA
E
E A8 S NMI
S A9 S READY
A10 E Mmoire
A11 U Priphrique
R PRET
A12
A13 Demande Bus
A14 Ack. Bus
A15 Entre horloge

Figure 7.1 Le microprocesseur.


7.2 Aspects externes 133

Les signaux dadresses sont des signaux de sorties pour le microprocesseur et des
signaux dentres pour les botiers mmoire. Les signaux de donnes sont bidirec-
tionnels, ils transportent les informations de la mmoire vers le microprocesseur ou
au contraire du microprocesseur vers la mmoire. Les signaux de commande sont
des signaux de sorties pour piloter les botiers mmoire. Les interruptions sont des
signaux dentres provenant en gnral des priphriques. Ils permettent dinter-
rompre le fonctionnement du microprocesseur pour prendre en charge linterruption.
Il existe dautres types dinterruptions que celles produites par les priphriques, par
exemple des interruptions logicielles, permettant de prendre en compte des dysfonc-
tionnements de lordinateur (une division par zro, un dpassement de capacit dans
une opration arithmtique). Les signaux concernant le bus permettent, en parti-
culier, au processeur de synchroniser le partage du bus entre les diffrents modules
matriels qui peuvent en avoir besoin simultanment.
Lhorloge est un signal trs important, caractris par sa frquence mesure en
mgahertz (1 MHz = 106 hertz), qui rythme le fonctionnement du microprocesseur
et dfinit ainsi le cycle du microprocesseur. En effet, le temps de cycle du microproces-
seur sexprime comme linverse de la frquence de lhorloge et est donn en nano-
seconde (ns). Ainsi pour une frquence dhorloge gale 1 gigahertz, le temps de
cycle processeur quivaut 1/1 GHz = 1/103 106 = 10 9 seconde = 1 nanoseconde,
sachant que 1 GHz est gal 103 MHz.

> 100
MIPS

27
Dunod La photocopie non autorise est un dlit.

0,75 1,5 5
0,06

1971 1979 1982 1986 1989 1993

Figure 7.2 volution des performances des microprocesseurs.

La frquence dhorloge des processeurs est en pleine volution (figure 7.2) et de


nos jours, on trouve frquemment des processeurs munis dune horloge dont la
frquence est gale 1 gigahertz. Un tel processeur a donc un temps de cycle gal
1 nanoseconde.
134 7 La fonction dexcution

7.2.2 Les bus


Comme le schma gnral de la figure 7.3 le montre notre ordinateur est dune part
organis autour dun bus interne au microprocesseur, dautre part autour dun bus
externe au microprocesseur servant pour la communication entre la mmoire et le
microprocesseur. Le bus interne est unique dans notre cas.

Y1
Z Opration
Unit Arithmtique
et Logique Y2
PSW Bus interne

Donnes
Registres
Commandes

Squenceur
Unit de Commande
Dcodeur RI
CO
RAD
RDO

Commandes Lecture/criture
Bus Processeur / Mmoire Adresses
Donnes

Figure 7.3 Schma gnral du processeur.

La conception et lorganisation du microprocesseur, en particulier du, ou des bus


internes, laisse une grande libert au concepteur. Par contre le bus externe est beaucoup
plus contraint du fait de la grande varit des modules matriels interconnecter.
Ce type de bus sappuie sur des caractristiques importantes telles que : la largeur
du bus, le cadencement du bus, larbitrage pour laccs au bus, les modes de fonction-
nement du bus.
Dans cette section nous tudions les modalits dexcution des instructions machine.
Ces modalits concernent le fonctionnement et lorganisation du bus interne et les
aspects largeur et cadencement du bus externe. Les aspects arbitrage et modes de
fonctionnement seront abords respectivement, dans le chapitre 9 traitant des entres-
sorties et dans le chapitre 8 traitant de la gestion des caches mmoire.

Largeur du bus
La largeur du bus dfinit le nombre de lignes du bus cest--dire le nombre de bits
que le bus peut vhiculer en parallle. Cette largeur de bus constitue une donne
technique trs importante et plus particulirement la largeur du bus dadresses. En
effet, plus le bus dadresses est large plus lespace dadressage du processeur est
7.2 Aspects externes 135

grand. Ainsi n lignes dadresses permettent dadresser 2n mots mmoires. Augmenter


la largeur du bus dadresses quivaut augmenter le nombre de broches du botier et
donc la surface de microprocesseur.
La taille du bus de donnes crot galement afin de satisfaire laugmentation des
performances des microprocesseurs. En effet, si la mmoire dispose de mots de 32 bits
et que le bus de donnes a une largeur de 8 bits, il faut 4 accs mmoires pour que le
microprocesseur dispose dun mot mmoire.
Laugmentation de la largeur du bus de donnes nest pas le seul moyen daugmenter
les performances du bus, car on peut galement augmenter la frquence dhorloge
du bus.
Les microprocesseurs voluent trs vite et il est difficile de faire varier la largeur
des bus pour suivre les processeurs. Une manire doprer consiste dcider dune
largeur de bus (par exemple 32 bits) et dutiliser ce bus, selon le cas, comme un bus de
donnes ou un bus dadresses : cest le multiplexage temporel du bus. Cette technique
diminue le nombre de broches donc le cot mais aussi les performances.

Cadencement du bus
On trouve deux types de bus : les bus synchrones et les bus asynchrones.

Les bus synchrones


Ils disposent dune horloge propre fonctionnant une frquence qui caractrise le
cycle du bus. La frquence dhorloge des bus varie entre 8 MHz 500 MHz (pour les
plus rcents), ce qui correspond un temps de cycle allant de 125 ns 2 ns.
Avec ce type de bus, lopration de lecture dun mot mmoire par le microproces-
seur se droule de la manire suivante :
le microprocesseur dpose ladresse du mot sur le bus dadresses;

Microprocesseur
Dunod La photocopie non autorise est un dlit.

Bus

Mmoire

ns
0 15 20 30

Figure 7.4 Bus synchrone.


136 7 La fonction dexcution

le microprocesseur dpose un signal de lecture sur le bus de commandes;


le microprocesseur attend que la mmoire dpose un signal de donne prte;
le microprocesseur rcupre la donne sur le bus de donnes.
Prenons lexemple de la figure 7.4 avec les donnes suivantes :
la frquence du processeur est gale 1 GHz soit un temps de cycle gal 1 ns;
la frquence du bus est gale 66 MHz soit un temps de cycle gal 15 ns;
le temps daccs la mmoire centrale (RAM) est gal 20 ns.
Dans cet exemple le microprocesseur lance une commande de lecture au top
dhorloge 0. On suppose que cette demande est instantanment dlivre au bus et
la mmoire de manire aligner les horloges. La mmoire ne rpond que 20 ns plus
tard; il faut donc 2 cycles de bus pour que le microprocesseur puisse obtenir la
donne sur le bus de donnes.
Compte tenu des diffrences entre les cycles de mmoire, bus et microprocesseur
on considre que ce dernier est toujours mme de se synchroniser avec le bus. Avec
ce type de bus le processeur sollicite le bus et la mmoire qui rpondent leurs
rythmes sans concertation ni synchronisation relles. Le nombre de cycles du bus est
toujours un nombre entier ce qui nest pas forcment optimum. Ce type de bus ne
facilite pas les volutions en fonction des modifications technologiques. Une amliora-
tion du cycle de la mmoire (diminution du temps daccs) ne se traduira pas forc-
ment par une amlioration des changes puisquelle nentranera pas ncessairement
la diminution du nombre de cycle du bus. Pour tre synchrone avec la mmoire, le
bus est gnralement oblig dajouter des cycles dattente (Wait state).

Les bus asynchrones


Ce type de bus ne sappuie pas sur une horloge associe ce bus. Le fonctionnement
du bus utilise des signaux permettant aux diffrents modules de se coordonner lors dun
change et de se mettre ainsi daccord pour dire que lchange a eu lieu. Lenchane-
ment des oprations nest pas li un signal dhorloge mais un enchanement de
signaux propres lchange. Ce type de bus est bien suprieur mais beaucoup plus
difficile construire.
En gnral les bus utiliss sont de type synchrone cause de leur facilit de cons-
truction et donc de leur cot moindre. Pour obtenir un fonctionnement correct il faut
choisir avec soin les modules afin que leurs caractristiques soient compatibles.

7.3 ASPECTS INTERNES


Dans le chapitre 1 concernant la structure gnrale et le fonctionnement dun ordina-
teur, nous avons vu que le rle du microprocesseur consiste excuter le programme
machine plac dans la mmoire principale. Cette excution seffectue instruction
aprs instruction de la premire jusqu linstruction STOP, dernire instruction du
programme. Ce squencement de lexcution des instructions constitue ce que lon
7.3 Aspects internes 137

appelle le flux dexcution du programme machine. Ce flux dexcution du programme


machine peut tre dcrit par lalgorithme suivant :
dbut
charger la premire instruction (FETCH)
tant que ce nest pas STOP
faire
modifier le compteur ordinal (incrmentation);
dcoder linstruction;
charger les donnes ventuelles dans les registres;
excuter les micro-instructions;
charger linstruction pointe par le compteur ordinal :
cest linstruction suivante (FETCH);
finfaire
fin
Le programme machine est plac dans la mmoire centrale par le chargeur qui la
fin du chargement initialise le compteur ordinal CO avec ladresse de la premire
instruction du programme. Le programme dmarre donc par le chargement dans le
registre instruction RI de cette premire instruction. Ensuite le microprocesseur va
raliser le flux dexcution du programme machine. Lalgorithme ci-dessus rend
compte de ce flux en utilisant un bloc tant que qui exprime que tant que le code
opration de linstruction actuellement dans le registre instruction nest pas STOP,
les instructions du bloc faire/finfaire sont excutes. Quand le code opration est
STOP le bloc faire/finfaire est saut et linstruction fin excute : le programme
est alors termin.
Sans trop entrer dans les dtails, nous avons indiqu au chapitre 1 que lunit de
commande est charge de lexcution des diffrentes phases de ralisation des instruc-
tions. Le squenceur, rythm par lhorloge, excute une squence de microcommandes
qui rend compte de linstruction machine traite.
Nous allons maintenant examiner plus en dtail comment, pour un processeur dter-
min, sexcute une instruction machine sur le matriel (hardware) de cette machine.

7.3.1 Excution dune instruction machine


Pour tudier comment est excute une instruction nous dfinissons une machine
Dunod La photocopie non autorise est un dlit.

arbitraire qui respecte les fonctionnalits principales dune machine relle (machine
de Von Neumann) mais qui ne correspond aucune machine du march. Elle sert de
guide pour illustrer les fonctions importantes dun ordinateur. La figure 7.5 dfinit
lorganisation matrielle et le programme machine que nous voulons excuter.
Ce processeur est trs proche de celui dcrit dans le chapitre 1 de cette partie de
louvrage, Structure gnrale et fonctionnement. Il sagit l encore dun micropro-
cesseur bus interne unique (certains microprocesseurs disposent de plusieurs bus
internes afin damliorer les performances en paralllisant des oprations). Lunit
arithmtique et logique est plus simple : un seul registre dentre (Y) reoit une donne,
la seconde entre de lUAL tant directement relie au bus interne de donnes.
138 7 La fonction dexcution

Y
Z
10 Load D, R, B

PSW 11 Add D, R, A

12 Store D, R, C
R 3
13

Horloge A 14 5
CO
11
Squenceur B 15 3

Dcodeur RI 16

C 17
RDO

RAD

0 1 2 30 31 61 62 63
Tops horloge microprocesseur

Figure 7.5 Machine et programme de lexemple.

Lensemble des registres est (pour des raisons de simplicit graphique) rduit un
seul registre (R).
Notre machine a les caractristiques suivantes :
la frquence du processeur est gale 1 GHz, soit un cycle gal 1 ns;
la frquence du bus est gale 66 MHz, soit un cycle gal 15 ns;
le temps daccs la mmoire centrale est gal 20 ns.
Le bus de communication est de type synchrone. Ainsi lorsque le microprocesseur
fait une demande de lecture mmoire il obtiendra sa donne 30 nanosecondes plus
tard (aprs deux cycles du bus).
Les instructions de notre machine sont de type registre/mmoire : lun des oprandes
est en mmoire, lautre est dans un registre. Avec ce type dinstructions notre problme,
C = A + B sexprime sous la forme de la squence dinstructions :
load D, R, @B Charger le contenu du mot dadresse B
dans le registre R. (R) = (B)
add D, R, @A (R) = (R) + (A) Contenu de R + contenu de A dans R
store D, R, @C (C) = (R) Placer le contenu de R ladresse C
7.3 Aspects internes 139

Le programme machine plac en mmoire centrale est dcrit sous la forme dun
programme crit en langage dassemblage. Ici, par souci de simplicit dcriture, les
adresses mmoire sont exprimes en base 10. La premire instruction est ladresse 10,
la seconde ladresse 11, la troisime ladresse 12. La premire instruction indique
que lon place le contenu de ladresse B (adresse 15) dans le registre R. La seconde
instruction ralise laddition du contenu de R avec le contenu de ladresse A
(adresse 14), le rsultat tant plac dans R. Enfin, la troisime instruction place le
contenu de R ladresse mmoire C (adresse 17). Ce programme ralise donc laddi-
tion des valeurs 3 et 5, le rsultat tant plac dans C (adresse 17).
Notre programme est en cours dexcution, la premire instruction ayant t excute,
le registre R contient 3 et le compteur ordinal CO contient 11 (adresse de linstruction
excuter). Nous allons, dans ce contexte, dtailler le processus dexcution de
linstruction machine : add D, R, A et examiner les diffrentes phases de son excution.

FETCH
Cest la phase de recherche et de chargement de linstruction, pointe par le comp-
teur ordinal CO, dans le registre instruction RI. Cette phase comporte trois tapes.

Z
10 Load D, R, B

PSW 11 Add D, R, A

12 Store D, R, C
R 3
13

Horloge A 14 5
CO
11
B 15 3

Dcodeur RI 16
Dunod La photocopie non autorise est un dlit.

RDO
C 17
RAD
11

Lecture
11

0 1 2 30 31 61 62 63
Tops horloge microprocesseur

Figure 7.6 tape 1.


140 7 La fonction dexcution

tape 1

Le contenu du compteur ordinal CO est plac dans le registre dadresses RAD, donc
lentre de la mmoire centrale via le bus dadresses. Une commande de lecture est
place sur le bus de commandes et le signal AttenteMmoire est positionn. Lorsque
la donne est disponible la mmoire place un signal PRT qui indique au micropro-
cesseur que la donne demande est disponible sur le bus de donnes donc dans le
registre de donnes RDO. Compte tenu des cycles respectifs de la mmoire et du bus
ce dernier place un tat dattente (WaitState) et la donne est donc disponible 30 nano-
secondes aprs la demande (figure 7.6).

tape 2

cette tape le compteur ordinal CO est incrment. Pour cela on suppose que notre
machine est dote dun compteur ordinal pilot par un signal, InCo , qui dclenche
lincrmentation (ajoute 1 CO). la fin de cette tape, le compteur ordinal contient
ladresse de la prochaine instruction excuter (figure 7.7).

Z
10 Load D, R, B

PSW 11 Add D, R, A

12 Store D, R, C
R 3
13
(CO) = (CO) + 1
Horloge A 14 5
CO
12
B 15 3

Dcodeur RI 16

RDO C 17

RAD

0 1 2 30 31 61 62 63
Tops horloge microprocesseur

Figure 7.7 tape 2.


7.3 Aspects internes 141

tape 3

Cette tape se produit 30 nanosecondes aprs la demande de lecture faite par le


microprocesseur. Elle consiste placer le contenu du registre RDO dans le registre
instruction RI. la fin de cette tape le registre dinstruction RI contient linstruc-
tion Add D, R, A. La phase de recherche et de chargement (FETCH) de linstruction
dans le registre dinstruction RI est alors termine. La phase de dcodage commence
(figure 7.8).

Y
Z
10 Load D, R, B

PSW 11 Add D, R, A

12 Store D, R, C
R 3
13

Horloge A 14 5
CO
12
B 15 3

Dcodeur Add D, R, A 16
RDO
Add D, R, A C 17

RAD

Add D, R, A

0 1 2 30 31 61 62 63
Tops horloge microprocesseur
Dunod La photocopie non autorise est un dlit.

Figure 7.8 tape 3.

Dcodage
La phase de dcodage permet linterprtation du code opration et du mode dadres-
sage de loprande. Ici il sagit dune addition du contenu de ladresse mmoire A
avec le registre R, le rsultat devant tre plac dans R. Cette phase va permettre
dacqurir le contenu de A qui sera plac dans le registre Y. La phase dexcution
pourra alors tre ralise.
142 7 La fonction dexcution

tape 4
Le champ oprande, A, est plac dans le registre dadresses RAD puis une
commande de lecture est positionne sur le bus de commandes par lunit de
commande. Le signal AttenteMmoire est galement plac et le microprocesseur
est prvenu que la donne est prte lorsque la mmoire positionne le signal PRT
(figure 7.9).

Y
Z
10 Load D, R, B
PSW
11 Add D, R, A

12 Store D, R, C
R 3
13

Horloge A 14 5
12
B 15 3

Dcodeur Add D, R, A 16

RDO C 17
A

Lecture A

0 1 2 30 31 61 62 63
Tops horloge microprocesseur

Figure 7.9 tape 4.

tape 5
La donne demande est disponible dans le registre RDO. Elle est place dans le
registre dentre Y de lunit arithmtique et logique. La phase de dcodage est termine,
lexcution peut commencer (figure 7.10).

Excution
tape 6
Lexcution de laddition seffectue en plaant le contenu du registre R sur le bus
interne de donnes, donc en entre de lUAL qui reoit ainsi sa deuxime donne.
Une commande daddition est dclenche pour lUAL. Le rsultat se trouve dans le
registre Z (figure 7.11).
7.3 Aspects internes 143

5
Z 10 Load D, R, B

PSW 11 Add D, R, A

12 Store D, R, C
R 3
13

Horloge A 14 5
12
B 15 3

Dcodeur Add D, R, A 16
RDO
5 C 17
RAD

5
0 1 2 30 31 61 62 63
Tops horloge microprocesseur

Figure 7.10 tape 5. Figure 7.11 tape 6.

5
8 Add
10 Load D, R, B
3
PSW 11 Add D, R, A

12 Store D, R, C
R 3
13

Horloge A 14 5
Dunod La photocopie non autorise est un dlit.

12 B 15 3
Add

Dcodeur Add D, R, A 16

C 17
RDO
RAD

0 1 2 30 31 61 62 63
Tops horloge microprocesseur
144 7 La fonction dexcution

tape 7

Pour conclure, il suffit maintenant de placer le contenu du registre Z dans le registre R.


On a alors bien ralis lopration souhaite (figure 7.12).

5
8
10 Load D, R, B

PSW 11 Add D, R, A

12 Store D, R, C
R 3
13

Horloge A 14 5
12
B 15 3

Dcodeur Add D, R, A 16

RDO C 17

RAD

0 1 2 30 31 61 62 63
Tops horloge microprocesseur

Figure 7.12 tape 7.

Conclusion
Cet exemple met en vidence les diffrentes tapes de lexcution dune instruction
ainsi que le sens quil faut donner au mot excution. Lensemble registres/UAL dfinit
le chemin de donnes . Ce chemin de donnes est caractristique du microproces-
seur, nous verrons que les processeurs CISC et RISC nont pas le mme chemin de
donnes. Enfin le cycle du chemin de donnes caractrise la vitesse dexcution
dune instruction. Pour raliser les diffrentes tapes (fetch, dcodage, excution),
lunit de commande constitue du squenceur et du dcodeur, place des signaux qui
permettent le squencement des diffrentes tapes. Le dcodeur reconnat linstruc-
tion et permet au squenceur de positionner, pour chacune des tapes, les signaux
ncessaires lexcution de linstruction dcode.
7.3 Aspects internes 145

7.3.2 Microcommandes et micro-instructions


Les diffrents modules de lunit centrale sont pilots par les signaux que le squen-
ceur positionne au bon moment.
Dans cette partie nous examinons les signaux ou microcommandes du squenceur
pour piloter les registres et lUAL, puis la production des micro-instructions (ensemble
de microcommandes) permettant de raliser les diffrentes tapes de lexcution dune
instruction de notre programme sur notre processeur.

Les registres
Les registres sont des zones de mmoires permettant le stockage dinformations que
peut manipuler directement le microprocesseur. La figure 7.13 nous donne lorgani-
sation matrielle dun registre.
Le registre considr ici contient 8 digits binaires. Il est reli au bus interne de
donnes du microprocesseur par le biais de barrires dentre et de sortie. Ces
barrires sont pilotes par des signaux dentre et de sortie positionns par le squen-
ceur. Ces signaux ouvrent ou ferment les barrires permettant linformation de
circuler entre le bus et le registre. Le mode de fonctionnement du registre est indiqu
dans la figure 7.14.

Barrire dentre
Signal dentre
Bit
Registre Bus

Signal de sortie Barrire de sortie


Figure 7.13 Registre.

Barrire dentre
Signal dentre
Horloge
RIen : Signal dentre Squenceur Registre Bus
Dunod La photocopie non autorise est un dlit.

du registre RI
RIsor : Signal de sortie Signal de sortie
du registre RI Dcodeur Barrire de sortie

R1en
R1
R1sor (R2) (R1)
Bus
R2en
R1sor, R2en
R2
R2sor

Figure 7.14 Principe de fonctionnement dun registre.


146 7 La fonction dexcution

Au niveau de la notation, si un registre porte le nom R, alors le signal dentre


pilotant la barrire dentre de ce registre est nomm Ren et le signal de sortie Rsor.
Le contenu du registre R sera not (R). Ainsi pour placer le contenu du registre R1
dans le registre R2, les signaux R1sor et R2en sont positionns. Nous ralisons alors
(R2) = (R1).

LUnit arithmtique et logique (UAL)


Cette unit comprend lensemble des circuits ralisant les oprations arithmtiques
et logiques dun microprocesseur. La figure 7.15 nous en rappelle larchitecture
fonctionnelle en prcisant quelques signaux permettant son pilotage.

Retenue RazY Yen

Zen + Y
1er oprande Bus de donnes
Zsor

Slection
Z 2e oprande
* /
Rsultat
Bus de commandes
Registre dtat (PSW)

Figure 7.15 Unit arithmtique et logique.

Le registre Y est pilot par le signal dentre Yen et lon suppose quil est directe-
ment reli aux circuits de calcul de lUAL. Le registre de sortie Z est pilot par deux
signaux dentre et de sortie, Zen et Zsor. Par ailleurs le signal RazY permet de
rinitialiser la valeur 0 le contenu de Y. Enfin, le signal de retenue Retenue permet
dintroduire une retenue dans laddition des bits de poids faible.
titre indicatif la figure 7.16 donne un schma de ralisation dune UAL 1 bit,
cest--dire pour laquelle les oprandes reprsentent des valeurs codes sur 1 bit. On
y trouve des circuits ET, des circuits OU, des inverseurs, des OU exclusif, etc.
Les oprandes sont nots A et B. Cette UAL permet de raliser les quatre opra-
tions ET, OU, Inverse, Addition. Pour slectionner une opration on dispose de deux
bits dentres (F0, F1) permettant 22 combinaisons. La valeur du couple (F0, F1)
dtermine le circuit arithmtique qui va oprer sur les entres (A, B). Par exemple si
(F0, F1) vaut (0, 0) un ET est ralis sur (A, B), le rsultat tant plac sur S. Par
contre si (F0, F1) vaut (1, 1), alors une addition avec retenue de sortie est ralise, le
rsultat tant plac sur S. Ainsi si (F0, F1) vaut (1, 1) et (A, B) vaut galement (1, 1)
alors S vaut 0 et la retenue de sortie vaut 1 galement.
La figure 7.17 prsente le schma dune UAL 8 bits. Celle-ci est constitue par
8 UAL 1 bit, chanes entre elles par la propagation de la retenue du circuit additionneur.
7.3 Aspects internes 147

U A L de 1 bit Retenue dentre

A
S

F0

Additionneur
F1

Retenue de sortie
Figure 7.16 Unit arithmtique et logique de 1 bit.

Retenue de sortie

A7
S7 UAL B7
1 Bit
A6
S6 UAL B6
1 Bit
A5
S5 UAL B5
1 Bit
A4
S4 UAL B4 F0 Code
1 Bit F1 Opration
A3
Dunod La photocopie non autorise est un dlit.

S3 UAL B3
1 Bit
A2
S2 UAL B2
1 Bit
A1
S1 UAL B1
1 Bit
A0
S0 UAL B0
1 Bit
Retenue dentre

Figure 7.17 Unit arithmtique et logique de 8 bits.


148 7 La fonction dexcution

Les micro-instructions
chaque tape de lexcution dune instruction lunit de commande positionne des
signaux. Lensemble des microcommandes positionnes une tape constitue la
micro-instruction qui sera excute cette tape. Nous avons vu que lexcution de
linstruction Add D, R, A demandait 7 tapes. La figure 7.18 rsume les diffrentes
tapes et les signaux positionns chacune des tapes.

Add D, R, A
RazY 1 Cosor, RADen, Lect, AttenteMmoire
Ret Yen
Y 2 InCo
Add
Z
Zsor Zen
PSW
30 RDOsor, RIen
Ren 31 (addr)RIsor, RADen, Lect, AttenteMemoire

Rsor
Horloge 61 RDOsor, Yen
COen
62 Rsor, Zen, Add Load D, R, B
CO
Squenceur 63 Zsor, Ren Add D, R, A
COsor
RIen Store D, R, C
Dcodeur RI
RIsor 5
RDOsor RDO
3
RADen RAD

Figure 7.18 Microcommandes pour lexcution de Add D, R, A.

Au top dhorloge 1 ltape 1 est ralise par le positionnement des signaux indiqus.
Au deuxime top le compteur ordinal est incrment, au 62e top (tape 6) on excute :
(Z) = (Y) + (R)
La figure 7.18 prsente galement une esquisse du cblage interne du micro-
processeur destine uniquement sensibiliser la complexit de ralisation dun tel
microprocesseur. Les diffrentes tapes de lexcution sont cette fois exprimes sous
la forme dune squence de microcommandes. Chaque micro-instruction est dfinie
comme lensemble des signaux que le squenceur positionne. Par exemple, la micro-
instruction COsor, RADen, Lect, AttenteMmoire, dclenche les oprations :
(RAD) = (CO);
Lect : le squenceur demande la lecture du mot mmoire dont ladresse est
dans RAD ;
AttenteMmoire est actif.
7.3 Aspects internes 149

De cet exemple particulier nous pouvons tirer quelques remarques gnrales :


larchitecture matrielle dtermine la nature et le nombre des microcommandes
ncessaires lexcution dune instruction. Nous avons ici un microprocesseur
avec un seul bus interne; nous verrons dans la section traitant des machines CISC
et RISC que lon peut avoir plusieurs bus internes ce qui change les modalits
dexcution dune instruction;
quelle que soit la nature de linstruction excuter, la phase de FETCH est
toujours identique pour ce microprocesseur;
le dcodage et lexcution de linstruction dpendent de la nature de cette instruction.
Prenons comme autre exemple linstruction de chargement du registre R : Load D,
R, B. titre dexercice on peut vrifier que la squence de micro-instructions est :
1. COsor, RADen, Lect, AttenteMmoire
2. InCo
3. RDOsor, RIen
4. (Adresse)RIsor, RADen, Lect, AttenteMmoire
5. RDOsor, Ren
Cette squence met en vidence que le nombre et la nature des micro-instructions
ne sont pas les mmes que dans le cas de laddition. Nous avons toujours les trois
mmes micro-instructions pour la phase de FETCH et seulement deux micro-
instructions pour le dcodage/excution.
Enfin dans notre premier exemple, Add D, R, A , indique que lon veut addi-
tionner le contenu de R avec le contenu de ladresse mmoire A, le rsultat tant
plac dans R. En fait ladresse mmoire dun oprande est dfinie par le mode
dadressage. Dans notre cas D dfinit un mode dadressage direct indiquant que
A reprsente ladresse de la donne. Linstruction note Add I, R, A indique, cette
fois, que le mode dadressage est indirect : la donne nest plus le contenu de A mais
le contenu du contenu de A. Ainsi, dans ce cas, A nest plus ladresse de la donne
mais contient ladresse de la donne.
On peut alors vrifier que dans le cas de linstruction Add I, R, A la squence de
micro-instructions est :
1. COsor, RADen, Lect, AttenteMmoire
Dunod La photocopie non autorise est un dlit.

2. InCo
3. RDOsor, RIen
4. (Adresse)RIsor, RADen, Lect, AttenteMmoire
5. RDOsor, RADen, AttenteMmoire
6. RDOsor, Yen
7. Rsor, Zen, Add
8. Zsor, Ren
Ainsi la phase FETCH de cette instruction conduit la gnration des mmes
microcommandes, par contre les phases de dcodage et dexcution donnent lieu
des squences diffrentes. La phase de dcodage ne tient donc pas seulement compte
150 7 La fonction dexcution

du code opration pour dterminer la squence des micro-instructions, le mode dadres-


sage intervient galement.

Squencement des microcommandes


Nous avons vu que lexcution dune instruction machine se traduisait par une squence
de microcommandes. Le squenceur produit les signaux et assure lexcution mat-
rielle des microcommandes. Il existe deux types de squenceurs : les squenceurs
cbls (on parle alors de contrle cbl) et les squenceurs microprogramms (on
parle alors de contrle microprogramm). On conoit aisment que la ralisation des
squenceurs est trs complexe. Il ne sagit donc pas ici de donner la ralisation de tel
ou tel constructeur mais plutt de mettre en vidence les grandes fonctionnalits qui
prsident de telles ralisations. Squenceur cbl et squenceur microprogramm
reprsentent deux approches diffrentes pour le contrle du chemin de donnes.

Squenceur cbl
Le contrle cbl utilise un automate tats finis implment en logique alatoire ou
encore des rseaux logiques programmables (PLA, Programmed Logic Array).
titre dexemple la figure 7.19 donne le schma de principe dun PLA. Il sagit dun

Entres

Portes ET
Termes produits Sorties
Portes OU D

c
l Signal horloge
Gnrateur dtapes e
n Signal mmoire prte
1 2 3 c
h
e
Fetch u
r

COsor
RADen
Lect
AttenteMmoire
RDOsor
RIen
InCo

Figure 7.19 Principe dun circuit PLA.


7.3 Aspects internes 151

ensemble de portes ET formant les termes produits et de portes OU formant les


termes sommes. chaque porte ET est associ un fusible qui est intact lorigine.
La programmation de la matrice des portes ET consiste dtruire des fusibles afin
dobtenir les termes produits de la fonction raliser. De mme pour les portes OU
auxquelles sont associs des fusibles que lon dtruit slectivement pour obtenir les
termes sommes souhaits. Dans notre exemple nous avons :
une entre nomme Fetch laquelle trois portes ET sont associes;
7 sorties avec 7 portes OU. Chaque porte OU reoit les 3 sorties des termes produits.
Les fusibles marqus en noir sont ceux gards intacts et ce circuit PLA, ainsi
programm, permet la ralisation cble de la fonction de chargement dune instruc-
tion de la mmoire centrale vers le registre dinstruction.
Le circuit PLA pilot par un gnrateur dtapes est lui-mme dirig par un circuit
dclencheur. Le circuit dclencheur reoit en entre le signal dhorloge, le signal
mmoire prte et le signal AttenteMmoire. Si le signal mmoire prte et le signal
AttenteMmoire sont positionns, alors le gnrateur dtape est incrment dune
unit au prochain top dhorloge. Dans le cas o le signal AttenteMmoire est posi-
tionn seul, alors le gnrateur dtapes nest pas incrment lors dun top dhorloge.
Cet ensemble de circuits permet donc la ralisation cble de la phase Fetch.
ltape 1, la premire porte ET a sa sortie 1 et donc les signaux Cosor, RADen,
Lect et AttenteMmoire sont positionns 1. Tant que le signal mmoire prte nest
pas positionn, le gnrateur dtapes ne progresse pas. Sitt le signal positionn, la
sortie de la deuxime porte ET devient gale 1 et ainsi que le signal InCo.
La figure 7.20 synthtise le fonctionnement dun tel squenceur. Chaque pastille
symbolise des portes ET et des portes OU ainsi que les fusibles gards intacts lors de
la ralisation du circuit. Le registre instruction RI contient linstruction excuter
soit Add D, R, A , un circuit de dcodage interprte le code opration et slec-
tionne une des entres de la matrice de termes produits. Dans notre cas il y a 7 entres
et 8 portes ET produisant une matrice de 7 8 portes ET. Il y a de mme 16 signaux
de sorties ncessitant 16 8 portes OU. Chaque porte OU reoit 8 entres.
ltape 4 de lexcution de cette instruction les microcommandes Lect, RIsor,
RADen, AttenteMmoire sont positionns par la logique cble.
Le circuit dclencheur fonctionne selon lalgorithme :
si horloge = 1
Dunod La photocopie non autorise est un dlit.

alors
si AttenteMmoire = 1
alors
si Mmoire Prte = 1
alors Sortie = 1;
sinon Sortie = 0;
fsi
sinon Sortie = 1;
fsi
sinon Sortie = 0;
fsi
152 7 La fonction dexcution

La notation horloge = 1 signifie que le signal dhorloge est prsent, dans le cas
contraire le signal est gal 0.
Ainsi le circuit dclencheur a une sortie 1 chaque top horloge si le signal
AttenteMmoire est faux ou si le signal AttenteMmoire est vrai et que la mmoire
est prte.
Le gnrateur dtapes est un compteur dtapes qui admet comme signal dentre
le signal de sortie du dclencheur. Il incrmente le numro de ltape chaque fois
que la sortie du dclencheur est 1.

D

Gnrateur dtapes c
l Horloge
e
1 2 3 4 5 6 7 8 n
Circuit de dcodage
D, R, A

c
h
e Signal Mmoire Prte
u
r
Add

Circuits ET
Registre
Instruction
RI Yen
InCo
Ret
Load D, R, B Zen
Zsor
Ren
Rsor
Lect
Add
Circuits OU COen
COsor
RIen
RIsor
RADen
RDOsor
AttenteMemoire

Figure 7.20 Squenceur cbl.

La figure 7.20 montre la complexit du cblage dun tel squenceur et illustre


la terminologie squenceur cbl . Ces squenceurs trs complexes dans leur
ralisation sont trs performants car entirement constitus de circuits lectroniques.
Par contre aucune erreur nest permise lors de leur ralisation car il est impossible de
modifier le cblage. Enfin il est impossible dajouter une instruction qui pourrait tre
utile aprs la ralisation dun tel circuit.
7.3 Aspects internes 153

Squenceur microprogramm
Lobjectif est exactement le mme que pour le squenceur cbl mais la manire
daborder la question, et de la rsoudre est radicalement diffrente. La figure 7.21
donne le schma de principe dun tel squenceur.

Add D, R, A

00000 0111000110100100
00001 0000100001000001
1
00010 0000000000010010
+ 0 Yen
00011 0000000100001101
0 RazY
Registre 00100 1000000000000010
Instruction 0 Ret
00101 0001001010000000 1 Zen
00110 0000110000000000 0 Zsor
D, R, A

0 Ren
00111 0111000110100100
1 Rsor
01001 0000100001000001 0 Lect
01010 0000000000010010
Gnrateur

1 Add
d'adresse
initiale

01011 0000000100001101
Add

0 COen
01100 0000010000000010 0 COsor
01101 0 RIen
01110 0 RIsor
Horloge 0 RADen
Micro-CO 01111 Mmoire
de 0 RDOsor
10000 0
Signal micro-programmes AttenteMmoire
mmoire prte

Load D, R, B

Figure 7.21 Squenceur microprogramm.


Dunod La photocopie non autorise est un dlit.

Ce squenceur est organis autour dune mmoire, dite mmoire de micropro-


grammes, dune unit arithmtique, dun compteur ordinal, dit microcompteur ordinal,
dun circuit gnrateur de ladresse initiale de linstruction et enfin dun circuit
dclencheur de lexcution dune micro-instruction.
La mmoire de microprogramme contient les micro-instructions associes chaque
instruction machine disponible pour notre microprocesseur. Chaque mot (une ligne
sur la figure 7.20) de cette mmoire est adressable et contient une suite de bits asso-
cis aux signaux que peut produire le squenceur. Un mot mmoire contient autant
de bits quil y a de signaux possibles pour ce squenceur. Un bit positionn 1 indique
154 7 La fonction dexcution

que le signal associ doit tre actif, il est positionn 0 dans le cas contraire. Par
exemple ladresse 00101 de la mmoire se trouve une suite de digits binaires permet-
tant de rendre actifs les signaux Zen, Rsor, Add. De ladresse 00000 ladresse
00110 se trouve une suite de mots mmoire correspondant chacun une micro-
instruction. On peut vrifier que les suites de 0 et de 1 de chaque mot quivalent bien
lactivation des signaux permettant lexcution de linstruction machine Add D, R, A .
Une telle suite sappelle un microprogramme. Il y a autant de microprogrammes dans
la mmoire que dinstructions machines disponibles pour le processeur.
Le registre instruction RI contient linstruction machine excuter. Le code
opration est prsent au circuit dinitialisation qui au vu du code opration dter-
mine ladresse de la premire instruction du microprogramme correspondant. Le
contenu de la premire micro-instruction est plac dans le tampon de slection des
signaux de sortie. Les bits positionns 1 rendent actifs les signaux correspondants.
Le microcompteur ordinal est incrment de 1 et la micro-instruction suivante est
excute, ainsi de suite jusqu la dernire micro-instruction de linstruction machine.
On peut remarquer que lon a une gestion analogue de lattente mmoire que dans le
cas du squenceur cbl.
Ce type de squenceur prsente le trs gros avantage de permettre des modifica-
tions dans le cas derreurs de conception des microcommandes. Il permet galement
dajouter des instructions. Les microprogrammes peuvent tre stocks dans des
mmoires de type ROM.
Lorsque lon doit raliser des squenceurs peu complexes le contrle cbl en
logique alatoire est plus efficace que le contrle microprogramm. Par contre dans
le cas de contrle trs complexe la comparaison des diffrentes approches est beau-
coup plus difficile et le choix nest pas toujours vident.

7.4 LES INTERRUPTIONS : MODIFICATION DU FLUX


DEXCUTION DUN PROGRAMME MACHINE
7.4.1 Principe des interruptions
Nous avons vu que lexcution dun programme machine se faisait instruction aprs
instruction de la premire jusqu la dernire. Une interruption permet darrter
lexcution du programme en cours afin dexcuter une tche juge plus urgente. De
cette manire, un priphrique, par exemple, peut signaler un vnement important
(fin de papier dans limprimante, dpassement de temprature signale par une sonde
place dans un four) au processeur qui, sil accepte cette interruption, excute un
programme de service (dit programme dinterruption) traitant lvnement. la fin
du programme dinterruption le programme interrompu reprend son excution normale.
On distingue plusieurs types dvnements provoquant des interruptions, ils
proviennent :
dun priphrique. On parle alors dinterruptions externes qui permettent un pri-
phrique de se manifester auprs du processeur;
7.4 Les interruptions : modification du flux dexcution dun programme 155

dun programme en cours dexcution. Il sagit dinterruptions logicielles internes


souvent nommes appels systmes. Il sagit de permettre un programme en
cours dexcution de se drouter vers un programme du systme dexploitation
qui doit grer une tche particulire. Par exemple les instructions dentres-
sorties, permettant les changes dinformations entre le processeur et les priph-
riques, sont traites de cette manire. Un ordre dentres-sorties est un appel au
systme (une interruption logicielle) qui interrompt le programme en cours au
profit du programme spcifique (driver ou pilote) de gestion dun priphrique;
du processeur lui-mme pour traiter des vnements exceptionnels de type divi-
sion par zro, dpassement de capacit lors dune opration arithmtique.
La prise en compte et le traitement dune interruption sappuient sur un mca-
nisme relativement complexe. Afin dillustrer ce mcanisme nous prenons lexemple
du traitement dune interruption externe, donc produite par un priphrique. Pour
prendre en compte une interruption et la traiter il faut en dterminer son origine car
il y a plusieurs sources possibles dinterruptions, puis excuter le programme adapt.
Ce mcanisme sappuie pour partie sur le matriel (un priphrique positionne un
signal indiquant quil veut alerter le processeur) et pour partie sur du logiciel de trai-
tement de linterruption. La figure 7.22 reprsente la prise en compte dun vne-
ment externe provoquant une interruption.

programme de gestion
de linterruption
Processeur
Programme
en excution

INTA
INTR
Contrleur de disque magntique
Dunod La photocopie non autorise est un dlit.

Figure 7.22 Prise en compte dune interruption externe.

Dans ce schma tous les priphriques signalent un vnement au processeur par


le biais dune ligne dinterruption unique en positionnant le signal INTR. Le proces-
seur, par le signal INTA, indique au priphrique que lvnement a t reu et quil
va tre pris en compte (il faut viter que le priphrique continue dmettre des
signaux). En gnral il nexiste quune seule ligne dinterruption et il faut donc dter-
miner lorigine de linterruption mise. Cela peut se faire par scrutation, en interro-
geant tous les priphriques. Une autre mthode consiste ce que le priphrique,
156 7 La fonction dexcution

aprs avoir dpos un signal dinterruption, place sur le bus de communication


lidentification de linterruption. Le processeur prvenu dun signal dinterruption
(INTR) sait quil doit lire le bus de communication pour connatre la nature de
linterruption. Connaissant la nature de linterruption, le processeur peut excuter le
programme spcifique de traitement. Ce mcanisme implique des aspects matriels
(mise en place du signal) et logiciels (programmes de reconnaissance et de traite-
ment). On voit donc que la prise en compte de ce mcanisme implique la coexistence
simultane en mmoire de plusieurs programmes machine. Les uns sont de type
systme dexploitation (les programmes de traitement des interruptions), les autres
de type utilisateur.
La figure 7.23 rsume ce mcanisme. On trouve les programmes de gestion des
interruptions (reconnaissance et traitement) et une zone mmoire, appele vecteur
dinterruptions, contenant les adresses mmoires des programmes de traitement dune
interruption. chaque entre de ce vecteur correspond une interruption particulire.
Lorsque le priphrique signale une interruption il dpose sur le bus le numro de
linterruption, ce numro identifie un point dentre dans le vecteur dinterruptions
donc ladresse du programme de traitement.
La prise en compte dune interruption se fait selon la squence :
1. le programme utilisateur dispose du processeur. Cest lui qui est en cours dexcu-
tion. Il dispose des registres, de lunit arithmtique et logique, de lunit de

Programme de reconnaissance de linterruption

(5)
(3)

(3)

Adressage
(4)
Programmes
dinterruption Zone
(1) de sauvegarde

Processeur

(2) (6)

Interruption Programme
machine

Mmoire

Figure 7.23 Prise en compte dune interruption.


7.4 Les interruptions : modification du flux dexcution dun programme 157

commande. Le compteur ordinal CO contient ladresse de la prochaine instruction


excuter;
2. une interruption est poste par un priphrique;
3. il y a sauvegarde du contexte matriel dexcution du programme utilisateur et en
particulier du compteur ordinal CO. Ceci est ncessaire pour la reprise ultrieure
de ce programme. Le programme de reconnaissance sexcute et lit le numro de
linterruption. Le numro de linterruption permet lidentification de ladresse du
programme de traitement;
4. le compteur ordinal CO est charg avec ladresse du programme de traitement et
celui-ci sexcute;
5. le contexte dexcution du programme utilisateur est recharg dans le processeur
la fin de lexcution du programme dinterruption;
6. le programme utilisateur reprend son excution.
En rsum le mcanisme dinterruption modifie le flux standard dexcution dun
programme machine. Le flux dexcution, tenant compte de possibles interruptions,
dun programme est rsum dans la figure 7.24.

Matriel Prise en compte par le processeur dvnements externes


(exemple : les priphriques positionnent un signal qui est reu par le processeur).

Logiciel Programme machine Instruction en cours dexcution

1 2
Programme
Interruption 3
de gestion
vnement externe
de linterruption
(signal)

Figure 7.24 Flux dun programme avec prise en compte des interruptions.

Avant dexcuter une instruction (nouvelle phase de Fetch), le processeur vrifie


la prsence ou labsence dun signal dinterruption. Si le signal dinterruption est
post, le mcanisme de traitement de linterruption est mis en uvre sinon lexcu-
Dunod La photocopie non autorise est un dlit.

tion du programme utilisateur continue en squence. Une instruction commence se


termine toujours mme si une interruption est arrive pendant son excution. Linter-
ruption sera prise en compte aprs la fin de linstruction et avant le dbut de linstruc-
tion suivante.
Ce mcanisme est fondamental, nous navons fait que laborder superficiellement
car il est dune grande complexit ds que lon entre dans les dtails de sa ralisation.
Il est, en particulier, utilis par le systme dexploitation pour le traitement efficace
des entres-sorties, nous y reviendrons donc dans la partie concernant le traitement
matriel des entres-sorties mais aussi dans les chapitres concernant le systme
dexploitation.
158 7 La fonction dexcution

7.4.2 Un exemple
Nous allons examiner, sous forme dun exemple, les diffrents composants mat-
riels, et la manire dont certaines interruptions sont prises en compte dans le cas
dun PC pilot par un processeur de type 80xx (jusqu 80486). Avec les nouveaux
processeurs les traitements et matriels voqus dans cet exemple ont volu mais
les mcanismes dcrits et leur prise en compte gardent leur gnralit.
Dune manire gnrale lorsquune interruption provenant dun priphrique se
produit il faut rpondre plusieurs questions :
Comment lunit centrale peut-elle reconnatre le priphrique ayant mis le signal
dinterruption ?
Comment lunit centrale dtermine ladresse du programme de traitement de
linterruption ?
Comment prendre en compte la situation ou deux, voir plus, interruptions se
produisent simultanment ?
Comment prendre en compte une nouvelle interruption qui se produit pendant
lexcution du programme de traitement dune autre interruption (imbrication des
interruptions) ?

Les signaux
Lorsquun priphrique met une interruption, lunit centrale est prvenue par le
signal INTR. Celle-ci met alors le signal dacquittement INTA, puis elle rserve le
bus de communication et attend que le priphrique envoie le numro de linterruption
en utilisant le bus de communication.

Vecteur dinterruptions
Pour dterminer ladresse du programme de traitement de linterruption lunit
centrale dispose dun tableau appel vecteur dinterruptions ayant autant dentres
que dinterruptions possibles. Le tableau 7.1 donne une image partielle du vecteur
dinterruptions.
La colonne de gauche indique les adresses dimplantation du vecteur dinterrup-
tions. Ces adresses sont exprimes en notation hexadcimale. chaque ligne du
tableau correspond une entre dans le vecteur dinterruptions, chaque entre contient
4 octets. Chaque entre du vecteur dinterruptions est associe une interruption et
dlivre ladresse du programme de traitement correspondant.
La deuxime colonne contient le numro de linterruption et la troisime colonne
son identification. Par exemple ladresse 2C-2F du vecteur dinterruptions contient
ladresse du programme de traitement de linterruption associe au port de commu-
nication COM1.
Toutes les entres du vecteur dinterruptions ne sont pas notes dans le tableau, le
vecteur dinterruptions occupant toutes les adresses mmoire de 0 7F. La dernire
colonne nest pas rfrence car le nommage des points dentre dans les logiciels
de traitement dpend du systme dexploitation. Ainsi les signaux INTR, INTA et le
7.4 Les interruptions : modification du flux dexcution dun programme 159

vecteur dinterruptions permettent de rpondre aux deux premires questions que


pose la prise en compte dune interruption.
Pour les deux dernires questions, notre ordinateur est muni de matriel permettant
dune part darbitrer les conflits daccs au bus (botier 8288), dautre part daccepter
plusieurs lignes dinterruption logique, de positionner le signal INTR et de respecter
une logique de gestion des priorits et de limbrication des diffrentes interruptions
(botier 8259). Implicitement les interruptions sont classes par ordre de priorit.
Quand deux interruptions se prsentent simultanment, la plus prioritaire des deux
est traite, lautre tant mise en attente. Une interruption survenant alors quune autre
interruption est dj en cours de traitement ne sera prise en compte que si sa priorit
est plus leve que celle de linterruption actuellement en cours de traitement.

Tableau 7.1 VECTEUR DINTERRUPTIONS.

Numro Point dentre


Adresse Nom
de linterruption dans le logiciel
(Hxadcimal) de linterruption
(Hxadcimal) de traitement

0-3 0 Division par 0


10-13 4 Dbordement
20-23 8 Horloge
24-27 9 Clavier
28-2B A Rserv
2C-2F B Communication1
30-33 C Communication2
34-37 D Disque
38-3B E Disquette
3C-3F F Imprimante
40-43 10 cran
70-73 1C Top horloge
Caractres
7C-7F 1F
graphiques dcran
Dunod La photocopie non autorise est un dlit.

Architecture du matriel permettant la prise en compte des interruptions


Le matriel qui intervient comprend un botier (botier 8259) recevant les interrup-
tions. Pour ce botier les interruptions sont notes IRQx. Ainsi, IRQ1 caractrise une
interruption clavier, IRQ0 linterruption horloge, IRQ5 une interruption disque etc.
la rception dun ou plusieurs signaux le botier met le signal INTR vers le proces-
seur. Il sadresse alors larbitre de bus afin de rserver le bus au travers duquel le
priphrique ayant mis le signal transmet le numro de linterruption. Larbitre de
bus est un module fondamental qui permet le partage dune ressource matrielle
unique (le bus) entre plusieurs utilisateurs potentiels (figure 7.25).
160 7 La fonction dexcution

Botier 8259 Vecteur dinterruptions


INTR
Processeur IRQ0
IRQ1
IRQ2
80XX IRQ3
Arbitre
de Bus IRQ4
IRQ5
INTA IRQ6
IRQ7

Units dchanges Units dchanges Units dchanges

Figure 7.25 Matriel pour la prise en compte des interruptions.

INTR Botier 8259

INTA
Logique de Contrle

0 IRQ0
0 IRQ1
0 0 0 0 0 0 0 0 Priorits 0 IRQ2
ISR 0 IRQ3
0 IRQ4
0 0 0 0 0 0 0 0
0 IRQ5
IMR 0 IRQ6
0 IRQ7

Donnes IRR

Units dchanges Units dchanges Units dchanges

Figure 7.26 Botier 8259.


7.4 Les interruptions : modification du flux dexcution dun programme 161

Larbitre de bus envoie le signal dacquittement INTA indiquant que le signal a t


pris en compte. Le numro de linterruption est alors envoy au processeur. Ce
numro permet de trouver le point dentre dans le vecteur dinterruptions et donc de
connatre ladresse du programme de traitement du signal.
La figure 7.26 dtaille le contenu du botier 8259 afin de mieux comprendre les
mcanismes de gestion des priorits et dimbrication des interruptions. Les interrup-
tions sont classes selon un ordre de priorit, 0 est la plus forte, 7 la plus faible. Le
registre IRR (registre des requtes dinterruptions) stocke les demandes dinterruptions
en positionnant 1 le bit correspondant dans le registre. Le registre ISR (registre des
interruptions en cours) contient un enregistrement des interruptions en cours de trai-
tement. Le registre IMR (masque des interruptions) contient un enregistrement des
interruptions actives.
Le tableau 7.2 donne un exemple de comportement du botier qui opre en mode
totalement imbriqu, cest--dire qui gre les interruptions simultanes et les ven-
tuelles imbrications.

Tableau 7.2 EXEMPLE DE COMPORTEMENT DU BOTIER 8259.

vnement Statut IRQ7 IRQ6 IRQ5 IRQ4 IRQ3 IRQ2 IRQ1 IRQ0

ISR 0 0 0 0 0 0 0 0
Priorits 7 6 5 4 3 2 1 0
Int. acceptes x x x x x x x x

Requte Int. *

ISR 0 0 1 0 0 0 0 0
Priorits 7 6 5 4 3 2 1 0
Int acceptes x x x x x

Requte Int. * * *

ISR 0 0 1 0 1 0 0 0
Priorits 7 6 5 4 3 2 1 0
Int acceptes x x x

Fin Int.

ISR 0 0 1 0 0 0 0 0
Priorits 7 6 5 4 3 2 1 0
Dunod La photocopie non autorise est un dlit.

Int acceptes x x x x x

Requte Int. * *

ISR 0 0 1 1 0 0 0 0
Priorits 7 6 5 4 3 2 1 0
Int acceptes x x x x

Dans notre exemple, au dbut tous les niveaux dinterruption peuvent tre
accepts : il ny a aucun bit positionn dans lISR. La premire interruption est de
niveau 5 et donc seuls les niveaux de 4 0 peuvent tres honors. Dans le second
tat trois interruptions interviennent simultanment : IRQ3, IRQ4, IRQ7. Larbitre
162 7 La fonction dexcution

limine IRQ7 puisque IRQ5 est en cours de traitement et quelle est plus prioritaire.
Il limine galement IRQ4 puisque IRQ3 est plus prioritaire. IRQ3 provoque donc
lmission dun signal INTR vers le processeur. Le processeur en accuse rception
en positionnant le bit correspondant dans lISR. La procdure de traitement de IRQ5
est interrompue au profit de IRQ3. Lvnement Fin Int. marque la fin du traitement
de IRQ3, le bit 3 de ISR est donc remis 0, ce qui rend ligible les interruptions de
niveaux infrieurs 5. IRQ5 est termine, puis IRQ4 en attente est ensuite traite.
IRQ7 reste en attente.
Ce petit exemple met en vidence la manire de rgler les deux dernires ques-
tions poses par la prise en compte dinterruptions (priorit et imbrication). Cest un
mcanisme qui fonctionne sur le mode dune pile, permettant la suspension dun
service de plus faible priorit et sa reprise ds que le service de plus haute priorit est
termin.

7.5 AMLIORATION DES PERFORMANCES


Pour amliorer les performances globales dun ordinateur, diffrentes approches
sont possibles :
augmenter la vitesse des microprocesseurs. Cest en gnral la premire approche
qui se traduit par laugmentation de la frquence dhorloge. Actuellement on trouve
frquemment des processeurs 1,5 GHz voire 3 ou 4 GHz. Cette volution a
pourtant des limites et dpasser certaines vitesses implique des changements tech-
nologiques importants qui ne sont pas ncessairement simples mettre en place
surtout dans le cas de production dordinateurs pour le grand public;
travailler sur larchitecture interne du microprocesseur. Dans nos exemples nous
avons choisi une architecture simple bus interne unique. En fait on peut consid-
rablement amliorer les performances en multipliant le nombre de bus internes.
On trouve frquemment des microprocesseurs avec deux voire trois bus internes
permettant la paralllisation de certaines parties du chemin de donnes. La multi-
plication des registres internes peut permettre aussi une amlioration des perfor-
mances. Ce type de considration est lorigine de la conception des processeurs
RISC en comparaison aux processeurs CISC. Nous examinerons plus en dtail
ces questions dans la partie consacre la comparaison RISC/CISC;
amliorer les performances du bus de communication entre processeur et mmoire
centrale. Ces amliorations portent gnralement sur la frquence du bus et sa
largeur. Cependant augmenter la largeur du bus pour transporter en un seul cycle
une plus grande quantit dinformation ncessite une plus grande surface ce qui
est contradictoire avec la miniaturisation ncessaire sur dautres plans;
en fait dautres approches sont possibles. Elles portent principalement sur la
paralllisation de certaines oprations qui consiste faire plusieurs choses en
mme temps. On trouve deux formes de paralllisation : le paralllisme au niveau
des instructions et le paralllisme au niveau des processeurs. Dans le premier cas
on permet lexcution simultane de plusieurs instructions machine et lon excute
7.5 Amlioration des performances 163

ainsi plus dinstructions par seconde. Dans le deuxime cas plusieurs processeurs
travaillent simultanment sur un programme machine ce qui amliore globale-
ment les performances de lordinateur.

7.5.1 Paralllisme des instructions


Lexcution dune instruction peut se dcrire par :
dbut
fetch : lecture de linstruction et modification du compteur ordinal;
dcodage : reconnaissance de linstruction, lectures de oprandes
ou calcul des adresses mmoire, ou calcul dune adresse
de branchement;
excution : excution des micro-instructions;
rangement : stockage des rsultats;
fin

Technique de pipeline
La figure 7.27 montre que lexcution dune instruction peut tre dcompose en
plusieurs phases qui sexcutent indpendamment les unes des autres si lon dispose
dunits fonctionnelles (du matriel) le permettant. Dans notre exemple lexcution
est ainsi dcompose en 4 phases, chaque phase tant prise en charge par une unit
fonctionnelle diffrente, crant ainsi un pipeline 4 tages.
Dans notre exemple la phase k de linstruction i sexcute en mme temps que la
phase k 1 de linstruction i + 1, que la phase k 2 de linstruction i + 2, etc.
Dans le cas idal chaque phase est ralise en un cycle dhorloge et si une instruc-
tion peut tre dcompose en n phases alors n instructions peuvent tre excutes en
parallle. Ainsi pour notre pipeline 4 tages si le cycle horloge est de 2 nano-
secondes, alors il faut 8 nanosecondes pour excuter une instruction et cette machine
fonctionne en apparence 80 MIPS1. En ralit la technique du pipeline lui permet

i Fetch Dcodage Excution Rangement

i+1 Fetch Dcodage Excution Rangement


Dunod La photocopie non autorise est un dlit.

i+2 Fetch Dcodage Excution Rangement

i+3 Fetch Dcodage Excution Rangement

i+4 Fetch Dcodage Excution Rangement

Figure 7.27 Pipeline 4 tages.

1. MIPS (Million of Instructions Per Second) est une mesure de performances dun microproces-
seur qui mesure le nombre dinstructions excutables par seconde.
164 7 La fonction dexcution

de fonctionner 4 80 MIPS puisque le pipeline est 4 tages et permet donc


4 instructions de sexcuter en parallle. En fait ce nest que lorsque le pipeline est
plein que le processeur fonctionne cette vitesse.
En ralit ce schma est idal mais plusieurs circonstances mettent en dfaut ce
schma et ralentissent donc le fonctionnement du pipeline :
les conflits de ressources. Il faut interdire laccs simultan une ressource par
plusieurs instructions;
les dpendances des donnes. Cest le cas o une instruction i a besoin comme
oprande du rsultat de linstruction i 1. Les deux phases ne peuvent pas tre
menes simultanment;
les conflits lis au contrle. Les instructions de sauts inconditionnels et de bran-
chements conditionnels modifient le compteur ordinal et donc perturbent la simul-
tanit dexcution quimpose le pipeline.
Malgr les circonstances qui empchent le fonctionnement idal dun pipeline
cette technique reste trs efficace pour lamlioration des performances dun ordina-
teur. Multiplier les pipelines permet encore des amliorations de performances. La
figure 7.28 donne le schma dun pipeline double.

Dcodage Excution Rangement

Fetch

Dcodage Excution Rangement

Figure 7.28 Pipeline double.

Pour ce pipeline double, une unit unique de chargement charge des paires dinstruc-
tions qui sexcutent simultanment dans leur propre pipeline. Cette technique
implique imprativement que les instructions qui sexcutent naient aucune interre-
lations et dpendances, autrement dit elles ne doivent pas utiliser de ressources
communes. Cest le compilateur qui a en charge la garantie de lindpendance fonc-
tionnelle des instructions (ctait dj le cas pour le pipeline unique). Actuellement
les machines disposent toutes de pipelines simples ou doubles dans les machines
RISC. Le processeur Intel 486 (machine CISC) dispose dun pipeline tandis que le
Pentium (CISC) dispose de deux pipelines 5 tages.
En fait les rgles qui permettent de dterminer si deux instructions dune paire
peuvent effectivement sexcuter simultanment sont extrmement complexes. Une
instruction dune paire peut voir son excution retarde parce quelle nest pas
compatible avec lautre instruction, ce qui oblige rorganiser lordonnancement de
lexcution des instructions pour profiter de lefficacit des pipelines doubles. Il
sagit du concept dordonnancement dynamique des instructions. Cest le compila-
teur qui est charg de cette rorganisation trs complexe. Plusieurs tudes montrent
7.5 Amlioration des performances 165

que lon peut avoir des gains de performances allant du simple au double entre le
processeur 486 et le Pentium fonctionnant la mme frquence dhorloge par utili-
sation du pipeline double du Pentium.

Architecture superscalaire
Une autre approche consiste disposer dans le pipeline de plusieurs units dexcu-
tions (figure 7.29).

Excution

Fetch Dcodage Excution Rangement

Excution

Figure 7.29 Architecture superscalaire.

Le Pentium 2 dispose de ce type de pipeline. Une telle architecture correspond


ce que lon appelle une architecture superscalaire. Ce type darchitecture est en fait
assez ancien et de tels choix architecturaux existaient dj dans les ordinateurs Control
Data tel que le CDC 6600. Le CDC 6600 disposait de 10 units dexcutions qui
paralllisaient donc trs fortement lexcution effective des instructions.

7.5.2 Paralllisme des processeurs


Cet aspect de lamlioration des performances par lutilisation dun paralllisme
entre processeurs est complexe et dpasse probablement le cadre dun tel ouvrage.
Nous donnons donc ici uniquement les grandes classes dorganisations que lon trouve
dans ce domaine.
Dunod La photocopie non autorise est un dlit.

Processeurs matriciels et vectoriels


Il sagit dune organisation o lon dispose dune seule unit de commande et de
plusieurs units de calcul (UAL). Lunit de commande pilote et organise la parall-
lisation de lexcution des instructions.
Un processeur matriciel excute la mme squence dinstructions sur des donnes
diffrentes et un processeur vectoriel traite efficacement des squences dinstruc-
tions portant sur des paires de donnes (les machines Cray sont base de proces-
seurs vectoriels).
Les processeurs matriciels sont plus performants mais aussi beaucoup plus chers
et beaucoup plus complexes programmer que les processeurs vectoriels. Un proces-
166 7 La fonction dexcution

seur vectoriel peut tre associ comme coprocesseur arithmtique un processeur


conventionnel.

Multiprocesseur
Dans un tel systme tous les processeurs sont autonomes et possdent chacun leur
unit de commande et leur UAL mais ils partagent la mmoire centrale. Chaque
processeur utilise une partie de cette mmoire. A priori chaque processeur peut lire
et/ou crire dans la mmoire partage et cest au systme dexploitation de grer les
conflits daccs cette ressource commune partage. Plusieurs implantations dune
telle architecture sont possibles :
les processeurs se partagent laccs la mmoire commune au travers dun bus
unique, ce qui gnre un grand nombre de conflits daccs la mmoire;
les processeurs disposent de mmoires prives pour les instructions et les donnes
qui nont pas tre partages.
Les multiprocesseurs sont relativement simples programmer ce qui en fait leur
intrt.

Les multi-ordinateurs
En fait il sagit ici de remdier aux difficults lies larchitecture multiprocesseurs
et dviter les conflits daccs une mmoire commune. Dans cette architecture, dite
architecture distribue, la communication entre ordinateurs se rsume des changes
de messages au travers dun rseau de communication. Dans ce contexte on trouve
des applications telles que les changes de fichiers (ftp) ou la mise en place de termi-
naux distants faciles utiliser (telnet). En fait lefficacit du systme densemble
repose essentiellement sur la qualit du rseau de communication.

7.6 CONCLUSION
Dans cette partie nous avons vu que lobjet de la fonction dexcution dun ordina-
teur est dexcuter une suite dinstructions sur un ensemble de donnes. Pour cela un
problme est traduit en une suite dinstructions machines caractristiques dun
processeur capable de les excuter en utilisant un ensemble de circuits lectroniques.
Nous avons t amens indiquer que le programme machine excutable doit tre
plac dans la mmoire principale (mmoire centrale, mmoire RAM) et que le micro-
processeur excute ce programme instruction aprs instruction selon un algorithme
prcis. En fait en prsentant ce chapitre nous avons prsent les fonctions essen-
tielles de lexcution dun programme reposant sur une architecture de machine dite
architecture de Von Neumann qui correspond encore larchitecture la plus rpandue.
Dans la partie amlioration des performances nous avons voqu diffrentes possibi-
lits daugmentation des performances par la paralllisation des instructions et des
processeurs. Cet aspect des choses nous amne en fait considrer plusieurs archi-
tectures possibles de machines. En 1972 Flynn propose une classification des machines
7.6 Conclusion 167

qui sappuie sur le fait que lexcution dun programme correspond lexcution
dun flux dinstruction portant sur un flux de donnes. Il y a alors quatre manires
dassocier flux dinstructions et flux de donnes, ces quatre manires caractrisant
quatre architectures possibles de machines. Ces diffrentes possibilits sont rsu-
mes dans le tableau 7.3.

Tableau 7.3 CLASSIFICATION DES ARCHITECTURES DORDINATEURS.

Flux dinstructions Flux de donnes Dsignation Type de machine

SISD :
1 1 Single Instruction Von Neumann
Single Data
SIMD :
Calculateur
1 Plusieurs Single Instruction
vectoriel
Multiple Data
MISD :
Plusieurs 1 Multiple Instruction
Single Data
MIMD :
Multiprocesseur,
Plusieurs Plusieurs Mutiple Instruction
Multicalculateur
Multiple Data
Dunod La photocopie non autorise est un dlit.
Chapitre 8

La fonction
de mmorisation 8

Ce chapitre est consacr ltude de la fonction de mmorisation. Celle-ci est orga-


nise autour de plusieurs niveaux de mmoire qui ralisent ainsi une hirarchie de
mmoires, dont le but principal est de simuler lexistence dune mmoire de grande
capacit et de grande vitesse. Dans cette hirarchie, les mmoires les plus proches du
processeur sont les mmoires les plus rapides mais aussi les plus petites en capacit.
Au contraire, les mmoires les plus loignes du processeur sont les plus lentes mais
sont de grandes capacits. Nous commenons par tudier physiquement les diff-
rents types de mmoires existantes sur un ordinateur, telles que les mmoires RAM
et ROM. Puis dans une seconde partie consacre lamlioration des performances,
nous abordons les mcanismes de mmoire caches et de mmoire virtuelle. Nous
terminons par un complment sur les architectures RISC et CISC.

8.1 GNRALITS
Nous avons vu que le programme et les donnes sont enregistrs dans la mmoire
centrale (la mmoire RAM) pour tre excuts par le processeur central (micropro-
cesseur). Lors de lexcution dune instruction, le processeur utilise des registres,
qui sont galement des zones de stockage de linformation. Au moment du dmarrage
de lordinateur sexcute un programme prenregistr dans une mmoire spcialise
(la mmoire ROM) qui charge dans la mmoire centrale le noyau du systme dexploi-
tation partir du disque magntique. Lors de lexcution dune instruction par le
8.1 Gnralits 169

processeur nous avons vu que le processeur peut excuter des cycles dhorloge sans
avoir dactivit : il attend la rponse de la mmoire une demande de lecture. Pour
harmoniser les vitesses du processeur et la mmoire RAM, et ainsi amliorer les
performances, une mmoire plus rapide est place entre le processeur et la mmoire
RAM : cest la mmoire cache. Ainsi la mmorisation de linformation dans un ordi-
nateur ne se fait pas en un lieu unique mais, comme le montre la figure 8.1, est orga-
nise au travers dune hirarchie de mmoires.

Vitesse la plus rapide Taille la plus petite Cot le plus lev

6-35 ns Registres

Mmoire Cache

Mmoire centrale
70-120 ns
Mmoire dappui

Mmoire Externe

10 000 000-20 000 000 ns


Vitesse la plus lente Taille la plus grande Cot le plus bas

Figure 8.1 Hirarchie de mmoires.

Toutes les mmoires, mme si elles participent la mme fonction, ne jouent pas
le mme rle et on peut arbitrairement les classer en deux grandes catgories :
les mmoires de travail dsignent les mmoires qui sont actives dans lexcution
dun programme. On y trouve les registres du processeur, la mmoire centrale, la
Dunod La photocopie non autorise est un dlit.

mmoire cache, la mmoire dappui, la mmoire morte. Ce sont des mmoires


lectroniques;
les mmoires de stockage telles que le disque magntique ont pour objet de conserver
de manire permanente de grandes quantits dinformations. Les informations qui
y sont stockes ne participent pas directement lexcution dun programme mais
doivent tres charges en mmoire centrale pour tre exploites par le processeur.
Ce sont les mmoires de masses, elles sont de type magntique ou optique.
La fonction de mmorisation peut tre considre selon deux angles :
lorganisation gnrale et le fonctionnement des diffrentes mmoires. Cest cet
aspect que nous traiterons dans ce chapitre;
170 8 La fonction de mmorisation

la gestion de la mmoire. Il sagit l de dfinir comment et par qui est utilise


cette mmoire. titre dexemple pour quun programme sexcute il faut quil
soit charg dans la mmoire centrale. Il existe plusieurs manires de raliser cette
fonction de chargement. De mme nous avons vu que pour prendre en charge le
mcanisme dinterruptions, plusieurs programmes, les programmes du systme
dexploitation et le(s) programme(s) utilisateur(s), doivent simultanment tre
prsents dans la mmoire centrale. Dans ce cas la gestion de la mmoire consiste
en un partage harmonieux de cette mmoire entre les diffrents programmes. Dans
le cas o plusieurs utilisateurs utilisent en mme temps le mme ordinateur il faut
une gestion de la mmoire leur permettant de partager cette ressource commune.
Il ne sagit plus l de savoir comment fonctionnent les diffrentes mmoires mais
comment, compte tenu de ces fonctionnements, elles peuvent tre utilises par les
programmes utilisateurs. Comment par exemple permettre un programme dont
la taille est plus grande que la mmoire centrale de sexcuter dans cette mmoire
centrale. Cest une des tches importantes du systme dexploitation que dassurer
la gestion de la mmoire. Cette question est aborde dans la troisime partie de
louvrage qui concerne les systmes dexploitation (chapitre 13).
Dans ce qui suit nous nous intressons lorganisation gnrale des mmoires et
leur fonctionnement. Laccent est surtout mis sur les mmoires de travail, quelques
indications sont cependant donnes concernant les mmoires de masse.
Plusieurs critres importants caractrisent les mmoires :
la capacit de la mmoire indique la quantit dinformation quune mmoire peut
stocker. En gnral cette capacit peut sexprimer en bits, en octets, plus rarement
en mots. Le tableau 8.1 rsume les principales expressions de la capacit mmoire;
le temps daccs de la mmoire caractrise le temps ncessaire pour obtenir une
information en mmoire. Pour une mmoire lectronique qui est une mmoire trs
rapide (RAM, ROM, registre) ce temps se mesure en nanosecondes (milliardime
de seconde : 10 9 s). Cette vitesse peut galement sexprimer comme une frquence
dhorloge caractristique de la mmoire, gale linverse du temps daccs et
mesure en hertz (Hz). Ainsi un temps daccs gal 10 nanosecondes correspond
une frquence de 100 Mhz (1 Mhz = 106 Hz). Pour des mmoires magntiques
ou optiques (mmoire de masse) ce temps se mesure en millisecondes (millime
de seconde : 10 3 s). Cet cart de temps est fondamental noter pour comprendre
le rle respectif de ces diffrentes mmoires dans un ordinateur;

Tableau 8.1 EXPRESSIONS DE LA CAPACIT MMOIRE.

Terminologie Abrviation Capacit en octets

Kilo-octet Ko 1 024 octets 210 octets


Mga-octet Mo 1 024 Ko 220 octets
Giga-octet Go 1 024 Mo 230 octets
Tra-octet To 1 024 Go 240 octets
8.2 Mmoires de travail 171

la bande passante de la mmoire. Ce critre sexprime sous la forme du produit de


la largeur du bus de donnes et de la frquence de la mmoire. Par exemple pour
une mmoire de 64 bits de largeur sur un bus 100 MHz la bande passante est de
800 Mo/s. Ce critre est trs utilis et tend remplacer le critre de temps daccs,
il permet, en effet, de mieux valuer les diffrents dbits synchroniser entre les
modules de lordinateur;
le temps de latence mesure le temps ncessaire la ralisation dune opration.
Cest un critre important qui intervient pour tous les types de mmoire. Il exprime
que tous les cycles horloge ne pourront tre utiliss. Une latence de 3 indique que
lobtention de linformation cote 3 cycles horloge, il y a donc perte de cycles
horloge. Pour un disque magntique, le temps de latence mesure le temps quil
faut pour que, une fois la piste atteinte, la donne se trouve sous la tte de lecture.
Il varie de 0 une rvolution complte du disque;
la volatilit reprsente le temps pendant lequel une information est disponible en
mmoire. Les mmoires magntiques sont non volatiles : linformation est conserve
mme aprs larrt de lalimentation lectrique. Les mmoires lectroniques sont
gnralement volatiles et perdent linformation ds que lalimentation lectrique
est coupe : cest le cas des mmoires vives telles que les mmoires RAM;
lencombrement. Les mmoires physiques occupent une place de plus en plus petite
ce qui permet une plus grande intgration. Cest un facteur important de dvelop-
pement de linformatique;
le cot est un critre trs important dans les dveloppements de linformatique.
Les mmoires lectroniques ont un cot de stockage relativement lev et donc
leurs capacits sont dautant plus faibles. Les mmoires magntiques sont beaucoup
moins onreuses et prsentent donc de beaucoup plus grandes capacits de stockage.

8.2 MMOIRES DE TRAVAIL


Dans cette partie nous examinons selon divers points de vue les diffrentes mmoires
de travail : RAM, ROM, registres. Nous consacrerons un paragraphe particulier aux
mmoires caches qui bien que faisant parties des mmoires de travail jouent un rle
si important que nous avons souhait les traiter part. Dans une premire partie nous
abordons une approche externe, puis un point de vue interne o pour quelques cas
Dunod La photocopie non autorise est un dlit.

nous prsentons des exemples de ralisation possible.

8.2.1 Les mmoires vives


Ce sont des mmoires sur lesquelles les oprations de lecture et dcriture sont possi-
bles. Ce sont les mmoires dites RAM (Random Access Memory), o le temps daccs
est indpendant de la place de linformation dans la mmoire. Elles sont volatiles et
le risque de perte dinformations est non ngligeable (microcoupures de lalimenta-
tion). Le temps daccs est trs faible (mmoire rapide) et la consommation lec-
trique est faible. Elles sont essentiellement utilises en tant que mmoire centrale et
mmoires caches.
172 8 La fonction de mmorisation

Les diffrents types de mmoire vive


La figure 8.2 prsente schmatiquement les diffrentes mmoires vives que lon trouve
actuellement :
Les mmoires SRAM (Static RAM) sont construites partir de bascules de tran-
sistors qui permettent, si lalimentation est maintenue, de conserver linformation
trs longtemps. Ce sont des mmoires trs rapides mais chres et qui induisent des
difficults dintgration. Elles sont de faibles capacits et sont plutt rserves
aux mmoires caches.
Les mmoires DRAM (Dynamic RAM) sont la base des mmoires centrales. Le bit
est associ un seul transistor (contrairement aux SRAM) ce qui offre donc une
trs grande conomie de place et favorise une grande densit dintgration. Le
transistor est associ la charge dun condensateur qui diminue avec le temps. La
DRAM est donc volatile et ncessite un rafrachissement rgulier. Ces mmoires
sont en trs forte volution tant au plan des cots que des performances. Les
mmoires EDO sont de type DRAM traditionnelle mais leur temps de latence est
beaucoup plus faible et permet donc des temps daccs plus petits. La mmoire
SDRAM permet des changes synchroniss avec le processeur. On peut ainsi viter
les temps dattente (Wait State). Une volution des SDRAM est la DDR SDRAM
(ou SDRAM II) qui double le taux de transfert actuel des SDRAM. La RDRAM,
produit de la socit Rambus, est de conception trs nouvelle et originale. Elle
permet des taux de transfert 10 fois plus levs que ceux des DRAM traditionnelles,
mais ncessite des contrleurs spcifiques ce qui en limite lusage. Intel soriente vers
le dveloppement de DRDRAM qui permettrait datteindre des dbits de 1,6 Go/s.

SRAM
Statiques
Static Random Access Memory
6 15 nanosecondes

Mmoires
vives
DRAM EDO
Dynamic Random Access Memory Extended Data Out
60 70 nanosecondes 40 70 nanosecondes

Dynamiques SDRAM DDR SDRAM


Synchronous DRAM Double Data Rate
10 12 nanosecondes Double le taux de transfert
des SDRAM actuelles

RDRAM DRDRAM
Rambus DRAM Direct Rambus DRAM
10 fois plus rapide < 5 nanosecondes
quune DRAM classique

VRAM, WRAM, SGRAM


Type de mmoire pour la gestion des affichages

Figure 8.2 Les diffrents types de mmoires vives.


8.2 Mmoires de travail 173

Le tableau 8.2 rsume quelques caractristiques de ces mmoires.

Tableau 8.2 EXPRESSIONS DE LA CAPACIT MMOIRE.

Largeur Frquence Bande


Type Broches Commentaires
(bits) (Mhz) passante
Type un peu ancien et lent. On
trouve galement des SDRAM
SDRAM 168 64 100 800 Mo/s
133 Mhz pour une largeur
de bande de 1 064 Mo/s
Des volutions vers des
frquences de 266 et 333 Mhz
DDR 184 64 200 1 600 Mo/s pour des largeurs pouvant
atteindre 128 bits et dbits
allant de 2 128 2 664 Mo/s.
Des volutions sur la largeur
du bus (de 16 32 bits) et des
RDRAM 184 16 800 1 600 Mo/s frquences plus fortes permet-
traient des largeurs de bandes
allant jusqu 4 264 Mo/s

Les capacits des mmoires sont en fortes volutions et lon peut prvoir dans les
annes venir des capacits de plusieurs giga-octets quivalentes aux capacits actuelles
de disques magntiques.

Brochage et fonctionnement
Il existe plusieurs manires de raliser une mmoire dune capacit dtermine. Soit
par exemple une mmoire dune capacit de 8 Ko soit 64 kbits. Elle peut tre ralise
selon le brochage de la figure 8.3.

Alimentation Vcc A0
D0 A1
D1 A2
D2 A3
Donnes
Dunod La photocopie non autorise est un dlit.

D3 A4
D4 A5
Adresses
RAM

D5 A6
D6 A7
D7 A8
Read R A9
Write W A10
Slection CS A11
Prte Ready A12

Figure 8.3 Brochage mmoire.


174 8 La fonction de mmorisation

Les broches :
A0 A12 correspondent aux broches dadressage (bus dadresses);
D0 D7 correspondent aux donnes (bus de donnes);
R, W correspondent au bus de commandes pour dclencher une lecture ou une
criture ;
CS permet la slection dun botier de mmoire (puce mmoire);
ready est un signal sortant vers le processeur permettant de synchroniser la frquence
dhorloge de la mmoire avec celle du processeur.
Cette puce mmoire a donc une capacit de 213 mots de 8 bits (soit 213 octets, ou
16
2 bits).
Les oprations possibles sont la lecture ou lcriture mmoire. Cest le processeur
qui ralise ces oprations :
Pour raliser une criture, le processeur :
1. slectionne une adresse mmoire et dpose ladresse sur le bus dadresses;
2. dpose la donne sur le bus de donnes;
3. active la commande dcriture.
Pour raliser une lecture, le processeur :
1. slectionne une adresse mmoire et dpose ladresse sur le bus dadresses;
2. active la commande de lecture;
3. lit la donne sur le bus de donnes.
On voit donc que cette organisation permet ladressage dun octet et le dclenche-
ment dune opration de lecture ou dcriture en un seul cycle mmoire. On peut main-
tenant organiser cette mmoire sous la forme dune matrice de lignes et colonnes de
bits (ici 8 lignes et 8 colonnes, soit 28 28 = 216 bits). Cela correspond au brochage
de la figure 8.4.

Alimentation Vcc A0
A1
A2
Adresses

Donnes D A3
A4
A5
RAM

A6
A7

Read R
L Validation dune ligne
Write W
C Validation dune colonne
Slection CS
Prte Ready

Figure 8.4 Organisation de la mmoire sous forme dune matrice.


8.2 Mmoires de travail 175

Les broches A0 A7 permettent dadresser soit une ligne soit une colonne, D corres-
pond la donne slectionne, L et C permettent de valider la ligne et la colonne
slectionne.
Le fonctionnement ne sera donc pas le mme que dans le cas prcdent :
Pour raliser une lecture, le processeur :
1. slectionne une ligne en dposant une adresse sur le bus dadresses;
2. valide la ligne en activant L;
3. slectionne une colonne en dposant une adresse sur le bus dadresses;
4. valide la colonne en activant C;
5. active la commande de lecture;
6. lit la donne sur le bus de donnes cest--dire un bit.
La ralisation dune opration dcriture sentend facilement partir de lexemple
de la lecture.
La deuxime organisation minimise le nombre de broches pour la ralisation de
ce type de botier. Par contre les oprations de lecture et dcriture sont plus longues
raliser quavec la premire organisation. Les mmoires de grandes capacits sont
souvent construites sous la forme dune matrice de lignes et de colonnes afin de
diminuer les cots de ralisation.
La figure 8.5 fournit un schma synthtique reliant le botier processeur aux botiers
mmoire centrale.

Bus dadresses

Bus de donnes

Bus

Bus de commandes
Vcc D0
Vcc Vcc A0
GND D1 A1
D2 D0 A2
D3 D1 A3
A0 D4 D2 A4
Dunod La photocopie non autorise est un dlit.

A1 D5 D3 A5
Slection

A2 D6 D4
RAM

A6
A3 D7 D5 A7
Microprocesseur

A4 R D6 A8
A5 W D7 A9
A6 R
A10
A7 Autres signaux W
A11
A8 CS
(Ex. : Inter- Ready A12
A9
A10 ruptions)
A11
A12
A13 Mmoire prte
A14
A15
A16

Figure 8.5 Liaison processeur mmoire.


176 8 La fonction de mmorisation

Le processeur de cette figure a une capacit dadressage de 217 mots de 8 bits.


Chaque botier mmoire a une capacit de 213 mots de 8 bits (213 octets). Le processeur
peut donc adresser 16 botiers de mmoire. Une adresse mmoire correspond donc
un numro de botier et un numro de mot dans le botier. Pour cela 4 bits du bus
dadresses sont connects un circuit spcial permettant la slection dun botier, les
13 autres bits du bus permettent ladressage dun mot du botier slectionn. Le signal
Mmoire prte permet la synchronisation entre la mmoire et le processeur.

Prsentation physique
En gnral la mmoire se prsente sous la forme de puces mmoire (botiers)
dont la capacit moyenne est de 32 Mo et qui sont gnralement regroupes sur des
modules. Ces modules sont vendus selon 4 formats standards de 64, 128, 256 et
512 Mo. Ils se prsentent sous la forme de barrettes SIMM (Single Inline Memory
Module) ou DIMM (Double Inline Memory Module) qui offrent deux fois plus de
connecteurs que la SIMM. Un nouveau format voit actuellement le jour, les barrettes
RIMM (Rambus Inline Memory Module) qui correspondent aux RDRAM. Ce format
permet la lecture des donnes en srie et non plus en parallle et est plus conomique
fabriquer.

Les aspects internes : circuits et fonctionnement


La mmoire centrale est construite autour dun ensemble de bits raliss partir de
circuits permettant de coder une information sous forme binaire, que lon note 0 ou 1.
Cest la plus petite unit de stockage.
Elle est organise comme un ensemble de cellules contenant linformation. Chaque
cellule contient le mme nombre de bits et est adressable : elle est identifie par un
numro qui permet de la rfrencer dans les oprations de lecture/criture mmoire.
La taille des cellules est trs variable en fonction des mmoires mais les adresses des
cellules sont toujours conscutives. La cellule mmoire correspond la plus petite
quantit de mmoire adressable. Depuis quelques annes les fabricants semblent se
mettre daccord sur des cellules dune taille de 8 bits (octet ou byte). Un mot mmoire
est constitu par un ensemble doctets et correspond linformation manipule par
les instructions machines. Les mots sont de tailles variables, par exemple une machine
32 bits dispose dinstructions manipulant des mots de 32 bits et est donc construite
avec des registres de 32 bits.
La mmoire centrale dialogue avec le processeur pour changer (lecture/criture)
des informations. La figure 8.6 illustre lorganisation dune mmoire RAM. Il sagit
ici dune mmoire conventionnelle rapide o lon slectionne une ligne (une cellule)
et lon accde en une seule opration au contenu de cette cellule.
Une opration dcriture est, dans ce cas, ralise en trois phases : (1) dpt de
ladresse de la cellule sur le bus dadresses, (2) dpt du contenu crire sur le bus
de donnes et (3) dpt dune commande dcriture sur le bus de commandes.
Le contenu du bus dadresses est plac en entre dun circuit de slection (dco-
deur dadresses) permettant de slectionner la cellule mmoire correspondant la
8.2 Mmoires de travail 177

valeur dpose sur le bus dadresses. Le contenu du bus de donnes est plac en
entre de circuits dchanges qui servent de tampons entre le bus de donnes et la
cellule mmoire slectionne.
Le cas dune lecture se dduit facilement de celui dune criture (dposer une
adresse, commander une lecture, lire le contenu du bus de donnes).

Cellule mmoire
Microprocesseur Bits
Mmoire Centrale Multiplexeur
3
Commandes 1
1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 0 0

dadresses Dcodeur
Circuit de slection 0 1 1 1 0 0 1 1 1 0 0 0 1 1 0 1 1
0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 2
1 0 0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 1 3
Adresses 1
0 0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 1 4
1 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 5
1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 0 6
BUS 0 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 7
Circuits permettant lchange
Tampon
des dentres/Sorties
donnes Multiplexeur

2 0
1
0
0
0
0
1
Donnes 0
0
1
0
0
0
0
0
1

Figure 8.6 Organisation dune mmoire RAM.

Les circuits fondamentaux qui interviennent dans la ralisation dune mmoire


sont donc le circuit bit , le dcodeur dadresses, les circuits dchanges.
Le bit (figure 8.7) est un circuit prsentant deux tats stables, cods 0 et 1, dont on
Dunod La photocopie non autorise est un dlit.

peut dcrire la logique de fonctionnement par :


dbut
si C est actif
alors S = E;
sinon S = S;
fsi
fin
La valeur du signal de sortie S (0 ou 1) dpend donc du signal de commande C.
Tant que C nest pas actif la valeur du signal de sortie est inchange quelle que soit
178 8 La fonction de mmorisation

C Bit S

Codage binaire : 0 , 1

E 15 E 14 E 13 E 12 E 11 E 10 E 9 E 8 E 7 E 6 E 5 E 4 E 3 E 2 E 1 E 0
Mot
C

S 15 S 14 S 13 S 12 S 11 S 10 S 9 S 8 S 7 S 6 S 5 S 4 S 3 S 2 S 1 S 0

Figure 8.7 Un bit de mmorisation.

la valeur du signal dentre E. La valeur du signal de sortie est modifie et prend la


valeur du signal dentre ds que C est actif.
La ralisation matrielle dun tel circuit peut se faire laide :
dun circuit de type bascule (voir chapitre 4 sur les circuits logiques). Ce type de
circuit (figure 8.8) rpond bien lalgorithme dcrivant le fonctionnement dun
bit. On vrifie que si S est ltat 0 et que C est galement ltat 0 la valeur de S
est maintenue 0 quelle que soit la valeur de E. Si S et C valent 0, tandis que E
vaut 1, la sortie du circuit ET pilot par E a alors sa sortie 0, les deux entres du
circuit OR exclusif du haut valent 0 et donc la sortie vaut 1. Cette sortie devient
une entre du OR exclusif du bas dont les deux entres sont donc 0 et 1 ce qui

Bit

C
S

0 0 0 0 0 1
0 1
0 1 0 0 1 0
1 0 0 1 0 0
1 0
1 1 1 1 1 0

Figure 8.8 Utilisation dune bascule


pour raliser un bit de mmorisation.
8.2 Mmoires de travail 179

donne une sortie 0. Ltat du bit est donc conserv. La caractristique de tels
circuits est de garder la mmorisation aussi longtemps que lalimentation lec-
trique est maintenue. Les mmoires SRAM sont conues partir de circuits de
cette nature;
dune association dun transistor et dun petit condensateur. Si le condensateur
prsente une charge lectrique, alors la valeur code du bit vaut 1 sinon elle vaut 0.
Malheureusement les condensateurs ne gardent pas une charge constante, elle
diminue avec le temps, il est donc ncessaire de rafrachir ce circuit pour main-
tenir le bit une valeur stable. Cette caractristique complexifie la ralisation de
telles mmoires. Cependant un bit ne ncessite ici quun transistor pour sa ralisa-
tion alors quil en faut plusieurs pour raliser une bascule, do une beaucoup plus
grande densit dintgration. Les mmoires DRAM sont ralises partir de tels
circuits. Leur dfaut essentiel est le temps daccs qui est important.
Dans nos ordinateurs nous trouvons donc les deux types de mmoires, SRAM plutt
pour les mmoires caches, et DRAM plutt pour les mmoires centrales.
La figure 8.9 est une illustration de la ralisation dune mmoire partir de
bascules D. On y trouve les bascules supportant les bits, les circuits de dcodage
dadresses, de slection dun mot mmoire, dchanges et les barrires dentre et de

C E S
E S
0 Dec Barrire
1 0 0 dentre
Slection

C
1 1 1

Dcodeur E S
01
C

0 11
0 1 1
Bus de donnes
Dunod La photocopie non autorise est un dlit.

Bus dadresses

Slection botier. CS = 1

criture 1 Barrire
Commande : Lecture/criture de sortie

Figure 8.9 Ralisation dune mmoire partir de bascules D.


180 8 La fonction de mmorisation

sortie. Il sagit dune mmoire de 12 bits organise en mots de 3 bits, respectivement


dadresse 0, 1, 2, 3 ( partir du haut du schma). Le bus de commandes transporte le
signal de commande (1 pour une criture, 0 pour une lecture). Le bus dadresses peut
adresser les 4 mots et le bus de donnes transporte 3 bits de donnes.
Pour crire dans le mot 1 de ce botier mmoire, le processeur :
active CS 1;
dpose la valeur dadresse binaire 01 sur le bus dadresses. La ligne 1 du dco-
deur est active et prend la valeur 1;
place 1 sur le bus de commande. Le mot dadresse 1 est alors slectionn. Le signal C
de chaque bit du mot 1 est activ, donc les signaux S de ces bits prennent la valeur
des signaux E. Les signaux C des autres mots sont positionns 0. La barrire de
sortie est ferme (le contenu actuel du mot dadresse 1 naffecte pas le bus de
donnes). La barrire dentre est ouverte : les signaux E du mot dadresse 1 pren-
nent la valeur des signaux du bus de donnes. Lcriture mmoire est termine.
Lopration de lecture est trs semblable. On notera limportance des barrires
dentre et de sortie qui dans le cas dune criture (barrire de sortie) empche que
les valeurs actuelles des bits ne viennent perturber les valeurs transportes par le bus
de donnes, et dans le cas dune lecture (barrire dentre) empche que les donnes
dposes sur le bus ne viennent perturber les signaux dentre de la mmoire.

8.2.2 Les mmoires mortes


Les mmoires vives sont accessibles en lecture et criture mais sont volatiles. Bien
des applications (programme et donnes) impliquent dtres stockes de manire
permanente, mme en labsence dalimentation lectrique, comme par exemple le
programme de boot dun ordinateur. Ces mmoires, accessibles uniquement en
lecture, sont connues sous le nom de ROM (Read Only Memory).
Les diffrentes volutions technologiques de ce type de mmoire sont rsumes
dans la figure 8.10.
La caractristique essentielle de ce type de mmoire est un temps daccs trs
faible, sauf peut-tre pour les mmoires flash (environ 100 nanosecondes). Compa-
rativement aux disques magntiques (temps daccs en millisecondes) les mmoires
flash sont trs performantes mais ont, pour le moment, des dures de vie trop faibles
pour remplacer les disques magntiques.

8.2.3 Les registres


On peut raliser des registres partir de circuits flip-flops ou des bascules comme le
montre la figure 8.11. La broche dhorloge CK alimente toutes les entres CK des
bascules composant le registre. La broche CLR (Clear) est galement commune toutes
les bascules du registre et permet de remettre 0 le contenu de chaque bascule.
Le brochage dun registre de 16 bits ncessite donc, dans cette architecture,
36 broches. Comme nous lavons vu pour les mmoires de grande capacit ce nest
pas ce type de montage qui est ralis.
8.3 Mmoires de stockage : le disque magntique 181

Read Only Memory.


Permet un stockage permanent mme en labsence dalimentation
ROM lectrique.
Linformation stocke dans ces mmoires lest de manire dfinitive.
Prix de revient lev, rserv aux grandes sries.

Programmable ROM.
Permet une criture unique mais faite par lutilisateur au moyen dune
PROM machine spciale.
Ces mmoires comprennent un ensemble de fusibles qui sont dtruits
lors de la programmation de la mmoire.

Erasable PROM. PROM effaable.


Elles peuvent tre effaces une fois crites au moyen dun faisceau
Mmoires
EPROM ultraviolet qui force tous les bits une mme valeur. Elles ont la mme
mortes
organisation que des SRAM.
Elles sont utilises en petites sries pour la mise au point des PROM.

Electrically EPROM.
Elles sont effaables lectriquement sans intervention
EEPROM dun rayonnement ultraviolet. Elles ne sont pas volatiles, facilement
rutilisables mais leur prix de revient et leur capacit (infrieur 2 Mo)
ne les rendent pas trs courantes.

Cest une mmoire de type EEPROM qui se reprogramme


lectriquement par bloc de 64 Ko (comme pour les blocs des disques
Flash magntiques et de manire assez rapide (Flash). Son cycle de vie est
limit (100 000 criture). Elle peut remplacer des disques durs portables.
Prix de revient encore lev.

Figure 8.10 Les diffrents types de mmoire ROM.

VCC
CLR E15 E14 E13 E12 E11 E10 E9 E8 E7 E6 E5 E4 E3 E2 E1 E0
Dunod La photocopie non autorise est un dlit.

CK GND S15 S14 S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0

Figure 8.11 Ralisation dun registre.

8.3 MMOIRES DE STOCKAGE : LE DISQUE MAGNTIQUE


Le disque magntique est prsent ici comme le reprsentant des mmoires de
masse dans la hirarchie de mmoires. Il existe plusieurs autres supports de stockage
de masse et nous examinerons leurs caractristiques essentielles dans le chapitre
consacr la fonction de communication.
182 8 La fonction de mmorisation

8.3.1 Caractristiques gnrales


Un disque magntique est constitu dun ou plusieurs plateaux mtalliques recou-
verts sur chaque face dune matire magntisable. La tte de lecture/criture est
constitue dun bobinage fer/nickel (figure 8.12) qui flotte une faible distance du
matriau magntisable. Lorsquun courant lectrique traverse le bobinage, une magn-
tisation de la surface se produit.
Cette magntisation oriente les particules du matriau. Lorientation des particules
dpend du sens du courant lectrique. Cest ainsi que lon ralise une criture, lorien-
tation des particules dfinissant la valeur attribuer la partie magntise (0 ou 1).
Lorsque la tte passe au-dessus dune zone magntise un champ lectrique est
induit dans la bobine. Le sens du champ lectrique induit dpend du type de magn-
tisation. On peut ainsi en fonction du sens du champ lectrique savoir la valeur de
linformation que lon vient de lire.

8.3.2 Organisation gnrale


Lors de son fonctionnement le disque tourne une vitesse constante sous la tte de
lecture.
Sur chaque plateau se trouvent les pistes, zones circulaires sur lesquelles sont enre-
gistres les squences de bits codant les informations stockes. Chaque piste est divise
en secteurs. Un secteur dbute par une zone de prambule qui permet de se synchro-
niser avant de faire une opration de lecture ou dcriture. De mme le secteur se
termine par un ensemble de bits permettant deffectuer des contrles derreurs sur
les informations stockes dans le secteur. Entre deux secteurs se trouve une zone ne

Axe de rotation
Champ magntique
Courant lectrique
Bras fer-nickel
d < 1mm
Support magntisable
1 0 0 1 0 1

Secteur Pistes

Tte
Sens de rotation

Figure 8.12 Structure dun disque magntique.


8.3 Mmoires de stockage : le disque magntique 183

contenant pas de bits, constituant le gap inter secteur. Lopration de formatage consiste
organiser le disque en pistes et secteurs. Ainsi la capacit de stockage dun disque
format est infrieure la capacit dun disque non format (figure 8.12).
Chaque piste a une largeur de quelques microns (un micron = un millime de mm).
Un bit sur une piste a une largeur de quelques dizaines de microns. Cette largeur dpend
essentiellement de la largeur de la tte de lecture. Sur les disques courants on dnombre
de 800 2 000 pistes par centimtre.
On appelle densit denregistrement le nombre de bits par millimtre. Cette densit
est variable selon la qualit des disques et peut varier entre 50 000 et 100 000 bits
par centimtre.
Les pistes sont des cercles concentriques et donc la longueur des pistes nest pas
constante, elle dpend de lloignement de la piste par rapport au centre du plateau.
Ainsi les secteurs ne sont pas de longueur constante ce qui pose un problme si lon
veut que chaque secteur ait une capacit constante (chaque secteur contient le mme
nombre de bits). Pour remdier cela on peut avoir une densit denregistrement qui
dpend de la piste : elle est plus faible pour les pistes les plus proches du bord, plus
forte pour les pistes proches du centre. Ainsi lorsquon parle de densit denregistre-
ment on parle de densit moyenne correspondant la densit denregistrement des
pistes mdianes. Une autre solution consiste avoir un nombre de secteurs par piste
variable en fonction de la piste : les pistes externes contiennent plus de secteurs que
les pistes proches du centre. Cette technique plus complexe implanter donne une
plus grande capacit de stockage.
Les secteurs ont le plus frquemment des capacits de stockage de 512 ou 1 024 octets.
Les ttes de lecture/criture sont portes par des bras qui se dplacent radialement de
lintrieur vers lextrieur et inversement. Entre chaque piste existe un espace inter
piste. Un disque magntique est gnralement constitu de plusieurs plateaux ayant
tous le mme nombre de pistes. On appelle cylindre lensemble des pistes situes la
mme distance de laxe de rotation du disque.

Adresse dune donne


En mmoire centrale une information est repre par ladresse du mot la contenant.
Sur un disque magntique ladresse dune information est un triplet : numro de
cylindre, numro de bras, numro de secteur. Lire une donne consiste donc trouver
Dunod La photocopie non autorise est un dlit.

ladresse de dbut dun secteur et dclencher la lecture du secteur. On trouve ensuite


la donne prcise en analysant le contenu du secteur. Cest le systme dexploitation
au travers du systme de gestion des fichiers (SGF) qui grent les adresses physiques
des informations stockes.

Temps daccs une information


Trouver une information consiste dabord positionner le bon bras sur le bon cylindre :
cest lopration de dplacement du bras caractrise par le temps de dplacement
du bras. La piste adquate est alors slectionne. Il faut ensuite trouver le bon secteur.
Le temps de positionnement de la tte sur le bon secteur est variable : soit le dbut
184 8 La fonction de mmorisation

du secteur cherch est juste sous la tte et le temps de positionnement est nul, soit le
dbut du secteur vient de passer sous la tte et il faut faire un tour de disque complet
pour retrouver le dbut du secteur cherch. On parle donc gnralement de temps
moyen de positionnement de la tte, ce temps moyen correspond un demi-tour de
disque. Le temps de latence rotationnel mesure le dlai pour que la tte de lecture
soit place sur le dbut du bon secteur (figure 8.13).

tb : temps de dplacement du bras


Donnes transfrer
tt : temps de positionnement de la tte
td : temps de transfert des donnes
tb tt
td

temps dune opration dentres-sorties : tb + tt + td


actuellement tb + tt = ~ 10 ms
Environ 100 1 000 pistes (sur 5 cm)
Rotation 3 000 7 500 tours/mn (= 50 100 tours/s)

Figure 8.13 Temps daccs une information.

Enfin, il faut lire (crire) le contenu du secteur. Le temps de lecture (criture) est
caractris par la vitesse de transfert de linformation ou dbit. Cette vitesse dpend
de la densit denregistrement et de la vitesse de rotation du disque. Les vitesses
classiques de rotation sont de 5 400 et 7 200 tours/minute. Les dbits types sont de
lordre de 5 20 Mo/s. Ce sont donc les temps de dplacement et de positionnement
de la tte qui pnalisent le plus les performances dun disque magntique.
Pour avoir de bonnes performances il apparat clairement quil ne faut pas que les
informations soient stockes dans des secteurs alatoires du disque. Il faut essayer
de regrouper les donnes dans des secteurs contigus. Lusage du disque induit nces-
sairement une fragmentation qui correspond au fait que linformation est distribue
alatoirement sur le disque. Lopration de dfragmentation consiste utiliser un
logiciel permettant de rorganiser le disque de manire ce que les donnes soient
places des adresses contigus.

8.4 AMLIORATION DES PERFORMANCES


8.4.1 Les mmoires caches
Les performances (vitesse) des processeurs augmentent sans cesse. Les performances
des mmoires augmentent galement mais surtout en matire de capacit de stockage
et beaucoup moins en ce qui concerne les temps daccs. La frquence dun proces-
seur est aujourdhui facilement de lordre de 1 GHz (1 000 MHz) ce qui signifie quil
8.4 Amlioration des performances 185

peut engendrer des actions 109 fois par seconde. Une mmoire DRAM dont le temps
daccs est de 20 nanosecondes pourra fournir 5 107 informations par seconde.
Lcart est donc considrable et le processeur ne fonctionne pas au meilleur rythme.
Les mmoires SRAM ont une densit dintgration trop faible et un cot trop lev
pour constituer des mmoires centrales de grandes capacits.
Dans une architecture de machine de type Von Neumann (qui correspond nos
machines) les changes, entre le processeur et la mmoire, sont trs nombreux puisquun
programme et ses donnes doivent tres placs en mmoire centrale afin dtre excuts
par le processeur. On sait techniquement raliser des mmoires trs rapides, qui ne
pnaliseraient pas le processeur, mais condition quelles soient places trs prs du
processeur. En effet cest souvent le temps de transfert par le bus qui est un facteur
de ralentissement.
On peut envisager plusieurs solutions pour amliorer les performances :
augmenter la frquence des mmoires, ce qui amliorerait la bande passante. On
constate cependant que cette volution est lente;
augmenter la largeur du bus, ce qui augmenterait aussi la bande passante mais qui
nest pas facile raliser, cause en particulier de lencombrement;
rduire les besoins en bande passante pour le processeur. Cest ce qui est fait avec
lutilisation des mmoires cache (antmmoire).

Principe de fonctionnement
Le principe est de faire cooprer des mmoires de faible capacit, trs rapides et
proximit du processeur avec des mmoires plus lentes et de grandes capacits
(figure 8.14). Les mots de mmoire centrale les plus frquemment utiliss sont placs
dans le cache. Le processeur cherche dabord le mot dans le cache, sil est prsent il
lobtient rapidement. Si le mot nest pas prsent, le processeur fait un accs la
mmoire centrale (plus lente) et place ce mot dans le cache. Ultrieurement si ce mot
est demand il sera obtenu plus rapidement.

Processeur Mmoire Mmoire Centrale


Registres Cache
Dunod La photocopie non autorise est un dlit.

Bus local

SRAM DRAM

Bus

Figure 8.14 Hirarchie de mmoires.


186 8 La fonction de mmorisation

Il faut distinguer la lecture et lcriture dun mot. Le principe de fonctionnement


pour la lecture dun mot est dcrit par lalgorithme :
si mot prsent
alors charger processeur avec le mot;
sinon
si cache plein
alors charger cache(remplacer);
charger processeur;
sinon
charger cache;
charger processeur;
finsi
Le processeur cherche dabord si le mot mmoire adress est dans le cache (mot
prsent). Si linformation est prsente on parle de succs (cache hit). Le cache est de
petite taille et ne contient pas toute linformation de la mmoire centrale : linforma-
tion peut donc ne pas tre dans le cache, on parle alors dchec (cache miss). Dans ce
dernier cas, il faut aller chercher linformation dans la mmoire centrale et placer
celle-ci dans le cache (charger cache) avec ventuellement un remplacement dinfor-
mations actuellement prsentes dans le cache puisque le cache est de taille finie
(charger cache (remplacer)). Enfin, le processeur est charg avec linformation main-
tenant disponible dans le cache.
Lefficacit du cache dpend donc de son taux de succs et donc de la probabilit
de prsence dans le cache du mot cherch. Aprs un chec le cache est charg avec le
mot manquant, ainsi si ce mot est redemand ultrieurement, il sera obtenu confor-
mment au temps daccs du cache (donc plus rapidement que sil tait en mmoire
centrale).
Un programme ne sexcute pas de manire alatoire : de nombreuses tudes
statistiques montrent que lorsquune instruction rfrence une adresse il est trs
probable que la rfrence mmoire qui suit soit dans le voisinage de cette adresse.
En effet les programmes travaillent sur des informations organises par des structures
de donnes (exemple les tableaux) qui les placent dans des adresses mmoires trs
proches les unes des autres (ces adresses sont contigus dans le cas des tableaux).
Par ailleurs les instructions dun programme sont places dans des mots mmoires
contigus et le flux dexcution se fait squentiellement (instruction aprs instruction)
sauf dans le cas de branchements ou de droutements.
Ainsi quand une instruction sexcute, il est trs probable que la prochaine instruc-
tion excuter soit dans le mot suivant de la mmoire : cest le principe de localit
spatiale. Ce principe nous conduit penser que lorsquune donne ou une instruction
doit tre charge dans un cache il serait intressant de charger galement les donnes
(et/ou instructions) qui sont proches en mmoire. On augmente ainsi la probabilit
que le processeur trouve la prochaine donne (ou instruction) dans le cache.
Les programmes font beaucoup ditrations et les donnes qui y sont traites sont
trs souvent utilises dans de courts laps de temps (une variable qui pilote une boucle
8.4 Amlioration des performances 187

sera trs souvent utilise et il est intressant quelle soit place dans le cache). Aussi,
lorsque le processeur rfrence un mot donn, il existe une trs forte probabilit que
le processeur rfrence de nouveau ce mot dans les instants qui suivent. Cest le prin-
cipe de localit temporelle.
Ces deux principes de localit sont la base des systmes utilisant les caches.
Si Teff est le temps effectif pour accder une information, h la probabilit de
prsence de linformation dans le cache, Tc le temps daccs au cache et Tm le temps
daccs la mmoire centrale, le temps daccs effectif sexprime par :
Teff = h Tc + (1 h) Tm
Si par exemple Tm/Tc = 10 (le temps daccs du cache est dix fois plus petit que
celui de la mmoire centrale) on montre facilement quune variation de 1 % de h
entrane une variation de 10 % de Teff.
Ce rsultat montre quil faut soigneusement organiser les caches afin daugmenter
la probabilit de prsence dune information dans le cache et ainsi diminuer le temps
effectif daccs linformation.
Lorsque le processeur doit crire un rsultat il doit accder la mmoire cache
pour vrifier si linformation est prsente dans le cache et ventuellement la modifier.
La mmoire cache ne contient pas toutes les informations de la mmoire centrale
mais cette dernire contient toutes les informations du cache et il faut maintenir la
cohrence des informations entre le cache et la mmoire principale. Une criture
dans le cache modifiant une information doit donc entraner la modification de cette
information dans la mmoire centrale.
Lalgorithme suivant dcrit le fonctionnement dune criture :
si mot prsent
alors
modifier cache;
modifier mmoire principale;
sinon
modifier mmoire principale;
finsi
Quand on doit modifier le cache il faut modifier la mmoire principale. Il existe
plusieurs techniques pour raliser cette modification :
Dunod La photocopie non autorise est un dlit.

criture immdiate (Write through). On crit simultanment dans le cache et la


mmoire principale. On garantit donc la cohrence;
criture diffre (Write back). Il y a l encore plusieurs techniques. On peut mettre
jour la mmoire centrale quand linformation de la mmoire cache doit tre
remplace ou ds que le bus de communication est libre. Dans ces techniques on ne
garantit pas en permanence la cohrence, mais le temps dcriture est plus faible.

Organisation et fonctionnement : gnralits


Le principe de localit suggre de considrer la mmoire centrale comme une suite
de blocs mmoires : les lignes de mmoires. Dans notre exemple (figure 8.15) la
188 8 La fonction de mmorisation

mmoire centrale est organise en ligne de 4 mots. Ladresse du premier mot de la


premire ligne est 000, ladresse du premier mot de la deuxime ligne est 004.
Ladresse de c est 022 que lon peut voir comme le numro de ligne 020 et un
dplacement (offset) de 2 mots.

Mmoire Centrale
Mmoire cache
Cl 000
Mot 004
008
Comparateur

012
Lignes 016
020 a b c d 020 a b c d
024
028
Rpertoire Mmoire utile 032
Mmoire des cls Information associe la cl

Figure 8.15 Organisation de la mmoire centrale en lignes mmoires.

Fonctionnellement la mmoire cache est organise autour dun rpertoire de cls,


de comparateurs et de la mmoire utile qui contient linformation. La mmoire utile
comprend un certain nombre de lignes de mme taille que les lignes de la mmoire
centrale : ce sont les lignes de cache. Le rpertoire des cls a autant dentres quil y
a de lignes de cache, une cl est un numro de ligne de mmoire. Lorsquun numro de
ligne est prsent dans le rpertoire alors la ligne de cache associe la cl contient
les valeurs de la ligne de mmoire correspondante. Dans lexemple puisque 020 est
dans le rpertoire alors les mots mmoire de la ligne 020 sont dans le cache.
Lors dune opration de lecture, par exemple le processeur veut acqurir c
cest--dire le contenu du mot dadresse 022, le processeur doit vrifier si c est
prsent dans le cache. Pour cela ladresse est prsente au(x) comparateur(s) qui
vrifie si 020 est dans le rpertoire. Si cest le cas la donne est prsente dans le
cache. Si ce nest pas le cas le cache est charg avec la ligne 020 et le rpertoire est
mis jour. Charger une ligne et non pas uniquement la donne cherche permet de
prendre en compte le principe de localit.
Il y a plusieurs manires de construire des caches qui correspondent ce schma
fonctionnel et plusieurs facteurs sont dterminants pour une bonne conception dun
cache :
la taille. Plus le cache est gros, plus il est efficace mais aussi plus coteux;
la longueur des lignes de cache. Pour une taille de cache (mmoire utile) donne
il y a plusieurs manires de choisir le nombre et la longueur des lignes de cache;
le mode de gestion du cache. Les caches sont accs trs rapides mais linformation
que lon souhaite obtenir nest pas ncessairement prsente dans le cache (contrai-
rement ce qui se passe dans une mmoire centrale). Aussi pour obtenir une infor-
8.4 Amlioration des performances 189

mation il faut dabord vrifier si elle est prsente. Pour que le cache soit efficace,
lorganisation et la conception des caches doivent minimiser ce temps de vrification;
le nombre et la localisation du ou des caches.

Les diffrents types de cache


Cache direct
Il sagit du cache le plus simple, il est galement appel cache correspondance
directe. La figure 8.16, dans laquelle pour des raisons de simplicit dcriture, nous
adoptons une notation dcimale, donne un exemple dun tel cache. Ainsi la mmoire
centrale a une capacit de 10 000 mots dont les adresses voluent de 0000 9999.
En notation dcimale il suffit de 4 symboles pour reprsenter cet espace dadressage.
Dun point de vue fonctionnel la mmoire centrale est vue comme une suite de lignes
composes chacune 10 mots.

Index 00 0 0
tiquette
Offset 00 1 0
00 2 0
Load D, R 0 2 1 5

0 01 02 0 0
1 02 a b c d e f g h i j 02 1 0a b c d e f g h i j
2 02 02 2 0
02 3 0
3 02
02 4 0
4 00
5 99
6 03 02 9 0
7 03 0 0
00
03 1 0
8 99
9 04
Rpertoire Mmoire Utile 99 9 0

Comparateur Mmoire centrale


Dunod La photocopie non autorise est un dlit.

Figure 8.16 Cache correspondance directe.

Le cache est organis autour :


de la mmoire utile. Elle contient les donnes. Chaque ligne a une longueur de
10 mots. Il y a 10 lignes;
un rpertoire de 10 lignes. Chaque ligne comprend un bit de validit qui indique si
des donnes valides sont disponibles dans cette ligne ainsi quune cl permettant
didentifier prcisment une ligne;
un comparateur qui vrifie si la valeur dtiquette de ladresse est gale la cl.
190 8 La fonction de mmorisation

Chaque ligne du cache comprend donc un bit de validit, une cl et une ligne de
donnes.
Lorsquune adresse est prsente au cache, le contrleur de cache dcompose
cette adresse en trois parties : lindex, ltiquette et loffset. Lindex repre une entre
du cache, tandis que loffset repre un mot lintrieur dune ligne de cache. Notre
exemple comprend dix lignes de cache, il suffit donc dun seul symbole pour rf-
rencer toutes les entres du cache. Par ailleurs, comme il y a 10 mots par ligne, il
suffit de mme dun seul symbole pour numroter tous les mots dune ligne de cache.
Comme ladresse est code sur 4 symboles, il reste 2 symboles pour fixer la valeur
de ltiquette. Pour vrifier si une donne est dans le cache le contrleur de cache
extrait la valeur dindex de ladresse et le comparateur vrifie que lentre pointe
par lindex contient bien ltiquette. Si cest vrai alors la donne est prsente dans la
mmoire utile.
Le fonctionnement de ce cache est rsum par lalgorithme :
si rpertoire[index] = tiquette
alors
charger le processeur avec mmoire_utile[index, offset];
sinon
sauvegarder mmoire_utile[index] dans la mmoire centrale;
rpertoire[index] = tiquette;
charger mmoire_utile[index] partir de la mmoire centrale;
charger le processeur avec mmoire_utile[index, offset];
finsi
Supposons maintenant que le cache soit celui de lexemple et que dans ces condi-
tions le processeur excute le programme suivant :
1. Load D, R, 0215
2. Load D, R, 0212
3. Load D, R, 0114
4. Load D, R, 0225
5. Load D, R, 0116
Linstruction 1 aboutit un succs (hit) puisque rpertoire[index] (02) vaut
etiquette (02). Dans ce cas, laccs linformation est donc plus rapide que si linfor-
mation avait t dans la mmoire centrale. Linstruction 2 aboutit galement un
succs. Linstruction 3 aboutit un chec (miss). La ligne de mmoire centrale 011
remplace la ligne de cache indexe par 1 et la ligne de rpertoire indexe par 1 reoit 01
(tiquette). Dans ce cas, laccs linformation est plus lent que si lon avait directe-
ment adress la mmoire centrale. Mais comme on a charg une ligne complte de
mmoire le principe de localit nous indique quil y a toutes les chances que pour les
prochaines instructions du programme aboutissent des succs. De plus le temps de
chargement dune ligne en continue est plus petit que la rptition des chargements
mot par mot. Linstruction 4 aboutit un succs ainsi que linstruction 5.
8.4 Amlioration des performances 191

Le dfaut principal de ce cache est quil peut exister des collisions : cest ce qui sest
produit lors de lexcution de linstruction 3. Les adresses 001x, 021x, 031x, etc.
produisent des collisions puisquelles ont toutes la mme valeur dindex (1) et donc
rfrencent la mme ligne de cache. Un cas trs dfavorable est celui o lon ne fait
( cause des collisions) que charger des lignes de caches, car les accs sont systma-
tiquement en collision. Dans ce cas le cache serait plus lent que la mmoire centrale.
Ce cache est simple, facile raliser et donne de bons rsultats. Cest le cache le plus
commun dans nos machines.

Cache purement associatif

Ce type de cache est plus complexe et plus cher construire. Il y a autant de compa-
rateurs que de lignes de cache. Le chargement dans le cache dune ligne de mmoire
nest pas fix par une valeur dindex comme dans le cas du cache direct, cest--dire
quune ligne de donnes entre dans nimporte quelle entre libre du cache. Ladresse
est interprte comme une tiquette et un offset. Le contrleur de cache vrifie en
une seule opration (cest pourquoi il y a autant de comparateurs que de lignes) si
une tiquette est prsente dans une des lignes du rpertoire. Si la rponse est un
succs cest que la donne cherche est dans la mmoire utile.

Etiquette Offset
0000
Load D, R 0 2 3 5 0010
0020

0 001
1 003 0220
2 022 0230 a b c d e f g h i j
3
4 023 a b c d e fgh i j
5
6
7 000
8 998
9 9970
Dunod La photocopie non autorise est un dlit.

9980
Rpertoire Mmoire Utile 9990
Comparateurs Mmoire centrale

Figure 8.17 Cache purement associatif.

Ainsi sur la figure 8.17, la recherche dans le cache du mot dadresse 0235 est un
succs. Ltiquette 023 est prsente au rpertoire du cache et la comparaison aboutit
dlivrer la ligne 4 du cache comme tant celle contenant le mot cherch. Loffset 5
permet de rcuprer effectivement le mot f .
192 8 La fonction de mmorisation

Le principe de fonctionnement est dcrit par lalgorithme :


si rpertoire contient tiquette
alors
information trouve;
charger le processeur;
sinon
si rpertoire plein
alors
algorithme de remplacement de ligne;
remplir la ligne choisie;
charger le processeur;
sinon
remplir une ligne libre;
charger le processeur;
finsi
finsi
Cette gestion est plus complexe que dans le cas du cache direct. Dans le cas dun
chec une ligne de mmoire doit tre charge dans le cache mais contrairement au
cache direct on ne connat pas le numro de la ligne du cache dans laquelle linfor-
mation doit tre place. Il faut donc vrifier si le cache est plein, et dans ce cas il faut
excuter un algorithme permettant de choisir la ligne remplacer. Cest le cas le plus
dfavorable et les performances de lalgorithme sont critiques pour que le cache soit
efficace : ainsi il ne faut pas que lon remplace la ligne qui va tre utilise immdia-
tement aprs son remplacement.
Algorithmes de remplacement de lignes
Il existe diffrents algorithmes de remplacement de lignes. Les principaux sont :
FIFO (First In, First Out) : dans ce cas, la ligne remplace est la ligne la plus
anciennement charge;
LRU (Least Recently Used) : dans ce cas, la ligne remplace est la ligne la moins
rcemment accde. Cette politique est meilleure que la prcdente car elle tient
compte des accs effectus par le processeur au cache, mais elle est coteuse car
ncessite de maintenir lordre des accs raliss;
NMRU (Not MostRecently Used) : la ligne remplace nest pas la plus rcem-
ment utilise. Dans cette politique, la ligne remplace est une ligne choisie au
hasard dans lensemble des lignes du cache, hormis la ligne la plus rcemment
accde.
La dernire politique offre de bonnes performances et est couramment mise en
uvre dans les caches associatifs.
Cache mixte
Le cache mixte (figure 8.18), utilis dans certains de nos micro-ordinateurs, utilise
les techniques des deux caches prcdents. Le cache est divis en blocs grs comme
8.4 Amlioration des performances 193

des caches directs et il existe un comparateur par bloc. Lorsquune adresse est prsente
au cache, lindex rfrence simultanment une ligne par bloc et en une seule opra-
tion les comparateurs vrifient si ltiquette est dans une des lignes. En cas dchec,
la ligne de mmoire correspondante doit tre charge dans une des lignes rfrences.
Il faut donc utiliser un algorithme de remplacement pour choisir laquelle des lignes
remplacer, si celles-ci sont toutes occupes.
Le fonctionnement de ce type de cache est dcrit par lalgorithme :
si rpertoires[index] contient tiquette
alors
charger memoire_utile[bloc, index, offset] dans le processeur;
sinon
choisir bloc pour remplacer ligne;
remplacer ligne dans bloc choisi;
charger mmoire_utile[bloc choisi, index, offset] dans le
processeur;
finsi

tiquette Index Offset

Bloc 1

Bloc 2
Dunod La photocopie non autorise est un dlit.

Bloc 3

Figure 8.18 Cache mixte.

Nombre et localisation des caches


Lobjet des caches est damliorer la bande passante de la mmoire afin daugmenter
la quantit dinformations transfre au processeur par unit de temps. Une des
manires de raliser cet objectif est daugmenter la frquence des mmoires (dimi-
194 8 La fonction de mmorisation

nuer les temps daccs) mais aussi damliorer la qualit des transferts entre proces-
seur et mmoire. Dans cet esprit lide est de rapprocher le plus possible la mmoire
du processeur afin de diminuer les dlais dacheminements, lidal tant de placer la
mmoire dans la puce du processeur. Malheureusement les mmoires rapides ont un
faible degr dintgration et on ne peut pas loger des mmoires rapides de grande
capacit dans la puce du processeur. Une hirarchie de mmoires est donc mise en
place sur trois niveaux :
le premier niveau de mmoire cache, petite et trs rapide, est plac dans le
processeur;
le deuxime niveau, de capacit plus importante et daccs galement rapide, est
mis lextrieur du processeur;
le troisime niveau est constitu par la mmoire centrale (figure 8.19).
Le premier niveau est dsign sous le vocable de cache de niveau 1, le second niveau
constitue quant lui le cache de niveau 2. Les caches de niveau 1 et 2 sont relis par
un bus local priv trs rapide afin de diminuer les temps de transferts entre ces
caches. Le processeur cherche dabord la donne ou linstruction dans le cache de
niveau 1, en cas dchec linformation est cherche dans le cache de niveau 2, enfin
dans la mmoire centrale en cas dchec au niveau 2. Un bon fonctionnement implique
que toute linformation du cache 1 se retrouve dans le cache de niveau 2 et que linfor-
mation du cache de niveau 2 est dans la mmoire centrale.

Processeur
Cache de niveau 1 Cache de niveau 2 Mmoire centrale

SRAM

Bus local
Instructions
DRAM
Donnes

Bus

Figure 8.19 Diffrents niveaux de caches.

Le plus souvent, au niveau 1, il existe deux caches spars, un pour les instructions
et un pour les donnes. Ces deux caches fonctionnent en paralllisme total et profi-
tent au maximum des techniques de pipeline que lon trouve sur les ordinateurs
modernes. Le cache de niveau 2 est unique et mlange donnes et instructions.
8.4 Amlioration des performances 195

8.4.2 Mmoire virtuelle


Jusqu prsent nous avons implicitement (et explicitement) fait lhypothse que le
programme machine tait intgralement prsent dans la mmoire centrale. Ceci impose
donc que la taille du programme soit plus petite que la taille de la mmoire physique.
Cette hypothse implique que le compilateur ou le chargeur (voir chapitre 1, Du
problme au programme machine) attribue chaque donne ou instruction une adresse
physique en mmoire centrale. Il nest pas toujours possible de tenir cette hypothse,
ni mme souhaitable en terme defficacit. Nous avons vu que le processeur est
ralenti par les autres modules de lordinateur (temps daccs la mmoire centrale
mais aussi gestion des entres-sorties) et nest donc pas toujours utilis au mieux.
Une manire damliorer les performances globales est de permettre plusieurs
utilisateurs (plusieurs programmes machines) placs simultanment en mmoire de
se partager le processeur. Pour utiliser le processeur les instructions machine des
programmes doivent tre en mmoire centrale mais la totalit des instructions de
tous les programmes peuvent ne pas tre simultanment en mmoire centrale. Ainsi
lintgralit de tous les programmes peut ne pas tre prsente en mmoire en mme
temps. Permettre le partage du processeur entre plusieurs programmes cest donc
permettre le partage de la mmoire centrale entre des parties de programmes prsentes
simultanment en mmoire centrale. Dans cette hypothse ni le compilateur ni le
chargeur ne peuvent a priori attribuer aux donnes et aux instructions une adresse
physique en mmoire centrale. On est amen sparer lespace dadressage du
programme et lespace dadressage physique en dfinissant des adresses virtuelles
pour les instructions et les donnes. Cette adresse virtuelle ne dpend que de
lespace dadressage du programme et ne tient pas compte de ladressage physique
(rel) de la mmoire centrale. Cest seulement au moment de lexcution dune
instruction, et non pas au moment de la compilation ou du chargement, que la corres-
pondance adresse virtuelle , adresse physique est tablie. Pour dfinir une adresse
virtuelle on peut considrer le programme comme une suite de blocs, chaque bloc
tant rfrenc par un numro. Ladresse virtuelle dun mot de programme (figure 8.20)
est alors dfinie par le doublet {numro de bloc, dplacement dans le bloc} :
adresse_virtuelle = numro_de_bloc + dplacement dans le bloc.
Dans notre hypothse tous les blocs dun programme ne sont pas tous ncessaire-
ment prsents en mmoire centrale. Dans lespace dadressage du programme nous
Dunod La photocopie non autorise est un dlit.

appelons les blocs, des blocs logiques. Quand un bloc logique est prsent en
mmoire principale il correspond un bloc physique. Le bloc physique a la mme
taille que le bloc logique, il est implant en mmoire centrale ladresse,
adresse_dbut_bloc . Pour dterminer ladresse effective (physique) dun mot
partir de son adresse virtuelle, on dispose, pour le programme, dune table de corres-
pondance (table_des_blocs) qui a autant dentres quil y a de blocs logiques. Pour
chaque entre on trouve un indicateur de prsence ou dabsence du bloc logique en
mmoire (existence du bloc physique correspondant au bloc logique) et dans le cas
de la prsence du bloc physique, ladresse physique du dbut de ce bloc, soit
adresse_dbut_bloc (figure 8.20). Dans ces conditions :
196 8 La fonction de mmorisation

Programme

Mmoire centrale
0
0
Load D, R, {4,2} Table_des_blocs 1
1 2
0 0 3
2 Load D, R, {4,2} 4
1 1 4 1
5
2 0 6
3
7
3 0
8
4 4 1 8 9
6 4 10
6
11

Adresse _virtuelle : {4,2} Adresse_physique : 10

Figure 8.20 Adresse virtuelle.

adresse _physique = table_des_blocs[numro_de_bloc_logique, 1] + dplacement


Dans notre exemple (figure 8.20) le programme a une taille de 14 mots. Il est
organis en 5 blocs numrots de 0 4. La mmoire physique a une taille de 11 mots
et contient deux blocs logiques (1 et 4). Le bloc logique 1 est implant ladresse
physique 4 et le bloc logique 4 ladresse physique 8. La table table_des_blocs
traduit cette implantation. Dans ces conditions linstruction Load D, R, {4, 2} est charge
en mmoire centrale (donc excutable) et la donne 6 place ladresse 10 est
accessible par cette instruction.
Pour tablir la correspondance adresse virtuelle , adresse physique le mca-
nisme de gestion de la mmoire virtuelle utilise un module matriel (figure 8.21) : le
MMU (Memory Management Unit). Ce module reoit en entre une adresse virtuelle
et convertit cette adresse en une adresse physique en utilisant la table table_des_blocs
associe au programme en cours dexcution.
Le fonctionnement du MMU est dcrit par lalgorithme suivant : en entre le MMU
reoit une adresse virtuelle {numro_de_bloc_logique, dplacement} et en sortie il
produit une adresse physique.
dbut
si table_des_blocs [numro_de_bloc_logique, 0] = 0
alors
dfaut de bloc physique;
lire bloc_logique sur disque;
si place libre en mmoire physique
8.4 Amlioration des performances 197

Adresse _virtuelle {4,2}

Transforme une adresse virtuelle


MMU en une adresse physique
Memory Unit Management en utilisant la table des blocs
associe au programme

Adresse_physique 10

Figure 8.21 Fonctionnement de la MMU.

alors
charger bloc_logique;
sinon
algorithme de remplacement dun bloc;
modifier la table table_des_blocs;
finsi
finsi
calculer adresse_physique;
fin
Lorsquun bloc logique nest pas prsent en mmoire (dfaut de bloc physique)
le MMU produit un droutement vers le systme dexploitation (interruption logi-
cielle) qui examine la place disponible en mmoire centrale. Sil ny a pas de place
pour charger le bloc logique ncessaire la poursuite de lexcution, le systme
dexploitation excute alors un algorithme de remplacement de bloc.
Il y a plusieurs choix possibles pour linstallation physique du module MMU, soit
lintrieur de la puce processeur, soit lextrieur. La figure 8.22 donne un exemple
Dunod La photocopie non autorise est un dlit.

dimplantation.
Dans cet exemple, une adresse virtuelle, est prsente au MMU. Il en dduit une
adresse physique qui est prsente au cache de niveau 1. Cest alors le mcanisme de
gestion du cache qui prend le relais pour charger linformation demande dans le
cache si elle nest pas prsente. Cette implantation nest pas forcment la plus efficace
puisqu chaque adresse virtuelle on fait rfrence au MMU alors quil est possible
de prvoir si une information est prsente ou non dans le cache. De plus le MMU, pour
calculer ladresse physique, fait rfrence la table des blocs relative au programme
en cours dexcution. La localisation de cette table est trs importante : si elle est en
mmoire centrale le calcul de ladresse physique implique un accs la mmoire et
198 8 La fonction de mmorisation

Processeur
Cache de niveau 1 Cache de niveau 2 Mmoire centrale

SRAM

Bus local
Instructions
MMU DRAM
Donnes

Bus

Adresse virtuelle Adresse physique

Figure 8.22 Implantation du module MMU dans le processeur.

donc ralentit le processus dexcution. Il est prfrable de placer ce type de table


dans le cache afin daccder son contenu le plus rapidement possible.
Le mcanisme de gestion de mmoire virtuelle nest pas conceptuellement diff-
rent du mcanisme de gestion des caches. La diffrence porte essentiellement sur
limplantation de ces mcanismes. Par exemple dans le cas des caches les algorithmes
de remplacement sont pris en charge par le matriel (algorithme hardware) alors que
pour la mmoire virtuelle cette gestion est logicielle (prise en compte par le systme
dexploitation).
Il y a plusieurs mcanismes possibles pour la gestion de la mmoire virtuelle,
taille des blocs fixe ou variable, implication des programmeurs ou transparence au
niveau de la programmation, implication de modules matriels ou non. Ces ques-
tions dimplantation du mcanisme de gestion de la mmoire virtuelle sont dtailles
dans le chapitre relatif aux systmes dexploitation traitant de la gestion de la mmoire.

8.5 COMPLMENTS : APPROCHES CISC/RISC


Lobjectif de ce complment sur les approches CISC et RISC est dclairer les diff-
rences les plus marquantes concernant ces deux types de processeurs et de montrer
les architectures matrielles quils engendrent. Il ne sagit pas de faire une compa-
raison exhaustive, encore moins des mesures comparatives, de ces deux classes de
processeurs mais plutt de dgager les raisons principales expliquant cette volution
du CISC au RISC.
Dans une premire priode les volutions technologiques ont permis aux architectes
daugmenter les fonctionnalits et les performances des processeurs et des ordina-
teurs. Ces volutions ont conduit une architecture typique comportant un petit nombre
8.5 Complments : approches CISC/RISC 199

de registres, des modes dadressage varis et complexes, enfin un grand nombre


dinstructions dune grande complexit. Les gros ordinateurs tels que les IBM370 et
les VAX sont reprsentatifs de ces volutions et illustrent ce que lon appelle lapproche
CISC (Complex Instruction Set Computer).
Dans les annes soixante-dix, larchitecture CISC est rsume par un certain nombre
de rgles de conception nonces par Patterson et dcrite par tiemble :
comme la technologie mmoire utilise pour la microprogrammation crot trs
vite, il ne cote rien ou presque dutiliser de trs gros microprogrammes ;
comme les micro-instructions sont beaucoup plus rapides que les instructions
machines, le transfert de fonctions logicielles au niveau microcode acclre le
processeur et rend les fonctions plus fiables ;
puisque la vitesse dexcution est proportionnelle la taille du programme, les
architectures qui diminuent la taille des programmes acclrent les processeurs ;
les registres sont dmods et rendent difficiles la ralisation des compilateurs.
Les piles ou les architectures mmoire mmoire sont des modles dexcution
suprieurs .
Dans ce type darchitecture, le contrle (squenceur de lunit de commande) est
microprogramm : la complexit des instructions machines justifie ce choix en parti-
culier pour la mise au point efficace des squenceurs. Le microprocesseur Motorola
68000 32 bits implante une puce VLSI (Very Large Square Integration) caractris-
tique de lapproche CISC. Il se trouve que les besoins en performances croissent
plus rapidement que les volutions technologiques, phnomne qui a conduit un
rexamen des architectures des ordinateurs. En 1974, la compagnie IBM lance un
projet darchitecture qui conduira ce qui sappellera plus tard larchitecture RISC
(Reduced Instruction Set Computer). Cette architecture est caractrise par lexis-
tence de caches dinstructions et de donnes, labsence doprandes en mmoire
pour les instructions arithmtiques et logiques ; les instructions sont simples et de
longueur fixe.
Les premiers processeurs de ce type ont vu le jour Berkeley (RISC1) et Stanford
(MIPS). Le terme RISC a t introduit par Patterson pour caractriser des architec-
tures o lon cherche excuter une instruction en un cycle mmoire.
Afin de mieux comprendre lvolution du CISC vers le RISC il convient de
prciser quelques points importants concernant les performances des processeurs et
Dunod La photocopie non autorise est un dlit.

la traduction des programmes.

8.5.1 Les performances dun processeur


Elles font intervenir plusieurs facteurs : le temps dexcution dun programme, la
gestion de la mmoire (au sens des modes daccs la mmoire qui implique les
diffrents modes dadressage dont on dispose dans les instructions machines), les inter-
ruptions et les changements de contexte.
On peut caractriser le temps dexcution dun programme, Te, par :
Te = Ni * Nc * Tc
200 8 La fonction de mmorisation

Ni reprsente le nombre dinstructions excuter. Ce nombre dpend de la nature


et de la richesse du jeu dinstructions machine disponible. Cest le compilateur qui,
partir dun programme crit dans un langage de haut niveau (LHN), gnre la
squence dinstructions machines correspondant chaque instruction du LHN. Tc est
le temps dun cycle machine et Nc le nombre de cycles ncessaires lexcution
dune instruction machine. Ces facteurs dpendent essentiellement de la complexit
des instructions machines.
Ainsi amliorer les performances dun programme consiste minimiser Te donc
le produit des trois facteurs prcdents.
Lexcution dune instruction se traduit, comme nous lavons vu prcdemment,
par lensemble des tapes suivantes : fetch, modification du compteur ordinal, dco-
dage de linstruction, recherche ventuelle du ou des oprandes, excution (micro-
instructions) et rangement des oprandes.
Nous avons galement vu que plusieurs de ces tapes pouvaient tres ralises en
parallle ce qui sest traduit par limplantation de mcanismes de pipeline. Ainsi les
approches CISC et RISC pour la minimisation de Te et lutilisation du pipeline sont
diffrentes.

8.5.2 La traduction des programmes


Pour rsoudre les problmes les programmeurs utilisent des langages de haut niveau
que les compilateurs traduisent en langage machine. Au moins deux approches sont
possibles pour cette traduction :
faire correspondre chaque structure de donnes exprime dans le langage de haut
niveau un mode dadressage adapt dans le langage machine, cest lapproche CISC;
nimplanter en machine que les mcanismes rellement utiles (dont on a statisti-
quement montr lutilit), cest lapproche RISC.

8.5.3 Approche CISC


Cette approche se caractrise par :
un jeu dinstructions trs riche et une grande varit de modes dadressages;
un grand nombre dinstructions;
des instructions complexes et de longueurs variables afin de rpondre la grande
varit des instructions des langages de haut niveau.
On peut tayer les raisons de ces choix par les objectifs suivants :
simplifier les compilateurs et amliorer leurs performances. Il sagit ici de rduire
la distance entre langage de haut niveau et langage machine. On passe plus faci-
lement dune instruction en langage de haut niveau la squence correspondante
dinstructions machine;
un jeu dinstructions riche et ralisant des fonctions complexes permet de rduire
la taille du programme machine et donc dconomiser de la place en mmoire
principale.
8.5 Complments : approches CISC/RISC 201

Quelques consquences de ces choix :


les instructions, pour traduire facilement la complexit du langage de haut niveau,
sont de longueurs variables et oprent souvent sur un seul oprande en mmoire.
Cela implique des modalits de gestion complexe et coteuse en accs mmoire;
un grand nombre de modes dadressages est ncessaire pour caractriser la richesse
des structures de donnes des LHN.
Lapproche CISC se caractrise par une volont de rendre indpendant le matriel
(architecture interne et langage machine) et le logiciel (les langages de haut niveau).
Pour obtenir de bonnes performances avec ce type darchitecture il faut donc :
un compilateur qui permet dutiliser efficacement le jeu dinstructions machine.
Or il existe toujours plusieurs manires de passer dune instruction du langage de
haut niveau la squence dinstructions machine qui la ralise sur le matriel. Il
faut donc essayer de raliser le meilleur choix possible dans tous les cas ce qui est
difficile voire impossible. En fait des tudes statistiques montrent que les compi-
lateurs utilisent plutt les instructions simples que les instructions complexes;
la complexit des instructions et des modes dadressage implique un squence-
ment microprogramm. Ce type de squenceur occupe une surface importante qui
peut atteindre 60 % de la surface totale du composant ce qui rduit dautant la place
disponible pour implanter un plus grand nombre de registres et des mmoires caches.
Ainsi cest lexamen de la complexit des modes dadressages, des instructions rel-
lement utilises par les programmes et la complexit du squencement qui a conduit
lvolution vers lapproche RISC.

8.5.4 Approche RISC


Si dans lapproche CISC la volont tait de sparer la machine matrielle de limplan-
tation, dans lapproche RISC cest la volont dune optimisation globale (matrielle
et logicielle) qui est le moteur : on souhaite raliser des architectures efficaces pour
lexcution des programmes.
La dfinition des architectures RISC repose sur lexamen statistique de lexcution
de programmes. Ces statistiques ont port au cours des annes 70-80 essentiellement
sur ltude des instructions rellement utilises, les impacts en temps de lexcution,
Dunod La photocopie non autorise est un dlit.

les modes dadressages effectivement utiliss. Dans un langage machine on peut


classer les instructions en plusieurs types qui sont : laffectation, litration, lappel
de procdure, les branchements conditionnels et les branchements inconditionnels.
Quelques rsultats sur ces statistiques et mesures effectues par Patterson, Seguin,
Tanenbaum sont :
si lon mesure le pourcentage relatif dune classe dinstruction par rapport
lensemble des instructions utilises dans un programme il apparat que les affec-
tations avec transfert simple de donnes sont trs majoritaires (60 %);
sur les impacts en temps dexcution. Les appels de procdures reprsentent 20 %
des instructions du langage de haut niveau, 60 % du temps dexcution des instructions
202 8 La fonction de mmorisation

machine et 70 % des temps daccs la mmoire. Ce point marque limportance


de loptimisation des passages de paramtres et du nombre des paramtres;
lessentiel des rfrences mmoire porte sur des variables simples : 75 % sur des
constantes et variables scalaires. Les structures de donnes complexes sont trs
minoritaires.
Ces rsultats sont lorigine des architectures RISC que lon peut caractriser par :
une diminution de la complexit de la partie unit de commande. Le squenceur
est cbl et est donc plus rapide;
une diminution de la surface du squenceur, ce qui permet daugmenter le nombre
de registres et dutiliser des mmoires caches spares pour les instructions et les
donnes sur le composant;
une simplification des modes dadressage et des instructions do une simplifica-
tion de la compilation;
une implantation dinstructions de longueurs fixes permettant lutilisation dun
pipeline efficace.

Dfinition
La dfinition donne par M. Slater donne bien lide de cette notion doptimisation
globale : Un processeur RISC a un jeu dinstruction conu pour une excution effi-
cace par un processeur pipelin et pour la gnration de code par un compilateur
optimisant .

La traduction en terme matriel


Cette dfinition implique une pipeline efficace afin de rpondre limpratif dune
excution en un cycle machine. Lexcution efficace par un processeur pipelin
implique les caractristiques suivantes :
instruction de longueur fixe;
codage simple et homogne des instructions;
excution en un cycle machine de la plupart des instructions;
accs la mmoire uniquement par les instructions load (chargement dun mot
mmoire dans un registre) et store (placement du contenu dun registre dans un
mot mmoire);
modes dadressages simples;
branchements retards.
Au niveau de la traduction par le compilateur ces caractristiques se traduisent par
un format des instructions trois adresses et un grand nombre de registres.

8.5.5 Pour conclure sur les RISC et les CISC


Lapparition des processeurs RISC au dbut des annes quatre-vingts a t une remise
en cause trs forte de larchitecture CISC. Limportance de cette remise en cause a
eu leffet dune rvolution avec ses consquences : les anti et les pro qui se sont
8.6 Conclusion 203

assez fortement opposs. Le cot plus faible de ralisation de noyaux RISC a permis
un dveloppement industriel dont les machines SPARC et MIPS sont le reflet. Des
processeurs ayant des performances proches dune instruction par cycle machine se
sont imposs sur le march; notamment des stations de travail. Ensuite des proces-
seurs superscalaires (entre autres le RS/6000) ont permis lexcution de plus dune
instruction par cycle machine. Les processeurs RISC se sont imposs sur le march
des stations de travail, des contrleurs, des machines graphiques, des supercalcula-
teurs. Aujourdhui on retrouve des architectures RISC comme base darchitectures
de machines grand public comme Apple. En fait rien nest vraiment simple en la
matire et les processeurs architecture CISC ont souvent intgr ces volutions.
Daucuns disent que lapproche RISC a permis le dveloppement de processeurs
CISC efficaces. Les processeurs 80486 et ultrieurs dIntel et les processeurs Moto-
rola partir du 68040 intgrent le cache dans le pipeline afin de pouvoir excuter en
un cycle machine les instructions les plus frquemment utilises : on voit aujourdhui
les progrs spectaculaires des machines CISC.
Aujourdhui le pur RISC a volu. On trouve dans ces architectures des instruc-
tions complexes. On trouve galement des architectures mixtes noyau RISC avec
squenceur cbl et extension CISC squenceur microprogramm. Lapport essentiel
de lapproche RISC est la volont dune optimisation globale matriel-logiciel-systme;
en ce sens il sagit srement dune tape historique de lvolution de larchitecture
des processeurs. Il est assez vain aujourdhui de tenter de prvoir les prochaines
tapes de lvolution des architectures RISC ou de la synthse RISC/CISC; lvolution
des technologies dfinira et imposera coup sr des compromis permettant daller
vers des machines plus efficaces.

8.6 CONCLUSION
Ltude de la fonction de mmorisation nous amne prciser larchitecture mat-
rielle de notre ordinateur. La figure 8.23 reprsente cette nouvelle architecture.
On y trouve une mmoire ROM contenant des informations permanentes, typi-
quement le programme de bootstrap dont lobjet est de charger, partir du disque
magntique, le noyau du systme dexploitation qui nous permet daccder aux
ressources matrielles et logicielles de lordinateur : ces questions seront abordes
Dunod La photocopie non autorise est un dlit.

dans les chapitres consacrs aux systmes dexploitation.


La mmoire centrale est au cur de cette machine et assure la fonction de stoc-
kage du programme et des donnes utilisateur. Notre machine est dite programme
enregistr : pour tre excutable le programme doit tre plac en mmoire centrale.
Le processeur est charg de lexcution de ce programme, il le fait instruction par
instruction. Dans une premire approche nous avons considr que le programme
doit tre intgralement plac en mmoire centrale. Cette approche nest pas obliga-
toire et grce au mcanisme de gestion de la mmoire virtuelle il est possible
dexcuter un programme dont seulement une partie est dans la mmoire centrale.
Ce mcanisme repose sur lexistence de composants matriels nouveaux, en particu-
204 8 La fonction de mmorisation

lier le MMU. Ce mcanisme est pris en charge par le systme dexploitation et sera
tudi en dtail dans les chapitres concernant ltude du systme dexploitation. Ce
dispositif sappuie sur la prise en compte du systme de gestion des interruptions
partir duquel le systme dexploitation peut grer plusieurs programmes placs simul-
tanment en mmoire centrale. Cela permet une amlioration des performances
(plusieurs programmes se partagent le processeur) mais implique de grer le partage
des ressources uniques mmoire centrale et processeur. Cette gestion est assure par
le systme dexploitation.

Processeur central

MMU
Horloge

Caches
Niveau 1

Cache
Bus
Niveau 2

Mmoire centrale

Mmoire ROM Unit dchange

Figure 8.23 Architecture matrielle.

Afin damliorer les performances globales de notre ordinateur nous avons intro-
duit les mmoires caches permettant de rapprocher du processeur les informations
quil doit traiter.
Les mmoires de masse, en particulier, le disque magntique jouent un rle impor-
tant dans cette fonction de mmorisation tout particulirement pour la prise en compte
de la gestion de la mmoire virtuelle. Elles permettent galement de conserver les
donnes et les programmes au-del de larrt de lordinateur Cette architecture est
caractristique des ordinateurs actuels.
Chapitre 9

La fonction
de communication 9

Dans ce chapitre nous tudions une fonction fondamentale de nos ordinateurs : la


fonction de communication. Cette fonction recouvre toutes les activits permettant
les changes dinformations entre les priphriques, le processeur central et la
mmoire centrale. Elle recouvre ce que lon appelle gnralement la gestion des
entres-sorties. Il sagit dune fonction complexe au regard des diffrents lments
intervenant dans cette gestion qui, si elle est mal ralise est trs pnalisante pour les
performances globales dun ordinateur. Pour examiner cette fonction nous utilisons
notre machine de base (figure 9.1) qui va nous permettre de prsenter les diffrents
composants intervenants dans la gestion des entres-sorties puis de montrer les
volutions de ces modules afin dobtenir la structure moderne et efficace des ordina-
teurs actuels.

9.1 INTRODUCTION
La gestion des entres-sorties est complexe et gnratrice dun fonctionnement peu
efficace de notre ordinateur car elle implique beaucoup de modules quil faut savoir
combiner harmonieusement.

Les priphriques
Ce sont tous les dispositifs matriels permettant dassurer les changes dinforma-
tions en entre et en sortie entre lordinateur et lextrieur ou de stocker de manire
206 9 La fonction de communication

Processeur central

MMU
Horloge

Caches
Niveau 1

Cache
Bus
Niveau 2

Mmoire centrale

Mmoire ROM Unit dchange

Figure 9.1 Machine de rfrence.

permanente des informations. On y trouve clavier, souris, imprimantes, crans, modems


et pour le stockage par exemple des disques magntiques. Chaque priphrique est
pilot par un ensemble de signaux spcifiques au priphrique, et activs par lunit
dchange.

Les interfaces daccs aux priphriques


Le processeur et la mmoire centrale grent des informations numriques, les pri-
phriques sont pilots par des signaux lectriques. Les informations numriques
transitent dans lordinateur par le bus de communication. Pour crire des donnes,
par exemple sur une imprimante il faut activer un programme de gestion dentres-
sorties qui gnre un flux de bits quil dpose sur le bus de communication desti-
nation du contrleur de limprimante. la rception de ce flux de bits le contrleur
gnre des signaux lectriques destination de limprimante qui ainsi active gre la
mcanique dimpression en slectionnant, par exemple, les buses dimpression
pour une imprimante jet dencre. Le rle dun contrleur est donc de piloter un
priphrique et de grer les accs au bus afin de permettre un priphrique de
communiquer avec lordinateur. Dans la fonction dexcution nous avons vu que les
donnes manipules par le processeur doivent tres places en mmoire centrale.
Chaque donne possde une adresse mmoire permettant dy accder. Pour imprimer
9.1 Introduction 207

une donne il faut accder celle-ci en mmoire centrale (on dispose pour cela de
son adresse mmoire) et la faire parvenir via le bus au contrleur de limprimante.
Nous serons donc amens dfinir ladresse et la structure gnrale dun contrleur
lui permettant daccueillir une donne. Les signaux produire selon que lon doive
grer une imprimante, un clavier ou encore un disque magntique sont diffrents et
sont spcifiques du priphrique. Il existe donc plusieurs catgories de contrleurs.
Certains contrleurs peuvent directement accder la mmoire centrale pour effec-
tuer des changes avec les priphriques, on dit quils oprent des accs directs la
mmoire et sont identifis sous le nom de DMA (Direct Memory Access). Afin
damliorer lefficacit des changes, les ordinateurs modernes permettent deffec-
tuer des oprations dentres-sorties en parallle de lactivit du processeur central
(les oprations dentres-sorties sont ralises de manire autonome sans interven-
tion du processeur et sont dites asynchrones). la fin dune opration dentres-
sorties le contrleur gnre une interruption qui interrompt lactivit du processeur
au profit dun programme de gestion de linterruption spcifique de lopration
dentres-sorties en cours. Nous entrevoyons dj que les mcanismes mis en jeu
(asynchronisme, interruptions) lors dune opration dentres-sorties sont nombreux
et complexes.

Le processeur et la mmoire centrale


Une opration dentres-sorties fait intervenir un programme excutant des instruc-
tions spcifiques lchange et au priphrique. Ce programme, comme tous les
programmes excutables, se trouve en mmoire centrale et est excut selon le
schma dexcution tudi dans la fonction dexcution.

Le bus de communication
Le programme dentres-sorties gre les changes de donnes entre mmoire centrale
et priphrique, il utilise le bus de communication pour ces changes. La machine
prsente est une machine dite bus unique. Cette architecture a pendant longtemps
t celle de nos ordinateurs personnels, elle pose cependant des problmes deffica-
cit cause de la trs grande htrognit des performances des composants que le
bus interconnecte. Par exemple lorsquun contrleur et le processeur central souhai-
tent utiliser, au mme moment, le bus de communication pour raliser un change il
Dunod La photocopie non autorise est un dlit.

y a conflit daccs cette ressource unique. Il faut, pour rgler ce conflit, faire appel
un dispositif particulier (larbitre de bus) afin dordonnancer les demandes daccs
au bus. Dans une telle architecture la priorit est gnralement donne au contrleur
afin que lopration dentres-sorties puisse seffectuer sans perte dinformations (si
une opration dentres-sorties disque est en cours il nest pas possible de stopper
cet change, pour attribuer le bus au processeur, sans risquer de perdre des informa-
tions). Ainsi lorsquun programme est en cours dexcution il utilise sa guise le bus
mais si une opration dentres-sorties doit tre ralise, le contrleur met une
requte larbitre de bus pour signaler quun transfert de donnes est ncessaire.
Pendant cette requte le processeur est priv du bus. Ce mcanisme est appel vol
de cycle. Ce mcanisme ralentit lgrement le processeur dans lexcution dun
208 9 La fonction de communication

programme. Cette architecture est convenable, du point de vue des performances,


tant que les diffrents modules intervenants (processeur, mmoire, contrleurs) ont
t conus globalement pour fonctionner ensemble. Ces dernires annes il y a eu
une trs forte volution des performances des processeurs, des mmoires et des
units dchange. Les bus nont pas suivi la mme volution et sont donc devenus un
des facteurs importants mettant en cause les performances globales de nos ordina-
teurs. Nous examinerons plus en dtail les volutions des bus dans les nouvelles
architectures.

Le pilote
Le programme de gestion dune opration dentres-sorties est appel pilote (driver).
Le dernier lment intervenant dans la prise en compte dune opration dentres-
sorties est le programme de gestion des entres-sorties. Lorsque nous achetons une
imprimante ou un disque magntique le constructeur fournit une disquette (ou main-
tenant un CD-ROM) contenant un logiciel : le driver (ou pilote) du priphrique. Ce
logiciel connat toutes les caractristiques techniques du priphrique et est spci-
fique de ce priphrique. Ainsi un utilisateur travaillant avec un logiciel de traite-
ment de textes clique sur une icne pour dclencher limpression dun document
(fichier). Cette action sur licne dimpression permet dactiver le pilote de limpri-
mante, qui reoit les donnes (le fichier) imprimer. Le pilote gre alors limpres-
sion. Ainsi ce nest pas le logiciel de traitement de texte qui gre directement les
impressions, il connat le pilote du priphrique et lui dlgue cette tche. Le logiciel
de traitement de textes connat le pilote dimpression car ce dernier est install dans
le systme dexploitation : quand nous achetons un priphrique nous devons installer
le pilote. Ce mcanisme (dlguer le traitement des entres-sorties un programme
du systme dexploitation) est gnral et fondamental dans le traitement des entres-
sorties. En consquence un programme utilisateur pour raliser des changes ne
communique pas directement avec le priphrique mais avec le pilote de ce priph-
rique : les programmes ne connaissent les priphriques quau travers des pilotes qui
leur sont associs.
Comme lindique la figure 9.2 la mmoire centrale est partage en deux parties,
lune contenant le noyau du systme dexploitation, lautre le ou les programmes
utilisateurs selon que la machine est multiprogramme ou non (ces questions seront
dtailles dans les chapitres consacrs au systme dexploitation).
Pour quun programme soit excutable par un processeur il faut, comme nous
lavons vu, le traduire dans le langage du processeur (cest lopration de compila-
tion), puis le placer en mmoire centrale (cest lopration de chargement en
mmoire). On dispose alors en mmoire du programme machine. Pour commander
une impression il faut placer dans le programme les instructions dentres-sorties
pilotant une impression (la syntaxe de ces instructions dpend du langage utilis
pour crire le programme). Les instructions dentres-sorties sont traites de
manire particulire dans cette phase de traduction : un ordre dopration dentres-
sorties est traduit par un branchement (SVC, Supervisor Call) qui est un appel au
systme dexploitation. On parle galement de trappe systme qui permet denlever le
9.1 Introduction 209

processeur au programme utilisateur au profit du pilote capable de grer cette opra-


tion dentres-sorties. Ce mcanisme est fondamental plus dun titre. On remarque
dabord que les fonctions de gestion des entres-sorties ne sont pas confies aux
programmes utilisateurs mais au systme dexploitation : lutilisateur na pas
supporter la complexit de la gestion technique dune trs grande varit de priph-
riques. Par ailleurs ce mcanisme permet de changer de priphriques (par exemple
dimprimante) sans avoir modifier les logiciels utilisant ce priphrique : si lon ne
disposait pas dun tel mcanisme il serait ncessaire de modifier son traitement de
texte favori chaque fois que lon change dimprimante. De plus, comme nous le
verrons un peu plus loin mais surtout dans les parties consacres aux systmes
dexploitation, ce mcanisme est dterminant dans la ralisation de systmes multi-
programms (Linux, Windows NT, Mac OS X) permettant de grer simultanment
plusieurs programmes utilisateurs.
Dans la suite de ce chapitre sont abordes les questions relatives aux bus, aux
interfaces daccs aux priphriques, aux priphriques ainsi que les diffrents modes
de gestion des entres-sorties.

Pilotes (Driver)
Programme utilisateur

Mmoire centrale

crire
Ecrire Systme
dexploitation
Pilote
Tra
du
cti
on

Programme
utilisateur traduit

Processeur SVC
Dunod La photocopie non autorise est un dlit.

Figure 9.2 Activation du pilote pour la gestion dune opration dentres-sorties.


210 9 La fonction de communication

9.2 LES BUS


Comme nous lavons indiqu dans les chapitres prcdents, un bus peut tre vu comme
un ensemble de fils qui relient les divers composants dun ordinateur. Dans le
chapitre concernant le fonctionnement et larchitecture matrielle du processeur
nous avons tudi le bus interne au processeur interconnectant lunit arithmtique
et logique, les registres et lunit de commande. Dans le chapitre concernant la fonc-
tion dexcution nous avons mis en vidence le rle du bus de communication entre
le processeur et la mmoire centrale. Nous avons dfini plusieurs caractristiques
importantes des bus notamment le fonctionnement synchrone ou asynchrone des
bus. Nous avons introduit un indicateur important permettant de mesurer lefficacit
dun bus : la bande passante qui sexprime comme le produit de la frquence par la
largeur du bus. Une autre caractristique importante est la manire dont les bits sont
transports. cet gard on peut classer les bus selon deux grandes catgories :
Les bus parallles. Ce sont des bus simples constitus dautant de fils quil y a
de bits transporter. Ces bus sont coteux et peu fiables pour des distances impor-
tantes. Ils sont utiliss sur des distances courtes, par exemple pour relier le proces-
seur, la mmoire et les units dchanges.
Les bus srie. Ils permettent des transmissions sur de grandes distances. Ils utilisent
une seule voie de communication sur laquelle les bits sont srialiss et envoys les
uns la suite des autres.
Lordinateur qui nous sert de guide et dont nous affinons larchitecture au cours
des diffrents chapitres est organis autour dun bus unique (figure 9.1). En fait nous
avons prolong le bus reliant processeur et mmoire centrale afin de connecter les
autres composants cest--dire les units dchanges (contrleurs) pilotant les pri-
phriques. Ce type darchitecture a t pendant une longue priode larchitecture
gnrale des ordinateurs. Cette architecture convenait dans la mesure o lordinateur
tait vu globalement et que les performances des diffrents composants taient compa-
tibles. Ces dernires annes ont vu une volution trs forte des performances des
processeurs et des mmoires. Par ailleurs les constructeurs ont mis sur le march des
priphriques de plus en plus sophistiqus aux performances leves. Enfin le dve-
loppement des interfaces graphiques et des applications multimdia qui vhiculent
de trs grandes quantits dinformations ont oblig les constructeurs faire voluer
les bus. En effet les bus nont pas suivi la mme volution, que lensemble des compo-
sants des ordinateurs, et sont devenus un facteur critique pour ce qui concerne les
performances globales. De plus lorganisation autour dun bus unique est mal adapte
pour relier des composants htrognes aux performances trs diffrentes : la mmoire
et le processeur ont besoin de trs hauts dbits alors quune imprimante ou une
souris se satisfont de flux rduit. Une approche a consist mettre en place des
dispositifs matriels permettant des priphriques dchanger des informations
avec la mmoire centrale sans utiliser le processeur : les DMA (Direct Memory Access).
Ces dispositifs sont encore trs largement utiliss. Ce dispositif coupl avec le mca-
nisme dinterruptions permet de rendre asynchrones les entres-sorties librant ainsi le
9.2 Les bus 211

processeur qui peut alors effectuer dautres tches pendant quune opration dentres-
sorties physique se droule.
La figure 9.1 est caractristique de larchitecture bus unique. Le bus ISA (Industry
Standard Architecture) a t le standard des bus pour les ordinateurs ayant une archi-
tecture bus unique. Dans ce type darchitecture, le bus est un goulet dtranglement :
les processeurs trs performants produisent des informations qui ne sont traites par
le bus quavec les performances de ce dernier. Au total ce sont donc les caractristi-
ques du bus qui dterminent les performances globales de lordinateur. Larrive des
interfaces graphiques a accentu ce problme du goulot dtranglement. La gestion
des fentres et le traitement des graphiques rclament des dbits importants qui ne
peuvent tre assurs par le bus ISA (frquence de 8 MHz pour une largeur de 16 bits
soit une bande passante de 8,33 Mo/s). Une volution importante est venue de la
compagnie IBM qui a dvelopp le bus MCA (Micro Channel Architecture) aux
performances plus leves que le bus ISA pour les ordinateurs PS/2. Malheureuse-
ment ce bus ne supportait pas les cartes daccs au bus ISA. Or, lindustrie micro-
informatique, pour protger ses marchs, a dfini le bus ISA comme le standard, ce
qui est une probable explication au retard pris dans lvolution des bus. EISA
(Extended Industry Standard Architecture) est une volution du bus ISA qui prsente
de meilleures performances et dont lobjet a t de concurrencer le bus MCA. Au
total les bus MCA et EISA nont pas t accepts cause de leur cot et de leur
incompatibilit.
Le groupement VESA (Video Electronics Standard Association) dveloppa lide
de connecter directement le contrleur graphique sur le bus reliant mmoire centrale
et processeur. Ainsi un processeur manipulant des donnes sur 4 octets avec une
frquence de 33 MHz pouvait offrir un dbit de 132 Mo/s. Ce projet donna lieu la
cration du VLBus. Malheureusement ce bus a t conu au dpart pour le proces-
seur 80486 dIntel ce qui en limitait trop les perspectives dvolutions.
partir de 1991, Intel a donc dvelopp un bus PCI (Peripheral Component
Interconnect) dont les caractristiques devaient permettre des performances leves
(dbits suprieurs 100 Mo/s) et une grande souplesse dutilisation. Ce bus, qui est
devenu un standard, a permis la dfinition dun bus graphique AGP (Accelerated
Graphic Port) destin plus spcifiquement la gestion des contrleurs graphiques.
Enfin Intel a dvelopp des chipset permettant la fois une plus grande intgra-
tion des composants et la possibilit dinterconnecter des bus de type diffrents.
Dunod La photocopie non autorise est un dlit.

Afin dlargir lutilisation des bus PCI, Intel a mis dans le domaine public tous les
brevets attachs ce bus. Ce type de bus permet une volution vers des architectures
plusieurs bus mieux adaptes lhtrognit des dispositifs.

9.2.1 Les bus ISA (ou PC-AT), MCA et EISA


Le bus ISA est apparu dans les annes 1985 avec les ordinateurs PC-AT. Il est encore
trs rpandu. Il sagit dun bus synchrone. Sa frquence est celle du processeur
80286 soit 8,33 MHz et a une largeur de 2 octets ce qui lui donne une bande passante
de 16,7 Mo/s. Lvolution des processeurs, plus rapides et manipulant des donnes
212 9 La fonction de communication

sur 16 et 32 bits, a oblig les constructeurs dfinir de nouveaux bus. Ce sont les bus
MCA et EISA.
Le bus MCA dvelopp par IBM pour les ordinateurs PS/2 est un bus de 32 bits,
asynchrone fonctionnant 10 MHz avec une largeur de 32 bits. Ces caractristiques
lui confrent une bande passante de 40 Mo/s bien suprieure celle du bus ISA.
Indpendant du processeur il peut sadapter diffrentes architectures matrielles.
Cependant il ne reconnat pas les cartes ISA et sa complexit de fabrication le rend
trop coteux.
Le bus EISA est une amlioration du bus ISA ayant une largeur de 32 bits. Il doit
cependant rester compatible avec son an et fonctionne donc ncessairement une
frquence de 8 MHz. Sa bande passante est donc double de celle du bus ISA.
Avec lapparition des applications graphiques et multimdias utilisant, par exemple
de la vido, les performances de ces bus sont devenues totalement insuffisantes. Les
bus deviennent alors un facteur important de la rduction des performances des ordi-
nateurs.
Examinons le cas dun affichage vido sur un cran, le fichier dimages provenant
dun disque magntique ou dun CD-ROM. Le moniteur couleur est standard et a
une dfinition de 1 024 768, la couleur de chaque point affich (pixel) est code
sur 16 bits (soit 32 000 couleurs diffrentes, ce qui aujourdhui est trs pauvre). Une
image ncessite donc 1 024 768 2 octets = 1 572 864 octets. Pour quune image
soit stable il faut quelle soit affiche au moins 25 fois par seconde sur lcran. La
bande passante ncessaire est donc de 1 572 864 25 octets/s soit environ 40 Mo/s.
En ralit si lon examine le chemin parcouru par les donnes (disque vers mmoire
puis mmoire vers moniteur) la bande passante que doit avoir le bus est de 80 Mo/s.
Ces chiffres sont totalement incompatibles avec les performances des bus que nous
venons de voir (Ces rsultats sont dautant moins compatibles que nous avons choisi
un codage des couleurs sur 16 bits alors quaujourdhui les couleurs sont codes sur
au moins 24 bits ce qui impliquerait une bande passante denviron 120 Mo/s). Ce sont
ces contraintes qui ont amen, vers 1990, Intel dfinir un bus haute performance :
le bus PCI.

9.2.2 Le bus PCI (Peripherical Component Interconnect)


Caractristiques
Le bus PCI sest impos comme composant des cartes mres grce ses performances
et lacceptation de ses normes par un grand nombre de constructeurs.
On peut rsumer ses caractristiques principales par :
Cest un bus local synchrone cadenc une frquence de 33 ou 66 MHz (version 2.1).
Il a une largeur de 32 ou 64 bits ce qui lui confre une bande passante de 132, 264
ou 528 Mo/s. Grce cette capacit de transmission le bus PCI rpond tous les
types de priphriques et tout type dapplication. Il nest donc pas un goulot
dtranglement pour le systme informatique.
9.2 Les bus 213

Afin de rduire lencombrement et le nombre de broches le bus PCI est multi-


plex. Dans ce mode les lignes du bus transportent alternativement des adresses et
des donnes. On divise ainsi par deux le nombre de lignes du bus. Les oprations
de lecture et dcriture impliquent alors plusieurs cycles de bus. Les transactions
sont ralises entre un matre (qui initie la transaction) et un esclave (la cible de la
transaction). Par exemple une transaction de lecture se fait en 3 cycles de bus : le
matre place ladresse de la donne lire sur les lignes du bus, le matre passe la
main lesclave qui peut alors utiliser le bus, lesclave place la donne adresse
sur le bus qui est alors disponible pour le matre.
Les spcifications du bus PCI permettent dinstaller une architecture Plug And Play1.
Comme les bus ISA le bus PCI permet de grer dautres units centrales, de la
mmoire et des entres-sorties. Aussi de nombreuses fonctions du bus standard
ISA migrent vers le bus PCI.
Bien que la bande passante de ce bus soit trs importante, ce bus ne convient pas
aux transferts entre mmoire centrale et processeur. De plus il ne permet pas la prise
en compte des cartes additionnelles compatibles avec le bus ISA.
Le tableau 9.1 rsume les principales performances des bus prsents jusqu ce point.

Tableau 9.1 CARACTRISTIQUES DES BUS DE COMMUNICATION.

Largeur : Frquence : Bande


Type Connecteurs
bits Mhz passante : Mo/s

ISA 16 8 8 16
EISA 32 8 18 32
MCA 32 8 8 32
VESA 32 33 3 132
PCI 32 33 10 132
PCI 32 66 264
PCI 64 33 264
PCI 64 66 528
Dunod La photocopie non autorise est un dlit.

Architecture
Pour rpondre la grande varit de besoins, une architecture multibus sest impose.
La figure 9.3 prsente une telle architecture. La plupart des micro-ordinateurs conus
partir de processeurs Pentium II repose sur une telle architecture. Cette architec-
ture nest pas seulement celle des PC mais on la retrouve galement avec quelques
variantes chez Apple. Les composants cls de cette organisation sont les composants
dinterconnexion de plusieurs environnements htrognes.

1. Le priphrique est automatiquement reconnu et le pilote ncessaire son fonctionnement


automatiquement install.
214 9 La fonction de communication

Dans la terminologie Intel ces composants sont appels des ponts. Le pont PCI
interconnecte le processeur, la mmoire centrale et le bus PCI. Le pont PCI/ISA
interconnecte le bus PCI et le bus ISA et peut piloter directement un ou plusieurs
disques IDE ainsi que les ports USB.
Ces composants les ponts pour Intel existent pour dautres types dordinateurs.
En fait ils correspondent une volution de la technologie qui permet de rduire le
nombre de composants sur la carte mre. Ces composants, les Chipset, intgrent un
grand nombre de fonctionnalits. Ils grent tout particulirement des fonctions
fondamentales (qui auparavant ncessitaient plusieurs composants) telles que :

Rseau

Carte SCSI Ethernet


Processeur graphique
central

FIREWIRE
MMU
Horloge

Caches Slots
niveau 1 dextension
Carte srie
PCI

Cache Pont Pont


Bus ISA

niveau 2
Bus

PCI PCI/ISA

Modem RTC
Carte srie

Mmoire
centrale Rseau

Ports USB

Modem
ADSL
Disques IDE

Rseau

Figure 9.3 Architecture multibus (bus PCI).


9.2 Les bus 215

gestion et arbitrage des accs au bus;


gestion du temps laide de timers;
contrleurs dinterruptions.
titre dexemple Intel a dvelopp un chipset Intel 40BX compos dun module
82443BX (qui permet linterfaage entre le processeur, la mmoire centrale et les
autres bus, PCI et AGP) et du contrleur PIIX4 (interfaage entre les bus PCI et ISA).
Les principales caractristiques du premier composant sont :
gestion dun ou deux processeurs Pentium II interconnects par un bus systme
100 MHz;
contrle de la mmoire centrale. Il supporte de la mmoire de type EDO 60 ns
ou SDRAM (100 MHz);
gestion de linterface avec le bus PCI ayant une frquence de 33 MHz;
gestion dune interface pour le bus AGP dont la frquence de 133 MHz permet un
dbit de 500 Mo/s.
Enfin ce composant contient des registres accessibles dans lespace dadressage
du processeur, il peut donc contrler les accs aux priphriques pilots par les bus PCI
et AGP (nous revenons sur ces notions dadressage dans la partie concernant les inter-
faces daccs aux priphriques).
Pour ce qui concerne le deuxime composant de ce chipset on peut noter les carac-
tristiques suivantes :
interfaage PCI/ISA;
contrle des interfaces IDE. Il peut grer jusqu 4 disques;
une gestion USB pour deux ports 12 ou 1,5 Mbits/s;
gestion des fonctionnalits correspondant deux contrleurs DMA;
gestions des interruptions qui correspondent deux contrleurs 82C59 (dont nous
avons parl dans le chapitre concernant la fonction dexcution).
Cet exemple montre le haut niveau dintgration que permettent ces chipset.
Lavantage majeur de ce type darchitecture est certainement que la bande passante
du bus est bien adapte aux priphriques associs. Le couple processeur/mmoire
dispose dun bus priv dont la bande passante est trs leve, le bus PCI (dont la
Dunod La photocopie non autorise est un dlit.

bande passante est leve) permet une connexion bien adapte des disques hautes
performances (par exemple de type SCSI ou FIREWIRE). La possibilit dintercon-
nexion au bus ISA permet de satisfaire les besoins des priphriques lents (impri-
mantes, modems RTC). Enfin ces composants intgrent la connexion aux ports USB
que nous tudierons dans la partie concernant linterfaage avec les priphriques.
Les chipset existent dans dautres architectures que celles dveloppes par Intel.
Ils ne sont pas ncessairement organiss avec le mme nombre de composants. Une
des raisons de cette architecture multiponts chez Intel vient probablement de la
ncessit de prendre en compte une compatibilit ascendante non obligatoire pour
dautres constructeurs (Apple par exemple).
216 9 La fonction de communication

9.2.3 Le bus AGP (Accelerated Graphics Port)


Caractristiques
Lutilisation intensive des graphismes en 3D et de la vido impose des dbits
toujours plus importants. Une solution est la mise en place dun bus spcialis pour
le traitement graphique : le bus AGP. La spcification de ce type de bus date de 1996,
elle sappuie sur la spcification du bus PCI en lui apportant des amliorations. La
principale de ces amliorations est le dmultiplexage des adresses et des donnes sur
le bus et lintroduction du mode pipeline pour les oprations de lecture et dcriture
en mmoire.
Au dbut le bus AGP 66 MHz autorisait un dbit de 266 Mo/s. Avec le mode
AGP2X puis AGP4X on obtient des dbits de 533 Mo/s et 1 Go/s.

Rseau

Processeur SCSI Ethernet


Processeur graphique
central FIREWIRE
Mmoire
MMU locale
Horloge

Bus AGP
niveau 1

Slots
Caches

dextension
Carte srie
Chipset AGP

PCI
Pont PCI

Cache Pont
niveau 2
Bus ISA

PCI/ISA
Bus

Modem RTC
Carte srie

Mmoire
centrale Rseau

Ports USB

Modem ADSL
Disques IDE

Rseau

Figure 9.4 Architecture multibus (bus PCI et AGP).


9.2 Les bus 217

Architecture
La figure 9.4 prsente une architecture qui peut tre considre comme larchitecture
de base actuelle pour nos micro-ordinateurs.

9.2.4 Deux exemples


Nous prsentons ici deux exemples darchitectures tires de la documentation des
constructeurs Intel et Apple. Ces prsentations graphiques ne sont l que pour illus-
trer ce qui a t dit prcdemment.

Architecture Intel
Cette architecture (figure 9.5) correspond bien aux schmas gnriques prsents
prcdemment. On voit que le bus AGP est annonc comme ayant un dbit suprieur
1 Go/s ce qui est trs favorable pour les changes et la gestion des applications graphi-
ques utilisant par exemple la vido. De la mme manire les bus processeur/pont et
pont/mmoire sont trs hauts dbits. Enfin la mmoire de type RDRAM est comme
nous lavons vu un type de mmoire ayant un temps daccs trs faible. Cette archi-
tecture permet en particulier des changes directs entre mmoire principale et mmoire
vido avec des dbits trs levs. Ce sont assurment des facteurs daugmentation
globale des performances.
Dunod La photocopie non autorise est un dlit.

Architecture Mono-processeur Pentium 4


Documentation Intel

Figure 9.5 Architecture Intel.


218 9 La fonction de communication

Il faut noter quil existe aussi chez Intel des architectures similaires mais multi-
processeurs avec un bus processeur/processeur trs haut dbit.

Architecture G4 (Apple)
Larchitecture prsente sur la figure 9.6 est une architecture biprocesseurs assez
classique chez Apple. L galement nous sommes trs proches des architectures
gnriques prsentes. Les performances des bus et des composants sont proches de
celles du monde Intel. Les diffrences proviennent en particulier des processeurs.
Chez Intel on dispose de processeurs de type CISC alors que ce sont des processeurs
de type RISC chez Apple. Dans ces conditions il est assez difficile de comparer les
performances pures des processeurs. Peut-on raisonnablement et brutalement comparer
le mgahertz voire le gigahertz de processeurs darchitectures si diffrentes ?
Au plan architectural on peut tout de mme noter une diffrence. Il nexiste quun
seul pont contrairement larchitecture Intel. Pour Apple il sagit l dun facteur
daugmentation de lefficacit cause de la diminution du nombre de composants.
Comme prcdemment il faut faire trs attention aux comparaisons htives.

Architecture bi-processeurs G4
Documentation Apple

Figure 9.6 Architecture Apple.

9.3 LES INTERFACES DACCS AUX PRIPHRIQUES


Les micro-ordinateurs sont organiss autour dun ou plusieurs processeur(s), de circuits
mmoires, dunits dchanges (contrleurs) et du bus dinterconnexion reliant ces
diffrents composants. Nous avons examin les fonctionnements des processeurs,
des mmoires et larchitecture des bus permettant de faire fonctionner ces compo-
sants ensemble. Une opration dopration dentres-sorties implique dchanger
des informations entre les composants internes et les priphriques. Pour raliser ces
changes on dispose de composants particuliers, les units dchanges, dont le rle
est de piloter les priphriques. Nous allons donc tudier dans cette partie les units
9.3 Les interfaces daccs aux priphriques 219

dchanges et plus gnralement les interfaces daccs aux priphriques. Nous


abordons cette prsentation en prsentant les fonctionnalits des units dchanges
que lon peut considrer comme traditionnelles (cartes sries, parallles, les cartes
daccs aux rseaux locaux.). Puis nous prsentons les bus dextension (pour la gestion
des entres-sorties) et plus particulirement les bus sries USB, SCSI et FIREWIRE.
Il sagit l dun choix arbitraire (nous aurions pu dcrire ces bus dans la section
consacre aux bus) qui dun point de vue fonctionnel nous est apparu cohrent.

9.3.1 Les units dchanges


Nous allons dabord prciser la manire daccder une unit dchange, cest--dire
comme nous lavons fait pour la mmoire, dfinir ladresse dune unit dchange.
Nous prcisons ensuite la structure fonctionnelle dun contrleur. Enfin nous donnons
des exemples de telles units dchanges.

Gnralits : adressage, structure et fonctionnement dune unit dchange


Il y a deux manires datteindre un circuit de gestion dentres-sorties. On peut le
voir du point de vue de ladressage, comme un composant spcifique. Il faut alors
disposer dun signal particulier que lon dpose sur le bus pour indiquer que lon veut
faire une opration dentres-sorties. Lautre manire est de dcider que les circuits
dopration dentres-sorties font partie de lespace dadressage du processeur. Le
choix de lune ou lautre des mthodes est arbitraire. La figure 9.7 prsente ladressage
dune unit dchange comme faisant partie de lespace dadressage du processeur.

Bus de commandes

Bus de donnes

Mmoire Mmoire Unit


Slction

ROM RAM dchange


Dunod La photocopie non autorise est un dlit.

Bus dadresses

Figure 9.7 Espace dadressage unique.


220 9 La fonction de communication

Dans cette hypothse on adresse une unit dchange comme lon adresse un banc
mmoire. Une adresse est dpose sur le bus dadresses, une partie de cette adresse
est prise en charge par un circuit de slection (circuit de dcodage) qui permet de
slectionner un botier qui sera soit un banc mmoire soit une unit dchange.
Dans la figure 9.7, 3 fils sont rservs la slection dun botier. Ces 3 fils grs par
le circuit de dcodage permettent un accs 8 botiers diffrents.
La structure gnrale dune unit dchange est donne par la figure 9.8. Il sagit
dune structure fonctionnelle qui nenlve rien la gnralit du fonctionnement rel
des contrleurs. Une unit dchange est organise autour de plusieurs registres. Leur
nombre et leur gestion dpendent des spcificits particulires de lunit dchange.

Bus de commandes

Bus de donnes

Registre Registre
d tat de donnes
Slection

Slection

Bus dadresses

Figure 9.8 Structure gnrale dune unit dchange.

Fonctionnellement on trouve :
un registre dtat qui permet de connatre ltat du priphrique pilot par cette
unit dchange. Chaque tat est caractris par une valeur numrique disponible
dans le registre dtat. Par exemple une imprimante qui na plus de papier met un
signal vers le contrleur qui peut alors charger le registre dtat avec la valeur
numrique correspondant cet tat. Cette information maintenant place dans le
registre dtat est disponible pour le processeur;
un registre de donnes. Cest au travers de ce registre que se font les changes de
donnes entre la mmoire et lunit dchange.
Les registres sont adressables : chaque registre a une adresse. Cest exactement ce
qui se passe pour la mmoire centrale o lon slectionne un banc mmoire et un
mot dans ce banc. Une partie du bus de commande (figure 9.8) adresse un circuit de
9.3 Les interfaces daccs aux priphriques 221

dcodage interne lunit dchange afin de slectionner un des registres du contr-


leur. Par exemple pour raliser une opration dcriture sur une imprimante on pourra
excuter la squence :
le processeur place ladresse du registre dtat sur le bus dadresses. Cette adresse
est compose dune part de ladresse du botier, dautre part de ladresse du registre
dans le botier;
le processeur lit le registre dtat;
si le contenu du registre indique que limprimante est libre, le processeur adresse
le registre de donnes;
le processeur dpose la donne imprimer sur le bus de donnes. La donne est
maintenant disponible pour limprimante;
lunit dchange va positionner les signaux ncessaires dclenchant limpression
physique de la donne sur limprimante.
Cette prsentation simplifie est en fait gnrale. Dans larchitecture matrielle
que nous avons utilise dans la section sur les bus, nous avons vu la complexit du
schma daccs une unit dchange. Notre schma dadressage pourrait sembler
inadapt. En fait les botiers de type pont , permettant linterconnexion des parties
htrognes, disposent de registres de communication avec le processeur. Ces regis-
tres contiennent les adresses des units dchanges, le pont effectue alors des trans-
lations dadresses afin de sadapter aux diffrents composants transportant cette
information.

Exemple 1 : la liaison srie


Cet exemple a pour objet de prciser sur un cas concret lensemble des lments mis
en cause lors dun change. Comme le montre la figure 9.9 nous avons choisi dtudier
la communication entre deux ordinateurs distants au travers du rseau tlphonique
commut (RTC).
Du point de vue logiciel cette communication implique lexistence de deux
programmes (un sur chaque ordinateur) qui excutent des instructions pilotant le
matriel connectant les ordinateurs. Les programmes vont changer des messages
selon un protocole de communication. Dans une telle communication les ordinateurs
sont identifis par un numro de tlphone. Pour communiquer, un ordinateur doit
Dunod La photocopie non autorise est un dlit.

excuter un programme qui demande son modem de composer le numro de tl-


phone du modem distant. Le modem metteur attend alors lacceptation du modem
distant, il transmet cette acceptation au programme qui peut alors changer avec le
programme distant au travers du rseau.
Pour cette communication le programme metteur, au travers des diffrents bus,
envoie des donnes lunit dchange spcifique des communications sries
(UART). Cette dernire poste les signaux lectroniques adquats pour le modem.
Lorsque le modem reoit des donnes il poste des signaux pour lUART qui agit en
fonction de la nature des signaux reus. Cet exemple illustre bien les modalits
compltes de fonctionnement dune unit dchange :
222 9 La fonction de communication

Processeur SCSI Ethernet


Processeur graphique
central

FIREWIRE
Mmoire
MMU locale
Connecteurs
Horloge

Bus AGP
V 24
niveau 1
Caches

Slots
dextension
Chipset AGP

PCI
Pont PCI

Cache Pont
niveau 2

Bus ISA
PCI/ISA
Bus

UART
Rseau
Mmoire
RTC
centrale
Modem
RTC
Ports USB

Figure 9.9 Communication entre deux ordinateurs distants.

communication dinformations numriques avec le programme dentres-sorties


au travers des composants internes;
production et rception de signaux lectroniques pour les chan