Architectures Logicielles et Mat´rielles e

P. Amblard, J.-C. Fernandez, F. Lagnier, F. Maraninchi, P. Sicard, Ph. Waille

2

IV

IV

Table des mati`res e
Introduction 1 Qu’est-ce qu’un ordinateur ? 1. Notion d’information . . . . . . . . . . . 2. L’ordinateur : une machine qui ex´cute . e 3. O` sont le mat´riel et le logiciel ? . . . . u e 4. Fonctionnalit´s des ordinateurs . . . . . e 5. Plan du livre . . . . . . . . . . . . . . . 1 5 . 5 . 9 . 14 . 17 . 20

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

I

Outils de base de l’algorithmique logicielle et mat´rielle e
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23
25 26 28 31 38 46 49 49 51 58 64 65 66 67 75 76 82 90 91 95 96

2 Alg`bre de Boole et fonctions bool´ennes e e 1. Alg`bre de Boole . . . . . . . . . . . . . . . . . . . . . . e 2. Fonctions bool´ennes . . . . . . . . . . . . . . . . . . . . e 3. Repr´sentation des fonctions bool´ennes . . . . . . . . . e e 4. Manipulation de repr´sentations de fonctions bool´ennes e e 5. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Repr´sentation des grandeurs e 1. Notion de codage d’informations . . . . 2. Les naturels . . . . . . . . . . . . . . . . 3. Les relatifs . . . . . . . . . . . . . . . . 4. Lien entre l’arithm´tique et les bool´ens e e 5. Les caract`res . . . . . . . . . . . . . . . e 6. Les nombres r´els, la virgule flottante . e 7. Exercices . . . . . . . . . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

4 Repr´sentation des traitements et des donn´es : langage d’actions e e 1. Un langage d’actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Repr´sentation des donn´es en m´moire . . . . . . . . . . . . . . . . . e e e 3. Traduction des affectations g´n´rales en acc`s au tableau MEM . . . . e e e 4. Utilisation des pointeurs et gestion dynamique de la m´moire . . . . . e 5. Piles, files et traitements associ´s . . . . . . . . . . . . . . . . . . . . . e 6. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

5 Repr´sentation des traitements et des donn´es : e e machines s´quentielles e 101 1. Machines s´quentielles simples . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 e 2. Machines s´quentielles avec actions . . . . . . . . . . . . . . . . . . . . . . . . 109 e

VI

Table des mati`res e

6 Temps, donn´es temporelles et synchronisation e 1. Interface entre un dispositif informatique et un environnement physique 2. Signaux logiques et repr´sentation par des chronogrammes . . . . . . . . e 3. Probl`mes de synchronisation . . . . . . . . . . . . . . . . . . . . . . . . e 4. Un exemple : la machine ` caf´ . . . . . . . . . . . . . . . . . . . . . . . a e

. . . .

. . . .

. . . .

121 122 126 127 133

II

Techniques de l’algorithmique mat´rielle e
l’´lectron aux dispositifs logiques e Ph´nom`nes ` l’´chelle atomique . . e e a e Ph´nom`nes ` l’´chelle ´lectrique . . e e a e e Ph´nom`nes ` l’´chelle logique . . . e e a e Circuits logiques . . . . . . . . . . . Fabrication des dispositifs . . . . . . Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

135
. . . . . . 137 137 140 143 148 156 162 165 166 173 178 186 188 191 192 203 207 210 215 216 222 233 240

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

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

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

9 El´ments de m´morisation e e 1. Points de m´morisation de bits : bascules et registres . . . . . . . e 2. La m´moire : organisation matricielle des points de m´morisation e e 3. R´alisation des m´moires statiques . . . . . . . . . . . . . . . . . e e 4. Optimisations et techniques particuli`res . . . . . . . . . . . . . . e 10 Circuits s´quentiels e 1. Notion de circuit s´quentiel . . . . . . . . . . . . . . . . . . e 2. Synth`se des automates d´crits par leur graphe . . . . . . . e e 3. Synth`se des circuits s´quentiels par flots de donn´es . . . e e e 4. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Conception de circuits s´quentiels par e contrˆle et des op´rations o e 1. Principe g´n´ral . . . . . . . . . . . . e e 2. Notion de partie op´rative type . . . . e 3. Partie contrˆle . . . . . . . . . . . . . o 4. Etudes de cas . . . . . . . . . . . . . . 5. Exercices . . . . . . . . . . . . . . . . s´paration du e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

243 244 245 249 253 263

III

Techniques de l’algorithmique logicielle
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

267
. . . . . 269 270 296 302 302 308

12 Le langage machine et le langage d’assemblage 1. Le langage machine . . . . . . . . . . . . . . . . . . . . . 2. Le langage d’assemblage . . . . . . . . . . . . . . . . . . 3. Traduction du langage d’assemblage en langage machine 4. Un exemple de programme . . . . . . . . . . . . . . . . 5. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . .

Table des mati`res e

VII

13 Traduction des langages ` structure de blocs en langage d’assemblage a 1. Cas des programmes ` un seul bloc . . . . . . . . . . . . . . . . . . . . . . . a 2. Cas des programmes ` plusieurs blocs . . . . . . . . . . . . . . . . . . . . . a 3. Traduction en langage d’assemblage : solutions globales . . . . . . . . . . . 4. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .

313 314 319 334 343

IV

A la charni`re du logiciel et du mat´riel... e e
machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

349
. . . . . . 351 352 355 356 360 364 367

14 Le processeur : l’interpr`te cˆbl´ du langage e a e 1. Les principes de r´alisation . . . . . . . . . . e 2. Exemple : une machine ` 5 instructions . . . a 3. Une r´alisation du processeur . . . . . . . . . e 4. Critique et am´lioration de la solution . . . . e 5. Extensions du processeur . . . . . . . . . . . 6. Exercices . . . . . . . . . . . . . . . . . . . .

V

Architecture d’un syst`me mat´riel e e et logiciel simple

375
377 381 381 385 389 395 397 397 399 400 402 408 409 415 417 418 419 423 432

Un syst`me mat´riel et logiciel simple e e 15 Relations entre un processeur et de la m´moire e 1. Le bus m´moire . . . . . . . . . . . . . . . . . . . e 2. Utilisation de plusieurs circuits de m´moire . . . e 3. Acc`s ` des donn´es de tailles diff´rentes . . . . . e a e e 4. Exercices . . . . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

16 Circuits d’entr´es/sorties e 1. Notion d’entr´es/sorties . . . . . . . . . . . . . . . . . e 2. Synchronisation entre le processeur et un p´riph´rique e e 3. Connexion d’organes p´riph´riques . . . . . . . . . . . e e 4. Programmation d’une sortie . . . . . . . . . . . . . . . 5. Programmation d’une entr´e . . . . . . . . . . . . . . e 6. Optimisation des entr´es/sorties group´es . . . . . . . e e 7. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . 17 Pilotes de p´riph´riques e e 1. Structure d’un pilote de p´riph´rique e e 2. Pilote pour un clavier . . . . . . . . 3. Pilote pour un disque . . . . . . . . 4. Pour aller plus loin... . . . . . . . . . 18 Vie 1. 2. 3.

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

des programmes 435 Interpr´tation et compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 e Compilation s´par´e et code translatable . . . . . . . . . . . . . . . . . . . . . 442 e e Format des fichiers objets translatables et ´dition de liens . . . . . . . . . . . 454 e 463 465 466 470 476

19 Syst`me de gestion de fichiers e 1. Situation du syst`me de gestion de fichiers . . . . . . . . . . e 2. Structure des donn´es et influence sur l’implantation . . . . e 3. Implantation dispers´e sur un disque . . . . . . . . . . . . . e 4. Noms externes et autres informations attach´es aux fichiers e

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

VIII

Table des mati`res e

5.

Etude de quelques fonctions du syst`me de gestion de fichiers . . . . . . . . . 477 e 483 484 485 495 501

20 D´marrage du syst`me, langage de commandes et interpr`te e e e 1. D´marrage du syst`me . . . . . . . . . . . . . . . . . . . . . . . . e e 2. M´canisme de base : le chargeur/lanceur . . . . . . . . . . . . . . e 3. Programmation de l’interpr`te de commandes . . . . . . . . . . . e 4. Fonctions ´volu´es des interpr`tes de commandes . . . . . . . . . e e e

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

VI

Architecture des syst`mes mat´riels e e et logiciels complexes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

503
. . . . 505 505 507 508 510 511 511 515 521 528 530 531 531 536 539 546 550 551 552 559 565 570 571 577

21 Motivations pour une plus grande complexit´ e 1. Qu’appelle-t-on syst`me complexe ? . . . . . . . . . . . . . . e 2. Scrutation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. M´canisme d’interruption : d´finition et types d’utilisations e e 4. Plan de la suite . . . . . . . . . . . . . . . . . . . . . . . . . 22 Le m´canisme d’interruption e 1. Architecture d’un processeur pour la multiprogrammation . 2. Introduction d’un m´canisme de scrutation ´l´mentaire . . . e ee 3. Un exemple d´taill´ d’utilisation : mise ` jour de la pendule e e a 4. Notion de concurrence et d’atomicit´ des op´rations . . . . e e 5. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Partage de temps et processus 1. Principe et d´finitions . . . . . . . . . . . . . e 2. Structures de donn´es associ´es aux processus e e 3. Organisation du traitant de commutation . . 4. Cr´ation et destruction de processus . . . . . e 5. Exercices . . . . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

24 G´n´ralisation du m´canisme d’interruption et applications e e e 1. Classification des diff´rentes sources d’interruption . . . . . . . e 2. Protection entre processus, notion de superviseur . . . . . . . . 3. Entr´es/sorties g´r´es par interruption . . . . . . . . . . . . . . e ee 4. Pour aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . . Index Bibliographie

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

Introduction
Ce qu’on trouvera dans ce livre
Ce livre suit d’assez pr`s l’enseignement dispens´ en Licence d’informatique e e a ` l’Universit´ Joseph Fourier de Grenoble. L’enseignement a le mˆme titre : e e Architectures Logicielles et Mat´rielles. Il est dispens´ en environ 150 heures e e de cours, Travaux Dirig´s et Travaux Pratiques. e L’objectif est d’expliquer ` de futurs sp´cialistes d’informatique le fonctiona e nement de l’ordinateur. 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 d’ordinateur. Le lecteur trouvera donc dans ce livre une d´marche e de conception de machines. Il ne s’agit pourtant pas de lui faire croire au r´alisme de cette conception. e En effet la v´ritable conception d’une machine, c’est-`-dire de son e a mat´riel — du microprocesseur ` la m´moire, en passant par la carte grae a e phique — et de son logiciel — du syst`me d’exploitation aux compilateurs — e repr´sente des centaines de milliers d’heures de travail de sp´cialistes. Nous ne e e d´crivons qu’une partie du travail, en choisissant les points qui nous semblent e les plus significatifs dans cette conception. D’autre part nous insistons sur les liaisons entre diff´rents aspects de la conception. En particulier, l’une des id´es e e fortes de ce livre est l’´troite compl´mentarit´ des aspects logiciels et mat´riels e e e e des ordinateurs. L’id´e centrale, et le chapitre central de ce livre, montrent e donc comment du mat´riel ex´cute du logiciel. e e Le contenu de ce livre ne devrait pas se p´rimer, sauf si des principes e vraiment nouveaux apparaissent en informatique et se g´n´ralisent. e e

Ce qu’on ne trouvera pas dans ce livre
En revanche ce livre ne d´crit pas les aspects les plus avanc´s utilis´s dans e e e les machines actuelles. Ces aspects font l’objet d’enseignements sp´cifiques de e syst`mes d’exploitation, de compilation ou d’architectures des machines, dans e lesquels, en g´n´ral, on ne se pr´occupe que d’un aspect. Ce livre constitue e e e un pr´requis pour de tels enseignements car il montre les relations entre les 3 e domaines.

2

Introduction

Parmi les th`mes tr`s int´ressants que nous avons d´lib´rement ´cart´s (et e e e e e e e r´serv´s pour le tome 2 !) figurent : e e – L’´tude fine des fonctionnalit´s d’un syst`me d’exploitation particulier. e e e Beaucoup de nos r´f´rences sont inspir´es d’unix1 . ee e – L’´tude de la hi´rarchie m´moire (cache et m´moire virtuelle), que nous e e e e passons totalement sous silence. – L’´tude d´taill´e d’un langage d’assemblage d’un processeur donn´. Beaue e e e 2 coup de nos r´f´rences sont inspir´es du sparc ou du Motorola 680003 . ee e – L’´tude des techniques de conception de circuits micro-´lectroniques. Par e e exemple nous ne parlons ni de consommation, ni de circuits asynchrones. – L’´tude des techniques d’optimisation des performances des procese seurs. Nous ne d´veloppons pas les techniques de pipeline, ni celles de e r´ordonnancement dynamique du flot d’ex´cution des instructions. e e – Les entr´es/sorties tr`s particuli`res que constituent les acc`s d’un ordinae e e e teur ` un r´seau, ce qui demanderait un d´veloppement sp´cifique. a e e e

Comment lire ce livre ?
M´thode 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 ` port´e de e a e la main, pour essayer toutes les techniques ´voqu´es, les comparer, les analyser e e en d´tail, etc. e On peut essayer de r´soudre 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 enfin essayer de trouver des erreurs, de fond et de forme, et on y parviendra certainement. Th`mes e On peut privil´gier une approche centr´e sur les langages de programmae e tion, leur traduction et la fa¸on dont ils sont ex´cut´s. Sur la figure 0.1 cela c e e correspond aux fl`ches en traits gras. e
marque d´pos´e, et dans la suite de l’ouvrage nous ne pr´ciserons plus que les noms de e e e syst`mes et de machines sont, ´videmment, d´pos´s. e e e e 2 marque d´pos´e e e 3 marque d´pos´e e e
1

e . e e e La zone gris´e correspond plutˆt au monde du logiciel.1 – Relations de d´pendance des principales id´es utilis´es dans les 24 chapitres. 0. la zone blanche au e o mat´riel.Introduction 3 2 : Alg`bre de Boole e 7 : Electronique 1 : L’ORDINATEUR 6 : Aspects temporels 3 : Repr´sentation e des grandeurs 8 : Circuits combinatoires 10 11 : Circuits s´quentiels e 14 : LE PROCESSEUR 4 5 : Repr´sentation e des traitements et donn´es e 12 13 : Langages machine et d’assemblage 9 : El´ments de e m´morisation e 15 : Liaisons m´moire e processeur 16 17 : Mat´riel et e logiciel d’entr´es / sorties e 18 : Vie des programmes 19 : Gestion de fichiers 21 ` 24 :Syst`me complexe a e Interruptions Processus 20 : Interpr`te e de commandes Fig.

Jo¨lle. Nous avons re¸u des enseignee e c ments. essay´. Danielle. Sans celles et ceux qui ont enseign´ avec nous le moe dule Architectures Logicielles et Mat´rielles au fil des ann´es il serait sans e e doute plus pauvre.1 cela correspond aux fl`ches en e e traits pointill´s. principes.4 Introduction On peut privil´gier une approche de conception des circuits digitaux et e d’architecture de machine. e e Les autres num´ros indiquent des occurrences d’utilisation des mots. Les mauvaises viennent d’ailleurs ! . techniques.1 cela correspond aux fl`ches en e traits larges et hachur´s. En particulier Catherine. Sans ceux qui nous ont pr´c´d´s e e e e e ce livre n’existerait pas. Jean-Louis et e Jean-Paul reconnaˆ ıtront certaines de leurs bonnes influences. m´thodes. parfois e ant´rieures ` leur d´finition. parfois post´rieures. Dans l’index. enseign´. outils. les num´ros de page en gras indiquent les occurrences de d´finition des mots. e Il n’en reste pas moins que les auteurs ont cherch´ ` mettre l’accent sur la ea globalit´ et la compl´mentarit´ des 3 approches. puis nous avons lu. e e e Index Les mots en italique apparaissent souvent en index. Sur la figure 0. e On peut privil´gier une approche centr´e sur l’architecture de haut niveau e e et les syst`mes d’exploitation. pr´sent´s dans ce livre e e e e ne sont pas les r´sultat de nos d´couvertes. Sur la figure 0. e a e e Remerciements Les id´es.

e c e e Le paragraphe 1. Puis nous d´crivons une e machine ` ex´cuter les programmes et nous insistons sur la notion a e d’ex´cution dans le paragraphe 2. Notion d’information Une information est une entit´ abstraite. 1.Chapitre 1 Qu’est-ce qu’un ordinateur ? Un ordinateur est une machine. Cela nous permet au paragraphe 3. Dans ce premier chapitre. nous faisons un tr`s rapide survol permettant de situer les e notions avant de les d´crire de fa¸on d´taill´e. Cette opposition est celle qui existe entre mat´riel et logie ciel. li´e ` la notion de connaissance. Nous donnons diff´rentes facettes de l’information et s´parons l’´tude des informations de e e e celle des objets. Par opposition.1 Quelques aspects d’une information Nous avons besoin pour cerner la notion d’information de donner l’origine possible d’une information et de montrer la n´cessit´ de ses repr´sentations e e e pour pouvoir envisager les manipulations d’informations dans les ordinateurs. L’ensemble du livre est consacr´ ` montrer de fa¸on d´taill´e comment ces ea c e e deux univers se rencontrent pour former l’architecture de l’ordinateur. non d’un point de vue journalistique. d´crit ce qu’est une information et sa repr´sentation. e e Cela nous permet de parler de programmes. e e e Nous ´voquons enfin les usages de l’ordinateur au paragraphe 4. qui e ex´cute des programmes. presque toujours ´lectronique. les programmes et les donn´es sont e e des informations. . de e montrer les diff´rents mat´riels et logiciels pr´sents dans l’ordinateur. Ces programmes traitent des donn´es. Une machine e e ´lectronique est un objet. e 1. e e a Nous nous int´ressons naturellement aux informations d’un point de vue teche nique en informatique.

L’ensemble des valeurs possibles peut ˆtre fini (comme pour les caract`res). Les variations sont discr`tes dans le cas contraire. fr´quence ou phase d’un e e e e signal ´lectrique. En ee revanche un syst`me informatique traite des informations qui peuvent varier e un nombre non born´ de fois au fil du temps.2 Nom.6 Qu’est-ce qu’un ordinateur ? 1. le point de l’´cran est allum´ ou ´teint. dimensions. e e e La grandeur physique peut ˆtre la position d’une aiguille sur un appareil e de mesure. On passe parfois par une repr´sentation interm´diaire sous forme e e de suite de lettres et de chiffres. l’orie gine ´tant par exemple m´canique (forme.3 Repr´sentation et codage e Une information a une repr´sentation sous forme de grandeur(s) phye sique(s) associ´e ` une convention. d’une onde ´lectromagn´tique). ´lectromagn´tique (amplitude.1. potentiel ´lectrochimique d’une cellule nerveuse). elle n’est pas compr´hensible. Si une information e a e est repr´sent´e dans un code inconnu. C’est le cas pour la temp´rature. Un ensemble infini de valeurs peut pr´senter des variations continues. Le solde de e e mon compte en banque peut ˆtre de 123. e e Une information a une valeur ` un certain moment : 37 degr´s. valeur et combinaison d’informations Une information a un nom : “la temp´rature mesur´e au sommet de la Tour e e Eiffel”. la touche de la souris est enfonc´e ou non. “le caract`re tap´ au clavier”. c’est-`-dire e a qu’entre deux valeurs possibles il y a une valeur possible. Les combinaisons dans l’espace contiennent un nombre fini d’´l´ments. ’A’. car la banque arrondit les sommes au centime le plus proche.46 F. Cette diff´rence se retrouve e e e . ´lectrochimique (PH d’un e e e e liquide. e 1. la lettre est e e e une majuscule ou non. Diff´rentes informations peuvent se combiner soit dans l’espace (les mone tants des comptes en banque de diff´rents clients) soit dans le temps (l’histoe rique des variations de mon compte). emplacements d’objets. d’interpr´tation. 5 000 F.1. “le montant de mon compte en banque”.1.1 Origine d’une information Une information peut ˆtre en relation avec une grandeur physique. Pour l’aiguille sur un cadran on parle de repr´sentation analogique . repr´sent´s ` leur tour par une grandeur e e a physique (traces sur un papier par exemple). e e intensit´ d’une force). a e La plus petite information possible est une r´ponse par oui ou par non (on e parle de r´ponse bool´enne) : le nombre est pair ou impair. e 1.45 F ou de 123. Une telle e petite information constitue un bit. Il suffit de maintenir le syst`me e e en ´tat de marche. si l’interm´diaire des chiffres est mis en jeu e e on parle de repr´sentation num´rique ou digitale. e e ou potentiellement infini (comme pour mon compte en banque !). le caract`re est une e e e lettre ou pas une lettre. mais pas d’une e valeur entre les deux. ou code.

Une information sortante. puis par un e vecteur de chiffres binaires dont les composantes sont les unes ` cˆt´ des autres a oe en m´moire (combinaison spatiale). sa valeur. . sous la forme d’une tension sur un fil ´lectrique. Mais c’est toujours la e mˆme information : elle est simplement mat´rialis´e plusieurs fois. Les mots de 8 bits sont des octets. Les programmes sont ´crits dans des langages e de programmation. Elles peuvent provenir e e d’un utilisateur via un clavier. peut influencer un mat´riel par e e l’interm´diaire d’un actionneur. .2. e Un chiffre binaire. les figures sont d´crites dans des langages de description e de figures. transmises et e e trait´es. c’est-`-dire cr´er un nouvel exemplaire de l’information a e en lui associant un nouveau repr´sentant physique. Un vecteur de bits a e constitue un mot. suffit ` repr´senter un bit. Notion d’information 7 entre les disques anciens et les disques compacts. sa repr´sentation.2 Transmission des informations Les informations trait´es dans l’ordinateur peuvent provenir de disposie tifs mat´riels (capteur de temp´rature par exemple). une souris. Il est parfois n´cessaire de e r´aliser par un dispositif ´lectronique une conversion entre ces deux types de e e repr´sentation. etc. 1. Diff´rents e e e syst`mes d’interface permettent ` l’ordinateur de communiquer avec le monde e a ext´rieur. Une mˆme information peut ˆtre repr´sent´e dans l’ordinateur de fa¸ons e e e e c diverses : le caract`re frapp´ au clavier est d’abord connu comme un couple e e de coordonn´es d’une touche au clavier (la touche en deuxi`me colonne de la e e troisi`me ligne). 0 ou 1. 1.1 Stockage (ou m´morisation) des informations e On peut copier. Dans le langage courant on assimile souvent l’information. e .1. e e e Pour les informations structur´es complexes (en raison des combinaisons) e le codage constitue un langage. Nous retrouvons cette triple fonction dans le paragraphe 3. comme un d´clencheur d’alarme.1. e 1. puis par une repr´sentation sous forme de e e matrice de points allum´s/´teints sur l’´cran.3 En e informatique l’association du nom d’une information et de la repr´sentation e de la valeur constitue une variable. On peut e e e aussi d´truire un exemplaire de l’information : elle disparaˆ avec son dernier e ıtra repr´sentant. . puis par une s´quence de variations de potentiel sur une ligne e e ´lectrique liant le clavier et l’ordinateur (combinaison temporelle). Une information est stock´e dans une m´moire si on ne veut pas e e e qu’elle disparaisse.2 Utilisation des informations dans l’ordinateur Dans les ordinateurs les informations sont m´moris´es.2.

infra-rouge. de d´tecter des ere e reurs de transmission. Cette repr´sentation peut ˆtre finie (dans l’espace) ou infinie (dans e e le temps). Par exemple quand le programmeur imprime son programme. e 1. La distinction est de mˆme nature que celle qui distingue le e logiciel du mat´riel. il s’agit tr`s souvent e d’op´rations arithm´tiques de calcul et de comparaison. . 1. e On dit parfois que l’informatique concerne le traitement de l’information. les instructions peuvent ˆtre consid´r´es comme des donn´es ` un e ee e a certain moment. “Comparer deux caract`res et d´terminer le premier dans e e l’ordre alphab´tique” . e e e visible. programmes e On peut r´aliser des op´rations de combinaison d’informations pour g´n´rer e e e e de nouvelles informations. de come e presser la repr´sentation avant de la transmettre. Les e e ordres ´l´mentaires sont des instructions. de mˆme le compilateur traite le programme ` compiler comme e a une donn´e. Dans le cas des ordinateurs. Il existe des informations qui d´crivent ces traitements appliqu´s ` d’autres e e a informations : “Diviser la distance parcourue par le temps de trajet. Si la repr´sentation e e e d’une information est dupliqu´e il n’y a toujours qu’une information. si le d´bit d’information est une priorit´. Cela donne deux objets. la distance est de plusieurs millions de kilom`tres.8 Qu’est-ce qu’un ordinateur ? Les informations peuvent ˆtre transmises d’un point ` un autre. si l’on garde l’information en exc`s. L’´tat de la machine avant l’instruction est e e diff´rent de son ´tat apr`s. Cela peut permettre. e Il arrive que le codage de l’information comporte une certaine redondance. e Un objet peut ˆtre dupliqu´.3 Information par rapport ` objet. . .3 Traitement des informations : donn´es. Des enchaˆ e ınements de tels ordres constituent des programmes. “Convertir une information repr´sent´e selon le code e e e 1 pour la repr´senter selon le code 2”. Le r´sultat e est la vitesse” . Les e r´seaux permettent les transmissions entre ordinateurs. Les autres informations sont nomm´es donn´es. Des liaie a sons par fils ´lectriques ou par ondes ´lectro-magn´tiques (radio. mais il serait plus exact de parler du traitement d’une repr´sentation de l’ine formation. Etymologiquement e e l’ordinateur met de l’ordre. A l’int´rieur d’un ordinateur la distance est e e parfois de moins d’un micron (10−6 m). a logiciel par rapport ` mat´riel a e Enfon¸ons quelques portes ouvertes pour distinguer la notion d’information c de celle d’objet. Mais e .) nous sont famili`res. les instructions du programme d’impression traitent le programme comme un texte ordinaire . e e e Attention.2. ou. Quand une fus´e transmet vers la Terre e des images de l’espace. Une instruction indique un chanee gement d’´tat dans l’ordinateur.

de silicium. e Un objet peut tomber en panne. un mod`le de calcul. e e de tˆlerie. Par contre l’ordinateur lui-mˆme est un objet compos´ de fils. e Pour obtenir l’objet il faut savoir r´aliser la description. Une infore mation peut ˆtre accessible ou non. Une information peut ˆtre consid´r´e comme vraie ou fausse. de ventilateurs. Les informations peuvent ˆtre e m´moris´es. se d´grader au fil du temps. e .2. ´videmment pas les objets. La production d’information est une activit´ du e e secteur tertiaire. mais e ee elle n’a pas de d´faut de fabrication. Il ex´cute des informations (les programmes) e a ` propos d’autres informations (les donn´es). e Ils peuvent comporter des fautes de typographie. Un ordinateur correspond ` un e a certain moule. Sa description est une information cod´e graphio e quement dans un sch´ma ou textuellement par un ensemble d’´quations ou de e e formules.4 Objet et description d’objet Attention ` ne pas confondre l’objet mat´riel et sa description . e e e Une information peut voyager par t´l´phone ou par courrier ´lectronique. Ainsi la description d’un ordinateur n’a pas de d´fauts de fabrication. L’ordinateur : une machine qui ex´cute e L’ordinateur est un objet. ee e Un objet ne le peut pas. Les d´fauts de e e conception sont d’une autre nature : ils concernent une diff´rence entre la dese cription de l’ordinateur et l’intention du concepteur. la repr´sentation e peut disparaˆ ıtre. des d´fauts de fabrication peuvent ape e paraˆ ıtre. Il existe des langages de description de mat´riel informatique. Produire un objet suppose de la mati`re premi`re. Ce test vise la ` d´couverte de d´fauts de fabrication. 1. la descripa e tion de l’objet est une information. On peut les assimiler aux bogues des programmes. e e e on peut refaire un test pour d´couvrir ou localiser des pannes. 2. Produire une information ee demande de la mati`re grise. Le r´sultat de la e e fabrication de l’objet ordinateur doit ˆtre test´. de syntaxe ou des erreurs de conception. voyage e sur un fil. est reproductible. Le e e support de la repr´sentation d’une information peut s’abˆ e ımer. ne peut tomber en panne. On doit v´rifier que l’objet est e e e conforme a sa description du point de vue du fonctionnement. Apr`s un temps de bon fonctionnement. Lors de la r´alisation d’un objet. Les programmes n’ont pas de d´fauts de fabrication. dans un code compr´hensible ou non. La production d’objet e e est une activit´ ´conomique du secteur secondaire. L’ordinateur : une machine qui ex´cute e 9 il y a probablement deux supports physiques.

. 1 0 0 1 1 . 1 Registres de calcul 0 1 0 0 1 ..1 – Architecture simplifi´e d’une machine de Von Neumann e 2. 0 Programme 0 0 1 0 . il est possible de calculer la parall`le ` une droite e e a passant par un point donn´. on obtient un autre mod`le de calcul. sa programmation est donc ardue... 1 bus donn´es e m bus adresses n 1 1 1 1 0 .. Prenons un exemple en g´om´trie o` calculer signifie e e u dessiner : le calcul par la r`gle et le T glissant. 1 Unit´ de calcul e Processeur M´moire centrale e Fig. 0 1 1 1 0 0 . machine de Turing e Un mod`le de calcul comporte un ensemble de transformations applicables ` e a un ensemble de donn´es. e e . e Ce mod`le est un maximum. Cette e ıt e machine est toutefois tr`s rudimentaire.. la perpendiculaire ` une droite passant par un e a point. Obe tenir un r´sultat suppose de nombreuses op´rations ´l´mentaires.. Il comporte aussi l’ensemble des r`gles de composition e e de ces transformations. a En informatique. En g´om´trie plane. Il a d´fini un mod`le abstrait de machine et montr´ ee e e e que cette machine pouvait effectivement calculer la classe de fonctions d´finie.. l’orthocentre d’un triangle. la machine abstraite de Turing est un mod`le de cale cul.. 0 Lecture/Ecriture 0 1 0 1 0 . La machine e e ee de Turing suppose l’existence d’un dispositif de m´morisation de dimension e infinie. Ce n’est donc pas un mod`le r´aliste... 0 Registre Instruction 1 0 1 0 .. Las98] a d´fini une e e classe de fonctions calculables en composant (´ventuellement r´cursivement) e e des fonctions ´l´mentaires.. e Si l’on ajoute le compas. 1. en n’utilisant e e e que la r`gle et le T glissant.. plus puissant.. e c’est-`-dire permettant de construire d’autres figures.1 Mod`le de calcul. Tur54. on ne connaˆ pas de mod`le plus puissant. Le math´maticien britannique Turing [Gir95. etc. L’utilisation de la r`gle et du T glissant e constitue un mod`le de calcul.10 Qu’est-ce qu’un ordinateur ? Horloge Initialisation Acc`s m´moire e e Mot de m bits Adresses 0 1 2 3 Programme Donn´es e 2n − 1 Compteur 1 1 1 0 ..

e Pratiquement tous les mod`les informatiques de traitement se retrouvent e dans la cat´gorie g´n´rale des automates. Les informations sont stock´es dans une m´moire dans des emplacee e ments num´rot´s nomm´s mots. Elle n’est pas r´versible : il n’est pas possible d’annuler e e e la nouvelle association pour acc´der ` nouveau ` l’ancien contenu.2. e Une ´criture dans la m´moire associe une valeur ` une adresse (on parle e e a aussi d’affectation).. ou syst`mes s´quentiels. Du point de vue th´orique. Elle comporte deux ´l´ments : une m´moire et une unit´ centrale. ee e e On parle plus facilement aujourd’hui de processeur plutˆt que d’unit´ ceno e trale. Elle induit un changement de l’´tat de la machine. ee 2. Le codage de l’information est tel que rien ne permet de reconnaˆ ıtre une repr´sentation de donn´e et une repr´sentation d’instruction. 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 r´seaux de neurones formels. on a pu d´montrer que le mod`le concret de e e e Von Neumann poss`de les propri´t´s de la machine abstraite de Turing. L’ordinateur : une machine qui ex´cute e 11 2. les couleurs. que nous allons d´crire. sont e encore en oeuvre dans la quasi totalit´ des ordinateurs contemporains.2. Chaque ´criture associe une nouvelle valeur e a ` l’adresse.1 La m´moire centrale e Les informations sont cod´es sous forme num´rique. e e e Cette distinction n’aurait pas de sens puisqu’un programme peut mˆme cr´er e e des donn´es qui sont en fait des instructions. naturellement. sont repr´sent´s par des suites de chiffres bie e e naires. La m´moire est ` affectations multiples : on peut ´crire successivement e a e plusieurs valeurs dans un mot. de nombreuses am´liorations. La lecture fournit la valeur associ´e ` cette e e a adresse. e en binaire. Il y e a eu. Une machine de Von Neue mann (voir Figure 1. en d´truisant e e l’association pr´c´dente. Le num´ro d’un emplacement est son adresse. e e e e e Les principes de la machine de Von Neumann. e a a La m´moire contient des donn´es et des programmes constitu´s de suite e e e d’instructions. Cette possibilit´ est ce qui donne e e toute sa sp´cificit´ 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 m´moires respectivement d´di´es aux donn´es et aux instructions. e e e e Le maintien de la correspondance entre le nom de l’information et l’adresse du mot m´moire o` est rang´e une de ses repr´sentations est une tˆche difficile et e u e e a une pr´occupation permanente en informatique.1) stocke des repr´sentations des informations digitales. e e e e . Apr`s une ´criture. on peut ex´cuter une ou plusieurs e e e lectures de la mˆme information. etc.2 L’architecture de Von Neumann Les travaux r´alis´s autour du math´maticien hongrois Von Neue e e mann [BGN63] constituent le fondement de l’architecture des ordinateurs actuels. Les instructions. les e e caract`res. Habituellement les machines parall`les ` plusieurs processeurs ne sont e a pas consid´r´es comme des machines de Von Neumann.

La r`gle e e e g´n´rale est donc la correspondance entre l’ordre de rangement en m´moire et e e e l’ordre d’ex´cution. Il re¸oit en retour une copie de e e c l’instruction qu’il stocke dans son registre d’instruction. c’est une erreur. Cette e e e ex´cution met souvent en jeu une unit´ de calcul ou Unit´ Arithm´tique et e e e e Logique. compe e teur ordinal ou compteur programme. Le d´codage est le moyen de v´rifier qu’une information est e e bien une instruction. en fonctionnement a normal. Un e e e algorithme est un texte de taille finie. et d´clenche une op´ration de lecture. En e utilisant des branchements. – Ex´cution : le processeur effectue l’op´ration d´crite par l’instruction. on peut faire en sorte que l’ex´cution globale du e programme comporte plusieurs ex´cutions d’une mˆme instruction. C’est l’essence mˆme de la programmation. Si le contenu du registre ne correspond e e a pas ` une instruction valide. e L’instruction en cours d’ex´cution est rep´r´e par son adresse. Les instructions sont g´n´ralement e e e ex´cut´es dans l’ordre o` elles sont ´crites dans la m´moire. e Le processeur ex´cute cycliquement la tˆche suivante dite d’interpr´tation e a e des instructions ou d’ex´cution des instructions : e – Lecture de l’instruction ` ex´cuter : le processeur transmet ` la m´moire a e a e l’adresse de l’instruction ` lire. – S´lection de l’instruction suivante : le processeur calcule l’adresse de l’inse truction suivante. En effet. – D´codage : le processeur examine le contenu du registre d’instruction et e d´termine l’op´ration ` effectuer. e e e Son ex´cution consiste ` stocker dans le registre compteur ordinal une autre e a adresse que celle obtenue implicitement par incr´mentation de ce dernier. mais certaines e e u e e instructions peuvent introduire des ruptures de cette s´quentialit´. Une instruction de saut ou branchement force une rupture de l’ordre implicite d’ex´cution des instructions d´fini par leur position dans la m´moire.2. le compteur programme pointe sur un mot m´moire contenant une e instruction.2 Le processeur Le processeur ex´cute les instructions.12 Qu’est-ce qu’un ordinateur ? 2. autrement dit le contenu du compteur ordia nal. Cela se fait le plus souvent en ajoutant 1 au compteur ordinal. . Le processeur est dot´ au minimum de deux ´l´ments de m´morisation e ee e particuliers appel´s des registres : le compteur ordinal d´j` cit´ et le registre e ea e d’instruction dans lequel le processeur stocke une copie de l’instruction en cours d’ex´cution. Cette adresse e ee est stock´e dans une partie du processeur appel´ pointeur d’instruction. Cet op´rateur effectue des calculs sur les donn´es stock´es dans e e e des registres de calcul ou accumulateurs. Le texte e e d’un programme est donc une repr´sentation finie d’un comportement qui dure e ´ventuellement ind´finiment.

Donnons quelques exemples de ce que peuvent ˆtre les instructions : “Ajoue ter 258 et le nombre contenu en m´moire ` l’adresse 315 puis ranger le r´sultat e a e a ` l’adresse 527”. Un programme ´crit en langage machine a l’apparence d’une suite de e . Le terme de bus de e e valeur aurait ´t´ plus explicite : le processeur peut interpr´ter la valeur qui ee e transite sur ce bus comme une donn´e ou comme une instruction. 2.2 montre une telle organisation.4 Langages du processeur : langage machine et langage d’assemblage Pour ˆtre interpr´t´es par le processeur. 2) le bus de donn´es transporte e e le contenu de l’emplacement m´moire auquel on acc`de. “Si le nombre rang´ en m´moire ` l’adresse 124 est posie e a tif. Le langage machine d´crit e e l’ensemble des instructions comprises par le processeur et la convention de codage pour que celles-ci soient ex´cutables. Le codage d’une instruction est un vecteur de 0 et de 1. alors sauter ` l’ex´cution de l’instruction ` l’adresse 471.2 – Architecture mat´rielle simplifi´e d’un ordinateur e e 2. On parle de jeu ou de r´pertoire e e d’instructions. 3) des sie gnaux compl´mentaires pr´cisent ` quel instant a lieu l’acc`s (Acc`s m´moire) e e a e e e et dans quel sens (Lecture/Ecriture).2. repr´sentent alors la valeur imm´diate e e e de l’op´rande 258. 1.2. L’ordinateur : une machine qui ex´cute e 13 Ecran Clavier M´moire e centrale Fils sp´cialis´s e e Coupleur de clavier Coupleur d’´cran e Disque Processeur Coupleur de disque Bus donn´es e Bus adresses Fig. e a a e Diff´rents sous-vecteurs. sinon continuer a e a en s´quence. ou encore le code op´ration e e addition.2.3 Liaisons entre le processeur et la m´moire e Le processeur dialogue avec la m´moire via trois sortes de fils ´lectriques e e group´s en paquets nomm´s bus : 1) le bus d’adresse transmet du procese e seur vers la m´moire l’information adresse. ou champs. La figure 1. les instructions d’un programme e ee doivent ˆtre repr´sent´es selon un certain code et stock´es dans la m´moire e e e e e centrale dans un format appel´ langage machine. ou bien l’adresse directe 315. c’est-`-dire passer ` l’instruction suivante dans la m´moire”.

14 Qu’est-ce qu’un ordinateur ? chiffres binaires peu ´vocatrice pour un programmeur humain. par des techniques d’algorithmique cˆbl´e. Elle consiste ` affecter au compe a teur ordinal du processeur l’adresse de la premi`re instruction du programme e a e ` ex´cuter. Sa mise en oeuvre par du mat´riel. Il passe de l’´tat de donn´e ` celui de programme en e e e a cours d’ex´cution au moment du lancement. On emploie l’expression impropre de programmation en assembleur pour programmation en langage d’assemblage. La mise en oeuvre d’un algorithme par un programme est classique. s’ex´cuter sur e e e e un processeur Y. C’est poure quoi on utilise un langage dit d’assemblage. mais sous une forme textuelle plus facile ` manipuler e a que des paquets de 0 et de 1. Un abus de langage fr´quent confond le langage et le e traducteur. 3. Le lancement est une op´ration e e sp´ciale qui change le statut du programme. Un programme en langage machine ´crit pour le processeur X ne peut pas.1 Aspect du mat´riel e Une premi`re approche du mat´riel consiste ` le consid´rer selon son aspect. e a e est moins connue car moins facile ` exp´rimenter sur un simple ordinateur a e personnel. par exemple le calcul sur des r´els repr´sent´s dans le codage virgule e e e flottante. Le programme qui effectue cette trae e e duction est l’assembleur. N’oublions a e e . Nous allons e a l’examiner selon trois crit`res : son aspect. Une e fonction r´alis´e par du logiciel sur une certaine machine peut ˆtre r´alis´e par e e e e e du mat´riel sur une autre. Le programe ´crit en langage d’assemblage doit n´cessairement ˆtre traduit e e e en langage machine pour ˆtre ex´cut´. Chaque processeur a son propre langage machine. e 3. e e a e Un ordinateur peut ressembler ` une caisse surmont´e d’un ´cran. Il existe des machines ` jeu d’instructions complexe Complex Instruction a Set Computer ou plus restreint Reduced Instruction Set Computer. dans lequel on d´crit exactement e les mˆmes instructions. Dans le cas contraire X et Y sont dits compatibles. 3. O` sont le mat´riel et le logiciel ? u e Dans une machine informatique se trouvent du mat´riel et des logiciels. On parle de code source ` propos d’un programme ´crit dans le langage a e d’assemblage et de format objet ou de format ex´cutable ` propos du r´sultat e a e de la traduction.1 Mat´riel e Le mat´riel est pourtant plus directement accessible ` la vue. C’est le cas pour certains calculs ou transcodages e complexes. Le r´sultat de la traduction est une donn´e qui peut ˆtre en m´moire. en g´n´ral.1. sa technologie et sa fonction. en e e e e cours d’ex´cution ou non.

. Ce n’est qu’un moyen de communiquer entre e a la machine et l’ˆtre humain.1. La dur´e u e e e de vie d´pend ´ventuellement d’une source d’alimentation ´lectrique. e Dans l’ordinateur. et des actione e ee neurs de mouvements divers. Certains syst`mes sont purement ´lectriques ou ´lectroniques. Les ´l´ments mat´riels ont diff´rents types de fonctions : de m´morisation. e Pour l’acquisition de donn´es externes.3 Fonctions du mat´riel e La troisi`me fa¸on de caract´riser le mat´riel est de le faire d’apr`s sa fonce c e e e tion. etc. La copie est rapide et de faible coˆt ´nerg´tique.1. Les claviers et souris sont de ce type. O` sont le mat´riel et le logiciel ? u e 15 pas qu’un ordinateur peut parfois ˆtre une armoire. etc. Certains syst`mes sont ´lectro-optiques comme les ´crans. Dans les boˆ ıtiers il y a des (le plus souvent une seule) puces comprenant des transistors. r´sistances et condensateurs. actione e e e neurs et l’´lectronique de traitement. ee e e e de traitement et de communication. les cam´ras ou appareils photo num´riques. e 3. e e voire simplement une puce ou circuit comme sur votre carte bancaire. Les microsyst`mes r´unissent sur une seule puce capteurs. l’information est repr´sent´e par des signaux ´lectriques e e e de faible puissance. L’´cran e n’est pas n´cessaire ` l’ordinateur. Les ordinateurs pneumatiques.3. les lecteurs e e e de code-barre. Diff´rents e capteurs ou actionneurs peuvent se trouver sous forme de puce ou de composants s´par´s. L’ensemble peut constituer un robot. La dur´e e e de stockage serait en revanche de plusieurs si`cles. e e La m´moire principale est directement accessible dans l’ordinateur. Le coˆt et la e u dur´e du stockage et des op´rations de copie d´pendent fortement du mode de e e e repr´sentation physique. sont assez rares. les scanners. e Si une information ´tait repr´sent´e par un champ de menhirs. o` la pression dans des tubes tient lieu de u courant ´lectrique. on utilise souvent des syst`mes e e m´caniques ou ´lectrom´caniques.2 Technologie du mat´riel e Une deuxi`me classification d’´l´ments mat´riels se base sur les ph´nom`nes e ee e e e mis en oeuvre. d’acc´l´ration. le stockage e e e prendrait de la place. il y a des cartes imprim´es. e 3. e e e On distingue classiquement la m´moire principale et la m´moire secondaire. la duplication serait difficile (sauf pour Ob´lix). On a e e e plus g´n´ralement des capteurs de pression. Elle come . sur lesquelles sont soud´s e e e des boˆ ıtiers. ou une carte imprim´e. Des syst`mes ´lectrom´caniques sont utie e e e lis´s notamment pour la lecture ou l’enregistrement sur supports magn´tiques e e ou optiques. les diodes e e e ´lectroluminescentes. La m´morisation stocke des informations dans la machine. Ces syst`mes e e e e sont organis´s selon une hi´rarchie correspondant ` la technologie de r´alisation e e a e utilis´e : dans les caisses.

D’autres circuits ont des fonctions de communication entre le processeur et la m´moire ou entre le processeur et le monde ext´rieur. images des jeux. la m´moire morte ne perd pas les informations e e qui y sont inscrites. comme on l’a vu. e e e e L’´diteur se prot`ge ainsi contre la possibilit´ pour le client de modifier le logie e e ciel. Aucun traitement n’a lieu . ex´cuter e e les instructions lues.2 Les programmes et les donn´es e Les programmes et les donn´es peuvent ˆtre enregistr´s sur des supports e e e magn´tiques ou en m´moire vive ou morte. e Une m´morisation a lieu aussi dans le processeur qui garde temporairement e des copies de certaines informations dans ses registres. Cette information est dupliqu´e. 3. soue a e e ris. On ach`te aussi le plus souvent des donn´es : dictionnaire du v´rificateur e e e orthographique. Certaines informations sont stock´es en m´moire morte ou en m´moire e e e secondaire. Il peut lire ou ´crire e e le contenu de la m´moire principale. Les programmes e e e e peuvent ˆtre affich´s ` l’´cran ou ´crits sur une feuille de papier. 3. lecteur/graveur/enregistreurs de disques. Il faut passer par une interface. Ainsi les disques souples ou durs sont des m´moires secondaires. Quand on ach`te un logiciel on n’ach`te g´n´ralement que le code objet. ou dans une m´moire. Les communications avec c le monde ext´rieur se font ` travers des p´riph´riques comme les claviers. Son avantage e est de pouvoir ˆtre lue directement par l’utilisateur humain.16 Qu’est-ce qu’un ordinateur ? porte une partie de m´moire vive et une partie de m´moire morte. La fonction de traitement est assur´e par le processeur. Ils peuvent ˆtre pr´sents (en pare e e e tie) dans le processeur : ` un instant donn´ l’instruction en cours d’ex´cution a e e est dans dans le registre d’instruction du processeur. Quand on e e coupe l’alimentation ´lectrique. Il peut ensuite. Ces circuits d’ine e terfa¸age et de communication sont des coupleurs. on ne l’enl`ve pas de la m´moire pour l’ex´cuter. on e e e peut trouver le texte source d’un programme et le format objet correspondant. Elles sont g´n´ralement permanentes : e e e l’information y reste en l’absence d’alimentation ´lectrique. il se produit une a . etc. La carte perfor´e e e a longtemps constitu´ un support de stockage en informatique. D’autres types de coupleurs permettent de connecter l’ordinateur ` d’autres ordinateurs via un r´seau. ` la mise sous tension. Dans a e les applications industrielles o` une chaˆ de production est pilot´e par ordiu ıne e nateur il serait incongru de consid´rer la chaˆ comme un p´riph´rique ! Du e ıne e e point de vue du programmeur c’est pourtant le cas. La m´moire morte ne peut pas ˆtre facilement modifi´e.3 La vie du mat´riel et des programmes e Le mat´riel a une vie tr`s simple : avant la mise sous tension. e e a e e Sur un mˆme disque optique ou magn´tique. e e e La m´moire secondaire contient des informations moins directement accessibles e par le processeur. il ne fait e e rien.

C’´tait le bon temps ! e e 4. e e e e e traduction ´ventuelle. Ces ´tapes sont g´n´ralement suivies d’un lancement. qui fait d´marrer le syst`me mat´riel dans e e e e son ´tat initial. Fonctionnalit´s des ordinateurs e 17 r´initialisation automatique (reset). chargement (d’un support secondaire vers la m´moire e e vive). Dans les vieilles machines on pouvait entrer des programmes en m´moire et e forcer le compteur programme directement en binaire. a Tout ordinateur (sauf de tr`s rares exceptions) est rythm´ par un sie e gnal p´riodique nomm´ l’horloge. avec des interrupteurs a ` deux positions. sauvegarde. e e e L’ordinateur comporte les outils logiciels n´cessaire ` ces actions : ´diteur e a e de texte. Certains programmes e comme les noyaux de syst`mes d’exploitation ou les jeux sur cartouche. Il n’y avait plus qu’` appuyer sur un bouton pour lancer a l’ex´cution. lanceur sont pilot´s par un e utilisateur humain par l’interm´diaire d’un enchaˆ e ıneur de travaux : l’interpr`te e de commandes. Pour e la construction de petits ordinateurs sp´cialis´s. c’est le cas par exemple de la console de jeux. Une r´initialisation peut e e e avoir lieu ` n’importe quel instant sur commande de l’utilisateur. Fonctionnalit´s des ordinateurs e Cette partie d´crit diff´rents usages de l’ordinateur. La pr´cision n’a pas besoin a e d’ˆtre ` la nanoseconde pr`s ´videmment. la technologie d’inscription e e des m´moires mortes est accessible assez facilement. traducteur. e Certains ordinateurs ont atteint une destination finale . sont e g´n´ralement sur un tel support. gestion de fichiers. et donc lance l’ex´cution du logiciel. de la station de travail en bue e e . e e Certains programmes se trouvent en m´moire vive.1 Les usages de l’ordinateur Distinguons deux usages bien diff´rents des ordinateurs. En revanche elle doit permettre de e a e e changer de si`cle ! e La vie des programmes est plus agit´e ! Certains programmes sont inse crits en m´moire morte en usine. Un ordinateur dont la fr´quence d’horloge est de 250 Mhz e (M´gahertz) change d’´tat avec une p´riode de 4 ns (nanosecondes. Ce signal cadence les changements d’´tats e e e dans l’ordinateur. du syst`me de r´servation de la compagnie a´rienne. Ils sont le r´sultat d’un cycle : ´dition. du traitement de texte de la dactylographe. c’est-`-dire e e e a 4. Cela nous permet ene e suite de distinguer l’ordinateur de diff´rentes machines programmables qui ne e sont pas des ordinateurs. chargeur. 4. par le constructeur de l’ordinateur.4. Ils n’y apparaissent pas e par g´n´ration spontan´e. L’existence de cette horloge permet de g´rer une pendule qui e donne l’heure ` l’utilisateur et date ses fichiers.10−9 secondes).

e 4. ce qui n’est pas forc´ment simple. D’autres ordinateurs n’ont pas encore atteint ce stade.2 Fonctionnalit´s 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. Si l’on regarde de plus pr`s.. Souvent un a mˆme ordinateur peut servir ` d´velopper des jeux.1. Pour l’instant ils ne servent qu’` des informaticiens pour ´crire des programmes. etc. Par exemple pour le magn´toscope : enregistrer la chaˆ x. Cette double fonctionnalit´ permettant une phase de programmation et une e phase d’ex´cution n’est pas facile ` comprendre pour les utilisateurs non ine a formaticiens. La traduction d’un pro- . Ces programmations sont interpr´t´es par un e ee programme en langage machine qui est fourni avec la machine. Ils ne servent a e encore qu’` la mise au point d’une certaine destination finale. Certains ordinateurs peuvent ˆtre utilis´s des deux mani`res : les programe e e meurs de la compagnie a´rienne changent les programmes sur la machine sans e interrompre les r´servations.18 Qu’est-ce qu’un ordinateur ? reau d’´tude de m´canique. tous les M jours. Dans de telles machines l’utilisateur peut parfois installer des programmes nouveaux qu’il se procure : jeux. de e ıne h1 ` h2 heures. e e o e ou de la calculette programmable. il faut pouvoir m´moriser ces programmes ea e sur un disque et les lancer.1 Fonctionnalit´s des ordinateurs pour non programmeurs e Remarquons que ces machines sont souvent qualifi´es de programmables. du contrˆleur de programmation du magn´toscope. il faut pouvoir introduire des e e donn´es (les textes du traitement de texte. e Le programme en langage machine qui est ex´cut´ consid`re enregistrer. pendant N jours. h1. Ce programme est totalement invisible pour l’utilisateur.) et s’ex´cute en tenant compte de e e leurs valeurs. h1. e comme c’est le cas pour les magn´toscopes. L’informaticien qui devra un jour ´crire un mode d’emploi d’une e telle machine doit s’en souvenir. a 4. On est tr`s proche alors d’un ordinateur. x.. e e Sur certains ordinateurs il est possible d’utiliser des logiciels dits de Conception Assist´e par Ordinateur (CAO) pour concevoir des voitures. les op´randes de la calculette non e e programmable) et des programmes dans le langage de la machine programmable visible. Ils sont d´j` en langage machine . des moteurs e ou les puces qui seront ` la base d’un futur ordinateur. Par ailleurs il faut pouvoir lancer un tel programme en langage machine qui prend ces param`tres (enregistrer. un traitement de texte ou e a e une calculette par simulation. Le processeur n’ex´cute pas a e directement ce type de programmes qui ne sont pas ´crits en langage machine.1. e Dans une telle machine il faut pouvoir introduire des informations et lancer des ex´cutions. nouvelle version de traitement de texte. e e e h2. N et M comme des donn´es.

selon un ordre immuable fig´ lors de la construction de la mae chine (l’utilisateur a parfois le choix entre plusieurs s´quences pr´d´finies). e 4. ˆtre interpr´t´s. etc. lecteurs de disquettes avec une vitesse de rotation plus ou moins grande). a Une machine ` laver a un comportement cyclique complexe. e e ee Sur les ordinateurs compliqu´s o` plusieurs programmeurs travaillent en e u mˆme temps chacun veut quand mˆme avoir l’impression d’avoir un ordinateur e e pour lui tout seul. Par exemple : apr`s une ´dition de texte. les programmes peuvent. e e . Le syst`me de gestion de fichiers suppose ces aspects plus bas e e d´j` r´solus. si sa date enregistr´e est bien ant´rieure. De mˆme l’envoi d’un courriel (ou m´l) utilise des parties de ea e e e programmes qui ne d´pendent pas du nombre de boutons de la souris. C’est le cas de l’ordinateur de la compagnie a´rienne qui e g`re les places.4. L’installae e e tion de ces pilotes (drivers en anglais) cause bien des soucis aux utilisateurs novices. nomm´es les pilotes de p´riph´riques. etc. Un syst`me d’exploitation comporte 2 parties : e – Une partie basse fortement d´pendante des caract´ristiques du mat´riel e e e comme le type de processeur ou les types de p´riph´riques connect´s (souris e e e a ` 1. les actions continuent ou s’arrˆtent selon le temps ´coul´. e sauver. Ce gestionnaire v´rifie si le fichier existe d´j`. claviers azerty ou qwerty. e L’ensemble des outils permettant l’´dition.2 Tout ce qui est programmable est-il un ordinateur ? On rencontre de nombreux appareils ´lectrom´nagers dot´s d’un s´quenceur e e e e ou programmateur. Il y a donc des programmes qui permettent d’´crire. e ea e e Mais la prise en compte de la vitesse de rotation du disque n’est pas du mˆme niveau. permet la mise au point de programmes. lancer des programmes. Sur les ordinateurs utilis´s pour e le d´veloppement de programmes. e e Les actions correspondant aux contacts sont faites dans l’ordre o` les contacts u sont touch´s par un contacteur ´lectrique. traduire. comme sur le e magn´toscope. etc. e e e C’est le cas des machines ` laver. e – Une partie haute utilisant les primitives de la pr´c´dente pour offrir des e e services de plus haut niveau. le niveau d’eau. Cette partie basse comporte aussi les outils permettant de g´rer e plusieurs utilisateurs simultan´s de l’ordinateur. Des biblioth`ques de proe grammes de gestion des p´riph´riques. e e e e les informations provenant du d´tecteur de temp´rature. avec a r´troaction de l’environnement. 2 ou 3 boutons. Ce dernier leur permet d’enchaˆ ıner automatiquement certaines actions. Fonctionnalit´s des ordinateurs e 19 gramme ´crit dans un langage de haut niveau en un texte en langage mae chine est une compilation. Un moteur qui tourne d´clenche ou non des e e actions selon la programmation manifest´e par la position de certains points de e contacts ´lectriques . on le e e sauvegarde en utilisant le programme de gestion de fichiers. la sauvegarde et le lancement e de programmes pour un ou plusieurs utilisateurs constitue un syst`me d’exe ploitation. e e e e e sont toujours livr´es avec l’ordinateur ou avec le p´riph´rique.

Apr`s ce chapitre. c’est-`-dire de le lancer. Nous y e e d´crivons toutes les ´tapes qui permettent de repr´senter et traiter les vece e e teurs de 0 et de 1 sur du mat´riel. e e On montre comment peut ˆtre mis en place le syst`me qui permet d’accepter e e plusieurs utilisateurs effectuant plusieurs tˆches simultan´ment. La quatri`me partie est centrale. La premi`re partie donne des fondements pour toute l’informatique. Le compteur programme. saut. on sait. syst`me s´quentiel. On y explique comment le processeur e ex´cute les instructions. Le processeur peut e ˆtre assimil´ ` un moteur qui tourne. bool´en. ou tout au a e . Les mots puce. a 5. Apr`s cette partie on e e a compris comment du mat´riel peut traiter du logiciel. de fa¸on d´taill´e. et effectue les actions correspondantes. Dans ce cas les instructions ne e sont plus ex´cut´es dans l’ordre o` elles sont ´crites. Les mots binaire. il e e pointe successivement sur des instructions. Plan du livre Le livre comporte six parties. en s’appuyant sur les e c e e connaissances acquises dans les trois premi`res parties. langage d’assemblage. on sait tout sur langage. Si les contacts disent de s’arrˆter ou d’aller plus loin d`s que l’action e e est termin´e. comment e e c e e marche l’ordinateur et comment on le con¸oit. Cela suppose des ajouts de mat´riel autour u e e du processeur et de la m´moire et l’introduction de programmes constituant le e syst`me d’exploitation. transistor ne poseront plus de probl`me.20 Qu’est-ce qu’un ordinateur ? On pourrait imaginer un comportement plus complexe dans lequel une action est ou n’est pas faite selon le r´sultat de l’action pr´c´dente. e Le mat´riel informatique a un tel comportement. Apr`s cette e e partie. m´moire. langage machine. ´tat. Ceci est fait de fa¸on d´taill´e. cela se produit. information. e e u e L’informatique est toutefois plus complexe qu’une simple machine ` laa ver car un programme peut avoir comme r´sultat de cr´er et d’´crire dans la e e e m´moire un programme et de lui passer la main. e e e La deuxi`me partie donne les techniques propres au mat´riel. c e a La sixi`me partie est n´cessaire pour le professionnel de l’informatique. Les intructions peuvent ˆtre conditionnelles. repr´sentation. registre. un rin¸age e e c c suppl´mentaire a lieu. On pourrait donc s’arrˆter l`. Les e a machines ` laver n’en sont pas capables. e e e bit. ´voque ce comportement : il passe devant des contacts. langage seront alors familiers. Elles e e peuvent comporter des ruptures de s´quence. Imaginons e e e un d´tecteur d’opacit´ de l’eau de rin¸age : si l’eau est trop opaque. qui ´volue e e a e p´riodiquement. e La cinqui`me partie donne tous les ´l´ments pour construire un ordinateur e ee au sens o` nous venons de le d´finir. logie cielle et mat´rielle. e La troisi`me partie donne les techniques propres au logiciel. e e e e circuit. branchement. Les outils math´matiques ne sont pas pr´sent´s ici pour e e e e eux-mˆmes mais pour ˆtre utilis´s dans la suite. automate.

5. Plan du livre

21

moins avec l’apparence de la simultan´it´. e e

22

Qu’est-ce qu’un ordinateur ?

Premi`re partie e Outils de base de l’algorithmique logicielle et mat´rielle e

Chapitre 2 Alg`bre de Boole et fonctions e bool´ennes e
George Boole, math´maticien anglais, a utilis´ pour la premi`re fois en e e e 1850 une alg`bre ` 2 ´l´ments pour l’´tude de la logique math´matique. Il a e a ee e e d´fini une alg`bre permettant de mod´liser les raisonnements sur les proposie e e tions vraies ou fausses. Etudi´e apr`s Boole par de nombreux math´maticiens, e e e l’Alg`bre de Boole a trouv´ par la suite de nombreux champs d’application : e e r´seaux de commutation, th´orie des probabilit´s, recherche op´rationnelle 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 ferm´s). Aujourd’hui, les ordinateurs e sont compos´s de transistors ´lectroniques fonctionnant sur 2 modes : bloqu´ ou e e e passant (Cf. Chapitres 7 et 8). Ils utilisent une arithm´tique binaire (Cf. Chae pitre 3). L’alg`bre de Boole constitue un des principaux fondements th´oriques e e pour leur conception et leur utilisation. Les circuits sont des impl´mentations e mat´rielles de fonctions bool´ennes. e e Les fonctions bool´ennes peuvent ˆtre repr´sent´es et manipul´es sous e e e e e diff´rentes formes. Ces repr´sentations ont des int´rˆts variant suivant de nome e ee breux crit`res. Selon la technologie de circuit cible, certaines repr´sentations e e sont plus ad´quates pour arriver ` une impl´mentation optimis´e. Une e a e e repr´sentation peut bien convenir ` certains types de fonctions et devenir tr`s e a e complexe, voire impossible ` utiliser pour d’autres. Enfin, selon l’outil de CAO a (Conception assist´e par ordinateur) utilis´, certaines formes sont accept´es e e e (car bien adapt´es ` une repr´sentation sur machine) ou non. e a e Le paragraphe 1. pr´sente les principales d´finitions concernant cette e e alg`bre et les fonctions bool´ennes. Les diff´rents moyens de repr´senter e e e e ces fonctions bool´ennes sont ´num´r´s dans le paragraphe 2. Le parae e e e graphe 3. d´crit les diff´rentes manipulations que l’on peut effectuer sur e e ces repr´sentations afin d’obtenir des formes permettant par la suite une e impl´mentation physique ` moindre coˆt. e a u

26

Alg`bre de Boole et fonctions bool´ennes e e

1.
1.1

Alg`bre de Boole e
Op´rations e

Soit l’ensemble B = {0, 1}. On d´finit une relation d’ordre total sur cet e ensemble en posant : 0 ≤ 1. A partir de cette relation d’ordre, on d´finit les e op´rations suivantes sur les ´l´ments de B : e ee Addition : x + y = max(x, y) Multiplication : x.y = min(x, y) Compl´mentation : x = 0 si x = 1 et x = 1 si x = 0 e ¯ ¯ On utilise les termes de somme, produit et compl´ment pour les r´sultats e e de l’addition, de la multiplication et de la compl´mentation. Le r´sultat de e e ces op´rations est d´taill´ dans la table suivante : e e e a 0 1 0 1 b 0 0 1 1 a+b 0 1 1 1 a.b 0 0 0 1 a ¯ 1 0 -

1.2

D´finition e

Soit A un ensemble non vide comportant deux ´l´ments particuliers not´s ee e 0 et 1. On d´finit sur l’ensemble A deux op´rations binaires not´es + et . et e e e une op´ration unaire not´e ¯. e e (A, 0, 1, +, ., ¯) est une alg`bre de Boole s’il respecte les axiomes suivants : e 1. L’addition 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 fa¸on ´quivalente (a.b).c ou c e a.b.c ; de mˆme : a + (b + c) ou a + b + c. e

2. 0 est ´l´ment neutre pour l’addition et 1 est ´l´ment neutre pour la ee ee multiplication. ∀a ∈ A : 0 + a = a ∀a ∈ A : a.1 = a 3. L’addition et la multiplication sont distributives l’une par rapport ` a l’autre : ∀a ∈ A, ∀b ∈ A, ∀c ∈ A : (a + b).c = a.b + a.c et (a.b) + c = (a + c).(b + c).
Remarque : L’usage a consacr´ la priorit´ de la multiplication sur e e l’addition comme dans la notation alg´brique usuelle. Par souci de sime plification d’´criture, on notera de fa¸on ´quivalente : (a.b) + c ou a.b + c. e c e

1. Alg`bre de Boole e

27

4. Pour tout ´lement, la somme d’un ´l´ment et de son compl´mentaire est e ee e ´gale ` 1 et le produit d’un ´l´ment et de son compl´mentaire est ´gal ` e a ee e e a 0 : ∀a ∈ A : a + a = 1 et ∀a ∈ A : a.¯ = 0. ¯ a

1.3

Exemples d’Alg`bres de Boole e

L’alg`bre de Boole la plus simple est d´finie sur l’ensemble ` deux ´l´ments : e e a ee B = {0, 1}. Pour l’´tude des raisonnements sur les propositions logiques, e il existe des synonymes pour les noms des ´l´ments de cet ensemble et des ee op´rations ; on parle alors de faux et vrai (au lieu de 0 et 1) et des op´rateurs et e e et ou (au lieu de la multiplication et de l’addition). Les d´finitions et les proe pri´t´s math´matiques restent identiques. Ces termes sont utilis´s aussi dans ee e e l’´tude des circuits logiques. e L’ensemble des parties d’un ensemble E (not´ P(E)) muni des op´rations e e d’intersection ensembliste (correspondant ` .), d’union ensembliste (correspona dant ` +) et de compl´mentaire ensembliste dans E (correspondant ` ¯) forme a e a une alg`bre de Boole. L’ensemble vide correspond ` 0 et l’ensemble E ` 1. e a a L’ensemble des nuplets de bool´ens muni des op´rations d’addition, de mule e tiplication et de compl´mentation ´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 th´or`mes e e

Th´or`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 simplification peuvent se pr´senter sous deux e e formes duales, l’une se d´duisant de l’autre en rempla¸ant les + par des . et e c les 1 par des 0 et inversement. R`gles e de simplification
duale

bool´enne e

:

¯ 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 ¯ ¯

←→ duale ←→ duale ←→ duale ←→ duale ←→ duale ←→ duale ←→

¯ 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

28

Alg`bre de Boole et fonctions bool´ennes e e

x1 0 0 0 0

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

Fig. 2.1 – Table de v´rit´ 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 g´n´raliser ` n variables : e e a x1 .x2 . . . . .xn = x1 + x2 + . . . + xn ←→ x1 + x2 + . . . + xn = x1 .¯2 . . . . .¯n ¯ ¯ ¯ ¯ x x
duale

2.
2.1
2.1.1

Fonctions bool´ennes e
Fonctions bool´ennes simples e
D´finitions e

On appelle fonction bool´enne simple une application de {0, 1}n dans e {0, 1} : (x1 , x2 , ..., xn ) −→ f (x1 , x2 , ..., xn ) (x1 , x2 , ..., xn ) est appel´e variable bool´enne g´n´rale. f est appel´e fonction e e e e e a ` n variables. Une valeur donn´e de (x1 , x2 , ..., xn ) est appel´e point de la e e fonction. La fa¸on la plus simple de d´finir une fonction est de donner la liste de c e ses valeurs en chaque point. On peut le faire sous la forme d’un tableau que l’on appelle aussi table de v´rit´. La figure 2.1 donne la table de v´rit´ d’une e e e e fonction ` 3 variables. a L’ensemble des points de la fonction forme le domaine de la fonction. On dit qu’une fonction couvre tous les points pour lesquelles elle vaut 1 (sousensemble du domaine pour lequel la fonction vaut 1). La fonction f d´finie 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 bool´enne peut servir ` repr´senter un ensemble : e a e la fonction vaut 1 en chacun des points appartenant ` l’ensemble. On parle de a fonction caract´ristique. e
f

2.1.2

Les fonctions ` 2 variables a

Les fonctions ` deux variables sont d´finies 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.

2. Fonctions bool´ennes e

29

x1 0 0 1 1 x1 0 0 1 1 x2 0 1 0 1

x2 0 1 0 1 f8 1 0 0 0

f0 0 0 0 0 f9 1 0 0 1

f1 0 0 0 1 f10 1 0 1 0

f2 0 0 1 0

f3 0 0 1 1 f11 1 0 1 1

f4 0 1 0 0 f12 1 1 0 0

f5 0 1 0 1 f13 1 1 0 1

f6 0 1 1 0 f14 1 1 1 0

f7 0 1 1 1 f15 1 1 1 1

Fig. 2.2 – Les tables de v´rit´ des 16 fonctions ` deux variables e e a

Les tables de v´rit´ des 16 fonctions ` deux variables sont list´es dans la fie e a e gure 2.2. f1 et f7 correspondent respectivement ` la multiplication et l’addition a alg´briques vues auparavant. e 2.1.3 Duale d’une fonction

On appelle duale d’une fonction f la fonction not´e f ∗ telle que : f ∗ (X) = e ¯ On dit qu’une fonction est autoduale si f ∗ (X) = f (X), ∀X. f (X).

2.2

Fonctions bool´ennes g´n´rales e e e

On appelle fonction bool´enne g´n´rale 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 bool´enne g´n´rale est un m-uplet de fonctions simples : e e e F = (f1 , f2 , . . . , fm ).

2.3

Relations d’ordre

L’ordre d´fini sur B est ´tendu aux variables g´n´rales et aux fonctions e e e e bool´ennes. e La relation d’ordre partiel sur les variables bool´ennes g´n´rales est d´finie 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 d’ordre partiel sur les fonctions bool´ennes simples est d´finie e e comme suit. La fonction f est inf´rieure ` la fonction g si et seulement si pour e a tout point P : f (P ) ≤ g(P ) ; c’est-`-dire si tous les points couverts par f sont a couverts par g.
Remarque : Si f et g sont respectivement les fonctions carat´ristiques des e ensembles A et B, f ≤ g signifie que A est inclus dans B.

30

Alg`bre de Boole et fonctions bool´ennes e e

La relation d’ordre partiel sur les fonctions bool´ennes g´n´rales est d´finie e e e e comme suit. La fonction g´n´rale F = (f1 , f2 , . . . , fm ) est inf´rieure ` 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-bool´ennes e

Une fonction bool´enne partielle est une fonction bool´enne dont la valeur e e n’est pas d´finie en chaque point. Dans la pratique les fonctions partielles e sont utilis´es pour d´finir des fonctions dont la valeur en certains points est e e indiff´rente ou dont la valeur des entr´es en certains points est impossible. e e On peut coder une fonction partielle f par une fonction totale dont le codomaine est compl´t´ par une valeur appel´e Φ. La valeur Φ est associ´e ee e e aux points non d´termin´s de f . Une telle fonction est dite phi-bool´enne. e e e D´finition On appelle fonction phi-bool´enne une application f de {0, 1}n e e 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 d’un 1 et d’un 0.
f

Exemple E2.1 : Une fonction phi-bool´enne e Soit la fonction ` 4 variables f (x1 , x2 , x3 , x4 ) qui vaut 1 si l’entier 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 indiff´rente e pour les points correspondant ` des valeurs comprises entre 10 et 15. On a peut la coder en fonction phi-bool´enne 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 d’une fonction phi-bool´enne Soit f une fonction phi-bool´enne. e e La borne sup´rieure de f est obtenue en rempla¸ant tous les Φ par des 1. Elle e c est not´e SUP(f). La borne inf´rieure de f est obtenue en rempla¸ant tous les e e c Φ par des 0. Elle est not´e INF(f). Si nous ´tendons la relation d’ordre donn´e 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 sup´rieure et inf´rieure d’une fonction e e phi-bool´enne : 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

3. Repr´sentation des fonctions bool´ennes e e

31

3.

Repr´sentation des fonctions bool´ennes e e

Comme nous l’avons vu pr´c´demment la fa¸on la plus simple de repr´senter e e c e une fonction est de donner la liste de ses valeurs. Cette repr´sentation, dite e en extension, n’est malheureusement plus possible d`s que le nombre de vae riables augmente. En effet une fonction ` n variables comporte 2n valeurs. a De nombreux types de repr´sentation plus compactes, dites en compr´hension e e existent. Leur utilisation varie principalement suivant leur degr´ de complexit´ e e et de facilit´ de manipulation ` des fins d’impl´mentation mat´rielle (Cf. Chae a e e pitre 8). Nous donnons dans cette partie trois types de repr´sentations, tr`s utie e lis´es aujourd’hui : les expressions alg´briques, les tableaux de Karnaugh et les e e BDD. Outre les repr´sentations des fonctions simples nous montrons comment e repr´senter une fonction g´n´rale ` l’aide de la repr´sentation des m fonctions e e e a e simples qui la composent.

3.1
3.1.1

Expressions alg´briques e
D´finitions e

Expression bool´enne alg´brique : Toute fonction bool´enne peut ˆtre e e e e repr´sent´e par une expression alg´brique construite ` partir des noms des e e e a variables simples de la fonction, des constantes 0 et 1, et des op´rations de e l’alg`bre de Boole. Par exemple, f (x1 , x2 ) = x1 .(x2 + x1 .x2 ) ou g(x1 , x2 ) = e ¯ 1.(0 + x1 .x2 ). ¯ Cette repr´sentation n’est pas unique. Par exemple, x1 .(x2 + x1 .x2 ) + x2 et e ¯ ¯ x1 + x2 sont deux expressions alg´briques d’une mˆme fonction. ¯ e e Litt´ral : On appelle litt´ral l’occurrence d’une variable ou de son e e compl´ment dans une expression alg´brique. Les litt´raux apparaissant dans e e e l’expression de la fonction f d´finie ci-dessus sont : x1 , x2 , x2 . e ¯ Monˆme : On appele monˆme un produit de p litt´raux distincts. Par o o e exemple, x1 .x2 .x3 . Un monˆme est dit canonique pour une fonction s’il contient ¯ o toutes les variables de la fonction. Chaque ligne de la table de v´rit´ correse e pond ` un monˆme canonique. On note dans le monˆme 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 monˆme e o canonique x1 .x2 .x3 . ¯ ¯ Forme polynˆmiale : On dit qu’une expression est sous forme polynˆmiale o o si elle est ´crite sous forme de somme de monˆmes. Par exemple, f (x1 , x2 ) = e o x1 + x1 .x2 . ¯

1. e Il existe la forme duale du th´or`me de Shannon : e e f (x1 .. un produit de sommes appel´es monales. 1.4 Expressions polynˆmiales des fonctions ` 2 variables o a La figure 2. xi−1 . xi+1 . 1)) + x1 .x2 . ..0 + x1 .f (x1 . c’est l’op´ration ou exclusif qui est appel´e disjonction. x2 ) = x1 . e La d´composition de Shannon sur la variable xi s’´crit : f = xi . 1) + x1 .fxi . Ils sont e e a not´s respectivement fxi et fxi .fxi + xi . xn ) = (xi + f (x1 . . . x2 ) = x1 . 0.(xi + f (x1 . .(x2 . pour une fonction ` deux variables on obtient : a f (x1 .x2 ..f (1..f (1. x2 ) = x1 .f (0. . e 3...x2 ..2 Th´or`me de Shannon e e Soit f (x1 . a Exemple E2. . x2 .1 + x1 . x2 .1...f (1.. . 1)) ¯ ¯ ¯ f (x1 . 0) + x2 .(x2 . x2 . · · · . . x2 ) + x1 .. 1.x2 .. 0. x2 .. . la somme est aussi appel´e disjonction alors que dans le domaine e des circuits. Par exemple.x2 . 0) + x2 .. x2 ) = x1 .x2 .. xn )) ¯ 3. xn ) ¯ f (x1 . 0) + x1 .32 Alg`bre de Boole et fonctions bool´ennes e e 3. . x2 . Toute fonction e e poss`de une et une seule forme de ce type. xn ) sont appel´s cofacteurs positif et n´gatif de f par rapport ` la variable xi . x2 ) ¯ f (x1 . . 1) ¯ ¯ ¯ ¯ Cette forme est appel´e premi`re forme de Lagrange.f (0.. · · · . xn ) + xi . on obtient la deuxi`me e e e forme de Lagrange. Son expression alg´brique sous la e 0 1 premi`re forme de Lagrange est : e h(x1 .3 donne l’expression polynˆmiale des 16 fonctions de deux vao riables bool´ennes.f (1. 0) + x1 . ..1.f (0... .n f (x1 . . . .f (0. ¯ ¯ ¯ ¯ 1 1 y 1 1 0 0 En utilisant la forme duale du th´or`me de Shannon. xn )).f (1. . on obtient une forme polynˆmiale compos´e de tous les o e monˆmes canoniques affect´s de coefficients correspondant aux valeurs de la o e fonction.x2 ..3 Formes de Lagrange En appliquant successivement le th´or`me de Shannon sur toutes les vae e riables de la fonction. . xi−1 .x2 . . · · · . 0. xi+1 . xn ) et f (x1 . x2 .. x2 . 1.1 + x1 . · · · . . e e .f (0. e En logique. xn ) = xi . .0 = ¯ ¯ ¯ ¯ 1 0 x1 . e e Cette d´composition est unique. e On simplifie en g´n´ral cette forme en supprimant tous les monˆmes dont le e e o coefficient est 0 et en enlevant les coefficients ` 1. . . C’est une expression canonique.x2 + x1 .f (x1 .. xn ) une fonction simple de B n dans B : ∀i ∈ 1.2 : Premi`re forme de Lagrange d’une fonction e x1 x2 Soit h une fonction ` deux variables d´finie par la a e 0 0 table ci-contre.x2 qui se simplifie en x1 .

x2 ¯ f5 x2 f6 x1 .x2 ¯ ¯ f10 x2 ¯ f11 x1 + x2 ¯ f12 x1 ¯ f13 x1 + x2 ¯ f14 x1 .3. and.1 D´finition e Un tableau de Karnaugh est une repr´sentation particuli`re de la table de e e v´rit´ permettant de manipuler facilement (` la main) les diff´rentes formes e e a e alg´briques polynˆmiales d’une fonction .7 repr´sente un tableau de Karnaugh pour une fonction ` 3 variables e a et la figure 2. Le tableau peut ˆtre vu comme un e e hypercube o` chaque sommet correspond ` un point de la fonction.5 le tableau de Karnaugh d’une fonction ` 4 variables.5.x2 f2 x1 . Par exemple. nor conjonction compl´ment de x2 e compl´ment de x1 e implication exclusion.x2 ¯ ¯ f7 x1 + x2 f8 x1 + x2 f9 x1 . non et. somme ni.x2 ¯ f3 x1 f4 x1 .x2 + x1 . . Repr´sentation des fonctions bool´ennes e e 33 Fonctions Expressions f0 0 f1 x1 .2 Tableaux de Karnaugh 3. or. e la figure 2. a Dans un tableau de Karnaugh.x2 + x1 . nand tautologie Fig.x2 f15 1 Noms usuels et. Dans l’exemple de la figure 2. entre les cases de la deuxi`me et la e troisi`me colonne seule la variable a change. nous le d´finissons ici et verrons au e o e paragraphe 4.2. une seule variable change de valeur entre deux cases voisines verticalement ou horizontalement (on parle de cases adjacentes). 2. Deux somu a mets sont adjacents s’il existe dans l’hypercube une arˆte entre eux (Cf. comment l’utiliser. Un tableau de Karnaugh se pr´sente comme une table ` plusieurs entr´es. non ou. Figure e 2. e a e chaque variable de la fonction apparaissant sur une des entr´es.3 – Expression polynˆmiale des fonctions ` deux variables o a 3.4). produit ou exclusif ou.

¯.34 Alg`bre de Boole et fonctions bool´ennes e e c (0.1.d + a.1.b.0) (b) (1.1) (0. ¯ ¯ .d + a. colonne) sont adjacentes ` celle de la derni`re. e o Sur l’exemple de la figure 2.5. Une fois les regroupements effectu´s l’obtention des o e variables du monˆme se fait ais´ment. 2.c.b. b) Pr´sentation du tableau de Karnaugh associ´ . Ce sont celles qui ne changent pas de o e valeur entre les diff´rentes cases correspondant au monˆme.(c + c) + o c ¯ b. 2. e a e Ainsi les 4 cases des coins d’un tableau de Karnaugh ` 4 variables peuvent a aussi former un monˆme.¯.1) (1.5 – Un tableau de Karnaugh ` 4 variables a 3.0.2 Obtention d’une somme de monˆmes ` partir d’un tableau o a de Karnaugh En dimension 2.0.0) a (a) (1.¯ c. les colonnes et lignes d’un tableau de Karnaugh sont agenc´es de telle fa¸on qu’un monˆme de la fonction corresponde ` un rectangle e c o a de 2n cases adjacentes portant la valeur 1.d.0. Il correspond ` la simplification suivante ` partir a a ¯ ¯ des 4 monˆmes canoniques : a.2. Les a o o cases de la premi`re ligne (resp.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.¯ ¯ b. b et c.0) b (0.1.1) (0.0) (1.b.¯ d = a.d + a.1.4 – a) Repr´sentation sur un hypercube ` 3 dimensions d’une fonction ` trois e a a variables a. Un tel regroupement de cases correspond ` la simplification d’une somme de monˆmes en un seul monˆme.0.1) 0 1 00 * O 01 O 11 10 O Fig.d ¯c 10 Fig. le monˆme correspondant au regroupement o ¯ de 4 cases est a. les cases e e marqu´es d’un O sont adjacentes ` la case marqu´e d’une ´toile.c. e a e e ab cd 00 0 1 0 0 01 0 1 0 0 11 1 0 0 1 10 1 0 0 1 ¯ a.d 00 01 11 a.

¯ c. Il correspond ` la simplification ` partir des 4 monˆmes canoniques ¯c a a o suivants : a.6 – Un tableau de Karnaugh ` 5 variables a ¯ ¯ ¯ a. Repr´sentation des fonctions bool´ennes e e 35 ab 00 cd 01 0 1 1 1 e=0 11 0 0 0 0 10 1 0 0 0 ab 00 cd 01 0 1 0 0 e=1 11 0 1 1 0 10 1 1 1 0 00 01 11 10 0 1 1 1 00 01 11 10 0 1 0 0 Fig. 2.d. b.¯. e c b+¯ 3.(e + e) = a.7 est : f (a.6 est a.d. a a 3.d. de synth`se logique depuis une die e .d.A.¯ c.b.¯.e + a.d.O. ee e Ils sont utilis´s dans les outils de C. l’autre pour cette a a mˆme variable ` 1).d.3 Obtention d’un produit de monaux On peut obtenir facilement une forme compos´e des monaux d’une fonction e (forme duale) ` partir de son tableau de Karnaugh.¯+ a.¯.¯. ¯ ¯ b.2.¯ d.¯ d = a.¯. b) ¯ c e ¯ c ¯c ¯ ¯c L’expression polynˆmiale de la fonction d´finie par les tableaux de Karo e naugh de la figure 2.¯ + a.d. b.e = a.d.d.b. ¯ b) Ce type de repr´sentation est bien adapt´ aux fonctions de 2 ` 5 variables.e = a.¯.e+ a.¯ ¯ On peut proc´der de la mˆme mani`re pour des fonctions ` 6 variables en e e e a dessinant 4 tableaux ` 4 variables.¯ e ¯ c e ¯ b.3 Graphes de d´cision binaire e Les graphes de d´cision binaire (en anglais Binary Decision Diagram : e BDD) ont ´t´ introduits par Akers et Bryant dans les ann´es 80 ([Bry86]).¯ c. e e a Les fonctions ` 5 variables peuvent ˆtre repr´sent´es sur deux tableaux de a e e e Karnaugh ` 4 variables (l’un pour une des variables ` 0.¯.¯. L’expression alg´brique sous forme produit de monaux de la fonction f e d´finie par le tableau de Karnaugh de la figure 2.¯.d.(b + ¯ = a.¯.(c + c) = a.¯.d.d. Pour cela on regroupe les a cases adjacentes comportant des 0. Les variables du monal sont celles qui ne changent pas mais sont donn´es sous forme compl´ment´e par rapport ` leur e e e a valeur. les 2 regroupements gris´s sont un seul monˆme : e o a.d.¯ + a.6.d + a.(b+ ¯ a.¯ ¯ c ¯c e b)+ ¯ c ¯ = a.e.¯+ a.d.d.d + a. ¯c ¯ e b. Sur la figure 2.3.c.b. au-del` cela devient inextricable. c) = (a+¯)(¯ c). Deux cases situ´es ` la mˆme place sur les 2 tableaux sont e a e a e adjacentes.(b+ ¯ b.

¯ + a. Paragraphe 4. ¯ b. ´tant donn´ l’unicit´ de la e e e e d´composition de Shannon. Ils permettent de repr´senter et de manipuler des fonctions e e bool´ennes de grande taille. e Un tel arbre est une repr´sentation ´quivalente ` la table de v´rit´ de la e e a e e fonction. Figure 2. b.¯ c + a.¯ + a. 3. e Nous allons d´finir tout d’abord les arbres de Shannon. Les valeurs de la fonction se trouvent sur les feuilles de l’arbre.8 – La d´composition de Shannon repr´sent´e par un arbre binaire e e e zaine d’ann´es.9-a sans e e tenir compte des parties gris´es). la fonction f a comme premi`re forme de e Lagrange : f (a. Pour une valeur donn´e de la fonction.b. appel´ arbre de Shannon. une forme alg´brique) sans avoir ` e e a construire l’arbre de Shannon (Cf.1 Arbre de Shannon On peut repr´senter la d´composition de Shannon par un arbre binaire o` e e u la racine est ´tiquet´e par la variable de d´composition. 2.7 – Monaux sur un tableau de Karnaugh f xi 0 fxi 1 fxi Fig. la valeur de chaque variable est donn´e par e e l’´tiquette de l’arc emprunt´ pour aller de la racine ` la feuille correspondante. 2. un BDD ´tant e e un graphe acyclique orient´ ayant les mˆmes chemins que l’arbre de Shane e non associ´ mais dans lequel il n’y a pas de redondances.c. ` coˆt algorithmique int´ressant.¯ ¯ c b.9-a.8).3. la repr´sentation sous forme d’arbre de Shannon e e .¯ c + a. pour toutes les variables de f . ` partir a u e a d’une autre repr´sentation (par exemple. Tout l’int´rˆt des e ee BDD est que l’on sait les construire. e e a Sur l’exemple de la figure 2. e Si l’on it`re la d´composition de Shannon avec cette repr´sentation sur les e e e deux cofacteurs.b. Figure 2.36 Alg`bre de Boole et fonctions bool´ennes e e c ab 00 1 0 01 1 0 11 1 0 10 1 1 ¯+c b ¯ 0 a+c ¯ 1 Fig. dont les feuilles sont les constantes 0 et 1 et les e noeuds sont ´tiquet´s par les variables de la fonction (Cf. c) = a.3). on obtient un arbre binaire. le fils droit par le e e e cofacteur positif et le fils gauche par le cofacteur n´gatif (Cf.¯ c Une fois fix´ un ordre total sur les variables.b.

10-b). Un ROBDD est encore canonique. on parle alors de BDD typ´s. certains e sous-arbres sont identiques. e e Il existe dans cette repr´sentation des redondances. Repr´sentation des fonctions bool´ennes e e 37 f a a f b b b b c c c c c c 1 0 1 0 1 0 1 1 1 0 1 1 Fig. on parle de ROBDD (en anglais Reduced Ordered BDD). c avec l’ordre : a < a < b < c et le r´sultat de la mise en commun de 3 sous-arbres identiques.3. On peut ´galement ´liminer les noeuds tels que tous les arcs sortants ont la e e mˆme cible. < e est unique. Par exemple. e e e . La figure 2. 2. Le graphe sans redondance est appel´ graphe de d´cision binaire r´duit. Un probl`me est de trouver un ordre optimal.3. e D’autres m´thodes de simplification de BDD consistent ` ajouter des infore a mations suppl´mentaires sur les arcs. le graphe e ee ne poss`de plus qu’un seul noeud ` 1 et un seul noeud ` 0. e En consid´rant les feuilles comme des sous-arbres ´l´mentaires.2 Redondance dans les arbres de Shannon On d´finit la taille d’un arbre de Shannon par le nombre de ses noeuds. e e e Dans le cas o` il poss`de le mˆme ordre de d´composition des variables sur u e e e tous ses chemins.9 on obtient le graphe de la figure 2. Pour l’exemple de e a a la figure 2. Sur l’exemple pr´c´dent. Fie e e gure 2. b.10-a. 3. La taille effective du ROBDD d´pend de l’ordre e choisi pour les variables. e Un arbre de Shannon est de taille 2n − 1.9 – L’arbre de Shannon d’une fonction f ` 3 variables a. n ´tant le nombre de variables de la e fonction repr´sent´e. Le lecteur e e pourra trouver des informations d´taill´es sur ces m´thodes dans [Bry86].9-b montre la mise en commun de trois sous-arbres identiques (ceux qui sont en gris´s sur la partie a de la figure). on supprime ainsi deux noeuds (Cf.

Ces e e e e crit`res de performance peuvent ˆtre traduits de fa¸on plus ou moins pr´cise en e e c e crit`res simples d’optimisation sur les formes des fonctions bool´ennes. surface en millim`tres carr´s. b) La suppression de noeuds a a qui n’apportent pas d’information. e Les premi`res m´thodes bas´es sur les tableaux de Karnaugh ont vu le e e e jour dans les ann´es 50 [Kar53]. 2. la forme e de d´part de la fonction dans ce processus influe ´norm´ment sur la forme e e e du circuit r´sultant et en particulier sur ses performances en terme de rapie dit´ de calcul. Devant l’augmentation de la complexit´ des fonctions et e des formes n´cessaires pour une impl´mentation dans des technologies de plus e e en plus vari´es. etc. Elles permettent d’obtenir une forme poe lynˆmiale minimis´e de fa¸on manuelle. des m´thodes bas´es sur des repr´sentations plus compactes. 4. Kun67]. Nous e e justifierons ces crit`res au chapitre 8. Nous vere e e e e rons dans le chapitre 8 comment peut ˆtre r´alis´ le processus de synth`se e e e e d’une fonction bool´enne vers une technologie cible. e .10 – a) La mise en commun des feuilles ` 1 et ` 0. Des algorithmes permettant de trouver o e c une forme polynˆmiale minimale ont ensuite ´t´ d´velopp´ dans les ann´es 60 o ee e e e et 70 [Kun65.38 Alg`bre de Boole et fonctions bool´ennes e e f a a f a f b b b b b c c c c c 1 (a) 0 1 0 (b) 1 0 Fig. Manipulation de repr´sentations e de fonctions bool´ennes e Un circuit est en g´n´ral sp´cifi´ par une fonction bool´enne. consommation ´lectrique. ont vu le jour depuis. e e e e en particulier graphe de d´cision binaire. Selon les outils. e Nous indiquons dans ce paragraphe quelques formes particuli`res et e quelques m´thodes pour manipuler l’expression d’une fonction bool´enne ` e e a des fins d’optimisation en vue d’une impl´mentation physique.

d ¯ ¯ b. Le nombre de litt´raux f (a. a. e e Les crit`res d’optimisation sont alors le nombre de fonctions (qui est li´ ` la e ea surface du circuit r´sultant) et le nombre d’´tages de sous-fonctions imbriqu´es e e e (qui est li´ au temps de calcul du circuit). d) = a. c.d + c.1 Formes particuli`res pour l’expression d’une e fonction bool´enne e La plupart des technologies cibles actuelles (Cf.¯ + a. c.4.c + a.c + a. Il est ` noter que e e a ces m´thodes sont aujourd’hui souvent employ´es sur des formes en ROBDDs. par exemple. d) = SF + c.¯ c. Chapitre 8) n´cessitent des e d´compositions des fonctions en expressions d’une forme particuli`re.¯ c et SF2 = ¯ b. b.b. e a . ¯ b.b. la e forme alg´brique de la fonction : f (a.b + a. Deux sous fonctions ont ´t´ introduites.b. Des algorithmes propres ` chaque technologie ont ´t´ a ee d´velopp´s.(¯ c + d)) + a. c.b. Le nombre de litt´raux est ¯¯ ee e 12 .¯ ¯¯ peut aboutir avec des formes cibles diff´rentes. On parle alors de biblioth`que. e Exemple E2. Regardons les solutions auxquelles on ¯ b.¯ c + c. peut ˆtre n´cessaire. o e e e On devra par exemple aboutir ` un ensemble de fonctions poss´dant une des a e formes suivantes : a + b. Il peut aussi ˆtre n´cessaire de o e e e repr´senter les fonctions avec un ensemble de formes fix´es.d + c.d. Des m´thodes ont ´t´ mises au point permettant d’automatiser e e ee la recherche de formes factoris´es ` nombre de litt´raux minimal. Une e e a nouvelle fonction appel´e sous-fonction SF a ´t´ introduite pour parvenir ` e ee a un ensemble de fonctions respectant le crit`re. c. e Si l’on veut aboutir ` des fonctions poss´dant au plus deux monˆmes de a e o trois variables : f (a.3 Soit la fonction f d´finie par l’expression alg´brique : e e f (a. b. Le crit`re de minimisation est le nombre e e e e de litt´raux apparaissant dans l’expression de la fonction. Ce sont en g´n´ral e e e e des formes de petite taille (nombre de variables inf´rieur ` 6) avec des formes e a polynˆmiales ou factoris´es fix´es strictement. e e Pour certaines cibles technologiques une forme non polynˆmiale.b poss`de e ¯ b. d) = a. par exemple. un ensemble de fonctions d’au plus 10 e monˆmes poss´dant chacun au plus 6 variables.b.¯ c. d) = SF1 + SF2 avec SF1 = a.¯ e est 11. b.d + c.(¯ e 6 litt´raux. Par exemple.c ou a. un ensemble de fonctions d’au plus e 8 variables.d. Le nombre d’´tages maximal est e e appel´ chemin critique. ¯ ¯b Le probl`me est donc dans tous les cas de partir d’une fonction bool´enne e e et d’aboutir ` un ensemble de fonctions respectant la ou les formes impos´es a e par la technologie cible. e Si l’on veut aboutir ` des fonctions poss´dant au plus trois variables : a e ¯ avec SF = a. a. e e On peut vouloir aboutir ` une repr´sentation de forme quelconque mais ` a e a nombre de variables limit´. appel´e o e forme factoris´e. Le nombre de fonctions imbriqu´es maximal est ´gal ` 2 : (f. SF ). Le lecteur e a e pourra trouver des d´tails sur ces m´thodes dans [BRWSV87].c + a. Manipulation de repr´sentations de fonctions bool´ennes e e 39 4. On peut souhaiter une forme polynˆmiale ` nombres de monˆmes o a o et de variables limit´s. b. Le chemin critique est ´gal aussi ` 2.¯ a.

d.d. ¯ e e et M 1 + M 2 + M 3. ¯ monˆmes premiers : M 1 = b.c ou a. o c ¯ ¯c ¯ ¯ Elle poss`de 2 bases irr´dondantes : M 1 + M 2 + M 4 + M 5 M 5 = a.11 poss`de 5 e e e ¯ ¯ d. SF3 ). les plus grands possible.d + a. on n’a plus une base de la fonction. Base : on appelle base d’une fonction bool´enne une forme polynˆmiale de la e o fonction compos´e uniquement de monˆmes premiers.c.b : f (a. De plus SF3 = b. M 4 = a. L’expression minimale (en nombre de monˆmes) de la o fonction est : f = b.¯ e 14.SF3 + a.b ou a ¯b ¯ + a. Le chemin critique est ´gal ici ` 3 (f.2 Obtention d’une forme polynˆmiale minimale ` partir d’un o a tableau de Karnaugh On peut obtenir de fa¸on tr`s visuelle les monˆmes premiers sur un tableau c e o de Karnaugh ` 2 dimensions en cherchant les pav´s de cases adjacentes valant a e 1. Exemple E2.c. e a 4.¯ + ¯ c b.2 Obtention d’une forme polynˆmiale o De nombreuses technologies de r´alisation des circuits n´cessitent une forme e e polynˆmiale. 4. ¯ . On appelle base compl`te e o e la base compos´e de tous les monˆmes premiers de la fonction. Le crit`re d’optimisation est alors le nombre de monˆmes apo e o paraissant dans la forme polynˆmiale puis le nombre de variables dans ces o monˆmes.¯ ou a. M 2 = b.¯. b.b ¯ ¯ ¯ SF2 = c.b.2. c.c. Une o fonction bool´enne peut avoir plusieurs bases irr´dondantes.¯.4 La fonction repr´sent´e sur la figure 2. d`s que l’on ˆte e e e o l’un des monˆmes qui la composent. SF1 . Le nombre de litt´raux est ¯¯ b.¯ d ¯ b.c et SF4 = ¯ c. d) = SF1 + SF2 avec SF1 = a. e o 4. e e Le but de la minimisation est donc d’obtenir une base irr´dondante e poss´dant le minimum de monˆmes.SF4 et a. e o Base irr´dondante : une base est dite irr´dondante si.1 D´finitions e Monˆme premier : un monˆme m est dit premier pour une fonction f si o o l’on a : m ≤ f et s’il n’existe pas m = m tel que m ≤ m et m ≤ f .d + c. M 3 = a.d.2.40 Alg`bre de Boole et fonctions bool´ennes e e Si l’on veut aboutir ` des fonctions de la forme a + b ou a. Un certain nombre de techniques de simplification respectant ce o crit`re ont ´t´ mises au point et int´gr´es dans les outils modernes de CAO. e ee e e Nous montrons ici comment obtenir une forme polynˆmiale r´duite ` partir o e a d’un tableau de Karnaugh. Cette m´thode peut ˆtre pratiqu´e ` la main pour e e e a des fonctions ayant moins de 6 variables.b + a.b.

2. Pratiquement.c qui est un monˆme de la borne sup´rieure.12-a n’est pas premier pour f car il est plus petit que a. Manipulation de repr´sentations de fonctions bool´ennes e e 41 ab 00 cd 01 1 1 0 0 11 1 1 0 0 10 0 0 1 0 00 01 11 10 1 0 1 1 Fig. Devant e o l’accroissement de la taille des fonctions ` manipuler. e a e Une fonction phi-bool´enne est une fonction totale codant une fonction e partielle et telle que chacun des Φ correspond ` une valeur indiff´rente. Le probl`me de la e e e a e d´termination d’une base irr´dondante minimale est un probl`me NP-complet. On peut a e par cons´quent associer ` ce Φ la valeur 1 ou bien la valeur 0. 2.3 Probl`me de la minimisation polynˆmiale e o Le nombre de monˆmes premiers et de bases irr´dondantes d’une fonction o e peut ˆtre tr`s grand et une solution tr`s longue ` trouver. e a on va remplacer certains Φ par des 0 et d’autres par des 1 de fa¸on ` obtenir c a un minimum de monˆmes. Cas des fonctions phi-bool´ennes : Les monˆmes premiers d’une fonction e o phi-bool´enne sont ceux de sa borne sup´rieure. Les deux monˆmes a.11 – La base compl`te d’une fonction bool´enne e e 4. Une base d’une fonction phie e bool´enne est une somme de monˆmes premiers telle que tous les points de e o la borne inf´rieure sont couverts par au moins un de ses monˆmes premiers.c et b.4. e .12-c suffisent pour couvrir les points de la borne inf´rieure.¯. e o La m´thode pour trouver une forme minimale d’une fonction phi-bool´enne e e consiste ` trouver tous les monˆmes premiers de la borne sup´rieure puis ` a o e a trouver toutes les bases irr´dondantes par rapport ` sa borne inf´rieure.5 Le monˆme repr´sent´ sur le tableau de Karnaugh de la o e e figure 2. o Exemple E2. e e e La m´thode consiste ` trouver la base compl`te puis ` extraire toutes les bases e a e a irr´dondantes par essais successifs de suppression de chaque monˆme. les outils de CAO sont a pourvus de minimiseurs qui sont bas´s sur des algorithmes ` base d’heuristiques e a diverses.d de la figure o e o c 2.

Par exemple. v2 . . . . On o e e fait ensuite tous les produits possibles de ces monˆmes entre eux.M = (m. vt ). . . . 1. (1. on d´finit les monˆmes e c e o g´n´raux premiers. . (v1 + v1 . . . e Cas des fonctions g´n´rales : Dans le cas d’une fonction g´n´rale F = e e e e n t (f1 . . . . le crit`re de minimisation est le nombre de e monˆmes de l’ensemble des t fonctions simples qui composent la fonction o g´n´rale. vt ) ≤ (v1 . . 1)). . . . Un monˆme g´n´ral M est dit premier pour une fonction e e o e e g´n´rale F si l’on a : M ≤ F et s’il n’existe pas M = M tel que M ≤ M et e e M ≤ F. . . 1. .m. On d´finit un ordre sur les monˆmes g´n´raux : M ≤ M ⇔ (m ≤ m ) et e o e e (v1 . . La m´thode de minimisation en utilisant des tableaux de Karnaugh consiste e a ` prendre tous les regroupements de cases maximaux sur plusieurs tableaux ` a la fois. . . . . (v1 . De la mˆme fa¸on que pour une fonction simple.12 – a) Une fonction Phi-Bool´enne f . (v1 . . v2 . vt . . 0)) . . b) La base compl`te de la borne sup´rieure e e e de f . le monˆme g´n´ral e e e o e e associ´ ` un monˆme m ne figurant que dans l’expression de la fonction f2 e a o est : (m. v2 + o e e e e . vt )) o` m est un monˆme o e e u o d’une des fonctions fi (i = 1. . vt )) et o e e M = (m . le produit o de deux monˆmes g´n´raux ´tant d´fini par : M. . . . c) La seule base irr´dondante de f . . vt ) est un vecteur bool´en. . . . .42 Alg`bre de Boole et fonctions bool´ennes e e ab cd 00 01 Φ 0 0 0 Φ 1 0 0 (a) 11 10 0 1 1 1 0 0 Φ 1 ab cd 00 01 1 0 0 0 1 1 0 0 (b) 11 10 0 1 1 1 0 0 1 1 ab cd 00 01 Φ 0 0 0 Φ 1 0 0 (c) 11 10 0 1 1 1 0 0 Φ 1 00 01 11 10 00 01 11 10 00 01 11 10 Fig. . . . e e ıt a Pour obtenir tous ces monˆmes premiers g´n´raux on cherche d’abord tous o e e les monˆmes premiers de chaque fonction composant la fonction g´n´rale. . f2 . Soient M et M deux monˆmes g´n´raux : M = (m. (v1 . Un regroupement de plusieurs cases dans un des tableaux de Karnaugh peut ne pas ˆtre maximal dans ce tableau mais correspondre ` un monˆme e a o premier g´n´ral parce qu’il apparaˆ dans plusieurs tableaux ` la fois. Il e d´finit la fonction g´n´rale : (v1 . . . vt )). . (0.m . t) est : (p. le monˆme g´n´ral associ´ au monˆme p figurant dans o e e e o l’expression de chacune des fonctions fi (i = 1.m). ft ) de B dans B . . . t) et (v1 . . v2 . e e Un monˆme g´n´ral M est un couple (m. . . v2 . 0. 2.

(1. e Sur la figure 2. (1. 0)). f2 ) poss`de 7 monˆmes premiers g´n´raux M 1 = (¯. (1. M 5 = (a. 1)) o b. a c ac Dans cet exemple. o Exemple E2.¯. .d. La fonction g´n´rale o e e F = (f1 . 1)). (0.¯ c.d. (1. (1. .4. 1)) est premier car dans f2 .13 – Les bases compl`tes des fonctions f1 et f2 e M4 ab 00 cd 01 0 1 1 1 f1 11 0 0 0 0 10 M6 1 0 0 0 M3 M7 ab 00 cd 01 0 1 0 0 f2 11 0 1 1 0 10 1 1 1 0 M5 00 M1 0 1 1 1 00 01 11 10 0 1 0 0 01 11 10 M2 Fig. Enfin. 0)) et (¯.¯ ¯ ac e e e .¯ (a.d) n’est pas un monˆme de f1 . Le monˆme o ¯c a o g´n´ral M 5 = (a.¯ c.c.¯ c. 1)).6 Sur la figure 2.¯ ¯ et (¯. M 6 = a c b. 2.d. (1.14 est repr´sent´e la base compl`te de la fonction g´n´rale e e e e e F = (f1 . 2. on ne garde que les monˆmes les plus grands.d. le monˆme g´n´ral M 7 = (¯.d. (1.d. M 7 = (¯. 1)). (1. Ces deux bases sont irr´dondantes.¯ b.d ` la fois dans f1 et f2 .d. (0.d.d.¯. (0. .d) et (a. Les monˆmes gris´s sont des monˆmes g´n´raux premiers obtenus o e o e e par produits des monˆmes : (a.¯. 1)) est premier car il o e e ac n’existe pas de monˆme plus grand que a.¯. vt + vt )). 1)). Les deux bases irr´dondantes g´n´rales de b. 0)) et (a. 0)). (0.¯ c. M 4 = (a. (1. (0.d.13 sont repr´sent´es les deux bases compl`tes e e e des fonctions f1 et f2 .d.14 – La base compl`te de la fonction g´n´rale F = (f1 .¯ c. . 1)). f2 ). M 3 = (¯. (0.d.¯ ¯ b. il n’existe pas de monˆme e e o plus grand que (a. 1)). Manipulation de repr´sentations de fonctions bool´ennes e e 43 ab 00 cd 01 0 1 1 1 f1 11 0 0 0 0 10 1 0 0 0 ab 00 cd 01 0 1 0 0 f2 11 0 1 1 0 10 1 1 1 0 00 01 11 10 0 1 1 1 00 01 11 10 0 1 0 0 Fig. 1)) pour (¯. M 2 = e o e e a (¯. f2 ) e e e v2 . 1)) pour (a.

16 un algorithme de e e sp´cification fonctionnelle de la construction d’un BDD ` partir d’une exprese a sion alg´brique bool´enne. 2. Pour fixer les id´es. Il s’agit de construire le BDD sans construire l’arbre de Shannon complet. e 4. La comparaison de deux BDDs consiste en la comparaison des pointeurs associ´s aux racines des graphes. il faut d´finir une table avec adressage dispers´ (hashcode e e en anglais). M 7. e a e Nous donnons ici les principes de base pour construire un BDD r´duit ore donn´ ` partir d’une expression bool´enne alg´brique. Pour cela.3 Obtention de BDDs r´duits ordonn´s e e L’utilisation des BDDs est aujourd’hui largement r´pandue car c’est une e repr´sentation tr`s compacte et particuli`rement adapt´e ` l’obtention de e e e e a formes factoris´es et ` la d´composition en sous-fonctions. M 5 et M 2. ea Soit un ordre donn´ sur les variables de la fonction. e e La fonction RepCanonique fabrique un nouveau BDD ` partir d’une variable a et de deux BDDs diff´rents. e . Pour ea la mettre en oeuvre.15 – La base irr´dondante minimale de la fonction g´n´rale 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 monˆmes o de la base irr´dondante minimale : M 6. Lors de la mise en oeuvre de cet algorithme. on construit r´cursivement le BDD en ´vitant de e e fabriquer un sous-arbre d´j` construit. Nous avons vu qu’un BDD est un graphe de Shannon dans lequel il n’y a pas de redondances. dans le cas e a contraire elle donne le graphe correspondant au BDD qui existait d´j`. si le BDD ` construire n’existe pas. nous donnons figure 2. il faut e e ´viter de construire deux fois le mˆme objet.44 Alg`bre de Boole et fonctions bool´ennes e e ab 00 cd 01 0 1 1 1 f1 11 0 0 0 0 10 1 0 0 0 ab 00 cd 01 0 1 0 0 f2 11 0 1 1 0 10 1 1 1 0 00 01 11 10 0 1 1 1 00 01 11 10 0 1 0 0 Fig. la fonction de dispersion portant sur la variable et les pointeurs des BDD fils. On effectue ` chaque e a ´tape de la r´cursion la d´composition de Shannon suivant la variable coue e e rante et l’on construit le BDD ` partir des BDDs des cofacteurs positif et a n´gatif de f. Le lecteur pourra trouver ea e e la justification et des d´tails d’impl´mentation logicielle de cette construction e e dans [KB90].

: le BDD repr´sentant la valeur 1 e le BDD repr´sentant la valeur 0 e D\ : un arbre binaire de racine r. Bx). TBor(A¯. TBor(Ax. Il existe une fonction TUop par op´rateur unaire pris e en compte : elle produit le BDD r´sultat de l’application de l’op´rateur e e au BDD b } RepCanonique (x une variable . x ´tant une variable. A¯\ = b1 et /By. TBor(b1. b) = b TBor (b1.16 – Construction d’un BDD ` partir d’une expression alg´brique bool´enne a e e . b2).b) = /1\ TBor (0.4. b1.b) =b TBor (b. b1. b2) est le BDD de racine x. b. LeBdd(e2)) LeBdd (op e) = TUop (LeBdd(e)) Fonctions interm´diaires e TBop (b1. } TUop (b : un BDD) −→ un BDD { b est un BDD. x. b1 et b2 deux BDDs e diff´rents. By). de fils gauche G et de fils droit D Fonction principale : LeBdd (e : une expression alg´brique) −→ un BDD e { e ´tant une expression bool´enne. b2 { b1 = b2 } /Ax. A¯\ = b1 et /Bx. B¯\ = b2 : x y si x < y alors RepCanonique (x. b2)) < x sinon RepCanonique (y. faux or e = e. r. 2. Il existe une fonction TBop par op´rateur bie naire trait´ : elle fabrique le BDD r´sultat de l’application de l’op´rateur e e e en question aux deux BDD b1 et b2. b2 : deux BDD) −→ un BDD { b1 et b2 sont deux BDD. 0) = b TBor (b. Manipulation de repr´sentations de fonctions bool´ennes e e 45 Notations /1\ : /0\ : /G. B¯)) y Fig. e or e = e } TBor (1. Ce BDD n’est construit que s’il n’existe pas dans l’ensemble des BDD d´j` construits } ea Exemple pour l’op´rateur OR e { On applique les r`gles de simplification triviales associ´es ` l’op´rateur e e a e or : vrai or e = vrai. y. b2) = selon b1. b) = b. } e e ea LeBdd (1) = /1\ LeBdd (0) = /0\ LeBdd (e1 op e2) = TBop (LeBdd(e1). de fils e gauche b1 et de fils droit b2. 1) = /1\ TBor (b.b2 : deux BDD) −→ un BDD { RepCanonique(x. B¯\ = b2 : x x RepCanonique (x. TBor(b1. LeBdd(e) est le BDD associ´ ` e. x. RepCanonique(x. x. B¯)) x x /Ax. TBor(A¯. TBor(Ax.

Donner des expressions bool´ennes des fonctions e simples p2 . la majorit´ sera pour le rouge. s’ils changent tous d’avis.b = b ¯ a. x3 .7 : Proposition logique Un ´tudiant dit : je vais faire du ski s’il fait beau ou s’il ne fait pas beau et e que je n’ai pas d’examen ` r´viser.c + b.10 : R`gles de simplification bool´enne e e D´montrer les r`gles de simplification suivantes ` partir des axiomes de e e a l’alg`bre de Boole. e .c = a. 0) a un poids de 2. c) qui vaut 1 si et seulee ment si la majorit´ de ses trois variables vaut 1.b = a a + a. 1.8 : Expression bool´enne alg´brique de la majorit´ e e e Trois personnes doivent voter bleu ou rouge. e e e e E2. p1 et p0 qui correspondent au codage en base 2 du poids d’un vecteur de 4 variables bool´ennes x1 . 1.c ¯ ¯ E2.x2 est associatif. D´montrer en passant par les e expressions bool´ennes alg´briques correspondantes que si la majorit´ est pour e e e le bleu alors. e E2.15 : Poids d’un vecteur bool´en e On appelle poids d’un vecteur bool´en le nombre de 1 de ce vecteur.9 : De Morgan D´montrer les formules de De Morgan ` partir des tables de v´rit´ des fonctions e a e e somme.x2 e ¯ ¯ ¯ a ` partir de la deuxi`me forme du th´or`me de Shannon. Cet ´tudiant est-il s´rieux ? sportif ? Pour a e e e r´pondre donner une forme plus simple de cette proposition logique.b = a + b ¯ a. b. x2 . ¯ E2.14 : Formes de Lagrange Obtenir la deuxi`me forme de Lagrange de la fonction f (x1 . e E2.46 Alg`bre de Boole et fonctions bool´ennes e e 5. x4 .12 : Ou exclusif D´montrer que l’op´rateur ou-exclusif (not´ ⊕) d´fini par x1 ⊕ x2 = x1 . produit et compl´ment.11 : Expression bool´enne e Donner une expression bool´enne de la fonction f (a.b + a. x2 ) = x1 . e e e E2. Exercices E2. e E2.x2 + x1 . le vecteur e (0. e a + a.b + a. e E2.b + a.13 : Th´or`me de Shannon e e D´montrer la premi`re forme du th´or`me de Shannon.x2 + e e e e ¯ x1 .

g) ` 4 variables e e a (e4 .d. e) = a. e3 .¯. e Ces 7 fonctions sont phi-bool´ennes car on ne veut repr´senter que les e e chiffres d´cimaux (0.17 : Tableau ` 5 variables a Donner une base irr´dondante minimale de la fonction f (a. 2.¯ c + e ¯ b. c.b.d.17 – Repr´sentation du chiffre 3 sur un afficheur 7 segments e g b c E2.d .d.¯ ¯ ¯ c e E2. f . nous choisirons ici e e de repr´senter le 6 avec le segment a allum´ et le 9 avec le segment d allum´. b et c avec diff´rents ordres sur les variables.18 : Afficheur 7 segments Soit un afficheur ` cristaux liquides comportant 7 segments. e1 ). d.d + a. b.¯ d + a.b. b.b. ¯ ¯ c ¯ c ¯ ¯ E2. d) = a.c + a. c.d + b. e e e e e Donner les ROBDDs de a.¯ a. La fonction bool´enne vaudra 1 si le segment doit ˆtre allum´ pour la repr´sentation du e e e e chiffre d´cimal donn´ en binaire par (e4 . Figure 2. Donner une base irr´dondante minmale g´n´rale de la fonction g´n´rale F = (a. e e e Donner les tableaux de Karnaugh de ces 7 fonctions. Par exemple le chiffre 3 e e (e3 e2 e1 e0 = 0011) en entr´e donne a = b = c = g = d = 1. d. d.d + a. e2 .17). b. g).¯ + e b ¯ ¯ e + a. e2 .¯. e . e. On veut r´aliser les 7 fonctions bool´ennes (a. b. comme il y en a a sur la plupart des calculettes. b.e + a.¯. Exercices 47 a f e d Fig.e + a.. e1 ) qui correspondent aux 7 segments (Cf.9). c. e.16 : Tableau ` 4 variables a Donner une base irr´dondante minimale de la fonction f (a.5. Sur 4 bits on a aussi les entr´es 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 diff´rentes repr´sentations sur l’afficheur..c.¯. b. e3 . c. f.b.c.

48 Alg`bre de Boole et fonctions bool´ennes e e .

L’ene . Les bits sont identifi´s individuellement. Il existe cependant de nombreuses applications o` des appareils de meu sure donnent des tensions ´lectriques proportionnelles ` la grandeur mesur´e. On parle de repr´sentation digitale de l’infore e mation. la tension basse (la masse) e e e e repr´sente le 0 (ou Faux). ou digital. la tension haute (l’alimentation) repr´sente le 1 (ou e e Vrai). e e 1. Nous distinguons la repr´sentation des naturels e e (au paragraphe 2. celle des caract`res dans le paragraphe 5. le plus e e souvent par un simple num´ro. La repr´sentation de e e e l’information se fait ` travers un code.). ou bits. est l’´tat d’un fil ´lectrique. ce qui va avec. La repr´sentation de nombres r´els est bri`vement ´voqu´e dans le parae e e e e graphe 6. nous donnons dans le paragraphe 1.. et celle des entiers relatifs (au paragraphe 3. a contrario. par exemple entre 0 et N − 1.Chapitre 3 Repr´sentation des grandeurs e Dans le chapitre 1 nous avons vu que l’ordinateur ne traite pas v´ritablement l’information mais ses repr´sentations. Physiquement un bool´en. Num´riques Analoe e giques). Dans ce chapitre. Nous ´tudions ensuite les e e repr´sentations des nombres.1 Notion de codage d’informations Codage binaire A un instant donn´ N fils ´lectriques sont chacun ` 0 ou ` 1. e a e On parle dans ce cas de repr´sentation analogique de l’information. Pour ˆtre e e trait´es par un ordinateur standard (on dit num´rique. L’ordie e e nateur ´tant aliment´ par un g´n´rateur continu. Pour des raisons technologiques qui a apparaissent dans le chapitre 7 la repr´sentation de toute information est un e vecteur de bool´ens. les ´l´ments de ee ce que signifie un codage par des bool´ens.). La notion de taille e de la repr´sentation est pr´sente en permanence. ou. ou bit. et. 1. Il est n´cessaire e e a a e d’identifier chacun des fils par un num´ro. par oppoe e sition ` analogique) ces tensions sont converties par des circuits sp´cifiques a e (Convertisseurs Analogiques Num´riques. les techniques de calcul e sur ces repr´sentations.

o` e e u R est l’entier imm´diatement sup´rieur au logarithme ` base 2 de P . Le e e bit 3 correspond ` la pr´sence d’une composante pˆle. e e 1. le bit 1 au vert et le bit 0 au bleu. t´ra.1 indiquant le code sur 4 bits b3 b2 b1 b0 des 16 couleurs affichables par cette machine. il est facile de compl´ter la suite : 210 ≈ 103 . On trouve souvent le sigle RGB (Red. 8. e e La correspondance entre la repr´sentation par un vecteur de bool´ens et la e e valeur se fait par une convention. Il y a l` une diff´rence entre le vocabulaire a e courant et un vocabulaire technique. 32.) Par exemple. 16. le bit 2 ` la pr´sence a e a a e d’une composante rouge. Rep´rer un ´l´ment parmi un ensemble de 4 giga-´l´ments e e ee ee suppose de le localiser par un num´ro cod´ sur 32 bits. Les puissances suivantes sont 4. Ainsi e e a log2 2048 = 11 et pour repr´senter 2050 valeurs diff´rentes il faut 12 bits.10 ` + 40 degr´s. log2 M = a e N .. 28 = 256 et 210 = 1024. donnant un autre codage. chaque bit a une interpr´tation.2 Un exemple : le codage des couleurs On trouve dans la documentation du micro-ordinateur Commodore 64 le tableau de la figure 3. m´ga. Un kiloe e e e bit correspond donc ` 1024 bits et non ` 1000 bits. 21 = 2. 220 ≈ 106 . couleurs. Si la temp´rature est cod´e sur 12 bits la pr´cision e e e e 12 est de l’ordre du centi`me (2 = 4096 codes possibles pour 50 degr´s). 128. 230 ≈ 109 . giga. et si la temp´rature est cod´e sur e a e e e 9 9 bits. De mˆme.2. Les N fils peuvent repr´senter 2N informations diff´rentes.. 64. Dans le deuxi`me code. ou Que repr´sente 0 0 1 0 ? e e e n’a de sens que si le code est pr´cis´. e 240 ≈ 1012 . L’ensemble des valeurs codables est caract´ristique du domaine (nombres. un code. On parle aussi des 2N e e valeurs possibles d’une information. si une gamme e de temp´rature va de . il e e e est commode d’avoir en tˆte les valeurs des petites puissances de 2 et les ordres e de grandeurs des grandes : 20 = 1 . . a a Rep´rer un ´l´ment parmi un ensemble de 256 ´l´ments suppose de le loe ee ee caliser par un num´ro cod´ sur 8 bits. Blue) dans ce contexte. Green. e e La notation de logarithme ` base 2 est parfois utilis´e : si 2N = M. e ce qui est fortuit. Comme 1000 est proche de 1024. la pr´cision peut ˆtre de l’ordre du dizi`me de degr´ (2 = 512 codes e e e e possibles pour 50 degr´s). bleu pˆle.. a Les deux couleurs noir et cyan ont le mˆme codage dans les deux codes. Une telle interpr´tation e . Pour ´valuer le nombre de valeurs diff´rentes repr´sentables sur N bits. La question Comment est repr´sent´ rouge ?. Les pr´fixes d’unit´s correspondants sont kilo.). la conversion d’un code ` e e e a l’autre n’a un sens que pour les couleurs qui sont repr´sent´es dans les deux e e codes (brun.50 Repr´sentation des grandeurs e semble des N fils peut se trouver dans une des 2N configurations possibles. On trouve dans la documentation de microordinateurs PC (carte CGA) le tableau de la figure 3. ainsi pour repr´senter P valeurs diff´rentes il faut au moins R bits. Dans certains contextes ce num´ro est e e e appel´ une adresse..

2. Les naturels

51

b3 b2 b1 b0 0000 0001 0010 0011 0100

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 pˆle a bleu pˆle a gris pˆle a

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 pˆle a bleu pˆle a

b3 b2 b1 b0 1010 1011 1100 1101 1110 1111

vert pˆle a cobalt rose mauve jaune blanc

Fig. 3.2 – Codage des couleurs pour PC, carte CGA

individuelle de chaque bit n’existe pas dans le premier code.

1.3

Codage 1 parmi n

Un codage particulier est utilis´ dans certaines applications mat´rielles ou e e logicielles : le codage appel´ 1 parmi n. Pour ce code, on utilise autant de bits e que d’informations ` coder. Pour reprendre l’exemple des couleurs, chacune a serait cod´e sur b15 ,.. b0 , et chaque bit correspondrait alors ` une couleur. e a

2.
2.1
2.1.1

Les naturels
Repr´sentation des entiers naturels e
Num´ration de position e

Les entiers naturels peuvent ˆtre ´crits de diff´rentes fa¸ons (voir par e e e c exemple [Ifr94]). Le syst`me des Romains est encore pr´sent dans certaines e e notations, les dates des livres par exemple. La meilleure repr´sentation est la num´ration de position dans une base e e choisie. En base 10, ou syst`me d´cimal, on choisit 10 symboles diff´rents, les e e e 10 chiffres d´cimaux 0, 1, . . . , 9. Ils repr´sentent les valeurs des 10 premiers e e naturels. Les naturels suivants s’´crivent avec plusieurs chiffres : un chiffre des e unit´s, un chiffre des dizaines, des centaines, des milliers, etc. e Si un naturel X s’´crit en base β sur N chiffres xN −1 xN −2 ... x1 x0 , la e correspondance entre la valeur du naturel X et celles des chiffres est donn´e e

52

Repr´sentation des grandeurs e

par l’´quation : e
N −1 N −1

X=
i=0

β × valeur(xi )

i

ou, pour simplifier : X =
i=0

β i xi

La correspondance est telle que l’´criture d’un naturel dans une base donn´e e e est unique. Dans la suite nous ne pr´cisons plus que c’est toujours la vae leur du chiffre (et non le chiffre lui-mˆme) qui intervient dans les expressions e arithm´tiques. En base β, sur N chiffres, tous les naturels compris au sens large e entre 0 et β N − 1 sont repr´sentables. Les nombres plus grands peuvent ˆtre e e repr´sent´s par leur reste modulo β N . C’est ce qui se produit sur les compteurs e e kilom´triques des voitures : si le compteur a 5 chiffres, 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 repr´sentant dans l’intervalle [0, 2.π[. En u e informatique on rencontre le terme de chiffre de poids faible, pour le chiffre des unit´s et, si un naturel est ´crit sur 7 chiffres, celui de chiffre de poids le plus e e fort pour le chiffre des millions. L’usage dans la vie courante est de ne pas ´crire e les 0 en poids forts. A certains endroits, pour des raisons mat´rielles, c’est une e obligation. Le compteur kilom´trique des voitures par exemple. En informae tique, on les ´crit tr`s souvent. Les machines ont un format pour repr´senter e e e les nombres, c’est-`-dire un nombre de chiffres pr´-´tabli. Quand ce nombre de a ee chiffres est mal choisi, comme par exemple repr´senter une date avec seulement e deux chiffres d´cimaux pour l’ann´e, les cons´quences sont ennuyeuses. Dans e e e les documents ´crits o` il y a risque d’ambigu¨ e, on ´crit la base en indice. La e u ıt´ e base elle-mˆme est alors ´crite en base d´cimale (ou base 10). Par exemple, le e e e nombre qui s’´crit 147 en base 10 s’´crit 1042 en base 5 : e e 14710 = 100100112 = 1739 = 9316 = 10425 = 121103 Il existe une autre repr´sentation conventionnelle : le d´cimal cod´ en bie e e naire (DCB) dans laquelle chaque chiffre d´cimal 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 d’une 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 chiffre des unit´s est 2, celui de rang sup´rieur est 4, etc. 14710 = 10425 , c’est-`-dire : e e a 3 2 1 0 14710 = 1 × 5 + 0 × 5 + 4 × 5 + 2 × 5 .

2. Les naturels

53

– 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 Repr´sentations binaire, hexad´cimale e e

Ce principe de la num´ration de position peut s’appliquer avec une base e enti`re quelconque sup´rieure ou ´gale ` 2. Si la base est 2 on parle de e e e a num´ration binaire, pour la base 8 de num´ration octale, pour la base 16 e e d’hexad´cimal. En base 2, sur N chiffres, tous les naturels compris au sens e large entre 0 et 2N − 1 sont repr´sentables. On pourrait parler de chiffre des e deuzaines, des quatraines, ou des seizaines mais ces mots ne sont pas dans le lexique courant. L’int´rˆt de la base 2 est que les deux chiffres 0 et 1 peuvent ee facilement ˆtre repr´sent´s par les deux bool´ens 0 et 1, ou par les ´tats bas e e e e e et haut d’un fil ´lectrique. Ce codage des nombres est le seul utilis´ dans les e e ordinateurs. Nous emploierons les termes de chiffres binaires ou de bits indistinctement. Les 16 chiffres hexad´cimaux sont 0, 1, . . . , 8, 9, A, B, C, D, E, F e repr´sentant les valeurs des naturels de 0 ` 15. On a ´videmment e a e valeur(A) = 10, . . ., valeur(F ) = 15. On peut ais´ment convertir un nombre ´crit en base 16 vers la base 2 e e et r´ciproquement. Il suffit pour cela de convertir par tranches de 4 chiffres e binaires, ou d’un chiffre hexad´cimal. Ainsi dans l’exemple suivant figurent e les deux ´critures l’une en dessous de l’autre : e 3 4 7 B 8 0011 0100 0111 1011 1000 En effet le chiffre hexad´cimal B repr´sente le naturel 1110 , qui en binaire e e s’´crit 1011, et 347B816 = 001101000111101110002 . e On remarque l` une analogie avec le passage de l’´criture d´cimale ` a e e a l’´criture en langue naturelle. Ici figurent l’´criture d’un nombre en base e e d´cimale et son ´criture en fran¸ais (les espaces ne sont pas significatifs) : e e c 104 730 105 cent quatre millions sept cent trente mille cent cinq

2.2

Op´rations sur les vecteurs bool´ens repr´sentant e e e les naturels

Etant donn´s deux naturels A et B, repr´sent´s respectivement par M et e e e N bits, on cherche ` trouver un proc´d´ de calcul, ou de fabrication, des bits a e e repr´sentant A + B, A − B, A × B, . . . (une approche tr`s compl`te se trouve e e e dans [Mul89]).

54

Repr´sentation des grandeurs e

Nous devons nous pr´occuper du nombre de bits n´cessaires pour e e repr´senter le r´sultat du calcul. Pour la somme c’est max(M, N ) + 1, pour e e le produit M + N . Pour simplifier ce probl`me, nous supposerons, sauf mene tion contraire, que les deux nombres sont cod´s sur N bits, et que N est une e puissance de 2. Si ce n’est pas le cas, il est toujours possible de compl´ter A e p ou B en poids forts. Si A et B sont cod´s 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 cod´s sur N e chiffres est repr´sentable sur N + 1 chiffres. Le chiffre 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 r´duction de format e

Si un naturel est cod´ sur N bits et qu’il faille le coder sur M bits, avec e M > N , il suffit d’ajouter des 0 en poids forts. A l’inverse, si la repr´sentation e de C a k bits ` 0 en poids forts, C peut ˆtre repr´sent´ sur k bits de moins. a e e e Par exemple 000011002 = 11002 . 2.2.2 Addition

A et B ´tant repr´sent´s sur N bits, aN −1 , . . . , a0 , et bN −1 , . . . , b0 , la somme e e e S de A et B s’´crit 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 repr´senter S sur N bits ? e Pour obtenir les chiffres de la somme, examinons bri`vement le proc´d´ e e e pour la base 10 que l’on apprend ` l’´cole : les ai et bi sont compris entre 0 a e et 9. La base est 10. On applique un proc´d´ it´ratif, en commen¸ant par les e e e c poids faibles, et en propageant une retenue d’´tage (ou tranche) de 1 chiffre e en ´tage de 1 chiffre vers les poids forts. e A chaque ´tage i le calcul du report 1 sortant repsi de l’´tage est fonction e e des chiffres ai et bi de A et B ` cet ´tage et du report entrant dans cet ´tage a e e repei . Le report entrant dans l’´tage 0 est ´videmment nul. Le report sortant e e de l’´tage j, repsj est le report entrant de l’´tage j+1 repe(j+1) . e e repsi = 1 si ai + bi + repei ≥ 10 et repsi = 0 si ai + bi + repei < 10 le chiffre si de la somme ` l’´tage i est la somme modulo 10 de ai , bi et repei , a e c’est-`-dire : a si = ai + bi + repei − 10 si repsi = 1 et si = ai + bi + repei si repsi = 0
Nous emploierons le terme de report pour l’addition et, plus loin, celui d’emprunt pour la soustraction. La langue courante utilise le terme de retenue dans les deux cas.
1

2. Les naturels

55

ai 0 0 0 0 1 1 1 1

bi 0 0 1 1 0 0 1 1

repei 0 1 0 1 0 1 0 1

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

Fig. 3.4 – Table d’addition
aN−1 aj+1 aj a1 a0

bN−1

bj+1

bj

b1

b0

0 rep e0
sj s1 s0

repe(j+1) = rep sj rep
s(N−1)

sN−1

sj+1

Fig. 3.3 – Sch´ma de principe d’un additionneur e

En binaire le proc´d´ est identique mais les ai et bi valent 0 ou 1. Les deux e e fonctions de calcul du report et du chiffre de somme sont d´finies pour des e triplets de nombres 0 ou 1. La fonction report sortant d’un ´tage d’addition 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 chiffre 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 d’addition pour un ´tage sont donn´es par la figure 3.4. e e Pour l’addition de deux nombres ` N bits, les formules sont donn´es par a e les ´quations suivantes qui utilisent les reports interm´diaires ri o` ri+1 est la e e u retenue sortante de l’´tage num´ro 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 .

56

Repr´sentation des grandeurs e

Dans ce cas sN s’appelle souvent La retenue. Si on cherche ` repr´senter la a e somme S sur N bits, ce n’est possible que si sN vaut 0. Si sN vaut 1, la somme est trop grande et ne peut ˆtre repr´sent´e sur N bits. e e e
Remarque : Dans les processeurs, apr`s une addition, ce bit de retenue e est disponible dans le mot d’´tat sous le nom de bit indicateur C (en anglais e report se dit Carry). Il vaut 1 si la somme de deux naturels cod´s sur N bits e n’est pas repr´sentable 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 repr´sentation. Il en est de mˆme en base 2. Et si l’on ajoute e e deux 0 en poids faible de l’´criture binaire, on obtient l’´criture binaire du e e nombre multipli´ par 4. Le produit d’un nombre sur N bits par 2k s’´crit sur e e N + k bits, les k bits de poids faibles ´tant ` 0. e a On sait obtenir la repr´sentation d´cimale du quotient entier par 10 d’un e e naturel en ˆtant le chiffre des unit´s de sa repr´sentation d´cimale. De mˆme o e e e e pour la base 2, si l’on supprime 3 chiffres en poids faible, on obtient l’´criture e du quotient entier par 8. Le quotient entier d’un nombre sur N bits par 2k s’´crit sur N − k bits. e On sait obtenir la repr´sentation d´cimale du reste modulo 10 en ne gardant e e que le chiffre des unit´s de la repr´sentation d´cimale. De mˆme pour la base 2, e e e e si l’on garde les 4 chiffres en poids faible, on obtient l’´criture du reste modulo e 16. Le reste modulo 2k d’un nombre s’´crit sur k bits. e Le tableau suivant illustre diff´rentes 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 z´ros en poids forts. e
Ecriture de N en d´cimal e 5 13 29 28 35 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

2.2.4

Multiplication g´n´rale e e

Si deux naturels A et B sont cod´s 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 l’exercice E3.14 on d´compose A et B en parties faible et forte. e

2. Les naturels

57

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 qu’effectuer l’addition de P 1 et P 4 est tr`s facile. L’un des deux e nombres n’a que des 0 l` o` l’autre a des chiffres significatifs. a u Une autre expression du produit reprend simplement l’´criture 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 r´duit alors ` une suite d’additions et de d´calages. e a e

2.2.5

Soustraction

La diff´rence D = A − B de deux naturels A et B n’est d´finie que si A > B. e e
Remarque : Un probl`me est celui de la d´tection des cas valides et ine e valides. En informatique comparer deux nombres n´cessite de calculer leur e diff´rence. On ne peut donc pas raisonnablement comparer deux nombres e avant de calculer leur diff´rence si elle existe. Dans un syst`me informatique, e e on calcule toujours ce que l’on croit ˆtre la diff´rence, puis on se pr´occupe e e e de savoir si la diff´rence est repr´sentable ou non. Si oui, elle est le r´sultat e e e obtenu.

Comme pour l’addition, l’op´ration se fait tranche par tranche, en come men¸ant par les poids faibles et avec propagation d’un bit d’emprunt vers les c poids forts. Le calcul fait apparaˆ le bit d’emprunt ` l’´tage de poids plus ıtre a e fort. On peut produire une table de soustraction en base 2, analogue ` la table a d’addition du paragraphe 2.2.2, tenant compte du bit d’emprunt entrant ee et faisant apparaˆ le bit d’emprunt sortant es et le bit de r´sultat di (Cf. Fiıtre e gure 3.5-(a)). On a le r´sultat suivant : Si A et B sont cod´s sur N bits la diff´rence est e e e un naturel (c’est-`-dire A ≥ B) si et seulement si l’emprunt sortant de l’´tage a e de rang N − 1 est nul. Reprenons la table d’addition du paragraphe 2.2.2, en rempla¸ant c syst´matiquement les bits de reports entrants et sortants par leur e compl´mentaire bool´en. De mˆme rempla¸ons le bit de l’op´rande B par son e e e c e compl´mentaire. On retrouve la table de la soustraction (Cf. Figure 3.5-(b)). e Si l’on applique l’algorithme d’addition avec A et le compl´mentaire de B e et si l’on prend soin de compl´menter en entr´e et en sortie tous les bits de e e report, on obtient l’algorithme de soustraction de A − B.

58

Repr´sentation des grandeurs e

(a)

ai 0 0 0 0 1 1 1 1

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

(b)

ai 0 0 0 0 1 1 1 1 ai

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

si 0 1 1 0 1 0 0 1 di

Fig. 3.5 – (a) Table de soustraction et (b) table d’addition modifi´e e

On peut aussi utiliser les expressions pour chaque ´tage : e es = 1 si ai < bi + ee c’est-`-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 compl´mentaire du bit d’emprunt sortant est disponible dans le mot d’´tat e e sous le nom de bit indicateur C. Il vaut 0 si la diff´rence de deux naturels e cod´s sur N bits est positive, donc repr´sentable sur N bits. e e

3.
3.1

Les relatifs
Repr´sentation des entiers relatifs e

Pour repr´senter des entiers relatifs par un vecteur de N bool´ens, la e e premi`re id´e qui vient ` l’esprit est de repr´senter la valeur absolue sur N − 1 e e a e bits et de r´server un bit pour le signe. Cette id´e simple est correcte. On e e parle de repr´sentation en signe et valeur absolue. Une autre repr´sentation e e est habituellement utilis´e. Elle pr´sente des similitudes avec la repr´sentation e e e d’un angle quelconque par un nombre r´el dans l’intervalle [− π, + π[. Nous ale lons la d´crire d’abord de fa¸on tr`s intuitive. Pour cela nous consid´rons des e c e e nombres sur 4 chiffres. Le mˆme raisonnement vaut pour toute autre taille. e Quand on ach`te une voiture neuve, le compteur kilom´trique indique 0000. e e Il indique ensuite 0001, puis 0002. Les voitures ` compteur binaire feraient a apparaˆ 0001 puis 0010. Imaginons que le compteur d´compte lorsque l’on ıtre e roule en marche arri`re. Avec une voiture neuve, il afficherait successivement e 9999, puis 9998. Un compteur binaire montrerait 1111, puis 1110. On d´cide de repr´senter -1 par 1111, puis -2 par 1110, comme sur le compe e teur kilom´trique. Reste ` fixer une convention. En effet si l’on roule quinze e a

3. Les relatifs

59

kilom`tres en marche arri`re le compteur affiche aussi 0001, et l’on risque de e e croire que l’on 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 n´gatifs 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 repr´sentation e soit un bit de signe. Il vaut 1 pour les nombres strictement n´gatifs. Sur N e bits les nombres repr´sentables sont ceux de l’intervalle [−2N −1 , 2N −1 − 1]. e Ce syst`me s’appelle codage en compl´ment ` 2 (parfois compl´ment ` 2N e e a e a puisqu’il y a N bits). Au passage remarquons que l’intervalle des nombres repr´sentables n’est pas sym´trique par rapport ` 0. C’est obligatoire. Avec e e a une base paire, on repr´sente un nombre pair de nombres. Il ne peut y en avoir e autant de strictement positifs que de strictement n´gatifs, sauf si 0 a deux e repr´sentations. e De fa¸on moins intuitive, si un relatif Y s’´crit en compl´ment ` 2 sur N c e e a chiffres binaires : yN −1 , yN −2 , . . . , y1 , y0 , la correspondance entre la valeur du relatif Y et celles des chiffres est donn´e par l’´quation : e e
N −2

Y = (−2 ou, ce qui est ´quivalent, par : e

N −1

× yN −1 ) +
i=0

2i × yi

N −1

Y = (−2N × yN −1 ) +
i=0

2i × yi

La correspondance est telle que l’´criture est unique comme pour le cas des e naturels dans une base donn´e. e Remarquons que si l’on consid`re les deux vecteurs binaires repr´sentant e e un relatif et son oppos´, et si l’on interpr`te ces deux vecteurs comme les e e repr´sentations en binaire de deux naturels, la somme de ces deux naturels e est 2N . C’est l’origine du nom compl´ment ` 2N . Ainsi, sur 4 bits, 0101 code e a 5. En compl´ment ` 2, sur 4 bits -5 est repr´sent´ par 1011. En base 2, 1011 e a e e repr´sente le naturel 11, et 11 + 5 = 16. e Conversion Une difficult´ notable vient d’apparaˆ e ıtre, la mˆme que pour les e couleurs en d´but de chapitre. La question Que repr´sente 100011 ? ou Come e ment est repr´sent´ l’entier K ? n’a pas de sens. Il faut ` chaque fois pr´ciser e e a e dans quelle convention, binaire pur ou compl´ment ` 2. Comme pour les coue a leurs, on peut avoir besoin de convertir d’une convention ` l’autre les nombres a qui sont repr´sentables dans les deux (comme le brun et le bleu pˆle, pour e a les couleurs). Pour les nombres sur N bits ce sont les nombres de l’intervalle [0, 2N −1 − 1]. Ils ont la mˆme repr´sentation dans les deux codes (comme le e e cyan et le noir qui ont le mˆme code dans l’exemple des couleurs). e

60

Repr´sentation des grandeurs e

3.2
3.2.1

Op´rations sur les vecteurs bool´ens repr´sentant e e e les relatifs
Extension et r´duction de format e

Si un relatif Y est cod´ sur N bits, il suffit 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 repr´sentation de C sont identiques, e C peut ˆtre repr´sent´ 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 repr´sent´s en compl´ment ` 2 par aN −1 , aN −2 , . . . , a1 , a0 e e e a et bN −1 , bN −2 , . . . , b1 , b0 . On a :
N −2 N −2

A = (−2

N −1

) × aN −1 +
i=0

2 × ai ,

i

B = (−2

N −1

) × bN −1 +
i=0

2i × bi

Comme pour les naturels, d´terminons si la somme peut ˆtre repr´sentable e e e sur N bits et comment les bits de la somme peuvent ˆtre exprim´s. On pose : e e
N −2 N −2

α=
i=0

2 × ai ,

i

β=
i=0

2i × bi ,

γ = (α + β) modulo 2N −1

avec : α ∈ [0, 2N −1 − 1], On a ´videmment : e A = −2N −1 × aN −1 + α et, de mˆme, e B = −2N −1 × bN −1 + β. Soit re d´fini par : e α + β = re × 2N −1 + γ. re vaut donc 1 ou 0. C’est le report sortant du calcul de α + β. γ est la somme α + β priv´e 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 ) + γ β ∈ [0, 2N −1 − 1], γ ∈ [0, 2N −1 − 1].

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 chiffres binaires.

3. Les relatifs

61

Nombre de bits n´cessaires pour repr´senter S La premi`re question e e e est : S est-il repr´sentable sur N bits en compl´ment ` 2 ? C’est-`-dire a-t-on e e a a −2N −1 ≤ S ≤ 2N −1 − 1 ? Examinons les deux cas o` la r´ponse 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 in´galit´ ne peut ˆtre v´rifi´e avec certie e e e e tude que si aN −1 + bN −1 − re − 1 ≥ 1 c’est-`-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 l’on 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 in´galit´ ne peut ˆtre v´rifi´e avec certitude que si e e e e e aN −1 + bN −1 − re + 1 ≤ 0 c’est-`-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, c’est-`-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 repr´sentable sur N bits en compl´ment ` 2. On a e e a alors rs = re . Le tableau suivant r´capitule les diff´rents 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 Interpr´tation e Premier cas : S < −2N −1 Deuxi`me cas : S > 2N −1 − 1 e Somme repr´sentable e Somme repr´sentable e Somme repr´sentable e Somme repr´sentable e aN −1 + bN −1 − re 2 -1 0 1 x x

Ce qui signifie que les chiffres binaires de l’´criture de S s’obtiennent de la mˆme fa¸on que les chiffres binaires e e c de la somme des deux naturels repr´sent´s en binaire pur par les ai et les bi . De plus. re ). bN −1 comme l’autre et s comme le bit de signe du r´sultat calcul´ e e e par le processeur. si elle existe.s V = rs ou exclusif re La premi`re apparaˆ souvent dans les documents des constructeurs de procese ıt seurs. 2N −1 − 1] En identifiant bit ` bit les deux ´critures. binaire pur ou compl´ment a e e a ` 2. alors −(aN −1 + bN −1 − re ) = ⊕(aN −1 . a e les si ne sont rien d’autres que les chiffres binaires de γ.bN −1 . L’exercice E3. Deux expressions bool´ennes d´crivent la e e valeur du bit de d´bordement V apr`s une addition : e e V = aN −1 . avec γ ∈ [0. s0 tel que i=N −2 S = −2 On sait que S= N −1 × sN −1 + i=0 2i × si −2N −1 × (aN −1 + bN −1 − re ) + γ. . bN −1 . l’information disant si le r´sultat est repr´sentable ou non e e n’est pas la mˆme. e Mais. sont identiques quelle que soit l’interpr´tation. on voit que pour i ∈ [0. e e C’est l` tout l’int´rˆt du codage en compl´ment ` 2. re ). e L’interpr´tation est facile : aN −1 ´tant interpr´t´ comme le bit de signe d’un e e ee op´rande. a ee e a Remarque : Cette propri´t´ est d’une port´e pratique consid´rable. On a reconnu dans re et rs les reports entrant et sortant du dernier ´tage e d’addition binaire normale des vecteurs ai et bi . N − 2].62 Repr´sentation des grandeurs e Notons s = ⊕(aN −1 . bN −1 = 1. e e On retrouvera cette propri´t´ dans le chapitre 12 o` l’on verra que la mˆme ee u e instruction du langage machine convient pour l’addition. s = 0 signifierait que la somme de deux n´gatifs est positive. s1 . e Calcul des bits de S On se pose une deuxi`me question : comment calculer e la repr´sentation en compl´ment ` 2 de S. car S est repr´sentable sur e N bits. attention. puisque aN −1 + bN −1 − re vaut 0 ou 1. . bN −1 . le cas aN −1 = 1. Les chiffres binaires du r´sultat. En binaire pur le r´sultat de l’addition est repr´sentable e e e si et seulement si rs = 0. ee e e Elle signifie que le mˆme m´canisme d’addition peut ajouter deux vecteurs bie e naires sans avoir ` tenir compte de l’interpr´tation.9 propose de montrer l’´quivalence des deux expressions. . Cela se produit si re = 0. sN −2 .6 donne des exemples qui concr´tisent ces ´quations. c’est-`-dire comment e e a a trouver le vecteur sN −1 .bN −1 . e e e . et dans le chapitre 8 o` l’on verra que le mˆme circuit combinatoire u e additionneur convient pour l’addition ind´pendamment du code choisi. ind´pendamment du e code choisi. e e e si celui-ci est repr´sentable. . En compl´ment ` 2 le r´sultat de l’addition est e a e repr´sentable si et seulement si rs = re . e L’exercice corrig´ E3.s + aN −1 . qui est faite des op´randes et du r´sultat.

comme pour les naturels. On a : N −1 A = (−2 × aN −1 ) + i=0 N 2i × ai Compl´mentons chaque bit de A (en rempla¸ant ai par 1 − ai ). le bit de signe. l’autre nomm´ arithm´tique o` le bit ee e e u de signe est maintenu. ce e e d´calage doit se faire en maintenant le bit de poids fort.3 Soustraction Puisque l’addition est connue.3.4 Multiplication et division par une puissance de 2 Multiplier par 2 un nombre cod´ en compl´ment ` 2 se fait. mais c’est la partie enti`re du quotient e qui est obtenue.2. e e dans lequel un 0 est ins´r´ en poids fort. Les relatifs 63 Ecriture de l’oppos´ Soit A un relatif repr´sent´ sur N bits en compl´ment e e e e a ` 2 par aN −1 aN −2 . 3. sur N bits. .s L’exercice E3.9 revient sur cette expression. comme pour e e a un naturel. l’oppos´ de −2N −1 n’est pas e repr´sentable. . Diviser par 2 consiste. l’un nomm´ logique. c’est-`-dire a A = −A − 1.bN −1 . Comme e a l’op´ration est modulo 2N . a1 a0 . en ajoutant un 0 en poids faible. e Cela explique pourquoi dans les jeux d’instructions des processeurs il y a toujours deux types de d´calages vers les poids faibles. e 3. . c’est-`-dire −A = A + 1 (toutes ces ´galit´s sont modulo 2N ). A + A = −1. e Comme pour l’addition.s + aN −1 . on ne tient pas compte d’´ventuels reports. La diff´rence notable est que si l’on travaille sur un nombre de bits fix´. ainsi que le passage ` l’oppos´. le r´sultat est e c e un nombre A d´fini par : e N −1 A = −2 × (1 − aN −1 ) + i=0 N 2i × (1 − ai ) Si l’on ajoute A et A modulo 2N on obtient −1. a e e Cela donne le proc´d´ technique pour obtenir la repr´sentation de l’oppos´ e e e e de A : on forme le compl´mentaire bit ` bit A de A et on lui ajoute 1.2. ` d´caler tous les chiffres a e d’une position vers les poids faibles. a Attention toutefois car.bN −1 . . Un e e autre proc´d´ consiste ` recopier tous les bits en commen¸ant par les poids e e a c faibles jusqu’au premier 1 inclus puis ` inverser les suivants. . les constructeurs de processeurs donnent l’expression bool´enne du bit V de d´bordement apr`s une soustraction : e e e V = aN −1 . la soustraca e tion ne pose pas de probl`mes : il suffit de se souvenir que A − B = A + −(B).

Lien entre l’arithm´tique et les bool´ens e e Le fait que les chiffres binaires 0 et 1 se repr´sentent par les bool´ens 0 et e e 1 am`ne souvent ` faire des amalgames de types. par exemple. qui revient ` diviser par 2 la valeur a absolue de l’entier en conservant son signe. e e a e Que signifieraient ces op´rations appliqu´es ` des vecteurs repr´sentant des e e a e entiers ? Elles gardent leurs propri´t´s alg´briques. . la multiplication e e a bool´enne.64 Repr´sentation des grandeurs e La division par 2 des entiers relatifs. Ainsi. . il faut au pr´alable ajouter 1 aux seuls entiers n´gatifs e e avant d’effectuer le d´calage vers les poids faibles. e Le d´calage arithm´tique ne tient en effet aucun compte de la valeur du bit e e de poids faible. pour l’entier -7. e Ecriture de N en d´cimal e 13 29 -6 -7 -21 Ecriture de N en compl´ment ` 2 e a 001101 011101 111010 111001 101011 Ecriture de N × 2 en compl´ment ` 2 e a 011010 impossible 110100 110010 impossible Ecriture de N/4 en compl´ment ` 2 e a 000011 000111 111101 111110 110110 4. il suffit 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 . On obtient. mais sont peu int´ressantes ee e e arithm´tiquement. nomm´e aussi OU bit ` bit. repr´sent´ sur N bits. Ainsi on assimile parfois a e a et 1 − a (en traitant le bool´en a comme un entier). cette op´ration le ram`ne ` l’entier pair de valeur e e a absolue imm´diatement inf´rieure. et au contraire de la diminuer s’il est n´gatif. on vient de le voir. e Pour en tenir compte. De mˆme pour la e e e multiplication. 01 . . e Les vecteurs bool´ens peuvent repr´senter des nombres. En d´duire l’existence e e d’une soustraction bool´enne est une grosse erreur. e e Si l’entier est impair. Ce vecteur repr´sente le naturel 2P − 1. Si l’entier est pair. L’addition bool´enne ne correspond pas ` l’addition des e e a naturels ou des relatifs repr´sent´s par les deux vecteurs. sur 8 bits : 011100002 ET 010110112 = 11210 ET 9110 = 010100002 = 8010 011100002 OU 010110112 = 11210 OU 9110 = 011110112 = 12310 La seule op´ration int´ressante pour l’arithm´tique est la troncature : pour e e e tronquer un naturel A. . nomm´e aussi ET bit ` bit et la compl´mentation. n´cessite quelques pr´cautions pour e e les entiers n´gatifs impairs. Or changer de 0 ` 1 le bit de poids faible d’un entier pair a pour a effet d’en augmenter la valeur absolue s’il est positif ou nul. e . ceci ne e modifie que le bit de poids faible qui est ensuite ignor´ lors du d´calage. e e On a vu dans le chapitre 2 que les op´rations bool´ennes existent aussi sur les e e vecteurs : l’addition bool´enne. on appliquera en e e fait le d´calage sur l’entier -6. ` P bits (avec P < N ). 1.

e Ce code ne permet pas de repr´senter les lettres accompagn´es de diacrie e tiques (accents. Les caract`res e 65 On a donc A ET (2P − 1) = A modulo 2P . de e code 7F16 . Le probl`me de pouvoir coder en binaire l’ensemble de toutes ae e les formes ´crites des principales langues ´crites du monde n’est pas encore e e totalement r´solu. ` inverser le bit de rang i d’un a i nombre X (par X OUEX 2 ). e etc. ` forcer ` ıtre a a 0 le bit de rang i d’un nombre X (par X ET (2N − 1 − 2i ) ) . c’est-`-dire une puissance a de 2. Sur une machine unix la commande man ascii fournit en hexad´cimal e le tableau des codes correspondant aux caract`res. la diff´rence entre le code d’une e majuscule et de la minuscule correspondante est 32. Les codes inf´rieurs ` 1F repr´sentent e e a e des caract`res non affichables. respectivement cod´s sur k et n − k bits. petit rond. les entiers correspondant aux codes de deux lettres sont ordonn´s comme les deux lettres dans l’alphabet si les deux lettres sont toutes e les deux en majuscules ou en minuscules . Figure 3. le OU et le OU exclusif sur les vecteurs de N bits servent aussi : ` a i connaˆ le bit de rang i d’un nombre X (en calculant X ET 2 ) .) et certains caract`res non imprimables (fin de ligne. fin de fichier. 2316 est le code hexad´cimal de # et 2016 celui de l’espace .5.6. num´riques. etc. del. tr´ma. mais les standards sont diffia e ciles ` ´tablir. Les caract`res e Les caract`res alphab´tiques. ` forcer ` 1 le a a bit de rang i d’un nombre X (par X OU 2i ) . est le caract`re d’effacement. tilde. n−k n−k−1 q n − k bits q = X modulo 2n−k . etc.6). puis ` 16 sont propos´es (UNICODE). on peut le d´composer en deux e e naturels p et q. Le code ASCII est tel que : l’entier repr´sentant un chiffre vaut la valeur e du chiffre plus 48 . Cela pose de nombreux probl`mes lors des transmissions de e e fichiers contenant des textes. vire e e e gule. Des extensions a e a ` 8 bits. c´dille. selon le tableau : n−1 p k bits on a les relations suivantes : X = p × 2n−k + q.) sont habituellement repr´sent´s sur 7 bits selon un code normalis´ nomm´ e e e e code ASCII pour American Standard Code for Information Interchange (Cf. Si p est la partie e poids fort et q la partie poids faible. Si un naturel X est cod´ sur n bits.) dans les langues qui les e e utilisent (c’est-`-dire presque toutes les langues europ´ennes !). typographiques (parenth`se. Comme on le voit sur la e figure 3. . 5. p = X div 2n−k 0 Le ET.

E. il existe 3 formats de repr´sentation : e les r´els sont cod´s sur 32.E. On repr´sente en machine un ensemble fini de r´els. 5 par −1. Mais ils sont peu utilis´s en tant que tels dans les ordinateurs ` bas e a niveau. C K S [ c k s { 24 2C 34 3C 44 4C 54 5C 64 6C 74 7C $ . La e mˆme propri´t´ vaut pour le binaire et le seul chiffre possible avant la virgule e ee ´tant 1. en fait des rationnels. 6 > F N V ˆ f n v ˜ 27 2F 37 3F 47 4F 57 5F 67 6F 77 7F ’ / 7 ? G O W g o w del Fig. Les nombres r´els. on le repr´sente e e 6 par −1. La repr´sentation en d´cimal en notation scientifique a toujours un chiffre e e (un seul) avant la virgule. L’exere e cice E3.235 × 102 . et c’est ce qui explique la composante (1+fr) dans le tableau ci-dessous. Il existe des circuits de calcul sur des r´els et.66 Repr´sentation des grandeurs e 20 28 30 38 40 48 50 58 60 68 70 78 ( 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 . Au lieu de repr´senter −123. Ces r´els sont-ils des irrationnels ? Evidemment non. Selon cette norme.15 sensibilise ` la pr´cision dans une repr´sentation bas´e sur le mˆme a e e e e principe que la virgule flottante. 64 ou 128 bits. Dans chaque cas la repr´sentation e e e . Des r´els non e e e rationnels ont n´cessairement une suite infinie non p´riodique de d´cimales. Les e e e repr´senter en base 2 ne change rien : ils ont une suite infinie non p´riodique e e de duomales. 1110111 × 2 (car 12310 = 11110112 ). de l’exposant.E. du signe. 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 & . e e selon une technique tr`s proche de la repr´sentation dite scientifique des cale e culettes. chiffre qui n’est 0 que pour la repr´sentation de 0. −1. e Le nombre de chiffres de la mantisse fixe la pr´cision repr´sentable. il n’est pas n´cessaire de le repr´senter explicitement. des instructions dans le langage machine qui manipulent e des r´els. par e voie de cons´quence.6 – Code ASCII 6. Seuls les langages ´volu´s les manipulent et le soin de r´aliser les e e e op´rations est alors ` la charge du compilateur ou de l’interpr´teur. 1110111 re¸oit le nom de c mantisse et 6 celui d’exposant. Les e a e nombres r´els sont repr´sent´s et manipul´s ` bas niveau dans la plupart des e e e e a ordinateurs contemporains. la virgule flottante e Les nombres rationnels sont g´n´ralement repr´sent´s par un couple d’ene e e e tiers. La norme I. 3. On parle de 1 e e e cach´. 754 fixe les formats possibles de la mantisse.

f le naturel repr´sent´ par le champ de e e bits S. Ecrire sur 5 bits les relatifs de -16 ` a a +15.112 Valeur de la partie fractionnaire fr Valeur normale de e Valeur de X cas normal e = 0. V´rifier que l’on obtient le reste modulo 7. 7. E (exposant) et F (mantisse. celle du compteur de voiture. Calculer de mˆme e e le reste modulo 15 d’un naturel ` partir de son ´criture hexad´cimale.15 Taille de F 0 ≤ f ≤ 223.7 donne les correspondances entre s.2 : Reste modulo 2N − 1 Retrouver dans ses cahiers d’´cole ´l´mentaire la technique de la preuve par e ee 9. Donner l’expression bool´enne e e e caract´risant les bits de A pour que 10 × A soit aussi codable sur N bits. 3. Se persuader que la d´finition intuitive. f = 0 Valeur de X si e = 0 X = 0 si de plus f = 0 Cas particuliers : e = 32 bits 1 bit 8 bits 23 bits fr = f × 2−24 0 < e < 255 (−1)s × 2e−127 ×(1 + fr) (−1)s × 2−126 ×(0 + fr) 255 64 bits 1 bit 11 bits 52 bits fr = f × 2−53 0 < e < 2047 (−1)s × 2e−1023 ×(1 + fr) (−1)s × 2−1022 ×(0 + fr) 2047 128 bits 1 bit 15 bits 112 bits fr = f × 2−113 0 < e < 32767 (−1)s × 2e−16383 ×(1 + fr) (−1)s × 2−16382 ×(0 + fr) 32767 Fig.1 : Expression bool´enne d’une propri´t´ arithm´tique e e e e Consid´rons un naturel A cod´ sur N bits. Se rem´morer comment l’on obtient le reste modulo 9 d’un naturel ` partir e a de son ´criture en base 10 (` chaque fois qu’il y a au moins 2 chiffres on les e a ajoute).11. ou plutˆt e o partie fractionnaire). Les cas particuliers correspondent e e e aux cas infinis. a e e E3. Le tableau de la figure 3. Appliquer la technique pr´c´dente sur les e e chiffres octaux.52. Ecrire un nombre en octal. F et fr la valeur de la partie fractionnaire.7. E. Exercices E3. et e les deux ´quations donnant la correspondance entre valeur et ´criture donnent e e . Nommons s.7 – Repr´sentation des r´els e e comporte 3 champs nomm´s S (signe).3 : Manipulation du compl´ment ` 2 e a Ecrire sur 4 bits les relatifs de -8 ` +7. Exercices 67 Taille totale Taille de S 0≤s≤1 Taille de E 0 ≤ e ≤ 28. e. e et f et la valeur du r´el X repr´sent´ selon la taille. e E3.

Se persuader de l’unicit´ de l’´criture. peut valablement repr´senter e e le nombre 0. pourquoi ? e E3. Mais e ce n’est pas n´cessaire. on montre des r´sultats d’addition. lignes et colonnes. Les r´sultats e corrects sont encadr´s.6 : Additions en binaire pur et en compl´ment ` 2 e a Dans le tableau 3. e a Dans chaque case du tableau figurent ces 3 repr´sentations. Rep´rer -8 e e e e e (sur 4 bits).8. u – dans le cas o` les deux sont sign´s (et repr´sent´s en compl´ment ` 2). e e L’objet de l’exercice est de retrouver. et -16 (sur 5) comme un cas particulier dont l’oppos´ n’est pas e repr´sentable. les modes de calcul e des indicateurs C et V pr´cisant respectivement si le r´sultat est correct ou e e non en binaire (pour C) et en compl´ment ` 2 (pour V). et.375 (en d´cimal).4 : Ecriture des nombres ` virgule a Se persuader que l’´criture 0. Dans quel sens est l’inclusion. d’apr`s ce tableau. Dans le programme suivant en langage d’assemblage. Les r´sultats incorrects ne le sont pas.011 (en base 2). sinon. e Chaque information num´rique est repr´sent´e de 4 fa¸ons : un vecteur de e e e c 4 bits. il faut connaˆ la programmation e ıtre en langage d’assemblage. quel est le plus grand. il manque un mn´monique d’instruction de branchement conditionnel. trouver des algorithmes de e comparaisons de deux entiers ` partir de leurs repr´sentations binaires sur N a e bits : – dans le cas o` les deux nombres sont naturels. la valeur du report sortant r4 provenant de l’addition sur 4 bits.68 Repr´sentation des grandeurs e bien les mˆmes r´sultats.7 : Signification et test des indicateurs Quels sont les entiers codables sur 32 bits en compl´ment ` 2 et dont la valeur e a absolue est aussi codable sur 32 bits en compl´ment ` 2 ? e a Pour r´soudre la suite de cet exercice. e e e E3. Les nombres ` virgule e a a repr´sentables en base 2 et les nombres repr´sentables en base 10 ne sont pas e e les mˆmes. e E3. u e e e e a – dans le cas o` un nombre est sign´ et l’autre non. La table n’est pas sym´trique dans ce cas. un entier relatif entre -8 et +7 (son ´criture e en compl´ment ` 2 est le vecteur de 4 bits). ´crits en petits chiffres . il a ´t´ remplac´ par e ee e . On peut faire le mˆme e a e travail pour la soustraction. La table se pr´sente e e comme une table d’addition. La comparaison ayant pour but de dire si les deux e entiers sont ´gaux. Elle est donc sym´trique. u e On pourra compl´ter cet exercice apr`s l’´tude des circuits combinatoires. e E3.5 : Comparaison d’entiers Pour comparer deux entiers une solution est de calculer leur diff´rence. la valeur du e report sortant r3 provenant de l’addition restreinte aux 3 premiers bits. un naturel compris entre 0 et 15 (son ´criture e e en binaire est le vecteur de 4 bits) . c’est-`-dire 1/4 + 1/8.

Exercices 69 (0011) (0100) (0101) (1011) (1100) (1101) 3b +3c2 (0011) (0110) 4b +4c2 (0111) 5b +5c2 (1000) 11b −5c2 (1110) 12b −4c2 (1111) 13b −3c2 (0000) 3b +3c2 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) (0100) 4b +4c2 7b 8b 9b 15b 0b 1b −8c2 −7c2 +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) (0101) 5b +5c2 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) (1011) 11b −5c2 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) (1100) 12b −4c2 15b 0b 1b 7b 8b 9b −1c2 0c2 +1c2 −8c2 −7c2 +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) (1101) 13b −3c2 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.7.8 – Table d’addition .

i3 spe 1. A l’´tat fie e e nal. Comme les op´rations e e e en arithm´tique satur´e n’existent pas. Ecrire les instructions qui effectuent l’addition satur´e en compl´ment ` 2 e e a de A et B et range le r´sultat dans un registre. i2 ! si i0 ≥ 0 ! i3 prend pour valeur (-i0) ! OK prend pour valeur vrai neg : pos : ! si pos. i3 fin 0. Quand le r´sultat e e e e est trop grand. e e e e Ainsi sur 8 bits. dans ce cas la valeur de i3 n’est pas pertinente. la valeur absolue est le nombre ! OK prend pour valeur faux ! etat final ´ spe : fin : Pourrait-on remplacer le bge de la deuxi`me ligne par un bpos ? Par quel e mn´monique faut-il remplacer bxx ? e E3. Ecrire les instructions qui effectuent e la soustraction satur´e en binaire pur de A et B et range le r´sultat dans un e e registre. Donner la description d´taill´e d’une Unit´ Arithm´tique qui effectue sur e e e e deux entiers A et B : l’addition et la soustraction (A + B ou A − B). On suppose que A et B sont deux entiers. et alors i3 contient cette valeur absolue .70 Repr´sentation des grandeurs e bxx. i0. Ils sont rang´s dans des registres 32 bits d’un procese seur ne disposant pas des op´rations en format satur´. en binaire . A l’´tat initial. i2 i0. il convient de les remplacer par un petit e e programme qui produise le r´sultat voulu. e Question 2 : On peut revenir sur cet exercice apr`s le chapitre sur les e circuits combinatoires. ni d´bordement. il est remplac´ par le plus grand nombre repr´sentable dans le e e syst`me de num´ration utilis´. cmp bge subcc bxx mov ba mov mov ba mov i0. il est remplac´ e e e e e par le plus petit nombre repr´sentable dans le syst`me de num´ration utilis´.8 : Arithm´tique satur´e e e En arithm´tique satur´e. il faut connaˆ la programmation e ıtre en langage d’assemblage. le registre i0 contient une valeur enti`re x. le registre i2 contient 1 si la valeur absolue de x est codable sur 32 bits en compl´ment ` 2. il n’y a ni retenue. Quand le r´sultat est trop petit. le registre i2 e a contient 0 si cette valeur absolue n’est pas codable . 0 pos 0. i2 fin 1. cod´s sur 32 bits (attention les e exemples sont sur 8 bits). avec des exemples ´crits en d´cimal : e e – En binaire pur : 20010 +SatBinpur 8010 = 25510 au lieu de 28010 8010 −SatBinpur 20010 = 010 au lieu de −12010 – En compl´ment ` 2 : 10010 +SatCompl2 8010 = 12710 au lieu de 18010 e a −8010 −SatCompl2 10010 = −12810 au lieu de −18010 Question 1 : Pour r´soudre cette question.

. Montrer que a. alors la retenue C est l’inverse du bit de signe : V =⇒ C = (N ) e La figure 3. re )) rs = maj (a. a E3. Soit Yc2 le relatif repr´sent´ par ce e e e vecteur pour l’interpr´tation compl´ment ` 2. . Si un octet repr´sente le e e niveau de gris d’un pixel.9 : Expression du bit de d´bordement e Soit maj (x. re ) On connaˆ deux expressions d´crivant la valeur du bit de d´bordement V apr`s ıt e e e une addition : V = a. on peut ´claircir un pixel en augmentant sa luminosit´ 2 . Soit Yb le naturel repr´sent´ par e e ce vecteur pour l’interpr´tation binaire pur. Montrer que maj (x.8.b. Le bit V pour la soustrace tion est donn´ par : e V = aN −1 . Donner des relations entre Yb . b.s Montrer que l` aussi V = rs ⊕ re . e e a Yc2 et yN −1 . selon 3 bits de commande.z.11 : Repr´sentation de la somme de deux entiers relatifs e Montrer que.9 donne quelques ´l´ments de r´ponse.b.y + x.b. . z) = maj (x. z) On note ⊕ le OUEXCLUSIF ou XOR. e Remarque : Les op´rations en arithm´tique satur´e font partir de l’exe e e tension MMX du jeu d’instruction des processeurs pentium de intel. a E3. 7] pour chacun des cas.b. On y repr´sente les 8 cas ee e e possibles de valeurs pour le bit poids fort dans une addition en compl´ment e a ` deux. Faire le mˆme travail pour la e soustraction. y1 y0 . mais il ne faut pas aller e e au-del` de 255. Exercices 71 pur et en compl´ment ` deux.s + aN −1 . y.10 : Relation entre binaire pur et compl´ment ` 2 e a Soit un vecteur de bits yN −1 yN −2 .bN −1 . y. y. par exemple 0 pour noir et 255 pour blanc. si l’addition de deux nombres relatifs cod´s en compl´ment ` e e a deux d´borde.s et V = rs ⊕ re Montrer que les deux expressions sont ´quivalentes. b. . e Retrouver chacun des cas dans le tableau 3.bN −1 .z + y.(a ⊕ b) = a. Trouver des entiers cod´s sur 4 bits dans [−8. .(a ⊕ b) = 0 On pose les ´quations bool´ennes : e e s = a ⊕ b ⊕ re (on note parfois s = ⊕(a. z) = x. en arithm´tique normale et en arithm´tique e a e e satur´e.s + a. Elles servent notamment en repr´sentation des images. E3.7.

2 − 1]. on obtient sa repr´sentation dans le registre a e %l2 ` l’issue de l’instruction d’addition. entiers positifs. a Lorsque U n’est pas repr´sentable en C2 sur 32 bits (c’est-`-dire U < e a ”Plus blanc que blanc. et l’entier U = A + B. sont donc e e e e 31 31 dans l’intervalle [−2 . %l1. re ) indic. 2 − 1] Lorsque U est repr´sentable en C2 sur 32 bits e (c’est-`-dire −231 ≤ U ≤ 231 − 1).72 Repr´sentation des grandeurs e aP signe A 0 0 0 0 1 1 1 1 bP signe B 0 0 1 1 0 0 1 1 re 0 1 0 1 0 1 0 1 rs = maj(aP .12 : R´cup´ration du r´sultat d’une addition qui d´borde (cas e e e e des entiers positifs) On consid`re deux entiers positifs A et B. %l2. ´tant suppos´s repr´sent´s sur 32 bits. dans le cas de la repr´sentation en compl´ment e e e e a ` 2. ´tant suppos´s repr´sent´s sur 32 bits. respectivement e e e a dans les registres %l0 et %l1 du sparc. sont donc e e e e 32 dans l’intervalle [0. e E3. On peut ´videmment faire l’exercice analogue pour la diff´rence. N 0 1 1 0 1 0 0 1 V = r e ⊕ rs indic. V 0 1 0 0 0 0 1 0 Fig. bP . bP . c’est quoi comme couleur ?” demandait Coluche dans un de ses textes ! 2 . on obtient sa repr´sentation dans le a e registre %l2 ` l’issue de l’instruction d’addition. On effectue l’addition grˆce ` l’insa a truction ADDcc %l0. On suppose e que A et B sont repr´sent´s en compl´ment ` deux sur 32 bits. 3.13 : R´cup´ration du r´sultat d’une addition qui d´borde (cas e e e e des entiers relatifs) On reprend l’exercice pr´c´dent. A et B. On consid`re deux entiers relatifs A et B. respectivement dans e e les registres %l0 et %l1 du sparc. on dit que l’addition d´borde. re ) indic. C 0 0 0 1 0 1 1 1 sP = ⊕(aP . %l2. Lorsque U est repr´sentable en binaire pur sur 32 e bits (c’est-`-dire lorsque U ≤ 232 − 1). Ecrire un programme en langage d’assemblage qui donne toujours la somme U dans deux registres %l3. %l1. Mais dans ce cas U est repr´sentable e e sur 64 bits (33 suffiraient).9 – Repr´sentation de la somme de deux entiers relatifs. entiers relatifs. %l2. a Lorsque U n’est pas repr´sentable en binaire pur sur 32 bits (c’est-`-dire e a 32 U > 2 −1). et l’entier U = A+B. On effectue l’addition grˆce ` l’instruction a a ADDcc %l0. A et B. On suppose e que A et B sont repr´sent´s en binaire pur sur 32 bits. e e E3.

selon l’indication suivante. Ecrire un programme en langage e d’assemblage qui donne toujours la somme U dans deux registres %l3. e dizaine de centimes. Exercices 73 −231 ou U > 231 − 1). e e E3. 6 ou 7 unit´s. 4. francs ou dizaine de francs).14 : Description r´cursive de l’addition de 2 naturels e D´crire l’addition de deux naturels comme une op´ration r´cursive sur la taille e e e des deux naturels. on a alors A = Af ort × 2N/2 + Af aible . e e La premi`re partie du code est l’analogue d’une mantisse de 3 bits m2 .7. 01 pour les dizaine de centimes. on dit que l’addition d´borde. 5. La deuxi`me partie du code est l’exposant de 10 affectant les centimes (00 e pour les centimes. Si N est une puissance de 2 sup´rieure e e a ` 1. L’exposant est cod´ sur 2 bits e1 . e m0 . 10. e 2. On repr´sente ces pi`ces par un code binaire. 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. m1 . 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. On a alors des sommes de 3. %l2. 2 ou 5 (centimes. chacune sur N/2 bits . 20 Francs. Mais dans ce cas U e est repr´sentable sur 64 bits (33 suffiraient). la somme de A et B est facile ` a calculer. e Les codes des diff´rentes pi`ces sont donc donn´s par le tableau de la fie e e gure 3. elle est repr´sentable sur 2 bits. 010 ou 101 pour repr´senter 1. On obtiendrait e e une table d’addition pour cette repr´sentation : e 01001 + 10101 = 11101(20 centimes + 50 centimes = 70 centimes). on peut couper A et B en deux parties Af ort Af aible et Bf ort Bf aible . e0 . 20 et 50 centimes et 1. 10. Calculons un report interm´diaire rinter : e rinter = 1 si Af aible + Bf aible ≥ 2N/2 rinter = 0 si Af aible + Bf aible < 2N/2 On a alors. On peut ´videmment faire l’exercice analogue pour la diff´rence.10. Si le nombre N de bits de A et B vaut 1. Il serait possible de compl´ter ce code pour repr´senter des sommes d’argent e e utilisant 2 pi`ces. 10 pour les Francs et 11 pour les dizaines de Francs). Elle prend les valeurs 001. N/2 est entier .15 : Pr´cision en repr´sentation flottante e e Les pi`ces de monnaies courantes en France sont 5. .

Etudier les possibilit´s offertes par un allongement de la mantisse sur e 6 bits par exemple.10 – Codage des valeurs de pi`ces de monnaie fran¸aise. ou N pi`ces. Cela permet de ne n´gliger les centimes que pour des sommes e sup´rieures ` 224 centimes. Etudier les repr´sentations de sommes d’argent utilisant 3. Etudier la technique d’addition nouvelle. e a e mais insuffisant pour une comptabilit´ d’entreprise par exemple. la mantisse a 24 e chiffres. u Toutefois.2.74 Repr´sentation des grandeurs e m2 m1 m0 101 001 010 101 001 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 Fig. e e Dans la repr´sentation en virgule flottante classique. en particulier le cas e o` 50 centimes + 50 centimes font 1 Franc et autres cas semblables. 3. on a aussi : 00111 + 01001 = 00111(10 Francs + 20 centimes = 10 Francs) car cette repr´sentation ne comporte pas assez de chiffres significatifs pour e distinguer 10 et 10. e c Etudier la technique d’addition dans cette repr´sentation. e . C’est suffisant pour la comptabilit´ domestique. 4.

C.) sont des mod`les de traitements et de donn´es. Ada. Les langages dits e e de haut niveau qu’on utilise pour ´crire des programmes (Pascal. Cette notion de niveau correspond au niveau d’abstraction auquel on se place pour ´crire des programmes : les mod`les de bas niveau sont proches e e de la machine. ou un langage d’assemblage d´fini pour ce processeur. e . c) donner la premi`re ´tape de traduction des e e mod`les de haut niveau vers des mod`les de plus bas niveau. Le langage machine d’un e e processeur particulier. d’ailleurs les programmes ´crits en langage de haut niveau peuvent ˆtre e e rendus ind´pendants de la machine sur laquelle on les ex´cute. L’´tape suivante e e e est la traduction en langage d’assemblage (Cf. alors que les mod`les de haut niveau permettent de s’en abse traire . 11 et 10). e Les objectifs de ce chapitre et du suivant sont : a) d´finir les langages et e les mod`les math´matiques utilis´s . est indispensable e e a e pour assurer la correction des diverses transformations n´cessaires pour passer e d’une repr´sentation de traitement dans un langage de haut niveau ` un objet e a ex´cutable par une machine. 18) — aussi bien que pour le mat´riel — les ´tapes de la traduce e tion d’un langage de description de circuits vers une r´alisation ` l’aide d’une e a technologie particuli`re (Cf. .. La d´finition e e e rigoureuse de la s´mantique de ces mod`les. b) donner les ´l´ments n´cessaires ` la e e e ee e a compr´hension de l’utilisation de ces objets math´matiques pour repr´senter e e e des traitements informatiques . e sont ´galement des mod`les de traitements. qui permettent de repr´senter formellee e e ment les donn´es et les traitements qui leur sont appliqu´s.Chapitre 4 Repr´sentation des traitements e et des donn´es : langage e d’actions La programmation des dispositifs informatiques s’appuie sur un ensemble de mod`les math´matiques simples. ` tous les ´tages. 13. Chapitres 12. Chapitre 13). e Ceci est valable en ce qui concerne le logiciel — les ´tapes de la compilation e d’un langage de haut niveau vers un langage machine particulier (Cf. qualifi´s de mod`les de bas nie e e e veau.. Chapitres 8.

2. de type des donn´es. caract`re. qui nomme en particulier les types et les variables utilis´s : e entier18 : le type entier dans [−218−1 . Le paragraphe 4. bool´en. Nous supposons connues les notions de variable dans un langage de programmation imp´ratif. utilisant u e e ee l’un des constructeurs d´crits ci-dessous. e .. o` les pointill´s doivent ˆtre compl´t´s par une expression de type.. e e 1. tableaux. montre comment transformer syst´matiquement les affectations du langage d’actions en acc`s au tae e bleau MEM. 218−1 − 1] a.2.. entier relatif. on ´crira par exemple : e e entier dans [0.2 Construction de types...2 1. ´tudie la e o e repr´sentation en m´moire des types de base et des structures de e e donn´es . introduit les structures e de piles et de files. Le paragraphe 3. Le paragraphe 2. c : des entier18 1.76 Repr´sentation des traitements et des donn´es. r´el et e e caract`re par des vecteurs de bool´ens a ´t´ vue au chapitre 3. b. illustre sur un exemple de construction de s´quence chaˆn´e le probl`me de l’allocation dynamique de m´moire e ı e e e n´cessaire ` la manipulation des structures de donn´es r´cursives comme e a e e les s´quences chaˆn´es et les arbres.1 Lexique : nommage des types et variables Un algorithme commence toujours par un lexique. Pour d´crire un type construit et le nommer. structures de donn´es usuelles e Nous ´tudions ici les structures de donn´es offertes par les constructeurs de e e types usuels des langages de programmation (n-uplets. Le dernier paragraphe s’int´resse ` la e ı e e a fois aux traitements et aux donn´es : la section 5. 1. nous introduisons le tableau MEM qui mod´lise la m´moire e e e d’un ordinateur. en ´tudiant ` la fois la repr´sentation en m´moire et e a e e les algorithmes associ´s. Un langage d’actions Le langage d’actions que nous d´crivons bri`vement ci-dessous est tir´ e e e de [SFLM93].255]. r´el. on ´crit : e e T : le type . pr´sente un petit langage d’actions (structures e de donn´es et structures de contrˆle). pointeurs). On se donne e e ee une notation de ces types de base : entier. e 1.1 Types de base et types construits Types de base La repr´sentation des types de base entier naturel. e e Le paragraphe 1. Pour les e e e entiers on s’autorise une sp´cification d’intervalle .

u e nous nous restreignons ` des intervalles d’entiers. si a et b sont des noms de variables de type entier... o` N est un entier strictement positif. . Structure12 : le type < x : un T1. est intimement li´e ` celle d’adresse.1. Un langage d’actions 77 N-uplets Le constructeur de type n-uplet permet de grouper des informations de types diff´rents et de les manipuler comme un tout.y. T[43]. On notera ces e groupements par des chevrons : T1 : le type . on ´crit ainsi S. ces intervalles peuvent eux-mˆmes ˆtre d´finis d’apr`s des types e e e e ´num´r´s g´n´raux. En anticipant sur la notation des traitements (paragraphes 1. Pour la suite de l’expos´. on e appelle pointeur de T le type des adresses m´moire d’objets de type T. Tableaux Le constructeur de type tableau permet de grouper des informations de mˆme type et d’y acc´der par un indice..5). e . e ee e ou encore T[a+b]. e L’acc`s aux ´l´ments par un indice permet de parcourir tous les ´l´ments e ee ee d’un tableau dans une boucle.. En e e e ee Pascal ou Ada.4 et 1..x. etc. on ´crit typiquement : e Tab : le type tableau sur [42. On note les tableaux par des e e crochets : Elem : le type . En C les tableaux sont toujours d´finis sur un intervalle de e ee e e e la forme [0.. Le mot pointeur est un constructeur de type. y : un T2 > S : un Structure12 x et y sont des noms qui d´signent les champs de la structure.. e e e Le constructeur n-uplet correspond aux struct des langages C et C++..] de Elem En g´n´ral [. Ta+b . not´e .] doit ˆtre compl´t´ par la notation d’un type intervalle.. Etant donn´ un objet S de type e e Structure12.56] T[i] ←− 2 * i Pointeurs La notion de pointeur des langages de programmation comme Pascal.56] d’entiers T : un Tab i parcourant [42. C. on acc`de aux informations ´l´mentaires du n-uplet par l’op´ration e ee e de s´lection des champs.... T1 et T2 sont e des types quelconques d´finis par ailleurs. Etant donn´ un type T. Ada. dont les valeurs sont telles que a+b appartient ` l’intervalle [42.... T2 : le type .56]. On ´crira par exemple : a e Tab : le type tableau sur [42. Nous revenons sur e a ce constructeur de type dans le paragraphe 2.56] d’entiers T : un Tab { T est une variable de type Tab } L’acc`s aux ´l´ments du tableau est not´ par des crochets : T[42]. S. aux record des langages Pascal et Ada. Tab : le type tableau sur [. On peut aussi a utiliser une notation indic´e : T42 .N].

de constantes des types de base. E2 deux expressions de mˆme u e e type. e etc. e Pour les entiers strictement positifs on consid`re ´galement le reste et le e e quotient de la division enti`re. e e 1. multiplication. division. La s´mantique de ces op´rateurs peut ˆtre d´crite 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. e e orelse). On ´crit e e par exemple : T : un type . d’op´rateurs e e e pr´d´finis et d’appels de fonctions.78 Repr´sentation des traitements et des donn´es. c’est-`-dire le type entier et le e a type r´el.3 Op´rateurs de base et expressions e Les expressions du langage sont form´es ` partir de noms de variables e a d´clar´es dans le lexique. 1. pt : une adT t1 ←− pt↑ Les variables de type pointeur peuvent avoir une valeur particuli`re not´e e e NIL. h´rit´s de l’alg`bre de Boole (Cf.2 Op´rateurs sur les nombres et les caract`res e e Op´rations arithm´tiques : On utilisera toutes les op´rations e e e arithm´tiques usuelles : addition. o` C est une expression de type bool´en et E1.3)..4.3. e e e etc.. Chapitre 2). quelconque. non. ou. quotient : deux entiers > 0 −→ un entier > 0 { reste(a. Paragraphe 2. t1 : un T . On y ajoute les op´rateurs e e e e bool´ens dits s´quentiels (ou non stricts) etpuis. e e L’op´ration de d´r´f´ren¸age s’applique ` un objet de type pointeur de T e e ee c a et son r´sultat est un objet de type T.. sur les types num´riques introduits ici.b) = r et quotient (a.3. oualors (en Ada : andthen.1 Expression conditionnelle et op´rateurs bool´ens e e Une expression conditionnelle a la forme suivante : si C alors E1 sinon E2. soustraction. on consid`re les op´rateurs de base et. e e . Noter que les 2 expressions ci-dessous sont ´quivalentes. On la note de mani`re postfix´e par e e e une fl`che verticale vers le haut : p↑ est l’objet dont l’adresse est p. qui signifie pointeur sur rien (Cf. bien e que diff´remment factoris´es : e e (si C1 alors E1 sinon E2) + (si C1 alors E3 sinon E4) si C1 alors E1+E3 sinon E2+E4 Pour les bool´ens.b) = q si et seulement si a = bq + r. en ´vitant les probl`mes de d´finition dus au e e e e signe des op´randes : e reste. avec 0 ≤ r < b } L’op´ration reste est souvent appel´e modulo. adT : le type pointeur de T . ouexcl.

MinusculeDe : un caract`re −→ un caract`re e e Les premi`res permettent de d´terminer ` quel sous-ensemble de caract`res ape e a e partient un caract`re donn´. ainsi que des e e conversions dynamiques implicites.1. puisque l’´cart e entre les codes de deux lettres correspondantes est une puissance de 2. pour pase e ser des majuscules aux minuscules il suffit d’inverser un bit. e e e Par exemple : MajusculeDe (’a’) = ’A’. dont le type doit ˆtre compatible avec le type de la partie gauche. ea . e Les langages de programmation proposent des notions de compatibilit´ de e types plus ou moins riches. EstChiffre ?.. nous signalions d´j` ce cas. . o` x est un r´el et y un ene u e tier. toutes a ee ces fonctions peuvent ˆtre cod´es en op´rations arithm´tiques ou bool´ennes e e e e e simples sur la repr´sentation en binaire des caract`res. Un langage d’actions 79 Op´rations sur les caract`res : On peut introduire sur le type de base e e caract`re des fonctions comme : e EstLettre ?. Les deuxi`mes sont des fonctions de conversions. EstMajuscule ?. e nous utiliserons des fonctions de conversion de type (ou de changement de repr´sentation m´moire) explicites : e e EntierVersR´el : un entier −→ un r´el e e { EntierVersR´el (a) est le r´el de valeur a } e e Naturel31 : le type entier sur [0. 1. des v´rifications statiques associ´es. la partie droite est une e expression. 232−1 − 1] Naturel31VersEntier32 : un Naturel31 −→ un Entier32 { NaturelVersEntier (n) est l’entier de valeur n } Nous revenons sur la traduction en assembleur de ces fonctions au chapitre 13. : un caract`re −→ un bool´en e e MajusculeDe.) .u ←− expr La partie gauche d’une affectation doit pouvoir d´signer un emplacement e m´moire (nous y revenons dans le paragraphe 3. la repr´sentation en m´moire de la variable y est n´cessairement e e e diff´rente de celle de x. Notons que. 232−1 − 1] Entier32 : le type entier sur [−232−1 . On la note par une fl`che orient´e ` gauche : e e a X ←− expr T[3+z]. Par exemple.1. Chae e e pitre 3). Nous verrons en particulier que la traduction en langage d’assemblage de la fonction Naturel31VersEntier32 est un programme vide ! Au chapitre 3. Chapitre 3). Toutefois on peut avoir besoin d’´crire x ←− y. e Pour mettre en ´vidence la conversion que cache ainsi l’affectation. Nous nous contenterons ici d’exiger que les types des parties gauche et droite soient identiques. grˆce aux propri´t´s du code ASCII (Cf.. paragraphe 3.4 Affectation L’action de base dans un langage d’actions est l’affectation. qui permet de modifier la valeur d’une variable. Le codage binaire des entiers ´tant fort diff´rent de celui des r´els (Cf.

Les ın´ structures case et switch de ces langages ne permettent en effet que des conditions de la forme expr = constante. i ←− i + 1 ... r´p´ter . A2 et A3 repr´sentent des actions quelconques. C. e a On peut d´j` ramener la structure parcourant ` une structure tantque : ea a i parcourant [a . pour les valeurs d’une ou plusieurs expressions de type quelconque.80 Repr´sentation des traitements et des donn´es. e e a au repeat . alors . sinon enchaˆ ees. e X : un entier Y : un caract`re e selon X. qui permet de d´crire une e analyse par cas exhaustive et sans duplication de cas. alors que c’est impossible pour une expression conditionnelle. e Nous utilisons par ailleurs 3 structures it´ratives : parcourant (qui correse pond au for de Pascal. La structure selon ` conditions quelconques existe en Lisp (cond). Autrement dit..... Dans l’exemple qui suit. au loop ... alors . . b] : A { Est ´quivalent ` : } e a i : un entier sur [a . types a e ´num´r´s. while de Ada).. until de Pascal. alors .. comme en Pascal. en C. e ee a mais sa s´mantique est s´quentielle et les diff´rentes conditions ne sont pas e e e n´cessairement exhaustives. 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 doit avoir une valeur dans tous les cas. tantque (qui correspond au while de Pascal...)... Ada. while de C... e e 1. pour des types dont les constantes ont une notation dans le langage. usuelles dans tous les langages de programmation imp´ratifs. .. caract`res.5 Structures conditionnelles et it´ratives e On se donne les constructions si .... sinon et si .. Y X ≥ 0 et Y = ’a’ : A1 X ≥ 0 et Y = ’a’ : A2 X < 0 : A3 Cette structure g´n´rale doit souvent ˆtre cod´e par une s´rie d’expressions e e e e e conditionnelles si . La s´mantique de ces constructions est pr´cis´e par leur traduction en mae e e chines s´quentielles ` actions (ou organigrammes) au chapitre 5.. b+1] i ←− a tantque i ≤ b : A ... Notons que l’on peut ici e omettre la partie sinon. ne rien faire est une action particuli`re... A1. C et Ada). c’est-`-dire les entiers.. jusqu’` (qui correspond au do .

v. w. Les expressions qui appae e raissent entre parenth`ses dans les appels de fonctions ou actions sont appel´s e e param`tres effectifs ou arguments. de type entier. de la fonction nomm´e e e ExpressionCompliqu´e. Un langage d’actions 81 1.1. b : deux entiers . e { param`tres dont la valeur est utilis´e par l’action } e e le r´sultat r : un entier) { param`tre dont la valeur est modifi´e par l’action } e e e lexique local : x : un entier { Pour des calculs interm´diaires } e algorithme x ←− (a+b)*2 .b) : x + x*x e Pour d´finir une action on ´crira : e e CalculerExpressionCompliqu´e : une action e (les donn´es a. e CalculerExpressionCompliqu´e (2*u. e e . w2 : des entiers w ←− ExpressionCompliqu´e (u. D’autre part deux variables locales de deux actions ou fonctions diff´rentes peuvent porter le mˆme nom.6 Fonctions et actions param´tr´es e e Pour d´finir une fonction on ´crira : e e ExpressionCompliqu´e (a. Paragraphe 2. e e Les param`tres effectifs r´sultats sont des expressions qui pourraient figurer en e e partie gauche d’affectation. w1. v−1.1 du chapitre 13 pour comprendre cette contrainte).2. v. w2) . v) + ExpressionCompliqu´e (2*u. Le r´sultat est de type entier ´galement } e e e lexique local : x : un entier { Pour des calculs interm´diaires } e algorithme x ←− (a+b)*2 { Description du r´sultat de la fonction : } e ExpressionCompliqu´e (a. v−1) e e CalculerExpressionCompliqu´e (u. r ←− x + x*x Un contexte d’utilisation de la fonction ExpressionCompliqu´e et de l’action e CalculerExpressionCompliqu´e est d´crit ci-dessous : e e u. b : deux entiers) −→ un entier e { a et b sont les noms des param`tres. Les noms d´finis dans le lexique local ont une port´e r´duite au corps de e e e l’action ou fonction : cela signifie qu’ils ne sont pas utilisables ailleurs dans le texte d’un programme. w1) . Les param`tres effectifs donn´es sont des e e e expressions quelconques du type d´fini par le param`tre formel correspondant. c’est-`-dire qui d´signent un emplacement m´moire a e e (Cf. e w ←− w1+w2 Les noms qui apparaissent dans la liste de param`tres de la d´finition d’une e e action ou fonction sont appel´s param`tres formels.

Dans la suite de cet ouvrage nous nous int´ressons — e sauf mention contraire — au cas des octets. tableaux. et dont les ´l´ments repr´sentent les unit´s adressables ee e e de la m´moire d’une machine. etc. y) Ecrire (”Somme des deux entiers : ”. ` partir du codage binaire des types de base . e L’unit´ adressable est un vecteur de bool´ens. Ce paragraphe traite de deux aspects : 1) la repr´sentation binaire des e valeurs des variables d’un langage de programmation (types simples. complexit´ en m´moire ou en temps) des u e e e op´rations de base ` r´aliser sur les objets du type consid´r´.. tmem repr´sente donc la taille de la m´moire en octets. On choisit donc la plus petite e a e .82 Repr´sentation des traitements et des donn´es. est une mani`re d’exprie e e mer que. comme abstraction de la m´moire d’un e ordinateur. dans une machine r´elle. Lire (x. Dans une machine r´elle c’est e e e presque toujours sup´rieur au bit . x+y) 2. e e e Une utilisation typique est d´crite ci-dessous : e lexique : x. indic´ par les naturels d’un a e intervalle [0. ceux de Ecrire sont des donn´es. certaines machines ont propos´ des unit´s e e e adressables de 9 bits. des contraintes de r´alisation mat´rielle e e e empˆchent d’acc´der efficacement ` chaque bit de la m´moire individuellement e e a e (Cf. 2) l’installation a des variables d’un programme en m´moire. y : des entiers Ecrire (”Donnez deux entiers : ”) . e Les param`tres de Lire sont des r´sultats. e e 1. pour des raisons mat´rielles. mais il est irr´aliste..tmem-1].1 Repr´sentation en m´moire des types de base e e Repr´sentation en m´moire des bool´ens e e e L’id´al pour la repr´sentation en m´moire d’une information de type e e e bool´en serait d’utiliser 1 bit . c’est-`-dire aux unit´s adressables a e de 8 bits. e Les choix de repr´sentation des types structur´s sont en g´n´ral guid´s e e e e e par une notion de coˆt (simplicit´.2. C’est une taille commode pour la repr´sentation du type caract`re e e en m´moire.1 Une mod´lisation de la m´moire : le tableau MEM e e Nous introduisons le tableau MEM. e e e La notion d’unit´ adressable.7 Entr´es/Sorties e On utilisera les actions Lire et Ecrire. pour tout type de donn´es. structures. Chapitres 9 et 15). sup´rieure au bit. e e e d’acc´der ` un bit individuel dans la m´moire. C’est un tableau ` une seule dimension.). et avec un e nombre quelconque de param`tres. e a e ee 2. 2.2 2.. Repr´sentation des donn´es en m´moire e e e Nous avons vu au chapitre 3 les principes de codage des types de base en binaire.

28−1 −1] ou. e 2.4. e Il existe des langages.2. c’est-`-dire ` a e a a des intervalles d’entiers. toute autre e valeur repr´sente vrai . de choisir. l’intervalle des valeurs repr´sentables n’en est e e pas moins born´. on d´clare des entiers en pr´cisant e e leur taille et en d´cidant si ce sont des entiers naturels ou relatifs. .) et ` la fabrication de valeurs bool´ennes par comparaison de a e deux entiers par exemple (qui apparaˆ bien sˆr dans si X < Y alors . 28 −1] (Cf. Dans le langage C. mˆme si l’on consacre toute la m´moire de la machine ` la e e a repr´sentation d’un seul entier.. o` l’on peut esp´rer gagner de la e u e place). un e e e e octet suffit pour repr´senter en compl´ment ` deux les entiers de l’intervalle e e a [−28−1 . par exemple. il devient n´cessaire d’utie e liser plusieurs unit´s adressables pour la repr´sentation d’une seule valeur de e e type entier. C’est un abus de langage pour expria e mer que la taille des entiers manipulables n’est pas statiquement born´e : la e simple addition de deux entiers peut provoquer l’allocation d’une zone m´moire e suppl´mentaire n´cessaire ` la repr´sentation du r´sultat. et l’on e e . e e e disjonction. vrai = 4210 et faux = 7710 (sur un octet e par exemple). Il faut penser aux op´rations internes du type bool´en (conjonction.2. Les types de e donn´es qui permettent de d´finir des entiers dans les langages de programe e mation usuels correspondent le plus souvent ` des entiers born´s. le choix est le suivant : 0 repr´sente faux. comme scheme [Aa91]. Le choix du bon codage d´pend essentiellement de la r´alisation e e des op´rations dans lesquelles intervient un op´rande ou un r´sultat de type e e e bool´en.. Chapitre 3). e 2. Il faut convenir d’un codage des deux constantes vrai.. faux parmi les 2k configurations d’une unit´ adressable de k bits..3 Probl`me de la taille des entiers e Si le type entier du langage de haut niveau que l’on consid`re d´signe un e e intervalle d’entiers suffisamment petit. a priori. en binaire pur. e Rien n’empˆche. dans lesquels les traitements d’entiers sont dits ` pr´cision infinie. Le terme infini est e e a e e abusif puisque. Par exemple. Si le type entier d´signe un intervalle plus grand. Pour vrai = 4210 et faux = 7710 . Repr´sentation des donn´es en m´moire e e e 83 taille possible : une unit´ adressable (voir toutefois le paragraphe 2. les valeurs de ce type peuvent ˆtre e repr´sent´es en m´moire dans une seule unit´ adressable.2.2 Repr´sentation en m´moire des entiers e e Nous avons suppos´ l’existence d’un type de base entier. il est difficile de d´crire la conjonction de e deux bool´ens a et b plus simplement que par : e si a=42 alors si b = 42 alors 42 sinon 77 sinon 77. En C. une conjonction peut alors ˆtre r´alis´e ` l’aide de e e e e a l’op´rateur et logique disponible sur tous les processeurs. mais ıt u aussi dans des expressions de la forme : B ←− (X < Y)).2 pour e le cas particulier des tableaux de bool´ens. On utilise dans ce cas des unit´s adressables contigu¨s. les entiers de l’intervalle [0.

t2 dans MEM[a+2].. e a Pour repr´senter x en m´moire..2 − 1].. e e ea e e . Par exemple.x8 . Notons qu’une de ces tranches. e 2. Ainsi.2 − 1]... ce placement est appel´ gros boutiste : les poids forts de x ape paraissent en premier. Comme on respecte l’ordre entre les tranches. a e MEM[a+2] et MEM[a+3]. dans l’ordre des adresses. e a Notation Nous noterons taille(T) le nombre d’unit´s adressables n´cessaires e e a ` la repr´sentation en m´moire d’un objet de type T... comment ´tendre la e repr´sentation binaire d’un entier ` un plus grand nombre de bits. par exemple. t3 dans MEM[a+2] et t4 dans MEM[a+3] . on utilisera donc 3 e octets.x0 le codage en compl´ment ` deux de x.2. paragraphes 2. ´videmment contigus. si l’unit´ adressable est l’octet.x0 doit e ˆtre d´coup´e en 4 portions de 8 bits. t1 = x7 . prise isol´ment.4 Repr´sentation en m´moire des entiers qui ne tiennent pas e e dans une unit´ adressable e Consid´rons par exemple un entier x quelconque de l’intervalle e 32−1 32−1 [−2 . d`s qu’il faut e e e transf´rer des fichiers. 218−1 − 1]) = 3.. les donn´es e doivent ˆtre transform´es avant d’ˆtre transmises. les deux choix possibles sont : – t1 dans MEM[a]. t2 . qui n´cessitent 18 bits. donc 4 octets. c’est e e le choix gros boutiste. Nous avons vu au chapitre 3... Voir aussi l’exercice E4. e e e 2. MEM[a+2] et MEM[a+3]. Sur les machines qui font le choix inverse. t3 et t4 dans les cases MEM[a]. ce qui donne : e e e e t4 = x31 . il existe un standard.. Un choix subsiste sur le placement des 4 tranches t1 . Notons x31 .. La suite de 32 bits x31 .. Pour repr´senter les entiers e e e 18−1 18−1 de l’intervalle [−2 . e e taille(entier dans [−218−1 .1.. t2 = x15 ..84 Repr´sentation des traitements et des donn´es. t3 = x23 . Nous nous int´ressons donc au e e e probl`me de l’acc`s simultan´ ` plusieurs unit´s adressables contigu¨s.3 Les acc`s au tableau MEM e Nous venons de voir que des variables de types simples comme les entiers peuvent n´cessiter plusieurs unit´s adressables. Dans le domaine des r´seaux. MEM[a+1]. – t1 dans MEM[a+3]. e e e e c’est-`-dire 4 cases cons´cutives du tableau MEM : MEM[a].. t3 dans MEM[a+1] et t4 dans MEM[a] . n’a pas n´cessairement de sens par rapport ` la vae e a leur de l’entier x. on utilise 4 unit´s adressables contigu¨s.x0 . Remarque : L’existence de ces deux conventions diff´rentes est une cause e importante de non compatibilit´ entre syst`mes informatiques. et 3.. t2 dans MEM[a+1]. e a qui n´cessite bien 32 bits. dans l’ordre des adresses.x16 . e e consid`re un nombre entier d’unit´s adressables. ce placement est appel´ petit boutiste : les poids faibles de x e apparaissent en premier. en cas de codage en compl´ment ` 2. seul le bit de poids fort de la tranche t4 porte l’information sur le signe de x.x24 . MEM[a+1].

nous ne nous int´ressons qu’au cas de blocs d’unit´s adrese e sables en nombre ´gal ` une puissance de 2 (pour ne pas perdre d’espace e a d’adressage. Cette restriction est connue sous le nom de contrainte d’alignement m´moire.1 Repr´sentation en m´moire des types construits e e Repr´sentation en m´moire des n-uplets e e Les n-uplets. y : un T1 > Une valeur de type Structure12 occupe 6 unit´s adressables cons´cutives. Le champ x commence ` l’adresse a. Les quatre unit´s adressables d’indices a. les acc`s ne sont permis que lorsque l’adresse est un multiple de la taille du transe fert (les autres acc`s ne sont pas n´cessairement impl´ment´s parce qu’ils sont e e e e moins efficaces). } e e e Il existe en g´n´ral une op´ration ´l´mentaire de transfert de 4 octets dans e e e ee les machines dites 32 bits. sont en petit nombre. fix´. e Les contraintes mat´rielles d’acc`s ` la m´moire ont ´galement pour e e a e e cons´quence que les acc`s simultan´s ` un nombre quelconque d’unit´s adrese e e a e sables ne peuvent pas constituer des op´rations ´l´mentaires dans une machine e ee (un processeur) usuel.. y : un T2 > Structure21 : le type < x : un T2. Chapitre 15). Cf. une op´ration de transfert de 8 octets dans les e machines 64 bits. e e a e e Nous noterons ←− k une affectation de taille k.4 2. Les deux unit´s adressables d’indices a et a+1 e sont copi´es dans la variable x (suppos´e de taille ad´quate).. e e d’adresses a. e e e Consid´rons les d´finitions de type : e e T1 : le type entier dans [−232−1 . a + 5. c’est-`-dire un transfert a simultan´ de k unit´s adressables. 216−1 − 1] Structure12 : le type < x : un T1. a .. 2. de mˆme que les entiers suffisamment grands. Les affectations de m´moire pr´sent´es ci-dessous. a+1. e e Tout d’abord. 232−1 − 1] T2 : le type entier dans [−216−1 . et le champ a y ` l’adresse a + 4. D’autre part.. } e e e x ←− 4 MEM[a] { Valide si a est multiple de 4. que nous ´tudierons au chapitre 15. a + 1.2. sur la plupart des machines. e a+2 et a+3 sont copi´es dans la variable x (suppos´e de taille ad´quate). On utilise lorsque c’est possible des unit´s contigu¨s. demandent plue sieurs unit´s adressables. Nous consid´rons par la suite les affectae e e tions : x ←− 1 MEM[a] { L’unit´ adressable d’indice a dans le tableau MEM est copi´e dans la variable e e x (suppos´e de taille ad´quate) } e e x ←− 2 MEM[a] { Valide si a est multiple de 2. . . Elle est guid´e par les contraintes mat´rielles de liaison entre le e e processeur et la m´moire. Repr´sentation des donn´es en m´moire e e e 85 La situation d´crite ci-dessous n’est pas la plus g´n´rale que l’on pourrait e e e imaginer. ine e e dic´es par le nombre d’unit´s ` transf´rer.4.

e e d’adresses a. pour satisfaire la contrainte a d’alignement pour le champ y. vert (green) et bleu. b. et (56 − 42 + 1) est le nombre e e ee d’´l´ments du tableau. e 2. et la luminosit´. u Dans le cas particulier o` l’intervalle des indices du tableau commence ` 0. a + 5.N-1] de T’.4. e e Placer les ´l´ments du tableau dans des unit´s adressables cons´cutives ee e e permet d’exprimer simplement l’adresse d’un ´l´ment du tableau en fonction ee de son indice et de l’adresse de d´but du tableau. donc son adresse doit ˆtre paire. le paragraphe sur l’optimisation des parcours de tableaux cidessous). Si l’on veut pouvoir acc´der ` ce champ globalement (un seul acc`s e a e m´moire). on doit m´nager un espace entre le champ x et e le champ y. . la formule qui donne l’adresse de T[i] en fonction de l’adresse a de d´but de T est plus simple : d = i × taille (T’). La directive d’alignement . sparc VIS) proposent des instructions sp´cifiques et un codage efficace pour une structure partie culi`re qui permet de d´crire une couleur : elle comporte 4 champs r. e Ces contraintes d’alignement en m´moire empˆchent de placer un objet de e e type Structure21 ` une adresse quelconque.2 Repr´sentation en m´moire des tableaux e e Comme mentionn´ plus haut.56] d’entiers dans [−232−1 . l’´l´ment T[i] occupe les unit´s d’adresses a + d + 0. 4 est e e le nombre d’unit´s n´cessaires pour un ´l´ment.. e La prise en compte des contraintes d’alignement peut imposer de m´nager e des espaces perdus entre les ´l´ments du tableau.. a + 1. De mˆme le champ x est de e e e taille 2. e e Remarque : Certaines machines (pentium MMX.. e e En suivant le mˆme raisonnement que pr´c´demment. Si le type T’ des ´l´ments ee ee . Le fait que l’adresse d’un e ´l´ment soit ainsi calculable conduit ` un codage simple des boucles d’acc`s ee a e au tableau (Cf. une valeur de e e e type Structure21 semble pouvoir occuper 6 unit´s adressables cons´cutives. et le champ a y ` l’adresse a + 2.4. 232−1 − 1] Une valeur T de ce type n´cessite 4 × (56 − 42 + 1) unit´s adressables..2 une solution de repr´sentation en e m´moire qui ´vite de perdre trop de place dans le cas d’un tableau de struce e tures. un tableau permet de grouper des informae tions de mˆme type et d’y acc´der par un indice. o` d = (i − 42) × 4. Nous donnons au paragraphe 2.align usuelle dans les langages d’assemblage est introduite au chapitre 12 et son utilisation dans la traduction des langages de haut niveau en langage d’assemblage est ´tudi´e au chapitre 13.. Si a est l’adresse de la premi`re unit´ adressable utilis´e ee e e e pour T. Le champ x commence ` l’adresse a. l e e pour les proportions de rouge.86 Repr´sentation des traitements et des donn´es. g. u a par exemple T : un tableau sur [0. De plus.. Tableaux ` une dimension Consid´rons le type Tab : a e Tab : le type tableau sur [42. a + d + 1. Toutefois le champ y est de taille 4 si l’unit´ adressable a e est l’octet. son adresse doit ˆtre un multiple de 4. a + d + 2 ee e et a + d + 3.

. e Remarque : cette fonction correspond ` la macro-notation sizeof du lana gage C. c’est-`-dire 2 × (N − 1). de mani`re ` e ee e a satisfaire la contrainte d’alignement sur des adresses multiples de 4 du champ x. Repr´sentation des donn´es en m´moire e e e 87 est tel que deux objets de type T’ peuvent toujours ˆtre plac´s cˆte ` cˆte e e o a o en m´moire. et non 6. on peut envisager une repr´sentation m´moire tir´e de la transfore e e mation suivante : StructTab : le type < tx : un tableau sur [0. Si la taille m´moire est un crit`re ee a e e important. Lorsqu’on consid`re un tableau de bool´ens.. e En revanche. C’est le cas par exemple pour e T’ : le type < c1..N-1] de Structure21 T : un TabStruct La repr´sentation m´moire propos´e ci-dessus pour T perd 2 octets pour e e e chaque ´l´ment. On e o a o e ee perd ´ventuellement deux octets entre le tableau tx et le tableau ty. Par exemple. le num´ro de bit dans l’octet. e Cas particulier des tableaux de structures Soit le tableau T d´fini par : e TabStruct : le type tableau sur [0.N-1] de T2 . Consid´rons le tableau T d´fini par : e e e T : un tableau sur [0. On peut conserver la formule qui donne l’adresse T[i] en fonction de l’adresse a de d´but de T. de taille 2. Le tableau complet occupe alors N/8 octets au ee lieu de N . On obtient e ces deux informations en prenant respectivement le quotient et le reste de la division enti`re de i par 8. taille align (Structure12) = 8. ` condition de red´finir la notion de taille n´cessaire ` la e a e e a repr´sentation d’un type. Les ´l´ments du champ tx. ty : un tableau sur [0. e e a .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. ` ee e e e a a raison d’un ´l´ment par bit. e e e il devient int´ressant d’essayer de gagner de la place en choisissant une e repr´sentation plus compacte. e e e e on doit m´nager un espace de deux octets entre deux ´l´ments.2. mais c’est e tr`s inf´rieur ` 2 × (N − 1). si T’ est le type Structure12 ´tudi´ au paragraphe pr´c´dent. il n’y a pas de place perdue. a a e Cas particulier des tableaux de bool´ens Nous avons vu plus haut qu’un e bool´en seul occupe un octet. peuvent ˆtre ee e plac´s cˆte ` cˆte sans perte de place . c2. applicable ` un nom de type ou ` une expression typ´e. N−1] de bool´ens e Les ´l´ments de T peuvent ˆtre plac´s en m´moire ` partir d’une adresse a. de mˆme les ´l´ments du champ ty. c3 : des caract`res >. La position de l’´l´ment de rang i est d´termin´e par : le num´ro ee e e e de l’octet dans lequel il se trouve .

. qui consiste ` factoriser le calcul de l’adresse dans a le tableau MEM et ` ´viter les multiplications. e e 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 d’assemblage. Ad ←− Ad + E Remarque : La propri´t´ qui lie Ad est i est un invariant de programme. Consid´rons l’algorithme suivant : e Lexique N : l’entier . Cette variable est e ee e li´e ` l’indice i du tableau par la propri´t´ Ad = aT + E * i que l’on installe e a ee avant la boucle. On obtient : i ←− 0 . 232−1 − 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 mod´lise la m´moire.. On note e e ee e aT l’adresse de d´but de T en m´moire. comme on l’observe dans la plupart des compilateurs.. M : des entiers > 0 Tab : le type tableau sur [0. voir par exemple [BB83].N-1] de T’ .. Ad ←− aT + E * i tant que i < N { Invariant : Ad =aT + E * i } MEM [Ad] ←− 2*i + 1 i ←− i+1 .M-1. ee Pour un expos´ complet sur la notion d’invariant... 232−1 − 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 repr´senter l’adresse de l’´l´ment courant en m´moire. Tableaux ` plusieurs dimensions Nous consid´rons ici le cas des tableaux a e a ` 2 dimensions. Le cas des tableaux ` k dimensions s’en d´duit avec quelques a e pr´cautions (exercice E4. et que l’on maintient en modifiant Ad lors de toute modification de i. est une technique usuelle en a e compilation et optimisation des programmes (voir par exemple [CGV80]). et l’installation des ´l´ments de T en m´moire. e Cette transformation.. On obtient : e e lexique : E : l’entier taille align(entier dans [−232−1 ..6). . e Consid´rons le type Tab : e N.88 Repr´sentation des traitements et des donn´es.N−1] d’entiers dans [−232−1 . i : un entier dans [0. 0.N] T : un tableau sur [0.

3 Repr´sentation en m´moire des pointeurs e e { compatible avec tous les pointeurs de T } NIL : un pointeur T : un type ..3] T[2.4. Noter que la repr´sentation de u e T sous forme de matrice (a)..j] s’exprime par la formule : a + (i × N + j) × taille align (T’). dans le cas o` N = 4 et M = 3. nous convenons ici que dans l’expression T[i.1] T[2.. et l’adresse de ee l’´l´ment T[i.1] . En Java. on range les ´l´ments colonne par colonne.2] T[0. i repr´sente un e num´ro de ligne et j un num´ro de colonne... e Remarque : Nous r´servons le terme de tableau ` deux dimensions aux e a structures implant´es de mani`re contigu¨. e e 2.0] T[2.1] . La figure 4.1] T[2.j] s’exprime par la formule : a + (j × M + i) × taille align (T’).3] T[1. T[0.0] T[0.3] T[1.1] T[1..1 illustre les choix de placement des ´l´ments de T dans le ee tableau MEM. 4.. et l’adresse de ee u l’´l´ment T[i. e Dans le cas (c).0] T[0.j].0] T[2. et le choix de la dimension qu’on appelle ligne sont conventionnels . on range les ´l´ments de T ligne par ligne.0] T[1. Dans a a ce cas les lignes (ou colonnes) ne sont plus n´cessairement contigu¨s..0] T[1. Repr´sentation des donn´es en m´moire e e e 89 MEM MEM T 0 0 1 2=M-1 1 2 3=N-1 a T[0.1 – Repr´sentation en m´moire des tableaux ` deux dimensions e e a T : un Tab e La repr´sentation de T en m´moire n´cessite N × M × taille align(T’) unit´s e e e adressables.0] T[0.2] T[1.1] T[1. o` ee a est l’adresse de d´but du tableau.. a T[0.2.0] T[1... ee Noter la sym´trie des deux formules. on appelle tableau ` deux e e e a dimensions une structure de donn´es plus compliqu´e qui consiste en un tae e bleau ` une dimension de pointeurs sur des tableaux ` une dimension..1] T[0. e e Dans le cas (b).2] T[1...1] T[0.2] T[0.3] (a) (b) (c) Fig.

2) que pointeur de T est le type des adresses m´moire d’objets de type T. d’une certaine taille major´e par la taille de la e m´moire disponible de la machine. Traduction des affectations g´n´rales en e e acc`s au tableau MEM e Consid´rons un type T et deux variables de type T nomm´es x et y.tmem-1].. pt : une adT t1 ←− pt↑ La variable pt contient une valeur a qui est une adresse dans le tableau MEM. a + taille(T) − 1. Avec la vision abstraite de la m´moire que nous e avons adopt´e jusque l`. e e adT : le type pointeur de T t1 : un T . n´cessaire par exemple ` la traduction des affectations comme e a t1 ←− pt↑. on ne peut pas la traduire par l’utilisation d’une e affectation indic´e par la taille. comment coder les fonctions de conversion introduites au paragraphe 1. nous verrons au chapitre 13. pour rep´rer de mani`re non ambigu¨ une valeur en m´moire. paragraphe 1. 2) ıtre e e e u e le nombre d’unit´s d’acc`s utilis´es. Dans la r´alit´. et doit ˆtre e e cod´e par une valeur qui n’appartient pas ` l’ensemble de valeurs que peuvent e a prendre les autres pointeurs. qui peut se d´duire de son type. qui cachent des conversions. il suffit e e e e de connaˆ : 1) l’adresse de la premi`re unit´ d’acc`s o` elle est stock´e . On dit que pt pointe sur un objet qui occupe dans le tableau MEM. Le type pointeur de T sp´cifie donc l’informae e tion de taille. e La constante NIL est de type pointeur. e e e e Nous avons vu (paragraphe 1. e e e e e Ainsi. il suffit de choisir NIL : l’entier tmem.. Lorsqu’une affectation porte sur des objets dont le type n´cessite un grand e nombre d’unit´s adressables.90 Repr´sentation des traitements et des donn´es. C’est donc un entier. compatible avec tous les types pointeur de T. la plupart des compilateurs e e e choisissent de coder NIL par l’entier 0 qui est facile ` tester (par convention 0 a n’est alors pas une adresse valide). si MEM est e a d´fini sur l’intervalle [0. suppos´e ˆtre une op´ration de base dans les e e e e machines. Il faut alors traduire l’affectation par une boucle ou une s´quence e .4 ci-dessus). 3.3.. quel que soit T.2. . Dans la d´finition du e a e langage d’actions utilis´. L’affectation se traduit donc toujours par une simple recopie e du contenu d’une zone de m´moire vers une autre (pour les affectations des e langages moins contraignants. lorsque les valeurs des objets e e (structur´s ou non) n´cessitent plusieurs unit´s d’acc`s. celles-ci sont contigu¨s. nous avons exig´ que l’affectation porte sur des obe e jets de mˆme type. taille(T) unit´s adressables d’adresses a + 0.2. On s’int´resse ici ` la traduction de l’action e a x ←− y en n’utilisant plus que les acc`s de taille fix´e au tableau MEM d´crits e e e au paragraphe 2.. inse e tall´es dans le tableau MEM ` des adresses ax et ay. e Nous avons vu dans ce qui pr´c`de que. Elle repr´sente le pointeur sur rien..

3 un exemple typique de construction d’une structure de donn´es r´cursive. Ces donn´es sont a e e accessibles via des variables de type pointeur.2 et 4. qui se comportent e e comme des requˆtes ` un dispositif capable de distribuer de la m´moire : Allouer e a e permet de r´server une zone de m´moire contigu¨.b t1[i] ←− t2[i] Si Elem est lui-mˆme structur´. dans laquelle on a oubli´ le e e type. 3. on utilise les actions Allouer et Lib´rer. de la taille la plus grande possible. en en pr´cisant la taille . e e dans laquelle on traduit une affectation de structures par la s´quence des afe fectations champ par champ . dont les valeurs sont des adresses dans le tableau MEM. la m´thode aveugle. la m´moire contient des donn´es qui ne correspondent pas direce e e tement ` des noms de variables d´finis par le programmeur. par exemple pour d´crire la construction e d’une s´quence chaˆ ee d’entiers dont le nombre d’´l´ments n’est connu qu’` e ın´ ee a l’ex´cution. Utilisation des pointeurs et gestion dynamique de la m´moire e 91 d’affectations. sans lib´ration.. dans un e e programme qui utilise des pointeurs. tout se passe comme si le programmeur . t1 ←− t2 { est ´quivalent ` : } e a i parcourant a. des requˆtes d’allocation suce e e e cessives. 3. t2 : des T .b] de Elem t1.. Utilisation des pointeurs et gestion dynamique de la m´moire e Quand on utilise des pointeurs. Nous donnons figures 4. e e Pour permettre la cr´ation et la destruction de cellules lors de la construce tion de la s´quence... ee 4. et o` l’on traduit une affectation de structures par le bon nombre d’acc`s u e au tableau MEM. e e e e Lib´rer d´clare que la zone ne sera plus utilis´e .2 Affectation de tableaux Consid´rons le programme suivant : e Elem : un type T : le type tableau sur [a.1 Affectation de structures On peut envisager essentiellement deux m´thodes : la m´thode structurelle.4. e e La mani`re la plus simple de voir les choses est de consid´rer que. obtiennent des adresses de zones m´moire disjointes. il faut continuer le raisonnement pour reme e placer t1[i] ←− t2[i] par une s´quence ou une boucle d’affectations plus e ´l´mentaires.

pcour↑. taille (pCellule)) e algorithme du programme principal : Ecrire (”Donnez deux entiers : ”) .255] Cellule : le type < x : une Info. sup. pcour ←− fictif tantque pcour = NIL et k ≤ j : Allouer (pcour. Celle cellule pointe sur une cellule qui contient l’information i+1. le r´sultat p : un pCellule) e e { ´tat final : p est l’adresse d’une premi`re cellule qui contient l’information e e i.. taille (pCellule)) si fictif = NIL alors Ecrire (”Allocation impossible”) sinon pprec ←− fictif . 4. taille (pCellule)) si pcour = NIL alors Ecrire (”Allocation impossible”) sinon pcour↑. ConstruireS´quenceChaˆ ee (inf. sup) . pprec. LaS´quence : un pCellule e ConstruireS´quenceChaˆ ee : une action e ın´ (les donn´es i. fictif↑..j : deux entiers . e e lexique (types et variables) Info : le type entier dans [0.92 Repr´sentation des traitements et des donn´es.. sup : des entiers . } lexique pcour. fictif : des pCellule .2 – Algorithme de construction d’une s´quence chaˆ ee e ın´ fictif LaS´quence e inf Fig.suiv ←− NIL pprec↑. LaS´quence) e ın´ e Fig.x ←− k . Lire (inf. Cette derni`re cellule ne pointe a e sur rien (suiv = NIL). Ainsi de suite jusqu’` une cellule qui contient j. 4.suiv Lib´rer (fictif. k ←− k+1 p ←− fictif↑. suiv : un pCellule > pCellule : le type pointeur de Cellule inf.3 – Une s´quence chaˆ ee e ın´ sup .suiv ←− pcour pprec ←− pcour . k : un entier algorithme Allouer (fictif.suiv ←− NIL k ←− i .

Cf.4. il faut distinguer deux zones n´cessairement dise jointes : – une zone dans laquelle l’outil d’installation du programme en m´moire (le e chargeur. e a zones occup´es. parce e e qu’il est ind´pendant des ex´cutions .1 Sp´cification des actions Allouer et Lib´rer e e Les actions Allouer et Lib´rer peuvent donc ˆtre sp´cifi´es et comprises e e e e en consid´rant qu’une partie de la m´moire est r´serv´e ` cet usage. de l’´criture du texte jusqu’` l’installation e e a du programme en langage machine dans la m´moire vive d’une machine. En C sous syst`me unix. e e 4. et elles sont e e toujours plac´es de la mˆme mani`re les unes par rapport aux autres. Chapitre 20) place les variables du lexique global. Chapitres 18 et 20). u e e e Les environnements de programmation et les langages usuels offrent toutefois des actions Allouer et Lib´rer. Utilisation des pointeurs et gestion dynamique de la m´moire e 93 avait explicitement d´clar´ un grand tableau d’octets. du point de vue du programmeur qui utilise des pointeurs comme dans l’exemple de la figure 4. e e e ainsi que les informations n´cessaires ` sa gestion : zones encore disponibles. d’une e e e ex´cution ` une autre. Pour comprendre exactement comment fonctionne ce dispositif d’allocation m´moire dite dynamique. e – une zone dans laquelle les allocations et lib´rations ` la demande du proe a gramme sont effectu´es. C’est d’ailleurs le e e cas dans certaines applications o` la gestion de la m´moire doit ˆtre optimis´e. Cette zone contient les zones de m´moires allou´es. Nous e e e e a . la m´moire vive de la machine est occup´e par de e e nombreuses informations autres que les objets du programme proprement dit. pour e ex´cution par le processeur (Cf. En e a u e effet.2. il faut comprendre toutes les phases de traduction des e langages de haut niveau en langage machine (Cf. que l’on peut utiliser si l’on ne se pr´occupe e e pas particuli`rement de l’efficacit´ des allocations. D’autre part. e e e les fonctions malloc et free sont fournies dans une biblioth`que standard. Ce pr´calcul est qualifi´ d’allocation statique. Elles restent au mˆme endroit pendant toute la dur´e de vie du programme. Cette zone est appel´e le tas. e Dans ce cas il n’est pas n´cessaire que le programmeur d´clare explicitement e e un tableau. e Toutefois. Nous verrons au chapitre 13 comment le compilateur e a pr´pare ce placement en m´moire vive. seule l’adresse de base d´pend de e e e l’ex´cution. lors de l’ex´cution d’un e programme utilisateur. mˆme si l’on ne consid`re que la m´moire n´cessaire aux donn´es e e e e e du programme utilisateur. Ce n’est bien sˆr qu’une partie de la m´moire. en pr´calculant les d´placements des e e e e diff´rentes variables par rapport ` une adresse de base qui ne sera connue e a que lors du chargement. tout se passe comme si une partie du tableau MEM ´tait r´serv´e pour les allocations et lib´rations de zones m´moire ase e e e e soci´es ` des pointeurs. et fourni des actions e e Allouer et Lib´rer capables de g´rer l’occupation de ce tableau. Chapitres 12 et 13) ainsi que les ´tapes de la vie d’un programme. nous verrons dans la suite de cet ouvrage que.

. } e e Lib´rer : une action (la donn´e : un pointeur . n) r´serve dans la zone de m´moire comprise entre les indices e e T +1 et tmem−1 une zone contigu¨ de n ´l´ments. e e e . qui va de l’indice 0 ` l’indice T . etc. puis au chapitre 20 ` propos d’installation d’un a programme en m´moire vive et de d´marrage du syst`me. n) restitue la zone de m´moire situ´e entre les adresses p incluse e e e et p+n exclue. l’id´e de prendre le premier acc´l`re e e e ee la recherche) . e e consid´rons ici que le tableau MEM est partitionn´ en deux : une premi`re e e e portion P 1. } 4. dans l’ordre e a e e e des demandes. le trou dont la taille est la plus a e ´loign´e de la taille demand´e. lesquels sont occup´s. e e e L’algorithme de l’action Allouer paraˆ simple : il semble suffire de distribuer ıt les portions de la zone de m´moire ` g´rer de mani`re s´quentielle. dans laquelle on trouve en para ticulier les variables du lexique global . selon que l’on pr´f`re utiliser pour une nouvelle allocation : le ee premier trou de taille suffisante (dans un certain ordre d’exploration de la zone m´moire qui d´pend de l’algorithme . qui e peut cr´er des trous. Si l’espace disponible est d´j` enti`rement occup´. Mais c’est raisonner sans tenir compte de l’action Lib´rer. le trou dont la taille est la plus proche de la taille demand´e e (provoque une tendance ` l’´miettement) . Nous le reverrons au chapitre 19 ` propos d’installation a des fichiers sur un disque. la donn´e : un entier > 0) e e { Allouer (p. Le lecteur consultera par exemple [Kra85]. d´marrant sur une fronti`re e ee e e multiple de n. ee e Ces informations sur l’´tat de la zone de m´moire sont de nouvelles variables.. e C’est une action g´n´rique. e Allouer : une action (le r´sultat : un pointeur . la valeur finale e e ea e e p = NIL exprime l’impossibilit´ d’allouer. Elles doivent tenir ` jour un ´tat de l’occupaa e tion des ´l´ments de cette zone : lesquels sont libres.94 Repr´sentation des traitements et des donn´es.. e e qui peuvent ˆtre rang´es dans la mˆme zone. la donn´e : un entier > 0) e e e { Lib´rer (p. p est l’adresse de la premi`re unit´ adressable de cette zone e e r´serv´e. e e e L’algorithme se complique.. dans laquelle on trouve a ee les blocs allou´s dynamiquement et les informations de gestion du tas. Diff´rentes politiques d’allocation de la m´moire e e apparaissent.2 R´alisation des actions Allouer et Lib´rer e e Les deux actions Allouer et Lib´rer g`rent la zone de m´moire P 2 comprise e e e entre les indices T +1 et tmem−1. Le probl`me g´n´ral de la gestion d’un espace m´moire pour l’installation e e e e dispers´e de blocs est pr´sent dans toutes les couches de l’architecture logie e cielle d’un ordinateur. e e e Il existe une litt´rature prolifique sur les diverses mani`res de g´rer ainsi e e e une zone de m´moire o` les demandes et restitutions se font dans un ordre e u quelconque. r´utilisables par des appels ult´rieurs de l’action Allouer. une deuxi`me portion P 2 qui va de e l’indice T + 1 ` l’indice du dernier ´l´ment tmem−1. qui convient pour tout type de pointeur.

la donn´e x : un Elem . les ´l´ments ee sont extraits dans l’ordre de leur insertion (en anglais first in. ok=vrai et P = e α1 . Piles. Dans certains chapitres nous serons amen´s ` pr´ciser e e a e comment sont implant´s les types Pile et File.... les ´l´ments sont extraits dans l’ordre inverse de leur ordre ee d’insertion (en anglais last in. ou LIFO).αk le contenu de la pile.. . Notons P=α1 ..αk−1 } Lorsque la pile est de taille suffisante pour l’utilisation qui en est faite... first out. Nous pr´cisons ci-dessous les op´rations utie e lis´es dans cet ouvrage. Voir par exemple [BB88] pour une sp´cification formelle des structures e de pile et de file et une ´tude de la programmation de ces structures (par des e tableaux.. e e e e le r´sultat ok : un bool´en) e e { ´tat initial : Notons k le nombre d’´l´ments et P=α1 . e ın´ Nous consid´rons ici des piles et des files de taille ´ventuellement born´e. lorsque k = 0..1 Sp´cification d’une pile e Elem : un type PileElem : un type { sans pr´juger de la repr´sentation des piles par des structures e e de donn´es particuli`res } e e TailleMax : un entier > 0 Initialiser : une action (le r´sultat P : une PileElem) e { ´tat final : P est la pile vide } e Empiler : une action (la donn´e-r´sultat P : une PileElem . first out. on utilisera une action . e e e d’o` la notion de pile (ou de file) pleine. ou FIFO)..).. e e e le r´sultat ok : un bool´en) e e { ´tat initial : Notons k le nombre d’´l´ments pr´sents dans la pile . files et traitements associ´s e 95 5. Piles.. e Dans une pile. le r´sultat x : un Elem .αk le contenu de la e ee pile. ´tat final : si k=0. et comment sont programm´es e e les op´rations de manipulation de ces types. ˆter un ´l´ment n’est possible que si elle n’est pas vide. si la pile est pleine : k = TailleMax . P = α1 . alors ok=faux et x est non sp´cifi´ sinon ok=vrai. ´tat final : Si k = TailleMax. Une pile ou une file peut ´galement u e ˆtre vide. ou lorsque qu’on ne veut pas s’int´resser au probl`me du d´bordement (c’est-`e e e a dire une tentative d’insertion lorsque la pile est pleine).αk et ok=faux sinon.αk x } D´piler : une action (la donn´e-r´sultat P : une PileElem . x=αk et e e e P = α1 . si la pile e ee e est vide : k = 0 . Dans une file. files et traitements associ´s e Les piles et les files sont des structures de donn´es tr`s utilis´es dans tous e e e les domaines de l’informatique. o ee 5. des s´quences chaˆ ees.5. Ajouter un ´l´ment ` une pile ou file n’est possible que si elle n’est e ee a pas pleine .

αk le contenu de la file.αk x } Sortir : une action (la donn´e-r´sultat F : une FileElem .2. e e e e 5. on s’autorise les actions Entrer e e et Sortir sans param`tres r´sultats bool´ens.. est non sp´cifi´. x=α1 et e e e F = α2 .αk } Sous les mˆmes hypoth`ses que pour la pile. e ´tat final : si k=0. e e e 6. Ces chaˆ e ınes sont repr´sent´es en m´moire de mani`re e e e e contigu¨. Le choix de repr´sentation en m´moire des entiers (petit bout ou gros e e bout. ok=vrai et F = e α1 .1 : Codage des entiers : petit bout ou gros bout Consid´rons deux chaˆ e ınes de caract`res dont on veut r´aliser la comparaie e son lexicographique (autrement dit d´terminer laquelle vient en premier dans e l’ordre alphab´tique).. e e e le r´sultat ok : un bool´en) e e { ´tat initial : Notons F=α1 . Exercices E4. le r´sultat x : un Elem .. e ee e e De mˆme.. e e e le r´sultat ok : un bool´en) e e { ´tat initial : Notons F=α1 . e e Pour acc´l´rer la comparaison..αk le contenu de la file ..αk et ok=faux sinon. la donn´e x : un Elem . F = α1 . c’est-`-dire qu’on compare les caract`res e a e 4 par 4.2 : Repr´sentation m´moire des ensembles et codage des e e . l’´tat final d’une pile qui e e e e ´tait pleine lors de l’empilement d’un ´l´ment. Paragraphe 2. chaque caract`re occupe un octet et il n’y a pas de place perdue. alors ok=faux et x est non sp´cifi´ sinon ok=vrai. si la file est vide : e k = 0 . si la file est pleine : k = TailleMax ´tat final : Si k = TailleMax. Dans ce cas..4) a-t-il une influence sur la correction du r´sultat ? e E4. e e Empiler sans param`tre r´sultat bool´en...96 Repr´sentation des traitements et des donn´es.2 Sp´cification d’une file e Elem : un type FileElem : un type TailleMax : un entier > 0 Initialiser : une action (le r´sultat F : une FileElem) e { ´tat final : F est la file vide } e Entrer : une action (la donn´e-r´sultat F : une FileElem . on utilise des op´rations de comparaison d’enee e tiers cod´s en binaire pur sur 32 bits. Cf. on peut e e utiliser une action D´piler sans param`tre r´sultat bool´en.. ou si e e e e a l’on sait que l’action D´piler n’est jamais appel´e avec une pile vide. si l’on ne s’int´resse pas au probl`me d’acc`s ` la pile vide...

On consid`re les types : e Elem : le type entier dans [0. (Cf. ou. E2 : des EnsElem . Exercices 97 op´rations ensemblistes e Les vecteurs bool´ens peuvent repr´senter des ensembles. plus exactement. e e un vecteur bool´en de N bits peut repr´senter une partie d’un ensemble ` N e e a ´l´ments : le bit de rang x est ` 1 si et seulement si l’´l´ment x appartient ` ee a ee a l’ensemble. EnsElem : le type ensemble d’Elems E1.6. du chapitre 3).31] . Paragraphe 4..

e e e nomm´s T.2) dans le cas o` un tableau de structures est u repr´sent´ en m´moire par une structure de tableaux. e e E4.. N1 . ee a E4. de dimension 2. Si les e tableaux T et S ont des ´l´ments de 32 bits. E1 ∩ E2 . b : un caract`re > e algorithme i parcourant 0 ....4 : Parcours de tableaux de structures On consid`re l’algorithme suivant : e lexique Entier32s : le type entier sur [−232−1 . N-1 T[i]. ik−1 ] en fonction e ee de l’adresse de d´but de T et des dimensions N0 . 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. S et U. e e Proposer une repr´sentation m´moire des objets de type EnsElem. e E4.. 0. e e On veut remplir U d’apr`s la formule : U [i.N1 ...a ←− i * 2 .Nk−1 ] d’entiers sur [−28−1 .. 28−1 − 1].. T[i]. non. N-1] de < a : un Entier32s.b ←− ’a’ R´´crire cet algorithme en faisant apparaˆ le tableau MEM et l’installation ee ıtre des ´l´ments de T dans MEM.. e e e ou..j] = T[i.N-1] x [0.... .. non..3 : Transformation des conditions bool´nnes compos´es e e Proposer une transformation de si C1 et (C2 ou non C3) alors A1 sinon A2 qui n’utilise plus d’op´rateurs bool´en et. d´finis sur [0..N0 . les e e op´rations suivantes : e E1 ∪ E2 .4. 0. ` partir d’une adresse γ. carr´s. j] + 232 × S [j. i1 .N-1]..98 Repr´sentation des traitements et des donn´es. E4.) sur la repr´sentation m´moire de deux ensembles E1 et E2.. . Paragraphe 2. . e e e . U a donc des ´l´ments de 64 bits. ee ee Choisir une repr´sentation en m´moire des trois tableaux qui facilite le e e parcours de remplissage selon la formule ci-dessus.7 : Transformation d’algorithme d’acc`s ` un tableau de struce a tures Reprendre le d´veloppement du paragraphe sur l’optimisation des parcours de e tableaux (Cf. .6 : Repr´sentation en m´moire d’un tableau ` k dimensions e e a On consid`re le type suivant : e Tab : le type tableau sur [0. ou.5 : Choix de repr´sentation d’un tableau ` deux dimensions e a On consid`re trois tableaux d’entiers non sign´s. 232−1 − 1] T : un tableau sur [0 .. Combien e e d’octets sont-ils n´cessaires ? Exprimer en termes d’op´rations bool´ennes (et. i]. T : un Tab Choisir une repr´sentation en m´moire des objets de type Tab et donner la fore e mule qui exprime l’adresse de d´but de l’´l´ment T[i0 . Nk−1 .

pour la s´quence chaˆ ee.6. Pour tout j dans [0. : e e – En rangeant les ´l´ments dans un tableau. Exercices 99 E4. ıtre ee Cet exercice se poursuit par la programmation en assembleur sparc.N-1. 1. en supposant que les e e ´l´ments de la matrice sont des entiers relatifs cod´s en compl´ment ` ee e e a deux sur 64 bits. TailleMax d’Elem – En rangeant les ´l´ments dans une s´quence chaˆ ee ee e ın´ Etudier les alternatives : pour le tableau. 0. exercice E13. e e Q2 Proposer une repr´sentation m´moire du tableau. Songer en particulier ` ´viter les multiplications ae g´n´rales).9 : Programmation d’une file et d’une pile R´aliser les actions de manipulation des piles et files d´crites au paragraphe 5. c’est-`-dire a diff´rente de 0. progression de la pile par adresses croissantes ou d´croissantes et pointeur de pile indiquant la premi`re case vide e e ou la derni`re case pleine . i-1] Mij < Mji Le but de l’exercice est d’´crire un programme pour parcourir la matrice et e d´terminer si la propri´t´ est v´rifi´e. Q3 Donner l’algorithme demand´ en notation algorithmique. E4. N-1]. mais de nature ` faciliter la programmation de l’ale a gorithme de parcours. 2. insertion en d´but ou en e e ın´ e fin..10 du chapitre 12. en faisant ape paraˆ le tableau MEM et le calcul des adresses des ´l´ments. . ee Questions : Q1 Choisir une valeur pour la constante N (non triviale.N-1] d’entiers On d´sire v´rifier si la propri´t´ suivante est vraie : e e ee Pour tout i dans [1.8 : Parcours de matrice carr´e et comparaison double longueur e en compl´ment ` deux e a Consid´rons une constante enti`re positive N (pas trop grande) et une matrice e e carr´e ` N lignes et N colonnes : e a N : un entier > 0 Matrice : un tableau sur [0.. On ne demande pas de programmer e ee e e l’acquisition des ´l´ments de la matrice. c’est-`-dire en consid´rant le ee a e type : PileElem : un tableau sur 1 ..

..100 Repr´sentation des traitements et des donn´es. e e .

Ces mod`les peuvent ˆtre utilis´s pour repr´senter les e e e e traitements. E. f ) o` : u – Q est l’ensemble des ´tats . automate. 1.Chapitre 5 Repr´sentation des traitements e et des donn´es : e machines s´quentielles e Nous pr´sentons ici le mod`le math´matique des machines s´quentielles e e e e de Moore et de Mealy. machine ` ´tats finie. nous montrons comment traduire le langage d’actions simple en machines s´quentielles avec actions au paragraphe 2. q0 ∈ Q est l’´tat initial e e – E (resp. T. u e Dans toute la suite de l’ouvrage.. q0 . T ) o` : u . a e Une machine de Mealy est un quintuplet (Q. S. Pour le e logiciel. automate d’´tats fini. e.1 Machines s´quentielles simples e D´finitions math´matiques et propri´t´s e e e e D´finition 5. on utilisera indiff´remment les termes de e machine s´quentielle. machine de Mealy e Une machine de Moore est un sextuplet (Q. e ae e Nous d´finissons les machines s´quentielles simples au paragraphe 1. S) est l’alphabet (ou vocabulaire) d’entr´e (resp.1 : machine de Moore. – f : Q −→ S est la fonction qui fait correspondre un ´l´ment de l’alphabet ee de sortie ` chaque ´tat. e e puis les machines s´quentielles avec actions au paragraphe 2. S. E. q ) une transition de q ` q et on dit que l’´l´ment e de l’alphabet des entr´es est l’´tiquette a ee e e de la transition. e e l’utilisation des machines s´quentielles apparaˆ aux chapitres 10 et 11.2. q0 . on note (q. Pour le mat´riel. de sortie) e – T ⊆ Q×E×Q est l’ensemble des transitions . aussi bien dans un contexte mat´riel que dans un contexte logiciel e (o` elles rejoignent la repr´sentation classique par organigrammes). e ıt 1.

de sortie) e – T ⊆ Q × E × S × Q est l’ensemble des transitions. e a e e e Consid´rons donc une s´quence d’entr´es : c’est une suite d’´l´ments de e e e ee ee l’alphabet d’entr´es. T. S) est l’alphabet d’entr´e (resp. on d´finit la s´quence q0 .1. une machine est d´terministe (resp. si la machine est dans l’´tat q. . s1 . lorsqu’elle e r´agit ` une s´quence d’entr´es donn´e.). qn+1 ) ∈ T Une transition (q..1. des ´tats rencontr´s : e e e e e e ∀n ≥ 0. Paragraphes 1.. est ensuite d´finie par l’interm´diaire de la s´quence d’´tats : e e e e ∀n ∈ N. On notera Se = e0 . S. et qu’elle e re¸oit l’entr´e e. S. c’est-`-dire une fonction de N dans E..3 et 2. sn . e e e e 1.. au moins une) transition. alors elle passe dans l’´tat q . qui sont indispensables si l’on utilise les e machines comme mod`le de traitements.102 Repr´sentation des traitements et des donn´es.. e e . 2 La figure 5.1 illustre la repr´sentation conventionnelle des automates : un e cercle pour un ´tat. . et quelle que soit la configuration de ses entr´es. . (qn .. q0 ∈ Q est l’´tat initial e e – E (resp. elle peut e e ex´cuter au plus une (resp.. Intuitivee ment.1 Fonctionnement s´quentiel e Le fonctionnement s´quentiel des machines de Moore ou de Mealy est d´fini e e en observant quelle s´quence de sorties est produite par la machine. en . ´tiquet´es par des e e couples constitu´s d’un ´l´ment de l’alphabet des entr´es et d’un ´l´ment e ee e ee de l’alphabet des sorties. T ) ` la s´quence e e a e d’entr´es Se .. On trouvera parfois dans la litt´rature le terme e d’automate complet. on ´crit directement : e e q 0 = q0 1. q0 . au lieu de r´actif (voir par exemple [Ben91]). sn = f (qn ) Pour d´finir la r´action de la machine de Mealy (Q. en . f ) ` la e e a s´quence d’entr´es Se . La s´quence de sorties Ss = c e e e s0 . E. (qn . r´active) si et seulement si. e1 .... q ) exprime que. Une machine ` la fois e a d´terministe et r´active peut donc ex´cuter exactement une transition. quel e e que soit son ´tat. une fl`che ´tiquet´e pour une transition. qn+1 ) ∈ T D´terminisme et r´activit´ e e e On s’int´resse aux propri´t´s de d´terminisme et r´activit´ des machines e ee e e e s´quentielles de Moore ou de Mealy. en . e e – Q est l’ensemble des ´tats . q0 . pour e e e chaque ´tat et chaque entr´e. . e. c’est-`-dire comme des programmes e a (Cf. q1 . dont les ´l´ments e a seront not´s de mani`re indic´e.2 ∀n ≥ 0. e e e Pour d´finir la r´action de la machine de Moore (Q.. E.

q1 ) ∈ T  ∀q ∈ Q. entr´e) l’´tat de destination et la sortie ´mise a e e e e par la transition. la s´quence de sorties est aussi longue que la s´quence d’entr´es. s1 ∈ S. T.3 : r´activit´ e e e Une machine de Mealy (Q. (q. e2 . e1 . s2 ∈ S.2 : d´terminisme e e On dira qu’une machine de Mealy (Q. f ) est d´terministe e e si et seulement si :  ∃q1 ∈ Q. e2 . E. E. f ) est dire r´active si et seulee e ment si : ∀q ∈ Q. E. {e ∈ E | ∃q1 ∈ Q. S. e. s ∈ S. S. ∧ =⇒ e1 = e2  ∃q2 ∈ Q. q0 . entr´e) l’´tat de destination . e e e e 1. il existe une unique e s´quence de sorties correspondant ` une s´quence d’entr´es. {e ∈ E | ∃q1 ∈ Q. e.3 Fonctions de transition et de sortie Pour des machines d´terministes. q1 ) ∈ T } = E 2 Notons que lorsque la machine est d´terministe. q1 ) ∈ T } = E De mˆme. e e dites de transition et de sortie : g : Q × E −→ Q et s : Q × E −→ S. q2 ) ∈ T De mˆme. . e2 ∈ E(q. cette fonction est totale. e2 ∈ E. une machine de Moore (Q. s1 . S. On d´finit ainsi la fonction de transition g : Q×E −→ Q pour les machines e de Moore . E. (q. Machines s´quentielles simples e 103 D´finition 5. On trouve parfois ´galement une d´finition en deux fonctions. s2 . on d´finit e e e e pour les machines de Mealy une fonction de transition g : Q × E −→ Q × S qui associe ` chaque couple (´tat. q0 . De la mˆme mani`re. q0 . q0 . e1 . Lorsque la machine e a e e est r´active. T. on dira qu’une machine de Moore (Q. q2 ) ∈ T 2 D´finition 5. ∧ =⇒ e1 = e2  ∃q2 ∈ Q. S. T ) est dite r´active si et seulement si : e ∀q ∈ Q.1. g associe ` chaque couple (´tat. q1 ) ∈ T  ∀q ∈ Q. s. si la a e e e machine est r´active. (q. e1 ∈ E. (q. la relation de transition T ⊆ Q × E × Q e (Moore) ou T ⊆ Q × E × S × Q (Mealy) est souvent exprim´e comme une e fonction.1. T ) est d´terministe si et seulee ment si :  ∃q1 ∈ Q. e1 ∈ E(q.

e e e Il existe une infinit´ de machines de Moore ` ´tats finals pour reconnaˆ e ae ıtre un langage r´gulier donn´.4 Equivalence des mod`les de Moore et de Mealy e Pour toute machine M de Mealy (resp. la e s´quence d’entr´es ne permettra jamais d’atteindre un ´tat de satisfaction. nous utiliserons l’un ou l’autre des mod`les e de Moore ou de Mealy. il suffit de d´placer les sorties e associ´es ` une transition vers l’´tat but de la transition. Dans un ´tat E. et la machine peut donc se bloquer. de Mealy) telle que M et M produisent la mˆme s´quence de sorties pour une s´quence d’entr´es donn´e. dans laquelle e e on omet la notation de la sortie : il suffit de distinguer. Dans ce cas toutefois. Dans la litt´rature on trouvera e e souvent le terme d’´tat final. e Les machines de Moore qui expriment la reconnaissance de langages r´guliers ne sont pas n´cessairement r´actives : ` partir d’un ´tat donn´. Pour transformer e e e une machine de Mealy en machine de Moore. ou de satisfaction. celui-ci doit ˆtre e e e e e ´clat´ en autant d’´tats distincts. m`nent au mˆme ´tat. pour un ´l´ment particulier de e ee la s´quence. cette sortie est vrai e e si et seulement si les s´quences d’entr´es qui permettent d’atteindre E depuis e e l’´tat initial constituent des phrases correctes du langage ` reconnaˆ e a ıtre. les ´tats pour lesquels elle vaut vrai. Si plusieurs transie a e tions. Notons que. e e Pour transformer une machine de Moore en machine de Mealy. portant des sorties diff´rentes.1. de Moore). ae Les reconnaisseurs de langages r´guliers sont des machines de Moore qui e produisent une unique sortie bool´enne. il suffit de d´placer les sorties des ´tats sur les transitions qui y m`nent.104 Repr´sentation des traitements et des donn´es. e e e Dans la suite de cet ouvrage. il e e e a e e peut ne pas exister de transition ex´cutable. mais pour tout e e langage r´gulier il existe une machine s´quentielle d´terministe qui le ree e e connaˆ Il existe mˆme un algorithme de transformation d’un reconnaisseur ıt.. si l’´tat initial est e e ´galement final. par exemple par des triangles. e e 1. la phrase vide appartient au langage. par exemple [Ben91]). pour montrer que les deux mod`les sont ´quivalents. mais sans avoir besoin de transformer l’un en l’autre. L’usage a consacr´ une notation particuli`re de ces machines de Moore. e non d´terministe en reconnaisseur d´terministe du mˆme langage. e . e e e e e Nous donnons ici seulement l’intuition de la transformation. On e e e interpr`te donc les blocages de la machine comme un r´sultat n´gatif. il existe et on peut construire une machine M de Moore (resp. e e e Elles ne sont pas non plus n´cessairement d´terministes . 1.2 Application ` la reconnaissance des a langages r´guliers e L’une des caract´risations de la classe des langages r´guliers (on dit aussi e e langage rationnel) ´nonce que ces langages sont exactement les langages ree connaissables par des machines ` ´tats finies (Cf.. Il en existe toujours une ` un nombre minimal e e a d’´tats.

2 et 4 sont finals. (3. T = {(1. 4). L’´tat final 2 correspond aux phrases e e constitu´es uniquement de lettres c (au moins une) . 2). s’il avait introduit plus de 2 francs. Cet exemple est repris au chapitre 10 o` nous montrons a e u comment r´aliser le contrˆleur de la machine avec un circuit s´quentiel. a. 2). (b) Machine de Moore ordinaire. Machines s´quentielles simples e 105 c 1 a a 3 (a) b b 4 2 c 1 a a 3 c 2 b b c a. Aucune de ces phrases e e n’appartient au langage consid´r´. Notons que dans les phrases ca. (a) Machine de Moore ` ´tats e ae finals. 4}. Les ´tats 1. 2 et 5 francs. b. Exemple E5. b.b. la premi`re lettre permet d’ex´cuter une transition issue de e e l’´tat initial. 5. b.c Fig.1 et l’exere e cice E10.1. l’´tat final 4 correspond e e a ` la phrase r´duite ` la lettre b et aux phrases de la forme aa∗ b (un nombre e a non nul de lettres a.2 : Machine ` caf´ a e On consid`re une machine automatique de distribution de caf´. (3. 3). qui accepte e e des pi`ces de 1. 2. avec : Q = {1. puis une lettre b). 3). L’automate donn´ est minimal.1 donne une machine de Moore qui reconnaˆ le langage d´crit par ıt e l’expression r´guli`re a∗ b + c∗ . b. On e o e donne d’autres exemples de syst`mes r´actifs dans le paragraphe 2. Exemple E5. c (b) 5 4 c a. (1. la machine n’accepte plus de pi`ces jusqu’` ce e a que le caf´ soit servi. Un caf´ coˆte 2 francs. (2. la e machine rend la monnaie. E = {a. . f (3) = faux.1. D`s que le consommateur e e u e a introduit 2 francs ou plus. c. 3.1 : Automate reconnaisseur du langage a∗ b + c∗ La figure 5. f (1) = f (2) = f (4) = vrai. L’´tat 1 est e e e e initial. (1. ensuite de quoi l’automate est bloqu´.b a. c.3 Application ` la description de syst`mes r´actifs a e e Nous d´taillons dans ce paragraphe un exemple de syst`me r´actif : une e e e machine ` caf´. ee 1. c}. bb ou encore ac. a.1 – Reconnaissance du langage r´gulier a∗ b + c∗ . 4)}. D’autre part.6 du chapitre 10.

L’environnement du o contrˆleur est constitu´ de l’utilisateur humain et de la partie physique de la o e machine. ni compte-rendu e de la machine. B. AUCUNE}) o` R signifie : calculer u et Rendre la monnaie . dans chacun de ses ´tats. e e e L’algorithme ` ´crire analyse une s´quence d’entr´es et produit une a e e e s´quence de sorties correspondante. C signifie servir le Caf´ . On pourra consid´rer que les e e actions de l’utilisateur et le compte-rendu de la machine ne sont jamais simultan´s. AUCUNE signifie pas de sortie. de fermeture de l’orifice d’introduction des pi`ces. e e e e de Moore ou de Mealy. s2 . Les entr´es en provenance de la partie physique e de la machine sont des comptes-rendus d’activit´ (voir plus loin). de rendu de monnaie e e (on supposera qu’il existe un dispositif capable de calculer la somme ` rendre. s5 signifient respectivement que l’utilisateur a introduit une pi`ce de e 1. Les seules entr´es ` consid´rer sont donc : e e a e – s1 . C. elle r´pond par cet acquittement de fin de service. Les sorties ` e a destination de la partie physique de la machine sont les commandes de service du caf´. e Interface d’entr´e/sortie du contrˆleur : Pour d´terminer le vocabue o e laire d’entr´e de la machine s´quentielle d´crivant le contrˆleur.106 Repr´sentation des traitements et des donn´es. B} et {R. pour chacune des entr´es possibles. e e On consid`re que la machine ` caf´ est constitu´e d’une partie physique et e a e e du dispositif informatique que nous appelons contrˆleur. On peut le d´crire par une machine s´quentielle r´active. Notons que le crit`re math´matique de r´activit´ de la e e e e machine s´quentielle correspond exactement ` la nature r´active du syst`me de e a e e contrˆle de la machine ` caf´ : la r´action du contrˆleur doit ˆtre parfaitement o a e e o e d´finie. et r´agit ` des entr´es par l’´mission de e a e e sorties appropri´es. D’autre part des contraintes physiques comme la taille de l’orifice dans e lequel on introduit les pi`ces empˆchent sans doute d’introduire deux pi`ces e e e en mˆme temps. C. e e apr`s un certain temps. B}.. e a Nous nous int´ressons ici ` l’algorithme du contrˆleur de cette machine. o . a non d´crit ici). – fs est un compte-rendu d’activit´ de la machine : lorsqu’elle re¸oit la come c mande de service de caf´. Les entr´es du contrˆleur en provenance de l’utilisateur humain se e o r´duisent a l’introduction de pi`ces (dans un exemple plus g´n´ral on envisae ` e e e gerait le choix de la boisson). Toutefois les seuls e sous-ensembles effectivement utilis´s dans la machine s´quentielle qui d´crit le e e e contrˆleur sont : {AUCUNE}. {C. e a o Le contrˆleur est un exemple typique de syst`me dit r´actif : il interagit en o e e permanence avec son environnement. e – rien signifie que rien n’arrive : ni introduction de pi`ces. 2 ou 5 francs. il convient de e e e o faire quelques hypoth`ses sur son environnement.. On n’envisage pas de sorties ` destination de l’utilisateur. Le vocabulaire de sortie est P({R. B signifie Bloquage de l’orifice e d’introduction des pi`ces .

2) Lorsque l’utilisateur humain a command´ le service du caf´. dans l’´tat Attente e e e e Pi`ces. ce bool´en a la valeur vrai si et seulement si la s´quence parcourue e e e constitue une phrase correcte du langage consid´r´ (c’est-`-dire si l’automate ee a reconnaisseur s’arrˆte dans un ´tat de satisfaction). il est e e e possible de produire syst´matiquement un algorithme it´ratif dont le compore e tement est le comportement s´quentiel de la machine. 3) Le compte-rendu fs ne peut pas survenir si l’on n’a e pas command´ le service du caf´. le compte-rendu fs surviendra n´cessairement. L’entr´e fs n’est pas mentionn´e. s2 . les seules conditions envisag´es sont s1 .4 Codage algorithmique d’une machine s´quentielle. et ne d´pend pas de l’entr´e). Par exemple. [SFLM93]). lorsqu’elle est implant´e par un e e circuit s´quentiel. e e e e e Cette description appelle un certain nombre de remarques. Machines s´quentielles simples e 107 Nous verrons au chapitre 10 que l’identification exacte du sous-ensemble effectivement utile du vocabulaire de sortie peut ˆtre utilis´ pour proposer un codage e e efficace des sorties d’une machine s´quentielle. 0n suppose que l’environnement de ce contrˆleur (c’est-`-dire l’ensemble form´ par l’utilisateur o a e humain et par la machine) a un comportement correct. o 1. s2 et s5 ne peuvent pas survenir . e Par exemple. e Nous construisons l’algorithme it´ratif par un codage syst´matique de la e e machine s´quentielle de Moore qui d´finit le reconnaisseur.3 une s´quence de monˆmes d’entr´e et la s´quence e o e e de monˆmes de sorties correspondante. La consommae e . s1 . l’algorithme de reconnaissance d’un langage r´gulier est un e parcours de s´quence qui calcule un bool´en Appartenance. c’est-`-dire que cera taines successions d’entr´es et de sorties du contrˆleur peuvent ˆtre consid´r´es e o e ee comme impossibles : 1) Tant que l’introduction des pi`ces est bloqu´e par la e e machine. s2 et s5 ne peuvent pas se produire et rien e c signifie fs . e application aux reconnaisseurs de langages r´guliers e Lorsqu’un probl`me est d´crit sous forme de machine s´quentielle.2 (le mod`le de Moore est ici le plus appropri´ car la valeur des sorties e e est intrins`quement d´finie par l’´tat. e e On suppose que la s´quence des entr´es de la machine s´quentielle est ace e e cessible grˆce aux primitives D´marrer.1. Avancer. En ree vanche.s2 .s5 . Nous donnons figure 5. e e Ces contraintes permettent de v´rifier que les formules bool´ennes qui e e conditionnent les transitions issues d’un mˆme ´tat assurent bien les propri´t´s e e ee de d´terminisme et r´activit´ de la machine. e Description du comportement du contrˆleur : Le comportement du o contrˆleur de machine ` caf´ peut ˆtre d´crit par la machine de Moore de la o a e e e figure 5. FinDeS´q et CarCour qui pera e e mettent d’abstraire les algorithmes de traitement s´quentiel (Cf. Lorsque le parcours e e s’arrˆte. dans l’´tat 2F re¸us s1 . s5 et rien. rien correspond e e e e a ` la condition bool´enne : s1 . e e e apr`s un certain temps .

Sortie {AUCUNE} {AUCUNE} {AUCUNE} {AUCUNE} {C. .. 5.2 – Comportement du contrˆleur d’une machine ` caf´ (machine de Moore) o a e . B} {C..C..3 – Une s´quence d’ex´cution du contrˆleur de la machine ` caf´ : chaque ligne e e o a e correspond ` un instant diff´rent . C. B} {AUCUNE} Etat courant Attente Pi`ces e Attente Pi`ces e Attente Pi`ces e Attente Pi`ces e 2F re¸us c 2F re¸us c 2F re¸us c 2F re¸us c Attente Pi`ces e 1F re¸u c 1F re¸u c Trop per¸u c Trop per¸u c Attente Pi`ces e Fig. B} {C.. B} {AUCUNE} {AUCUNE} {AUCUNE} {R. 5. C. e e s5 AUCUNE Attente Pi`ces e rien s2 fs fs rien 2F re¸us c s1 s5 1F re¸u c AUCUNE C. Entr´e e rien rien rien s2 rien rien rien fs s1 rien s2 rien fs .B Trop per¸u c s2 Fig.B s1 rien rien R. le temps passe du haut vers le bas dans le a e tableau. B} {C.108 Repr´sentation des traitements et des donn´es. B} {R.

Machines s´quentielles avec actions e Dans le langage des actions pr´sent´ au paragraphe 1. Trois. Quatre. e 2. tion des ´l´ments de la s´quence est r´alis´e par un appel de la primitive ee e e e Avancer. D´marrer e tant que non FinDeS´q 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 s´quence de caract`res lue jusque e e l` est une phrase du langage d´crit par l’expression r´guli`re a∗ b + c∗ } a e e e Avancer Fig.1-b. b et e e e ∗ ∗ c. 5. la e e structuration des algorithmes est assur´e par un petit nombre de construce tions it´ratives (tant que.2.4.4 – Algorithme de reconnaissance du langage a∗ b + c∗ bas´ sur l’automate de la e figure 5. du chapitre 4. Parmi les actions e . L’algorithme de reconnaissance du langage a b + c est donn´ figure 5. Erreur) E : un Etat . accessible par la fonction Carcour. La sortie Appartenance est calcul´e e e en fin de boucle. e On suppose que la s´quence d’entr´e ne comporte que les caract`res a. en fonction de l’´tat atteint. Les e e e conditions sur l’entr´e sont traduites en conditions sur l’´l´ment courant de la e ee s´quence. Chaque passage dans la boucle consomme exactement un ´l´ment ee de la s´quence et repr´sente l’ex´cution d’une transition de la machine. parcourant) ou conditionnelles. Appartenance : un bool´en e E ←− Un . Machines s´quentielles avec actions e 109 Etat : le type (Un. Deux.

Les transitions e e sont donc ´tiquet´es par des pr´dicats. e . Le pr´dicat e a e e e constant vrai et l’action vide vide sont toujours d´finis. et jouent un rˆle pare o ticulier dans les manipulations de machines s´quentielles ` actions (Cf. qui sont ` r´sultat bool´en. Les actions sont les sorties de la machine e et constituent donc les ´tiquettes des transitions ou des ´tats. selon que l’on e e utilise le mod`le de Mealy ou le mod`le de Moore. au sens du paragraphe 1. Des conditions bool´ennes e e e constituent les entr´es de la machine s´quentielle.4). Une machine s´quentielle avec actions est une machine ` ´tats finie dont le e ae vocabulaire d’entr´e est l’ensemble des pr´dicats : l’´valuation d’un pr´dicat e e e e repr´sente une entr´e de la machine. Parae a graphe 2. Parmi les e e fonctions on distingue les pr´dicats.1 D´finition e On se donne un lexique (au sens d´fini chapitre 4) qui d´finit des types. e e 2.. (b) : e une portion d’organigramme qui repr´sente le mˆme traitement. (a) : un ´tat de machine e de Moore avec actions (C est une condition bool´enne et A une action) . L’ensemble des actions constitue le e e e vocabulaire de sortie.1.5 – Machine de Moore avec actions et organigramme. e e A A C (a) C faux C? vrai (b) Fig. ee L’id´e du mod`le des machines s´quentielles avec actions — on trouve e e e parfois dans la litt´rature le terme d’automate interpr´t´ ou de sch´ma de proe ee e gramme avec interpr´tation (Cf. Les machines de Mealy avec actions sont ´tudi´es dans [SFLM93]. Elles sont e e une extension naturelle des algorithmes obtenus comme codage syst´matique e des machines de reconnaissance des langages r´guliers (paragraphe 1. 5. e e ´l´mentaires on trouve en particulier l’affectation. Nous e ne les ´tudierons pas ici. e e des variables typ´es.110 Repr´sentation des traitements et des donn´es. des fonctions et des actions sans param`tres.. ainsi que le montre la figure 5. par exemple [Liv78]) — est d’exprimer les e structures conditionnelles et it´ratives d’un algorithme par les ´tats et trane e sitions d’une machine s´quentielle. Une machine de Moore avec actions est tr`s similaire aux organigrammes e classiques.5.4).

qui sera ´tudi´ de fa¸on d´taill´e au chae e e e c e e pitre 13. Pour cela on remplace l’´tat q qui porte l’action A par le e dessin complet de la machine qui repr´sente l’algorithme de A. La figure 5. dans lesquels ne subsistent que des e acc`s de taille 1. 2 ou 4 au tableau MEM. Les transitions e issues de q deviennent issues de l’´tat final de la machine de A . L’exercice E13.1 Traceur de segments : algorithme de Bresenham Le but de l’algorithme de Bresenham est de placer dans le plan des points de coordonn´es enti`res qui approchent le mieux possible une droite d’´quation e e e donn´e.2. Pour como e e e poser de telles machines. Machines s´quentielles avec actions e 111 2. 2. Nous illustrons cette e a e transformation pour l’algorithme de Bresenham. Nous obtenons donc des e e e programmes sans structures de donn´es. il suffit de d´finir comment remplacer une action A e par une machine. Il s’agit donc de tracer e e .5 du chapitre 12 propose de programmer cet algorithme en langage d’assemblage sparc. sauf l’ape o pel d’action ou fonction param´tr´. 0) et (m. e Le segment qui passe par les points de coordonn´es (0. n) est e support´e par la droite d’´quation y = (n/m)x si m = 0. Chaque machine obtenue pour la traduction e d’une structure de contrˆle poss`de un ´tat initial et un ´tat final. A titre a e e d’exemple nous donnons la machine de l’algorithme : tant que C faire A tant que D faire B E 2.6 donne la traduction des structures de contrˆle usuelles en mao chines s´quentielles avec actions. et ´tudi´ e e e la premi`re ´tape de traduction des structures de donn´es.3. c’est-`-dire la e e e a repr´sentation des donn´es complexes en m´moire. Cet exemple est e e repris dans le chapitre 11 o` nous montrons comment obtenir un circuit ` paru a tir de cet algorithme.2 Repr´sentation des structures de contrˆle par des e o machines s´quentielles avec actions e Dans le chapitre 4 nous avons d´fini un petit langage d’actions. e Nous nous int´ressons ici au codage des structures de contrˆle.3 D´finition du lexique d’une machine s´quentielle e e avec actions Dans ce paragraphe nous montrons comment produire une machine s´quentielle avec actions ` partir d’un algorithme it´ratif. les transitions e qui arrivent ` q sont branch´es sur l’´tat initial de la machine de A. qui permet de calculer les coordonn´es des points d’un segment dans un plan quadrill´.

e e e .. E ] X . 5.. e e si C alors A sinon B si C alors A A . o e Les ´tats non ´tiquet´s portent implicitement l’action vide.6 – Traduction des structures de contrˆle en machines s´quentielles avec actions. tantque D faire [ B ] .112 Repr´sentation des traitements et des donn´es. si C alors A Fig.B non C B vrai C A vrai non C C A vrai A vrai B R´p´ter A jusqu’` C e e a non C A C C A tantque C faire A non D non C A B vrai E non C X vrai C non C A vrai non C vrai X C A C vrai D vrai vrai vrai tantque C faire [ A .

j − k ≤ 2. e L’´quation de la droite ´tant y = (n/m)x. pour tout e e point de coordonn´es enti`res (j.m.n.j − 2. il faut noircir un ensemble de points (ou e e pixels.n . et (6. 0) e a e ıt e 5 7 qui est donn´ par l’algorithme . = 12 .2. n). Figure 5. k). ±k) ou (±k. pour (1. 0) au point (m. 0). e les pixels gris pourraient sembler candidats. les pixels noirs sont obtenus par l’algorithme. Le trait blanc est id´al.j − 2. e e e u Les autres cas s’obtiennent ais´ment par des transformations simples o` le e u point de coordonn´es (j. 1). e e 1 De | | ≤ 2 nous pouvons d´duire : e 1 −2 1 −2 −m −2m ≤ ≤ (n/m).j − k.k ≤ 2. Machines s´quentielles avec actions e 113 5 3 2 0 0 5 6 11 12 00 10 21 31 42 52 63 73 83 94 10 4 11 5 12 5 Fig. 0) e e e e et (12. avec m et n entiers. Pour le pixel d’abcisse 1. = − 12 et pour (1. il est possible de calculer un ´cart par e e e rapport ` la droite id´ale : k = (n/m). e Remarque : Sans perte de g´n´ralit´. calculons l’´cart ` la droite id´ale de (1. en gris´.k − m. lorsque k augmente de 1. ∆ diminue de 2.m. k) doit ˆtre tel e e e 1 que : | | ≤ 2 .j − 2. e C’est le point (1. La construction de l’algorithme de calcul des coordonn´es des pixels successifs e .m. 0) qui est donn´ par l’algorithme. et de (1. donnent la mˆme valeur de | |. 3). 1) qui apparaˆ en gris´.7 – Trac´ d’un segment dont les extr´mit´s sont les points de coordonn´es (0.j − ou = (n/m). Le crit`re de a e e proximit´ retenu est le suivant : tout point de coordonn´es (j. k) devient (±j. et n = 5 (Cf. pour picture element) aussi proches que possibles de la droite id´ale. On remarque alors que lorsque j augmente de 1.m. ±j). Evaluons la proximit´ relative de deux pixels par rapport ` la droite id´ale e a e avec les valeurs m = 12. e les deux points (6.n. 5.7). ∆ augmente de 2. 2).k − m ≤ 1 2 ≤ 1 2 ≤ m ≤ 0 Posons ∆ = 2. 5).n. Les points n’ayant que des coordonn´es enti`res. en noir. le segment de cette droite qui va du point (0. nous traitons le cas o` 0 ≤ n ≤ m. Pour le point d’abscisse 6.

k ←− vrai { Le point de coord. A ee e e chaque incr´mentation de j.. k. Pour cela il faut soit laisser k inchang´.k ←− vrai.2 Machine s´quentielle avec actions r´alisant l’algorithme de e e Bresenham Nous donnons Figure 5.8 – Algorithme de Bresenham utilise cette propri´t´. j ←− 0 . 2. La figure 5.3. Le calcul des pr´dicats est syst´matiquement r´alis´ e e e e e dans un ´tat . donc e e ∆ = −m } tant que j ≤ m : { Invariant : 0 ≤ j ≤ m et -2*m ≤ ∆ ≤ 0 } Tj. e e Remarquons que cette machine a une forme particuli`re. m : l’entier . l’ordonn´e k vaut 0. k est mis ` jour de fa¸on ` maintenir ∆ entre e a c a −2m et 0. ∆ ←− ∆ + 2*n si ∆ > 0 { Si ∆ est devenu trop grand. e e La figure 5. j ←− j + 1 et e ee ∆ ←− ∆ + 2 * n. ∆ ←− ∆ − 2*m { −2 ∗ m ≤ ∆ ≤ 0 } Fig.8 donne l’algorithme correspondant. . 5. ˆtre faite dans l’´tat o` est r´alis´ l’action e e u e e MajTetIncrAbs. l’action MajTetIncrAbs e e e est constitu´e des trois actions ´l´mentaires : Tj. on augmente j de 1 } j ←− j + 1 . Les pr´dicats se limitent ` la consultation d’une variable e a bool´enne (Fini ou ∆pos)..9 le lexique des actions n´cessaires ` la d´finition e a e de la machine s´quentielle avec actions produite ` partir de l’algorithme de e a Bresenham. il pourrait parfois ˆtre int´gr´ ` un autre ´tat : la mise ` jour e e e ea e a de ∆pos pourrait.m. j. ∆ ←− − m { Valeur initiale de l’´cart : l’abscisse j vaut 0..... on le ram`ne ` une valeur convee a nable en augmentant l’ordonn´e courante } e k ←− k + 1 . 0. Les ´tats ne sont e e pas s´par´s si cela n’est pas n´cessaire ..n] de bool´ens e j. soit incr´menter k. par exemple. e e lexique n : l’entier . T : un tableau sur [0. par exemple. .. La variable d’abscisse j est incr´ment´e de 1 en 1. ∆ : des entiers algorithme k ←− 0 .10 d´crit cette machine s´quentielle.114 Repr´sentation des traitements et des donn´es. k doit ˆtre affich´ } e e { Pour le point suivant.

k ←− 0 . Machines s´quentielles avec actions e 115 { Les variables : } Fini. j ←− j + 1 . ∆pos : des bool´ens e { Les actions : } Init : une action : j ←− 0 .2.10 – Machine s´quentielle avec actions r´alisant l’algorithme de Bresenham e e . ∆ ←− −m MajTetIncrAbs : une action Tj. 5. ∆ ←− ∆ + 2 * n IncrOrdonn´e : une action : k ←− k + 1 .9 – Lexique de machine s´quentielle avec actions repr´sentant l’algorithme de Bree e senham Init vrai CalculFini non EstFini EstFini non ∆estPos MajTetIncrAbs vrai Calcul∆pos vrai ∆estPos IncrOrdonnee Fig.k ←− vrai . 5. ∆ ←− ∆ − 2 * m e CalculFini : une action : Fini ←− j > m Calcul∆pos : une action : ∆pos ←− ∆ > 0 { Les pr´dicats : } e EstFini : −→ un bool´en : fini e ∆EstPos : −→ un bool´en : ∆pos e Fig.

116 Repr´sentation des traitements et des donn´es. La machine s´quentielle comporte alors une suite d’´tats e e s´par´s par des transitions portant le pr´dicat vrai. qu’ils portent sont d´pendantes. l’´tat obtenu porte l’action A1 . e A1 et A2. le nombre d’´tats sera en relation directe avec e e e e le temps d’ex´cution. Lorsque l’on s’int´resse aux e e e machines s´quentielles ` actions comme mod`le interm´diaire dans le processus e a e e de traduction des langages de haut niveau vers un langage d’assemblage. e e Plusieurs de ces transformations modifient le nombre d’´tats de la machine e parcourus lors d’une s´quence donn´e d’actions. En revanche. et toutes les transformations seront permises. e e e e e en particulier la dur´e de s´jour dans un ´tat est une constante ind´pendante e e e e de l’´tat. il faut placer sur chaque ´tat e e une action r´alisable en 1 coup d’horloge. les propri´t´s e ee de d´terminisme et de r´activit´ des machines impliquent qu’il ne peut alors e e e pas y avoir d’autre transition entre les deux ´tats E1 et E2. En effet le cadencement des syst`mes mat´riels suit assez e e e rigoureusement la r`gle : dur´e de s´jour dans un ´tat = une p´riode d’horloge . A pour rappeler e e e ee a que l’ordre est indiff´rent. e e e e e e e le premier portant l’action A1 et le deuxi`me l’action A2. En effet. e e 2. tout ´tat portant une action compos´e de la forme A1 . on note A || B l’action come pos´e port´e par l’´tat obtenu.k ←− vrai .4 Propri´t´s et transformations de machines e e s´quentielles avec actions e Nous donnons ici quelques transformations des machines s´quentielles ` e a actions qui en pr´servent la s´mantique — c’est-`-dire la s´quence des actions e e a e effectu´es sur les donn´es du lexique — mais peuvent en modifier la structure. Cela peut imposer de d´composer des e e actions complexes en suites d’actions ´l´mentaires r´alisables en 1 seul coup ee e d’horloge chacune. A2.4.1 Fusion d’´tats e Si ` la suite du processus de construction de l’algorithme deux ´tats E1 a e et E2 d’une machine s´quentielle ` actions ne sont s´par´s que par une trane a e e sition portant le pr´dicat vrai.2 Eclatement d’´tats e Inversement. Le deuxi`me : j ←− j + 1 || ∆ ←− ∆ + 2*n.4.. si ce mod`le de machine s´quentielle est utilis´ pour obtenir une r´alisation e e e e mat´rielle de l’algorithme ´tudi´. A2 e e peut ˆtre ´clat´ en deux ´tats s´par´s par la transition portant le pr´dicat vrai. e e e .. cela a peu d’importance. e 2. e Remarque : Dans l’exemple de Bresenham on aurait pu ´clater en e deux l’action MajTetIncrAbs. Si les actions. e Nous verrons au chapitre 11 que lorsqu’il s’agit de produire un circuit synchrone pour implanter une machine s´quentielle. Nous revenons sur cet aspect du probl`me au chapitre 11. e j ←− j + 1 . B ou B . on peut les fusionner. Le premier ´tat porte l’action : Tj. ∆ ←− ∆ + 2*n. e e 2. e e Si les actions qu’ils portent sont ind´pendantes. de pr´f´rence ` A .

2. Machines s´quentielles avec actions e

117

C3 C3 C1 A1 vrai C2 A2 vrai A3 vrai non C1 A1 vrai vrai vrai Fig. 5.11 – Transformation des tests n-aires en tests binaires non C2 C1 C2 A2 non C3 A3

2.4.3

Transformation des branchements n-aires en branchements binaires

Que les machines s´quentielles soient utilis´es pour construire des circuits e e s´quentiels synchrones (chapitre 11), ou pour produire du langage machine e (chapitre 12), il faut parfois se restreindre ` des branchements binaires. La a transformation syst´matique d’une machine ` branchements n-aires en mae a chine ` branchements uniquement binaires peut ajouter des ´tats, et donc a e allonger le chemin n´cessaire ` l’ex´cution d’une action. Dans le cas logiciel e a e comme dans le cas mat´riel, cet allongement du chemin se traduit par un e allongement du temps d’ex´cution. e La figure 5.11 donne deux machines s´quentielles 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 diff´rentes ayant le mˆme comportement. Noter ´galement que si la condition e e e de r´activit´ est bien respect´e dans la machine ` branchement binaire, la e e e a transition qui porte la condition non C1 est inutile. 2.4.4 Echange contrˆle/donn´es o e

Les deux algorithmes de la figure 5.12 produisent les mˆmes r´sultats. La e e figure 5.14 repr´sente les deux machines s´quentielles avec actions associ´es, e e e en utilisant le lexique d´crit Figure 5.13. e

118

Repr´sentation des traitements et des donn´es... e e

lexique B1 : le bool´en ... ; B2 : le bool´en ... ; N : l’entier ... ; i : un entier e e T : un tableau sur [0..N] de bool´ens e CondT : un entier −→ un bool´en { une propri´t´ 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 contrˆle/donn´es : deux algorithmes ´quivalents o e e

{ lexique : } C1, C2 : des bool´ens e { les actions : } Init : une action (la donn´e-r´sultat i : un entier) : i ←− 0 e e CalculC1 : une action (les donn´es i : un entier, N : un entier) : C1 ←− i ≤ N e CalculC2 : une action (la donn´e i : un entier) : C2 ←− CondT(i) e AndT : une action (les donn´es : x : un bool´en, i : un entier) : Ti ←− Ti et x e e OrT : une action (les donn´es : x : un bool´en, i : un entier) : Ti ←− Ti ou x e e ActCond : une action (les donn´es : x1, x2 : deux bool´ens, i : un entier) e e Ti ←− (CondT(i) et (Ti et x1)) ou (non CondT(i) et (Ti ou x2)) { les pr´dicats : } e EstC1 : −→ un bool´en : C1 e EstC2 : −→ un bool´en : C2 e Fig. 5.13 – Echange contrˆle/donn´es : lexique des machines s´quentielles o e e

2. Machines s´quentielles avec actions e

119

Init vrai CalculC1 non EstC1 EstC1 CalculC2 non EstC2 OrT(B2,i) vrai vrai Incr(i) vrai EstC2 AndT(B1,i)

Init vrai non EstC1 CalculC1 EstC1 ActCond(B1, B2, i) vrai vrai Incr(i)

Fig. 5.14 – Deux machines s´quentielles r´alisant le mˆme traitement e e e

120

Repr´sentation des traitements et des donn´es... e e

Dans la deuxi`me machine, l’utilisation de l’action ActCond permet e l’´conomie du test portant sur C2, c’est-`-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 ´valu´e ; dans l’autre e e les deux le sont. Il n’y a ´quivalence que si aucune des deux ´valuations ne e e produit d’effet de bord. Nous verrons au chapitre 11 que cette technique permettant de transf´rer e des informations du contrˆle aux donn´es est utilis´e lors de la r´partition o e e e du travail entre une partie op´rative et une partie contrˆle. L’action ActCond e o correspond en mat´riel ` l’utilisation d’un multiplexeur (Cf. Chapitre 8). e a

Chapitre 6 Temps, donn´es temporelles et e synchronisation
Ce chapitre est l’occasion d’introduire la notion de temps dans les syst`mes e informatiques. Quand on s’int´resse ` un syst`me informatique au niveau e a e d’abstraction que donnent les langages de haut niveau, on peut se contenter d’une notion de temps logique pour raisonner sur la succession des op´rations e dans un programme. Cette notion de temps est qualifi´e de logique parce qu’on e ne s’int´resse pas ` la relation avec le temps physique (mˆme lorsque cette ree a e lation existe : pour un processeur donn´ et une chaˆ de compilation donn´e, e ıne e elle est mˆme exprimable). e En revanche, lorsqu’on s’int´resse aux mod`les de traitements de bas niveau e e comme le langage machine, le s´quencement des op´rations est en rapport e e direct avec le temps physique. D’autre part, ne fˆt-ce que pour comprendre u les m´canismes d’entr´es/sorties, il faut s’interroger sur l’interface entre le e e dispositif informatique et son environnement, et sur le rapport entre les notions de temps de l’un et de l’autre : le temps de l’environnement est un temps physique continu ; celui du syst`me informatique est par nature discret. e

Nous ´tudions tout d’abord au paragraphe 1. l’interface entre un envie ronnement physique et un dispositif informatique r´duit ` une machine e a s´quentielle (´tudi´e au chapitre 5). Le paragraphe 2. introduit la notion e e e de signal logique obtenu par discr´tisation d’un signal physique continu, e et la repr´sentation de telles informations temporelles par des chronoe grammes. Le paragraphe 3. s’int´resse aux probl`mes de synchronisation e e de deux dispositifs informatiques connect´s l’un ` l’autre ; trois solutions e a sont envisag´es, dont le protocole poign´e de mains que nous utilisons e e dans les chapitres 11 et 16. Au paragraphe 4. nous reprenons l’exemple de la machine de distribution de caf´ d´j` ´tudi´e au chapitre 5, pour e ea e e pr´ciser l’interface entre le contrˆleur informatique et l’environnement e o physique de la machine.

122

Temps, donn´es temporelles et synchronisation e

1.

Interface entre un dispositif informatique et un environnement physique

Pour comprendre o` intervient le temps dans les traitements informatiques, u nous nous int´ressons ici au cas o` une machine s´quentielle repr´sente le fonce u e e tionnement d’un dispositif informatique directement connect´ ` un environneea ment physique.

1.1

Le temps logique discret des machines s´quentielles e

Bien que la d´finition math´matique des s´quences et des machines e e e s´quentielles ne suppose pas l’introduction d’une notion de temps, il est assez e naturel de parler d’apr`s ou d’avant dans la s´quence des entr´es. L’indiciation e e e des ´l´ments de la s´quence — c’est-`-dire l’ensemble des entiers naturels — ee e a est donc un bon candidat pour repr´senter une certaine notion de temps. Ce e temps est qualifi´ de logique parce qu’on ne s’int´resse pas n´cessairement ` la e e e a relation entre les instants qu’il d´finit et un v´ritable temps physique. Il est dit e e discret parce que l’ensemble des entiers naturels n’est pas dense dans (une s´quence indic´e par les ´l´ments de l’ensemble des r´els repr´senterait plus e e ee e e naturellement un temps continu). Tant qu’on utilise le mod`le des machines s´quentielles avec actions e e (Cf. Chapitre 5), on reste au niveau d’abstraction du logiciel. La s´quence des e entr´es de la machine s´quentielle est accessible grˆce aux primitives D´marrer, e e a e Avancer, FinDeS´q et CarCour qui, dans un programme complet, seraient effece tivement programm´es. Elles peuvent repr´senter le parcours d’un tableau en e e m´moire, la saisie interactive au clavier, aussi bien que l’acc`s aux ´l´ments e e ee d’un fichier pr´sent sur un disque. Le fonctionnement de la machine, c’est-`e a dire le d´roulement de l’algorithme, d´pend donc bien de param`tres de temps, e e e comme le temps d’acc`s ` la m´moire, le temps n´cessaire pour r´aliser une e a e e e entr´e clavier, le temps d’acc`s au disque, etc., mais d’une fa¸on difficilement e e c exprimable.

1.2

Le temps physique continu de l’environnement

Si la machine s´quentielle consid´r´e repr´sente le fonctionnement d’un e ee e dispositif informatique directement connect´ ` un environnement physique, les ea alphabets d’entr´e et de sortie repr´sentent des informations en provenance ou e e a ` destination de cet environnement. Il faut alors exprimer pr´cis´ment la relae e tion entre les ph´nom`nes continus qui nous int´ressent dans l’environnement e e e et la structure de s´quence des entr´es/sorties de la machine s´quentielle. e e e On se ram`ne toujours ` des ph´nom`nes physiques que des appareils de e a e e mesure appropri´s transforment en tensions ´lectriques accessibles au dispositif e e informatique.

1. Interface entre un dispositif informatique et un environnement physique

123

L’´volution d’une tension ´lectrique en fonction du temps peut-ˆtre e e e repr´sent´e par une courbe de fonction, comme illustr´ figure 6.1-a. e e e

1.3

D´finition de l’interface d’entr´es/sorties e e de la machine s´quentielle e

Le dispositif informatique ne peut traiter que des informations discr`tes. e Nous avons vu au chapitre 3 comment ramener l’ensemble des valeurs possibles de G ` un nombre fini de valeurs. On discr´tise donc l’axe G en d´finissant une a e e partition finie de l’ensemble des valeurs possibles, comme indiqu´ figure 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´ figure 6.1-c. Notons que deux paliers successifs e sont ` des hauteurs distinctes, par construction. a On va se limiter au cas des informations bool´ennes (pour lesquelles l’ene semble des valeurs a ´t´ partitionn´ en deux). Ce qui est en dessous du seuil ee e devient la valeur la plus basse (cod´e par 0), et ce qui est au-dessus du seuil e devient la plus haute (cod´ par 1). e

1.4

Discr´tisation du temps : interpr´tation synchrone e e ou asynchrone

Pour compl´ter la d´finition de l’interface entre l’environnement et le dise e positif informatique repr´sent´ par une machine s´quentielle, il faut d´finir e e e e la structure de s´quence, c’est-`-dire d´cider comment la suite de paliers de e a e la figure 6.1-c doit ˆtre interpr´t´e en une s´quence d’´l´ments de l’alphabet e ee e ee d’entr´e, ` fournir ` la machine. e a a Il y a essentiellement deux choix : l’interpr´tation asynchrone, et l’ine terpr´tation synchrone, que nous exposons ci-dessous. e 1.4.1 Interpr´tation asynchrone e

En interpr´tation asynchrone, la structure de s´quence est d´finie par les e e e changements de hauteurs de paliers. Dans le cas d’une information bool´enne, qui ne comporte que deux haue teurs de paliers, on parle de front montant ou de front descendant, selon qu’on passe du niveau inf´rieur au niveau sup´rieur ou inversement. Notons que cette e e interpr´tation de la suite de paliers donne des s´quences o` les fronts montants e e u et descendants alternent, par construction. Par cons´quent, quelle que soit la courbe de la grandeur mesur´e, et quelle e e que soit la position des fronts sur l’´chelle de temps physique, la s´quence des e e hauteurs de paliers est une alternance de 0 et de 1 ; la s´quence des fronts e porte exactement la mˆme information. Il n’est donc pas tr`s int´ressant de e e e consid´rer la r´action d’une machine s´quentielle ` cette s´quence d’entr´es. e e e a e e

124

Temps, donn´es temporelles et synchronisation e

G

G

(a) temps G G β α temps

temps GD 1 1 GD

(b) temps

(c) 0 GD 1 1 (d) 0 (A) 0 (B) 0 GD

Fig. 6.1 – S´quence d’entr´es correspondant ` une grandeur continue de l’environnee e a ment : a) ´volution d’une grandeur continue ; b) discr´tisation de l’axe G ; c) e e discr´tisation du temps, interpr´tation asynchrone ; d) discr´tisation du temps, e e e interpr´tation synchrone. e A) Cas d’une grandeur ; B) cas de plusieurs grandeurs

1. Interface entre un dispositif informatique et un environnement physique

125

En revanche, d`s que l’on consid`re plusieurs grandeurs, les paliers (ou, e e de mani`re ´quivalente, les fronts) sont superpos´s. En associant une variable e e e bool´enne — 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 s´quence de monˆmes bool´ens qui refl`te les superpositions de paliers. e o e e On passe ` un nouvel ´l´ment de la s´quence d`s que l’une au moins des deux a ee e e grandeurs change de palier. Pour l’exemple de la figure 6.1-Bc, on construit la s´quence e α.β, α.β, α.β, α.β, α.β, α.β, α.β, α.β Il devient int´ressant de d´crire des machines s´quentielles capables de traie e e ter des s´quences ainsi construites. e Exemple E6.1 : Interpr´tation asynchrone de deux grandeurs et e comptage Consid´rons une machine s´quentielle qui per¸oit deux grandeurs α et β, et e e c dont la sortie bool´enne γ est vraie si et seulement si les deux grandeurs ont e eu la mˆme valeur un nombre pair de fois dans le pass´. e e En utilisant la s´quence des niveaux superpos´s, on ´crira par exemple la e e e machine de Moore suivante :
¬(α.β ∨ α.β) α.β ∨ α.β γ = vrai Pair α.β ∨ α.β Fig. 6.2 – Machine de Moore lisant la s´quence des niveaux e Impair γ = faux ¬(α.β ∨ α.β)

Pour la s´quence α.β, α.β, α.β, α.β, α.β, α.β, α.β, α.β, la s´quence e e de sortie est : γ, γ, γ, γ, γ, γ, γ, γ, γ. On peut aussi consid´rer que δ d´note le front montant d’une grandeur e e bool´enne D, et δ son front descendant. La s´quence construite pour l’exemple e e de la figure 6.1-Bc est alors : β, α, β, α, β, α.β, α. Notons que l’origine des temps n’est pas consid´r´e comme un front. D’autre part rien n’empˆche d’envisager ee e le changement simultan´ des deux grandeurs, d’o` l’existence d’´l´ments de la e u ee s´quence de la forme α.β. e 1.4.2 Interpr´tation synchrone e

L’interpr´tation synchrone est un cas particulier de l’interpr´tation asyne e chrone d´crite ci-dessus pour deux grandeurs, dans lequel on consid`re que e e

126

Temps, donn´es temporelles et synchronisation e

l’une des grandeurs est l’horloge de l’autre. La grandeur choisie comme horloge d´finit un d´coupage de l’axe du temps qui permet d’´chantillonner l’autre e e e grandeur. Ce d´coupage n’est pas n´cessairement r´gulier en temps physique ; e e e l’axe du temps sous-jacent n’est pas d´coup´ en intervalles de tailles ´gales, e e e quoique ce soit g´n´ralement le cas avec des horloges r´gul´es par des quartz. e e e e En interpr´tation synchrone, on a donc toujours au moins deux grandeurs. e Notons d’ailleurs que synchrone signifie litt´ralement qui partage le mˆme e e temps, et qu’il faut ˆtre au moins deux pour partager quelque chose. Deux e grandeurs seront dites synchrones si elles sont ´chantillonn´es sur la mˆme e e e horloge, asynchrones sinon. A partir d’une grandeur qui sert d’horloge et d’une ou plusieurs autres grandeurs, on fabrique une s´quence d’entr´es de la machine s´quentielle en e e e cr´ant un ´l´ment de s´quence par front d’horloge : c’est un monˆme qui d´crit e ee e o e le niveau des autres grandeurs ` l’instant de ce front. a
Nous verrons qu’une machine s´quentielle peut ˆtre r´alis´e par un circuit e e e e s´quentiel synchrone (Cf. Chapitres 10 et 11). Une horloge d´termine alors e e les instants auxquels la machine change d’´tat. Un processeur peut ˆtre vu e e comme une machine s´quentielle synchrone cadenc´e elle-aussi par son hore e loge (Cf. Chapitre 14). Il existe aussi des r´alisations, dont des processeurs, e asynchrones. Nous n’´tudions pas cette technique dans ce livre. e

Exemple E6.2 : Machine ` caf´ (suite de l’exemple E5.2) a e Nous envisagions une s´quence e d’entr´es e commen¸ant c par s1 .s2 .s5 , s1 .s2 .s5 , s1 .s2 .s5 , ... Si l’on utilise l’interpr´tation asynchrone d´finie ci-dessus, les entr´es s1 , e e e s2 , s5 et fs de la machine ` caf´ sont superpos´es, et on en d´duit une a e e e s´quence d’entr´es en cr´ant un nouvel ´l´ment uniquement quand l’une au e e e ee moins change. La s´quence ci-dessus n’apparaˆ donc jamais. e ıt Si l’on utilise l’interpr´tation synchrone, en revanche, on introduit une e cinqui`me entr´e implicite : l’horloge. On construit un ´l´ment de la s´quence e e ee e pour chaque p´riode d’horloge. La s´quence ci-dessus peut donc apparaˆ e e ıtre.

2.

Signaux logiques et repr´sentation par des e chronogrammes

Les grandeurs physiques continues dont nous avons envisag´ la e discr´tisation sont des signaux physiques. Nous appellerons signal logique e l’´chantillonnage d’un tel signal physique par les fronts d’un autre signal qui e sert d’horloge.
On ´tudie l’influence des probl`mes de synchronisation sur la r´alisation des e e e automates synchrones dans le chapitre 10.

L’´volution au cours du temps des horloges et des signaux logiques peut e ˆtre repr´sent´e par des courbes en cr´neaux carr´s, comme sur la figure 6.3. e e e e e

3. Probl`mes de synchronisation e

127

a

H Temps Fig. 6.3 – Un exemple de repr´sentation de signaux logiques par des chronogrammes : e H est un signal d’horloge, et a est un signal logique d’horloge H (noter que l’horloge est un signal bool´en. Ici le signal a est ´galement bool´en). e e e

S S2

S1 S0

H t1 t2

Fig. 6.4 – Repr´sentation de l’´volution de grandeurs : la valeur S cod´e sur 3 bits S0 , e e e S1 et S2 est momentan´ment instable entre les instants t1 et t2 e

Ces courbes sont des chronogrammes. Si l’on s’int´resse au temps de changement de valeur discr`te d’un sie e gnal par rapport au rythme d’une horloge H, et aux ´ventuels probl`mes e e d’´chantillonnage qui en d´coulent, on peut repr´senter l’´volution temporelle e e e e des grandeurs en jeu par une figure comme 6.4. Pour repr´senter des valeurs ind´finies ou non significatives, nous utilisons e e aussi les repr´sentations donn´es dans la figure 6.5. e e

3.

Probl`mes de synchronisation e

Nous avons envisag´ jusqu’ici le cas d’un dispositif informatique connect´ e e a ` un environnement physique dont il doit ´chantillonner les grandeurs. e Si l’on s’int´resse ` plusieurs dispositifs informatiques, on peut consid´rer e a e chacun comme l’environnement de l’autre : les sorties de l’un peuvent ˆtre les e entr´es de l’autre. Pour ´tudier les probl`mes de synchronisation entre syst`mes e e e e informatiques, on suppose que les deux syst`mes sont d´crits par des machines e e s´quentielles, et que les entr´es de l’un peuvent ˆtre les sorties de l’autre. e e e

6. e e e e qui doivent se mettre d’accord sur une valeur V produite par l’un et consomm´e e par l’autre.1 Le probl`me g´n´ral d’acc`s ` un signal commun e e e e a On consid`re deux dispositifs informatiques appel´s r´cepteur et ´metteur. les deux dispositifs A et B peuvent e n´anmoins avoir des horloges locales. puis fabrique une nouvelle valeur (pendant ce temps l’´tat du fil est ind´termin´) et la maintient sur le e e e fil. c’est-`-dire utiliser chacun un signal pare a ticulier comme horloge pour ´chantillonner les autres signaux. consomme la valeur (ce traitement prend un certain temps) . Dans le cas contraire. cas 1 Fig. cas 2 V instants de lecture. ils peuvent ´chantillonner toutes les grandeurs sur e la mˆme horloge.6 – Acc`s ` une valeur commune V e a Si les deux dispositifs A et B re¸oivent un mˆme signal qui peut servir c e d’horloge commune H. 6.128 Temps. mais chacun e doit ˆtre consid´r´ comme l’environnement asynchrone de l’autre. ce type de e sch´ma est souvent utilis´ pour repr´senter la valeur pr´sente sur un bus : e e e e lorsque aucun composant n’est connect´ au bus sa valeur n’est pas significae tive. e ee 3. Le r´cepteur a ´galement un comportement cyclique : il acc`de ` ce fil en e e e a lecture . acc`de e de nouveau ` V . donn´es temporelles et synchronisation e a) b) t0 δ1 δ2 Fig. etc. a Le probl`me pos´ comporte deux contraintes : e e – Le r´cepteur ne doit pas consommer deux fois la mˆme valeur e e .5 – Repr´sentations particuli`res de valeurs : e e a) Signal bool´en dont la valeur est ind´finie avant l’instant t0 e e b) La valeur n’est significative que pendant les p´riodes δ1 et δ2 . etc. L’´metteur a un comportement cyclique : il maintient une valeur e sur le fil (ou les fils) V pendant un certain temps. instants de lecture.

on n’a pas de garantie de r´ception par l’autre. 3. les instants de lecture sont trop ´loign´s. le r´cepteur ne peut pas lire deux fois la donn´e V sans avoir ´t´ pr´venu e e ee e par l’´metteur d’un changement entre temps . dans le e e cas 2. La complexit´ des e e e e e e protocoles de communication dans les r´seaux informatiques tient ` un autre e a probl`me : les lignes de transmission entre l’´metteur et le r´cepteur ne peuvent e e e pas ˆtre consid´r´es comme fiables.2.3.1 Protocole poign´e de mains et mise en oeuvre e Le protocole Pour ´viter les deux cas de fonctionnement incorrect d´crits par la figure 6. Probl`mes de synchronisation e 129 – Le r´cepteur ne doit pas ignorer une valeur e Si les deux dispositifs ´voluent de mani`re compl`tement ind´pendante l’un e e e e de l’autre. lorsqu’il re¸oit a l’aquittement de lecture en provenance de R. et pr´vient e R de l’apparition d’une nouvelle valeur — c’est le signal E prˆt . l’´metteur ne peut pas modifier la valeur de la donn´e (c’est-`-dire e e a ´mettre deux valeurs diff´rentes) ` moins d’avoir ´t´ pr´venu par e e a ee e le r´cepteur entre temps que la premi`re valeur a effectivement ´t´ e e ee consomm´e. lorsqu’un signal comme X prˆt est ´mis par l’un. Il faut donc se d´brouiller pour synchroniser l’´metteur et le r´cepteur e e e pour l’acc`s ` la valeur commune V . e On introduit ` cet effet deux signaux de synchronisation E prˆt et R prˆt. le r´cepteur lit plus vite que l’´metteur ne produit .6. il envoie e e e e c ensuite ` E un acquittement de lecture — c’est le signal R prˆt . En effet. e e on doit assurer que : 1. Voir figure 6. R attend e d’ˆtre ainsi pr´venu pour consommer la valeur pr´sente sur le fil . E peut proc´der ` la production e a d’une nouvelle valeur. R prˆt est produit par le r´cepteur et consomm´ par l’´metteur. Cette synchronisation est assur´e par un e a e protocole de communication. e 2. a e e e e e e e E prˆt est produit par l’´metteur et consomm´ par le r´cepteur. L’id´e est d’assurer la e e e e synchronisation par un dialogue entre l’´metteur (E) et le r´cepteur (R). les instants de lecture sont quelconques : les deux probl`mes cie dessus peuvent survenir. ce qui oblige ` pr´voir la r´´mission des e ee a e ee e messages et de leurs acquittements.6 : dans le cas 1. les instants de lecture sont trop proches. le r´cepteur ne lit pas assez e e e vite.2 3. pour r´guler les acc`s en lecture/´criture ` une e e e e a information partag´e est une id´e simple et tr`s g´n´rale. Remarque : Cette id´e d’un ´change d’informations suppl´mentaires du e e e type j’ai ´crit et j’ai bien lu. e e . de la e e forme suivante : E est responsable de la production des valeurs V.

e e Fonctionnement temporel de l’´metteur et du r´cepteur La fie e gure 6. d ep.130 Temps. a a En observant le comportement des deux machines s´quentielles.8) : ´mission du signal E prˆt (´chantillonn´ sur H e). on peut se e convaincre des propri´t´s suivantes : ee – Le r´cepteur ne peut pas passer deux fois dans l’´tat de lecture de V sans e e que l’´metteur ait quitt´ son ´tat d’´criture.8 est simplifi´ : il n’y a pas de e e e d´calage temporel entre la production d’un signal et sa d´tection (si l’on n´glige e e e le d´lai de transmission du signal d’horloge dans les connexions physiques par e rapport au temps de travers´e d’un circuit combinatoire). d rp. puisqu’il est produit sur cette horloge . d´tection du e e e e e e e e e e e e signal E prˆt (´chantillonn´ sur H r). ´mission du signal R prˆt (´chantillonn´ sur H r).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 mˆme horloge. p rp. e e e e e Le pr´fixe p indique la production du signal.7 donne les machines de Moore d´crivant le comportement temporel e de l’´metteur et du r´cepteur. Fie gure 6. selon qu’ils sont ´chantillonn´s par l’horloge de l’´metteur ou par l’horloge du r´cepteur. p rp. il est en revanche diff´rent de son ´chantillonnage sur H r.8 illustrent les contraintes d’ordre sur les fronts de la donn´e V et des e e e signaux logiques p ep. d ep. d rp (Cf.2 Mise en oeuvre. He = Hr est un cas simple o` l’opposition de phase des horloges des deux syst`mes r´soud les probl`mes d’´chantillonnage e e e e et de stabilit´ des grandeurs ´chang´es. le sch´ma de la figure 6. donn´es temporelles et synchronisation e 3. d ep. e e e . l’´metteur ne peut pas passer deux fois dans l’´tat e e e d’´criture sans que le r´cepteur soit pass´ dans son ´tat de lecture. e u Le cas des horloges inverses. d´tection du signal R prˆt (´chantillonn´ sur H e).2. d rp. Chacune des machines change d’´tat sur les fronts de son horloge. Les deux e e e signaux E prˆt et R prˆt donnent deux signaux logiques chacun. e e e e Repr´sentation par des chronogrammes Les chonogrammes de la fie gure 6. e e e e On consid`re les 4 signaux logiques suivants p ep. e e e 3. impos´es par le protocole poign´e de mains ainsi que l’´tat courant de l’´metteur et du r´cepteur. d’apr`s e e la valeur des signaux de communication ` cet instant-l`. en terme des signaux logiques p ep. le pr´fixe d indique sa e d´tection. e e e a e E prˆt est ´gal ` son ´chantillonnage sur l’horloge H e. e e p rp.2. cas g´n´ral e e e L’´metteur a une horloge H e et le r´cepteur une horloge H r. e e e e – Sym´triquement.

Etat R2 : ´mission de l’acquittement e e et attente de prise en compte de cet acquittement par l’´metteur. e e .3. e Transition t4 : reconnaissance du fait que le r´cepteur traite l’information e envoy´e par l’´metteur. Etat R1 : attente de valeur . Transition e t1 : consommation de la valeur V . Transition t2 : reconnaissance du fait que l’acquittement de consommation de V a ´t´ pris en compte par l’´metteur . Etat E2 : ´mission de V et attente d’acquittement de la part du e e r´cepteur. Probl`mes de synchronisation e 131 Emetteur (changements d’´tat sur fronts montants de H e) e d rp R´cepteur (changements e d’´tat sur fronts montants de H r) e d ep E1 t3 d rp t4 E2 d rp p ep R1 t1 d rp d ep t2 p rp d ep p ep d ep R2 p rp Fig. 6. dans le cas d’un protocole de poign´e de mains. ee e Transition t3 : prise en compte de l’acquittement en provenance du r´cepteur . Etat E1 : attente e e d’´mission .7 – Machines de Moore d´crivant le fonctionnement temporel de l’´metteur et du e e r´cepteur.

e On a repr´sent´ : la donn´e V dont les valeurs sont ´mises par l’´metteur. p rp) qui correspondent ` l’´chantillonnage du signal E prˆt a e e (resp. donn´es temporelles et synchronisation e V He p ep d ep p rp d rp Hr Temps Emetteur Recepteur Ecr. d rp. . Attente Ecr Consomm. 6. d ep (resp. Fig. e e e Les lignes obliques en trait plein. Les courbes e e e pointill´es grasses termin´es par une fl`che illustrent des relations de cause ` e e e a effet. l’horloge du r´cepteur H r . e e e e e e sur son horloge H e . R prˆt) sur les horloges de l’´metteur et du r´cepteur. c’est-`-dire son ´chantillonnage e a e sur l’horloge du consommateur. c’est-`-dire son ´chantillonnage sur l’horloge a e du producteur.132 Temps. et la d´tection de ce signal. d´ductibles du fonctionnement temporel de l’´metteur et du r´cepteur. sans fl`che. Att.8 – Comportement temporel des signaux dans un protocole poign´e de mains. les signaux logiques p ep. Attente Ecriture Consomm. illustrent les d´calages temporels e e entre la production d’un signal.

L’´metteur attend cet acquittement avant de e e produire une nouvelle valeur.2. Pour cela on ajoute un e signal de synchronisation qui permet ` l’´metteur de signaler qu’il a produit a e une nouvelle valeur. e e e Emetteur rapide : Si l’´metteur est suppos´ beaucoup plus rapide que le e e r´cepteur. Le r´cepteur attend cet avertissement pour lire. o On consid`re que les divers dispositifs ´lectrom´caniques de la machine ` e e e a caf´ ´mettent des signaux physiques que l’on ´chantillonne sur l’horloge du e e e contrˆleur informatique. e La figure 6. Il e e e suffit d’assurer qu’il ne lit pas deux fois la mˆme valeur. on sait qu’aucune valeur ´mise ne peut lui ´chapper. Un exemple : la machine ` caf´ a e Exemple E6. Il suffit d’assurer que le r´cepteur n’ignore pas de valeur. En fait le r´cepteur est esclave de l’´metteur : il e e n’a pas d’horloge propre.3 : Machine ` caf´ (suite de l’exemple E5. L’´metteur peut en effet consid´rer que l’acquittee e ment j’ai bien lu survient n coups d’horloges apr`s la production du signal j’ai e ´crit . la mise en oeuvre du protocole de poign´e de mains est tr`s simplifi´e : e e e le signal d’acquittement en provenance du r´cepteur n’est plus un vrai signal e physique : il est implicite. le signal logique s1h e e obtenu par ´chantillonnage de s1 sur l’horloge du contrˆleur . e 4. le signal physique s1 issu o du capteur qui d´tecte l’insertion d’une pi`ce de 1F . on sait que le r´cepteur ne peut pas consommer deux fois la mˆme e e e valeur. il peut mˆme arriver que n = 1. e e C’est un mode de synchronisation qui peut parfois ˆtre utilis´ entre le processeur e e (l’´metteur) et une m´moire (le r´cepteur) (Cf. et connu lors de la e e construction du syst`me qui fait communiquer les deux dispositifs informae tiques. d’apr`s les grandeurs physiques qui ´voluent dans l’environneo e e ment de ce contrˆleur. et utilise l’un des signaux ´mis par l’´metteur comme e e horloge. le signal logique e o .4. p 105) a e Nous reprenons l’exemple de la machine ` caf´. Cette horloge est suppos´e beaucoup plus rapide que o e le temps de r´action des capteurs. Chapitres 14 et 15). e on ajoute un signal de synchronisation qui permet au r´cepteur de signaler e qu’il a consomm´ une valeur. si le r´cepteur est suppos´ beaucoup plus e e e rapide que l’´metteur.9 donne : l’horloge H du contrˆleur . R´cepteur rapide : Inversement. Il s’agit d’´tudier maintenant a e e la d´finition des s´quences d’entr´es de la machine s´quentielle qui repr´sente e e e e e le contrˆleur. Un exemple : la machine ` caf´ a e 133 Synchronisation avec d´lai constant : Lorsque le temps de r´action e e (consommation) du r´cepteur est toujours le mˆme. Pour cela.

et risquerait sinon d’utio e a e liser plusieurs fois le mˆme signal pour compter une pi`ce de 1F. 6. En effet la machine s´quentielle qui repr´sente le e e e contrˆleur change d’´tat ` chaque p´riode d’horloge. une sortie sortie de la e machine s´quentielle. Nous verrons e e au chapitre 9.134 Temps.9 – Signaux d’entr´e et de sortie de la machine ` caf´ e a e s1hf obtenu par d´tection des fronts montants de s1h . un dispositif mat´riel capable de r´aliser cette e e d´tection de fronts.4. e e e .2. e Si l’entr´e 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 p´riode d’horloge qui suit a e e le front montant de s1h et le reste pendant toutes les p´riodes d’horloge o` la e u machine s´quentielle est dans le mˆme ´tat. donn´es temporelles et synchronisation e H s1 s1h s1hf sortie Fig. paragraphe 1. e Il est n´cessaire de d´tecter les fronts de s1h afin de fournir en entr´e du e e e contrˆleur un signal logique qui indique l’insertion d’une pi`ce pendant au o e plus une p´riode d’horloge.

Deuxi`me partie e Techniques de l’algorithmique mat´rielle e

Chapitre 7 De l’´lectron aux dispositifs e logiques
L’objet de ce chapitre est de montrer quels ph´nom`nes physiques e e ´l´mentaires sont mis en oeuvre dans les r´alisations mat´rielles de ceree e e taines fonctions dont, principalement, les fonctions bool´ennes. Ces r´alisations e e mat´rielles re¸oivent le nom de dispositifs logiques. Nous verrons plus loin come c ment combiner de telles fonctions pour r´aliser les ´l´ments d’un ordinateur. e ee Cela se fera seulement ` travers un moyen de r´alisation des dispositifs : la a e technologie CMOS (Complementary Metal Oxyde Semiconductor). Nous ne donnons que les principes g´n´raux. Il n’est pas question ici d’inclure un cours e e complet de physique ou d’´lectronique donnant les tenants et aboutissants de e chacun des ph´nom`nes ´tudi´s. e e e e Nous envisageons les ph´nom`nes sous des points de vue d’abstraction e e croissante : l’´chelle atomique, o` l’on parle d’atomes et d’´lectrons (pae u e ragraphe 1.) ; l’´chelle ´lectrique, o` l’on parle de r´sistances, de condene e u e sateurs et de transistors (paragraphe 2.) ; l’´chelle logique, o` l’on parle e u de fonctions bool´ennes (paragraphe 3.). Nous nous ´loignons ainsi proe e gressivement des ph´nom`nes physiques pour en avoir une vision en e e terme d’information. Cela permet de d´crire l’ensemble des circuits loe giques utilis´s dans les ordinateurs (paragraphe 4.). Nous donnerons e aussi un bref aper¸u de la fabrication des circuits, notamment en raison c de l’influence qu’elle a sur les m´thodes de conception (paragraphe 5.). e

1.
1.1
1.1.1

Ph´nom`nes ` l’´chelle atomique e e a e
Atomes, ´lectrons et cristaux e
Atomes, ´lectrons e

La mati`re est constitu´e d’atomes. Chaque atome est constitu´ d’un e e e noyau et d’un cort`ge d’´lectrons appel´ nuage ´lectronique. Les ´lectrons e e e e e

138

De l’´lectron aux dispositifs logiques e

portent chacun une charge ´lectrique ´l´mentaire n´gative et le noyau autant e ee e de charges positives qu’il y a d’´lectrons. On r´partit les ´lectrons selon e e e leur ´nergie en niveaux d’´nergie. La classification p´riodique des ´l´ments e e e ee de Mendele¨ donne pour chaque ´l´ment : le nombre d’´lectrons dans le ıev ee e cort`ge ; le nombre de niveaux d’´nergie contenant des ´lectrons ; le nombre e e e d’´lectrons appartenant au niveau d’´nergie 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 d’´nergie e e le plus ´lev´, le bore et le gallium en ont 3, le phosphore et l’arsenic 5. e e 1.1.2 Cristaux

Les atomes d’un corps sont li´s entre eux plus ou moins fortement et e peuvent se disposer les uns par rapport aux autres selon des structures r´guli`res : les cristaux. Le diamant et le graphite sont 2 organisations phye e siques diff´rentes du mˆme ´l´ment chimique carbone. De mˆme il existe des e e ee e vari´t´s de silicium monocristallin et polycristallin qui sont obtenues par des ee proc´d´s de fabrication diff´rents. e e e

1.2

Courant et conducteur

L’organisation des atomes en r´seaux cristallins entraˆ un ´largissement e ıne e des niveaux d’´nergie (qui sont discrets) en bandes d’´nergies (qui sont contie e nues) et une d´localisation des ´lectrons de plus haute ´nergie sur l’ensemble e e e du r´seau. Le courant ´lectrique est un mouvement d’ensemble de particules e e charg´es, ici les ´lectrons. Qui dit mouvement dit ´nergie cin´tique, donc vae e e e riation de l’´nergie totale de l’´lectron. Ceci n’est possible que s’il trouve une e e place ` l’´nergie correspondante dans une bande d’´nergie autoris´e et non a e e e pleine. 1. Si la derni`re bande n’est pas pleine, l’´nergie n´cessaire ` cette excursion e e e a est faible : on parle de conducteur comme le cuivre, l’or, l’aluminium. 2. Si la derni`re bande est pleine et s´par´e de la suivante par une zone e e e d’´nergie non autoris´e (gap), l’´nergie n´cessaire ` la production d’un e e e e a courant ´lectrique est forte : on parle d’isolant. Le quartz est un cristal e isolant d’oxyde de silicium. Le verre est un oxyde de silicium, isolant, mais non cristallin. 3. Il arrive que le gap soit faible, l’´nergie n´cessaire est alors interm´diaire : e e e on parle de semi-conducteur . Le silicium et le germanium sont deux corps simples semi-conducteurs. L’arseniure de gallium est un corps compos´ e semi-conducteur. Ces trois mat´riaux sont les constituants de base des e

1. Ph´nom`nes ` l’´chelle atomique e e a e

139

circuits ´lectroniques. Le silicium est le plus r´pandu dans les composants e e utilis´s 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 l’´nergie (par exemple d’origine thermique), un ´lectron peut e e atteindre la bande de conduction et s’´loigner, laissant derri`re lui un trou dans e e la bande de valence et un atome charg´ positivement. Il y a donc cr´ation d’une e e paire (´lectron mobile n´gatif, trou fixe positif). R´ciproquement, un autre e e e ´lectron perdant de l’´nergie peut venir combler ce trou et r´tablir l’´quilibre e e e e ´lectrique de l’atome. On parle alors de recombinaison ´lectron-trou. Du point e e de vue ´lectrique, il est alors commode de consid´rer que c’est un trou positif e e qui s’est d´plac´ dans le cristal. e e Dans un semiconducteur pur il y a autant de trous que d’´lectrons. e

1.3

Diffusion et dopage

Faites cette exp´rience (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 d´posez d´licatement e e une goutte de lait. Ne remuez pas le verre et regardez par transparence. Il y a diffusion du lait dans le th´. Au bout d’un 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 d´pˆt de la goutte, de la concentration du th´, de la grosseur de e o e la goutte, de la temp´rature . . . e Imaginez le mˆme ph´nom`ne de diffusion d’un solide (du phosphore) dans e e e un autre solide (du silicium). Bien sˆr il faut chauffer un peu, et on ne voit u rien par transparence. Le r´sultat de l’exp´rience pr´c´dente est int´ressant en termes ´lectriques. e e e e e e Les ´l´ments silicium et phosphore sont voisins par leur structure ´lectronique : ee e il y a un ´lectron de plus dans le phosphore. L’introduction de phosphore dans e le silicium modifie la structure et l’´quilibre atomiques. Le silicium ainsi trait´ e e est devenu meilleur conducteur. La diff´rence de r´sistivit´ est importante. En e e e apportant un atome de phosphore pour 100 millions d’atomes de silicium, la r´sistivit´ est divis´e par un facteur de l’ordre de 30 000. e e e On dit que le silicium a ´t´ dop´ ; on parle de dopage n´gatif puisqu’il ee e e y a exc`s d’´lectrons. Quand le silicium a re¸u, par diffusion, des atomes de e e c phosphore, tout se passe comme si on avait du silicium avec des ´lectrons e libres, non li´s aux atomes. e On peut aussi doper positivement le silicium en diffusant du bore qui a un ´lectron de moins et obtenir un exc`s de trous. e e L’int´rˆt du silicium est qu’il est facilement dopable et que le dioxyde de ee silicium est, lui, un obstacle au dopage. Par facilit´ de langage on dit souvent e dop´ N (pour N´gatif, exc`s d’´lectrons) ou dop´ P (pour Positif, exc`s de e e e e e e trous) en parlant du silicium.

140

De l’´lectron aux dispositifs logiques e

Une ´tude plus d´taill´e de la physique des dispositifs semi-conducteurs se e e e trouve dans [CW96] ou [GDS98].

2.
2.1

Ph´nom`nes ` l’´chelle ´lectrique e e a e e
Rappels d’´lectricit´ ´l´mentaire e eee

– La r´sistance R d’un fil ´lectrique homog`ne de section constante est propore e e tionnelle ` la longueur L du fil, ` la r´sistivit´ ρ du mat´riau et inversement a a e e e proportionnelle ` la section S du fil. a – Si un fil est purement r´sistif, la diff´rence de potentiel U aux bornes du fil e e est proportionnelle ` la r´sistance R de ce fil et ` l’intensit´ I du courant a e a e qui le traverse. C’est la loi d’Ohm. – Un sandwich Conducteur-Isolant-Conducteur r´alise un condensateur. Sa e capacit´ C augmente avec la surface S des armatures conductrices et dimie nue avec leur ´cartement. Elle varie selon les caract´ristiques ´lectriques du e e e mat´riau isolant. e – La charge Q emmagasin´e dans un condensateur est proportionnelle ` la e a capacit´ C du condensateur et ` la diff´rence de potentiel U aux bornes du e a e condensateur. – La variation dQ/dt de la charge aux bornes du condensateur est l’intensit´ e du courant de charge (ou de d´charge) du condensateur. e – Si deux conducteurs sont branch´s en s´rie entre deux points, le courant e e doit passer dans les deux conducteurs. Les r´sistances s’ajoutent. e – Dans le m´canisme du pont diviseur si deux r´sistances de valeurs R1 e e et R2 sont connect´es en s´rie entre deux points reli´s ` des potentiels e e e a Va et 0, le point situ´ entre les deux r´sistances est ` un potentiel V = e e a V a × R1/(R1 + R2). – Si deux conducteurs sont branch´s en parall`le entre deux points, le e e courant passe en partie par un conducteur, en partie par l’autre, selon leurs r´sistances. Les conductances (inverse de r´sistances) s’ajoutent. e e – Si un condensateur charg´, de capacit´ C, est mis en situation de se e e d´charger ` travers un conducteur de r´sistance R, il se d´charge. La vae a e e riation de tension est d´crite par une exponentielle en e−t/RC . Le temps de e d´charge est d’autant plus grand que R et C sont grands. Le ph´nom`ne de e e e charge est sym´trique. e – Une diode, constitu´e d’une zone dop´e N et d’une zone dop´e P, ne laisse e e e passer le courant que dans un sens.

2.2
2.2.1

Le transistor ` effet de champ M.O.S. a
Description physique du principe du transistor ` canal N a

Observons la figure 7.1. Dans un substrat de silicium (vari´t´ monoee cristalline, faiblement dop´e P) on d´limite deux zones fortement dop´es e e e

2. Ph´nom`nes ` l’´chelle ´lectrique e e a e e

141

Grille L N x
¥ ¤ ¥ ¤

A y N

Grille
¢ £ ¢ £ ¢ £

B
§ ¦ § ¦ § ¦ § ¦ § ¦ § ¦ § ¦

substrat P Vue de dessus Coupe x y Transistor seul

substrat P

Coupe x y Vue de dessus Transistor reli´ e

Fig. 7.1 – Coupe et vue de dessus d’un transistor seul ou reli´ e

N´gativement. Ces deux zones sont espac´es d’une distance L. La zone faie e blement dop´e P est nomm´e substrat. Sur la zone rectangulaire entre les deux e e zones dop´es, on fait croˆ e ıtre du dioxyde de silicium : le verre (isolant). Audessus du verre on d´pose du silicium (polycristallin) et on le dope aussi. e
Remarque : La r´alit´ de fabrication est diff´rente : en fait, le dopage du e e e silicium monocristallin du substrat et celui du silicium polycristallin au-dessus de l’oxyde pourraient ˆtre simultan´s : la couche de dioxyde de silicium bloque e e la diffusion.

On obtient ainsi deux sandwiches. L’un vertical : Conducteur – Isolant – Semi-conducteur et l’autre horizontal : Semi-conducteur dop´ – Semi-conducteur – Semi-conducteur dop´. e e Le premier est ` l’origine du nom M´tal Oxyde Semi-conducteur. Sur la a e figure 7.1, les zones dop´es du substrat sont not´es A et B. On appelle grille la e e zone de silicium polycristallin dop´. L’isolant est sous la grille. Les deux zones e A et B sont ici suppos´es rectangulaires pour faciliter le dessin. La distance L e entre les deux zones est caract´ristique d’une technologie de r´alisation. Si le e e journal annonce la sortie d’un 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 orient´es en sens inverse l’une de l’autre. Or une jonction a pour e propri´t´ de ne conduire le courant que dans le sens N vers P. La jonction ee drain-substrat bloque donc le passage du courant entre le drain et la source : le transistor est bloqu´. e Lorsqu’une tension positive est appliqu´e 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

§ ¦

¥ ¤

¥ ¤

¥ ¤

A N

B

¥ ¤

¥ ¤ ¥ ¤ ¡   ¡   ¡    

N

142

De l’´lectron aux dispositifs logiques e

source A=0V
¡  

Grille
¡   ¡  

drain B

A=0V Grille N
£ ¢ £ ¢ £ ¢

B

A=0V Grille N
¥ ¤ ¥ ¤ ¥ ¤

B

N

N

.. .. . .: :N

::::::::::::::::::::N:::::::: : : : : : : : ::: : : :

P Tension de grille = 0 V

P Tension de grille = 0.5 V

P Tension de grille = 5 V

Fig. 7.2 – Formation du canal dans un transistor

face, tout se passe alors comme s’il existait sous la grille un canal drain-source de faible profondeur, artificiellement dop´ n´gativement par l’accumulation e e d’´lectrons due au champ ´lectrique grille-substrat. Ce canal est conducteur et e e un courant peut y circuler. L’intensit´ du courant est soumise ` la loi d’Ohm : e a la r´sistance du canal entre source (A) et drain (B) est fonction de la longueur e et de la section du canal mais aussi de la r´sistivit´ du semi-conducteur obtenu. e e Cette r´sistivit´ diminue ` mesure que la diff´rence de potentiel entre e e a e la grille et le substrat augmente. Le transistor fonctionne donc comme une r´sistance command´e par la diff´rence de potentiel grille-substrat. e e e Cet effet de conduction dˆ ` un champ ´lectrique a donn´ le nom de tranua e e sistor ` effet de champ. a Une mod´lisation plus fine du transistor met en ´vidence une limite du e e transistor : la tension du drain et la source doit ˆtre inf´rieure ` celle de la e e a grille faute de quoi le canal ne peut se former. Nous appellerons V gsth la diff´rence de potentiel minimale entre grille et source n´cessaire ` la formation e e a du canal. La figure 7.2, dans laquelle les petits points repr´sentent 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 charg´e, elle est au potentiel d’alimentation, e e e quand elle ne l’est pas, la grille est au potentiel de la masse. 2.2.3 Le transistor ` canal P a

Il est obtenu de fa¸on assez sym´trique 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 d’alimentation, typiquement 5 volts. Le canal se forme si le potentiel sur la grille est suffisamment plus petit que celui du substrat. On remarque la difficult´ de cohabitation sur un mˆme substrat de silicium e e d’un transistor N avec un substrat P ` la masse et d’un transistor P avec un a substrat N reli´ ` l’alimentation. C’est pourtant ce que l’on cherche ` faire en ea a technologie CMOS, o` les deux types de transistors cohabitent. La technologie u

3. Ph´nom`nes ` l’´chelle logique e e a e

143

de r´alisation bri`vement d´crite au paragraphe 5.2 en tient compte. e e e 2.2.4 Remarque finale ` propos d’´lectricit´ a e e

Le fonctionnement du transistor, N ou P, tel qu’il vient d’ˆtre d´crit est tr`s e e e continu : une petite variation d’un des param`tres induit une petite variation e de comportement. Le transistor ne passe pas brutalement de conducteur ` a non conducteur. Tout changement de l’´paisseur d’oxyde, de la longueur du e canal du transistor, de la diff´rence de potentiel entre la grille et le substrat ou e entre les points A et B donne une variation de l’intensit´ du courant de fa¸on e c continue. La mise en ´quation des ph´nom`nes physiques mis en jeu dans le transistor e e e MOS est trait´e dans les livres d’´lectronique (Par exemple [CDLS86]) et n’a e e pas sa place ici.

3.

Ph´nom`nes ` l’´chelle logique e e a e

Dans l’alg`bre bool´enne, les deux ´l´ments significatifs sont cod´s 0 et e e ee e 1. Avec deux symboles, interpr´t´s comme des chiffres 0 et 1, la num´ration ee e en base 2 permet de repr´senter les nombres. Les dispositifs ` transistors ont e a un comportement continu : toute variation infinit´simale des entr´es provoque e e une variation faible des sorties (courant, tension...). La question est de savoir comment repr´senter des informations num´riques avec des dispositifs ainsi e e continus. Il existe des calculateurs dits analogiques. Le principe est simple : le nombre 470 est repr´sent´ par la tension 4,7 volts, le nombre 32 est repr´sent´ par 0,32 e e e e volts. Un circuit additionneur est un dispositif ` deux entr´es, capable de a e d´livrer sur la sortie la somme, ici 5,02 volts, des tensions. Ces machines sont e difficiles ` calibrer si l’on souhaite une pr´cision dans les calculs de plus de 4 a e chiffres d´cimaux significatifs. e Par opposition aux calculateurs analogiques, les calculateurs les plus fr´quents sont num´riques, ou digitaux . Les nombres sont repr´sent´s par des e e e e vecteurs de bool´ens, ou vecteurs de bits. e

3.1

L’abstraction logique

Les valeurs 0 et 1 d’un bit sont repr´sent´es par des tensions, respectivement e e nulle (0 volt ou masse) et la tension d’alimentation, standardis´e ` 5 volts (de e a plus en plus souvent 3,3 volts, voire moins, notamment dans les machines portables). Les transistors sont fabriqu´s de telle fa¸on qu’il existe une tension de e c seuil (“threshold” en anglais) Vth au-dessus de laquelle l’entr´e d’un circuit ine terpr´tera le signal comme un 1, et comme un 0 au-dessous. La valeur nominale e de Vth est choisie de mani`re ` optimiser la tol´rance aux bruits et parasites e a e

144

De l’´lectron aux dispositifs logiques e

Type de transistor Canal N Canal P

Tension de commande Alimentation Masse Masse Alimentation

Comportement Passant Bloqu´ e Passant Bloqu´ e

Fig. 7.3 – Comportement des transistors

´lectriques pouvant affecter le signal. Compte tenu des tol´rances de fabricae e tion sur la valeur de Vth , tous les circuits interpr´teront une tension inf´rieure e e a 0,75 volts comme un 0 et sup´rieure ` 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 n´gative le niveau haut correspond au 0 et le niveau bas au e 1. Nous ne prendrons pas cette convention. Etudions un comportement simplifi´ du transistor. Cette simplification e consiste ` faire comme si le canal du transistor ´tait soit totalement bloqu´ soit a e e passant, auquel cas il a une r´sitance R. Nous ne regardons les transistors que e reli´s soit a la masse, (le potentiel 0 volt), soit ` un potentiel positif, la tension e ` a d’alimentation. En r´alit´ les tensions ´lectriques varient de fa¸on 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 ` l’alimentation, le transistor est passant. S’il y a une a diff´rence de potentiel entre A et B, du courant circule entre A et B. e – Si la grille est ` la masse, le transistor est bloqu´. Mˆme s’il y a une diff´rence 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 ` l’alimentation, le fonctiona a nement est invers´ : e – Si la grille est ` ` la masse, le transistor est passant. S’il y a une diff´rence aa e de potentiel entre A et B, du courant circule entre A et B. – Si la grille est ` l’alimentation, le transistor est bloqu´. Mˆme s’il y a une a e e diff´rence de potentiel entre A et B, aucun courant ne circule entre A et B. e Ces diff´rentes fonctions sont regroup´es dans le tableau de la figure 7.3. Ce e e comportement simplifi´ fait abstraction de nombreux ph´nom`nes. On parle e e e d’abstraction logique.

3.2

R´alisation de la fonction logique e la plus simple : l’inverseur

Les fonctions logiques peuvent ˆtre mod´lis´es simplement par des fonce e e tions bool´ennes. La r´alisation mat´rielle de l’op´ration bool´enne de e e e e e compl´mentation s’appelle un inverseur . L’inverseur peut ˆtre un montage e e ´lectrique ayant une entr´e E et une sortie S (L’alg`bre de Boole ne tient e e e

3. Ph´nom`nes ` l’´chelle logique e e a e

145

´videmment pas compte de l’existence de l’alimentation 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 r´alit´, 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 extrˆmes de fonctionnement d’un inverseur. e Mais quel peut ˆtre le comportement souhaitable de l’inverseur entre ces deux e extrˆmes ? Pour r´pondre ` cette question imaginons deux montages : l’un e e a constitu´ de 4 inverseurs en s´rie : la sortie de l’un est l’entr´e du suivant. Dans e e e l’autre les deux inverseurs sont r´trocoupl´s : la sortie de l’un est l’entr´e de e e e l’autre et r´ciproquement. Les sch´mas simplifi´s correspondants sont donn´s e e e e figure 7.4. L’inverseur y est repr´sent´ par une simple boˆ avec une entr´e e e e ıte e et une sortie s. Dans le montage de 4 inverseurs en s´rie, envoyons un signal d’entr´e qui e e en fonction du temps passe de 0 ` 5 volts (la repr´sentation en escalier n’´tant a e e pas ` prendre au pied de la lettre). a Examinons les sorties apr`s 2, ou 4, inversions pour trois types d’inverseurs. e Les trois sont candidats au titre du meilleur inverseur. Pour les trois types, nomm´s Accroissement, Maintien, Diminution, nous e donnons une courbe de transfert donnant la tension de sortie de l’inverseur en fonction de la tension d’entr´e (Figure 7.5). Pour les trois types les vae leurs extrˆmes des tensions sont respect´es, et il existe une tension m´diane e e e VM pour laquelle la tension de sortie est ´gale ` la tension d’entr´e. Mais le e a e comportement entre ces points est diff´rent. e Pour les trois types nous donnons l’allure de la r´ponse du montage e constitu´ de 2 ou de 4 inverseurs ` l’entr´e en escalier. e a e L’inverseur de type Accroissement accentue les diff´rences entre les niveaux e faibles et forts. C’est un amplificateur. Si il y a un faible parasite en entr´e, le e parasite n’est pas apparent en sortie. A l’inverse l’inverseur de type Diminution diminue les diff´rences entre e niveaux faibles et forts. D`s que le signal d’entr´e pr´sente un parasite, le e e e niveau de sortie risque d’ˆtre autour de VM , ce qui n’est pas souhaitable. e De mˆme, pour le montage constitu´ de deux inverseurs r´trocoupl´s, on e e e e comprend ais´ment que l’inverseur de type Accroissement donne un syst`me e e stable. Soit une sortie vaut 1 et l’autre 0, soit le contraire, mais une stabilisation a ` un ´tat interm´diaire est tr`s improbable (quoique pas impossible). Avec un e e e inverseur du type Diminution, on pourrait facilement obtenir un montage de deux inverseurs r´trocoupl´s se stabilisant avec des sorties ` VM . e e a C’est ´videmment l’inverseur de type Accroissement qui est le plus e int´ressant pour la r´alisation de fonctions bool´ennes. e e e L’´lectronique digitale ´tudie de fa¸on pr´cise comment obtenir un mone e c e tage ayant la bonne courbe de transfert. Elle permet aussi d’´tudier une e r´alisation avec un point de basculement Vm proche de la moiti´ de la tene e

5 – Courbes de transfert de trois candidats inverseurs .146 De l’´lectron aux dispositifs logiques e Accroissement Maintien 5V 0V entr´e e Diminution s1 apr`s 2 inversions e e e s e s e s e s s2 2 inverseurs r´tro-coupl´s e e s2 apr`s 4 inversions e e s e s s1 4 inverseurs en s´rie e Fig.4 – Comportement des candidats inverseurs apr`s 2 ou 4 inversions e Vs 5 Vs 5 Vs 5 1 1 Accroissement 5 1 Ve 1 Maintien 5 1 Ve 1 Diminution 5 Ve Fig. 7. 7.

d. l’inverseur est obtenu en connectant un transistor N et un transistor P en s´rie entre la e masse et l’alimentation.6 – Sch´ma conventionnel des transistors MOS et de l’inverseur CMOS.3. o` RN d´signe la r´sistance du u e e transistor a canal N. mais e la courbe de transfert est moins int´ressante. a a Si l’on consid`re les diff´rentes valeurs possibles pour la tension d’entr´e e e e V e. u e Une autre solution est de remplacer le transistor P par une r´sistance. Grilles et Sources. Le principal avantage est une e plus grande simplicit´ (Inverseur NMOS). La figure 7. Ph´nom`nes ` l’´chelle logique e e a e 147 Transistors gN dN sN dP gP sP masse sN Inverseur CMOS entr´e e gN gP alim. dN dP sP sortie ` canal N a ` canal P a Fig. dans tous les cas.7. ce qui donne une bonne tol´rance aux parasites ([CDLS86]). ee e Nous donnons ici deux solutions : la principale est la technologie ` base a de transistors MOS Compl´mentaires (Complementary MOS).6 e donne la structure interne de l’inverseur. N et P d´signant les transistors e N et P. ` Vref × RN /(RP + RN ) e e a ou Vref × 1/(1 + RP /RN ). Tension d’entr´e e Ve 0 V <= Ve <= 0.75 V 4. o` Vref d´signe la tension d’alimentation. On utilisera dans le livre certaines e portes bas´es sur ce principe.g. e e e .s sont e respectivement les Drains. 7. RP d´signe la r´sistance du transistor ` canal P. Beaucoup des circuits de petite ´chelle d’int´gration (quelques centaines de transistors par puce) sont dans e e une technique nomm´e Transistor Transistor Logic TTL. 7. En technologie CMOS.5 V <= Ve <= 5 V R´sistance du e transistor N RN infinie R2 R´sistance du e transistor P RP R1 infinie Tension de sortie Vs 5V 0V Fig. Les substrats e respectifs des deux transistors N et P sont ` la masse et ` l’alimentation. V s ` e e a d´signe la tension de sortie. Mais la plupart des e circuits de tr`s grande ´chelle d’int´gration sont aujourd’hui en CMOS. ´gale. L’entr´e est la tension de grille commune aux deux e transistors et la sortie est le point interm´diaire entre les deux. e Il existe d’autres organisations d’inverseurs.7 – R´ponse de l’inverseur CMOS e sion de r´f´rence. on obtient le tableau de la figure 7.

La capacit´ reli´e ` la sortie doit se d´charger. la sortie est stable ` 0. Il est d´j` connu (figure 7. Sym´triquement. ` travers e e a e a le transistor N. en entr´e d’autres circuits logiques. L’existence de ce temps de changement de la sortie e de l’inverseur explique pourquoi tous les circuits logiques ont un temps de r´ponse. 4. que l’on nomme cire cuits combinatoires. a Cette charge ou cette d´charge se fait en un certain temps. Elles sont donc capacitives par e rapport ` la masse. On assimilera donc la sortie de l’inverseur ` une capacit´. Ce temps constie tue le temps de basculement.9-a).148 De l’´lectron aux dispositifs logiques e 3. de l’inverseur. La r´ponse est simple : ` des grilles de e e a transistors. o` la tension d’entr´e passe de 0 ` 5 volts. que l’on nomme circuits e s´quentiels. L’inverseur est une e porte logique ` une entr´e et une sortie. ou temps de r´ponse. Ce temps e est couramment inf´rieur ` la nanoseconde (10−9 s). Si l’entr´e e e e a a e est stable a 0. e Les diff´rences entre ces deux types de circuits sont difficiles ` comprendre. Il d´pend fortement de e a e la valeur de la capacit´. la sortie est stable ` 1.1 Assemblages combinatoires Les r´alisations des fonctions bool´ennes s’appellent des portes logiques. a e ea . Elle doit prendre en compte o` e u est connect´e la sortie de cet inverseur. la sortie doit passer de 5 ` u e a a 0 volts. e a On y revient dans la suite du livre. Circuits logiques Nous allons ´tudier dans la suite diff´rents assemblages de transistors e e r´alisant des fonctions bool´ennes. ` a L’´tude du comportement dynamique de l’inverseur concerne le comportee ment lors des changements de tension d’entr´e. la capacit´ de e e sortie doit se charger ` travers le transistor P.9 donne la structure de diff´rentes portes logiques. Chapitres 8 et 10).3 Fonctionnements statique et dynamique de l’inverseur L’analyse du fonctionnement statique de l’inverseur a ´t´ faite ee pr´c´demment. vers la masse. e 4. a a e Que se passe-t-il lors du changement de la tension d’entr´e ? Lors d’un front e montant. La e e figure 7. – Les assemblages qui m´morisent de l’information. lors d’un front descendant. Si l’entr´e est stable ` 1. Chacune des deux familles fait l’objet d’un chapitre entier (Cf. Ces assemblages seront class´s en deux e e e cat´gories : e – Les assemblages qui ne m´morisent pas l’information.

8 – D´charge et charge de la capacit´ de sortie d’un inverseur e e E1 E1 E S E2 S (a) Inverseur (b) NOR2 (c) NAND2 (d) Porte ”inconnue” E1 E2 S E2 E3 S Fig. Circuits logiques 149 P E S E=0V Charge E=5V P S=0V D´charge e E C D´charg´e e e N S P S=5V N N C Charg´e e Fig.4. 7.9 – Structure interne de diff´rentes portes de base e . 7.

9-c). donc la mˆme sortie. il n’y a rien e e e de sp´cial a dire.9. Les deux transistors N sont en s´rie entre la masse et la sortie. On v´rifie ee e ais´ment que S vaut 0 si et seulement si E1 vaut 1 ou si E2 et E3 valent 1. e De mˆme on obtient une porte NAND ` trois entr´es avec 3 transistors N en e a e s´rie entre la masse et la sortie et 3 transistors P en parall`le entre la sortie et e e l’alimentation. 4. 4. N’oublions pas que les r´sistances e e e des transistors passants en s´rie s’ajoutent. si et seulement si les deux entr´es sont e e au niveau de l’alimentation.3 Les portes ` plus de deux entr´es a e De fa¸on tr`s similaire au montage des portes NAND ou NOR ` deux entr´es. On e a donc S = E1 + E2. La fonction logique est un NAND ` deux entr´es.9-d est particulier en ce sens qu’il ne r´alise e pas une fonction logique ´l´mentaire comme le NAND ou le NOR. La sortie est donc reli´e e a e e a ` la masse. Les deux transistors N sont en parall`le entre la masse et la sortie. les deux transistors P sont e en parall`le entre l’alimentation et la sortie. Les grilles d’un transistor N et d’un e transistor P sont connect´es ` l’entr´e E1. e ` . a e On le note souvent NAND2 (figure 7.150 De l’´lectron aux dispositifs logiques e 4.1. les grilles de l’autre transistor e a e N et de l’autre transistor P sont connect´es ` l’entr´e E2. a e 4. On le note parfois NOR2 (figure 7. le comportement global est celui d’un seul inverseur. via une r´sistance passante. Les grilles d’un transistor N et e d’un transistor P sont connect´es ` l’entr´e E1.-b).1. les grilles de l’autre transistor N et e a e de l’autre transistor P sont connect´es ` l’entr´e E2.1.2 La porte NAND ` deux entr´es E1 et E2 a e Le montage comporte deux transistors N et deux transistors P.1. Certaines techniques de r´alisation e e vont imposer des contraintes d’origine ´lectrique au nombre maximal d’entr´es e e des portes.1. 4.E3. que se passe-t-il ? Si les deux inverseurs ont la mˆme entr´e. La sortie est donc e a e reli´e ` la masse. via une r´sistance passante. si et seulement si une au moins e a e des deux entr´es est au niveau de l’alimentation. Le proc´d´ semble pouvoir continuer. c e a e on obtient une porte NOR ` trois entr´es avec 3 transistors N en parall`le entre a e e la masse et la sortie et 3 transistors P en s´rie entre la sortie et l’alimentation. les deux transistors e P sont en s´rie entre l’alimentation et la sortie.1 La porte NOR ` deux entr´es E1 et E2 a e Le montage comporte deux transistors N et deux transistors P.5 Deux inverseurs en parall`le : un petit et un gros e Si l’on connecte ensemble les sorties de deux inverseurs.4 Une porte inconnue ` trois entr´es a e Le montage de la figure 7. La fonction logique est un e NOR ` deux entr´es.

6 Le commutateur ou interrupteur 3 ´tats e La source d’un transistor MOS peut ne pas ˆtre connect´e au mˆme potene e e tiel que le substrat. Ce type de fonctionnement ´chappe ´videmment au domaine des circuits combinatoires e e bien construits. la tension de sortie est autour de 2. a a Pour que les niveaux logiques 0 et 1 soient tous les deux bien transmis.10 – Commutateur et aiguillage ` base de commutateurs a Si les deux inverseurs ont des entr´es diff´rentes.structure interne . On a alors un interrupteur complet. e 4. par exemple. C’est le court-circuit.sch´ma simplifi´ e e Porte de sortie 3 ´tats e . ce qui produit de l’´nergie thermique... ou .5 volts. (Cf.1.sch´ma simplifi´ e e e s Fig. Dans certaines technologies le pont diviseur obtenu laisse passer beaucoup de courant. 7. Si les deux inverseurs e e ont des r´sistances tr`s proches. e e Si l’un des deux inverseurs a des transistors dont les r´sistances sont tr`s e e diff´rentes de l’autre.4. Circuits logiques 151 C e s A B e2 e3 B e s e e1 e s c1 c2 c3 s C A s Aiguillage 3 voies vers 1 C e e s e s C s Commutateur . On obtient alors entre drain et source un demi-interrupteur ´lectronique command´ par la tension de grille qui permet de r´aliser des e e e connexions intermittentes entre d’autres ´l´ments. la tene sion de sortie prenant des valeurs de 2 ou 3 volts.10) ee La polarit´ du signal de commande qui ´tablit la connexion d´pend du type e e e de transistor (1 pour un transistor ` canal N.structure interne . un des deux inverseurs peut prendre l’avantage. 0 pour un transistor ` canal P). on se trouve avec deux e e montages de ponts diviseurs de r´sistances en parall`le. on utilise une paire de transistors N et P. Figure 7.

10. c3 vaut 1. e Par exemple quand aout et cin et din valent 1 et que tous les autres valent 0. Il est symbolis´ par un e e simple carr´ inclin´.152 De l’´lectron aux dispositifs logiques e 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 ind´fini e Fig. B. cela ne pose pas de probl`me. B. cin e et din. il y a deux sous-cas. Le montage constitu´ de deux inverseurs suivis e e d’un commutateur re¸oit le nom de porte de sortie 3 ´tats. et utilisation de portes de sortie 3 ´tats. .1. cout et dout et de signaux de commande d’entr´e ain. e e 4. Le commutateur est d’usage fr´quent. On donne aussi une autre r´alisation e e de la porte 3 ´tats. Nous en utiliserons dans e les chapitres relatifs aux entr´es/sorties. e2 et e3.13 permet de relier 4 points A.9 La gare de triage Par g´n´ralisation des aiguillages. Si l’on trouve des sorties diff´rentes.1. Cette sortie est parfois e e ind´finie. La sortie s est d´crite Figure 7. e Le cas ind´fini est complexe . Ce c e montage ne doit donc s’utiliser qu’avec la garantie que seulement l’un parmi c1. C et D sont fonctions de signaux de commande de sortie aout. L’ensemble inverseur (qui est aussi un amplificateur) suivi d’un commutateur est parfois r´alis´ en un seul circuit nomm´ e e e amplificateur/inverseur 3 ´tats. selon les forces respectives e des inverseurs qui traitent e1. Dans ces diff´rents montages. e e e le montage de la figure 7. e e 4. C et D.7 L’aiguillage Observons la figure 7. En fonctionnement normal.11 – Comportement de l’aiguillage commutateur. e2. les r´sistances des transistors e e e quand ils sont passants doivent ˆtre ajust´es soigneusement. les compl´mentaires des trois signaux e1.1. On peut dire aussi c e que c’est un inverseur suivi d’un amplificateur/inverseur. 7. Si l’on trouve deux e ou trois sorties ´gales sur le bus. Plusieurs des signaux de commande d’entr´e peuvent valoir 1. et s prend e e cette valeur.12. bin. bout. s re¸oit une valeur non bool´enne. c2. on dit que la sortie s constitue une connexion de type bus. Les liaisons entre A. un seul des signaux de commande de sortie doit valoir 1.11. Dans l’aiguillage 3 voies vers 1 r´alis´ ` base de 3 e ea commutateurs et de 3 inverseurs. 4. e3 peuvent ˆtre e e envoy´s sur le bus.8 L’amplificateur 3 ´tats e Observons la figure 7. Ce montage est utilis´ dans beaucoup de dispositifs comprenant des bus.

aout A ain cin cout C B D bout bin din dout Fig. Circuits logiques 153 OE e e s OE s e OE s (a) OE e s e OE s e OE s (b) (c) Fig. 7. . (a) sch´mas en transistors. les 2 portes sont e e un nand2 et un nor2. 7. (b) sch´mas en transistors e e et portes. (c) symboles logiques.13 – Ensemble d’aiguillages constituant une gare de triage.12 – Deux r´alisations de l’amplificateur/inverseur 3 ´tats et leurs symboles. L’ine e verseur est repr´sent´ par un triangle avec un petit rond.4.

u Pour comprendre cette m´canique commen¸ons par voir comment une vae c leur peut ˆtre m´moris´e de fa¸on stable. e – ` l’inverse. La liaison centrale (en gras sur la figure).2. e 4.154 De l’´lectron aux dispositifs logiques e la valeur de A est transmise sur C et D. R´soudre ce probl`me permet de r´aliser e e e e une m´moire vive de 1 mot de 1 bit.2. – l’entr´e et la sortie des deux inverseurs sont ` 2. telle qu’il est r´alis´ dans les boˆ e ee e e ıtiers de m´moire vive statique. c’est le deuxi`me inverseur qui a l’entr´e ` 1 et la sortie ` 0 (ces a e e a a deux ´tats sont stables. ea e e 4. sa sortie au niveau logique 0. C’est un point de m´morisation dans lequel on peut donc ´crire. e a e le moindre parasite sur une des deux connexions est amplifi´e et le syst`me e e tombe dans un des deux ´tats stables. par laquelle tout passe.2 4. e 4. le montage s’appelle un bistable car il a deux points e de fonctionnement stable). chacun ayant comme entr´e la sortie de l’autre.3 Les points m´moire de type m´moire vive e e Le point m´moire ´l´mentaire. Cette transmission est directionnelle.14-b). e e Cela signifie pi´ger la valeur d’un signal ´lectrique ` un instant donn´ dans un e e a e dispositif o` cette valeur restera stable. La lece e ture se fait simplement en r´cup´rant les valeurs du bit m´moris´ et de son e e e e . est le bus du syst`me. Si la commande de for¸age F sur les 2 transistors de part et c d’autre du bistable est active et si aux extr´mit´s du dispositif on pr´sente e e e une valeur V1 et son compl´ment V2 ` l’aide de circuits plus puissants que les e a deux inverseurs utilis´s dans le montage bistable.2. C’est pour cela qu’on a choisi des e inverseurs de type Accroissement (on parle souvent de m´ta-stabilit´ pour e e cet ´tat). Chapitre 16). Ce type de structure est utilis´e dans les interconnexions entre une m´moire e e et plusieurs processeurs par exemple (Cf. permet de pi´ger une valeur nouvelle dans un bistable e e (figure 7. Cet ´tat est instable. e Il reste un probl`me : ces deux ´tats sont tellement stables qu’on ne voit pas e e comment y pi´ger une nouvelle valeur.14-a. ces deux valeurs restent en e place quand la commande F sur les deux transistors redevient inactive. Pour cela examinons le r´trocouplage e e e c e de deux inverseurs d´j` rencontr´ pour l’´tude de l’inverseur. a trois points de fonctionnement : e – l’entr´e du premier est au niveau logique 1.2 Le bistable Observons la figure 7.5 volts.1 Assemblages s´quentiels e Introduction La r´alisation de dispositifs s´quentiels permet de stocker l’information. Le montage de deux inverseurs.

e e 4. 7. Cette m´morisation dans la capacit´ de grille d’un transistor ne peut e e ˆtre de longue dur´e. Ce montage fabrique un signal p´riodique. puis elle disparaˆ Un montage comme celui de la figure 7. La m´morisation a lieu pendant que les signaux F1 et F2 sont inactifs. Dans la suite du livre nous utiliserons ces primitives de r´initialisation e (Reset) et d’horloge pour les r´alisations de circuits s´quentiels. Le chapitre 9. qui pi`ge la valeur e e e (Figure 7.14 – Les diff´rents points m´moire e e compl´mentaire en sortie des deux inverseurs. Il est utilis´ comme e e e horloge. Il convient dans ces points a de m´morisation dynamique de ne pas avoir simultan´ment F1 et F2 actifs. reprend ces points en d´tail. e e 4. Le montage d’un quartz e e de fr´quence de r´sonnance donn´e permet de rendre la fr´quence d’oscillation e e e e constante. Si l’on veut transf´rer e l’information d’un point ` un autre on utilise F2. e . Une e nouvelle valeur est introduite dans la capacit´ du premier inverseur par la mise e a ` 1 de F1.5 L’oscillateur Le circuit oscillateur pr´sent´ figure 7.2. ee e e 4. une impulsion est g´n´r´e. cette fonctionnalit´. Circuits logiques 155 F1 F e s s e Bistable (a) V1 e s s e V2 E e s C1 F2 e s C2 F3 Bistable avec for¸age c (b) Points de m´morisation dynamique e (c) Fig.2. carr´.15-a oscille.15-b assure e ee ıt. Elle est en revanche tr`s int´ressante car elle n’utilise e e e e pas de circuits en plus des fonctions combinatoires.2.4 Les points de m´morisation dynamiques e Il existe des points m´moire utilisant un principe tout ` fait diff´rent : e a e c’est la capacit´ d’entr´e d’un inverseur.4.6 Le monostable Lors de l’appui sur le bouton Reset d’un ordinateur.14-c). consacr´ aux e e ´l´ments de m´morisation. ou d’une porte.

16) permet d’obtenir un motif e e complexe dans un mat´riau A ` la surface d’un mat´riau B. . Figure 7. il l’ach`te et l’utilise. d´j` con¸u.1 Le proc´d´ de photogravure e e Le proc´d´ de photogravure (Cf. les autres les blancs. . Les zones opaques sont appel´es les noirs. Sinon le client con¸oit un circuit pour une ea c e c application et le fait fabriquer.15 – (a) Oscillateur d´livrant une horloge. 5. e 5. Le produit photo-sensible re¸oit de la lumi`re en e c e face des blancs du masque et n’en re¸oit pas en face des noirs du masque. Diff´rents d´pˆts font appel au proc´d´ de e o e e o e e photogravure que nous allons pr´senter. 7. Pour simplifier la pr´sentation. Il y a des milliards de motifs de chaque e couleur. Un c produit chimique permet d’attaquer le produit photo-sensible l` o` il a re¸u a u c de la lumi`re et seulement l` (´tape 2 de la figure 7. e Un circuit con¸u sp´cialement pour une application s’appelle un A. Les e a diff´rentes ´tapes sont simultan´es : toutes les grilles des cent (et quelques) e e e millions de transistors de la galette sont r´alis´es en mˆme temps par un mˆme e e e e d´pˆt de silicium polycristallin. un e e e e magn´toscope . (b) Syst`me de r´initialisation d´livrant e e e e une tension de Reset. partiellement transparent. . supposons que le e monde comporte deux cat´gories : les fabricants eux-mˆmes et les clients. Fabrication des dispositifs Les dispositifs ` base de transistors sont r´alis´s dans des chaˆ a e e ınes de fabrication de haute technologie.16). c e (Application Specific Integrated Circuit). On pose au-dessus un masque partiellement opaque.156 De l’´lectron aux dispositifs logiques e R R C (a) R C Clock (b) Vreset Fig. . . Puis on d´pose par e a e dessus une couche d’un produit photo-sensible. Cet assemblage peut ˆtre un ordinateur. puis il int`gre le circuit dans un assemblage. notre figure n’en comporte qu’un ! On illumine le tout par au-dessus (´tape 1 de la figure 7.16). e g´n´ralement logiciel et mat´riel. Si e e le client trouve dans les catalogues des fabricants le circuit dont il a besoin.I. e a e Pour cela on d´pose du A partout ` la surface du B.).S. processeurs.C. e Les galettes de silicium de quelques d´cim`tres de diam`tre subissent une e e e suite de traitements physico-chimiques destin´s ` fabriquer les transistors. La fabrication est dans ses grandes lignes la e mˆme. e a e . Le terme s’oppose aux circuits standard (m´moires.

et en le collant e e sur du papier blanc. le mat´riau A est apparent en face des blancs du e e masque. Puis un deuxi`me produit chimique attaque le mat´riau A l` o` il est e e a u en surface (´tape 3 de la figure 7. D. Il y a en r´alit´ environ 15 ıt e e .16). Le mat´riau B est alors sur le dessus e e en face des blancs du masque. Nous ne dessinons ici qu’un inverseur. 7. 5. Un troisi`me produit chimique attaque le proe duit photo-sensible l` o` il n’a pas ´t´ illumin´. Les masques a e comportent les dessins des motifs n´cessaires ` la r´alisation simultan´e des e a e e quelques millions de transistors sur la galette de silicium d’une vingtaine de centim`tres de diam`tre. E et F les masques utilis´s. e e La figure 7.16 – Trois ´tapes du proc´d´ de photogravure e e e Apr`s cette attaque. e A partir du sch´ma de connexions entre les transistors l’obtention des dese sins des masques suppose de manipuler quelques centaines de millions de rectangles. Un n´gatif d’une photo de la feuille de papier tenait lieu e de masque. On obtient ainsi une forme en a u ee e mat´riau A ` la surface d’un substrat constitu´ de mat´riau B. Cette forme e a e e est celle qui ´tait dessin´e sur le masque. Les vieillards se souviennent avec ´motion du bon temps o` les e u circuits n’avaient que quelques centaines de transistors et o` les crayons de couu leurs et le papier quadrill´ tenaient lieu d’assistance. La ligne de surface du substrat qui e apparaˆ sur les coupes n’est pas si rectiligne. C. Un outil de Conception Assist´e par Ordinateur est ´videmment ine e dispensable. e Nos dessins sont simplifi´s par rapport ` la r´alit´. Nous e e les envisageons ici ` travers les dessins des masques impliqu´s. aux ciseaux. La mise en oeuvre effective de ce proe e cessus de fabrication demande une haute technologie pour obtenir des dessins dont les tailles sont de l’ordre du dizi`me de micron. Les sch´mas physiques e e ´taient obtenus en d´coupant de l’autocollant noir.5. B. Sur les vues en coupe les e a e e vraies proportions ne sont pas respect´es.2 Un proc´d´ de fabrication : CMOS ` grille silicium e e a polycristallin et ` deux niveaux de m´tal a e La fabrication de circuits logiques organis´s avec des transistors N et e des transistors P n´cessite de nombreuses op´rations technologiques.17 montre par 6 dessins A. Fabrication des dispositifs 157 lumi`re e A B prod photo A B 2 : apr`s enl`vement e e du produit photo non illumin´ e B A 3 apr`s enl`vement e e du produit A ` a d´couvert e 1 : flashage Fig.

7. Les masques sont cumul´s e dans les diff´rentes parties de la figure. Dans les vues en coupe l’oxyde n’est pas color´. e @ 9 5 @ 9 5 @ 9 5 @ 9 @ 9 § ¦ @ 9 @ 9 8 7 8 7 8 7 8 7 @ 9 @ 9 § ¦ @ 9 @ 9 8 7 8 7 8 7 8 7 @ 9 § ¦ @ 9 8 7 8 7 8 7 8 7 @ 9 § ¦ 9 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 ¡   H G H G H G H G  ¡   H G H G H G H G H G  ¡   H G H G H G H G ¡   H G H G H G H G     Caisson P Caisson N Coupe xy 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 C x Dessin des masques y e C G G G G  P I P I P I P I & % P I P I P I P I 0 ) 2 1 0 ) P I P I P I P I 0 ) 2 1 P I P I P I P I $ # P I P I P I P I $ # ' ' . DifN de la zone diffus´e N. La vue en coupe apr`s l’op´ration est e e e selon la ligne xy ou la ligne x’y’. Alu1 et Alu2 sont les deux niveaux d’aluminium. C1 et C2 sont les deux niveaux de contacts sous l’aluminium. Sipol est le masque du silicium e e polycristallin.17 – Les masques intervenant dans la technologie CMOS.158 De l’´lectron aux dispositifs logiques e x’ y’ 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 C C Caisson P Caisson P Caisson N   © ¨ ¨ ¥ ¤ ¥ ¤ £ ¢ ¢ Coupe x’y’ A H G H G G P I P I P I P I P I B @ 9 B A @ 9 @ 9 9 H G C e @ 9 @ 9 @ 9 @ 9 @ 9 e s a             " ! " ! " ! " ! " ! s V a Coupe xy 6 6 5 5 6 6 5 5 6 6 5 5 6 6 5 5 6 6 5 5 6 6 5 5 6 6 5 5 6 6 5 5 5 5 4 3 V 6 6 5 6 6 5 6 6 5 D L´gende des masques e DifP 0 ) 0 ) 0 ) ( ' ( ' E Sch´ma ´lectrique e e F e entr´e e V Vref s sortie DifN Sipol 0 ) 2 1 0 ) 0 ) 2 1 a masse Alu2 Alu1 C1 C2 Contacts 2 1 2 1 Fig. DifP est le masque de la zone diffus´e P.

Une nouvelle couche d’oxyde ´pais est ajout´e. perc´e de e e e contacts. Cette ´tape utilise e e un premier masque. Des connexions d’aluminium peuvent aussi servir ` relier des sorties d’inverseurs ou de a portes ` des entr´es d’autres portes (partie E). D´crivons les op´rations principales : e e 1. relie le transistor N. relie le point e a de polarisation du substrat N. On essaie dans e e e e . Elle ne se fait pas. 5. u ıt 3. dans laquelle on d´limite e e e des trous de contacts selon un nouveau masque (partie D). la fonction. et une nouvelle couche d’aluminium (partie F).18 indique ce que peut ˆtre le masque du niveau d’aluminium d’un petit morceau de circuit e (une centaine de transistors). Il y a de mˆme un caisson N pour les transistors P. faiblement. La figure 7. Des points de contacts entre l’alimentation. La forme des connexions de grille et des zones dop´es donne les transistors. Puis deux masques marquent les zones diffus´es N ou P. et un cˆt´ des transistors P. ou la masse. Des connexions d’aluminium sont grav´es entre diff´rentes parties des e e diff´rents transistors. Le caisson P existe sous toute la zone des transistors N. on introduit une nouvelle couche d’oxyde ´pais. au centre. ni sous l’oxyde ´pais e hors de la zone active (partie C). (partie B. Cette diffusion e ne passe pas ` travers l’oxyde. La forme des connexions est. La forme des connexions d’aluminium e et l’emplacement des contacts donnent leurs liaisons. donc ni sous l’oxyde a mince. On peut trouver ainsi 3 ou 4 niveaux d’aluminium.3 Proc´d´s simplifi´s e e e La pr´sentation qui a ´t´ faite au paragraphe pr´c´dent montre que la e ee e e fonction du circuit provient de son dessin. 4. et le subtrat. La premi`re consiste ` doper. Cette zone est l’entr´e de l’inverseur. un caisson P pour y r´aliser des e a e transistors N. Si n´cessaire. Ce sont les points de polarisation. e 2. Une autre connexion d’aluminium. e o` le caisson n’apparaˆ plus). L’alimentation. Puis on d´limite ` l’aide d’un deuxi`me masque une e a e zone active comprenant l’ensemble des zones qui seront diffus´es et les e transistors. ` droite sur la figure. a e 6. La masse. ou le caisson. sont aussi dans les zones actives. relie le point de polarisation du caisson P et un cˆt´ oe des transistors N. La conception. qui est au-dessus d’une e couche d’oxyde mince.5. 5. Puis l’ensemble du circuit est recouvert d’un oxyde de protection. en fait. Fabrication des dispositifs 159 masques. le transistor P et la sortie de l’inverseur. ` oe a gauche sur la figure. et la fabrication des circuits int´gr´s digitaux sont des op´rations complexes et on´reuses. Puis on d´limite la zone de silicium polycristallin. laissant la place aux canaux des transistors. A l’ext´rieur de la zone active se trouve un oxyde e ´pais de silicium (ces deux masques caisson et zone active sont partie A). incluant notamment le dessin.

soit sur le dessin du circuit. soit dans sa facilit´ ` e ea r´aliser plusieurs fonctions. processeurs. Cette programmation est en g´n´ral faite par le client. Cette programmation se fait e d´finitivement. chez lui. . On remarque une r´p´titivit´ du motif. Personnalisation par modification d´finitive : une ´tape de modificae e tion est appliqu´e au circuit. Programmable Logic Device). c Il y a quatre cas : 1. Une autre fa¸on de faire assez e e c semblable est de r´aliser la personnalisation du circuit par un ensemble e . de programmation. ou e e supprim´es. Cette personnalisation est plus ou moins d´finitive. soit dans la difficult´ de conception.18 – Masque du niveau d’aluminium d’un petit morceau de circuit (une centaine de transistors). La surface est souvent un param`tre critique : plus e e le circuit est grand. Aucune personnalisation. Des m´thodes visant ` simplifier la conception ou la fabrication sont exe a pos´es ci-apr`s.). plus ou moins impropre. 7. par exemple en faisant claquer des fusibles (Programe mable Logic Array. e e 5. La simplification vise ` apporter un gain soit dans la surface du circuit. Cette fonction sera donn´e par une ´tape de persone e nalisation finale du circuit. Certaines connexions sont ´tablies. . e Elle re¸oit parfois le nom. Les diverses simplifications peuvent porter soit sur la fabrication proprement dite.3. En sortant de l’´tape de fabrication. le circuit sort de la fabrication bon ` l’emploi a (m´moires vives. le circuit e e n’a pas encore de fonction. e 2. . soit dans sa vitesse a de fonctionnement. e e e certains cas de les simplifier. donc e plus le rendement de fabrication est faible. plus il risque d’y avoir des d´fauts de fabrication.1 Simplification par la fabrication Une des simplifications possibles est de ne pas fabriquer totalement le circuit pour une application donn´e.160 De l’´lectron aux dispositifs logiques e Fig. pendant cette modification.

Dans le cas des FPGA. en g´n´ral sp´cifique du e e e e e type de circuit. ´tablit ` partir d’une description textuelle ou graphique de la e a fonction du circuit. la configuration est stock´e dans le circuit lui-mˆme en m´moire e e e vive. 4. branch´e comme un simple e ıte e e p´riph´rique d’un ordinateur individuel. ou certaines informations sont stock´es en m´moire. M´moires o` l’information est charg´e apr`s fabrication. Personnalisation difficilement modifiable : certaines connexions sont ´tablies. M´moires o` l’information stock´e a ´t´ introduite par les masques de e u e ee r´alisation du circuit. Un logiciel. de mise en oeuvre lourde puisqu’il faut r´aliser les derni`res ´tapes. mais leur e e e effa¸age et remplacement est difficile (passage sous ultra violets. e e Le fabricant r´alise ainsi des ensembles de portes. e e identiques pour diff´rents clients. sea of gates). de fa¸on ine u e e c alt´rable (claquage de fusibles. Fabrication des dispositifs 161 de contacts et de connexions d’aluminium r´alis´s au moyen de masques e e sp´cifiques de l’application alors que les autres ´tapes ont ´t´ les mˆmes e e ee e pour des circuits de fonctionnalit´ diff´rente (Gate arrays. e 3. 5. vives. la configuration qu’il faut introduire dans le circuit.3. par exemple). est faite chez le fabricant. Personnalisation et effacement simple : une configuration est introduite dans le circuit ` la fa¸on dont un programme est introduit en m´moire. Les e valeurs introduites pilotent des transistors utilis´s en commutateur et e ´tablissent ou non des connexions. e . plus ou moins come c mod´ment. C’est beaucoup pour une information d´finitive.). des m´moires flash. e 2. e e e 3. non interconnect´es.2 Cas particulier des m´moires mortes e On trouve sous le nom de m´moire morte plusieurs cas de figures : e 1. M´moire morte effa¸able plus ou moins souvent. a c e La modification est tr`s simple (Field Programmable Gate Array). La configuration est introduite dans le circuit sous conduite du logiciel. e mais c’est trop peu pour une m´moire vive. La forme de personnalisation chez le client est toujours plus ou moins la mˆme : Le circuit est mis sur une boˆ sp´ciale. La m´moire se comporte comme une tabulation e e mat´rielle de la fonction. Ces deux derni`res persone e nalisations sont faites chez le client. Chaque client donne au fabricant un e sch´ma qui lui est propre pour le masque des contacts et celui de l’alue minium. e e 4.5. etc. mais o` le maintien d’information est assur´ e u e mˆme en cas de coupure de l’alimentation ´lectrique. Cette programmation. Ces circuits contiennent parfois aussi e des petites m´moires vives de 16 mots de 1 bit permettant de tabuler e certaines fonctions bool´ennes de 4 variables. Il existe des m´moires o` l’on peut changer le contenu seulee e u ment un million de fois. effa¸age c c sous haute tension.

. on obtienne respectivement la fonction identique (S=E) et une porte OR. les transistors MOS ` canal N (respectivement P) ne e e a . Exercices La ”logique” voudrait qu’en permutant les positions des transistors N et P dans l’inverseur et la porte NOR. Dans un microprocesseur 32 a bits. un pour les NAND a e a ` 3 entr´es. on peut reconnaˆ de telles tranches. Toutes les portes de mˆme type sont alors dessin´es de fa¸on e e c identique. par exemple. il semble naturel que la partie physique qui traite le bit num´ro 5 soit e presque identique ` celle qui traite le bit 23. En pratique ea e a le fonctionnement de ce type de porte n’est pas satisfaisant. e a 5. Le mˆme 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 .V gsth .Toute fonction complexe utilisant une NAND2 utilise le mˆme e e dessin de NAND2. La tension de sortie devrait ˆtre ´gale ` la tension e e a d’alimentation. mais la simple e e e a porte logique.3. Une fa¸on simple est de a e c dessiner ` l’identique des tranches de circuits. On a alors envie de dessiner tr`s soigneusement ıtre e la tranche pour qu’elle soit le plus petite possible et le plus emboˆ ıtable possible sur elle-mˆme. Sur les photos d’assez grande taille. Il y a un patron pour les NAND ` 2 entr´es. . C’est le cas. e e 6. 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 trouve r´guli`rement dans la a e e presse des photos de processeurs. En r´sum´. . la tension de sortie ne pourra d´passer e V alimentation . On a alors comme grain de r´p´titivit´ non plus la tranche correspondant ` une fonction. Consid´rons le cas o` l’entr´e et la sortie e u e de la porte sont au 1 logique. figure 7.3 Simplification par le dessin On cherche dans de telles m´thodes ` avoir un dessin du circuit pr´sentant e a e une grande r´gularit´. ` r´utiliser certains blocs de dessins.162 De l’´lectron aux dispositifs logiques e 5. e e Les simplifications du dessin des circuits consistent ` reprendre des para ties communes. Sachant qu’une diff´rence de potentiel minimale grille-source e V gsth est indispensable ` la formation du canal et la tension de grille atteint a au mieux la tension d’alimentation. Pourquoi ? Il faut raisonner de fa¸on plus approfondie que 1 ou 0 logique et consid´rer c e les tensions V alimentation . Les transistors ` canal N auront alors leur a drain connect´ ` l’alimentation et leur source connect´e ` la sortie. Fausses m´moires mortes constitu´es en fait d’un boˆ e e ıtier int´grant une e m´moire vive ` faible consommation et une micropile.18 o` la e a u mˆme bascule est dessin´e 4 fois. Seules les connexions entre ces portes sont topologiquement diff´rentes d’une fonction ` l’autre.V gsth .

Le cumul des p´nalit´s e e V gsth rend ce montage inutilisable pour la construction de circuits ` plusieurs a ´tages de portes. on utilisera une porte NOR ou NAND e suivie d’un inverseur. Exercices 163 transmettent bien que les 0 (respectivement 1) logiques.6. . e Pour r´aliser une porte OR ou AND.

164 De l’´lectron aux dispositifs logiques e .

e Les entr´es sont une nappe de fils.Chapitre 8 Circuits combinatoires Un circuit combinatoire est un dispositif mat´riel dont le comportee ment peut ˆtre d´crit par une fonction bool´enne g´n´rale. ` un instant donn´. les e circuits combinatoires sont aliment´s en courant ´lectrique mais l’alimentation e e et la masse ne sont pas consid´r´es comme des entr´es des circuits combinaee e toires. Un circuit combinatoire est un ˆtre physique. Les sorties du circuit combinatoire proviennent de e sorties de portes. Un circuit combinatoire convertit une e e information d’un code dans un autre. Elles sont aussi susceptibles d’´voluer au cours du e temps. r´alise une fonction arithm´tique sur des e e nombres cod´s en binaire. il n’´tablit les valeurs correctes de ses sorties qu’un certain e d´lai apr`s le changement de ses entr´es. c’est-`-dire ` un niveau ´lectrique. Ces trois crit`res participent au coˆt d’un circuit. est ` un e e a e a certain niveau logique Vrai ou Faux. e la faire intervenir dans le calcul d’une fonction n’est pas une n´cessit´. puissance qui est dissip´e sous e e forme thermique. les sorties des uns ´tant reli´es aux entr´es des e e e autres. Une entr´e. Les entr´es du circuit sont connect´es ee e e e e a ` des entr´es de portes. donnant e e a les d´lais de r´ponse les plus brefs possibles et consommant/dissipant le moins e e d’´nergie possible. Les sore e ties sont une nappe de fils. Cere taines ont ´t´ pr´sent´es au chapitre 7. Les concepteurs de circuits cherchent e e e g´n´ralement ` obtenir un circuit ayant la plus petite surface possible. e consomme une certaine puissance ´lectrique. Ce nia a e veau est susceptible de changer au cours du temps. Un autre e e u . Il n’est pas n´cessaire de r´aliser un circuit combinatoire pour calculer e e une sortie constante. Si une entr´e est constante. Puisque nous nous limitons dans ce livre aux dispositifs ´lectroniques. A l’int´rieur du circuit il peut y avoir plusieurs circuits come binatoires ou portes successifs. Il occupe une certaine surface. etc. Un circuit combinae e e e toire peut r´aliser tout traitement si l’entr´e et la sortie sont des informations e e cod´es par des vecteurs de bool´ens. et toute fonction e e e e e bool´enne peut ˆtre r´alis´e par un circuit combinatoire. Un circuit combinatoire est constitu´ d’un ensemble de portes logiques.

Le paragraphe 4. Le d´lai de r´ponse d’un circuit e e e e combinatoire provient de l’accumulation des d´lais des diff´rentes portes et ine e terconnexions entre les entr´es et les sorties. on consid`re e e souvent que les d´lais de portes cascad´es s’ajoutent. Dans le paragraphe 3. Il est naturellement strictement positif. Nous ´tudions ensuite (paragraphe 2.1 Notion de circuit combinatoire Comportement temporel d’un circuit combinatoire L’origine du d´lai de r´ponse d’une porte (charge ou d´charge de capacit´) e e e e a ´t´ pr´sent´ au chapitre 7. pr´sente une ´tude de cas. nous insistons sur la ressemblance entre cette conception et la conception des algorithmes. c’est-`-dire.) en quoi e consiste la conception de circuits combinatoires ` partir de blocs phya siques de base. moins il est difficile de le concevoir. crit`re de coˆt est la r´gularit´ du circuit. etc. Cela permet de mieux situer la diff´rence e e e e entre les circuits combinatoires et une autre classe de circuits qui fait l’objet du chapitre 10. la temp´rature e ea e de fonctionnement. Par approximation. e 1. le temps e u e e a n´cessaire a sa conception et ` son dessin. 2 sorties e2 e3 entrées G s3 sorties Circuit global : 4 entrées. A l’heure ee e e o` nous ´crivons ce livre. Il varie avec la valeur de la capacit´ ` charger. n’est pas une propri´t´ de la e ee porte elle-mˆme. soit 10 s. 4 sorties Fig. Plus un circuit comporte de fois un e ` a bloc r´p´t´. Les constructeurs donnent les valeurs maximales et minimales du d´lai de r´ponse des composants. Voir par exemple la figure 7. Ce d´lai n’est pas constant. Mais au bout d’un certain temps les sorties sont stabi- . Des valeurs transitoires e e peuvent apparaˆ ıtre.166 Circuits combinatoires e0 e1 Alimentation F F Masse s0 s1 s2 F : 2 entrées . indirectement. Certains des exemples retenus dans ce chapitre e e sont utiles dans plusieurs chapitres ult´rieurs du livre. il est couramment de l’ordre d’un dizi`me de nanou e e −10 seconde. 1 sortie G : 3 entrées.) quelques ´l´ments ee relatifs au comportement temporel des circuits combinatoires avant de d´finir pr´cis´ment ces circuits.18 e ee du chapitre 7. 1. Les carr´s F et G sont des portes ou des e circuits combinatoires. 8.1 – Un exemple de circuit combinatoire. Dans ce chapitre nous donnons d’abord (paragraphe 1.

Nous y distine guons des entr´es id´ales (par d´finition bool´ennes).2 1. S5. Nous la faisons figurer aussi. C4. S4.1 peut donner le comportement d´crit par la figure 8. on observe. e e 1. le circuit n’est pas combinae toire. e e Examinons ce que signifie ce toujours. C1 en entr´e donne. apr`s ´ventuelle e e e e stabilisation des valeurs. C3 donne e e e une s´quence de sortie S3. le circuit recevant e la s´quence temporelle C1.2 – Comportement possible du circuit combinatoire donn´ en exemple e lis´es. une s´quence de sortie S1. si pour un circuit on peut trouver un couple de configurations d’entr´es (C3. 8. On trouve souvent une repr´sentation avec des sorties ind´termin´es e e e pendant le d´lai de r´ponse. S2. A l’inverse.2. mais elle n’est pas bool´enne. C4) tel que la s´quence temporelle d’entr´e C3. e La configuration C1 donne toujours S1. une sortie ne peut se mettre ` osciller e a ind´finiment. Cela veut dire qu’une certaine e configuration des entr´es donne toujours la mˆme configuration des sorties. certaines configurations de sorties. Notion de circuit combinatoire 167 e0 e1 s0 observé s0 idéal (sans délais) s0 (avec délais) 1 logique 0 logique 5 Volts 0 Volt Ind´termin´ e e 1 logique 0 logique Fig.2. Si plusieurs configurations d’entr´es e sont appliqu´es successivement aux entr´es du circuit combinatoire. Un circuit ´lectronique fabricant un tel signal oscillant est tr`s e e e utile mais n’est pas un circuit combinatoire. . e Un circuit est combinatoire si : Pour tout couple (C1. C2. S1.C2) de configurations d’entr´es. e e apr`s stabilisation.1 Caract´risation des circuits combinatoires e Caract´risation par le comportement e Un circuit combinatoire r´alise une fonction. des sorties telles qu’elles e e e e pourraient ˆtre observ´es (entre 0 et 5 Volts) et des sorties id´ales (bool´ennes e e e e aussi). C’est ´videmment la e e e situation la plus r´aliste.1. Par exemple le circuit pr´sent´ e e figure 8. avec S3 = S5. Dans un circuit combinatoire.

e 1. f) et la porte . f. e e e 1. la r´ciproque est fausse ! L’exercice E8. le circuit est combinatoire. e. e. e 1. b. b. 4. d. tout e e va bien puisque NAND(a. f) = NAND(a. Remarque : Attention.2 Caract´risation par la structure e Consid´rons un assemblage de portes interconnect´es comme un graphe.3 Le principe de r´alisation e Les objets de base utilis´s dans les circuits combinatoires sont les portes e logiques. On verra des circuits ayant une m´morisation dans des chapitres e e ult´rieurs. L’usage a consacr´ des symboles pour les portes. Pour r´aliser une fonction NAND portant sur 6 variables. e e par exemple) le nombre d’entr´es des portes est parfois limit´. on suppose les changements de valeurs simultan´s (comme e les entr´es e1 e0 de la figure 8. L’inveree seur est un NAND (ou un NOR) ` une seule entr´e. Les connexions e entre ces portes sont repr´sent´es par des traits. les NAND et les NOR sont les portes ´l´mentaires. f. Ces symboles sont repr´sent´s e e e e figure 8.3. Si e le graphe ainsi obtenu est sans cycle. c. e e Les portes sont les noeuds.17 donne e un circuit combinatoire comportant un cycle. d.168 Circuits combinatoires Intuitivement le circuit non combinatoire se souvient qu’il est pass´ par la e configuration S4. Une orientation ´vidente e des arcs est fournie par le sens sortie d’une porte vers l’entr´e d’une autre. e Il convient de pr´ciser que si les configurations d’entr´e C1 et C2 diff`rent e e e de plusieurs bits. Ainsi pour la e e r´alisation de carte imprim´e ` base de boˆ e e a ıtiers de la famille technologique TTL (Transistor Transistor Logic) on peut disposer de portes NAND ` 2. les connexions les arcs.1 Les circuits existants : inverseurs. c. On trouve souvent des portes NAND et NOR sans le petit rond utilis´es e pour repr´senter des fonctions ET et OU. la fonction random des calculettes n’est pas une e fonction puisque diff´rents appels ne donnent pas le mˆme r´sultat. a 8 ou 13 entr´es. A l’inverse. Il est hors du sujet de ce livre de caract´riser l’ensemble des circuits combinatoires avec un cycle.2. Les circuits combinatoires n’ont aucune fonction de m´morisation. 3. portes NAND et NOR Les inverseurs. il n’est pas n´cessaire de e e e garder la repr´sentation en transistors des portes NOR ou NAND comme dans e le chapitre 7.2). Pour des raisons ´lectriques a e e (trop grande r´sistance obtenue en mettant beaucoup de transistors en s´rie. e Le circuit combinatoire r´alise une fonction au sens math´matique du e e terme : chaque appel avec des valeurs identiques des param`tres d´livre la e e mˆme valeur. Le circuit combinatoire e e ne se souvient de rien. cela change ses r´sultats ult´rieurs.3. Une technologie de r´alisation ´tant choisie.

soit de e e e . porte 2 : le NAND : s = nand(e1. 3 ou 4.f = nand(not(a). On rappelle e e e que. c).15 donne une id´e de solution ` ce probl`me.(d.f = a. c). si a. f sont des e variables bool´ennes : e a + b. porte 3 : le NOR : s = nor(e1. e a. en utilisant une notation pr´fix´e pour le NOR.e.c).e2) . 8. and(c. L’exercice E8. g)) On r´alise un circuit dont le comportement est d´crit par une fonction e e bool´enne par un tel assemblage de portes NAND ou NOR et d’inverseurs e (Cf. g)) De mˆme.b). nand(e. e e a.e)) .c + d.(d + e + f ) = nor(not(a). nand(b.e2) . nor(b.1. Dans certains cas. Notion de circuit combinatoire 169 s e e1 s e1 s e1 s e 4 a b c d 5 a s b c 6 s e3 1 2 e2 3 e2 Fig. Mais pour une fonction ` plus de 13 entr´es a e a e c’est moins simple. d.4).d. par application directe des r`gles de De Morgan. e.2 Assemblage syst´matique e Toute fonction bool´enne peut s’exprimer sous forme de somme de proe duits de variables normales ou compl´ment´es.(b + c).(b + c).(d + e + f ) = a + (b + c) + (d + e + f ) ou.b). puis deux ´tages. e e a + b. pour une expression en produit de sommes. c. Figure 8. f.3 – Repr´sentation conventionnelle des portes logiques : e porte 1 : l’inverseur : s = not(e) .e2.e. Une puce e e e peut ne contenir que des portes ` au plus 4 entr´es alors que la puce voisine a a e des portes ` 20 ou 2000 entr´es. porte 4 : le XOR : s = xor(e1. plusieurs technologies peuvent intervenir dans un mˆme ´quipement mat´riel comportant plusieurs puces. Cette expression en somme de e e produits peut se traduire de fa¸on syst´matique sous forme de combinaison de c e deux ´tages de NAND de variables normales ou compl´ment´es. Cela donne des sch´mas logiques de circuits combinatoires e dans lesquels il n’y a que deux ou trois ´tages de portes entre l’entr´e et la e e sortie : un ´tage d’inverseurs pour certaines entr´es. Dans d’autres e a e technologies les portes NOR ne peuvent avoir que 2 ou 3 entr´es et les portes e NAND que 2.3. en utilisant une notation pr´fix´e pour le NAND.(b.c + d. porte 5 : le ANDNOR : s = nor( and(a. porte 6 : le ORNAND : s = nand ( or(a.e. nor(e.f ) ou. c). b.e3) . a e 1. NAND ` 8 entr´es fait l’affaire. f.

c. nand(b. re ) 0 0 0 1 a b 1 1 1 1 0 0 1 1 re 0 1 0 1 rs maj(a. 8.5.170 Circuits combinatoires a b c d e f g Fig.1 : R´alisation en NAND de la fonction majorit´ e e Reprenons la table de v´rit´ de l’addition de deux naturels (Cf. re )) Le sch´ma en portes NAND du circuit combinatoire r´alisant la fonction e e majorit´ est donn´ figure 8.b + a. Ces circuits sont optimaux en terme de nombre d’´tages.d f = b.b. re ) 0 1 1 1 On obtient l’expression optimis´e : e ou rs = a.2.2.d + c. (nand(a. e Exemple E8.d e = a.c. b.c.re rs = nand(nand(a. e a g = a.4 – Exemple de r´alisation de fonctions ` base de portes NAND. chapitre 3) en nous limitant ` la fonction majorit´ : a e a b 0 0 0 0 0 0 1 1 re 0 1 0 1 rs maj(a.d + b. e e .b.re + b.d NAND soit de NOR. Parae e graphe 2.c. re ). b. b).

les points noirs repr´sentent e e e des connexions entre un fil horizontal et un fil vertical .4 Conception de circuits combinatoires Etant donn´e une fonction bool´enne g´n´rale. De plus cet e e assemblage doit ˆtre d’un coˆt acceptable. Le e e e e ee Pour la beaut´ de son nom signalons un outil qui construit les portes ` partir de la e a description de la fonction bool´enne : BuildGates ! e 1 . Il existe donc des outils de CAO e de synth`se logique 1 ou d’algorithmique cˆbl´e. La possibilit´ de r´-utiliser des e e e r´sultats interm´diaires doit ˆtre retenue pour ´conomiser des ´l´ments. choisis parmi a ee une liste donn´e. En particulier la donn´e d’une fonction arithm´tique et e e e du codage binaire des nombres manipul´s constituent une description d’une e fonction bool´enne. deux e e e conventions usuelles sont pr´sent´es : avec l’une. 8. concevoir un circuit come e e e binatoire consiste ` assembler des ´l´ments logiques de base. voire minimal.1 Algorithmique cˆbl´e a e Il arrive que l’expression de la fonction bool´enne fasse appel ` des obe a jets extra-bool´ens.5 – R´alisation de la fonction majorit´ en portes NAND. principalement. e La conception conduit ` une expression de la fonction globale comme une a composition de sous-fonctions d´crites en termes bool´ens et/ou arithm´tiques. e 1. en utilisant des outils de Conception Assist´e par Ordinateur. soit. e 1. comme les portes par exemple. Sur le sch´ma. On retrouvera cette distinction dans le chapitre 10. Par exemple un multiplieur combinatoire de 2 nombres e entiers cod´s sur 64 bits en compl´ment ` 2 est une description d’une fonction e e a bool´enne.1. pour que le comportement e global de l’ensemble soit d´crit par la fonction bool´enne voulue. un trou dans le fil vertical permet de mettre en ´vidence la non-connexion. Les noms de ces deux niveaux sont fluctuants mais nous choisissons ceux d’algorithmique cˆbl´e et de synth`se loa e e gique. e e e Cette d´composition n’est jamais unique et les aspects de coˆt doivent ˆtre pris e u e en consid´ration pour choisir la bonne solution. Cette conception de e u circuits suppose deux niveaux de travail. La conception peut se faire soit manuellement (rarement). avec l’autre. Notion de circuit combinatoire 171 a b re a b re s s Fig. Il arrive aussi que les deux e a e outils soient fusionn´s en un seul.4.

e Il ne faut pas perdre de vue que la notion d’´l´ments logiques de base n’est ee pas absolue. une biblioth`que de circuits. e Il est d’ailleurs inclus dans beaucoup de biblioth`ques. Il faut que l’´quivalence soit pr´serv´e dans e e e e e ces diff´rentes formes. Elle a e e conduit ` une description en terme de composition de fonctions bool´ennes a e de la fonction globale. il peut exister plusieurs ee e repr´sentations interm´diaires. Elle est relative ` une liste donn´e.1).14. e e e 1. L’utilisation des outils de CAO de synth`se logique suppose la description e de la fonction bool´enne et celle de l’ensemble d’´l´ments de base selon un lane ee gage formel traitable par un programme. e Entre la repr´sentation de la fonction bool´enne et celle de la struce e ture de connexions entre ´l´ments qui la r´alise. Cette recherche d’un assemblage d’´l´ments donnant un comportement atee tendu est tr`s proche de l’algorithmique o` l’on cherche ` assembler les inse u a tructions pour obtenir un certain comportement. ` partir de la description de la fonction e a bool´enne. Cet ensemble de techniques. par ee exemple). De a e e la mˆme fa¸on qu’en programmation. sous e le nom d’algorithmique cˆbl´e. Dans la suite nous pr´sentons d’abord les cas simples. est parfois nomm´e conception logique. o` la distance est e u faible entre l’expression alg´brique et la r´alisation. Pour cela nous pr´sentons e e e des exemples d’´l´ments logiques qui peuvent ˆtre consid´r´s comme de base ee e ee . Il a e e indique simplement que la composition de fonctions exprim´es dans les algoe rithmes de ces traitements est un banal cˆblage. Des techniques de synth`se logique peuvent s’appliquer e e plutˆt sur la forme alg´brique (remplacement d’une formule bool´enne par o e e une autre formule bool´enne) ou plutˆt au r´sultat physique (remplacement e o e d’un ´l´ment de circuit par un autre. Le terme algorithmique cˆbl´e peut sembler ´trange. e Un circuit combinatoire r´alisant les fonctions majorit´ et ⊕ du chapitre e e 3 est un additionneur 1 bit. diff´rents langages ou syst`mes peuvent e c e e offrir des primitives plus ou loins avanc´es.172 Circuits combinatoires crit`re de r´gularit´ peut intervenir aussi comme crit`re de comparaison entre e e e e des solutions. plus petit ou moins consommateur. e mais rien n’interdit de consid´rer un additionneur 1 bit comme bloc de base. c’est connecter les sorties du e sous-circuit r´alisant l’une aux entr´es du sous-circuit r´alisant l’autre. La conception manuelle repose plutˆt o sur l’utilisation d’un sch´ma et d’un catalogue des composants disponibles. La fonction majorit´ est connue aussi (exemple E8.2 Synth`se logique e On parle de synth`se logique pour d´crire l’assemblage de portes phye e siques choisies parmi une liste donn´e. Utiliser les r´sultats d’une a e fonction comme entr´es d’une autre fonction. D’autres biblioth`ques e e proposent un circuit de calcul rapide des retenues. Il comporte en g´n´ral deux portes XOR comme e e celles de l’exercice E8.4. que nous d´taillons dans le paragraphe 3.

La e e e e a notion de premier suppose un ordre sur les fils . Chapitres 9 et 15). Si la garantie qu’un seul fil d’entr´e est ` 1 ne peut ˆtre e e a e ´tablie. ` partir d’un nombre e e a cod´ en binaire.e0. 173 et nous montrons les expressions alg´briques qui y collent le mieux.1. vraie si aucune entr´e n’est ` 1. le circuit est diff´rent.3. Par exemple. l’encodeur donne a a e le num´ro de ce fil. dans l’encodeur1 : e s1 = e3 + e2. 2. G´n´ralement il y a un AND entre une e e e e e entr´e suppl´mentaire de validation val et ce bit de sortie. soit d´croissants. val. Si parmi une nappe e de fils on est certain qu’un seul est ` 1 ` un instant donn´. e . e a e e sans cette garantie (encodeur2). comme dans notre exemple. e Nous ´tudions ensuite des circuits moins simples o` la distance peut ˆtre e u e grande entre l’expression de la fonction et la structure de la r´alisation. e e La fonction d’un encodeur est exactement sym´trique. On en e retrouvera dans le livre comme d´codeurs d’adresse (Cf. dans le d´codeur : s0 = e1. ` partir des N bits d’adresse. il faut ´mettre un des 2N e u a e signaux de s´lection d’un mot. On en rencontre en particulier dans e e e les m´moires o`. C’est le fil dont e le num´ro est celui donn´ en entr´e.2 Synth`se syst´matique e e L’exemple E8. on obtient un seul 1 parmi une nappe de fils. l’encodeur e e e e avec garantie qu’une seule entr´e est ` 1 (encodeur1). Il s’agit e bien de synth`se logique.1 Assemblage de blocs de base : synth`se logique e D´codeurs. 2. Il s’agit e bien alors d’une v´ritable algorithmique cˆbl´e.. c’est soit l’ordre des num´ros e croissants.6 caract´risent le d´codeur. l’encodeur en g´n´ral. Ainsi pour le d´codeur. e a On en d´duit ais´ment les expressions logiques et les sch´mas correspone e e dants.1. Il d´livre alors le num´ro du premier fil ` 1.1 2. e Les tables de v´rit´ de la figure 8. 2. e a e Nous privil´gions les solutions syst´matiques mais nous montrerons parfois e e quelques astuces.2.8. Dans ce dernier on introduit une sortie a. encodeurs e Les circuits existants Un circuit fabriquant en sortie les 2N monˆmes canoniques correspondant o a ` ses N entr´es est appel´ un d´codeur. Assemblage de blocs de base. paragraphe 3.. montre l’utilisation de d´codeurs.

s’il y a lieu. Dans ces circuits les nombres d’entr´es. c’est la partie AND du PLA. x0 codant un naturel c e . Dans l’autre cas. Un circuit combinatoire re¸oit 4 entr´es x3 .1 Programmable Logic Array Les circuits existants On trouve dans le commerce des circuits nomm´s PLA ou PLD (Programe mable Logic Arrays ou Programmable Logic Devices). connectable ` un ordinateur personnel. sorties et. e monˆmes. Par exemple un PLA donn´ a 12 entr´es. x2 . c e e Des organisations proches des PLA peuvent ˆtre r´alis´es ` base de portes e e e a dans les circuits non pr´-existants. soit pour ´conomiser de la surface dans le e circuit.6 – Tables de v´rit´ des encodeurs et d´codeurs. L’utilisateur peut facilement personnaliser ces circuits pour y r´aliser des produits ou des sommes e de produits.2 2. e on a cherch´ une minimisation globale grˆce ` un outil de CAO.2. e 2. Les x et les Φ indiquent une e e e valeur non pertinente respectivement en entr´e ou en sortie. par des tableaux de Karnaugh.2 : Contrˆle d’un afficheur 7 segments o L’exemple retenu est tr`s classique. L’utilisateur claque des fusibles pour fixer : 1) quelle entr´e (normale ou e compl´ment´e) fait partie de quel monˆme .2 Synth`se syst´matique e e L’utilisateur cherche souvent ` minimiser le nombre de monˆmes de la a o fonction ou des fonctions ` r´aliser. 20 monˆmes et o e e e o 8 sorties. 2) quel e e o monˆme fait partie de quelle sortie . 8. et facilement commane a dable par un logiciel qui a re¸u les ´quations logiques en entr´e. Dans un cas on a proc´d´ ` une minimisation de chacune des fonctions.2. sont fix´s. e a a Exemple E8. o Le claquage (la ”programmation”) se fait dans un petit dispositif ´lectronique. e 2. Soit parce que le nombre total de monˆmes a e o est contraint par la technologie. Nous allons ´tudier un exemple de fonction r´alis´e sur un tel r´seau e e e e programmable PLA permettant de faire des sommes de produits. c’est la partie OR du PLA. e e a ind´pendamment des autres.174 Circuits combinatoires D´codeur e Entr´es e Sorties val e1 e0 s3 s2 s1 s0 100 0001 101 0010 110 0100 111 1000 0xx 0000 Encodeur1 Entr´es e Sorties e3 e2 e1 e0 s1 s0 0001 00 0010 01 0100 10 1000 11 Encodeur2 Entr´es e Sorties e3 e2 e1 e0 s1 s0 a 0000 ΦΦ1 0001 000 001x 010 0 1 xx 100 1 xxx 110 Fig. x1 . Nous l’avons d´j` rencontr´ dans le chae ea e pitre 2.

A gauche minimisation de chacune des fonctions. 175 x3 x2 x1 x0 a b c d e f g a f e g d b c Fig. a . ind´pendamment les e unes des autres.. Assemblage de blocs de base. 8.8 – Description symbolique des PLA r´alisant le codage pour un afficheur 7 sege ments. minimisation globale.7 – Affichage 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.2. 8. ` droite..

e e 2. Une telle r´alisation de fonction ` base de ROM est parfois utilis´e. c . Par exemple. x0 . C’est une tr`s bonne soe lution de paresseux ! La table de v´rit´ suffit ` d´crire la r´alisation. La partie droite de la figure 8. f et g. Les 7 sege ments se nomment a. En effet ` partir d’une configuration des 8 entr´es.7.x0 + x3 . Il d´livre 7 sorties activant 7 segments d’un afficheur.x1 + x2 . .x1 + x2 .x2 . il se peut que le r´sultat global soit e moins bon que pour une minimisation globale.x0 + x3 . g en a e fonction de x3 . La partie gauche de o e la figure 8. e. e e On cherche ` exprimer chacune des 7 fonctions bool´ennes a. c. d. Les outils modernes de Conception Assist´e par Ordinateur comportent de tels programmes de minimisation e globale. inscriptibles par l’utilisateur. 2. Ils sont dispos´s comme sur la figure 8. e o Pour chaque monˆme.x0 . Elle e a e est optimale du point de vue du temps de conception. La fonction du circuit e e e est de transcoder entre le code binaire des nombres et le code en segments allum´s et segments ´teints. Ainsi la troisi`me ligne repr´sente le monˆme x2 .176 Circuits combinatoires entre 0 et 15.1 M´moires mortes : une table de v´rit´ cˆbl´e e e e a e Les circuits existants Une m´moire morte de 256 mots de 16 bits r´alise 16 fonctions combie e natoires de 8 variables.2. a = x3 . e Les chiffres hexad´cimaux sont affich´s comme indiqu´. qu’on e ne peut plus appeler mortes.8 donne les diff´rentes fonctions. b. la m´moire morte d´livre 16 ee e e bits. a e habituellement interpr´t´e comme une adresse. avec une telle minimisation globale.x2 . on repr´sente par un point noir : quelles entr´es il o e e prend en compte (partie AND du PLA) .x1 Pour la solution globale on obtient 28 monˆmes diff´rents. minimisation globale Dans les r´alisations ` base de monˆmes. On trouve souvent dans les circuits programmables (FPGA) des petites ROM. dans quelles sorties il figure (partie OR du PLA).3 Minimisation locale. en portes ou en PLA.8 donne les diff´rentes fonctions. x1 . . La surface du PLA est en a o effet proportionnelle ` ce nombre. b et e.3.3 2.. re¸oivent le nom de Look-Up Tables (LUT). . Il est utilis´ e e o e par les fonctions a. un outil d´velopp´ par l’un des auteurs obtient 14 monˆmes e e o diff´rents. Si cette recherche est faite ind´pendamment a e pour chacune des fonctions individuelles. Chaque ligne figure un monˆme. Ces m´moires. le concepteur e a o cherche ` minimiser le nombre total de monˆmes. x2 .x0 + x3 . par programmation. On peut e e a e e aussi consid´rer cette solution comme un PLA avec tous les monˆmes canoe o niques. Pour la solution du transcodeur de 7 segments.

x3 + c1.x1 + c1. e Ainsi pour 2 bits de commande c1 et c0 et 4 bits de donn´e x3. Ils sont surtout une brique de base de e l’algorithmique cˆbl´e o` ils r´alisent la primitive de choix.1 Multiplexeurs Les circuits existants Un circuit combinatoire est d’usage fr´quent : le multiplexeur.3. et on r´alise un circuit combinatoire en collant ` cette expression. 2. Il r´alise la e e N s´lection parmi 2 entr´es de donn´es. e Structure interne du multiplexeur 4 voies vers 1. Le nombre d’entr´es e e e de commande du multiplexeur est le logarithme ` base 2 du nombre de bits de a donn´es.c0. Assemblage de blocs de base.4.9 – Repr´sentation symbolique des multiplexeurs 4 voies vers 1 et 2 voies vers 1.4 2. la sortie est ´gale ` l’entr´e x d’indice k.9..x2 + c1. e e e a 2. Elle constitue dans ce cas un multie e e plexeur 4 voies vers 1. x2. x0 e la sortie s est d´crite par l’´quation logique : e e s = c1.2.x0.2 Synth`se syst´matique e e Pour une fonction de 8 variables on forme les 256 monˆmes canoniques pour o exprimer la fonction sous forme de somme de produits ` partir de la table de a v´rit´.. x1.4. Ainsi de nombreux a e u e . La e a e r´alisation interne s’en d´duit ais´ment. e 2. Le sch´ma conventionnel des multiplexeurs 2 voies vers e 1 et 4 voies vers 1 sont donn´s figure 8.c0. 177 x3 x2 x1 x0 c1 c1 c0 11 10 01 00 c0 e1 e0 1 c s 0 x3 x2 x1 x0 s s Fig. 8.c0.c0. Si les bits c1 c0 codent l’entier k.2 Synth`se syst´matique e e Les multiplexeurs sont tr`s pratiques pour synth´tiser une fonction d´crite e e e par un graphe de d´cision binaire (BDD). Celle des entr´es s´lectionn´e est celle e e e e e e dont le num´ro est donn´ sur les N bits de commande.

e e notamment si la brique de base des circuits combinatoires est le multiplexeur.10 dans le chapitre 7). ee 3. donc en NAND de NAND. puis l’autre multiplexeur e e recevant les deux derniers bits de commande. Remarque : Attention le multiplexeur est orient´. nous montrons e e ici les r´sultats de deux m´thodes de conception sur un mˆme exemple.1 La question de la r´gularit´ e e Pour introduire la notion de r´gularit´ dans la conception. e e e 2. Les portes plus complexes correspondant par exemple ` (abc + de + f g) ne peuvent a provenir que d’outils de Conception Assist´e par Ordinateur. Pour cela on utilise un premier ´tage de 4 multiplexeurs en e parall`le recevant les mˆmes 2 bits de commande. Exemple E8. on peut r´aliser un multiplexeur e 16 voies vers 1. pour r´aliser une fonction bool´enne plus e e e g´n´rale.3. Ce n’est pas un aie guillage 4 voies vers 1 tel qu’il pourrait ˆtre r´alis´ avec 4 commutateurs (voir e e e la figure 7. L’essentiel de la difficult´ est la recherche de r´gularit´.3 : Cascades de multiplexeurs En utilisant 5 multiplexeurs 4 voies vers 1. e e e . Les m´thodes utie e lis´es alors consistent ` modifier les formes alg´briques (ou autres comme les e a e BDDs) des fonctions bool´ennes pour retrouver ou calquer (on parle de mape ping en anglais) les motifs correspondant aux ´l´ments de base disponibles. Algorithmique cˆbl´e : conception logique a e La conception logique a pour but de composer des fonctions bool´ennes. e e e 2.178 Circuits combinatoires outils de CAO partent d’une repr´sentation des fonctions bool´ennes en BDD.5.5 2.2 Synth`se syst´matique e e Le principal probl`me li´ ` l’utilisation de telles portes est que des proc´d´s e ea e e syst´matiques de synth`se ne sont pas toujours disponibles. On obtient facie e lement une expression en somme de produits. e e e e e 3.5.1 Portes complexes Les circuits existants Dans certains types de r´alisations des portes un peu complexes sont utie lis´es . e ´ventuellement assez complexes. par exemple les portes ORNAND et ANDNOR pr´sent´es figure 8. Le lecteur est convi´ ` examiner ea diff´rentes possibilit´s de choix d’affectation des bits de commandes soit au e e premier ´tage de 4 multiplexeurs en parall`le soit au deuxi`me.

10 e a e les bits d’entr´e et de sorties ne figurent que par leur num´ro. Il est ` noter que e e a cette r´gularit´ se retrouve souvent dans la topologie effective de la r´alisation e e e du circuit.3. nous connaissons une e d´composition de la fonction du circuit en fonctions ´l´mentaires. 366] (donc sur e 9 bits) vers son ´criture en D´cimal Cod´ en Binaire (donc sur 10 bits). chacune ´tant utilis´e dans deux blocs. la connaissance de la soe e e . Ce logiciel a travaill´ en aveugle uniquement ` partir de ces tables. 1) Par l’´tude de l’algorithme de conversion. l’assemblage it´ratif. 3 et 2 et d´livre 3 sorties. Il y a une e ee forte r´gularit´ dans la fa¸on dont se combinent ces fonctions ´l´mentaires.4 : Conversion binaire vers DCB Il s’agit d’une fonction bool´enne ` 9 entr´es et 10 sorties. 5. e e e e On d´nombre 4 niveaux de blocs entre les entr´es et les sorties. ou lin´aire. Par exemple le bloc repr´sent´ en gris´ re¸oit les 4 entr´es de e e e c e num´ro 7. Il a par ailleurs essay´ de regroue e per des fonctions qui utilisaient les mˆmes variables ou les mˆmes r´sultats e e e interm´diaires. e a Le logiciel cherchait ` synth´tiser ` partir de fonctions ` 3 ou 4 entr´es. Algorithmique cˆbl´e : conception logique a e 179 Exemple E8. e e e e La fonction ´tant une fonction arithm´tique. Dans la suite nous montrons 3 m´thodes d’assemblage de sous-circuits. e e e Chaque chiffre de l’´criture d´cimale est cod´ en binaire. Les deux e e a e rectangles marqu´s d’un point. Elles peuvent ˆtre obtenues par un proe gramme. et e e d’autres. le concepteur e cherche une r´gularit´ permettant de simplifier le travail. le sch´ma topologique du circuit serait simple.10. Sur la figure 8.10. pour obtenir le mˆme circuit e e e pour plus d’entr´es et de sorties. blanc ou noir. Le r´sultat est celui de la partie 1 de e e la figure 8. il suffit d’´tendre le sch´ma. Cette partie e e e e suppose connus les ´l´ments du chapitre 3 sur les repr´sentations des granee e deurs. pr´sentent de telles r´gularit´s. avec l’aide des auteurs d’un logiciel de synth`se logique. Le circuit e e convertit l’´criture binaire d’un naturel de l’intervalle [1. Il a de plus cherch´ ` minimiser le nombre de niveaux logiques e ea total entre les entr´es et les sorties. e e Dans tous les circuits ayant un grand nombre d’entr´es. Cela repr´sente un e e e e a e peu moins de 400 lignes de 10 bits. par exemple e e e 28510 = 1 0001 11012 = 10 1000 0101DCB . e donn´ la table de v´rit´ compl`te de ce circuit ` l’outil. Il a a e a a e essay´ de minimiser le nombre total de blocs. Tous les e rectangles repr´sentent la mˆme fonction ` 4 entr´es et 4 sorties. Cette e a e e d´composition donne la structure de la solution 2 de la figure 8. Tous les blocs ´tant identiques et leur e e disposition ´tant r´guli`re. On d´nombre 6 e e e e niveaux de blocs entre les entr´es et les sorties. ont une entr´e de moins ou e e une entr´e et une sortie de moins. e 2) Nous avons. Nous allons les ´tudier. e – Dans la premi`re. La plupart des circuits r´alisant des fonctions arithm´tiques. e e c ee Elle est li´e ` la r´gularit´ induite par l’algorithme de conversion.

C’est un exemple sans signification.180 Circuits combinatoires 7532 7543864876352 86 864875 642310 8 7 6 5 4 3 2 1 0 9 8 7 6 5 432 1 0 9 8 7 6 5 4 3 2 1 0 Solution 1 Solution 2 Fig. la fonction incr´mentation. Dans la premi`re fonction. symbolis´e par un ovale.10) utilise cette technique. symbolis´e par un carr´. Un exemple simple. e ee e – La troisi`me m´thode. Parfois les deux r´alisations de la fonction sur N/2 bits e doivent ˆtre compl´t´es pour permettre de r´aliser la fonction sur N bits. L’exemple r´el de l’UAL a e (Cf. Cette structure est proche de la structure d’arbre binaire. la connaissance de e e la solution pour le circuit travaillant sur N/2 bits permet de concevoir le circuit travaillant sur N bits. 8. e e e e une entr´e externe X est prise en compte pour chaque bit. Un c e e circuit traite deux vecteurs de n bits a et b. ou arborescent. ` la e a fa¸on d’une retenue.10 – Deux solutions pour la r´alisation d’une mˆme fonction e e lution pour le circuit travaillant sur N −1 bits permet de concevoir le circuit travaillant sur N bits. l’assemblage r´cursif.11. permet e ensuite de comparer diff´rentes m´thodes dans une ´tude de cas. c On parle de repr´sentation en tranches quand on fait apparaˆ e ıtre toutes les cellules qui participent ` la fonction globale. une information passe de bit en bit. g´n´rale.1 Assemblages lin´aires e Sch´ma en tranches. regroupe des blocs selon des r`gles de come e e e e position de fonctions quelconques. e Le circuit global est obtenu en r´p´tant N fois un circuit de base.2. e e e 3.2 3. Cette structure est proche de la boucle d’it´ration. . Pour chacune de ces m´thodes d’assemblage nous donnons un ou quelques e exemples typiques. Exemple E8. sch´ma en blocs e e Repr´senter un circuit r´sultant d’un assemblage it´ratif peut se faire de e e e deux fa¸ons repr´sent´es figure 8. Dans la troisi`me e e fonction. e e – Dans la deuxi`me. Le traitement se compose de la mise en s´rie de 3 fonctions.

selon e l’´quation : r0 = (si Add/Sub alors 0 sinon 1) = Add/Sub e Si l’op´ration est une addition. e Le calcul de la somme A+B se fait en ajoutant A. le compl´mentaire bool´en de B et 1. Exemple E8. B et 0. pour ajouter 0 ou 1. e e e On se sert du fil Add/Sub pour s´lectionner l’op´rande Q ` ajouter ` A.2.Bi + Sub. Puisque le circuit peut effectuer l’addition ou e a e la soustraction. on a Qi = Add. 1 si c’est une addition. La somme de deux naturels cod´s en binaire pur sur N bits est sur N + 1 e bits.6 : L’additionneur/soustracteur N bits On a vu au chapitre 3 que le calcul sur les vecteurs bool´ens donnant la e repr´sentation de la somme ou de la diff´rence. la retenue sortante C est le compl´mentaire e e . e 3. e e a a Pour chaque bit. on fabrique le report entrant r0 .3 (chapitre 3). Le calcul de la diff´rence A-B se fait en ajoutant A. Il peut effectuer l’addition de deux naturels ou de deux relatifs cod´s sur N e bits.9) utilise cette e repr´sentation.5 : L’additionneur N bits La mise en cascade de N additionneurs 1 bit constitue un additionneur N bits.Bi . Algorithmique cˆbl´e : conception logique a e 181 an−1 ai b0 a0 b n X n a A Add X S additionneur A 0 B Mux 1 B rn−1 r0 r Schéma en blocs s Schéma en tranches C multiplexeur Fig. repr´sentation convene e tionnelle de l’additionneur et du multiplexeur N bits On parle de repr´sentation en blocs quand on ne dessine que les fonctions e sur N bits. Ce fil vaut 0 si l’op´ration voulue est une soustraction. la retenue sortante C est le report sortant.3.2 Exemples : addition et soustraction de naturels Exemple E8. ou nappes de fils. De mˆme. Le sch´ma du circuit est donn´ figure 3.11 – Repr´sentation d’un circuit en tranches ou en blocs . On repr´sente alors par un trait gras les bus. e e Exemple E8. cod´e en binaire pur ou en e e e compl´ment ` 2. 8. e L’exemple du circuit de calcul du quanti`me (Cf. est le mˆme. e Si l’op´ration est une soustraction. il dispose d’un bit de commande Add/Sub.

13 rappelle e que des arbres de NAND et de NOR peuvent remplacer les AND ou les OR.12 – Additionneur-soustracteur N bits. Il fabrique 2N sorties bool´ennes sur 2N fils ` partir de N e a . Ce e e e e e calcul est utilis´ pour obtenir le bit de parit´ d’un mot qui vaut 1 si le mot e e a un nombre impair de 1. par exemple le AND ou le OR.12. e Tous les multiplexeurs sont command´s par le mˆme signal. Cette fonction est la somme modulo 2 ıt a e si l’on interpr`te les deux entr´es comme entiers plutˆt que comme bool´ens.7 : Le XOR g´n´ralis´ e e e On connaˆ la porte XOR ` 2 entr´es.8 : Le d´codeur N bits e Le d´codeur est pr´sent´ paragraphe 2. 8. Voir aussi l’exercice E8. Le bit d’oVerflow V est le XOR des deux derniers reports.182 Circuits combinatoires An−1 Bn−1 A0 B0 10 1 0 C V 10 10 10 Add/Sub Sn−1 Sn−2 S1 S0 Fig.3 Assemblages arborescents Exemple E8.13 – Arbres binaires de portes de ce report sortant. e e 3. e e o e Il est possible d’obtenir une somme modulo 2 de N entiers sur un bit (ou le XOR g´n´ralis´ de N bool´ens) en utilisant l’associativit´ de cette fonction. du circuit est donn´ figure 8. e e Arbre de OUEXCLUSIFs Arbre de ETs Arbres mixtes Fig. Exemple E8. Chaque carr´ est un additionneur 1 bit.1. Nous supposerons que son nombre d’entr´es N est une e e puissance de 2.15. Le sch´ma. Ce genre de technique peut s’appliquer pour toute op´ration associative. La figure 8. Nous nous int´ressons ici ` sa e e e e a r´alisation interne. 8. en tranches.

le circuit consiste en 1 seul inverseur.4 Assemblages g´n´raux e e L’expression d’une fonction bool´enne tr`s complexe comme composition e e de fonctions bool´ennes plus simples donne une organisation de circuits come binatoires. e e e e Montrons le passage de 2 entr´es ` 4 par un exemple (Cf. Il est tr`s facile de d´crire un tel circuit e a e e r´cursivement : e – si N vaut 1. Ils e a e a e N/2 ont chacun 2 sorties. Figure 8. pour p compris entre 0 e e a e et 15 : sp = sp div 4 AND sp modulo 4 c’est-`-dire : a s15 = s3 AND s3 s14 = s3 AND s2 jusqu’` s1 = s0 AND s1 s0 = s0 AND s0 a 3. Il suffit de coller la structure du circuit sur la structure de la combinaison de fonctions.14 – D´codeur ` 4 entr´es et 16 sorties. entr´es. 8. on dispose de deux d´codeurs ` N/2 entr´es. e a e e Un d´codeur D2 ` 2 entr´es e1 e0 d´livre les 4 sorties s3 s2 s1 s0 . tout va bien. ` partir de 2 d´codeurs ` 2 entr´es et 4 e a e a e a e sorties et de 16 portes AND. Algorithmique cˆbl´e : conception logique a e 183 e1 D2 e3 D1 e2 s”3 e0 D´codeur 2 vers 4 e s0 s1 s3 s”0 s10 Fig. Si on ne sait pas u exprimer la fonction bool´enne complexe. on obtient le d´codeur souhait´.3. e e e Dans les cas o` une composition est connue. Une seule des sorties est ` 1. e e e e – si N est sup´rieur ` 1. En combinant 2 ` 2 dans des portes AND ` deux a a entr´es les sorties des 2 d´codeurs.14). C’est le cas pour le circuit de calcul du quanti`me dans e l’ann´e pr´sent´ en exemple. e a Un d´codeur D1 ` 2 entr´es e3 e2 d´livre les 4 sorties s3 s2 s1 s0 . Les deux sorties sont l’entr´e et l’entr´e compl´ment´e. e a e e Les ´quations des sorties du d´codeur ` 4 entr´es sont. il ne reste plus que la table de v´rit´ e e e .

0 sinon.184 Circuits combinatoires et sa traduction vers une somme de monˆmes. e e e Un circuit re¸oit le code binaire d’une date. ıtre a – Un deuxi`me circuit > 2 d´livre 1 si le num´ro de mois est sup´rieur ` 2. Le circuit d´livre le code binaire du quanti`me de la date dans l’ann´e. ` partir du code DCB. ee a e exprim´e dans les algorithmes par des structures choix est r´alis´e par des e e e multiplexeurs. . selon un e e e code DCB. e e Exemple E8. e e e Exemple E8. – Un additionneur ajoute le num´ro du jour. Ceci est e u illustr´ dans le circuit d’Unit´ Arithm´tique et Logique. Cette date est compos´e d’un c e num´ro de jour dans le mois.10 : L’unit´ arithm´tique et logique e e L’unit´ arithm´tique et logique que nous ´tudions re¸oit deux nappes de fils A e e e c et B.9 : Le calcul du quanti`me dans l’ann´e e e Cet exemple a sa source dans [SFLM93]. e e e eme ` Ainsi le 3 mars est le 62 jour de l’ann´e les ann´es non bissextiles et le e e ` 63eme les ann´es bissextiles. Il a fait l’objet d’une vraie r´alisation e par un groupe d’´tudiants de maˆ e ıtrise d’informatique dans le cadre d’un projet europ´en de d´veloppement de l’enseignement de la micro´lectronique. e e e e a – Un circuit D´b donne sur 9 bits le code binaire du quanti`me du premier e e jour du mois les ann´es non bissextiles. Souvent ce choix commute avec d’autres op´rations et cette e commutation peut ˆtre exploit´e pour diminuer le coˆt d’un circuit. e 2 Encore un syst`me informatique avec le bogue de l’an 2000 ! e . e e e a On remarque que plusieurs fonctions sont Φ-bool´ennes car des codes binaires e d’entr´es ne repr´sentent pas des valeurs du domaine.12→334. Il s’agit de e e reconnaˆ un multiple de 4.. On fait e a ais´ment les 9 tables de v´rit´ correspondant ` cette fonction : 1→1 . Cela supe e u pose ´videmment connus les coˆts des multiplexeurs et autres blocs. L’ann´e est limit´e aux deux chiffres d´cimaux donnant l’ann´e dans e e e e 2 le si`cle . Chacun de ces deux chiffres d´cimaux est cod´ en binaire. e e Il y a peu de r`gles dans l’obtention de l’assemblage. . d’un num´ro de mois. cod´ sur e e e e 4 bits. e e e a 3→60. cod´ sur 5 bits. C’est une branche de e l’algorithmique. Elle d´livre une nappe F. sans plus. ` partir du code du mois.. C’est le cas pour le calcul du o nombre premier suivant pr´sent´ aussi. le num´ro du premier du mois e e et 1 si l’ann´e est bissextile et si le num´ro de mois est sup´rieur ` 2. Une propri´t´ toutefois est ` retenir : la s´lection. e Concevoir ce circuit suppose de connaˆ ıtre une m´thode de calcul. 2→32 . Ici on e retient la suivante qui repose sur des fonctions tr`s sp´cifiques de cette applie e cation : – Un premier circuit bis d´livre 1 si l’ann´e est bissextile.

on obtient la valeur xi = ei AND di . e a a Les s´lections des multiplexeurs 1. 8.16 – Op´rations de l’UAL e Op´ration 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. Figure 8. Algorithmique cˆbl´e : conception logique a e 185 année 8 4 5 Déb 9 >2 bis mois jour 9 Fig.17 – Commandes des multiplexeurs Les nappes peuvent ˆtre interpr´t´es comme des entiers ou des vecteurs de e ee bits.18 peuvent ˆtre e e obtenues ais´ment (Cf. L’UAL calcule. le quotient de B par 2 ou.3. di et la retenue entrante de l’additionneur. 2. sans l’interpr´tation e e enti`re.16). Il reste ` exprimer les commandes de e a chaque multiplexeur en fonction de com1 com0. le AND (bit ` bit) des nappes A et B. e a L’UAL comporte un additionneur. 8.15 – Circuit de calcul du quanti`me dans l’ann´e e e Op´ration e souhait´e e A+B A-B B div 2 A AND B Op´ration e r´alis´e e e A+B+0 A+B+1 B div 2 + 0 + 0 A AND B retenue entrante 0 1 0 – entr´e di e ai ai bi+1 ai entr´e ei e bi bi 0 bi sortie fi si si si xi Fig. . 8. Un dernier multiplexeur permet d’obtenir fi ´gal soit ` xi soit ` si . En utilisant e la sous-fonction AND pr´sente dans la fonction majorit´ de chaque tranche e e d’additionneur. la somme de A et B. 3 et 4 de la figure 8.17). on obtient les 3 r´sultats e e arithm´tiques en sortie si de l’additionneur (Cf. selon 2 bits de commande com1 com0. la diff´rence de A et B. En aiguillant les bonnes valeurs sur les entr´es ei . Figure 8.

Le remplacement de e certains multiplexeurs par des portes est fait dans la partie droite. une tranche e e de rang interm´diaire et la tranche de poids faible. Il d´livre le code binaire du nombre premier imm´diatement e e e sup´rieur ` A si A est premier. yN −1 . . Le circuit . Etude de cas Certains circuits peuvent donner lieu ` diff´rentes organisations car l’anaa e lyse de leur d´composition n’est pas unique. Les tranches repr´sent´es sont la tranche de plus fort poids. Nous montrons ici un exemple e d’un tel circuit.18. 8. Ces bits codent en binaire un naturel Y . e e Cela ne pose pas de probl`me pour les petites valeurs de N. . Ces e e bits codent en binaire un naturel X. xN −2 .11 : Le calcul du nombre premier suivant Ceci est un exemple d’´cole. . e a On ne connaˆ pas d’algorithme g´n´ral donnant ce r´sultat. x1 .12 : Incr´menteur e Un incr´menteur est un circuit combinatoire qui incr´mente le naturel pr´sent e e e en entr´e. y0 . . yN −2 . 0 sinon. . . Un circuit re¸oit le code binaire d’un naturel A e c cod´ sur N bits. la coder en binaire sous forme de table de v´rit´ et r´aliser le circuit e e e d’apr`s les expressions bool´ennes. x0 . Les entr´es sont une nappe de N fils xN −1 . Exemple E8. Les sorties sont une nappe de N + 1 fils yN .18 – UAL. e 4. Pour r´aliser ıt e e e e le circuit il ne reste qu’une solution : pr´-calculer la fonction sous forme de e table. . e Exemple E8.186 Circuits combinatoires ai bi+1 1 0 2 3 3 bi 1 ci 2 1 0 2 3 3 0 di Add ei ri si 4 4 4 Add Add ri+1 xi Add 4 fi Fig. . y1 . Un exemple analogue est propos´ en exercice E8.

P2 = x2 . le nombre de niveaux logiques entre entr´es et sorties et le nombre de portes (ou blocs) diff´rentes ` dessiner pour e e a pouvoir les assembler et obtenir le dessin global du circuit.w) = u ⊕ NAND (v. NAND (v. 3. w) t ⊕ (u. . il est de 1. . N ]. mais ce n’est pas tr`s ´conomique. Une seule e cellule physique ` dessiner (encadr´e). e e On obtient.19) Le nombre de portes est de l’ordre de N .v.x1 . ` base de AND ` 2 entr´es e e a a e (partie 4 de la figure 8.w) = t ⊕ NOR (u. chaque porte est diff´rente e e e e des autres. . On obtient des produits partiels Pi . e e i=j P1 = x1 . Etude de cas 187 ´tudi´ doit ˆtre tel que Y = X + 1.x9 .4. il est facile de former les Pi par des portes NAND par synth`se syst´matique. . elle est r´alis´e par un e e e e NAND suivi d’un inverseur. Plus g´n´ralement. Dupliquons ce circuit et connectons-le aux a a entr´es x15 . alternativement r´alis´es par un a e e e NAND ou un NOR (partie 3 de la figure 8. ce qui est ´quivalent. Malheureusement la a e e ee porte AND n’est pas une primitive physique en g´n´ral . e Une seule cellule physique ` dessiner (encadr´e). de l’ordre de 2N niveaux de portes. x8 . Elle comporte deux ´tages. . e e 2) Utilisation de portes AND ` 2 entr´es (partie 2 de la figure 8. . de l’ordre de N niveaux de portes. a e e Elle est r´p´t´e N/2 fois. Une solution consiste ` dessiner une porte ` N entr´es et ` n’en a a e a utiliser qu’une partie. Les crit`res pris e en compte sont le nombre total de portes. et g´n´ralement Pj = i=0 xi . . yk = xk ⊕ Pk−1 ou.19) Coma e plexit´ : de l’ordre de 2N portes. w)) Complexit´ : de l’ordre de 2N portes. Il suffit d’un ensemble de portes AND ` 2 entr´es a a e pour obtenir les Pi car.x0 . N − 1 entr´es (partie 1 de la a e figure 8. . Pour N grand cette technique ne e e fonctionne que si l’on dispose de portes ` nombre d’entr´es quelconque.x8 . e ee 4) D´composition r´cursive des produits partiels. .x0 . Les portes AND sont e e r´alis´es par des NAND suivies d’inverseurs. .x8 . e jusqu’` P15 = x15 . P8 = x8 .19) Cette solution repose sur les ´galit´s suivantes : e e u ⊕ (v. Cela conduit ` chercher une autre solution. le nombre de niveaux est de log2 N . La r´gularit´ est tr`s mauvaise. e e e Introduisons les produits interm´diaires Pi d´finis par : P−1 = 1. pour i de 8 ` 15 : Pi = Pi . pour tout k dans l’intervalle [0. yk = xk ⊕ Pk−1 . Chaque bloc est redessin´ deux fois (encadr´). .P7 a Le nombre de portes est de l’ordre de 2 × N × log2 N portes. Dans e e . . a 3) Utilisation de portes AND ` 2 entr´es. . est r´p´t´e N fois. . Ce a e n’est en g´n´ral pas le cas. P0 = x0 . x0 . P9 = x9 . e La r´alisation de l’incr´menteur suppose donc la r´alisation des produits e e e partiels Pi .19) Voyons comment on passe du circuit ` 8 entr´es au a e circuit ` 16 entr´es. Si N est petit (3 ou 4). . Supposons connu le circuit qui fabrique les Pi pour i allant a e de 0 ` 7 ` partir des x7 . Le nombre de niveaux est optimal. 1) Utilisation de portes AND ` 2. . examinons diff´rentes e e e e e solutions dans la fabrication des Pi avec des NAND et NOR.

concevoir le circuit combinatoire qui transcode dans e un sens. dans l’autre. La mise au point de cette solution est un excellent exercice. E8. e e e Dans cette solution aussi il conviendrait de remplacer les cascades de AND par des cascades de NAND et de NOR. e Essayer d’autres expressions du XOR. . 5. comparer. Faire les sch´mas correspondants . 8.19 – Diff´rentes solutions pour la r´alisation de l’incr´menteur. Exercices E8.13 : De toutes les couleurs Reprendre les codes des couleurs dans le d´but du chapitre 3. e compter les transistors.188 Circuits combinatoires x0 P1 P0 1 P2 P1 P0 2 4 3 P3 P7 P1 P0 Fig. alternativement. Pour les couleurs e cod´es dans les deux codes. il faut dessiner le dernier ´tage de portes r´alisant les AND avec e e le dernier produit de l’´tage pr´c´dent. r´aliser la fonction XOR. Les portes XOR e e e ne sont pas dessin´es dans la solution 4 e chaque bloc. En se servant des sch´mas en transistor de la figure 7. compter e les transistors de la r´alisation du XOR.9 du chapitre 7.14 : R´alisation du XOR e a e e Avec une porte s = (ab + c) et un NOR ` 2 entr´es.

Nous allons esquisser 5 solutions ` ce probl`me. Concevoir e e un circuit C” qui combine les quatre sorties des deux circuits C’ et d´livre e deux sorties Z et T. Chapitre 2). mais N entr´es. T vaut 1 si une seule e des entr´es vaut 1. n’ayant que N − 1 entr´es et deux sorties e e Z et T. e e 3 Apr`s ˆtre all´ au NOR. Z vaut 1 si aucune a e des entr´es ne vaut 1. . NAND ou NOR ` nombre quelconque d’entr´es en se servant de a e NAND ` au plus 4 entr´es. e E8. Etudier le circuit de multiplication. Se persuader que le circuit ` deux entr´es obtenu est un circuit combinatoire. a e – Id´e 1 (fonctionne bien pour N petit) : faire la table de v´rit´ de S. C’ a deux sorties Z et T. Construire C comme circuit r´cursif par mise en arbre e de circuits C”. en d´duire le circuit. Au lieu d’une it´ration en ligne. il faut penser e a ` une it´ration en matrice. e soit ´gal au report entrant pour les entr´es 01 et 10. T vaut 1 si une seule des entr´es vaut 1. donner e e e l’´quation de S. a e a De mˆme3 donner le sch´ma d’une fonction NAND ` 8 entr´es n’utilisant e e a e que des NAND et NOR ` 2 entr´es.16 : Multiplieur Reprendre la technique de multiplication des naturels dans le chapitre 3. a e G´n´ralisation : donner la r`gle g´n´rale permettant de r´aliser toute fonce e e e e e tion AND. Supposer que l’on sait faire e un circuit C’ ` N/2 entr´es.18 : Un seul 1 Soit une nappe de N fils xN −1 . R´soudre le cas e e particulier du premier ´tage.5. de NOR ` au plus 3 entr´es et d’inverseurs. Penser ` une organisation arborescente. Brassens) e e e a . Ce sont les entr´es d’un circuit e combinatoire C. combin´ avec C’ donne un e e circuit ayant mˆme comportement que C’. x0 . Z vaut 1 si aucune des entr´es ne vaut 1. Exercices 189 E8. OR. La sortie S vaut 1 si et seulement si un seul des xi vaut 1. Il est aussi possible de donner une description e r´cursive de la solution. x1 . e e – Id´e 2 : concevoir un circuit C’. .(c + d) = a + b + c + d En d´duire le sch´ma d’une fonction NOR ` 8 entr´es n’utilisant que des e e a e NAND ou NOR ` 2 entr´es. e – Id´e 3 : supposer que N est une puissance de 2. On peut donc le reboucler e e sur le report entrant.17 : Un circuit combinatoire avec un cycle Prendre un additionneur 1 bit. a e a e E8. R´soudre le cas particulier du premier ´tage. Construire C e e comme circuit it´ratif par mise en cascade de circuits C”. xN −2 . Concevoir un circuit C” qui.15 : Des grandes portes avec des petites En utilisant les r`gles de De Morgan (Cf. E8. . il faut qu’on pense ` faire NAND (G. montrer que e (a + b). Reboucler le report sortant sur le report entrant. . a e Indication : le report (sortant) est soit constant pour les entr´es 00 et 11.

e Utiliser deux tels circuits pour la nappe des xi . Simplifier le circuit qui calcule le nombre de 1 pour tenir compte du fait que dans cet exercice on n’a pas besoin du nombre de 1. du nombre d’´tages de portes pour N valant 4... 64 et 256. le premier 1 dans un sens est aussi le premier 1 dans l’autre sens. celle dont le a a rang est le rang du premier 1 de la nappe d’entr´e. e a – Id´e 5 : concevoir un circuit qui re¸oit une nappe de N fils et d´livre une e c e nappe de N fils. S’aider d’un outil de Concepe tion Assist´e par Ordinateur. Si il y a un seul 1. Etudier les 5 solutions du point de vue du nombre de portes. 16.). l’autre pour l’ordre inverse. l’un pour un ordre. Concevoir un circuit qui d´tecte si ce nombre de 1 est sup´rieur ` un. Les deux nappes sont ordonn´es (de droite ` gauche. La notion de premier fait r´f´rence ` cet ordre. e . ou e e a nul. de e a haut en bas. Les sorties ee a de ce circuit soit sont toutes ` 0. seulement de savoir s’il est sup´rieur ` un ou nul. soit sont toutes ` 0 sauf une.190 Circuits combinatoires – Id´e 4 : se persuader qu’un additionneur un bit donne le nombre de 1 e parmi trois fils d’entr´es. En utilisant un ensemble d’additionneurs un bits e concevoir un circuit qui donne le nombre de 1 parmi une nappe de fils.

` des instants diff´rents. Un cas particulier de ce type d’affectation est : x ←− f(x. il s’agit de savoir comment r´aliser la fonction d’afc e e e fectation des langages de haut niveau : x ←− f(a. b ou c est modifi´e (comportee ment asynchrone) ou ` des instants fix´s par une entr´e sp´cifique ne d´pendant a e e e e pas des autres entr´es (comportement synchrone). o` nous expliquons comment de la m´moire u e peut ˆtre fabriqu´e ` partir d’´l´ments de m´morisation de base (nous e e a ee e partons du bistable ´tudi´ au chapitre 7). Chae e pitres 10. Dans ce chapitre nous ´tudions les ´l´ments de m´morisation permettant e ee e de r´soudre les probl`mes abord´s ci-dessus sous les deux aspects : e e e – la vision externe. Ces ´l´ments sont aussi utilis´s dans les dispositifs de traiteee e ment de l’information dont naturellement les processeurs (Cf. e e Des ´l´ments de m´morisation sont aussi n´cessaires pour r´aliser des maee e e e chines s´quentielles telles que nous les avons d´finies au chapitre 5 (Cf. Nous avons d´j` parl´ de e ea e ces aspects au chapitre 6 et dans ce livre nous nous limitons aux circuits synchrones. structurelle. e). On la lit par exemple. nouveau-x ←− f (ancien-x. Ce n’est pas une ´quation de point a e e fixe. e). Chapitre 14). c). o` nous voyons qu’un processeur connect´ u e a ` de la m´moire peut ´crire une information dans la m´moire ou lire une e e e information pr´c´demment m´moris´e en envoyant des signaux de come e e e mande a cette m´moire. comme dans un langage de programmation usuel. D’une fa¸on g´n´rale. La m´morisation peut e avoir lieu chaque fois qu’une des variables a.Chapitre 9 El´ments de m´morisation e e Un ordinateur est muni de composants permettant de stocker les donn´es e et les programmes . e) o` u les deux instances du nom x correspondent aux valeurs de x sur une mˆme e nappe de fils. nous avons parl´ du tableau MEM au chapitre 4 et nous e reparlerons de m´moire dans les chapitres ult´rieurs. b. fonctionnelle. Une m´moire ne permet que les affectations de ` e e type x ←− f(a. 11 et 14). . b. e e – la vision interne. c) . Nous montrons aussi quels e e ´l´ments de m´morisation conviennent pour r´aliser une affectation du type ee e e x ←− f(x. on ne peut pas lire et ´crire ` un mˆme emplacement e a e dans la m´moire d’un ordinateur dans le mˆme instant.

Chapitres 10.1-a). a il n’est pas possible de le charger avec une valeur particuli`re .1-b pour le montage). Tel que (Cf. La deuxi`me consiste e e a ` intercaler un multiplexeur entre les deux inverseurs .1. nous pr´sentons les composants ´l´mentaires utie ee lis´s pour m´moriser de l’information et pour construire des circuits e e s´quentiels. Fie e gure 9. e ee verrou Bascule RS Une bascule RS poss`de deux entr´es R (Reset) et S (Set) permettant de e e forcer l’´tat respectivement ` 0 ou ` 1. Lorsque nous utiliserons des ´l´ments de m´morisation ee e dans des assemblages complexes (Cf. Nous pr´sentons ensuite la notion de m´moire dans un ore e e dinateur (paragraphe 2. dans ce livre nous nous limitons e e aux circuits synchrones. Nous nous int´ressons au cas k = 1. a Par essence. e). e a a . nous a e a ´crivons x’. Consid´rons une chaˆ de 2k (k ≥ 1) inverseurs. et deux sorties Q1 et Q2. Cela conduit ` des ´quations du type x = f(x. e e 1. u e a e Pour distinguer une variable x ` un instant et la mˆme ` l’instant suivant.) puis comment est construite une m´moire ` e a partir de cellules ou points m´moires ´l´mentaires (paragraphe 3. nous obtenons un circuit s´quentiel ` deux ıne e e a ´tats stables. 11 et 14). e 1. e) : la nouvelle valeur de e e e e x est fonction de son ancienne valeur et de e.1 1.1 Points de m´morisation ´l´mentaires : bascule RS. e e mais on ne peut y ´crire. On obtient ainsi un circuit avec deux entr´es de commandes. L’´quation pr´c´dente devient : x’ = f(x. ce montage est appel´ e verrou construit ` partir du bistable (Cf. Points de m´morisation de bits : bascules e et registres Dans le chapitre 7.). nous avons d´crit le comportement ´lectrique de certains e e points m´moire. Comme nous l’avons pr´cis´ en introduction. Figure 9. il peut ˆtre lu. Le e ee paragraphe 4. le bistable ne peut que fournir sa valeur ` un autre composant. e Nous allons ´tudier deux r´alisations permettant de forcer une valeur en e e entr´e du circuit.4-a). ou bistable. pr´sente des optimisations et des r´alisations de m´moire e e e particuli`res. La premi`re consiste ` remplacer les inverseurs par des portes e e a NOR (ou NAND).192 El´ments de m´morisation e e Dans le paragraphe 1. la sortie de e e ıne l’un ´tant connect´e ` l’entr´e du suivant. e a e o` les deux occurrences de x d´notent des valeurs de x ` des instants diff´rents. e appel´ bascule RS (voir la figure 9. Si nous rebouclons la sortie de la e e a e chaˆ d’inverseurs sur l’entr´e. les valeurs des variables seront examin´es ` des instants d´finis par un signal en g´n´ral e a e e e p´riodique appel´ horloge. les points de m´morisation sont des circuits o` l’une des sorties e u reboucle sur l’une des entr´es.

on tirerait les ´quations : Q1 = R + Q2. . ` ceci pr`s que Q2 change avant a a a a e Q1. les sorties Q1 et Q2 sont ` 0. Cette situation n’´volue pas tant que les a e deux entr´es restent stationnaires. la e e premi`re ligne se lisant : si les entr´es S et R sont ` 0. NOR(x. Lorsque R repasse ` 0. la sortie Q1 reste ` la e e a a valeur qu’elle avait pr´c´demment et donc Q1’ = Q1. 9. d´lai faible et born´. le raisonnement est le mˆme. Points de m´morisation de bits : bascules et registres e 193 R Q1 R S Q Q (a) S (b) Q2 (c) Fig. la bascule est ´quivalente ` un bistable. Lorsque e a e e S passe ` 1. Apr`s un autre d´lai.1 – a) le bistable b) la bascule RS r´alis´e avec des portes NOR c) le symbole e e logique de la bascule RS Nous allons d´tailler le fonctionnement d’une bascule RS r´alis´e ` partir e e e a de portes NOR (voir pour le montage la figure 9.(S + Q1) et Q2 = S + R + Q2 = u S. Q2 les valeurs de e e la bascule ` un instant donn´ et Q1’.1. Q2’ les nouvelles valeurs. Q2 passe ` 0 et Q1 passe ` 1. alors l’´tat reste stable. ce qui justifie les noms habituels Q et Q. ` un instant a e a imm´diatement ult´rieur.1-b) : – Lorsque R et S sont stables ` 0. Cela constitue le plus souvent une erreur e d’initialisation. e La stabilisation des sorties ne peut avoir lieu exactement au mˆme instant e que le changement de l’entr´e. a e – Par sym´trie. ` partir de l’´tat stable. ` cause du temps de commutation de chaque e a porte. Q2 = e e S + Q1. Plus pr´cis´ment. nous notons Q1. – Lorsque S (respectivement R) est ` 1 et que R (respectivement S) passe ` a a 1. Q1 et Q2 sont a compl´mentaires. D’o` Q1 = R + S + Q1 = R.1-b. e e e Nous ne prenons pas en compte de fa¸on chiffr´e ce d´lai mais seulement son c e e existence et notons que les valeurs en entr´e et en sortie sont consid´r´es ` e ee a des instants successifs. e e a oe Du sch´ma de la figure 9.(R + Q2). Remarquons que lorsque R et S ne sont pas tous deux ` 1. e e on obtient les ´quations donn´es ` cˆt´. apr`s un e a a e d´lai de commutation de la porte NOR. Il existe ainsi un d´lai de stabilisation de la bascule. e e La table d’´volution des valeurs de la bascule est donn´e ci-dessous. Q2 passe ` e e e a 1. 0) = x. le passage de R ` 1 fait passer Q1 ` 0. En a e a effet. A partir de cette table. – A partir de cet ´tat stable.

R + R) S.194 El´ments de m´morisation e e S 0 1 0 1 R Q1’ 0 Q1 0 1 1 0 1 0 Q2’ Q2 0 1 0 Q1 Q2 = = = = = = Q1.(Q1.(Q1 + S) Q2. En revanche.R R. Q1 = Q2 ce qui justifie le sch´ma logique de e la figure 9. la sortie Q passe ` 0.Q.1-c. Les poine till´s repr´sentent les instants de changement de Q1 et Q2. si R vaut 1.Q + S = S.(Q2. si R vaut 0 et S vaut 1.2 – Chronogramme du comportement logique id´al d’une bascule RS. Q = R. Q passe ` 0.S. la remise ` 0 est prioritaire sur la mise a a a a ` 1 : en effet.Q + R . Sinon.(Q + S). Donc. Q a passe ` 1) et la mise ` 1 est prioritaire sur la mise ` 0.S. 9. e Le chronogramme de la figure 9. la sortie est conditionn´e ` la valeur de S : si S vaut 1.(Q2 + R) R S Q1 Q2 temps Fig.S + S) R. La bascule RS peut ˆtre aussi r´alis´e avec des portes NAND.R + S. Avec la bascule RS ` portes NOR. si R vaut 1 et S vaut 0.R S.S = R. la sortie Q vaut 1 sinon e a 0. Les entr´es e e e e de commande sont actives ` 0 (lorsque R=S=1.S = 1.Q. e e On remarque que si R.R + S. a a a La table d’´volution de la bascule et sa d´finition ´quationnelle sont alors : e e e S 1 1 0 0 R 1 0 1 0 Q Q 0 1 1 Q Q 1 0 1 Q Q = R.2 montre le comportement temporel logique de la bascule RS. la nouvelle valeur est ´gale ` a e a l’ancienne. dans le cas o` R et S valent 1.R = S. les sorties Q1 et u Q2 ne sont pas compl´mentaires.

2 Points de m´morisation pour les circuits e s´quentiels : bascule maˆ e ıtre-esclave.4) poss`de une entr´e de donn´e D (pour Data).D) En rapprochant cette ´quation de celle de la bascule RS ` portes NOR : e a Q = R. e a e a La sortie Q est fig´e et sa valeur est celle de l’entr´e D au moment du front e e descendant de En. Nous l’obtenons en transformant l’´quation pr´c´dente : e e e Q’ = En. Figure 9.Q = (En + D)(En + Q) = D.1. Q. on obtient la r´alisation e donn´e dans la figure 9. e) en nous lie mitant aux syst`mes synchrones o` la progression des valeurs de x est cadenc´e e u e par un signal (g´n´ralement p´riodique) appel´ horloge. 1. e Un autre montage peut ˆtre envisag´ en rebouclant directement la sortie e e du multiplexeur sur son entr´e. on montre une r´alisation de vere e rou ` partir d’un multiplexeur. e e e e .En. Lorsque En est ` 0. e e e qui est la valeur ` m´moriser.D et S = En. bascule sensible au front Nous avons dit pr´c´demment que nous souhaitions r´aliser des fonctions de e e e m´morisation permettant des affectations de la forme x ←− f(x. En effet.2 Verrou Un verrou (Cf.D + e e En. par construction.(Q + En. On retrouve l` e e l’´quation du verrou en notant que Q=Q. par exemple ` partir d’un bise e e c a table en intercalant un multiplexeur entre les deux inverseurs (Cf. ce montage interdit e R = S = 1.(Q + S).D.4a a). Il est donc possible e de ne pas intercaler d’inverseurs (en nombre pair) entre la sortie du multiplexeur et l’entr´e.D.D = En.D + En.Q.En. Points de m´morisation de bits : bascules et registres e 195 1. Dans la figure 9.1.3 illustre ce comportement.D. a e e e a Remarquons que nous retrouvons cette r´alisation ` partir de l’´quation : e a e Q’ = En.D + En. a e e Lorsque l’entr´e En est active (En=1). Nous proposons une derni`re r´alisation d’un verrou ` partir d’une bascule e e a RS. et une entr´e de commande En (pour Enable). le verrou est dit transparent et sa sortie e Q est ´gale ` la valeur de l’entr´e D apr`s un petit d´lai appel´ temps de e a e e e e travers´e du verrou. le montage est ´quivalent ` un bistable. Notons que.4-b.En + Q. La d´finition ´quationnelle du verrou D est : Q = En.4-d. la r´alisation d’un multiplexeur dee e mande l’utilisation de portes. Le chronogramme de la figure 9.D + Q.(En + D) = En. avec R = En.Q = En. lui-mˆme r´alis´ ` partir de portes NAND. induisant ainsi un d´lai de commutation lorse qu’on effectue le rebouclage de la sortie sur l’entr´e.Q. L’´quation d´duite de la figure est : Q = En. Le verrou peut ˆtre r´alis´ de plusieurs fa¸ons.En. Figure 9.D.

3 – Chronogramme du comportement logique d’un verrou D En 10 D (a) En D D En Q Q En (b) R S Q Q Q (c) (d) Fig. d) r´alisation a e d’un verrou ` partir d’un multiplexeur seul (en gris est repr´sent´ l’int´rieur a e e e du multiplexeur). c) symbole logique d’un verrou. a) r´alisation e e d’un verrou ` partir d’un bistable et d’un multiplexeur. b) r´alisation d’un a e verrou ` partir d’une bascule RS. 9. 9. .4 – Trois r´alisations d’un verrou de type D et son symbole logique.196 El´ments de m´morisation e e En D Q temps Fig.

. Si En a e reste ` 1 pendant un temps sup´rieur au temps de travers´e de la porte NAND. x2 = x1 + 1. c’est-`-dire un e a a dispositif pour lequel l’´tat transparent est limit´ ` un tr`s court instant au e ea e moment du front montant (ou descendant) de l’horloge. et donc D0 passe alternativement de 1 ` 0 et de 0 ` 1. x2 . i3 .Q D = e. D0 = Q0. connect´e ` e e a l’entr´e En des verrous. Nous avons les e ´quations suivantes : e Q’ = En. (Cf.Notons x0 . r´alis´ avec un verrou. Dans le circuit combinatoire qui fabrique D0. x1 . dont e l’entr´e d’activation est connect´e au signal p´riodique En (par exemple l’hore e e loge) et l’entr´e D est reli´e ` la sortie d’une porte NAND ` deux entr´es. Nous ´tudierons de fa¸on e c syst´matique ces fonctions au chapitre 10. R´duire la dur´e de l’´tat haut de l’horloge pour ´liminer le probl`me n’est e e e e e pas r´aliste. Ceci peut donner une valeur quelconque lorsque H repasse ` 0.1. si l’entr´e e vaut 1. e). e changent n’importe quand par rapport aux instants fix´s par H.2. i3 et i4 (Cf. le verrou est stable. i4 . cadence les ´volutions de x aux instants i0 . Figure 9.5-b). Il change ` chaque addition puisqu’on ajoute des nombres a impairs . Points de m´morisation de bits : bascules et registres e 197 Un verrou ne convient pas pour ce genre de r´alisation car il ne permet pas e de commander les instants o` la m´morisation a lieu. Supposons que l’on veuille r´aliser e e x’ ←− x + e avec x et e entiers (Cf. Les fils d’entr´e e. i2 . Figure 9. a e e la sortie Q et l’entr´e D peuvent passer successivement de 1 ` 0 un nombre e a ind´termin´ de fois et donc fournir un r´sultat incoh´rent. les valeurs e de x ` ces mˆmes instants sont respectivement : x1 = x0 + 1. x3 et x4 les valeurs successives de x.D + En. a a Le verrou ne peut donc pas ˆtre ` la base de r´alisation du comportement e a e x ←− f(x. Quand H vaut 1.5-c). Si l’horloge H vaut 0. . eux. on a Q’=D et D=Q. e e a a e Cette porte NAND a pour entr´e e et la sortie Q du verrou. e e .Q Pendant que En est ` 1. a e x3 = x2 + 3 et x4 = x3 + 7. i1 . nous u e pr´cisons pourquoi le verrou ne convient pas et nous montrons des solutions e pour r´soudre le probl`me.1 Probl`me de rebouclage du verrou e e e Etudions le circuit dont l’´quation est x=x. La solution consiste alors ` construire une bascule. le verrou est transparent et Q0 suit les variations de D0. D’apr`s les e e valeurs de e observ´es aux instants i1 . Dans ce paragraphe. i2 . a a On ne peut pas contrˆler combien de fois l’inverseur inverse pendant que o H est ` 1. e e 1. il ne se passe rien. Observons le bit de poids faible de x m´moris´ dans le verrou d’entr´e D0 e e e et de sortie Q0.e. e e e e Illustrons ce comportement incoh´rent dans un circuit r´el effectuant un e e calcul sur des nombres cod´s sur n bits. On veut que l’horloge H. Figure 9.5-a). . donc D0 = Q0.

en g´n´ral une horloge. m´morise l’entr´e D lorsque En1. Pendant ce temps. Lorsque e e H prend la valeur 0. La sortie a a Q change lorsque le signal H passe de 1 ` 0. Une bascule ` front montant (respectivement desa . Le temps pendant lequel H est ` a a 1 doit ˆtre sup´rieur au temps de travers´e du verrou.2.198 El´ments de m´morisation e e e ADD x Q0 D0 En x’ instants fix´s e i0 par H x e x0 1 i1 x1 1 i2 x2 3 i3 x3 7 i4 x4 (b) valeurs de x et e aux instants fix´s par H e e (impair) ADD Qp Dp En H (a) R´alisation de l’affectation x’ ←− x + e e x est repr´sent´ sur p bool´ens e e e m´moris´s dans p verrous e e D0 Q0 transparent 1 (c) H=1 : verrou transparent Fig.2 Bascule de type maˆ ıtre-esclave Une bascule de type maˆtre-esclave est construite en connectant en s´rie ı e deux verrous command´s par des signaux compl´mentaires. puisque En2=0. appel´ maˆ e ıtre. une entr´e d’activation H a e e e et une sortie Q. la sortie Q reste stable e e e pendant que le signal H est ` 1 ou pendant que le signal H reste ` 0. La bascule D ` front montant (respectivement descendant) est a caract´ris´e par le fait que sa sortie Q est stable entre deux fronts montants e e (respectivement descendants) du signal connect´ sur H. Le premier verrou.3 Bascule D ` front a Une bascule D ` front a une entr´e de donn´e D. e e e La valeur de la sortie est celle de l’entr´e D au moment du dernier front mone tant (respectivement descendant) de H.5 – Probl`me pos´ par la nature transparente d’un verrou e e 1.6 e e et 9. e e e 1. Les figures 9. la a e valeur m´moris´e par le second verrou reste stable. Il est donc n´cessaire que l’entr´e D e e soit stable pendant le front.7 donnent respectivement le montage et un exemple de chronogramme. est ` 1 : la sortie Q1 suit l’entr´e D (D1=D). c’este e a `-dire H. 9. le contenu du premier verrou reste fig´ et est transf´r´ e ee dans le second verrou qui devient actif (En2=1) et m´morise donc la valeur e pr´c´demment stock´e dans le premier verrou.2. Ainsi.

9. 9. Avant le premier front montant de H. 9.8 – Une r´alisation de la bascule de type D ` front descendant et son symbole e a logique .6 – Bascule de type maˆ ıtre-esclave H D Q1 Q Fig. Points de m´morisation de bits : bascules et registres e 199 D D1 Q1 En1 D2 Q2 En2 Q H Fig. e e R1 H S1 R2 D S2 Q1 Q1 Q2 Q2 R3 S3 Q3 Q3 Q D Q H Q Q Fig.7 – Chronogramme d´crivant le comportement de la bascule maˆ e ıtre-esclave.1. Q1 est ind´termin´.

La sortie reste ` 0. dont les entr´es sont pilot´es par H et D. e a e Il y a deux niveaux de bascules : – la bascule en sortie RS3. Q1 = 1 et R2=1. et R2=1 d’apr`s (4).9 montre l’´volution de la sortie Q de la e bascule ` front descendant en fonction de l’entr´e D. D’o` R3=1 . Q1=0 d’apr`s (2) et (3). si l’entr´e D reste stable pendant que H passe de e e 1 ` 0. Lorsque H repasse ` 1. Il en r´sulte que S2=0. tant que H reste ` 0. e a Consid´rons l’´tat initial H=1. nous obtenons S1=0 d’apr`s (2). alors S2=1. a e e Q2=1. et donc S3=0 . a e Du point de vue de la r´alisation. Nous obtenons Q1 = 0.8. a Le chronogramme de la figure 9. a e u Puisque R1=1 d’apr`s (3). la sortie Q3 reste stable jusqu’au front descendant suivant. La sortie de la ıne e bascule Q3 est 0. Donc R3 passe ` 0 et S3 reste ` 0 : la sortie e a a reste inchang´e. La bascule RS3 est forc´e ` 1. En e e e e appliquant les ´quations. Nous faisons l’hypoth`se que D reste stable pendant que H passe de 1 ` 0. Lors du passage de H ` 0. la sortie Q3 reste stable. en technologie CMOS. la bascule ` front e a utilise autant de transistors qu’une bascule maˆ ıtre-esclave c’est-`-dire deux fois a plus qu’un verrou. Q2 = 0. La e a r´alisation avec 3 bascules RS ` portes NOR est donn´e dans la figure 9.(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. e Supposons qu’` l’´tat initial. R3 =0 . u a e Nous avons montr´ que. R2 = 1. a e Comme R2=0 et S2=1. e e Les ´quations de la bascule ` front sont : e a S2 Q1 R3 S3 R1 Q3 = = = = = = D S1. Q1 = 0. et – les deux bascules RS1 et RS2. Q2=1. on ait en plus D=0. nous obtenons les r´sultats partiels suivants : S1 = e e 1. Nous d´crivons le comportement de la bascule ` front descendant. la bascule RS3 ne change pas d’´tat et la sortie Q3 est stable. e Si ` l’´tat initial D=1. qui pr´c`de le front descendant de H. dont les entr´es sont pilot´es par les sorties des e e bascules RS1 et RS2. Par un raisone a nement analogue au cas o` D=0 ` l’´tat initial. Q2=0. Il s’ensuit a a a e que R3=1 et S3=0 . Par ailleurs.200 El´ments de m´morisation e e cendant) peut ˆtre r´alis´e ` partir de 3 bascules RS NAND (respectivement e e e a NOR). . Ensuite. Donc. R1=0. nous obtenons Q1=1. e le fait que R2=1 entraˆ Q2=0 d’apr`s (4). S3 =0 . R1=1.

Figure 9. 9. Q2 passe ` son tour ` 1 et a e e a a S passe ` 0.9 – Chronogramme d´crivant le comportement de la bascule ` front descendant e a 1. on fera figurer sur les bascules les entr´es de commande e et d’initialisation.10 d´crit un dispositif permettant la d´tection d’un passage.4 Un exemple de circuit utilisant des bascules ` front : a le d´tecteur de passage e Le d´tecteur de passage. L’ensemble des e bascules a l’entr´e d’horloge connect´e ` l’entr´e d’horloge du circuit et des e e a e groupes de bascules peuvent avoir l’entr´e de chargement en commun.1.11).3 Autres commandes associ´es ` une bascule e a Pour certains circuits complexes. Notons que dans certaines documentations l’entr´e de chargement est appel´e e e enable ce qui peut entraˆ ıner une certaine confusion avec le verrou. . Q1 et S passent ` 1. e e e La figure 9. pour l’initialisation Preset (ou Set) et Clear (ou Reset) forcent respectivement la valeur de la bascule ` 1 et a a ` 0. Si l’entr´e e passe a e a ` 1. e En interne. est un montage s´quentiel qui ´chappe aux techniques de a e e r´alisation syst´matique que nous ´tudions au chapitre 10. Points de m´morisation de bits : bascules et registres e 201 H D Q Fig. soit d`s qu’elles sont ee a e actives (initialisation asynchrone).2. On obtient une impulsion de S d’une demi-p´riode apr`s chaque a e e transition de 0 ` 1 de l’entr´e. La sortie Q2 prend ainsi la valeur de la sortie Q1 avec une demi-p´riode de retard. il est indispensable d’introduire une nouvelle entr´e dite de commande de chargement sur les bascules. e e La sortie Q1 prend la valeur de l’entr´e e aux fronts descendants de H et e la sortie Q2 recopie Q1 aux fronts montants de H. ces entr´es sont e consid´r´es soit ` un front (initialisation synchrone). e Supposons que les deux bascules soient initialement ` 0. par exemple. Selon la structure interne de la bascule. On peut ajouter d’autres signaux. le signal d’horloge est l’entr´e d’horloge de la bascule (H) et e le signal de chargement (Ch) commande un multiplexeur (Cf. Dans le chapitre 10. a e 1. Q1 est stable entre deux fronts descendants. Apr`s une demi-p´riode. n´cessaire lorque l’on veut rep´rer le passage d’un e e e signal de 1 ` 0.

9.10 – D´tecteur de passage de 0 ` 1 e a D Ch 0 1 D H Q Q D Ch H Q H Fig.202 El´ments de m´morisation e e S e Q1 Q2 H H e Q1 Q2 S Fig. 9.11 – Une r´alisation d’une bascule avec commande de chargement et son symbole e logique .

e e e e 2. Dans la suite et en particulier dans ces e e chapitres. si les m bits e d’adresse Am−1 .. le fil de s´lection de e num´ro i vaut 1 et tous les autres valent 0. Nous expliquons ce que sont un mot m´moire et un acc`s e e m´moire.1 Notion de m´moire dans un ordinateur e Une m´moire est l’organisation d’un ensemble de points de m´morisation e e ´l´mentaires en matrice ` p lignes et n colonnes. en utilisant des bascules D. (Cf. et nous donnons une id´e des diff´rents types de m´moire. On peut ainsi voir la m´moire ee a e comme l’assemblage de n × p bits. e e A chaque mot. eaee Habituellement. Une ligne est appel´e mot ee e e de la m´moire et on parle d’une m´moire de p mots de n bits.. On l’obtient par simple juxtaposition de verrous ´l´mentaires command´s ee e par le mˆme signal de chargement.. nous verrons l’utilisation de tels registres dans la r´alisation des parties op´ratives. A0 codent l’entier i (0 ≤ i ≤ 2m − 1). Ce paragraphe pr´sente la m´moire du point de vue externe.. . Sp−1 doit valoir 1. La ee e e s´lection d’un mot consiste ainsi ` mettre ` 1 le fil de s´lection associ´. Sp−1 . l’adresse est e e cod´e sur m bits (Am−1 . nous consid´rons syst´matiquement des registres fabriqu´s ` partir e e e a de bascules ` front et le plus souvent avec une commande de chargement.. le mot auquel le processeur acc`de est d´sign´ par un e e e m num´ro (compris entre 0 et p − 1) appel´ adresse. a 2. s’il est ` 1 il s’agit e e d’une lecture (read) et s’il est ` 0 c’est une ´criture (write). un caract`re.. ainsi. e e e Lors d’un acc`s un seul des S0 .. . est associ´ un fil dit de s´lection du mot. . .2.. etc. on obtient un registre ` e a n bits. La m´moire : organisation matricielle des points de m´morisation e e 203 1. Chapitre 3). La m´moire : organisation matricielle des e points de m´morisation e Tout ordinateur est dot´ de m´moires plus ou moins grandes ` acc`s plus e e a e ou moins rapide.. e Sur le mˆme principe. e . Une telle notation a e a d´j` ´t´ vue au chapitre 8 pour le signal Add/Sub.. e e celui de l’utilisateur.4 Notion de registre Un verrou ` n bits permet de stocker des informations cod´es sur plus d’un a e bit. e Dans les chapitres 11 et 14. Le signal sp´cifiant e e e e e a le sens de l’acc`s est not´ l/e (r/w en version anglaise) . Mais on l’utilise comme un tableau de p ´l´ments de taille n auxquels on acc`de par indice. A0 ) et un d´codeur associ´ ` la m´moire r´alise e e e a e e la fonction de calcul de l’unique fil de s´lection valant 1 . un fil permet de e pr´ciser si l’acc`s souhait´ est une lecture ou une ´criture.. La nappe des n bool´ens peut ˆtre interpr´t´e comme un vecteur de bits e e ee mais aussi comme un nombre. c’est-`-dire ` l’ensemble des n points de m´morisation a a e ´l´mentaire qui le composent. Si p = 2 . e a a e e L’interface de la m´moire est compos´e de p fils de s´lection S0 .. De plus.

en mode rafale. Le cas g´n´ral permettant l’acc`s ` des sous-ensembles du e e e a mot m´moire est ´tudi´ dans le chapitre 15. avec les hypoth`ses simplificatrices suivantes : e e 1. L’acc`s ` des sur-ensembles e e e e a du mot m´moire. deux signaux lec e e c e et ecr. e . lec ET ecr signifie e e qu’il n’y a pas d’acc`s ` la m´moire. un acc`s ` la m´moire est mat´rialis´ par l’activation d’un signal e a e e e de s´lection m´moire que nous notons dans la suite SelMem.12 repr´sente une m´moire de 2m mots de n bits ainsi que e e l’op´ration r´alis´e selon la valeur des signaux SelMem et l/e. e 2. e o e e FinAcces et l/e.2 D´roulement d’un acc`s m´moire par un processeur e e e Nous consid´rons ici un ordinateur compos´ d’un processeur et d’une e e m´moire vive. est ´tudi´ dans le paragraphe 4.3 du e e e pr´sent chapitre. les signaux de commande de la m´moire sont d´finis de fa¸on diff´rente avec. L’acc`s ` la m´moire en lecture est r´alis´ par la commande : lec ET e a e e e ecr et l’acc`s en ´criture par la commande : lec ET ecr . On parle de bus d’adresses et de bus de donn´es. e De plus. Les adresses sont sur m bits et les donn´es sur n bits. Les adresses sont e des adresses de mots de n bits et les acc`s m´moire sont limit´s aux seuls e e e mots de n bits. e e e Remarque : Dans certains processeurs. e e La valeur ` stocker dans la m´moire (cas d’une ´criture) ou ` extraire de a e e a celle-ci (cas d’une lecture) est appel´e la donn´e (de taille n).12 – M´moire de 2m mots de n bits et signification des signaux SelMem et l/e. e e Le processeur dialogue avec la m´moire via les signaux de contrˆle SelMem. 9. par exemple. e e La figure 9. et lec ET ecr n’a aucun sens (et doit ˆtre e a e e ´vit´).204 El´ments de m´morisation e e Adresses A0 D´codeur e S0 bit n-1 mot 0 mot 1 bit 0 Cellule M´moire e SelMem 0 0 1 1 l/e 0 1 0 1 Op´ration e pas d’acc`s e pas d’acc`s e ´criture e lecture Am-1 Sp−1 mot 2m − 1 n Donn´es e SelMem l/e FinAcces Fig. et via le bus m´moire comprenant les adresses et les donn´es.

A l’int´rieur de la m´moire. la valeur lue se stabilise sur le bus de donn´es. a Entre deux cycles d’acc`s m´moire. de donn´es et l/e ne sont pas significatifs. 3) met ` 1 le signal AccesMem. A la fin de l’´criture. dont la borne sup´rieure est le e e e temps d’acc`s en lecture. 1. En g´n´ral. on peut e e e a simplifier le protocole de communication : la m´moire n’´met pas l’acquite e tement FinAcces pour signifier explicitement la fin d’un acc`s. une mˆme adresse risque e a e e alors de correspondre ` plusieurs mots m´moire. le processeur e m´morise la valeur stabilis´e sur le bus de donn´es dans un registre (ou e e e un verrou) interne et met ` 0 le signal AccesMem. e e e e Le signal FinAcces est alors ´mis. le processeur 1) affiche sur le bus d’adresses le num´ro de l’emplacement m´moire auquel il acc`de . Le raccordement des signaux entre processeur et m´moire est tr`s simple : le e e bus de donn´es est connect´ aux entr´es et sorties des donn´es de la m´moire. La sortie FinAcces est reli´e au signal du mˆme nom du e e processeur. 2) met ` 1 le signal e e e a l/e . Le d´lai maxie e e e mal de commutation d´finit le temps d’acc`s en ´criture de la m´moire. Lors d’une ´criture. et l’entr´e d’actie e e e vation de la m´moire SelMem au signal de demande d’acc`s ` la m´moire du e e a e processeur AccesMem. Apr`s un certain d´lai. Dans le cas d’une lecture. e e Le signal FinAcces est alors ´mis. Le bus de donn´es est bidie e e rectionnel alors que le bus d’adresses est monodirectionnel. le bistable m´moire change d’´tat. e e . d´sactive le dispositif d’´criture et active la sortie du e e circuit de lecture. La m´moire : organisation matricielle des points de m´morisation e e 205 2. L’entr´e l/e de la e m´moire est reli´e au signal de mˆme nom du processeur. Le processeur e demande l’acc`s. La taille de m´moire physique et la capacit´ d’adressage du processeur e e sont identiques. Pour chaque bit du mot dont la nouvelle valeur diff`re de l’ancienne. signal ´mis sur sa propre horloge. 3) met ` 0 le signal l/e . la capacit´ d’adressage du processeur est e e e sup´rieure ` la taille de la m´moire physique . le processeur met e e a ` 0 le signal AccesMem.2. le signal AccesMem vaut 0 et les signaux e e d’adresses. A la fin de la lecture. 4) met ` 1 le signal e e a AccesMem. et la lecture ou l’´criture e e e sont suppos´es ˆtre effectives lors du prochain top d’horloge du processeur. le d´codeur d’adresse s´lectionne l’emplacee e e e ment correspondant. 2) affiche l’information ` e e a a ´crire sur le bus de donn´es . e Si un acc`s ` la m´moire dure un seul cycle d’horloge du processeur et si e a e le temps de cycle de la m´moire est inf´rieur ou ´gal ` ce dernier. 2. a A l’int´rieur de la m´moire. le processeur 1) affiche sur le bus d’adresses le num´ro e e de l’emplacement m´moire auquel il acc`de . Nous ´tudions cette a e e situation au chapitre 15. le d´codeur d’adresses s´lectionne l’emplacee e e e ment correspondant. active le dispositif d’´criture et d´sactive la sortie e e du circuit de lecture. e e e e e le bus d’adresse aux entr´es de s´lection de mot.

Les premi`res ´tant accessibles en lecture seule. une m´moire dynamique aura une plus grande capacit´ de e e e stockage. donn´es e e e et adresses intervenant lors d’un acc`s ` la m´moire par le processeur. 9. Chapitre 7). les secondes en lece e ture et ´criture. e e La structure des ROM est g´n´ralement bas´e sur un autre principe : l’ine e e formation est cod´e dans la structure du circuit en ajoutant ou retranchant e des transistors (Cf. elle devra ˆtre rafraˆ e ıchie r´guli`rement. Dans la mesure o` e e u un point m´moire dynamique peut ˆtre r´alis´ avec moins de transistors. Chapitre 19). e a e 2. cartouches et cassettes magn´tiques sont au contraire d’excele lents exemples de dispositifs ` acc`s s´quentiel (Cf. les donn´es sont m´moris´es dans des points e e e e m´moires statiques (bascules) ou dynamiques (capacit´s). La structure ´tant fig´e. En revanche. L’intervalle T1 correspond e e a e ` la lecture du mot m´moire d’adresse A1 .206 El´ments de m´morisation e e Adresse A1 A2 AccesMem l/e T1 T2 Fig.13 montre une ´volution possible des diff´rents signaux. Pour acc´der a e e e a ` une donn´e situ´e en fin de bande.3 Typologie de m´moires e On peut donner une premi`re classification de la m´moire en consid´rant e e e l’ordre dans lequel le processeur acc`de aux donn´es. e Les m´moires peuvent ˆtre class´es selon leurs fonctionnalit´s. la d´connexion ´lectrique du dispositif ne modifie pas e e e e . Dans les RWM. l’intervalle T2 correspond ` a e a l’´criture du mot m´moire d’adresse A2. La plupart des m´moires e e e centrales offrent un acc`s al´atoire : les donn´es peuvent ˆtre lues ou ´crites e e e e e a ` n’importe quel emplacement (en anglais RAM ou Random Access Memory). e Les bandes. pour e e e e une mˆme surface. De plus. Une dise e e e tinction est faite entre ROM (Read Only Memory) et RWM (Read Write Memory).13 – Chronogrammes d´crivant l’acc`s ` la m´moire. la m´moire ne peut e e e ˆtre modifi´e. e e La figure 9. il faut d’abord parcourir la totalit´ de e e e la bande et des donn´es qui pr´c`dent. Le temps d’acc`s ` une valeur est pratiquement ind´pendant de l’emplacement e a e dans lequel elle est stock´e. Le temps d’acc`s est proportionnel ` e e e e a l’´loignement de l’information sur la bande.

A0 =i. alors la e e a valeur sur le fil de donn´e Don est recopi´e dans la bascule s´lectionn´e.1 R´alisation des m´moires statiques e e D´composition de la m´moire globale e e d’un ordinateur en boˆ ıtiers et barettes Nous avons pr´sent´ la m´moire d’un ordinateur comme un tableau de 2m e e e mots de n bits (Cf. on passe d’une capacit´ de e m m+1 2 ×n ` 2 a × n. le bit de donn´e Don.). Le boˆ ıtier comporte un d´codeur qui sert ` e a s´lectionner le bon verrou : si Am−1 . Le sch´ma est analogue ` la figure 9. e e le signal SelMem. 32 ou 64 bits). Nous i=1 obtenons ainsi une d´composition de la m´moire en tranches horizontales. le nombre de broches est e optimis´ : il y a m broches d’adresses et n broches de donn´es. on cherche ` minimiser le a nombre de broches. . e e La premi`re solution est plus souple et peut s’adapter ` des processeurs e a de tailles diff´rentes (16. tels que Σp 2ki = 2m .2 3.3. le sigle RAM est utilis´ ` la place de RWM ea (Read Write Memory). on assimilera une barette de n boˆ e ıtiers de 1 bit ` un boˆ a ıtier de n bits. par boˆ ıtier. A l’aide du signal l/e. e on s´lectionne le sens de transfert de la donn´e : si ce signal est ` 1. On peut envisager deux strat´gies : e e – consid´rer un boˆ e ıtier de capacit´ une colonne de 2m mots de 1 bit et juxe taposer les boˆ ıtiers. R´alisation des m´moires statiques e e 207 les donn´es m´moris´es. En pratique. on passe d’une capacit´ de 2 × n ` une capacit´ de e e a e 2m × (n + 1). et le signal l/e. Si on ajoute e e m une broche de donn´e. Cela donne. en consid´rant une e e e a e m m´moire de 2 mots de 1 bit. En juxtaposant n boˆ e ıtiers.. Figure 9. De plus. Paragraphe 2. une entr´e l/e et une sortie repr´sentant le e e e bit s´lectionn´. Si on ajoute une broche d’adresse.12.. nous e a consid´rons p boˆ e ıtiers de 2ki mots de n bits.A0 ).2. Dans ce cas. une entr´e SelMem.1 R´alisation physique e Principe d’une r´alisation avec verrous e Nous donnons une r´alisation interne d’un boˆ e ıtier m´moire de 2m mots de e 1 bit ` l’aide de verrous et de portes 3 ´tats (Cf. 3. Ce boˆ a e ıtier a m + 3 entr´es qui sont : l’adresse du mot (Am−1 . 3. Si ce e e e e . un d´codeur ayant m entr´es e e d’adresse.14-a). On va construire la m´moire ` l’aide de plusieurs boˆ e a ıtiers pour obtenir la capacit´ voulue... e e e – int´grer les mots les plus longs possibles jusqu’` la taille n. . Dans la suite. 3. on obtient une barette de capacit´ 2m × n. Toutes les m´moires de grande capacit´ sont organis´es e e e suivant ce sch´ma. partageant les mˆmes entr´es. moti =1. e e e Pour des raisons historiques.

Si de plus moti est ` 1. En ´criture (SelMem vaut 1 et l/e vaut 0) on impose un z´ro sur un des e e cˆt´s du bistable en reliant une des colonnes v et v ` la masse via un des deux oe a transistors B2 ou C2. ce qui est le cas lorsque e a Don vaut 1. Cette valeur e e e est envoy´e en sortie (Don) de la m´moire via un amplificateur 3 ´tats activ´ e e e e par le produit des signaux l/e et SelMem. oe – La colonne v est reli´e ` la masse si B2 est passant. par exemple. e . B2 est bloqu´. e e e On peut organiser cette m´moire. du signal d’´criture (l/e) e et du signal d’entr´e (Don pour B2 (v) et Don pour C2 (v)).208 El´ments de m´morisation e e signal est a 0. ce qui est le cas lorsque e a Don vaut 0. le e a transistor C1 est passant et le cˆt´ gauche du bistable est forc´ ` la masse. la colonne e e ´tant s´lectionn´e grˆce aux 9 bits de poids faibles de l’adresse.15) de 2048 (211 ) lignes de 512 (29 ) bits. Le comparateur analogique d´tecte la colonne sur laquelle la e tension est la plus ´lev´e et donne la valeur stock´e dans la cellule. les inverseurs aux coe lonnes v et v d´finissant la valeur d’un bit. il est possible de e e e commencer le d´codage d’une nouvelle ligne. le transistor B1 est passant et le cˆt´ a oe droit du bistable est forc´ ` la masse. e 3. une ligne ´tant s´lectionn´e grˆce aux 11 bits de poids forts de e e e a l’adresse. e e La r´alisation de chaque bit met en jeu 2 sorties pour le d´codeur.14-b montre une autre solution : la cellule m´moire ` bistable e a et for¸age par court-circuit. La m´moire est ainsi constitu´e e e de lignes. oe ea Ceci installe un 1 du cˆt´ droit. Consid´rons une m´moire de 220 mots e e e (20 bits d’adresse) de 1 bit organis´e comme nous l’avons vu pr´c´demment. la porte 3 ´tats en sortie de bascule s´lectionn´e est activ´e et ` e e e e le contenu de la bascule est recopi´ sur le fil de donn´e Don. e e 2 portes et. comme une matrice (Cf. et un ´tage de d´codage des informations d’une colonne. Le signal de commande du transistor B2 ou C2 est le produit du signal de s´lection du boˆ e ıtier (SelMem). Le d´bit est e e e a e alors am´lior´ puisque pendant le d´codage des colonnes.2 Cellule de m´moire statique e La figure 9. En lecture (SelMem vaut 1 et l/e vaut 1). qui connecte via les deux transistors C1 et B1. Ceci installe un 1 du cˆt´ gauche. e – La colonne v est reli´e ` la masse si C2 est passant. Pendant ce temps.2. c Le processeur s´lectionne la cellule de num´ro i en activant le mot de ligne e e (moti ). la valeur stock´e dans la cellule e (cˆt´ gauche du bistable) et son compl´ment (cˆt´ droit du bistable) appaoe e oe raissent respectivement sur les colonnes v et v avec une d´gradation des sie gnaux logiques. 1 verrou. ea oe 3.2. 1 inverseur et une porte 3 ´tats. Fie gure 9.3 Organisation de cellules de m´moire en matrice e On peut qualifier une m´moire en fonction de son d´bit : c’est le nombre de e e mots auxquels on acc`de par seconde. Si de plus moti est ` 1.

e e a b) ` partir de bistables (le triangle en gris est un comparateur analogique).15 – Matrice de Cellules construite ` partir de bistables a . a SelMem Poids forts A19 A9 l/e S´lecteurs e Poids faibles A8 A0 Donn´es e Fig.14 – Deux r´alisations de points de m´moire. 9. a) ` partir de verrous et de portes. R´alisation des m´moires statiques e e 209 v (a) (b) moti moti A0 EnD Q motj +Am−1 motj EnD Q l/e SelMem C1 B1 v Cellule S´lecteur e l/e Don C2 B2 Don SelMem Fig.3. 9.

La ligne (respectivement la colonne) est s´lectionn´e au front dese e e a cendant de RAS. qu’une telle organisation permet aussi d’optimiser l’acc`s ` des donn´es appartenant ` une mˆme colonne. Le temps d’acc`s ` une cellule m´moire est la somme du temps de s´lection d’une ligne et du temps e e de s´lection d’une colonne. ce qui e e consomme environ 5% du d´bit th´orique de la m´moire. e e e 4. Cela autorise la e construction de m´moires de plus grande capacit´. Ce processus. Nous en pr´sentons e e e quelques-unes et ` la suite de l’observation du paragraphe 3. qui sont m´moris´s c e e et reli´s au d´codeur des lignes.1 Multiplexage lignes/colonnes Dans le cas d’une organisation de la m´moire telle que nous l’avons vue ` e a la figure 9. a e e L’id´e est de r´utiliser les broches servant ` la s´lection des lignes pour e e a e r´aliser la s´lection des colonnes. Il convient alors que le nombre de fils soit le e e mˆme et on fabrique ainsi des matrices carr´es de cellules.15. e 4. est effectu´ sur chaque ligne toutes les 2 ` 4 ms.2 M´moires dynamiques e Les m´moires dynamiques sont organis´es en matrices tout comme les e e m´moires statiques.2.3. e e e les m/2 bits de poids forts codent une ligne et les m/2 bits de poids faibles une colonne. En effet. e e Etant donn´ m/2 broches et une adresse cod´e sur m bits (m ´tant pair). connu sous le e ee e nom de rafraˆchissement. on peut diminuer le nombre de broches de moiti´.210 El´ments de m´morisation e e Nous verrons dans le paragraphe 4. Optimisations et techniques particuli`res e Il existe divers types de r´alisation des m´moires. e e e La capacit´ de la cellule de m´moire dynamique se d´charge lentement et e e e l’information stock´e disparaˆ avec le temps. La cellule dynamique e e e ne n´cessite que deux transistors et un seul signal de colonne. e e Ce circuit est r´alis´ ` partir d’une matrice de cellules. il ne e sert ` rien d’activer une colonne avant que la ligne ne soit s´lectionn´e. en utilisant deux e ea signaux suppl´mentaires RAS (Row Address Strobe) et CAS (Column Address e Strobe). pendant ce d´codage. Pour ´viter cela.e. e e . RAS (respectivement CAS). chaque ligne e ıt e est p´riodiquement lue et r´´crite en totalit´. i. le circuit re¸oit les e e e c m/2 bits de poids faibles qui sont reli´s au d´codeur des colonnes. ı e a Dans une m´moire de 16Mbits (4096 lignes) de 50 ns de temps de cycle. Le circuit re¸oit les m/2 bits de poids forts. Puis. Dans une cellule. nous montrons a quelques approches permettant d’am´liorer encore le d´bit de la m´moire. le e rafraˆ ıchissement repr´sente de l’ordre d’un acc`s ligne par microseconde. e a e a e 4. l’information y est cod´e sous forme de e e charge ´lectrique stock´e dans la capacit´ grille-source d’un transistor MOS.

` chaque impulsion de CAS.16. e Lorsque l’interface est asynchrone RAS joue le rˆle de SelMem et CAS pero met la s´lection des colonnes auxquelles on acc`de dans la rafale. R-C2. . a Nous ´tudions l’acc`s m´moire un peu plus pr´cis´ment en consid´rant deux e e e e e e types d’interface entre la m´moire et le processeur : asynchrone et synchrone. Nous ne repr´sentons pas le signal de lecture/´criture. Si l’intervalle d’adresses auquelles on acc`de appartient ` une mˆme ligne. Le signal RAS reste actif durant la s´lection des colonnes d’une ligne. l’acc`s ` e a e e e a des colonnes dans cette ligne est rapide. il est ´chantillonn´ e e e e en mˆme temps que l’adresse de colonne par CAS. pour le mode dit quartet. e On parle d’acc`s en mode rafale. R-C3 et R-C4. b. ce qui permet e d’´conomiser la moiti´ des broches d’adresse sur le boˆ e e ıtier au prix d’un dispositif externe de multiplexage (commun ` tous les boˆ a ıtiers). Paragraphe 4. e Dans les deux cas. Par exemple. les m´moires dynamiques sont dot´es d’un registre interne e e de stockage de num´ro de ligne (adresses de poids fort). L’acc`s m´moire se d´roule en deux temps : le num´ro de ligne est ene e e e voy´ le premier et stock´ dans un verrou interne. Il existe de nombreuses mani`res de r´aliser e e e le mode rafale .3). l’´tape de s´lection et de connexion de la ligne aux colonnes e e e peut ˆtre effectu´e en une seule fois en d´but de salve. e a e on acc`de a la premi`re adresse par l’interm´diaire des poids forts. le circuit incr´mente le num´ro a de colonne modulo 4 : on acc`de ` quatre informations cons´cutives.4. c et d les mots d’adresses R-C1. nous nous int´ressons ` la lecture de 4 donn´es de la mˆme e a e e ligne. certaines m´moires ont ´t´ con¸ues sp´cialement pour e ee c e la r´alisation de cartes vid´o (Cf. Notons que dans la salve d’acc`s ` diff´rentes colonnes e a e d’une mˆme ligne. Cette optimisation est e e e applicable a toute suite d’acc`s m´moire ` des adresses ne diff´rant que par les ` e e a e poids faibles. Optimisations et techniques particuli`res e 211 Par ailleurs.5). qui correspondent au num´ro de colonne (Cf. Soient a. e A partir de ce principe. puis on e ` e e acc`de ` chaque colonne. Consid´rons e e e les chronogrammes de la figure 9. Le temps de d´codage et e e e l’´tablissement de la connexion entre la ligne s´lectionn´e et les signaux de coe e e lonne est mis ` profit pour transmettre la deuxi`me partie de l’adresse (num´ro a e e de colonne) au boˆ ıtier. Paragraphe 4. le temps d’acc`s total est ´gal ` : Temps d’acc`s a e e e a e ligne + Temps d’acc`s colonne * N. Le mode e a e dit page permet de s´lectionner n’importe quelle colonne dans une ligne : une e page correspond ` une ligne. nous n’en donnons ici que quelques principes. e Soit R-C une adresse compos´e d’un num´ro de ligne R et d’un num´ro de e e e colonne C. la m´moire est dot´e d’un circuit interne qui compte e e e e modulo quatre .3 Mode rafale Le multiplexage ligne/colonne permet d’´conomiser non seulement des e broches mais aussi du temps : une fois l’acc`s ` une ligne r´alis´. e e 4. Si on r´alise N acc`s cons´cutifs ` des ´l´ments ape a e e e a ee partenant ` la mˆme ligne.

17 – Chronogrammes d´crivant l’acc`s m´moire en mode rafale. 9. pour une interface e e e synchrone . 9.16 – Chronogrammes d´crivant l’acc`s m´moire en mode rafale. pour une interface e e e asynchrone adresse mode quartet RAS CAS SelMem Donn´e e Horloge r c1 a b c d Fig.212 El´ments de m´morisation e e adresse mode page adresse mode quartet RAS CAS Donn´e e r r c1 c1 c2 c3 c4 a b c d Fig.

puis celui de la e colonne C1. Par exemple. le processeur envoie seulement le num´ro de la premi`re e e colonne C1 apr`s celui de la ligne R. les nombres de cycles e d’horloge entre RAS et CAS et entre CAS et la stabilisation des donn´es sont e d´finis en fonction du temps d’acc`s de la m´moire (qui est fixe). le processeur et la m´moire e sont synchronis´s sur la mˆme horloge. 9. Le sch´ma interne d’une cellule d’une e e e e telle m´moire est donn´ figure 9. on intercalera un cycle d’attente e pour avoir le mˆme temps d’acc`s. ` 33 e e a Mhz. tout est cadenc´ par une horloge de e bus H. et de la e e e p´riode d’horloge qui peut varier avec la fr´quence du bus.4 M´moires ` plusieurs acc`s e a e Le principe est d’acc´der simultan´ment ` deux (ou plus dans le cas d’acc`s e e a e multiple) emplacements m´moire. L’acc`s m´moire se d´roule un peu e e e e e comme dans le mode quartet d´crit pr´c´demment ` quelques diff´rences pr`s : e e e a e e il y a un signal SelMem en plus de RAS . e En mode quartet. C2. On acc`de ` des emplacements cons´cutifs e e a e et c’est le circuit m´moire qui incr´mente en interne le num´ro de colonne : e e e (C4 = C3 + 1.17). que d’acc`s.18 – Sch´ma interne d’une cellule de m´moire ` 2 acc`s simultan´s e e a e e En mode page. C3 = C2 + 1. le processeur envoie le num´ro de ligne (R).18. celui de la colonne C3 et enfin celui de la colonne C4 (C1. la m´moire sera capable de fonctionner sans cycle d’attente entre RAS. celui de la colonne C2. Figure 9. C2 = C1 + 1). e e Les m´moires ` n acc`s permettent de r´aliser des bancs de n registres e a e e utilis´s par exemple dans la partie op´rative du processeur. de signaux l/e. la longueur des rafales est d´finie en e e e initialisant un registre de commande avant utilisation. e e on rajoute un comparateur pour v´rifier qu’il n’y a pas d’acc`s simultan´s au e e e mˆme emplacement m´moire en ´criture. C3 et C4 pouvant ˆtre quelconques). e e de s´lection de boˆ e ıtiers SelMem et de bus de donn´es. e e . On a autant de d´codeurs. d´riv´e de celle du processeur . Lors de la commande d’initialisation de la m´moire. Optimisations et techniques particuli`res e 213 V W mot b W V mot a Fig. e e 4. De plus.4. A 66 Mhz. Avec une interface synchrone (Cf. e CAS et la stabilisation des donn´es.

5 La m´moire vid´o e e Le processeur est connect´ ` de la m´moire et l’ensemble procese a e seur/m´moire est lui-mˆme connect´ ` des p´riph´riques permettant le diae e e a e e logue avec le monde ext´rieur. Dans certains cas. et au chapitre 17 les probl`mes pos´s par la gese e tion de p´riph´riques de plus en plus ´labor´s. Nous d´taillons au chapitre 16 les aspects e e e connexion et synchronisation. Il faut organiser l’acc`s diff´remment. e e e e L’int´rieur du tube cathodique est recouvert d’une substance qui ´met de e e la lumi`re lorsqu’elle est frapp´e par un faisceau d’´lectrons qui balaie la e e e surface de l’´cran. e a e e En utilisant les techniques pr´sent´es dans les paragraphes pr´c´dents. Le contenu de la m´moire d’´cran est e e e e donc transmis s´quentiellement au dispositif qui module l’intensit´ du faise e ceau. et en lecture e e e par le dispositif de rafraˆ ıchissement de l’´cran. cette m´moire e e d’´cran n’est accessible qu’` un processeur sp´cialis´. posant des probl`mes de gestion m´moire : l’´cran graphique. ligne apr`s ligne. le e e e e d´bit de la m´moire resterait insuffisant. il s’agit de r´aliser des d´calages sur les donn´es fournies e e e au p´riph´rique (le paquet de m´moire transf´r´). e e e ee On appelle m´moire vid´o une m´moire optimis´e au niveau temps d’acc`s e e e e e (matrice). et pourvue d’un registre interne sur lequel agit un circuit s´quentiel e permttant d’effectuer les d´calages n´cessaires ` l’affichage des pixels aux inse e a tants fix´s par les contraintes du balayage ´cran. e e e L’image affich´e par un ´cran graphique est construite sous la forme d’une e e matrice ` deux dimensions indiquant les points (ou pixels) de l’´cran ` allumer. essentiellement. e e e e L’id´e consiste ` transf´rer un paquet de m´moire important vers le e a e e p´riph´rique et ` lui d´l´guer le travail consistant ` calculer les pixels ` affie e a ee a a cher . e a La m´moire d’´cran est une partie de la m´moire principale ` laquelle on e e e a acc`de en ´criture par le processeur pour modifier l’image affich´e. e e . le processeur graphique. Nous nous int´ressons ici ` l’un e e e e e a d’entre eux. stock´ dans une m´moire appel´e m´moire ee e e e e d’´cran.214 El´ments de m´morisation e e 4. cinquante ` cent fois par seconde. L’image g´n´r´e est par nature fugitive et doit ˆtre rafraˆ e ee e ıchie (r´affich´e) e e p´riodiquement. L’´cran et le clavier dont dispose tout utilisateur e e sont deux p´riph´riques particuliers. a e a Chaque ´l´ment de cette matrice. d´finit l’intensit´ et la couleur du pixel correspondant de l’´cran.

Cela d´termine le choix de la e e m´thode de conception. e Dans le cas plus g´n´ral o` la construction du graphe de l’automate correse e u pondant ` l’algorithme est impossible pour cause de trop grande complexit´. Un circuit s´quentiel e e est un circuit dont les valeurs de sortie ` l’instant pr´sent d´pendent de la a e e s´quence des valeurs d’entr´e qu’il y a re¸ues depuis l’instant initial. d’entr´es et de sorties du circuit ` concevoir sont tr`s e e a e variables suivant la complexit´ de l’application. Chapitre 5) ou d’un algorithme. Il se dise e c tingue ainsi d’un circuit combinatoire dans lequel les valeurs de sortie ` l’insa tant pr´sent d´pendent seulement des valeurs d’entr´e pr´sentes ` cet instant e e e e a (apr`s le d´lai de stabilisation dˆ ` la travers´e des portes logiques). On est proche ici de la synth`se logique. nous nous limitons ici aux bascules de type D pr´sent´es e e e e au chapitre 9. On retrouve les deux familles de solution ´voqu´es au e e e chapitre 8. e e Ce type de circuit permet de r´aliser un comportement qui peut ˆtre d´crit e e e a ` l’aide d’un automate d’´tats fini (Cf. Dans le cas o` l’algorithme peut ˆtre d´crit de fa¸on simple par un automate u e e c d’´tats fini le point de d´part de la synth`se est le graphe explicite de l’automate e e e d’´tats fini. Des circuits combinatoires permettent de calculer les e sorties du circuit et l’´volution de son ´tat. Chapitre 9) dot´s d’une fonction permettant de fixer l’´tat initial. de la e e e biblioth`que de circuits combinatoires disponibles. e a e Un circuit s´quentiel comporte ainsi des ´l´ments de m´morisation e ee e (Cf. Ces informations constituent l’´tat courant e e du circuit s´quentiel ` un instant donn´. et du type d’´l´ments de e ee m´morisation utilis´s . comme un circuit combinatoire (Cf. un ensemble d’entr´es et un ensemble de sorties. Chae e pitre 8). Le circuit e e ua e s´quentiel poss`de une m´moire lui permettant de stocker des informations sur e e e la succession des valeurs d’entr´e. La e e valeur ´crite dans ces ´l´ments de m´morisation est fonction de celle qui y e ee e ´tait ` l’instant pr´c´dent : l’´tat suivant est une fonction de l’´tat courant e a e e e e et des valeurs d’entr´e.Chapitre 10 Circuits s´quentiels e Un circuit s´quentiel poss`de. La m´thode de conception d´pend du type de l’automate. a e . On e peut parler de machine algorithmique. Le nombre d’´tats.

Chapitre 5). soit ` des instants d´termin´s u e e a e e et r´guliers d´pendant d’une entr´e particuli`re (horloge ou clock ).). Le plus courant. e e e On est proche ici de l’algorithmique cˆbl´e. Nous d´taillons ici deux types de synth`se : cˆbl´e et e e a e microprogramm´e. On parle d’architecture ` e a flots de donn´es (Data flow en anglais). Les sorties ` un instant donn´ ne d´pendent plus e e a e e seulement des entr´es pr´sentes ` cet instant. les aspects de contrˆle et de calcul sont o m´lang´s. Des architectures ` flots de donn´es e a e sont illustr´es par des exemples dans ce chapitre. . Le cas particulier des orgae nisation ` pipeline est introduit. e Dans l’autre type d’architecture. e e e Le changement des entr´es peut ˆtre pris en compte soit ` n’importe quel e e a moment (celui o` l’entr´e change r´ellement). La r´alisation se fait ` partir des sp´cifications e a e des algorithmes dans diff´rents langages. Deux grands types d’architectures a e (organisations mat´rielles) des circuits s´quentiels sont alors employ´s. conditionnel .216 Circuits s´quentiels e la conception du circuit se fait selon des proc´d´s diff´rents (Cf. e 1. e e e Ces m´thodes de conception de circuits sont aujourd’hui automatis´es grˆce e e a a ` des outils de CAO de circuits. la partie qui permet de stocker les variables de l’algorithme et de r´aliser les calculs sur ces variables (partie op´rative) est s´par´e de la e e e e partie commandant l’enchaˆ ınement de ces op´rations (partie contrˆle). Dans le e e e e premier cas on parle de circuits s´quentiels asynchrones. Ce sont les valeurs des variables (les donn´es) qui contrˆlent direce e e o tement l’enchaˆ ınement des op´rations sur celles-ci. nous ´tudions en d´tail les m´thodes de r´alisation e e e e de circuits s´quentiels ` partir du graphe explicite d’un automate d’´tats e a e fini (Cf.1 Notion de circuit s´quentiel e Caract´risation e Un circuit s´quentiel m´morise des informations qui lui permettent de r´agir e e e a ` une s´quence d’entr´es. e Nous d´finissons dans le paragraphe 1. e e Dans le paragraphe 2. VHDL (devenu e un standard) permet de d´crire des sp´cifications de circuits s´quentiels ` e e e a diff´rents niveaux : graphes d’automates d’´tats fini et algorithmes ` base e e a d’instructions de types divers (it´ratif. la notion de circuit s´quentiel en e e pr´cisant son architecture et en d´crivant son comportement temporel. 1. Dans le paragraphe 3. nous d´crivons deux exemples e e de r´alisations par flots de donn´es de circuits s´quentiels ` partir d’un e e e a algorithme. mais aussi de la s´quence des e e a e entr´es qu’il y a re¸ues depuis un instant initial. Chapitre 11). a La m´thode de synth`se bas´e sur une partie contrˆle et une partie op´rative e e e o e est pr´sent´e en d´tail au chapitre 11. Nous donnons aussi une id´e de la notion de pipeline. Ces e o deux parties sont des circuits s´quentiels. e e e Dans l’un. dans le deuxi`me de e e . . Pour d´finir cet instant initial e c e le circuit comporte une entr´e particuli`re souvent appel´e init.

e a e e 1. Il e e donne ainsi en sortie la valeur de l’´tat courant et prend en entr´e la valeur e e de l’´tat suivant. Chapitre 9).1 d´crit l’architecture g´n´rale du circuit r´alisant un automate e e e e dans le cas des deux mod`les de Moore et de Mealy. e e – Un bloc permet de calculer la fonction de transition de l’automate : il donne l’´tat suivant ` partir de l’´tat courant et des entr´es courantes. C’est en e e g´n´ral un signal r´gulier de p´riode fixe.1. Dans le cas synchrone. Pour des raisons p´dagogiques.3. beaue coup plus d´licate. Chapitre 9) dont l’entr´e d’activation est l’horloge.1 Comportement temporel Echantillonnage des entr´es et fr´quence de l’horloge e e Pour que l’automate fonctionne correctement il est indispensable que l’entr´e des bascules soit stabilis´e au moment du front d’activation du sie e gnal clock. Ces bascules sont sensibles au front de l’entr´e particuli`re e e e clock : le passage de l’´tat courant au suivant est cadenc´ par cette entr´e e e e clock. soit de l’´tat courant et e e e e des entr´es pr´sentes ` l’instant courant (mod`le de Mealy). e e e Si l’automate est de Moore les sorties ne d´pendent que de l’´tat courant. Les sorties e e e e a d´pendent soit de l’´tat courant (mod`le de Moore). La conception de circuits asynchrones. Notion de circuit s´quentiel e 217 circuits s´quentiels synchrones.2 Architecture g´n´rale e e La figure 10. e e e les autres entr´es sont d´sign´es par leur nom sp´cifique (init et clock ). nous nous limitons dans ce livre ` la conception de circuits e a de type synchrone. Cette architecture peut e ˆtre d´compos´e en 3 blocs aux fonctionnalit´s distinctes : e e e e – Un bloc de bascules permet de m´moriser l’´tat courant de l’automate. Les bascules peuvent ˆtre initialis´es ` une valeur donn´e (´tat initial) e e a e e grˆce ` l’entr´e init. e e 1. Si l’automate est de Mealy les sorties d´pendent des entr´es courantes et de l’´tat courant. Si ce n’est pas le cas la valeur de la sortie de ces bascules est ind´termin´e (Cf. e e e e L’´tat courant de l’automate est m´moris´ ` l’aide de bascules sensibles au e e ea front (Cf. le circuit a besoin d’une entr´e d´finissant les inse e tants successifs de prise en compte des valeurs des entr´es de donn´es. continue d’ˆtre aujourd’hui utilis´e pour des applications e e e ayant des contraintes temporelles ou de consommation critiques. L’´tat suivant e e d´pend de l’´tat courant et des entr´es pr´sentes ` l’instant courant. Remarque : Dans la suite nous appelons entr´es les entr´es de donn´es. Deux cas peuvent se pr´senter : e e e . 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 l’horloge.3 1. a a e – Un bloc permet de calculer la fonction de sortie de l’automate. Les deux mod`les e e a e e sont pr´sent´s dans le chapitre 5.

2) Supposons ici que le front d’ace tivation des bascules du circuit s´quentiel soit le front montant de l’horloge. c’est e e ıt le cas par exemple lorque les entr´es proviennent de capteurs sur un monde e ext´rieur. Calcul de l’´tat suivant (Cf. Pour que l’automate puisse ´voluer ` chaque front montant de l’horloge. On peut e a faire deux choix d’´chantillonnage. e a il faut que le r´sultat du calcul du nouvel ´tat soit stable avant le prochain e e front montant de clock. a u e Dans ce cas i-entr´es correspond ` un des deux fronts de l’horloge. Nous avons vu dans le chapitre 9 comment mettre en place un e m´canisme simple pour obtenir un ´chantillonnage ` partir de l’horloge. b) mod`le de Mealy. Nous avons vu au chapitre 8 que ce d´lai n’est pas nul. c’est-`-dire o` les entr´es changent toujours sur un front de l’horloge. e e Soit i-entr´es l’instant ` partir duquel les entr´es sont stables. On verra au parae e e graphe 1. e e – le syst`me en amont (fournissant les entr´es) ne connaˆ pas l’horloge. On le n´glige ici par rapport aux d´lais de stabilisation des circuits come e binatoires. e a e Remarque : Le temps de stabilisation de la sortie des bascules n’est pas nul. e e a – le syst`me en amont est d´j` synchronis´ sur la mˆme horloge que l’autoe ea e e mate.218 Circuits s´quentiels e entr´es e entr´es e Fonction de sortie Fonction de transition bascules sorties Fonction de sortie Fonction de transition bascules sorties Etat courant (a) init Etat suivant clock (b) init clock Fig. e . 10. Le chronogramme de la figure 10.2-a montre cette d´pendance. e Soit t-´tats le d´lai n´cessaire ` la stabilisation des circuits combinatoires de e e e a calcul de l’´tat suivant. Figure 10. e e e e a) Mod`le de Moore . Les e diff´rents composants ont en entr´e la mˆme horloge.3 comment r´aliser la synchronisation entre deux syst`mes de ce e e type. C’est le cas par exemple de composants d’un mˆme ordinateur.3. e Etudions le cas simple pour lequel on sait ´chantillonner les entr´es sur e e l’horloge.1 – Architecture g´n´rale d’un circuit r´alisant un automate d’´tats fini.

que l’on e e soit dans le cas d’un automate de Moore ou de Mealy le r´sultat est le mˆme. Si l’on regarde de plus pr`s.2-b montre cette d´pendance : la demi-p´riode de clock e e doit ˆtre sup´rieure ` t-´tats pour que les entr´es des bascules soient stables e e a e e au front montant. les sorties d´pendent des entr´es et de e e e l’´tat courant. b) ´chantillonnage sur front descendant . Pour une valeur de t-´tats maximale donn´e. Le circuit arrivant dans un nouvel ´tat au front montant et les entr´es e e sur le front descendant. dans le cas o` l’´chantillonnage ne se fait pas sur le front u e d’activation des bascules. a) Temps de e e calcul .2-c montre e e cette ´volution. Dans le cas de Moore. c) ´chantillonnage sur front e e montant.2-b) la fr´quence a e e maximale ` laquelle l’automate peut ´voluer (si on prend des niveaux haut et a e bas de l’horloge de mˆme dur´e). on peut e e a e e e ainsi doubler par rapport ` la premi`re solution (Figure 10.3-a). Dans le cas du mod`le de Mealy.2 – Chronogrammes d’´chantillonnage des entr´es d’un automate. Le chronogramme de la figure 10. e Calcul des sorties (Cf. l’´chantillonnage des entr´es ne e e e e change en rien leur calcul. Figure 10. Au e e e mˆme instant l’´tat suivant est m´moris´ et les entr´es sont fournies. Une premi`re id´e est d’´chantillonner les entr´es sur le front descendant e e e e de clock. Notion de circuit s´quentiel e 219 Clock Temps i-entr´es e t-´tats e (a) i-entr´es e t-´tats e Clock Clock Temps (b) i-entr´es e t-´tats e Temps (c) Fig. il s’av`re que l’on peut anticiper cet e e ´chantillonnage et l’effectuer au mˆme front que le changement d’´tat. e e a e . les sorties d’un automate de Mealy auraient un comportement diff´rent de celui d’un automate de Moore. Figure 10. e les sorties ne d´pendant que de l’´tat courant. les sorties des circuits combinatoires calculant l’´tat e suivant ont alors une demi-p´riode de l’horloge pour se stabiliser. a e l’arriv´e des nouvelles valeurs des entr´es n’est pas encore r´percut´e ` l’entr´e e e e e a e des bascules au moment du chargement du nouvel ´tat. Soit i-entr´es l’instant ` partir duquel les entr´es sont stables. e e Soit t-sorties le d´lai de stabilisation des circuits combinatoires calculant les e sorties. En revanche. En effet e e e e e grˆce au temps de stabilisation des sorties des circuits combinatoires t-´tats. Le chronoe gramme de la figure 10. La p´riode de clock doit e e ˆtre sup´rieure ` t-´tats. 10.1.3) Si la solution adopt´e est e l’´chantillonnage des entr´es sur le front d’activation des bascules. Les signaux de sorties seront stables un temps t-sorties apr`s le front e d’activation des bascules (Cf.

Figure 10.220 Circuits s´quentiels e Clock Clock Temps t-sorties (a) i-entr´es e t-sorties Temps (b) Fig. e e Il apparaˆ alors des valeurs transitoires sur les sorties pendant des temps non ıt n´gligeables avant leur stabilisation. e Si l’initialisation n’est pas effectu´e au moment du front montant de l’hore loge l’automate peut passer dans un ´tat ind´termin´ si les circuits combie e e natoires de calcul de l’´tat suivant n’ont pas le temps de se stabiliser entre e l’instant d’initialisation et le prochain front montant de l’horloge.3. Ces valeurs transitoires peuvent provoquer e des ´volutions non voulues pour un syst`me aval (qui utiliserait les sorties ainsi e e produites). Supposons que le front d’activation de l’automate 1 soit e e le front montant et que ses entr´es soient ´chantillonn´es sur le front montant e e e de son horloge clock1 (Cf. 1.3 – Chronogrammes des sorties d’un automate. b) cas de Mealy.4). a) Cas de Moore . Le temps de calcul de ses sorties n’est pas n´gligeable : elles sont stables un temps t-sorties1 apr`s le front d’activation e e de l’horloge clock1.2 Initialisation Nous avons vu au chapitre 9 qu’il existe deux sortes d’initialisation des bascules.3-b). L’initialisation synchrone n’est effectu´e qu’au moment du front d’activation de l’horloge.3. La solution synchrone est donc utilis´e de pr´f´rence. Pour les raisons e e e ´voqu´es pr´c´demment les horloges de ces deux automates ne peuvent pas e e e e ˆtre ind´pendantes.3 Synchronisation de deux r´alisations e On a souvent besoin de r´aliser deux automates 1 et 2. 10. e e e Une premi`re id´e consiste ` penser que les fronts d’activation des deux e e a horloges doivent ˆtre d´cal´s du temps de stabilisation n´cessaire. Supposons que le front d’activation de l’automate 2 soit aussi le front montant. e e e e . e ee 1. Les sorties sont stables un temps t-sorties apr`s i-entr´es (Cf. L’initialisation asynchrone est effectu´e d`s la pr´sence de la valeur e e e d’initialisation sur le signal correspondant. Le front montant de l’horloge de l’automate 2 doit avoir lieu apr`s que ses entr´es (les sorties de l’automate 1) sont devenues stables et e e que le calcul de son ´tat suivant s’est stabilis´ (t-´tats2). Figure 10. les sorties de l’aue tomate 1 ´tant connect´es aux les entr´es de l’automate 2.

Le d´calage est alors d’une demi-p´riode. nous obtenons la u configuration de la figure 10. Automates en boucle Le cas particulier o` les sorties de l’automate 2 sont u les entr´es de l’automate 1 est int´ressant ` ´tudier. – P > t-´tats1 pour que l’´tat de l’automate 1 soit stable au moment du front e e montant de clock1. Notion de circuit s´quentiel e 221 Clock1 t-sorties1 t-´tats1 e Clock2 t-´tats2 e Fig. e Il faut donc que l’un des deux automates soit de type Moore. 10. Pour que les e e e entr´es des bascules des deux automates soient toujours stables au moment du e front d’activation. Dans ce cas le d´calage de l’´volution de l’´tat des deux automates est e e e d’une demi-p´riode de l’horloge. la p´riode minimale P de l’horloge doit alors v´rifier : e e – P/2 > t-sorties1 + t-´tats2 pour que l’´tat de l’automate 2 soit stable au e e moment du front montant de clock2. Les entr´es des e e a e bascules restent stables si l’on respecte les conditions suivantes sur la p´riode e P de l’horloge : – P > t-sorties1 + t-´tats2 pour que l’´tat de l’automate 2 soit stable au e e moment du front montant de clock. e e Dans le cas o` les deux automates sont de type Mealy. Cette architecture peut ne pas arriver dans un ´tat stable puisque les entr´es des blocs combinatoires C1 et C2 sont des e e sorties de ces mˆmes blocs. Ce cas de figure se pr´sente e e ae e souvent et apparaˆ en particulier dans la r´alisation d’algorithmes complexes ıt e ´tudi´s au chapitre 11.4 – Chronogrammes de synchronisation de deux automates Une fa¸on simple pour r´aliser ce d´calage est de prendre pour clock2 le c e e compl´ment de clock1. Pour simplifier .1.5. – P > t-´tats1 pour que l’´tat de l’automate 1 soit stable au moment du front e e montant de clock. e Il s’av`re que l’on peut aussi prendre clock1 ´gale ` clock2.

6 – Chronogramme d´crivant la synchronisation de deux automates en boucle e supposons que les deux soient de type Moore. – P > t-sorties2 + t-´tats1 pour que l’´tat de l’automate 1 soit stable au e e moment du front montant de clock. e a e Nous obtenons alors les conditions suivantes sur la p´riode P de l’horloge : e – P > t-sorties1 + t-´tats2 pour que l’´tat de l’automate 2 soit stable au e e moment du front montant de clock. Les deux automates peuvent alors ´voluer ` l’aide de la mˆme horloge clock (chronogramme de la figure 10.6). 10. Chapitre 6) : les instants de changement des entr´es sont e .222 Circuits s´quentiels e entr´es1 e Fonction de sortie C1 Fonction de transition bascules sorties1 entr´es2 e Fonction de sortie C2 Fonction de transition bascules sorties2 init clock init clock Fig. Nous nous limitons ici aux automates de type : e – synchrone (Cf.5 – Cas de deux automates de Mealy en boucle Clock t-sorties1 t-´tats2 e t-sorties2 t-´tats1 e Fig. Synth`se des automates d´crits par leur e e graphe Le point de d´part de cette synth`se est le graphe explicite d’un automate e e d’´tats fini. 2. 10.

Si le feu est orange le e feu passe au rouge. Au d´part le feu est rouge. Paragraphe 1. Orange(O) ou Rouge (R). Chapitre 12).4. 2.1. Synth`se des automates d´crits par leur graphe e e 223 connus et synchronis´s avec l’´volution de l’automate. si une voiture est absente deux fois de suite. e e e En ce qui concerne le choix du type de l’automate Moore ou Mealy. On peut toujours d´crire un automate de Moore ´quivalent e e e e a ` un automate de Mealy (Cf. le signal d’horloge e e permettant d’effectuer cette synchronisation. e e e Nous d´taillons dans ce paragraphe la synth`se de deux types d’architece e ture. le feu reste e au vert . 2. Cependant pour des raisons de comportement teme porel dans le cas de synchronisation d’automates (Cf.1.3). le feu passe au orange.7). il n’y a pas de r`gle pr´cise. il est e e e obligatoire que le circuit r´sultant ´volue toujours en fonction de ses entr´es e e e vers un nouvel ´tat d´termin´ et unique. Nous retrouvons ici les entr´es d’un automate syne e . le type Moore est en g´n´ral plus utilis´.2.1 Un exemple : une commande de feu tricolore On veut r´aliser une commande d’un feu tricolore ` plaque. On va cˆbler les a a portes logiques correspondantes. Paragraphe 1. Nous donnons ensuite les principes de r´alisation d’un deuxi`me type d’are e chitecture dite microprogramm´e. Le comportement du syst`me est le suivant (automate de Moore de la e figure 10. Remarque : Le terme deux fois de suite implique que le temps est d´coup´ e e en intervalles r´guliers. Si le feu est vert : si une voiture est pr´sente. Les informations e a d’entr´es sont : voiture-pr´sente (vp). Dans ce type de synth`se les fonctions de e e sortie et de transition sont en grande partie r´alis´es ` l’aide d’une m´moire e e a e morte (rom). le feu passe au vert sinon le feu reste rouge. ee e – r´actif et d´terministe (Cf. Chapitre 5) : d’un point de vue mat´riel. La sortie est la e e couleur du feu : Vert (V). La synth`se en est plus simple et donc d’un e e int´rˆt p´dagogique important. La r´alisation de ces fonctions bool´ennes est e e effectu´e suivant les techniques de synth`se de circuits combinatoires ´tudi´es e e e e au chapitre 8. Si le feu est rouge : si une voiture est e pr´sente. L’utilisation de ce type d’automate est largement r´pandue. Suivant le syst`me e a e ` sp´cifier une des deux formes peut ˆtre plus complexe que l’autre en nombre e d’´tats et de transitions. Ce type de r´alisation s’inspire des principes de programmation e en langage d’assemblage (Cf. voiture-absente (va). Chapitre 5). La premi`re est dite cˆbl´e car la r´alisation des fonctions de sorties e a e e et de transition est faite ` l’aide de circuits combinatoires.1 R´alisation cˆbl´e e a e Les diff´rentes ´tapes de ce type de synth`se sont expliqu´es et illustr´es e e e e e sur un exemple simple.

Le vocabulaire de sortie {R. e 2.8-a). 10. Le vocabulaire d’entr´e {va. a a e Ce signal d’initialisation est de type synchrone.2 Choix de l’´l´ment de m´morisation ee e Pour pouvoir m´moriser l’´tat courant de l’automate nous avons ` notre e e a disposition les ´l´ments de m´morisation ´l´mentaires pr´sent´s au chapitre 9.7 – Automate d´crivant un syst`me de commande de feu tricolore e e Etat Un Deux Trois (c) Quatre q1 0 0 1 1 q2 0 1 0 1 Vocabulaire va vp (a) e 0 1 Vocabulaire R O V (b) s1 0 0 1 s2 0 1 0 Fig. Le code ea e s1 = s2 = 1 ne correspond ` aucune sortie.224 Circuits s´quentiels e R Un va O Quatre vp va V Trois vp V vp va Deux va vp Fig. Nous utilisons donc des bascules de type D sensibles e e au front. Elles comportent un signal d’activation qui force le changement d’´tat e et un signal d’initialisation (soit ` 1. Reprenons l’exemple. des sorties et des ´tats du syst`me de commande de feu e e e tricolore. ee e ee e e Nous ne pouvons pas utiliser de verrous puisque la valeur de l’´tat suivant e d´pend de l’´tat courant. soit ` 0 suivant le codage de l’´tat initial). 2. 10. e e e c e e deux fois de suite signifie alors pendant deux p´riodes d’horloge successives.3 Codage des entr´es et des sorties e Les ´l´ments des vocabulaires d’entr´e et de sortie sont cod´s en binaire.1.8-b).1. vp} est cod´ ` l’aide e e a d’une variable bool´enne e (Figure 10. Les ee e e codes inutilis´s dans ce codage correspondent ` des cas de valeur phi-bool´enne e a e dans les fonctions de transition et de sortie. chrone ´chantillonn´es sur une horloge qui d´coupe le temps de fa¸on r´guli`re. V} e est cod´ ` l’aide de deux variables bool´ennes s1 et s2 (Figure 10. O.8 – Codage des entr´es. a .

En utilisant les codes choisis pr´c´demment.2. e (q1 . . . – Le circuit combinatoire calculant l’´tat suivant r´alise les fonctions e e bool´ennes : di = gi (q1 . e1 .7 peut ˆtre d´crite e e sous forme de table. e 2. q2 = 0 pour l’´tat initial implique que l’initialisae tion des bascules ` l’aide du signal init est une initialisation ` z´ro. La figure 10.5 Expression alg´brique des fonctions de transition et de sortie e L’architecture g´n´rale du circuit (pour un automate de Moore) est donn´e e e e dans la figure 10. q2 . si est une fonction bool´enne des variables de l’´tat courant : e e si = fi (q1 . et ) les variables codant les entr´es. . e2 . . . q2 . Dans le cas d’un automate de Mealy nous avons : si = fi (q1 . e2 . .8-c donne un e exemple de codage compact des ´tats de cet automate ` l’aide de deux variables e a d’´tats q1 . Soient (d1 . .1.7 comporte 4 ´tats. . qn ). (s1 . . e2 . qn ) les variables codant l’´tat ` l’instant courant. . Chacune a sur son entr´e D un signal e di et sa sortie Q donne un signal qi . e Le choix du code q1 = 0. e La fonction de transition de l’automate de la figure 10. e – Le bloc m´morisant l’´tat courant de l’automate est compos´ de n bascules e e e D sensibles au front de l’horloge clock. . s2 . . e e e e Les variables bool´ennes correspondant ` ce codage sont appel´es variables e a e d’´tats.6. q2 . . L’automate de la figure 10. Les outils de CAO r´alisant cette synth`se prennent e e en compte ces crit`res lors du choix de ces codes. Synth`se des automates d´crits par leur graphe e e 225 2. Chapitre 3).1. . .9. . . – Le circuit combinatoire calculant la fonction de sortie r´alise les fonce tions bool´ennes d´finissant la valeur des si .1. Ce type de codage entraˆ e ıne un nombre maximum de points de m´morisation mais l’´laboration du circuit e e r´alisant l’automate peut se faire d’une mani`re sp´cifique que nous pr´cisons e e e e dans le paragraphe 2. . . .4 Codage des ´tats e L’´tat ´tant m´moris´ dans des bascules. . Il permet une r´alisation e e avec un nombre minimum de points de m´morisation. Un autre type de coe dage souvent utilis´ est le codage un parmi n. . Un tel codage est appel´ compact. Dans ce cas les bascules e doivent comporter les deux types d’initialisation (` 0 et ` 1). . e1 . et ). d2 . . qn . cette table e e . une bascule stockant une infore e e e mation binaire. . sm ) les e a variables codant les sorties et (e1 . les diff´rentes valeurs de l’´tat doivent ˆtre cod´es en binaire. a a Il est a noter que les fonctions bool´ennes de sortie et de transition ` e d´pendent de ces codages et que le choix du codage influence fortement les e caract´ristiques du circuit (par exemple sa complexit´ en nombre de portes) e e et donc ses performances. le nombre minimum de bits permettant de r´aliser le coe e dage est log2 (n). a a e On peut choisir un autre code pour l’´tat initial. Dans le cas d’un automate e e de Moore. Soit e e e e n le nombre d’´tats. . qn . Diff´rents types de codage peuvent ˆtre utilis´s (Cf. . dn ) les variables codant l’´tat suivant. q2 . et ). q2 .

La figure 10.6 Cas particulier du codage des ´tats un parmi n e Ce codage consiste ` coder n ´tats sur n bits en repr´sentant chaque ´tat par a e e e un bit ... Les fonctions de l’automate e e c e e comportent alors beaucoup de phi-bool´ens puisqu’il y a un nombre important e de codes inutilis´s pour les ´tats..1. e e ea 2. Ce tableau correspond e e a ` la table de v´rit´ des deux fonctions bool´ennes d1 . la bascule 1.10 donne e e e ces tables ainsi que celles correspondant aux sorties.9 – La structure d’un circuit r´alisant un automate de fa¸on cˆbl´e e c a e donne les valeurs des variables codant l’´tat suivant (d1 .et t QD n .226 Circuits s´quentiels e Circuit combinatoire calculant les sorties m s1 . e Par exemple. e e Toutefois on peut obtenir plus simplement une solution ´quivalente (et e simplifi´e) du circuit en se calquant directement sur le graphe de l’automate.sm Circuit combinatoire calculant l’´tat suivant e e1 . On peut e a proc´der de la mˆme fa¸on que pr´c´demment. 10. e pour r´aliser le circuit on applique les r`gles suivantes : e e . d2 ) en fonction des e variables codant l’´tat courant (q1 . q2 ) et de l’entr´e (e).. d2 .qn init clock n d1 .. est charg´e avec la valeur 1 si l’´tat e e e e c e e courant est 1 et l’entr´e e ou si l’´tat courant est 4.13 montre la r´alisation du circuit de commande de feu tricolore. le code d’un ´tat comporte alors un seul bit (parmi n) ` 1.11 d´crit le e circuit r´sultant r´alis´ ` base de portes NAND et d’inverseurs. q1 . codant l’´tat 1.dn M´morisation de l’´tat courant e e Fig... e La figure 10. La figure 10. De fa¸on plus g´n´rale....

Les expressions bool´ennes correspondantes sont : d1 = e q1 .q2 .¯ + q1 . ¯ e . Synth`se des automates d´crits par leur graphe e e 227 entr´e e va vp va vp va vp va vp ´tat courant e Un Un Deux Deux Trois Trois Quatre Quatre ´tat suivant e Un Deux Trois Deux Quatre Deux Un Un e 0 1 0 1 0 1 0 1 q1 0 0 0 0 1 1 1 1 q2 0 0 1 1 0 0 1 1 d1 0 0 1 0 1 0 0 0 d2 0 1 0 1 1 1 0 0 ´tat e Un Deux Trois Quatre sortie R V V O q1 0 0 1 1 q2 0 1 0 1 s1 0 1 1 0 s2 0 0 0 1 Fig.e + q1 .q2 . 10. s1 = q1 .q2 . 10.q2 .e et d2 = q1 .2.10 – Tables de d´finition des fonctions de transition et de sortie de l’automate e de commande de feu tricolore e s2 s1 Fonctions de sortie d1 d2 DQ DQ q1 q2 init clock Fonctions de transition Fig.q2 et s2 = q1 .q2 + q1 .7 ` base de portes NAND et e a de bascules D.11 – Synth`se de l’automate de la figure 10.

e u – L’initialisation s’effectue en initialisant ` 1 la bascule correspondant ` l’´tat a a e initial et ` 0 les autres bascules. a – Au cas par cas une combinaison de portes ET-OU peut ˆtre remplac´e par e e une combinaison NAND-NAND. . a e e – On r´alise chaque sortie par une porte OU qui a comme entr´es les sorties e e des bascules correspondant aux ´tats o` la sortie vaut 1.2 R´alisation microprogramm´e e e Dans ce type de synth`se les fonctions de transition et de sortie sont e r´alis´es ` l’aide d’une m´moire de type ROM. Sur e e la figure la commande d’initalisation n’est pas repr´sent´e : la commande init e e initalise la bascule de num´ro 1 ` 1 et les autres ` 0. q3 . Si un arc sort de l’´tat X pour toute entr´e du vocabulaire.12).12 – Codage 1 parmi n des ´tats du syst`me de commande de feu tricolore e e – On associe ` chaque ´tat un point de m´morisation (bascule D ` front). La figure 10. Elle permet en effet de modifier l’automate par simple reprogrammation d’une eprom (Cf. Chaque ligne de la m´moire correse pond ` une micro-instruction du microprogramme. Pour l’exemple du feu tricolore. nous choisissons de coder l’´tat ` l’aide des e a 4 variables q1 . a Ce type de synth`se a beaucoup ´t´ utilis´ pour la r´alisation de gros autoe ee e e mates demandant une mise au point importante. e a e – Pour un ensemble d’arcs entrants dans un ´tat Y les diff´rentes sorties des e e portes ET correspondantes sont mises en entr´e d’une porte OU dont la e sortie est reli´e ` l’entr´e de la bascule correspondant ` l’´tat Y. q4 (Figure 10. q2 . Chapitre 9). Dans le e a e a e cas o` il n’y a qu’un seul arc entrant dans un ´tat. e a a 2. a e e a – Un arc sortant de l’´tat X portant l’entr´e E est r´alis´ par une porte ET e e e e dont les entr´es sont la sortie de la bascule correspondant ` l’´tat X et e a e l’entr´e E. Chaque adresse de cette e e a e m´moire est le code d’un ´tat de l’automate. cette e e e porte E est inutile (comme l’arc de l’´tat 4 ` l’´tat 1 dans l’exemple).228 Circuits s´quentiels e Etat Un Deux Trois Quatre q1 1 0 0 0 q2 0 1 0 0 q3 0 0 1 0 q4 0 0 0 1 Fig. 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 d’assemblage pour du langage machine. 10. Le codage des entr´es et des sorties e reste inchang´.13 montre l’automate et le circuit r´sultant. cette porte OU est u e inutile (comme ` l’entr´e de l’´tat 3 ou 4).

On a vu au paragraphe 2. – quand un ´tat x poss`de 2 successeurs. s’il ne change pas le comportement de e e l’automate d’un point de vue fonctionnel. change son comportement temporel. e 2. le code de celui-ci est e e e soit le code de x plus 1.4 e e du chapitre 5 comment effectuer une telle transformation.2. L’autre est choisi de mani`re ` minimiser le nombre de codes.14. des transformations pr´liminaires de l’automate peuvent ˆtre n´cessaires : e e e e chaque ´tat doit poss´der au plus deux successeurs. soit un autre code choisi afin de limiter le nombre de codes.1 Architecture g´n´rale d’une r´alisation microprogramm´e e e e e Cette technique s’applique ` la synth`se d’automates de type Moore. En effet. 10. le code de l’un des 2 est le code de x e e plus 1. la partie contrˆle d’un tel o processeur est un automate de plusieurs centaines d’´tats et de sorties.13 – Un circuit r´alisant un automate avec un codage un parmi n des ´tats e e Elle a ´t´ en particulier employ´e pour la conception de la partie contrˆle de ee e o certains processeurs cisc comme le 68000. Il est ` remarquer a que l’ajout d’´tats suppl´mentaires. Les codes des ´tats sont choisis de fa¸on ` ce que : e c a – quand un ´tat x ne poss`de qu’un ´tat successeur. Synth`se des automates d´crits par leur graphe e e 229 e © ¨ © ¨ 1 e 2 e ¯ 3 e ¯ 4 s2 s1 e e ¯    D Q1 ! e 3 ¡        § ¦ 4 s2 % $ % $ Fig. e e e Contraintes sur l’automate Pour des raisons li´es ` l’architecture utie a lis´e.2. Elle e est aussi utilis´e dans des circuits de type automate programmable. Il se e a   # "   # "     ¥ ¤ £ ¢ £ ¢ s1 2 s1 . L’ara e chitecture g´n´rale du circuit est donn´e dans la figure 10.

l’acc`s ` ce code se faisant ` l’aide du code de l’´tat e e a a e courant (adresse d’une ligne de la m´moire). entr´es) alors succ[q] sinon q+1. il faut pouvoir sp´cifier quelle est la condition permettant de e choisir l’´tat successeur (d´pendant des entr´es de l’automate) quand il y en e e e a deux. Quand le code de l’´tat suivant n’est pas le e e code de l’´tat courant plus 1. e e Les codes sont choisis de fa¸on ` ce que : c a – quand un ´tat de code q ne poss`de qu’un ´tat successeur. cond [q] sp´cifie e e e e soit la condition toujours vraie et ´tat-suivant(q) = succ[q]. Calcul de l’´tat suivant Le code de l’´tat courant est m´moris´ dans des e e e e bascules et fournit une adresse de la m´moire.230 Circuits s´quentiels e succ [q] +1 q+1 ´tat-suivant e sorties[q] Bascules q ROM clock init Fonction f de calcul de condition entr´es e Fig. e Le fait que chaque ´tat ait au maximum deux ´tats successeurs permet de e e limiter la largeur de la m´moire.14 – Architecture d’une r´alisation microprogramm´e d’un automate e e cond [q] (types de condition) peut que cela ne soit pas possible. soit cond[q] la condition ` tester pour e a choisir l’´tat successeur suivant les entr´es de l’automate. soit succ[q] le code de l’´tat successeur (qui n’est e e pas q + 1) contenu dans la m´moire. 10. L’architecture mie e croprogramm´e comporte les circuits permettant de d´finir le code de l’´tat e e e suivant comme suit : ´tat-suivant(q)= si f (cond[q]. la donn´e dans la m´moire e e e du code de l’´tat suivant. Cette condition est aussi sp´cifi´e dans la m´moire et correspond ` e e e a certaines sorties de celle-ci. son code se trouve dans la m´moire. On parle de champ condition. soit toujours e . e Les primitives de calcul de l’´tat suivant sont de deux types : une e incr´mentation (circuit +1 sur la figure 10. Soit q le code d’un ´tat. e e Par ailleurs.14) . on ajoute alors un ´tat suppl´mentaire e e afin d’obtenir cette configuration.

Elles peuvent alors e e faire r´f´rence. quelles que soient les entr´es de l’automate. au niveau de la syntaxe. e e – quand un ´tat q poss`de 2 successeurs.2. pour chaque ´tat. Chapitre 12).14). . la valeur de chaque sortie est m´moris´e une fois e e e pour toute dans la ligne de la m´moire correspondant ` l’´tat (not´ sorties[q] e a e e sur la figure 10. D’autres techniques sont aussi souvent employ´es pour minimiser e la largeur de la m´moire d´pendant des sorties. Les micro-instructions permettent u e e aussi de sp´cifier des valeurs sp´cifiques pour les sorties. Des techniques ont ´t´ d´velopp´es pour e ee e e d´finir plusieurs ´tats dans la m´moire sans trop en augmenter la largeur. repris ci-dessous. ` des entit´s ext´rieures ` l’automate. a Le calcul de l’´tat suivant est donc r´alis´ ` l’aide d’une partie de la e e e a m´moire. La s´lection e a e e selon cette condition entre la sortie de l’incr´menteur et de la m´moire e e pourra se faire naturellement ` partir d’un multiplexeur 2 voies vers 1. Par exemple. on peut utiliser e e le champ contenant l’´tat successeur pour certaines sorties quand celui-ci n’est e pas n´cessaire. e On peut aussi remarquer que dans le cas tr`s particulier de l’exemple de e la commande de feu tricolore. Chapitres 11 et 14). ee a e e a comme par exemple des registres ou une UAL dans le cas d’une partie contrˆle o d’un processeur (Cf. Calcul des sorties Apr`s avoir proc´d´ comme pr´c´demment au codage e e e e e des sorties. On retrouve ainsi des micro-instructions de branchement conditionnel pour les cas o` un ´tat poss`de deux successeurs. un circuit combinatoire d´livre e la valeur de la fonction bool´enne f calculant la condition ` tester sp´cifi´e e a e e dans la m´moire cond[q] ` partir des entr´es de l’automate. pour traiter les conditions d’entr´es e e e se trouvant sur les transitions de l’automate. d’un incr´menteur et d’autres circuits combinatoires pour le calcul e e de la condition (en gris sur la figure 10. Ainsi par exemple 2 a bits suppl´mentaires peuvent suffire pour r´soudre les cas o` un ´tat poss`de 4 e e u e e successeurs. Synth`se des automates d´crits par leur graphe e e 231 fausse et ´tat-suivant(q) = q + 1. Elles e e e consistent par exemple ` ne donner dans la m´moire que les bits qui changent a e pour les adresses successives ` partir d’une adresse de base. les concepteurs d´finissent un langage particulier e e dont la syntaxe ressemble ` celle d’un langage d’assemblage (Cf. Optimisations On a limit´ ici le nombre d’´tats successeurs ` 2 pour ne pas e e a augmenter la largeur de la m´moire.14). a Chaque ligne de la ROM est une micro-instruction du microprogramme. e e Microprogrammation Pour sp´cifier le contenu de la m´moire et permettre e e une mise au point ais´e. la colonne la plus ` gauche a pourrait ˆtre supprim´e puisqu’elle ne comporte que des 0.

Nous choisissons c = 1 pour la condition e et c = 0 pour la condition e. La fonction e f permettant de calculer la condition d´terminant le choix de l’´tat suivant est e e r´alis´e ` l’aide d’un multiplexeur 2 voies vers 1 (Cf. e Le contenu de la m´moire dans le cas du feu tricolore pourrait ˆtre d´crit e e e par le microprogramme suivant de la figure 10.2. 10. e e Un seul bit c suffit donc pour sp´cifier dans la ROM quelle est la condition ` e a tester. La ROM e e e poss`de 4 lignes. et1. et2. bne et be sont les micro-instructions de branchement sur les e conditions e et e. e e a L’initialisation se fait ` l’aide du signal init qui initialise les bascules ` 0 a a puisque le code de l’´tat initial est 00. ´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 - s1 s1 s2 Fig. VRAI dans l’´tat Quatre. Figure 10. . Les diff´rentes conditions ` tester sont : e dans l’´tat Un . ba et1 est une micro-instruction de branchement inconditionnel ` une a ´tiquette et1. Seules les sorties ` 1 dans un ´tat sont sp´cifi´es dans la a e e e micro-instruction correspondante. Le codage compact e e e choisi pr´c´demment v´rifie la condition sur le code des ´tats successeurs (q+1 e e e e e ou succ[q]).16.15 – Architecture d’une r´alisation microprogramm´e de l’exemple du feu tricoe e lore et1 : et2 : bne be be ba et1 et2. deux pour le codage de l’´tat suivant. Deux bits de la ROM sont donc utilis´s pour les sorties. Pour les sorties.2 Exemple de la commande de feu tricolore Chaque ´tat poss`de au plus deux ´tats successeurs. e dans e a les ´tats Deux et Trois . un e e pour le calcul de la condition.15). e e En utilisant un incr´menteur modulo 4 cette derni`re condition est inutile. 10.232 Circuits s´quentiels e +1 0 1 DQ DQ 2 0 0 0 0 0 1 1 0 0 1 1 φ s1 0 1 1 0 0 0 0 1 s2 1 0 e c Fig.16 – Microprogramme de l’exemple du feu tricolore 2. on choisit le mˆme codage que pr´c´demment.

certaines de ces combie naisons ne peuvent pas survenir dans certains ´tats. p 105 et E6. Les sorties e sont cod´es sur 2 bits (Cf. s1 . e e Exemple E10.3 Un exemple d´taill´ : la machine ` caf´ e e a e Nous reprenons l’exemple de la machine ` caf´ pr´sent´ dans le chapitre 5. s2 . 3. o on obtient les expressions : d1 = e2 . Ainsi on ne peut avoir ni e s1 . Les e codages choisis sont donn´s dans la figure 10.18. Figure 10.q2 +e1 . p 133) a e Nous supposons ici que les entr´es s1 . e3 non e utilis´s correspondent ` des cas qui ne peuvent survenir. fs }.e2 .1 : Machine ` caf´ (suite de E5. s5 et fs n’´tant pas toutes possibles. Nous ´tudions le codage des e entr´es/sorties du contrˆleur et la synth`se d’un circuit s´quentiel d’apr`s la e o e e e machine s´quentielle qui d´crit son comportement. Chapitre 8). e Il y a 4 ´tats que nous codons sur deux bits q1 et q2 (Cf. e L’´tat est m´moris´ dans des bascules D sensibles au front montant de e e e l’horloge clock. Synth`se des circuits s´quentiels par flots de donn´es e e e 233 2.3. Le vocabulaire de sorties de e e l’automate ´tant { CB.q1 . La figure 10.18). Pour les sorties on trouve : sortie1 = q1 . La fonction de transition est phi-bool´enne. vues les sp´cifications de l’automate. a Si l’on effectue une minimisation de la forme polynˆmiale (Cf. ni s2 . e e Nous proc´dons de mˆme pour les sorties. s5 . Les combinaisons sur les 4 entr´es s1 . Le vocabulaire d’entr´e de l’automate est {rien. ni s5 dans les ´tats 2F re¸u et Trop per¸u. s2 et s5 venant des capteurs et que e l’entr´e fs venant de la machine ` caf´ sont synchronis´es sur le front d’une e a e e horloge clock.q1 +e3 et d2 = e1 . Il est proportionnel au nombre de valeurs possibles des e variables de l’algorithme.18). 3 bits suffisent pour les coder. a e e e La figure 10.19 donne la table de v´rit´ des deux fonctions de e e transition d1 et d2 .q2 +e3 . trois cas sont possibles. la mod´lisation sous forme de graphe e d’´tats fini devient rapidement impossible.3. . Figure 10. De ces ´quations on peut ais´ment d´duire la r´alisation de cet automate e e e e en utilisant 2 bascules D et des portes ou un PLA (Cf.2. En effet le nombre d’´tats peut e e devenir tr`s grand.q2 et sortie2 = q1 .e2 . Chapitre 2). Nous allons ´tudier comment ´laborer une r´alisation cˆbl´e de e e e a e cet automate.17 rappelle son graphe de Moore. rien signifie : e toutes les autres entr´es sont fausses. e e s2 .q2 +e1 . La derni`re ligne r´sume tous les autres cas pour lesquels e e les deux fonctions sont ` φ. Synth`se des circuits s´quentiels par flots e e de donn´es e Dans le cas o` la sp´cification du syst`me ` r´aliser est donn´e sous forme u e e a e e d’algorithme manipulant des variables. e2 . Les 3 codes sur e1 . On ne peut avoir fs dans e c c les autres ´tats. e a D’autre part. AUCUNE}. RCB.

10.19 – Tables de v´rit´ des fonctions de transition de l’automate de contrˆle de la e e o machine ` caf´ a e .B C.C. 10.B sortie1 0 1 0 sortie2 0 1 1 Etats Attentes Pi`ces e 1F re¸u c 2F re¸u c Trop per¸u c q1 1 1 0 0 q2 1 0 1 0 Fig. des sorties et des ´tats pour la synth`se de l’automate e e e de contrˆle 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.B Trop per¸u c s2 Fig.B s1 rien rien R. 10.234 Circuits s´quentiels e s5 AUCUNE Attente Pi`ces e rien s2 fs fs rien 2F re¸us c s1 s5 1F re¸u c AUCUNE C.17 – Graphe de Moore de l’automate de la machine ` caf´ a e s1 0 1 0 0 0 s2 0 0 1 0 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 Vocabulaire de sorties AUCUNE R.C.18 – Codage des entr´es.

L’´tat du circuit s´quentiel est d´fini par la e e e e e valeur des variables apparaissant dans l’algorithme. e Une m´thode syst´matique permet de r´aliser le circuit sans passer par la e e e d´finition de son graphe d’´tats. l’´tat est m´moris´ dans un ensemble de e a e e e e bascules qui contiennent la valeur de U . 2. tant que vrai : u= (u+1) mod 2n avec u repr´sent´ sur n bits peut ˆtre mod´lis´ par un automate d’´tats fini dont le e e e e e e graphe comporterait 2n ´tats. l’automate comportant e autant d’´tats que de valeurs possibles de U . Un circuit combinatoire calcule la valeur a suivante U de U .1 Circuit flot de donn´es ` une seule variable : e a la suite de Syracuse Nous nous int´ressons ici ` l’´tude d’un circuit qui d´livre successivement e a e e les entiers composant une suite particuli`re (dite de Syracuse) d´finie par : e e si UN est pair alors UN +1 = UN DIV 2 sinon UN +1 = 3 * UN +1. Un registre est alors utilis´ e pour chacune de ces variables. . Puis nous donnons une id´e de la notion de pipeline. en fixant le e e a nombre de bascules de ce registre ` n. L’enchaˆ e e e ınement des calculs se fait au gr´ du flot des donn´es ` travers ces composants. Ainsi l’exemple e e a ci-dessus se r´alise ´videmment avec un incr´menteur n bits et un registre n e e e bits.3. o` DIV d´note u e la division enti`re. e La figure 10. Comme dans la synth`se cˆbl´e. Nous sommes oblig´s de fixer une borne sup´rieure ` U . nous illustrons cette m´thode sur deux e exemples. Synth`se des circuits s´quentiels par flots de donn´es e e e 235 Par exemple l’algorithme : u ←− 0 . e 3. La boucle principale est r´alis´e autour e e de ce registre puisque U change de valeur ` chaque it´ration. Une it´ration a e e est effectu´e pendant une p´riode de l’horloge clock activant les bascules du e e registre. 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. Dans la suite de ce paragraphe. Prenons comme hypoth`se que U est born´ quelle e e que soit la valeur de U 0. 1 pour e certaines valeurs de U 0. On peut d´crire le calcul de cette suite par l’algorithme : e e Lexique U 0 : l’entier > 0 donn´ . Chaque calcul apparaissant dans l’algorithme est r´alis´ par les composants combinatoires n´cessaires. Nous pouvons alors d´crire cet algorithme ` l’aide e a d’un automate d’´tats fini.20 donne l’architecture d’un circuit flot de donn´es r´alisant e e cet algorithme. mais cela serait fastidieux.

La figure 10. a L’initialisation de U ` U 0 peut se faire ` l’aide d’un multiplexeur a a s´lectionnant l’entr´e du registre m´morisant U . sauf les tranches 0 et n-1.22 calcule la partie enti`re de la racine carr´e e e de l’entier naturel x. . . Toutes les tranches sont identiques. . e a 2 * x se r´alisant ` l’aide d’un d´calage vers les poids forts avec introduction e a e d’un 0. .236 Circuits s´quentiels e init clock U U0 1 U0 1 0 DQ x DIV 2 3∗x+1 n 0 1 U Fig. Le composant calculant 3 * x + 1 peut se r´aliser ` l’aide d’un additionneur en observant que 3 * x + 1 = 2 * x + x + 1. puis en s´lectionnant un des deux r´sultats ` l’aide e e a d’un multiplexeur. Le composant calculant x DIV 2 est r´alis´ par un d´calage vers les poids e e e faibles avec introduction d’un 0. . e e e Si l’entr´e init est ` 1 le circuit initialise U par U 0.2 Circuit flot de donn´es ` plusieurs variables : e a la racine carr´e e L’algorithme de la figure 10. .alors . est r´alis´e en effectuant en parall`le les cale e e culs : U DIV 2 et 3 * U + 1. Le lecteur pourra s’int´resser au probl`me ` titre d’exercice sur e e a les circuits combinatoires. 10. On retrouve les multiplexeurs de l’initialisation (en haut) et de e le i l’action si alors sinon en bas. la valeur de U 0 ou de U . 3. La premi`re boucle de l’algorithme qui consiste ` calculer la valeur de la e a plus petite puissance de 4 sup´rieure ` x peut se faire ` l’aide d’un circuit e a a combinatoire. L’op´ration d’incr´mentation + 1 peut s’effectuer en for¸ant la retenue e e c entrante de l’additionneur ` 1. La division et multiplication par 2 se retrouvent dans le d´calage des indices sur l’entr´e de l’additionneur et du multiplexeur e e du bas. .21 donne l’architecture de ce circuit sous forme de tranches de 0 ` n-1. L’´valuation de l’expression de la condition ne demande pas e de calcul puisqu’elle correspond au bit de poids faible de U (U0 ). sinon il donne ` U sa e a a prochaine valeur U . Chaque a tranche impl´mente l’algorithme sur 1 bit et contient une bascule m´morisant e e `me bit de U .20 – Calcul de la suite de Syracuse par un circuit ` flot de donn´es a e L’action si .sinon .

21 – Architecture en tranche pour le calcul de la suite de Syracuse par un circuit ` flot de donn´es a e Lexique x : l’entier ≥ 0 donn´ e u. y. r´sultat : des entiers ≥ 0 e Algorithme u ←− 1 tantque u ≤ x : u ←− 4* u z ←− u . z.3.z z ←− z + 2 * u r´sultat ←− z DIV 2 e Fig.22 – Algorithme de calcul de la racine carr´e [BB83] e . Synth`se des circuits s´quentiels par flots de donn´es e e e 237 U 0n−1 U 0i U 00 init D Q Qn−2 Qi Q D Q Q0 Qi−1 Add ci Qi c1 Q1 D clock 0 Add 1 Add 0 cn−1 ci+1 Qn−1 Qi+1 Q0 tranche n-1 tranche i tranche 0 Fig. y ←− x tantque u > 1 : u ←− u DIV 4 z ←− z DIV 2 . 10.u si z ≤ y : y ←− y . 10.

est N ouvU = si (U − 1 = 0) alors U sinon U DIV 4. La e e e boucle correspond ` la fonction de transition de l’automate. chaque multiplexeur d´cidant du changement des variables U . Le calcul de e . Pour cela on peut faire une e e e soustraction de 1 ` U . fabriquer le bool´en a e U > 1 ` l’aide d’une simple porte OU sur les tous les bits de U sauf le premier a (composant test1 sur la figure 10. Le pr´dicat (U > 1) a besoin d’ˆtre calcul´. La progression s’arrˆte quand U arrive ` e a la valeur 1. Le r´sultat est pr´sent tout au long du d´roulement de l’algorithme e e e e mais il n’est valide que lorsque U ≤ 1. La boucle tant que U > 1 est r´alis´e ` l’aide des 3 multiplexeurs du bas de e e a la figure 10. z et y modifi´es dans cette boucle constituent e l’´tat de l’automate. On peut aussi. et Y . on reproduit ce comportement e en ne faisant plus changer les valeurs de U . donc ` une p´riode de a a e l’horloge activant les registres.23.Z e et Y . Chaque calcul apparaissant dans la boucle est r´alis´ ` l’aide d’un ou plue ea sieurs composants apparaissant dans un ´tage de la figure 10. 10. e Les variables internes u. Par exemple la fonction de transition.23). Comme un automate ne s’arrˆte pas.238 Circuits s´quentiels e r´sultat e U div4 Z Y u div 4 div2 moins z div 2 .23 – Calcul de la racine carr´e par un circuit ` flot de donn´es e a e Nous nous int´ressons ici ` la deuxi`me boucle de l’algorithme. e o` N ouvU d´note le nouvel ´tat.23. Elles sont m´moris´es dans trois registres U . u e e On ne s’int´resse pas ici au dialogue du circuit avec un hypoth´tique monde e e ext´rieur. Un passage dans a la boucle correspond ` une transition de l’automate.u mult2 plus moins test z + 2*u y-z si z ≤ y tant que u > 1 test1 Fig. plus simplement. Le circuit e a e d’ensemble est donn´ figure 10.23. restreinte a ` la partie U de l’´tat. Z.

ligne de c e pipe. boisson ou plat chaud dans e l’ordre o` ces plats sont pr´sent´s puis payent .3.3 Notion de pipeline Le principe de pipeline est une optimisation particuli`re du principe de e flot de donn´e. On suppose qu’` l’entr´e les consommateurs arrivent ` intervalles constants a e a de dur´e T. Le lecteur peut trouver une description plus d´taill´e e e dans [HP94]. Le e calcul Z + 2 ∗ U n´cessite un additionneur (composant plus sur la figure). mult2 et div4 sur la figure). Le e calcul Y − Z n´cessite un soustracteur (composant moins sur la figure). dessert. La r´alisation de a e l’instruction si Z ≤ Y est effectu´e ` l’aide de deux multiplexeurs command´s e a e par la sortie du composant test et d´cidant du changement des valeurs de Z e et Y par les r´sultats des calculs Z + 2 ∗ U et Y − Z. Evoquons les avantages et inconv´nients des deux formules : attente dans e le pipeline derri`re l’ind´cis qui h´site entre frites et pommes saut´es. Une traduction fran¸aise.. Au premier plat pr´sent´ le premier client met moins de T ` choisir. e 3. e L’organisation sous forme de pipeline d’un syst`me s´quentiel digital s’ape e plique ` des classes de fonctions particuli`res : il s’agit de syst`mes qui d´livrent a e e e un flot de sorties en fonction d’un flot d’entr´es. Si un client met plus de T ` a choisir ou s’il veut passer au rayon suivant plus vite que T. Synth`se des circuits s´quentiels par flots de donn´es e e e 239 Z DIV 2 − U n´cessite un soustracteur (composant moins sur la figure). “Les Temps Modernes” de Charlie Chaplin). On peut aussi risquer a c oct´oduc. . e Le calcul du pr´dicat Z ≤ Y n´cessite le calcul de Z −Y ou Y −Z. en respectant un cadencement : e e e la N`me sortie est l’image de la N`me entr´e.. Son utilisation est largement r´pandue dans la conception des e e microprocesseurs actuels. On e n´glige ´videmment les multiplications ou divisions par une puissance de 2 e e (composants div2. on peut a a passer ` la caisse avant un consommateur arriv´ avant mais qui prend chaque a e plat. Le processus peut continuer. on profite e e du calcul de Y − Z pour l’obtenir ` travers le composant test. bouscue e e e lade dans le buffet asynchrone. On peut le prononcer ` la fran¸aise. e e e a A l’instant T il passe alors au rayon du deuxi`me plat et un deuxi`me client e e prend sa place au premier rayon. ol´oduc. Ce sont de simples d´calages. le syst`me se met e a ` mal fonctionner (Cf. n’ayant qu’un rapport lointain avec ce dont nous parlons. A l’instant 2*T. Par opposition on trouve des organisations de type buffet o` chau cun passe d’un comptoir ` l’autre ` sa guise. prennent ou non entr´e. le premier client passe au troisi`me rayon. nous gardons le terme ”pipeline”. mais l’usage est que l’on ne se u e e double pas. Il se prononce avec les diphtongues (aI ) /paI plaI n/. Si l’on prend peu de plats. Remarque : Le terme de pipeline est un mot anglais. le second client au second rayon et un troisi`me arrive dans e e le premier rayon. On peut voir une analogie avec e la file d’attente de certaines caf´t´rias ou cantines : les clients arrivent dans ee un certain ordre.

La sortie sur 3 fils (s2 . e V´rifiez en dessinant un chronogramme que le circuit de la figure 10. e e 4. La simultan´¨ e est n´cessaire au bon fonctionnement du syst`me.2 : Compteur On veut r´aliser un compteur. e e a e Comment pourrait-on r´aliser un circuit ´quivalent ` l’aide d’un circuit e e a combinatoire calculant une sortie S sur 3 bits ´gale ` une entr´e E (sur 3 bits) e a e plus 1 ? Ce circuit a fait l’objet d’une ´tude de cas dans le chapitre 8. L’initialisation ` 0 des sorties se fait e a a ` l’aide du signal init actif ` 1. A la date 2. Le circuit combinatoire e e C1 calcule f1 sur la sortie de R1 .3 : Automate reconnaisseur de s´quence e Donner un codage binaire de trois informations a. e e e E10. C2 calcule f2 sur la sortie de R2 . A la date 1. L` s’arrˆte l’analogie avec le restaurant self-service o` a e u l’on passe au rayon suivant de fa¸on un peu asynchrone (d`s que l’on a fini ` c e a un rayon et que le client pr´c´dent a lib´r´ la place).24. un deuxi`me item d’entr´e est charg´ dans le registre R1 . s0 ) est incr´ment´e modulo 8 ` e e a chaque front montant d’une entr´e incr. Le circuit combinatoire C1 calcule une fonction f1 ` partir de la e a sortie de ce registre. e e ee Le temps de r´ponse unitaire pour chaque traitement est le produit de la e p´riode par le nombre de tranches dans le pipeline. voire tr`s sup´rieur si le pipeline est e e e mal ´quilibr´. s1 .24 – Un circuit ` pipeline ` trois niveaux a a On a un fonctionnement du mˆme type dans le syst`me mat´riel d´crit par e e e e la figure 10. . 10. Evidemeıt´ e e ment la p´riode T de l’horloge qui pilote les chargements de tous les registres e doit ˆtre sup´rieure au maximum des d´lais des circuits combinatoires intere e e venant dans le pipeline. Donner l’automate de Moore correspondant ` a a ces sp´cifications. Donner une r´alisation cˆbl´e de cet automate.25 a e le mˆme comportement que les circuits pr´c´dents. un premier item d’entr´e est charg´ dans le registre e e d’entr´e R1 . b et c et construire une r´alisation de l’automate ´tudi´ au chapitre 5 reconnaissant le langage r´gulier e e e e ∗ ∗ ab + c. Il d´livre en sortie les entiers successifs de 0 e e a ` 7 (sur 3 bits).240 Circuits s´quentiels e Entr´es e Clock R1 C1 R2 C2 Sorties Fig. Il peut ˆtre sup´rieur ` la e e e a somme des d´lais de chacun des circuits. Sie e e multan´ment R2 est charg´ avec la sortie du circuit C1 . Exercices E10.

e e e paragraphe 1. 10. . moins. L’´volution de l’´tat (c’est-`-dire de l’entier u) est d´finie ainsi : e e a e u ←− 0 .4 : Compteur/d´compteur modulo 10 e Un automate m´morise un entier naturel u de l’intervalle [0. e a e Faire la synth`se cˆbl´e de cet automate. On suppose que l’entr´e e est synchronis´e sur les fronts e e montants d’une horloge clock. Elle doit rester ` 1 jusqu’au a prochain front montant de clock.4.5 : D´tecteur de front e On veut r´aliser l’automate du d´tecteur de front d´crit dans le chapitre 9. La sortie s passe ` 1 apr`s chaque front montant a e de e et au front descendant de clock suivant. Exercices 241 incr clock Q reset s2 s1 D Q reset s0 clock D Q reset clock D init Fig. 10.26 correspond ` ces sp´cifications. Quelle doit ˆtre le signal que l’on e a e e doit mettre sur l’entr´e d’activation des bascules de l’automate ? La sortie e s de l’automate reste ` 1 pendant une p´riode de l’horloge. Il a deux entr´es e e plus. V´rifier que l’automate de la figure 10.25 – Circuit r´alisant un compteur sur 3 bits e e ¯ e ¯ s=0 e e ¯ s=1 e e s=0 Fig. 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 r´alisation en portes et bascules de ce compteur/d´compteur e e modulo 10.2. 9]. E10.26 – Graphe de Moore de l’automate correspondant au d´tecteur de front e E10. comment faire a e pour qu’elle reste ` 1 seulement pendant la demi-p´riode voulue ? Faire un a e chronogramme pour comprendre.4.

Le contrˆleur poss`de comme pr´c´demment l’entr´e D´marrage. les commandes correspondantes peuvent e a a ˆtre effectu´es simultan´ment. Entr´ee e Lessive. D´marrer passe ` 5 volts un court instant lorsque l’utilisateur e a lance un programme de lavage. Donner le graphe de l’automate d’´tats fini qui correspond au e contrˆleur de la machine ` laver. Entr´e-Eau (EE). LMV2. Init et D´marrer. et Fin) et les sorties du circuit (LMV1. un rin¸age : entr´e de l’eau et lancement a c e du tambour ` vitesse lente . Il a en sortie les 4 commandes Lancer-MoteurVitesse1 (LMV1). de la lessive et e e lancement du tambour ` vitesse lente . Pour les ´tapes ` plusieurs tˆches. Il repasse ` 0 volts lors du lancement d’une nouvelle a a commande. un essorage : lancement du tambour ` vitesse a a rapide. Si Prog vaut 1 le programme de lavage est celui d´fini pr´c´demment. EE. Lancer-Moteur-vitesse2. 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. e On veut maintenant offrir ` l’utilisateur 2 programmes au choix. La machine ` laver poss`de 4 e o a a e fils en entr´e permettant d’effectuer des commandes sur les ´l´ments de la mae ee chine : Lancer-Moteur-vitesse1. Donner le dessin du circuit en faisant apparaˆ ıtre les entr´es (Init.6 : Machine ` laver a On veut r´aliser un contrˆleur de machine ` laver. La mise sous tension de 5 volts de ces fils correspond ` : a – Lancer-Moteur-vitesse1 : active le moteur du tambour de la machine ` une a vitesse lente pendant une dur´e fixe T1 (permettant le lavage) e – Lancer-Moteur-vitesse2 : active le moteur du tambour de la machine ` une a vitesse rapide pendant une dur´e fixe T2 (permettant l’essorage) e – Entr´e-Eau : permet l’arriv´e de l’eau dans le tambour pendant une dur´e e e e fixe T3 (active une pompe ` eau) a – Entr´e-Lessive : ouvre le conteneur de lessive (pour la mettre dans le tame bour). a a On veut r´aliser le circuit permettant de commander cette machine. si e e e Prog vaut 0 le programme de lavage correspond seulement aux ´tapes de lavage e et rin¸age. La machine ` laver poss`de 1 fil Fin en sortie indiquant la fin d’une tˆche a e a lanc´e par l’une des 4 commandes pr´c´dentes. e D´marrer. Entr´e-Eau. Fin passe alors ` 1 ` la fin de la tˆche la e e e a a a plus longue. Init est la commande d’initialisation ` la mise e e a sous tension. c o e e e e e Donner le graphe de l’automate correspondant ` ce nouveau contrˆleur et en a o r´aliser une synth`se. Lancer-Moteur-Vitesse2 (LMV2). Pour cela a on rajoute au contrˆleur une entr´e Prog sp´cifiant le programme de lavage ` efo e e a fectuer. EL). On veut offrir ` l’utilisateur un seul programme de lavage qui correspond a a ` la suite des ´tapes suivantes : un lavage : entr´e de l’eau. Ce fil passe ` 5 Volts lorsque la e e e a tˆche en cours se termine. Il a e en entr´e Fin. Il est ` 0 ` l’initialisation. e e .242 Circuits s´quentiels e E10. Entr´ee e Lessive (EL).

Dans ce cas d’autres techniques de concepe tions de circuits existent. e e a e e Nous nous appuyons sur cette technique pour expliquer les principes de conception d’un processeur au chapitre 14. a e Ceci n’est faisable que lorsque le graphe de l’automate n’a pas trop d’´tats e (une centaine). Par e e contre l’enchaˆ ınement dans le temps des op´rations est d´cid´ par la partie e e e contrˆle.).Chapitre 11 Conception de circuits s´quentiels par s´paration du e e contrˆle et des op´rations o e Nous avons vu dans le chapitre 10 comment concevoir un circuit s´quentiel e correspondant ` un automate d’´tats fini en partant de son graphe explicite. Nous d´crivons dans le paragraphe 2. Nous donnons dans le paragraphe 3. Au-del` le travail est complexe et fastidieux. le principe g´n´ral d’une telle are e chitecture. utilisable dans la plupart des cas. Nous appliquons ensuite ces e principes g´n´raux ` deux exemples d´taill´s (paragraphe 4. Nous avons vu dans le chapitre 10 ` travers deux a exemples une technique appel´e flot de donn´es. une partie op´rative e e type. e Nous expliquons dans le paragraphe 1. . La partie op´rative est form´e d’un ensemble de registres e e e et d’op´rateurs permettant de m´moriser les variables de l’algorithme et de e e r´aliser les op´rations apparaissant sur ces variables dans l’algorithme. les principes de la partie contrˆle et ´tudions sa synchronio e sation temporelle avec la partie op´rative. C’est en partia culier le cas lors de la r´alisation de circuits correspondant ` des algorithmes e a manipulant des variables enti`res. Par rapport au flot de donn´es cette technique permet d’optimio e ser le nombre d’op´rateurs n´cessaires mais souvent au d´triment du temps e e e d’ex´cution. Nous nous int´ressons ici ` e e e a une technique diff´rente permettant de d´composer le probl`me (et du coup e e e le circuit correspondant) en deux parties distinctes : une partie contrˆle et o une partie op´rative.

en envoyant des signaux de commandes ` la e a e a partie op´rative. registres. A chaque front (montant par exemple) d’horloge : – des valeurs de commandes sont envoy´es ` la PO par la PC pour s´lectionner e a e un calcul donn´ (par exemple : s´lection des entr´es de l’UAL. Les communications entre les deux parties se font par e les signaux de commande et de compte-rendu. la PO et le monde ext´rieur.1 donne l’organisation des signaux entre la PC. op´ration e e e e effectu´e dans l’UAL. Mais ce n’est pas elle qui d´cide de l’op´ration ` effectuer ` un e e a a instant donn´. e Les connexions au monde ext´rieur tiennent compte de cette sp´cialisation : e e – la PC ne re¸oit que des ordres et ne d´livre que des acquittements. o Les deux parties sont deux circuits s´quentiels cadenc´s sur la mˆme hore e e loge. Elle envoie des signaux de comptes rendus sur ces calculs ` la e a partie contrˆle.244 Conception de circuits s´quentiels. 11.. UAL . Elle ne modifie pas directement les donn´es. Principe g´n´ral e e La partie op´rative (ou PO) offre les ressources (Bus. e Acquittements Partie contrˆle o Ordres Init Commandes Comptes-rendus Horloge Donn´es : e Partie op´rative e Entr´es e Sorties Fig. . e – des comptes-rendus du calcul effectu´ (par exemple les indicateurs e arithm´tiques d’une UAL) peuvent alors ˆtre renvoy´s par la PO ` la PC e e e a afin de lui permettre de prendre une d´cision pour le choix du calcul suivant. – la PO ne re¸oit que des donn´es et ne d´livre que des donn´es. La figure 11.). Elle traduit les e e primitives de contrˆle apparaissant dans l’algorithme. par exemple. Les fils c e e e d’entr´es et de sorties peuvent dans certains cas ˆtre les mˆmes (bus bidie e e rectionnel). signalant c e la fin de sa mission. . . Elle g´n`re l’activation des e e e op´rations ` un instant donn´.. .1 – Principaux signaux d’une architecture PC/PO 1. . .) e n´cessaires ` chaque op´ration sur les diff´rentes variables apparaissant dans e a e e l’algorithme. o La partie contrˆle (ou PC) g`re l’enchaˆ o e ınement des calculs effectu´s sur e les donn´es au vu des comptes rendus de la PO.

n) est connect´ ` l’horloge ea g´n´rale et au signal de chargement not´ ChRi.4 du chapitre 14. e . i = 1. Sur la figure 11.. e e e e les commandes de chargement et d’initialisation des registres. Les actions atomiques. Ceci est fait en connece e tant l’horloge g´n´rale du circuit ` l’entr´e d’horloge des bascules et en connece e a e tant l’entr´e Enable des bascules ` un signal de commande nomm´ signal de e a e chargement de ce registre. Un registre est un ensemble de bascules de mˆme type partageant e les mˆmes commandes d’activation et d’initialisation (Cf. auxquelles nous nous int´ressons sont de type Ri ←− Rj op Rk . Les primitives mat´rielles sur un registre permettent d’y e forcer une valeur pr´sente sur la nappe de fils en entr´e. Chapitre 9.2 chaque registre (Ri . un op´rateur appel´ UAL e e e (Unit´ Arithm´tique et Logique) et des bus. Les entr´es de cet automate sont les comptes-rendus des calculs effectu´s e e dans la PO. Le tableau 11. e e Remarque : Il est int´ressant de noter qu’une partie op´rative peut ˆtre e e e d´crite comme un automate d’´tats fini. e Une partie op´rative comprend des registres.. Ses sorties sont les donn´es sortantes et les comptes-rendus ` dese a tination de la PC. Notion de partie op´rative type e Nous donnons Figure 11.2.3 donne la correspondance entre microactions et sorties bool´ennes. parae graphes 1.4). . ou e e e e microactions.. Ses entr´es sont les donn´es entrantes. op´rateurs) ou en termes de temps d’ex´cution. Chaque action apparaissant dans la machine a s´quentielle doit pouvoir ˆtre ex´cut´e dans la PO. Une utilisation syst´matique de cette description est faite e dans l’exercice E14. Ces e e crit`res sont souvent incompatibles. Son ´tat est compos´ des valeurs contenues dans les diff´rents e e e e registres. 2. les commandes d’op´ration. e 2.2 la structure d’une partie op´rative type pere mettant une construction m´thodique et r´pondant ` la plupart des besoins. Notion de partie op´rative type e 245 Nous avons vu au chapitre 5 comment obtenir une machine s´quentielle avec e actions ` partir d’un algorithme.3 et 1. Ces signaux de chargement font e e e partie des commandes envoy´es par la PC. e e a Cette PO peut ˆtre dans la plupart des cas optimis´e en termes de nombre de e e ressources (registres. La partie contrˆle peut ˆtre d´crite explicio e e tement par le graphe de l’automate dans lequel on remplace les actions par un ensemble de sorties bool´ennes correspondant aux signaux de commande de la e PO. e Ri ←− entr´e ou sortie ←− Ri o` op est une op´ration et Rj un registre.1 Registres et commandes de chargement Les registres contiennent les valeurs des variables apparaissant dans l’algorithme. e u e On peut aussi avoir dans la PO type des microactions compos´es telle que e sortie ←− Rj || Ri ←− Rj op Rk . bus.

. SelBusBRk = ϕ . SelSorties = 0 . SelBusBRk = ϕ . ChRi (i=i ) = 0 . SelEntr´es = 0 . 11.3 – Sorties correspondant aux microactions pour la P. SelUAL = 1 . 11. SelBusARj (j=j ) = 0 . e commandes UAL = ϕ Fig. SelSorties = 1 .2 – Une partie op´rative type e ComptesRendus Rn SelUAL UAL Op´ration UAL e microactions Ri ←− Rj op Rk Ri ←− entr´e e sortie ←− Ri commandes pendant le coup d’horloge ChRi = 1 . SelBusBRk = 1 . SelBusBRk (k=k ) = 0 . SelUAL = 0 . SelBusARj = ϕ .2 . SelEntr´es = 0 .. e commandes UAL pour l’op´ration op e ChRi = 1 . SelBusARj = 1 . SelSorties = 0 .246 Conception de circuits s´quentiels. ChRi (i=i ) = 0 . e commandes UAL = ϕ ChRi = 0 .O type de la figure 11. e Sorties SelSorties Bus A ChR1 SelBusAR1 R1 SelBusBR1 horloge Bus B Bus R´sultat e SelEntr´es e Entr´es e Fig. SelUAL = 0 . SelEntr´es = 1 . SelBusARi = 1 .

e . Si l’op´rateur doit effectuer p e e op´rations diff´rentes. e e a e on retombe sur la solution flot de donn´es pr´sent´e au paragraphe 3. il est command´ par log2 (p) fils de commande.2). C et V e e des mots d’´tat de processeurs (Cf. ressemblant aux classiques Z. On peut par e a u exemple d´cider d’utiliser un multiplieur combinatoire de nombres cod´s en e e virgule flottante sur 64 bits dans une machine algorithmique si on en a besoin. N. En plus e e e du r´sultat de l’op´ration proprement dit.2. e On peut utiliser plusieurs op´rateurs effectuant chacun une op´ration e e donn´e afin de pouvoir parall´liser certaines op´rations et donc diminuer le e e e temps d’ex´cution de l’algorithme. Les signaux ChRi permettent d’effectuer e le chargement du registre souhait´. e Ces sorties de l’op´rateur forment les signaux de compte-rendu de la PO vers e la PC (ComptesRendus sur la figure 11. Si e e l’on ne veut pas utiliser un tel circuit. Rien n’empˆche d’en utiliser e e d’autres si l’expression de l’algorithme utilise des primitives de test diff´rentes. commandes de s´lection e Les liaisons entre les registres et l’op´rateur se font par des liaisons nomm´es e e bus. Toutefois ce genre d’optimisation augmente e le nombre de connexions et d’op´rateurs n´cessaires. Si on le pousse ` l’extrˆme. Notion de partie op´rative type e 247 La sortie de chaque registre est connect´e aux deux entr´es de l’UAL mais e e une de ces deux connexions peut ˆtre inutile et donc supprim´e. bus et multiplexeurs. il faudra exprimer l’algorithme en n’utilisant que des additions de nombres cod´s sur 8 bits.3 Liaisons. mais seulement un additionneur 8 bits. des sorties de l’op´rateur peuvent e e e ˆtre de type indicateurs arithm´tiques. Cela permet de consid´rer la multiplication de r´els comme une primitive. L’expression d’un algorithme se fait ` base de primitives suppos´es a e donn´es . Deux bus op´randes (A et B) permettent d’amener aux deux entr´es de e e l’UAL le contenu d’un des registres. Les signaux SelBusARi et SelBusBRi permettent d’effectuer cette s´lection. ici le concepteur de machine algorithmique a le choix des primitives : e ce sont celles r´alisables par un circuit ` un coˆt convenable. du chae e e pitre 10. Un bus R´sultat permet d’amener ` l’entr´e e e a e des n registres le r´sultat du calcul. o e 2. L’op´rateur est un circuit e e a e e combinatoire susceptible de r´aliser ces diff´rentes op´rations selon des signaux e e e de commande (Op´rationUAL sur la figure 11.2 Op´rateur et commande d’op´ration e e La r´alisation de l’op´rateur (ou UAL) suppose d’identifier la liste des e e op´rations n´cessaires ` l’ex´cution de l’algorithme.2). Chapitre 12). Il peut ˆtre e e e int´ressant d’initialiser les registres ` l’aide du signal d’initialisation (` 1 ou ` e a a a 0) des bascules plutˆt que d’obtenir des valeurs initiales via le bus Entr´es. Il y a dans ce travail de conception d’un op´rateur un aspect tout ` fait e a particulier. 2.

La ea porte trois ´tats activ´e par SelSorties n’est pas toujours n´cessaire. e On peut diminuer le nombre de connexions en diminuant le nombre de bus au d´triment du temps d’ex´cution de l’algorithme. a) ` base de multiplexeurs . le nombre de fils de commande entre la PC et la PO est e alors fortement augment´. On peut placer par e e exemple un registre tampon suppl´mentaire en sortie de l’UAL et connecter ce e registre ` un bus qui servira en mˆme temps de bus r´sultat et de bus op´rande. Une autre solution consiste a r´aliser le e e e e d´codeur dans la PC . 11. e e e . e La liaison des registres ` chaque bus est r´alis´e soit ` l’aide de multia e e a plexeurs.248 Conception de circuits s´quentiels. Le d´codeur d´livrant les signaux Si (dans la figure 11. Elle n´cessite des signaux de commande permettant de d´terminer ce e e choix.4 montre la r´alisation d’un bus supportant 4 entr´es D1 . Cela e a a peut ˆtre indispensable dans le cas d’entr´es/sorties avec l’ext´rieur. soit ` l’aide de portes trois ´tats entre les sorties des registres et a e le bus.. a e e e 2. e a e e Il est donc connect´ ` un des deux bus de sorties des registres de la PO. c’est la solution ` base de portes trois ´tats qui a ´t´ a e ee choisie. e e e Le bus Sorties permet de d´livrer ` l’ext´rieur les r´sultats de l’algorithme.2.. b) ` base de a a a portes trois ´tats. D3 et D4 (qui sont par exemple les sorties de 4 registres) ` l’aide de deux a signaux de commande C1 et C2 . Les signaux SelEntr´es et ChRi du registre concern´ doivent alors e e ˆtre actifs et la valeur initiale pr´sente sur le bus Entr´es.4) n’apparaˆ e e ıt pas sur la figure 11. e C1 C 2 D1 D2 D3 D4 S1 D1 BUS C1 C2 D´codeur e D2 D3 D4 S2 S3 S4 (a) (b) BUS Fig. Dans le cas d’une r´alisation ` base de portes e a trois ´tats.4 Entr´es/Sorties e Le bus Entr´es permet de charger des valeurs depuis l’ext´rieur dans les e e registres. e e D2 .4 – Liaisons de 4 registres ` un bus. le bus obtenu est ` double sens (contrairement ` l’autre cas). La figure 11. e Sur la figure 11. Cette e e e solution est la plus souvent utilis´e.2. Ces signaux de s´lections (Si ) peuvent ˆtre directement e e d´livr´s dans chaque ´tat de la PC.

Dans le e e e premier sch´ma. Dans d’autres cas les entr´es et les sorties peuvent ˆtre multiplex´es sur les e e e mˆmes fils. On peut alors relier les bus Entr´es et Sorties grˆce ` la pr´sence e e a a e de la porte trois ´tats command´e par SelSorties sur la figure 11. le r´sultat est charg´ dans le e e e registre concern´. paragraphe 1. Les autres registres sont pilot´s par un signal de chargement e actif sur le niveau bas. Dans la premi`re phase (haut) e les op´randes sont aiguill´s vers l’op´rateur et le r´sultat du calcul est charg´ e e e e e dans le tampon. Chapitre 10. Dans ces cas-l` les sorties de certains registres peuvent ˆtre. on peut utiliser des registres de type verrou e e (Cf. on ajoute alors un registre tampon en sortie de l’op´rateur.3) l’ensemble des commandes n´cessaires e e a ` l’ex´cution des 3 types de microactions sur la base d’une partie op´rative e e comme celle de la figure 11. par a e exemple. e Ce registre est pilot´ par un signal de chargement actif sur le niveau haut e de l’horloge.6 Synchronisation du calcul et de l’affectation du r´sultat e Deux sch´mas simples de synchronisation peuvent ˆtre utilis´s. Dans la deuxi`me phase (bas).3. Partie contrˆle o Comme d´crit au chapitre 5. aux signaux de commande a a ` destination de la PO.3) le mod`le de Moore est utilis´. Pour des raisons de synchronisation e avec la PO (Cf.2. e correspondant aux deux niveaux de l’horloge. e e e Dans le deuxi`me sch´ma.2. nous pouvons ` partir de l’algorithme obtenir e a une machine s´quentielle avec actions. e e 2. Chapitre 9) . directement des sorties du circuit.5 Relations entre microactions et commandes On peut r´capituler (Cf.3. Une microaction se d´compose alors en deux phases. Figure 11. On verra dans la suite des primitives d’entr´es/sorties plus riches permettant un protocole de poign´e de mains. e e A chaque coup d’horloge une microaction Ri ←− Rj op Rk est effectu´e et le e r´sultat est charg´ dans le registre concern´ au prochain front de l’horloge. e e 2. Cette ´tape est d´taill´e dans les ´tudes de cas trait´es e e e e e . il peut ˆtre int´ressant de poss´der plusieurs nappes de e e e fils de sorties. Partie contrˆle o 249 Dans certains cas. e Dans la suite on fera abstraction de cette alternative de mise en oeuvre des actions atomiques. tous les registres sont sensibles au (mˆme) front d’horloge. e e Cette machine s´quentielle avec actions est ensuite transform´e en autoe e mate d’´tats fini en rempla¸ant les actions apparaissant sur les ´tats par l’afe c e fectation des valeurs correspondantes ` ces actions. 3.

Ce protocole de poign´e de mains peut ˆtre adapt´ au cas par cas suivant e e e l’environnement dans lequel on doit implanter le circuit ` r´aliser. Ils sont re¸us par la PC. Cet automate peut ˆtre ensuite r´alis´ par du mat´riel suivant e e e e une des m´thodes d´crites dans le chapitre 10. Des signaux a e de synchronisation n´cessaires ` ces entr´es/sorties sont ajout´s aux signaux e a e e de donn´es. On reprend le sch´ma de l’automate e e du r´cepteur et de l’´metteur dans une poign´e de mains pr´sent´ dans le e e e e e chapitre 6. Dans l’´tat Chargement de l’entr´e les commandes e e e a ` destination de la PO sont SelEntr´es pour amener la valeur du bus ext´rieur e e a ` l’entr´e des registres et ChRi pour charger le registre voulu. Chapitre 6) peut ˆtre e e e employ´ pour permettre le chargement ou la sortie de certains registres de la e PO. Dans le cas d’une entr´e. e e e e . e e e 3. e e Le probl`me est de d´cider quels op´rateurs et comptes-rendus de calculs e e e sont disponibles dans la PO. Nous pouvons illustrer ce protocole ` travers le dialogue d’un circuit avec a une m´moire. Les entr´es sont e e e ´chantillonn´es sur la mˆme horloge que la PC comme nous l’avons vu dans le e e e chapitre 10. e au paragraphe 4. Dans le cas e e e o` la m´moire est lente par rapport au processeur celui-ci doit attendre lors u e d’un acc`s en lecture ou en ´criture que la m´moire lui signale la fin de l’acc`s. Le signal EPrise e e e e e correspond au signal de signification ` l’ext´rieur de la prise en compte de a e l’entr´e (r´cepteur non prˆt).1 Entr´es/sorties e La gestion des entr´es et des sorties n´cessite une synchronisation avec le e e monde ext´rieur. Le signal SPrise permet ` l’ext´rieur de signaler e a e au circuit qu’il a pris en compte la sortie (r´cepteur non prˆt). Figure 11. e Dans le cas d’une sortie. et inversement pour une sortie.. le signal PresE correspond au signal de e pr´sence d’une entr´e venant de l’ext´rieur (´metteur prˆt). Le protocole de poign´e de mains (Cf. Consid´rons par exemple un processeur effectuant des ´critures e e e (sorties) ou des lectures (entr´es) en m´moire..250 Conception de circuits s´quentiels.2 du chapitre 9 comment se d´roule un acc`s m´moire. Ce signal est ` 0 dans tous les e e e a autres ´tats de l’automate. On associe ` l’automate de la PC deux ´tats pour chaque acquisition a e d’entr´e et pour chaque d´livrance de sortie (Cf. Chaque condition apparaissant sur les transitions de l’automate doit ˆtre un compte-rendu de l’op´rateur utilis´ disponible dans e e e l’´tat pr´c´dent.5). e c Dans le cas d’une entr´e le circuit est le r´cepteur et le monde ext´rieur est e e e l’´metteur. Bien entendu ce signal est ` 0 dans tous les e e e a autres ´tats de l’automate. le signal PresS correspond au signal de pr´sence e d’une sortie pour l’ext´rieur (´metteur prˆt). Chaque calcul et affectation de variable correspondante effectu´ dans un ´tat de l’automate doit ˆtre r´alisable en un cycle e e e e d’horloge dans la PO. Dans l’´tat e e e Sortie pr´sente 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 avons expliqu´ au parae e e graphe 2.

e a Eprise ` SelMem et l/e. Nous nous placerons alors dans le cas simple et id´al o` la m´moire est suffisamment rapide pour permettre un e u e acc`s en un cycle d’horloge du processeur . pour relier l’ensemble processeur/m´moire avec le monde ext´rieur. e e 3. Fiu e gure 11. Nous retrouverons les aspects de synchronisation au chapitre 15. b) d´livrance d’une e e e sortie La m´moire d´livre alors un signal FinAcc`s lorsque.5 – Gestion d’entr´es/sorties : a) acquisition d’une entr´e . e e Dans le cas o` les registres de la PO sont charg´s au front montant (Cf. soit la donn´e ` ´crire est effectivement ´crite en m´moire. Pour l’´criture SPrise correspond ` e a a e FinAcc`s. soit la donn´e ` lire est e e e e a prˆte sur le bus. 11. pour la lecture PresE correspond ` FinAcc`s.3.3 et dans le chapitre 14. la PO effectue le calcul command´ et donne un compte-rendu pour permettre ` la PC de calculer e a le prochain ´tat. le signal FinAcc`s n’est alors plus e e utile. il est implicite. e Supposons que l’automate r´alisant la PC ´volue ` chaque front montant e e a d’une horloge H. Nous sommes donc e en pr´sence de deux automates en boucle. Il faut qu’entre deux fronts montants de H.3. paragraphe 1.2 Synchronisation de la partie contrˆle et de la partie o op´rative e Nous avons vu dans le chapitre 10. PresS ` SelMem et l/e .5. Dans le cas d’une r´alisation PC/PO les e e sorties de la PO sont des entr´es de la PC et inversement.3. Partie contrˆle o 251 EPrise Attente e Entr´e PresE PresE PresS SelSorties SelBusARi Sortie pr´sente e SPrise SPrise EPrise Chargement ChRi e SelEntr´es de l’entr´e e PresE PresE PresS Attente SPrise SPrise (a) (b) Fig.3.6). comment synchroniser les r´alisations de deux automates.3 du chapitre 10. e On reprend les automates de la figure 11. La PO doit alors effectuer le calcul et ´mettre le compte-rendu de e e mani`re ` laisser le temps ` la PC de calculer l’´tat suivant avant le prochain e a a e . Regardons ce qui se passe dans les deux cas de synchronisation e ´tudi´s au paragraphe 1. c’est le r´sultat du calcul effectu´ dans l’´tat pr´c´dent qui est e e e e e charg´. e e ae e e e a e Le processeur d´livre les signaux SelMem et l/e lors d’un acc`s ` la m´moire. a Nous retrouverons la connexion d’un processeur avec une m´moire dans l’´tude e e de cas du paragraphe 4.

L’´mission des commandes de la PC et le calcul doivent e donc ˆtre r´alis´s dans la premi`re demi-p´riode de H. il n’est pas n´cessaire de m´moriser ces a e e comptes-rendus.252 Conception de circuits s´quentiels. le calcul de l’´tat suivant e e e e e e dans la deuxi`me. Dans le cas o` le calcul est effectu´ 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 m´moriser ces comptes-rendus dans un registre au front e descendant de H. e Passage dans l’´tat i e Passage dans l’´tat i + 1 e H Calcul effectu´ dans l’´tat i (PO) e e Calcul de l’´tat i+1 (PC) e Compte rendu valide Chargement du r´sultat de l’´tat i (PO) e e Fig... Dans ce cas-l`.7 – Chronogrammes montrant la synchronisation de la PC et de la PO avec chargement du registre r´sultat au milieu de la p´riode e e front montant de H. 11. 11.6 – Chronogrammes montrant la synchronisation de la PC et de la PO avec chargement du registre r´sultat en fin de p´riode e e Passage dans l’´tat i e Passage dans l’´tat i + 1 e H Calcul effectu´ dans l’´tat i (PO) e e Calcul de l’´tat i+1 (PC) e et Chargement du r´sultat e de l’´tat i (PO) e Compte rendu valide Le compte-rendu peut changer Fig. e e . Cette solution est plus contraignante dans l’enchaˆ e ınement des diff´rentes op´rations de la PC et de la PO.

Construire une PO type e e (Cf. Etudes de cas 253 4. e e – Assemblage de la PC et de la PO . Il e faut donc d´finir pour chaque ´tat la valeur des commandes ` destination e e a de la PO correspondant aux actions effectu´es. e e – Obtention de la PO : R´pertorier l’ensemble des variables apparaissant dans la machine e s´quentielle avec actions. Les actions associ´es ` chaque ´tat e e a e doivent ˆtre r´alisables dans la PO en un coup d’horloge. Les deux premi`res e e ´tapes apparaissant ci-apr`s sont compl`tement li´es et sont ` effectuer simule e e e a tan´ment. e – Transformation de l’algorithme en une machine s´quentielle avec e actions : R´pertorier les actions et les pr´dicats apparaissant dans l’algorithme.1 Etudes de cas D´marche de conception e Avant de traiter concr`tement des exemples pr´cis nous donnons l’´bauche e e e d’une m´thode de conception d’une architecture PC/PO.) poss´dant un op´rateur permettant de r´aliser tous les e e e calculs. e e – Obtention de l’automate correspondant ` la PC : a Au vu de la PO et de la machine s´quentielle avec actions obtenir l’autoe mate d’´tats fini correspondant ` la PC. D´crire l’algorithme ` l’aide d’une machine s´quentielle avec actions utie a e lisant ces variables et ces op´rations. 4. chacune correspond ` un registre de la PO. D´finir les e e e e e op´rations et les affectations de variables pouvant ˆtre r´alisables par un e e e circuit disponible pour construire la PO. Parapraphe 2. e e D´finir les op´rations n´cessaires aux calculs de ces pr´dicats. y e e compris celles n´cessaires aux calculs des pr´dicats. e – Synth`se de l’automate de contrˆle : e o Il reste ` effectuer la synth`se de l’automate obtenu en utilisant une des a e m´thodes donn´es dans le chapitre 10. On pourra ´ventuellement optimiser cette PO (au niveau temps de e calcul) en multipliant les op´rateurs et parall´lisant les calculs par fusion e e d’´tats dans la machine s´quentielle. Il a comme sorties les fils de commande e apparaissant sur les ressources de la PO et des signaux avec l’ext´rieur.4. e a R´pertorier l’ensemble des op´rations apparaissant dans l’algorithme. Cet automate a comme entr´es e a e les fils de comptes-rendus (correspondant aux conditions apparaissant dans l’algorithme) sortant de l’op´rateur de la PO et les signaux de synchronie sation avec le monde ext´rieur.

254 Conception de circuits s´quentiels. ∆ ←− ∆ − 2. 11. 4. j ←− j + 1. e Fig. Certaines corresa e pondent ` des entr´es/sorties : Acqu´rir(m).n} si ∆ ≥ 0 k ←− k + 1 . D´livrer (k) .m + 2. D´livrer(k). e k ←− 0 .m ≤ ∆ ≤ 0 } e fin ←− VRAI . k e ←− 0. d’autres correspondent ` des calculs : j ←− 0.n. les autres actions doivent donc se faire dans des ´tats e distincts.3 du chapitre 5. Les actions Acqu´rir et D´livrer correspondent aux entr´es et sore e e ties.n ≤ ∆ ≤ 2. Acqu´rir(n). Les pr´dicats ` tester sont j ≤ m et ∆ ≥ 0. ∆ ←− ∆ − 2.. On peut ainsi r´unir les actions j ←− 0. k : des entiers ≥ 0 ∆ : un entier Algorithme Tantque VRAI : Acqu´rir(m) .).m . par exemple on peut calculer e e j>m ou j ≤ m. On choisit d’utiliser un seul op´rateur e e e (Cf. Les initialisations de j et k ` 0 se font directement ` travers un signal a a d’initialisation sur les registres. j ←− 0 . tantque j ≤ m : {invariant : 0 ≤ j ≤ m et −2..n : des entiers ≥ 0 { m et n ´tant donn´s} e e fin : le bool´en Vrai e j. k ←− 0. Nous choisissons l’algorithme de e Bresenham pr´sent´ au paragraphe 2. D´livrer (j). Pour le calcul du pr´dicat j > m on effectue m − j. e Lexique m. Il est plus e . Acquerir(n) . et ∆ ←− −m dans le mˆme ´tat. a e e e e e D´livrer (fin) . ∆ ←− −m .8 rappelle e e l’algorithme. { apr`s cela : −2.m ≤ ∆ ≤ 0 } D´livrer (j) . Pour que le circuit puisse fonctionner pour un nombre de segments illimit´.8 – Algorithme de Bresenham 4. ∆ e a ←− −m . ∆ ←− ∆ + 2. ∆ ←− ∆ + 2. e nous ajoutons une boucle globale sans fin. {−2.n . La figure 11. Paragraphe 2.2 Le traceur de segments Le circuit que nous voulons concevoir doit d´livrer les coordonn´es des e e points d’un segment de droite sur un ´cran.1 Obtention d’une machine s´quentielle avec actions ` partir de e a l’algorithme On peut classer les actions ` effectuer en deux cat´gories. k ←− k + 1. e e j ←− j+1 .m.2. On peut de fa¸on ´quivalente e a c e calculer chaque pr´dicat ou son compl´mentaire . D´livrer(fin) .

2. BusB.M. k. M. Par exemple ici le e e e calcul de j > m doit ˆtre effectu´ dans un ´tat sp´cifique alors que le calcul de e e e e ∆ ≥ 0 peut ˆtre effectu´ au moment de l’action ∆ ←− ∆ + 2.2 Description de la partie op´rative e La figure 11. N . BusA. Ainsi les connexions J . m.m ResNeg k ←− k+1 ResNeg D´livrer(j) e D´livrer(k) e ResNeg j ←− j +1 ∆ ←− ∆ + 2. on a besoin du mˆme e e e e indicateur. D + 2.9 – Une machine s´quentielle avec actions r´alisant l’algorithme de Bresenham e e facile de r´aliser une UAL qui donne un indicateur signifiant r´sultat n´gatif e e e que r´sultat n´gatif ou nul. J + 1. D . e e On obtient la machine s´quentielle avec actions de la figure 11.11 donne la partie op´rative. D − 2. BusB. n et ∆.9. Les calculs ` effectuer correspondent aux diverses actions ´num´r´es a e ee pr´c´demment : − M.n Fig.n. Nous r´alisons toutes les op´rations avec un op´rateur unique . Le circuit comporte 5 registres e nomm´s J. e On utilise une PO type comme d´finie pr´c´demment mais on minimise le e e e nombre de connexions des registres aux bus. Etudes de cas 255 Acqu´rir(m) e D´livrer(fin) e Acqu´rir(n) e ∆ ←− −m || j ←− 0 || k ←− 0 m-j ResNeg ∆ ←− ∆ − 2. K . M . BusA suffisent. K. BusA. Pour le pr´dicat ∆ ≥ 0. N et D contenant les valeurs des variables j. e 4. e Les registres J et K poss´dent un signal d’initialisation InitJK ` 0 pour e a pouvoir effectuer les actions j ←− 0 et k ←− 0.4. K + 1. 11.N. il doit e e e . Le calcul d’un pr´dicat peut n´cessiter l’ajout d’un ´tat. Il faut ajouter e e les calculs correspondant aux pr´dicats : j > m et ∆ ≥ 0.

) il est e e c impossible de d´crire pr´cis´ment la primitive d’affichage d’un pixel. e e Cette UAL peut ˆtre r´alis´e ` l’aide d’un additionneur (Cf.2. Op1 . Op1.11).3 Hypoth`ses sur les entr´es/sorties e e Sans hypoth`ses sur l’environnement exact (´cran. e e e 4. A+2*B.. e e e A−2*B et −B... J et K nous utilisons le e protocole de poign´e de mains.11) et que le signal Fin est d´livr´ directement par un e e fil particulier issu de la PC (fil portant une valeur constante..10 – Signaux de commande de l’UAL de l’algorithme de Bresenham Sorties Bus A SelMBusB ChJ J InitJK H BUS R´sultat e Entr´es e Fig.10. e . Chapitre 8). e e e Nous convenons que M et N sont initialis´s ` partir d’un bus d’entr´es (not´ e a e e Entr´es sur la figure 11. e e La signification des trois signaux Op2 . B−A. e e e a Elle doit g´n´rer un bit de signe du r´sultat (ResNeg). table tra¸ante.256 Conception de circuits s´quentiels. Op0 de commande des op´rations de l’UAL est donn´e dans le tableau de la figure 11.11 – Partie op´rative correspondant ` l’algorithme de Bresenham e a ChK K SelKBusA ChD D SelDBusA SelJBusA ChM M ChN SelNBusB SelUAL N UAL Op2. u e Pour les entr´es sur M et N et les sorties sur Fin. e Op2 0 0 0 Op1 0 0 1 Op0 0 1 0 Op´ration e A+1 B−A A + 2*B Op2 0 1 Op1 1 0 Op0 1 0 Op´ration e A − 2*B −B Fig. Chacune de ces op´rations doit ˆtre effectu´e dans un ´tat e e e e diff´rent de la machine s´quentielle avec actions. 11. que J et K sont d´livr´s sur un bus de sorties (not´ e e e e Sorties sur la figure 11. on pourrait bien sˆr l’´liminer). Op0 InitJK Bus B ResNeg SelEntr´es e r´aliser les op´rations suivantes sur ses op´randes A et B : A+1. 11.

2.4 D´finition de la partie contrˆle par un automate d’´tats fini e o e La figure 11. e e e 4.2. Il faut donc que le e e e e circuit r´alisant l’algorithme poss`de un bus de sortie correspondant ` l’adresse e e a en m´moire et un bus d’entr´es/sorties correspondant ` la donn´e stock´e en e e a e e m´moire. Ces valeurs sont alors d´finies comme phie bool´ennes pour les fonctions de sortie correspondantes. On consid`re que ces ´l´ments sont des entiers naturels e e ee cod´s en base 2. ce e e sont des fils de commande apparaissant sur la PO de la figure 11.14 montre l’ensemble des signaux ´chang´s lors e e de l’assemblage de la PC et de la PO ainsi que ceux permettant la gestion des entr´es/sorties. Le seul compte-rendu de la PO vers la PC est ResNeg. Nous supposons que les bascules utilis´es dans la PO sont des bascules D e sensibles au front montant. SortieJ.13 donne le d´tail des sorties pour chaque ´tat de la PC . not´ l/e. e . Les ´tats correspondant ` o e a Acqu´rir(N) et Acqu´rir(M) sont remplac´s chacun par les deux ´tats du e e e e r´cepteur dans le protocole poign´e de mains.3 La machine ` trier a Cette ´tude de cas montre l’utilisation d’une m´moire ` cˆt´ d’une machine e e a oe algorithmique.5 Assemblage de la PC et de la PO Le circuit de la figure 11. e La figure 11. On suppose que l’acc`s ` la m´moire en lecture ou ´criture peut se e e a e e faire en un cycle d’horloge du circuit ` concevoir. un bus adresse et un signal de commande. Le m´canisme d’entr´e/sortie utilis´ ici est e e e sp´cifique et diff´rent de ceux explicit´s plus haut. e On suppose que M est initialis´ au d´part de l’algorithme. Etudes de cas 257 4. J et K avec e e les signaux SortieFin. On d´sire e e construire une machine permettant de r´aliser le tri des ´l´ments contenus e ee dans cette m´moire.15 donne l’algorithme du tri par insertion. On introduit ainsi les signaux e e de contrˆle venant de l’ext´rieur (PresN et PresM) et un mˆme signal vers o e e l’ext´rieur pour les deux cas EPrise. e e e Soit une m´moire permettant de stocker M mots de N bits. e e pr´cisant si on r´alise une op´ration de lecture ou d’´criture.11 et les fils destin´s aux entr´es/sorties avec l’ext´rieur. SortieK et SPrise.12 donne la partie contrˆle. C’est ` ce titre une bonne introduction au chapitre 14 qui porte a sur la conception d’un processeur. La PC e et la PO ´voluent avec la mˆme horloge H. La m´moire e e e comporte un bus donn´e.4. De mˆme pour les sorties Fin. Il n’y a donc pas de signal a FinAcc`s. a Il est ` remarquer que dans certains cas la valeur de signaux de commande a de la PO n’a pas d’importance. e e 4. avec signal d’initialisation actif ` 1. La figure 11.

.. e PresM SPrise SPrise 16 PresN SPrise Sortir Fin PresN 15 SPrise ResNeg PresM 1 PresM 2 Chargement de M PresM 3 PresN 4 Chargement de N PresN 5 D ←− −M M−J ResNeg 7 Sortir J SPrise J ←− 0 K ←− 0 6 SPrise 14 D ←− D − 2*M SPrise 8 ResNeg 13 K ←− K+1 SPrise ResNeg 12 D ←− D+2*N 10 SPrise 11 J ←− J +1 SPrise SPrise 9 Sortir K SPrise Fig.12 – Automate d’´tats fini correspondant ` l’algorithme de Bresenham e a .258 Conception de circuits s´quentiels. 11.

(Op2. φ) Attente : (Op2. Op0) = (φ. Op1. (Op2. Op0) = (φ. 11.4. 1. Op0) = (φ. Op0) = (φ. (Op2. Op0) = (φ. Op1. 0. 0) D ←− D−2*M : ChD = SelDBusA = SelMBusB = SelUAL = 1. (Op2. φ) Attente : InitJK = ChJ = ChK = ChD = ChM = ChN = φ. Op1. Op0) =(0. Op1. Op0) = (φ. 0) M − J : SelJBusA = SelMBusB = 1. φ. φ. Op1. Op1. Op1. Op0) = (0. φ) Attente : InitJK = ChJ = ChK = ChD = ChN = φ. Op0) = (φ. Op0) = (φ. (Op2. InitJK = e ChJ = ChK = ChD = ChN = φ. 0) K ←− K+1 : ChK = SelUAL = SelKBusA = 1. (Op2. Op0) = (0.1. φ) Attente : (Op2. φ) Chargement de M : ChM = SelEntr´es = EPrise = 1. H Init PresN Sorties Entr´es e ResNeg Partie ChJ ChK ChD ChM ChN SelJBusA SelKBusA op´rative SelMBusB SelNBusB e SelDBusA SelSorties SelUAL SelEntr´es e Op2 Op1 Op0 InitJK Partie contrˆle o PresM SPrise EPrise SortieJ SortieK SortieFin Fig. 0. 11. Etudes de cas 259 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Attente : InitJK = ChJ = ChK = ChD = ChM = ChN = φ. (Op2. φ. φ) Fig. φ. φ. (Op2. Op1. φ. (Op2. Op1. Op1. φ) Chargement de N : ChN = SelEntr´es = EPrise = 1. 0. Op0) = (φ. Op0) = (1. (Op2. Op1. Les e e o signaux dont la valeur est 1 ou φ sont pr´cis´s et ceux pour lesquels elle e e vaut 0 sont omis. K ←− 0 : ChD = InitJK = SelMBusB = SelUAL = 1. φ) J ←− J+1 : ChJ = SelJBusA = SelUAL = 1. φ) Sortir K : SortieK = SelKBusA = 1. (Op2.12. Op1. Op0) = (φ. 1) Sortir J : SortieJ = SelJBusA = 1. φ. φ. 0) D ←− D+2*N : ChD = SelDBusA = SelNBusB =SelUAL = 1. e InitJK = ChJ = ChK = ChD = φ.13 – Sorties ´mises dans chaque ´tat de la partie contrˆle de la figure 11.14 – Vue g´n´rale du traceur de segments e e . Op0) = (0. φ. Op1. (Op2.1) Sortir fin : SortieFin = 1. 0. φ. Op1. (Op2. Op1. Op1. J ←− 0 . (Op2. InitJK = ChJ = ChK = ChD = ChM = ChN = φ. φ) D ←− −M . Op0)=(0.

D´livrer (fin) e Fig. e i − M ≤ −1 ⇐⇒ i − M < 0. Initialement j > 0 et j e e ´tant d´cr´ment´ de 1 ` chaque it´ration on peut tester j = 0. j. il est donc inutile de r´aliser cette affecea e tation.. permettant de stocker e e mem[j−1] avant de l’affecter ` mem[j] . t : des entiers ≥ 0 . e e puis calculer trouv´ et tester si le r´sultat est nul. Comme l’afe fectation temp ←− mem[j−1] se fait juste apr`s le test mem[j−1] > t.M−1] d’entiers ≥ 0 Algorithme i ←− 1 tantque i ≤ M−1 : j ←− i . temp e contient d´j` la valeur de mem[j−1] . Etudions l’´valuation des pr´dicats : e e – i ≤ M−1 : on peut calculer i − M et tester si le r´sultat est nul. e mem[j] ←− mem[j−1].15 – Algorithme de la machine ` trier a 4. En effet. e – j > 0 et non (trouv´) : on peut calculer j et tester si le r´sultat est non nul.. soit temp. j ←− i. trouv´ ←− FAUX e tantque (j > 0 et non trouv´) : e si mem[j−1] > t alors mem [j] ←− mem[j−1] . On e e a e ne peut donc la r´aliser dans un seul ´tat de la machine s´quentielle. trouv´. t ←− mem[i]. t ←− mem[i] .260 Conception de circuits s´quentiels. Il faut e e e comme pr´c´demment utiliser une variable. e e e e a e – mem[j−1] > t : on calcule mem[j−1] − t et on teste si le r´sultat est e strictement positif. Pour ce calcul si l’on se restreint ` un seul op´rateur. . trouv´ ←− FAUX. On peut ensuite calculer temp − t. il a e faut tout d’abord aller chercher en m´moire mem[j−1] et stocker la valeur e dans une variable temporaire que nous appelons temp. trouve ←− VRAI.. i ←− i+1. Initialement i < M et i ´tant incr´ment´ de 1 e e e a ` chaque it´ration on peut tester i = M. Nous convenons de coder FAUX par la valeur 0 et VRAI par la valeur 1. mem[j] ←− t. Le calcul se fait donc dans deux ´tats successifs r´alisant e e les actions temp ←− mem[j−1] puis ´valuation du signe de temp − t. 11.1 Obtention d’une machine s´quentielle avec actions ` partir de e a l’algorithme Les actions ` effectuer sont : a i ←− 1. j ←− j−1 sinon trouv´ ←− VRAI e mem [j] ←− t . ` deux ´tats successifs seront alors a a e associ´es les actions temp ←− mem[j−1] puis mem[j] ←− temp. i ←− i + 1 fin ←− VRAI . fin : des bool´ens e e mem : un tableau [0. e Lexique M : un entier donn´ e i.3. j ←− j−1. e L’affectation mem [j] ←− mem[j−1] n´cessite deux acc`s ` la m´moire.

4. Etudes de cas 261 0 i ←− 1 2 ResNul 1 i−M ResNul 3 4 j ResNul 6 mem[j] ←− t ResNul 5 ResNul trouv´ e ResNul 7 i ←− i + 1 13 8 temp ←− mem[j−1] temp . e e e e .17 d´crit e e une PO qui permet toutes les actions apparaissant dans les diff´rents ´tats de e e la machine s´quentielle avec actions donn´e pr´c´demment.4. e e La machine s´quentielle avec actions donn´e dans la figure 11.16 tient e e compte de ces remarques.t ResPos mem[j] ←− temp 9 ResPos 11 trouv´ ←− VRAI e j ←− i t ←− mem[i] || trouv´ ←− FAUX e D´livrer(fin) e 12 j ←− j − 1 10 Fig. 11.2 Obtention de la PO On part de la PO type d´crite dans le paragraphe 2. La figure 11.16 – Machine s´quentielle avec actions de la machine ` trier e a L’initialisation de trouv´ ` FAUX peut ˆtre faite dans le mˆme ´tat que e a e e e l’affectation t ←− mem[i] en se servant de l’initialisation ` 0 du registre trouv´. a e Le calcul du pr´dicat j > 0 et non (trouv´) se fait dans deux ´tats successifs e e e (voir le m´canisme d’´clatement de conditions complexes dans le chapitre 5).3.

soit de passer par l’UAL. Sa liaison sur n fils au bus A est compl´t´e par des 0. e En r´sum´. e e Le registre TR ne comporte qu’une seule bascule. TR et TEMP au bus A pour r´aliser les actions J ←− I. TR ←− 0 et TR ←− 1 on se sert des commandes e d’initialisation des bascules des registres correspondants.Op1 BusAdresses ResetTR SetTR TRBusA UAL TR MBusB SelAdr I InitI ChI J T T E M P ChTEMP M ChJ ChT TPBusB Bus B ComptesRendus SelEntr´es e SelSorties SelUAL BusR´sultat e BusDonn´es e Fig. TEMP>T et non (TR). On connecte le bus donn´es au bus r´sultat pour les actions comportant une e e lecture en m´moire : T ←− mem[I] et TEMP ←− mem[J−1]. e Pour les actions n´cessitant un acc`s m´moire en ´criture ou en lecture : e e e e T ←− mem[I]. mem[J] ←− T. soit de connecter le bus A ou B au bus adresses. e e On connecte I.17 – Partie op´rative pour la machine ` trier e a Il y a 6 registres permettant de stocker les variables de l’algorithme : I. on doit pouvoir avoir sur le bus A le contenu des registres I. M et TEMP (pour la variable interm´diaire introduite). J. e Pour r´aliser I ←− 1.. On connecte M et T au bus B pour le calcul des pr´dicats I=M et TEMP>T. TR (pour trouv´). Les entr´es/sorties sont effectu´es via le bus adresses en sortie et le bus e e donn´es en entr´e et sortie. I ←− I+1 et les calculs n´cessaires ` l’´valuation des pr´dicats I=M.. ee On se sert d’un op´rateur unique ` deux op´randes A et B qui doit permettre e a e les calculs : A. T. A−1. e e on transmet J sur le bus adresses en passant par le bus A et l’UAL. A+1 et d´livrer les comptes-rendus : r´sultat nul et e e r´sultat positif. A−B. Pour les actions e comportant une ´criture en m´moire : mem[J] ←− T et mem[J] ←− TEMP. TR et TEMP. On choisit la deuxi`me solution puisqu’il faut effectuer un calcul e d’adresses pour l’action TEMP ←− mem[J−1]. mem[J] ←− TEMP. e a e e J=0. e e J. et on connecte T et TEMP au bus B puis le bus B au bus donn´es. on a le choix. On doit pouvoir avoir sur le bus B le contenu des registres .262 Conception de circuits s´quentiels. 11. J e ←− J−1. e IBusA JBusA TPBusA Bus A Op2. J. TEMP ←− mem[J−1].

Op1) = (0.18 – Sorties pour quelques ´tats de l’automate de la figure 11. 1). On doit enfin pouvoir amener la valeur e e pr´sente sur le bus B sur le bus donn´es.4 Optimisation On peut simplifier ce circuit en n’utilisant plus de registre pour stocker le bool´en trouv´. A−1.3. A. Exercices 263 3 4 5 7 j ←− i : IBusA = ChJ = 1. sont pr´cis´s e e e les signaux ` 1 et ` φ et omis ceux ` 0. (Op2. trouv´ = FAUX : IBusA = ChT = ResetTR = l/e = SelMem e = SelAdr = SelEntrees = 1. ChTEMP = ChT = ResetTR = SetTR = φ t ←− mem[i] . (Op2. En suivant la m´thode d´crite dans ce chapitre e e .3. On doit pouvoir charger les registres I. a a a M. Op1) = (0. TEMP et T par la valeur pr´sente sur le bus r´sultat. pour quelques ´tats. On remplace l’´tat correspondant par les deux ´tats de l’´metteur e e e e dans la poign´e de mains (Cf. On doit pouvoir amener la valeur pr´sente e e e sur le bus donn´es sur le bus r´sultat. e 4. 11. J. Op1 qui commandent l’op´ration de l’UAL (OperationUAL) correspondent respectivement e aux op´rations : A + 1. Paragraphe 3. Exercices E11. Nous utilisons les signaux apparaissant sur la PO de la figure 11. 1) temp ←− mem[j−1] : JBusA = ChTEMP= l/e = SelMem = SelAdr = SelEntr´es = 1. 1). e e Les configurations 00. A−B.16.2 du chapitre 10. Pour les ´critures et lectures en m´moire les signaux SelMem et l/e e e a ` destination de la m´moire sont des sorties suppl´mentaires de l’automate.16 . Op1) = (1. e 5.5. ChTEMP = φ j : JBusA = 1. e e 4.17. On peut utiliser le protocole de poign´e de mains pour l’action e e e D´livrer (fin). 10 et 11 des deux signaux Op2 . T et TEMP. (Op2. 01. les sorties de l’aue tomate d’´tats fini correspondant ` la machine s´quentielle avec action de e a e la figure 11. Op1) = (0.1). 1) e Fig. e Nous donnons dans la figure 11.1 : La racine carr´e e Il s’agit de construire un circuit permettant de calculer la partie enti`re de la e racine carr´e d’un entier naturel x. En effet on peut sortir directement de la boucle quand le e e test du pr´dicat mem[j-1] > t donne VRAI (voir la modification sur la machine e s´quentielle de la figure 11. (Op2.3 Obtention de l’automate d’´tats fini de la partie contrˆle e o Le passage de la machine s´quentielle ` l’automate d’´tats fini se fait comme e a e pr´c´demment.19). L’algorithme correspondant est donn´ au e e paragraphe 3.18.

19 – Machine s´quentielle avec actions optimis´e de la machine ` trier e e a ResNul temp ←− mem[j−1] . 11...264 Conception de circuits s´quentiels. e i ←− 1 D´livrer(Fin) e ResNul i−M ResNul j ←− i t ←− mem[i] j ResNul mem[j] ←− t ResPos i ←− i + 1 temp − t ResPos mem[j] ←− temp j ←− j − 1 Fig.

Donner la machine s´quentielle avec ace e tions correspondant ` l’algorithme et utilisant cette PO. fin : un booleen Algorithme Tantque VRAI : Acqu´rir(U) e tantque U > 1 : si U MODULO 2 = 0 alors U ←− U DIV 2 sinon U ←− 3 * U + 1 D´livrer (U) e D´livrer(fin) e Fig.20 – Algorithme de la suite de Syracuse SelSorties Bus A Sorties Op ChU U horloge UAL SelUAL BitPoidsFaible SelEntr´es e ResNeg Bus R´sultat e Entr´es e Fig. On effectuera les entr´es/sorties ` l’aide e a du protocole ` poign´e de mains via les bus Entr´es et Sorties pour U. Faire une synth`se cabl´e de cet automate avec un e e e codage compact. Exercices 265 Lexique U : un entier > 0 . La figure 11. e a E11.21 repr´sente une PO issue de la PO type du paragraphe 2. s’inspirer de e la PO type donn´e ` la section 2.2 : La suite de Syracuse La figure 11. Les comptes-rendus de a l’UAL sont le bit de poids faible et le signe du r´sultat. X DIV 2 et 3*X+1.21 – Une partie op´rative pour la suite de Syracuse e donner une PO et une PC permettant de r´aliser cet algorithme . On choisira pour cela un codage pour les trois op´rations de e l’UAL (Op) : 1−X. a e e . 11. 11.20 donne l’algorithme correspondant au calcul de la suite de Syracuse.5. e permettant de r´aliser cet algorithme. En d´duire l’automate e e d’´tats fini correspondant.

266 Conception de circuits s´quentiels. e ...

Troisi`me partie e Techniques de l’algorithmique logicielle .

.

Chapitre 12 Le langage machine et le langage d’assemblage Nous avons ´tudi´ au chapitre 4 un ensemble de mod`les des traitements e e e qu’on peut vouloir faire effectuer par un dispositif informatique. qui ne saurait s’exprimer directement en termes de s´quences de bits. c’est-`-dire ` assurer que les programmes en a a langage machine qui fonctionnaient sur un processeur de la g´n´ration n sont e e r´utilisables sur le processeur de la g´n´ration n + 1. on peut e s’int´resser au probl`me de la programmation de ce dispositif par un ˆtre hue e e main. Nous ´tudions au chapitre 14 les circuits e e s´quentiels qui r´alisent cette tˆche d’interpr´tation. ni les machines s´quentielles. e Concevoir un langage machine est une tˆche indissociable de la conception a du processeur. Le seul langage compr´hensible par un ordinateur est le langage machine e de son processeur. chacun codant une instruction du processeur. bien e e a e que difficilement lisible par un ˆtre humain. mais il se e a e note par du texte. e Le langage d’assemblage est un langage textuel bˆti sur le mod`le du langage a e machine. que le processeur interpr`te. mais ce n’est e a e pas la seule contrainte. poss`de une structure : il est e e possible d’y voir une suite de paquets de bits. c’est-`-dire une op´ration ´l´mentaire r´alisable par le processeur a e ee e (par exemple additionner deux entiers cod´s sur un octet). ni les langages de programmation de haut niveau. On peut avoir ` assurer la compatibilit´ ascendante a e dans une famille de processeurs. Il a la mˆme structure. Traduire le langage d’assemblage en langage machine suppose : une analyse . Un langage machine. On doit choisir un ensemble d’instructions (on dit aussi : jeu d’instructions) de mani`re ` fournir un mod`le de calcul universel. e ne sont directement exploitables par un ordinateur. e e e Pour d´finir compl`tement un langage machine. Si l’on suppose donn´s le processeur et son langage machine. Toutefois. Un programme en langage machine est une suite finie de bits. tel que nous l’avons d´fini e en introduction. il faut ensuite choisir un e e codage de l’ensemble des instructions sur un certain nombre de bits. c’est-`-dire les mˆmes instructions.

il e faut tout d’abord d´finir pr´cis´ment la machine. Les instructions sont e e ex´cut´es dans l’ordre o` elles sont rang´es en m´moire. C’est par ailleurs la tˆche principale de l’outil appel´ e a e assembleur des environnements de programmation. un texte ´crit dans e e un langage d’assemblage pour un processeur 68000 . sont e ee e d´sign´s par des noms ou par des num´ros courts. e e u e e Nous distinguons par la suite : – Une m´moire de grande taille. Nous ´tudions les principes de cette traduction e e dans le pr´sent chapitre. nous exposons la d´marche de conception d’un lane gage machine : choix du jeu d’instructions et codage. un exemple de programme. Nous verrons au chapitre 13 que le langage e a e d’assemblage est lui-mˆme une cible pour la traduction des langages de haut e niveau. Le paragraphe 2. pour y rep´rer les structures . avec des instruce tions travaillant sur l’une des cat´gories de registres seulement. Sur d’autres e . un texte d’un langage d’assemblage pour processeur sparc . en prenant quelques exemples parmi les processeurs existants. Dans le paragraphe 1. sous 5 formes : un algorithme du langage d’actions d´crit au chapitre 4 . 1. e Nous parlerons souvent de m´moire principale e – Une m´moire de plus petite taille dont les ´l´ments.270 Le langage machine et le langage d’assemblage lexicale et syntaxique du texte. dont les ´l´ments sont d´sign´s par des e ee e e num´ros qu’on appelle des adresses. et proposer des crit`res de choix e e d’un ensemble d’instructions qui constitue un mod`le de calcul universel. un programme en langage machine sparc. la v´rification e e des contraintes d’utilisation des op´rateurs et op´randes . d´crit les cae ract´ristiques d’un langage d’assemblage construit sur le langage mae chine. appel´s registres. 1. un programme en langage machine 68000 . un codage des struce e tures en s´quences de bits. Sur certaines machines e e e on distingue des registres donn´es et des registres adresses. e e e Nous nous restreignons ici au mod`le d’architecture de Von Neue mann [BGN63] : une machine comporte une unit´ de calcul (qui r´alise des e e op´rations de base sur les entiers cod´s en binaire) et une m´moire qui contient e e e des op´randes et des codes d’op´rations (les instructions). Les probl`mes de la traduction du langage d’assemblage vers le e langage machine correspondants sont ´tudi´s au paragraphe 3. Nous verrons ´galement au e chapitre 18 les aspects de compilation s´par´e ou d’abstraction vis-`-vis de la e e a position en m´moire ` l’ex´cution. Enfin nous e e donnons au paragraphe 4.1 Le langage machine Description g´n´rique de la machine e e Pour d´finir la notion de langage machine. C’est la m´moire que nous avons mae e nipul´e en en donnant une abstraction par le tableau MEM au chapitre 4.

1 Instructions et codage Une instruction ´l´mentaire peut ˆtre par exemple un transfert m´moire ee e e vers m´moire. En langage machine e e e 68000. de crit`res tels que le temps d’acc`s ` la m´moire : e e a e les registres sont accessibles plus rapidement que la grande m´moire.3). Dans ce cas le codage complet de l’instruction comporte : la repr´sentation en binaire pur de l’adresse a . les registres sont banalis´s. 1 .3 pour un expos´ des principes e e de codage des instructions). dit accumulateur Nous d´taillons au chapitre 14 l’influence de ce genre de distinction sur ce qu’on e appelle la partie op´rative du processeur. L’ajout d’une constante ` une case m´moire (MEM[a] ←− MEM[a] + k) a e peut ´galement constituer une instruction ´l´mentaire dans un langage e ee machine. e e e 1. dont l’effet peut ˆtre d´crit par une phrase du langage d’actions e e e pr´sent´ au chapitre 4 : MEM[a] ←− 4 MEM[b]. le codage du type d’op´ration e e e effectu´ : transfert m´moire vers m´moire de taille 4 octets. c’est-`-dire la structure du circuit qui e a connecte l’unit´ de calcul aux bus et aux divers registres. le codage e e e e e binaire de la constante k. soit en ralentissemnt l’ex´cution . cod´es sur un certain nombre de bits fix´ . au contraire. les 32+32 bits suivants codent les deux adresses d’op´randes (voir paragraphe 1. Dans ce cas le codage complet e e de l’instruction comprend : les repr´sentations en binaire pur des adresses a e et b. qui soit ne peuvent pas apparaˆ tels quels dans le codage d’une insıtre truction (Cf. sparc d´signe le sparc V8 qui a des mots de 32 bits.1. dans le e choix d’un jeu d’instructions. D’autre part les adresses a e des octets dans la grande m´moire sont des entiers assez longs (typiquement e 32 bits). e 1.2 El´ments et structure du langage machine e Un programme ´crit en langage machine est une suite finie de codages e binaires d’instructions ´ventuellement param´tr´es. le codage du type d’op´ration e e effectu´ : incr´mentation de case m´moire d´sign´e par son adresse . en revanche. e La distinction entre ces deux types de m´moire permet de tenir compte. Paragraphe 1. cette instruction est cod´e sur 16 + 32 + 32 bits. qui a des mots de 64 bits. la taille du transfert et le fait que l’on doit e e trouver ensuite deux adresses de 32 bits . e les adresses ou num´ros des registres sont de petits entiers — 5 bits sur le proe cesseur sparc1 par exemple — et peuvent donc apparaˆ comme d´signation ıtre e d’op´rande dans le codage d’une instruction. et non le sparc e V9. Les machines les plus e anciennes ne comportaient qu’un seul registre. Le langage machine 271 machines. Les 16 premiers bits e codent le type d’op´ration effectu´. Nous vere rons au chapitre 15 que les registres sont en g´n´ral situ´s physiquement dans e e e le processeur. contrairement ` la grande m´moire. Dans ce chapitre.2.

donnera l’adresse m´moire . dont le e e e contenu. auquel cas e e l’interpr´tation de l’instruction produit toujours le mˆme effet . qui donne le num´ro de la prochaine instruction e a ` lire. qui interpr`te chacune d’entre elles. le processeur e e peut modifier le contenu de la m´moire ou d’un registre. On parle alors d’adressage absolu. ou pr´e e e e e e e e incr´ment´.3 D´signation d’adresse et modes d’adressage e Nous traitons dans ce paragraphe de tout ce qui concerne les m´canismes e de d´signation d’emplacements en m´moire (m´moire principale ou registres). Dans ce ee e cas la rupture effective de s´quence. Il existe deux sortes de e branchements : les branchements relatifs ` la position courante du compteur a . ou post-d´cr´ment´) avec ou sans d´placement. le ou les param`tres correspone e e dants de l’instruction doivent d´signer une adresse d’octet en m´moire. Le compteur programme est incr´ment´ ` chaque instruction. e Dans le cas des instructions de rupture de s´quence. e Consid´rons tout d’abord le cas des instructions de calcul. Une rupture de s´quence peut ˆtre inconditionnelle. Ces m´canismes sont appel´s des modes e e e d’adressage.2 Notion de compteur programme Sauf indication contraire. Il en existe de nombreuses variantes : indirect par registre avec d´placement . La figure 12. Lorsqu’elles come portent un ou plusieurs op´randes en m´moire. On parle alors de rupture de s´quence. elle peut ˆtre e e e conditionn´e. il faut indiquer d’une e mani`re ou d’une autre ` quelle adresse se trouve la prochaine instruction ` e a a ex´cuter. Le processeur g`re donc ce qu’on ape a e pelle le compteur programme.2. d´pend de l’´tat des e e e e donn´es et donc de la m´moire ` ce moment-l`. e e e utilisables dans toute instruction de calcul si elle a des op´randes en m´moire. une suite d’instructions est lue s´quentiellement e par le processeur.272 Le langage machine et le langage d’assemblage 1.1 en donne une vue synth´tique. et passe ` celle qui se e a trouve en m´moire ` l’adresse suivante. Il peut ´galement modifier le num´ro (l’adresse) e e e e de la prochaine instruction ` lire. ou a e branchement. lors d’une ex´cution. e e dans les instructions de transfert depuis ou vers la m´moire. par exemple. Ce peut ˆtre fait e e e ´galement en donnant comme param`tre un num´ro de registre. par le signe du contenu d’une case m´moire. et dans les inse tructions de rupture de s´quence. etc. ine e terpr´t´ comme un entier relatif ou comme le r´sultat d’un calcul. indirect par registre pr´d´cr´ment´ (ou postincr´ment´. ou commander une e op´ration de l’unit´ de calcul. e ea Comme cons´quence de l’interpr´tation d’une instruction. Le mˆme e e e e e e e raisonnement est valable pour les instructions de transfert depuis ou vers la m´moire. e e a a 1. puisque ce n’est pas l’instruction suivante. il s’agit dans ce cas e e d’adressage indirect par registre. Une instruction de rupture de s´quence doit comporter l’adresse e de destination.2. lors de l’ex´cution. Ce peut e e ˆtre fait en donnant directement dans l’instruction une constante enti`re posie e tive qui est l’adresse voulue (c’est le cas dans l’exemple MEM[a] ←− 4 MEM[b] ´voqu´ ci-dessus).

Le mod`le de machine dit de Von Neumann repose sur les e classes d’instructions suivantes : transfert de donn´es (chargement depuis un e registre. Programmer directement dans un tel langage serait d´j` tr`s difficile. e Noter que pour une mˆme instruction. branchee e ments inconditionnels et conditionnels . Le tableau 12.3 qui traite du codage des instruce tions.4 pr´sente ces grandes classes d’instructions plus des instruce . Voir aussi le paragraphe 1. e le d´placement ´tant stock´ dans un registre au lieu d’ˆtre donn´ par une e e e e e constante cod´e dans l’instruction. La compr´hension e e compl`te de cette contrainte demande quelques connaissances en calculabilit´. stockage dans la m´moire) . a e La contrainte de fournir un mod`le de calcul universel est r´alisable avec un e e langage machine ` une seule instruction complexe. que le probl`me se pose effectivement.1 r´sume les diverses mani`res d’indiquer une adresse e e m´moire dans une instruction. Un langage e machine qui ne permettrait pas ainsi de modifier l’adresse de la prochaine instruction ` lire. nous e avons utilis´ les termes les plus couramment employ´s. L’instruction doit donc sp´cifier un d´placement ou une adresse e e absolue. ou indirectement dans un registre. sous quelque forme que ce soit. conditionnel. e ne permettrait pas de coder tout algorithme. Il ne suffit donc pas que le jeu d’op´rations offertes garantisse un mod`le e e de calcul universel.4 Mod`le de calcul universel. et ´crire un compilateur de langage de ea e e haut niveau — c’est-`-dire un algorithme capable de traduire tout texte de a programme de haut niveau en suite de telles instructions — serait encore plus ardu. Dans les deux cas. serait donc incomplet. Le mode indirect par e e registre avec index est un adressage indirect par registre avec d´placement.2. e Il est en effet assez facile de se convaincre qu’un langage de haut niveau qui ne disposerait pas de structures it´ratives.1. e e mais il est facile de se convaincre ` l’aide d’exemples extrˆmes. qui doit ´craser e e l’ancienne. on peut imaginer que cette donn´e est fournie die rectement comme une constante dans l’instruction. chargement depuis la m´moire. Le langage machine 273 programme — l’instruction sp´cifie alors un d´placement en avant ou en arri`re e e e par rapport au compteur programme — et les branchements absolus — l’instruction sp´cifie une nouvelle valeur du compteur programme. e e Le paragraphe 1. Pour nommer les modes d’adressages. de mani`re conditionnelle. op´rations arithm´tiques et logiques. Or les structures it´ratives core respondent aux ruptures de s´quence dans le langage machine. plusieurs modes d’adressage peuvent e ˆtre possibles. pour comprendre comment distinguer les diff´rents cas. du genre : acc`s m´moire a e e en lecture avec adressage indirect. e 1. e mod`le de Von Neumann et langage machine type e La premi`re contrainte ` respecter dans la conception du jeu d’instructions e a d’un processeur est d’assurer un mod`le de calcul universel. comme le codage a e des boucles.

un num´ro n e contenu de Regn Regn rect indirect par un num´ro n e MEM[contenu de contenu de registre Regn ] Regn indirect par deux num´ros n et MEM[contenu de contenu de e registre avec d Regn + contenu Regn + index de Regd ] contenu de Regd indirect par un num´ro n. . t d´pend e e e e de la taille de l’op´ration.t d´cr´ment´ e e e indirect un num´ro n e MEM[contenu de contenu de par reRegn ] Regn gistre postd´cr´ment´ e e e Pour les instructions de rupture de s´quence e relatif au une constante rela. une MEM[contenu de contenu de e registre avec constante relative Regn + d] Regn + d d´placement d e indirect par un num´ro n e MEM[contenu de contenu de registre pr´e Regn . Noter que. la constante d donn´e dans l’instruction e peut ´ventuellement ˆtre multipli´e par une constante N.PC + d × compteur tive d N programme absolu une constante na. 12. et t ne vaut pas n´cessairement 1.k tive k absolu une constante na. c’est-`-dire de la taille des op´randes. t = 4. l’effet sur e e e e le registre d’indirection est de la forme : Regn ←− Regn op t.k turelle k Information contenue dans le codage de l’instruction valeur ` utiliser a (pour op´randes e sources de calcul et sources de transferts) effet ´ventuel e sur les op´randes e - - Regn ←− Regn -t Regn ←− Regn -t - - Fig.3. Par exemple. pour les adressages indirects par registre avec pr´ (ou post) incr´mentation (ou d´cr´mentation).1 – Modes d’adressage usuels. e a e si l’instruction travaille sur des mots de 32 bits. Pour les adressages relatifs au compteur programme PC.274 Le langage machine et le langage d’assemblage nom usuel adresse effective (pour r´sultats et e cibles de transferts) Pour les instructions de calcul et les transferts m´moire e imm´diat e une constante rela. Voir un exemple e e e paragraphe 1.MEM[k] k turelle k registre di. o` op est u l’op´ration + ou l’op´ration −.4.t] Regn .

Les deux architectures ont la mˆme puissance d’exprese sion. De mani`re g´n´rale. Figure 12. et il existe donc toujours au moins une configuration d’un vecteur de b bool´ens qui ne correspond ` aucune e a instruction.6. e e On suppose que la nature d’une instruction comporte implicitement l’information sur le nombre d’op´randes.3 Codage des instructions Nous avons donn´ au paragraphe 1. e On trouve parfois le terme d’architecture de Von Neumann. Nous pr´cisons cie a e dessous l’ensemble des informations ` coder. 1. Paragraphe 1. c’est-`-dire le choix des champs. Mˆme si l’on imagine un langage machine e e offrant par exemple une addition binaire et une addition ternaire. les transferts entre m´moire et registres. le codage compact de la nature de l’op´ration demande b = log2 n bits (l’entier imm´diatement e e sup´rieur a log2 n). Cela justifie le cas d’erreur dans l’algorithme d’interpr´tation du e langage machine du paragraphe 1. 1. les instructions e sp´cifiques ´ventuelles (Cf. avant d’´tudier les contraintes a e qui portent sur la structure du code.2. et constitue l’une des causes d’interruption logicielle ´tudi´es dans la partie VI. le choix de la structure des informations qui e e e e constituent une instruction.2) .4 pour une liste d´taill´e d’instruce e e e tions). en ine diquant bri`vement quelles sont les informations ` coder. Chapitre 4). on dit que le codage d’une instruction est structur´ en champs e e (Cf. o` la m´moire u e contient ` la fois les donn´es et les instructions.1.1 Codage de la nature de l’op´ration e L’op´ration effectu´e est prise parmi toutes les op´rations de l’unit´ de cale e e e cul.1 des exemples d’instructions.2 ci-dessous. e a et ` coder globalement. l’une les donn´es. Cela donne un codage plus compact que de s´parer a e le codage de la nature de l’instruction et le codage d’un entier donnant le nombre d’op´randes (qui pour une grande majorit´ des op´rations est toujours e e e le mˆme). on consid`re e que ce sont deux instructions diff´rentes ` compter dans les n instructions. les branchements.3. Si le jeu d’instructions comporte n instructions. Il n’y a aucune raison pour que le nombre d’instructions e ` d’une machine soit exactement une puissance de 2. par opposition ` l’architeca e a ture de Harvard. a une influence a sur la compacit´ du codage. e . o` deux m´moires sp´cifiques contiennent. c’est aussi le terme utilis´ pour les noms des diff´rentes e e informations qui composent un type construit n-uplet (Cf. u e e e l’autre les instructions. Le langage machine 275 tions sp´cifiques comme l’on en trouve dans toute machine. Le codage complet d’une instruction est obtenu par juxtaposition des codages des diff´rentes informations qui la e d´finissent .

le codage des informae e tions effectives des op´randes (entiers. adresses. la taille de l’entier param`tre est en e fait cod´e dans la nature de l’instruction : il y a deux additions.3. En reprenant la deuxi`me colonne du tableau 12. Sur certaines familles de machines. Le deuxi`me op´rande peut ˆtre dans un registre ou ˆtre une vae e e e leur imm´diate. num´ros de registres). selon que l’un des op´randes est un entier long (32 bits) ou un entier e court tenant sur un octet. Pour distinguer ces deux cas. on e e obtient les diff´rentes informations ` coder : des entiers naturels (qui peuvent e a repr´senter des adresses m´moire absolues). et come e e ment il faut l’interpr´ter. comme dans le cas des e e e a op´rations arithm´tiques du sparc : une instruction d’addition. e 1. Dans le cas du 68000.3.3. Ce peut ˆtre r´duit ` 1 bit.3 Codage des informations mises en jeu dans le mode d’adressage La nature de l’instruction. les emplacements des deux op´randes et l’emplacee e ment du r´sultat. Ces e e diff´rents codages doivent ˆtre juxtapos´s pour former le codage complet de e e e l’instruction. des entiers relatifs (qui peuvent e e repr´senter des d´placements de branchements ou des op´randes d’op´rations e e e e arithm´tiques). e e a toujours 3 param`tres. e e toutes les op´rations de calcul acceptent des op´randes dans des registres. Le e e e e jeu d’instructions 68000 distingue une addition g´n´rale et une addition dite e e rapide. a e Les entiers sont cod´s (en binaire pur ou compl´ment ` 2) sur une taille e e a pr´d´finie (c’est toujours la mˆme. Dans ce cas. les codes des diff´rentes inse tructions peuvent avoir des tailles diff´rentes. il faut coder le mode d’adrese e sage de chacun des op´randes.4 Structure du code La figure 12. e 1. ou e e en m´moire avec des modes d’adressage vari´s. des num´ros de registres. Le r´sultat et l’un des op´randes sont forc´ment dans des e e e e registres. Le codage complet du mode e e d’adressage de chaque op´rande comporte 3 bits.276 Le langage machine et le langage d’assemblage 1. le codage e e des modes d’adressage des op´randes (si n´cessaire). e d´termine enti`rement quelle est la taille du reste du code (op´randes). e e En g´n´ral le nombre de registres est une puissance de 2. en revanche.2 Codage des modes d’adressage des param`tres e Si le langage machine est tel qu’une mˆme op´ration accepte la d´signation e e e d’op´randes avec diff´rents modes d’adressage. Sur le sparc. elle e .2 donne des exemples de structures de code. Toute configuration d’un vecteur de 5 bool´ens e e correspond ` un num´ro de registre existant. ce qui permet un e e codage compact et sans trous d’un num´ro de registre. les 32 e registres sont cod´s sur 5 bits. plus le mode d’adressage des param`tres. elle est donc implicite et non cod´e). le codage du mode d’adressage e de ce deuxi`me op´rande comporte 1 bit. par exemple. Lorsque la taille est variable. Le code d’une instruction compl`te comporte le codage de la nature de l’op´ration.1.

plus le fait que les valeurs imm´diates sont n´cessairement e e contigu¨s (c’est plus pratique pour la g´n´ration de langage machine depuis e e e le langage d’assemblage. e a d´cimal cod´ binaire. sur le sparc. la nature de l’instruction est cod´e e sur les bits 31. Les seuls types sont donc les entiers et les vecteurs e de bool´ens . plus les informations relatives ` l’un des op´randes. voir ci-dessous).). cette op´ration est ´videmment r´alisable sur e e e e e tout processeur. Ces deux informations doivent ˆtre cod´es dans les pree e e miers mots du code complet de l’instruction. et il existe des op´rations e e qui les interpr`tent comme des vecteurs de bool´ens (AND).. et cela ´vite des chevauchements de nappes de fils e dans le circuit interpr`te). le premier mot de 16 bits contient ces deux informations. Il existe des op´rations qui ont un sens si on e e e interpr`te les vecteurs de bits comme le codage d’entiers (ADD. Cette contrainte. e . 30. mais en passant par le codage des caract`res par des entiers e ou des vecteurs de bool´ens. pixels. compl´ment ` 2.1. En revanche il n’en e e existe pas qui les interpr`tent comme le code ASCII d’un caract`re . En 68000 par exemple. Certaines instructions ne sont utilis´es e e que si le programmeur interpr`te la correspondance entre vecteurs de bool´ens e e et entiers selon un certain code (binaire pur. mais les types sont e implicites dans les op´rations offertes. puisqu’ils seront lus en premier. Le choix du codage pr´cis est guid´ par des consid´rations mat´rielles. Par exemple e o les portions de code qui correspondent ` des num´ros de registres sont situ´es a e e au mˆme endroit quelle que soit l’instruction. si elles tiennent dans a e la place restante. l’extension MMX [Int97] et VIS offrent de plus des op´rations qui e e interpr`tent les vecteurs de 32 bits comme 4 sous-vecteurs de 8 bits.4.1 Classes d’instructions usuelles Instructions de calcul En langage machine il n’y a pas de typage des donn´es. et 19 ` 24. Chapitre 14). peut amener ` couper le codage de la nature de e a l’instruction. e e e e qui portent sur la structure du circuit qui constitue l’interface entre la partie op´rative et la partie contrˆle du processeur (Cf. Par exemple. branchements e sur codes de conditions enti`res.. e 1. Entre ces deux champs on trouve 5 bits pour le a num´ro de registre destination.4 1. ce serait e e le cas s’il existait une instruction sp´cifique du langage machine capable de e transformer un vecteur de bits repr´sentant le caract`re ’a’ en vecteur de bits e e repr´sentant le caract`re ’A’ . Le langage machine 277 est enti`rement d´termin´e par la nature de l’instruction et les modes d’adrese e e sage des op´randes. virgule flottante. de mani`re ` simplifier la pare e a tie op´rative du processeur : les fils de s´lection de l’ensemble des bascules e e qui r´alise les registres sont toujours branch´s sur les mˆmes bits du registre e e e instruction.

source : 1 op´rande imm´diat : 42 e e (a) Mode d’adressage du deuxi`me e op´rande : imm´diat. qui permettent la division e e et la multiplication par des puissances de 2. 42. e Lorsque la multiplication et la division g´n´rale n’existent pas. D7 du 68000 (noter que 4242424210 = 028757B216 ). Chapitre 3). %r2 du sparc . paragraphe 2. (Cf. Le sparc offre une instruction mulscc effectivement ex´cutable e e en temps ´gal ` celui d’une addition. Chapitre 3. (b) codage de l’instruction addi 42424242. Fig. mais ce sont des instructions coˆteuses en temps ou en surface du cire u cuit interpr`te.2 – Structure du codage d’une instruction : (a) codage de l’instruction addcc %r1. Le 68000 offre deux instructions muls et mulu de e multiplication de deux entiers sign´s ou non de 16 bits. Pour r´aliser la multiplication de deux entiers 32 bits. ıt Certains processeurs offrent ´galement la multiplication et la division e enti`re . mais cette instruction ne constitue qu’un e a pas de la multiplication 32 bits (la version 9 offre une vraie multiplication). La diff´rence d’interpr´tation du codage des entiers ape e paraˆ dans les instructions de branchement conditionnels (paragraphe 1. dont le r´sultat est sur e e 32 bits . on trouve e e toutefois les instructions de d´calage arithm´tique.2.3). La mˆme instruction est utilisable pour les e op´rations sur les naturels cod´s en binaire bur et sur les entiers cod´s en e e e compl´ment ` deux. : 2 Nature de l’op´ration : Addcc e num´ro e du reg. 12.278 Le langage machine et le langage d’assemblage 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 num´ro e du reg.4. e e Nature de l’op´ration : AddI e Taille de l’op´ration 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 d’adressage pour le r´sultat : e registre donn´e e Num´ro de registre : 7 e Valeur imm´diate op´rande : e e 42424242 cod´ sur 32 bits e (b) (poids forts d’abord). Op´rations sur les entiers Tous les processeurs offrent les op´rations d’ade e dition et de soustraction d’entiers. il offre de mˆme deux instructions divs et divu. dest. grˆce aux bonnes propri´t´s du codage en compl´ment ` e a a ee e a deux (Cf. . il faut ´crire 32 instruce e tions mulscc en s´quence.3).

L’un est utilis´ ` la fois en lecture et en ´criture.1. Par exemple le sparc e offre AND et ANDN. e a e e non. Le langage machine 279 Op´rations sur les vecteurs de bool´ens Les op´rations sur les vecteurs e e e de bool´ens sont les extensions bit ` bit des op´rateurs bool´ens usuels et. Ce sont les e e d´calages logiques. la disjonction). ou. permet d’exae a e miner individuellement tous les bits d’un vecteur de bits. Il utilise une op´ration ET bit ` bit avec l’op´rande 1 (c’este a `-dire le vecteur de bits qui n’a qu’un 1 en poids faible) pour tester le bit de poids faible de V. paragraphe 1.2. Elles n’existent pas n´cessairement toutes. bit ` bit. l’algorithme suivant permet de calculer le nombre de 1 dans a e un vecteur de bits. Chapitre 4. XOR et XORN. ORN) calcule la conjonction (resp. g2. Un d´calage ` droite. Nb : un entier ≥ 0 algorithme Nb ←− 0 tantque V = 0 si (V ET bit ` bit 1 = 1) alors Nb ←− Nb+1 a d´caler V d’un bit vers la droite e Nombre d’op´randes Toutes les op´rations examin´es ci-dessus sont bie e e naires : elles ont deux op´randes et un r´sultat. le vecteur V est d´cal´ d’un bit vers la e e e droite. lexique : V : un vecteur de bits . parae graphe 2. A chaque ´tape. combin´ avec e a a e a e la conjonction bool´enne bit ` bit utilis´e comme masquage. OR et ORN. g3 pour r´aliser l’afu e e fectation g3 ←− g1+g2. et l’on obtient ainsi des e ee machines dites ` 0. C’est le cas pour les machines dites ` 3 r´f´rences e a ee comme le sparc. Les propri´t´s de l’alg`bre de Boole e a ee e permettent de fabriquer les op´rateurs manquants en termes des op´rateurs e e disponibles. ea e . Pour utiliser les op´rations sur les vecteurs de bool´ens dans la compilae e tion des op´rations bool´ennes des langages de haut niveau. 1 ou 2 r´f´rences (voir exercice E12. il faut inventer e e un bon codage des bool´ens du langage de haut niveau (Cf. Les op´rations sont de la forme a ee e dest ←− source op dest. o` l’on ´crit par exemple ADD g1. que ce soit un num´ro de registre ou une adresse en m´moire. Par exemple.2). On pourrait donc penser que e e les instructions du langage machine doivent n´cessairement d´signer 3 emplacee e ments m´moire ou registres. et l’instruction contient donc la d´signation de 2 e emplacements seulement. etc. e e e Mais il est possible de r´duire le nombre de r´f´rences.1). mais pas de NOT. Op´rations structurelles Les op´rations structurelles manipulent les vece e teurs de bits sans interpr´tation particuli`re de leur signification.1 et chapitre 13. a ee Le 68000 est une machine ` deux r´f´rences. du premier op´rande a e et de la n´gation bit ` bit du second. ANDN (resp. ` droite ou ` gauche. ou d’extraire des sous-champs de longueur quelconque. Une r´f´rence est la d´signation d’un op´rande ou ee e e du r´sultat. nand.

e a et sa taille en nombre d’octets.1 pour l’obtention de cette adresse) . e Finalement. Une instruction est donc e e e de la forme : PILE[Sp+1] ←− PILE[Sp] + Pile[Sp+1] . Toute op´ration d´pile les deux valeurs de sommet de pile a e e comme op´randes. Le registre accumulateur doit ˆtre charg´ auparavant par un transfert e e m´moire-registre ou registre-registre. ou 4 octets . Les transferts m´moire sont de taille 1. 2. 1. Il y a 32 registres de 32 bits. o` les positions a ee u des deux op´randes et du r´sultat sont implicites. et empile le r´sultat de l’op´ration. r est un num´ro de registre. Taille de transferts La taille n’est pas ` proprement parler un op´rande a e de l’instruction. 8 . En g´n´ral les tailles pr´vues 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 d’instructions. dont la taille est un vrai param`tre. 31].4. on trouve aussi un transfert double de 8 octets. comptage et branchea ments explicites). il faut d´signer un registre (par son num´ro) e e et ´ventuellement un sous-champ de ce registre. on peut imaginer une machine ` 0 r´f´rence. il faut pouvoir d´signer un e e e emplacement en m´moire. donn´ par exemple par le contenu e e e d’un registre. e e Noter toutefois qu’il existe sur le vax une instruction de copie de blocs m´moire.280 Le langage machine et le langage d’assemblage Si l’on veut maintenant ne d´signer qu’un emplacement. dans l’intervalle e [0. a est une adresse d’octet (voir tableau 12. ` l’ex´cution. 4 ou 8 octets. Pour un transfert de taille 4. par exemple. il faut que le e deuxi`me soit implicite. Les instructions sont alors de la forme : Acc ←− Acc + e source. l’op´ration est parfaitement sp´cifi´e. Chapitres 9 et 15). Sur sparc on trouve ainsi des transferts de e 1. Elle peut avoir un int´rˆt si le procesee seur garantit une ex´cution plus rapide de la forme ` instruction unique. 2. C’est le cas si l’on introduit un registre dit accue mulateur not´ Acc. Sp ←− Sp+1. On obtient.2 Instructions de transfert entre m´moire et registres e Pour r´aliser un transfert de ou vers la m´moire. 2. Les tailles des transferts disponibles sont le plus souvent des constantes. Un telle instruction a un effet ´quivalent ` celui a e e a d’une boucle de transferts de taille fixe. e e une machine ` pile. la e e e . en petit nombre. e Prenons l’exemple du jeu d’instructions sparc. qui concerne deux registres de num´ros cons´cutifs. Sp´cification compl`te des transferts Pour r´aliser un transfert de ou e e e vers un (ou plusieurs) registres. qui est aussi la taille des registres de donn´es (Cf. Une instruction e de transfert m´moire vers registre est de la forme : LOAD t a r o` t est une e u constante parmi 1. c’est-`-dire fournir l’adresse de son premier octet. par e a rapport ` la forme avec boucle (transferts de taille fixe. si Sp pointe sur le dernier emplacement occup´ et si la pile progresse en diminuant e Sp. 4.

et le programme peut-ˆtre rejet´. 2 registres R et R’ interviennent. c’est-`-dire octet. e e a l’adresse en m´moire doit satisfaire les contraintes de cadrage en m´moire e e mentionn´es au chapitre 4. c’est par exemple le contenu d’un e registre. e e e e e l’adresse en m´moire n’est pas une constante . si la taille du transfert est sup´rieure ` l’octet. si oui. dans la portion de e registre inutilis´e ? e Sur le sparc. les transferts ont toujours pour destination la portion de poids faible des registres. laquelle. Si la taille du transfert e est inf´rieure ` celle du registre source. toutefois. le deuxi`me est implicite. On retrouve l`. c’est e e le registre de num´ro suivant. paragraphe 2. L’instruction n’en d´signe qu’un .1.3. e Sur le sparc. la portion d’un registre qui n’est pas destination du transfert est laiss´e intacte. paragraphe 3. e Lors d’un transfert registre vers m´moire (cas des STORE du sparc. soit par des ee z´ros (on parle alors de transfert non sign´). c’est-`e a dire avant l’ex´cution.3). tenant e e e compte du codage en binaire pur ou compl´ment ` deux. et la e ` e version non sign´e. des questions sym´triques se posent. Pour des transferts de taille 1 ou e 2. cette contrainte d’alignement est v´rifiable statiquement. de 4 octets) est plus grande que le transfert demand´. fie gure 12. H pour half. Cette ee e op´ration rappelle bien ´videmment l’op´ration d’extension de format. les instructions de transfert m´moire vers registres. que nous avons ´tudi´e e a e e au chapitre 3. Les noms des instructions sont obtenus en combinant LD (pour LOAD) ou ST (pour STORE).1. Ces diff´rentes conventions sont illustr´es et d´taill´es dans e e e e e la figure 12. rien pour signed). La portion de poids fort est compl´t´e. soit par une recopie du bit de e e poids fort de la portion transf´r´e (on parle alors de transfert sign´). Si l’adresse en m´moire est une e e constante. et un caract`re sp´cifiant e e la taille : B pour byte. pour l’ensemble des registres. En g´n´ral. deux questions se posent : puisque la destination (un registre. le registre indiqu´ doit avoir un num´ro e e e pair. c’est-`-dire au moment de l’ex´cution e e a e du programme par le processeur. D pour double. Dans le cas des transferts doubles. Sur le 68000.2. De plus. l’´quivalent des contraintes a e d’alignement en m´moire. quelle portion du registre doit-on e a transf´rer ? D’autre part. existent donc en deux versions : la version dite sign´e. le caract`re sign´ ou non e e du transfert (U pour unsigned. de taille e inf´rieure a 4. . dans quelle portion du registre doite on ´crire ? Doit-on inscrire une valeur et.3 (cas du LOAD de sparc). dans le cas de l’adressage indirect par registre. La contrainte d’alignement est alors v´rifi´e dynamiquement. Le langage machine 281 source et la destination ayant la mˆme taille. Nous verrons au chapitre 24 que ces erreurs d’alignement en m´moire lors des e transferts font partie des exceptions ou interruptions logicielles pr´vues dans e un processeur. rien pour la taille d’un a mot.

.8] .0] ←− 1 MEM[a+1] R[15.8] ←− 1 MEM[a+2] . R[31.16] ←− 1 MEM[a+5] ..24] . LD MEM → R 2 non LDUH MEM → R 2 oui LDH MEM → R MEM → R MEM → R..24] ←− 1 MEM[a] R[7...8] ..0] ←− 1 MEM[a+1] R[15...16] .. R’ → MEM 2 1 8 – – – STH STB STD effet R[7. R[15. MEM[a+7] ←− 1 R’[7... R’[15.. R[31. MEM[a+5] ←− 1 R’[23.0] idem ST plus : MEM[a+4] ←− 1 R’[31..24] . R[31. On e e note ext16(b) (resp..8] ←− 1 MEM[a] ..8] ←− 3 ext24(0) R[7.. R’ 1 1 8 non oui – LDUB LDB LDD R → MEM 4 – ST R → MEM R → MEM R. MEM[a+1] ←− 1 R[7.0] Fig.16] ←− 1 MEM[a+1] . MEM[a+6] ←− 1 R’[15. R[23.8] ←− 1 MEM[a] .. R[31...0] MEM[a] ←− 1 R[15.8] .... MEM[a+1] ←− 1 R[23. e . MEM[a+3] ←− 1 R[7..16] .0] ←− 1 MEM[a] .. 24) bits obtenu en copiant 16 fois (resp. MEM[a+2] ←− 1 R[15. ext24(b)) le mot de 16 (resp.0] MEM[a] ←− 1 R[7... 12. 24 fois) le bool´en b.16] ←− 2 ext16(R[15]) R[7.0] ←− 1 MEM[a+7] .24] ←− 1 MEM[a+4] MEM[a] ←− 1 R[31. R’[23.3 – Transferts registres vers m´moire et m´moire vers registres du sparc.. R[31.0] ←− 1 MEM[a] .282 Le langage machine et le langage d’assemblage Op´rations LOAD e registre 32 bits R 31 24 23 16 15 87 0 a a+1 a+2 a+3 w x y z M´moire e Op´rations STORE e 1 octet transfert MEM → R taille 4 sign´ e – inst.0] ←− 1 MEM[a+3] .. R’[31.8] ←− 3 ext24(R[7]) idem LD plus : R’[7.8] ←− 1 MEM[a+6] ..16] ←− 2 ext16(0) R[7.

L’effet sur le compteur programme est de la forme PC ←− Regn1 + Regn2 (ou bien PC ←− Regn + d). Le ea d´placement n’est pas un entier tout ` fait quelconque : il est pair si le codage e a des instructions se fait sur un nombre pair d’octets. e qui doit ´craser l’ancienne. e Expression d’une condition de branchement Dans un langage de programmation de haut niveau. On peut envisager toutes e les combinaisons. Noter que dans la plupart des machines la valeur courante de PC est d´j` sur l’instruction suivante (Cf. L’effet d’une instruction de branchement relatif sur e le compteur programme not´ PC est de la forme : PC ←− PC + d. On peut e alors profiter de cette information pour gagner de la place dans le codage des instructions de branchement : au lieu de coder le d´placement exact d. les conditions des structures conditionnelles ou it´ratives sont des expressions bool´ennes quelconques qui font intervenir des e e . e Noter que la notion de branchement relatif ou absolu est parfaitement ind´pendante du mode d’adressage direct ou indirect. il e faut choisir un mode d’adressage : par une constante imm´diate. est de la forme PC ←− v. L’effet d’une e instruction de branchement absolu. indirect par registre avec d´placement : le codage e de l’instruction contient deux num´ros de registres n1 et n2 (ou bien un num´ro e e de registre n et une constante relative d). il faut e e e sp´cifier.1. car toutes les instructions e e sont cod´es sur un format fixe de 4 octets (voir paragraphe 1. indirectement e par un registre. e Branchements relatifs ou absolus Le branchement peut ˆtre relatif ` e a la position courante du compteur programme — l’instruction sp´cifie alors un e d´placement d en avant ou en arri`re par rapport au compteur programme— ou e e absolu — l’instruction sp´cifie une nouvelle valeur v du compteur programme. Il existe ainsi sur le sparc une instruction jmpl de branchement inconditionnel. relatif. Si la condition de branchement a la e valeur faux il y a passage en s´quence. e Donn´e du d´placement En cas de branchement relatif. Il existe aussi une instruction ba de branchement inconditionnel. Chapitre 14). Les branchements sont dits relatifs ou absolus selon la mani`re e d’indiquer l’instruction de destination. Que l’on indique un d´placement ou une adresse de destination absolue. Le langage machine 283 1.3 Instructions de rupture de s´quence e Pour d´finir compl`tement les instructions de rupture de s´quence.4. imm´diat. etc. le d´placement est e e e un nombre d’octets. L’effet de l’instruction est alors de la forme : e PC ←− PC + d × 4 (voir tableau r´capitulatif des modes d’adressages 12.3).1). d’une part l’instruction de destination. au contraire. ce qui ´conomise 2 bits. on code e d = d/4. ce d´placement est mˆme toujours multiple de 4. Ils sont dits inconditionnels lorsque la condition est la constante bool´enne vrai. absolu. d’autre part la condition de e branchement. Sur le processeur sparc. sp´cifiant l’´cart entre la valeur courante de PC et l’adresse e e de l’instruction de destination. avec ou sans d´placement.

e e Une solution consiste ` utiliser les instructions de calcul du langage maa chine pour calculer la valeur bool´enne de l’expression qui conditionne un e branchement. Elle permet de comprendre e comment produire une s´quence d’instructions du langage machine correspone dante. des noms de variables du lexique. par exemple Reg1 . qui r´alise un branchement d’apr`s la valeur de Reg1 .. e qui permet de stocker temporairement la valeur de ces indicateurs.... On obtient ainsi. la e e a valeur bool´enne de la condition (A+2*B < 4 et C ≥ 0). voir chapitre 13.. avec adressage absolu. il paraˆ difficile de coder ıt une condition quelconque faisant intervenir le contenu des registres ou de la m´moire et d’´ventuels appels de fonctions.4). sinon . Noter que sur le sparc. non utilis´e ailleurs } e e X ←− A+2*B < 4 et C ≥ 0 si X alors . e e (Pour une explication d´taill´e du codage des structures conditionnelles et e e it´ratives en langage machine. Dans e certains cas elles s’accompagnent de l’utilisation du mot d’´tat du processeur. Consid´rons le programme : e si (A+2*B < 4 et C ≥ 0) alors . L’effet sur le compteur programme PC est : si Regn = vrai alors PC ←− a sinon PC ←− PC+1.284 Le langage machine et le langage d’assemblage constantes. apr`s un certain nombre d’´tapes. des appels de fonctions.. Indicateurs arithm´tiques et mot d’´tat L’id´e est simple : lors de toute e e e op´ration de calcul. l’unit´ arithm´tique et logique du processeur produit des e e e comptes-rendus sous la forme de 4 bool´ens dits indicateurs arithm´tiques. une unique instruction de branchement conditionnel de la forme BV n a. Dans une instruction du langage machine. paragraphe 1. appel´ mot e e e e e d’´tat du processeur. Ces m´thodes sont bas´es sur l’utilisation des indie e e cateurs arithm´tiques (ou flags en anglais) fournis par le processeur. On peut donc fabriquer un langage machine suffisant en ajoutant aux instructions de calcul.. une valeur e e bool´enne. On peut toujours le transformer en : X : un bool´en { une nouvelle variable. Cette transformation est ais´ment g´n´ralisable ` toutes les structures e e e a conditionnelles ou it´ratives du langage d’actions. Le e e branchement conditionnel peut ensuite ˆtre effectu´ d’apr`s la valeur de ce e e e registre. etc. les instructions arithm´tiques e e . Il suffit d’´crire tout d’abord une s´quence d’instructions de calcul et/ou e e de transferts m´moire destin´es ` placer dans un registre. par exemple absolu. Chapitre 4. Suit imm´diatement e e une instruction BV 1 a.3 et 1. (Cf. e En r´alit´ la plupart des processeurs offrent une m´thode interm´diaire e e e e entre l’unique instruction de branchement conditionnel pr´sent´e ici et e e l’hypoth´tique instruction universelle contenant le codage d’une condition e bool´enne quelconque. paragraphes 1.5). qui e e peuvent ˆtre stock´s dans une portion de registre interne sp´cialis´.. rang´e par exemple dans un registre ou une partie de registre. Cette instruction est un branchement si condition vraie. sinon .

qui est le bit de poids fort du r´sultat e e (si ce r´sultat est interpr´t´ comme le codage en compl´ment ` 2 d’un entier e ee e a relatif. et une version qui les met ` jour. il y a 8 branchements. On introduit alors des op´rations de branchement e e e d’apr`s les valeurs de ces indicateurs (mˆme id´e que pour le branchement e e e unique BV pr´sent´ plus haut. si l’on interpr`te les op´randes et le r´sultat comme des entiers naturels e e e cod´s en binaire pur. e e qui est vrai si l’op´ration arithm´tique a produit une retenue (C pour Carry) e e et qui. Lorsqu’on a effectu´ une soustrace tion entre deux entiers A et B. correspondant e e e aux tests de comparaison usuels entre deux entiers naturels ou relatifs. d’apr`s e la valeur vrai ou faux des 4 bool´ens. a Ces 4 indicateurs sont : Z. qui n’a de sens que si e e l’on interpr`te les op´randes et le r´sultat comme des entiers relatifs cod´s en e e e e compl´ment ` 2. C et V. e e .1.5. et la partie V et non N ou non V et N signifie que A < B. Reprendre le chapitre 3 e pour un expos´ d´taill´ de la signification des divers indicateurs arithm´tiques. selon des fonctions bool´ennes pr´d´finies des indicateurs Z. Sur des processeurs 8 bits comme le 6502. il faut tenir compte d’autres indicateurs . Nous donnons u e les 16 fonctions bool´ennes usuelles au paragraphe 1. qui est vrai si le r´sultat de l’op´ration est 0 . Le langage machine 285 existent en deux exemplaires : une version qui ne touche pas aux indicateurs. en interpr´tant A et B comme des e entiers relatifs cod´s en compl´ment ` 2. C.7 ´tudie e e la formule bool´enne associ´e au branchement BLE. non repr´sentables avec la e pr´cision disponible. les bits du registre d’´tat sont tels que cette e condition est vraie si et seulement si A ≤ B. e e e e Si l’on consid`re un processeur qui travaille sur des nombres r´els e e repr´sent´s en virgule flottante. signifie que le r´sultat n’est pas codable sur le mˆme e e e nombre de bits que les op´randes . 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). si N vaut 1 alors le r´sultat est n´gatif) . e e a Z est vrai quand A = B. N. et qui est vrai si le r´sultat n’est pas repr´sentable sur le mˆme e a e e e nombre de bits que les op´randes (V pour oVerflow). en tenant compte des cas o` la soustraction d´borde. e Expression des conditions de branchement ` base d’indicateurs a arithm´tiques et de mot d’´tat Consid´rons le cas o` les indicateurs e e e u arithm´tiques sont stock´s dans un registre apr`s l’ex´cution de chaque e e e e op´ration arithm´tique. mais la condition peut utiliser 4 bool´ens au lieu e e e d’un seul). e Sur la plupart des processeurs actuels. V. L’exercice E12. En effet. N. pour faire la comparaison. il y a 16 branchements. il e e existe pour la repr´sentation en virgule flottante une notion de d´bordement e e pour des valeurs trop petites ou trop grandes.

. On ´crit une seule instruction de la forme e BrEgal n1 n2 a dont l’effet est : si Regn1 = Regn2 alors PC ←− a sinon PC ←− PC+1. RTS est l’instruction de retour de sous-programme a et Inst-i d´note une instruction de calcul quelconque (ne provoquant pas e de rupture de s´quence).. L’instruction RTS provoque un retour de sous-programme c’est-`-dire un branchement ` l’adresse qui avait ´t´ a a ee pr´c´demment sauvegard´e. La condition est soit l’´galit´ de deux e e registres. Sauts ` des sous-programmes Enfin tous les processeurs fournissent un a moyen de transf´rer le contrˆle ` un sous-programme. JSR a comme op´rande une ´tiquette qui d´signe e e e e le sous-programme . on peut troue e ver des instructions qui combinent un test et un branchement. Consid´rons le programme suivant. B : des entiers si A = B alors . et en placer le r´sultat dans un registre explicitement manipul´ par le e e programmeur.. pour coder si A < B. pour reprendre le flot normal des instructions quand le e sous-programme se termine. avec sauvegarde de e o a l’adresse de d´part. les adresses de retour doivent ˆtre g´r´es en pile. Consid´rons le fragment de programme : e A. l’ex´cution de JSR provoque un branchement (donc e une rupture de s´quence) au sous-programme d´sign´ avec sauvegarde de e e e l’adresse qui suit l’instruction JSR. Toutefois. Par exemple. soit la comparaison d’un registre par rapport ` z´ro (= 0. si les deux e entiers sont dans des registres.286 Le langage machine et le langage d’assemblage Expression des conditions de branchement ` base d’indicateurs a arithm´tiques sans mot d’´tat Sur certains processeurs. sinon . e ee 1 Inst-1 SP1 Inst-5 SP2 Inst-7 2 JSR SP1 Inst-6 Inst-8 3 Inst-2 RTS JSR SP1 4 Inst-3 Inst-9 5 JSR SP2 RTS 6 Inst-4 L’ex´cution de ce programme en terme des instructions Inst-i peut ˆtre e e d´crite par la s´quence : 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 qu’un appel ` un sous-programme (instruce a tion JSR) est ex´cut´ et une parenth`se fermante lors du retour correspondant e e e . le processeur mips r10000 fournit une instruction qui combine un test et un branchement conditionnel sur les entiers. En cas de branchements successifs ` des souse e e a programmes. Le code produit est simple : il n’est pas n´cessaire de calculer la valeur de e la condition bool´enne A = B avant d’effectuer un branchement.. il faut tout d’abord effectuer une soustraction. < 0. dans lequel JSR est une intruction de e saut ` un sous-programme. a e ≤ 0). > 0.

. r3 { c’est-`-dire r3 ←− r1 − r2 } a MOV COND GT r3. par exemple mips r10000. B : des entiers A ←− min (A. e le retour de sous-programme doit ˆtre coh´rent avec ce choix. e e 1. e e Les instructions de branchement ` des sous-programmes peuvent ˆtre aba e solues ou relatives. Le langage machine 287 (instruction RTS). pour le codage des actions et fonctions param´tr´es des langages imp´ratifs usuels. des instructions de transfert de registres conditionnels. Nous d´taillons au chapitre 13 l’utilisation des instructions de saut ` des e a sous-programmes. avec e ou sans d´placement. comme celui e e e pr´sent´ au chapitre 4. qui sauvegarde sa propre adresse dans un registre. Selon les machines l’adresse sauvegard´e e e est l’adresse qui suit le branchement.4. r1 { c’est-`-dire : si r3 > 0 alors r1 ←− r2 } a La question int´ressante avec ce type de langage machine est : comment e ´crire un algorithme de traduction des langages de haut niveau en langage e machine qui profite au mieux de ces instructions sophistiqu´es ? Les compie lateurs pour machines de ce type font appel ` des techniques assez ´labor´es a e e d’optimisation de code. qui peuvent donc ˆtre utilis´es pour coder des sauts e e a ` des sous-programmes : call et jmpl.4 Combinaison test/instruction sans branchement On trouve sur certains processeurs. toujours le mˆme.1. ou l’adresse du branchement elle-mˆme . et la structure de pile sous-jacente. qui sauvegarde sa propre adresse dans un registre sp´cifi´ par e e e l’instruction. l’ex´cution de l’instruction RTS effectue le retour ` cette adresse. ultrasparc. Sur le sparc on dispose de deux instructions de brane chement avec sauvegarde. avant le saut il n’est pas u toujours tr`s simple de la calculer. Nous empruntons ` [SL96] e a l’exemple suivant : A. et l’adressage peut-ˆtre direct ou indirect par registre. call est un branchement relatif ` a adressage direct. Lors du premier appel (ex´cution de JSR SP1) l’adresse saue vegard´e est 3 . jmpl est un branchement absolu ` adressage indirect par registre avec e a d´placement. B) Le code produit est de la forme : { supposons A dans le registre r1 et B dans le registre r2 } SUB r1. PentiumPro. Or apr`s le saut il est e e trop tard pour sauvegarder l’adresse d’o` l’on vient . e e a L’instruction de branchement avec sauvegarde de l’adresse de d´part est e g´n´ralement sp´cifique : il s’agit d’une instruction de branchement qui n’est e e e pas ordinaire puisqu’il lui faut int´grer une sauvegarde. r2. r2. Une telle instruction est conditionn´e par le r´sultat de l’op´ration pr´c´dente e e e e e et permet d’´viter des branchements explicites.

outre les instructions usuelles pr´sent´es jusque l`. le langage d’assemblage offre des macro-notations %hi et %lo qui permettent d’extraire respectivement les 22 bits de poids fort et les 10 bits de poids faible d’une constante. En effet. L’exercice E12. et peut donc se faire par des instructions de transfert e e vers la m´moire d´j` d´finies. %lo(0x0A08CF04). la valeur imm´diate e contenue dans l’instruction or est 0x304 et celle contenue dans l’instruction sethi est 0x028433. Une valeur imm´diate v de 32 bits ne e peut donc pas tenir dans ce codage . Chapitre 15) sont ensuite aiguill´es vers de e e la m´moire v´ritable ou vers un circuit d’entr´es/sorties. Pour faciliter l’´criture de tels couples d’inse e tructions.4. En langage machine. %r1 . un intervalle d’adresses est r´serv´ aux circuits d’entr´es/sorties. et cela ne peut se faire que si l’instruction elle-mˆme comporte l’ine formation n´cessaire. %r1. . e or %r1. la deuxi`me met ` jour les 10 bits de poids faible sans modifier e a les 22 bits de poids fort (une instruction comme add ou or avec une valeur imm´diate sur 13 bits convient). e u e • Le processeur sparc comporte une instruction tr`s sp´cifique sethi (pour e e SET High bits) n´cessaire ` l’installation d’une valeur imm´diate de 32 bits e a e dans un registre. o` v est une valeur imm´diate de 32 bits et r un num´ro de registre. toutes les instructions sparc sont cod´es sur 32 e bits exactement. des instructions sp´cifiques impos´es par des e e a e e contraintes d’ordres assez divers. On ´crit ainsi : sethi %hi(0x0A08CF04). En enchaˆ e e e e e ınant de telles instructions. sans mot d’extension. d’apr`s leur valeur . Du point de vue du concepteur du langage mae ea e chine. il n’y a pas d’instruction de la forme set v.288 Le langage machine et le langage d’assemblage 1.6 d´taille e l’utilisation de cette instruction. Nous verrons au chapitre 16 un exemple d´taill´ dans lequel e e e la commande du coupleur d’entr´e/sortie est compl`tement assimilable ` une e e a ´criture en m´moire. • Par exemple. e e e e typiquement. le processeur doit ´mettre lui-mˆme une indication d’aie e guillage. telles qu’elles sont e a e produites par le processeur (qui les lit dans le codage des instructions) ` desa tination des boˆ ıtiers m´moire (Cf. cela implique que les adresses d’acc`s ` la m´moire. r. e e e Si les connexions du processeur ` la m´moire et aux p´riph´riques ne v´rifient a e e e e pas cette contrainte. u e e Comment r´aliser une telle op´ration ? Le jeu d’instructions sparc propose e e de r´aliser l’affectation d’une constante 32 bits ` un registre en deux inse a tructions du langage machine : la premi`re affecte les 22 bits de poids fort e du registre .5 Instructions sp´ciales e La plupart des langages machines comportent. • On trouve ´galement des instructions d’addition ADDX et de soustrace tion SUBX qui prennent en compte comme troisi`me op´rande la retenue de e e l’op´ration pr´c´dente (pr´sente dans le bit C du mot d’´tat). on r´alise l’addition d’entiers cod´s en compl´ment ` e e e a 2 ou en binaire pur sur plusieurs mots de 32 bits. D’o` l’existence d’instructions sp´cifiques in et out. on trouve sur certaines machines de la famille x86 des instructions sp´cifiques in et out pour le contrˆle des p´riph´riques e o e e d’entr´e/sortie.

Chapitre 5) dont : 1) les actions e e a sont les instructions de calcul disponibles du langage machine .1 Un petit langage machine Nous consid´rons un langage machine ` 5 instructions. La nature de l’inse a truction est cod´e sur un octet. compil´ (c’est-`-dire traduit en langage machine de e a l’ordinateur hˆte) puis ex´cut´ sur cet ordinateur (voir chapitre 18 pour plus o e e de d´tails sur la diff´rence entre interpr´tation et compilation). pour comprendre le langage machine.1. Lorsque le langage machine est ´mul´ (Cf.5 Description du langage machine par le lexique d’une machine s´quentielle ` actions e a Pour un algorithme donn´. e Ces machines s´quentielles ont un lexique restreint caract´ris´ par : des e e e branchements uniquement binaires. pris dans des registres ou dans le tableau MEM repr´sentant la e m´moire . C et V. des op´rations sur des vecteurs de bits de e longueur fixe. Z. 2) les pr´dicats e sont les conditions de branchement offertes par le langage machine .4 donne le lexique d’une telle machine s´quentielle ` ace a tions. 3) les transitions sont les branchements conditionnels ou inconditionnels et le passage en s´quence du langage machine. Nous pr´cisons cette notion e a e e e au chapitre 14. e a La figure 12. 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 d’assemblage.6 Algorithme d’interpr´tation du langage machine e Une autre mani`re de comprendre le langage machine est d’en donner un e algorithme d’interpr´tation. Paragraphe 1. qui constitue une ee r´alisation cˆbl´e de l’algorithme d’interpr´tation. des pr´dicats de branchement pris dans un ensemble pr´d´fini de e e e e formules bool´ennes ` base d’indicateurs N. La figure 12. le programme en lane e ee gage machine est directement interpr´t´ par le processeur.6. Il y a toujours un octet d’extension contenant e . e Lorsque l’on travaille sur un ordinateur dont le processeur a pour langage machine pr´cis´ment le langage machine consid´r´. 1.2) sur un ordinae e teur quelconque. e c Nous d´taillons au chapitre 13 l’exemple des instructions link et unlink du e 68000. 1. on peut e d´finir une machine s´quentielle ` actions (Cf. la plupart des langages machines comportent des instructions sp´cialement con¸ues pour faciliter la traduction des langages de haut niveau. ou save et restore du sparc. Le langage machine 289 • Finalement. l’algorithme d’interpr´tation est exprim´ dans un langage de e e programmation comme C. e e e 1.5 donne un exemple d’algorithme exprim´ comme machine e s´quentielle ` actions.7.

deux..tmem−1] de Vecteurs8 { Les indicateurs d’op´rations arithm´tiques } e e N. C. Z.7] de bool´ens e Vecteur32 : un tableau sur [0.31] de bool´ens e { Les 8 registres : } R : un tableau sur [0.7 { La m´moire : } e MEM : un tableau sur [0. On ne d´crit ici que l’instruction soustraction avec mise ` jour des e a indicateurs arithm´tiques e . V : des bool´ens e { Les pr´dicats : } e fonctionA −→ un bool´en e { fonctionA = vrai } fonctionNev −→ un bool´en e { fonctionNev = faux } fonctionN −→ un bool´en e { fonctionN = N } fonctionZ −→ un bool´en e { fonctionZ = Z } fonctionC −→ un bool´en e { fonctionC = C } fonctionV −→ un bool´en e { fonctionV = V } fonctionNbar −→ un bool´en e { fonctionN = non N } fonctionVbar −→ un bool´en e { fonctionVbar = non V } fonctionCbar −→ un bool´en e { fonctionCbar = non C } fonctionZbar −→ un bool´en e { fonctionZbar = non Z } fonctionBGU −→ un bool´en e { fonctionBGU = non (C ou Z) } fonctionBGE −→ un bool´en e { fonctionBGE = non (N ouexcl V) } fonctionBG −→ un bool´en { fonctionBG = non (Z ou (N ouexcl V)) } e fonctionBLEU −→ un bool´en e { fonctionBLEU = C ou Z } fonctionBL −→ un bool´en e { fonctionBL = (N ouexcl V) } fonctionBLE −→ un bool´en e { fonctionBLE = Z ou (N ouexcl V) } { Quelques actions : } SoustReg : une action (les donn´es un. Chapitre 3.. 12..2.0 = 0 alors 1 sinon 0 N ←− X31 R[trois] ←− X31.. trois : 3 NumReg) e lexique X : un entier dans [−233−1 .290 Le langage machine et le langage d’assemblage { Types mots de 8. Paragraphes 2.R[deux] { Cf.7] de Vecteurs32 NumReg : le type entier sur 0.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...5 et 3.2. 233−1 − 1] algorithme X ←− R[un] .0 Fig. 32 bits : } Vecteur8 : un tableau sur [0..4 – Le langage machine d´crit par le lexique d’une machine s´quentielle avec e e actions.

B0) } ee SoustReg (1. .5 – Traduction d’un algorithme en machine s´quentielle ` actions et lexique rese a treint : la machine peut bien sˆr ˆtre simplifi´e. Le langage machine 291 { 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 { propri´t´ : A = B = pgcd(A0. 3) fonctionBGU fonctionBLEU SoustReg(1. 2.3) fonctionZ fonctionZbar SoustReg (1. 12.2. Initialement. A0 et B0 sont u e e respectivement dans les registres 1 et 2.2.1) SoustReg(2.1.1.2) fonctionA fonctionA fonctionA Fig.

Le probl`me g´n´ral de l’installation du codage binaire d’un e e e e programme en m´moire. paragraphe 1. Une machine proche de celle-ci e est utilis´e au chapitre 14 .3. c’est-`-dire que la machine comporte a e a 256 registres. direct par registre. relatif. Nous verrons au chapitre 14 les contraintes qu’impose une telle action sur ce qu’on appelle la partie op´rative du processeur. Lorsque le langage machine est directement interpr´t´ par le procesee seur.2 Interpr´tation e Pour d´crire l’interpr´tation d’un programme ´crit dans notre petit langage e e e machine. Les instructions sont : ADD (addition d’un registre e et d’une valeur imm´diate. plus un ou deux octets d’extene sion. 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. nous supposons ici que le programme est install´ en m´moire. num´ro dans un octet e e e d’extension). e a e les registres et les bus. Au niveau algorithmique. comme nous l’avons signal´ au paragraphe 1. BZ (branchement si le r´sultat de la derni`re e e e op´ration de calcul ´tait nul. e e e e a e Noter ´galement le cas d’erreur lorsque le code d’instruction lu ne correse pond ` aucune instruction valide (il est en effet possible que le codage de a l’ensemble des instructions en vecteurs de n bits ne constitue pas une fonction surjective. ` partir e e a de l’adresse d´but. ou chargement.1). En toute rigueur. adressage indirect par e e registre.292 Le langage machine et le langage d’assemblage un num´ro de registre. on peut ´mettre un message e e d’erreur. Dans un e programme d’interpr´tation du langage machine. e e 1. Cette nouvelle forme permet de ıtre s´parer l’acc`s en ´criture de l’acc`s en lecture ` la m´moire. il faudrait pr´voir une d´tection d’erreur lors de la lecture e e d’un num´ro de registre dans un octet : NumReg ←− MEM[PC]. et signal´e au programmeur. ` moins de e a supposer que toute configuration d’un vecteur de 8 bool´ens correspond effectie vement ` un num´ro de registre existant. adressage direct par registre. num´ro dans un octet d’exe e tension) et INCRM (incr´mentation d’un mot m´moire. dont le num´ro est e donn´ dans un octet d’extension). c’est-`-dire l’unit´ de calcul. num´ro dans un octet d’extension). cette erreur doit ´galement ˆtre d´tect´e. e e e e e Nous y revenons au chapitre 24. e e e Chaque instruction est cod´e sur 1 octet. BT (branchee e ment inconditionnel absolu. INCRR (incr´mentation d’un registre.6. L’algorithme d’interpr´tation est donn´ figure 12. une autre plus compl`te au chapitre 22.2. est ´tudi´ au chapitre 18. . avec adrese e e sage indirect par registre : MEM[Reg[NumReg]] ←− MEM[Reg[NumReg]] + 1. donn´e dans un octet d’extension). e e Noter la complexit´ de certaines actions. par exemple celle n´cessaire ` e e a l’interpr´tation d’une instruction d’incr´mentation en m´moire.6.

31] de bool´ens e Reg : le tableau sur 0. PC ←− PC + 1 si Reg[NumReg] = 0 alors Z ←− 1 sinon Z ←− 0 Inst = BT : { NumReg est le num´ro du registre d’indirection } e PC ←− Reg[NumReg] Inst = BZ : { NumReg est le num´ro du registre d’indirection } e si Z alors { branchement effectif } PC ←− PC + Reg[NumReg] sinon { PC ←− PC + 1 d´j` effectu´ : passage en s´quence } ea e e Inst = INCRR : { NumReg est le num´ro du registre ` incr´menter } e a e Reg[NumReg] ←− Reg[NumReg] + 1 si Reg[NumReg] = 0 alors Z ←− 1 sinon Z ←− 0 Inst = INCRM : { NumReg est le num´ro du registre d’indirection. e qui donne l’adresse de l’emplacement m´moire ` e a incr´menter } e MEM[Reg[NumReg]] ←− MEM[Reg[NumReg]] + 1 si MEM[Reg[NumReg]] = 0 alors Z ←− 1 sinon Z ←− 0 sinon : { code d’instruction invalide. adresse : le type entier sur 0. 2..7] de bool´ens e Vecteur32 : un tableau sur [0. 1. INCRM : les constantes de type Vecteur8 : 0. d´but+taille] contient les instructions } e e algorithme PC ←− d´but e tantque PC < d´but + taille e Inst ←− MEM[PC] { premier octet } .. 12.. n´cessaire pour toutes les instructions (1 octet) } e NumReg ←− MEM[PC] .7 . Le langage machine 293 lexique Vecteur8 : un tableau sur [0.tmem−1 MEM : un tableau sur [adresse] de Vecteurs8 { La m´moire } e Z : un bool´en e { Indicateur d’op´ration arithm´tique } e e ADD. 4 Inst : un Vecteur8 . PC ←− PC + 1 { lecture autres octets selon l’instruction } selon Inst : Inst = ADD : { ajout de la valeur imm´diate.1. INCRR. taille : un entier > 0 e { MEM[d´but .31 de Vecteurs32 { Les 32 registres } NumReg : le type entier sur 0. BT.. Cf.6 – Algorithme d’interpr´tation du petit langage machine e . 3. troisi`me octet : } e e Reg[NumReg] ←− Reg[NumReg] + MEM[PC] .... PC : une adresse d´but : une adresse . BZ. Chapitre 24 } Fig. PC ←− PC + 1 { Lire no registre.

simplement. a e e e e e L’algorithme d’interpr´tation est plus complexe. pour lesquelles il existe de nombreux programmes. et leur interpr´tation est algorithmiquement simple. lui aussi. Les instructions sont codables sur e e e un format fixe.7.7 Crit`res de choix d’un ensemble d’instructions e Nous r´sumons ci-dessous quelques-unes des contraintes ` prendre en e a compte globalement pour le choix d’un jeu d’instructions. et il n’existe que deux instructions sp´cifiques Load e et Store pour r´aliser des acc`s m´moire. e Le 68000. Il reste donc de la place pour ´quiper le processeur d’un grand nombre de registres (peut e ˆtre de l’ordre de 500. qui doit ˆtre d´sign´ par son adresse.2 Probl`mes de compatibilit´ e e La d´finition d’un langage machine pour une nouvelle machine n’est jae mais totalement libre. il doit ase e surer que les programmes qui fonctionnent sur les machines de g´n´ration n e e peuvent ˆtre r´utilis´s. Le sparc est a une machine dite RISC (pour Reduced Instruction Set Computer). La simplicit´. Les instructions ont un format variable selon qu’elles font r´f´rence e ee ou non ` un op´rande en m´moire. e e mais les modes d’adressage sont rudimentaires : toute op´ration arithm´tique e e se fait sur des registres. se e e e traduit par la taille du circuit (en nombre de portes par exemple). on construit des u e jeux d’instructions assez diff´rents. en termes de mat´riel. e L’exemple typique consiste ` comparer un sparc et un 68000. que le constructeur fournit avec sa nouvelle machine un syst`me et un compilateur pour chaque langage qui ´tait disponible auparae e vant. Elle peut e e e signifier. autorise g´n´ralement 8 modes d’adressage pour les e e op´rations. mais l’utilisateur d’un processeur doit en ˆtre conscient. e 1.294 Le langage machine et le langage d’assemblage 1. Le processeur est microproe gramm´ (Cf. Chapitre 10) et les interpr´tations des instructions ont des dur´es e e e diff´rentes. Cette notion cache de nombreux niveaux. Une nouvelle machine est en g´n´ral une ´tape dans e e e une gamme de machines similaires plus anciennes. Un utilisateur ayant programm´ en C doit transmettre d’une machine e . D’autre part le format fixe des instructions permet de les ex´cuter e toutes dans le mˆme temps.1 Contraintes issues du coˆ t du circuit interpr`te u e Selon que l’on privil´gie la vari´t´ des instructions offertes par le langage e ee machine. C’est un probl`me e qui ne se pose qu’aux concepteurs de processeurs.7. Le circuit e interpr`te est donc simple. en revanche. ou bien le coˆt du circuit interpr`te (le processeur). nous verrons au chapitre 13 comment utiliser ce banc de e registres du sparc pour rendre efficace le codage des proc´dures d’un langage e d’actions). En r´alit´ e e l’ensemble des op´rations effectivement disponibles n’est pas si r´duit que cela. e 1. Lorsqu’un constructeur propose la machine de g´n´ration n + 1.

mais par un programme. Le code objet des anciens programmes n’est e donc plus directement interpr´t´ par un processeur. avec le nouveau compilateur C. Le langage machine 295 a ` l’autre les fichiers source de ses programmes. etc. sans e e . et sont donc peut-ˆtre e moins efficaces que ce qu’ils auraient pu ˆtre en profitant au mieux du nouveau e jeu d’instructions. Chae pitre 13). ´crit dans un langage quelconque. outre les classes d’instructions usuelles du mod`le Von Neumann. le jeu d’instructions de la nouvelle machine est d´fini comme un sur-ensemble du jeu d’instructions de l’ancienne. ils e n’utilisent qu’une partie du nouveau jeu d’instructions. Il y a essentiellement deux solutions. machines-langages Le jeu d’instructions d’une machine peut comporter. par exemple C. c’est-`-dire un proe a gramme en langage machine de g´n´ration n. e e e e C’est le cas des macintosh : les processeurs 68000 et PowerPC sont tr`s e diff´rents et il n’y a pas de compatibilit´ ascendante de leurs jeux d’instruce e tions. et compil´ sur e e la nouvelle machine. a 1. Les ane ciens programmes sont ex´cutables directement sur la nouvelle machine . e a On peut dire ainsi que le 68000 est une machine pour la compilation des langages ` structures de blocs (Pascal. des instructions tr`s sp´cifiques e e e destin´es ` la traduction des programmes en langage de haut niveau. C’est le cas entre sparc et ultrasparc. Ada. et le passage de param`tres directement dans les registres. Ils ne disposent donc plus que du fichier objet. e e Ce m´canisme permet l’allocation de m´moire pour le contexte local d’une e e proc´dure. ou bien. ee lui-mˆme compil´ et ex´cut´ sur un autre processeur. les compiler avec le nouveau compilateur. le processeur sparc offre les instructions save et e e restore qui permettent de d´caler une fenˆtre sur le banc de registres. Si les deux machines sont conceptuellement proches l’une de l’autre. Un ´mulateur est un e e programme. ils n’avaient achet´ le programme que sous sa forme e ex´cutable.). c’est-`-dire faire en sorte que e a le fichier objet de g´n´ration n soit interpr´table sur la machine de g´n´ration e e e e e n + 1. Le jeu d’instructions a comporte les instructions link et unlink qui ne servent qu’` g´rer l’allocation a e dynamique de m´moire pour les variables d’un tel type de langage (Cf.7. ce qui est le cas pour presque tous les logiciels commerciaux. Ce programme est un interpr`te du langage machine n. e Malheureusement les utilisateurs tr`s anciens ont parfois perdu les fichiers e source de leurs programmes. le constructeur fournit un e e ´mulateur du langage machine n sur la machine n + 1.1. Si les deux machines sont tr`s diff´rentes. Apple fournit donc un ´mulateur de 68000 parmi les programmes du e logiciel de base fourni avec les machines ` PowerPC. Le constructeur doit alors garane e tir la compatibilit´ ascendante de ses machines. De la mˆme mani`re. et les ex´cuter.3 Langage machine et traduction des langages de haut niveau. C.

qui permet de s’abstraire des valeurs explicites e d’adresses m´moire. ou bien concevoir un bon come pilateur de ce langage pour machine universelle. sur tout ordinateur qui poss`de l’ine e e terpr`te ad´quat. Le langage d’assemblage Le langage machine offre d´j` tout ce qui est th´oriquement n´cessaire pour ea e e programmer n’importe quel algorithme. – un m´canisme de nommage des positions dans la zone des instructions ou e dans la zone de donn´es. le jeu d’instructions d’une maa e chine peut ˆtre enti`rement con¸u pour l’ex´cution de programmes ´crits dans e e c e e un langage donn´. 2. Il lui manque une notation lisible et manipulable par un ˆtre humain. Les diff´rences r´sident en g´n´ral dans la notation des modes e e e e . etc. L’ex´cution sous forme d’interpr´tation est cens´ment plus e e e e e sˆre que l’ex´cution par le processeur d’un programme en langage machine . On entend parler ´galement de machines JAVA.296 Le langage machine et le langage d’assemblage acc`s m´moire. de quoi s’agit-il exactement ? Les concepteurs du langage JAVA en ont fait la publicit´ avec des arguments de portabilit´ et de s´curit´ : JAVA e e e e est d’abord compil´ en une forme interm´diaire (appel´e byte code) qui est e e e ensuite ex´cutable. u e en effet. et capable d’assurer une ex´cution e e a e efficace des programmes ´crits dans ce langage. BSS). Si l’on pousse le raisonnement ` l’extrˆme. la conception des processeurs est de plus en plus e e e indissociable de la compilation des langages de haut niveau. c’est-`-dire : 1) une notation des op´rations de la machine (les a e mn´moniques) et de leurs op´randes. des machines e PROLOG. la question se pose de savoir s’il vaut mieux concevoir une e e machine d´di´e ` un langage particulier. on obtient une machine Java. 2) un ensemble de directives de e e r´servation et d’initialisation de la m´moire e e – la possibilit´ d’introduire des commentaires e – une notion de zones distinctes dans un programme : la zone des instructions (TEXT) et la zone de donn´es (DATA. Le langage d’assemblage est introduit ` cet e a effet et offre donc : – tout d’abord une notation textuelle ais´ment lisible du langage mae chine. En g´n´ral. e e De mani`re g´n´rale. e Notons qu’il peut exister plusieurs langages d’assemblage pour le mˆme lane gage machine. par interpr´tation. l’outil d’interpr´tation peut effectuer quelques v´rifications sur les e e op´rations qu’il effectue. ainsi qu’une notation qui e permet de rep´rer facilement les portions de programme appartenant ` l’une e a ou l’autre de ces deux zones. Dans ce dere nier cas. Si maintenant on propose un processeur dont le lane gage machine est exactement le format interm´diaire produit par la premi`re e e phase de compilation de Java. On a ainsi construit des machines LISP.

e e Enfin il est en g´n´ral possible. Le codage binaire e e du programme comporte donc le codage d’instructions.2 Structuration des programmes Un programme en langage d’assemblage est destin´ ` ˆtre traduit en laneae gage machine. Ainsi la syntaxe des assembleurs SUN este e e elle la mˆme. de d´finir des constantes textuelles. On ´crit ainsi en d´but de fichier une e e e ligne de la forme tailleMax=400. Le langage d’assemblage 297 d’adressage des op´randes d’instructions. Si la zone de m´moire sur laquelle on fait e e travailler le processeur contient des chaˆ de bits qui correspondent au codage ınes d’op´rations valides. hexad´cimal — pr´fixe 0x). permet de d´finir des macros param´tr´es . ainsi e e e e que la notation des constantes enti`res du code ASCII directement sous forme e de caract`res : ’a’ repr´sente l’entier not´ 97 en d´cimal (voir chapitre 3 pour e e e e des d´tails sur le codage des caract`res). que le e e e processeur soit un 68000 ou un sparc. des caract`res. des donn´es structur´es.). 2. la partie e exposant du codage d’un r´el. Inversement. Le vecteur de bool´ens 00101010 e e peut ˆtre vu aussi bien comme : un entier naturel cod´ en binaire pur. qui m`ne souvent ` e e e e a des incoh´rences lors des modifications. etc.1 Aspects de lexicographie et macros Les langages d’assemblage usuels offrent la possibilit´ d’introduire des come mentaires. octal — pr´fixe 0 —. Ce m´canisme ıne e est assez limit´. rien n’est typ´. 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. ıt 2. e e e Or en langage machine. e e . Un outil comme m4. par exemple ’ !’ et la fin de ligne qui suit. un constructeur offre soue e vent des langages d’assemblage aussi similaires que possible pour des machines ´quip´es de processeurs diff´rents. puis plac´ en m´moire vive pour ex´cution par le processeur. on peut ex´cuter ces op´rations. soit dans l’assembleur. d´limit´s par exemple comme en C par : /* et */ ou par un cae e ract`re. ou dans les mots-cl´s utilis´s pour e e e les directives de r´servation m´moire. il est ainsi e e e possible de nommer une suite d’instructions qui apparaˆ souvent. Lors de l’assemblage. soit dans un outil e e situ´ en amont et appel´ macro-assembleur. e Ils offrent ´galement la notation des constantes enti`res dans plusieurs bases e e (typiquement d´cimal. e e e Un programme comprend g´n´ralement des instructions et des donn´es (rese e e pectivement l’algorithme et les descriptions de variables du lexique. et le codage de donn´es e (des entiers.2. le e e code ASCII d’un caract`re. Il n’y a pas de diff´rence e e e e intrins`que entre donn´es et programmes. e e e Ce m´canisme permet d’´viter une redondance d’´criture. etc. disponible dans les e ea e environnements unix. mais d´j` tr`s utile. 2 champs du codage d’une instruction. en ce qui concerne la d´finition des zones de donn´es. dans la terminologie du langage d’actions pr´sent´ au chapitre 4).

et BNE fin exprime donc le d´calage des adresses entre la position de l’instruction elle-mˆme et la e e cible du branchement. ou les donn´es dans la e e zone DATA. il n’est donc pas n´cessaire de savoir si les branchements sont relatifs ou absolus. et la zone DATA un ensemble de donn´es initialis´es que l’on d´sire placer e e e en m´moire vive lors de l’ex´cution du programme. e 2. DATA pour les donn´es statiques. et une notation correspondante. e Pour BNE fin on trouve un d´placement de n + 2 . l’utilisation d’une ´tiquette permet e de mani`re similaire de faire abstraction de l’adresse absolue destination du e branchement. Dans l’exemple ci-dessus. divis´ par 4. On ´crit typiquement. e e Lorsque les branchements sont absolus. BSS e pour les donn´es seulement dynamiques. r3 BNE fin ! n instructions ici BA boucle fin: Les branchements conditionnels du sparc sont relatifs.298 Le langage machine et le langage d’assemblage Pour les besoins de la programmation. L’influence de la distinction entre les e zones DATA et BSS est expliqu´e au chapitre 18. C’est e un travail r´alis´ par l’assembleur. SUBcc et BA sont des mn´moniques. C’est suffisant pour calculer les d´calages signal´s ci-dessus. pour BA boucle. e Retenons simplement pour l’instant que la zone TEXT contient les instructions. dans un langage d’assemblage possible du processeur e sparc (BNE. r2. dans e le cas des branchements par exemple. situ´e ` l’´tiquette fin. le code e a e de l’instruction BNE fin comprend un entier relatif qui donne le d´placement e en nombre d’octets. En langage machine. Les zones sont : TEXT pour les instructions . le langage d’assemblage fournit une notion de zone dans les programmes. on trouve e −(n + 2). et associe ` chaque ´tiquette une adresse relative au d´but du a e e programme. c’est-`e a dire dont la valeur est donn´e directement dans le texte du programme . La traduction des instructions de la forme BNE fin du langage d’assemblage en instructions du langage machine demande le calcul du d´calage effectif. qui r´alise une analyse lexicale du texte du e e e programme.3 Nommage des adresses ou ´tiquettes e Pour rep´rer les instructions dans la zone TEXT. voir paragraphe suivant) : e boucle: SUBcc r1. Ce m´canisme e e permet de faire abstraction des adresses absolues et des d´calages exacts. c’est-`-dire le d´placement en nombre d’inse a e tructions puisque toutes les instructions du sparc sont cod´es sur 4 octets. le langage d’assemblage fournit la notion d’´tiquette. on associe 0 ` boucle et (n + 3) × 4 ` a a fin. Du point de vue du programmeur en langage d’assemblage. Ces donn´es se comportent e e e comme des variables globales d’un langage de programmation imp´ratif : elles e ont la dur´e de vie du programme. e .

2. r4. LDY et LDX qui correspondent au chargement des registres A. Lorsqu’il y a tr`s peu de registres. On trouve par e e e e exemple dans un langage d’assemblage pour processeur 6502 les mn´moniques e LDA. paragraphe 2. il n’est pas n´cessaire de produire du e e e code translatable. L’utilisation e e des constantes textuelles permet d’´crire ADD r1. Il se pose alors un nouveau probl`me : comment produire un e programme en langage machine ind´pendant de sa position d’installation en e m´moire ? Un tel objet est appel´ code translatable. Par exemple LDUH signifie LoaD Unsigned Half. e e des d´signations d’adresses en m´moire par l’interm´diaire de modes d’adrese e e sage plus ou moins sophistiqu´s. On associe ` chaque instruction un mn´monique. dans la m´moire vive de la machine. comme r1. La diff´rence entre ces deux cas doit bien e e e sˆr ˆtre cod´e dans l’instruction du langage machine correspondante. mais autorise un registre ou une constante (suffisamment e e petite) comme deuxi`me op´rande. r2. Il semble que le terme langage d’assemblage vienne de l` : il s’agit d’asa sembler ces diff´rentes parties pour constituer une instruction. e e les noms des registres peuvent ˆtre int´gr´s aux mn´moniques. Il peut exister plusieurs noms pour e un mˆme registre physique : on parle d’alias. e Les registres sont en g´n´ral nomm´s.3. e Les param`tres des instructions peuvent ˆtre : des registres.4 Zone des instructions. commen¸ant par un e e c mn´monique d’instruction. Noter que l’instruction ADD du sparc exige des registres comme premier et troisi`me op´rande.1). Paragraphe 2. La e e e distinction est donc faite par l’assembleur sur des crit`res lexicographiques : e . puisque u e e l’interpr´tation d’un des champs de l’instruction en d´pend (valeur imm´diate e e e ou num´ro de registre). de taille demi-mot. . Pour e e cela il faut connaˆ l’adresse de base ` laquelle le programme sera install´ .2. MAX. des constantes.. suivi de notations d’op´randes s´par´s par des vire e e e gules. e Une instruction tient en g´n´ral sur une ligne.. 4. c’est-`-dire un nom court a e a et ´vocateur. au moment de l’ex´cution. mn´moniques et notation des e op´randes e Observons Figure 12. Les constantes enti`res sont not´es en utilisant une des bases disponibles. ıtre a e cette information n’est pas toujours disponible au moment de l’assemblage du programme. c’est-`-dire chare a gement non sign´. par des noms dans lesquels apparaˆ e e e ıt une num´rotation. r4 ` la place de ADD e a r1. Y et X.. e e ou mˆme par l’interm´diaire du code ASCII (Cf.7 un exemple. Le langage d’assemblage 299 En revanche l’assembleur doit maintenant traduire les ´tiquettes en adresses e absolues. Or le mn´monique est le mˆme dans les deux cas. Nous ´tudions sa produce e e tion au chapitre 18. donn´ dans un langage d’assemblage e possible pour processeur sparc. Dans des ordinateurs simples o` les programmes sont toujours install´s ` u e a partir de la mˆme adresse en m´moire.

r4 [r1+4].text ! d´but de la zone TEXT e r1. 12.half -12 ! ! . e e e Fig.byte ISE ! ! .long XX ! ! ! d´but de zone de donn´es e e e ´tiquette 4 octets initialis´s avec le vecteur de e bits d´crit par 0x15 en hexad´cimal. 12. a e directive d’alignement 4 octets initialis´s avec le codage e binaire de l’adresse absolue repr´sent´e par l’´tiquette XX. ’o’. r3 r1. initialis´s avec les codes e ASCII des caract`res ’t’.8 – Exemple de zone DATA . r0 Fig. MAX.300 Le langage machine et le langage d’assemblage MAX=4 ADDcc ADD LDUH BNE CALL JMPL ! d´finition d’une constante textuelle e . ’o’ e et un octet mis ` z´ro pour finir.align 4 ! .long 0x15 YY : ZZ : ! ! ! ! ! .byte VAL ! ! . ’t’. e 5 octets. r2. e e rep´rables par l’´tiquette XX e e 2 octets initialis´s avec le codage e de -12 (n´cessairement en compl´ment ` 2) e e a un octet initialis´ avec le codage e de 250 (n´cessairement en binaire pur) e un octet initialis´ avec le codage e de -125 (n´cessairement en compl´ment ` 2) e e a une zone contigu¨ de 12000 octets. r2 labas fonction r2+r3.7 – Exemple de zone TEXT VAL=250 ISE=-125 .data XX : . e non initialis´s.skip 12000 ! ! .asciz "toto" ! ! ! .

Le codage de ces donn´es en langage machine est e e simplement le codage binaire des constantes indiqu´es par le programmeur. . L’assembleur permet d’´crire simplement CMP r1. . ou mˆme simplement pour des raisons de lisibilit´.byte VAL). D0. Ainsi . sous des e formes diverses : nom de constante textuelle (. Elles sont suivies de la donn´e d’une constante. r2.asciz sont des directives de r´servation m´moire e e avec initialisation.5 Zone de donn´es et directives de e r´servation m´moire e e La zone de donn´es comporte des directives de r´servation d’emplacements e e m´moire. Voir e e exercice E12. Lorsqu’il risque d’y avoir a a e e e confusion.long XX). e e On ´crit ainsi LDUH [r1+4]. en d´cimal (.asciz "toto" r´serve 5 = 4 + 1 octets.half. Notons que certaines pseudo-instructions remplacent parfois plusieurs instructions.long. qui sera e traduit en langage machine exactement comme SUBcc r1. Par e exemple.2). il n’existe pas d’instruction e e de comparaison de deux entiers (l’´quivalent de l’instruction CMP du 68000). Enfin un langage d’assemblage peut d´finir des pseudo-instructions. On retrouve ici pour les donn´es la notion de code e e e translatable d´j` mentionn´e au paragraphe 2. d’une chaˆ de caract`res qui constitue un nom de e ıne e registre. la taille est d´termin´e par la constante chaˆ de e e ıne caract`res associ´e. le langage d’asseme e blage propose en g´n´ral une notation particuli`re pour les modes d’adressage e e e qui supposent une indirection. les constantes e e sont pr´fix´es par le caract`re ’#’. avec d´finition d’une valeur initiale ` y placer avant de d´marrer e e a e l’ex´cution du programme. figure 12. Ce peuvent ˆtre des crochets ou des parenth`ses.8.byte et . Une ´tiquette e e e e repr´sente une adresse. donc un entier positif. La constante peut e e aussi ˆtre donn´e sous la forme d’une ´tiquette (. r2 dans un langage d’assemblage pour sparc. e ou move. Le langage d’assemblage 301 on peut toujours distinguer une chaˆ de caract`res qui constitue la notation ıne e d’une constante enti`re. r0. dans lequel l’´criture n’a aucun effet. e e e comme dans LDUH [r1+4].2. e Observons l’exemple de la figure 12. La seule difficult´ provient du fait e e que l’adresse absolue associ´e ` l’´tiquette n’est pas connue avant le chargement e a e en m´moire pour ex´cution. dont les e e e . On ´crit ainsi dans un langage d’assemblage e e e e pour 68000 : ADDI #4. notation d’entier en hexad´cimal (. CMP est une pseudo-instruction. r0 pour mettre a ` jour les indicateurs arithm´tiques selon le r´sultat de la comparaison de e e r1 et r2 (r0 est un registre sp´cial.long 0x15). . Les d´placements ´ventuels sont not´s par des additions. Pour e des raisons de lisibilit´ et de compr´hension du programme.l (A1). r2.half -12). grˆce ` la lettre ’r’ qui pr´c`de le num´ro.asciz. le jeu d’instruction sparc ´tant limit´. Les notations les plus compliqu´es viennent des modes d’adressage. r2. r2. D1 dans un langage d’assemblage pour 68000 (voir exemple complet. 2. etc. ea e Dans le cas de .9). e On utilise donc une soustraction de la forme SUBcc r1.3.

Chapitre 18). Nous revenons sur ce point au chae pitre 18 ` propos de code translatable. e ıne e . Cet outil e a essentiellement 3 fonctions : – il r´alise l’analyse lexicale et syntaxique du texte ´crit en langage d’asseme e blage. diverses v´rifications comme par exemple l’utilisation correcte des e modes d’adressage et peut rejeter des programmes pour erreurs lexicales ou syntaxiques . 2). 4.302 Le langage machine et le langage d’assemblage 4 premiers sont initialis´s avec les codes ASCII des caract`res ’t’. On la e e trouve plutˆt en zone BSS que DATA. sachant que la chaˆ est marqu´e par 0. e e . Un exemple de programme Consid´rons l’algorithme qui permet de d´terminer le nombre de bits ` 1 e e a dans la repr´sentation en binaire pur d’un entier : e . puisque la zone BSS permet de r´server o e de la m´moire non initialis´e (Cf. ’t’. transformation des directives de r´servation e m´moire en codage binaire des donn´es initialis´es . La directive .skip est une directive de r´servation m´moire sans initialisation. On respecte ainsi la convention e de repr´sentation des chaˆ e ınes de caract`res utilis´e en C.align est une directive de cadrage m´moire n´cessaire pour tenir compte e e des contraintes d’alignement m´moire dont nous avons parl´ au paragraphe 2. et m´nage un espace perdu de e e e e la taille n´cessaire pour atteindre la prochaine adresse multiple de 4 (resp. e – il r´alise le codage en binaire des instructions et des donn´es : transfore e mation des mn´moniques d’op´rations et des notations de modes d’adrese e sage en codage des instructions. Par contre les e valeurs absolues ne peuvent ˆtre calcul´es tant que l’on ignore l’adresse ` e e a laquelle le programme sera implant´.align 2) tient compte de toutes les r´servations m´moire effectu´es auparavant. ’o.3 e e du chapitre 4. e e e – il r´alise la traduction des ´tiquettes (ou symboles) en adresses absolues e e ou d´placements. cette phase d’analyse peut s’accompagner de l’expansion des macro-notations et des d´finitions de constantes . Traduction du langage d’assemblage en langage machine La traduction du langage d’assemblage en langage machine est effectu´e e par l’outil appel´ assembleur des environnements de programmation. e 3. . En maintenant au cours du traitement un compteur ase sociant a chaque instruction une adresse calcul´e par rapport au d´but du ` e e programme.align 4 (resp. c’est-`-dire sous la e e a forme d’une adresse de d´but. a Nous montrons dans la section suivante ` travers quelques exemples la a traduction en langage machine sparc et 68000. e e ’o’ et le dernier avec un caract`re de code 0. il est facile de calculer les d´placements relatifs.

l bra move. 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. a e e Lorsque le programme est charg´ em m´moire centrale.44 Noter que l’on produit du code comme si le programme d´marrait ` e a l’adresse 0. Un exemple de programme 303 Lexique : x : un entier ≥ 0 { la donn´e } e NombreDeUns : un entier ≥ 0 { le r´sultat ` 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 d’assemblage possibles pour les processeurs sparc et 68000. Noter qu’en langage d’assemblage les op´rations arithm´tiques not´es x mod 2 et x div 2 sont remplac´es e e e e par des manipulations explicites de vecteurs de bool´ens (d´calage logique et e e masquage).4.1 Programme pour 68000 La figure 12.9 donne un programme en langage d’assemblage pour processeur 68000. les adresses sont e e translat´es en fonction de l’adresse ` laquelle le programme est rang´ en e a e m´moire (Cf.l rts 40. Nous donnons ci-dessous le codage des instructions. Chapitres 18 et 20). et les programmes en langage machine correspondants. et du texte en langage d’assemblage obtenu par d´codage dans un d´sassembleur.l andi.A1 (A1). Le codage de la zone data est : 0000002a. 4.D0 D1 +16 D1.l beq addq.l beq move.l asr. A1 . e D´taillons le codage de quelques instructions : e Exemple 1 : 43f9 00000028 lea Donnee.D1 -20 D0.D0 #1. la zone data come e e mence donc ici ` l’adresse 0x28.D2 +2 #1.D2 #1. accompagn´ de e l’adresse de rangement.D1 #0. a c’est-`-dire la valeur 42 en d´cimal cod´e sur 16 bits.l moveq tst. Les donn´es sont plac´es apr`s la zone texte .

12.bss ! ZONE DE DONNEES non INIT. Chap.l 1.l D1 ! x <-. fausse corps tq : si : move.text ! ZONE DE PROGRAMME . Resultat ! transfert d’un registre vers la m´moire e ! en adressage direct fin prog : rts ! fin de programme.l D1. 18.9 – Nombre de 1 : programme en langage d’assemblage pour 68000 . Fig.long 42 ! un mot de 4 octets contenant ! le codage binaire de l’entier ! not´ 42 en decimal.D0 ! NombreDeUns<--NombreDeUns+1 fin si : asr. D1 deb calcul : moveq 0.l D0.global main ! n´cessaire (Cf.l D1 ! tantque (x !=0) beq fin tq ! branchement lorsque cond.D2 andi.0 condition tq : tst. §2.D2 ! si (x mod 2 != 0) alors beq fin si alors : addq.skip 4 ! un mot de 4 octets . move.D0 ! NombreDeUns <-.A1 !transfert de la m´moire vers un registre e !en adressage indirect par registre adresse. e lea Donnee.) e main : ! le pt d’entr´e s’appelle e ! n´cessairement main.data ! ZONE DE DONNEES INITIALISEES Donnee : .l 1.304 Le langage machine et le langage d’assemblage ! Correspondance des variables et des registres : ! x : D1 ! NombreDeUns : D0 . Resultat : .x div 2 bra condition tq fin tq : move. e .l (A1).

e e Exemple 3 : 6710 beq +16 Tout est cod´ en 16 bits : la nature de l’op´ration (un branchement si e e Z). num´ro de registre). 43f9 est le codage de la nature de l’instruction. L’information concere nant Donnee est pr´sente dans les informations de translation et la table e des symboles (Cf. Un exemple de programme 305 Il s’agit d’une instruction load effective address dans un registre. et combien).10 donne un programme en langage d’assemblage pour processeur sparc. le d´placement de 16 octets. %lo(Donnee). la destination ` l’adresse 0x1E. a a 4. les champs corea e respondants sont pour l’instant mis ` 0. Exemple 2 : 2211 move. Le codage des donn´es (zone data) est : 0000 002a 0000 0000. Ils seront mis ` jour lors du a a chargement du programme en m´moire centrale. %l0 dont les codages respectifs sont : 21000000 et a0142000. Le codage e des instructions (zone text) donne une suite de mots de 32 bits. l’adresse Donnee en zone data. Elle est remplac´e par deux e instructions sethi %hi(Donnee). la description des modes d’adressage des deux op´randes (direct ou indirect par registre. Ici 0x28 en hexad´cimal. par rapport ` l’instruction qui suit celle e a du branchement. %l0 et or %l0. la taille des op´randes e e e sur laquelles elle s’applique.4. %l0 Il s’agit d’une pseudo-instruction permettant l’affectation d’une valeur de 32 bits.l (A1). 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. L’instruction de branchement est ` l’adresse 0xC : la a suivante ` l’adresse 0xE . donnant la valeur d’une adresse. chacun codant une instruction. Chapitre 18). c’est-`-dire 40 en d´cimal : c’est la taille e a e en octets de la zone TEXT. et Donnee est le premier objet de la zone DATA. Exemple 2 : 01000000 nop . du num´ro de registre e (A1) et du mode d’adressage utilis´ pour l’autre op´rande (c’est cela qui e e d´termine s’il y a des mots d’extension ` lire. Les donn´es sont plac´es en m´moire apr`s e e e e les instructions. e a 00000028 : 2 mots d’extension de 16 bits chacun. La valeur associ´ ` Donnee n’´tant pas connue lors de la traduction.2 Programme pour sparc La figure 12. D1 Tout est cod´ en 16 bits : la nature de l’op´ration.

e .%g0. e .) e main : ! le pt d’entr´e s’appelle e ! n´cessairement main.skip 4 ! un mot de 4 octets ! non initialis´.306 Le langage machine et le langage d’assemblage ! Correspondance des variables et des registres : ! x : o1 ! NombreDeUns : o0 . %o1 deb calcul : add %g0.global main ! n´cessaire (Cf.%o1 ! x <-. §2. 12.1.%g0 ! si (x mod 2 != 0) alors be fin si nop alors : add %o0.data ! ZONE DE DONNEES INITIALISEES Donnee : . 18. e save %o6.0 condition tq : subcc %o1.1. set Donnee. %l0 ! transfert d’un registre vers la m´moire e st %o0.long 42 ! un mot de 4 octets contenant ! le codage binaire de l’entier ! not´ 42 en decimal.10 – Nombre de 1 : programme en langage d’assemblage pour sparc . Chap.%g0.%o0 ! NombreDeUns <-.bss ! ZONE DE DONNEES non INIT. Resultat : .%o0 ! NombreDeUns<--NombreDeUns+1 fin si : srl %o1.x div 2 ba condition tq nop fin tq : set Resultat.text ! ZONE DE PROGRAMME . %l0 ! transfert de la m´moire vers un registre : e ld [%l0].%g0 ! tantque (x !=0) be fin tq ! branchement lorsque ! condition fausse nop corps tq : si : andcc %o1. %o6 ! voir codage des actions. -64. [%l0] fin prog : ret ! fin du programme restore Fig.1.

Un exemple de programme 307 L’instruction nop n’existe pas en sparc. Le mot de 32 bits se e e e d´compose en : e code op 1 1 0 0 reg d code op 0 1 0 0 1 0 0 0 0 0 0 inutilis´ e reg s 2 0 0 0 0 0 0 0 0 0 0 0 1 0 reg s 1 0 0 0 i 0 . Elle est cod´e par une instruce tion ayant un effet nul : une addition ou une disjonction portant sur le registre sp´cial %g0. %o1 Cette instruction peut ˆtre cod´e compl`tement. e Exemple 3 : d2040000 ld [%l0].4.

D. observer la e taille du code obtenu en nombre d’instructions. 0 et 0) et 24 ` 22 (010). Une des deux r´f´rences (servant de source et destination) ee est en mode d’adressage registre direct.3) Mˆme exercice avec le sparc. . e e e Traduire pour chacune des machines et langages d’assemblage associ´s e d´crits ci-apr`s l’algorithme suivant. sub et div. en convenant que A est ` l’adresse a. ope repr´sente le mn´monique d’une instruction e e e parmi add. e e a La condition equal est cod´e sur les bits 28 ` 25 (0001). . e e a . Nous e utilisons les conventions d’´criture du langage d’assemblage similaire au sparc e d´crite dans ce chapitre. Chacun d’eux a e e e poss`de les mˆmes fonctionnalit´s que acc. la valeur est ici 9. OP est l’op´ration arithm´tique associ´e. estimer le nombre d’octets n´cessaires au codage du programme. ce qui correspond au e a nombre d’instruction de l’instruction de branchement jusqu’` l’´tiquette a e fin tq.et Y ` l’adresse y : a Lexique : A. e e e e L’ensemble des instructions ne poss`de qu’une r´f´rence : e ee instruction signification 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 d’instructions ` 2 r´f´rences et mode d’adressage restreint : on raa ee joute ` la machine pr´c´dente d’autres registres (not´s Ri). 5. E. Dans la suite de e cet exercice nous notons val une valeur imm´diate et adr une adresse. L’accumulae e teur est un des deux op´randes et le r´sultat est forc´ment stock´ dans celui-ci. C. Le d´placement e a e est cod´ sur les bits 21 ` 0 . 1. La destination du calcul est toue e e jours un registre. 2 ou 3 r´f´rences a ee Nous allons ´tudier l’´criture d’un algorithme simple dans un programme en e e langage d’assemblage de jeux d’instruction de diff´rents types.308 Le langage machine et le langage d’assemblage Exemple 4 : 02800009 be fin_tq L’op´ration est cod´e sur les bits 31 et 30 (resp. F : des entiers { des donn´es } e Y : un entier { le r´sultat ` calculer } e a Algorithme : Y ←− (A + B + C) / (D * E * F . mult. e 1) Jeu d’instructions ` 1 r´f´rence et 1 seul registre : la machine correspona ee dant ` ce type d’instruction poss`de un registre de calcul appel´ accumulateur a e e (not´ acc) qui est toujours utilis´ dans les instructions de calcul.1 : Machines ` 0. B. Exercices E12. Pour chaque type de machine. .

on ajoute donc deux instructions particuli`res push et pop. Ri Ri ←− val OP Ri ope [adr]. 3) Machine ` 2 r´f´rences et modes d’adressage vari´s : on ajoute un mode a ee e d’adressage indirect par registre. Les a ee e instructions d’op´ration se font toujours avec les deux op´randes qui sont au e e sommet de la pile (et qui sont alors enlev´es de la pile). Les inse tructions load et store sont remplac´es par une instruction unique move.5. Il faut pouvoir ee stocker des valeurs sur la pile avant les calculs. Ri Ri ←− val move [adr]. Ces instructions n’ont donc pas besoin de r´f´rences. Celles-ci ont une r´f´rence. Une des deux r´f´rences est forc´ment en ee e mode d’adressage registre direct (mais pas forc´ment la destination). Ri Ri ←− Rj move val. ee Dans le cas de l’utilisation de l’accumulateur l’instruction est plus rapide. [adr] MEM[adr] ←− Ri Les processeurs de la famille 68000 de motorola (` patir de l’ann´e 1980) a a e un jeu d’instructions de structure similaire avec un jeu de mode d’adressage encore plus large.[Rj] MEM[Rj] ←− MEM[Rj] OP Ri Instruction move move Rj. Exercices 309 instruction ope Ri val ope Ri [adr] ope Ri Rj store Ri adr load Ri val load Ri [adr] signification Ri ←− Ri OP val Ri ←− Ri OP MEM[adr] Ri ←− Ri OP Rj MEM[adr] ←− Ri Ri ←− val Ri ←− MEM[adr] Les processeurs fabriqu´s autour de l’ann´e 1975 (famille 8080 d’intel et 6800 e e de motorola) utilisaient ces deux types d’instructions (1 et 2 r´f´rences). destination en mode d’adressage absolu e ope Ri.[adr] MEM[adr] ←− MEM[adr] ope Ri R´f. . On suppose ici que le e ee pointeur de pile SP pointe sur le dernier emplacement occup´ et que la pile e progresse en diminuant SP. Ri Ri ←− Ri OP MEM[adr] ope [Rj]. 4) Machine ` 0 r´f´rence : c’est une machine qui n´cessite une pile. e instruction signification R´f. le r´sultat est stock´ e e e sur la pile. Ri Ri ←− Ri OP MEM[Rj] R´f. Ri Ri ←− MEM[adr] move Ri. destinations en mode d’adressage registre direct e ope val. destination en mode d’adressage reg. indirect e ope Ri.

r5) et (r1. r3 .1 . O1. r6).. B ou demi-mot. V ont un sens apr`s la suite d’instructions ADDcc. E12. MEM[SP] ←− val SP ←− SP .310 Le langage machine et le langage d’assemblage instruction ope push val push [adr] pop [adr] signification MEM[SP+1] ←− MEM[SP] OP MEM[SP+1] . SP ←− SP + 1 E12.24 . SP ←− SP+1 SP ←− SP . Le dernier argument est toujours un registre. et la lecture de ce registre donne e e e toujours 0. ADDXcc r4. r5. O3 et O4. STH). est nulle ? . ´crire une e e e s´quence d’instructions en langage d’assemblage de n’importe quelle machine e permettant de ranger les octets X31. MEM[SP] ←− MEM[adr] MEM[adr] ←− MEM[SP] . en revanche. En particulier comprendre que tout marche bien pour le compl´ment ` 2. donc toute op´ration ´crase un registre. Pour comprendre pourquoi..16 . Pourquoi ? Dans le processeur 68000 e on n’a pas le probl`me.0 respectivement aux adresses O1. r4). Utiliser le registre %g0 pour r´aliser une compae e e raison et un test ` 0 en termes de soustraction. LDH) ou non sign´es (LDUB. Pour l’instruction de rangement e e en m´moire (STB. E12. LDUH). X15. n’a pas d’effet.8 et X7. de deux entiers 64 bits occupant chacun e e 2 registres. ´tudier le probl`me suivant : comment tester que la e e somme. e r1. ´crire une ou plusieurs instructions sparc (ou e e de toute autre machine) permettant de calculer X mod 256 et g´n´ralement e e X mod 2n .3 : Transferts m´moire/registres en sparc e Dans le jeu d’instructions du processeur sparc on trouve des instructions de chargement d’une portion de registre (octet. par rapport aux entiers 64 bits cod´s rese pectivement dans les couples de registres (r3..5 : D´coupage d’un entier en octect e X ´tant un entier cod´ sur 32 bits (4 octets). r2. s2). C. O2. en g´n´ral not´ %g0. r´alis´e en deux instructions. Pourquoi ? e E12.2 : Utilisation du registre %g0 du sparc L’architecture du processeur sparc introduit un objet manipulable comme un registre. O2.1 . Une insa ee truction de calcul op a trois arguments s1. D’autre part le sparc est une machine ` trois r´f´rences.4 : Calcul d’un modulo X ´tant un entier naturel. bien e a qu’on ne transmette que C dans ADDXcc. H) en m´moire e sign´es (LDB. ce n’est pas le cas. et r´alise l’affectation d e ←− op(s1. s2 et d. (r2.6 : Addition double longueur Se convaincre que N. r6. mais qui poss`de des propri´t´s particuli`res : l’´criture dans ce ree ee e e gistre.. O3 et O4 d´signant e e e 4 emplacements m´moire de 1 octet pas n´cessairement contigus. a E12. Z n’a plus de sens. X23.

8 : Plus Grand Commun Diviseur Donner en langage d’assemblage sparc ou 68000 une s´quence d’instruce tions permettant de calculer le pgcd de deux entiers. int T[10] .-104. B ∈ N ? Noter que A ≤ B ⇐⇒ A < B ou A = B .LL1: ret restore .[%o1+%o2] add %o0.2. pour A < B.LL4: mov %o0. i = 0 . i = i + 1 .5 (Cf.%o2 sll %o2. Figure 12.%sp mov 0. E12. Chapitre 13. %l1. o e main () { int i .5).9 : Observation de code produit On donne ci-dessous un programme en C et le programme en assembleur sparc produit par le compilateur gcc. 25 et 26 e (Cf. while (i < 10) { T[i] = 2*i + 1 .1.7 : Expressions bool´ennes associ´es aux branchements usuels e e A et B sont deux entiers repr´sent´s dans les 2 registres %l0 et %l1 du sparc. envisager les 2 cas : A − B est calculable ou l’op´ration provoque un d´bordement.LL2: cmp %o0.%o2 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 mov %o0. e E12.%o0 .9 ble . Pour traduire la boucle d’it´ration.5.text main: save %sp.%o1 sethi %hi(T). Exercices 311 E12.LL3 nop . du e e pr´sent chapitre. e e Apr`s l’ex´cution de l’instruction subcc %l0. } } La structure de proc´dure du programme C donne les lignes 3. s’inspirer de l’exemple trait´ dans le paragraphe 4. Suppoe a e ser que les valeurs initiales A0 et B0 sont dans deux registres.%o0 b . V pour que A ≤ B si A. paragraphe 3.data T: .%o4 add %o4.%o3 sll %o3.skip 40 . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 . N. Retrouver la e e formule : Z or (N xor V ). Analyser le code produit pour y retrouver les structures de contrˆle de l’algorithme d´crit en C. C.LL2 nop . S’inspirer de la machine s´quentielle ` actions d´crite dans le paragraphe 1.%o3 st %o3.1.%o3 or %o3. Etudier de mˆme les formules associ´es ` toutes les conditions de branchee e a ments. %g0 quelles doivent ˆtre e e e les valeurs de Z.1.5).%lo(T).LL3: . B ∈ Z ? Mˆme question pour e que A ≤ B si A.LL4 nop b .

312 Le langage machine et le langage d’assemblage .

C. e e – Ind´pendamment. g´n´ricit´ d’Ada. pose de nouveaux probl`mes. de mani`re ´quivalente. C et V qui e e . qui sont ici les actions e e a et les fonctions param´tr´es. et comment transformer les affectations ` des objets complexes e a en suite de transferts m´moire de taille fix´e.) ou la traduce e e tion des langages non imp´ratifs. e e En ´tudiant la traduction de ce petit langage nous rencontrons les e probl`mes communs pos´s par la traduction d’un langage imp´ratif comme e e e Pascal. les langages dont la structure est tr`s ´loign´e d’un style imp´ratif comme celui pr´sent´ ici.. etc. Le petit langage d’actions pr´sent´ au chapitre 4 est un bon e e repr´sentant de langage imp´ratif ` structure de blocs. qui d´passent e e e le cadre de cet ouvrage. et comment d´finir le lexique de cette machine. Parmi toutes les m´thodes ` mettre en oeuvre pour traduire un programme e a du langage d’actions en langage machine. La traduction des constructions de haut niveau de ces langages (objets de C++ ou Java. munies de lexiques locaux. La plupart du temps. e – Au chapitre 12 nous avons d´fini un lexique restreint pour machine e s´quentielle ` actions. Java . C++. nous avons montr´ au chapitre 5 comment traduire les e e structures de contrˆle en ´tats et transitions d’une machine s´quentielle ` o e e a actions.. nous avons d´j` ´tudi´ certains ea e e points : – Au chapitre 4 nous avons montr´ comment repr´senter les types complexes e e en m´moire.Chapitre 13 Traduction des langages ` a structure de blocs en langage d’assemblage Nous nous int´ressons ici au probl`me de la traduction d’un langage ` e e a structure de blocs en langage machine ou. Ada. et les pr´dicats restreints e e a ` un ensemble de fonctions pr´d´finies sur des variables Z. N. en langage e e d’assemblage. qui correspond ` la structure d’un langage machine e a a type : les tests doivent ˆtre uniquement binaires. sont traduits en e e e e e e langage d’assemblage en passant par une ´tape interm´diaire (un programme e e C par exemple).

Il ne reste e e e plus qu’une ´tape pour atteindre des machines s´quentielles ` lexique rese e a treint : il faut installer toutes les variables dans la m´moire ou les registres e (paragraphe 1. des a e proc´dures ou fonctions r´cursives. type sparc. Les variables du lexique restreint e e repr´sentent la m´moire (le tableau MEM) et les registres. il faut finalement e e e coder les appels de proc´dures ou fonctions en utilisant les instructions d’appel e de sous-programmes offertes par le langage machine consid´r´. passage de param`tres et contenu de e e e la m´moire lors de l’ex´cution.314 Traduction des langages ` structure de blocs en langage d’assemblage a mod´lisent les indicateurs arithm´tiques. C et e e e V. Le paragraphe 2. a e Tout d’abord. Il faut d’autre e e part traduire toutes les structures conditionnelles et it´ratives en n’utilisant e que des branchements binaires. pour se rapprocher d’un langage machine. Cela demande de disposer de mani`re s´quentielle les e e codages des diff´rents ´tats. N. portant des pr´dicats pr´d´finis sur Z. puisque le lexique restreint ne propose que le tableau MEM et quelques variables repr´sentant les registres. avec les branchements ad´quats . d’un emplacement m´moire qui lui correspond. des solutions globales pour deux types de langages machine : un langage machine ` structure de pile explicite. La diffie e cult´ de l’installation en m´moire du lexique vient de l’existence des lexiques e e locaux de fonctions et des actions ´ventuellement r´cursives. En particulier. En se basant sur les principes ´tudi´s e e e e dans ces deux premiers paragraphes. un langage a machine ` fenˆtres de registres. il est possible de d´velopper au pae ragraphe 3. Supposons maintenant qu’on a su obtenir. type 68000 . il faut d´cider. et que a reste-t-il ` faire ? Deux types de probl`mes se posent. pr´sente les probl`mes sp´cifiques au coe e e dage des programmes ` plusieurs blocs : probl`me du lexique local. Il e a ne reste plus qu’` traduire ces machines s´quentielles en textes de programmes a e en langage d’assemblage. puis transformer les branchements g´n´raux en branchee e . une machine s´quentielle ` lexique restreint. a e 1. ee Nous ´tudions tout d’abord dans le paragraphe 1. Cas des programmes ` un seul bloc a Nous avons ´tudi´ au chapitre 5 la traduction des programmes du lane e gage d’actions en machines s´quentielles avec actions g´n´rales. le cas des programmes e a ` un seul bloc : installation du lexique en m´moire et obtention d’une e machine s´quentielle ` lexique restreint.1). e e Comment utiliser ces transformations pour obtenir le programme en langage d’assemblage correspondant ` un programme du langage d’actions. production du texte en langage e a d’assemblage. il faut d´crire la transformation de chaque bloc (action ou e fonction) d’un programme du langage d’actions en machine s´quentielle ` e a lexique restreint. pour chaque bloc (action ou fonction) du langage d’actions. pour chacune des variables e e d´finies dans le bloc.

1.2 Solution pour le lexique d’un programme ` un seul bloc a Pour choisir la position des variables on proc`de de mani`re s´quentielle. Plus pr´cis´ment. d’allocation de variables ` la demande du programme par les actions Allouer a et Lib´rer comme d´fini au paragraphe 4. cette u transformation est d’habitude le travail du compilateur. Cas des programmes ` un seul bloc a 315 ments binaires faisant intervenir des conditions pr´d´finies sur les indicateurs e e arithm´tiques (paragraphe 1. e e e par exemple dans l’ordre du lexique. WM94]). La transformation de programmes que nous proposons ici peut ˆtre vue comme la premi`re ´tape de gestion de ce que l’on appelle courame e e ment syst`me ` l’ex´cution dans les ouvrages traitant de compilation (voir par e a e exemple [CGV80. ` partir d’une certaine adresse donn´e. cette contrainte vaut e e e pour les variables dont les p´riodes de vie (on dit aussi dur´e de vie) ne sont e e pas disjointes (Cf. et permet donc de e connaˆ la taille n´cessaire ` la repr´sentation en m´moire des valeurs de cette ıtre e a e e variable. en quantit´ suffisante.1. ce qui donne une adresse a .1. e a e Remarque : Notons que nous ne parlons pas ici d’allocation dynamique. Paragraphes 1. en supposant qu’il y a de la place e e libre. e e Nous ne nous sommes pas interrog´s sur le m´canisme d’allocation de la e e m´moire. c’est-`-dire sur la mani`re de choisir une adresse pour chaque vae a e riable.1 et 2. e A partir des machines s´quentielles ` lexique restreint. On obtient ainsi de mani`re syst´matique l’algorithme qu’on aurait e e pu obtenir ` la main en installant soi-mˆme toutes les variables n´cessaires a e e dans le tableau MEM.1 Installation du lexique en m´moire e Le probl`me e Le langage d’actions pr´sent´ offre la notion de lexique : on d´clare des e e e variables en les nommant. Dans tout ce qui pr´c`de. 2. La d´claration donne le type. 1.1 1. e e a e . on obtient facilement e a des textes de programmes en langage d’assemblage (paragraphe 1.1.2.3).4). pas celui du programmeur. on remplace ensuite toute occurrence du nom de variable dans le programme par MEM[a].1. Les programmes en deviennent bien sˆr illisibles . La taille e n´cessaire pour l’installation de toutes les variables du lexique en m´moire est e e donc sup´rieure ou ´gale ` la somme des tailles n´cessaires pour les variables. nous avons ´tudi´ comment repr´senter en e e e e e m´moire une donn´e de type quelconque. On peut alors oublier le lexique. du chapitre 4.1. en assurant que deux variables distinctes sont install´es dans des pore tions disjointes de la m´moire globale.6). Nous montrons ici comment remplacer syst´matiquement les variables par e des zones du tableau MEM : il faut d’abord choisir la position de chaque variable. en m´nageant des espaces perdus entre e les variables pour satisfaire aux ´ventuelles contraintes d’alignement.

2 et 4 : N : l’entier 42 Entier32s : le type entier dans [−232−1 . T[7]. cette taille peut d´pendre e de l’ordre de d´claration des variables. Commen¸ons a e c a ` une adresse A multiple de 4 pour c1 .y ←− b en : delta c1 : l’entier 0 .. Pour les types e e e structur´s. Chaque ´l´ment de T occupe 8 octets. T doit d´marrer ` l’adresse e e` e a multiple de 4 qui suit A + 8 + 2. qui est celle du programme lui-mˆme. c’est-`-dire A + 12. delta b : l’entier 8 delta T : l’entier 12 . c2.N-1] de Structures Les variables ` installer en m´moire sont c1. dans le e cas d’un programme ` un seul bloc. c1. T[7]. Il faut donc exprimer toutes les op´rations e sur les types de base en termes de ces op´rations ´l´mentaires. ` l’adresse A + 4 . a doit ˆtre plac´ un peu plus loin. les variables ont toutes la mˆme dur´e de a e e vie. y : un Entier16ns>. Attention. a : un Entier32s . ` e e a oe a l’adresse A + 1 . b peut e e a ˆtre plac´ a l’adresse A + 8. delta x : l’entier 0 . Noter que 2 octets sont a perdus entre b et T.316 Traduction des langages ` structure de blocs en langage d’assemblage a On parlera par la suite de taille du lexique.).y est ` l’adresse ee a A + 12 + (7 × 8) + 4. a. ee Le lexique restreint qui repr´sente un langage machine type ne propose que e les op´rations arithm´tiques. delta y : l’entier 4 taille structure : l’entier 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. bool´ens. et on dispose e des affectations de tailles 1. sans perte de place . c2 : des caract`res . e ee . Noter que. paragraphe 3. 216 − 1] Structure : le type < x : un Entier32s. delta a : l’entier 4 . logiques ou structurelles (Cf. qui a une influence sur la position et e la taille des trous n´cessaires aux contraintes d’alignement. caract`res. la m´moire est un tableau d’octets. 232−1 − 1] Entier16ns : le type entier dans [0. la seule op´ration globale que nous ayons envisag´e est l’affectation. b et T. On traduit alors l’algorithme c1 ←− c2 . Chapitre 12) dise e ponibles dans un processeur usuel.2 Traduction des op´rations de base sur les types de e donn´es e Nous avons introduit dans le langage d’actions du chapitre 4 des op´rations e sur les types de donn´es de base : entiers. e Dans l’exemple ci-dessous. e e e et nous avons d´j` montr´ comment l’exprimer en termes de transferts m´moire ea e e ´l´mentaires (chapitre 4. c2 peut ˆtre plac´ juste ` cˆt´. delta c2 : l’entier 1 . b : un Entier16ns e T : un tableau sur [0.

conjonction.) . souvent e e e e ´crits directement en assembleur. En revanche il n’existe pas. le codage d’une entr´e/sortie est compl`tement simie e . qui produisent e des bool´ens . disjonction. Nous verrons en d´tail au chae e pitre 16 comment sont r´alis´es les communications entre le processeur et des e e p´riph´riques comme le clavier et l’´cran. D’autre part. en g´n´ral. Chae e a pitre 12. on doit coder B ←− X < Y comme on coderait : si X < Y alors B ←− vrai sinon B ←− faux On retrouve donc le probl`me g´n´ral de codage des structures conditione e e nelles..1.3.4. les processeurs offrent des op´rations bool´ennes bit ` bit (Cf. Typie e quement. B’ : des bool´ens e B ←− X < Y et Y ≥ 0 si (non B ou B’) alors .2. B. paragraphe 1.2.3 Cas des entr´es/sorties e Nous avons introduit dans le langage d’actions des actions Lire et Ecrire g´n´riques (c’est-`-dire valables pour tous types). telles que nous les d´finissons au chapitre 19. 1. Les programmes n´cessaires. les conditions de structures conditionnelles ou it´ratives. e e e e qui permettrait de coder simplement B ←− X < Y. du codage des e e e e e programmes ´crits en langage de haut niveau..1 Cas des op´rations sur les caract`res e e Toutes les op´rations sur les caract`res sont traduites en op´rations e e e arithm´tiques ou logiques par l’interm´diaire du code ASCII.2 Cas des op´rations bool´ennes e e Il y a trois types d’utilisation des bool´ens : les op´rations internes de e e l’alg`bre de Boole ´tudi´e au chapitre 2 (n´gation. paragraphe 1.2. Nous signalions e e au chapitre 4. a e e comme le mot d’´tat du processeur n’est en g´n´ral pas accessible en lecture e e e explicite. que le code ASCII est con¸u de mani`re ` c e a faciliter cette traduction. sinon . nous d´finissons au chapitre 17 l’interface entre ces programmes e de bas niveau rang´s dans une biblioth`que et les programmes en langage d’ase e semblage produits par les compilateurs de langages de haut niveau. Cas des programmes ` un seul bloc a 317 1.. Y : des entiers . et susceptible d’ˆtre manipul´ efficacement en langage machine.1) qu’on peut utiliser pour coder les op´rations e bool´ennes. Il faut choisir un codage des bool´ens compatible avec ces trois types d’utie lisation. On trouve entre autres dans le logiciel de base usuel les primitives de manipulation des fichiers. e e e e etc. d’instruction de compae e e raison arithm´tique de deux registres. avec r´sultat bool´en dans un troisi`me. les op´rations de comparaison sur des types quelconques. La manipulation d´taill´e e e a e e des p´riph´riques d’entr´e/sortie ne fait pas partie.2. e Pour un compilateur. Ces e e trois types d’utilisations interf`rent librement comme dans : e X. font partie du logiciel de base fourni avec un e ordinateur . en g´n´ral.. 1. Le r´sultat bool´en des e e comparaisons est ` recup´rer dans les indicateurs arithm´tiques.

e e ınes e Pour les types num´riques cela suppose une convention de notation (d´cimal e e pour les entiers. que pour coe e e der si X ≤ Y grˆce aux 8 pr´dicats du processeur 6502. Les structures conditionnelles de la forme selon du langage d’actions utilis´ dans cet ouvrage. o` X est une variable de type quelconque. figure 12. La solution g´n´rale a e e e consiste ` enchaˆ a ıner des conditionnelles. d´fini comme un type ´num´r´. ou bien les structures switch de C. cette proc´dure ayant a e e e e ´t´ ´crite directement en assembleur. Z. ou produite ind´pendamment par un ee e e compilateur. . en effet. 1.2 Codage de conditions bool´ennes complexes e Quel que soit l’ensemble des pr´dicats fonctions de N. Ainsi en Pascal est-il impossible de lire un bool´en. On ne e ee e peut pas supposer. e 1. il faut adopter les mˆmes conventions de passages de param`tres e e et d’appel de sous-programme. La plupart des langages de programmation n’autorisent les primitives Lire et Ecrire que sur les types num´riques. 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.3.. C et V disponibles e dans le langage machine cible. e On a donc le mˆme probl`me pour coder : si X < Y et Y > 0 grˆce e e a aux 16 pr´dicats usuels pr´sent´s au chapitre 12. type selon La plupart des langages machine disposent de branchements uniquement binaires.. sont donc traduites en s´quences de conditionnelles binaires.3. norme IEEE. En Ada le compilateur traduit les lece tures de bool´ens en lectures de chaˆ e ınes de caract`res.1 Traduction des conditions g´n´rales en conditions e e des machines restreintes Codage de conditionnelles n-aires. case de Pascal e et Ada. e e Dans les exemples de ce chapitre. suivies de conversions e des chaˆ ınes valides true et false en repr´sentation interne des bool´ens.3 1. que la biblioth`que d’entr´es/sorties standard foure e nit une primitive de lecture pour tout type susceptible d’ˆtre d´fini dans un e e programme utilisateur. les caract`res et les chaˆ de caract`res.4. dans les deux contextes. il est toujours possible d’´crire dans le langage e d’actions des conditions qui ne se traduisent pas par un seul pr´dicat.318 Traduction des langages ` structure de blocs en langage d’assemblage a laire ` l’appel d’une proc´dure param´tr´e. e e e e e e Le seul travail du compilateur consiste ` traduire une instruction de la a forme Lire (X). Simplement. pour les flottants). par manque de e e e ee convention sur la notation des bool´ens. C’est d’ailleurs le probl`me g´n´ral de la compilation s´par´e que nous ´tudions au chapitre 18. en un ensemble u d’op´rations de lecture ´l´mentaires disponibles dans la biblioth`que. nous n’utilisons Lire et Ecrire que pour des entiers.

. 2) on n’a plus que des struce e tures conditionnelles binaires (des si . a e e Il ne reste plus qu’` disposer ces diff´rentes s´quences les unes ` la suite des a e e a autres. : Bicc A6 A2 ... dans laquelle certains ´tats correspondent au e a e calcul des conditions ´l´mentaires. avant de les r´soudre par une gestion de la m´moire en pile..1 et 13. Cas des programmes ` plusieurs blocs a 319 A1 tantque C1 A2 si C2 alors A3 sinon A4 A5 A6 A1 ..... ` laquelle on associe une ´tiquette de d´but.. sinon .4 Traduction des machines s´quentielles e ` lexique restreint en langage d’assemblage a Grˆce aux transformations de programmes sugg´r´es ci-dessus. Nous ´tudions les probl`mes e e e e li´s aux lexiques locaux et aux param`tres dans les paragraphes 2. aux e e ... : ! ! ! ! ! ! ! ! ! ! ! ! codage de l’action A1 codage de la condition C1 branchement sur non C1 codage de l’action A2 codage de la condition C2 branchement sur non C2 codage de l’action A3 branchement inconditionnel codage de l’action A4 codage de l’action A5 branchement inconditionnel codage de l’action A6 Fig. : Bicc A4 A3 .. ee La technique consiste ensuite ` coder chaque ´tat par une s´quence d’insa e e tructions du langage d’assemblage.. dans le cas le plus g´n´ral o` les actions e e e u et fonctions introduites peuvent ˆtre r´cursives.. : ba A5 A4 . e Cette technique est illustr´e par l’exemple des figures 13. au sens o` on peut en obtenir la valeur ee u bool´enne par une ou plusieurs instructions de calcul. Ainsi X+2*Y < 4 est ´l´mentaire. 13. Cas des programmes ` plusieurs blocs a La difficult´ de la traduction en langage d’assemblage des programmes ` e a structure de blocs provient de deux aspects de ces programmes : les lexiques locaux et le passage de param`tres. on est caa ee pable d’obtenir un programme du langage d’actions dans lequel : 1) toutes les donn´es sont en m´moire ou dans des registres . : ba C1 A6 .. Cette forme de programme donne directement une machine s´quentielle ` lexique restreint.2.1 – S´quentialisation des codages en langage d’assemblage des ´tats d’une mae e chine s´quentielle ` actions et lexique restreint.2 e e ci-dessous....1 et 2.. suivies d’une consultae tion du mot d’´tat. alors que X < Y et Y > 0 e ee ne l’est pas.2. en ajoutant les branchements n´cessaires. e a 1. alors . : C2 . e 2.. : C1 . : A5 ..) et des it´rations : 3) e toutes les conditions sont ´l´mentaires..

Chae a pitre 12.5. on peut reprendre l’approche suivie pr´c´demment pour le lexique e e e d’un programme ` un seul bloc : on installe en m´moire toutes les variables a e globales. En trae e e duisant l’algorithme de A1 on utilise l’un des emplacements. Enfin le paragraphe 2. e e e e Dans le cas o` une proc´dure A appelle une proc´dure B. paragraphes 2. boucle et B dans r2 g0 g0 r1 r2 Fig. alors ce nom correspond ` deux emplacee e a ments distincts de la m´moire. avec ´ventuellement des types diff´rents.6 r´sume l’occupation de la m´moire lors de e e l’ex´cution d’un ensemble de proc´dures et fonctions param´tr´es. ` la suite. figure 12. ´ventuellement de tailles diff´rentes.4. 2.3 et 2.5 introduit le lien dynamique des compilateurs. r2. Dans ce cas leurs lexiques locaux peuvent occuper la mˆme portion e de la m´moire. etc. Cf. Le programme en langage d’assemblage est obtenu de mani`re syst´matique . fin r1. puis toutes celles de la premi`re fonction ou action. et en traduisant l’algorithme de A2 on utilise l’autre. et le paragraphe 2. nous appelons u e e contexte appelant l’ensemble des variables de A et contexte appel´ l’ensemble e des variables de B.2 – S´quentialisation des codages en langage d’assemblage des ´tats d’une mae e chine s´quentielle ` actions et lexique restreint : exemple du pgcd. r1. sinon r1. e .1 Installation en m´moire des lexiques locaux e Cas des lexiques locaux sans r´cursivit´ e e Dans le cas d’un ensemble d’actions et fonctions sans r´cursivit´ (mˆme e e e crois´e). remplacement du e BA finsi par BA boucle directement.320 Traduction des langages ` structure de blocs en langage d’assemblage a tantque A = B si A > B alors A ←− A − B sinon B ←− B − A ! on suppose A boucle : SUBcc BEQ SUBcc BLEU SUBcc BA sinon : SUBcc finsi : BA fin : dans r1 r1.1 2.1. r2. g0 . Si deux actions ou fonctions A1 et A2 sont telles que A1 n’appelle jamais A2 et A2 n’appelle jamais A1. Si les lexiques locaux e de deux actions ou fonctions A1 et A2 contiennent tous deux le nom i. puis e a toutes celles de la deuxi`me fonction ou action. r2. 13. finsi r2. on se convainc ais´ment que ces deux blocs e ne seront jamais actifs en mˆme temps : on dit que leurs dur´es de vie sont e e disjointes. r2. il peut ensuite ˆtre simplifi´ de plusieurs fa¸ons : supe e e e c pression de la deuxi`me comparaison SUBcc r1.

La figure 13. le passage de e e e param`tres demande de la m´moire.5. f1”. Il nous faut donc trouver un m´canisme permettant e d’allouer une zone de m´moire ` chaque entr´e dans la proc´dure.2 Installation en m´moire des param`tres e e Lorsqu’un programme comporte plusieurs blocs.2. Cas des programmes ` plusieurs blocs a 321 2.3. WM94]) et dont nous ne parlons pas ici. Comme les lexiques locaux. sa e e valeur est obtenue par Lire et est donc par d´finition inconnue quand on est en e train de modifier le texte du programme. un passage de param`tres est un e e e ´change d’information entre le contexte appelant et le contexte appel´. Observons pour nous en convaincre le e e programme donn´ ` titre d’exemple figure 13. Il existe d’autres modes de passage de param`tres dont ee e les particularit´s sont expliqu´es dans les ouvrages traitant de compilation (voir e e par exemple [CGV80. lors d’un passage de param`tres. f2) de CalculFibo pour chaque appel e de cette action.1. aB et aR pour le passage de param`tres. qui utilise une action r´cursive ea e de calcul de la suite de Fibonacci (d´finie par : x0 = x1 = 1 puis ∀n ≥ 2 xn = e xn−1 + xn−2 ). Tout se e e passe comme si ces deux contextes avaient acc`s ` un emplacement dans une e a portion de m´moire partag´e g´r´e de mani`re tr`s particuli`re : l’appelant peut e e ee e e e y ´crire une information ` transmettre ` l’appel´ . Consid´rons e l’algorithme de calcul de la somme de deux entiers. e e e 2. zone qui e a e e devra ˆtre restitu´e avant la sortie de proc´dure.2. Pour obtenir le r´sultat correct il faut disposer d’autant d’exemplaires de e f1 et f2 (not´s f1’.2 Cas des lexiques locaux avec r´cursivit´ e e Lorsque les actions et fonctions peuvent ˆtre r´cursives. e . et en re¸oit un r´sultat dans le param`tre R.) que d’appels imbriqu´s. selon qu’il s’agit d’une e e donn´e ou d’un r´sultat.4 illustre le d´roulement du calcul si l’entier lu dans e le programme principal est 4. Or le nombre d’appels d´pend de la variable d’entr´e A . Il faut donc un espace e e m´moire pour la variable locale f1 (resp.1 Conventions de passage des param`tres donn´es ou r´sultats e e e Examinons tout d’abord comment se passe l’´change d’information entre e appelant et appel´. donn´ figure 13. Par ailleurs les variables e du lexique global sont plac´es aux adresses aX. l’appel´ y lit l’information. L’algorithme modifi´ e e est donn´ figure 13. e e ıte 2. etc. e e comme c’est le cas ici. il n’est plus pose e sible d’appliquer la mˆme m´thode.6. e Le programme principal appelle CalculSomme en lui passant deux donn´es e dans les param`tres A et B. En effet. Nous traitons ici le param`tre r´sultat avec le mode de e e e e passage par r´f´rence. il fait ´galement usage de e param`tres donn´es ou r´sultats. e a a e e Le passage de param`tres n´cessite donc une sorte de boˆ aux lettres. ind´pendamment de toute ex´cution. aY et aZ. Supe c e e posons pour l’instant que l’allocation m´moire soit r´solue pour les param`tres e e e (voir plus loin) et qu’on dispose de 3 emplacements m´moire d’adresses rese pectives aA.

f1) 1.1 CalculFibo (2.1.1 CalculFibo (3. f1) .2 CalculFibo (2. CalculFibo (4.1. f2’ ←− 1 . f2” ←− 1 . f1”) f1” ←− 1 1. 13.2.1. B : des entiers ≥ 0 algorithme du programme principal : Lire (A) . e e f1” ←− 1 . f1 ←− f1’+ f2’ { = 3 } .2.322 Traduction des langages ` structure de blocs en langage d’assemblage a CalculFibo : une action (la donn´e n : un entier ≥ 0 .3 f1’ ←− f1” + f2” 1.2 CalculFibo (1.1.1 CalculFibo (1. 13. f2) 1.3 f2 ←− f1’ + f2’ 1. CalculFibo (n − 2. . f2’ ←− 1 . pour l’entr´e 4.2 CalculFibo (0.2 CalculFibo (0. B) 1.1. f2) f ←− f1 + f2 lexique du programme principal : A. f1’ ←− f1” + f2” { = 2 } . CalculFibo (A. f2”) f2” ←− 1 1.4 – D´roulement du calcul de la suite de Fibonacci.1 CalculFibo (1. f2’) f2’ ←− 1 1.3 B ←− f1+f2 Fig. f2 ←− f1’ + f2’ { = 2 } . f1’) 1.1.2.1. le r´sultat f : un entier > 0) e e { ´tat final : f = xn } e lexique local : f1. f1’ ←− 1 . B) .1.1. Ecrire (B) Fig.3 f1 ←− f1’+ f2’ 1. f1’) f1’ ←− 1 1.3 – Algorithme r´cursif de calcul de la suite de Fibonacci e 1. B ←− f1+f2 { = 5 } . f2 : des entiers > 0 algorithme : si n = 0 ou n = 1 alors f ←− 1 sinon CalculFibo (n − 1. f2’) f2’ ←− 1 1.

Pour cela il faut que l’action e appel´e soit capable d’affecter une nouvelle valeur ` la variable Z.. et s’en servir pour ´crire e e e dans la bonne variable. Le corps de l’action doit donc ˆtre e e e capable d’´crire dans la variable qu’on lui indique.2.. c’est-`-dire MEM[aX] + 1. On retrouve . Y−2.. L’appel´e e e e peut alors r´cup´rer cette adresse dans MEM[aR]. elle est plac´e en m´moire par l’appelant. il suffirait d’´crire dans le corps de e e e l’action : MEM[aZ] ←− . Z) Ecrire (Z) Fig. b : deux entiers . ` un endroit connu de l’appel´ qui les lira. par indirection : MEM[MEM[aR]] ←− . et on la recopie dans a MEM[aA]. Pour assurer ce fonctione nement. avec e e comme troisi`me param`tre la variable Z. e e e e e passer leur valeur n’a aucun int´rˆt. Si l’ace a tion CalculSomme ´tait toujours appel´e depuis le programme principal.. On ´crit donc : MEM[aR] ←− 4 aZ. { traduction de Lire (X) . Ainsi e a e on calcule la valeur de X+1. avec des param`tres diff´rents.6 – Interpr´tation des natures de param`tres e e Passage des donn´es par valeur : Les valeurs des expressions qui constie tuent les param`tres donn´es effectifs doivent ˆtre calcul´es puis plac´es en e e e e e m´moire par l’appelant. l’adresse de la variable qui constitue le param`tre r´sultat effectif est e e fournie ` l’appel´e . Par d´finition un r´sultat est produit par ee e e l’action appel´e.. Lire (Y) CalculSomme (X+1. Mais elle peut ˆtre appel´e ` divers endroits du e e a programme. Y−2. Quand on ´crit CalculSomme (X+1. on s’attend ` e e a ce que la valeur de la variable Z soit modifi´e. Z).. Lire (Y) } MEM[aA] ←− 4 MEM[aX] + 1 MEM[aB] ←− 4 MEM[aY] − 2 MEM[aR] ←− 4 aZ CalculSomme . 13.. Y.5 – Algorithme de calcul de la somme de deux entiers CalculSomme : MEM[MEM[aR]] ←− MEM[aA] + MEM[aB] algorithme du programme principal . ` un endroit a e e e a connu de l’appel´e qui la lira. Z : trois entiers algorithme du programme principal Lire (X) ... Cas des programmes ` plusieurs blocs a 323 CalculSomme (les donn´es a. 13. le r´sultat r : un entier) : e e r ←− a+b lexique du programme principal X. { traduction de Ecrire (Z) } Fig.. Passage des r´sultats par r´f´rence : Pour les param`tres r´sultats.

Notons taille 2 entiers le nombre d’octets n´cessaires ` ces deux entiers.3 Allocation dynamique de m´moire pour les lexiques e locaux Il apparaˆ la n´cessit´ de g´rer dynamiquement l’association d’emplaceıt e e e ments en m´moire aux variables des lexiques locaux. paragraphe 4. permet e e de rep´rer qui appelle qui. 2.. il reste ` ´tudier la mani`re d’obtenir aA. a e e Si l’on d´finit la variable : e T : un tableau sur [0. F2 e telles qu’un appel de F2 apparaˆ quelque part dans le corps de F1. e e e Cas sans r´cursivit´ : Il faut pr´voir une zone de m´moire pour chaque e e e e param`tre de F1 vers F2. e e e a e Le choix des adresses des param`tres ne peut donc se faire statiquement. Un examen ıt du texte complet du programme. on retombe sur le e e e e probl`me ´voqu´ pour les variables des lexiques locaux : il faut un emplacement e e e d´di´ aux param`tres.7.324 Traduction des langages ` structure de blocs en langage d’assemblage a la contrainte ´nonc´e au paragraphe 1.2. e e 2. c’est-`-dire d´signer des emplacements m´moire. Il suffit de se e tenir ` ces choix lorsque l’on transforme les algorithmes des appelants et des a appel´s. On suppose qu’il y a toujours de la place disponible. ` l’ex´cution. Noter que l’allocation m´moire pour les e . pour chaque couple d’actions ou fonctions F1. x : un entier > e l’expression T[4]. aB et e ae e aR : c’est le probl`me de l’allocation m´moire pour les param`tres. Supposons que chaque appel de CalculFibo utilise Allouer et Lib´rer pour e r´server momentan´ment la m´moire n´cessaire ` l’installation de ses variables e e e e a e a locales f1 et f2.2 Installation en m´moire des boˆ e ıtes aux lettres Une fois adopt´es ces conventions de passage des param`tres donn´es par e e e valeur et r´sultat par adresse. Le corps de CalculSomme est inchang´. Dans ce cas le passage de param`tre consiste ` ´crire.N] de < y : un caract`re . e a e dans le programme principal : MEM[aR] ←− 4 aT + 4*8 + 4. e Cas avec r´cursivit´ : Dans le cas avec r´cursivit´. ind´pendamment de toute ex´cution. comme nous l’avons fait pour CalculSomme ci-dessus.x peut-ˆtre utilis´e comme param`tre r´sultat de e e e e CalculSomme. e e e dans chaque cas. c’este a `-dire au moment de la transformation du programme. Cela e donne le programme de la figure 13. pour chaque appel de F1 qui appelle F2. et la place n´cessaire pour la liste de param`tres. On choisit alors les adresses dans MEM. Il nous faut encore une variable locale p qui donne l’adresse de la zone allou´e. Une solution consiste e a ` utiliser les primitives d’allocation dite dynamique de m´moire ´tudi´es au e e e chapitre 4. par exemple ` la a suite de tous les emplacements allou´s aux variables globales.6 du chapitre 4 : les param`tres effectifs e e e r´sultats doivent ˆtre des expressions qui pourraient figurer en partie gauche e e d’affectation. o` aT d´signe u e l’adresse de d´but du tableau T.

L’allocation de m´moire pour e e e les param`tres a la mˆme propri´t´ que celle des variables locales : on lib`re toue e ee e jours les derniers allou´s. pour rendre compte du fait que les allocations se font selon un ordre dernier allou´/premier lib´r´ (Cf.2.8.. . la derni`re e zone allou´e est toujours la premi`re lib´r´e (autrement dit. mais il en faut toujours e autant d’exemplaires que d’appels de CalculFibo. On e peut ensuite ´liminer la variable locale p et ne garder que la variable globale e pp. p ←− pp et tout appel Lib´rer (p.11 illustre l’´volution du contenu de la m´moire lors e e de l’ex´cution du programme qui appelle CalculFibo(4.). En effet. toujours dans l’appelant. les appels sont e e ee bien parenth´s´s : on ne peut pas successivement entrer dans A . e e On propose de r´aliser l’allocation m´moire par les algorithmes de la fie e gure 13. Cela donne l’algorithme de la figure 13. pp ←− pp − 8 juste avant l’appel r´cursif de Calcul Fibo (pour tenir compte de la place occup´e e e par les param`tres).4 Allocation dynamique de m´moire pour e les param`tres e Pour l’allocation m´moire n´cessaire aux param`tres. Chapitre 4. e Noter que la variable pp est g´r´e grˆce ` des op´rations parfaitement ee a a e sym´triques : pp ←− pp − 8 (pour faire de la place aux variables locales) en e entrant dans CalculFibo et pp ←− pp + 8 en en sortant . on dispose les variables les unes apr`s les autres en m´nageant des e e espaces ´ventuels pour tenir compte des contraintes d’alignement. e e e 2. e Cette transformation n’a pas encore permis d’´liminer le lexique local : on e a remplac´ les variables d’origine par une seule : p.). Toutefois. On dit que la m´moire est g´r´e e ee en pile. on peut poursuivre la transformation du programme.9.. Cette forme de code garantit e e l’invariant suivant : l’´tat de la m´moire (en particulier la position de pp) est e e . sortir de A. L’alloe e a e cation de m´moire pour le passage de param`tres se fait dans l’appelant. sortir de B). Cas des programmes ` plusieurs blocs a 325 diff´rentes variables du lexique local suit la mˆme d´marche que celle pr´sent´e e e e e e au paragraphe 1.9. on remarque que.1. on peut remplacer tout appel Allouer (p. On applique donc la mˆme simplification qui consiste e e a ` allouer et lib´rer de la m´moire grˆce aux proc´dures de la figure 13. paragraphe 5. si l’on suppose de plus qu’il e y a toujours de la place. on obtient l’algorithme donn´ e e e e figure 13.2. entrer dans ee B . n) par pp ←− pp + n. La figure 13. Le corps des actions est tr`s court . pp ←− pp + 8 juste apr`s. vue la structure des appels d’actions et fonctions. On profite donc de cette situation tr`s particuli`re e e pour ne pas utiliser un m´canisme g´n´ral d’allocation et lib´ration d’espaces e e e e m´moire. dont la complexit´ provient justement de la gestion des trous qui e e apparaissent si l’on ne lib`re pas toujours le dernier allou´. il faut pr´voir de e e e e mˆme des appels aux actions Allouer et Lib´rer. Une fois obtenue une adresse de base p par allocation dynamique. juste e e avant l’appel .10. n) par pp ←− pp − n . la lib´ration se fait juste apr`s l’appel. e e En appliquant toutes les transformations ´tudi´es jusque l` (dont le e e a m´canisme de passage de param`tre r´sultat).

B) Ecrire (B) Fig. Ecrire (B) Fig.9) } e pp ←− pp − taille 2 entiers { Corps de l’action proprement dite } si n = 0 ou n = 1 alors f ←− 1 sinon CalculFibo (n − 1. MEM[pp+0]) CalculFibo (n − 2. taille 2 entiers) si n = 0 ou n = 1 alors f ←− 1 sinon CalculFibo (n − 1. MEM[p+0]) CalculFibo (n − 2.8 – Simplification de l’allocation m´moire e . qui rend e disponibles les deux emplacements MEM[pp+0] et MEM[pp+4]. B : des entiers ≥ 0 algorithme du programme principal : Lire (A) . 13.326 Traduction des langages ` structure de blocs en langage d’assemblage a CalculFibo : une action (la donn´e n : un entier ≥ 0 . MEM[p+4]) f ←− MEM[p+0]+MEM[p+4] Lib´rer (p.7 – Installation du lexique local de CalculFibo en m´moire e CalculFibo : une action (la donn´e n : un entier ≥ 0 . B : des entiers ≥ 0 . CalculFibo (A. Figure 13. 13. B) . on ne fait pas le test de d´bordement (Cf. Pour simplifier. le r´sultat 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. MEM[pp+4]) f ←− MEM[pp+0]+MEM[pp+4] { Lib´ration de la place occup´e par le lexique local } e e pp ←− pp + taille 2 entiers lexique du programme principal : A. taille 2 entiers) e lexique du programme principal : A. le r´sultat f : un entier > 0) e e algorithme : { R´servation de place pour les deux entiers du lexique local. pp : un pointeur algorithme du programme principal : Initialiser Lire (A) CalculFibo (A.

5 Rep´rage des objets locaux par rapport ` la base de e a l’environnement : lien dynamique Nous remarquons dans l’exemple CalculFibo (figure 13. e a qui risque d’ˆtre modifi´e. dite pointeur de base de l’environnement (frame e pointer en anglais). e a e a 2. e ee a elle-mˆme destin´e ` ´voluer. lors de l’entr´e dans CalculFibo. on e e d´place le pointeur pp de n octets vers les adresses d´croissantes. les param`tres sont accessibles aux e e adresses MEM[pp+4] et MEM[pp+0]. Rien de bien difficile ` calculer. a e e e Ainsi. n) : e pp ←− pp + n Zone libre T+1 Zone occup´e e pp tmem − 1 tmem Fig. qui ne bouge pas pendant toute la dur´e de vie du bloc. Le probl`me vient du fait que les objets plac´s en m´moire (les variables e e e locales et les param`tres) sont rep´r´s par rapport ` une unique adresse pp.2. La zone e e ainsi rendue disponible est entre les adresses pp incluse et pp+n exclue. mais le nouveau programme a de CalculFibo devient vite illisible sans dessin.9 – Gestion m´moire simplifi´e : pour allouer une nouvelle zone de taille n. de mani`re e e a e ` m´nager de la place pour les variables locales f1 et f2 de la proc´dure e CalculFibo d’origine. D`s que l’on diminue pp de 8. n) : si pp − n < T+1 alors p ←− NIL sinon pp ←− pp − n p ←− pp Lib´rer (p. il suffit de les rep´rer par rapport ` l’adresse du e e e a bas. le rep´rage des param`tres devient : MEM[pp+4+8] et e e MEM[pp+0+8]. Cas des programmes ` plusieurs blocs a 327 MEM 0 adresses croissantes pp : un pointeur Initialiser : pp ←− tmem Allouer (p. destin´e ` pointer sur la base de l’environnement du bloc e a .10) que la position relative ` pp des objets pr´sents en m´moire est modifi´e lorsque pp bouge. 13. e e ae L’id´e du lien dynamique que l’on trouve en compilation est tr`s simple : e e au lieu de rep´rer les objets locaux d’un bloc par rapport ` l’adresse du haut. le mˆme ` l’entr´e dans un bloc et ` la sortie. On introduit une e adresse suppl´mentaire pb.

on e e e e ´crit la valeur du r´sultat f ` l’adresse indiqu´e dans MEM[pp+0]. Ecrire . e . pp ←− pp + 4 { B ´crit } e Fig. 13. pp ←− pp + 4 { valeur de A lue en pp+0 } { Appel de CalculFibo (A. B) : (point 1) } MEM[pp−4] ←− 4 MEM[pp+0] { param`tre donn´e : valeur de A } e e MEM[pp−8] ←− 4 pp+4 { param`tre r´sultat : adresse de B } e e pp ←− pp − 8 { Allocation m´moire pour les param`tres } e e { (point 2) } CalculFibo pp ←− pp + 8 { Lib´ration de la m´moire des param`tres } e e e { Traduction de l’appel Ecrire (B) : } MEM[pp−4] ←− 4 MEM[pp+4] { valeur de B empil´e } e pp ←− pp − 4 .10 – Elimination compl`te des lexiques et des param`tres dans CalculFibo (On e e a suppos´ taille 2 entiers = 8). } e e a e pp ←− pp − 8 { Attention.328 Traduction des langages ` structure de blocs en langage d’assemblage a CalculFibo : une action { param`tres : on r´cup`re la valeur de la donn´e n en MEM[pp+4] .(Point ii) } e CalculFibo pp ←− pp + 8 { on ˆte les param`tres } o e { Deuxi`me appel : } e MEM[pp−4] ←− 4 MEM[pp+4+8] − 2 MEM[pp−8] ←− 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 n´cessaire aux variables du lexique global } e { A est en MEM[pp+0] et B en MEM[pp+4]. } { Traduction de l’appel Lire (A) : } MEM[pp−4] ←− 4 pp+0 { adresse de A empil´e } e pp ←− pp − 4 . 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[pp−4] ←− 4 MEM[pp+4+8] − 1 MEM[pp−8] ←− 4 p+0 pp ←− pp − 8 { place des param`tres . Lire . maintenant.

..) point i CalculFibo (1. Cas des programmes ` plusieurs blocs a 329 MEM T T MEM T MEM pp pp @B pp A=4 B @B tmem 4 A=4 B f1 f2 @B 4 A=4 B (f) (n) @B tmem tmem Prog.2.. . principal Point 1 on a lu A=4 MEM T Prog.. 13.) avant le 1er appel r´cursif (point i) e MEM pp T f1”’ f2”’ @f1” 1 f1” f2” @f1’ 2 f1’ f2’ @f1 3 f1 f2 @B 4 A=4 B @f1” pp f1’ pp @f1 @f1 3 f1 f2 @B 4 A=4 B @f1 f2’ @f1 3 f1 f2 @B 4 A=4 B (f) (n) @f1’ @f1 (f) (n) @B tmem @B tmem @B tmem CalculFibo (4.) point i Fig. .. .) point ii CalculFibo (3.... locales inutilis´es e .11 – Contenu de la m´moire lors de l’ex´cution de CalculFibo e e var. principal avant CalculFibo point 2 MEM T CalculFibo (4..

La sauvegarde ´ventuelle de ces e e e e registres est aussi effectu´e dans la zone pile (Cf. e Nous venons de voir pr´c´demment que cette deuxi`me zone comporte non e e e seulement les variables et les param`tres mais aussi ´ventuellement des donn´es e e e de liaison entre appelant et appel´ : sauvegarde du lien dynamique dans notre e cas. Il est alors n´cessaire d’assurer que leur valeur ne peut pas e ˆtre modifi´e par un sous-programme appel´.3). il faut replacer pb ` sa position ant´rieure. Dans une v´ritable pile les e e seules actions autoris´es sont Empiler et D´piler (Cf.6 R´sum´ de l’occupation de la m´moire et remarques e e e Nous avons d´j` dit au chapitre 4. mais pas en C classique. Paragraphe 3. c’est-`-dire juste sous les variables locales du bloc. Cette e zone est g´r´e comme une pile et on parle souvent de la pile ` l’ex´cution pour ee a e la d´signer.12-b. e Noter que les acc`s ` la zone pile sont des acc`s directs dans un tableau. dans le texte du programme. par exemple. qu’on appelle tas. La suite des ces sauvegardes successives forme ce que l’on appelle le chaˆ ınage dynamique. On e a e introduit donc un m´canisme de sauvegarde de pb. e Un certain nombre de variables peuvent aussi ˆtre stock´es dans les registres e e du processeur. Cela peut arriver en e Pascal. Chapitre 4. e a e par adresse et d´placement. paragraphe 5. que la m´moire n´cessaire ea e e aux donn´es d’un programme est form´e de deux zones disjointes : une zone e e n´cessaire ` la gestion des zones m´moire allou´es et lib´r´es dynamiquement e a e e ee a ` la demande du programme.1). a e Le lien statique chaˆ entre eux les environnements de deux blocs A et B tels ıne que B est d´fini dans A.13 donne le programme de calcul de la suite de Fibonacci dans lequel on a introduit la manipulation de la variable pb. Chacune des positions de pb pointe sur une case m´moire qui e contient la sauvegarde de l’ancienne valeur (plus bas dans la pile).. ce qui donne le sch´ma de e e la figure 13. c’est-`-dire la e a e a base de l’environnement du bloc appelant.) e e . paragraphe 3. les pointeurs de base d’environnement sont figur´s par des e fl`ches en trait gras . Remarque : Il existe ´galement en compilation une notion de lien statique. il n’est pas toujours ais´ de calculer l’ancienne position e de pb de mani`re ` d´placer pb par une action de la forme pb ←− pb + k. ANSI C.12-a. Sur e a la figure 13. e a ` ne pas confondre avec le lien dynamique. paragraphe 4. la notation @x est utilis´e pour signifier l’adresse de x. il suffit de placer a e la variable pb ` la base de l’environnement du bloc appel´. lien statique ´ventuellement. Le lien dynamique chaˆ entre eux ıne les environnements de deux blocs A et B tels que A appelle B. Ada. adresse de retour de sous-programme dans le cas o` l’instruction d’appel u l’empile (cas du 68000. e e Lorsqu’on passe d’un bloc appelant ` un bloc appel´.330 Traduction des langages ` structure de blocs en langage d’assemblage a en cours d’ex´cution. ` l’ex´cution. et une zone n´cessaire ` la e a gestion des variables du lexique global et des lexiques locaux des proc´dures. ou lien dynamique. Contrairement ` ce qui se passe a pour le pointeur pp. La figure 13. 2.1. du genre MEM[pp+4].4. Lorsque le bloc a e appel´ se termine.

(a) : position des variables locales du programme principal lors de deux appels de CalculFibo emboˆ es . @B param. figure 13. 4 A=4 B Variables locales de CalculFibo Variables locales de CalculFibo Variables locales du prog. 4 A=4 B MEM .11.. f1 f2 param. 3 f1 f2 param. @f1 param.2. .12 – Pointeur de base d’environnement et lien dynamique. les fl`ches indiquent la position de la base ıt´ e des 3 environnements . e (b) : insertion des sauvegardes de pb.. 3 f1 f2 ancien pb param. @f1 param. Cas des programmes ` plusieurs blocs a 331 MEM .. @B param. principal (a) (b) Fig.. On reprend l’exemple de CalculFibo. 13. la variable pb doit prendre successivement ces 3 valeurs lors du d´roulement du programme. ancien pb param.

CalculFibo . pb : des pointeurs { Uniques variables globales restantes } algorithme du programme principal : Initialiser { Initialisation de la zone pile } pb ←− pp { Initialisation du pointeur de base d’environnement } pp ←− pp − 8 { Place n´cessaire aux variables du lexique global } e { A est en MEM[pb−8] et B en MEM[pb−4]. MEM[pp] ←− pb { sauvegarde de pb } pb ←− pp { installation du nouveau pb. Lire . CalculFibo . Ecrire . 13. .13 – Elimination compl`te des lexiques et des param`tres dans CalculFibo et e e introduction du pointeur de base d’environnement pb. l’ancien est en MEM[pb] } { param`tres : n est en MEM[pb+8] . f est en MEM[pb+4].332 Traduction des langages ` structure de blocs en langage d’assemblage a CalculFibo : une action pp ←− pp − 4 . pp ←− pp + 4 Fig. } { Traduction de l’appel Lire (A) : } MEM[pp−4] ←− 4 pb−8 pp ←− pp − 4 . pp ←− pp+4 { restauration de l’ancien pb } lexique du programme principal : pp. pp ←− pp + 8 MEM[MEM[pb+4]] ←− MEM[pb−8]+MEM[pb−4] pp ←− pb { lib´ration des variables locales } e pb ←− MEM[pp] . pp ←− pp + 8 { Traduction de l’appel Ecrire (B) : } MEM[pp−4] ←− 4 MEM[pb−4] pp ←− pp − 4 . CalculFibo . } e pp ←− pp − 8 { Allocation pour les variables locales } { Lexique local : f1 sera en MEM[pb−8] et f2 en MEM[pb−4] } si MEM[pb+8] = 0 ou MEM[pb+8] = 1 alors MEM[MEM[pb+4]] ←− 1 sinon { Premier appel : } MEM[pp−4] ←− 4 MEM[pb+8] − 1 MEM[pp−8] ←− 4 pb+4 pp ←− pp − 8 . pp ←− pp + 4 { Appel de CalculFibo } MEM[pp−4] ←− 4 MEM[pb−8] MEM[pp−8] ←− 4 pb−4 pp ←− pp − 8 . pp ←− pp + 8 { Deuxi`me appel : } e MEM[pp−4] ←− 4 MEM[pb+8] − 2 MEM[pp−8] ←− 4 pb+4 pp ←− pp − 8 .

S’il n’existe pas d’adressage avec d´placement. Le codage du programme principal doit en e contrepartie assurer que ce bloc se termine proprement comme une action ou fonction. install´e auparavant. Cas des programmes ` plusieurs blocs a 333 et ne pr´jugent pas de l’implantation de la pile. lors de l’ex´cution effective.2. La gestion en pile de la m´moire n’est pas impl´mentable en langage machine sans adressage e e indirect pour les acc`s m´moire : un adressage direct signifie que toutes les e e . et la transformation de programme e correspondante. par un retour au contexte appelant. elles d´pendent de l’ex´cution .6. En effet. e Le codage du programme principal suit donc exactement les mˆmes prine cipes que le codage des actions et fonctions param´tr´es. ne fˆt-ce que l’interpr`te de commandes u e a ` partir duquel on lance l’ex´cution du programme (Cf. L’initialisation des e e pointeurs pp et pb n’apparaˆ pas dans le code des programmes utilisateurs. le programme dit e principal dans le texte d’un programme utilisateur n’est pas le premier bloc existant. e e l’adresse compl`te de la variable peut ˆtre calcul´e par une addition explicite e e e avant l’acc`s m´moire. les d´placements des diff´rentes e e e e variables par rapport ` l’adresse de base sont calcul´s statiquement. Nous avons r´solu cet aspect par une gestion de la m´moire en e e e pile. et sont a e ind´pendants de l’ex´cution.2 Allocation m´moire mixte statique/dynamique e L’allocation m´moire pour les variables. qui peut fort bien ˆtre une e e s´quence chaˆ ee. o` b est une adresse de base. 2.6. Plue a sieurs adresses correspondent au mˆme nom. e e En revanche le mode d’adressage indirect est indispensable. Il y a toujours un appelant. e e La plupart des langages machine offrent des acc`s m´moire avec adressage e e indirect par registre et d´placement. 2. produit des programmes dans lesquels apparaissent des acc`s e m´moire de la forme MEM[b+k]. qui sont utilisables directement pour coe der nos programmes en langage d’assemblage. d’une valeur pertinente de ces deux e a e pointeurs. Chapitre 20). Il suffit que l’adresse de base soit rang´e dans un registre. dans le cas des e proc´dures et fonctions r´cursives. ıt En produisant le codage du bloc qui correspond au programme principal. e ın´ Noter aussi que la gestion en pile de la m´moire permet une r´utilisation e e maximale de la m´moire pour les lexiques locaux de deux blocs qui ne s’ape pellent pas l’un l’autre. et elles sont en nombre d´pendant e e de l’ex´cution.1 Probl`mes d’initialisation e Nous verrons plus tard que. et une allocation mixte statique/dynamique : les adresses de base sont dynamiques. ` l’ex´cution. il est impossible d’associer statiquement e e (c’est-`-dire pendant la compilation et ind´pendamment des ex´cutions) une a e e adresse m´moire ` chaque nom de variable apparaissant dans le lexique. et k est une e u constante calcul´e statiquement par le compilateur. on suppose que ce bloc h´rite.

2 Utilisation des registres pour les temporaires D’autre part. Dans ce cas les compilateurs placent les temporaires dans la pile. Pour un programme comme : x. du a e type utilis´ pour une machine sparc. il est mˆme impossible de coder l’affectation e z ←− y (z et y ´tant en m´moire) sans passer par un registre interm´diaire : e e e il n’y a pas de transfert m´moire vers m´moire directement. e e e 3. . du type de celle utilis´e pour a e une machine 68000 . y. Traduction en langage d’assemblage : solutions globales On int`gre les solutions ` tous les aspects en pr´sentant deux classes de e a e solutions : la classe des solutions ` base de pile. Dans certains langages e e machine (comme celui du sparc). y. u e on aimerait les placer dans les registres de la machine. e 3. nombreuses e e e e instructions du langage machine travaillant directement sur des registres) est int´ressante pour des variables qui sont manipul´es tr`s souvent.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 appropri´s pour ranger les uniques variables globales qui subsistent apr`s toutes e e les transformations de programme envisag´es : les deux pointeurs. z. la classe des solutions ` base de fenˆtres de registres.334 Traduction des langages ` structure de blocs en langage d’assemblage a adresses sont calculables statiquement. toutefois. ou adresses. On peut toujours imaginer. et inscrites une fois pour toutes comme des constantes dans le programme en langage machine. e pp et pb. En effet les registres sont par d´finition accessibles dans tout contexte. z : des entiers x ←− 3*(y + 2*z) − 7*(x+y) z ←− y Il est impossible de calculer l’expression ` affecter ` x sans utiliser d’autres ema a placements m´moire que ceux allou´s aux noms x. une expression suffisamment compliqu´e pour n´cessiter plus e e de variables temporaires qu’il n’y a de registres disponibles. lorsqu’on code un programme d’un langage de haut niveau. e et la rapidit´ d’acc`s (m´moire plus rapide que la grande m´moire.1 3. qui ıtre ne correspondent ` aucun nom explicitement d´fini par l’utilisateur dans le a e lexique. 3.1. il est courant de faire apparaˆ des variables temporaires dans les calculs.1. e e O` placer ces temporaires de calcul ? Pour des raisons de temps d’ex´cution.

La deuxi`me solution a tendance ` provoquer moins de e e a sauvegardes : on ne sauvegarde que ce qui est effectivement modifi´.3). et sont toue jours appel´es directement par l’interm´diaire de leur nom. e a Le cas le plus simple est celui des structures de blocs statiques : les proc´dures et fonctions sont toutes connues. il faut sauvegarder les valeurs des ree a e gistres utilis´s comme temporaires de calcul. par exemple P. e e La sauvegarde est r´alis´e dans la pile.4. paragraphe 1. Dans nos algorithmes modifi´s. elles ont des noms. Les e appels de P sont cod´s par : call P. 2) la sauvegarde dans l’appel´. e 3. y.1. L’exemple d´taill´ au paragraphe 3. il subsiste des appels e e r´duits au nom de la proc´dure ou fonction appel´e. On code chaque bloc P s´par´ment (voir aussi aspects de compilation e e s´par´e. dans le programme e e en langage de haut niveau. chapitre 18. paragraphe 2. a Les textes obtenus par codage des diff´rents blocs sont simplement juxtae . Cela peut e malgr´ tout ˆtre inutile : il est en effet possible qu’un appelant ne l’utilise pas. de tous les registres qu’il utilise et veut pr´server de part et d’autre e de l’appel d’un autre bloc . par exemple juste au-dessus des e e variables locales.3 N´cessit´ de sauvegarde des registres e e Si les registres de la machine servent aux temporaires de calcul. Traduction en langage d’assemblage : solutions globales 335 3. Chaque bloc est cod´ en e e e e langage d’assemblage d’apr`s les principes ´nonc´s au paragraphe 1. S’ils utilisent les mˆmes registres. Il y a essentiellement deux classes de solutions : 1) la sauvegarde dans l’appelant.2 Appel de sous-programme : l’aller Nous avons r´solu les probl`mes d’allocation m´moire pour les lexiques e e e locaux et les param`tres. lorsqu’on passe d’un bloc ` un e a autre. il apparaˆ ıt des cas comme : lexique x.).3.4. 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. il se e peut que les temporaires du programme principal ne soient pas pr´serv´s de e e part et d’autre de l’appel de f. Il reste e e e a ` coder les appels de blocs par des instructions de branchement ` des sousa programmes disponibles dans le langage machine consid´r´. Chapitre 12. si call est le nom de l’instruction de e saut ` un sous-programme (Cf. Se pose alors le ee probl`me de l’adresse du bloc ` atteindre. en lui associant une ´tiquette de d´but e e e e d’apr`s le nom du bloc dans le langage de haut niveau. Pour rem´dier ` cet inconv´nient.3 ci-dessous illustre la e e sauvegarde des registres dans l’appel´. de tous les registres e dans lesquels il ´crit.

il faut terminer le corps de la proc´dure appel´e CalculFibo e e par un branchement explicite au point o` l’on d´sire retourner. juste apr`s l’appel. nous ´crivons tout simplement dans un bloc P : CalculFibo e e e pour signifier qu’il faut ex´cuter le corps de cette proc´dure . Le branchement de retour est donc n´cessairement indirect. Lire (y) . Dans la suite nous ne nous int´ressons plus ` ce cas. et le saut ` un sous-programme consiste a justement a forcer une nouvelle valeur du compteur programme. et le langage machine doit offrir un appel de sous-programme par adressage indirect.3 Appel de sous-programme : le retour Dans les programmes transform´s du langage d’action obtenus au parae graphe pr´c´dent.10] . comme nous venons de le a voir. le cours de e e e l’ex´cution reprendra dans P.. z ←− Tf[x] (y) Le programme en langage d’assemblage correspondant doit manipuler explicitement les adresses des fonctions. Le raisonnement sur e e e e les param`tres de fonctions et proc´dures r´cursives que nous avons tenu au e e e paragraphe 2. dans un ordre quelconque.. lorsque cette proc´dure appel´e sera termin´e. c’est-`-dire les adresses associ´es aux a e ´tiquettes de d´but des s´quences d’instructions des fonctions. z : des entiers Lire (x) . e e Le basculement de contexte ` l’aller est simple. L’adresse ` e e e a laquelle on doit brancher pour appeler la fonction Tf[x] doit ˆtre calcul´e dye e namiquement. Le basculement de contexte au retour. y.10] de (un entier −→ un entier) x : un entier sur [1. avant e e l’instruction de saut au sous-programme appel´. Un cas plus compliqu´ apparaˆ lorsque le langage de haut niveau qu’on e ıt utilise permet de d´finir par exemple un tableau de fonctions. u e En quelque sorte. ` Fort heureusement les langages machines offrent toujours une instruction . doit ˆtre ´tudi´ de e e e pr`s. En effet. Et comme u e ce point d´pend de la position de l’appel de CalculFibo dans le programme. l’adresse o` il faudra retourner en fin de proc´dure est u e un param`tre donn´e suppl´mentaire de toute proc´dure. Il suffit de se rappeler quelle est l’´tiquette e e qui correspond au bloc du programme principal.336 Traduction des langages ` structure de blocs en langage d’assemblage a pos´s. cette adresse est e une valeur du compteur programme. puisque le code d’une proc´dure est ind´pendant des e e e endroits o` elle est appel´e. On l’appelle le point d’entr´e e du programme. e Tout d’abord. e c’est une adresse variable selon les appels. Dans ce cas les e fonctions ne sont plus n´cessairement appel´es par leur nom. est encore valable. On noterait par e e exemple. e a 3. nous souse e entendons que. dans un langage d’actions ´tendu : e Tf : le tableau sur [1. en revanche. L’adresse de retour doit donc ˆtre stock´e quelque part (par exemple rang´e e e e dans la pile avec les autres param`tres donn´es) par le bloc appelant.

avec une sauvegarde automatique de l’adresse qui suit l’instruction jsr de la forme RegA[7] ←− RegA[7] − 4 . ıt Il suffit donc de g´rer le passage des param`tres et l’allocation de m´moire e e e pour les lexiques locaux en adoptant cette convention impos´e par le jeu d’inse tructions lui-mˆme (et qu’on ne peut donc pas remettre en cause. MEM[RegA[7]] ←− PC On y reconnaˆ un m´canisme de gestion de pile avec RegA[7] (le registre ıt e d’adresse num´ro 7) comme pointeur de pile. le processeur poursuit l’ex´cution en s´quence c’est-`-dire en e e a g´n´ral dans le code d’un autre sous-programme.13) : e .4 3. e 3. doublement indirect par registre avec postincr´mentation. soit il faut utiliser une instruction de branchement en respectant les conventions de l’instruction d’appel (cas du sparc).4. on suppose que l’on y est arriv´ par un m´canisme d’appel de e e sous-programme. et la d´pile. type 68000 a Gestion de la zone de pile en assembleur Les modes d’adressage indirects par registre avec pr´-d´cr´mentation ou e e e post-incr´mentation sont particuli`rement bien adapt´s ` la gestion en pile e e e a d’une portion de la m´moire. Traduction en langage d’assemblage : solutions globales 337 de branchement ` un sous-programme avec sauvegarde int´gr´e de l’adresse a e e d´part. e le jeu d’instructions du 68000 fournit l’instruction jsr de saut ` un sousa programme.3. L’instruction e rts est un branchement inconditionnel.4. Remarque : Si l’on oublie l’instruction de retour ` la fin d’un sousa programme. Rappelons enfin que le programme principal doit se comporter comme les autres blocs . e e 3. soit on trouve une instruction coh´rente avec la saue e vegarde lors de l’appel (cas du 68000). et il se termine donc par un retour au contexte appelant.1 Solutions ` base de pile. Le choix de ce registre n’est pas toujours enti`rement libre. Pour le retour. Il suffit de r´server un registre pour servir de e e pointeur de pile. L’effet est : e PC ←− MEM[RegA[7]] .2 Instructions link et unlink Reprenons la s´quence d’instructions n´cessaires ` l’installation de l’envie e a ronnement local de la proc´dure CalculFibo (Cf. RegA[7] ←− RegA[7] + 4 Autrement dit rts trouve son adresse en sommet de pile. e a e Le retour de sous-programme adopte la mˆme convention. puisque e l’algorithme d’interpr´tation du langage machine est cˆbl´). Par exemple. Figure 13. plac´ sur la derni`re case occup´e . e e e e la pile croˆ en diminuant les adresses.

12-b.1. la zone des donn´es de liaison comporte e e e non seulement la sauvegarde de pb mais aussi l’adresse de retour (en-dessous). on ´crit. dites ` fenˆtres de registres. B et C d´finies Figure 13. paragraphe 1.4 . Pour a e pr´ciser les choses.5 Solutions ` base de fenˆtres de registres. A7 en revanche est le pointeur de pile oblig´.. -8 ! s´quence de d´but e e . nous traitons l’exemple du sparc.4.15 le codage de la proc´dure A e dans un langage d’assemblage pour 68000. e 3. MEM[pp] ←− pb . type sparc a e Nous ´tudions ici les sch´mas de codage de sous-programmes sugg´r´s e e ee par certaines architectures de processeurs. sont encore applicables.. Comme nous l’avons e signal´ au chapitre 12. Les techniques ´tudi´es plus haut. pb ←− pp . a 3. . ce qui donne la taille de deux adresses (8 octets) ` cette zone. Par rapport au e sch´ma de pile donn´ figure 13. variables locales dans la pile. L’id´e consiste ` utiliser le banc de registres comme e a un cache sur la pile.. puisque c’est un param`tre explicite des instructions link et unlink . Nous d´taillons ci-dessous les m´canismes permettant de e e comprendre cette affirmation. Noter que e le choix de A6 comme pointeur de base d’environnement est libre. Nous donnons figure 13. le processeur sparc est ´quip´ d’un e e e banc de registres.7. elle e appelle B qui appelle C. en supposant que le pointeur pp est e rang´ dans A7 et le pointeur pb dans A6 : e link A6. Ces a e e nombreux registres sont utilis´s pour optimiser les m´canismes de passages de e e param`tres et d’appels de sous-programmes. qui sont ` acc`s plus rapide que la grande m´moire. pp ←− pp+4 En langage d’assemblage 68000. c’est une convention e des compilateurs.338 Traduction des langages ` structure de blocs en langage d’assemblage a pp ←− pp . temporaires dans des registres Soit les actions A. ` la fin de CalculFibo : e e a pp ←− pb . Rappelons que l’adresse de retour de sous-programme est sauv´ dans la pile d’ex´cution par l’instruction jsr et e e que la sauvegarde du lien dynamique et la mise en place de l’environnement local du sous-programme sont assur´es par l’instruction link. unlink A6 ! s´quence de fin e L’effet de ces instructions est exactement celui d´crit plus haut.14. A est l’action principale.3 Codage avec lien dynamique. pb ←− MEM[pp] . pp ←− pp − 8 Et la s´quence d’instructions sym´trique. e e e et mises en oeuvre directement dans le cas des langages machine type 68000.

l D0. -TailleEnvB ! l’action A a pr´par´ les param`tres : donn´e a <--> valeur 3*x+1 e e e e ! et r´sultat b <--> adresse de y avant l’appel ` B e a move.l A0. C e ! Tous les idfs d´signent des entiers de 4 octets e TailleEnvB = 4 ! Acc`s a la variable locale. 13. B.3. Traduction en langage d’assemblage : solutions globales 339 A : l’action { sans param`tre.adresse b move.l deltaZ. x ←− y B : l’action (la donn´e a : un entier.l (SP)+. SP ! lib´rer param`tre e e ! fin de l’appel de C ! b <-. A0 move. -(SP) ! sauvegarde de 2 registres move. D0 ! restauration de 2 registres move. adr de z dans A0 sub. i ←− i + 1 Fig. A0 ! A0 <-. (A0) ! b <-. B (3*x + 1.l (SP)+.l (A6-deltaZ).l A0. y) . D0 ! D0 <-.l D0. 13.text B :link A6.l (A6+deltaB).D0 move.15 – Codage de l’action B en langage d’assemblage 68000 . le r´sultat b : un entier) e e lexique : z : un entier algorithme : C (z) .l A6.z + a move. D0 ! D0 <-. relatifs ` l’adresse de base : e e a deltaA = 12 deltaB = 8 .l (A6+deltaA).l 4. } e lexique : x. relatif ` l’adresse de base : e ` a deltaZ = 4 ! Acc`s aux param`tres. A0 ! calcul du param.14 – Proc´dures A. b ←− z + a C : l’action (le r´sultat u : un entier) e lexique : i : un entier algorithme : i ←− 1 .D0 + z move. y : des entiers algorithme : x ←− 1 . donc.a add. -(SP) ! appel de C : move. u ←− 1 tant que i ≤ 10 u ←− u + i . A0 unlk A6 rts Fig. -(SP) ! empiler A0 jsr C add.

Le d´calage e e e e est de 16 registres. Dans ce cas le m´canisme des fenˆtres de registres est e e suffisant. %g0 .2 Sch´ma de codage id´al e e Le m´canisme des fenˆtres permet d’impl´menter de mani`re efficace la e e e e notion de contexte des langages proc´duraux. ou fenˆtre. 3. d’o` l’adresse %o7+8 pour le retour e u (nous faisons suivre les instructions de saut par une instruction nop de fa¸on c a ` ne pas se pr´occuper du pipeline). la proc´dure e e e e appel´e effectue un restore.1 Le m´canisme de fenˆtres de registres du sparc e e Le SPARC dispose d’un ensemble de registres g´r´ en fenˆtres : 8 registres ee e dits globaux sont accessibles en permamence. restore. En profitant du e d´lai de branchement. locals et outputs.5.17. qui constituent la zone d’´change. nop est souvent e transform´e en jmpl %i7+8. En effet.340 Traduction des langages ` structure de blocs en langage d’assemblage a 3. Le e e e restore a l’effet inverse. . est rep´r´ par le registre CWP (pour Current Window Pointer). e ee Deux instructions sp´cifiques permettent de d´placer la fenˆtre de registres e e e en incr´mentant ou d´cr´mentant le registre CWP : save et restore. qui s’appelle %i7 dans l’appel´e. ce qui e e e lui permet de travailler avec un nouveau contexte. En fin d’ex´cution. puis un saut e e e e a ` l’adresse de retour. e Le sch´ma de codage id´al est donn´ figure 13. Sch´matiquement. ni plus de 8 variables locales. e Le cas id´al le plus simple qu’on puisse envisager est le cas o` les proc´dures e u e n’utilisent jamais plus de 7 param`tres d’entr´e. Le m´canisme des fenˆtres de registres est illustr´ e e e par la figure 13. La communication entre proc´dure appelante et proc´dure appel´e (pour le passage des param`tres et la e e e e gestion de l’adresse de retour) est assur´e par les 8 registres communs aux deux e fenˆtres.5. Deux fenˆtres cons´cutives co¨ e e ıncident donc sur 8 registres : les registres ouputs de la fenˆtre courante avant l’ex´cution du save core e respondent aux inputs de la fenˆtre courante apr`s l’ex´cution du save.16. Elle e e s’appelle donc %i7 avant le restore. %g0 . qui correspond au registre i7 de l’appel´e. l’adresse de retour est e situ´e dans le registre %o7 de l’appelante. Les autres registres sont accessibles par groupes de 24 registres dits inputs. Notons que lors de l’appel de sous-programme l’adresse de l’instruction call est sauvegard´e dans le registre %o7. et %o7 apr`s le restore. e e et o` le nombre d’appels imbriqu´s ne d´passe pas le nombre de fenˆtres phyu e e e siquement disponibles. e e e Remarque : La s´quence restore . Il suffit de consid´rer l’effet de l’instruction CALL pour respecter la e convention sur la m´morisation de l’adresse de retour : dans le registre o7 de e l’appelante. on peut r´aliser le branchement avant la restauration e e du contexte. la proc´dure appel´e effectue un save. courant. Le groupe. jmpl %o7+8. lorsqu’une e e proc´dure en appelle une autre. qui r´tablit le contexte pr´c´dent.

. 13... Traduction en langage d’assemblage : solutions globales 341 banc de registres i 32 bits l o RESTORE SAVE i 7 registres globaux l o Fig.. %g0 nop appelante: ! place les param`tres dans %o0. Fig..%o6 e call appelee ! sauvegarde de l’adresse de retour dans %o7 nop .%l7 restore jmpl %o7+8.%i6 e e ! et des variables locales %l0..3.16 – M´canisme des fenˆtres de registres e e appelee: save ! utilisation des param`tres d’entr´e %i0. 13.17 – Sch´ma de codage id´al utilisant le m´canisme de fenˆtres de registres e e e e .

Il adopte des conventions sur la zone de pile utilis´e. lorsqu’on effectue plus de e e save qu’il n’est physiquement possible d’en g´rer. qui doivent toujours avoir l’impression que le banc de registres est infini. Il faut donc se d´brouiller pour obtenir cette commutation du banc de e registres vers la pile de mani`re transparente pour les programmes des divers e blocs. e e qui doivent ˆtre connues du programmeur. les proc´dures et fonctions se mettent ` utiliser directement la m´moire e a e g´r´e en pile. En e langage d’assemblage %sp est d’ailleurs un synonyme de %o6 (sp pour Stack Pointer). Chapitre 20). il faut pr´voir un e e m´canisme de sauvegarde des fenˆtres de registres. C’est hors de question. l’hypoth`se sur e e e e le petit nombre d’appels imbriqu´s devient fausse. lorsque le banc de registres est a plein. Pour que le programmeur e puisse consid´rer le banc de registres comme virtuellement infini.5. e L’id´e est d’utiliser un registre comme pointeur de pile. e Une solution simple consiste ` imaginer que.. il faut pr´voir e e d’utiliser la m´moire en plus du banc de registres.%l7 e d’une fenˆtre dans la pile. pendant l’interpr´tation e e de l’instruction save par le processeur. Elle n’est pas r´alisable de mani`re satisfaisante e e e e sans utiliser le m´canisme d’interruption logicielle qui sera pr´sent´ dans la e e e partie VI. Toute fenˆtre correspondant au contexte d’une proc´dure en cours e e d’ex´cution doit ˆtre telle que son registre %o6 pointe sur une zone de 64 octets e e libres de la pile. l’interpr`te de commandes par exemple. e e . tels a qu’on peut les observer en lisant le code produit par un compilateur C par exemple. e Cette sauvegarde est assur´e automatiquement. plus la prise en e compte du fait que certains programmes ont plus de 8 variables locales ou plus de 8 param`tres.5. selon le sch´ma ´tudi´ pour 68000. 3. Cet invariant est suppos´ v´rifi´ au moment o` la proc´dure e e e u e principale de notre programme est appel´e (il a ´t´ install´ par l’appelant de e ee e cette proc´dure. est d´licate. selon qu’il est appel´ quand le banc de registres est plein e e ou non.4 Cas r´aliste e Pour que le programmeur (ou le concepteur de compilateur) puisse consid´rer le banc de registres comme virtuellement infini.342 Traduction des langages ` structure de blocs en langage d’assemblage a 3.. comme traitant d’une interruption interne d´clench´e par le d´passement de capacit´ du banc de registres. C’est %o6. Ce e e e e traitant d’interruption r´alise une copie des registres %i0. Cf. Comme le codage pour banc ee e e e de registres diff`re du codage pour pile — ne serait-ce que dans l’acc`s aux e e variables locales et param`tres — chaque bloc devrait alors poss´der deux e e codages diff´rents. Nous donnons ci-dessous quelques indices pour comprendre les sch´mas de e codage de langages ` structure de blocs en langage d’assemblage sparc. La mise en oeuvre compl`te de cette solution transparente.3 Probl`me : le banc de registres est fini e En cas de programme cons´quent ou de proc´dure r´cursive.%i7 et %l0.

%l7 par le traitant d’interruption g´rant la demande d’une fenˆtre alors qu’il n’en existe plus de libre. Dans l’appel´ e on acc`de alors aux param`tres effectifs via une adresse de la forme %sp + d’ e e avec d’ ≥ 64. Exercices E13. le d´placement d pouvant ˆtre calcul´ stae e e tiquement de la mˆme fa¸on que pour la solution ` base de pile seulement.5 Variables locales dans la pile et param`tres en exc`s e e Dans le cas o` le nombre de registres ne suffit pas pour stocker les variables u locales et passer les param`tres.10. e e juste sous la zone de sauvegarde pour le traitant d’interruption. e e La figure 13. r´servant ainsi un espace de la pile de taille 4 ∗ 16 = 64 e e pour 16 registres de 4 octets. e e e Les variables locales sont alors rang´es en bas de pile et on y acc`de via e e une adresse de la forme %fp − d. Le programme de la figure 13.4. Il s’appelle %i6 dans le contexte de l’appel´.1 : Observation de l’ex´cution d’une action r´cursive e e Consid´rons l’algorithme de calcul de la suite de Fibonacci (Cf. e 3. %o6 permet donc d’initialiser le registre %o6 de la nouvelle fenˆtre d’apr`s e e la valeur du registre %o6 de l’ancienne : l’instruction d´cale le pointeur vers les e adresses inf´rieures.5. Dessiner les diff´rents ´tats du tableau MEM et plus pr´cis´ment e e e e la partie pile au cours de l’ex´cution de l’action calculFibo avec la valeur 4 pour e la variable A. qui s’appelait %o6 dans le contexte de l’appelant. L’ancien pointeur de pile. d’initialiser le registre %o6 de la e nouvelle fenˆtre. e e e e -64..19 illustre ce m´canisme. %fp. Exercices 343 Pour que la propri´t´ soit toujours vraie il suffit. On peut lors e du save demander plus de place dans la pile que les 64 octets n´cessaires ` la e a sauvegarde des registres %i0. qui interpr`te la d´signation de ses op´randes dans la fenˆtre de d´part. Les pae e ram`tres d’une fonction sont des donn´es. est un synonyme de %i6 en e assembleur.%i7 et %l0. il est possible d’utiliser la pile. Une instruction save %o6.2 : Codage des fonctions Reprendre la d´marche d´crite dans ce chapitre pour les fonctions.5 et la e e figure 13. e 4. La seule contrainte qu’il faut respecter est de conserver la place en haut de zone allou´e pour la sauvegarde ´ventuelle de la fenˆtre courante. Figure 13.20 illustre l’organisation de la pile et des fenˆtres de registres e dans ce cas. pour Frame Pointer. pour lesquelles on peut proc´der e e e . est toujours accessible. et la e e e e e d´signation du r´sultat dans la fenˆtre d’arriv´e. e Or l’instruction save du sparc se comporte comme une addition. lors de tout changement de ee contexte qui installe une nouvelle fenˆtre. e c a Les param`tres sont rang´es par l’appelant dans le haut de sa zone locale..3) e et plus particuili`rement la traduction d´crite dans le paragraphe 2. d’ ´tant lui aussi calculable statiquement. E13.

%o6. e appelee: save %o6... le premier %o6 d´signe celui de l’ancienne fenˆtre e e et le second celui de la nouvelle fenˆtre. -64.. Noter que dans l’´criture de l’instruction e e save %o6. %o6 ! ou save %sp... %g0 restore appelante: .%o6 Zone de sauvegarde de la fenˆtre 2 e l fenˆtre 2 e o 6 7 l i 0 PILE restore 6 7 o fenˆtre2.. ! .344 Traduction des langages ` structure de blocs en langage d’assemblage a fenˆtre 1 e i save %o6. ! retour et restauration de la fen^tre e jmpl %i7+8. -64. 13. %sp ! r´serve une zone de 64=16*4 octets dans la pile.%l7 . pour e ! la sauvegarde des registres i et l de ce nouveau contexte.SP = fenˆtre2.SP e 64 fenˆtre1.%i6 e e ! et des variables locales %l0. -64.18 – Utilisation des fenˆtres de registres avec r´servation de place dans la pile e e pour la sauvegarde des fenˆtres.. utilisation des param`tres d’entr´e %i0. call appelee ! sauvegarde de l’adresse de retour dans %o7 nop Fig..FP e e Fig. 13. -64.19 – Programme n´cessitant la sauvegarde des registres e ..

13.%o6 taille > 64 appel´.fp var. locales Fig. -taille.4.20 – Variables locales et param`tres en exc`s dans la pile e e de l’appel´ e l .sp = appel´.fp e var. locales sauvegarde registres i. l Contexte o 6 7 i appelant. l param`tres e >6 Contexte de l’appelant l o 6 7 appel´ e appelant. Exercices 345 appelant 0 PILE i save %o6.sp e sauvegarde registres i.

qui permet de compter les bits ` 1 dans la a repr´sentation binaire d’un entier.. Le r´sultat d’une fonce tion est calcul´ par l’appel´ sans que l’appelant lui ait fourni l’adresse d’une e e de ses variables. algorithme : tant que X = 1 si X reste 2 = 1 X ←− 3 × X + 1 sinon X ←− X quotient 2 { X est impair } { X est pair } .1. paragraphe 2. Noter que selon le type du e e r´sultat de la fonction (par exemple s’il s’agit d’un produit de types ou d’un e tableau) la solution de la pile est plus facile ` mettre en oeuvre. { donn´ } e algorithme x ←− 0 i parcourant 0 .3 : Nombre de ’1’ dans la repr´sentation binaire d’un entier e Traduire dans le langage d’assemblage de votre choix l’algorithme pr´sent´ e e au chapitre 12.. qui pourra le lire. e E13. Il faut donc choisir un m´canisme qui permet ` la fonction e a appel´e d’ecrire le r´sultat qu’elle calcule dans un emplacement m´moire connu e e e du contexte appelant. N j parcourant 0 .. a E13.5 du chapitre 4. ee E13. N : l’entier .6 : Suite de Syracuse L’algorithme ci-dessous calcule les termes successifs de la suite de Syracuse..4 : Traduction de boucles imbriqu´es e Traduire en langage d’assemblage l’algorithme suivant : lexique i.5 : Algorithme de Bresenham Traduire dans le langage d’assemblage de votre choix l’algorithme pr´sent´ au e e chapitre 5.4. On peut examiner deux solutions : le r´sultat est stock´ dans un registre ou dans la pile. x : des entiers ..346 Traduction des langages ` structure de blocs en langage d’assemblage a comme dans le cas des actions : on passe leur valeur. Traduire cet algorithme dans le langage d’assemblage de votre choix. paragraphe 1. E13. lexique : X : l’entier constant .3 qui permet de calculer les coordonn´es des points e d’une droite dans un plan. j.. N x ←− x + i * j Commencer par exprimer chaque boucle ` l’aide de la construction tant que a comme sugg´r´ au paragraphe 1.

3) dans l’assembleur de votre choix. e ee E13.8 du chapitre 4. e E13.N−1] de ST M.4. { donn´ } e T : un tableau sur [0. E13. locales et des param`tres. { donn´ } e ST : le type ¡c : un caract`re . suite d’instructions). et proposer un programme en ase sembleur sparc (description de la zone de donn´es.. Retrouver l’implantation des variables globales. en g´n´ral une option (-S pour le compilateur gcc sous unix) permet e e d’obtenir une version en langage d’assemblage du code.m Proposer une repr´sentation en m´moire du type ST et ´crire en langage d’ase e e semblage l’algorithme ci-dessus. Exercices 347 E13.7 : Suite de Fibonacci Traduire compl`tement les algorithmes de l’exemple suite de Fibonacci (algoe rithme d´crit dans la figure 13. m : un entier e T : un tableau sur [0.10 : Parcours de matrice carr´e et comparaison double longueur e en compl´ment ` deux e a Reprendre le probl`me E4. i : des entiers algorithme { calcul de la somme des ´l´ments du tableau } ee S ←− T[0] i parcourant (1..11 : Observation de code Observer le code produit par diff´rents compilateurs pour diff´rents proe e grammes . 4 ou 8 octets) et divers e modes d’adressage pour les acc`s aux ´l´ments du tableau. e E13.8 : Parcours d’un tableau d’entiers Soit l’algorithme : lexique N : l’entier . avec ou sans utilisation de fenˆtres de registres.. Envisager e des solutions avec ou sans gestion du lien dynamique.N−1] d’entiers S. e ..9 : Parcours d’un tableau de structures Soit l’algorithme : lexique N : l’entier .N−1) : Si M < T[i] alors M ←− T[i]. Envisager plusieurs solutions en utilisant diverses repr´sentations pour les entiers (2.. i : des entiers algorithme { calcul du maximum des ´l´ments du tableau } ee M ←− T[0]...m i parcourant (1..N−1) : S ←− S + T[i] Ecrire cet algorithme en langage d’assemblage.

348 Traduction des langages ` structure de blocs en langage d’assemblage a .

e ...Quatri`me partie e A la charni`re du logiciel et du e mat´riel.

.

pour une description a e e approfondie le lecteur peut consulter [HP94]. Chapitre 22. 11 e et 12.) et d’une partie contrˆle. 9. des bus. qu’il est possible d’interrompre cette boucle infinie) : lire l’instruction courante. la description des m´thodes de e e conception d’un processeur d´passant le cadre de ce livre.Chapitre 14 Le processeur : l’interpr`te e cˆbl´ du langage machine a e Ce chapitre d´crit la mise en oeuvre par un circuit de l’algorithme d’ine terpr´tation des instructions d’un processeur. activer l’addition e e et envoyer le r´sultat dans le registre d2. la description e e de cet algorithme permet de comprendre comment est ex´cut´e une instruce e tion. d1. e r´aliser le travail correspondant et d´terminer l’adresse de l’instruction suie e vante (Cf. Nous parlons aussi d’interpr`te e e du langage machine. etc. donc un programme en langage machine. Si l’instruction ` ex´cuter est par a e exemple add d0. la d´coder. Un processeur peut ˆtre consid´r´ comme une machine algorithmique e ee (Cf. 10. C’est ce point de vue simple et purement p´dagogique que nous adoptons ici. La e e question de la liaison entre une machine algorithmique et une m´moire a ´t´ e ee ´tudi´e au chapitre 11. Apr`s avoir expliqu´ les principes de l’interpr´tation des instruce e e . e La compr´hension de ce chapitre suppose connus les chapitres 8. Chapitre 11) form´e d’une partie op´rative (une UAL. L’algoe e rithme d’interpr´tation du langage machine consiste ainsi en une boucle ine finie (mais nous verrons dans la partie VI. dans l’ordre du programme. Etant donn´ le jeu d’instructions d´fini pour un processeur. Paragraphe 1. Cet interpr`te est cˆbl´ : ce n’est pas un programme mais e a e un circuit. e e Le processeur doit r´cup´rer les instructions en langage machine dans la e e m´moire. Nous ne parlerons e pas non plus de processeur ` flot de donn´es ou pipelin´ . des e e ´l´ments de m´morisation. Le processeur est reli´ ee e o e a ` une m´moire dans laquelle est stock´ un programme en langage machine.6 du chapitre 12). et les ex´cuter une par une. d2 le processeur doit faire en sorte que les contenus des registres d0 et d1 soient pr´sents aux deux entr´es de l’UAL.

pour ´crire la valeur vvv dans la m´moire ` l’adresse e e e a xxx le processeur doit mettre SelMem ` 1 et l/e ` 0 en for¸ant la valeur vvv a a c sur le bus donn´es et la valeur xxx sur le bus adresses .1 – Organisation globale de l’ensemble processeur/m´moire. Le proe e cesseur est compos´ d’une partie contrˆle et d’une partie op´rative . 14. Les aspects de liaison avec le monde ext´rieur e e e pour r´aliser par exemple des entr´es/sorties sont ´tudi´s dans le chapitre 16. bus adresses donn´es e tions du langage machine (paragraphe 1.). e e e e 1.352 Le processeur : l’interpr`te cˆbl´ du langage machine e a e Processeur Partie contrˆle o M´moire e SelMem l/e bus donn´es e programme RI PC UAL Partie op´rative e Fig. L’acc`s ` la m´moire est e e a e alors pilot´ par deux commandes : s´lection de la m´moire SelMem et lecture e e e ou ´criture l/e. e e a Les aspects pr´cis de communication entre le processeur et la m´moire sont e e d´taill´s dans le chapitre 15. elle. Les principes de r´alisation e La figure 14. l’´criture est effective e e . la premi`re e o e e envoie des commandes ` la seconde qui. UAL d´signe l’unit´ e e e arithm´tique et logique. Enfin.1 d´crit la structure de l’ensemble processeur/m´moire.). e nous ´tudions les cons´quences de quelques extensions du processeur (pae e ragraphe 5. 1. e Nous supposons ici que la lecture ou l’´criture s’effectue en un temps e inf´rieur au temps de cycle d’horloge du processeur. Nous donnons dans le paragraphe 3.1 Relations du processeur avec la m´moire e Le processeur est reli´ ` la m´moire par un bus adresses unidirectionnel et ea e un bus donn´es bidirectionnel. une r´alisation du proe cesseur puis nous montrons comment l’am´liorer (paragraphe 4.). Ainsi. La a e m´moire n’est ici reli´e qu’` un processeur. nous pr´sentons un exemple e extrˆmement simple dont le jeu d’instruction est d´crit dans le parae e graphe 2. PC le compteur de programme et RI le registre e instruction. ´met des comptes-rendus.

ee e e La m´moire contient deux types d’informations : des instructions et des e donn´es. Cu.2 Principes g´n´raux de la partie op´rative e e e La partie op´rative d’un processeur doit ˆtre capable d’effectuer toutes les e e op´rations et tous les transferts d’information n´cessaires ` l’ex´cution des e e a e instructions du langage machine. Les principes g´n´raux restent tr`s e e e e e proches . les codes e e de conditions sont des informations de contrˆle qui peuvent ˆtre test´es par o e e la partie contrˆle : ce sont des entr´es de la partie contrˆle. par exemple. Vu. nous n’en parlerons plus dans la suite. pour traiter un mode d’adressage ine direct avec d´placement. ils se d´roulent n´cessairement lors de cycles d’horloge diff´rents et e e e e cons´cutifs. Ce type d’organisation n´cessite deux bus e e e adresses et deux bus donn´es diff´rents. Un registre sp´cialis´ e e e e appel´ compteur programme (PC) rep`re le mot m´moire en cours de traitee e e ment. o L’UAL a deux types de sorties : une donn´e qui est le r´sultat d’un calcul e e et les codes de conditions arithm´tiques Zu. Pour lire la valeur contenue dans la m´moire ` l’adresse xxx le processeur doit positionner les commandes Sele a c Mem et l/e en for¸ant la valeur xxx sur le bus adresses .2 du chapitre 9 et les aspects de synchronisation ee e ont ´t´ d´taill´s au paragraphe 3.1. La donn´e circule e e sur un bus et sera charg´e dans un registre ou un mot m´moire . Nu. Le d´roulement d’un acc`s m´moire dans le cas o` la m´moire est plus lente e e e u e a ´t´ d´crit au paragraphe 2. Une particularit´ ` signaler est l’existence d’un registre particulier ea (appel´ registre instruction et not´ RI). Une instruction machine comporte elle-mˆme deux types d’informae e tions : le code de l’instruction et la d´signation de(s) op´rande(s) de l’instruce e tion. Les principes de r´alisation e 353 au prochain front d’horloge du processeur. 1. e On peut envisager un autre type d’organisation dans laquelle la m´moire e est organis´e en deux parties distinctes : une m´moire pour les instructions e e et une m´moire pour les donn´es. le code de l’instruction ´tant lu en premier. non manipulable par les instructions e e du langage machine et qui contient ` chaque instant l’instruction en cours a d’interpr´tation. Lorsque plusieurs acc`s sont e e a e e n´cessaires. Il doit ˆtre mis ` jour apr`s chaque acc`s ` une instruction en vue de e a e e a l’acc`s suivant. Ces codes de o e o conditions peuvent aussi ˆtre charg´s dans 4 bits d’un registre d’´tat. Le contenu de ce registre sert de compte-rendu pour la partie e contrˆle. Elle peut donc ˆtre tr`s proche d’une partie op´rative type. Selon les instructions et le format de leur codage ces informations peuvent ˆtre lues en un seul acc`s ` la m´moire ou non. d´crite au e e e e chapitre 11. e e e Notons qu’une adresse peut ˆtre une entr´e de l’UAL lorsqu’un calcul est e e n´cessaire sur une adresse . e e . il faut ajouter la valeur de l’adresse et le d´placement.1 du chapitre 11. le contenu du mot m´moire est disponible sur le bus donn´es ` partir du prochain front d’horloge e e a du processeur.

Dans le e e sparc. on trouve des registres globaux et des registres locaux. N. les trois derniers ´tant organis´s en fenˆtres de registres. le mot d’´tat (SR) contenant les indicateurs Z. Ces registres e e peuvent contenir des donn´es et/ou des adresses. le processeur r´alisant ainsi l’interpr´tation du langage machine. V du mot d’´tat contiennent les valeurs Zu. d´coder et ex´cuter cette e e instruction. a Toute action sur un registre provoque un changement d’´tat de la partie e op´rative. les e e registres sont typ´s en registres de donn´es et registres d’adresses. e e e Rappelons que la partie op´rative peut ˆtre vue comme un automate dont e e l’´tat est l’ensemble des valeurs contenues dans les registres. comme le sparc par exemple. L’exercice E14. Vu e calcul´es par l’UAL lors de la derni`re instruction qui a mis ` jour explicitee e a ment ces indicateurs. ee e Certains sont connus du programmeur et manipulables explicitement : un mn´monique leur est associ´ dans le langage d’assemblage.1). Les sorties sont un ensemble d’ordres envoy´s ` la partie op´rative e a e ou ` l’ext´rieur et les entr´es sont des informations ´manant de la partie a e e e op´rative : valeur d’un code op´ration.3 Principes g´n´raux de la partie contrˆle e e o La partie contrˆle doit envoyer les commandes ad´quates ` la partie o e a op´rative. V. Nu. peuvent e ˆtre manipul´s au travers d’instructions sp´cialis´es. Ils peuvent ˆtre class´s en e e e diff´rentes cat´gories.354 Le processeur : l’interpr`te cˆbl´ du langage machine e a e Les registres sont des ´l´ments de m´morisation internes au processeur. e e e D’autres registres. C. Une microaction est un ensemble de modifications simultan´es de l’´tat de la partie op´rative. La partie op´rative peut ex´cuter un certain nombre d’actions que e e e nous appellerons microactions (Cf. C. e o e Dans la suite nous d´veloppons un exemple simple pour lequel nous e d´crivons la partie contrˆle tout d’abord de fa¸on fonctionnelle par un algoe o c rithme it´ratif en consid´rant les ressources (registres) du processeur comme e e . d’entr´e et de e sortie. Cu. Par exemple. valeur d’un code condition et indie e cateurs arithm´tiques. e La machine s´quentielle qui d´crit l’algorithme de la partie contrˆle est e e o aussi appel´e automate (ou graphe) de contrˆle ou s´quenceur. le jeu d’instructions comporte les instructions arithm´tiques sous deux formes : e Addcc et Add. La partie contrˆle d’un processeur est ainsi la r´alisation mat´rielle d’un o e e algorithme it´ratif qui peut ˆtre d´crit par une machine s´quentielle avec ace e e e tions. 1. comme le compteur programme (PC). addition avec ou sans mise ` jour des indicateurs. Par exemple dans la famille des processeurs 68xxx. Dans certains processeurs. Les e indicateurs Z. N. le pointeur de pile (SP). puis pr´parer le compteur programme (PC) pour l’instruction suie vante.4 e montre ce point de vue. Paragraphe 3. les instruce e e e tions de rupture de s´quence ont un effet sur la valeur du registre PC. e e e Le sch´ma g´n´ral est le suivant : charger le registre d’instructions (RI) avec e e e l’instruction courante (dont l’adresse est dans PC).

add) . On donne pour chacune une e syntaxe de langage d’assemblage et l’effet de l’instruction. la figure 14. e e Les instructions sont cod´es sur 1 ou 2 mots : le premier mot repr´sente le e e codage de l’op´ration (clr.2. mise ` z´ro du registre ACC a e chargement de la valeur imm´diate vi dans ACC e chargement du mot m´moire d’adresse ad avec le e contenu de ACC jmp ad saut ` l’adresse ad a add [ad] chargement de ACC avec la somme du contenu de ACC et du mot m´moire d’adresse ad. les adresses ´tant ea e des adresses de mots. ´tant donn´ le jeu e o e e d’instructions retenu.2-b donne la repr´sentation en e m´moire du programme pr´c´dent apr`s assemblage et chargement en m´moire e e e e e a ` partir de l’adresse 0 (Cf. Voici un exemple de programme ´crit dans ce langage e e d’assemblage : clr ld #vi st [ad] ld #3 st [8] etiq: add [8] jmp etiq En supposant le programme charg´ ` partir de l’adresse 0. e Remarque : En fixant la taille d’un mot nous avons fig´ la taille maxie . le deuxi`me mot. jmp. l’objectif ´tant de disposer de e e e suffisamment d’´l´ments pour d´tailler la conception du processeur mais de se ee e limiter de fa¸on ` garder une taille raisonnable ` cette description. st. La taille n´cessaire au codage d’une adresse ou d’une donn´e est 1 mot. 2. L’objectif est de montrer comment on peut concevoir e la partie op´rative et la partie contrˆle d’un processeur. ld. e Les instructions sont d´crites ci-dessous. e Ce jeu d’instruction est extrˆmement r´duit. Le codage des instructions est donn´ figure 14. l’adresse associ´e au symbole etiq est 4. directement visible par e le programmeur. e e contient une adresse ou bien une constante.2-a. En supposant e que la taille d’un mot est de 4 bits. Exemple : une machine ` 5 instructions a 355 des variables et la m´moire comme un tableau. s’il existe. Nous donnons ensuite une dese cription sous forme de machine s´quentielle avec actions aux ´tats de laquelle e e on associe des microactions : ce sont les op´rations effectivement r´alisables e e par la partie op´rative. Exemple : une machine ` 5 instructions a Le processeur comporte un seul registre de donn´es. Chapitre 18 pour plus de d´tails). appel´ ACC (pour accumulateur). Remarquons c a a que l’on pourrait rendre le jeu d’instructions plus sym´trique en ajoutant une e instruction de chargement absolu : ld [ad].

Dans cet exemple. e e o 3. Ce code e e a ´tant celui de l’instruction ld. l’interpr`te lit une information suppl´mentaire e e e dans le mot d’adresse 1. Puis nous ´tudions la fa¸on e e e c de r´aliser les diff´rentes ´tapes constituant l’ex´cution d’une instruction du e e e e langage machine .2 – (a) Codage des instructions . e Nous montrons dans la suite comment r´aliser cet algorithme par un circuit. dont le code est en m´moire ` l’adresse 0. l’ex´cution du programme commence par l’interpr´tation e e de la premi`re instruction. (b) repr´sentation en m´moire d’un programme e e en langage machine male de la m´moire puisqu’une adresse est cod´e sur un mot. comment organiser e le flot des donn´es pour cette instruction ? Nous retrouvons l` des questions e a tr`s proches de celles r´solues dans le chapitre 11. Cette valeur est alors charg´e dans le registre ACC. 14. La m´moire du e e e processeur a ainsi une taille maximale de 16 mots. nous commen¸ons par nous c poser les questions : de quel mat´riel avons-nous besoin ?. le compteur programme (PC) est modifi´ de fa¸on ` traiter l’inse c a truction suivante. Une r´alisation du processeur e Pour chaque instruction du langage machine. e Finalement. e Nous allons ainsi d´finir la partie op´rative puis la partie contrˆle qui la pilote. nous d´finissons ainsi la partie contrˆle. e o .3. en consid´rant les ressources du e processeur comme les variables d’un programme.356 Le processeur : l’interpr`te cˆbl´ du langage machine e a e m´moire e 0000 0010 0011 0011 1000 0101 1000 0100 0100 code de l’op´ration ld e valeur imm´diate 3 e code de l’op´ration st e adresse 8 code de l’op´ration add e adresse 8 code de l’op´ration jmp e adresse 4 clr ld #vi st [ad] jmp ad add [ad] 1 2 3 4 5 vi ad ad ad 0100 0111 (a) (b) Fig. Nous adoptons un point de vue fonctionnel. L’algorithme d’interpr´tation e des instructions est donn´ figure 14. Les r´ponses ` ces quese e e a tions permettent de d´finir la partie op´rative.

1 D´finition de la partie op´rative e e A partir du jeu d’instructions.3 – Algorithme d’interpr´tation du langage machine e L’am´lioration d’une r´alisation mat´rielle s’exprime en termes de place e e e occup´e par le circuit et de temps de calcul. PC ←− PC + 2 Fig. 3. Mem[BusAd] (´criture m´moire) et Mem[BusAd] . e e Nous avons indiqu´ que le processeur est reli´ ` la m´moire par le bus e e a e adresses (BusAd) et le bus donn´es (BusDon). ee u A ⇐= B op C une microaction qui permet de stocker dans A le r´sultat de e l’op´ration op r´alis´e sur les op´randes B et C.4. Nous donnons ` la fin de ce parae a graphe quelques ´l´ments permettant d’am´liorer le sch´ma obtenu selon ces ee e e crit`res et nous envisageons les cons´quences d’une extension du jeu d’instruce e tions. BusDon (lecture e e m´moire).. PC ←− PC + 1 ld : Acc ←− Mem[PC + 1] . il faut assurer le transfert de l’instruction courante (rep´r´e ee par PC) de la m´moire vers le registre instruction (RI) de la partie op´rative.tailleMem-1] d’entier4 algorithme d’interpr´tation des instructions : e PC ←− 0 tant que vrai selon Mem[PC] clr : Acc ←− 0 . e e e les op´rations que doit r´aliser l’UAL. on d´finit le flux des donn´es n´cessaire.5 a e e r´sumant l’ensemble des microactions ainsi que les transferts mis en jeu et les e commandes associ´es pour la partie op´rative. celles affectant le contenu des registres e e et les op´rations concernant la m´moire. On dispose des transferts : Buse Don . Cette ´tude permet petit ` petit de e e e a construire la partie op´rative et de pr´ciser les op´rations ´l´mentaires qu’elle e e e ee peut r´aliser : les microactions. la table 14. e Nous notons : A . B le fait que le contenu de A doit pouvoir ˆtre e transf´r´ en B sans distinguer les cas o` A ou B sont des bus ou des registres . PC ←− PC + 2 st : Mem[Mem[PC + 1]] ←− Acc . Acc : des entier4 tailleMem : l’entier 16 Mem : un tableau sur [0. 14. Une r´alisation du processeur e 357 lexique : entier4 : le type entiers repr´sent´s sur 4 bits e e { les op´rations arithm´tiques sont donc modulo 16 } e e PC. e e e e On arrive ainsi ` la partie op´rative d´crite par la figure 14. PC ←− PC + 2 jmp : PC ←− Mem[PC + 1] add : Acc ←− Acc + Mem[Mem[PC + 1 ]] . e e . e Tout d’abord.3.

5). a ee e u BusDon. et un e e e transfert de la sortie de l’UAL vers l’accumulateur. il faut pouvoir incr´menter e le compteur de programme. ACC (ligne 4 de la table 14. PC. BusDon . UAL . La valeur vi est stock´e dans le registre RI2 . Evidemment l’UAL doit e e disposer d’une commande d’addition de deux valeurs (ligne 7 de la table 14. ce transfert a comme interm´diaire le bus donn´es. Les o e entr´es de cet automate sont des informations en provenance de la partie e op´rative : conditions portant sur le code op´ration courant c’est-`-dire le e e a contenu du registre RI1. RI2 . le premier contenant le code op´ration e et le second l’information additionnelle (valeur imm´diate ou adresse). PC (ligne 6 de la table 14. UAL et UAL .5. L’instruction st [ad] n´cessite un transfert de la valeur de ACC vers la e m´moire . transferts coupl´s avec l’op´ration d’´criture m´moire (ligne 5 de la e e e e table 14. e e u UAL.5). D’o` : RI2 . e L’instruction add [ad] n´cessite un transfert des valeurs de ACC et du mot e m´moire d’adresse ad (stock´e dans RI2) vers les deux entr´es de l’UAL. L’automate de contrˆle du processeur est donn´ dans la figure 14. L’instruction jmp ad n´cessite un transfert de la valeur ad dans le registre e PC.5). RI2). Le code op´ration. 3.5). e Pour l’instruction clr. BusDon . plus ´ventuellement une valeur ou une adresse. ACC et l’op´ration de lecture m´moire. BusAd. La valeur provenant de la m´moire passe par le bus donn´es d’o` : ACC . BusAd et ACC . L’instruction ld #vi n´cessite un transfert de la valeur imm´diate vi dans e e l’accumulateur. RI1 (respectivement BusDon . Le r´sum´ des microactions e e e e e associ´es se trouve dans les lignes 1 et 2 de la table 14.5). une instruction est form´e du code de l’op´ration ` e e a r´aliser. . De plus.6. Enfin il faut pouvoir initialiser le compteur de programme avec l’adresse de la premi`re instruction (0 dans notre exemple) : d’o` une commande de remise e u a e ` z´ro du registre PC (ligne 9 de la table 14. L’information ad ´tant dans RI2 : RI2 . Le transfert a e e e lieu ` l’adresse qui a ´t´ stock´e dans RI2.358 Le processeur : l’interpr`te cˆbl´ du langage machine e a e Dans notre exemple. pour assurer le passage au mot suivant.5).2 Description de l’automate de contrˆle o L’ex´cution d’une microaction est provoqu´e par l’activation des come e mandes correspondantes et c’est ` la partie contrˆle que revient le rˆle d’activer a o o ces commandes au bon moment. coupl´s avec l’op´ration de lecture de la m´moire. d’o` le transfert e u RI2 . BusAd. l’UAL dispou sant d’une commande d’incr´mentation d’une de ses entr´es (ligne 8 de la e e table 14. d’o` : PC . les e e e valeurs et les adresses sont tous cod´s sur 1 mot. il faut pouvoir forcer la valeur 0 dans le registre ACC : cette op´ration peut ˆtre r´alis´e par une commande de remise ` z´ro e e e e a e du registre (ligne 3 de la table 14. UAL.5). Nous choisissons de d´couper e e le registre RI en deux registres RI1 et RI2. D’o` e u les transferts PC .

O. BusAd Acc . l/e. UAL(1) RI2 . BusAd Mem[BusAd] . Acc RI2 . Mem[BusAd] RI2 . SelMem. SelAccPC. chPC sAccUAL. Acc PC . l/e SelAccPC. 14.3. UAL(1) UAL . BusDon BusDon . PC transferts utilis´s e PC . chAcc sRI2Ad. Les notations UAL(1) e et UAL(2) d´signent l’entr´e 1 et l’entr´e 2 de l’UAL. chPC resetPC 8 9 PC ⇐= PC + 1 PC ⇐= 0 Fig. SelAccPC chAcc sPCUAL. sAccDon. BusDon BusDon . l/e chRI1 sPCAd. PC Acc . BusAd Mem[BusAd] .5 – Commandes et transferts associ´s aux microactions. Vu resetPC chPC ADD/INCR sPCUAL UAL PC Fig. BusDon BusDon . add/incr. BusDon BusDon . BusAd Mem[BusAd] . SelMem.4 – Une partie op´rative possible pour le processeur e microactions RI1 ⇐= Mem[PC] 1 RI2 ⇐= Mem[PC] 2 3 4 5 6 7 PC ⇐= RI2 Acc ⇐= Acc + Mem[RI2] Acc ⇐= 0 Acc ⇐= RI2 Mem[RI2] ⇐= Acc RI2 . sPCAd. RI2 commandes pour la P. add/incr. SelMem. 14. RI1 PC . SelMem. e e e . l/e chRI2 resetAcc SelAccPC. UAL(2) UAL . Cu. sRI2Ad. Nu. Une r´alisation du processeur e 359 vers la partie contrˆle o chRI2 RI2 0 1 RI1 chRI1 ACC SelAccPC resetAcc chACC sAccUAL sAccDon Mem sRI2Ad Mem BusAd BusDon sPCAd Zu.

e e . chAcc. ri0 ´tant le bit de poids faible. les entr´es de la partie contrˆle e o peuvent ˆtre plus nombreuses.360 Le processeur : l’interpr`te cˆbl´ du langage machine e a e Une premi`re version consisterait ` effectuer le test de chacun des codes e a conditions. ϕ. A l’´tat E1 est associ´ le vecteur de sore e tie : (1. sAccUAL. 4.ri0 car le code de l’instruction clr est e e 0001. st. sAccDon. dans le cas o a de l’instruction jmp.5 propose de r´aliser la synth`se compl`te de cet automate. e e e Cet automate est cadenc´ par une horloge dont la p´riode correspond au e e temps n´cessaire ` l’ex´cution de la microaction la plus longue . 0. 3. notons ri3 . 1). la microaction la plus longue est Acc ⇐= Acc + Mem[RI2].ri1 . nous obtiendrions un choix ` e a 5 cas (clr. 0. 0. Dans l’exemple. add/incr. Il faut alors savoir selon quels crit`res physiques : fr´quence de e e e e e fonctionnement. 1. chRI1. On e peut les repr´senter par une valuation du vecteur bool´en : (SelMem. e e Les entr´es de l’automate sont des informations en provenance de la pare tie op´rative. E4) nous pouvons regrouper les traitements. qui comporte une addition et un acc`s m´moire e e alors que les autres microactions ne comportent que l’un des deux. On note que pour toute e instruction sauf jmp le compteur de programme doit ˆtre incr´ment´ (Etat E9) e e e afin que la partie contrˆle puisse passer ` l’instruction suivante . jmp et add). ld. ce temps e a e est appel´ temps de cycle. 0. c’est-`-dire les 4 bits du registre RI1 . Apr`s avoir lu le code de l’instruction. l/e. ϕ. SelAccPC.3 R´alisation mat´rielle de la partie contrˆle e e o Maintenant que l’automate de contrˆle a ´t´ d´crit en terme des mio ee e croactions et des valeurs du code op´ration courant. En remarquant que 4 instructions demandent la lecture du mot suivant (Etats E2. etc. L’automate d´crit dans la figure 14. ri0 le e a contenu de RI1. on peut penser que le coeur du processeur a un temps de cycle de 2 nanosecondes. C’est ainsi que nous organisons d’embl´e les tests en 2 cas : instruction clr ou e non. 0. en param´trant certains traitements. le compteur de programme est charg´ avec l’adresse de la e cible du branchement (Etat E6). Critique et am´lioration de la solution e Apr`s avoir produit une solution. il est judicieux de se demander si elle peut e ˆtre am´lior´e. ϕ. nous allons d´tailler sa e e r´alisation mat´rielle. chRI2.6 est la traduction de l’algorithme du e paragraphe 2. ϕ. sRI2Ad. Pour un jeu d’instructions plus complet. Quand on lit qu’un processeur a une horloge ` e a 500 Megahertz. chPC. sPCAd). L’exercice E14. ri2 . ϕ. 1. surface du circuit. resetAcc. ri1 . e Les sorties de l’automate sont les commandes de la partie op´rative.ri2 . La transition de l’´tat E1 vers e e l’´tat E3 est conditionn´e par : ri3 . e e resetPC. puissance ´lectrique dissip´e. 0. sPCUAL.

14. Critique et am´lioration de la solution e 361 E0 PC ⇐= 0 E1 RI1 ⇐= Mem[PC] RI1=clr E3 ACC ⇐= 0 E2 RI1 = clr PC ⇐= PC + 1 E4 RI2 ⇐= Mem[PC] RI1=ld E5 ACC ⇐= RI2 E7 Mem[RI2] ⇐= ACC E8 E9 E6 RI1=st RI1=jmp PC ⇐= RI2 RI1=add ACC ⇐= ACC + Mem[RI2] PC ⇐= PC + 1 Fig.6 – Un premier automate de contrˆle pour le processeur o E1 E2 RI1 ⇐= Mem[PC] RI1=clr E3 ACC ⇐= 0 E5 ACC ⇐= RI2 E7 Mem[RI2] ⇐= ACC E8 ACC ⇐= ACC + Mem[RI2] RI1=ld E6 RI1=st PC ⇐= RI2 RI1=add RI1=jmp PC ⇐= PC + 1 RI1 = clr RI2 ⇐= Mem[PC] PC ⇐= PC + 1 E4 PC ⇐= 0 Fig. 14.4.7 – Un autre automate de contrˆle pour le processeur o .

elles. on essaie de rendre le processeur le plus rapide possible en e e diminuant le temps d’ex´cution des instructions machine. Cela ne fait pas e a e gagner de temps pour l’ex´cution de l’instruction d’addition mais les autres e instructions sont. pour la machine pr´c´dente e e e il est possible de charger un mot de la m´moire dans RI1 et d’incr´menter e e en parall`le PC afin qu’il soit prˆt pour la lecture suivante. en e e e e ´criture pour st et en lecture pour add. dans le cas des instructions st et add. l’ex´cution de l’instruction add. Par exemple.2 Parall´lisation de microactions e Une autre fa¸on d’am´liorer l’efficacit´ du processeur consiste ` effectuer en c e e a parall`le certains traitements. Dans notre exemple. on pourrait imaginer un registre tampon T connect´ au bus donn´es e e et ` l’entr´e de l’UAL. On peut donc diminuer e soit le temps de cycle. on peut ´viter de grouper un acc`s e e a ` la m´moire et une op´ration UAL dans la mˆme microaction. les microactions e e RI1 ⇐= Mem[PC] et PC ⇐= PC + 1 n’utilisant pas le mˆme mat´riel.362 Le processeur : l’interpr`te cˆbl´ du langage machine e a e En g´n´ral. Cette modification permettrait donc e de gagner un ´tat lors de l’ex´cution des instructions ld et jmp et seulement e e dans ces deux cas. e e 4. il est indispensable de disposer d’un registre interm´diaire pour stocker l’adresse qui est utilis´e pour l’acc`s m´moire. il faut connecter le bus donn´es directement aux multiplexeurs d’entr´e de chacun e e des registres Acc et PC. e Une bonne r´alisation est souvent le r´sultat d’un compromis entre tous e e ces aspects. L’´tat E8 pourrait alors ˆtre divis´ en 2 ´tapes corresa e e e e e pondant aux microactions T ⇐= Mem[RI2] et ACC ⇐= ACC + T. e e On peut. quitte ` ajouter des op´rateurs de base ou des e a e registres dans la partie op´rative. e prend 5 cycles d’horloge. Le temps de cycle correspondrait alors au temps d’acc`s ` la m´moire.1 D´composition des microactions e Pour diminuer le temps de cycle. On peut aussi chercher ` ´conomiser le mat´riel : utiliser le moins possible ae e de registres ou de bus dans la partie op´rative. Pour cela. se demander si le registre RI2 est bien n´cessaire. Dans notre e e e exemple. Nous donnons ici quelques id´es d’am´liorations sur l’exemple e e pr´c´dent. par ailleurs. ce qui est parfaitement possible. e c’est-`-dire se poser la question : peut-on faire transiter directement la valeur a ou l’adresse associ´e ` un code op´ration vers le point o` elle est n´cessaire ? e a e u e Dans le cas de l’instruction ld (respectivement jmp) la microaction Acc ⇐= Mem[PC] (respectivement PC ⇐= Mem[PC]) convient. par exemple. Etant e e . ex´cut´es plus rapidement. Le temps d’ex´cution e e d’une instruction donn´e est ´gal ` N ×C o` N est le nombre d’´tats n´cessaires e e a u e e a ` l’ex´cution de l’instruction et C est le temps de cycle. soit le nombre d’´tats n´cessaires ` l’ex´cution d’une e e a e instruction. 4. En revanche.

o Par exemple. Critique et am´lioration de la solution e 363 donn´es deux microactions A1 et A2. le temps d’ex´cution de toutes les instrucc e e e tions machine a diminu´ car le nombre d’´tats travers´s est plus petit. De fa¸on g´n´rale.7. e o L’incr´mentation du compteur de programme est ex´cut´e parall`lement ` la e e e e a lecture d’un mot m´moire puisque le mat´riel (la partie op´rative) le pere e e met. e 4. contenue dans RI1. e e La param´trisation consiste ` ajouter une partie de mat´riel ` la fronti`re e a e a e de la partie contrˆle et de la partie op´rative. La mise en parall`le o a e e e e de cette microaction avec PC ⇐= PC + 1 peut ˆtre incorrecte . A1 A2 d´note leur activation en pae e rall`le. Lorsque la partie contrˆle active la e o commande chACCouPC la commande de chargement du registre ad´quat est e activ´e selon la valeur du code op´ration.4. e e L’exemple pr´c´dent est simpliste.8. Nous pouvons les rassembler en un seul ´tat comportant e la microaction ACCouPC ⇐= RI2 dont la commande associ´e est chACCouPC. En r´alit´. ce qui permet de regrouper des o e traitements dans la partie contrˆle. les ´tats E5 et E6 se o e ressemblent beaucoup. c’est-`-dire l’activation de l’ensemble des commandes associ´es ` l’une e a e a et ` l’autre dans le mˆme cycle d’horloge.7 d´crit un nouvel automate de contrˆle pour le processeur. Ceci rend la r´alisation de la partie contrˆle plus compacte o e o et peut aussi am´liorer l’efficacit´ du processeur.3 Param´trisation des commandes e Une autre am´lioration consiste ` essayer de minimiser le nombre d’´tats de e a e la partie contrˆle. qu’un acc`s m´moire dure plus d’un e e e e cycle d’horloge . la m´moire ´met alors un signal fin-acc`s lorsque la donn´e lue e e e e est disponible sur le bus donn´es. dans un 68000. e e e Ce genre d’optimisation doit ˆtre fait avec pr´caution. il existe nombre de cas o` la e e e e u param´trisation fait gagner un grand nombre d’´tats. Le temps d’ex´cution de l’instruction add est maintenant de 3 e e cycles d’horloge. le compteur e programme peut avoir ´t´ incr´ment´ avant que la lecture ne soit r´alis´e et ee e e e e Mem[PC] peut alors correspondre ` un mot suivant celui auquel on devait a acc´der. Supposons que la e e m´moire associ´e au processeur soit lente. la partie contrˆle. e . la partie op´rative et la paro e tie servant ` la param´trisation constituent chacune de l’ordre d’un tiers du a e mat´riel. Cela ne pose pas de probl`me pour le traitement de l’instruction jmp car e la valeur ainsi stock´e dans le registre PC est ´cras´e par l’adresse ad´quate e e e e ult´rieurement. La microaction de lecture RI1 ⇐= Mem[PC] e e est alors r´alis´e dans un ´tat comportant une boucle sur le signal fin-acc`s et e e e le contrˆleur passe ` l’´tat suivant sur l’entr´e fin-acc`s. a e La figure 14. Nous en montrons une e e utilisation dans le paragraphe suivant. e e par exemple. Le mat´riel ajout´ peut constituer une partie importante du processeur . e Il suffit alors d’ajouter entre la partie contrˆle et la partie op´rative le circuit o e combinatoire donn´ dans la figure 14. dans la partie contrˆle de la figure 14.

chACC et chPC sont re¸ues par la partie op´rative. 14.1 Augmentation du nombre de registres utilisateur Imaginons que notre processeur ait 16 registres de donn´es ACC0. ACCi st ACCi. st et add ont alors un param`tre suppl´mentaire. .8 – Production des commandes chACC et chPC selon la commande chACCouPC.ri1. e ACC15 au lieu d’un seul accumulateur. La figure 14.364 Le processeur : l’interpr`te cˆbl´ du langage machine e a e Etat 8 ri3. e e L’instruction jmp reste inchang´e. [ad] add [ad]. 5. chPC est activ´e lorsque l’automate de contrˆle est dans un des e e o ´tats 2 ou 4 ou lorsque chACCouPC est vraie alors que l’instruction courante e est jmp (cod´e 4 en d´cimal). st et add demande 3 mots (toujours de 4 bits) : un pour le code op´ration.10 d´crit une nouvelle partie op´rative pour le processeur e e clr ACCi ld #vi..ri0 chACC chACCouPC chPC ri3.. La syntaxe de ces instructions peut ˆtre : e e mise ` z´ro du registre ACCi a e chargement de la valeur vi dans le registre ACCi stockage du contenu de ACCi ` l’adresse ad en m´moire a e stockage de la somme du contenu de la m´moire e d’adresse ad et du contenu de ACCi dans ACCi. nous ´tudions des extensions de deux types pour le e processeur : augmentation du nombre de registres utilisables par le programmeur et extension du jeu d’instructions. Les instructions clr. chACCouPC est ´mise e e o e par la partie contrˆle.ri2. ld.9). Figure 14. ACC1.. Le codage des instructions ld. le code op´ration et l’´tat de l’automate de contrˆle. ACCi . Extensions du processeur Dans ce paragraphe. o c e chACC est activ´e lorsque l’automate de contrˆle est dans l’´tat 8 ou lorsque e o e chACCouPC est vraie alors que l’instruction courante est ld (cod´e par 2 en e d´cimal).ri2.ri1. e e 5. un pour la valeur imm´diate ou l’adresse et un e e troisi`me pour le num´ro du registre. Le codage de l’instruction clr en dee e mande 2 (Cf.ri0 Etat 2 ou Etat 4 Fig.

un ree e gistre suppl´mentaire RI3 qui permet de stocker le num´ro du registre lu en e e m´moire lors du traitement d’une instruction clr. ld. le registre RI3 e contient la valeur i. num´ro du registre ACCi concern´.9 – Codage des instructions pour une extension de la machine BusA ACC0 sACC0A ACC1 ACC15 UAL BusB sRI2B P C CALC sPCAd Mem Mem sACC0Don BusDon R I 1 R I 3 R I 2 sRI2Ad 1 0 vers la partie contrˆle o BusAd Fig. on aurait les microactions : ACC0 ⇐= 0. e Par exemple. st et add. st ou add. i = 0. Extensions du processeur 365 ld vi num´ro de registre e st ou add ad num´ro de registre e clr num´ro de registre e Fig. . st et add. pour l’instruction clr. . la mise ` jour d’un pointeur de pile... ACC15 ⇐= 0. ACC1 ⇐= 0. On y trouve ´videmment les 16 registres ACCi. Les bits de e ce registre sont de nouvelles entr´es pour la partie contrˆle. e a Sans utiliser de technique de param´trisation. L’automate a alors beaucoup d’´tats et le cire cuit ` synth´tiser est complexe et volumineux. par exemple. ld. 15. .. ld. 14. e o Cette partie op´rative comporte deux parties de calcul : une sur les donn´es e e et une sur les adresses.5. la partie contrˆle compore o terait un ´tat par registre pour chacune des instructions clr. . a e Lors de l’ex´cution des instructions clr. Les 16 ´tats correspone e e dant ` la mise ` z´ro des 16 registres peuvent ˆtre remplac´s par un seul ´tat a a e e e e comportant la microaction ACCRI3 ⇐= 0 qui signifie : le registre ACC dont le . 14. On pourrait utiliser l’unit´ de calcul sur les adresses e pour g´rer.10 – Partie op´rative compl´t´e pour le processeur ´tendu e ee e ´tendu.

5. comme e u e a par exemple : PC ⇐= PC + 1.12 d´crit ces circuits r´alis´s avec e e e un d´codeur.sACCDon15. conjonce tion logique. Lec. chACC.. Pour l’instruction st. sACCDon0. sRI2Ad. chACC0. . e La description de la partie contrˆle param´tr´e est ainsi la mˆme que pour o e e e un seul registre ACC. . La commande de l’UAL peut alors ˆtre r´alis´e directement ` e e e a partir d’un sous-ensemble du registre instruction. . . SelMem. sACC0A. resetACC15. . sACC15A ` partir des commandes resetACC. La figure 14. . Il faut toutefois faire attention aux ´tats o` l’UAL est utilis´e pour des calculs ` usage interne.12 – R´alisation de commandes param´tr´es e e e num´ro est la valeur contenue dans RI3 est remis ` z´ro. Ecr sACCA. 14. chACC15. De mˆme. e a Il faut ajouter le mat´riel n´cessaire pour ´laborer les commandes e e e resetACC0.11 – Commandes associ´es aux nouvelles microactions e RI3 resetACC resetACC0 resetACC1 resetACC15 RI3 sACCDon RI3 sACC0Don sACC1Don sACC15Don sACCA sACC0A sACC1A sACC15A chACC RI3 chACC0 chACC1 chACC15 Fig. .366 Le processeur : l’interpr`te cˆbl´ du langage machine e a e microaction ACCRI3 ⇐= 0 ACCRI3 ⇐= RI2 Mem[RI2] ⇐= ACCRI3 ACCRI3 ⇐= ACCRI3 + Mem[RI2] commandes resetACC sRI2B. . sRI2Ad.. La table de la figure 14. 14. . chACC sACCDon. les 16 ´tats e a e e e correspondant au chargement des 16 registres peuvent ˆtre remplac´s par un e e ´tat avec la microaction : ACCRI3 ⇐= RI2. . SelMem. a sACCA et du contenu de RI3. sACCDon. . chACC Fig. incr´mentation d’un registre) sont ais´ment r´alis´es en complie e e e quant l’UAL.11 donne les commandes associ´es ` chacune de ces nouvelles microactions..2 Extension du jeu d’instructions Des extensions simples comme l’ajout d’op´rations (soustraction. . on va d´finir e e la microaction : Mem[RI2] ⇐= ACCRI3 et pour l’instruction add la microaction : ACCRI3 ⇐= ACCRI3 + Mem[RI2]. .

Le bit Br est exploit´ par la partie contrˆle pour e o . Etudier les cons´quences de cette modification sur la partie e op´rative et la partie contrˆle du processeur. Exercices E14. b3.13 – Extrait de la partie contrˆle pour le traitement de l’instruction brn. Les exercices E14. e L’UAL est compl´t´e avec un registre ` 1 bit. N. Ce bit est souvent stock´ dans ee a e le registre d’´tat. Le contenu de ce registre est accessible en permanence par e la partie contrˆle.6. a e Supposons que nous voulions maintenant ajouter des branchements conditionnels. c e e C. en particulier. Exercices 367 RI1 = clr RI2 ⇐= Mem[PC] RI1=brn et N PC ⇐= RI2 * * PC ⇐= PC + 1 RI1=brn et N UAL Nu Registre Etat N vers partie controle Fig. b3.2 et E14. il s’agit de l’indicateur de r´sultat n´gatif (N) que l’on peut e e e supposer charg´ lors de toute instruction arithm´tique. on ajoute l’instruction brn ad dont l’effet est : si le r´sultat de l’op´ration pr´c´dente est n´gatif alors effectuer un branchee e e e e ment ` l’adresse ad sinon passer ` l’instruction suivante.7. 14. c’este e `-dire l’´tat E2 de la figure 14. b4 du code op´ration et les 4 bits Z. b2.13 d´crit la portion de partie contrˆle traitant o e o l’instruction brn. Par exemple. V et d´livre un bit Br disant si la condition donne effectivement lieu ` e a un branchement ou non. En revanche. E14. R´aliser. b2.1. le bit N e e n’est pas charg´ lors d’un calcul de type PC ⇐= PC + 1. On peut consid´rer un codage e o e des diff´rentes conditions cc sur 4 bits b1. Ce genre d’instruca a tion utilise les codes de conditions calcul´s par l’UAL lors de l’ex´cution des e e op´rations . e e e 6. ici. b4 (ou prendre le codage e d’un processeur existant). le circuit combinatoire qui e re¸oit en entr´e les bits b1. La figure 14. Les o fl`ches not´es * ont pour cible l’acquisition de l’instruction suivante.3 sugg`rent des modifications plus e compl`tes pour le processeur ´tudi´ ci-dessus.1 : Branchement conditionnel g´n´ral e e On veut ajouter au langage machine du processeur ´tudi´ dans ce chapitre une e e instruction BRcc o` cc repr´sente l’un des codes de conditions classiques de u e tout processeur.

368 Le processeur : l’interpr`te cˆbl´ du langage machine e a e ´tablir la nouvelle valeur du compteur programme. Il y a 4 registres e e de 4 bits : RI1. La commande Lire correspond ` la conjonction : l/e et SelMem. e resetPC. e e pour parler en fait des 214 entr´es pour lesquelles chRI1 vaut 1.. sAccDon. Un processeur int´grant entre autres cette possibilit´ est d´crit dans le chapitre 22.14). sPCAd. mais seulement celui de la m´moire. On ´crira : si chRI1 alors .5 : Synth`se d’une partie contrˆle e o L’objectif de cet exercice est la synth`se de la partie contrˆle du processeur e o . resetAcc. sur les comptes-rendus plutˆt que sur les commandes. Figure 14.. Paragraphe 3. e e o E14. chPC. en utilisant un algoe c rithme. Acc et PC. C’est encore une forme de e param´trisation. chACC. Lire. e o E14. On introduit des e e e variables interm´diaires pour faciliter l’´criture (Cf. On peut modifier la partie e op´rative de la figure 14.3 : Appel de sous-programme Ajouter dans le langage machine des instructions d’appel et de retour de sousprogramme (ajouter les laisons entre PC et le bus donn´es. Une instruction d’appel de sous-programme demande la sauvegarde de l’adresse de retour (Cf. chRI2. sPCUAL. L’objectif de cet exercice est de pr´ciser la d´finition de e e cet automate.10 et remplacer le circuit CALC par un additionneur e ou bien utiliser l’UAL pour r´aliser l’addition.4. On ne peut donc pas d´crire e e e les transitions selon toutes les valeurs des entr´es. Ces 16 bits d´finissent 216 ´tats. Paragraphe 1.3 du chapitre 12). ADD/INCR. La commande l/e et SelMem a (Ecrire) ne modifie pas l’´tat du processeur. Etudier les modifications de la e partie op´rative et d´crire la partie contrˆle du processeur. les e e e branchements sont absolus. On va d´crire le e e e nouvel ´tat en fonction de l’ancien de fa¸on symbolique. e D´finissons maintenant l’ensemble des ´tats de l’automate. l’adresse cible du branchement est donn´e dans e l’instruction. RI2.2 : Mode d’adressage relatif Dans le langage machine du processeur ´tudi´ dans le pr´sent chapitre. e E14. e e e E14.2 que la partie op´rative peut ˆtre vue e e e comme un automate. e e 15 fils d’entr´es donnent 215 entr´es possibles. On veut maintenant introduire des branchement relatifs. e e Elle n’est pas une entr´e de la partie op´rative.1) est un automate ` e a 15 fils d’entr´e : chRI1. sRI2Ad. SelAccPC. ajouter un pointeur e de pile). e e Poursuivre la description fonctionnelle de cette partie op´rative. c’est-`a dire pour lesquels l’adresse cible du branchement est ´gale ` la somme de PC e a et d’une valeur constante donn´e dans l’instruction. Une telle approche pourrait ˆtre utilis´e dans un langage de e e description de mat´riel. e La partie op´rative du processeur (Cf. sAccUAL.4 : Partie op´rative vue comme un automate e Nous avons signal´ au paragraphe 1. On peut en effet donner une description fonctionnelle de la fonction de transition a l’aide d’expressions conditionnelles d´finissant la valeur de chaque ` e registre selon sa valeur pr´c´dente et les entr´es courantes.

RI2. Chapitre 22). BusDon.6 selon la technique ´tudi´e au chapitre 10. SelAccPC. La partie contrˆle ´tant d´crite par un automate o e e de Moore. Chapitre 8). La partie contrˆle a 16 fils de sorties : SelMem. Remarquer au passage que l’automate de contrˆle r´v`le une sous-sp´cification : rien n’est pr´vu si le code de o e e e e l’instruction dans RI1 n’est pas un code valide.16 une partie de la fonction de sortie de l’automate. o chRI2. sAccDon. sPCAd (Cf. Nous donnons dans la e e figure 14. l’´tat Ei est repr´sent´ e e e e par le codage binaire de l’entier i.15 – fonction de transition donn´e dans la figure 14. En fait. resetAcc. Paragraphe 3. 14. Acc. Terminer cette table et r´aliser la synth`se de cette fonction combinatoire avec e e des portes.15 donne une partie de la fonction de transition. l/e.14 – Description symbolique d’une fonction de transition ´tat e e2 e1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 inst e0 0 1 1 0 1 0 0 0 entr´es (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 e3 0 0 0 0 0 0 0 0 clr autre ld st jmp ne3 0 0 0 0 1 0 0 0 Fig.2). nouveauPC > : nouvel ´tat de la partie op´rative e e sortieUAL. resetPC. 14. add/incr. chPC. L’automate e e e a 10 ´tats que l’on peut coder sur 4 bits e3 . nouvelRI2. e0 . lors du d´codage de l’instruction une interruption est g´n´r´e par le e e ee processeur (Cf. nouvelAcc. sPCUAL. PC > : ´tat de la partie op´rative e e < nouvelRI1. sAccUAL.6. Exercices 369 < RI1. dans le cas de code invalide. e1 . sRI2Ad. les sorties d´pendent uniquement de l’´tat. La table de la figure 14. BusAd : variables interm´diaires e { Une partie de la fonction de transition de la partie op´rative } 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 d´fini e Fig. Compl´ter cette e . chAcc. chRI1. ou un PLA (Cf. e2 .

. S2. . dessiner e e le circuit synth´tisant la partie contrˆle toute enti`re. . S2.19 d´crit la partie op´rative. Y LDHI Rd. 31. bit poids forts assembleur ADD S1. Fig. S2 d´signe un registre ou une valeur e imm´diate (sur 13 bits). Y s´mantique e Rd ←− S1 + S2 Rd ←− S1 . . Rd SUBR S1. e En utilisant des bascules D pour repr´senter l’´tat de l’automate. Le processeur comporte 31 e registres (not´s R1. . .S2 Rd ←− S2 . Rd AND S1. d’un registre stockage en m´moire e branchement index´ e branchement relatif charg. On e e e peut ajouter les instructions ADDcc.17 d´crit le jeu d’instructions du processeur et la figure 14.. Y repr´sente une valeur imm´diate sur 19 bits. . . e Les adresses et les donn´es sont sur 32 bits. Les entr´es de l’UAL sont connect´es aux bus Bus1 et Bus2 e e et sa sortie au bus BusRes. SUBR. 19 pour Y) doit prendre en compte l’extension du signe. . S2. ORcc et XORcc qui ont le mˆme effet que ADD. S2. e o e E14.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 Rd31−13 ←− Y. Rx...6 : Interpr`te d’un langage machine type sparc e Ce probl`me a pour but de d´crire l’interpr`te du langage machine d’un proe e e cesseur imaginaire inspir´ du processeur sparc. Rs d´signent des e e e registres : un des registres Ri. R31) de 32 bits chacun et un registre sp´cial not´ R0 e e e contenant 0 en op´rande source et non modifiable.370 Le processeur : l’interpr`te cˆbl´ du langage machine e a e e3 0 0 1 ´tat e e2 e1 0 0 0 1 0 0 chRI1 e0 1 0 0 1 0 0 SelAccPC φ 0 1 chAcc 0 0 1 ADD/INCR φ 0(incr) 1(add) . S2. S2. La figure 14. e La table 14.. OR et XOR avec mise ` jour des codes e a de conditions. AND. 14. Rd STORE Rx. S2.. . Rd.. SUBcc. SUBRcc. i=0.. Le circuit combinatoire ext-sign extrait du registre instruction RI la valeur imm´diate et l’´tend sur 32 bits afin de l’envoyer sur e e . ANDcc. Rd XOR S1..16 – fonction de sortie nom de l’instruction addition soustraction soustraction bis conjonction disjonction ou exclusif charg. SUB. Rd OR S1. 14.. Rs JMP COND. S2.17 – Instructions d’un processeur inspir´ du sparc e table et synth´tiser la fonction combinatoire avec des portes ou un PLA. Rd LOAD Rx. Toute op´ration mettant en jeu des valeurs cod´es sur moins de e e 32 bits (13 pour S2. Rd12−0 ←− 0 Fig. Cette partie op´rative comporte e e e 3 bus internes. S1. S2.18 e pr´cise le codage des diff´rentes instructions. Rd SUB S1. Rx JMPR COND.

Le compteur e programme PC peut ˆtre incr´ment´.7 : Interpr`te d’un langage machine type 68000 e Ce probl`me a pour but de d´crire l’interpr`te du langage machine d’un proe e e cesseur imaginaire inspir´ du processeur 68000. . v´rifier qu’elle e e e est effectivement ex´cutable par la partie op´rative fournie. 5. Le circuit combinatoire DEC effectue un d´calage d’une valeur circulant e sur Bus2 . Ajouter sur la partie op´rative les commandes n´cessaires. celui de pointeur de pile (aussi not´ o e SP). AND. 4. i=0. c) instruction JMP. La partie op´rative comporte deux bus internes BusSource et BusR´sultat e e . SUB. La principale diff´rence avec e e le probl`me pr´c´dent vient de l’existence d’un nombre important de modes e e e d’adressage pour ce processeur. Exercices 371 (a) 30 25 23 0 code op C 18 14 I 12 S2 0 Rd ou Rs S1 ou Rx =1 si code op suivi de CC 25 30 0 code op 23 18 Y Rd pour LDHI cond pour JMP relatif 30 25 0 code op 23 cond valeur imm´diate (13bits) e ou no registre (bits 4-0) =1 si S2 est une valeur imm´diate e 0 (b) (c) 18 14 Rx 0 4 S2 0 Fig. elle est utile pour l’ex´cution de l’instruction LDHI. LOAD. ADDcc. e e donner en d´tail l’ensemble des commandes qui lui sont associ´es. SUBRm SUBRcc. Pour cela.. e e 2. e e 3. e e e E14. Bus2. DEC et COND. SUBcc. D´crire le circuit permettant de commander les registres : acc`s aux bus e e et chargement des registres. 14. max. Le programmeur dispose d’un ensemble de registres not´s Di. La valeur circulant sur BusAd peut ˆtre le r´sultat d’un calcul e e r´alis´ par l’UAL. b) instructions LDHI et JMPR . XOR. e Le registre Dmax joue un rˆle particulier. . et r´aliser le s´quenceur.18 – Codage des instructions d’un processeur inspir´ du sparc : a) inse tructions ADD. . une valeur stock´e pr´c´demment dans le registre interne T e e e e e ou le contenu de PC. OR. D´crire la partie contrˆle du processeur sous forme d’une machine e o s´quentielle avec actions.6. Choisir un codage pour les op´rations et pour les conditions e arithm´tiques. ou charg´ ` partir du r´sultat d’un calcul e e e ea e (via BusRes). Dessiner les circuits ext-sign. Pour chaque microaction utilis´e. STORE . Voici quelques pistes ` explorer : a 1.

372 Le processeur : l’interpr`te cˆbl´ du langage machine e a e Mem PC ZNCV COND Bus2 19 DEC T INCR Bus1 BusRes vers la partie contrˆle o ext-sign 32 R I Fig. 14.19 – Partie op´rative d’un processeur inspir´ du sparc e e Mem BusDon R0 13 R 1 R 31 BusAd .

D) vont permettre de faciliter l’interpr´tation des instructions.20 – Partie op´rative d’un processeur inspir´ du 68000 e e Mem et trois registres internes (non visibles par le programmeur) : A. Les deux informations ModeAdr e et nRs d´signent le deuxi`me op´rande. pour e l’adressage relatif d’un d´placement par rapport ` la valeur courante du compe a teur de programme et pour l’adressage absolu d’une adresse. Le r´sultat d’une e e e e op´ration binaire est stock´ dans le registre de num´ro nRd. e Une instruction peut ˆtre cod´e sur 1 ou 2 mots de 32 bits.6. Les registres et les bus ont 32 bits. Le format de codage du premier mot e e d’une instruction est le suivant : code op´ration nRd ModeAdr nRs e C’est une machine ` deux r´f´rences (Cf. relatif et absolu n´cessitent e e un mot d’extension . T est un registre tampon servant ` stocker le r´sultat d’un calcul a e en sortie de l’UAL. registre ee e indirect (not´ nRs@). le chargement d’un registre . le ee et logique (and). Pour une description de la s´mantique des modes d’adressage. imm´diat (not´ #imm). Le deuxi`me e e e mot ´ventuel est appel´ mot d’extension. e Les instructions consid´r´es sont l’addition (add). ModeAdr d´crivant le mode d’adrese e e e sage de cet op´rande et nRs le num´ro du registre concern´. e e e Les modes d’adressage consid´r´s sont : registre direct (not´ nRs). pour l’adressage imm´diat. e e e e relatif et absolu. D et T (Cf. les deux autres (A. registre indirect avec pr´d´cr´mentation (not´ nRs@-). la soustraction (sub). nRd est le num´ro a ee e d’un registre qui constitue le premier op´rande. Exercices 373 Mem Bus Source ZNCV INCR PC BusAd D Di T A Bus R´sultat e BusDon RI vers la partie contrˆle o Fig. Figure 14. Chapitre 12) . ree e e e e gistre indirect avec postincr´mentation (not´ nRs@+). il s’agit d’une valeur. Les modes d’adressage imm´diat.20). voir le chapitre 12. 14. le chargement d’une adresse (lea).

Etudier l’interpr´tation de l’instruction de branchement ` un souse a programme (jsr) . b. comment peut-on la programmer avec les instructions donn´es ? e 3. a e V). e e donner en d´tail l’ensemble des commandes qui lui sont associ´es. et si e e c’est une adresse.21 – Modes d’adressage autoris´s selon les instructions e (load). e e 6. Une croix dans une case indique que le e mode d’adressage est autoris´ pour l’instruction. c). Voici quelques pistes ` explorer : a 1. Nous n’avons pas fourni d’instruction de e retour . on la stockera dans D.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 101 110 #imm X X X X 111 abs X X X X X X X X Fig. D´crire les circuits de calcul des commandes d’acc`s aux bus et de chare e gement des registres.21 donne un codage des instructions. Ajouter sur la partie op´rative les commandes n´cessaires. D´crire la partie contrˆle du processeur sous forme d’une machine e o s´quentielle avec actions. dans A). 2. le code op´ration ´tant e e cod´ sur trois bits (nomm´s a. e e 4. le branchement (jmp) et e le branchement ` un sous-programme (bsr). le stockage d’un registre en m´moire (store). e. Constater les redondances et remarquer que l’interpr´tation e peut ˆtre faite en deux phases : tout d’abord le calcul de l’adresse du e deuxi`me op´rande (s’il s’agit d’une valeur. l’adresse de retour est stock´e dans la pile. Proposer une r´alisation microprogramm´e (Cf. . f). 14.374 Le processeur : l’interpr`te cˆbl´ du langage machine e a e lea jmp jsr store add sub and load abc 000 001 010 011 100 101 110 111 MaJ ZNCV 000 nRs X X X X X X X X def : mode d’adressage 001 010 011 100 nRs@. le registre e pointeur de pile ´tant Dmax. Pour chaque microaction utilis´e. puis le traitement de l’op´ration proprement e dite. C. Etudier le d´roulement de l’instruction add pour chacun des modes e d’adressage. et un codage pour le mode d’adressage e e lui aussi sur trois bits (nomm´s d. v´rifier qu’elle e e e est effectivement ex´cutable par la partie op´rative fournie . pour cela. Chapitre 10) de l’autoe e mate pr´c´dent. a La table 14. e e 5. Le tableau indique aussi les e instructions pour lesquelles il y a une mise ` jour du mot d’´tat (bits Z. N.

Cinqui`me partie e Architecture d’un syst`me e mat´riel e et logiciel simple .

.

Du point de e e e e vue mat´riel il s’agit d’un assemblage de circuits combinatoires et s´quentiels e e dont le rˆle est l’interpr´tation d’un jeu d’instructions particulier. notre propos ´tant plutˆt de donner les principes e e o permettant de comprendre le rˆle et la place de chaque composant. Le jeu d’inso e tructions fourni permet ` un utilisateur d’´crire un programme dans un langage a e de bas niveau : le langage machine. Nous vero rons dans la partie VI comment ´tendre ce syst`me simple ` un ordinateur e e a multitˆches. Cette m´moire est organis´e en plusieurs composants dont cere e e tains sont des m´moires mortes programmables (EEPROM) . il manque encore un certain nombre de composants mat´riels et logiciels. Nous reprendrons la description des entr´es/sorties e dans la partie VI et verrons des am´liorations utilisant le m´canisme des ine e terruptions. Pour obtenir un ordinateur. La partie V d´crit le minimum n´cessaire pour e e e obtenir un ordinateur simple. Cette m´moire sert ` l’utilisateur : le proe e e a gramme en cours d’ex´cution et les donn´es associ´es sont stock´s en m´moire e e e e e vive. Les p´riph´riques d’entr´es/sorties sont tr`s divers. d’autres sont e n´cessairement des m´moires vives. donc ´ventuellement multi-usagers. Chapitre 6). L’ordinateur ainsi ´labor´ ne e e sera pas un ordinateur r´el. e e Pour r´aliser des programmes dont la valeur ne se r´duit pas ` une e e a constante. Les informations et le code n´cessaire au d´marrage de l’ordinateur sont e e stock´s en m´moire morte. l’ensemble processeur/m´moire doit ˆtre ouvert vers l’ext´rieur. Il s’agit de m´moire ` semiconducteurs. ` acc`s e a a e al´atoire. a e Processeur/m´moire et entr´es/sorties e e Le chapitre 15 montre comment connecter le processeur et de la m´moire e centrale (ou principale). mono-utilisateur. nous avons ´tudi´ ce qu’est un processeur.Un syst`me mat´riel et logiciel e e simple Dans ce qui pr´c`de. e e e Nous verrons dans le chapitre 16 que la communication avec le monde ext´rieur e comporte des aspects de cˆblage (connexion physique de p´riph´riques a e e d’entr´es/sorties) mais qu’il faut surtout g´rer des probl`mes de synchronie e e sation (Cf. On peut distinguer deux e e e e .

on trouve le syst`me unix sur des pc. a e e – Diverses biblioth`ques qui ne manipulent pas de ressources particuli`res et e e que les programmeurs peuvent d´cider d’utiliser ou non pour d´velopper e e leurs applications (calcul math´matique. Elles d´finissent des interfaces standardis´es offrant les mˆmes fonce e e tionnalit´s que le mat´riel physique. cartes r´seau. e Notion de syst`me d’exploitation e Nous avons ` ce stade un squelette d’ordinateur mais celui-ci est inutia lisable sans logiciel permettant de lui faire ex´cuter les travaux auxquels il e est destin´. sur un pc. des stations de travail ou le e cray. graphique). etc. cartes e c son. Par e e exemple. capteurs et actionneurs en tous genres) et enfin les circuits servant ` a ´tablir des communications entre ordinateurs (gestion des r´seaux locaux e e et liaisons grande distance. – Certains p´riph´riques permettant un dialogue avec un utilisateur humain e e (clavier/´cran. modems). souris et manettes diverses. Inversement. les circuits de communication avec un environnement industriel (gestion d’automatismes. il existe souvent plusieurs choix possibles de syst`mes d’exe ploitation pour un mˆme ordinateur . Elles constituent e e e le coeur du syst`me d’exploitation (ce que l’on appelle parfois le logiciel de e base). on peut installer le syst`me e e unix (version linux. Ce logiciel doit ˆtre adapt´ d’une famille d’ordinateurs ` e e e a l’autre et entre les g´n´rations successives d’ordinateurs d’une mˆme famille. Ceci e e e s’applique en particulier ` la manipulation des p´riph´riques. de grande capacit´ et e e e en g´n´ral de faible coˆt (par rapport ` la capacit´).). Ce logiciel constitue ce que l’on appelle le syst`me d’exploitation. ou version xinu) ou windows ou windows NT. et les syst`mes d’archivage et de sauvegarde (bandes. mais sous une forme normalis´e.378 Un syst`me mat´riel et logiciel simple e e types de fonctionnalit´s : dialogue avec l’environnement et gestion de m´moire e e secondaire. de roe e bots. acc`s e e e s´quentiel). scanner. dont les p´riph´riques. la m´moire et les fichiers. Les p´riph´riques e e u a e e e de gestion de m´moire secondaire sont les disques et disquettes (acc`s e e al´atoire). imprimantes. de conduite de proc´d´s. tables tra¸antes. Elles donnent des e fonctionnalit´s de plus haut niveau sur le mat´riel existant pour d´charger e e e le programmeur d’une partie du travail commun ` de nombreuses applicaa . On trouve 3 sortes de logiciel dans un ordinateur : – Des biblioth`ques charg´es de la gestion des principales ressources de l’ore e dinateur. e – La m´moire secondaire est une m´moire non volatile. mais dans un langage de haut e niveau) peut fonctionner sur des plate-formes mat´rielles tr`s diverses. e e e Un syst`me d’exploitation (dont l’essentiel n’est pas ´crit en langage d’asseme e blage d’une famille de processeurs particuli`re. e e Une partie r´side en m´moire centrale et la plus grande partie est stock´e en e e e m´moire secondaire.

). etc. de tri. cette derni`re a besoin de connaˆ e e e ıtre les caract´ristiques exactes de l’ensemble des p´riph´riques pr´sents qu’elle a ` g´rer. Elles permettent de d´velopper d’autres e e applications (´diteurs de texte. Par cons´quent. d´bogueurs) ou d’observer l’activit´ du syst`me (comme par exemple e e e regarder les files d’attente des imprimantes). ` la sauvegarde des programmes (et des e e e a donn´es) en m´moire secondaire et ` l’ex´cution des programmes. c’est-`-dire au minimum n´cessaire ` la gestion des e a e a p´riph´riques d’entr´es/sorties. prot´g´ et contrˆl´ pour acc´der e e e e oe e aux ressources.Un syst`me mat´riel et logiciel simple e e 379 tions (par exemple. Certaines ne font e pas ` proprement parler partie du syst`me d’exploitation mais sont livr´es a e e presque syst´matiquement avec. on essaie de faire de e ces biblioth`ques un point de passage oblig´. adresses et formats des registres des coupleurs. Les biblioth`ques qui constituent le syst`me d’exploitation ont un stae e tut particulier : les applications ont besoin de services similaires et ces biblioth`ques interagissent avec la gestion des ressources de l’ordinateur dont e nous verrons dans la partie VI qu’elles peuvent ˆtre partag´es entre plusieurs e e utilisateurs et plusieurs applications. De plus. compilateurs et assembleurs. Mais il doit en exister au moins une version rudimene e . e e e e a e Les ordinateurs sont g´n´ralement ´quip´s d’EEPROM qui permettent de stoe e e e cker ces informations de mani`re non volatile. ainsi qu’un petit programme e permettant de les consulter et de les mettre ` jour : le gestionnaire de configua ration. e Les couches sup´rieures du syst`me d’exploitation sont g´n´ralement e e e e stock´es sur disque. e e Notion de pilote de p´riph´rique e e Nous ne nous int´ressons dans cette partie qu’` la couche basse du e a syst`me d’exploitation. elles sont utilis´es par toutes les applications et donc e r´sidentes en m´moire principale (en EEPROM ou charg´es lors du d´marrage e e e e du syst`me). Le syst`me d’exploitation stock´ sur le disque peut contenir ses propres e e pilotes de p´riph´riques. Elles sont charg´es en e e m´moire lors de la phase de d´marrage. Lors du d´marrage de l’ordinateur et de l’initialisation de la biblioth`que e e de gestion des p´riph´riques. a c etc. de nombreux d´tails peuvent changer e e e d’un ordinateur ` l’autre. ou mˆme durant la vie d’une mˆme machine : souris a e e a ` 2 ou 3 boutons. claviers ` la norme fran¸aise azerty ou anglo-saxonne qwerty. la plupart des syt`mes fournissent des biblioth`ques de e e gestion des chaˆ ınes de caract`res. taille du (des) disque(s). e – Les applications qui sont des programmes ex´cutables. e e a e En ce qui concerne les p´riph´riques. ´diteurs de e e liens. ce qui permet de changer facilement de version ou de e syst`me d’une part et d’installer ´ventuellement plusieurs syst`mes d’exploitae e e tion diff´rents sur des disques (ou des partitions de disques) distincts et choisir e celui que l’on veut lancer au moment du d´marrage.

Ensuite. Nous d´crivons e e dans le chapitre 18 les diff´rentes ´tapes de la vie d’un programme. e Par ailleurs.380 Un syst`me mat´riel et logiciel simple e e taire en EEPROM de m´moire centrale pour les p´riph´riques indispensables e e e lors du d´marrage. e e La couche interface entre l’utilisateur et tous ces composants est l’interpr`te e du langage de commande. leur gestion est regroup´e au e e e e sein d’un partie du syst`me qui s’appelle le pilote de p´riph´rique. cere e e e e taines partag´es entre plusieurs p´riph´riques. disque. e e Les p´riph´riques ´tant compliqu´s et offrant plusieurs fonctionnalit´s. disquette ou CD. typiquement clavier ´cran. Ce sera e e e l’objet du chapitre 17. c’est le processeur qui interpr`te les instructions du programme e comme nous l’avons d´crit dans le chapitre 14. e . C’est l’objet du chapitre 20. Nous y d´crivons en e particulier le chargement d’un programme en m´moire centrale et son lancee ment. Syst`me de gestion de fichiers et interface de e commande Une autre partie du syst`me utilisant les primitives du pilote offre des e services de plus haut niveau comme la gestion d’informations structur´es : le e syst`me de gestion des fichiers (chapitre 19). un programme en langage d’assemblage ne peut s’ex´cuter e qu’apr`s une phase de traduction en langage machine et ´ventuellement de e e liaison avec d’autres programmes ou avec des biblioth`ques.

Le paragraphe 2. assemblage d’une partie op´rative et d’une partie e contrˆle. e a e Le paragraphe 1.Chapitre 15 Relations entre un processeur et de la m´moire e Dans une version minimale. montre les cons´quences e e de l’organisation de la m´moire en plusieurs unit´s physiques. Au chapitre 14 nous nous sommes a e plac´s dans l’hypoth`se simplificatrice d’une m´moire rapide. un ordinateur est compos´ d’un processeur e (Cf. o Nous avons expliqu´ au chapitre 9 comment se d´roule un acc`s m´moire e e e e et pr´cis´ au chapitre 11 les aspects de synchronisation lors de la connexion e e d’une machine algorithmique ` une m´moire. est consacr´ ` diff´rents aspects concernant la connexion ea e du processeur et de la m´moire. Chapitre 4) alors que les e e acc`s se font ` des donn´es physiques de tailles identiques. Enfin dans le paragraphe 3. Le processeur produit e des informations ` stocker dans la m´moire ou bien r´cup`re des informations a e e e pr´c´demment rang´es en m´moire. Chapitre 9). et que l’on e e e e puisse la plupart du temps acc´der ` des sous-ensembles du mot m´moire. e a e 1. Chapitre 14) et d’une m´moire (Cf. Le bus de donn´es est un ensemble de fils e e Dn−1 ` D0 via lesquels transitent les valeurs ´chang´es par le processeur et a e e . e e nous pr´sentons les diff´rents aspects du d´codage d’adresse permettant de e e e g´rer le fait que la m´moire soit organis´e en diff´rents morceaux. Le bus m´moire e Nous avons vu au chapitre 9 que le bus m´moire est constitu´ du bus e e de donn´es et du bus d’adresse. nous montrons comment g´rer des acc`s ` e e a des donn´es logiques de tailles diff´rentes (Cf. e e e e Nous avons vu au chapitre 14 qu’un processeur peut ˆtre consid´r´ comme e ee une machine algorithmique. ou boˆ e e ıtiers. Par ailleurs. e e e Ce chapitre apporte des informations compl´mentaires concernant la e r´alisation de la connexion entre le processeur et la m´moire.

. 1. et r´ciproquement lors e e e e d’une ´criture. Ce bus est bidirectionnel (transfert dans les deux sens). La puissance dissip´e totale a e et le courant qu’est capable de d´biter un circuit int´gr´ sont limit´s. Nous nous limitons ` cette situation e a dans ce chapitre pour nous concentrer sur les aspects connexion. implique au contraire le recours ` des e a amplificateurs ` sorties 3 ´tats mont´s tˆte-bˆche.. e e e Les adresses et les donn´es repr´sentent un grand nombre de sorties du e e processeur (64 pour un processeur ` 32 bits). on voit un signal suppl´mentaire DeconnexionProcesseur dont e nous parlons au paragraphe 1. ` savoir Di (respectivee e e a ment Aj).1 illustre ces connexions . alors qu’elle peut ˆtre connect´e ` de nombreux e e e e a boˆ ıtiers de m´moire. bidirectionnel. Le temps e e e d’acc`s peut d´pendre de la zone m´moire ` laquelle on acc`de (ROM. Wait ou ready pour d’autres processeurs 8 ou 16 bits .). Cela e e e e limite le courant pour chaque fil de sortie. organisation en diff´rents boˆ e ıtiers et acc`s ` des sous-ensembles du mot m´moire. Lors d’une lecture. Le nom du signal varie avec les familles de processeurs e e (Data Transfert Ack pour le 68000. e u e e L’amplification des signaux unidirectionnels tels que les adresses ne pose pas de probl`me particulier : la sortie des amplificateurs externes peut rester e active en permanence. Il suffit donc de commander la validation des sorties processeur e e et m´moire respectivement par le signal l/e et son compl´ment. Memory Hold pour le sparc. Chaque sortie ne peut donc piloter qu’un nombre r´duit d’entr´es. Le bus de donn´es. Sur la figure. Les processeurs g`rent donc un protocole complet (inspir´ du e e e protocole poign´e de mains d´crit dans le chapitre 6) et la dur´e d’un acc`s peut e e e e ˆtre ´tendue d’une ou plusieurs p´riodes d’horloge via un signal d’acquittement e e e pilot´ par la m´moire.1 Connexion simple Nous avons dit au chapitre 9 que la connexion des fils ´tait simple mais en e r´alit´ il ne suffit pas de relier directement les fils de mˆme nature.. seul 1 fil de la nappe des fils du bus donn´es (respectivement bus adresses) est repr´sent´.382 Relations entre un processeur et de la m´moire e la m´moire. les seuls signaux Acc`sMem et l/e suffisent e pour g´rer le protocole de communication. e Dans l’hypoth`se o` le temps de cycle de la m´moire est inf´rieur ou ´gal e u e e e au cycle d’horloge du processeur. e a e Notons toutefois que cette hypoth`se est assez rarement v´rifi´e. Le bus e d’adresse (unidirectionnel) est un ensemble de fils Am−1 ` A0 en sortie du a processeur via lesquels ce dernier indique ` la m´moire le num´ro (l’adresse) a e e du mot auquel il acc`de. e La figure 15. la coma e e e e mande 3 ´tats dans le sens m´moire/processeur doit ˆtre activ´e et celle dans le e e e e sens processeur/m´moire doit ˆtre au contraire inhib´e . d’o` la n´cessit´ d’une amplification externe.3. RAM ou e e e a e entr´es/sorties).

Le signal D´connexionProcesseur est exe e pliqu´ au paragraphe 1. 15.2 – Multiplexage des bus adresses et donn´es e .1 – Connexion processeur/m´moire. 15. Le bus m´moire e 383 Di Donn´e(no i) e l/e AccesMem l/e S´lection boˆ e ıtier Aj Adresse (no j) PROCESSEUR MEMOIRE D´connexionProcesseur e Fig.1.3 e l/e AutD Ai/Di Donn´e (no i) e l/e D Q En AutAd AccesMem Adresse (no i) S´lection boˆ e ıtier PROCESSEUR MEMOIRE D´connexionProcesseur e Fig.

Cette adresse e e est m´moris´e dans le verrou command´ par le signal AutAd. e e e Un cycle d’´criture se d´roule de fa¸on similaire ` un cycle de lecture. ` ceci pr`s que le transfert de la donn´e e a e e est conditionn´ par le signal d’´chantillonnage des donn´es AutD. e e 1.2 qui montre les connexions. Le principe consiste ` faire transiter successivement e e a les adresses puis les donn´es via les mˆmes broches. la lecture se d´roule comme e e e e e dans le cas d’un bus non multiplex´. La figure 15.384 Relations entre un processeur et de la m´moire e Ad/Don Ad Don Ad Don AutAd AutD l/e T1 T2 Fig. e e c a La commande des amplificateurs externes associ´s au bus donn´es est moe e difi´e en cons´quence : une solution simple consiste ` utiliser le signal AutD e e a comme condition suppl´mentaire de validation de ces amplificateurs.3 d´crit l’´volution des diff´rents signaux. e Sur la figure 15. les processeurs sont parfois dot´s d’un e bus m´moire multiplex´. Puis dans une deuxi`me phase.2 Multiplexage du bus m´moire e Pour des n´cessit´s d’amplification des signaux. e e a e Un cycle de lecture se d´roule en deux phases.3 – Chronogrammes d´crivant l’acc`s ` la m´moire dans le cas d’un bus multie e a e plex´ : l’intervalle T1 correspond ` une lecture m´moire et l’intervalle T2 ` e a e a une ´criture m´moire. Tout d’abord. Durant cette e e e phase du cycle. e e On trouve g´n´ralement deux sorties suppl´mentaires servant ` e e e a l’´chantillonnage des donn´es (AutD) et ` l’´chantillonnage des adresses (Aue e a e tAd) (data strobe et address strobe en anglais) signalant les instants auxquels les adresses et les donn´es transitent sur le bus. on note la pr´sence d’un verrou e avant la commande 3 ´tats connect´e ` la m´moire. 15. L’amplie ficateur dans le sens m´moire vers processeur sera ainsi activ´ par la condition e e e e e l/e ET AutD. accompagn´e de son signal de validation AutAd. . le processeur e ´met l’adresse. et pour ´conomiser le e e e nombre de broches sur les boˆ ıtiers. la sortie de donn´es de l’amplificateur m´moire vers processeur e e doit ˆtre d´sactiv´e.

Nous montrons seulement comment d´connecter le processeur du bus e m´moire ce qui est un pr´alable ` toute possibilit´ de partage de ce bus. e .3 D´connexion du bus m´moire e e Dans un ordinateur. En g´n´ral. le processeur n’est pas le seul composant qui r´alise e des acc`s ` la m´moire. e 2. on veut mˆme que la quantit´ de m´moire associ´e ` un e e e e e e e a processeur soit modifiable . Ce paragraphe montre comment alors associer une adresse ` chaque mot a physique de la m´moire. consid´rons que les boˆ e ıtiers sont tous de la mˆme taille. e e a e Plus g´n´ralement. Utilisation de plusieurs circuits de m´moire e 385 1. il suffit de rajouter le signal D´connexionProcesseur e ea e e comme condition suppl´mentaire d’activation des sorties. e e a e e Pour les signaux unidirectionnels d’adresses. Nous ne d´taillons pas dans ce livre la fa¸on de r´aliser des arbitres e c e de bus. d’o` la n´cessit´ d’un arbitrage e e e u e e de bus.1 et 15. Nous e allons fabriquer une m´moire de taille β (avec un certain nombre de boˆ e ıtiers) et β ≤ 2α . e a e Nous verrons au chapitre 16 consacr´ aux circuits d’entr´es/sorties que e e certains d’entre eux ont vocation ` acc´der ` la m´moire sans passer par le a e a e processeur (optimisation appel´e acc`s direct ` la m´moire). Dans un premier temps. probl`me appel´ d´codage d’adresses. e En ce qui concerne les signaux bidirectionnels de donn´es. e e e e Nous consid´rons tout d’abord le cas o` β = 2α puis nous ´tudions le cas e u e α β < 2 et enfin nous parlons d’extension m´moire. l/e et Acc`sMem. Utilisation de plusieurs circuits de m´moire e Il arrive que la capacit´ m´moire d’un boˆ e e ıtier soit inf´rieure ` la capacit´ e a e souhait´e. Par ailleurs un ordinateur est dot´ de boˆ e ıtiers de m´moire vive e et de m´moire morte. de e e e a m−k 2 mots chacune ? Chacun de ces boˆ ıtiers a ses m − k bits d’adresse et son propre signal de s´lection. Aussi pour fabriquer une m´moire on utilise plusieurs e e boˆ ıtiers. e 2.2.1 D´codage externe et s´lection des m´moires e e e Le probl`me peut se poser dans les termes suivants : comment former une e m´moire de 2m mots avec 2k boˆ e ıtiers m´moires (num´rot´s de 0 ` 2k − 1). il est courant de rajouter des boˆ ıtiers de RAM dans un ordinateur. dans le cas o` plusieurs processeurs se partagent la e e u mˆme m´moire (par exemple un processeur g´n´ral et un processeur grae e e e phique). il suffit d’ajouter une commande aux amplificateurs 3 ´tats : un signal de d´connexion e e du processeur : D´connexionProcesseur sur les figures 15. les amplificateurs e 3 ´tats sont d´j` pr´sents. e Par ailleurs les processeurs sont con¸us avec un bus adresses d’une certaine c taille α qui lui permet potentiellement d’adresser 2α mots diff´rents.2. le bus m´moire doit ˆtre partag´.

les mots manquants cr´ant des e trous diss´min´s dans toute la zone m´moire. A partir de la d´composition a = l × 2k + b . la solution que nous venons de d´crire pr´sente l’avantage e e de permettre la cr´ation d’une m´moire contigu¨ de x × 2m−k mots. cette derni`re ora e e e ganisation disperse les mots d’adresses cons´cutives dans des boˆ e ıtiers diff´rents. Lorsque l’on ne veut utiliser que x e boˆ ıtiers (x < 2k ). nous pourrions connecter les l e signaux de s´lection de mots des boˆ e ıtiers aux signaux d’adresses Am−1 ` Ak du a bus d’adresses et les b signaux de poids faible Ak−1 ` A0 au d´codeur externe a e pour s´lectionner des boˆ e ıtiers.4 – (a) M´moire de 2m mots organis´e avec 2k boˆ e e ıtiers de 2m−k mots chacun.4-a).4-b). par exemple.4-b). Soient respectivement b et l (cod´s e m−k sur k et m − k bits) le quotient et le reste de la division de a par 2 : m−k a=b×2 + l (le mot adresse en haut de la figure 15. Figure 15.386 Relations entre un processeur et de la m´moire e a = b × 2m−k + l A b 2m−k k l m−k B S´lection e du boˆ ıtier D´codeur e externe n Donn´es e (b) boˆ ıtier 1 l boˆ ıtier b 2m − 1 boˆ ıtier 2k − 1 (a) Acc`sMem e Fig. e Le raccordement est le suivant : le bus de donn´es. Le principe consiste ` stocker le mot d’adresse a dans le mot num´ro l du a e boˆ ıtier ou de la barette de num´ro b (Cf. Soit a une adresse de mot sur m bits. B est l’un des 2k boˆ e ıtiers de taille 2m−k . est ici remplac´ e par la mise en cascade du d´codeur externe sur k bits et (dans chaque circuit e m´moire) d’un d´codeur interne sur m − k bits (Cf. Contrairement ` la pr´c´dente. le signal l/e et les e signaux d’adresses Am−k−1 ` A0 sont reli´s aux signaux correspondants des a e 2k circuits. Elle est ` la base de certaines e e e a techniques d’optimisation du d´bit de la m´moire (bancs de m´moire). e e e A 0 A m A −k m − m − k− 1 1 boˆ ıtier 0 0 . Figure 15. initialement interne aux boˆ e ıtiers. 15. Le e d´codeur d’adresse sur m bits. Les signaux d’adresses Am−1 ` Am−k sont reli´s aux entr´es de a e e s´lection d’un d´codeur externe command´ par le signal Acc`sMem et dont e e e e chaque sortie pilote le signal de s´lection de boˆ e ıtier d’un circuit m´moire. e e e Il existe des variantes de d´codage dans lesquelles la s´lection des boˆ e e ıtiers exploite d’autres bits d’adresses que ceux de poids forts. e Elle ne supporte pas l’absence d’un boˆ ıtier. (b) D´codage d’adresse en cascade. e e Cette organisation regroupe dans le mˆme boˆ e ıtier les mots d’adresses cons´cutives de poids forts identiques.

Dans le cas o` e = 0. Ainsi. Il est toutefois pr´f´rable de renvoyer un signal d’erreur au processeur ee qui provoquera un d´routement de type erreur de bus (Cf. Le concepteur doit d´finir quelle plage d’adresses du processeur parmi les e p 2 possibles il attribue ` la m´moire (g´n´ralement de 0 ` 2p−1 . Acc`sMem = Am−1 .Ap et erreur e e u e e e e = Acc`sMem. En pratique. On parle e e e e alors de d´codage complet. Tout mot de la m´moire physique poss`de dans ce cas 2m−p adresses e e ´quivalentes ou synonymes : son adresse officielle a et toutes les autres adresses e de la forme (a ± i × 2m−p ) modulo 2m avec i entier. e Lors d’un cycle d’acc`s en lecture en dehors de la plage d’adresses d´volue e e a ` la m´moire.2. Il en r´sulte que les bits peuvent prendre une valeur quelconque e e (qui peut d´pendre entre autres de la technologie des amplificateurs de bus e utilis´s). En partant des poids faibles : c l occupe les bits 0 ` k − 1. e Une adresse de mot ´mise par le processeur se d´compose maintenant de e e la fa¸on suivante : a = e × 2m−p + b × 2p−k + l. Le programmeur e e ne peut faire aucune hypoth`se sur le r´sultat d’une telle lecture. e occupe les bits p ` a a a m − 1. ce nouveau d´codeur e e e e e ´tant command´ par les bits d’adresses de poids forts rest´s inutilis´s. Un tel acc`s constitue une erreur de programmation. La fiche technique pr´cise alors e e e la quantit´ de m´moire d´j` install´e dans l’appareil et la taille maximale qu’il e e ea e est possible d’atteindre en ´quipant tous les connecteurs de boˆ e ıtiers.3 Supports de boˆ ıtiers multitaille et extension m´moire e Les fabricants d’ordinateurs pr´voient g´n´ralement un certain nombre de e e e connecteurs dans lesquels on peut enficher des boˆ ıtiers de m´moires pour en e augmenter la capacit´ (extension de m´moire). le circuit de d´codage d’adresses peut se contenter de n’activer aucun e e boˆ ıtier. Acc`sMem traverse un nouveau d´codeur avant d’atteindre la commande du d´codeur externe du sch´ma pr´c´dent. Il est int´ressant de pr´voir des connecteurs pouvant accepter aussi bien les e e . aucune sortie n’imposera de niveau ´lectrique sur les signaux de e e donn´es du bus. a e e e a Une premi`re possibilit´ est d’introduire un nouvel ´tage de d´codage e e e e d´finissant Acc`sMem. Utilisation de plusieurs circuits de m´moire e 387 2.2 D´codage partiel et synonymie d’adresses e Il se peut que le nombre m de signaux d’adresses du processeur exc`de e largement le nombre p de bits n´cessaires mis ` sa disposition pour adresser la e a m´moire physique. 2. b occupe les bits k ` p − 1.. e e on obtiendrait le plus souvent un mot dont tous les bits sont ` 1. signal e qui sera r´percut´ au niveau de l’utilisateur (le classique bus error). a Lorsqu’il d´tecte un cycle d’acc`s en dehors de la plage d’adresses de la e e m´moire. .. e e Une autre possibilit´ consiste ` conserver le sch´ma pr´c´dent sans tenir e a e e e compte des m − p signaux d’adresses de poids forts : on parle de d´codage e partiel. soit e = 0). Chapitre 22).

paragraphe 1. e e Des sorties additionnelles du processeur indiquent le num´ro de l’espace e utilis´. Une e sortie M/IO du processeur indique ` quel espace le cycle d’acc`s s’adresse. Soit 2p la taille de la plus petite barette support´e et 2g celle de la plus grande. a e A titre d’exemple.388 Relations entre un processeur et de la m´moire e 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 l’utilisateur pourra se e procurer ult´rieurement. le processeur d´livre vers l’ext´rieur des signaux donnant des e e informations sur son ´tat interne ou sur la nature de l’instruction en cours e d’ex´cution. Par exemple. 2. Au moins un des espaces est toujours destin´ aux acc`s m´moire ordinaires via e e e les instructions normales (load/store ou move) d’acc`s ` la m´moire. on peut consid´rer ce num´ro comme e e e e des bits de poids fort de l’adresse ` d´coder. Le d´codeur doit ´mettre un signal d’erreur lorsqu’il d´tecte un e e e e acc`s ` la m´moire non conforme aux informations fournies par le processeur. a e De plus. Certaines parties de m´moire sont ainsi r´serv´es ` certains types e e e e a d’utilisateurs et l’acc`s par d’autres provoque une erreur detect´e au niveau e e du d´codeur d’adresses. Lors d’une demande d’acc`s en ´criture ` une telle e e e a zone. Du point de vue du d´codage. e ee Certains jeux d’instructions distinguent plusieurs espaces d’adressage. e e Par ailleurs. e a e Ce signal se traduit par l’envoi au processeur d’une requˆte d’interruption e (Cf.4. il suffit de prendre le signal que l’on aurait utilis´ pour une m´moire e e vive et d’en faire le produit avec le signal l/e. Cf. La technique consiste ` d´coder les e a e signaux Ap ` Ap+k−1 pour g´n´rer les signaux de s´lection de boˆ a e e e ıtiers. il est possible au concepteur de la carte de prot´ger en ´criture e e certaines zones de m´moire. le d´codeur d’adresse d´tecte que l’adresse ne fait pas partie des plages e e m´moires autoris´es en ´criture et ´met donc un signal d’erreur.4 Sp´cialisation de zones m´moires e e Le d´codage prend en compte d’autres ´l´ments que la seule adresse. nous verrons dans le chapitre 24 qu’il faut implanter des m´canismes de protection lorsque diff´rentes entit´s utilisent le processeur et e e e la m´moire. Les autres signaux A0 ` Ap−1 et Ap+k ` Ag−1 sont disponibles sur les connecteurs a a et reli´s aux entr´es de s´lection de mots des boˆ e e e ıtiers. Le concepteur de la carte peut installer un d´codeur qui d´tecte les acc`s en ´criture en m´moire morte et e e e e e g´n`re une erreur. e e e e Pour obtenir par exemple l’expression du signal de s´lection d’une m´moire e e morte. les processeurs de la famille intel distinguent un espace m´moire ordinaire (instruction move) et un espace d´di´ aux seules e e e entr´es/sorties (instructions in et out. On distingue la notion d’accessibilit´ en mode supere e . Chapitre 12. Le ou e a e les autres espaces sont destin´s ` des usages sp´cifiques et n´cessitent l’usage e a e e d’instructions sp´ciales pour y acc´der. e Soit 2k le nombre de connecteurs. Chapitre 22).5).

on peut toujours r´aliser les autres avec des e instructions de d´calages. plus g´n´rales..D2. Pour transf´rer un mot de 32 bits d’adresse e e A. Cette organisation pose e e des probl`mes : e 1. mais on peut aussi lire un e octet (respectivement un demi-mot de 16 bits). Cette solution pr´sente l’inconv´nient d’ˆtre lente. Le principe retenu est de cadrer e e e les donn´es de taille inf´rieure ` 32 bits en poids faible des registres et de e e a recopier le bit de signe (ou des 0 si on veut interpr´ter la donn´e comme e e non sign´e) dans les bits de poids fort des registres. de cadrage des donn´es sur le bus de donn´es et dans les registres. fournissant chacune e e e un octet du mot de 32 bits. lduh). vers les poids faibles. e 2. En fait. On e e pourrait vouloir cadrer la donn´e de diff´rentes fa¸ons (vers les poids e e c forts. l’instruction en langage d’assemblage comporte la taille de la donn´e manipul´e . lors de tout acc`s ` la m´moire le processeur e a e sp´cifie le mode d’acc`s courant : ce mode est une entr´e suppl´mentaire pour e e e e le d´codeur d’adresses.3. il faudrait alors plusieurs instructions de chargement ou de lecture d’un registre. Le e e e processeur est donc dot´ de quatre m´moires juxtapos´es. il e e a suffit de ne s´lectionner qu’une seule de ces m´moires.l D1. il suffirait d’enchaˆ ıner quatre acc`s m´moire aux adresses cons´cutives A. Consid´rons par exemple un processeur 32 bits capable d’acc´der ` des e e a octets. Dans le sparc les donn´es sont sur 32 bits sauf e pour certaines instructions .D2 signifient respectivement le transfert d’un octet. un seul type de cadrage suffit . d’un mot de 16 bits ou d’un mot long de 32 bits du registre D1 vers le registre D2. a e Par exemple.5 illustre la prise en compte d’un tel cas. A + 2 et A + 3.. sign´ ou non.) . au milieu. 3. ainsi.b D1. move. Acc`s ` des donn´es de tailles diff´rentes e a e e L’unit´ adressable de la majorit´ des processeurs est l’octet : les adresses e e utilis´es pour l’acc`s ` la m´moire sont des adresses d’octet. Mais les proe e a e cesseurs sont ´galement capables d’acc´der ` des multiples de l’octet allant e e a jusqu’` la taille du bus donn´es du processeur. des demi-mots de 16 bits et des mots de 32 bits.w D1. Dans ce cas aussi l’acc`s erron´ ` une zone reserv´e e e e a e a ` un certain mode doit ˆtre d´tect´ par le d´codeur qui ´met alors un signal e e e e e d’erreur. Acc`s ` des donn´es de tailles diff´rentes e a e e 389 viseur ou en mode utilisateur . L’exercice E15. la logique voudrait que le processeur soit dot´ d’une e m´moire d’un octet de large. En revanche. Puisque les adresses sont des adresses d’octet. lorsque le processeur effectue un acc`s ` un octet. dans la famille des processeurs 68xxx. que le processeur peut lire en un seul cycle d’acc`s e m´moire. avec une des e instructions : ldsb ou ldub (respectivement ldsh. e . en effet. d’alignement et de d´codage d’adresse pour s´lectionner les quatre e e m´moires d’octet. les instructions e e move. par exemple. l’instruction ld permet le chargement dans un registre d’un mot m´moire 32 bits.D2 et move. e e e A + 1.

. u e Nous utilisons les 2 bits de poids faibles de l’adresse ´mise par le processeur e pour distinguer les boˆ ıtiers. O1 et O0 et le quatri`me dans O3. 2 = 2 ∗ 2 = 1024 ∗ 1024 ≈ 10 . 3. l’adresse d’un octet de O2 de la forme 4 ∗ X + 1 (A1A0 = 01). En cons´quence l’adresse d’un mot de 32 bits doit ˆtre un e e multiple de 4. La figure 15. on prend e a e chacun des 4 octets dans un des boˆ ıtiers. L’adresse d’un octet de O3 est de la forme 4 ∗ X (A1A0 = 00).5 – M´moire organis´e avec 4 boˆ e e ıtiers de 1 Mo Si l’on veut acc´der ` des donn´es de taille sup´rieure ` celle du bus donn´es. . Supposons. il faudrait prendre les 3 premiers octets respectivement dans O2.1 Organisation mat´rielle e Nous disposons de 4 boˆ ıtiers m´moire de 1Mo (1 Mega-octets). En effet. les a quatre octets auxquels le processeur acc`de sont ` la mˆme adresse. c’est-`-dire e a 20 20 10 10 6 de 2 octets. chacun e a e dans son boˆ ıtier.1 Etude de cas : d´codage d’adresses e Dans ce paragrapge. e a e e a e il faut r´aliser plusieurs acc`s m´moire. mais ` l’adresse e a suivante d’o` une adresse diff´rente pour ce dernier octet . que l’on veuille acc´der ` 4 octets cons´cutifs e a e a ` partir d’un octet du boˆ ıtier O2 . Pour pouvoir acc´der ` un mot m´moire de 32 bits en 1 cycle. nous pr´sentons une ´tude de cas illustrant le d´codage e e e d’adresses pour un processeur ayant un bus de donn´es sur 32 bits et un bus e d’adresses sur 22 bits. e Puisqu’il ne peut y avoir qu’une adresse ` la fois sur le bus adresses. Remarque : L’association entre les m´moires et les octets du bus d´pend de e e la convention utilis´e : gros ou petit boutiste (Cf.5 donne une premi`re e id´e de cette organisation.1. l’adresse d’un octet de . Nous supposons e ici que la convention est gros-boutiste. le programmeur organisant lui-mˆme e e e e le stockage de ces donn´es en m´moire. 15. Chapitre 4).390 Relations entre un processeur et de la m´moire e bus adresses O3 O2 O1 O0 22 D31 D24 D23 D16 D15 D8 D7 D0 bus donn´es e 32 Fig. e e 3. en effet.

A0. . la valeur k e e e cod´e sur les vingt bits de poids fort reli´s aux d´codeurs internes des m´moires e e e e repr´sente un num´ro d’octet dans son boˆ e e ıtier et la valeur i cod´e sur les deux e bits de poids faible est un num´ro de boˆ e ıtier o` trouver l’octet d’adresse 4k + i.. e 1 demi-mot de 16 bits ou 1 mot de 32 bits . En revanche. C’est pourquoi ils tol`rent les adresses non align´es au prix e e de deux acc`s m´moire par transfert d’objet non align´ et d’une complexit´ e e e e mat´rielle accrue. des adresses de mots de 32 bits multiples de 4 et ainsi de suite (notons cependant que le mat´riel e serait capable de transf´rer en un cycle des demi-mots d’adresses 4k + 1). – les signaux Acc`sMem et l/e. SelO2. – la taille de la donn´e . a a Par construction. l’octet d’adresse e a 4k + 2 via D8 ` D15 et l’octet d’adresse 4k + 3 via D0 ` D7 . e Le d´codeur d’adresses doit produire les signaux de s´lection de chacun des e e boˆ ıtiers : SelO3. Acc`s ` des donn´es de tailles diff´rentes e a e e 391 O1 de la forme 4 ∗ X + 2 (A1A0 = 10) et l’adresse d’un octet de O0 de la forme 4 ∗ X + 3 (A1A0 = 11). . 3} contient le mot d’adresse 4k + i. le processeur ´tablit les signaux suivants : e e e – l’adresse A21. Le chargement ou le rangement se fait sur 1 octet. cette information provient du d´codage de l’instruce e tion en cours d’ex´cution. e e La combinaison 4k + 2 et 4k + 3 correspond au transfert d’un demi-mot de seize bits d’adresse 4k + 2. 1.. Les autres bits de l’adresse (A21.3. ne sont pas accessibles dans un mˆme cycle m´moire. SelO0. . l’acc`s ` des donn´es ` des e e a e a adresses non align´es d´clenche une erreur. le processeur peut acc´der e e simultan´ment et en un seul cycle m´moire ` : l’octet d’adresse 4k via D24 ` e e a a D31 du bus de donn´es. avec (0 ≤ x ≤ 3 et 0 ≤ y ≤ 3). e i ∈ {0. Sur les processeurs modernes. Le bus de donn´es se d´compose ` pr´sent en quatre octets.1. . les octets d’adresses 4k+x et 4(k±1)+y. ´tant donn´e une adresse 4k + i ´mise par le processeur. e Remarque : Les versions 32 bits de certaine familles de processeurs (intel et motorola) h´ritent de logiciels d´velopp´s pour leurs pr´d´cesseurs e e e e e travaillant sur 8 ou 16 bits et pour lesquels les contraintes d’alignement ne se posaient pas. e Nous retrouvons l` l’origine des r`gles d’alignement expos´es au chapitre 4 a e e imposant des adresses de demi-mot de seize bits paires. SelO1. e a e Ainsi. 2. De plus le d´codeur d’adresses e . l’octet d’adresse 4k + 1 via D16 ` D23 . e e 3. compos´ des octets d’adresses 4k + 3 et 4(k + 1) + 0 n’est pas accessible e en un seul cycle m´moire. Les m´moires e e a e e d’octet sont connect´es chacune ` un octet du bus de donn´es. Nous avons vu au paragraphe pr´c´dent que le boˆ e e ıtier de num´ro i. u En ´mettant k en poids fort du bus d’adresse. . ces 3 cas peuvent ˆtre cod´s sur e e 2 bits. A2) d´signent e une adresse dans un boˆ ıtier. un demi-mot de seize bits d’adresse 4k + 3.2 Le d´codeur d’adresses e Lors d’un acc`s m´moire. .

. les constructeurs pr´voyant en effet la possibilit´ de rajouter des e e boˆ ıtiers m´moire. Nous traitons un exemple e ` e simplifi´ de fa¸on ` ne pas ´crire des tables de v´rit´ trop complexes. Soit X l’entier repr´sent´ en binaire par les bits m−1 ` 1 du bus adresses. Chapitre 22).4 et E15. e La figure 15.. A0 )... e Nous avons dit que la taille de la m´moire peut varier dans la vie d’un e ordinateur. Le d´codeur d’adresses doit avoir ´t´ pr´vu pour ce faire et e e ee e c’est lors de l’initialisation de l’ordinateur qu’un programme d´tecte la quantit´ e e de m´moire r´ellement pr´sente. e ea Les exercices E15.392 Relations entre un processeur et de la m´moire e taille PROCESSEUR AccesMem A1 A0 A21 . Le tableau 15. il pourra ˆtre associ´ ` une interruption (Cf.. Notons la pr´sence d’un signal e e e e erreur ´mis par le d´codeur . ce signal correspond ` une demande d’acc`s ` une e e a e a adresse invalide. e e e 3.7 donne la table de e v´rit´ de la fonction de d´codage d’adresses.2 Etude de cas : gestion du bus donn´es e Le probl`me qu’il reste ` r´soudre est le cadrage des donn´es de taille e a e e inf´rieure a la taille du bus donn´es sur celui-ci. Figure 15.5 poursuivent cette ´tude de cas. A2 SelO3 SelO2 SelO1 SelO0 erreur DECODEUR D’ADRESSES l/e SelO3 SelO2 SelO1 SelO0 Fig. un bus donn´es sur 16 bits et une m´moire form´e de deux e e e m−1 boˆ ıtiers de 2 octets (Cf.. 15.6 – D´codage d’adresse dans le cas d’acc`s ` des sous-ensembles du mot m´moire e e a e interne de chaque boˆ ıtier re¸oit l’adresse sur 20 bits de l’octet auquel le proc cesseur acc`de.6 d´crit cette organisation. e c a e e e Consid´rons un processeur ayant un bus adresses sur m bits (adresse = e Am−1 .8). La e e a .

. e e Les octets ´tant cadr´s dans les poids faibles du registre R. e Pour traiter ce probl`me. La m´moire “2X” est connect´e ` l’octet de poids fort du bus donn´es e e a e (D15 . 15. un circuit C est ajout´ au processeur : la fie e gure 15.3.. figure 12.. dans le sparc (Cf. Acc`s ` des donn´es de tailles diff´rentes e a e e 393 A1 0 0 1 1 0 0 1 1 0 0 1 1 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 Fig. A1 . . par exemple. l’´criture de 32 bits dans la m´moire est r´alis´e par l’instruction ST et l’´criture e e e e e d’un octet par une instruction diff´rente (STB.9 montre sa position et la table 15. Chapitre 12. il faut savoir quelle partie du registre est affect´e et e e que vaut le reste du registre. pour transf´rer un octet de m´moire vers un registre R (lecture e e d’un octet en m´moire). ...3). Il lui suffit donc de pr´ciser la taille e e e de la donn´e ` ´crire. Le programmeur sait ` quelle adresse il ´crit et est responsable de a e l’organisation de ses donn´es en m´moire. A1 .. e Le processeur indique au dispositif de d´codage d’adresses la taille de l’ine formation a laquelle il acc`de (octet ou mot de 16 bits) et le bit de poids faible ` e d’adresse (A0 ) indique s’il s’agit d’une adresse paire ou impaire. e a e il n’y a aucun probl`me : un octet de chacun des boˆ e ıtiers ´tant envoy´ (ou e e r´cup´r´) sur le bus donn´es. D8 ) et la m´moire “2X + 1” est connect´e ` l’octet de poids faible du e e a bus donn´es (D7 . e Lorsqu’un acc`s ` un mot de 16 bits avec une adresse paire est demand´.. Le probl`me est ainsi de s´lectionner la bonne e e partie du bus donn´es. D0 ). e ee e Lorsque le processeur veut ´crire un octet en m´moire le probl`me est e e e simple. Le d´codeur d’adresses produit les signaux de s´lection des boˆ e e ıtiers m´moire : Sel2X et Sel2X+1... . store byte).. si un octet de e e . e En revanche.10 d´crit la fonction qu’il r´alise.. 1).7 – Fonction de d´codage d’adresses e m´moire not´e 2X stocke les octets d’adresses paires (adresse = Am−1 .. 0) e e et la m´moire not´e 2X + 1 stocke les octets d’adresses impaires (adresse = e e Am−1 . En g´n´ral des instructions sont pr´vues pour cela dans e ae e e e les processeurs . .

D7 R7 .0 Fig.394 Relations entre un processeur et de la m´moire e PROCESSEUR octet ou mot de 16 bits DECODEUR AccesMem A0 D’ADRESSES Sel2X 2X 0 erreur Sel2X+1 2X+1 0 Am−1 . D15 D7 .. D0 Fig.......10 – Cadrage des donn´es dans un registre lors d’une op´ration de lecture e e m´moire e . R8 D15 .. 15. A1 2m−1 − 1 D15...... 0 D15 .... 15..... D0 ——— D15 . 15. D8 D7 . D0 D15 ......8 l/e 2m−1 − 1 D7. R0 D7 .8 – M´moire accessible par octets ou mots de 16 bits e MEMOIRE 2X Bus Donn´es e 16 PROCESSEUR C Registre instruction D15 D8 2X+1 D7 D0 un registre Fig... D8 D7 .9 – Recadrage des donn´es lors de lecture de sous-multiples du mot m´moire 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 . D8 ———0 . 0 0 ....

Exercices 395 la m´moire “2X + 1” est transf´r´ vers le registre R.10 pr´cise quels fils e e e du bus donn´es sont envoy´s vers chaque bit du registre R . s’ils ont ou non une contrainte d’alignement des mots de 2n octets sur fronti`re e n multiple de 2 . la parit´ de l’adresse (bit A0 ) et le type d’instruction (sign´e ou non).5 : Une m´moire g´n´rale e e e On veut g´rer une m´moire dans laquelle l’acc`s ` des octets. e e e – 1 boˆ ıtier servant aux entr´es/sorties de 3 mots de 16 bits. paragraphe 2.1) Le processeur a toujours un bus donn´es de 32 bits mais un bus d’adresses e de 24 bits. En profiter pour regarder quelle convention a ´t´ adopt´e : ee e gros-boutiste ou petit-boutiste (Cf. il doit ˆtre plac´ e e e dans les poids faibles de R.4 : Une m´moire simple (Cet exercice fait suite ` l’´tude de cas du e a e paragraphe 3. 16 et 8 bits ? e E15.2. Le tableau 15. certaines lignes e e ne sont pas pr´cis´es : lorsqu’il y a une demande d’acc`s d’un mot de 16 bits e e e a ` une adresse impaire. – 8 boˆ ıtiers de RAM de 1Mo accessibles en mode superviseur et utilisateur.9 en e e e prenant les codages de taille dans la documentation d’un vrai processeur. Nous disposons de 16 boˆ ıtiers de 1Mo. – 4 boˆ ıtiers de RAM de 256Ko accessibles en mode superviseur. dans le processeur sparc on trouve une instruction de lecture d’un octet sign´ LDSB ou non sign´ LDUB. dans des documentations techniques de processeurs. le deuxi`me e e e ne pouvant ˆtre que lu et le troisi`me uniquement ´crit.4). – 1 boˆ ıtier servant aux entr´es/sorties de 3 mots de 8 bits. sachant que l’on veut pouvoir acc´der ` des octets. On dispose des boˆ ıtiers suivants : – 4 boˆ ıtiers de ROM de 256Ko accessibles en mode superviseur.1 Faire le sch´ma d´taill´ en portes du circuit C de la figure 15. a E15. accessibles en e . des mots de 16 e e e a ou 32 bits est possible. S’il s’agit d’un octet de la m´moire “2X”.3 Chercher. E15. Exercices E15. il faut ´tendre la valeur e ee e repr´sent´e en remplissant les 8 bits de poids fort du registre R avec des 0 ou le e e bit de signe de la valeur. et la e valeur calcul´e par le circuit C n’a aucune importance.2 e e e e pour traiter des donn´es de 32. le d´codeur d’adresses envoie le signal d’erreur. Chapitre 4. e e Par exemple. E15. le premier mot pouvant ˆtre lu et/ou ´crit. D´crire l’organisation de la e m´moire et le d´codage d’adresses afin de disposer d’une m´moire de 4 ∗ 220 e e e mots de 32 bits. Chapitre 3). accessibles en e mode superviseur.2 Comment peut ˆtre ´tendu le m´canisme d´crit au paragraphe 3. les poids forts ´tant trait´s comme pr´c´demment. e e e e Le circuit C re¸oit en entr´e la taille de la donn´e (octet ou mot de 16 c e e bits).4. e 4. selon qu’il s’agit d’un chargement non sign´ ou sign´ e e (Cf. ` des mots e a a de 16 bits ou ` des mots de 32 bits.

Il ´met e e les signaux : Acc`sMem. on verra au chapitre 16 comment les utiliser.11 d´crit l’implantation de chacun de ces boˆ e ıtiers. La figure 15. 15. 218 = 28 ∗ 210 = 256 ∗ 1024 ≈ 256 ∗ 103 . le deuxi`me e e e ne pouvant ˆtre que lu et le troisi`me uniquement ´crit. La fonction de d´codage d’adresses doit calculer les sie e gnaux d’acc`s ` chacun des boˆ e a ıtiers utilis´s et le signal d’erreur d’acc`s e e m´moire. 2M+10. et le type d’acc`s (octet. Notons que 1M = 10 e e 210 ∗ 210 = 220 . 2M+14 RAMu 12M RAMu 16M Fig.11 sont donn´es e 6 = 103 ∗103 ≈ en M (m´ga-octets) pour all´ger le dessin. e . Le processeur a des donn´es sur 32 bits et des adresses sur 32 bits. Pour cette derni`re. l/e. le premier mot pouvant ˆtre lu et/ou ´crit. il envoie un signal s/u indiquant s’il est en mode superviseur ou utilisateur. ou mots pour la m´moire servant aux entr´es/sorties. Faire un sch´ma pr´cis de l’organisation de cette m´moire et d´crire le e e e e d´codeur d’adresses. e Remarque : Les adresses d’implantation sur la figure 15. e e De plus. pour l’instant.11 – Organisation d’une m´moire g´n´rale e e e mode superviseur. M+11. on e e e peut consid´rer que ce sont des mots m´moire avec seulement des contraintes e e de lecture et/ou d’´criture .396 Relations entre un processeur et de la m´moire e 0 1M 2M 3M 4M 8M ROMs RAMs 3 octets en M+3. Nous verrons au chapitre 22 que le processeur poss`de diff´rents e e modes d’ex´cution mais pour l’instant on se contentera d’´mettre une erreur e e d’acc`s m´moire dans le cas o` un acc`s ` une zone superviseur est demand´e e e u e a e alors que le processeur n’est pas en mode superviseur. 16 bits ou 32 bits). M+15 3 mots de 16 bits en 2M+2. e e e Remarque : Un boˆ ıtier de 256K est un boˆ ıtier 218 octets.

consid´rons une configuration simple avec deux ore e ganes p´riph´riques : un clavier pour les entr´es et un afficheur sept segments e e e (Cf. de canal et de processeur d’entr´es/sorties. pr´sente la notion d’entr´es/sorties et pr´cise ce que e e e l’on appelle un circuit d’entr´es/sorties. ´cran. et lorsque e e l’´change a lieu depuis le monde ext´rieur vers l’ensemble processeur/m´moire e e e on parle d’une entr´e. Dans le pae e e ragraphe 3. Les aspects de synchronisae tion mis en jeu lors d’une communication entre le processeur et des organes p´riph´riques sont abord´s dans le paragraphe 2. imprimante. capteurs. et plus particuli`rement g`rent la synchronisation e e e e entre ces dispositifs qui ont des vitesses de fonctionnement diff´rentes. Exemple E8. Le monde ext´rieur peut ˆtre un autre e e e e ordinateur ou un ensemble d’organes p´riph´riques tels que clavier. .1). lecteur de e e disquettes. e Le paragraphe 1. Nous voulons maintenant enrichir notre ordinateur e minimal en offrant des moyens de communication entre l’ensemble processeur/m´moire et le monde ext´rieur. Dans le parae e e graphe 6. e Les circuits d’entr´es/sorties assurent la gestion des ´changes entre le proe e cesseur et les p´riph´riques. Notion d’entr´es/sorties e Pour fixer les id´es.2) pour les sorties (Cf. La programmae e a e tion de sorties et d’entr´es ´l´mentaires ainsi que l’interface mat´rielle e ee e n´cessaire sont pr´sent´es dans les paragraphes 4. e Lorsqu’il y a communication d’information de l’ensemble processeur/m´moire en direction du monde ext´rieur. etc. nous montrons comment connecter mat´riellement des ore ganes p´riph´riques ` l’ensemble processeur/m´moire. a e e 1. nous nous int´ressons ` l’enchaˆ e a ınement d’entr´es/sorties et e pr´sentons des moyens d’optimiser des tranferts de blocs : notions d’acc`s e e direct ` la m´moire (DMA). et 5. Figure 16.Chapitre 16 Circuits d’entr´es/sorties e Nous avons vu au chapitre 15 comment se passent les transferts entre le processeur et la m´moire. on parle d’une sortie.

L` aussi le mˆme type de questions se pose : coma e ment la m´moire est-elle reli´e ` ce transcodeur ? A quel rythme est-il possible e e a (souhaitable) d’envoyer les informations ? Que ce soit pour une entr´e ou une sortie. Cf. c’est-`-dire ` afficher sur l’afficheur sept sega e a a a ments. transcodeur ENTREE SORTIE Fig. On peut supposer que ces valeurs sont stock´es dans la m´moire associ´e e e e au processeur. Il est ainsi n´cessaire d’intercaler entre tout p´riph´rique e e e e et l’ensemble processeur/m´moire un circuit de commande que l’on appelle e circuit d’entr´es/sorties ou coupleur de p´riph´rique. nous commen¸ons par pr´ciser les aspects li´s ` c e e a la synchronisation des ´changes. Cette information doit alors ˆtre trait´e par l’ensemble proe e cesseur/m´moire. 16.398 Circuits d’entr´es/sorties e PROCESSEUR/MEMOIRE transcodeur . Chapitre 3). puis nous pr´sentons les aspects mat´riels de e e e connexion (quels fils et circuits faut-il ajouter et o` ?).1 – Entr´e clavier et sortie afficheur sept segments e La frappe d’une touche du clavier provoque l’envoi de signaux ` un a transcodeur qui fournit un codage de cette valeur sur 7 bits (code ASCII. Un transcodeur fabrique les signaux permettant d’allumer les bons segments de l’afficheur afin de donner la repr´sentation en hexad´cimal e e de l’entier en question. on voit qu’il y a deux aspects ` e a prendre en compte : la r´alisation de la connexion physique (mat´rielle) entre e e le p´riph´rique et l’ensemble processeur/m´moire et la gestion de la synchronie e e sation des ´changes. e e e Dans la suite du chapitre.. e .. c’est-`-dire comment utiliser e a les circuits d’entr´es/sorties depuis un programme en langage d’assemblage. Enfin nous montrons u comment programmer une entr´e ou une sortie.. Deux types de questions se posent : o` cette information e u est-elle stock´e ? Comment g´rer le flux des caract`res frapp´s ` un rythme e e e e a compl`tement libre par l’utilisateur ? e Imaginons maintenant un programme qui calcule des valeurs enti`res sur e 4 bits ` d´livrer ` l’utilisateur..

– le processeur ne peut d´cider seul des instants auxquels les ´changes see e ront effectu´s : il ne peut par exemple deviner ` quel moment l’utilisateur e a va appuyer sur une touche du clavier. prenons le cas d’une e imprimante.) atteignant la dizaine de milliers de a caract`res imprim´s ` la seconde repr´senterait d´j` une prouesse m´canique e e a e ea e alors que tous les processeurs r´cents d´passent la centaine de millions d’inse e tructions par seconde. il est possible de lisser . en effet. A titre d’illustration une imprimante ` impact (` e a a marguerite. il convient donc de tenir compte des erreurs et anomae e lies inh´rentes ` toute interaction avec l’environnement ext´rieur. e a e Nous avons vu au chapitre 15 comment g´rer les ´changes entre la m´moire e e e et le processeur.1 A quel niveau se passe la synchronisation ? Les ´changes entre l’ensemble processeur/m´moire et le monde ext´rieur e e e peuvent ˆtre d´compos´s en deux niveaux : ´changes entre processeur/m´moire e e e e e et p´riph´rique et ´changes entre le p´riph´rique et le monde ext´rieur. o e e Envisageons maintenant un cas o` la vitesse impos´e n’est pas celle d’un u e utilisateur mais celle d’un organe m´canique. les entr´es/sorties pr´sentent des particularit´s qui les e e e distinguent des acc`s m´moire : e e – la vitesse des processeurs et des m´moires ` semiconducteurs est sup´rieure e a e de plusieurs ordres de grandeur ` celle des p´riph´riques mettant en jeu des a e e dispositifs m´caniques. L`. a Dans le cas g´n´ral.2. Au mieux. Chapitre 6). c’est-`-dire de fa¸on e a a c compl`tement arbitraire et non contrˆlable. etc. Synchronisation entre le processeur et un p´riph´rique e e Les probl`mes qui se posent ici sont inh´rents ` toute communication : e e a perte d’une partie de l’information qui doit ˆtre ´chang´e . matricielle ` aiguille. 2. nous allons discuter du e niveau auquel cette synchronisation intervient. Avant d’´tudier pr´cis´ment e eae e e e e le type de protocole qu’il est n´cessaire d’appliquer. Par exemple. l’ensemble processeur/m´moire dialogue e e avec le p´riph´rique clavier mais au-del` du clavier il y a un utilisateur. r´p´tition d’une e e e e e mˆme information d´j` ´chang´e (Cf. Le syst`me informatique doit g´rer e o e e la synchronisation entre le processeur et le p´riph´rique car on ne peut rien e e contrˆler entre l’utilisateur et le p´riph´rique. Il e c a peut toutefois survenir des probl`mes ` des instants non pr´visibles comme par e a e exemple l’absence de papier : le probl`me est en g´n´ral trait´ au niveau du e e e e syst`me qui g`re une liste des fichiers en attente d’impression et qui n’envoie e e une information ` l’imprimante que si celle-ci peut la traiter. Synchronisation entre le processeur et un p´riph´rique e e 399 2. e e e e e e Lors de la lecture d’un caract`re. on connaˆ la vitesse ` laquelle l’imprimante peut afficher des a ıt a caract`res et donc assurer une synchronisation de fa¸on ` ne pas en perdre. Cet e e a utilisateur tape des caract`res ` la vitesse qui lui convient. La connexion d’organes p´riph´riques ne peut pas s’en inspirer e e directement .

2. Le procese a seur per¸oit le syst`me d’entr´es-sorties comme un ensemble d’emplacements c e e m´moire reli´s au monde ext´rieur. le e e protocole d’´change doit assurer que le processeur n’´mettra pas un nouveau e e caract`re si le pr´c´dent n’a pas encore ´t´ imprim´ et que l’imprimante n’ime e e ee e prime pas plusieurs fois le mˆme caract`re. il est mobilis´ pendant toute la dur´e du transfert.1 Connexion d’organes p´riph´riques e e Notion de coupleur Le circuit n´cessaire ` la communication s’appelle coupleur. il n’y a pas r´ellement de probl`me car la vie e tesse des processeurs est nettement sup´rieure au temps de r´action d’un e e utilisateur. La mise en oeuvre de ce protocole r´clame la gestion de signaux de synchroe nisation disant si l’information ` ´changer est parvenue ou non au r´cepteur ae e et si le r´cepteur a trait´ ou non l’information qu’il a re¸ue. e a 3. L’usage a consacr´ le terme de registres du e e e e coupleur pour ces emplacements. On parle d’attente a a active car le processeur qui ex´cute ce test ne peut rien faire d’autre pendant e ce temps-l`. Cela signifie que certaines adresses de la m´moire sont r´serv´es ` l’usage e e e a . a e e Nous verrons au chapitre 24. 3. Dans la pratique. Dans le cas d’une entr´e l’´metteur est le p´riph´rique et le r´cepteur e e e e e e est le processeur. Il faut mettre en oeuvre un protocole d’´change qui permette au r´cepteur de d´tecter l’arriv´e e e e e des informations ` consommer et assurer un contrˆle de flux. consid´rons la sortie de caract`res sur une imprimante . que d’autres solutions (utilisant la notion d’interruption) plus efficaces et plus r´alistes sont en fait mises en e oeuvre dans les syst`mes multitˆches. paragraphe 3. autrement dit a o ´viter que l’´metteur ne soumette des informations plus vite que le r´cepteur ne e e e peut les traiter ou que le r´cepteur ne traite plusieurs fois la mˆme information. e e Dans le cas g´n´ral. e e Par exemple. e e c Dans un programme d’entr´e ou de sortie la valeur de ces signaux de syne chronisation est test´e et tant que le signal attendu n’a pas la bonne valeur il e faut le tester ` nouveau jusqu’` ce qu’il devienne correct. Dans le cas d’une sortie c’est l’inverse. l’´change entre un processeur et un p´riph´rique peut e e e e e ˆtre r´gi par le protocole de dialogue dit poign´e de mains pr´sent´ au chae e e e e pitre 6.2 Synchronisation par poign´e de mains e Une entr´e (ou une sortie) met en jeu deux entit´s : un ´metteur et un e e e r´cepteur.400 Circuits d’entr´es/sorties e les probl`mes en imaginant des m´canismes de m´morisation permettant e e e d’accumuler les caract`res frapp´s au clavier en attendant que le processeur e e les traite.

Connexion d’organes p´riph´riques e e 401 l/e Acc`sMem e D´codage e d’adresses s´lection de diff´rents e e boˆ ıtiers m´moire e S´lection Coupleur e Coupleur P´riph´rique e e Processeur bus adresses bus donn´es e fils sp´cialis´s e e emplacements m´moire e dits registres du coupleur Fig. En effet. la valeur ´mise par le processeur apparaˆ e ıt fugitivement sur le bus donn´es pendant le cycle d’´criture et doit donc ˆtre e e e m´moris´e. en entr´e. 3. il peut suffire d’´chantillonner la valeur au e e e e moment de la lecture sans besoin de m´morisation. e e ee e Le montage n’est pas n´cessairement sym´trique pour les entr´es et les e e e sorties. lors d’une sortie. Nous nous pla¸ons dans ce cas de figure pour la c suite du chapitre. il est raisonnable e de faire l’hypoth`se qu’en entr´e les valeurs sont stables : le p´riph´rique est e e e e suppos´ maintenir les donn´es pendant l’intervalle de temps sp´cifi´ par le e e e e protocole de synchronisation. Pour r´aliser une sortie il faut connecter le bus de donn´es e e e au p´riph´rique via des ´l´ments de m´morisation.2 Connexion de p´riph´riques ` des ´l´ments de e e a ee m´morisation e Pour d´crire les connexions physiques des fils. nous commen¸ons par rape c peler comment une cellule m´moire est connect´e au bus donn´es. 16. Nous e e e . Chapitres 9 et 15) il faut e e qu’une connexion physique soit r´alis´e entre le p´riph´rique et le bus donn´es e e e e e via le coupleur.3. En effet.2 donne une premi`re id´e des ´l´ments intervee e ee nants dans cette mise en oeuvre. Par contre. La figure 16. Pour r´aliser une entr´e il faut que des fils provenant de l’unit´ p´riph´rique e e e e e soient connect´s au bus de donn´es via des portes trois ´tats ou des ´l´ments e e e ee de m´morisation. Les donn´es transitant par le bus donn´es (Cf. C’est le d´codage d’adresses qui prend en compte cette e e nouvelle contrainte.2 – Connexion d’un processeur et d’un p´riph´rique via un coupleur e e des entr´es/sorties.

4. Nous pouvons y observer la place e des d´codeurs. Le port d’entr´e et celui de sortie peuvent occuper la mˆme ee e e adresse. qui est une sortie pour le processeur et e e une entr´e pour l’imprimante. ou bien r´cup´rer (lire) une valeur sur des e e e interrupteurs. le caract`re. a Le montage d´crit permet la cr´ation d’une entr´e ´l´mentaire et d’une e e e ee sortie ´l´mentaire. Le montage e e e (Cf. ou des adresses diff´rentes.1 Programmation d’une sortie Interface simplifi´e e Nous traitons l’exemple de l’impression d’un texte (suite de caract`res) sur e une imprimante. le d´codeur d’adresses et le d´codeur e e e du coupleur comme un ensemble. une seule cellule m´moire est repr´sent´e . Reprenons le sch´ma 16. nous n’avons donc pas e e e tenu compte de l’adresse.4) cr´e un port d’entr´e et un port de sortie reli´s sur l’exemple e e e respectivement ` un interrupteur et une lampe.5 d´crit l’organisation d’un coupleur ` e a deux ports d’entr´e et deux ports de sortie.3 et supprimons la connexion entre la sortie Q du e verrou et la porte 3 ´tats donnant l’acc`s au fil Di du bus donn´es. Figure 16. Acc`sMem et l/e sont les signaux e de s´lection et de lecture/´criture de la m´moire. comme ici. e Le coupleur doit lui-mˆme comporter un d´codeur d’adresses. 4. un e e e monde ext´rieur tr`s simple dans lequel le processeur doit pouvoir envoyer e e (´crire) une valeur sur des lampes. Le coupleur permet de traiter trois informations : – une donn´e sur 8 bits.402 Circuits d’entr´es/sorties e e consid´rons une cellule de 1 bit (repr´sent´ par un verrou) connect´e au i`me fil e e e e du bus de donn´es Di. ` e e e a e partir de SelCoupleur. e e e Nous voulons maintenant faire communiquer l’ensemble processeur/m´moire avec le monde ext´rieur. e Dans la suite de ce chapitre. nous ne repr´senterons plus les diff´rents e e d´codeurs mais dessinerons le processeur. Consid´rons. Pour une ´criture (respectivement une lecture) sur un port de e sortie (respectivement d’entr´e). le d´codeur d’adresses re¸oit une demande e e c d’acc`s ` la m´moire (Acc`sMem=1) accompagn´e d’une adresse correspondant e a e e e a ` l’un des circuits consacr´s aux entr´es/sorties. 4. e . Sur la figure 16. e L’´criture sur un port de sortie ou la lecture sur un port d’entr´e mettent en e e jeu un m´canisme de s´lection d’adresse analogue ` celui que nous avons d´crit e e a e au chapitre 15. du signal l/e ´mis par le processeur et de l’adresse. Le sch´ma 16. Il active alors le signal de e e s´lection de ce circuit : SelCoupleur. La figure 16. Il fabrique les e e signaux de commande de chargement des bascules associ´es aux ports de sortie e et les signaux de commande des portes 3 ´tats associ´es aux ports d’entr´e. par exemple.3 montre la structure du circuit d’´change e e e d’information entre ce bit et le processeur.

s’il est ouvert il lira un 1. e +5V interrupteur Di D Q En Ecr SelCoupleur l/e Lec lampe Fig. 16. Programmation d’une sortie 403 amplificateur 3 ´tats e 1 bit de bus donn´es e Di D Q En Acc`sMem e l/e Fig. 16.3 – Echange entre le processeur et la m´moire sur un bit : lorsque le signal e e e Acc`sMem vaut 1 et le signal l/e vaut 0 la bascule m´morise la valeur pr´sente e sur le bus et lorsque Acc`sMem et l/e valent tous deux 1 la valeur m´moris´e e e e dans la bascule est pr´sente sur le bus.4 – Echange entre le processeur et l’ext´rieur sur un bit : le signal ´lectrique e e command´ par l’interrupteur apparaˆ sur le fil Di du bus donn´es lors d’un e ıt e cycle de lecture (SelCoupleur=1 et l/e=1). si cette valeur est 1 alors la lampe s’allume. e . Par ailleurs la valeur ´mise e sur le fil Di par le processeur lors d’une ´criture (SelCoupleur=1 et l/e=0) e est m´moris´e par le verrou .4. si e e c’est 0 la lampe s’´teint. Si l’interrupteur est ferm´ le e processeur lira un 0.

le d´codeur du coupleur fabrique les signaux de commande des e 2 ports de sortie EcrS0 et EcrS1 et des 2 ports d’entr´e LecE0 et LecE1.6 d´crit cette organisation mat´rielle et la figure 16. – un bool´en processeur prˆt qui signifie qu’un nouveau caract`re est dispoe e e nible et doit ˆtre imprim´.. Vus du processeur RegD est ` l’adresse RD et e a contient la donn´e. boˆ ıtiers m´moire e Fig.. En supposant e que le bit d’adresse A0 permet de faire la distinction entre les deux mots du coupleur. 16. ` e a partie des signaux SelCoupleur.7 donne les e e programmes d’initialisation du coupleur et d’impression d’un caract`re stock´ e e a ` l’adresse car.5 – Coupleur ` deux ports d’entr´es et deux ports de sortie : le d´codeur a e e d’adresses active le signal SelCoupleur lorsqu’il reconnaˆ l’adresse qui lui ıt est fournie comme une adresse du circuit d’entr´es/sorties. qui signifie que l’imprimante est prˆte ` traiter e e e a un caract`re.. ee e Le coupleur est compos´ d’un registre de donn´es RegD et d’un registre de e e commande RegC auxquels on acc`de en ´criture. RegC est ` l’adresse RC et contient un seul bit significatif : e a processeur prˆt .. l/e et A0.. Apr`s une impression il signifie que le caract`re pr´c´dent a e e e e e ´t´ imprim´. e e – un bool´en imprimante prˆte.. L’ex´cution de ces e MONDE EXTERIEUR D Q En . et d’un registre d’´tat RegE e e e auquel on acc`de en lecture.404 Circuits d’entr´es/sorties e . Ils sont ´crits en langage d’assemblage 68000 (Cf. . RegE est ` l’adresse RE et contient un seul bit significatif e a imprimante prˆte. e Posons comme convention que le signal processeur prˆt est actif lorque le e registre RegC vaut 1 et que le signal imprimante prˆte est actif lorsque le signal e RegE vaut 1. La figure 16. Chapitre 12 e pour un exemple de syntaxe de ce langage d’assemblage). PROCESSEUR Bus donn´es e Di D Q En A0 EcrS1 EcrS0 LecE1 LecE0 D´codeur du coupleur e Bus adresses Acc`sMem e D´codeur e d’adresses l/e SelCoupleur s´lection de diff´rents e e .

il faut que le processeur puisse en ˆtre inform´ . e u Nous repartons de la version de base ne traitant pas d’erreurs. le processeur peut e lui envoyer une valeur. Lors de l’initialisation. l’activation de processeur prˆt va toujours de pair avec l’´criture dans le registre de donn´es. modifi´ e e e pour prendre en compte la gestion de l’erreur. correspond ` l’´tat o` le procese a e u seur attend que le r´cepteur soit libre . Figure 16. e e ee Pour fixer les id´es nous supposons que ce signal est connect´ au bit 1 du bus e e donn´es (Cf. Le programme d’impression d’un caract`re. il risque d’´craser le cae e e e ract`re envoy´. Figure 16. e Pour g´rer le probl`me. Si le processeur n’attend pas.2 Gestion d’erreur Dans ce paragraphe nous examinons comment prendre en compte les erreurs provenant d’un p´riph´rique. La boucle d’attente sur l’´tiquette att-pret. e 4. la bascule doit ˆtre mise ` 0.8). La boucle d’attente sur l’´tiquette att-traite correspond e a ` l’intervalle de temps pendant lequel le processeur attend que le r´cepteur ait e trait´ la donn´e envoy´e. sa d´sactivation suit toujours le front descendant du signal e imprimante prˆte. e D’autre part.9. remarquons que lors d’une sortie. De plus. e e e e Il faudra ajouter un peu de mat´riel mais celui-ci n’est pas vraiment coˆteux. Programmation d’une sortie 405 programmes met en oeuvre l’algorithme de l’´metteur (voir le protocole poign´e e e de mains dans le chapitre 6).3 Interface optimis´e e Nous ´tudions dans ce paragraphe une version optimis´e du programme de e e sortie d’un caract`re sur une imprimante. pour e e e e cela le registre d’´tat RegE va ˆtre compl´t´ par un nouveau signal erreur papier. e e e hors initialisation. pour pouvoir soumettre un nouveau caract`re. Nous poursuivons avec l’exemple de l’imprimante e e en consid´rant le probl`me de l’absence de papier : l’imprimante ne doit plus e e recevoir de caract`res. lorsque c’est le cas. e 4. e Le registre de commande RegC peut ˆtre remplac´ par une bascule RS mise e e a ` un par le signal d’´criture dans le registre de donn´es et remise ` z´ro par e e a e e e a le signal imprimante prˆte. il faut ` la e a fois que l’imprimante soit prˆte (imprimante prˆte actif) et que le pr´c´dent e e e e .4. La remise ` z´ro du registre RegC correspond ` la d´sactivation e e a e a e du signal processeur pr^t. est donn´ dans la figure 16. Tout d’abord. les informations contenues dans le registre d’´tat d’un coupleur e e e permettent d’effectuer les tests li´s aux aspects de synchronisation de l’´change e e et de g´rer les diff´rents types d’erreurs li´s au fonctionnement du p´riph´rique e e e e e associ´. On va chercher ` r´duire le nombre e a e d’acc`s m´moire faits par le processeur pour r´aliser le transfert d’une donn´e. La bascule remplace le registre de commande et sa sortie se substitue au signal processeur prˆt (Cf.10). e En g´n´ral.

e e IMP-PRETE = 1 PROC-PRET = 1 NON-PROC-PRET = 0 . L’´metteur est constitu´ du processeur. e e du coupleur et des d´codeurs. 16.b IMP-PRETE.6 – Exemple de coupleur d’imprimante. RC !le processeur n’a rien ` ´mettre a e ImpCar : ! attendre que le p´riph´rique soit pr^t e e e att-pret :move.ascii ’A’ ! code du caract`re A e . D1 beq att-pret ! l’imprimante n’est pas pr^te e ! p´riph´rique pr^t : envoyer la valeur ` imprimer e e e a move. D1 andi. le r´cepteur est l’imprimante. RC rts Fig. donn´e libre e andi.b car. D1 ! D1 est un reg. S1 pour la commande) e e et un port d’entr´e pour l’´tat (E1). 16.data car : .text Init : moveq NON-PROC-PRET.b RE. RD moveq PROC-PRET.b IMP-PRETE.7 – Programme de sortie simple .b RE. D1 bne att-trt ! le p´riph´rique traite e e ! le caract`re a ´t´ imprim´ e e e e moveq NON-PROC-PRET. Cette organisae e tion n´cessite 2 ports de sortie (S0 pour les donn´es.406 Circuits d’entr´es/sorties e Processeur et d´codage e bus donn´es e D7 D0 RegD Imprimante RegC processeur prˆt e imprimante prˆte e R´cepteur e ECRS0 ´criture donn´e e e e ECRS1 ´criture commande RegE LECE1 lecture ´tat e Emetteur Fig. RC att-trt : move.

D1 bra fin pb-papier : moveq 1.9 – Programme de sortie g´rant un type d’erreur e . D1 andi.b RE.b IMP-PRETE. D1 bne pb-papier move.b ERREUR. D1 bne att-traite OK : moveq 0. D1 beq att-pret move.b RE. RC rts Fig. D1 andi.ascii ’A . PROC-PRET = 1 NON-PROC-PRET = 0 ERREUR = 2 ! bit 1 du registre RE : 21 . 16. D1 fin : moveq NON-PROC-PRET. RD moveq PROC-PRET.4.b RE. RC att-traite :move. 16. D1 bne pb-papier ! plus de papier move. D1 andi.b ERREUR.data car : . Programmation d’une sortie 407 Processeur et d´codage e bus donn´es e D7 D1 RegD Imprimante processeur prˆt e D0 e e ECRS0 ´criture donn´e RegC e ECRS1 ´criture commande RegE imprimante prˆte e erreur papier LECE1 lecture ´tat e Fig. D1 andi.b IMP-PRETE.text ImpCar : ! A la fin du traitement D1 contient 0 si tout ! s’est bien pass´ et 1 s’il y a eu une erreur e att-pret : move.8 – Coupleur d’imprimante avec gestion de l’erreur : absence de papier IMP-PRETE = 1 .b RE.b car.

408 Circuits d’entr´es/sorties e e Processeur bus donn´es RegD et d´codage e e e ECRS0 ´criture donn´e Imprimante S R Q processeur prˆt e RegE transfert possible LECE1 lecture ´tat e imprimante prˆte e Fig. clavier prˆt signifie qu’un e e e caract`re a ´t´ frapp´ sur le clavier. 5. ce qui est d´tectable par le fait que e ee e ee e processeur prˆt soit inactif. deux m´thodes pour ´liminer l’attente active sur e e att-pret ex´cut´e par le processeur. au paragraphe 6. e a e la boucle d’attente qui suit l’´mission d’un caract`re peut ˆtre supprim´e. du chapitre 24. e Remarque : Nous verrons.11 .1 Programmation d’une entr´e e Interface simplifi´e e Nous consid´rons l’exemple de la lecture d’un caract`re au clavier. Le signal processeur prˆt est e a e e e automatiquement mis ` jour par la bascule. 16. La pr´sence de la bascule RS a e remplace les acc`s au registre de commande. Si cette nouvelle double condition (transfert possible e sur la figure 16. et le bool´en e e e processeur prˆt (adresse RC) accessible en ´criture. e e Le coupleur du clavier comporte trois informations : la donn´e (adresse e RD) et le bool´en clavier prˆt (adresse RE) accessibles en lecture.10 – Exemple de coupleur d’imprimante optimis´ e caract`re ait ´t´ r´cup´r´ par l’imprimante. e La figure 16. e e e e Le processeur n’a plus alors qu’` tester transfert possible et ´crire le caa e ract`re ` transf´rer dans le registre de donn´es. processeur prˆt signifie que le processeur e ee e e .10) est test´e ` la place de la simple condition imprimante prˆte. e e 5. de ce chapitre et au paragraphe 3.10 d´crit le mat´riel n´cessaire ` cette nouvelle interface et e e e a le programme d’impression d’un caract`re sur l’imprimante dans ce nouveau e contexte est d´crit dans la figure 16.

Optimisation des entr´es/sorties group´es e e 409 TRANSFERT-POSSIBLE = 1 . Lorsque le signal clavier prˆt devient inactif. e e e e ee e ee Les figures 16. D’autre part. e Par exemple. e Cette solution n’est pas tr`s efficace car pour chaque caract`re.b RE. cette double condition constitue le nouveau bool´en : transfert possible.11 – Programme de sortie optimis´ e est prˆt ` traiter un caract`re. e 5. l’imprimante sait qu’elle ! doit prendre un caractere rts Fig. 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 prˆt ` z´ro (entr´e R de la bascule).13 d´crivent respectivement l’organisation mat´rielle e e et les programmes d’initialisation du coupleur et de lecture d’un caract`re.text ImpCar : att-pret :move. comme dans le cas de la sortie. il faut que le clavier en ait soumis un e (clavier prˆt actif) et que le processeur ne l’ait pas d´j` lu (processeur prˆt e ea e actif) . e Les figures 16.ascii ’A . e e 6. e a e e e la bascule est alors remise ` 1.b TRANSFERT-POSSIBLE. La bascule doit ˆtre initialis´e ` 1. on peut ins´rer le proe e e e gramme de sortie d’un caract`re dans une boucle de parcours du tableau.6.2 Interface optimis´e e L’id´e consiste.b car.15 d´crivent respectivement le mat´riel n´cessaire et e e e le programme optimis´ de lecture d’un carat`re au clavier. pour effectuer la sortie des ´l´ments d’un tableau de n caee ract`res (zone de m´moire de n octets cons´cutifs). 16. une attente va e e avoir lieu. D1 beq att-pret move. ` remplacer le registre de e a commande par une bascule RS (Cf. Figure 16.14 et 16. D1 andi. RD ! la bascule RS passe a 1.12 et 16. . a e e a pour pouvoir lire un nouveau caract`re. Optimisation des entr´es/sorties group´es e e Nous nous int´ressons maintenant ` une situation tr`s classique consistant e a e a ` enchaˆ ıner plusieurs entr´es/sorties.data car : .14) et ` supprimer la boucle a d’attente apr`s la r´cup´ration du caract`re lu. Apr`s une lecture ant´rieure cela signifie que le e a e e e caract`re pr´c´demment envoy´ a ´t´ r´cup´r´.

CLAVIER-PRET = 1 PROC-PRET = 1 NON-PROC-PRET = 0 .b RE.12 – Exemple de coupleur de clavier. du coupleur et des d´codeurs.b RD.b CLAVIER-PRET. Cette organisation e e n´cessite 2 ports d’entr´es (E0 pour la donn´e.13 – Programme d’entr´e simple e .b CLAVIER-PRET. D1 ! attendre le traitement andi.text Init : ! le processeur est pr^t ` recevoir e a moveq PROC-PRET. RC att-traite :move. RC rts Fig. D1 beq att-clavier ! le clavier n’a rien envoy´ e ! le p´riph´rique est pr^t : r´cup´rer le caract`re e e e e e e move. car moveq NON-PROC-PRET. L’´metteur est le clavier. E1 pour l’´tat) et un port e e e e de sortie pour la commande (S1).byte 0 . 16. D1 bne att-traite ! le caractere a ´t´ lu e e moveq PROC-PRET.410 Circuits d’entr´es/sorties e Processeur et d´codage e LECE0 bus donn´es e lecture donn´e e RegD Clavier RegC processeur prˆt e clavier prˆt e e ECRS1 ´criture commande RegE LECE1 lecture ´tat e Emetteur R´cepteur e Fig.b RE. 16. D1 ! attendre p´riph´rique pr^t m e e e andi. RC LireCar : att-clavier :ove. le r´cepteur est e e constitu´ du processeur.data ! un octet initialis´ ` 0 pour stocker le caract`re lu e a e car : .

b TRANSFERT-POSSIBLE. 16.b RD. D1 m andi.14 – Exemple de coupleur de clavier optimis´ e TRANSFERT-POSSIBLE = 1 .6.byte 0 .text LireCar : att-clavier :ove. D1 beq att-clavier move.15 – Programme d’entr´e optimis´ e e . 16.data car : . car rts Fig. Optimisation des entr´es/sorties group´es e e 411 Processeur et d´codage e ECRS0 bus donn´es e lecture donn´e e RegD Clavier R processeur prˆt e S clavier prˆt e RegE LECE1 lecture ´tat e transfert possible Fig.b RE.

La gestion e e e du bus adresses demande deux signaux de dialogue entre le processeur et le CDMA : une demande de lib´ration du bus ´mise par le CDMA (demande bus) e e et l’autorisation correspondante ´mise par le processeur (lib`re bus). on utilise un bool´en e e autorisation requˆte dma dans le registre de commande du coupleur. puis nous d´crivons le o e a e e d´roulement d’une sortie. De plus. Ce bool´en e e est mis ` jour par le processeur lorsqu’il initie un transfert. temporairement d´connect´ du bus (Cf. De fa¸on plus pr´cise. un circuit d’entr´es/sorties e e e et un contrˆleur d’acc`s direct ` la m´moire . e Il faut g´rer l’acc`s ` la m´moire (adresses. signaux d’acc`s e e a e e e m´moire et lecture/´criture) ` la fois par le processeur et par le contrˆleur e e a o d’acc`s direct ` la m´moire (CDMA). un d´cr´menteur et quelques bascules pour l’automate de come e e mande.16 d´crit l’organisation du dispositif.412 Circuits d’entr´es/sorties e Il est possible de d´charger le processeur d’une partie de ce travail en ajoue tant un circuit qui s’en chargera. Enfin nous ´voquons l’´volution des syst`mes e e e e d’entr´es/sorties. e 6. elle lib`re le processeur pendant l’attente de e e la disponibilit´ du p´riph´rique. Cette information est mat´rialis´e par e e e e le signal requˆte transfert qui est un et logique entre tranfert possible (Cf. e e Le processeur doit pouvoir autoriser ou non le coupleur ` ´mettre des a e requˆtes de transfert en direction du CDMA. le CDMA e c e . Pour cela.3 et figure 16. de la m´moire. le temps qu’il utilisait pr´c´demment ` ex´cuter une attente e e a e active. Pae ragraphe 4. Paragraphe 1. Cette technique est appel´e acc`s direct ` la m´moire (en anglais Direct e e a e Memory Access.10) et autorisation requˆte dma. Le circuit effectuant les entr´es/sorties est e un automate cˆbl´ dont la r´alisation est peu coˆteuse : un registre contea e e u nant une adresse. le processeur peut r´cup´rer. Le principe est de connecter alternae a e tivement les bus au processeur et au CDMA. pour effece e e e e tuer des calculs. e Le CDMA doit pouvoir acc´der directement ` la donn´e du coupleur sans e a e passer par le d´codage d’adresses standard.3 e e du chapitre 15 pour la r´alisation mat´rielle de cette d´connexion). l’interface acc´dant directement ` la m´moire. Le CDMA acc`de ` la m´moire en la pilotant directement ` la e e a e a place du processeur. a Le coupleur doit pouvoir signaler au CDMA qu’il faut faire un transfert lorsque le p´riph´rique est disponible. un registre contenant le nombre d’´l´ments ` transf´rer. nous pr´sentons les aspects d’organisation mat´rielle d’un e e syst`me comportant un processeur. La r´alisation de l’acc`s direct ` la m´moire par un contrˆleur ind´pendant e e a e o e du processeur pose un certain nombre de probl`mes que nous examinons cie dessous. La figure 16. un ee a e incr´menteur. via des amplificateurs ` sortie a trois ´tats. DMA). e a e Dans la suite. Ainsi.1 Acc`s direct ` la m´moire et partage de bus e a e Cette technique permet de r´aliser par mat´riel le transfert impliqu´ par e e e une entr´e ou une sortie. donn´es.

Le bus e e e d’adresses est une sortie pour les deux maˆ ıtres : le processeur et le CDMA . m´moire et dispositif de d´codage d’adresse o e e qui s´lectionne les boˆ e ıtiers.16 – Acc`s ` la m´moire avec DMA : on observe les 5 composants : processeur. e e soit par le CDMA. Via e a e deux amplificateurs 3 ´tats. il sert alors ` s´lectionner le registre du coupleur ou le mot m´moire. e a e contrˆleur de DMA. 16. a e e . Le bus d’adresses est une entr´e pour le CDMA. Le CDMA comporte des registres d´crivant la e zone de m´moire ` transf´rer (adresse et taille) et un registre index (i). le e coupleur et la m´moire : il sert ` s´lectionner le registre du CDMA ou du e a e coupleur ou le mot m´moire lors d’un acc`s initi´ par le processeur. Optimisation des entr´es/sorties group´es e e 413 CDMA requˆte transfert e acq transfert adresse taille i demande bus COUPLEUR transfert possible autorisation requˆte dma e ECRS0 ´criture donn´e e e RegD s´lection e coupleur s´lection e CDMA D´codeur d’adresse e Adresses s´lection e m´moire e PROCESSEUR lib`re bus e Donn´es e MEMOIRE Fig.6. coupleur. le bus d’adresses est pilot´ soit par le processeur.

selon des strat´gies d’allocation ´labor´es telles que des priorit´s fixes ou tournantes. Nous consid´rons l’exemple de la sortie d’un tableau tab e de n octets : 1. Le CDMA ´met l’adresse de l’octet courant. acc`de ` la m´moire en e e a e lecture et active simultan´ment acq transfert pour ´crire la donn´e dans e e e le coupleur. et par le CDMA pene dant l’autre demi-p´riode). Le processeur termine l’´ventuel acc`s m´moire en cours et active lib`re e e e e bus pour indiquer que le bus est libre.414 Circuits d’entr´es/sorties e soit pouvoir s´lectionner simultan´ment la m´moire en lecture et le coupleur e e e en ´criture. Le processeur est alors d´connect´ e e du bus. e a e Le processeur se connecte ` nouveau au bus en d´sactivant lib`re bus et a e e poursuit son travail jusqu’au prochain transfert de caract`re. 5. Pendant ce temps. e 8. 7. Le processeur vaque ` d’autres occupations. Ceci provoque l’initialisation du registre i (compteur d’octets transf´r´s) du CDMA. a e e 6. Le p´riph´rique re¸oit le caract`re ` traiter et d´sactive requˆte transfert. e La politique de partage des bus m´moire peut ˆtre plus ou moins sophise e tiqu´e. ee 2. e e Les bus peuvent ˆtre partag´s entre un nombre quelconque de maˆ e e ıtres. e e e e L’attribution des bus est alors g´r´e par un circuit d’arbitrage. trop sophistiqu´ ee e pour ˆtre d´taill´ dans cet ouvrage. e e a 3.10). e Remarque : Dans le cas d’une entr´e. l’ex´cution de l’instruction courante par e le processeur peut se poursuivre jusqu’` ce qu’un acc`s m´moire soit a e e n´cessaire. Ceci suppose l’ajout d’un signal acq transfert. e e c e a e e Le CDMA d´sactive ` son tour demande bus et incr´mente le registre i.2 D´roulement d’une sortie avec acc`s direct e e ` la m´moire a e Nous pouvons maintenant d´crire plus pr´cis´ment le d´roulement d’une e e e e sortie avec CDMA. La s´lection effective e e du registre de donn´es du coupleur est alors le ou logique entre acq transfert et e le signal de s´lection normal (ECRS0 sur la figure 16. 6. le CDMA acc`dera simultan´ment e e e au coupleur en lecture et ` la m´moire en ´criture. Lorsque le p´riph´rique a termin´ le travail qu’il effectuait e e e pr´c´demment. Elle peut ˆtre confi´e ` un maˆ privil´gi´ (tel e e e a ıtre e e que le processeur). Le CDMA active le signal demande bus. Elle peut ˆtre rudimentaire et pr´-´tablie (par exemple acc`s par le e e ee e processeur durant la demi-p´riode haute d’une horloge. il devient prˆt et le coupleur active le signal requˆte e e e e transfert. qui d´cide seul des instants auxquels il va c´der les bus. e e e . Le processeur autorise le coupleur ` ´mettre une requˆte lorsqu’il est a e e prˆt : il ´crit dans le registre de commande du coupleur pour mettre le e e bool´en autorisation requˆte dma ` vrai. a 4. Le processeur ´crit l’adresse tab et la taille n du tableau ` transf´rer dans e a e les registres adresse et taille du CDMA.

la plupart des terminaux graphiques sont des p´riph´riques e e dits intelligents qui sont dot´s d’une certaine puissance de traitement. a e Actuellement. On obtient e alors un multiprocesseur ` m´moire commune. ils sont repr´sent´s par certains bits des e e e e e e registres du coupleur. en g´n´ral. et d’entrelacer des entr´es et sorties avec plusieurs e p´riph´riques d’autre part. On peut disposer de (co)processeurs d’entr´es/sorties d´di´s e e e chacun ` un type de p´riph´rique (processeur graphique. La suite d’ordres d’entr´es/sorties que le canal lit e e e en m´moire et ex´cute est quelquefois appel´e programme canal.). Etudier les types de probl`mes g´r´s par le circuit.1 : Circuit d’entr´es/sorties e R´cup´rer la documentation d’un circuit d’entr´es/sorties (par exemple RS232. A partir de l`.3 Canaux et processeurs d’entr´es/sorties e L’´tape suivante est celle du canal d’entr´es/sorties qui s’est surtout e e d´velopp´ dans les grands syst`mes de gestion transactionnelle connect´s ` e e e e a de nombreux disques et terminaux. o . l’´volution du syst`me d’entr´es/sorties peut emprunter plua e e e sieurs directions.7. etc. 7. Rep´rer les registres du coupleur. e E16. Retrouver l’implantation des signaux e ´voqu´s dans ce chapitre . Exercices 415 6. Exercices E16. Ecrire e ee les programmes d’entr´es/sorties. Citons ` titre d’exemple e e a le processeur 8089 dans la famille 8086 d’intel. On peut choisir de dupliquer le processeur de calcul. p´riph´rique et sens du transfert) sont stock´s en m´moire par e e e e le processeur d’une part. Il s’agit d’une unit´ d’acc`s direct ` la m´moire capable d’enchaˆ e e a e ıner automatiquement des transferts de blocs dont les param`tres (adresse et taille e du tableau. Cette exe tension du canal aboutit ` la notion de processeur d’entr´es/sorties dot´ de a e e tout un jeu d’instructions de comparaison et de branchement en plus des instructions d’entr´e et de sortie de blocs de caract`res.2 : Contrˆleur d’acc`s direct ` la m´moire o e a e Etudier la structure interne d’un circuit contrˆleur de DMA. e e e PIA). en pare ticulier pour les traitements graphiques. e e e Le canal peut ˆtre muni de la possibilit´ d’effectuer des it´rations et d’efe e e fectuer ou non certaines entr´es/sorties selon certaines conditions. processeur de signaux a e e sonores. l’un des deux processeurs se substituant au processeur d’entr´es/sorties.

416 Circuits d’entr´es/sorties e .

un pilote de p´riph´rique e e e de type bloc : le disque (paragraphe 3. D’autre part. On peut avoir recours ` des pilotes de p´riph´riques virtuels.). nous montrons par l’exemple comment d´finir une couche e pilote de p´riph´rique. L’int´rˆt d’une couche interm´diaire entre la programmation de tr`s bas ee e e niveau des entr´es/sorties d´crite au chapitre 16. repose essentiellement sur deux aspects. Le paragraphe 4. e e – Une partie haute utilisant les primitives de la pr´c´dente pour offrir des e e services de plus haut niveau s´mantique. Chapitre 20). Le pilote d’´cran virtuel se contentera de retransmettre les requˆtes ` e e a l’ordinateur distant o` elles seront trait´es par le pilote de clavier et d’´cran u e e local. dans un syst`me simple. conduit ` en faire abstraction pour d´finir une a e interface normalis´e. et les couches sup´rieures du e e e syst`me. Le principe est le mˆme avec les syst`mes de fenˆtrage. appel´es e e e e e pilotes de p´riph´riques. e e e Apr`s avoir pr´sent´ la structure d’un pilote de p´riph´rique (parae e e e e graphe 1. Chae pitre 19). Les fonctions introduites dans le pilote de disque sont r´utilis´es au chapitre 19. C’est l’objet de ce chapitre. via ea le r´seau. par exemple les disques. ´voque e e e .Chapitre 17 Pilotes de p´riph´riques e e En introduction de la partie V nous avons structur´ le syst`me d’exploitae e tion en 2 parties : – Une partie basse fortement d´pendante des caract´ristiques du mat´riel et e e e fournissant des fonctionnalit´s tr`s proches de celui-ci mais sous une forme e e normalis´e. sur laquelle s’appuient les programmes du syst`me de e e gestion de fichiers.). l’utilisateur dialogue avec les applie cations via le clavier et l’´cran physique de l’ordinateur. Nous ´tudions en d´tail un pilote de p´riph´rique e e e e e e de type caract`re : le clavier (paragraphe 2. ou le chargeur/lanceur (Cf. Il s’agit des biblioth`ques de gestion des p´riph´riques.) . Il est commode de e donner aux applications l’illusion qu’il en est encore de mˆme lorsque l’utie lisateur est par exemple connect´ ` distance depuis un autre ordinateur. e La diversit´ des caract´ristiques physiques des p´riph´riques de mˆme nae e e e e ture. qui e a e e simulent l’existence d’un p´riph´rique fictif du type escompt´ par les applicae e e tions. en l’occurrence le SGF (Cf.

Des p´riph´riques de mˆme nature peuvent avoir des caract´ristiques e e e e suffisamment diff´rentes pour ˆtre consid´r´s comme des types diff´rents et e e ee e g´r´s par des pilotes distincts. ou lors de la r´initialisation du syst`me. Les exemplaires e de disques de mˆme type peuvent par exemple diff´rer par leur taille (2. On pourra par exemple trouver un pilote de ee disques ` la norme de raccordement ide et un pilote de disques de type scsi. Les structures e de donn´es d´crivent les caract´ristiques du p´riph´rique et de son coupleur. e e – Une proc´dure d’initialisation utilis´e lors du d´marrage.418 Pilotes de p´riph´riques e e la complexit´ des p´riph´riques actuels. L’interface comporte en g´n´ral les e e e fonctions suivantes : – Une proc´dure de lecture et/ou d’´criture. Dans ce cas ee e ee e la structure de donn´es du pilote devient un tableau ` autant d’entr´es que e a e d’unit´s connectables ` l’ordinateur. par exemple. selon la nature du p´riph´rique.1 Structure d’un pilote de p´riph´rique e e Interface d’un pilote Un pilote est constitu´ de structures de donn´es et d’un ensemble de e e proc´dures ou fonctions qui sont autant de services utilisables par le syst`me e e d’exploitation ou ´ventuellement les programmes d’application. ˆtre identifi´ par son num´ro de e e e e e type et son num´ro d’exemplaire. appel´s num´ros de p´riph´riques respectivee e e e e ment majeur et mineur dans la terminologie du syst`me unix. a . indic´e d’une part par le type de p´riph´rique a e e e et d’autre part par la fonction demand´e. e e e e e son ´tat et les variables internes du pilote. suite ` la mise e e e a sous tension. appel´es respectivement e e avant et apr`s une suite d’acc`s en lecture ou en ´criture. e e e – un ensemble de routines particuli`res appel´es traitants d’interruption que e e nous ´tudions aux chapitres 22 et 24. Par exemple. – Des proc´dures dites d’ouverture et de fermeture. e 1.4 ou e e 9 Go). e e – Une fonction de contrˆle permettant de consulter ou de modifier les pao ram`tres de fonctionnement du pilote et du p´riph´rique. e e e rep´r´s par un num´ro d’exemplaire et g´r´s par le mˆme pilote. et d´crit bri`vement un pilote e e e e e d’´cran graphique. e Il peut exister plusieurs exemplaires d’un mˆme type de p´riph´rique. e e e on ouvre un fichier avant d’en lire ou d’en modifier le contenu . on doit d´marrer et arrˆter le moteur du lecteur de disquette. 1. e e e e d’une suite d’octets. e 1.2 Identification des p´riph´riques et de leur pilote e e Les adresses des routines des pilotes sont regroup´es dans une table de e branchement ` deux dimensions. e a Chaque p´riph´rique peut.

1. e e e c Chaque touche est rep´r´e par un num´ro indiquant sa position physique ee e dans le clavier.2. Pilote pour un clavier Le clavier est un p´riph´rique de dialogue. contrˆle. Chaque e e touche ordinaire est plac´e ` l’intersection d’une ligne et d’une colonne de la e a matrice. Pour tester l’´tat d’une touche.1. e Nous consid´rons ` titre d’exemple un clavier de 64 touches ordinaires plus e a une touche de majuscule. le 0 apparaˆ e ıtra sur sa colonne. Pilote pour un clavier 419 2. e e 2. Le clavier de notre exemple poss`de 128 touches virtuelles : 64 e e touches × 2 ´tats possibles de la touche majuscule. e a e A chaque touche physique ordinaire correspondent autant de touches virtuelles que de combinaisons possibles d’´tat des modificateurs au moment o` la touche e u est enfonc´e. Chaque touche peut avoir plusieurs sens selon l’´tat de die verses touches modificatrices (majuscule. e 2.2 Interface du clavier physique Nous supposons que la lecture du coupleur de clavier retourne une structure form´e des champs suivants : un bool´en de pr´sence indiquant si une touche e e e est enfonc´e au moment de la lecture.1. 2. un entier donnant la position physique de la touche enfonc´e. Zak80] a ea pour une pr´sentation plus d´taill´e des techniques d’interfa¸age des claviers. Chaque touche est un bouton poussoir e e a dont le contact est ferm´ lorsque la touche est appuy´e et ouvert lorsque la e e touche est relˆch´e. e Il est souvent commode de consid´rer la juxtaposition de la position de la e touche et de l’´tat des modificateurs comme un num´ro de touche global dans e e un clavier virtuel dont chaque touche ne serait associ´e qu’` un seul caract`re. a e Nous supposons pour simplifer l’expos´ que le contact est exempt de rebond e a ` l’ouverture et ` la fermeture. il suffit d’envoyer un 0 sur sa ligne : e si la touche est appuy´e. etc) au moment o` elle est o u enfonc´e.3 Vision interne En pratique. Le lecteur est invit´ ` consulter [AL78. Les ´changes entre le clavier et e e e l’ordinateur sont typiquement caract`res par caract`res.1 Description d’un clavier et de son coupleur Vision externe Un clavier est un ensemble de touches munies de cabochons indiquant la fonction (caract`re) associ´e ` la touche. Le coupleur devient .1 2. les claviers sont organis´s sous forme matricielle pour obtee nir une r´alisation plus ´conomique et plus compacte (moins de fils). un ou plusieurs bool´ens indiquant l’´tat e e e des touches modificatrices.

pour fixer les id´es. AZERTY (version francis´e).420 Pilotes de p´riph´riques e e TOUCHEPRESENTE : l’entier 0x80 { Bit 7 du coupleur } BITSTOUCHE : l’entier 0x7F { pour r´cup´rer le num´ro de la touche } e e e ADRCLAVIER : l’entier . e a e A titre d’exemple.1). retourne un e entier ≥ 0 dans le cas contraire. e e e Dans la suite.. { adresse du coupleur clavier } ToucheAppuy´e : −→ un entier e { Retourne un entier < 0 si aucune touche n’est enfonc´e . nous consid´rons que la lecture du coue e pleur de clavier retourne la position de la touche sur les bits 0 ` 5 du bus de a donn´es. les types de clavier alphanum´riques sont souvent d´finis e e par les six premiers caract`res de la deuxi`me rang´e : QWERTY (version e e e anglo-saxonne).2 2.1 Fonctionnalit´s du pilote de clavier e Traduction des positions en codes ASCII Le pilote de clavier pourrait se limiter ` une simple fonction retournant le a code lu sur le coupleur. les applications a ne s’int´ressent g´n´ralement pas ` la position physique de la touche.. Nous d´finissons ainsi la fonction ToucheAppuy´e qui donne le num´ro de e e e touche appuy´e par l’utilisateur (Figure 17. Or la disposition des caract`res sur les touches e e e d´pend de la langue ` laquelle le clavier est destin´. 17. Attendre l’enfoncement d’une e touche t s’´crira : e r´p´ter t ←− ToucheAppuy´e() jusqu’` t ≥ 0 e e e a De mˆme. Toutefois. attendre le relˆchement de la touche t s’´crira : e a e r´p´ter tt ←− ToucheAppuy´e() jusqu’` tt = t e e e a 2. etc. l’´tat de la touche majuscule sur le bit 6 et la pr´sence d’une touche. ` l’exception de certains jeux. mais au e e e a caract`re qui lui est associ´.2. et c’est le code ´mis par la lecture du e coupleur de clavier } c.1 – Fonction de d´tection de touche appuy´e e e alors un petit circuit s´quentiel qui balaie les lignes ` tour de rˆle et m´morise e a o e la premi`re touche appuy´e rencontr´e. e e e en bit 7. e Une premi`re fonction du pilote est donc de convertir le num´ro de touche e e . t : des caract`res e c ←− 1 Mem [ADRCLAVIER] t affect c ET BITSTOUCHE { ET bit ` bit pour masquage } a si c ET TOUCHEPRESENTE = 0 { aucune touche appuy´e } e t ←− -1 ToucheAppuy´e : t e Fig.

e e mais des lignes. que l’on peut par exemple d´crire par un tableau (indic´ par le num´ro global de touche) : e e e NumVersAscii : un entier −→ un caract`re e { t ´tant le num´ro rendu par la lecture du coupleur de clavier. Ce mode de fonctionnement est adapt´ aux e applications interactives telles que les ´diteurs de texte. Sans cette pr´caution. e e e Le pilote peut ´ventuellement offrir une fonction de r´p´tition automatique. NumVersAscii (t) est le caract`re e associ´ ` t } ea La correspondance n’est pas biunivoque : certaines touches retournent le mˆme caract`re quels que soient les modificateurs. Chaque frappe correspond pourtant e a ` deux ´v´nements physiques : l’appui d’une touche et son relˆchement. e e a Le pilote peut se contenter de lire les n caract`res et de les passer ` l’applie a cation sans traitement particulier.2. Pilote pour un clavier 421 en code ASCII en fonction de la topologie du clavier. Toutefois de nombreuses applications ne lisent pas des caract`res isol´s. les param`tres pass´s par l’application ´tant le nombre n e e e e de caract`res attendus et l’adresse t du tableau de caract`res ` remplir. Notre ea a a ee e pilote simplif´ ne g`re pas cette fonctionnalit´. Chapitre 20). a e e Chaque accroissement de ce d´lai d’un temps ´gal ` la p´riode de r´p´tition e e a e e e est assimil´ ` un relˆchement et donne lieu ` la r´´mission du caract`re.2. comme par exemple la barre e e d’espace. e e e 2.2. e 2. Une ligne est une suite de caract`res termin´e par un caract`re e e e de fin de ligne.2 Probl`mes d’´chantillonnage e e Les applications souhaitent g´n´ralement r´cup´rer un (et un seul) exeme e e e plaire du caract`re par frappe de touche. la touche de retour/fin de ligne ou la touche de suppression de caract`re. accompagn´ de l’ine e e formation concernant la touche modificatrice. e e a La proc´dure d’acquisition d’un caract`re ne peut donc se limiter ` la seule e e a d´tection d’une touche enfonc´e.3 Mode interactif et mode ligne La primitive de base offerte par le pilote est la lecture au clavier d’une suite de caract`res. Il est mˆme e e impos´ par certains syst`mes de gestion transactionnelle dot´s de nombreux e e e . qui g`rent elles-mˆmes e e e la mise ` jour de l’´cran et r´agissent ` chaque frappe de caract`re (n ´tant a e e a e e le plus souvent ´gal ` 1). Elle doit ´galement attendre le relˆchement de e e e a la touche : le relˆchement est le seul ´v´nement permettant d’´chantillonner a e e e correctement une suite de caract`res identiques. une e e touche pourrait ˆtre ´chantillonn´e plusieurs fois par frappe. Nous dirons dans ce cas que le pilote fonctionne en e a mode interactif. e e e Le principe consiste ` mesurer le d´lai durant lequel la touche reste enfonc´e. Le mode ligne est par exemple bien adapt´ au fonctionnement e d’un interpr`te de commande textuel simple (Cf.

La routine de lecture retourne un r´sultat lorsque le tampon e contient un caract`re de fin de ligne. l’utilisateur peut effectuer e diverses corrections.422 Pilotes de p´riph´riques e e terminaux distants. les caract`res saisis sont affich´s en ´cho ` l’´cran et d´pos´s dans un e e e a e e e tampon de ligne. ou ˆtre vide. Dans ce contexte. Durant la saisie.3 Programmation du pilote de clavier Le fonctionnement de notre pilote est r´gi par deux variables bool´ennes : e e mode ligne ou interactif. e Le param`tre n est g´n´ralement ´gal ` la taille maximale de la ligne. L’´cho ignore les caract`res refus´s et e e e e e les remplace par le pseudo-caract`re ”sonnerie” que le pilote d’´cran traduit en e e un signal sonore ou en un bref clignotement de l’´cran pour avertir l’utilisateur e du probl`me. La saisie et l’´dition des lignes sont alors a e g´r´es en local par le terminal qui ne s’adresse au syst`me central que lorsqu’il ee e dispose d’une ligne compl`te. de l’ordre de la centaine de caract`res. a Le param`tre n permet de limiter le nombre de caract`res transf´r´s par e e ee appel du pilote. 2. la ligne en cours de saisie apparaˆ ` l’´cran. e Il existe une taille de ligne maximale. Si n< .4 Mode avec ou sans echo Par d´faut. ce qui e e e e a garantit aux applications de lire une ligne compl`te ` chaque appel du pilote. Pendant l’acquisition d’une e ligne. Si n ≥ . e L’application ne connaˆ g´n´ralement pas ` l’avance la longueur de la ligne ıt e e a qui est retourn´e par la routine de lecture du pilote. L’exemple typique de cette situation est la saisie d’un e mot de passe. telles que supprimer le dernier caract`re de la ligne en e appuyant sur la touche d’effacement. jusqu’` ce que ce dernier contienne une fin de ligne. Lors de l’appel de la routine de lecture du pilote. la ligne est transf´r´e en entier et le tampon de ligne ee est vid´. et mode avec ou sans ´cho ` l’´cran. le pilote attend les caract`res saisis par l’utilisateur et les e recopie dans le tampon. seuls les n premiers caract`res de la ligne sont consomm´s et e e e retir´s du tampon de ligne. ce qui permet ` e ıt a e a l’utilisateur de d´tecter et de corriger d’´ventuelles fautes de frappe.2. e Lorsque le tampon de ligne ne contient plus qu’une case libre. Le reste de la ligne sera consomm´ lors d’appels e e ult´rieurs du pilote. e a e . le pilote refuse tous les caract`res except´ la fin de ligne. ıne e e e Dans ce dernier cas. il est important de minimiser le traffic sur les lignes entre les terminaux et l’ordinateur central ainsi que de d´charger e ce dernier des tˆches subalternes. e a 2. Il existe e e cependant des cas de figures justifiant la saisie d’une ligne sans ´cho ` l’´cran e a e pour ´viter qu’une personne indiscr`te ou ind´licate ne lise la saisie par dessus e e e l’´paule de l’utilisateur. Ceci revient ` int´grer une partie du pilote dans e a e le mat´riel du terminal. le tampon de ligne peut contenir une chaˆ de caract`res termin´e par une fin de ligne.

MaxLigne − 1 { pointeur } { Initialisation du pilote de clavier } InitClavier : une action ModeLigne ←− vrai ModeEcho ←− vrai tailleligne ←− 0 Fig. utilisent un plateau circulaire . Outre les variables e globales du pilote.1 Types de supports magn´tiques e Les p´riph´riques de stockage magn´tique utilisent un support dont la sure e e face est enduite d’une fine pellicule de mat´riau magn´tisable.. On pourrait ´galement pr´voir la possibilit´ d’acc´der au tableau de core e e e respondance entre num´ro de touche et code ASCII du caract`re associ´.3. 17. la fonction de lecture d’une ligne fait appel ` l’´criture d’un a e caract`re ` l’´cran lorsqu’elle doit appliquer l’´cho. Pilote pour un disque 423 { Donn´es du pilote } e ModeLigne : un bool´en e ModeEcho : un bool´en e MaxLigne : un entier > 0 Ligne : un tableau sur 0. Pilote pour un disque Un disque est un p´riph´rique de stockage de type bloc. c’est-`-dire que les e e a ´changes se font par ensembles de plusieurs octets : les secteurs. a e e L’information est transf´r´e en s´rie.MaxLigne − 1 de caract`res { le tampon } e tailleligne : un entier ≥ 0 DebLigne : un entier sur 0.2 – Programmation du pilote de clavier .2. e 3. e e Les disques durs.. comme leur nom l’indique. pendant que la piste ee e e d´file ` vitesse constante sous la tˆte. bit apr`s bit.4. par exemple pour r´affecter des e touches de fonctions qui n’ont pas de signification pr´d´finie ` des caract`res e e a e accentu´s manquant sur le clavier. Elle est repr´sent´e sur le support par une e a e e e succession d’inversions de polarit´ du champ magn´tique.Variables et initialisation La fonction de contrˆle du pilote permet de fixer le mode de fonctionnement o et de consulter la taille maximale de ligne. e Les programmes sont donn´s Figures 17. qui d´file sous e e e un ´lectroaimant : la tˆte de lecture/´criture. que l’´lectroaimant e e e d´tecte (lecture) ou impose (´criture). 17. e a e e 3. La trajectoire de cette tˆte par e e e e rapport ` la surface du support est appel´e piste magn´tique. pour e e e changer la signification de certaines touches .3 et 17.

MODEECHO.3 – Programmation du pilote de clavier . } e lexique code : un CompteRendu ContrˆleClavier (f. soit une valeur demand´e e e lorsqu’on l’utilise pour interroger les donn´es internes du pilote. e qui est soit un code d’erreur (valeur n´gative). 17. Elle fournit un compte-rendu. a) permet de fixer des param`tres du pilote ou de les o e interroger.Modification et consultation de l’´tat e du pilote de clavier : ´criture ` l’´cran. selon la valeur du param`tre 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 : l’action (la donn´e : un caract`re) e e { affichage ` l’´cran. un Auxiliaire −→ un CompteRendu o { ContrˆleClavier (f. e a e .424 Pilotes de p´riph´riques e e { Quelques types et constantes } Fonction : le type (MODELIGNE. ` la position courante du curseur. du caract`re donn´ en a e a e e param`tre } e Fig. TAILLEMAX) Auxiliaire : le type entier CompteRendu : le type entier FONCTION INCONNUE : le CompteRendu -1 PARAM INCORRECT : le CompteRendu -2 OK : le CompteRendu 0 ContrˆleClavier : une Fonction.

MaxCar) i parcourant 0 . e ıne e le r´sultat NbCar : un entier) e { MaxCar est le nombre de caract`res ` lire. Pilote pour un disque 425 LectureClavier : une action ( la donn´e MaxCar : un entier > 0.. Chaˆ est le tableau ` remplir et e a ıne a NbCar est le nombre de caract`res effectivement lus } e lexique : c : un caract`re .Saisie d’une ligne } DebLigne ←− 0 .MaxCar-1] de caract`res. tt : des entiers . } a e NbCar ←− Min (TailleLigne. } o e si tailleligne >0 tailleligne ←− tailleligne − 1 . Termin´ ←− faux e tantque non Termin´ e r´p´ter t ←− ToucheAppuy´e() jusqu’` t ≥ 0 e e e a selon t : t = EFFACEMENT { ˆter le dernier caract`re du tampon. e le r´sultat Chaˆ : un tableau sur [0. NbCar ←− NbCar . t. tampon vide . NbCar ←− NbCar + 1 r´p´ter tt ←− ToucheAppuy´e() jusqu’` tt = t e e e a Fig.3. NbCar − 1 : Chaˆ ıne[i] ←− Ligne[DebLigne+i] { le reste sera consomm´ lors du prochain appel } e DebLigne ←− DebLigne + 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 fin de ligne } si tailleligne ≥ MaxLigne − 1 alors EcrireEcran (SONNERIE) sinon si ModeEcho alors EcrireEcran (NumVersAscii(t)) Ligne[tailleligne] ←− NumVersAscii(t) tailleligne ←− tailleligne + 1 . termine : un bool´en e e algorithme si n ≤ 0 alors NbCar ←− −1 sinon si non ModeLigne { Lecture des MaxCar caract`res demand´s } e e i parcourant 0. s’il existe.4 – Programmation du pilote de clavier . 17. on consomme la ligne ` partir du d´but. TailleLigne ←− TailleLigne − NbCar sinon { tailleligne = 0.Fonction de lecture d’une ligne .MaxCar − 1 r´p´ter t ←− ToucheAppuy´e() jusqu’` t ≥ 0 e e e a c ←− NumVersAscii (t) { Conversion en caract`re } e si ModeEcho alors EcrireEcran (c) r´p´ter tt ←− ToucheAppuy´e() jusqu’` tt = t e e e a sinon { Mode ligne } si tailleligne = 0 { tampon non vide.

La modification d’un octet d’un secteur directement sur le disque n’´tant e pas r´aliste.1% repr´sente 10 bits. e e e 3. Ceci signifie que la fr´quence de transfert des informations e a ` la tˆte de lecture/´criture est constante et que la densit´ d’enregistrement e e e .2. les tˆtes e a e e e sont ´cart´es du support et la rotation de ce dernier est stopp´e. soit 1. L’acc`s individuel aux octets sur le disque consommerait trop de place e pour les intervalles de s´paration. l’´cart ´tant encore e e e plus important en ce qui concerne la capacit´. les tˆtes ne sont plaqu´es sur la surface du m´dia magn´tique que e e e e durant les acc`s ` la disquette.2. Les donn´es stock´es le long d’une piste sont s´par´es par des intervalles e e e e permettant d’absorber les petites fluctuations de vitesse de rotation.2 Description d’un disque dur Un disque dur comporte des pistes circulaires et concentriques. Les intervalles entre 2 octets pour e absorber une telle fluctuation repr´senteraient d´j` plus de la moiti´ de la e ea e longueur des pistes. Pour ´viter une usure e inutile.2 Nombre de secteurs par piste Nous supposons pour simplifier l’expos´ que le nombre de secteurs par e piste est constant. et le e e secteur est r´´crit sur le disque. e 3. l’octet est modifi´ dans la copie du secteur en m´moire. Consid´rons ` titre d’illustration une tr`s e e a e faible variation de vitesse de rotation (0. il existe ´galement e e e des formats de disquettes avec des secteurs de 128 octets.1%) et de tr`s courte dur´e (1% de la e e dur´e d’un tour) du disque de 18 Go dont les caract´ristiques sont d´taill´es au e e e e paragraphe 3. Les disquettes sont un support mince et souple. les donn´es sont lues et ´crites par secteurs complets : le secteur e e e est lu en entier.426 Pilotes de p´riph´riques e e rigide anim´ d’un mouvement de rotation uniforme. Les secteurs sont g´n´ralement de 256 ou 512 octets . ee 3.2. a e e de mˆme que l’octet est g´n´ralement l’unit´ d’´change entre la m´moire et le e e e e e e processeur.4. e e e Il existe un ordre de grandeur de diff´rence entre les performances (d´bit e e et temps d’acc`s) des disquettes et celles des disques durs. La tˆte mobile flotte ` e e a la surface du disque (l’altitude de vol de la tˆte est de l’ordre du micron) e et se d´place radialement pour acc´der aux diff´rentes pistes. circulaires et e e e concentriques. Les pistes sont d´coup´es en arcs de cercles appel´s secteurs. Apr`s quelques secondes d’inactivit´.25 octet.1 Notion d’unit´ de transfert et secteurs e Le secteur correspond ` l’unit´ de transfert entre le disque et la m´moire. Un centi`me de tour correspond ` 10 Kbits et une fluctuation e a de 0.

On monte ´galement un ensemble de d plateaux e sur le mˆme axe de rotation. cylindres et temps d’acc`s e Pour augmenter la capacit´ des disques de mani`re ´conomique. L’´tape suivante la plus probable est deux pouces et demi. 6996 cylindres (pistes a par plateau). Un cylindre contient 2d pistes (une par tˆte). On peut en d´finir la valeur maxie a e e male (trajet entre les 2 cylindres extrˆmes) et une valeur moyenne en supposant e une r´partition ´quiprobable des cylindres de d´part et d’arriv´e sur le disque. un temps d’acc`s secteur de 2. Sa borne sup´rieure est la dur´e d’une rotation e e e compl`te et la moyenne le temps d’un demi-tour. ce qui permet d’augmenter le d´bit et la vitesse de rotation. on utilise e e e les deux faces des plateaux.2. soit environ e a 1Mbit/tr. e e 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.2. Les 2d tˆtes sont port´es par un bras unique. La fr´quence de transfert pourrait ˆtre adapt´e ` la longueur des pistes pour e e e a exploiter au mieux le support. soit une capacit´ toe tale de 18 Go.3 Plateaux. e 3. et se partagent ` tour de rˆle l’unique ´lectronique e a o e de lecture/´criture : on ne peut acc´der qu’` une face de plateau ` la fois. Le e e e temps d’acc`s piste ` piste est le d´lai n´cessaire pour d´placer les tˆtes d’un e a e e e e cylindre ` un cylindre adjacent. elles e e e se d´placent solidairement. les pistes les plus externes ayant plus de secteurs. d’o` une augmentae e u tion de la capacit´ de stockage (par piste). e e e e Le temps d’acc`s secteur est le temps de rotation n´cessaire pour amener e e le secteur voulu sous la tˆte.3. e e ce qui ` capacit´ ´gale r´duit l’encombrement du disque et le d´battement a ee e e des tˆtes et donc le temps d’acc`s aux pistes. e e a a L’ensemble des pistes accessibles dans une position donn´e du bras portant e les tˆtes est appel´ cylindre.4 Caract´ristiques des disques durs et performances e L’´volution technologique des disques am´liore trois caract´ristiques : e e e – la densit´ lin´aire d’enregistrement le long des pistes.9 ms (temps acc`s piste moyen = 6 ms. e e 3. e e par r´duction du temps d’acc`s secteur.99 ms. maximal = 13 ms). Le prix ` payer est une ´lectronique de lecture/´criture plus sophistiqu´e et une a e e e l´g`re complication des algorithmes de localisation des donn´es sur le disque. e e e le num´ro de piste ne pouvant plus ˆtre obtenu par simple division. Le temps d’acc`s piste est le d´lai n´cessaire a e e e pour amener les tˆtes ` un cylindre donn´. e e Voici les principales caract´ristiques d’un disque dur de 1998 : six plateaux e de trois pouces et demi tournant ` 10000 tours/minute. Pilote pour un disque 427 maximale autoris´e par le support n’est atteinte que pour la piste int´rieure e e (la plus courte). e . e e – la fr´quence de fonctionnement de l’ensemble tˆte et ´lectronique de lece e e ture/´criture. une fr´quence de transfert de 152 ` 211 Mbits/s. et un temps d’acc`s piste ` e e a piste de 0. e – la densit´ radiale d’enregistrement (autrement dit l’´cart entre deux pistes). 35566480 secteurs de 512 octets chacun. soit environ a neuf centim`tres).

La piste peut ˆtre connue en comptant les e e d´placements de la tˆte depuis la piste 0. Le rayon marquant le d´but d’une piste est rep´r´ e e ee par un index. mais le m´canisme qui d´place la tˆte e e e e e doit ˆtre parfaitement pr´cis et fiable. d´tect´ par une fourche opto´lectronique. Dans le cas des disquettes. cet index est un simple trou dans le support. nous assimie lerons piste et cylindre. le num´ro de secteur pourrait e e e e ˆtre d´termin´ en comptant les d´buts d’enregistrement depuis le d´but de e e e e e piste. On pourrait en principe se contenter d’une simple marque de d´but d’enregistrement. e Une en-tˆte contiendra vraisemblablement le num´ro de piste et le num´ro e e e de secteur dans la piste.4 3. e e e Le contenu d’une piste est une suite d’autant d’enregistrements que de secteurs.2 Protection contre les erreurs de lecture/´criture e Les informations stock´es sont munies d’octets dits de CRC qui permettent e de d´tecter d’´ventuelles erreurs de recopie des donn´es. lors d’une lecture. seul le bloc de donn´es e e e est ´crit sur le disque.4.3. Cette technique de e e e d´tection d’erreur. Les intervalles avant et apr`s les donn´es sont remplis par des motifs bie e naires pr´d´finis tels qu’une suite de bits ` 1 (sur laquelle l’enregistrement e e a pr´c´dent peut d´border l´g`rement) suivie d’une s´quence plus courte de bits e e e e e e a ` 0 qui permet de d´tecter la fin de l’intervalle. Chaque enregistrement se compose d’une en-tˆte et d’un bloc de e donn´es (le contenu du secteur). e La valeur de CRC est calcul´e ` partir de celle des donn´es transf´r´es. Toute diff´rence indique bien entendu e e une erreur.1 Fonctionnalit´s du pilote de disque e Interface entre le disque et le contrˆleur de disque o Les principaux signaux de commande envoy´s au disque par le contrˆleur de e o disque sont les suivants : 1) sens du transfert des donn´es : lecture ou ´criture. 3. 3. e e e e e e L’´criture des en-tˆtes est effectu´e une fois pour toutes lors d’une op´ration e e e e d’initialisation appel´e formatage physique du disque. De mˆme. 3. e e .3 Structure des informations sur un disque dur Nous supposons par convention que le cylindre de num´ro 0 correspond ` e a la piste la plus externe.3. Dans la gestion du mouvement des tˆtes. l’en-tˆte ´tant utilis´e pour rep´rer le d´but du secteur. Elle e a e ee est ajout´e aux donn´es lors de l’´criture et. compar´e aux e e e e octets de CRC pr´sents sur le disque. qui ne permet pas de les corriger.428 Pilotes de p´riph´riques e e 3.1 Structure d’une piste Une piste a un d´but. est appel´e contrˆle de e e o redondance cyclique. Lors d’une ´criture.

e 3. e 3. e a Les principaux signaux re¸us par le contrˆleur sont : 1) signal donn´e lue c o e et signal d’´chantillonnage .2 Interface du pilote de disque vers les couches sup´rieures e Vu du syst`me de gestion de fichiers (SGF). 4) d´placement de la tˆte d’une piste . . comme par exemple. Les param`tres d´crivant le disque (nombre de plateaux. 2) e e o signal donn´e ` ´crire et signal d’´chantillonnage . Il suffit pour cela de le multiplier par la taille T d’un bloc exprim´e e en nombre de secteurs. o La premi`re ´tape consiste ` convertir le num´ro de bloc en num´ro global S e e a e e de secteur. un bloc est une suite e e e e de secteurs. attendre que la vitesse de rotation soit a a e stabilis´e (signal prˆt du disque). a e Pour une disquette.3 Correspondance entre les adresses physiques de blocs et les num´ros de secteurs et de pistes e Les proc´dures de lecture et d’´criture de bloc offertes aux couches e e sup´rieures font appel aux proc´dures de lecture et d’´criture d’un secteur e e e fournies par le contrˆleur de disque. Pilote pour un disque 429 si l’´lectronique de pilotage de la tˆte ne fait pas partie du contrˆleur . 6) remise ` 0. on trouve de plus une commande de rotation du moteur et de chargement/d´chargement des tˆtes ainsi qu’un signal d’entr´e indiquant e e e une ´ventuelle protection contre l’´criture. Nous appelons adresse physique le num´ro de bloc. c’est une structure lin´aire. Un bloc n’est pas e e e n´cessairement r´duit au secteur physique. 3) index/d´but e e e de piste . Vu de la couche sup´rieure. Il suffit de connaˆ ıtre la taille du bloc en nombre d’octets. La taille de bloc sera initialis´e e e a ` sa valeur par d´faut (par exemple 1 secteur). 2) signal de pr´sence en piste 0 . taille d’un secteur.4. d´placement de tˆte e e e au-del` des pistes extrˆmes. et le nombre de secteurs par bloc est une puissance de 2.4. il est indiff´rent que l’unit´ d’acc`s (le bloc) e e e e offerte par le pilote de disque soit effectivement un secteur. En g´n´ral. ` ramener la tˆte sur la piste 0 et ` remettre e e a e a a ` 0 la variable piste courante du pilote. Les proc´dures de lecture et d’´criture du pilote permettent au SGF de e e transf´rer une suite de blocs d’adresses physiques cons´cutives entre le disque e e et un tableau ou tampon en m´moire. e e nombre de secteurs par piste. nombre de pistes) sont ´galement initialis´s ` e e a partir de l’EEPROM d´crivant la configuration.3. Le nombre de secteurs e (≥ 1) par bloc est une information du pilote. 5) erreur. le disque pr´sent´ par le pilote e e e est une suite de blocs num´rot´s . 5) sens du d´placement de e e e la tˆte . 3)s´lection de la tˆte de e a e e e e lecture/´criture ` utiliser : face inf´rieure ou sup´rieure du plateau et num´ro e a e e e de plateau . e e L’initialisation ` la mise sous tension consiste essentiellement ` envoyer un a a signal de remise ` 0 ` l’unit´ de disque. 4) disque prˆt .

Le quotient de la division donne le num´ro de piste. Le reste est ` son tour divis´ par le nombre de e a e secteurs par piste. e Dans le cas g´n´ral. Le pilote contrˆle au passage que le num´ro e e o e global de secteur appartient ` l’intervalle l´gal de num´ros de secteurs corresa e e pondant ` la capacit´ du disque.1 Communication avec le coupleur On peut s’attendre en pratique ` ce que le pilote se contente de transmettre a au contrˆleur la nature de l’op´ration ` r´aliser : formatage. s´rialisation des octets de donn´es. Le probl`me revient alors ` effectuer une suite de copies entre le secteur de e a num´ro global S + i et le tampon d’adresse A ` l’adresse A + i*TailleSecteur e a avec 0 ≤ i ≤ T . il suffit e de diviser S par le nombre de secteurs par cylindre. 3. Cette organisation r´duit le d´placement des tˆtes et les temps d’acc`s en e e e e groupant les secteurs et les blocs de num´ros cons´cutifs sur le mˆme cylindre e e e ou sur des cylindres adjacents. Nous nous contenterons donc de donner les grandes lignes de l’algorithme de lecture et d’´criture d’un secteur. La diff´rence entre les deux pistes est calcul´e et e e e e convertie en autant d’impulsions de d´placement du signal d´placement piste e e dans la direction correspondante. Le quotient donne le num´ro de tˆte et le reste. a e En supposant que toutes les pistes ont le mˆme nombre de secteurs.5.430 Pilotes de p´riph´riques e e Le num´ro global de secteur doit alors ˆtre d´compos´ en un num´ro de e e e e e piste (ou plus exactement de cylindre). Les coupleurs rudimentaires sont devenus des contrˆleurs de disques qui d´chargent le processeur de l’essentiel du travail o e (formatage physique des disques. le num´ro e e e local de secteur dans la piste. e o 3.5 Programmation des fonctions du pilote Les coupleurs ont ´volu´ avec les g´n´rations de circuits et int´gr´ une part e e e e e e croissante de la gestion des disques. o e a e e a retour ` la piste 0. calcul de e e CRC et acc`s aux pistes et aux secteurs). Il est donc hors de question de pr´senter ici un contrˆleur de disque : la e o description de la norme de raccordement scsi peut occuper ` elle seule un livre a entier. La fr´quence des impulsions est fonction du e . lecture ou ´criture d’un secteur et les param`tres correspona e e dants. le secteur appartient ` une piste diff´rente de la piste e e a e courante survol´e par la tˆte. un num´ro de tˆte et un num´ro de e e e secteur dans la piste s´lectionn´e. acc`s ` une piste. d’attendre la fin de l’op´ration en testant le registre d’´tat du contrˆleur e e o et de g´rer la reprise du processus en cas d’erreur. sans pr´ciser la r´partition des rˆles entre e e e o le logiciel du pilote et le mat´riel du contrˆleur. 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.

e La s´rialisation de chaque octet est effectu´e par un registre ` d´calage du e e a e contrˆleur de disque. e a e Si la cadence de transfert n’est pas scrupuleusement respect´e. Pilote pour un disque 431 temps d’acc`s piste du disque. et le transfert commence. il suffit d’attendre le passage du e d´but de piste et de compter les en-tˆtes ` partir de celui-ci. l’erreur peut ˆtre consid´r´e comme e ee fatale. une fr´quence de transfert approxie e mative de 160 Mbits/s repr´sente 20 Mo/s. et la donn´e irr´cup´rable. e Le cadencement des acc`s aux secteurs est d´fini par la rotation du disque et e e la fr´quence de transfert des octets s’impose ` l’ensemble processeur/m´moire. e e e Si cette information est absente de l’en-tˆte. on transf`re les donn´es par mots de 32 ou 64 bits e e e plutˆt qu’octet par octet moyennant les contraintes d’alignement d’adresses des o tampons. a exploiter les acc`s en mode rafale (Cf. L’´criture d’un secteur peut ˆtre suivie d’une e e e e e e relecture de v´rification au tour de piste suivant. Les donn´es sont transf´r´es bit par bit e e ee a ` la cadence impos´e par la rotation du disque. e e e Le num´ro de piste ´ventuellement contenu dans la premi`re en-tˆte passant e e e e sous la tˆte apr`s le d´placement est compar´ avec la valeur de la variable piste e e e e courante. le processeur se contentant de d´poser ou de r´cup´rer o e e e l’octet dans le registre de donn´es du contrˆleur. e o La valeur de CRC est calcul´e pendant le transfert. ` remettre ` 0 la variable e a e a a piste courante et ` recommencer le processus depuis le d´but. Par exemple. Au-del` ` e a d’une dizaine de tentatives infructueuses. e En lecture. a e L’´tape suivante consiste ` attendre le passage des en-tˆtes qui d´filent sous e a e e la tˆte et d’en comparer le num´ro de secteur avec celui du secteur recherch´. La tˆte est commut´e en ´criture si e e e e e n´cessaire. e e Pour augmenter le d´bit. L’ex´cution d’une boucle de transfert par le processeur peut s’av´rer trop e e lente pour le d´bit du disque. et ` confier la ` e a boucle de transfert ` une unit´ d’acc`s direct ` la m´moire (Cf. Un d´saccord indique une erreur de calibrage du compteur de piste. un ou plusieurs e octets seront perdus et le transfert se terminera par une erreur. La variable piste courante est mise ` jour. le secteur e a (voire toute la piste) est probablement d´faillant et devra ˆtre marqu´ comme e e e tel et retir´ de la liste de secteurs utilisables. a e e a e . Chapitre 9). La tˆte e a e est ensuite s´lectionn´e en lecture pour consulter les en-tˆtes d’enregistrement. l’erreur ´ventuelle peut ˆtre due ` une petite erreur de posie e a tionnement de la tˆte ou dans le cas d’une disquette ` une poussi`re sur le e a e m´dia. c’est ` peu e a pr`s le temps de cycle d’une m´moire centrale.3. e Le rem`de consiste ` ramener la tˆte sur la piste 0. soit 50 ns par octet . Chapitre 16). e e a La d´tection de la bonne en-tˆte pr´c`de imm´diatement le passage du e e e e e bloc de donn´es du secteur sous la tˆte. L’erreur peut ˆtre transitoire et corrig´e en d´pla¸ant la tˆte puis en la e e e e c e ramenant a nouveau sur la piste pour une nouvelle tentative d’acc`s. e e e Si un nouveau cycle ´criture-lecture donne ` nouveau une erreur. une erreur pouvant e ˆtre ´ventuellement d´tect´e.

etc. on trouve aujourd’hui e e des dispositifs m´caniques dot´s d’une interface ´lectronique rudimentaire ` e e e a laquelle le processeur donne des ordres tr`s ´l´mentaires. Tampon : un Bloc) { Ecriture du tableau Tampon dans le bloc de num´ro NoB } e D’autre part les fonctions de contrˆle du pilote pourraient ˆtre les suio e vantes : acc`s aux param`tres : taille d’un secteur.. m´moire vive et m´moire morte) e e e e d’un petit ordinateur. L’interface mat´rielle de raccordement et la complexit´ de la proe e grammation des entr´es/sorties varient ´norm´ment selon le degr´ de sophise e e e tication du p´riph´rique raccord´.432 Pilotes de p´riph´riques e e 3. Tampon : un Bloc) { lecture du bloc de num´ro NoB dans le tableau Tampon } e EcrireBloc : une action (NoB : une AdPhysique. Les p´riph´riques ont ´volu´ en prenant directement en charge une part e e e e croissante du travail de gestion des entr´es/sorties assur´ initialement par le e e processeur. e chaque bloc ´tant une suite de secteurs.. ´jection e e e e e du m´dia (disquette.4.. formatage physique du disque . TailleBloc − 1] d’octets LireBloc : une action (NoB : une AdPhysique. nombre de e e secteurs par bloc . telles que : tracer un cercle et peindre e e e e l’int´rieur en jaune. Pour aller plus loin. L’´ventail de p´riph´riques concern´s est tr`s large. CDROM). { Taille d’un bloc en nombre d’octets } NbBlocs : l’entier .. e . et d’autres disposant e e e a en interne de v´ritables petits ordinateurs de gestion capable d’interpr´ter des e e requˆtes de niveau s´mantique ´lev´. e e e Sous le mˆme nom et pour les mˆmes fonctions. Le pilote offre aux couches sup´rieures des fonctions d’acc`s ` un bloc : e e a TailleBloc : l’entier .2 Fonctions offertes par le pilote Nous avons vu au paragraphe 3. Un bloc est d´fini par un num´ro et sa e e e taille... du disque. { Nombre de blocs du disque } AdPhysique : un entier sur 0 . NbBlocs − 1 Bloc : un tableau sur [0 .. d´tection de protection contre l’´criture. tels que : d´placer la e ee e tˆte de l’imprimante d’un dixi`me de millim`tre ` droite. On parle dans ce dernier cas de p´riph´riques intelligents. e e e Au coeur de nombreux p´riph´riques on rencontre une puce ´lectronique e e e int´grant tous les ingr´dients (processeur. Certaines fonctions sont sp´cifiques des unit´s ` support amovible : marche/arrˆt rotation.5. e 4.2 que le disque est organis´ en blocs. chargee e a e ment/d´chargement des tˆtes. des e e e e e syst`mes de disques jusqu’aux ensembles clavier/souris..

17. la e e e m´moire ´cran et les autres interfaces d’entr´es/sorties sont reli´es par le bus e e e e m´moire. e e Pour afficher un caract`re. 16. Pour un ´cran couleur.5 e a e e illustre la repr´sentation d’un E majuscule dans un carr´ de neuf par huit e e pixels de cˆt´. La m´moire principale. 24 ou 32 bits). Pour aller plus loin.5 – Repr´sentation de la lettre “E” dans un carr´ de 9 par 8 pixels e e 4. oe La forme matricielle a l’inconv´nient d’ˆtre volumineuse (neufs octets par e e caract`re dans cet exemple) mais elle permet de m´langer du texte et des dese e sins. 433 0x00 0x3E 0x20 0x20 0x3C 0x20 0x20 0x3E 0x00 Fig. la conversion peut ˆtre effectu´e ` e e e a la vol´e par le dispositif de rafraˆ e ıchissement.. La figure 17.6.5 du chapitre 9 de la gestion optimis´e de cette m´moire. On parle d’´cran alphanum´rique. Cela r´duit la taille de la m´moire e e d’´cran qui ne contient plus alors que les codes des caract`res affich´s. la table e e e de conversion ASCII vers la forme matricielle ´tant fig´e dans une m´moire e e e morte. .. e L’ensemble des informations d´finissant la valeur de chaque point est stock´e e e dans une m´moire appel´e m´moire d’´cran. En bas de la figure se trouvent les maˆ e ıtres qui se partagent l’acc`s ` e a la m´moire d’´cran : le processeur et l’unit´ de rafraˆ e e e ıchissement. ` recopier dans la m´moire d’´cran.4. le processeur doit passer de son code ASCII ` sa e a repr´sentation matricielle. La gestion d’une image se fait e e e e ainsi par lecture et ´criture dans la m´moire d’´cran.1 Pilote pour un ´cran graphique e Un ´cran graphique est un ´cran cathodique constitu´ par une matrice de e e e points. ` e e e e a chaque point est associ´ le codage de sa couleur (sur 8. Dans un ´cran noir et blanc. Lorsque l’´cran n’affiche que du texte. Nous avons parl´ au e e e e paragraphe 4. e e La connexion de l’´cran est illustr´e figure 17. ` chaque point est associ´e une information e a e bool´enne signifiant si le point est allum´ ou ´teint.

e La syntaxe de commande des p´riph´riques de sortie graphique peut ˆtre e e e tr`s ´labor´e : la complexit´ et la puissance d’expression du langage poste e e e script. allumer tel pixel. etc. effae cer tout l’´cran. e e e Le processeur du terminal ex´cute une boucle infinie consistant ` attendre e a un ordre d’affichage venant de l’ordinateur principal et ` effectuer ensuite a l’op´ration correspondante : dessiner un rectangle. Chapitre 11) et d´l´gu´es ` un circuit acc´l´rateur. pour autoriser des acc`s simultan´s de l’acc´l´rateur grae e e ee phique ` la m´moire d’´cran et du processeur ` la m´moire principale ou aux a e e a e autres entr´es/sorties. reconnu par de nombreuses imprimantes. Le processeur principal se contente alors d’envoyer les e quelques octets repr´sentant l’ordre graphique correspondant.6 – connexion d’un ´cran avec ses m´moires e e Pour un affichage plus performant. l’ensemble de la figure 17. sont celles des langages de programmation. Le dialogue avec le terminal sera en r´alit´ un ´change e e e entre deux ordinateurs : le syst`me informatique central qui d´cide d’afficher e e quelque chose et l’ordinateur interne d´di´ du terminal. Ces deux ordinateurs e e se consid`reront l’un l’autre comme des p´riph´riques ordinaires de sortie et e e e d’entr´e. . e Le processeur principal qui g´n`re l’information ` afficher peut donc adrese e a ser de la mˆme mani`re la m´moire d’´cran et la m´moire principale.434 Pilotes de p´riph´riques e e Ecran cathodique P´riph´riques e e caract`re e M´moire d’´cran e e Entr´es/Sorties e M´moire principale e Bus M´moire e DMA de Rafraˆ ıchissement Acc´l´rateur ee graphique Processeur Fig.6 peut constituer un terminal grae phique intelligent. e e e e e A l’oppos´. les primitives grahiques les plus courantes (dont le trac´ de segments de droites et de figures g´om´triques) peuvent e e e ˆtre cˆbl´es (Cf. Le bus peut e a e ee e a ee ´galement ˆtre scind´ en deux parties (c´sure en pointill´) par des connexions e e e e e de type trois ´tats. 17. transf´rant des caract`res.

Ces techniques constituent le coeur des techniques de compilation des langages de haut niveau. ex´cution et correction peuvent ˆtre r´p´t´es de nombreuses fois.Chapitre 18 Vie des programmes Dans ce chapitre. Cette id´e d’´crire un algorithme pour interpr´ter e e e e e les constructions d’un langage de programmation est utilis´e par les envie ronnements d’ex´cution de tous les langages dits interpr´t´s. la traduction de ce type de langage en langage d’assemblage. d’un programme en langage machine e obtenu d’apr`s le texte du programme par des ´tapes de traduction plus ou e e moins nombreuses et sophistiqu´es. e e En ce qui concerne l’interpr´tation. e ee perl. a e e La notion d’ex´cution d’un programme recouvre deux techniques e diff´rentes. depuis sa cr´ation sous forme de fichier texte dans un langage e particulier. Nous avons d´fini au chapitre 4 les struce e tures principales des langages de programmation imp´ratifs et ´tudi´. e e a e En ce qui concerne la compilation. Nous avons toujours consid´r´ jusque l` qu’un programme e ee a est constitu´ d’un texte unique. trait´ de mani`re globale par les outils de e e e traduction successifs. nous n’avons vu pour l’instant que le e cas du processeur qui interpr`te le langage machine. e e e e e e traduction. etc.. l’ex´cution d’un programme consiste e en une interpr´tation. e e e ee et il convient de r´duire le temps n´cessaire ` un tel cycle en introduisant e e a la possibilit´ de traiter s´par´ment les diff´rents fichiers qui composent un e e e e mˆme programme. jusqu’` son ex´cution par le processeur d’une machine donn´e. dont nous verrons qu’elles ne sont finalement que deux formes de e la mˆme approche : l’interpr´tation et la compilation. La r´alit´ est plus complexe. Il s’agit d’une r´alisation e e mat´rielle — cˆbl´e — de l’algorithme d’interpr´tation du langage machine e a e e pr´sent´ au chapitre 12. au chae e e pitre 13. comme tcl. nous examinons toutes les questions relatives ` la vie a d’un programme. par le processeur. scheme. Dans le paragraphe 3. e e . Ces algorithmes d’interpr´tation sont alors simplement e programm´s au lieu d’ˆtre cˆbl´s. et nous d´taillons ici les e e e notions de compilation s´par´e et de code translatable. La notion de vie d’un programme tient compte ´galement du fait qu’un e programme est rarement d´finitif d`s sa premi`re ´criture : les ´tapes d’´criture.

Ce langage est toutefois plus riche que les langages machine dont nous avons vu l’interpr´tation aux chapitres 12 et 14. et nous introduisons les notions de compilation s´par´e. e Comme actions ´l´mentaires. Il comporte en particulier des e structures it´ratives et conditionnelles. L’affectation est not´e par une e . nous d´finissons pr´cis´ment les termes ine e e terpr´tation et compilation.. "Y" et "Z". nous utilisons un petit langage imp´ratif tr`s e e e simple. d’une seule taille.. Enfin nous abordons la notion de code translatable et le probl`me de sa e production syst´matique depuis un programme en langage d’assemblage. a e e e Dans le paragraphe 1. Les boucles ne sont pas imbriqu´es. Les composie a e tions d’actions sont la s´quence. nous e e rappelons les ´tapes de traduction des langages de haut niveau vers un e langage machine. On peut utiliser dans les op´rations e e des constantes enti`res positives.1 L : un langage imp´ratif simple e Le langage n’offre que le type entier relatif. et Write . Il e s’agit de produire un programme en langage machine sans pr´juger de l’adresse e absolue ` laquelle le programme sera plac´ en m´moire vive pour ex´cution.. et aucun moyen d’en d´clarer e e e de nouvelles. le langage dispose de primitives ee d’entr´e/sortie ` un seul param`tre. En revanche on peut e trouver une boucle dans une structure conditionnelle ou vice-versa. o` les pointill´s doivent e u e ˆtre remplac´s par le nom d’une des variables pr´d´finies. les structures conditionnelles non plus. et de l’affectation..436 Vie des programmes nous pr´sentons l’´dition de liens et nous d´crivons pr´cis´ment le format d’un e e e e e fichier objet translatable. De e mˆme la structure conditionnelle comporte une ligne endif (voir l’exemple de e la figure 18.. La port´e et la dur´e de vie de ces 3 variables sont globales (le e e langage n’a pas de structure de blocs). Celles du if sont de la forme variable > 0.1 pour la notation des conditions. e 1. Il y a trois noms de variables pr´d´finis : "X". Interpr´tation et compilation e Pour ´tudier les deux principes d’ex´cution de programmes. dont le premier mot est rem. On dispose de trois op´rations binaires e not´es "+". Dans le paragraphe 2. e 1. Les conditions bool´ennes du while sont toujours de la forme e variable = 0. La s´quence d’actions est implicite : chaque action occupe une ligne. La structure while e e e e comporte un marqueur de fin : le mot-cl´ endwhile tout seul sur sa ligne. e e code translatable et ´dition de liens. Les a entr´es/sorties se notent : Read . la boucle while et la structure conditionnelle e if-then-else. On e a droit ` des lignes de commentaires. "*" et "−" avec le sens usuel. par ine e terpr´tation ou par compilation. en donnant des exemples de langages e ex´cut´s selon l’une ou l’autre technique.

1 donne un exemple de texte du langage L et un programme en langage d’assemblage sparc correspondant. nop endwhile : add g0. l0 ba endif . Interpr´tation et compilation e 437 read X read Y Z <-. Z dans l2 call read . Le compilateur r´alise l’analyse lexicale et syntaxique du texte du programme e (d´coupage en mots et v´rification de la conformit´ des phrases ` l’ordre ime e e a pos´). o0 call write . . est une tˆche tr`s bien ´tudi´e maintenant.Y else Y <-. nop ble else . Y dans l1. nop add g0. nop add g0. ←− expr. l1. c’est-`-dire interpr´t´ directement e e a ee par le processeur de la machine (Cf. et o` l’expression expr est e e e u form´e d’un seul op´rateur. puis traduit les structures de haut niveau en branchements. c’est-`-dire le programme qui r´alise les phases a e d’analyse et de traduction. e e La figure 18. Chapitre 20). l0.X endif Z <-. instruction de la forme : . l0 call read . nop subcc l0.Y .Y endwhile write X ! X dans l0. o` les pointill´s doivent ˆtre remu e e plac´s par le nom d’une des variables pr´d´finies. On trouvera dans [CGV80. l1. Supposons que l’on compile notre langage simple vers du langage machine sparc. on doit traduire le texte d’un programme en langage machine d’un processeur dont on dispose.. 18. Ecrire un compilateur. et lanc´.X . l0.1 – (a) Exemple de programme L (b) Programme sparc correspondant. au a e e e moins pour les langages ` structure classique comme celui que nous avons a ´tudi´ au chapitre 4. nop else : subcc l1. o0. WM94] un expos´ complet e e e des techniques de compilation. 1.X .1-(b).2 Ex´cution par compilation e Si l’on utilise la technique de compilation. o0. Le r´sultat est stock´ e e dans un fichier objet (Cf. Chapitre 14). nop Fig. On obtient e un programme du type d´crit figure 18. l2 be endwhile .. soit des notations de constantes enti`res positives en d´cimal. l1 while : subcc l0. appliqu´ ` des op´randes qui sont soit des noms e e ea e de variables.X . l1 endif : ba while .Y while Z rem signifie : rem tant que Z non nul if Z rem signifie Z > 0 then X <-.1. Ce programme est ensuite trae duit en langage machine sparc par l’outil d’assemblage. Chapitre 19) qui est ensuite charg´ en m´moire vive e e pour ex´cution (Cf.

e e le texte de programme en langage L est trait´ comme une donn´e par le proe e gramme interpr`te. e . il faut a programmer l’algorithme d’interpr´tation.3 Pr´traitements divers e La lecture du fichier et le stockage dans un tableau des lignes d´coup´es e e en mots constitue d´j` un traitement pr´alable ` l’ex´cution. par exemple dans un langage de e haut niveau comme ada. e Nous avons omis dans l’algorithme d’interpr´tation la phase de lecture du e fichier texte du programme. Le d´coupage en ea e a e e mots des lignes qui constituent le corps d’une boucle est effectu´ une seule fois. Noter toutefois que le travail est perdu d’une ex´cution ` l’autre. un commentaire peut ˆtre consid´r´ comme ayant e e ee 2 mots). est suppos´e effectu´e compl`tement avant que ne commence l’ex´cution. Il faut en effet parcourir les lignes e du texte en comptant les while et en d´comptant les endwhile.3 est la phase d’ex´cution e a e proprement dite. e e e e Elle fournit le programme sous la forme d’un tableau de lignes. nous avons suppos´ que les structures e e e it´ratives ne sont pas imbriqu´es. ce programme e d’interpr´tation travaille sur un programme du langage L. L’algorithme fourni figure 18. 1. ”<--”.2 et 18. Par exemple.438 Vie des programmes 1.X .3. Cette hypoth`se justifie l’algorithme tr`s e e e e simple d’interpr´tation des structures it´ratives.2 Prise en compte des boucles imbriqu´es e Dans le langage L pr´sent´ ci-dessus. ”Y” > . le charger et le lancer. Pour programmer en langage L sur une machine ` processeur M. e Une telle phase de lecture s’apparente ` la phase d’analyse lexicale et syna taxique dans un compilateur. puis compiler ce programme pour le langage machine du processeur M. Si les structures it´ratives peuvent ˆtre e e e imbriqu´es ` un niveau quelconque. ”X”.3. ”-”. il faut pr´voir une pile d’adresses de ree a e tour. par parcours du tableau de lignes. D’autre part la recherche du mot-cl´ "endwhile" (lorsque la condition de e boucle devient fausse) est plus compliqu´e. Les textes comportant des lignes de plus de 5 mots ont ´t´ rejet´s. pour lequel une seule adresse e e de d´but de boucle DebBoucle suffit. Pendant cette ex´cution. A l’ex´cution. On voit ici que la distinction entre programmes et donn´es e e n’est pas intrins`que.1 Ex´cution par interpr´tation e e Solution de base Nous donnons figures 18. e 1. la lecture de la ligne X <-.3 l’algorithme d’interpr´tation du langage e L. dans un fichier ou au clavier. Cette phase de lecture. alors qu’il est per¸u comme un programme par l’utilisateur e c humain qui l’a ´crit. chaque ligne ´tant d´coup´e en mots (il y a au plus 5 mots sur une ligne dans la syntaxe du e e e langage que nous ´tudions .3.3 1. ee e On suppose que le programme lu tient dans le tableau de MAXLIGNE lignes.Y du programme d’exemple donn´ ci-dessus fournit : Prog[10] = < ”X”. pris dans un fichier e ou tap´ directement au clavier par le programmeur.

4. on ajoute des fonctions de mani`re interactive avant de les appeler. e e e mais l’inverse est faux. Les langages scheme. C. il y a ´ventuellement des pr´traitements effectu´s sur le e e e texte du programme avant ex´cution. rien e n’empˆche toutefois de programmer pour ces langages des algorithmes d’ine terpr´tation. Cela ´vite e e la boucle tantque Mot1 de Prog[CP] = ”endwhile” : CP ←− CP + 1 de l’algorithme d’interpr´tation.2 Interpr´tation et programmation incr´mentale e e On appelle interpr´tation un m´canisme d’ex´cution de programmes dans e e e lequel on repart du texte source ` chaque ex´cution (et donc il ne faut sura e tout pas le perdre !) . sont effectu´es par e des pr´traitements. e La programmation incr´mentale implique l’ex´cution par interpr´tation. Interpr´tation et compilation e 439 Un autre pr´traitement int´ressant consiste ` associer ` chaque instruce e a a tion "while" le num´ro de la ligne du "endwhile" correspondant. les fichiers produits contiennent toute l’information n´cessaire a l’ex´cution du programme d’origine. et imaginer de nombreux autres pr´traitements. e On pourrait bien sˆr ´liminer les commentaires d`s la phase de lecture du u e e fichier. postscript. ml. Les langages Pascal. e e On confond souvent le fait que le langage soit interpr´t´ avec le fait que ee l’environnement de programmation autorise la programmation incr´mentale. avec r´sultats interm´diaires stock´s dans des fichiers pere e e e sistants. ou mˆme si on ne l’a jamais eu.4. C++ sont habituellement compil´s .4 1. e Dans un environnement de programmation scheme ou lisp. ada. e En g´n´ral on r´serve aussi ce mot au cas o` la forme finale produite par e e e u l’outil dit de compilation est un langage machine destin´ ` ˆtre ex´cut´ par le eae e e processeur correspondant. html. syntaxique et de typage.1 D´finitions et exemples e Compilation On appelle compilation un m´canisme d’ex´cution de programmes dans e e lequel les analyses lexicale. ainsi que la transformation du programme en un langage de plus bas niveau. tcl. par exemple. 1. e 1. prolog sont . qui ´vitent de r´p´ter e e e e du travail lors des multiples ex´cutions d’une ou plusieurs instructions du proe gramme. et des formes interm´diaires stock´es en e e e m´moire vive pendant l’ex´cution. les e e langages de commandes ´tudi´s au chapitre 20 sont pr´vus pour la programe e e mation incr´mentale. En compilation.1. De mˆme. lisp. On peut ex´cuter un proe ` e e gramme si l’on a perdu le fichier source. le langage PostScript ´galement (l’outil d’affichage e e ghostview est bas´ sur l’interpr`te ghostscript qui permet de programe e mer directement en langage PostScript et d’observer le r´sultat).

a) affecte ` la variable correspondante (vX. la diff´rence not´e =. cond : un bool´en e N : le num´ro de la derni`re ligne du texte lu e e ValeurDeNom : un Texte −→ un entier { ValeurDeNom (t) est d´finie pour un texte t parmi les noms de vae riables autoris´es ”X”.MAXLIGNE] de Lignes M1.. AffectParNom (t. Mot4. Mot2. la donn´e a : un entier) e e { pour les textes t parmi les noms de variables autoris´es ”X”. ”Y” ou e ”Z”. } e DebBoucle : un entier sur 1. a) : selon t : t = ”X” : vX ←− a t = ”Y” : vY ←− a t = ”Z” : vZ ←− a ValeurDeNombre : un Texte −→ un entier ≥ 0 { ValeurDeNombre (t) est l’entier not´ t en d´cimal. vY a ou vZ) la valeur a } AffectParNom (t. ”Y” ou ”Z”. M4. etc. et donne la valeur de la variable e correspondante } ValeurDeNom (t) : selon t : t = ”X” : vX t = ”Y” : vY t = ”Z” : vZ AffectParNom : une action (la donn´e t : un Texte.MAXLIGNE Texte : le type s´quence de caract`res e e { On suppose l’existence d’op´rations manipulant des textes. vY. Mot3. tmp2 : des entiers . c’est-`-dire le num´ro de la ligne de l’insa e truction en cours d’interpr´tation.MAXLIGNE+1 { Le compteur programme. Mot5 : des Textes > Prog : un tableau sur [1. vZ : des entiers tmp1. M5 : des Textes CP : un entier sur 1. M2. } e e Fig.2 – Lexique de l’algorithme d’interpr´tation e .MAXLIGNE vX.. De plus on note les e e e e e constantes texte avec des guillemets. } Ligne : le type < Mot1.440 Vie des programmes lexique MAXLIGNE : l’entier 100 numligne : le type entier sur 1. M3... 18. comme e l’´galit´ not´e =.

18. AffectParNom (Mot2 de Prog[CP].3 – Algorithme d’interpr´tation e . 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 :”. tmp) . 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 AffectParNom (M1. CP ←− CP + 1 M1 = ”write” : Ecrire (ValeurDeNom (Mot2 de Prog[CP])) . tmp) . M1) Fig. CP ←− CP + 1 M1 = ”X” ou M1 = ”Y” ou M1 = ”Z” : M3 ←− Mot3 de Prog[CP] . Interpr´tation et compilation e 441 CP ←− 1 tantque CP = N+1 M1 ←− Mot1 de Prog[CP] selon M1 : M1 = ”rem” : CP ←− CP + 1 M1 = ”read” : Lire (tmp) .1. CP ←− CP + 1 M1 = ”while” : tmp ←− ValeurDeNom (Mot2 de Prog[CP]) cond ←− (tmp = 0) si cond alors DebBoucle ←− CP .

on peut imaginer un pr´traitement qui e e consisterait ` produire ` partir du texte de programme l’´quivalent en asa a e sembleur ou en langage machine. le e e e programme est d’abord compil´ dans un code interm´diaire stock´ dans un e e e fichier. qui permet d’acc´l´rer les ex´cutions. lequel est ensuite interpr´t´. le constructeur fournit e e un ´mulateur du langage machine n sur la machine n + 1. Tant que cette forme interm´diaire n’est pas e stock´e dans un fichier persistant. pour pr´ciser e e e les probl`mes ` r´soudre dans le cas r´aliste o` les programmes ne sont pas e a e e u trait´s globalement par les outils de traduction. 2. ´crit dans un langage quelconque. C’est le cas du pascal UCSD compil´ en ee e P-code.3 Compilation dynamique Dans le cas de l’interpr´tation. Ce programme est un interpr`te du langage machine n. Si l’on construit une machine dont le langage machine est exactement le code interm´diaire. Si les deux machines sont tr`s diff´rentes. Pour certains d’entre eux il existe ´galement un ee e compilateur. a 1. Un ´mulateur est e e un programme. et compil´ e e sur la nouvelle machine.4. On trouve parfois le nom de compilation dynae e mique pour parler de ces situations. C’est le cas par exemple de ee e ml ou scheme.4 Emulation Nous avons vu au chapitre 12 la notion de compatibilit´ de familles de e processeurs. e e e e C’est le cas des macintosh : Apple fournit un ´mulateur de 68000 parmi e les programmes du logiciel de base fourni avec les machines ` PowerPC. En effet. de prolog et java. Le code objet des anciens programmes n’est e donc plus directement interpr´t´ par un processeur. Sinon le code interm´diaire doit ˆtre interpr´t´ par e e e ee programme. on peut consid´rer qu’il s’agit toujours d’un e e m´canisme d’interpr´tation. 1. on dispose d’un m´canisme d’ex´cution par compilation.5 Code interm´diaire e Pour certains langages de haut niveau.4.4. avec le nouveau compilateur C. e e e au sens d´fini plus haut. L’expos´ est bas´ sur un e e e .442 Vie des programmes habituellement interpr´t´s. mais par un programme. par exemple C. 1. il est difficile de dire si l’ex´cution e est assur´e par un m´canisme d’interpr´tation ou de compilation. ee lui-mˆme compil´ et ex´cut´ sur un autre processeur. Compilation s´par´e et code translatable e e Nous revenons sur le m´canisme d’ex´cution par compilation.

Noter toutefois que l’inclusion de fact. else return x * Fact (x-1) .h> include "fact. n.4 – (a) Factorielle en C exemple tr`s simple ´crit en C .h dans fact. } Fig. e e e e peuvent mˆme ˆtre rang´es dans des fichiers diff´rents.1 Un exemple en C Nous donnons figure 18.2 Notion de compilation s´par´e e e La compilation s´par´e consiste ` r´aliser la compilation d’un programme. R = Fact (n) .h */ extern long Fact (short) .c */ include "fact. 2. &n) .h" long Fact(short x) { if (x==0) return 1 . scanf ("%hd". pour ´viter des e e erreurs dues au m´canisme tr`s rudimentaire qui sert de support ` la programe e a mation modulaire en C. Ce fichier dit d’interface est inclus dans le fichier du programme principal.h qui contient le profil e de la fonction Fact.c qui contient le programme principal. cette redondance de d´finitions pere e e met de faire v´rifier au compilateur la conformit´ entre la version de Fact du e e fichier fact. c’est une pr´caution du programmeur. fact. 18. printf("Fact(%d)=%d". Le fichier d’interface est ´galement inclus dans le fichier qui contient la e d´finition compl`te de la fonction Fact . le lecteur familier d’un langage de ce type e e transposera facilement le discours dans le langage de son choix. Un langage comme Ada offre en revanche un support compl`tement contrˆl´. e 2.h" void main () { long R . } /* FICHIER fact. short n .c n’est pas obligatoire . e oe Les paragraphes suivants d´taillent la structure de l’exemple. e e a e en traitant s´par´ment diff´rentes portions de ce source qui. par cons´quent.4 un exemple de programme C d´compos´ en trois e e fichiers : main. R) . fact.c.c et la version publi´e dans fact.c */ include <stdio. e e e e .h ` l’usage d’autres fichiers utilie a sateurs comme main.2. /* FICHIER fact. lequel fait appel ` une a fonction Fact non d´finie dans ce fichier-l` . Compilation s´par´e et code translatable e e 443 /* FICHIER main. qui peut ainsi ˆtre compil´ ind´pendamment du fichier e e e qui contient le corps de la fonction Fact. printf("Donnez un entier : ") .c qui contient la d´finition e a e compl`te de la fonction Fact (profil et corps) .

β ou sur la structure du format des fichiers α1. e . on obtient le mˆme r´sultat γ en compilant s´par´ment les deux e e e e fichiers 1 et 2 grˆce ` l’outil α et en rassemblant les r´sultats grˆce ` l’outil a a e a a β. e il faut se poser 3 questions. En effet les deux probl`mes sont conceptuellement e ind´pendants. α(2)) = α(δ(1. L’examen des trois questions ci-dessus conduit ´galement ` ´tudier la notion e ae de port´e des noms dans un langage de programmation. dans le e e e e e cas de deux fichiers source. dont les r´ponses sont li´es : e e – Etant donn´ un programme donn´ dans un seul fichier source. la compilation e s´par´e fournit des outils α et β tels que le diagramme commute : e e γ = β(α(1). e Si le programme est constitu´ de deux fichiers source 1 et 2. de telle sorte e qu’ils puissent ˆtre trait´s ind´pendamment l’un de l’autre par l’outil α ? e e e – Quel type d’information doit-on trouver dans le format des fichiers α1.5 – Sch´ma g´n´ral de compilation s´par´e e e e e e La figure 18. 2)) Autrement dit. pour qu’il soit possible de d´finir l’outil β ? e – Que gagne-t-on ` mettre en oeuvre un tel m´canisme. On ´tend facilement au cas de n fichiers source. sans supposer tout de suite e que le format produit par l’outil α correspond ` du langage machine. α2. mˆme s’ils sont en g´n´ral trait´s conjointement dans les envie e e e e ronnements de programmation usuels. Cela a permet de comprendre la compilation s´par´e ind´pendamment de la produce e e tion de code translatable. 18. n´cessairement plus a e e compliqu´ que la compilation centralis´e ? e e Nous r´pondons ci-dessous aux trois questions.5 donne le sch´ma g´n´ral de la compilation s´par´e. qu’en compilant grˆce ` l’outil α le fichier obtenu par simple concat´nation a a e des fichiers source 1 et 2.444 Vie des programmes fichier source 1 outil α α1 outil β fichier source 2 concat´nation e de textes δ outil α α2 fichier γ outil α Fig. α2. Pour comprendre ce sch´ma de principe et les contraintes qui portent sur e la d´finition des outils α. comment e e s´parer ce programme en plusieurs fichiers source distincts.

et il est donc n´cessaire de disposer de ce bloc compl`tement en une seule e e fois. etc. comment produire du code ind´pendamment pour les diff´rents e e blocs. et le sch´ma de e e compilation s´par´e fonctionne : β se contente de concat´ner les textes α1. Pour g´n´rer le code d’un ape e e e pel de proc´dure.2. e l’interface fact. α2 soit plutˆt du langage o d’assemblage (ou du langage machine ´ventuellement assorti d’informations e suppl´mentaires.c : cela suffit pour savoir compiler l’appel de Fact. il est n´cessaire de connaˆ le profil exact de cette proc´dure. Ce fichier e est inclus dans le programme principal main. Cette distinction entre profil et corps de fonction conduit ` la notion e a d’interface de portion de programme. et du format des e fichiers α1. α2. Le profil d’une fonction est l’information n´cessaire et suffisante ` done a ner aux utilisateurs ´ventuels de cette fonction. Compilation s´par´e et code translatable e e 445 2. et information r´duite n´cessaire e e e e aux utilisateurs. e En r´alit´ la compilation d’un bloc n’est pas possible de mani`re e e e compl`tement ind´pendante des autres portions. Si la transformation α se r´duit ` ´liminer les commentaires. pae e ragraphe 3. il e ae suffit de d´couper le programme sans couper les commentaires. types. que le programme puisse ˆtre coup´ e e entre deux proc´dures ou fonctions . e a Supposons donc que le format des fichiers α1. e e ıtre e pour r´aliser correctement le passage de param`tres en tenant compte de la e e repr´sentation en m´moire des types des param`tres formels et du mode de e e e passage des param`tres.2. e Toutefois il n’est pas n´cessaire de connaˆ le corps de la proc´dure ape ıtre e pel´e. par exemple. Sur l’exemple du calcul de la fonction factorielle donn´ en C ci-dessus. e e e Toutefois il n’est pas int´ressant de d´velopper un tel m´canisme simplee e e ment pour r´aliser l’´limination des commentaires de mani`re s´par´e (voir e e e e e aussi la r´ponse ` la question “Que gagne-ton ?”). nous avons montr´ au chapitre 13. en revanche. et consid´rons un langage e e a e source du type de celui ´tudi´ au chapitre 4.2. La mˆme distinction entre e e d´finition compl`te d’un objet du programme. peut ˆtre ´tudi´e pour d’autres classes d’objets dans les lane e e gages de programmation : constantes. voir r´ponse ` la question suivante).h reprend la ligne de d´claration de la fonction Fact. e e Il paraˆ peu probable que la compilation s´par´e soit r´alisable si l’on ıt e e e coupe un fichier source au milieu du corps d’une fonction ou d’une proc´dure : e le principe de g´n´ration 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 sym´triques pour chaque e e e bloc. Il suffit ensuite de concat´ner les textes en langages d’assemblage (ou e les programmes en langage machine) obtenus pour les diff´rents blocs. On imagine facilement. .1 S´paration d’un programme et notion d’interface e La possibilit´ de s´paration d’un programme en plusieurs fichiers d´pend e e e du langage source dans lequel les programmes sont ´crits. variables. α2.

En effet.3 Notion de port´e des noms e Le conflit de noms ´ventuel rencontr´ lors de la fusion de deux fichiers e e produit par l’outil α suppose que les ´tiquettes d´finies dans les fichiers α1. Il faut maintenant savoir rassembler les diff´rentes portions e de code pour constituer le code du programme global. et doit simplement s’appeler main. la syntaxe du langage demande d’expliciter le programme principal. Chapitre 13.446 Vie des programmes 2. Un probl`me peut toutefois survenir lorsque les deux fichiers comportent e chacun une d´finition d’une ´tiquette L :. C’est le cas de C . Le code produit e pour ce bloc a la mˆme structure que celui produit pour une proc´dure ordie e naire. e 2. En effet..2. a e Pour obtenir le code du programme global. dans un e e texte en langage d’assemblage. de d´finir deux fois la mˆme ´tiquette. l’autre une portion de code ` l’´tiquette Fact : .end non nomm´. Reprenons l’exemple du d´coupage du programme entre les proc´dures et e e fonctions pour un langage dans lequel les programmes sont des collections de fonctions.h donnant le profil de la fonction Fact. le fichier concat´n´ repr´sente l’union des deux collections. e Cela signifie simplement que le choix du point d’entr´e dans le code produit ` e a partir du programme C se fait par convention sur un nom de fonction r´serv´. e e e Ces consid´rations sur les noms des ´tiquettes (qui correspondent aux noms e e des objets du programme en langage de haut niveau) nous am`nent ` d´finir e a e la notion de port´e des noms dans les langages de programmation. e Pour ces derni`res. α2 e e sont visibles partout. D’autres ont ´t´ cr´´es de toutes pi`ces pour coder les structures e e e ee e conditionnelles et it´ratives (Cf. en particulier les ´tiquettes qui rep`rent le d´but du code des fonctions et e e e proc´dures. e e e et l’ordre n’a pas d’importance. Puisque ce ne sont que deux collections de fonctions.c. L’inclusion du fichier fact. il est incorrect. il suffit de concat´ner les deux e fichiers en langage d’assemblage obtenus. il est particuli`rement ennuyeux qu’elles soient visibles e e partout.2 Rassemblement de codes Supposons que l’on a produit du code s´par´ment pour deux portions de e e programme source. e La situation typique de compilation s´par´e correspond au cas d’une fonce e tion d´finie dans le fichier source 1.1). et utilis´e dans le fichier source 2. Figure 13. et c’est le point d’entr´e du programme.2. Certaines d’entre elles proviennent de noms d’objets du programme source. e e e a Supposons que l’on a obtenu deux fichiers en langage d’assemblage qui contiennent : l’un une instruction du genre call Fact. pour g´n´rer correctement la s´quence d’appel ` la fonction. a servi dans la phase α. e e En Pascal.. dans le fichier main. en revanche. la compilation s´par´e d’un programme risque fort de proe e . comme e e la fonction Fact de l’exemple en C. dans un bloc begin. le programme principal n’est pas intrins`quement e diff´rent des autres fonctions du fichier.

e Pour les ´tiquettes provenant de noms d’objets du programme source. Il devient donc possible de d´finir e e e deux fonctions max dans deux modules diff´rents. si l’on imagine un programme vraiment tr`s grand. Dans un langage comme e Ada. on peut cacher la d´finition de la fonction max dans une e autre fonction. et le probl`me est r´duit : pour ces fonctions locales. Dans les lane e gages d’assemblage que nous avons utilis´s dans cet ouvrage. il est fort probable que deux d’entre eux e auront ´crit une fonction max pour des besoins locaux. C ansi. En C. Toutefois. Pour ˆtre visibles de l’ext´rieur (dans les e e e autres modules). ´crit e e par une ´quipe de 50 programmeurs. Pascal. sauf exportation explicite. L’interface d’un module r´capitule les objets d´finis dans ce module e e et utilisables ` l’ext´rieur. A l’int´rieur d’un module. impl´ment´e de mani`re plus ou moins propre et e e e contrˆl´e selon les langages. pour r´pondre ` la troisi`me e e e e a e question : que gagne-t-on ` mettre en oeuvre un m´canisme de compilation a e s´par´e ? e e . du moment qu’on ne les exe porte pas. o` un mˆme fichier peut contenir plusieurs u e modules ou packages. c’est souvent l’inverse : toute e ´tiquette d´finie est locale au fichier. consiste ` permettre un regroupement e e a d’objets du langage dans un module. e e e Le probl`me subsiste pour les fonctions principales. tout objet d´fini dans un fichier est par d´faut e e export´. En langage d’assemblage.2. e sans le partager ´galement avec tous les autres : la directive d’exportation est e tous azimuts. la notion de module correspond ` la structure de fichier. cela e peut paraˆ moins contraignant : il est ` la charge du programmeur de ne ıtre a pas d´finir deux fois la mˆme fonction dans deux fichiers diff´rents du mˆme e e e e programme. que l’on retrouve dans le m´canisme rudimentaire de e e d´finition de port´e par fichier en C.4 Avantages de la compilation s´par´e e e R´capitulons les aspects ´tudi´s ci-dessus. des objets e sont d´finis et localement utilisables. Un inconv´nient majeur est l’imposa e sibilit´ de partager un nom entre deux fichiers (ou modules) d’un programme. Ce n’est a pas le cas en Ada par exemple.2. a e En C. Pour cacher sa d´finition ` l’ext´rieur. l’exportation e explicite se fait par une directive . Ce m´canisme rudimentaire de masquage des noms ne saurait ˆtre qualifi´ e e e de support ` la programmation modulaire. il faut pr´fixer sa d´claration e e a e e e par le mot-cl´ static. ils doivent ˆtre export´s. Compilation s´par´e et code translatable e e 447 duire les mˆmes noms pour le codage des structures de contrˆle. 2. le mˆme e e e m´canisme de port´e que pour les variables locales de proc´dures s’applique.9 du chapitre 12). et ces noms e o seront identifi´s par l’outil de fusion β.global (voir par exemple l’exemple donn´ e Figure 12. oe L’id´e de base. qui ne sont incluses dans e aucune autre. Ces probl`mes trouvent une solution dans la structure de modules des lane gages de programmation.

3 Traduction des ´tiquettes en adresses et notion de e code translatable La notion de code translatable et son int´gration dans le sch´ma g´n´ral e e e e de compilation s´par´e pr´sent´ ci-dessus suppose que l’on fixe le format des e e e e . e e le chemin par concat´nation de textes rel`ve une erreur .6 donne un exemple obtenu par la e commande man cos sur un syst`me unix standard. Pour que l’argument tienne. Pour une compilation unique.5 ne commute donc pas r´ellement : e e si l’on d´finit deux fonctions de mˆme nom dans les fichiers source 1 et 2. Nous utilisons beaucoup dans les parties V et VI la programmation multilangages C et langage d’assemblage. qui donne les profils de ces proc´dures et fonctions. La figure 18. il faut ´galement que la e a e dur´e d’une ´tape β soit tr`s inf´rieure ` celle d’une ´tape α. il suffit de recompiler le fichier 1 et de r´aliser l’´tape β pour obtenir le programme e e ex´cutable ` jour. le e e chemin par compilation s´par´e ne rel`ve pas d’erreur. qui doivent ˆtre compilables dans le mˆme fore e mat. e – Le sch´ma de compilation s´par´e autorise ´galement la programmation e e e e multilangages : si l’on dispose. Cela implique toutefois de fortes contraintes sur la structure de L1 et L2. pour deux langages diff´rents L1 et L2. e e e e a e – Le sch´ma de compilation s´par´e permet aussi de d´velopper des proe e e e grammes complexes qui utilisent certaines portions de programmes directement sous forme compil´e. sin. le sch´ma de compilation e s´par´e ne peut pas ˆtre plus rapide qu’un sch´ma de compilation global. ` condition que les e e e a deux fonctions soient cach´es dans leurs fichiers respectifs. en revanche. et d’autres en L2. Attention. e e e e puisqu’il g`re des informations suppl´mentaires (voir d´tails ci-dessous). Le diagramme de la figure 18. c’est-`-dire non e a export´es. Il e e e est donc plus pr´cis de dire que l’on gagne du temps sur un ensemble de n e compilations : si l’on modifie le fichier 1 sans toucher au fichier 2.448 Vie des programmes – On gagne du temps de compilation. et un fichier texte dit d’interface. Ainsi tout syst`me unix est fourni avec de e e nombreuses biblioth`ques de fonctions utilisables dans des programmes C. etc. cet argument n’est valable qu’en raison des multiples compilations que subit un mˆme programme au e cours de sa vie. On y gagne la notion de biblioth`que. ou encore les fonctions e math´matiques cos. e 2. on peut rassembler les fichiers produits et obtenir un programme ex´cutable global. – Enfin le sch´ma propos´ permet de d´finir une notion de port´e des noms e e e e d’objets par fichier (mˆme si ce n’est pas ` proprement parler une bonne e a id´e). des e traducteurs α. e dont les fonctions d’entr´es/sorties printf et scanf. dont certaines parties ´taient ` l’origine ´crites e e a e en L1. Une biblioth`que de fonctions est compos´e e e e de deux fichiers : un fichier objet qui contient le code des proc´dures et e fonctions. distribuable e e sous forme compil´e seulement.

DESCRIPTION The cos() function computes the cosine of x.1 Utilisation relative d’un symbole Consid´rons le cas de l’instruction ba debut. dans α. NaN is returned. La notion d’utilisation relative de symbole est une propri´t´ intrins`que ee e . ` placer dans tout fichier utilisateur .2. Chapitre 12. If x is NaN or +Inf. et la phase β le minimum.3). 18. il est impossible de r´aliser. Il s’agit d’une utilisation relae tive du symbole debut (Cf. e Nous examinons le probl`me de la traduction des ´tiquettes en adresses.6 – Fonction cos de la biblioth`que math´matique. la ligne d’inclusion e e du fichier d’interface. cos() returns the cosine of x. Compilation s´par´e et code translatable e e 449 Mathematical Library cos(3M) NAME cos . ] include <math..h> double cos(double x) . RETURN VALUES Upon successful completion. paragraphe 1. L’assembleur compte les instructions et remplace ba debut par ba −4 (on compte en nombre d’instructions). sur un exemple en langage d’assemblage pour processeur sparc (Figure 18. que pour s’abstraire d’un e calcul explicite de la distance entre l’instruction de branchement et sa cible.3. Le choix de la nature des informations pr´sentes dans un fichier objet transe latable est le r´sultat d’un compromis entre deux contraintes : 1) la phase α e doit effectuer le maximum de travail. cela signifie simplement que le symbole debut n’est utilis´. dans l’instruction ba debut.. -lm [ library .. Le paragraphe SYNOPSYS e e indique successivement : la commande compilation et ´dition de liens ` utie a liser pour sp´cifier l’utilisation de la biblioth`que −lm . Il s’agit de langage machine. pour que l’argument de gain de temps tienne .4. le profil de la a fonction cos... 2. fichiers produits par l’outil α. 2) si l’on veut pouvoir placer le programme n’importe o` en m´moire.cosine function SYNOPSIS cc [ flag .