Вы находитесь на странице: 1из 585

Ar

chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

http://hdl.handle.net/2243/BK_1001

Architectures
Logicielles
et
Matrielles
e

P. Amblard, J.-C. Fernandez,


F. Lagnier, F. Maraninchi,
P. Sicard, Ph. Waille

TIMA EDITIONS, juin 2006

Ar
P. chit
F. Am ectu
La bla res
P.
Sic gnie rd, J Log
ar r, F .-C ici
d,
. M . F elle
Ph
ar ern s et
.W a
ail nin ande Ma
ch
le
z, tr
e
i,
iel
les

Table des mati`res


e
Introduction

1 Quest-ce quun ordinateur ?


1.
Notion dinformation . . . . . . . . . . .
2.
Lordinateur : une machine qui excute .
e
3.
O` sont le matriel et le logiciel ? . . . .
u
e
4.
Fonctionnalits des ordinateurs . . . . .
e
5.
Plan du livre . . . . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

Outils de base de lalgorithmique logicielle


et matrielle
e

13
13
17
22
25
28

31

2 Alg`bre de Boole et fonctions boolennes


e
e
1.
Alg`bre de Boole . . . . . . . . . . . . . . . . . . . . . .
e
2.
Fonctions boolennes . . . . . . . . . . . . . . . . . . . .
e
3.
Reprsentation des fonctions boolennes . . . . . . . . .
e
e
4.
Manipulation de reprsentations de fonctions boolennes
e
e
5.
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

33
34
36
39
46
54

3 Reprsentation des grandeurs


e
1.
Notion de codage dinformations . . . .
2.
Les naturels . . . . . . . . . . . . . . . .
3.
Les relatifs . . . . . . . . . . . . . . . .
4.
Lien entre larithmtique et les boolens
e
e
5.
Les caract`res . . . . . . . . . . . . . . .
e
6.
Les nombres rels, la virgule ottante .
e
7.
Exercices . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

57
57
59
66
72
73
74
75

4 Reprsentation des traitements et des donnes : langage dactions


e
e
1.
Un langage dactions . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.
Reprsentation des donnes en mmoire . . . . . . . . . . . . . . . . .
e
e
e
3.
Traduction des aectations gnrales en acc`s au tableau MEM . . . .
e e
e
4.
Utilisation des pointeurs et gestion dynamique de la mmoire . . . . .
e
5.
Piles, les et traitements associs . . . . . . . . . . . . . . . . . . . . .
e
6.
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

83
84
90
98
99
103
104

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

5 Reprsentation des traitements et des donnes :


e
e
machines squentielles
e
109
1.
Machines squentielles simples . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
e
2.
Machines squentielles avec actions . . . . . . . . . . . . . . . . . . . . . . . . 118
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

VI

Table des mati`res


e

II

Ar
P. chit
F. Am ectu
La bla res
P.
Sic gnie rd, J Log
ar r, F .-C ici
d,
. M . F elle
Ph
ar ern s et
.W a
ail nin ande Ma
ch
le
z, tr
e
i,
iel
les

6 Temps, donnes temporelles et synchronisation


e
1.
Interface entre un dispositif informatique et un environnement physique
2.
Signaux logiques et reprsentation par des chronogrammes . . . . . . . .
e
3.
Probl`mes de synchronisation . . . . . . . . . . . . . . . . . . . . . . . .
e
4.
Un exemple : la machine ` caf . . . . . . . . . . . . . . . . . . . . . . .
a
e

.
.
.
.

.
.
.
.

Techniques de lalgorithmique matrielle


e

7 De
1.
2.
3.
4.
5.
6.

129
130
134
135
141

143

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

145
145
148
151
156
164
170

8 Circuits combinatoires
1.
Notion de circuit combinatoire . . . . . .
2.
Assemblage de blocs de base... . . . . . .
3.
Algorithmique cble : conception logique
a e
4.
Etude de cas . . . . . . . . . . . . . . . .
5.
Exercices . . . . . . . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

173
174
181
186
194
196

9 Elments de mmorisation
e
e
1.
Points de mmorisation de bits : bascules et registres . . . . . . .
e
2.
La mmoire : organisation matricielle des points de mmorisation
e
e
3.
Ralisation des mmoires statiques . . . . . . . . . . . . . . . . .
e
e
4.
Optimisations et techniques particuli`res . . . . . . . . . . . . . .
e

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

199
200
211
215
218

10 Circuits squentiels
e
1.
Notion de circuit squentiel . . . . . . . . . . . . . . . . . .
e
2.
Synth`se des automates dcrits par leur graphe . . . . . . .
e
e
3.
Synth`se des circuits squentiels par ots de donnes . . .
e
e
e
4.
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

223
224
230
241
248

11 Conception de circuits squentiels par


e
contrle et des oprations
o
e
1.
Principe gnral . . . . . . . . . . . .
e e
2.
Notion de partie oprative type . . . .
e
3.
Partie contrle . . . . . . . . . . . . .
o
4.
Etudes de cas . . . . . . . . . . . . . .
5.
Exercices . . . . . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

251
252
253
257
261
271

III

llectron aux dispositifs logiques


e
Phnom`nes ` lchelle atomique . .
e
e
a e
Phnom`nes ` lchelle lectrique . .
e
e
a e
e
Phnom`nes ` lchelle logique . . .
e
e
a e
Circuits logiques . . . . . . . . . . .
Fabrication des dispositifs . . . . . .
Exercices . . . . . . . . . . . . . . .

.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

sparation du
e
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

Techniques de lalgorithmique logicielle

12 Le langage machine et le langage dassemblage


1.
Le langage machine . . . . . . . . . . . . . . . . . . . . .
2.
Le langage dassemblage . . . . . . . . . . . . . . . . . .
3.
Traduction du langage dassemblage en langage machine
4.
Un exemple de programme . . . . . . . . . . . . . . . .
5.
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . .

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

275
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

277
278
304
310
310
315

Table des mati`res


e

VII

IV

Ar
P. chite
F. Amb cture
P. Lagn lard, s Lo
Sic ier
J.- gici
ard , F C. ell
, P . M Fe es e
h.
ara rna t M
Wa ni nd
nch ez, atr
ei
ille
elle
i,
s

13 Traduction des langages ` structure de blocs en langage dassemblage


a
1.
Cas des programmes ` un seul bloc . . . . . . . . . . . . . . . . . . . . . . .
a
2.
Cas des programmes ` plusieurs blocs . . . . . . . . . . . . . . . . . . . . .
a
3.
Traduction en langage dassemblage : solutions globales . . . . . . . . . . .
4.
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

A la charni`re du logiciel et du matriel...


e
e

14 Le processeur : linterpr`te cbl du langage


e
a e
1.
Les principes de ralisation . . . . . . . . . .
e
2.
Exemple : une machine ` 5 instructions . . .
a
3.
Une ralisation du processeur . . . . . . . . .
e
4.
Critique et amlioration de la solution . . . .
e
5.
Extensions du processeur . . . . . . . . . . .
6.
Exercices . . . . . . . . . . . . . . . . . . . .

machine
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.

357
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

Architecture dun syst`me matriel


e
e
et logiciel simple

.
.
.
.
.
.

359
360
363
364
370
372
376

385

Un syst`me matriel et logiciel simple


e
e

15 Relations entre un processeur et de la mmoire


e
1.
Le bus mmoire . . . . . . . . . . . . . . . . . . .
e
2.
Utilisation de plusieurs circuits de mmoire . . .
e
3.
Acc`s ` des donnes de tailles direntes . . . . .
e a
e
e
4.
Exercices . . . . . . . . . . . . . . . . . . . . . .

321
322
327
342
351

387

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

391
391
395
399
405

16 Circuits dentres/sorties
e
1.
Notion dentres/sorties . . . . . . . . . . . . . . . . .
e
2.
Synchronisation entre le processeur et un priphrique
e
e
3.
Connexion dorganes priphriques . . . . . . . . . . .
e
e
4.
Programmation dune sortie . . . . . . . . . . . . . . .
5.
Programmation dune entre . . . . . . . . . . . . . .
e
6.
Optimisation des entres/sorties groupes . . . . . . .
e
e
7.
Exercices . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

407
407
409
410
412
418
419
425

17 Pilotes de priphriques
e
e
1.
Structure dun pilote de priphrique
e
e
2.
Pilote pour un clavier . . . . . . . .
3.
Pilote pour un disque . . . . . . . .
4.
Pour aller plus loin... . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

427
428
429
433
442

18 Vie
1.
2.
3.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

des programmes
445
Interprtation et compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
e
Compilation spare et code translatable . . . . . . . . . . . . . . . . . . . . . 452
e e
Format des chiers objets translatables et dition de liens . . . . . . . . . . . 464
e

19 Syst`me de gestion de chiers


e
1.
Situation du syst`me de gestion de chiers . . . . . . . . . .
e
2.
Structure des donnes et inuence sur limplantation . . . .
e
3.
Implantation disperse sur un disque . . . . . . . . . . . . .
e
4.
Noms externes et autres informations attaches aux chiers
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

473
475
476
480
486

VIII

Etude de quelques fonctions du syst`me de gestion de chiers . . . . . . . . . 487


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

5.

Table des mati`res


e

20 Dmarrage du syst`me, langage de commandes et interpr`te


e
e
e
1.
Dmarrage du syst`me . . . . . . . . . . . . . . . . . . . . . . . .
e
e
2.
Mcanisme de base : le chargeur/lanceur . . . . . . . . . . . . . .
e
3.
Programmation de linterpr`te de commandes . . . . . . . . . . .
e
4.
Fonctions volues des interpr`tes de commandes . . . . . . . . .
e
e
e

VI

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

Architecture des syst`mes matriels


e
e
et logiciels complexes

.
.
.
.

493
494
495
505
511

513

21 Motivations pour une plus grande complexit


e
1.
Quappelle-t-on syst`me complexe ? . . . . . . . . . . . . . .
e
2.
Scrutation . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.
Mcanisme dinterruption : dnition et types dutilisations
e
e
4.
Plan de la suite . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

515
515
517
518
520

22 Le mcanisme dinterruption
e
1.
Architecture dun processeur pour la multiprogrammation .
2.
Introduction dun mcanisme de scrutation lmentaire . . .
e
ee
3.
Un exemple dtaill dutilisation : mise ` jour de la pendule
e
e
a
4.
Notion de concurrence et datomicit des oprations . . . .
e
e
5.
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

521
521
525
531
538
540

23 Partage de temps et processus


1.
Principe et dnitions . . . . . . . . . . . . .
e
2.
Structures de donnes associes aux processus
e
e
3.
Organisation du traitant de commutation . .
4.
Cration et destruction de processus . . . . .
e
5.
Exercices . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

541
541
546
549
556
560

24 Gnralisation du mcanisme dinterruption et applications


e e
e
1.
Classication des direntes sources dinterruption . . . . . . .
e
2.
Protection entre processus, notion de superviseur . . . . . . . .
3.
Entres/sorties gres par interruption . . . . . . . . . . . . . .
e
ee
4.
Pour aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

561
562
569
575
580

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

Index

581

Bibliographie

587

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Introduction

Ce quon trouvera dans ce livre

Ce livre suit dassez pr`s lenseignement dispens en Licence dinformatique


e
e
a
` lUniversit Joseph Fourier de Grenoble. Lenseignement a le mme titre :
e
e
Architectures Logicielles et Matrielles. Il est dispens en environ 150 heures
e
e
de cours, Travaux Dirigs et Travaux Pratiques.
e
Lobjectif est dexpliquer ` de futurs spcialistes dinformatique le fonctiona
e
nement de lordinateur. Pour cela nous faisons un certain nombre de choix, nous
prenons parti.
Pour comprendre le fonctionnement, il faut se placer du point de vue du
concepteur dordinateur. Le lecteur trouvera donc dans ce livre une dmarche
e
de conception de machines. Il ne sagit pourtant pas de lui faire croire au
ralisme de cette conception.
e
En eet la vritable conception dune machine, cest-`-dire de son
e
a
matriel du microprocesseur ` la mmoire, en passant par la carte grae
a
e
phique et de son logiciel du syst`me dexploitation aux compilateurs
e
reprsente des centaines de milliers dheures de travail de spcialistes. Nous ne
e
e
dcrivons quune partie du travail, en choisissant les points qui nous semblent
e
les plus signicatifs dans cette conception. Dautre part nous insistons sur les
liaisons entre dirents aspects de la conception. En particulier, lune des ides
e
e
fortes de ce livre est ltroite complmentarit des aspects logiciels et matriels
e
e
e
e
des ordinateurs. Lide centrale, et le chapitre central de ce livre, montrent
e
donc comment du matriel excute du logiciel.
e
e
Le contenu de ce livre ne devrait pas se primer, sauf si des principes
e
vraiment nouveaux apparaissent en informatique et se gnralisent.
e e

Ce quon ne trouvera pas dans ce livre


En revanche ce livre ne dcrit pas les aspects les plus avancs utiliss dans
e
e
e
les machines actuelles. Ces aspects font lobjet denseignements spciques de
e
syst`mes dexploitation, de compilation ou darchitectures des machines, dans
e
lesquels, en gnral, on ne se proccupe que dun aspect. Ce livre constitue
e e
e
un prrequis pour de tels enseignements car il montre les relations entre les 3
e
domaines.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

10

Introduction

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Parmi les th`mes tr`s intressants que nous avons dlibrement carts (et
e
e
e
e e
e
e
rservs pour le tome 2 !) gurent :
e
e
Ltude ne des fonctionnalits dun syst`me dexploitation particulier.
e
e
e
Beaucoup de nos rfrences sont inspires dunix1 .
ee
e
Ltude de la hirarchie mmoire (cache et mmoire virtuelle), que nous
e
e
e
e
passons totalement sous silence.
Ltude dtaille dun langage dassemblage dun processeur donn. Beaue
e
e
e
2
coup de nos rfrences sont inspires du sparc ou du Motorola 680003 .
ee
e
Ltude des techniques de conception de circuits micro-lectroniques. Par
e
e
exemple nous ne parlons ni de consommation, ni de circuits asynchrones.
Ltude des techniques doptimisation des performances des procese
seurs. Nous ne dveloppons pas les techniques de pipeline, ni celles de
e
rordonnancement dynamique du ot dexcution des instructions.
e
e
Les entres/sorties tr`s particuli`res que constituent les acc`s dun ordinae
e
e
e
teur ` un rseau, ce qui demanderait un dveloppement spcique.
a
e
e
e

Comment lire ce livre ?


Mthode de travail
e

On peut lire ce livre comme un roman, de la premi`re ` la derni`re page.


e a
e
On peut galement le lire avec une salle de Travaux Pratiques ` porte de
e
a
e
la main, pour essayer toutes les techniques voques, les comparer, les analyser
e
e
en dtail, etc.
e
On peut essayer de rsoudre tous les exercices et envoyer les solutions aux
e
auteurs, qui se feront un plaisir de les corriger :
Paul.Amblard@imag.fr
Jean-Claude.Fernandez@imag.fr
Fabienne.Lagnier@imag.fr Florence.Maraninchi@imag.fr
Pascal.Sicard@imag.fr
Philippe.Waille@imag.fr

On peut enn essayer de trouver des erreurs, de fond et de forme, et on y


parviendra certainement.
Th`mes
e

On peut privilgier une approche centre sur les langages de programmae


e
tion, leur traduction et la faon dont ils sont excuts. Sur la gure 0.1 cela
c
e e
correspond aux `ches en traits gras.
e
1

marque dpose, et dans la suite de louvrage nous ne prciserons plus que les noms de
e e
e
syst`mes et de machines sont, videmment, dposs.
e
e
e e
2
marque dpose
e e
3
marque dpose
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

11

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Introduction

2 : Alg`bre de Boole
e

1 : LORDINATEUR

6 : Aspects temporels

7 : Electronique

9 : Elments de
e
mmorisation
e

4 5 : Reprsentation
e
des traitements et
donnes
e

3 : Reprsentation
e
des grandeurs

8 : Circuits
combinatoires

12 13 : Langages
machine et
dassemblage

10 11 : Circuits
squentiels
e

14 : LE PROCESSEUR

15 : Liaisons mmoire
e
processeur

16 17 : Matriel et
e
logiciel dentres / sorties
e

18 : Vie des
programmes

19 : Gestion de chiers

21 ` 24 :Syst`me complexe
a
e
Interruptions Processus

20 : Interpr`te
e
de commandes

Fig. 0.1 Relations de dpendance des principales ides utilises dans les 24 chapitres.
e
e
e
La zone grise correspond plutt au monde du logiciel, la zone blanche au
e
o
matriel.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

12

Introduction

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

On peut privilgier une approche de conception des circuits digitaux et


e
darchitecture de machine. Sur la gure 0.1 cela correspond aux `ches en
e
traits larges et hachurs.
e
On peut privilgier une approche centre sur larchitecture de haut niveau
e
e
et les syst`mes dexploitation. Sur la gure 0.1 cela correspond aux `ches en
e
e
traits pointills.
e
Il nen reste pas moins que les auteurs ont cherch ` mettre laccent sur la
ea
globalit et la complmentarit des 3 approches.
e
e
e
Index

Les mots en italique apparaissent souvent en index. Dans lindex, les


numros de page en gras indiquent les occurrences de dnition des mots.
e
e
Les autres numros indiquent des occurrences dutilisation des mots, parfois
e
antrieures ` leur dnition, parfois postrieures.
e
a
e
e

Remerciements

Les ides, principes, techniques, outils, mthodes, prsents dans ce livre


e
e
e
e
ne sont pas les rsultat de nos dcouvertes. Nous avons reu des enseignee
e
c
ments, puis nous avons lu, essay, enseign. Sans ceux qui nous ont prcds
e
e
e e e
ce livre nexisterait pas. Sans celles et ceux qui ont enseign avec nous le moe
dule Architectures Logicielles et Matrielles au l des annes il serait sans
e
e
doute plus pauvre. En particulier Catherine, Danielle, Jolle, Jean-Louis et
e
Jean-Paul reconna
tront certaines de leurs bonnes inuences. Les mauvaises
viennent dailleurs !

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 1

Quest-ce quun ordinateur ?


Un ordinateur est une machine, presque toujours lectronique, qui
e
excute des programmes. Ces programmes traitent des donnes. Une machine
e
e
lectronique est un objet. Par opposition, les programmes et les donnes sont
e
e
des informations. Cette opposition est celle qui existe entre matriel et logie
ciel. Lensemble du livre est consacr ` montrer de faon dtaille comment ces
ea
c
e
e
deux univers se rencontrent pour former larchitecture de lordinateur. Dans ce
premier chapitre, nous faisons un tr`s rapide survol permettant de situer les
e
notions avant de les dcrire de faon dtaille.
e
c
e
e
Le paragraphe 1. dcrit ce quest une information et sa reprsentation.
e
e
Cela nous permet de parler de programmes. Puis nous dcrivons une
e
machine ` excuter les programmes et nous insistons sur la notion
a e
dexcution dans le paragraphe 2. Cela nous permet au paragraphe 3. de
e
montrer les dirents matriels et logiciels prsents dans lordinateur.
e
e
e
Nous voquons enn les usages de lordinateur au paragraphe 4.
e

1.

Notion dinformation

Une information est une entit abstraite, lie ` la notion de connaissance.


e
e a
Nous nous intressons naturellement aux informations dun point de vue teche
nique en informatique, non dun point de vue journalistique. Nous donnons
direntes facettes de linformation et sparons ltude des informations de
e
e
e
celle des objets.

1.1

Quelques aspects dune information

Nous avons besoin pour cerner la notion dinformation de donner lorigine


possible dune information et de montrer la ncessit de ses reprsentations
e
e
e
pour pouvoir envisager les manipulations dinformations dans les ordinateurs.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

14

1.1.1

Quest-ce quun ordinateur ?

Origine dune information

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Une information peut tre en relation avec une grandeur physique, lorie
gine tant par exemple mcanique (forme, dimensions, emplacements dobjets,
e
e
intensit dune force), lectromagntique (amplitude, frquence ou phase dun
e
e
e
e
signal lectrique, dune onde lectromagntique), lectrochimique (PH dun
e
e
e
e
liquide, potentiel lectrochimique dune cellule nerveuse).
e
1.1.2

Nom, valeur et combinaison dinformations

Une information a un nom : la temprature mesure au sommet de la Tour


e
e
Eiel, le caract`re tap au clavier, le montant de mon compte en banque.
e
e
Une information a une valeur ` un certain moment : 37 degrs, A, 5 000 F.
a
e
La plus petite information possible est une rponse par oui ou par non (on
e
parle de rponse boolenne) : le nombre est pair ou impair, le caract`re est une
e
e
e
lettre ou pas une lettre, le point de lcran est allum ou teint, la lettre est
e
e
e
une majuscule ou non, la touche de la souris est enfonce ou non. Une telle
e
petite information constitue un bit.
Lensemble des valeurs possibles peut tre ni (comme pour les caract`res),
e
e
ou potentiellement inni (comme pour mon compte en banque !). Un ensemble inni de valeurs peut prsenter des variations continues, cest-`-dire
e
a
quentre deux valeurs possibles il y a une valeur possible. Cest le cas pour la
temprature. Les variations sont discr`tes dans le cas contraire. Le solde de
e
e
mon compte en banque peut tre de 123,45 F ou de 123,46 F, mais pas dune
e
valeur entre les deux, car la banque arrondit les sommes au centime le plus
proche.
Direntes informations peuvent se combiner soit dans lespace (les mone
tants des comptes en banque de dirents clients) soit dans le temps (lhistoe
rique des variations de mon compte).
Les combinaisons dans lespace contiennent un nombre ni dlments. En
ee
revanche un syst`me informatique traite des informations qui peuvent varier
e
un nombre non born de fois au l du temps. Il sut de maintenir le syst`me
e
e
en tat de marche.
e
1.1.3

Reprsentation et codage
e

Une information a une reprsentation sous forme de grandeur(s) phye


sique(s) associe ` une convention, ou code, dinterprtation. Si une information
e a
e
est reprsente dans un code inconnu, elle nest pas comprhensible.
e
e
e
La grandeur physique peut tre la position dune aiguille sur un appareil
e
de mesure. On passe parfois par une reprsentation intermdiaire sous forme
e
e
de suite de lettres et de chires, reprsents ` leur tour par une grandeur
e
e a
physique (traces sur un papier par exemple). Pour laiguille sur un cadran on
parle de reprsentation analogique ; si lintermdiaire des chires est mis en jeu
e
e
on parle de reprsentation numrique ou digitale. Cette dirence se retrouve
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Notion dinformation

15

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

entre les disques anciens et les disques compacts. Il est parfois ncessaire de
e
raliser par un dispositif lectronique une conversion entre ces deux types de
e
e
reprsentation.
e
Un chire binaire, 0 ou 1, sut ` reprsenter un bit. Un vecteur de bits
a
e
constitue un mot. Les mots de 8 bits sont des octets.
Une mme information peut tre reprsente dans lordinateur de faons
e
e
e
e
c
diverses : le caract`re frapp au clavier est dabord connu comme un couple
e
e
de coordonnes dune touche au clavier (la touche en deuxi`me colonne de la
e
e
troisi`me ligne), puis par une squence de variations de potentiel sur une ligne
e
e
lectrique liant le clavier et lordinateur (combinaison temporelle), puis par un
e
vecteur de chires binaires dont les composantes sont les unes ` ct des autres
a oe
en mmoire (combinaison spatiale), puis par une reprsentation sous forme de
e
e
matrice de points allums/teints sur lcran.
e e
e
Pour les informations structures complexes (en raison des combinaisons)
e
le codage constitue un langage. Les programmes sont crits dans des langages
e
de programmation, les gures sont dcrites dans des langages de description
e
de gures, etc.
Dans le langage courant on assimile souvent linformation, sa valeur, sa
reprsentation.
e

1.2

Utilisation des informations dans lordinateur

Dans les ordinateurs les informations sont mmorises, transmises et


e
e
traites. Nous retrouvons cette triple fonction dans le paragraphe 3.1.3 En
e
informatique lassociation du nom dune information et de la reprsentation
e
de la valeur constitue une variable.
1.2.1

Stockage (ou mmorisation) des informations


e

On peut copier, cest-`-dire crer un nouvel exemplaire de linformation


a
e
en lui associant un nouveau reprsentant physique. Mais cest toujours la
e
mme information : elle est simplement matrialise plusieurs fois. On peut
e
e
e
aussi dtruire un exemplaire de linformation : elle dispara avec son dernier
e
tra
reprsentant. Une information est stocke dans une mmoire si on ne veut pas
e
e
e
quelle disparaisse.
1.2.2

Transmission des informations

Les informations traites dans lordinateur peuvent provenir de disposie


tifs matriels (capteur de temprature par exemple). Elles peuvent provenir
e
e
dun utilisateur via un clavier, une souris, . . .Une information sortante, sous
la forme dune tension sur un l lectrique, peut inuencer un matriel par
e
e
lintermdiaire dun actionneur, comme un dclencheur dalarme. Dirents
e
e
e
syst`mes dinterface permettent ` lordinateur de communiquer avec le monde
e
a
extrieur.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

16

Quest-ce quun ordinateur ?

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Les informations peuvent tre transmises dun point ` un autre. Des liaie
a
sons par ls lectriques ou par ondes lectro-magntiques (radio, infra-rouge,
e
e
e
visible, . . .) nous sont famili`res. A lintrieur dun ordinateur la distance est
e
e
parfois de moins dun micron (106 m). Quand une fuse transmet vers la Terre
e
des images de lespace, la distance est de plusieurs millions de kilom`tres. Les
e
rseaux permettent les transmissions entre ordinateurs.
e
Il arrive que le codage de linformation comporte une certaine redondance.
Cela peut permettre, si lon garde linformation en exc`s, de dtecter des ere
e
reurs de transmission, ou, si le dbit dinformation est une priorit, de come
e
presser la reprsentation avant de la transmettre.
e
1.2.3

Traitement des informations : donnes, programmes


e

On peut raliser des oprations de combinaison dinformations pour gnrer


e
e
e e
de nouvelles informations. Dans le cas des ordinateurs, il sagit tr`s souvent
e
doprations arithmtiques de calcul et de comparaison. Etymologiquement
e
e
lordinateur met de lordre.
Il existe des informations qui dcrivent ces traitements appliqus ` dautres
e
e a
informations : Diviser la distance parcourue par le temps de trajet. Le rsultat
e
est la vitesse ; Comparer deux caract`res et dterminer le premier dans
e
e
lordre alphabtique ; Convertir une information reprsente selon le code
e
e
e
1 pour la reprsenter selon le code 2. Des encha
e
nements de tels ordres constituent des programmes. Les autres informations sont nommes donnes. Les
e
e
ordres lmentaires sont des instructions. Une instruction indique un chanee
gement dtat dans lordinateur. Ltat de la machine avant linstruction est
e
e
dirent de son tat apr`s.
e
e
e
Attention, les instructions peuvent tre considres comme des donnes ` un
e
ee
e a
certain moment. Par exemple quand le programmeur imprime son programme,
les instructions du programme dimpression traitent le programme comme un
texte ordinaire ; de mme le compilateur traite le programme ` compiler comme
e
a
une donne.
e
On dit parfois que linformatique concerne le traitement de linformation,
mais il serait plus exact de parler du traitement dune reprsentation de line
formation. Cette reprsentation peut tre nie (dans lespace) ou innie (dans
e
e
le temps).

1.3

Information par rapport ` objet,


a
logiciel par rapport ` matriel
a
e

Enfonons quelques portes ouvertes pour distinguer la notion dinformation


c
de celle dobjet. La distinction est de mme nature que celle qui distingue le
e
logiciel du matriel.
e
Un objet peut tre dupliqu. Cela donne deux objets. Si la reprsentation
e
e
e
dune information est duplique il ny a toujours quune information. Mais
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Lordinateur : une machine qui excute


e

17

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

il y a probablement deux supports physiques. Les informations peuvent tre


e
mmorises, videmment pas les objets.
e
e e
Une information peut voyager par tlphone ou par courrier lectronique.
ee
e
Un objet ne le peut pas.
Produire un objet suppose de la mati`re premi`re. La production dobjet
e
e
est une activit conomique du secteur secondaire. Produire une information
ee
demande de la mati`re grise. La production dinformation est une activit du
e
e
secteur tertiaire.
Lors de la ralisation dun objet, des dfauts de fabrication peuvent ape
e
para
tre. Une information peut tre considre comme vraie ou fausse, mais
e
ee
elle na pas de dfaut de fabrication.
e
Un objet peut tomber en panne, se dgrader au l du temps. Une infore
mation peut tre accessible ou non, dans un code comprhensible ou non. Le
e
e
support de la reprsentation dune information peut sab
e
mer, la reprsentation
e
peut dispara
tre.

1.4

Objet et description dobjet

Attention ` ne pas confondre lobjet matriel et sa description ; la descripa


e
tion de lobjet est une information. Ainsi la description dun ordinateur na pas
de dfauts de fabrication, ne peut tomber en panne, est reproductible, voyage
e
sur un l.
Par contre lordinateur lui-mme est un objet compos de ls, de silicium,
e
e
de tlerie, de ventilateurs. Sa description est une information code graphio
e
quement dans un schma ou textuellement par un ensemble dquations ou de
e
e
formules. Il existe des langages de description de matriel informatique.
e
Pour obtenir lobjet il faut savoir raliser la description. Le rsultat de la
e
e
fabrication de lobjet ordinateur doit tre test. On doit vrier que lobjet est
e
e
e
conforme a sa description du point de vue du fonctionnement. Ce test vise la
`
dcouverte de dfauts de fabrication. Apr`s un temps de bon fonctionnement,
e
e
e
on peut refaire un test pour dcouvrir ou localiser des pannes. Les dfauts de
e
e
conception sont dune autre nature : ils concernent une dirence entre la dese
cription de lordinateur et lintention du concepteur. On peut les assimiler aux
bogues des programmes. Les programmes nont pas de dfauts de fabrication.
e
Ils peuvent comporter des fautes de typographie, de syntaxe ou des erreurs de
conception.

2.

Lordinateur : une machine qui excute


e

Lordinateur est un objet. Il excute des informations (les programmes)


e
a
` propos dautres informations (les donnes). Un ordinateur correspond ` un
e
a
certain moule, un mod`le de calcul.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

18

Quest-ce quun ordinateur ?

Mot de m bits
Adresses

Acc`s mmoire
e
e

Compteur
1 1 1 0 ... 0 Programme

0
1
2
3

0 1 0 0 1 ... 0
Lecture/Ecriture 0 1 0 1 0 ... 1

0 0 1 0 ... 0 Registre
Instruction

bus donnes
e

1 0 1 0 ... 1
0 0 1 1 ... 1 Registres
de
calcul

bus adresses

Donnes
e

1 1 1 1 0 ... 0
1 1 1 0 0 ... 1

Unit de calcul
e

Processeur

Programme

Initialisation

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Horloge

2n 1

Mmoire centrale
e

Fig. 1.1 Architecture simplie dune machine de Von Neumann


e

2.1

Mod`le de calcul, machine de Turing


e

Un mod`le de calcul comporte un ensemble de transformations applicables `


e
a
un ensemble de donnes. Il comporte aussi lensemble des r`gles de composition
e
e
de ces transformations. Prenons un exemple en gomtrie o` calculer signie
e e
u
dessiner : le calcul par la r`gle et le T glissant. En gomtrie plane, en nutilisant
e
e e
que la r`gle et le T glissant, il est possible de calculer la parall`le ` une droite
e
e a
passant par un point donn, la perpendiculaire ` une droite passant par un
e
a
point, lorthocentre dun triangle, etc. Lutilisation de la r`gle et du T glissant
e
constitue un mod`le de calcul.
e
Si lon ajoute le compas, on obtient un autre mod`le de calcul, plus puissant,
e
cest-`-dire permettant de construire dautres gures.
a
En informatique, la machine abstraite de Turing est un mod`le de cale
cul. Le mathmaticien britannique Turing [Gir95, Tur54, Las98] a dni une
e
e
classe de fonctions calculables en composant (ventuellement rcursivement)
e
e
des fonctions lmentaires. Il a dni un mod`le abstrait de machine et montr
ee
e
e
e
que cette machine pouvait eectivement calculer la classe de fonctions dnie.
e
Ce mod`le est un maximum, on ne conna pas de mod`le plus puissant. Cette
e
t
e
machine est toutefois tr`s rudimentaire, sa programmation est donc ardue. Obe
tenir un rsultat suppose de nombreuses oprations lmentaires. La machine
e
e
ee
de Turing suppose lexistence dun dispositif de mmorisation de dimension
e
innie. Ce nest donc pas un mod`le raliste.
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Lordinateur : une machine qui excute


e

2.2

19

Larchitecture de Von Neumann

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Les travaux raliss autour du mathmaticien hongrois Von Neue e


e
mann [BGN63] constituent le fondement de larchitecture des ordinateurs actuels. Du point de vue thorique, on a pu dmontrer que le mod`le concret de
e
e
e
Von Neumann poss`de les proprits de la machine abstraite de Turing.
e
ee
Il y a quelques mod`les de calcul en informatique qui ne sont pas de ce
e
type : par exemple le calcul par rseaux de neurones formels.
e
Pratiquement tous les mod`les informatiques de traitement se retrouvent
e
dans la catgorie gnrale des automates, ou syst`mes squentiels.
e
e e
e
e
Les principes de la machine de Von Neumann, que nous allons dcrire, sont
e
encore en oeuvre dans la quasi totalit des ordinateurs contemporains. Il y
e
a eu, naturellement, de nombreuses amliorations. Une machine de Von Neue
mann (voir Figure 1.1) stocke des reprsentations des informations digitales,
e
en binaire. Elle comporte deux lments : une mmoire et une unit centrale.
ee
e
e
On parle plus facilement aujourdhui de processeur plutt que dunit ceno
e
trale. Habituellement les machines parall`les ` plusieurs processeurs ne sont
e
a
pas considres comme des machines de Von Neumann.
ee
2.2.1

La mmoire centrale
e

Les informations sont codes sous forme numrique. Les instructions, les
e
e
caract`res, les couleurs, etc., sont reprsents par des suites de chires bie
e
e
naires. Les informations sont stockes dans une mmoire dans des emplacee
e
ments numrots nomms mots. Le numro dun emplacement est son adresse.
e e
e
e
Le maintien de la correspondance entre le nom de linformation et ladresse du
mot mmoire o` est range une de ses reprsentations est une tche dicile et
e
u
e
e
a
une proccupation permanente en informatique.
e
Une criture dans la mmoire associe une valeur ` une adresse (on parle
e
e
a
aussi daectation). Apr`s une criture, on peut excuter une ou plusieurs
e
e
e
lectures de la mme information. La lecture fournit la valeur associe ` cette
e
e a
adresse.
La mmoire est ` aectations multiples : on peut crire successivement
e
a
e
plusieurs valeurs dans un mot. Chaque criture associe une nouvelle valeur
e
a
` ladresse. Elle induit un changement de ltat de la machine, en dtruisant
e
e
lassociation prcdente. Elle nest pas rversible : il nest pas possible dannuler
e e
e
la nouvelle association pour accder ` nouveau ` lancien contenu.
e
a
a
La mmoire contient des donnes et des programmes constitus de suite
e
e
e
dinstructions. Le codage de linformation est tel que rien ne permet de reconna
tre une reprsentation de donne et une reprsentation dinstruction.
e
e
e
Cette distinction naurait pas de sens puisquun programme peut mme crer
e
e
des donnes qui sont en fait des instructions. Cette possibilit est ce qui donne
e
e
toute sa spcicit aux ordinateurs. Cela oppose le mod`le de type Von Neue
e
e
mann ` celui dit de Harvard ou de Manchester dans lequel il existe deux
a
mmoires respectivement ddies aux donnes et aux instructions.
e
e e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

20

Le processeur

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

2.2.2

Quest-ce quun ordinateur ?

Le processeur excute les instructions. Les instructions sont gnralement


e
e e
excutes dans lordre o` elles sont crites dans la mmoire, mais certaines
e e
u
e
e
instructions peuvent introduire des ruptures de cette squentialit. La r`gle
e
e
e
gnrale est donc la correspondance entre lordre de rangement en mmoire et
e e
e
lordre dexcution.
e
Linstruction en cours dexcution est repre par son adresse. Cette adresse
e
ee
est stocke dans une partie du processeur appel pointeur dinstruction, compe
e
teur ordinal ou compteur programme.
Le processeur est dot au minimum de deux lments de mmorisation
e
ee
e
particuliers appels des registres : le compteur ordinal dj` cit et le registre
e
ea e
dinstruction dans lequel le processeur stocke une copie de linstruction en
cours dexcution.
e
Le processeur excute cycliquement la tche suivante dite dinterprtation
e
a
e
des instructions ou dexcution des instructions :
e
Lecture de linstruction ` excuter : le processeur transmet ` la mmoire
a e
a
e
ladresse de linstruction ` lire, autrement dit le contenu du compteur ordia
nal, et dclenche une opration de lecture. Il reoit en retour une copie de
e
e
c
linstruction quil stocke dans son registre dinstruction.
Dcodage : le processeur examine le contenu du registre dinstruction et
e
dtermine lopration ` eectuer. Si le contenu du registre ne correspond
e
e
a
pas ` une instruction valide, cest une erreur. En eet, en fonctionnement
a
normal, le compteur programme pointe sur un mot mmoire contenant une
e
instruction. Le dcodage est le moyen de vrier quune information est
e
e
bien une instruction.
Excution : le processeur eectue lopration dcrite par linstruction. Cette
e
e
e
excution met souvent en jeu une unit de calcul ou Unit Arithmtique et
e
e
e
e
Logique. Cet oprateur eectue des calculs sur les donnes stockes dans
e
e
e
des registres de calcul ou accumulateurs.
Slection de linstruction suivante : le processeur calcule ladresse de linse
truction suivante. Cela se fait le plus souvent en ajoutant 1 au compteur
ordinal.
Une instruction de saut ou branchement force une rupture de lordre implicite dexcution des instructions dni par leur position dans la mmoire.
e
e
e
Son excution consiste ` stocker dans le registre compteur ordinal une autre
e
a
adresse que celle obtenue implicitement par incrmentation de ce dernier. En
e
utilisant des branchements, on peut faire en sorte que lexcution globale du
e
programme comporte plusieurs excutions dune mme instruction. Le texte
e
e
dun programme est donc une reprsentation nie dun comportement qui dure
e
ventuellement indniment. Cest lessence mme de la programmation. Un
e
e
e
algorithme est un texte de taille nie.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Lordinateur : une machine qui excute


e

21

Ecran

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Clavier

Processeur

Mmoire
e
centrale

Disque

Fils spcialiss
e
e

Coupleur
de clavier

Coupleur
dcran
e

Coupleur
de disque

Bus donnes
e

Bus adresses

Fig. 1.2 Architecture matrielle simplie dun ordinateur


e
e

2.2.3

Liaisons entre le processeur et la mmoire


e

Le processeur dialogue avec la mmoire via trois sortes de ls lectriques


e
e
groups en paquets nomms bus : 1) le bus dadresse transmet du procese
e
seur vers la mmoire linformation adresse. 2) le bus de donnes transporte
e
e
le contenu de lemplacement mmoire auquel on acc`de. Le terme de bus de
e
e
valeur aurait t plus explicite : le processeur peut interprter la valeur qui
ee
e
transite sur ce bus comme une donne ou comme une instruction. 3) des sie
gnaux complmentaires prcisent ` quel instant a lieu lacc`s (Acc`s mmoire)
e
e
a
e
e e
et dans quel sens (Lecture/Ecriture). La gure 1.2 montre une telle organisation.
2.2.4

Langages du processeur : langage machine et


langage dassemblage

Pour tre interprtes par le processeur, les instructions dun programme


e
ee
doivent tre reprsentes selon un certain code et stockes dans la mmoire
e
e
e
e
e
centrale dans un format appel langage machine. Le langage machine dcrit
e
e
lensemble des instructions comprises par le processeur et la convention de
codage pour que celles-ci soient excutables. On parle de jeu ou de rpertoire
e
e
dinstructions. Le codage dune instruction est un vecteur de 0 et de 1.
Donnons quelques exemples de ce que peuvent tre les instructions : Ajoue
ter 258 et le nombre contenu en mmoire ` ladresse 315 puis ranger le rsultat
e
a
e
a
` ladresse 527, Si le nombre rang en mmoire ` ladresse 124 est posie
e
a
tif, alors sauter ` lexcution de linstruction ` ladresse 471, sinon continuer
a
e
a
en squence, cest-`-dire passer ` linstruction suivante dans la mmoire.
e
a
a
e
Dirents sous-vecteurs, ou champs, reprsentent alors la valeur immdiate
e
e
e
de loprande 258, ou bien ladresse directe 315, ou encore le code opration
e
e
addition.
Un programme crit en langage machine a lapparence dune suite de
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

22

Quest-ce quun ordinateur ?

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

chires binaires peu vocatrice pour un programmeur humain. Cest poure


quoi on utilise un langage dit dassemblage, dans lequel on dcrit exactement
e
les mmes instructions, mais sous une forme textuelle plus facile ` manipuler
e
a
que des paquets de 0 et de 1.
Le programe crit en langage dassemblage doit ncessairement tre traduit
e
e
e
en langage machine pour tre excut. Le programme qui eectue cette trae
e e
duction est lassembleur. Un abus de langage frquent confond le langage et le
e
traducteur. On emploie lexpression impropre de programmation en assembleur
pour programmation en langage dassemblage.
On parle de code source ` propos dun programme crit dans le langage
a
e
dassemblage et de format objet ou de format excutable ` propos du rsultat
e
a
e
de la traduction.
Le rsultat de la traduction est une donne qui peut tre en mmoire, en
e
e
e
e
cours dexcution ou non. Il passe de ltat de donne ` celui de programme en
e
e
e a
cours dexcution au moment du lancement. Le lancement est une opration
e
e
spciale qui change le statut du programme. Elle consiste ` aecter au compe
a
teur ordinal du processeur ladresse de la premi`re instruction du programme
e
a e
` excuter.
Chaque processeur a son propre langage machine. Un programme en langage machine crit pour le processeur X ne peut pas, en gnral, sexcuter sur
e
e e
e
un processeur Y. Dans le cas contraire X et Y sont dits compatibles.
Il existe des machines ` jeu dinstructions complexe Complex Instruction
a
Set Computer ou plus restreint Reduced Instruction Set Computer.

3.

O` sont le matriel et le logiciel ?


u
e

Dans une machine informatique se trouvent du matriel et des logiciels. Une


e
fonction ralise par du logiciel sur une certaine machine peut tre ralise par
e e
e
e e
du matriel sur une autre. Cest le cas pour certains calculs ou transcodages
e
complexes, par exemple le calcul sur des rels reprsents dans le codage virgule
e
e
e
ottante. La mise en oeuvre dun algorithme par un programme est classique.
Sa mise en oeuvre par du matriel, par des techniques dalgorithmique cble,
e
a e
est moins connue car moins facile ` exprimenter sur un simple ordinateur
a
e
personnel.

3.1

Matriel
e

Le matriel est pourtant plus directement accessible ` la vue. Nous allons


e
a
lexaminer selon trois crit`res : son aspect, sa technologie et sa fonction.
e
3.1.1

Aspect du matriel
e

Une premi`re approche du matriel consiste ` le considrer selon son aspect.


e
e
a
e
Un ordinateur peut ressembler ` une caisse surmonte dun cran. Noublions
a
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. O` sont le matriel et le logiciel ?


u
e

23

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

pas quun ordinateur peut parfois tre une armoire, ou une carte imprime,
e
e
voire simplement une puce ou circuit comme sur votre carte bancaire. Lcran
e
nest pas ncessaire ` lordinateur. Ce nest quun moyen de communiquer entre
e
a
la machine et ltre humain.
e
3.1.2

Technologie du matriel
e

Une deuxi`me classication dlments matriels se base sur les phnom`nes


e
ee
e
e
e
mis en oeuvre.
Certains syst`mes sont purement lectriques ou lectroniques. Ces syst`mes
e
e
e
e
sont organiss selon une hirarchie correspondant ` la technologie de ralisation
e
e
a
e
utilise : dans les caisses, il y a des cartes imprimes, sur lesquelles sont souds
e
e
e
des bo
tiers. Dans les bo
tiers il y a des (le plus souvent une seule) puces
comprenant des transistors, rsistances et condensateurs.
e
Pour lacquisition de donnes externes, on utilise souvent des syst`mes
e
e
mcaniques ou lectromcaniques. Les claviers et souris sont de ce type. On a
e
e
e
plus gnralement des capteurs de pression, dacclration, etc., et des actione e
ee
neurs de mouvements divers. Lensemble peut constituer un robot. Dirents
e
capteurs ou actionneurs peuvent se trouver sous forme de puce ou de composants spars. Les microsyst`mes runissent sur une seule puce capteurs, actione e
e
e
neurs et llectronique de traitement. Des syst`mes lectromcaniques sont utie
e
e
e
liss notamment pour la lecture ou lenregistrement sur supports magntiques
e
e
ou optiques.
Certains syst`mes sont lectro-optiques comme les crans, les diodes
e
e
e
lectroluminescentes, les camras ou appareils photo numriques, les lecteurs
e
e
e
de code-barre, les scanners, etc.
Les ordinateurs pneumatiques, o` la pression dans des tubes tient lieu de
u
courant lectrique, sont assez rares.
e
3.1.3

Fonctions du matriel
e

La troisi`me faon de caractriser le matriel est de le faire dapr`s sa fonce


c
e
e
e
tion. Les lments matriels ont dirents types de fonctions : de mmorisation,
ee
e
e
e
de traitement et de communication.
La mmorisation stocke des informations dans la machine. Le cot et la
e
u
dure du stockage et des oprations de copie dpendent fortement du mode de
e
e
e
reprsentation physique.
e
Si une information tait reprsente par un champ de menhirs, le stockage
e
e
e
prendrait de la place, la duplication serait dicile (sauf pour Oblix). La dure
e
e
de stockage serait en revanche de plusieurs si`cles.
e
Dans lordinateur, linformation est reprsente par des signaux lectriques
e
e
e
de faible puissance. La copie est rapide et de faible cot nergtique. La dure
u e
e
e
de vie dpend ventuellement dune source dalimentation lectrique.
e
e
e
On distingue classiquement la mmoire principale et la mmoire secondaire.
e
e
La mmoire principale est directement accessible dans lordinateur. Elle come

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

24

Quest-ce quun ordinateur ?

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

porte une partie de mmoire vive et une partie de mmoire morte. Quand on
e
e
coupe lalimentation lectrique, la mmoire morte ne perd pas les informations
e
e
qui y sont inscrites. La mmoire morte ne peut pas tre facilement modie.
e
e
e
La mmoire secondaire contient des informations moins directement accessibles
e
par le processeur. Il faut passer par une interface. Ainsi les disques souples ou
durs sont des mmoires secondaires. Elles sont gnralement permanentes :
e
e e
linformation y reste en labsence dalimentation lectrique. La carte perfore
e
e
a longtemps constitu un support de stockage en informatique. Son avantage
e
est de pouvoir tre lue directement par lutilisateur humain.
e
Une mmorisation a lieu aussi dans le processeur qui garde temporairement
e
des copies de certaines informations dans ses registres.
La fonction de traitement est assure par le processeur. Il peut lire ou crire
e
e
le contenu de la mmoire principale. Il peut ensuite, comme on la vu, excuter
e
e
les instructions lues.
Dautres circuits ont des fonctions de communication entre le processeur
et la mmoire ou entre le processeur et le monde extrieur. Ces circuits dine
e
terfaage et de communication sont des coupleurs. Les communications avec
c
le monde extrieur se font ` travers des priphriques comme les claviers, soue
a
e
e
ris, lecteur/graveur/enregistreurs de disques. Dautres types de coupleurs permettent de connecter lordinateur ` dautres ordinateurs via un rseau. Dans
a
e
les applications industrielles o` une cha de production est pilote par ordiu
ne
e
nateur il serait incongru de considrer la cha comme un priphrique ! Du
e
ne
e
e
point de vue du programmeur cest pourtant le cas.

3.2

Les programmes et les donnes


e

Les programmes et les donnes peuvent tre enregistrs sur des supports
e
e
e
magntiques ou en mmoire vive ou morte. Ils peuvent tre prsents (en pare
e
e
e
tie) dans le processeur : ` un instant donn linstruction en cours dexcution
a
e
e
est dans dans le registre dinstruction du processeur. Cette information est
duplique, on ne lenl`ve pas de la mmoire pour lexcuter. Les programmes
e
e
e
e
peuvent tre achs ` lcran ou crits sur une feuille de papier.
e
e a e
e
Sur un mme disque optique ou magntique, ou dans une mmoire, on
e
e
e
peut trouver le texte source dun programme et le format objet correspondant. Quand on ach`te un logiciel on nach`te gnralement que le code objet.
e
e
e e
Lditeur se prot`ge ainsi contre la possibilit pour le client de modier le logie
e
e
ciel. On ach`te aussi le plus souvent des donnes : dictionnaire du vricateur
e
e
e
orthographique, images des jeux, etc.

3.3

La vie du matriel et des programmes


e

Le matriel a une vie tr`s simple : avant la mise sous tension, il ne fait
e
e
rien. Certaines informations sont stockes en mmoire morte ou en mmoire
e
e
e
secondaire. Aucun traitement na lieu ; ` la mise sous tension, il se produit une
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Fonctionnalits des ordinateurs


e

25

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

rinitialisation automatique (reset), qui fait dmarrer le syst`me matriel dans


e
e
e
e
son tat initial, et donc lance lexcution du logiciel. Une rinitialisation peut
e
e
e
avoir lieu ` nimporte quel instant sur commande de lutilisateur.
a
Tout ordinateur (sauf de tr`s rares exceptions) est rythm par un sie
e
gnal priodique nomm lhorloge. Ce signal cadence les changements dtats
e
e
e
dans lordinateur. Un ordinateur dont la frquence dhorloge est de 250 Mhz
e
(Mgahertz) change dtat avec une priode de 4 ns (nanosecondes, cest-`-dire
e
e
e
a
4.109 secondes). Lexistence de cette horloge permet de grer une pendule qui
e
donne lheure ` lutilisateur et date ses chiers. La prcision na pas besoin
a
e
dtre ` la nanoseconde pr`s videmment. En revanche elle doit permettre de
e
a
e e
changer de si`cle !
e
La vie des programmes est plus agite ! Certains programmes sont inse
crits en mmoire morte en usine, par le constructeur de lordinateur. Pour
e
la construction de petits ordinateurs spcialiss, la technologie dinscription
e
e
des mmoires mortes est accessible assez facilement. Certains programmes
e
comme les noyaux de syst`mes dexploitation ou les jeux sur cartouche, sont
e
gnralement sur un tel support.
e e
Certains programmes se trouvent en mmoire vive. Ils ny apparaissent pas
e
par gnration spontane. Ils sont le rsultat dun cycle : dition, sauvegarde,
e e
e
e
e
traduction ventuelle, chargement (dun support secondaire vers la mmoire
e
e
vive). Ces tapes sont gnralement suivies dun lancement.
e
e e
Lordinateur comporte les outils logiciels ncessaire ` ces actions : diteur
e
a
e
de texte, gestion de chiers, traducteur, chargeur, lanceur sont pilots par un
e
utilisateur humain par lintermdiaire dun encha
e
neur de travaux : linterpr`te
e
de commandes.
Dans les vieilles machines on pouvait entrer des programmes en mmoire et
e
forcer le compteur programme directement en binaire, avec des interrupteurs
a
` deux positions. Il ny avait plus qu` appuyer sur un bouton pour lancer
a
lexcution. Ctait le bon temps !
e
e

4.

Fonctionnalits des ordinateurs


e

Cette partie dcrit dirents usages de lordinateur. Cela nous permet ene
e
suite de distinguer lordinateur de direntes machines programmables qui ne
e
sont pas des ordinateurs.

4.1

Les usages de lordinateur

Distinguons deux usages bien dirents des ordinateurs.


e
Certains ordinateurs ont atteint une destination nale ; cest le cas par
exemple de la console de jeux, du traitement de texte de la dactylographe, du
syst`me de rservation de la compagnie arienne, de la station de travail en bue
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

26

Quest-ce quun ordinateur ?

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

reau dtude de mcanique, du contrleur de programmation du magntoscope,


e
e
o
e
ou de la calculette programmable.
Dautres ordinateurs nont pas encore atteint ce stade. Pour linstant ils
ne servent qu` des informaticiens pour crire des programmes. Ils ne servent
a
e
encore qu` la mise au point dune certaine destination nale. Souvent un
a
mme ordinateur peut servir ` dvelopper des jeux, un traitement de texte ou
e
a e
une calculette par simulation.
Certains ordinateurs peuvent tre utiliss des deux mani`res : les programe
e
e
meurs de la compagnie arienne changent les programmes sur la machine sans
e
interrompre les rservations, ce qui nest pas forcment simple.
e
e
Sur certains ordinateurs il est possible dutiliser des logiciels dits de Conception Assiste par Ordinateur (CAO) pour concevoir des voitures, des moteurs
e
ou les puces qui seront ` la base dun futur ordinateur.
a
4.1.1

Fonctionnalits des ordinateurs pour non programmeurs


e

Remarquons que ces machines sont souvent qualies de programmables,


e
comme cest le cas pour les magntoscopes.
e
Dans une telle machine il faut pouvoir introduire des informations et lancer des excutions. Si lon regarde de plus pr`s, il faut pouvoir introduire des
e
e
donnes (les textes du traitement de texte, les oprandes de la calculette non
e
e
programmable) et des programmes dans le langage de la machine programmable visible. Par exemple pour le magntoscope : enregistrer la cha x, de
e
ne
h1 ` h2 heures, pendant N jours, tous les M jours. Le processeur nexcute pas
a
e
directement ce type de programmes qui ne sont pas crits en langage machine.
e
Le programme en langage machine qui est excut consid`re enregistrer, x, h1,
e e
e
h2, N et M comme des donnes. Ces programmations sont interprtes par un
e
ee
programme en langage machine qui est fourni avec la machine. Ce programme
est totalement invisible pour lutilisateur.
Par ailleurs il faut pouvoir lancer un tel programme en langage machine
qui prend ces param`tres (enregistrer, h1,..) et sexcute en tenant compte de
e
e
leurs valeurs.
Cette double fonctionnalit permettant une phase de programmation et une
e
phase dexcution nest pas facile ` comprendre pour les utilisateurs non ine
a
formaticiens. Linformaticien qui devra un jour crire un mode demploi dune
e
telle machine doit sen souvenir.
Dans de telles machines lutilisateur peut parfois installer des programmes
nouveaux quil se procure : jeux, nouvelle version de traitement de texte, etc.
Ils sont dj` en langage machine ; il faut pouvoir mmoriser ces programmes
ea
e
sur un disque et les lancer. On est tr`s proche alors dun ordinateur.
e
4.1.2

Fonctionnalits des ordinateurs pour programmeurs


e

Dans ces machines il faut pouvoir crire des programmes et les traduire
e
en langage machine puis les charger et les lancer. La traduction dun pro-

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Fonctionnalits des ordinateurs


e

27

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

gramme crit dans un langage de haut niveau en un texte en langage mae


chine est une compilation. Il y a donc des programmes qui permettent dcrire,
e
sauver, traduire, lancer des programmes. Sur les ordinateurs utiliss pour
e
le dveloppement de programmes, les programmes peuvent, comme sur le
e
magntoscope, tre interprts.
e
e
ee
Sur les ordinateurs compliqus o` plusieurs programmeurs travaillent en
e u
mme temps chacun veut quand mme avoir limpression davoir un ordinateur
e
e
pour lui tout seul. Cest le cas de lordinateur de la compagnie arienne qui
e
g`re les places, permet la mise au point de programmes, etc.
e
Lensemble des outils permettant ldition, la sauvegarde et le lancement
e
de programmes pour un ou plusieurs utilisateurs constitue un syst`me dexe
ploitation. Un syst`me dexploitation comporte 2 parties :
e
Une partie basse fortement dpendante des caractristiques du matriel
e
e
e
comme le type de processeur ou les types de priphriques connects (souris
e
e
e
a
` 1, 2 ou 3 boutons, claviers azerty ou qwerty, lecteurs de disquettes
avec une vitesse de rotation plus ou moins grande). Des biblioth`ques de proe
grammes de gestion des priphriques, nommes les pilotes de priphriques,
e
e
e
e
e
sont toujours livres avec lordinateur ou avec le priphrique. Linstallae
e
e
tion de ces pilotes (drivers en anglais) cause bien des soucis aux utilisateurs
novices. Cette partie basse comporte aussi les outils permettant de grer
e
plusieurs utilisateurs simultans de lordinateur.
e
Une partie haute utilisant les primitives de la prcdente pour orir des
e e
services de plus haut niveau. Par exemple : apr`s une dition de texte, on le
e
e
sauvegarde en utilisant le programme de gestion de chiers. Ce gestionnaire
vrie si le chier existe dj`, si sa date enregistre est bien antrieure, etc.
e
ea
e
e
Mais la prise en compte de la vitesse de rotation du disque nest pas du
mme niveau. Le syst`me de gestion de chiers suppose ces aspects plus bas
e
e
dj` rsolus. De mme lenvoi dun courriel (ou ml) utilise des parties de
ea e
e
e
programmes qui ne dpendent pas du nombre de boutons de la souris.
e

4.2

Tout ce qui est programmable est-il un ordinateur ?

On rencontre de nombreux appareils lectromnagers dots dun squenceur


e
e
e
e
ou programmateur. Ce dernier leur permet dencha
ner automatiquement certaines actions, selon un ordre immuable g lors de la construction de la mae
chine (lutilisateur a parfois le choix entre plusieurs squences prdnies).
e
e e
Cest le cas des machines ` laver.
a
Une machine ` laver a un comportement cyclique complexe, avec
a
rtroaction de lenvironnement. Un moteur qui tourne dclenche ou non des
e
e
actions selon la programmation manifeste par la position de certains points de
e
contacts lectriques ; les actions continuent ou sarrtent selon le temps coul,
e
e
e
e
les informations provenant du dtecteur de temprature, le niveau deau, etc.
e
e
Les actions correspondant aux contacts sont faites dans lordre o` les contacts
u
sont touchs par un contacteur lectrique.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

28

Quest-ce quun ordinateur ?

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

On pourrait imaginer un comportement plus complexe dans lequel une


action est ou nest pas faite selon le rsultat de laction prcdente. Imaginons
e
e e
un dtecteur dopacit de leau de rinage : si leau est trop opaque, un rinage
e
e
c
c
supplmentaire a lieu.
e
Le matriel informatique a un tel comportement. Le processeur peut
e
tre assimil ` un moteur qui tourne. Le compteur programme, qui volue
e
e a
e
priodiquement, voque ce comportement : il passe devant des contacts, il
e
e
pointe successivement sur des instructions, et eectue les actions correspondantes. Si les contacts disent de sarrter ou daller plus loin d`s que laction
e
e
est termine, cela se produit. Les intructions peuvent tre conditionnelles. Elles
e
e
peuvent comporter des ruptures de squence. Dans ce cas les instructions ne
e
sont plus excutes dans lordre o` elles sont crites.
e e
u
e
Linformatique est toutefois plus complexe quune simple machine ` laa
ver car un programme peut avoir comme rsultat de crer et dcrire dans la
e
e
e
mmoire un programme et de lui passer la main, cest-`-dire de le lancer. Les
e
a
machines ` laver nen sont pas capables.
a

5.

Plan du livre

Le livre comporte six parties.


La premi`re partie donne des fondements pour toute linformatique, logie
cielle et matrielle. Les outils mathmatiques ne sont pas prsents ici pour
e
e
e
e
eux-mmes mais pour tre utiliss dans la suite. Les mots binaire, information,
e
e
e
bit, automate, boolen, reprsentation, tat, langage seront alors familiers.
e
e
e
La deuxi`me partie donne les techniques propres au matriel. Nous y
e
e
dcrivons toutes les tapes qui permettent de reprsenter et traiter les vece
e
e
teurs de 0 et de 1 sur du matriel. Les mots puce, syst`me squentiel, mmoire,
e
e
e
e
circuit, transistor ne poseront plus de probl`me.
e
La troisi`me partie donne les techniques propres au logiciel. Apr`s cette
e
e
partie, on sait tout sur langage, langage dassemblage, langage machine, saut,
branchement, registre.
La quatri`me partie est centrale. On y explique comment le processeur
e
excute les instructions. Ceci est fait de faon dtaille, en sappuyant sur les
e
c
e
e
connaissances acquises dans les trois premi`res parties. Apr`s cette partie on
e
e
a compris comment du matriel peut traiter du logiciel.
e
La cinqui`me partie donne tous les lments pour construire un ordinateur
e
ee
au sens o` nous venons de le dnir. Cela suppose des ajouts de matriel autour
u
e
e
du processeur et de la mmoire et lintroduction de programmes constituant le
e
syst`me dexploitation. Apr`s ce chapitre, on sait, de faon dtaille, comment
e
e
c
e
e
marche lordinateur et comment on le conoit. On pourrait donc sarrter l`.
c
e
a
La sixi`me partie est ncessaire pour le professionnel de linformatique.
e
e
On montre comment peut tre mis en place le syst`me qui permet daccepter
e
e
plusieurs utilisateurs eectuant plusieurs tches simultanment, ou tout au
a
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

5. Plan du livre
29

moins avec lapparence de la simultanit.


e e

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

30
Quest-ce quun ordinateur ?

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s
Premi`re partie
e

Outils de base de
lalgorithmique logicielle et
matrielle
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 2

Alg`bre de Boole et fonctions


e
boolennes
e
George Boole, mathmaticien anglais, a utilis pour la premi`re fois en
e
e
e
1850 une alg`bre ` 2 lments pour ltude de la logique mathmatique. Il a
e
a ee
e
e
dni une alg`bre permettant de modliser les raisonnements sur les proposie
e
e
tions vraies ou fausses. Etudie apr`s Boole par de nombreux mathmaticiens,
e
e
e
lAlg`bre de Boole a trouv par la suite de nombreux champs dapplication :
e
e
rseaux de commutation, thorie des probabilits, recherche oprationnelle
e
e
e
e
(tude des alternatives).
e
Les premi`res applications dans le domaine des calculateurs apparaissent
e
avec les relais pneumatiques (ouverts ou ferms). Aujourdhui, les ordinateurs
e
sont composs de transistors lectroniques fonctionnant sur 2 modes : bloqu ou
e
e
e
passant (Cf. Chapitres 7 et 8). Ils utilisent une arithmtique binaire (Cf. Chae
pitre 3). Lalg`bre de Boole constitue un des principaux fondements thoriques
e
e
pour leur conception et leur utilisation. Les circuits sont des implmentations
e
matrielles de fonctions boolennes.
e
e
Les fonctions boolennes peuvent tre reprsentes et manipules sous
e
e
e
e
e
direntes formes. Ces reprsentations ont des intrts variant suivant de nome
e
ee
breux crit`res. Selon la technologie de circuit cible, certaines reprsentations
e
e
sont plus adquates pour arriver ` une implmentation optimise. Une
e
a
e
e
reprsentation peut bien convenir ` certains types de fonctions et devenir tr`s
e
a
e
complexe, voire impossible ` utiliser pour dautres. Enn, selon loutil de CAO
a
(Conception assiste par ordinateur) utilis, certaines formes sont acceptes
e
e
e
(car bien adaptes ` une reprsentation sur machine) ou non.
e a
e
Le paragraphe 1. prsente les principales dnitions concernant cette
e
e
alg`bre et les fonctions boolennes. Les dirents moyens de reprsenter
e
e
e
e
ces fonctions boolennes sont numrs dans le paragraphe 2. Le parae
e
e e
graphe 3. dcrit les direntes manipulations que lon peut eectuer sur
e
e
ces reprsentations an dobtenir des formes permettant par la suite une
e
implmentation physique ` moindre cot.
e
a
u

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

34

Alg`bre de Boole et fonctions boolennes


e
e

Alg`bre de Boole
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

1.
1.1

Oprations
e

Soit lensemble B = {0, 1}. On dnit une relation dordre total sur cet
e
ensemble en posant : 0 1. A partir de cette relation dordre, on dnit les
e
oprations suivantes sur les lments de B :
e
ee
Addition :
x + y = max(x, y)
Multiplication :
x.y = min(x, y)
Complmentation : x = 0 si x = 1 et x = 1 si x = 0
e

On utilise les termes de somme, produit et complment pour les rsultats


e
e
de laddition, de la multiplication et de la complmentation. Le rsultat de
e
e
ces oprations est dtaill dans la table suivante :
e
e
e
a
0
1
0
1

1.2

b
0
0
1
1

a+b
0
1
1
1

a.b
0
0
0
1

1
0
-

Dnition
e

Soit A un ensemble non vide comportant deux lments particuliers nots


ee
e
0 et 1. On dnit sur lensemble A deux oprations binaires notes + et . et
e
e
e
une opration unaire note .
e
e
(A, 0, 1, +, ., ) est une alg`bre de Boole sil respecte les axiomes suivants :
e
1. Laddition et la multiplication sont commutatives et associatives.
a A, b A : a + b = b + a et a.b = b.a
a A, b A, c A : (a + b) + c = a + (b + c) et (a.b).c = a.(b.c)
Remarque : On pourra ainsi noter de faon quivalente (a.b).c ou
c e
a.b.c ; de mme : a + (b + c) ou a + b + c.
e

2. 0 est lment neutre pour laddition et 1 est lment neutre pour la


ee
ee
multiplication.
a A : 0 + a = a
a A : a.1 = a

3. Laddition et la multiplication sont distributives lune par rapport `


a
lautre : a A, b A, c A : (a + b).c = a.b + a.c et (a.b) + c =
(a + c).(b + c).
Remarque : Lusage a consacr la priorit de la multiplication sur
e
e
laddition comme dans la notation algbrique usuelle. Par souci de sime
plication dcriture, on notera de faon quivalente : (a.b) + c ou a.b + c.
e
c e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Alg`bre de Boole
e

35

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

4. Pour tout lement, la somme dun lment et de son complmentaire est


e
ee
e
gale ` 1 et le produit dun lment et de son complmentaire est gal `
e
a
ee
e
e
a
0 : a A : a + a = 1 et a A : a. = 0.

1.3

Exemples dAlg`bres de Boole


e

Lalg`bre de Boole la plus simple est dnie sur lensemble ` deux lments :
e
e
a
ee
B = {0, 1}. Pour ltude des raisonnements sur les propositions logiques,
e
il existe des synonymes pour les noms des lments de cet ensemble et des
ee
oprations ; on parle alors de faux et vrai (au lieu de 0 et 1) et des oprateurs et
e
e
et ou (au lieu de la multiplication et de laddition). Les dnitions et les proe
prits mathmatiques restent identiques. Ces termes sont utiliss aussi dans
ee
e
e
ltude des circuits logiques.
e
Lensemble des parties dun ensemble E (not P(E)) muni des oprations
e
e
dintersection ensembliste (correspondant ` .), dunion ensembliste (correspona
dant ` +) et de complmentaire ensembliste dans E (correspondant ` ) forme
a
e
a
une alg`bre de Boole. Lensemble vide correspond ` 0 et lensemble E ` 1.
e
a
a
Lensemble des nuplets de boolens muni des oprations daddition, de mule
e
tiplication et de complmentation tendues aux vecteurs forme une alg`bre de
e
e
e
Boole. (0, 0, . . . , 0) correspond ` 0 et (1, 1, . . . , 1) ` 1.
a
a
(x1 , x2 , ..., xn ) + (y1 , y2 , ..., yn ) = (x1 + y1 , x2 + y2 , ..., xn + yn )
(x1 , x2 , ..., xn ).(y1 , y2 , ..., yn ) = (x1 .y1 , x2 .y2 , ..., xn .yn )
(x1 , x2 , ..., xn ) = (x1 , x2 , ..., xn )

1.4

Principaux thor`mes
e e

Thor`me de dualit : Si (A, 0, 1, +, ., ) est une alg`bre de Boole alors


e e
e
e
(A, 1, 0, ., +, ) est aussi une alg`bre de Boole.
e
Ainsi les axiomes et r`gles de simplication peuvent se prsenter sous deux
e
e
formes duales, lune se dduisant de lautre en remplaant les + par des . et
e
c
les 1 par des 0 et inversement.
R`gles
e

de

a=a
a+1=1
a+a=a
a + a.b = a
a + a.b = a + b

a.b + a.b = b

a.b + a.c + b.c = a.b + a.c

simplication
duale

duale

duale

duale

duale

duale

duale

boolenne
e

a=a
a.0 = 0
a.a = a
a.(a + b) = a
a.( + b) = a.b
a
(a + b).( + b) = b
a
(a + b).( + c).(b + c) = (a + b).( + c)
a
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

36

Alg`bre de Boole et fonctions boolennes


e
e

x2
0
0
1
1

x3
0
1
0
1

y
1
1
0
0

x1
1
1
1
1

x2
0
0
1
1

x3
0
1
0
1

y
1
1
0
1

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

x1
0
0
0
0

Fig. 2.1 Table de vrit de la fonction : y = f (x1 , x2 , x3 )


e e

R`gles de De Morgan
e

duale
a.b = a + a + b = a.
b
b

On peut gnraliser ` n variables :


e e
a

duale

x1 .x2 . . . . .xn = x1 + x2 + . . . + xn x1 + x2 + . . . + xn = x1 .2 . . . . .n

x
x

2.

Fonctions boolennes
e

2.1

Fonctions boolennes simples


e

2.1.1

Dnitions
e

On appelle fonction boolenne simple une application de {0, 1}n dans


e
{0, 1} :
f

(x1 , x2 , ..., xn ) f (x1 , x2 , ..., xn )

(x1 , x2 , ..., xn ) est appele variable boolenne gnrale. f est appele fonction
e
e
e e
e
a
` n variables. Une valeur donne de (x1 , x2 , ..., xn ) est appele point de la
e
e
fonction.
La faon la plus simple de dnir une fonction est de donner la liste de
c
e
ses valeurs en chaque point. On peut le faire sous la forme dun tableau que
lon appelle aussi table de vrit. La gure 2.1 donne la table de vrit dune
e e
e e
fonction ` 3 variables.
a
Lensemble des points de la fonction forme le domaine de la fonction. On
dit quune fonction couvre tous les points pour lesquelles elle vaut 1 (sousensemble du domaine pour lequel la fonction vaut 1). La fonction f dnie par
e
la table 2.1 couvre les points (0, 0, 0), (0, 0, 1), (1, 0, 0),(1, 0, 1) et (1, 1, 1).
Remarque : Une fonction boolenne peut servir ` reprsenter un ensemble :
e
a
e
la fonction vaut 1 en chacun des points appartenant ` lensemble. On parle de
a
fonction caractristique.
e

2.1.2

Les fonctions ` 2 variables


a

Les fonctions ` deux variables sont dnies sur les 4 points


a
e
(0, 0), (0, 1), (1, 0), (1, 1). En chacun de ces 4 points une certaine fonction peut
prendre une des deux valeurs 0 ou 1. Il y a donc 24 = 16 fonctions possibles.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Fonctions boolennes
e

x2
0
1
0
1

f0
0
0
0
0

f1
0
0
0
1

f2
0
0
1
0

f3
0
0
1
1

f4
0
1
0
0

f5
0
1
0
1

f6
0
1
1
0

f13
1
1
0
1

f14
1
1
1
0

f7
0
1
1
1

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

x1
0
0
1
1

37

x1
0
0
1
1

x2
0
1
0
1

f8
1
0
0
0

f9
1
0
0
1

f10
1
0
1
0

f11
1
0
1
1

f12
1
1
0
0

f15
1
1
1
1

Fig. 2.2 Les tables de vrit des 16 fonctions ` deux variables


e e
a

Les tables de vrit des 16 fonctions ` deux variables sont listes dans la e e
a
e
gure 2.2. f1 et f7 correspondent respectivement ` la multiplication et laddition
a
algbriques vues auparavant.
e
2.1.3

Duale dune fonction

On appelle duale dune fonction f la fonction note f telle que : f (X) =


e
On dit quune fonction est autoduale si f (X) = f (X), X.
f (X).

2.2

Fonctions boolennes gnrales


e
e e

On appelle fonction boolenne gnrale une application F de {0, 1}n dans


e
e e
m
{0, 1} :
F
(x1 , x2 , . . . , xn ) (f1 (x1 , x2 , ..., xn ), f2 (x1 , x2 , ..., xn ), . . . , fm (x1 , x2 , ..., xn )).
Une fonction boolenne gnrale est un m-uplet de fonctions simples :
e
e e
F = (f1 , f2 , . . . , fm ).

2.3

Relations dordre

Lordre dni sur B est tendu aux variables gnrales et aux fonctions
e
e
e e
boolennes.
e
La relation dordre partiel sur les variables boolennes gnrales est dnie
e
e e
e
par : (x1 , x2 , ..., xn ) (y1 , y2 , ..., yn ) si et seulement si j, xj yj . Par exemple
(0, 0, 1) (0, 1, 1). En revanche, (1, 0, 1) et (0, 1, 0) ne sont pas comparables.
La relation dordre partiel sur les fonctions boolennes simples est dnie
e
e
comme suit. La fonction f est infrieure ` la fonction g si et seulement si pour
e
a
tout point P : f (P ) g(P ) ; cest-`-dire si tous les points couverts par f sont
a
couverts par g.
Remarque : Si f et g sont respectivement les fonctions caratristiques des
e
ensembles A et B, f g signie que A est inclus dans B.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

38

Alg`bre de Boole et fonctions boolennes


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

La relation dordre partiel sur les fonctions boolennes gnrales est dnie
e
e e
e
comme suit. La fonction gnrale F = (f1 , f2 , . . . , fm ) est infrieure ` la fonce e
e
a
tion G = (g1 , g2 , . . . , gm ) si pour tout i dans 1..m, on a fi gi .

2.4

Fonctions phi-boolennes
e

Une fonction boolenne partielle est une fonction boolenne dont la valeur
e
e
nest pas dnie en chaque point. Dans la pratique les fonctions partielles
e
sont utilises pour dnir des fonctions dont la valeur en certains points est
e
e
indirente ou dont la valeur des entres en certains points est impossible.
e
e
On peut coder une fonction partielle f par une fonction totale dont le
codomaine est complt par une valeur appele . La valeur est associe
ee
e
e
aux points non dtermins de f . Une telle fonction est dite phi-boolenne.
e
e
e
Dnition On appelle fonction phi-boolenne une application f de {0, 1}n
e
e
f

dans {0, 1, } : (x1 , x2 , ..., xn ) f (x1 , x2 , ..., xn ).

Remarque : Le choix de la lettre vient de sa forme qui peut tre vue


e
comme la superposition dun 1 et dun 0.

Exemple E2.1 : Une fonction phi-boolenne


e
Soit la fonction ` 4 variables f (x1 , x2 , x3 , x4 ) qui vaut 1 si lentier compris entre
a
0 et 9, cod en binaire sur 4 bits correspondant aux valeurs de x1 , x2 , x3 , x4 , est
e
pair et 0 sinon. Cette fonction est partielle puisque sa valeur est indirente
e
pour les points correspondant ` des valeurs comprises entre 10 et 15. On
a
peut la coder en fonction phi-boolenne en associant la valeur ` chacun des
e
a
points (1, 0, 1, 0), (1, 0, 1, 1), (1, 1, 0, 0), (1, 1, 0, 1), (1, 1, 1, 0) et (1, 1, 1, 1).

Bornes dune fonction phi-boolenne Soit f une fonction phi-boolenne.


e
e
La borne suprieure de f est obtenue en remplaant tous les par des 1. Elle
e
c
est note SUP(f). La borne infrieure de f est obtenue en remplaant tous les
e
e
c
par des 0. Elle est note INF(f). Si nous tendons la relation dordre donne
e
e
e
sur B sur {0, 1, } en posant 0 1, nous avons : INF(f) f SUP(f).
Le tableau ci-dessous donne les bornes suprieure et infrieure dune fonction
e
e
phi-boolenne :
e
x1 x2 f INF(f) SUP(f)
0 0
0
1
1 0
1
1
1
0 1
0
1
1 1
0
0
0

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Reprsentation des fonctions boolennes


e
e

Reprsentation des fonctions boolennes


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

3.

39

Comme nous lavons vu prcdemment la faon la plus simple de reprsenter


e e
c
e
une fonction est de donner la liste de ses valeurs. Cette reprsentation, dite
e
en extension, nest malheureusement plus possible d`s que le nombre de vae
riables augmente. En eet une fonction ` n variables comporte 2n valeurs.
a
De nombreux types de reprsentation plus compactes, dites en comprhension
e
e
existent. Leur utilisation varie principalement suivant leur degr de complexit
e
e
et de facilit de manipulation ` des ns dimplmentation matrielle (Cf. Chae
a
e
e
pitre 8).
Nous donnons dans cette partie trois types de reprsentations, tr`s utie
e
lises aujourdhui : les expressions algbriques, les tableaux de Karnaugh et les
e
e
BDD. Outre les reprsentations des fonctions simples nous montrons comment
e
reprsenter une fonction gnrale ` laide de la reprsentation des m fonctions
e
e e
a
e
simples qui la composent.

3.1

3.1.1

Expressions algbriques
e
Dnitions
e

Expression boolenne algbrique : Toute fonction boolenne peut tre


e
e
e
e
reprsente par une expression algbrique construite ` partir des noms des
e
e
e
a
variables simples de la fonction, des constantes 0 et 1, et des oprations de
e
lalg`bre de Boole. Par exemple, f (x1 , x2 ) = x1 .(x2 + x1 .x2 ) ou g(x1 , x2 ) =
e

1.(0 + x1 .x2 ).

Cette reprsentation nest pas unique. Par exemple, x1 .(x2 + x1 .x2 ) + x2 et


e

x1 + x2 sont deux expressions algbriques dune mme fonction.

e
e
Littral : On appelle littral loccurrence dune variable ou de son
e
e
complment dans une expression algbrique. Les littraux apparaissant dans
e
e
e
lexpression de la fonction f dnie ci-dessus sont : x1 , x2 , x2 .
e

Monme : On appele monme un produit de p littraux distincts. Par


o
o
e
exemple, x1 .x2 .x3 . Un monme est dit canonique pour une fonction sil contient

o
toutes les variables de la fonction. Chaque ligne de la table de vrit correse e
pond ` un monme canonique. On note dans le monme x si la variable x vaut
a
o
o

0, x si elle vaut 1. Dans la table 2.1 la deuxi`me ligne correspond au monme


e
o
canonique x1 .x2 .x3 .

Forme polynmiale : On dit quune expression est sous forme polynmiale
o
o
si elle est crite sous forme de somme de monmes. Par exemple, f (x1 , x2 ) =
e
o
x1 + x1 .x2 .

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

40

Alg`bre de Boole et fonctions boolennes


e
e

3.1.2

Thor`me de Shannon
e e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Soit f (x1 , x2 , ..., xn ) une fonction simple de B n dans B :

i 1..n
f (x1 , x2 , ..., xn ) = xi .f (x1 , x2 , . . . , 0, ..., xn ) + xi .f (x1 , x2 , . . . , 1, ..., xn )

f (x1 , , xi1 , 1, xi+1 , , xn ) et f (x1 , , xi1 , 0, xi+1 , , xn ) sont appels cofacteurs positif et ngatif de f par rapport ` la variable xi . Ils sont
e
e
a
nots respectivement fxi et fxi .
e
La dcomposition de Shannon sur la variable xi scrit : f = xi .fxi + xi .fxi .
e
e
Cette dcomposition est unique.
e
Il existe la forme duale du thor`me de Shannon :
e e
f (x1 , x2 , ..., xn ) = (xi + f (x1 , x2 , . . . , 1, ..., xn )).(xi + f (x1 , x2 , . . . , 0, ..., xn ))

3.1.3

Formes de Lagrange

En appliquant successivement le thor`me de Shannon sur toutes les vae e


riables de la fonction, on obtient une forme polynmiale compose de tous les
o
e
monmes canoniques aects de coecients correspondant aux valeurs de la
o
e
fonction.
Par exemple, pour une fonction ` deux variables on obtient :
a
f (x1 , x2 ) = x1 .f (0, x2 ) + x1 .f (1, x2 )

f (x1 , x2 ) = x1 .(x2 .f (0, 0) + x2 .f (0, 1)) + x1 .(x2 .f (1, 0) + x2 .f (1, 1))


f (x1 , x2 ) = x1 .x2 .f (0, 0) + x1 .x2 .f (0, 1) + x1 .x2 .f (1, 0) + x1 .x2 .f (1, 1)


Cette forme est appele premi`re forme de Lagrange. Toute fonction


e
e
poss`de une et une seule forme de ce type. Cest une expression canonique.
e
On simplie en gnral cette forme en supprimant tous les monmes dont le
e e
o
coecient est 0 et en enlevant les coecients ` 1.
a
Exemple E2.2 : Premi`re forme de Lagrange dune fonction
e
x1 x2
Soit h une fonction ` deux variables dnie par la
a
e
0 0
table ci-contre. Son expression algbrique sous la
e
0 1
premi`re forme de Lagrange est :
e
h(x1 , x2 ) = x1 .x2 .1 + x1 .x2 .1 + x1 .x2 .0 + x1 .x2 .0 =

1 0
x1 .x2 + x1 .x2 qui se simplie en x1 .

1 1

y
1
1
0
0

En utilisant la forme duale du thor`me de Shannon, on obtient la deuxi`me


e e
e
forme de Lagrange, un produit de sommes appeles monales.
e
3.1.4

Expressions polynmiales des fonctions ` 2 variables


o
a

La gure 2.3 donne lexpression polynmiale des 16 fonctions de deux vao


riables boolennes.
e
En logique, la somme est aussi appele disjonction alors que dans le domaine
e
des circuits, cest lopration ou exclusif qui est appele disjonction.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Reprsentation des fonctions boolennes


e
e

Noms usuels

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Fonctions Expressions
f0
0
f1
x1 .x2
f2
x1 .x2

f3
x1
f4
x1 .x2

f5
x2
f6
x1 .x2 + x1 .x2

f7
x1 + x2
f8
x1 + x2
f9
x1 .x2 + x1 .x2

f10
x2

f11
x1 + x2

f12
x1

f13
x1 + x2

f14
x1 .x2
f15
1

41

et, and, produit

ou exclusif
ou, or, somme
ni, non ou, nor
conjonction
complment de x2
e

complment de x1
e
implication
exclusion, non et, nand
tautologie

Fig. 2.3 Expression polynmiale des fonctions ` deux variables


o
a

3.2

3.2.1

Tableaux de Karnaugh

Dnition
e

Un tableau de Karnaugh est une reprsentation particuli`re de la table de


e
e
vrit permettant de manipuler facilement (` la main) les direntes formes
e e
a
e
algbriques polynmiales dune fonction ; nous le dnissons ici et verrons au
e
o
e
paragraphe 4. comment lutiliser.
Un tableau de Karnaugh se prsente comme une table ` plusieurs entres,
e
a
e
chaque variable de la fonction apparaissant sur une des entres. Par exemple,
e
la gure 2.7 reprsente un tableau de Karnaugh pour une fonction ` 3 variables
e
a
et la gure 2.5 le tableau de Karnaugh dune fonction ` 4 variables.
a
Dans un tableau de Karnaugh, une seule variable change de valeur entre
deux cases voisines verticalement ou horizontalement (on parle de cases adjacentes). Dans lexemple de la gure 2.5, entre les cases de la deuxi`me et la
e
troisi`me colonne seule la variable a change. Le tableau peut tre vu comme un
e
e
hypercube o` chaque sommet correspond ` un point de la fonction. Deux somu
a
mets sont adjacents sil existe dans lhypercube une arte entre eux (Cf. Figure
e
2.4).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

42

Alg`bre de Boole et fonctions boolennes


e
e

c
(0,0,1)

(0,1,1)

01

11

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

00

(1,0,1)

(1,1,1)

(0,1,0)
b

(0,0,0)

(1,0,0)
a

10
O

(1,1,0)

(b)

(a)

Fig. 2.4 a) Reprsentation sur un hypercube ` 3 dimensions dune fonction ` trois


e
a
a
variables a, b et c. b) Prsentation du tableau de Karnaugh associ ; les cases
e
e
marques dun O sont adjacentes ` la case marque dune toile.
e
a
e
e

ab

00

01

11

10

00

01

11

10

cd

a.d

a..d
c

Fig. 2.5 Un tableau de Karnaugh ` 4 variables


a

3.2.2

Obtention dune somme de monmes ` partir dun tableau


o
a
de Karnaugh

En dimension 2, les colonnes et lignes dun tableau de Karnaugh sont


agences de telle faon quun monme de la fonction corresponde ` un rectangle
e
c
o
a
de 2n cases adjacentes portant la valeur 1. Un tel regroupement de cases correspond ` la simplication dune somme de monmes en un seul monme. Les
a
o
o
cases de la premi`re ligne (resp. colonne) sont adjacentes ` celle de la derni`re.
e
a
e
Ainsi les 4 cases des coins dun tableau de Karnaugh ` 4 variables peuvent
a
aussi former un monme. Une fois les regroupements eectus lobtention des
o
e
variables du monme se fait aisment. Ce sont celles qui ne changent pas de
o
e
valeur entre les direntes cases correspondant au monme.
e
o
Sur lexemple de la gure 2.5, le monme correspondant au regroupement
o

de 4 cases est a.d puisque a poss`de la valeur 1 pour ces 4 cases et d poss`de
e
e
la valeur 0 pour ces 4 cases. Il correspond ` la simplication suivante ` partir
a
a

des 4 monmes canoniques : a.b..d + a. c.d + a.b.c.d + a. d = a.b.d.(c + c) +


o
c
b.
b.c.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Reprsentation des fonctions boolennes


e
e

01

11

ab
00
cd

10

01

11

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

ab
00
cd

43

10

00

00

01

01

11

11

10

10

e=0

e=1

Fig. 2.6 Un tableau de Karnaugh ` 5 variables


a

a. d.(c + c) = a.b.d + a. d = a.d.(b + = a.d.


b.

b.
b)
Ce type de reprsentation est bien adapt aux fonctions de 2 ` 5 variables.
e
e
a
Les fonctions ` 5 variables peuvent tre reprsentes sur deux tableaux de
a
e
e
e
Karnaugh ` 4 variables (lun pour une des variables ` 0, lautre pour cette
a
a
mme variable ` 1). Deux cases situes ` la mme place sur les 2 tableaux sont
e
a
e a
e
adjacentes. Sur la gure 2.6, les 2 regroupements griss sont un seul monme :
e
o
a..d. Il correspond ` la simplication ` partir des 4 monmes canoniques
c
a
a
o
suivants : a. c.d.+ a.b..d.+ a. c.d.e+ a.b..d.e = a..d..(b+ a..d.e.(b+
b. e c e b.
c
c e
b)+ c
= a..d. + a..d.e = a..d.(e + e) = a..d.
b) c e c
c

c
Lexpression polynmiale de la fonction dnie par les tableaux de Karo
e
naugh de la gure 2.6 est a..d + a.c. + a.d.e + a. c.d.
c
e
b.
On peut procder de la mme mani`re pour des fonctions ` 6 variables en
e
e
e
a
dessinant 4 tableaux ` 4 variables, au-del` cela devient inextricable.
a
a
3.2.3

Obtention dun produit de monaux

On peut obtenir facilement une forme compose des monaux dune fonction
e
(forme duale) ` partir de son tableau de Karnaugh. Pour cela on regroupe les
a
cases adjacentes comportant des 0. Les variables du monal sont celles qui ne
changent pas mais sont donnes sous forme complmente par rapport ` leur
e
e
e
a
valeur.
Lexpression algbrique sous forme produit de monaux de la fonction f
e
dnie par le tableau de Karnaugh de la gure 2.7 est : f (a, b, c) = (a+)( c).
e
c b+

3.3

Graphes de dcision binaire


e

Les graphes de dcision binaire (en anglais Binary Decision Diagram :


e
BDD) ont t introduits par Akers et Bryant dans les annes 80 ([Bry86]).
ee
e
Ils sont utiliss dans les outils de C.A.O. de synth`se logique depuis une die
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

44

Alg`bre de Boole et fonctions boolennes


e
e

ab

00

01

11

10

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

a+c

+c
b

Fig. 2.7 Monaux sur un tableau de Karnaugh


f

xi

fxi

fxi

Fig. 2.8 La dcomposition de Shannon reprsente par un arbre binaire


e
e
e

zaine dannes. Ils permettent de reprsenter et de manipuler des fonctions


e
e
boolennes de grande taille.
e
Nous allons dnir tout dabord les arbres de Shannon, un BDD tant
e
e
un graphe acyclique orient ayant les mmes chemins que larbre de Shane
e
non associ mais dans lequel il ny a pas de redondances. Tout lintrt des
e
ee
BDD est que lon sait les construire, ` cot algorithmique intressant, ` partir
a u
e
a
dune autre reprsentation (par exemple, une forme algbrique) sans avoir `
e
e
a
construire larbre de Shannon (Cf. Paragraphe 4.3).
3.3.1

Arbre de Shannon

On peut reprsenter la dcomposition de Shannon par un arbre binaire o`


e
e
u
la racine est tiquete par la variable de dcomposition, le ls droit par le
e
e
e
cofacteur positif et le ls gauche par le cofacteur ngatif (Cf. Figure 2.8).
e
Si lon it`re la dcomposition de Shannon avec cette reprsentation sur les
e
e
e
deux cofacteurs, pour toutes les variables de f , on obtient un arbre binaire,
appel arbre de Shannon, dont les feuilles sont les constantes 0 et 1 et les
e
noeuds sont tiquets par les variables de la fonction (Cf. Figure 2.9-a sans
e
e
tenir compte des parties grises).
e
Un tel arbre est une reprsentation quivalente ` la table de vrit de la
e
e
a
e e
fonction. Les valeurs de la fonction se trouvent sur les feuilles de larbre. Pour
une valeur donne de la fonction, la valeur de chaque variable est donne par
e
e
ltiquette de larc emprunt pour aller de la racine ` la feuille correspondante.
e
e
a
Sur lexemple de la gure 2.9-a, la fonction f a comme premi`re forme de
e
Lagrange : f (a, b, c) = a. c + a.b. + a. c + a.b. + a.b.c.
b. c
b.
c
Une fois x un ordre total sur les variables, tant donn lunicit de la
e
e
e
e
dcomposition de Shannon, la reprsentation sous forme darbre de Shannon
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Reprsentation des fonctions boolennes


e
e

45

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

f
a

Fig. 2.9 Larbre de Shannon dune fonction f ` 3 variables a, b, c avec lordre : a <
a
<
b < c et le rsultat de la mise en commun de 3 sous-arbres identiques.
<
e

est unique.

3.3.2

Redondance dans les arbres de Shannon

On dnit la taille dun arbre de Shannon par le nombre de ses noeuds.


e
Un arbre de Shannon est de taille 2n 1, n tant le nombre de variables de la
e
fonction reprsente.
e
e
Il existe dans cette reprsentation des redondances. Par exemple, certains
e
sous-arbres sont identiques. La gure 2.9-b montre la mise en commun de trois
sous-arbres identiques (ceux qui sont en griss sur la partie a de la gure).
e
En considrant les feuilles comme des sous-arbres lmentaires, le graphe
e
ee
ne poss`de plus quun seul noeud ` 1 et un seul noeud ` 0. Pour lexemple de
e
a
a
la gure 2.9 on obtient le graphe de la gure 2.10-a.
On peut galement liminer les noeuds tels que tous les arcs sortants ont la
e
e
mme cible. Sur lexemple prcdent, on supprime ainsi deux noeuds (Cf. Fie
e e
gure 2.10-b).
Le graphe sans redondance est appel graphe de dcision binaire rduit.
e
e
e
Dans le cas o` il poss`de le mme ordre de dcomposition des variables sur
u
e
e
e
tous ses chemins, on parle de ROBDD (en anglais Reduced Ordered BDD). Un
ROBDD est encore canonique. La taille eective du ROBDD dpend de lordre
e
choisi pour les variables. Un probl`me est de trouver un ordre optimal.
e
Dautres mthodes de simplication de BDD consistent ` ajouter des infore
a
mations supplmentaires sur les arcs, on parle alors de BDD typs. Le lecteur
e
e
pourra trouver des informations dtailles sur ces mthodes dans [Bry86].
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

46

Alg`bre de Boole et fonctions boolennes


e
e

f
a

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

(a)

(b)

Fig. 2.10 a) La mise en commun des feuilles ` 1 et ` 0. b) La suppression de noeuds


a
a
qui napportent pas dinformation.

4.

Manipulation de reprsentations
e
de fonctions boolennes
e

Un circuit est en gnral spci par une fonction boolenne. Nous vere e
e e
e
rons dans le chapitre 8 comment peut tre ralis le processus de synth`se
e
e e
e
dune fonction boolenne vers une technologie cible. Selon les outils, la forme
e
de dpart de la fonction dans ce processus inue normment sur la forme
e
e
e
du circuit rsultant et en particulier sur ses performances en terme de rapie
dit de calcul, surface en millim`tres carrs, consommation lectrique, etc. Ces
e
e
e
e
crit`res de performance peuvent tre traduits de faon plus ou moins prcise en
e
e
c
e
crit`res simples doptimisation sur les formes des fonctions boolennes. Nous
e
e
justierons ces crit`res au chapitre 8.
e
Nous indiquons dans ce paragraphe quelques formes particuli`res et
e
quelques mthodes pour manipuler lexpression dune fonction boolenne `
e
e
a
des ns doptimisation en vue dune implmentation physique.
e
Les premi`res mthodes bases sur les tableaux de Karnaugh ont vu le
e
e
e
jour dans les annes 50 [Kar53]. Elles permettent dobtenir une forme poe
lynmiale minimise de faon manuelle. Des algorithmes permettant de trouver
o
e
c
une forme polynmiale minimale ont ensuite t dvelopp dans les annes 60
o
ee e
e
e
et 70 [Kun65, Kun67]. Devant laugmentation de la complexit des fonctions et
e
des formes ncessaires pour une implmentation dans des technologies de plus
e
e
en plus varies, des mthodes bases sur des reprsentations plus compactes,
e
e
e
e
en particulier graphe de dcision binaire, ont vu le jour depuis.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Manipulation de reprsentations de fonctions boolennes


e
e

Formes particuli`res pour lexpression dune


e
fonction boolenne
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

4.1

47

La plupart des technologies cibles actuelles (Cf. Chapitre 8) ncessitent des


e
dcompositions des fonctions en expressions dune forme particuli`re.
e
e
Pour certaines cibles technologiques une forme non polynmiale, appele
o
e
forme factorise, peut tre ncessaire. Le crit`re de minimisation est le nombre
e
e
e
e
de littraux apparaissant dans lexpression de la fonction. Par exemple, la
e
forme algbrique de la fonction : f (a, b, c, d) = a.( c + d)) + a.b poss`de
e
b.(
e
6 littraux. Des mthodes ont t mises au point permettant dautomatiser
e
e
ee
la recherche de formes factorises ` nombre de littraux minimal. Le lecteur
e a
e
pourra trouver des dtails sur ces mthodes dans [BRWSV87]. Il est ` noter que
e
e
a
ces mthodes sont aujourdhui souvent employes sur des formes en ROBDDs.
e
e
On peut vouloir aboutir ` une reprsentation de forme quelconque mais `
a
e
a
nombre de variables limit, par exemple, un ensemble de fonctions dau plus
e
8 variables. On peut souhaiter une forme polynmiale ` nombres de monmes
o
a
o
et de variables limits, par exemple, un ensemble de fonctions dau plus 10
e
monmes possdant chacun au plus 6 variables. Il peut aussi tre ncessaire de
o
e
e
e
reprsenter les fonctions avec un ensemble de formes xes. Ce sont en gnral
e
e
e e
des formes de petite taille (nombre de variables infrieur ` 6) avec des formes
e
a
polynmiales ou factorises xes strictement. On parle alors de biblioth`que.
o
e
e
e
On devra par exemple aboutir ` un ensemble de fonctions possdant une des
a
e
formes suivantes : a + b, a. a.b, a.b + a.c ou a. + a.b.
b,

b
Le probl`me est donc dans tous les cas de partir dune fonction boolenne
e
e
et daboutir ` un ensemble de fonctions respectant la ou les formes imposes
a
e
par la technologie cible. Des algorithmes propres ` chaque technologie ont t
a
ee
dvelopps.
e
e
Les crit`res doptimisation sont alors le nombre de fonctions (qui est li ` la
e
ea
surface du circuit rsultant) et le nombre dtages de sous-fonctions imbriques
e
e
e
(qui est li au temps de calcul du circuit). Le nombre dtages maximal est
e
e
appel chemin critique.
e
Exemple E2.3 Soit la fonction f dnie par lexpression algbrique :
e
e
f (a, b, c, d) = a.b.c + a. c + c.d + c.d. Regardons les solutions auxquelles on

b.

peut aboutir avec des formes cibles direntes.


e
Si lon veut aboutir ` des fonctions possdant au plus trois variables :
a
e
avec SF = a.b.c + a. c. Le nombre de littraux
f (a, b, c, d) = SF + c.d + c.d

b.
e
est 11. Le nombre de fonctions imbriques maximal est gal ` 2 : (f, SF ). Une
e
e
a
nouvelle fonction appele sous-fonction SF a t introduite pour parvenir `
e
ee
a
un ensemble de fonctions respectant le crit`re.
e
Si lon veut aboutir ` des fonctions possdant au plus deux monmes de
a
e
o
trois variables : f (a, b, c, d) = SF1 + SF2 avec SF1 = a.b.c + a. c et SF2 =

b.
c.d + c.d. Deux sous fonctions ont t introduites. Le nombre de littraux est

ee
e
12 . Le chemin critique est gal aussi ` 2.
e
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

48

Alg`bre de Boole et fonctions boolennes


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
icie
J.ard , F C.
lles
, P . M Fer
ara na et M
h.
Wa ni nde at
ri
e
z,
ille nch
elle
i,
s

Si lon veut aboutir ` des fonctions de la forme a + b ou a. ou a.b ou


a
b
+ a.b : f (a, b, c, d) = SF1 + SF2 avec SF1 = a.SF3 + a.SF4 et
a.b + a.c ou a.b

SF2 = c.d + c.d. De plus SF3 = b.c et SF4 = c. Le nombre de littraux est

b.
e
14. Le chemin critique est gal ici ` 3 (f, SF1 , SF3 ).
e
a

4.2

Obtention dune forme polynmiale


o

De nombreuses technologies de ralisation des circuits ncessitent une forme


e
e
polynmiale. Le crit`re doptimisation est alors le nombre de monmes apo
e
o
paraissant dans la forme polynmiale puis le nombre de variables dans ces
o
monmes. Un certain nombre de techniques de simplication respectant ce
o
crit`re ont t mises au point et intgres dans les outils modernes de CAO.
e
ee
e e
Nous montrons ici comment obtenir une forme polynmiale rduite ` partir
o
e
a
dun tableau de Karnaugh. Cette mthode peut tre pratique ` la main pour
e
e
e a
des fonctions ayant moins de 6 variables.
4.2.1

Dnitions
e

Monme premier : un monme m est dit premier pour une fonction f si


o
o
lon a : m f et sil nexiste pas m = m tel que m m et m f .
Base : on appelle base dune fonction boolenne une forme polynmiale de la
e
o
fonction compose uniquement de monmes premiers. On appelle base compl`te
e
o
e
la base compose de tous les monmes premiers de la fonction.
e
o
Base irrdondante : une base est dite irrdondante si, d`s que lon te
e
e
e
o
lun des monmes qui la composent, on na plus une base de la fonction. Une
o
fonction boolenne peut avoir plusieurs bases irrdondantes.
e
e
Le but de la minimisation est donc dobtenir une base irrdondante
e
possdant le minimum de monmes.
e
o
4.2.2

Obtention dune forme polynmiale minimale ` partir dun


o
a
tableau de Karnaugh

On peut obtenir de faon tr`s visuelle les monmes premiers sur un tableau
c
e
o
de Karnaugh ` 2 dimensions en cherchant les pavs de cases adjacentes valant
a
e
1, les plus grands possible.
Exemple E2.4 La fonction reprsente sur la gure 2.11 poss`de 5
e
e
e

d, M 4 = a..d,

monmes premiers : M 1 = b., M 2 = b.c.d, M 3 = a.b.


o
c

c
Elle poss`de 2 bases irrdondantes : M 1 + M 2 + M 4 + M 5
M 5 = a.b.c.

e
e
et M 1 + M 2 + M 3. Lexpression minimale (en nombre de monmes) de la
o
fonction est : f = b. +
c b.c.d + a. d
b.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Manipulation de reprsentations de fonctions boolennes


e
e

01

11

10

00

01

11

10

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
icie
J.ard , F C.
lles
, P . M Fer
ara na et M
h.
Wa ni nde at
ri
e
z,
ille nch
elle
i,
s

ab
00
cd

49

Fig. 2.11 La base compl`te dune fonction boolenne


e
e

4.2.3

Probl`me de la minimisation polynmiale


e
o

Le nombre de monmes premiers et de bases irrdondantes dune fonction


o
e
peut tre tr`s grand et une solution tr`s longue ` trouver. Le probl`me de la
e
e
e
a
e
dtermination dune base irrdondante minimale est un probl`me NP-complet.
e
e
e
La mthode consiste ` trouver la base compl`te puis ` extraire toutes les bases
e
a
e
a
irrdondantes par essais successifs de suppression de chaque monme. Devant
e
o
laccroissement de la taille des fonctions ` manipuler, les outils de CAO sont
a
pourvus de minimiseurs qui sont bass sur des algorithmes ` base dheuristiques
e
a
diverses.
Cas des fonctions phi-boolennes : Les monmes premiers dune fonction
e
o
phi-boolenne sont ceux de sa borne suprieure. Une base dune fonction phie
e
boolenne est une somme de monmes premiers telle que tous les points de
e
o
la borne infrieure sont couverts par au moins un de ses monmes premiers.
e
o
La mthode pour trouver une forme minimale dune fonction phi-boolenne
e
e
consiste ` trouver tous les monmes premiers de la borne suprieure puis `
a
o
e
a
trouver toutes les bases irrdondantes par rapport ` sa borne infrieure.
e
a
e
Une fonction phi-boolenne est une fonction totale codant une fonction
e
partielle et telle que chacun des correspond ` une valeur indirente. On peut
a
e
par consquent associer ` ce la valeur 1 ou bien la valeur 0. Pratiquement,
e
a
on va remplacer certains par des 0 et dautres par des 1 de faon ` obtenir
c a
un minimum de monmes.
o
Exemple E2.5 Le monme reprsent sur le tableau de Karnaugh de la
o
e
e
gure 2.12-a nest pas premier pour f car il est plus petit que a.c qui est un
monme de la borne suprieure. Les deux monmes a.c et b..d de la gure
o
e
o
c
2.12-c susent pour couvrir les points de la borne infrieure.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

50

Alg`bre de Boole et fonctions boolennes


e
e

00 01

11 10

ab
cd

00

00

01

01

11

11

10

10

00 01

ab
cd

00 01

11 10

00

01

11

10

11 10

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

ab
cd

(a)

(b)

(c)

Fig. 2.12 a) Une fonction Phi-Boolenne f . b) La base compl`te de la borne suprieure


e
e
e
de f . c) La seule base irrdondante de f .
e

Cas des fonctions gnrales : Dans le cas dune fonction gnrale F =


e e
e e
n
t
(f1 , f2 , . . . , ft ) de B dans B , le crit`re de minimisation est le nombre de
e
monmes de lensemble des t fonctions simples qui composent la fonction
o
gnrale.
e e
Un monme gnral M est un couple (m, (v1 , . . . , vt )) o` m est un monme
o
e e
u
o
dune des fonctions fi (i = 1, . . . , t) et (v1 , . . . , vt ) est un vecteur boolen. Il
e
dnit la fonction gnrale : (v1 .m, . . . , vt .m). Par exemple, le monme gnral
e
e e
o
e e
associ ` un monme m ne gurant que dans lexpression de la fonction f2
e a
o
est : (m, (0, 1, 0, . . . , 0)) ; le monme gnral associ au monme p gurant dans
o
e e
e
o
lexpression de chacune des fonctions fi (i = 1, . . . , t) est : (p, (1, 1, . . . , 1)).
Soient M et M deux monmes gnraux : M = (m, (v1 , v2 , . . . , vt )) et
o
e e
M = (m , (v1 , v2 , . . . , vt )).
On dnit un ordre sur les monmes gnraux : M M (m m ) et
e
o
e e
(v1 , v2 , . . . , vt ) (v1 , v2 , . . . , vt ).
De la mme faon que pour une fonction simple, on dnit les monmes
e
c
e
o
gnraux premiers. Un monme gnral M est dit premier pour une fonction
e e
o
e e
gnrale F si lon a : M F et sil nexiste pas M = M tel que M M et
e e
M F.
La mthode de minimisation en utilisant des tableaux de Karnaugh consiste
e
a
` prendre tous les regroupements de cases maximaux sur plusieurs tableaux `
a
la fois. Un regroupement de plusieurs cases dans un des tableaux de Karnaugh
peut ne pas tre maximal dans ce tableau mais correspondre ` un monme
e
a
o
premier gnral parce quil appara dans plusieurs tableaux ` la fois.
e e
t
a
Pour obtenir tous ces monmes premiers gnraux on cherche dabord tous
o
e e
les monmes premiers de chaque fonction composant la fonction gnrale. On
o
e e
fait ensuite tous les produits possibles de ces monmes entre eux, le produit
o
de deux monmes gnraux tant dni par : M.M = (m.m , (v1 + v1 , v2 +
o
e e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Manipulation de reprsentations de fonctions boolennes


e
e

ab
00
cd

11

ab
00
cd

10

01

11

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

01

51

10

00

00

01

01

11

11

10

10

f1

f2

Fig. 2.13 Les bases compl`tes des fonctions f1 et f2


e

M4

ab
00
cd

01

11

10

M6

00

01

11

10

M1

M2

ab
00
cd

01

11

10

00

M3

01

11

M7

10

f1

f2

M5

Fig. 2.14 La base compl`te de la fonction gnrale F = (f1 , f2 )


e
e e

v2 , . . . , vt + vt )). Enn, on ne garde que les monmes les plus grands.


o
Exemple E2.6 Sur la gure 2.13 sont reprsentes les deux bases compl`tes
e
e
e
des fonctions f1 et f2 . Ces deux bases sont irrdondantes.
e
Sur la gure 2.14 est reprsente la base compl`te de la fonction gnrale
e
e
e
e e
F = (f1 , f2 ). Les monmes griss sont des monmes gnraux premiers obtenus
o
e
o
e e
par produits des monmes : (a. c.d, (1, 0)) et (a. c, (0, 1)) pour (a. c.d, (1, 1))
o
b.
b.
b.
et (.d, (1, 0)) et (.d, (0, 1)) pour (..d, (1, 1)).
a
c
ac
Dans cet exemple, le monme gnral M 7 = (..d, (1, 1)) est premier car il
o
e e
ac
nexiste pas de monme plus grand que a..d ` la fois dans f1 et f2 . Le monme
o
c a
o
gnral M 5 = (a.d, (0, 1)) est premier car dans f2 , il nexiste pas de monme
e e
o
plus grand que (a.d) et (a.d) nest pas un monme de f1 . La fonction gnrale
o
e e
F = (f1 , f2 ) poss`de 7 monmes premiers gnraux M 1 = (.d, (1, 0)), M 2 =
e
o
e e
a
(.c, (1, 0)), M 3 = (.d, (0, 1)), M 4 = (a. c, (0, 1)), M 5 = (a.d, (0, 1)), M 6 =
a
c
b.
(a. c.d, (1, 1)), M 7 = (..d, (1, 1)). Les deux bases irrdondantes gnrales de
b.
ac
e
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

52

Alg`bre de Boole et fonctions boolennes


e
e

01

11

10

ab
00
cd

01

11

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

ab
00
cd

10

00

00

01

01

11

11

10

10

f1

f2

Fig. 2.15 La base irrdondante minimale de la fonction gnrale F


e
e e

F sont : M 1 + M 2 + M 3 + M 5 + M 6 et M 2 + M 5 + M 6 + M 7 et les 4 monmes


o
de la base irrdondante minimale : M 6, M 7, M 5 et M 2.
e

4.3

Obtention de BDDs rduits ordonns


e
e

Lutilisation des BDDs est aujourdhui largement rpandue car cest une
e
reprsentation tr`s compacte et particuli`rement adapte ` lobtention de
e
e
e
e a
formes factorises et ` la dcomposition en sous-fonctions.
e
a
e
Nous donnons ici les principes de base pour construire un BDD rduit ore
donn ` partir dune expression boolenne algbrique. Le lecteur pourra trouver
ea
e
e
la justication et des dtails dimplmentation logicielle de cette construction
e
e
dans [KB90].
Nous avons vu quun BDD est un graphe de Shannon dans lequel il ny a
pas de redondances. Il sagit de construire le BDD sans construire larbre de
Shannon complet. Pour cela, on construit rcursivement le BDD en vitant de
e
e
fabriquer un sous-arbre dj` construit.
ea
Soit un ordre donn sur les variables de la fonction. On eectue ` chaque
e
a
tape de la rcursion la dcomposition de Shannon suivant la variable coue
e
e
rante et lon construit le BDD ` partir des BDDs des cofacteurs positif et
a
ngatif de f. Pour xer les ides, nous donnons gure 2.16 un algorithme de
e
e
spcication fonctionnelle de la construction dun BDD ` partir dune exprese
a
sion algbrique boolenne. Lors de la mise en oeuvre de cet algorithme, il faut
e
e
viter de construire deux fois le mme objet.
e
e
La fonction RepCanonique fabrique un nouveau BDD ` partir dune variable
a
et de deux BDDs dirents, si le BDD ` construire nexiste pas, dans le cas
e
a
contraire elle donne le graphe correspondant au BDD qui existait dj`. Pour
ea
la mettre en oeuvre, il faut dnir une table avec adressage dispers (hashcode
e
e
en anglais), la fonction de dispersion portant sur la variable et les pointeurs
des BDD ls. La comparaison de deux BDDs consiste en la comparaison des
pointeurs associs aux racines des graphes.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Manipulation de reprsentations de fonctions boolennes


e
e

:
le BDD reprsentant la valeur 1
e
le BDD reprsentant la valeur 0
e
D\ : un arbre binaire de racine r, de ls gauche G et de ls droit D

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Notations
/1\ :
/0\ :
/G, r,

53

Fonction principale :
LeBdd (e : une expression algbrique) un BDD
e
{ e tant une expression boolenne, LeBdd(e) est le BDD associ ` e. }
e
e
ea
LeBdd (1) = /1\
LeBdd (0) = /0\
LeBdd (e1 op e2) = TBop (LeBdd(e1), LeBdd(e2))
LeBdd (op e) = TUop (LeBdd(e))
Fonctions intermdiaires
e
TBop (b1, b2 : deux BDD) un BDD
{ b1 et b2 sont deux BDD. Il existe une fonction TBop par oprateur bie
naire trait : elle fabrique le BDD rsultat de lapplication de loprateur
e
e
e
en question aux deux BDD b1 et b2. }
TUop (b : un BDD) un BDD
{ b est un BDD. Il existe une fonction TUop par oprateur unaire pris
e
en compte : elle produit le BDD rsultat de lapplication de loprateur
e
e
au BDD b }
RepCanonique (x une variable ; b1,b2 : deux BDD) un BDD
{ RepCanonique(x, b, b) = b. x tant une variable, b1 et b2 deux BDDs
e
dirents, RepCanonique(x, b1, b2) est le BDD de racine x, de ls
e
gauche b1 et de ls droit b2. Ce BDD nest construit que sil nexiste
pas dans lensemble des BDD dj` construits }
ea
Exemple pour loprateur OR
e
{ On applique les r`gles de simplication triviales associes ` loprateur
e
e a
e
or : vrai or e = vrai, faux or e = e, e or e = e }
TBor (1,b) = /1\
TBor (0,b) =b
TBor (b, 1) = /1\
TBor (b, 0) = b
TBor (b, b) = b
TBor (b1, b2) =
selon b1, b2 { b1 = b2 }
/Ax, x, A\ = b1 et /Bx, x, B\ = b2 :
x
x
RepCanonique (x, TBor(Ax, Bx), TBor(A, B))
x x
/Ax, x, A\ = b1 et /By, y, B\ = b2 :
x
y
si x < y alors RepCanonique (x, TBor(Ax, b2), TBor(A, b2))
<
x
sinon RepCanonique (y, TBor(b1, By), TBor(b1, B))
y

Fig. 2.16 Construction dun BDD ` partir dune expression algbrique boolenne
a
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

54

Exercices

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

5.

Alg`bre de Boole et fonctions boolennes


e
e

E2.7 : Proposition logique


Un tudiant dit : je vais faire du ski sil fait beau ou sil ne fait pas beau et
e
que je nai pas dexamen ` rviser. Cet tudiant est-il srieux ? sportif ? Pour
a e
e
e
rpondre donner une forme plus simple de cette proposition logique.
e
E2.8 : Expression boolenne algbrique de la majorit
e
e
e
Trois personnes doivent voter bleu ou rouge. Dmontrer en passant par les
e
expressions boolennes algbriques correspondantes que si la majorit est pour
e
e
e
le bleu alors, sils changent tous davis, la majorit sera pour le rouge.
e
E2.9 : De Morgan
Dmontrer les formules de De Morgan ` partir des tables de vrit des fonctions
e
a
e e
somme, produit et complment.
e
E2.10 : R`gles de simplication boolenne
e
e
Dmontrer les r`gles de simplication suivantes ` partir des axiomes de
e
e
a
lalg`bre de Boole.
e
a + a.b = a
a + a.b = a + b

a.b + a.b = b

a.b + a.c + b.c = a.b + a.c

E2.11 : Expression boolenne


e
Donner une expression boolenne de la fonction f (a, b, c) qui vaut 1 si et seulee
ment si la majorit de ses trois variables vaut 1.
e
E2.12 : Ou exclusif
Dmontrer que loprateur ou-exclusif (not ) dni par x1 x2 = x1 .x2 +
e
e
e
e

x1 .x2 est associatif.

E2.13 : Thor`me de Shannon


e e
Dmontrer la premi`re forme du thor`me de Shannon.
e
e
e e

E2.14 : Formes de Lagrange


Obtenir la deuxi`me forme de Lagrange de la fonction f (x1 , x2 ) = x1 .x2 + x1 .x2
e


a
` partir de la deuxi`me forme du thor`me de Shannon.
e
e e
E2.15 : Poids dun vecteur boolen
e
On appelle poids dun vecteur boolen le nombre de 1 de ce vecteur. le vecteur
e
(0, 1, 1, 0) a un poids de 2. Donner des expressions boolennes des fonctions
e
simples p2 , p1 et p0 qui correspondent au codage en base 2 du poids dun vecteur de 4 variables boolennes x1 , x2 , x3 , x4 .
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Exercices

55

a
g

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

f
e

Fig. 2.17 Reprsentation du chire 3 sur un acheur 7 segments


e

E2.16 : Tableau ` 4 variables


a
Donner une base irrdondante minimale de la fonction f (a, b, c, d) = a. c +
e
b.
a. d + a.b.d + b..d + a.b.c + a..d + a.c.d .
b.
c
c

E2.17 : Tableau ` 5 variables
a
Donner une base irrdondante minimale de la fonction f (a, b, c, d, e) = a. +
e
b

e + a.b.d.e + a..d..
b.c.e + a.b.d.

c e
E2.18 : Acheur 7 segments
Soit un acheur ` cristaux liquides comportant 7 segments, comme il y en a
a
sur la plupart des calculettes.
On veut raliser les 7 fonctions boolennes (a, b, c, d, e, f , g) ` 4 variables
e
e
a
(e4 , e3 , e2 , e1 ) qui correspondent aux 7 segments (Cf. Figure 2.17). La fonction
boolenne vaudra 1 si le segment doit tre allum pour la reprsentation du
e
e
e
e
chire dcimal donn en binaire par (e4 , e3 , e2 , e1 ). Par exemple le chire 3
e
e
(e3 e2 e1 e0 = 0011) en entre donne a = b = c = g = d = 1.
e
Ces 7 fonctions sont phi-boolennes car on ne veut reprsenter que les
e
e
chires dcimaux (0...9). Sur 4 bits on a aussi les entres de 10 ` 15 qui
e
e
a
correspondent donc ` des points ` pour les 7 fonctions. Attention le 6 et
a
a
le 9 pouvant avoir direntes reprsentations sur lacheur, nous choisirons ici
e
e
de reprsenter le 6 avec le segment a allum et le 9 avec le segment d allum.
e
e
e
Donner les tableaux de Karnaugh de ces 7 fonctions. Donner une base
irrdondante minmale gnrale de la fonction gnrale F = (a, b, c, d, e, f, g).
e
e e
e e
Donner les ROBDDs de a, b et c avec dirents ordres sur les variables.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

56
Alg`bre de Boole et fonctions boolennes
e
e

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 3

Reprsentation des grandeurs


e
Dans le chapitre 1 nous avons vu que lordinateur ne traite pas
vritablement linformation mais ses reprsentations. La reprsentation de
e
e
e
linformation se fait ` travers un code. Pour des raisons technologiques qui
a
apparaissent dans le chapitre 7 la reprsentation de toute information est un
e
vecteur de boolens, ou bits. Les bits sont identis individuellement, le plus
e
e
souvent par un simple numro. On parle de reprsentation digitale de linfore
e
mation. Physiquement un boolen, ou bit, est ltat dun l lectrique. Lordie
e
e
nateur tant aliment par un gnrateur continu, la tension basse (la masse)
e
e
e e
reprsente le 0 (ou Faux), la tension haute (lalimentation) reprsente le 1 (ou
e
e
Vrai). Il existe cependant de nombreuses applications o` des appareils de meu
sure donnent des tensions lectriques proportionnelles ` la grandeur mesure.
e
a
e
On parle dans ce cas de reprsentation analogique de linformation. Pour tre
e
e
traites par un ordinateur standard (on dit numrique, ou digital, par oppoe
e
sition ` analogique) ces tensions sont converties par des circuits spciques
a
e
(Convertisseurs Analogiques Numriques, ou, a contrario, Numriques Analoe
e
giques).
Dans ce chapitre, nous donnons dans le paragraphe 1. les lments de
ee
ce que signie un codage par des boolens. Nous tudions ensuite les
e
e
reprsentations des nombres, et, ce qui va avec, les techniques de calcul
e
sur ces reprsentations. Nous distinguons la reprsentation des naturels
e
e
(au paragraphe 2.), et celle des entiers relatifs (au paragraphe 3.). La
reprsentation de nombres rels est bri`vement voque dans le parae
e
e
e
e
graphe 6., celle des caract`res dans le paragraphe 5. La notion de taille
e
de la reprsentation est prsente en permanence.
e
e

1.

Notion de codage dinformations

1.1

Codage binaire

A un instant donn N ls lectriques sont chacun ` 0 ou ` 1. Il est ncessaire


e
e
a
a
e
didentier chacun des ls par un numro, par exemple entre 0 et N 1. Lene

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

58

Reprsentation des grandeurs


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

semble des N ls peut se trouver dans une des 2N congurations possibles. Les
N ls peuvent reprsenter 2N informations direntes. On parle aussi des 2N
e
e
valeurs possibles dune information. Il y a l` une dirence entre le vocabulaire
a
e
courant et un vocabulaire technique.
Pour valuer le nombre de valeurs direntes reprsentables sur N bits, il
e
e
e
est commode davoir en tte les valeurs des petites puissances de 2 et les ordres
e
de grandeurs des grandes : 20 = 1 ; 21 = 2. Les puissances suivantes sont
4, 8, 16, 32, 64, 128, 28 = 256 et 210 = 1024. Comme 1000 est proche de
1024, il est facile de complter la suite : 210 103 , 220 106 , 230 109 ,
e
240 1012 .
Les prxes dunits correspondants sont kilo, mga, giga, tra. Un kiloe
e
e
e
bit correspond donc ` 1024 bits et non ` 1000 bits.
a
a
Reprer un lment parmi un ensemble de 256 lments suppose de le loe
ee
ee
caliser par un numro cod sur 8 bits. Dans certains contextes ce numro est
e
e
e
appel une adresse. Reprer un lment parmi un ensemble de 4 giga-lments
e
e
ee
ee
suppose de le localiser par un numro cod sur 32 bits.
e
e
La notation de logarithme ` base 2 est parfois utilise : si 2N = M, log2 M =
a
e
N ; ainsi pour reprsenter P valeurs direntes il faut au moins R bits, o`
e
e
u
R est lentier immdiatement suprieur au logarithme ` base 2 de P . Ainsi
e
e
a
log2 2048 = 11 et pour reprsenter 2050 valeurs direntes il faut 12 bits.
e
e
La correspondance entre la reprsentation par un vecteur de boolens et la
e
e
valeur se fait par une convention, un code. Lensemble des valeurs codables est
caractristique du domaine (nombres, couleurs...) Par exemple, si une gamme
e
de temprature va de - 10 ` + 40 degrs, et si la temprature est code sur
e
a
e
e
e
9
9 bits, la prcision peut tre de lordre du dizi`me de degr (2 = 512 codes
e
e
e
e
possibles pour 50 degrs). Si la temprature est code sur 12 bits la prcision
e
e
e
e
12
est de lordre du centi`me (2 = 4096 codes possibles pour 50 degrs).
e
e

1.2

Un exemple : le codage des couleurs

On trouve dans la documentation du micro-ordinateur Commodore 64 le


tableau de la gure 3.1 indiquant le code sur 4 bits b3 b2 b1 b0 des 16 couleurs
achables par cette machine. On trouve dans la documentation de microordinateurs PC (carte CGA) le tableau de la gure 3.2, donnant un autre
codage.
La question Comment est reprsent rouge ?, ou Que reprsente 0 0 1 0 ?
e
e
e
na de sens que si le code est prcis. De mme, la conversion dun code `
e e
e
a
lautre na un sens que pour les couleurs qui sont reprsentes dans les deux
e
e
codes (brun, bleu ple, ...).
a
Les deux couleurs noir et cyan ont le mme codage dans les deux codes,
e
ce qui est fortuit. Dans le deuxi`me code, chaque bit a une interprtation. Le
e
e
bit 3 correspond ` la prsence dune composante ple, le bit 2 ` la prsence
a
e
a
a
e
dune composante rouge, le bit 1 au vert et le bit 0 au bleu. On trouve souvent
le sigle RGB (Red, Green, Blue) dans ce contexte. Une telle interprtation
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Les naturels

59

noir
blanc
rouge
cyan
violet

b3 b2 b1 b0
0101
0110
0111
1000
1001

vert
bleu
jaune
orange
brun

b3 b2 b1 b0
1010
1011
1100
1101
1110
1111

rose
gris fonc
e
gris moyen
vert ple
a
bleu ple
a
gris ple
a

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

b3 b2 b1 b0
0000
0001
0010
0011
0100

Fig. 3.1 Codage des couleurs du Commodore 64

b3 b2 b1 b0
0000
0001
0010
0011
0100

noir
bleu
vert
cyan
rouge

b3 b2 b1 b0
0101
0110
0111
1000
1001

violet
brun
gris
noir ple
a
bleu ple
a

b3 b2 b1 b0
1010
1011
1100
1101
1110
1111

vert ple
a
cobalt
rose
mauve
jaune
blanc

Fig. 3.2 Codage des couleurs pour PC, carte CGA

individuelle de chaque bit nexiste pas dans le premier code.

1.3

Codage 1 parmi n

Un codage particulier est utilis dans certaines applications matrielles ou


e
e
logicielles : le codage appel 1 parmi n. Pour ce code, on utilise autant de bits
e
que dinformations ` coder. Pour reprendre lexemple des couleurs, chacune
a
serait code sur b15 ,.. b0 , et chaque bit correspondrait alors ` une couleur.
e
a

2.

Les naturels

2.1

Reprsentation des entiers naturels


e

2.1.1

Numration de position
e

Les entiers naturels peuvent tre crits de direntes faons (voir par
e
e
e
c
exemple [Ifr94]). Le syst`me des Romains est encore prsent dans certaines
e
e
notations, les dates des livres par exemple.
La meilleure reprsentation est la numration de position dans une base
e
e
choisie. En base 10, ou syst`me dcimal, on choisit 10 symboles dirents, les
e
e
e
10 chires dcimaux 0, 1, . . . , 9. Ils reprsentent les valeurs des 10 premiers
e
e
naturels. Les naturels suivants scrivent avec plusieurs chires : un chire des
e
units, un chire des dizaines, des centaines, des milliers, etc.
e
Si un naturel X scrit en base sur N chires xN 1 xN 2 ... x1 x0 , la
e
correspondance entre la valeur du naturel X et celles des chires est donne
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

60

Reprsentation des grandeurs


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

par lquation :
e
N 1

N 1

valeur(xi )

X=

ou, pour simplier : X =

i=0

i xi

i=0

La correspondance est telle que lcriture dun naturel dans une base donne
e
e
est unique. Dans la suite nous ne prcisons plus que cest toujours la vae
leur du chire (et non le chire lui-mme) qui intervient dans les expressions
e
arithmtiques. En base , sur N chires, tous les naturels compris au sens large
e
entre 0 et N 1 sont reprsentables. Les nombres plus grands peuvent tre
e
e
reprsents par leur reste modulo N . Cest ce qui se produit sur les compteurs
e
e
kilomtriques des voitures : si le compteur a 5 chires, quand on a parcouru
e
100 012 kilom`tres, le compteur marque 00 012. Une situation analogue a lieu
e
pour les angles o` on ne donne que le reprsentant dans lintervalle [0, 2.[. En
u
e
informatique on rencontre le terme de chire de poids faible, pour le chire des
units et, si un naturel est crit sur 7 chires, celui de chire de poids le plus
e
e
fort pour le chire des millions. Lusage dans la vie courante est de ne pas crire
e
les 0 en poids forts. A certains endroits, pour des raisons matrielles, cest une
e
obligation. Le compteur kilomtrique des voitures par exemple. En informae
tique, on les crit tr`s souvent. Les machines ont un format pour reprsenter
e
e
e
les nombres, cest-`-dire un nombre de chires pr-tabli. Quand ce nombre de
a
ee
chires est mal choisi, comme par exemple reprsenter une date avec seulement
e
deux chires dcimaux pour lanne, les consquences sont ennuyeuses. Dans
e
e
e
les documents crits o` il y a risque dambigu e, on crit la base en indice. La
e
u
t
e
base elle-mme est alors crite en base dcimale (ou base 10). Par exemple, le
e
e
e
nombre qui scrit 147 en base 10 scrit 1042 en base 5 :
e
e
14710 = 100100112 = 1739 = 9316 = 10425 = 121103
Il existe une autre reprsentation conventionnelle : le dcimal cod en bie
e
e
naire (DCB) dans laquelle chaque chire dcimal est crit en binaire sur 4 bits.
e
e
On a alors 14710 = 0001 0100 0111dcb .

Technique de conversion Pour montrer la technique de conversion dune


base ` une autre, prenons deux exemples.
a
Passage de la base 10 ` la base 5.
a
14710 = 2910
5 + 2
= (5
5 + 4 ) 5 +2
= ((1
5) + 0 ) 5 +4) 5 +2
= (((0 5) + 1 ) 5 +0) 5 +4) 5 +2
Les restes successifs dans la division par 5 sont 2, 4, 0 et 1. Le chire des
units est 2, celui de rang suprieur est 4, etc. 14710 = 10425 , cest-`-dire :
e
e
a
3
2
1
0
14710 = 1 5 + 0 5 + 4 5 + 2 5 .

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Les naturels

61

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Passage de la base 2 ` la base 10.


a
7
100100112 = 1 2 + 1 24 + 1 21 + 1 20
100100112 = 1 12810 + 1 1610 + 1 2 + 1 = 14710
2.1.2

Reprsentations binaire, hexadcimale


e
e

Ce principe de la numration de position peut sappliquer avec une base


e
enti`re quelconque suprieure ou gale ` 2. Si la base est 2 on parle de
e
e
e
a
numration binaire, pour la base 8 de numration octale, pour la base 16
e
e
dhexadcimal. En base 2, sur N chires, tous les naturels compris au sens
e
large entre 0 et 2N 1 sont reprsentables. On pourrait parler de chire des
e
deuzaines, des quatraines, ou des seizaines mais ces mots ne sont pas dans le
lexique courant. Lintrt de la base 2 est que les deux chires 0 et 1 peuvent
ee
facilement tre reprsents par les deux boolens 0 et 1, ou par les tats bas
e
e
e
e
e
et haut dun l lectrique. Ce codage des nombres est le seul utilis dans les
e
e
ordinateurs. Nous emploierons les termes de chires binaires ou de bits indistinctement.
Les 16 chires hexadcimaux sont 0, 1, . . . , 8, 9, A, B, C, D, E, F
e
reprsentant les valeurs des naturels de 0 ` 15. On a videmment
e
a
e
valeur(A) = 10, . . ., valeur(F ) = 15.
On peut aisment convertir un nombre crit en base 16 vers la base 2
e
e
et rciproquement. Il sut pour cela de convertir par tranches de 4 chires
e
binaires, ou dun chire hexadcimal. Ainsi dans lexemple suivant gurent
e
les deux critures lune en dessous de lautre :
e
4
7
B
8
3
0011 0100 0111 1011 1000

En eet le chire hexadcimal B reprsente le naturel 1110 , qui en binaire


e
e
scrit 1011, et 347B816 = 001101000111101110002 .
e
On remarque l` une analogie avec le passage de lcriture dcimale `
a
e
e
a
lcriture en langue naturelle. Ici gurent lcriture dun nombre en base
e
e
dcimale et son criture en franais (les espaces ne sont pas signicatifs) :
e
e
c
730
105
104
cent quatre millions sept cent trente mille cent cinq

2.2

Oprations sur les vecteurs boolens reprsentant


e
e
e
les naturels

Etant donns deux naturels A et B, reprsents respectivement par M et


e
e
e
N bits, on cherche ` trouver un procd de calcul, ou de fabrication, des bits
a
e e
reprsentant A + B, A B, A B, . . . (une approche tr`s compl`te se trouve
e
e
e
dans [Mul89]).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

62

Reprsentation des grandeurs


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Nous devons nous proccuper du nombre de bits ncessaires pour


e
e
reprsenter le rsultat du calcul. Pour la somme cest max(M, N ) + 1, pour
e
e
le produit M + N . Pour simplier ce probl`me, nous supposerons, sauf mene
tion contraire, que les deux nombres sont cods sur N bits, et que N est une
e
puissance de 2. Si ce nest pas le cas, il est toujours possible de complter A
e
p
ou B en poids forts. Si A et B sont cods sur 2 bits, A + B est cod sur 2p + 1
e
e
p+1
bits et A B est cod sur 2
e
bits. La somme de deux nombres cods sur N
e
chires est reprsentable sur N + 1 chires. Le chire de poids fort de cette
e
somme est gal ` 0 ou 1. Ceci est valable dans toutes les bases.
e
a
2.2.1

Extension et rduction de format


e

Si un naturel est cod sur N bits et quil faille le coder sur M bits, avec
e
M > N , il sut dajouter des 0 en poids forts. A linverse, si la reprsentation
e
de C a k bits ` 0 en poids forts, C peut tre reprsent sur k bits de moins.
a
e
e
e
Par exemple 000011002 = 11002 .
2.2.2

Addition

A et B tant reprsents sur N bits, aN 1 , . . . , a0 , et bN 1 , . . . , b0 , la somme


e
e
e
S de A et B scrit sur N + 1 bits sN , . . . , s0
e
Deux questions se posent : comment obtenir les si ` partir des ai et des bi ,
a
et peut-on reprsenter S sur N bits ?
e
Pour obtenir les chires de la somme, examinons bri`vement le procd
e
e e
pour la base 10 que lon apprend ` lcole : les ai et bi sont compris entre 0
a e
et 9. La base est 10. On applique un procd itratif, en commenant par les
e e e
c
poids faibles, et en propageant une retenue dtage (ou tranche) de 1 chire
e
en tage de 1 chire vers les poids forts.
e
A chaque tage i le calcul du report 1 sortant repsi de ltage est fonction
e
e
des chires ai et bi de A et B ` cet tage et du report entrant dans cet tage
a
e
e
repei . Le report entrant dans ltage 0 est videmment nul. Le report sortant
e
e
de ltage j, repsj est le report entrant de ltage j+1 repe(j+1) .
e
e
repsi = 1 si ai + bi + repei 10 et
repsi = 0 si ai + bi + repei < 10

le chire si de la somme ` ltage i est la somme modulo 10 de ai , bi et repei ,


a e
cest-`-dire :
a
si = ai + bi + repei 10 si repsi = 1 et
si = ai + bi + repei si repsi = 0
1

Nous emploierons le terme de report pour laddition et, plus loin, celui demprunt pour
la soustraction. La langue courante utilise le terme de retenue dans les deux cas.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Les naturels

63

bi

repei

repsi =
si =
maj(ai , bi , repei ) (ai , bi , repei )
0
0
0
1
0
1
1
0
0
1
1
0
1
0
1
1

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

ai
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

Fig. 3.4 Table daddition

aN1

bN1

aj+1

aj

bj+1

bj

a1

b1

a0

b0

0
rep
e0

repe(j+1) = rep
sj

sN1

rep

sj+1

sj

s1

s0

s(N1)

Fig. 3.3 Schma de principe dun additionneur


e

En binaire le procd est identique mais les ai et bi valent 0 ou 1. Les deux


e e
fonctions de calcul du report et du chire de somme sont dnies pour des
e
triplets de nombres 0 ou 1.
La fonction report sortant dun tage daddition binaire est la fonction
e
majorit. On la note maj. maj(x, y, z) vaut 1 si et seulement si x + y + z 2.
e
La fonction calculant le chire de somme est la somme modulo 2 de 3
entiers. On la note .
(x, y, z) = (x + y + z) si maj (x, y, z) = 0
(x, y, z) = (x + y + z 2) si maj (x, y, z) = 1.

Les tables daddition pour un tage sont donnes par la gure 3.4.
e
e
Pour laddition de deux nombres ` N bits, les formules sont donnes par
a
e
les quations suivantes qui utilisent les reports intermdiaires ri o` ri+1 est la
e
e
u
retenue sortante de ltage numro i :
e
e
s0 = (a0 , b0 , 0)
si = (ai , bi , ri )

r1 = maj (a0 , b0 , 0)
ri+1 = maj(ai , bi , ri ) i. 1 i N 1

De plus, puisque la somme est sur N + 1 bits, sN = rN .

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

64

Reprsentation des grandeurs


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Dans ce cas sN sappelle souvent La retenue. Si on cherche ` reprsenter la


a
e
somme S sur N bits, ce nest possible que si sN vaut 0. Si sN vaut 1, la somme
est trop grande et ne peut tre reprsente sur N bits.
e
e
e
Remarque : Dans les processeurs, apr`s une addition, ce bit de retenue
e
est disponible dans le mot dtat sous le nom de bit indicateur C (en anglais
e
report se dit Carry). Il vaut 1 si la somme de deux naturels cods sur N bits
e
nest pas reprsentable sur N bits. On utilisera ce bit dans la programmation
e
en langage machine au chapitre 12.

2.2.3

Multiplication et division enti`re par une puissance de 2


e

On sait multiplier par 10 un nombre crit en base 10 en ajoutant un 0 en


e
poids faible de sa reprsentation. Il en est de mme en base 2. Et si lon ajoute
e
e
deux 0 en poids faible de lcriture binaire, on obtient lcriture binaire du
e
e
nombre multipli par 4. Le produit dun nombre sur N bits par 2k scrit sur
e
e
N + k bits, les k bits de poids faibles tant ` 0.
e
a
On sait obtenir la reprsentation dcimale du quotient entier par 10 dun
e
e
naturel en tant le chire des units de sa reprsentation dcimale. De mme
o
e
e
e
e
pour la base 2, si lon supprime 3 chires en poids faible, on obtient lcriture
e
du quotient entier par 8. Le quotient entier dun nombre sur N bits par 2k
scrit sur N k bits.
e
On sait obtenir la reprsentation dcimale du reste modulo 10 en ne gardant
e
e
que le chire des units de la reprsentation dcimale. De mme pour la base 2,
e
e
e
e
si lon garde les 4 chires en poids faible, on obtient lcriture du reste modulo
e
16. Le reste modulo 2k dun nombre scrit sur k bits.
e
Le tableau suivant illustre direntes multiplications et divisions enti`res.
e
e
Tous les nombres y sont crits en binaire sur 6 bits. Il y a donc parfois des
e
zros en poids forts.
e
Ecriture
de N en
dcimal
e
5
13
29
28
35

2.2.4

Ecriture
de N en
binaire
000101
001101
011101
011100
100011

Ecriture
de N 2 en
binaire
001010
011010
111010
111000
impossible

Ecriture
de N/4 en
binaire
000001
000011
000111
000111
001000

Ecriture
de N mod 8 en
binaire
000101
000101
000101
000100
000011

Multiplication gnrale
e e

Si deux naturels A et B sont cods sur N bits, leur produit est cod sur
e
e
2 N bits. Si N vaut 1, le produit de A et B est facile ` calculer. Sinon,
a
comme dans lexercice E3.14 on dcompose A et B en parties faible et forte.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Les naturels

65

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Le produit P est la somme des 4 produits partiels :


P 1 = Afort Bfort 2N/2 2N/2
P 2 = Afort Bfaible 2N/2
P 3 = Afaible Bfort 2N/2
P 4 = Afaible Bfaible

Remarquons queectuer laddition de P 1 et P 4 est tr`s facile. Lun des deux


e
nombres na que des 0 l` o` lautre a des chires signicatifs.
a u
Une autre expression du produit reprend simplement lcriture binaire :
e
3
2
1
0
puisque 1410 = 1 2 + 1 2 + 0 2 + 1 2 , on a aussi 1410 13 =
1 23 13 + 1 22 13 + 0 21 13 + 1 20 13. On a vu que le calcul du
produit de 13 par une puissance de 2 revient ` crire 1101 suivi du bon nombre
ae
de 0. La multiplication se rduit alors ` une suite dadditions et de dcalages.
e
a
e

2.2.5

Soustraction

La dirence D = A B de deux naturels A et B nest dnie que si A > B.


e
e
Remarque : Un probl`me est celui de la dtection des cas valides et ine
e
valides. En informatique comparer deux nombres ncessite de calculer leur
e
dirence. On ne peut donc pas raisonnablement comparer deux nombres
e
avant de calculer leur dirence si elle existe. Dans un syst`me informatique,
e
e
on calcule toujours ce que lon croit tre la dirence, puis on se proccupe
e
e
e
de savoir si la dirence est reprsentable ou non. Si oui, elle est le rsultat
e
e
e
obtenu.

Comme pour laddition, lopration se fait tranche par tranche, en come


menant par les poids faibles et avec propagation dun bit demprunt vers les
c
poids forts. Le calcul fait appara le bit demprunt ` ltage de poids plus
tre
a e
fort. On peut produire une table de soustraction en base 2, analogue ` la table
a
daddition du paragraphe 2.2.2, tenant compte du bit demprunt entrant ee et
faisant appara le bit demprunt sortant es et le bit de rsultat di (Cf. Fitre
e
gure 3.5-(a)).
On a le rsultat suivant : Si A et B sont cods sur N bits la dirence est
e
e
e
un naturel (cest-`-dire A B) si et seulement si lemprunt sortant de ltage
a
e
de rang N 1 est nul.
Reprenons la table daddition du paragraphe 2.2.2, en remplaant
c
systmatiquement les bits de reports entrants et sortants par leur
e
complmentaire boolen. De mme remplaons le bit de loprande B par son
e
e
e
c
e
complmentaire. On retrouve la table de la soustraction (Cf. Figure 3.5-(b)).
e
Si lon applique lalgorithme daddition avec A et le complmentaire de B
e
et si lon prend soin de complmenter en entre et en sortie tous les bits de
e
e
report, on obtient lalgorithme de soustraction de A B.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

66

Reprsentation des grandeurs


e

bi
0
0
1
1
0
0
1
1

ee
0
1
0
1
0
1
0
1

es
0
1
1
1
0
0
0
1

di
0
1
1
0
1
0
0
1

bi
1
1
0
0
1
1
0
0
bi

re
1
0
1
0
1
0
1
0
ee

rs
0
1
1
1
0
0
0
1
es

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

ai
0
0
0
0
1
1
1
1

ai
0
0
0
0
1
1
1
1
ai

(a)

(b)

si
0
1
1
0
1
0
0
1
di

Fig. 3.5 (a) Table de soustraction et (b) table daddition modie


e

On peut aussi utiliser les expressions pour chaque tage :


e

es = 1 si ai < bi + ee cest-`-dire si ai (bi + ee ) < 0


a
es = 0 si ai bi + ee
di = ai (bi + ee ) si es = 0
di = 2 + ai (bi + ee ) si es = 1

Remarque :
Dans les processeurs, apr`s une soustraction, le
e
complmentaire du bit demprunt sortant est disponible dans le mot dtat
e
e
sous le nom de bit indicateur C. Il vaut 0 si la dirence de deux naturels
e
cods sur N bits est positive, donc reprsentable sur N bits.
e
e

3.

Les relatifs

3.1

Reprsentation des entiers relatifs


e

Pour reprsenter des entiers relatifs par un vecteur de N boolens, la


e
e
premi`re ide qui vient ` lesprit est de reprsenter la valeur absolue sur N 1
e
e
a
e
bits et de rserver un bit pour le signe. Cette ide simple est correcte. On
e
e
parle de reprsentation en signe et valeur absolue. Une autre reprsentation
e
e
est habituellement utilise. Elle prsente des similitudes avec la reprsentation
e
e
e
dun angle quelconque par un nombre rel dans lintervalle [ , + [. Nous ale
lons la dcrire dabord de faon tr`s intuitive. Pour cela nous considrons des
e
c
e
e
nombres sur 4 chires. Le mme raisonnement vaut pour toute autre taille.
e
Quand on ach`te une voiture neuve, le compteur kilomtrique indique 0000.
e
e
Il indique ensuite 0001, puis 0002. Les voitures ` compteur binaire feraient
a
appara 0001 puis 0010. Imaginons que le compteur dcompte lorsque lon
tre
e
roule en marche arri`re. Avec une voiture neuve, il acherait successivement
e
9999, puis 9998. Un compteur binaire montrerait 1111, puis 1110.
On dcide de reprsenter -1 par 1111, puis -2 par 1110, comme sur le compe
e
teur kilomtrique. Reste ` xer une convention. En eet si lon roule quinze
e
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Les relatifs

67

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

kilom`tres en marche arri`re le compteur ache aussi 0001, et lon risque de


e
e
croire que lon a parcouru 1 kilom`tre en marche avant ! La convention habie
tuelle est la suivante : les relatifs strictement positifs vont de 0001 ` 0111 (soit
a
de 1 ` 7) ; les relatifs strictement ngatifs vont de 1111 ` 1000 (soit de -1 `
a
e
a
a
-8) ; 0 reste cod 0000.
e
La convention est choisie pour que le bit de poids fort de la reprsentation
e
soit un bit de signe. Il vaut 1 pour les nombres strictement ngatifs. Sur N
e
bits les nombres reprsentables sont ceux de lintervalle [2N 1 , 2N 1 1].
e
Ce syst`me sappelle codage en complment ` 2 (parfois complment ` 2N
e
e
a
e
a
puisquil y a N bits). Au passage remarquons que lintervalle des nombres
reprsentables nest pas symtrique par rapport ` 0. Cest obligatoire. Avec
e
e
a
une base paire, on reprsente un nombre pair de nombres. Il ne peut y en avoir
e
autant de strictement positifs que de strictement ngatifs, sauf si 0 a deux
e
reprsentations.
e
De faon moins intuitive, si un relatif Y scrit en complment ` 2 sur N
c
e
e
a
chires binaires : yN 1 , yN 2 , . . . , y1 , y0 , la correspondance entre la valeur du
relatif Y et celles des chires est donne par lquation :
e
e
N 2

N 1

Y = (2

2i yi

yN 1 ) +

i=0

ou, ce qui est quivalent, par :


e

N 1

Y = (2N yN 1 ) +

2i yi

i=0

La correspondance est telle que lcriture est unique comme pour le cas des
e
naturels dans une base donne.
e
Remarquons que si lon consid`re les deux vecteurs binaires reprsentant
e
e
un relatif et son oppos, et si lon interpr`te ces deux vecteurs comme les
e
e
reprsentations en binaire de deux naturels, la somme de ces deux naturels
e
est 2N . Cest lorigine du nom complment ` 2N . Ainsi, sur 4 bits, 0101 code
e
a
5. En complment ` 2, sur 4 bits -5 est reprsent par 1011. En base 2, 1011
e
a
e
e
reprsente le naturel 11, et 11 + 5 = 16.
e
Conversion Une dicult notable vient dappara
e
tre, la mme que pour les
e
couleurs en dbut de chapitre. La question Que reprsente 100011 ? ou Come
e
ment est reprsent lentier K ? na pas de sens. Il faut ` chaque fois prciser
e
e
a
e
dans quelle convention, binaire pur ou complment ` 2. Comme pour les coue
a
leurs, on peut avoir besoin de convertir dune convention ` lautre les nombres
a
qui sont reprsentables dans les deux (comme le brun et le bleu ple, pour
e
a
les couleurs). Pour les nombres sur N bits ce sont les nombres de lintervalle
[0, 2N 1 1]. Ils ont la mme reprsentation dans les deux codes (comme le
e
e
cyan et le noir qui ont le mme code dans lexemple des couleurs).
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

68

Oprations sur les vecteurs boolens reprsentant


e
e
e
les relatifs

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

3.2

Reprsentation des grandeurs


e

3.2.1

Extension et rduction de format


e

Si un relatif Y est cod sur N bits, il sut de reporter le bit de signe de Y


e
en poids forts M N fois pour obtenir son codage M bits (avec M > N ).
Si les k bits de plus forts poids de la reprsentation de C sont identiques,
e
C peut tre reprsent sur k 1 bits de moins. On ne perd pas le bit de signe.
e
e
e
Par exemple : 11111010c2 = 1010c2 .
3.2.2

Addition

Soient A et B reprsents en complment ` 2 par aN 1 , aN 2 , . . . , a1 , a0


e
e
e
a
et bN 1 , bN 2 , . . . , b1 , b0 . On a :
N 2

N 1

A = (2

N 1

) aN 1 +

2 ai ,

B = (2

N 2

2i bi

) bN 1 +

i=0

i=0

Comme pour les naturels, dterminons si la somme peut tre reprsentable


e
e
e
sur N bits et comment les bits de la somme peuvent tre exprims. On pose :
e
e
N 2

N 2

2 ai ,

2i bi ,

i=0

= ( + ) modulo 2N 1

i=0

avec :

[0, 2N 1 1],

[0, 2N 1 1],

[0, 2N 1 1].

On a videmment :
e

A = 2N 1 aN 1 +

et, de mme,
e

B = 2N 1 bN 1 + .

Soit re dni par :


e

+ = re 2N 1 + .

re vaut donc 1 ou 0. Cest le report sortant du calcul de + . est la somme


+ prive de son bit de poids fort re .
e
Soit S la somme de A et de B.
S = 2N 1 (aN 1 + bN 1 ) + ( + )

2N 1 (aN 1 + bN 1 re ) +

Les valeurs possibles de aN 1 + bN 1 re sont -1, 0, 1 ou 2 puisque les trois


nombres aN 1 , bN 1 , re sont des chires binaires.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Les relatifs

69

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Nombre de bits ncessaires pour reprsenter S La premi`re question


e
e
e
est : S est-il reprsentable sur N bits en complment ` 2 ? Cest-`-dire a-t-on
e
e
a
a
2N 1 S 2N 1 1 ? Examinons les deux cas o` la rponse est non.
u
e
Premier cas : S < 2N 1

2N 1 (aN 1 + bN 1 re ) + < 2N 1
2N 1 (aN 1 + bN 1 re 1) <
2N 1 (aN 1 + bN 1 re 1) >

Puisque [0, 2N 1 1], cette ingalit ne peut tre vrie avec certie
e
e
e e
tude que si
aN 1 + bN 1 re 1 1 cest-`-dire si aN 1 + bN 1 re 1 = 1.
a

Ce qui ne se produit que si aN 1 = bN 1 = 1 et re = 0. Si lon pose


rs = maj(aN 1 , bN 1 , re ), on a dans ce cas rs = 1 = re .

Deuxi`me cas : S > 2N 1 1


e

2N 1 (aN 1 + bN 1 re ) +
2N 1 (aN 1 + bN 1 re ) +
2N 1 (aN 1 + bN 1 re + 1)
2N 1 (aN 1 + bN 1 re + 1)

> 2N 1 1
2N 1

Cette ingalit ne peut tre vrie avec certitude que si


e
e
e
e e

aN 1 + bN 1 re + 1 0 cest-`-dire si aN 1 + bN 1 re + 1 = 0
a

Ce qui ne se produit que si aN 1 = bN 1 = 0 et re = 1.


Dans ce cas rs = maj (aN 1 , bN 1 , re ) = 0 = re .

Dans tous les autres cas 2N 1 S 2N 1 1, cest-`-dire pour


a
aN 1
aN 1
aN 1
aN 1

= bN 1 = 0, re
= bN 1 = 1, re
= 1, bN 1 = 0,
= 0, bN 1 = 1,

=0
=1
re quelconque
re quelconque

la somme S de A et B est reprsentable sur N bits en complment ` 2. On a


e
e
a
alors rs = re . Le tableau suivant rcapitule les dirents cas.
e
e
aN 1
1
0
0
1
1
0

bN 1
1
0
0
1
0
1

re
0
1
0
1
x
x

rs
1
0
0
1
x
x

Interprtation
e
Premier cas : S < 2N 1
Deuxi`me cas : S > 2N 1 1
e
Somme reprsentable
e
Somme reprsentable
e
Somme reprsentable
e
Somme reprsentable
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

aN 1 + bN 1 re
2
-1
0
1
x
x

70

Reprsentation des grandeurs


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Notons s = (aN 1 , bN 1 , re ). Deux expressions boolennes dcrivent la


e
e
valeur du bit de dbordement V apr`s une addition :
e
e
V = aN 1 .bN 1 .s + aN 1 .bN 1 .s
V = rs ou exclusif re

La premi`re appara souvent dans les documents des constructeurs de procese


t
seurs. Lexercice E3.9 propose de montrer lquivalence des deux expressions.
e
Linterprtation est facile : aN 1 tant interprt comme le bit de signe dun
e
e
ee
oprande, bN 1 comme lautre et s comme le bit de signe du rsultat calcul
e
e
e
par le processeur, le cas aN 1 = 1, bN 1 = 1, s = 0 signierait que la somme
de deux ngatifs est positive. Cela se produit si re = 0.
e
Calcul des bits de S On se pose une deuxi`me question : comment calculer
e
la reprsentation en complment ` 2 de S, si elle existe, cest-`-dire comment
e
e
a
a
trouver le vecteur sN 1 , sN 2 , . . . , s1 , s0 tel que
i=N 2

N 1

S = 2

2i si

sN 1 +

i=0

On sait que
S=

2N 1 (aN 1 + bN 1 re ) + ,

avec [0, 2N 1 1]

En identiant bit ` bit les deux critures, on voit que pour i [0, N 2],
a
e
les si ne sont rien dautres que les chires binaires de .
De plus, puisque aN 1 + bN 1 re vaut 0 ou 1, car S est reprsentable sur
e
N bits, alors (aN 1 + bN 1 re ) = (aN 1 , bN 1 , re ).
On a reconnu dans re et rs les reports entrant et sortant du dernier tage
e
daddition binaire normale des vecteurs ai et bi . Ce qui signie que les chires
binaires de lcriture de S sobtiennent de la mme faon que les chires binaires
e
e
c
de la somme des deux naturels reprsents en binaire pur par les ai et les bi .
e
e
Cest l` tout lintrt du codage en complment ` 2.
a
ee
e
a
Remarque : Cette proprit est dune porte pratique considrable.
ee
e
e
Elle signie que le mme mcanisme daddition peut ajouter deux vecteurs bie
e
naires sans avoir ` tenir compte de linterprtation, binaire pur ou complment
a
e
e
a
` 2, qui est faite des oprandes et du rsultat. Les chires binaires du rsultat,
e
e
e
si celui-ci est reprsentable, sont identiques quelle que soit linterprtation.
e
e
On retrouvera cette proprit dans le chapitre 12 o` lon verra que la mme
ee
u
e
instruction du langage machine convient pour laddition, indpendamment du
e
code choisi, et dans le chapitre 8 o` lon verra que le mme circuit combinatoire
u
e
additionneur convient pour laddition indpendamment du code choisi.
e

Mais, attention, linformation disant si le rsultat est reprsentable ou non


e
e
nest pas la mme. En binaire pur le rsultat de laddition est reprsentable
e
e
e
si et seulement si rs = 0. En complment ` 2 le rsultat de laddition est
e
a
e
reprsentable si et seulement si rs = re .
e
Lexercice corrig E3.6 donne des exemples qui concrtisent ces quations.
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Les relatifs

71

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Ecriture de loppos Soit A un relatif reprsent sur N bits en complment


e
e
e
e
a
` 2 par aN 1 aN 2 , . . . , a1 a0 . On a :
N 1

2i ai

A = (2 aN 1 ) +

i=0

Complmentons chaque bit de A (en remplaant ai par 1 ai ), le rsultat est


e
c
e
un nombre A dni par :
e
N 1

2i (1 ai )

A = 2 (1 aN 1 ) +

i=0

Si lon ajoute A et A modulo 2N on obtient 1. A + A = 1, cest-`-dire


a
A = A 1, cest-`-dire A = A + 1 (toutes ces galits sont modulo 2N ).
a
e
e
Cela donne le procd technique pour obtenir la reprsentation de loppos
e e
e
e
de A : on forme le complmentaire bit ` bit A de A et on lui ajoute 1. Comme
e
a
lopration est modulo 2N , on ne tient pas compte dventuels reports. Un
e
e
autre procd consiste ` recopier tous les bits en commenant par les poids
e e
a
c
faibles jusquau premier 1 inclus puis ` inverser les suivants.
a
Attention toutefois car, sur N bits, loppos de 2N 1 nest pas
e
reprsentable.
e
3.2.3

Soustraction

Puisque laddition est connue, ainsi que le passage ` loppos, la soustraca


e
tion ne pose pas de probl`mes : il sut de se souvenir que A B = A + (B).
e
Comme pour laddition, les constructeurs de processeurs donnent lexpression boolenne du bit V de dbordement apr`s une soustraction :
e
e
e
V = aN 1 .bN 1 .s + aN 1 .bN 1 .s

Lexercice E3.9 revient sur cette expression.


3.2.4

Multiplication et division par une puissance de 2

Multiplier par 2 un nombre cod en complment ` 2 se fait, comme pour


e
e
a
un naturel, en ajoutant un 0 en poids faible.
Diviser par 2 consiste, comme pour les naturels, ` dcaler tous les chires
a e
dune position vers les poids faibles, mais cest la partie enti`re du quotient
e
qui est obtenue.
La dirence notable est que si lon travaille sur un nombre de bits x, ce
e
e
dcalage doit se faire en maintenant le bit de poids fort, le bit de signe.
e
Cela explique pourquoi dans les jeux dinstructions des processeurs il y a
toujours deux types de dcalages vers les poids faibles, lun nomm logique,
e
e
dans lequel un 0 est insr en poids fort, lautre nomm arithmtique o` le bit
ee
e
e
u
de signe est maintenu.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

72

Reprsentation des grandeurs


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

La division par 2 des entiers relatifs, qui revient ` diviser par 2 la valeur
a
absolue de lentier en conservant son signe, ncessite quelques prcautions pour
e
e
les entiers ngatifs impairs.
e
Le dcalage arithmtique ne tient en eet aucun compte de la valeur du bit
e
e
de poids faible. Or changer de 0 ` 1 le bit de poids faible dun entier pair a pour
a
eet den augmenter la valeur absolue sil est positif ou nul, et au contraire de
la diminuer sil est ngatif.
e
Pour en tenir compte, il faut au pralable ajouter 1 aux seuls entiers ngatifs
e
e
avant deectuer le dcalage vers les poids faibles. Si lentier est pair, ceci ne
e
modie que le bit de poids faible qui est ensuite ignor lors du dcalage.
e
e
Si lentier est impair, cette opration le ram`ne ` lentier pair de valeur
e
e a
absolue immdiatement infrieure. Ainsi, pour lentier -7, on appliquera en
e
e
fait le dcalage sur lentier -6.
e
Ecriture
de N en
dcimal
e
13
29
-6
-7
-21

4.

Ecriture
de N en
complment ` 2
e
a
001101
011101
111010
111001
101011

Ecriture
de N 2 en
complment ` 2
e
a
011010
impossible
110100
110010
impossible

Ecriture
de N/4 en
complment ` 2
e
a
000011
000111
111101
111110
110110

Lien entre larithmtique et les boolens


e
e

Le fait que les chires binaires 0 et 1 se reprsentent par les boolens 0 et


e
e
1 am`ne souvent ` faire des amalgames de types. Ainsi on assimile parfois a
e
a
et 1 a (en traitant le boolen a comme un entier). En dduire lexistence
e
e
dune soustraction boolenne est une grosse erreur.
e
Les vecteurs boolens peuvent reprsenter des nombres, on vient de le voir.
e
e
On a vu dans le chapitre 2 que les oprations boolennes existent aussi sur les
e
e
vecteurs : laddition boolenne, nomme aussi OU bit ` bit, la multiplication
e
e
a
boolenne, nomme aussi ET bit ` bit et la complmentation.
e
e
a
e
Que signieraient ces oprations appliques ` des vecteurs reprsentant des
e
e a
e
entiers ? Elles gardent leurs proprits algbriques, mais sont peu intressantes
ee
e
e
arithmtiquement. Laddition boolenne ne correspond pas ` laddition des
e
e
a
naturels ou des relatifs reprsents par les deux vecteurs. De mme pour la
e
e
e
multiplication. On obtient, par exemple, sur 8 bits :
011100002 ET 010110112 = 11210 ET 9110 = 010100002 = 8010
011100002 OU 010110112 = 11210 OU 9110 = 011110112 = 12310

La seule opration intressante pour larithmtique est la troncature : pour


e
e
e
tronquer un naturel A, reprsent sur N bits, ` P bits (avec P < N ), il sut
e
e
a
de calculer le ET entre A et un vecteur ayant des 0 en poids forts et P 1 en
poids faibles : 0 . . . 01 . . . 1. Ce vecteur reprsente le naturel 2P 1.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Les caract`res
e

73

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

On a donc A ET (2P 1) = A modulo 2P .


Si un naturel X est cod sur n bits, on peut le dcomposer en deux
e
e
naturels p et q, respectivement cods sur k et n k bits. Si p est la partie
e
poids fort et q la partie poids faible, selon le tableau :
n1

nk

p
k bits

nk1

q
n k bits

on a les relations suivantes :


X = p 2nk + q,

q = X modulo 2nk ,

p = X div 2nk

Le ET, le OU et le OU exclusif sur les vecteurs de N bits servent aussi : `


a
i
conna le bit de rang i dun nombre X (en calculant X ET 2 ) ; ` forcer `
tre
a
a
N
i
0 le bit de rang i dun nombre X (par X ET (2 1 2 ) ) ; ` forcer ` 1 le
a
a
bit de rang i dun nombre X (par X OU 2i ) ; ` inverser le bit de rang i dun
a
nombre X (par X OUEX 2i ).

5.

Les caract`res
e

Les caract`res alphabtiques, numriques, typographiques (parenth`se, vire


e
e
e
gule, etc.) et certains caract`res non imprimables (n de ligne, n de chier,
e
etc.) sont habituellement reprsents sur 7 bits selon un code normalis nomm
e
e
e
e
code ASCII pour American Standard Code for Information Interchange (Cf. Figure 3.6).
Le code ASCII est tel que : lentier reprsentant un chire vaut la valeur
e
du chire plus 48 ; les entiers correspondant aux codes de deux lettres sont
ordonns comme les deux lettres dans lalphabet si les deux lettres sont toutes
e
les deux en majuscules ou en minuscules ; la dirence entre le code dune
e
majuscule et de la minuscule correspondante est 32, cest-`-dire une puissance
a
de 2.
Sur une machine unix la commande man ascii fournit en hexadcimal
e
le tableau des codes correspondant aux caract`res. Comme on le voit sur la
e
gure 3.6, 2316 est le code hexadcimal de # et 2016 celui de lespace ; del, de
e
code 7F16 , est le caract`re deacement. Les codes infrieurs ` 1F reprsentent
e
e
a
e
des caract`res non achables.
e
Ce code ne permet pas de reprsenter les lettres accompagnes de diacrie
e
tiques (accents, cdille, trma, tilde, petit rond, etc.) dans les langues qui les
e
e
utilisent (cest-`-dire presque toutes les langues europennes !). Des extensions
a
e
a
` 8 bits, puis ` 16 sont proposes (UNICODE), mais les standards sont dia
e
ciles ` tablir. Le probl`me de pouvoir coder en binaire lensemble de toutes
ae
e
les formes crites des principales langues crites du monde nest pas encore
e
e
totalement rsolu. Cela pose de nombreux probl`mes lors des transmissions de
e
e
chiers contenant des textes.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

74

Reprsentation des grandeurs


e

(
0
8
@
H
P
X

h
p
x

21
29
31
39
41
49
51
59
61
69
71
79

!
)
1
9
A
I
Q
Y
a
i
q
y

22
2A
32
3A
42
4A
52
5A
62
6A
72
7A

*
2
:
B
J
R
Z
b
j
r
z

23
2B
33
3B
43
4B
53
5B
63
6B
73
7B

#
+
3
;
C
K
S
[
c
k
s
{

24
2C
34
3C
44
4C
54
5C
64
6C
74
7C

$
,
4
<
D
L
T
\
d
l
t
|

25
2D
35
3D
45
4D
55
5D
65
6D
75
7D

%
5
=
E
M
U
]
e
m
u
}

26
2E
36
3E
46
4E
56
5E
66
6E
76
7E

&
.
6
>
F
N
V

f
n
v

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

20
28
30
38
40
48
50
58
60
68
70
78

27
2F
37
3F
47
4F
57
5F
67
6F
77
7F

/
7
?
G
O
W
g
o
w
del

Fig. 3.6 Code ASCII

6.

Les nombres rels, la virgule ottante


e

Les nombres rationnels sont gnralement reprsents par un couple dene e


e
e
tiers. Mais ils sont peu utiliss en tant que tels dans les ordinateurs ` bas
e
a
niveau. Seuls les langages volus les manipulent et le soin de raliser les
e
e
e
oprations est alors ` la charge du compilateur ou de linterprteur. Les
e
a
e
nombres rels sont reprsents et manipuls ` bas niveau dans la plupart des
e
e
e
e a
ordinateurs contemporains. Il existe des circuits de calcul sur des rels et, par
e
voie de consquence, des instructions dans le langage machine qui manipulent
e
des rels. Ces rels sont-ils des irrationnels ? Evidemment non. Des rels non
e
e
e
rationnels ont ncessairement une suite innie non priodique de dcimales. Les
e
e
e
reprsenter en base 2 ne change rien : ils ont une suite innie non priodique
e
e
de duomales.
On reprsente en machine un ensemble ni de rels, en fait des rationnels,
e
e
selon une technique tr`s proche de la reprsentation dite scientique des cale
e
culettes. Au lieu de reprsenter 123, 5 par 1.235 102 , on le reprsente
e
e
6
par 1, 1110111 2 (car 12310 = 11110112 ). 1, 1110111 reoit le nom de
c
mantisse et 6 celui dexposant.
La reprsentation en dcimal en notation scientique a toujours un chire
e
e
(un seul) avant la virgule, chire qui nest 0 que pour la reprsentation de 0. La
e
mme proprit vaut pour le binaire et le seul chire possible avant la virgule
e
ee
tant 1, il nest pas ncessaire de le reprsenter explicitement. On parle de 1
e
e
e
cach, et cest ce qui explique la composante (1+fr) dans le tableau ci-dessous.
e
Le nombre de chires de la mantisse xe la prcision reprsentable. Lexere
e
cice E3.15 sensibilise ` la prcision dans une reprsentation base sur le mme
a
e
e
e
e
principe que la virgule ottante.
La norme I.E.E.E. 754 xe les formats possibles de la mantisse, de lexposant, du signe. Selon cette norme, il existe 3 formats de reprsentation :
e
les rels sont cods sur 32, 64 ou 128 bits. Dans chaque cas la reprsentation
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

7. Exercices

75

32 bits
1 bit

64 bits
1 bit

128 bits
1 bit

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Taille totale
Taille de S
0s1
Taille de E
0 e 28,11,15
Taille de F
0 f 223,52,112
Valeur de la
partie fractionnaire fr
Valeur normale de e
Valeur de X
cas normal e = 0, f = 0
Valeur de X
si e = 0
X = 0 si de plus f = 0
Cas particuliers : e =

8 bits

11 bits

15 bits

23 bits

52 bits

112 bits

fr = f 224

fr = f 253

fr = f 2113

0 < e < 255


(1)s 2e127
(1 + fr)
(1)s 2126
(0 + fr)

0 < e < 2047


(1)s 2e1023
(1 + fr)
(1)s 21022
(0 + fr)

0 < e < 32767


(1)s 2e16383
(1 + fr)
(1)s 216382
(0 + fr)

255

2047

32767

Fig. 3.7 Reprsentation des rels


e
e

comporte 3 champs nomms S (signe), E (exposant) et F (mantisse, ou plutt


e
o
partie fractionnaire). Nommons s, e, f le naturel reprsent par le champ de
e
e
bits S, E, F et fr la valeur de la partie fractionnaire.
Le tableau de la gure 3.7 donne les correspondances entre s, e et f et la
valeur du rel X reprsent selon la taille. Les cas particuliers correspondent
e
e
e
aux cas innis.

7.

Exercices

E3.1 : Expression boolenne dune proprit arithmtique


e
e e
e
Considrons un naturel A cod sur N bits. Donner lexpression boolenne
e
e
e
caractrisant les bits de A pour que 10 A soit aussi codable sur N bits.
e
E3.2 : Reste modulo 2N 1
Retrouver dans ses cahiers dcole lmentaire la technique de la preuve par
e
ee
9. Se remmorer comment lon obtient le reste modulo 9 dun naturel ` partir
e
a
de son criture en base 10 (` chaque fois quil y a au moins 2 chires on les
e
a
ajoute). Ecrire un nombre en octal. Appliquer la technique prcdente sur les
e e
chires octaux. Vrier que lon obtient le reste modulo 7. Calculer de mme
e
e
le reste modulo 15 dun naturel ` partir de son criture hexadcimale.
a
e
e
E3.3 : Manipulation du complment ` 2
e
a
Ecrire sur 4 bits les relatifs de -8 ` +7. Ecrire sur 5 bits les relatifs de -16 `
a
a
+15. Se persuader que la dnition intuitive, celle du compteur de voiture, et
e
les deux quations donnant la correspondance entre valeur et criture donnent
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

76

Reprsentation des grandeurs


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

bien les mmes rsultats. Se persuader de lunicit de lcriture. Reprer -8


e
e
e
e
e
(sur 4 bits), et -16 (sur 5) comme un cas particulier dont loppos nest pas
e
reprsentable.
e
E3.4 : Ecriture des nombres ` virgule
a
Se persuader que lcriture 0,011 (en base 2), peut valablement reprsenter
e
e
le nombre 0,375 (en dcimal), cest-`-dire 1/4 + 1/8. Les nombres ` virgule
e
a
a
reprsentables en base 2 et les nombres reprsentables en base 10 ne sont pas
e
e
les mmes. Dans quel sens est linclusion, pourquoi ?
e
E3.5 : Comparaison dentiers
Pour comparer deux entiers une solution est de calculer leur dirence. Mais
e
ce nest pas ncessaire. La comparaison ayant pour but de dire si les deux
e
entiers sont gaux, et, sinon, quel est le plus grand, trouver des algorithmes de
e
comparaisons de deux entiers ` partir de leurs reprsentations binaires sur N
a
e
bits :
dans le cas o` les deux nombres sont naturels,
u

dans le cas o` les deux sont signs (et reprsents en complment ` 2),
u
e
e
e
e
a
dans le cas o` un nombre est sign et lautre non.
u
e

On pourra complter cet exercice apr`s ltude des circuits combinatoires.


e
e e
E3.6 : Additions en binaire pur et en complment ` 2
e
a
Dans le tableau 3.8, on montre des rsultats daddition. La table se prsente
e
e
comme une table daddition, lignes et colonnes. Elle est donc symtrique.
e
Chaque information numrique est reprsente de 4 faons : un vecteur de
e
e
e
c
4 bits, crits en petits chires ; un naturel compris entre 0 et 15 (son criture
e
e
en binaire est le vecteur de 4 bits) ; un entier relatif entre -8 et +7 (son criture
e
en complment ` 2 est le vecteur de 4 bits).
e
a
Dans chaque case du tableau gurent ces 3 reprsentations, la valeur du
e
report sortant r3 provenant de laddition restreinte aux 3 premiers bits, la
valeur du report sortant r4 provenant de laddition sur 4 bits. Les rsultats
e
corrects sont encadrs. Les rsultats incorrects ne le sont pas.
e
e
Lobjet de lexercice est de retrouver, dapr`s ce tableau, les modes de calcul
e
des indicateurs C et V prcisant respectivement si le rsultat est correct ou
e
e
non en binaire (pour C) et en complment ` 2 (pour V). On peut faire le mme
e
a
e
travail pour la soustraction. La table nest pas symtrique dans ce cas.
e
E3.7 : Signication et test des indicateurs
Quels sont les entiers codables sur 32 bits en complment ` 2 et dont la valeur
e
a
absolue est aussi codable sur 32 bits en complment ` 2 ?
e
a
Pour rsoudre la suite de cet exercice, il faut conna la programmation
e
tre
en langage dassemblage.
Dans le programme suivant en langage dassemblage, il manque un
mnmonique dinstruction de branchement conditionnel, il a t remplac par
e
ee
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

77

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

7. Exercices

(0011)

3b
+3c2

(0100)

4b
+4c2

(0101)

5b
+5c2

(1011)

11b
5c2

(1100)

12b
4c2

(1101)

13b
3c2

(0101)

(1011)

(1100)

(1101)

3b
+3c2

(0011)

(0100)

4b
+4c2

5b
+5c2

11b
5c2

12b
4c2

13b
3c2

(0110)

(0111)

(1000)

(1110)

(1111)

(0000)

6b
7b
8b
14b
15b
0b
+6c2
+7c2
8c2
2c2
1c2
0c2
r 3 = 0 r 3 = 0 r3 = 1 r3 = 0 r3 = 0 r3 = 1
r 4 = 0 r 4 = 0 r4 = 0 r4 = 0 r4 = 0 r4 = 1
(0111)

(1000)

(1001)

(1111)

(0000)

(0001)

7b
8b
9b
15b
0b
1b
+7c2
8c2
7c2
1c2
0c2
+1c2
r 3 = 0 r 3 = 1 r3 = 1 r3 = 0 r3 = 1 r3 = 1
r 4 = 0 r 4 = 0 r4 = 0 r4 = 0 r4 = 1 r4 = 1
(1000)

(1001)

(1010)

(0000)

(0001)

(0010)

8b
9b
10b
0b
1b
2b
8c2
7c2
6c2
0c2
+1c2
+2c2
r 3 = 1 r 3 = 1 r3 = 1 r3 = 1 r3 = 1 r3 = 1
r 4 = 0 r 4 = 0 r4 = 0 r4 = 1 r4 = 1 r4 = 1
(1110)

(1111)

(0000)

(0110)

(0111)

(1000)

14b
15b
0b
6b
7b
8b
2c2
1c2
0c2
+6c2
+7c2
8c2
r 3 = 0 r 3 = 0 r3 = 1 r3 = 0 r3 = 0 r3 = 1
r 4 = 0 r 4 = 0 r4 = 1 r4 = 1 r4 = 1 r4 = 1
(1111)

(0000)

(0001)

(0111)

(1000)

(1001)

15b
0b
1b
7b
8b
9b
1c2
0c2
+1c2
+7c2
8c2
7c2
r 3 = 0 r 3 = 1 r3 = 1 r3 = 0 r3 = 1 r3 = 1
r 4 = 0 r 4 = 1 r4 = 1 r4 = 1 r4 = 1 r4 = 1
(0000)

(0001)

(0010)

(1000)

(1001)

(1010)

0b
1b
2b
8b
9b
10b
0c2
+1c2
+2c2
8c2
7c2
6c2
r 3 = 1 r 3 = 1 r3 = 1 r3 = 1 r3 = 1 r3 = 1
r 4 = 1 r 4 = 1 r4 = 1 r4 = 1 r4 = 1 r4 = 1
Fig. 3.8 Table daddition

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

78

Reprsentation des grandeurs


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

bxx. A ltat initial, le registre i0 contient une valeur enti`re x. A ltat e


e
e
nal, le registre i2 contient 1 si la valeur absolue de x est codable sur 32 bits
en complment ` 2, et alors i3 contient cette valeur absolue ; le registre i2
e
a
contient 0 si cette valeur absolue nest pas codable ; dans ce cas la valeur de
i3 nest pas pertinente.

neg :

pos :

spe :
fin :

cmp
bge
subcc
bxx
mov
ba
mov
mov
ba
mov

i0, 0
pos
0, i0, i3
spe
1, i2
fin
1, i2
i0, i3
fin
0, i2

! si i0 0

! i3 prend pour valeur (-i0)

! OK prend pour valeur vrai

! si pos. la valeur absolue est le nombre


! OK prend pour valeur faux
! etat final

Pourrait-on remplacer le bge de la deuxi`me ligne par un bpos ? Par quel


e
mnmonique faut-il remplacer bxx ?
e
E3.8 : Arithmtique sature
e
e
En arithmtique sature, il ny a ni retenue, ni dbordement. Quand le rsultat
e
e
e
e
est trop grand, il est remplac par le plus grand nombre reprsentable dans le
e
e
syst`me de numration utilis. Quand le rsultat est trop petit, il est remplac
e
e
e
e
e
par le plus petit nombre reprsentable dans le syst`me de numration utilis.
e
e
e
e
Ainsi sur 8 bits, avec des exemples crits en dcimal :
e
e
En binaire pur : 20010 +SatBinpur 8010 = 25510 au lieu de 28010
8010 SatBinpur 20010 = 010 au lieu de 12010
En complment ` 2 : 10010 +SatCompl2 8010 = 12710 au lieu de 18010
e
a
8010 SatCompl2 10010 = 12810 au lieu de 18010
Question 1 : Pour rsoudre cette question, il faut conna la programmation
e
tre
en langage dassemblage.
On suppose que A et B sont deux entiers, cods sur 32 bits (attention les
e
exemples sont sur 8 bits). Ils sont rangs dans des registres 32 bits dun procese
seur ne disposant pas des oprations en format satur. Comme les oprations
e
e
e
en arithmtique sature nexistent pas, il convient de les remplacer par un petit
e
e
programme qui produise le rsultat voulu. Ecrire les instructions qui eectuent
e
la soustraction sature en binaire pur de A et B et range le rsultat dans un
e
e
registre.
Ecrire les instructions qui eectuent laddition sature en complment ` 2
e
e
a
de A et B et range le rsultat dans un registre.
e
Question 2 : On peut revenir sur cet exercice apr`s le chapitre sur les
e
circuits combinatoires.
Donner la description dtaille dune Unit Arithmtique qui eectue sur
e
e
e
e
deux entiers A et B : laddition et la soustraction (A + B ou A B), en binaire

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

7. Exercices

79

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

pur et en complment ` deux, en arithmtique normale et en arithmtique


e
a
e
e
sature, selon 3 bits de commande.
e
Remarque : Les oprations en arithmtique sature font partir de lexe
e
e
tension MMX du jeu dinstruction des processeurs pentium de intel. Elles
servent notamment en reprsentation des images. Si un octet reprsente le
e
e
niveau de gris dun pixel, par exemple 0 pour noir et 255 pour blanc, on peut
claircir un pixel en augmentant sa luminosit 2 , mais il ne faut pas aller
e
e
au-del` de 255.
a

E3.9 : Expression du bit de dbordement


e
Soit maj (x, y, z) = x.y + x.z + y.z. Montrer que

maj (x, y, z) = maj (x, y, z)

On note le OUEXCLUSIF ou XOR. Montrer que

a.b.(a b) = a.b.(a b) = 0

On pose les quations boolennes :


e
e

s = a b re
(on note parfois s = (a, b, re ))
rs = maj (a, b, re )

On conna deux expressions dcrivant la valeur du bit de dbordement V apr`s


t
e
e
e
une addition :
V = a.b.s + a.b.s et V = rs re
Montrer que les deux expressions sont quivalentes. Le bit V pour la soustrace
tion est donn par :
e
V = aN 1 .bN 1 .s + aN 1 .bN 1 .s

Montrer que l` aussi V = rs re .


a

E3.10 : Relation entre binaire pur et complment ` 2


e
a
Soit un vecteur de bits yN 1 yN 2 , . . . , y1 y0 . Soit Yb le naturel reprsent par
e
e
ce vecteur pour linterprtation binaire pur. Soit Yc2 le relatif reprsent par ce
e
e
e
vecteur pour linterprtation complment ` 2. Donner des relations entre Yb ,
e
e
a
Yc2 et yN 1 .
E3.11 : Reprsentation de la somme de deux entiers relatifs
e
Montrer que, si laddition de deux nombres relatifs cods en complment `
e
e
a
deux dborde, alors la retenue C est linverse du bit de signe : V = C = (N )
e
La gure 3.9 donne quelques lments de rponse. On y reprsente les 8 cas
ee
e
e
possibles de valeurs pour le bit poids fort dans une addition en complment
e
a
` deux. Trouver des entiers cods sur 4 bits dans [8, 7] pour chacun des cas.
e
Retrouver chacun des cas dans le tableau 3.8. Faire le mme travail pour la
e
soustraction.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

80

Reprsentation des grandeurs


e

bP

re

rs =
maj(aP , bP , re )
indic. C
0
0
0
1
0
1
1
1

sP =
(aP , bP , re )
indic. N
0
1
1
0
1
0
0
1

V =
r e rs
indic. V
0
1
0
0
0
0
1
0

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

aP
signe A
0
0
0
0
1
1
1
1

signe B
0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

Fig. 3.9 Reprsentation de la somme de deux entiers relatifs.


e

E3.12 : Rcupration du rsultat dune addition qui dborde (cas


e
e
e
e
des entiers positifs)
On consid`re deux entiers positifs A et B, et lentier U = A + B. On suppose
e
que A et B sont reprsents en binaire pur sur 32 bits, respectivement dans
e
e
les registres %l0 et %l1 du sparc. On eectue laddition grce ` linstruction
a a
ADDcc %l0, %l1, %l2.
A et B, entiers positifs, tant supposs reprsents sur 32 bits, sont donc
e
e
e
e
32
dans lintervalle [0, 2 1]. Lorsque U est reprsentable en binaire pur sur 32
e
bits (cest-`-dire lorsque U 232 1), on obtient sa reprsentation dans le
a
e
registre %l2 ` lissue de linstruction daddition.
a
Lorsque U nest pas reprsentable en binaire pur sur 32 bits (cest-`-dire
e
a
32
U > 2 1), on dit que laddition dborde. Mais dans ce cas U est reprsentable
e
e
sur 64 bits (33 suraient). Ecrire un programme en langage dassemblage qui
donne toujours la somme U dans deux registres %l3, %l2.
On peut videmment faire lexercice analogue pour la dirence.
e
e
E3.13 : Rcupration du rsultat dune addition qui dborde (cas
e
e
e
e
des entiers relatifs)
On reprend lexercice prcdent, dans le cas de la reprsentation en complment
e e
e
e
a
` 2. On consid`re deux entiers relatifs A et B, et lentier U = A+B. On suppose
e
que A et B sont reprsents en complment ` deux sur 32 bits, respectivement
e
e
e
a
dans les registres %l0 et %l1 du sparc. On eectue laddition grce ` linsa a
truction ADDcc %l0, %l1, %l2.
A et B, entiers relatifs, tant supposs reprsents sur 32 bits, sont donc
e
e
e
e
31 31
dans lintervalle [2 , 2 1] Lorsque U est reprsentable en C2 sur 32 bits
e
(cest-`-dire 231 U 231 1), on obtient sa reprsentation dans le registre
a
e
%l2 ` lissue de linstruction daddition.
a
Lorsque U nest pas reprsentable en C2 sur 32 bits (cest-`-dire U <
e
a
2

Plus blanc que blanc, cest quoi comme couleur ? demandait Coluche dans un de ses
textes !

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

7. Exercices

81

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

231 ou U > 231 1), on dit que laddition dborde. Mais dans ce cas U
e
est reprsentable sur 64 bits (33 suraient). Ecrire un programme en langage
e
dassemblage qui donne toujours la somme U dans deux registres %l3, %l2.
On peut videmment faire lexercice analogue pour la dirence.
e
e
E3.14 : Description rcursive de laddition de 2 naturels
e
Dcrire laddition de deux naturels comme une opration rcursive sur la taille
e
e
e
des deux naturels, selon lindication suivante.
Si le nombre N de bits de A et B vaut 1, la somme de A et B est facile `
a
calculer, elle est reprsentable sur 2 bits. Si N est une puissance de 2 suprieure
e
e
a
` 1, N/2 est entier ; on peut couper A et B en deux parties Af ort Af aible et
Bf ort Bf aible , chacune sur N/2 bits ; on a alors A = Af ort 2N/2 + Af aible .
Calculons un report intermdiaire rinter :
e
rinter = 1 si Af aible + Bf aible 2N/2
rinter = 0 si Af aible + Bf aible < 2N/2

On a alors, pour les poids faibles :

Sf aible = Af aible + Bf aible si rinter = 0


Sf aible = Af aible + Bf aible 2N/2 si rinter = 1

et, pour les poids forts :

SN = 1 si Af ort + Bf ort + rinter 2N/2


SN = 0 si Af ort + Bf ort + rinter < 2N/2
Sf ort = Af ort + Bf ort + rinter si SN = 0
Sf ort = Af ort + Bf ort + rinter 2N/2 si SN = 1

E3.15 : Prcision en reprsentation ottante


e
e
Les pi`ces de monnaies courantes en France sont 5, 10, 20 et 50 centimes et 1,
e
2, 5, 10, 20 Francs. On reprsente ces pi`ces par un code binaire.
e
e
La premi`re partie du code est lanalogue dune mantisse de 3 bits m2 , m1 ,
e
m0 . Elle prend les valeurs 001, 010 ou 101 pour reprsenter 1, 2 ou 5 (centimes,
e
dizaine de centimes, francs ou dizaine de francs).
La deuxi`me partie du code est lexposant de 10 aectant les centimes (00
e
pour les centimes, 01 pour les dizaine de centimes, 10 pour les Francs et 11
pour les dizaines de Francs). Lexposant est cod sur 2 bits e1 , e0 .
e
Les codes des direntes pi`ces sont donc donns par le tableau de la e
e
e
gure 3.10.
Il serait possible de complter ce code pour reprsenter des sommes dargent
e
e
utilisant 2 pi`ces. On a alors des sommes de 3, 4, 6 ou 7 units. On obtiendrait
e
e
une table daddition pour cette reprsentation :
e
01001 + 10101 = 11101(20 centimes + 50 centimes = 70 centimes).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

82

Reprsentation des grandeurs


e

e1
0
0
0
0
1

e0
0
1
1
1
0

pi`ce
e
5 centimes
10 centimes
20 centimes
50 centimes
1 Franc

m2 m1 m0
010
101
001
010

e1
1
1
1
1

e0
0
0
1
1

pi`ce
e
2 Francs
5 Francs
10 Francs
20 Francs

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

m2 m1 m0
101
001
010
101
001

Fig. 3.10 Codage des valeurs de pi`ces de monnaie franaise.


e
c

Etudier la technique daddition dans cette reprsentation, en particulier le cas


e
o` 50 centimes + 50 centimes font 1 Franc et autres cas semblables.
u
Toutefois, on a aussi :
00111 + 01001 = 00111(10 Francs + 20 centimes = 10 Francs)

car cette reprsentation ne comporte pas assez de chires signicatifs pour


e
distinguer 10 et 10,2.
Etudier les possibilits oertes par un allongement de la mantisse sur
e
6 bits par exemple. Etudier la technique daddition nouvelle. Etudier les
reprsentations de sommes dargent utilisant 3, 4, ou N pi`ces.
e
e
Dans la reprsentation en virgule ottante classique, la mantisse a 24
e
chires. Cela permet de ne ngliger les centimes que pour des sommes
e
suprieures ` 224 centimes. Cest susant pour la comptabilit domestique,
e
a
e
mais insusant pour une comptabilit dentreprise par exemple.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 4

Reprsentation des traitements


e
et des donnes : langage
e
dactions
La programmation des dispositifs informatiques sappuie sur un ensemble
de mod`les mathmatiques simples, qui permettent de reprsenter formellee
e
e
ment les donnes et les traitements qui leur sont appliqus. Les langages dits
e
e
de haut niveau quon utilise pour crire des programmes (Pascal, Ada, C,
e
...) sont des mod`les de traitements et de donnes. Le langage machine dun
e
e
processeur particulier, ou un langage dassemblage dni pour ce processeur,
e
sont galement des mod`les de traitements, qualis de mod`les de bas nie
e
e
e
veau. Cette notion de niveau correspond au niveau dabstraction auquel on se
place pour crire des programmes : les mod`les de bas niveau sont proches
e
e
de la machine, alors que les mod`les de haut niveau permettent de sen abse
traire ; dailleurs les programmes crits en langage de haut niveau peuvent tre
e
e
rendus indpendants de la machine sur laquelle on les excute. La dnition
e
e
e
rigoureuse de la smantique de ces mod`les, ` tous les tages, est indispensable
e
e
a
e
pour assurer la correction des diverses transformations ncessaires pour passer
e
dune reprsentation de traitement dans un langage de haut niveau ` un objet
e
a
excutable par une machine.
e
Ceci est valable en ce qui concerne le logiciel les tapes de la compilation
e
dun langage de haut niveau vers un langage machine particulier (Cf. Chapitres 12, 13, 18) aussi bien que pour le matriel les tapes de la traduce
e
tion dun langage de description de circuits vers une ralisation ` laide dune
e
a
technologie particuli`re (Cf. Chapitres 8, 11 et 10).
e
Les objectifs de ce chapitre et du suivant sont : a) dnir les langages et
e
les mod`les mathmatiques utiliss ; b) donner les lments ncessaires ` la
e
e
e
ee
e
a
comprhension de lutilisation de ces objets mathmatiques pour reprsenter
e
e
e
des traitements informatiques ; c) donner la premi`re tape de traduction des
e e
mod`les de haut niveau vers des mod`les de plus bas niveau. Ltape suivante
e
e
e
est la traduction en langage dassemblage (Cf. Chapitre 13).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

84

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Le paragraphe 1. prsente un petit langage dactions (structures


e
de donnes et structures de contrle). Le paragraphe 2. tudie la
e
o
e
reprsentation en mmoire des types de base et des structures de
e
e
donnes ; nous introduisons le tableau MEM qui modlise la mmoire
e
e
e
dun ordinateur. Le paragraphe 3. montre comment transformer
systmatiquement les aectations du langage dactions en acc`s au tae
e
bleau MEM. Le paragraphe 4. illustre sur un exemple de construction
de squence chane le probl`me de lallocation dynamique de mmoire
e
e
e
e
ncessaire ` la manipulation des structures de donnes rcursives comme
e
a
e
e
les squences chanes et les arbres. Le dernier paragraphe sintresse ` la
e
e
e
a
fois aux traitements et aux donnes : la section 5. introduit les structures
e
de piles et de les, en tudiant ` la fois la reprsentation en mmoire et
e
a
e
e
les algorithmes associs.
e

1.

Un langage dactions

Le langage dactions que nous dcrivons bri`vement ci-dessous est tir


e
e
e
de [SFLM93]. Nous supposons connues les notions de variable dans un langage de programmation impratif, de type des donnes.
e
e

1.1

Lexique : nommage des types et variables

Un algorithme commence toujours par un lexique, qui nomme en particulier


les types et les variables utiliss :
e
entier18 : le type entier dans [2181 , 2181 1]
a, b, c : des entier18

1.2

1.2.1

Types de base et types construits


Types de base

La reprsentation des types de base entier naturel, entier relatif, rel et


e
e
caract`re par des vecteurs de boolens a t vue au chapitre 3. On se donne
e
e
ee
une notation de ces types de base : entier, caract`re, rel, boolen. Pour les
e
e
e
entiers on sautorise une spcication dintervalle ; on crira par exemple :
e
e
entier dans [0..255].
1.2.2

Construction de types, structures de donnes usuelles


e

Nous tudions ici les structures de donnes oertes par les constructeurs de
e
e
types usuels des langages de programmation (n-uplets, tableaux, pointeurs).
Pour dcrire un type construit et le nommer, on crit :
e
e
T : le type ...

o` les pointills doivent tre complts par une expression de type, utilisant
u
e
e
ee
lun des constructeurs dcrits ci-dessous.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Un langage dactions

85

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
icie
J.ard , F C.
lles
, P . M Fer
ara na et M
h.
Wa ni nde at
ri
e
z,
ille nch
elle
i,
s

N-uplets Le constructeur de type n-uplet permet de grouper des informations de types dirents et de les manipuler comme un tout. On notera ces
e
groupements par des chevrons :
T1 : le type ...
T2 : le type ...
Structure12 : le type < x : un T1, y : un T2 >
S : un Structure12

x et y sont des noms qui dsignent les champs de la structure. T1 et T2 sont


e
des types quelconques dnis par ailleurs. Etant donn un objet S de type
e
e
Structure12, on acc`de aux informations lmentaires du n-uplet par lopration
e
ee
e
de slection des champs, note . ; on crit ainsi S.x, S.y.
e
e
e
Le constructeur n-uplet correspond aux struct des langages C et C++, aux
record des langages Pascal et Ada.

Tableaux Le constructeur de type tableau permet de grouper des informations de mme type et dy accder par un indice. On note les tableaux par des
e
e
crochets :
Elem : le type ...
Tab : le type tableau sur [...] de Elem

En gnral [...] doit tre complt par la notation dun type intervalle. En
e e
e
ee
Pascal ou Ada, ces intervalles peuvent eux-mmes tre dnis dapr`s des types
e
e
e
e
numrs gnraux. En C les tableaux sont toujours dnis sur un intervalle de
e
ee e e
e
la forme [0..N], o` N est un entier strictement positif. Pour la suite de lexpos,
u
e
nous nous restreignons ` des intervalles dentiers. On crira par exemple :
a
e
Tab : le type tableau sur [42..56] dentiers
T : un Tab

{ T est une variable de type Tab }

Lacc`s aux lments du tableau est not par des crochets : T[42], T[43],
e
ee
e
ou encore T[a+b], si a et b sont des noms de variables de type entier, dont
les valeurs sont telles que a+b appartient ` lintervalle [42..56]. On peut aussi
a
utiliser une notation indice : T42 , Ta+b .
e
Lacc`s aux lments par un indice permet de parcourir tous les lments
e
ee
ee
dun tableau dans une boucle. En anticipant sur la notation des traitements
(paragraphes 1.4 et 1.5), on crit typiquement :
e
Tab : le type tableau sur [42..56] dentiers
T : un Tab
i parcourant [42..56]
T[i] 2 * i

Pointeurs La notion de pointeur des langages de programmation comme


Pascal, C, Ada, etc. est intimement lie ` celle dadresse. Nous revenons sur
e a
ce constructeur de type dans le paragraphe 2.
Le mot pointeur est un constructeur de type. Etant donn un type T, on
e
appelle pointeur de T le type des adresses mmoire dobjets de type T.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

86

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
icie
J.ard , F C.
lles
, P . M Fer
ara na et M
h.
Wa ni nde at
ri
e
z,
ille nch
elle
i,
s

Lopration de drfrenage sapplique ` un objet de type pointeur de T


e
e ee c
a
et son rsultat est un objet de type T. On la note de mani`re postxe par
e
e
e
une `che verticale vers le haut : p est lobjet dont ladresse est p. On crit
e
e
par exemple :
T : un type ; adT : le type pointeur de T ; t1 : un T ; pt : une adT
t1 pt

Les variables de type pointeur peuvent avoir une valeur particuli`re note
e
e
NIL, qui signie pointeur sur rien (Cf. Paragraphe 2.4.3).

1.3

Oprateurs de base et expressions


e

Les expressions du langage sont formes ` partir de noms de variables


e a
dclares dans le lexique, de constantes des types de base, doprateurs
e
e
e
prdnis et dappels de fonctions.
e e
1.3.1

Expression conditionnelle et oprateurs boolens


e
e

Une expression conditionnelle a la forme suivante : si C alors E1 sinon E2,


o` C est une expression de type boolen et E1, E2 deux expressions de mme
u
e
e
type, quelconque. Noter que les 2 expressions ci-dessous sont quivalentes, bien
e
que diremment factorises :
e
e
(si C1 alors E1 sinon E2) + (si C1 alors E3 sinon E4)
si C1 alors E1+E3 sinon E2+E4

Pour les boolens, on consid`re les oprateurs de base et, ou, non, ouexcl,
e
e
e
etc. hrits de lalg`bre de Boole (Cf. Chapitre 2). On y ajoute les oprateurs
e e
e
e
boolens dits squentiels (ou non stricts) etpuis, oualors (en Ada : andthen,
e
e
orelse).
La smantique de ces oprateurs peut tre dcrite par une transformation
e
e
e
e
en expression conditionnelle :
expr1 etpuis expr2 { est identique ` : } si expr1 alors expr2 sinon faux
a
expr1 oualors expr2 { est identique ` : } si expr1 alors vrai sinon expr2
a

1.3.2

Oprateurs sur les nombres et les caract`res


e
e

Oprations arithmtiques : On utilisera toutes les oprations


e
e
e
arithmtiques usuelles : addition, multiplication, division, soustraction,
e
etc., sur les types numriques introduits ici, cest-`-dire le type entier et le
e
a
type rel.
e
Pour les entiers strictement positifs on consid`re galement le reste et le
e e
quotient de la division enti`re, en vitant les probl`mes de dnition dus au
e
e
e
e
signe des oprandes :
e
reste, quotient : deux entiers > 0 un entier > 0
{ reste(a,b) = r et quotient (a,b) = q si et seulement si a = bq + r,
avec 0 r < b }

Lopration reste est souvent appele modulo.


e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Un langage dactions

87

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Oprations sur les caract`res : On peut introduire sur le type de base


e
e
caract`re des fonctions comme :
e
EstLettre ?, EstMajuscule ?, EstChire ?, ... : un caract`re un boolen
e
e
MajusculeDe, MinusculeDe : un caract`re un caract`re
e
e

Les premi`res permettent de dterminer ` quel sous-ensemble de caract`res ape


e
a
e
partient un caract`re donn. Les deuxi`mes sont des fonctions de conversions.
e
e
e
Par exemple : MajusculeDe (a) = A.
Notons que, grce aux proprits du code ASCII (Cf. Chapitre 3), toutes
a
ee
ces fonctions peuvent tre codes en oprations arithmtiques ou boolennes
e
e
e
e
e
simples sur la reprsentation en binaire des caract`res. Par exemple, pour pase
e
ser des majuscules aux minuscules il sut dinverser un bit, puisque lcart
e
entre les codes de deux lettres correspondantes est une puissance de 2.

1.4

Aectation

Laction de base dans un langage dactions est laectation, qui permet de


modier la valeur dune variable. On la note par une `che oriente ` gauche :
e
e a
X expr
T[3+z].u expr

La partie gauche dune aectation doit pouvoir dsigner un emplacement


e
mmoire (nous y revenons dans le paragraphe 3.) ; la partie droite est une
e
expression, dont le type doit tre compatible avec le type de la partie gauche.
e
Les langages de programmation proposent des notions de compatibilit de
e
types plus ou moins riches, des vrications statiques associes, ainsi que des
e
e
conversions dynamiques implicites. Nous nous contenterons ici dexiger que les
types des parties gauche et droite soient identiques.
Toutefois on peut avoir besoin dcrire x y, o` x est un rel et y un ene
u
e
tier. Le codage binaire des entiers tant fort dirent de celui des rels (Cf. Chae
e
e
pitre 3), la reprsentation en mmoire de la variable y est ncessairement
e
e
e
dirente de celle de x.
e
Pour mettre en vidence la conversion que cache ainsi laectation,
e
nous utiliserons des fonctions de conversion de type (ou de changement de
reprsentation mmoire) explicites :
e
e
EntierVersRel : un entier un rel
e
e
{ EntierVersRel (a) est le rel de valeur a }
e
e
Naturel31 : le type entier sur [0, 2321 1]
Entier32 : le type entier sur [2321 , 2321 1]
Naturel31VersEntier32 : un Naturel31 un Entier32
{ NaturelVersEntier (n) est lentier de valeur n }

Nous revenons sur la traduction en assembleur de ces fonctions au chapitre 13. Nous verrons en particulier que la traduction en langage dassemblage
de la fonction Naturel31VersEntier32 est un programme vide ! Au chapitre 3,
paragraphe 3.1, nous signalions dj` ce cas.
ea

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

88

Reprsentation des traitements et des donnes...


e
e

1.5

Structures conditionnelles et itratives


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
icie
J.ard , F C.
lles
, P . M Fer
ara na et M
h.
Wa ni nde at
ri
e
z,
ille nch
elle
i,
s

On se donne les constructions si ... alors ... sinon et si ... alors ... usuelles
dans tous les langages de programmation impratifs. Notons que lon peut ici
e
omettre la partie sinon, alors que cest impossible pour une expression conditionnelle, qui doit avoir une valeur dans tous les cas. Autrement dit, ne rien
faire est une action particuli`re.
e
Noter que les 3 actions suivantes sont quivalentes :
e
X (si C1 alors E1 sinon E2) + (si C1 alors E3 sinon E4)
X (si C1 alors E1+E3 sinon E2+E4)
si C1 alors X E1+E3 sinon X E2+E4

Une construction moins courante est le selon, qui permet de dcrire une
e
analyse par cas exhaustive et sans duplication de cas, pour les valeurs dune
ou plusieurs expressions de type quelconque. Dans lexemple qui suit, A1, A2
et A3 reprsentent des actions quelconques.
e
X : un entier
Y : un caract`re
e
selon X, Y
X 0 et Y = a : A1
X 0 et Y = a : A2
X < 0 : A3

Cette structure gnrale doit souvent tre code par une srie dexpressions
e e
e
e
e
conditionnelles si ... alors ... sinon encha ees, comme en Pascal, en C, ... Les
n
structures case et switch de ces langages ne permettent en eet que des
conditions de la forme expr = constante, pour des types dont les constantes
ont une notation dans le langage, cest-`-dire les entiers, caract`res, types
a
e
numrs. La structure selon ` conditions quelconques existe en Lisp (cond),
e
ee
a
mais sa smantique est squentielle et les direntes conditions ne sont pas
e
e
e
ncessairement exhaustives.
e
Nous utilisons par ailleurs 3 structures itratives : parcourant (qui correse
pond au for de Pascal, C, Ada, ...), tantque (qui correspond au while de
Pascal, C et Ada), rpter ... jusqu` (qui correspond au do ... while de C,
e e
a
au repeat ... until de Pascal, au loop ... while de Ada).
La smantique de ces constructions est prcise par leur traduction en mae
e e
chines squentielles ` actions (ou organigrammes) au chapitre 5.
e
a
On peut dj` ramener la structure parcourant ` une structure tantque :
ea
a
i parcourant [a .. b] : A
{ Est quivalent ` : }
e
a
i : un entier sur [a .. b+1]
i a
tantque i b :
A ; i i + 1

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Un langage dactions

Fonctions et actions paramtres


e e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

1.6

89

Pour dnir une fonction on crira :


e
e

ExpressionComplique (a, b : deux entiers) un entier


e
{ a et b sont les noms des param`tres, de type entier, de la fonction nomme
e
e
ExpressionComplique. Le rsultat est de type entier galement }
e
e
e
lexique local :
x : un entier
{ Pour des calculs intermdiaires }
e
algorithme
x (a+b)*2
{ Description du rsultat de la fonction : }
e
ExpressionComplique (a,b) : x + x*x
e

Pour dnir une action on crira :


e
e

CalculerExpressionComplique : une action


e
(les donnes a, b : deux entiers ;
e
{ param`tres dont la valeur est utilise par laction }
e
e
le rsultat r : un entier) { param`tre dont la valeur est modie par laction }
e
e
e
lexique local :
x : un entier
{ Pour des calculs intermdiaires }
e
algorithme
x (a+b)*2 ; r x + x*x

Un contexte dutilisation de la fonction ExpressionComplique et de laction


e
CalculerExpressionComplique est dcrit ci-dessous :
e
e
u, v, w, w1, w2 : des entiers
w ExpressionComplique (u, v) + ExpressionComplique (2*u, v1)
e
e
CalculerExpressionComplique (u, v, w1) ;
e
CalculerExpressionComplique (2*u, v1, w2) ;
e
w w1+w2

Les noms qui apparaissent dans la liste de param`tres de la dnition dune


e
e
action ou fonction sont appels param`tres formels. Les expressions qui appae
e
raissent entre parenth`ses dans les appels de fonctions ou actions sont appels
e
e
param`tres eectifs ou arguments. Les param`tres eectifs donnes sont des
e
e
e
expressions quelconques du type dni par le param`tre formel correspondant.
e
e
Les param`tres eectifs rsultats sont des expressions qui pourraient gurer en
e
e
partie gauche daectation, cest-`-dire qui dsignent un emplacement mmoire
a
e
e
(Cf. Paragraphe 2.2.1 du chapitre 13 pour comprendre cette contrainte).
Les noms dnis dans le lexique local ont une porte rduite au corps de
e
e e
laction ou fonction : cela signie quils ne sont pas utilisables ailleurs dans le
texte dun programme. Dautre part deux variables locales de deux actions ou
fonctions direntes peuvent porter le mme nom.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

90

Reprsentation des traitements et des donnes...


e
e

1.7

Entres/Sorties
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

On utilisera les actions Lire et Ecrire, pour tout type de donnes, et avec un
e
nombre quelconque de param`tres.
e
Les param`tres de Lire sont des rsultats, ceux de Ecrire sont des donnes.
e
e
e
Une utilisation typique est dcrite ci-dessous :
e
lexique : x, y : des entiers
Ecrire (Donnez deux entiers : ) ; Lire (x, y)
Ecrire (Somme des deux entiers : , x+y)

2.

Reprsentation des donnes en mmoire


e
e
e

Nous avons vu au chapitre 3 les principes de codage des types de base en


binaire. Ce paragraphe traite de deux aspects : 1) la reprsentation binaire des
e
valeurs des variables dun langage de programmation (types simples, tableaux,
structures, etc.), ` partir du codage binaire des types de base ; 2) linstallation
a
des variables dun programme en mmoire.
e
Les choix de reprsentation des types structurs sont en gnral guids
e
e
e e
e
par une notion de cot (simplicit, complexit en mmoire ou en temps) des
u
e
e
e
oprations de base ` raliser sur les objets du type considr.
e
a e
ee

2.1

Une modlisation de la mmoire : le tableau MEM


e
e

Nous introduisons le tableau MEM, comme abstraction de la mmoire dun


e
ordinateur. Cest un tableau ` une seule dimension, indic par les naturels dun
a
e
intervalle [0..tmem-1], et dont les lments reprsentent les units adressables
ee
e
e
de la mmoire dune machine.
e
Lunit adressable est un vecteur de boolens. Dans une machine relle cest
e
e
e
presque toujours suprieur au bit ; certaines machines ont propos des units
e
e
e
adressables de 9 bits. Dans la suite de cet ouvrage nous nous intressons
e
sauf mention contraire au cas des octets, cest-`-dire aux units adressables
a
e
de 8 bits. Cest une taille commode pour la reprsentation du type caract`re
e
e
en mmoire. tmem reprsente donc la taille de la mmoire en octets.
e
e
e
La notion dunit adressable, suprieure au bit, est une mani`re dexprie
e
e
mer que, dans une machine relle, des contraintes de ralisation matrielle
e
e
e
empchent daccder ecacement ` chaque bit de la mmoire individuellement
e
e
a
e
(Cf. Chapitres 9 et 15).

2.2

2.2.1

Reprsentation en mmoire des types de base


e
e
Reprsentation en mmoire des boolens
e
e
e

Lidal pour la reprsentation en mmoire dune information de type


e
e
e
boolen serait dutiliser 1 bit ; mais il est irraliste, pour des raisons matrielles,
e
e
e
daccder ` un bit individuel dans la mmoire. On choisit donc la plus petite
e
a
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Reprsentation des donnes en mmoire


e
e
e

91

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

taille possible : une unit adressable (voir toutefois le paragraphe 2.4.2 pour
e
le cas particulier des tableaux de boolens, o` lon peut esprer gagner de la
e
u
e
place). Il faut convenir dun codage des deux constantes vrai, faux parmi les 2k
congurations dune unit adressable de k bits.
e
Rien nempche, a priori, de choisir, vrai = 4210 et faux = 7710 (sur un octet
e
par exemple). Le choix du bon codage dpend essentiellement de la ralisation
e
e
des oprations dans lesquelles intervient un oprande ou un rsultat de type
e
e
e
boolen. Il faut penser aux oprations internes du type boolen (conjonction,
e
e
e
disjonction, ...) et ` la fabrication de valeurs boolennes par comparaison de
a
e
deux entiers par exemple (qui appara bien sr dans si X < Y alors ... mais
t
u
aussi dans des expressions de la forme : B (X < Y)).
Pour vrai = 4210 et faux = 7710 , il est dicile de dcrire la conjonction de
e
deux boolens a et b plus simplement que par :
e
si a=42 alors si b = 42 alors 42 sinon 77 sinon 77.
Dans le langage C, le choix est le suivant : 0 reprsente faux, toute autre
e
valeur reprsente vrai ; une conjonction peut alors tre ralise ` laide de
e
e
e e a
loprateur et logique disponible sur tous les processeurs.
e
2.2.2

Reprsentation en mmoire des entiers


e
e

Nous avons suppos lexistence dun type de base entier. Les types de
e
donnes qui permettent de dnir des entiers dans les langages de programe
e
mation usuels correspondent le plus souvent ` des entiers borns, cest-`-dire `
a
e
a
a
des intervalles dentiers. En C, par exemple, on dclare des entiers en prcisant
e
e
leur taille et en dcidant si ce sont des entiers naturels ou relatifs.
e
Il existe des langages, comme scheme [Aa91], dans lesquels les traitements
dentiers sont dits ` prcision innie. Cest un abus de langage pour expria e
mer que la taille des entiers manipulables nest pas statiquement borne : la
e
simple addition de deux entiers peut provoquer lallocation dune zone mmoire
e
supplmentaire ncessaire ` la reprsentation du rsultat. Le terme inni est
e
e
a
e
e
abusif puisque, mme si lon consacre toute la mmoire de la machine ` la
e
e
a
reprsentation dun seul entier, lintervalle des valeurs reprsentables nen est
e
e
pas moins born.
e
2.2.3

Probl`me de la taille des entiers


e

Si le type entier du langage de haut niveau que lon consid`re dsigne un


e
e
intervalle dentiers susamment petit, les valeurs de ce type peuvent tre
e
reprsentes en mmoire dans une seule unit adressable. Par exemple, un
e
e
e
e
octet sut pour reprsenter en complment ` deux les entiers de lintervalle
e
e
a
[281 , 281 1] ou, en binaire pur, les entiers de lintervalle [0, 28 1] (Cf. Chapitre 3).
Si le type entier dsigne un intervalle plus grand, il devient ncessaire dutie
e
liser plusieurs units adressables pour la reprsentation dune seule valeur de
e
e
type entier. On utilise dans ce cas des units adressables contigus, et lon
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

92

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

consid`re un nombre entier dunits adressables. Pour reprsenter les entiers


e
e
e
181 181
de lintervalle [2
,2
1], qui ncessitent 18 bits, on utilisera donc 3
e
octets. Nous avons vu au chapitre 3, paragraphes 2. et 3., comment tendre la
e
reprsentation binaire dun entier ` un plus grand nombre de bits.
e
a
Notation Nous noterons taille(T) le nombre dunits adressables ncessaires
e
e
a
` la reprsentation en mmoire dun objet de type T. Ainsi, par exemple,
e
e
taille(entier dans [2181 , 2181 1]) = 3, si lunit adressable est loctet.
e
2.2.4

Reprsentation en mmoire des entiers qui ne tiennent pas


e
e
dans une unit adressable
e

Considrons par exemple un entier x quelconque de lintervalle


e
321 321
[2
,2
1]. Notons x31 ....x0 le codage en complment ` deux de x,
e
a
qui ncessite bien 32 bits, donc 4 octets. La suite de 32 bits x31 ....x0 doit
e
tre dcoupe en 4 portions de 8 bits, videmment contigus, ce qui donne :
e
e
e
e
t4 = x31 ...x24 , t3 = x23 ...x16 , t2 = x15 ...x8 , t1 = x7 ...x0 . Notons quune de ces
tranches, prise isolment, na pas ncessairement de sens par rapport ` la vae
e
a
leur de lentier x. Par exemple, seul le bit de poids fort de la tranche t4 porte
linformation sur le signe de x, en cas de codage en complment ` 2.
e
a
Pour reprsenter x en mmoire, on utilise 4 units adressables contigus,
e
e
e
e
cest-`-dire 4 cases conscutives du tableau MEM : MEM[a], MEM[a+1],
a
e
MEM[a+2] et MEM[a+3].
Un choix subsiste sur le placement des 4 tranches t1 , t2 , t3 et t4 dans
les cases MEM[a], MEM[a+1], MEM[a+2] et MEM[a+3]. Comme on respecte
lordre entre les tranches, les deux choix possibles sont :
t1 dans MEM[a], t2 dans MEM[a+1], t3 dans MEM[a+2] et t4 dans
MEM[a+3] ; ce placement est appel petit boutiste : les poids faibles de x
e
apparaissent en premier, dans lordre des adresses.
t1 dans MEM[a+3], t2 dans MEM[a+2], t3 dans MEM[a+1] et t4 dans
MEM[a] ; ce placement est appel gros boutiste : les poids forts de x ape
paraissent en premier, dans lordre des adresses.
Remarque : Lexistence de ces deux conventions direntes est une cause
e
importante de non compatibilit entre syst`mes informatiques, d`s quil faut
e
e
e
transfrer des chiers. Dans le domaine des rseaux, il existe un standard, cest
e
e
le choix gros boutiste. Sur les machines qui font le choix inverse, les donnes
e
doivent tre transformes avant dtre transmises. Voir aussi lexercice E4.1.
e
e
e

2.3

Les acc`s au tableau MEM


e

Nous venons de voir que des variables de types simples comme les entiers
peuvent ncessiter plusieurs units adressables. Nous nous intressons donc au
e
e
e
probl`me de lacc`s simultan ` plusieurs units adressables contigus.
e
e
ea
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Reprsentation des donnes en mmoire


e
e
e

93

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

La situation dcrite ci-dessous nest pas la plus gnrale que lon pourrait
e
e e
imaginer. Elle est guide par les contraintes matrielles de liaison entre le
e
e
processeur et la mmoire, que nous tudierons au chapitre 15.
e
e
Tout dabord, nous ne nous intressons quau cas de blocs dunits adrese
e
sables en nombre gal ` une puissance de 2 (pour ne pas perdre despace
e
a
dadressage, Cf. Chapitre 15). Dautre part, sur la plupart des machines, les
acc`s ne sont permis que lorsque ladresse est un multiple de la taille du transe
fert (les autres acc`s ne sont pas ncessairement implments parce quils sont
e
e
e
e
moins ecaces). Cette restriction est connue sous le nom de contrainte dalignement mmoire.
e
Les contraintes matrielles dacc`s ` la mmoire ont galement pour
e
e a
e
e
consquence que les acc`s simultans ` un nombre quelconque dunits adrese
e
e a
e
sables ne peuvent pas constituer des oprations lmentaires dans une machine
e
ee
(un processeur) usuel. Les aectations de mmoire prsentes ci-dessous, ine
e
e
dices par le nombre dunits ` transfrer, sont en petit nombre, x.
e
e a
e
e
Nous noterons k une aectation de taille k, cest-`-dire un transfert
a
simultan de k units adressables. Nous considrons par la suite les aectae
e
e
tions :
x 1 MEM[a]
{ Lunit adressable dindice a dans le tableau MEM est copie dans la variable
e
e
x (suppose de taille adquate) }
e
e
x 2 MEM[a]
{ Valide si a est multiple de 2. Les deux units adressables dindices a et a+1
e
sont copies dans la variable x (suppose de taille adquate). }
e
e
e
x 4 MEM[a]
{ Valide si a est multiple de 4. Les quatre units adressables dindices a, a+1,
e
a+2 et a+3 sont copies dans la variable x (suppose de taille adquate). }
e
e
e

Il existe en gnral une opration lmentaire de transfert de 4 octets dans


e e
e
ee
les machines dites 32 bits, une opration de transfert de 8 octets dans les
e
machines 64 bits, ...

2.4

2.4.1

Reprsentation en mmoire des types construits


e
e
Reprsentation en mmoire des n-uplets
e
e

Les n-uplets, de mme que les entiers susamment grands, demandent plue
sieurs units adressables. On utilise lorsque cest possible des units contigus.
e
e
e
Considrons les dnitions de type :
e
e
T1 : le type entier dans [2321 , 2321 1]
T2 : le type entier dans [2161 , 2161 1]
Structure12 : le type < x : un T1, y : un T2 >
Structure21 : le type < x : un T2, y : un T1 >

Une valeur de type Structure12 occupe 6 units adressables conscutives,


e
e
dadresses a, a + 1, ... a + 5. Le champ x commence ` ladresse a, et le champ
a
y ` ladresse a + 4.
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

94

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

En suivant le mme raisonnement que prcdemment, une valeur de


e
e e
type Structure21 semble pouvoir occuper 6 units adressables conscutives,
e
e
dadresses a, a + 1, ... a + 5. Le champ x commence ` ladresse a, et le champ
a
y ` ladresse a + 2. Toutefois le champ y est de taille 4 si lunit adressable
a
e
est loctet. Si lon veut pouvoir accder ` ce champ globalement (un seul acc`s
e
a
e
mmoire), son adresse doit tre un multiple de 4. De mme le champ x est de
e
e
e
taille 2, donc son adresse doit tre paire.
e
Ces contraintes dalignement en mmoire empchent de placer un objet de
e
e
type Structure21 ` une adresse quelconque. De plus, pour satisfaire la contrainte
a
dalignement pour le champ y, on doit mnager un espace entre le champ x et
e
le champ y.
Nous donnons au paragraphe 2.4.2 une solution de reprsentation en
e
mmoire qui vite de perdre trop de place dans le cas dun tableau de struce
e
tures.
La directive dalignement .align usuelle dans les langages dassemblage est
introduite au chapitre 12 et son utilisation dans la traduction des langages de
haut niveau en langage dassemblage est tudie au chapitre 13.
e
e

Remarque : Certaines machines (pentium MMX, sparc VIS) proposent


des instructions spciques et un codage ecace pour une structure partie
culi`re qui permet de dcrire une couleur : elle comporte 4 champs r, g, b, l
e
e
pour les proportions de rouge, vert (green) et bleu, et la luminosit.
e

2.4.2

Reprsentation en mmoire des tableaux


e
e

Comme mentionn plus haut, un tableau permet de grouper des informae


tions de mme type et dy accder par un indice.
e
e
Placer les lments du tableau dans des units adressables conscutives
ee
e
e
permet dexprimer simplement ladresse dun lment du tableau en fonction
ee
de son indice et de ladresse de dbut du tableau. Le fait que ladresse dun
e
lment soit ainsi calculable conduit ` un codage simple des boucles dacc`s
ee
a
e
au tableau (Cf. le paragraphe sur loptimisation des parcours de tableaux cidessous).
Tableaux ` une dimension Considrons le type Tab :
a
e

Tab : le type tableau sur [42..56] dentiers dans [2321 , 2321 1]

Une valeur T de ce type ncessite 4 (56 42 + 1) units adressables. 4 est


e
e
le nombre dunits ncessaires pour un lment, et (56 42 + 1) est le nombre
e e
ee
dlments du tableau. Si a est ladresse de la premi`re unit adressable utilise
ee
e
e
e
pour T, llment T[i] occupe les units dadresses a + d + 0, a + d + 1, a + d + 2
ee
e
et a + d + 3, o` d = (i 42) 4.
u
Dans le cas particulier o` lintervalle des indices du tableau commence ` 0,
u
a
par exemple T : un tableau sur [0..N-1] de T, la formule qui donne ladresse de
T[i] en fonction de ladresse a de dbut de T est plus simple : d = i taille (T).
e
La prise en compte des contraintes dalignement peut imposer de mnager
e
des espaces perdus entre les lments du tableau. Si le type T des lments
ee
ee

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Reprsentation des donnes en mmoire


e
e
e

95

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
icie
J.ard , F C.
lles
, P . M Fer
ara na et M
h.
Wa ni nde at
ri
e
z,
ille nch
elle
i,
s

est tel que deux objets de type T peuvent toujours tre placs cte ` cte
e
e o a o
en mmoire, il ny a pas de place perdue. Cest le cas par exemple pour
e
T : le type < c1, c2, c3 : des caract`res >.
e
En revanche, si T est le type Structure12 tudi au paragraphe prcdent,
e
e
e e
on doit mnager un espace de deux octets entre deux lments, de mani`re `
e
ee
e a
satisfaire la contrainte dalignement sur des adresses multiples de 4 du champ
x.
On peut conserver la formule qui donne ladresse T[i] en fonction de ladresse
a de dbut de T, ` condition de rednir la notion de taille ncessaire ` la
e
a
e
e
a
reprsentation dun type. Par exemple, taille align (Structure12) = 8, et non 6.
e
Remarque : cette fonction correspond ` la macro-notation sizeof du lana
gage C, applicable ` un nom de type ou ` une expression type.
a
a
e

Cas particulier des tableaux de boolens Nous avons vu plus haut quun
e
boolen seul occupe un octet. Lorsquon consid`re un tableau de boolens,
e
e
e
il devient intressant dessayer de gagner de la place en choisissant une
e
reprsentation plus compacte. Considrons le tableau T dni par :
e
e
e
T : un tableau sur [0, N1] de boolens
e

Les lments de T peuvent tre placs en mmoire ` partir dune adresse a, `


ee
e
e
e
a
a
raison dun lment par bit. Le tableau complet occupe alors N/8 octets au
ee
lieu de N . La position de llment de rang i est dtermine par : le numro
ee
e
e
e
de loctet dans lequel il se trouve ; le numro de bit dans loctet. On obtient
e
ces deux informations en prenant respectivement le quotient et le reste de la
division enti`re de i par 8.
e

Cas particulier des tableaux de structures Soit le tableau T dni par :


e
TabStruct : le type tableau sur [0..N-1] de Structure21
T : un TabStruct

La reprsentation mmoire propose ci-dessus pour T perd 2 octets pour


e
e
e
chaque lment, cest-`-dire 2 (N 1). Si la taille mmoire est un crit`re
ee
a
e
e
important, on peut envisager une reprsentation mmoire tire de la transfore
e
e
mation suivante :
StructTab : le type <
tx : un tableau sur [0..N-1] de T2 ;
ty : un tableau sur [0..N-1] de T1 >
T : un StructTab

Il y a une correspondance vidente entre les objets de type TabStruct et


e
ceux de type StructTab. Les lments du champ tx, de taille 2, peuvent tre
ee
e
placs cte ` cte sans perte de place ; de mme les lments du champ ty. On
e o a o
e
ee
perd ventuellement deux octets entre le tableau tx et le tableau ty, mais cest
e
tr`s infrieur ` 2 (N 1).
e
e
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

96

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Parcours de tableaux et optimisation Nous traitons ici un exemple


classique qui permet de comprendre le codage optimis des parcours de
e
tableaux en langage dassemblage, comme on lobserve dans la plupart des
compilateurs. Considrons lalgorithme suivant :
e
Lexique
N : lentier ... ; i : un entier dans [0..N]
T : un tableau sur [0..N1] dentiers dans [2321 , 2321 1]
algorithme
i 0
tant que i < N
T[i] 2*i + 1
i i+1

La premi`re transformation consiste ` faire appara le tableau MEM qui


e
a
tre
modlise la mmoire, et linstallation des lments de T en mmoire. On note
e
e
ee
e
aT ladresse de dbut de T en mmoire. On obtient :
e
e
lexique : E : lentier taille align(entier dans [2321 , 2321 1])
algorithme :
i 0
tant que i < N
MEM [aT + E * i] 2*i + 1
i i+1

La deuxi`me transformation consiste ` ajouter une variable redondante Ad


e
a
pour reprsenter ladresse de llment courant en mmoire. Cette variable est
e
ee
e
lie ` lindice i du tableau par la proprit Ad = aT + E * i que lon installe
e a
ee
avant la boucle, et que lon maintient en modiant Ad lors de toute modication
de i. On obtient :
i 0 ; Ad aT + E * i
tant que i < N
{ Invariant : Ad =aT + E * i }
MEM [Ad] 2*i + 1
i i+1 ; Ad Ad + E

Remarque : La proprit qui lie Ad est i est un invariant de programme.


ee
Pour un expos complet sur la notion dinvariant, voir par exemple [BB83].
e

Cette transformation, qui consiste ` factoriser le calcul de ladresse dans


a
le tableau MEM et ` viter les multiplications, est une technique usuelle en
a e
compilation et optimisation des programmes (voir par exemple [CGV80]).

Tableaux ` plusieurs dimensions Nous considrons ici le cas des tableaux


a
e
a
` 2 dimensions. Le cas des tableaux ` k dimensions sen dduit avec quelques
a
e
prcautions (exercice E4.6).
e
Considrons le type Tab :
e
N, M : des entiers > 0
Tab : le type tableau sur [0..M-1, 0..N-1] de T

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Reprsentation des donnes en mmoire


e
e
e

97

MEM

MEM

T[0,0]
T[0,1]

3=N-1

Ar
chi
P.
te c
Am tu
F.
bla res
La
P.
gn rd, J Logi
Sic ier,
.-C ciel
ard
F.
. F les
,P
Ma ern et
h.
ran and Ma
Wa
inc
ez, tri
e
ille
hi,
ell

es

T[0,0] T[0,1] T[0,2] T[0,3]

T[1,0] T[1,1] T[1,2] T[1,3]

2=M-1

T[0,0]
T[1,0]

T[0,2]

T[2,0]

T[0,3]

T[0,1]

T[1,0]

T[1,1]

T[1,1]
........

T[2,1]
........

T[2,0] T[2,1] T[2,2] T[1,3]

(a)

(b)

(c)

Fig. 4.1 Reprsentation en mmoire des tableaux ` deux dimensions


e
e
a

T : un Tab

e
La reprsentation de T en mmoire ncessite N M taille align(T) units
e
e
e
adressables.
La gure 4.1 illustre les choix de placement des lments de T dans le
ee
tableau MEM, dans le cas o` N = 4 et M = 3. Noter que la reprsentation de
u
e
T sous forme de matrice (a), et le choix de la dimension quon appelle ligne sont
conventionnels ; nous convenons ici que dans lexpression T[i,j], i reprsente un
e
numro de ligne et j un numro de colonne.
e
e
Dans le cas (b), on range les lments de T ligne par ligne, et ladresse de
ee
u
llment T[i,j] sexprime par la formule : a + (i N + j) taille align (T), o`
ee
a est ladresse de dbut du tableau.
e
Dans le cas (c), on range les lments colonne par colonne, et ladresse de
ee
llment T[i,j] sexprime par la formule : a + (j M + i) taille align (T).
ee
Noter la symtrie des deux formules.
e
Remarque : Nous rservons le terme de tableau ` deux dimensions aux
e
a
structures implantes de mani`re contigu. En Java, on appelle tableau ` deux
e
e
e
a
dimensions une structure de donnes plus complique qui consiste en un tae
e
bleau ` une dimension de pointeurs sur des tableaux ` une dimension. Dans
a
a
ce cas les lignes (ou colonnes) ne sont plus ncessairement contigus.
e
e

2.4.3

Reprsentation en mmoire des pointeurs


e
e

NIL : un pointeur
T : un type

{ compatible avec tous les pointeurs de T }

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

98

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

adT : le type pointeur de T


t1 : un T ; pt : une adT
t1 pt

La variable pt contient une valeur a qui est une adresse dans le tableau
MEM. Cest donc un entier, dune certaine taille majore par la taille de la
e
mmoire disponible de la machine.
e
Nous avons vu dans ce qui prc`de que, lorsque les valeurs des objets
e e
(structurs ou non) ncessitent plusieurs units dacc`s, celles-ci sont contigus.
e
e
e
e
e
Ainsi, pour reprer de mani`re non ambigu une valeur en mmoire, il sut
e
e
e
e
de conna : 1) ladresse de la premi`re unit dacc`s o` elle est stocke ; 2)
tre
e
e
e u
e
le nombre dunits dacc`s utilises, qui peut se dduire de son type.
e
e
e
e
Nous avons vu (paragraphe 1.2.2) que pointeur de T est le type des adresses
mmoire dobjets de type T. Le type pointeur de T spcie donc linformae
e
tion de taille, ncessaire par exemple ` la traduction des aectations comme
e
a
t1 pt.
On dit que pt pointe sur un objet qui occupe dans le tableau MEM, taille(T)
units adressables dadresses a + 0, ... a + taille(T) 1.
e
La constante NIL est de type pointeur, compatible avec tous les types
pointeur de T, quel que soit T. Elle reprsente le pointeur sur rien, et doit tre
e
e
code par une valeur qui nappartient pas ` lensemble de valeurs que peuvent
e
a
prendre les autres pointeurs. Avec la vision abstraite de la mmoire que nous
e
avons adopte jusque l`, il sut de choisir NIL : lentier tmem, si MEM est
e
a
dni sur lintervalle [0..tmem-1]. Dans la ralit, la plupart des compilateurs
e
e e
choisissent de coder NIL par lentier 0 qui est facile ` tester (par convention 0
a
nest alors pas une adresse valide).

3.

Traduction des aectations gnrales en


e e
acc`s au tableau MEM
e

Considrons un type T et deux variables de type T nommes x et y, inse


e
talles dans le tableau MEM ` des adresses ax et ay. Dans la dnition du
e
a
e
langage dactions utilis, nous avons exig que laectation porte sur des obe
e
jets de mme type. Laectation se traduit donc toujours par une simple recopie
e
du contenu dune zone de mmoire vers une autre (pour les aectations des
e
langages moins contraignants, qui cachent des conversions, nous verrons au
chapitre 13, paragraphe 1.2, comment coder les fonctions de conversion introduites au paragraphe 1.4 ci-dessus). On sintresse ici ` la traduction de laction
e
a
x y en nutilisant plus que les acc`s de taille xe au tableau MEM dcrits
e
e
e
au paragraphe 2.3.
Lorsquune aectation porte sur des objets dont le type ncessite un grand
e
nombre dunits adressables, on ne peut pas la traduire par lutilisation dune
e
aectation indice par la taille, suppose tre une opration de base dans les
e
e e
e
machines. Il faut alors traduire laectation par une boucle ou une squence
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Utilisation des pointeurs et gestion dynamique de la mmoire


e

99

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

daectations.

3.1

Aectation de structures

On peut envisager essentiellement deux mthodes : la mthode structurelle,


e
e
dans laquelle on traduit une aectation de structures par la squence des afe
fectations champ par champ ; la mthode aveugle, dans laquelle on a oubli le
e
e
type, et o` lon traduit une aectation de structures par le bon nombre dacc`s
u
e
au tableau MEM, de la taille la plus grande possible.

3.2

Aectation de tableaux

Considrons le programme suivant :


e

Elem : un type
T : le type tableau sur [a...b] de Elem
t1, t2 : des T ;
t1 t2
{ est quivalent ` : }
e
a
i parcourant a...b
t1[i] t2[i]

Si Elem est lui-mme structur, il faut continuer le raisonnement pour reme


e
placer t1[i] t2[i] par une squence ou une boucle daectations plus
e
lmentaires.
ee

4.

Utilisation des pointeurs et gestion


dynamique de la mmoire
e

Quand on utilise des pointeurs, par exemple pour dcrire la construction


e
dune squence cha ee dentiers dont le nombre dlments nest connu qu`
e
n
ee
a
lexcution, la mmoire contient des donnes qui ne correspondent pas direce
e
e
tement ` des noms de variables dnis par le programmeur. Ces donnes sont
a
e
e
accessibles via des variables de type pointeur, dont les valeurs sont des adresses
dans le tableau MEM.
Nous donnons gures 4.2 et 4.3 un exemple typique de construction dune
structure de donnes rcursive.
e
e
Pour permettre la cration et la destruction de cellules lors de la construce
tion de la squence, on utilise les actions Allouer et Librer, qui se comportent
e
e
comme des requtes ` un dispositif capable de distribuer de la mmoire : Allouer
e a
e
permet de rserver une zone de mmoire contigu, en en prcisant la taille ;
e
e
e
e
Librer dclare que la zone ne sera plus utilise ; des requtes dallocation suce
e
e
e
cessives, sans libration, obtiennent des adresses de zones mmoire disjointes.
e
e
La mani`re la plus simple de voir les choses est de considrer que, dans un
e
e
programme qui utilise des pointeurs, tout se passe comme si le programmeur

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

100

lexique (types et variables)


Info : le type entier dans [0..255]
Cellule : le type < x : une Info, suiv : un pCellule >
pCellule : le type pointeur de Cellule
inf, sup : des entiers ; LaSquence : un pCellule
e

ConstruireSquenceCha ee : une action


e
n
(les donnes i,j : deux entiers ; le rsultat p : un pCellule)
e
e
{ tat nal : p est ladresse dune premi`re cellule qui contient linformation
e
e
i. Celle cellule pointe sur une cellule qui contient linformation i+1. Ainsi
de suite jusqu` une cellule qui contient j. Cette derni`re cellule ne pointe
a
e
sur rien (suiv = NIL). }
lexique
pcour, pprec, ctif : des pCellule ; k : un entier
algorithme
Allouer (ctif, taille (pCellule))
si ctif = NIL alors
Ecrire (Allocation impossible)
sinon
pprec ctif ; ctif.suiv NIL
k i ; pcour ctif
tantque pcour = NIL et k j :
Allouer (pcour, taille (pCellule))
si pcour = NIL alors Ecrire (Allocation impossible)
sinon
pcour.x k ; pcour.suiv NIL
pprec.suiv pcour
pprec pcour ; k k+1
p ctif.suiv
Librer (ctif, taille (pCellule))
e
algorithme du programme principal :
Ecrire (Donnez deux entiers : ) ; Lire (inf, sup) ;
ConstruireSquenceCha ee (inf, sup, LaSquence)
e
n
e

Fig. 4.2 Algorithme de construction dune squence cha ee


e
n

ctif

LaSquence
e

sup

inf

Fig. 4.3 Une squence cha ee


e
n

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Utilisation des pointeurs et gestion dynamique de la mmoire


e

101

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

avait explicitement dclar un grand tableau doctets, et fourni des actions


e
e
Allouer et Librer capables de grer loccupation de ce tableau. Cest dailleurs le
e
e
cas dans certaines applications o` la gestion de la mmoire doit tre optimise.
u
e
e
e
Les environnements de programmation et les langages usuels orent toutefois des actions Allouer et Librer, que lon peut utiliser si lon ne se proccupe
e
e
pas particuli`rement de lecacit des allocations. En C sous syst`me unix,
e
e
e
les fonctions malloc et free sont fournies dans une biblioth`que standard.
e
Dans ce cas il nest pas ncessaire que le programmeur dclare explicitement
e
e
un tableau.
Pour comprendre exactement comment fonctionne ce dispositif dallocation
mmoire dite dynamique, il faut comprendre toutes les phases de traduction des
e
langages de haut niveau en langage machine (Cf. Chapitres 12 et 13) ainsi que
les tapes de la vie dun programme, de lcriture du texte jusqu` linstallation
e
e
a
du programme en langage machine dans la mmoire vive dune machine, pour
e
excution par le processeur (Cf. Chapitres 18 et 20).
e
Toutefois, du point de vue du programmeur qui utilise des pointeurs comme
dans lexemple de la gure 4.2, tout se passe comme si une partie du tableau
MEM tait rserve pour les allocations et librations de zones mmoire ase
e
e
e
e
socies ` des pointeurs. Ce nest bien sr quune partie de la mmoire. En
e a
u
e
eet, nous verrons dans la suite de cet ouvrage que, lors de lexcution dun
e
programme utilisateur, la mmoire vive de la machine est occupe par de
e
e
nombreuses informations autres que les objets du programme proprement dit.
Dautre part, mme si lon ne consid`re que la mmoire ncessaire aux donnes
e
e
e
e
e
du programme utilisateur, il faut distinguer deux zones ncessairement dise
jointes :
une zone dans laquelle loutil dinstallation du programme en mmoire (le
e
chargeur, Cf. Chapitre 20) place les variables du lexique global. Elles restent
au mme endroit pendant toute la dure de vie du programme, et elles sont
e
e
toujours places de la mme mani`re les unes par rapport aux autres, dune
e
e
e
excution ` une autre. Nous verrons au chapitre 13 comment le compilateur
e
a
prpare ce placement en mmoire vive, en prcalculant les dplacements des
e
e
e
e
direntes variables par rapport ` une adresse de base qui ne sera connue
e
a
que lors du chargement. Ce prcalcul est quali dallocation statique, parce
e
e
quil est indpendant des excutions ; seule ladresse de base dpend de
e
e
e
lexcution.
e
une zone dans laquelle les allocations et librations ` la demande du proe
a
gramme sont eectues. Cette zone contient les zones de mmoires alloues,
e
e
e
ainsi que les informations ncessaires ` sa gestion : zones encore disponibles,
e
a
zones occupes. Cette zone est appele le tas.
e
e

4.1

Spcication des actions Allouer et Librer


e
e

Les actions Allouer et Librer peuvent donc tre spcies et comprises


e
e
e e
en considrant quune partie de la mmoire est rserve ` cet usage. Nous
e
e
e
e a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

102

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

considrons ici que le tableau MEM est partitionn en deux : une premi`re
e
e
e
portion P 1, qui va de lindice 0 ` lindice T , dans laquelle on trouve en para
ticulier les variables du lexique global ; une deuxi`me portion P 2 qui va de
e
lindice T + 1 ` lindice du dernier lment tmem1, dans laquelle on trouve
a
ee
les blocs allous dynamiquement et les informations de gestion du tas.
e
Allouer : une action (le rsultat : un pointeur ; la donne : un entier > 0)
e
e
{ Allouer (p, n) rserve dans la zone de mmoire comprise entre les indices
e
e
T +1 et tmem1 une zone contigu de n lments, dmarrant sur une fronti`re
e
ee
e
e
multiple de n. p est ladresse de la premi`re unit adressable de cette zone
e
e
rserve. Si lespace disponible est dj` enti`rement occup, la valeur nale
e
e
ea
e
e
p = NIL exprime limpossibilit dallouer.
e
Cest une action gnrique, qui convient pour tout type de pointeur. }
e e
Librer : une action (la donne : un pointeur ; la donne : un entier > 0)
e
e
e
{ Librer (p, n) restitue la zone de mmoire situe entre les adresses p incluse
e
e
e
et p+n exclue. }

4.2

Ralisation des actions Allouer et Librer


e
e

Les deux actions Allouer et Librer g`rent la zone de mmoire P 2 comprise


e
e
e
entre les indices T +1 et tmem1. Elles doivent tenir ` jour un tat de loccupaa
e
tion des lments de cette zone : lesquels sont libres, lesquels sont occups, etc.
ee
e
Ces informations sur ltat de la zone de mmoire sont de nouvelles variables,
e
e
qui peuvent tre ranges dans la mme zone.
e
e
e
Lalgorithme de laction Allouer para simple : il semble sure de distribuer
t
les portions de la zone de mmoire ` grer de mani`re squentielle, dans lordre
e
a e
e e
des demandes. Mais cest raisonner sans tenir compte de laction Librer, qui
e
peut crer des trous, rutilisables par des appels ultrieurs de laction Allouer.
e
e
e
Lalgorithme se complique. Direntes politiques dallocation de la mmoire
e
e
apparaissent, selon que lon prf`re utiliser pour une nouvelle allocation : le
ee
premier trou de taille susante (dans un certain ordre dexploration de la
zone mmoire qui dpend de lalgorithme ; lide de prendre le premier accl`re
e
e
e
ee
la recherche) ; le trou dont la taille est la plus proche de la taille demande
e
(provoque une tendance ` lmiettement) ; le trou dont la taille est la plus
a e
loigne de la taille demande...
e
e
e
Il existe une littrature prolique sur les diverses mani`res de grer ainsi
e
e
e
une zone de mmoire o` les demandes et restitutions se font dans un ordre
e
u
quelconque. Le lecteur consultera par exemple [Kra85].
Le probl`me gnral de la gestion dun espace mmoire pour linstallation
e
e e
e
disperse de blocs est prsent dans toutes les couches de larchitecture logie
e
cielle dun ordinateur. Nous le reverrons au chapitre 19 ` propos dinstallation
a
des chiers sur un disque, puis au chapitre 20 ` propos dinstallation dun
a
programme en mmoire vive et de dmarrage du syst`me.
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Piles, les et traitements associs


e

Piles, les et traitements associs


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

5.

103

Les piles et les les sont des structures de donnes tr`s utilises dans tous
e
e
e
les domaines de linformatique. Nous prcisons ci-dessous les oprations utie
e
lises dans cet ouvrage. Dans certains chapitres nous serons amens ` prciser
e
e a e
comment sont implants les types Pile et File, et comment sont programmes
e
e
les oprations de manipulation de ces types.
e
Dans une pile, les lments sont extraits dans lordre inverse de leur ordre
ee
dinsertion (en anglais last in, rst out, ou LIFO). Dans une le, les lments
ee
sont extraits dans lordre de leur insertion (en anglais rst in, rst out, ou
FIFO). Voir par exemple [BB88] pour une spcication formelle des structures
e
de pile et de le et une tude de la programmation de ces structures (par des
e
tableaux, des squences cha ees, ...).
e
n
Nous considrons ici des piles et des les de taille ventuellement borne,
e
e
e
do` la notion de pile (ou de le) pleine. Une pile ou une le peut galement
u
e
tre vide. Ajouter un lment ` une pile ou le nest possible que si elle nest
e
ee
a
pas pleine ; ter un lment nest possible que si elle nest pas vide.
o
ee

5.1

Spcication dune pile


e

Elem : un type
PileElem : un type { sans prjuger de la reprsentation des piles par des structures
e
e
de donnes particuli`res }
e
e
TailleMax : un entier > 0

Initialiser : une action (le rsultat P : une PileElem)


e
{ tat nal : P est la pile vide }
e

Empiler : une action (la donne-rsultat P : une PileElem ; la donne x : un Elem ;


e e
e
le rsultat ok : un boolen)
e
e
{ tat initial : Notons k le nombre dlments prsents dans la pile ; si la pile
e
ee
e
est vide : k = 0 ; si la pile est pleine : k = TailleMax . Notons P=1 ...k le
contenu de la pile.
tat nal : Si k = TailleMax, P = 1 ...k et ok=faux sinon, ok=vrai et P =
e
1 ...k x }
Dpiler : une action (la donne-rsultat P : une PileElem ; le rsultat x : un Elem ;
e
e e
e
le rsultat ok : un boolen)
e
e
{ tat initial : Notons k le nombre dlments et P=1 ...k le contenu de la
e
ee
pile, lorsque k = 0.
tat nal : si k=0, alors ok=faux et x est non spci sinon ok=vrai, x=k et
e
e e
P = 1 ...k1 }

Lorsque la pile est de taille susante pour lutilisation qui en est faite, ou
lorsque quon ne veut pas sintresser au probl`me du dbordement (cest-`e
e
e
a
dire une tentative dinsertion lorsque la pile est pleine), on utilisera une action

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

104

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
icie
J.ard , F C.
lles
, P . M Fer
ara na et M
h.
Wa ni nde at
ri
e
z,
ille nch
elle
i,
s

Empiler sans param`tre rsultat boolen. Dans ce cas, ltat nal dune pile qui
e
e
e
e
tait pleine lors de lempilement dun lment, est non spci.
e
ee
e e
De mme, si lon ne sintresse pas au probl`me dacc`s ` la pile vide, ou si
e
e
e
e a
lon sait que laction Dpiler nest jamais appele avec une pile vide, on peut
e
e
utiliser une action Dpiler sans param`tre rsultat boolen.
e
e
e
e

5.2

Spcication dune le
e

Elem : un type
FileElem : un type
TailleMax : un entier > 0
Initialiser : une action (le rsultat F : une FileElem)
e
{ tat nal : F est la le vide }
e

Entrer : une action (la donne-rsultat F : une FileElem ; la donne x : un Elem ;


e e
e
le rsultat ok : un boolen)
e
e
{ tat initial : Notons F=1 ...k le contenu de la le ; si la le est vide :
e
k = 0 ; si la le est pleine : k = TailleMax
tat nal : Si k = TailleMax, F = 1 ...k et ok=faux sinon, ok=vrai et F =
e
1 ...k x }
Sortir : une action (la donne-rsultat F : une FileElem ; le rsultat x : un Elem ;
e e
e
le rsultat ok : un boolen)
e
e
{ tat initial : Notons F=1 ...k le contenu de la le.
e
tat nal : si k=0, alors ok=faux et x est non spci sinon ok=vrai, x=1 et
e
e e
F = 2 ...k }

Sous les mmes hypoth`ses que pour la pile, on sautorise les actions Entrer
e
e
et Sortir sans param`tres rsultats boolens.
e
e
e

6.

Exercices

E4.1 : Codage des entiers : petit bout ou gros bout


Considrons deux cha
e
nes de caract`res dont on veut raliser la comparaie
e
son lexicographique (autrement dit dterminer laquelle vient en premier dans
e
lordre alphabtique). Ces cha
e
nes sont reprsentes en mmoire de mani`re
e
e
e
e
contigu, chaque caract`re occupe un octet et il ny a pas de place perdue.
e
e
Pour acclrer la comparaison, on utilise des oprations de comparaison denee
e
tiers cods en binaire pur sur 32 bits, cest-`-dire quon compare les caract`res
e
a
e
4 par 4. Le choix de reprsentation en mmoire des entiers (petit bout ou gros
e
e
bout, Cf. Paragraphe 2.2.4) a-t-il une inuence sur la correction du rsultat ?
e
E4.2 : Reprsentation mmoire des ensembles et codage des
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

6. Exercices

105

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

oprations ensemblistes
e
Les vecteurs boolens peuvent reprsenter des ensembles, ou, plus exactement,
e
e
un vecteur boolen de N bits peut reprsenter une partie dun ensemble ` N
e
e
a
lments : le bit de rang x est ` 1 si et seulement si llment x appartient `
ee
a
ee
a
lensemble. (Cf. Paragraphe 4. du chapitre 3). On consid`re les types :
e
Elem : le type entier dans [0..31] ; EnsElem : le type ensemble dElems
E1, E2 : des EnsElem

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

106

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Proposer une reprsentation mmoire des objets de type EnsElem. Combien


e
e
doctets sont-ils ncessaires ? Exprimer en termes doprations boolennes (et,
e
e
e
ou, non, ...) sur la reprsentation mmoire de deux ensembles E1 et E2, les
e
e
oprations suivantes :
e
E1 E2 ; E1 E2 ; E1 \ E2
E1 E1 { x } { avec x de type Elem }
E1 E1 \ { x } { avec x de type Elem }
x in E1 { avec x de type Elem }

E4.3 : Transformation des conditions boolnnes composes


e
e
Proposer une transformation de si C1 et (C2 ou non C3) alors A1 sinon A2 qui
nutilise plus doprateurs boolen et, ou, non.
e
e
E4.4 : Parcours de tableaux de structures
On consid`re lalgorithme suivant :
e

lexique
Entier32s : le type entier sur [2321 , 2321 1]
T : un tableau sur [0 .. N-1] de < a : un Entier32s, b : un caract`re >
e
algorithme
i parcourant 0 .. N-1
T[i].a i * 2 ; T[i].b a

Rcrire cet algorithme en faisant appara le tableau MEM et linstallation


ee
tre
des lments de T dans MEM, ` partir dune adresse .
ee
a
E4.5 : Choix de reprsentation dun tableau ` deux dimensions
e
a
On consid`re trois tableaux dentiers non signs, de dimension 2, carrs,
e
e
e
nomms T, S et U, dnis sur [0..N-1] x [0..N-1].
e
e
On veut remplir U dapr`s la formule : U [i,j] = T[i, j] + 232 S [j, i]. Si les
e
tableaux T et S ont des lments de 32 bits, U a donc des lments de 64 bits.
ee
ee
Choisir une reprsentation en mmoire des trois tableaux qui facilite le
e
e
parcours de remplissage selon la formule ci-dessus.
E4.6 : Reprsentation en mmoire dun tableau ` k dimensions
e
e
a
On consid`re le type suivant :
e
Tab : le type tableau sur [0..N0 , 0..N1 , ..., 0..Nk1 ] dentiers sur [281 , 281 1].
T : un Tab

Choisir une reprsentation en mmoire des objets de type Tab et donner la fore
e
mule qui exprime ladresse de dbut de llment T[i0 , i1 , ..., ik1 ] en fonction
e
ee
de ladresse de dbut de T et des dimensions N0 , N1 , ..., Nk1 .
e
E4.7 : Transformation dalgorithme dacc`s ` un tableau de struce a
tures
Reprendre le dveloppement du paragraphe sur loptimisation des parcours de
e
tableaux (Cf. Paragraphe 2.4.2) dans le cas o` un tableau de structures est
u
reprsent en mmoire par une structure de tableaux.
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

6. Exercices

107

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

E4.8 : Parcours de matrice carre et comparaison double longueur


e
en complment ` deux
e
a
Considrons une constante enti`re positive N (pas trop grande) et une matrice
e
e
carre ` N lignes et N colonnes :
e a
N : un entier > 0
Matrice : un tableau sur [0..N-1, 0..N-1] dentiers

On dsire vrier si la proprit suivante est vraie :


e
e
ee
Pour tout i dans [1, N-1],
Pour tout j dans [0, i-1]
Mij < Mji

Le but de lexercice est dcrire un programme pour parcourir la matrice et


e
dterminer si la proprit est vrie. On ne demande pas de programmer
e
ee
e e
lacquisition des lments de la matrice.
ee
Questions :
Q1 Choisir une valeur pour la constante N (non triviale, cest-`-dire
a
dirente de 0, 1, 2, mais de nature ` faciliter la programmation de lale
a
gorithme de parcours. Songer en particulier ` viter les multiplications
ae
gnrales).
e e

Q2 Proposer une reprsentation mmoire du tableau, en supposant que les


e
e
lments de la matrice sont des entiers relatifs cods en complment `
ee
e
e
a
deux sur 64 bits.
Q3 Donner lalgorithme demand en notation algorithmique, en faisant ape
para le tableau MEM et le calcul des adresses des lments.
tre
ee

Cet exercice se poursuit par la programmation en assembleur sparc, exercice E13.10 du chapitre 12.
E4.9 : Programmation dune le et dune pile
Raliser les actions de manipulation des piles et les dcrites au paragraphe 5. :
e
e
En rangeant les lments dans un tableau, cest-`-dire en considrant le
ee
a
e
type : PileElem : un tableau sur 1 .. TailleMax dElem
En rangeant les lments dans une squence cha ee
ee
e
n

Etudier les alternatives : pour le tableau, progression de la pile par adresses


croissantes ou dcroissantes et pointeur de pile indiquant la premi`re case vide
e
e
ou la derni`re case pleine ; pour la squence cha ee, insertion en dbut ou en
e
e
n
e
n.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

108
Reprsentation des traitements et des donnes...
e
e

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 5

Reprsentation des traitements


e
et des donnes :
e
machines squentielles
e
Nous prsentons ici le mod`le mathmatique des machines squentielles
e
e
e
e
de Moore et de Mealy. Ces mod`les peuvent tre utiliss pour reprsenter les
e
e
e
e
traitements, aussi bien dans un contexte matriel que dans un contexte logiciel
e
(o` elles rejoignent la reprsentation classique par organigrammes).
u
e
Dans toute la suite de louvrage, on utilisera indiremment les termes de
e
machine squentielle, machine ` tats nie, automate dtats ni, automate.
e
ae
e
Nous dnissons les machines squentielles simples au paragraphe 1.,
e
e
puis les machines squentielles avec actions au paragraphe 2. Pour le
e
logiciel, nous montrons comment traduire le langage dactions simple en
machines squentielles avec actions au paragraphe 2.2. Pour le matriel,
e
e
lutilisation des machines squentielles appara aux chapitres 10 et 11.
e
t

1.

Machines squentielles simples


e

1.1

Dnitions mathmatiques et proprits


e
e
e e

Dnition 5.1 : machine de Moore, machine de Mealy


e
Une machine de Moore est un sextuplet (Q, q0 , E, S, T, f ) o` :
u
Q est lensemble des tats ; q0 Q est ltat initial
e
e
E (resp. S) est lalphabet (ou vocabulaire) dentre (resp. de sortie)
e
T QEQ est lensemble des transitions ; on note (q, e, q ) une transition
de q ` q et on dit que llment e de lalphabet des entres est ltiquette
a
ee
e
e
de la transition.
f : Q S est la fonction qui fait correspondre un lment de lalphabet
ee
de sortie ` chaque tat.
a
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

110

Reprsentation des traitements et des donnes...


e
e

Une machine de Mealy est un quintuplet (Q, q0 , E, S, T ) o` :


u

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Q est lensemble des tats ; q0 Q est ltat initial


e
e

E (resp. S) est lalphabet dentre (resp. de sortie)


e

T Q E S Q est lensemble des transitions, tiquetes par des


e
e
couples constitus dun lment de lalphabet des entres et dun lment
e
ee
e
ee
de lalphabet des sorties.
2

La gure 5.1 illustre la reprsentation conventionnelle des automates : un


e
cercle pour un tat, une `che tiquete pour une transition.
e
e
e
e
1.1.1

Fonctionnement squentiel
e

Le fonctionnement squentiel des machines de Moore ou de Mealy est dni


e
e
en observant quelle squence de sorties est produite par la machine, lorsquelle
e
ragit ` une squence dentres donne.
e
a
e
e
e
Considrons donc une squence dentres : cest une suite dlments de
e
e
e
ee
ee
lalphabet dentres, cest-`-dire une fonction de N dans E, dont les lments
e
a
seront nots de mani`re indice. On notera Se = e0 , e1 , ..., en , ....
e
e
e
Pour dnir la raction de la machine de Moore (Q, q0 , E, S, T, f ) ` la
e
e
a
squence dentres Se , on dnit la squence q0 , q1 , ... des tats rencontrs :
e
e
e
e
e
e
n 0, (qn , en , qn+1 ) T

Une transition (q, e, q ) exprime que, si la machine est dans ltat q, et quelle
e
reoit lentre e, alors elle passe dans ltat q . La squence de sorties Ss =
c
e
e
e
s0 , s1 , ... est ensuite dnie par lintermdiaire de la squence dtats :
e
e
e
e
n N, sn = f (qn )

Pour dnir la raction de la machine de Mealy (Q, q0 , E, S, T ) ` la squence


e
e
a
e
dentres Se , on crit directement :
e
e
q 0 = q0

1.1.2

n 0, (qn , en , sn , qn+1 ) T

Dterminisme et ractivit
e
e
e

On sintresse aux proprits de dterminisme et ractivit des machines


e
ee
e
e
e
squentielles de Moore ou de Mealy, qui sont indispensables si lon utilise les
e
machines comme mod`le de traitements, cest-`-dire comme des programmes
e
a
(Cf. Paragraphes 1.3 et 2.). On trouvera parfois dans la littrature le terme
e
dautomate complet, au lieu de ractif (voir par exemple [Ben91]). Intuitivee
ment, une machine est dterministe (resp. ractive) si et seulement si, quel
e
e
que soit son tat, et quelle que soit la conguration de ses entres, elle peut
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Machines squentielles simples


e

111

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

excuter au plus une (resp. au moins une) transition. Une machine ` la fois
e
a
dterministe et ractive peut donc excuter exactement une transition, pour
e
e
e
chaque tat et chaque entre.
e
e
Dnition 5.2 : dterminisme
e
e
On dira quune machine de Mealy (Q, q0 , E, S, T ) est dterministe si et seulee
ment si :

q1 Q, e1 E, s1 S, (q, e1 , s1 , q1 ) T
q Q,
= e1 = e2

q2 Q, e2 E, s2 S, (q, e2 , s2 , q2 ) T
De mme, on dira quune machine de Moore (Q, q0 , E, S, T, f ) est dterministe
e
e
si et seulement si :

q1 Q, e1 E(q, e1 , q1 ) T
q Q,
= e1 = e2

q2 Q, e2 E(q, e2 , q2 ) T
2

Dnition 5.3 : ractivit


e
e
e
Une machine de Mealy (Q, q0 , E, S, T ) est dite ractive si et seulement si :
e
q Q, {e E | q1 Q, s S, (q, e, s, q1 ) T } = E

De mme, une machine de Moore (Q, q0 , E, S, T, f ) est dire ractive si et seulee


e
ment si :
q Q, {e E | q1 Q, (q, e, q1 ) T } = E
2

Notons que lorsque la machine est dterministe, il existe une unique


e
squence de sorties correspondant ` une squence dentres. Lorsque la machine
e
a
e
e
est ractive, la squence de sorties est aussi longue que la squence dentres.
e
e
e
e
1.1.3

Fonctions de transition et de sortie

Pour des machines dterministes, la relation de transition T Q E Q


e
(Moore) ou T Q E S Q (Mealy) est souvent exprime comme une
e
fonction.
On dnit ainsi la fonction de transition g : QE Q pour les machines
e
de Moore ; g associe ` chaque couple (tat, entre) ltat de destination ; si la
a
e
e
e
machine est ractive, cette fonction est totale. De la mme mani`re, on dnit
e
e
e
e
pour les machines de Mealy une fonction de transition g : Q E Q S qui

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

112

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

associe ` chaque couple (tat, entre) ltat de destination et la sortie mise


a
e
e
e
e
par la transition. On trouve parfois galement une dnition en deux fonctions,
e
e
dites de transition et de sortie : g : Q E Q et s : Q E S.
1.1.4

Equivalence des mod`les de Moore et de Mealy


e

Pour toute machine M de Mealy (resp. de Moore), il existe et on peut


construire une machine M de Moore (resp. de Mealy) telle que M et M
produisent la mme squence de sorties pour une squence dentres donne.
e
e
e
e
e
Nous donnons ici seulement lintuition de la transformation, pour montrer que
les deux mod`les sont quivalents.
e
e
Pour transformer une machine de Moore en machine de Mealy, il sut de
dplacer les sorties des tats sur les transitions qui y m`nent. Pour transformer
e
e
e
une machine de Mealy en machine de Moore, il sut de dplacer les sorties
e
associes ` une transition vers ltat but de la transition. Si plusieurs transie a
e
tions, portant des sorties direntes, m`nent au mme tat, celui-ci doit tre
e
e
e
e
e
clat en autant dtats distincts.
e
e
e
Dans la suite de cet ouvrage, nous utiliserons lun ou lautre des mod`les
e
de Moore ou de Mealy, mais sans avoir besoin de transformer lun en lautre.

1.2

Application ` la reconnaissance des


a
langages rguliers
e

Lune des caractrisations de la classe des langages rguliers (on dit aussi
e
e
langage rationnel) nonce que ces langages sont exactement les langages ree
connaissables par des machines ` tats nies (Cf. par exemple [Ben91]).
ae
Les reconnaisseurs de langages rguliers sont des machines de Moore qui
e
produisent une unique sortie boolenne. Dans un tat E, cette sortie est vrai
e
e
si et seulement si les squences dentres qui permettent datteindre E depuis
e
e
ltat initial constituent des phrases correctes du langage ` reconna
e
a
tre. Lusage
a consacr une notation particuli`re de ces machines de Moore, dans laquelle
e
e
on omet la notation de la sortie : il sut de distinguer, par exemple par des
triangles, les tats pour lesquels elle vaut vrai. Dans la littrature on trouvera
e
e
souvent le terme dtat nal, ou de satisfaction. Notons que, si ltat initial est
e
e
galement nal, la phrase vide appartient au langage.
e
Les machines de Moore qui expriment la reconnaissance de langages
rguliers ne sont pas ncessairement ractives : ` partir dun tat donn, il
e
e
e
a
e
e
peut ne pas exister de transition excutable, pour un lment particulier de
e
ee
la squence, et la machine peut donc se bloquer. Dans ce cas toutefois, la
e
squence dentres ne permettra jamais datteindre un tat de satisfaction. On
e
e
e
interpr`te donc les blocages de la machine comme un rsultat ngatif.
e
e
e
Elles ne sont pas non plus ncessairement dterministes ; mais pour tout
e
e
langage rgulier il existe une machine squentielle dterministe qui le ree
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Machines squentielles simples


e

113

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

c
1

a,b
4

a,b,c

(a)

a, b, c

(b)

Fig. 5.1 Reconnaissance du langage rgulier a b + c . (a) Machine de Moore ` tats


e
ae
nals, avec : Q = {1, 2, 3, 4}, E = {a, b, c}, f (1) = f (2) = f (4) =
vrai, f (3) = faux,
T = {(1, a, 3), (1, b, 4), (1, c, 2), (2, c, 2), (3, a, 3), (3, b, 4)}.
(b) Machine de Moore ordinaire.

conna Il existe mme un algorithme de transformation dun reconnaisseur


t.
e
non dterministe en reconnaisseur dterministe du mme langage.
e
e
e
Il existe une innit de machines de Moore ` tats nals pour reconna
e
ae
tre
un langage rgulier donn. Il en existe toujours une ` un nombre minimal
e
e
a
dtats.
e
Exemple E5.1 : Automate reconnaisseur du langage a b + c
La gure 5.1 donne une machine de Moore qui reconna le langage dcrit par
t
e
lexpression rguli`re a b + c . Lautomate donn est minimal. Ltat 1 est
e
e
e
e
initial. Les tats 1, 2 et 4 sont nals. Ltat nal 2 correspond aux phrases
e
e
constitues uniquement de lettres c (au moins une) ; ltat nal 4 correspond
e
e
a
` la phrase rduite ` la lettre b et aux phrases de la forme aa b (un nombre
e
a
non nul de lettres a, puis une lettre b). Notons que dans les phrases ca, bb
ou encore ac, la premi`re lettre permet dexcuter une transition issue de
e
e
ltat initial, ensuite de quoi lautomate est bloqu. Aucune de ces phrases
e
e
nappartient au langage considr.
ee

1.3

Application ` la description de syst`mes ractifs


a
e
e

Nous dtaillons dans ce paragraphe un exemple de syst`me ractif : une


e
e
e
machine ` caf. Cet exemple est repris au chapitre 10 o` nous montrons
a
e
u
comment raliser le contrleur de la machine avec un circuit squentiel. On
e
o
e
donne dautres exemples de syst`mes ractifs dans le paragraphe 2.1.1 et lexere
e
cice E10.6 du chapitre 10.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

114

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Exemple E5.2 : Machine ` caf


a
e
On consid`re une machine automatique de distribution de caf, qui accepte
e
e
des pi`ces de 1, 2 et 5 francs. Un caf cote 2 francs. D`s que le consommateur
e
e u
e
a introduit 2 francs ou plus, la machine naccepte plus de pi`ces jusqu` ce
e
a
que le caf soit servi. Dautre part, sil avait introduit plus de 2 francs, la
e
machine rend la monnaie.
On consid`re que la machine ` caf est constitue dune partie physique et
e
a
e
e
du dispositif informatique que nous appelons contrleur. Lenvironnement du
o
contrleur est constitu de lutilisateur humain et de la partie physique de la
o
e
machine. Les entres du contrleur en provenance de lutilisateur humain se
e
o
rduisent a lintroduction de pi`ces (dans un exemple plus gnral on envisae
`
e
e e
gerait le choix de la boisson). Les entres en provenance de la partie physique
e
de la machine sont des comptes-rendus dactivit (voir plus loin). Les sorties `
e
a
destination de la partie physique de la machine sont les commandes de service
du caf, de fermeture de lorice dintroduction des pi`ces, de rendu de monnaie
e
e
(on supposera quil existe un dispositif capable de calculer la somme ` rendre,
a
non dcrit ici). On nenvisage pas de sorties ` destination de lutilisateur.
e
a
Nous nous intressons ici ` lalgorithme du contrleur de cette machine.
e
a
o
Le contrleur est un exemple typique de syst`me dit ractif : il interagit en
o
e
e
permanence avec son environnement, et ragit ` des entres par lmission de
e
a
e
e
sorties appropries. On peut le dcrire par une machine squentielle ractive,
e
e
e
e
de Moore ou de Mealy. Notons que le crit`re mathmatique de ractivit de la
e
e
e
e
machine squentielle correspond exactement ` la nature ractive du syst`me de
e
a
e
e
contrle de la machine ` caf : la raction du contrleur doit tre parfaitement
o
a
e
e
o
e
dnie, dans chacun de ses tats, pour chacune des entres possibles.
e
e
e
Lalgorithme ` crire analyse une squence dentres et produit une
a e
e
e
squence de sorties correspondante.
e
Interface dentre/sortie du contrleur : Pour dterminer le vocabue
o
e
laire dentre de la machine squentielle dcrivant le contrleur, il convient de
e
e
e
o
faire quelques hypoth`ses sur son environnement. On pourra considrer que les
e
e
actions de lutilisateur et le compte-rendu de la machine ne sont jamais simultans. Dautre part des contraintes physiques comme la taille de lorice dans
e
lequel on introduit les pi`ces empchent sans doute dintroduire deux pi`ces
e
e
e
en mme temps. Les seules entres ` considrer sont donc :
e
e a
e
s1 , s2 , s5 signient respectivement que lutilisateur a introduit une pi`ce de
e
1, 2 ou 5 francs.
fs est un compte-rendu dactivit de la machine : lorsquelle reoit la come
c
mande de service de caf, elle rpond par cet acquittement de n de service,
e
e
apr`s un certain temps.
e
rien signie que rien narrive : ni introduction de pi`ces, ni compte-rendu
e
de la machine.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Machines squentielles simples


e

115

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Le vocabulaire de sortie est P({R, C, B, AUCUNE}) o` R signie : calculer


u
et Rendre la monnaie ; C signie servir le Caf ; B signie Bloquage de lorice
e
dintroduction des pi`ces ; AUCUNE signie pas de sortie. Toutefois les seuls
e
sous-ensembles eectivement utiliss dans la machine squentielle qui dcrit le
e
e
e
contrleur sont : {AUCUNE}, {C, B} et {R, C, B}.
o
Nous verrons au chapitre 10 que lidentication exacte du sous-ensemble eectivement utile du vocabulaire de sortie peut tre utilis pour proposer un codage
e
e
ecace des sorties dune machine squentielle, lorsquelle est implante par un
e
e
circuit squentiel.
e

Description du comportement du contrleur : Le comportement du


o
contrleur de machine ` caf peut tre dcrit par la machine de Moore de la
o
a
e
e
e
gure 5.2 (le mod`le de Moore est ici le plus appropri car la valeur des sorties
e
e
est intrins`quement dnie par ltat, et ne dpend pas de lentre).
e
e
e
e
e
Cette description appelle un certain nombre de remarques. 0n suppose que
lenvironnement de ce contrleur (cest-`-dire lensemble form par lutilisateur
o
a
e
humain et par la machine) a un comportement correct, cest-`-dire que cera
taines successions dentres et de sorties du contrleur peuvent tre considres
e
o
e
ee
comme impossibles : 1) Tant que lintroduction des pi`ces est bloque par la
e
e
machine, s1 , s2 et s5 ne peuvent pas survenir ; 2) Lorsque lutilisateur humain
a command le service du caf, le compte-rendu fs surviendra ncessairement,
e
e
e
apr`s un certain temps ; 3) Le compte-rendu fs ne peut pas survenir si lon na
e
pas command le service du caf.
e
e
Ces contraintes permettent de vrier que les formules boolennes qui
e
e
conditionnent les transitions issues dun mme tat assurent bien les proprits
e
e
ee
de dterminisme et ractivit de la machine. Par exemple, dans ltat Attente
e
e
e
e
Pi`ces, les seules conditions envisages sont s1 , s2 , s5 et rien. rien correspond
e
e
e
e
a
` la condition boolenne : s1 .s2 .s5 . Lentre fs nest pas mentionne. En ree
vanche, dans ltat 2F reus s1 , s2 et s5 ne peuvent pas se produire et rien
e
c
signie fs .
Nous donnons gure 5.3 une squence de monmes dentre et la squence
e
o
e
e
de monmes de sorties correspondante.
o

1.4

Codage algorithmique dune machine squentielle,


e
application aux reconnaisseurs de langages rguliers
e

Lorsquun probl`me est dcrit sous forme de machine squentielle, il est


e
e
e
possible de produire systmatiquement un algorithme itratif dont le compore
e
tement est le comportement squentiel de la machine.
e
Par exemple, lalgorithme de reconnaissance dun langage rgulier est un
e
parcours de squence qui calcule un boolen Appartenance. Lorsque le parcours
e
e
sarrte, ce boolen a la valeur vrai si et seulement si la squence parcourue
e
e
e
constitue une phrase correcte du langage considr (cest-`-dire si lautomate
ee
a
reconnaisseur sarrte dans un tat de satisfaction).
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

116

AUCUNE
Attente
Pi`ces
e

s5

s2

fs

rien

rien

fs

Trop
peru
c

R,C,B

s2

rien

2F reus
c

C,B

s1

s1

s5

1F reu
c

rien

AUCUNE

Fig. 5.2 Comportement du contrleur dune machine ` caf (machine de Moore)


o
a
e
.

Entre
e
rien
rien
rien
s2
rien
rien
rien
fs
s1
rien
s2
rien
fs
...

Sortie
{AUCUNE}
{AUCUNE}
{AUCUNE}
{AUCUNE}
{C, B}
{C, B}
{C, B}
{C, B}
{AUCUNE}
{AUCUNE}
{AUCUNE}
{R, C, B}
{R, C, B}
{AUCUNE}

Etat courant
Attente Pi`ces
e
Attente Pi`ces
e
Attente Pi`ces
e
Attente Pi`ces
e
2F reus
c
2F reus
c
2F reus
c
2F reus
c
Attente Pi`ces
e
1F reu
c
1F reu
c
Trop peru
c
Trop peru
c
Attente Pi`ces
e

Fig. 5.3 Une squence dexcution du contrleur de la machine ` caf : chaque ligne
e
e
o
a
e
correspond ` un instant dirent ; le temps passe du haut vers le bas dans le
a
e
tableau.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Machines squentielles simples


e

117

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Etat : le type (Un, Deux, Trois, Quatre, Erreur)


E : un Etat ; Appartenance : un boolen
e
E Un ; Dmarrer
e
tant que non FinDeSq
e
selon E
E = Un :
selon CarCour :
CarCour = c : E Deux
CarCour = b : E Quatre
CarCour = a : E Trois
E = Deux :
selon CarCour :
CarCour = c : E Deux
CarCour = b ou CarCour = a : E Erreur
E = Trois :
selon CarCour :
CarCour = a : E Trois
CarCour = b : E Quatre
CarCour = c : E Erreur
E = Quatre : E Erreur
E = Erreur : { rien ` faire }
a
Appartenance (E = Un ou E = Deux ou E = Quatre)
{ Invariant : Appartenance est vrai ssi la squence de caract`res lue jusque
e
e
l` est une phrase du langage dcrit par lexpression rguli`re a b + c }
a
e
e
e
Avancer

Fig. 5.4 Algorithme de reconnaissance du langage a b + c bas sur lautomate de la


e
gure 5.1-b.

On suppose que la squence des entres de la machine squentielle est ace


e
e
cessible grce aux primitives Dmarrer, Avancer, FinDeSq et CarCour qui pera
e
e
mettent dabstraire les algorithmes de traitement squentiel (Cf. [SFLM93]).
e
Nous construisons lalgorithme itratif par un codage systmatique de la
e
e
machine squentielle de Moore qui dnit le reconnaisseur. La consommae
e
tion des lments de la squence est ralise par un appel de la primitive
ee
e
e e
Avancer. Chaque passage dans la boucle consomme exactement un lment
ee
de la squence et reprsente lexcution dune transition de la machine. Les
e
e
e
conditions sur lentre sont traduites en conditions sur llment courant de la
e
ee
squence, accessible par la fonction Carcour. La sortie Appartenance est calcule
e
e
en n de boucle, en fonction de ltat atteint.
e
On suppose que la squence dentre ne comporte que les caract`res a, b et
e
e
e
c. Lalgorithme de reconnaissance du langage a b + c est donn gure 5.4.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

118

C?

faux

vrai

(a)

(b)

Fig. 5.5 Machine de Moore avec actions et organigramme. (a) : un tat de machine
e
de Moore avec actions (C est une condition boolenne et A une action) ; (b) :
e
une portion dorganigramme qui reprsente le mme traitement.
e
e

2.

Machines squentielles avec actions


e

Dans le langage des actions prsent au paragraphe 1. du chapitre 4, la


e
e
structuration des algorithmes est assure par un petit nombre de construce
tions itratives (tant que, parcourant) ou conditionnelles. Parmi les actions
e
lmentaires on trouve en particulier laectation.
ee
Lide du mod`le des machines squentielles avec actions on trouve
e
e
e
parfois dans la littrature le terme dautomate interprt ou de schma de proe
ee
e
gramme avec interprtation (Cf. par exemple [Liv78]) est dexprimer les
e
structures conditionnelles et itratives dun algorithme par les tats et trane
e
sitions dune machine squentielle. Les actions sont les sorties de la machine
e
et constituent donc les tiquettes des transitions ou des tats, selon que lon
e
e
utilise le mod`le de Mealy ou le mod`le de Moore. Des conditions boolennes
e
e
e
constituent les entres de la machine squentielle.
e
e

2.1

Dnition
e

On se donne un lexique (au sens dni chapitre 4) qui dnit des types,
e
e
des variables types, des fonctions et des actions sans param`tres. Parmi les
e
e
fonctions on distingue les prdicats, qui sont ` rsultat boolen. Le prdicat
e
a e
e
e
constant vrai et laction vide vide sont toujours dnis, et jouent un rle pare
o
ticulier dans les manipulations de machines squentielles ` actions (Cf. Parae
a
graphe 2.4).
Une machine squentielle avec actions est une machine ` tats nie dont le
e
ae
vocabulaire dentre est lensemble des prdicats : lvaluation dun prdicat
e
e
e
e
reprsente une entre de la machine, au sens du paragraphe 1.1. Les transitions
e
e
sont donc tiquetes par des prdicats. Lensemble des actions constitue le
e
e
e
vocabulaire de sortie.
Une machine de Moore avec actions est tr`s similaire aux organigrammes
e
classiques, ainsi que le montre la gure 5.5.
Les machines de Mealy avec actions sont tudies dans [SFLM93]. Elles sont
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Machines squentielles avec actions


e

119

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

une extension naturelle des algorithmes obtenus comme codage systmatique


e
des machines de reconnaissance des langages rguliers (paragraphe 1.4). Nous
e
ne les tudierons pas ici.
e

2.2

Reprsentation des structures de contrle par des


e
o
machines squentielles avec actions
e

Dans le chapitre 4 nous avons dni un petit langage dactions, et tudi


e
e
e
la premi`re tape de traduction des structures de donnes, cest-`-dire la
e e
e
a
reprsentation des donnes complexes en mmoire. Nous obtenons donc des
e
e
e
programmes sans structures de donnes, dans lesquels ne subsistent que des
e
acc`s de taille 1, 2 ou 4 au tableau MEM.
e
Nous nous intressons ici au codage des structures de contrle, sauf lape
o
pel daction ou fonction paramtr, qui sera tudi de faon dtaille au chae e
e
e
c
e
e
pitre 13.
La gure 5.6 donne la traduction des structures de contrle usuelles en mao
chines squentielles avec actions. Chaque machine obtenue pour la traduction
e
dune structure de contrle poss`de un tat initial et un tat nal. Pour como
e
e
e
poser de telles machines, il sut de dnir comment remplacer une action A
e
par une machine. Pour cela on remplace ltat q qui porte laction A par le
e
dessin complet de la machine qui reprsente lalgorithme de A. Les transitions
e
issues de q deviennent issues de ltat nal de la machine de A ; les transitions
e
qui arrivent ` q sont branches sur ltat initial de la machine de A. A titre
a
e
e
dexemple nous donnons la machine de lalgorithme :
tant que C faire
A
tant que D faire
B
E

2.3

Dnition du lexique dune machine squentielle


e
e
avec actions

Dans ce paragraphe nous montrons comment produire une machine


squentielle avec actions ` partir dun algorithme itratif. Nous illustrons cette
e
a
e
transformation pour lalgorithme de Bresenham, qui permet de calculer les coordonnes des points dun segment dans un plan quadrill. Cet exemple est
e
e
repris dans le chapitre 11 o` nous montrons comment obtenir un circuit ` paru
a
tir de cet algorithme. Lexercice E13.5 du chapitre 12 propose de programmer
cet algorithme en langage dassemblage sparc.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

120

Reprsentation des traitements et des donnes...


e
e

A ;B

si C alors A

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

si C alors A sinon B

non C

vrai

non C

vrai

vrai

vrai

Rpter A jusqu` C
e e
a

tantque C faire [ A ; tantque D faire [ B ] ; E ]

non C

vrai

tantque C faire A

vrai

non D

non C

vrai

vrai

vrai

X ; si C alors A

non C

vrai

non C

vrai

non C

vrai

Fig. 5.6 Traduction des structures de contrle en machines squentielles avec actions.
o
e
Les tats non tiquets portent implicitement laction vide.
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Machines squentielles avec actions


e

121

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

00
10
21
31
42
52
63
73
83
94
10 4
11 5
12 5

3
2
0

11

12

Fig. 5.7 Trac dun segment dont les extrmits sont les points de coordonnes (0, 0)
e
e e
e
et (12, 5). Le trait blanc est idal, les pixels noirs sont obtenus par lalgorithme,
e
les pixels gris pourraient sembler candidats.

2.3.1

Traceur de segments : algorithme de Bresenham

Le but de lalgorithme de Bresenham est de placer dans le plan des points


de coordonnes enti`res qui approchent le mieux possible une droite dquation
e
e
e
donne.
e
Le segment qui passe par les points de coordonnes (0, 0) et (m, n) est
e
supporte par la droite dquation y = (n/m)x si m = 0. Il sagit donc de tracer
e
e
le segment de cette droite qui va du point (0, 0) au point (m, n). Les points
nayant que des coordonnes enti`res, il faut noircir un ensemble de points (ou
e
e
pixels, pour picture element) aussi proches que possibles de la droite idale.
e
Remarque : Sans perte de gnralit, nous traitons le cas o` 0 n m.
e e
e
u
Les autres cas sobtiennent aisment par des transformations simples o` le
e
u
point de coordonnes (j, k) devient (j, k) ou (k, j).
e

Lquation de la droite tant y = (n/m)x, avec m et n entiers, pour tout


e
e
point de coordonnes enti`res (j, k), il est possible de calculer un cart par
e
e
e
rapport ` la droite idale : k = (n/m).j ou = (n/m).j k. Le crit`re de
a
e
e
proximit retenu est le suivant : tout point de coordonnes (j, k) doit tre tel
e
e
e
1
que : | | 2 .
Evaluons la proximit relative de deux pixels par rapport ` la droite idale
e
a
e
avec les valeurs m = 12, et n = 5 (Cf. Figure 5.7). Pour le pixel dabcisse 1,
calculons lcart ` la droite idale de (1, 1) qui appara en gris, et de (1, 0)
e
a
e
t
e
7
5
qui est donn par lalgorithme ; pour (1, 1), = 12 et pour (1, 0), = 12 .
e
Cest le point (1, 0) qui est donn par lalgorithme. Pour le point dabscisse 6,
e
les deux points (6, 2), en gris, et (6, 3), en noir, donnent la mme valeur de | |.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

122

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

lexique
n : lentier ... ; m : lentier ...
T : un tableau sur [0..m, 0..n] de boolens
e
j, k, : des entiers
algorithme
k 0 ; j 0 ; m
{ Valeur initiale de lcart : labscisse j vaut 0, lordonne k vaut 0, donc
e
e
= m }
tant que j m :
{ Invariant : 0 j m et -2*m 0 }
Tj,k vrai { Le point de coord. j, k doit tre ach }
e
e
{ Pour le point suivant, on augmente j de 1 }
j j + 1 ; + 2*n
si > 0
{ Si est devenu trop grand, on le ram`ne ` une valeur convee a
nable en augmentant lordonne courante }
e
k k + 1 ; 2*m
{ 2 m 0 }
Fig. 5.8 Algorithme de Bresenham

De | |

1
2

nous pouvons dduire :


e
1
2
1
2
m
2m

(n/m).j k

2.n.j 2.m.k
2.n.j 2.m.k m

1
2
1
2
m
0

Posons = 2.n.j 2.m.k m. On remarque alors que lorsque j augmente


de 1, augmente de 2.n ; lorsque k augmente de 1, diminue de 2.m. La
construction de lalgorithme de calcul des coordonnes des pixels successifs
e
utilise cette proprit. La variable dabscisse j est incrmente de 1 en 1. A
ee
e
e
chaque incrmentation de j, k est mis ` jour de faon ` maintenir entre
e
a
c a
2m et 0. Pour cela il faut soit laisser k inchang, soit incrmenter k.
e
e
La gure 5.8 donne lalgorithme correspondant.
2.3.2

Machine squentielle avec actions ralisant lalgorithme de


e
e
Bresenham

Nous donnons Figure 5.9 le lexique des actions ncessaires ` la dnition


e
a
e
de la machine squentielle avec actions produite ` partir de lalgorithme de
e
a
Bresenham. La gure 5.10 dcrit cette machine squentielle.
e
e
Remarquons que cette machine a une forme particuli`re. Les tats ne sont
e
e
pas spars si cela nest pas ncessaire ; par exemple, laction MajTetIncrAbs
e e
e
est constitue des trois actions lmentaires : Tj,k vrai, j j + 1 et
e
ee

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

123

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

2. Machines squentielles avec actions


e

{ Les variables : }
Fini, pos : des boolens
e
{ Les actions : }
Init : une action : j 0 ; k 0 ; m
MajTetIncrAbs : une action
Tj,k vrai ; j j + 1 ; + 2 * n
IncrOrdonne : une action : k k + 1 ; 2 * m
e
CalculFini : une action : Fini j > m
Calculpos : une action : pos > 0
{ Les prdicats : }
e
EstFini : un boolen : ni
e
EstPos : un boolen : pos
e

Fig. 5.9 Lexique de machine squentielle avec actions reprsentant lalgorithme de Bree
e
senham

Init

vrai

CalculFini

non EstFini

EstFini

non estPos

MajTetIncrAbs
vrai
Calculpos

vrai

estPos

IncrOrdonnee

Fig. 5.10 Machine squentielle avec actions ralisant lalgorithme de Bresenham


e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

124

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

+ 2 * n. Les prdicats se limitent ` la consultation dune variable


e
a
boolenne (Fini ou pos). Le calcul des prdicats est systmatiquement ralis
e
e
e
e e
dans un tat ; il pourrait parfois tre intgr ` un autre tat : la mise ` jour
e
e
e ea
e
a
de pos pourrait, par exemple, tre faite dans ltat o` est ralis laction
e
e
u
e e
MajTetIncrAbs.

2.4

Proprits et transformations de machines


e e
squentielles avec actions
e

Nous donnons ici quelques transformations des machines squentielles `


e
a
actions qui en prservent la smantique cest-`-dire la squence des actions
e
e
a
e
eectues sur les donnes du lexique mais peuvent en modier la structure.
e
e
Plusieurs de ces transformations modient le nombre dtats de la machine
e
parcourus lors dune squence donne dactions. Lorsque lon sintresse aux
e
e
e
machines squentielles ` actions comme mod`le intermdiaire dans le processus
e
a
e
e
de traduction des langages de haut niveau vers un langage dassemblage, cela a
peu dimportance, et toutes les transformations seront permises. En revanche,
si ce mod`le de machine squentielle est utilis pour obtenir une ralisation
e
e
e
e
matrielle de lalgorithme tudi, le nombre dtats sera en relation directe avec
e
e
e
e
le temps dexcution. En eet le cadencement des syst`mes matriels suit assez
e
e
e
rigoureusement la r`gle : dure de sjour dans un tat = une priode dhorloge ;
e
e
e
e
e
en particulier la dure de sjour dans un tat est une constante indpendante
e
e
e
e
de ltat. Nous revenons sur cet aspect du probl`me au chapitre 11.
e
e
2.4.1

Fusion dtats
e

Si ` la suite du processus de construction de lalgorithme deux tats E1


a
e
et E2 dune machine squentielle ` actions ne sont spars que par une trane
a
e e
sition portant le prdicat vrai, on peut les fusionner. En eet, les proprits
e
ee
de dterminisme et de ractivit des machines impliquent quil ne peut alors
e
e
e
pas y avoir dautre transition entre les deux tats E1 et E2. Si les actions,
e
A1 et A2, quils portent sont dpendantes, ltat obtenu porte laction A1 ; A2.
e
e
Si les actions quils portent sont indpendantes, on note A || B laction come
pose porte par ltat obtenu, de prfrence ` A ; B ou B ; A pour rappeler
e
e
e
ee
a
que lordre est indirent.
e
2.4.2

Eclatement dtats
e

Inversement, tout tat portant une action compose de la forme A1 ; A2


e
e
peut tre clat en deux tats spars par la transition portant le prdicat vrai,
e e
e
e
e e
e
le premier portant laction A1 et le deuxi`me laction A2.
e
Remarque :
Dans lexemple de Bresenham on aurait pu clater en
e
deux laction MajTetIncrAbs. Le premier tat porte laction : Tj,k vrai ;
e
j j + 1 ; + 2*n. Le deuxi`me : j j + 1 || + 2*n.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Machines squentielles avec actions


e

125

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Nous verrons au chapitre 11 que lorsquil sagit de produire un circuit synchrone pour implanter une machine squentielle, il faut placer sur chaque tat
e
e
une action ralisable en 1 coup dhorloge. Cela peut imposer de dcomposer des
e
e
actions complexes en suites dactions lmentaires ralisables en 1 seul coup
ee
e
dhorloge chacune. La machine squentielle comporte alors une suite dtats
e
e
spars par des transitions portant le prdicat vrai.
e e
e
2.4.3

Transformation des branchements n-aires en branchements


binaires

Que les machines squentielles soient utilises pour construire des circuits
e
e
squentiels synchrones (chapitre 11), ou pour produire du langage machine
e
(chapitre 12), il faut parfois se restreindre ` des branchements binaires. La
a
transformation systmatique dune machine ` branchements n-aires en mae
a
chine ` branchements uniquement binaires peut ajouter des tats, et donc
a
e
allonger le chemin ncessaire ` lexcution dune action. Dans le cas logiciel
e
a
e
comme dans le cas matriel, cet allongement du chemin se traduit par un
e
allongement du temps dexcution.
e
La gure 5.11 donne deux machines squentielles correspondant ` la struce
a
ture conditionnelle :
selon
C1 : A1 ; C2 : A2 ; C3 : A3

La premi`re machine poss`de un tat ` 3 transitions sortantes, pour lequel


e
e
e
a
on exige : (C1 ou C2 ou C3) et non ((C1 et C2) ou (C2 et C3) ou (C1 et C3)).
La deuxi`me machine est ` branchement binaire. Noter que le test des
e
a
conditions peut se faire dans un ordre quelconque. Il existe donc 6 machines
direntes ayant le mme comportement. Noter galement que si la condition
e
e
e
de ractivit est bien respecte dans la machine ` branchement binaire, la
e
e
e
a
transition qui porte la condition non C1 est inutile.
2.4.4

Echange contrle/donnes
o
e

Les deux algorithmes de la gure 5.12 produisent les mmes rsultats. La


e
e
gure 5.14 reprsente les deux machines squentielles avec actions associes,
e
e
e
en utilisant le lexique dcrit Figure 5.13.
e
Dans la deuxi`me machine, lutilisation de laction ActCond permet
e
lconomie du test portant sur C2, cest-`-dire sur CondT.
e
a
Formellement les deux algorithmes ne sont pas quivalents. Dans le premier,
e
une seule des deux expressions Ti et B1 et Ti ou B2 est value ; dans lautre
e
e
les deux le sont. Il ny a quivalence que si aucune des deux valuations ne
e
e
produit deet de bord.
Nous verrons au chapitre 11 que cette technique permettant de transfrer
e
des informations du contrle aux donnes est utilise lors de la rpartition
o
e
e
e
du travail entre une partie oprative et une partie contrle. Laction ActCond
e
o
correspond en matriel ` lutilisation dun multiplexeur (Cf. Chapitre 8).
e
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

126

C3

non C3

C3

A3

C2

C1

A1

vrai

A2

vrai

A3

non C2

C2

C1

A2

vrai

non C1

A1

vrai

vrai
vrai

Fig. 5.11 Transformation des tests n-aires en tests binaires

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

127

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

2. Machines squentielles avec actions


e

lexique
B1 : le boolen ... ; B2 : le boolen ... ; N : lentier ... ; i : un entier
e
e
T : un tableau sur [0..N] de boolens
e
CondT : un entier un boolen { une proprit portant sur un entier }
e
ee
algorithme 1 :
i 0
tant que i N
si CondT(i) alors Ti (Ti et B1) sinon Ti (Ti ou B2)
i i + 1
algorithme 2 :
i 0
tant que i N
Ti (CondT(i) et (Ti and B1)) ou (non CondT(i) et (Ti ou B2))
i i + 1
Fig. 5.12 Echange contrle/donnes : deux algorithmes quivalents
o
e
e

{ lexique : }
C1, C2 : des boolens
e
{ les actions : }
Init : une action (la donne-rsultat i : un entier) : i 0
e e
CalculC1 : une action (les donnes i : un entier, N : un entier) : C1 i N
e
CalculC2 : une action (la donne i : un entier) : C2 CondT(i)
e
AndT : une action (les donnes : x : un boolen, i : un entier) : Ti Ti et x
e
e
OrT : une action (les donnes : x : un boolen, i : un entier) : Ti Ti ou x
e
e
ActCond : une action (les donnes : x1, x2 : deux boolens, i : un entier)
e
e
Ti (CondT(i) et (Ti et x1)) ou (non CondT(i) et (Ti ou x2))
{ les prdicats : }
e
EstC1 : un boolen : C1
e
EstC2 : un boolen : C2
e
Fig. 5.13 Echange contrle/donnes : lexique des machines squentielles
o
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Reprsentation des traitements et des donnes...


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

128

Init

vrai

CalculC1

non EstC1

EstC1

CalculC2

EstC2

non EstC2

AndT(B1,i)

OrT(B2,i)

vrai

vrai

vrai

Incr(i)

Init

vrai

non EstC1

CalculC1

EstC1

ActCond(B1, B2, i)

vrai

vrai

Incr(i)

Fig. 5.14 Deux machines squentielles ralisant le mme traitement


e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 6

Temps, donnes temporelles et


e
synchronisation
Ce chapitre est loccasion dintroduire la notion de temps dans les syst`mes
e
informatiques. Quand on sintresse ` un syst`me informatique au niveau
e
a
e
dabstraction que donnent les langages de haut niveau, on peut se contenter
dune notion de temps logique pour raisonner sur la succession des oprations
e
dans un programme. Cette notion de temps est qualie de logique parce quon
e
ne sintresse pas ` la relation avec le temps physique (mme lorsque cette ree
a
e
lation existe : pour un processeur donn et une cha de compilation donne,
e
ne
e
elle est mme exprimable).
e
En revanche, lorsquon sintresse aux mod`les de traitements de bas niveau
e
e
comme le langage machine, le squencement des oprations est en rapport
e
e
direct avec le temps physique. Dautre part, ne ft-ce que pour comprendre
u
les mcanismes dentres/sorties, il faut sinterroger sur linterface entre le
e
e
dispositif informatique et son environnement, et sur le rapport entre les notions
de temps de lun et de lautre : le temps de lenvironnement est un temps
physique continu ; celui du syst`me informatique est par nature discret.
e

Nous tudions tout dabord au paragraphe 1. linterface entre un envie


ronnement physique et un dispositif informatique rduit ` une machine
e
a
squentielle (tudie au chapitre 5). Le paragraphe 2. introduit la notion
e
e
e
de signal logique obtenu par discrtisation dun signal physique continu,
e
et la reprsentation de telles informations temporelles par des chronoe
grammes. Le paragraphe 3. sintresse aux probl`mes de synchronisation
e
e
de deux dispositifs informatiques connects lun ` lautre ; trois solutions
e
a
sont envisages, dont le protocole poigne de mains que nous utilisons
e
e
dans les chapitres 11 et 16. Au paragraphe 4. nous reprenons lexemple
de la machine de distribution de caf dj` tudie au chapitre 5, pour
e ea e
e
prciser linterface entre le contrleur informatique et lenvironnement
e
o
physique de la machine.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Temps, donnes temporelles et synchronisation


e

1.

Interface entre un dispositif informatique et


un environnement physique

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

130

Pour comprendre o` intervient le temps dans les traitements informatiques,


u
nous nous intressons ici au cas o` une machine squentielle reprsente le fonce
u
e
e
tionnement dun dispositif informatique directement connect ` un environneea
ment physique.

1.1

Le temps logique discret des machines squentielles


e

Bien que la dnition mathmatique des squences et des machines


e
e
e
squentielles ne suppose pas lintroduction dune notion de temps, il est assez
e
naturel de parler dapr`s ou davant dans la squence des entres. Lindiciation
e
e
e
des lments de la squence cest-`-dire lensemble des entiers naturels
ee
e
a
est donc un bon candidat pour reprsenter une certaine notion de temps. Ce
e
temps est quali de logique parce quon ne sintresse pas ncessairement ` la
e
e
e
a
relation entre les instants quil dnit et un vritable temps physique. Il est dit
e
e
discret parce que lensemble des entiers naturels nest pas dense dans (une
squence indice par les lments de lensemble des rels reprsenterait plus
e
e
ee
e
e
naturellement un temps continu).
Tant quon utilise le mod`le des machines squentielles avec actions
e
e
(Cf. Chapitre 5), on reste au niveau dabstraction du logiciel. La squence des
e
entres de la machine squentielle est accessible grce aux primitives Dmarrer,
e
e
a
e
Avancer, FinDeSq et CarCour qui, dans un programme complet, seraient eece
tivement programmes. Elles peuvent reprsenter le parcours dun tableau en
e
e
mmoire, la saisie interactive au clavier, aussi bien que lacc`s aux lments
e
e
ee
dun chier prsent sur un disque. Le fonctionnement de la machine, cest-`e
a
dire le droulement de lalgorithme, dpend donc bien de param`tres de temps,
e
e
e
comme le temps dacc`s ` la mmoire, le temps ncessaire pour raliser une
e a
e
e
e
entre clavier, le temps dacc`s au disque, etc., mais dune faon dicilement
e
e
c
exprimable.

1.2

Le temps physique continu de lenvironnement

Si la machine squentielle considre reprsente le fonctionnement dun


e
ee
e
dispositif informatique directement connect ` un environnement physique, les
ea
alphabets dentre et de sortie reprsentent des informations en provenance ou
e
e
a
` destination de cet environnement. Il faut alors exprimer prcisment la relae e
tion entre les phnom`nes continus qui nous intressent dans lenvironnement
e
e
e
et la structure de squence des entres/sorties de la machine squentielle.
e
e
e
On se ram`ne toujours ` des phnom`nes physiques que des appareils de
e
a
e
e
mesure appropris transforment en tensions lectriques accessibles au dispositif
e
e
informatique.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Interface entre un dispositif informatique et un environnement physique

131

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Lvolution dune tension lectrique en fonction du temps peut-tre


e
e
e
reprsente par une courbe de fonction, comme illustr gure 6.1-a.
e
e
e

1.3

Dnition de linterface dentres/sorties


e
e
de la machine squentielle
e

Le dispositif informatique ne peut traiter que des informations discr`tes.


e
Nous avons vu au chapitre 3 comment ramener lensemble des valeurs possibles
de G ` un nombre ni de valeurs. On discrtise donc laxe G en dnissant une
a
e
e
partition nie de lensemble des valeurs possibles, comme indiqu gure 6.1e
b o` il y a deux valeurs. On peut ensuite reporter les variations continues
u
sur cette nouvelle chelle GD. On obtient une suite de paliers de longueurs
e
quelconques, comme indiqu gure 6.1-c. Notons que deux paliers successifs
e
sont ` des hauteurs distinctes, par construction.
a
On va se limiter au cas des informations boolennes (pour lesquelles lene
semble des valeurs a t partitionn en deux). Ce qui est en dessous du seuil
ee
e
devient la valeur la plus basse (code par 0), et ce qui est au-dessus du seuil
e
devient la plus haute (cod par 1).
e

1.4

Discrtisation du temps : interprtation synchrone


e
e
ou asynchrone

Pour complter la dnition de linterface entre lenvironnement et le dise


e
positif informatique reprsent par une machine squentielle, il faut dnir
e
e
e
e
la structure de squence, cest-`-dire dcider comment la suite de paliers de
e
a
e
la gure 6.1-c doit tre interprte en une squence dlments de lalphabet
e
ee
e
ee
dentre, ` fournir ` la machine.
e a
a
Il y a essentiellement deux choix : linterprtation asynchrone, et line
terprtation synchrone, que nous exposons ci-dessous.
e
1.4.1

Interprtation asynchrone
e

En interprtation asynchrone, la structure de squence est dnie par les


e
e
e
changements de hauteurs de paliers.
Dans le cas dune information boolenne, qui ne comporte que deux haue
teurs de paliers, on parle de front montant ou de front descendant, selon quon
passe du niveau infrieur au niveau suprieur ou inversement. Notons que cette
e
e
interprtation de la suite de paliers donne des squences o` les fronts montants
e
e
u
et descendants alternent, par construction.
Par consquent, quelle que soit la courbe de la grandeur mesure, et quelle
e
e
que soit la position des fronts sur lchelle de temps physique, la squence des
e
e
hauteurs de paliers est une alternance de 0 et de 1 ; la squence des fronts
e
porte exactement la mme information. Il nest donc pas tr`s intressant de
e
e
e
considrer la raction dune machine squentielle ` cette squence dentres.
e
e
e
a
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Temps, donnes temporelles et synchronisation


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

132

(a)

temps

temps

temps

(b)
temps

GD

GD

(c)

GD

GD

(d)

(A)

(B)

Fig. 6.1 Squence dentres correspondant ` une grandeur continue de lenvironnee


e
a
ment :
a) volution dune grandeur continue ; b) discrtisation de laxe G ; c)
e
e
discrtisation du temps, interprtation asynchrone ; d) discrtisation du temps,
e
e
e
interprtation synchrone.
e
A) Cas dune grandeur ; B) cas de plusieurs grandeurs

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Interface entre un dispositif informatique et un environnement physique

133

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

En revanche, d`s que lon consid`re plusieurs grandeurs, les paliers (ou,
e
e
de mani`re quivalente, les fronts) sont superposs. En associant une variable
e e
e
boolenne par exemple ` chacune des grandeurs, et en notant la
e
a
valeur 1 de cette grandeur, la valeur 0 de cette grandeur, on peut construire
une squence de monmes boolens qui re`te les superpositions de paliers.
e
o
e
e
On passe ` un nouvel lment de la squence d`s que lune au moins des deux
a
ee
e
e
grandeurs change de palier. Pour lexemple de la gure 6.1-Bc, on construit la
squence
e
., ., ., ., ., ., ., .
Il devient intressant de dcrire des machines squentielles capables de traie
e
e
ter des squences ainsi construites.
e
Exemple E6.1 : Interprtation asynchrone de deux grandeurs et
e
comptage
Considrons une machine squentielle qui peroit deux grandeurs et , et
e
e
c
dont la sortie boolenne est vraie si et seulement si les deux grandeurs ont
e
eu la mme valeur un nombre pair de fois dans le pass.
e
e
En utilisant la squence des niveaux superposs, on crira par exemple la
e
e
e
machine de Moore suivante :
(. .)

(. .)

. .

= vrai

Impair = faux

Pair

. .

Fig. 6.2 Machine de Moore lisant la squence des niveaux


e

Pour la squence ., ., ., ., ., ., ., ., la squence


e
e
de sortie est : , , , , , , , , .
On peut aussi considrer que dnote le front montant dune grandeur
e
e
boolenne D, et son front descendant. La squence construite pour lexemple
e
e
de la gure 6.1-Bc est alors : , , , , , ., . Notons que lorigine des temps
nest pas considre comme un front. Dautre part rien nempche denvisager
ee
e
le changement simultan des deux grandeurs, do` lexistence dlments de la
e
u
ee
squence de la forme ..
e
1.4.2

Interprtation synchrone
e

Linterprtation synchrone est un cas particulier de linterprtation asyne


e
chrone dcrite ci-dessus pour deux grandeurs, dans lequel on consid`re que
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

134

Temps, donnes temporelles et synchronisation


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

lune des grandeurs est lhorloge de lautre. La grandeur choisie comme horloge dnit un dcoupage de laxe du temps qui permet dchantillonner lautre
e
e
e
grandeur. Ce dcoupage nest pas ncessairement rgulier en temps physique ;
e
e
e
laxe du temps sous-jacent nest pas dcoup en intervalles de tailles gales,
e
e
e
quoique ce soit gnralement le cas avec des horloges rgules par des quartz.
e e
e e
En interprtation synchrone, on a donc toujours au moins deux grandeurs.
e
Notons dailleurs que synchrone signie littralement qui partage le mme
e
e
temps, et quil faut tre au moins deux pour partager quelque chose. Deux
e
grandeurs seront dites synchrones si elles sont chantillonnes sur la mme
e
e
e
horloge, asynchrones sinon.
A partir dune grandeur qui sert dhorloge et dune ou plusieurs autres
grandeurs, on fabrique une squence dentres de la machine squentielle en
e
e
e
crant un lment de squence par front dhorloge : cest un monme qui dcrit
e
ee
e
o
e
le niveau des autres grandeurs ` linstant de ce front.
a
Nous verrons quune machine squentielle peut tre ralise par un circuit
e
e
e e
squentiel synchrone (Cf. Chapitres 10 et 11). Une horloge dtermine alors
e
e
les instants auxquels la machine change dtat. Un processeur peut tre vu
e
e
comme une machine squentielle synchrone cadence elle-aussi par son hore
e
loge (Cf. Chapitre 14). Il existe aussi des ralisations, dont des processeurs,
e
asynchrones. Nous ntudions pas cette technique dans ce livre.
e

Exemple E6.2 : Machine ` caf (suite de lexemple E5.2)


a
e
Nous
envisagions
une
squence
e
dentres
e
commenant
c
par
s1 .s2 .s5 , s1 .s2 .s5 , s1 .s2 .s5 , ...
Si lon utilise linterprtation asynchrone dnie ci-dessus, les entres s1 ,
e
e
e
s2 , s5 et fs de la machine ` caf sont superposes, et on en dduit une
a
e
e
e
squence dentres en crant un nouvel lment uniquement quand lune au
e
e
e
ee
moins change. La squence ci-dessus nappara donc jamais.
e
t
Si lon utilise linterprtation synchrone, en revanche, on introduit une
e
cinqui`me entre implicite : lhorloge. On construit un lment de la squence
e
e
ee
e
pour chaque priode dhorloge. La squence ci-dessus peut donc appara
e
e
tre.

2.

Signaux logiques et reprsentation par des


e
chronogrammes

Les grandeurs physiques continues dont nous avons envisag la


e
discrtisation sont des signaux physiques. Nous appellerons signal logique
e
lchantillonnage dun tel signal physique par les fronts dun autre signal qui
e
sert dhorloge.
On tudie linuence des probl`mes de synchronisation sur la ralisation des
e
e
e
automates synchrones dans le chapitre 10.

Lvolution au cours du temps des horloges et des signaux logiques peut


e
tre reprsente par des courbes en crneaux carrs, comme sur la gure 6.3.
e
e
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Probl`mes de synchronisation
e

135

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Temps

Fig. 6.3 Un exemple de reprsentation de signaux logiques par des chronogrammes :


e
H est un signal dhorloge, et a est un signal logique dhorloge H (noter que
lhorloge est un signal boolen. Ici le signal a est galement boolen).
e
e
e

S2

S1

S0

t1

t2

Fig. 6.4 Reprsentation de lvolution de grandeurs : la valeur S code sur 3 bits S0 ,


e
e
e
S1 et S2 est momentanment instable entre les instants t1 et t2
e

Ces courbes sont des chronogrammes.


Si lon sintresse au temps de changement de valeur discr`te dun sie
e
gnal par rapport au rythme dune horloge H, et aux ventuels probl`mes
e
e
dchantillonnage qui en dcoulent, on peut reprsenter lvolution temporelle
e
e
e
e
des grandeurs en jeu par une gure comme 6.4.
Pour reprsenter des valeurs indnies ou non signicatives, nous utilisons
e
e
aussi les reprsentations donnes dans la gure 6.5.
e
e

3.

Probl`mes de synchronisation
e

Nous avons envisag jusquici le cas dun dispositif informatique connect


e
e
a
` un environnement physique dont il doit chantillonner les grandeurs.
e
Si lon sintresse ` plusieurs dispositifs informatiques, on peut considrer
e
a
e
chacun comme lenvironnement de lautre : les sorties de lun peuvent tre les
e
entres de lautre. Pour tudier les probl`mes de synchronisation entre syst`mes
e
e
e
e
informatiques, on suppose que les deux syst`mes sont dcrits par des machines
e
e
squentielles, et que les entres de lun peuvent tre les sorties de lautre.
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

136

Temps, donnes temporelles et synchronisation


e

a)

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

b)

t0

Fig. 6.5 Reprsentations particuli`res de valeurs :


e
e
a) Signal boolen dont la valeur est indnie avant linstant t0
e
e
b) La valeur nest signicative que pendant les priodes 1 et 2 ; ce type de
e
schma est souvent utilis pour reprsenter la valeur prsente sur un bus :
e
e
e
e
lorsque aucun composant nest connect au bus sa valeur nest pas signicae
tive.

instants de lecture, cas 2

instants de lecture, cas 1

Fig. 6.6 Acc`s ` une valeur commune V


e a

Si les deux dispositifs A et B reoivent un mme signal qui peut servir


c
e
dhorloge commune H, ils peuvent chantillonner toutes les grandeurs sur
e
la mme horloge. Dans le cas contraire, les deux dispositifs A et B peuvent
e
nanmoins avoir des horloges locales, cest-`-dire utiliser chacun un signal pare
a
ticulier comme horloge pour chantillonner les autres signaux, mais chacun
e
doit tre considr comme lenvironnement asynchrone de lautre.
e
ee

3.1

Le probl`me gnral dacc`s ` un signal commun


e
e e
e a

On consid`re deux dispositifs informatiques appels rcepteur et metteur,


e
e e
e
qui doivent se mettre daccord sur une valeur V produite par lun et consomme
e
par lautre. Lmetteur a un comportement cyclique : il maintient une valeur
e
sur le l (ou les ls) V pendant un certain temps, puis fabrique une nouvelle
valeur (pendant ce temps ltat du l est indtermin) et la maintient sur le
e
e
e
l, etc.
Le rcepteur a galement un comportement cyclique : il acc`de ` ce l en
e
e
e a
lecture ; consomme la valeur (ce traitement prend un certain temps) ; acc`de
e
de nouveau ` V , etc.
a
Le probl`me pos comporte deux contraintes :
e
e
Le rcepteur ne doit pas consommer deux fois la mme valeur
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Probl`mes de synchronisation
e

137

Le rcepteur ne doit pas ignorer une valeur


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Si les deux dispositifs voluent de mani`re compl`tement indpendante lun


e
e
e
e
de lautre, les instants de lecture sont quelconques : les deux probl`mes cie
dessus peuvent survenir. Voir gure 6.6 : dans le cas 1, les instants de lecture
sont trop proches, le rcepteur lit plus vite que lmetteur ne produit ; dans le
e
e
cas 2, les instants de lecture sont trop loigns, le rcepteur ne lit pas assez
e
e
e
vite.
Il faut donc se dbrouiller pour synchroniser lmetteur et le rcepteur
e
e
e
pour lacc`s ` la valeur commune V . Cette synchronisation est assure par un
e a
e
protocole de communication.

3.2

3.2.1

Protocole poigne de mains et mise en oeuvre


e
Le protocole

Pour viter les deux cas de fonctionnement incorrect dcrits par la gure 6.6,
e
e
on doit assurer que :
1. le rcepteur ne peut pas lire deux fois la donne V sans avoir t prvenu
e
e
ee e
par lmetteur dun changement entre temps ;
e
2. lmetteur ne peut pas modier la valeur de la donne (cest-`-dire
e
e
a
mettre deux valeurs direntes) ` moins davoir t prvenu par
e
e
a
ee
e
le rcepteur entre temps que la premi`re valeur a eectivement t
e
e
ee
consomme.
e

e
e
On introduit ` cet eet deux signaux de synchronisation E prt et R prt.
a
e
e
e
e
e
E prt est produit par lmetteur et consomm par le rcepteur. R prt est
produit par le rcepteur et consomm par lmetteur. Lide est dassurer la
e
e
e
e
synchronisation par un dialogue entre lmetteur (E) et le rcepteur (R), de la
e
e
forme suivante : E est responsable de la production des valeurs V, et prvient
e
R de lapparition dune nouvelle valeur cest le signal E prt ; R attend
e
dtre ainsi prvenu pour consommer la valeur prsente sur le l ; il envoie
e
e
e
e
c
ensuite ` E un acquittement de lecture cest le signal R prt ; lorsquil reoit
a
laquittement de lecture en provenance de R, E peut procder ` la production
e
a
dune nouvelle valeur.
Remarque : Cette ide dun change dinformations supplmentaires du
e
e
e
type jai crit et jai bien lu, pour rguler les acc`s en lecture/criture ` une
e
e
e
e
a
information partage est une ide simple et tr`s gnrale. La complexit des
e
e
e e e
e
protocoles de communication dans les rseaux informatiques tient ` un autre
e
a
probl`me : les lignes de transmission entre lmetteur et le rcepteur ne peuvent
e
e
e
pas tre considres comme ables, ce qui oblige ` prvoir la rmission des
e
ee
a e
ee
e
messages et de leurs acquittements. En eet, lorsquun signal comme X prt
est mis par lun, on na pas de garantie de rception par lautre.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

138

Mise en oeuvre, cas gnral


e e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

3.2.2

Temps, donnes temporelles et synchronisation


e

Lmetteur a une horloge H e et le rcepteur une horloge H r. Les deux


e
e
e
e
signaux E prt et R prt donnent deux signaux logiques chacun, selon quils
sont chantillonns par lhorloge de lmetteur ou par lhorloge du rcepteur.
e
e
e
e
On consid`re les 4 signaux logiques suivants p ep, d ep, p rp, d rp (Cf. Fie
gure 6.8) : mission du signal E prt (chantillonn sur H e), dtection du
e
e e
e
e
e e
e
e
e e
e
signal E prt (chantillonn sur H r), mission du signal R prt (chantillonn
sur H r), dtection du signal R prt (chantillonn sur H e).
e
e e
e
e
Le prxe p indique la production du signal, le prxe d indique sa
e
dtection.
e
e
e
a
e
E prt est gal ` son chantillonnage sur lhorloge H e, puisquil est produit
sur cette horloge ; il est en revanche dirent de son chantillonnage sur H r.
e
e
Fonctionnement temporel de lmetteur et du rcepteur La e
e
gure 6.7 donne les machines de Moore dcrivant le comportement temporel
e
de lmetteur et du rcepteur, en terme des signaux logiques p ep, d ep, d rp,
e
e
p rp. Chacune des machines change dtat sur les fronts de son horloge, dapr`s
e
e
la valeur des signaux de communication ` cet instant-l`.
a
a
En observant le comportement des deux machines squentielles, on peut se
e
convaincre des proprits suivantes :
ee
Le rcepteur ne peut pas passer deux fois dans ltat de lecture de V sans
e
e
que lmetteur ait quitt son tat dcriture.
e
e
e
e
Symtriquement, lmetteur ne peut pas passer deux fois dans ltat
e
e
e
dcriture sans que le rcepteur soit pass dans son tat de lecture.
e
e
e
e
Reprsentation par des chronogrammes Les chonogrammes de la e
gure 6.8 illustrent les contraintes dordre sur les fronts de la donne V et des
e
e
e
signaux logiques p ep, d ep, d rp, p rp, imposes par le protocole poigne de
mains ainsi que ltat courant de lmetteur et du rcepteur.
e
e
e
3.2.3

Mise en oeuvre : cas particuliers

Synchronisation par horloge commune ou horloges inverses :


Lorsque les deux dispositifs qui communiquent chantillonnent les grandeurs
e
sur la mme horloge, le schma de la gure 6.8 est simpli : il ny a pas de
e
e
e
dcalage temporel entre la production dun signal et sa dtection (si lon nglige
e
e
e
le dlai de transmission du signal dhorloge dans les connexions physiques par
e
rapport au temps de traverse dun circuit combinatoire).
e
u
Le cas des horloges inverses, He = Hr est un cas simple o` lopposition de
phase des horloges des deux syst`mes rsoud les probl`mes dchantillonnage
e
e
e
e
et de stabilit des grandeurs changes.
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

139

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

3. Probl`mes de synchronisation
e

Emetteur (changements
dtat sur fronts montants de H e)
e

Rcepteur (changements
e
dtat sur fronts montants de H r)
e

d rp

E1

d ep

R1

p ep

t3

t1

d rp

d rp
t4

d ep

d ep

t2

E2

d rp

p rp

p ep

R2

p rp

d ep

Fig. 6.7 Machines de Moore dcrivant le fonctionnement temporel de lmetteur et du


e
e
rcepteur, dans le cas dun protocole de poigne de mains. Etat E1 : attente
e
e
dmission ; Etat E2 : mission de V et attente dacquittement de la part du
e
e
rcepteur. Etat R1 : attente de valeur ; Etat R2 : mission de lacquittement
e
e
et attente de prise en compte de cet acquittement par lmetteur. Transition
e
t1 : consommation de la valeur V ; Transition t2 : reconnaissance du fait que
lacquittement de consommation de V a t pris en compte par lmetteur ;
ee
e
Transition t3 : prise en compte de lacquittement en provenance du rcepteur ;
e
Transition t4 : reconnaissance du fait que le rcepteur traite linformation
e
envoye par lmetteur.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

140

Temps, donnes temporelles et synchronisation


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

He

p ep
d ep
p rp
d rp

Hr

Emetteur

Ecr.

Recepteur

Att.

Attente Ecr

Consomm.

Temps

Ecriture

Attente

Consomm.

Fig. 6.8 Comportement temporel des signaux dans un protocole poigne de mains.
e
On a reprsent : la donne V dont les valeurs sont mises par lmetteur,
e
e
e
e
e
e
sur son horloge H e ; lhorloge du rcepteur H r ; les signaux logiques p ep,
d ep (resp. d rp, p rp) qui correspondent ` lchantillonnage du signal E prt
a e
e
(resp. R prt) sur les horloges de lmetteur et du rcepteur. Les courbes
e
e
e
pointilles grasses termines par une `che illustrent des relations de cause `
e
e
e
a
eet, dductibles du fonctionnement temporel de lmetteur et du rcepteur.
e
e
e
Les lignes obliques en trait plein, sans `che, illustrent les dcalages temporels
e
e
entre la production dun signal, cest-`-dire son chantillonnage sur lhorloge
a
e
du producteur, et la dtection de ce signal, cest-`-dire son chantillonnage
e
a
e
sur lhorloge du consommateur.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Un exemple : la machine ` caf


a
e

141

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Synchronisation avec dlai constant : Lorsque le temps de raction


e
e
(consommation) du rcepteur est toujours le mme, et connu lors de la
e
e
construction du syst`me qui fait communiquer les deux dispositifs informae
tiques, la mise en oeuvre du protocole de poigne de mains est tr`s simplie :
e
e
e
le signal dacquittement en provenance du rcepteur nest plus un vrai signal
e
physique : il est implicite. Lmetteur peut en eet considrer que lacquittee
e
ment jai bien lu survient n coups dhorloges apr`s la production du signal jai
e
crit ; il peut mme arriver que n = 1.
e
e
Cest un mode de synchronisation qui peut parfois tre utilis entre le processeur
e
e
(lmetteur) et une mmoire (le rcepteur) (Cf. Chapitres 14 et 15).
e
e
e

Emetteur rapide : Si lmetteur est suppos beaucoup plus rapide que le


e
e
rcepteur, on sait que le rcepteur ne peut pas consommer deux fois la mme
e
e
e
valeur. Il sut dassurer que le rcepteur nignore pas de valeur. Pour cela,
e
on ajoute un signal de synchronisation qui permet au rcepteur de signaler
e
quil a consomm une valeur. Lmetteur attend cet acquittement avant de
e
e
produire une nouvelle valeur. En fait le rcepteur est esclave de lmetteur : il
e
e
na pas dhorloge propre, et utilise lun des signaux mis par lmetteur comme
e
e
horloge.
Rcepteur rapide : Inversement, si le rcepteur est suppos beaucoup plus
e
e
e
rapide que lmetteur, on sait quaucune valeur mise ne peut lui chapper. Il
e
e
e
sut dassurer quil ne lit pas deux fois la mme valeur. Pour cela on ajoute un
e
signal de synchronisation qui permet ` lmetteur de signaler quil a produit
a e
une nouvelle valeur. Le rcepteur attend cet avertissement pour lire.
e

4.

Un exemple : la machine ` caf


a
e

Exemple E6.3 : Machine ` caf (suite de lexemple E5.2, p 114)


a
e
Nous reprenons lexemple de la machine ` caf. Il sagit dtudier maintenant
a
e
e
la dnition des squences dentres de la machine squentielle qui reprsente
e
e
e
e
e
le contrleur, dapr`s les grandeurs physiques qui voluent dans lenvironneo
e
e
ment de ce contrleur.
o
On consid`re que les divers dispositifs lectromcaniques de la machine `
e
e
e
a
caf mettent des signaux physiques que lon chantillonne sur lhorloge du
e e
e
contrleur informatique. Cette horloge est suppose beaucoup plus rapide que
o
e
le temps de raction des capteurs.
e
La gure 6.9 donne : lhorloge H du contrleur ; le signal physique s1 issu
o
du capteur qui dtecte linsertion dune pi`ce de 1F ; le signal logique s1h
e
e
obtenu par chantillonnage de s1 sur lhorloge du contrleur ; le signal logique
e
o

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

142

Temps, donnes temporelles et synchronisation


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

s1

s1h

s1hf

sortie

Fig. 6.9 Signaux dentre et de sortie de la machine ` caf


e
a
e

s1hf obtenu par dtection des fronts montants de s1h ; une sortie sortie de la
e
machine squentielle.
e
Il est ncessaire de dtecter les fronts de s1h an de fournir en entre du
e
e
e
contrleur un signal logique qui indique linsertion dune pi`ce pendant au
o
e
plus une priode dhorloge. En eet la machine squentielle qui reprsente le
e
e
e
contrleur change dtat ` chaque priode dhorloge, et risquerait sinon dutio
e
a
e
liser plusieurs fois le mme signal pour compter une pi`ce de 1F. Nous verrons
e
e
au chapitre 9, paragraphe 1.2.4, un dispositif matriel capable de raliser cette
e
e
dtection de fronts.
e
Si lentre s1 fait passer dans un tat o` la sortie sortie est active, le signal
e
e
u
logique correspondant ` cette sortie est vrai d`s la priode dhorloge qui suit
a
e
e
le front montant de s1h et le reste pendant toutes les priodes dhorloge o` la
e
u
machine squentielle est dans le mme tat.
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s
Deuxi`me partie
e

Techniques de
lalgorithmique matrielle
e

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 7

De llectron aux dispositifs


e
logiques
Lobjet de ce chapitre est de montrer quels phnom`nes physiques
e
e
lmentaires sont mis en oeuvre dans les ralisations matrielles de ceree
e
e
taines fonctions dont, principalement, les fonctions boolennes. Ces ralisations
e
e
matrielles reoivent le nom de dispositifs logiques. Nous verrons plus loin come
c
ment combiner de telles fonctions pour raliser les lments dun ordinateur.
e
ee
Cela se fera seulement ` travers un moyen de ralisation des dispositifs : la
a
e
technologie CMOS (Complementary Metal Oxyde Semiconductor). Nous ne
donnons que les principes gnraux. Il nest pas question ici dinclure un cours
e e
complet de physique ou dlectronique donnant les tenants et aboutissants de
e
chacun des phnom`nes tudis.
e
e
e
e
Nous envisageons les phnom`nes sous des points de vue dabstraction
e
e
croissante : lchelle atomique, o` lon parle datomes et dlectrons (pae
u
e
ragraphe 1.) ; lchelle lectrique, o` lon parle de rsistances, de condene
e
u
e
sateurs et de transistors (paragraphe 2.) ; lchelle logique, o` lon parle
e
u
de fonctions boolennes (paragraphe 3.). Nous nous loignons ainsi proe
e
gressivement des phnom`nes physiques pour en avoir une vision en
e
e
terme dinformation. Cela permet de dcrire lensemble des circuits loe
giques utiliss dans les ordinateurs (paragraphe 4.). Nous donnerons
e
aussi un bref aperu de la fabrication des circuits, notamment en raison
c
de linuence quelle a sur les mthodes de conception (paragraphe 5.).
e

1.

Phnom`nes ` lchelle atomique


e
e
a e

1.1

Atomes, lectrons et cristaux


e

1.1.1

Atomes, lectrons
e

La mati`re est constitue datomes. Chaque atome est constitu dun


e
e
e
noyau et dun cort`ge dlectrons appel nuage lectronique. Les lectrons
e
e
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

146

De llectron aux dispositifs logiques


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

portent chacun une charge lectrique lmentaire ngative et le noyau autant


e
ee
e
de charges positives quil y a dlectrons. On rpartit les lectrons selon
e
e
e
leur nergie en niveaux dnergie. La classication priodique des lments
e
e
e
ee
de Mendele donne pour chaque lment : le nombre dlectrons dans le
ev
ee
e
cort`ge ; le nombre de niveaux dnergie contenant des lectrons ; le nombre
e
e
e
dlectrons appartenant au niveau dnergie le plus lev (la couche externe).
e
e
e e
Extrayons une partie de cette table :
B bore

Ga gallium

C carbone
Si silicium
Ge germanium

P phosphore
As arsenic

Le carbone, le silicium et le germanium ont 4 lectrons au niveau dnergie


e
e
le plus lev, le bore et le gallium en ont 3, le phosphore et larsenic 5.
e e
1.1.2

Cristaux

Les atomes dun corps sont lis entre eux plus ou moins fortement et
e
peuvent se disposer les uns par rapport aux autres selon des structures
rguli`res : les cristaux. Le diamant et le graphite sont 2 organisations phye
e
siques direntes du mme lment chimique carbone. De mme il existe des
e
e
ee
e
varits de silicium monocristallin et polycristallin qui sont obtenues par des
ee
procds de fabrication dirents.
e e
e

1.2

Courant et conducteur

Lorganisation des atomes en rseaux cristallins entra un largissement


e
ne
e
des niveaux dnergie (qui sont discrets) en bandes dnergies (qui sont contie
e
nues) et une dlocalisation des lectrons de plus haute nergie sur lensemble
e
e
e
du rseau. Le courant lectrique est un mouvement densemble de particules
e
e
charges, ici les lectrons. Qui dit mouvement dit nergie cintique, donc vae
e
e
e
riation de lnergie totale de llectron. Ceci nest possible que sil trouve une
e
e
place ` lnergie correspondante dans une bande dnergie autorise et non
a e
e
e
pleine.
1. Si la derni`re bande nest pas pleine, lnergie ncessaire ` cette excursion
e
e
e
a
est faible : on parle de conducteur comme le cuivre, lor, laluminium.
2. Si la derni`re bande est pleine et spare de la suivante par une zone
e
e e
dnergie non autorise (gap), lnergie ncessaire ` la production dun
e
e
e
e
a
courant lectrique est forte : on parle disolant. Le quartz est un cristal
e
isolant doxyde de silicium. Le verre est un oxyde de silicium, isolant,
mais non cristallin.
3. Il arrive que le gap soit faible, lnergie ncessaire est alors intermdiaire :
e
e
e
on parle de semi-conducteur . Le silicium et le germanium sont deux corps

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Phnom`nes ` lchelle atomique


e
e
a e

147

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

simples semi-conducteurs. Larseniure de gallium est un corps compos


e
semi-conducteur. Ces trois matriaux sont les constituants de base des
e
circuits lectroniques. Le silicium est le plus rpandu dans les composants
e
e
utiliss en informatique. Le dioxyde de silicium peut tre utilis comme
e
e
e
isolant, il peut tre obtenu facilement ` la surface du silicium.
e
a

En gagnant de lnergie (par exemple dorigine thermique), un lectron peut


e
e
atteindre la bande de conduction et sloigner, laissant derri`re lui un trou dans
e
e
la bande de valence et un atome charg positivement. Il y a donc cration dune
e
e
paire (lectron mobile ngatif, trou xe positif). Rciproquement, un autre
e
e
e
lectron perdant de lnergie peut venir combler ce trou et rtablir lquilibre
e
e
e
e
lectrique de latome. On parle alors de recombinaison lectron-trou. Du point
e
e
de vue lectrique, il est alors commode de considrer que cest un trou positif
e
e
qui sest dplac dans le cristal.
e
e
Dans un semiconducteur pur il y a autant de trous que dlectrons.
e

1.3

Diusion et dopage

Faites cette exprience (ou imaginez-la) : prenez un verre de th (pas


e
e
une tasse, un verre) pas trop fort mais pas trop clair, Darjeeling, Earl Grey,
Lapsang-Souchong, . . .au choix. A la surface du liquide dposez dlicatement
e
e
une goutte de lait. Ne remuez pas le verre et regardez par transparence. Il y
a diusion du lait dans le th. Au bout dun certain temps, en un point du
e
verre de th, la concentration de lait est fonction de la distance par rapport
e
au point de dpt de la goutte, de la concentration du th, de la grosseur de
e o
e
la goutte, de la temprature . . .
e
Imaginez le mme phnom`ne de diusion dun solide (du phosphore) dans
e
e
e
un autre solide (du silicium). Bien sr il faut chauer un peu, et on ne voit
u
rien par transparence.
Le rsultat de lexprience prcdente est intressant en termes lectriques.
e
e
e e
e
e
Les lments silicium et phosphore sont voisins par leur structure lectronique :
ee
e
il y a un lectron de plus dans le phosphore. Lintroduction de phosphore dans
e
le silicium modie la structure et lquilibre atomiques. Le silicium ainsi trait
e
e
est devenu meilleur conducteur. La dirence de rsistivit est importante. En
e
e
e
apportant un atome de phosphore pour 100 millions datomes de silicium, la
rsistivit est divise par un facteur de lordre de 30 000.
e
e
e
On dit que le silicium a t dop ; on parle de dopage ngatif puisquil
ee
e
e
y a exc`s dlectrons. Quand le silicium a reu, par diusion, des atomes de
e
e
c
phosphore, tout se passe comme si on avait du silicium avec des lectrons
e
libres, non lis aux atomes.
e
On peut aussi doper positivement le silicium en diusant du bore qui a un
lectron de moins et obtenir un exc`s de trous.
e
e
Lintrt du silicium est quil est facilement dopable et que le dioxyde de
ee
silicium est, lui, un obstacle au dopage. Par facilit de langage on dit souvent
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

148

De llectron aux dispositifs logiques


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

dop N (pour Ngatif, exc`s dlectrons) ou dop P (pour Positif, exc`s de


e
e
e
e
e
e
trous) en parlant du silicium.
Une tude plus dtaille de la physique des dispositifs semi-conducteurs se
e
e
e
trouve dans [CW96] ou [GDS98].

2.

Phnom`nes ` lchelle lectrique


e
e
a e
e

2.1

Rappels dlectricit lmentaire


e
eee

La rsistance R dun l lectrique homog`ne de section constante est propore


e
e
tionnelle ` la longueur L du l, ` la rsistivit du matriau et inversement
a
a
e
e
e
proportionnelle ` la section S du l.
a
Si un l est purement rsistif, la dirence de potentiel U aux bornes du l
e
e
est proportionnelle ` la rsistance R de ce l et ` lintensit I du courant
a
e
a
e
qui le traverse. Cest la loi dOhm.
Un sandwich Conducteur-Isolant-Conducteur ralise un condensateur. Sa
e
capacit C augmente avec la surface S des armatures conductrices et dimie
nue avec leur cartement. Elle varie selon les caractristiques lectriques du
e
e
e
matriau isolant.
e
La charge Q emmagasine dans un condensateur est proportionnelle ` la
e
a
capacit C du condensateur et ` la dirence de potentiel U aux bornes du
e
a
e
condensateur.
La variation dQ/dt de la charge aux bornes du condensateur est lintensit
e
du courant de charge (ou de dcharge) du condensateur.
e
Si deux conducteurs sont branchs en srie entre deux points, le courant
e
e
doit passer dans les deux conducteurs. Les rsistances sajoutent.
e
Dans le mcanisme du pont diviseur si deux rsistances de valeurs R1
e
e
et R2 sont connectes en srie entre deux points relis ` des potentiels
e
e
e a
Va et 0, le point situ entre les deux rsistances est ` un potentiel V =
e
e
a
V a R1/(R1 + R2).
Si deux conducteurs sont branchs en parall`le entre deux points, le
e
e
courant passe en partie par un conducteur, en partie par lautre, selon
leurs rsistances. Les conductances (inverse de rsistances) sajoutent.
e
e

Si un condensateur charg, de capacit C, est mis en situation de se


e
e
dcharger ` travers un conducteur de rsistance R, il se dcharge. La vae
a
e
e
t/RC
riation de tension est dcrite par une exponentielle en e
e
. Le temps de
dcharge est dautant plus grand que R et C sont grands. Le phnom`ne de
e
e
e
charge est symtrique.
e
Une diode, constitue dune zone dope N et dune zone dope P, ne laisse
e
e
e
passer le courant que dans un sens.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Phnom`nes ` lchelle lectrique


e
e
a e
e

149

Grille

Vue de dessus
Coupe x y
Transistor seul

substrat P

substrat P

A
N

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Grille

Coupe x y
Vue de dessus
Transistor reli
e

Fig. 7.1 Coupe et vue de dessus dun transistor seul ou reli


e

2.2

2.2.1

Le transistor ` eet de champ M.O.S.


a

Description physique du principe du transistor ` canal N


a

Observons la gure 7.1. Dans un substrat de silicium (varit monoee


cristalline, faiblement dope P) on dlimite deux zones fortement dopes
e
e
e
Ngativement. Ces deux zones sont espaces dune distance L. La zone faie
e
blement dope P est nomme substrat. Sur la zone rectangulaire entre les deux
e
e
zones dopes, on fait cro
e
tre du dioxyde de silicium : le verre (isolant). Audessus du verre on dpose du silicium (polycristallin) et on le dope aussi.
e
Remarque : La ralit de fabrication est dirente : en fait, le dopage du
e e
e
silicium monocristallin du substrat et celui du silicium polycristallin au-dessus
de loxyde pourraient tre simultans : la couche de dioxyde de silicium bloque
e
e
la diusion.

On obtient ainsi deux sandwiches. Lun vertical :


Conducteur Isolant Semi-conducteur
et lautre horizontal :
Semi-conducteur dop Semi-conducteur Semi-conducteur dop.
e
e
Le premier est ` lorigine du nom Mtal Oxyde Semi-conducteur. Sur la
a
e
gure 7.1, les zones dopes du substrat sont notes A et B. On appelle grille la
e
e
zone de silicium polycristallin dop. Lisolant est sous la grille. Les deux zones
e
A et B sont ici supposes rectangulaires pour faciliter le dessin. La distance L
e
entre les deux zones est caractristique dune technologie de ralisation. Si le
e
e
journal annonce la sortie dun nouveau circuit en technologie 0,17 micron, cela
donne la distance L pour les transistors.
2.2.2

Comportement lectrique
e

Supposons que le substrat est reli ` la masse et que les tensions sont telles
ea
que Vsubstrat VA < VB . Nous appellerons B le drain et A la source.
Si la tension de grille est nulle, entre le drain et la source, se trouvent deux
jonctions NP orientes en sens inverse lune de lautre. Or une jonction a pour
e
proprit de ne conduire le courant que dans le sens N vers P. La jonction
ee

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

De llectron aux dispositifs logiques


e

drain
B

A=0V
Grille

A=0V
Grille

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Grille

P
Tension de grille = 0 V

..
.. . .: :N

P
Tension de grille = 0.5 V

source
A=0V

150

::::::::::::::::::::N::::::::
:
: : : : : : ::: : : :

P
Tension de grille = 5 V

Fig. 7.2 Formation du canal dans un transistor

drain-substrat bloque donc le passage du courant entre le drain et la source :


le transistor est bloqu.
e
Lorsquune tension positive est applique sur la grille, le champ lectrique
e
e
entre la grille et le substrat attire sous la grille et concentre en surface les
lectrons libres du substrat (et repousse les trous en profondeur). En sure
face, tout se passe alors comme sil existait sous la grille un canal drain-source
de faible profondeur, articiellement dop ngativement par laccumulation
e e
dlectrons due au champ lectrique grille-substrat. Ce canal est conducteur et
e
e
un courant peut y circuler. Lintensit du courant est soumise ` la loi dOhm :
e
a
la rsistance du canal entre source (A) et drain (B) est fonction de la longueur
e
et de la section du canal mais aussi de la rsistivit du semi-conducteur obtenu.
e
e
Cette rsistivit diminue ` mesure que la dirence de potentiel entre
e
e
a
e
la grille et le substrat augmente. Le transistor fonctionne donc comme une
rsistance commande par la dirence de potentiel grille-substrat.
e
e
e
Cet eet de conduction d ` un champ lectrique a donn le nom de tranua
e
e
sistor ` eet de champ.
a
Une modlisation plus ne du transistor met en vidence une limite du
e
e
transistor : la tension du drain et la source doit tre infrieure ` celle de la
e
e
a
grille faute de quoi le canal ne peut se former. Nous appellerons V gsth la
dirence de potentiel minimale entre grille et source ncessaire ` la formation
e
e
a
du canal.
La gure 7.2, dans laquelle les petits points reprsentent des lectrons,
e
e
sugg`re la formation du canal.
e
Par rapport au substrat la grille du transistor se comporte comme une
capacit. Quand la capacit est charge, elle est au potentiel dalimentation,
e
e
e
quand elle ne lest pas, la grille est au potentiel de la masse.
2.2.3

Le transistor ` canal P
a

Il est obtenu de faon assez symtrique du transistor ` canal N. Le dopage


c
e
a
est fait par du bore qui a 3 lectrons sur la couche externe. Le dopage est
e
P ositif : des trous sont apparus. Le substrat faiblement dop N est reli au
e
e
potentiel positif dalimentation, typiquement 5 volts. Le canal se forme si le

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Phnom`nes ` lchelle logique


e
e
a e

151

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

potentiel sur la grille est susamment plus petit que celui du substrat.
On remarque la dicult de cohabitation sur un mme substrat de silicium
e
e
dun transistor N avec un substrat P ` la masse et dun transistor P avec un
a
substrat N reli ` lalimentation. Cest pourtant ce que lon cherche ` faire en
ea
a
technologie CMOS, o` les deux types de transistors cohabitent. La technologie
u
de ralisation bri`vement dcrite au paragraphe 5.2 en tient compte.
e
e
e
2.2.4

Remarque nale ` propos dlectricit


a
e
e

Le fonctionnement du transistor, N ou P, tel quil vient dtre dcrit est tr`s


e
e
e
continu : une petite variation dun des param`tres induit une petite variation
e
de comportement. Le transistor ne passe pas brutalement de conducteur `
a
non conducteur. Tout changement de lpaisseur doxyde, de la longueur du
e
canal du transistor, de la dirence de potentiel entre la grille et le substrat ou
e
entre les points A et B donne une variation de lintensit du courant de faon
e
c
continue.
La mise en quation des phnom`nes physiques mis en jeu dans le transistor
e
e
e
MOS est traite dans les livres dlectronique (Par exemple [CDLS86]) et na
e
e
pas sa place ici.

3.

Phnom`nes ` lchelle logique


e
e
a e

Dans lalg`bre boolenne, les deux lments signicatifs sont cods 0 et


e
e
ee
e
1. Avec deux symboles, interprts comme des chires 0 et 1, la numration
ee
e
en base 2 permet de reprsenter les nombres. Les dispositifs ` transistors ont
e
a
un comportement continu : toute variation innitsimale des entres provoque
e
e
une variation faible des sorties (courant, tension...). La question est de savoir
comment reprsenter des informations numriques avec des dispositifs ainsi
e
e
continus.
Il existe des calculateurs dits analogiques. Le principe est simple : le nombre
470 est reprsent par la tension 4,7 volts, le nombre 32 est reprsent par 0,32
e
e
e
e
volts. Un circuit additionneur est un dispositif ` deux entres, capable de
a
e
dlivrer sur la sortie la somme, ici 5,02 volts, des tensions. Ces machines sont
e
diciles ` calibrer si lon souhaite une prcision dans les calculs de plus de 4
a
e
chires dcimaux signicatifs.
e
Par opposition aux calculateurs analogiques, les calculateurs les plus
frquents sont numriques, ou digitaux . Les nombres sont reprsents par des
e
e
e
e
vecteurs de boolens, ou vecteurs de bits.
e

3.1

Labstraction logique

Les valeurs 0 et 1 dun bit sont reprsentes par des tensions, respectivement
e
e
nulle (0 volt ou masse) et la tension dalimentation, standardise ` 5 volts (de
e a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

152

De llectron aux dispositifs logiques


e

Tension de commande
Alimentation
Masse
Masse
Alimentation

Comportement
Passant
Bloqu
e
Passant
Bloqu
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Type de transistor
Canal N
Canal P

Fig. 7.3 Comportement des transistors

plus en plus souvent 3,3 volts, voire moins, notamment dans les machines
portables).
Les transistors sont fabriqus de telle faon quil existe une tension de
e
c
seuil (threshold en anglais) Vth au-dessus de laquelle lentre dun circuit ine
terprtera le signal comme un 1, et comme un 0 au-dessous. La valeur nominale
e
de Vth est choisie de mani`re ` optimiser la tolrance aux bruits et parasites
e a
e
lectriques pouvant aecter le signal. Compte tenu des tolrances de fabricae
e
tion sur la valeur de Vth , tous les circuits interprteront une tension infrieure
e
e
a 0,75 volts comme un 0 et suprieure ` 4,5 volts comme un 1.
e
a
On parle de niveaux 0 logique et 1 logique, ou de niveaux logiques bas et
haut. En logique ngative le niveau haut correspond au 0 et le niveau bas au
e
1. Nous ne prendrons pas cette convention.
Etudions un comportement simpli du transistor. Cette simplication
e
consiste ` faire comme si le canal du transistor tait soit totalement bloqu soit
a
e
e
passant, auquel cas il a une rsitance R. Nous ne regardons les transistors que
e
relis soit a la masse, (le potentiel 0 volt), soit ` un potentiel positif, la tension
e
`
a
dalimentation. En ralit les tensions lectriques varient de faon continue, et
e e
e
c
parfois il y a des parasites.
Pour un transistor ` canal N avec le substrat ` la masse :
a
a
Si la grille est ` lalimentation, le transistor est passant. Sil y a une
a
dirence de potentiel entre A et B, du courant circule entre A et B.
e
Si la grille est ` la masse, le transistor est bloqu. Mme sil y a une dirence
a
e e
e
de potentiel entre A et B, aucun courant ne circule entre A et B.
Pour un transistor ` canal P, avec le substrat ` lalimentation, le fonctiona
a
nement est invers :
e
Si la grille est ` ` la masse, le transistor est passant. Sil y a une dirence
aa
e
de potentiel entre A et B, du courant circule entre A et B.
Si la grille est ` lalimentation, le transistor est bloqu. Mme sil y a une
a
e
e
dirence de potentiel entre A et B, aucun courant ne circule entre A et B.
e
Ces direntes fonctions sont regroupes dans le tableau de la gure 7.3. Ce
e
e
comportement simpli fait abstraction de nombreux phnom`nes. On parle
e
e
e
dabstraction logique.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Phnom`nes ` lchelle logique


e
e
a e

Ralisation de la fonction logique


e
la plus simple : linverseur

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

3.2

153

Les fonctions logiques peuvent tre modlises simplement par des fonce
e e
tions boolennes. La ralisation matrielle de lopration boolenne de
e
e
e
e
e
complmentation sappelle un inverseur . Linverseur peut tre un montage
e
e
lectrique ayant une entre E et une sortie S (Lalg`bre de Boole ne tient
e
e
e
videmment pas compte de lexistence de lalimentation et de la masse dans
e
les montages lectriques).
e
On fait abstraction des valeurs exactes des tensions lectriques en disant :
e
Si E = 0, alors S = 1 et si E = 1 , alors S = 0.
En ralit, comme on va le voir, si 0 <= E <= 0,75 volts, alors S = 5 volts
e e
et si 4,5 <= E <= 5 volts, alors S = 0 volt.
Cela nous donne les points extrmes de fonctionnement dun inverseur.
e
Mais quel peut tre le comportement souhaitable de linverseur entre ces deux
e
extrmes ? Pour rpondre ` cette question imaginons deux montages : lun
e
e
a
constitu de 4 inverseurs en srie : la sortie de lun est lentre du suivant. Dans
e
e
e
lautre les deux inverseurs sont rtrocoupls : la sortie de lun est lentre de
e
e
e
lautre et rciproquement. Les schmas simplis correspondants sont donns
e
e
e
e
gure 7.4. Linverseur y est reprsent par une simple bo avec une entre e
e
e
te
e
et une sortie s.
Dans le montage de 4 inverseurs en srie, envoyons un signal dentre qui
e
e
en fonction du temps passe de 0 ` 5 volts (la reprsentation en escalier ntant
a
e
e
pas ` prendre au pied de la lettre).
a
Examinons les sorties apr`s 2, ou 4, inversions pour trois types dinverseurs.
e
Les trois sont candidats au titre du meilleur inverseur.
Pour les trois types, nomms Accroissement, Maintien, Diminution, nous
e
donnons une courbe de transfert donnant la tension de sortie de linverseur
en fonction de la tension dentre (Figure 7.5). Pour les trois types les vae
leurs extrmes des tensions sont respectes, et il existe une tension mdiane
e
e
e
VM pour laquelle la tension de sortie est gale ` la tension dentre. Mais le
e
a
e
comportement entre ces points est dirent.
e
Pour les trois types nous donnons lallure de la rponse du montage
e
constitu de 2 ou de 4 inverseurs ` lentre en escalier.
e
a
e
Linverseur de type Accroissement accentue les dirences entre les niveaux
e
faibles et forts. Cest un amplicateur. Si il y a un faible parasite en entre, le
e
parasite nest pas apparent en sortie.
A linverse linverseur de type Diminution diminue les dirences entre
e
niveaux faibles et forts. D`s que le signal dentre prsente un parasite, le
e
e
e
niveau de sortie risque dtre autour de VM , ce qui nest pas souhaitable.
e
De mme, pour le montage constitu de deux inverseurs rtrocoupls, on
e
e
e
e
comprend aisment que linverseur de type Accroissement donne un syst`me
e
e
stable. Soit une sortie vaut 1 et lautre 0, soit le contraire, mais une stabilisation
a
` un tat intermdiaire est tr`s improbable (quoique pas impossible). Avec un
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

De llectron aux dispositifs logiques


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

154

Accroissement
Maintien

5V

0V

entre
e

Diminution

s2 apr`s 4 inversions
e

s1 apr`s 2 inversions
e

s1
4 inverseurs en srie
e

s2

2 inverseurs rtro-coupls
e
e

Fig. 7.4 Comportement des candidats inverseurs apr`s 2 ou 4 inversions


e

Vs

Vs

Vs

1
Accroissement

Ve

1
Maintien

Ve

1
Diminution

Fig. 7.5 Courbes de transfert de trois candidats inverseurs

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ve

3. Phnom`nes ` lchelle logique


e
e
a e

155

Transistors

entre
e

gP

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

gN

Inverseur CMOS

dN

sN

` canal N
a

dP

gN

sP

` canal P
a

gP

alim.

masse
sN

dN

dP

sP
sortie

Fig. 7.6 Schma conventionnel des transistors MOS et de linverseur CMOS. d,g,s sont
e
respectivement les Drains, Grilles et Sources. N et P dsignant les transistors
e
N et P.

Tension
dentre
e
Ve
0 V <= Ve <= 0.75 V
4.5 V <= Ve <= 5 V

Rsistance du
e
transistor N
RN
innie
R2

Rsistance du
e
transistor P
RP
R1
innie

Tension de
sortie
Vs
5V
0V

Fig. 7.7 Rponse de linverseur CMOS


e

inverseur du type Diminution, on pourrait facilement obtenir un montage de


deux inverseurs rtrocoupls se stabilisant avec des sorties ` VM .
e
e
a
Cest videmment linverseur de type Accroissement qui est le plus
e
intressant pour la ralisation de fonctions boolennes.
e
e
e
Llectronique digitale tudie de faon prcise comment obtenir un mone
e
c
e
tage ayant la bonne courbe de transfert. Elle permet aussi dtudier une
e
ralisation avec un point de basculement Vm proche de la moiti de la tene
e
sion de rfrence, ce qui donne une bonne tolrance aux parasites ([CDLS86]).
ee
e
Nous donnons ici deux solutions : la principale est la technologie ` base
a
de transistors MOS Complmentaires (Complementary MOS). La gure 7.6
e
donne la structure interne de linverseur. En technologie CMOS, linverseur
est obtenu en connectant un transistor N et un transistor P en srie entre la
e
masse et lalimentation. Lentre est la tension de grille commune aux deux
e
transistors et la sortie est le point intermdiaire entre les deux. Les substrats
e
respectifs des deux transistors N et P sont ` la masse et ` lalimentation.
a
a
Si lon consid`re les direntes valeurs possibles pour la tension dentre
e
e
e
V e, on obtient le tableau de la gure 7.7, o` RN dsigne la rsistance du
u
e
e
transistor a canal N, RP dsigne la rsistance du transistor ` canal P, V s
`
e
e
a
dsigne la tension de sortie, gale, dans tous les cas, ` Vref RN /(RP + RN )
e
e
a
ou Vref 1/(1 + RP /RN ), o` Vref dsigne la tension dalimentation.
u
e
Une autre solution est de remplacer le transistor P par une rsistance, mais
e
la courbe de transfert est moins intressante. Le principal avantage est une
e
plus grande simplicit (Inverseur NMOS). On utilisera dans le livre certaines
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

156

De llectron aux dispositifs logiques


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

portes bases sur ce principe.


e
Il existe dautres organisations dinverseurs. Beaucoup des circuits de petite
chelle dintgration (quelques centaines de transistors par puce) sont dans
e
e
une technique nomme Transistor Transistor Logic TTL. Mais la plupart des
e
circuits de tr`s grande chelle dintgration sont aujourdhui en CMOS.
e
e
e

3.3

Fonctionnements statique et dynamique


de linverseur

Lanalyse du fonctionnement statique de linverseur a t faite


ee
prcdemment. Si lentre est stable ` 1, la sortie est stable ` 0. Si lentre
e e
e
a
a
e
est stable a 0, la sortie est stable ` 1.
`
a
Ltude du comportement dynamique de linverseur concerne le comportee
ment lors des changements de tension dentre. Elle doit prendre en compte o`
e
u
est connecte la sortie de cet inverseur. La rponse est simple : ` des grilles de
e
e
a
transistors, en entre dautres circuits logiques. Elles sont donc capacitives par
e
rapport ` la masse. On assimilera donc la sortie de linverseur ` une capacit.
a
a
e
Que se passe-t-il lors du changement de la tension dentre ? Lors dun front
e
montant, o` la tension dentre passe de 0 ` 5 volts, la sortie doit passer de 5 `
u
e
a
a
0 volts. La capacit relie ` la sortie doit se dcharger, vers la masse, ` travers
e
e a
e
a
le transistor N. Symtriquement, lors dun front descendant, la capacit de
e
e
sortie doit se charger ` travers le transistor P.
a
Cette charge ou cette dcharge se fait en un certain temps. Ce temps constie
tue le temps de basculement, ou temps de rponse, de linverseur. Ce temps
e
est couramment infrieur ` la nanoseconde (109 s). Il dpend fortement de
e
a
e
la valeur de la capacit. Lexistence de ce temps de changement de la sortie
e
de linverseur explique pourquoi tous les circuits logiques ont un temps de
rponse.
e

4.

Circuits logiques

Nous allons tudier dans la suite dirents assemblages de transistors


e
e
ralisant des fonctions boolennes. Ces assemblages seront classs en deux
e
e
e
catgories :
e
Les assemblages qui ne mmorisent pas linformation, que lon nomme cire
cuits combinatoires,
Les assemblages qui mmorisent de linformation, que lon nomme circuits
e
squentiels.
e
Les dirences entre ces deux types de circuits sont diciles ` comprendre.
e
a
On y revient dans la suite du livre. Chacune des deux familles fait lobjet dun
chapitre entier (Cf. Chapitres 8 et 10).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

157

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

4. Circuits logiques

E=0V

Charge

E=5V

S=5V

S=0V

Dcharge
e

C Charge
e

C Dcharge
e
e

Fig. 7.8 Dcharge et charge de la capacit de sortie dun inverseur


e
e

E1

E1
E2

E2

E2

E1

E3

(a)

(b)

(c)

(d)

Inverseur

NOR2

NAND2

Porte inconnue

Fig. 7.9 Structure interne de direntes portes de base


e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

158

4.1

De llectron aux dispositifs logiques


e

Assemblages combinatoires

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Les ralisations des fonctions boolennes sappellent des portes logiques. La


e
e
gure 7.9 donne la structure de direntes portes logiques. Linverseur est une
e
porte logique ` une entre et une sortie. Il est dj` connu (gure 7.9-a).
a
e
ea
4.1.1

La porte NOR ` deux entres E1 et E2


a
e

Le montage comporte deux transistors N et deux transistors P. Les deux


transistors N sont en parall`le entre la masse et la sortie, les deux transistors
e
P sont en srie entre lalimentation et la sortie. Les grilles dun transistor N et
e
dun transistor P sont connectes ` lentre E1, les grilles de lautre transistor
e a
e
N et de lautre transistor P sont connectes ` lentre E2. La sortie est donc
e a
e
relie ` la masse, via une rsistance passante, si et seulement si une au moins
e a
e
des deux entres est au niveau de lalimentation. La fonction logique est un
e
NOR ` deux entres. On le note parfois NOR2 (gure 7.9.-b).
a
e
4.1.2

La porte NAND ` deux entres E1 et E2


a
e

Le montage comporte deux transistors N et deux transistors P. Les deux


transistors N sont en srie entre la masse et la sortie, les deux transistors P sont
e
en parall`le entre lalimentation et la sortie. Les grilles dun transistor N et dun
e
transistor P sont connectes ` lentre E1, les grilles de lautre transistor N et
e a
e
de lautre transistor P sont connectes ` lentre E2. La sortie est donc relie
e a
e
e
a
` la masse, via une rsistance passante, si et seulement si les deux entres sont
e
e
au niveau de lalimentation. La fonction logique est un NAND ` deux entres.
a
e
On le note souvent NAND2 (gure 7.9-c).
4.1.3

Les portes ` plus de deux entres


a
e

De faon tr`s similaire au montage des portes NAND ou NOR ` deux entres,
c
e
a
e
on obtient une porte NOR ` trois entres avec 3 transistors N en parall`le entre
a
e
e
la masse et la sortie et 3 transistors P en srie entre la sortie et lalimentation.
e
De mme on obtient une porte NAND ` trois entres avec 3 transistors N en
e
a
e
srie entre la masse et la sortie et 3 transistors P en parall`le entre la sortie et
e
e
lalimentation.
Le procd semble pouvoir continuer. Noublions pas que les rsistances
e e
e
des transistors passants en srie sajoutent. Certaines techniques de ralisation
e
e
vont imposer des contraintes dorigine lectrique au nombre maximal dentres
e
e
des portes.
4.1.4

Une porte inconnue ` trois entres


a
e

Le montage de la gure 7.9-d est particulier en ce sens quil ne ralise


e
pas une fonction logique lmentaire comme le NAND ou le NOR. On vrie
ee
e
aisment que S vaut 0 si et seulement si E1 vaut 1 ou si E2 et E3 valent 1. On
e
a donc S = E1 + E2.E3.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Circuits logiques

159

c2

c3

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

c1
e

e1

e2
e3

Commutateur
- structure interne
- schma simpli
e
e

Aiguillage 3 voies vers 1

C
s

Porte de sortie 3 tats


e
- structure interne
- schma simpli
e
e

Fig. 7.10 Commutateur et aiguillage ` base de commutateurs


a

4.1.5

Deux inverseurs en parall`le : un petit et un gros


e

Si lon connecte ensemble les sorties de deux inverseurs, que se passe-t-il ?


Si les deux inverseurs ont la mme entre, donc la mme sortie, il ny a rien
e
e
e
de spcial a dire, le comportement global est celui dun seul inverseur.
e
`
Si les deux inverseurs ont des entres direntes, on se trouve avec deux
e
e
montages de ponts diviseurs de rsistances en parall`le. Si les deux inverseurs
e
e
ont des rsistances tr`s proches, la tension de sortie est autour de 2,5 volts.
e
e
Si lun des deux inverseurs a des transistors dont les rsistances sont tr`s
e
e
direntes de lautre, un des deux inverseurs peut prendre lavantage, la tene
sion de sortie prenant des valeurs de 2 ou 3 volts, par exemple. Ce type de
fonctionnement chappe videmment au domaine des circuits combinatoires
e
e
bien construits...
Dans certaines technologies le pont diviseur obtenu laisse passer beaucoup
de courant, ce qui produit de lnergie thermique. Cest le court-circuit.
e
4.1.6

Le commutateur ou interrupteur 3 tats


e

La source dun transistor MOS peut ne pas tre connecte au mme potene
e
e
tiel que le substrat. On obtient alors entre drain et source un demi-interrupteur
lectronique command par la tension de grille qui permet de raliser des
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

160

De llectron aux dispositifs logiques


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

s = si
c1 et non c2 et non c3 alors non e1 sinon
si non c1 et
c2 et non c3 alors non e2 sinon
si non c1 et non c2 et
c3 alors non e3 sinon
indfini
e
Fig. 7.11 Comportement de laiguillage

connexions intermittentes entre dautres lments. (Cf. Figure 7.10)


ee
La polarit du signal de commande qui tablit la connexion dpend du type
e
e
e
de transistor (1 pour un transistor ` canal N, 0 pour un transistor ` canal P).
a
a
Pour que les niveaux logiques 0 et 1 soient tous les deux bien transmis, on
utilise une paire de transistors N et P. On a alors un interrupteur complet, ou
commutateur. Le commutateur est dusage frquent. Il est symbolis par un
e
e
simple carr inclin.
e
e
4.1.7

Laiguillage

Observons la gure 7.10. Dans laiguillage 3 voies vers 1 ralis ` base de 3


e ea
commutateurs et de 3 inverseurs, on dit que la sortie s constitue une connexion
de type bus. les complmentaires des trois signaux e1, e2, e3 peuvent tre
e
e
envoys sur le bus. La sortie s est dcrite Figure 7.11. Cette sortie est parfois
e
e
indnie.
e
Le cas indni est complexe ; il y a deux sous-cas. Si lon trouve deux
e
ou trois sorties gales sur le bus, cela ne pose pas de probl`me, et s prend
e
e
cette valeur. Si lon trouve des sorties direntes, selon les forces respectives
e
des inverseurs qui traitent e1, e2 et e3, s reoit une valeur non boolenne. Ce
c
e
montage ne doit donc sutiliser quavec la garantie que seulement lun parmi
c1, c2, c3 vaut 1.
4.1.8

Lamplicateur 3 tats
e

Observons la gure 7.12. Lensemble inverseur (qui est aussi un amplicateur) suivi dun commutateur est parfois ralis en un seul circuit nomm
e e
e
amplicateur/inverseur 3 tats. Le montage constitu de deux inverseurs suivis
e
e
dun commutateur reoit le nom de porte de sortie 3 tats. On peut dire aussi
c
e
que cest un inverseur suivi dun amplicateur/inverseur. Ce montage est utilis dans beaucoup de dispositifs comprenant des bus. Nous en utiliserons dans
e
les chapitres relatifs aux entres/sorties. On donne aussi une autre ralisation
e
e
de la porte 3 tats. Dans ces dirents montages, les rsistances des transistors
e
e
e
quand ils sont passants doivent tre ajustes soigneusement.
e
e
4.1.9

La gare de triage

Par gnralisation des aiguillages, et utilisation de portes de sortie 3 tats,


e e
e
le montage de la gure 7.13 permet de relier 4 points A, B, C et D.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Circuits logiques

161

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

OE

OE

OE

(b)

(a)

OE

OE

OE

s
(c)

Fig. 7.12 Deux ralisations de lamplicateur/inverseur 3 tats et leurs symboles. Line


e
verseur est reprsent par un triangle avec un petit rond, les 2 portes sont
e
e
un nand2 et un nor2. (a) schmas en transistors. (b) schmas en transistors
e
e
et portes. (c) symboles logiques.

aout

ain

cin

cout

bout

bin

din

dout

Fig. 7.13 Ensemble daiguillages constituant une gare de triage.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

162

De llectron aux dispositifs logiques


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Les liaisons entre A, B, C et D sont fonctions de signaux de commande de


sortie aout, bout, cout et dout et de signaux de commande dentre ain, bin, cin
e
et din. En fonctionnement normal, un seul des signaux de commande de sortie
doit valoir 1. Plusieurs des signaux de commande dentre peuvent valoir 1.
e
Par exemple quand aout et cin et din valent 1 et que tous les autres valent 0,
la valeur de A est transmise sur C et D. Cette transmission est directionnelle.
Ce type de structure est utilise dans les interconnexions entre une mmoire
e
e
et plusieurs processeurs par exemple (Cf. Chapitre 16). La liaison centrale (en
gras sur la gure), par laquelle tout passe, est le bus du syst`me.
e

4.2

4.2.1

Assemblages squentiels
e
Introduction

La ralisation de dispositifs squentiels permet de stocker linformation.


e
e
Cela signie piger la valeur dun signal lectrique ` un instant donn dans un
e
e
a
e
dispositif o` cette valeur restera stable.
u
Pour comprendre cette mcanique commenons par voir comment une vae
c
leur peut tre mmorise de faon stable. Pour cela examinons le rtrocouplage
e
e
e
c
e
de deux inverseurs dj` rencontr pour ltude de linverseur.
ea
e
e
4.2.2

Le bistable

Observons la gure 7.14-a. Le montage de deux inverseurs, chacun ayant


comme entre la sortie de lautre, a trois points de fonctionnement :
e
lentre du premier est au niveau logique 1, sa sortie au niveau logique 0.
e
` linverse, cest le deuxi`me inverseur qui a lentre ` 1 et la sortie ` 0 (ces
a
e
e a
a
deux tats sont stables, le montage sappelle un bistable car il a deux points
e
de fonctionnement stable).
lentre et la sortie des deux inverseurs sont ` 2,5 volts. Cet tat est instable,
e
a
e
le moindre parasite sur une des deux connexions est amplie et le syst`me
e
e
tombe dans un des deux tats stables. Cest pour cela quon a choisi des
e
inverseurs de type Accroissement (on parle souvent de mta-stabilit pour
e
e
cet tat).
e
Il reste un probl`me : ces deux tats sont tellement stables quon ne voit pas
e
e
comment y piger une nouvelle valeur. Rsoudre ce probl`me permet de raliser
e
e
e
e
une mmoire vive de 1 mot de 1 bit.
e
4.2.3

Les points mmoire de type mmoire vive


e
e

Le point mmoire lmentaire, telle quil est ralis dans les bo


e
ee
e e
tiers de
mmoire vive statique, permet de piger une valeur nouvelle dans un bistable
e
e
(gure 7.14-b). Si la commande de forage F sur les 2 transistors de part et
c
dautre du bistable est active et si aux extrmits du dispositif on prsente
e e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Circuits logiques

163

F1
E

F3

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

F2

e s

s e

Bistable
(a)

V1

s e

e s

C1

e s

e s

C2

V2

Bistable avec forage


c
(b)

Points de mmorisation dynamique


e
(c)

Fig. 7.14 Les dirents points mmoire


e
e

une valeur V1 et son complment V2 ` laide de circuits plus puissants que les
e
a
deux inverseurs utiliss dans le montage bistable, ces deux valeurs restent en
e
place quand la commande F sur les deux transistors redevient inactive.
Cest un point de mmorisation dans lequel on peut donc crire. La lece
e
ture se fait simplement en rcuprant les valeurs du bit mmoris et de son
e
e
e
e
complmentaire en sortie des deux inverseurs. Le chapitre 9, consacr aux
e
e
lments de mmorisation, reprend ces points en dtail.
ee
e
e
4.2.4

Les points de mmorisation dynamiques


e

Il existe des points mmoire utilisant un principe tout ` fait dirent :


e
a
e
cest la capacit dentre dun inverseur, ou dune porte, qui pi`ge la valeur
e
e
e
(Figure 7.14-c).
La mmorisation a lieu pendant que les signaux F1 et F2 sont inactifs. Une
e
nouvelle valeur est introduite dans la capacit du premier inverseur par la mise
e
a
` 1 de F1. Cette mmorisation dans la capacit de grille dun transistor ne peut
e
e
tre de longue dure. Elle est en revanche tr`s intressante car elle nutilise
e
e
e
e
pas de circuits en plus des fonctions combinatoires. Si lon veut transfrer
e
linformation dun point ` un autre on utilise F2. Il convient dans ces points
a
de mmorisation dynamique de ne pas avoir simultanment F1 et F2 actifs.
e
e
4.2.5

Loscillateur

Le circuit oscillateur prsent gure 7.15-a oscille. Le montage dun quartz


e
e
de frquence de rsonnance donne permet de rendre la frquence doscillation
e
e
e
e
constante. Ce montage fabrique un signal priodique, carr. Il est utilis comme
e
e
e
horloge. Dans la suite du livre nous utiliserons ces primitives de rinitialisation
e
(Reset) et dhorloge pour les ralisations de circuits squentiels.
e
e
4.2.6

Le monostable

Lors de lappui sur le bouton Reset dun ordinateur, une impulsion est
gnre, puis elle dispara Un montage comme celui de la gure 7.15-b assure
e ee
t.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

164

De llectron aux dispositifs logiques


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

R
R

Clock

(a)

Vreset

(b)

Fig. 7.15 (a) Oscillateur dlivrant une horloge. (b) Syst`me de rinitialisation dlivrant
e
e
e
e
une tension de Reset.

cette fonctionnalit.
e

5.

Fabrication des dispositifs

Les dispositifs ` base de transistors sont raliss dans des cha


a
e e
nes de fabrication de haute technologie. Pour simplier la prsentation, supposons que le
e
monde comporte deux catgories : les fabricants eux-mmes et les clients. Si
e
e
le client trouve dans les catalogues des fabricants le circuit dont il a besoin,
dj` conu, il lach`te et lutilise. Sinon le client conoit un circuit pour une
ea
c
e
c
application et le fait fabriquer, puis il int`gre le circuit dans un assemblage,
e
gnralement logiciel et matriel. Cet assemblage peut tre un ordinateur, un
e e
e
e
magntoscope . . .
e
Un circuit conu spcialement pour une application sappelle un A.S.I.C.
c
e
(Application Specic Integrated Circuit). Le terme soppose aux circuits standard (mmoires, processeurs, . . .). La fabrication est dans ses grandes lignes la
e
mme.
e
Les galettes de silicium de quelques dcim`tres de diam`tre subissent une
e
e
e
suite de traitements physico-chimiques destins ` fabriquer les transistors. Les
e a
direntes tapes sont simultanes : toutes les grilles des cent (et quelques)
e
e
e
millions de transistors de la galette sont ralises en mme temps par un mme
e e
e
e
dpt de silicium polycristallin. Dirents dpts font appel au procd de
e o
e
e o
e e
photogravure que nous allons prsenter.
e

5.1

Le procd de photogravure
e e

Le procd de photogravure (Cf. Figure 7.16) permet dobtenir un motif


e e
complexe dans un matriau A ` la surface dun matriau B.
e
a
e
Pour cela on dpose du A partout ` la surface du B. Puis on dpose par
e
a
e
dessus une couche dun produit photo-sensible. On pose au-dessus un masque
partiellement opaque, partiellement transparent. Les zones opaques sont appeles les noirs, les autres les blancs. Il y a des milliards de motifs de chaque
e
couleur, notre gure nen comporte quun ! On illumine le tout par au-dessus
(tape 1 de la gure 7.16). Le produit photo-sensible reoit de la lumi`re en
e
c
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Fabrication des dispositifs

165

lumi`re
e
A

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

A
B

prod photo

A
B

2 : apr`s enl`vement
e
e
du produit photo
non illumin
e

3 apr`s enl`vement
e
e
du produit A `
a
dcouvert
e

1 : ashage

Fig. 7.16 Trois tapes du procd de photogravure


e
e e

face des blancs du masque et nen reoit pas en face des noirs du masque. Un
c
produit chimique permet dattaquer le produit photo-sensible l` o` il a reu
a u
c
de la lumi`re et seulement l` (tape 2 de la gure 7.16).
e
a e
Apr`s cette attaque, le matriau A est apparent en face des blancs du
e
e
masque. Puis un deuxi`me produit chimique attaque le matriau A l` o` il est
e
e
a u
en surface (tape 3 de la gure 7.16). Le matriau B est alors sur le dessus
e
e
en face des blancs du masque. Un troisi`me produit chimique attaque le proe
duit photo-sensible l` o` il na pas t illumin. On obtient ainsi une forme en
a u
ee
e
matriau A ` la surface dun substrat constitu de matriau B. Cette forme
e
a
e
e
est celle qui tait dessine sur le masque. La mise en oeuvre eective de ce proe
e
cessus de fabrication demande une haute technologie pour obtenir des dessins
dont les tailles sont de lordre du dizi`me de micron.
e
A partir du schma de connexions entre les transistors lobtention des dese
sins des masques suppose de manipuler quelques centaines de millions de rectangles. Un outil de Conception Assiste par Ordinateur est videmment ine
e
dispensable. Les vieillards se souviennent avec motion du bon temps o` les
e
u
circuits navaient que quelques centaines de transistors et o` les crayons de couu
leurs et le papier quadrill tenaient lieu dassistance. Les schmas physiques
e
e
taient obtenus en dcoupant de lautocollant noir, aux ciseaux, et en le collant
e
e
sur du papier blanc. Un ngatif dune photo de la feuille de papier tenait lieu
e
de masque.

5.2

Un procd de fabrication : CMOS ` grille silicium


e e
a
polycristallin et ` deux niveaux de mtal
a
e

La fabrication de circuits logiques organiss avec des transistors N et


e
des transistors P ncessite de nombreuses oprations technologiques. Nous
e
e
les envisageons ici ` travers les dessins des masques impliqus. Les masques
a
e
comportent les dessins des motifs ncessaires ` la ralisation simultane des
e
a
e
e
quelques millions de transistors sur la galette de silicium dune vingtaine de
centim`tres de diam`tre. Nous ne dessinons ici quun inverseur.
e
e
La gure 7.17 montre par 6 dessins A, B, C, D, E et F les masques utiliss.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

De llectron aux dispositifs logiques


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

166

F
E
F
E

F
E

F
E

F
E

F
E

F
E

F
E

F
E

F
E

F
E

F
E

F
E

D
C

D
C

D
C
D
C
D
C

D
C

D
C

D
C

D
C

D
C

D
C

D
C

D
C

D
C

D
C

D
C

C
C
C

Caisson P

F
E

Caisson P
Caisson N
Coupe xy

F
E

Dessin des masques


y

F
E

Caisson N




Caisson P

C
@
9

@
9

@
9

@
9

@
9

@
9

@
9

@
9

@
9

@
9

@
9

@
9

@
9

H
G

@
9

@
9
8
7

@
9

@
9

8
7

8
7

8
7

8
7

8
7

8
7

8
7
8
7
8
7
8
7

H
G

V
6

6
5
5

Coupe xy

6
6
5
5

6
6
5
5

H
G
H
G
H
G
H
G

H
G

H
G

P
I

P
I

P
I

P
I

P
I

P
I

P
I

P
I

P
I

P
I

P
I

G
G

P
I

P
I

P
I

P
I

P
I

P
I

P
I

P
I

P
I

8
7

H
G

H
G

P
I

P
I

8
7

H
G

8
7

H
G

8
7

H
G

8
7

H
G

H
G

8
7

H
G

8
7

H
G

H
G

8
7

8
7

H
G
H
G

B
A

@
9

P
I

P
I

P
I
















"
!

"
!

"
!

"
!

"
!

6
6
5
5

5
5

4
3




$
#

&
%

$
#

DifP

@
9

D
Lgende des masques
e

@
9

@
9

@
9

Coupe xy
A

E
Schma lectrique
e
e

e entre
e

DifN

(
'
(
'

'
'

Sipol
0
)

0
)

V Vref

0
)

0
)
0
)

0
)

0
)
0
)
0
)
2
1

2
1

Alu2

2
1

2
1

Alu1

a masse

C1
C2
Contacts

s sortie

2
1

2
1

Fig. 7.17 Les masques intervenant dans la technologie CMOS. DifP est le masque de
la zone diuse P, DifN de la zone diuse N, Sipol est le masque du silicium
e
e
polycristallin, Alu1 et Alu2 sont les deux niveaux daluminium, C1 et C2 sont
les deux niveaux de contacts sous laluminium. Les masques sont cumuls
e
dans les direntes parties de la gure. La vue en coupe apr`s lopration est
e
e
e
selon la ligne xy ou la ligne xy. Dans les vues en coupe loxyde nest pas
color.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Fabrication des dispositifs

167

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Nos dessins sont simplis par rapport ` la ralit. Sur les vues en coupe les
e
a
e e
vraies proportions ne sont pas respectes. La ligne de surface du substrat qui
e
appara sur les coupes nest pas si rectiligne. Il y a en ralit environ 15
t
e e
masques.
Dcrivons les oprations principales :
e
e
1. La premi`re consiste ` doper, faiblement, un caisson P pour y raliser des
e
a
e
transistors N. Le caisson P existe sous toute la zone des transistors N.
Il y a de mme un caisson N pour les transistors P. Cette tape utilise
e
e
un premier masque. Puis on dlimite ` laide dun deuxi`me masque une
e
a
e
zone active comprenant lensemble des zones qui seront diuses et les
e
transistors. Des points de contacts entre lalimentation, ou la masse, et
le subtrat, ou le caisson, sont aussi dans les zones actives. Ce sont les
points de polarisation. A lextrieur de la zone active se trouve un oxyde
e
pais de silicium (ces deux masques caisson et zone active sont partie A).
e
2. Puis on dlimite la zone de silicium polycristallin, qui est au-dessus dune
e
couche doxyde mince. Cette zone est lentre de linverseur. (partie B,
e
o` le caisson nappara plus).
u
t
3. Puis deux masques marquent les zones diuses N ou P. Cette diusion
e
ne passe pas ` travers loxyde. Elle ne se fait pas, donc ni sous loxyde
a
mince, laissant la place aux canaux des transistors, ni sous loxyde pais
e
hors de la zone active (partie C).
4. Une nouvelle couche doxyde pais est ajoute, dans laquelle on dlimite
e
e
e
des trous de contacts selon un nouveau masque (partie D).
5. Des connexions daluminium sont graves entre direntes parties des
e
e
dirents transistors. Lalimentation, ` droite sur la gure, relie le point
e
a
de polarisation du substrat N, et un ct des transistors P. La masse, `
oe
a
gauche sur la gure, relie le point de polarisation du caisson P et un ct
oe
des transistors N. Une autre connexion daluminium, au centre, relie le
transistor N, le transistor P et la sortie de linverseur. Des connexions
daluminium peuvent aussi servir ` relier des sorties dinverseurs ou de
a
portes ` des entres dautres portes (partie E).
a
e
6. Si ncessaire, on introduit une nouvelle couche doxyde pais, perce de
e
e
e
contacts, et une nouvelle couche daluminium (partie F). On peut trouver
ainsi 3 ou 4 niveaux daluminium.
Puis lensemble du circuit est recouvert dun oxyde de protection.

5.3

Procds simplis
e e
e

La prsentation qui a t faite au paragraphe prcdent montre que la


e
ee
e e
fonction du circuit provient de son dessin. La forme des connexions de grille et
des zones dopes donne les transistors. La forme des connexions daluminium
e
et lemplacement des contacts donnent leurs liaisons. La gure 7.18 indique ce

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

De llectron aux dispositifs logiques


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

168

Fig. 7.18 Masque du niveau daluminium dun petit morceau de circuit (une centaine
de transistors). On remarque une rptitivit du motif.
e e
e

que peut tre le masque du niveau daluminium dun petit morceau de circuit
e
(une centaine de transistors). La forme des connexions est, en fait, la fonction.
La conception, incluant notamment le dessin, et la fabrication des circuits
intgrs digitaux sont des oprations complexes et onreuses. On essaie dans
e e
e
e
certains cas de les simplier. Les diverses simplications peuvent porter soit sur
la fabrication proprement dite, soit sur le dessin du circuit. La simplication
vise ` apporter un gain soit dans la surface du circuit, soit dans sa vitesse
a
de fonctionnement, soit dans la dicult de conception, soit dans sa facilit `
e
ea
raliser plusieurs fonctions. La surface est souvent un param`tre critique : plus
e
e
le circuit est grand, plus il risque dy avoir des dfauts de fabrication, donc
e
plus le rendement de fabrication est faible.
Des mthodes visant ` simplier la conception ou la fabrication sont exe
a
poses ci-apr`s.
e
e
5.3.1

Simplication par la fabrication

Une des simplications possibles est de ne pas fabriquer totalement le circuit pour une application donne. En sortant de ltape de fabrication, le circuit
e
e
na pas encore de fonction. Cette fonction sera donne par une tape de persone
e
nalisation nale du circuit. Cette personnalisation est plus ou moins dnitive.
e
Elle reoit parfois le nom, plus ou moins impropre, de programmation.
c
Il y a quatre cas :
1. Aucune personnalisation, le circuit sort de la fabrication bon ` lemploi
a
(mmoires vives, processeurs, . . .).
e
2. Personnalisation par modication dnitive : une tape de modicae
e
tion est applique au circuit. Certaines connexions sont tablies, ou
e
e
supprimes, pendant cette modication. Cette programmation se fait
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Fabrication des dispositifs

169

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

dnitivement, par exemple en faisant claquer des fusibles (Programe


mable Logic Array, Programmable Logic Device). Cette programmation
est en gnral faite par le client, chez lui. Une autre faon de faire assez
e e
c
semblable est de raliser la personnalisation du circuit par un ensemble
e
de contacts et de connexions daluminium raliss au moyen de masques
e e
spciques de lapplication alors que les autres tapes ont t les mmes
e
e
ee
e
pour des circuits de fonctionnalit dirente (Gate arrays, sea of gates).
e
e
Le fabricant ralise ainsi des ensembles de portes, non interconnectes,
e
e
identiques pour dirents clients. Chaque client donne au fabricant un
e
schma qui lui est propre pour le masque des contacts et celui de lalue
minium. Cette programmation, de mise en oeuvre lourde puisquil faut
raliser les derni`res tapes, est faite chez le fabricant.
e
e
e

3. Personnalisation dicilement modiable : certaines connexions sont


tablies, ou certaines informations sont stockes en mmoire, mais leur
e
e
e
eaage et remplacement est dicile (passage sous ultra violets, eaage
c
c
sous haute tension, etc.).
4. Personnalisation et eacement simple : une conguration est introduite
dans le circuit ` la faon dont un programme est introduit en mmoire.
a
c
e
La modication est tr`s simple (Field Programmable Gate Array). Les
e
valeurs introduites pilotent des transistors utiliss en commutateur et
e
tablissent ou non des connexions. Ces circuits contiennent parfois aussi
e
des petites mmoires vives de 16 mots de 1 bit permettant de tabuler
e
certaines fonctions boolennes de 4 variables. Ces deux derni`res persone
e
nalisations sont faites chez le client.

La forme de personnalisation chez le client est toujours plus ou moins la


mme : Le circuit est mis sur une bo spciale, branche comme un simple
e
te e
e
priphrique dun ordinateur individuel. Un logiciel, en gnral spcique du
e
e
e e
e
type de circuit, tablit ` partir dune description textuelle ou graphique de la
e
a
fonction du circuit, la conguration quil faut introduire dans le circuit. La
conguration est introduite dans le circuit sous conduite du logiciel. Dans le
cas des FPGA, la conguration est stocke dans le circuit lui-mme en mmoire
e
e
e
vive.
5.3.2

Cas particulier des mmoires mortes


e

On trouve sous le nom de mmoire morte plusieurs cas de gures :


e

1. Mmoires o` linformation stocke a t introduite par les masques de


e
u
e
ee
ralisation du circuit. La mmoire se comporte comme une tabulation
e
e
matrielle de la fonction.
e
2. Mmoires o` linformation est charge apr`s fabrication, de faon ine
u
e
e
c
altrable (claquage de fusibles, par exemple).
e
3. des mmoires ash, vives, mais o` le maintien dinformation est assur
e
u
e
mme en cas de coupure de lalimentation lectrique.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

170

De llectron aux dispositifs logiques


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

4. Mmoire morte eaable plus ou moins souvent, plus ou moins come


c
modment. Il existe des mmoires o` lon peut changer le contenu seulee
e
u
ment un million de fois. Cest beaucoup pour une information dnitive,
e
mais cest trop peu pour une mmoire vive.
e

5. Fausses mmoires mortes constitues en fait dun bo


e
e
tier intgrant une
e
mmoire vive ` faible consommation et une micropile.
e
a

5.3.3

Simplication par le dessin

On cherche dans de telles mthodes ` avoir un dessin du circuit prsentant


e
a
e
une grande rgularit.
e
e
Les simplications du dessin des circuits consistent ` reprendre des para
ties communes, ` rutiliser certains blocs de dessins. Une faon simple est de
a e
c
dessiner ` lidentique des tranches de circuits. Dans un microprocesseur 32
a
bits, il semble naturel que la partie physique qui traite le bit numro 5 soit
e
presque identique ` celle qui traite le bit 23. On trouve rguli`rement dans la
a
e
e
presse des photos de processeurs. Sur les photos dassez grande taille, on peut
reconna de telles tranches. On a alors envie de dessiner tr`s soigneusement
tre
e
la tranche pour quelle soit le plus petite possible et le plus embo
table possible
sur elle-mme. Dessiner une tranche de microprocesseur est un probl`me qui
e
e
ressemble un peu ` dessiner un motif de papier peint avec raccord !
a
Une autre approche est de remarquer que les portes logiques constituant
le circuit sont toutes plus ou moins identiques. On a alors comme grain de
rptitivit non plus la tranche correspondant ` une fonction, mais la simple
e e
e
a
porte logique. Toutes les portes de mme type sont alors dessines de faon
e
e
c
identique. Il y a un patron pour les NAND ` 2 entres, un pour les NAND
a
e
a
` 3 entres, . . .Toute fonction complexe utilisant une NAND2 utilise le mme
e
e
dessin de NAND2. Seules les connexions entre ces portes sont topologiquement
direntes dune fonction ` lautre. Cest le cas, par exemple, gure 7.18 o` la
e
a
u
mme bascule est dessine 4 fois.
e
e

6.

Exercices

La logique voudrait quen permutant les positions des transistors N et


P dans linverseur et la porte NOR, on obtienne respectivement la fonction
identique (S=E) et une porte OR. Les transistors ` canal N auront alors leur
a
drain connect ` lalimentation et leur source connecte ` la sortie. En pratique
ea
e a
le fonctionnement de ce type de porte nest pas satisfaisant.
Pourquoi ?
Il faut raisonner de faon plus approfondie que 1 ou 0 logique et considrer
c
e
les tensions V alimentation - V gsth . Considrons le cas o` lentre et la sortie
e
u
e
de la porte sont au 1 logique. La tension de sortie devrait tre gale ` la tension
e e
a
dalimentation. Sachant quune dirence de potentiel minimale grille-source
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

6. Exercices

171

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

V gsth est indispensable ` la formation du canal et la tension de grille atteint


a
au mieux la tension dalimentation, la tension de sortie ne pourra dpasser
e
V alimentation - V gsth . Le mme raisonnement appliqu aux transistors `
e
e
a
canal P et au 0 logique montre que la sortie ne peut descendre en dessous
de V gsth . En rsum, les transistors MOS ` canal N (respectivement P) ne
e
e
a
transmettent bien que les 0 (respectivement 1) logiques. Le cumul des pnalits
e
e
V gsth rend ce montage inutilisable pour la construction de circuits ` plusieurs
a
tages de portes.
e
Pour raliser une porte OR ou AND, on utilisera une porte NOR ou NAND
e
suivie dun inverseur.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

172
De llectron aux dispositifs logiques
e

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 8

Circuits combinatoires

Un circuit combinatoire est un dispositif matriel dont le comportee


ment peut tre dcrit par une fonction boolenne gnrale, et toute fonction
e
e
e
e e
boolenne peut tre ralise par un circuit combinatoire. Un circuit combinae
e
e e
toire peut raliser tout traitement si lentre et la sortie sont des informations
e
e
codes par des vecteurs de boolens. Un circuit combinatoire convertit une
e
e
information dun code dans un autre, ralise une fonction arithmtique sur des
e
e
nombres cods en binaire, etc.
e
Les entres sont une nappe de ls. Une entre, ` un instant donn, est ` un
e
e a
e
a
certain niveau logique Vrai ou Faux, cest-`-dire ` un niveau lectrique. Ce nia
a
e
veau est susceptible de changer au cours du temps. Si une entre est constante,
e
la faire intervenir dans le calcul dune fonction nest pas une ncessit. Les sore
e
ties sont une nappe de ls. Elles sont aussi susceptibles dvoluer au cours du
e
temps. Il nest pas ncessaire de raliser un circuit combinatoire pour calculer
e
e
une sortie constante.
Puisque nous nous limitons dans ce livre aux dispositifs lectroniques, les
e
circuits combinatoires sont aliments en courant lectrique mais lalimentation
e
e
et la masse ne sont pas considres comme des entres des circuits combinaee
e
toires.
Un circuit combinatoire est constitu dun ensemble de portes logiques. Cere
taines ont t prsentes au chapitre 7. Les entres du circuit sont connectes
ee e
e
e
e
a
` des entres de portes. Les sorties du circuit combinatoire proviennent de
e
sorties de portes. A lintrieur du circuit il peut y avoir plusieurs circuits come
binatoires ou portes successifs, les sorties des uns tant relies aux entres des
e
e
e
autres.
Un circuit combinatoire est un tre physique. Il occupe une certaine surface,
e
consomme une certaine puissance lectrique, puissance qui est dissipe sous
e
e
forme thermique, il ntablit les valeurs correctes de ses sorties quun certain
e
dlai apr`s le changement de ses entres. Les concepteurs de circuits cherchent
e
e
e
gnralement ` obtenir un circuit ayant la plus petite surface possible, donnant
e e
a
les dlais de rponse les plus brefs possibles et consommant/dissipant le moins
e
e
dnergie possible. Ces trois crit`res participent au cot dun circuit. Un autre
e
e
u

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

174

Circuits combinatoires

Alimentation

Masse
s0

F : 2 entres , 1 sortie

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

e0
e1

e2
e3

entres

s1

s2

s3

G : 3 entres, 2 sorties

Circuit global :
4 entres, 4 sorties

sorties

Fig. 8.1 Un exemple de circuit combinatoire. Les carrs F et G sont des portes ou des
e
circuits combinatoires.

crit`re de cot est la rgularit du circuit, cest-`-dire, indirectement, le temps


e
u
e
e
a
ncessaire a sa conception et ` son dessin. Plus un circuit comporte de fois un
e
`
a
bloc rpt, moins il est dicile de le concevoir. Voir par exemple la gure 7.18
e ee
du chapitre 7.
Dans ce chapitre nous donnons dabord (paragraphe 1.) quelques lments
ee
relatifs au comportement temporel des circuits combinatoires avant de
dnir prcisment ces circuits. Cela permet de mieux situer la dirence
e
e e
e
entre les circuits combinatoires et une autre classe de circuits qui fait
lobjet du chapitre 10. Nous tudions ensuite (paragraphe 2.) en quoi
e
consiste la conception de circuits combinatoires ` partir de blocs phya
siques de base. Dans le paragraphe 3. nous insistons sur la ressemblance
entre cette conception et la conception des algorithmes. Le paragraphe 4.
prsente une tude de cas. Certains des exemples retenus dans ce chapitre
e
e
sont utiles dans plusieurs chapitres ultrieurs du livre.
e

1.

Notion de circuit combinatoire

1.1

Comportement temporel dun circuit combinatoire

Lorigine du dlai de rponse dune porte (charge ou dcharge de capacit)


e
e
e
e
a t prsent au chapitre 7. Il est naturellement strictement positif. A lheure
ee e
e
o` nous crivons ce livre, il est couramment de lordre dun dizi`me de nanou
e
e
10
seconde, soit 10
s. Ce dlai nest pas constant, nest pas une proprit de la
e
ee
porte elle-mme. Il varie avec la valeur de la capacit ` charger, la temprature
e
ea
e
de fonctionnement, etc. Les constructeurs donnent les valeurs maximales et minimales du dlai de rponse des composants. Le dlai de rponse dun circuit
e
e
e
e
combinatoire provient de laccumulation des dlais des direntes portes et ine
e
terconnexions entre les entres et les sorties. Par approximation, on consid`re
e
e
souvent que les dlais de portes cascades sajoutent. Des valeurs transitoires
e
e
peuvent appara
tre. Mais au bout dun certain temps les sorties sont stabi-

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Notion de circuit combinatoire

175

1 logique
0 logique

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

e0
e1

5 Volts
0 Volt

s0 observ

s0 idal (sans dlais)

Indtermin
e
e
1 logique
0 logique

s0 (avec dlais)

Fig. 8.2 Comportement possible du circuit combinatoire donn en exemple


e

lises. Dans un circuit combinatoire, une sortie ne peut se mettre ` osciller


e
a
indniment. Un circuit lectronique fabricant un tel signal oscillant est tr`s
e
e
e
utile mais nest pas un circuit combinatoire. Par exemple le circuit prsent
e
e
gure 8.1 peut donner le comportement dcrit par la gure 8.2. Nous y distine
guons des entres idales (par dnition boolennes), des sorties telles quelles
e
e
e
e
pourraient tre observes (entre 0 et 5 Volts) et des sorties idales (boolennes
e
e
e
e
aussi). On trouve souvent une reprsentation avec des sorties indtermines
e
e
e
pendant le dlai de rponse. Nous la faisons gurer aussi. Cest videmment la
e
e
e
situation la plus raliste, mais elle nest pas boolenne.
e
e

1.2

1.2.1

Caractrisation des circuits combinatoires


e
Caractrisation par le comportement
e

Un circuit combinatoire ralise une fonction. Cela veut dire quune certaine
e
conguration des entres donne toujours la mme conguration des sorties.
e
e
Examinons ce que signie ce toujours. Si plusieurs congurations dentres
e
sont appliques successivement aux entres du circuit combinatoire, on observe,
e
e
apr`s stabilisation, certaines congurations de sorties.
e
Un circuit est combinatoire si :
Pour tout couple (C1,C2) de congurations dentres, le circuit recevant
e
la squence temporelle C1, C2, C1 en entre donne, apr`s ventuelle
e
e
e e
stabilisation des valeurs, une squence de sortie S1, S2, S1.
e

La conguration C1 donne toujours S1.


A linverse, si pour un circuit on peut trouver un couple de congurations
dentres (C3, C4) tel que la squence temporelle dentre C3, C4, C3 donne
e
e
e
une squence de sortie S3, S4, S5, avec S3 = S5, le circuit nest pas combinae
toire.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

176

Circuits combinatoires

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Intuitivement le circuit non combinatoire se souvient quil est pass par la


e
conguration S4, cela change ses rsultats ultrieurs. Le circuit combinatoire
e
e
ne se souvient de rien. Les circuits combinatoires nont aucune fonction de
mmorisation. On verra des circuits ayant une mmorisation dans des chapitres
e
e
ultrieurs.
e
Il convient de prciser que si les congurations dentre C1 et C2 di`rent
e
e
e
de plusieurs bits, on suppose les changements de valeurs simultans (comme
e
les entres e1 e0 de la gure 8.2).
e
Le circuit combinatoire ralise une fonction au sens mathmatique du
e
e
terme : chaque appel avec des valeurs identiques des param`tres dlivre la
e
e
mme valeur. A linverse, la fonction random des calculettes nest pas une
e
fonction puisque dirents appels ne donnent pas le mme rsultat.
e
e
e
1.2.2

Caractrisation par la structure


e

Considrons un assemblage de portes interconnectes comme un graphe.


e
e
Les portes sont les noeuds, les connexions les arcs. Une orientation vidente
e
des arcs est fournie par le sens sortie dune porte vers lentre dune autre. Si
e
le graphe ainsi obtenu est sans cycle, le circuit est combinatoire.
Remarque : Attention, la rciproque est fausse ! Lexercice E8.17 donne
e
un circuit combinatoire comportant un cycle. Il est hors du sujet de ce livre
de caractriser lensemble des circuits combinatoires avec un cycle.
e

1.3

Le principe de ralisation
e

Les objets de base utiliss dans les circuits combinatoires sont les portes
e
logiques. Une technologie de ralisation tant choisie, il nest pas ncessaire de
e
e
e
garder la reprsentation en transistors des portes NOR ou NAND comme dans
e
le chapitre 7. Lusage a consacr des symboles pour les portes. Les connexions
e
entre ces portes sont reprsentes par des traits. Ces symboles sont reprsents
e
e
e
e
gure 8.3.
On trouve souvent des portes NAND et NOR sans le petit rond utilises
e
pour reprsenter des fonctions ET et OU.
e
1.3.1

Les circuits existants : inverseurs, portes NAND et NOR

Les inverseurs, les NAND et les NOR sont les portes lmentaires. Linveree
seur est un NAND (ou un NOR) ` une seule entre. Pour des raisons lectriques
a
e
e
(trop grande rsistance obtenue en mettant beaucoup de transistors en srie,
e
e
par exemple) le nombre dentres des portes est parfois limit. Ainsi pour la
e
e
ralisation de carte imprime ` base de bo
e
e a
tiers de la famille technologique
TTL (Transistor Transistor Logic) on peut disposer de portes NAND ` 2, 3, 4,
a
8 ou 13 entres. Pour raliser une fonction NAND portant sur 6 variables, tout
e
e
va bien puisque NAND(a, b, c, d, e, f) = NAND(a, b, c, d, e, f, f, f) et la porte

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Notion de circuit combinatoire

e1

e1

e1

a
b

a
s

e3

e2

e2

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

177

c
6

Fig. 8.3 Reprsentation conventionnelle des portes logiques :


e
porte 1 : linverseur : s = not(e) ;
porte 2 : le NAND : s = nand(e1,e2,e3) ;
porte 3 : le NOR : s = nor(e1,e2) ;
porte 4 : le XOR : s = xor(e1,e2) ;
porte 5 : le ANDNOR : s = nor( and(a,b), and(c,d,e)) ;
porte 6 : le ORNAND : s = nand ( or(a,b), c).

NAND ` 8 entres fait laaire. Mais pour une fonction ` plus de 13 entres
a
e
a
e
cest moins simple.
Lexercice E8.15 donne une ide de solution ` ce probl`me. Dans dautres
e
a
e
technologies les portes NOR ne peuvent avoir que 2 ou 3 entres et les portes
e
NAND que 2, 3 ou 4. Dans certains cas, plusieurs technologies peuvent intervenir dans un mme quipement matriel comportant plusieurs puces. Une puce
e
e
e
peut ne contenir que des portes ` au plus 4 entres alors que la puce voisine a
a
e
des portes ` 20 ou 2000 entres.
a
e
1.3.2

Assemblage systmatique
e

Toute fonction boolenne peut sexprimer sous forme de somme de proe


duits de variables normales ou complmentes. Cette expression en somme de
e
e
produits peut se traduire de faon systmatique sous forme de combinaison de
c
e
deux tages de NAND de variables normales ou complmentes. On rappelle
e
e
e
que, par application directe des r`gles de De Morgan, si a, b, c, d, e, f sont des
e
variables boolennes :
e
a + b.c + d.e.f = a.(b.c).(d.e.f )
ou, en utilisant une notation prxe pour le NAND,
e e
a + b.c + d.e.f = nand(not(a), nand(b, c), nand(e, f, g))
De mme, pour une expression en produit de sommes,
e
a.(b + c).(d + e + f ) = a + (b + c) + (d + e + f )
ou, en utilisant une notation prxe pour le NOR,
e e
a.(b + c).(d + e + f ) = nor(not(a), nor(b, c), nor(e, f, g))
On ralise un circuit dont le comportement est dcrit par une fonction
e
e
boolenne par un tel assemblage de portes NAND ou NOR et dinverseurs
e
(Cf. Figure 8.4). Cela donne des schmas logiques de circuits combinatoires
e
dans lesquels il ny a que deux ou trois tages de portes entre lentre et la
e
e
sortie : un tage dinverseurs pour certaines entres, puis deux tages, soit de
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Circuits combinatoires

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

178

Fig. 8.4 Exemple de ralisation de fonctions ` base de portes NAND.


e
a
g = a.b.c.d + b.c.d
f = b.c.d
e = a.b.c.d + c.d

NAND soit de NOR. Ces circuits sont optimaux en terme de nombre dtages.
e
Exemple E8.1 : Ralisation en NAND de la fonction majorit
e
e
Reprenons la table de vrit de laddition de deux naturels (Cf. Parae e
graphe 2.2.2, chapitre 3) en nous limitant ` la fonction majorit :
a
e
a b

re

0
0
0
0

0
1
0
1

0
0
1
1

rs
maj(a, b, re )
0
0
0
1

a b

re

1
1
1
1

0
1
0
1

0
0
1
1

rs
maj(a, b, re )
0
1
1
1

On obtient lexpression optimise :


e

ou

rs = a.b + a.re + b.re


rs = nand(nand(a, b), (nand(a, re ), nand(b, re ))

Le schma en portes NAND du circuit combinatoire ralisant la fonction


e
e
majorit est donn gure 8.5.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Notion de circuit combinatoire

179

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

a
b
re

a
b
re

Fig. 8.5 Ralisation de la fonction majorit en portes NAND. Sur le schma, deux
e
e
e
conventions usuelles sont prsentes : avec lune, les points noirs reprsentent
e
e
e
des connexions entre un l horizontal et un l vertical ; avec lautre, un trou
dans le l vertical permet de mettre en vidence la non-connexion.
e

1.4

Conception de circuits combinatoires

Etant donne une fonction boolenne gnrale, concevoir un circuit come


e
e e
binatoire consiste ` assembler des lments logiques de base, choisis parmi
a
ee
une liste donne, comme les portes par exemple, pour que le comportement
e
global de lensemble soit dcrit par la fonction boolenne voulue. De plus cet
e
e
assemblage doit tre dun cot acceptable, voire minimal. Cette conception de
e
u
circuits suppose deux niveaux de travail. Les noms de ces deux niveaux sont
uctuants mais nous choisissons ceux dalgorithmique cble et de synth`se loa e
e
gique. On retrouvera cette distinction dans le chapitre 10. La conception peut
se faire soit manuellement (rarement), soit, principalement, en utilisant des
outils de Conception Assiste par Ordinateur. Il existe donc des outils de CAO
e
de synth`se logique 1 ou dalgorithmique cble. Il arrive aussi que les deux
e
a e
outils soient fusionns en un seul.
e
1.4.1

Algorithmique cble
a e

Il arrive que lexpression de la fonction boolenne fasse appel ` des obe


a
jets extra-boolens. En particulier la donne dune fonction arithmtique et
e
e
e
du codage binaire des nombres manipuls constituent une description dune
e
fonction boolenne. Par exemple un multiplieur combinatoire de 2 nombres
e
entiers cods sur 64 bits en complment ` 2 est une description dune fonction
e
e
a
boolenne.
e
La conception conduit ` une expression de la fonction globale comme une
a
composition de sous-fonctions dcrites en termes boolens et/ou arithmtiques.
e
e
e
Cette dcomposition nest jamais unique et les aspects de cot doivent tre pris
e
u
e
en considration pour choisir la bonne solution. La possibilit de r-utiliser des
e
e
e
rsultats intermdiaires doit tre retenue pour conomiser des lments. Le
e
e
e
e
ee
1

Pour la beaut de son nom signalons un outil qui construit les portes ` partir de la
e
a
description de la fonction boolenne : BuildGates !
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

180

Circuits combinatoires

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

crit`re de rgularit peut intervenir aussi comme crit`re de comparaison entre


e
e
e
e
des solutions.
Cette recherche dun assemblage dlments donnant un comportement atee
tendu est tr`s proche de lalgorithmique o` lon cherche ` assembler les inse
u
a
tructions pour obtenir un certain comportement.
Cet ensemble de techniques, que nous dtaillons dans le paragraphe 3. sous
e
le nom dalgorithmique cble, est parfois nomme conception logique. Elle
a e
e
conduit ` une description en terme de composition de fonctions boolennes
a
e
de la fonction globale. Le terme algorithmique cble peut sembler trange. Il
a e
e
indique simplement que la composition de fonctions exprimes dans les algoe
rithmes de ces traitements est un banal cblage. Utiliser les rsultats dune
a
e
fonction comme entres dune autre fonction, cest connecter les sorties du
e
sous-circuit ralisant lune aux entres du sous-circuit ralisant lautre.
e
e
e
1.4.2

Synth`se logique
e

On parle de synth`se logique pour dcrire lassemblage de portes phye


e
siques choisies parmi une liste donne, ` partir de la description de la fonction
e a
boolenne.
e
Il ne faut pas perdre de vue que la notion dlments logiques de base nest
ee
pas absolue. Elle est relative ` une liste donne, une biblioth`que de circuits. De
a
e
e
la mme faon quen programmation, dirents langages ou syst`mes peuvent
e
c
e
e
orir des primitives plus ou loins avances.
e
Un circuit combinatoire ralisant les fonctions majorit et du chapitre
e
e
3 est un additionneur 1 bit. Il comporte en gnral deux portes XOR comme
e e
celles de lexercice E8.14. La fonction majorit est connue aussi (exemple E8.1),
e
mais rien ninterdit de considrer un additionneur 1 bit comme bloc de base.
e
Il est dailleurs inclus dans beaucoup de biblioth`ques. Dautres biblioth`ques
e
e
proposent un circuit de calcul rapide des retenues.
Lutilisation des outils de CAO de synth`se logique suppose la description
e
de la fonction boolenne et celle de lensemble dlments de base selon un lane
ee
gage formel traitable par un programme. La conception manuelle repose plutt
o
sur lutilisation dun schma et dun catalogue des composants disponibles.
e
Entre la reprsentation de la fonction boolenne et celle de la struce
e
ture de connexions entre lments qui la ralise, il peut exister plusieurs
ee
e
reprsentations intermdiaires. Il faut que lquivalence soit prserve dans
e
e
e
e
e
ces direntes formes. Des techniques de synth`se logique peuvent sappliquer
e
e
plutt sur la forme algbrique (remplacement dune formule boolenne par
o
e
e
une autre formule boolenne) ou plutt au rsultat physique (remplacement
e
o
e
dun lment de circuit par un autre, plus petit ou moins consommateur, par
ee
exemple).
Dans la suite nous prsentons dabord les cas simples, o` la distance est
e
u
faible entre lexpression algbrique et la ralisation. Pour cela nous prsentons
e
e
e
des exemples dlments logiques qui peuvent tre considrs comme de base
ee
e
ee

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Assemblage de blocs de base...

181

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

et nous montrons les expressions algbriques qui y collent le mieux. Il sagit


e
bien de synth`se logique.
e
Nous tudions ensuite des circuits moins simples o` la distance peut tre
e
u
e
grande entre lexpression de la fonction et la structure de la ralisation. Il sagit
e
bien alors dune vritable algorithmique cble.
e
a e
Nous privilgions les solutions systmatiques mais nous montrerons parfois
e
e
quelques astuces.

2.

Assemblage de blocs de base :


synth`se logique
e

2.1

Dcodeurs, encodeurs
e

2.1.1

Les circuits existants

Un circuit fabriquant en sortie les 2N monmes canoniques correspondant


o
a
` ses N entres est appel un dcodeur. On en rencontre en particulier dans
e
e
e
les mmoires o`, ` partir des N bits dadresse, il faut mettre un des 2N
e
u a
e
signaux de slection dun mot. Ainsi pour le dcodeur, ` partir dun nombre
e
e
a
cod en binaire, on obtient un seul 1 parmi une nappe de ls. Cest le l dont
e
le numro est celui donn en entre. Gnralement il y a un AND entre une
e
e
e
e e
entre supplmentaire de validation val et ce bit de sortie.
e
e
La fonction dun encodeur est exactement symtrique. Si parmi une nappe
e
de ls on est certain quun seul est ` 1 ` un instant donn, lencodeur donne
a a
e
le numro de ce l. Si la garantie quun seul l dentre est ` 1 ne peut tre
e
e
a
e
tablie, le circuit est dirent. Il dlivre alors le numro du premier l ` 1. La
e
e
e
e
a
notion de premier suppose un ordre sur les ls ; cest soit lordre des numros
e
croissants, comme dans notre exemple, soit dcroissants.
e
Les tables de vrit de la gure 8.6 caractrisent le dcodeur, lencodeur
e e
e
e
avec garantie quune seule entre est ` 1 (encodeur1), lencodeur en gnral,
e
a
e e
sans cette garantie (encodeur2). Dans ce dernier on introduit une sortie a, vraie
si aucune entre nest ` 1.
e
a
On en dduit aisment les expressions logiques et les schmas correspone
e
e
dants. Par exemple, dans le dcodeur : s0 = e1.e0. val, dans lencodeur1 :
e
s1 = e3 + e2.

2.1.2

Synth`se systmatique
e
e

Lexemple E8.8, paragraphe 3.3, montre lutilisation de dcodeurs. On en


e
retrouvera dans le livre comme dcodeurs dadresse (Cf. Chapitres 9 et 15).
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

182

Circuits combinatoires

Encodeur1
Entres
e
Sorties
e3 e2 e1 e0 s1 s0
0001
00
0010
01
0100
10
1000
11

Encodeur2
Entres
e
Sorties
e3 e2 e1 e0 s1 s0 a
0000
1
0001
000
001x
010
0 1 xx
100
1 xxx
110

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Dcodeur
e
Entres
e
Sorties
val e1 e0 s3 s2 s1 s0
100
0001
101
0010
110
0100
111
1000
0xx
0000

Fig. 8.6 Tables de vrit des encodeurs et dcodeurs. Les x et les indiquent une
e e
e
valeur non pertinente respectivement en entre ou en sortie.
e

2.2

2.2.1

Programmable Logic Array


Les circuits existants

On trouve dans le commerce des circuits nomms PLA ou PLD (Programe


mable Logic Arrays ou Programmable Logic Devices). Lutilisateur peut facilement personnaliser ces circuits pour y raliser des produits ou des sommes
e
de produits. Dans ces circuits les nombres dentres, sorties et, sil y a lieu,
e
monmes, sont xs. Par exemple un PLA donn a 12 entres, 20 monmes et
o
e
e
e
o
8 sorties.
Lutilisateur claque des fusibles pour xer : 1) quelle entre (normale ou
e
complmente) fait partie de quel monme ; cest la partie AND du PLA. 2) quel
e
e
o
monme fait partie de quelle sortie ; cest la partie OR du PLA.
o
Le claquage (la programmation) se fait dans un petit dispositif
lectronique, connectable ` un ordinateur personnel, et facilement commane
a
dable par un logiciel qui a reu les quations logiques en entre.
c
e
e
Des organisations proches des PLA peuvent tre ralises ` base de portes
e
e e a
dans les circuits non pr-existants.
e
2.2.2

Synth`se systmatique
e
e

Lutilisateur cherche souvent ` minimiser le nombre de monmes de la


a
o
fonction ou des fonctions ` raliser. Soit parce que le nombre total de monmes
a e
o
est contraint par la technologie, soit pour conomiser de la surface dans le
e
circuit. Nous allons tudier un exemple de fonction ralise sur un tel rseau
e
e e
e
programmable PLA permettant de faire des sommes de produits.
Dans un cas on a procd ` une minimisation de chacune des fonctions,
e e a
indpendamment des autres, par des tableaux de Karnaugh. Dans lautre cas,
e
on a cherch une minimisation globale grce ` un outil de CAO.
e
a a
Exemple E8.2 : Contrle dun acheur 7 segments
o
Lexemple retenu est tr`s classique. Nous lavons dj` rencontr dans le chae
ea
e
pitre 2. Un circuit combinatoire reoit 4 entres x3 , x2 , x1 , x0 codant un naturel
c
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

183

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

2. Assemblage de blocs de base...

x3

a
b
c
d
e
f
g

x2
x1
x0

g
d

b
c

Fig. 8.7 Achage des nombres de 0 ` 15 sur 7 segments


a

x3 x2 x1 x0

x3 x2 x1 x0

a b c d e f g

a b c d e f g

Fig. 8.8 Description symbolique des PLA ralisant le codage pour un acheur 7 sege
ments. A gauche minimisation de chacune des fonctions, indpendamment les
e
unes des autres, ` droite, minimisation globale.
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

184

Circuits combinatoires

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

entre 0 et 15. Il dlivre 7 sorties activant 7 segments dun acheur. Les 7 sege
ments se nomment a, b, c, d, e, f et g. Ils sont disposs comme sur la gure 8.7.
e
Les chires hexadcimaux sont achs comme indiqu. La fonction du circuit
e
e
e
est de transcoder entre le code binaire des nombres et le code en segments
allums et segments teints.
e
e
On cherche ` exprimer chacune des 7 fonctions boolennes a, . . ., g en
a
e
fonction de x3 , x2 , x1 , x0 . Par exemple,
a = x3 .x1 + x2 .x1 + x2 .x0 + x3 .x0 + x3 .x2 .x0 + x3 .x2 .x1

Pour la solution globale on obtient 28 monmes dirents. La partie gauche de


o
e
la gure 8.8 donne les direntes fonctions. Chaque ligne gure un monme.
e
o
Pour chaque monme, on reprsente par un point noir : quelles entres il
o
e
e
prend en compte (partie AND du PLA) ; dans quelles sorties il gure (partie
OR du PLA). Ainsi la troisi`me ligne reprsente le monme x2 .x0 . Il est utilis
e
e
o
e
par les fonctions a, b et e.

2.2.3

Minimisation locale, minimisation globale

Dans les ralisations ` base de monmes, en portes ou en PLA, le concepteur


e
a
o
cherche ` minimiser le nombre total de monmes. La surface du PLA est en
a
o
eet proportionnelle ` ce nombre. Si cette recherche est faite indpendamment
a
e
pour chacune des fonctions individuelles, il se peut que le rsultat global soit
e
moins bon que pour une minimisation globale. Les outils modernes de Conception Assiste par Ordinateur comportent de tels programmes de minimisation
e
globale. Pour la solution du transcodeur de 7 segments, avec une telle minimisation globale, un outil dvelopp par lun des auteurs obtient 14 monmes
e
e
o
dirents. La partie droite de la gure 8.8 donne les direntes fonctions.
e
e

2.3

2.3.1

Mmoires mortes : une table de vrit cble


e
e e a e
Les circuits existants

Une mmoire morte de 256 mots de 16 bits ralise 16 fonctions combie


e
natoires de 8 variables. En eet ` partir dune conguration des 8 entres,
a
e
habituellement interprte comme une adresse, la mmoire morte dlivre 16
ee
e
e
bits. Une telle ralisation de fonction ` base de ROM est parfois utilise. Elle
e
a
e
est optimale du point de vue du temps de conception. Cest une tr`s bonne soe
lution de paresseux ! La table de vrit sut ` dcrire la ralisation. On peut
e e
a e
e
aussi considrer cette solution comme un PLA avec tous les monmes canoe
o
niques. On trouve souvent dans les circuits programmables (FPGA) des petites
ROM, inscriptibles par lutilisateur, par programmation. Ces mmoires, quon
e
ne peut plus appeler mortes, reoivent le nom de Look-Up Tables (LUT).
c

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Assemblage de blocs de base...

185

x3

x3 x2 x1 x0

x2

x1

x0

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

c1

c1
c0

11 10 01 00

c0

e1 e0

Fig. 8.9 Reprsentation symbolique des multiplexeurs 4 voies vers 1 et 2 voies vers 1.
e
Structure interne du multiplexeur 4 voies vers 1.

2.3.2

Synth`se systmatique
e
e

Pour une fonction de 8 variables on forme les 256 monmes canoniques pour
o
exprimer la fonction sous forme de somme de produits ` partir de la table de
a
vrit, et on ralise un circuit combinatoire en collant ` cette expression.
e e
e
a

2.4

2.4.1

Multiplexeurs

Les circuits existants

Un circuit combinatoire est dusage frquent : le multiplexeur. Il ralise la


e
e
N
slection parmi 2 entres de donnes. Celle des entres slectionne est celle
e
e
e
e
e
e
dont le numro est donn sur les N bits de commande. Le nombre dentres
e
e
e
de commande du multiplexeur est le logarithme ` base 2 du nombre de bits de
a
donnes.
e
Ainsi pour 2 bits de commande c1 et c0 et 4 bits de donne x3, x2, x1, x0
e
la sortie s est dcrite par lquation logique :
e
e
s = c1.c0.x3 + c1.c0.x2 + c1.c0.x1 + c1.c0.x0.

Si les bits c1 c0 codent lentier k, la sortie est gale ` lentre x dindice k. La


e
a
e
ralisation interne sen dduit aisment. Elle constitue dans ce cas un multie
e
e
plexeur 4 voies vers 1. Le schma conventionnel des multiplexeurs 2 voies vers
e
1 et 4 voies vers 1 sont donns gure 8.9.
e
2.4.2

Synth`se systmatique
e
e

Les multiplexeurs sont tr`s pratiques pour synthtiser une fonction dcrite
e
e
e
par un graphe de dcision binaire (BDD). Ils sont surtout une brique de base de
e
lalgorithmique cble o` ils ralisent la primitive de choix. Ainsi de nombreux
a e u
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

186

Circuits combinatoires

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

outils de CAO partent dune reprsentation des fonctions boolennes en BDD,


e
e
notamment si la brique de base des circuits combinatoires est le multiplexeur.
Remarque : Attention le multiplexeur est orient. Ce nest pas un aie
guillage 4 voies vers 1 tel quil pourrait tre ralis avec 4 commutateurs (voir
e
e e
la gure 7.10 dans le chapitre 7).

Exemple E8.3 : Cascades de multiplexeurs


En utilisant 5 multiplexeurs 4 voies vers 1, on peut raliser un multiplexeur
e
16 voies vers 1. Pour cela on utilise un premier tage de 4 multiplexeurs en
e
parall`le recevant les mmes 2 bits de commande, puis lautre multiplexeur
e
e
recevant les deux derniers bits de commande. Le lecteur est convi ` examiner
ea
direntes possibilits de choix daectation des bits de commandes soit au
e
e
premier tage de 4 multiplexeurs en parall`le soit au deuxi`me.
e
e
e

2.5

2.5.1

Portes complexes

Les circuits existants

Dans certains types de ralisations des portes un peu complexes sont utie
lises ; par exemple les portes ORNAND et ANDNOR prsentes gure 8.3.
e
e
e
2.5.2

Synth`se systmatique
e
e

Le principal probl`me li ` lutilisation de telles portes est que des procds


e
ea
e e
systmatiques de synth`se ne sont pas toujours disponibles. On obtient facie
e
lement une expression en somme de produits, donc en NAND de NAND. Les
portes plus complexes correspondant par exemple ` (abc + de + f g) ne peuvent
a
provenir que doutils de Conception Assiste par Ordinateur. Les mthodes utie
e
lises alors consistent ` modier les formes algbriques (ou autres comme les
e
a
e
BDDs) des fonctions boolennes pour retrouver ou calquer (on parle de mape
ping en anglais) les motifs correspondant aux lments de base disponibles.
ee

3.

Algorithmique cble : conception logique


a e

La conception logique a pour but de composer des fonctions boolennes,


e
ventuellement assez complexes, pour raliser une fonction boolenne plus
e
e
e
gnrale. Lessentiel de la dicult est la recherche de rgularit.
e e
e
e
e

3.1

La question de la rgularit
e
e

Pour introduire la notion de rgularit dans la conception, nous montrons


e
e
ici les rsultats de deux mthodes de conception sur un mme exemple.
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Algorithmique cble : conception logique


a e

187

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Exemple E8.4 : Conversion binaire vers DCB


Il sagit dune fonction boolenne ` 9 entres et 10 sorties. Sur la gure 8.10
e
a
e
les bits dentre et de sorties ne gurent que par leur numro. Le circuit
e
e
convertit lcriture binaire dun naturel de lintervalle [1, 366] (donc sur
e
9 bits) vers son criture en Dcimal Cod en Binaire (donc sur 10 bits).
e
e
e
Chaque chire de lcriture dcimale est cod en binaire, par exemple
e
e
e
28510 = 1 0001 11012 = 10 1000 0101DCB .
1) Par ltude de lalgorithme de conversion, nous connaissons une
e
dcomposition de la fonction du circuit en fonctions lmentaires. Il y a une
e
ee
forte rgularit dans la faon dont se combinent ces fonctions lmentaires.
e
e
c
ee
Elle est lie ` la rgularit induite par lalgorithme de conversion. Cette
e a
e
e
dcomposition donne la structure de la solution 2 de la gure 8.10. Tous les
e
rectangles reprsentent la mme fonction ` 4 entres et 4 sorties. Les deux
e
e
a
e
rectangles marqus dun point, blanc ou noir, ont une entre de moins ou
e
e
une entre et une sortie de moins. Tous les blocs tant identiques et leur
e
e
disposition tant rguli`re, le schma topologique du circuit serait simple.
e
e
e
e
La fonction tant une fonction arithmtique, pour obtenir le mme circuit
e
e
e
pour plus dentres et de sorties, il sut dtendre le schma. On dnombre 6
e
e
e
e
niveaux de blocs entre les entres et les sorties.
e
2) Nous avons, avec laide des auteurs dun logiciel de synth`se logique,
e
donn la table de vrit compl`te de ce circuit ` loutil. Cela reprsente un
e
e e
e
a
e
peu moins de 400 lignes de 10 bits. Elles peuvent tre obtenues par un proe
gramme. Ce logiciel a travaill en aveugle uniquement ` partir de ces tables.
e
a
Le logiciel cherchait ` synthtiser ` partir de fonctions ` 3 ou 4 entres. Il a
a
e
a
a
e
essay de minimiser le nombre total de blocs. Il a par ailleurs essay de regroue
e
per des fonctions qui utilisaient les mmes variables ou les mmes rsultats
e
e
e
intermdiaires. Il a de plus cherch ` minimiser le nombre de niveaux logiques
e
ea
total entre les entres et les sorties. Le rsultat est celui de la partie 1 de
e
e
la gure 8.10. Par exemple le bloc reprsent en gris reoit les 4 entres de
e
e
e c
e
numro 7, 5, 3 et 2 et dlivre 3 sorties, chacune tant utilise dans deux blocs.
e
e
e
e
On dnombre 4 niveaux de blocs entre les entres et les sorties.
e
e

Dans tous les circuits ayant un grand nombre dentres, le concepteur


e
cherche une rgularit permettant de simplier le travail. Il est ` noter que
e
e
a
cette rgularit se retrouve souvent dans la topologie eective de la ralisation
e
e
e
du circuit. La plupart des circuits ralisant des fonctions arithmtiques, et
e
e
dautres, prsentent de telles rgularits. Nous allons les tudier. Cette partie
e
e
e
e
suppose connus les lments du chapitre 3 sur les reprsentations des granee
e
deurs.
Dans la suite nous montrons 3 mthodes dassemblage de sous-circuits.
e
Dans la premi`re, lassemblage itratif, ou linaire, la connaissance de la soe
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

188

Circuits combinatoires

8 7 6 5 4 3 2 1 0

7532
864875 642310

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

7543864876352 86

8 7

432

9 8 7 6 5

4 3 2 1 0

Solution 2

Solution 1

Fig. 8.10 Deux solutions pour la ralisation dune mme fonction


e
e

lution pour le circuit travaillant sur N 1 bits permet de concevoir le circuit


travaillant sur N bits. Cette structure est proche de la boucle ditration.
e
Le circuit global est obtenu en rptant N fois un circuit de base.
e e

Dans la deuxi`me, lassemblage rcursif, ou arborescent, la connaissance de


e
e
la solution pour le circuit travaillant sur N/2 bits permet de concevoir le
circuit travaillant sur N bits. Cette structure est proche de la structure
darbre binaire. Parfois les deux ralisations de la fonction sur N/2 bits
e
doivent tre compltes pour permettre de raliser la fonction sur N bits.
e
ee
e
La troisi`me mthode, gnrale, regroupe des blocs selon des r`gles de come
e
e e
e
position de fonctions quelconques.
Pour chacune de ces mthodes dassemblage nous donnons un ou quelques
e
exemples typiques. Un exemple simple, la fonction incrmentation, permet
e
ensuite de comparer direntes mthodes dans une tude de cas.
e
e
e

3.2

3.2.1

Assemblages linaires
e

Schma en tranches, schma en blocs


e
e

Reprsenter un circuit rsultant dun assemblage itratif peut se faire de


e
e
e
deux faons reprsentes gure 8.11. Cest un exemple sans signication. Un
c
e
e
circuit traite deux vecteurs de n bits a et b. Le traitement se compose de la
mise en srie de 3 fonctions. Dans la premi`re fonction, symbolise par un carr,
e
e
e
e
une entre externe X est prise en compte pour chaque bit. Dans la troisi`me
e
e
fonction, symbolise par un ovale, une information passe de bit en bit, ` la
e
a
faon dune retenue.
c
On parle de reprsentation en tranches quand on fait appara
e
tre toutes
les cellules qui participent ` la fonction globale. Lexemple rel de lUAL
a
e
(Cf. Exemple E8.10) utilise cette technique.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Algorithmique cble : conception logique


a e

ai b0 a0

b
n

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

an1

189

Add

S
additionneur
A

rn1

r0

Schma en tranches

Schma en blocs

Mux

B
1

C
multiplexeur

Fig. 8.11 Reprsentation dun circuit en tranches ou en blocs ; reprsentation convene


e
tionnelle de ladditionneur et du multiplexeur N bits

On parle de reprsentation en blocs quand on ne dessine que les fonctions


e
sur N bits. On reprsente alors par un trait gras les bus, ou nappes de ls.
e
Lexemple du circuit de calcul du quanti`me (Cf. Exemple E8.9) utilise cette
e
reprsentation.
e
3.2.2

Exemples : addition et soustraction de naturels

Exemple E8.5 : Ladditionneur N bits


La mise en cascade de N additionneurs 1 bit constitue un additionneur N bits.
Il peut eectuer laddition de deux naturels ou de deux relatifs cods sur N
e
bits. La somme de deux naturels cods en binaire pur sur N bits est sur N + 1
e
bits. Le schma du circuit est donn gure 3.3 (chapitre 3).
e
e
Exemple E8.6 : Ladditionneur/soustracteur N bits
On a vu au chapitre 3 que le calcul sur les vecteurs boolens donnant la
e
reprsentation de la somme ou de la dirence, code en binaire pur ou en
e
e
e
complment ` 2, est le mme. Puisque le circuit peut eectuer laddition ou
e
a
e
la soustraction, il dispose dun bit de commande Add/Sub. Ce l vaut 0 si
lopration voulue est une soustraction, 1 si cest une addition.
e
Le calcul de la somme A+B se fait en ajoutant A, B et 0. Le calcul de la
dirence A-B se fait en ajoutant A, le complmentaire boolen de B et 1.
e
e
e
On se sert du l Add/Sub pour slectionner loprande Q ` ajouter ` A.
e
e
a
a
Pour chaque bit, on a Qi = Add.Bi + Sub.Bi .
De mme, on fabrique le report entrant r0 , pour ajouter 0 ou 1, selon
e
lquation : r0 = (si Add/Sub alors 0 sinon 1) = Add/Sub
e
Si lopration est une addition, la retenue sortante C est le report sortant.
e
Si lopration est une soustraction, la retenue sortante C est le complmentaire
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

190

Circuits combinatoires

Bn1

A0 B0

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

An1

10

10

10

10

Add/Sub

1
0

Sn1

Sn2

S1

S0

Fig. 8.12 Additionneur-soustracteur N bits. Chaque carr est un additionneur 1 bit.


e
Tous les multiplexeurs sont commands par le mme signal.
e
e

Arbre de OUEXCLUSIFs

Arbre de ETs

Arbres mixtes

Fig. 8.13 Arbres binaires de portes

de ce report sortant. Le bit doVerow V est le XOR des deux derniers reports.
Le schma, en tranches, du circuit est donn gure 8.12.
e
e

3.3

Assemblages arborescents

Exemple E8.7 : Le XOR gnralis


e e
e
On conna la porte XOR ` 2 entres. Cette fonction est la somme modulo 2
t
a
e
si lon interpr`te les deux entres comme entiers plutt que comme boolens.
e
e
o
e
Il est possible dobtenir une somme modulo 2 de N entiers sur un bit (ou le
XOR gnralis de N boolens) en utilisant lassociativit de cette fonction. Ce
e e
e
e
e
calcul est utilis pour obtenir le bit de parit dun mot qui vaut 1 si le mot
e
e
a un nombre impair de 1. Ce genre de technique peut sappliquer pour toute
opration associative, par exemple le AND ou le OR. La gure 8.13 rappelle
e
que des arbres de NAND et de NOR peuvent remplacer les AND ou les OR.
Voir aussi lexercice E8.15.
Exemple E8.8 : Le dcodeur N bits
e
Le dcodeur est prsent paragraphe 2.1. Nous nous intressons ici ` sa
e
e
e
e
a
ralisation interne. Nous supposerons que son nombre dentres N est une
e
e
puissance de 2. Il fabrique 2N sorties boolennes sur 2N ls ` partir de N
e
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Algorithmique cble : conception logique


a e

191

e0
Dcodeur 2 vers 4
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

e1
D2

s0

e3

s1

D1

e2

s3

s3

s10

s0

Fig. 8.14 Dcodeur ` 4 entres et 16 sorties, ` partir de 2 dcodeurs ` 2 entres et 4


e
a
e
a
e
a
e
sorties et de 16 portes AND.

entres. Une seule des sorties est ` 1. Il est tr`s facile de dcrire un tel circuit
e
a
e
e
rcursivement :
e
si N vaut 1, le circuit consiste en 1 seul inverseur. Les deux sorties sont
lentre et lentre complmente.
e
e
e
e
si N est suprieur ` 1, on dispose de deux dcodeurs ` N/2 entres. Ils
e
a
e
a
e
N/2
ont chacun 2
sorties. En combinant 2 ` 2 dans des portes AND ` deux
a
a
entres les sorties des 2 dcodeurs, on obtient le dcodeur souhait.
e
e
e
e
Montrons le passage de 2 entres ` 4 par un exemple (Cf. Figure 8.14).
e a
Un dcodeur D1 ` 2 entres e3 e2 dlivre les 4 sorties s3 s2 s1 s0 .
e
a
e
e
Un dcodeur D2 ` 2 entres e1 e0 dlivre les 4 sorties s3 s2 s1 s0 .
e
a
e
e
Les quations des sorties du dcodeur ` 4 entres sont, pour p compris entre 0
e
e
a
e
et 15 :
sp = sp div 4 AND sp modulo 4
cest-`-dire :
a

s15 = s3 AND s3 s14 = s3 AND s2


jusqu` s1 = s0 AND s1 s0 = s0 AND s0
a

3.4

Assemblages gnraux
e e

Lexpression dune fonction boolenne tr`s complexe comme composition


e
e
de fonctions boolennes plus simples donne une organisation de circuits come
binatoires. Il sut de coller la structure du circuit sur la structure de la combinaison de fonctions. Cest le cas pour le circuit de calcul du quanti`me dans
e
lanne prsent en exemple.
e
e
e
Dans les cas o` une composition est connue, tout va bien. Si on ne sait pas
u
exprimer la fonction boolenne complexe, il ne reste plus que la table de vrit
e
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

192

Circuits combinatoires

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

et sa traduction vers une somme de monmes. Cest le cas pour le calcul du


o
nombre premier suivant prsent aussi.
e
e
Il y a peu de r`gles dans lobtention de lassemblage. Cest une branche de
e
lalgorithmique, sans plus. Une proprit toutefois est ` retenir : la slection,
ee
a
e
exprime dans les algorithmes par des structures choix est ralise par des
e
e e
multiplexeurs. Souvent ce choix commute avec dautres oprations et cette
e
commutation peut tre exploite pour diminuer le cot dun circuit. Cela supe
e
u
pose videmment connus les cots des multiplexeurs et autres blocs. Ceci est
e
u
illustr dans le circuit dUnit Arithmtique et Logique.
e
e
e
Exemple E8.9 : Le calcul du quanti`me dans lanne
e
e
Cet exemple a sa source dans [SFLM93]. Il a fait lobjet dune vraie ralisation
e
par un groupe dtudiants de ma
e
trise dinformatique dans le cadre dun projet
europen de dveloppement de lenseignement de la microlectronique.
e
e
e
Un circuit reoit le code binaire dune date. Cette date est compose dun
c
e
numro de jour dans le mois, cod sur 5 bits, dun numro de mois, cod sur
e
e
e
e
4 bits. Lanne est limite aux deux chires dcimaux donnant lanne dans
e
e
e
e
2
le si`cle . Chacun de ces deux chires dcimaux est cod en binaire, selon un
e
e
e
code DCB.
Le circuit dlivre le code binaire du quanti`me de la date dans lanne.
e
e
e
eme
`
Ainsi le 3 mars est le 62
jour de lanne les annes non bissextiles et le
e
e
`
63eme les annes bissextiles.
e
Concevoir ce circuit suppose de conna
tre une mthode de calcul. Ici on
e
retient la suivante qui repose sur des fonctions tr`s spciques de cette applie
e
cation :
Un premier circuit bis dlivre 1 si lanne est bissextile, 0 sinon. Il sagit de
e
e
reconna un multiple de 4, ` partir du code DCB.
tre
a
Un deuxi`me circuit > 2 dlivre 1 si le numro de mois est suprieur ` 2.
e
e
e
e
a
Un circuit Db donne sur 9 bits le code binaire du quanti`me du premier
e
e
jour du mois les annes non bissextiles, ` partir du code du mois. On fait
e
a
aisment les 9 tables de vrit correspondant ` cette fonction : 11 ; 232 ;
e
e e
a
360,. . .,12334.
Un additionneur ajoute le numro du jour, le numro du premier du mois
e
e
et 1 si lanne est bissextile et si le numro de mois est suprieur ` 2.
e
e
e
a
On remarque que plusieurs fonctions sont -boolennes car des codes binaires
e
dentres ne reprsentent pas des valeurs du domaine.
e
e

Exemple E8.10 : Lunit arithmtique et logique


e
e
Lunit arithmtique et logique que nous tudions reoit deux nappes de ls A
e
e
e
c
et B. Elle dlivre une nappe F.
e
2

Encore un syst`me informatique avec le bogue de lan 2000 !


e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Algorithmique cble : conception logique


a e

193

anne

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

8
4

mois
jour

Db

>2

bis

Fig. 8.15 Circuit de calcul du quanti`me dans lanne


e
e

Opration
e
souhaite
e
A+B
A-B
B div 2
A AND B

Opration
e
ralise
e e
A+B+0
A+B+1
B div 2 + 0 + 0
A AND B

retenue
entrante
0
1
0

entre di
e

entre ei
e

sortie fi

ai
ai

bi
bi
0
bi

si
si
si
xi

bi+1
ai

Fig. 8.16 Oprations de lUAL


e

Opration
e
A+B
A-B
B div 2
A AND B

mux 1
bi
bi

bi

mux 2
ci
ci
0
ci

mux 3
ai
ai
bi+1
ai

mux 4
si
si
si
xi

Fig. 8.17 Commandes des multiplexeurs

Les nappes peuvent tre interprtes comme des entiers ou des vecteurs de
e
ee
bits. LUAL calcule, selon 2 bits de commande com1 com0, la somme de A
et B, la dirence de A et B, le quotient de B par 2 ou, sans linterprtation
e
e
enti`re, le AND (bit ` bit) des nappes A et B.
e
a
LUAL comporte un additionneur. En aiguillant les bonnes valeurs sur les
entres ei , di et la retenue entrante de ladditionneur, on obtient les 3 rsultats
e
e
arithmtiques en sortie si de ladditionneur (Cf. Figure 8.16). En utilisant
e
la sous-fonction AND prsente dans la fonction majorit de chaque tranche
e
e
dadditionneur, on obtient la valeur xi = ei AND di . Un dernier multiplexeur
permet dobtenir fi gal soit ` xi soit ` si .
e
a
a
Les slections des multiplexeurs 1, 2, 3 et 4 de la gure 8.18 peuvent tre
e
e
obtenues aisment (Cf. Figure 8.17). Il reste ` exprimer les commandes de
e
a
chaque multiplexeur en fonction de com1 com0.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

194

Circuits combinatoires

ai

bi

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

bi+1

1
ci
2

di

Add

Add

ri+1

ei

xi

Add

Add

ri

si

fi

Fig. 8.18 UAL. Les tranches reprsentes sont la tranche de plus fort poids, une tranche
e
e
de rang intermdiaire et la tranche de poids faible. Le remplacement de
e
certains multiplexeurs par des portes est fait dans la partie droite.

Exemple E8.11 : Le calcul du nombre premier suivant


Ceci est un exemple dcole. Un circuit reoit le code binaire dun naturel A
e
c
cod sur N bits. Il dlivre le code binaire du nombre premier immdiatement
e
e
e
suprieur ` A si A est premier, 0 sinon.
e
a
On ne conna pas dalgorithme gnral donnant ce rsultat. Pour raliser
t
e e
e
e
le circuit il ne reste quune solution : pr-calculer la fonction sous forme de
e
table, la coder en binaire sous forme de table de vrit et raliser le circuit
e e
e
dapr`s les expressions boolennes.
e
e
Cela ne pose pas de probl`me pour les petites valeurs de N.
e

4.

Etude de cas

Certains circuits peuvent donner lieu ` direntes organisations car lanaa


e
lyse de leur dcomposition nest pas unique. Nous montrons ici un exemple
e
dun tel circuit. Un exemple analogue est propos en exercice E8.18.
e
Exemple E8.12 : Incrmenteur
e
Un incrmenteur est un circuit combinatoire qui incrmente le naturel prsent
e
e
e
en entre. Les entres sont une nappe de N ls xN 1 , xN 2 , . . . , x1 , x0 . Ces
e
e
bits codent en binaire un naturel X. Les sorties sont une nappe de N + 1 ls
yN , yN 1 , yN 2 , . . . , y1 , y0 . Ces bits codent en binaire un naturel Y . Le circuit

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Etude de cas

195

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

tudi doit tre tel que Y = X + 1.


e
e
e
Introduisons les produits intermdiaires Pi dnis par : P1 = 1, P0 = x0 ,
e
e
i=j
P1 = x1 .x0 , P2 = x2 .x1 .x0 , et gnralement Pj = i=0 xi .
e e
On obtient, pour tout k dans lintervalle [0, N ], yk = xk Pk1 ou, ce qui
est quivalent, yk = xk Pk1 .
e
La ralisation de lincrmenteur suppose donc la ralisation des produits
e
e
e
partiels Pi . Si N est petit (3 ou 4), il est facile de former les Pi par des portes
NAND par synth`se systmatique. Plus gnralement, examinons direntes
e
e
e e
e
solutions dans la fabrication des Pi avec des NAND et NOR. Les crit`res pris
e
en compte sont le nombre total de portes, le nombre de niveaux logiques entre
entres et sorties et le nombre de portes (ou blocs) direntes ` dessiner pour
e
e
a
pouvoir les assembler et obtenir le dessin global du circuit.
1) Utilisation de portes AND ` 2, 3, . . . , N 1 entres (partie 1 de la
a
e
gure 8.19) Le nombre de portes est de lordre de N . Le nombre de niveaux est
optimal, il est de 1. La rgularit est tr`s mauvaise, chaque porte est dirente
e
e
e
e
des autres. Une solution consiste ` dessiner une porte ` N entres et ` nen
a
a
e
a
utiliser quune partie, mais ce nest pas tr`s conomique. Les portes AND sont
e e
ralises par des NAND suivies dinverseurs. Pour N grand cette technique ne
e e
fonctionne que si lon dispose de portes ` nombre dentres quelconque. Ce
a
e
nest en gnral pas le cas.
e e
2) Utilisation de portes AND ` 2 entres (partie 2 de la gure 8.19) Coma
e
plexit : de lordre de 2N portes, de lordre de 2N niveaux de portes. Une seule
e
cellule physique ` dessiner (encadre), est rpte N fois. Malheureusement la
a
e
e ee
porte AND nest pas une primitive physique en gnral ; elle est ralise par un
e e
e e
NAND suivi dun inverseur. Cela conduit ` chercher une autre solution.
a
3) Utilisation de portes AND ` 2 entres, alternativement ralises par un
a
e
e e
NAND ou un NOR (partie 3 de la gure 8.19) Cette solution repose sur les
galits suivantes :
e
e
u (v.w) = u NAND (v, w)
t (u.v.w) = t NOR (u, NAND (v, w))

Complexit : de lordre de 2N portes, de lordre de N niveaux de portes.


e
Une seule cellule physique ` dessiner (encadre). Elle comporte deux tages.
a
e
e
Elle est rpte N/2 fois.
e ee
4) Dcomposition rcursive des produits partiels, ` base de AND ` 2 entres
e
e
a
a
e
(partie 4 de la gure 8.19) Voyons comment on passe du circuit ` 8 entres au
a
e
circuit ` 16 entres. Supposons connu le circuit qui fabrique les Pi pour i allant
a
e
de 0 ` 7 ` partir des x7 , . . . , x0 . Dupliquons ce circuit et connectons-le aux
a a
entres x15 , . . . , x8 . On obtient des produits partiels Pi . P8 = x8 , P9 = x9 .x8 ,
e
jusqu` P15 = x15 . . . . .x9 .x8 . Il sut dun ensemble de portes AND ` 2 entres
a
a
e
pour obtenir les Pi car, pour i de 8 ` 15 : Pi = Pi .P7
a
Le nombre de portes est de lordre de 2 N log2 N portes, le nombre
de niveaux est de log2 N . Chaque bloc est redessin deux fois (encadr). Dans
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

196

Circuits combinatoires

x0

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

P1

P2

P1

P0

P0

P3

P7

P1 P0

Fig. 8.19 Direntes solutions pour la ralisation de lincrmenteur. Les portes XOR
e
e
e
ne sont pas dessines dans la solution 4
e

chaque bloc, il faut dessiner le dernier tage de portes ralisant les AND avec
e
e
le dernier produit de ltage prcdent.
e
e e
Dans cette solution aussi il conviendrait de remplacer les cascades de AND
par des cascades de NAND et de NOR, alternativement. La mise au point de
cette solution est un excellent exercice.

5.

Exercices

E8.13 : De toutes les couleurs


Reprendre les codes des couleurs dans le dbut du chapitre 3. Pour les couleurs
e
codes dans les deux codes, concevoir le circuit combinatoire qui transcode dans
e
un sens, dans lautre.
E8.14 : Ralisation du XOR
e
Avec une porte s = (ab + c) et un NOR ` 2 entres, raliser la fonction XOR.
a
e
e
En se servant des schmas en transistor de la gure 7.9 du chapitre 7, compter
e
les transistors de la ralisation du XOR.
e
Essayer dautres expressions du XOR. Faire les schmas correspondants ;
e
compter les transistors, comparer.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Exercices

197

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

E8.15 : Des grandes portes avec des petites


En utilisant les r`gles de De Morgan (Cf. Chapitre 2), montrer que
e
(a + b).(c + d) = a + b + c + d

En dduire le schma dune fonction NOR ` 8 entres nutilisant que des


e
e
a
e
NAND ou NOR ` 2 entres. Penser ` une organisation arborescente.
a
e
a
De mme3 donner le schma dune fonction NAND ` 8 entres nutilisant
e
e
a
e
que des NAND et NOR ` 2 entres.
a
e
Gnralisation : donner la r`gle gnrale permettant de raliser toute fonce e
e
e e
e
tion AND, OR, NAND ou NOR ` nombre quelconque dentres en se servant de
a
e
NAND ` au plus 4 entres, de NOR ` au plus 3 entres et dinverseurs.
a
e
a
e
E8.16 : Multiplieur
Reprendre la technique de multiplication des naturels dans le chapitre 3. Etudier le circuit de multiplication. Au lieu dune itration en ligne, il faut penser
e
a
` une itration en matrice. Il est aussi possible de donner une description
e
rcursive de la solution.
e
E8.17 : Un circuit combinatoire avec un cycle
Prendre un additionneur 1 bit. Reboucler le report sortant sur le report entrant.
Se persuader que le circuit ` deux entres obtenu est un circuit combinatoire.
a
e
Indication : le report (sortant) est soit constant pour les entres 00 et 11,
e
soit gal au report entrant pour les entres 01 et 10. On peut donc le reboucler
e
e
sur le report entrant.
E8.18 : Un seul 1
Soit une nappe de N ls xN 1 , xN 2 , . . . , x1 , x0 . Ce sont les entres dun circuit
e
combinatoire C. La sortie S vaut 1 si et seulement si un seul des xi vaut 1.
Nous allons esquisser 5 solutions ` ce probl`me.
a
e
Ide 1 (fonctionne bien pour N petit) : faire la table de vrit de S, donner
e
e e
lquation de S, en dduire le circuit.
e
e
Ide 2 : concevoir un circuit C, nayant que N 1 entres et deux sorties
e
e
Z et T. Z vaut 1 si aucune des entres ne vaut 1. T vaut 1 si une seule
e
des entres vaut 1. Concevoir un circuit C qui, combin avec C donne un
e
e
circuit ayant mme comportement que C, mais N entres. Construire C
e
e
comme circuit itratif par mise en cascade de circuits C. Rsoudre le cas
e
e
particulier du premier tage.
e
Ide 3 : supposer que N est une puissance de 2. Supposer que lon sait faire
e
un circuit C ` N/2 entres. C a deux sorties Z et T. Z vaut 1 si aucune
a
e
des entres ne vaut 1. T vaut 1 si une seule des entres vaut 1. Concevoir
e
e
un circuit C qui combine les quatre sorties des deux circuits C et dlivre
e
deux sorties Z et T. Construire C comme circuit rcursif par mise en arbre
e
de circuits C. Rsoudre le cas particulier du premier tage.
e
e
3

Apr`s tre all au NOR, il faut quon pense ` faire NAND (G. Brassens)
e e
e
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

198

Circuits combinatoires

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Ide 4 : se persuader quun additionneur un bit donne le nombre de 1


e
parmi trois ls dentres. En utilisant un ensemble dadditionneurs un bits
e
concevoir un circuit qui donne le nombre de 1 parmi une nappe de ls.
Concevoir un circuit qui dtecte si ce nombre de 1 est suprieur ` un, ou
e
e
a
nul. Simplier le circuit qui calcule le nombre de 1 pour tenir compte du
fait que dans cet exercice on na pas besoin du nombre de 1, seulement de
savoir sil est suprieur ` un ou nul.
e
a
Ide 5 : concevoir un circuit qui reoit une nappe de N ls et dlivre une
e
c
e
nappe de N ls. Les deux nappes sont ordonnes (de droite ` gauche, de
e
a
haut en bas...). La notion de premier fait rfrence ` cet ordre. Les sorties
ee
a
de ce circuit soit sont toutes ` 0, soit sont toutes ` 0 sauf une, celle dont le
a
a
rang est le rang du premier 1 de la nappe dentre.
e
Utiliser deux tels circuits pour la nappe des xi , lun pour un ordre, lautre
pour lordre inverse. Si il y a un seul 1, le premier 1 dans un sens est aussi
le premier 1 dans lautre sens.
Etudier les 5 solutions du point de vue du nombre de portes, du nombre
dtages de portes pour N valant 4, 16, 64 et 256. Saider dun outil de Concepe
tion Assiste par Ordinateur.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tur
F.
bla es L
P. Lagn rd,
ogi
Sic ier J.- cie
ard , F C.
l les
, P . M Fer
et
ara na
h.
Ma
Wa ni nde
e
nch z, trie
il le
l l es
i,

Chapitre 9

Elments de mmorisation
e
e

Un ordinateur est muni de composants permettant de stocker les donnes


e
et les programmes ; nous avons parl du tableau MEM au chapitre 4 et nous
e
reparlerons de mmoire dans les chapitres ultrieurs.
e
e
Des lments de mmorisation sont aussi ncessaires pour raliser des maee
e
e
e
chines squentielles telles que nous les avons dnies au chapitre 5 (Cf. Chae
e
pitres 10, 11 et 14).
Dune faon gnrale, il sagit de savoir comment raliser la fonction dafc
e e
e
fectation des langages de haut niveau : x f(a, b, c). La mmorisation peut
e
avoir lieu chaque fois quune des variables a, b ou c est modie (comportee
ment asynchrone) ou ` des instants xs par une entre spcique ne dpendant
a
e
e
e
e
pas des autres entres (comportement synchrone). Nous avons dj` parl de
e
ea
e
ces aspects au chapitre 6 et dans ce livre nous nous limitons aux circuits
synchrones. Un cas particulier de ce type daectation est : x f(x, e) o`
u
les deux instances du nom x correspondent aux valeurs de x sur une mme
e
nappe de ls, ` des instants dirents. Ce nest pas une quation de point
a
e
e
xe. On la lit par exemple, comme dans un langage de programmation usuel,
nouveau-x f (ancien-x, e).
Dans ce chapitre nous tudions les lments de mmorisation permettant
e
ee
e
de rsoudre les probl`mes abords ci-dessus sous les deux aspects :
e
e
e
la vision externe, fonctionnelle, o` nous voyons quun processeur connect
u
e
a
` de la mmoire peut crire une information dans la mmoire ou lire une
e
e
e
information prcdemment mmorise en envoyant des signaux de come e
e
e
mande a cette mmoire. Une mmoire ne permet que les aectations de
`
e
e
type x f(a, b, c) ; on ne peut pas lire et crire ` un mme emplacement
e
a
e
dans la mmoire dun ordinateur dans le mme instant.
e
e
la vision interne, structurelle, o` nous expliquons comment de la mmoire
u
e
peut tre fabrique ` partir dlments de mmorisation de base (nous
e
e a
ee
e
partons du bistable tudi au chapitre 7). Nous montrons aussi quels
e
e
lments de mmorisation conviennent pour raliser une aectation du type
ee
e
e
x f(x, e). Ces lments sont aussi utiliss dans les dispositifs de traiteee
e
ment de linformation dont naturellement les processeurs (Cf. Chapitre 14).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

200

Elments de mmorisation
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Dans le paragraphe 1. nous prsentons les composants lmentaires utie


ee
liss pour mmoriser de linformation et pour construire des circuits
e
e
squentiels. Nous prsentons ensuite la notion de mmoire dans un ore
e
e
dinateur (paragraphe 2.) puis comment est construite une mmoire `
e
a
partir de cellules ou points mmoires lmentaires (paragraphe 3.). Le
e
ee
paragraphe 4. prsente des optimisations et des ralisations de mmoire
e
e
e
particuli`res.
e

1.

Points de mmorisation de bits : bascules


e
et registres

Dans le chapitre 7, nous avons dcrit le comportement lectrique de certains


e
e
points mmoire. Considrons une cha de 2k (k 1) inverseurs, la sortie de
e
e
ne
lun tant connecte ` lentre du suivant. Si nous rebouclons la sortie de la
e
e a
e
cha dinverseurs sur lentre, nous obtenons un circuit squentiel ` deux
ne
e
e
a
tats stables, ou bistable. Nous nous intressons au cas k = 1. Tel que (Cf. Fie
e
gure 9.1-a), le bistable ne peut que fournir sa valeur ` un autre composant,
a
il nest pas possible de le charger avec une valeur particuli`re ; il peut tre lu,
e
e
mais on ne peut y crire.
e
Nous allons tudier deux ralisations permettant de forcer une valeur en
e
e
entre du circuit. La premi`re consiste ` remplacer les inverseurs par des portes
e
e
a
NOR (ou NAND). On obtient ainsi un circuit avec deux entres de commandes,
e
appel bascule RS (voir la gure 9.1-b pour le montage). La deuxi`me consiste
e
e
a
` intercaler un multiplexeur entre les deux inverseurs ; ce montage est appel
e
verrou construit ` partir du bistable (Cf. Figure 9.4-a).
a
Par essence, les points de mmorisation sont des circuits o` lune des sorties
e
u
reboucle sur lune des entres. Cela conduit ` des quations du type x = f(x, e),
e
a
e
o` les deux occurrences de x dnotent des valeurs de x ` des instants dirents.
u
e
a
e
Pour distinguer une variable x ` un instant et la mme ` linstant suivant, nous
a
e
a
crivons x. Lquation prcdente devient : x = f(x, e) : la nouvelle valeur de
e
e
e e
x est fonction de son ancienne valeur et de e.
Comme nous lavons prcis en introduction, dans ce livre nous nous limitons
e e
aux circuits synchrones. Lorsque nous utiliserons des lments de mmorisation
ee
e
dans des assemblages complexes (Cf. Chapitres 10, 11 et 14), les valeurs des
variables seront examines ` des instants dnis par un signal en gnral
e a
e
e e
priodique appel horloge.
e
e

1.1

1.1.1

Points de mmorisation lmentaires : bascule RS,


e
ee
verrou
Bascule RS

Une bascule RS poss`de deux entres R (Reset) et S (Set) permettant de


e
e
forcer ltat respectivement ` 0 ou ` 1, et deux sorties Q1 et Q2.
e
a
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Points de mmorisation de bits : bascules et registres


e

201

Q1
Q

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

(a)

S
(b)

Q2

(c)

Fig. 9.1 a) le bistable b) la bascule RS ralise avec des portes NOR c) le symbole
e e
logique de la bascule RS

Nous allons dtailler le fonctionnement dune bascule RS ralise ` partir


e
e e a
de portes NOR (voir pour le montage la gure 9.1-b) :
Lorsque R et S sont stables ` 0, la bascule est quivalente ` un bistable. En
a
e
a
eet, NOR(x, 0) = x.
A partir de cet tat stable, le passage de R ` 1 fait passer Q1 ` 0, apr`s un
e
a
a
e
dlai de commutation de la porte NOR. Apr`s un autre dlai, Q2 passe `
e
e
e
a
1. Lorsque R repasse ` 0, alors ltat reste stable.
a
e
Par symtrie, ` partir de ltat stable, le raisonnement est le mme. Lorsque
e
a
e
e
S passe ` 1, Q2 passe ` 0 et Q1 passe ` 1, ` ceci pr`s que Q2 change avant
a
a
a a
e
Q1.
Lorsque S (respectivement R) est ` 1 et que R (respectivement S) passe `
a
a
1, les sorties Q1 et Q2 sont ` 0. Cette situation nvolue pas tant que les
a
e
deux entres restent stationnaires. Cela constitue le plus souvent une erreur
e
dinitialisation.
Remarquons que lorsque R et S ne sont pas tous deux ` 1, Q1 et Q2 sont
a
complmentaires, ce qui justie les noms habituels Q et Q.
e
La stabilisation des sorties ne peut avoir lieu exactement au mme instant
e
que le changement de lentre, ` cause du temps de commutation de chaque
e a
porte. Il existe ainsi un dlai de stabilisation de la bascule, dlai faible et born.
e
e
e
Nous ne prenons pas en compte de faon chire ce dlai mais seulement son
c
e
e
existence et notons que les valeurs en entre et en sortie sont considres `
e
ee a
des instants successifs. Plus prcisment, nous notons Q1, Q2 les valeurs de
e e
la bascule ` un instant donn et Q1, Q2 les nouvelles valeurs, ` un instant
a
e
a
immdiatement ultrieur.
e
e
La table dvolution des valeurs de la bascule est donne ci-dessous, la
e
e
premi`re ligne se lisant : si les entres S et R sont ` 0, la sortie Q1 reste ` la
e
e
a
a
valeur quelle avait prcdemment et donc Q1 = Q1. A partir de cette table,
e e
on obtient les quations donnes ` ct.
e
e a oe
Du schma de la gure 9.1-b, on tirerait les quations : Q1 = R + Q2, Q2 =
e
e
S + Q1. Do` Q1 = R + S + Q1 = R.(S + Q1) et Q2 = S + R + Q2 =
u
S.(R + Q2).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

202

R Q1
0 Q1
0
1
1
0
1
0

Q2
Q2
0
1
0

Q1

=
=
=
=
=
=

Q1.S.R + S.R
R.(Q1.S + S)
R.(Q1 + S)
Q2.S.R + S.R
S.(Q2.R + R)
S.(Q2 + R)

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

S
0
1
0
1

Elments de mmorisation
e
e

Q2

R
S

Q1

Q2

temps

Fig. 9.2 Chronogramme du comportement logique idal dune bascule RS. Les poine
tills reprsentent les instants de changement de Q1 et Q2.
e
e

e
On remarque que si R.S = 1, Q1 = Q2 ce qui justie le schma logique de
la gure 9.1-c. En revanche, dans le cas o` R et S valent 1, les sorties Q1 et
u
Q2 ne sont pas complmentaires.
e
Le chronogramme de la gure 9.2 montre le comportement temporel logique
de la bascule RS.
Avec la bascule RS ` portes NOR, la remise ` 0 est prioritaire sur la mise
a
a
a
a
` 1 : en eet, Q = R.(Q + S). Donc, si R vaut 1, la sortie Q passe ` 0. Sinon,
la sortie est conditionne ` la valeur de S : si S vaut 1, la sortie Q vaut 1 sinon
e a
0.
La bascule RS peut tre aussi ralise avec des portes NAND. Les entres
e
e e
e
de commande sont actives ` 0 (lorsque R=S=1, la nouvelle valeur est gale `
a
e
a
lancienne, si R vaut 0 et S vaut 1, Q passe ` 0, si R vaut 1 et S vaut 0, Q
a
passe ` 1) et la mise ` 1 est prioritaire sur la mise ` 0.
a
a
a
La table dvolution de la bascule et sa dnition quationnelle sont alors :
e
e
e
S

1
1
0
0

1
0
1
0

Q
0
1
1

Q
1
0
1

= R.Q.S = R.Q + S

= S.Q.R = S.Q + R

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Points de mmorisation de bits : bascules et registres


e

1.1.2

203

Verrou

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Un verrou (Cf. Figure 9.4) poss`de une entre de donne D (pour Data),
e
e
e
qui est la valeur ` mmoriser, et une entre de commande En (pour Enable).
a e
e
Lorsque lentre En est active (En=1), le verrou est dit transparent et sa sortie
e
Q est gale ` la valeur de lentre D apr`s un petit dlai appel temps de
e
a
e
e
e
e
traverse du verrou. Lorsque En est ` 0, le montage est quivalent ` un bistable.
e
a
e
a
La sortie Q est ge et sa valeur est celle de lentre D au moment du front
e
e
descendant de En. La dnition quationnelle du verrou D est : Q = En.D +
e
e
En. Q. Le chronogramme de la gure 9.3 illustre ce comportement.
Le verrou peut tre ralis de plusieurs faons, par exemple ` partir dun bise
e e
c
a
table en intercalant un multiplexeur entre les deux inverseurs (Cf. Figure 9.4a
a). Lquation dduite de la gure est : Q = En.D + En.Q. On retrouve l`
e
e
lquation du verrou en notant que Q=Q.
e
Un autre montage peut tre envisag en rebouclant directement la sortie
e
e
du multiplexeur sur son entre. En eet, la ralisation dun multiplexeur dee
e
mande lutilisation de portes, induisant ainsi un dlai de commutation lorse
quon eectue le rebouclage de la sortie sur lentre. Il est donc possible
e
de ne pas intercaler dinverseurs (en nombre pair) entre la sortie du multiplexeur et lentre. Dans la gure 9.4-d, on montre une ralisation de vere
e
rou ` partir dun multiplexeur, lui-mme ralis ` partir de portes NAND.
a
e
e e a
Remarquons que nous retrouvons cette ralisation ` partir de lquation :
e
a
e
Q = En.D + En.Q = En.D.En.Q.
Nous proposons une derni`re ralisation dun verrou ` partir dune bascule
e e
a
RS. Nous lobtenons en transformant lquation prcdente :
e
e e
Q = En.D.En.Q
= (En + D)(En + Q)
= D.En + Q.(En + D) = En.D + Q.En.D
= En.D.(Q + En.D)

En rapprochant cette quation de celle de la bascule RS ` portes NOR :


e
a
Q = R.(Q + S), avec R = En.D et S = En.D, on obtient la ralisation
e
donne dans la gure 9.4-b. Notons que, par construction, ce montage interdit
e
R = S = 1.

1.2

Points de mmorisation pour les circuits


e
squentiels : bascule ma
e
tre-esclave,
bascule sensible au front

Nous avons dit prcdemment que nous souhaitions raliser des fonctions de
e e
e
mmorisation permettant des aectations de la forme x f(x, e) en nous lie
mitant aux syst`mes synchrones o` la progression des valeurs de x est cadence
e
u
e
par un signal (gnralement priodique) appel horloge.
e e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Elments de mmorisation
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

204

En
D

temps

Fig. 9.3 Chronogramme du comportement logique dun verrou

En

10

En

(b)

(a)

En

En

(c)

(d)

Fig. 9.4 Trois ralisations dun verrou de type D et son symbole logique. a) ralisation
e
e
dun verrou ` partir dun bistable et dun multiplexeur, b) ralisation dun
a
e
verrou ` partir dune bascule RS, c) symbole logique dun verrou, d) ralisation
a
e
dun verrou ` partir dun multiplexeur seul (en gris est reprsent lintrieur
a
e
e
e
du multiplexeur).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Points de mmorisation de bits : bascules et registres


e

205

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Un verrou ne convient pas pour ce genre de ralisation car il ne permet pas


e
de commander les instants o` la mmorisation a lieu. Dans ce paragraphe, nous
u
e
prcisons pourquoi le verrou ne convient pas et nous montrons des solutions
e
pour rsoudre le probl`me.
e
e
1.2.1

Probl`me de rebouclage du verrou


e

Etudions le circuit dont lquation est x=x.e, ralis avec un verrou, dont
e
e e
lentre dactivation est connecte au signal priodique En (par exemple lhore
e
e
loge) et lentre D est relie ` la sortie dune porte NAND ` deux entres.
e
e a
a
e
Cette porte NAND a pour entre e et la sortie Q du verrou. Nous avons les
e
quations suivantes :
e
Q = En.D + En.Q

D = e.Q

Pendant que En est ` 1, si lentre e vaut 1, on a Q=D et D=Q. Si En


a
e
reste ` 1 pendant un temps suprieur au temps de traverse de la porte NAND,
a
e
e
la sortie Q et lentre D peuvent passer successivement de 1 ` 0 un nombre
e
a
indtermin de fois et donc fournir un rsultat incohrent.
e
e
e
e
Illustrons ce comportement incohrent dans un circuit rel eectuant un
e
e
calcul sur des nombres cods sur n bits. Supposons que lon veuille raliser
e
e
x x + e avec x et e entiers (Cf. Figure 9.5-a). Nous tudierons de faon
e
c
systmatique ces fonctions au chapitre 10. On veut que lhorloge H, connecte `
e
e a
lentre En des verrous, cadence les volutions de x aux instants i0 , i1 , i2 , i3 , i4 ,
e
e
. . .Notons x0 , x1 , x2 , x3 et x4 les valeurs successives de x. Les ls dentre e, eux,
e
changent nimporte quand par rapport aux instants xs par H. Dapr`s les
e
e
valeurs de e observes aux instants i1 , i2 , i3 et i4 (Cf. Figure 9.5-b), les valeurs
e
de x ` ces mmes instants sont respectivement : x1 = x0 + 1, x2 = x1 + 1,
a
e
x3 = x2 + 3 et x4 = x3 + 7.
Observons le bit de poids faible de x mmoris dans le verrou dentre D0
e
e
e
et de sortie Q0. Il change ` chaque addition puisquon ajoute des nombres
a
impairs ; donc D0 = Q0.
Si lhorloge H vaut 0, le verrou est stable, il ne se passe rien. Quand H vaut
1, le verrou est transparent et Q0 suit les variations de D0. Dans le circuit
combinatoire qui fabrique D0, D0 = Q0, et donc D0 passe alternativement de
1 ` 0 et de 0 ` 1. (Cf. Figure 9.5-c).
a
a
On ne peut pas contrler combien de fois linverseur inverse pendant que
o
H est ` 1. Ceci peut donner une valeur quelconque lorsque H repasse ` 0.
a
a
Le verrou ne peut donc pas tre ` la base de ralisation du comportement
e
a
e
x f(x, e).
Rduire la dure de ltat haut de lhorloge pour liminer le probl`me nest
e
e
e
e
e
pas raliste. La solution consiste alors ` construire une bascule, cest-`-dire un
e
a
a
dispositif pour lequel ltat transparent est limit ` un tr`s court instant au
e
ea
e
moment du front montant (ou descendant) de lhorloge.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

206

Elments de mmorisation
e
e

e
x

i1

i2

i3

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

ADD

instants xs
e
i0
par H

x
e

Q0 D0
En

x0
1

x1
1

x2
3

i4
x3

x4

(b) valeurs de x et e aux instants xs par H


e
e (impair)

ADD

Qp Dp
En
H

(a) Ralisation de laectation x x + e


e
x est reprsent sur p boolens
e
e
e
mmoriss dans p verrous
e
e

D0
Q0
transparent
1

(c) H=1 : verrou transparent

Fig. 9.5 Probl`me pos par la nature transparente dun verrou


e
e

1.2.2

Bascule de type ma
tre-esclave

Une bascule de type matre-esclave est construite en connectant en srie

e
deux verrous commands par des signaux complmentaires. Les gures 9.6
e
e
et 9.7 donnent respectivement le montage et un exemple de chronogramme.
Le premier verrou, appel ma
e
tre, mmorise lentre D lorsque En1, ceste
e
a
`-dire H, est ` 1 : la sortie Q1 suit lentre D (D1=D). Pendant ce temps, la
a
e
valeur mmorise par le second verrou reste stable, puisque En2=0. Lorsque
e
e
H prend la valeur 0, le contenu du premier verrou reste g et est transfr
e
ee
dans le second verrou qui devient actif (En2=1) et mmorise donc la valeur
e
prcdemment stocke dans le premier verrou. Ainsi, la sortie Q reste stable
e e
e
pendant que le signal H est ` 1 ou pendant que le signal H reste ` 0. La sortie
a
a
Q change lorsque le signal H passe de 1 ` 0. Le temps pendant lequel H est `
a
a
1 doit tre suprieur au temps de traverse du verrou.
e
e
e
1.2.3

Bascule D ` front
a

Une bascule D ` front a une entre de donne D, une entre dactivation H


a
e
e
e
et une sortie Q. La bascule D ` front montant (respectivement descendant) est
a
caractrise par le fait que sa sortie Q est stable entre deux fronts montants
e e
(respectivement descendants) du signal connect sur H, en gnral une horloge.
e
e e
La valeur de la sortie est celle de lentre D au moment du dernier front mone
tant (respectivement descendant) de H. Il est donc ncessaire que lentre D
e
e
soit stable pendant le front. Une bascule ` front montant (respectivement desa

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

207

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

1. Points de mmorisation de bits : bascules et registres


e

D1 Q1
En1

D2 Q2
En2

Fig. 9.6 Bascule de type ma


tre-esclave

Q1

Fig. 9.7 Chronogramme dcrivant le comportement de la bascule ma


e
tre-esclave. Avant
le premier front montant de H, Q1 est indtermin.
e
e

R1

S1

R2

S2

Q1
Q1

Q2
Q2

R3

Q3

S3

Q3

Fig. 9.8 Une ralisation de la bascule de type D ` front descendant et son symbole
e
a
logique

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

208

Elments de mmorisation
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

cendant) peut tre ralise ` partir de 3 bascules RS NAND (respectivement


e
e e a
NOR).
Nous dcrivons le comportement de la bascule ` front descendant. La
e
a
ralisation avec 3 bascules RS ` portes NOR est donne dans la gure 9.8.
e
a
e
Il y a deux niveaux de bascules :
la bascule en sortie RS3, dont les entres sont pilotes par les sorties des
e
e
bascules RS1 et RS2, et
les deux bascules RS1 et RS2, dont les entres sont pilotes par H et D.
e
e
Les quations de la bascule ` front sont :
e
a
S2
Q1
R3
S3
R1
Q3

=
=
=
=
=
=

D
S1.(Q1 + R1)
Q1
Q2
Q2
S3(Q3 + R3)

(1)
(3)
(5)
(7)
(9)
(11)

S1
R2
Q2
Q2
Q3

=
=
=
=
=

H
H + Q1
R2(Q2 + S2)
S2(Q2 + R2)
R3(Q3 + S3)

(2)
(4)
(6)
(8)
(10)

Nous allons montrer que la sortie ne change pas entre deux fronts descendants de H.
Nous faisons lhypoth`se que D reste stable pendant que H passe de 1 ` 0.
e
a
Considrons ltat initial H=1, qui prc`de le front descendant de H. En
e
e
e e
appliquant les quations, nous obtenons les rsultats partiels suivants : S1 =
e
e
1, Q1 = 0, R2 = 1, R3 =0 , Q2 = 0, S3 =0 . Donc, la bascule RS3 ne change
pas dtat et la sortie Q3 est stable.
e
Supposons qu` ltat initial, on ait en plus D=0. Il en rsulte que S2=0,
a e
e
Q2=1, R1=1. Lors du passage de H ` 0, nous obtenons S1=0 dapr`s (2).
a
e
u
Puisque R1=1 dapr`s (3), nous obtenons Q1=1. Do` R3=1 . Par ailleurs,
e
le fait que R2=1 entra Q2=0 dapr`s (4), et donc S3=0 . La sortie de la
ne
e
bascule Q3 est 0. Ensuite, tant que H reste ` 0, Q1 = 1 et R2=1. Il sensuit
a
que R3=1 et S3=0 . La sortie reste ` 0. Lorsque H repasse ` 1, Q1=0 dapr`s
a
a
e
(2) et (3), et R2=1 dapr`s (4). Donc R3 passe ` 0 et S3 reste ` 0 : la sortie
e
a
a
reste inchange.
e
Si ` ltat initial D=1, alors S2=1, Q2=0, R1=0. Nous obtenons Q1 = 0.
a e
Comme R2=0 et S2=1, Q2=1. La bascule RS3 est force ` 1. Par un raisone a
nement analogue au cas o` D=0 ` ltat initial, la sortie Q3 reste stable.
u
a e
Nous avons montr que, si lentre D reste stable pendant que H passe de
e
e
1 ` 0, la sortie Q3 reste stable jusquau front descendant suivant.
a
Le chronogramme de la gure 9.9 montre lvolution de la sortie Q de la
e
bascule ` front descendant en fonction de lentre D.
a
e
Du point de vue de la ralisation, en technologie CMOS, la bascule ` front
e
a
utilise autant de transistors quune bascule ma
tre-esclave cest-`-dire deux fois
a
plus quun verrou.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Points de mmorisation de bits : bascules et registres


e

209

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Fig. 9.9 Chronogramme dcrivant le comportement de la bascule ` front descendant


e
a

1.2.4

Un exemple de circuit utilisant des bascules ` front :


a
le dtecteur de passage
e

Le dtecteur de passage, ncessaire lorque lon veut reprer le passage dun


e
e
e
signal de 1 ` 0, est un montage squentiel qui chappe aux techniques de
a
e
e
ralisation systmatique que nous tudions au chapitre 10.
e
e
e
La gure 9.10 dcrit un dispositif permettant la dtection dun passage.
e
e
La sortie Q1 prend la valeur de lentre e aux fronts descendants de H et
e
la sortie Q2 recopie Q1 aux fronts montants de H. Q1 est stable entre deux
fronts descendants. La sortie Q2 prend ainsi la valeur de la sortie Q1 avec une
demi-priode de retard.
e
Supposons que les deux bascules soient initialement ` 0. Si lentre e passe
a
e
a
` 1, Q1 et S passent ` 1. Apr`s une demi-priode, Q2 passe ` son tour ` 1 et
a
e
e
a
a
S passe ` 0. On obtient une impulsion de S dune demi-priode apr`s chaque
a
e
e
transition de 0 ` 1 de lentre.
a
e

1.3

Autres commandes associes ` une bascule


e a

Pour certains circuits complexes, il est indispensable dintroduire une nouvelle entre dite de commande de chargement sur les bascules. Lensemble des
e
bascules a lentre dhorloge connecte ` lentre dhorloge du circuit et des
e
e a
e
groupes de bascules peuvent avoir lentre de chargement en commun.
e
En interne, le signal dhorloge est lentre dhorloge de la bascule (H) et
e
le signal de chargement (Ch) commande un multiplexeur (Cf. Figure 9.11).
Notons que dans certaines documentations lentre de chargement est appele
e
e
enable ce qui peut entra
ner une certaine confusion avec le verrou.
On peut ajouter dautres signaux, par exemple, pour linitialisation Preset
(ou Set) et Clear (ou Reset) forcent respectivement la valeur de la bascule ` 1 et
a
a
` 0. Dans le chapitre 10, on fera gurer sur les bascules les entres de commande
e
et dinitialisation. Selon la structure interne de la bascule, ces entres sont
e
considres soit ` un front (initialisation synchrone), soit d`s quelles sont
ee
a
e
actives (initialisation asynchrone).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Elments de mmorisation
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

210

Q1

Q2

H
e

Q1
Q2
S

Fig. 9.10 Dtecteur de passage de 0 ` 1


e
a

Ch

0
1

Ch

Fig. 9.11 Une ralisation dune bascule avec commande de chargement et son symbole
e
logique

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. La mmoire : organisation matricielle des points de mmorisation


e
e

1.4

211

Notion de registre

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Un verrou ` n bits permet de stocker des informations codes sur plus dun
a
e
bit. On lobtient par simple juxtaposition de verrous lmentaires commands
ee
e
par le mme signal de chargement.
e
Sur le mme principe, en utilisant des bascules D, on obtient un registre `
e
a
n bits.
La nappe des n boolens peut tre interprte comme un vecteur de bits
e
e
ee
mais aussi comme un nombre, un caract`re, etc. (Cf. Chapitre 3).
e
Dans les chapitres 11 et 14, nous verrons lutilisation de tels registres dans
la ralisation des parties opratives. Dans la suite et en particulier dans ces
e
e
chapitres, nous considrons systmatiquement des registres fabriqus ` partir
e
e
e a
de bascules ` front et le plus souvent avec une commande de chargement.
a

2.

La mmoire : organisation matricielle des


e
points de mmorisation
e

Tout ordinateur est dot de mmoires plus ou moins grandes ` acc`s plus
e
e
a
e
ou moins rapide. Ce paragraphe prsente la mmoire du point de vue externe,
e
e
celui de lutilisateur. Nous expliquons ce que sont un mot mmoire et un acc`s
e
e
mmoire, et nous donnons une ide des dirents types de mmoire.
e
e
e
e

2.1

Notion de mmoire dans un ordinateur


e

Une mmoire est lorganisation dun ensemble de points de mmorisation


e
e
lmentaires en matrice ` p lignes et n colonnes. On peut ainsi voir la mmoire
ee
a
e
comme lassemblage de n p bits. Mais on lutilise comme un tableau de p
lments de taille n auxquels on acc`de par indice. Une ligne est appele mot
ee
e
e
de la mmoire et on parle dune mmoire de p mots de n bits.
e
e
A chaque mot, cest-`-dire ` lensemble des n points de mmorisation
a
a
e
lmentaire qui le composent, est associ un l dit de slection du mot. La
ee
e
e
slection dun mot consiste ainsi ` mettre ` 1 le l de slection associ.
e
a
a
e
e
Linterface de la mmoire est compose de p ls de slection S0 , ..., Sp1 .
e
e
e
Lors dun acc`s un seul des S0 , ..., Sp1 doit valoir 1. De plus, un l permet de
e
prciser si lacc`s souhait est une lecture ou une criture. Le signal spciant
e
e
e
e
e
a
le sens de lacc`s est not l/e (r/w en version anglaise) ; sil est ` 1 il sagit
e
e
dune lecture (read) et sil est ` 0 cest une criture (write). Une telle notation
a
e
a dj` t vue au chapitre 8 pour le signal Add/Sub.
eaee
Habituellement, le mot auquel le processeur acc`de est dsign par un
e
e
e
m
numro (compris entre 0 et p 1) appel adresse. Si p = 2 , ladresse est
e
e
code sur m bits (Am1 , ..., A0 ) et un dcodeur associ ` la mmoire ralise
e
e
e a
e
e
la fonction de calcul de lunique l de slection valant 1 ; ainsi, si les m bits
e
dadresse Am1 , ..., A0 codent lentier i (0 i 2m 1), le l de slection de
e
numro i vaut 1 et tous les autres valent 0.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

212

Elments de mmorisation
e
e

Adresses

bit n-1
mot 0
mot 1

bit 0

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

S0

Cellule
Mmoire
e

Dcodeur
e

A0

Am-1

Sp1

mot 2m 1

SelMem
0
0
1
1

l/e

Opration
e

0
1
0
1

pas dacc`s
e
pas dacc`s
e
criture
e
lecture

Donnes
e

SelMem

l/e
FinAcces

Fig. 9.12 Mmoire de 2m mots de n bits et signication des signaux SelMem et l/e.
e

De plus, un acc`s ` la mmoire est matrialis par lactivation dun signal


e a
e
e
e
de slection mmoire que nous notons dans la suite SelMem.
e
e
La gure 9.12 reprsente une mmoire de 2m mots de n bits ainsi que
e
e
lopration ralise selon la valeur des signaux SelMem et l/e.
e
e e
Remarque : Dans certains processeurs, les signaux de commande de la
mmoire sont dnis de faon dirente avec, par exemple, deux signaux lec
e
e
c
e
et ecr. Lacc`s ` la mmoire en lecture est ralis par la commande : lec ET
e a
e
e e
ecr et lacc`s en criture par la commande : lec ET ecr ; lec ET ecr signie
e
e
quil ny a pas dacc`s ` la mmoire, et lec ET ecr na aucun sens (et doit tre
e a
e
e
vit).
e e

La valeur ` stocker dans la mmoire (cas dune criture) ou ` extraire de


a
e
e
a
celle-ci (cas dune lecture) est appele la donne (de taille n).
e
e
Le processeur dialogue avec la mmoire via les signaux de contrle SelMem,
e
o
FinAcces et l/e, et via le bus mmoire comprenant les adresses et les donnes.
e
e
On parle de bus dadresses et de bus de donnes.
e

2.2

Droulement dun acc`s mmoire par un processeur


e
e
e

Nous considrons ici un ordinateur compos dun processeur et dune


e
e
mmoire vive, avec les hypoth`ses simplicatrices suivantes :
e
e
1. Les adresses sont sur m bits et les donnes sur n bits. Les adresses sont
e
des adresses de mots de n bits et les acc`s mmoire sont limits aux seuls
e e
e
mots de n bits. Le cas gnral permettant lacc`s ` des sous-ensembles du
e e
e a
mot mmoire est tudi dans le chapitre 15. Lacc`s ` des sur-ensembles
e
e
e
e a
du mot mmoire, en mode rafale, est tudi dans le paragraphe 4.3 du
e
e
e
prsent chapitre.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. La mmoire : organisation matricielle des points de mmorisation


e
e

213

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

2. La taille de mmoire physique et la capacit dadressage du processeur


e
e
sont identiques. En gnral, la capacit dadressage du processeur est
e e
e
suprieure ` la taille de la mmoire physique ; une mme adresse risque
e
a
e
e
alors de correspondre ` plusieurs mots mmoire. Nous tudions cette
a
e
e
situation au chapitre 15.

Le raccordement des signaux entre processeur et mmoire est tr`s simple : le


e
e
bus de donnes est connect aux entres et sorties des donnes de la mmoire,
e
e
e
e
e
le bus dadresse aux entres de slection de mot. Le bus de donnes est bidie
e
e
rectionnel alors que le bus dadresses est monodirectionnel. Lentre l/e de la
e
mmoire est relie au signal de mme nom du processeur, et lentre dactie
e
e
e
vation de la mmoire SelMem au signal de demande dacc`s ` la mmoire du
e
e a
e
processeur AccesMem. La sortie FinAcces est relie au signal du mme nom du
e
e
processeur.
1. Lors dune criture, le processeur 1) ache sur le bus dadresses le numro
e
e
de lemplacement mmoire auquel il acc`de ; 2) ache linformation `
e
e
a
a
crire sur le bus de donnes ; 3) met ` 0 le signal l/e ; 4) met ` 1 le signal
e
e
a
AccesMem.
A lintrieur de la mmoire, le dcodeur dadresses slectionne lemplacee
e
e
e
ment correspondant, active le dispositif dcriture et dsactive la sortie
e
e
du circuit de lecture. Pour chaque bit du mot dont la nouvelle valeur
di`re de lancienne, le bistable mmoire change dtat. Le dlai maxie
e
e
e
mal de commutation dnit le temps dacc`s en criture de la mmoire.
e
e
e
e
Le signal FinAcces est alors mis. A la n de lcriture, le processeur met
e
e
a
` 0 le signal AccesMem.
2. Dans le cas dune lecture, le processeur 1) ache sur le bus dadresses le
numro de lemplacement mmoire auquel il acc`de ; 2) met ` 1 le signal
e
e
e
a
a
l/e ; 3) met ` 1 le signal AccesMem.
A lintrieur de la mmoire, le dcodeur dadresse slectionne lemplacee
e
e
e
ment correspondant, dsactive le dispositif dcriture et active la sortie du
e
e
circuit de lecture. Apr`s un certain dlai, dont la borne suprieure est le
e
e
e
temps dacc`s en lecture, la valeur lue se stabilise sur le bus de donnes.
e
e
Le signal FinAcces est alors mis. A la n de la lecture, le processeur
e
mmorise la valeur stabilise sur le bus de donnes dans un registre (ou
e
e
e
un verrou) interne et met ` 0 le signal AccesMem.
a

Entre deux cycles dacc`s mmoire, le signal AccesMem vaut 0 et les signaux
e e
dadresses, de donnes et l/e ne sont pas signicatifs.
e
Si un acc`s ` la mmoire dure un seul cycle dhorloge du processeur et si
e a
e
le temps de cycle de la mmoire est infrieur ou gal ` ce dernier, on peut
e
e
e
a
simplier le protocole de communication : la mmoire nmet pas lacquite
e
tement FinAcces pour signier explicitement la n dun acc`s. Le processeur
e
demande lacc`s, signal mis sur sa propre horloge, et la lecture ou lcriture
e
e
e
sont supposes tre eectives lors du prochain top dhorloge du processeur.
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

214

Elments de mmorisation
e
e

A1

A2

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Adresse

AccesMem

l/e

T1

T2

Fig. 9.13 Chronogrammes dcrivant lacc`s ` la mmoire. Lintervalle T1 correspond


e
e a
e
` la lecture du mot mmoire dadresse A1 ; lintervalle T2 correspond `
a
e
a
lcriture du mot mmoire dadresse A2.
e
e

La gure 9.13 montre une volution possible des dirents signaux, donnes
e
e
e
et adresses intervenant lors dun acc`s ` la mmoire par le processeur.
e a
e

2.3

Typologie de mmoires
e

On peut donner une premi`re classication de la mmoire en considrant


e
e
e
lordre dans lequel le processeur acc`de aux donnes. La plupart des mmoires
e
e
e
centrales orent un acc`s alatoire : les donnes peuvent tre lues ou crites
e
e
e
e
e
a
` nimporte quel emplacement (en anglais RAM ou Random Access Memory).
Le temps dacc`s ` une valeur est pratiquement indpendant de lemplacement
e a
e
dans lequel elle est stocke.
e
Les bandes, cartouches et cassettes magntiques sont au contraire dexcele
lents exemples de dispositifs ` acc`s squentiel (Cf. Chapitre 19). Pour accder
a
e e
e
a
` une donne situe en n de bande, il faut dabord parcourir la totalit de
e
e
e
la bande et des donnes qui prc`dent. Le temps dacc`s est proportionnel `
e
e e
e
a
lloignement de linformation sur la bande.
e
Les mmoires peuvent tre classes selon leurs fonctionnalits. Une dise
e
e
e
tinction est faite entre ROM (Read Only Memory) et RWM (Read Write Memory). Les premi`res tant accessibles en lecture seule, les secondes en lece
e
ture et criture. Dans les RWM, les donnes sont mmorises dans des points
e
e
e
e
mmoires statiques (bascules) ou dynamiques (capacits). Dans la mesure o`
e
e
u
un point mmoire dynamique peut tre ralis avec moins de transistors, pour
e
e
e e
une mme surface, une mmoire dynamique aura une plus grande capacit de
e
e
e
stockage. En revanche, elle devra tre rafra
e
chie rguli`rement.
e
e
La structure des ROM est gnralement base sur un autre principe : line e
e
formation est code dans la structure du circuit en ajoutant ou retranchant
e
des transistors (Cf. Chapitre 7). La structure tant ge, la mmoire ne peut
e
e
e
tre modie. De plus, la dconnexion lectrique du dispositif ne modie pas
e
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Ralisation des mmoires statiques


e
e

215

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

les donnes mmorises.


e
e
e
Pour des raisons historiques, le sigle RAM est utilis ` la place de RWM
ea
(Read Write Memory).

3.

Ralisation des mmoires statiques


e
e

3.1

Dcomposition de la mmoire globale


e
e
dun ordinateur en bo
tiers et barettes

Nous avons prsent la mmoire dun ordinateur comme un tableau de 2m


e
e
e
mots de n bits (Cf. Paragraphe 2.). En pratique, on cherche ` minimiser le
a
nombre de broches. On va construire la mmoire ` laide de plusieurs bo
e
a
tiers
pour obtenir la capacit voulue. On peut envisager deux stratgies :
e
e
considrer un bo
e
tier de capacit une colonne de 2m mots de 1 bit et juxe
taposer les bo
tiers. Cela donne, par bo
tier, un dcodeur ayant m entres
e
e
e
dadresse, une entre SelMem, une entre l/e et une sortie reprsentant le
e
e
bit slectionn. Le schma est analogue ` la gure 9.12, en considrant une
e
e
e
a
e
m
mmoire de 2 mots de 1 bit. En juxtaposant n bo
e
tiers, partageant les
mmes entres, on obtient une barette de capacit 2m n.
e
e
e
intgrer les mots les plus longs possibles jusqu` la taille n. Dans ce cas, nous
e
a
considrons p bo
e
tiers de 2ki mots de n bits, tels que p 2ki = 2m . Nous
i=1
obtenons ainsi une dcomposition de la mmoire en tranches horizontales.
e
e
La premi`re solution est plus souple et peut sadapter ` des processeurs
e
a
de tailles direntes (16, 32 ou 64 bits). De plus, le nombre de broches est
e
optimis : il y a m broches dadresses et n broches de donnes. Si on ajoute
e
e
m
une broche de donne, on passe dune capacit de 2 n ` une capacit de
e
e
a
e
2m (n + 1). Si on ajoute une broche dadresse, on passe dune capacit de
e
m
m+1
2 n ` 2
a
n. Toutes les mmoires de grande capacit sont organises
e
e
e
suivant ce schma. Dans la suite, on assimilera une barette de n bo
e
tiers de 1
bit ` un bo
a
tier de n bits.

3.2

3.2.1

Ralisation physique
e

Principe dune ralisation avec verrous


e

Nous donnons une ralisation interne dun bo


e
tier mmoire de 2m mots de
e
1 bit ` laide de verrous et de portes 3 tats (Cf. Figure 9.14-a). Ce bo
a
e
tier a
m + 3 entres qui sont : ladresse du mot (Am1 , ...A0 ), le bit de donne Don,
e
e
tier comporte un dcodeur qui sert `
e
a
le signal SelMem, et le signal l/e. Le bo
slectionner le bon verrou : si Am1 , ...A0 =i, moti =1. A laide du signal l/e,
e
on slectionne le sens de transfert de la donne : si ce signal est ` 1, alors la
e
e
a
valeur sur le l de donne Don est recopie dans la bascule slectionne. Si ce
e
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

216

Elments de mmorisation
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

signal est a 0, la porte 3 tats en sortie de bascule slectionne est active et


`
e
e
e
e
le contenu de la bascule est recopi sur le l de donne Don.
e
e
La ralisation de chaque bit met en jeu 2 sorties pour le dcodeur, 1 verrou,
e
e
2 portes et, 1 inverseur et une porte 3 tats.
e
3.2.2

Cellule de mmoire statique


e

La gure 9.14-b montre une autre solution : la cellule mmoire ` bistable


e
a
et forage par court-circuit.
c
Le processeur slectionne la cellule de numro i en activant le mot de ligne
e
e
(moti ), qui connecte via les deux transistors C1 et B1, les inverseurs aux coe
lonnes v et v dnissant la valeur dun bit.
En lecture (SelMem vaut 1 et l/e vaut 1), la valeur stocke dans la cellule
e
(ct gauche du bistable) et son complment (ct droit du bistable) appaoe
e
oe
raissent respectivement sur les colonnes v et v avec une dgradation des sie
gnaux logiques. Le comparateur analogique dtecte la colonne sur laquelle la
e
tension est la plus leve et donne la valeur stocke dans la cellule. Cette valeur
e e
e
est envoye en sortie (Don) de la mmoire via un amplicateur 3 tats activ
e
e
e
e
par le produit des signaux l/e et SelMem.
En criture (SelMem vaut 1 et l/e vaut 0) on impose un zro sur un des
e
e
cts du bistable en reliant une des colonnes v et v ` la masse via un des deux
oe
a
transistors B2 ou C2. Le signal de commande du transistor B2 ou C2 est le
produit du signal de slection du bo
e
tier (SelMem), du signal dcriture (l/e)
e
et du signal dentre (Don pour B2 (v) et Don pour C2 (v)).
e
La colonne v est relie ` la masse si C2 est passant, ce qui est le cas lorsque
e a
Don vaut 0. Pendant ce temps, B2 est bloqu. Si de plus moti est ` 1, le
e
a
transistor C1 est passant et le ct gauche du bistable est forc ` la masse.
oe
ea
Ceci installe un 1 du ct droit.
oe
e a
La colonne v est relie ` la masse si B2 est passant, ce qui est le cas lorsque
Don vaut 1. Si de plus moti est ` 1, le transistor B1 est passant et le ct
a
oe
droit du bistable est forc ` la masse. Ceci installe un 1 du ct gauche.
ea
oe
3.2.3

Organisation de cellules de mmoire en matrice


e

On peut qualier une mmoire en fonction de son dbit : cest le nombre de


e
e
mots auxquels on acc`de par seconde. Considrons une mmoire de 220 mots
e
e
e
(20 bits dadresse) de 1 bit organise comme nous lavons vu prcdemment.
e
e e
On peut organiser cette mmoire, par exemple, comme une matrice (Cf. Fie
gure 9.15) de 2048 (211 ) lignes de 512 (29 ) bits. La mmoire est ainsi constitue
e
e
de lignes, une ligne tant slectionne grce aux 11 bits de poids forts de
e
e
e
a
ladresse, et un tage de dcodage des informations dune colonne, la colonne
e
e
tant slectionne grce aux 9 bits de poids faibles de ladresse. Le dbit est
e
e
e
a
e
alors amlior puisque pendant le dcodage des colonnes, il est possible de
e e
e
commencer le dcodage dune nouvelle ligne.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Ralisation des mmoires statiques


e
e

217

v
(b)

v
C1

B1

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

(a)

Cellule

moti

moti

EnD
Q

A0

motj

+-

Am1

motj

EnD
Q

Slecteur
e

l/e

SelMem

l/e

Don

C2

B2

Don SelMem

Fig. 9.14 Deux ralisations de points de mmoire. a) ` partir de verrous et de portes,


e
e
a
b) ` partir de bistables (le triangle en gris est un comparateur analogique).
a

SelMem

Poids forts
A19
A9

l/e

Slecteurs
e

Poids faibles
A8
A0

Donnes
e
Fig. 9.15 Matrice de Cellules construite ` partir de bistables
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

218

Elments de mmorisation
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Nous verrons dans le paragraphe 4. quune telle organisation permet aussi


doptimiser lacc`s ` des donnes appartenant ` une mme colonne.
e a
e
a
e

4.

Optimisations et techniques particuli`res


e

Il existe divers types de ralisation des mmoires. Nous en prsentons


e
e
e
quelques-unes et ` la suite de lobservation du paragraphe 3.2.3, nous montrons
a
quelques approches permettant damliorer encore le dbit de la mmoire.
e
e
e

4.1

Multiplexage lignes/colonnes

Dans le cas dune organisation de la mmoire telle que nous lavons vue `
e
a
la gure 9.15, on peut diminuer le nombre de broches de moiti. En eet, il ne
e
sert ` rien dactiver une colonne avant que la ligne ne soit slectionne.
a
e
e
Lide est de rutiliser les broches servant ` la slection des lignes pour
e
e
a
e
raliser la slection des colonnes. Il convient alors que le nombre de ls soit le
e
e
mme et on fabrique ainsi des matrices carres de cellules.
e
e
Etant donn m/2 broches et une adresse code sur m bits (m tant pair),
e
e
e
les m/2 bits de poids forts codent une ligne et les m/2 bits de poids faibles
une colonne. Le circuit reoit les m/2 bits de poids forts, qui sont mmoriss
c
e
e
et relis au dcodeur des lignes. Puis, pendant ce dcodage, le circuit reoit les
e
e
e
c
m/2 bits de poids faibles qui sont relis au dcodeur des colonnes.
e
e
Ce circuit est ralis ` partir dune matrice de cellules, en utilisant deux
e ea
signaux supplmentaires RAS (Row Address Strobe) et CAS (Column Address
e
Strobe). La ligne (respectivement la colonne) est slectionne au front dese
e
e a
cendant de RAS, i.e. RAS (respectivement CAS). Le temps dacc`s ` une
cellule mmoire est la somme du temps de slection dune ligne et du temps
e
e
de slection dune colonne.
e

4.2

Mmoires dynamiques
e

Les mmoires dynamiques sont organises en matrices tout comme les


e
e
mmoires statiques. Dans une cellule, linformation y est code sous forme de
e
e
charge lectrique stocke dans la capacit grille-source dun transistor MOS.
e
e
e
La capacit de la cellule de mmoire dynamique se dcharge lentement et
e
e
e
linformation stocke dispara avec le temps. Pour viter cela, chaque ligne
e
t
e
est priodiquement lue et rcrite en totalit. Ce processus, connu sous le
e
ee
e
nom de rafrachissement, est eectu sur chaque ligne toutes les 2 ` 4 ms.

e
a
Dans une mmoire de 16Mbits (4096 lignes) de 50 ns de temps de cycle, le
e
rafra
chissement reprsente de lordre dun acc`s ligne par microseconde, ce qui
e
e
consomme environ 5% du dbit thorique de la mmoire. La cellule dynamique
e
e
e
ne ncessite que deux transistors et un seul signal de colonne. Cela autorise la
e
construction de mmoires de plus grande capacit.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Optimisations et techniques particuli`res


e

219

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Par ailleurs, les mmoires dynamiques sont dotes dun registre interne
e
e
de stockage de numro de ligne (adresses de poids fort), ce qui permet
e
dconomiser la moiti des broches dadresse sur le bo
e
e
tier au prix dun dispositif externe de multiplexage (commun ` tous les bo
a
tiers).
Lacc`s mmoire se droule en deux temps : le numro de ligne est ene
e
e
e
voy le premier et stock dans un verrou interne. Le temps de dcodage et
e
e
e
ltablissement de la connexion entre la ligne slectionne et les signaux de coe
e
e
lonne est mis ` prot pour transmettre la deuxi`me partie de ladresse (numro
a
e
e
de colonne) au bo
tier. Notons que dans la salve dacc`s ` direntes colonnes
e a
e
dune mme ligne, ltape de slection et de connexion de la ligne aux colonnes
e
e
e
peut tre eectue en une seule fois en dbut de salve. Cette optimisation est
e
e
e
applicable a toute suite dacc`s mmoire ` des adresses ne dirant que par les
`
e e
a
e
poids faibles, qui correspondent au numro de colonne (Cf. Paragraphe 4.3).
e
A partir de ce principe, certaines mmoires ont t conues spcialement pour
e
ee
c
e
la ralisation de cartes vido (Cf. Paragraphe 4.5).
e
e

4.3

Mode rafale

Le multiplexage ligne/colonne permet dconomiser non seulement des


e
broches mais aussi du temps : une fois lacc`s ` une ligne ralis, lacc`s `
e a
e e
e a
des colonnes dans cette ligne est rapide.
Si lintervalle dadresses auquelles on acc`de appartient ` une mme ligne,
e
a
e
on acc`de a la premi`re adresse par lintermdiaire des poids forts, puis on
e `
e
e
acc`de ` chaque colonne. Si on ralise N acc`s conscutifs ` des lments ape a
e
e
e
a
ee
partenant ` la mme ligne, le temps dacc`s total est gal ` : Temps dacc`s
a
e
e
e
a
e
ligne + Temps dacc`s colonne * N.
e
On parle dacc`s en mode rafale. Il existe de nombreuses mani`res de raliser
e
e
e
le mode rafale ; nous nen donnons ici que quelques principes. Par exemple,
pour le mode dit quartet, la mmoire est dote dun circuit interne qui compte
e
e
e
e
modulo quatre ; ` chaque impulsion de CAS, le circuit incrmente le numro
a
de colonne modulo 4 : on acc`de ` quatre informations conscutives. Le mode
e a
e
dit page permet de slectionner nimporte quelle colonne dans une ligne : une
e
page correspond ` une ligne.
a
Nous tudions lacc`s mmoire un peu plus prcisment en considrant deux
e
e e
e e
e
types dinterface entre la mmoire et le processeur : asynchrone et synchrone.
e
Dans les deux cas, nous nous intressons ` la lecture de 4 donnes de la mme
e
a
e
e
ligne. Nous ne reprsentons pas le signal de lecture/criture, il est chantillonn
e
e
e
e
en mme temps que ladresse de colonne par CAS.
e
Lorsque linterface est asynchrone RAS joue le rle de SelMem et CAS pero
met la slection des colonnes auxquelles on acc`de dans la rafale. Considrons
e
e
e
les chronogrammes de la gure 9.16. Le signal RAS reste actif durant la
slection des colonnes dune ligne.
e
Soit R-C une adresse compose dun numro de ligne R et dun numro de
e
e
e
colonne C. Soient a, b, c et d les mots dadresses R-C1, R-C2, R-C3 et R-C4.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Elments de mmorisation
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

220

adresse
mode page

c1

adresse
mode quartet

c1

c2

c3

c4

RAS
CAS

Donne
e

Fig. 9.16 Chronogrammes dcrivant lacc`s mmoire en mode rafale, pour une interface
e
e e
asynchrone

adresse
mode quartet

c1

RAS

CAS

SelMem

Donne
e

Horloge

Fig. 9.17 Chronogrammes dcrivant lacc`s mmoire en mode rafale, pour une interface
e
e e
synchrone

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Optimisations et techniques particuli`res


e

221

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

mot b

mot a

Fig. 9.18 Schma interne dune cellule de mmoire ` 2 acc`s simultans


e
e
a
e
e

En mode page, le processeur envoie le numro de ligne (R), puis celui de la


e
colonne C1, celui de la colonne C2, celui de la colonne C3 et enn celui de la
colonne C4 (C1, C2, C3 et C4 pouvant tre quelconques).
e
En mode quartet, le processeur envoie seulement le numro de la premi`re
e
e
colonne C1 apr`s celui de la ligne R. On acc`de ` des emplacements conscutifs
e
e a
e
et cest le circuit mmoire qui incrmente en interne le numro de colonne :
e
e
e
(C4 = C3 + 1, C3 = C2 + 1, C2 = C1 + 1).
Avec une interface synchrone (Cf. Figure 9.17), le processeur et la mmoire
e
sont synchroniss sur la mme horloge. Lacc`s mmoire se droule un peu
e
e
e
e
e
comme dans le mode quartet dcrit prcdemment ` quelques dirences pr`s :
e
e e
a
e
e
il y a un signal SelMem en plus de RAS ; tout est cadenc par une horloge de
e
bus H, drive de celle du processeur ; la longueur des rafales est dnie en
e e
e
initialisant un registre de commande avant utilisation.
Lors de la commande dinitialisation de la mmoire, les nombres de cycles
e
dhorloge entre RAS et CAS et entre CAS et la stabilisation des donnes sont
e
dnis en fonction du temps dacc`s de la mmoire (qui est xe), et de la
e
e
e
priode dhorloge qui peut varier avec la frquence du bus. Par exemple, ` 33
e
e
a
Mhz, la mmoire sera capable de fonctionner sans cycle dattente entre RAS,
e
CAS et la stabilisation des donnes. A 66 Mhz, on intercalera un cycle dattente
e
pour avoir le mme temps dacc`s.
e
e

4.4

Mmoires ` plusieurs acc`s


e
a
e

Le principe est daccder simultanment ` deux (ou plus dans le cas dacc`s
e
e
a
e
multiple) emplacements mmoire. On a autant de dcodeurs, de signaux l/e,
e
e
de slection de bo
e
tiers SelMem et de bus de donnes, que dacc`s. De plus,
e
e
on rajoute un comparateur pour vrier quil ny a pas dacc`s simultans au
e
e
e
mme emplacement mmoire en criture. Le schma interne dune cellule dune
e
e
e
e
telle mmoire est donn gure 9.18.
e
e
Les mmoires ` n acc`s permettent de raliser des bancs de n registres
e
a
e
e
utiliss par exemple dans la partie oprative du processeur.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

222

4.5

Elments de mmorisation
e
e

La mmoire vido
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Le processeur est connect ` de la mmoire et lensemble procese a


e
seur/mmoire est lui-mme connect ` des priphriques permettant le diae
e
e a
e
e
logue avec le monde extrieur. Lcran et le clavier dont dispose tout utilisateur
e
e
sont deux priphriques particuliers. Nous dtaillons au chapitre 16 les aspects
e
e
e
connexion et synchronisation, et au chapitre 17 les probl`mes poss par la gese
e
tion de priphriques de plus en plus labors. Nous nous intressons ici ` lun
e
e
e
e
e
a
dentre eux, posant des probl`mes de gestion mmoire : lcran graphique.
e
e
e
Limage ache par un cran graphique est construite sous la forme dune
e
e
matrice ` deux dimensions indiquant les points (ou pixels) de lcran ` allumer.
a
e
a
Chaque lment de cette matrice, stock dans une mmoire appele mmoire
ee
e
e
e
e
dcran, dnit lintensit et la couleur du pixel correspondant de lcran.
e
e
e
e
Lintrieur du tube cathodique est recouvert dune substance qui met de
e
e
la lumi`re lorsquelle est frappe par un faisceau dlectrons qui balaie la
e
e
e
surface de lcran, ligne apr`s ligne. Le contenu de la mmoire dcran est
e
e
e
e
donc transmis squentiellement au dispositif qui module lintensit du faise
e
ceau. Limage gnre est par nature fugitive et doit tre rafra
e ee
e
chie (rache)
e
e
priodiquement, cinquante ` cent fois par seconde.
e
a
La mmoire dcran est une partie de la mmoire principale ` laquelle on
e
e
e
a
acc`de en criture par le processeur pour modier limage ache, et en lecture
e
e
e
par le dispositif de rafra
chissement de lcran. Dans certains cas, cette mmoire
e
e
dcran nest accessible qu` un processeur spcialis, le processeur graphique.
e
a
e
e
En utilisant les techniques prsentes dans les paragraphes prcdents, le
e
e
e e
dbit de la mmoire resterait insusant. Il faut organiser lacc`s diremment.
e
e
e
e
Lide consiste ` transfrer un paquet de mmoire important vers le
e
a
e
e
priphrique et ` lui dlguer le travail consistant ` calculer les pixels ` ae
e
a
ee
a
a
cher ; essentiellement, il sagit de raliser des dcalages sur les donnes fournies
e
e
e
au priphrique (le paquet de mmoire transfr).
e
e
e
ee
On appelle mmoire vido une mmoire optimise au niveau temps dacc`s
e
e
e
e
e
(matrice), et pourvue dun registre interne sur lequel agit un circuit squentiel
e
permttant deectuer les dcalages ncessaires ` lachage des pixels aux inse
e
a
tants xs par les contraintes du balayage cran.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 10

Circuits squentiels
e

Un circuit squentiel poss`de, comme un circuit combinatoire (Cf. Chae


e
pitre 8), un ensemble dentres et un ensemble de sorties. Un circuit squentiel
e
e
est un circuit dont les valeurs de sortie ` linstant prsent dpendent de la
a
e
e
squence des valeurs dentre quil y a reues depuis linstant initial. Il se dise
e
c
tingue ainsi dun circuit combinatoire dans lequel les valeurs de sortie ` linsa
tant prsent dpendent seulement des valeurs dentre prsentes ` cet instant
e
e
e
e
a
(apr`s le dlai de stabilisation d ` la traverse des portes logiques). Le circuit
e
e
ua
e
squentiel poss`de une mmoire lui permettant de stocker des informations sur
e
e
e
la succession des valeurs dentre. Ces informations constituent ltat courant
e
e
du circuit squentiel ` un instant donn.
e
a
e
Un circuit squentiel comporte ainsi des lments de mmorisation
e
ee
e
(Cf. Chapitre 9) dots dune fonction permettant de xer ltat initial. La
e
e
valeur crite dans ces lments de mmorisation est fonction de celle qui y
e
ee
e
tait ` linstant prcdent : ltat suivant est une fonction de ltat courant
e
a
e e
e
e
et des valeurs dentre. Des circuits combinatoires permettent de calculer les
e
sorties du circuit et lvolution de son tat.
e
e
Ce type de circuit permet de raliser un comportement qui peut tre dcrit
e
e
e
a
` laide dun automate dtats ni (Cf. Chapitre 5) ou dun algorithme. On
e
peut parler de machine algorithmique.
Le nombre dtats, dentres et de sorties du circuit ` concevoir sont tr`s
e
e
a
e
variables suivant la complexit de lapplication. Cela dtermine le choix de la
e
e
mthode de conception. On retrouve les deux familles de solution voques au
e
e
e
chapitre 8.
Dans le cas o` lalgorithme peut tre dcrit de faon simple par un automate
u
e
e
c
dtats ni le point de dpart de la synth`se est le graphe explicite de lautomate
e
e
e
dtats ni. La mthode de conception dpend du type de lautomate, de la
e
e
e
biblioth`que de circuits combinatoires disponibles, et du type dlments de
e
ee
mmorisation utiliss ; nous nous limitons ici aux bascules de type D prsentes
e
e
e
e
au chapitre 9. On est proche ici de la synth`se logique.
e
Dans le cas plus gnral o` la construction du graphe de lautomate correse e
u
pondant ` lalgorithme est impossible pour cause de trop grande complexit,
a
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

224

Circuits squentiels
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

la conception du circuit se fait selon des procds dirents (Cf. Chapitre 11).
e e
e
On est proche ici de lalgorithmique cble. Deux grands types darchitectures
a e
(organisations matrielles) des circuits squentiels sont alors employs.
e
e
e
Dans lun, la partie qui permet de stocker les variables de lalgorithme
et de raliser les calculs sur ces variables (partie oprative) est spare de la
e
e
e e
partie commandant lencha
nement de ces oprations (partie contrle). Ces
e
o
deux parties sont des circuits squentiels.
e
Dans lautre type darchitecture, les aspects de contrle et de calcul sont
o
mlangs. Ce sont les valeurs des variables (les donnes) qui contrlent direce
e
e
o
tement lencha
nement des oprations sur celles-ci. On parle darchitecture `
e
a
ots de donnes (Data ow en anglais). Des architectures ` ots de donnes
e
a
e
sont illustres par des exemples dans ce chapitre. Le cas particulier des orgae
nisation ` pipeline est introduit.
a
La mthode de synth`se base sur une partie contrle et une partie oprative
e
e
e
o
e
est prsente en dtail au chapitre 11.
e
e
e
Ces mthodes de conception de circuits sont aujourdhui automatises grce
e
e
a
a
` des outils de CAO de circuits. La ralisation se fait ` partir des spcications
e
a
e
des algorithmes dans dirents langages. Le plus courant, VHDL (devenu
e
un standard) permet de dcrire des spcications de circuits squentiels `
e
e
e
a
dirents niveaux : graphes dautomates dtats ni et algorithmes ` base
e
e
a
dinstructions de types divers (itratif, conditionnel . . .).
e
Nous dnissons dans le paragraphe 1. la notion de circuit squentiel en
e
e
prcisant son architecture et en dcrivant son comportement temporel.
e
e
Dans le paragraphe 2. nous tudions en dtail les mthodes de ralisation
e
e
e
e
de circuits squentiels ` partir du graphe explicite dun automate dtats
e
a
e
ni (Cf. Chapitre 5). Nous dtaillons ici deux types de synth`se : cble et
e
e
a e
microprogramme. Dans le paragraphe 3. nous dcrivons deux exemples
e
e
de ralisations par ots de donnes de circuits squentiels ` partir dun
e
e
e
a
algorithme. Nous donnons aussi une ide de la notion de pipeline.
e

1.

Notion de circuit squentiel


e

1.1

Caractrisation
e

Un circuit squentiel mmorise des informations qui lui permettent de ragir


e
e
e
a
` une squence dentres. Les sorties ` un instant donn ne dpendent plus
e
e
a
e
e
seulement des entres prsentes ` cet instant, mais aussi de la squence des
e
e
a
e
entres quil y a reues depuis un instant initial. Pour dnir cet instant initial
e
c
e
le circuit comporte une entre particuli`re souvent appele init.
e
e
e
Le changement des entres peut tre pris en compte soit ` nimporte quel
e
e
a
moment (celui o` lentre change rellement), soit ` des instants dtermins
u
e
e
a
e
e
et rguliers dpendant dune entre particuli`re (horloge ou clock ). Dans le
e
e
e
e
premier cas on parle de circuits squentiels asynchrones, dans le deuxi`me de
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Notion de circuit squentiel


e

225

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

circuits squentiels synchrones. La conception de circuits asynchrones, beaue


coup plus dlicate, continue dtre aujourdhui utilise pour des applications
e
e
e
ayant des contraintes temporelles ou de consommation critiques. Pour des raisons pdagogiques, nous nous limitons dans ce livre ` la conception de circuits
e
a
de type synchrone.
Dans le cas synchrone, le circuit a besoin dune entre dnissant les inse e
tants successifs de prise en compte des valeurs des entres de donnes. Cest en
e
e
gnral un signal rgulier de priode xe. Le circuit est synchronis sur cette
e e
e
e
e
horloge : son tat volue vers un nouvel tat sur un des fronts (montant ou
e
e
e
descendant) de lhorloge.
Remarque : Dans la suite nous appelons entres les entres de donnes,
e
e
e
les autres entres sont dsignes par leur nom spcique (init et clock ).
e
e
e
e

Ltat courant de lautomate est mmoris ` laide de bascules sensibles au


e
e
ea
front (Cf. Chapitre 9) dont lentre dactivation est lhorloge. Ltat suivant
e
e
dpend de ltat courant et des entres prsentes ` linstant courant. Les sorties
e
e
e
e
a
dpendent soit de ltat courant (mod`le de Moore), soit de ltat courant et
e
e
e
e
des entres prsentes ` linstant courant (mod`le de Mealy). Les deux mod`les
e
e
a
e
e
sont prsents dans le chapitre 5.
e
e

1.2

Architecture gnrale
e e

La gure 10.1 dcrit larchitecture gnrale du circuit ralisant un automate


e
e e
e
dans le cas des deux mod`les de Moore et de Mealy. Cette architecture peut
e
tre dcompose en 3 blocs aux fonctionnalits distinctes :
e
e
e
e
Un bloc de bascules permet de mmoriser ltat courant de lautomate. Il
e
e
donne ainsi en sortie la valeur de ltat courant et prend en entre la valeur
e
e
de ltat suivant. Ces bascules sont sensibles au front de lentre particuli`re
e
e
e
clock : le passage de ltat courant au suivant est cadenc par cette entre
e
e
e
clock. Les bascules peuvent tre initialises ` une valeur donne (tat initial)
e
e a
e e
grce ` lentre init.
a a
e
Un bloc permet de calculer la fonction de sortie de lautomate. Si lautomate
est de Mealy les sorties dpendent des entres courantes et de ltat courant.
e
e
e
Si lautomate est de Moore les sorties ne dpendent que de ltat courant.
e
e
Un bloc permet de calculer la fonction de transition de lautomate : il
donne ltat suivant ` partir de ltat courant et des entres courantes.
e
a
e
e

1.3

1.3.1

Comportement temporel

Echantillonnage des entres et frquence de lhorloge


e
e

Pour que lautomate fonctionne correctement il est indispensable que


lentre des bascules soit stabilise au moment du front dactivation du sie
e
gnal clock. Si ce nest pas le cas la valeur de la sortie de ces bascules est
indtermine (Cf. Chapitre 9). Deux cas peuvent se prsenter :
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

226

Circuits squentiels
e

entres
e

entres
e

sorties

Fonction
de sortie

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Fonction
de sortie

(a)

init

Fonction
de
transition
bascules

Etat courant

bascules

Fonction
de
transition

Etat suivant

clock

sorties

(b)

init

clock

Fig. 10.1 Architecture gnrale dun circuit ralisant un automate dtats ni.
e e
e
e
a) Mod`le de Moore ; b) mod`le de Mealy.
e
e

le syst`me en amont (fournissant les entres) ne conna pas lhorloge, cest


e
e
t
le cas par exemple lorque les entres proviennent de capteurs sur un monde
e
extrieur. Nous avons vu dans le chapitre 9 comment mettre en place un
e
mcanisme simple pour obtenir un chantillonnage ` partir de lhorloge.
e
e
a
le syst`me en amont est dj` synchronis sur la mme horloge que lautoe
ea
e
e
mate. Cest le cas par exemple de composants dun mme ordinateur. Les
e
dirents composants ont en entre la mme horloge. On verra au parae
e
e
graphe 1.3.3 comment raliser la synchronisation entre deux syst`mes de ce
e
e
type.
Calcul de ltat suivant (Cf. Figure 10.2) Supposons ici que le front dace
tivation des bascules du circuit squentiel soit le front montant de lhorloge.
e
Soit t-tats le dlai ncessaire ` la stabilisation des circuits combinatoires de
e
e
e
a
calcul de ltat suivant. Nous avons vu au chapitre 8 que ce dlai nest pas nul.
e
e
Soit i-entres linstant ` partir duquel les entres sont stables.
e
a
e
Remarque : Le temps de stabilisation de la sortie des bascules nest pas
nul. On le nglige ici par rapport aux dlais de stabilisation des circuits come
e
binatoires.

Pour que lautomate puisse voluer ` chaque front montant de lhorloge,


e
a
il faut que le rsultat du calcul du nouvel tat soit stable avant le prochain
e
e
front montant de clock. Le chronogramme de la gure 10.2-a montre cette
dpendance.
e
Etudions le cas simple pour lequel on sait chantillonner les entres sur
e
e
lhorloge, cest-`-dire o` les entres changent toujours sur un front de lhorloge.
a
u
e
Dans ce cas i-entres correspond ` un des deux fronts de lhorloge. On peut
e
a
faire deux choix dchantillonnage.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Notion de circuit squentiel


e

227

Clock

Clock

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Clock

Temps

i-entres
e

t-tats
e

(a)

Temps

i-entres
e

(b)

i-entres
e

t-tats
e

Temps
(c)

t-tats
e

Fig. 10.2 Chronogrammes dchantillonnage des entres dun automate. a) Temps de


e
e
calcul ; b) chantillonnage sur front descendant ; c) chantillonnage sur front
e
e
montant.

Une premi`re ide est dchantillonner les entres sur le front descendant
e
e
e
e
de clock. Le circuit arrivant dans un nouvel tat au front montant et les entres
e
e
sur le front descendant, les sorties des circuits combinatoires calculant ltat
e
suivant ont alors une demi-priode de lhorloge pour se stabiliser. Le chronoe
gramme de la gure 10.2-b montre cette dpendance : la demi-priode de clock
e
e
doit tre suprieure ` t-tats pour que les entres des bascules soient stables
e
e
a e
e
au front montant.
Si lon regarde de plus pr`s, il sav`re que lon peut anticiper cet
e
e
chantillonnage et leectuer au mme front que le changement dtat. Au
e
e
e
mme instant ltat suivant est mmoris et les entres sont fournies. En eet
e
e
e
e
e
grce au temps de stabilisation des sorties des circuits combinatoires t-tats,
a
e
larrive des nouvelles valeurs des entres nest pas encore rpercute ` lentre
e
e
e
e a
e
des bascules au moment du chargement du nouvel tat. La priode de clock doit
e
e
tre suprieure ` t-tats. Pour une valeur de t-tats maximale donne, on peut
e
e
a e
e
e
ainsi doubler par rapport ` la premi`re solution (Figure 10.2-b) la frquence
a
e
e
maximale ` laquelle lautomate peut voluer (si on prend des niveaux haut et
a
e
bas de lhorloge de mme dure). Le chronogramme de la gure 10.2-c montre
e
e
cette volution.
e
Calcul des sorties
(Cf. Figure 10.3) Si la solution adopte est
e
lchantillonnage des entres sur le front dactivation des bascules, que lon
e
e
soit dans le cas dun automate de Moore ou de Mealy le rsultat est le mme.
e
e
Soit t-sorties le dlai de stabilisation des circuits combinatoires calculant les
e
sorties. Les signaux de sorties seront stables un temps t-sorties apr`s le front
e
dactivation des bascules (Cf. Figure 10.3-a).
En revanche, dans le cas o` lchantillonnage ne se fait pas sur le front
u e
dactivation des bascules, les sorties dun automate de Mealy auraient un comportement dirent de celui dun automate de Moore. Dans le cas de Moore,
e
les sorties ne dpendant que de ltat courant, lchantillonnage des entres ne
e
e
e
e
change en rien leur calcul.
Dans le cas du mod`le de Mealy, les sorties dpendent des entres et de
e
e
e
ltat courant. Soit i-entres linstant ` partir duquel les entres sont stables.
e
e
a
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

228

Circuits squentiels
e

Clock

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Clock

Temps

t-sorties

(a)

i-entres
e

t-sorties

Temps
(b)

Fig. 10.3 Chronogrammes des sorties dun automate. a) Cas de Moore ; b) cas de
Mealy.

Les sorties sont stables un temps t-sorties apr`s i-entres (Cf. Figure 10.3-b).
e
e
Il appara alors des valeurs transitoires sur les sorties pendant des temps non
t
ngligeables avant leur stabilisation. Ces valeurs transitoires peuvent provoquer
e
des volutions non voulues pour un syst`me aval (qui utiliserait les sorties ainsi
e
e
produites).
1.3.2

Initialisation

Nous avons vu au chapitre 9 quil existe deux sortes dinitialisation des


bascules. Linitialisation asynchrone est eectue d`s la prsence de la valeur
e e
e
dinitialisation sur le signal correspondant. Linitialisation synchrone nest effectue quau moment du front dactivation de lhorloge.
e
Si linitialisation nest pas eectue au moment du front montant de lhore
loge lautomate peut passer dans un tat indtermin si les circuits combie
e
e
natoires de calcul de ltat suivant nont pas le temps de se stabiliser entre
e
linstant dinitialisation et le prochain front montant de lhorloge. La solution
synchrone est donc utilise de prfrence.
e
ee
1.3.3

Synchronisation de deux ralisations


e

On a souvent besoin de raliser deux automates 1 et 2, les sorties de laue


tomate 1 tant connectes aux les entres de lautomate 2. Pour les raisons
e
e
e
voques prcdemment les horloges de ces deux automates ne peuvent pas
e
e
e e
tre indpendantes. Supposons que le front dactivation de lautomate 1 soit
e
e
le front montant et que ses entres soient chantillonnes sur le front montant
e
e
e
de son horloge clock1 (Cf. Figure 10.4). Supposons que le front dactivation de
lautomate 2 soit aussi le front montant. Le temps de calcul de ses sorties nest
pas ngligeable : elles sont stables un temps t-sorties1 apr`s le front dactivation
e
e
de lhorloge clock1. Le front montant de lhorloge de lautomate 2 doit avoir
lieu apr`s que ses entres (les sorties de lautomate 1) sont devenues stables et
e
e
que le calcul de son tat suivant sest stabilis (t-tats2).
e
e e
Une premi`re ide consiste ` penser que les fronts dactivation des deux
e
e
a
horloges doivent tre dcals du temps de stabilisation ncessaire.
e
e e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Notion de circuit squentiel


e

229

t-sorties1

Ar
chi
P.
te c
Am tu
F.
bla res
La
P.
gn rd, J Logi
Sic ier,
.-C ciel
ard
F.
. F les
,P
Ma ern et
h.
ran and Ma
Wa
inc
ez, tri
e
ille
hi,
ell

t-tats1
e

es

Clock1

Clock2

t-tats2
e

Fig. 10.4 Chronogrammes de synchronisation de deux automates

Une faon simple pour raliser ce dcalage est de prendre pour clock2 le
c
e
e
complment de clock1. Le dcalage est alors dune demi-priode. Pour que les
e
e
e
entres des bascules des deux automates soient toujours stables au moment du
e
front dactivation, la priode minimale P de lhorloge doit alors vrier :
e
e
P/2 > t-sorties1 + t-tats2 pour que ltat de lautomate 2 soit stable au
e
e
moment du front montant de clock2.
P > t-tats1 pour que ltat de lautomate 1 soit stable au moment du front
e
e
montant de clock1.
Dans ce cas le dcalage de lvolution de ltat des deux automates est
e
e
e
dune demi-priode de lhorloge.
e
Il sav`re que lon peut aussi prendre clock1 gale ` clock2. Les entres des
e
e
a
e
bascules restent stables si lon respecte les conditions suivantes sur la priode
e
P de lhorloge :
P > t-sorties1 + t-tats2 pour que ltat de lautomate 2 soit stable au
e
e
moment du front montant de clock.
P > t-tats1 pour que ltat de lautomate 1 soit stable au moment du front
e
e
montant de clock.
Automates en boucle Le cas particulier o` les sorties de lautomate 2 sont
u
les entres de lautomate 1 est intressant ` tudier. Ce cas de gure se prsente
e
e
ae
e
souvent et appara en particulier dans la ralisation dalgorithmes complexes
t
e
tudis au chapitre 11.
e
e
Dans le cas o` les deux automates sont de type Mealy, nous obtenons la
u
conguration de la gure 10.5. Cette architecture peut ne pas arriver dans
un tat stable puisque les entres des blocs combinatoires C1 et C2 sont des
e
e
sorties de ces mmes blocs.
e
Il faut donc que lun des deux automates soit de type Moore. Pour simplier

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

230

Circuits squentiels
e

Fonction
de sortie
C1

sorties1

entres2
e

Fonction
de sortie
C2

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

entres1
e

Fonction
de
transition

Fonction
de
transition
bascules

bascules

init

sorties2

clock

init

clock

Fig. 10.5 Cas de deux automates de Mealy en boucle

Clock

t-sorties1 t-tats2
e

t-sorties2

t-tats1
e

Fig. 10.6 Chronogramme dcrivant la synchronisation de deux automates en boucle


e

supposons que les deux soient de type Moore. Les deux automates peuvent alors
voluer ` laide de la mme horloge clock (chronogramme de la gure 10.6).
e
a
e
Nous obtenons alors les conditions suivantes sur la priode P de lhorloge :
e
P > t-sorties1 + t-tats2 pour que ltat de lautomate 2 soit stable au
e
e
moment du front montant de clock.
P > t-sorties2 + t-tats1 pour que ltat de lautomate 1 soit stable au
e
e
moment du front montant de clock.

2.

Synth`se des automates dcrits par leur


e
e
graphe

Le point de dpart de cette synth`se est le graphe explicite dun automate


e
e
dtats ni. Nous nous limitons ici aux automates de type :
e
synchrone (Cf. Chapitre 6) : les instants de changement des entres sont
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Synth`se des automates dcrits par leur graphe


e
e

231

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
icie
J.ard , F C.
lles
, P . M Fer
ara na et M
h.
Wa ni nde at
ri
e
z,
ille nch
elle
i,
s

connus et synchroniss avec lvolution de lautomate, le signal dhorloge


e
e
permettant deectuer cette synchronisation. Lutilisation de ce type dautomate est largement rpandue. La synth`se en est plus simple et donc dun
e
e
intrt pdagogique important.
ee e
ractif et dterministe (Cf. Chapitre 5) : dun point de vue matriel, il est
e
e
e
obligatoire que le circuit rsultant volue toujours en fonction de ses entres
e
e
e
vers un nouvel tat dtermin et unique.
e
e
e
En ce qui concerne le choix du type de lautomate Moore ou Mealy, il ny a
pas de r`gle prcise. On peut toujours dcrire un automate de Moore quivalent
e
e
e
e
a
` un automate de Mealy (Cf. Paragraphe 1.1.4, Chapitre 5). Suivant le syst`me
e
a e
` spcier une des deux formes peut tre plus complexe que lautre en nombre
e
dtats et de transitions. Cependant pour des raisons de comportement teme
porel dans le cas de synchronisation dautomates (Cf. Paragraphe 1.3), le type
Moore est en gnral plus utilis.
e e
e
Nous dtaillons dans ce paragraphe la synth`se de deux types darchitece
e
ture. La premi`re est dite cble car la ralisation des fonctions de sorties
e
a e
e
et de transition est faite ` laide de circuits combinatoires. On va cbler les
a
a
portes logiques correspondantes. La ralisation de ces fonctions boolennes est
e
e
eectue suivant les techniques de synth`se de circuits combinatoires tudies
e
e
e
e
au chapitre 8.
Nous donnons ensuite les principes de ralisation dun deuxi`me type dare
e
chitecture dite microprogramme. Dans ce type de synth`se les fonctions de
e
e
sortie et de transition sont en grande partie ralises ` laide dune mmoire
e e a
e
morte (rom). Ce type de ralisation sinspire des principes de programmation
e
en langage dassemblage (Cf. Chapitre 12).

2.1

Ralisation cble
e
a e

Les direntes tapes de ce type de synth`se sont expliques et illustres


e
e
e
e
e
sur un exemple simple.
2.1.1

Un exemple : une commande de feu tricolore

On veut raliser une commande dun feu tricolore ` plaque. Les informations
e
a
dentres sont : voiture-prsente (vp), voiture-absente (va). La sortie est la
e
e
couleur du feu : Vert (V), Orange(O) ou Rouge (R).
Le comportement du syst`me est le suivant (automate de Moore de la
e
gure 10.7). Au dpart le feu est rouge. Si le feu est rouge : si une voiture est
e
prsente, le feu passe au vert sinon le feu reste rouge. Si le feu est orange le
e
feu passe au rouge. Si le feu est vert : si une voiture est prsente, le feu reste
e
au vert ; si une voiture est absente deux fois de suite, le feu passe au orange.
Remarque : Le terme deux fois de suite implique que le temps est dcoup
e
e
en intervalles rguliers. Nous retrouvons ici les entres dun automate syne
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

232

Circuits squentiels
e

va

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Un

va

vp

vp

Quatre

Deux

vp

vp

va

V
Trois

va

Fig. 10.7 Automate dcrivant un syst`me de commande de feu tricolore


e
e

Vocabulaire
va
vp
(a)

e
0
1

Vocabulaire
R
O
V
(b)

s1
0
0
1

s2
0
1
0

Etat
Un
Deux
Trois
(c) Quatre

q1
0
0
1
1

q2
0
1
0
1

Fig. 10.8 Codage des entres, des sorties et des tats du syst`me de commande de feu
e
e
e
tricolore.

chrone chantillonnes sur une horloge qui dcoupe le temps de faon rguli`re.
e
e
e
c
e
e
deux fois de suite signie alors pendant deux priodes dhorloge successives.
e

2.1.2

Choix de llment de mmorisation


ee
e

Pour pouvoir mmoriser ltat courant de lautomate nous avons ` notre


e
e
a
disposition les lments de mmorisation lmentaires prsents au chapitre 9.
ee
e
ee
e
e
Nous ne pouvons pas utiliser de verrous puisque la valeur de ltat suivant
e
dpend de ltat courant. Nous utilisons donc des bascules de type D sensibles
e
e
au front. Elles comportent un signal dactivation qui force le changement dtat
e
et un signal dinitialisation (soit ` 1, soit ` 0 suivant le codage de ltat initial).
a
a
e
Ce signal dinitialisation est de type synchrone.
2.1.3

Codage des entres et des sorties


e

Les lments des vocabulaires dentre et de sortie sont cods en binaire. Les
ee
e
e
codes inutiliss dans ce codage correspondent ` des cas de valeur phi-boolenne
e
a
e
dans les fonctions de transition et de sortie.
Reprenons lexemple. Le vocabulaire dentre {va, vp} est cod ` laide
e
e a
dune variable boolenne e (Figure 10.8-a). Le vocabulaire de sortie {R, O, V}
e
est cod ` laide de deux variables boolennes s1 et s2 (Figure 10.8-b). Le code
ea
e
s1 = s2 = 1 ne correspond ` aucune sortie.
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Synth`se des automates dcrits par leur graphe


e
e

2.1.4

233

Codage des tats


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Ltat tant mmoris dans des bascules, une bascule stockant une infore
e
e
e
mation binaire, les direntes valeurs de ltat doivent tre codes en binaire.
e
e
e
e
Les variables boolennes correspondant ` ce codage sont appeles variables
e
a
e
dtats. Dirents types de codage peuvent tre utiliss (Cf. Chapitre 3). Soit
e
e
e
e
n le nombre dtats, le nombre minimum de bits permettant de raliser le coe
e
dage est log2 (n). Un tel codage est appel compact. Il permet une ralisation
e
e
avec un nombre minimum de points de mmorisation. Un autre type de coe
dage souvent utilis est le codage un parmi n. Ce type de codage entra
e
ne
un nombre maximum de points de mmorisation mais llaboration du circuit
e
e
ralisant lautomate peut se faire dune mani`re spcique que nous prcisons
e
e
e
e
dans le paragraphe 2.1.6.
Lautomate de la gure 10.7 comporte 4 tats. La gure 10.8-c donne un
e
exemple de codage compact des tats de cet automate ` laide de deux variables
e
a
dtats q1 , q2 .
e
Le choix du code q1 = 0, q2 = 0 pour ltat initial implique que linitialisae
tion des bascules ` laide du signal init est une initialisation ` zro.
a
a e
On peut choisir un autre code pour ltat initial. Dans ce cas les bascules
e
doivent comporter les deux types dinitialisation (` 0 et ` 1).
a
a
Il est a noter que les fonctions boolennes de sortie et de transition
`
e
dpendent de ces codages et que le choix du codage inuence fortement les
e
caractristiques du circuit (par exemple sa complexit en nombre de portes)
e
e
et donc ses performances. Les outils de CAO ralisant cette synth`se prennent
e
e
en compte ces crit`res lors du choix de ces codes.
e
2.1.5

Expression algbrique des fonctions de transition et de sortie


e

Larchitecture gnrale du circuit (pour un automate de Moore) est donne


e e
e
dans la gure 10.9. Soient (d1 , d2 , . . . dn ) les variables codant ltat suivant,
e
(q1 , q2 , . . . qn ) les variables codant ltat ` linstant courant, (s1 , s2 , . . . sm ) les
e
a
variables codant les sorties et (e1 , e2 , . . . et ) les variables codant les entres.
e
Le bloc mmorisant ltat courant de lautomate est compos de n bascules
e
e
e
D sensibles au front de lhorloge clock. Chacune a sur son entre D un signal
e
di et sa sortie Q donne un signal qi .
Le circuit combinatoire calculant la fonction de sortie ralise les fonce
tions boolennes dnissant la valeur des si . Dans le cas dun automate
e
e
de Moore, si est une fonction boolenne des variables de ltat courant :
e
e
si = fi (q1 , q2 , . . . qn ). Dans le cas dun automate de Mealy nous avons :
si = fi (q1 , q2 , . . . qn , e1 , e2 , . . . et ).
Le circuit combinatoire calculant ltat suivant ralise les fonctions
e
e
boolennes : di = gi (q1 , q2 , . . . qn , e1 , e2 , . . . et ).
e
La fonction de transition de lautomate de la gure 10.7 peut tre dcrite
e
e
sous forme de table. En utilisant les codes choisis prcdemment, cette table
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

234

Circuits squentiels
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Circuit combinatoire calculant les sorties


m
s1 ...sm
Circuit combinatoire calculant ltat suivant
e
e1 ...et
t

QD

...

q1 ...qn

d1 ...dn

Mmorisation de ltat courant


e
e

init

clock

Fig. 10.9 La structure dun circuit ralisant un automate de faon cble


e
c
a e

donne les valeurs des variables codant ltat suivant (d1 , d2 ) en fonction des
e
variables codant ltat courant (q1 , q2 ) et de lentre (e). Ce tableau correspond
e
e
a
` la table de vrit des deux fonctions boolennes d1 , d2 . La gure 10.10 donne
e e
e
ces tables ainsi que celles correspondant aux sorties. La gure 10.11 dcrit le
e
circuit rsultant ralis ` base de portes NAND et dinverseurs.
e
e ea
2.1.6

Cas particulier du codage des tats un parmi n


e

Ce codage consiste ` coder n tats sur n bits en reprsentant chaque tat par
a
e
e
e
un bit ; le code dun tat comporte alors un seul bit (parmi n) ` 1. On peut
e
a
procder de la mme faon que prcdemment. Les fonctions de lautomate
e
e
c
e e
comportent alors beaucoup de phi-boolens puisquil y a un nombre important
e
de codes inutiliss pour les tats.
e
e
Toutefois on peut obtenir plus simplement une solution quivalente (et
e
simplie) du circuit en se calquant directement sur le graphe de lautomate.
e
La gure 10.13 montre la ralisation du circuit de commande de feu tricolore.
e
Par exemple, la bascule 1, codant ltat 1, est charge avec la valeur 1 si ltat
e
e
e
courant est 1 et lentre e ou si ltat courant est 4. De faon plus gnrale,
e
e
c
e e
pour raliser le circuit on applique les r`gles suivantes :
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

235

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

2. Synth`se des automates dcrits par leur graphe


e
e

entre
e
va
vp
va
vp
va
vp
va
vp

tat courant
e
Un
Un
Deux
Deux
Trois
Trois
Quatre
Quatre

tat
e
Un
Deux
Trois
Quatre

e
0
1
0
1
0
1
0
1

tat suivant
e
Un
Deux
Trois
Deux
Quatre
Deux
Un
Un

q1
0
0
1
1

sortie
R
V
V
O

q2
0
1
0
1

q1
0
0
0
0
1
1
1
1

q2
0
0
1
1
0
0
1
1

s1
0
1
1
0

d1
0
0
1
0
1
0
0
0

d2
0
1
0
1
1
1
0
0

s2
0
0
0
1

Fig. 10.10 Tables de dnition des fonctions de transition et de sortie de lautomate


e
de commande de feu tricolore
e

s2

s1

Fonctions de sortie
d1

d2

DQ

q1

DQ

clock

q2

init

Fonctions de transition

Fig. 10.11 Synth`se de lautomate de la gure 10.7 ` base de portes NAND et


e
a
de bascules D. Les expressions boolennes correspondantes sont : d1 =
e
q1 .q2 . + q1 .q2 .e et d2 = q1 .e + q1 .q2 ; s1 = q1 .q2 + q1 .q2 et s2 = q1 .q2 .

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

236

Circuits squentiels
e

q1
1
0
0
0

q2
0
1
0
0

q3
0
0
1
0

q4
0
0
0
1

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Etat
Un
Deux
Trois
Quatre

Fig. 10.12 Codage 1 parmi n des tats du syst`me de commande de feu tricolore
e
e

On associe ` chaque tat un point de mmorisation (bascule D ` front).


a
e
e
a
Un arc sortant de ltat X portant lentre E est ralis par une porte ET
e
e
e e
dont les entres sont la sortie de la bascule correspondant ` ltat X et
e
a e
lentre E. Si un arc sort de ltat X pour toute entre du vocabulaire, cette
e
e
e
porte E est inutile (comme larc de ltat 4 ` ltat 1 dans lexemple).
e
a e
Pour un ensemble darcs entrants dans un tat Y les direntes sorties des
e
e
portes ET correspondantes sont mises en entre dune porte OU dont la
e
sortie est relie ` lentre de la bascule correspondant ` ltat Y. Dans le
e a
e
a e
cas o` il ny a quun seul arc entrant dans un tat, cette porte OU est
u
e
inutile (comme ` lentre de ltat 3 ou 4).
a
e
e
On ralise chaque sortie par une porte OU qui a comme entres les sorties
e
e
des bascules correspondant aux tats o` la sortie vaut 1.
e
u
Linitialisation seectue en initialisant ` 1 la bascule correspondant ` ltat
a
a e
initial et ` 0 les autres bascules.
a
Au cas par cas une combinaison de portes ET-OU peut tre remplace par
e
e
une combinaison NAND-NAND.
Pour lexemple du feu tricolore, nous choisissons de coder ltat ` laide des
e
a
4 variables q1 , q2 , q3 , q4 (Figure 10.12). Le codage des entres et des sorties
e
reste inchang. La gure 10.13 montre lautomate et le circuit rsultant. Sur
e
e
la gure la commande dinitalisation nest pas reprsente : la commande init
e
e
initalise la bascule de numro 1 ` 1 et les autres ` 0.
e
a
a

2.2

Ralisation microprogramme
e
e

Dans ce type de synth`se les fonctions de transition et de sortie sont


e
ralises ` laide dune mmoire de type ROM. Chaque adresse de cette
e e a
e
mmoire est le code dun tat de lautomate.
e
e
On parle de microprogrammation car on peut utiliser un langage de description textuel du contenu de la ROM comme on le ferait avec le langage
dassemblage pour du langage machine. Chaque ligne de la mmoire correse
pond ` une micro-instruction du microprogramme.
a
Ce type de synth`se a beaucoup t utilis pour la ralisation de gros autoe
ee
e
e
mates demandant une mise au point importante. Elle permet en eet de modier lautomate par simple reprogrammation dune eprom (Cf. Chapitre 9).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Synth`se des automates dcrits par leur graphe


e
e

237

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

D
Q1




s1

#
"







#
"

s1




3



s1

s2

s2

%
$

%
$

Fig. 10.13 Un circuit ralisant un automate avec un codage un parmi n des tats
e
e

Elle a t en particulier employe pour la conception de la partie contrle de


ee
e
o
certains processeurs cisc comme le 68000. En eet, la partie contrle dun tel
o
processeur est un automate de plusieurs centaines dtats et de sorties. Elle
e
est aussi utilise dans des circuits de type automate programmable.
e
2.2.1

Architecture gnrale dune ralisation microprogramme


e e
e
e

Cette technique sapplique ` la synth`se dautomates de type Moore. Lara


e
chitecture gnrale du circuit est donne dans la gure 10.14.
e e
e
Contraintes sur lautomate Pour des raisons lies ` larchitecture utie a
lise, des transformations prliminaires de lautomate peuvent tre ncessaires :
e
e
e
e
chaque tat doit possder au plus deux successeurs. On a vu au paragraphe 2.4
e
e
du chapitre 5 comment eectuer une telle transformation. Il est ` remarquer
a
que lajout dtats supplmentaires, sil ne change pas le comportement de
e
e
lautomate dun point de vue fonctionnel, change son comportement temporel.
Les codes des tats sont choisis de faon ` ce que :
e
c a
quand un tat x ne poss`de quun tat successeur, le code de celui-ci est
e
e
e
soit le code de x plus 1, soit un autre code choisi an de limiter le nombre
de codes.
quand un tat x poss`de 2 successeurs, le code de lun des 2 est le code de x
e
e
plus 1. Lautre est choisi de mani`re ` minimiser le nombre de codes. Il se
e a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

238

Circuits squentiels
e

sorties[q]

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

succ [q]

Bascules

q+1

tat-suivant
e

+1

ROM

clock init

Fonction f de
calcul de condition

cond [q] (types de condition)

entres
e

Fig. 10.14 Architecture dune ralisation microprogramme dun automate


e
e

peut que cela ne soit pas possible, on ajoute alors un tat supplmentaire
e
e
an dobtenir cette conguration.

Calcul de ltat suivant Le code de ltat courant est mmoris dans des
e
e
e
e
bascules et fournit une adresse de la mmoire.
e
Les primitives de calcul de ltat suivant sont de deux types : une
e
incrmentation (circuit +1 sur la gure 10.14) ; la donne dans la mmoire
e
e
e
du code de ltat suivant, lacc`s ` ce code se faisant ` laide du code de ltat
e
e a
a
e
courant (adresse dune ligne de la mmoire).
e
Le fait que chaque tat ait au maximum deux tats successeurs permet de
e
e
limiter la largeur de la mmoire. Quand le code de ltat suivant nest pas le
e
e
code de ltat courant plus 1, son code se trouve dans la mmoire.
e
e
Par ailleurs, il faut pouvoir spcier quelle est la condition permettant de
e
choisir ltat successeur (dpendant des entres de lautomate) quand il y en
e
e
e
a deux. Cette condition est aussi spcie dans la mmoire et correspond `
e e
e
a
certaines sorties de celle-ci. On parle de champ condition.
Soit q le code dun tat, soit succ[q] le code de ltat successeur (qui nest
e
e
pas q + 1) contenu dans la mmoire, soit cond[q] la condition ` tester pour
e
a
choisir ltat successeur suivant les entres de lautomate. Larchitecture mie
e
croprogramme comporte les circuits permettant de dnir le code de ltat
e
e
e
suivant comme suit :
tat-suivant(q)= si f (cond[q], entres) alors succ[q] sinon q+1.
e
e
Les codes sont choisis de faon ` ce que :
c a
quand un tat de code q ne poss`de quun tat successeur, cond [q] spcie
e
e
e
e
soit la condition toujours vraie et tat-suivant(q) = succ[q], soit toujours
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Synth`se des automates dcrits par leur graphe


e
e

239

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

fausse et tat-suivant(q) = q + 1, quelles que soient les entres de lautomate.


e
e
quand un tat q poss`de 2 successeurs, pour traiter les conditions dentres
e
e
e
se trouvant sur les transitions de lautomate, un circuit combinatoire dlivre
e
la valeur de la fonction boolenne f calculant la condition ` tester spcie
e
a
e e
dans la mmoire cond[q] ` partir des entres de lautomate. La slection
e
a
e
e
selon cette condition entre la sortie de lincrmenteur et de la mmoire
e
e
pourra se faire naturellement ` partir dun multiplexeur 2 voies vers 1.
a
Le calcul de ltat suivant est donc ralis ` laide dune partie de la
e
e e a
mmoire, dun incrmenteur et dautres circuits combinatoires pour le calcul
e
e
de la condition (en gris sur la gure 10.14).

Calcul des sorties Apr`s avoir procd comme prcdemment au codage


e
e e
e e
des sorties, pour chaque tat, la valeur de chaque sortie est mmorise une fois
e
e
e
pour toute dans la ligne de la mmoire correspondant ` ltat (not sorties[q]
e
a e
e
sur la gure 10.14).

Optimisations On a limit ici le nombre dtats successeurs ` 2 pour ne pas


e
e
a
augmenter la largeur de la mmoire. Des techniques ont t dveloppes pour
e
ee e
e
dnir plusieurs tats dans la mmoire sans trop en augmenter la largeur. Elles
e
e
e
consistent par exemple ` ne donner dans la mmoire que les bits qui changent
a
e
pour les adresses successives ` partir dune adresse de base. Ainsi par exemple 2
a
bits supplmentaires peuvent sure pour rsoudre les cas o` un tat poss`de 4
e
e
u
e
e
successeurs. Dautres techniques sont aussi souvent employes pour minimiser
e
la largeur de la mmoire dpendant des sorties. Par exemple, on peut utiliser
e
e
le champ contenant ltat successeur pour certaines sorties quand celui-ci nest
e
pas ncessaire.
e
On peut aussi remarquer que dans le cas tr`s particulier de lexemple de
e
la commande de feu tricolore, repris ci-dessous, la colonne la plus ` gauche
a
pourrait tre supprime puisquelle ne comporte que des 0.
e
e

Microprogrammation Pour spcier le contenu de la mmoire et permettre


e
e
une mise au point aise, les concepteurs dnissent un langage particulier
e
e
dont la syntaxe ressemble ` celle dun langage dassemblage (Cf. Chapitre 12).
a
Chaque ligne de la ROM est une micro-instruction du microprogramme. On
retrouve ainsi des micro-instructions de branchement conditionnel pour les
cas o` un tat poss`de deux successeurs. Les micro-instructions permettent
u
e
e
aussi de spcier des valeurs spciques pour les sorties. Elles peuvent alors
e
e
faire rfrence, au niveau de la syntaxe, ` des entits extrieures ` lautomate,
ee
a
e
e
a
comme par exemple des registres ou une UAL dans le cas dune partie contrle
o
dun processeur (Cf. Chapitres 11 et 14).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

240

Circuits squentiels
e

s1

s2

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

+1

1 0

DQ

0
1

0
1

DQ

Fig. 10.15 Architecture dune ralisation microprogramme de lexemple du feu tricoe


e
lore
et1 :
et2 :

bne
be
be
ba

et1
et2,
et2,
et1,

s1
s1
s2

tat
e
1
2
3
4

code
00
01
10
11

succ
00
01
01
00

tat + 1
e
01
10
11
00

cond
e
e
e
-

code
0
1
1
-

Fig. 10.16 Microprogramme de lexemple du feu tricolore

2.2.2

Exemple de la commande de feu tricolore

Chaque tat poss`de au plus deux tats successeurs. Le codage compact


e
e
e
choisi prcdemment vrie la condition sur le code des tats successeurs (q+1
e e
e
e
e
ou succ[q]). Les direntes conditions ` tester sont : e dans ltat Un ; e dans
e
a
les tats Deux et Trois ; VRAI dans ltat Quatre.
e
e
En utilisant un incrmenteur modulo 4 cette derni`re condition est inutile.
e
e
Un seul bit c sut donc pour spcier dans la ROM quelle est la condition `
e
a
tester. Nous choisissons c = 1 pour la condition e et c = 0 pour la condition e.
Pour les sorties, on choisit le mme codage que prcdemment. La ROM
e
e e
poss`de 4 lignes. Deux bits de la ROM sont donc utiliss pour les sorties, un
e
e
pour le calcul de la condition, deux pour le codage de ltat suivant. La fonction
e
f permettant de calculer la condition dterminant le choix de ltat suivant est
e
e
ralise ` laide dun multiplexeur 2 voies vers 1 (Cf. Figure 10.15).
e e a
Linitialisation se fait ` laide du signal init qui initialise les bascules ` 0
a
a
puisque le code de ltat initial est 00.
e
Le contenu de la mmoire dans le cas du feu tricolore pourrait tre dcrit
e
e
e
par le microprogramme suivant de la gure 10.16.
ba et1 est une micro-instruction de branchement inconditionnel ` une
a
tiquette et1. bne et be sont les micro-instructions de branchement sur les
e
a
e
e e
conditions e et e. Seules les sorties ` 1 dans un tat sont spcies dans la
micro-instruction correspondante.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Synth`se des circuits squentiels par ots de donnes


e
e
e

Un exemple dtaill : la machine ` caf


e
e
a
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

2.3

241

Nous reprenons lexemple de la machine ` caf prsent dans le chapitre 5.


a
e e
e
La gure 10.17 rappelle son graphe de Moore. Nous tudions le codage des
e
entres/sorties du contrleur et la synth`se dun circuit squentiel dapr`s la
e
o
e
e
e
machine squentielle qui dcrit son comportement.
e
e
Exemple E10.1 : Machine ` caf (suite de E5.2, p 114 et E6.3, p 141)
a
e
Nous supposons ici que les entres s1 , s2 et s5 venant des capteurs et que
e
lentre fs venant de la machine ` caf sont synchronises sur le front dune
e
a
e
e
horloge clock. Nous allons tudier comment laborer une ralisation cble de
e
e
e
a e
cet automate.
Le vocabulaire dentre de lautomate est {rien, s1 , s2 , s5 , fs }. rien signie :
e
toutes les autres entres sont fausses. Les combinaisons sur les 4 entres s1 ,
e
e
s2 , s5 et fs ntant pas toutes possibles, 3 bits susent pour les coder. Les
e
codages choisis sont donns dans la gure 10.18. Les 3 codes sur e1 , e2 , e3 non
e
utiliss correspondent ` des cas qui ne peuvent survenir.
e
a
Dautre part, vues les spcications de lautomate, certaines de ces combie
naisons ne peuvent pas survenir dans certains tats. Ainsi on ne peut avoir ni
e
s1 , ni s2 , ni s5 dans les tats 2F reu et Trop peru. On ne peut avoir fs dans
e
c
c
les autres tats. La fonction de transition est phi-boolenne.
e
e
Nous procdons de mme pour les sorties. Le vocabulaire de sorties de
e
e
lautomate tant { CB, RCB, AUCUNE}, trois cas sont possibles. Les sorties
e
sont codes sur 2 bits (Cf. Figure 10.18).
e
Il y a 4 tats que nous codons sur deux bits q1 et q2 (Cf. Figure 10.18).
e
Ltat est mmoris dans des bascules D sensibles au front montant de
e
e
e
lhorloge clock. La gure 10.19 donne la table de vrit des deux fonctions de
e e
transition d1 et d2 . La derni`re ligne rsume tous les autres cas pour lesquels
e
e
les deux fonctions sont ` .
a
Si lon eectue une minimisation de la forme polynmiale (Cf. Chapitre 2),
o
on obtient les expressions : d1 = e2 .q1 .q2 +e1 .e2 .q1 +e3 et d2 = e1 .q2 +e1 .e2 .q2 +e3 .
Pour les sorties on trouve : sortie1 = q1 .q2 et sortie2 = q1 .
De ces quations on peut aisment dduire la ralisation de cet automate
e
e
e
e
en utilisant 2 bascules D et des portes ou un PLA (Cf. Chapitre 8).

3.

Synth`se des circuits squentiels par ots


e
e
de donnes
e

Dans le cas o` la spcication du syst`me ` raliser est donne sous forme


u
e
e
a e
e
dalgorithme manipulant des variables, la modlisation sous forme de graphe
e
dtats ni devient rapidement impossible. En eet le nombre dtats peut
e
e
devenir tr`s grand. Il est proportionnel au nombre de valeurs possibles des
e
variables de lalgorithme.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

242

Circuits squentiels
e

rien

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

AUCUNE
Attente
Pi`ces
e

s5

s2

fs

rien

fs

Trop
peru
c

R,C,B

rien

2F reus
c

C,B

s1

s2

s1

s5

1F reu
c

rien

AUCUNE

Fig. 10.17 Graphe de Moore de lautomate de la machine ` caf


a
e
s1
0
1
0
0
0

Vocabulaire de sorties
AUCUNE
R,C,B
C,B

s2
0
0
1
0
0

sortie1
0
1
0

s5
0
0
0
1
0

fs
0
0
0
0
1

e1
0
1
0
1
0

e2
0
0
1
1
0

e3
0
0
0
0
1

Etats
Attentes Pi`ces
e
1F reu
c
2F reu
c
Trop peru
c

sortie2
0
1
1

q1
1
1
0
0

q2
1
0
1
0

Fig. 10.18 Codage des entres, des sorties et des tats pour la synth`se de lautomate
e
e
e
de contrle de la machine ` caf
o
a
e
e1
0
0
0
0
0
1
1

e2
0
0
0
0
0
0
1

e3
0
1
0
1
0
0
0

q1
0
0
0
0
1
1
1

q2
0
0
1
1
0
0
0

d1
0
1
0
1
1
0
0

d2
0
1
1
1
0
1
0

e1
0
0
1
1
0
-

e2
1
0
1
0
1
-

e3
0
0
0
0
0
-

q1
1
1
1
1
1
-

q2
0
1
1
1
1
-

d1
0
1
0
1
0

d2
0
1
0
0
1

Fig. 10.19 Tables de vrit des fonctions de transition de lautomate de contrle de la


e e
o
machine ` caf
a
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Synth`se des circuits squentiels par ots de donnes


e
e
e

243

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Par exemple lalgorithme : u 0 ; tant que vrai : u= (u+1) mod 2n avec u


reprsent sur n bits peut tre modlis par un automate dtats ni dont le
e
e
e
e e
e
graphe comporterait 2n tats.
e
Une mthode systmatique permet de raliser le circuit sans passer par la
e
e
e
dnition de son graphe dtats. Ltat du circuit squentiel est dni par la
e
e
e
e
e
valeur des variables apparaissant dans lalgorithme. Un registre est alors utilis
e
pour chacune de ces variables. Chaque calcul apparaissant dans lalgorithme est
ralis par les composants combinatoires ncessaires. Lencha
e e
e
nement des calculs se fait au gr du ot des donnes ` travers ces composants. Ainsi lexemple
e
e a
ci-dessus se ralise videmment avec un incrmenteur n bits et un registre n
e
e
e
bits.
Dans la suite de ce paragraphe, nous illustrons cette mthode sur deux
e
exemples. Puis nous donnons une ide de la notion de pipeline.
e

3.1

Circuit ot de donnes ` une seule variable :


e a
la suite de Syracuse

Nous nous intressons ici ` ltude dun circuit qui dlivre successivement
e
a e
e
les entiers composant une suite particuli`re (dite de Syracuse) dnie par :
e
e
si UN est pair alors UN +1 = UN DIV 2 sinon UN +1 = 3 * UN +1, o` DIV dnote
u
e
la division enti`re. On peut dcrire le calcul de cette suite par lalgorithme :
e
e
Lexique
U 0 : lentier > 0 donn ; U : un entier > 0
e
Algorithme
U U 0
tantque vrai :
si U MODULO 2 = 0
alors U U DIV 2
sinon U 3 * U + 1

Cette suite a la particularit de converger vers les trois valeurs 4, 2, 1 pour


e
certaines valeurs de U 0. Prenons comme hypoth`se que U est born quelle
e
e
que soit la valeur de U 0. Nous pouvons alors dcrire cet algorithme ` laide
e
a
dun automate dtats ni, mais cela serait fastidieux, lautomate comportant
e
autant dtats que de valeurs possibles de U .
e
La gure 10.20 donne larchitecture dun circuit ot de donnes ralisant
e
e
cet algorithme.
Comme dans la synth`se cble, ltat est mmoris dans un ensemble de
e
a e
e
e
e
bascules qui contiennent la valeur de U . La boucle principale est ralise autour
e e
de ce registre puisque U change de valeur ` chaque itration. Une itration
a
e
e
est eectue pendant une priode de lhorloge clock activant les bascules du
e
e
registre. Nous sommes obligs de xer une borne suprieure ` U , en xant le
e
e
a
nombre de bascules de ce registre ` n. Un circuit combinatoire calcule la valeur
a
suivante U de U .

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

244

Circuits squentiels
e

init

clock

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

U0
1

U0

x DIV 2

1
0

DQ

3x+1

0
1

Fig. 10.20 Calcul de la suite de Syracuse par un circuit ` ot de donnes


a
e

Laction si . . .alors . . .sinon . . . est ralise en eectuant en parall`le les cale e


e
culs : U DIV 2 et 3 * U + 1, puis en slectionnant un des deux rsultats ` laide
e
e
a
dun multiplexeur. Lvaluation de lexpression de la condition ne demande pas
e
de calcul puisquelle correspond au bit de poids faible de U (U0 ).
Le composant calculant x DIV 2 est ralis par un dcalage vers les poids
e e
e
faibles avec introduction dun 0. Le composant calculant 3 * x + 1 peut se
raliser ` laide dun additionneur en observant que 3 * x + 1 = 2 * x + x + 1,
e
a
2 * x se ralisant ` laide dun dcalage vers les poids forts avec introduction
e
a
e
dun 0. Lopration dincrmentation + 1 peut seectuer en forant la retenue
e
e
c
entrante de ladditionneur ` 1.
a
Linitialisation de U ` U 0 peut se faire ` laide dun multiplexeur
a
a
slectionnant lentre du registre mmorisant U , la valeur de U 0 ou de U .
e
e
e
Si lentre init est ` 1 le circuit initialise U par U 0, sinon il donne ` U sa
e
a
a
prochaine valeur U .
La gure 10.21 donne larchitecture de ce circuit sous forme de tranches de
0 ` n-1. Toutes les tranches sont identiques, sauf les tranches 0 et n-1. Chaque
a
tranche implmente lalgorithme sur 1 bit et contient une bascule mmorisant
e
e
`me bit de U . On retrouve les multiplexeurs de linitialisation (en haut) et de
e
le i
laction si alors sinon en bas. La division et multiplication par 2 se retrouvent
dans le dcalage des indices sur lentre de ladditionneur et du multiplexeur
e
e
du bas.

3.2

Circuit ot de donnes ` plusieurs variables :


e a
la racine carre
e

Lalgorithme de la gure 10.22 calcule la partie enti`re de la racine carre


e
e
de lentier naturel x.
La premi`re boucle de lalgorithme qui consiste ` calculer la valeur de la
e
a
plus petite puissance de 4 suprieure ` x peut se faire ` laide dun circuit
e
a
a
combinatoire. Le lecteur pourra sintresser au probl`me ` titre dexercice sur
e
e
a
les circuits combinatoires.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Synth`se des circuits squentiels par ots de donnes


e
e
e

U 0n1

245

U 00

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

U 0i

init

clock

Q0

Qn2 Qi

Qi1

Add

cn1

ci+1

Qn1 Qi+1

tranche n-1

ci

c1

Qi

Add

Q1

tranche i

Add

Q0

tranche 0

Fig. 10.21 Architecture en tranche pour le calcul de la suite de Syracuse par un circuit
` ot de donnes
a
e

Lexique
x : lentier 0 donn
e
u, z, y, rsultat : des entiers 0
e
Algorithme
u 1
tantque u x : u 4* u
z u ; y x
tantque u > 1 :
u u DIV 4
z z DIV 2 - u
si z y :
y y - z
z z + 2 * u
rsultat z DIV 2
e

Fig. 10.22 Algorithme de calcul de la racine carre [BB83]


e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

246

Circuits squentiels
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

rsultat
e

u div 4

div4

z div 2 - u

div2

moins

z + 2*u

mult2

plus

moins

test

y-z

si z y
tant que u > 1

test1

Fig. 10.23 Calcul de la racine carre par un circuit ` ot de donnes


e
a
e

Nous nous intressons ici ` la deuxi`me boucle de lalgorithme. Le circuit


e
a
e
densemble est donn gure 10.23.
e
Les variables internes u, z et y modies dans cette boucle constituent
e
ltat de lautomate. Elles sont mmorises dans trois registres U , Z, et Y . La
e
e
e
boucle correspond ` la fonction de transition de lautomate. Un passage dans
a
la boucle correspond ` une transition de lautomate, donc ` une priode de
a
a
e
lhorloge activant les registres. Par exemple la fonction de transition, restreinte
a
` la partie U de ltat, est N ouvU = si (U 1 = 0) alors U sinon U DIV 4,
e
o` N ouvU dnote le nouvel tat.
u
e
e
On ne sintresse pas ici au dialogue du circuit avec un hypothtique monde
e
e
extrieur. Le rsultat est prsent tout au long du droulement de lalgorithme
e
e
e
e
mais il nest valide que lorsque U 1. La progression sarrte quand U arrive `
e
a
la valeur 1. Comme un automate ne sarrte pas, on reproduit ce comportement
e
en ne faisant plus changer les valeurs de U .
La boucle tant que U > 1 est ralise ` laide des 3 multiplexeurs du bas de
e e a
la gure 10.23, chaque multiplexeur dcidant du changement des variables U ,Z
e
et Y . Le prdicat (U > 1) a besoin dtre calcul. Pour cela on peut faire une
e
e
e
soustraction de 1 ` U . On peut aussi, plus simplement, fabriquer le boolen
a
e
U > 1 ` laide dune simple porte OU sur les tous les bits de U sauf le premier
a
(composant test1 sur la gure 10.23).
Chaque calcul apparaissant dans la boucle est ralis ` laide dun ou plue ea
sieurs composants apparaissant dans un tage de la gure 10.23. Le calcul de
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Synth`se des circuits squentiels par ots de donnes


e
e
e

247

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Z DIV 2 U ncessite un soustracteur (composant moins sur la gure). Le


e
calcul Z + 2 U ncessite un additionneur (composant plus sur la gure). Le
e
calcul Y Z ncessite un soustracteur (composant moins sur la gure). On
e
nglige videmment les multiplications ou divisions par une puissance de 2
e
e
(composants div2, mult2 et div4 sur la gure). Ce sont de simples dcalages.
e
Le calcul du prdicat Z Y ncessite le calcul de Z Y ou Y Z, on prote
e
e
du calcul de Y Z pour lobtenir ` travers le composant test. La ralisation de
a
e
linstruction si Z Y est eectue ` laide de deux multiplexeurs commands
e a
e
par la sortie du composant test et dcidant du changement des valeurs de Z
e
et Y par les rsultats des calculs Z + 2 U et Y Z.
e

3.3

Notion de pipeline

Le principe de pipeline est une optimisation particuli`re du principe de


e
ot de donne. Son utilisation est largement rpandue dans la conception des
e
e
microprocesseurs actuels. Le lecteur peut trouver une description plus dtaille
e
e
dans [HP94].
Remarque : Le terme de pipeline est un mot anglais. Il se prononce avec
les diphtongues (aI ) /paI plaI n/. Une traduction franaise, oloduc, ligne de
c
e
pipe, nayant quun rapport lointain avec ce dont nous parlons, nous gardons le
terme pipeline. On peut le prononcer ` la franaise... On peut aussi risquer
a
c
octoduc.
e

Lorganisation sous forme de pipeline dun syst`me squentiel digital sape


e
plique ` des classes de fonctions particuli`res : il sagit de syst`mes qui dlivrent
a
e
e
e
un ot de sorties en fonction dun ot dentres, en respectant un cadencement :
e
e
e
la N`me sortie est limage de la N`me entre. On peut voir une analogie avec
e
la le dattente de certaines caftrias ou cantines : les clients arrivent dans
ee
un certain ordre, prennent ou non entre, dessert, boisson ou plat chaud dans
e
lordre o` ces plats sont prsents puis payent ; mais lusage est que lon ne se
u
e
e
double pas. Par opposition on trouve des organisations de type buet o` chau
cun passe dun comptoir ` lautre ` sa guise. Si lon prend peu de plats, on peut
a
a
passer ` la caisse avant un consommateur arriv avant mais qui prend chaque
a
e
plat. Evoquons les avantages et inconvnients des deux formules : attente dans
e
le pipeline derri`re lindcis qui hsite entre frites et pommes sautes, bouscue
e
e
e
lade dans le buet asynchrone.
On suppose qu` lentre les consommateurs arrivent ` intervalles constants
a
e
a
de dure T. Au premier plat prsent le premier client met moins de T ` choisir.
e
e
e
a
A linstant T il passe alors au rayon du deuxi`me plat et un deuxi`me client
e
e
prend sa place au premier rayon. A linstant 2*T, le premier client passe au
troisi`me rayon, le second client au second rayon et un troisi`me arrive dans
e
e
le premier rayon. Le processus peut continuer. Si un client met plus de T `
a
choisir ou sil veut passer au rayon suivant plus vite que T, le syst`me se met
e
a
` mal fonctionner (Cf. Les Temps Modernes de Charlie Chaplin).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

248

Circuits squentiels
e

Entres
e

R1

C1

R2

C2

Sorties

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
icie
J.ard , F C.
lles
, P . M Fer
ara na et M
h.
Wa ni nde at
ri
e
z,
ille nch
elle
i,
s

Clock

Fig. 10.24 Un circuit ` pipeline ` trois niveaux


a
a

On a un fonctionnement du mme type dans le syst`me matriel dcrit par


e
e
e
e
la gure 10.24. A la date 1, un premier item dentre est charg dans le registre
e
e
dentre R1 . Le circuit combinatoire C1 calcule une fonction f1 ` partir de la
e
a
sortie de ce registre.
A la date 2, un deuxi`me item dentre est charg dans le registre R1 . Sie
e
e
multanment R2 est charg avec la sortie du circuit C1 . Le circuit combinatoire
e
e
C1 calcule f1 sur la sortie de R1 , C2 calcule f2 sur la sortie de R2 .
La simultan e est ncessaire au bon fonctionnement du syst`me. Evidemet
e
e
ment la priode T de lhorloge qui pilote les chargements de tous les registres
e
doit tre suprieure au maximum des dlais des circuits combinatoires intere
e
e
venant dans le pipeline. L` sarrte lanalogie avec le restaurant self-service o`
a
e
u
lon passe au rayon suivant de faon un peu asynchrone (d`s que lon a ni `
c
e
a
un rayon et que le client prcdent a libr la place).
e e
ee
Le temps de rponse unitaire pour chaque traitement est le produit de la
e
priode par le nombre de tranches dans le pipeline. Il peut tre suprieur ` la
e
e
e
a
somme des dlais de chacun des circuits, voire tr`s suprieur si le pipeline est
e
e
e
mal quilibr.
e
e

4.

Exercices

E10.2 : Compteur
On veut raliser un compteur. Il dlivre en sortie les entiers successifs de 0
e
e
a
` 7 (sur 3 bits). La sortie sur 3 ls (s2 , s1 , s0 ) est incrmente modulo 8 `
e
e
a
chaque front montant dune entre incr. Linitialisation ` 0 des sorties se fait
e
a
a
` laide du signal init actif ` 1. Donner lautomate de Moore correspondant `
a
a
ces spcications. Donner une ralisation cble de cet automate.
e
e
a e
Comment pourrait-on raliser un circuit quivalent ` laide dun circuit
e
e
a
combinatoire calculant une sortie S sur 3 bits gale ` une entre E (sur 3 bits)
e
a
e
plus 1 ? Ce circuit a fait lobjet dune tude de cas dans le chapitre 8.
e
Vriez en dessinant un chronogramme que le circuit de la gure 10.25 a
e
le mme comportement que les circuits prcdents.
e
e e
E10.3 : Automate reconnaisseur de squence
e
Donner un codage binaire de trois informations a, b et c et construire une
ralisation de lautomate tudi au chapitre 5 reconnaissant le langage rgulier
e
e
e
e

ab + c.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Exercices

249

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

incr
clock

clock

clock

reset

reset

reset

s2

init

s0

s1

Fig. 10.25 Circuit ralisant un compteur sur 3 bits


e
e

s=0

s=0

s=1

Fig. 10.26 Graphe de Moore de lautomate correspondant au dtecteur de front


e

E10.4 : Compteur/dcompteur modulo 10


e
Un automate mmorise un entier naturel u de lintervalle [0, 9]. Il a deux entres
e
e
plus, moins. Lvolution de ltat (cest-`-dire de lentier u) est dnie ainsi :
e
e
a
e
u 0 ;
tant que vrai :
si plus alors u (u+1) mod 10
sinon
si moins alors u (u-1) mod 10
sinon u u

Donnez une ralisation en portes et bascules de ce compteur/dcompteur


e
e
modulo 10.
E10.5 : Dtecteur de front
e
On veut raliser lautomate du dtecteur de front dcrit dans le chapitre 9,
e
e
e
paragraphe 1.2.4. On suppose que lentre e est synchronise sur les fronts
e
e
montants dune horloge clock. La sortie s passe ` 1 apr`s chaque front montant
a
e
de e et au front descendant de clock suivant. Elle doit rester ` 1 jusquau
a
prochain front montant de clock.
Vrier que lautomate de la gure 10.26 correspond ` ces spcications.
e
a
e
Faire la synth`se cble de cet automate. Quelle doit tre le signal que lon
e
a e
e
doit mettre sur lentre dactivation des bascules de lautomate ? La sortie
e
s de lautomate reste ` 1 pendant une priode de lhorloge, comment faire
a
e
pour quelle reste ` 1 seulement pendant la demi-priode voulue ? Faire un
a
e
chronogramme pour comprendre.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

250

Circuits squentiels
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

E10.6 : Machine ` laver


a
On veut raliser un contrleur de machine ` laver. La machine ` laver poss`de 4
e
o
a
a
e
ls en entre permettant deectuer des commandes sur les lments de la mae
ee
chine : Lancer-Moteur-vitesse1, Lancer-Moteur-vitesse2, Entre-Eau, Entree
e
Lessive. La mise sous tension de 5 volts de ces ls correspond ` :
a
Lancer-Moteur-vitesse1 : active le moteur du tambour de la machine ` une
a
vitesse lente pendant une dure xe T1 (permettant le lavage)
e
Lancer-Moteur-vitesse2 : active le moteur du tambour de la machine ` une
a
vitesse rapide pendant une dure xe T2 (permettant lessorage)
e
Entre-Eau : permet larrive de leau dans le tambour pendant une dure
e
e
e
xe T3 (active une pompe ` eau)
a
Entre-Lessive : ouvre le conteneur de lessive (pour la mettre dans le tame
bour).
La machine ` laver poss`de 1 l Fin en sortie indiquant la n dune tche
a
e
a
lance par lune des 4 commandes prcdentes. Ce l passe ` 5 Volts lorsque la
e
e e
a
tche en cours se termine. Il repasse ` 0 volts lors du lancement dune nouvelle
a
a
commande. Il est ` 0 ` linitialisation.
a a
On veut raliser le circuit permettant de commander cette machine. Il a
e
en entre Fin, Init et Dmarrer. Init est la commande dinitialisation ` la mise
e
e
a
sous tension. Dmarrer passe ` 5 volts un court instant lorsque lutilisateur
e
a
lance un programme de lavage. Il a en sortie les 4 commandes Lancer-MoteurVitesse1 (LMV1), Lancer-Moteur-Vitesse2 (LMV2), Entre-Eau (EE), Entree
e
Lessive (EL).
On veut orir ` lutilisateur un seul programme de lavage qui correspond
a
a
` la suite des tapes suivantes : un lavage : entre de leau, de la lessive et
e
e
lancement du tambour ` vitesse lente ; un rinage : entre de leau et lancement
a
c
e
du tambour ` vitesse lente ; un essorage : lancement du tambour ` vitesse
a
a
rapide.
Pour les tapes ` plusieurs tches, les commandes correspondantes peuvent
e
a
a
tre eectues simultanment. Fin passe alors ` 1 ` la n de la tche la
e
e
e
a
a
a
plus longue. Donner le graphe de lautomate dtats ni qui correspond au
e
contrleur de la machine ` laver. Faire une synth`se de cet automate en utio
a
e
lisant des bascules D sensibles au front montant et des portes NAND et inverseurs. Donner le dessin du circuit en faisant appara
tre les entres (Init,
e
Dmarrer, et Fin) et les sorties du circuit (LMV1, LMV2, EE, EL).
e
On veut maintenant orir ` lutilisateur 2 programmes au choix. Pour cela
a
on rajoute au contrleur une entre Prog spciant le programme de lavage ` efo
e
e
a
fectuer. Si Prog vaut 1 le programme de lavage est celui dni prcdemment, si
e
e e
Prog vaut 0 le programme de lavage correspond seulement aux tapes de lavage
e
et rinage. Le contrleur poss`de comme prcdemment lentre Dmarrage.
c
o
e
e e
e
e
Donner le graphe de lautomate correspondant ` ce nouveau contrleur et en
a
o
raliser une synth`se.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 11

Conception de circuits
squentiels par sparation du
e
e
contrle et des oprations
o
e
Nous avons vu dans le chapitre 10 comment concevoir un circuit squentiel
e
correspondant ` un automate dtats ni en partant de son graphe explicite.
a
e
Ceci nest faisable que lorsque le graphe de lautomate na pas trop dtats
e
(une centaine). Au-del` le travail est complexe et fastidieux. Cest en partia
culier le cas lors de la ralisation de circuits correspondant ` des algorithmes
e
a
manipulant des variables enti`res. Dans ce cas dautres techniques de concepe
tions de circuits existent. Nous avons vu dans le chapitre 10 ` travers deux
a
exemples une technique appele ot de donnes. Nous nous intressons ici `
e
e
e
a
une technique dirente permettant de dcomposer le probl`me (et du coup
e
e
e
le circuit correspondant) en deux parties distinctes : une partie contrle et
o
une partie oprative. La partie oprative est forme dun ensemble de registres
e
e
e
et doprateurs permettant de mmoriser les variables de lalgorithme et de
e
e
raliser les oprations apparaissant sur ces variables dans lalgorithme. Par
e
e
contre lencha
nement dans le temps des oprations est dcid par la partie
e
e e
contrle. Par rapport au ot de donnes cette technique permet doptimio
e
ser le nombre doprateurs ncessaires mais souvent au dtriment du temps
e
e
e
dexcution.
e
Nous expliquons dans le paragraphe 1. le principe gnral dune telle are e
chitecture. Nous dcrivons dans le paragraphe 2. une partie oprative
e
e
type, utilisable dans la plupart des cas. Nous donnons dans le paragraphe 3. les principes de la partie contrle et tudions sa synchronio
e
sation temporelle avec la partie oprative. Nous appliquons ensuite ces
e
principes gnraux ` deux exemples dtaills (paragraphe 4.).
e e
a
e
e
Nous nous appuyons sur cette technique pour expliquer les principes de
conception dun processeur au chapitre 14.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

252

Conception de circuits squentiels...


e

Ordres

Acquittements

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Partie contrle
o

Comptes-rendus

Init

Horloge

Commandes

Donnes :
e

Partie oprative
e

Entres
e
Sorties

Fig. 11.1 Principaux signaux dune architecture PC/PO

1.

Principe gnral
e e

La partie oprative (ou PO) ore les ressources (Bus, registres, UAL . . .)
e
ncessaires ` chaque opration sur les direntes variables apparaissant dans
e
a
e
e
lalgorithme. Mais ce nest pas elle qui dcide de lopration ` eectuer ` un
e
e
a
a
instant donn. Elle envoie des signaux de comptes rendus sur ces calculs ` la
e
a
partie contrle.
o
La partie contrle (ou PC) g`re lencha
o
e
nement des calculs eectus sur
e
les donnes au vu des comptes rendus de la PO. Elle gn`re lactivation des
e
e e
oprations ` un instant donn, en envoyant des signaux de commandes ` la
e
a
e
a
partie oprative. Elle ne modie pas directement les donnes. Elle traduit les
e
e
primitives de contrle apparaissant dans lalgorithme.
o
Les deux parties sont deux circuits squentiels cadencs sur la mme hore
e
e
loge. La gure 11.1 donne lorganisation des signaux entre la PC, la PO et
le monde extrieur. Les communications entre les deux parties se font par
e
les signaux de commande et de compte-rendu. A chaque front (montant par
exemple) dhorloge :
des valeurs de commandes sont envoyes ` la PO par la PC pour slectionner
e a
e
un calcul donn (par exemple : slection des entres de lUAL, opration
e
e
e
e
eectue dans lUAL, . . .).
e
des comptes-rendus du calcul eectu (par exemple les indicateurs
e
arithmtiques dune UAL) peuvent alors tre renvoys par la PO ` la PC
e
e
e
a
an de lui permettre de prendre une dcision pour le choix du calcul suivant.
e
Les connexions au monde extrieur tiennent compte de cette spcialisation :
e
e
la PC ne reoit que des ordres et ne dlivre que des acquittements, signalant
c
e
la n de sa mission, par exemple.
la PO ne reoit que des donnes et ne dlivre que des donnes. Les ls
c
e
e
e
dentres et de sorties peuvent dans certains cas tre les mmes (bus bidie
e
e
rectionnel).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Notion de partie oprative type


e

253

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Nous avons vu au chapitre 5 comment obtenir une machine squentielle avec


e
actions ` partir dun algorithme. Chaque action apparaissant dans la machine
a
squentielle doit pouvoir tre excute dans la PO. Les actions atomiques, ou
e
e
e e
microactions, auxquelles nous nous intressons sont de type Ri Rj op Rk ,
e
Ri entre ou sortie Ri o` op est une opration et Rj un registre.
e
u
e
On peut aussi avoir dans la PO type des microactions composes telle que
e
sortie Rj || Ri Rj op Rk . La partie contrle peut tre dcrite explicio
e
e
tement par le graphe de lautomate dans lequel on remplace les actions par un
ensemble de sorties boolennes correspondant aux signaux de commande de la
e
PO. Les entres de cet automate sont les comptes-rendus des calculs eectus
e
e
dans la PO. Le tableau 11.3 donne la correspondance entre microactions et
sorties boolennes.
e

2.

Notion de partie oprative type


e

Nous donnons Figure 11.2 la structure dune partie oprative type pere
mettant une construction mthodique et rpondant ` la plupart des besoins.
e
e
a
Cette PO peut tre dans la plupart des cas optimise en termes de nombre de
e
e
ressources (registres, bus, oprateurs) ou en termes de temps dexcution. Ces
e
e
crit`res sont souvent incompatibles.
e
Une partie oprative comprend des registres, un oprateur appel UAL
e
e
e
(Unit Arithmtique et Logique) et des bus.
e
e
Remarque : Il est intressant de noter quune partie oprative peut tre
e
e
e
dcrite comme un automate dtats ni. Ses entres sont les donnes entrantes,
e
e
e
e
les commandes de chargement et dinitialisation des registres, les commandes
dopration. Son tat est compos des valeurs contenues dans les dirents
e
e
e
e
registres. Ses sorties sont les donnes sortantes et les comptes-rendus ` dese
a
tination de la PC. Une utilisation systmatique de cette description est faite
e
dans lexercice E14.4 du chapitre 14.

2.1

Registres et commandes de chargement

Les registres contiennent les valeurs des variables apparaissant dans lalgorithme. Un registre est un ensemble de bascules de mme type partageant
e
les mmes commandes dactivation et dinitialisation (Cf. Chapitre 9, parae
graphes 1.3 et 1.4). Les primitives matrielles sur un registre permettent dy
e
forcer une valeur prsente sur la nappe de ls en entre. Ceci est fait en connece
e
tant lhorloge gnrale du circuit ` lentre dhorloge des bascules et en connece e
a
e
tant lentre Enable des bascules ` un signal de commande nomm signal de
e
a
e
chargement de ce registre.
Sur la gure 11.2 chaque registre (Ri , i = 1, ..., n) est connect ` lhorloge
ea
gnrale et au signal de chargement not ChRi. Ces signaux de chargement font
e e
e
partie des commandes envoyes par la PC.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Conception de circuits squentiels...


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

254

Sorties

SelSorties

Opration UAL
e

Bus A

ChR1

SelBusAR1

UAL

Rn

R1

SelBusBR1

SelUAL

horloge

Bus B

ComptesRendus

Bus Rsultat
e

SelEntres
e

Entres
e

Fig. 11.2 Une partie oprative type


e

microactions
Ri Rj op Rk

Ri entre
e

sortie Ri

commandes pendant le coup dhorloge


ChRi = 1 ; ChRi (i=i ) = 0 ;
SelBusARj = 1 ; SelBusARj (j=j ) = 0 ;
SelBusBRk = 1 ; SelBusBRk (k=k ) = 0 ;
SelUAL = 1 ; SelEntres = 0 ; SelSorties = 0 ;
e
commandes UAL pour lopration op
e
ChRi = 1 ; ChRi (i=i ) = 0 ;
SelBusARj = ;
SelBusBRk = ;
SelUAL = 0 ; SelEntres = 1 ; SelSorties = 0 ;
e
commandes UAL =
ChRi = 0 ;
SelBusARi = 1 ;
SelBusBRk = ;
SelUAL = 0 ; SelEntres = 0 ; SelSorties = 1 ;
e
commandes UAL =

Fig. 11.3 Sorties correspondant aux microactions pour la P.O type de la gure 11.2

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Notion de partie oprative type


e

255

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

La sortie de chaque registre est connecte aux deux entres de lUAL mais
e
e
une de ces deux connexions peut tre inutile et donc supprime. Il peut tre
e
e
e
intressant dinitialiser les registres ` laide du signal dinitialisation (` 1 ou `
e
a
a
a
0) des bascules plutt que dobtenir des valeurs initiales via le bus Entres.
o
e

2.2

Oprateur et commande dopration


e
e

La ralisation de loprateur (ou UAL) suppose didentier la liste des


e
e
oprations ncessaires ` lexcution de lalgorithme. Loprateur est un circuit
e
e
a
e
e
combinatoire susceptible de raliser ces direntes oprations selon des signaux
e
e
e
de commande (OprationUAL sur la gure 11.2). Si loprateur doit eectuer p
e
e
oprations direntes, il est command par log2 (p) ls de commande. En plus
e
e
e
du rsultat de lopration proprement dit, des sorties de loprateur peuvent
e
e
e
tre de type indicateurs arithmtiques, ressemblant aux classiques Z, N, C et V
e
e
des mots dtat de processeurs (Cf. Chapitre 12). Rien nempche den utiliser
e
e
dautres si lexpression de lalgorithme utilise des primitives de test direntes.
e
Ces sorties de loprateur forment les signaux de compte-rendu de la PO vers
e
la PC (ComptesRendus sur la gure 11.2).
Il y a dans ce travail de conception dun oprateur un aspect tout ` fait
e
a
particulier. Lexpression dun algorithme se fait ` base de primitives supposes
a
e
donnes ; ici le concepteur de machine algorithmique a le choix des primitives :
e
ce sont celles ralisables par un circuit ` un cot convenable. On peut par
e
a
u
exemple dcider dutiliser un multiplieur combinatoire de nombres cods en
e
e
virgule ottante sur 64 bits dans une machine algorithmique si on en a besoin.
Cela permet de considrer la multiplication de rels comme une primitive. Si
e
e
lon ne veut pas utiliser un tel circuit, mais seulement un additionneur 8 bits,
il faudra exprimer lalgorithme en nutilisant que des additions de nombres
cods sur 8 bits.
e
On peut utiliser plusieurs oprateurs eectuant chacun une opration
e
e
donne an de pouvoir parallliser certaines oprations et donc diminuer le
e
e
e
temps dexcution de lalgorithme. Toutefois ce genre doptimisation augmente
e
le nombre de connexions et doprateurs ncessaires. Si on le pousse ` lextrme,
e
e
a
e
on retombe sur la solution ot de donnes prsente au paragraphe 3. du chae
e
e
pitre 10.

2.3

Liaisons, bus et multiplexeurs,


commandes de slection
e

Les liaisons entre les registres et loprateur se font par des liaisons nommes
e
e
bus. Deux bus oprandes (A et B) permettent damener aux deux entres de
e
e
lUAL le contenu dun des registres. Les signaux SelBusARi et SelBusBRi permettent deectuer cette slection. Un bus Rsultat permet damener ` lentre
e
e
a
e
des n registres le rsultat du calcul. Les signaux ChRi permettent deectuer
e
le chargement du registre souhait.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

256

Conception de circuits squentiels...


e

C1

C2

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

C1 C
2

Dcodeur
e

D1

D3

D2

D1

D2

D4

BUS

D3

S1

D4

(a)

S2

S3

(b)

S4

BUS

Fig. 11.4 Liaisons de 4 registres ` un bus. a) ` base de multiplexeurs ; b) ` base de


a
a
a
portes trois tats.
e

La liaison des registres ` chaque bus est ralise soit ` laide de multia
e e
a
plexeurs, soit ` laide de portes trois tats entre les sorties des registres et
a
e
le bus. Elle ncessite des signaux de commande permettant de dterminer ce
e
e
choix. La gure 11.4 montre la ralisation dun bus supportant 4 entres D1 ,
e
e
D2 , D3 et D4 (qui sont par exemple les sorties de 4 registres) ` laide de deux
a
signaux de commande C1 et C2 . Dans le cas dune ralisation ` base de portes
e
a
trois tats, le bus obtenu est ` double sens (contrairement ` lautre cas). Cela
e
a
a
peut tre indispensable dans le cas dentres/sorties avec lextrieur. Cette
e
e
e
solution est la plus souvent utilise.
e
Sur la gure 11.2, cest la solution ` base de portes trois tats qui a t
a
e
ee
choisie. Le dcodeur dlivrant les signaux Si (dans la gure 11.4) nappara
e
e
t
pas sur la gure 11.2. Ces signaux de slections (Si ) peuvent tre directement
e
e
dlivrs dans chaque tat de la PC. Une autre solution consiste a raliser le
e e
e
e
dcodeur dans la PC ; le nombre de ls de commande entre la PC et la PO est
e
alors fortement augment.
e
On peut diminuer le nombre de connexions en diminuant le nombre de
bus au dtriment du temps dexcution de lalgorithme. On peut placer par
e
e
exemple un registre tampon supplmentaire en sortie de lUAL et connecter ce
e
registre ` un bus qui servira en mme temps de bus rsultat et de bus oprande.
a
e
e
e

2.4

Entres/Sorties
e

Le bus Entres permet de charger des valeurs depuis lextrieur dans les
e
e
registres. Les signaux SelEntres et ChRi du registre concern doivent alors
e
e
tre actifs et la valeur initiale prsente sur le bus Entres.
e
e
e
Le bus Sorties permet de dlivrer ` lextrieur les rsultats de lalgorithme.
e
a
e
e
Il est donc connect ` un des deux bus de sorties des registres de la PO. La
ea
porte trois tats active par SelSorties nest pas toujours ncessaire.
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Partie contrle
o

257

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Dans certains cas, il peut tre intressant de possder plusieurs nappes de


e
e
e
ls de sorties. Dans ces cas-l` les sorties de certains registres peuvent tre, par
a
e
exemple, directement des sorties du circuit.
Dans dautres cas les entres et les sorties peuvent tre multiplexes sur les
e
e
e
mmes ls. On peut alors relier les bus Entres et Sorties grce ` la prsence
e
e
a a
e
de la porte trois tats commande par SelSorties sur la gure 11.2.
e
e

2.5

Relations entre microactions et commandes

On peut rcapituler (Cf. Figure 11.3) lensemble des commandes ncessaires


e
e
a
` lexcution des 3 types de microactions sur la base dune partie oprative
e
e
comme celle de la gure 11.2. On verra dans la suite des primitives
dentres/sorties plus riches permettant un protocole de poigne de mains.
e
e

2.6

Synchronisation du calcul et de laectation


du rsultat
e

Deux schmas simples de synchronisation peuvent tre utiliss. Dans le


e
e
e
premier schma, tous les registres sont sensibles au (mme) front dhorloge.
e
e
A chaque coup dhorloge une microaction Ri Rj op Rk est eectue et le
e
rsultat est charg dans le registre concern au prochain front de lhorloge.
e
e
e
Dans le deuxi`me schma, on peut utiliser des registres de type verrou
e
e
(Cf. Chapitre 9) ; on ajoute alors un registre tampon en sortie de loprateur.
e
Ce registre est pilot par un signal de chargement actif sur le niveau haut
e
de lhorloge. Les autres registres sont pilots par un signal de chargement
e
actif sur le niveau bas. Une microaction se dcompose alors en deux phases,
e
correspondant aux deux niveaux de lhorloge. Dans la premi`re phase (haut)
e
les oprandes sont aiguills vers loprateur et le rsultat du calcul est charg
e
e
e
e
e
dans le tampon. Dans la deuxi`me phase (bas), le rsultat est charg dans le
e
e
e
registre concern.
e
Dans la suite on fera abstraction de cette alternative de mise en oeuvre des
actions atomiques.

3.

Partie contrle
o

Comme dcrit au chapitre 5, nous pouvons ` partir de lalgorithme obtenir


e
a
une machine squentielle avec actions. Pour des raisons de synchronisation
e
avec la PO (Cf. Chapitre 10, paragraphe 1.3.3) le mod`le de Moore est utilis.
e
e
Cette machine squentielle avec actions est ensuite transforme en autoe
e
mate dtats ni en remplaant les actions apparaissant sur les tats par lafe
c
e
fectation des valeurs correspondantes ` ces actions, aux signaux de commande
a
a
` destination de la PO. Cette tape est dtaille dans les tudes de cas traites
e
e
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

258

Conception de circuits squentiels...


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

au paragraphe 4. Cet automate peut tre ensuite ralis par du matriel suivant
e
e e
e
une des mthodes dcrites dans le chapitre 10.
e
e
Le probl`me est de dcider quels oprateurs et comptes-rendus de calculs
e
e
e
sont disponibles dans la PO. Chaque calcul et aectation de variable correspondante eectu dans un tat de lautomate doit tre ralisable en un cycle
e
e
e
e
dhorloge dans la PO. Chaque condition apparaissant sur les transitions de
lautomate doit tre un compte-rendu de loprateur utilis disponible dans
e
e
e
ltat prcdent.
e
e e

3.1

Entres/sorties
e

La gestion des entres et des sorties ncessite une synchronisation avec le


e
e
monde extrieur. Le protocole de poigne de mains (Cf. Chapitre 6) peut tre
e
e
e
employ pour permettre le chargement ou la sortie de certains registres de la
e
PO. Ce protocole de poigne de mains peut tre adapt au cas par cas suivant
e
e
e
lenvironnement dans lequel on doit implanter le circuit ` raliser. Des signaux
a e
de synchronisation ncessaires ` ces entres/sorties sont ajouts aux signaux
e
a
e
e
de donnes. Ils sont reus par la PC.
e
c
Dans le cas dune entre le circuit est le rcepteur et le monde extrieur est
e
e
e
lmetteur, et inversement pour une sortie. On reprend le schma de lautomate
e
e
du rcepteur et de lmetteur dans une poigne de mains prsent dans le
e
e
e
e
e
chapitre 6. On associe ` lautomate de la PC deux tats pour chaque acquisition
a
e
dentre et pour chaque dlivrance de sortie (Cf. Figure 11.5). Les entres sont
e
e
e
chantillonnes sur la mme horloge que la PC comme nous lavons vu dans le
e
e
e
chapitre 10. Dans le cas dune entre, le signal PresE correspond au signal de
e
prsence dune entre venant de lextrieur (metteur prt). Le signal EPrise
e
e
e
e
e
correspond au signal de signication ` lextrieur de la prise en compte de
a
e
lentre (rcepteur non prt). Bien entendu ce signal est ` 0 dans tous les
e
e
e
a
autres tats de lautomate. Dans ltat Chargement de lentre les commandes
e
e
e
a
` destination de la PO sont SelEntres pour amener la valeur du bus extrieur
e
e
a
` lentre des registres et ChRi pour charger le registre voulu.
e
Dans le cas dune sortie, le signal PresS correspond au signal de prsence
e
dune sortie pour lextrieur (metteur prt). Ce signal est ` 0 dans tous les
e
e
e
a
autres tats de lautomate. Le signal SPrise permet ` lextrieur de signaler
e
a
e
au circuit quil a pris en compte la sortie (rcepteur non prt). Dans ltat
e
e
e
Sortie prsente les commandes ` destination de la PO sont SelBusARi pour
e
a
transmettre le registre voulu sur le bus A et SelSorties pour amener la valeur
du bus A sur le bus de sortie.
Nous pouvons illustrer ce protocole ` travers le dialogue dun circuit avec
a
une mmoire. Considrons par exemple un processeur eectuant des critures
e
e
e
(sorties) ou des lectures (entres) en mmoire. Nous avons expliqu au parae
e
e
graphe 2.2 du chapitre 9 comment se droule un acc`s mmoire. Dans le cas
e
e
e
o` la mmoire est lente par rapport au processeur celui-ci doit attendre lors
u
e
dun acc`s en lecture ou en criture que la mmoire lui signale la n de lacc`s.
e
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Partie contrle
o

Attente
Entre
e

PresS
SelSorties
SelBusARi

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

EPrise

259

PresE

Sortie
prsente
e

PresE

EPrise
Chargement
ChRi
e
SelEntres de lentre
e

SPrise

SPrise

PresE

PresS

Attente

SPrise

SPrise

PresE

(a)

(b)

Fig. 11.5 Gestion dentres/sorties : a) acquisition dune entre ; b) dlivrance dune


e
e
e
sortie

La mmoire dlivre alors un signal FinAcc`s lorsque, soit la donne ` lire est
e
e
e
e a
prte sur le bus, soit la donne ` crire est eectivement crite en mmoire.
e
e ae
e
e
e a
e
Le processeur dlivre les signaux SelMem et l/e lors dun acc`s ` la mmoire.
e
On reprend les automates de la gure 11.5. Pour lcriture SPrise correspond `
e
a
a
e
FinAcc`s, PresS ` SelMem et l/e ; pour la lecture PresE correspond ` FinAcc`s,
e
a
Eprise ` SelMem et l/e.
a
Nous retrouverons la connexion dun processeur avec une mmoire dans ltude
e
e
de cas du paragraphe 4.3 et dans le chapitre 14. Nous nous placerons alors dans
le cas simple et idal o` la mmoire est susamment rapide pour permettre un
e
u
e
acc`s en un cycle dhorloge du processeur ; le signal FinAcc`s nest alors plus
e
e
utile, il est implicite.
Nous retrouverons les aspects de synchronisation au chapitre 15, pour relier
lensemble processeur/mmoire avec le monde extrieur.
e
e

3.2

Synchronisation de la partie contrle et de la partie


o
oprative
e

Nous avons vu dans le chapitre 10, paragraphe 1.3.3, comment synchroniser


les ralisations de deux automates. Dans le cas dune ralisation PC/PO les
e
e
sorties de la PO sont des entres de la PC et inversement. Nous sommes donc
e
en prsence de deux automates en boucle.
e
Supposons que lautomate ralisant la PC volue ` chaque front montant
e
e
a
dune horloge H. Il faut quentre deux fronts montants de H, la PO eectue le
calcul command et donne un compte-rendu pour permettre ` la PC de calculer
e
a
le prochain tat. Regardons ce qui se passe dans les deux cas de synchronisation
e
tudis au paragraphe 1.3.3 du chapitre 10.
e
e
Dans le cas o` les registres de la PO sont chargs au front montant (Cf. Fiu
e
gure 11.6), cest le rsultat du calcul eectu dans ltat prcdent qui est
e
e
e
e e
charg. La PO doit alors eectuer le calcul et mettre le compte-rendu de
e
e
mani`re ` laisser le temps ` la PC de calculer ltat suivant avant le prochain
e a
a
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

260

Conception de circuits squentiels...


e

Passage dans ltat i


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Passage dans ltat i + 1


e

Calcul eectu dans ltat i (PO)


e
e

Calcul de ltat i+1 (PC)


e

Compte rendu valide

Chargement du rsultat de ltat i (PO)


e
e

Fig. 11.6 Chronogrammes montrant la synchronisation de la PC et de la PO avec


chargement du registre rsultat en n de priode
e
e

Passage dans ltat i


e

Passage dans ltat i + 1


e

Calcul eectu dans ltat i (PO)


e
e

Calcul de ltat i+1 (PC)


e
et Chargement du rsultat
e
de ltat i (PO)
e
Compte rendu valide

Le compte-rendu peut changer

Fig. 11.7 Chronogrammes montrant la synchronisation de la PC et de la PO avec


chargement du registre rsultat au milieu de la priode
e
e

front montant de H. Dans ce cas-l`, il nest pas ncessaire de mmoriser ces


a
e
e
comptes-rendus.
Dans le cas o` le calcul est eectu dans la premi`re phase (Cf. Figure 11.7)
u
e
e
les comptes-rendus changent alors une deuxi`me fois dans la deuxi`me phase
e
e
puisque certains des registres peuvent avoir chang apr`s le front descendant
e
e
de H. Il faut donc mmoriser ces comptes-rendus dans un registre au front
e
descendant de H. Lmission des commandes de la PC et le calcul doivent
e
donc tre raliss dans la premi`re demi-priode de H, le calcul de ltat suivant
e
e e
e
e
e
dans la deuxi`me. Cette solution est plus contraignante dans lencha
e
nement
des direntes oprations de la PC et de la PO.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Etudes de cas

Etudes de cas

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

4.

261

4.1

Dmarche de conception
e

Avant de traiter concr`tement des exemples prcis nous donnons lbauche


e
e
e
dune mthode de conception dune architecture PC/PO. Les deux premi`res
e
e
tapes apparaissant ci-apr`s sont compl`tement lies et sont ` eectuer simule
e
e
e
a
tanment.
e
Transformation de lalgorithme en une machine squentielle avec
e
actions :
Rpertorier les actions et les prdicats apparaissant dans lalgorithme.
e
e
Dnir les oprations ncessaires aux calculs de ces prdicats. Dnir les
e
e
e
e
e
oprations et les aectations de variables pouvant tre ralisables par un
e
e
e
circuit disponible pour construire la PO.
Dcrire lalgorithme ` laide dune machine squentielle avec actions utie
a
e
lisant ces variables et ces oprations. Les actions associes ` chaque tat
e
e a
e
doivent tre ralisables dans la PO en un coup dhorloge.
e
e

Obtention de la PO :

Rpertorier lensemble des variables apparaissant dans la machine


e
squentielle avec actions, chacune correspond ` un registre de la PO.
e
a
Rpertorier lensemble des oprations apparaissant dans lalgorithme, y
e
e
compris celles ncessaires aux calculs des prdicats. Construire une PO type
e
e
(Cf. Parapraphe 2.) possdant un oprateur permettant de raliser tous les
e
e
e
calculs. On pourra ventuellement optimiser cette PO (au niveau temps de
e
calcul) en multipliant les oprateurs et paralllisant les calculs par fusion
e
e
dtats dans la machine squentielle.
e
e

Obtention de lautomate correspondant ` la PC :


a

Au vu de la PO et de la machine squentielle avec actions obtenir lautoe


mate dtats ni correspondant ` la PC. Cet automate a comme entres
e
a
e
les ls de comptes-rendus (correspondant aux conditions apparaissant dans
lalgorithme) sortant de loprateur de la PO et les signaux de synchronie
sation avec le monde extrieur. Il a comme sorties les ls de commande
e
apparaissant sur les ressources de la PO et des signaux avec lextrieur. Il
e
faut donc dnir pour chaque tat la valeur des commandes ` destination
e
e
a
de la PO correspondant aux actions eectues.
e

Synth`se de lautomate de contrle :


e
o

Il reste ` eectuer la synth`se de lautomate obtenu en utilisant une des


a
e
mthodes donnes dans le chapitre 10.
e
e

Assemblage de la PC et de la PO

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

262

Conception de circuits squentiels...


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Lexique
m,n : des entiers 0 { m et n tant donns}
e
e
n : le boolen Vrai
e
j, k : des entiers 0
: un entier
Algorithme
Tantque VRAI :
Acqurir(m) ; Acquerir(n) ;
e
k 0 ; j 0 ; m ;
tantque j m : {invariant : 0 j m et 2.m 0 }
Dlivrer (j) ; Dlivrer (k) ;
e
e
j j+1 ;
+ 2.n ; {2.m + 2.n 2.n}
si 0
k k + 1 ;
2.m ; { apr`s cela : 2.m 0 }
e
n VRAI ;
Dlivrer(n) ;
e
Fig. 11.8 Algorithme de Bresenham

4.2

Le traceur de segments

Le circuit que nous voulons concevoir doit dlivrer les coordonnes des
e
e
points dun segment de droite sur un cran. Nous choisissons lalgorithme de
e
Bresenham prsent au paragraphe 2.3 du chapitre 5. La gure 11.8 rappelle
e
e
lalgorithme. Les actions Acqurir et Dlivrer correspondent aux entres et sore
e
e
ties. Pour que le circuit puisse fonctionner pour un nombre de segments illimit,
e
nous ajoutons une boucle globale sans n.
4.2.1

Obtention dune machine squentielle avec actions ` partir de


e
a
lalgorithme

On peut classer les actions ` eectuer en deux catgories. Certaines corresa


e
pondent ` des entres/sorties : Acqurir(m), Acqurir(n), Dlivrer (j), Dlivrer(k),
a
e
e
e
e
e
Dlivrer (n) ; dautres correspondent ` des calculs : j 0, k 0,
e
a
m , j j + 1, + 2.n, k k + 1, 2.m.
Les initialisations de j et k ` 0 se font directement ` travers un signal
a
a
dinitialisation sur les registres. On peut ainsi runir les actions j 0, k
e
0, et m dans le mme tat. On choisit dutiliser un seul oprateur
e e
e
(Cf. Paragraphe 2.), les autres actions doivent donc se faire dans des tats
e
distincts.
Les prdicats ` tester sont j m et 0. On peut de faon quivalente
e
a
c e
calculer chaque prdicat ou son complmentaire ; par exemple on peut calculer
e
e
j>m ou j m. Pour le calcul du prdicat j > m on eectue m j. Il est plus
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Etudes de cas

263

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Acqurir(m)
e

Dlivrer(n)
e

Acqurir(n)
e

m || j 0 || k 0

ResNeg

m-j

ResNeg

2.m

Dlivrer(j)
e

ResNeg

Dlivrer(k)
e

k k+1

ResNeg

j j +1

+ 2.n

Fig. 11.9 Une machine squentielle avec actions ralisant lalgorithme de Bresenham
e
e

facile de raliser une UAL qui donne un indicateur signiant rsultat ngatif
e
e
e
que rsultat ngatif ou nul. Pour le prdicat 0, on a besoin du mme
e
e
e
e
indicateur.
Le calcul dun prdicat peut ncessiter lajout dun tat. Par exemple ici le
e
e
e
calcul de j > m doit tre eectu dans un tat spcique alors que le calcul de
e
e
e
e
0 peut tre eectu au moment de laction + 2.n.
e
e
On obtient la machine squentielle avec actions de la gure 11.9.
e
4.2.2

Description de la partie oprative


e

La gure 11.11 donne la partie oprative. Le circuit comporte 5 registres


e
nomms J, K, M, N et D contenant les valeurs des variables j, k, m, n et .
e
Les registres J et K possdent un signal dinitialisation InitJK ` 0 pour
e
a
pouvoir eectuer les actions j 0 et k 0.
Les calculs ` eectuer correspondent aux diverses actions numres
a
e
ee
prcdemment : M, K + 1, J + 1, D + 2.N, D 2.M. Il faut ajouter
e e
les calculs correspondant aux prdicats : j > m et 0.
e
On utilise une PO type comme dnie prcdemment mais on minimise le
e
e e
nombre de connexions des registres aux bus. Ainsi les connexions J ; BusA,
K ; BusA, M ; BusB, N ; BusB, D ; BusA susent.
Nous ralisons toutes les oprations avec un oprateur unique ; il doit
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

264

Conception de circuits squentiels...


e

Op1
0
0
1

Op0
0
1
0

Opration
e
A+1
BA
A + 2*B

Op2
0
1

Op1
1
0

Op0
1
0

Opration
e
A 2*B
B

es

Op2
0
0
0

Ar
chi
P.
te c
Am tu
F.
bla res
La
P.
gn rd, J Logi
Sic ier,
.-C ciel
ard
F.
. F les
,P
Ma ern et
h.
ran and Ma
Wa
inc
ez, tri
e
ille
hi,
ell

Fig. 11.10 Signaux de commande de lUAL de lalgorithme de Bresenham


Sorties

InitJK

ChN
N

UAL
SelUAL

ChM

Op2, Op1, Op0


SelNBusB

InitJK

ChD

SelMBusB

ChK

SelDBusA

ChJ

SelKBusA

SelJBusA

Bus A

Bus B

BUS Rsultat
e

ResNeg

SelEntres
e

Entres
e

Fig. 11.11 Partie oprative correspondant ` lalgorithme de Bresenham


e
a

raliser les oprations suivantes sur ses oprandes A et B : A+1, BA, A+2*B,
e
e
e
A2*B et B. Chacune de ces oprations doit tre eectue dans un tat
e
e
e
e
dirent de la machine squentielle avec actions.
e
e
La signication des trois signaux Op2 , Op1 , Op0 de commande des
oprations de lUAL est donne dans le tableau de la gure 11.10.
e
e
Cette UAL peut tre ralise ` laide dun additionneur (Cf. Chapitre 8).
e
e e a
Elle doit gnrer un bit de signe du rsultat (ResNeg).
e e
e

4.2.3

Hypoth`ses sur les entres/sorties


e
e

Sans hypoth`ses sur lenvironnement exact (cran, table traante,..) il est


e
e
c
impossible de dcrire prcisment la primitive dachage dun pixel.
e
e e
Nous convenons que M et N sont initialiss ` partir dun bus dentres (not
e a
e
e
Entres sur la gure 11.11), que J et K sont dlivrs sur un bus de sorties (not
e
e e
e
Sorties sur la gure 11.11) et que le signal Fin est dlivr directement par un
e e
l particulier issu de la PC (l portant une valeur constante, on pourrait bien
sr lliminer).
u e
Pour les entres sur M et N et les sorties sur Fin, J et K nous utilisons le
e
protocole de poigne de mains.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Etudes de cas

Dnition de la partie contrle par un automate dtats ni


e
o
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

4.2.4

265

La gure 11.12 donne la partie contrle. Les tats correspondant `


o
e
a
Acqurir(N) et Acqurir(M) sont remplacs chacun par les deux tats du
e
e
e
e
rcepteur dans le protocole poigne de mains. On introduit ainsi les signaux
e
e
de contrle venant de lextrieur (PresN et PresM) et un mme signal vers
o
e
e
lextrieur pour les deux cas EPrise. De mme pour les sorties Fin, J et K avec
e
e
les signaux SortieFin, SortieJ, SortieK et SPrise.
Nous supposons que les bascules utilises dans la PO sont des bascules D
e
sensibles au front montant, avec signal dinitialisation actif ` 1.
a
Il est ` remarquer que dans certains cas la valeur de signaux de commande
a
de la PO na pas dimportance. Ces valeurs sont alors dnies comme phie
boolennes pour les fonctions de sortie correspondantes.
e
La gure 11.13 donne le dtail des sorties pour chaque tat de la PC ; ce
e
e
sont des ls de commande apparaissant sur la PO de la gure 11.11 et les ls
destins aux entres/sorties avec lextrieur.
e
e
e

4.2.5

Assemblage de la PC et de la PO

Le circuit de la gure 11.14 montre lensemble des signaux changs lors


e
e
de lassemblage de la PC et de la PO ainsi que ceux permettant la gestion des
entres/sorties. Le seul compte-rendu de la PO vers la PC est ResNeg. La PC
e
et la PO voluent avec la mme horloge H.
e
e

4.3

La machine ` trier
a

Cette tude de cas montre lutilisation dune mmoire ` ct dune machine


e
e
a oe
algorithmique. Cest ` ce titre une bonne introduction au chapitre 14 qui porte
a
sur la conception dun processeur. Le mcanisme dentre/sortie utilis ici est
e
e
e
spcique et dirent de ceux explicits plus haut.
e
e
e
Soit une mmoire permettant de stocker M mots de N bits. On dsire
e
e
construire une machine permettant de raliser le tri des lments contenus
e
ee
dans cette mmoire. On consid`re que ces lments sont des entiers naturels
e
e
ee
cods en base 2. La gure 11.15 donne lalgorithme du tri par insertion.
e
On suppose que M est initialis au dpart de lalgorithme. La mmoire
e
e
e
comporte un bus donne, un bus adresse et un signal de commande, not l/e,
e
e
prcisant si on ralise une opration de lecture ou dcriture. Il faut donc que le
e
e
e
e
circuit ralisant lalgorithme poss`de un bus de sortie correspondant ` ladresse
e
e
a
en mmoire et un bus dentres/sorties correspondant ` la donne stocke en
e
e
a
e
e
mmoire. On suppose que lacc`s ` la mmoire en lecture ou criture peut se
e
e a
e
e
faire en un cycle dhorloge du circuit ` concevoir. Il ny a donc pas de signal
a
FinAcc`s.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Conception de circuits squentiels...


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

266

PresM

PresM

SPrise

PresM

SPrise

Chargement de M

PresM

16

PresN

SPrise

PresN

Sortir Fin
PresN
15

4 Chargement de N
PresN
5 D M

SPrise

J 0

K 0

ResNeg

SPrise

MJ
ResNeg
7

Sortir J
SPrise

14 D D 2*M SPrise

SPrise

SPrise

ResNeg

9 Sortir K

13 K K+1

SPrise

SPrise

10

ResNeg

12

D D+2*N

SPrise
11
J J +1

Fig. 11.12 Automate dtats ni correspondant ` lalgorithme de Bresenham


e
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Etudes de cas

Attente : InitJK = ChJ = ChK = ChD = ChM = ChN = ,


(Op2, Op1, Op0) = (, , )
Chargement de M : ChM = SelEntres = EPrise = 1, InitJK =
e
ChJ = ChK = ChD = ChN = , (Op2, Op1, Op0) = (, , )
Attente : InitJK = ChJ = ChK = ChD = ChN = ,
(Op2, Op1, Op0) = (, , )
Chargement de N : ChN = SelEntres = EPrise = 1,
e
InitJK = ChJ = ChK = ChD = , (Op2, Op1, Op0) = (, , )
D M ; J 0 ; K 0 : ChD = InitJK = SelMBusB =
SelUAL = 1, (Op2, Op1, Op0) = (1, 0, 0)
M J : SelJBusA = SelMBusB = 1, (Op2, Op1, Op0) = (0, 0, 1)
Sortir J : SortieJ = SelJBusA = 1, (Op2, Op1, Op0) = (, , )
Attente : (Op2, Op1, Op0) = (, , )
Sortir K : SortieK = SelKBusA = 1, (Op2, Op1, Op0) = (, , )
Attente : (Op2, Op1, Op0) = (, , )
J J+1 : ChJ = SelJBusA = SelUAL = 1, (Op2, Op1, Op0) = (0, 0, 0)
D D+2*N : ChD = SelDBusA = SelNBusB =SelUAL = 1,
(Op2, Op1, Op0)=(0, 1, 0)
K K+1 : ChK = SelUAL = SelKBusA = 1, (Op2, Op1, Op0) =(0, 0, 0)
D D2*M : ChD = SelDBusA = SelMBusB = SelUAL = 1,
(Op2, Op1, Op0) = (0,1,1)
Sortir n : SortieFin = 1, InitJK = ChJ = ChK = ChD = ChM =
ChN = , (Op2, Op1, Op0) = (, , )
Attente : InitJK = ChJ = ChK = ChD = ChM = ChN = ,
(Op2, Op1, Op0) = (, , )

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

267

2
3
4
5

6
7
8
9
10
11
12
13
14
15
16

Fig. 11.13 Sorties mises dans chaque tat de la partie contrle de la gure 11.12. Les
e
e
o
signaux dont la valeur est 1 ou sont prciss et ceux pour lesquels elle
e e
vaut 0 sont omis.
H

Sorties

Entres
e

Init

ResNeg

Partie ChJ ChK ChD ChM ChN


SelJBusA SelKBusA
oprative SelMBusB SelNBusB
e
SelDBusA SelSorties
SelUAL SelEntres
e
Op2 Op1 Op0 InitJK

Partie
contrle
o

Fig. 11.14 Vue gnrale du traceur de segments


e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

PresN
PresM

SPrise
EPrise
SortieJ
SortieK
SortieFin

268

Conception de circuits squentiels...


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Lexique
M : un entier donn
e
i, j, t : des entiers 0 ; trouv, n : des boolens
e
e
mem : un tableau [0..M1] dentiers 0
Algorithme
i 1
tantque i M1 :
j i ; t mem[i] ; trouv FAUX
e
tantque (j > 0 et non trouv) :
e
si mem[j1] > t alors mem [j] mem[j1] ; j j1
sinon trouv VRAI
e
mem [j] t ; i i + 1
n VRAI ;
Dlivrer (n)
e
Fig. 11.15 Algorithme de la machine ` trier
a

4.3.1

Obtention dune machine squentielle avec actions ` partir de


e
a
lalgorithme

Les actions ` eectuer sont :


a
i 1, j i, t mem[i], trouv FAUX,
e
mem[j] mem[j1], j j1, trouve VRAI, mem[j] t, i i+1.
Nous convenons de coder FAUX par la valeur 0 et VRAI par la valeur 1.
Etudions lvaluation des prdicats :
e
e
i M1 : on peut calculer i M et tester si le rsultat est nul. En eet,
e
i M 1 i M < 0. Initialement i < M et i tant incrment de 1
e
e
e
a
` chaque itration on peut tester i = M.
e
j > 0 et non (trouv) : on peut calculer j et tester si le rsultat est non nul,
e
e
puis calculer trouv et tester si le rsultat est nul. Initialement j > 0 et j
e
e
tant dcrment de 1 ` chaque itration on peut tester j = 0.
e
e e
e
a
e
mem[j1] > t : on calcule mem[j1] t et on teste si le rsultat est
e
strictement positif. Pour ce calcul si lon se restreint ` un seul oprateur, il
a
e
faut tout dabord aller chercher en mmoire mem[j1] et stocker la valeur
e
dans une variable temporaire que nous appelons temp. On peut ensuite
calculer temp t. Le calcul se fait donc dans deux tats successifs ralisant
e
e
les actions temp mem[j1] puis valuation du signe de temp t.
e
Laectation mem [j] mem[j1] ncessite deux acc`s ` la mmoire. On
e
e a
e
ne peut donc la raliser dans un seul tat de la machine squentielle. Il faut
e
e
e
comme prcdemment utiliser une variable, soit temp, permettant de stocker
e e
mem[j1] avant de laecter ` mem[j] ; ` deux tats successifs seront alors
a
a
e
associes les actions temp mem[j1] puis mem[j] temp. Comme lafe
fectation temp mem[j1] se fait juste apr`s le test mem[j1] > t, temp
e
contient dj` la valeur de mem[j1] ; il est donc inutile de raliser cette aecea
e
tation.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Etudes de cas

269

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

0 i 1

Dlivrer(n)
e

ResNul

1 iM

ResNul

j i

t mem[i] || trouv FAUX


e

ResNul

ResNul

trouv
e

mem[j] t

12

ResNul

ResNul

i i + 1

temp mem[j1]
temp - t

13

ResPos

mem[j] temp

ResPos

11 trouv VRAI
e

j j 1 10

Fig. 11.16 Machine squentielle avec actions de la machine ` trier


e
a

Linitialisation de trouv ` FAUX peut tre faite dans le mme tat que
e a
e
e
e
laectation t mem[i] en se servant de linitialisation ` 0 du registre trouv.
a
e
Le calcul du prdicat j > 0 et non (trouv) se fait dans deux tats successifs
e
e
e
(voir le mcanisme dclatement de conditions complexes dans le chapitre 5).
e
e
La machine squentielle avec actions donne dans la gure 11.16 tient
e
e
compte de ces remarques.
4.3.2

Obtention de la PO

On part de la PO type dcrite dans le paragraphe 2. La gure 11.17 dcrit


e
e
une PO qui permet toutes les actions apparaissant dans les dirents tats de
e
e
la machine squentielle avec actions donne prcdemment.
e
e
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

270

Conception de circuits squentiels...


e

Op2,Op1
BusAdresses

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

IBusA

JBusA

TPBusA

Bus A

InitI

ChI

ChJ

T
E
M
P

TRBusA

ResetTR
SetTR

TR

UAL

MBusB

TPBusB

ChT

ChTEMP

BusRsultat
e

SelAdr

SelUAL

Bus B

ComptesRendus

SelEntres
e

SelSorties

BusDonnes
e

Fig. 11.17 Partie oprative pour la machine ` trier


e
a

Il y a 6 registres permettant de stocker les variables de lalgorithme : I, J,


T, TR (pour trouv), M et TEMP (pour la variable intermdiaire introduite).
e
e
Le registre TR ne comporte quune seule bascule. Sa liaison sur n ls au bus
A est complte par des 0.
ee
On se sert dun oprateur unique ` deux oprandes A et B qui doit permettre
e
a
e
les calculs : A, AB, A1, A+1 et dlivrer les comptes-rendus : rsultat nul et
e
e
rsultat positif.
e
Pour raliser I 1, TR 0 et TR 1 on se sert des commandes
e
dinitialisation des bascules des registres correspondants.
Les entres/sorties sont eectues via le bus adresses en sortie et le bus
e
e
donnes en entre et sortie.
e
e
On connecte I, J, TR et TEMP au bus A pour raliser les actions J I, J
e
J1, I I+1 et les calculs ncessaires ` lvaluation des prdicats I=M,
e
a e
e
J=0, TEMP>T et non (TR).
On connecte M et T au bus B pour le calcul des prdicats I=M et TEMP>T.
e
Pour les actions ncessitant un acc`s mmoire en criture ou en lecture :
e
e
e
e
T mem[I], TEMP mem[J1], mem[J] T, mem[J] TEMP, on
a le choix, soit de connecter le bus A ou B au bus adresses, soit de passer
par lUAL. On choisit la deuxi`me solution puisquil faut eectuer un calcul
e
dadresses pour laction TEMP mem[J1].
On connecte le bus donnes au bus rsultat pour les actions comportant une
e
e
lecture en mmoire : T mem[I] et TEMP mem[J1]. Pour les actions
e
comportant une criture en mmoire : mem[J] T et mem[J] TEMP,
e
e
on transmet J sur le bus adresses en passant par le bus A et lUAL, et on
connecte T et TEMP au bus B puis le bus B au bus donnes.
e
En rsum, on doit pouvoir avoir sur le bus A le contenu des registres I,
e
e
J, TR et TEMP. On doit pouvoir avoir sur le bus B le contenu des registres

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Exercices

j i : IBusA = ChJ = 1, (Op2, Op1) = (0, 1), ChTEMP = ChT = ResetTR


= SetTR =
t mem[i] ; trouv = FAUX : IBusA = ChT = ResetTR = l/e = SelMem
e
= SelAdr = SelEntrees = 1, (Op2, Op1) = (0, 1), ChTEMP =
j : JBusA = 1, (Op2, Op1) = (0, 1)
temp mem[j1] : JBusA = ChTEMP= l/e = SelMem = SelAdr = SelEntres = 1, (Op2, Op1) = (1, 1)
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

271

4
5
7

Fig. 11.18 Sorties pour quelques tats de lautomate de la gure 11.16 ; sont prciss
e
e e
les signaux ` 1 et ` et omis ceux ` 0.
a
a
a

M, T et TEMP. On doit pouvoir charger les registres I, J, TEMP et T par la


valeur prsente sur le bus rsultat. On doit pouvoir amener la valeur prsente
e
e
e
sur le bus donnes sur le bus rsultat. On doit enn pouvoir amener la valeur
e
e
prsente sur le bus B sur le bus donnes.
e
e
4.3.3

Obtention de lautomate dtats ni de la partie contrle


e
o

Le passage de la machine squentielle ` lautomate dtats ni se fait comme


e
a
e
prcdemment. On peut utiliser le protocole de poigne de mains pour laction
e e
e
Dlivrer (n). On remplace ltat correspondant par les deux tats de lmetteur
e
e
e
e
dans la poigne de mains (Cf. Paragraphe 3.1).
e
Nous donnons dans la gure 11.18, pour quelques tats, les sorties de laue
tomate dtats ni correspondant ` la machine squentielle avec action de
e
a
e
la gure 11.16. Nous utilisons les signaux apparaissant sur la PO de la gure 11.17. Pour les critures et lectures en mmoire les signaux SelMem et l/e
e
e
a
` destination de la mmoire sont des sorties supplmentaires de lautomate.
e
e
Les congurations 00, 01, 10 et 11 des deux signaux Op2 , Op1 qui commandent lopration de lUAL (OperationUAL) correspondent respectivement
e
aux oprations : A + 1, A, AB, A1.
e
4.3.4

Optimisation

On peut simplier ce circuit en nutilisant plus de registre pour stocker


le boolen trouv. En eet on peut sortir directement de la boucle quand le
e
e
test du prdicat mem[j-1] > t donne VRAI (voir la modication sur la machine
e
squentielle de la gure 11.19).
e

5.

Exercices

E11.1 : La racine carre


e
Il sagit de construire un circuit permettant de calculer la partie enti`re de la
e
racine carre dun entier naturel x. Lalgorithme correspondant est donn au
e
e
paragraphe 3.2 du chapitre 10. En suivant la mthode dcrite dans ce chapitre
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Conception de circuits squentiels...


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

272

i 1

Dlivrer(Fin)
e

ResNul
iM

ResNul

j i

t mem[i]

ResNul

ResNul

mem[j] t

temp mem[j1]

ResPos

i i + 1

temp t
ResPos

mem[j] temp
j j 1

Fig. 11.19 Machine squentielle avec actions optimise de la machine ` trier


e
e
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Exercices

273

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Lexique
U : un entier > 0 ; n : un booleen
Algorithme
Tantque VRAI :
Acqurir(U)
e
tantque U > 1 :
si U MODULO 2 = 0 alors U U DIV 2
sinon U 3 * U + 1
Dlivrer (U)
e
Dlivrer(n)
e

Fig. 11.20 Algorithme de la suite de Syracuse

SelSorties

Bus A

Sorties

Op

ChU

UAL

horloge

Bus Rsultat
e

SelUAL

BitPoidsFaible

ResNeg

SelEntres
e

Entres
e

Fig. 11.21 Une partie oprative pour la suite de Syracuse


e

donner une PO et une PC permettant de raliser cet algorithme ; sinspirer de


e
la PO type donne ` la section 2.
e a
E11.2 : La suite de Syracuse
La gure 11.20 donne lalgorithme correspondant au calcul de la suite de Syracuse. La gure 11.21 reprsente une PO issue de la PO type du paragraphe 2.
e
permettant de raliser cet algorithme. Donner la machine squentielle avec ace
e
tions correspondant ` lalgorithme et utilisant cette PO. Les comptes-rendus de
a
lUAL sont le bit de poids faible et le signe du rsultat. En dduire lautomate
e
e
dtats ni correspondant. Faire une synth`se cable de cet automate avec un
e
e
e
codage compact. On choisira pour cela un codage pour les trois oprations de
e
lUAL (Op) : 1X, X DIV 2 et 3*X+1. On eectuera les entres/sorties ` laide
e
a
du protocole ` poigne de mains via les bus Entres et Sorties pour U.
a
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

274
Conception de circuits squentiels...
e

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s
Troisi`me partie
e

Techniques de
lalgorithmique logicielle

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 12

Le langage machine et le
langage dassemblage

Nous avons tudi au chapitre 4 un ensemble de mod`les des traitements


e
e
e
quon peut vouloir faire eectuer par un dispositif informatique. Toutefois, ni
les langages de programmation de haut niveau, ni les machines squentielles,
e
ne sont directement exploitables par un ordinateur, tel que nous lavons dni
e
en introduction.
Le seul langage comprhensible par un ordinateur est le langage machine
e
de son processeur. Un programme en langage machine est une suite nie de
bits, que le processeur interpr`te. Nous tudions au chapitre 14 les circuits
e
e
squentiels qui ralisent cette tche dinterprtation. Un langage machine, bien
e
e
a
e
que dicilement lisible par un tre humain, poss`de une structure : il est
e
e
possible dy voir une suite de paquets de bits, chacun codant une instruction du
processeur, cest-`-dire une opration lmentaire ralisable par le processeur
a
e
ee
e
(par exemple additionner deux entiers cods sur un octet).
e
Concevoir un langage machine est une tche indissociable de la conception
a
du processeur. On doit choisir un ensemble dinstructions (on dit aussi : jeu
dinstructions) de mani`re ` fournir un mod`le de calcul universel, mais ce nest
e a
e
pas la seule contrainte. On peut avoir ` assurer la compatibilit ascendante
a
e
dans une famille de processeurs, cest-`-dire ` assurer que les programmes en
a
a
langage machine qui fonctionnaient sur un processeur de la gnration n sont
e e
rutilisables sur le processeur de la gnration n + 1.
e
e e
Pour dnir compl`tement un langage machine, il faut ensuite choisir un
e
e
codage de lensemble des instructions sur un certain nombre de bits.
Si lon suppose donns le processeur et son langage machine, on peut
e
sintresser au probl`me de la programmation de ce dispositif par un tre hue
e
e
main, qui ne saurait sexprimer directement en termes de squences de bits.
e
Le langage dassemblage est un langage textuel bti sur le mod`le du langage
a
e
machine. Il a la mme structure, cest-`-dire les mmes instructions, mais il se
e
a
e
note par du texte.
Traduire le langage dassemblage en langage machine suppose : une analyse

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

278

Le langage machine et le langage dassemblage

Ar
P. chite
Am ctu
F.
bla res
P. Lagn rd, Log
Sic ier J.- ici
ard , F C. el le
, P . M Fe s e
h.
ara rna t M
Wa ni nd
at
il le nch ez, erie
l le
i,
s

lexicale et syntaxique du texte, pour y reprer les structures ; la vrication


e
e
des contraintes dutilisation des oprateurs et oprandes ; un codage des struce
e
tures en squences de bits. Nous tudions les principes de cette traduction
e
e
dans le prsent chapitre. Cest par ailleurs la tche principale de loutil appel
e
a
e
assembleur des environnements de programmation. Nous verrons galement au
e
chapitre 18 les aspects de compilation spare ou dabstraction vis-`-vis de la
e e
a
position en mmoire ` lexcution. Nous verrons au chapitre 13 que le langage
e
a
e
dassemblage est lui-mme une cible pour la traduction des langages de haut
e
niveau.
Dans le paragraphe 1. nous exposons la dmarche de conception dun lane
gage machine : choix du jeu dinstructions et codage, en prenant quelques
exemples parmi les processeurs existants. Le paragraphe 2. dcrit les cae
ractristiques dun langage dassemblage construit sur le langage mae
chine. Les probl`mes de la traduction du langage dassemblage vers le
e
langage machine correspondants sont tudis au paragraphe 3. Enn nous
e
e
donnons au paragraphe 4. un exemple de programme, sous 5 formes : un
algorithme du langage dactions dcrit au chapitre 4 ; un texte crit dans
e
e
un langage dassemblage pour un processeur 68000 ; un texte dun langage
dassemblage pour processeur sparc ; un programme en langage machine
68000 ; un programme en langage machine sparc.

1.

Le langage machine

1.1

Description gnrique de la machine


e e

Pour dnir la notion de langage machine, et proposer des crit`res de choix


e
e
dun ensemble dinstructions qui constitue un mod`le de calcul universel, il
e
faut tout dabord dnir prcisment la machine.
e
e e
Nous nous restreignons ici au mod`le darchitecture de Von Neue
mann [BGN63] : une machine comporte une unit de calcul (qui ralise des
e
e
oprations de base sur les entiers cods en binaire) et une mmoire qui contient
e
e
e
des oprandes et des codes doprations (les instructions). Les instructions sont
e
e
excutes dans lordre o` elles sont ranges en mmoire.
e e
u
e
e
Nous distinguons par la suite :
Une mmoire de grande taille, dont les lments sont dsigns par des
e
ee
e
e
numros quon appelle des adresses. Cest la mmoire que nous avons mae
e
nipule en en donnant une abstraction par le tableau MEM au chapitre 4.
e
Nous parlerons souvent de mmoire principale
e
Une mmoire de plus petite taille dont les lments, appels registres, sont
e
ee
e
dsigns par des noms ou par des numros courts. Sur certaines machines
e
e
e
on distingue des registres donnes et des registres adresses, avec des instruce
tions travaillant sur lune des catgories de registres seulement. Sur dautres
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Le langage machine

279

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

machines, au contraire, les registres sont banaliss. Les machines les plus
e
anciennes ne comportaient quun seul registre, dit accumulateur
Nous dtaillons au chapitre 14 linuence de ce genre de distinction sur ce quon
e
appelle la partie oprative du processeur, cest-`-dire la structure du circuit qui
e
a
connecte lunit de calcul aux bus et aux divers registres.
e

La distinction entre ces deux types de mmoire permet de tenir compte, dans le
e
choix dun jeu dinstructions, de crit`res tels que le temps dacc`s ` la mmoire :
e
e a
e
les registres sont accessibles plus rapidement que la grande mmoire. Nous vere
rons au chapitre 15 que les registres sont en gnral situs physiquement dans
e e
e
le processeur, contrairement ` la grande mmoire. Dautre part les adresses
a
e
des octets dans la grande mmoire sont des entiers assez longs (typiquement
e
32 bits), qui soit ne peuvent pas appara tels quels dans le codage dune instre
truction (Cf. Paragraphe 1.3), soit en ralentissemnt lexcution ; en revanche,
e
les adresses ou numros des registres sont de petits entiers 5 bits sur le proe
cesseur sparc1 par exemple et peuvent donc appara comme dsignation
tre
e
doprande dans le codage dune instruction.
e

1.2

Elments et structure du langage machine


e

Un programme crit en langage machine est une suite nie de codages


e
binaires dinstructions ventuellement paramtres.
e
e e
1.2.1

Instructions et codage

Une instruction lmentaire peut tre par exemple un transfert mmoire


ee
e
e
vers mmoire, dont leet peut tre dcrit par une phrase du langage dactions
e
e
e
prsent au chapitre 4 : MEM[a] 4 MEM[b]. Dans ce cas le codage complet
e
e
de linstruction comprend : les reprsentations en binaire pur des adresses a
e
et b, codes sur un certain nombre de bits x ; le codage du type dopration
e
e
e
eectu : transfert mmoire vers mmoire de taille 4 octets. En langage machine
e
e
e
68000, cette instruction est code sur 16 + 32 + 32 bits. Les 16 premiers bits
e
codent le type dopration eectu, la taille du transfert et le fait que lon doit
e
e
trouver ensuite deux adresses de 32 bits ; les 32+32 bits suivants codent les
deux adresses doprandes (voir paragraphe 1.3 pour un expos des principes
e
e
de codage des instructions).
Lajout dune constante ` une case mmoire (MEM[a] MEM[a] + k)
a
e
peut galement constituer une instruction lmentaire dans un langage
e
ee
machine. Dans ce cas le codage complet de linstruction comporte : la
reprsentation en binaire pur de ladresse a ; le codage du type dopration
e
e
eectu : incrmentation de case mmoire dsigne par son adresse ; le codage
e
e
e
e
e
binaire de la constante k.
1

Dans ce chapitre, sparc dsigne le sparc V8 qui a des mots de 32 bits, et non le sparc
e
V9, qui a des mots de 64 bits.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

280

1.2.2

Le langage machine et le langage dassemblage

Notion de compteur programme

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Sauf indication contraire, une suite dinstructions est lue squentiellement


e
par le processeur, qui interpr`te chacune dentre elles, et passe ` celle qui se
e
a
trouve en mmoire ` ladresse suivante. Le processeur g`re donc ce quon ape
a
e
pelle le compteur programme, qui donne le numro de la prochaine instruction
e
a
` lire. Le compteur programme est incrment ` chaque instruction.
e
ea
Comme consquence de linterprtation dune instruction, le processeur
e
e
peut modier le contenu de la mmoire ou dun registre, ou commander une
e
opration de lunit de calcul. Il peut galement modier le numro (ladresse)
e
e
e
e
de la prochaine instruction ` lire. On parle alors de rupture de squence, ou
a
e
branchement. Une instruction de rupture de squence doit comporter ladresse
e
de destination. Une rupture de squence peut tre inconditionnelle, auquel cas
e
e
linterprtation de linstruction produit toujours le mme eet ; elle peut tre
e
e
e
conditionne, par exemple, par le signe du contenu dune case mmoire, ine
e
terprt comme un entier relatif ou comme le rsultat dun calcul. Dans ce
ee
e
cas la rupture eective de squence, lors dune excution, dpend de ltat des
e
e
e
e
donnes et donc de la mmoire ` ce moment-l`.
e
e
a
a
1.2.3

Dsignation dadresse et modes dadressage


e

Nous traitons dans ce paragraphe de tout ce qui concerne les mcanismes


e
de dsignation demplacements en mmoire (mmoire principale ou registres),
e
e
e
utilisables dans toute instruction de calcul si elle a des oprandes en mmoire,
e
e
dans les instructions de transfert depuis ou vers la mmoire, et dans les inse
tructions de rupture de squence. Ces mcanismes sont appels des modes
e
e
e
dadressage. La gure 12.1 en donne une vue synthtique.
e
Considrons tout dabord le cas des instructions de calcul. Lorsquelles come
portent un ou plusieurs oprandes en mmoire, le ou les param`tres correspone
e
e
dants de linstruction doivent dsigner une adresse doctet en mmoire. Ce peut
e
e
tre fait en donnant directement dans linstruction une constante enti`re posie
e
tive qui est ladresse voulue (cest le cas dans lexemple MEM[a] 4 MEM[b]
voqu ci-dessus). On parle alors dadressage absolu. Ce peut tre fait
e
e
e
galement en donnant comme param`tre un numro de registre, dont le
e
e
e
contenu, lors de lexcution, donnera ladresse mmoire ; il sagit dans ce cas
e
e
dadressage indirect par registre.
Il en existe de nombreuses variantes : indirect par registre avec
dplacement ; indirect par registre prdcrment (ou postincrment, ou pre
e e e
e
e
e
e
incrment, ou post-dcrment) avec ou sans dplacement, etc. Le mme
e
e
e e
e
e
e
raisonnement est valable pour les instructions de transfert depuis ou vers la
mmoire.
e
Dans le cas des instructions de rupture de squence, il faut indiquer dune
e
mani`re ou dune autre ` quelle adresse se trouve la prochaine instruction `
e
a
a
excuter, puisque ce nest pas linstruction suivante. Il existe deux sortes de
e
branchements : les branchements relatifs ` la position courante du compteur
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Le langage machine

281

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

programme linstruction spcie alors un dplacement en avant ou en arri`re


e
e
e
par rapport au compteur programme et les branchements absolus linstruction spcie une nouvelle valeur du compteur programme, qui doit craser
e
e
lancienne. Linstruction doit donc spcier un dplacement ou une adresse
e
e
absolue. Dans les deux cas, on peut imaginer que cette donne est fournie die
rectement comme une constante dans linstruction, ou indirectement dans un
registre.
Le tableau 12.1 rsume les diverses mani`res dindiquer une adresse
e
e
mmoire dans une instruction. Pour nommer les modes dadressages, nous
e
avons utilis les termes les plus couramment employs. Le mode indirect par
e
e
registre avec index est un adressage indirect par registre avec dplacement,
e
le dplacement tant stock dans un registre au lieu dtre donn par une
e
e
e
e
e
constante code dans linstruction.
e
Noter que pour une mme instruction, plusieurs modes dadressage peuvent
e
tre possibles. Voir aussi le paragraphe 1.3 qui traite du codage des instruce
tions, pour comprendre comment distinguer les dirents cas.
e
1.2.4

Mod`le de calcul universel,


e
mod`le de Von Neumann et langage machine type
e

La premi`re contrainte ` respecter dans la conception du jeu dinstructions


e
a
dun processeur est dassurer un mod`le de calcul universel. La comprhension
e
e
compl`te de cette contrainte demande quelques connaissances en calculabilit,
e
e
mais il est facile de se convaincre ` laide dexemples extrmes, comme le codage
a
e
des boucles, que le probl`me se pose eectivement.
e
Il est en eet assez facile de se convaincre quun langage de haut niveau
qui ne disposerait pas de structures itratives, sous quelque forme que ce soit,
e
ne permettrait pas de coder tout algorithme. Or les structures itratives core
respondent aux ruptures de squence dans le langage machine. Un langage
e
machine qui ne permettrait pas ainsi de modier ladresse de la prochaine
instruction ` lire, de mani`re conditionnelle, serait donc incomplet.
a
e
La contrainte de fournir un mod`le de calcul universel est ralisable avec un
e
e
langage machine ` une seule instruction complexe, du genre : acc`s mmoire
a
e
e
en lecture avec adressage indirect, conditionnel. Programmer directement dans
un tel langage serait dj` tr`s dicile, et crire un compilateur de langage de
ea e
e
haut niveau cest-`-dire un algorithme capable de traduire tout texte de
a
programme de haut niveau en suite de telles instructions serait encore plus
ardu.
Il ne sut donc pas que le jeu doprations oertes garantisse un mod`le
e
e
de calcul universel. Le mod`le de machine dit de Von Neumann repose sur les
e
classes dinstructions suivantes : transfert de donnes (chargement depuis un
e
registre, chargement depuis la mmoire, stockage dans la mmoire) ; branchee
e
ments inconditionnels et conditionnels ; oprations arithmtiques et logiques.
e
e
Le paragraphe 1.4 prsente ces grandes classes dinstructions plus des instruce

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

282

Information contenue dans le codage


de linstruction

valeur ` utiliser
a
(pour oprandes
e
sources de calcul
et
sources
de
transferts)

adresse
eective
(pour
rsultats et
e
cibles de
transferts)
Pour les instructions de calcul et les transferts mmoire
e
immdiat
e
une constante rela- k
tive k
absolu
une constante na- MEM[k]
k
turelle k
registre di- un numro n
e
contenu de Regn
Regn
rect
indirect par un numro n
e
MEM[contenu de contenu de
registre
Regn ]
Regn
indirect par deux numros n et MEM[contenu de contenu de
e
registre avec d
Regn + contenu Regn
+
index
de Regd ]
contenu de
Regd
indirect par un numro n, une MEM[contenu de contenu de
e
registre avec constante relative Regn + d]
Regn + d
dplacement d
e
indirect par un numro n
e
MEM[contenu de contenu de
registre pre
Regn - t]
Regn - t
dcrment
e e
e
indirect
un numro n
e
MEM[contenu de contenu de
par
reRegn ]
Regn
gistre postdcrment
e e
e
Pour les instructions de rupture de squence
e
relatif
au une constante rela- PC + d
compteur
tive d
N
programme
absolu
une constante na- k
turelle k

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

nom usuel

Le langage machine et le langage dassemblage

eet
ventuel
e
sur
les
oprandes
e

Regn
Regn
-t
Regn
Regn
-t

Fig. 12.1 Modes dadressage usuels. Noter que, pour les adressages indirects par registre avec pr (ou post) incrmentation (ou dcrmentation), leet sur
e
e
e e
le registre dindirection est de la forme : Regn Regn op t, o` op est
u
lopration + ou lopration , et t ne vaut pas ncessairement 1. t dpend
e
e
e
e
de la taille de lopration, cest-`-dire de la taille des oprandes. Par exemple,
e
a
e
si linstruction travaille sur des mots de 32 bits, t = 4. Pour les adressages
relatifs au compteur programme PC, la constante d donne dans linstruction
e
peut ventuellement tre multiplie par une constante N. Voir un exemple
e
e
e
paragraphe 1.4.3.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Le langage machine

283

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

tions spciques comme lon en trouve dans toute machine.


e
On trouve parfois le terme darchitecture de Von Neumann, o` la mmoire
u
e
contient ` la fois les donnes et les instructions, par opposition ` larchiteca
e
a
ture de Harvard, o` deux mmoires spciques contiennent, lune les donnes,
u
e
e
e
lautre les instructions. Les deux architectures ont la mme puissance dexprese
sion.

1.3

Codage des instructions

Nous avons donn au paragraphe 1.2.1 des exemples dinstructions, en ine


diquant bri`vement quelles sont les informations ` coder. Nous prcisons cie
a
e
dessous lensemble des informations ` coder, avant dtudier les contraintes
a
e
qui portent sur la structure du code. Le codage complet dune instruction
est obtenu par juxtaposition des codages des direntes informations qui la
e
dnissent ; on dit que le codage dune instruction est structur en champs
e
e
(Cf. Figure 12.2) ; cest aussi le terme utilis pour les noms des direntes
e
e
informations qui composent un type construit n-uplet (Cf. Chapitre 4).

1.3.1

Codage de la nature de lopration


e

Lopration eectue est prise parmi toutes les oprations de lunit de cale
e
e
e
cul, les transferts entre mmoire et registres, les branchements, les instructions
e
spciques ventuelles (Cf. Paragraphe 1.4 pour une liste dtaille dinstruce
e
e
e
tions).
Si le jeu dinstructions comporte n instructions, le codage compact de la
nature de lopration demande b = log2 n bits (lentier immdiatement
e
e
suprieur a log2 n). Il ny a aucune raison pour que le nombre dinstructions
e
`
dune machine soit exactement une puissance de 2, et il existe donc toujours au
moins une conguration dun vecteur de b boolens qui ne correspond ` aucune
e
a
instruction. Cela justie le cas derreur dans lalgorithme dinterprtation du
e
langage machine du paragraphe 1.6.2 ci-dessous, et constitue lune des causes
dinterruption logicielle tudies dans la partie VI.
e
e
On suppose que la nature dune instruction comporte implicitement linformation sur le nombre doprandes. Mme si lon imagine un langage machine
e
e
orant par exemple une addition binaire et une addition ternaire, on consid`re
e
que ce sont deux instructions direntes ` compter dans les n instructions,
e
a
et ` coder globalement. Cela donne un codage plus compact que de sparer
a
e
le codage de la nature de linstruction et le codage dun entier donnant le
nombre doprandes (qui pour une grande majorit des oprations est toujours
e
e
e
le mme). De mani`re gnrale, le choix de la structure des informations qui
e
e
e e
constituent une instruction, cest-`-dire le choix des champs, a une inuence
a
sur la compacit du codage.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

284

1.3.2

Le langage machine et le langage dassemblage

Codage des modes dadressage des param`tres


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Si le langage machine est tel quune mme opration accepte la dsignation


e
e
e
doprandes avec dirents modes dadressage, il faut coder le mode dadrese
e
sage de chacun des oprandes. Ce peut tre rduit ` 1 bit, comme dans le cas des
e
e
e
a
oprations arithmtiques du sparc : une instruction daddition, par exemple,
e
e
a toujours 3 param`tres, les emplacements des deux oprandes et lemplacee
e
ment du rsultat. Le rsultat et lun des oprandes sont forcment dans des
e
e
e
e
registres. Le deuxi`me oprande peut tre dans un registre ou tre une vae
e
e
e
leur immdiate. Pour distinguer ces deux cas, le codage du mode dadressage
e
de ce deuxi`me oprande comporte 1 bit. Dans le cas du 68000, en revanche,
e
e
toutes les oprations de calcul acceptent des oprandes dans des registres, ou
e
e
en mmoire avec des modes dadressage varis. Le codage complet du mode
e
e
dadressage de chaque oprande comporte 3 bits.
e
1.3.3

Codage des informations mises en jeu dans


le mode dadressage

La nature de linstruction, plus le mode dadressage des param`tres,


e
dtermine enti`rement quelle est la taille du reste du code (oprandes), et come
e
e
ment il faut linterprter. En reprenant la deuxi`me colonne du tableau 12.1, on
e
e
obtient les direntes informations ` coder : des entiers naturels (qui peuvent
e
a
reprsenter des adresses mmoire absolues), des entiers relatifs (qui peuvent
e
e
reprsenter des dplacements de branchements ou des oprandes doprations
e
e
e
e
arithmtiques), des numros de registres.
e
e
En gnral le nombre de registres est une puissance de 2, ce qui permet un
e e
codage compact et sans trous dun numro de registre. Sur le sparc, les 32
e
registres sont cods sur 5 bits. Toute conguration dun vecteur de 5 boolens
e
e
correspond ` un numro de registre existant.
a
e
Les entiers sont cods (en binaire pur ou complment ` 2) sur une taille
e
e
a
prdnie (cest toujours la mme, elle est donc implicite et non code). Le
e e
e
e
jeu dinstructions 68000 distingue une addition gnrale et une addition dite
e e
rapide, selon que lun des oprandes est un entier long (32 bits) ou un entier
e
court tenant sur un octet. Dans ce cas, la taille de lentier param`tre est en
e
fait code dans la nature de linstruction : il y a deux additions.
e
1.3.4

Structure du code

La gure 12.2 donne des exemples de structures de code. Le code dune


instruction compl`te comporte le codage de la nature de lopration, le codage
e
e
des modes dadressage des oprandes (si ncessaire), le codage des informae
e
tions eectives des oprandes (entiers, adresses, numros de registres). Ces
e
e
dirents codages doivent tre juxtaposs pour former le codage complet de
e
e
e
linstruction. Sur certaines familles de machines, les codes des direntes inse
tructions peuvent avoir des tailles direntes. Lorsque la taille est variable, elle
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Le langage machine

285

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

est enti`rement dtermine par la nature de linstruction et les modes dadrese


e
e
sage des oprandes. Ces deux informations doivent tre codes dans les pree
e
e
miers mots du code complet de linstruction, puisquils seront lus en premier.
En 68000 par exemple, le premier mot de 16 bits contient ces deux informations, plus les informations relatives ` lun des oprandes, si elles tiennent dans
a
e
la place restante.
Le choix du codage prcis est guid par des considrations matrielles,
e
e
e
e
qui portent sur la structure du circuit qui constitue linterface entre la partie
oprative et la partie contrle du processeur (Cf. Chapitre 14). Par exemple
e
o
les portions de code qui correspondent ` des numros de registres sont situes
a
e
e
au mme endroit quelle que soit linstruction, de mani`re ` simplier la pare
e a
tie oprative du processeur : les ls de slection de lensemble des bascules
e
e
qui ralise les registres sont toujours branchs sur les mmes bits du registre
e
e
e
instruction.
Cette contrainte, plus le fait que les valeurs immdiates sont ncessairement
e
e
contigus (cest plus pratique pour la gnration de langage machine depuis
e
e e
le langage dassemblage, et cela vite des chevauchements de nappes de ls
e
dans le circuit interpr`te), peut amener ` couper le codage de la nature de
e
a
linstruction. Par exemple, sur le sparc, la nature de linstruction est code
e
sur les bits 31, 30, et 19 ` 24. Entre ces deux champs on trouve 5 bits pour le
a
numro de registre destination.
e

1.4

1.4.1

Classes dinstructions usuelles


Instructions de calcul

En langage machine il ny a pas de typage des donnes, mais les types sont
e
implicites dans les oprations oertes. Certaines instructions ne sont utilises
e
e
que si le programmeur interpr`te la correspondance entre vecteurs de boolens
e
e
et entiers selon un certain code (binaire pur, complment ` 2, virgule ottante,
e
a
dcimal cod binaire, pixels...). Il existe des oprations qui ont un sens si on
e
e
e
interpr`te les vecteurs de bits comme le codage dentiers (ADD, branchements
e
sur codes de conditions enti`res, voir ci-dessous), et il existe des oprations
e
e
qui les interpr`tent comme des vecteurs de boolens (AND). En revanche il nen
e
e
existe pas qui les interpr`tent comme le code ASCII dun caract`re ; ce serait
e
e
le cas sil existait une instruction spcique du langage machine capable de
e
transformer un vecteur de bits reprsentant le caract`re a en vecteur de bits
e
e
reprsentant le caract`re A ; cette opration est videmment ralisable sur
e
e
e
e
e
tout processeur, mais en passant par le codage des caract`res par des entiers
e
ou des vecteurs de boolens. Les seuls types sont donc les entiers et les vecteurs
e
de boolens ; lextension MMX [Int97] et VIS orent de plus des oprations qui
e
e
interpr`tent les vecteurs de 32 bits comme 4 sous-vecteurs de 8 bits.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

286

Le langage machine et le langage dassemblage

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

31 3029
25 24
19 18
14 13 12
0
1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 00 0 0 0 1 0 1 0 1 0
numro
e
du reg.
dest. : 2

numro
e
du reg.
source : 1

Nature de lopration : Addcc


e

oprande immdiat : 42
e
e
(a)

Mode dadressage du deuxi`me


e
oprande : immdiat.
e
e

Nature de lopration : AddI


e
Taille de lopration long mot (32 bits)
e
:

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

Mode dadressage pour le rsultat :


e
registre donne
e
Numro de registre : 7
e

Valeur immdiate oprande :


e
e
42424242 cod sur 32 bits
e
(b)
(poids forts dabord).

Fig. 12.2 Structure du codage dune instruction :


(a) codage de linstruction addcc %r1, 42, %r2 du sparc ;
(b) codage de linstruction addi 42424242, D7 du 68000 (noter que
4242424210 = 028757B216 ).

Oprations sur les entiers Tous les processeurs orent les oprations dade
e
dition et de soustraction dentiers. La mme instruction est utilisable pour les
e
oprations sur les naturels cods en binaire bur et sur les entiers cods en
e
e
e
complment ` deux, grce aux bonnes proprits du codage en complment `
e
a
a
ee
e
a
deux (Cf. Chapitre 3). La dirence dinterprtation du codage des entiers ape
e
para dans les instructions de branchement conditionnels (paragraphe 1.4.3).
t
Certains processeurs orent galement la multiplication et la division
e
enti`re ; mais ce sont des instructions coteuses en temps ou en surface du cire
u
cuit interpr`te. Le sparc ore une instruction mulscc eectivement excutable
e
e
en temps gal ` celui dune addition, mais cette instruction ne constitue quun
e
a
pas de la multiplication 32 bits (la version 9 ore une vraie multiplication).
Pour raliser la multiplication de deux entiers 32 bits, il faut crire 32 instruce
e
tions mulscc en squence. Le 68000 ore deux instructions muls et mulu de
e
multiplication de deux entiers signs ou non de 16 bits, dont le rsultat est sur
e
e
32 bits ; il ore de mme deux instructions divs et divu.
e
Lorsque la multiplication et la division gnrale nexistent pas, on trouve
e e
toutefois les instructions de dcalage arithmtique, qui permettent la division
e
e
et la multiplication par des puissances de 2. (Cf. Chapitre 3, paragraphe 2.2.3).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Le langage machine

287

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Oprations sur les vecteurs de boolens Les oprations sur les vecteurs
e
e
e
de boolens sont les extensions bit ` bit des oprateurs boolens usuels et, ou,
e
a
e
e
non, nand, etc. Elles nexistent pas ncessairement toutes. Par exemple le sparc
e
ore AND et ANDN, OR et ORN, XOR et XORN, mais pas de NOT. ANDN (resp. ORN)
calcule la conjonction (resp. la disjonction), bit ` bit, du premier oprande
a
e
et de la ngation bit ` bit du second. Les proprits de lalg`bre de Boole
e
a
ee
e
permettent de fabriquer les oprateurs manquants en termes des oprateurs
e
e
disponibles.
Pour utiliser les oprations sur les vecteurs de boolens dans la compilae
e
tion des oprations boolennes des langages de haut niveau, il faut inventer
e
e
un bon codage des boolens du langage de haut niveau (Cf. Chapitre 4, parae
graphe 2.2.1 et chapitre 13, paragraphe 1.2).
Oprations structurelles Les oprations structurelles manipulent les vece
e
teurs de bits sans interprtation particuli`re de leur signication. Ce sont les
e
e
dcalages logiques, ` droite ou ` gauche. Un dcalage ` droite, combin avec
e
a
a
e
a
e
la conjonction boolenne bit ` bit utilise comme masquage, permet dexae
a
e
miner individuellement tous les bits dun vecteur de bits, ou dextraire des
sous-champs de longueur quelconque.
Par exemple, lalgorithme suivant permet de calculer le nombre de 1 dans
a
e
un vecteur de bits. Il utilise une opration ET bit ` bit avec loprande 1 (ceste
a
`-dire le vecteur de bits qui na quun 1 en poids faible) pour tester le bit de
poids faible de V. A chaque tape, le vecteur V est dcal dun bit vers la
e
e e
droite.
lexique :
V : un vecteur de bits ; Nb : un entier 0
algorithme
Nb 0
tantque V = 0
si (V ET bit ` bit 1 = 1) alors Nb Nb+1
a
dcaler V dun bit vers la droite
e

Nombre doprandes Toutes les oprations examines ci-dessus sont bie


e
e
naires : elles ont deux oprandes et un rsultat. On pourrait donc penser que
e
e
les instructions du langage machine doivent ncessairement dsigner 3 emplacee
e
ments mmoire ou registres. Cest le cas pour les machines dites ` 3 rfrences
e
a
ee
comme le sparc, o` lon crit par exemple ADD g1, g2, g3 pour raliser lafu
e
e
fectation g3 g1+g2. Une rfrence est la dsignation dun oprande ou
ee
e
e
du rsultat, que ce soit un numro de registre ou une adresse en mmoire.
e
e
e
Mais il est possible de rduire le nombre de rfrences, et lon obtient ainsi des
e
ee
machines dites ` 0, 1 ou 2 rfrences (voir exercice E12.1).
a
ee
Le 68000 est une machine ` deux rfrences. Les oprations sont de la forme
a
ee
e
dest source op dest, et linstruction contient donc la dsignation de 2
e
emplacements seulement. Lun est utilis ` la fois en lecture et en criture.
ea
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

288

Le langage machine et le langage dassemblage

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Si lon veut maintenant ne dsigner quun emplacement, il faut que le


e
deuxi`me soit implicite. Cest le cas si lon introduit un registre dit accue
mulateur not Acc. Les instructions sont alors de la forme : Acc Acc +
e
source. Le registre accumulateur doit tre charg auparavant par un transfert
e
e
mmoire-registre ou registre-registre.
e
Finalement, on peut imaginer une machine ` 0 rfrence, o` les positions
a
ee
u
des deux oprandes et du rsultat sont implicites. On obtient, par exemple,
e
e
une machine ` pile. Toute opration dpile les deux valeurs de sommet de pile
a
e
e
comme oprandes, et empile le rsultat de lopration. Une instruction est donc
e
e
e
de la forme : PILE[Sp+1] PILE[Sp] + Pile[Sp+1] ; Sp Sp+1, si
Sp pointe sur le dernier emplacement occup et si la pile progresse en diminuant
e
Sp.
1.4.2

Instructions de transfert entre mmoire et registres


e

Pour raliser un transfert de ou vers la mmoire, il faut pouvoir dsigner un


e
e
e
emplacement en mmoire, cest-`-dire fournir ladresse de son premier octet,
e
a
et sa taille en nombre doctets.
Taille de transferts La taille nest pas ` proprement parler un oprande
a
e
de linstruction. Les tailles des transferts disponibles sont le plus souvent des
constantes, en petit nombre. En gnral les tailles prvues vont de 1 octet (la
e e
e
plus petite unit adressable sur une machine) jusqu` la taille du plus long
e
a
mot manipulable par le jeu dinstructions, qui est aussi la taille des registres
de donnes (Cf. Chapitres 9 et 15). Sur sparc on trouve ainsi des transferts de
e
1, 2, ou 4 octets ; on trouve aussi un transfert double de 8 octets, qui concerne
deux registres de numros conscutifs.
e
e
Noter toutefois quil existe sur le vax une instruction de copie de blocs
mmoire, dont la taille est un vrai param`tre, donn par exemple par le contenu
e
e
e
dun registre, ` lexcution. Un telle instruction a un eet quivalent ` celui
a
e
e
a
dune boucle de transferts de taille xe. Elle peut avoir un intrt si le procesee
seur garantit une excution plus rapide de la forme ` instruction unique, par
e
a
rapport ` la forme avec boucle (transferts de taille xe, comptage et branchea
ments explicites).
Spcication compl`te des transferts Pour raliser un transfert de ou
e
e
e
vers un (ou plusieurs) registres, il faut dsigner un registre (par son numro)
e
e
et ventuellement un sous-champ de ce registre.
e
Prenons lexemple du jeu dinstructions sparc. Il y a 32 registres de 32
bits. Les transferts mmoire sont de taille 1, 2, 4 ou 8 octets. Une instruction
e
de transfert mmoire vers registre est de la forme : LOAD t a r o` t est une
e
u
constante parmi 1, 2, 4, 8 ; a est une adresse doctet (voir tableau 12.1 pour
lobtention de cette adresse) ; r est un numro de registre, dans lintervalle
e
[0, 31]. Pour un transfert de taille 4, lopration est parfaitement spcie, la
e
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Le langage machine

289

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

source et la destination ayant la mme taille. Pour des transferts de taille 1 ou


e
2, deux questions se posent : puisque la destination (un registre, de 4 octets)
est plus grande que le transfert demand, dans quelle portion du registre doite
on crire ? Doit-on inscrire une valeur et, si oui, laquelle, dans la portion de
e
registre inutilise ?
e
Sur le sparc, les transferts ont toujours pour destination la portion de
poids faible des registres. La portion de poids fort est complte, soit par des
ee
zros (on parle alors de transfert non sign), soit par une recopie du bit de
e
e
poids fort de la portion transfre (on parle alors de transfert sign). Cette
ee
e
opration rappelle bien videmment lopration dextension de format, tenant
e
e
e
compte du codage en binaire pur ou complment ` deux, que nous avons tudie
e
a
e
e
au chapitre 3, paragraphe 3.2.1.
Sur le 68000, la portion dun registre qui nest pas destination du transfert
est laisse intacte.
e
Sur le sparc, les instructions de transfert mmoire vers registres, de taille
e
infrieure a 4, existent donc en deux versions : la version dite signe, et la
e
`
e
version non signe. Ces direntes conventions sont illustres et dtailles dans
e
e
e
e
e
la gure 12.3 (cas du LOAD de sparc). Les noms des instructions sont obtenus
en combinant LD (pour LOAD) ou ST (pour STORE), le caract`re sign ou non
e
e
du transfert (U pour unsigned, rien pour signed), et un caract`re spciant
e
e
la taille : B pour byte, cest-`-dire octet, H pour half, rien pour la taille dun
a
mot, D pour double. Dans le cas des transferts doubles, 2 registres R et R
interviennent. Linstruction nen dsigne quun ; le deuxi`me est implicite, cest
e
e
le registre de numro suivant. De plus, le registre indiqu doit avoir un numro
e
e
e
pair. On retrouve l`, pour lensemble des registres, lquivalent des contraintes
a
e
dalignement en mmoire.
e
Lors dun transfert registre vers mmoire (cas des STORE du sparc, e
gure 12.3), des questions symtriques se posent. Si la taille du transfert
e
est infrieure ` celle du registre source, quelle portion du registre doit-on
e
a
transfrer ? Dautre part, si la taille du transfert est suprieure ` loctet,
e
e
a
ladresse en mmoire doit satisfaire les contraintes de cadrage en mmoire
e
e
mentionnes au chapitre 4, paragraphe 2.3. Si ladresse en mmoire est une
e
e
constante, cette contrainte dalignement est vriable statiquement, cest-`e
a
dire avant lexcution, et le programme peut-tre rejet. En gnral, toutefois,
e
e
e
e e
ladresse en mmoire nest pas une constante ; cest par exemple le contenu dun
e
registre, dans le cas de ladressage indirect par registre. La contrainte dalignement est alors vrie dynamiquement, cest-`-dire au moment de lexcution
e e
a
e
du programme par le processeur.
Nous verrons au chapitre 24 que ces erreurs dalignement en mmoire lors des
e
transferts font partie des exceptions ou interruptions logicielles prvues dans
e
un processeur.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

290

Le langage machine et le langage dassemblage

Oprations LOAD
e
w
x
y
z

Mmoire
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

a
a+1
a+2
a+3

registre 32 bits

31

24 23 16 15

87

Oprations STORE
e

1 octet

transfert
MEM R

taille
4

sign
e

inst.
LD

MEM R

non

LDUH

MEM R

oui

LDH

MEM R

non

LDUB

MEM R

oui

LDB

MEM R, R

LDD

R MEM

ST

R MEM

STH

R MEM
R, R MEM

1
8

STB
STD

eet
R[7..0] 1 MEM[a+3] ;
R[15..8] 1 MEM[a+2] ;
R[23..16] 1 MEM[a+1] ;
R[31..24] 1 MEM[a]
R[7..0] 1 MEM[a+1]
R[15..8] 1 MEM[a] ;
R[31..16] 2 ext16(0)
R[7..0] 1 MEM[a+1]
R[15..8] 1 MEM[a] ;
R[31..16] 2 ext16(R[15])
R[7..0] 1 MEM[a] ;
R[31..8] 3 ext24(0)
R[7..0] 1 MEM[a] ;
R[31..8] 3 ext24(R[7])
idem LD plus :
R[7..0] 1 MEM[a+7] ;
R[15..8] 1 MEM[a+6] ;
R[23..16] 1 MEM[a+5] ;
R[31..24] 1 MEM[a+4]
MEM[a] 1 R[31..24] ;
MEM[a+1] 1 R[23..16] ;
MEM[a+2] 1 R[15..8] ;
MEM[a+3] 1 R[7..0]
MEM[a] 1 R[15..8] ;
MEM[a+1] 1 R[7..0]
MEM[a] 1 R[7..0]
idem ST plus :
MEM[a+4] 1 R[31..24] ;
MEM[a+5] 1 R[23..16] ;
MEM[a+6] 1 R[15..8] ;
MEM[a+7] 1 R[7..0]

Fig. 12.3 Transferts registres vers mmoire et mmoire vers registres du sparc. On
e
e
note ext16(b) (resp. ext24(b)) le mot de 16 (resp. 24) bits obtenu en copiant
16 fois (resp. 24 fois) le boolen b.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Le langage machine

1.4.3

291

Instructions de rupture de squence


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Pour dnir compl`tement les instructions de rupture de squence, il faut


e
e
e
spcier, dune part linstruction de destination, dautre part la condition de
e
branchement. Les branchements sont dits relatifs ou absolus selon la mani`re
e
dindiquer linstruction de destination. Ils sont dits inconditionnels lorsque la
condition est la constante boolenne vrai. Si la condition de branchement a la
e
valeur faux il y a passage en squence.
e
Branchements relatifs ou absolus Le branchement peut tre relatif `
e
a
la position courante du compteur programme linstruction spcie alors un
e
dplacement d en avant ou en arri`re par rapport au compteur programme ou
e
e
absolu linstruction spcie une nouvelle valeur v du compteur programme,
e
qui doit craser lancienne. Leet dune instruction de branchement relatif sur
e
le compteur programme not PC est de la forme : PC PC + d. Leet dune
e
instruction de branchement absolu, au contraire, est de la forme PC v.
Que lon indique un dplacement ou une adresse de destination absolue, il
e
faut choisir un mode dadressage : par une constante immdiate, indirectement
e
par un registre, avec ou sans dplacement, etc.
e
Noter que la notion de branchement relatif ou absolu est parfaitement
indpendante du mode dadressage direct ou indirect. On peut envisager toutes
e
les combinaisons. Il existe ainsi sur le sparc une instruction jmpl de branchement inconditionnel, absolu, indirect par registre avec dplacement : le codage
e
de linstruction contient deux numros de registres n1 et n2 (ou bien un numro
e
e
de registre n et une constante relative d). Leet sur le compteur programme
est de la forme PC Regn1 + Regn2 (ou bien PC Regn + d). Il existe
aussi une instruction ba de branchement inconditionnel, relatif, immdiat.
e
Donne du dplacement En cas de branchement relatif, le dplacement est
e
e
e
un nombre doctets, spciant lcart entre la valeur courante de PC et ladresse
e
e
de linstruction de destination. Noter que dans la plupart des machines la
valeur courante de PC est dj` sur linstruction suivante (Cf. Chapitre 14). Le
ea
dplacement nest pas un entier tout ` fait quelconque : il est pair si le codage
e
a
des instructions se fait sur un nombre pair doctets. Sur le processeur sparc,
ce dplacement est mme toujours multiple de 4, car toutes les instructions
e
e
sont codes sur un format xe de 4 octets (voir paragraphe 1.3). On peut
e
alors proter de cette information pour gagner de la place dans le codage des
instructions de branchement : au lieu de coder le dplacement exact d, on code
e
d = d/4, ce qui conomise 2 bits. Leet de linstruction est alors de la forme :
e
PC PC + d 4 (voir tableau rcapitulatif des modes dadressages 12.1).
e
Expression dune condition de branchement Dans un langage de programmation de haut niveau, les conditions des structures conditionnelles ou
itratives sont des expressions boolennes quelconques qui font intervenir des
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

292

Le langage machine et le langage dassemblage

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

constantes, des noms de variables du lexique, des appels de fonctions, etc.


(Cf. Chapitre 4, paragraphe 1.5).
Dans une instruction du langage machine, il para dicile de coder
t
une condition quelconque faisant intervenir le contenu des registres ou de la
mmoire et dventuels appels de fonctions.
e
e
Une solution consiste ` utiliser les instructions de calcul du langage maa
chine pour calculer la valeur boolenne de lexpression qui conditionne un
e
branchement. On obtient ainsi, apr`s un certain nombre dtapes, une valeur
e
e
boolenne, range par exemple dans un registre ou une partie de registre. Le
e
e
branchement conditionnel peut ensuite tre eectu dapr`s la valeur de ce
e
e
e
registre.
On peut donc fabriquer un langage machine susant en ajoutant aux instructions de calcul, une unique instruction de branchement conditionnel de la
forme BV n a. Cette instruction est un branchement si condition vraie, par
exemple absolu, avec adressage absolu. Leet sur le compteur programme PC
est : si Regn = vrai alors PC a sinon PC PC+1.
Considrons le programme :
e
si (A+2*B < 4 et C 0) alors ... sinon ...

On peut toujours le transformer en :

X : un boolen { une nouvelle variable, non utilise ailleurs }


e
e
X A+2*B < 4 et C 0
si X alors ... sinon ...

Cette transformation est aisment gnralisable ` toutes les structures


e
e e
a
conditionnelles ou itratives du langage dactions. Elle permet de comprendre
e
comment produire une squence dinstructions du langage machine correspone
dante. Il sut dcrire tout dabord une squence dinstructions de calcul et/ou
e
e
de transferts mmoire destines ` placer dans un registre, par exemple Reg1 , la
e
e a
valeur boolenne de la condition (A+2*B < 4 et C 0). Suit immdiatement
e
e
une instruction BV 1 a, qui ralise un branchement dapr`s la valeur de Reg1 .
e
e
(Pour une explication dtaille du codage des structures conditionnelles et
e
e
itratives en langage machine, voir chapitre 13, paragraphes 1.3 et 1.4).
e
En ralit la plupart des processeurs orent une mthode intermdiaire
e e
e
e
entre lunique instruction de branchement conditionnel prsente ici et
e
e
lhypothtique instruction universelle contenant le codage dune condition
e
boolenne quelconque. Ces mthodes sont bases sur lutilisation des indie
e
e
cateurs arithmtiques (ou ags en anglais) fournis par le processeur. Dans
e
certains cas elles saccompagnent de lutilisation du mot dtat du processeur,
e
qui permet de stocker temporairement la valeur de ces indicateurs.
Indicateurs arithmtiques et mot dtat Lide est simple : lors de toute
e
e
e
opration de calcul, lunit arithmtique et logique du processeur produit des
e
e
e
comptes-rendus sous la forme de 4 boolens dits indicateurs arithmtiques, qui
e
e
peuvent tre stocks dans une portion de registre interne spcialis, appel mot
e
e
e
e
e
dtat du processeur. Noter que sur le sparc, les instructions arithmtiques
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Le langage machine

293

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
icie
J.ard , F C.
lles
, P . M Fer
ara na et M
h.
Wa ni nde at
ri
e
z,
ille nch
elle
i,
s

existent en deux exemplaires : une version qui ne touche pas aux indicateurs,
et une version qui les met ` jour.
a
Ces 4 indicateurs sont : Z, qui est vrai si le rsultat de lopration est 0 ; C,
e
e
qui est vrai si lopration arithmtique a produit une retenue (C pour Carry)
e
e
et qui, si lon interpr`te les oprandes et le rsultat comme des entiers naturels
e
e
e
cods en binaire pur, signie que le rsultat nest pas codable sur le mme
e
e
e
nombre de bits que les oprandes ; N, qui est le bit de poids fort du rsultat
e
e
(si ce rsultat est interprt comme le codage en complment ` 2 dun entier
e
ee
e
a
relatif, si N vaut 1 alors le rsultat est ngatif) ; V, qui na de sens que si
e
e
lon interpr`te les oprandes et le rsultat comme des entiers relatifs cods en
e
e
e
e
complment ` 2, et qui est vrai si le rsultat nest pas reprsentable sur le mme
e
a
e
e
e
nombre de bits que les oprandes (V pour oVerow). Reprendre le chapitre 3
e
pour un expos dtaill de la signication des divers indicateurs arithmtiques.
e e
e
e
Si lon consid`re un processeur qui travaille sur des nombres rels
e
e
reprsents en virgule ottante, il faut tenir compte dautres indicateurs ; il
e
e
existe pour la reprsentation en virgule ottante une notion de dbordement
e
e
pour des valeurs trop petites ou trop grandes, non reprsentables avec la
e
prcision disponible.
e

Expression des conditions de branchement ` base dindicateurs


a
arithmtiques et de mot dtat Considrons le cas o` les indicateurs
e
e
e
u
arithmtiques sont stocks dans un registre apr`s lexcution de chaque
e
e
e
e
opration arithmtique. On introduit alors des oprations de branchement
e
e
e
dapr`s les valeurs de ces indicateurs (mme ide que pour le branchement
e
e
e
unique BV prsent plus haut, mais la condition peut utiliser 4 boolens au lieu
e
e
e
dun seul).
Sur des processeurs 8 bits comme le 6502, il y a 8 branchements, dapr`s
e
la valeur vrai ou faux des 4 boolens.
e
Sur la plupart des processeurs actuels, il y a 16 branchements, selon des
fonctions boolennes prdnies des indicateurs Z, N, C et V, correspondant
e
e e
aux tests de comparaison usuels entre deux entiers naturels ou relatifs. On
trouve ainsi un branchement BLE (Branch on Less or Equal) dont la condition est Z ou (V et non N ou non V et N). Lorsquon a eectu une soustrace
tion entre deux entiers A et B, les bits du registre dtat sont tels que cette
e
condition est vraie si et seulement si A B, en interprtant A et B comme des
e
entiers relatifs cods en complment ` 2, pour faire la comparaison. En eet,
e
e
a
Z est vrai quand A = B, et la partie V et non N ou non V et N signie que
A < B, en tenant compte des cas o` la soustraction dborde. Nous donnons
u
e
les 16 fonctions boolennes usuelles au paragraphe 1.5. Lexercice E12.7 tudie
e
e
la formule boolenne associe au branchement BLE.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

294

Le langage machine et le langage dassemblage

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Expression des conditions de branchement ` base dindicateurs


a
arithmtiques sans mot dtat Sur certains processeurs, on peut troue
e
ver des instructions qui combinent un test et un branchement. Par exemple,
le processeur mips r10000 fournit une instruction qui combine un test et un
branchement conditionnel sur les entiers. La condition est soit lgalit de deux
e
e
registres, soit la comparaison dun registre par rapport ` zro (= 0, < 0, > 0,
a e
0). Considrons le fragment de programme :
e
A, B : des entiers
si A = B alors ... sinon ...

Le code produit est simple : il nest pas ncessaire de calculer la valeur de


e
la condition boolenne A = B avant deectuer un branchement, si les deux
e
entiers sont dans des registres. On crit une seule instruction de la forme
e
BrEgal n1 n2 a dont leet est :
si Regn1 = Regn2 alors PC a sinon PC PC+1.
Toutefois, pour coder si A < B, il faut tout dabord eectuer une soustraction, et en placer le rsultat dans un registre explicitement manipul par le
e
e
programmeur.
Sauts ` des sous-programmes Enn tous les processeurs fournissent un
a
moyen de transfrer le contrle ` un sous-programme, avec sauvegarde de
e
o a
ladresse de dpart, pour reprendre le ot normal des instructions quand le
e
sous-programme se termine.
Considrons le programme suivant, dans lequel JSR est une intruction de
e
saut ` un sous-programme, RTS est linstruction de retour de sous-programme
a
et Inst-i dnote une instruction de calcul quelconque (ne provoquant pas
e
de rupture de squence). JSR a comme oprande une tiquette qui dsigne
e
e
e
e
le sous-programme ; lexcution de JSR provoque un branchement (donc
e
une rupture de squence) au sous-programme dsign avec sauvegarde de
e
e
e
ladresse qui suit linstruction JSR. Linstruction RTS provoque un retour
de sous-programme cest-`-dire un branchement ` ladresse qui avait t
a
a
ee
prcdemment sauvegarde. En cas de branchements successifs ` des souse e
e
a
programmes, les adresses de retour doivent tre gres en pile.
e
ee
1
2
3
4
5
6

Inst-1
JSR SP1
Inst-2
Inst-3
JSR SP2
Inst-4

SP1 Inst-5
Inst-6
RTS

SP2 Inst-7
Inst-8
JSR SP1
Inst-9
RTS

Lexcution de ce programme en terme des instructions Inst-i peut tre


e
e
dcrite par la squence : Inst-1 (Inst-5 Inst-6) Inst-2 Inst-3 (Inst-7
e
e
Inst-8 (Inst-5 Inst-6) Inst-9) Inst-4 dans laquelle nous avons utilis une
e
parenth`se ouvrante chaque fois quun appel ` un sous-programme (instruce
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Le langage machine

295

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

tion JSR) est excut et une parenth`se fermante lors du retour correspondant
e e
e
(instruction RTS). Lors du premier appel (excution de JSR SP1) ladresse saue
vegarde est 3 ; lexcution de linstruction RTS eectue le retour ` cette adresse.
e
e
a
Linstruction de branchement avec sauvegarde de ladresse de dpart est
e
gnralement spcique : il sagit dune instruction de branchement qui nest
e e
e
pas ordinaire puisquil lui faut intgrer une sauvegarde. Or apr`s le saut il est
e
e
trop tard pour sauvegarder ladresse do` lon vient ; avant le saut il nest pas
u
toujours tr`s simple de la calculer. Selon les machines ladresse sauvegarde
e
e
est ladresse qui suit le branchement, ou ladresse du branchement elle-mme ;
e
le retour de sous-programme doit tre cohrent avec ce choix.
e
e
Les instructions de branchement ` des sous-programmes peuvent tre aba
e
solues ou relatives, et ladressage peut-tre direct ou indirect par registre, avec
e
ou sans dplacement. Sur le sparc on dispose de deux instructions de brane
chement avec sauvegarde, qui peuvent donc tre utilises pour coder des sauts
e
e
a
` des sous-programmes : call et jmpl. call est un branchement relatif `
a
adressage direct, qui sauvegarde sa propre adresse dans un registre, toujours le
mme. jmpl est un branchement absolu ` adressage indirect par registre avec
e
a
dplacement, qui sauvegarde sa propre adresse dans un registre spci par
e
e e
linstruction.
Nous dtaillons au chapitre 13 lutilisation des instructions de saut ` des
e
a
sous-programmes, et la structure de pile sous-jacente, pour le codage des actions et fonctions paramtres des langages impratifs usuels, comme celui
e e
e
prsent au chapitre 4.
e
e

1.4.4

Combinaison test/instruction sans branchement

On trouve sur certains processeurs, par exemple mips r10000, ultrasparc, PentiumPro, des instructions de transfert de registres conditionnels.
Une telle instruction est conditionne par le rsultat de lopration prcdente
e
e
e
e e
et permet dviter des branchements explicites. Nous empruntons ` [SL96]
e
a
lexemple suivant :
A, B : des entiers
A min (A, B)

Le code produit est de la forme :

{ supposons A dans le registre r1 et B dans le registre r2 }


SUB r1, r2, r3
{ cest-`-dire r3 r1 r2 }
a
{ cest-`-dire : si r3 > 0 alors r1 r2 }
a
MOV COND GT r3, r2, r1

La question intressante avec ce type de langage machine est : comment


e
crire un algorithme de traduction des langages de haut niveau en langage
e
machine qui prote au mieux de ces instructions sophistiques ? Les compie
lateurs pour machines de ce type font appel ` des techniques assez labores
a
e
e
doptimisation de code.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

296

Instructions spciales
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

1.4.5

Le langage machine et le langage dassemblage

La plupart des langages machines comportent, outre les instructions


usuelles prsentes jusque l`, des instructions spciques imposes par des
e
e
a
e
e
contraintes dordres assez divers.
Par exemple, on trouve sur certaines machines de la famille x86
des instructions spciques in et out pour le contrle des priphriques
e
o
e
e
dentre/sortie. Nous verrons au chapitre 16 un exemple dtaill dans lequel
e
e
e
la commande du coupleur dentre/sortie est compl`tement assimilable ` une
e
e
a
criture en mmoire, et peut donc se faire par des instructions de transfert
e
e
vers la mmoire dj` dnies. Du point de vue du concepteur du langage mae
ea e
chine, cela implique que les adresses dacc`s ` la mmoire, telles quelles sont
e a
e
produites par le processeur (qui les lit dans le codage des instructions) ` desa
tination des bo
tiers mmoire (Cf. Chapitre 15) sont ensuite aiguilles vers de
e
e
la mmoire vritable ou vers un circuit dentres/sorties, dapr`s leur valeur ;
e
e
e
e
typiquement, un intervalle dadresses est rserv aux circuits dentres/sorties.
e
e
e
Si les connexions du processeur ` la mmoire et aux priphriques ne vrient
a
e
e
e
e
pas cette contrainte, le processeur doit mettre lui-mme une indication daie
e
guillage, et cela ne peut se faire que si linstruction elle-mme comporte line
formation ncessaire. Do` lexistence dinstructions spciques in et out.
e
u
e
Le processeur sparc comporte une instruction tr`s spcique sethi (pour
e
e
SET High bits) ncessaire ` linstallation dune valeur immdiate de 32 bits
e
a
e
dans un registre. En eet, toutes les instructions sparc sont codes sur 32
e
bits exactement, sans mot dextension. Une valeur immdiate v de 32 bits ne
e
peut donc pas tenir dans ce codage ; il ny a pas dinstruction de la forme set
v, r, o` v est une valeur immdiate de 32 bits et r un numro de registre.
u
e
e
Comment raliser une telle opration ? Le jeu dinstructions sparc propose
e
e
de raliser laectation dune constante 32 bits ` un registre en deux inse
a
tructions du langage machine : la premi`re aecte les 22 bits de poids fort
e
du registre ; la deuxi`me met ` jour les 10 bits de poids faible sans modier
e
a
les 22 bits de poids fort (une instruction comme add ou or avec une valeur
immdiate sur 13 bits convient). Pour faciliter lcriture de tels couples dinse
e
tructions, le langage dassemblage ore des macro-notations %hi et %lo qui
permettent dextraire respectivement les 22 bits de poids fort et les 10 bits de
poids faible dune constante. On crit ainsi : sethi %hi(0x0A08CF04), %r1 ;
e
or %r1, %lo(0x0A08CF04), %r1. En langage machine, la valeur immdiate
e
contenue dans linstruction or est 0x304 et celle contenue dans linstruction
sethi est 0x028433.
On trouve galement des instructions daddition ADDX et de soustrace
tion SUBX qui prennent en compte comme troisi`me oprande la retenue de
e
e
lopration prcdente (prsente dans le bit C du mot dtat). En encha
e
e e
e
e
nant
de telles instructions, on ralise laddition dentiers cods en complment `
e
e
e
a
2 ou en binaire pur sur plusieurs mots de 32 bits. Lexercice E12.6 dtaille
e
lutilisation de cette instruction.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Le langage machine

297

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Finalement, la plupart des langages machines comportent des instructions


spcialement conues pour faciliter la traduction des langages de haut niveau.
e
c
Nous dtaillons au chapitre 13 lexemple des instructions link et unlink du
e
68000, ou save et restore du sparc.

1.5

Description du langage machine par le lexique dune


machine squentielle ` actions
e
a

Pour un algorithme donn, pour comprendre le langage machine, on peut


e
dnir une machine squentielle ` actions (Cf. Chapitre 5) dont : 1) les actions
e
e
a
sont les instructions de calcul disponibles du langage machine ; 2) les prdicats
e
sont les conditions de branchement oertes par le langage machine ; 3) les
transitions sont les branchements conditionnels ou inconditionnels et le passage
en squence du langage machine.
e
Ces machines squentielles ont un lexique restreint caractris par : des
e
e e
branchements uniquement binaires, des oprations sur des vecteurs de bits de
e
longueur xe, pris dans des registres ou dans le tableau MEM reprsentant la
e
mmoire ; des prdicats de branchement pris dans un ensemble prdni de
e
e
e e
formules boolennes ` base dindicateurs N, Z, C et V.
e
a
La gure 12.4 donne le lexique dune telle machine squentielle ` ace
a
tions. La gure 12.5 donne un exemple dalgorithme exprim comme machine
e
squentielle ` actions. Nous verrons au chapitre 13 comment obtenir facilement
e
a
a
` partir de cette machine un programme en langage machine ou un texte du
langage dassemblage.

1.6

Algorithme dinterprtation du langage machine


e

Une autre mani`re de comprendre le langage machine est den donner un


e
algorithme dinterprtation.
e
Lorsque lon travaille sur un ordinateur dont le processeur a pour langage machine prcisment le langage machine considr, le programme en lane e
ee
gage machine est directement interprt par le processeur, qui constitue une
ee
ralisation cble de lalgorithme dinterprtation. Nous prcisons cette notion
e
a e
e
e
au chapitre 14.
Lorsque le langage machine est mul (Cf. Paragraphe 1.7.2) sur un ordinae
e
teur quelconque, lalgorithme dinterprtation est exprim dans un langage de
e
e
programmation comme C, compil (cest-`-dire traduit en langage machine de
e
a
lordinateur hte) puis excut sur cet ordinateur (voir chapitre 18 pour plus
o
e e
de dtails sur la dirence entre interprtation et compilation).
e
e
e
1.6.1

Un petit langage machine

Nous considrons un langage machine ` 5 instructions. La nature de linse


a
truction est code sur un octet. Il y a toujours un octet dextension contenant
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

298

Le langage machine et le langage dassemblage

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

{ Types mots de 8, 32 bits : }


Vecteur8 : un tableau sur [0..7] de boolens
e
Vecteur32 : un tableau sur [0..31] de boolens
e
{ Les 8 registres : }
R : un tableau sur [0..7] de Vecteurs32
NumReg : le type entier sur 0..7
{ La mmoire : }
e
MEM : un tableau sur [0..tmem1] de Vecteurs8
{ Les indicateurs doprations arithmtiques }
e
e
N, Z, C, V : des boolens
e
{ Les prdicats : }
e
fonctionA un boolen
e
{ fonctionA = vrai }
fonctionNev un boolen
e
{ fonctionNev = faux }
fonctionN un boolen
e
{ fonctionN = N }
fonctionZ un boolen
e
{ fonctionZ = Z }
fonctionC un boolen
e
{ fonctionC = C }
fonctionV un boolen
e
{ fonctionV = V }
fonctionNbar un boolen
e
{ fonctionN = non N }
fonctionVbar un boolen
e
{ fonctionVbar = non V }
fonctionCbar un boolen
e
{ fonctionCbar = non C }
fonctionZbar un boolen
e
{ fonctionZbar = non Z }
fonctionBGU un boolen
e
{ fonctionBGU = non (C ou Z) }
fonctionBGE un boolen
e
{ fonctionBGE = non (N ouexcl V) }
fonctionBG un boolen { fonctionBG = non (Z ou (N ouexcl V)) }
e
fonctionBLEU un boolen
e
{ fonctionBLEU = C ou Z }
fonctionBL un boolen
e
{ fonctionBL = (N ouexcl V) }
fonctionBLE un boolen
e
{ fonctionBLE = Z ou (N ouexcl V) }
{ Quelques actions : }
SoustReg : une action (les donnes un, deux, trois : 3 NumReg)
e
lexique
X : un entier dans [2331 , 2331 1]
algorithme
X R[un] - R[deux] { Cf. Chapitre 3, Paragraphes 2.2.5 et 3.2.3 }
si (R[un]31 et non R[deux]31 et non X31 ) ou (non R[un]31 et R[deux]31 et X31 )
alors V 1 sinon V 0
si (non R[un]31 et R[deux]31 ) ou (X31 et (non R[un]31 ou R[deux]31 ))
alors C 1 sinon C 0
Z si X31..0 = 0 alors 1 sinon 0
N X31
R[trois] X31..0
Fig. 12.4 Le langage machine dcrit par le lexique dune machine squentielle avec
e
e
actions. On ne dcrit ici que linstruction soustraction avec mise ` jour des
e
a
indicateurs arithmtiques
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Le langage machine

299

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

{ Calcul du pgcd de deux entiers


A0 et B0 strictement positifs par
soustractions successives }
{ Posons A = A0 et B = B0 }
tantque A = B
si A > B alors
A A B
sinon
B B A
{ proprit : A = B = pgcd(A0, B0) }
ee

SoustReg (1,2,3)

fonctionZ

fonctionZbar

SoustReg (1, 2, 3)
fonctionBGU

fonctionBLEU

SoustReg(1,2,1)

SoustReg(2,1,2)

fonctionA

fonctionA

fonctionA

Fig. 12.5 Traduction dun algorithme en machine squentielle ` actions et lexique rese
a
treint : la machine peut bien sr tre simplie. Initialement, A0 et B0 sont
u e
e
respectivement dans les registres 1 et 2.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

300

Le langage machine et le langage dassemblage

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

un numro de registre. Les instructions sont : ADD (addition dun registre


e
et dune valeur immdiate, donne dans un octet dextension), BT (branchee
e
ment inconditionnel absolu, adressage direct par registre, dont le numro est
e
donn dans un octet dextension), BZ (branchement si le rsultat de la derni`re
e
e
e
opration de calcul tait nul, relatif, direct par registre, numro dans un octet
e
e
e
dextension), INCRR (incrmentation dun registre, numro dans un octet dexe
e
tension) et INCRM (incrmentation dun mot mmoire, adressage indirect par
e
e
registre, numro dans un octet dextension). Une machine proche de celle-ci
e
est utilise au chapitre 14 ; une autre plus compl`te au chapitre 22.
e
e

1.6.2

Interprtation
e

Pour dcrire linterprtation dun programme crit dans notre petit langage
e
e
e
machine, nous supposons ici que le programme est install en mmoire, ` partir
e
e
a
de ladresse dbut. Le probl`me gnral de linstallation du codage binaire dun
e
e
e e
programme en mmoire, ou chargement, est tudi au chapitre 18.
e
e
e
Chaque instruction est code sur 1 octet, plus un ou deux octets dextene
sion. Lalgorithme dinterprtation est donn gure 12.6.
e
e
Noter la complexit de certaines actions, par exemple celle ncessaire `
e
e
a
linterprtation dune instruction dincrmentation en mmoire, avec adrese
e
e
sage indirect par registre : MEM[Reg[NumReg]] MEM[Reg[NumReg]] + 1.
Nous verrons au chapitre 14 les contraintes quimpose une telle action sur ce
quon appelle la partie oprative du processeur, cest-`-dire lunit de calcul,
e
a
e
les registres et les bus. Au niveau algorithmique, il est facile de remplacer cette
action complexe par une action quivalente :
e
temp MEM[Reg[NumReg]]
temp temp + 1
MEM[Reg[NumReg]] temp

qui fait appara un nouveau registre temp. Cette nouvelle forme permet de
tre
sparer lacc`s en criture de lacc`s en lecture ` la mmoire.
e
e
e
e
a
e
Noter galement le cas derreur lorsque le code dinstruction lu ne correse
pond ` aucune instruction valide (il est en eet possible que le codage de
a
lensemble des instructions en vecteurs de n bits ne constitue pas une fonction surjective, comme nous lavons signal au paragraphe 1.3.1). Dans un
e
programme dinterprtation du langage machine, on peut mettre un message
e
e
derreur. Lorsque le langage machine est directement interprt par le procesee
seur, cette erreur doit galement tre dtecte, et signale au programmeur.
e
e
e
e
e
Nous y revenons au chapitre 24, paragraphe 1.2.
En toute rigueur, il faudrait prvoir une dtection derreur lors de la lecture
e
e
dun numro de registre dans un octet : NumReg MEM[PC], ` moins de
e
a
supposer que toute conguration dun vecteur de 8 boolens correspond eectie
vement ` un numro de registre existant, cest-`-dire que la machine comporte
a
e
a
256 registres.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

301

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

1. Le langage machine

lexique
Vecteur8 : un tableau sur [0..7] de boolens
e
Vecteur32 : un tableau sur [0..31] de boolens
e
Reg : le tableau sur 0..31 de Vecteurs32
{ Les 32 registres }
NumReg : le type entier sur 0..7 ; adresse : le type entier sur 0..tmem1
MEM : un tableau sur [adresse] de Vecteurs8
{ La mmoire }
e
Z : un boolen
e
{ Indicateur dopration arithmtique }
e
e
ADD, BT, BZ, INCRR, INCRM : les constantes de type Vecteur8 : 0, 1, 2, 3, 4
Inst : un Vecteur8 ; PC : une adresse
dbut : une adresse ; taille : un entier > 0
e
{ MEM[dbut ... dbut+taille] contient les instructions }
e
e
algorithme
PC dbut
e
tantque PC < dbut + taille
e
Inst MEM[PC] { premier octet } ; PC PC + 1
{ Lire no registre, ncessaire pour toutes les instructions (1 octet) }
e
NumReg MEM[PC] ; PC PC + 1
{ lecture autres octets selon linstruction }
selon Inst :
Inst = ADD :
{ ajout de la valeur immdiate, troisi`me octet : }
e
e
Reg[NumReg] Reg[NumReg] + MEM[PC] ; PC PC + 1
si Reg[NumReg] = 0 alors Z 1 sinon Z 0
Inst = BT : { NumReg est le numro du registre dindirection }
e
PC Reg[NumReg]
Inst = BZ : { NumReg est le numro du registre dindirection }
e
si Z alors { branchement eectif }
PC PC + Reg[NumReg]
sinon { PC PC + 1 dj` eectu : passage en squence }
ea
e
e
Inst = INCRR : { NumReg est le numro du registre ` incrmenter }
e
a
e
Reg[NumReg] Reg[NumReg] + 1
si Reg[NumReg] = 0 alors Z 1 sinon Z 0
Inst = INCRM : { NumReg est le numro du registre dindirection,
e
qui donne ladresse de lemplacement mmoire `
e
a
incrmenter }
e
MEM[Reg[NumReg]] MEM[Reg[NumReg]] + 1
si MEM[Reg[NumReg]] = 0 alors Z 1 sinon Z 0
sinon :
{ code dinstruction invalide. Cf. Chapitre 24 }
Fig. 12.6 Algorithme dinterprtation du petit langage machine
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

302

1.7

Le langage machine et le langage dassemblage

Crit`res de choix dun ensemble dinstructions


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Nous rsumons ci-dessous quelques-unes des contraintes ` prendre en


e
a
compte globalement pour le choix dun jeu dinstructions. Cest un probl`me
e
qui ne se pose quaux concepteurs de processeurs, mais lutilisateur dun processeur doit en tre conscient.
e
1.7.1

Contraintes issues du co t du circuit interpr`te


u
e

Selon que lon privilgie la varit des instructions oertes par le langage
e
ee
machine, ou bien le cot du circuit interpr`te (le processeur), on construit des
u
e
jeux dinstructions assez dirents.
e
Lexemple typique consiste ` comparer un sparc et un 68000. Le sparc est
a
une machine dite RISC (pour Reduced Instruction Set Computer). En ralit
e e
lensemble des oprations eectivement disponibles nest pas si rduit que cela,
e
e
mais les modes dadressage sont rudimentaires : toute opration arithmtique
e
e
se fait sur des registres, et il nexiste que deux instructions spciques Load
e
et Store pour raliser des acc`s mmoire. Les instructions sont codables sur
e
e
e
un format xe, et leur interprtation est algorithmiquement simple. Le circuit
e
interpr`te est donc simple, lui aussi. La simplicit, en termes de matriel, se
e
e
e
traduit par la taille du circuit (en nombre de portes par exemple). Il reste donc
de la place pour quiper le processeur dun grand nombre de registres (peut
e
tre de lordre de 500, nous verrons au chapitre 13 comment utiliser ce banc de
e
registres du sparc pour rendre ecace le codage des procdures dun langage
e
dactions). Dautre part le format xe des instructions permet de les excuter
e
toutes dans le mme temps.
e
Le 68000, en revanche, autorise gnralement 8 modes dadressage pour les
e e
oprations. Les instructions ont un format variable selon quelles font rfrence
e
ee
ou non ` un oprande en mmoire, qui doit tre dsign par son adresse.
a
e
e
e
e
e
Lalgorithme dinterprtation est plus complexe. Le processeur est microproe
gramm (Cf. Chapitre 10) et les interprtations des instructions ont des dures
e
e
e
direntes.
e
1.7.2

Probl`mes de compatibilit
e
e

La dnition dun langage machine pour une nouvelle machine nest jae
mais totalement libre. Une nouvelle machine est en gnral une tape dans
e e
e
une gamme de machines similaires plus anciennes, pour lesquelles il existe de
nombreux programmes.
Lorsquun constructeur propose la machine de gnration n + 1, il doit ase e
surer que les programmes qui fonctionnent sur les machines de gnration n
e e
peuvent tre rutiliss. Cette notion cache de nombreux niveaux. Elle peut
e
e
e
signier, simplement, que le constructeur fournit avec sa nouvelle machine un
syst`me et un compilateur pour chaque langage qui tait disponible auparae
e
vant. Un utilisateur ayant programm en C doit transmettre dune machine
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Le langage machine

303

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

a
` lautre les chiers source de ses programmes, les compiler avec le nouveau
compilateur, et les excuter.
e
Malheureusement les utilisateurs tr`s anciens ont parfois perdu les chiers
e
source de leurs programmes, ou bien, ce qui est le cas pour presque tous les
logiciels commerciaux, ils navaient achet le programme que sous sa forme
e
excutable. Ils ne disposent donc plus que du chier objet, cest-`-dire un proe
a
gramme en langage machine de gnration n. Le constructeur doit alors garane e
tir la compatibilit ascendante de ses machines, cest-`-dire faire en sorte que
e
a
le chier objet de gnration n soit interprtable sur la machine de gnration
e e
e
e e
n + 1.
Il y a essentiellement deux solutions. Si les deux machines sont conceptuellement proches lune de lautre, le jeu dinstructions de la nouvelle machine
est dni comme un sur-ensemble du jeu dinstructions de lancienne. Les ane
ciens programmes sont excutables directement sur la nouvelle machine ; ils
e
nutilisent quune partie du nouveau jeu dinstructions, et sont donc peut-tre
e
moins ecaces que ce quils auraient pu tre en protant au mieux du nouveau
e
jeu dinstructions. Cest le cas entre sparc et ultrasparc.
Si les deux machines sont tr`s direntes, le constructeur fournit un
e
e
mulateur du langage machine n sur la machine n + 1. Un mulateur est un
e
e
programme, crit dans un langage quelconque, par exemple C, et compil sur
e
e
la nouvelle machine, avec le nouveau compilateur C. Ce programme est un
interpr`te du langage machine n. Le code objet des anciens programmes nest
e
donc plus directement interprt par un processeur, mais par un programme,
ee
lui-mme compil et excut sur un autre processeur.
e
e
e e
Cest le cas des macintosh : les processeurs 68000 et PowerPC sont tr`s
e
dirents et il ny a pas de compatibilit ascendante de leurs jeux dinstruce
e
tions. Apple fournit donc un mulateur de 68000 parmi les programmes du
e
logiciel de base fourni avec les machines ` PowerPC.
a
1.7.3

Langage machine et traduction des langages de haut niveau,


machines-langages

Le jeu dinstructions dune machine peut comporter, outre les classes dinstructions usuelles du mod`le Von Neumann, des instructions tr`s spciques
e
e
e
destines ` la traduction des programmes en langage de haut niveau.
e a
On peut dire ainsi que le 68000 est une machine pour la compilation des
langages ` structures de blocs (Pascal, C, Ada, etc.). Le jeu dinstructions
a
comporte les instructions link et unlink qui ne servent qu` grer lallocation
a e
dynamique de mmoire pour les variables dun tel type de langage (Cf. Chae
pitre 13).
De la mme mani`re, le processeur sparc ore les instructions save et
e
e
restore qui permettent de dcaler une fentre sur le banc de registres.
e
e
Ce mcanisme permet lallocation de mmoire pour le contexte local dune
e
e
procdure, et le passage de param`tres directement dans les registres, sans
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

304

Le langage machine et le langage dassemblage

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

acc`s mmoire.
e
e
De mani`re gnrale, la conception des processeurs est de plus en plus
e
e e
indissociable de la compilation des langages de haut niveau.
Si lon pousse le raisonnement ` lextrme, le jeu dinstructions dune maa
e
chine peut tre enti`rement conu pour lexcution de programmes crits dans
e
e
c
e
e
un langage donn. On a ainsi construit des machines LISP, des machines
e
PROLOG, etc. On entend parler galement de machines JAVA. Dans ce dere
nier cas, de quoi sagit-il exactement ? Les concepteurs du langage JAVA en
ont fait la publicit avec des arguments de portabilit et de scurit : JAVA
e
e
e
e
est dabord compil en une forme intermdiaire (appele byte code) qui est
e
e
e
ensuite excutable, par interprtation, sur tout ordinateur qui poss`de line
e
e
terpr`te adquat. Lexcution sous forme dinterprtation est censment plus
e
e
e
e
e
sre que lexcution par le processeur dun programme en langage machine ;
u
e
en eet, loutil dinterprtation peut eectuer quelques vrications sur les
e
e
oprations quil eectue. Si maintenant on propose un processeur dont le lane
gage machine est exactement le format intermdiaire produit par la premi`re
e
e
phase de compilation de Java, on obtient une machine Java.
En gnral, la question se pose de savoir sil vaut mieux concevoir une
e e
machine ddie ` un langage particulier, et capable dassurer une excution
e e a
e
ecace des programmes crits dans ce langage, ou bien concevoir un bon come
pilateur de ce langage pour machine universelle.

2.

Le langage dassemblage

Le langage machine ore dj` tout ce qui est thoriquement ncessaire pour
ea
e
e
programmer nimporte quel algorithme. Il lui manque une notation lisible et
manipulable par un tre humain. Le langage dassemblage est introduit ` cet
e
a
eet et ore donc :
tout dabord une notation textuelle aisment lisible du langage mae
chine, cest-`-dire : 1) une notation des oprations de la machine (les
a
e
mnmoniques) et de leurs oprandes, 2) un ensemble de directives de
e
e
rservation et dinitialisation de la mmoire
e
e
la possibilit dintroduire des commentaires
e

une notion de zones distinctes dans un programme : la zone des instructions


(TEXT) et la zone de donnes (DATA, BSS), ainsi quune notation qui
e
permet de reprer facilement les portions de programme appartenant ` lune
e
a
ou lautre de ces deux zones.
un mcanisme de nommage des positions dans la zone des instructions ou
e
dans la zone de donnes, qui permet de sabstraire des valeurs explicites
e
dadresses mmoire.
e
Notons quil peut exister plusieurs langages dassemblage pour le mme lane
gage machine. Les dirences rsident en gnral dans la notation des modes
e
e
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Le langage dassemblage

305

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

dadressage des oprandes dinstructions, ou dans les mots-cls utiliss pour


e
e
e
les directives de rservation mmoire. Inversement, un constructeur ore soue
e
vent des langages dassemblage aussi similaires que possible pour des machines
quipes de processeurs dirents. Ainsi la syntaxe des assembleurs SUN este
e
e
elle la mme, en ce qui concerne la dnition des zones de donnes, que le
e
e
e
processeur soit un 68000 ou un sparc.

2.1

Aspects de lexicographie et macros

Les langages dassemblage usuels orent la possibilit dintroduire des come


mentaires, dlimits par exemple comme en C par : /* et */ ou par un cae
e
ract`re, par exemple ! et la n de ligne qui suit.
e
Ils orent galement la notation des constantes enti`res dans plusieurs bases
e
e
(typiquement dcimal, octal prxe 0 , hexadcimal prxe 0x), ainsi
e
e
e
e
que la notation des constantes enti`res du code ASCII directement sous forme
e
de caract`res : a reprsente lentier not 97 en dcimal (voir chapitre 3 pour
e
e
e
e
des dtails sur le codage des caract`res).
e
e
Enn il est en gnral possible, soit dans lassembleur, soit dans un outil
e e
situ en amont et appel macro-assembleur, de dnir des constantes textuelles.
e
e
e
Ce mcanisme permet dviter une redondance dcriture, qui m`ne souvent `
e
e
e
e
a
des incohrences lors des modications. On crit ainsi en dbut de chier une
e
e
e
ligne de la forme tailleMax=400. Lors de lassemblage, une premi`re passe sur
e
le texte du programme remplace toute occurrence de la cha de caract`res
ne
e
tailleMax (sauf dans les commentaires) par la cha 400. Ce mcanisme
ne
e
est assez limit, mais dj` tr`s utile. Un outil comme m4, disponible dans les
e
ea e
environnements unix, permet de dnir des macros paramtres ; il est ainsi
e
e e
possible de nommer une suite dinstructions qui appara souvent.
t

2.2

Structuration des programmes

Un programme en langage dassemblage est destin ` tre traduit en laneae


gage machine, puis plac en mmoire vive pour excution par le processeur.
e
e
e
Un programme comprend gnralement des instructions et des donnes (rese e
e
pectivement lalgorithme et les descriptions de variables du lexique, dans la
terminologie du langage dactions prsent au chapitre 4). Le codage binaire
e
e
du programme comporte donc le codage dinstructions, et le codage de donnes
e
(des entiers, des caract`res, des donnes structures, etc.).
e
e
e
Or en langage machine, rien nest typ. Le vecteur de boolens 00101010
e
e
peut tre vu aussi bien comme : un entier naturel cod en binaire pur, le
e
e
code ASCII dun caract`re, 2 champs du codage dune instruction, la partie
e
exposant du codage dun rel, etc. Si la zone de mmoire sur laquelle on fait
e
e
travailler le processeur contient des cha de bits qui correspondent au codage
nes
doprations valides, on peut excuter ces oprations. Il ny a pas de dirence
e
e
e
e
intrins`que entre donnes et programmes.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

306

Le langage machine et le langage dassemblage

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Pour les besoins de la programmation, le langage dassemblage fournit une


notion de zone dans les programmes, et une notation correspondante. Les zones
sont : TEXT pour les instructions ; DATA pour les donnes statiques, cest-`e
a
dire dont la valeur est donne directement dans le texte du programme ; BSS
e
pour les donnes seulement dynamiques. Linuence de la distinction entre les
e
zones DATA et BSS est explique au chapitre 18.
e
Retenons simplement pour linstant que la zone TEXT contient les instructions, et la zone DATA un ensemble de donnes initialises que lon dsire placer
e
e
e
en mmoire vive lors de lexcution du programme. Ces donnes se comportent
e
e
e
comme des variables globales dun langage de programmation impratif : elles
e
ont la dure de vie du programme.
e

2.3

Nommage des adresses ou tiquettes


e

Pour reprer les instructions dans la zone TEXT, ou les donnes dans la
e
e
zone DATA, le langage dassemblage fournit la notion dtiquette. Ce mcanisme
e
e
permet de faire abstraction des adresses absolues et des dcalages exacts, dans
e
le cas des branchements par exemple.
On crit typiquement, dans un langage dassemblage possible du processeur
e
sparc (BNE, SUBcc et BA sont des mnmoniques. voir paragraphe suivant) :
e
boucle:

SUBcc r1, r2, r3


BNE
fin
! n instructions ici
BA
boucle

fin:

Les branchements conditionnels du sparc sont relatifs, et BNE fin exprime


donc le dcalage des adresses entre la position de linstruction elle-mme et la
e
e
cible du branchement, situe ` ltiquette fin. En langage machine, le code
e a e
de linstruction BNE fin comprend un entier relatif qui donne le dplacement
e
en nombre doctets, divis par 4, cest-`-dire le dplacement en nombre dinse
a
e
tructions puisque toutes les instructions du sparc sont codes sur 4 octets.
e
Pour BNE fin on trouve un dplacement de n + 2 ; pour BA boucle, on trouve
e
(n + 2).
La traduction des instructions de la forme BNE fin du langage dassemblage
en instructions du langage machine demande le calcul du dcalage eectif. Cest
e
un travail ralis par lassembleur, qui ralise une analyse lexicale du texte du
e e
e
programme, et associe ` chaque tiquette une adresse relative au dbut du
a
e
e
programme. Dans lexemple ci-dessus, on associe 0 ` boucle et (n + 3) 4 `
a
a
fin. Cest susant pour calculer les dcalages signals ci-dessus.
e
e
Lorsque les branchements sont absolus, lutilisation dune tiquette permet
e
de mani`re similaire de faire abstraction de ladresse absolue destination du
e
branchement. Du point de vue du programmeur en langage dassemblage, il
nest donc pas ncessaire de savoir si les branchements sont relatifs ou absolus.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Le langage dassemblage

307

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

En revanche lassembleur doit maintenant traduire les tiquettes en adresses


e
absolues, dans la mmoire vive de la machine, au moment de lexcution. Pour
e
e
cela il faut conna ladresse de base ` laquelle le programme sera install ;
tre
a
e
cette information nest pas toujours disponible au moment de lassemblage
du programme. Il se pose alors un nouveau probl`me : comment produire un
e
programme en langage machine indpendant de sa position dinstallation en
e
mmoire ? Un tel objet est appel code translatable. Nous tudions sa produce
e
e
tion au chapitre 18, paragraphe 2.3.
Dans des ordinateurs simples o` les programmes sont toujours installs `
u
e a
partir de la mme adresse en mmoire, il nest pas ncessaire de produire du
e
e
e
code translatable.

2.4

Zone des instructions, mnmoniques et notation des


e
oprandes
e

Observons Figure 12.7 un exemple, donn dans un langage dassemblage


e
possible pour processeur sparc.
On associe ` chaque instruction un mnmonique, cest-`-dire un nom court
a
e
a
et vocateur. Par exemple LDUH signie LoaD Unsigned Half, cest-`-dire chare
a
gement non sign, de taille demi-mot.
e
Une instruction tient en gnral sur une ligne, commenant par un
e e
c
mnmonique dinstruction, suivi de notations doprandes spars par des vire
e
e e
gules. Il semble que le terme langage dassemblage vienne de l` : il sagit dasa
sembler ces direntes parties pour constituer une instruction.
e
Les param`tres des instructions peuvent tre : des registres, des constantes,
e
e
des dsignations dadresses en mmoire par lintermdiaire de modes dadrese
e
e
sage plus ou moins sophistiqus.
e
Les registres sont en gnral nomms, par des noms dans lesquels appara
e e
e
t
une numrotation, comme r1, r2, .... Il peut exister plusieurs noms pour
e
un mme registre physique : on parle dalias. Lorsquil y a tr`s peu de registres,
e
e
les noms des registres peuvent tre intgrs aux mnmoniques. On trouve par
e
e e
e
exemple dans un langage dassemblage pour processeur 6502 les mnmoniques
e
LDA, LDY et LDX qui correspondent au chargement des registres A, Y et X.
Les constantes enti`res sont notes en utilisant une des bases disponibles,
e
e
ou mme par lintermdiaire du code ASCII (Cf. Paragraphe 2.1). Lutilisation
e
e
des constantes textuelles permet dcrire ADD r1, MAX, r4 ` la place de ADD
e
a
r1, 4, r4.
Noter que linstruction ADD du sparc exige des registres comme premier et
troisi`me oprande, mais autorise un registre ou une constante (susamment
e
e
petite) comme deuxi`me oprande. La dirence entre ces deux cas doit bien
e
e
e
sr tre code dans linstruction du langage machine correspondante, puisque
u e
e
linterprtation dun des champs de linstruction en dpend (valeur immdiate
e
e
e
ou numro de registre). Or le mnmonique est le mme dans les deux cas. La
e
e
e
distinction est donc faite par lassembleur sur des crit`res lexicographiques :
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Le langage machine et le langage dassemblage

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

308

MAX=4
ADDcc
ADD
LDUH
BNE
CALL
JMPL

! dfinition dune constante textuelle


e
.text
! dbut de la zone TEXT
e
r1, r2, r3
r1, MAX, r4
[r1+4], r2
labas
fonction
r2+r3, r0
Fig. 12.7 Exemple de zone TEXT

VAL=250
ISE=-125
.data
XX :
.long 0x15

YY :

ZZ :

!
!
!
!
!
.half -12
!
!
.byte VAL
!
!
.byte ISE
!
!
.skip 12000
!
!
.asciz "toto" !
!
!
.align 4
!
.long XX
!
!
!

dbut de zone de donnes


e
e
e
tiquette
4 octets initialiss avec le vecteur de
e
bits dcrit par 0x15 en hexadcimal,
e
e
reprables par ltiquette XX
e
e
2 octets initialiss avec le codage
e
de -12 (ncessairement en complment ` 2)
e
e
a
un octet initialis avec le codage
e
de 250 (ncessairement en binaire pur)
e
un octet initialis avec le codage
e
de -125 (ncessairement en complment ` 2)
e
e
a
une zone contigu de 12000 octets,
e
non initialiss.
e
5 octets, initialiss avec les codes
e
ASCII des caract`res t, o, t, o
e
et un octet mis ` zro pour finir.
a e
directive dalignement
4 octets initialiss avec le codage
e
binaire de ladresse absolue
reprsente par ltiquette XX.
e
e
e

Fig. 12.8 Exemple de zone DATA

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Le langage dassemblage

309

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

on peut toujours distinguer une cha de caract`res qui constitue la notation


ne
e
dune constante enti`re, dune cha de caract`res qui constitue un nom de
e
ne
e
registre, grce ` la lettre r qui prc`de le numro. Lorsquil risque dy avoir
a a
e e
e
confusion, ou mme simplement pour des raisons de lisibilit, les constantes
e
e
sont prxes par le caract`re #. On crit ainsi dans un langage dassemblage
e e
e
e
pour 68000 : ADDI #4, D0.
Les notations les plus compliques viennent des modes dadressage. Pour
e
des raisons de lisibilit et de comprhension du programme, le langage dasseme
e
blage propose en gnral une notation particuli`re pour les modes dadressage
e e
e
qui supposent une indirection. Ce peuvent tre des crochets ou des parenth`ses.
e
e
On crit ainsi LDUH [r1+4], r2 dans un langage dassemblage pour sparc,
e
ou move.l (A1), D1 dans un langage dassemblage pour 68000 (voir exemple
complet, gure 12.9). Les dplacements ventuels sont nots par des additions,
e
e
e
comme dans LDUH [r1+4], r2.
Enn un langage dassemblage peut dnir des pseudo-instructions. Par
e
exemple, le jeu dinstruction sparc tant limit, il nexiste pas dinstruction
e
e
de comparaison de deux entiers (lquivalent de linstruction CMP du 68000).
e
On utilise donc une soustraction de la forme SUBcc r1, r2, r0 pour mettre
a
` jour les indicateurs arithmtiques selon le rsultat de la comparaison de
e
e
r1 et r2 (r0 est un registre spcial, dans lequel lcriture na aucun eet. Voir
e
e
exercice E12.2). Lassembleur permet dcrire simplement CMP r1, r2, qui sera
e
traduit en langage machine exactement comme SUBcc r1, r2, r0. CMP est
une pseudo-instruction. Notons que certaines pseudo-instructions remplacent
parfois plusieurs instructions.

2.5

Zone de donnes et directives de


e
rservation mmoire
e
e

La zone de donnes comporte des directives de rservation demplacements


e
e
mmoire, avec dnition dune valeur initiale ` y placer avant de dmarrer
e
e
a
e
lexcution du programme. Le codage de ces donnes en langage machine est
e
e
simplement le codage binaire des constantes indiques par le programmeur.
e
Observons lexemple de la gure 12.8.
.long, .half, .byte et .asciz sont des directives de rservation mmoire
e
e
avec initialisation. Elles sont suivies de la donne dune constante, sous des
e
formes diverses : nom de constante textuelle (.byte VAL), notation dentier en
hexadcimal (.long 0x15), en dcimal (.half -12), etc. La constante peut
e
e
aussi tre donne sous la forme dune tiquette (.long XX). Une tiquette
e
e
e
e
reprsente une adresse, donc un entier positif. La seule dicult provient du fait
e
e
que ladresse absolue associe ` ltiquette nest pas connue avant le chargement
e a e
en mmoire pour excution. On retrouve ici pour les donnes la notion de code
e
e
e
translatable dj` mentionne au paragraphe 2.3.
ea
e
Dans le cas de .asciz, la taille est dtermine par la constante cha de
e
e
ne
caract`res associe. Ainsi .asciz "toto" rserve 5 = 4 + 1 octets, dont les
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

310

Le langage machine et le langage dassemblage

3.

Ar
chi
P.
te c
Am tu
F.
bla res
La
P.
gn rd, J Logi
Sic ier,
.-C ciel
ard
F.
. F les
,P
Ma ern et
h.
ran and Ma
Wa
inc
ez, tri
e
ille
hi,
ell

es

4 premiers sont initialiss avec les codes ASCII des caract`res t, o, t,


e
e
o et le dernier avec un caract`re de code 0. On respecte ainsi la convention
e
de reprsentation des cha
e
nes de caract`res utilise en C, cest-`-dire sous la
e
e
a
forme dune adresse de dbut, sachant que la cha est marque par 0.
e
ne
e
.skip est une directive de rservation mmoire sans initialisation. On la
e
e
trouve plutt en zone BSS que DATA, puisque la zone BSS permet de rserver
o
e
de la mmoire non initialise (Cf. Chapitre 18).
e
e
.align est une directive de cadrage mmoire ncessaire pour tenir compte
e
e
des contraintes dalignement mmoire dont nous avons parl au paragraphe 2.3
e
e
du chapitre 4. La directive .align 4 (resp. .align 2) tient compte de toutes
les rservations mmoire eectues auparavant, et mnage un espace perdu de
e
e
e
e
la taille ncessaire pour atteindre la prochaine adresse multiple de 4 (resp. 2).
e

Traduction du langage dassemblage


en langage machine

La traduction du langage dassemblage en langage machine est eectue


e
par loutil appel assembleur des environnements de programmation. Cet outil
e
a essentiellement 3 fonctions :
il ralise lanalyse lexicale et syntaxique du texte crit en langage dasseme
e
blage, diverses vrications comme par exemple lutilisation correcte des
e
modes dadressage et peut rejeter des programmes pour erreurs lexicales ou
syntaxiques ; cette phase danalyse peut saccompagner de lexpansion des
macro-notations et des dnitions de constantes ;
e
il ralise le codage en binaire des instructions et des donnes : transfore
e
mation des mnmoniques doprations et des notations de modes dadrese
e
sage en codage des instructions, transformation des directives de rservation
e
mmoire en codage binaire des donnes initialises ;
e
e
e
il ralise la traduction des tiquettes (ou symboles) en adresses absolues
e
e
ou dplacements. En maintenant au cours du traitement un compteur ase
sociant a chaque instruction une adresse calcule par rapport au dbut du
`
e
e
programme, il est facile de calculer les dplacements relatifs. Par contre les
e
valeurs absolues ne peuvent tre calcules tant que lon ignore ladresse `
e
e
a
laquelle le programme sera implant. Nous revenons sur ce point au chae
pitre 18 ` propos de code translatable.
a
Nous montrons dans la section suivante ` travers quelques exemples la
a
traduction en langage machine sparc et 68000.

4.

Un exemple de programme

Considrons lalgorithme qui permet de dterminer le nombre de bits ` 1


e
e
a
dans la reprsentation en binaire pur dun entier :
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Un exemple de programme

311

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Lexique :
x : un entier 0 { la donne }
e
NombreDeUns : un entier 0 { le rsultat ` calculer }
e
a
Algorithme :
NombreDeUns 0
tantque x = 0
si x mod 2 = 0 alors NombreDeUns NombreDeUns + 1
x x div 2

Nous donnons ci-dessous des programmes correspondants dans des langages dassemblage possibles pour les processeurs sparc et 68000, et les programmes en langage machine correspondants. Noter quen langage dassemblage les oprations arithmtiques notes x mod 2 et x div 2 sont remplaces
e
e
e
e
par des manipulations explicites de vecteurs de boolens (dcalage logique et
e
e
masquage).

4.1

Programme pour 68000

La gure 12.9 donne un programme en langage dassemblage pour processeur 68000.


Nous donnons ci-dessous le codage des instructions, accompagn de
e
ladresse de rangement, et du texte en langage dassemblage obtenu par
dcodage dans un dsassembleur.
e
e
0x0
0x6
0x8
0xA
0xC
0xE
0x10
0x16
0x18
0x1A
0x1C
0x1E
0x24

43f9 00000028
2211
7000
4a81
6710
2401
0282 00000001
6702
5280
e281
60ec
23c0 0000002c
4e75

lea
move.l
moveq
tst.l
beq
move.l
andi.l
beq
addq.l
asr.l
bra
move.l
rts

40,A1
(A1),D1
#0,D0
D1
+16
D1,D2
#1,D2
+2
#1,D0
#1,D1
-20
D0,44

Noter que lon produit du code comme si le programme dmarrait `


e
a
ladresse 0. Les donnes sont places apr`s la zone texte ; la zone data come
e
e
mence donc ici ` ladresse 0x28. Le codage de la zone data est : 0000002a,
a
cest-`-dire la valeur 42 en dcimal code sur 16 bits.
a
e
e
Lorsque le programme est charg em mmoire centrale, les adresses sont
e
e
translates en fonction de ladresse ` laquelle le programme est rang en
e
a
e
mmoire (Cf. Chapitres 18 et 20).
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Le langage machine et le langage dassemblage

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

312

! Correspondance des variables et des registres :


! x : D1
! NombreDeUns : D0
.data
! ZONE DE DONNEES INITIALISEES
Donnee :
.long 42
! un mot de 4 octets contenant
! le codage binaire de lentier
! not 42 en decimal.
e
.bss
! ZONE DE DONNEES non INIT.
Resultat :
.skip 4
! un mot de 4 octets
.text
! ZONE DE PROGRAMME
.global main
! ncessaire (Cf. Chap. 18, 2.)
e
main :
! le pt dentre sappelle
e
! ncessairement main.
e
lea Donnee,A1
!transfert de la mmoire vers un registre
e
!en adressage indirect par registre adresse.
move.l (A1), D1
deb calcul : moveq 0,D0
! NombreDeUns <-- 0
condition tq : tst.l D1
! tantque (x !=0)
beq fin tq
! branchement lorsque cond. fausse
corps tq :
si :
move.l D1,D2
andi.l 1,D2
! si (x mod 2 != 0) alors
beq fin si
alors :
addq.l 1,D0
! NombreDeUns<--NombreDeUns+1
fin si :
asr.l D1
! x <-- x div 2
bra condition tq
fin tq :
move.l D0, Resultat
! transfert dun registre vers la mmoire
e
! en adressage direct
fin prog :
rts
! fin de programme.
Fig. 12.9 Nombre de 1 : programme en langage dassemblage pour 68000

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Un exemple de programme

313

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Dtaillons le codage de quelques instructions :


e
Exemple 1 :
43f9 00000028
lea Donnee, A1
Il sagit dune instruction load eective address dans un registre.
43f9 est le codage de la nature de linstruction, du numro de registre
e
(A1) et du mode dadressage utilis pour lautre oprande (cest cela qui
e
e
dtermine sil y a des mots dextension ` lire, et combien).
e
a
00000028 : 2 mots dextension de 16 bits chacun, donnant la valeur dune
adresse. Ici 0x28 en hexadcimal, cest-`-dire 40 en dcimal : cest la taille
e
a
e
en octets de la zone TEXT. Les donnes sont places en mmoire apr`s
e
e
e
e
les instructions, et Donnee est le premier objet de la zone DATA.
Exemple 2 :
2211
move.l (A1), D1
Tout est cod en 16 bits : la nature de lopration, la taille des oprandes
e
e
e
sur laquelles elle sapplique, la description des modes dadressage des
deux oprandes (direct ou indirect par registre, numro de registre).
e
e
Exemple 3 :
6710
beq +16
Tout est cod en 16 bits : la nature de lopration (un branchement si
e
e
Z), le dplacement de 16 octets, par rapport ` linstruction qui suit celle
e
a
du branchement. Linstruction de branchement est ` ladresse 0xC : la
a
suivante ` ladresse 0xE ; la destination ` ladresse 0x1E.
a
a

4.2

Programme pour sparc

La gure 12.10 donne un programme en langage dassemblage pour processeur sparc.


Le codage des donnes (zone data) est : 0000 002a 0000 0000. Le codage
e
des instructions (zone text) donne une suite de mots de 32 bits, chacun codant
une instruction.

9de3bfc0
90000000
808a6001
93326001
a0142000

21000000
80a24000
02800003
10bffff8
d0240000

a0142000
02800009
01000000
01000000
81c7e008

d2040000
01000000
90022001
21000000
81e80000

Exemple 1 : 21000000 a0142000


set Donnee, %l0
Il sagit dune pseudo-instruction permettant laectation dune valeur
de 32 bits, ladresse Donnee en zone data. Elle est remplace par deux
e
instructions sethi %hi(Donnee), %l0 et or %l0, %lo(Donnee), %l0
dont les codages respectifs sont : 21000000 et a0142000. La valeur associ ` Donnee ntant pas connue lors de la traduction, les champs corea
e
respondants sont pour linstant mis ` 0. Ils seront mis ` jour lors du
a
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

314

Le langage machine et le langage dassemblage

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

! Correspondance des variables et des registres :


! x : o1
! NombreDeUns : o0
.data
! ZONE DE DONNEES INITIALISEES
Donnee :
.long 42
! un mot de 4 octets contenant
! le codage binaire de lentier
! not 42 en decimal.
e
.bss
! ZONE DE DONNEES non INIT.
Resultat :
.skip 4
! un mot de 4 octets
! non initialis.
e
.text
! ZONE DE PROGRAMME
.global main
! ncessaire (Cf. Chap. 18, 2.)
e
main :
! le pt dentre sappelle
e
! ncessairement main.
e
save %o6, -64, %o6 ! voir codage des actions.
set Donnee, %l0
! transfert de la mmoire vers un registre :
e
ld [%l0], %o1
deb calcul : add %g0,%g0,%o0
! NombreDeUns <-- 0
condition tq :
subcc %o1,%g0,%g0 ! tantque (x !=0)
be fin tq
! branchement lorsque
! condition fausse
nop
corps tq :
si :
andcc %o1,1,%g0
! si (x mod 2 != 0) alors
be fin si
nop
alors :
add %o0,1,%o0
! NombreDeUns<--NombreDeUns+1
fin si :
srl %o1,1,%o1
! x <-- x div 2
ba condition tq
nop
fin tq :
set Resultat, %l0
! transfert dun registre vers la mmoire
e
st %o0, [%l0]
fin prog :
ret
! fin du programme
restore
Fig. 12.10 Nombre de 1 : programme en langage dassemblage pour sparc

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Exercices

315

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

chargement du programme en mmoire centrale. Linformation concere


nant Donnee est prsente dans les informations de translation et la table
e
des symboles (Cf. Chapitre 18).
Exemple 2 : 01000000
nop
Linstruction nop nexiste pas en sparc. Elle est code par une instruce
tion ayant un eet nul : une addition ou une disjonction portant sur le
registre spcial %g0.
e
Exemple 3 : d2040000
ld [%l0], %o1
Cette instruction peut tre code compl`tement. Le mot de 32 bits se
e
e
e
dcompose en :
e
code op
1
1
0

reg d
0 0

inutilis
e
0 0 0

code op
0 0 0

reg s 2
0 0

reg s 1
0 0

i
0

Exemple 4 : 02800009
be fin_tq
Lopration est code sur les bits 31 et 30 (resp. 0 et 0) et 24 ` 22 (010).
e
e
a
La condition equal est code sur les bits 28 ` 25 (0001). Le dplacement
e
a
e
est cod sur les bits 21 ` 0 ; la valeur est ici 9, ce qui correspond au
e
a
nombre dinstruction de linstruction de branchement jusqu` ltiquette
a e
fin tq.

5.

Exercices

E12.1 : Machines ` 0, 1, 2 ou 3 rfrences


a
ee
Nous allons tudier lcriture dun algorithme simple dans un programme en
e
e
langage dassemblage de jeux dinstruction de dirents types. Dans la suite de
e
cet exercice nous notons val une valeur immdiate et adr une adresse. Nous
e
utilisons les conventions dcriture du langage dassemblage similaire au sparc
e
dcrite dans ce chapitre. ope reprsente le mnmonique dune instruction
e
e
e
parmi add, mult, sub et div, OP est lopration arithmtique associe.
e
e
e
Traduire pour chacune des machines et langages dassemblage associs
e
dcrits ci-apr`s lalgorithme suivant, en convenant que A est ` ladresse a,
e
e
a
. . .et Y ` ladresse y :
a
Lexique :
A, B, C, D, E, F : des entiers { des donnes }
e
Y : un entier { le rsultat ` calculer }
e
a
Algorithme :
Y (A + B + C) / (D * E * F - 3)

Mme exercice avec le sparc. Pour chaque type de machine, observer la


e
taille du code obtenu en nombre dinstructions, estimer le nombre doctets
ncessaires au codage du programme.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

316

Le langage machine et le langage dassemblage

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

1) Jeu dinstructions ` 1 rfrence et 1 seul registre : la machine correspona ee


dant ` ce type dinstruction poss`de un registre de calcul appel accumulateur
a
e
e
(not acc) qui est toujours utilis dans les instructions de calcul. Laccumulae
e
teur est un des deux oprandes et le rsultat est forcment stock dans celui-ci.
e
e
e
e
Lensemble des instructions ne poss`de quune rfrence :
e
ee
instruction
signication
ope val
acc acc OP val
ope [adr]
acc acc OP MEM[adr]
store adr
MEM[adr] acc
load val
acc val
load [adr] acc MEM[adr]
2) Jeu dinstructions ` 2 rfrences et mode dadressage restreint : on raa
ee
joute ` la machine prcdente dautres registres (nots Ri). Chacun deux
a
e e
e
poss`de les mmes fonctionnalits que acc. La destination du calcul est toue
e
e
jours un registre. Une des deux rfrences (servant de source et destination)
ee
est en mode dadressage registre direct.
instruction
ope Ri val
ope Ri [adr]
ope Ri Rj
store Ri adr
load Ri val
load Ri [adr]

signication
Ri Ri OP val
Ri Ri OP MEM[adr]
Ri Ri OP Rj
MEM[adr] Ri
Ri val
Ri MEM[adr]

Les processeurs fabriqus autour de lanne 1975 (famille 8080 dintel


e
e
et 6800 de motorola) utilisaient ces deux types dinstructions (1 et 2
rfrences). Dans le cas de lutilisation de laccumulateur linstruction est plus
ee
rapide.
3) Machine ` 2 rfrences et modes dadressage varis : on ajoute un
a
ee
e
mode dadressage indirect par registre. Une des deux rfrences est forcment
ee
e
en mode dadressage registre direct (mais pas forcment la destination). Les
e
instructions load et store sont remplaces par une instruction unique move.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Exercices

317

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

instruction
signication
Rf. destinations en mode dadressage registre direct
e
ope val, Ri
Ri val OP Ri
ope [adr], Ri
Ri Ri OP MEM[adr]
ope [Rj], Ri
Ri Ri OP MEM[Rj]
Rf. destination en mode dadressage absolu
e
ope Ri,[adr]
MEM[adr] MEM[adr] ope Ri
Rf. destination en mode dadressage reg. indirect
e
ope Ri,[Rj]
MEM[Rj] MEM[Rj] OP Ri
Instruction move
move Rj, Ri
Ri Rj
move val, Ri
Ri val
move [adr], Ri Ri MEM[adr]
move Ri, [adr] MEM[adr] Ri

Les processeurs de la famille 68000 de motorola (` patir de lanne 1980)


a
e
a un jeu dinstructions de structure similaire avec un jeu de mode dadressage
encore plus large.
4) Machine ` 0 rfrence : cest une machine qui ncessite une pile. Les
a
ee
e
instructions dopration se font toujours avec les deux oprandes qui sont
e
e
au sommet de la pile (et qui sont alors enleves de la pile), le rsultat est
e
e
stock sur la pile. Ces instructions nont donc pas besoin de rfrences. Il faut
e
ee
pouvoir stocker des valeurs sur la pile avant les calculs, on ajoute donc deux
instructions particuli`res push et pop. Celles-ci ont une rfrence. On suppose
e
ee
ici que le pointeur de pile SP pointe sur le dernier emplacement occup et que
e
la pile progresse en diminuant SP.
instruction
signication
ope
MEM[SP+1] MEM[SP] OP MEM[SP+1] ; SP SP+1
push val
SP SP - 1 ; MEM[SP] val
push [adr] SP SP - 1 ; MEM[SP] MEM[adr]
pop [adr]
MEM[adr] MEM[SP] ; SP SP + 1
E12.2 : Utilisation du registre %g0 du sparc
Larchitecture du processeur sparc introduit un objet manipulable comme un
registre, mais qui poss`de des proprits particuli`res : lcriture dans ce ree
ee
e
e
gistre, en gnral not %g0, na pas deet, et la lecture de ce registre donne
e e
e
toujours 0. Dautre part le sparc est une machine ` trois rfrences. Une insa
ee
truction de calcul op a trois arguments s1, s2 et d, et ralise laectation d
e
op(s1, s2). Le dernier argument est toujours un registre, donc toute
opration crase un registre. Utiliser le registre %g0 pour raliser une compae
e
e
raison et un test ` 0 en termes de soustraction.
a
E12.3 : Transferts mmoire/registres en sparc
e
Dans le jeu dinstructions du processeur sparc on trouve des instructions de

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

318

Le langage machine et le langage dassemblage

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
icie
J.ard , F C.
lles
, P . M Fer
ara na et M
h.
Wa ni nde at
ri
e
z,
ille nch
elle
i,
s

chargement dune portion de registre (octet, B ou demi-mot, H) en mmoire


e
signes (LDB, LDH) ou non signes (LDUB, LDUH). Pour linstruction de rangement
e
e
en mmoire (STB, STH), ce nest pas le cas. Pourquoi ? Dans le processeur 68000
e
on na pas le probl`me. Pourquoi ?
e
E12.4 : Calcul dun modulo
X tant un entier naturel, crire une ou plusieurs instructions sparc (ou
e
e
de toute autre machine) permettant de calculer X mod 256 et gnralement
e e
n
X mod 2 .
E12.5 : Dcoupage dun entier en octect
e
X tant un entier cod sur 32 bits (4 octets), O1, O2, O3 et O4 dsignant
e
e
e
4 emplacements mmoire de 1 octet pas ncessairement contigus, crire une
e
e
e
squence dinstructions en langage dassemblage de nimporte quelle machine
e
permettant de ranger les octets X31..24 , X23..16 , X15..8 et X7..0 respectivement aux
adresses O1, O2, O3 et O4.
E12.6 : Addition double longueur
Se convaincre que N, C, V ont un sens apr`s la suite dinstructions ADDcc,
e
r1, r2, r3 ; ADDXcc r4, r5, r6, par rapport aux entiers 64 bits cods rese
pectivement dans les couples de registres (r3, r6), (r2, r5) et (r1, r4). En
particulier comprendre que tout marche bien pour le complment ` 2, bien
e
a
quon ne transmette que C dans ADDXcc. Z na plus de sens, en revanche. Pour
comprendre pourquoi, tudier le probl`me suivant : comment tester que la
e
e
somme, ralise en deux instructions, de deux entiers 64 bits occupant chacun
e e
2 registres, est nulle ?
E12.7 : Expressions boolennes associes aux branchements usuels
e
e
A et B sont deux entiers reprsents dans les 2 registres %l0 et %l1 du sparc.
e
e
Apr`s lexcution de linstruction subcc %l0, %l1, %g0 quelles doivent tre
e
e
e
les valeurs de Z, N, C, V pour que A B si A, B Z ? Mme question pour
e
que A B si A, B N ?
Noter que A B A < B ou A = B ; pour A < B, envisager les 2 cas :
A B est calculable ou lopration provoque un dbordement. Retrouver la
e
e
formule : Z or (N xor V ).
Etudier de mme les formules associes ` toutes les conditions de branchee
e a
ments.
E12.8 : Plus Grand Commun Diviseur
Donner en langage dassemblage sparc ou 68000 une squence dinstruce
tions permettant de calculer le pgcd de deux entiers. Sinspirer de la machine
squentielle ` actions dcrite dans le paragraphe 1.5 (Cf. Figure 12.5). Suppoe
a
e
ser que les valeurs initiales A0 et B0 sont dans deux registres. Pour traduire
la boucle ditration, sinspirer de lexemple trait dans le paragraphe 4. du
e
e
prsent chapitre.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Exercices

319

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

E12.9 : Observation de code produit


On donne ci-dessous un programme en C et le programme en assembleur sparc
produit par le compilateur gcc. Analyser le code produit pour y retrouver les
structures de contrle de lalgorithme dcrit en C.
o
e
main () {
int i ; int T[10] ;
i = 0 ;
while (i < 10)
{ T[i] = 2*i + 1 ; i = i + 1 ; }
}

La structure de procdure du programme C donne les lignes 3, 25 et 26


e
(Cf. Chapitre 13, paragraphe 3.5).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

.text
main:
save %sp,-104,%sp
mov 0,%o0
.LL2:
cmp %o0,9
ble .LL4
nop
b .LL3
nop
.LL4:
mov %o0,%o2
sll %o2,2,%o1
sethi %hi(T),%o3
or %o3,%lo(T),%o2

16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

mov %o0,%o3
sll %o3,1,%o4
add %o4,1,%o3
st %o3,[%o1+%o2]
add %o0,1,%o0
b .LL2
nop
.LL3:
.LL1:
ret
restore
.data
T: .skip 40

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

320
Le langage machine et le langage dassemblage

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 13

Traduction des langages `


a
structure de blocs en langage
dassemblage
Nous nous intressons ici au probl`me de la traduction dun langage `
e
e
a
structure de blocs en langage machine ou, de mani`re quivalente, en langage
e e
dassemblage. Le petit langage dactions prsent au chapitre 4 est un bon
e
e
reprsentant de langage impratif ` structure de blocs, qui sont ici les actions
e
e
a
et les fonctions paramtres, munies de lexiques locaux.
e e
En tudiant la traduction de ce petit langage nous rencontrons les
e
probl`mes communs poss par la traduction dun langage impratif comme
e
e
e
Pascal, Ada, C, C++, Java ... La traduction des constructions de haut niveau
de ces langages (objets de C++ ou Java, gnricit dAda, etc.) ou la traduce e
e
tion des langages non impratifs, pose de nouveaux probl`mes, qui dpassent
e
e
e
le cadre de cet ouvrage. La plupart du temps, les langages dont la structure
est tr`s loigne dun style impratif comme celui prsent ici, sont traduits en
e e
e
e
e
e
langage dassemblage en passant par une tape intermdiaire (un programme
e
e
C par exemple).
Parmi toutes les mthodes ` mettre en oeuvre pour traduire un programme
e
a
du langage dactions en langage machine, nous avons dj` tudi certains
ea e
e
points :
Au chapitre 4 nous avons montr comment reprsenter les types complexes
e
e
en mmoire, et comment transformer les aectations ` des objets complexes
e
a
en suite de transferts mmoire de taille xe.
e
e
Indpendamment, nous avons montr au chapitre 5 comment traduire les
e
e
structures de contrle en tats et transitions dune machine squentielle `
o
e
e
a
actions, et comment dnir le lexique de cette machine.
e
Au chapitre 12 nous avons dni un lexique restreint pour machine
e
squentielle ` actions, qui correspond ` la structure dun langage machine
e
a
a
type : les tests doivent tre uniquement binaires, et les prdicats restreints
e
e
a
` un ensemble de fonctions prdnies sur des variables Z, N, C et V qui
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

322

Traduction des langages ` structure de blocs en langage dassemblage


a

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

modlisent les indicateurs arithmtiques. Les variables du lexique restreint


e
e
reprsentent la mmoire (le tableau MEM) et les registres.
e
e

Comment utiliser ces transformations pour obtenir le programme en langage dassemblage correspondant ` un programme du langage dactions, et que
a
reste-t-il ` faire ? Deux types de probl`mes se posent.
a
e
Tout dabord, il faut dcrire la transformation de chaque bloc (action ou
e
fonction) dun programme du langage dactions en machine squentielle `
e
a
lexique restreint, pour se rapprocher dun langage machine. En particulier,
puisque le lexique restreint ne propose que le tableau MEM et quelques variables reprsentant les registres, il faut dcider, pour chacune des variables
e
e
dnies dans le bloc, dun emplacement mmoire qui lui correspond. La die
e
cult de linstallation en mmoire du lexique vient de lexistence des lexiques
e
e
locaux de fonctions et des actions ventuellement rcursives. Il faut dautre
e
e
part traduire toutes les structures conditionnelles et itratives en nutilisant
e
que des branchements binaires, portant des prdicats prdnis sur Z, N, C et
e
e e
V.
Supposons maintenant quon a su obtenir, pour chaque bloc (action ou
fonction) du langage dactions, une machine squentielle ` lexique restreint. Il
e
a
ne reste plus qu` traduire ces machines squentielles en textes de programmes
a
e
en langage dassemblage. Cela demande de disposer de mani`re squentielle les
e e
codages des dirents tats, avec les branchements adquats ; il faut nalement
e
e
e
coder les appels de procdures ou fonctions en utilisant les instructions dappel
e
de sous-programmes oertes par le langage machine considr.
ee
Nous tudions tout dabord dans le paragraphe 1. le cas des programmes
e
a
` un seul bloc : installation du lexique en mmoire et obtention dune
e
machine squentielle ` lexique restreint, production du texte en langage
e
a
dassemblage. Le paragraphe 2. prsente les probl`mes spciques au coe
e
e
dage des programmes ` plusieurs blocs : probl`me du lexique local, des
a
e
procdures ou fonctions rcursives, passage de param`tres et contenu de
e
e
e
la mmoire lors de lexcution. En se basant sur les principes tudis
e
e
e
e
dans ces deux premiers paragraphes, il est possible de dvelopper au pae
ragraphe 3. des solutions globales pour deux types de langages machine :
un langage machine ` structure de pile explicite, type 68000 ; un langage
a
machine ` fentres de registres, type sparc.
a
e

1.

Cas des programmes ` un seul bloc


a

Nous avons tudi au chapitre 5 la traduction des programmes du lane


e
gage dactions en machines squentielles avec actions gnrales. Il ne reste
e
e e
plus quune tape pour atteindre des machines squentielles ` lexique rese
e
a
treint : il faut installer toutes les variables dans la mmoire ou les registres
e
(paragraphe 1.1), puis transformer les branchements gnraux en branchee e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Cas des programmes ` un seul bloc


a

323

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

ments binaires faisant intervenir des conditions prdnies sur les indicateurs
e e
arithmtiques (paragraphe 1.3).
e
A partir des machines squentielles ` lexique restreint, on obtient facilement
e
a
des textes de programmes en langage dassemblage (paragraphe 1.4).

1.1

1.1.1

Installation du lexique en mmoire


e
Le probl`me
e

Le langage dactions prsent ore la notion de lexique : on dclare des


e
e
e
variables en les nommant. La dclaration donne le type, et permet donc de
e
conna la taille ncessaire ` la reprsentation en mmoire des valeurs de cette
tre
e
a
e
e
variable. Dans tout ce qui prc`de, nous avons tudi comment reprsenter en
e e
e
e
e
mmoire une donne de type quelconque, en supposant quil y a de la place
e
e
libre, en quantit susante, ` partir dune certaine adresse donne.
e
a
e
Remarque : Notons que nous ne parlons pas ici dallocation dynamique,
dallocation de variables ` la demande du programme par les actions Allouer
a
et Librer comme dni au paragraphe 4. du chapitre 4.
e
e

Nous ne nous sommes pas interrogs sur le mcanisme dallocation de la


e
e
mmoire, cest-`-dire sur la mani`re de choisir une adresse pour chaque vae
a
e
riable, en assurant que deux variables distinctes sont installes dans des pore
tions disjointes de la mmoire globale. Plus prcisment, cette contrainte vaut
e
e e
pour les variables dont les priodes de vie (on dit aussi dure de vie) ne sont
e
e
pas disjointes (Cf. Paragraphes 1.1.2, 2.1.1 et 2.6).
Nous montrons ici comment remplacer systmatiquement les variables par
e
des zones du tableau MEM : il faut dabord choisir la position de chaque variable, ce qui donne une adresse a ; on remplace ensuite toute occurrence du
nom de variable dans le programme par MEM[a]. On peut alors oublier le
lexique. On obtient ainsi de mani`re systmatique lalgorithme quon aurait
e
e
pu obtenir ` la main en installant soi-mme toutes les variables ncessaires
a
e
e
dans le tableau MEM. Les programmes en deviennent bien sr illisibles ; cette
u
transformation est dhabitude le travail du compilateur, pas celui du programmeur. La transformation de programmes que nous proposons ici peut
tre vue comme la premi`re tape de gestion de ce que lon appelle courame
e e
ment syst`me ` lexcution dans les ouvrages traitant de compilation (voir par
e
a
e
exemple [CGV80, WM94]).
1.1.2

Solution pour le lexique dun programme ` un seul bloc


a

Pour choisir la position des variables on proc`de de mani`re squentielle,


e
e
e
par exemple dans lordre du lexique, en mnageant des espaces perdus entre
e
les variables pour satisfaire aux ventuelles contraintes dalignement. La taille
e
ncessaire pour linstallation de toutes les variables du lexique en mmoire est
e
e
donc suprieure ou gale ` la somme des tailles ncessaires pour les variables.
e
e
a
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

324

Traduction des langages ` structure de blocs en langage dassemblage


a

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

On parlera par la suite de taille du lexique. Attention, cette taille peut dpendre
e
de lordre de dclaration des variables, qui a une inuence sur la position et
e
la taille des trous ncessaires aux contraintes dalignement. Noter que, dans le
e
cas dun programme ` un seul bloc, les variables ont toutes la mme dure de
a
e
e
vie, qui est celle du programme lui-mme.
e
Dans lexemple ci-dessous, la mmoire est un tableau doctets, et on dispose
e
des aectations de tailles 1, 2 et 4 :
N : lentier 42
Entier32s : le type entier dans [2321 , 2321 1]
Entier16ns : le type entier dans [0, 216 1]
Structure : le type < x : un Entier32s, y : un Entier16ns>.
c1, c2 : des caract`res ; a : un Entier32s ; b : un Entier16ns
e
T : un tableau sur [0..N-1] de Structures

Les variables ` installer en mmoire sont c1, c2, a, b et T. Commenons


a
e
c
a
` une adresse A multiple de 4 pour c1 ; c2 peut tre plac juste ` ct, `
e
e
a oe a
ladresse A + 1 ; a doit tre plac un peu plus loin, ` ladresse A + 4 ; b peut
e
e
a
tre plac a ladresse A + 8, sans perte de place ; T doit dmarrer ` ladresse
e
e`
e
a
multiple de 4 qui suit A + 8 + 2, cest-`-dire A + 12. Noter que 2 octets sont
a
perdus entre b et T. Chaque lment de T occupe 8 octets. T[7].y est ` ladresse
ee
a
A + 12 + (7 8) + 4. On traduit alors lalgorithme
c1 c2 ; T[7].y b

en :

delta c1 : lentier 0 ; delta c2 : lentier 1 ; delta a : lentier 4 ; delta b : lentier 8


delta T : lentier 12 ; delta x : lentier 0 ; delta y : lentier 4
taille structure : lentier 8
MEM[A+delta c1] 1 MEM[A+delta c2]
MEM[A+delta T+7*taille structure + delta y] 2 MEM[A+delta b]

1.2

Traduction des oprations de base sur les types de


e
donnes
e

Nous avons introduit dans le langage dactions du chapitre 4 des oprations


e
sur les types de donnes de base : entiers, boolens, caract`res. Pour les types
e
e
e
structurs, la seule opration globale que nous ayons envisage est laectation,
e
e
e
et nous avons dj` montr comment lexprimer en termes de transferts mmoire
ea
e
e
lmentaires (chapitre 4, paragraphe 3.).
ee
Le lexique restreint qui reprsente un langage machine type ne propose que
e
les oprations arithmtiques, logiques ou structurelles (Cf. Chapitre 12) dise
e
ponibles dans un processeur usuel. Il faut donc exprimer toutes les oprations
e
sur les types de base en termes de ces oprations lmentaires.
e
ee

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Cas des programmes ` un seul bloc


a

1.2.1

325

Cas des oprations sur les caract`res


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Toutes les oprations sur les caract`res sont traduites en oprations


e
e
e
arithmtiques ou logiques par lintermdiaire du code ASCII. Nous signalions
e
e
au chapitre 4, paragraphe 1.3.2, que le code ASCII est conu de mani`re `
c
e a
faciliter cette traduction.
1.2.2

Cas des oprations boolennes


e
e

Il y a trois types dutilisation des boolens : les oprations internes de


e
e
lalg`bre de Boole tudie au chapitre 2 (ngation, conjonction, disjonction,
e
e
e
e
etc.) ; les oprations de comparaison sur des types quelconques, qui produisent
e
des boolens ; les conditions de structures conditionnelles ou itratives. Ces
e
e
trois types dutilisations interf`rent librement comme dans :
e
X, Y : des entiers ; B, B : des boolens
e
B X < Y et Y 0
si (non B ou B) alors ... sinon ...

Il faut choisir un codage des boolens compatible avec ces trois types dutie
lisation, et susceptible dtre manipul ecacement en langage machine. Typie
e
quement, les processeurs orent des oprations boolennes bit ` bit (Cf. Chae
e
a
pitre 12, paragraphe 1.4.1) quon peut utiliser pour coder les oprations
e
boolennes. En revanche il nexiste pas, en gnral, dinstruction de compae
e e
raison arithmtique de deux registres, avec rsultat boolen dans un troisi`me,
e
e
e
e
qui permettrait de coder simplement B X < Y. Le rsultat boolen des
e
e
comparaisons est ` recuprer dans les indicateurs arithmtiques. Dautre part,
a
e
e
comme le mot dtat du processeur nest en gnral pas accessible en lecture
e
e e
explicite, on doit coder B X < Y comme on coderait :
si X < Y alors B vrai sinon B faux

On retrouve donc le probl`me gnral de codage des structures conditione


e e
nelles.
1.2.3

Cas des entres/sorties


e

Nous avons introduit dans le langage dactions des actions Lire et Ecrire
gnriques (cest-`-dire valables pour tous types). La manipulation dtaille
e e
a
e
e
des priphriques dentre/sortie ne fait pas partie, en gnral, du codage des
e
e
e
e e
programmes crits en langage de haut niveau. Nous verrons en dtail au chae
e
pitre 16 comment sont ralises les communications entre le processeur et des
e e
priphriques comme le clavier et lcran. Les programmes ncessaires, souvent
e
e
e
e
crits directement en assembleur, font partie du logiciel de base fourni avec un
e
ordinateur ; nous dnissons au chapitre 17 linterface entre ces programmes
e
de bas niveau rangs dans une biblioth`que et les programmes en langage dase
e
semblage produits par les compilateurs de langages de haut niveau. On trouve
entre autres dans le logiciel de base usuel les primitives de manipulation des
chiers, telles que nous les dnissons au chapitre 19.
e
Pour un compilateur, le codage dune entre/sortie est compl`tement simie
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

326

Traduction des langages ` structure de blocs en langage dassemblage


a

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

laire ` lappel dune procdure paramtre. Simplement, cette procdure ayant


a
e
e e
e
t crite directement en assembleur, ou produite indpendamment par un
ee e
e
compilateur, il faut adopter les mmes conventions de passages de param`tres
e
e
et dappel de sous-programme, dans les deux contextes. Cest dailleurs le
probl`me gnral de la compilation spare que nous tudions au chapitre 18.
e
e e
e e
e
Le seul travail du compilateur consiste ` traduire une instruction de la
a
forme Lire (X), o` X est une variable de type quelconque, en un ensemble
u
doprations de lecture lmentaires disponibles dans la biblioth`que. On ne
e
ee
e
peut pas supposer, en eet, que la biblioth`que dentres/sorties standard foure
e
nit une primitive de lecture pour tout type susceptible dtre dni dans un
e
e
programme utilisateur.
La plupart des langages de programmation nautorisent les primitives Lire
et Ecrire que sur les types numriques, les caract`res et les cha de caract`res.
e
e
nes
e
Pour les types numriques cela suppose une convention de notation (dcimal
e
e
pour les entiers, norme IEEE... pour les ottants). Ainsi en Pascal est-il impossible de lire un boolen, dni comme un type numr, par manque de
e
e
e
ee
convention sur la notation des boolens. En Ada le compilateur traduit les lece
tures de boolens en lectures de cha
e
nes de caract`res, suivies de conversions
e
des cha
nes valides true et false en reprsentation interne des boolens.
e
e
Dans les exemples de ce chapitre, nous nutilisons Lire et Ecrire que pour
des entiers.

1.3

1.3.1

Traduction des conditions gnrales en conditions


e e
des machines restreintes
Codage de conditionnelles n-aires, type selon

La plupart des langages machine disposent de branchements uniquement


binaires. Les structures conditionnelles de la forme selon du langage dactions
utilis dans cet ouvrage, ou bien les structures switch de C, case de Pascal
e
et Ada, sont donc traduites en squences de conditionnelles binaires.
e
1.3.2

Codage de conditions boolennes complexes


e

Quel que soit lensemble des prdicats fonctions de N, Z, C et V disponibles


e
dans le langage machine cible, il est toujours possible dcrire dans le langage
e
dactions des conditions qui ne se traduisent pas par un seul prdicat.
e
On a donc le mme probl`me pour coder : si X < Y et Y > 0 grce
e
e
a
aux 16 prdicats usuels prsents au chapitre 12, gure 12.4, que pour coe
e
e
der si X Y grce aux 8 prdicats du processeur 6502. La solution gnrale
a
e
e e
consiste ` encha
a
ner des conditionnelles. On traduit donc
si X < Y et Y > 0 alors A1 sinon A2

en :
si X < Y alors (si Y > 0 alors A1 sinon A2) sinon A2.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Cas des programmes ` plusieurs blocs


a

!
!
!
!
!
!
!
!
!
!
!
!

codage de laction A1
codage de la condition C1
branchement sur non C1
codage de laction A2
codage de la condition C2
branchement sur non C2
codage de laction A3
branchement inconditionnel
codage de laction A4
codage de laction A5
branchement inconditionnel
codage de laction A6

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

A1 ...
:
C1 ...
:
Bicc A6
A2 ...
:
C2 ...
:
Bicc A4
A3 ...
:
ba A5
A4 ...
:
A5 ...
:
ba C1
A6 ...
:

327

A1
tantque C1
A2
si C2 alors A3 sinon A4
A5
A6

Fig. 13.1 Squentialisation des codages en langage dassemblage des tats dune mae
e
chine squentielle ` actions et lexique restreint.
e
a

1.4

Traduction des machines squentielles


e
` lexique restreint en langage dassemblage
a

Grce aux transformations de programmes suggres ci-dessus, on est caa


ee
pable dobtenir un programme du langage dactions dans lequel : 1) toutes les
donnes sont en mmoire ou dans des registres ; 2) on na plus que des struce
e
tures conditionnelles binaires (des si ... alors ... sinon ...) et des itrations : 3)
e
toutes les conditions sont lmentaires, au sens o` on peut en obtenir la valeur
ee
u
boolenne par une ou plusieurs instructions de calcul, suivies dune consultae
tion du mot dtat. Ainsi X+2*Y < 4 est lmentaire, alors que X < Y et Y > 0
e
ee
ne lest pas. Cette forme de programme donne directement une machine
squentielle ` lexique restreint, dans laquelle certains tats correspondent au
e
a
e
calcul des conditions lmentaires.
ee
La technique consiste ensuite ` coder chaque tat par une squence dinsa
e
e
tructions du langage dassemblage, ` laquelle on associe une tiquette de dbut.
a
e
e
Il ne reste plus qu` disposer ces direntes squences les unes ` la suite des
a
e
e
a
autres, en ajoutant les branchements ncessaires.
e
Cette technique est illustre par lexemple des gures 13.1 et 13.2.
e

2.

Cas des programmes ` plusieurs blocs


a

La dicult de la traduction en langage dassemblage des programmes `


e
a
structure de blocs provient de deux aspects de ces programmes : les lexiques
locaux et le passage de param`tres, dans le cas le plus gnral o` les actions
e
e e
u
et fonctions introduites peuvent tre rcursives. Nous tudions les probl`mes
e
e
e
e
lis aux lexiques locaux et aux param`tres dans les paragraphes 2.1 et 2.2
e
e
ci-dessous, avant de les rsoudre par une gestion de la mmoire en pile, aux
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Traduction des langages ` structure de blocs en langage dassemblage


a

! on suppose A
boucle : SUBcc
BEQ
SUBcc
BLEU
SUBcc
BA
sinon : SUBcc
finsi : BA
fin :

dans r1
r1, r2,
fin
r1, r2,
sinon
r1, r2,
finsi
r2, r1,
boucle

et B dans r2
g0

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

328

tantque A = B
si A > B alors
A A B
sinon
B B A

g0
r1

r2

Fig. 13.2 Squentialisation des codages en langage dassemblage des tats dune mae
e
chine squentielle ` actions et lexique restreint : exemple du pgcd, Cf. Chae
a
pitre 12, gure 12.5. Le programme en langage dassemblage est obtenu de
mani`re systmatique ; il peut ensuite tre simpli de plusieurs faons : supe
e
e
e
c
pression de la deuxi`me comparaison SUBcc r1, r2, g0 ; remplacement du
e
BA finsi par BA boucle directement.

paragraphes 2.3 et 2.4. Enn le paragraphe 2.5 introduit le lien dynamique des
compilateurs, et le paragraphe 2.6 rsume loccupation de la mmoire lors de
e
e
lexcution dun ensemble de procdures et fonctions paramtres.
e
e
e e
Dans le cas o` une procdure A appelle une procdure B, nous appelons
u
e
e
contexte appelant lensemble des variables de A et contexte appel lensemble
e
des variables de B.

2.1

2.1.1

Installation en mmoire des lexiques locaux


e
Cas des lexiques locaux sans rcursivit
e
e

Dans le cas dun ensemble dactions et fonctions sans rcursivit (mme


e
e
e
croise), on peut reprendre lapproche suivie prcdemment pour le lexique
e
e e
dun programme ` un seul bloc : on installe en mmoire toutes les variables
a
e
globales, puis toutes celles de la premi`re fonction ou action, ` la suite, puis
e
a
toutes celles de la deuxi`me fonction ou action, etc. Si les lexiques locaux
e
de deux actions ou fonctions A1 et A2 contiennent tous deux le nom i, avec
ventuellement des types dirents, alors ce nom correspond ` deux emplacee
e
a
ments distincts de la mmoire, ventuellement de tailles direntes. En trae
e
e
duisant lalgorithme de A1 on utilise lun des emplacements, et en traduisant
lalgorithme de A2 on utilise lautre.
Si deux actions ou fonctions A1 et A2 sont telles que A1 nappelle jamais
A2 et A2 nappelle jamais A1, on se convainc aisment que ces deux blocs
e
ne seront jamais actifs en mme temps : on dit que leurs dures de vie sont
e
e
disjointes. Dans ce cas leurs lexiques locaux peuvent occuper la mme portion
e
de la mmoire.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Cas des programmes ` plusieurs blocs


a

2.1.2

329

Cas des lexiques locaux avec rcursivit


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Lorsque les actions et fonctions peuvent tre rcursives, il nest plus pose
e
sible dappliquer la mme mthode. Observons pour nous en convaincre le
e
e
programme donn ` titre dexemple gure 13.3, qui utilise une action rcursive
ea
e
de calcul de la suite de Fibonacci (dnie par : x0 = x1 = 1 puis n 2 xn =
e
xn1 + xn2 ). La gure 13.4 illustre le droulement du calcul si lentier lu dans
e
le programme principal est 4.
Pour obtenir le rsultat correct il faut disposer dautant dexemplaires de
e
f1 et f2 (nots f1, f1, etc.) que dappels imbriqus. Il faut donc un espace
e
e
mmoire pour la variable locale f1 (resp. f2) de CalculFibo pour chaque appel
e
de cette action. Or le nombre dappels dpend de la variable dentre A ; sa
e
e
valeur est obtenue par Lire et est donc par dnition inconnue quand on est en
e
train de modier le texte du programme, indpendamment de toute excution,
e
e
comme cest le cas ici. Il nous faut donc trouver un mcanisme permettant
e
dallouer une zone de mmoire ` chaque entre dans la procdure, zone qui
e
a
e
e
devra tre restitue avant la sortie de procdure.
e
e
e

2.2

Installation en mmoire des param`tres


e
e

Lorsquun programme comporte plusieurs blocs, il fait galement usage de


e
param`tres donnes ou rsultats. Comme les lexiques locaux, le passage de
e
e
e
param`tres demande de la mmoire. En eet, un passage de param`tres est un
e
e
e
change dinformation entre le contexte appelant et le contexte appel. Tout se
e
e
passe comme si ces deux contextes avaient acc`s ` un emplacement dans une
e a
portion de mmoire partage gre de mani`re tr`s particuli`re : lappelant peut
e
e ee
e
e
e
y crire une information ` transmettre ` lappel ; lappel y lit linformation.
e
a
a
e
e
Le passage de param`tres ncessite donc une sorte de bo aux lettres.
e
e
te
2.2.1

Conventions de passage des param`tres donnes ou rsultats


e
e
e

Examinons tout dabord comment se passe lchange dinformation entre


e
appelant et appel, lors dun passage de param`tres, selon quil sagit dune
e
e
donne ou dun rsultat. Nous traitons ici le param`tre rsultat avec le mode de
e
e
e
e
passage par rfrence. Il existe dautres modes de passage de param`tres dont
ee
e
les particularits sont expliques dans les ouvrages traitant de compilation (voir
e
e
par exemple [CGV80, WM94]) et dont nous ne parlons pas ici. Considrons
e
lalgorithme de calcul de la somme de deux entiers, donn gure 13.5.
e
Le programme principal appelle CalculSomme en lui passant deux donnes
e
dans les param`tres A et B, et en reoit un rsultat dans le param`tre R. Supe
c
e
e
posons pour linstant que lallocation mmoire soit rsolue pour les param`tres
e
e
e
(voir plus loin) et quon dispose de 3 emplacements mmoire dadresses rese
pectives aA, aB et aR pour le passage de param`tres. Par ailleurs les variables
e
du lexique global sont places aux adresses aX, aY et aZ. Lalgorithme modi
e
e
est donn gure 13.6.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Traduction des langages ` structure de blocs en langage dassemblage


a

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

330

CalculFibo : une action


(la donne n : un entier 0 ; le rsultat f : un entier > 0)
e
e
{ tat nal : f = xn }
e
lexique local :
f1, f2 : des entiers > 0
algorithme :
si n = 0 ou n = 1 alors f 1
sinon
CalculFibo (n 1, f1) ; CalculFibo (n 2, f2)
f f1 + f2
lexique du programme principal :
A, B : des entiers 0
algorithme du programme principal :
Lire (A) ; CalculFibo (A, B) ; Ecrire (B)

Fig. 13.3 Algorithme rcursif de calcul de la suite de Fibonacci


e
1. CalculFibo (4, B)
1.1 CalculFibo (3, f1)
1.1.1 CalculFibo (2, f1)
1.1.1.1 CalculFibo (1, f1)
f1 1
1.1.1.2 CalculFibo (0, f2)
f2 1
1.1.1.3 f1 f1 + f2
1.1.2 CalculFibo (1, f2)
f2 1
1.1.3 f1 f1+ f2
1.2 CalculFibo (2, f2)
1.2.1 CalculFibo (1, f1)
f1 1
1.2.2 CalculFibo (0, f2)
f2 1
1.2.3 f2 f1 + f2
1.3 B f1+f2

Fig. 13.4 Droulement du calcul de la suite de Fibonacci, pour lentre 4.


e
e
f1 1 ; f2 1 ; f1 f1 + f2 { = 2 } ;
f2 1 ; f1 f1+ f2 { = 3 } ;
f1 1 ; f2 1 ; f2 f1 + f2 { = 2 } ;
B f1+f2 { = 5 } ;

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Cas des programmes ` plusieurs blocs


a

331

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

CalculSomme (les donnes a, b : deux entiers ; le rsultat r : un entier) :


e
e
r a+b
lexique du programme principal
X, Y, Z : trois entiers
algorithme du programme principal
Lire (X) ; Lire (Y)
CalculSomme (X+1, Y2, Z)
Ecrire (Z)
Fig. 13.5 Algorithme de calcul de la somme de deux entiers
CalculSomme :
MEM[MEM[aR]] MEM[aA] + MEM[aB]
algorithme du programme principal
... { traduction de Lire (X) ; Lire (Y) }
MEM[aA] 4 MEM[aX] + 1
MEM[aB] 4 MEM[aY] 2
MEM[aR] 4 aZ
CalculSomme
... { traduction de Ecrire (Z) }

Fig. 13.6 Interprtation des natures de param`tres


e
e

Passage des donnes par valeur : Les valeurs des expressions qui constie
tuent les param`tres donnes eectifs doivent tre calcules puis places en
e
e
e
e
e
mmoire par lappelant, ` un endroit connu de lappel qui les lira. Ainsi
e
a
e
on calcule la valeur de X+1, cest-`-dire MEM[aX] + 1, et on la recopie dans
a
MEM[aA].
Passage des rsultats par rfrence : Pour les param`tres rsultats,
e
e e
e
e
passer leur valeur na aucun intrt. Par dnition un rsultat est produit par
ee
e
e
laction appele. Quand on crit CalculSomme (X+1, Y2, Z), on sattend `
e
e
a
ce que la valeur de la variable Z soit modie. Pour cela il faut que laction
e
appele soit capable daecter une nouvelle valeur ` la variable Z. Si lace
a
tion CalculSomme tait toujours appele depuis le programme principal, avec
e
e
comme troisi`me param`tre la variable Z, il surait dcrire dans le corps de
e
e
e
laction : MEM[aZ] .... Mais elle peut tre appele ` divers endroits du
e
e a
programme, avec des param`tres dirents. Le corps de laction doit donc tre
e
e
e
capable dcrire dans la variable quon lui indique. Pour assurer ce fonctione
nement, ladresse de la variable qui constitue le param`tre rsultat eectif est
e
e
fournie ` lappele ; elle est place en mmoire par lappelant, ` un endroit
a
e
e
e
a
connu de lappele qui la lira. On crit donc : MEM[aR] 4 aZ. Lappele
e
e
e
peut alors rcuprer cette adresse dans MEM[aR], et sen servir pour crire
e
e
e
dans la bonne variable, par indirection : MEM[MEM[aR]] .... On retrouve

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

332

Traduction des langages ` structure de blocs en langage dassemblage


a

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

la contrainte nonce au paragraphe 1.6 du chapitre 4 : les param`tres eectifs


e
e
e
rsultats doivent tre des expressions qui pourraient gurer en partie gauche
e
e
daectation, cest-`-dire dsigner des emplacements mmoire.
a
e
e
Si lon dnit la variable :
e
T : un tableau sur [0..N] de < y : un caract`re ; x : un entier >
e

lexpression T[4].x peut-tre utilise comme param`tre rsultat de


e
e
e
e
CalculSomme. Dans ce cas le passage de param`tre consiste ` crire,
e
a e
dans le programme principal : MEM[aR] 4 aT + 4*8 + 4, o` aT dsigne
u
e
ladresse de dbut du tableau T. Le corps de CalculSomme est inchang.
e
e
2.2.2

Installation en mmoire des bo


e
tes aux lettres

Une fois adoptes ces conventions de passage des param`tres donnes par
e
e
e
valeur et rsultat par adresse, il reste ` tudier la mani`re dobtenir aA, aB et
e
ae
e
aR : cest le probl`me de lallocation mmoire pour les param`tres.
e
e
e
Cas sans rcursivit : Il faut prvoir une zone de mmoire pour chaque
e
e
e
e
param`tre de F1 vers F2, pour chaque couple dactions ou fonctions F1, F2
e
telles quun appel de F2 appara quelque part dans le corps de F1. Un examen
t
du texte complet du programme, indpendamment de toute excution, permet
e
e
de reprer qui appelle qui, et la place ncessaire pour la liste de param`tres,
e
e
e
dans chaque cas. On choisit alors les adresses dans MEM, par exemple ` la
a
suite de tous les emplacements allous aux variables globales. Il sut de se
e
tenir ` ces choix lorsque lon transforme les algorithmes des appelants et des
a
appels, comme nous lavons fait pour CalculSomme ci-dessus.
e
Cas avec rcursivit : Dans le cas avec rcursivit, on retombe sur le
e
e
e
e
probl`me voqu pour les variables des lexiques locaux : il faut un emplacement
e e
e
ddi aux param`tres, pour chaque appel de F1 qui appelle F2, ` lexcution.
e e
e
a
e
Le choix des adresses des param`tres ne peut donc se faire statiquement, ceste
a
`-dire au moment de la transformation du programme.

2.3

Allocation dynamique de mmoire pour les lexiques


e
locaux

Il appara la ncessit de grer dynamiquement lassociation demplacet


e
e
e
ments en mmoire aux variables des lexiques locaux. Une solution consiste
e
a
` utiliser les primitives dallocation dite dynamique de mmoire tudies au
e
e
e
chapitre 4, paragraphe 4.
Supposons que chaque appel de CalculFibo utilise Allouer et Librer pour
e
rserver momentanment la mmoire ncessaire ` linstallation de ses variables
e
e
e
e
a
e
a
locales f1 et f2. Notons taille 2 entiers le nombre doctets ncessaires ` ces
deux entiers. Il nous faut encore une variable locale p qui donne ladresse de
la zone alloue. On suppose quil y a toujours de la place disponible. Cela
e
donne le programme de la gure 13.7. Noter que lallocation mmoire pour les
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Cas des programmes ` plusieurs blocs


a

333

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

direntes variables du lexique local suit la mme dmarche que celle prsente
e
e
e
e
e
au paragraphe 1.1.2. Une fois obtenue une adresse de base p par allocation
dynamique, on dispose les variables les unes apr`s les autres en mnageant des
e
e
espaces ventuels pour tenir compte des contraintes dalignement.
e
Cette transformation na pas encore permis dliminer le lexique local : on
e
a remplac les variables dorigine par une seule : p, mais il en faut toujours
e
autant dexemplaires que dappels de CalculFibo.
Toutefois, on peut poursuivre la transformation du programme. En eet, on
remarque que, vue la structure des appels dactions et fonctions, la derni`re
e
zone alloue est toujours la premi`re libre (autrement dit, les appels sont
e
e
ee
bien parenthss : on ne peut pas successivement entrer dans A ; entrer dans
ee
B ; sortir de A, sortir de B). On prote donc de cette situation tr`s particuli`re
e
e
pour ne pas utiliser un mcanisme gnral dallocation et libration despaces
e
e e
e
mmoire, dont la complexit provient justement de la gestion des trous qui
e
e
apparaissent si lon ne lib`re pas toujours le dernier allou.
e
e
On propose de raliser lallocation mmoire par les algorithmes de la e
e
gure 13.9. Le corps des actions est tr`s court ; si lon suppose de plus quil
e
y a toujours de la place, on peut remplacer tout appel Allouer (p, n) par
pp pp n ; p pp et tout appel Librer (p, n) par pp pp + n. On
e
peut ensuite liminer la variable locale p et ne garder que la variable globale
e
pp. Cela donne lalgorithme de la gure 13.8. On dit que la mmoire est gre
e
ee
en pile, pour rendre compte du fait que les allocations se font selon un ordre
dernier allou/premier libr (Cf. Chapitre 4, paragraphe 5.).
e
e e

2.4

Allocation dynamique de mmoire pour


e
les param`tres
e

Pour lallocation mmoire ncessaire aux param`tres, il faut prvoir de


e
e
e
e
mme des appels aux actions Allouer et Librer. Lallocation de mmoire pour
e
e
e
les param`tres a la mme proprit que celle des variables locales : on lib`re toue
e
ee
e
jours les derniers allous. On applique donc la mme simplication qui consiste
e
e
a
` allouer et librer de la mmoire grce aux procdures de la gure 13.9. Lalloe
e
a
e
cation de mmoire pour le passage de param`tres se fait dans lappelant, juste
e
e
avant lappel ; la libration se fait juste apr`s lappel, toujours dans lappelant.
e
e
En appliquant toutes les transformations tudies jusque l` (dont le
e
e
a
mcanisme de passage de param`tre rsultat), on obtient lalgorithme donn
e
e
e
e
gure 13.10. La gure 13.11 illustre lvolution du contenu de la mmoire lors
e
e
de lexcution du programme qui appelle CalculFibo(4, ...).
e
Noter que la variable pp est gre grce ` des oprations parfaitement
ee
a a
e
symtriques : pp pp 8 (pour faire de la place aux variables locales) en
e
entrant dans CalculFibo et pp pp + 8 en en sortant ; pp pp 8 juste
avant lappel rcursif de Calcul Fibo (pour tenir compte de la place occupe
e
e
par les param`tres), pp pp + 8 juste apr`s. Cette forme de code garantit
e
e
linvariant suivant : ltat de la mmoire (en particulier la position de pp) est
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Traduction des langages ` structure de blocs en langage dassemblage


a

CalculFibo : une action (la donne n : un entier 0 ; le rsultat f : un entier > 0)


e
e
p : un pointeur de caract`re
e
{ variable LOCALE }
{ lexique local : f1 sera en MEM[p+0] et f2 en MEM[p+4] }
algorithme :
Allouer (p, taille 2 entiers)
si n = 0 ou n = 1 alors f 1
sinon
CalculFibo (n 1, MEM[p+0])
CalculFibo (n 2, MEM[p+4])
f MEM[p+0]+MEM[p+4]
Librer (p, taille 2 entiers)
e
lexique du programme principal :
A, B : des entiers 0
algorithme du programme principal :
Lire (A) ; CalculFibo (A, B) ; Ecrire (B)

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

334

Fig. 13.7 Installation du lexique local de CalculFibo en mmoire


e

CalculFibo : une action (la donne n : un entier 0 ; le rsultat f : un entier > 0)


e
e
algorithme :
{ Rservation de place pour les deux entiers du lexique local, qui rend
e
disponibles les deux emplacements MEM[pp+0] et MEM[pp+4]. Pour
simplier, on ne fait pas le test de dbordement (Cf. Figure 13.9) }
e
pp pp taille 2 entiers
{ Corps de laction proprement dite }
si n = 0 ou n = 1 alors f 1
sinon
CalculFibo (n 1, MEM[pp+0])
CalculFibo (n 2, MEM[pp+4])
f MEM[pp+0]+MEM[pp+4]
{ Libration de la place occupe par le lexique local }
e
e
pp pp + taille 2 entiers
lexique du programme principal :
A, B : des entiers 0 ; pp : un pointeur
algorithme du programme principal :
Initialiser
Lire (A)
CalculFibo (A, B)
Ecrire (B)

Fig. 13.8 Simplication de lallocation mmoire


e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Cas des programmes ` plusieurs blocs


a

335

MEM

pp : un pointeur
Initialiser :
pp tmem

Allouer (p, n) :
si pp n < T+1 alors
p NIL
sinon
pp pp n
p pp

adresses croissantes

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Zone
libre

Zone
occupe
e

T+1

pp

tmem 1

Librer (p, n) :
e
pp pp + n

tmem

Fig. 13.9 Gestion mmoire simplie : pour allouer une nouvelle zone de taille n, on
e
e
dplace le pointeur pp de n octets vers les adresses dcroissantes. La zone
e
e
ainsi rendue disponible est entre les adresses pp incluse et pp+n exclue.

le mme ` lentre dans un bloc et ` la sortie.


e
a
e
a

2.5

Reprage des objets locaux par rapport ` la base de


e
a
lenvironnement : lien dynamique

Nous remarquons dans lexemple CalculFibo (gure 13.10) que la position


relative ` pp des objets prsents en mmoire est modie lorsque pp bouge.
a
e
e
e
Ainsi, lors de lentre dans CalculFibo, les param`tres sont accessibles aux
e
e
adresses MEM[pp+4] et MEM[pp+0]. D`s que lon diminue pp de 8, de mani`re
e
e
a e
` mnager de la place pour les variables locales f1 et f2 de la procdure
e
CalculFibo dorigine, le reprage des param`tres devient : MEM[pp+4+8] et
e
e
MEM[pp+0+8]. Rien de bien dicile ` calculer, mais le nouveau programme
a
de CalculFibo devient vite illisible sans dessin.
Le probl`me vient du fait que les objets placs en mmoire (les variables
e
e
e
locales et les param`tres) sont reprs par rapport ` une unique adresse pp,
e
ee
a
elle-mme destine ` voluer.
e
e ae
Lide du lien dynamique que lon trouve en compilation est tr`s simple :
e
e
au lieu de reprer les objets locaux dun bloc par rapport ` ladresse du haut,
e
a
qui risque dtre modie, il sut de les reprer par rapport ` ladresse du
e
e
e
a
bas, qui ne bouge pas pendant toute la dure de vie du bloc. On introduit une
e
adresse supplmentaire pb, dite pointeur de base de lenvironnement (frame
e
pointer en anglais), destine ` pointer sur la base de lenvironnement du bloc
e a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

336

Traduction des langages ` structure de blocs en langage dassemblage


a

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

CalculFibo : une action


{ param`tres : on rcup`re la valeur de la donne n en MEM[pp+4] ; on
e
e
e
e
crit la valeur du rsultat f ` ladresse indique dans MEM[pp+0]. }
e
e
a
e
pp pp 8
{ Attention, maintenant, n est en MEM[pp+4+8] et f en MEM[pp+0+8]
Lexique local : f1 sera en MEM[pp+0] et f2 en MEM[pp+4] }
si MEM[pp+4+8] = 0 ou MEM[pp+4+8] = 1 alors
MEM[MEM[pp+0+8]] 1
sinon
{ Premier appel : (Point i) }
MEM[pp4] 4 MEM[pp+4+8] 1
MEM[pp8] 4 p+0
pp pp 8 { place des param`tres - (Point ii) }
e
CalculFibo
pp pp + 8 { on te les param`tres }
o
e
{ Deuxi`me appel : }
e
MEM[pp4] 4 MEM[pp+4+8] 2
MEM[pp8] 4 pp+4
pp pp 8 { place des param`tres }
e
CalculFibo
pp pp + 8 { on te les param`tres }
o
e
MEM[MEM[pp+0+8]] MEM[pp+0]+MEM[pp+4]
pp pp + 8

lexique du programme principal :


pp : un pointeur { Unique variable globale restante }
algorithme du programme principal :
Initialiser { Initialisation de la zone pile }
pp pp 8 { Place ncessaire aux variables du lexique global }
e
{ A est en MEM[pp+0] et B en MEM[pp+4]. }
{ Traduction de lappel Lire (A) : }
MEM[pp4] 4 pp+0 { adresse de A empile }
e
pp pp 4 ; Lire ; pp pp + 4 { valeur de A lue en pp+0 }
{ Appel de CalculFibo (A, B) : (point 1) }
MEM[pp4] 4 MEM[pp+0] { param`tre donne : valeur de A }
e
e
MEM[pp8] 4 pp+4 { param`tre rsultat : adresse de B }
e
e
pp pp 8 { Allocation mmoire pour les param`tres }
e
e
{ (point 2) } CalculFibo
pp pp + 8 { Libration de la mmoire des param`tres }
e
e
e
{ Traduction de lappel Ecrire (B) : }
MEM[pp4] 4 MEM[pp+4] { valeur de B empile }
e
pp pp 4 ; Ecrire ; pp pp + 4 { B crit }
e

Fig. 13.10 Elimination compl`te des lexiques et des param`tres dans CalculFibo (On
e
e
a suppos taille 2 entiers = 8).
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Cas des programmes ` plusieurs blocs


a

337

MEM

MEM

MEM

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

pp

f1
f2
@B
4
A=4
B

pp

@B

A=4
B

4
A=4
B

@B

tmem

@B

tmem

tmem

CalculFibo (4, ...)


avant le 1er appel
rcursif (point i)
e

Prog. principal
avant CalculFibo
point 2

Prog. principal
Point 1
on a lu A=4
MEM

MEM

MEM

pp T

f1

f1
f2
@f1
1
f1
f2
@f1
2
f1

f2
@f1
3
f1
f2
@B
4
A=4
B

f2
@f1
3
f1
f2
@B
4
A=4
B

@f1

pp

@f1

pp

@f1

@B

tmem

@f1
3
f1
f2
@B
4
A=4
B

@f1

(f)
(n)

CalculFibo (4, ...)


point ii

@B

(f)
(n)

(f)
(n)

@f1

@B

tmem

tmem

CalculFibo (3, ...)


point i

CalculFibo (1, ...)


point i

Fig. 13.11 Contenu de la mmoire lors de lexcution de CalculFibo


e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

var. locales inutilises


e

pp

338

Traduction des langages ` structure de blocs en langage dassemblage


a

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

en cours dexcution, cest-`-dire juste sous les variables locales du bloc. Sur
e
a
la gure 13.12-a, les pointeurs de base denvironnement sont gurs par des
e
`ches en trait gras ; la notation @x est utilise pour signier ladresse de x.
e
e
Lorsquon passe dun bloc appelant ` un bloc appel, il sut de placer
a
e
la variable pb ` la base de lenvironnement du bloc appel. Lorsque le bloc
a
e
appel se termine, il faut replacer pb ` sa position antrieure, cest-`-dire la
e
a
e
a
base de lenvironnement du bloc appelant. Contrairement ` ce qui se passe
a
pour le pointeur pp, il nest pas toujours ais de calculer lancienne position
e
de pb de mani`re ` dplacer pb par une action de la forme pb pb + k. On
e a e
introduit donc un mcanisme de sauvegarde de pb, ce qui donne le schma de
e
e
la gure 13.12-b. Chacune des positions de pb pointe sur une case mmoire qui
e
contient la sauvegarde de lancienne valeur (plus bas dans la pile). La suite des
ces sauvegardes successives forme ce que lon appelle le cha
nage dynamique,
ou lien dynamique.
Remarque : Il existe galement en compilation une notion de lien statique,
e
a
` ne pas confondre avec le lien dynamique. Le lien dynamique cha entre eux
ne
les environnements de deux blocs A et B tels que A appelle B, ` lexcution.
a
e
Le lien statique cha entre eux les environnements de deux blocs A et B tels
ne
que B est dni dans A, dans le texte du programme. Cela peut arriver en
e
Pascal, Ada, ANSI C, par exemple, mais pas en C classique.

La gure 13.13 donne le programme de calcul de la suite de Fibonacci dans


lequel on a introduit la manipulation de la variable pb.

2.6

Rsum de loccupation de la mmoire et remarques


e
e
e

Nous avons dj` dit au chapitre 4, paragraphe 4., que la mmoire ncessaire
ea
e
e
aux donnes dun programme est forme de deux zones disjointes : une zone
e
e
ncessaire ` la gestion des zones mmoire alloues et libres dynamiquement
e
a
e
e
ee
a
` la demande du programme, quon appelle tas, et une zone ncessaire ` la
e
a
gestion des variables du lexique global et des lexiques locaux des procdures.
e
Nous venons de voir prcdemment que cette deuxi`me zone comporte non
e e
e
seulement les variables et les param`tres mais aussi ventuellement des donnes
e
e
e
de liaison entre appelant et appel : sauvegarde du lien dynamique dans notre
e
cas, adresse de retour de sous-programme dans le cas o` linstruction dappel
u
lempile (cas du 68000, paragraphe 3.4.1), lien statique ventuellement. Cette
e
zone est gre comme une pile et on parle souvent de la pile ` lexcution pour
ee
a
e
la dsigner.
e
Un certain nombre de variables peuvent aussi tre stockes dans les registres
e
e
du processeur. Il est alors ncessaire dassurer que leur valeur ne peut pas
e
tre modie par un sous-programme appel. La sauvegarde ventuelle de ces
e
e
e
e
registres est aussi eectue dans la zone pile (Cf. Paragraphe 3.1.3).
e
Noter que les acc`s ` la zone pile sont des acc`s directs dans un tableau,
e a
e
par adresse et dplacement, du genre MEM[pp+4]. Dans une vritable pile les
e
e
seules actions autorises sont Empiler et Dpiler (Cf. Chapitre 4, paragraphe 5.)
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

339

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

2. Cas des programmes ` plusieurs blocs


a

MEM

...
f1
f2
param. @f1
param. 3
f1
f2
param. @B
param. 4
A=4
B

MEM

Variables locales
de CalculFibo

Variables locales
de CalculFibo

Variables locales
du prog. principal

...
ancien pb
param. @f1
param. 3
f1
f2
ancien pb
param. @B
param. 4
A=4
B

(a)

(b)

Fig. 13.12 Pointeur de base denvironnement et lien dynamique. On reprend lexemple


de CalculFibo, gure 13.11.
(a) : position des variables locales du programme principal lors de deux
appels de CalculFibo embo es ; les `ches indiquent la position de la base
t
e
des 3 environnements ; la variable pb doit prendre successivement ces 3
valeurs lors du droulement du programme.
e
(b) : insertion des sauvegardes de pb.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Traduction des langages ` structure de blocs en langage dassemblage


a

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

340

CalculFibo : une action


pp pp 4 ; MEM[pp] pb { sauvegarde de pb }
pb pp { installation du nouveau pb, lancien est en MEM[pb] }
{ param`tres : n est en MEM[pb+8] ; f est en MEM[pb+4]. }
e
pp pp 8 { Allocation pour les variables locales }
{ Lexique local : f1 sera en MEM[pb8] et f2 en MEM[pb4] }
si MEM[pb+8] = 0 ou MEM[pb+8] = 1 alors MEM[MEM[pb+4]] 1
sinon
{ Premier appel : }
MEM[pp4] 4 MEM[pb+8] 1
MEM[pp8] 4 pb+4
pp pp 8 ; CalculFibo ; pp pp + 8
{ Deuxi`me appel : }
e
MEM[pp4] 4 MEM[pb+8] 2
MEM[pp8] 4 pb+4
pp pp 8 ; CalculFibo ; pp pp + 8
MEM[MEM[pb+4]] MEM[pb8]+MEM[pb4]
pp pb { libration des variables locales }
e
pb MEM[pp] ; pp pp+4 { restauration de lancien pb }

lexique du programme principal :


pp, pb : des pointeurs { Uniques variables globales restantes }
algorithme du programme principal :
Initialiser { Initialisation de la zone pile }
pb pp { Initialisation du pointeur de base denvironnement }
pp pp 8 { Place ncessaire aux variables du lexique global }
e
{ A est en MEM[pb8] et B en MEM[pb4]. }
{ Traduction de lappel Lire (A) : }
MEM[pp4] 4 pb8
pp pp 4 ; Lire ; pp pp + 4
{ Appel de CalculFibo }
MEM[pp4] 4 MEM[pb8]
MEM[pp8] 4 pb4
pp pp 8 ; CalculFibo ; pp pp + 8
{ Traduction de lappel Ecrire (B) : }
MEM[pp4] 4 MEM[pb4]
pp pp 4 ; Ecrire ; pp pp + 4

Fig. 13.13 Elimination compl`te des lexiques et des param`tres dans CalculFibo et
e
e
introduction du pointeur de base denvironnement pb.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Cas des programmes ` plusieurs blocs


a

341

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

et ne prjugent pas de limplantation de la pile, qui peut fort bien tre une
e
e
squence cha ee.
e
n
Noter aussi que la gestion en pile de la mmoire permet une rutilisation
e
e
maximale de la mmoire pour les lexiques locaux de deux blocs qui ne sape
pellent pas lun lautre.
2.6.1

Probl`mes dinitialisation
e

Nous verrons plus tard que, lors de lexcution eective, le programme dit
e
principal dans le texte dun programme utilisateur nest pas le premier bloc
existant. Il y a toujours un appelant, ne ft-ce que linterpr`te de commandes
u
e
a
` partir duquel on lance lexcution du programme (Cf. Chapitre 20).
e
Le codage du programme principal suit donc exactement les mmes prine
cipes que le codage des actions et fonctions paramtres. Linitialisation des
e e
pointeurs pp et pb nappara pas dans le code des programmes utilisateurs.
t
En produisant le codage du bloc qui correspond au programme principal, on
suppose que ce bloc hrite, ` lexcution, dune valeur pertinente de ces deux
e
a
e
pointeurs, installe auparavant. Le codage du programme principal doit en
e
contrepartie assurer que ce bloc se termine proprement comme une action ou
fonction, par un retour au contexte appelant.
2.6.2

Allocation mmoire mixte statique/dynamique


e

Lallocation mmoire pour les variables, et la transformation de programme


e
correspondante, produit des programmes dans lesquels apparaissent des acc`s
e
mmoire de la forme MEM[b+k], o` b est une adresse de base, et k est une
e
u
constante calcule statiquement par le compilateur. En eet, dans le cas des
e
procdures et fonctions rcursives, il est impossible dassocier statiquement
e
e
(cest-`-dire pendant la compilation et indpendamment des excutions) une
a
e
e
adresse mmoire ` chaque nom de variable apparaissant dans le lexique. Plue
a
sieurs adresses correspondent au mme nom, et elles sont en nombre dpendant
e
e
de lexcution. Nous avons rsolu cet aspect par une gestion de la mmoire en
e
e
e
pile, et une allocation mixte statique/dynamique : les adresses de base sont
dynamiques, elles dpendent de lexcution ; les dplacements des direntes
e
e
e
e
variables par rapport ` ladresse de base sont calculs statiquement, et sont
a
e
indpendants de lexcution.
e
e
La plupart des langages machine orent des acc`s mmoire avec adressage
e
e
indirect par registre et dplacement, qui sont utilisables directement pour coe
der nos programmes en langage dassemblage. Il sut que ladresse de base
soit range dans un registre. Sil nexiste pas dadressage avec dplacement,
e
e
ladresse compl`te de la variable peut tre calcule par une addition explicite
e
e
e
avant lacc`s mmoire.
e
e
En revanche le mode dadressage indirect est indispensable. La gestion en
pile de la mmoire nest pas implmentable en langage machine sans adressage
e
e
indirect pour les acc`s mmoire : un adressage direct signie que toutes les
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

342

Traduction des langages ` structure de blocs en langage dassemblage


a

3.

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
icie
J.ard , F C.
lles
, P . M Fer
ara na et M
h.
Wa ni nde at
ri
e
z,
ille nch
elle
i,
s

adresses sont calculables statiquement, et inscrites une fois pour toutes comme
des constantes dans le programme en langage machine.

Traduction en langage dassemblage :


solutions globales

On int`gre les solutions ` tous les aspects en prsentant deux classes de


e
a
e
solutions : la classe des solutions ` base de pile, du type de celle utilise pour
a
e
une machine 68000 ; la classe des solutions ` base de fentres de registres, du
a
e
type utilis pour une machine sparc.
e

3.1

3.1.1

Utilisation des registres et sauvegarde

Utilisation des registres pour les variables globales

Les registres de la machine pour laquelle on produit du code sont bien appropris pour ranger les uniques variables globales qui subsistent apr`s toutes
e
e
les transformations de programme envisages : les deux pointeurs, ou adresses,
e
pp et pb. En eet les registres sont par dnition accessibles dans tout contexte,
e
et la rapidit dacc`s (mmoire plus rapide que la grande mmoire, nombreuses
e
e
e
e
instructions du langage machine travaillant directement sur des registres) est
intressante pour des variables qui sont manipules tr`s souvent.
e
e
e
3.1.2

Utilisation des registres pour les temporaires

Dautre part, lorsquon code un programme dun langage de haut niveau,


il est courant de faire appara des variables temporaires dans les calculs, qui
tre
ne correspondent ` aucun nom explicitement dni par lutilisateur dans le
a
e
lexique. Pour un programme comme :
x, y, z : des entiers
x 3*(y + 2*z) 7*(x+y)
z y

Il est impossible de calculer lexpression ` aecter ` x sans utiliser dautres ema


a
placements mmoire que ceux allous aux noms x, y, z. Dans certains langages
e
e
machine (comme celui du sparc), il est mme impossible de coder laectation
e
z y (z et y tant en mmoire) sans passer par un registre intermdiaire :
e
e
e
il ny a pas de transfert mmoire vers mmoire directement.
e
e
O` placer ces temporaires de calcul ? Pour des raisons de temps dexcution,
u
e
on aimerait les placer dans les registres de la machine. On peut toujours imaginer, toutefois, une expression susamment complique pour ncessiter plus
e
e
de variables temporaires quil ny a de registres disponibles. Dans ce cas les
compilateurs placent les temporaires dans la pile.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Traduction en langage dassemblage : solutions globales

3.1.3

343

Ncessit de sauvegarde des registres


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Si les registres de la machine servent aux temporaires de calcul, il appara


t
des cas comme :
lexique
x, y, z : des entiers
f : un entier un entier
algorithme
x f( 3*(y + 2*z) 7*(x+y) )

f(a) : 2 * a*a*a + 4 *a*a + 6*a + 1

Le programme principal et la fonction f doivent tout deux faire appel ` des


a
registres comme temporaires de calcul. Sils utilisent les mmes registres, il se
e
peut que les temporaires du programme principal ne soient pas prservs de
e
e
part et dautre de lappel de f.
Pour remdier ` cet inconvnient, il faut sauvegarder les valeurs des ree
a
e
gistres utiliss comme temporaires de calcul, lorsquon passe dun bloc ` un
e
a
autre. Il y a essentiellement deux classes de solutions : 1) la sauvegarde dans
lappelant, de tous les registres quil utilise et veut prserver de part et dautre
e
de lappel dun autre bloc ; 2) la sauvegarde dans lappel, de tous les registres
e
dans lesquels il crit. La deuxi`me solution a tendance ` provoquer moins de
e
e
a
sauvegardes : on ne sauvegarde que ce qui est eectivement modi. Cela peut
e
malgr tout tre inutile : il est en eet possible quun appelant ne lutilise pas.
e
e
La sauvegarde est ralise dans la pile, par exemple juste au-dessus des
e e
variables locales. Lexemple dtaill au paragraphe 3.4.3 ci-dessous illustre la
e
e
sauvegarde des registres dans lappel.
e

3.2

Appel de sous-programme : laller

Nous avons rsolu les probl`mes dallocation mmoire pour les lexiques
e
e
e
locaux et les param`tres. Dans nos algorithmes modis, il subsiste des appels
e
e
rduits au nom de la procdure ou fonction appele. Chaque bloc est cod en
e
e
e
e
langage dassemblage dapr`s les principes noncs au paragraphe 1. Il reste
e
e
e
a
` coder les appels de blocs par des instructions de branchement ` des sousa
programmes disponibles dans le langage machine considr. Se pose alors le
ee
probl`me de ladresse du bloc ` atteindre.
e
a
Le cas le plus simple est celui des structures de blocs statiques : les
procdures et fonctions sont toutes connues, elles ont des noms, et sont toue
jours appeles directement par lintermdiaire de leur nom, dans le programme
e
e
en langage de haut niveau.
On code chaque bloc P sparment (voir aussi aspects de compilation
e e
spare, chapitre 18, paragraphe 2.), en lui associant une tiquette de dbut
e e
e
e
dapr`s le nom du bloc dans le langage de haut niveau, par exemple P. Les
e
appels de P sont cods par : call P, si call est le nom de linstruction de
e
saut ` un sous-programme (Cf. Chapitre 12, paragraphe 1.4.3).
a
Les textes obtenus par codage des dirents blocs sont simplement juxtae

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

344

Traduction des langages ` structure de blocs en langage dassemblage


a

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

poss, dans un ordre quelconque. Il sut de se rappeler quelle est ltiquette


e
e
qui correspond au bloc du programme principal. On lappelle le point dentre
e
du programme.
Un cas plus compliqu appara lorsque le langage de haut niveau quon
e
t
utilise permet de dnir par exemple un tableau de fonctions. Dans ce cas les
e
fonctions ne sont plus ncessairement appeles par leur nom. On noterait par
e
e
exemple, dans un langage dactions tendu :
e
Tf : le tableau sur [1..10] de (un entier un entier)
x : un entier sur [1..10] ; y, z : des entiers
Lire (x) ; Lire (y) ; z Tf[x] (y)

Le programme en langage dassemblage correspondant doit manipuler explicitement les adresses des fonctions, cest-`-dire les adresses associes aux
a
e
tiquettes de dbut des squences dinstructions des fonctions. Ladresse `
e
e
e
a
laquelle on doit brancher pour appeler la fonction Tf[x] doit tre calcule dye
e
namiquement, et le langage machine doit orir un appel de sous-programme
par adressage indirect. Dans la suite nous ne nous intressons plus ` ce cas.
e
a

3.3

Appel de sous-programme : le retour

Dans les programmes transforms du langage daction obtenus au parae


graphe prcdent, nous crivons tout simplement dans un bloc P : CalculFibo
e e
e
pour signier quil faut excuter le corps de cette procdure ; nous souse
e
entendons que, lorsque cette procdure appele sera termine, le cours de
e
e
e
lexcution reprendra dans P, juste apr`s lappel.
e
e
Le basculement de contexte ` laller est simple, comme nous venons de le
a
voir. Le basculement de contexte au retour, en revanche, doit tre tudi de
e
e
e
pr`s.
e
Tout dabord, il faut terminer le corps de la procdure appele CalculFibo
e
e
par un branchement explicite au point o` lon dsire retourner. Et comme
u
e
ce point dpend de la position de lappel de CalculFibo dans le programme,
e
cest une adresse variable selon les appels. Le branchement de retour est donc
ncessairement indirect, puisque le code dune procdure est indpendant des
e
e
e
endroits o` elle est appele.
u
e
En quelque sorte, ladresse o` il faudra retourner en n de procdure est
u
e
un param`tre donne supplmentaire de toute procdure. Le raisonnement sur
e
e
e
e
les param`tres de fonctions et procdures rcursives que nous avons tenu au
e
e
e
paragraphe 2. est encore valable.
Ladresse de retour doit donc tre stocke quelque part (par exemple range
e
e
e
dans la pile avec les autres param`tres donnes) par le bloc appelant, avant
e
e
linstruction de saut au sous-programme appel. En eet, cette adresse est
e
une valeur du compteur programme, et le saut ` un sous-programme consiste
a
justement a forcer une nouvelle valeur du compteur programme.
`
Fort heureusement les langages machines orent toujours une instruction

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Traduction en langage dassemblage : solutions globales

345

Ar
chi
P.
te c
Am tu
F.
bla res
La
P.
gn rd, J Logi
Sic ier,
.-C ciel
ard
F.
. F les
,P
Ma ern et
h.
ran and Ma
Wa
inc
ez, tri
e
ille
hi,
ell

es

de branchement ` un sous-programme avec sauvegarde intgre de ladresse


a
e e
dpart. Pour le retour, soit on trouve une instruction cohrente avec la saue
e
vegarde lors de lappel (cas du 68000), soit il faut utiliser une instruction de
branchement en respectant les conventions de linstruction dappel (cas du
sparc).
Rappelons enn que le programme principal doit se comporter comme les
autres blocs ; on suppose que lon y est arriv par un mcanisme dappel de
e
e
sous-programme, et il se termine donc par un retour au contexte appelant.
Remarque :
Si lon oublie linstruction de retour ` la n dun sousa
programme, le processeur poursuit lexcution en squence cest-`-dire en
e
e
a
gnral dans le code dun autre sous-programme.
e e

3.4

3.4.1

Solutions ` base de pile, type 68000


a
Gestion de la zone de pile en assembleur

Les modes dadressage indirects par registre avec pr-dcrmentation ou


e e e
post-incrmentation sont particuli`rement bien adapts ` la gestion en pile
e
e
e a
dune portion de la mmoire. Il sut de rserver un registre pour servir de
e
e
pointeur de pile.
Le choix de ce registre nest pas toujours enti`rement libre. Par exemple,
e
le jeu dinstructions du 68000 fournit linstruction jsr de saut ` un sousa
programme, avec une sauvegarde automatique de ladresse qui suit linstruction
jsr de la forme
RegA[7] RegA[7] 4 ; MEM[RegA[7]] PC

On y reconna un mcanisme de gestion de pile avec RegA[7] (le registre


t
e
dadresse numro 7) comme pointeur de pile, plac sur la derni`re case occupe ;
e
e
e
e
la pile cro en diminuant les adresses.
t
Il sut donc de grer le passage des param`tres et lallocation de mmoire
e
e
e
pour les lexiques locaux en adoptant cette convention impose par le jeu dinse
tructions lui-mme (et quon ne peut donc pas remettre en cause, puisque
e
lalgorithme dinterprtation du langage machine est cbl).
e
a e
Le retour de sous-programme adopte la mme convention. Linstruction
e
rts est un branchement inconditionnel, doublement indirect par registre avec
postincrmentation. Leet est :
e
PC MEM[RegA[7]] ; RegA[7] RegA[7] + 4

Autrement dit rts trouve son adresse en sommet de pile, et la dpile.


e
3.4.2

Instructions link et unlink

Reprenons la squence dinstructions ncessaires ` linstallation de lenvie


e
a
ronnement local de la procdure CalculFibo (Cf. Figure 13.13) :
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

346

Traduction des langages ` structure de blocs en langage dassemblage


a

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

pp pp - 4 ; MEM[pp] pb ; pb pp ; pp pp 8

Et la squence dinstructions symtrique, ` la n de CalculFibo :


e
e
a
pp pb ; pb MEM[pp] ; pp pp+4

En langage dassemblage 68000, on crit, en supposant que le pointeur pp est


e
rang dans A7 et le pointeur pb dans A6 :
e
link A6, -8
! squence de dbut
e
e
....
unlink A6
! squence de fin
e
Leet de ces instructions est exactement celui dcrit plus haut. Noter que
e
le choix de A6 comme pointeur de base denvironnement est libre, puisque cest
un param`tre explicite des instructions link et unlink ; cest une convention
e
des compilateurs. A7 en revanche est le pointeur de pile oblig.
e
3.4.3

Codage avec lien dynamique, variables locales dans la pile,


temporaires dans des registres

Soit les actions A, B et C dnies Figure 13.14. A est laction principale, elle
e
appelle B qui appelle C. Nous donnons gure 13.15 le codage de la procdure A
e
dans un langage dassemblage pour 68000. Rappelons que ladresse de retour
de sous-programme est sauv dans la pile dexcution par linstruction jsr et
e
e
que la sauvegarde du lien dynamique et la mise en place de lenvironnement
local du sous-programme sont assures par linstruction link. Par rapport au
e
schma de pile donn gure 13.12-b, la zone des donnes de liaison comporte
e
e
e
non seulement la sauvegarde de pb mais aussi ladresse de retour (en-dessous),
ce qui donne la taille de deux adresses (8 octets) ` cette zone.
a

3.5

Solutions ` base de fentres de registres, type sparc


a
e

Nous tudions ici les schmas de codage de sous-programmes suggrs


e
e
ee
par certaines architectures de processeurs, dites ` fentres de registres. Pour
a
e
prciser les choses, nous traitons lexemple du sparc. Comme nous lavons
e
signal au chapitre 12, paragraphe 1.7.1, le processeur sparc est quip dun
e
e
e
banc de registres, qui sont ` acc`s plus rapide que la grande mmoire. Ces
a
e
e
nombreux registres sont utiliss pour optimiser les mcanismes de passages de
e
e
param`tres et dappels de sous-programmes. Les techniques tudies plus haut,
e
e
e
et mises en oeuvre directement dans le cas des langages machine type 68000,
sont encore applicables. Lide consiste ` utiliser le banc de registres comme
e
a
un cache sur la pile. Nous dtaillons ci-dessous les mcanismes permettant de
e
e
comprendre cette armation.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Traduction en langage dassemblage : solutions globales

347

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

A : laction { sans param`tre, donc. }


e
lexique : x, y : des entiers
algorithme : x 1 ; B (3*x + 1, y) ; x y
B : laction (la donne a : un entier, le rsultat b : un entier)
e
e
lexique : z : un entier
algorithme : C (z) ; b z + a
C : laction (le rsultat u : un entier)
e
lexique : i : un entier
algorithme :
i 1 ; u 1
tant que i 10
u u + i ; i i + 1
Fig. 13.14 Procdures A, B, C
e

! Tous les idfs dsignent des entiers de 4 octets


e
TailleEnvB = 4
! Acc`s a la variable locale, relatif ` ladresse de base :
e `
a
deltaZ = 4
! Acc`s aux param`tres, relatifs ` ladresse de base :
e
e
a
deltaA = 12
deltaB = 8
.text
B :link A6, -TailleEnvB
! laction A a prpar les param`tres : donne a <--> valeur 3*x+1
e
e
e
e
! et rsultat b <--> adresse de y avant lappel ` B
e
a
move.l A0, -(SP)
! sauvegarde de 2 registres
move.l D0, -(SP)
! appel de C :
move.l A6, A0
! calcul du param, adr de z dans A0
sub.l deltaZ, A0
move.l A0, -(SP)
! empiler A0
jsr C
add.l 4, SP
! librer param`tre
e
e
! fin de lappel de C
! b <-- z + a
move.l (A6+deltaA), D0
! D0 <-- a
add.l (A6-deltaZ), D0
! D0 <-- D0 + z
move.l (A6+deltaB), A0
! A0 <-- adresse b
move.l D0, (A0)
! b <-- D0
move.l (SP)+, D0
! restauration de 2 registres
move.l (SP)+, A0
unlk A6
rts
Fig. 13.15 Codage de laction B en langage dassemblage 68000

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

348

Le mcanisme de fentres de registres du sparc


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

3.5.1

Traduction des langages ` structure de blocs en langage dassemblage


a

Le SPARC dispose dun ensemble de registres gr en fentres : 8 registres


ee
e
dits globaux sont accessibles en permamence. Les autres registres sont accessibles par groupes de 24 registres dits inputs, locals et outputs. Le groupe, ou
fentre, courant, est repr par le registre CWP (pour Current Window Pointer).
e
ee
Deux instructions spciques permettent de dplacer la fentre de registres
e
e
e
en incrmentant ou dcrmentant le registre CWP : save et restore. Le dcalage
e
e e
e
est de 16 registres. Deux fentres conscutives co
e
e
ncident donc sur 8 registres :
les registres ouputs de la fentre courante avant lexcution du save core
e
respondent aux inputs de la fentre courante apr`s lexcution du save. Le
e
e
e
restore a leet inverse. Le mcanisme des fentres de registres est illustr
e
e
e
par la gure 13.16.

3.5.2

Schma de codage idal


e
e

Le mcanisme des fentres permet dimplmenter de mani`re ecace la


e
e
e
e
notion de contexte des langages procduraux. Schmatiquement, lorsquune
e
e
procdure en appelle une autre, la procdure appele eectue un save, ce qui
e
e
e
lui permet de travailler avec un nouveau contexte. La communication entre
procdure appelante et procdure appele (pour le passage des param`tres et la
e
e
e
e
gestion de ladresse de retour) est assure par les 8 registres communs aux deux
e
fentres, qui constituent la zone dchange. En n dexcution, la procdure
e
e
e
e
appele eectue un restore, qui rtablit le contexte prcdent, puis un saut
e
e
e e
a
` ladresse de retour.
Notons que lors de lappel de sous-programme ladresse de linstruction
call est sauvegarde dans le registre %o7, do` ladresse %o7+8 pour le retour
e
u
(nous faisons suivre les instructions de saut par une instruction nop de faon
c
a
` ne pas se proccuper du pipeline).
e
Le cas idal le plus simple quon puisse envisager est le cas o` les procdures
e
u
e
nutilisent jamais plus de 7 param`tres dentre, ni plus de 8 variables locales,
e
e
et o` le nombre dappels imbriqus ne dpasse pas le nombre de fentres phyu
e
e
e
siquement disponibles. Dans ce cas le mcanisme des fentres de registres est
e
e
susant. Il sut de considrer leet de linstruction CALL pour respecter la
e
convention sur la mmorisation de ladresse de retour : dans le registre o7 de
e
lappelante, qui correspond au registre i7 de lappele.
e
Le schma de codage idal est donn gure 13.17.
e
e
e
Remarque : La squence restore ; jmpl %o7+8, %g0 ; nop est souvent
e
transforme en jmpl %i7+8, %g0 ; restore. En eet, ladresse de retour est
e
situe dans le registre %o7 de lappelante, qui sappelle %i7 dans lappele. Elle
e
e
sappelle donc %i7 avant le restore, et %o7 apr`s le restore. En protant du
e
dlai de branchement, on peut raliser le branchement avant la restauration
e
e
du contexte.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

349

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

3. Traduction en langage dassemblage : solutions globales

banc de registres i

32 bits

SAVE

RESTORE

7 registres globaux

Fig. 13.16 Mcanisme des fentres de registres


e
e

appelee:
save
! utilisation des param`tres dentre %i0...%i6
e
e
! et des variables locales %l0..%l7
restore
jmpl %o7+8, %g0
nop

appelante:
! place les param`tres dans %o0..%o6
e
call appelee ! sauvegarde de ladresse de retour dans %o7
nop
...
Fig. 13.17 Schma de codage idal utilisant le mcanisme de fentres de registres
e
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

350

3.5.3

Traduction des langages ` structure de blocs en langage dassemblage


a

Probl`me : le banc de registres est ni


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

En cas de programme consquent ou de procdure rcursive, lhypoth`se sur


e
e
e
e
le petit nombre dappels imbriqus devient fausse. Pour que le programmeur
e
puisse considrer le banc de registres comme virtuellement inni, il faut prvoir
e
e
dutiliser la mmoire en plus du banc de registres.
e
Une solution simple consiste ` imaginer que, lorsque le banc de registres est
a
plein, les procdures et fonctions se mettent ` utiliser directement la mmoire
e
a
e
gre en pile, selon le schma tudi pour 68000. Comme le codage pour banc
ee
e
e
e
de registres di`re du codage pour pile ne serait-ce que dans lacc`s aux
e
e
variables locales et param`tres chaque bloc devrait alors possder deux
e
e
codages dirents, selon quil est appel quand le banc de registres est plein
e
e
ou non. Cest hors de question.
Il faut donc se dbrouiller pour obtenir cette commutation du banc de
e
registres vers la pile de mani`re transparente pour les programmes des divers
e
blocs, qui doivent toujours avoir limpression que le banc de registres est inni.
La mise en oeuvre compl`te de cette solution transparente, plus la prise en
e
compte du fait que certains programmes ont plus de 8 variables locales ou plus
de 8 param`tres, est dlicate. Elle nest pas ralisable de mani`re satisfaisante
e
e
e
e
sans utiliser le mcanisme dinterruption logicielle qui sera prsent dans la
e
e
e
partie VI.
Nous donnons ci-dessous quelques indices pour comprendre les schmas de
e
codage de langages ` structure de blocs en langage dassemblage sparc, tels
a
quon peut les observer en lisant le code produit par un compilateur C par
exemple.
3.5.4

Cas raliste
e

Pour que le programmeur (ou le concepteur de compilateur) puisse


considrer le banc de registres comme virtuellement inni, il faut prvoir un
e
e
mcanisme de sauvegarde des fentres de registres, lorsquon eectue plus de
e
e
save quil nest physiquement possible den grer.
e
Cette sauvegarde est assure automatiquement, pendant linterprtation
e
e
de linstruction save par le processeur, comme traitant dune interruption
interne dclenche par le dpassement de capacit du banc de registres. Ce
e
e
e
e
traitant dinterruption ralise une copie des registres %i0..%i7 et %l0..%l7
e
dune fentre dans la pile. Il adopte des conventions sur la zone de pile utilise,
e
e
qui doivent tre connues du programmeur.
e
Lide est dutiliser un registre comme pointeur de pile. Cest %o6. En
e
langage dassemblage %sp est dailleurs un synonyme de %o6 (sp pour Stack
Pointer). Toute fentre correspondant au contexte dune procdure en cours
e
e
dexcution doit tre telle que son registre %o6 pointe sur une zone de 64 octets
e
e
libres de la pile. Cet invariant est suppos vri au moment o` la procdure
e e e
u
e
principale de notre programme est appele (il a t install par lappelant de
e
ee
e
cette procdure, linterpr`te de commandes par exemple, Cf. Chapitre 20).
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Exercices

351

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Pour que la proprit soit toujours vraie il sut, lors de tout changement de
ee
contexte qui installe une nouvelle fentre, dinitialiser le registre %o6 de la
e
nouvelle fentre.
e
Or linstruction save du sparc se comporte comme une addition, qui
interpr`te la dsignation de ses oprandes dans la fentre de dpart, et la
e
e
e
e
e
dsignation du rsultat dans la fentre darrive. Une instruction save %o6,
e
e
e
e
-64, %o6 permet donc dinitialiser le registre %o6 de la nouvelle fentre dapr`s
e
e
la valeur du registre %o6 de lancienne : linstruction dcale le pointeur vers les
e
adresses infrieures, rservant ainsi un espace de la pile de taille 4 16 = 64
e
e
pour 16 registres de 4 octets. Lancien pointeur de pile, qui sappelait %o6
dans le contexte de lappelant, est toujours accessible. Il sappelle %i6 dans
le contexte de lappel. %fp, pour Frame Pointer, est un synonyme de %i6 en
e
assembleur. Le programme de la gure 13.19 illustre ce mcanisme.
e
3.5.5

Variables locales dans la pile et param`tres en exc`s


e
e

Dans le cas o` le nombre de registres ne sut pas pour stocker les variables
u
locales et passer les param`tres, il est possible dutiliser la pile. On peut lors
e
du save demander plus de place dans la pile que les 64 octets ncessaires ` la
e
a
sauvegarde des registres %i0..%i7 et %l0..%l7 par le traitant dinterruption
grant la demande dune fentre alors quil nen existe plus de libre.
e
e
La gure 13.20 illustre lorganisation de la pile et des fentres de registres
e
dans ce cas. La seule contrainte quil faut respecter est de conserver la place
en haut de zone alloue pour la sauvegarde ventuelle de la fentre courante.
e
e
e
Les variables locales sont alors ranges en bas de pile et on y acc`de via
e
e
une adresse de la forme %fp d, le dplacement d pouvant tre calcul stae
e
e
tiquement de la mme faon que pour la solution ` base de pile seulement.
e
c
a
Les param`tres sont ranges par lappelant dans le haut de sa zone locale,
e
e
juste sous la zone de sauvegarde pour le traitant dinterruption. Dans lappel
e
on acc`de alors aux param`tres eectifs via une adresse de la forme %sp + d
e
e
avec d 64, d tant lui aussi calculable statiquement.
e

4.

Exercices

E13.1 : Observation de lexcution dune action rcursive


e
e
Considrons lalgorithme de calcul de la suite de Fibonacci (Cf. Figure 13.3)
e
et plus particuili`rement la traduction dcrite dans le paragraphe 2.5 et la
e
e
gure 13.10. Dessiner les dirents tats du tableau MEM et plus prcisment
e
e
e e
la partie pile au cours de lexcution de laction calculFibo avec la valeur 4 pour
e
la variable A.
E13.2 : Codage des fonctions
Reprendre la dmarche dcrite dans ce chapitre pour les fonctions. Les pae
e
ram`tres dune fonction sont des donnes, pour lesquelles on peut procder
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

352

Traduction des langages ` structure de blocs en langage dassemblage


a

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

fentre 1
e
i

save %o6, -64,%o6

Zone de sauvegarde
de la fentre 2
e

fentre 2
e

PILE

6
7

restore

fentre2.SP
e

6
7

64

fentre1.SP = fentre2.FP
e
e

Fig. 13.18 Utilisation des fentres de registres avec rservation de place dans la pile
e
e
pour la sauvegarde des fentres. Noter que dans lcriture de linstruction
e
e
save %o6, -64, %o6, le premier %o6 dsigne celui de lancienne fentre
e
e
et le second celui de la nouvelle fentre.
e
appelee:
save %o6, -64, %o6
! ou save %sp, -64, %sp
! rserve une zone de 64=16*4 octets dans la pile, pour
e
! la sauvegarde des registres i et l de ce nouveau contexte.
! ... utilisation des param`tres dentre %i0...%i6
e
e
! et des variables locales %l0..%l7 ...
! retour et restauration de la fen^tre
e
jmpl %i7+8, %g0
restore
appelante:
...
call appelee ! sauvegarde de ladresse de retour dans %o7
nop
Fig. 13.19 Programme ncessitant la sauvegarde des registres
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

353

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

4. Exercices

appelant

save %o6, -taille,%o6

appel.sp
e

appelant.sp =
appel.fp
e

6
7

Contexte

sauvegarde
registres
i, l

var. locales

sauvegarde
registres
i, l

param`tres
e
>6

6
7

de lappel
e

taille > 64

Contexte de
lappelant

PILE

appelant.fp

var. locales

appel
e

Fig. 13.20 Variables locales et param`tres en exc`s dans la pile


e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

354

Traduction des langages ` structure de blocs en langage dassemblage


a

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

comme dans le cas des actions : on passe leur valeur. Le rsultat dune fonce
tion est calcul par lappel sans que lappelant lui ait fourni ladresse dune
e
e
de ses variables. Il faut donc choisir un mcanisme qui permet ` la fonction
e
a
appele decrire le rsultat quelle calcule dans un emplacement mmoire connu
e
e
e
du contexte appelant, qui pourra le lire. On peut examiner deux solutions : le
rsultat est stock dans un registre ou dans la pile. Noter que selon le type du
e
e
rsultat de la fonction (par exemple sil sagit dun produit de types ou dun
e
tableau) la solution de la pile est plus facile ` mettre en oeuvre.
a
E13.3 : Nombre de 1 dans la reprsentation binaire dun entier
e
Traduire dans le langage dassemblage de votre choix lalgorithme prsent
e
e
au chapitre 12, paragraphe 1.4.1, qui permet de compter les bits ` 1 dans la
a
reprsentation binaire dun entier.
e
E13.4 : Traduction de boucles imbriques
e
Traduire en langage dassemblage lalgorithme suivant :
lexique
i, j, x : des entiers ; N : lentier ... { donn }
e
algorithme
x 0
i parcourant 0 .. N
j parcourant 0 .. N
x x + i * j

Commencer par exprimer chaque boucle ` laide de la construction tant que


a
comme suggr au paragraphe 1.5 du chapitre 4.
ee
E13.5 : Algorithme de Bresenham
Traduire dans le langage dassemblage de votre choix lalgorithme prsent au
e
e
chapitre 5, paragraphe 2.3 qui permet de calculer les coordonnes des points
e
dune droite dans un plan.
E13.6 : Suite de Syracuse
Lalgorithme ci-dessous calcule les termes successifs de la suite de Syracuse.
Traduire cet algorithme dans le langage dassemblage de votre choix.
lexique :
X : lentier constant ...
algorithme :
tant que X = 1
si X reste 2 = 1
X 3 X + 1
sinon
X X quotient 2

{ X est impair }

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

{ X est pair }

4. Exercices

355

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

E13.7 : Suite de Fibonacci


Traduire compl`tement les algorithmes de lexemple suite de Fibonacci (algoe
rithme dcrit dans la gure 13.3) dans lassembleur de votre choix. Envisager
e
des solutions avec ou sans gestion du lien dynamique, avec ou sans utilisation
de fentres de registres.
e
E13.8 : Parcours dun tableau dentiers
Soit lalgorithme :

lexique
N : lentier ... { donn }
e
T : un tableau sur [0..N1] dentiers
S, i : des entiers
algorithme
{ calcul de la somme des lments du tableau }
ee
S T[0]
i parcourant (1..N1) : S S + T[i]

Ecrire cet algorithme en langage dassemblage. Envisager plusieurs solutions


en utilisant diverses reprsentations pour les entiers (2, 4 ou 8 octets) et divers
e
modes dadressage pour les acc`s aux lments du tableau.
e
ee
E13.9 : Parcours dun tableau de structures
Soit lalgorithme :
lexique
N : lentier ... { donn }
e
ST : le type c : un caract`re ; m : un entier
e
T : un tableau sur [0..N1] de ST
M, i : des entiers
algorithme
{ calcul du maximum des lments du tableau }
ee
M T[0].m
i parcourant (1..N1) :
Si M < T[i] alors M T[i].m

Proposer une reprsentation en mmoire du type ST et crire en langage dase


e
e
semblage lalgorithme ci-dessus.
E13.10 : Parcours de matrice carre et comparaison double longueur
e
en complment ` deux
e
a
Reprendre le probl`me E4.8 du chapitre 4, et proposer un programme en ase
sembleur sparc (description de la zone de donnes, suite dinstructions).
e
E13.11 : Observation de code
Observer le code produit par dirents compilateurs pour dirents proe
e
grammes ; en gnral une option (-S pour le compilateur gcc sous unix) permet
e e
dobtenir une version en langage dassemblage du code. Retrouver limplantation des variables globales, locales et des param`tres.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Traduction des langages ` structure de blocs en langage dassemblage


a

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

356

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s
Quatri`me partie
e

A la charni`re du logiciel et du
e
matriel...
e

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Ar
chi
P.
tec
Am tur
F.
bla es L
P. Lagn rd,
ogi
Sic ier J.- cie
ard , F C.
l les
, P . M Fer
et
ara na
h.
Ma
Wa ni nde
e
nch z, trie
il le
l l es
i,

Chapitre 14

Le processeur : linterpr`te
e
cbl du langage machine
a e
Ce chapitre dcrit la mise en oeuvre par un circuit de lalgorithme dine
terprtation des instructions dun processeur. Nous parlons aussi dinterpr`te
e
e
du langage machine. Cet interpr`te est cbl : ce nest pas un programme mais
e
a e
un circuit.
Etant donn le jeu dinstructions dni pour un processeur, la description
e
e
de cet algorithme permet de comprendre comment est excute une instruce e
tion, donc un programme en langage machine. Cest ce point de vue simple et
purement pdagogique que nous adoptons ici, la description des mthodes de
e
e
conception dun processeur dpassant le cadre de ce livre. Nous ne parlerons
e
pas non plus de processeur ` ot de donnes ou pipelin ; pour une description
a
e
e
approfondie le lecteur peut consulter [HP94].
Un processeur peut tre considr comme une machine algorithmique
e
ee
(Cf. Chapitre 11) forme dune partie oprative (une UAL, des bus, des
e
e
lments de mmorisation, etc.) et dune partie contrle. Le processeur est reli
ee
e
o
e
a
` une mmoire dans laquelle est stock un programme en langage machine. La
e
e
question de la liaison entre une machine algorithmique et une mmoire a t
e
ee
tudie au chapitre 11.
e
e
Le processeur doit rcuprer les instructions en langage machine dans la
e
e
mmoire, dans lordre du programme, et les excuter une par une. Lalgoe
e
rithme dinterprtation du langage machine consiste ainsi en une boucle ine
nie (mais nous verrons dans la partie VI, Chapitre 22, quil est possible
dinterrompre cette boucle innie) : lire linstruction courante, la dcoder,
e
raliser le travail correspondant et dterminer ladresse de linstruction suie
e
vante (Cf. Paragraphe 1.6 du chapitre 12). Si linstruction ` excuter est par
a e
exemple add d0, d1, d2 le processeur doit faire en sorte que les contenus des
registres d0 et d1 soient prsents aux deux entres de lUAL, activer laddition
e
e
et envoyer le rsultat dans le registre d2.
e
La comprhension de ce chapitre suppose connus les chapitres 8, 9, 10, 11
e
et 12. Apr`s avoir expliqu les principes de linterprtation des instruce
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

360

Le processeur : linterpr`te cbl du langage machine


e
a e

Mmoire
e
SelMem

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Processeur
Partie contrle
o

l/e

bus donnes
e

programme

RI

PC

bus adresses

donnes
e

UAL

Partie oprative
e

Fig. 14.1 Organisation globale de lensemble processeur/mmoire. UAL dsigne lunit


e
e
e
arithmtique et logique, PC le compteur de programme et RI le registre
e
instruction.

tions du langage machine (paragraphe 1.), nous prsentons un exemple


e
extrmement simple dont le jeu dinstruction est dcrit dans le parae
e
graphe 2. Nous donnons dans le paragraphe 3. une ralisation du proe
cesseur puis nous montrons comment lamliorer (paragraphe 4.). Enn,
e
nous tudions les consquences de quelques extensions du processeur (pae
e
ragraphe 5.).

1.

Les principes de ralisation


e

La gure 14.1 dcrit la structure de lensemble processeur/mmoire. Le proe


e
cesseur est compos dune partie contrle et dune partie oprative ; la premi`re
e
o
e
e
envoie des commandes ` la seconde qui, elle, met des comptes-rendus. La
a
e
mmoire nest ici relie qu` un processeur.
e
e
a
Les aspects prcis de communication entre le processeur et la mmoire sont
e
e
dtaills dans le chapitre 15. Les aspects de liaison avec le monde extrieur
e
e
e
pour raliser par exemple des entres/sorties sont tudis dans le chapitre 16.
e
e
e
e

1.1

Relations du processeur avec la mmoire


e

Le processeur est reli ` la mmoire par un bus adresses unidirectionnel et


ea
e
un bus donnes bidirectionnel.
e
Nous supposons ici que la lecture ou lcriture seectue en un temps
e
infrieur au temps de cycle dhorloge du processeur. Lacc`s ` la mmoire est
e
e a
e
alors pilot par deux commandes : slection de la mmoire SelMem et lecture
e
e
e
ou criture l/e. Ainsi, pour crire la valeur vvv dans la mmoire ` ladresse
e
e
e
a
xxx le processeur doit mettre SelMem ` 1 et l/e ` 0 en forant la valeur vvv
a
a
c
sur le bus donnes et la valeur xxx sur le bus adresses ; lcriture est eective
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Les principes de ralisation


e

361

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

au prochain front dhorloge du processeur. Pour lire la valeur contenue dans


la mmoire ` ladresse xxx le processeur doit positionner les commandes Sele
a
Mem et l/e en forant la valeur xxx sur le bus adresses ; le contenu du mot
c
mmoire est disponible sur le bus donnes ` partir du prochain front dhorloge
e
e a
du processeur.
Le droulement dun acc`s mmoire dans le cas o` la mmoire est plus lente
e
e e
u
e
a t dcrit au paragraphe 2.2 du chapitre 9 et les aspects de synchronisation
ee e
ont t dtaills au paragraphe 3.1 du chapitre 11.
ee e
e
La mmoire contient deux types dinformations : des instructions et des
e
donnes. Une instruction machine comporte elle-mme deux types dinformae
e
tions : le code de linstruction et la dsignation de(s) oprande(s) de linstruce
e
tion. Selon les instructions et le format de leur codage ces informations peuvent
tre lues en un seul acc`s ` la mmoire ou non. Lorsque plusieurs acc`s sont
e
e a
e
e
ncessaires, ils se droulent ncessairement lors de cycles dhorloge dirents et
e
e
e
e
conscutifs, le code de linstruction tant lu en premier. Un registre spcialis
e
e
e
e
appel compteur programme (PC) rep`re le mot mmoire en cours de traitee
e
e
ment. Il doit tre mis ` jour apr`s chaque acc`s ` une instruction en vue de
e
a
e
e a
lacc`s suivant.
e
On peut envisager un autre type dorganisation dans laquelle la mmoire
e
est organise en deux parties distinctes : une mmoire pour les instructions
e
e
et une mmoire pour les donnes. Ce type dorganisation ncessite deux bus
e
e
e
adresses et deux bus donnes dirents. Les principes gnraux restent tr`s
e
e
e e
e
proches ; nous nen parlerons plus dans la suite.

1.2

Principes gnraux de la partie oprative


e e
e

La partie oprative dun processeur doit tre capable deectuer toutes les
e
e
oprations et tous les transferts dinformation ncessaires ` lexcution des
e
e
a
e
instructions du langage machine.
Elle peut donc tre tr`s proche dune partie oprative type, dcrite au
e
e
e
e
chapitre 11. Une particularit ` signaler est lexistence dun registre particulier
ea
(appel registre instruction et not RI), non manipulable par les instructions
e
e
du langage machine et qui contient ` chaque instant linstruction en cours
a
dinterprtation. Le contenu de ce registre sert de compte-rendu pour la partie
e
contrle.
o
LUAL a deux types de sorties : une donne qui est le rsultat dun calcul
e
e
et les codes de conditions arithmtiques Zu, Nu, Cu, Vu. La donne circule
e
e
sur un bus et sera charge dans un registre ou un mot mmoire ; les codes
e
e
de conditions sont des informations de contrle qui peuvent tre testes par
o
e
e
la partie contrle : ce sont des entres de la partie contrle. Ces codes de
o
e
o
conditions peuvent aussi tre chargs dans 4 bits dun registre dtat.
e
e
e
Notons quune adresse peut tre une entre de lUAL lorsquun calcul est
e
e
ncessaire sur une adresse ; par exemple, pour traiter un mode dadressage ine
direct avec dplacement, il faut ajouter la valeur de ladresse et le dplacement.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

362

Le processeur : linterpr`te cbl du langage machine


e
a e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Les registres sont des lments de mmorisation internes au processeur.


ee
e
Certains sont connus du programmeur et manipulables explicitement : un
mnmonique leur est associ dans le langage dassemblage. Ces registres
e
e
peuvent contenir des donnes et/ou des adresses. Ils peuvent tre classs en
e
e
e
direntes catgories. Par exemple dans la famille des processeurs 68xxx, les
e
e
registres sont typs en registres de donnes et registres dadresses. Dans le
e
e
sparc, on trouve des registres globaux et des registres locaux, dentre et de
e
sortie, les trois derniers tant organiss en fentres de registres.
e
e
e
Dautres registres, comme le compteur programme (PC), le pointeur de
pile (SP), le mot dtat (SR) contenant les indicateurs Z, N, C, V, peuvent
e
tre manipuls au travers dinstructions spcialises. Par exemple, les instruce
e
e
e
tions de rupture de squence ont un eet sur la valeur du registre PC. Les
e
indicateurs Z, N, C, V du mot dtat contiennent les valeurs Zu, Nu, Cu, Vu
e
calcules par lUAL lors de la derni`re instruction qui a mis ` jour explicitee
e
a
ment ces indicateurs. Dans certains processeurs, comme le sparc par exemple,
le jeu dinstructions comporte les instructions arithmtiques sous deux formes :
e
Addcc et Add, addition avec ou sans mise ` jour des indicateurs.
a
Toute action sur un registre provoque un changement dtat de la partie
e
oprative. La partie oprative peut excuter un certain nombre dactions que
e
e
e
nous appellerons microactions (Cf. Paragraphe 3.1). Une microaction est un
ensemble de modications simultanes de ltat de la partie oprative.
e
e
e
Rappelons que la partie oprative peut tre vue comme un automate dont
e
e
ltat est lensemble des valeurs contenues dans les registres. Lexercice E14.4
e
montre ce point de vue.

1.3

Principes gnraux de la partie contrle


e e
o

La partie contrle doit envoyer les commandes adquates ` la partie


o
e
a
oprative, le processeur ralisant ainsi linterprtation du langage machine.
e
e
e
Le schma gnral est le suivant : charger le registre dinstructions (RI) avec
e
e e
linstruction courante (dont ladresse est dans PC), dcoder et excuter cette
e
e
instruction, puis prparer le compteur programme (PC) pour linstruction suie
vante.
La partie contrle dun processeur est ainsi la ralisation matrielle dun
o
e
e
algorithme itratif qui peut tre dcrit par une machine squentielle avec ace
e
e
e
tions. Les sorties sont un ensemble dordres envoys ` la partie oprative
e a
e
ou ` lextrieur et les entres sont des informations manant de la partie
a
e
e
e
oprative : valeur dun code opration, valeur dun code condition et indie
e
cateurs arithmtiques.
e
La machine squentielle qui dcrit lalgorithme de la partie contrle est
e
e
o
aussi appele automate (ou graphe) de contrle ou squenceur.
e
o
e
Dans la suite nous dveloppons un exemple simple pour lequel nous
e
dcrivons la partie contrle tout dabord de faon fonctionnelle par un algoe
o
c
rithme itratif en considrant les ressources (registres) du processeur comme
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Exemple : une machine ` 5 instructions


a

363

2.

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
icie
J.ard , F C.
lles
, P . M Fer
ara na et M
h.
Wa ni nde at
ri
e
z,
ille nch
elle
i,
s

des variables et la mmoire comme un tableau. Nous donnons ensuite une dese
cription sous forme de machine squentielle avec actions aux tats de laquelle
e
e
on associe des microactions : ce sont les oprations eectivement ralisables
e
e
par la partie oprative. Lobjectif est de montrer comment on peut concevoir
e
la partie oprative et la partie contrle dun processeur, tant donn le jeu
e
o
e
e
dinstructions retenu.

Exemple : une machine ` 5 instructions


a

Le processeur comporte un seul registre de donnes, directement visible par


e
le programmeur, appel ACC (pour accumulateur).
e
Les instructions sont dcrites ci-dessous. On donne pour chacune une
e
syntaxe de langage dassemblage et leet de linstruction.
mise ` zro du registre ACC
a e
chargement de la valeur immdiate vi dans ACC
e
chargement du mot mmoire dadresse ad avec le
e
contenu de ACC
jmp ad
saut ` ladresse ad
a
add [ad] chargement de ACC avec la somme du contenu de ACC et
du mot mmoire dadresse ad.
e
clr
ld #vi
st [ad]

Ce jeu dinstruction est extrmement rduit, lobjectif tant de disposer de


e
e
e
susamment dlments pour dtailler la conception du processeur mais de se
ee
e
limiter de faon ` garder une taille raisonnable ` cette description. Remarquons
c a
a
que lon pourrait rendre le jeu dinstructions plus symtrique en ajoutant une
e
instruction de chargement absolu : ld [ad].
La taille ncessaire au codage dune adresse ou dune donne est 1 mot.
e
e
Les instructions sont codes sur 1 ou 2 mots : le premier mot reprsente le
e
e
codage de lopration (clr, ld, st, jmp, add) ; le deuxi`me mot, sil existe,
e
e
contient une adresse ou bien une constante. Le codage des instructions est
donn gure 14.2-a. Voici un exemple de programme crit dans ce langage
e
e
dassemblage :
ld #3
st [8]
etiq: add [8]
jmp etiq

En supposant le programme charg ` partir de ladresse 0, les adresses tant


ea
e
des adresses de mots, ladresse associe au symbole etiq est 4. En supposant
e
que la taille dun mot est de 4 bits, la gure 14.2-b donne la reprsentation en
e
mmoire du programme prcdent apr`s assemblage et chargement en mmoire
e
e e
e
e
a
` partir de ladresse 0 (Cf. Chapitre 18 pour plus de dtails).
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

364

Le processeur : linterpr`te cbl du langage machine


e
a e

mmoire
e
0010
0011
0011
1000
0101
1000
0100
0100

code de lopration ld
e
valeur immdiate 3
e
code de lopration st
e
adresse 8
code de lopration add
e
adresse 8
code de lopration jmp
e
adresse 4

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

0000

clr
ld #vi
st [ad]
jmp ad
add [ad]

1
2
3
4
5

vi
ad
ad
ad

0100

0111

(a)

(b)

Fig. 14.2 (a) Codage des instructions ; (b) reprsentation en mmoire dun programme
e
e
en langage machine

Remarque : En xant la taille dun mot nous avons g la taille maxie


male de la mmoire puisquune adresse est code sur un mot. La mmoire du
e
e
e
processeur a ainsi une taille maximale de 16 mots.

Dans cet exemple, lexcution du programme commence par linterprtation


e
e
de la premi`re instruction, dont le code est en mmoire ` ladresse 0. Ce code
e
e
a
tant celui de linstruction ld, linterpr`te lit une information supplmentaire
e
e
e
dans le mot dadresse 1. Cette valeur est alors charge dans le registre ACC.
e
Finalement, le compteur programme (PC) est modi de faon ` traiter linse
c a
truction suivante.
Nous adoptons un point de vue fonctionnel, en considrant les ressources du
e
processeur comme les variables dun programme. Lalgorithme dinterprtation
e
des instructions est donn gure 14.3.
e
Nous montrons dans la suite comment raliser cet algorithme par un circuit.
e
Nous allons ainsi dnir la partie oprative puis la partie contrle qui la pilote.
e
e
o

3.

Une ralisation du processeur


e

Pour chaque instruction du langage machine, nous commenons par nous


c
poser les questions : de quel matriel avons-nous besoin ?, comment organiser
e
le ot des donnes pour cette instruction ? Nous retrouvons l` des questions
e
a
tr`s proches de celles rsolues dans le chapitre 11. Les rponses ` ces quese
e
e
a
tions permettent de dnir la partie oprative. Puis nous tudions la faon
e
e
e
c

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Une ralisation du processeur


e

365

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

lexique :
entier4 : le type entiers reprsents sur 4 bits
e
e
{ les oprations arithmtiques sont donc modulo 16 }
e
e
PC, Acc : des entier4
tailleMem : lentier 16
Mem : un tableau sur [0..tailleMem-1] dentier4
algorithme dinterprtation des instructions :
e
PC 0
tant que vrai
selon Mem[PC]
clr : Acc 0 ; PC PC + 1
ld : Acc Mem[PC + 1] ; PC PC + 2
st : Mem[Mem[PC + 1]] Acc ; PC PC + 2
jmp : PC Mem[PC + 1]
add : Acc Acc + Mem[Mem[PC + 1 ]] ; PC PC + 2
Fig. 14.3 Algorithme dinterprtation du langage machine
e

de raliser les direntes tapes constituant lexcution dune instruction du


e
e
e
e
langage machine ; nous dnissons ainsi la partie contrle.
e
o
Lamlioration dune ralisation matrielle sexprime en termes de place
e
e
e
occupe par le circuit et de temps de calcul. Nous donnons ` la n de ce parae
a
graphe quelques lments permettant damliorer le schma obtenu selon ces
ee
e
e
crit`res et nous envisageons les consquences dune extension du jeu dinstruce
e
tions.

3.1

Dnition de la partie oprative


e
e

A partir du jeu dinstructions, on dnit le ux des donnes ncessaire,


e
e
e
les oprations que doit raliser lUAL, celles aectant le contenu des registres
e
e
et les oprations concernant la mmoire. Cette tude permet petit ` petit de
e
e
e
a
construire la partie oprative et de prciser les oprations lmentaires quelle
e
e
e
ee
peut raliser : les microactions.
e
Nous notons : A ; B le fait que le contenu de A doit pouvoir tre
e
transfr en B sans distinguer les cas o` A ou B sont des bus ou des registres ;
ee
u
A = B op C une microaction qui permet de stocker dans A le rsultat de
e
lopration op ralise sur les oprandes B et C.
e
e e
e
On arrive ainsi ` la partie oprative dcrite par la gure 14.4, la table 14.5
a
e
e
rsumant lensemble des microactions ainsi que les transferts mis en jeu et les
e
commandes associes pour la partie oprative.
e
e
Nous avons indiqu que le processeur est reli ` la mmoire par le bus
e
e a
e
adresses (BusAd) et le bus donnes (BusDon). On dispose des transferts : Buse
Don ; Mem[BusAd] (criture mmoire) et Mem[BusAd] ; BusDon (lecture
e
e
mmoire).
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

366

Le processeur : linterpr`te cbl du langage machine


e
a e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Tout dabord, il faut assurer le transfert de linstruction courante (repre


ee
par PC) de la mmoire vers le registre instruction (RI) de la partie oprative.
e
e
Dans notre exemple, une instruction est forme du code de lopration `
e
e
a
raliser, plus ventuellement une valeur ou une adresse. Le code opration, les
e
e
e
valeurs et les adresses sont tous cods sur 1 mot. Nous choisissons de dcouper
e
e
le registre RI en deux registres RI1 et RI2, le premier contenant le code opration
e
et le second linformation additionnelle (valeur immdiate ou adresse). Do`
e
u
les transferts PC ; BusAd, BusDon ; RI1 (respectivement BusDon ; RI2),
coupls avec lopration de lecture de la mmoire. Le rsum des microactions
e
e
e
e
e
associes se trouve dans les lignes 1 et 2 de la table 14.5.
e
Pour linstruction clr, il faut pouvoir forcer la valeur 0 dans le registre
ACC : cette opration peut tre ralise par une commande de remise ` zro
e
e
e e
a e
du registre (ligne 3 de la table 14.5).
Linstruction ld #vi ncessite un transfert de la valeur immdiate vi dans
e
e
laccumulateur. La valeur vi est stocke dans le registre RI2 ; do` le transfert
e
u
RI2 ; ACC (ligne 4 de la table 14.5).
Linstruction st [ad] ncessite un transfert de la valeur de ACC vers la
e
mmoire ; ce transfert a comme intermdiaire le bus donnes. Le transfert a
e
e
e
lieu ` ladresse qui a t stocke dans RI2. Do` : RI2 ; BusAd et ACC ;
a
ee
e
u
BusDon, transferts coupls avec lopration dcriture mmoire (ligne 5 de la
e
e
e
e
table 14.5).
Linstruction jmp ad ncessite un transfert de la valeur ad dans le registre
e
PC. Linformation ad tant dans RI2 : RI2 ; PC (ligne 6 de la table 14.5).
e
Linstruction add [ad] ncessite un transfert des valeurs de ACC et du mot
e
mmoire dadresse ad (stocke dans RI2) vers les deux entres de lUAL, et un
e
e
e
transfert de la sortie de lUAL vers laccumulateur. La valeur provenant de la
mmoire passe par le bus donnes do` : ACC ; UAL, RI2 ; BusAd, BusDon ;
e
e
u
UAL, UAL ; ACC et lopration de lecture mmoire. Evidemment lUAL doit
e
e
disposer dune commande daddition de deux valeurs (ligne 7 de la table 14.5).
De plus, pour assurer le passage au mot suivant, il faut pouvoir incrmenter
e
le compteur de programme, do` : PC ; UAL et UAL ; PC, lUAL dispou
sant dune commande dincrmentation dune de ses entres (ligne 8 de la
e
e
table 14.5).
Enn il faut pouvoir initialiser le compteur de programme avec ladresse de
la premi`re instruction (0 dans notre exemple) : do` une commande de remise
e
u
a e
` zro du registre PC (ligne 9 de la table 14.5).

3.2

Description de lautomate de contrle


o

Lexcution dune microaction est provoque par lactivation des come


e
mandes correspondantes et cest ` la partie contrle que revient le rle dactiver
a
o
o
ces commandes au bon moment.
Lautomate de contrle du processeur est donn dans la gure 14.6. Les
o
e
entres de cet automate sont des informations en provenance de la partie
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Une ralisation du processeur


e

367

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

vers la partie contrle


o
chRI2

RI2

0 1

RI1

SelAccPC

chRI1

ACC

resetAcc
chACC

sAccUAL

PC

resetPC
chPC
ADD/INCR
sPCUAL
UAL

sAccDon

Mem

BusDon

sRI2Ad

Mem

sPCAd

BusAd

Zu, Nu, Cu, Vu

Fig. 14.4 Une partie oprative possible pour le processeur


e

microactions
RI1 = Mem[PC]

RI2 = Mem[PC]

transferts utiliss
e
PC ; BusAd
Mem[BusAd] ; BusDon
BusDon ; RI1
PC ; BusAd
Mem[BusAd] ; BusDon
BusDon ; RI2

commandes pour la P.O.


sPCAd, SelMem, l/e
chRI1
sPCAd, SelMem, l/e
chRI2

Acc = 0

Acc = RI2
Mem[RI2] = Acc

RI2 ; Acc
RI2 ; BusAd
Acc ; BusDon
BusDon ; Mem[BusAd]

SelAccPC, chAcc
sRI2Ad, sAccDon,
SelMem, l/e

RI2 ; PC
Acc ; UAL(1)
RI2 ; BusAd
Mem[BusAd] ; BusDon
BusDon ; UAL(2)
UAL ; Acc

SelAccPC, chPC

PC = RI2
Acc =
Acc + Mem[RI2]

PC = PC + 1

PC ; UAL(1)
UAL ; PC

PC = 0

sPCUAL, add/incr,
SelAccPC, chPC
resetPC

5
6

resetAcc

sAccUAL, sRI2Ad,
SelMem, l/e,
add/incr, SelAccPC
chAcc

Fig. 14.5 Commandes et transferts associs aux microactions. Les notations UAL(1)
e
et UAL(2) dsignent lentre 1 et lentre 2 de lUAL.
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

368

Le processeur : linterpr`te cbl du langage machine


e
a e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

oprative : conditions portant sur le code opration courant cest-`-dire le


e
e
a
contenu du registre RI1.
Une premi`re version consisterait ` eectuer le test de chacun des codes
e
a
conditions. Apr`s avoir lu le code de linstruction, nous obtiendrions un choix `
e
a
5 cas (clr, ld, st, jmp et add). En remarquant que 4 instructions demandent la
lecture du mot suivant (Etats E2, E4) nous pouvons regrouper les traitements.
Cest ainsi que nous organisons demble les tests en 2 cas : instruction clr ou
e
non.
Lautomate dcrit dans la gure 14.6 est la traduction de lalgorithme du
e
paragraphe 2. en paramtrant certains traitements. On note que pour toute
e
instruction sauf jmp le compteur de programme doit tre incrment (Etat E9)
e
e
e
an que la partie contrle puisse passer ` linstruction suivante ; dans le cas
o
a
de linstruction jmp, le compteur de programme est charg avec ladresse de la
e
cible du branchement (Etat E6).

3.3

Ralisation matrielle de la partie contrle


e
e
o

Maintenant que lautomate de contrle a t dcrit en terme des mio


ee e
croactions et des valeurs du code opration courant, nous allons dtailler sa
e
e
ralisation matrielle.
e
e
Les entres de lautomate sont des informations en provenance de la pare
tie oprative, cest-`-dire les 4 bits du registre RI1 ; notons ri3 , ri2 , ri1 , ri0 le
e
a
contenu de RI1, ri0 tant le bit de poids faible. La transition de ltat E1 vers
e
e
ltat E3 est conditionne par : ri3 .ri2 .ri1 .ri0 car le code de linstruction clr est
e
e
0001. Pour un jeu dinstructions plus complet, les entres de la partie contrle
e
o
peuvent tre plus nombreuses.
e
Les sorties de lautomate sont les commandes de la partie oprative. On
e
peut les reprsenter par une valuation du vecteur boolen : (SelMem, l/e,
e
e
resetPC, resetAcc, chRI1, chRI2, chAcc, chPC, add/incr, SelAccPC, sAccUAL,
sPCUAL, sAccDon, sRI2Ad, sPCAd). A ltat E1 est associ le vecteur de sore
e
tie : (1, 1, 0, 0, 1, 0, 0, 0, , , , , , 0, 1).
Lexercice E14.5 propose de raliser la synth`se compl`te de cet automate.
e
e
e
Cet automate est cadenc par une horloge dont la priode correspond au
e
e
temps ncessaire ` lexcution de la microaction la plus longue ; ce temps
e
a
e
est appel temps de cycle. Quand on lit quun processeur a une horloge `
e
a
500 Megahertz, on peut penser que le coeur du processeur a un temps de
cycle de 2 nanosecondes. Dans lexemple, la microaction la plus longue est
Acc = Acc + Mem[RI2], qui comporte une addition et un acc`s mmoire
e
e
alors que les autres microactions ne comportent que lun des deux.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Une ralisation du processeur


e

369

E0

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

PC = 0
E1

RI1 = Mem[PC]

RI1=clr

RI1 = clr

E2

PC = PC + 1
E4

E3
ACC = 0

RI2 = Mem[PC]

RI1=ld

RI1=jmp

E6

E5
ACC = RI2

PC = RI2

RI1=st

E7

RI1=add

Mem[RI2] = ACC
E8

E9

ACC = ACC + Mem[RI2]

PC = PC + 1

Fig. 14.6 Un premier automate de contrle pour le processeur


o
E1

PC = 0

E2

RI1 = Mem[PC]

PC = PC + 1

RI1=clr

RI1 = clr

RI2 = Mem[PC]

PC = PC + 1

E3

RI1=ld

ACC = 0

RI1=jmp

E6

E5

ACC = RI2

RI1=st

PC = RI2

RI1=add

E7

Mem[RI2] = ACC

E8

ACC = ACC + Mem[RI2]

Fig. 14.7 Un autre automate de contrle pour le processeur


o

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

E4

370

Critique et amlioration de la solution


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

4.

Le processeur : linterpr`te cbl du langage machine


e
a e

Apr`s avoir produit une solution, il est judicieux de se demander si elle peut
e
tre amliore. Il faut alors savoir selon quels crit`res physiques : frquence de
e
e e
e
e
fonctionnement, surface du circuit, puissance lectrique dissipe, etc.
e
e
En gnral, on essaie de rendre le processeur le plus rapide possible en
e e
diminuant le temps dexcution des instructions machine. Le temps dexcution
e
e
dune instruction donne est gal ` N C o` N est le nombre dtats ncessaires
e
e a
u
e
e
a
` lexcution de linstruction et C est le temps de cycle. On peut donc diminuer
e
soit le temps de cycle, soit le nombre dtats ncessaires ` lexcution dune
e
e
a
e
instruction. Dans notre exemple, lexcution de linstruction add, par exemple,
e
prend 5 cycles dhorloge.
On peut aussi chercher ` conomiser le matriel : utiliser le moins possible
ae
e
de registres ou de bus dans la partie oprative.
e
Une bonne ralisation est souvent le rsultat dun compromis entre tous
e
e
ces aspects. Nous donnons ici quelques ides damliorations sur lexemple
e
e
prcdent.
e e

4.1

Dcomposition des microactions


e

Pour diminuer le temps de cycle, on peut viter de grouper un acc`s


e
e
a
` la mmoire et une opration UAL dans la mme microaction. Dans notre
e
e
e
exemple, on pourrait imaginer un registre tampon T connect au bus donnes
e
e
et ` lentre de lUAL. Ltat E8 pourrait alors tre divis en 2 tapes corresa
e
e
e
e
e
pondant aux microactions T = Mem[RI2] et ACC = ACC + T. Le temps
de cycle correspondrait alors au temps dacc`s ` la mmoire. Cela ne fait pas
e a
e
gagner de temps pour lexcution de linstruction daddition mais les autres
e
instructions sont, elles, excutes plus rapidement.
e e
On peut, par ailleurs, se demander si le registre RI2 est bien ncessaire,
e
cest-`-dire se poser la question : peut-on faire transiter directement la valeur
a
ou ladresse associe ` un code opration vers le point o` elle est ncessaire ?
e a
e
u
e
Dans le cas de linstruction ld (respectivement jmp) la microaction Acc
= Mem[PC] (respectivement PC = Mem[PC]) convient. Pour cela, il faut
connecter le bus donnes directement aux multiplexeurs dentre de chacun
e
e
des registres Acc et PC, ce qui est parfaitement possible. En revanche, dans
le cas des instructions st et add, il est indispensable de disposer dun registre
intermdiaire pour stocker ladresse qui est utilise pour lacc`s mmoire, en
e
e
e
e
criture pour st et en lecture pour add. Cette modication permettrait donc
e
de gagner un tat lors de lexcution des instructions ld et jmp et seulement
e
e
dans ces deux cas.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Critique et amlioration de la solution


e

Paralllisation de microactions
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

4.2

371

Une autre faon damliorer lecacit du processeur consiste ` eectuer en


c
e
e
a
parall`le certains traitements, quitte ` ajouter des oprateurs de base ou des
e
a
e
registres dans la partie oprative. Par exemple, pour la machine prcdente
e
e e
il est possible de charger un mot de la mmoire dans RI1 et dincrmenter
e
e
en parall`le PC an quil soit prt pour la lecture suivante, les microactions
e
e
RI1 = Mem[PC] et PC = PC + 1 nutilisant pas le mme matriel. Etant
e
e
donnes deux microactions A1 et A2, A1 A2 dnote leur activation en pae
e
rall`le, cest-`-dire lactivation de lensemble des commandes associes ` lune
e
a
e a
et ` lautre dans le mme cycle dhorloge.
a
e
La gure 14.7 dcrit un nouvel automate de contrle pour le processeur.
e
o
Lincrmentation du compteur de programme est excute parall`lement ` la
e
e e
e
a
lecture dun mot mmoire puisque le matriel (la partie oprative) le pere
e
e
met. Cela ne pose pas de probl`me pour le traitement de linstruction jmp car
e
la valeur ainsi stocke dans le registre PC est crase par ladresse adquate
e
e
e
e
ultrieurement. Le temps dexcution de linstruction add est maintenant de 3
e
e
cycles dhorloge. De faon gnrale, le temps dexcution de toutes les instrucc
e e
e
tions machine a diminu car le nombre dtats traverss est plus petit.
e
e
e
Ce genre doptimisation doit tre fait avec prcaution. Supposons que la
e
e
mmoire associe au processeur soit lente, quun acc`s mmoire dure plus dun
e
e
e e
cycle dhorloge ; la mmoire met alors un signal n-acc`s lorsque la donne lue
e
e
e
e
est disponible sur le bus donnes. La microaction de lecture RI1 = Mem[PC]
e
e
est alors ralise dans un tat comportant une boucle sur le signal n-acc`s et
e e
e
le contrleur passe ` ltat suivant sur lentre n-acc`s. La mise en parall`le
o
a e
e
e
e
de cette microaction avec PC = PC + 1 peut tre incorrecte ; le compteur
e
programme peut avoir t incrment avant que la lecture ne soit ralise et
ee
e
e
e e
Mem[PC] peut alors correspondre ` un mot suivant celui auquel on devait
a
accder.
e

4.3

Paramtrisation des commandes


e

Une autre amlioration consiste ` essayer de minimiser le nombre dtats de


e
a
e
la partie contrle. Ceci rend la ralisation de la partie contrle plus compacte
o
e
o
et peut aussi amliorer lecacit du processeur.
e
e
La paramtrisation consiste ` ajouter une partie de matriel ` la fronti`re
e
a
e
a
e
de la partie contrle et de la partie oprative, ce qui permet de regrouper des
o
e
traitements dans la partie contrle.
o
Par exemple, dans la partie contrle de la gure 14.7, les tats E5 et E6 se
o
e
ressemblent beaucoup. Nous pouvons les rassembler en un seul tat comportant
e
la microaction ACCouPC = RI2 dont la commande associe est chACCouPC.
e
Il sut alors dajouter entre la partie contrle et la partie oprative le circuit
o
e
combinatoire donn dans la gure 14.8. Lorsque la partie contrle active la
e
o
commande chACCouPC la commande de chargement du registre adquat est
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

372

Le processeur : linterpr`te cbl du langage machine


e
a e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Etat 8
ri3.ri2.ri1.ri0

chACC

chACCouPC

chPC

ri3.ri2.ri1.ri0

Etat 2 ou Etat 4

Fig. 14.8 Production des commandes chACC et chPC selon la commande chACCouPC,
le code opration et ltat de lautomate de contrle. chACCouPC est mise
e
e
o
e
par la partie contrle, chACC et chPC sont reues par la partie oprative.
o
c
e
chACC est active lorsque lautomate de contrle est dans ltat 8 ou lorsque
e
o
e
chACCouPC est vraie alors que linstruction courante est ld (code par 2 en
e
dcimal). chPC est active lorsque lautomate de contrle est dans un des
e
e
o
tats 2 ou 4 ou lorsque chACCouPC est vraie alors que linstruction courante
e
est jmp (code 4 en dcimal).
e
e

active selon la valeur du code opration, contenue dans RI1.


e
e
Lexemple prcdent est simpliste. En ralit, il existe nombre de cas o` la
e e
e e
u
paramtrisation fait gagner un grand nombre dtats. Nous en montrons une
e
e
utilisation dans le paragraphe suivant.
Le matriel ajout peut constituer une partie importante du processeur ;
e
e
par exemple, dans un 68000, la partie contrle, la partie oprative et la paro
e
tie servant ` la paramtrisation constituent chacune de lordre dun tiers du
a
e
matriel.
e

5.

Extensions du processeur

Dans ce paragraphe, nous tudions des extensions de deux types pour le


e
processeur : augmentation du nombre de registres utilisables par le programmeur et extension du jeu dinstructions.

5.1

Augmentation du nombre de registres utilisateur

Imaginons que notre processeur ait 16 registres de donnes ACC0, ACC1, ...,
e
ACC15 au lieu dun seul accumulateur.
Les instructions clr, ld, st et add ont alors un param`tre supplmentaire.
e
e
Linstruction jmp reste inchange. La syntaxe de ces instructions peut tre :
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Extensions du processeur

st ou add
ad
numro de registre
e

clr
numro de registre
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

ld
vi
numro de registre
e

373

Fig. 14.9 Codage des instructions pour une extension de la machine

clr ACCi
ld #vi, ACCi
st ACCi, [ad]
add [ad], ACCi

mise ` zro du registre ACCi


a e
chargement de la valeur vi dans le registre ACCi
stockage du contenu de ACCi ` ladresse ad en mmoire
a
e
stockage de la somme du contenu de la mmoire
e
dadresse ad et du contenu de ACCi dans ACCi.

Le codage des instructions ld, st et add demande 3 mots (toujours de 4


bits) : un pour le code opration, un pour la valeur immdiate ou ladresse
e
e
et un troisi`me pour le numro du registre. Le codage de linstruction clr en
e
e
demande 2 (Cf. Figure 14.9).
La gure 14.10 dcrit une nouvelle partie oprative pour le processeur
e
e
tendu. On y trouve videmment les 16 registres ACCi, i = 0, .., 15, un ree
e
gistre supplmentaire RI3 qui permet de stocker le numro du registre lu en
e
e
mmoire lors du traitement dune instruction clr, ld, st ou add. Les bits de
e
ce registre sont de nouvelles entres pour la partie contrle.
e
o
Cette partie oprative comporte deux parties de calcul : une sur les donnes
e
e
et une sur les adresses. On pourrait utiliser lunit de calcul sur les adresses
e
pour grer, par exemple, la mise ` jour dun pointeur de pile.
e
a
Sans utiliser de technique de paramtrisation, la partie contrle compore
o
terait un tat par registre pour chacune des instructions clr, ld, st et add.
e
Par exemple, pour linstruction clr, on aurait les microactions : ACC0 = 0,
ACC1 = 0, . . ., ACC15 = 0. Lautomate a alors beaucoup dtats et le cire
cuit ` synthtiser est complexe et volumineux.
a
e
Lors de lexcution des instructions clr, ld, st et add, le registre RI3
e
contient la valeur i, numro du registre ACCi concern. Les 16 tats correspone
e
e
dant ` la mise ` zro des 16 registres peuvent tre remplacs par un seul tat
a
a e
e
e
e
comportant la microaction ACCRI3 = 0 qui signie : le registre ACC dont le
numro est la valeur contenue dans RI3 est remis ` zro. De mme, les 16 tats
e
a e
e
e
correspondant au chargement des 16 registres peuvent tre remplacs par un
e
e
tat avec la microaction : ACCRI3 = RI2. Pour linstruction st, on va dnir
e
e
la microaction : Mem[RI2] = ACCRI3 et pour linstruction add la microaction : ACCRI3 = ACCRI3 + Mem[RI2]. La table de la gure 14.11 donne les
commandes associes ` chacune de ces nouvelles microactions.
e a
Il faut ajouter le matriel ncessaire pour laborer les commandes
e
e
e
resetACC0, . . ., resetACC15, chACC0, . . ., chACC15, sACCDon0, . . .sACCDon15,
sACC0A, . . ., sACC15A ` partir des commandes resetACC, chACC, sACCDon,
a
sACCA et du contenu de RI3. La gure 14.12 dcrit ces circuits raliss avec
e
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Le processeur : linterpr`te cbl du langage machine


e
a e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

374

BusA

Mem

sACC0Don

UAL

ACC15

ACC1

ACC0

sACC0A

BusDon

BusB

sRI2B

R
I
1

R
I
3

vers la partie contrle


o

1
0

R
I
2

P
C

sRI2Ad

BusAd

CALC

sPCAd
Mem

Fig. 14.10 Partie oprative complte pour le processeur tendu


e
ee
e

microaction
ACCRI3 = 0
ACCRI3 = RI2
Mem[RI2] = ACCRI3
ACCRI3 = ACCRI3 + Mem[RI2]

commandes
resetACC
sRI2B, chACC
sACCDon, sRI2Ad, SelMem, Ecr
sACCA, sRI2Ad, SelMem, Lec, chACC

Fig. 14.11 Commandes associes aux nouvelles microactions


e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Extensions du processeur

375

RI3

RI3

chACC0
chACC1

chACC

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

resetACC0
resetACC1

resetACC

chACC15

resetACC15

RI3

sACCDon

RI3

sACC0Don
sACC1Don

sACCA

sACC15Don

sACC0A
sACC1A
sACC15A

Fig. 14.12 Ralisation de commandes paramtres


e
e e

un dcodeur.
e
La description de la partie contrle paramtre est ainsi la mme que pour
o
e e
e
un seul registre ACC.

5.2

Extension du jeu dinstructions

Des extensions simples comme lajout doprations (soustraction, conjonce


tion logique, incrmentation dun registre) sont aisment ralises en complie
e
e e
quant lUAL. La commande de lUAL peut alors tre ralise directement `
e
e e
a
partir dun sous-ensemble du registre instruction. Il faut toutefois faire attention aux tats o` lUAL est utilise pour des calculs ` usage interne, comme
e
u
e
a
par exemple : PC = PC + 1.
Supposons que nous voulions maintenant ajouter des branchements conditionnels. Par exemple, on ajoute linstruction brn ad dont leet est : si
le rsultat de lopration prcdente est ngatif alors eectuer un branchee
e
e e
e
ment ` ladresse ad sinon passer ` linstruction suivante. Ce genre dinstruca
a
tion utilise les codes de conditions calculs par lUAL lors de lexcution des
e
e
oprations ; ici, il sagit de lindicateur de rsultat ngatif (N) que lon peut
e
e
e
supposer charg lors de toute instruction arithmtique. En revanche, le bit N
e
e
nest pas charg lors dun calcul de type PC = PC + 1.
e
LUAL est complte avec un registre ` 1 bit. Ce bit est souvent stock dans
ee
a
e
le registre dtat. Le contenu de ce registre est accessible en permanence par
e
la partie contrle. La gure 14.13 dcrit la portion de partie contrle traitant
o
e
o
linstruction brn.
Les exercices E14.1, E14.2 et E14.3 sugg`rent des modications plus
e
compl`tes pour le processeur tudi ci-dessus.
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

376

Le processeur : linterpr`te cbl du langage machine


e
a e

RI2 = Mem[PC]

RI1=brn
et N

UAL

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

RI1 = clr
PC = PC + 1
RI1=brn
et N

Nu

Registre Etat

PC = RI2
*

vers partie controle

Fig. 14.13 Extrait de la partie contrle pour le traitement de linstruction brn. Les
o
`ches notes * ont pour cible lacquisition de linstruction suivante, ceste
e
`-dire ltat E2 de la gure 14.7.
a
e

6.

Exercices

E14.1 : Branchement conditionnel gnral


e e
On veut ajouter au langage machine du processeur tudi dans ce chapitre une
e
e
instruction BRcc o` cc reprsente lun des codes de conditions classiques de
u
e
tout processeur. Etudier les consquences de cette modication sur la partie
e
oprative et la partie contrle du processeur. On peut considrer un codage
e
o
e
des direntes conditions cc sur 4 bits b1, b2, b3, b4 (ou prendre le codage
e
dun processeur existant). Raliser, en particulier, le circuit combinatoire qui
e
reoit en entre les bits b1, b2, b3, b4 du code opration et les 4 bits Z, N,
c
e
e
C, V et dlivre un bit Br disant si la condition donne eectivement lieu `
e
a
un branchement ou non. Le bit Br est exploit par la partie contrle pour
e
o
tablir la nouvelle valeur du compteur programme. Cest encore une forme de
e
paramtrisation, sur les comptes-rendus plutt que sur les commandes.
e
o
E14.2 : Mode dadressage relatif
Dans le langage machine du processeur tudi dans le prsent chapitre, les
e
e
e
branchements sont absolus, ladresse cible du branchement est donne dans
e
linstruction. On veut maintenant introduire des branchement relatifs, cest-`a
dire pour lesquels ladresse cible du branchement est gale ` la somme de PC
e
a
et dune valeur constante donne dans linstruction. On peut modier la partie
e
oprative de la gure 14.10 et remplacer le circuit CALC par un additionneur
e
ou bien utiliser lUAL pour raliser laddition. Etudier les modications de la
e
partie oprative et dcrire la partie contrle du processeur.
e
e
o
E14.3 : Appel de sous-programme
Ajouter dans le langage machine des instructions dappel et de retour de sousprogramme (ajouter les laisons entre PC et le bus donnes, ajouter un pointeur
e
de pile). Une instruction dappel de sous-programme demande la sauvegarde

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

6. Exercices

377

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

< RI1, RI2, Acc, PC > : tat de la partie oprative


e
e
< nouvelRI1, nouvelRI2, nouvelAcc, nouveauPC > :
nouvel tat de la partie oprative
e
e
sortieUAL, BusDon, BusAd : variables intermdiaires
e
{ Une partie de la fonction de transition de la partie oprative }
e
nouvelRI1 = si chRI1 alors BusDon sinon RI1
nouvelRI2 = si chRI2 alors BusDon sinon RI2
nouvelAcc = si resetAcc alors 0
sinon si chACC alors
si selAccPC alors sortieUAL sinon RI2
sinon Acc
BusDon = si sAccDon alors Acc
sinon si Lire alors Mem[BusAd] sinon non dni
e
Fig. 14.14 Description symbolique dune fonction de transition

de ladresse de retour (Cf. Paragraphe 1.4.3 du chapitre 12). Un processeur


intgrant entre autres cette possibilit est dcrit dans le chapitre 22.
e
e
e
E14.4 : Partie oprative vue comme un automate
e
Nous avons signal au paragraphe 1.2 que la partie oprative peut tre vue
e
e
e
comme un automate. Lobjectif de cet exercice est de prciser la dnition de
e
e
cet automate. Une telle approche pourrait tre utilise dans un langage de
e
e
description de matriel.
e
La partie oprative du processeur (Cf. Paragraphe 3.1) est un automate `
e
a
15 ls dentre : chRI1, chRI2, SelAccPC, resetAcc, chACC, sAccUAL, sAccDon,
e
resetPC, chPC, sPCUAL, sRI2Ad, sPCAd, ADD/INCR, Lire. La commande Lire
correspond ` la conjonction : l/e et SelMem. La commande l/e et SelMem
a
(Ecrire) ne modie pas ltat du processeur, mais seulement celui de la mmoire.
e
e
Elle nest pas une entre de la partie oprative.
e
e
15 ls dentres donnent 215 entres possibles. On ne peut donc pas dcrire
e
e
e
les transitions selon toutes les valeurs des entres. On crira : si chRI1 alors ...
e
e
14
pour parler en fait des 2 entres pour lesquelles chRI1 vaut 1.
e
Dnissons maintenant lensemble des tats de lautomate. Il y a 4 registres
e
e
de 4 bits : RI1, RI2, Acc et PC. Ces 16 bits dnissent 216 tats. On va dcrire le
e
e
e
nouvel tat en fonction de lancien de faon symbolique, en utilisant un algoe
c
rithme. On peut en eet donner une description fonctionnelle de la fonction de
transition a laide dexpressions conditionnelles dnissant la valeur de chaque
`
e
registre selon sa valeur prcdente et les entres courantes. On introduit des
e e
e
variables intermdiaires pour faciliter lcriture (Cf. Figure 14.14).
e
e
Poursuivre la description fonctionnelle de cette partie oprative.
e
E14.5 : Synth`se dune partie contrle
e
o
Lobjectif de cet exercice est la synth`se de la partie contrle du processeur
e
o

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

378

Le processeur : linterpr`te cbl du langage machine


e
a e

inst
e0
0
1
1
0
1
0
0
0

entres (RInst)
e
ri3 ri2 ri1 ri0
x
x
x
x
0
0
0
1
=0 0
0
1
x
x
x
x
x
x
x
x
0
0
1
0
0
0
1
1
0
1
0
0

nouvel tat
e
ne2 ne1 ne0
0
0
1
0
1
1
0
1
0
1
0
0
0
0
1
1
0
1
1
1
1
1
1
0

ne3
0
0
0
0
1
0
0
0

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

e3
0
0
0
0
0
0
0
0

tat
e
e2 e1
0 0
0 0
0 0
0 1
0 1
1 0
1 0
1 0

clr
autre

ld
st
jmp

Fig. 14.15 fonction de transition

e3
0
0
1

tat
e
e2 e1
0 0
0 1
0 0

chRI1

e0
1
0
0

SelAccPC

chAcc

ADD/INCR

...

1
0
0

0
1

0
0
1

0(incr)
1(add)

...
...
...

Fig. 14.16 fonction de sortie

donne dans la gure 14.6 selon la technique tudie au chapitre 10. Lautomate
e
e
e
a 10 tats que lon peut coder sur 4 bits e3 , e2 , e1 , e0 ; ltat Ei est reprsent
e
e
e
e
par le codage binaire de lentier i.
La table de la gure 14.15 donne une partie de la fonction de transition.
Terminer cette table et raliser la synth`se de cette fonction combinatoire avec
e
e
des portes, ou un PLA (Cf. Chapitre 8). Remarquer au passage que lautomate de contrle rv`le une sous-spcication : rien nest prvu si le code de
o e e
e
e
linstruction dans RI1 nest pas un code valide. En fait, dans le cas de code
invalide, lors du dcodage de linstruction une interruption est gnre par le
e
e ee
processeur (Cf. Chapitre 22).
La partie contrle a 16 ls de sorties : SelMem, l/e, resetPC, resetAcc, chRI1,
o
chRI2, chAcc, chPC, add/incr, SelAccPC, sAccUAL, sPCUAL, sAccDon, sRI2Ad,
sPCAd (Cf. Paragraphe 3.2). La partie contrle tant dcrite par un automate
o e
e
de Moore, les sorties dpendent uniquement de ltat. Nous donnons dans la
e
e
gure 14.16 une partie de la fonction de sortie de lautomate. Complter cette
e
table et synthtiser la fonction combinatoire avec des portes ou un PLA.
e
En utilisant des bascules D pour reprsenter ltat de lautomate, dessiner
e
e
le circuit synthtisant la partie contrle toute enti`re.
e
o
e
E14.6 : Interpr`te dun langage machine type sparc
e
Ce probl`me a pour but de dcrire linterpr`te du langage machine dun proe
e
e
cesseur imaginaire inspir du processeur sparc.
e
Les adresses et les donnes sont sur 32 bits. Le processeur comporte 31
e
registres (nots R1, . . ., R31) de 32 bits chacun et un registre spcial not R0
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

6. Exercices

379

assembleur
ADD S1, S2, Rd
SUB S1, S2, Rd
SUBR S1, S2, Rd
AND S1, S2, Rd
OR S1, S2, Rd
XOR S1, S2, Rd
LOAD Rx, S2, Rd
STORE Rx, S2, Rs
JMP COND, S2, Rx
JMPR COND, Y
LDHI Rd, Y

smantique
e
Rd S1 + S2
Rd S1 - S2
Rd S2 - S1
Rd S1 S2
Rd S1 S2
Rd S1 S2
Rd Mem[Rx+S2]
Mem[Rx+S2] Rs
PC Rx + S2 si COND
PC PC + Y si COND
Rd3113 Y, Rd120 0

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

nom de linstruction
addition
soustraction
soustraction bis
conjonction
disjonction
ou exclusif
charg. dun registre
stockage en mmoire
e
branchement index
e
branchement relatif
charg. bit poids forts

Fig. 14.17 Instructions dun processeur inspir du sparc


e

contenant 0 en oprande source et non modiable.


e
La table 14.17 dcrit le jeu dinstructions du processeur et la gure 14.18
e
prcise le codage des direntes instructions. S1, Rx, Rd, Rs dsignent des
e
e
e
registres : un des registres Ri, i=0, . . ., 31. S2 dsigne un registre ou une valeur
e
immdiate (sur 13 bits). Y reprsente une valeur immdiate sur 19 bits. On
e
e
e
peut ajouter les instructions ADDcc, SUBcc, SUBRcc, ANDcc, ORcc et XORcc qui
ont le mme eet que ADD, SUB, SUBR, AND, OR et XOR avec mise ` jour des codes
e
a
de conditions. Toute opration mettant en jeu des valeurs codes sur moins de
e
e
32 bits (13 pour S2, 19 pour Y) doit prendre en compte lextension du signe.
La gure 14.19 dcrit la partie oprative. Cette partie oprative comporte
e
e
e
3 bus internes. Les entres de lUAL sont connectes aux bus Bus1 et Bus2
e
e
et sa sortie au bus BusRes. Le circuit combinatoire ext-sign extrait du registre
instruction RI la valeur immdiate et ltend sur 32 bits an de lenvoyer sur
e
e
Bus2. Le circuit combinatoire DEC eectue un dcalage dune valeur circulant
e
sur Bus2 ; elle est utile pour lexcution de linstruction LDHI. Le compteur
e
programme PC peut tre incrment, ou charg ` partir du rsultat dun calcul
e
e
e
ea
e
(via BusRes). La valeur circulant sur BusAd peut tre le rsultat dun calcul
e
e
ralis par lUAL, une valeur stocke prcdemment dans le registre interne T
e e
e
e e
ou le contenu de PC. Voici quelques pistes ` explorer :
a
1. Ajouter sur la partie oprative les commandes ncessaires.
e
e
2. Dcrire la partie contrle du processeur sous forme dune machine
e
o
squentielle avec actions. Pour chaque microaction utilise, vrier quelle
e
e e
est eectivement excutable par la partie oprative fournie. Pour cela,
e
e
donner en dtail lensemble des commandes qui lui sont associes.
e
e
3. Dessiner les circuits ext-sign, DEC et COND.
4. Dcrire le circuit permettant de commander les registres : acc`s aux bus
e
e
et chargement des registres.
5. Choisir un codage pour les oprations et pour les conditions
e
arithmtiques, et raliser le squenceur.
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

380

Le processeur : linterpr`te cbl du langage machine


e
a e

18

12

14
I

S2

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

(a)

30
25 23
0 code op C

Rd ou Rs
S1 ou Rx

=1 si code op
suivi de CC

25
30
0 code op

23

valeur immdiate (13bits)


e
ou no registre (bits 4-0)

=1 si S2 est une valeur immdiate


e
0

18

(b)

Rd pour LDHI
cond pour JMP relatif

(c)

30
25
0 code op

23
cond

18 14
Rx
0

4
S2

Fig. 14.18 Codage des instructions dun processeur inspir du sparc : a) inse
tructions ADD, ADDcc, SUB, SUBcc, SUBRm SUBRcc, AND, OR, XOR,
LOAD, STORE ; b) instructions LDHI et JMPR ; c) instruction JMP.

E14.7 : Interpr`te dun langage machine type 68000


e
Ce probl`me a pour but de dcrire linterpr`te du langage machine dun proe
e
e
cesseur imaginaire inspir du processeur 68000. La principale dirence avec
e
e
le probl`me prcdent vient de lexistence dun nombre important de modes
e
e e
dadressage pour ce processeur.
Le programmeur dispose dun ensemble de registres nots Di, i=0, . . ., max.
e
Le registre Dmax joue un rle particulier, celui de pointeur de pile (aussi not
o
e
SP). La partie oprative comporte deux bus internes BusSource et BusRsultat
e
e
et trois registres internes (non visibles par le programmeur) : A, D et T (Cf. Figure 14.20). T est un registre tampon servant ` stocker le rsultat dun calcul
a
e
en sortie de lUAL, les deux autres (A, D) vont permettre de faciliter linterprtation des instructions. Les registres et les bus ont 32 bits.
e
Une instruction peut tre code sur 1 ou 2 mots de 32 bits. Le deuxi`me
e
e
e
mot ventuel est appel mot dextension. Le format de codage du premier mot
e
e
dune instruction est le suivant :
code opration nRd ModeAdr nRs
e

Cest une machine ` deux rfrences (Cf. Chapitre 12) ; nRd est le numro
a
ee
e
dun registre qui constitue le premier oprande. Les deux informations ModeAdr
e
et nRs dsignent le deuxi`me oprande, ModeAdr dcrivant le mode dadrese
e
e
e
sage de cet oprande et nRs le numro du registre concern. Le rsultat dune
e
e
e
e
opration binaire est stock dans le registre de numro nRd.
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

BusDon

Mem

R
I

R0

13

R
1

ext-sign

32

Premire dition : Dunod 2000

Copyright 2006 TIMA EDITIONS

BusRes

Bus1

R
31

19

DEC

Bus2

ZNCV

COND

INCR

PC

Mem

BusAd

vers la partie contrle


o

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

6. Exercices
381

Fig. 14.19 Partie oprative dun processeur inspir du sparc


e
e

382

Le processeur : linterpr`te cbl du langage machine


e
a e

Mem

BusAd

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Bus Source
ZNCV

Di

INCR

PC

Bus Rsultat
e
BusDon

Mem

RI

vers la partie contrle


o

Fig. 14.20 Partie oprative dun processeur inspir du 68000


e
e

Les modes dadressage considrs sont : registre direct (not nRs), registre
ee
e
indirect (not nRs@), registre indirect avec prdcrmentation (not nRs@-), ree
e e e
e
gistre indirect avec postincrmentation (not nRs@+), immdiat (not #imm),
e
e
e
e
relatif et absolu. Les modes dadressage immdiat, relatif et absolu ncessitent
e
e
un mot dextension ; pour ladressage immdiat, il sagit dune valeur, pour
e
ladressage relatif dun dplacement par rapport ` la valeur courante du compe
a
teur de programme et pour ladressage absolu dune adresse. Pour une description de la smantique des modes dadressage, voir le chapitre 12.
e
Les instructions considres sont laddition (add), la soustraction (sub), le
ee
et logique (and), le chargement dune adresse (lea), le chargement dun registre
(load), le stockage dun registre en mmoire (store), le branchement (jmp) et
e
le branchement ` un sous-programme (bsr).
a
La table 14.21 donne un codage des instructions, le code opration tant
e
e
cod sur trois bits (nomms a, b, c), et un codage pour le mode dadressage
e
e
lui aussi sur trois bits (nomms d, e, f). Une croix dans une case indique que le
e
mode dadressage est autoris pour linstruction. Le tableau indique aussi les
e
instructions pour lesquelles il y a une mise ` jour du mot dtat (bits Z, N, C,
a
e
V). Voici quelques pistes ` explorer :
a
1. Etudier le droulement de linstruction add pour chacun des modes
e
dadressage. Constater les redondances et remarquer que linterprtation
e
peut tre faite en deux phases : tout dabord le calcul de ladresse du
e
deuxi`me oprande (sil sagit dune valeur, on la stockera dans D, et si
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

6. Exercices

383

000
nRs

X
X
X
X

X
X
X
X

101

110
#imm

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

MaJ
ZNCV

def : mode dadressage


001
010
011
100
nRs@- nRs@ nRs@+ rel
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X

lea
jmp
jsr
store
add
sub
and
load

abc
000
001
010
011
100
101
110
111

X
X
X
X

111
abs
X
X
X
X
X
X
X
X

Fig. 14.21 Modes dadressage autoriss selon les instructions


e

cest une adresse, dans A), puis le traitement de lopration proprement


e
dite.

2. Etudier linterprtation de linstruction de branchement ` un souse


a
programme (jsr) ; ladresse de retour est stocke dans la pile, le registre
e
pointeur de pile tant Dmax. Nous navons pas fourni dinstruction de
e
retour ; comment peut-on la programmer avec les instructions donnes ?
e
3. Ajouter sur la partie oprative les commandes ncessaires.
e
e
4. Dcrire la partie contrle du processeur sous forme dune machine
e
o
squentielle avec actions. Pour chaque microaction utilise, vrier quelle
e
e e
est eectivement excutable par la partie oprative fournie ; pour cela,
e
e
donner en dtail lensemble des commandes qui lui sont associes.
e
e
5. Proposer une ralisation microprogramme (Cf. Chapitre 10) de lautoe
e
mate prcdent.
e e
6. Dcrire les circuits de calcul des commandes dacc`s aux bus et de chare
e
gement des registres.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

384
Le processeur : linterpr`te cbl du langage machine
e
a e

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s
Cinqui`me partie
e

Architecture dun syst`me


e
matriel
e
et logiciel simple

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Un syst`me matriel et logiciel


e
e
simple
Dans ce qui prc`de, nous avons tudi ce quest un processeur. Du point de
e e
e
e
vue matriel il sagit dun assemblage de circuits combinatoires et squentiels
e
e
dont le rle est linterprtation dun jeu dinstructions particulier. Le jeu dinso
e
tructions fourni permet ` un utilisateur dcrire un programme dans un langage
a
e
de bas niveau : le langage machine.
Pour obtenir un ordinateur, il manque encore un certain nombre de composants matriels et logiciels. La partie V dcrit le minimum ncessaire pour
e
e
e
obtenir un ordinateur simple, mono-utilisateur. Lordinateur ainsi labor ne
e
e
sera pas un ordinateur rel, notre propos tant plutt de donner les principes
e
e
o
permettant de comprendre le rle et la place de chaque composant. Nous vero
rons dans la partie VI comment tendre ce syst`me simple ` un ordinateur
e
e
a
multitches, donc ventuellement multi-usagers.
a
e

Processeur/mmoire et entres/sorties
e
e
Le chapitre 15 montre comment connecter le processeur et de la mmoire
e
centrale (ou principale). Il sagit de mmoire ` semiconducteurs, ` acc`s
e
a
a
e
alatoire. Cette mmoire est organise en plusieurs composants dont cere
e
e
tains sont des mmoires mortes programmables (EEPROM) ; dautres sont
e
ncessairement des mmoires vives. Cette mmoire sert ` lutilisateur : le proe
e
e
a
gramme en cours dexcution et les donnes associes sont stocks en mmoire
e
e
e
e
e
vive. Les informations et le code ncessaire au dmarrage de lordinateur sont
e
e
stocks en mmoire morte.
e
e
Pour raliser des programmes dont la valeur ne se rduit pas ` une
e
e
a
constante, lensemble processeur/mmoire doit tre ouvert vers lextrieur.
e
e
e
Nous verrons dans le chapitre 16 que la communication avec le monde extrieur
e
comporte des aspects de cblage (connexion physique de priphriques
a
e
e
dentres/sorties) mais quil faut surtout grer des probl`mes de synchronie
e
e
sation (Cf. Chapitre 6). Nous reprendrons la description des entres/sorties
e
dans la partie VI et verrons des amliorations utilisant le mcanisme des ine
e
terruptions.
Les priphriques dentres/sorties sont tr`s divers. On peut distinguer deux
e
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

388

Un syst`me matriel et logiciel simple


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

types de fonctionnalits : dialogue avec lenvironnement et gestion de mmoire


e
e
secondaire.
Certains priphriques permettant un dialogue avec un utilisateur humain
e
e
(clavier/cran, souris et manettes diverses, scanner, tables traantes, cartes
e
c
son, imprimantes, etc.), les circuits de communication avec un environnement industriel (gestion dautomatismes, de conduite de procds, de roe e
bots, capteurs et actionneurs en tous genres) et enn les circuits servant `
a
tablir des communications entre ordinateurs (gestion des rseaux locaux
e
e
et liaisons grande distance, cartes rseau, modems).
e
La mmoire secondaire est une mmoire non volatile, de grande capacit et
e
e
e
en gnral de faible cot (par rapport ` la capacit). Les priphriques
e e
u
a
e
e
e
de gestion de mmoire secondaire sont les disques et disquettes (acc`s
e
e
alatoire), et les syst`mes darchivage et de sauvegarde (bandes, acc`s
e
e
e
squentiel).
e

Notion de syst`me dexploitation


e

Nous avons ` ce stade un squelette dordinateur mais celui-ci est inutia


lisable sans logiciel permettant de lui faire excuter les travaux auxquels il
e
est destin. Ce logiciel constitue ce que lon appelle le syst`me dexploitation.
e
e
Une partie rside en mmoire centrale et la plus grande partie est stocke en
e
e
e
mmoire secondaire. Ce logiciel doit tre adapt dune famille dordinateurs `
e
e
e
a
lautre et entre les gnrations successives dordinateurs dune mme famille.
e e
e
Un syst`me dexploitation (dont lessentiel nest pas crit en langage dasseme
e
blage dune famille de processeurs particuli`re, mais dans un langage de haut
e
niveau) peut fonctionner sur des plate-formes matrielles tr`s diverses. Par
e
e
exemple, on trouve le syst`me unix sur des pc, des stations de travail ou le
e
cray. Inversement, il existe souvent plusieurs choix possibles de syst`mes dexe
ploitation pour un mme ordinateur ; sur un pc, on peut installer le syst`me
e
e
unix (version linux, ou version xinu) ou windows ou windows NT.
On trouve 3 sortes de logiciel dans un ordinateur :
Des biblioth`ques charges de la gestion des principales ressources de lore
e
dinateur, dont les priphriques, la mmoire et les chiers. Elles constituent
e
e
e
le coeur du syst`me dexploitation (ce que lon appelle parfois le logiciel de
e
base). Elles dnissent des interfaces standardises orant les mmes fonce
e
e
tionnalits que le matriel physique, mais sous une forme normalise. Ceci
e
e
e
sapplique en particulier ` la manipulation des priphriques.
a
e
e
Diverses biblioth`ques qui ne manipulent pas de ressources particuli`res et
e
e
que les programmeurs peuvent dcider dutiliser ou non pour dvelopper
e
e
leurs applications (calcul mathmatique, graphique). Elles donnent des
e
fonctionnalits de plus haut niveau sur le matriel existant pour dcharger
e
e
e
le programmeur dune partie du travail commun ` de nombreuses applicaa

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Un syst`me matriel et logiciel simple


e
e

389

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

tions (par exemple, la plupart des syt`mes fournissent des biblioth`ques de


e
e
gestion des cha
nes de caract`res, de tri, etc.).
e

Les applications qui sont des programmes excutables. Certaines ne font


e
pas ` proprement parler partie du syst`me dexploitation mais sont livres
a
e
e
presque systmatiquement avec. Elles permettent de dvelopper dautres
e
e
applications (diteurs de texte, compilateurs et assembleurs, diteurs de
e
e
liens, dbogueurs) ou dobserver lactivit du syst`me (comme par exemple
e
e
e
regarder les les dattente des imprimantes).
Les biblioth`ques qui constituent le syst`me dexploitation ont un stae
e
tut particulier : les applications ont besoin de services similaires et ces biblioth`ques interagissent avec la gestion des ressources de lordinateur dont
e
nous verrons dans la partie VI quelles peuvent tre partages entre plusieurs
e
e
utilisateurs et plusieurs applications. Par consquent, on essaie de faire de
e
ces biblioth`ques un point de passage oblig, protg et contrl pour accder
e
e
e e
oe
e
aux ressources. De plus, elles sont utilises par toutes les applications et donc
e
rsidentes en mmoire principale (en EEPROM ou charges lors du dmarrage
e
e
e
e
du syst`me).
e
Les couches suprieures du syst`me dexploitation sont gnralement
e
e
e e
stockes sur disque, ce qui permet de changer facilement de version ou de
e
syst`me dune part et dinstaller ventuellement plusieurs syst`mes dexploitae
e
e
tion dirents sur des disques (ou des partitions de disques) distincts et choisir
e
celui que lon veut lancer au moment du dmarrage. Elles sont charges en
e
e
mmoire lors de la phase de dmarrage.
e
e

Notion de pilote de priphrique


e
e

Nous ne nous intressons dans cette partie qu` la couche basse du


e
a
syst`me dexploitation, cest-`-dire au minimum ncessaire ` la gestion des
e
a
e
a
priphriques dentres/sorties, ` la sauvegarde des programmes (et des
e
e
e
a
donnes) en mmoire secondaire et ` lexcution des programmes.
e
e
a
e
En ce qui concerne les priphriques, de nombreux dtails peuvent changer
e
e
e
dun ordinateur ` lautre, ou mme durant la vie dune mme machine : souris
a
e
e
a
` 2 ou 3 boutons, taille du (des) disque(s), adresses et formats des registres des
coupleurs, claviers ` la norme franaise azerty ou anglo-saxonne qwerty,
a
c
etc.
Lors du dmarrage de lordinateur et de linitialisation de la biblioth`que
e
e
de gestion des priphriques, cette derni`re a besoin de conna
e
e
e
tre les caractristiques exactes de lensemble des priphriques prsents quelle a ` grer.
e
e
e
e
a e
Les ordinateurs sont gnralement quips dEEPROM qui permettent de stoe e
e
e
cker ces informations de mani`re non volatile, ainsi quun petit programme
e
permettant de les consulter et de les mettre ` jour : le gestionnaire de congua
ration. Le syst`me dexploitation stock sur le disque peut contenir ses propres
e
e
pilotes de priphriques. Mais il doit en exister au moins une version rudimene
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

390

Un syst`me matriel et logiciel simple


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

taire en EEPROM de mmoire centrale pour les priphriques indispensables


e
e
e
lors du dmarrage, typiquement clavier cran, disque, disquette ou CD.
e
e
Les priphriques tant compliqus et orant plusieurs fonctionnalits, cere
e
e
e
e
taines partages entre plusieurs priphriques, leur gestion est regroupe au
e
e
e
e
sein dun partie du syst`me qui sappelle le pilote de priphrique. Ce sera
e
e
e
lobjet du chapitre 17.

Syst`me de gestion de chiers et interface de


e
commande
Une autre partie du syst`me utilisant les primitives du pilote ore des
e
services de plus haut niveau comme la gestion dinformations structures : le
e
syst`me de gestion des chiers (chapitre 19).
e
Par ailleurs, un programme en langage dassemblage ne peut sexcuter
e
quapr`s une phase de traduction en langage machine et ventuellement de
e
e
liaison avec dautres programmes ou avec des biblioth`ques. Nous dcrivons
e
e
dans le chapitre 18 les direntes tapes de la vie dun programme.
e
e
La couche interface entre lutilisateur et tous ces composants est linterpr`te
e
du langage de commande. Cest lobjet du chapitre 20. Nous y dcrivons en
e
particulier le chargement dun programme en mmoire centrale et son lancee
ment. Ensuite, cest le processeur qui interpr`te les instructions du programme
e
comme nous lavons dcrit dans le chapitre 14.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 15

Relations entre un processeur et


de la mmoire
e
Dans une version minimale, un ordinateur est compos dun processeur
e
(Cf. Chapitre 14) et dune mmoire (Cf. Chapitre 9). Le processeur produit
e
des informations ` stocker dans la mmoire ou bien rcup`re des informations
a
e
e
e
prcdemment ranges en mmoire.
e e
e
e
Nous avons vu au chapitre 14 quun processeur peut tre considr comme
e
ee
une machine algorithmique, assemblage dune partie oprative et dune partie
e
contrle.
o
Nous avons expliqu au chapitre 9 comment se droule un acc`s mmoire
e
e
e
e
et prcis au chapitre 11 les aspects de synchronisation lors de la connexion
e e
dune machine algorithmique ` une mmoire. Au chapitre 14 nous nous sommes
a
e
placs dans lhypoth`se simplicatrice dune mmoire rapide.
e
e
e
Ce chapitre apporte des informations complmentaires concernant la
e
ralisation de la connexion entre le processeur et la mmoire. Par ailleurs,
e
e
nous prsentons les dirents aspects du dcodage dadresse permettant de
e
e
e
grer le fait que la mmoire soit organise en dirents morceaux, et que lon
e
e
e
e
puisse la plupart du temps accder ` des sous-ensembles du mot mmoire.
e
a
e
Le paragraphe 1. est consacr ` dirents aspects concernant la connexion
ea
e
du processeur et de la mmoire. Le paragraphe 2. montre les consquences
e
e
de lorganisation de la mmoire en plusieurs units physiques, ou bo
e
e
tiers.
Enn dans le paragraphe 3. nous montrons comment grer des acc`s `
e
e a
des donnes logiques de tailles direntes (Cf. Chapitre 4) alors que les
e
e
acc`s se font ` des donnes physiques de tailles identiques.
e
a
e

1.

Le bus mmoire
e

Nous avons vu au chapitre 9 que le bus mmoire est constitu du bus


e
e
de donnes et du bus dadresse. Le bus de donnes est un ensemble de ls
e
e
Dn1 ` D0 via lesquels transitent les valeurs changes par le processeur et
a
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

392

Relations entre un processeur et de la mmoire


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

la mmoire. Ce bus est bidirectionnel (transfert dans les deux sens). Le bus
e
dadresse (unidirectionnel) est un ensemble de ls Am1 ` A0 en sortie du
a
processeur via lesquels ce dernier indique ` la mmoire le numro (ladresse)
a
e
e
du mot auquel il acc`de.
e
Dans lhypoth`se o` le temps de cycle de la mmoire est infrieur ou gal
e
u
e
e
e
au cycle dhorloge du processeur, les seuls signaux Acc`sMem et l/e susent
e
pour grer le protocole de communication. Nous nous limitons ` cette situation
e
a
dans ce chapitre pour nous concentrer sur les aspects connexion, organisation
en dirents bo
e
tiers et acc`s ` des sous-ensembles du mot mmoire.
e a
e
Notons toutefois que cette hypoth`se est assez rarement vrie. Le temps
e
e e
dacc`s peut dpendre de la zone mmoire ` laquelle on acc`de (ROM, RAM ou
e
e
e
a
e
entres/sorties). Les processeurs g`rent donc un protocole complet (inspir du
e
e
e
protocole poigne de mains dcrit dans le chapitre 6) et la dure dun acc`s peut
e
e
e
e
tre tendue dune ou plusieurs priodes dhorloge via un signal dacquittement
e e
e
pilot par la mmoire. Le nom du signal varie avec les familles de processeurs
e
e
(Data Transfert Ack pour le 68000, Memory Hold pour le sparc, Wait ou
ready pour dautres processeurs 8 ou 16 bits ...).

1.1

Connexion simple

Nous avons dit au chapitre 9 que la connexion des ls tait simple mais en
e
ralit il ne sut pas de relier directement les ls de mme nature.
e e
e
Les adresses et les donnes reprsentent un grand nombre de sorties du
e
e
processeur (64 pour un processeur ` 32 bits). La puissance dissipe totale
a
e
et le courant quest capable de dbiter un circuit intgr sont limits. Cela
e
e e
e
limite le courant pour chaque l de sortie. Chaque sortie ne peut donc piloter
quun nombre rduit dentres, alors quelle peut tre connecte ` de nombreux
e
e
e
e a
bo
tiers de mmoire, do` la ncessit dune amplication externe.
e
u
e
e
Lamplication des signaux unidirectionnels tels que les adresses ne pose
pas de probl`me particulier : la sortie des amplicateurs externes peut rester
e
active en permanence.
Le bus de donnes, bidirectionnel, implique au contraire le recours ` des
e
a
amplicateurs ` sorties 3 tats monts tte-bche. Lors dune lecture, la coma
e
e e
e
mande 3 tats dans le sens mmoire/processeur doit tre active et celle dans le
e
e
e
e
sens processeur/mmoire doit tre au contraire inhibe ; et rciproquement lors
e
e
e
e
dune criture. Il sut donc de commander la validation des sorties processeur
e
e
et mmoire respectivement par le signal l/e et son complment.
e
La gure 15.1 illustre ces connexions ; seul 1 l de la nappe des ls du bus
donnes (respectivement bus adresses) est reprsent, ` savoir Di (respectivee
e
e a
ment Aj).
Sur la gure, on voit un signal supplmentaire DeconnexionProcesseur dont
e
nous parlons au paragraphe 1.3.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

393

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

1. Le bus mmoire
e

Donne(no i)
e

Di

l/e

l/e

AccesMem

Slection bo
e
tier

Adresse (no j)

Aj

MEMOIRE

PROCESSEUR

DconnexionProcesseur
e

Fig. 15.1 Connexion processeur/mmoire. Le signal DconnexionProcesseur est exe


e
pliqu au paragraphe 1.3
e
l/e

l/e

AutD

Donne (no i)
e

Ai/Di

D Q
En

AutAd
AccesMem

PROCESSEUR

Adresse (no i)

Slection bo
e
tier

MEMOIRE

DconnexionProcesseur
e

Fig. 15.2 Multiplexage des bus adresses et donnes


e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

394

Relations entre un processeur et de la mmoire


e

Ad

Don

Ad Don

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Ad/Don

AutAd
AutD
l/e

T1

T2

Fig. 15.3 Chronogrammes dcrivant lacc`s ` la mmoire dans le cas dun bus multie
e a
e
plex : lintervalle T1 correspond ` une lecture mmoire et lintervalle T2 `
e
a
e
a
une criture mmoire.
e
e

1.2

Multiplexage du bus mmoire


e

Pour des ncessits damplication des signaux, et pour conomiser le


e
e
e
nombre de broches sur les bo
tiers, les processeurs sont parfois dots dun
e
bus mmoire multiplex. Le principe consiste ` faire transiter successivement
e
e
a
les adresses puis les donnes via les mmes broches.
e
e
On trouve gnralement deux sorties supplmentaires servant `
e e
e
a
lchantillonnage des donnes (AutD) et ` lchantillonnage des adresses (Aue
e
a e
tAd) (data strobe et address strobe en anglais) signalant les instants auxquels
les adresses et les donnes transitent sur le bus.
e
Sur la gure 15.2 qui montre les connexions, on note la prsence dun verrou
e
avant la commande 3 tats connecte ` la mmoire.
e
e a
e
Un cycle de lecture se droule en deux phases. Tout dabord, le processeur
e
met ladresse, accompagne de son signal de validation AutAd. Cette adresse
e
e
est mmorise dans le verrou command par le signal AutAd. Durant cette
e
e
e
phase du cycle, la sortie de donnes de lamplicateur mmoire vers processeur
e
e
doit tre dsactive. Puis dans une deuxi`me phase, la lecture se droule comme
e
e
e
e
e
dans le cas dun bus non multiplex, ` ceci pr`s que le transfert de la donne
e a
e
e
est conditionn par le signal dchantillonnage des donnes AutD.
e
e
e
Un cycle dcriture se droule de faon similaire ` un cycle de lecture.
e
e
c
a
La commande des amplicateurs externes associs au bus donnes est moe
e
die en consquence : une solution simple consiste ` utiliser le signal AutD
e
e
a
comme condition supplmentaire de validation de ces amplicateurs. Lamplie
cateur dans le sens mmoire vers processeur sera ainsi activ par la condition
e
e
e
e
e
l/e ET AutD. La gure 15.3 dcrit lvolution des dirents signaux.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Utilisation de plusieurs circuits de mmoire


e

1.3

395

Dconnexion du bus mmoire


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Dans un ordinateur, le processeur nest pas le seul composant qui ralise


e
des acc`s ` la mmoire.
e a
e
Nous verrons au chapitre 16 consacr aux circuits dentres/sorties que
e
e
certains dentre eux ont vocation ` accder ` la mmoire sans passer par le
a
e
a
e
processeur (optimisation appele acc`s direct ` la mmoire).
e
e
a
e
Plus gnralement, dans le cas o` plusieurs processeurs se partagent la
e e
u
mme mmoire (par exemple un processeur gnral et un processeur grae
e
e e
phique), le bus mmoire doit tre partag, do` la ncessit dun arbitrage
e
e
e
u
e
e
de bus. Nous ne dtaillons pas dans ce livre la faon de raliser des arbitres
e
c
e
de bus. Nous montrons seulement comment dconnecter le processeur du bus
e
mmoire ce qui est un pralable ` toute possibilit de partage de ce bus.
e
e
a
e
e
Pour les signaux unidirectionnels dadresses, l/e et Acc`sMem, il sut
dajouter une commande aux amplicateurs 3 tats : un signal de dconnexion
e
e
du processeur : DconnexionProcesseur sur les gures 15.1 et 15.2.
e
En ce qui concerne les signaux bidirectionnels de donnes, les amplicateurs
e
3 tats sont dj` prsents, il sut de rajouter le signal DconnexionProcesseur
e
ea e
e
comme condition supplmentaire dactivation des sorties.
e

2.

Utilisation de plusieurs circuits de mmoire


e

Il arrive que la capacit mmoire dun bo


e e
tier soit infrieure ` la capacit
e
a
e
souhaite. En gnral, on veut mme que la quantit de mmoire associe ` un
e
e e
e
e
e
e a
processeur soit modiable ; il est courant de rajouter des bo
tiers de RAM dans
un ordinateur. Par ailleurs un ordinateur est dot de bo
e
tiers de mmoire vive
e
et de mmoire morte. Aussi pour fabriquer une mmoire on utilise plusieurs
e
e
bo
tiers. Dans un premier temps, considrons que les bo
e
tiers sont tous de la
mme taille.
e
Par ailleurs les processeurs sont conus avec un bus adresses dune certaine
c
taille qui lui permet potentiellement dadresser 2 mots dirents. Nous
e
allons fabriquer une mmoire de taille (avec un certain nombre de bo
e
tiers)
et 2 .
Ce paragraphe montre comment alors associer une adresse ` chaque mot
a
physique de la mmoire, probl`me appel dcodage dadresses.
e
e
e e
Nous considrons tout dabord le cas o` = 2 puis nous tudions le cas
e
u
e

< 2 et enn nous parlons dextension mmoire.


e

2.1

Dcodage externe et slection des mmoires


e
e
e

Le probl`me peut se poser dans les termes suivants : comment former une
e
mmoire de 2m mots avec 2k bo
e
tiers mmoires (numrots de 0 ` 2k 1), de
e
e e
a
mk
2
mots chacune ? Chacun de ces bo
tiers a ses m k bits dadresse et son
propre signal de slection.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Relations entre un processeur et de la mmoire


e

A
m
A k

bo
tier 0

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

a = b 2mk + l

396

bo
tier 1

2mk

mk

Slection
e
du bo
tier

bo
tier b

Dcodeur
e
externe

2m 1

bo
tier 2k 1

(a)

Acc`sMem
e

B
n
Donnes
e
(b)

Fig. 15.4 (a) Mmoire de 2m mots organise avec 2k bo


e
e
tiers de 2mk mots chacun.
(b) Dcodage dadresse en cascade. B est lun des 2k bo
e
tiers de taille 2mk .

Soit a une adresse de mot sur m bits. Soient respectivement b et l (cods


e
mk
sur k et m k bits) le quotient et le reste de la division de a par 2
:
mk
a=b2
+ l (le mot adresse en haut de la gure 15.4-b).
Le principe consiste ` stocker le mot dadresse a dans le mot numro l du
a
e
bo
tier ou de la barette de numro b (Cf. Figure 15.4-a).
e
Le raccordement est le suivant : le bus de donnes, le signal l/e et les
e
signaux dadresses Amk1 ` A0 sont relis aux signaux correspondants des
a
e
2k circuits. Les signaux dadresses Am1 ` Amk sont relis aux entres de
a
e
e
slection dun dcodeur externe command par le signal Acc`sMem et dont
e
e
e
e
chaque sortie pilote le signal de slection de bo
e
tier dun circuit mmoire. Le
e
dcodeur dadresse sur m bits, initialement interne aux bo
e
tiers, est ici remplac
e
par la mise en cascade du dcodeur externe sur k bits et (dans chaque circuit
e
mmoire) dun dcodeur interne sur m k bits (Cf. Figure 15.4-b).
e
e
Cette organisation regroupe dans le mme bo
e
tier les mots dadresses
conscutives de poids forts identiques. Lorsque lon ne veut utiliser que x
e
bo
tiers (x < 2k ), la solution que nous venons de dcrire prsente lavantage
e
e
de permettre la cration dune mmoire contigu de x 2mk mots.
e
e
e
Il existe des variantes de dcodage dans lesquelles la slection des bo
e
e
tiers
exploite dautres bits dadresses que ceux de poids forts. A partir de la
dcomposition a = l 2k + b , par exemple, nous pourrions connecter les l
e
signaux de slection de mots des bo
e
tiers aux signaux dadresses Am1 ` Ak du
a
bus dadresses et les b signaux de poids faible Ak1 ` A0 au dcodeur externe
a
e
pour slectionner des bo
e
tiers. Contrairement ` la prcdente, cette derni`re ora
e e
e
ganisation disperse les mots dadresses conscutives dans des bo
e
tiers dirents.
e
Elle ne supporte pas labsence dun bo
tier, les mots manquants crant des
e
trous dissmins dans toute la zone mmoire. Elle est ` la base de certaines
e
e
e
a
techniques doptimisation du dbit de la mmoire (bancs de mmoire).
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Utilisation de plusieurs circuits de mmoire


e

Dcodage partiel et synonymie dadresses


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

2.2

397

Il se peut que le nombre m de signaux dadresses du processeur exc`de


e
largement le nombre p de bits ncessaires mis ` sa disposition pour adresser la
e
a
mmoire physique.
e
Une adresse de mot mise par le processeur se dcompose maintenant de
e
e
la faon suivante : a = e 2mp + b 2pk + l. En partant des poids faibles :
c
l occupe les bits 0 ` k 1, b occupe les bits k ` p 1, e occupe les bits p `
a
a
a
m 1.
Le concepteur doit dnir quelle plage dadresses du processeur parmi les
e
p
2 possibles il attribue ` la mmoire (gnralement de 0 ` 2p1 , soit e = 0).
a
e
e e
a
Une premi`re possibilit est dintroduire un nouvel tage de dcodage
e
e
e
e
dnissant Acc`sMem. Dans le cas o` e = 0, Acc`sMem = Am1 , ...Ap et erreur
e
e
u
e
e
e
e
= Acc`sMem. Ainsi, Acc`sMem traverse un nouveau dcodeur avant datteindre
la commande du dcodeur externe du schma prcdent, ce nouveau dcodeur
e
e
e e
e
tant command par les bits dadresses de poids forts rests inutiliss. On parle
e
e
e
e
alors de dcodage complet.
e
Lors dun cycle dacc`s en lecture en dehors de la plage dadresses dvolue
e
e
a
` la mmoire, aucune sortie nimposera de niveau lectrique sur les signaux de
e
e
donnes du bus. Il en rsulte que les bits peuvent prendre une valeur quelconque
e
e
(qui peut dpendre entre autres de la technologie des amplicateurs de bus
e
utiliss). Un tel acc`s constitue une erreur de programmation. Le programmeur
e
e
ne peut faire aucune hypoth`se sur le rsultat dune telle lecture. En pratique,
e
e
on obtiendrait le plus souvent un mot dont tous les bits sont ` 1.
a
Lorsquil dtecte un cycle dacc`s en dehors de la plage dadresses de la
e
e
mmoire, le circuit de dcodage dadresses peut se contenter de nactiver aucun
e
e
bo
tier. Il est toutefois prfrable de renvoyer un signal derreur au processeur
ee
qui provoquera un droutement de type erreur de bus (Cf. Chapitre 22), signal
e
qui sera rpercut au niveau de lutilisateur (le classique bus error).
e
e
Une autre possibilit consiste ` conserver le schma prcdent sans tenir
e
a
e
e e
compte des m p signaux dadresses de poids forts : on parle de dcodage
e
partiel. Tout mot de la mmoire physique poss`de dans ce cas 2mp adresses
e
e
quivalentes ou synonymes : son adresse ocielle a et toutes les autres adresses
e
de la forme (a i 2mp ) modulo 2m avec i entier.

2.3

Supports de bo
tiers multitaille et
extension mmoire
e

Les fabricants dordinateurs prvoient gnralement un certain nombre de


e
e e
connecteurs dans lesquels on peut encher des bo
tiers de mmoires pour en
e
augmenter la capacit (extension de mmoire). La che technique prcise alors
e
e
e
la quantit de mmoire dj` installe dans lappareil et la taille maximale quil
e
e
ea
e
est possible datteindre en quipant tous les connecteurs de bo
e
tiers.
Il est intressant de prvoir des connecteurs pouvant accepter aussi bien les
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

398

Relations entre un processeur et de la mmoire


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

bo
tiers disponibles sur le march au moment de la conception que les futurs
e
bo
tiers de capacit double ou quadruple (et plus) que lutilisateur pourra se
e
procurer ultrieurement.
e
Soit 2k le nombre de connecteurs. Soit 2p la taille de la plus petite barette
supporte et 2g celle de la plus grande. La technique consiste ` dcoder les
e
a e
signaux Ap ` Ap+k1 pour gnrer les signaux de slection de bo
a
e e
e
tiers. Les
autres signaux A0 ` Ap1 et Ap+k ` Ag1 sont disponibles sur les connecteurs
a
a
et relis aux entres de slection de mots des bo
e
e
e
tiers.

2.4

Spcialisation de zones mmoires


e
e

Le dcodage prend en compte dautres lments que la seule adresse.


e
ee
Certains jeux dinstructions distinguent plusieurs espaces dadressage. Au
moins un des espaces est toujours destin aux acc`s mmoire ordinaires via
e
e
e
les instructions normales (load/store ou move) dacc`s ` la mmoire. Le ou
e a
e
les autres espaces sont destins ` des usages spciques et ncessitent lusage
e a
e
e
dinstructions spciales pour y accder.
e
e
Des sorties additionnelles du processeur indiquent le numro de lespace
e
utilis. Du point de vue du dcodage, on peut considrer ce numro comme
e
e
e
e
des bits de poids fort de ladresse ` dcoder.
a e
A titre dexemple, les processeurs de la famille intel distinguent un espace mmoire ordinaire (instruction move) et un espace ddi aux seules
e
e e
entres/sorties (instructions in et out, Cf. Chapitre 12, paragraphe 1.4.5). Une
e
sortie M/IO du processeur indique ` quel espace le cycle dacc`s sadresse.
a
e
De plus, le processeur dlivre vers lextrieur des signaux donnant des
e
e
informations sur son tat interne ou sur la nature de linstruction en cours
e
dexcution. Le dcodeur doit mettre un signal derreur lorsquil dtecte un
e
e
e
e
acc`s ` la mmoire non conforme aux informations fournies par le processeur.
e a
e
Ce signal se traduit par lenvoi au processeur dune requte dinterruption
e
(Cf. Chapitre 22).
Par exemple, il est possible au concepteur de la carte de protger en criture
e
e
certaines zones de mmoire. Lors dune demande dacc`s en criture ` une telle
e
e
e
a
zone, le dcodeur dadresse dtecte que ladresse ne fait pas partie des plages
e
e
mmoires autorises en criture et met donc un signal derreur.
e
e
e
e
Pour obtenir par exemple lexpression du signal de slection dune mmoire
e
e
morte, il sut de prendre le signal que lon aurait utilis pour une mmoire
e
e
vive et den faire le produit avec le signal l/e. Le concepteur de la carte peut
installer un dcodeur qui dtecte les acc`s en criture en mmoire morte et
e
e
e
e
e
gn`re une erreur.
e e
Par ailleurs, nous verrons dans le chapitre 24 quil faut implanter des
mcanismes de protection lorsque direntes entits utilisent le processeur et
e
e
e
la mmoire. Certaines parties de mmoire sont ainsi rserves ` certains types
e
e
e
e a
dutilisateurs et lacc`s par dautres provoque une erreur detecte au niveau
e
e
du dcodeur dadresses. On distingue la notion daccessibilit en mode supere
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Acc`s ` des donnes de tailles direntes


e a
e
e

399

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

viseur ou en mode utilisateur ; lors de tout acc`s ` la mmoire le processeur


e a
e
spcie le mode dacc`s courant : ce mode est une entre supplmentaire pour
e
e
e
e
le dcodeur dadresses. Dans ce cas aussi lacc`s erron ` une zone reserve
e
e
e a
e
a
` un certain mode doit tre dtect par le dcodeur qui met alors un signal
e
e
e
e
e
derreur. Lexercice E15.5 illustre la prise en compte dun tel cas.

3.

Acc`s ` des donnes de tailles direntes


e a
e
e

Lunit adressable de la majorit des processeurs est loctet : les adresses


e
e
utilises pour lacc`s ` la mmoire sont des adresses doctet. Mais les proe
e a
e
cesseurs sont galement capables daccder ` des multiples de loctet allant
e
e
a
jusqu` la taille du bus donnes du processeur.
a
e
Par exemple, dans la famille des processeurs 68xxx, linstruction en langage
dassemblage comporte la taille de la donne manipule ; ainsi, les instructions
e
e
move.b D1,D2, move.w D1,D2 et move.l D1,D2 signient respectivement le
transfert dun octet, dun mot de 16 bits ou dun mot long de 32 bits du registre D1 vers le registre D2. Dans le sparc les donnes sont sur 32 bits sauf
e
pour certaines instructions ; par exemple, linstruction ld permet le chargement dans un registre dun mot mmoire 32 bits, mais on peut aussi lire un
e
octet (respectivement un demi-mot de 16 bits), sign ou non, avec une des
e
instructions : ldsb ou ldub (respectivement ldsh, lduh).
Considrons par exemple un processeur 32 bits capable daccder ` des
e
e
a
octets, des demi-mots de 16 bits et des mots de 32 bits. Puisque les adresses
sont des adresses doctet, la logique voudrait que le processeur soit dot dune
e
mmoire dun octet de large. Pour transfrer un mot de 32 bits dadresse
e
e
A, il surait dencha
ner quatre acc`s mmoire aux adresses conscutives A,
e
e
e
A + 1, A + 2 et A + 3. Cette solution prsente linconvnient dtre lente. Le
e
e
e
processeur est donc dot de quatre mmoires juxtaposes, fournissant chacune
e
e
e
un octet du mot de 32 bits, que le processeur peut lire en un seul cycle dacc`s
e
mmoire. En revanche, lorsque le processeur eectue un acc`s ` un octet, il
e
e a
sut de ne slectionner quune seule de ces mmoires. Cette organisation pose
e
e
des probl`mes :
e
1. dalignement et de dcodage dadresse pour slectionner les quatre
e
e
mmoires doctet.
e
2. de cadrage des donnes sur le bus de donnes et dans les registres. On
e
e
pourrait vouloir cadrer la donne de direntes faons (vers les poids
e
e
c
forts, vers les poids faibles, au milieu...) ; il faudrait alors plusieurs instructions de chargement ou de lecture dun registre. En fait, un seul type
de cadrage sut ; en eet, on peut toujours raliser les autres avec des
e
instructions de dcalages, plus gnrales. Le principe retenu est de cadrer
e
e e
les donnes de taille infrieure ` 32 bits en poids faible des registres et de
e
e
a
recopier le bit de signe (ou des 0 si on veut interprter la donne comme
e
e
non signe) dans les bits de poids fort des registres.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

400

Relations entre un processeur et de la mmoire


e

O2

O3

O1

O0

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

bus adresses

22

D31

D24

D23

D16

D15

D8

D7

D0

32

bus donnes
e

Fig. 15.5 Mmoire organise avec 4 bo


e
e
tiers de 1 Mo

Si lon veut accder ` des donnes de taille suprieure ` celle du bus donnes,
e
a
e
e
a
e
il faut raliser plusieurs acc`s mmoire, le programmeur organisant lui-mme
e
e
e
e
le stockage de ces donnes en mmoire.
e
e

3.1

Etude de cas : dcodage dadresses


e

Dans ce paragrapge, nous prsentons une tude de cas illustrant le dcodage


e
e
e
dadresses pour un processeur ayant un bus de donnes sur 32 bits et un bus
e
dadresses sur 22 bits.
3.1.1

Organisation matrielle
e

Nous disposons de 4 bo
tiers mmoire de 1Mo (1 Mega-octets), cest-`-dire
e
a
20
20
10
10
6
de 2 octets. En eet, 2 = 2 2 = 1024 1024 10 .
Pour pouvoir accder ` un mot mmoire de 32 bits en 1 cycle, on prend
e
a
e
chacun des 4 octets dans un des bo
tiers. La gure 15.5 donne une premi`re
e
ide de cette organisation.
e
Puisquil ne peut y avoir quune adresse ` la fois sur le bus adresses, les
a
quatre octets auxquels le processeur acc`de sont ` la mme adresse, chacun
e
a
e
dans son bo
tier. En consquence ladresse dun mot de 32 bits doit tre un
e
e
multiple de 4. Supposons, en eet, que lon veuille accder ` 4 octets conscutifs
e
a
e
a
` partir dun octet du bo
tier O2 ; il faudrait prendre les 3 premiers octets
respectivement dans O2, O1 et O0 et le quatri`me dans O3, mais ` ladresse
e
a
suivante do` une adresse dirente pour ce dernier octet . . .
u
e
Nous utilisons les 2 bits de poids faibles de ladresse mise par le processeur
e
pour distinguer les bo
tiers.
Remarque : Lassociation entre les mmoires et les octets du bus dpend de
e
e
la convention utilise : gros ou petit boutiste (Cf. Chapitre 4). Nous supposons
e
ici que la convention est gros-boutiste.

Ladresse dun octet de O3 est de la forme 4 X (A1A0 = 00), ladresse


dun octet de O2 de la forme 4 X + 1 (A1A0 = 01), ladresse dun octet de

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Acc`s ` des donnes de tailles direntes


e a
e
e

401

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

O1 de la forme 4 X + 2 (A1A0 = 10) et ladresse dun octet de O0 de la forme


4 X + 3 (A1A0 = 11). Les autres bits de ladresse (A21, . . ., A2) dsignent
e
une adresse dans un bo
tier.
Le bus de donnes se dcompose ` prsent en quatre octets. Les mmoires
e
e
a e
e
doctet sont connectes chacune ` un octet du bus de donnes.
e
a
e
Ainsi, tant donne une adresse 4k + i mise par le processeur, la valeur k
e
e
e
code sur les vingt bits de poids fort relis aux dcodeurs internes des mmoires
e
e
e
e
reprsente un numro doctet dans son bo
e
e
tier et la valeur i code sur les deux
e
bits de poids faible est un numro de bo
e
tier o` trouver loctet dadresse 4k + i.
u
En mettant k en poids fort du bus dadresse, le processeur peut accder
e
e
simultanment et en un seul cycle mmoire ` : loctet dadresse 4k via D24 `
e
e
a
a
D31 du bus de donnes, loctet dadresse 4k + 1 via D16 ` D23 , loctet dadresse
e
a
4k + 2 via D8 ` D15 et loctet dadresse 4k + 3 via D0 ` D7 .
a
a
Par construction, les octets dadresses 4k+x et 4(k1)+y, avec (0 x 3
et 0 y 3), ne sont pas accessibles dans un mme cycle mmoire.
e
e
La combinaison 4k + 2 et 4k + 3 correspond au transfert dun demi-mot de
seize bits dadresse 4k + 2. En revanche, un demi-mot de seize bits dadresse
4k + 3, compos des octets dadresses 4k + 3 et 4(k + 1) + 0 nest pas accessible
e
en un seul cycle mmoire.
e
Nous retrouvons l` lorigine des r`gles dalignement exposes au chapitre 4
a
e
e
imposant des adresses de demi-mot de seize bits paires, des adresses de mots
de 32 bits multiples de 4 et ainsi de suite (notons cependant que le matriel
e
serait capable de transfrer en un cycle des demi-mots dadresses 4k + 1).
e
Remarque : Les versions 32 bits de certaine familles de processeurs (intel et motorola) hritent de logiciels dvelopps pour leurs prdcesseurs
e
e
e
e e
travaillant sur 8 ou 16 bits et pour lesquels les contraintes dalignement ne
se posaient pas. Cest pourquoi ils tol`rent les adresses non alignes au prix
e
e
de deux acc`s mmoire par transfert dobjet non align et dune complexit
e
e
e
e
matrielle accrue. Sur les processeurs modernes, lacc`s ` des donnes ` des
e
e a
e a
adresses non alignes dclenche une erreur.
e
e

3.1.2

Le dcodeur dadresses
e

Lors dun acc`s mmoire, le processeur tablit les signaux suivants :


e
e
e

ladresse A21, . . ., A0.


la taille de la donne ; cette information provient du dcodage de linstruce
e
tion en cours dexcution. Le chargement ou le rangement se fait sur 1 octet,
e
1 demi-mot de 16 bits ou 1 mot de 32 bits ; ces 3 cas peuvent tre cods sur
e
e
2 bits.
les signaux Acc`sMem et l/e.
e
Le dcodeur dadresses doit produire les signaux de slection de chacun des
e
e
bo
tiers : SelO3, SelO2, SelO1, SelO0.
Nous avons vu au paragraphe prcdent que le bo
e e
tier de numro i,
e
i {0, 1, 2, 3} contient le mot dadresse 4k + i. De plus le dcodeur dadresses
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

402

Relations entre un processeur et de la mmoire


e

AccesMem
A1
A0

DECODEUR DADRESSES

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

PROCESSEUR

taille

A21 ... A2

SelO3 SelO2

SelO1 SelO0

erreur

l/e

SelO3

SelO2

SelO1

SelO0

Fig. 15.6 Dcodage dadresse dans le cas dacc`s ` des sous-ensembles du mot mmoire
e
e a
e

interne de chaque bo
tier reoit ladresse sur 20 bits de loctet auquel le proc
cesseur acc`de.
e
La gure 15.6 dcrit cette organisation. Le tableau 15.7 donne la table de
e
vrit de la fonction de dcodage dadresses. Notons la prsence dun signal
e e
e
e
erreur mis par le dcodeur ; ce signal correspond ` une demande dacc`s ` une
e
e
a
e a
adresse invalide, il pourra tre associ ` une interruption (Cf. Chapitre 22).
e
ea
Les exercices E15.4 et E15.5 poursuivent cette tude de cas.
e
Nous avons dit que la taille de la mmoire peut varier dans la vie dun
e
ordinateur, les constructeurs prvoyant en eet la possibilit de rajouter des
e
e
bo
tiers mmoire. Le dcodeur dadresses doit avoir t prvu pour ce faire et
e
e
ee e
cest lors de linitialisation de lordinateur quun programme dtecte la quantit
e
e
de mmoire rellement prsente.
e
e
e

3.2

Etude de cas : gestion du bus donnes


e

Le probl`me quil reste ` rsoudre est le cadrage des donnes de taille


e
a e
e
infrieure a la taille du bus donnes sur celui-ci. Nous traitons un exemple
e
`
e
simpli de faon ` ne pas crire des tables de vrit trop complexes.
e
c a
e
e e
Considrons un processeur ayant un bus adresses sur m bits (adresse =
e
Am1 , ..., A0 ), un bus donnes sur 16 bits et une mmoire forme de deux
e
e
e
m1
bo
tiers de 2
octets (Cf. Figure 15.8).
Soit X lentier reprsent en binaire par les bits m1 ` 1 du bus adresses. La
e
e
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Acc`s ` des donnes de tailles direntes


e a
e
e

A0
0
1
0
1
0
1
0
1
0
1
0
1

taille
octet
octet
octet
octet
16 bits
16 bits
16 bits
16 bits
32 bits
32 bits
32 bits
32 bits

SelO3
1
0
0
0
1
0
0
0
1
0
0
0

SelO2
0
1
0
0
1
0
0
0
1
0
0
0

SelO1
0
0
1
0
0
0
1
0
1
0
0
0

SelO0
0
0
0
1
0
0
1
0
1
0
0
0

erreur
0
0
0
0
0
1
0
1
0
1
1
1

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

A1
0
0
1
1
0
0
1
1
0
0
1
1

403

Fig. 15.7 Fonction de dcodage dadresses


e

mmoire note 2X stocke les octets dadresses paires (adresse = Am1 , ..., A1 , 0)
e
e
et la mmoire note 2X + 1 stocke les octets dadresses impaires (adresse =
e
e
Am1 , ..., A1 , 1).
La mmoire 2X est connecte ` loctet de poids fort du bus donnes
e
e a
e
(D15 , ..., D8 ) et la mmoire 2X + 1 est connecte ` loctet de poids faible du
e
e a
bus donnes (D7 , ..., D0 ).
e
Le processeur indique au dispositif de dcodage dadresses la taille de line
formation a laquelle il acc`de (octet ou mot de 16 bits) et le bit de poids faible
`
e
dadresse (A0 ) indique sil sagit dune adresse paire ou impaire.
Le dcodeur dadresses produit les signaux de slection des bo
e
e
tiers
mmoire : Sel2X et Sel2X+1.
e
Lorsquun acc`s ` un mot de 16 bits avec une adresse paire est demand,
e a
e
il ny a aucun probl`me : un octet de chacun des bo
e
tiers tant envoy (ou
e
e
rcupr) sur le bus donnes.
e
ee
e
Lorsque le processeur veut crire un octet en mmoire le probl`me est
e
e
e
simple. Le programmeur sait ` quelle adresse il crit et est responsable de
a
e
lorganisation de ses donnes en mmoire. Il lui sut donc de prciser la taille
e
e
e
de la donne ` crire. En gnral des instructions sont prvues pour cela dans
e ae
e e
e
les processeurs ; par exemple, dans le sparc (Cf. Chapitre 12, gure 12.3),
lcriture de 32 bits dans la mmoire est ralise par linstruction ST et lcriture
e
e
e e
e
dun octet par une instruction dirente (STB, store byte).
e
En revanche, pour transfrer un octet de mmoire vers un registre R (lecture
e
e
dun octet en mmoire), il faut savoir quelle partie du registre est aecte et
e
e
que vaut le reste du registre. Le probl`me est ainsi de slectionner la bonne
e
e
partie du bus donnes.
e
Pour traiter ce probl`me, un circuit C est ajout au processeur : la e
e
gure 15.9 montre sa position et la table 15.10 dcrit la fonction quil ralise.
e
e
Les octets tant cadrs dans les poids faibles du registre R, si un octet de
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Relations entre un processeur et de la mmoire


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

404

PROCESSEUR

octet ou mot de 16 bits


DECODEUR
AccesMem
A0
DADRESSES

erreur

Sel2X+1

Sel2X

2X

Am1 ... A1

2X+1

2m1 1
D15...8

2m1 1
D7...0

l/e

Fig. 15.8 Mmoire accessible par octets ou mots de 16 bits


e
MEMOIRE

2X

Bus Donnes
e

2X+1

D15

D8

D7

D0

16

PROCESSEUR

Registre instruction

un registre

Fig. 15.9 Recadrage des donnes lors de lecture de sous-multiples du mot mmoire
e
e
Type Acc`s
e
16
16
8
8
8
8

Adresse
paire
impaire
paire
impaire
paire
impaire

Type Instruction
non sign
e
non sign
e
sign
e
sign
e

R15 ... R8
D15 ... D8
0 ... 0
0 ... 0
D15 ... D15
D7 ... D7

R7 ... R0
D7 ... D0

D15 ... D8
D7 ... D0
D15 ... D8
D7 ... D0

Fig. 15.10 Cadrage des donnes dans un registre lors dune opration de lecture
e
e
mmoire
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Exercices

405

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

la mmoire 2X + 1 est transfr vers le registre R, il faut tendre la valeur


e
ee
e
reprsente en remplissant les 8 bits de poids fort du registre R avec des 0 ou le
e
e
bit de signe de la valeur, selon quil sagit dun chargement non sign ou sign
e
e
(Cf. Chapitre 3). Sil sagit dun octet de la mmoire 2X, il doit tre plac
e
e
e
dans les poids faibles de R, les poids forts tant traits comme prcdemment.
e
e
e e
Le circuit C reoit en entre la taille de la donne (octet ou mot de 16
c
e
e
bits), la parit de ladresse (bit A0 ) et le type dinstruction (signe ou non).
e
e
Par exemple, dans le processeur sparc on trouve une instruction de lecture
dun octet sign LDSB ou non sign LDUB. Le tableau 15.10 prcise quels ls
e
e
e
du bus donnes sont envoys vers chaque bit du registre R ; certaines lignes
e
e
ne sont pas prcises : lorsquil y a une demande dacc`s dun mot de 16 bits
e e
e
a
` une adresse impaire, le dcodeur dadresses envoie le signal derreur, et la
e
valeur calcule par le circuit C na aucune importance.
e

4.

Exercices

E15.1 Faire le schma dtaill en portes du circuit C de la gure 15.9 en


e
e
e
prenant les codages de taille dans la documentation dun vrai processeur.
E15.2 Comment peut tre tendu le mcanisme dcrit au paragraphe 3.2
e
e
e
e
pour traiter des donnes de 32, 16 et 8 bits ?
e
E15.3 Chercher, dans des documentations techniques de processeurs, sils
ont ou non une contrainte dalignement des mots de 2n octets sur fronti`re
e
n
multiple de 2 . En proter pour regarder quelle convention a t adopte :
ee
e
gros-boutiste ou petit-boutiste (Cf. Chapitre 4, paragraphe 2.2.4).
E15.4 : Une mmoire simple (Cet exercice fait suite ` ltude de cas du
e
a e
paragraphe 3.1)
Le processeur a toujours un bus donnes de 32 bits mais un bus dadresses
e
de 24 bits. Nous disposons de 16 bo
tiers de 1Mo. Dcrire lorganisation de la
e
mmoire et le dcodage dadresses an de disposer dune mmoire de 4 220
e
e
e
mots de 32 bits, sachant que lon veut pouvoir accder ` des octets, ` des mots
e
a
a
de 16 bits ou ` des mots de 32 bits.
a
E15.5 : Une mmoire gnrale
e
e e
On veut grer une mmoire dans laquelle lacc`s ` des octets, des mots de 16
e
e
e a
ou 32 bits est possible. On dispose des bo
tiers suivants :
4 bo
tiers de ROM de 256Ko accessibles en mode superviseur,
4 bo
tiers de RAM de 256Ko accessibles en mode superviseur,
8 bo
tiers de RAM de 1Mo accessibles en mode superviseur et utilisateur,
1 bo
tier servant aux entres/sorties de 3 mots de 8 bits, accessibles en
e
mode superviseur, le premier mot pouvant tre lu et/ou crit, le deuxi`me
e
e
e
ne pouvant tre que lu et le troisi`me uniquement crit,
e
e
e
1 bo
tier servant aux entres/sorties de 3 mots de 16 bits, accessibles en
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

406

Relations entre un processeur et de la mmoire


e

ROMs

3 octets en M+3, M+11,


M+15
3 mots de 16 bits en
2M+2, 2M+10, 2M+14

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

0
1M
2M
3M
4M

RAMs

8M

RAMu

12M

RAMu

16M

Fig. 15.11 Organisation dune mmoire gnrale


e
e e

mode superviseur, le premier mot pouvant tre lu et/ou crit, le deuxi`me


e
e
e
ne pouvant tre que lu et le troisi`me uniquement crit.
e
e
e
Remarque : Un bo
tier de 256K est un bo
tier 218 octets, 218 = 28 210 =
256 1024 256 103 .

La gure 15.11 dcrit limplantation de chacun de ces bo


e
tiers, ou mots pour
la mmoire servant aux entres/sorties. Pour cette derni`re, pour linstant, on
e
e
e
peut considrer que ce sont des mots mmoire avec seulement des contraintes
e
e
de lecture et/ou dcriture ; on verra au chapitre 16 comment les utiliser.
e
Remarque : Les adresses dimplantation sur la gure 15.11 sont donnes
e
6 = 103 103
en M (mga-octets) pour allger le dessin. Notons que 1M = 10
e
e
210 210 = 220 .

Le processeur a des donnes sur 32 bits et des adresses sur 32 bits. Il met
e
e
e
les signaux : Acc`sMem, l/e, et le type dacc`s (octet, 16 bits ou 32 bits).
e
De plus, il envoie un signal s/u indiquant sil est en mode superviseur ou
utilisateur. Nous verrons au chapitre 22 que le processeur poss`de dirents
e
e
modes dexcution mais pour linstant on se contentera dmettre une erreur
e
e
dacc`s mmoire dans le cas o` un acc`s ` une zone superviseur est demande
e
e
u
e a
e
alors que le processeur nest pas en mode superviseur.
Faire un schma prcis de lorganisation de cette mmoire et dcrire le
e
e
e
e
dcodeur dadresses. La fonction de dcodage dadresses doit calculer les sie
e
gnaux dacc`s ` chacun des bo
e a
tiers utiliss et le signal derreur dacc`s
e
e
mmoire.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 16

Circuits dentres/sorties
e

Nous avons vu au chapitre 15 comment se passent les transferts entre le


processeur et la mmoire. Nous voulons maintenant enrichir notre ordinateur
e
minimal en orant des moyens de communication entre lensemble processeur/mmoire et le monde extrieur. Le monde extrieur peut tre un autre
e
e
e
e
ordinateur ou un ensemble dorganes priphriques tels que clavier, lecteur de
e
e
disquettes, imprimante, cran, capteurs, etc.
e
Lorsquil y a communication dinformation de lensemble processeur/mmoire en direction du monde extrieur, on parle dune sortie, et lorsque
e
e
lchange a lieu depuis le monde extrieur vers lensemble processeur/mmoire
e
e
e
on parle dune entre.
e
Les circuits dentres/sorties assurent la gestion des changes entre le proe
e
cesseur et les priphriques, et plus particuli`rement g`rent la synchronisation
e
e
e
e
entre ces dispositifs qui ont des vitesses de fonctionnement direntes.
e
Le paragraphe 1. prsente la notion dentres/sorties et prcise ce que
e
e
e
lon appelle un circuit dentres/sorties. Les aspects de synchronisae
tion mis en jeu lors dune communication entre le processeur et des
organes priphriques sont abords dans le paragraphe 2. Dans le pae
e
e
ragraphe 3. nous montrons comment connecter matriellement des ore
ganes priphriques ` lensemble processeur/mmoire. La programmae
e
a
e
tion de sorties et dentres lmentaires ainsi que linterface matrielle
e ee
e
ncessaire sont prsentes dans les paragraphes 4. et 5. Dans le parae
e
e
graphe 6. nous nous intressons ` lencha
e
a
nement dentres/sorties et
e
prsentons des moyens doptimiser des tranferts de blocs : notions dacc`s
e
e
direct ` la mmoire (DMA), de canal et de processeur dentres/sorties.
a
e
e

1.

Notion dentres/sorties
e

Pour xer les ides, considrons une conguration simple avec deux ore
e
ganes priphriques : un clavier pour les entres et un acheur sept segments
e
e
e
(Cf. Exemple E8.2) pour les sorties (Cf. Figure 16.1).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

408

Circuits dentres/sorties
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

PROCESSEUR/MEMOIRE

transcodeur

transcodeur

.....

ENTREE

SORTIE

Fig. 16.1 Entre clavier et sortie acheur sept segments


e

La frappe dune touche du clavier provoque lenvoi de signaux ` un


a
transcodeur qui fournit un codage de cette valeur sur 7 bits (code ASCII,
Cf. Chapitre 3). Cette information doit alors tre traite par lensemble proe
e
cesseur/mmoire. Deux types de questions se posent : o` cette information
e
u
est-elle stocke ? Comment grer le ux des caract`res frapps ` un rythme
e
e
e
e a
compl`tement libre par lutilisateur ?
e
Imaginons maintenant un programme qui calcule des valeurs enti`res sur
e
4 bits ` dlivrer ` lutilisateur, cest-`-dire ` acher sur lacheur sept sega e
a
a
a
ments. On peut supposer que ces valeurs sont stockes dans la mmoire associe
e
e
e
au processeur. Un transcodeur fabrique les signaux permettant dallumer les
bons segments de lacheur an de donner la reprsentation en hexadcimal
e
e
de lentier en question. L` aussi le mme type de questions se pose : coma
e
ment la mmoire est-elle relie ` ce transcodeur ? A quel rythme est-il possible
e
e a
(souhaitable) denvoyer les informations ?
Que ce soit pour une entre ou une sortie, on voit quil y a deux aspects `
e
a
prendre en compte : la ralisation de la connexion physique (matrielle) entre
e
e
le priphrique et lensemble processeur/mmoire et la gestion de la synchronie
e
e
sation des changes. Il est ainsi ncessaire dintercaler entre tout priphrique
e
e
e
e
et lensemble processeur/mmoire un circuit de commande que lon appelle
e
circuit dentres/sorties ou coupleur de priphrique.
e
e
e
Dans la suite du chapitre, nous commenons par prciser les aspects lis `
c
e
e a
la synchronisation des changes, puis nous prsentons les aspects matriels de
e
e
e
connexion (quels ls et circuits faut-il ajouter et o` ?). Enn nous montrons
u
comment programmer une entre ou une sortie, cest-`-dire comment utiliser
e
a
les circuits dentres/sorties depuis un programme en langage dassemblage.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Synchronisation entre le processeur et un priphrique


e
e

Synchronisation entre le processeur et un


priphrique
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

2.

409

Les probl`mes qui se posent ici sont inhrents ` toute communication :


e
e
a
perte dune partie de linformation qui doit tre change ; rptition dune
e
e
e
e e
mme information dj` change (Cf. Chapitre 6). Avant dtudier prcisment
e
eae
e
e
e e
le type de protocole quil est ncessaire dappliquer, nous allons discuter du
e
niveau auquel cette synchronisation intervient.

2.1

A quel niveau se passe la synchronisation ?

Les changes entre lensemble processeur/mmoire et le monde extrieur


e
e
e
peuvent tre dcomposs en deux niveaux : changes entre processeur/mmoire
e
e
e
e
e
et priphrique et changes entre le priphrique et le monde extrieur.
e
e
e
e
e
e
Lors de la lecture dun caract`re, lensemble processeur/mmoire dialogue
e
e
avec le priphrique clavier mais au-del` du clavier il y a un utilisateur. Cet
e
e
a
utilisateur tape des caract`res ` la vitesse qui lui convient, cest-`-dire de faon
e a
a
c
compl`tement arbitraire et non contrlable. Le syst`me informatique doit grer
e
o
e
e
la synchronisation entre le processeur et le priphrique car on ne peut rien
e
e
contrler entre lutilisateur et le priphrique.
o
e
e
Envisageons maintenant un cas o` la vitesse impose nest pas celle dun
u
e
utilisateur mais celle dun organe mcanique. Par exemple, prenons le cas dune
e
imprimante. L`, on conna la vitesse ` laquelle limprimante peut acher des
a
t
a
caract`res et donc assurer une synchronisation de faon ` ne pas en perdre. Il
e
c a
peut toutefois survenir des probl`mes ` des instants non prvisibles comme par
e
a
e
exemple labsence de papier : le probl`me est en gnral trait au niveau du
e
e e
e
syst`me qui g`re une liste des chiers en attente dimpression et qui nenvoie
e
e
une information ` limprimante que si celle-ci peut la traiter.
a
Dans le cas gnral, il convient donc de tenir compte des erreurs et anomae e
lies inhrentes ` toute interaction avec lenvironnement extrieur.
e
a
e
Nous avons vu au chapitre 15 comment grer les changes entre la mmoire
e
e
e
et le processeur. La connexion dorganes priphriques ne peut pas sen inspirer
e
e
directement ; en eet, les entres/sorties prsentent des particularits qui les
e
e
e
distinguent des acc`s mmoire :
e
e
la vitesse des processeurs et des mmoires ` semiconducteurs est suprieure
e
a
e
de plusieurs ordres de grandeur ` celle des priphriques mettant en jeu des
a
e
e
dispositifs mcaniques. A titre dillustration une imprimante ` impact (`
e
a
a
marguerite, matricielle ` aiguille, etc.) atteignant la dizaine de milliers de
a
caract`res imprims ` la seconde reprsenterait dj` une prouesse mcanique
e
e a
e
ea
e
alors que tous les processeurs rcents dpassent la centaine de millions dinse
e
tructions par seconde.
le processeur ne peut dcider seul des instants auxquels les changes see
e
ront eectus : il ne peut par exemple deviner ` quel moment lutilisateur
e
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

410

Circuits dentres/sorties
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

va appuyer sur une touche du clavier. Au mieux, il est possible de lisser


les probl`mes en imaginant des mcanismes de mmorisation permettant
e
e
e
daccumuler les caract`res frapps au clavier en attendant que le processeur
e
e
les traite. Dans la pratique, il ny a pas rellement de probl`me car la vie
e
tesse des processeurs est nettement suprieure au temps de raction dun
e
e
utilisateur.

2.2

Synchronisation par poigne de mains


e

Une entre (ou une sortie) met en jeu deux entits : un metteur et un
e
e
e
rcepteur. Dans le cas dune entre lmetteur est le priphrique et le rcepteur
e
e e
e
e
e
est le processeur. Dans le cas dune sortie cest linverse. Il faut mettre en
oeuvre un protocole dchange qui permette au rcepteur de dtecter larrive
e
e
e
e
des informations ` consommer et assurer un contrle de ux, autrement dit
a
o
viter que lmetteur ne soumette des informations plus vite que le rcepteur ne
e
e
e
peut les traiter ou que le rcepteur ne traite plusieurs fois la mme information.
e
e
Par exemple, considrons la sortie de caract`res sur une imprimante ; le
e
e
protocole dchange doit assurer que le processeur nmettra pas un nouveau
e
e
caract`re si le prcdent na pas encore t imprim et que limprimante nime
e e
ee
e
prime pas plusieurs fois le mme caract`re.
e
e
Dans le cas gnral, lchange entre un processeur et un priphrique peut
e e
e
e
e
tre rgi par le protocole de dialogue dit poigne de mains prsent au chae
e
e
e
e
pitre 6.
La mise en oeuvre de ce protocole rclame la gestion de signaux de synchroe
nisation disant si linformation ` changer est parvenue ou non au rcepteur
ae
e
et si le rcepteur a trait ou non linformation quil a reue.
e
e
c
Dans un programme dentre ou de sortie la valeur de ces signaux de syne
chronisation est teste et tant que le signal attendu na pas la bonne valeur il
e
faut le tester ` nouveau jusqu` ce quil devienne correct. On parle dattente
a
a
active car le processeur qui excute ce test ne peut rien faire dautre pendant
e
ce temps-l`, il est mobilis pendant toute la dure du transfert.
a
e
e
Nous verrons au chapitre 24, paragraphe 3. que dautres solutions (utilisant
la notion dinterruption) plus ecaces et plus ralistes sont en fait mises en
e
oeuvre dans les syst`mes multitches.
e
a

3.

Connexion dorganes priphriques


e
e

3.1

Notion de coupleur

Le circuit ncessaire ` la communication sappelle coupleur. Le procese


a
seur peroit le syst`me dentres-sorties comme un ensemble demplacements
c
e
e
mmoire relis au monde extrieur. Lusage a consacr le terme de registres du
e
e
e
e
coupleur pour ces emplacements.
Cela signie que certaines adresses de la mmoire sont rserves ` lusage
e
e
e a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Connexion dorganes priphriques


e
e

411

l/e
Dcodage
e
dadresses

slection de dirents
e
e
bo
tiers mmoire
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Acc`sMem
e

Slection Coupleur
e

Coupleur

Processeur

bus adresses

Priphrique
e
e

bus donnes
e

ls spcialiss
e
e

emplacements mmoire
e
dits registres du coupleur

Fig. 16.2 Connexion dun processeur et dun priphrique via un coupleur


e
e

des entres/sorties. Cest le dcodage dadresses qui prend en compte cette


e
e
nouvelle contrainte.
Les donnes transitant par le bus donnes (Cf. Chapitres 9 et 15) il faut
e
e
quune connexion physique soit ralise entre le priphrique et le bus donnes
e e
e
e
e
via le coupleur. La gure 16.2 donne une premi`re ide des lments intervee
e
ee
nants dans cette mise en oeuvre.
Pour raliser une entre il faut que des ls provenant de lunit priphrique
e
e
e e
e
soient connects au bus de donnes via des portes trois tats ou des lments
e
e
e
ee
de mmorisation. Pour raliser une sortie il faut connecter le bus de donnes
e
e
e
au priphrique via des lments de mmorisation.
e
e
ee
e
Le montage nest pas ncessairement symtrique pour les entres et les
e
e
e
sorties. En eet, lors dune sortie, la valeur mise par le processeur appara
e
t
fugitivement sur le bus donnes pendant le cycle dcriture et doit donc tre
e
e
e
mmorise. Par contre, en entre, il peut sure dchantillonner la valeur au
e
e
e
e
moment de la lecture sans besoin de mmorisation. En eet, il est raisonnable
e
de faire lhypoth`se quen entre les valeurs sont stables : le priphrique est
e
e
e
e
suppos maintenir les donnes pendant lintervalle de temps spci par le
e
e
e e
protocole de synchronisation. Nous nous plaons dans ce cas de gure pour la
c
suite du chapitre.

3.2

Connexion de priphriques ` des lments de


e
e
a
ee
mmorisation
e

Pour dcrire les connexions physiques des ls, nous commenons par rape
c
peler comment une cellule mmoire est connecte au bus donnes. Nous
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

412

Circuits dentres/sorties
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

e
considrons une cellule de 1 bit (reprsent par un verrou) connecte au i`me l
e
e
e
e
du bus de donnes Di. Le schma 16.3 montre la structure du circuit dchange
e
e
e
dinformation entre ce bit et le processeur. Acc`sMem et l/e sont les signaux
e
de slection et de lecture/criture de la mmoire.
e
e
e
Nous voulons maintenant faire communiquer lensemble processeur/mmoire avec le monde extrieur. Considrons, par exemple, un
e
e
e
monde extrieur tr`s simple dans lequel le processeur doit pouvoir envoyer
e
e
(crire) une valeur sur des lampes, ou bien rcuprer (lire) une valeur sur des
e
e
e
interrupteurs.
Reprenons le schma 16.3 et supprimons la connexion entre la sortie Q du
e
verrou et la porte 3 tats donnant lacc`s au l Di du bus donnes. Le montage
e
e
e
(Cf. Figure 16.4) cre un port dentre et un port de sortie relis sur lexemple
e
e
e
respectivement ` un interrupteur et une lampe.
a
Le montage dcrit permet la cration dune entre lmentaire et dune
e
e
e ee
sortie lmentaire. Le port dentre et celui de sortie peuvent occuper la mme
ee
e
e
adresse, comme ici, ou des adresses direntes.
e
Lcriture sur un port de sortie ou la lecture sur un port dentre mettent en
e
e
jeu un mcanisme de slection dadresse analogue ` celui que nous avons dcrit
e
e
a
e
au chapitre 15. Pour une criture (respectivement une lecture) sur un port de
e
sortie (respectivement dentre), le dcodeur dadresses reoit une demande
e
e
c
dacc`s ` la mmoire (Acc`sMem=1) accompagne dune adresse correspondant
e a
e
e
e
a
` lun des circuits consacrs aux entres/sorties. Il active alors le signal de
e
e
slection de ce circuit : SelCoupleur.
e
Le coupleur doit lui-mme comporter un dcodeur dadresses. Il fabrique les
e
e
signaux de commande de chargement des bascules associes aux ports de sortie
e
et les signaux de commande des portes 3 tats associes aux ports dentre, `
e
e
e a
e
partir de SelCoupleur, du signal l/e mis par le processeur et de ladresse. Sur
la gure 16.4, une seule cellule mmoire est reprsente ; nous navons donc pas
e
e
e
tenu compte de ladresse. La gure 16.5 dcrit lorganisation dun coupleur `
e
a
deux ports dentre et deux ports de sortie. Nous pouvons y observer la place
e
des dcodeurs.
e
Dans la suite de ce chapitre, nous ne reprsenterons plus les dirents
e
e
dcodeurs mais dessinerons le processeur, le dcodeur dadresses et le dcodeur
e
e
e
du coupleur comme un ensemble.

4.

Programmation dune sortie

4.1

Interface simplie
e

Nous traitons lexemple de limpression dun texte (suite de caract`res) sur


e
une imprimante. Le coupleur permet de traiter trois informations :
une donne sur 8 bits, le caract`re, qui est une sortie pour le processeur et
e
e
une entre pour limprimante,
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

413

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

4. Programmation dune sortie

amplicateur
3 tats
e

Di

1 bit de
bus donnes
e

D Q
En

Acc`sMem
e
l/e

Fig. 16.3 Echange entre le processeur et la mmoire sur un bit : lorsque le signal
e
e
e
Acc`sMem vaut 1 et le signal l/e vaut 0 la bascule mmorise la valeur prsente
e
sur le bus et lorsque Acc`sMem et l/e valent tous deux 1 la valeur mmorise
e
e
e
dans la bascule est prsente sur le bus.
e

+5V

interrupteur

Di

D Q
En
Ecr

Lec

SelCoupleur
l/e

lampe

Fig. 16.4 Echange entre le processeur et lextrieur sur un bit : le signal lectrique
e
e
command par linterrupteur appara sur le l Di du bus donnes lors dun
e
t
e
cycle de lecture (SelCoupleur=1 et l/e=1). Si linterrupteur est ferm le
e
processeur lira un 0, sil est ouvert il lira un 1. Par ailleurs la valeur mise
e
sur le l Di par le processeur lors dune criture (SelCoupleur=1 et l/e=0)
e
est mmorise par le verrou ; si cette valeur est 1 alors la lampe sallume, si
e
e
cest 0 la lampe steint.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Circuits dentres/sorties
e

D Q
En

PROCESSEUR

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

...
...

Di

Bus donnes
e

D Q
En

EcrS1
EcrS0
LecE1
LecE0

A0

MONDE EXTERIEUR

414

Dcodeur du coupleur
e

Bus adresses

Dcodeur
e
dadresses

SelCoupleur
slection de dirents
e
e
...
bo
tiers mmoire
e

Acc`sMem
e

l/e

Fig. 16.5 Coupleur ` deux ports dentres et deux ports de sortie : le dcodeur
a
e
e
dadresses active le signal SelCoupleur lorsquil reconna ladresse qui lui
t
est fournie comme une adresse du circuit dentres/sorties. En supposant
e
que le bit dadresse A0 permet de faire la distinction entre les deux mots
du coupleur, le dcodeur du coupleur fabrique les signaux de commande des
e
2 ports de sortie EcrS0 et EcrS1 et des 2 ports dentre LecE0 et LecE1, `
e
a
partie des signaux SelCoupleur, l/e et A0.

un boolen processeur prt qui signie quun nouveau caract`re est dispoe
e
e
nible et doit tre imprim,
e
e
un boolen imprimante prte, qui signie que limprimante est prte ` traiter
e
e
e a
un caract`re. Apr`s une impression il signie que le caract`re prcdent a
e
e
e
e e
t imprim.
ee
e
Le coupleur est compos dun registre de donnes RegD et dun registre de
e
e
commande RegC auxquels on acc`de en criture, et dun registre dtat RegE
e
e
e
auquel on acc`de en lecture. Vus du processeur RegD est ` ladresse RD et
e
a
contient la donne, RegC est ` ladresse RC et contient un seul bit signicatif :
e
a
processeur prt ; RegE est ` ladresse RE et contient un seul bit signicatif
e
a
imprimante prte.
e
Posons comme convention que le signal processeur prt est actif lorque le
e
registre RegC vaut 1 et que le signal imprimante prte est actif lorsque le signal
e
RegE vaut 1.
La gure 16.6 dcrit cette organisation matrielle et la gure 16.7 donne les
e
e
programmes dinitialisation du coupleur et dimpression dun caract`re stock
e
e
a
` ladresse car. Ils sont crits en langage dassemblage 68000 (Cf. Chapitre 12
e
pour un exemple de syntaxe de ce langage dassemblage). Lexcution de ces
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Programmation dune sortie

415

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

programmes met en oeuvre lalgorithme de lmetteur (voir le protocole poigne


e
e
de mains dans le chapitre 6).
La boucle dattente sur ltiquette att-pret, correspond ` ltat o` le procese
a e
u
seur attend que le rcepteur soit libre ; lorsque cest le cas, le processeur peut
e
lui envoyer une valeur. La boucle dattente sur ltiquette att-traite correspond
e
a
` lintervalle de temps pendant lequel le processeur attend que le rcepteur ait
e
trait la donne envoye. Si le processeur nattend pas, il risque dcraser le cae
e
e
e
ract`re envoy. La remise ` zro du registre RegC correspond ` la dsactivation
e
e
a e
a
e
du signal processeur pr^t.
e

4.2

Gestion derreur

Dans ce paragraphe nous examinons comment prendre en compte les erreurs


provenant dun priphrique. Nous poursuivons avec lexemple de limprimante
e
e
en considrant le probl`me de labsence de papier : limprimante ne doit plus
e
e
recevoir de caract`res.
e
Pour grer le probl`me, il faut que le processeur puisse en tre inform ; pour
e
e
e
e
cela le registre dtat RegE va tre complt par un nouveau signal erreur papier.
e
e
ee
Pour xer les ides nous supposons que ce signal est connect au bit 1 du bus
e
e
donnes (Cf. Figure 16.8). Le programme dimpression dun caract`re, modi
e
e
e
pour prendre en compte la gestion de lerreur, est donn dans la gure 16.9.
e
En gnral, les informations contenues dans le registre dtat dun coupleur
e e
e
permettent deectuer les tests lis aux aspects de synchronisation de lchange
e
e
et de grer les dirents types derreurs lis au fonctionnement du priphrique
e
e
e
e
e
associ.
e

4.3

Interface optimise
e

Nous tudions dans ce paragraphe une version optimise du programme de


e
e
sortie dun caract`re sur une imprimante. On va chercher ` rduire le nombre
e
a e
dacc`s mmoire faits par le processeur pour raliser le transfert dune donne.
e e
e
e
Il faudra ajouter un peu de matriel mais celui-ci nest pas vraiment coteux.
e
u
Nous repartons de la version de base ne traitant pas derreurs.
Tout dabord, remarquons que lors dune sortie, lactivation de processeur
prt va toujours de pair avec lcriture dans le registre de donnes. De plus,
e
e
e
hors initialisation, sa dsactivation suit toujours le front descendant du signal
e
imprimante prte.
e
Le registre de commande RegC peut tre remplac par une bascule RS mise
e
e
a
` un par le signal dcriture dans le registre de donnes et remise ` zro par
e
e
a e
e
e
a
le signal imprimante prte. Lors de linitialisation, la bascule doit tre mise `
0. La bascule remplace le registre de commande et sa sortie se substitue au
signal processeur prt (Cf. Figure 16.10).
e
Dautre part, pour pouvoir soumettre un nouveau caract`re, il faut ` la
e
a
fois que limprimante soit prte (imprimante prte actif) et que le prcdent
e
e
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Circuits dentres/sorties
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

416

Processeur
et
dcodage
e

bus donnes
e
D7

RegD

D0

ECRS0

criture donne
e
e

Imprimante

RegC

processeur
prt
e

e
ECRS1 criture commande

RegE

LECE1

imprimante
prte
e

lecture tat
e

Rcepteur
e

Emetteur

Fig. 16.6 Exemple de coupleur dimprimante. Lmetteur est constitu du processeur,


e
e
du coupleur et des dcodeurs, le rcepteur est limprimante. Cette organisae
e
tion ncessite 2 ports de sortie (S0 pour les donnes, S1 pour la commande)
e
e
et un port dentre pour ltat (E1).
e
e
IMP-PRETE = 1
PROC-PRET = 1
NON-PROC-PRET = 0
.data
car :
.ascii A
! code du caract`re A
e
.text
Init :
moveq NON-PROC-PRET, RC !le processeur na rien ` mettre
a e
ImpCar : ! attendre que le priphrique soit pr^t
e
e
e
att-pret :move.b RE, D1
! D1 est un reg. donne libre
e
andi.b IMP-PRETE, D1
beq att-pret
! limprimante nest pas pr^te
e
! priphrique pr^t : envoyer la valeur ` imprimer
e
e
e
a
move.b car, RD
moveq PROC-PRET, RC
att-trt : move.b RE, D1
andi.b IMP-PRETE, D1
bne att-trt
! le priphrique traite
e
e
! le caract`re a t imprim
e
e e
e
moveq NON-PROC-PRET, RC
rts
Fig. 16.7 Programme de sortie simple

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Programmation dune sortie

bus donnes
e
D7
D1

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Processeur
et
dcodage
e

417

RegD

D0
e
e
ECRS0 criture donne

Imprimante

RegC
e
ECRS1 criture commande

processeur
prt
e

RegE

imprimante
prte
e

erreur papier

LECE1

lecture tat
e

Fig. 16.8 Coupleur dimprimante avec gestion de lerreur : absence de papier


IMP-PRETE = 1 ; PROC-PRET = 1
NON-PROC-PRET = 0
ERREUR = 2 ! bit 1 du registre RE : 21
.data
car :
.ascii A
.text
ImpCar :
! A la fin du traitement D1 contient 0 si tout
! sest bien pass et 1 sil y a eu une erreur
e
att-pret : move.b RE, D1
andi.b ERREUR, D1
bne pb-papier
! plus de papier
move.b RE, D1
andi.b IMP-PRETE, D1
beq att-pret
move.b car, RD
moveq PROC-PRET, RC
att-traite :move.b RE, D1
andi.b ERREUR, D1
bne pb-papier
move.b RE, D1
andi.b IMP-PRETE, D1
bne att-traite
OK :
moveq 0, D1
bra fin
pb-papier : moveq 1, D1
fin :
moveq NON-PROC-PRET, RC
rts
Fig. 16.9 Programme de sortie grant un type derreur
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

418

Circuits dentres/sorties
e

e
Processeur bus donnes RegD
et
dcodage
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Imprimante

e
e
ECRS0 criture donne

processeur prt
e

RegE transfert
possible

LECE1

imprimante prte
e

lecture tat
e

Fig. 16.10 Exemple de coupleur dimprimante optimis


e

caract`re ait t rcupr par limprimante, ce qui est dtectable par le fait que
e
ee e
ee
e
processeur prt soit inactif. Si cette nouvelle double condition (transfert possible
e
sur la gure 16.10) est teste ` la place de la simple condition imprimante prte,
e a
e
la boucle dattente qui suit lmission dun caract`re peut tre supprime.
e
e
e
e
Le processeur na plus alors qu` tester transfert possible et crire le caa
e
ract`re ` transfrer dans le registre de donnes. Le signal processeur prt est
e a
e
e
e
automatiquement mis ` jour par la bascule. La prsence de la bascule RS
a
e
remplace les acc`s au registre de commande.
e
La gure 16.10 dcrit le matriel ncessaire ` cette nouvelle interface et
e
e
e
a
le programme dimpression dun caract`re sur limprimante dans ce nouveau
e
contexte est dcrit dans la gure 16.11 .
e
Remarque : Nous verrons, au paragraphe 6. de ce chapitre et au paragraphe 3. du chapitre 24, deux mthodes pour liminer lattente active sur
e
e
att-pret excute par le processeur.
e e

5.

Programmation dune entre


e

5.1

Interface simplie
e

Nous considrons lexemple de la lecture dun caract`re au clavier.


e
e
Le coupleur du clavier comporte trois informations : la donne (adresse
e
RD) et le boolen clavier prt (adresse RE) accessibles en lecture, et le boolen
e
e
e
processeur prt (adresse RC) accessible en criture. clavier prt signie quun
e
e
e
caract`re a t frapp sur le clavier. processeur prt signie que le processeur
e
ee
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

6. Optimisation des entres/sorties groupes


e
e

419

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

TRANSFERT-POSSIBLE = 1
.data
car :
.ascii A
.text
ImpCar :
att-pret :move.b RE, D1
andi.b TRANSFERT-POSSIBLE, D1
beq att-pret
move.b car, RD
! la bascule RS passe a 1, limprimante sait quelle
! doit prendre un caractere
rts
Fig. 16.11 Programme de sortie optimis
e

est prt ` traiter un caract`re. Apr`s une lecture antrieure cela signie que le
e a
e
e
e
caract`re prcdemment envoy a t rcupr.
e
e e
e ee e
ee
Les gures 16.12 et 16.13 dcrivent respectivement lorganisation matrielle
e
e
et les programmes dinitialisation du coupleur et de lecture dun caract`re.
e

5.2

Interface optimise
e

Lide consiste, comme dans le cas de la sortie, ` remplacer le registre de


e
a
commande par une bascule RS (Cf. Figure 16.14) et ` supprimer la boucle
a
dattente apr`s la rcupration du caract`re lu. Pour cela, constatons que la
e
e
e
e
lecture du caract`re envoy par le clavier doit faire passer le signal processeur
e
e
prt ` zro (entre R de la bascule). Lorsque le signal clavier prt devient inactif,
e a e
e
e
la bascule est alors remise ` 1. La bascule doit tre initialise ` 1. Dautre part,
a
e
e a
pour pouvoir lire un nouveau caract`re, il faut que le clavier en ait soumis un
e
(clavier prt actif) et que le processeur ne lait pas dj` lu (processeur prt
e
ea
e
actif) ; cette double condition constitue le nouveau boolen : transfert possible.
e
Les gures 16.14 et 16.15 dcrivent respectivement le matriel ncessaire et
e
e
e
le programme optimis de lecture dun carat`re au clavier.
e
e

6.

Optimisation des entres/sorties groupes


e
e

Nous nous intressons maintenant ` une situation tr`s classique consistant


e
a
e
a
` encha
ner plusieurs entres/sorties.
e
Par exemple, pour eectuer la sortie des lments dun tableau de n caee
ract`res (zone de mmoire de n octets conscutifs), on peut insrer le proe
e
e
e
gramme de sortie dun caract`re dans une boucle de parcours du tableau.
e
Cette solution nest pas tr`s ecace car pour chaque caract`re, une attente va
e
e
avoir lieu.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Circuits dentres/sorties
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

420

Processeur
et
dcodage
e
LECE0

bus donnes
e

RegD

lecture donne
e

Clavier

RegC

e
ECRS1 criture commande

RegE

LECE1

processeur
prt
e

clavier prt
e

lecture tat
e

Emetteur

Rcepteur
e

Fig. 16.12 Exemple de coupleur de clavier. Lmetteur est le clavier, le rcepteur est
e
e
constitu du processeur, du coupleur et des dcodeurs. Cette organisation
e
e
ncessite 2 ports dentres (E0 pour la donne, E1 pour ltat) et un port
e
e
e
e
de sortie pour la commande (S1).
CLAVIER-PRET = 1
PROC-PRET = 1
NON-PROC-PRET = 0
.data
! un octet initialis ` 0 pour stocker le caract`re lu
e a
e
car :
.byte 0
.text
Init :
! le processeur est pr^t ` recevoir
e a
moveq PROC-PRET, RC
LireCar :
att-clavier :ove.b RE, D1 ! attendre priphrique pr^t
m
e
e
e
andi.b CLAVIER-PRET, D1
beq att-clavier
! le clavier na rien envoy
e
! le priphrique est pr^t : rcuprer le caract`re
e
e
e
e
e
e
move.b RD, car
moveq NON-PROC-PRET, RC
att-traite :move.b RE, D1 ! attendre le traitement
andi.b CLAVIER-PRET, D1
bne att-traite
! le caractere a t lu
e e
moveq PROC-PRET, RC
rts
Fig. 16.13 Programme dentre simple
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

421

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

6. Optimisation des entres/sorties groupes


e
e

Processeur
et
dcodage
e

bus donnes
e

RegD

lecture donne
e

ECRS0

Clavier

R processeur prt
e
S
clavier prt
e

RegE

LECE1

transfert
possible

lecture tat
e

Fig. 16.14 Exemple de coupleur de clavier optimis


e

TRANSFERT-POSSIBLE = 1
.data
car :
.byte 0
.text
LireCar :
att-clavier :ove.b RE, D1
m
andi.b TRANSFERT-POSSIBLE, D1
beq att-clavier
move.b RD, car
rts
Fig. 16.15 Programme dentre optimis
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

422

Circuits dentres/sorties
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Il est possible de dcharger le processeur dune partie de ce travail en ajoue


tant un circuit qui sen chargera. Le circuit eectuant les entres/sorties est
e
un automate cbl dont la ralisation est peu coteuse : un registre contea e
e
u
nant une adresse, un registre contenant le nombre dlments ` transfrer, un
ee
a
e
incrmenteur, un dcrmenteur et quelques bascules pour lautomate de come
e e
mande.
Cette technique est appele acc`s direct ` la mmoire (en anglais Direct
e
e
a
e
Memory Access, DMA), linterface accdant directement ` la mmoire.
e
a
e
Dans la suite, nous prsentons les aspects dorganisation matrielle dun
e
e
syst`me comportant un processeur, de la mmoire, un circuit dentres/sorties
e
e
e
et un contrleur dacc`s direct ` la mmoire ; puis nous dcrivons le
o
e
a
e
e
droulement dune sortie. Enn nous voquons lvolution des syst`mes
e
e
e
e
dentres/sorties.
e

6.1

Acc`s direct ` la mmoire et partage de bus


e
a
e

Cette technique permet de raliser par matriel le transfert impliqu par


e
e
e
une entre ou une sortie. De plus, elle lib`re le processeur pendant lattente de
e
e
la disponibilit du priphrique. Ainsi, le processeur peut rcuprer, pour eece
e
e
e
e
tuer des calculs, le temps quil utilisait prcdemment ` excuter une attente
e e
a e
active.
La ralisation de lacc`s direct ` la mmoire par un contrleur indpendant
e
e
a
e
o
e
du processeur pose un certain nombre de probl`mes que nous examinons cie
dessous. La gure 16.16 dcrit lorganisation du dispositif.
e
Il faut grer lacc`s ` la mmoire (adresses, donnes, signaux dacc`s
e
e a
e
e
e
mmoire et lecture/criture) ` la fois par le processeur et par le contrleur
e
e
a
o
dacc`s direct ` la mmoire (CDMA). Le principe est de connecter alternae
a
e
tivement les bus au processeur et au CDMA, via des amplicateurs ` sortie
a
trois tats. Le CDMA acc`de ` la mmoire en la pilotant directement ` la
e
e a
e
a
place du processeur, temporairement dconnect du bus (Cf. Paragraphe 1.3
e
e
du chapitre 15 pour la ralisation matrielle de cette dconnexion). La gestion
e
e
e
du bus adresses demande deux signaux de dialogue entre le processeur et le
CDMA : une demande de libration du bus mise par le CDMA (demande bus)
e
e
et lautorisation correspondante mise par le processeur (lib`re bus).
e
e
Le processeur doit pouvoir autoriser ou non le coupleur ` mettre des
a e
requtes de transfert en direction du CDMA. Pour cela, on utilise un boolen
e
e
autorisation requte dma dans le registre de commande du coupleur. Ce boolen
e
e
est mis ` jour par le processeur lorsquil initie un transfert.
a
Le coupleur doit pouvoir signaler au CDMA quil faut faire un transfert
lorsque le priphrique est disponible. Cette information est matrialise par
e
e
e
e
le signal requte transfert qui est un et logique entre tranfert possible (Cf. Pae
ragraphe 4.3 et gure 16.10) et autorisation requte dma.
e
Le CDMA doit pouvoir accder directement ` la donne du coupleur sans
e
a
e
passer par le dcodage dadresses standard. De faon plus prcise, le CDMA
e
c
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

423

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

6. Optimisation des entres/sorties groupes


e
e

CDMA

requte transfert
e

COUPLEUR
transfert possible
autorisation requte dma
e

acq transfert

ECRS0

adresse
taille

criture donne
e
e
RegD

slection
e
coupleur

lib`re bus
e

demande bus

slection
e
CDMA

Dcodeur dadresse
e

Adresses

PROCESSEUR

Donnes
e

slection
e
mmoire
e

MEMOIRE

Fig. 16.16 Acc`s ` la mmoire avec DMA : on observe les 5 composants : processeur,
e a
e
contrleur de DMA, coupleur, mmoire et dispositif de dcodage dadresse
o
e
e
qui slectionne les bo
e
tiers. Le CDMA comporte des registres dcrivant la
e
zone de mmoire ` transfrer (adresse et taille) et un registre index (i). Via
e
a
e
deux amplicateurs 3 tats, le bus dadresses est pilot soit par le processeur,
e
e
soit par le CDMA. Le bus dadresses est une entre pour le CDMA, le
e
coupleur et la mmoire : il sert ` slectionner le registre du CDMA ou du
e
a e
coupleur ou le mot mmoire lors dun acc`s initi par le processeur. Le bus
e
e
e
dadresses est une sortie pour les deux ma
tres : le processeur et le CDMA ;
il sert alors ` slectionner le registre du coupleur ou le mot mmoire.
a e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

424

Circuits dentres/sorties
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

soit pouvoir slectionner simultanment la mmoire en lecture et le coupleur


e
e
e
en criture. Ceci suppose lajout dun signal acq transfert. La slection eective
e
e
du registre de donnes du coupleur est alors le ou logique entre acq transfert et
e
le signal de slection normal (ECRS0 sur la gure 16.10).
e
Remarque : Dans le cas dune entre, le CDMA acc`dera simultanment
e
e
e
au coupleur en lecture et ` la mmoire en criture.
a
e
e

6.2

Droulement dune sortie avec acc`s direct


e
e
` la mmoire
a
e

Nous pouvons maintenant dcrire plus prcisment le droulement dune


e
e e
e
sortie avec CDMA. Nous considrons lexemple de la sortie dun tableau tab
e
de n octets :
1. Le processeur crit ladresse tab et la taille n du tableau ` transfrer dans
e
a
e
les registres adresse et taille du CDMA. Ceci provoque linitialisation
du registre i (compteur doctets transfrs) du CDMA.
ee
2. Le processeur autorise le coupleur ` mettre une requte lorsquil est
a e
e
prt : il crit dans le registre de commande du coupleur pour mettre le
e
e
boolen autorisation requte dma ` vrai.
e
e
a
3. Le processeur vaque ` dautres occupations.
a

4. Lorsque le priphrique a termin le travail quil eectuait


e
e
e
prcdemment, il devient prt et le coupleur active le signal requte
e e
e
e
transfert.
5. Le CDMA active le signal demande bus.

6. Le processeur termine lventuel acc`s mmoire en cours et active lib`re


e
e
e
e
bus pour indiquer que le bus est libre. Le processeur est alors dconnect
e
e
du bus.
7. Le CDMA met ladresse de loctet courant, acc`de ` la mmoire en
e
e a
e
lecture et active simultanment acq transfert pour crire la donne dans
e
e
e
le coupleur. Pendant ce temps, lexcution de linstruction courante par
e
le processeur peut se poursuivre jusqu` ce quun acc`s mmoire soit
a
e
e
ncessaire.
e

8. Le priphrique reoit le caract`re ` traiter et dsactive requte transfert.


e
e
c
e a
e
e
Le CDMA dsactive ` son tour demande bus et incrmente le registre i.
e
a
e
Le processeur se connecte ` nouveau au bus en dsactivant lib`re bus et
a
e
e
poursuit son travail jusquau prochain transfert de caract`re.
e

La politique de partage des bus mmoire peut tre plus ou moins sophise
e
tique. Elle peut tre rudimentaire et pr-tablie (par exemple acc`s par le
e
e
ee
e
processeur durant la demi-priode haute dune horloge, et par le CDMA pene
dant lautre demi-priode). Elle peut tre cone ` un ma privilgi (tel
e
e
e a
tre
e e
que le processeur), qui dcide seul des instants auxquels il va cder les bus.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

7. Exercices

425

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Les bus peuvent tre partags entre un nombre quelconque de ma


e
e
tres, selon
des stratgies dallocation labores telles que des priorits xes ou tournantes.
e
e
e
e
Lattribution des bus est alors gre par un circuit darbitrage, trop sophistiqu
ee
e
pour tre dtaill dans cet ouvrage.
e
e
e

6.3

Canaux et processeurs dentres/sorties


e

Ltape suivante est celle du canal dentres/sorties qui sest surtout


e
e
dvelopp dans les grands syst`mes de gestion transactionnelle connects `
e
e
e
e a
de nombreux disques et terminaux.
Il sagit dune unit dacc`s direct ` la mmoire capable dencha
e
e
a
e
ner automatiquement des transferts de blocs dont les param`tres (adresse et taille
e
du tableau, priphrique et sens du transfert) sont stocks en mmoire par
e
e
e
e
le processeur dune part, et dentrelacer des entres et sorties avec plusieurs
e
priphriques dautre part. La suite dordres dentres/sorties que le canal lit
e
e
e
en mmoire et excute est quelquefois appele programme canal.
e
e
e
Le canal peut tre muni de la possibilit deectuer des itrations et defe
e
e
fectuer ou non certaines entres/sorties selon certaines conditions. Cette exe
tension du canal aboutit ` la notion de processeur dentres/sorties dot de
a
e
e
tout un jeu dinstructions de comparaison et de branchement en plus des instructions dentre et de sortie de blocs de caract`res. Citons ` titre dexemple
e
e
a
le processeur 8089 dans la famille 8086 dintel.
A partir de l`, lvolution du syst`me dentres/sorties peut emprunter plua e
e
e
sieurs directions. On peut disposer de (co)processeurs dentres/sorties ddis
e
e e
chacun ` un type de priphrique (processeur graphique, processeur de signaux
a
e
e
sonores, etc.). On peut choisir de dupliquer le processeur de calcul, lun des
deux processeurs se substituant au processeur dentres/sorties. On obtient
e
alors un multiprocesseur ` mmoire commune.
a e
Actuellement, la plupart des terminaux graphiques sont des priphriques
e
e
dits intelligents qui sont dots dune certaine puissance de traitement, en pare
ticulier pour les traitements graphiques.

7.

Exercices

E16.1 : Circuit dentres/sorties


e
Rcuprer la documentation dun circuit dentres/sorties (par exemple RS232,
e
e
e
PIA). Reprer les registres du coupleur. Retrouver limplantation des signaux
e
voqus dans ce chapitre ; en gnral, ils sont reprsents par certains bits des
e
e
e e
e
e
registres du coupleur. Etudier les types de probl`mes grs par le circuit. Ecrire
e
ee
les programmes dentres/sorties.
e
E16.2 : Contrleur dacc`s direct ` la mmoire
o
e
a
e
Etudier la structure interne dun circuit contrleur de DMA.
o

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

426
Circuits dentres/sorties
e

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tur
F.
bla es L
P. Lagn rd,
ogi
Sic ier J.- cie
ard , F C.
l les
, P . M Fer
et
ara na
h.
Ma
Wa ni nde
e
nch z, trie
il le
l l es
i,

Chapitre 17

Pilotes de priphriques
e
e

En introduction de la partie V nous avons structur le syst`me dexploitae


e
tion en 2 parties :
Une partie basse fortement dpendante des caractristiques du matriel et
e
e
e
fournissant des fonctionnalits tr`s proches de celui-ci mais sous une forme
e e
normalise. Il sagit des biblioth`ques de gestion des priphriques, appeles
e
e
e
e
e
pilotes de priphriques. Cest lobjet de ce chapitre.
e
e
Une partie haute utilisant les primitives de la prcdente pour orir des
e e
services de plus haut niveau smantique, en loccurrence le SGF (Cf. Chae
pitre 19), ou le chargeur/lanceur (Cf. Chapitre 20).
Lintrt dune couche intermdiaire entre la programmation de tr`s bas
ee
e
e
niveau des entres/sorties dcrite au chapitre 16, et les couches suprieures du
e
e
e
syst`me, repose essentiellement sur deux aspects.
e
La diversit des caractristiques physiques des priphriques de mme nae
e
e
e
e
ture, par exemple les disques, conduit ` en faire abstraction pour dnir une
a
e
interface normalise, sur laquelle sappuient les programmes du syst`me de
e
e
gestion de chiers.
Dautre part, dans un syst`me simple, lutilisateur dialogue avec les applie
cations via le clavier et lcran physique de lordinateur. Il est commode de
e
donner aux applications lillusion quil en est encore de mme lorsque lutie
lisateur est par exemple connect ` distance depuis un autre ordinateur, via
ea
le rseau. On peut avoir recours ` des pilotes de priphriques virtuels, qui
e
a
e
e
simulent lexistence dun priphrique ctif du type escompt par les applicae
e
e
tions. Le pilote dcran virtuel se contentera de retransmettre les requtes `
e
e
a
lordinateur distant o` elles seront traites par le pilote de clavier et dcran
u
e
e
local. Le principe est le mme avec les syst`mes de fentrage.
e
e
e
Apr`s avoir prsent la structure dun pilote de priphrique (parae
e
e
e
e
graphe 1.), nous montrons par lexemple comment dnir une couche
e
pilote de priphrique. Nous tudions en dtail un pilote de priphrique
e
e
e
e
e
e
de type caract`re : le clavier (paragraphe 2.) ; un pilote de priphrique
e
e
e
de type bloc : le disque (paragraphe 3.). Les fonctions introduites dans le

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

428

Pilotes de priphriques
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

pilote de disque sont rutilises au chapitre 19. Le paragraphe 4. voque


e
e
e
la complexit des priphriques actuels, et dcrit bri`vement un pilote
e
e
e
e
e
dcran graphique.
e

1.

Structure dun pilote de priphrique


e
e

1.1

Interface dun pilote

Un pilote est constitu de structures de donnes et dun ensemble de


e
e
procdures ou fonctions qui sont autant de services utilisables par le syst`me
e
e
dexploitation ou ventuellement les programmes dapplication. Les structures
e
de donnes dcrivent les caractristiques du priphrique et de son coupleur,
e
e
e
e
e
son tat et les variables internes du pilote. Linterface comporte en gnral les
e
e e
fonctions suivantes :
Une procdure de lecture et/ou dcriture, selon la nature du priphrique,
e
e
e
e
dune suite doctets.
Des procdures dites douverture et de fermeture, appeles respectivement
e
e
avant et apr`s une suite dacc`s en lecture ou en criture. Par exemple,
e
e
e
on ouvre un chier avant den lire ou den modier le contenu ; on doit
dmarrer et arrter le moteur du lecteur de disquette.
e
e
Une procdure dinitialisation utilise lors du dmarrage, suite ` la mise
e
e
e
a
sous tension, ou lors de la rinitialisation du syst`me.
e
e
Une fonction de contrle permettant de consulter ou de modier les pao
ram`tres de fonctionnement du pilote et du priphrique.
e
e
e
un ensemble de routines particuli`res appeles traitants dinterruption que
e
e
nous tudions aux chapitres 22 et 24.
e

1.2

Identication des priphriques et de leur pilote


e
e

Les adresses des routines des pilotes sont regroupes dans une table de
e
branchement ` deux dimensions, indice dune part par le type de priphrique
a
e
e
e
et dautre part par la fonction demande.
e
Il peut exister plusieurs exemplaires dun mme type de priphrique,
e
e
e
reprs par un numro dexemplaire et grs par le mme pilote. Dans ce cas
ee
e
ee
e
la structure de donnes du pilote devient un tableau ` autant dentres que
e
a
e
dunits connectables ` lordinateur.
e
a
Chaque priphrique peut, par exemple, tre identi par son numro de
e
e
e
e
e
type et son numro dexemplaire, appels numros de priphriques respectivee
e
e
e
e
ment majeur et mineur dans la terminologie du syst`me unix. Les exemplaires
e
de disques de mme type peuvent par exemple direr par leur taille (2,4 ou
e
e
9 Go). Des priphriques de mme nature peuvent avoir des caractristiques
e
e
e
e
susamment direntes pour tre considrs comme des types dirents et
e
e
ee
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Pilote pour un clavier

429

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

grs par des pilotes distincts. On pourra par exemple trouver un pilote de
ee
disques ` la norme de raccordement ide et un pilote de disques de type scsi.
a

2.

Pilote pour un clavier

Le clavier est un priphrique de dialogue. Les changes entre le clavier et


e
e
e
lordinateur sont typiquement caract`res par caract`res.
e
e

2.1

2.1.1

Description dun clavier et de son coupleur


Vision externe

Un clavier est un ensemble de touches munies de cabochons indiquant la


fonction (caract`re) associe ` la touche. Chaque touche est un bouton poussoir
e
e a
dont le contact est ferm lorsque la touche est appuye et ouvert lorsque la
e
e
touche est relche.
a e
Nous supposons pour simplifer lexpos que le contact est exempt de rebond
e
a
` louverture et ` la fermeture. Le lecteur est invit ` consulter [AL78, Zak80]
a
ea
pour une prsentation plus dtaille des techniques dinterfaage des claviers.
e
e
e
c
Chaque touche est repre par un numro indiquant sa position physique
ee
e
dans le clavier. Chaque touche peut avoir plusieurs sens selon ltat de die
verses touches modicatrices (majuscule, contrle, etc) au moment o` elle est
o
u
enfonce.
e
Nous considrons ` titre dexemple un clavier de 64 touches ordinaires plus
e
a
une touche de majuscule.
2.1.2

Interface du clavier physique

Nous supposons que la lecture du coupleur de clavier retourne une structure


forme des champs suivants : un boolen de prsence indiquant si une touche
e
e
e
est enfonce au moment de la lecture, un ou plusieurs boolens indiquant ltat
e
e
e
des touches modicatrices, un entier donnant la position physique de la touche
enfonce.
e
Il est souvent commode de considrer la juxtaposition de la position de la
e
touche et de ltat des modicateurs comme un numro de touche global dans
e
e
un clavier virtuel dont chaque touche ne serait associe qu` un seul caract`re.
e
a
e
A chaque touche physique ordinaire correspondent autant de touches virtuelles
que de combinaisons possibles dtat des modicateurs au moment o` la touche
e
u
est enfonce. Le clavier de notre exemple poss`de 128 touches virtuelles : 64
e
e
touches 2 tats possibles de la touche majuscule.
e
2.1.3

Vision interne

En pratique, les claviers sont organiss sous forme matricielle pour obtee
nir une ralisation plus conomique et plus compacte (moins de ls). Chaque
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

430

Pilotes de priphriques
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

TOUCHEPRESENTE : lentier 0x80 { Bit 7 du coupleur }


BITSTOUCHE : lentier 0x7F { pour rcuprer le numro de la touche }
e
e
e
ADRCLAVIER : lentier ... { adresse du coupleur clavier }
ToucheAppuye : un entier
e
{ Retourne un entier < 0 si aucune touche nest enfonce ; retourne un
e
entier 0 dans le cas contraire, et cest le code mis par la lecture du
e
coupleur de clavier }
c, t : des caract`res
e
c 1 Mem [ADRCLAVIER]
t aect c ET BITSTOUCHE { ET bit ` bit pour masquage }
a
si c ET TOUCHEPRESENTE = 0
{ aucune touche appuye }
e
t -1
ToucheAppuye : t
e
Fig. 17.1 Fonction de dtection de touche appuye
e
e

touche ordinaire est place ` lintersection dune ligne et dune colonne de la


e a
matrice. Pour tester ltat dune touche, il sut denvoyer un 0 sur sa ligne :
e
si la touche est appuye, le 0 appara
e
tra sur sa colonne. Le coupleur devient
alors un petit circuit squentiel qui balaie les lignes ` tour de rle et mmorise
e
a
o
e
la premi`re touche appuye rencontre.
e
e
e
Dans la suite, pour xer les ides, nous considrons que la lecture du coue
e
pleur de clavier retourne la position de la touche sur les bits 0 ` 5 du bus de
a
donnes, ltat de la touche majuscule sur le bit 6 et la prsence dune touche,
e
e
e
en bit 7.
Nous dnissons ainsi la fonction ToucheAppuye qui donne le numro de
e
e
e
touche appuye par lutilisateur (Figure 17.1). Attendre lenfoncement dune
e
touche t scrira :
e
rpter t ToucheAppuye() jusqu` t 0
e e
e
a

De mme, attendre le relchement de la touche t scrira :


e
a
e
rpter tt ToucheAppuye() jusqu` tt = t
e e
e
a

2.2

Fonctionnalits du pilote de clavier


e

2.2.1

Traduction des positions en codes ASCII

Le pilote de clavier pourrait se limiter ` une simple fonction retournant le


a
code lu sur le coupleur. Toutefois, ` lexception de certains jeux, les applications
a
ne sintressent gnralement pas ` la position physique de la touche, mais au
e
e e
a
caract`re qui lui est associ. Or la disposition des caract`res sur les touches
e
e
e
dpend de la langue ` laquelle le clavier est destin.
e
a
e
A titre dexemple, les types de clavier alphanumriques sont souvent dnis
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Pilote pour un clavier

431

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

par les six premiers caract`res de la deuxi`me range : QWERTY (version


e
e
e
anglo-saxonne), AZERTY (version francise), etc.
e
Une premi`re fonction du pilote est donc de convertir le numro de touche
e
e
en code ASCII en fonction de la topologie du clavier, que lon peut par exemple
dcrire par un tableau (indic par le numro global de touche) :
e
e
e
NumVersAscii : un entier un caract`re
e
{ t tant le numro rendu par la lecture du coupleur de clavier, accompagn de line
e
e
formation concernant la touche modicatrice, NumVersAscii (t) est le caract`re
e
associ ` t }
ea

La correspondance nest pas biunivoque : certaines touches retournent le


mme caract`re quels que soient les modicateurs, comme par exemple la barre
e
e
despace, la touche de retour/n de ligne ou la touche de suppression de caract`re.
e
2.2.2

Probl`mes dchantillonnage
e
e

Les applications souhaitent gnralement rcuprer un (et un seul) exeme e


e
e
plaire du caract`re par frappe de touche. Chaque frappe correspond pourtant
e
a
` deux vnements physiques : lappui dune touche et son relchement.
e e
a
La procdure dacquisition dun caract`re ne peut donc se limiter ` la seule
e
e
a
dtection dune touche enfonce. Elle doit galement attendre le relchement de
e
e
e
a
la touche : le relchement est le seul vnement permettant dchantillonner
a
e e
e
correctement une suite de caract`res identiques. Sans cette prcaution, une
e
e
touche pourrait tre chantillonne plusieurs fois par frappe.
e
e
e
Le pilote peut ventuellement orir une fonction de rptition automatique.
e
e e
Le principe consiste ` mesurer le dlai durant lequel la touche reste enfonce.
a
e
e
Chaque accroissement de ce dlai dun temps gal ` la priode de rptition
e
e
a
e
e e
est assimil ` un relchement et donne lieu ` la rmission du caract`re. Notre
ea
a
a
ee
e
pilote simplif ne g`re pas cette fonctionnalit.
e
e
e
2.2.3

Mode interactif et mode ligne

La primitive de base oerte par le pilote est la lecture au clavier dune


suite de caract`res, les param`tres passs par lapplication tant le nombre n
e
e
e
e
de caract`res attendus et ladresse t du tableau de caract`res ` remplir.
e
e
a
Le pilote peut se contenter de lire les n caract`res et de les passer ` lapplie
a
cation sans traitement particulier. Ce mode de fonctionnement est adapt aux
e
applications interactives telles que les diteurs de texte, qui g`rent elles-mmes
e
e
e
la mise ` jour de lcran et ragissent ` chaque frappe de caract`re (n tant
a
e
e
a
e
e
le plus souvent gal ` 1). Nous dirons dans ce cas que le pilote fonctionne en
e
a
mode interactif.
Toutefois de nombreuses applications ne lisent pas des caract`res isols,
e
e
mais des lignes. Une ligne est une suite de caract`res termine par un caract`re
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

432

Pilotes de priphriques
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

de n de ligne. Le mode ligne est par exemple bien adapt au fonctionnement


e
dun interpr`te de commande textuel simple (Cf. Chapitre 20). Il est mme
e
e
impos par certains syst`mes de gestion transactionnelle dots de nombreux
e
e
e
terminaux distants. Dans ce contexte, il est important de minimiser le trac
sur les lignes entre les terminaux et lordinateur central ainsi que de dcharger
e
ce dernier des tches subalternes. La saisie et ldition des lignes sont alors
a
e
gres en local par le terminal qui ne sadresse au syst`me central que lorsquil
ee
e
dispose dune ligne compl`te. Ceci revient ` intgrer une partie du pilote dans
e
a e
le matriel du terminal.
e
Lapplication ne conna gnralement pas ` lavance la longueur de la ligne
t e e
a
qui est retourne par la routine de lecture du pilote. Pendant lacquisition dune
e
ligne, les caract`res saisis sont achs en cho ` lcran et dposs dans un
e
e
e
a e
e e
tampon de ligne. La routine de lecture retourne un rsultat lorsque le tampon
e
contient un caract`re de n de ligne. Durant la saisie, lutilisateur peut eectuer
e
diverses corrections, telles que supprimer le dernier caract`re de la ligne en
e
appuyant sur la touche deacement.
Lors de lappel de la routine de lecture du pilote, le tampon de ligne peut
contenir une cha de caract`res termine par une n de ligne, ou tre vide.
ne
e
e
e
Dans ce dernier cas, le pilote attend les caract`res saisis par lutilisateur et les
e
recopie dans le tampon, jusqu` ce que ce dernier contienne une n de ligne.
a
Le param`tre n permet de limiter le nombre de caract`res transfrs par
e
e
ee
appel du pilote. Si n , la ligne est transfre en entier et le tampon de ligne
ee
est vid. Si n< , seuls les n premiers caract`res de la ligne sont consomms et
e
e
e
retirs du tampon de ligne. Le reste de la ligne sera consomm lors dappels
e
e
ultrieurs du pilote.
e
Il existe une taille de ligne maximale, de lordre de la centaine de caract`res.
e
Lorsque le tampon de ligne ne contient plus quune case libre, le pilote refuse
tous les caract`res except la n de ligne. Lcho ignore les caract`res refuss et
e
e
e
e
e
les remplace par le pseudo-caract`re sonnerie que le pilote dcran traduit en
e
e
un signal sonore ou en un bref clignotement de lcran pour avertir lutilisateur
e
du probl`me.
e
Le param`tre n est gnralement gal ` la taille maximale de la ligne, ce qui
e
e e
e
a
garantit aux applications de lire une ligne compl`te ` chaque appel du pilote.
e a

2.2.4

Mode avec ou sans echo

Par dfaut, la ligne en cours de saisie appara ` lcran, ce qui permet `


e
t a e
a
lutilisateur de dtecter et de corriger dventuelles fautes de frappe. Il existe
e
e
cependant des cas de gures justiant la saisie dune ligne sans cho ` lcran
e
a e
pour viter quune personne indiscr`te ou indlicate ne lise la saisie par dessus
e
e
e
lpaule de lutilisateur. Lexemple typique de cette situation est la saisie dun
e
mot de passe.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Pilote pour un disque

433

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

{ Donnes du pilote }
e
ModeLigne : un boolen
e
ModeEcho : un boolen
e
MaxLigne : un entier > 0
Ligne : un tableau sur 0..MaxLigne 1 de caract`res { le tampon }
e
tailleligne : un entier 0
DebLigne : un entier sur 0..MaxLigne 1 { pointeur }

{ Initialisation du pilote de clavier }


InitClavier : une action
ModeLigne vrai
ModeEcho vrai
tailleligne 0

Fig. 17.2 Programmation du pilote de clavier - Variables et initialisation

2.3

Programmation du pilote de clavier

Le fonctionnement de notre pilote est rgi par deux variables boolennes :


e
e
mode ligne ou interactif, et mode avec ou sans cho ` lcran.
e
a e
La fonction de contrle du pilote permet de xer le mode de fonctionnement
o
et de consulter la taille maximale de ligne.
On pourrait galement prvoir la possibilit daccder au tableau de core
e
e
e
respondance entre numro de touche et code ASCII du caract`re associ, pour
e
e
e
changer la signication de certaines touches ; par exemple pour raecter des
e
touches de fonctions qui nont pas de signication prdnie ` des caract`res
e e
a
e
accentus manquant sur le clavier.
e
Les programmes sont donns Figures 17.2, 17.3 et 17.4. Outre les variables
e
globales du pilote. la fonction de lecture dune ligne fait appel ` lcriture dun
a e
caract`re ` lcran lorsquelle doit appliquer lcho.
e a e
e

3.

Pilote pour un disque

Un disque est un priphrique de stockage de type bloc, cest-`-dire que les


e
e
a
changes se font par ensembles de plusieurs octets : les secteurs.
e

3.1

Types de supports magntiques


e

Les priphriques de stockage magntique utilisent un support dont la sure


e
e
face est enduite dune ne pellicule de matriau magntisable, qui dle sous
e
e
e
un lectroaimant : la tte de lecture/criture. La trajectoire de cette tte par
e
e
e
e
rapport ` la surface du support est appele piste magntique.
a
e
e
Linformation est transfre en srie, bit apr`s bit, pendant que la piste
ee
e
e
dle ` vitesse constante sous la tte. Elle est reprsente sur le support par une
e a
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Pilotes de priphriques
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

434

{ Quelques types et constantes }


Fonction : le type (MODELIGNE, MODEECHO, TAILLEMAX)
Auxiliaire : le type entier
CompteRendu : le type entier
FONCTION INCONNUE : le CompteRendu -1
PARAM INCORRECT : le CompteRendu -2
OK : le CompteRendu 0

ContrleClavier : une Fonction, un Auxiliaire un CompteRendu


o
{ ContrleClavier (f, a) permet de xer des param`tres du pilote ou de les
o
e
interroger, selon la valeur du param`tre f. Elle fournit un compte-rendu,
e
qui est soit un code derreur (valeur ngative), soit une valeur demande
e
e
lorsquon lutilise pour interroger les donnes internes du pilote. }
e
lexique
code : un CompteRendu
ContrleClavier (f, a) :
o
code OK
selon f :
f = MODELIGNE :
selon a :
a = 0 : ModeLigne faux
a = 1 : ModeLigne vrai
sinon : code PARAM INCORRECT
f = MODEECHO :
selon a :
a = 0 : ModeEcho faux
a = 1 : ModeEcho vrai
sinon : code PARAM INCORRECT
f = TAILLEMAX :
code MaxLigne
sinon : code FONCTION INCONNUE

EcrireEcran : laction (la donne : un caract`re)


e
e
{ achage ` lcran, ` la position courante du curseur, du caract`re donn en
a e
a
e
e
param`tre }
e

Fig. 17.3 Programmation du pilote de clavier - Modication et consultation de ltat


e
du pilote de clavier : criture ` lcran.
e
a e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Pilote pour un disque

435

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

LectureClavier : une action ( la donne MaxCar : un entier > 0,


e
le rsultat Cha : un tableau sur [0..MaxCar-1] de caract`res,
e
ne
e
le rsultat NbCar : un entier)
e
{ MaxCar est le nombre de caract`res ` lire, Cha est le tableau ` remplir et
e
a
ne
a
NbCar est le nombre de caract`res eectivement lus }
e
lexique : c : un caract`re ; t, tt : des entiers ; termine : un boolen
e
e
algorithme
si n 0 alors NbCar 1
sinon
si non ModeLigne { Lecture des MaxCar caract`res demands }
e
e
i parcourant 0..MaxCar 1
rpter t ToucheAppuye() jusqu` t 0
e e
e
a
c NumVersAscii (t) { Conversion en caract`re }
e
si ModeEcho alors EcrireEcran (c)
rpter tt ToucheAppuye() jusqu` tt = t
e e
e
a
sinon { Mode ligne }
si tailleligne = 0
{ tampon non vide. on consomme la ligne ` partir du dbut. }
a
e
NbCar Min (TailleLigne, MaxCar)
i parcourant 0 .. NbCar 1 : Cha
ne[i] Ligne[DebLigne+i]
{ le reste sera consomm lors du prochain appel }
e
DebLigne DebLigne + NbCar ; TailleLigne TailleLigne NbCar
sinon { tailleligne = 0, tampon vide - Saisie dune ligne }
DebLigne 0 ; Termin faux
e
tantque non Termin
e
rpter t ToucheAppuye() jusqu` t 0
e e
e
a
selon t :
t = EFFACEMENT
{ ter le dernier caract`re du tampon, sil existe. }
o
e
si tailleligne >0
tailleligne tailleligne 1 ; NbCar NbCar - 1
si ModeEcho : EcrireEcran (t)
t = FINENTREE
si ModeEcho : EcrireEcran (t)
Ligne[tailleligne] NumVersAscii(t)
tailleligne tailleligne + 1 ; NbCar NbCar + 1
Termin vrai
e
sinon { garder une place pour la n de ligne }
si tailleligne MaxLigne 1 alors EcrireEcran (SONNERIE)
sinon
si ModeEcho alors EcrireEcran (NumVersAscii(t))
Ligne[tailleligne] NumVersAscii(t)
tailleligne tailleligne + 1 ; NbCar NbCar + 1
rpter tt ToucheAppuye() jusqu` tt = t
e e
e
a
Fig. 17.4 Programmation du pilote de clavier - Fonction de lecture dune ligne

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

436

Pilotes de priphriques
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

succession dinversions de polarit du champ magntique, que llectroaimant


e
e
e
dtecte (lecture) ou impose (criture).
e
e
Les disques durs, comme leur nom lindique, utilisent un plateau circulaire
rigide anim dun mouvement de rotation uniforme. La tte mobile otte `
e
e
a
la surface du disque (laltitude de vol de la tte est de lordre du micron)
e
et se dplace radialement pour accder aux direntes pistes, circulaires et
e
e
e
concentriques.
Les disquettes sont un support mince et souple. Pour viter une usure
e
inutile, les ttes ne sont plaques sur la surface du mdia magntique que
e
e
e
e
durant les acc`s ` la disquette. Apr`s quelques secondes dinactivit, les ttes
e a
e
e
e
sont cartes du support et la rotation de ce dernier est stoppe.
e
e
e
Il existe un ordre de grandeur de dirence entre les performances (dbit
e
e
et temps dacc`s) des disquettes et celles des disques durs, lcart tant encore
e
e
e
plus important en ce qui concerne la capacit.
e

3.2

Description dun disque dur

Un disque dur comporte des pistes circulaires et concentriques. Les pistes


sont dcoupes en arcs de cercles appels secteurs.
e
e
e

3.2.1

Notion dunit de transfert et secteurs


e

Le secteur correspond ` lunit de transfert entre le disque et la mmoire,


a
e
e
de mme que loctet est gnralement lunit dchange entre la mmoire et le
e
e e
e e
e
processeur.
Les secteurs sont gnralement de 256 ou 512 octets ; il existe galement
e e
e
des formats de disquettes avec des secteurs de 128 octets.
Les donnes stockes le long dune piste sont spares par des intervalles
e
e
e e
permettant dabsorber les petites uctuations de vitesse de rotation.
Lacc`s individuel aux octets sur le disque consommerait trop de place
e
pour les intervalles de sparation. Considrons ` titre dillustration une tr`s
e
e
a
e
faible variation de vitesse de rotation (0,1%) et de tr`s courte dure (1% de la
e
e
dure dun tour) du disque de 18 Go dont les caractristiques sont dtailles au
e
e
e
e
paragraphe 3.2.4. Un centi`me de tour correspond ` 10 Kbits et une uctuation
e
a
de 0,1% reprsente 10 bits, soit 1,25 octet. Les intervalles entre 2 octets pour
e
absorber une telle uctuation reprsenteraient dj` plus de la moiti de la
e
ea
e
longueur des pistes.
La modication dun octet dun secteur directement sur le disque ntant
e
pas raliste, les donnes sont lues et crites par secteurs complets : le secteur
e
e
e
est lu en entier, loctet est modi dans la copie du secteur en mmoire, et le
e
e
secteur est rcrit sur le disque.
ee

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Pilote pour un disque

Nombre de secteurs par piste

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

3.2.2

437

Nous supposons pour simplier lexpos que le nombre de secteurs par


e
piste est constant. Ceci signie que la frquence de transfert des informations
e
a
` la tte de lecture/criture est constante et que la densit denregistrement
e
e
e
maximale autorise par le support nest atteinte que pour la piste intrieure
e
e
(la plus courte).
La frquence de transfert pourrait tre adapte ` la longueur des pistes pour
e
e
e a
exploiter au mieux le support, les pistes les plus externes ayant plus de secteurs.
Le prix ` payer est une lectronique de lecture/criture plus sophistique et une
a
e
e
e
lg`re complication des algorithmes de localisation des donnes sur le disque,
e e
e
le numro de piste ne pouvant plus tre obtenu par simple division.
e
e
3.2.3

Plateaux, cylindres et temps dacc`s


e

Pour augmenter la capacit des disques de mani`re conomique, on utilise


e
e e
les deux faces des plateaux. On monte galement un ensemble de d plateaux
e
sur le mme axe de rotation. Les 2d ttes sont portes par un bras unique, elles
e
e
e
se dplacent solidairement, et se partagent ` tour de rle lunique lectronique
e
a
o
e
de lecture/criture : on ne peut accder qu` une face de plateau ` la fois.
e
e
a
a
Lensemble des pistes accessibles dans une position donne du bras portant
e
les ttes est appel cylindre. Un cylindre contient 2d pistes (une par tte). Le
e
e
e
temps dacc`s piste ` piste est le dlai ncessaire pour dplacer les ttes dun
e
a
e
e
e
e
cylindre ` un cylindre adjacent. Le temps dacc`s piste est le dlai ncessaire
a
e
e
e
pour amener les ttes ` un cylindre donn. On peut en dnir la valeur maxie
a
e
e
male (trajet entre les 2 cylindres extrmes) et une valeur moyenne en supposant
e
une rpartition quiprobable des cylindres de dpart et darrive sur le disque.
e
e
e
e
Le temps dacc`s secteur est le temps de rotation ncessaire pour amener
e
e
le secteur voulu sous la tte. Sa borne suprieure est la dure dune rotation
e
e
e
compl`te et la moyenne le temps dun demi-tour.
e
3.2.4

Caractristiques des disques durs et performances


e

Lvolution technologique des disques amliore trois caractristiques :


e
e
e

la densit linaire denregistrement le long des pistes, do` une augmentae e


u
tion de la capacit de stockage (par piste),
e
la densit radiale denregistrement (autrement dit lcart entre deux pistes),
e
e
ce qui ` capacit gale rduit lencombrement du disque et le dbattement
a
ee
e
e
des ttes et donc le temps dacc`s aux pistes,
e
e
la frquence de fonctionnement de lensemble tte et lectronique de lece
e
e
ture/criture, ce qui permet daugmenter le dbit et la vitesse de rotation,
e
e
par rduction du temps dacc`s secteur.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

438

Pilotes de priphriques
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Le diam`tre courant des disques est successivement pass de huit pouces `


e
e
a
cinq pouce un quart puis ` trois pouces et demi (standard actuel, soit environ
a
neuf centim`tres). Ltape suivante la plus probable est deux pouces et demi.
e
e
Voici les principales caractristiques dun disque dur de 1998 : six plateaux
e
de trois pouces et demi tournant ` 10000 tours/minute, 6996 cylindres (pistes
a
par plateau), 35566480 secteurs de 512 octets chacun, soit une capacit toe
tale de 18 Go, une frquence de transfert de 152 ` 211 Mbits/s, soit environ
e
a
1Mbit/tr, un temps dacc`s secteur de 2,99 ms, et un temps dacc`s piste `
e
e
a
piste de 0,9 ms (temps acc`s piste moyen = 6 ms, maximal = 13 ms).
e

3.3

Structure des informations sur un disque dur

Nous supposons par convention que le cylindre de numro 0 correspond `


e
a
la piste la plus externe. Dans la gestion du mouvement des ttes, nous assimie
lerons piste et cylindre.
3.3.1

Structure dune piste

Une piste a un dbut. Le rayon marquant le dbut dune piste est repr
e
e
ee
par un index. Dans le cas des disquettes, cet index est un simple trou dans le
support, dtect par une fourche optolectronique.
e
e
e
Le contenu dune piste est une suite dautant denregistrements que de
secteurs. Chaque enregistrement se compose dune en-tte et dun bloc de
e
donnes (le contenu du secteur). Lors dune criture, seul le bloc de donnes
e
e
e
est crit sur le disque, len-tte tant utilise pour reprer le dbut du secteur.
e
e e
e
e
e
Lcriture des en-ttes est eectue une fois pour toutes lors dune opration
e
e
e
e
dinitialisation appele formatage physique du disque.
e
Une en-tte contiendra vraisemblablement le numro de piste et le numro
e
e
e
de secteur dans la piste. On pourrait en principe se contenter dune simple
marque de dbut denregistrement. La piste peut tre connue en comptant les
e
e
dplacements de la tte depuis la piste 0, mais le mcanisme qui dplace la tte
e
e
e
e
e
doit tre parfaitement prcis et able. De mme, le numro de secteur pourrait
e
e
e
e
tre dtermin en comptant les dbuts denregistrement depuis le dbut de
e
e
e
e
e
piste.
3.3.2

Protection contre les erreurs de lecture/criture


e

Les informations stockes sont munies doctets dits de CRC qui permettent
e
de dtecter dventuelles erreurs de recopie des donnes. Cette technique de
e
e
e
dtection derreur, qui ne permet pas de les corriger, est appele contrle de
e
e
o
redondance cyclique.
Les intervalles avant et apr`s les donnes sont remplis par des motifs bie
e
naires prdnis tels quune suite de bits ` 1 (sur laquelle lenregistrement
e e
a
prcdent peut dborder lg`rement) suivie dune squence plus courte de bits
e e
e
e e
e
a
` 0 qui permet de dtecter la n de lintervalle.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Pilote pour un disque

439

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

La valeur de CRC est calcule ` partir de celle des donnes transfres. Elle
e a
e
ee
est ajoute aux donnes lors de lcriture et, lors dune lecture, compare aux
e
e
e
e
octets de CRC prsents sur le disque. Toute dirence indique bien entendu
e
e
une erreur.

3.4

3.4.1

Fonctionnalits du pilote de disque


e

Interface entre le disque et le contrleur de disque


o

Les principaux signaux de commande envoys au disque par le contrleur de


e
o
disque sont les suivants : 1) sens du transfert des donnes : lecture ou criture,
e
e
si llectronique de pilotage de la tte ne fait pas partie du contrleur ; 2)
e
e
o
signal donne ` crire et signal dchantillonnage ; 3)slection de la tte de
e a e
e
e
e
lecture/criture ` utiliser : face infrieure ou suprieure du plateau et numro
e
a
e
e
e
de plateau ; 4) dplacement de la tte dune piste ; 5) sens du dplacement de
e
e
e
la tte ; 6) remise ` 0.
e
a
Les principaux signaux reus par le contrleur sont : 1) signal donne lue
c
o
e
et signal dchantillonnage ; 2) signal de prsence en piste 0 ; 3) index/dbut
e
e
e
de piste ; 4) disque prt ; 5) erreur, comme par exemple, dplacement de tte
e
e
e
au-del` des pistes extrmes.
a
e
Pour une disquette, on trouve de plus une commande de rotation du moteur
et de chargement/dchargement des ttes ainsi quun signal dentre indiquant
e
e
e
une ventuelle protection contre lcriture.
e
e
Linitialisation ` la mise sous tension consiste essentiellement ` envoyer un
a
a
signal de remise ` 0 ` lunit de disque, attendre que la vitesse de rotation soit
a a
e
stabilise (signal prt du disque), ` ramener la tte sur la piste 0 et ` remettre
e
e
a
e
a
a
` 0 la variable piste courante du pilote.
Les param`tres dcrivant le disque (nombre de plateaux, taille dun secteur,
e
e
nombre de secteurs par piste, nombre de pistes) sont galement initialiss `
e
e a
partir de lEEPROM dcrivant la conguration. La taille de bloc sera initialise
e
e
a
` sa valeur par dfaut (par exemple 1 secteur).
e
3.4.2

Interface du pilote de disque vers les couches suprieures


e

Vu du syst`me de gestion de chiers (SGF), le disque prsent par le pilote


e
e
e
est une suite de blocs numrots ; cest une structure linaire. Un bloc nest pas
e e
e
ncessairement rduit au secteur physique. En gnral, un bloc est une suite
e
e
e e
de secteurs, et le nombre de secteurs par bloc est une puissance de 2.
Nous appelons adresse physique le numro de bloc. Le nombre de secteurs
e
( 1) par bloc est une information du pilote.
Vu de la couche suprieure, il est indirent que lunit dacc`s (le bloc)
e
e
e
e
oerte par le pilote de disque soit eectivement un secteur. Il sut de conna
tre
la taille du bloc en nombre doctets.
Les procdures de lecture et dcriture du pilote permettent au SGF de
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

440

Pilotes de priphriques
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

transfrer une suite de blocs dadresses physiques conscutives entre le disque


e
e
et un tableau ou tampon en mmoire.
e
3.4.3

Correspondance entre les adresses physiques de blocs et les


numros de secteurs et de pistes
e

Les procdures de lecture et dcriture de bloc oertes aux couches


e
e
suprieures font appel aux procdures de lecture et dcriture dun secteur
e
e
e
fournies par le contrleur de disque.
o
La premi`re tape consiste ` convertir le numro de bloc en numro global S
e e
a
e
e
de secteur. Il sut pour cela de le multiplier par la taille T dun bloc exprime
e
en nombre de secteurs.
Le numro global de secteur doit alors tre dcompos en un numro de
e
e
e
e
e
piste (ou plus exactement de cylindre), un numro de tte et un numro de
e
e
e
secteur dans la piste slectionne. Le pilote contrle au passage que le numro
e
e
o
e
global de secteur appartient ` lintervalle lgal de numros de secteurs corresa
e
e
pondant ` la capacit du disque.
a
e
En supposant que toutes les pistes ont le mme nombre de secteurs, il sut
e
de diviser S par le nombre de secteurs par cylindre. Le quotient de la division
donne le numro de piste. Le reste est ` son tour divis par le nombre de
e
a
e
secteurs par piste. Le quotient donne le numro de tte et le reste, le numro
e
e
e
local de secteur dans la piste.
Cette organisation rduit le dplacement des ttes et les temps dacc`s en
e
e
e
e
groupant les secteurs et les blocs de numros conscutifs sur le mme cylindre
e
e
e
ou sur des cylindres adjacents.
Le probl`me revient alors ` eectuer une suite de copies entre le secteur de
e
a
numro global S + i et le tampon dadresse A ` ladresse A + i*TailleSecteur
e
a
avec 0 i T .

3.5

Programmation des fonctions du pilote

Les coupleurs ont volu avec les gnrations de circuits et intgr une part
e
e
e e
e e
croissante de la gestion des disques. Les coupleurs rudimentaires sont devenus
des contrleurs de disques qui dchargent le processeur de lessentiel du travail
o
e
(formatage physique des disques, srialisation des octets de donnes, calcul de
e
e
CRC et acc`s aux pistes et aux secteurs). Ce sont des circuits complexes dont
e
la documentation technique est souvent aussi volumineuse (plusieurs dizaines
de pages) que celle des processeurs qui les utilisent.
Il est donc hors de question de prsenter ici un contrleur de disque : la
e
o
description de la norme de raccordement scsi peut occuper ` elle seule un livre
a
entier.
Nous nous contenterons donc de donner les grandes lignes de lalgorithme
de lecture et dcriture dun secteur, sans prciser la rpartition des rles entre
e
e
e
o
le logiciel du pilote et le matriel du contrleur.
e
o

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Pilote pour un disque

Communication avec le coupleur

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

3.5.1

441

On peut sattendre en pratique ` ce que le pilote se contente de transmettre


a
au contrleur la nature de lopration ` raliser : formatage, acc`s ` une piste,
o
e
a e
e a
retour ` la piste 0, lecture ou criture dun secteur et les param`tres correspona
e
e
dants, dattendre la n de lopration en testant le registre dtat du contrleur
e
e
o
et de grer la reprise du processus en cas derreur.
e
Dans le cas gnral, le secteur appartient ` une piste dirente de la piste
e e
a
e
courante survole par la tte. La dirence entre les deux pistes est calcule et
e
e
e
e
convertie en autant dimpulsions de dplacement du signal dplacement piste
e
e
dans la direction correspondante. La frquence des impulsions est fonction du
e
temps dacc`s piste du disque. La variable piste courante est mise ` jour. La tte
e
a
e
est ensuite slectionne en lecture pour consulter les en-ttes denregistrement.
e
e
e
Le numro de piste ventuellement contenu dans la premi`re en-tte passant
e
e
e
e
sous la tte apr`s le dplacement est compar avec la valeur de la variable piste
e
e
e
e
courante. Un dsaccord indique une erreur de calibrage du compteur de piste.
e
Le rem`de consiste ` ramener la tte sur la piste 0, ` remettre ` 0 la variable
e
a
e
a
a
piste courante et ` recommencer le processus depuis le dbut.
a
e
Ltape suivante consiste ` attendre le passage des en-ttes qui dlent sous
e
a
e
e
la tte et den comparer le numro de secteur avec celui du secteur recherch.
e
e
e
Si cette information est absente de len-tte, il sut dattendre le passage du
e
dbut de piste et de compter les en-ttes ` partir de celui-ci.
e
e
a
La dtection de la bonne en-tte prc`de immdiatement le passage du
e
e
e e
e
bloc de donnes du secteur sous la tte. La tte est commute en criture si
e
e
e
e
e
ncessaire, et le transfert commence. Les donnes sont transfres bit par bit
e
e
ee
a
` la cadence impose par la rotation du disque.
e
La srialisation de chaque octet est eectue par un registre ` dcalage du
e
e
a e
contrleur de disque, le processeur se contentant de dposer ou de rcuprer
o
e
e
e
loctet dans le registre de donnes du contrleur.
e
o
La valeur de CRC est calcule pendant le transfert, une erreur pouvant
e
tre ventuellement dtecte. Lcriture dun secteur peut tre suivie dune
e
e
e
e
e
e
relecture de vrication au tour de piste suivant.
e
En lecture, lerreur ventuelle peut tre due ` une petite erreur de posie
e
a
tionnement de la tte ou dans le cas dune disquette ` une poussi`re sur le
e
a
e
mdia. Lerreur peut tre transitoire et corrige en dplaant la tte puis en la
e
e
e
e c
e
ramenant a nouveau sur la piste pour une nouvelle tentative dacc`s. Au-del`
`
e
a
dune dizaine de tentatives infructueuses, lerreur peut tre considre comme
e
ee
fatale, et la donne irrcuprable.
e
e
e
Si un nouveau cycle criture-lecture donne ` nouveau une erreur, le secteur
e
a
(voire toute la piste) est probablement dfaillant et devra tre marqu comme
e
e
e
tel et retir de la liste de secteurs utilisables.
e
Le cadencement des acc`s aux secteurs est dni par la rotation du disque et
e
e
la frquence de transfert des octets simpose ` lensemble processeur/mmoire.
e
a
e
Si la cadence de transfert nest pas scrupuleusement respecte, un ou plusieurs
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

442

Pilotes de priphriques
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

octets seront perdus et le transfert se terminera par une erreur.


Lexcution dune boucle de transfert par le processeur peut savrer trop
e
e
lente pour le dbit du disque. Par exemple, une frquence de transfert approxie
e
mative de 160 Mbits/s reprsente 20 Mo/s, soit 50 ns par octet ; cest ` peu
e
a
pr`s le temps de cycle dune mmoire centrale.
e
e
Pour augmenter le dbit, on transf`re les donnes par mots de 32 ou 64 bits
e
e
e
plutt quoctet par octet moyennant les contraintes dalignement dadresses des
o
tampons, a exploiter les acc`s en mode rafale (Cf. Chapitre 9), et ` coner la
`
e
a
boucle de transfert ` une unit dacc`s direct ` la mmoire (Cf. Chapitre 16).
a
e
e
a
e
3.5.2

Fonctions oertes par le pilote

Nous avons vu au paragraphe 3.4.2 que le disque est organis en blocs,


e
chaque bloc tant une suite de secteurs. Un bloc est dni par un numro et sa
e
e
e
taille. Le pilote ore aux couches suprieures des fonctions dacc`s ` un bloc :
e
e a
TailleBloc : lentier ... { Taille dun bloc en nombre doctets }
NbBlocs : lentier ... { Nombre de blocs du disque }
AdPhysique : un entier sur 0 .. NbBlocs 1
Bloc : un tableau sur [0 .. TailleBloc 1] doctets

LireBloc : une action (NoB : une AdPhysique, Tampon : un Bloc)


{ lecture du bloc de numro NoB dans le tableau Tampon }
e

EcrireBloc : une action (NoB : une AdPhysique, Tampon : un Bloc)


{ Ecriture du tableau Tampon dans le bloc de numro NoB }
e

Dautre part les fonctions de contrle du pilote pourraient tre les suio
e
vantes : acc`s aux param`tres : taille dun secteur, du disque, nombre de
e
e
secteurs par bloc ; formatage physique du disque ; etc. Certaines fonctions
sont spciques des units ` support amovible : marche/arrt rotation, chargee
e a
e
ment/dchargement des ttes, dtection de protection contre lcriture, jection
e
e
e
e
e
du mdia (disquette, CDROM).
e

4.

Pour aller plus loin...

Les priphriques ont volu en prenant directement en charge une part


e
e
e
e
croissante du travail de gestion des entres/sorties assur initialement par le
e
e
processeur. Linterface matrielle de raccordement et la complexit de la proe
e
grammation des entres/sorties varient normment selon le degr de sophise
e
e
e
tication du priphrique raccord.
e
e
e
Sous le mme nom et pour les mmes fonctions, on trouve aujourdhui
e
e
des dispositifs mcaniques dots dune interface lectronique rudimentaire `
e
e
e
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Pour aller plus loin...

443

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

0x00
0x3E
0x20
0x20
0x3C
0x20
0x20
0x3E
0x00

Fig. 17.5 Reprsentation de la lettre E dans un carr de 9 par 8 pixels


e
e

laquelle le processeur donne des ordres tr`s lmentaires, tels que : dplacer la
e ee
e
tte de limprimante dun dixi`me de millim`tre ` droite, et dautres disposant
e
e
e a
en interne de vritables petits ordinateurs de gestion capable dinterprter des
e
e
requtes de niveau smantique lev, telles que : tracer un cercle et peindre
e
e
e e
lintrieur en jaune. On parle dans ce dernier cas de priphriques intelligents.
e
e
e
Au coeur de nombreux priphriques on rencontre une puce lectronique
e
e
e
intgrant tous les ingrdients (processeur, mmoire vive et mmoire morte)
e
e
e
e
dun petit ordinateur. Lventail de priphriques concerns est tr`s large, des
e
e
e
e
e
syst`mes de disques jusquaux ensembles clavier/souris.
e

4.1

Pilote pour un cran graphique


e

Un cran graphique est un cran cathodique constitu par une matrice de


e
e
e
points. Dans un cran noir et blanc, ` chaque point est associe une information
e
a
e
boolenne signiant si le point est allum ou teint. Pour un cran couleur, `
e
e
e
e
a
chaque point est associ le codage de sa couleur (sur 8, 16, 24 ou 32 bits).
e
Lensemble des informations dnissant la valeur de chaque point est stocke
e
e
dans une mmoire appele mmoire dcran. La gestion dune image se fait
e
e
e
e
ainsi par lecture et criture dans la mmoire dcran. Nous avons parl au
e
e
e
e
paragraphe 4.5 du chapitre 9 de la gestion optimise de cette mmoire.
e
e
Pour acher un caract`re, le processeur doit passer de son code ASCII ` sa
e
a
reprsentation matricielle, ` recopier dans la mmoire dcran. La gure 17.5
e
a
e
e
illustre la reprsentation dun E majuscule dans un carr de neuf par huit
e
e
pixels de ct.
oe
La forme matricielle a linconvnient dtre volumineuse (neufs octets par
e
e
caract`re dans cet exemple) mais elle permet de mlanger du texte et des dese
e
sins. Lorsque lcran nache que du texte, la conversion peut tre eectue `
e
e
e a
la vole par le dispositif de rafra
e
chissement. Cela rduit la taille de la mmoire
e
e
dcran qui ne contient plus alors que les codes des caract`res achs, la table
e
e
e
de conversion ASCII vers la forme matricielle tant ge dans une mmoire
e
e
e
morte. On parle dcran alphanumrique.
e
e
La connexion de lcran est illustre gure 17.6. La mmoire principale, la
e
e
e
mmoire cran et les autres interfaces dentres/sorties sont relies par le bus
e
e
e
e
mmoire. En bas de la gure se trouvent les ma
e
tres qui se partagent lacc`s `
e a
la mmoire dcran : le processeur et lunit de rafra
e
e
e
chissement.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

444

Pilotes de priphriques
e
e

Priphriques
e
e
caract`re
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Ecran
cathodique

Mmoire dcran
e
e

Entres/Sorties
e

Mmoire principale
e

Bus Mmoire
e

DMA de
Rafra
chissement

Acclrateur
ee
graphique

Processeur

Fig. 17.6 connexion dun cran avec ses mmoires


e
e

Pour un achage plus performant, les primitives grahiques les plus courantes (dont le trac de segments de droites et de gures gomtriques) peuvent
e
e e
tre cbles (Cf. Chapitre 11) et dlgues ` un circuit acclrateur. Le bus peut
e
a e
ee e a
ee
galement tre scind en deux parties (csure en pointill) par des connexions
e
e
e
e
e
de type trois tats, pour autoriser des acc`s simultans de lacclrateur grae
e
e
ee
phique ` la mmoire dcran et du processeur ` la mmoire principale ou aux
a
e
e
a
e
autres entres/sorties.
e
Le processeur principal qui gn`re linformation ` acher peut donc adrese e
a
ser de la mme mani`re la mmoire dcran et la mmoire principale.
e
e
e
e
e
A loppos, lensemble de la gure 17.6 peut constituer un terminal grae
phique intelligent. Le dialogue avec le terminal sera en ralit un change
e e
e
entre deux ordinateurs : le syst`me informatique central qui dcide dacher
e
e
quelque chose et lordinateur interne ddi du terminal. Ces deux ordinateurs
e e
se consid`reront lun lautre comme des priphriques ordinaires de sortie et
e
e
e
dentre, transfrant des caract`res.
e
e
e
Le processeur du terminal excute une boucle innie consistant ` attendre
e
a
un ordre dachage venant de lordinateur principal et ` eectuer ensuite
a
lopration correspondante : dessiner un rectangle, allumer tel pixel, eae
cer tout lcran, etc. Le processeur principal se contente alors denvoyer les
e
quelques octets reprsentant lordre graphique correspondant.
e
La syntaxe de commande des priphriques de sortie graphique peut tre
e
e
e
tr`s labore : la complexit et la puissance dexpression du langage poste e
e
e
script, reconnu par de nombreuses imprimantes, sont celles des langages de
programmation.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 18

Vie des programmes

Dans ce chapitre, nous examinons toutes les questions relatives ` la vie


a
dun programme, depuis sa cration sous forme de chier texte dans un langage
e
particulier, jusqu` son excution par le processeur dune machine donne.
a
e
e
La notion dexcution dun programme recouvre deux techniques
e
direntes, dont nous verrons quelles ne sont nalement que deux formes de
e
la mme approche : linterprtation et la compilation.
e
e
En ce qui concerne linterprtation, nous navons vu pour linstant que le
e
cas du processeur qui interpr`te le langage machine. Il sagit dune ralisation
e
e
matrielle cble de lalgorithme dinterprtation du langage machine
e
a e
e
prsent au chapitre 12. Cette ide dcrire un algorithme pour interprter
e
e
e
e
e
les constructions dun langage de programmation est utilise par les envie
ronnements dexcution de tous les langages dits interprts, comme tcl,
e
ee
perl, scheme, etc. Ces algorithmes dinterprtation sont alors simplement
e
programms au lieu dtre cbls.
e
e
a e
En ce qui concerne la compilation, lexcution dun programme consiste
e
en une interprtation, par le processeur, dun programme en langage machine
e
obtenu dapr`s le texte du programme par des tapes de traduction plus ou
e
e
moins nombreuses et sophistiques. Nous avons dni au chapitre 4 les struce
e
tures principales des langages de programmation impratifs et tudi, au chae
e
e
pitre 13, la traduction de ce type de langage en langage dassemblage. Ces
techniques constituent le coeur des techniques de compilation des langages de
haut niveau.
La notion de vie dun programme tient compte galement du fait quun
e
programme est rarement dnitif d`s sa premi`re criture : les tapes dcriture,
e
e
e e
e
e
traduction, excution et correction peuvent tre rptes de nombreuses fois,
e
e
e ee
et il convient de rduire le temps ncessaire ` un tel cycle en introduisant
e
e
a
la possibilit de traiter sparment les dirents chiers qui composent un
e
e e
e
mme programme. Nous avons toujours considr jusque l` quun programme
e
ee
a
est constitu dun texte unique, trait de mani`re globale par les outils de
e
e
e
traduction successifs. La ralit est plus complexe, et nous dtaillons ici les
e e
e
notions de compilation spare et de code translatable. Dans le paragraphe 3.,
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

446

Vie des programmes

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

nous prsentons ldition de liens et nous dcrivons prcisment le format dun


e
e
e
e e
chier objet translatable.
Enn nous abordons la notion de code translatable et le probl`me de sa
e
production systmatique depuis un programme en langage dassemblage. Il
e
sagit de produire un programme en langage machine sans prjuger de ladresse
e
absolue ` laquelle le programme sera plac en mmoire vive pour excution.
a
e
e
e
Dans le paragraphe 1. nous dnissons prcisment les termes ine
e e
terprtation et compilation, en donnant des exemples de langages
e
excuts selon lune ou lautre technique. Dans le paragraphe 2. nous
e e
rappelons les tapes de traduction des langages de haut niveau vers un
e
langage machine, et nous introduisons les notions de compilation spare,
e e
code translatable et dition de liens.
e

1.

Interprtation et compilation
e

Pour tudier les deux principes dexcution de programmes, par ine


e
terprtation ou par compilation, nous utilisons un petit langage impratif tr`s
e
e
e
simple. Ce langage est toutefois plus riche que les langages machine dont nous
avons vu linterprtation aux chapitres 12 et 14. Il comporte en particulier des
e
structures itratives et conditionnelles.
e

1.1

L : un langage impratif simple


e

Le langage nore que le type entier relatif, dune seule taille. Il y a trois
noms de variables prdnis : "X", "Y" et "Z", et aucun moyen den dclarer
e e
e
de nouvelles. La porte et la dure de vie de ces 3 variables sont globales (le
e
e
langage na pas de structure de blocs). On dispose de trois oprations binaires
e
notes "+", "*" et "" avec le sens usuel. On peut utiliser dans les oprations
e
e
des constantes enti`res positives.
e
Comme actions lmentaires, le langage dispose de primitives
ee
dentre/sortie ` un seul param`tre, et de laectation. Les composie
a
e
tions dactions sont la squence, la boucle while et la structure conditionnelle
e
if-then-else. Les conditions boolennes du while sont toujours de la forme
e
variable = 0. Celles du if sont de la forme variable > 0. Les boucles ne sont
pas imbriques, les structures conditionnelles non plus. En revanche on peut
e
trouver une boucle dans une structure conditionnelle ou vice-versa.
La squence dactions est implicite : chaque action occupe une ligne. On
e
a droit ` des lignes de commentaires, dont le premier mot est rem. Les
a
entres/sorties se notent : Read ... et Write ..., o` les pointills doivent
e
u
e
tre remplacs par le nom dune des variables prdnies. La structure while
e
e
e e
comporte un marqueur de n : le mot-cl endwhile tout seul sur sa ligne. De
e
mme la structure conditionnelle comporte une ligne endif (voir lexemple de
e
la gure 18.1 pour la notation des conditions. Laectation est note par une
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Interprtation et compilation
e

! X dans l0, Y dans l1, Z dans l2


call read ; nop
add g0, o0, l0
call read ; nop
add g0, o0, l1
while :
subcc l0, l1, l2
be endwhile ; nop
ble else ; nop
subcc l0, l1, l0
ba endif ; nop
else :
subcc l1, l0, l1
endif :
ba while ; nop
endwhile :
add g0, l0, o0
call write ; nop

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

read X
read Y
Z <-- X - Y
while Z
rem signifie :
rem tant que Z non nul
if Z
rem signifie Z > 0
then
X <-- X - Y
else
Y <-- Y - X
endif
Z <-- X - Y
endwhile
write X

447

Fig. 18.1 (a) Exemple de programme L (b) Programme sparc correspondant.

instruction de la forme : ... expr, o` les pointills doivent tre remu


e
e
placs par le nom dune des variables prdnies, et o` lexpression expr est
e
e e
u
forme dun seul oprateur, appliqu ` des oprandes qui sont soit des noms
e
e
ea
e
de variables, soit des notations de constantes enti`res positives en dcimal.
e
e
La gure 18.1 donne un exemple de texte du langage L et un programme
en langage dassemblage sparc correspondant.

1.2

Excution par compilation


e

Si lon utilise la technique de compilation, on doit traduire le texte dun


programme en langage machine dun processeur dont on dispose. Supposons
que lon compile notre langage simple vers du langage machine sparc. Le
compilateur ralise lanalyse lexicale et syntaxique du texte du programme
e
(dcoupage en mots et vrication de la conformit des phrases ` lordre ime
e
e
a
pos), puis traduit les structures de haut niveau en branchements. On obtient
e
un programme du type dcrit gure 18.1-(b). Ce programme est ensuite trae
duit en langage machine sparc par loutil dassemblage. Le rsultat est stock
e
e
dans un chier objet (Cf. Chapitre 19) qui est ensuite charg en mmoire vive
e
e
pour excution (Cf. Chapitre 20), et lanc, cest-`-dire interprt directement
e
e
a
ee
par le processeur de la machine (Cf. Chapitre 14).
Ecrire un compilateur, cest-`-dire le programme qui ralise les phases
a
e
danalyse et de traduction, est une tche tr`s bien tudie maintenant, au
a
e
e
e
moins pour les langages ` structure classique comme celui que nous avons
a
tudi au chapitre 4. On trouvera dans [CGV80, WM94] un expos complet
e
e
e
des techniques de compilation.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

448

1.3

Excution par interprtation


e
e
Solution de base

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

1.3.1

Vie des programmes

Nous donnons gures 18.2 et 18.3 lalgorithme dinterprtation du langage


e
L. Pour programmer en langage L sur une machine ` processeur M, il faut
a
programmer lalgorithme dinterprtation, par exemple dans un langage de
e
haut niveau comme ada, puis compiler ce programme pour le langage machine du processeur M, le charger et le lancer. A lexcution, ce programme
e
dinterprtation travaille sur un programme du langage L, pris dans un chier
e
ou tap directement au clavier par le programmeur. Pendant cette excution,
e
e
le texte de programme en langage L est trait comme une donne par le proe
e
gramme interpr`te, alors quil est peru comme un programme par lutilisateur
e
c
humain qui la crit. On voit ici que la distinction entre programmes et donnes
e
e
nest pas intrins`que.
e
Nous avons omis dans lalgorithme dinterprtation la phase de lecture du
e
chier texte du programme. Cette phase de lecture, dans un chier ou au clavier, est suppose eectue compl`tement avant que ne commence lexcution.
e
e
e
e
Elle fournit le programme sous la forme dun tableau de lignes, chaque ligne
tant dcoupe en mots (il y a au plus 5 mots sur une ligne dans la syntaxe du
e
e
e
langage que nous tudions ; un commentaire peut tre considr comme ayant
e
e
ee
2 mots). Les textes comportant des lignes de plus de 5 mots ont t rejets.
ee
e
On suppose que le programme lu tient dans le tableau de MAXLIGNE lignes.
Par exemple, la lecture de la ligne X <-- X - Y du programme dexemple
donn ci-dessus fournit : Prog[10] = < X, <--, X, -, Y > .
e
Une telle phase de lecture sapparente ` la phase danalyse lexicale et syna
taxique dans un compilateur. Noter toutefois que le travail est perdu dune
excution ` lautre. Lalgorithme fourni gure 18.3 est la phase dexcution
e
a
e
proprement dite, par parcours du tableau de lignes.
1.3.2

Prise en compte des boucles imbriques


e

Dans le langage L prsent ci-dessus, nous avons suppos que les structures
e
e
e
itratives ne sont pas imbriques. Cette hypoth`se justie lalgorithme tr`s
e
e
e
e
simple dinterprtation des structures itratives, pour lequel une seule adresse
e
e
de dbut de boucle DebBoucle sut. Si les structures itratives peuvent tre
e
e
e
imbriques ` un niveau quelconque, il faut prvoir une pile dadresses de ree a
e
tour. Dautre part la recherche du mot-cl "endwhile" (lorsque la condition de
e
boucle devient fausse) est plus complique. Il faut en eet parcourir les lignes
e
du texte en comptant les while et en dcomptant les endwhile.
e
1.3.3

Prtraitements divers
e

La lecture du chier et le stockage dans un tableau des lignes dcoupes


e
e
en mots constitue dj` un traitement pralable ` lexcution. Le dcoupage en
ea
e
a
e
e
mots des lignes qui constituent le corps dune boucle est eectu une seule fois.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Interprtation et compilation
e

449

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Un autre prtraitement intressant consiste ` associer ` chaque instruce


e
a
a
tion "while" le numro de la ligne du "endwhile" correspondant. Cela vite
e
e
la boucle tantque Mot1 de Prog[CP] = endwhile : CP CP + 1 de lalgorithme dinterprtation.
e
On pourrait bien sr liminer les commentaires d`s la phase de lecture du
u e
e
chier, et imaginer de nombreux autres prtraitements, qui vitent de rpter
e
e
e e
du travail lors des multiples excutions dune ou plusieurs instructions du proe
gramme.

1.4

1.4.1

Dnitions et exemples
e
Compilation

On appelle compilation un mcanisme dexcution de programmes dans


e
e
lequel les analyses lexicale, syntaxique et de typage, ainsi que la transformation du programme en un langage de plus bas niveau, sont eectues par
e
des prtraitements, avec rsultats intermdiaires stocks dans des chiers pere
e
e
e
sistants. En compilation, les chiers produits contiennent toute linformation
ncessaire a lexcution du programme dorigine. On peut excuter un proe
`
e
e
gramme si lon a perdu le chier source, ou mme si on ne la jamais eu.
e
En gnral on rserve aussi ce mot au cas o` la forme nale produite par
e e
e
u
loutil dit de compilation est un langage machine destin ` tre excut par le
eae
e e
processeur correspondant.
Les langages Pascal, ada, C, C++ sont habituellement compils ; rien
e
nempche toutefois de programmer pour ces langages des algorithmes dine
terprtation.
e
1.4.2

Interprtation et programmation incrmentale


e
e

On appelle interprtation un mcanisme dexcution de programmes dans


e
e
e
lequel on repart du texte source ` chaque excution (et donc il ne faut sura
e
tout pas le perdre !) ; il y a ventuellement des prtraitements eectus sur le
e
e
e
texte du programme avant excution, et des formes intermdiaires stockes en
e
e
e
mmoire vive pendant lexcution.
e
e
On confond souvent le fait que le langage soit interprt avec le fait que
ee
lenvironnement de programmation autorise la programmation incrmentale.
e
Dans un environnement de programmation scheme ou lisp, par exemple, on
ajoute des fonctions de mani`re interactive avant de les appeler. De mme, les
e
e
langages de commandes tudis au chapitre 20 sont prvus pour la programe
e
e
mation incrmentale, le langage PostScript galement (loutil dachage
e
e
ghostview est bas sur linterpr`te ghostscript qui permet de programe
e
mer directement en langage PostScript et dobserver le rsultat).
e
La programmation incrmentale implique lexcution par interprtation,
e
e
e
mais linverse est faux.
Les langages scheme, lisp, tcl, postscript, html, ml, prolog sont

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Vie des programmes

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

450

lexique
MAXLIGNE : lentier 100
numligne : le type entier sur 1..MAXLIGNE
Texte : le type squence de caract`res
e
e
{ On suppose lexistence doprations manipulant des textes, comme
e
lgalit note =, la dirence note =, etc. De plus on note les
e
e
e
e
e
constantes texte avec des guillemets. }
Ligne : le type < Mot1, Mot2, Mot3, Mot4, Mot5 : des Textes >
Prog : un tableau sur [1..MAXLIGNE] de Lignes
M1, M2, M3, M4, M5 : des Textes
CP : un entier sur 1..MAXLIGNE+1
{ Le compteur programme, cest-`-dire le numro de la ligne de linsa
e
truction en cours dinterprtation. }
e
DebBoucle : un entier sur 1..MAXLIGNE
vX, vY, vZ : des entiers
tmp1, tmp2 : des entiers ; cond : un boolen
e
N : le numro de la derni`re ligne du texte lu
e
e

ValeurDeNom : un Texte un entier


{ ValeurDeNom (t) est dnie pour un texte t parmi les noms de vae
riables autorises X, Y ou Z, et donne la valeur de la variable
e
correspondante }
ValeurDeNom (t) :
selon t :
t = X : vX
t = Y : vY
t = Z : vZ
AectParNom : une action (la donne t : un Texte, la donne a : un entier)
e
e
{ pour les textes t parmi les noms de variables autorises X, Y ou
e
Z, AectParNom (t, a) aecte ` la variable correspondante (vX, vY
a
ou vZ) la valeur a }
AectParNom (t, a) :
selon t :
t = X : vX a
t = Y : vY a
t = Z : vZ a
ValeurDeNombre : un Texte un entier 0
{ ValeurDeNombre (t) est lentier not t en dcimal. }
e
e
Fig. 18.2 Lexique de lalgorithme dinterprtation
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Interprtation et compilation
e

451

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

CP 1
tantque CP = N+1
M1 Mot1 de Prog[CP]
selon M1 :
M1 = rem : CP CP + 1
M1 = read :
Lire (tmp) ; AectParNom (Mot2 de Prog[CP], tmp) ; CP CP + 1
M1 = write :
Ecrire (ValeurDeNom (Mot2 de Prog[CP])) ; CP CP + 1
M1 = X ou M1 = Y ou M1 = Z :
M3 Mot3 de Prog[CP] ; M4 Mot4 de Prog[CP]
M5 Mot5 de Prog[CP]
tmp1 selon M3
M3 = X ou M3 = Y ou M3 = Z : ValeurDeNom (M3)
sinon ValeurDeNombre (M3)
tmp2 selon M5
M5 = X ou M5 = Y ou M5 = Z : ValeurDeNom (M5)
sinon ValeurDeNombre (M5)
tmp selon M4
M4 = + : tmp1 + tmp2
M4 = * : tmp1 * tmp2
M4 = : tmp1 tmp2
AectParNom (M1, tmp) ; CP CP + 1
M1 = while :
tmp ValeurDeNom (Mot2 de Prog[CP])
cond (tmp = 0)
si cond alors
DebBoucle CP ; CP CP + 1
sinon
tantque Mot1 de Prog[CP] = endwhile : CP CP + 1
CP CP + 1
{ on est sur la ligne qui suit la ligne du endwhile }
M1 = endwhile : CP DebBoucle
M1 = if :
cond (ValeurDeNom (Mot2 de Prog[CP])) > 0
si cond alors CP CP + 1
sinon
tantque Mot1 de Prog[CP] = else : CP CP + 1
CP CP + 1
M1 = then : CP CP + 1
M1 = else :
tantque Mot1 de Prog[CP] = endif : CP CP + 1
M1 = endif : CP CP + 1
sinon : Ecrire (Erreur : instruction inconnue :, M1)
Fig. 18.3 Algorithme dinterprtation
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

452

Vie des programmes

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

habituellement interprts. Pour certains dentre eux il existe galement un


ee
e
compilateur, qui permet dacclrer les excutions. Cest le cas par exemple de
ee
e
ml ou scheme.
1.4.3

Compilation dynamique

Dans le cas de linterprtation, on peut imaginer un prtraitement qui


e
e
consisterait ` produire ` partir du texte de programme lquivalent en asa
a
e
sembleur ou en langage machine. Tant que cette forme intermdiaire nest pas
e
stocke dans un chier persistant, on peut considrer quil sagit toujours dun
e
e
mcanisme dinterprtation. On trouve parfois le nom de compilation dynae
e
mique pour parler de ces situations.
1.4.4

Emulation

Nous avons vu au chapitre 12 la notion de compatibilit de familles de


e
processeurs. Si les deux machines sont tr`s direntes, le constructeur fournit
e
e
un mulateur du langage machine n sur la machine n + 1. Un mulateur est
e
e
un programme, crit dans un langage quelconque, par exemple C, et compil
e
e
sur la nouvelle machine, avec le nouveau compilateur C. Ce programme est un
interpr`te du langage machine n. Le code objet des anciens programmes nest
e
donc plus directement interprt par un processeur, mais par un programme,
ee
lui-mme compil et excut sur un autre processeur.
e
e
e e
Cest le cas des macintosh : Apple fournit un mulateur de 68000 parmi
e
les programmes du logiciel de base fourni avec les machines ` PowerPC.
a
1.4.5

Code intermdiaire
e

Pour certains langages de haut niveau, il est dicile de dire si lexcution


e
est assure par un mcanisme dinterprtation ou de compilation. En eet, le
e
e
e
programme est dabord compil dans un code intermdiaire stock dans un
e
e
e
chier, lequel est ensuite interprt. Cest le cas du pascal UCSD compil en
ee
e
P-code, de prolog et java.
Si lon construit une machine dont le langage machine est exactement le
code intermdiaire, on dispose dun mcanisme dexcution par compilation,
e
e
e
au sens dni plus haut. Sinon le code intermdiaire doit tre interprt par
e
e
e
ee
programme.

2.

Compilation spare et code translatable


e
e

Nous revenons sur le mcanisme dexcution par compilation, pour prciser


e
e
e
les probl`mes ` rsoudre dans le cas raliste o` les programmes ne sont pas
e
a e
e
u
traits globalement par les outils de traduction. Lexpos est bas sur un
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Compilation spare et code translatable


e e

453

/* FICHIER fact.h */
extern long Fact (short) ;

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

/* FICHIER main.c */
include <stdio.h>
include "fact.h"
void main ()
{
long R ; short n ;

printf("Donnez un entier : ") ;


scanf ("%hd", &n) ;
R = Fact (n) ;
printf("Fact(%d)=%d", n, R) ;

/* FICHIER fact.c */
include "fact.h"
long Fact(short x)
{
if (x==0)
return 1 ;
else
return x * Fact (x-1) ;
}

Fig. 18.4 (a) Factorielle en C

exemple tr`s simple crit en C ; le lecteur familier dun langage de ce type


e
e
transposera facilement le discours dans le langage de son choix.

2.1

Un exemple en C

Nous donnons gure 18.4 un exemple de programme C dcompos en trois


e
e
chiers : main.c qui contient le programme principal, lequel fait appel ` une
a
fonction Fact non dnie dans ce chier-l` ; fact.c qui contient la dnition
e
a
e
compl`te de la fonction Fact (prol et corps) ; fact.h qui contient le prol
e
de la fonction Fact. Ce chier dit dinterface est inclus dans le chier du
programme principal, qui peut ainsi tre compil indpendamment du chier
e
e
e
qui contient le corps de la fonction Fact.
Le chier dinterface est galement inclus dans le chier qui contient la
e
dnition compl`te de la fonction Fact ; cette redondance de dnitions pere
e
e
met de faire vrier au compilateur la conformit entre la version de Fact du
e
e
chier fact.c et la version publie dans fact.h ` lusage dautres chiers utilie
a
sateurs comme main.c. Noter toutefois que linclusion de fact.h dans fact.c
nest pas obligatoire ; cest une prcaution du programmeur, pour viter des
e
e
erreurs dues au mcanisme tr`s rudimentaire qui sert de support ` la programe
e
a
mation modulaire en C. Un langage comme Ada ore en revanche un support
compl`tement contrl.
e
oe
Les paragraphes suivants dtaillent la structure de lexemple.
e

2.2

Notion de compilation spare


e
e

La compilation spare consiste ` raliser la compilation dun programme,


e e
a e
en traitant sparment direntes portions de ce source qui, par consquent,
e e
e
e
peuvent mme tre ranges dans des chiers dirents.
e
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

454

Vie des programmes

outil

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

chier
source
1

chier
source
2

concatnation
e
de textes

outil

outil

chier

outil

Fig. 18.5 Schma gnral de compilation spare


e
e e
e e

La gure 18.5 donne le schma gnral de la compilation spare, dans le


e
e e
e e
cas de deux chiers source. On tend facilement au cas de n chiers source.
e
Si le programme est constitu de deux chiers source 1 et 2, la compilation
e
spare fournit des outils et tels que le diagramme commute :
e e
= ((1), (2)) = ((1, 2))

Autrement dit, on obtient le mme rsultat en compilant sparment les deux


e
e
e e
chiers 1 et 2 grce ` loutil et en rassemblant les rsultats grce ` loutil
a a
e
a a
, quen compilant grce ` loutil le chier obtenu par simple concatnation
a a
e
des chiers source 1 et 2.
Pour comprendre ce schma de principe et les contraintes qui portent sur
e
la dnition des outils , ou sur la structure du format des chiers 1, 2,
e
il faut se poser 3 questions, dont les rponses sont lies :
e
e
Etant donn un programme donn dans un seul chier source, comment
e
e
sparer ce programme en plusieurs chiers source distincts, de telle sorte
e
quils puissent tre traits indpendamment lun de lautre par loutil ?
e
e
e
Quel type dinformation doit-on trouver dans le format des chiers 1, 2,
pour quil soit possible de dnir loutil ?
e
Que gagne-t-on ` mettre en oeuvre un tel mcanisme, ncessairement plus
a
e
e
compliqu que la compilation centralise ?
e
e
Nous rpondons ci-dessous aux trois questions, sans supposer tout de suite
e
que le format produit par loutil correspond ` du langage machine. Cela
a
permet de comprendre la compilation spare indpendamment de la produce e
e
tion de code translatable. En eet les deux probl`mes sont conceptuellement
e
indpendants, mme sils sont en gnral traits conjointement dans les envie
e
e e
e
ronnements de programmation usuels.
Lexamen des trois questions ci-dessus conduit galement ` tudier la notion
e
ae
de porte des noms dans un langage de programmation.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Compilation spare et code translatable


e e

Sparation dun programme et notion dinterface


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

2.2.1

455

La possibilit de sparation dun programme en plusieurs chiers dpend


e
e
e
du langage source dans lequel les programmes sont crits, et du format des
e
chiers 1, 2.
Si la transformation se rduit ` liminer les commentaires, par exemple, il
e
ae
sut de dcouper le programme sans couper les commentaires, et le schma de
e
e
compilation spare fonctionne : se contente de concatner les textes 1, 2.
e e
e
Toutefois il nest pas intressant de dvelopper un tel mcanisme simplee
e
e
ment pour raliser llimination des commentaires de mani`re spare (voir
e
e
e
e e
aussi la rponse ` la question Que gagne-ton ?).
e
a
Supposons donc que le format des chiers 1, 2 soit plutt du langage
o
dassemblage (ou du langage machine ventuellement assorti dinformations
e
supplmentaires, voir rponse ` la question suivante), et considrons un langage
e
e
a
e
source du type de celui tudi au chapitre 4.
e
e
Il para peu probable que la compilation spare soit ralisable si lon
t
e e
e
coupe un chier source au milieu du corps dune fonction ou dune procdure :
e
le principe de gnration de code pour les langages ` structure de blocs tudi
e e
a
e
e
au chapitre 13 produit un prologue et un pilogue tr`s symtriques pour chaque
e
e
e
bloc, et il est donc ncessaire de disposer de ce bloc compl`tement en une seule
e
e
fois.
On imagine facilement, en revanche, que le programme puisse tre coup
e
e
entre deux procdures ou fonctions ; nous avons montr au chapitre 13, pae
e
ragraphe 3.2, comment produire du code indpendamment pour les dirents
e
e
blocs. Il sut ensuite de concatner les textes en langages dassemblage (ou
e
les programmes en langage machine) obtenus pour les dirents blocs.
e
En ralit la compilation dun bloc nest pas possible de mani`re
e e
e
compl`tement indpendante des autres portions. Pour gnrer le code dun ape
e
e e
pel de procdure, il est ncessaire de conna le prol exact de cette procdure,
e
e
tre
e
pour raliser correctement le passage de param`tres en tenant compte de la
e
e
reprsentation en mmoire des types des param`tres formels et du mode de
e
e
e
passage des param`tres.
e
Toutefois il nest pas ncessaire de conna le corps de la procdure ape
tre
e
pele. Cette distinction entre prol et corps de fonction conduit ` la notion
e
a
dinterface de portion de programme.
Sur lexemple du calcul de la fonction factorielle donn en C ci-dessus,
e
linterface fact.h reprend la ligne de dclaration de la fonction Fact. Ce chier
e
est inclus dans le programme principal main.c : cela sut pour savoir compiler
lappel de Fact.
Le prol dune fonction est linformation ncessaire et susante ` done
a
ner aux utilisateurs ventuels de cette fonction. La mme distinction entre
e
e
dnition compl`te dun objet du programme, et information rduite ncessaire
e
e
e
e
aux utilisateurs, peut tre tudie pour dautres classes dobjets dans les lane
e
e
gages de programmation : constantes, variables, types, etc.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

456

2.2.2

Vie des programmes

Rassemblement de codes

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Supposons que lon a produit du code sparment pour deux portions de


e e
programme source. Il faut maintenant savoir rassembler les direntes portions
e
de code pour constituer le code du programme global.
Reprenons lexemple du dcoupage du programme entre les procdures et
e
e
fonctions pour un langage dans lequel les programmes sont des collections de
fonctions. Cest le cas de C ; le programme principal nest pas intrins`quement
e
dirent des autres fonctions du chier, et doit simplement sappeler main.
e
Cela signie simplement que le choix du point dentre dans le code produit `
e
a
partir du programme C se fait par convention sur un nom de fonction rserv.
e
e
En Pascal, en revanche, la syntaxe du langage demande dexpliciter le programme principal, dans un bloc begin...end non nomm. Le code produit
e
pour ce bloc a la mme structure que celui produit pour une procdure ordie
e
naire, et cest le point dentre du programme.
e
La situation typique de compilation spare correspond au cas dune fonce e
tion dnie dans le chier source 1, et utilise dans le chier source 2, comme
e
e
la fonction Fact de lexemple en C. Linclusion du chier fact.h donnant le
prol de la fonction Fact, dans le chier main.c, a servi dans la phase , pour
gnrer correctement la squence dappel ` la fonction.
e e
e
a
Supposons que lon a obtenu deux chiers en langage dassemblage qui
contiennent : lun une instruction du genre call Fact, lautre une portion de
code ` ltiquette Fact : .
a e
Pour obtenir le code du programme global, il sut de concatner les deux
e
chiers en langage dassemblage obtenus. Puisque ce ne sont que deux collections de fonctions, le chier concatn reprsente lunion des deux collections,
e e
e
et lordre na pas dimportance.
Un probl`me peut toutefois survenir lorsque les deux chiers comportent
e
chacun une dnition dune tiquette L :. En eet, il est incorrect, dans un
e
e
texte en langage dassemblage, de dnir deux fois la mme tiquette.
e
e
e
Ces considrations sur les noms des tiquettes (qui correspondent aux noms
e
e
des objets du programme en langage de haut niveau) nous am`nent ` dnir
e
a e
la notion de porte des noms dans les langages de programmation.
e
2.2.3

Notion de porte des noms


e

Le conit de noms ventuel rencontr lors de la fusion de deux chiers


e
e
produit par loutil suppose que les tiquettes dnies dans les chiers 1, 2
e
e
sont visibles partout.
Certaines dentre elles proviennent de noms dobjets du programme source,
en particulier les tiquettes qui rep`rent le dbut du code des fonctions et
e
e
e
procdures. Dautres ont t cres de toutes pi`ces pour coder les structures
e
e e ee
e
conditionnelles et itratives (Cf. Chapitre 13, Figure 13.1).
e
Pour ces derni`res, il est particuli`rement ennuyeux quelles soient visibles
e
e
partout. En eet, la compilation spare dun programme risque fort de proe e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Compilation spare et code translatable


e e

457

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

duire les mmes noms pour le codage des structures de contrle, et ces noms
e
o
seront identis par loutil de fusion .
e
Pour les tiquettes provenant de noms dobjets du programme source, cela
e
peut para moins contraignant : il est ` la charge du programmeur de ne
tre
a
pas dnir deux fois la mme fonction dans deux chiers dirents du mme
e
e
e
e
programme. Toutefois, si lon imagine un programme vraiment tr`s grand, crit
e
e
par une quipe de 50 programmeurs, il est fort probable que deux dentre eux
e
auront crit une fonction max pour des besoins locaux. Dans un langage comme
e
Ada, C ansi, Pascal, on peut cacher la dnition de la fonction max dans une
e
autre fonction, et le probl`me est rduit : pour ces fonctions locales, le mme
e
e
e
mcanisme de porte que pour les variables locales de procdures sapplique.
e
e
e
Le probl`me subsiste pour les fonctions principales, qui ne sont incluses dans
e
aucune autre.
Ces probl`mes trouvent une solution dans la structure de modules des lane
gages de programmation, implmente de mani`re plus ou moins propre et
e
e
e
contrle selon les langages.
oe
Lide de base, que lon retrouve dans le mcanisme rudimentaire de
e
e
dnition de porte par chier en C, consiste ` permettre un regroupement
e
e
a
dobjets du langage dans un module. A lintrieur dun module, des objets
e
sont dnis et localement utilisables. Pour tre visibles de lextrieur (dans les
e
e
e
autres modules), ils doivent tre exports. Il devient donc possible de dnir
e
e
e
deux fonctions max dans deux modules dirents, du moment quon ne les exe
porte pas. Linterface dun module rcapitule les objets dnis dans ce module
e
e
et utilisables ` lextrieur.
a
e
En C, la notion de module correspond ` la structure de chier. Ce nest
a
pas le cas en Ada par exemple, o` un mme chier peut contenir plusieurs
u
e
modules ou packages. En C, tout objet dni dans un chier est par dfaut
e
e
export. Pour cacher sa dnition ` lextrieur, il faut prxer sa dclaration
e
e
a
e
e
e
par le mot-cl static. En langage dassemblage, cest souvent linverse : toute
e
tiquette dnie est locale au chier, sauf exportation explicite. Dans les lane
e
gages dassemblage que nous avons utiliss dans cet ouvrage, lexportation
e
explicite se fait par une directive .global (voir par exemple lexemple donn
e
Figure 12.9 du chapitre 12).
Ce mcanisme rudimentaire de masquage des noms ne saurait tre quali
e
e
e
de support ` la programmation modulaire. Un inconvnient majeur est limposa
e
sibilit de partager un nom entre deux chiers (ou modules) dun programme,
e
sans le partager galement avec tous les autres : la directive dexportation est
e
tous azimuts.
2.2.4

Avantages de la compilation spare


e
e

Rcapitulons les aspects tudis ci-dessus, pour rpondre ` la troisi`me


e
e
e
e
a
e
question : que gagne-t-on ` mettre en oeuvre un mcanisme de compilation
a
e
spare ?
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

458

Vie des programmes

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

On gagne du temps de compilation. Attention, cet argument nest valable


quen raison des multiples compilations que subit un mme programme au
e
cours de sa vie. Pour une compilation unique, le schma de compilation
e
spare ne peut pas tre plus rapide quun schma de compilation global,
e e
e
e
puisquil g`re des informations supplmentaires (voir dtails ci-dessous). Il
e
e
e
est donc plus prcis de dire que lon gagne du temps sur un ensemble de n
e
compilations : si lon modie le chier 1 sans toucher au chier 2, il sut
de recompiler le chier 1 et de raliser ltape pour obtenir le programme
e
e
excutable ` jour. Pour que largument tienne, il faut galement que la
e
a
e
dure dune tape soit tr`s infrieure ` celle dune tape .
e
e
e
e
a
e
Le schma de compilation spare permet aussi de dvelopper des proe
e e
e
grammes complexes qui utilisent certaines portions de programmes directement sous forme compile. On y gagne la notion de biblioth`que, distribuable
e
e
sous forme compile seulement. Ainsi tout syst`me unix est fourni avec de
e
e
nombreuses biblioth`ques de fonctions utilisables dans des programmes C,
e
dont les fonctions dentres/sorties printf et scanf, ou encore les fonctions
e
mathmatiques cos, sin, etc. Une biblioth`que de fonctions est compose
e
e
e
de deux chiers : un chier objet qui contient le code des procdures et
e
fonctions, et un chier texte dit dinterface, qui donne les prols de ces
procdures et fonctions. La gure 18.6 donne un exemple obtenu par la
e
commande man cos sur un syst`me unix standard.
e
Le schma de compilation spare autorise galement la programmation
e
e e
e
multilangages : si lon dispose, pour deux langages dirents L1 et L2, des
e
traducteurs , on peut rassembler les chiers produits et obtenir un programme excutable global, dont certaines parties taient ` lorigine crites
e
e
a
e
en L1, et dautres en L2. Cela implique toutefois de fortes contraintes sur
la structure de L1 et L2, qui doivent tre compilables dans le mme fore
e
mat. Nous utilisons beaucoup dans les parties V et VI la programmation
multilangages C et langage dassemblage.
Enn le schma propos permet de dnir une notion de porte des noms
e
e
e
e
dobjets par chier (mme si ce nest pas ` proprement parler une bonne
e
a
ide). Le diagramme de la gure 18.5 ne commute donc pas rellement :
e
e
si lon dnit deux fonctions de mme nom dans les chiers source 1 et 2,
e
e
le chemin par concatnation de textes rel`ve une erreur ; en revanche, le
e
e
chemin par compilation spare ne rel`ve pas derreur, ` condition que les
e e
e
a
deux fonctions soient caches dans leurs chiers respectifs, cest-`-dire non
e
a
exportes.
e

2.3

Traduction des tiquettes en adresses et notion de


e
code translatable

La notion de code translatable et son intgration dans le schma gnral


e
e
e e
de compilation spare prsent ci-dessus suppose que lon xe le format des
e e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Compilation spare et code translatable


e e

cos(3M)

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Mathematical Library

459

NAME

cos - cosine function


SYNOPSIS
cc [ flag ... ] file ... -lm [ library ... ]
include <math.h>
double cos(double x) ;
DESCRIPTION
The cos() function computes the cosine of x, measured in radians.
RETURN VALUES
Upon successful completion, cos() returns the cosine of x.
If x is NaN or +Inf, NaN is returned.

Fig. 18.6 Fonction cos de la biblioth`que mathmatique. Le paragraphe SYNOPSYS


e
e
indique successivement : la commande compilation et dition de liens ` utie
a
liser pour spcier lutilisation de la biblioth`que lm ; la ligne dinclusion
e
e
du chier dinterface, ` placer dans tout chier utilisateur ; le prol de la
a
fonction cos.

chiers produits par loutil . Il sagit de langage machine, cest-`-dire dun


a
format obtenu apr`s traduction des tiquettes ou symboles du langage dasseme
e
blage en adresses.
Le choix de la nature des informations prsentes dans un chier objet transe
latable est le rsultat dun compromis entre deux contraintes : 1) la phase
e
doit eectuer le maximum de travail, et la phase le minimum, pour que
largument de gain de temps tienne ; 2) si lon veut pouvoir placer le programme nimporte o` en mmoire, il est impossible de raliser, dans , la
u
e
e
totalit des transformations qui vont du chier source au code binaire directee
ment excutable.
e
Nous examinons le probl`me de la traduction des tiquettes en adresses,
e
e
et la notion dutilisation relative ou absolue dun symbole, sur un exemple en
langage dassemblage pour processeur sparc (Figure 18.7).
2.3.1

Utilisation relative dun symbole

Considrons le cas de linstruction ba debut. Il sagit dune utilisation relae


tive du symbole debut (Cf. Chapitre 12, paragraphe 1.4.3). En ce qui concerne
la traduction des symboles en adresses, cela signie simplement que le symbole debut nest utilis, dans linstruction ba debut, que pour sabstraire dun
e
calcul explicite de la distance entre linstruction de branchement et sa cible.
Lassembleur compte les instructions et remplace ba debut par ba 4 (on
compte en nombre dinstructions).
La notion dutilisation relative de symbole est une proprit intrins`que
ee
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

460

Vie des programmes

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

.data
D :
.long 42 ! une donne de 32 bits initialise ` la valeur 42
e
e a
.text
debut :
sethi %hi (D), %r1
! couple dinstructions destin
e
or %r1, %lo(D), %r1
! ` ranger la valeur sur 32 bits de
a
! ladresse reprsente par D dans r1
e
e
ld [%r1], %r2
! chargement depuis la mmoire
e
! du mot dadresse r1
! ici r2 doit contenir 42.
nop
ba debut
! branchement inconditionnel
nop
Fig. 18.7 Utilisation relative ou absolue dun symbole

dune instruction du langage machine considr. Le processeur sparc a deux


ee
instructions relatives : les branchements et les appels de procdures call.
e
Toutes les autres instructions utilisant des symboles en font une utilisation
absolue.
Le processeur 68000 a une instruction de branchement relatif, similaire `
a
celle du sparc. En revanche linstruction jsr de saut ` un sous-programme
a
est absolue.
2.3.2

Utilisation absolue dun symbole

Le cas des instructions sethi %hi (D), %r1 et or %r1, %lo(D), %r1 est
plus compliqu. Toutes deux sont des utilisations absolues du symbole D. De
e
mme linstruction add %r1, X, %r2 est une utilisation absolue de X. Attene
tion, il ny a pas dindirection implicite, et il sagit bien dajouter au registre r1 la valeur dadresse associe au symbole X ; toutefois, cette valeur
e
est ncessairement tronque ` 13 bits puisque cest la taille du champ valeur
e
e a
immdiate dans le codage de linstruction add du sparc.
e
Du point de vue de la traduction des symboles en adresses, cela signie que
le symbole D doit tre remplac par ladresse ` laquelle se trouvera la donne
e
e
a
e
42, en mmoire vive, lors de lexcution du programme.
e
e
Cette adresse ne peut tre connue ` lassemblage que si le chargeur (Cf. Chae
a
pitre 20) dcide de toujours installer les programmes ` excuter ` une adresse
e
a e
a
xe A connue de lassembleur ; dans ce cas, lassembleur peut remplacer le
symbole D par une valeur de la forme A + d, o` d reprsente la position relative
u
e
de la donne D dans le code produit pour ce programme. Ici, en supposant que
e
les donnes sont places apr`s les instructions, d = 6 4 octets, puisquil y a
e
e
e
6 instructions codes sur 4 octets avant la donne repre par D.
e
e
ee
Toutefois, dans les syst`mes multitches, le chargeur g`re la mmoire de
e
a
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Compilation spare et code translatable


e e

0000001100 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?sethi %hi (D), %r1


???
1000001000010000011 ? ? ? ? ? ? ? ? ? ? ? ?or %r1, %lo(D), %r1
?
11000100000000000100000000000000
ld [%r1], %r2
10000000000000000000000000000000
nop (add %g0, %g0, %g0)
00010000101111111111111111111100
ba debut (ba -4)
10000000000000000000000000000000
nop (add %g0, %g0, %g0)
00000000000000000000000000101010
.long 42

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

A
A+4
A+8
A+12
A+16
A+20
A+24

461

Fig. 18.8 Contenu de la mmoire ` lexcution


e
a
e

mani`re disperse, et ladresse de chargement dun programme donn nest


e
e
e
connue quau dernier moment. Dans le programme en langage machine produit
par loutil et stock dans un chier persistant, le symbole D na donc pas
e
encore t remplac par ladresse absolue qui lui correspond, et qui dailleurs
ee
e
dpend de lexcution.
e
e
2.3.3

Contenu de la mmoire ` lexcution


e
a
e

La gure 18.8 montre ce que doit tre le contenu de la mmoire vive lors de
e
e
lexcution du programme de la gure 18.7. Chaque instruction est code sur
e
e
32 bits. Les donnes sont supposes places en mmoire apr`s les instructions :
e
e
e
e
e
on trouve en derni`re ligne le codage en binaire de la valeur 4210 , sur 32 bits.
e
La colonne de gauche donne les adresses, en supposant que le programme a
t install en mmoire ` ladresse A. Linstruction ba debut a t enti`rement
ee
e
e
a
ee
e
code, le champ dplacement contient le codage en complment ` 2, sur 22
e
e
e
a
bits, de la valeur 4.
La question intressante est : que contiennent les deux champs de bits nots
e
e
par des ? ? Linstruction sethi comporte un champ de 22 bits qui contient
une valeur immdiate. sethi %hi(D), %r1 signie quil faut utiliser les 22
e
bits de poids fort (high) de la valeur dadresse reprsente par D comme vae
e
leur immdiate. Or D = A + 24, donc hi(D) = hi(A + 24). De mme, or
e
e
%r1, %lo(D), %r1 signie quil faut placer dans le champ de 13 bits rserv
e
e
a
` une valeur immdiate, les 10 bits de poids faible (low) de la valeur dadresse
e
reprsente par D, ce qui vaut : lo (A + 24).
e
e
Ces deux valeurs dpendent de ladresse de chargement A, et les deux
e
champs reprsents par des ? ne peuvent donc pas tre remplis correctement
e
e
e
tant que lon ne conna pas A.
t
2.3.4

Fichier objet translatable et algorithme de translation


dadresses

Le chier objet translatable est une tape intermdiaire entre le programme


e
e
en assembleur donn gure 18.7 et le contenu de la mmoire vive lors de
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

462

Vie des programmes

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

lexcution de ce programme. La phase qui va du programme en assembleur au


e
chier translatable est appele assemblage, elle laisse des trous dans le codage
e
binaire des instructions et des donnes. La phase qui va du chier translatable `
e
a
limage mmoire du programme est appele chargement/lancement (Cf. Chae
e
pitre 20). Outre les aspects syst`me dallocation de mmoire, le mcanisme
e
e
e
de chargement/lancement applique lalgorithme de translation dadresses que
nous dnissons ici, et qui a pour but de remplir les trous.
e
Pour permettre ` la procdure de chargement/lancement de complter les
a
e
e
trous, le chier translatable doit contenir des informations additionnelles appeles donnes de translation, qui dcrivent o` se trouvent les instructions ou
e
e
e
u
les donnes incompl`tes (les trous) et comment les complter le moment venu.
e
e
e
Pour chaque trou, le chier objet translatable fournit une donne de transe
lation. Intuitivement, pour lexemple tudi plus haut, linformation ncessaire
e
e
e
est la suivante : il existe un trou de 22 bits cadr ` droite dans le mot dadresse
ea
A + 0, ` remplir avec les 22 bits de poids forts de la valeur (A + 24), nots
a
e
hi22(A + 24). Il existe un trou de 13 bits cadr ` droite dans le mot dadresse
ea
A + 4, ` remplir avec les 10 bits de poids faibles de la valeur (A + 24), nots
a
e
lo10(A + 24).
Une donne de translation comporte donc les informations suivantes : 1) la
e
position du trou ` remplir et sa taille, donne de mani`re relative au dbut du
a
e
e
e
programme ; 2) le mode de calcul de la valeur ` utiliser : cest une fonction de
a
A, dans laquelle appara une constante (ici 24) connue ` lassemblage (cest
t
a
le dcalage de la position du symbole D par rapport au dbut du programme).
e
e
Le mode de calcul est donc compos dune constante K et dune expression
e
dans laquelle faire intervenir la constante K et A.
Les donnes de translation sont bien sr codes sur un format xe ni, et
e
u
e
il est hors de question de coder des modes de calcul (des expressions) quelconques, comme par exemple hi((A + 24) 42). En ralit, lensemble des
e e
expressions ncessaires est enti`rement dni par le jeu dinstructions de la
e
e
e
machine considre. Par exemple, pour sparc, les expressions ncessaires pour
ee
e
complter tous les trous possibles dans les instructions et les donnes sont au
e
e
nombre de 32. Il sut de 5 bits pour les coder. Ce codage est une convention
syst`me, connue de tous les outils qui produisent des chiers objets translae
tables, et de la procdure de chargement/lancement qui les interpr`te.
e
e
Nous donnons Figure 18.9 une bauche dalgorithme de translation
e
dadresses pour sparc, en faisant appara les deux expressions ncessaires
tre
e
dans lexemple de la gure 18.7 et la donne de translation ncessaire au codage
e
e
de linstruction add %r1, X, %r1.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

2. Compilation spare et code translatable


e e

463

lexique
ModeDeCalcul : le type (reloc hi22, reloc lo10, reloc13, ...)
{ Type numr reprsentant les expressions de calcul. Les noms sont les
e
e e
e
noms eectifs utiliss dans les syst`mes ` base de sparc. En anglais, transe
e
a
lation se dit relocation }
DonneTranslation : le type <
e
position : un entier 0, mode : un ModeDeCalcul,
const : un entier >
{ La taille du trou est implicitement code dans le mode de calcul ; la position
e
du trou est donne en adresses dinstructions (donc cest un multiple de 4)
e
car le codage des instructions sparc est tel que les trous sont toujours
cadrs ` droite. }
e a
D : une DonneTranslation
e
Masque22pF : lentier ((222 1) 210 )
{ 22 bits ` 1 en poids Forts, 10 bits ` 0 en poids faibles. Pour les dtails de
a
a
e
construction, revoir le paragraphe 4. du chapitre 3, ` propos du lien entre
a
larithmtique et les boolens. }
e
e
Masque10pf : lentier 210 1
Masque13pf : lentier 213 1
{ 10 (ou 13) bits ` 1 en poids faibles, 22 (ou 19) bits ` 0 en poids Forts }
a
a
algorithme
{ Le chier objet translatable a t copi en mmoire ` partir de ladresse A,
ee
e
e
a
instructions dabord, donnes ensuite, comme sur la gure 18.8. On parcourt
e
les donnes de translation du chier objet. }
e
D parcourant les donnes de translation du chier :
e
selon D.mode :
{ On modie un mot de 32 bits dans la mmoire, ` ladresse
e
a
A+D.position, en superposant un autre mot de 32 bits, grce ` une
a a
opration OR bit ` bit. Voir chapitre 12, paragraphe 1.4.1 }
e
a
D.mode = reloc hi22 :
MEM [A + D.position] 4
MEM [A + D.position] OR (((A + D.const) ET Masque22pF) / 210 )
D.mode = reloc lo10 :
MEM [A + D.position] 4
MEM[A + D.position] OR ((A + D.const) ET Masque10pf)
D.mode = reloc 13 :
MEM [A + D.position] 4
MEM [A + D.position] OR ((A + D.const) ET Masque13pf
....

Fig. 18.9 Algorithme de translation dadresses pour sparc.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Vie des programmes

3.

Format des chiers objets translatables et


dition de liens
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

464

3.1

Edition de liens, dnition


e

Ldition de liens consiste ` prendre un ensemble de chiers translatables


e
a
et ` tenter de les rassembler pour en faire un chier unique excutable. Ce
a
e
nest pas exactement la spcication de loutil de la gure 18.5. Loutil
e
ralise en fait la fusion de deux chiers objet translatables, et donne un chier
e
du mme type. Une erreur peut survenir lors de la fusion en cas de double
e
dnition dun symbole.
e
Ldition de liens peut tre vue comme un mcanisme de fusion n-aire (ou
e
e
e
bien binaire, et on fusionne les chiers deux par deux), suivie dune tape de
e
vrication : pour que lensemble des chiers fournis constitue eectivement
e
un programme excutable, il ne doit plus y avoir de symbole indni (un appel
e
e
dune fonction qui nest dnie nulle part, par exemple). Noter que lorsquon
e
utilise une fonction en biblioth`que, la commande ddition de liens spcie
e
e
e
la biblioth`que, cest-`-dire que cette biblioth`que est prise en compte dans
e
a
e
lensemble des chiers ` rassembler.
a
Ldition de liens de n chiers F1 , ..., Fn peut tre ralise par lalgorithme
e
e
e e
suivant (mme si ce nest pas tr`s raliste) :
e
e e
F (F1 , F2 )
F (F , F3 )
...
F (F , Fn )
{ Des erreurs de double dnition peuvent survenir lors des fusions }
e
Si le chier F contient des symboles indnis alors
e
ERREUR
sinon
Transformer F en chier excutable
e
{ ce nest pas tout ` fait le mme format que les chiers objet translatables,
a
e
voir dtails ci-dessous. }
e

On peut considrer que tout chier soumis ` la procdure de chargee


a
e
ment/lancement est complet, cest-`-dire quil ne comporte plus de symboles
a
indnis.
e

3.2

Format dun chier objet translatable

Comme signal plus haut, un chier objet translatable est constitu essene
e
tiellement de langage machine. Nous avons dni au paragraphe prcdent les
e
e e
besoins en informations supplmentaires relatives ` la translation dadresses.
e
a
Il nous faut ici complter ces informations par la table des symboles. En
e
eet, en tudiant loutil au paragraphe 2.2.2, nous avons suppos que le
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
ch
it
P.
Am ectu
F.
bl
ar res
La
P.
d,
gn
Lo
ie
Si
r, J.-C gici
ca
rd
el
.
F.
,
Ma Fern les
Ph
ra
.
ni ande et M
Wa
nc
il
at
hi z,
le
e
r
,
ie
ll
es

3. Format des chiers objets translatables et dition de liens


e

465

format produit par est du langage dassemblage, dans lequel on retrouve


facilement les noms des fonctions sous forme de symboles (ou tiquettes). La
e
table des symboles sert ` tablir le lien entre les noms du programme dorigine
ae
et des adresses dans le programme en langage machine correspondant. Les
noms sont indispensables ` la fusion de deux chiers en langage machine ; cest
a
le seul moyen de mettre en correspondance une instruction issue de lappel
dune procdure F avec ltiquette qui marque le dbut du code de F. Cest
e
e
e
aussi dans la table des symboles quon trouve linformation relative ` la porte
a
e
des noms, ncessaire lors de la fusion.
e
Nous dtaillons ci-dessous la structure dun chier objet. Nous nous inse
pirons des chiers objet solaris, mais lexpos vaut pour la plupart des
e
syst`mes. Un chier objet est compos de sections dont les formats di`rent.
e
e
e
On y trouve au dbut une en-tte puis, dans un ordre x mais quelconque, les
e
e
e
zones TEXT et DATA, les zones de translation TEXT et DATA, la table des
symboles et la table des cha
nes. Nous dtaillons ces diverses zones ci-dessous.
e
3.2.1

En-tte
e

Un chier objet translatable commence par une en-tte qui constitue en


e
quelque sorte la carte du chier. On y trouve en particulier lindication sur la
taille de toutes les autres sections, qui permet dy accder directement par des
e
dcalages (Cf. Chapitre 19).
e
On y trouve aussi la taille de la zone BSS du programme dorigine. La
section BSS des programmes en langage dassemblage est analogue ` la seca
tion DATA, mais on ne fait quy demander la rservation dune certaine zone
e
mmoire, sans dclarer de valeur initiale. La seule information ncessaire dans
e
e
e
le chier objet est donc la taille de cette zone, alors que pour la zone DATA
il faut stocker le codage de toutes les valeurs initiales. Au moment du chargement/lancement, lallocation de mmoire est faite en tenant compte des besoins
e
de la zone BSS.
Enn len-tte indique le point dentre du programme, cest-`-dire o` se
e
e
a
u
trouve linstruction correspondant au dbut du programme principal, parmi
e
toutes les instructions de la zone TEXT. Le point dentre est donn comme
e
e
un dcalage par rapport au dbut de la zone TEXT.
e
e
3.2.2

Zones TEXT et DATA

La zone TEXT contient le codage binaire des instructions du programme.


Elle comporte ventuellement des trous, comme dj` vu sur lexemple du pae
ea
ragraphe 2.3.
La zone DATA contient le codage binaire des valeurs initiales spcies
e e
dans le programme en assembleur. Elle peut galement comporter des trous.
e
Dans les exemples que nous avons vus jusque l`, il ny a jamais dutilisation
a
de symbole en zone DATA, et donc pas de probl`me dutilisation absolue. La
e
syntaxe de lassembleur autorise pourtant des dclarations de zones DATA de
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

466

Vie des programmes

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

la forme :
X:
Y:

.long
.long
.long
.long

42
212
X
Y - X

! utilisation absolue du symbole X


! utilisation relative des symboles Y et X

A lexcution, le mot de 32 bits situ en troisi`me position dans la zone des


e
e
e
donnes initialises contiendra ladresse eective correspondant au symbole X.
e
e
Cest une utilisation absolue de X, et lassembleur ne peut produire le mot de
32 bits correct.
En revanche, lexpression Y - X est une utilisation relative des deux symboles X et Y : la dirence des adresses reprsentes par ces deux symboles ne
e
e
e
dpend pas de ladresse de chargement du programme, et peut tre calcule
e
e
e
lors de lassemblage ; elle vaut 4. Une telle dclaration en zone DATA utilise
e
les symboles de la mme mani`re que linstruction de branchement ba debut
e
e
de lexemple tudi plus haut.
e
e
3.2.3

Table des symboles et table des cha


nes

Pour conserver linformation relative aux noms des symboles, le chier comporte une table des cha
nes et une table des symboles.
La table des cha
nes est un tableau de caract`res o` sont ranges, les unes
e
u
e
apr`s les autres et spares par des 0, toutes les cha
e
e e
nes de caract`res qui
e
sont des noms dtiquettes (et non pas les cha
e
nes de caract`res qui sont des
e
donnes du programme, dclares par des directives .asciz "machaine" dans
e
e
e
la zone DATA, et dont le code ASCII est prsent dans la zone DATA du
e
chier objet). Isoler la table des cha
nes permet de ne stocker quune fois
une cha lorsquelle est le nom de plusieurs symboles. Nous expliquons au
ne
paragraphe 3.3 comment un chier objet translatable peut contenir plusieurs
symboles de mme nom.
e
La table des symboles est une collection de n-uplets dcrivant chacun un
e
symbole, rangs dans un tableau indic de 1 ` NombreSymboles (lordre nest
e
e
a
pas pertinent, toutefois). Chaque n-uplet est cod sur un format xe (de lordre
e
de 12 octets). Le type correspondant est donn gure 18.10.
e
Lensemble Zone et Porte permet de dterminer exactement le statut du
e
e
symbole considr (Figure 18.11).
ee
3.2.4

Donnes de translation TEXT et DATA, gnralisation


e
e e

Le chier objet contient deux zones distinctes pour les donnes de transe
lation relatives aux instructions, et pour celles relatives aux donnes. La zone
e
BSS ntant pas initialise, il ny a pas de trous dans son codage, et donc pas
e
e
de donnes de translations associes.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Format des chiers objets translatables et dition de liens


e

467

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

ZoneDef : le type < zTEXT, zDATA, zBSS, zNONDEF >


Symbole : le type <
Nom : un entier > 0,
{ cest un indice dans la table des cha
nes. Le nom du symbole est la
cha comprise entre cet indice inclus et le prochain 0. }
ne
Zone : un ZoneDef,
{ zone o` appara la dnition de ltiquette dans le programme en
u
t
e
e
langage dassemblage, ou valeur zNONDEF si ltiquette nest pas dnie
e
e
dans le chier considr, mais seulement utilise, par exemple dans une
e e
e
instruction call. }
Porte : un boolen, { voir dtails ci-dessous. }
e
e
e
Valeur : un entier 0
{ Lcart dadresses entre le dbut de la zone TEXT et la position o`
e
e
u
est dnie ltiquette. Dans lexemple de la gure 18.7, 24 est la valeur
e
e
du symbole D. Lorsque Zone=zNONDEF, Valeur est non pertinent. }
>
Fig. 18.10 Type dun lment de la table des symboles
ee

Porte
e
Zone
Zone = zNONDEF
Zone = zNONDEF

vrai

faux

(1) Le symbole est dni loe


calement, et export
e
(3) Le symbole nest pas
dni localement, il peut
e
tre pris dans un autre e
chier (import)
e

(2) Le symbole est dni loe


calement, non export
e
Le symbole nest pas dni
e
localement, il ne peut pas
tre pris dans un autre e
chier. Ce cas nexiste pas
normalement.

Fig. 18.11 Porte et zone de dnition des symboles


e
e

Modedecalcul : le type (reloc hi22, reloc lo10, reloc13, ...)


DonneTranslation : le type <
e
position : un entier 0, mode : un ModeDeCalcul,
numsymb : un entier sur 1..NombreSymboles
{ numro du symbole qui appara dans linstruction ` trou. on peut
e
t
a
consulter la table des symboles pour savoir si le symbole est dni et
e
dans ce cas consulter sa valeur, qui correspond ` la constante du type
a
prsent gure 18.9. }
e
e
>
Fig. 18.12 Type dune donne de translation gnrale
e
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

468

Vie des programmes

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Au paragraphe 2.3.4 nous avons donn la structure des donnes de transe


e
lation dans le cas des symboles connus ` lassemblage, cest-`-dire dnis dans
a
a
e
le chier.
Les utilisations de symboles indnis sont une autre source de trous dans
e
le code gnr par lassembleur. Ainsi une instruction de branchement relatif
e ee
ba labas produit un mot de 32 bits dont les 22 bits de poids faibles forment
un trou, lorsque le symbole labas nest pas dni localement.
e
Pour reprer ce trou, et dcrire comment le complter plus tard, on utilise
e
e
e
galement une donne de translation. Le type dune donne de translation
e
e
e
gnrale est donn gure 18.12.
e e
e

3.3

Mise en oeuvre de ldition de liens


e

Nous tudions le probl`me de ldition de liens en bauchant un algorithme


e
e
e
e
de fusion de deux chiers objets translatables, et rendant un nouveau chier
objet translatable. Les diteurs de liens rels travaillent sur n chiers simule
e
tanment, mais cela ne fait que compliquer lalgorithme.
e
3.3.1

Structure du chier fusionn


e

Considrons trois chiers objets 1, 2, et 3, tels que 3 soit la fusion des chiers
e
1 et 2. Notons respectivement Hi, Ti, Di, TTi, TDi, TSi, TCi len-tte, la zone
e
TEXT, la zone DATA, la zone de translation TEXT, la zone de translation
DATA, la table des symboles et la table des cha
nes du chier numro i.
e
Le chier 3 est en gros la concatnation, zone par zone, des chiers 1 et 2.
e
Plus prcisment :
e e
T3 est la concatnation de T1 et T2 ; certains trous sont ventuellement
e
e
remplis. Le chier fusionn comporte toutes les instructions du chier 1, et
e
toutes celles du chier 2. Lordre na pas dimportance, mais il faut dcider
e
o` se trouve le point dentre. Loutil de fusion peut prendre en param`tre
u
e
e
le nom dune tiquette qui dsigne le point dentre global.
e
e
e
De mme, D3 est la concatnation de D1 et D2 ; certains trous sont
e
e
ventuellement remplis. Le chier fusionn comporte toutes les donnes du
e
e
e
chier 1 et toutes celles du chier 2. Il ny a pas de probl`me de point
e
dentre.
e
TT3 est bas sur lunion des donnes de translation TEXT du chier 1
e
e
(TT1) et de celles du chier 2 (TT2). Toutefois certaines donnes de transe
lation peuvent tre utilises pendant la fusion pour complter certains trous
e
e
e
en zone T3, et disparaissent donc.
La situation est similaire pour TD3 par rapport ` TD1, TD2.
a
La table des symboles TS3 est obtenue dapr`s TS1 et TS2 de la mani`re
e
e
suivante : les noms de symboles qui napparaissent que dans lun des chiers
sont conservs tels que ; pour un nom de symbole qui appara dans les deux
e
t

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Format des chiers objets translatables et dition de liens


e

469

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

chiers, il faut considrer, pour chaque symbole, les 3 cas de la gure 18.11.
e
Dautre part un chier objet peut comporter plusieurs symboles de mme
e
nom. Lanalyse dtaille de tous les cas possibles donne la structure de
e
e
lalgorithme de fusion.

La table des cha


nes TC3 est une vritable union des deux tables de cha
e
nes
TC1 et TC2, en ne conservant quun seul exemplaire dans le cas o` une
u
mme cha appara dans les deux chiers.
e
ne
t
Enn len-tte H3 rcapitule les tailles des direntes zones, et donne le
e
e
e
point dentre du chier fusionn.
e
e
3.3.2

Que se passe-t-il lors de la fusion ?

Eets de dcalages La fusion des deux chiers a tout dabord des eets de
e
dcalage, puisque les symboles sont numrots indpendamment dans les deux
e
e e
e
chiers, et leurs valeurs calcules indpendamment :
e
e
Lunion des tables de symboles produit une nouvelle numrotation globale
e
des symboles, quil faut reporter dans les donnes de translation qui y font
e
rfrence.
ee
La concatnation des zones TEXT (resp. DATA) a pour eet de dplacer les
e
e
tiquettes du deuxi`me chier par rapport au dbut de lensemble. Il faut
e
e
e
donc modier la valeur des symboles du deuxi`me chier. Aux symboles
e
dnis en zone T2, on ajoute la taille de T1 ; aux symboles dnis en zone
e
e
D2 on ajoute la taille de T1, plus la taille de D1, etc. Dans le chier 3,
les valeurs des symboles sont des dcalages par rapport au dbut de la
e
e
concatnation T1 T2 D1 D2.
e
La concatnation des zones TEXT (resp. DATA) a aussi pour eet de
e
dplacer les trous par rapport au dbut de lensemble. Il faut donc mettre
e
e
a
` jour les positions de trous dans les donnes de translation. Cela peut se
e
faire globalement au dbut.
e
Identication de symboles Un cas intressant de fusion survient lorsquun
e
trou peut-tre rempli. Cela se produit par exemple si le chier 1 comporte
e
une instruction call F avec F non dni, et le chier 2 une dnition de F
e
e
exporte. On a donc un symbole de nom F dans chacun des chiers. Dautre
e
part linstruction call F est incompl`te dans le chier 1, et il y a dans TT1
e
une donne de translation qui dcrit ce trou.
e
e
En considrant les portes relatives de ces deux symboles, la fusion
e
e
dtermine quil sagit en fait du mme symbole, et ralise lidentication. Cela
e
e
e
consiste ` ne garder quun lment dans la table de symboles globale. Dautre
a
ee
part, puisque linstruction call F fait une utilisation relative du symbole F, et
que celui-ci est connu dans le chier fusionn, linstruction call F incompl`te
e
e
qui provenait du chier 1 peut maintenant tre complte. La donne de transe
ee
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

470

Vie des programmes

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

lation du chier 1, plus les informations sur le symbole donnes par TS2 sufe
sent pour cela.
Noter que si la mme situation se prsente, mais avec une instruction utie
e
lisant F de mani`re absolue dans le chier 1, il y a bien identication des
e
symboles, mais il subsiste une donne de translation pour cette instruction, et
e
elle ne sera complte quau chargement.
ee
Il y a galement identication de symboles lorsque par exemple les deux
e
chiers importent la mme fonction, qui nest dnie dans aucun deux. Elle
e
e
le sera peut-tre dans un troisi`me chier, qui sera fusionn avec ceux-l` plus
e
e
e
a
tard.
Plusieurs symboles de mme nom dans un chier Les chiers obtee
nus par assemblage dun programme en langage dassemblage ont exactement
un symbole par nom. Pour bien comprendre lalgorithme de fusion, qui peut
sappliquer incrmentalement, il faut remarquer quun chier objet obtenu par
e
fusion peut contenir deux symboles de mme nom, qui di`rent par leurs autres
e
e
attributs (zone de dnition, valeur). Ce phnom`ne est d au mcanisme de
e
e
e
u
e
masquage des noms par chier : si lon fusionne deux chiers objet contenant
chacun un symbole de nom i dni et non export, le chier global comporte
e
e
deux symboles de nom i. Notons toutefois que si plusieurs symboles ont le
mme nom, ce sont ncessairement des symboles dnis localement et non exe
e
e
ports. Dans les donnes de translation du chier, les symboles sont rfrencs
e
e
ee
e
par numro, pas par leur nom.
e
De mani`re gnrale, pour un nom de symbole i donn, un chier objet peut
e
e e
e
contenir : un nombre quelconque de symboles de nom i dnis localement et
e
non exports (cas 2 de la gure 18.11) ; au plus un symbole de nom i visible,
e
cest-`-dire dni localement et export (cas 1), ou bien non dni et import
a
e
e
e
e
(cas 3).
3.3.3

Ebauche dalgorithme

Nous donnons ci-dessous la structure principale de lalgorithme de fusion,


qui est enti`rement guid par lunion des tables de symboles : on commence
e
e
par recopier enti`rement TC1 et TS1 dans TC et TS, puis lon examine les
e
symboles de TS2 un par un.
recopier TS1 dans TS ; recopier TC1 dans TC
{ Parcours de la table des symboles du chier 2 }
i2 parcourant 1..Taille(TS2) :
n2 TS2[i2].Nom
N TC2[n2] { la cha de TC2 commenant ` lind. n2 }
ne
c
a
Z2 TS2[i2].Zone ; P2 TS2[i2].Porte ; V2 TS2[i2].Valeur
e

La gure 18.13 dtaille lanalyse par cas selon les portes respectives des
e
e
symboles communs aux deux chiers.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Format des chiers objets translatables et dition de liens


e

471

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

si N nappara pas parmi les cha


t
nes de TC1
{ Cas simple, on ajoute la cha N ` TC (` la suite, soit n lindice), et le
ne
a
a
symbole TS2[i] ` TS, ` la suite, en le renumrotant. Il conserve sa porte et sa
a
a
e
e
zone de dnition. Son nom vaut maintenant n, indice dans la table de cha
e
nes
globale. Sa valeur est dcale ; il faut aussi reporter son nouveau numro dans
e e
e
TT et TD (Cf. Paragraphe 3.3.2). }
sinon
{ N appara parmi les cha
t
nes de TC1. Il y a dans TS1 un ou plusieurs
symboles portant ce nom N. Cest le cas intressant. Par examen de P2, Z2 et
e
des portes et zones de dnition de ces symboles, on dtermine que faire de
e
e
e
TS2[i]. }
si non P2 { symbole dni et cach dans le chier 2 }
e
e
{ Aucune identication ne peut avoir lieu avec les symboles portant le mme
e
nom en provenance du chier 1. On ajoute le symbole TS2[i], en le renumrotant et en dcalant sa valeur. Il faut aussi reporter son nouveau
e
e
numro dans TT et TD. }
e
sinon { cest-`-dire symbole visible }
a
{ Aucune identication ne peut avoir lieu entre le symbole TS2[i] et les
symboles de mme nom cachs dans le chier 1. Il faut donc dterminer sil
e
e
e
existe un symbole visible (dni et export ou bien import) de mme nom
e
e
e
e
dans le chier 1, que lon notera S1. }
sil nexiste pas S1
{ on ajoute le symbole TS2[i], en le renumrotant et en dcalant sa
e
e
valeur. Il faut aussi reporter son nouveau numro dans TT et TD. }
e
sil existe S1 = < n1, Z1, vrai, V1 >
{ Il existe deux symboles de mme nom visibles dans les deux chiers.
e
Tout dpend maintenant du fait quils sont dnis ou non. }
e
e
selon Z1, Z2 :
Z1 = zNONDEF et Z2 = zNONDEF :
{ Il y a identication des symboles. Par exemple les deux chiers
importent une fonction qui sera dnie dans un autre, non encore
e
fusionn. Le symbole reste non dni, import. Il na pas de valeur.
e
e
e
Il est renumrot par rapport au numro quil avait dans le chier
e e
e
2, et il faut reporter le nouveau numro dans TT, TD. }
e
Z1 = zNONDEF et Z2 = zNONDEF :
ERREUR : double dnition
e
(Z1 = zNONDEF et Z2 = zNONDEF) ou
(Z1 = zNONDEF et Z2 = zNONDEF) :
{ Cest LE cas intressant de fusion. Lun des chiers importe
e
un symbole, qui se trouve tre dni et export par lautre. Il y
e
e
e
a identication. Le symbole devient dni export. Sa valeur est
e
e
calcule dapr`s la valeur quil a dans le chier o` il est dni.
e
e
u
e
On reporte son nouveau numro dans les donnes de translation.
e
e
De plus, les utilisations relatives du symbole dans le chier qui
limporte peuvent tre rsolues, et cela supprime des donnes de
e
e
e
translation. }
Fig. 18.13 Structure de lalgorithme de fusion

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

472
Vie des programmes

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 19

Syst`me de gestion de chiers


e
Dans ce chapitre nous nous intressons au probl`me de la gestion des infore
e
mations qui doivent tre places en mmoire secondaire. Nous avons vu dans
e
e
e
le chapitre 16 comment connecter un priphrique dentre/sortie ` un ordinae
e
e
a
teur, et dans le chapitre 17 comment raliser linterface entre ce priphrique
e
e
e
et les programmes du syst`me dexploitation. Les priphriques de mmoire
e
e
e
e
secondaire sont les disques, les bandes magntiques, etc., que lon peut lire et
e
crire un nombre inni de fois.
e
La mmoire secondaire est utilise pour le stockage de donnes dont la dure
e
e
e
e
de vie doit tre suprieure ` la dure de vie des programmes qui les manipulent,
e
e
a
e
et mme ventuellement suprieure ` la dure de vie du syst`me informatique
e
e
e
a
e
e
qui les a stockes. Dans le premier cas on trouve par exemple les chiers source,
e
objet et excutable dun programme de lutilisateur (voir chapitre 18). Dans
e
le deuxi`me cas il peut sagir des chiers dune base de donnes, qui doivent
e
e
tre conservs et transmis dun environnement informatique (machine, syst`me
e
e
e
dexploitation) ` un autre.
a
Mise ` part lexigence sur leur dure de vie, les donnes que lon peut vouloir
a
e
e
stocker sur des supports permanents ne sont pas de nature intrins`quement
e
dirente de celle des donnes manipules par les programmes. Nous avons
e
e
e
tudi au chapitre 4 un petit langage de description des structures de donnes
e
e
e
usuelles, et comment coder et installer dans les lments du tableau MEM
ee
tout type de donne structure. Les lments du tableau reprsentent les plus
e
e
ee
e
petits blocs de la mmoire accessibles par le processeur (en gnral des octets,
e
e e
voir chapitre 15). Les supports de mmoire secondaire imposent galement des
e
e
contraintes physiques sur la taille du plus petit bloc accessible (dun ordre
de grandeur dirent toutefois : 256 octets pour un disque par exemple, voir
e
chapitre 17).
Lanalogie sarrte l`. En eet, abstraire la mmoire vive dune machine
e
a
e
par un tableau est lgitime, puisque la mmoire vive ore lacc`s direct par une
e
e
e
adresse. En revanche certains supports de mmoire secondaire norent pas
e
lacc`s direct : cest le cas des bandes magntiques.
e
e
Lorsquon sintresse ` linstallation des donnes dans les blocs accessibles
e
a
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

474

Syst`me de gestion de chiers


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

dune mmoire secondaire, il faut tenir compte des acc`s que lon dsire raliser
e
e
e
e
sur ces donnes : si lon a besoin de lacc`s direct, un support ` acc`s squentiel
e
e
a
e e
ne convient pas. Chacun sait quil est plus facile dcouter le troisi`me mouvee
e
ment dune symphonie sur un disque compact que sur une cassette audio.
Il existe une deuxi`me dirence essentielle entre les donnes dun proe
e
e
gramme (qui sont stockes quelque part en mmoire vive pendant lexcution
e
e
e
du programme) et les donnes stockes sur un support de mmoire secondaire.
e
e
e
Il sagit du mcanisme dacc`s aux informations par leur nom, autrement dit
e
e
du lien entre un nom externe connu de lutilisateur et une adresse en mmoire.
e
Dans le cas des programmes, les informations sont ranges dans des vae
riables nommes par lutilisateur ; la correspondance entre le nom et ladresse
e
dans le tableau MEM est calcule par le compilateur, et prise en compte lors
e
de la fabrication du chier excutable, dans lequel on peut oublier les noms
e
(sauf si lon dsire eectuer du dbogage symbolique, voir chapitre 18).
e
e
Dans le cas des donnes prsentes sur un support de mmoire secondaire, le
e
e
e
nom externe est un nom de chier, dans la terminologie usuelle. La correspondance entre ce nom externe et les adresses des donnes du chier sur le support
e
est tablie par exemple lors de la cration dun chier, par le logiciel qui soce
e
cupe de la gestion du support. Cette correspondance est une information dont
la dure de vie doit tre au moins gale ` celle des donnes considres : elle
e
e
e
a
e
ee
doit donc tre stocke sur le support lui-mme. A nimporte quel autre ene
e
e
droit (mmoire vive de la machine, que ce soit dans un programme syst`me
e
e
ou dans un programme utilisateur), elle aurait une dure de vie infrieure `
e
e
a
celle des donnes sur le support de mmoire.
e
e
On appelle syst`me de chiers lensemble des donnes stockes sur un supe
e
e
port de mmoire secondaire (disque, bande, ...). Ces donnes comprennent
e
e
bien sr les donnes de lutilisateur, mais aussi des informations quil na pas `
u
e
a
conna
tre, sur lorganisation de ce support de mmoire : correspondance entre
e
noms externes et adresses, o` reste-t-il de la place libre ?, etc.
u
On appelle syst`me de gestion de chiers (SGF dans la suite) lensemble
e
des programmes responsables de linstallation dun syst`me de chiers sur un
e
support de mmoire secondaire. Le SGF ralise linterface entre lutilisateur,
e
e
qui peut dsigner ses donnes par des noms de chiers par exemple, et le logiciel
e
e
pilote de priphrique qui ralise les lectures/critures eectives sur le support
e
e
e
e
de mmoire.
e
Notons que ces deux notions correspondent aussi bien ` la gestion des
a
chiers utilisateurs sur un syst`me mono ou multi-utilisateurs ordinaire, qu` la
e
a
manipulation des chiers de stockage dun SGBD (Syst`me de Gestion de Bases
e
de Donnes). Lorganisation des informations sur les supports secondaires est
e
toutefois plus complique dans le cas des SGBD, pour lesquels les contraintes
e
de temps dacc`s sont primordiales (et le volume des donnes tel que lon ne
e
e
peut pas systmatiquement recopier les donnes en mmoire vive avant de
e
e
e
les traiter). Nous tudierons dans ce chapitre le cas dun syst`me de chiers
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Situation du syst`me de gestion de chiers


e

475

Le syst`me de gestion de chiers (SGF) :


e
Structuration des informations
Adressage logique

Traduction des adresses logiques


en adresses physiques
Pilote de priphrique
e
e

Circuit contrleur de priphrique


o
e
e

Disque

Adresses logiques

Structuration hirarchique de lensemble de chiers


e

Adresses physiques

Ar
Logiciel
Matriel
e
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Autres informations associes aux chiers


e
(droits dacc`s, dates...)
e

Bande

Fig. 19.1 Situation gnrale du syst`me de gestion de chiers


e e
e

utilisateurs ordinaire.

Nous prcisons tout dabord dans le paragraphe 1. la position du syst`me


e
e
de gestion de chiers, entre le matriel spcique (disques, bandes et
e
e
leurs contrleurs, Cf. Chapitre 16) et la vision des informations que peut
o
avoir lutilisateur ` travers un interpr`te de commandes textuel (Cf. Chaa
e
pitre 20). Le paragraphe 2. rappelle la notion dadresse physique hrite
e e
du pilote de priphrique (Cf. Chapitre 17) et dnit les notions de chier
e
e
e
et dadresse logique. Le paragraphe 2.3 tudie la fonction principale dun
e
syst`me de gestion de chiers, cest-`-dire limplantation des chiers sur
e
a
les supports physiques. Le paragraphe 4. dcrit comment associer aux e
chiers des informations comme les noms externes ou la date de cration.
e
Finalement, nous tudions dans le paragraphe 5. quelques fonctions de
e
base dun syst`me de gestion de chiers, comme le formatage dun disque
e
ou la cration de chier.
e

1.

Situation du syst`me de gestion de chiers


e

La gure 19.1 illustre la situation du syst`me de gestion de chiers. Nous


e
dtaillons ci-dessous la nature des informations manipules aux divers niveaux
e
e
ainsi que les primitives disponibles aux divers niveaux.
Le logiciel pilote de priphrique associ au lecteur de disque ou de bande
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

476

Syst`me de gestion de chiers


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

magntique (Cf. Chapitre 17) fournit vers les couches dabstraction suprieures
e
e
une interface qui permet de manipuler des blocs ou units dacc`s
e
e
numrots squentiellement. Dans la suite de ce chapitre, nous appellerons
e e e
adresse physique le mcanisme de dsignation non ambigu dune unit dacc`s,
e
e
e
e
e
cest-`-dire le numro de bloc. Rappelons que le logiciel pilote de priphrique
a
e
e
e
traduit cette numrotation squentielle en couples (numro de secteur, numro
e
e
e
e
de piste) pour les disques (lunit dacc`s peut mme tre constitue de plue
e
e
e
e
sieurs secteurs).
Tout en haut du schma on trouve la couche suprieure visible par lutie
e
lisateur. Les informations manipules sont des noms de chiers (qui re`tent
e
e
ventuellement la structure hirarchique de lensemble des chiers). On peut
e
e
trouver galement dautres informations associes ` un chier, comme les droits
e
e a
dacc`s des dirents utilisateurs, la date de cration, le nom du programme
e
e
e
qui la cr, etc.
ee
Le SGF est la couche intermdiaire : il assure la correspondance entre les
e
noms de chiers et la position des donnes de ces chiers sur les blocs du
e
support de mmoire.
e
Lorsque lutilisateur tape editer /users/machin/toto.c, le programme
editer fait appel aux fonctions du SGF pour retrouver le lien entre ce nom
externe et la position des donnes sur le support de mmoire, et aux fonctions
e
e
oertes par le logiciel pilote de priphrique pour raliser la lecture eective
e
e
e
de ces donnes.
e
Nous dtaillons au paragraphe 5. les principales fonctions du SGF accese
sibles aux programmes de lutilisateur.

2.

Structure des donnes


e
et inuence sur limplantation

2.1

Notion de chier

Les donnes ` stocker sont regroupes dans des chiers. Cest lunit de base
e a
e
e
a
` laquelle on peut associer un nom externe connu de lutilisateur (` travers un
a
interpr`te de commandes, ou par programme). Chaque chier a une certaine
e
structure interne, qui correspond au type des donnes qui y sont stockes.
e
e

2.2

2.2.1

Relation entre la structure des donnes dun chier


e
et le type dacc`s ncessaire
e e
Structure des donnes
e

Nous avons dj` rencontr au chapitre 18 les chiers source, objet et


ea
e
excutable dun programme. Le chier source est un texte, cest-`-dire une
e
a
suite de caract`res. On peut le considrer comme une suite de bits, mais les
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Structure des donnes et inuence sur limplantation


e

477

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

oprations usuelles que lon eectue sur un chier source (dition, impression,
e
e
...) linterpr`tent comme une suite de caract`res (cest-`-dire une suite doce
e
a
tets). De mme, le chier objet peut tre considr comme une suite de bits,
e
e
ee
ou comme une suite doctets. Les images ou les contenus de bases de donnes
e
constituent dautres types de chiers.
Les chiers texte sont intrins`quement squentiels, puisque le type Texte
e
e
manipul par les programmes est dni comme une squence de caract`res
e
e
e
e
(lordre des lments fait partie du type). Inversement les chiers de bases de
ee
donnes relationnelles correspondent au type de donnes ensemble de n-uplets.
e
e
Un chier de personnes peut ainsi tre constitu de triplets forms dun
e
e
e
nom, dune date de naissance et dun nom de ville. Il ny a pas de structure
squentielle attache ` ce type de donnes. Les n-uplets peuvent tre dsigns
e
e a
e
e
e
e
de mani`re non ambigu par une cl. Dans la thorie de lalg`bre relationnelle,
e
e
e
e
e
la cl ou identiant dune relation est un sous-ensemble des champs tel
e
que, pour une valeur des champs de la cl, le n-uplet est unique. Dans le chier
e
de personnes donn en exemple, on peut dcider dutiliser le nom comme cl.
e
e
e
On appelle adresse logique le mcanisme de dsignation non ambigu dun
e
e
e
enregistrement du chier. Si le chier comporte une structure squentielle, cest
e
en gnral un numro par rapport au dbut ; dans le cas contraire, on utilise
e e
e
e
la notion didentiant fournie par la structuration des donnes : une valeur de
e
la cl permet de dsigner un n-uplet sans ambigu e.
e
e
t
2.2.2

Types dacc`s
e

Le type dacc`s ncessaire aux donnes dun chier dpend de la mani`re


e e
e
e
e
dont on interpr`te ces donnes.
e
e
Tout chier peut tre considr comme une suite de bits. Lorsquon utilise
e
ee
une commande de dump pour acher le contenu dun chier quelconque, le
chier est interprt, au choix, comme une suite doctets, de mots de 16 ou 32
ee
bits, ... Les outils spciques connaissent la structure et lutilisent ; des outils
e
gnriques peuvent lignorer et ne voir quune suite de bits.
e e
Un outil comme dump ne ralise que des acc`s squentiels (lecture dans
e
e e
lordre, pas de suppression ni insertion au milieu), et a donc peu dexigences
sur la mani`re dont est implant le chier. En revanche, tout outil qui conna
e
e
t
la structure des donnes du chier peut ncessiter un acc`s direct. Pour la
e
e
e
lecture, on peut vouloir par exemple ne lire que le caract`re numro 4200 dans
e
e
un chier texte ; ou seulement la section des instructions dans un chier objet ;
ou encore seulement une portion dune image dans un chier JPEG, ... Pour
lcriture, on peut avoir besoin dinsrer une ligne dans un texte, de supprimer
e
e
une section dun chier objet, etc.
Noter quon peut vouloir raliser des acc`s directs ` un chier texte, bien
e
e
a
que le type des donnes soit intrins`quement squentiel. Inversement, la saue
e
e
vegarde dun disque de base de donne sur une bande magntique ne ralise
e
e
e
que des acc`s squentiels aux donnes, bien que leur type soit intrins`quement
e e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

478

Syst`me de gestion de chiers


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

non squentiel.
e
Reprenons lanalogie avec les disques et cassettes audio : il est plus facile
dcouter la douzi`me chanson sur un disque compact que sur une cassette
e
e
audio, mais, lorsquon recopie une cassette sur une autre, on na besoin de
lacc`s direct ni sur la source, ni sur la copie.
e
Dernier point important : pourquoi se proccuper dacc`s direct aux
e
e
donnes stockes sur un support de mmoire secondaire ? On pourrait en eet
e
e
e
imaginer une mani`re fort simple de manipuler les chiers : on commence toue
jours par le recopier enti`rement en mmoire vive (et cela ncessite une lecture
e
e
e
squentielle), puis on eectue tout type de modication, puis on le recopie sur
e
le support de mmoire secondaire (et cela constitue une criture squentielle).
e
e
e
Dans ce cas les seuls types dacc`s ncessaires sont squentiels.
e e
e
Cette approche est applicable ` ldition de petits chiers texte. Pour
a e
dautres types dapplication cest hors de question : tri de gros chiers, acc`s
e
a
` une base de donnes, ...
e
Pour assurer des acc`s directs parmi les donnes dun chier, il faut donc
e
e
prvoir limplantation en consquence.
e
e

2.3

Inuence du type dacc`s ncessaire


e e
sur limplantation

Le type de manipulation envisage des chiers peut ncessiter un acc`s


e
e
e
direct ou non. Les adresses logiques sont des numros, ou des dsignations par
e
e
le contenu. Les supports physiques sont ` acc`s direct ou squentiel. Il y a donc
a
e
e
de nombreux cas ` considrer, que nous regroupons en deux classes ci-dessous.
a
e
2.3.1

Acc`s par numro


e
e

Cest le cas raliste dun syst`me de gestion des chiers utilisateurs. Quel
e
e
que soit le type des donnes de ces chiers, ils sont considrs comme des suites
e
ee
doctets, et les adresses logiques sont des dcalages par rapport au dbut en
e
e
nombre doctets.
Acc`s direct sur support squentiel Cest un cas peu raliste. Sur tout
e
e
e
support squentiel on dispose dune opration de retour au dbut (rembobinage
e
e
e
dune bande magntique), mais passer dun lment dadresse n ` un lment
e
ee
a
ee
dadresse m en rembobinant, puis en avanant de m, ne peut pas avoir des
c
performances comparables ` celles dun vritable acc`s direct.
a
e
e
Acc`s squentiel sur support squentiel Ceci constitue le cas typique de
e e
e
la sauvegarde, pendant laquelle les chiers sont considrs comme squentiels.
ee
e
En eet, aucune insertion ou suppression dlment du chier ne sera efee
fectue sur le support ` acc`s squentiel. Les acc`s au support squentiel sont
e
a
e e
e
e
squentiels, lors des sauvegardes et restaurations.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Structure des donnes et inuence sur limplantation


e

479

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Acc`s direct sur support ` acc`s direct Le chier peut tre considr
e
a
e
e
ee
comme une squence de n-uplets plus ou moins complexes, numrots par les
e
e e
adresses logiques.
On trouve dans tout bon ouvrage dalgorithmique une discussion sur les
mrites respectifs de la reprsentation des squences dans des tableaux ou des
e
e
e
squences cha ees. Dans un tableau, lordre des lments de la squence est
e
n
ee
e
implicite : cest lordre des indices ; dans une squence cha ee, lordre des
e
n
lments est reprsent de mani`re explicite : chaque lment pointe sur
ee
e
e
e
ee
son successeur (et/ou sur son prdcesseur). Notons que les lments de la
e e
ee
squence sont de toute faon dans le tableau MEM : la dirence entre les
e
c
e
deux approches est donc entre une implantation contigu et une implantation
e
disperse. .
e
Avec la solution tableau on occupe le minimum de mmoire ; avec la solue
tion cha ee, on ajoute un pointeur par lment (cest-`-dire une adresse
n
ee
a
mmoire, de lordre de 32 bits). La comparaison sur le temps ncessaire
e
e
pour une opration dinsertion tourne en revanche ` lavantage de la solution
e
a
cha ee : il sut de raccrocher deux ou trois pointeurs et le tour est jou ; dans
n
e
un tableau il faut mnager une place en dcalant des lments, cest-`-dire en
e
e
ee
a
les recopiant dune case dans une autre. Comme dhabitude en informatique, les
gains en place se font au dtriment du temps, et vice-versa. Notons galement
e
e
quavec une implantation contigu on dispose de lacc`s direct ` un lment
e
e
a
ee
par son numro ; on perd cette proprit avec une implantation disperse.
e
ee
e
Imaginons le cas dune squence de bits, stocke en utilisant une solution
e
e
mixte contige/disperse : on peut cha
u
e
ner entre eux des octets, auquel cas le
rapport entre informations utiles et informations de cha
nage est assez mauvais : un pointeur occupe de lordre de 4 octets, et il en faut 1 par octet utile.
En choisissant la taille des blocs cha es, on r`gle le rapport entre informations
n
e
utiles et informations de cha
nage.
Appliquons le raisonnement au cas de limplantation des chiers.
Dans une implantation contigu, les emplacements de deux enregistrements
e
conscutifs quelconques du chier sont eux-mmes conscutifs ` lintrieur
e
e
e
a
e
dune mme unit dacc`s, ou situs dans deux units dacc`s de numros
e
e
e
e
e
e
e
conscutifs. La structure de squence du chier est reprsente grce ` la
e
e
e
e
a a
squence des adresses physiques. Une insertion ou suppression denregistree
ment dans le chier demande un dcalage des lments prsents, ce qui peut
e
ee
e
tre assez coteux.
e
u
Dans une implantation disperse, deux enregistrements conscutifs du e
e
chier peuvent tre placs ` des positions quelconques sur le disque. Pour ree
e a
constituer la structure squentielle, on peut cha
e
ner les lments entre eux, ou
ee
utiliser une table dimplantation (voir paragraphe 3. ci-dessous). Linsertion
ou la suppression dun lment demande alors seulement la rorganisation du
ee
e
cha
nage ou de la table dimplantation, mais jamais le dplacement des enree
gistrements du chier sur le disque. La solution par cha
nage est coteuse en
u
taille (une adresse de suivant pour chaque lment du chier), et impose un
ee

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

480

Syst`me de gestion de chiers


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

acc`s squentiel au chier.


e e
2.3.2

Acc`s direct par le contenu


e

Ce cas ncessite des organisations spciques selon le type dacc`s direct


e
e
e
ncessaire.
e
Dans les syst`mes de gestion de bases de donnes (SGBD) par exemple, le
e
e
mcanisme dadressage logique est induit par une description de haut niveau
e
de lensemble des informations gres (un ensemble de schmas de relations
ee
e
par exemple, avec dnition des cls de relations). Limplantation des donnes
e
e
e
sur le disque est ralis par les couches basses des SGBD, qui constituent des
e e
syst`mes de gestion de chiers spciques.
e
e
Ainsi certains SGBD proposent-ils, dans le langage de description de la
structure des informations, un mcanisme qui permet au concepteur de la base
e
de donnes dexprimer des contraintes sur la position relative des informations
e
sur le disque. Le mcanisme de cluster du logiciel Oracle permet ainsi de
e
dclarer une association entre des champs X et Y, appartenant respectivement
e
a
` des relations R et S, si lon sait que les requtes dinterrogation comporteront
e
souvent un produit de la forme R (X=Y)* S en alg`bre relationnelle (cest-`e
a
dire un produit cartsien des relations R et S, suivi dune slection des n-uplets
e
e
qui portent la mme valeur dans les champs X et Y). Le SGBD tient compte
e
au mieux de cette association, et tente dinstaller ` des positions proches sur
a
le disque les n-uplets de la relation R qui correspondent ` une valeur X0 du
a
champ X, et les n-uplets de la relation S qui correspondent ` cette mme valeur
a
e
dans le champ Y. Lide est que, si on lit sur le disque un n-uplet de la relation
e
R portant une valeur X0 du champ X, on aura srement lu dans le mme bloc
u
e
les n-uplets correspondants de la relation S.
Mme si le SGBD nore pas au concepteur de la base de donnes un tel
e
e
moyen de contrler la position des informations, limplantation des donnes est
o
e
un probl`me crucial dans la ralisation dun SGBD, et elle est ncessairement
e
e
e
spcique. Lutilisation dun syst`me de gestion de chiers conu pour grer
e
e
c
e
lensemble des chiers utilisateurs rduirait considrablement les performances.
e
e

3.

Implantation disperse sur un disque


e

Nous tudions ici un exemple dimplantation disperse dun ensemble de


e
e
chiers sur un disque, par un mcanisme de table dimplantation ` plusieurs
e
a
niveaux dindirection. Le paragraphe 3.3 dcrit lorganisation des chiers dans
e
le syst`me de gestion de chiers dunix.
e
Dans une implantation disperse, lide est de partitionner le chier en more
e
ceaux, qui seront disposs sur le disque indpendamment les uns des autres ;
e
e
toutefois un morceau sera plac sur des units dacc`s conscutives. Ainsi le
e
e
e
e
reprage dun morceau se rduit ` une adresse physique, connaissant la taille
e
e
a
des morceaux.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Implantation disperse sur un disque


e

481

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

La taille de ces morceaux est appele unit dallocation. Cest un multiple


e
e
de la taille de lunit dacc`s dnie pour le disque (en gnral une puissance de
e
e e
e e
2). Le choix de lunit dallocation permet de contrler le degr de dispersion
e
o
e
des informations du chier. Lun des cas extrmes consiste ` dnir lunit
e
a e
e
dallocation gale ` lunit dacc`s : les morceaux du chier sont de taille
e
a
e
e
minimale, et les informations sont donc disperses au maximum. Lautre cas
e
extrme consiste ` choisir une unit dallocation tr`s grande, suprieure ` la
e
a
e
e
e
a
taille des chiers. Dans ce cas les informations sont disperses au minimum,
e
cest-`-dire pas du tout : on retrouve limplantation contigu.
a
e
Lunit dallocation est un param`tre fourni par lutilisateur au moment
e
e
de linstallation dun syst`me de chiers sur un disque (au formatage logique,
e
voir paragraphe 5.1). Cette information doit tre conserve, puisquelle est
e
e
indispensable pour linterprtation des donnes sur le disque ; elle doit avoir
e
e
une dure de vie gale ou suprieure ` celle des donnes prsentes sur le disque,
e
e
e
a
e
e
et doit donc tre inscrite sur le disque lui-mme (voir au paragraphe 3.7 la
e
e
synth`se des informations prsentes sur un disque).
e
e

3.1

Cas dun seul chier de petite taille

Considrons tout dabord le cas simple dun seul chier de petite taille. On
e
introduit une table dimplantation de taille T , qui donne T adresses physiques
de dbut de blocs de taille gale ` lunit dallocation.
e
e
a
e
Cette table dimplantation doit elle-mme tre stocke sur disque, de
e
e
e
mani`re contigu, et ` une position connue. Elle peut occuper une ou plue
e
a
sieurs units dacc`s au dbut du disque par exemple (Cf. Figure 19.2).
e
e
e
La taille du chier est limite ` T Ua octets, o` Ua reprsente lunit
e a
u
e
e
dallocation.

3.2

Cas dun seul chier de taille moyenne

Lorsque le chier est de taille plus importante, la table dallocation unique


ne sut plus. Les blocs du chier ont toujours une taille gale ` lunit dale
a
e
location, mais ils ne sont pas tous accessibles directement. On introduit un
mcanisme ` deux tages : les T premi`res cases de la table donnent toujours
e
a
e
e
des adresses physiques de dbut de blocs du chier ; une case supplmentaire
e
e
donne ladresse physique dune seconde table, qui de nouveau donne T adresses
physiques de dbut de blocs du chier (Cf. Figure 19.3).
e
La taille dun chier moyen est ainsi borne par (T + T ) Ua . Notons que
e
lacc`s aux T premiers blocs est plus rapide que lacc`s aux blocs suivants,
e
e
puisquil ne ncessite pas dindirection.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Syst`me de gestion de chiers


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

482

Table dimplantation :
dans lunit dacc`s de numro 1.
e
e
e

2 3
...

Fig. 19.2 Implantation disperse dun seul chier de petite taille : lunit dallocation
e
e
est gale ` deux units dacc`s, et la table dimplantation est situe sur une
e
a
e
e
e
unit dacc`s. Elle donne T adresses physiques dunits dacc`s, quil faut
e
e
e
e
interprter comme les adresses de dbut des blocs du chier, chacun de taille
e
e
gale ` lunit dallocation.
e
a
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Implantation disperse sur un disque


e

483

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Table secondaire
1

Table primaire

T
T+1

Fig. 19.3 Implantation disperse dun seul chier de taille moyenne : lunit dallocation
e
e
correspond ` deux unit dacc`s. La table dimplantation primaire est situe
a
e
e
e
sur une unit dacc`s. Elle donne tout dabord T adresses physiques dunits
e
e
e
dacc`s, quil faut interprter comme les adresses de dbut de blocs du chier.
e
e
e
Elle donne galement, dans sa case dindice T + 1, ladresse physique dune
e
unit dacc`s qui contient une table secondaire. Cette nouvelle table donne T
e
e
adresses physiques dunits dacc`s, quil faut interprter comme les adresses
e
e
e
de dbut des blocs du chier. Tous les blocs du chier sont de taille gale `
e
e
a
lunit dallocation
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

484

3.3

Syst`me de gestion de chiers


e

Cas dun seul chier tr`s grand


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Lorsque le chier est vraiment tr`s grand, on reproduit le raisonnement


e
ci-dessus et on obtient un mcanisme ` trois tages. Les T premi`res cases de
e
a
e
e
la table donnent toujours des adresses physiques de dbut de blocs du chier ;
e
une case supplmentaire dindice T + 1 donne ladresse physique dune seconde
e
table, qui de nouveau donne T adresses physiques de dbut de blocs du chier
e
(comme dans le cas du chier de taille moyenne) ; une autre case, dindice
T + 2, donne ladresse dune table de tables ; une derni`re case, dindice T + 3,
e
donne ladresse dune table de tables de tables dadresses physiques de dbut
e
de blocs du chier.
La taille dun grand chier est ainsi borne par (T + T + T 2 + T 3 ) Ua . Si
e
lon choisit Ua = 512 octets, T = 10 pour la table primaire, et T = 128 pour
les suivantes, la taille de chiers peut atteindre (10 + 128 + 1282 + 1283 ) 512
octets, soit de lordre dun gigaoctets.
Lacc`s aux T premiers blocs est privilgi, puisquil est direct ; les T blocs
e
e e
suivants sont accessibles grce ` une indirection ; les T 2 suivants grce ` deux
a a
a a
3
indirections ; les T suivants grce ` trois indirections.
a a

3.4

Cas de plusieurs chiers

Tant que lon consid`re le cas dun seul chier, la table dimplantation prie
maire peut tre place ` une position xe sur le disque. Si lon veut maintenant
e
e a
stocker plusieurs chiers selon la mme mthode, chacun doit disposer de sa
e
e
table dimplantation, elle-mme stocke sur le disque. Il faut donc tablir une
e
e
e
correspondance entre le chier et ladresse physique de sa table dimplantation.
A cet eet, on rserve sur le disque une zone dite des descripteurs de e
chiers, de taille xe, et permettant le stockage de n tables dimplantation. Le
nombre de chiers stockables est ainsi born par n, une fois pour toutes (lors
e
du formatage du disque). Un chier est dsign par un numro, et ladresse
e
e
e
physique de son descripteur est obtenue comme un dcalage par rapport `
e
a
ladresse physique 0.
Le nombre de descripteurs prvu au formatage est donc le nombre maxie
mum de chiers reprsentables sur le disque. Selon la nature de lensemble des
e
chiers ` reprsenter, ce param`tre peut tre choisi plus ou moins grand.
a
e
e
e

3.5

Allocation de blocs

Les dirents chiers prsents sur un disque et reprsents de mani`re


e
e
e
e
e
disperse occupent des blocs de taille gale ` lunit dallocation, rpartis
e
e
a
e
e
de mani`re quelconque. Lors dune modication de lensemble des chiers
e
(cration, supression, augmentation...), il faut pouvoir : 1) dterminer ladresse
e
e
physique dun bloc libre ; 2) dclarer quun bloc nest plus utilis, de mani`re
e
e
e
a
` permettre son utilisation ultrieure.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Implantation disperse sur un disque


e

485

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Cest un probl`me gnral de gestion de mmoire. Il y a essentiellement 2


e
e e
e
techniques. La premi`re consiste ` maintenir une table de marquage des blocs
e
a
occups. La deuxi`me consiste ` maintenir une liste cha ee de blocs libres.
e
e
a
n

3.6

Redondance des informations

Tout chier est dcoup en blocs rpartis de mani`re quelconque sur le


e
e
e
e
disque, la structure du chier est donc enti`rement rete par les tables dime
ee
plantation, elles-mmes accessibles par un unique point dentre situ ` une
e
e
e a
position xe : le descripteur de chier. Si lon endommage ce descripteur, tout
est perdu. Dautres informations prsentes sur le disque sont particuli`rement
e
e
critiques : lunit dallocation utilise pour tous les chiers du disque ; la table
e
e
de marquage des blocs libres (ou la liste cha ee de blocs libres) ; etc.
n
Bien quil soit impossible de garantir compl`tement la prservation des
e
e
informations du disque en toutes circonstances, certaines informations particuli`rement critiques sont regroupes et rpliques. En protant de la structure
e
e
e
e
dun disque en cylindres (Cf. Chapitre 17), on dispose le paquet des informations critiques ` plusieurs emplacements dadresses physiques prdnies,
a
e e
disposs en spirale verticale : ainsi deux exemplaires situs sur des plateaux
e
e
dirents correspondent ` des positions direntes du bras. Si un probl`me
e
a
e
e
physique provoque latterrissage des ttes de lecture/criture, il existe toujours
e
e
des exemplaires ` labri.
a

3.7

Rsum de loccupation du disque


e
e

En tenant compte des diverses considrations nonces jusque l`, lensemble


e
e
e
a
des informations prsentes sur un disque est donc constitu de :
e
e
Plusieurs exemplaires du groupe des informations critiques (unit dalloe
cation, nombre de blocs de cette taille disponibles sur le disque, nombre
maximum de chiers). Les informations du groupe sont stockes de mani`re
e
e
contigu, et lensemble ne tient pas ncessairement dans un bloc, tel quil
e
e
est dni pour la gestion des chiers. La taille du groupe est prdnie
e
e e
(elle na pas ` tre inscrite sur le disque, ce qui repousserait le probl`me).
ae
e
Les adresses physiques de dbut des positions de recopie du groupe sont
e
galement prdnies.
e
e e
Egalement ` une position xe prdnie sur le disque, mais en un seul
a
e e
exemplaire, on trouve un marquage des descripteurs de chiers occups
e
Une zone contigu du disque est rserve aux descripteurs de chiers. Cette
e
e
e
zone commence ` une adresse prdnie, et les dirents descripteurs sont
a
e e
e
accessibles par des dcalages. La zone des descripteurs est de taille xe. La
e
taille dun descripteur est xe et prdnie.
e e
Une autre zone contigu du disque est rserve ` la table de marquage des
e
e
e a
blocs occups. Il faut 1 bit par bloc du disque utilisable pour les chiers. La
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

486

Syst`me de gestion de chiers


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

table de marquage est dautant plus volumineuse que lunit dallocation


e
est petite. A la limite, il faut 1 bit par unit dacc`s physique.
e
e

Tout lespace restant, vu comme un ensemble de blocs de taille gale `


e
a
lunit dallocation, est disponible pour le stockage dispers des chiers.
e
e

4.

Noms externes et autres informations


attaches aux chiers
e

4.1

Dsignation de chiers par des noms externes


e

Pour linstant les dirents chiers reprsents de mani`re disperse sur un


e
e
e
e
e
disque sont identiables par un entier de lintervalle [1, n], o` n est le nombre
u
maximum de descripteurs x au formatage.
e
Lune des fonctions du syst`me de gestion de chiers est de permettre `
e
a
lutilisateur une dsignation des chiers par des noms externes. Le SGF doit
e
donc grer une association nom/numro, cest-`-dire un ensemble de couples
e
e
a
comportant une cha de caract`res (de taille borne) et un entier. Cet enne
e
e
semble de couples constitue le chier catalogue du disque, et doit correspondre
a
` un numro de descripteur xe, par exemple 1.
e
Lacc`s ` un chier de nom externe X comporte ainsi 3 tapes :
e a
e
Lecture du descripteur numro 1 (adresse physique xe), qui donne la table
e
dimplantation primaire du chier catalogue.
Parcours des blocs du chier catalogue, pour chercher un couple <X,i>.
Notons ici que le nom de chier se comporte comme une cl de la relation
e
entre noms externes et numros de descripteurs, cest-`-dire qu` un nom
e
a
a
de chier donn ne peut correspondre quun descripteur.
e
Lecture du descripteur numro i. On est ramen au cas des chiers dsigns
e
e
e
e
directement par des numros.
e
Remarque : Lintroduction de la relation entre noms externes et numros
e
de descripteur, reprsente dans le chier catalogue, permet dassocier plue
e
sieurs noms externes au mme numro de descripteur. Cest le mcanisme
e
e
e
de lien dit physique oert par de nombreux syst`mes dexploitation, qui pere
met le partage dinformations stockes de mani`re unique, et visibles sous
e
e
des noms externes dirents. Noter toutefois que, dans ce cas, la suppression
e
de chier peut se rduire ` la suppression dune association nom/numro de
e
a
e
descripteur. Les blocs du chier et son descripteur ne peuvent tre eectie
vement librs que lorsquaucun couple du catalogue ny fait plus rfrence.
ee
ee
Pour viter un parcours exhaustif du catalogue qui permettrait de sassurer de
e
cette proprit lors de la suppression dun couple, on maintient en gnral un
ee
e e
compteur de rfrences dans le descripteur : la suppression eective du chier
ee
nest ralise que lorsque ce compteur vaut 1 ; dans les autres cas le compteur
e e
est dcrment.
e e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Etude de quelques fonctions du syst`me de gestion de chiers


e

4.2

487

Structure hirachique de lensemble de chiers


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

La plupart des syst`mes de gestion de chiers actuels g`rent des arborese


e
cences de catalogues. Un catalogue peut contenir deux types de chiers : des
catalogues sur les noeuds internes et les chiers ordinaires sur les feuilles de
larbre.
Le nom externe complet dun chier dcrit le chemin depuis la racine de
e
larbre vers la feuille considre. Dans la syntaxe de la plupart des interpr`tes
ee
e
de commandes unix, /users/info1/arthur/tp.c est le nom complet dun
chier situ au niveau 4 sous la racine. Les noms intermdiaires users, info1,
e
e
arthur correspondent ` des sous-arbres, quon appelle rpertoires (directory
a
e
en anglais) du SGF.
Lacc`s ` ce chier suit les tapes :
e a
e
Lecture du descripteur numro 1, qui donne la table dimplantation du
e
chier catalogue de la racine.
Parcours des units dallocation de ce chier, en recherchant un couple
e
< users, i >.
Lecture du descripteur numro i, qui donne la table dimplantation du e
chier catalogue de la racine du sous-arbre users.
Parcours des units dallocation de ce chier, en recherchant un couple
e
< info1, j >.
Lecture du descripteur numro j, qui donne acc`s au catalogue du souse
e
arbre users/info1 et recherche dun couple < arthur, k >
Finalement, lecture du descripteur numro k, qui donne acc`s au catalogue
e
e
du sous-arbre users/info1/arthur, et recherche dun couple < tp.c, >

est le numro de descripteur du chier cherch.


e
e

4.3

Autres informations attaches aux chiers


e

Outre le mcanisme de dsignation par nom externe, la plupart des syst`mes


e
e
e
dexploitation permettent dassocier aux chiers des informations comme : la
date de cration (voire la date de derni`re modication, la date de derni`re
e
e
e
consultation, etc.) ; le propritaire (dans un contexte multi-utilisateurs) et les
e
droits dacc`s en lecture et criture des utilisateurs non propritaires, etc.
e
e
e
Ces informations font partie du descripteur de chier.

5.

Etude de quelques fonctions du syst`me


e
de gestion de chiers

5.1

Formatage logique

Rappelons que nous avons dni au chapitre 17 la notion de formatage


e
physique dun disque, qui dtermine les pistes et secteurs, et tablit la correse
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

488

Syst`me de gestion de chiers


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

pondance entre ladressage par un couple (numro de piste, numro de secteur


e
e
dans la piste), et ladressage global par numro dunit dacc`s.
e
e
e
Une fois cette structuration du disque en units dacc`s eectue, le SGF
e
e
e
est responsable du formatage logique, qui permet de voir le disque comme un
ensemble de blocs de taille gale ` lunit dallocation.
e
a
e
Les param`tres du formatage logique sont : lunit dallocation et le nombre
e
e
maximum de chiers reprsentables. Lopration de formatage installe les mule
e
tiples exemplaires du groupe des informations critiques, et les valeurs initiales
de la table de marquage des descripteurs occups et de la table de marquage
e
des blocs occups. Elle construit galement le chier catalogue de la racine du
e
e
syst`me de chiers, qui est initialement vide. Le descripteur de ce chier est le
e
descripteur de numro 0.
e

5.2

Gestion dune information rpertoire courant


e

Une fonctionnalit usuelle du syst`me de gestion de chiers consiste ` foure


e
a
nir une notion de rpertoire courant. Nous verrons au chapitre 20 que cette
e
fonction est indispensable ` la ralisation de la notion de rpertoire courant
a
e
e
des interpr`tes de commandes.
e
Les fonctions oertes peuvent tre dcrites par :
e
e
RepCour : une squence de caract`res
e
e
SetRepCour : une action (la donne : une squence de caract`res)
e
e
e
SetRepCour(R) : RepCour R
GetRepCour : une squence de caract`res
e
e
GetRepCour : RepCour

Il est intressant de se poser la question de la dure de vie de linformation


e
e
RepCour. En eet, elle est ncessairement suprieure ` celle des appels des
e
e
a
primitives oertes par le SGF, dont SetRepCour et GetRepCour, mais aussi
toutes les oprations de lecture/criture dcrites au paragraphe 5.4 ci-dessous.
e
e
e
Pour tous les acc`s au syst`me de gestion de chiers paramtrs par un
e
e
e e
nom externe, on peut convenir que les les noms de chiers qui ne commencent
pas par un caract`re slash sont des noms relatifs au rpertoire courant. Pour
e
e
obtenir des noms absolus, il sut de les prxer par le contenu de la variable
e
RepCour. Cela suppose videmment que le contenu de la variable RepCour est
e
un nom absolu de rpertoire, dcrivant un chemin depuis la racine de larbre
e
e
des chiers jusqu` un noeud catalogue.
a
Noter que, dans le cas gnral dun syst`me multitches, le rpertoire coue e
e
a
e
rant est une notion locale ` un exemplaire dinterpr`te de commandes (Cf. Chaa
e
pitre 20) en cours dexcution, et il peut y en avoir plusieurs en parall`le. Dans
e
e
ce cas, une seule variable de rpertoire courant dans le SGF ne sut plus, et
e
il y en a en ralit une par processus (Cf. Chapitre 23).
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Etude de quelques fonctions du syst`me de gestion de chiers


e

Cration et suppression de chier


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

5.3

489

A chaque chier est associ un ensemble dinformations, permettant


e
daccder a son contenu, regroupes dans une structure appele descripteur
e
`
e
e
physique du chier ou noeud dinformation, ce terme faisant rfrence aux iee
nodes du syst`me unix. On y trouve en particulier la taille du chier et sa
e
table dimplantation primaire.
NoeudInfo : le type <
type : (catalogue, chier-ordinaire) { type du chier }
taille : un entier ; { taille du chier en nombre doctets }
tab-imp : un tableau sur [0..99] dAdPhysiques
{ potentiellement : adresses de dbut de 100 blocs du chier, chacun de la
e
taille de lunit dallocation UAlloc. }
e
>

Les octets formant le contenu du chier sont stocks sur les units dacc`s
e
e
e
dadresses physiques :
tab-imp[0]+0, tab-imp[0]+1, ..., tab-imp[0]+UAlloc 1,
tab-imp[1]+0, tab-imp[1]+1, ..., tab-imp[1]+UAlloc 1,
...
Le nombre dunits dacc`s eectivement occupes est dtermin par la
e
e
e
e
e
taille du chier en octets et la taille de lunit dacc`s en octets.
e
e
Lensemble des chiers prsents sur le disque est reprsent dans le
e
e
e
rpertoire o` un chier est identi par son nom et son acc`s indiqu par
e
u
e
e
e
le numro de son NoeudInfo. Une entre de rpertoire peut tre dcrite par :
e
e
e
e
e
EntreeRep : le type (nom : un texte ; NoNoeudInfo : un entier)

Le rpertoire est lui-mme un chier. Les NoeudInfo sont rangs de faon


e
e
e
c
contigu au dbut du disque, en commenant par celui du rpertoire.
e
e
c
e
La cration dun chier demande lallocation dune entre dans le catalogue
e
e
du rpertoire courant et la mise ` jour de cette entre avec le nom du chier et
e
a
e
un numro de noeud dinformation libre. Lajout au chier rpertoire est une
e
e
criture de chier, dcrite ci-dessous.
e
e
La suppression demande la libration de toutes les units dacc`s spcies
e
e
e
e e
dans la table dimplantation du descripteur et la libration de lentre correse
e
pondante dans le catalogue. La suppression dune entre de catalogue est une
e
modication du chier catalogue.

5.4

Ouverture, lecture et criture de chiers


e

Avant tout acc`s en lecture ou en criture ` un chier il est ncessaire de


e
e
a
e
raliser lopration douverture du chier. Au niveau utilisateur un chier est
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

490

Syst`me de gestion de chiers


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

dsign par un nom ; louverture consiste ` donner acc`s ` toutes les informae
e
a
e a
tions stockes dans le chier.
e
Ensuite on utilise les actions de lecture et dune action dcriture dune
e
unit dacc`s fournies par le pilote de priphrique associ au disque (Cf. Pae
e
e
e
e
ragraphe 3. du chapitre 17).
5.4.1

Description dun chier pour les utilisateurs

Les programmes utilisateurs du SGF manipulent les chiers par lintermdiaire dune structure de donnes qui contient toutes les informations
e
e
permettant daccder au chier ; outre les informations concernant lacc`s phye
e
sique, tires du descripteur physique (ou noeud dinformation) du chier, il est
e
ncessaire si lon veut raliser un acc`s squentiel, de mmoriser la position
e
e
e e
e
atteinte lors du dernier acc`s, le mode dutilisation autoris, etc. Cette struce
e
ture de donnes est installe par le syst`me de gestion de chier en mmoire
e
e
e
e
lors de louverture du chier et recopie sur le disque lors de la fermeture. On
e
obtient :
Descripteur : le type <
type : (catalogue, chier-ordinaire) { type du chier }
taille : un entier ; { taille du chier en nombre doctets }
tab-imp : un tableau sur [0..99] dAdPhysiques
{ potentiellement : adresses de dbut de 100 blocs du chier, chacun de la
e
taille de lunit dallocation UAlloc. }
e
oset : un entier ;
{ pointeur courant dans le chier : cest un dcalage par rapport au
e
dbut, en nombre doctets. }
e
mode : (lect, ecr) ; { acc`s en lecture ou en criture }
e
e
{ Autres informations comme par exemple les droits dacc`s ` un utilie a
sateur ou ` un autre }
a
>

5.4.2

Ouverture dun chier

La fonction douverture dun chier a pour rle de fournir aux programmes


o
utilisateurs un acc`s au chier identi par son nom.
e
e
Il sagit de chercher dans le catalogue le nom du chier. Pour cela il faut
lire le noeud dinformation du chier catalogue, puis parcourir les blocs du
catalogue (via sa table dimplantation) ` la recherche de la cha de caract`res
a
ne
e
dcrivant le nom du chier.
e
Lorsque lon a trouv le nom du chier on rcup`re le numro de son noeud
e
e
e
e
dinformation. Les noeuds dinformation sont stocks ` une adresse xe du
e a
disque ; on calcule alors ladresse physique du noeud dinformation du chier.
Ltape suivante consiste ` lire ce noeud dinformation et ` lutiliser pour
e
a
a
mettre ` jour le descripteur du chier. Le contenu du noeud dinformation est
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

5. Etude de quelques fonctions du syst`me de gestion de chiers


e

491

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

recopi et les informations non lies ` limplantation du chier sur disque sont
e
e a
initialises.
e
5.4.3

Lecture et criture de chier


e

La lecture demande au pralable une ouverture du chier en mode lecture.


e
Lutilisateur dispose alors du descripteur dans lequel il trouve ` la fois les infora
mations dacc`s physique et la taille du chier. Lors dune lecture squentielle,
e
e
les blocs, dont on trouve les adresses physiques de dbut dans la table dime
plantation, sont lus les uns apr`s les autres dans un tampon en mmoire. Le
e
e
dplacement par rapport au dbut du chier doit tre maintenu ` jour.
e
e
e
a
Une opration dcriture est similaire. Le dplacement par rapport au dbut
e
e
e
e
tant gal au nombre doctets du chier, lcriture squentielle a lieu ` la suite
e
e
e
e
a
des octets dj` mmoriss dans le chier.
ea e
e
Un diteur de texte qui ralise ` la fois des oprations de lecture et dcriture
e
e
a
e
e
travaille dans un tampon mmoire contenant tout ou une partie du chier. Au
e
lancement le chier est ouvert puis lu dans le tampon, une opration explicite
e
permet ` lutilisateur de mmoriser le contenu de son chier, cest-`-dire de
a
e
a
lcrire sur disque.
e

5.5

Sauvegarde, restauration, reconstitution des


informations dun disque

La sauvegarde des informations dun disque (sur une bande magntique


e
par exemple) peut prendre deux formes, qui correspondent aux commandes
dump et tar des syst`mes de la famille unix. Si lon veut sauvegarder un souse
ensemble donn de chiers, il est ncessaire daccder au disque en suivant les
e
e
e
informations fournies par les noms des chiers et les tables dimplantation de
leurs descripteurs. Lacc`s est alors similaire ` une srie de lectures.
e
a
e
Si, en revanche, on veut sauvegarder enti`rement le disque, il sut doublier
e
momentanment la structure impose par le formatage logique, et de recopier
e
e
squentiellement tous les secteurs du disque sur une bande, dans lordre des
e
adresses physiques. Cest beaucoup plus rapide que la sauvegarde chier par
chier, qui ralise nalement le mme travail, mais en compliquant les acc`s.
e
e
e
Cest la commande dump.
Finalement il existe en gnral une fonction du SGF qui permet de proter
e e
de la redondance dinformation sur le disque pour tenter quelques rparations,
e
lorsquun probl`me physique endommage un ou plusieurs secteurs. Cest la
e
commande fsck (pour le system check) des syst`mes de la famille unix.
e

5.6

Dsignation des priphriques ` travers le SGF


e
e
e
a

Dans le syst`me unix les priphriques sont nomms de la mme faon


e
e
e
e
e
c
que sil sagissait de chiers : /dev/.... La convention de nommage et le type

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

492

Syst`me de gestion de chiers


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

associ ` ce genre de chier permet de les distinguer des autres.


ea
La procdure douverture de chier analyse le nom et se branche sur
e
la procdure dcrite plus haut sil sagit dun chier standard, ou sur une
e
e
procdure spciale dacc`s au priphrique. Les procdures de lecture/criture
e
e
e
e
e
e
e
font de mme.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 20

Dmarrage du syst`me, langage


e
e
de commandes et interpr`te
e
Nous venons de construire un syst`me logiciel et matriel simple, en connece
e
tant un processeur et de la mmoire (chapitre 15), en assurant la connexion
e
de cet ensemble au monde extrieur grce aux circuits dentres/sorties (chae
a
e
pitres 16 et 17), et en construisant le syst`me de gestion de chiers (chapitre 19)
e
pour le stockage des informations ` longue dure de vie. Que manque-t-il ena
e
core pour en faire un ordinateur, au sens dni chapitre 1 ? Il manque un
e
protocole de dialogue entre cette machine et un utilisateur humain. Sans intervention dun utilisateur humain qui commande des calculs de la machine, crit
e
de nouveaux programmes, les compile et les excute, etc., le syst`me matriel
e
e
e
et logiciel que nous avons dcrit, aussi sophistiqu soit-il, ne permet dexcuter
e
e
e
des programmes que sils sont inscrits en mmoire morte.
e
Le dialogue entre lutilisateur humain et le syst`me matriel suppose encore
e
e
une fois la dnition dun langage prcis et non ambigu, que nous appellerons
e
e
langage de commandes. Ce langage est ncessairement interprt, puisquil est
e
ee
saisi de mani`re interactive par lutilisateur humain.
e
Le programme interpr`te du langage de commandes (ou, plus simplement,
e
linterpr`te de commandes) est actif depuis le lancement du syst`me jusqu` son
e
e
a
arrt ; il lit au clavier une ligne de commande, analyse ce texte pour dterminer
e
e
quelle commande il reprsente, avec quels param`tres. Dans un interpr`te texe
e
e
tuel du syst`me unix, on crit par exemple : more toto.c ; more est le nom
e
e
dun programme rsidant quelque part dans le syst`me de gestion de chiers,
e
e
et toto.c est le param`tre de la commande ; ici cest galement un nom de
e
e
chier. Linterpr`te de commandes doit accder au SGF pour lire le chier
e
e
excutable du programme more, et linstaller en mmoire pour excution en
e
e
e
lui passant les param`tres indiqus dans la ligne de commandes. Lorsque le
e
e
programme more se termine, on retourne dans linterpr`te de commandes, qui
e
est prt ` lire une nouvelle ligne.
e a
Pour terminer la prsentation de larchitecture logicielle et matrielle dun
e
e
syst`me simple, il nous reste ` dcrire comment ce syst`me simple dmarre.
e
a e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

494

Dmarrage du syst`me, langage de commandes et interpr`te


e
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Nous commenons, paragraphe 1., en dcrivant le dmarrage du syst`me.


c
e
e
e
Le paragraphe 2. dnit exactement le mcanisme de base ncessaire `
e
e
e
a
tout interpr`te de commandes, le chargeur/lanceur de programmes ; ce
e
mcanisme est galement utilis au chapitre 23 pour la cration de proe
e
e
e
cessus. Le paragraphe 3. donne le programme type dun interpr`te de
e
commandes textuel. Nous terminons, au paragraphe 4., en voquant les
e
langages de commandes graphiques (ou icniques) et les langages de como
mandes ` structures de contrle.
a
o

1.

Dmarrage du syst`me
e
e

Nous considrons un syst`me simple qui comporte de la mmoire morte, de


e
e
e
la mmoire vive et un disque dur.
e
Au dmarrage du syst`me, cest-`-dire ` la mise sous tension du dispositif
e
e
a
a
matriel et logiciel, on peut supposer que la ralisation matrielle charge la
e
e
e
valeur 0 dans le compteur programme PC. Le processeur commence donc `
a
interprter le contenu de la mmoire ` ladresse 0. Cette adresse correspond `
e
e
a
a
de la mmoire morte, qui contient lamorce du syst`me.
e
e
Cette amorce est constitue du code de la procdure de dmarrage ; dun
e
e
e
pilote de disque rudimentaire (cest-`-dire un ensemble de procdures dacc`s
a
e
e
au disque) et dun embryon de syst`me de gestion de chiers capable de ree
trouver sur le disque une image du syst`me dexploitation complet et de la
e
recopier en mmoire vive.
e
Le syst`me complet comporte le syst`me de gestion de chiers complet
e
e
(dcrit au chapitre 19), les pilotes de priphriques complets (dcrits au
e
e
e
e
chapitre 17) dont le pilote du disque, le code de la procdure de chargee
ment/lancement de programmes, que nous tudions en dtail au paragraphe 2.
e
e
ci-dessous.

1.1

Premi`re tape du dmarrage du syst`me


e e
e
e

La procdure de dmarrage ralise les tapes suivantes :


e
e
e
e
Appel aux fonctions de lembryon de SGF (qui appellent elles-mmes les
e
fonctions du pilote de disque rudimentaire), pour localiser et lire sur le
disque limage du syst`me dexploitation complet.
e
Recopie de ce syst`me en mmoire vive, ` une adresse prdnie.
e
e
a
e e
Installation de la structure de donnes en mmoire vive, ncessaire ` la vie
e
e
e
a
du syst`me (zone libre pour les programmes, zone occupe par le syst`me,
e
e
e
adresses qui dlimitent ces zones).
e
Initialisation du registre SP du processeur utilis comme pointeur de pile.
e
La gure 20.1-(a) donne le contenu de la mmoire et du registre pointeur
e
de pile juste apr`s le dmarrage du syst`me, cest-`-dire apr`s le droulement
e
e
e
a
e
e
du code damorage dcrit ci-dessus.
c
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Mcanisme de base : le chargeur/lanceur


e

495

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

La structure de mmoire dcrite ici nest pas ncessairement implante telle


e
e
e
e
quelle dans les syst`mes rels. Toutefois les informations manipules et les are
e
e
guments avancs pour choisir cette structure sont ralistes. On peut considrer
e
e
e
que les syst`mes rels ne sont que des variantes de la structure dcrite ici.
e
e
e
A lune des extrmits de la mmoire, on trouve rassembls des programmes
e e
e
e
et des donnes qui doivent avoir la dure de vie du syst`me : le programme et
e
e
e
les donnes du syst`me de gestion de chiers, des pilotes de priphriques, la
e
e
e
e
procdure de chargement/lancement de programmes pris dans des chiers.
e
Parmi les donnes du syst`me on trouve les trois adresses DbutMEM,
e
e
e
FinMEM et DbutMEMlibre qui dlimitent les portions disponibles de la
e
e
mmoire : la zone entre DbutMEM et DbutMEMlibre est occupe par les
e
e
e
e
donnes et programme syst`me, et nest donc pas disponible pour les proe
e
grammes utilisateur. La zone entre DbutMEMlibre et FinMEM est disponible
e
pour les programmes utilisateur. La base de la pile est en FinMEM, et elle
progresse vers la zone syst`me, jusqu` la borne DbutMEMlibre.
e
a
e
Le registre pointeur de pile du processeur est initialis ` la valeur FinMEM.
ea

1.2

Deuxi`me tape du dmarrage


e
e
e

Une fois cette structure de mmoire installe, il ne reste plus qu` lancer
e
e
a
un programme interpr`te dun langage de commandes, qui sera actif durant
e
toute la dure de vie du syst`me, et fera appel ` la procdure de chargee
e
a
e
ment/lancement de programme pour excuter les programmes requis par lutilie
sateur ` la ligne de commandes. Pour installer le programme interpr`te de coma
e
mandes lui-mme, la procdure de dmarrage utilise galement la procdure
e
e
e
e
e
de chargement/lancement.

1.3

Fin du syst`me
e

Nous verrons au paragraphe 3. que lune des commandes de tout langage


de commandes est terminer, qui provoque la terminaison du programme dinterprtation, et donc le retour dans la procdure de dmarrage du syst`me.
e
e
e
e
Celle-ci peut alors appeler des procdures du syst`me de gestion de chiers
e
e
qui permettent de placer le syst`me de chiers dans un tat cohrent ; on peut
e
e
e
alors teindre la machine.
e

2.

Mcanisme de base : le chargeur/lanceur


e

Au l des chapitres 4, 5, 12, 13 et 18 nous avons tudi les transformae


e
tions successives dun chier texte de programme en langage de haut niveau,
jusquau chier excutable qui lui correspond. Nous avons, au chapitre 18, antie
cip sur le chargement du programme en mmoire, en tudiant les algorithmes
e
e
e
de translation dadresses.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

496

Dmarrage du syst`me, langage de commandes et interpr`te


e
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Nous tudions ici le mcanisme complet de chargement et lancement de proe


e
gramme rsidant dans un chier du SGF, en prcisant en particulier comment
e
e
et o` se fait lallocation eective de mmoire. Noter que lditeur de textes, le
u
e
e
compilateur et lassembleur qui ont servi ` produire le programme excutable
a
e
a
` charger sont eux-mmes des programmes rsidant dans le SGF sous forme
e
e
de code excutable, et ont d, en leur temps, tre chargs en mmoire pour
e
u
e
e
e
excution.
e
Toute la dicult rside dans le fait que la procdure de chargee e
e
ment/lancement ne se comporte pas tout ` fait comme une procdure standard,
a
e
dont nous avons tudi le codage au chapitre 13. Pour comprendre la suite, il
e
e
est toutefois ncessaire davoir bien assimil le principe du codage des blocs
e
e
imbriqus ` laide dune pile.
e a
Supposons quun programme P veuille lancer un programme Q. Tr`s
e
schmatiquement, le fonctionnement est le suivant :
e
1) La procdure active du programme P appelle la procdure de chargee
e
ment/lancement avec comme param`tres : le nom du chier dans lequel se
e
trouve le code compil du programme Q ` lancer et les param`tres ventuels
e
a
e
e
ncessaires au programme Q lors de son lancement.
e
2) La procdure de chargement/lancement alloue une zone de mmoire
e
e
ncessaire pour linstallation en mmoire vive du chier objet de Q (zones
e
e
TEXT, DATA et BSS), installe le programme et ralise la translation
e
dadresses (Cf. Chapitre 18, Figure 18.9). Attention, cette zone de mmoire
e
est ncessaire pour linstallation du code du programme lui-mme, et na rien
e
e
a
` voir avec la zone de pile ncessaire pour les variables locales de ses procdures
e
e
lors de son excution.
e
3) La procdure de chargement/lancement lib`re la place quelle occupe
e
e
dans la pile et se transforme en la procdure principale du programme lanc.
e
e
Nous dtaillons ce mcanisme au paragraphe 2.3. Lorsque le programme
e
e
lanc Q se termine, le contrle revient donc directement dans le programme
e
o
P , sans repasser par le contexte intermdiaire de la procdure de chargee
e
ment/lancement.
Nous prcisons ci-dessous linterface de la procdure de chargee
e
ment/lancement, et son droulement.
e

2.1

2.1.1

Param`tres et rsultat de la procdure


e
e
e
de chargement/lancement
Les donnes
e

Dans le cas gnral, la procdure de chargement/lancement a pour pae e


e
ram`tres donnes : une cha de caract`res qui donne le nom du chier qui
e
e
ne
e
contient le programme ` charger ; une suite de cha
a
nes de caract`res qui constie
tuent les param`tres ` donner ` ce programme.
e
a
a
La premi`re utilisation de la procdure de chargement/lancement est faite
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Mcanisme de base : le chargeur/lanceur


e

497

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

par la procdure de dmarrage pour installer linterpr`te de commandes. Dans


e
e
e
ce cas le param`tre nom de chier est le nom de linterpr`te de commandes
e
e
standard (qui peut tre une donne inscrite dans le code de dmarrage).
e
e
e
Toutes les utilisations ultrieures sont le fait de linterpr`te de commandes
e
e
lui-mme. Dans ce cas le nom du programme ` charger et les param`tres qui
e
a
e
doivent lui tre transmis sont donns par lutilisateur dans sa ligne de come
e
mandes. Par exemple, dans le langage de commandes csh des syst`mes unix, la
e
commande ls -l doit provoquer le chargement en mmoire du code excutable
e
e
de ls, en lui transmettant le param`tre additionnel -l. (ls est la commande
e
utilise pour acher la liste des noms de chiers du rpertoire courant, et -l
e
e
est une directive de prsentation de cette liste). Noter que les param`tres sont
e
e
lus au clavier par linterpr`te, sous forme de cha
e
nes de caract`res. Le proe
gramme interpr`te na aucun moyen de dcoder ces cha
e
e
nes de caract`res pour
e
y retrouver par exemple des nombres. Le programme charg reoit donc des
e c
cha
nes, et les dcode lui-mme.
e
e
Cela permet de comprendre le prol de la fonction main des programmes
crits en C, qui joue le rle de programme principal :
e
o
int main (int argc, char *argv[])

o` argc est le nombre de mots apparaissant sur la ligne de commandes (y


u
compris le nom de la commande elle-mme), et argv est un tableau de cha
e
nes
de caract`res qui contient les dirents mots de la ligne de commande.
e
e

2.1.2

Le rsultat
e

Le rsultat de la procdure de chargement/lancement est un code de retour,


e
e
cest-`-dire une information qui tient dans un registre du processeur.
a
Les valeurs possibles du code de retour de la procdure de chargee
ment/lancement sont ` envisager dans deux situations :
a
La procdure choue, et le programme demand ne peut tre charg ; le
e
e
e
e
e
programme demand nexiste pas, ou bien le chier nest pas lisible, ou bien
e
il ny a pas assez de place libre pour installer le programme en mmoire,
e
etc.
Le programme a pu tre lanc, et sest termin. Il peut avoir lui-mme rendu
e
e
e
e
un code de retour.
Comme voqu ci-dessus, la procdure de chargement/lancement a un come
e
e
portement tr`s particulier : lorsque le chargement du programme russit, la
e
e
procdure de chargement se transforme en ce programme, par manipulations
e
directes des informations prsentes dans la pile. Lorsque le programme lanc
e
e
se termine, le contrle revient directement dans lappelant du chargeur. La
o
procdure de chargement na donc de rsultat que lorsquelle choue ; le rsultat
e
e
e
e
entier code la cause de lerreur, parmi celles suggres ci-dessus.
ee
Lorsque le chargement russit, lappelant du chargeur reoit directement le
e
c
rsultat du programme charg.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

498

2.1.3

Dmarrage du syst`me, langage de commandes et interpr`te


e
e
e

Passage des param`tres


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Nous dtaillons le fonctionnement de la procdure de chargee


e
ment/lancement, et en particulier la structure de ses param`tres et de son
e
rsultat, dans le cas o` les appels de procdures sont raliss directement par
e
u
e
e e
la pile (Cf. Chapitre 13, le schma de codage des appels de procdures dans
e
e
un langage dassemblage style 68000). Nous utilisons le mcanisme de retour
e
des rsultats de fonction simples dcrit au chapitre 13.
e
e
Dans le cas dappels de procdures raliss par un mcanisme de fentre
e
e e
e
e
de registres (comme pour le processeur sparc) ou de toute autre mani`re, la
e
solution dcrite ci-dessous doit tre adapte. Les principes de base restent les
e
e
e
mmes, toutefois.
e
Un exemple de contenu de la pile tel quil doit tre install par lappelant
e
e
de la procdure de chargement/lancement est donn gure 20.1-(b).
e
e

2.2

2.2.1

Allocation de mmoire pour linstallation


e
des programmes ` charger
a
Cas gnral
e e

Dans le cas gnral dun syst`me multi-utilisateurs ou simplement mule e


e
titches (Cf. Partie VI), les besoins en zones mmoire pour le chargement des
a
e
programmes surviennent dans un ordre quelconque. Il est tout ` fait possible
a
dobserver un comportement du syst`me dans lequel les chargements et termie
naisons de programmes A et B sont entrelacs (dbut de A, dbut de B, n de
e
e
e
A, n de B).
Il est donc ncessaire de raliser une allocation mmoire disperse gnrale,
e
e
e
e e e
dont linterface est dcrite au chapitre 4, paragraphe 4. Les fonctions dalloe
cation et libration font partie du syst`me de base, leur code (Zones TEXT,
e
e
DATA et BSS) est prsent en mmoire, dans la zone syst`me, pendant toute
e
e
e
la dure de vie du syst`me ; elles nont donc pas ` tre elles-mmes charges en
e
e
ae
e
e
mmoire, ce qui repousserait le probl`me de lallocation. Ces deux fonctions
e
e
mettent ` jour les informations qui dcrivent loccupation de la mmoire ` un
a
e
e
a
moment donn (tableau de marquage de zones libres, ou liste de blocs cha es,
e
n
etc.). Ces informations sont galement prsentes en mmoire vive pendant
e
e
e
toute la dure de vie du syst`me.
e
e
2.2.2

Cas du syst`me simple


e

Dans le cas que nous allons dtailler, nous supposerons que le syst`me nest
e
e
ni multi-utilisateurs, ni multitches. Dans ce cas les besoins en zones mmoire
a
e
pour le chargement des programmes suivent le schma dernier allou/premier
e
e
libr. En eet, la procdure dinitialisation charge linterpr`te, qui peut charee
e
e
ger des programmes utilisateur, lesquels peuvent eux-mmes charger dautres
e
programmes, mais tout cela se droule comme une suite dappels de procdures
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

499

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

2. Mcanisme de base : le chargeur/lanceur


e

MEM

MEM

code de
lamorce

ROM

SP

Ad. de retour dans lappelant


Ad. du nom du programme.

Syst`me
e

3 (nombre de param`tres)
e

RAM

DbutMEM
e
nMEM

DbutMEMlibre
e

Ad. du 1er param.

Ad. du 2`me param.


e

Ad. du 3`me param.


e

m o

0
0 t o

R
t

0
o

max

SP

(a)

(b)

Fig. 20.1 (a) : Contenu de la mmoire apr`s la premi`re tape du dmarrage.


e
e
e e
e
(b) : Contenu dtaill de la pile install par lappelant de la procdure de
e
e
e
e
chargement/lancement : le nom du programme est mor, les param`tres ` lui
e
a
transmettre sont -d, -R et toto/tutu.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

500

Dmarrage du syst`me, langage de commandes et interpr`te


e
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

(malgr le comportement atypique de la procdure de chargement dcrit plus


e
e
e
haut).
La mmoire disponible pour le chargement des programmes peut donc tre
e
e
gre en pile. Attention, il ne faut pas confondre cette zone de mmoire vive
ee
e
gre en pile, et la zone appele pile dexcution que nous avons dcrite au chaee
e
e
e
pitre 13, qui sert aux variables locales et param`tres des blocs du programme
e
en cours dexcution.
e
Ladresse DbutMemLibre joue le rle de pointeur de pile de la zone de
e
o
mmoire utilise pour le chargement du code des programmes. Ce pointeur
e
e
(mmoris dans une case mmoire et/ou dans un registre ddi du processeur),
e
e
e
e e
est initialis par la procdure dinitialisation, comme mentionn plus haut.
e
e
e
Pour rserver une zone pour le chargement dun programme, la procdure de
e
e
chargement doit dplacer ce pointeur vers les adresses plus grandes (vers le
e
bas sur la gure 20.1-(a)).
Des considrations de symtrie voudraient que cette mme procdure
e
e
e
e
de chargement soccupe de replacer le pointeur DbutMemLibre ` sa valeur
e
a
prcdente, lorsque le programme qui a t charg et lanc se termine, et que
e e
ee
e
e
la zone quil occupait peut tre rcupre. Le comportement particulier de la
e
e
ee
procdure de chargement nous en empche : lorsque le chargement russit,
e
e
e
on ne revient pas dans la procdure de chargement (ce qui aurait permis de
e
dplacer DbutMemLibre), mais directement dans lappelant du chargeur. Ce
e
e
comportement est assur par trois points particuliers de lalgorithme dtaill
e
e
e
ci-dessous, que nous reprons par les lettres , et .
e
La solution que nous dcrivons ci-dessous consiste ` faire en sorte que tout
e
a
programme (linterpr`te charg le premier, les programmes quil charge, les proe
e
grammes chargs par ceux-l`, etc.) dispose, dans la zone de pile o` se trouvent
e
a
u
ses param`tres, dune adresse mmoire qui lui permet de reprer la zone oce
e
e
cupe par ses zones TEXT, DATA et BSS.
e

2.3

Droulement du chargement/lancement
e

La gure 20.2 illustre les tats successifs de la mmoire (pile dexcution et


e
e
e
zone occupable par le code et les donnes des programmes lancs), depuis une
e
e
situation o` un programme Psapprte ` lancer un programme Q, jusqu` la
u
e a
a
situation o` le programme Q a t install et est en cours dexcution, prt `
u
ee
e
e
e a
charger et installer lui-mme un autre programme.
e
2.3.1

Etat de la mmoire quand un programme sapprte ` en


e
e a
charger et lancer un autre

La gure 20.2-(a) illustre linvariant ` respecter : un programme P est


a
en cours dexcution, et sapprte ` demander le chargement/lancement dun
e
e a
programme Q.
Les zones TEXT, DATA et BSS du programme P sont en mmoire vive,
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Mcanisme de base : le chargeur/lanceur


e

501

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

...

TDB (R)

ZoneP

TDB (P)

SP

Variables locales
de P

FP
Sauv. FP de R
Ad. Retour dans R
Copyright 2006 TIMA EDITIONS
Premire dition : Dunod 2000

...

Adresses
faibles

Adresses
fortes

502

Dmarrage du syst`me, langage de commandes et interpr`te


e
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

vers les adresses faibles. Le contexte dynamique de P occupe une portion de


pile situe vers les adresses fortes, entre les adresses pointes par les registres
e
e
SP (pointeur de pile) et FP (pointeur de base denvironnement).
Au-dessus (vers les adresses faibles) de la zone occupe par les zones TEXT,
e
DATA et BSS de P, on trouve les zones TEXT, DATA et BSS des programmes
qui ont lanc P (R sur la gure), dont la procdure dinitialisation du syst`me,
e
e
e
tout en haut.
En dessous (vers les adresses fortes) de ladresse pointe par FP, on trouve
e
les environnements des procdures de P appeles par la procdure principale
e
e
e
et, encore en dessous, les environnements des procdures du programme qui a
e
lanc P.
e
Nous dcrivons ci-dessous les tapes du chargement/lancement.
e
e
2.3.2

Appel de la procdure de chargement/lancement


e

La gure 20.2-(a) dcrit ltat de la mmoire lorsque le programme P


e
e
e
sapprte ` charger un programme Q.
e a
La gure 20.2-(b) dcrit ltat de la mmoire apr`s les tapes suivantes :
e
e
e
e
e
Appel de la procdure C de chargement/lancement par la procdure du
e
e
programme P en cours dexcution : cette procdure empile les param`tres
e
e
e
pour C, qui comportent : le nom du chier contenant le programme Q
a
` lancer, et les param`tres pour Q ; le nom du chier est plac tout en
e
e
haut (en dernier). La structure dtaille des param`tres pour C est donne
e
e
e
e
gure 20.1-(b).
Lappel de C proprement dit empile ladresse de retour dans P () .
Installation de lenvironnement de la procdure de chargement/lancement
e
(voir chapitre 13 et la gestion du lien dynamique) : sauvegarde du pointeur
de base de lenvironnement de lappelant dans la pile, et mise en place
du pointeur de base de lenvironnement de la procdure de chargement ;
e
dplacement du pointeur de pile pour mnager un espace pour les variables
e
e
locales de la procdure.
e
Les variables locales de C sont dcrites par le lexique suivant :
e
Taille : un entier { taille de mmoire ncessaire ` linstallation du proe
e
a
gramme }
PFichier : un descripteur de chier { Cf. Chapitre 19 }
EnTete : une entte de chier excutable{ Cf. Chapitre 18 }
e
e

2.3.3

Excution de la procdure de chargement/lancement


e
e

La gure 20.2-(c) illustre ltat de la mmoire apr`s ltape dcrite dans ce


e
e
e e
e
paragraphe.
Le code de la procdure de chargement/lancement commence par accder
e
e
au param`tre qui donne ladresse du nom du programme ` charger (on suppose
e
a
que cest un nom absolu pour linstant) puis appelle la procdure douverture
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Mcanisme de base : le chargeur/lanceur


e

503

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

de chier dapr`s son nom (Cf. Chapitre 19). Les param`tres ` lui passer sont :
e
e
a
ladresse du nom de chier, le mode douverture (ici lecture), ladresse de la
variable PFichier. La procdure douverture peut chouer, et rendre un code
e
e
derreur dans un registre ; dans ce cas la procdure de chargement se termine,
e
en conservant ce code de retour (voir dernier point).
Lorsque louverture du chier sest bien passe, la variable PFichier est
e
pertinente, et peut servir ` raliser les acc`s suivants. Ltape suivante est
a e
e
e
lappel de la procdure du SGF qui permet de lire une portion du chier de
e
la taille de EnTete, ` partir du dbut du chier. Les param`tres ` lui passer
a
e
e
a
sont : ladresse de PFichier, ladresse de EnTete. Si tout se passe bien, la variable EnTete contient ensuite la description des zones du chier excutable,
e
ainsi quun marqueur qui indique la nature du chier. Si ce nest pas un chier excutable, cela constitue un nouveau cas o` la procdure de chargement
e
u
e
choue, en rendant un code derreur. Si le chier est bien un chier excutable,
e
e
on peut poursuivre.
Le code de la procdure de chargement/lancement consiste ensuite ` calcue
a
ler la taille de la zone mmoire ncessaire ` linstallation du code et des donnes
e
e
a
e
du programme Q. Len-tte du chier excutable donne les tailles respectives
e
e
des zones TEXT, DATA et BSS du programme. La variable Taille est aecte
e
a
` la somme de ces tailles (ventuellement arrondie au multiple de 4 ou de 8
e
suprieur, si ce nest pas dj` fait dans le chier excutable, pour satisfaire `
e
ea
e
a
des contraintes dalignement en mmoire vive).
e
Il faut ensuite allouer une zone mmoire pour le programme ` lane
a
cer et dterminer ainsi ladresse de chargement. Nous avons vu au parae
graphe 2.2.2 que la zone de mmoire utilise pour installer le code des proe
e
grammes que lon charge est gre en pile, dans notre syst`me simple. Il
ee
e
sut donc de dplacer le pointeur de dbut de la zone de mmoire libre, `
e
e
e
a
partir de son ancienne position. Cette position est connue et vaut, pendant
lexcution de C, ZoneP = MEM [MEM[FP] + ]]. Il sut donc de calculer
e
ZoneQ ZoneP + Taille.
La gure 20.2-(c) montre le rsultat de lallocation : la zone disponible pour
e
Q est comprise entre les adresses ZoneP incluse et ZoneQ exclue.
La procdure C poursuit en recopiant le chier excutable en mmoire vive,
e
e
e
a
` partir de ladresse ZoneP, vers les adresses fortes, cest-`-dire entre ZoneP
a
incluse et ZoneQ = ZoneP + taille exclue. Elle applique ensuite lalgorithme de
translation des adresses. Pour cela il faut lire dans le chier toujours ouvert la
zone des donnes de translation TEXT et la zone des donnes de translation
e
e
DATA. Le chier ne sert plus ` rien ensuite, et peut donc tre referm. Le
a
e
e
mot mmoire qui contient ladresse du nom du chier ` charger (juste sous
e
a
ladresse de retour dans lappelant du chargeur, marqu dune * sur la gure)
e
peut tre cras, puisque le nom ne sert plus ` rien. On y range ladresse ZoneQ
e e
e
a
(Cf. Figure 20.2-(c)).
Lun des champs de len-tte donne le dcalage Dcal du point dentre du
e
e
e
e
programme Q par rapport au dbut de sa zone TEXT : cest ladresse relative
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

504

Dmarrage du syst`me, langage de commandes et interpr`te


e
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

de sa procdure principale. Ce dcalage est stock dans un registre, puis le


e
e
e
pointeur de pile est ramen ` la base de lenvironnement de la procdure de
ea
e
chargement par SP FP. Le pointeur FP est replac sur la base de lenvie
ronnement de lappelant par FP MEM[FP]. On calcule ladresse absolue
du point dentre du programme ` lancer, dapr`s ladresse du dbut de la zone
e
a
e
e
qui lui a t alloue (ZoneP) et le dcalage du point dentre. Cette adresse
ee
e
e
e
absolue est range dans la pile ` ladresse SP : MEM[SP] ZoneP + Dcal
e
a
e
().

2.3.4

Lancement eectif du programme charg


e

Il ne reste plus quune tape pour atteindre ltat dcrit par la gure 20.2e
e
e
(d), dans lequel le programme Q est install et en cours dexcution. On sest
e
e
ramen ` linvariant dcrit par la gure 20.2-(a), Q peut lui-mme charger et
ea
e
e
lancer un autre programme.
Une instruction type rts du langage machine 68000 sut () : son excution
e
dpile ladresse absolue du point dentre du programme Q dans le compteur
e
e
programme. On entre donc dans le code de la procdure principale du proe
gramme Q avec SP pointant sur ladresse de retour dans P, et FP pointant sur
la base de lenvironnement de P. Le prologue de la procdure principale de Q
e
installe la sauvegarde du pointeur de base, dplace FP, puis dplace SP pour
e
e
mnager la place des variables locales de la procdure principale de Q.
e
e
Les param`tres pour Q, qui lui avaient t transmis par P via C, sont
e
ee
disponibles dans la pile ` lendroit habituel, ` partir de FP+3 4 (les adresses
a
a
tant stockes dans 4 octets).
e
e

2.3.5

Terminaison de la procdure de chargement/lancement


e

En cas derreur lors du chargement, la procdure de chargement/lancement


e
se termine comme une procdure normale, avec un code de retour transmis `
e
a
son appelant P.
Lorsque le chargement se passe bien, au contraire, la procdure de chare
gement/lancement ne se termine pas comme une procdure normale : elle se
e
transforme en la procdure qui correspond au programme charg, qui lui a la
e
e
structure dune procdure normale.
e
Quand la procdure principale du programme charg se termine, par une
e
e
squence de terminaison normale de procdure, elle trouve en sommet de pile
e
e
ladresse de retour dans lappelant du chargeur. On retourne donc dans lappelant du chargeur directement.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Programmation de linterpr`te de commandes


e

Allocation dynamique de mmoire par


e
le programme lanc
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

2.4

505

Nous avons dcrit comment est ralise lallocation de mmoire pour un


e
e e
e
programme, lors de son chargement en mmoire. Outre la mmoire alloue une
e
e
e
fois pour toutes, qui contient son code et ses donnes, le programme, lorsquil
e
sexcute, utilise galement la pile dexcution.
e
e
e
Il nous reste ` tudier comment et o` se font les ventuelles allocations
a e
u
e
dynamiques de mmoire, demandes par le programme charg, qui peut faire
e
e
e
appel ` des procdures Allouer, Librer telles quelles sont dcrites au chapitre 4.
a
e
e
e
Tout dabord, le code de ces procdures peut faire partie du syst`me de
e
e
base, et tre install en mmoire en permanence. Il peut aussi tre stock dans
e
e
e
e
e
une biblioth`que de fonctions, lie au code de notre programme. Dans ce cas
e
e
les procdures font partie du code du programme charg.
e
e
En quoi consiste lalgorithme des actions Allouer et Librer ? La premi`re
e
e
question est : quelle zone de mmoire vive peut-elle tre rserve par le proe
e
e
e
gramme ? Autrement dit, o` reste-t-il de la place, et pour quelle partie de la
u
mmoire le programme lanc a-t-il le moyen de dclarer que la zone est rserve
e
e
e
e
e
a
` son usage exclusif ?
Dans le cas de notre syst`me simple, il sut que le programme charg
e
e
augmente articiellement la zone de mmoire qui lui a t alloue pour ses
e
ee
e
zones TEXT, DATA et BSS lors de son chargement. Pour cela, la procdure
e
dallocation dune zone de taille T appele par la procdure principale du
e
e
programme P doit excuter :
e
rsultat MEM[FP + ]
e
MEM[FP + ] MEM[FP + ] + T

La zone de mmoire comprise entre lancienne valeur de MEM[FP + ]


e
comprise et la nouvelle valeur exclue est utilisable par le programme P comme
il lentend. Il en conna ladresse, ayant reu le rsultat rsultat de la procdure
t
c
e
e
e
dallocation.
Les procdures dallocation et de libration peuvent ou non proter dune
e
e
gestion disperse de la mmoire.
e
e

3.

Programmation de linterpr`te
e
de commandes

Linterpr`te de commandes est le programme lanc par la procdure globale


e
e
e
de dmarrage du syst`me. Il est fait pour tre actif pendant toute la dure de
e
e
e
e
vie du syst`me ; quand sa procdure principale se termine, le contrle revient
e
e
o
dans la procdure de dmarrage (Cf. Paragraphe 1.3).
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

506

Dmarrage du syst`me, langage de commandes et interpr`te


e
e
e

Lecture de commandes et utilisation


du chargeur/lanceur

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

3.1

Lalgorithme le plus simple encha une lecture de ligne de commandes,


ne
lanalyse lexicale et syntaxique de ce texte, et linvocation de la procdure de
e
chargement/lancement pour excuter le programme requis par lutilisateur.
e
Lexique
Fin : un boolen ; L : un tableau de caract`res
e
e
NomProg : un tableau de caract`res
e
Param : un tableau de tableaux de caract`res
e
NbParam : un entier 0
Algorithme
Fin faux
rpter jusqu` Fin
e e
a
{ Lecture dune ligne de commande par appel du pilote de clavier. }
L ...
{ Analyse lexicale et syntaxique de la ligne L : fournit NomProg, Param et
NbParam }
si NomProg = Quitter alors
Fin vrai
sinon
{ Passage de param`tres au chargeur/lanceur : les param`tres ` destie
e
a
nation du programme ` lancer dabord, le nom du programme ` lancer
a
a
en dernier. }
i parcourant 1..NbParam : Empiler la cha Param[i]
ne
Empiler la cha NomProg
ne
i parcourant 1..NbParam :
Empiler les adresses des cha
nes prcdentes
e e
empiler NbParam
empiler adresse de NomProg
appel de la procdure charger lancer
e
{ On revient directement l` quand le programme charg a termin. }
a
e
e
dpiler param`tres de charger lancer
e
e
{ Fin de linterpr`te. On retourne dans lappelant du chargeur qui lavait
e
install, cest-`-dire le programme de dmarrage, qui soccupe de terminer
e
a
e
le syst`me proprement. }
e

3.2

Commandes intrins`ques et informations gres


e
e e
par linterpr`te
e

Nous avons dj` vu le traitement particulier du mot Quitter dans lalgoea


rithme de linterpr`te donn ci-dessus. Rien nempche dimaginer de nome
e
e
breux autres mots ainsi interprts directement par le programme interpr`te
ee
e
de commandes, sans que cela se traduise par le chargement en mmoire dun
e
chier excutable disponible dans le SGF.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Programmation de linterpr`te de commandes


e

3.2.1

507

Commandes intrins`ques de linterpr`te de commandes


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Nous reprenons Figure 20.3 lalgorithme dinterprtation des commandes,


e
en illustrant comment sont traites les commandes intrins`ques. Noter la prioe
e
rit de la commande intrins`que sur une commande qui aurait le mme nom,
e
e
e
et qui correspondrait ` un chier excutable eectivement disponible dans le
a
e
SGF.
Toutefois la reconnaissance des noms de commandes intrins`ques se fait
e
sur une galit stricte des cha
e
e
nes de caract`res, et il en gneral possible de
e
e
contourner cette priorit grce aux direntes dsignations dun mme chier
e a
e
e
e
quore un SGF ` structure hirarchique. Par exemple, dans un interpr`te de
a
e
e
commandes typique dunix comme csh, pushd est une commande intrins`que
e
(built-in command en anglais ; taper which pushd dans un interpr`te csh pour
e
voir appara le message pushd : shell built-in command). Si lon crit
tre
e
un programme dont le chier excutable sappelle pushd, dans le rpertoire
e
e
courant, il sut de taper ./pushd pour contourner la dtection des noms de
e
commandes intrins`ques par linterpr`te.
e
e
3.2.2

Caract`res spciaux du langage de commandes


e
e

On dcrit une exprience ` faire dans un syst`me permettant de dsigner


e
e
a
e
e
un ensemble de chiers ` laide dun caract`re spcial.
a
e
e
Dans les interpr`tes de commandes du syst`me unix, *.c reprsente lene
e
e
semble des chiers de suxe .c. La commande ls ache ` lcran la liste des
a e
chiers du rpertoire courant. La commande ls *.c permet alors dacher la
e
liste des chiers de suxe .c. Lorsque lon donne cette commande ` linterpr`te
a
e
du langage de commandes, par qui est trait le caract`re spcial * ?
e
e
e
Une exprience ` raliser pour guider la rexion est la suivante : crire
e
a e
e
e
un programme EcrireParam qui accepte des param`tres sur la ligne de come
mandes et les ache (Figure 20.4). Demander son excution dans un interpr`te
e
e
de commandes, en tapant EcrireParam *.c, et observer lachage.
Si lon observe *.c, cest que le caract`re * nest pas interprt de mani`re
e
ee
e
spcique par linterpr`te de commandes ; si lon observe eectivement la liste
e
e
de tous les noms de chiers termins en .c du rpertoire courant, cest que le
e
e
caract`re * est interprt par linterpr`te de commandes.
e
ee
e
3.2.3

Gestion de rpertoires courants


e

Nous avons dj` vu au chapitre 19 que le syst`me de gestion de chiers


ea
e
peut proposer une notion de rpertoire courant, ainsi que les fonctions qui
e
permettent de le xer et de linterroger. Linformation sur le rpertoire coue
rant est une variable globale du syst`me de gestion de chiers, et les fonce
tions qui la consultent ou la modient sont implantes comme des programmes
e
excutables disponibles dans le SGF. Lorsque lutilisateur tape la commande
e
GetRepCour dans un interpr`te de commandes, le chier excutable correspone
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Dmarrage du syst`me, langage de commandes et interpr`te


e
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

508

Lexique
Fin : un boolen
e
L : un tableau de caract`res
e
NomProg : un tableau de caract`res
e
Param : un tableau de tableaux de caract`res
e
CommandesIntrins`ques : un ensemble de tableaux de caract`res
e
e
{ Les noms des commandes directement traites dans la boucle dine
terprtation, dont Quitter }
e
NbParam : un entier 0
Algorithme
{ Diverses initialisations }
Fin faux
rpter jusqu` Fin
e e
a
{ Lecture dune ligne par appel du pilote de clavier. }
L ...
{ Analyse lexicale et syntaxique de la ligne L : fournit NomProg, Param
et NbParam }
si NomProg CommandesIntrins`ques
e
selon NomProg
NomProg = comm1 : ...
NomProg = comm2 : ...
NomProg = Quitter : Fin vrai
...
sinon
{ Squence dappel du chargeur/lanceur, voir paragraphe 3.1 cie
dessus. }
{ Fin de linterpr`te. }
e
Fig. 20.3 Commandes intrins`ques de linterpr`te de commandes
e
e

void main(int argc, char *argv[])


{
int i ;
for (i=0 ;i<argc ;i++)
printf("Argument no %d : %s ", i, argv[i]) ;
}
Fig. 20.4 Un programme C qui imprime ses param`tres
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Programmation de linterpr`te de commandes


e

509

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

dant est charg en mmoire, excut, rend un rsultat, et ce rsultat est ach
e
e
e e
e
e
e
par linterpr`te de commandes.
e
Il est important de noter que, si le SGF nore pas la notion de rpertoire
e
courant, il est impossible de lintroduire au niveau de linterpr`te de come
mandes. Linformation sur le rpertoire courant devrait tre une variable du
e
e
programme interpr`te, et les fonctions de consultation et modication de cette
e
variable des commandes intrins`ques. La prise en compte dune notion de
e
rpertoire courant devrait tre assure par lalgorithme de linterpr`te, qui dee
e
e
e
vrait prxer systmatiquement les noms de chiers non absolus (ceux qui ne
e
e
commencent pas par un caract`re slash, dans la syntaxe unix) par la cha
e
ne
de caract`res rpertoire courant. Mais linterpr`te de commandes na aucun
e
e
e
moyen de savoir lesquels, parmi les arguments dune commande, sont des noms
de chiers. Seul le programme lanc sait lesquels de ses param`tres sont des
e
e
noms de chiers, et pour ceux-l` il appelle les fonctions dacc`s du SGF, lesa
e
quelles peuvent prxer le nom par le rpertoire courant. La commande cd
e
e
(change directory) des interpr`tes de unix usuels ne peut donc pas tre une
e
e
commande intrins`que : elle fait appel ` la fonction correspondante du SGF.
e
a
En revanche, il est possible de grer, dans linterpr`te de commandes, une
e
e
pile de rpertoires. On introduit alors empiler et dpiler, comme spcis
e
e
e e
au chapitre 4, paragraphe 5.1, sous forme de commandes intrins`ques. Par
e
exemple, dans linterpr`te csh de syst`mes unix, ces commandes sappellent
e
e
pushd et popd. Une telle commande met ` jour la variable pile de linterpr`te
a
e
de commandes, et appelle la fonction SetRepCour du SGF.

3.2.4

Gestion dune liste de chemins dacc`s privilgis


e
e e
aux commandes

Une autre fonction couramment oerte par les interpr`tes de commandes


e
est la gestion dune liste de chemins dacc`s privilgis aux commandes que
e
e e
lutilisateur est susceptible de taper.
Linterpr`te de commandes g`re alors un tableau des prxes possibles pour
e
e
e
la dsignation dun chier et utilise celui-ci dans lordre lors de lacc`s ` un
e
e a
chier.
Lutilisateur dispose de commandes intrins`ques permettant dacher la
e
liste des prxes dans lordre utilis par linterpr`te et de modier cette
e
e
e
liste. En gnral, linterpr`te de commande est initialis avec une liste de
e e
e
e
prxes prdnie. Par exemple dans le syst`me unix, on trouve /usr/bin
e
e e
e
et /usr/local/bin dans la valeur initiale de la variable path, spciant les
e
prxes possibles pour les chiers.
e
Nous donnons Figure 20.5 ci-dessous un complment ` lalgorithme de line
a
terpr`te de commandes du paragraphe 3.1. Nous supposons que le prxe est
e
e
spar du nom du chier par le caract`re slash comme en unix.
e e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Dmarrage du syst`me, langage de commandes et interpr`te


e
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

510

Lexique
...
Prxes : un tableau de tableaux de caract`res
e
e
{ Les prxes possibles pour un nom de chier correspondant ` une
e
a
commande }
NbPrxes : un entier 0
e
ok : un boolen ; j : un entier
e
Algorithme
{ Diverses initialisations dont celle du tableau Prxes et de la variable
e
NbPrxes }
e
...
rpter jusqu` Fin
e e
a
ok faux ; j 1
tant que (non ok) et (j NbPrxes)
e
Empiler les param`tres ` destination du programme ` lancer
e
a
a
Empiler la cha Prxes[j] & / & NomProg
ne e
{ On a empil le nom du programme ` lancer. & est loprateur
e
a
e
de concatnation de cha
e
nes de caract`res }
e
{ Empiler les adresses des cha
nes prcdentes, le nombre de pae e
ram`tres et ladresse du nom du programme ` lancer }
e
a
Appel du chargeur/lanceur
{ Si le chargeur ne trouve pas le chier demand, il rend un code
e
derreur FICHIER NON TROUVE (Cf. Paragraphe 2.1.2). }
si rsultat = FICHIER NON TROUVE
e
alors j j+1 { on va essayer avec un autre prxe }
e
sinon ok vrai { on sort de la boucle }

si (non ok)
alors Ecrire (Commande non trouve)
e
sinon
{ le programme a t excut, dpiler les param`tres du charee
e e e
e
geur/lanceur }
{ Fin de linterpr`te. }
e
Fig. 20.5 Gestion dune liste de chemins dacc`s
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Fonctions volues des interpr`tes de commandes


e
e
e

Fonctions volues des interpr`tes


e
e
e
de commandes

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

4.

511

4.1

Langages de commandes graphiques

Les interpr`tes de commandes ne sont pas ncessairement textuels. Ainsi


e
e
les syst`mes dexploitation qui orent des interfaces graphiques volues proe
e
e
posent un langage de commandes dit icnique : les principales commandes sont
o
reprsentes par des icnes, ou des boutons, sur lesquels il sut de cliquer pour
e
e
o
activer la commande. Dans ce cas il ny a pas de phase danalyse lexicale et
syntaxique des textes taps par lutilisateur.
e
Un exemple typique concerne la manipulation qui permet de dplacer ou
e
copier des chiers dans une interface type windows ou macintosh : en cliquant sur une icne qui reprsente un chier, et en dplaant la souris, on
o
e
e c
dplace ou copie le chier. Dans un langage de commandes textuel, cela core
respond ` une commande du genre : mv nom1 nom2, o` nom1 et nom2 sont des
a
u
noms absolus ou relatifs du syst`me de gestion de chiers.
e

4.2

Structures de contrle
o

Les langages de commandes icniques sont souvent plus faciles ` utiliser


o
a
que les langages textuels, mais moins puissants. En eet, les langages de commandes textuels peuvent tre tendus facilement jusqu` devenir de vritables
e
e
a
e
langages de programmation, par lajout de structures de contrle. Pour raliser
o
e
le mme traitement sur tous les chiers dun rpertoire qui se terminent en
e
e
.fig, on crit une boucle. Dans le langage csh des syst`mes unix, on crit par
e
e
e
exemple :
foreach i (ls)
# pendant lexec. de la boucle, la variable
# tous les fichiers obtenus par la commande
set j=basename $i .fig
# recuperer nom
if ($i == $j) then
# le fichier ne
echo $i " : fichier ignore"
else
echo -n "[fichier " $i "traite ..."
... commandes portant sur le fichier de
echo "]"
endif
end

$i parcourt
ls.
de base, sans extension
se termine pas par .fig

nom $i

On reconna
tra aisment dans le texte de programme ci-dessus des struce
tures de contrle similaires ` celles prsentes au chapitre 4. Les actions de
o
a
e
e
base, en revanche, sont tr`s direntes. Dans un langage de programmation
e
e
ordinaire, on y trouve principalement laectation et les entres/sorties. Ici on
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

512

Dmarrage du syst`me, langage de commandes et interpr`te


e
e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

a aaire ` un langage ddi ` la description de commandes syst`me. Parmi


a
e e a
e
les actions de base du langage de commandes, on trouve donc en particulier
linvocation de tous les programmes syst`me de base (appel du programme ls
e
du SGF dans lexemple ci-dessus).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s
Sixi`me partie
e

Architecture des syst`mes


e
matriels et logiciels complexes
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Copyright 2006 TIMA EDITIONS

Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 21

Motivations pour une plus


grande complexit
e

Les parties I ` V de cet ouvrage prsentent tout ce qui est ncessaire ` la


a
e
e
a
construction dun ordinateur, au sens dni dans lintroduction. La machine
e
simple tudie comprend un organe de calcul (le processeur), de la mmoire et
e
e
e
des priphriques dentre/sortie. Nous lavons dautre part quip du logiciel
e
e
e
e
e
de base minimal ncessaire ` son utilisation : un syst`me de gestion de chiers,
e
a
e
des outils de cration de programmes, un interpr`te de commandes.
e
e
Toutefois les ordinateurs rels sont des syst`mes matriels et logiciels plus
e
e
e
complexes que cela. Lobjet de ce chapitre est de comprendre les motivations qui prsident ` la dnition de syst`mes matriels et logiciels complexes,
e
a
e
e
e
reprsentatifs de la plupart des ordinateurs actuels.
e
Nous commenons par dnir prcisment, paragraphe 1., ce que nous
c
e
e e
appelons par la suite un syst`me complexe. Pour rpondre aux besoins ns
e
e
e
des utilisations complexes envisages, un nouveau mcanisme est dtaill
e
e
e
e
au paragraphe 2. et son application aux besoins des syst`mes complexes
e
est voque paragraphe 3. Le paragraphe 4. donne un plan dtaill de la
e
e
e
e
partie VI de cet ouvrage.

1.

Quappelle-t-on syst`me complexe ?


e

Les syst`mes avec lesquels nous avons lhabitude de travailler sont mule
titches et multi-utilisateurs. Ce sont deux notions tr`s direntes, et quasia
e
e
ment indpendantes lune de lautre, que nous dtaillons ci-dessous. Par ailleurs
e
e
ces syst`mes donnent des droits dirents ` dirents programmes.
e
e
a
e

1.1

Syst`mes multitches
e
a

Considrons une situation courante dutilisation dun ordinateur persone


nel : lutilisateur humain est occup ` taper un courrier, dans une fentre dun
ea
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

516

Motivations pour une plus grande complexit


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

diteur de textes quelconque ; lhorloge ache en permanence sur lcran proe


e
e
gresse rguli`rement ; un transfert de chiers demand par lintermdiaire dun
e
e
e
e
butineur Internet est en cours, etc. Lordinateur considr poss`de un procesee
e
seur, voire 2, mais de toutes faons en nombre largement infrieur au nombre
c
e
dactivits direntes qui semblent se drouler simultanment. Il faut donc
e
e
e
e
bien imaginer que la ressource processeur est partage entre les dirents proe
e
grammes qui supportent les activits de lutilisateur. Pourtant ce partage est
e
quasiment non perceptible par ltre humain : lditeur de textes se comporte
e
e
de mani`re uniforme dans le temps (lcho ` lcran des caract`res taps au clae
e
a e
e
e
vier ne para pas suspendu) ; lhorloge avance rguli`rement et marque lheure
t
e
e
juste, etc. Dautre part lutilisateur clair qui cre de nouveaux programmes
e
e
e
destins ` cet ordinateur na pas ` se proccuper, en gnral, du partage du proe a
a
e
e e
cesseur. Il crit des programmes sans savoir sils seront excuts par un syst`me
e
e e
e
monotche ou multitches. Il nous faut donc maintenant supposer lexistence
a
a
dun mcanisme de gestion de la ressource processeur, capable dintervenir sur
e
le droulement normal dun programme.
e

1.2

Syst`mes multi-utilisateurs
e

Les syst`mes que nous utilisons couramment sont galement multie


e
utilisateurs, cest-`-dire que des personnes direntes peuvent utiliser les resa
e
sources de la machine, simultanment ou squentiellement. Sils lutilisent sie
e
multanment, ce nest quun cas particulier de fonctionnement multitches ; il
e
a
faut toutefois prvoir plusieurs organes priphriques, typiquement plusieurs
e
e
e
couples cran/clavier connects au mme processeur. Cest le cas des ordinae
e
e
teurs serveurs, sur lesquels sont branchs de nombreux terminaux.
e
La spcicit dun fonctionnement multi-utilisateurs tient ` la notion de
e
e
a
proprit qui peut tre attache aux informations persistantes comme les ee
e
e
chiers.
La notion de proprit des donnes conduit ` proposer des mcanismes
ee
e
a
e
de protection, ` dirents niveaux : lacc`s par mot de passe qui permet de
a
e
e
protger les espaces disques, cest-`-dire les donnes persistantes des dirents
e
a
e
e
utilisateurs ; un mcanisme actif pendant les excutions de programmes, de
e
e
mani`re ` viter (ou du moins ` contrler srieusement), les interactions entre
e ae
a
o
e
programmes de dirents utilisateurs.
e

1.3

Hirarchie de droits
e

Un syst`me dexploitation assure un partage de comptences entre ce quon


e
e
appelle les utilisateurs, et les concepteurs de syst`mes dexploitation. On peut
e
tablir une hirarchie, depuis lutilisateur du traitement de texte, qui met lore
e
dinateur sous tension et lance un logiciel, jusquau dveloppeur qui a proe
gramm les pilotes de disques et dimprimante, en passant par celui qui a
e
programm le traitement de textes. La protection, dans ce contexte, consiste
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Scrutation

517

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

a
` introduire des mcanismes qui permettent, entre autres, dinterdire ` lutie
a
lisateur nal de raliser des oprations de tr`s bas niveau sur le disque. Les
e
e
e
acc`s aux entres/sorties sont rservs aux programmes qui ont t conus
e
e
e
e
ee
c
par les dveloppeurs du syst`me dexploitation. Il faut donc un mcanisme
e
e
e
de vrication que tous les acc`s aux entres/sorties, faits apparamment par
e
e
e
lutilisateur nal, se font bien, en ralit, ` travers des programmes dment
e e a
u
certis. Cette vrication se fait pendant lexcution, sans que lutilisateur ne
e
e
e
sen aperoive.
c

2.

Scrutation

En fait tout se ram`ne ` un probl`me de scrutation. De faon intuitive, dans


e a
e
c
un syst`me complexe il va falloir scruter quelques vnements intrieurs ou
e
e e
e
extrieurs, cest-`-dire consulter une information de temps en temps, et prvoir
e
a
e
un branchement ` un traitement adquat si elle a une valeur particuli`re. Cette
a
e
e
information peut tre lie au temps qui passe ou ` une infraction aux droits
e
e
a
dacc`s par exemple. Cela peut permettre de grer les aspects de partage de
e
e
temps, les aspects de protection et de ragir ` des erreurs.
e
a
Observons tous les niveaux o` il est possible dinsrer une action entre
u
e
des instructions pour assurer une rgularit de la scrutation. On trouve
e
e
grossi`rement trois niveaux : les programmes en langage de haut niveau des utie
lisateurs ; les programmes en assembleur produits par compilation ; linterpr`te
e
du langage machine.
On na pas vraiment le choix : la scrutation doit tre eectue le plus bas
e
e
possible.
Il est intressant de raliser la scrutation une seule fois, de ne pas faire
e
e
conance aux divers programmes utilisateurs pour a, et de faire en sorte
c
que les couches de niveau le plus haut soient le plus possible indpendantes
e
de ce mcanisme de scrutation ; en eet le programmeur de haut niveau na
e
parfois mme pas connaissance des vnements ` observer. Il faut donc que la
e
e e
a
scrutation soit prvue dans le processeur, et pour cela il faut intervenir dans
e
lalgorithme dinterprtation des instructions.
e
On sait intgrer la scrutation dans linterpr`te de langage machine sans trop
e
e
le ralentir ce qui nest pas le cas si on lint`gre dans les couches suprieures.
e
e
Le cot en temps de la scrutation est nul ou drisoire en la ralisant au niveau
u
e
e
de linterpr`te de langage machine.
e
Notons que la scrutation matrielle najoute pas dtats au graphe de
e
e
contrle du processeur, seulement des transitions. Par du matriel, un
o
e
e
e
e e
e
c
e
clatement n aire apr`s un tat est ralis de la mme faon quun clatement
e
binaire. Ce nest pas le cas pour les syst`mes programms ou microprogramms.
e
e
e
Le fait de placer la scrutation dans linterpr`te de langage machine permet
e
davoir un certain contrle sur la frquence ` laquelle se fait la scrutation. Au
o
e
a
contraire si on le fait dans les programmes utilisateurs, on ne ma
trise pas bien

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

518

Motivations pour une plus grande complexit


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

le lien avec le temps physique ; on pourrait placer deux scrutations de part et


dautre dune boucle qui se rv`lerait tr`s longue pour certaines donnes.
e e
e
e
Le mcanisme de scrutation est aussi utilis pour la dtection de certaines
e
e
e
erreurs. Supposons par exemple que lon excute une division avec un diviseur
e
nul. Qui se rend compte du probl`me ? Le programmeur peut encadrer toute
e
opration de division de son programme de haut niveau par un test ; il traite les
e
cas derreur comme bon lui semble. Ou bien le compilateur peut produire un
code assembleur qui contient exactement ces tests, et un saut ` une procdure
a
e
de traitement derreur dnie dans le compilateur. Comment linformation sur
e
cette erreur remonte-t-elle au programme, ou au moins ` la personne qui fait
a
excuter le programme ?
e
Lors de lexcution dune division, le processeur vrie que le diviseur nest
e
e
pas nul. Le cas chant, une action particuli`re est dclenche. Les dirents
e e
e
e
e
e
programmeurs peuvent avoir connaissance des rsultats de cette action et proe
grammer un message derreur pour lutilisateur nal.

3.

Mcanisme dinterruption : dnition et


e
e
types dutilisations

3.1

Dnition et utilisations typiques


e

Le mcanisme dinterruption est une mani`re astucieuse de faire cooprer


e
e
e
le matriel et le logiciel en utilisant le mcanisme de scrutation. On ne sait pas
e
e
la mettre en oeuvre avec les lments prsents dans les chapitres prcdents.
ee
e
e
e e
Une interrution est la prise en compte dun vnement qui sest produit
e e
dans le processeur lui-mme ou dans une autre unit matrielle qui lui est
e
e
e
associe.
e
Une interruption peut tre lie ` linstruction en cours dexcution. On
e
e a
e
parle alors dinterruption interne.
Considrons par exemple le mcanisme de changement de fentre de ree
e
e
gistres du sparc (Cf. Chapitre 13). Lors de lexcution dune instruction save
e
pour dcaler la fentre, il faut sassurer que cest encore possible. Dans le cas
e
e
o` il ne reste pas de fentre libre il est ncessaire de raliser la sauvegarde dune
u
e
e
e
fentre dans la pile. Lors de lexcution dun restore il faut ventuellement
e
e
e
raliser la restauration dune fentre depuis la pile. Le schma de codage que
e
e
e
nous avons propos impose de faire, en dbut de procdure un dcalage dans
e
e
e
e
un sens avec test de dbordement et sauvegarde, ` la n un dcalage dans
e
a
e
lautre sens avec test de vide et restauration. En ralit, sur le sparc, on crit
e e
e
seulement save, restore, et le processeur assure les sauvegardes et restaurations de faon transparente pour le programmeur. Cest le mcanisme des
c
e
interruptions qui est mis ` contribution.
a
Il existe des interruptions qui ne sont pas lies ` linstruction en train de
e a
sexcuter sur le processeur. On les appelle interruptions externes.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Mcanisme dinterruption : dnition et types dutilisations


e
e

519

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Par exemple, la prise en compte dune baisse de tension peut permettre


dinterrompre un traitement en cours dexcution pour eectuer une sauvee
garde sur disque dinformations importantes. Cela peut tre ralis de mani`re
e
e e
e
compl`tement transparente pour notre programme, grce au mcanisme des
e
a
e
interruptions. Le programmeur na pas besoin dajouter dans ses programmes
une action de vrication que lalimentation de lordinateur fonctionne correce
tement !
De mme la dtection des dbut et n de traitement dune unit
e
e
e
e
dentres/sorties peut permettre doptimiser lutilisation du priphrique.
e
e
e
On appelle mcanisme dinterruption une scrutation incluse dans le proe
cesseur et permettant de lancer des programmes associs. Ce mcanisme est
e
e
plus ou moins congurable. Par exemple lors de lassemblage dun ensemble
dunits priphriques ` un processeur, on pourra xer les adresses des proe e
e
a
grammes traitant les vnements lis ` ces priphriques. En gnral, il est
e e
e a
e
e
e e
prvu un syst`me de branchement avec indirection, les adresses de branchee
e
ment tant stockes dans une table en mmoire.
e
e
e

3.2

Aspects temporels de lutilisation

On peut distinguer deux types dutilisations du mcanisme dinterruption


e
selon lvolution temporelle des vnements ` grer (Cf. Chapitre 6).
e
e e
a e
Dans le cas o` le rythme des vnements ` prendre en compte est
u
e e
a
compl`tement impos de lextrieur, on peut supposer, par exemple pour grer
e
e
e
e
une montre, que lon reoit un signal toutes les secondes. Le programme bien
c
fait ne doit pas perdre de secondes : il est donc capable de faire la mise ` jour
a
de sa variable interne en moins de temps quune seconde. Si le programme est
mal fait ou la machine pas assez rapide, le fonctionnement sera incorrect.
Dans le cas de gestion dentres/sorties, il sagit dun dialogue entre le
e
processeur et un dispositif situ ` lextrieur. Autrement dit, les signaux `
e a
e
a
scruter sont tels quil ne se passe rien dintressant en dehors des priodes o`
e
e
u
le processeur a demand une action ; dautre part quand il reoit ce quil a
e
c
demand, il rpond en disant quil a bien consomm, et le dispositif extrieur
e
e
e
e
peut se permettre de lui envoyer une nouvelle requte.
e
Signalons une vision particuli`re du syst`me dinterruptions. Lorsquon proe
e
gramme sur une machine dj` dote dun syst`me dexploitation, on voudrait
ea
e
e
pouvoir utiliser les biblioth`ques de programmes de ce syst`me. Pour cela il
e
e
faudrait conna
tre leurs adresses en mmoire. Cest videmment impossible.
e
e
Une liaison statique est donc exclue. Une utilisation du mcanisme dinterrupe
tion, ` travers les appels superviseurs que nous dtaillerons dans le chapitre 24,
a
e
permet quand mme dutiliser ces programmes.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

520

Plan de la suite

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

4.

Motivations pour une plus grande complexit


e

Pour inclure la gestion de mcanisme dinterruptions dans le processeur il


e
faut remettre en cause linterpr`te du langage machine.
e
Dans la suite, nous tudions :
e
le mcanisme dinterruption lui-mme : principe et rsolution des probl`mes
e
e
e
e
que son introduction pose, en particulier les probl`mes de relation de temps
e
entre le processeur et le monde extrieur.
e
la dnition des fonctions et du fonctionnement dun syst`me complexe
e
e
comme dni plus haut, en utilisant ce nouveau mcanisme.
e
e
Dans le chapitre 22 nous prsentons un mcanisme dinterruption simple.
e
e
On tudie la modication de linterpr`te de langage machine, et on prsente
e
e
e
les probl`mes lis. On introduit pour cela une machine simple comportant un
e
e
seul l dinterruption. Cela nous permet de montrer que ce mcanisme dine
terruption permet dj` un partage de temps lmentaire entre un programme
ea
ee
principal et un traitant dinterruption. Nous tudions le cas typique de la pene
dule : le processeur est partag entre deux activits, et les instructions de
e
e
lun et lautre programmes sont entrelaces de mani`re non ma
e
e
trisable par le
programmeur.
La lecture de ce chapitre est susante pour comprendre les aspects darchitecture matrielle lis ` lintroduction du mcanisme dinterruption. La suite
e
e a
e
constitue une introduction aux couches basses des syst`mes dexploitation mule
titches et multi-utilisateurs.
a
Le partage de temps rudimentaire vu au chapitre 22 est limit au cas
e
de deux programmes, dont lun est susamment court. Dans le cas gnral
e e
(par exemple lorsquaucun des programmes ne sarrte !), il faut inventer un
e
mcanisme un peu plus sophistiqu : la notion de processus et le partage de
e
e
temps, gr par le traitant dinterruption. Cest une brique de base importante
ee
pour la construction de syst`mes complexes. Cest lobjet du chapitre 23.
e
Dans le dernier chapitre (24) nous tudions le fonctionnement dtaill
e
e
e
des interruptions et leurs utilisations. Nous compltons le processeur du chae
pitre 22 pour traiter les aspects lis ` la gestion dinterruptions multiples. Nous
e a
voquons les probl`mes de protection entre les diverses activits se droulant
e
e
e
e
dans une machine. Nous montrons enn que le mcanisme des interruptions
e
permet doptimiser la gestion des entres/sorties prsente au chapitre 16.
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 22

Le mcanisme dinterruption
e
Nous allons doter un processeur dun mcanisme capable de scruter le
e
monde extrieur frquemment, rguli`rement et ` des instants bien identie
e
e
e
a
ables. Le choix qui est fait est de scruter entre les instructions. On pourrait
tout aussi bien construire un processeur o` la scrutation aurait lieu toutes
u
les 4 instructions. Ce mcanisme permet de mettre en place un partage du
e
temps entre le programme de lutilisateur et une tche active en fonction
a
e
des rsultats de la scrutation. Ce mcanisme sera enrichi dans les chapitres
e
e
ultrieurs dune scrutation ` des instants particuliers pendant lexcution dune
e
a
e
instruction.
Le processeur dcrit au chapitre 14 ne convient pas. Il tait fait pour mone
e
trer les principes de base de ce quest un processeur. Il tait trop simple pour
e
supporter les extensions dont la scrutation a besoin.
La premi`re tape du travail consiste (paragraphe 1.) ` se doter dun
e e
a
processeur pouvant tre tendu aisment par un mcanisme de scrutae
e
e
e
tion lmentaire (paragraphe 2.). Nous donnons au paragraphe 3. une
ee
utilisation typique de ce mcanisme : la mise ` jour de lheure. De nome
a
breuses autres utilisations existent. Au paragraphe 4., nous voquons les
e
probl`mes lis aux acc`s concurrents ` des informations partages.
e
e
e
a
e

1.

Architecture dun processeur pour


la multiprogrammation

1.1

Partie oprative du processeur


e

La gure 22.1 dcrit lorganisation de la partie oprative du processeur1 .


e
e
Elle est inspire des P.O. types dj` connues. Le processeur dispose de plusieurs
e
ea
registres de N bits (32, typiquement, mais peu importe). Bus adresses et bus
1

Sassurer avant de continuer la lecture de ce chapitre quon ne confond pas la Partie


Contrle (PC) dun processeur et son PC (Program Counter) ou son registre dtat et le
o
e
registre contenant ltat de sa Partie Contrle.
e
o

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

522

Le mcanisme dinterruption
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

BusA
Regdo,T,..

Rinst,
REtat

PC,SP,..

Oprateur
e

BusB
BusC

Bus Adresses

Bus Donnes
e

Vers la P.C.

TA

Fig. 22.1 Partie oprative schmatique du processeur. Les commandes apparaissent en


e
e
gris, mais leurs noms ne sont pas donns.
e
e

donnes vers la mmoire font aussi N bits. Les adresses de mots sont des
e
e
multiples de 4. Les registres sont identis par un numro ou un nom. Les
e
e
noms sont principalement une facilit mnmotechnique. Les instructions ont
e
e
3 oprandes au plus. Comme sur le sparc le registre de numro 0 contient
e
e
la constante 0. Les registres apparaissent sur la gure comme Regdo. SP vaut
pour Stack Pointer ; il est utilis comme pointeur de pile. PC vaut pour Program
e
Counter ; cest le compteur programme. Le programmeur peut les manipuler
par des instructions spciales.
e
Le processeur comporte un registre dtat REtat dont le contenu est accese
sible en permanence par la partie contrle.
o
Tous les registres, y compris le registre dtat, peuvent tre transmis via
e
e
les bus A et B vers loprateur. La sortie de loprateur peut tre transmise
e
e
e
dans nimporte quel registre via un bus C. Loprateur est dot de toutes les
e
e
oprations ncessaires : extraction des p bits de poids faible, gnration de
e
e
e e
constantes, fabrication des bits dtat Z, N, C, V, etc.
e
Des commutateurs entre le bus donnes bidirectionnel vers la mmoire et
e
e
les bus B et C permettent les communications dans les deux sens : mmoire
e
vers registres et registres vers mmoire.
e
Certains registres ne sont pas directement accessibles par le programmeur
dans les instructions : un registre particulier, connu sous le nom de Registre
Instruction Rinst, dont le contenu est accessible en permanence dans la partie
contrle du processeur ; un registre tampon gnral T sert dintermdiaire de
o
e e
e
stockage de valeurs temporaires ; un registre TA sert de Tampon dAdresse,
son contenu est transmis sur le bus adresses.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Architecture dun processeur pour la multiprogrammation

1.2

523

Rpertoire dinstructions
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Les instructions du langage machine sont codes sur un ou deux mots


e
mmoire. Nous les dcrivons et montrons quel langage dassemblage poure
e
rait tre le correspondant de ce langage machine. Le processeur dispose des
e
instructions :
Chargement du contenu dun mot mmoire dans un registre et rangement
e
du contenu dun registre dans un mot mmoire :
e
Pour ces deux instructions ladresse mmoire est obtenue en ajoue
tant le contenu dun registre et une constante contenue dans le
deuxi`me mot de linstruction. On peut imaginer si besoin des vae
riantes prcisant la taille de loprande et la faon de complter les
e
e
c
e
oprandes courts. Syntaxiquement, en langage dassemblage, cela donne :
e
ld [no regA, constante], no regB,
st no regB, [no regA, constante]
e
o` no reg est un numro de registre.
u
Quand le registre ` ajouter ` la constante est le rea
a
gistre 0, il serait naturel dadmettre aussi la syntaxe :
ld [constante], no regB,
st no regB, [Constante].
Il est, par ailleurs possible de doter le langage dassemblage dune pseudoinstruction set pour installer une constante dans un registre ; cest particuli`rement utile quand cette valeur est donne par lintermdiaire dune
e
e
e
tiquette qui reprsente une adresse.
e
e
Oprations en tout genre entre deux registres, ou entre un registre et une
e
constante et rangement du rsultat dans un troisi`me registre :
e
e
La constante est dans le deuxi`me mot de linstruction. Ces instruce
tions ne positionnent pas les bits Z, N, C, V du registre mot dtat
e
REtat. Comme dans le sparc, il existe des variantes des instructions
qui positionnent les indicateurs arithmtiques. Ces oprations avec le
e
e
registre 0 comme destinataire positionnent seulement le mot dtat.
e
Syntaxiquement, en langage dassemblage, cela donne par exemple :
add no reg source1, no reg source2, no reg dest,
sub no reg source1, constante , no reg dest,
addcc no reg source1, no reg source2, no reg dest.
Instructions de saut : jmp ou jsr destinataire
Le deuxi`me mot des instructions de saut est ajout au contenu dun
e
e
registre pour obtenir ladresse de saut. Pour jsr, il y a empilement de
ladresse de retour. Syntaxiquement, en langage dassemblage, cela donne :
jmp no reg, constante. On pourrait crire : jmp constante au lieu de
e
jmp r0, constante.
Retour de sous-programme : rts, correspondant au jsr.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

524

Le mcanisme dinterruption
e

reset

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

PC = 0
PC = PC+4

TA = PC

Inst 2 mots

RInst = M[TA]

Inst 1 mot

op reg

PC = PC+4

rts

op cst

T = M[TA]

SP = SP + 4

PC = M[TA]

M[TA] = regb

M[TA] = PC
jmp,brV

ld

regb = M[TA]

brF

jsr
TA,SP = SP-4

reg = (T ou reg)*reg TA = T + rega


st

TA = SP

TA = PC

PC = T+(reg ou PC)

Fig. 22.2 Graphe de contrle du processeur, premi`re version. Certains rectangles como
e
portent 2 lignes distinctes, correspondant ` deux tats successifs, donc ` deux
a
e
a
microactions conscutives. Les deux tats seraient spars par une transition
e
e
e e
portant sur le prdicat toujours vrai.
e

Branchement conditionnel : br destinataire


Les conditions portent sur des combinaisons de bits du mot dtat REtat.
e
Ladresse eective de destination est obtenue en ajoutant le deuxi`me mot
e
de linstruction et le compteur programme. La condition est donne dans
e
un champ de linstruction. Syntaxiquement, en langage dassemblage, cela
donne : br cond constante
Dautres instructions seront ajoutes dans les versions ultrieures de cette
e
e
machine.

On peut rcapituler ces instructions dans un tableau :


e
taille
1 mot
1 mot
2 mots
2 mots
2 mots
2 mots
2 mots

instruction
ret. de ss-prog.
arithmtique
e
arithmtique
e
acc`s mm. LD
e
e
acc`s mm. ST
e
e
saut
branchement

options
+ cc
+ cc

champ1

champ2

champ3

regs1
regs1
rega
rega

regs2
Const.
Const.
Const.
Const.
Const.

regd
regd
regb
regb
rega

sauv ad. retour


cond.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Introduction dun mcanisme de scrutation lmentaire


e
ee

1.3

525

Interprtation des instructions


e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Le graphe de contrle spciant le comportement de la partie contrle de ce


o
e
o
processeur est donn gure 22.2 ; les instructions codes sur 1 mot ncessitent
e
e
e
un acc`s mmoire et les instructions codes sur 2 mots en demandent deux. Un
e e
e
certain nombre de dtails napparaissent pas comme les oprations eectivee
e
ment ralises par loprateur (gures par une * dans le graphe de contrle).
e e
e
e
o
De mme nous ne prcisons pas la faon dont est eectivement faite la mise
e
e
c
a
` jour du compteur programme PC par T+reg ou T+PC, que nous notons :
PC = T+(reg ou PC), le mode dadressage et la condition de branchement
(brV reprsente tous les branchements o` la condition est value ` vrai, et
e
u
e
e a
brF les branchements o` la condition est fausse). Ce sont l` deux exemples de
u
a
paramtrisation.
e

2.

Introduction dun mcanisme de scrutation


e
lmentaire
ee

Comprendre le mcanisme de scrutation ncessite un double point de vue :


e
e
une vision interne, ce qui se passe ` lintrieur du processeur, et une vision
a
e
externe, ce que le programmeur peut programmer et observer.
Du point de vue externe, le mcanisme de scrutation se comporte comme
e
un appel de sous-programme mais dclench par un changement dtat sur un
e
e
e
l plutt quen raison de lexcution dune instruction.
o
e
On introduit dans le processeur ce mcanisme de scrutation du monde
e
extrieur. Un l dentre du processeur IRQ (pour Interrupt ReQuest) est en
e
e
entre de la partie contrle. Ce l provient directement du monde extrieur.
e
o
e
Cela appara sur la gure 22.4. Un sous-programme, nomm conventionnellet
e
ment traitant, est rang en mmoire. Il se termine ncessairement par une
e
e
e
instruction nouvelle : rti. Comme on le verra dans le graphe de contrle de la
o
gure 22.3 le droulement de linstruction rti ressemble ` celui de linstruction
e
a
rts. Nous les direncierons plus tard.
e
Lensemble ainsi constitu, un processeur dot de nouvelles fonctionnalits
e
e
e
et un nouveau type de programmes, constitue ce que lon appelle un syst`me
e
dinterruptions.

2.1

Le mcanisme de base, vision interne


e

Comme prcdemment, la partie contrle du processeur peut calculer un


e e
o
nouvel tat en fonction du code opration contenu dans Rinst, de ltat du
e
e
e
processeur contenu dans REtat et de ltat courant de la partie contrle. De
e
o
plus la partie contrle a acc`s au bit IRQ et peut calculer son nouvel tat en
o
e
e
fonction de la valeur de ce bit.
Le l IRQ est pris en compte entre deux instructions, cest-`-dire juste apr`s
a
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

526

Le mcanisme dinterruption
e

=
=
=
=
=

SP-4
PC
44
M[TA]
M[TA]

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

basculement
de dpart
e
TA,SP
M[TA]
TA
TA
PC

reset

PC = 0

PC = PC+4 TA = PC
RInst = M[TA]

Inst 1 mot
rts, rti
TA = SP SP = SP+4
PC = M[TA]

Inst 2 mots

op

autres

non IRQ

reg = (T ou reg) * reg

IRQ

non IRQ

...

...

IRQ

Fig. 22.3 Implantation du mcanisme de base dans le graphe de contrle du processeur.


e
o

la derni`re microaction dune instruction. Sur le graphe de contrle (Cf. Fie


o
gure 22.3), tout dernier tat dune instruction a donc deux successeurs. Pour
e
un des successeurs cela revient ` changer dinstruction, comme prcdemment,
a
e e
pour lautre cela revient ` mettre en route une squence dtats particuli`re : le
a
e
e
e
basculement de dpart. On trouve parfois le terme de changement de contexte.
e
Si IRQ vaut 0, le processeur passe normalement ` linstruction suivante de
a
linstruction qui vient de nir. La suivante peut tre celle crite ` la suite ou,
e
e
a
si la derni`re instruction est un branchement, cest linstruction qui se trouve
e
a
` ladresse de saut. Dans les deux cas, au moment de la prise en compte de
IRQ, ladresse de cette instruction suivante est dans le compteur programme
PC.
Si IRQ vaut 1, la squence de basculement de dpart a lieu : ladresse
e
e
de linstruction suivante prsente dans PC est sauvegarde, dans la pile, ` la
e
e
a
faon dun jsr. Puis la nouvelle adresse, celle de dbut du sous-programme
c
e
traitant, est force dans le compteur programme. Il y a ainsi basculement du
e
programme normal au programme traitant. Cette adresse nest pas fournie
par une instruction comme dans le cas du jsr. Elle est force par le processeur
e
lui-mme en interne. Cela peut tre une constante. Ou, comme nous le choisise
e
sons ici, une valeur range en mmoire ` une adresse pr-tablie constante (Ici,
e
e
a
ee
44 ; dans les vraies machines une valeur choisie telle quelle tombe au dbut
e
ou ` la n de la mmoire). Notons que lacc`s au sous-programme traitant
a
e
e
est ralis via une double indirection. Cela permet denvisager une extension
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Introduction dun mcanisme de scrutation lmentaire


e
ee

527

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

a
` plusieurs traitants dont les adresses de dbut seraient stockes ` partir de
e
e a
ladresse 6000.
On discutera, sous le nom de vectorisation du choix de cette technique au paragraphe 1.5 du chapitre 24. Lexercice E22.1 permet de discuter aussi ce point.

Lexcution du rti consiste ici ` dpiler ladresse de retour comme le rts.


e
a e
Il y a alors basculement du programme traitant au programme normal.

2.2

Le mcanisme de base, vision externe


e

Suivons sur un exemple ce que voit le programmeur lors de loccurrence


dune interruption. La situation est reprsente par la gure 22.4. Supposons
e
e
que les direntes parties de programme reprsentes ne comportent pas de
e
e
e
saut hors de ces parties (vers les zones reprsentes en gris).
e
e
e
La mmoire comporte un programme aux adresses 1000 ` 2000. La pile est
e
a
place aux adresses de 4000 ` 5000, o` il doit, naturellement, y avoir de la
e
a
u
mmoire vive. Quand la pile est vide, SP contient 5000. Le sous-programme
e
traitant commence ` ladresse 3000. Il se termine par une instruction rti,
a
a
` ladresse 3500 sur le schma. La valeur 3000 est range ` ladresse 6000. La
e
e a
valeur 6000 est range ` ladresse 44.
e a
On peut observer un historique des valeurs successives du compteur programme et du pointeur de pile sur la gure 22.5.

2.3

Commentaires

Le droulement envisag prcdemment soul`ve plusieurs questions, notame


e e e
e
ment de vocabulaire. Nous allons les envisager.
1. Quel est le nom de ce mcanisme ? Mcanisme dinterruption. On dit que
e
e
le programme en cours dexcution a t interrompu. Le sous-programme
e
ee
traitant sappelle un traitant dinterruption.
2. Le dpart vers le sous-programme traitant est provoqu par un
e
e
vnement matriel (le niveau 1 sur le l IRQ), le retour de souse e
e
programme est provoqu par un vnement logiciel (lexcution de linse
e e
e
truction rti). Cette dissymtrie est-elle normale ? Oui. Cest l` toute
e
a
lastuce de ce mcanisme. On parle de basculement de dpart et de base
e
culement de retour. On dit souvent dpart en interruption, retour dine
terruption.
3. Le basculement de retour fait temporellement partie du traitant, mais
pas le basculement de dpart. Cest une convention plutt quautre chose.
e
o
Le basculement de dpart nest ni dans le programme interrompu ni dans
e
le traitant. Il est temporellement entre les deux.
4. Que se passe-t-il si il ny a pas dinstruction rti dans traitant ? Rien
de spcial. Le processeur continue dexcuter des instructions. Il ny aura
e
e
jamais de retour au programme interrompu. Il sagit videmment dune
e
erreur analogue ` labsence dun rts en n dun sous-programme.
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

528

Le mcanisme dinterruption
e

adresses

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Rinst,REtat

Adresses

PO

Donnes

PC

IRQ

Calcul
tat
suivant

Calcul des
commandes

E
t
a
t

Const : 44

1000
2000
3000

6000

Prog1

TRAITANT

3500
4000
5000

Pile

6000

Clock, Reset

rti

3000

L/E

Processeur

Mmoire

Fig. 22.4 Le processeur, ses liens avec lextrieur et le contenu de la mmoire.


e
e

TRAITANT

basculements

dpart
e

Prog1

retour

IRQ
PC

1200

1204

1212

SP

4800

4800

4800

M[4800]

3000 3004 ... 3500


(rti)
4796 4796
4796
1216 1216

1216

1216

1224

4800

4800

1216

1216

temps

Fig. 22.5 Diagrammes dvolution des valeurs de PC et SP. Une tranche de temps vere
ticale pleine correspond ` lexcution dune instruction. La tranche verticale
a
e
vide correspond au basculement de dpart. Les basculements de dpart et de
e
e
retour sont mis en vidence. Arbitrairement certaines instructions sont sur 1
e
mot, dautres sur 2.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Introduction dun mcanisme de scrutation lmentaire


e
ee

529

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

5. Combien de temps dure le basculement de dpart ? Il ny a pas de r`gle


e
e
absolue. Sur notre exemple il dure 5 tats, cest-`-dire un temps du mme
e
a
e
ordre que lexcution dune instruction.
e
6. Pourquoi ny a-t-il pas une adresse de dbut du traitant fournie lors
e
du basculement de dpart ? Parce que ce dpart nest provoqu que par
e
e
e
le changement dtat dun l. Un l ne peut pas coder une adresse. On
e
pourrait imaginer plusieurs ls codant cette adresse, mais do` viendraitu
elle ? On pourrait imaginer que ladresse est quelque part dans le programme . . .mais ce nest pas possible car linterruption arrive ` linsu du
a
programme.
7. Ne pourrait-on avoir un mcanisme analogue pour un deuxi`me l IRQ
e
e
ou pour un vnement imprvu interne au processeur ? La rponse est oui
e e
e
e
et ltude en est faite au chapitre 24. Il y aura aussi une instruction dont
e
le droulement provoque le basculement de dpart. De mme on verra
e
e
e
que la prsence dune instruction invalide peut provoquer un basculement
e
de dpart.
e
8. reset est-il une interruption ? Un signal reset fait repartir le processeur
dans son tat initial. Il interrompt bien lexcution. Il y a une sorte de
e
e
basculement de dpart (PC remis ` 0) mais pas de basculement de retour
e
a
correspondant.
Normalement sur un ordinateur, le reset provient soit dun petit montage
lectronique qui envoie une impulsion ` la mise sous tension, soit dun
e
a
bouton ` la disposition de lutilisateur.
a
9. Que se passe-t-il si une requte survient juste entre une instruction qui
e
modie les indicateurs Z, N, C et V et une instruction de branchement
qui les exploite, alors que le sous-programme traitant peut modier les
valeurs de ces indicateurs ? Cest une grosse faute dans la programmation
du traitant. Au retour du traitant, le branchement conditionnel se fait
sur la base de valeurs des indicateurs qui ne sont pas les bonnes.

Plus gnralement, traitant est comme tout sous-programme, il peut moe e


dier les valeurs contenues dans les registres, le contexte dappel. Il convient
alors de sauvegarder et de restaurer ce contexte mme si le terme dappel
e
est incorrect ici. On na pas prcis exactement les registres concerns par
e e
e
les instructions de chargement/rangement des registres. Si cest possible, une
solution pour se prmunir contre le probl`me est que le sous-programme traie
e
tant commence par sauvegarder le mot dtat et se termine en restaurant ce
e
registre. REtat fait en eet partie du contexte du programme interrompu.
On notera que certains processeurs orent cette sauvegarde/restauration
du mot dtat dans le basculement de dpart et dans lexcution du rti sans
e
e
e
besoin dinstructions dempilement/dpilement du mot dtat. Cest le choix
e
e
que nous ferons dans la version plus compl`te (Cf. Figure 22.6).
e
Le choix est dirent selon les processeurs. Le sparc ne sauvegarde pas
e
le mot dtat, il faut le programmer dans le sous-programme traitant, le
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

530

Le mcanisme dinterruption
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

6502 ne sauvegarde que le compteur programme et le registre dtat, le 6809


e
sauvegarde tous les registres lors du basculement. Quel que soit le choix, le
basculement de retour a videmment laction symtrique adquate. Cela moe
e
e
die la dure des basculements. Le programmeur de traitants dinterruption
e
doit tre vigilant au choix fait sur sa machine.
e

2.4

Probl`mes de synchronisation entre le processeur et


e
le monde extrieur
e

Comme dans toute communication, il faut se proccuper de synchronisae


tion. Le monde extrieur, qui met les requtes dinterruption, est le ma de
e
e
e
tre
lchange. Le processeur na qu` suivre le rythme sil peut. Sil ne peut pas,
e
a
tant pis. Lextrieur ne vrie pas. Ce cas peut prsenter deux symptmes :
e
e
e
o
1. Le l IRQ est ` 1 apr`s lexcution de la premi`re instruction du sousa
e
e
e
programme traitant. Le processeur empile ` nouveau une adresse de
a
retour et reforce ladresse de dbut de traitant dans le PC. Ce nest
e
peut-tre pas ce que lon cherche. Dans le paragraphe suivant, on mone
trera comment viter cela.
e
On notera deux raisons possibles pour que IRQ soit encore ` 1 : soit il
a
est rest ` 1, soit il est pass ` 0 pendant un instant puis remont ` 1.
ea
ea
ea
2. Le l IRQ est ` 0 apr`s la premi`re instruction de traitant mais repasse
a
e
e
a
` 1 pendant lexcution de traitant. Le processeur interrompt le traie
tement en cours. Il y a donc deux occurrences direntes de traitant
e
en cours dexcution, comme pour un appel de sous-programme rcursif.
e
e
Ce nest en gnral pas souhait.
e e
e

Le monde extrieur et le processeur se synchronisent par un protocole sime


pli de poigne de mains. Le processeur naccepte de nouvelle requte que
e
e
e
lorsquil a termin de traiter la prcdente. Pour une vraie poigne de mains,
e
e e
e
il reste ` lextrieur ` nmettre une requte que si la prcdente a t traite.
a
e
a e
e
e e
ee
e
Cest lobjet du paragraphe suivant.

2.5

Solutions aux probl`mes de synchronisation


e

Les dirents probl`mes de synchronisation voqus sont traits par lintroe


e
e
e
e
duction dun bit, conventionnellement nomm I, comme Inhib, contenu dans
e
e
le mot dtat.
e
Les direntes modications pour traiter la synchronisation apparaissent
e
dans le nouveau graphe de contrle gure 22.6.
o
Quand I est ` vrai, le processeur ne prend pas en compte les requtes
a
e
dinterruption. On dit que les interruptions sont masques. Quand I est `
e
a
faux, le processeur consid`re les requtes.
e
e
Au moment du basculement de dpart en interruption, le mot dtat et
e
e
ladresse de retour sont sauvs dans la pile puis le bit I est mis ` vrai. Pene
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Un exemple dtaill dutilisation : mise ` jour de la pendule


e
e
a

531

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

dant toute lexcution de traitant, le bit I reste ` vrai et aucune demande


e
a
dinterruption ne sera prise en compte : en sortie dun tat ope ltat suivant
e
e
est forcment ltat dacquisition du code opration comme on le voit sur la
e
e
e
gure 22.6.
Au moment du basculement de retour, lancienne valeur de I est restaure
e
grce ` la restauration du mot dtat. Cest ce qui guide le choix que nous
a a
e
avons fait de sauver le registre dtat par sauvegarde automatique.
e
Avec cette solution, lextrieur peut mettre des requtes ` tout moment,
e
e
e
a
cest le processeur qui reste ma de lchange.
tre
e
Deux instructions supplmentaires sont ajoutes : clri et seti pour
e
e
CLeaRI et SetI. Elles permettent de mettre I ` vrai ou ` faux. Cela pera
a
met au programmeur dautoriser la prise en compte dinterruptions pendant
lexcution de traitant ou, ` linverse, de rendre certaines portions de code
e
a
ininterruptibles. La ncessit de ces instructions appara dans le paragraphe 4.
e
e
t
Par ailleurs, pour pouvoir mettre au point les programmes traitant, dont
la terminaison est ncessairement un rti, il est tr`s commode de pouvoir
e
e
dclencher le basculement de dpart par une instruction. Nous ajoutons cette
e
e
instruction nomme ici swi (pour SoftWare Interrupt). Cette instruction sera
e
aussi utilise pour forcer volontairement une interruption dans les chapitres
e
ultrieurs.
e

3.

Un exemple dtaill dutilisation : mise `


e
e
a
jour de la pendule

Nous prsentons ici une utilisation typique du syst`me dinterruptions.


e
e
Nous choisissons la fonction de gestion de lheure courante. Dans un premier
temps cette fonction est prsente sans faire appel au mcanisme dinterrupe
e
e
tions (ce qui nest pas raliste), puis ce mcanisme est introduit.
e
e

3.1

Ralisation de la pendule sans interruption


e

On suppose lordinateur dot dun oscillateur gnrant un signal priodique,


e
e e
e
qui dlivre une impulsion toutes les secondes. On ne connait pas trop pour le
e
moment la dure de cette impulsion. On verra plus tard (Cf. Paragraphe 3.3).
e
On veut raliser une pendule logicielle, qui maintient lheure courante dans
e
trois variables globales du syst`me : heures, minutes et secondes. Ces vae
riables sont utilises par beaucoup de fonctions du syst`me dexploitation :
e
e
envoi de courriers, datation des chiers, . . .
Cette pendule logicielle est un programme qui incrmente lheure courante
e
toutes les secondes. On utilise pour cela une procdure qui fait avancer la
e
reprsentation de lheure dune seconde. On donne gure 22.7 le programme
e
en langage dassemblage. On se resservira de cette procdure. Naturellement
e
elle pourrait tre crite dans un langage de haut niveau.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Le mcanisme dinterruption
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

532

TA,SP
M[TA]
TA,SP
M[TA]
REtat[I]
TA
TA
PC

=
=
=
=
=
=
=
=

SP-4
PC
SP-4
REtat
Vrai
44
M[TA]
M[TA]

basculement
de dpart
e

reset

PC = 0

PC = PC+4

swi

TA = PC

RInst = M[TA]

rti

rts

TA = SP

clri

SP = SP+4

seti

REtat[I] = Faux

REtat = M[TA]

autres instructions

REtat[I] = Vrai

ope

TA = SP

non IRQ ou I

SP = SP+4

PC = M[TA]

IRQ et non I

non IRQ ou I

IRQ et non I

Fig. 22.6 Graphe de contrle avec tout le traitement du mcanisme dinterruption. Les
o
e
instructions non lies aux interruptions ne gurent plus.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

3. Un exemple dtaill dutilisation : mise ` jour de la pendule


e
e
a

.data
secondes :long 0
.
minutes :.long 0
heures : .long 0
.text
plus1sec :* utilise R4 comme
/
ld [secondes], R4
add R4, 1, R4
st R4, [secondes]
subcc R4, 60, R0
blu retour
st R0, [secondes]
ld [minutes], R4
add R4, 1, R4
st R4, [minutes]
subcc R4, 60, R0
blu retour
st R0, [minutes]
ld [heures], R4
add R4, 1, R4
st R4, [heures]
subcc R4, 24, R0
blu retour
st R0, [heures]
retour : rts

533

registre de travail */
/* ou [R0 + secondes] */
/* secondes = secondes +1 */
/* si sec < 60 : termin */
e
/* secondes = 0 */

/* minutes = minutes +1 */
/* si min < 60 : termin */
e
/* minutes = 0 */

/* heures = heures +1 */
/* si heures < 24 : termin */
e
/* heures = 0 */

Fig. 22.7 Procdure dincrmentation de 1 seconde


e
e

while (1)
{
/* attendre une impulsion sur le signal */
while (signal == 0) ; /* boucle vide ; sortie si signal = 1 */
while (signal == 1) ; /* boucle vide ; sortie si signal = 0 */
/* il y a bien eu une impulsion. */
plus1sec () ;
}
Fig. 22.8 Programme pendule

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

534

Le mcanisme dinterruption
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Le squelette du programme pendule, sans utilisation du mcanisme dine


terruption, pourrait tre celui de la gure 22.8 o` signal est le nom dune
e
u
variable correspondant au signal priodique qui peut tre lu par le processeur.
e
e
A lvidence ce programme principal utilise toutes les ressources dun ordie
nateur, mais peu ecacement ! Naturellement il nest pas question que lordinateur scrute en permanence le circuit gnrateur dimpulsion et ne fasse rien
e e
dautre.

3.2

Introduction du mcanisme dinterruption


e

La pendule que nous cherchons ` raliser est une utilisation typique


a e
dun syst`me dinterruption. Le signal IRQ est directement limpulsion. Le
e
mcanisme dinterruption permet dincrmenter lheure ` linsu de lutilisae
e
a
teur. Les programmes de lutilisateur sexcutent presque normalement, ils
e
sont interrompus une fois par seconde, les variables heures, minutes et secondes sont mises ` jour et le programme interrompu reprend son excution.
a
e
Le programme traitant est approximativement le sous-programme plus1sec
donn gure 22.7.
e
Supposons par exemple que nous voulions valuer la dure dun calcul dans
e
e
un programme en C. La tche, donne gure 22.9, consiste tout simplement `
a
e
a
lire lheure courante en n de calcul et ` retrancher lheure de dbut du calcul.
a
e
Sans mcanisme dinterruption, lunique processeur de lordinateur peut
e
excuter un seul programme, le calcul ou la pendule, mais pas les deux ` la
e
a
fois. La mesure devient possible en utilisant le signal priodique comme signal
e
dinterruption et en excutant lincrmentation de lheure dans le corps du
e
e
traitant dinterruption.
Le traitant dinterruption donn gure 22.10 se rsume ` un appel ` la
e
e
a
a
procdure dincrmentation, encadr par un prologue et un pilogue de sauvee
e
e
e
garde dans la pile et de restauration des registres utiliss par la procdure. Au
e
e
lieu dappeler la procdure plus1sec, comme on le fait ici, il serait possible de
e
simplement crire ses instructions dans traitant.
e
Le chronogramme de la gure 22.11 illustre le droulement dun calcul
e
durant un peu plus de deux secondes. A linstant initial i prcdant le calcul,
e e
la lecture de lheure courante donne lheure de dbut de calcul (3 :59 :57).
e
Larrive du signal IRQ provoque un dpart en interruption aux instants d1 , d2
e
e
et d3 et suspend lexcution du calcul le temps dincrmenter lheure courante.
e
e
Lors des retours dinterruption aux instants r1 , r2 et r3 le calcul reprend `
a
la nouvelle heure courante. Apr`s lecture de lheure courante en n de calcul
e
a
` linstant f (4 :00 :00), la soustraction de lheure de dbut donne la dure
e
e
dexcution, soit 3 secondes.
e
Le lecteur sourcilleux aura not que le temps mesur pour le calcul comporte
e
e
en fait aussi le temps de mise ` jour de lheure par les direntes excutions
a
e
e
de traitant. Il en concluera, ` juste titre, que la mesure du temps dexcution
a
e
dun programme est une tche dlicate. On doit tre conscient de lordre de
a
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

535

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

3. Un exemple dtaill dutilisation : mise ` jour de la pendule


e
e
a

SecondesDbut= secondes ;
e
MinutesDbut = minutes ;
e
HeuresDbut = heures ;
e
CALCUL ; /* Le calcul proprement dit */
SecondesFin = secondes ;
MinutesFin
= minutes ;
HeuresFin
= heures ;
Dure
e
= SecondesFin - SecondesDbut
e
+ 60 * (MinutesFin MinutesDbut) ;
e
+ 3600 * (HeuresFin HeuresDbut) ;
e
Fig. 22.9 Mesure dun temps de calcul

traitant :
Prologue :add sp, -4, sp
st R4, [sp]
/*empiler Reg de travail*/
Appel :
/* utilise le Reg de travail R4 */
jsr plus1sec
Epilogue ld [sp] , R4
add sp, +4, sp
/*dpiler Reg de travail*/
e
rti
Fig. 22.10 Traitant dinterruption de mise ` lheure
a

heure

3 :59 :57

3 :59 :58

3 :59 :59

4 :00 :00

traitant
calcul
IRQ

i d1

r1

d2

r2

d3

r3

Fig. 22.11 Chronogramme dexcution de la pendule fonctionnant par interruption


e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

536

Le mcanisme dinterruption
e

traitant

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

calcul

IRQ

Fig. 22.12 La frquence des interruptions dpasse la capacit de traitement du procese


e
e
seur : les impulsions hachures ne sont pas prises en compte.
e

grandeur du temps de la mesure par rapport au temps du calcul.

3.3

Hypoth`ses temporelles ncessaires


e
e
au bon fonctionnement

Il pourrait tre intressant de disposer dune pendule dune prcision


e
e
e
suprieure. Le principe de ralisation peut tre conserv : il sut daugmenter
e
e
e
e
la frquence du signal dinterruption et de grer une variable supplmentaire
e
e
e
donnant les fractions de secondes. Nous pourrions ainsi imaginer la ralisation
e
par logiciel dune pendule indiquant les millisecondes voire les microsecondes.
Toutefois la vitesse de calcul du processeur est constante et la frquence du
e
gnrateur dimpulsions ne peut pas tre augmente ainsi indniment. Plus
e e
e
e
e
nous voulons augmenter la prcision de la pendule, plus sa gestion consomme de
e
temps de calcul et ralentit lexcution du calcul dont il faut mesurer la dure.
e
e
Ce que lon mesure devient de plus en plus imprcis. Il y a plus grave : la
e
modication inconsidre des caractristiques des impulsions par rapport aux
ee
e
possibilits du processeur peut conduire hors dun fonctionnement normal.
e
Le syst`me prsent a des limites et nous allons examiner quelques-unes de
e
e
e
ces situations.

3.3.1

Les impulsions ne doivent pas tre trop frquentes


e
e

Les interruptions ne doivent pas survenir avec une priode infrieure au


e
e
temps dexcution du traitant plus celui des deux basculements dpart et ree
e
tour. Dans le cas contraire, videmment, des requtes niraient par ne pas tre
e
e
e
satisfaites.
Cette contrainte temporelle re`te simplement le fait que, ` la frquence
e
a
e
dinterruption maximale la modication priodique de lheure courante
e
consomme la totalit du temps du processeur et ne peut plus tre acclre.
e
e
ee e
Si la frquence est trop leve, certaines impulsions sont ignores (voir chroe
e e
e
nogramme 22.12).

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Un exemple dtaill dutilisation : mise ` jour de la pendule


e
e
a

537

traitant

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

calcul
IRQ

Fig. 22.13 Limpulsion du signal dinterruption, trop longue, est comptabilise 4 fois.
e

3.3.2

Les impulsions ne doivent pas tre trop longues


e

La dure des impulsions ne doit pas excder le temps dexcution du traie


e
e
tant. Au moment du dpart en interruption, laction du signal IRQ est neue
tralise par la mise ` 1 du bit I du registre dtat (voir chronogramme 22.13).
e
a
e
Mais, ` la n du traitant, linstruction de retour rti rtablit lancienne vaa
e
leur du registre dtat avec I ` 0. Si le signal IRQ est encore ` 1, il dclenche
e
a
a
e
a
` nouveau un dpart en interruption. La mme impulsion est comptabilise
e
e
e
plusieurs fois.
Parmi les rem`des envisageables, on peut construire un oscillateur matriel
e
e
dlivrant un signal de forme adquate. Loscillateur peut galement tre muni
e
e
e
e
dune entre de remise ` 0 de IRQ, active par une instruction du traitant ou
e
a
e
par un signal dacquittement mis par le processeur au moment du dpart en
e
e
interruption. On retrouve alors une solution base sur un protocole de dialogue
e
en poigne de mains (Cf. Chapitre 6).
e
Une solution purement matrielle serait de calibrer la dure de limpulsion
e
e
en insrant un dtecteur de front (Cf. Chapitre 9) cadenc par un sous-multiple
e
e
e
de lhorloge du processeur.

3.3.3

Les impulsions ne doivent pas tre trop courtes


e

A contrario (voir chronogramme 22.14), le processeur peut ignorer une


impulsion trop courte. En eet, le processeur ne teste IRQ quau moment
o` il sapprte ` lire une nouvelle instruction. Linstruction la plus longue
u
e a
a e
` excuter dnit la dure minimale des impulsions pour garantir leur prise
e
e
en compte. Dans notre exemple il sagit de jsr qui sexcute en sept cycles
e
(Cf. Figure 22.2). rti dure un cycle de plus que jsr, mais larrive dune ime
pulsion pendant lexcution de rti poserait dj` un probl`me de priode du
e
ea
e
e
signal IRQ infrieure ` la dure du traitant.
e
a
e
L` aussi la solution consiste ` exiger que lmetteur dinterruption maina
a
e
tienne sa requte tant quelle na pas t prise en considration. Cela revient,
e
ee
e
encore, ` une poigne de mains.
a
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Le mcanisme dinterruption
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

IRQ

538

instr

add

add

jsr

test

test

test

t
test

Fig. 22.14 Limpulsion dune dure de 4 cycles dhorloge du processeur est prise en
e
compte si linstruction en cours est add et ignore parce que trop courte
e
dans le cas de jsr. Sur cette gure, le dpart en interruption entre les deux
e
instructions add nest pas reprsent.
e
e

3.4

De linterruption priodique au
e
partage de temps gnralis
e e
e

La pendule est un exemple de partage de temps entre direntes activits


e
e
concurrentes. Observ ` une chelle de temps macroscopique, notre ordinateur
ea
e
semble excuter deux programmes en mme temps : le calcul et la mise ` jour
e
e
a
de lheure.
La pendule met en oeuvre une forme tr`s rudimentaire de partage de temps :
e
il ny a que deux activits concurrentes et lun des programmes est une boucle
e
sans n. Dans le chapitre 23, nous verrons comment tendre le mcanisme
e
e
de partage de temps ` un nombre quelconque dactivits concurrentes (les
a
e
processus) et ` des programmes ordinaires (non limits ` des boucles sans n).
a
e a

4.

Notion de concurrence et datomicit des


e
oprations
e

La pendule est un premier exemple de partage de temps du processeur


entre deux programmes concurrents qui entrent en comptition pour son utilie
sation : le programme de calcul et le sous-programme de mise ` jour de lheure
a
courante.
Le partage de variables entre programmes concurrents pose un probl`me
e
datomicit des oprations sur ces variables, qui peut se traduire par des valeurs
e
e
incohrentes de ces variables.
e
Soit une opration de consultation ou de modication dun ensemble de
e
variables eectue par un programme. Latomicit de lopration signie que
e
e
e
tout autre programme concurrent ne peut accder aux variables qu` des inse
a
tants tels que lopration est soit ralise enti`rement, soit pas commence du
e
e e
e
e
tout.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Notion de concurrence et datomicit des oprations


e
e

03

minutes

59

secondes

04

59

00

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

heures

539

00

traitant
calcul
IRQ

s = 59

m=0 h=4

Fig. 22.15 Probl`mes datomicit : linterruption arrive apr`s que le programme a lu


e
e
e
les secondes et avant quil lise les minutes. Lheure lue est 4 :00 :59 au lieu
de 3 :59 :59 ou 4 :00 :00.

Supposons que lon ralise un transfert de 1000 francs dun compte bane
caire X crdit de 10000 francs vers un compte bancaire Y crdit de 2000
e e
e e
francs. Le transfert consiste ` dbiter X de 1000 francs puis ` crditer Y de
a e
a e
la mme somme. De ltat initial (10000,2000), le couple (X,Y ) passe par un
e
e
tat transitoire (9000,2000) pour atteindre ltat nal (9000,3000).
e
e
On dit que lopration de transfert est atomique, si un programme
e
sexcutant en concurrence avec celui qui ralise le transfert peut observer
e
e
(X,Y ) dans ltat initial ou dans ltat nal, mais pas dans ltat transitoire
e
e
e
(9000,2000).
Dans notre exemple de la pendule, le programme de calcul peut lire une
heure errone. Supposons quune interruption arrive ` 3h 59mn 59s o` le proe
a
u
gramme termine son calcul et lit lheure courante pour en calculer la dure
e
(gure 22.15).
Le scnario suivant montre que la lecture de lheure courante nest pas
e
atomique et peut rendre une valeur errone.
e
Le programme de calcul lit les secondes (Instruction SecondesFin =
secondes) et trouve 59. Linterruption est prise en compte juste apr`s et fait
e
passer lheure courante ` 4 :00 :00. Au retour dinterruption, le programme
a
interrompu poursuit sa consultation de lheure courante et lit les minutes (00)
et les heures (4). Lheure obtenue par le programmme nest ni 3 :59 :59, ni
4 :00 :00, mais 4 :00 :59. Cest une erreur. Le mme genre de probl`me peut
e
e
tre mis en vidence avec deux mises ` jour concurrentes. Sur un ordinateur
e
e
a
simple ` un seul processeur, le rem`de consiste ` suspendre la prise en compte
a
e
a
des interruptions pendant lacc`s aux variables partages pour le rendre atoe
e
mique. Cest la principale utilit des instructions clri et seti que nous avons
e
dcrites au paragraphe 2.5.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

540

Exercices

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

5.

Le mcanisme dinterruption
e

E22.1 : Choix de ladresse de dbut du traitant


e
Dans le basculement de dpart appara une double indirection pour lobtention
e
t
de ladresse de dbut du traitant. Typiquement de la mmoire morte correse
e
pondrait ` ladresse 44, et de la mmoire vive ` ladresse 6000. Lutilisateur
a
e
a
peut ainsi crire ` ladresse 6000 ladresse de son choix (ici 3000) o` commence
e
a
u
le traitant.
Que faut-il modier dans le graphe de contrle si lon suppose quun traitant
o
dbute ncessairement ` ladresse 36848 ? Cela ore-t-il la mme souplesse
e
e
a
e
demploi ? Comment pourrait-on modier la machine pour que le traitement
du IRQ soit (doublement) indirectement rfrenc par ladresse 44 et celui du
ee
e
swi par ladresse 48 au lieu de ltre tous les deux par 44 (Cf. Figure 22.6) ?
e
E22.2 : Et en vrai ?
Se procurer dans les biblioth`ques et librairies (papier ou lectroniques) les
e
e
modes demploi dtaills de processeurs simples. Etudier leur syst`me dintere
e
e
ruptions. Prolonger avec des processeurs complexes. Prolonger sur des ordinateurs.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 23

Partage de temps et processus


Dans le chapitre 22, nous avons dvelopp un exemple simple de partage
e
e
de temps du processeur entre une tche de fond ralisant un calcul et un travail
a
e
priodique de mise ` lheure de la pendule.
e
a
Dans ce chapitre, nous montrons que le mcanisme dinterruption permet de
e
raliser un partage de temps entre plusieurs travaux, dont les nombre, nature
e
et dure sont quelconques.
e
A chaque excution de programme correspond une entit dynamique. Le
e
e
nom consacr par la littrature pour dsigner cette entit est processus, mais
e
e
e
e
on peut aussi trouver dautres termes tels que tche ou activit .
a
e
Lors de lexcution dun programme le syst`me doit maintenir un certain
e
e
nombre dinformations (adresse de chargement, chiers ouverts, etc.). Par souci
de prcision, dans ce chapitre, la notion de processus est implicitement associe
e
e
a
` la gestion interne des structures de donnes du syst`me dexploitation et
e
e
activit renvoie au contraire ` une vision externe du comportement du syst`me
e
a
e
et de lavancement des programmes excuts. Cette distinction permet de lever
e e
les ambigu es sur la dnition des instants auxquels le processeur passe dun
t
e
programme ` lautre.
a
Le paragraphe 1. prsente le mcanisme de partage du temps du proe
e
cesseur entre plusieurs activits. Le paragraphe 2. prcise les structures
e
e
de donnes associes ` chaque processus. Le paragraphe 3. dtaille le
e
e a
e
mcanisme de commutation dun processus ` un autre. La cration dun
e
a
e
processus et sa terminaison font lobjet du paragraphe 4.

1.

Principe et dnitions
e

Les syst`mes dits multitches sont capables dexcuter plusieurs proe


a
e
grammes a la fois. Ils sont tr`s utiles et permettent ` plusieurs utilisateurs
`
e
a
de travailler en mme temps sur un ordinateur. Ils autorisent galement un
e
e
utilisateur ` faire plusieurs choses ` la fois, par exemple diter un chier pena
a
e
dant la compilation dun autre chier et lire en mme temps lheure ache
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

542

Partage de temps et processus

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

par un troisi`me programme. Nous restons toutefois ici dans le contexte des
e
machines ` un seul processeur.
a
Un programme est une entit statique compose dinstructions dcrivant
e
e
e
une suite doprations ` raliser pour aboutir au rsultat recherch. A chaque
e
a e
e
e
excution dun programme correspond une activit et un processus associ dans
e
e
e
les tables du syst`me dexploitation, crs lors du lancement du programme et
e
ee
dtruits quand lexcution du programme se termine.
e
e
Il ne faut pas confondre programme avec processus ou activit. Si un utilie
sateur lance une compilation et une dition, il y a deux activits et le syst`me
e
e
e
dexploitation cre deux processus excutant deux programmes dirents (le
e
e
e
compilateur et lditeur). A deux compilations simultanes correspondent deux
e
e
processus distincts partageant le mme chier excutable mais des donnes
e
e
e
direntes.
e
Les ordinateurs capables dexcuter rellement plusieurs instructions dans
e
e
plusieurs processeurs sont des machines ` architecture dite parall`le, dotes
a
e
e
dautant de processeurs que de calculs simultans. On trouve dans le commerce
e
de telles machines, puissantes mais onreuses, inadaptes pour un utilisateur
e
e
qui na pas besoin dune grande puissance de calcul mais qui ne veut pas tre
e
bloqu durant une compilation.
e
Les syst`mes dexploitation multitches ont t conus pour ce genre dutie
a
ee
c
lisation. Ils g`rent un partage de temps du processeur et donnent aux utilisae
teurs limpression de disposer dautant de processeurs (virtuels) que de travaux
a
` mener de front. Les contraintes matrielles sur lordinateur se rsument ese
e
sentiellement ` une taille de mmoire susante pour contenir lensemble des
a
e
programmes ` excuter et ` lexistence dun mcanisme dinterruption.
a e
a
e
La prsentation du mcanisme de partage de temps dans ce paragraphe et
e
e
les paragraphes 2. et 3. suppose que les programmes ont dj` t lancs et que
eaee
e
les processus prexistent.
e

1.1

Mcanique dentrelacement par interruption


e
priodique
e

Lhorloge de lordinateur gn`re un signal dinterruption priodique. On


e e
e
prendra garde ` ne pas confondre lhorloge de lordinateur, de priode de lordre
a
e
de quelques millisecondes, avec celle du processeur de priode de lordre de
e
quelques nanosecondes. Le traitant de cette interruption ralise le partage du
e
temps entre plusieurs activits. Le chronogramme de la gure 23.1 illustre ce
e
partage entre trois activits a1, a2 et a3 (et leurs processus associs p1, p2
e
e
et p3), lection tant la partie du traitant qui eectue le choix de la nouvelle
e
e
activit.
e
Lobservation du syst`me dbute alors que le processeur est attribu ` lace
e
ea
tivit a1. Lexcution de a1 est suspendue par le premier dpart en interruption
e
e
e
(instant di1 ) et sera reprise au retour de la troisi`me interruption (instant ri3 ).
e
Au retour de la premi`re interruption (instant ri1 ), le processeur reprend
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Principe et dnitions
e

543

lection
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

a3
a2
a1

IRQ

di1 ri1

di2 ri2

di3 ri3

di4 ri4

di5 ri5

t
di6

Fig. 23.1 Multiplexage du processeur entre trois activits


e

lexcution de lactivit a2. Cette derni`re est ` son tour suspendue par le
e
e
e
a
deuxi`me dpart en interruption (di2 ) et sera reprise lors du quatri`me retour
e
e
e
dinterruption (ri4 ).
Lintervalle de temps entre les deuxi`me et troisi`me interruptions est utilis
e
e
e
par a3, dont lexcution sera reprise puis suspendue ` nouveau aux instants
e
a
respectifs ri5 et di6 .
Le mme scnario se reproduit toutes les trois interruptions et le processeur
e
e
travaille ` tour de rle pour la premi`re activit, la deuxi`me, et ainsi de suite
a
o
e
e
e
jusqu` la derni`re, apr`s quoi le processeur est raect ` la premi`re activit
a
e
e
e
ea
e
e
et cette squence se reproduit ` lidentique dans un nouveau cycle.
e
a
Le processus associ ` lactivit en cours dexcution est le processus actif
ea
e
e
ou lu. Les autres processus sont dits prts (sous entendu ` poursuivre leur
e
e
a
excution lorsque le processeur leur sera attribu de nouveau). Dans le parae
e
graphe 3. du chapitre 24 nous verrons que les processus peuvent aussi se bloquer
en attente dvnements tels que des ns dentres/sorties par exemple.
e e
e
On parle de commutation dactivit, ou de commutation de processus, pour
e
dsigner le passage dune activit, et videmment dun processus, ` une autre.
e
e
e
a
La gure 23.2 en dtaille le droulement. Cette commutation est dclenche
e
e
e
e
par une interruption. Le traitant est alors appel traitant de commutation.
e
Lors du retour dinterruption, une activit doit retrouver la machine dans
e
ltat o` elle la laisse lors de sa suspension. Ltat de la machine est saue
u
e
e
vegard dans des structures de donnes que nous tudions en dtail au parae
e
e
e
graphe 2..
La premi`re tape de la commutation (s) est reprsente en traits ns sur
e e
e
e
les gures 23.1 et 23.2. Elle sauvegarde le contexte (essentiellement le contenu
des registres du processeur) de lactivit suspendue (a2) dans les structures de
e
donnes du processus actif (p2).
e
Le mcanisme de dpart en interruption intgr au processeur sauvegarde
e
e
e e
automatiquement certains registres. La sauvegarde des autres registres est explicitement programme dans le prologue du traitant de commutation.
e
Le droulement de linterruption se termine par une squence symtrique de
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

544

Partage de temps et processus

ordonnanceur

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s
activit a3
e
RTI
activit a2
e
processus
actif

RTI

p2

nant
e

p3

lection processus actif


e
excution traitant
e

IRQ

di2

de2

fe2

ri2

Fig. 23.2 Dtail de la commutation entre les activits a2 et a3


e
e

restauration (r) du contexte du (nouveau) processus actif (p3) depuis les structures de donnes convenables. Une partie de cette squence est programme
e
e
e
dans lpilogue du traitant, et lautre ralise automatiquement par linstruce
e e
tion rti. On a videmment symtrie par rapport au dpart.
e
e
e
Le syst`me dexploitation comporte des procdures charges dlire un noue
e
e
e
veau processus actif. Ces procdures constituent lordonnanceur. Le corps du
e
traitant appelle les procdures de lordonnanceur.
e
Lexcution des programmes des utilisateurs, lactivit, cesse d`s le dpart
e
e
e
e
en interruption et ne reprend quau retour dinterruption. Mais on notera que
du point de vue de la gestion des structures de donnes du syst`me, la come
e
mutation eective de processus a lieu entre la n de la sauvegarde et le dbut
e
de la restauration, qui utilisent les structures de donnes de lancien (p2) et
e
du nouveau (p3) processus actifs.
Lordonnanceur nest pas une activit comme une autre. Il ne rsulte pas
e
e
du lancement dune commande et le syst`me ne maintient pas de structures
e
de donnes pour lui ; ainsi, lordonnanceur nest pas un processus.
e
On note une dirence par rapport ` lexcution dun rti normal : ici lactie
a
e
vit reprise nest pas ncessairement celle qui a t interrompue lors du dpart
e
e
ee
e
en interruption. Lordonnanceur peut choisir et installer une autre activit.
e

1.2

Notion de politique dordonnancement

La stratgie de rpartition du temps du processeur aux dirents procese


e
e
sus est appele ordonnancement (scheduling en anglais) des processus. Deux
e
aspects sont ` considrer : lorigine de la dcision deectuer une commutation
a
e
e
et, une fois cette dcision prise, lalgorithme dlection du nouveau processus.
e
e
Lorigine de la commutation peut se faire avec ou sans rquisition.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Principe et dnitions
e

545

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Il existe des politiques dordonnancement sans rquisition : le processus


e
actif dcide lui-mme de linstant auquel il lib`re le processeur et appelle exe
e
e
plicitement la squence dinstructions qui ralise la commutation. De telles
e
e
politiques autorisent malheureusement lcriture (volontaire ou non) de proe
grammes monopolisant le processeur.
Au contraire, dans les politiques avec rquisition du processeur, les come
mutations sont forces par interruption du processus actif. Dans le paragraphe
e
prcdent, nous avons dcrit une allocation avec rquisition par tranches de
e e
e
e
temps (cadence par un signal dinterruption priodique).
e
e
Lordonnanceur attribue ` tour de rle un quantum de temps aux processus
a
o
pour quils acc`dent au processeur.
e
Lalgorithme dlection illustr par la gure 23.1 est tr`s simple : les proe
e
e
cessus acc`dent ` tour de rle au processeur selon un ordre premier arriv,
e
a
o
e
premier servi. Cette mthode simple dordonnancement est connue sous le
e
nom dallocation en tourniquet.
Il existe des stratgies dallocation plus labores que le tourniquet, grant
e
e
e
e
des priorits entre les processus, ces priorits pouvant tre statiques ou voluer
e
e
e
e
dynamiquement en fonction du comportement du processus.
Dans ce chapitre, nous nous en tiendrons ` lallocation en tourniquet par
a
tranche de temps. Dans cette politique simple dordonnancement, le seul param`tre de rglage est la dure dune tranche de temps. Son choix rsulte dun
e
e
e
e
compromis. La rduction de quantum tend ` amliorer la capacit de raction
e
a
e
e
e
du syst`me et son aptitude ` supporter de nombreux travaux interactifs alors
e
a
que la minimisation du cot de gestion du partage pousse au contraire ` rduire
u
a e
autant que possible la frquence des commutations.
e
Un choix judicieux de dure de tranche de temps donnera aux utilisateurs
e
qui ne peuvent observer le syst`me qu` une chelle de temps macroscopique
e
a
e
lillusion dune excution simultane des processus.
e
e
Considrons ` titre dexemple un syst`me multitches et des utilisateurs
e
a
e
a
en train dditer des chiers et une tranche de temps de deux millisecondes.
e
Supposons que le travail de mise ` jour de lachage apr`s la frappe dun
a
e
caract`re ne dure pas plus dune tranche de temps. En supposant une vitesse
e
maximale de saisie de dix caract`res par seconde, le syst`me pourrait supporter
e
e
cinquante ditions simultanes avec un temps de rponse maximal dun dixi`me
e
e
e
e
de seconde et donner ` chaque utilisateur lillusion quil ne travaille que pour
a
lui. Les programmes de calcul intensifs sexcuteront videment moins vite,
e
e
mais ceci nest pas trop gnant dans la mesure o` les utilisateurs peuvent faire
e
u
autre chose pendant les calculs de longue dure.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

546

Structures de donnes associes aux


e
e
processus

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

2.

Partage de temps et processus

Nous supposons dans ce paragraphe que le dpart en interruption sauve


e
tous les registres du processeur dans la pile, except le registre pointeur de
e
pile. De nombreux processeurs ne sauvegardent automatiquement que quelques
registres. Il en va ainsi pour le processeur du chapitre 22, qui nempile que
le registre dtat et le compteur programme. On peut cependant toujours se
e
ramener ` lquivalent dune sauvegarde de lensemble des registres ordinaires
a e
lors du dpart en interruption en insrant une action spciale au dbut du
e
e
e
e
prologue et ` la n de lpilogue de traitant, procdure qui compl`te la
a
e
e
e
sauvegarde automatique eectue par le processeur (Cf. Exercice E23.1).
e

2.1

Besoin de zones propres ` chaque processus


a

La possibilit dentrelacer les excutions de plusieurs programmes prsents


e
e
e
simultanment en mmoire nest pas une exclusivit des syst`mes dexploitae
e
e
e
tion multitches.
a
Le syst`me simple monotche dcrit dans la partie V ore une telle possibie
a
e
lit : nous avons vu au chapitre 20 que linterpr`te de commande lit une ligne
e
e
de commande, dclenche le chargement-lancement du programme excutable
e
e
spci, attend la n de son excution et lit une nouvelle ligne de commande.
e e
e
Il y a ainsi entrelacement entre lexcution de linterpr`te et celui de la come
e
mande lance. Mais lentrelacement respecte une proprit dernier lanc, pree
ee
e
mier termin qui permet de grer lallocation de mmoire et les excutions de
e
e
e
e
programmes comme des appels de procdures. Cette gestion repose sur une
e
pile globale du syst`me partage par lensemble des programmes.
e
e
Cette organisation nest pas applicable aux syst`mes multitches qui ene
a
trelacent autant dexcutions de programmes que de processus indpendants,
e
e
selon des politiques dordonnancement plus ou moins labores. Ces excutions
e
e
e
sont logiquement indpendantes les unes des autres et ninterf`rent entre elles
e
e
que dans la mesure o` elles entrent en comptition pour lutilisation du temps
u
e
du processeur. Il nexiste par exemple aucun lien entre les appels et retours de
procdure respectifs de processus distincts. Cest pourquoi les processus sont
e
dotes de piles prives.
e
e
Lexcution des programmes ne doit pas tre modie, mais seulement rae
e
e
lentie, par le partage de temps et le support dexcution initialement fourni
e
par le syst`me simple monotche doit tre reproduit dans le cadre de chacun
e
a
e
des processus. La prservation du comportement des programmes excuts
e
e e
implique en particulier que chaque processus dispose de ses propres zones
de mmoire texte, donnes et pile prives auxquelles les autres processus ne
e
e
e
doivent normalement pas accder.
e
Il faut de plus que la valeur des registres observe par le programme ne
e
soit pas modie par les diverses suspensions dexcution. Chaque processus
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Structures de donnes associes aux processus


e
e

547

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

est dot ` cet eet dune zone de mmoire prive destine ` la sauvegarde et
ea
e
e
e a
a
` la restauration du contenu des registres, y compris le pointeur de pile SP
(dans le prologue et lpilogue du traitant de commutation).
e
Enn il est ncessaire que la suspension nait pas dincidence directe sur les
e
entres et sorties eectues par le processus suspendu. Il sut pour cela de doe
e
ter les processus de tables de chiers ouverts individuelles et de terminaux de
dialogue distincts. Les syst`mes multi-utilisateurs sont videment dots daue
e
e
tant dcrans-claviers que de personnes utilisant simultanment la machine.
e
e
Mais lorsque les processus sont lancs par le mme individu depuis le mme
e
e
e
cran-clavier, lcran peut tre divis en fentres qui constituent autant de
e
e
e
e
e
terminaux virtuels.
Quand un processus est actif, les registres du processeur (Rtat, PC, SP,
e
registres donnes) contiennent des valeurs ` jour. Quand le processus est inace
a
tif, les informations pertinentes sont en mmoire dans la zone de sauvegarde
e
du processus.
On peut ainsi assimiler un processus ` une machine virtuelle excutant
a
e
un programme, dont la mmoire est consitue des zones texte, donnes
e
e
e
et pile alloues au processus, et dont le processeur est reprsent par la
e
e
e
zone de sauvegarde des registres en mmoire.
e

2.2

2.2.1

Organisation eective des zones mmoire de chaque


e
processus
Structure de donnes en mmoire
e
e

Une partie de la mmoire est occupe par les instructions et les variables
e
e
globales du syst`me dexploitation : elle contient entre autres lamorce de
e
dmarrage, les pilotes de priphriques, le syst`me de gestion de chiers, lore
e
e
e
donnanceur et les traitants.
La gure 23.3 dcrit les structures de donnes en mmoire reprsentant les
e
e
e
e
processus. Le syst`me dexploitation g`re une table proc dont la taille dnit un
e
e
e
nombre maximal de processus. Chaque entre de cette table est une structure,
e
nomme descripteur (de taille TPROC) qui dcrit un processus. Les processus
e
e
peuvent tre identis par leur numro dentre, ou pid (process identier),
e
e
e
e
dans cette table.
Dans la mthode du tourniquet, les processus dont lexcution est suspene
e
due sont cha es dans une le des (processus) prts. Deux variables globales
n
e
du syst`me mmorisent les pid respectifs du premier et du dernier procese
e
sus de cette le (tte-prts et queue-prts). Le pid du processus lu (en cours
e
e
e
e
dexcution) est stock dans la variable globale actif.
e
e
Le reste de la mmoire utilise est structur en autant dexemplaires de
e
e
e
zones texte, donnes et pile que de processus.
e
Le champ suivant du descripteur permet de lier les processus prts entre
e
eux dans la le des prts. Le champ tat du descripteur dcrit le statut du
e
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

548

Partage de temps et processus

suivant

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

proc

0
1

table des

PID

tat
e

proc[PID]

T dbut
e
T n

TPROC

processus

n-1

D dbut
e

donnes
e

D n

P dbut
e

actif
tte-prts
e
e
queue-prts
e

texte

P n

pile
sregs

ssp

Fig. 23.3 Reprsentation dun processus en mmoire : ` gauche les variables globales
e
e
a
du syst`me dont la table des processus, au centre le dtail dun descripteur
e
e
de processus et ` droite les zones de mmoires aectes ` un processus
a
e
e a
(texte, donnes et pile du processus). La portion de zone pile dj` utilise
e
ea
e
est reprsente en gris plus fonc.
e
e
e

processus : actif, prt ou inexistant (pour les entres de la table encore inoce
e
cupes). Le descripteur contient aussi les adresses de dbut et de n des zones
e
e
texte (T), donnes (D) et pile (P) alloues au processus. Le champ ssp contient
e
e
une copie du registre pointeur de pile SP.
2.2.2

Echanges entre les registres et les structures de donnes du


e
processus

Quand le processus est actif, les valeurs ` jour sont dans les registres du
a
processeur. De plus, il existe en mmoire une zone de sauvegarde des registres
e
dont le contenu nest signicatif que si le processus nest pas actif. Cette zone
comporte deux parties physiquement spares.
e e
Une premi`re partie occupe le sommet de la zone de pile du processus.
e
On la note sregs. Elle est destine aux registres ordinaires dont le contenu est
e
empil lors du dpart en interruption.
e
e
Une autre partie se rduit ` la copie du registre pointeur de pile SP qui nest
e
a
pas sauvegard au moment du basculement de dpart en interruption. Elle est
e
e
dans le champ ssp du descripteur du processus dans la table des processus.
Ce champ ssp contient ladresse de la zone sregs. Cette information est sauvegarde par le prologue du traitant de commutation, et, symtriquement,
e
e
restaure par lpilogue.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Organisation du traitant de commutation

Organisation du traitant de commutation

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

3.

549

Le traitant de commutation consiste principalement en llection dun noue


veau processus. Il contient de plus un prologue et un pilogue pour assurer la
e
prservation des valeurs convenables du pointeur de pile.
e
Une partie du traitant de commutation droule ainsi lalgorithme dlection
e
e
et manipule les tables de processus en mmoire. Lalgorithme peut tre plus
e
e
ou moins complexe selon la politique dordonnancement adopte. Par ailleurs,
e
une mme stratgie dordonnancement est susceptible dtre utilise sur des
e
e
e
e
machines direntes. Cette partie du traitant est ralise sous la forme de
e
e e
procdures ordinaires crites dans un langage de programmation (par exemple
e
e
C) portable dune machine ` lautre, et compiles.
a
e
Lautre partie du traitant, qui g`re la mcanique de sauvegarde et de rese
e
tauration et lappel des fonctions de lordonnanceur, est ncessairement crite
e
e
en langage dassemblage. Sa programmation ncessite en eet lacc`s ` des rese
e a
sources autres que la mmoire (registres du processeur, notamment SP, mase
quage et dmasquage des interruptions, retour dinterruption) que les langages
e
de programmation volus ne permettent pas de manipuler.
e
e

3.1

Election dun processus

La premi`re partie de la commutation (procdure actifversprt) remet le


e
e
e
processus actif suspendu dans lensemble des processus prts. La seconde partie
e
(procdure prtversactif) slectionne un des processus prts et en fait le nouveau
e
e
e
e
processus actif.
actifverspr^t () {
e
proc[actif].tat = PRET;
e
ajouter_pr^ts (actif);
e

pr^tversactif () {
e
actif = retirer_pr^ts ();
e
proc[actif].tat = ACTIF; }
e

Dans lalgorithme du tourniquet, lajout et le retrait portent respectivement


sur la queue et la tte de la le des prts.
e
e
ajouter_pr^ts(pid p) {
e
proc[p].suivant = NULL;
if (t^te_pr^ts == NULL)
e
e
t^te_pr^ts = queue_pr^ts = p;
e
e
e
else { proc[queue_pr^ts].suivant = p;
e
queue_pr^ts = p;} }
e
pid retirer_pr^t () {
e
pid lu;
e
e
lu = t^te_pr^ts;
e
e
tete_pr^ts = proc[tete_pr^ts].suivant;
e
e
return (lu);
e
}

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

550

Commutation de processus : une mise ` jour de


a
structures de donnes
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

3.2

Partage de temps et processus

La gestion du registre SP par le traitant a pour but de berner le processeur.


Au basculement de dpart, SP est celui de lactivit interrompue (soit A1,
e
e
associe au processus p1). Les registres sont empils dans la pile du processus
e
e
p1. Le traitant installe une nouvelle activit (soit A2) et modie SP : la
e
pile est alors celle du traitant. On a dj` vu que le traitant nest pas un
ea
processus. Au basculement de retour, rti, ce nest pas lancienne activit A1
e
qui sera relance, mais une nouvelle (soit A3, associe au processus p3). Les
e
e
registres, en particulier le compteur programme, seront dpils depuis la pile
e e
du processus p3.
On arrive ainsi ` passer alternativement parmi plusieurs activits alors que
a
e
le syst`me dinterruptions nest prvu que pour commuter entre une activit
e
e
e
et un traitant.
Si le processus actif est suspendu et rlu dans la foule (cest en particulier
ee
e
le cas sil est le seul processus dans le syst`me), le traitant de commutation se
e
comporte comme un traitant dinterruption ordinaire : le processeur est rtabli
e
dans son tat davant linterruption et le programme interrompu reprend nore
malement son excution.
e
Dans le cas contraire, la restauration du registre SP le fera pointer sur
la pile dun autre processus et au retour du traitant le processeur reprendra lexcution de cet autre processus (suspendu lors dune interruption
e
prcdente).
e e
Lors de la programmation du traitant on doit grer deux probl`mes :
e
e
le passage dune pile ` une autre permettant ` chaque processus de retroua
a
ver, lorsquil redevient actif, les registres du processeur dans ltat o` ils
e
u
taient lorsque ce processus a t interrompu.
e
ee
la sauvegarde des adresses de retour et ventuellement de param`tres dans
e
e
une pile, si lon programme le traitant en ralisant des appels de procdures
e
e
(Cf. Chapitres 12 et 13).
Dans la suite nous prsentons la ralisation du traitant en deux versions.
e
e
Une premi`re version donne un squelette du traitant ralis sans aucun ape
e e
pel de procdure. Lobjectif est de mettre uniquement laccent sur la gestion
e
des piles du processus interrompu et du processus relanc. La deuxi`me vere
e
sion, correspondant mieux ` ce qui est fait dans un syst`me dexploitation,
a
e
est donne compl`tement et utilise des appels de procdure pour chacune des
e
e
e
parties du traitant.
Dans les deux versions, et dans chacune ` plusieurs endroits, on retrouve
a
des structures de donnes et un calcul identique : proc est ladresse de la table
e
des processus, actif est ladresse du mot mmoire contenant le pid du processus
e
actif, TPROC est une constante donnant la taille du descripteur dun processus
et deltassp est le dplacement du champ ssp du descripteur.
e
Les programmes sont crits en assembleur du processeur dcrit dans le chae
e
pitre 22. Le registre R0 contient la constante 0 et na pas besoin de sauvegarde.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Organisation du traitant de commutation

551

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Le fragment de code suivant range dans le registre R1 ladresse du descripteur du processus actif :
set actif, R1
ld [R1], R1
mul R1, TPROC, R1
set proc, R2
add R1, R2, R1
Ce fragment de code sera remplac par lexpression : INITdesc (R1, actif).
e
3.2.1

Version sans appel de procdures


e

La version prsente dans la gure 23.4 est purement pdagogique.


e
e
e
Rappelons le choix fait concernant les interruptions : tous les registres ordinaires sont sauvegards dans la pile et sont bien videmment restaurs lors
e
e
e
du retour (rti).
Pour xer les ides nous appelons Pprec le processus interrompu et Pnouv
e
le processus relanc. La gure 23.5 dcrit les piles en mmoire, les registres du
e
e
e
processeur et les descripteurs des processus Pprec et Pnouv avant lexcution
e
de linstruction rti.
Les registres ordinaires sont dabord empils par le processeur dans la pile
e
de Pprec. Les registres ainsi sauvegards re`tent ltat du processeur lors de
e
e
e
linterruption. Puis SP est sauvegard dans le champ ssp du descripteur de
e
Pprec. Puis un processus est lu, soit Pnouv, et la liste des processus prts est
e
e
mise ` jour, ainsi que la variable actif. Apr`s lpilogue, SP rep`re le sommet de
a
e e
e
pile du processus Pnouv qui avait t interrompu prcdemment. Au sommet
ee
e e
de la pile de Pnouv se trouvent les registres du processeur avec leur valeur au
moment o` Pnouv avait t interrompu.
u
ee
3.2.2

Version avec appel de procdures


e

La solution prcdente ne donne pas totalement satisfaction : llection du


e e
e
processus et les parties prologue et pilogue sont, en gnral, ralises par des
e
e e
e e
appels de procdures, avec ventuellement des param`tres. Ces mcanismes
e
e
e
e
font de nouveau usage dune pile.
Lordonnanceur ntant pas un processus, se pose le probl`me de la pile `
e
e
a
utiliser pour la gestion des appels de actifverspr^t et pr^tversactif. Deux
e
e
approches peuvent tre considres : la premi`re consiste ` faire de lordone
ee
e
a
nanceur une entit dote de sa propre pile ; lautre revient ` faire excuter
e
e
a
e
llection en utilisant la pile du processus actif suspendu pour appeler les deux
e
fonctions dordonnancement.
Nous dveloppons dans ce paragraphe le programme de traitement de come
mutation de processus en considrant que lordonnanceur dispose dune pile
e
prive lui servant ` grer ses informations propres. Lexercice E23.2 montre
e
a e
lautre solution.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Partage de temps et processus

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

552

traitant :
prologue :INITdesc (R1, actif)
st SP, [R1+deltassp]

/* actif est Pprec */


/* proc[Pprec].ssp = SP */

e
lection :/* code dans le paragraphe prcdent */
e e
epilogue :INITdesc (R1, actif)
ld [R1+deltassp], SP

/* actif est Pnouv */


/* SP = proc[Pnouv].ssp */

pointobs :/* Point dobservation */


reprise : rti /* restaure le contenu des registres ordinaires */

Fig. 23.4 Traitant de commutation de processus, version sans appel de procdures


e

Pile Pprec

descripteur
Pprec
pret

R0 = 0
R1

s
r
e
g
s

R1

Rn-1
REtat
PC

Pile Pnouv

Rn-1
REtat
PC
SP
Registres du
processeur

Pdbut
e
Pn
ssp

descripteur
Pnouv
pret

sregs

Pdbut
e
Pn
ssp

Fig. 23.5 Contenu de la mmoire et des registres du processeur lors dune commutae
tion du processus Pprec au processus Pnouv, au point dobservation avant
lexcution de linstruction rti
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

553

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

3. Organisation du traitant de commutation

traitant :
/* les registres ordinaires ont t empils par le processeur
e e
e
dans la pile de Pprec */
prologue : jsr sauver
pointobsA : /* Point dobservation */
election : /* masquer IT : atomicit dacc`s ` file des pr^ts */
e
e a
e
seti
/* Election du nouveau proc. dans pile spciale*/
e
set pileordo , SP
jsr actifverspret
jsr pretversactif
/* actif = Pnouv */
cli /* dmasquer IT : fin dexclusion mutuelle */
e
epilogue : jsr restaurer
reprise : rti /* restaure les registres autres que SP */
sauver :

INITdesc (R1, actif)


st SP, [R1+deltassp]
rts

/* actif est Pprec */


/* proc[Pprec].ssp = SP */

restaurer :
pointobsB : /* Point dobservation */
INITdesc (R1, actif) /* actif est Pnouv */
ld [R1+deltassp], SP /* SP = proc[Pnouv].ssp */
pointobsC : /* Point dobservation */
/* Corrige ladresse de retour pour excution
e
du rts de la procdure restaurer */
e
set reprise, R1
st R1, [SP] /* sommet de pile = ladresse reprise */
pointobsD : /* Point dobservation */
rts /* retour ` reprise */
a
Fig. 23.6 Traitant de commutation de processus utilisant une pile prive
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Partage de temps et processus

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

554

(a)

(b)

descripteur
Pprec

descripteur
Pprec

pile Pprec
election
sregs

SP

var globales
pile ordo

var globales
pile ordo

descripteur
Pnouv

pile Pprec
election
sregs

descripteur
Pnouv

pile Pnouv

(c)

SP

pile Pnouv

(d)

descripteur
Pprec

reprise

descripteur
Pprec

pile Pprec
election
sregs

pile Pprec
election
sregs

var globales
pile ordo

descripteur
Pnouv

var globales
pile ordo

descripteur
Pnouv

pile Pnouv
election
sregs

SP

pile Pnouv
reprise
sregs

SP

Fig. 23.7 Contenu de la mmoire lors de lexcution du traitant de commutation de


e
e
processus muni dune pile prive (Cf. Figure 23.6)
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Organisation du traitant de commutation

555

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

La gure 23.6 dcrit le programme traitant. Le programme utilise la noue


velle variable globale pileordo qui est ladresse du sommet de la pile prive de
e
lordonnanceur. Les procdures actifverspr^t et pr^tversactif sont celles
e
e
e
dnies au paragraphe 3.1.
e
La gure 23.7 illustre le contenu des piles ` dirents instants de lexcution
a
e
e
du traitant. Nous allons maintenant dtailler lexcution pas ` pas du traitant.
e
e
a
Comme dans le paragraphe prcdent nous appelons Pprec le processus intere e
rompu et Pnouv le processus lu.
e
A lentre du traitant (prologue), le registre SP est le sommet de la pile de
e
Pprec. Lors du dpart en interruption le processeur a sauvegard les registres
e
e
(sauf SP) dans cette pile (zone sregs).
Lappel jsr sauver a pour eet la sauvegarde au sommet de la pile de Pprec
de ladresse de retour election. Le code de la procdure sauver stocke SP dans
e
le champ ssp du descripteur de Pprec. La valeur de SP sauvegarde est donc
e
dcale par rapport ` la position eective de sregs dans la pile de Pprec. Lors
e e
a
de lexcution de rts, le processeur prend son adresse de retour dans la pile de
e
Pprec et SP rep`re le mot en dessous (Cf. Figure 23.7-a).
e
Le traitant excute alors la partie lection. Nous verrons dans le chapitre 24
e
e
que le processeur peut tre dot de plusieurs sources dinterruptions et que
e
e
les traitants dinterruption sont eux-mmes interruptibles. Le masquage des
e
interruptions durant llection du nouveau processus actif garantit latomicit
e
e
des oprations de mise ` jour de la le des prts. Ce probl`me datomicit a
e
a
e
e
e
dj` t analys sur lexemple de la pendule du chapitre 22. Le traitant met
eaee
e
alors en place la pile prive de lordonnanceur. SP est charg avec ladresse du
e
e
sommet de cette pile qui est ensuite utilise pour grer les adresses de retour
e
e
et le passage de param`tres lors des appels actifverspr^t et pr^tversactif.
e
e
e
Lors de lappel jsr restaurer, SP rep`re toujours la pile de lordonnanceur.
e
Cest donc dans celle-ci quest sauvegarde ladresse de retour reprise (Cf. Fie
gure 23.7-b).
Lors de lexcution de restaurer, le champ ssp du descripteur de Pnouv qui
e
avait t sauvegard lors de la prcdente interruption de Pnouv, rep`re le mot
ee
e
e e
e
au-dessus de la zone sregs de Pnouv. En eet, Pnouv avait t prcdemment
ee e e
interrompu de la mme faon que ce que nous venons de dcrire pour Pprec ; le
e
c
e
sommet de la pile de Pnouv contient donc ladresse election. SP est mis ` jour
a
avec ce champ ssp (Cf. Figure 23.7-c) mais ce nest pas ladresse qui convient
pour lexcution du rts de restaurer.
e
Il faut donc corriger avec la bonne adresse cest-`-dire reprise avant
a
dexcuter rts (Cf. Figure 23.7-d). Apr`s le retour de restaurer, SP rep`re le
e
e
e
sommet de la pile de Pnouv qui contient la zone sregs. Le traitant excute alors
e
rti qui a pour eet la restauration de tous les autres registres.
Lutilisation dune pile spare pour lordonnanceur permet de grer facie e
e
lement nimporte quelle profondeur dappel de procdures dans lalgorithme
e
dlection : il sut de dimensionner cette pile en consquence.
e
e
Par contre le surcot de gestion du partage de temps pnalise les politiques
u
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

556

Partage de temps et processus

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

dlection complexes et le recours ` des algorithmes dlection exigeant une


e
a
e
pile de grande taille est peu probable.
Lexcution de llection dans le contexte du processus interrompu, aue
e
trement dit en utilisant la pile de ce dernier plutt quune pile prive, est
o
e
envisageable et simplie la ralisation du traitant (Cf. Exercice E23.2).
e

4.

Cration et destruction de processus


e

Dans un syst`me simple monotche lexcution dun programme rsulte


e
a
e
e
dun simple appel du chargeur/lanceur par linterpr`te de commande (Cf. Chae
pitre 20). Elle se termine galement de mani`re simple par lexcution dun
e
e
e
retour.
Le passage ` un syst`me multitches multiplexant plusieurs processus sur
a
e
a
le processeur pose un certain nombre de questions : Comment et par qui est
cr un processus ? Que devient le chargeur-lanceur ? Comment linterpr`te de
ee
e
commande lance-t-il lexcution dun programme ? Comment se termine un
e
processus ? Comment lexcution de linterpr`te de commande est-elle suspene
e
due durant lexcution du programme lanc ?
e
e
Le principe de fonctionnement est relativement simple : le lancement dun
programme est une cration de processus excutant le programme lanc. La
e
e
e
cration dun processus est un mcanisme de liation : un processus (appel
e
e
e
ls) est cr par un autre processus (appel p`re). On parle parfois de naissance
ee
e e
et de mort dun processus. La terminaison normale dun processus est une
autodestruction.
Apr`s cration, p`re et ls sexcutent comme deux processus indpendants.
e e
e
e
e
Les descripteurs de processus sont enrichis de nouveaux champs dcrivant la
e
structure arborescente de liation des processus. Le p`re doit aussi avoir la
e
possibilit de se suspendre jusqu` la terminaison dun ls. Ce comportement
e
a
est entre autres celui dun interpr`te de commandes textuel, qui cre un proe
e
cessus ls pour excuter la commande, puis en attend la terminaison avant de
e
lire une nouvelle ligne de commande.
Ainsi un processus nest plus seulement actif ou prt mais peut tre suse
e
pendu. Il faut complter la notion dtat dun processus par ltat en attente
e
e
e
dun vnement qui peut tre la n dun autre processus par exemple. On parle
e e
e
au chapitre 24 dautres extensions lies aux processus.
e
Les syst`mes multi-utilisateurs associent ` chaque processus un identie
a
cateur dutilisateur propritaire (uid) qui dnit les ressources (telles que les
e
e
chiers) auxquelles il pourra accder (via les procdures du syst`me dexploitae
e
e
tion). Il existe gnralement un utilisateur particulier nomm superutilisateur
e e
e
(` ne pas confondre avec le mode superviseur), auquel aucune limitation de
a
droit dacc`s nest applique.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Cration et destruction de processus


e

Cration
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

4.1

557

La procdure de cration retourne au processus p`re appelant le pid du ls


e
e
e
cr, ou un code derreur (manque de mmoire ou dentre libre dans la table
ee
e
e
des processus ; chier inexistant ou ne contenant pas un binaire excutable
e
valide pour la machine, ou droits du p`re insusants). Elle poss`de un sure
e
ensemble des param`tres du chargeur-lanceur (except le dbut de mmoire
e
e
e
e
libre) auquel elle se subtitue. Les param`tres supplmentaires sont relatifs `
e
e
a
la gestion des droits dacc`s du processus cr. Par dfaut, le processus ls
e
ee
e
appartient au mme utilisateur que le processus p`re : seuls les processus ape
e
partenant au superutilisateur sont autoriss ` crer des ls appartenant ` un
e a e
a
autre utilisateur.
La procdure de cration alloue au ls une entre libre pid ls de la table
e
e
e
des processus ainsi quune pile syst`me si elle nest pas incluse dans pid ls.
e
Comme dans le syst`me simple, len-tte du chier excutable est lue et trois
e
e
e
zones de mmoire texte, donnes et pile utilisateur sont alloues au processus
e
e
e
cr. Le contenu des sections texte et donnes du chier excutable est charg
ee
e
e
e
dans la mmoire alloue au processus ; lalgorithme de rimplantation est alors
e
e
e
appliqu.
e
La procdure de cration reproduit les param`tres passs par le p`re dans
e
e
e
e
e
la pile utilisateur du ls et initialise le champ sommet de pile syst`me (ssp) de
e
e
pid ls ainsi que la zone de sauvegarde pointe par ce dernier.
Le ls est ensuite insr dans larborescence de liation des processus et
ee
dans la liste des processus prts.
e
Noter que linitialisation de la zone de sauvegarde dans la pile syst`me
e
simule un processus prexistant interrompu par une interruption de commue
tation et remis dans la le des prts.
e

4.2

Terminaison

La procdure dautodestruction a pour param`tre un code de retour ` transe


e
a
mettre au processus p`re, indiquant soit une excution correcte, soit lerreur
e
e
ayant caus la terminaison prmature du ls. Ce param`tre de lappel de
e
e
e
e
terminaison est recopi dans lentre de la table des processus correspondant
e
e
au processus excutant lappel (donc le processus actif), o` le p`re pourra le
e
u
e
consulter ultrieurement.
e
Les zones texte, donnes et pile processus sont dsalloues et rajoutes `
e
e
e
e a
lespace mmoire disponible.
e
Dans la table des processus, la routine de destruction rinitialise le champ
e
p`re de chacun de ses processus ls, qui deviennent orphelins, et purge les ls
e
fantmes de la table des processus (les entres correspondantes de la table des
o
e
processus sont remises dans la liste des entres libres).
e
Le processus en cours dautodestruction devient un processus fantme ou
o
zombie (mort-vivant) qui nvolue plus et qui nutilise plus dautre ressources
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

558

Partage de temps et processus

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

que son entre dans la table des processus.


e
La libration de cette derni`re sera eectue ultrieurement par le processus
e
e
e
e
p`re : elle contient le code de retour destin au p`re. Pour cela, le processus qui
e
e
e
sautodtruit rveille son p`re si ce dernier est bloqu en attente de terminaison
e
e
e
e
dun ls. Si le processus qui sautodtruit est orphelin, il se purge lui-mme de
e
e
la table des processus et dispara
t.
La procdure de destruction se termine dans les deux cas par llection dun
e
e
nouveau processus actif.

4.3

Attente de terminaison dun ls

La procdure dattente retourne un code derreur si la liste des ls du


e
e
processus est vide. Sinon, elle retire de celle-ci un ls ls mort termin (dans
ltat fantme ou zombie), recopie le code de retour de ce dernier dans la
e
o
variable passe par le p`re en param`tre de lappel, purge le ls de la table des
e
e
e
a
processus et retourne ls mort ` lappelant.
En labsence de ls termin, le processus p`re appelant excute une
e
e
e
procdure qui le bloque dans un tat dattente de termisaison dun ls, et
e
e
reprend tout depuis le dbut apr`s avoir t rveill par un ls qui se termine.
e
e
ee e
e

4.4

Le mod`le unix
e

Nous avons vu prcdemment que la procdure de cration permet ` un


e e
e
e
a
processus p`re de crer un ls avec un chier excutable distinct de delui du
e
e
e
p`re, et sous une identication dirente.
e
e
Le syst`me dexploitation unix ore trois primitives distinctes dont la come
binaison permet darriver au mme rsultat.
e
e
fork cre par clonage un processus ls ` limage du p`re. Les zones mmoire
e
a
e
e
du p`re sont dupliques ` lidentique chez le ls. Le ls hrite de lidentie
e a
e
cation du p`re. Juste apr`s la cration, le ls ne se distingue du p`re que
e
e
e
e
par un pid (entre dans la table des processus) dirent. Le retour de fork
e
e
est excut par les deux processus et retourne au p`re le pid du ls et au
e e
e
ls une valeur nulle.
exec est appel par un processus pour changer le programme quil excute.
e
e
Le contenu du chier pass en param`tre remplace celui des zones mmoires
e
e
e
hrit du p`re.
e e
e
setuid permet ` un processus de changer dutilisateur propritaire.
a
e
Le scnario classiquement employ est le suivant : le p`re cre un ls via
e
e
e
e
fork, le ls change didentication par setuid, puis appelle exec pour lancer
son propre programme excutable.
e
Dautre part, aucun processus ls ne lib`re lui-mme son entre dans la
e
e
e
table des processus : la purge des zombies est ralise par le p`re (rel ou
e e
e
e
adoptif). Les ls ne deviennent pas orphelins : ` la mort du p`re, la paternit
a
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

4. Cration et destruction de processus


e

559

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

est transfre au processus initial du syst`me. Apr`s la phase de dmarrage, le


ee
e
e
e
processus initial entre dans une boucle dans laquelle il attend la terminaison
dun ls.

4.5

Scnario de dmarrage :
e
e
cration dun premier processus
e

Nous considrons ici les cas dun ordinateur auquel sont relis un certain
e
e
nombre de terminaux. Un chier sur disque dcrit ces terminaux ainsi que
e
lensemble des utilisateurs autoriss ` se connecter.
e a
A linitialisation le processeur excute un traitant de dmarrage (amorce)
e
e
rsidant en mmoire morte et contenant un pilote de disque rudimentaire.
e
e
Apr`s que le syst`me ait t charg en mmoire, que les structures de donnes
e
e
ee
e
e
e
aient t initialises, quun certain nombre de vrications aient t faites, la
ee
e
e
ee
procdure damorage fabrique un pseudo processus pour appeler la procdure
e
c
e
de cration de processus et crer le processus initial appartenant ` un utilisae
e
a
teur privilgi : le superutilisateur.
e e
Le chier excutable pass en param`tre (init) contient le programme de
e
e
e
dmarrage du syst`me. Celui-ci consulte un chier donnant la liste des termie
e
naux via lesquels les utilisateurs sont autoriss ` se connecter. Pour chacun
e a
deux, il cre un processus grant la procdure de connexion (login) avec pour
e
e
e
param`tre le nom du terminal ` grer.
e
a e
Ce dernier processus ache la banni`re de connexion. Il saisit ensuite le
e
nom du compte et le mot de passe (en supprimant lcho ` lcran) et les
e
a e
compare au contenu du chier de dclaration des utilisateurs. Dans le cas
e
o` la connexion est accepte, le processus de connexion cre un processus
u
e
e
appartenant ` lutilisateur connect pour excuter le programme associ `
a
e
e
e a
cet utilisateur dans le chier de dclaration. Cela peut tre par exemple un
e
e
interpr`te de commandes.
e
Linterpr`te de commande fonctionne comme celui du syst`me simple `
e
e
a
e
deux dirences pr`s : lappel de la procdure charger lancer est remplac par
e
e
e
un appel superviseur de cration de processus suivi dun appel dattente de
e
terminaison ; lorsque la commande est une dconnexion (logout), le processus
e
interpr`te de commande excute un appel de terminaison et meurt.
e
e
La terminaison du processus termine la session de travail, rveille le proe
cessus p`re qui rache la banni`re et attend une nouvelle connexion dun
e
e
e
utilisateur sur le terminal.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

560

Exercices

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

5.

Partage de temps et processus

E23.1 : Sauvegarde partielle ou totale des registres

Lors dun dpart en interruption, notre processeur ne sauve que le compteur


e
programme et le registre dtat dans la pile. Dessiner ltat de la pile syst`me au
e
e
e
dbut du traitant. Nous donnons ci-dessous le traitant modi et la procdure
e
e
e
empiler. Dcrire ltat de la pile apr`s lexcution du rts de empiler. Ecrire la
e
e
e
e
procdure dsempiler correspondante.
e
e
Traitant :
jsr empiler
jsr sauver
...
jsr restaurer
jsr desempiler
rti

empiler :
sub SP, delta_reg7, SP
st REG1, [SP + delta_reg1]
st REG2, [SP + delta_reg2]
...
st REG6, [SP + delta_reg6]
ld [SP + delta_reg7], REG1
st REG1, [SP]
st REG7, [SP + delta_reg7]
rts

E23.2 : Ralisation du traitant de commutation sans utilisation dune


e
pile prive
e
Nous donnons ci-dessous une autre ralisation du traitant de commutae
tion. Il nexiste pas de pile prive pour lordonnanceur. Cela signie que les
e
informations ` empiler ou ` rcuperer au sommet de la pile lors des appels et
a
a e
retours de procdures le sont dans les piles des processus interrompu et lu.
e
e
Par rapport aux programmes du paragraphe 3.2.2 certaines lignes de code ont
t supprimes dans la partie election et dans la procdure restaurer.
ee
e
e
Etudier lexcution de ce traitant en dessinant les dirents tats du
e
e
e
contenu des piles et montrer que le programme traitant est bien correct. En
particulier, remarquer que ladresse de retour pointe par le champ ssp du proe
cessus suspendu sera modie par chacun des trois appels de procdure suie
e
vants, qui utilisent sa pile. A la n du traitant, ladresse eectivement prsente
e
dans la pile du processus suspendu est celle empile par lappel de restaurer
e
(reprise).
traitant :
prologue : jsr sauver

election : seti
jsr actifverspr^t
e
jsr pr^tversactif
e
cli
epilogue : jsr restaurer
rti

sauver :
INITdesc (R1, actif)
st SP, [R1+deltassp]
rts

restaurer:
INITdesc (R1, actif)
ld [R1+deltassp], SP
rts

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Chapitre 24

Gnralisation du mcanisme
e e
e
dinterruption et applications
Nous avons introduit au chapitre 23 la notion de processus, brique de base
de la construction des syst`mes complexes. Ce mcanisme plus avanc permet
e
e
e
de donner limpression de vraiment traiter deux tches simultanment.
a
e
Il nous reste maintenant ` tudier comment gnraliser le mcanisme des
ae
e e
e
interruptions ` plusieurs sources dinterruption et grer les probl`mes de proa
e
e
tection des informations des direntes activits se droulant simultanment.
e
e
e
e
Par ailleurs, les direntes approches dentres/sorties tudies au chae
e
e
e
pitre 16 utilisent principalement une phase dattente active o` le procesu
seur ne fait rien dautre que de scruter un coupleur en attendant que le
priphrique soit en tat de communiquer. Lenrichissement du syst`me dintere
e
e
e
ruption et lutilisation du mcanisme de processus vont permettre de partager
e
vritablement le temps du processeur entre des tches de calcul et des tches
e
a
a
dentres/sorties. Nous gardons toutefois la synchronisation lmentaire : le
e
ee
coupleur maintient la requte tant quil ne reoit pas de la part du processeur
e
c
un acquittement signiant que la requte est prise en compte.
e

Dans ce chapitre nous montrons comment se gnralise le mcanisme


e e
e
dinterruption (paragraphe 1.) et comment sen servir pour apporter
une rponse aux dirents besoins identis plus haut. Nous dtaillons
e
e
e
e
en particulier la notion de mode superviseur/mode utilisateur (paragraphe 2.) du point de vue du programmeur et du point de vue du processeur. Pour utiliser au mieux cette protection, nous tendons le processeur
e
simple prsent au chapitre 22 avec quelques registres et de la circuitee
e
rie de calcul dadresses. Parmi les direntes utilisations du mcanisme
e
e
dinterruption, nous tudions particuli`rement les entres/sorties (parae
e
e
graphe 3.) o` le partage de temps est le plus justi.
u
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

562

Classication des direntes sources


e
dinterruption

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

1.

Gnralisation du mcanisme dinterruption et applications


e e
e

Dans le chapitre 22 nous avons considr deux sources dinterruptions posee


sibles, un l IRQ et une instruction swi. Nous avons mentionn lutilisation du
e
swi principalement pour pouvoir mettre au point un programme traitant en
provoquant par logiciel un basculement de dpart.
e
Pour mettre en place pleinement direntes possibilits de partage de
e
e
temps, de nombreuses autres sources dinterruptions existent dans les machines. Les traitements correspondants permettent de simplier la tche du
a
programmeur dapplication en laissant dans le syst`me dexploitation de nome
breux aspects dont la programmation est dlicate. En eet le syst`me dexe
e
ploitation comporte dj` de nombreux traitants.
ea
Nous prsentons les direntes types dinterruptions selon trois crit`res.
e
e
e
On sintresse dabord ` la source des interruptions : celle-ci peut provenir
e
a
de lintrieur du processeur ou de lextrieur. Le paragraphe 1.1 prsente les
e
e
e
direntes interruptions de faon dtaille selon leur source.
e
c
e
e
Par ailleurs les interruptions ont divers degr de synchronicit avec
e
e
lexcution des instructions : les interruptions peuvent survenir ` des instants
e
a
prvisibles ` une certaine tape de lexcution des instructions ou ` nimporte
e
a
e
e
a
quel moment. Dans le second cas elles ne sont considres quentre les insee
tructions comme dans le chapitre 22.
Le troisi`me crit`re est la fonction dune interruption. Les direntes fonce
e
e
tions des interruptions dans la machine sont : la communication entre lordinateur et le monde extrieur, la dtection et lventuelle correction derreurs
e
e
e
diverses et les appels, voulus par le programmeur, de fonctions particuli`res
e
dj` programmes dans le logiciel de base livr avec la machine. Dans la praea
e
e
tique ces trois crit`res ne sont pas totalement indpendants.
e
e
Dans le texte nous ferons souvent rfrence ` la notion de superviseur qui
ee
a
est tudie en dtail au paragraphe 2.
e
e
e

1.1

Sources externes et sources internes

Il importe de distinguer les sources dinterruption selon leur origine physique et logique. Certaines proviennent de lintrieur du processeur, dautres
e
de lextrieur.
e
1.1.1

Sources internes

Parmi les sources internes, citons tout ce qui est li ` lexcution dune
e a
e
instruction.
Instruction SoftWare Interrupt (swi) On a dj` mentionn lexistence
ea
e
de cette instruction. Elle est utilise prioritairement pour appeler une fonction
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Classication des direntes sources dinterruption


e

563

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

dj` existante du syst`me dexploitation et il existe des machines o` le code


ea
e
u
du swi comporte une constante prcisant lequel des services du syst`me est
e
e
appel. Voir gure 24.1 la prise en compte du code swi.
e
Instructions invalides Si le registre instruction comporte N bits, il y a
2N codes possibles. Il se peut que certains codes ne soient ceux daucune instruction. On parle de code invalide. Mme sur le processeur simple tudi au
e
e
e
chapitre 14 certains codes taient invalides. Il est classique de gnrer une ine
e e
terruption interne dans ce cas. Voir gure 24.1 la prise en compte du code
invalide.
Certains codes invalides sont documents comme de vraies instructions.
e
Cette technique peut tre utilise pour tendre le jeu dinstructions sans pour
e
e
e
autant donner les ressources matrielles correspondantes. On peut par exemple
e
avoir ainsi des instructions de calcul en virgule ottante alors que le processeur
ne dispose pas dune unit matrielle de calcul sur cette reprsentation. Il y a
e
e
e
alors un traitant spcique qui ralise par programme lquivalent de ce que
e
e
e
devrait faire linstruction.
Remarque :
Dans la prhistoire de linformatique certains processeurs
e
se mettaient en cas de code invalide ` excuter une squence non docua
e
e
mente. Il fallait, pour y comprendre quelque chose, prendre les quations
e
e
de la ralisation de la partie contrle et retrouver les des tableaux de Kare
o
naugh. Chose que le programmeur normal refuse de faire. Faire, si ncessaire,
e
lexercice E14.5 pour voir la dicult.
e

Donne invalide Il existe des machines o` une interruption est dclenche


e
u
e
e
en cas dapparition dune instruction de division avec un oprande diviseur
e
nul. Une autre situation dinterruption se produit si il y a acc`s ` un mot
e a
alors que ladresse nest pas multiple de 4 dans une machine o` une telle
u
convention existe. Sur certaines machines des instructions particuli`res peuvent
e
faire dborder certaines ressources. Cest le cas sur le sparc o` les instructions
e
u
save ou restore peuvent provoquer des interruptions pour dbordements de
e
fentre.
e
Instructions spciales Beaucoup de machines ont des classes dinstruce
tions spciales (voir paragraphe 2.3). Le processeur ` deux (ou plus) modes
e
a
de fonctionnement. Le mode de fonctionnement est matriellement un bit du
e
mot dtat. Un exemple sera fourni sous le nom de mode utilisateur/mode
e
superviseur dans ce chapitre. Dans le mode 1, toutes les instructions sont licites, dans le mode 2 certaines ne sont pas licites. Au moment du dcodage
e
du registre instruction, la prise en compte du bit de mode dans le mot dtat
e
et la rencontre dune instruction illicite pour le mode courant engendrent une
interruption interne. On parle alors de violation de privili`ge. Les instructions
e
de changement de mode ne peuvent videmment pas tre toujours licites.
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Gnralisation du mcanisme dinterruption et applications


e e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

564

PC = PC+4

RInst = M[TA]

Load

swi
source = 3

reg = M[TA]

mot align
e
adresse valide

mot non
align
e

TA = PC

adresse invalide
et mot align
e

source = 2

code invalide

autres
excution
e

source = 4

non IRQ ou I

IRQ et non I

source = 1

source = 5

TA,SP =
M[TA] =
TA,SP =
M[TA] =
REtat[I] =
TA =
TA =
PC =

SP-4
PC
SP-4
REtat
Vrai
f(source)
M[TA]
M[TA]

Fig. 24.1 Graphe de contrle (tr`s partiel) du processeur acceptant plusieurs sources
o
e
dinterruptions

1.1.2

Sources externes

Les sources externes sont diverses. On a dj` mentionn lexistence dun l


ea
e
IRQ. Il peut y avoir plusieurs ls de requte au lieu dun seul. Les ls venant
e
de lextrieur du processeur peuvent vhiculer toutes sortes dinformation sur
e
e
ltat du monde ou le droulement des instructions.
e
e

Etat du monde Certaines sources informent lordinateur dun tat du


e
monde : depuis le petit montage lectronique qui dtecte une faiblesse de
e
e
lalimentation de lordinateur et fait commuter sur une tche de recopie de la
a
mmoire centrale sur disque dur, jusquau clic souris en passant par limpulsion
e
dhorloge ou la frappe dun caract`re au clavier. Nous reparlons de la gestion
e
dentres/sorties en utilisant le syst`me dinterruption au paragraphe 3. On
e
e
trouve aussi de plus en plus dordinateurs qui dtectent : il ne sest rien pass
e
e
depuis N minutes et passent automatiquement en mode basse consommation.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Classication des direntes sources dinterruption


e

565

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Excution problmatique Dautres sources rsultent de probl`mes lors


e
e
e
e
de lexcution dinstructions. On a donn dans le chapitre 15 un dcodage
e
e
e
dadresse ; si une adresse mise sur le bus adresse ne correspond ` aucune zone
e
a
mmoire installe, et si le dcodage est complet, un signal adresse invalide peut
e
e
e
tre fabriqu par le dcodeur. Ce signal peut tre une requte dinterruption.
e
e
e
e
e
Remarquons que le concepteur du processeur peut prvoir dans quels tats
e
e
de la partie contrle une telle requte peut se produire : uniquement dans les
o
e
tats o` il y a acc`s mmoire. Il installe alors un test apr`s chacun de ces tats.
e
u
e e
e
e
Sur la gure 24.1 on a gur ces tests apr`s un seul tat, celui dexcution de
e
e
e
e
linstruction load. Cest videmment un souci de simplication ; le mme test
e
e
aurait lieu apr`s chaque tat o` gure un acc`s mmoire.
e
e
u
e
e
Par ailleurs, le processeur qui acc`de en lecture ` la mmoire peut mettre
e
a
e
e
un signal prcisant si lacc`s est ` une instruction ou ` une donne. Si un
e
e
a
a
e
syst`me de protection est install entre les zones texte et donnes des processus,
e
e
e
un dcodage dacc`s invalide peut tre install.
e
e
e
e

1.2

Synchronicit des interruptions et du droulement


e
e
des instructions

Certains signaux dinterruptions passent ` ltat actif ` un instant prcis et


a e
a
e
prvisible par rapport au droulement de linstruction. Cest le cas de toutes les
e
e
interruptions internes et des interruptions externes lies au dcodage dadresse.
e
e
On parlera alors dinterruptions synchrones.
Par contre les requtes venant des priphriques divers, ` travers des coue
e
e
a
pleurs, peuvent survenir nimporte quand. On parlera dinterruptions asynchrones. Les signaux sont alors chantillonns sur lhorloge du processeur pour
e
e
tre conservs dans une bascule D, et ne sont pris en compte qu` des inse
e
a
tants pr-tablis. Sur la gure 24.1 gure le test de IRQ apr`s lexcution des
ee
e
e
instructions marques autres. Il aurait lieu ` la n de chaque instruction.
e
a

1.3

Fonctions des interruptions

Le mcanisme dinterruption est utilis pour la mise en oeuvre de trois


e
e
fonctionnalits importantes dans les syst`mes complexes.
e
e
Une premi`re fonctionnalit correspond au partage de temps, ` loptimisae
e
a
tion des oprations dentres/sorties et la prise en compte des alarmes venant
e
e
de la priphrie : ce sont les interruptions proprement dites.
e
e
La deuxi`me fonctionnalit concerne la gestion des erreurs et anomae
e
lies dclenches par lexcution des programmes : on parle alors plutt de
e
e
e
o
droutement que dinterruption.
e
La troisi`me est lie ` linvocation des routines du syst`me dexploitation,
e
e a
e
par exemple celles des pilotes de priphriques avec les privil`ges adquats pour
e
e
e
e
accder ` toutes les ressources de lordinateur : on parle dappel au superviseur.
e
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

566

1.4

Gnralisation du mcanisme dinterruption et applications


e e
e

Non indpendance des crit`res


e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Une interruption interne est forcment synchrone : appels au superviseur,


e
code ou donnes invalides, etc.
e
Une interruption externe est synchrone lorsquil sagit dune dtection dun
e
mauvais droulement dune instruction : acc`s mmoire non autoris, etc.
e
e
e
e
Une interruption externe est asynchrone lorsquelle permet de grer les
e
communications avec le monde extrieur.
e

1.5

Identication de la requte et slection du traitant


e
e

Puisquil y a plusieurs sources dinterruptions il est obligatoire de pouvoir


identier la source de linterruption et de pouvoir associer un traitant particulier pour chaque source.
Lorganisation type est davoir, apr`s le basculement de dpart, une valeur
e
e
de PC caractristique de la source de la requte. Il convient donc de raliser
e
e
e
dune certaine faon la fonction qui donne une adresse de dbut pour chaque
c
e
cause.
Le probl`me se pose diremment selon que les direntes requtes sont
e
e
e
e
simultanes ou non.
e
1.5.1

Forage du Compteur Programme


c

Il y a principalement trois faons de forcer le compteur programme au


c
moment du basculement de dpart.
e
La solution la plus rpandue consiste ` forcer une valeur dans un registre
e
a
intermdiaire source. La valeur est caractristique de la cause dinterruption
e
e
(voir gure 24.1). Cette valeur est ensuite utilise pour fabriquer ladresse de
e
dbut du traitant.
e
Certains processeurs de la famille intel tablissent un dialogue entre le
e
processeur et le coupleur apr`s une requte dinterruption asynchrone. Cela
e
e
permet de localiser la source qui fournit alors un numro permettant de fabrie
quer ladresse de dbut du traitant.
e
Une solution par programme est possible aussi : le processeur scrute les
dirents mot dtat des coupleurs par le programme traitant et se branche,
e
e
conditionnellement, ` une table dadresses pr-tablie.
a
ee
1.5.2

Choix parmi des sources simultanes


e

La prise en compte de multiples sources dinterruptions demande de rgler


e
le probl`me du choix parmi les candidats possibles. Par exemple lorsquun acc`s
e
e
a
` un mot a lieu ` une adresse non multiple de 4 dans une zone de mmoire o`
a
e
u
aucun boitier nest install, quel traitement sera fait ? Celui pour acc`s invalide
e
e
ou celui de mmoire non installe ?
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

1. Classication des direntes sources dinterruption


e

567

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Nous distinguerons quatre faons de faire ce type de choix. Elles corresc


pondent ` des mtiers de linformatique dirents.
a
e
e
Dans la premi`re solution le choix est fait ` la conception du processeur. Il
e
a
est tabli par matriel ` lintrieur du processeur. Le choix nest videmment
e
e
a
e
e
pas modiable par lutilisateur nal de lordinateur. Le mtier concern est
e
e
celui de concepteur de processeur.
Dans la deuxi`me solution le choix est fait par matriel ` lextrieur du
e
e
a
e
processeur. Lutilisateur de lordinateur ne peut en gnral pas faire de moe e
dication mais larchitecte de machine a la charge de raliser cette fonction.
e
Le mtier concern est celui de concepteur dordinateurs ` base de processeurs
e
e
a
existants.
Dans la troisi`me solution le choix de prise en compte parmi des requtes
e
e
est fait par logiciel. Il sagit dune couche logicielle de bas niveau, enfouie dans
le syst`me dexploitation. Lutilisateur nal ny peut rien. Le mtier concern
e
e
e
est celui de concepteur de logiciel de base dordinateur.
Enn, sur la plupart des machines, par appel ` des routines syst`me, lutia
e
lisateur peut crire des programmes grant un certain nombre dvnements.
e
e
e e
Le lecteur du prsent livre risque bien dtre un jour dans cette situation !
e
e
Le premier choix est enti`rement matriel. Supposons 3 signaux de requtes
e
e
e
simultans possibles ` un instant donn irq1, irq2, irq3. Il est facile dintroduire
e
a
e
dans le graphe de contrle du processeur 4 tats E1, E2, E3 et E4 successeurs
o
e
de ltat de test avec le squencement suivant :
e
e
tat suivant = si irq1 alors E1 sinon
e
si irq2 alors E2 sinon
si irq3 alors E3 sinon E4

Par matriel, cela revient ` utiliser les boolens irq1, irq1.irq2, irq1.irq2.irq3,
e
a
e
et irq1.irq2.irq3 comme conditions de validation des arcs dans le graphe de lautomate de contrle. Cest ce qui est fait sur la gure 24.1 pour les sources mot
o
non align et adresse invalide apr`s ltat de lecture mmoire et chargement
e
e e
e
dun registre dans lexcution de linstruction de chargement.
e
Le deuxi`me cas sapplique pour les machines o` les coupleurs fournissent
e
u
chacun un l de requte, par exemple jusqu` 16 ls, mais o` un circuit externe
e
a
u
au processeur, nomm encodeur de priorit dinterruptions, ne fournit au proe
e
cesseur que le numro, sur 4 bits, du l actif de plus fort numro. Le cblage du
e
e
a
clic souris sur lentre 3, de lhorloge sur lentre 14 et du contrleur de disque
e
e
o
sur lentre 7 xe alors les priorits respectives de ces direntes sources pose
e
e
sibles. Si les 3 sources mettent des requtes simultanes, cest lhorloge (de
e
e
e
niveau 14) qui sera servie.
Les troisi`me et quatri`me cas ont lieu quand plusieurs sources sont relies
e
e
e
par un seul l physique au processeur selon un montage ` base dune porte NOR
a
en NMOS o` la rsistance de rappel ` lalimentation est, par exemple, interne
u
e
a
au processeur (Cf. Figure 24.2). Le processeur entame alors une scrutation,
par logiciel, dans un ordre donn, des registres dtats des dirents coupleurs
e
e
e
pour identier celui qui est lauteur de la requte. Dans le cas de requtes
e
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

568

Gnralisation du mcanisme dinterruption et applications


e e
e

bo
tier coupleur k
irq k

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

bo
tier coupleur i
irq i

processeur

irq i OU irq j OU irq k

bo
tier coupleur j

irq j

Fig. 24.2 Liaison des requtes dinterruption sur un seul l


e

simultanes, lordre de scrutation xe la priorit des sources. Le premier scrut


e
e
e
ayant mis une requte est servi. Il faut, naturellement, que les demandeurs
e
e
non servis maintiennent leur requte.
e
Naturellement, il est possible de cumuler les dirents choix, en respectant
e
une certaine cohrence.
e
1.5.3

Choix parmi des sources hirarchises


e
e

On a mentionn dans le chapitre 22 le traitement rserv ` une requte


e
e
e a
e
dinterruption survenant pendant lexcution dun traitant. Le bit dinhibie
tion I permet dautoriser ou dinterdire la prise en compte de telles requtes `
e
a
ce moment. Sur certaines machines le programmeur a acc`s ` ce bit.
e a
Cette technique peut tre gnralise ` plusieurs sources. Si un processeur
e
e e
e a
a 3 sources dinterruptions, irq1, irq2, irq3, on peut convenir que irq3 peut
toujours interrompre le traitant de irq2 ou irq1. De mme que irq2 peut
e
toujours interrompre le traitant de irq1. Il reste alors au programmeur, par
manipulation de bits I1 , I2 , I3 du mot dtat ` dcider si il autorise ou non `
e
a e
a
ce que irqk interrompe le traitant de irqk .
Il va de soi que si une requte peut interrompre un traitant il ne faut pas
e
que le traitant de commutation de contexte puisse tre interrompu nimporte
e
quand. Il convient donc daccorder une priorit leve aux interruptions horloge
ee e
et aux appels superviseur. Il reste, nanmoins, ` protger les traitants les uns
e
a
e
des autres.

1.6

Probl`me de la reprise dune instruction


e

Les processeurs sparc ont une protection contre une utilisation dune nouvelle fentre qui viendrait ` craser une fentre dj` utilise. Si un tel acc`s
e
ae
e
ea
e
e
est tent par une instruction, une interruption interne est mise. Le traitant
e
e
dinterruption doit alors sauver en mmoire, dans une zone gre en pile, le
e
ee
contenu des registres menacs. Au retour du traitant dinterruption, il convient
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Protection entre processus, notion de superviseur

569

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

alors de reprendre linstruction qui a caus linterruption, et non pas, comme


e
dans le cas gnral de passer ` la suivante.
e e
a
Les machines vax disposent dune instruction dvaluation de polynme.
e
o
La valeur de la variable est range ` un endroit et un tableau en mmoire
e a
e
contient les N coecients. N peut tre grand. Lexcution de cette instruction
e
e
peut donc durer un certain temps. Une interruption tr`s prioritaire peut alors
e
survenir. Et les concepteurs de la machine peuvent dcider dinterrompre linse
truction de calcul du polynme sans perdre les calculs dj` faits. Se pose alors
o
ea
le probl`me de savoir si il est possible de reprendre linstruction interrompue en
e
cours dexcution. Cela ncessite de sauvegarder, au moment du basculement
e
e
de dpart, non seulement ladresse de retour gale dans ce cas ` ladresse de
e
e
a
linstruction en cours dexcution, mais aussi le numro de ltat o` a eu lieu
e
e
e
u
linterruption ou le compteur de boucle indiquant o` en est lexcution.
u
e

2.

Protection entre processus,


notion de superviseur

Dans un syst`me multi-utilisateurs bien conu, un processus ne peut pas


e
c
accder librement aux ressources physiques de lordinateur (mmoire centrale,
e
e
espace disque, temps du processeur) et les monopoliser.
On ne peut imaginer quun programmeur sur une machine multi-utilisateur
puisse crire un programme en langage dassemblage qui aille crire dans la
e
e
structure de donnes de lordonnanceur de processus et salloue la totalit du
e
e
temps.
La condentialit des informations est galement importante. Imaginons
e
e
quun enseignant soit en train dditer un sujet dexamen sur le serveur de
e
son tablissement : il est plus que souhaitable quun processus dun tudiant,
e
e
travaillant sur la mme machine, ne puisse pas lire ni modier la mmoire du
e
e
processus de lenseignant ou le contenu du chier sur le disque ! La ncessit de
e
e
mcanismes de protection est encore plus vidente dans les domaines bancaires
e
e
ou militaires.
Dirents aspects de scurit sont couverts par la notion de mode supervie
e
e
seur, qui soppose ` mode utilisateur.
a

2.1

Notion de mode superviseur et de mode utilisateur

Le processeur est dot de deux modes de fonctionnement, utilisateur et


e
superviseur. Le principe consiste ` excuter le code de lutilisateur propritaire
a e
e
du processus dans un mode restreint dit utilisateur, ou restreint, dans lequel
le processeur ne peut accder ` la mmoire centrale en dehors des zones qui
e
a
e
lui sont alloues (texte, donnes, pile), ni aux priphriques. Les routines du
e
e
e
e
noyau du syst`me dexploitation sont au contraire excutes dans un mode
e
e e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

570

Gnralisation du mcanisme dinterruption et applications


e e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

privilgi dit superviseur ou noyau, leur permettant daccder librement ` toute


e e
e
a
la mmoire et ` tous les priphriques de la machine.
e
a
e
e
Le mode dexcution est dni par un nouveau boolen S (pour superviseur)
e
e
e
du registre dtat du processeur. La valeur de ce bit est ache vers lextrieur
e
e
e
lors des acc`s mmoire. Le circuit de dcodage dadresses vrie ladresse et
e
e
e
e
le sens de chaque acc`s mmoire eectu par le processeur et sassure quils
e
e
e
correspondent bien aux zones mmoires attribues au processus actif et ` son
e
e
a
mode dexcution.
e
De plus certaines instructions tant accessibles seulement en mode supere
viseur les programmes en mode utilisateur sont cantonns. Par exemple les
e
instructions de modication, voire de consultation, de certains registres du
processeur ne sont excutables quen mode superviseur. La rencontre dune
e
instruction rserve sans que le bit S soit dans ltat convenable provoque une
e
e
e
interruption interne, analogue ` la rencontre dun code invalide.
a
La seule faon pour un programme sexcutant en mode utilisateur pour
c
e
accder au syst`me dexploitation est connue sous le nom dappel au supervie
e
seur. Elle permet au programmeur dutiliser les procdures du syst`me dexe
e
ploitation.

2.2

Cahier des charges des appels au superviseur

Le cahier des charges du mcanisme dappel dune procdure du noyau du


e
e
syst`me est le suivant :
e
le passage en mode superviseur doit tre coupl et restreint aux seuls appels
e
e
de procdures bien identies du syst`me,
e
e
e
le mode en vigueur (donc tout ou partie du registre dtat, au minimum
e
le bit S) doit tre mmoris lors de lappel au superviseur et rtabli lors
e
e
e
e
du retour : certaines procdures sont en eet susceptibles dtre appeles
e
e
e
indiremment par dautres procdures du syst`me en mode noyau ou par
e
e
e
du code utilisateur en mode restreint,
il faut assurer la liaison dynamique entre lappelante et la routine syst`me,
e
dont ladresse peut varier dun ordinateur ` lautre (par exemple parce
a
quils disposent de pilotes de priphriques dirents), qui reposait dans
e
e
e
notre syst`me simple sur une table de branchement,
e
il faut contraindre le branchement aux seules entres dnies dans la table.
e
e
Dans le cas contraire, un utilisateur malveillant pourrait court-circuiter les
vrications (de droit dacc`s) eectues dans le prologue de la routine
e
e
e
syst`me en se branchant directement sur le corps de celle-ci, voire appeler
e
sa propre routine cre de toutes pi`ces ` la place de la procdure syst`me.
ee
e
a
e
e
En rsum, il sagit dappeler un traitant dont ladresse est dnie implicitee
e
e
ment par un numro de service dans une table de vectorisation, de sauvegarder
e
le (bit S du) registre dtat en plus de ladresse de retour et de positionner S
e
a
` 1.

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Protection entre processus, notion de superviseur

571

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Nous pouvons pour cela rutiliser le mcanisme dinterruptions vectorises,


e
e
e
avec trois modications mineures : 1) lappel est dclench explicitement par
e
e
une instruction (swi) ; 2) le numro de vecteur est un param`tre de linstruce
e
tion dinterruption logicielle swi. Dans ce contexte dutilisation linstruction
dappel au superviseur est souvent nomme trap ; 3) le bit S est mis ` 1 lors du
e
a
basculement de dpart ; cest pourquoi le matriel doit eectuer une sauvegarde
e
e
de tout ou partie du registre dtat, au minimum le bit S.
e

2.3

Instructions privilgies
e e

Naturellement, lexcution de toute instruction autre que lappel supervie


seur et susceptible de modier le bit S doit tre interdite en mode utilisae
teur. Les instructions correspondantes sont dites privilgies et dclenchent
e e
e
un droutement de violation de privil`ge si on tente de les excuter en mode
e
e
e
restreint.
Toutes les instructions aectant un ou plusieurs boolens du registre dtat
e
e
autres que ceux formant le code condition de branchement (Z, N, C, V) sont
privilgies, ` commencer par linstruction de retour dinterruption.
e e a
Les registres dadresses dont nous parlons au paragraphe 2.7.1 utiliss pour
e
installer le mcanisme de protection sont en acc`s rserv. Leur criture, parfois
e
e e
e
e
leur lecture, depuis le mode utilisateur constitue une violation.
Cette restriction inclut le contrle de la prise en compte des interruptions
o
externes : en masquant les interruptions, un processus pourrait dsactiver le
e
mcanisme de partage de temps et monopoliser le processeur.
e

2.4

Sparation des piles, deux pointeurs de pile


e

Il subsiste un trou de scurit plus subtil : la sauvegarde du registre dtat et


e
e
e
de ladresse de retour seectuent en mode superviseur et ` ladresse donne par
a
e
le pointeur de pile. Or laectation du pointeur de pile, utilise dans la gestion
e
des appels de procdures, ne peut tre privilgie. Le syst`me ne dispose donc
e
e
e e
e
daucune garantie de validit de ladresse contenue dans le pointeur de pile.
e
Un dpart en interruption pourrait donc se faire avec une rfrence de pile
e
ee
incorrecte. Or juste apr`s le processeur est en mode superviseur.
e
Cest pourquoi on peut doter le processeur de deux pointeurs de pile, un
pour chaque mode dexcution, le pointeur de pile ` utiliser tant slectionn
e
a
e
e
e
par la valeur du bit S.
On alloue ` chaque processus une pile syst`me destine au seul code excut
a
e
e
e e
en mode noyau. Le tableau contenant la pile syst`me pourrait par exemple tre
e
e
un champ supplmentaire de la structure de donnes reprsentant les processus.
e
e
e
Le pointeur de pile syst`me est automatiquement activ avant la sauvee
e
garde lors du dpart en interruption, droutement sur erreur, ou appel supere
e
viseur. En mode superviseur, une instruction privilgie permet de manipuler
e e
le pointeur de pile utilisateur. En mode utilisateur, lacc`s au pointeur de pile
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

572

Gnralisation du mcanisme dinterruption et applications


e e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

syst`me est interdit. SP est le nom du pointeur de pile actif dans le mode
e
dexcution courant, les commandes dacc`s aux registres tiennent compte
e
e
du mode dexcution. Lappel de procdure, qui fait usage de SP, est ainsi
e
e
indpendant du mode dans lequel sexcutent les procdures.
e
e
e

2.5

Ralisation des appels au superviseur


e

Les programmes utilisateurs sont lis (dynamiquement) avec les bie


blioth`ques dinterface livres avec le syst`me, qui encapsulent et masquent le
e
e
e
mcanisme dappel superviseur. Pour accder ` un service syst`me, le procese
e
a
e
sus excute un appel de procdure normal, en mode utilisateur, en respectant
e
e
la convention dappel de procdure standard dempilement de ladresse de ree
tour et des param`tres dans la pile utilisateur. Puis la procdure appele, la
e
e
e
routine de biblioth`que dinterface, excute ` son tour une instruction dappel
e
e
a
superviseur avec le numro de service ` invoquer.
e
a
Le traitant dappel superviseur sauvegarde le contenu des registres du processeur dans la pile syst`me et eectue un saut au code correspondant ` la
e
a
primitive demande, via une table de branchement indexe par le numro de
e
e
e
service pass par la fonction de biblioth`que.
e
e
En utilisant ladresse contenue dans le pointeur de pile utilisateur, le traitant peut retrouver les param`tres passs par lappelante dans la pile utilisae
e
teur et les recopier dans la pile syst`me pour appeler la routine charge du
e
e
traitement.
La procdure noyau invoque vrie que le processus actif poss`de les droits
e
e e
e
ncessaires pour lopration considre, et que les param`tres appartiennent `
e
e
ee
e
a
la plage de valeurs lgales. Dans le cas dune lecture de chier, la routine
e
vriera entre autres que le propritaire du processus a le droit de lecture
e
e
sur le chier et que le tampon de rception (param`tres adresse et taille du
e
e
tampon) est bien inclus dans la zone de donnes aecte au processus actif.
e
e
Rciproquement, le code derreur retourn par la fonction noyau est pass
e
e
e
en sens inverse ` la fonction de biblioth`que qui a excut lappel superviseur.
a
e
e e
La convention dappel stipule gnralement que la valeur retourne par la
e e
e
fonction est stocke dans un registre du processeur. Dans ce cas, la fonction
e
syst`me peut tout simplement dposer un code de retour dans la zone de
e
e
sauvegarde des registres dans la pile syst`me. Cette valeur sera dsempile par
e
e
e
lpilogue du traitant dappel superviseur, qui restaure la valeur des registres,
e
et la fonction de biblioth`que la rcuprera dans le registre correspondant.
e
e
e

2.6

Protection gnralise
e e
e

Il existe des machines pourvues de plusieurs ( 2) anneaux ou niveaux de


protection (` ne pas confondre avec le niveau de prise en compte des intera
rutions externes), numrots de 0 ` p 1. Lanneau intrieur de numro 0
e e
a
e
e
correspond au mode noyau dpourvu de toute restriction. Les privil`ges ace
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

2. Protection entre processus, notion de superviseur

573

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

cords aux processus diminuent avec les numros danneaux et lanneau de


e
e
numro p 1 correspond au mode utilisateur dans lequel toutes les protections
e
sont actives.
e
Chaque rduction de niveau de protection met en jeu un mcanisme anae
e
logue ` lappel superviseur. Chaque anneau est dot de sa propre pile et la
a
e
recopie des param`tres entre niveaux dappels dirents est gre par matriel
e
e
ee
e
pour des raisons decacit.
e
Dans la description du syst`me dexploitation multics [Org72] (antrieur
e
e
a
` unix) on trouve une discussion de la raison dtre et de lutilisation des
e
anneaux de protection. Le syst`me dexploitation os/2 utilise galement ce
e
e
type de protection.
En dpit de leur intrt, les anneaux de protection sont quelque peu tombs
e
ee
e
en dsutude. Ils sont supports par les processeurs de la famille 80x86 dintel
e e
e
a
` partir du 80286.

2.7

Protection par dnition de zones mmoire


e
e

Nous dcrivons ici un mcanisme de protection par dcoupage de zones


e
e
e
mmoire et nous en donnons une extension simple, connue sous le nom de
e
translation dadresses.
2.7.1

Motivation, comportement et ralisation matrielle


e
e

Nous avons vu que chaque processus peut accder ` une zone texte, une
e
a
zone donnes et une zone pile en mmoire. Pour garantir quun processus
e
e
nacc`de pas aux zones de ses voisins, nous dotons le processeur de 6 ree
gistres supplmentaires. Ces registres seraient inclus dans une partie de calcul
e
dadresse CA qui ne gure pas sur la gure 22.1. On la situerait dans la zone
du registre TA. Ces 6 registres doivent contenir en fonctionnement normal les
adresses de dbut et de n des 3 zones de texte, donnes et pile du processus en
e
e
cours dexcution. Le bloc CA contient de plus 6 comparateurs entre ladresse
e
courante et ces 6 constantes (Cf. Figure 24.3).
Ces 6 registres sont mis ` jour lors de ltape dpilogue du traitant dintera
e
e
ruption qui assure la commutation de processus (Cf. Figure 23.6). Les valeurs
a
` y installer gurent dans le descripteur du processus.
La protection peut se faire ` dirents niveaux que nous allons aborder
a
e
successivement.
Un premier niveau de vrication consiste ` sassurer, ` la vole, lors de
e
a
a
e
chaque acc`s mmoire ` une addresse ad que :
e
e
a
Dbut texte ad Fin texte
e
Dbut donnes ad Fin donnes
e
e
e
Dbut pile ad Fin pile
e
Si aucune de ces conditions nest satisfaite (t=d=p=0), lacc`s mmoire
e
e
est annul (signal Acc`sMem mis ` 0) et une interruption est mise. Cest
e
e
a
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

574

Gnralisation du mcanisme dinterruption et applications


e e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

bus int

z-1

fZ

z+1

z-1
z+1

axb
x

dZ

z-1
z+1

z-1
z+1

Fig. 24.3 Comparateur simple entre une adresse et des dbuts (dZ) et n (fZ) de zones.
e
Les trois comparateurs sont cascads. Lentre S est le bit superviseur. En
e
e
eet la vrication est faite en mode Utilisateur seulement.
e

videmment une interruption interne parfaitement synchrone. Son traitement


e
donne lieu ` un traitant derreur dadressage ressemblant ` celui pour adresse
a
a
invalide ou mot non align.
e
Un deuxi`me niveau de vrication plus pousse peut tre install tenant
e
e
e
e
e
compte : du type dacc`s (lecture ou criture) ; du type dobjet accd (donne
e
e
e e
e
ou instruction), en fait il sagit plus exactement de linstant dacc`s dans le
e
graphe de contrle (phase acquisition du code opration ou phase autre) ;
o
e
du mode dexcution (superviseur ou utilisateur). Le circuit combinatoire de
e
vrication est un peu plus complexe dans ce cas.
e
2.7.2

Translation dadresses

Un autre mcanisme utile peut venir complter cette protection : il est


e
e
possible que deux processus soient en ralit lexcution du mme programme
e e
e
e
sur des donnes direntes. Que lon pense, par exemple, ` un compilateur trae
e
a
vaillant en multitche pour dirents utilisateurs programmeurs. La zone text
a
e
est alors partage et les zones data et bss sont dupliques. La translation des
e
e
adresses dans la zone text ne peut plus tre ralise lors du chargement puisque
e
e e
ces adresses, pour un mme code excut, rep`rent des endroits dirents.
e
e e
e
e
Une solution classique est de navoir que des programmes qui, virtuellement,
ne travaillent quavec des adresses mmoires qui ne sont pas absolues, mme si
e
e
lon parle de mode dadressage absolu. Les adresses dans le code machine sont,
en fait, des dplacements par rapport ` une adresse de dbut de zone. Ladresse
e
a
e
eective en mmoire dune donne est obtenue en ajoutant ce dplacement et
e
e
e
e
e
c
le contenu du registre Dbut donnes. Le dplacement reoit souvent le nom
e
dadresse logique et ladresse eective en mmoire celui dadresse physique.
e
Ce mcanisme reoit le nom de translation dadresses. Il suppose qu`
e
c
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Entres/sorties gres par interruption


e
e e

575

Rtrad

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Super/Util

Adresse logique

Adresse physique

Fig. 24.4 Matriel pour la translation dadresses


e

chaque acc`s ` la mmoire une addition soit faite entre ladresse logique mise
e a
e
e
par le processeur et le contenu dun registre de traduction Rtrad. Dans beaucoup de cas les donnes des programmes sexcutant en mode superviseur ne
e
e
sont pas soumises ` ce traitement (Cf. Figure 24.4).
a
En cumulant protection et translation dadresse, on a un vricateur dacc`s
e
e
pour chaque zone. Ces dirents vricateurs voient leurs rsultats cumuls par
e
e
e
e
un simple circuit qui donne un signal dautorisation dacc`s ` la mmoire et le
e a
e
dplacement correspondant si il y a un acc`s permis, un signal dinterruption
e
e
interne si aucun acc`s nest permis.
e

3.

Entres/sorties gres par interruption


e
e e

Rappelons le mcanisme, lmentaire et peu raliste, mis en place pour faire


e
ee
e
des entres/sorties (Cf. Chapitre 16) :
e
Le processeur, via le programme pilote de priphrique, crit une commande
e
e
e
dans le registre du coupleur puis entre dans une boucle logicielle dattente.
Cette boucle scrute le registre dtat du coupleur jusqu` ce que laction core
a
respondante soit termine.
e

Nous dcrivons dans cette partie comment il est possible dviter le


e
e
phnom`ne dattente active lors des entres/sorties en utilisant le mcanisme
e
e
e
e
des interruptions.

3.1

Interruptions en provenance des priphriques


e
e

La solution consiste ` utiliser la possibilit donne aux coupleurs dmettre


a
e
e
e
une interruption d`s quils ont termin une tche. Ils conservent un mot dtat
e
e
a
e
indiquant quils ont eectivement termin.
e
Cette interruption est, naturellement, scrute par le processeur. Mais il
e
sagit l` dune scrutation matrielle, faite par lautomate Partie Contrle du
a
e
o
processeur. Il ny a donc plus de programme de scrutation et le processeur
peut excuter des instructions tout en maintenant cette observation ncessaire
e
e
du l de requte dinterruption IRQ.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

576

Gnralisation du mcanisme dinterruption et applications


e e
e

pendule
Actif

Endormi

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

Prt
e

SWI appel au superviseur

pendule

IRQnE/S(coupleur)

Fig. 24.5 Les 3 tats dun processus et les causes de changement


e

Lorsque le processeur a dtect cette requte, le traitant peut lire le mot


e
e
e
dtat du coupleur. Mais une seule fois sut maintenant ` conrmer que cest
e
a
bien ce coupleur qui a mis la requte.
e
e

3.2

Gestion de processus avec tat endormi


e

Nous venons de voir que le processeur na plus besoin de scruter par programme le mot dtat dun coupleur lanc dans une action dentre/sortie.
e
e
e
Mais que peut-il faire dautre ? Un programme comportant une lecture dun
caract`re au clavier et le traitement de ce caract`re ne peut videmment pas
e
e
e
se poursuivre tant que le caract`re nest pas obtenu. On va donc dire que ce
e
programme, le processus qui lui est associ en fait, sendort ou se bloque.
e
Les tats des processus Aux deux tats Prt et Actif des processus, nous
e
e
e
ajoutons un tat Endormi (ou Bloqu). Ces 3 tats sont reprsents sur la
e
e
e
e
e
gure 24.5. Dtaillons les raisons qui font passer un processus dun tat ` un
e
e
a
autre :
1. Un processus Actif qui na pas dentres/sorties en cours peut tre mis
e
e
sur la le des Prts ` la suite dune interruption cause par la pendule
e a
e
priodique de lordinateur.
e
2. Un processus Prt, en tte de le, peut tre remis en tat Actif ` la suite
e
e
e
e
a
dune interruption cause par la pendule priodique de lordinateur.
e
e
Ces deux situations ne sont pas nouvelles par rapport au chapitre 23.
3. Si un processus Actif a besoin dune action dentre/sortie, il fait un appel
e
syst`me (par une instruction swi) en donnant toutes les informations
e
sur la nature de lentre/sortie souhaite. Le syst`me dexloitation lance
e
e
e
laction en crivant dans le coupleur les commandes ncessaires et met
e
e
le processus en tat Endormi.
e

4. Un processus Endormi sur attente du rsultat dune certaine action


e
dentre/sortie est remis dans la le des Prts par le gestionnaire de
e
e
processus d`s que linterruption de n dentre/sortie est mise par le
e
e
e
coupleur en question.

La gure 24.6 donne deux situations dentrelacement de quatre processus.


Dans la situation a, seul le processus P2 lance une action dentre/sortie et
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Entres/sorties gres par interruption


e
e e

577

a)
actif

prt
e

actif

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

P1
P2

prt
e

P3

actif

endormi

prt
e

P4

actif

prt
e

prt
e

actif

prt
e

actif

SWI

prt
e

prt
e

IRQnE/S

Priode de pendule
e

P1

b)

P2

endormi

P3

endormi

P4

Fig. 24.6 Deux situations dentrelacement de 4 processus

laction est faite rapidement par rapport ` la priode de la pendule. Dans la


a
e
situation b, P2 et P3 lancent des actions et le traitement de lentre/sortie de
e
P2 est un peu plus long.

3.3

Programmation des traitants dinterruption

Dans la procdure dattente du priphrique (Cf. Figure 24.7), le processus


e
e
e
actif excute un appel superviseur qui lui permet de se bloquer.
e
On trouve ainsi quatre traitants dans notre syst`me : le traitant dappel
e
superviseur qui eectue lcriture sur le coupleur, le traitant dappel supervie
seur de blocage (Cf. Figure 24.8), le traitant dinterruption de rveil (Cf. Fie
gure 24.9) et le traitant dinterruption de commutation du chapitre 23 qui g`re
e
les tranches de temps.
Noter que trois de ces traitants manipulent la structure de donnes
e
dcrivant les processus et quils doivent donc se protger les uns des autres pour
e
e
accder cette derni`re (Cf. Paragraphe 4. du chapitre 22) , do` le masquage
e
e
u
des interruptions au niveau du processeur pour garantir lexclusion mutuelle.

Procdure dattente La procdure attendre priphrique consiste ` ene


e
e
e
a
registrer le processus dans une variable (dormeur) du pilote de priphrique,
e
e
autoriser le coupleur ` mettre une interruption lorsque le priphrique devient
ae
e
e
prt et ` sendormir.
e
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

578

Gnralisation du mcanisme dinterruption et applications


e e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

attendre priphrique () {
e
e
dormeur = actif ;
proc[actif].endormir = VRAI ;
/* autoriser IT au niveau du coupleur */
*commande coupleur = AUTORISER IT ;
appel superviseur dormir ; }
Fig. 24.7 Procdure dattente
e

traitant dormir () {
empiler () ;
sauver () ;
masquer it () ;
/* la manipulation de la structure dcrivant les processus */
e
/* ncessite une exclusion mutuelle */
e
si proc[actif].endormir alors actif vers bloqu () ;
e
dmasquer it () ;
e
restaurer () ;
dpiler () ; }
e
actif vers bloqu () {
e
proc[actif].tat = BLOQUE ;
e
pr^t vers actif () ; }
e
Fig. 24.8 Traitant de blocage

Traitant de blocage Le traitant appel superviseur dormir eectue la


transition Actif vers Bloqu du processus qui lappelle. Dans un premier temps,
e
nous supposons que ce blocage est inconditionnel. Dans lalgorithme, le blocage
nest eectu que si la variable boolenne endormir du processus est vraie. La
e
e
raison dtre de ce test sera explique apr`s la prsentation du traitant de
e
e
e
e
rveil.
e
Traitant dinterruption de rveil La procdure de traitement
e
e
a
e
appel superviseur dormir bloque le processus jusqu` larrive dune
interruption de rveil indiquant que le priphrique est prt.
e
e
e
e
Le traitant de rveil acc`de au coupleur pour annuler lautorisation
e
e
dmettre une interruption (sans quoi linterruption serait prise en compte
e
a
` nouveau au retour du traitant, le priphrique nayant pas t servi), rveille
e
e
ee
e
le processus bloqu (dont lidentit est stocke dans la variable dormeur du
e
e
e
pilote) et le remet dans lensemble des processus prts. Plus tard, le processus
e
rveill redevient actif et eectue le transfert de donne avec le priphrique.
e
e
e
e
e
L` encore, nous considrons dans un premier temps que le rveil est toua
e
e
jours eectu par le traitant et nous verrons ensuite pourquoi celui-ci doit tre
e
e
conditionn par la variable endormir.
e

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

3. Entres/sorties gres par interruption


e
e e

579

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

traitant reveil () {
empiler () ;
masquer it () ;
/* la manipulation de la structure dcrivant les processus */
e
/* ncessite une exclusion mutuelle */
e
si proc[actif].tat == BLOQUE ;
e
alors
bloqu vers actif () ;
e
sinon
/* le processus na pas eu le temps de sendormir */
proc[actif].endormir = FAUX ;
dmasquer it () ;
e
dpiler () }
e
bloqu vers actif () {
e
proc[dormeur].tat = PRET ;
e
ajouter pr^t (dormeur) ; }
e
Fig. 24.9 Traitant dinterruption de rveil
e

En labsence de prcaution particuli`re, il existe un ala de fonctionnement


e
e
e
li au fait que le blocage du processus et lautorisation des interruptions au
e
niveau du coupleur ne sont pas eectues de mani`re atomique.
e
e
Dans le cas favorable, linterruption de rveil arrive apr`s que le processsus
e
e
se soit endormi et tout se passe correctement. Supposons ` prsent que la n
a e
de la tranche de temps alloue au processus actif se termine juste apr`s que
e
e
le processus a autoris le coupleur a linterrompre et juste avant dappeler
e
e
traitant dormir. Le processus se retrouve dans la le des prts.
Larrive de linterruption de rveil avant que le processus ne redevienne
e
e
actif pour excuter lappel superviseur de blocage pose deux probl`mes : le
e
e
signal de rveil est perdu et le processus ne se rveillera jamais apr`s stre
e
e
e e
endormi ; plus grave, le traitant de rveil, croyant le processus dj` endormi,
e
ea
va essayer de lajouter en queue de la le des prts ` laquelle le processus
e a
appartient dj` et laisser la le dans un tat incohrent.
ea
e
e
On trouve deux mani`res principales de rsoudre le probl`me. La premi`re
e
e
e
e
consiste ` masquer les interruptions au niveau du processeur avant dautoria
ser le coupleur ` en mettre, de telle sorte que lautorisation au niveau du
a
e
coupleur et le blocage du processus deviennent atomiques (les interruptions
tant dmasques au moment du rveil du nouveau processus actif au retour
e
e
e
e
du traitant de blocage). La seconde consiste ` mmoriser larrive ventuelle
a e
e e
du signal de rveil entre le moment o` le coupleur est autoris ` interrompre et
e
u
ea
celui o` le processus se bloque : le blocage du processus est annul si le signal
u
e
de rveil est arriv entre temps (endormi remis ` faux par le traitant de rveil).
e
e
a
e
Lutilisation de la variable de processus endormir illustre la deuxi`me
e
stratgie. Elle prsente lavantage de fonctionner galement dans le cas o` le
e
e
e
u

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

580

Gnralisation du mcanisme dinterruption et applications


e e
e

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

processus souhaiterait attendre plusieurs vnements et rpondre au premier


e e
e
qui se prsente (la primitive unix select correspond ` ce type de fonctionnalit).
e
a
e
Le probl`me de la le vide Lorsque le processus actif sendort, la
e
le des prts peut tre vide, tous les processus tant bloqus en attente
e
e
e
e
dentres/sorties et lordonnanceur na plus de processus candidat ` lire.
e
ae
Une stratgie consiste ` indiquer dans la variable actif labsence de procese
a
sus et ` excuter une instruction spciale qui stoppe le processeur (qui cesse
a e
e
dexcuter des instructions) jusqu` larrive dune interruption de rveil dun
e
a
e
e
processus (si le processeur ne peut tre stopp, il est toujours possible de lui
e
e
faire excuter une boucle de test de la le des prts). Le premier processus
e
e
rveill par une interruption rtablit le fonctionnement normal du processeur
e
e
e
et transite directement de ltat bloqu ` ltat actif.
e
ea e
e
Une autre mthode consiste ` modier la procdure retirer pr^t de
e
a
e
mani`re ` retourner, en labsence de processus prt, un processus gardien
e a
e
spcial qui excute une boucle innie contenant un appel superviseur dormir.
e
e
D`s quil devient actif, le gardien se bloque et perd ausitt le processeur.
e
o
Si aucun processus na t rveill depuis, le gardien est lu ` nouveau et se
ee e
e
e a
bloque derechef, et ainsi de suite jusqu` quun processus ait t rveill et
a
ee e
e
que la le des prts soit non vide. La tte de la le des prts est alors lue
e
e
e
e
immdiatement.
e

4.

Pour aller plus loin

Nous avons, dans la partie VI de ce livre, prsent la notion de processus et


e
e
montr comment grer direntes activits sexcutant en pseudo paralllisme
e
e
e
e
e
e
sur un seul processeur.
Dans un syst`me dexploitation la notion de processus est encore plus large :
e
un utilisateur lambda peut crer lui-mme des processus qui peuvent changer
e
e
e
des informations et se synchroniser de direntes faons. On parle alors de
e
c
programmation concurrente.
Pour avoir un expos complet des notions de synchronisation entre procese
sus et trouver des complments dinformation sur la protection, le lecteur peut
e
consulter par exemple un des ouvrages suivants : [Kra85, Bac90, Tan94, SG96].

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
P. chite
F. Amb cture
P. Lagn lard, s Lo
Sic ier
J.- gici
ard , F C. ell
, P . M Fe es e
h.
ara rna t M
Wa ni nd
nch ez, atr
ei
ille
elle
i,
s

Index

chantillonnage, 135, 394


e
criture (acc`s mmoire), 19, 213, 394, 412
e
e e
dition de liens, 446
e
dition de texte, 25, 491
e
mulation, 297, 303, 452
e
tat, 16
e
dun circuit squentiel, 223
e
dun processus, 543, 576
dune machine squentielle (autoe
mate), 109
nal, 112
initial, 25, 109, 223
tiquette, 459
e
de transition, 109
du langage dassemblage, 306
absolu (adressage), 280
abstraction boolenne, 153
e
acc`s
e
alatoire, 214
e
direct ` la mmoire, 422
a
e
squentiel, 214, 477
e
acc`s mmoire, 211, 212
e
e
en mode page, quartet, 219
en mode rafale, 212
accumulateur, 20, 279, 363
action, 89
atomique, 539
actionneur, 23
activit, 541
e
adressage
absolu, 280, 292, 363
direct, 21, 295
immdiat, 21, 363
e
indirect, 280
mode d , 280
relatif, 280, 376
adresse, 19, 58, 211, 278
dcodage d, 395, 399
e
logique, 477, 574
physique, 476, 574
aectation, 19, 87
alg`bre de Boole, 34
e
algorithme, 20, 84, 223

algorithmique cble, 179, 224


a e
alignement mmoire, 93, 310, 399
e
allocation, 323
dynamique, 99
mmoire, 496
e
statique, 101
unit d, 481
e
amorce du syst`me, 494, 559
e
amplication, 153, 392
analogique, 14, 57
appel
de procdure, 294, 322, 343
e
fonction, action, procdure, 89
e
syst`me (superviseur), 565
e
architecture, 13
de Von Neumann, 19, 283
argument, 89
ASCII, 73, 305, 408
ASIC, 164
assembleur, 22, 304, 306, 310
asynchrone, 131
attente active, 410, 575
automate, 19, 109, 223, 362
complet, dterministe, ractif, 110
e
e
de contrle, 362
o
interprt, 118
ee
synth`se logicielle, 115
e
synth`se matrielle, 223
e
e

banc (registres), 221, 251, 302, 346


barette, 215, 396
bascule, 205, 223, 253, 413
D, 206, 265, 378
ma
tre-esclave, 206
RS, 200, 200, 415
basculement, 526, 527
base de numration, 59
e
BDD, 43, 185
biblioth`que, 27, 325, 388, 458, 572
e
binaire, 15, 61
bistable, 162, 200
bit, 14, 57, 151
bloc (dun langage), 321
bo
tier, 215, 392

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

582

INDEX

spare, 343, 445, 453


e e
complment
e
a
` deux, 67
boolen, 34
e
compte-rendu, 252, 360
compteur, 248
dassemblage, 310
ordinal, 20
programme, 20, 280
conception
de circuit combinatoire, 173
de circuit squentiel, 224, 251
e
logique, 180
concurrent, 538, 580
conducteur, 146
continu, 14
conversion, 15, 57, 98
coupleur, 24, 410
de priphrique, 408
e
e
registres du, 410
cration de chier, 489
e
cylindre, 437

Ar
P. chite
F. Amb cture
P. Lagn lard, s Lo
Sic ier
J.- gici
ard , F C. ell
, P . M Fe es e
h.
ara rna t M
Wa ni nd
nch ez, atr
ei
ille
elle
i,
s

bogue, 17
boolen, 14, 57
e
Boole (alg`bre de), 33
e
boutiste (gros, petit), 92
branchement, 20, 280
Bresenham (algorithme de), 121, 262
BSS (zone), 306, 465, 496, 548, 570
bus, 21, 160, 189, 255
adresse, 21, 212
dconnexion de , 395
e
donnes, 21, 212
e
mmoire, 212, 391
e
multiplex, 394
e

canal dentres/sorties, 425


e
CAO, 26
capteur, 23
caract`re, 15, 73, 84
e
cha
nage, 99
champ
dun n-uplet, 85
du codage dune instruction, 21, 283
chargeur, 25, 101, 300, 311, 494, 546
chemin critique, 47, 174
chronogramme, 135
circuit, 23, 46
combinatoire, 156, 175, 223
dentre/sortie, 407
e
squentiel, 156, 251
e
synchrone/asynchrone, 224
CISC, 22
cl, 477
e
CMOS, 145, 155, 208
codage, 14
binaire, 57
compact, 233
en complment ` deux, 67
e
a
un parmi n, 59, 233
code, 58
opration, 21, 278, 362
e
translatable, 307, 446
cofacteurs, 40
combinatoire, 175
commande
interpr`te de , 493
e
signal de , 252, 360
commutation de processus, 543
compatibilit, 22
e
ascendante, 303, 452
de types, 87
compilateur, 16
compilation, 27, 96, 297, 304, 447
dynamique, 452

dcalage, 71, 287


e
dcodage dadresse, 395, 399, 411
e
dcodeur, 181
e
dlai, 138, 174, 201, 223
e
dmarrage du syst`me, 493
e
e
drfrenage, 86
eee c
dsassembleur, 311
e
dterministe (machine squentielle), 111
e
e
DATA (zone), 306, 496, 548, 570
DCB, 60, 187
De Morgan, 36
descripteur
de chier, 484
de processus, 547
digital, 14, 57, 151
directive, 304
de cadrage mmoire, 310
e
de rservation mmoire, 309
e
e
discret, 14
disque, 102, 433, 475
DMA, 395, 422
domaine dune fonction, 36
donne, 16, 212, 305, 323, 448
e
duale (fonction), 37
dure de vie, 306
e
dune variable, 323
et partage de mmoire, 328
e
dynamique
allocation , 99
lien, 335

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

INDEX

583

point de mmorisation, 163


e

hexadcimal, 61
e
horloge, 25, 134, 224
i-node, 489
icnique, 511
o
implantation contigu/disperse, 479
e
e
indicateur, 66, 523
de dbordement (V), 70, 190, 293
e
de rsultat ngatif (N), 293
e
e
de rsultat nul (Z), 293
e
de retenue (C), 64, 190, 293
indirection et passage de param`tre, 331
e
information, 13
inhib, 530
e
initialisation, 209, 228
instruction, 16, 279
invalide, 300
jeu d, 277, 363
pseudo- , 309
interface, 15, 407, 453, 511
interpr`te de commandes, 25, 493
e
interprtation, 26, 297, 304, 448
e
du langage machine, 277, 359, 525
interruption, 289, 518, 519, 527, 542, 561
invariant, 96
inverseur, 153
isolant, 146

Ar
P. chite
F. Amb cture
P. Lagn lard, s Lo
Sic ier
J.- gici
ard , F C. ell
, P . M Fe es e
h.
ara rna t M
Wa ni nd
nch ez, atr
ei
ille
elle
i,
s

emprunt, 62
encodeur, 181
de priorit, 567
e
entier
naturel, 59, 84
relatif, 66, 84
entre, 407
e
dun circuit, 152, 173
dune machine squentielle, 109
e
entres/sorties, 407, 575
e
excuter, 20, 253, 359
e
exception (voir interruption), 289
exposant, 74
expression, 86
algbrique, 39, 186, 233
e
conditionnelle, 86
rguli`re, 113
e
e

fentre de registres, 346


e
fermeture de chier, 503
Fibonacci (suite de), 329
chier, 25, 102, 303, 428, 449, 476, 493
FIFO, 103
le
des processus, 547
type abstrait, 103
ot de donnes, 224, 241, 359
e
fonction, 89, 328
boolenne gnrale, 37
e
e e
combinatoire, 173
de sortie, 111, 225
de transition, 111, 225
domaine de , 36
phi-boolenne, 38
e
formatage
logique, 488
physique, 438, 487
forme
algbrique, 39, 180, 233
e
de Lagrange, 40
intermdiaire, 304, 449
e
polynmiale, 39
o
fp (pointeur de base denvironnement),
335
FPGA, 169
front, 131, 156, 203, 415
gestion de chiers (voir syst`me), 25
e
graphe
dautomate, 110, 223, 253
de contrle, 251, 362, 525, 530, 567
o
de dcision binaire, 43, 185
e

jeu (dinstructions), 21
Karnaugh (tableau de), 41

Lagrange (forme de), 40


lancement, 22
lanceur, 25, 494, 546
langage, 15
a
` structure de blocs, 321
dassemblage, 22, 96, 304
de commandes, 493
de haut/bas niveau, 27, 83
interprt, 493
ee
machine, 21, 277, 278
rgulier, rationnel, 112
e
lecture (acc`s mmoire), 19, 213, 394, 412
e
e
lexique, 84
lien dynamique/statique, 335
LIFO, 103
littral, 39
e
locale (variable), 89
logiciel, 13
mmoire, 19, 90, 184, 211, 278, 391
e
acc`s alatoire, 214
e
e
acc`s direct ` la, 422
e
a

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

584

INDEX

NMOS, 155, 567


nom, 14, 84, 323, 474
numration, 59
e
numrique, 14, 151
e
octal, 61
octet, 15, 90
oprande, 21
e
oprateur, 86, 255, 371
e
ordinateur, 13, 387
ordonnanceur, 544
organigramme, 88
ouverture de chier, 489, 503

Ar
P. chite
F. Amb cture
P. Lagn lard, s Lo
Sic ier
J.- gici
ard , F C. ell
, P . M Fe es e
h.
ara rna t M
Wa ni nd
nch ez, atr
ei
ille
elle
i,
s

alignement, 93, 399


dbit de, 216
e
morte, 24, 169, 184
point mmoire, 214
e
principale, 23, 278
secondaire, 23, 473
vido, 222
e
vive, 24, 212, 305, 395
mmorisation, 23
e
machine
a
` 0, 1, 2 ou 3 rfrences, 287, 315
ee
algorithmique, 223
de Turing, 18
de Von Neumann, 19, 278
langage, 304
parall`le, 19
e
machine squentielle
e
avec actions, 88, 118
de Mealy, 110, 225
de Moore, 109, 225
macro-assembleur, macros, 305
mantisse, 74
masqu, 530
e
matriel, 13
e
MC68000, 237, 311, 345, 380, 414, 498
MEM (modlisation mmoire), 90, 278,
e
e
322
microaction, 253, 365
microprogrammation, 236, 302
microsyst`mes, 23
e
mnmonique, 304, 307
e
mod`le de calcul, 17
e
mode
dadressage, 280, 363
utilisateur, superviseur, 399, 569
module, 457
monme
o
canonique, 39
premier, 48
monal, 40
MOS, 151, 218
mot, 15
dtat du processeur, 292, 361, 522
e
dextension, 289, 380
mmoire, 87, 211, 279, 361
e
multi-utilisateurs, 498, 515, 569
multics, 573
multiplexeur, 125, 185, 255
multitches, 460, 515, 574
a
naturel, 59, 84
NIL, 86
niveau logique, 131, 152

priode, 536
e
dhorloge, 25, 134, 225, 260, 368
priphrique, 24, 387, 407, 427
e
e
intelligent, 425
paralllisme, 255, 261, 371, 580
e
param`tre
e
donne, rsultat, 89, 331
e e
formel, 455
formel, eectif, 89
paramtrisation, 371, 525
e
partie
contrle, 224, 251, 257, 360
o
oprative, 224, 251, 253, 279, 360
e
passage (de param`tre)
e
par rfrence, 331
ee
par valeur, 331
pendule, 25, 531
phi-boolenne (fonction), 38
e
pid, 547
pile, 295, 327, 333, 448, 509, 522, 546
syst`me ` lexcution, 338
e
a
e
type abstrait, 103
pilote de priphrique, 27, 427, 474
e
e
pipeline, 247, 359
piste, 436, 487
PLA, PLD, 169
poids (fort, faible), 60, 92, 396
poigne de mains, 129, 258, 392, 410, 530
e
point dentre, 344, 465
e
pointeur, 85
dinstruction, 20
de base denvironnement, 335
de pile, 317, 380, 522, 546
reprsentation, 97
e
utilisation, 99
port (dentre, de sortie), 412
e
porte des noms, 89, 456
e
portabilit, 304
e
porte

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

INDEX

585

robot, 23
ROM, 184, 214
rupture de squence, 20, 291
e
slection, 252
e
de bo
tier, 396
mmoire, 212, 360, 395
e
squence cha ee, 99
e
n
squenceur, 27, 362
e
saut, 20, 291
a
` un sous-programme, 294, 343
secteur, 436
semi-conducteur, 146
SGBD, 474
SGF, 473, 474
Shannon, 40
signal
de commande, 252, 360
logique, physique, 134
signe, 66
simulation, 26
somme boolenne, 34
e
sortie, 407
dun circuit, 151, 173
dune machine squentielle, 109
e
fonction de, 225
sp (pointeur de pile), 317, 350
sparc, 313, 346, 362, 378, 403, 447, 498,
529, 568
statique
allocation , 101
lien, 335
point mmoire, 162, 214
e
superviseur, 565
suppression de chier, 489
synchrone, 131, 224
synchronisation, 257
dentres/sorties, 409
e
de circuits squentiels, 228
e
par poigne de mains, 129, 258, 392,
e
410, 530
Partie Contrle, Partie Oprative,
o
e
259
synth`se
e
cble/microprogramme, 224
a e
e
dautomate, 230
logique, 180
Syracuse (suite de), 243, 354
syst`me
e
a
` lexcution, 323
e
dexploitation, 27, 388
dmarrage, 493
e
de gestion de chiers, 25, 473, 474

Ar
P. chite
F. Amb cture
P. Lagn lard, s Lo
Sic ier
J.- gici
ard , F C. ell
, P . M Fe es e
h.
ara rna t M
Wa ni nd
nch ez, atr
ei
ille
elle
i,
s

tage logique de, 177


e
complexe, 186
de base, 176
logique, 158
trois tats, 160, 256, 392, 411
e
privilgi, 571
e e
procdure, 302, 328
e
processeur, 19, 359, 391
dentres/sorties, 425
e
processus, 488, 520, 541, 542, 576, 580
produit boolen, 34
e
programmable, 25
programmateur, 27
programmation concurrente, 580
programme, 16, 83, 305, 448
protocole poigne de mains, 129, 258, 392,
e
410, 530
pseudo-instructions, 309
puce, 23, 156
ractivit dune machine squentielle, 111
e
e
e
ralisation, 17
e
cble, microprogramme, 231
a e
e
rel, 74
e
rfrence (passage de param`tre par), 331
ee
e
rfrences (machine ` n), 287, 317
ee
a
rgulier (langage), 112
e
rinitialisation, 25
e
rpertoire, 487489, 507
e
rseau, 24, 92
e
rafale
acc`s mmoire en mode, 219
e
e
rafra
chissement, 218
RAM, 214
rationnel (langage), 112
registre, 20, 211, 251, 278, 362, 521
accumulateur, 279, 363
adresse, 278, 362, 522
banc de , 221, 251, 302, 346
dinstruction, 20, 361, 522
donne, 278, 362
e
fentre de , 346
e
relatif, 66, 84
report, 62
reprsentation, 14
e
des donnes, 90
e
des grandeurs, 57
des traitements, 83, 109
digitale/analogique, 57
en extension, en comprhension, 39
e
reset, 25, 529
retenue, 62, 64, 189
RISC, 22, 302

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

586

INDEX

squentiel, 19
e

virgule ottante, 22, 74


Von Neumann (machine de), 19, 283

tche, 541
a
table de vrit, 36, 181, 234
e e
table des cha
nes, 466
table des symboles, 464
tableau (parcours de), 96
taille(), 92
tas, 101, 338
temporaires, 342
temps
dacc`s, 213
e
de cycle, 265, 368
de rponse, 156, 173
e
logique, continu, discret, 129
tester, 17
TEXT (zone), 306, 496, 548, 570
traduction, 25, 445
traitant dinterruption, 527, 542, 562
traitement, 24
transistor, 23, 149
transition, 258, 368
dune machine squentielle, 109
e
fonction de, 225, 232
translation dadresse, 307, 446, 573
TTL, 156
Turing (machine de), 18
type, 84
compatibilit de , 87
e

zone

Ar
P. chite
F. Amb cture
P. Lagn lard, s Lo
Sic ier
J.- gici
ard , F C. ell
, P . M Fe es e
h.
ara rna t M
Wa ni nd
nch ez, atr
ei
ille
elle
i,
s

de donnes (DATA, BSS), 304, 496,


e
548, 570
de programme (TEXT), 306, 496,
548, 570
des instructions (TEXT), 304

UAL, 20, 192, 239, 252, 359


un parmi n, 59, 233
unit
e
adressable, 90
arithmtique et logique, 192, 239,
e
252, 359
centrale, 19
dallocation, 481
de calcul, 253, 278
unix, 305, 355, 388, 428, 480, 493, 497,
507, 558
utilisateur, 409, 427, 474, 495, 569
valeur, 14
absolue, 66
passage par , 331
variable, 15, 84
boolenne, 36, 232
e
dtat, 233
e
locale, 89
temporaire, 342
vecteur de bits, 15, 58, 151
verrou, 200, 203, 394
vie des programmes, 101, 445

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Ar
P. chite
F. Amb cture
P. Lagn lard, s Lo
Sic ier
J.- gici
ard , F C. ell
, P . M Fe es e
h.
ara rna t M
Wa ni nd
nch ez, atr
ei
ille
elle
i,
s

Bibliographie
[Aa91]
[AL78]
[Bac90]

[BB83]
[BB88]
[Ben91]
[BGN63]

H. Abelson et all : Revised Report on the Algorithmic Language Scheme.


W. Clinger and J. Rees, 1991. 2.2.2
Rodnay Zaks Austin Lesea : Techniques dinterface aux microprocesseurs.
Sybex, 1978. 2.1.1
M.J. Bach : Conception du syst`me UNIX (traduction franaise de The
e
c
design of the Unix operating system, 1986). Ed. Masson, Ed Prentice-Hall,
1990. 4.

P. Berlioux et Ph. Bizard : Algorithmique construction, preuve et


valuation des programmes. Dunod, 1983. 2.4.2, 10.22
e
P. Berlioux et Ph. Bizard : Algorithmique structures de donnes et algoe
rithmes de recherche. Dunod, 1988. 5.
Cl. Benzaken : Syst`mes formels Introduction ` la logique et ` la thorie
e
a
a
e
des langages. Masson, 1991. 1.1.2, 1.2

A.W. Burks, H.H. Goldstine et J. Von Neumann : Preliminary discussion


of the logical design of an electronic computing instrument, (article de 1946),
dans John von Neumann, Collected works, volume V. Ed. Pergamon Press,
1963. 2.2, 1.1

[BRWSV87] R. Brayton, R. Rudell, A. Wang et A. Sangiovanni-Vincentelli : Mis :


a multiple-level logic optimization system. IEEE Transaction on CAD, pages
10621081, novembre 1987. 4.1
[Bry86]

R.E. Bryant : Graph-based algorithms for boolean functions manipulation.


IEEE Transaction on Computers, (8):677692, aot 1986. 3.3, 3.3.2
u

[CDLS86]

M. Cand, E. Demoulin, J.L. Lardy et P. Senn : Conception des circuits


intgrs M.O.S. Elments de base - perspective. Eyrolles, collection technique
e e
e
et scientique des tlcommunications, 1986. 2.2.4, 3.2
ee

[CGV80]

P.-Y. Cunin, M. Griffith et J. Voiron : Comprendre la compilation. Springer Verlag, 1980. 2.4.2, 1.1.1, 2.2.1, 1.2

[CW96]
[GDS98]

J. P. Colinge et F. Van De Wiele : Physique des dispositifs semi-conducteurs.


Editions De Boek Universit, Paris, Bruxelles, 1996. 1.3
e
N. Garcia, A. Damask et S. Schwarz : Physics for Computer Science
Students (with emphasis on atomic and semi-conductor physics). Editions
Springer-Verlag, 1991, 1998. 1.3

[Gir95]

J.-Y. Girard : La machine de Turing. Seuil, 1995. 2.1

[HP94]

J. Hennessy et D. Patterson : Organisation et conception des ordinateurs.


Linterface matriel/logiciel. Ed. Dunod, 1994. 3.3, 14
e

[Ifr94]

G. Ifrah : Lhistoire universelle des chires : lintelligence des hommes


raconte par les nombres et le calcul (2 tomes). Robert Laont, collection
e
Bouquins, 1994. 2.1.1

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

588

BIBLIOGRAPHIE

Intel : The complete guide to MMX technology. McGraw-Hill, 1997. 1.4.1

[Kar53]

M. Karnaugh : The map method for synthesis of combinational logic. Circuits


AIEE Transactions on Communications and Electronics, pages 593599, 1953.
4.

[KB90]

R.E. Bryant K. Brace, R. Rudell : Ecient implementation of a bdd package.


Proceedings of the 27th ACM/IEEE Design Automation Conference IEEE0738,
1990. 4.3

[Kra85]

S. Krakowiak : Principes des syst`mes dexploitation des ordinateurs. Dunod


e
Informatique, 1985. 4.2, 4.

[Kun65]

Jean Kuntzmann : Alg`bre de Boole. Dunod, 1965. 4.


e

[Kun67]

Jean Kuntzmann : Slection parmi des communications prsentes au colloque


e
e
e
consacr ` lAlg`bre de Boole. Dunod, 1967. 4.
ea
e
`
J. Lassegue : Turing. Les belles lettres - collection Figures du savoir, 1998.
2.1

Ar
chi
P.
tec
Am tu
F.
bla res
La
P.
gn rd, Log
Sic ier
J.- icie
ard , F C.
. M Fe lles e
,P
ara rna t M
h.
Wa ni nde at
ri
e
ille nch z,
elle
i,
s

[Int97]

[Las98]
[Liv78]

C. Livercy : Thorie des programmes - schmas, preuves, smantique. Dunod,


e
e
e
1978. 2.

[Mul89]

J.M. Muller :
Arithmtique des ordinateurs. oprateurs et fonctions
e
e
lmentaires. Masson, collection Etudes et Recherches en Informatique, 1989.
ee
2.2

[Org72]

J.E. Organick : The MULTICS system : an examination of its structure. The


MIT Press, Cambridge MA, 1972. 2.6

[SFLM93]

P.-C. Scholl, M.-C. Fauvet, F. Lagnier et F. Maraninchi : Cours dinformatique : langages et programmation. Masson, 1993. 1., 1.4, 2.1, E8.9

[SG96]

A. Silberschatz et P. B. Galvin : Principes des syst`mes dexploitation.


e
Addison-Wesley, 1996. 4.

[SL96]

Andr Seznec et Fabien Lloansi : Etude des architectures des microprocese


seurs mips r10000, ultrasparc et pentiumpro. Publication interne 1024, INRIA,
Programme 1 - Architecture parall`les, bases de donnes, rseaux et syst`mes
e
e
e
e
distribus Projet CAPS, mai 1996. 1.4.4
e

[Tan94]

A. Tanenbaum : Syst`mes dexploitation : syst`mes centraliss, syst`mes dise


e
e
e
tribus. InterEditions, 1994. 4.
e

[Tur54]

A. M. Turing : Solvable and unsolvable problems. Science News, 31:723,


1954. 2.1

[WM94]

R. Wilhelm et D. Maurer : Les compilateurs : thorie, construction,


e
gnration. Masson, 1994. 1.1.1, 2.2.1, 1.2
e e

[Zak80]

Rodnay Zaks : Applications du 6502. Sybex, 1980. 2.1.1

Copyright 2006 TIMA EDITIONS


Premire dition : Dunod 2000

Вам также может понравиться