Vous êtes sur la page 1sur 569

http://fribok.blogspot.

com/

Architectures Logicielles et Matrielles e

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

http://fribok.blogspot.com/

Table des mati`res e


Introduction 1 Quest-ce quun ordinateur ? 1. Notion dinformation . . . . . . . . . . . 2. Lordinateur : une machine qui excute . e 3. O` sont le matriel et le logiciel ? . . . . u e 4. Fonctionnalits des ordinateurs . . . . . e 5. Plan du livre . . . . . . . . . . . . . . . 1 5 . 5 . 9 . 14 . 17 . 20

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

Outils de base de lalgorithmique logicielle et matrielle 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 boolennes e e 1. Alg`bre de Boole . . . . . . . . . . . . . . . . . . . . . . e 2. Fonctions boolennes . . . . . . . . . . . . . . . . . . . . e 3. Reprsentation des fonctions boolennes . . . . . . . . . e e 4. Manipulation de reprsentations de fonctions boolennes e e 5. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Reprsentation des grandeurs e 1. Notion de codage dinformations . . . . 2. Les naturels . . . . . . . . . . . . . . . . 3. Les relatifs . . . . . . . . . . . . . . . . 4. Lien entre larithmtique et les boolens e e 5. Les caract`res . . . . . . . . . . . . . . . e 6. Les nombres rels, la virgule ottante . e 7. Exercices . . . . . . . . . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

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

. . . . . .

. . . . . .

. . . . . .

. . . . . .

5 Reprsentation des traitements et des donnes : e e machines squentielles e 101 1. Machines squentielles simples . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 e 2. Machines squentielles avec actions . . . . . . . . . . . . . . . . . . . . . . . . 109 e

http://fribok.blogspot.com/

VI

Table des mati`res e

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

. . . .

. . . .

. . . .

121 122 126 127 133

II

Techniques de lalgorithmique matrielle e


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

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 cble : conception logique a e 4. Etude de cas . . . . . . . . . . . . . . . . 5. Exercices . . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

9 Elments de mmorisation e e 1. Points de mmorisation de bits : bascules et registres . . . . . . . e 2. La mmoire : organisation matricielle des points de mmorisation e e 3. Ralisation des mmoires statiques . . . . . . . . . . . . . . . . . e e 4. Optimisations et techniques particuli`res . . . . . . . . . . . . . . e 10 Circuits squentiels e 1. Notion de circuit squentiel . . . . . . . . . . . . . . . . . . e 2. Synth`se des automates dcrits par leur graphe . . . . . . . e e 3. Synth`se des circuits squentiels par ots de donnes . . . e e e 4. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Conception de circuits squentiels par e contrle et des oprations o e 1. Principe gnral . . . . . . . . . . . . e e 2. Notion de partie oprative type . . . . e 3. Partie contrle . . . . . . . . . . . . . o 4. Etudes de cas . . . . . . . . . . . . . . 5. Exercices . . . . . . . . . . . . . . . . sparation du e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

243 244 245 249 253 263

III

Techniques de lalgorithmique logicielle


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

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

http://fribok.blogspot.com/

Table des mati`res e

VII

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

. . . .

313 314 319 334 343

IV

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


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

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

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

Architecture dun syst`me matriel 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 matriel et logiciel simple e e 15 Relations entre un processeur et de la mmoire e 1. Le bus mmoire . . . . . . . . . . . . . . . . . . . e 2. Utilisation de plusieurs circuits de mmoire . . . e 3. Acc`s ` des donnes de tailles direntes . . . . . e a e e 4. Exercices . . . . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

16 Circuits dentres/sorties e 1. Notion dentres/sorties . . . . . . . . . . . . . . . . . e 2. Synchronisation entre le processeur et un priphrique e e 3. Connexion dorganes priphriques . . . . . . . . . . . e e 4. Programmation dune sortie . . . . . . . . . . . . . . . 5. Programmation dune entre . . . . . . . . . . . . . . e 6. Optimisation des entres/sorties groupes . . . . . . . e e 7. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . 17 Pilotes de priphriques e e 1. Structure dun pilote de priphrique e e 2. Pilote pour un clavier . . . . . . . . 3. Pilote pour un disque . . . . . . . . 4. Pour aller plus loin... . . . . . . . . . 18 Vie 1. 2. 3.

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

des programmes 435 Interprtation et compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 e Compilation spare et code translatable . . . . . . . . . . . . . . . . . . . . . 442 e e Format des chiers objets translatables et dition de liens . . . . . . . . . . . 454 e 463 465 466 470 476

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

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

http://fribok.blogspot.com/

VIII

Table des mati`res e

5.

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

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

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

VI

Architecture des syst`mes matriels e e et logiciels complexes


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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. Quappelle-t-on syst`me complexe ? . . . . . . . . . . . . . . e 2. Scrutation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Mcanisme dinterruption : dnition et types dutilisations e e 4. Plan de la suite . . . . . . . . . . . . . . . . . . . . . . . . . 22 Le mcanisme dinterruption e 1. Architecture dun processeur pour la multiprogrammation . 2. Introduction dun mcanisme de scrutation lmentaire . . . e ee 3. Un exemple dtaill dutilisation : mise ` jour de la pendule e e a 4. Notion de concurrence et datomicit des oprations . . . . e e 5. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Partage de temps et processus 1. Principe et dnitions . . . . . . . . . . . . . e 2. Structures de donnes associes aux processus e e 3. Organisation du traitant de commutation . . 4. Cration et destruction de processus . . . . . e 5. Exercices . . . . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

24 Gnralisation du mcanisme dinterruption et applications e e e 1. Classication des direntes sources dinterruption . . . . . . . e 2. Protection entre processus, notion de superviseur . . . . . . . . 3. Entres/sorties gres par interruption . . . . . . . . . . . . . . e ee 4. Pour aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . . Index Bibliographie

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

http://fribok.blogspot.com/

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

Ce quon ne trouvera pas dans ce livre


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

http://fribok.blogspot.com/

Introduction

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

Comment lire ce livre ?


Mthode de travail e On peut lire ce livre comme un roman, de la premi`re ` la derni`re page. e a e On peut galement le lire avec une salle de Travaux Pratiques ` porte de e a e la main, pour essayer toutes les techniques voques, les comparer, les analyser e e en dtail, etc. e On peut essayer de rsoudre tous les exercices et envoyer les solutions aux e auteurs, qui se feront un plaisir de les corriger : Paul.Amblard@imag.fr Jean-Claude.Fernandez@imag.fr Fabienne.Lagnier@imag.fr Florence.Maraninchi@imag.fr Pascal.Sicard@imag.fr Philippe.Waille@imag.fr On peut enn essayer de trouver des erreurs, de fond et de forme, et on y parviendra certainement. Th`mes e On peut privilgier une approche centre sur les langages de programmae e tion, leur traduction et la faon dont ils sont excuts. Sur la gure 0.1 cela c e e correspond aux `ches en traits gras. e
marque dpose, et dans la suite de louvrage nous ne prciserons plus que les noms de e e e syst`mes et de machines sont, videmment, dposs. e e e e 2 marque dpose e e 3 marque dpose e e
1

http://fribok.blogspot.com/

Introduction

2 : Alg`bre de Boole e 7 : Electronique

1 : LORDINATEUR 6 : Aspects temporels 3 : Reprsentation e des grandeurs 8 : Circuits combinatoires 10 11 : Circuits squentiels e 14 : LE PROCESSEUR

4 5 : Reprsentation e des traitements et donnes e 12 13 : Langages machine et dassemblage

9 : Elments de e mmorisation e

15 : Liaisons mmoire e processeur

16 17 : Matriel et e logiciel dentres / sorties e

18 : Vie des programmes

19 : Gestion de chiers 21 ` 24 :Syst`me complexe a e Interruptions Processus 20 : Interpr`te e de commandes

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

http://fribok.blogspot.com/

Introduction

On peut privilgier une approche de conception des circuits digitaux et e darchitecture de machine. Sur la gure 0.1 cela correspond aux `ches en e traits larges et hachurs. e On peut privilgier une approche centre sur larchitecture de haut niveau e e et les syst`mes dexploitation. Sur la gure 0.1 cela correspond aux `ches en e e traits pointills. e Il nen reste pas moins que les auteurs ont cherch ` mettre laccent sur la ea globalit et la complmentarit des 3 approches. e e e Index Les mots en italique apparaissent souvent en index. Dans lindex, les numros de page en gras indiquent les occurrences de dnition des mots. e e Les autres numros indiquent des occurrences dutilisation des mots, parfois e antrieures ` leur dnition, parfois postrieures. e a e e

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

http://fribok.blogspot.com/

Chapitre 1 Quest-ce quun ordinateur ?


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

1.

Notion dinformation

Une information est une entit abstraite, lie ` la notion de connaissance. e e a Nous nous intressons naturellement aux informations dun point de vue teche nique en informatique, non dun point de vue journalistique. Nous donnons direntes facettes de linformation et sparons ltude des informations de e e e celle des objets.

1.1

Quelques aspects dune information

Nous avons besoin pour cerner la notion dinformation de donner lorigine possible dune information et de montrer la ncessit de ses reprsentations e e e pour pouvoir envisager les manipulations dinformations dans les ordinateurs.

http://fribok.blogspot.com/

Quest-ce quun ordinateur ?

1.1.1

Origine dune information

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

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

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

http://fribok.blogspot.com/

1. Notion dinformation

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

1.2

Utilisation des informations dans lordinateur

Dans les ordinateurs les informations sont mmorises, transmises et e e traites. Nous retrouvons cette triple fonction dans le paragraphe 3.1.3 En e informatique lassociation du nom dune information et de la reprsentation e de la valeur constitue une variable. 1.2.1 Stockage (ou mmorisation) des informations e

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

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

http://fribok.blogspot.com/

Quest-ce quun ordinateur ?

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

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

1.3

Information par rapport ` objet, a logiciel par rapport ` matriel a e

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

http://fribok.blogspot.com/

2. Lordinateur : une machine qui excute e

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

1.4

Objet et description dobjet

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

2.

Lordinateur : une machine qui excute e

Lordinateur est un objet. Il excute des informations (les programmes) e a ` propos dautres informations (les donnes). Un ordinateur correspond ` un e a certain moule, un mod`le de calcul. e

http://fribok.blogspot.com/

10

Quest-ce quun ordinateur ?

Horloge

Initialisation Acc`s mmoire e e

Mot de m bits Adresses 0 1 2 3 Programme e Donnes 2n 1

Compteur 1 1 1 0 ... 0 Programme 0 0 1 0 ... 0 Registre Instruction 1 0 1 0 ... 1 0 0 1 1 ... 1 Registres de calcul

0 1 0 0 1 ... 0 Lecture/Ecriture 0 1 0 1 0 ... 1 bus donnes e m bus adresses n 1 1 1 1 0 ... 0 1 1 1 0 0 ... 1

Unit de calcul e Processeur

Mmoire centrale e

Fig. 1.1 Architecture simplie dune machine de Von Neumann e

2.1

Mod`le de calcul, machine de Turing e

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

http://fribok.blogspot.com/

2. Lordinateur : une machine qui excute e

11

2.2

Larchitecture de Von Neumann

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

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

http://fribok.blogspot.com/

12

Quest-ce quun ordinateur ?

2.2.2

Le processeur

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

http://fribok.blogspot.com/

2. Lordinateur : une machine qui excute e

13

Ecran Clavier Mmoire e centrale Fils spcialiss e e Coupleur de clavier Coupleur dcran e

Disque

Processeur

Coupleur de disque

Bus donnes e Bus adresses Fig. 1.2 Architecture matrielle simplie dun ordinateur e e

2.2.3

Liaisons entre le processeur et la mmoire e

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

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

http://fribok.blogspot.com/

14

Quest-ce quun ordinateur ?

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

3.

O` sont le matriel et le logiciel ? u e

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

3.1

Matriel e

Le matriel est pourtant plus directement accessible ` la vue. Nous allons e a lexaminer selon trois crit`res : son aspect, sa technologie et sa fonction. e 3.1.1 Aspect du matriel e

Une premi`re approche du matriel consiste ` le considrer selon son aspect. e e a e Un ordinateur peut ressembler ` une caisse surmonte dun cran. Noublions a e e

http://fribok.blogspot.com/

3. O` sont le matriel et le logiciel ? u e

15

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

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

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

http://fribok.blogspot.com/

16

Quest-ce quun ordinateur ?

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

3.2

Les programmes et les donnes e

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

3.3

La vie du matriel et des programmes e

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

http://fribok.blogspot.com/

4. Fonctionnalits des ordinateurs e

17

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

4.

Fonctionnalits des ordinateurs e

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

4.1

Les usages de lordinateur

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

http://fribok.blogspot.com/

18

Quest-ce quun ordinateur ?

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

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

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

http://fribok.blogspot.com/

4. Fonctionnalits des ordinateurs e

19

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

4.2

Tout ce qui est programmable est-il un ordinateur ?

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

http://fribok.blogspot.com/

20

Quest-ce quun ordinateur ?

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

5.

Plan du livre

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

http://fribok.blogspot.com/

5. Plan du livre

21

moins avec lapparence de la simultanit. e e

http://fribok.blogspot.com/

Premi`re partie e Outils de base de lalgorithmique logicielle et matrielle e

http://fribok.blogspot.com/

Chapitre 2 Alg`bre de Boole et fonctions e boolennes e


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

http://fribok.blogspot.com/

26

Alg`bre de Boole et fonctions boolennes e e

1.
1.1

Alg`bre de Boole e
Oprations e

Soit lensemble B = {0, 1}. On dnit une relation dordre total sur cet e ensemble en posant : 0 1. A partir de cette relation dordre, on dnit les e oprations suivantes sur les lments de B : e ee Addition : x + y = max(x, y) Multiplication : x.y = min(x, y) Complmentation : x = 0 si x = 1 et x = 1 si x = 0 e On utilise les termes de somme, produit et complment pour les rsultats e e de laddition, de la multiplication et de la complmentation. Le rsultat de e e ces oprations est dtaill dans la table suivante : e e e a 0 1 0 1 b 0 0 1 1 a+b 0 1 1 1 a.b 0 0 0 1 a 1 0 -

1.2

Dnition e

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

2. 0 est lment neutre pour laddition et 1 est lment neutre pour la ee ee multiplication. a A : 0 + a = a a A : a.1 = a 3. Laddition et la multiplication sont distributives lune par rapport ` a lautre : a A, b A, c A : (a + b).c = a.b + a.c et (a.b) + c = (a + c).(b + c).
Remarque : Lusage a consacr la priorit de la multiplication sur e e laddition comme dans la notation algbrique usuelle. Par souci de sime plication dcriture, on notera de faon quivalente : (a.b) + c ou a.b + c. e c e

http://fribok.blogspot.com/

1. Alg`bre de Boole e

27

4. Pour tout lement, la somme dun lment et de son complmentaire est e ee e gale ` 1 et le produit dun lment et de son complmentaire est gal ` e a ee e e a 0 : a A : a + a = 1 et a A : a. = 0. a

1.3

Exemples dAlg`bres de Boole e

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

1.4

Principaux thor`mes e e

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

boolenne 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

http://fribok.blogspot.com/

28

Alg`bre de Boole et fonctions boolennes 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 vrit de la fonction : y = f (x1 , x2 , x3 ) e e

R`gles de De Morgan e
duale a.b = a + a + b = a. b b

On peut gnraliser ` n variables : e e a x1 .x2 . . . . .xn = x1 + x2 + . . . + xn x1 + x2 + . . . + xn = x1 .2 . . . . .n x x


duale

2.
2.1
2.1.1

Fonctions boolennes e
Fonctions boolennes simples e
Dnitions e

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

2.1.2

Les fonctions ` 2 variables a

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

http://fribok.blogspot.com/

2. Fonctions boolennes 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 vrit des 16 fonctions ` deux variables e e a

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

On appelle duale dune fonction f la fonction note f telle que : f (X) = e On dit quune fonction est autoduale si f (X) = f (X), X. f (X).

2.2

Fonctions boolennes gnrales e e e

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

2.3

Relations dordre

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

http://fribok.blogspot.com/

30

Alg`bre de Boole et fonctions boolennes e e

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

2.4

Fonctions phi-boolennes e

Une fonction boolenne partielle est une fonction boolenne dont la valeur e e nest pas dnie en chaque point. Dans la pratique les fonctions partielles e sont utilises pour dnir des fonctions dont la valeur en certains points est e e indirente ou dont la valeur des entres en certains points est impossible. e e On peut coder une fonction partielle f par une fonction totale dont le codomaine est complt par une valeur appele . La valeur est associe ee e e aux points non dtermins de f . Une telle fonction est dite phi-boolenne. e e e Dnition On appelle fonction phi-boolenne une application f de {0, 1}n e e dans {0, 1, } : (x1 , x2 , ..., xn ) f (x1 , x2 , ..., xn ).
Remarque : Le choix de la lettre vient de sa forme qui peut tre vue e comme la superposition dun 1 et dun 0.
f

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

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

http://fribok.blogspot.com/

3. Reprsentation des fonctions boolennes e e

31

3.

Reprsentation des fonctions boolennes e e

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

3.1
3.1.1

Expressions algbriques e
Dnitions e

Expression boolenne algbrique : Toute fonction boolenne peut tre e e e e reprsente par une expression algbrique construite ` partir des noms des e e e a variables simples de la fonction, des constantes 0 et 1, et des oprations de e lalg`bre de Boole. Par exemple, f (x1 , x2 ) = x1 .(x2 + x1 .x2 ) ou g(x1 , x2 ) = e 1.(0 + x1 .x2 ). Cette reprsentation nest pas unique. Par exemple, x1 .(x2 + x1 .x2 ) + x2 et e x1 + x2 sont deux expressions algbriques dune mme fonction. e e Littral : On appelle littral loccurrence dune variable ou de son e e complment dans une expression algbrique. Les littraux apparaissant dans e e e lexpression de la fonction f dnie ci-dessus sont : x1 , x2 , x2 . e Monme : On appele monme un produit de p littraux distincts. Par o o e exemple, x1 .x2 .x3 . Un monme est dit canonique pour une fonction sil contient o toutes les variables de la fonction. Chaque ligne de la table de vrit correse e pond ` un monme canonique. On note dans le monme x si la variable x vaut a o o 0, x si elle vaut 1. Dans la table 2.1 la deuxi`me ligne correspond au monme e o canonique x1 .x2 .x3 . Forme polynmiale : On dit quune expression est sous forme polynmiale o o si elle est crite sous forme de somme de monmes. Par exemple, f (x1 , x2 ) = e o x1 + x1 .x2 .

http://fribok.blogspot.com/

32

Alg`bre de Boole et fonctions boolennes e e

3.1.2

Thor`me de Shannon e e

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

En appliquant successivement le thor`me de Shannon sur toutes les vae e riables de la fonction, on obtient une forme polynmiale compose de tous les o e monmes canoniques aects de coecients correspondant aux valeurs de la o e fonction. Par exemple, pour une fonction ` deux variables on obtient : a f (x1 , x2 ) = x1 .f (0, x2 ) + x1 .f (1, x2 ) f (x1 , x2 ) = x1 .(x2 .f (0, 0) + x2 .f (0, 1)) + x1 .(x2 .f (1, 0) + x2 .f (1, 1)) f (x1 , x2 ) = x1 .x2 .f (0, 0) + x1 .x2 .f (0, 1) + x1 .x2 .f (1, 0) + x1 .x2 .f (1, 1) Cette forme est appele premi`re forme de Lagrange. Toute fonction e e poss`de une et une seule forme de ce type. Cest une expression canonique. e On simplie en gnral cette forme en supprimant tous les monmes dont le e e o coecient est 0 et en enlevant les coecients ` 1. a Exemple E2.2 : Premi`re forme de Lagrange dune fonction e x1 x2 Soit h une fonction ` deux variables dnie par la a e 0 0 table ci-contre. Son expression algbrique sous la e 0 1 premi`re forme de Lagrange est : e h(x1 , x2 ) = x1 .x2 .1 + x1 .x2 .1 + x1 .x2 .0 + x1 .x2 .0 = 1 0 x1 .x2 + x1 .x2 qui se simplie en x1 . 1 1

y 1 1 0 0

En utilisant la forme duale du thor`me de Shannon, on obtient la deuxi`me e e e forme de Lagrange, un produit de sommes appeles monales. e 3.1.4 Expressions polynmiales des fonctions ` 2 variables o a

La gure 2.3 donne lexpression polynmiale des 16 fonctions de deux vao riables boolennes. e En logique, la somme est aussi appele disjonction alors que dans le domaine e des circuits, cest lopration ou exclusif qui est appele disjonction. e e

http://fribok.blogspot.com/

3. Reprsentation des fonctions boolennes e e

33

Fonctions Expressions f0 0 f1 x1 .x2 f2 x1 .x2 f3 x1 f4 x1 .x2 f5 x2 f6 x1 .x2 + x1 .x2 f7 x1 + x2 f8 x1 + x2 f9 x1 .x2 + x1 .x2 f10 x2 f11 x1 + x2 f12 x1 f13 x1 + x2 f14 x1 .x2 f15 1

Noms usuels et, and, produit

ou exclusif ou, or, somme ni, non ou, nor conjonction complment de x2 e complment de x1 e implication exclusion, non et, nand tautologie

Fig. 2.3 Expression polynmiale des fonctions ` deux variables o a

3.2

Tableaux de Karnaugh

3.2.1

Dnition e

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

http://fribok.blogspot.com/

34

Alg`bre de Boole et fonctions boolennes e e

c (0,0,1) (1,0,1) (0,0,0) (1,0,0) a (a) (1,1,0) (b) (1,1,1) (0,1,0) b (0,1,1) 0 1 00 * O 01 O 11 10 O

Fig. 2.4 a) Reprsentation sur un hypercube ` 3 dimensions dune fonction ` trois e a a variables a, b et c. b) Prsentation du tableau de Karnaugh associ ; les cases e e marques dun O sont adjacentes ` la case marque dune toile. e a e e

ab 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..d c 10

Fig. 2.5 Un tableau de Karnaugh ` 4 variables a

3.2.2

Obtention dune somme de monmes ` partir dun tableau o a de Karnaugh

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

http://fribok.blogspot.com/

3. Reprsentation des fonctions boolennes 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.6 Un tableau de Karnaugh ` 5 variables a

a. d.(c + c) = a.b.d + a. d = a.d.(b + = a.d. b. b. b) Ce type de reprsentation est bien adapt aux fonctions de 2 ` 5 variables. e e a Les fonctions ` 5 variables peuvent tre reprsentes sur deux tableaux de a e e e Karnaugh ` 4 variables (lun pour une des variables ` 0, lautre pour cette a a mme variable ` 1). Deux cases situes ` la mme place sur les 2 tableaux sont e a e a e adjacentes. Sur la gure 2.6, les 2 regroupements griss sont un seul monme : e o a..d. Il correspond ` la simplication ` partir des 4 monmes canoniques c a a o suivants : a. c.d.+ a.b..d.+ a. c.d.e+ a.b..d.e = a..d..(b+ a..d.e.(b+ b. e c e b. c c e b)+ c = a..d. + a..d.e = a..d.(e + e) = a..d. b) c e c c c Lexpression polynmiale de la fonction dnie par les tableaux de Karo e naugh de la gure 2.6 est a..d + a.c. + a.d.e + a. c.d. c e b. On peut procder de la mme mani`re pour des fonctions ` 6 variables en e e e a dessinant 4 tableaux ` 4 variables, au-del` cela devient inextricable. a a 3.2.3 Obtention dun produit de monaux

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

3.3

Graphes de dcision binaire e

Les graphes de dcision binaire (en anglais Binary Decision Diagram : e BDD) ont t introduits par Akers et Bryant dans les annes 80 ([Bry86]). ee e Ils sont utiliss dans les outils de C.A.O. de synth`se logique depuis une die e

http://fribok.blogspot.com/

36

Alg`bre de Boole et fonctions boolennes e e

ab

00 1 0

01 1 0

11 1 0

10 1 1 +c b

0 a+c 1

Fig. 2.7 Monaux sur un tableau de Karnaugh f xi 0 fxi 1 fxi

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

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

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

http://fribok.blogspot.com/

3. Reprsentation des fonctions boolennes e e

37

f a a

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

est unique.

3.3.2

Redondance dans les arbres de Shannon

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

http://fribok.blogspot.com/

38

Alg`bre de Boole et fonctions boolennes e e

f a a

f a

1 (a)

0 (b)

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

4.

Manipulation de reprsentations e de fonctions boolennes e

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

http://fribok.blogspot.com/

4. Manipulation de reprsentations de fonctions boolennes e e

39

4.1

Formes particuli`res pour lexpression dune e fonction boolenne e

La plupart des technologies cibles actuelles (Cf. Chapitre 8) ncessitent des e dcompositions des fonctions en expressions dune forme particuli`re. e e Pour certaines cibles technologiques une forme non polynmiale, appele o e forme factorise, peut tre ncessaire. Le crit`re de minimisation est le nombre e e e e de littraux apparaissant dans lexpression de la fonction. Par exemple, la e forme algbrique de la fonction : f (a, b, c, d) = a.( c + d)) + a.b poss`de e b.( e 6 littraux. Des mthodes ont t mises au point permettant dautomatiser e e ee la recherche de formes factorises ` nombre de littraux minimal. Le lecteur e a e pourra trouver des dtails sur ces mthodes dans [BRWSV87]. Il est ` noter que e e a ces mthodes sont aujourdhui souvent employes sur des formes en ROBDDs. e e On peut vouloir aboutir ` une reprsentation de forme quelconque mais ` a e a nombre de variables limit, par exemple, un ensemble de fonctions dau plus e 8 variables. On peut souhaiter une forme polynmiale ` nombres de monmes o a o et de variables limits, par exemple, un ensemble de fonctions dau plus 10 e monmes possdant chacun au plus 6 variables. Il peut aussi tre ncessaire de o e e e reprsenter les fonctions avec un ensemble de formes xes. Ce sont en gnral e e e e des formes de petite taille (nombre de variables infrieur ` 6) avec des formes e a polynmiales ou factorises xes strictement. On parle alors de biblioth`que. o e e e On devra par exemple aboutir ` un ensemble de fonctions possdant une des a e formes suivantes : a + b, a. a.b, a.b + a.c ou a. + a.b. b, b Le probl`me est donc dans tous les cas de partir dune fonction boolenne e e et daboutir ` un ensemble de fonctions respectant la ou les formes imposes a e par la technologie cible. Des algorithmes propres ` chaque technologie ont t a ee dvelopps. e e Les crit`res doptimisation sont alors le nombre de fonctions (qui est li ` la e ea surface du circuit rsultant) et le nombre dtages de sous-fonctions imbriques e e e (qui est li au temps de calcul du circuit). Le nombre dtages maximal est e e appel chemin critique. e Exemple E2.3 Soit la fonction f dnie par lexpression algbrique : e e f (a, b, c, d) = a.b.c + a. c + c.d + c.d. Regardons les solutions auxquelles on b. peut aboutir avec des formes cibles direntes. e Si lon veut aboutir ` des fonctions possdant au plus trois variables : a e avec SF = a.b.c + a. c. Le nombre de littraux f (a, b, c, d) = SF + c.d + c.d b. e est 11. Le nombre de fonctions imbriques maximal est gal ` 2 : (f, SF ). Une e e a nouvelle fonction appele sous-fonction SF a t introduite pour parvenir ` e ee a un ensemble de fonctions respectant le crit`re. e Si lon veut aboutir ` des fonctions possdant au plus deux monmes de a e o trois variables : f (a, b, c, d) = SF1 + SF2 avec SF1 = a.b.c + a. c et SF2 = b. c.d + c.d. Deux sous fonctions ont t introduites. Le nombre de littraux est ee e 12 . Le chemin critique est gal aussi ` 2. e a

http://fribok.blogspot.com/

40

Alg`bre de Boole et fonctions boolennes e e

Si lon veut aboutir ` des fonctions de la forme a + b ou a. ou a.b ou a b + a.b : f (a, b, c, d) = SF1 + SF2 avec SF1 = a.SF3 + a.SF4 et a.b + a.c ou a.b SF2 = c.d + c.d. De plus SF3 = b.c et SF4 = c. Le nombre de littraux est b. e 14. Le chemin critique est gal ici ` 3 (f, SF1 , SF3 ). e a

4.2

Obtention dune forme polynmiale o

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

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

On peut obtenir de faon tr`s visuelle les monmes premiers sur un tableau c e o de Karnaugh ` 2 dimensions en cherchant les pavs de cases adjacentes valant a e 1, les plus grands possible. Exemple E2.4 La fonction reprsente sur la gure 2.11 poss`de 5 e e e d, M 4 = a..d, monmes premiers : M 1 = b., M 2 = b.c.d, M 3 = a.b. o c c Elle poss`de 2 bases irrdondantes : M 1 + M 2 + M 4 + M 5 M 5 = a.b.c. e e et M 1 + M 2 + M 3. Lexpression minimale (en nombre de monmes) de la o fonction est : f = b. + c b.c.d + a. d b.

http://fribok.blogspot.com/

4. Manipulation de reprsentations de fonctions boolennes 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. 2.11 La base compl`te dune fonction boolenne e e

4.2.3

Probl`me de la minimisation polynmiale e o

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

http://fribok.blogspot.com/

42

Alg`bre de Boole et fonctions boolennes 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. 2.12 a) Une fonction Phi-Boolenne f . b) La base compl`te de la borne suprieure e e e de f . c) La seule base irrdondante de f . e

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

http://fribok.blogspot.com/

4. Manipulation de reprsentations de fonctions boolennes 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. 2.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. 2.14 La base compl`te de la fonction gnrale F = (f1 , f2 ) e e e

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

http://fribok.blogspot.com/

44

Alg`bre de Boole et fonctions boolennes 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. 2.15 La base irrdondante minimale de la fonction gnrale F e e e

F sont : M 1 + M 2 + M 3 + M 5 + M 6 et M 2 + M 5 + M 6 + M 7 et les 4 monmes o de la base irrdondante minimale : M 6, M 7, M 5 et M 2. e

4.3

Obtention de BDDs rduits ordonns e e

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

http://fribok.blogspot.com/

4. Manipulation de reprsentations de fonctions boolennes e e

45

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

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

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

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

http://fribok.blogspot.com/

46

Alg`bre de Boole et fonctions boolennes e e

5.

Exercices

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

E2.11 : Expression boolenne e Donner une expression boolenne de la fonction f (a, b, c) qui vaut 1 si et seulee ment si la majorit de ses trois variables vaut 1. e E2.12 : Ou exclusif Dmontrer que loprateur ou-exclusif (not ) dni par x1 x2 = x1 .x2 + e e e e x1 .x2 est associatif. E2.13 : Thor`me de Shannon e e Dmontrer la premi`re forme du thor`me de Shannon. e e e e E2.14 : Formes de Lagrange Obtenir la deuxi`me forme de Lagrange de la fonction f (x1 , x2 ) = x1 .x2 + x1 .x2 e a ` partir de la deuxi`me forme du thor`me de Shannon. e e e E2.15 : Poids dun vecteur boolen e On appelle poids dun vecteur boolen le nombre de 1 de ce vecteur. le vecteur e (0, 1, 1, 0) a un poids de 2. Donner des expressions boolennes des fonctions e simples p2 , p1 et p0 qui correspondent au codage en base 2 du poids dun vecteur de 4 variables boolennes x1 , x2 , x3 , x4 . e

http://fribok.blogspot.com/

5. Exercices

47

a f e d Fig. 2.17 Reprsentation du chire 3 sur un acheur 7 segments e g b c

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

http://fribok.blogspot.com/

Chapitre 3 Reprsentation des grandeurs e


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

1.
1.1

Notion de codage dinformations


Codage binaire

A un instant donn N ls lectriques sont chacun ` 0 ou ` 1. Il est ncessaire e e a a e didentier chacun des ls par un numro, par exemple entre 0 et N 1. Lene

http://fribok.blogspot.com/

50

Reprsentation des grandeurs e

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

1.2

Un exemple : le codage des couleurs

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

http://fribok.blogspot.com/

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 ple a bleu ple a gris ple 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 ple a bleu ple a

b3 b2 b1 b0 1010 1011 1100 1101 1110 1111

vert ple a cobalt rose mauve jaune blanc

Fig. 3.2 Codage des couleurs pour PC, carte CGA

individuelle de chaque bit nexiste pas dans le premier code.

1.3

Codage 1 parmi n

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

2.
2.1
2.1.1

Les naturels
Reprsentation des entiers naturels e
Numration de position e

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

http://fribok.blogspot.com/

52

Reprsentation des grandeurs e

par lquation : e
N 1 N 1

X=
i=0

valeur(xi )

ou, pour simplier : X =


i=0

i xi

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

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

http://fribok.blogspot.com/

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 Reprsentations binaire, hexadcimale e e

Ce principe de la numration de position peut sappliquer avec une base e enti`re quelconque suprieure ou gale ` 2. Si la base est 2 on parle de e e e a numration binaire, pour la base 8 de numration octale, pour la base 16 e e dhexadcimal. En base 2, sur N chires, tous les naturels compris au sens e large entre 0 et 2N 1 sont reprsentables. On pourrait parler de chire des e deuzaines, des quatraines, ou des seizaines mais ces mots ne sont pas dans le lexique courant. Lintrt de la base 2 est que les deux chires 0 et 1 peuvent ee facilement tre reprsents par les deux boolens 0 et 1, ou par les tats bas e e e e e et haut dun l lectrique. Ce codage des nombres est le seul utilis dans les e e ordinateurs. Nous emploierons les termes de chires binaires ou de bits indistinctement. Les 16 chires hexadcimaux sont 0, 1, . . . , 8, 9, A, B, C, D, E, F e reprsentant les valeurs des naturels de 0 ` 15. On a videmment e a e valeur(A) = 10, . . ., valeur(F ) = 15. On peut aisment convertir un nombre crit en base 16 vers la base 2 e e et rciproquement. Il sut pour cela de convertir par tranches de 4 chires e binaires, ou dun chire hexadcimal. Ainsi dans lexemple suivant gurent e les deux critures lune en dessous de lautre : e 4 7 B 8 3 0011 0100 0111 1011 1000 En eet le chire hexadcimal B reprsente le naturel 1110 , qui en binaire e e scrit 1011, et 347B816 = 001101000111101110002 . e On remarque l` une analogie avec le passage de lcriture dcimale ` a e e a lcriture en langue naturelle. Ici gurent lcriture dun nombre en base e e dcimale et son criture en franais (les espaces ne sont pas signicatifs) : e e c 730 105 104 cent quatre millions sept cent trente mille cent cinq

2.2

Oprations sur les vecteurs boolens reprsentant e e e les naturels

Etant donns deux naturels A et B, reprsents respectivement par M et e e e N bits, on cherche ` trouver un procd de calcul, ou de fabrication, des bits a e e reprsentant A + B, A B, A B, . . . (une approche tr`s compl`te se trouve e e e dans [Mul89]).

http://fribok.blogspot.com/

54

Reprsentation des grandeurs e

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

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

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

http://fribok.blogspot.com/

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 daddition


aN1 aj+1 aj a1 a0

bN1

bj+1

bj

b1

b0

0 rep e0
sj s1 s0

repe(j+1) = rep sj rep


s(N1)

sN1

sj+1

Fig. 3.3 Schma de principe dun additionneur e

En binaire le procd est identique mais les ai et bi valent 0 ou 1. Les deux e e fonctions de calcul du report et du chire de somme sont dnies pour des e triplets de nombres 0 ou 1. La fonction report sortant dun tage daddition binaire est la fonction e majorit. On la note maj. maj(x, y, z) vaut 1 si et seulement si x + y + z 2. e La fonction calculant le chire de somme est la somme modulo 2 de 3 entiers. On la note . (x, y, z) = (x + y + z) si maj (x, y, z) = 0 (x, y, z) = (x + y + z 2) si maj (x, y, z) = 1. Les tables daddition pour un tage sont donnes par la gure 3.4. e e Pour laddition de deux nombres ` N bits, les formules sont donnes par a e les quations suivantes qui utilisent les reports intermdiaires ri o` ri+1 est la e e u retenue sortante de ltage numro i : e e s0 = (a0 , b0 , 0) si = (ai , bi , ri ) r1 = maj (a0 , b0 , 0) ri+1 = maj(ai , bi , ri ) i. 1 i N 1

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

http://fribok.blogspot.com/

56

Reprsentation des grandeurs e

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

2.2.3

Multiplication et division enti`re par une puissance de 2 e

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

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

http://fribok.blogspot.com/

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 queectuer laddition de P 1 et P 4 est tr`s facile. Lun des deux e nombres na que des 0 l` o` lautre a des chires signicatifs. a u Une autre expression du produit reprend simplement lcriture binaire : e 3 2 1 0 puisque 1410 = 1 2 + 1 2 + 0 2 + 1 2 , on a aussi 1410 13 = 1 23 13 + 1 22 13 + 0 21 13 + 1 20 13. On a vu que le calcul du produit de 13 par une puissance de 2 revient ` crire 1101 suivi du bon nombre ae de 0. La multiplication se rduit alors ` une suite dadditions et de dcalages. e a e

2.2.5

Soustraction

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


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

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

http://fribok.blogspot.com/

58

Reprsentation 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 daddition modie e

On peut aussi utiliser les expressions pour chaque tage : e es = 1 si ai < bi + ee cest-`-dire si ai (bi + ee ) < 0 a es = 0 si ai bi + ee di = ai (bi + ee ) si es = 0 di = 2 + ai (bi + ee ) si es = 1
Remarque : Dans les processeurs, apr`s une soustraction, le e complmentaire du bit demprunt sortant est disponible dans le mot dtat e e sous le nom de bit indicateur C. Il vaut 0 si la dirence de deux naturels e cods sur N bits est positive, donc reprsentable sur N bits. e e

3.
3.1

Les relatifs
Reprsentation des entiers relatifs e

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

http://fribok.blogspot.com/

3. Les relatifs

59

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

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

http://fribok.blogspot.com/

60

Reprsentation des grandeurs e

3.2
3.2.1

Oprations sur les vecteurs boolens reprsentant e e e les relatifs


Extension et rduction de format e

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

Soient A et B reprsents en complment ` 2 par aN 1 , aN 2 , . . . , a1 , a0 e e e a et bN 1 , bN 2 , . . . , b1 , b0 . On a :


N 2 N 2

A = (2

N 1

) aN 1 +
i=0

2 ai ,

B = (2

N 1

) bN 1 +
i=0

2i bi

Comme pour les naturels, dterminons si la somme peut tre reprsentable e e e sur N bits et comment les bits de la somme peuvent tre exprims. On pose : e e
N 2 N 2

=
i=0

2 ai ,

=
i=0

2i bi ,

= ( + ) modulo 2N 1

avec : [0, 2N 1 1], On a videmment : e A = 2N 1 aN 1 + et, de mme, e B = 2N 1 bN 1 + . Soit re dni par : e + = re 2N 1 + . re vaut donc 1 ou 0. Cest le report sortant du calcul de + . est la somme + prive de son bit de poids fort re . e Soit S la somme de A et de B. S = 2N 1 (aN 1 + bN 1 ) + ( + ) = 2N 1 (aN 1 + bN 1 re ) + [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 chires binaires.

http://fribok.blogspot.com/

3. Les relatifs

61

Nombre de bits ncessaires pour reprsenter S La premi`re question e e e est : S est-il reprsentable sur N bits en complment ` 2 ? Cest-`-dire a-t-on e e a a 2N 1 S 2N 1 1 ? Examinons les deux cas o` la rponse est non. u e Premier cas : S < 2N 1 2N 1 (aN 1 + bN 1 re ) + < 2N 1 2N 1 (aN 1 + bN 1 re 1) < 2N 1 (aN 1 + bN 1 re 1) > Puisque [0, 2N 1 1], cette ingalit ne peut tre vrie avec certie e e e e tude que si aN 1 + bN 1 re 1 1 cest-`-dire si aN 1 + bN 1 re 1 = 1. a Ce qui ne se produit que si aN 1 = bN 1 = 1 et re = 0. Si lon pose rs = maj(aN 1 , bN 1 , re ), on a dans ce cas rs = 1 = re . Deuxi`me cas : S > 2N 1 1 e 2N 1 (aN 1 + bN 1 re ) + 2N 1 (aN 1 + bN 1 re ) + 2N 1 (aN 1 + bN 1 re + 1) 2N 1 (aN 1 + bN 1 re + 1) > 2N 1 1 2N 1

Cette ingalit ne peut tre vrie avec certitude que si e e e e e aN 1 + bN 1 re + 1 0 cest-`-dire si aN 1 + bN 1 re + 1 = 0 a Ce qui ne se produit que si aN 1 = bN 1 = 0 et re = 1. Dans ce cas rs = maj (aN 1 , bN 1 , re ) = 0 = re . Dans tous les autres cas 2N 1 S 2N 1 1, cest-`-dire pour a aN 1 aN 1 aN 1 aN 1 = bN 1 = 0, re = bN 1 = 1, re = 1, bN 1 = 0, = 0, bN 1 = 1, =0 =1 re quelconque re quelconque

la somme S de A et B est reprsentable sur N bits en complment ` 2. On a e e a alors rs = re . Le tableau suivant rcapitule les dirents cas. e e
aN 1 1 0 0 1 1 0 bN 1 1 0 0 1 0 1 re 0 1 0 1 x x rs 1 0 0 1 x x Interprtation e Premier cas : S < 2N 1 Deuxi`me cas : S > 2N 1 1 e Somme reprsentable e Somme reprsentable e Somme reprsentable e Somme reprsentable e aN 1 + bN 1 re 2 -1 0 1 x x

http://fribok.blogspot.com/

62

Reprsentation des grandeurs e

Notons s = (aN 1 , bN 1 , re ). Deux expressions boolennes dcrivent la e e valeur du bit de dbordement V apr`s une addition : e e V = aN 1 .bN 1 .s + aN 1 .bN 1 .s V = rs ou exclusif re La premi`re appara souvent dans les documents des constructeurs de procese t seurs. Lexercice E3.9 propose de montrer lquivalence des deux expressions. e Linterprtation est facile : aN 1 tant interprt comme le bit de signe dun e e ee oprande, bN 1 comme lautre et s comme le bit de signe du rsultat calcul e e e par le processeur, le cas aN 1 = 1, bN 1 = 1, s = 0 signierait que la somme de deux ngatifs est positive. Cela se produit si re = 0. e Calcul des bits de S On se pose une deuxi`me question : comment calculer e la reprsentation en complment ` 2 de S, si elle existe, cest-`-dire comment e e a a trouver le vecteur sN 1 , sN 2 , . . . , s1 , s0 tel que
i=N 2

S = 2 On sait que S=

N 1

sN 1 +
i=0

2i si

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

avec [0, 2N 1 1]

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

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

http://fribok.blogspot.com/

3. Les relatifs

63

Ecriture de loppos Soit A un relatif reprsent sur N bits en complment e e e e a ` 2 par aN 1 aN 2 , . . . , a1 a0 . On a :


N 1

A = (2 aN 1 ) +
i=0

2i ai

Complmentons chaque bit de A (en remplaant ai par 1 ai ), le rsultat est e c e un nombre A dni par : e
N 1

A = 2 (1 aN 1 ) +
i=0

2i (1 ai )

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

Puisque laddition est connue, ainsi que le passage ` loppos, la soustraca e tion ne pose pas de probl`mes : il sut de se souvenir que A B = A + (B). e Comme pour laddition, les constructeurs de processeurs donnent lexpression boolenne du bit V de dbordement apr`s une soustraction : e e e V = aN 1 .bN 1 .s + aN 1 .bN 1 .s Lexercice E3.9 revient sur cette expression. 3.2.4 Multiplication et division par une puissance de 2

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

http://fribok.blogspot.com/

64

Reprsentation des grandeurs e

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

4.

Lien entre larithmtique et les boolens e e

Le fait que les chires binaires 0 et 1 se reprsentent par les boolens 0 et e e 1 am`ne souvent ` faire des amalgames de types. Ainsi on assimile parfois a e a et 1 a (en traitant le boolen a comme un entier). En dduire lexistence e e dune soustraction boolenne est une grosse erreur. e Les vecteurs boolens peuvent reprsenter des nombres, on vient de le voir. e e On a vu dans le chapitre 2 que les oprations boolennes existent aussi sur les e e vecteurs : laddition boolenne, nomme aussi OU bit ` bit, la multiplication e e a boolenne, nomme aussi ET bit ` bit et la complmentation. e e a e Que signieraient ces oprations appliques ` des vecteurs reprsentant des e e a e entiers ? Elles gardent leurs proprits algbriques, mais sont peu intressantes ee e e arithmtiquement. Laddition boolenne ne correspond pas ` laddition des e e a naturels ou des relatifs reprsents par les deux vecteurs. De mme pour la e e e multiplication. On obtient, par exemple, sur 8 bits : 011100002 ET 010110112 = 11210 ET 9110 = 010100002 = 8010 011100002 OU 010110112 = 11210 OU 9110 = 011110112 = 12310 La seule opration intressante pour larithmtique est la troncature : pour e e e tronquer un naturel A, reprsent sur N bits, ` P bits (avec P < N ), il sut e e a de calculer le ET entre A et un vecteur ayant des 0 en poids forts et P 1 en poids faibles : 0 . . . 01 . . . 1. Ce vecteur reprsente le naturel 2P 1. e

http://fribok.blogspot.com/

5. Les caract`res e

65

On a donc A ET (2P 1) = A modulo 2P . Si un naturel X est cod sur n bits, on peut le dcomposer en deux e e naturels p et q, respectivement cods sur k et n k bits. Si p est la partie e poids fort et q la partie poids faible, selon le tableau : n1 p k bits on a les relations suivantes : X = p 2nk + q, nk nk1 q n k bits q = X modulo 2nk , p = X div 2nk 0

Le ET, le OU et le OU exclusif sur les vecteurs de N bits servent aussi : ` a i conna le bit de rang i dun nombre X (en calculant X ET 2 ) ; ` forcer ` tre a a 0 le bit de rang i dun nombre X (par X ET (2N 1 2i ) ) ; ` forcer ` 1 le a a bit de rang i dun nombre X (par X OU 2i ) ; ` inverser le bit de rang i dun a i nombre X (par X OUEX 2 ).

5.

Les caract`res e

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

http://fribok.blogspot.com/

66

Reprsentation 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 ; C K S [ c k s {

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

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

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

% 5 = E M U ] e m u }

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

& . 6 > F N V f n v

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

/ 7 ? G O W g o w del

Fig. 3.6 Code ASCII

6.

Les nombres rels, la virgule ottante e

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

http://fribok.blogspot.com/

7. Exercices

67

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

32 bits 1 bit 8 bits 23 bits fr = f 224 0 < e < 255 (1)s 2e127 (1 + fr) (1)s 2126 (0 + fr) 255

64 bits 1 bit 11 bits 52 bits fr = f 253 0 < e < 2047 (1)s 2e1023 (1 + fr) (1)s 21022 (0 + fr) 2047

128 bits 1 bit 15 bits 112 bits fr = f 2113 0 < e < 32767 (1)s 2e16383 (1 + fr) (1)s 216382 (0 + fr) 32767

Fig. 3.7 Reprsentation des rels e e

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

7.

Exercices

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

http://fribok.blogspot.com/

68

Reprsentation des grandeurs e

bien les mmes rsultats. Se persuader de lunicit de lcriture. Reprer -8 e e e e e (sur 4 bits), et -16 (sur 5) comme un cas particulier dont loppos nest pas e reprsentable. e E3.4 : Ecriture des nombres ` virgule a Se persuader que lcriture 0,011 (en base 2), peut valablement reprsenter e e le nombre 0,375 (en dcimal), cest-`-dire 1/4 + 1/8. Les nombres ` virgule e a a reprsentables en base 2 et les nombres reprsentables en base 10 ne sont pas e e les mmes. Dans quel sens est linclusion, pourquoi ? e E3.5 : Comparaison dentiers Pour comparer deux entiers une solution est de calculer leur dirence. Mais e ce nest pas ncessaire. La comparaison ayant pour but de dire si les deux e entiers sont gaux, et, sinon, quel est le plus grand, trouver des algorithmes de e comparaisons de deux entiers ` partir de leurs reprsentations binaires sur N a e bits : dans le cas o` les deux nombres sont naturels, u dans le cas o` les deux sont signs (et reprsents en complment ` 2), u e e e e a dans le cas o` un nombre est sign et lautre non. u e On pourra complter cet exercice apr`s ltude des circuits combinatoires. e e e E3.6 : Additions en binaire pur et en complment ` 2 e a Dans le tableau 3.8, on montre des rsultats daddition. La table se prsente e e comme une table daddition, lignes et colonnes. Elle est donc symtrique. e Chaque information numrique est reprsente de 4 faons : un vecteur de e e e c 4 bits, crits en petits chires ; un naturel compris entre 0 et 15 (son criture e e en binaire est le vecteur de 4 bits) ; un entier relatif entre -8 et +7 (son criture e en complment ` 2 est le vecteur de 4 bits). e a Dans chaque case du tableau gurent ces 3 reprsentations, la valeur du e report sortant r3 provenant de laddition restreinte aux 3 premiers bits, la valeur du report sortant r4 provenant de laddition sur 4 bits. Les rsultats e corrects sont encadrs. Les rsultats incorrects ne le sont pas. e e Lobjet de lexercice est de retrouver, dapr`s ce tableau, les modes de calcul e des indicateurs C et V prcisant respectivement si le rsultat est correct ou e e non en binaire (pour C) et en complment ` 2 (pour V). On peut faire le mme e a e travail pour la soustraction. La table nest pas symtrique dans ce cas. e E3.7 : Signication et test des indicateurs Quels sont les entiers codables sur 32 bits en complment ` 2 et dont la valeur e a absolue est aussi codable sur 32 bits en complment ` 2 ? e a Pour rsoudre la suite de cet exercice, il faut conna la programmation e tre en langage dassemblage. Dans le programme suivant en langage dassemblage, il manque un mnmonique dinstruction de branchement conditionnel, il a t remplac par e ee e

http://fribok.blogspot.com/

7. 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 +7c2 8c2 7c2 1c2 0c2 +1c2 r 3 = 0 r 3 = 1 r3 = 1 r3 = 0 r3 = 1 r3 = 1 r 4 = 0 r 4 = 0 r4 = 0 r4 = 0 r4 = 1 r4 = 1


(1000) (1001) (1010) (0000) (0001) (0010)

(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 +7c2 8c2 7c2 r 3 = 0 r 3 = 1 r3 = 1 r3 = 0 r3 = 1 r3 = 1 r 4 = 0 r 4 = 1 r4 = 1 r4 = 1 r4 = 1 r4 = 1


(0000) (0001) (0010) (1000) (1001) (1010)

(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.8 Table daddition

http://fribok.blogspot.com/

70

Reprsentation des grandeurs e

bxx. A ltat initial, le registre i0 contient une valeur enti`re x. A ltat e e e nal, le registre i2 contient 1 si la valeur absolue de x est codable sur 32 bits en complment ` 2, et alors i3 contient cette valeur absolue ; le registre i2 e a contient 0 si cette valeur absolue nest pas codable ; dans ce cas la valeur de i3 nest pas pertinente.
cmp bge subcc bxx mov ba mov mov ba mov i0, 0 pos 0, i0, i3 spe 1, i2 fin 1, i2 i0, i3 fin 0, i2 ! si i0 0 ! i3 prend pour valeur (-i0) ! OK prend pour valeur vrai

neg :

pos :

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

http://fribok.blogspot.com/

7. Exercices

71

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

E3.9 : Expression du bit de dbordement e Soit maj (x, y, z) = x.y + x.z + y.z. Montrer que maj (x, y, z) = maj (x, y, z) On note le OUEXCLUSIF ou XOR. Montrer que a.b.(a b) = a.b.(a b) = 0 On pose les quations boolennes : e e s = a b re (on note parfois s = (a, b, re )) rs = maj (a, b, re ) On conna deux expressions dcrivant la valeur du bit de dbordement V apr`s t e e e une addition : V = a.b.s + a.b.s et V = rs re Montrer que les deux expressions sont quivalentes. Le bit V pour la soustrace tion est donn par : e V = aN 1 .bN 1 .s + aN 1 .bN 1 .s Montrer que l` aussi V = rs re . a E3.10 : Relation entre binaire pur et complment ` 2 e a Soit un vecteur de bits yN 1 yN 2 , . . . , y1 y0 . Soit Yb le naturel reprsent par e e ce vecteur pour linterprtation binaire pur. Soit Yc2 le relatif reprsent par ce e e e vecteur pour linterprtation complment ` 2. Donner des relations entre Yb , e e a Yc2 et yN 1 . E3.11 : Reprsentation de la somme de deux entiers relatifs e Montrer que, si laddition de deux nombres relatifs cods en complment ` e e a deux dborde, alors la retenue C est linverse du bit de signe : V = C = (N ) e La gure 3.9 donne quelques lments de rponse. On y reprsente les 8 cas ee e e possibles de valeurs pour le bit poids fort dans une addition en complment e a ` deux. Trouver des entiers cods sur 4 bits dans [8, 7] pour chacun des cas. e Retrouver chacun des cas dans le tableau 3.8. Faire le mme travail pour la e soustraction.

http://fribok.blogspot.com/

72

Reprsentation 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 , bP , re ) indic. C 0 0 0 1 0 1 1 1

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

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

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

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

http://fribok.blogspot.com/

7. Exercices

73

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

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

http://fribok.blogspot.com/

74

Reprsentation 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. 3.10 Codage des valeurs de pi`ces de monnaie franaise. e c

Etudier la technique daddition dans cette reprsentation, en particulier le cas e o` 50 centimes + 50 centimes font 1 Franc et autres cas semblables. u Toutefois, on a aussi : 00111 + 01001 = 00111(10 Francs + 20 centimes = 10 Francs) car cette reprsentation ne comporte pas assez de chires signicatifs pour e distinguer 10 et 10,2. Etudier les possibilits oertes par un allongement de la mantisse sur e 6 bits par exemple. Etudier la technique daddition nouvelle. Etudier les reprsentations de sommes dargent utilisant 3, 4, ou N pi`ces. e e Dans la reprsentation en virgule ottante classique, la mantisse a 24 e chires. Cela permet de ne ngliger les centimes que pour des sommes e suprieures ` 224 centimes. Cest susant pour la comptabilit domestique, e a e mais insusant pour une comptabilit dentreprise par exemple. e

http://fribok.blogspot.com/

Chapitre 4 Reprsentation des traitements e et des donnes : langage e dactions


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

http://fribok.blogspot.com/

76

Reprsentation des traitements et des donnes... e e

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

1.

Un langage dactions

Le langage dactions que nous dcrivons bri`vement ci-dessous est tir e e e de [SFLM93]. Nous supposons connues les notions de variable dans un langage de programmation impratif, de type des donnes. e e

1.1

Lexique : nommage des types et variables

Un algorithme commence toujours par un lexique, qui nomme en particulier les types et les variables utiliss : e
entier18 : le type entier dans [2181 , 2181 1] a, b, c : des entier18

1.2
1.2.1

Types de base et types construits


Types de base

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

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

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

http://fribok.blogspot.com/

1. Un langage dactions

77

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

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

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

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

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

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

http://fribok.blogspot.com/

78

Reprsentation des traitements et des donnes... e e

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

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

1.3

Oprateurs de base et expressions e

Les expressions du langage sont formes ` partir de noms de variables e a dclares dans le lexique, de constantes des types de base, doprateurs e e e prdnis et dappels de fonctions. e e 1.3.1 Expression conditionnelle et oprateurs boolens e e

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

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

1.3.2

Oprateurs sur les nombres et les caract`res e e

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

Lopration reste est souvent appele modulo. e e

http://fribok.blogspot.com/

1. Un langage dactions

79

Oprations sur les caract`res : On peut introduire sur le type de base e e caract`re des fonctions comme : e
EstLettre ?, EstMajuscule ?, EstChire ?, ... : un caract`re un boolen e e MajusculeDe, MinusculeDe : un caract`re un caract`re e e

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

1.4

Aectation

Laction de base dans un langage dactions est laectation, qui permet de modier la valeur dune variable. On la note par une `che oriente ` gauche : e e a
X expr T[3+z].u expr

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

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

http://fribok.blogspot.com/

80

Reprsentation des traitements et des donnes... e e

1.5

Structures conditionnelles et itratives e

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

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

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

http://fribok.blogspot.com/

1. Un langage dactions

81

1.6

Fonctions et actions paramtres e e

Pour dnir une fonction on crira : e e


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

Pour dnir une action on crira : e e


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

Un contexte dutilisation de la fonction ExpressionComplique et de laction e CalculerExpressionComplique est dcrit ci-dessous : e e


u, v, w, w1, w2 : des entiers w ExpressionComplique (u, v) + ExpressionComplique (2*u, v1) e e CalculerExpressionComplique (u, v, w1) ; e CalculerExpressionComplique (2*u, v1, w2) ; e w w1+w2

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

http://fribok.blogspot.com/

82

Reprsentation des traitements et des donnes... e e

1.7

Entres/Sorties e

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

2.

Reprsentation des donnes en mmoire e e e

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

2.1

Une modlisation de la mmoire : le tableau MEM e e

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

2.2
2.2.1

Reprsentation en mmoire des types de base e e


Reprsentation en mmoire des boolens e e e

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

http://fribok.blogspot.com/

2. Reprsentation des donnes en mmoire e e e

83

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

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

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

http://fribok.blogspot.com/

84

Reprsentation des traitements et des donnes... e e

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

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

2.3

Les acc`s au tableau MEM e

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

http://fribok.blogspot.com/

2. Reprsentation des donnes en mmoire e e e

85

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

Il existe en gnral une opration lmentaire de transfert de 4 octets dans e e e ee les machines dites 32 bits, une opration de transfert de 8 octets dans les e machines 64 bits, ...

2.4
2.4.1

Reprsentation en mmoire des types construits e e


Reprsentation en mmoire des n-uplets e e

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

Une valeur de type Structure12 occupe 6 units adressables conscutives, e e dadresses a, a + 1, ... a + 5. Le champ x commence ` ladresse a, et le champ a y ` ladresse a + 4. a

http://fribok.blogspot.com/

86

Reprsentation des traitements et des donnes... e e

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

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

2.4.2

Reprsentation en mmoire des tableaux e e

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

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

http://fribok.blogspot.com/

2. Reprsentation des donnes en mmoire e e e

87

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

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

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

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


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

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

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

http://fribok.blogspot.com/

88

Reprsentation des traitements et des donnes... 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 dassemblage, comme on lobserve dans la plupart des compilateurs. Considrons lalgorithme suivant : e
Lexique N : lentier ... ; i : un entier dans [0..N] T : un tableau sur [0..N1] dentiers dans [2321 , 2321 1] algorithme i 0 tant que i < N T[i] 2*i + 1 i i+1

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

La deuxi`me transformation consiste ` ajouter une variable redondante Ad e a pour reprsenter ladresse de llment courant en mmoire. Cette variable est e ee e lie ` lindice i du tableau par la proprit Ad = aT + E * i que lon installe e a ee avant la boucle, et que lon maintient en modiant Ad lors de toute modication de i. On obtient :
i 0 ; Ad aT + E * i tant que i < N { Invariant : Ad =aT + E * i } MEM [Ad] 2*i + 1 i i+1 ; Ad Ad + E Remarque : La proprit qui lie Ad est i est un invariant de programme. ee Pour un expos complet sur la notion dinvariant, voir par exemple [BB83]. e

Cette transformation, qui consiste ` factoriser le calcul de ladresse dans a le tableau MEM et ` viter les multiplications, est une technique usuelle en a e compilation et optimisation des programmes (voir par exemple [CGV80]).

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

http://fribok.blogspot.com/

2. Reprsentation des donnes en mmoire e e e

89

MEM

MEM

T 0 0 1 2=M-1 1 2 3=N-1

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

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

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

(a)

(b)

(c)

Fig. 4.1 Reprsentation en mmoire des tableaux ` deux dimensions e e a

T : un Tab

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

2.4.3

Reprsentation en mmoire des pointeurs e e


{ compatible avec tous les pointeurs de T }

NIL : un pointeur T : un type

http://fribok.blogspot.com/

90

Reprsentation des traitements et des donnes... e e

adT : le type pointeur de T t1 : un T ; pt : une adT t1 pt

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

3.

Traduction des aectations gnrales en e e acc`s au tableau MEM e

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

http://fribok.blogspot.com/

4. Utilisation des pointeurs et gestion dynamique de la mmoire e

91

daectations.

3.1

Aectation de structures

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

3.2

Aectation de tableaux

Considrons le programme suivant : e


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

Si Elem est lui-mme structur, il faut continuer le raisonnement pour reme e placer t1[i] t2[i] par une squence ou une boucle daectations plus e lmentaires. ee

4.

Utilisation des pointeurs et gestion dynamique de la mmoire e

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

http://fribok.blogspot.com/

92

Reprsentation des traitements et des donnes... e e

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

Fig. 4.2 Algorithme de construction dune squence cha ee e n ctif LaSquence e inf Fig. 4.3 Une squence cha ee e n sup

http://fribok.blogspot.com/

4. Utilisation des pointeurs et gestion dynamique de la mmoire e

93

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

4.1

Spcication des actions Allouer et Librer e e

Les actions Allouer et Librer peuvent donc tre spcies et comprises e e e e en considrant quune partie de la mmoire est rserve ` cet usage. Nous e e e e a

http://fribok.blogspot.com/

94

Reprsentation des traitements et des donnes... e e

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

4.2

Ralisation des actions Allouer et Librer e e

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

http://fribok.blogspot.com/

5. Piles, les et traitements associs e

95

5.

Piles, les et traitements associs e

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

5.1

Spcication dune pile e

Elem : un type PileElem : un type { sans prjuger de la reprsentation des piles par des structures e e de donnes particuli`res } e e TailleMax : un entier > 0 Initialiser : une action (le rsultat P : une PileElem) e { tat nal : P est la pile vide } e Empiler : une action (la donne-rsultat P : une PileElem ; la donne x : un Elem ; e e e le rsultat ok : un boolen) e e { tat initial : Notons k le nombre dlments prsents dans la pile ; si la pile e ee e est vide : k = 0 ; si la pile est pleine : k = TailleMax . Notons P=1 ...k le contenu de la pile. tat nal : Si k = TailleMax, P = 1 ...k et ok=faux sinon, ok=vrai et P = e 1 ...k x } Dpiler : une action (la donne-rsultat P : une PileElem ; le rsultat x : un Elem ; e e e e le rsultat ok : un boolen) e e { tat initial : Notons k le nombre dlments et P=1 ...k le contenu de la e ee pile, lorsque k = 0. tat nal : si k=0, alors ok=faux et x est non spci sinon ok=vrai, x=k et e e e P = 1 ...k1 }

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

http://fribok.blogspot.com/

96

Reprsentation des traitements et des donnes... e e

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

5.2

Spcication dune le e

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

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

6.

Exercices

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

http://fribok.blogspot.com/

6. Exercices

97

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

http://fribok.blogspot.com/

98

Reprsentation des traitements et des donnes... e e

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

E4.3 : Transformation des conditions boolnnes composes e e Proposer une transformation de si C1 et (C2 ou non C3) alors A1 sinon A2 qui nutilise plus doprateurs boolen et, ou, non. e e E4.4 : Parcours de tableaux de structures On consid`re lalgorithme suivant : e
lexique Entier32s : le type entier sur [2321 , 2321 1] T : un tableau sur [0 .. N-1] de < a : un Entier32s, b : un caract`re > e algorithme i parcourant 0 .. N-1 T[i].a i * 2 ; T[i].b a

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

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

http://fribok.blogspot.com/

6. Exercices

99

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

On dsire vrier si la proprit suivante est vraie : e e ee


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

Le but de lexercice est dcrire un programme pour parcourir la matrice et e dterminer si la proprit est vrie. On ne demande pas de programmer e ee e e lacquisition des lments de la matrice. ee Questions : Q1 Choisir une valeur pour la constante N (non triviale, cest-`-dire a dirente de 0, 1, 2, mais de nature ` faciliter la programmation de lale a gorithme de parcours. Songer en particulier ` viter les multiplications ae gnrales). e e Q2 Proposer une reprsentation mmoire du tableau, en supposant que les e e lments de la matrice sont des entiers relatifs cods en complment ` ee e e a deux sur 64 bits. Q3 Donner lalgorithme demand en notation algorithmique, en faisant ape para le tableau MEM et le calcul des adresses des lments. tre ee Cet exercice se poursuit par la programmation en assembleur sparc, exercice E13.10 du chapitre 12. E4.9 : Programmation dune le et dune pile Raliser les actions de manipulation des piles et les dcrites au paragraphe 5. : e e En rangeant les lments dans un tableau, cest-`-dire en considrant le ee a e type : PileElem : un tableau sur 1 .. TailleMax dElem En rangeant les lments dans une squence cha ee ee e n Etudier les alternatives : pour le tableau, progression de la pile par adresses croissantes ou dcroissantes et pointeur de pile indiquant la premi`re case vide e e ou la derni`re case pleine ; pour la squence cha ee, insertion en dbut ou en e e n e n.

http://fribok.blogspot.com/

Chapitre 5 Reprsentation des traitements e et des donnes : e machines squentielles e


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

1.
1.1

Machines squentielles simples e


Dnitions mathmatiques et proprits e e e e

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

http://fribok.blogspot.com/

102

Reprsentation des traitements et des donnes... e e

Q est lensemble des tats ; q0 Q est ltat initial e e E (resp. S) est lalphabet dentre (resp. de sortie) e T Q E S Q est lensemble des transitions, tiquetes par des e e couples constitus dun lment de lalphabet des entres et dun lment e ee e ee de lalphabet des sorties. 2 La gure 5.1 illustre la reprsentation conventionnelle des automates : un e cercle pour un tat, une `che tiquete pour une transition. e e e e 1.1.1 Fonctionnement squentiel e

Le fonctionnement squentiel des machines de Moore ou de Mealy est dni e e en observant quelle squence de sorties est produite par la machine, lorsquelle e ragit ` une squence dentres donne. e a e e e Considrons donc une squence dentres : cest une suite dlments de e e e ee lalphabet dentres, cest-`-dire une fonction de N dans E, dont les lments e a ee seront nots de mani`re indice. On notera Se = e0 , e1 , ..., en , .... e e e Pour dnir la raction de la machine de Moore (Q, q0 , E, S, T, f ) ` la e e a squence dentres Se , on dnit la squence q0 , q1 , ... des tats rencontrs : e e e e e e n 0, (qn , en , qn+1 ) T Une transition (q, e, q ) exprime que, si la machine est dans ltat q, et quelle e reoit lentre e, alors elle passe dans ltat q . La squence de sorties Ss = c e e e s0 , s1 , ... est ensuite dnie par lintermdiaire de la squence dtats : e e e e n N, sn = f (qn ) Pour dnir la raction de la machine de Mealy (Q, q0 , E, S, T ) ` la squence e e a e dentres Se , on crit directement : e e q 0 = q0 1.1.2 n 0, (qn , en , sn , qn+1 ) T

Dterminisme et ractivit e e e

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

http://fribok.blogspot.com/

1. Machines squentielles simples e

103

Dnition 5.2 : dterminisme e e On dira quune machine de Mealy (Q, q0 , E, S, T ) est dterministe si et seulee ment si : q1 Q, e1 E, s1 S, (q, e1 , s1 , q1 ) T q Q, = e1 = e2 q2 Q, e2 E, s2 S, (q, e2 , s2 , q2 ) T De mme, on dira quune machine de Moore (Q, q0 , E, S, T, f ) est dterministe e e si et seulement si : q1 Q, e1 E(q, e1 , q1 ) T q Q, = e1 = e2 q2 Q, e2 E(q, e2 , q2 ) T 2

Dnition 5.3 : ractivit e e e Une machine de Mealy (Q, q0 , E, S, T ) est dite ractive si et seulement si : e q Q, {e E | q1 Q, s S, (q, e, s, q1 ) T } = E De mme, une machine de Moore (Q, q0 , E, S, T, f ) est dire ractive si et seulee e ment si : q Q, {e E | q1 Q, (q, e, q1 ) T } = E 2 Notons que lorsque la machine est dterministe, il existe une unique e squence de sorties correspondant ` une squence dentres. Lorsque la machine e a e e est ractive, la squence de sorties est aussi longue que la squence dentres. e e e e 1.1.3 Fonctions de transition et de sortie

Pour des machines dterministes, la relation de transition T Q E Q e (Moore) ou T Q E S Q (Mealy) est souvent exprime comme une e fonction. On dnit ainsi la fonction de transition g : QE Q pour les machines e de Moore ; g associe ` chaque couple (tat, entre) ltat de destination ; si la a e e e machine est ractive, cette fonction est totale. De la mme mani`re, on dnit e e e e pour les machines de Mealy une fonction de transition g : Q E Q S qui associe ` chaque couple (tat, entre) ltat de destination et la sortie mise a e e e e par la transition. On trouve parfois galement une dnition en deux fonctions, e e dites de transition et de sortie : g : Q E Q et s : Q E S.

http://fribok.blogspot.com/

104

Reprsentation des traitements et des donnes... e e

1.1.4

Equivalence des mod`les de Moore et de Mealy e

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

1.2

Application ` la reconnaissance des a langages rguliers e

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

http://fribok.blogspot.com/

1. Machines squentielles simples e

105

c 1 a a 3 (a) b b 4 2

c 1 a a 3

c 2 b b c a, b, c (b) 5 4

a,b a,b,c

Fig. 5.1 Reconnaissance du langage rgulier a b + c . (a) Machine de Moore ` tats e ae nals, avec : Q = {1, 2, 3, 4}, E = {a, b, c}, f (1) = f (2) = f (4) = vrai, f (3) = faux, T = {(1, a, 3), (1, b, 4), (1, c, 2), (2, c, 2), (3, a, 3), (3, b, 4)}. (b) Machine de Moore ordinaire.

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

1.3

Application ` la description de syst`mes ractifs a e e

Nous dtaillons dans ce paragraphe un exemple de syst`me ractif : une e e e machine ` caf. Cet exemple est repris au chapitre 10 o` nous montrons a e u comment raliser le contrleur de la machine avec un circuit squentiel. On e o e donne dautres exemples de syst`mes ractifs dans le paragraphe 2.1.1 et lexere e cice E10.6 du chapitre 10. Exemple E5.2 : Machine ` caf a e On consid`re une machine automatique de distribution de caf, qui accepte e e des pi`ces de 1, 2 et 5 francs. Un caf cote 2 francs. D`s que le consommateur e e u e a introduit 2 francs ou plus, la machine naccepte plus de pi`ces jusqu` ce e a que le caf soit servi. Dautre part, sil avait introduit plus de 2 francs, la e machine rend la monnaie.

http://fribok.blogspot.com/

106

Reprsentation des traitements et des donnes... e e

On consid`re que la machine ` caf est constitue dune partie physique et e a e e du dispositif informatique que nous appelons contrleur. Lenvironnement du o contrleur est constitu de lutilisateur humain et de la partie physique de la o e machine. Les entres du contrleur en provenance de lutilisateur humain se e o rduisent a lintroduction de pi`ces (dans un exemple plus gnral on envisae ` e e e gerait le choix de la boisson). Les entres en provenance de la partie physique e de la machine sont des comptes-rendus dactivit (voir plus loin). Les sorties ` e a destination de la partie physique de la machine sont les commandes de service du caf, de fermeture de lorice dintroduction des pi`ces, de rendu de monnaie e e (on supposera quil existe un dispositif capable de calculer la somme ` rendre, a non dcrit ici). On nenvisage pas de sorties ` destination de lutilisateur. e a Nous nous intressons ici ` lalgorithme du contrleur de cette machine. e a o Le contrleur est un exemple typique de syst`me dit ractif : il interagit en o e e permanence avec son environnement, et ragit ` des entres par lmission de e a e e sorties appropries. On peut le dcrire par une machine squentielle ractive, e e e e de Moore ou de Mealy. Notons que le crit`re mathmatique de ractivit de la e e e e machine squentielle correspond exactement ` la nature ractive du syst`me de e a e e contrle de la machine ` caf : la raction du contrleur doit tre parfaitement o a e e o e dnie, dans chacun de ses tats, pour chacune des entres possibles. e e e Lalgorithme ` crire analyse une squence dentres et produit une a e e e squence de sorties correspondante. e

Interface dentre/sortie du contrleur : Pour dterminer le vocabue o e laire dentre de la machine squentielle dcrivant le contrleur, il convient de e e e o faire quelques hypoth`ses sur son environnement. On pourra considrer que les e e actions de lutilisateur et le compte-rendu de la machine ne sont jamais simultans. Dautre part des contraintes physiques comme la taille de lorice dans e lequel on introduit les pi`ces empchent sans doute dintroduire deux pi`ces e e e en mme temps. Les seules entres ` considrer sont donc : e e a e s1 , s2 , s5 signient respectivement que lutilisateur a introduit une pi`ce de e 1, 2 ou 5 francs. fs est un compte-rendu dactivit de la machine : lorsquelle reoit la come c mande de service de caf, elle rpond par cet acquittement de n de service, e e apr`s un certain temps. e rien signie que rien narrive : ni introduction de pi`ces, ni compte-rendu e de la machine. Le vocabulaire de sortie est P({R, C, B, AUCUNE}) o` R signie : calculer u et Rendre la monnaie ; C signie servir le Caf ; B signie Bloquage de lorice e dintroduction des pi`ces ; AUCUNE signie pas de sortie. Toutefois les seuls e sous-ensembles eectivement utiliss dans la machine squentielle qui dcrit le e e e contrleur sont : {AUCUNE}, {C, B} et {R, C, B}. o

http://fribok.blogspot.com/

1. Machines squentielles simples e

107

Nous verrons au chapitre 10 que lidentication exacte du sous-ensemble eectivement utile du vocabulaire de sortie peut tre utilis pour proposer un codage e e ecace des sorties dune machine squentielle, lorsquelle est implante par un e e circuit squentiel. e

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

1.4

Codage algorithmique dune machine squentielle, e application aux reconnaisseurs de langages rguliers e

Lorsquun probl`me est dcrit sous forme de machine squentielle, il est e e e possible de produire systmatiquement un algorithme itratif dont le compore e tement est le comportement squentiel de la machine. e Par exemple, lalgorithme de reconnaissance dun langage rgulier est un e parcours de squence qui calcule un boolen Appartenance. Lorsque le parcours e e sarrte, ce boolen a la valeur vrai si et seulement si la squence parcourue e e e constitue une phrase correcte du langage considr (cest-`-dire si lautomate ee a reconnaisseur sarrte dans un tat de satisfaction). e e On suppose que la squence des entres de la machine squentielle est ace e e cessible grce aux primitives Dmarrer, Avancer, FinDeSq et CarCour qui pera e e mettent dabstraire les algorithmes de traitement squentiel (Cf. [SFLM93]). e Nous construisons lalgorithme itratif par un codage systmatique de la e e machine squentielle de Moore qui dnit le reconnaisseur. La consommae e

http://fribok.blogspot.com/

108

Reprsentation des traitements et des donnes... e e

s5

AUCUNE Attente Pi`ces e

rien

s2 fs fs rien 2F reus c s1 s5 1F reu c AUCUNE C,B s1 rien

rien R,C,B

Trop peru c s2

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

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

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

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

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

http://fribok.blogspot.com/

2. Machines squentielles avec actions e

109

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

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

tion des lments de la squence est ralise par un appel de la primitive ee e e e Avancer. Chaque passage dans la boucle consomme exactement un lment ee de la squence et reprsente lexcution dune transition de la machine. Les e e e conditions sur lentre sont traduites en conditions sur llment courant de la e ee squence, accessible par la fonction Carcour. La sortie Appartenance est calcule e e en n de boucle, en fonction de ltat atteint. e On suppose que la squence dentre ne comporte que les caract`res a, b et e e e c. Lalgorithme de reconnaissance du langage a b + c est donn gure 5.4. e

2.

Machines squentielles avec actions e

Dans le langage des actions prsent au paragraphe 1. du chapitre 4, la e e structuration des algorithmes est assure par un petit nombre de construce tions itratives (tant que, parcourant) ou conditionnelles. Parmi les actions e

http://fribok.blogspot.com/

110

Reprsentation des traitements et des donnes... e e

A A C (a) C faux C? vrai (b)

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

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

2.1

Dnition e

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

http://fribok.blogspot.com/

2. Machines squentielles avec actions e

111

2.2

Reprsentation des structures de contrle par des e o machines squentielles avec actions e

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

2.3

Dnition du lexique dune machine squentielle e e avec actions

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

Le but de lalgorithme de Bresenham est de placer dans le plan des points de coordonnes enti`res qui approchent le mieux possible une droite dquation e e e donne. e Le segment qui passe par les points de coordonnes (0, 0) et (m, n) est e supporte par la droite dquation y = (n/m)x si m = 0. Il sagit donc de tracer e e

http://fribok.blogspot.com/

112

Reprsentation des traitements et des donnes... e e

si C alors A sinon B

si C alors A

A ;B

non C B vrai

C A vrai non C C A vrai A vrai B

Rpter 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 ; tantque D faire [ B ] ; E ]

X ; si C alors A

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

http://fribok.blogspot.com/

2. Machines squentielles avec actions e

113

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. 5.7 Trac dun segment dont les extrmits sont les points de coordonnes (0, 0) e e e e et (12, 5). Le trait blanc est idal, les pixels noirs sont obtenus par lalgorithme, e les pixels gris pourraient sembler candidats.

le segment de cette droite qui va du point (0, 0) au point (m, n). Les points nayant que des coordonnes enti`res, il faut noircir un ensemble de points (ou e e pixels, pour picture element) aussi proches que possibles de la droite idale. e
Remarque : Sans perte de gnralit, nous traitons le cas o` 0 n m. e e e u Les autres cas sobtiennent aisment par des transformations simples o` le e u point de coordonnes (j, k) devient (j, k) ou (k, j). e

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

(n/m).j k 2.n.j 2.m.k 2.n.j 2.m.k m

1 2 1 2 m 0

Posons = 2.n.j 2.m.k m. On remarque alors que lorsque j augmente de 1, augmente de 2.n ; lorsque k augmente de 1, diminue de 2.m. La construction de lalgorithme de calcul des coordonnes des pixels successifs e

http://fribok.blogspot.com/

114

Reprsentation des traitements et des donnes... e e

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

utilise cette proprit. La variable dabscisse j est incrmente de 1 en 1. A ee e e chaque incrmentation de j, k est mis ` jour de faon ` maintenir entre e a c a 2m et 0. Pour cela il faut soit laisser k inchang, soit incrmenter k. e e La gure 5.8 donne lalgorithme correspondant.

2.3.2

Machine squentielle avec actions ralisant lalgorithme de e e Bresenham

Nous donnons Figure 5.9 le lexique des actions ncessaires ` la dnition e a e de la machine squentielle avec actions produite ` partir de lalgorithme de e a Bresenham. La gure 5.10 dcrit cette machine squentielle. e e Remarquons que cette machine a une forme particuli`re. Les tats ne sont e e pas spars si cela nest pas ncessaire ; par exemple, laction MajTetIncrAbs e e e est constitue des trois actions lmentaires : Tj,k vrai, j j + 1 et e ee + 2 * n. Les prdicats se limitent ` la consultation dune variable e a boolenne (Fini ou pos). Le calcul des prdicats est systmatiquement ralis e e e e e dans un tat ; il pourrait parfois tre intgr ` un autre tat : la mise ` jour e e e ea e a de pos pourrait, par exemple, tre faite dans ltat o` est ralis laction e e u e e MajTetIncrAbs.

http://fribok.blogspot.com/

2. Machines squentielles avec actions e

115

{ Les variables : } Fini, pos : des boolens e { Les actions : } Init : une action : j 0 ; k 0 ; m MajTetIncrAbs : une action Tj,k vrai ; j j + 1 ; + 2 * n IncrOrdonne : une action : k k + 1 ; 2 * m e CalculFini : une action : Fini j > m Calculpos : une action : pos > 0 { Les prdicats : } e EstFini : un boolen : ni e EstPos : un boolen : pos e Fig. 5.9 Lexique de machine squentielle avec actions reprsentant lalgorithme de Bree e senham

Init vrai CalculFini non EstFini EstFini non estPos MajTetIncrAbs vrai Calculpos vrai estPos IncrOrdonnee Fig. 5.10 Machine squentielle avec actions ralisant lalgorithme de Bresenham e e

http://fribok.blogspot.com/

116

Reprsentation des traitements et des donnes... e e

2.4

Proprits et transformations de machines e e squentielles avec actions e

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

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

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

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

http://fribok.blogspot.com/

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

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

Les deux algorithmes de la gure 5.12 produisent les mmes rsultats. La e e gure 5.14 reprsente les deux machines squentielles avec actions associes, e e e en utilisant le lexique dcrit Figure 5.13. e

http://fribok.blogspot.com/

118

Reprsentation des traitements et des donnes... e e

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

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

http://fribok.blogspot.com/

2. Machines squentielles 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 squentielles ralisant le mme traitement e e e

http://fribok.blogspot.com/

120

Reprsentation des traitements et des donnes... e e

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

http://fribok.blogspot.com/

Chapitre 6 Temps, donnes temporelles et e synchronisation


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

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

http://fribok.blogspot.com/

122

Temps, donnes 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 intressons ici au cas o` une machine squentielle reprsente le fonce u e e tionnement dun dispositif informatique directement connect ` un environneea ment physique.

1.1

Le temps logique discret des machines squentielles e

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

1.2

Le temps physique continu de lenvironnement

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

http://fribok.blogspot.com/

1. Interface entre un dispositif informatique et un environnement physique

123

Lvolution dune tension lectrique en fonction du temps peut-tre e e e reprsente par une courbe de fonction, comme illustr gure 6.1-a. e e e

1.3

Dnition de linterface dentres/sorties e e de la machine squentielle e

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

1.4

Discrtisation du temps : interprtation synchrone e e ou asynchrone

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

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

http://fribok.blogspot.com/

124

Temps, donnes temporelles et synchronisation e

(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 Squence dentres correspondant ` une grandeur continue de lenvironnee e a ment : a) volution dune grandeur continue ; b) discrtisation de laxe G ; c) e e discrtisation du temps, interprtation asynchrone ; d) discrtisation du temps, e e e interprtation synchrone. e A) Cas dune grandeur ; B) cas de plusieurs grandeurs

http://fribok.blogspot.com/

1. Interface entre un dispositif informatique et un environnement physique

125

En revanche, d`s que lon consid`re plusieurs grandeurs, les paliers (ou, e e de mani`re quivalente, les fronts) sont superposs. En associant une variable e e e boolenne par exemple ` chacune des grandeurs, et en notant la e a valeur 1 de cette grandeur, la valeur 0 de cette grandeur, on peut construire une squence de monmes boolens qui re`te les superpositions de paliers. e o e e On passe ` un nouvel lment de la squence d`s que lune au moins des deux a ee e e grandeurs change de palier. Pour lexemple de la gure 6.1-Bc, on construit la squence e ., ., ., ., ., ., ., . Il devient intressant de dcrire des machines squentielles capables de traie e e ter des squences ainsi construites. e Exemple E6.1 : Interprtation asynchrone de deux grandeurs et e comptage Considrons une machine squentielle qui peroit deux grandeurs et , et e e c dont la sortie boolenne est vraie si et seulement si les deux grandeurs ont e eu la mme valeur un nombre pair de fois dans le pass. e e En utilisant la squence des niveaux superposs, on crira par exemple la e e e machine de Moore suivante :
(. .) . . = vrai Pair . . Fig. 6.2 Machine de Moore lisant la squence des niveaux e Impair = faux (. .)

e Pour la squence ., ., ., ., ., ., ., ., la squence e de sortie est : , , , , , , , , . On peut aussi considrer que dnote le front montant dune grandeur e e boolenne D, et son front descendant. La squence construite pour lexemple e e de la gure 6.1-Bc est alors : , , , , , ., . Notons que lorigine des temps nest pas considre comme un front. Dautre part rien nempche denvisager ee e le changement simultan des deux grandeurs, do` lexistence dlments de la e u ee squence de la forme .. e 1.4.2 Interprtation synchrone e

Linterprtation synchrone est un cas particulier de linterprtation asyne e chrone dcrite ci-dessus pour deux grandeurs, dans lequel on consid`re que e e

http://fribok.blogspot.com/

126

Temps, donnes temporelles et synchronisation e

lune des grandeurs est lhorloge de lautre. La grandeur choisie comme horloge dnit un dcoupage de laxe du temps qui permet dchantillonner lautre e e e grandeur. Ce dcoupage nest pas ncessairement rgulier en temps physique ; e e e laxe du temps sous-jacent nest pas dcoup en intervalles de tailles gales, e e e quoique ce soit gnralement le cas avec des horloges rgules par des quartz. e e e e En interprtation synchrone, on a donc toujours au moins deux grandeurs. e Notons dailleurs que synchrone signie littralement qui partage le mme e e temps, et quil faut tre au moins deux pour partager quelque chose. Deux e grandeurs seront dites synchrones si elles sont chantillonnes sur la mme e e e horloge, asynchrones sinon. A partir dune grandeur qui sert dhorloge et dune ou plusieurs autres grandeurs, on fabrique une squence dentres de la machine squentielle en e e e crant un lment de squence par front dhorloge : cest un monme qui dcrit e ee e o e le niveau des autres grandeurs ` linstant de ce front. a
Nous verrons quune machine squentielle peut tre ralise par un circuit e e e e squentiel synchrone (Cf. Chapitres 10 et 11). Une horloge dtermine alors e e les instants auxquels la machine change dtat. Un processeur peut tre vu e e comme une machine squentielle synchrone cadence elle-aussi par son hore e loge (Cf. Chapitre 14). Il existe aussi des ralisations, dont des processeurs, e asynchrones. Nous ntudions pas cette technique dans ce livre. e

Exemple E6.2 : Machine ` caf (suite de lexemple E5.2) a e Nous envisagions une squence e dentres e commenant c par s1 .s2 .s5 , s1 .s2 .s5 , s1 .s2 .s5 , ... Si lon utilise linterprtation asynchrone dnie ci-dessus, les entres s1 , e e e s2 , s5 et fs de la machine ` caf sont superposes, et on en dduit une a e e e squence dentres en crant un nouvel lment uniquement quand lune au e e e ee moins change. La squence ci-dessus nappara donc jamais. e t Si lon utilise linterprtation synchrone, en revanche, on introduit une e cinqui`me entre implicite : lhorloge. On construit un lment de la squence e e ee e pour chaque priode dhorloge. La squence ci-dessus peut donc appara e e tre.

2.

Signaux logiques et reprsentation par des e chronogrammes

Les grandeurs physiques continues dont nous avons envisag la e discrtisation sont des signaux physiques. Nous appellerons signal logique e lchantillonnage dun tel signal physique par les fronts dun autre signal qui e sert dhorloge.
On tudie linuence des probl`mes de synchronisation sur la ralisation des e e e automates synchrones dans le chapitre 10.

Lvolution au cours du temps des horloges et des signaux logiques peut e tre reprsente par des courbes en crneaux carrs, comme sur la gure 6.3. e e e e e

http://fribok.blogspot.com/

3. Probl`mes de synchronisation e

127

H Temps Fig. 6.3 Un exemple de reprsentation de signaux logiques par des chronogrammes : e H est un signal dhorloge, et a est un signal logique dhorloge H (noter que lhorloge est un signal boolen. Ici le signal a est galement boolen). e e e

S S2

S1 S0

H t1 t2

Fig. 6.4 Reprsentation de lvolution de grandeurs : la valeur S code sur 3 bits S0 , e e e S1 et S2 est momentanment instable entre les instants t1 et t2 e

Ces courbes sont des chronogrammes. Si lon sintresse au temps de changement de valeur discr`te dun sie e gnal par rapport au rythme dune horloge H, et aux ventuels probl`mes e e dchantillonnage qui en dcoulent, on peut reprsenter lvolution temporelle e e e e des grandeurs en jeu par une gure comme 6.4. Pour reprsenter des valeurs indnies ou non signicatives, nous utilisons e e aussi les reprsentations donnes dans la gure 6.5. e e

3.

Probl`mes de synchronisation e

Nous avons envisag jusquici le cas dun dispositif informatique connect e e a ` un environnement physique dont il doit chantillonner les grandeurs. e Si lon sintresse ` plusieurs dispositifs informatiques, on peut considrer e a e chacun comme lenvironnement de lautre : les sorties de lun peuvent tre les e entres de lautre. Pour tudier les probl`mes de synchronisation entre syst`mes e e e e informatiques, on suppose que les deux syst`mes sont dcrits par des machines e e squentielles, et que les entres de lun peuvent tre les sorties de lautre. e e e

http://fribok.blogspot.com/

128

Temps, donnes temporelles et synchronisation e

a)

b)

t0 1 2

Fig. 6.5 Reprsentations particuli`res de valeurs : e e a) Signal boolen dont la valeur est indnie avant linstant t0 e e b) La valeur nest signicative que pendant les priodes 1 et 2 ; ce type de e schma est souvent utilis pour reprsenter la valeur prsente sur un bus : e e e e lorsque aucun composant nest connect au bus sa valeur nest pas signicae tive.

instants de lecture, cas 2 V

instants de lecture, cas 1

Fig. 6.6 Acc`s ` une valeur commune V e a

Si les deux dispositifs A et B reoivent un mme signal qui peut servir c e dhorloge commune H, ils peuvent chantillonner toutes les grandeurs sur e la mme horloge. Dans le cas contraire, les deux dispositifs A et B peuvent e nanmoins avoir des horloges locales, cest-`-dire utiliser chacun un signal pare a ticulier comme horloge pour chantillonner les autres signaux, mais chacun e doit tre considr comme lenvironnement asynchrone de lautre. e ee

3.1

Le probl`me gnral dacc`s ` un signal commun e e e e a

On consid`re deux dispositifs informatiques appels rcepteur et metteur, e e e e qui doivent se mettre daccord sur une valeur V produite par lun et consomme e par lautre. Lmetteur a un comportement cyclique : il maintient une valeur e sur le l (ou les ls) V pendant un certain temps, puis fabrique une nouvelle valeur (pendant ce temps ltat du l est indtermin) et la maintient sur le e e e l, etc. Le rcepteur a galement un comportement cyclique : il acc`de ` ce l en e e e a lecture ; consomme la valeur (ce traitement prend un certain temps) ; acc`de e de nouveau ` V , etc. a Le probl`me pos comporte deux contraintes : e e Le rcepteur ne doit pas consommer deux fois la mme valeur e e

http://fribok.blogspot.com/

3. Probl`mes de synchronisation e

129

Le rcepteur ne doit pas ignorer une valeur e Si les deux dispositifs voluent de mani`re compl`tement indpendante lun e e e e de lautre, les instants de lecture sont quelconques : les deux probl`mes cie dessus peuvent survenir. Voir gure 6.6 : dans le cas 1, les instants de lecture sont trop proches, le rcepteur lit plus vite que lmetteur ne produit ; dans le e e cas 2, les instants de lecture sont trop loigns, le rcepteur ne lit pas assez e e e vite. Il faut donc se dbrouiller pour synchroniser lmetteur et le rcepteur e e e pour lacc`s ` la valeur commune V . Cette synchronisation est assure par un e a e protocole de communication.

3.2
3.2.1

Protocole poigne de mains et mise en oeuvre e


Le protocole

Pour viter les deux cas de fonctionnement incorrect dcrits par la gure 6.6, e e on doit assurer que : 1. le rcepteur ne peut pas lire deux fois la donne V sans avoir t prvenu e e ee e par lmetteur dun changement entre temps ; e 2. lmetteur ne peut pas modier la valeur de la donne (cest-`-dire e e a mettre deux valeurs direntes) ` moins davoir t prvenu par e e a ee e le rcepteur entre temps que la premi`re valeur a eectivement t e e ee consomme. e e e On introduit ` cet eet deux signaux de synchronisation E prt et R prt. a e e e e e E prt est produit par lmetteur et consomm par le rcepteur. R prt est produit par le rcepteur et consomm par lmetteur. Lide est dassurer la e e e e synchronisation par un dialogue entre lmetteur (E) et le rcepteur (R), de la e e forme suivante : E est responsable de la production des valeurs V, et prvient e R de lapparition dune nouvelle valeur cest le signal E prt ; R attend e dtre ainsi prvenu pour consommer la valeur prsente sur le l ; il envoie e e e e c ensuite ` E un acquittement de lecture cest le signal R prt ; lorsquil reoit a laquittement de lecture en provenance de R, E peut procder ` la production e a dune nouvelle valeur.
Remarque : Cette ide dun change dinformations supplmentaires du e e e type jai crit et jai bien lu, pour rguler les acc`s en lecture/criture ` une e e e e a information partage est une ide simple et tr`s gnrale. La complexit des e e e e e e protocoles de communication dans les rseaux informatiques tient ` un autre e a probl`me : les lignes de transmission entre lmetteur et le rcepteur ne peuvent e e e pas tre considres comme ables, ce qui oblige ` prvoir la rmission des e ee a e ee e messages et de leurs acquittements. En eet, lorsquun signal comme X prt est mis par lun, on na pas de garantie de rception par lautre. e e

http://fribok.blogspot.com/

130

Temps, donnes temporelles et synchronisation e

3.2.2

Mise en oeuvre, cas gnral e e

Lmetteur a une horloge H e et le rcepteur une horloge H r. Les deux e e e e signaux E prt et R prt donnent deux signaux logiques chacun, selon quils sont chantillonns par lhorloge de lmetteur ou par lhorloge du rcepteur. e e e e On consid`re les 4 signaux logiques suivants p ep, d ep, p rp, d rp (Cf. Fie gure 6.8) : mission du signal E prt (chantillonn sur H e), dtection du e e e e e e e e e e e e signal E prt (chantillonn sur H r), mission du signal R prt (chantillonn sur H r), dtection du signal R prt (chantillonn sur H e). e e e e e Le prxe p indique la production du signal, le prxe d indique sa e dtection. e e e a e E prt est gal ` son chantillonnage sur lhorloge H e, puisquil est produit sur cette horloge ; il est en revanche dirent de son chantillonnage sur H r. e e Fonctionnement temporel de lmetteur et du rcepteur La e e gure 6.7 donne les machines de Moore dcrivant le comportement temporel e de lmetteur et du rcepteur, en terme des signaux logiques p ep, d ep, d rp, e e p rp. Chacune des machines change dtat sur les fronts de son horloge, dapr`s e e la valeur des signaux de communication ` cet instant-l`. a a En observant le comportement des deux machines squentielles, on peut se e convaincre des proprits suivantes : ee Le rcepteur ne peut pas passer deux fois dans ltat de lecture de V sans e e que lmetteur ait quitt son tat dcriture. e e e e Symtriquement, lmetteur ne peut pas passer deux fois dans ltat e e e dcriture sans que le rcepteur soit pass dans son tat de lecture. e e e e Reprsentation par des chronogrammes Les chonogrammes de la e gure 6.8 illustrent les contraintes dordre sur les fronts de la donne V et des e e e signaux logiques p ep, d ep, d rp, p rp, imposes par le protocole poigne de mains ainsi que ltat courant de lmetteur et du rcepteur. e e e 3.2.3 Mise en oeuvre : cas particuliers

Synchronisation par horloge commune ou horloges inverses : Lorsque les deux dispositifs qui communiquent chantillonnent les grandeurs e sur la mme horloge, le schma de la gure 6.8 est simpli : il ny a pas de e e e dcalage temporel entre la production dun signal et sa dtection (si lon nglige e e e le dlai de transmission du signal dhorloge dans les connexions physiques par e rapport au temps de traverse dun circuit combinatoire). e u Le cas des horloges inverses, He = Hr est un cas simple o` lopposition de phase des horloges des deux syst`mes rsoud les probl`mes dchantillonnage e e e e et de stabilit des grandeurs changes. e e e

http://fribok.blogspot.com/

3. Probl`mes de synchronisation e

131

Emetteur (changements dtat sur fronts montants de H e) e d rp

Rcepteur (changements e dtat 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.7 Machines de Moore dcrivant le fonctionnement temporel de lmetteur et du e e rcepteur, dans le cas dun protocole de poigne de mains. Etat E1 : attente e e dmission ; Etat E2 : mission de V et attente dacquittement de la part du e e rcepteur. Etat R1 : attente de valeur ; Etat R2 : mission de lacquittement e e et attente de prise en compte de cet acquittement par lmetteur. Transition e t1 : consommation de la valeur V ; Transition t2 : reconnaissance du fait que lacquittement de consommation de V a t pris en compte par lmetteur ; ee e Transition t3 : prise en compte de lacquittement en provenance du rcepteur ; e Transition t4 : reconnaissance du fait que le rcepteur traite linformation e envoye par lmetteur. e e

http://fribok.blogspot.com/

132

Temps, donnes temporelles et synchronisation e

He p ep d ep p rp d rp

Hr Temps Emetteur Recepteur Ecr. Att. Attente Ecr Consomm. Attente Ecriture Consomm.

Fig. 6.8 Comportement temporel des signaux dans un protocole poigne de mains. e On a reprsent : la donne V dont les valeurs sont mises par lmetteur, e e e e e e sur son horloge H e ; lhorloge du rcepteur H r ; les signaux logiques p ep, d ep (resp. d rp, p rp) qui correspondent ` lchantillonnage du signal E prt a e e (resp. R prt) sur les horloges de lmetteur et du rcepteur. Les courbes e e e pointilles grasses termines par une `che illustrent des relations de cause ` e e e a eet, dductibles du fonctionnement temporel de lmetteur et du rcepteur. e e e Les lignes obliques en trait plein, sans `che, illustrent les dcalages temporels e e entre la production dun signal, cest-`-dire son chantillonnage sur lhorloge a e du producteur, et la dtection de ce signal, cest-`-dire son chantillonnage e a e sur lhorloge du consommateur.

http://fribok.blogspot.com/

4. Un exemple : la machine ` caf a e

133

Synchronisation avec dlai constant : Lorsque le temps de raction e e (consommation) du rcepteur est toujours le mme, et connu lors de la e e construction du syst`me qui fait communiquer les deux dispositifs informae tiques, la mise en oeuvre du protocole de poigne de mains est tr`s simplie : e e e le signal dacquittement en provenance du rcepteur nest plus un vrai signal e physique : il est implicite. Lmetteur peut en eet considrer que lacquittee e ment jai bien lu survient n coups dhorloges apr`s la production du signal jai e crit ; il peut mme arriver que n = 1. e e
Cest un mode de synchronisation qui peut parfois tre utilis entre le processeur e e (lmetteur) et une mmoire (le rcepteur) (Cf. Chapitres 14 et 15). e e e

Emetteur rapide : Si lmetteur est suppos beaucoup plus rapide que le e e rcepteur, on sait que le rcepteur ne peut pas consommer deux fois la mme e e e valeur. Il sut dassurer que le rcepteur nignore pas de valeur. Pour cela, e on ajoute un signal de synchronisation qui permet au rcepteur de signaler e quil a consomm une valeur. Lmetteur attend cet acquittement avant de e e produire une nouvelle valeur. En fait le rcepteur est esclave de lmetteur : il e e na pas dhorloge propre, et utilise lun des signaux mis par lmetteur comme e e horloge. Rcepteur rapide : Inversement, si le rcepteur est suppos beaucoup plus e e e rapide que lmetteur, on sait quaucune valeur mise ne peut lui chapper. Il e e e sut dassurer quil ne lit pas deux fois la mme valeur. Pour cela on ajoute un e signal de synchronisation qui permet ` lmetteur de signaler quil a produit a e une nouvelle valeur. Le rcepteur attend cet avertissement pour lire. e

4.

Un exemple : la machine ` caf a e

Exemple E6.3 : Machine ` caf (suite de lexemple E5.2, p 105) a e Nous reprenons lexemple de la machine ` caf. Il sagit dtudier maintenant a e e la dnition des squences dentres de la machine squentielle qui reprsente e e e e e le contrleur, dapr`s les grandeurs physiques qui voluent dans lenvironneo e e ment de ce contrleur. o On consid`re que les divers dispositifs lectromcaniques de la machine ` e e e a caf mettent des signaux physiques que lon chantillonne sur lhorloge du e e e contrleur informatique. Cette horloge est suppose beaucoup plus rapide que o e le temps de raction des capteurs. e La gure 6.9 donne : lhorloge H du contrleur ; le signal physique s1 issu o du capteur qui dtecte linsertion dune pi`ce de 1F ; le signal logique s1h e e obtenu par chantillonnage de s1 sur lhorloge du contrleur ; le signal logique e o

http://fribok.blogspot.com/

134

Temps, donnes temporelles et synchronisation e

H s1 s1h s1hf sortie

Fig. 6.9 Signaux dentre et de sortie de la machine ` caf e a e

s1hf obtenu par dtection des fronts montants de s1h ; une sortie sortie de la e machine squentielle. e Il est ncessaire de dtecter les fronts de s1h an de fournir en entre du e e e contrleur un signal logique qui indique linsertion dune pi`ce pendant au o e plus une priode dhorloge. En eet la machine squentielle qui reprsente le e e e contrleur change dtat ` chaque priode dhorloge, et risquerait sinon dutio e a e liser plusieurs fois le mme signal pour compter une pi`ce de 1F. Nous verrons e e au chapitre 9, paragraphe 1.2.4, un dispositif matriel capable de raliser cette e e dtection de fronts. e Si lentre s1 fait passer dans un tat o` la sortie sortie est active, le signal e e u logique correspondant ` cette sortie est vrai d`s la priode dhorloge qui suit a e e le front montant de s1h et le reste pendant toutes les priodes dhorloge o` la e u machine squentielle est dans le mme tat. e e e

http://fribok.blogspot.com/

Deuxi`me partie e Techniques de lalgorithmique matrielle e

http://fribok.blogspot.com/

Chapitre 7 De llectron aux dispositifs e logiques


Lobjet de ce chapitre est de montrer quels phnom`nes physiques e e lmentaires sont mis en oeuvre dans les ralisations matrielles de ceree e e taines fonctions dont, principalement, les fonctions boolennes. Ces ralisations e e matrielles reoivent le nom de dispositifs logiques. Nous verrons plus loin come c ment combiner de telles fonctions pour raliser les lments dun ordinateur. e ee Cela se fera seulement ` travers un moyen de ralisation des dispositifs : la a e technologie CMOS (Complementary Metal Oxyde Semiconductor). Nous ne donnons que les principes gnraux. Il nest pas question ici dinclure un cours e e complet de physique ou dlectronique donnant les tenants et aboutissants de e chacun des phnom`nes tudis. e e e e Nous envisageons les phnom`nes sous des points de vue dabstraction e e croissante : lchelle atomique, o` lon parle datomes et dlectrons (pae u e ragraphe 1.) ; lchelle lectrique, o` lon parle de rsistances, de condene e u e sateurs et de transistors (paragraphe 2.) ; lchelle logique, o` lon parle e u de fonctions boolennes (paragraphe 3.). Nous nous loignons ainsi proe e gressivement des phnom`nes physiques pour en avoir une vision en e e terme dinformation. Cela permet de dcrire lensemble des circuits loe giques utiliss dans les ordinateurs (paragraphe 4.). Nous donnerons e aussi un bref aperu de la fabrication des circuits, notamment en raison c de linuence quelle a sur les mthodes de conception (paragraphe 5.). e

1.
1.1
1.1.1

Phnom`nes ` lchelle atomique e e a e


Atomes, lectrons et cristaux e
Atomes, lectrons e

La mati`re est constitue datomes. Chaque atome est constitu dun e e e noyau et dun cort`ge dlectrons appel nuage lectronique. Les lectrons e e e e e

http://fribok.blogspot.com/

138

De llectron aux dispositifs logiques e

portent chacun une charge lectrique lmentaire ngative et le noyau autant e ee e de charges positives quil y a dlectrons. On rpartit les lectrons selon e e e leur nergie en niveaux dnergie. La classication priodique des lments e e e ee de Mendele donne pour chaque lment : le nombre dlectrons dans le ev ee e cort`ge ; le nombre de niveaux dnergie contenant des lectrons ; le nombre e e e dlectrons appartenant au niveau dnergie le plus lev (la couche externe). e e e e Extrayons une partie de cette table :
B bore Ga gallium C carbone Si silicium Ge germanium

P phosphore As arsenic

Le carbone, le silicium et le germanium ont 4 lectrons au niveau dnergie e e le plus lev, le bore et le gallium en ont 3, le phosphore et larsenic 5. e e 1.1.2 Cristaux

Les atomes dun corps sont lis entre eux plus ou moins fortement et e peuvent se disposer les uns par rapport aux autres selon des structures rguli`res : les cristaux. Le diamant et le graphite sont 2 organisations phye e siques direntes du mme lment chimique carbone. De mme il existe des e e ee e varits de silicium monocristallin et polycristallin qui sont obtenues par des ee procds de fabrication dirents. e e e

1.2

Courant et conducteur

Lorganisation des atomes en rseaux cristallins entra un largissement e ne e des niveaux dnergie (qui sont discrets) en bandes dnergies (qui sont contie e nues) et une dlocalisation des lectrons de plus haute nergie sur lensemble e e e du rseau. Le courant lectrique est un mouvement densemble de particules e e charges, ici les lectrons. Qui dit mouvement dit nergie cintique, donc vae e e e riation de lnergie totale de llectron. Ceci nest possible que sil trouve une e e place ` lnergie correspondante dans une bande dnergie autorise et non a e e e pleine. 1. Si la derni`re bande nest pas pleine, lnergie ncessaire ` cette excursion e e e a est faible : on parle de conducteur comme le cuivre, lor, laluminium. 2. Si la derni`re bande est pleine et spare de la suivante par une zone e e e dnergie non autorise (gap), lnergie ncessaire ` la production dun e e e e a courant lectrique est forte : on parle disolant. Le quartz est un cristal e isolant doxyde de silicium. Le verre est un oxyde de silicium, isolant, mais non cristallin. 3. Il arrive que le gap soit faible, lnergie ncessaire est alors intermdiaire : e e e on parle de semi-conducteur . Le silicium et le germanium sont deux corps simples semi-conducteurs. Larseniure de gallium est un corps compos e semi-conducteur. Ces trois matriaux sont les constituants de base des e

http://fribok.blogspot.com/

1. Phnom`nes ` lchelle atomique e e a e

139

circuits lectroniques. Le silicium est le plus rpandu dans les composants e e utiliss en informatique. Le dioxyde de silicium peut tre utilis comme e e e isolant, il peut tre obtenu facilement ` la surface du silicium. e a En gagnant de lnergie (par exemple dorigine thermique), un lectron peut e e atteindre la bande de conduction et sloigner, laissant derri`re lui un trou dans e e la bande de valence et un atome charg positivement. Il y a donc cration dune e e paire (lectron mobile ngatif, trou xe positif). Rciproquement, un autre e e e lectron perdant de lnergie peut venir combler ce trou et rtablir lquilibre e e e e lectrique de latome. On parle alors de recombinaison lectron-trou. Du point e e de vue lectrique, il est alors commode de considrer que cest un trou positif e e qui sest dplac dans le cristal. e e Dans un semiconducteur pur il y a autant de trous que dlectrons. e

1.3

Diusion et dopage

Faites cette exprience (ou imaginez-la) : prenez un verre de th (pas e e une tasse, un verre) pas trop fort mais pas trop clair, Darjeeling, Earl Grey, Lapsang-Souchong, . . .au choix. A la surface du liquide dposez dlicatement e e une goutte de lait. Ne remuez pas le verre et regardez par transparence. Il y a diusion du lait dans le th. Au bout dun certain temps, en un point du e verre de th, la concentration de lait est fonction de la distance par rapport e au point de dpt de la goutte, de la concentration du th, de la grosseur de e o e la goutte, de la temprature . . . e Imaginez le mme phnom`ne de diusion dun solide (du phosphore) dans e e e un autre solide (du silicium). Bien sr il faut chauer un peu, et on ne voit u rien par transparence. Le rsultat de lexprience prcdente est intressant en termes lectriques. e e e e e e Les lments silicium et phosphore sont voisins par leur structure lectronique : ee e il y a un lectron de plus dans le phosphore. Lintroduction de phosphore dans e le silicium modie la structure et lquilibre atomiques. Le silicium ainsi trait e e est devenu meilleur conducteur. La dirence de rsistivit est importante. En e e e apportant un atome de phosphore pour 100 millions datomes de silicium, la rsistivit est divise par un facteur de lordre de 30 000. e e e On dit que le silicium a t dop ; on parle de dopage ngatif puisquil ee e e y a exc`s dlectrons. Quand le silicium a reu, par diusion, des atomes de e e c phosphore, tout se passe comme si on avait du silicium avec des lectrons e libres, non lis aux atomes. e On peut aussi doper positivement le silicium en diusant du bore qui a un lectron de moins et obtenir un exc`s de trous. e e Lintrt du silicium est quil est facilement dopable et que le dioxyde de ee silicium est, lui, un obstacle au dopage. Par facilit de langage on dit souvent e dop N (pour Ngatif, exc`s dlectrons) ou dop P (pour Positif, exc`s de e e e e e e trous) en parlant du silicium.

http://fribok.blogspot.com/

140

De llectron aux dispositifs logiques e

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

2.
2.1

Phnom`nes ` lchelle lectrique e e a e e


Rappels dlectricit lmentaire e eee

La rsistance R dun l lectrique homog`ne de section constante est propore e e tionnelle ` la longueur L du l, ` la rsistivit du matriau et inversement a a e e e proportionnelle ` la section S du l. a Si un l est purement rsistif, la dirence de potentiel U aux bornes du l e e est proportionnelle ` la rsistance R de ce l et ` lintensit I du courant a e a e qui le traverse. Cest la loi dOhm. Un sandwich Conducteur-Isolant-Conducteur ralise un condensateur. Sa e capacit C augmente avec la surface S des armatures conductrices et dimie nue avec leur cartement. Elle varie selon les caractristiques lectriques du e e e matriau isolant. e La charge Q emmagasine dans un condensateur est proportionnelle ` la e a capacit C du condensateur et ` la dirence de potentiel U aux bornes du e a e condensateur. La variation dQ/dt de la charge aux bornes du condensateur est lintensit e du courant de charge (ou de dcharge) du condensateur. e Si deux conducteurs sont branchs en srie entre deux points, le courant e e doit passer dans les deux conducteurs. Les rsistances sajoutent. e Dans le mcanisme du pont diviseur si deux rsistances de valeurs R1 e e et R2 sont connectes en srie entre deux points relis ` des potentiels e e e a Va et 0, le point situ entre les deux rsistances est ` un potentiel V = e e a V a R1/(R1 + R2). Si deux conducteurs sont branchs en parall`le entre deux points, le e e courant passe en partie par un conducteur, en partie par lautre, selon leurs rsistances. Les conductances (inverse de rsistances) sajoutent. e e Si un condensateur charg, de capacit C, est mis en situation de se e e dcharger ` travers un conducteur de rsistance R, il se dcharge. La vae a e e riation de tension est dcrite par une exponentielle en et/RC . Le temps de e dcharge est dautant plus grand que R et C sont grands. Le phnom`ne de e e e charge est symtrique. e Une diode, constitue dune zone dope N et dune zone dope P, ne laisse e e e passer le courant que dans un sens.

2.2
2.2.1

Le transistor ` eet de champ M.O.S. a


Description physique du principe du transistor ` canal N a

Observons la gure 7.1. Dans un substrat de silicium (varit monoee cristalline, faiblement dope P) on dlimite deux zones fortement dopes e e e

http://fribok.blogspot.com/

2. Phnom`nes ` lchelle lectrique e e a e e

141

Grille L N x

A y N

Grille

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 dun transistor seul ou reli e

Ngativement. Ces deux zones sont espaces dune distance L. La zone faie e blement dope P est nomme substrat. Sur la zone rectangulaire entre les deux e e zones dopes, on fait cro e tre du dioxyde de silicium : le verre (isolant). Audessus du verre on dpose du silicium (polycristallin) et on le dope aussi. e
Remarque : La ralit de fabrication est dirente : en fait, le dopage du e e e silicium monocristallin du substrat et celui du silicium polycristallin au-dessus de loxyde pourraient tre simultans : la couche de dioxyde de silicium bloque e e la diusion.

On obtient ainsi deux sandwiches. Lun vertical : Conducteur Isolant Semi-conducteur et lautre horizontal : Semi-conducteur dop Semi-conducteur Semi-conducteur dop. e e Le premier est ` lorigine du nom Mtal Oxyde Semi-conducteur. Sur la a e gure 7.1, les zones dopes du substrat sont notes A et B. On appelle grille la e e zone de silicium polycristallin dop. Lisolant est sous la grille. Les deux zones e A et B sont ici supposes rectangulaires pour faciliter le dessin. La distance L e entre les deux zones est caractristique dune technologie de ralisation. Si le e e journal annonce la sortie dun nouveau circuit en technologie 0,17 micron, cela donne la distance L pour les transistors. 2.2.2 Comportement lectrique e

Supposons que le substrat est reli ` la masse et que les tensions sont telles ea que Vsubstrat VA < VB . Nous appellerons B le drain et A la source. Si la tension de grille est nulle, entre le drain et la source, se trouvent deux jonctions NP orientes en sens inverse lune de lautre. Or une jonction a pour e proprit de ne conduire le courant que dans le sens N vers P. La jonction ee drain-substrat bloque donc le passage du courant entre le drain et la source : le transistor est bloqu. e Lorsquune tension positive est applique sur la grille, le champ lectrique e e entre la grille et le substrat attire sous la grille et concentre en surface les lectrons libres du substrat (et repousse les trous en profondeur). En sure

http://fribok.blogspot.com/

A N

142

De llectron aux dispositifs logiques e

source A=0V

Grille

drain B

A=0V Grille N

A=0V Grille 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 sil existait sous la grille un canal drain-source de faible profondeur, articiellement dop ngativement par laccumulation e e dlectrons due au champ lectrique grille-substrat. Ce canal est conducteur et e e un courant peut y circuler. Lintensit du courant est soumise ` la loi dOhm : e a la rsistance du canal entre source (A) et drain (B) est fonction de la longueur e et de la section du canal mais aussi de la rsistivit du semi-conducteur obtenu. e e Cette rsistivit diminue ` mesure que la dirence de potentiel entre e e a e la grille et le substrat augmente. Le transistor fonctionne donc comme une rsistance commande par la dirence de potentiel grille-substrat. e e e Cet eet de conduction d ` un champ lectrique a donn le nom de tranua e e sistor ` eet de champ. a Une modlisation plus ne du transistor met en vidence une limite du e e transistor : la tension du drain et la source doit tre infrieure ` celle de la e e a grille faute de quoi le canal ne peut se former. Nous appellerons V gsth la dirence de potentiel minimale entre grille et source ncessaire ` la formation e e a du canal. La gure 7.2, dans laquelle les petits points reprsentent des lectrons, e e sugg`re la formation du canal. e Par rapport au substrat la grille du transistor se comporte comme une capacit. Quand la capacit est charge, elle est au potentiel dalimentation, e e e quand elle ne lest pas, la grille est au potentiel de la masse. 2.2.3 Le transistor ` canal P a

Il est obtenu de faon assez symtrique du transistor ` canal N. Le dopage c e a est fait par du bore qui a 3 lectrons sur la couche externe. Le dopage est e P ositif : des trous sont apparus. Le substrat faiblement dop N est reli au e e potentiel positif dalimentation, typiquement 5 volts. Le canal se forme si le potentiel sur la grille est susamment plus petit que celui du substrat. On remarque la dicult de cohabitation sur un mme substrat de silicium e e dun transistor N avec un substrat P ` la masse et dun transistor P avec un a substrat N reli ` lalimentation. Cest pourtant ce que lon cherche ` faire en ea a technologie CMOS, o` les deux types de transistors cohabitent. La technologie u

http://fribok.blogspot.com/

3. Phnom`nes ` lchelle logique e e a e

143

de ralisation bri`vement dcrite au paragraphe 5.2 en tient compte. e e e 2.2.4 Remarque nale ` propos dlectricit a e e

Le fonctionnement du transistor, N ou P, tel quil vient dtre dcrit est tr`s e e e continu : une petite variation dun des param`tres induit une petite variation e de comportement. Le transistor ne passe pas brutalement de conducteur ` a non conducteur. Tout changement de lpaisseur doxyde, de la longueur du e canal du transistor, de la dirence de potentiel entre la grille et le substrat ou e entre les points A et B donne une variation de lintensit du courant de faon e c continue. La mise en quation des phnom`nes physiques mis en jeu dans le transistor e e e MOS est traite dans les livres dlectronique (Par exemple [CDLS86]) et na e e pas sa place ici.

3.

Phnom`nes ` lchelle logique e e a e

Dans lalg`bre boolenne, les deux lments signicatifs sont cods 0 et e e ee e 1. Avec deux symboles, interprts comme des chires 0 et 1, la numration ee e en base 2 permet de reprsenter les nombres. Les dispositifs ` transistors ont e a un comportement continu : toute variation innitsimale des entres provoque e e une variation faible des sorties (courant, tension...). La question est de savoir comment reprsenter des informations numriques avec des dispositifs ainsi e e continus. Il existe des calculateurs dits analogiques. Le principe est simple : le nombre 470 est reprsent par la tension 4,7 volts, le nombre 32 est reprsent par 0,32 e e e e volts. Un circuit additionneur est un dispositif ` deux entres, capable de a e dlivrer sur la sortie la somme, ici 5,02 volts, des tensions. Ces machines sont e diciles ` calibrer si lon souhaite une prcision dans les calculs de plus de 4 a e chires dcimaux signicatifs. e Par opposition aux calculateurs analogiques, les calculateurs les plus frquents sont numriques, ou digitaux . Les nombres sont reprsents par des e e e e vecteurs de boolens, ou vecteurs de bits. e

3.1

Labstraction logique

Les valeurs 0 et 1 dun bit sont reprsentes par des tensions, respectivement e e nulle (0 volt ou masse) et la tension dalimentation, standardise ` 5 volts (de e a plus en plus souvent 3,3 volts, voire moins, notamment dans les machines portables). Les transistors sont fabriqus de telle faon quil existe une tension de e c seuil (threshold en anglais) Vth au-dessus de laquelle lentre dun circuit ine terprtera le signal comme un 1, et comme un 0 au-dessous. La valeur nominale e de Vth est choisie de mani`re ` optimiser la tolrance aux bruits et parasites e a e

http://fribok.blogspot.com/

144

De llectron 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 aecter le signal. Compte tenu des tolrances de fabricae e tion sur la valeur de Vth , tous les circuits interprteront une tension infrieure e e a 0,75 volts comme un 0 et suprieure ` 4,5 volts comme un 1. e a On parle de niveaux 0 logique et 1 logique, ou de niveaux logiques bas et haut. En logique ngative le niveau haut correspond au 0 et le niveau bas au e 1. Nous ne prendrons pas cette convention. Etudions un comportement simpli du transistor. Cette simplication e consiste ` faire comme si le canal du transistor tait soit totalement bloqu soit a e e passant, auquel cas il a une rsitance R. Nous ne regardons les transistors que e relis soit a la masse, (le potentiel 0 volt), soit ` un potentiel positif, la tension e ` a dalimentation. En ralit les tensions lectriques varient de faon continue, et e e e c parfois il y a des parasites. Pour un transistor ` canal N avec le substrat ` la masse : a a Si la grille est ` lalimentation, le transistor est passant. Sil y a une a dirence de potentiel entre A et B, du courant circule entre A et B. e Si la grille est ` la masse, le transistor est bloqu. Mme sil y a une dirence a e e e de potentiel entre A et B, aucun courant ne circule entre A et B. Pour un transistor ` canal P, avec le substrat ` lalimentation, le fonctiona a nement est invers : e Si la grille est ` ` la masse, le transistor est passant. Sil y a une dirence aa e de potentiel entre A et B, du courant circule entre A et B. Si la grille est ` lalimentation, le transistor est bloqu. Mme sil y a une a e e dirence de potentiel entre A et B, aucun courant ne circule entre A et B. e Ces direntes fonctions sont regroupes dans le tableau de la gure 7.3. Ce e e comportement simpli fait abstraction de nombreux phnom`nes. On parle e e e dabstraction logique.

3.2

Ralisation de la fonction logique e la plus simple : linverseur

Les fonctions logiques peuvent tre modlises simplement par des fonce e e tions boolennes. La ralisation matrielle de lopration boolenne de e e e e e complmentation sappelle un inverseur . Linverseur peut tre un montage e e lectrique ayant une entre E et une sortie S (Lalg`bre de Boole ne tient e e e

http://fribok.blogspot.com/

3. Phnom`nes ` lchelle logique e e a e

145

videmment pas compte de lexistence de lalimentation et de la masse dans e les montages lectriques). e On fait abstraction des valeurs exactes des tensions lectriques en disant : e Si E = 0, alors S = 1 et si E = 1 , alors S = 0. En ralit, comme on va le voir, si 0 <= E <= 0,75 volts, alors S = 5 volts e e et si 4,5 <= E <= 5 volts, alors S = 0 volt. Cela nous donne les points extrmes de fonctionnement dun inverseur. e Mais quel peut tre le comportement souhaitable de linverseur entre ces deux e extrmes ? Pour rpondre ` cette question imaginons deux montages : lun e e a constitu de 4 inverseurs en srie : la sortie de lun est lentre du suivant. Dans e e e lautre les deux inverseurs sont rtrocoupls : la sortie de lun est lentre de e e e lautre et rciproquement. Les schmas simplis correspondants sont donns e e e e gure 7.4. Linverseur y est reprsent par une simple bo avec une entre e e e te e et une sortie s. Dans le montage de 4 inverseurs en srie, envoyons un signal dentre qui e e en fonction du temps passe de 0 ` 5 volts (la reprsentation en escalier ntant a e e pas ` prendre au pied de la lettre). a Examinons les sorties apr`s 2, ou 4, inversions pour trois types dinverseurs. e Les trois sont candidats au titre du meilleur inverseur. Pour les trois types, nomms Accroissement, Maintien, Diminution, nous e donnons une courbe de transfert donnant la tension de sortie de linverseur en fonction de la tension dentre (Figure 7.5). Pour les trois types les vae leurs extrmes des tensions sont respectes, et il existe une tension mdiane e e e VM pour laquelle la tension de sortie est gale ` la tension dentre. Mais le e a e comportement entre ces points est dirent. e Pour les trois types nous donnons lallure de la rponse du montage e constitu de 2 ou de 4 inverseurs ` lentre en escalier. e a e Linverseur de type Accroissement accentue les dirences entre les niveaux e faibles et forts. Cest un amplicateur. Si il y a un faible parasite en entre, le e parasite nest pas apparent en sortie. A linverse linverseur de type Diminution diminue les dirences entre e niveaux faibles et forts. D`s que le signal dentre prsente un parasite, le e e e niveau de sortie risque dtre autour de VM , ce qui nest pas souhaitable. e De mme, pour le montage constitu de deux inverseurs rtrocoupls, on e e e e comprend aisment que linverseur de type Accroissement donne un syst`me e e stable. Soit une sortie vaut 1 et lautre 0, soit le contraire, mais une stabilisation a ` un tat intermdiaire est tr`s improbable (quoique pas impossible). Avec un e e e inverseur du type Diminution, on pourrait facilement obtenir un montage de deux inverseurs rtrocoupls se stabilisant avec des sorties ` VM . e e a Cest videmment linverseur de type Accroissement qui est le plus e intressant pour la ralisation de fonctions boolennes. e e e Llectronique digitale tudie de faon prcise comment obtenir un mone e c e tage ayant la bonne courbe de transfert. Elle permet aussi dtudier une e ralisation avec un point de basculement Vm proche de la moiti de la tene e

http://fribok.blogspot.com/

146

De llectron aux dispositifs logiques e

Accroissement Maintien 5V 0V entre e Diminution s1 apr`s 2 inversions e e e s e s e s e s s2 2 inverseurs rtro-coupls e e s2 apr`s 4 inversions e e s e s

s1 4 inverseurs en srie e

Fig. 7.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.5 Courbes de transfert de trois candidats inverseurs

http://fribok.blogspot.com/

3. Phnom`nes ` lchelle logique e e a e

147

Transistors gN dN sN dP gP sP masse sN

Inverseur CMOS entre e gN gP alim. dN dP sP sortie

` canal N a

` canal P a

Fig. 7.6 Schma conventionnel des transistors MOS et de linverseur CMOS. d,g,s sont e respectivement les Drains, Grilles et Sources. N et P dsignant les transistors e N et P.

Tension dentre e Ve 0 V <= Ve <= 0.75 V 4.5 V <= Ve <= 5 V

Rsistance du e transistor N RN innie R2

Rsistance du e transistor P RP R1 innie

Tension de sortie Vs 5V 0V

Fig. 7.7 Rponse de linverseur CMOS e

sion de rfrence, ce qui donne une bonne tolrance aux parasites ([CDLS86]). ee e Nous donnons ici deux solutions : la principale est la technologie ` base a de transistors MOS Complmentaires (Complementary MOS). La gure 7.6 e donne la structure interne de linverseur. En technologie CMOS, linverseur est obtenu en connectant un transistor N et un transistor P en srie entre la e masse et lalimentation. Lentre est la tension de grille commune aux deux e transistors et la sortie est le point intermdiaire entre les deux. Les substrats e respectifs des deux transistors N et P sont ` la masse et ` lalimentation. a a Si lon consid`re les direntes valeurs possibles pour la tension dentre e e e V e, on obtient le tableau de la gure 7.7, o` RN dsigne la rsistance du u e e transistor a canal N, RP dsigne la rsistance du transistor ` canal P, V s ` e e a dsigne la tension de sortie, gale, dans tous les cas, ` Vref RN /(RP + RN ) e e a ou Vref 1/(1 + RP /RN ), o` Vref dsigne la tension dalimentation. u e Une autre solution est de remplacer le transistor P par une rsistance, mais e la courbe de transfert est moins intressante. Le principal avantage est une e plus grande simplicit (Inverseur NMOS). On utilisera dans le livre certaines e portes bases sur ce principe. e Il existe dautres organisations dinverseurs. Beaucoup des circuits de petite chelle dintgration (quelques centaines de transistors par puce) sont dans e e une technique nomme Transistor Transistor Logic TTL. Mais la plupart des e circuits de tr`s grande chelle dintgration sont aujourdhui en CMOS. e e e

http://fribok.blogspot.com/

148

De llectron aux dispositifs logiques e

3.3

Fonctionnements statique et dynamique de linverseur

Lanalyse du fonctionnement statique de linverseur a t faite ee prcdemment. Si lentre est stable ` 1, la sortie est stable ` 0. Si lentre e e e a a e est stable a 0, la sortie est stable ` 1. ` a Ltude du comportement dynamique de linverseur concerne le comportee ment lors des changements de tension dentre. Elle doit prendre en compte o` e u est connecte la sortie de cet inverseur. La rponse est simple : ` des grilles de e e a transistors, en entre dautres circuits logiques. Elles sont donc capacitives par e rapport ` la masse. On assimilera donc la sortie de linverseur ` une capacit. a a e Que se passe-t-il lors du changement de la tension dentre ? Lors dun front e montant, o` la tension dentre passe de 0 ` 5 volts, la sortie doit passer de 5 ` u e a a 0 volts. La capacit relie ` la sortie doit se dcharger, vers la masse, ` travers e e a e a le transistor N. Symtriquement, lors dun front descendant, la capacit de e e sortie doit se charger ` travers le transistor P. a Cette charge ou cette dcharge se fait en un certain temps. Ce temps constie tue le temps de basculement, ou temps de rponse, de linverseur. Ce temps e est couramment infrieur ` la nanoseconde (109 s). Il dpend fortement de e a e la valeur de la capacit. Lexistence de ce temps de changement de la sortie e de linverseur explique pourquoi tous les circuits logiques ont un temps de rponse. e

4.

Circuits logiques

Nous allons tudier dans la suite dirents assemblages de transistors e e ralisant des fonctions boolennes. Ces assemblages seront classs en deux e e e catgories : e Les assemblages qui ne mmorisent pas linformation, que lon nomme cire cuits combinatoires, Les assemblages qui mmorisent de linformation, que lon nomme circuits e squentiels. e
Les dirences entre ces deux types de circuits sont diciles ` comprendre. e a On y revient dans la suite du livre. Chacune des deux familles fait lobjet dun chapitre entier (Cf. Chapitres 8 et 10).

4.1

Assemblages combinatoires

Les ralisations des fonctions boolennes sappellent des portes logiques. La e e gure 7.9 donne la structure de direntes portes logiques. Linverseur est une e porte logique ` une entre et une sortie. Il est dj` connu (gure 7.9-a). a e ea

http://fribok.blogspot.com/

4. Circuits logiques

149

P E S

E=0V Charge E=5V P S=0V Dcharge e E C Dcharge e e N S

P S=5V

C Charge e

Fig. 7.8 Dcharge et charge de la capacit de sortie dun 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. 7.9 Structure interne de direntes portes de base e

http://fribok.blogspot.com/

150

De llectron aux dispositifs logiques e

4.1.1

La porte NOR ` deux entres E1 et E2 a e

Le montage comporte deux transistors N et deux transistors P. Les deux transistors N sont en parall`le entre la masse et la sortie, les deux transistors e P sont en srie entre lalimentation et la sortie. Les grilles dun transistor N et e dun transistor P sont connectes ` lentre E1, les grilles de lautre transistor e a e N et de lautre transistor P sont connectes ` lentre E2. La sortie est donc e a e relie ` la masse, via une rsistance passante, si et seulement si une au moins e a e des deux entres est au niveau de lalimentation. La fonction logique est un e NOR ` deux entres. On le note parfois NOR2 (gure 7.9.-b). a e 4.1.2 La porte NAND ` deux entres E1 et E2 a e

Le montage comporte deux transistors N et deux transistors P. Les deux transistors N sont en srie entre la masse et la sortie, les deux transistors P sont e en parall`le entre lalimentation et la sortie. Les grilles dun transistor N et dun e transistor P sont connectes ` lentre E1, les grilles de lautre transistor N et e a e de lautre transistor P sont connectes ` lentre E2. La sortie est donc relie e a e e a ` la masse, via une rsistance passante, si et seulement si les deux entres sont e e au niveau de lalimentation. La fonction logique est un NAND ` deux entres. a e On le note souvent NAND2 (gure 7.9-c). 4.1.3 Les portes ` plus de deux entres a e

De faon tr`s similaire au montage des portes NAND ou NOR ` deux entres, c e a e on obtient une porte NOR ` trois entres avec 3 transistors N en parall`le entre a e e la masse et la sortie et 3 transistors P en srie entre la sortie et lalimentation. e De mme on obtient une porte NAND ` trois entres avec 3 transistors N en e a e srie entre la masse et la sortie et 3 transistors P en parall`le entre la sortie et e e lalimentation. Le procd semble pouvoir continuer. Noublions pas que les rsistances e e e des transistors passants en srie sajoutent. Certaines techniques de ralisation e e vont imposer des contraintes dorigine lectrique au nombre maximal dentres e e des portes. 4.1.4 Une porte inconnue ` trois entres a e

Le montage de la gure 7.9-d est particulier en ce sens quil ne ralise e pas une fonction logique lmentaire comme le NAND ou le NOR. On vrie ee e aisment que S vaut 0 si et seulement si E1 vaut 1 ou si E2 et E3 valent 1. On e a donc S = E1 + E2.E3. 4.1.5 Deux inverseurs en parall`le : un petit et un gros e

Si lon connecte ensemble les sorties de deux inverseurs, que se passe-t-il ? Si les deux inverseurs ont la mme entre, donc la mme sortie, il ny a rien e e e de spcial a dire, le comportement global est celui dun seul inverseur. e `

http://fribok.blogspot.com/

4. Circuits logiques

151

C e s A B e2 e3 B e s e e1 e s

c1

c2

c3

C A

Aiguillage 3 voies vers 1


C e e s e s C s

Commutateur - structure interne - schma simpli e e Porte de sortie 3 tats e - structure interne - schma simpli e e

Fig. 7.10 Commutateur et aiguillage ` base de commutateurs a

Si les deux inverseurs ont des entres direntes, on se trouve avec deux e e montages de ponts diviseurs de rsistances en parall`le. Si les deux inverseurs e e ont des rsistances tr`s proches, la tension de sortie est autour de 2,5 volts. e e Si lun des deux inverseurs a des transistors dont les rsistances sont tr`s e e direntes de lautre, un des deux inverseurs peut prendre lavantage, la tene sion de sortie prenant des valeurs de 2 ou 3 volts, par exemple. Ce type de fonctionnement chappe videmment au domaine des circuits combinatoires e e bien construits... Dans certaines technologies le pont diviseur obtenu laisse passer beaucoup de courant, ce qui produit de lnergie thermique. Cest le court-circuit. e 4.1.6 Le commutateur ou interrupteur 3 tats e

La source dun transistor MOS peut ne pas tre connecte au mme potene e e tiel que le substrat. On obtient alors entre drain et source un demi-interrupteur lectronique command par la tension de grille qui permet de raliser des e e e connexions intermittentes entre dautres lments. (Cf. Figure 7.10) ee La polarit du signal de commande qui tablit la connexion dpend du type e e e de transistor (1 pour un transistor ` canal N, 0 pour un transistor ` canal P). a a Pour que les niveaux logiques 0 et 1 soient tous les deux bien transmis, on utilise une paire de transistors N et P. On a alors un interrupteur complet, ou

http://fribok.blogspot.com/

152

De llectron 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 indfini e Fig. 7.11 Comportement de laiguillage

commutateur. Le commutateur est dusage frquent. Il est symbolis par un e e simple carr inclin. e e 4.1.7 Laiguillage

Observons la gure 7.10. Dans laiguillage 3 voies vers 1 ralis ` base de 3 e ea commutateurs et de 3 inverseurs, on dit que la sortie s constitue une connexion de type bus. les complmentaires des trois signaux e1, e2, e3 peuvent tre e e envoys sur le bus. La sortie s est dcrite Figure 7.11. Cette sortie est parfois e e indnie. e Le cas indni est complexe ; il y a deux sous-cas. Si lon trouve deux e ou trois sorties gales sur le bus, cela ne pose pas de probl`me, et s prend e e cette valeur. Si lon trouve des sorties direntes, selon les forces respectives e des inverseurs qui traitent e1, e2 et e3, s reoit une valeur non boolenne. Ce c e montage ne doit donc sutiliser quavec la garantie que seulement lun parmi c1, c2, c3 vaut 1. 4.1.8 Lamplicateur 3 tats e

Observons la gure 7.12. Lensemble inverseur (qui est aussi un amplicateur) suivi dun commutateur est parfois ralis en un seul circuit nomm e e e amplicateur/inverseur 3 tats. Le montage constitu de deux inverseurs suivis e e dun commutateur reoit le nom de porte de sortie 3 tats. On peut dire aussi c e que cest un inverseur suivi dun amplicateur/inverseur. Ce montage est utilis dans beaucoup de dispositifs comprenant des bus. Nous en utiliserons dans e les chapitres relatifs aux entres/sorties. On donne aussi une autre ralisation e e de la porte 3 tats. Dans ces dirents montages, les rsistances des transistors e e e quand ils sont passants doivent tre ajustes soigneusement. e e 4.1.9 La gare de triage

Par gnralisation des aiguillages, et utilisation de portes de sortie 3 tats, e e e le montage de la gure 7.13 permet de relier 4 points A, B, C et D. Les liaisons entre A, B, C et D sont fonctions de signaux de commande de sortie aout, bout, cout et dout et de signaux de commande dentre ain, bin, cin e et din. En fonctionnement normal, un seul des signaux de commande de sortie doit valoir 1. Plusieurs des signaux de commande dentre peuvent valoir 1. e Par exemple quand aout et cin et din valent 1 et que tous les autres valent 0,

http://fribok.blogspot.com/

4. Circuits logiques

153

OE

OE

s e OE

(a) OE e s e OE s e OE s

(b)

(c) Fig. 7.12 Deux ralisations de lamplicateur/inverseur 3 tats et leurs symboles. Line e verseur est reprsent par un triangle avec un petit rond, les 2 portes sont e e un nand2 et un nor2. (a) schmas en transistors. (b) schmas en transistors e e et portes. (c) symboles logiques.

aout A

ain

cin

cout C

bout

bin

din

dout

Fig. 7.13 Ensemble daiguillages constituant une gare de triage.

http://fribok.blogspot.com/

154

De llectron aux dispositifs logiques e

la valeur de A est transmise sur C et D. Cette transmission est directionnelle. Ce type de structure est utilise dans les interconnexions entre une mmoire e e et plusieurs processeurs par exemple (Cf. Chapitre 16). La liaison centrale (en gras sur la gure), par laquelle tout passe, est le bus du syst`me. e

4.2
4.2.1

Assemblages squentiels e
Introduction

La ralisation de dispositifs squentiels permet de stocker linformation. e e Cela signie piger la valeur dun signal lectrique ` un instant donn dans un e e a e dispositif o` cette valeur restera stable. u Pour comprendre cette mcanique commenons par voir comment une vae c leur peut tre mmorise de faon stable. Pour cela examinons le rtrocouplage e e e c e de deux inverseurs dj` rencontr pour ltude de linverseur. ea e e 4.2.2 Le bistable

Observons la gure 7.14-a. Le montage de deux inverseurs, chacun ayant comme entre la sortie de lautre, a trois points de fonctionnement : e lentre du premier est au niveau logique 1, sa sortie au niveau logique 0. e ` linverse, cest le deuxi`me inverseur qui a lentre ` 1 et la sortie ` 0 (ces a e e a a deux tats sont stables, le montage sappelle un bistable car il a deux points e de fonctionnement stable). lentre et la sortie des deux inverseurs sont ` 2,5 volts. Cet tat est instable, e a e le moindre parasite sur une des deux connexions est amplie et le syst`me e e tombe dans un des deux tats stables. Cest pour cela quon a choisi des e inverseurs de type Accroissement (on parle souvent de mta-stabilit pour e e cet tat). e Il reste un probl`me : ces deux tats sont tellement stables quon ne voit pas e e comment y piger une nouvelle valeur. Rsoudre ce probl`me permet de raliser e e e e une mmoire vive de 1 mot de 1 bit. e 4.2.3 Les points mmoire de type mmoire vive e e

Le point mmoire lmentaire, telle quil est ralis dans les bo e ee e e tiers de mmoire vive statique, permet de piger une valeur nouvelle dans un bistable e e (gure 7.14-b). Si la commande de forage F sur les 2 transistors de part et c dautre du bistable est active et si aux extrmits du dispositif on prsente e e e une valeur V1 et son complment V2 ` laide de circuits plus puissants que les e a deux inverseurs utiliss dans le montage bistable, ces deux valeurs restent en e place quand la commande F sur les deux transistors redevient inactive. Cest un point de mmorisation dans lequel on peut donc crire. La lece e ture se fait simplement en rcuprant les valeurs du bit mmoris et de son e e e e

http://fribok.blogspot.com/

4. 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 forage c (b)

Points de mmorisation dynamique e (c)

Fig. 7.14 Les dirents points mmoire e e

complmentaire en sortie des deux inverseurs. Le chapitre 9, consacr aux e e lments de mmorisation, reprend ces points en dtail. ee e e

4.2.4

Les points de mmorisation dynamiques e

Il existe des points mmoire utilisant un principe tout ` fait dirent : e a e cest la capacit dentre dun inverseur, ou dune porte, qui pi`ge la valeur e e e (Figure 7.14-c). La mmorisation a lieu pendant que les signaux F1 et F2 sont inactifs. Une e nouvelle valeur est introduite dans la capacit du premier inverseur par la mise e a ` 1 de F1. Cette mmorisation dans la capacit de grille dun transistor ne peut e e tre de longue dure. Elle est en revanche tr`s intressante car elle nutilise e e e e pas de circuits en plus des fonctions combinatoires. Si lon veut transfrer e linformation dun point ` un autre on utilise F2. Il convient dans ces points a de mmorisation dynamique de ne pas avoir simultanment F1 et F2 actifs. e e

4.2.5

Loscillateur

Le circuit oscillateur prsent gure 7.15-a oscille. Le montage dun quartz e e de frquence de rsonnance donne permet de rendre la frquence doscillation e e e e constante. Ce montage fabrique un signal priodique, carr. Il est utilis comme e e e horloge. Dans la suite du livre nous utiliserons ces primitives de rinitialisation e (Reset) et dhorloge pour les ralisations de circuits squentiels. e e

4.2.6

Le monostable

Lors de lappui sur le bouton Reset dun ordinateur, une impulsion est gnre, puis elle dispara Un montage comme celui de la gure 7.15-b assure e ee t. cette fonctionnalit. e

http://fribok.blogspot.com/

156

De llectron aux dispositifs logiques e

R R C (a) R C Clock (b) Vreset

Fig. 7.15 (a) Oscillateur dlivrant une horloge. (b) Syst`me de rinitialisation dlivrant e e e e une tension de Reset.

5.

Fabrication des dispositifs

Les dispositifs ` base de transistors sont raliss dans des cha a e e nes de fabrication de haute technologie. Pour simplier la prsentation, supposons que le e monde comporte deux catgories : les fabricants eux-mmes et les clients. Si e e le client trouve dans les catalogues des fabricants le circuit dont il a besoin, dj` conu, il lach`te et lutilise. Sinon le client conoit un circuit pour une ea c e c application et le fait fabriquer, puis il int`gre le circuit dans un assemblage, e gnralement logiciel et matriel. Cet assemblage peut tre un ordinateur, un e e e e magntoscope . . . e Un circuit conu spcialement pour une application sappelle un A.S.I.C. c e (Application Specic Integrated Circuit). Le terme soppose aux circuits standard (mmoires, processeurs, . . .). La fabrication est dans ses grandes lignes la e mme. e Les galettes de silicium de quelques dcim`tres de diam`tre subissent une e e e suite de traitements physico-chimiques destins ` fabriquer les transistors. Les e a direntes tapes sont simultanes : toutes les grilles des cent (et quelques) e e e millions de transistors de la galette sont ralises en mme temps par un mme e e e e dpt de silicium polycristallin. Dirents dpts font appel au procd de e o e e o e e photogravure que nous allons prsenter. e

5.1

Le procd de photogravure e e

Le procd de photogravure (Cf. Figure 7.16) permet dobtenir un motif e e complexe dans un matriau A ` la surface dun matriau B. e a e Pour cela on dpose du A partout ` la surface du B. Puis on dpose par e a e dessus une couche dun produit photo-sensible. On pose au-dessus un masque partiellement opaque, partiellement transparent. Les zones opaques sont appeles les noirs, les autres les blancs. Il y a des milliards de motifs de chaque e couleur, notre gure nen comporte quun ! On illumine le tout par au-dessus (tape 1 de la gure 7.16). Le produit photo-sensible reoit de la lumi`re en e c e face des blancs du masque et nen reoit pas en face des noirs du masque. Un c produit chimique permet dattaquer le produit photo-sensible l` o` il a reu a u c de la lumi`re et seulement l` (tape 2 de la gure 7.16). e a e

http://fribok.blogspot.com/

5. 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 dcouvert e

1 : ashage Fig. 7.16 Trois tapes du procd de photogravure e e e

Apr`s cette attaque, le matriau A est apparent en face des blancs du e e masque. Puis un deuxi`me produit chimique attaque le matriau A l` o` il est e e a u en surface (tape 3 de la gure 7.16). Le matriau B est alors sur le dessus e e en face des blancs du masque. Un troisi`me produit chimique attaque le proe duit photo-sensible l` o` il na pas t illumin. On obtient ainsi une forme en a u ee e matriau A ` la surface dun substrat constitu de matriau B. Cette forme e a e e est celle qui tait dessine sur le masque. La mise en oeuvre eective de ce proe e cessus de fabrication demande une haute technologie pour obtenir des dessins dont les tailles sont de lordre du dizi`me de micron. e A partir du schma de connexions entre les transistors lobtention des dese sins des masques suppose de manipuler quelques centaines de millions de rectangles. Un outil de Conception Assiste par Ordinateur est videmment ine e dispensable. Les vieillards se souviennent avec motion du bon temps o` les e u circuits navaient que quelques centaines de transistors et o` les crayons de couu leurs et le papier quadrill tenaient lieu dassistance. Les schmas physiques e e taient obtenus en dcoupant de lautocollant noir, aux ciseaux, et en le collant e e sur du papier blanc. Un ngatif dune photo de la feuille de papier tenait lieu e de masque.

5.2

Un procd de fabrication : CMOS ` grille silicium e e a polycristallin et ` deux niveaux de mtal a e

La fabrication de circuits logiques organiss avec des transistors N et e des transistors P ncessite de nombreuses oprations technologiques. Nous e e les envisageons ici ` travers les dessins des masques impliqus. Les masques a e comportent les dessins des motifs ncessaires ` la ralisation simultane des e a e e quelques millions de transistors sur la galette de silicium dune vingtaine de centim`tres de diam`tre. Nous ne dessinons ici quun inverseur. e e La gure 7.17 montre par 6 dessins A, B, C, D, E et F les masques utiliss. e Nos dessins sont simplis par rapport ` la ralit. Sur les vues en coupe les e a e e vraies proportions ne sont pas respectes. La ligne de surface du substrat qui e appara sur les coupes nest pas si rectiligne. Il y a en ralit environ 15 t e e

http://fribok.blogspot.com/

158

De llectron aux dispositifs logiques e

y
F F D D

Caisson P Caisson P

Caisson N
 

Coupe xy A

B
@ 9 B A @ 9 @ 9

C e
8 8 H H H @ @ @ 9 @ 9 @

s a
            " ! " ! " ! " ! " !

s V a Coupe xy
6 6 6 6 6 6 6 6 6 6 6 6 6 6

V
6 6 6 6 6 6

D Lgende des masques e DifP


(

E Schma lectrique e e

F e entre e V Vref s sortie

DifN Sipol
2 0 2

a masse Alu2

Alu1

C1 C2 Contacts
2 2

Fig. 7.17 Les masques intervenant dans la technologie CMOS. DifP est le masque de la zone diuse P, DifN de la zone diuse N, Sipol est le masque du silicium e e polycristallin, Alu1 et Alu2 sont les deux niveaux daluminium, C1 et C2 sont les deux niveaux de contacts sous laluminium. Les masques sont cumuls e dans les direntes parties de la gure. La vue en coupe apr`s lopration est e e e selon la ligne xy ou la ligne xy. Dans les vues en coupe loxyde nest pas color. e

http://fribok.blogspot.com/

@ 9

@ 9

@ 9

@ 9

@ 9

8 7

Caisson P Caisson N Coupe xy

Dessin des masques y

e
D H H H G   

P P P 0 2 0

P 2

P P P #

5. Fabrication des dispositifs

159

masques. Dcrivons les oprations principales : e e 1. La premi`re consiste ` doper, faiblement, un caisson P pour y raliser des e a e transistors N. Le caisson P existe sous toute la zone des transistors N. Il y a de mme un caisson N pour les transistors P. Cette tape utilise e e un premier masque. Puis on dlimite ` laide dun deuxi`me masque une e a e zone active comprenant lensemble des zones qui seront diuses et les e transistors. Des points de contacts entre lalimentation, ou la masse, et le subtrat, ou le caisson, sont aussi dans les zones actives. Ce sont les points de polarisation. A lextrieur de la zone active se trouve un oxyde e pais de silicium (ces deux masques caisson et zone active sont partie A). e 2. Puis on dlimite la zone de silicium polycristallin, qui est au-dessus dune e couche doxyde mince. Cette zone est lentre de linverseur. (partie B, e o` le caisson nappara plus). u t 3. Puis deux masques marquent les zones diuses N ou P. Cette diusion e ne passe pas ` travers loxyde. Elle ne se fait pas, donc ni sous loxyde a mince, laissant la place aux canaux des transistors, ni sous loxyde pais e hors de la zone active (partie C). 4. Une nouvelle couche doxyde pais est ajoute, dans laquelle on dlimite e e e des trous de contacts selon un nouveau masque (partie D). 5. Des connexions daluminium sont graves entre direntes parties des e e dirents transistors. Lalimentation, ` droite sur la gure, relie le point e a de polarisation du substrat N, et un ct des transistors P. La masse, ` oe a gauche sur la gure, relie le point de polarisation du caisson P et un ct oe des transistors N. Une autre connexion daluminium, au centre, relie le transistor N, le transistor P et la sortie de linverseur. Des connexions daluminium peuvent aussi servir ` relier des sorties dinverseurs ou de a portes ` des entres dautres portes (partie E). a e 6. Si ncessaire, on introduit une nouvelle couche doxyde pais, perce de e e e contacts, et une nouvelle couche daluminium (partie F). On peut trouver ainsi 3 ou 4 niveaux daluminium. Puis lensemble du circuit est recouvert dun oxyde de protection.

5.3

Procds simplis e e e

La prsentation qui a t faite au paragraphe prcdent montre que la e ee e e fonction du circuit provient de son dessin. La forme des connexions de grille et des zones dopes donne les transistors. La forme des connexions daluminium e et lemplacement des contacts donnent leurs liaisons. La gure 7.18 indique ce que peut tre le masque du niveau daluminium dun petit morceau de circuit e (une centaine de transistors). La forme des connexions est, en fait, la fonction. La conception, incluant notamment le dessin, et la fabrication des circuits intgrs digitaux sont des oprations complexes et onreuses. On essaie dans e e e e

http://fribok.blogspot.com/

160

De llectron aux dispositifs logiques e

Fig. 7.18 Masque du niveau daluminium dun petit morceau de circuit (une centaine de transistors). On remarque une rptitivit du motif. e e e

certains cas de les simplier. Les diverses simplications peuvent porter soit sur la fabrication proprement dite, soit sur le dessin du circuit. La simplication vise ` apporter un gain soit dans la surface du circuit, soit dans sa vitesse a de fonctionnement, soit dans la dicult de conception, soit dans sa facilit ` e ea raliser plusieurs fonctions. La surface est souvent un param`tre critique : plus e e le circuit est grand, plus il risque dy avoir des dfauts de fabrication, donc e plus le rendement de fabrication est faible. Des mthodes visant ` simplier la conception ou la fabrication sont exe a poses ci-apr`s. e e 5.3.1 Simplication par la fabrication

Une des simplications possibles est de ne pas fabriquer totalement le circuit pour une application donne. En sortant de ltape de fabrication, le circuit e e na pas encore de fonction. Cette fonction sera donne par une tape de persone e nalisation nale du circuit. Cette personnalisation est plus ou moins dnitive. e Elle reoit parfois le nom, plus ou moins impropre, de programmation. c Il y a quatre cas : 1. Aucune personnalisation, le circuit sort de la fabrication bon ` lemploi a (mmoires vives, processeurs, . . .). e 2. Personnalisation par modication dnitive : une tape de modicae e tion est applique au circuit. Certaines connexions sont tablies, ou e e supprimes, pendant cette modication. Cette programmation se fait e dnitivement, par exemple en faisant claquer des fusibles (Programe mable Logic Array, Programmable Logic Device). Cette programmation est en gnral faite par le client, chez lui. Une autre faon de faire assez e e c semblable est de raliser la personnalisation du circuit par un ensemble e

http://fribok.blogspot.com/

5. Fabrication des dispositifs

161

de contacts et de connexions daluminium raliss au moyen de masques e e spciques de lapplication alors que les autres tapes ont t les mmes e e ee e pour des circuits de fonctionnalit dirente (Gate arrays, sea of gates). e e Le fabricant ralise ainsi des ensembles de portes, non interconnectes, e e identiques pour dirents clients. Chaque client donne au fabricant un e schma qui lui est propre pour le masque des contacts et celui de lalue minium. Cette programmation, de mise en oeuvre lourde puisquil faut raliser les derni`res tapes, est faite chez le fabricant. e e e 3. Personnalisation dicilement modiable : certaines connexions sont tablies, ou certaines informations sont stockes en mmoire, mais leur e e e eaage et remplacement est dicile (passage sous ultra violets, eaage c c sous haute tension, etc.). 4. Personnalisation et eacement simple : une conguration est introduite dans le circuit ` la faon dont un programme est introduit en mmoire. a c e La modication est tr`s simple (Field Programmable Gate Array). Les e valeurs introduites pilotent des transistors utiliss en commutateur et e tablissent ou non des connexions. Ces circuits contiennent parfois aussi e des petites mmoires vives de 16 mots de 1 bit permettant de tabuler e certaines fonctions boolennes de 4 variables. Ces deux derni`res persone e nalisations sont faites chez le client. La forme de personnalisation chez le client est toujours plus ou moins la mme : Le circuit est mis sur une bo spciale, branche comme un simple e te e e priphrique dun ordinateur individuel. Un logiciel, en gnral spcique du e e e e e type de circuit, tablit ` partir dune description textuelle ou graphique de la e a fonction du circuit, la conguration quil faut introduire dans le circuit. La conguration est introduite dans le circuit sous conduite du logiciel. Dans le cas des FPGA, la conguration est stocke dans le circuit lui-mme en mmoire e e e vive. 5.3.2 Cas particulier des mmoires mortes e

On trouve sous le nom de mmoire morte plusieurs cas de gures : e 1. Mmoires o` linformation stocke a t introduite par les masques de e u e ee ralisation du circuit. La mmoire se comporte comme une tabulation e e matrielle de la fonction. e 2. Mmoires o` linformation est charge apr`s fabrication, de faon ine u e e c altrable (claquage de fusibles, par exemple). e 3. des mmoires ash, vives, mais o` le maintien dinformation est assur e u e mme en cas de coupure de lalimentation lectrique. e e 4. Mmoire morte eaable plus ou moins souvent, plus ou moins come c modment. Il existe des mmoires o` lon peut changer le contenu seulee e u ment un million de fois. Cest beaucoup pour une information dnitive, e mais cest trop peu pour une mmoire vive. e

http://fribok.blogspot.com/

162

De llectron aux dispositifs logiques e

5. Fausses mmoires mortes constitues en fait dun bo e e tier intgrant une e mmoire vive ` faible consommation et une micropile. e a 5.3.3 Simplication par le dessin

On cherche dans de telles mthodes ` avoir un dessin du circuit prsentant e a e une grande rgularit. e e Les simplications du dessin des circuits consistent ` reprendre des para ties communes, ` rutiliser certains blocs de dessins. Une faon simple est de a e c dessiner ` lidentique des tranches de circuits. Dans un microprocesseur 32 a bits, il semble naturel que la partie physique qui traite le bit numro 5 soit e presque identique ` celle qui traite le bit 23. On trouve rguli`rement dans la a e e presse des photos de processeurs. Sur les photos dassez grande taille, on peut reconna de telles tranches. On a alors envie de dessiner tr`s soigneusement tre e la tranche pour quelle soit le plus petite possible et le plus embo table possible sur elle-mme. Dessiner une tranche de microprocesseur est un probl`me qui e e ressemble un peu ` dessiner un motif de papier peint avec raccord ! a Une autre approche est de remarquer que les portes logiques constituant le circuit sont toutes plus ou moins identiques. On a alors comme grain de rptitivit non plus la tranche correspondant ` une fonction, mais la simple e e e a porte logique. Toutes les portes de mme type sont alors dessines de faon e e c identique. Il y a un patron pour les NAND ` 2 entres, un pour les NAND a e a ` 3 entres, . . .Toute fonction complexe utilisant une NAND2 utilise le mme e e dessin de NAND2. Seules les connexions entre ces portes sont topologiquement direntes dune fonction ` lautre. Cest le cas, par exemple, gure 7.18 o` la e a u mme bascule est dessine 4 fois. e e

6.

Exercices

La logique voudrait quen permutant les positions des transistors N et P dans linverseur et la porte NOR, on obtienne respectivement la fonction identique (S=E) et une porte OR. Les transistors ` canal N auront alors leur a drain connect ` lalimentation et leur source connecte ` la sortie. En pratique ea e a le fonctionnement de ce type de porte nest pas satisfaisant. Pourquoi ? Il faut raisonner de faon plus approfondie que 1 ou 0 logique et considrer c e les tensions V alimentation - V gsth . Considrons le cas o` lentre et la sortie e u e de la porte sont au 1 logique. La tension de sortie devrait tre gale ` la tension e e a dalimentation. Sachant quune dirence de potentiel minimale grille-source e V gsth est indispensable ` la formation du canal et la tension de grille atteint a au mieux la tension dalimentation, la tension de sortie ne pourra dpasser e V alimentation - V gsth . Le mme raisonnement appliqu aux transistors ` e e a canal P et au 0 logique montre que la sortie ne peut descendre en dessous de V gsth . En rsum, les transistors MOS ` canal N (respectivement P) ne e e a

http://fribok.blogspot.com/

6. Exercices

163

transmettent bien que les 0 (respectivement 1) logiques. Le cumul des pnalits e e V gsth rend ce montage inutilisable pour la construction de circuits ` plusieurs a tages de portes. e Pour raliser une porte OR ou AND, on utilisera une porte NOR ou NAND e suivie dun inverseur.

http://fribok.blogspot.com/

Chapitre 8 Circuits combinatoires


Un circuit combinatoire est un dispositif matriel dont le comportee ment peut tre dcrit par une fonction boolenne gnrale, et toute fonction e e e e e boolenne peut tre ralise par un circuit combinatoire. Un circuit combinae e e e toire peut raliser tout traitement si lentre et la sortie sont des informations e e codes par des vecteurs de boolens. Un circuit combinatoire convertit une e e information dun code dans un autre, ralise une fonction arithmtique sur des e e nombres cods en binaire, etc. e Les entres sont une nappe de ls. Une entre, ` un instant donn, est ` un e e a e a certain niveau logique Vrai ou Faux, cest-`-dire ` un niveau lectrique. Ce nia a e veau est susceptible de changer au cours du temps. Si une entre est constante, e la faire intervenir dans le calcul dune fonction nest pas une ncessit. Les sore e ties sont une nappe de ls. Elles sont aussi susceptibles dvoluer au cours du e temps. Il nest pas ncessaire de raliser un circuit combinatoire pour calculer e e une sortie constante. Puisque nous nous limitons dans ce livre aux dispositifs lectroniques, les e circuits combinatoires sont aliments en courant lectrique mais lalimentation e e et la masse ne sont pas considres comme des entres des circuits combinaee e toires. Un circuit combinatoire est constitu dun ensemble de portes logiques. Cere taines ont t prsentes au chapitre 7. Les entres du circuit sont connectes ee e e e e a ` des entres de portes. Les sorties du circuit combinatoire proviennent de e sorties de portes. A lintrieur du circuit il peut y avoir plusieurs circuits come binatoires ou portes successifs, les sorties des uns tant relies aux entres des e e e autres. Un circuit combinatoire est un tre physique. Il occupe une certaine surface, e consomme une certaine puissance lectrique, puissance qui est dissipe sous e e forme thermique, il ntablit les valeurs correctes de ses sorties quun certain e dlai apr`s le changement de ses entres. Les concepteurs de circuits cherchent e e e gnralement ` obtenir un circuit ayant la plus petite surface possible, donnant e e a les dlais de rponse les plus brefs possibles et consommant/dissipant le moins e e dnergie possible. Ces trois crit`res participent au cot dun circuit. Un autre e e u

http://fribok.blogspot.com/

166

Circuits combinatoires

e0 e1

Alimentation F F

Masse s0 s1 s2 F : 2 entres , 1 sortie G : 3 entres, 2 sorties

e2 e3 entres

G s3 sorties

Circuit global : 4 entres, 4 sorties

Fig. 8.1 Un exemple de circuit combinatoire. Les carrs F et G sont des portes ou des e circuits combinatoires.

crit`re de cot est la rgularit du circuit, cest-`-dire, indirectement, le temps e u e e a ncessaire a sa conception et ` son dessin. Plus un circuit comporte de fois un e ` a bloc rpt, moins il est dicile de le concevoir. Voir par exemple la gure 7.18 e ee du chapitre 7. Dans ce chapitre nous donnons dabord (paragraphe 1.) quelques lments ee relatifs au comportement temporel des circuits combinatoires avant de dnir prcisment ces circuits. Cela permet de mieux situer la dirence e e e e entre les circuits combinatoires et une autre classe de circuits qui fait lobjet du chapitre 10. Nous tudions ensuite (paragraphe 2.) en quoi e consiste la conception de circuits combinatoires ` partir de blocs phya siques de base. Dans le paragraphe 3. nous insistons sur la ressemblance entre cette conception et la conception des algorithmes. Le paragraphe 4. prsente une tude de cas. Certains des exemples retenus dans ce chapitre e e sont utiles dans plusieurs chapitres ultrieurs du livre. e

1.
1.1

Notion de circuit combinatoire


Comportement temporel dun circuit combinatoire

Lorigine du dlai de rponse dune porte (charge ou dcharge de capacit) e e e e a t prsent au chapitre 7. Il est naturellement strictement positif. A lheure ee e e o` nous crivons ce livre, il est couramment de lordre dun dizi`me de nanou e e 10 seconde, soit 10 s. Ce dlai nest pas constant, nest pas une proprit de la e ee porte elle-mme. Il varie avec la valeur de la capacit ` charger, la temprature e ea e de fonctionnement, etc. Les constructeurs donnent les valeurs maximales et minimales du dlai de rponse des composants. Le dlai de rponse dun circuit e e e e combinatoire provient de laccumulation des dlais des direntes portes et ine e terconnexions entre les entres et les sorties. Par approximation, on consid`re e e souvent que les dlais de portes cascades sajoutent. Des valeurs transitoires e e peuvent appara tre. Mais au bout dun certain temps les sorties sont stabi-

http://fribok.blogspot.com/

1. Notion de circuit combinatoire

167

e0 e1 s0 observ s0 idal (sans dlais) s0 (avec dlais)

1 logique 0 logique

5 Volts 0 Volt

Indtermin e e 1 logique 0 logique

Fig. 8.2 Comportement possible du circuit combinatoire donn en exemple e

lises. Dans un circuit combinatoire, une sortie ne peut se mettre ` osciller e a indniment. Un circuit lectronique fabricant un tel signal oscillant est tr`s e e e utile mais nest pas un circuit combinatoire. Par exemple le circuit prsent e e gure 8.1 peut donner le comportement dcrit par la gure 8.2. Nous y distine guons des entres idales (par dnition boolennes), des sorties telles quelles e e e e pourraient tre observes (entre 0 et 5 Volts) et des sorties idales (boolennes e e e e aussi). On trouve souvent une reprsentation avec des sorties indtermines e e e pendant le dlai de rponse. Nous la faisons gurer aussi. Cest videmment la e e e situation la plus raliste, mais elle nest pas boolenne. e e

1.2
1.2.1

Caractrisation des circuits combinatoires e


Caractrisation par le comportement e

Un circuit combinatoire ralise une fonction. Cela veut dire quune certaine e conguration des entres donne toujours la mme conguration des sorties. e e Examinons ce que signie ce toujours. Si plusieurs congurations dentres e sont appliques successivement aux entres du circuit combinatoire, on observe, e e apr`s stabilisation, certaines congurations de sorties. e Un circuit est combinatoire si : Pour tout couple (C1,C2) de congurations dentres, le circuit recevant e la squence temporelle C1, C2, C1 en entre donne, apr`s ventuelle e e e e stabilisation des valeurs, une squence de sortie S1, S2, S1. e La conguration C1 donne toujours S1. A linverse, si pour un circuit on peut trouver un couple de congurations dentres (C3, C4) tel que la squence temporelle dentre C3, C4, C3 donne e e e une squence de sortie S3, S4, S5, avec S3 = S5, le circuit nest pas combinae toire.

http://fribok.blogspot.com/

168

Circuits combinatoires

Intuitivement le circuit non combinatoire se souvient quil est pass par la e conguration S4, cela change ses rsultats ultrieurs. Le circuit combinatoire e e ne se souvient de rien. Les circuits combinatoires nont aucune fonction de mmorisation. On verra des circuits ayant une mmorisation dans des chapitres e e ultrieurs. e Il convient de prciser que si les congurations dentre C1 et C2 di`rent e e e de plusieurs bits, on suppose les changements de valeurs simultans (comme e les entres e1 e0 de la gure 8.2). e Le circuit combinatoire ralise une fonction au sens mathmatique du e e terme : chaque appel avec des valeurs identiques des param`tres dlivre la e e mme valeur. A linverse, la fonction random des calculettes nest pas une e fonction puisque dirents appels ne donnent pas le mme rsultat. e e e 1.2.2 Caractrisation par la structure e

Considrons un assemblage de portes interconnectes comme un graphe. e e Les portes sont les noeuds, les connexions les arcs. Une orientation vidente e des arcs est fournie par le sens sortie dune porte vers lentre dune autre. Si e le graphe ainsi obtenu est sans cycle, le circuit est combinatoire.
Remarque : Attention, la rciproque est fausse ! Lexercice E8.17 donne e un circuit combinatoire comportant un cycle. Il est hors du sujet de ce livre de caractriser lensemble des circuits combinatoires avec un cycle. e

1.3

Le principe de ralisation e

Les objets de base utiliss dans les circuits combinatoires sont les portes e logiques. Une technologie de ralisation tant choisie, il nest pas ncessaire de e e e garder la reprsentation en transistors des portes NOR ou NAND comme dans e le chapitre 7. Lusage a consacr des symboles pour les portes. Les connexions e entre ces portes sont reprsentes par des traits. Ces symboles sont reprsents e e e e gure 8.3. On trouve souvent des portes NAND et NOR sans le petit rond utilises e pour reprsenter des fonctions ET et OU. e 1.3.1 Les circuits existants : inverseurs, portes NAND et NOR

Les inverseurs, les NAND et les NOR sont les portes lmentaires. Linveree seur est un NAND (ou un NOR) ` une seule entre. Pour des raisons lectriques a e e (trop grande rsistance obtenue en mettant beaucoup de transistors en srie, e e par exemple) le nombre dentres des portes est parfois limit. Ainsi pour la e e ralisation de carte imprime ` base de bo e e a tiers de la famille technologique TTL (Transistor Transistor Logic) on peut disposer de portes NAND ` 2, 3, 4, a 8 ou 13 entres. Pour raliser une fonction NAND portant sur 6 variables, tout e e va bien puisque NAND(a, b, c, d, e, f) = NAND(a, b, c, d, e, f, f, f) et la porte

http://fribok.blogspot.com/

1. Notion de circuit combinatoire

169

s e

e1

e1

e1

s e 4

a b c d 5

a s b c 6 s

e3 1 2

e2 3

e2

Fig. 8.3 Reprsentation conventionnelle des portes logiques : e porte 1 : linverseur : s = not(e) ; porte 2 : le NAND : s = nand(e1,e2,e3) ; porte 3 : le NOR : s = nor(e1,e2) ; porte 4 : le XOR : s = xor(e1,e2) ; porte 5 : le ANDNOR : s = nor( and(a,b), and(c,d,e)) ; porte 6 : le ORNAND : s = nand ( or(a,b), c).

NAND ` 8 entres fait laaire. Mais pour une fonction ` plus de 13 entres a e a e cest moins simple. Lexercice E8.15 donne une ide de solution ` ce probl`me. Dans dautres e a e technologies les portes NOR ne peuvent avoir que 2 ou 3 entres et les portes e NAND que 2, 3 ou 4. Dans certains cas, plusieurs technologies peuvent intervenir dans un mme quipement matriel comportant plusieurs puces. Une puce e e e peut ne contenir que des portes ` au plus 4 entres alors que la puce voisine a a e des portes ` 20 ou 2000 entres. a e 1.3.2 Assemblage systmatique e

Toute fonction boolenne peut sexprimer sous forme de somme de proe duits de variables normales ou complmentes. Cette expression en somme de e e produits peut se traduire de faon systmatique sous forme de combinaison de c e deux tages de NAND de variables normales ou complmentes. On rappelle e e e que, par application directe des r`gles de De Morgan, si a, b, c, d, e, f sont des e variables boolennes : e a + b.c + d.e.f = a.(b.c).(d.e.f ) ou, en utilisant une notation prxe pour le NAND, e e a + b.c + d.e.f = nand(not(a), nand(b, c), nand(e, f, g)) De mme, pour une expression en produit de sommes, e a.(b + c).(d + e + f ) = a + (b + c) + (d + e + f ) ou, en utilisant une notation prxe pour le NOR, e e a.(b + c).(d + e + f ) = nor(not(a), nor(b, c), nor(e, f, g)) On ralise un circuit dont le comportement est dcrit par une fonction e e boolenne par un tel assemblage de portes NAND ou NOR et dinverseurs e (Cf. Figure 8.4). Cela donne des schmas logiques de circuits combinatoires e dans lesquels il ny a que deux ou trois tages de portes entre lentre et la e e sortie : un tage dinverseurs pour certaines entres, puis deux tages, soit de e e e

http://fribok.blogspot.com/

170

Circuits combinatoires

Fig. 8.4 Exemple de ralisation de fonctions ` base de portes NAND. e a g = a.b.c.d + b.c.d f = b.c.d e = a.b.c.d + c.d

NAND soit de NOR. Ces circuits sont optimaux en terme de nombre dtages. e Exemple E8.1 : Ralisation en NAND de la fonction majorit e e Reprenons la table de vrit de laddition de deux naturels (Cf. Parae e graphe 2.2.2, chapitre 3) en nous limitant ` la fonction majorit : a e a b 0 0 0 0 0 0 1 1 re 0 1 0 1 rs maj(a, b, re ) 0 0 0 1 a b 1 1 1 1 0 0 1 1 re 0 1 0 1 rs maj(a, b, re ) 0 1 1 1

On obtient lexpression optimise : e

ou

rs = a.b + a.re + b.re rs = nand(nand(a, b), (nand(a, re ), nand(b, re ))

Le schma en portes NAND du circuit combinatoire ralisant la fonction e e majorit est donn gure 8.5. e e

http://fribok.blogspot.com/

1. Notion de circuit combinatoire

171

a b re

a b re

Fig. 8.5 Ralisation de la fonction majorit en portes NAND. Sur le schma, deux e e e conventions usuelles sont prsentes : avec lune, les points noirs reprsentent e e e des connexions entre un l horizontal et un l vertical ; avec lautre, un trou dans le l vertical permet de mettre en vidence la non-connexion. e

1.4

Conception de circuits combinatoires

Etant donne une fonction boolenne gnrale, concevoir un circuit come e e e binatoire consiste ` assembler des lments logiques de base, choisis parmi a ee une liste donne, comme les portes par exemple, pour que le comportement e global de lensemble soit dcrit par la fonction boolenne voulue. De plus cet e e assemblage doit tre dun cot acceptable, voire minimal. Cette conception de e u circuits suppose deux niveaux de travail. Les noms de ces deux niveaux sont uctuants mais nous choisissons ceux dalgorithmique cble et de synth`se loa e e gique. On retrouvera cette distinction dans le chapitre 10. La conception peut se faire soit manuellement (rarement), soit, principalement, en utilisant des outils de Conception Assiste par Ordinateur. Il existe donc des outils de CAO e de synth`se logique 1 ou dalgorithmique cble. Il arrive aussi que les deux e a e outils soient fusionns en un seul. e 1.4.1 Algorithmique cble a e

Il arrive que lexpression de la fonction boolenne fasse appel ` des obe a jets extra-boolens. En particulier la donne dune fonction arithmtique et e e e du codage binaire des nombres manipuls constituent une description dune e fonction boolenne. Par exemple un multiplieur combinatoire de 2 nombres e entiers cods sur 64 bits en complment ` 2 est une description dune fonction e e a boolenne. e La conception conduit ` une expression de la fonction globale comme une a composition de sous-fonctions dcrites en termes boolens et/ou arithmtiques. e e e Cette dcomposition nest jamais unique et les aspects de cot doivent tre pris e u e en considration pour choisir la bonne solution. La possibilit de r-utiliser des e e e rsultats intermdiaires doit tre retenue pour conomiser des lments. Le e e e e ee
Pour la beaut de son nom signalons un outil qui construit les portes ` partir de la e a description de la fonction boolenne : BuildGates ! e
1

http://fribok.blogspot.com/

172

Circuits combinatoires

crit`re de rgularit peut intervenir aussi comme crit`re de comparaison entre e e e e des solutions. Cette recherche dun assemblage dlments donnant un comportement atee tendu est tr`s proche de lalgorithmique o` lon cherche ` assembler les inse u a tructions pour obtenir un certain comportement. Cet ensemble de techniques, que nous dtaillons dans le paragraphe 3. sous e le nom dalgorithmique cble, est parfois nomme conception logique. Elle a e e conduit ` une description en terme de composition de fonctions boolennes a e de la fonction globale. Le terme algorithmique cble peut sembler trange. Il a e e indique simplement que la composition de fonctions exprimes dans les algoe rithmes de ces traitements est un banal cblage. Utiliser les rsultats dune a e fonction comme entres dune autre fonction, cest connecter les sorties du e sous-circuit ralisant lune aux entres du sous-circuit ralisant lautre. e e e 1.4.2 Synth`se logique e

On parle de synth`se logique pour dcrire lassemblage de portes phye e siques choisies parmi une liste donne, ` partir de la description de la fonction e a boolenne. e Il ne faut pas perdre de vue que la notion dlments logiques de base nest ee pas absolue. Elle est relative ` une liste donne, une biblioth`que de circuits. De a e e la mme faon quen programmation, dirents langages ou syst`mes peuvent e c e e orir des primitives plus ou loins avances. e Un circuit combinatoire ralisant les fonctions majorit et du chapitre e e 3 est un additionneur 1 bit. Il comporte en gnral deux portes XOR comme e e celles de lexercice E8.14. La fonction majorit est connue aussi (exemple E8.1), e mais rien ninterdit de considrer un additionneur 1 bit comme bloc de base. e Il est dailleurs inclus dans beaucoup de biblioth`ques. Dautres biblioth`ques e e proposent un circuit de calcul rapide des retenues. Lutilisation des outils de CAO de synth`se logique suppose la description e de la fonction boolenne et celle de lensemble dlments de base selon un lane ee gage formel traitable par un programme. La conception manuelle repose plutt o sur lutilisation dun schma et dun catalogue des composants disponibles. e Entre la reprsentation de la fonction boolenne et celle de la struce e ture de connexions entre lments qui la ralise, il peut exister plusieurs ee e reprsentations intermdiaires. Il faut que lquivalence soit prserve dans e e e e e ces direntes formes. Des techniques de synth`se logique peuvent sappliquer e e plutt sur la forme algbrique (remplacement dune formule boolenne par o e e une autre formule boolenne) ou plutt au rsultat physique (remplacement e o e dun lment de circuit par un autre, plus petit ou moins consommateur, par ee exemple). Dans la suite nous prsentons dabord les cas simples, o` la distance est e u faible entre lexpression algbrique et la ralisation. Pour cela nous prsentons e e e des exemples dlments logiques qui peuvent tre considrs comme de base ee e ee

http://fribok.blogspot.com/

2. Assemblage de blocs de base...

173

et nous montrons les expressions algbriques qui y collent le mieux. Il sagit e bien de synth`se logique. e Nous tudions ensuite des circuits moins simples o` la distance peut tre e u e grande entre lexpression de la fonction et la structure de la ralisation. Il sagit e bien alors dune vritable algorithmique cble. e a e Nous privilgions les solutions systmatiques mais nous montrerons parfois e e quelques astuces.

2.
2.1
2.1.1

Assemblage de blocs de base : synth`se logique e


Dcodeurs, encodeurs e
Les circuits existants

Un circuit fabriquant en sortie les 2N monmes canoniques correspondant o a ` ses N entres est appel un dcodeur. On en rencontre en particulier dans e e e les mmoires o`, ` partir des N bits dadresse, il faut mettre un des 2N e u a e signaux de slection dun mot. Ainsi pour le dcodeur, ` partir dun nombre e e a cod en binaire, on obtient un seul 1 parmi une nappe de ls. Cest le l dont e le numro est celui donn en entre. Gnralement il y a un AND entre une e e e e e entre supplmentaire de validation val et ce bit de sortie. e e La fonction dun encodeur est exactement symtrique. Si parmi une nappe e de ls on est certain quun seul est ` 1 ` un instant donn, lencodeur donne a a e le numro de ce l. Si la garantie quun seul l dentre est ` 1 ne peut tre e e a e tablie, le circuit est dirent. Il dlivre alors le numro du premier l ` 1. La e e e e a notion de premier suppose un ordre sur les ls ; cest soit lordre des numros e croissants, comme dans notre exemple, soit dcroissants. e Les tables de vrit de la gure 8.6 caractrisent le dcodeur, lencodeur e e e e avec garantie quune seule entre est ` 1 (encodeur1), lencodeur en gnral, e a e e sans cette garantie (encodeur2). Dans ce dernier on introduit une sortie a, vraie si aucune entre nest ` 1. e a On en dduit aisment les expressions logiques et les schmas correspone e e dants. Par exemple, dans le dcodeur : s0 = e1.e0. val, dans lencodeur1 : e s1 = e3 + e2.

2.1.2

Synth`se systmatique e e

Lexemple E8.8, paragraphe 3.3, montre lutilisation de dcodeurs. On en e retrouvera dans le livre comme dcodeurs dadresse (Cf. Chapitres 9 et 15). e

http://fribok.blogspot.com/

174

Circuits combinatoires

Dcodeur e Entres e Sorties val e1 e0 s3 s2 s1 s0 100 0001 101 0010 110 0100 111 1000 0xx 0000

Encodeur1 Entres e Sorties e3 e2 e1 e0 s1 s0 0001 00 0010 01 0100 10 1000 11

Encodeur2 Entres e Sorties e3 e2 e1 e0 s1 s0 a 0000 1 0001 000 001x 010 0 1 xx 100 1 xxx 110

Fig. 8.6 Tables de vrit des encodeurs et dcodeurs. Les x et les indiquent une e e e valeur non pertinente respectivement en entre ou en sortie. e

2.2
2.2.1

Programmable Logic Array


Les circuits existants

On trouve dans le commerce des circuits nomms PLA ou PLD (Programe mable Logic Arrays ou Programmable Logic Devices). Lutilisateur peut facilement personnaliser ces circuits pour y raliser des produits ou des sommes e de produits. Dans ces circuits les nombres dentres, sorties et, sil y a lieu, e monmes, sont xs. Par exemple un PLA donn a 12 entres, 20 monmes et o e e e o 8 sorties. Lutilisateur claque des fusibles pour xer : 1) quelle entre (normale ou e complmente) fait partie de quel monme ; cest la partie AND du PLA. 2) quel e e o monme fait partie de quelle sortie ; cest la partie OR du PLA. o Le claquage (la programmation) se fait dans un petit dispositif lectronique, connectable ` un ordinateur personnel, et facilement commane a dable par un logiciel qui a reu les quations logiques en entre. c e e Des organisations proches des PLA peuvent tre ralises ` base de portes e e e a dans les circuits non pr-existants. e 2.2.2 Synth`se systmatique e e

Lutilisateur cherche souvent ` minimiser le nombre de monmes de la a o fonction ou des fonctions ` raliser. Soit parce que le nombre total de monmes a e o est contraint par la technologie, soit pour conomiser de la surface dans le e circuit. Nous allons tudier un exemple de fonction ralise sur un tel rseau e e e e programmable PLA permettant de faire des sommes de produits. Dans un cas on a procd ` une minimisation de chacune des fonctions, e e a indpendamment des autres, par des tableaux de Karnaugh. Dans lautre cas, e on a cherch une minimisation globale grce ` un outil de CAO. e a a Exemple E8.2 : Contrle dun acheur 7 segments o Lexemple retenu est tr`s classique. Nous lavons dj` rencontr dans le chae ea e pitre 2. Un circuit combinatoire reoit 4 entres x3 , x2 , x1 , x0 codant un naturel c e

http://fribok.blogspot.com/

2. Assemblage de blocs de base...

175

x3 x2 x1 x0

a b c d e f g

a f e g d b c

Fig. 8.7 Achage des nombres de 0 ` 15 sur 7 segments a


x3 x2 x1 x0

x3 x2 x1 x0

a b c d e f g

a b c d e f g Fig. 8.8 Description symbolique des PLA ralisant le codage pour un acheur 7 sege ments. A gauche minimisation de chacune des fonctions, indpendamment les e unes des autres, ` droite, minimisation globale. a

http://fribok.blogspot.com/

176

Circuits combinatoires

entre 0 et 15. Il dlivre 7 sorties activant 7 segments dun acheur. Les 7 sege ments se nomment a, b, c, d, e, f et g. Ils sont disposs comme sur la gure 8.7. e Les chires hexadcimaux sont achs comme indiqu. La fonction du circuit e e e est de transcoder entre le code binaire des nombres et le code en segments allums et segments teints. e e On cherche ` exprimer chacune des 7 fonctions boolennes a, . . ., g en a e fonction de x3 , x2 , x1 , x0 . Par exemple, a = x3 .x1 + x2 .x1 + x2 .x0 + x3 .x0 + x3 .x2 .x0 + x3 .x2 .x1 Pour la solution globale on obtient 28 monmes dirents. La partie gauche de o e la gure 8.8 donne les direntes fonctions. Chaque ligne gure un monme. e o Pour chaque monme, on reprsente par un point noir : quelles entres il o e e prend en compte (partie AND du PLA) ; dans quelles sorties il gure (partie OR du PLA). Ainsi la troisi`me ligne reprsente le monme x2 .x0 . Il est utilis e e o e par les fonctions a, b et e.

2.2.3

Minimisation locale, minimisation globale

Dans les ralisations ` base de monmes, en portes ou en PLA, le concepteur e a o cherche ` minimiser le nombre total de monmes. La surface du PLA est en a o eet proportionnelle ` ce nombre. Si cette recherche est faite indpendamment a e pour chacune des fonctions individuelles, il se peut que le rsultat global soit e moins bon que pour une minimisation globale. Les outils modernes de Conception Assiste par Ordinateur comportent de tels programmes de minimisation e globale. Pour la solution du transcodeur de 7 segments, avec une telle minimisation globale, un outil dvelopp par lun des auteurs obtient 14 monmes e e o dirents. La partie droite de la gure 8.8 donne les direntes fonctions. e e

2.3
2.3.1

Mmoires mortes : une table de vrit cble e e e a e


Les circuits existants

Une mmoire morte de 256 mots de 16 bits ralise 16 fonctions combie e natoires de 8 variables. En eet ` partir dune conguration des 8 entres, a e habituellement interprte comme une adresse, la mmoire morte dlivre 16 ee e e bits. Une telle ralisation de fonction ` base de ROM est parfois utilise. Elle e a e est optimale du point de vue du temps de conception. Cest une tr`s bonne soe lution de paresseux ! La table de vrit sut ` dcrire la ralisation. On peut e e a e e aussi considrer cette solution comme un PLA avec tous les monmes canoe o niques. On trouve souvent dans les circuits programmables (FPGA) des petites ROM, inscriptibles par lutilisateur, par programmation. Ces mmoires, quon e ne peut plus appeler mortes, reoivent le nom de Look-Up Tables (LUT). c

http://fribok.blogspot.com/

2. Assemblage de blocs de base...

177

x3 x2 x1 x0 c1 c1 c0 11 10 01 00 c0 e1 e0 1 c s 0

x3

x2

x1

x0

Fig. 8.9 Reprsentation symbolique des multiplexeurs 4 voies vers 1 et 2 voies vers 1. e Structure interne du multiplexeur 4 voies vers 1.

2.3.2

Synth`se systmatique e e

Pour une fonction de 8 variables on forme les 256 monmes canoniques pour o exprimer la fonction sous forme de somme de produits ` partir de la table de a vrit, et on ralise un circuit combinatoire en collant ` cette expression. e e e a

2.4
2.4.1

Multiplexeurs
Les circuits existants

Un circuit combinatoire est dusage frquent : le multiplexeur. Il ralise la e e N slection parmi 2 entres de donnes. Celle des entres slectionne est celle e e e e e e dont le numro est donn sur les N bits de commande. Le nombre dentres e e e de commande du multiplexeur est le logarithme ` base 2 du nombre de bits de a donnes. e Ainsi pour 2 bits de commande c1 et c0 et 4 bits de donne x3, x2, x1, x0 e la sortie s est dcrite par lquation logique : e e s = c1.c0.x3 + c1.c0.x2 + c1.c0.x1 + c1.c0.x0. Si les bits c1 c0 codent lentier k, la sortie est gale ` lentre x dindice k. La e a e ralisation interne sen dduit aisment. Elle constitue dans ce cas un multie e e plexeur 4 voies vers 1. Le schma conventionnel des multiplexeurs 2 voies vers e 1 et 4 voies vers 1 sont donns gure 8.9. e 2.4.2 Synth`se systmatique e e

Les multiplexeurs sont tr`s pratiques pour synthtiser une fonction dcrite e e e par un graphe de dcision binaire (BDD). Ils sont surtout une brique de base de e lalgorithmique cble o` ils ralisent la primitive de choix. Ainsi de nombreux a e u e

http://fribok.blogspot.com/

178

Circuits combinatoires

outils de CAO partent dune reprsentation des fonctions boolennes en BDD, e e notamment si la brique de base des circuits combinatoires est le multiplexeur.
Remarque : Attention le multiplexeur est orient. Ce nest pas un aie guillage 4 voies vers 1 tel quil pourrait tre ralis avec 4 commutateurs (voir e e e la gure 7.10 dans le chapitre 7).

Exemple E8.3 : Cascades de multiplexeurs En utilisant 5 multiplexeurs 4 voies vers 1, on peut raliser un multiplexeur e 16 voies vers 1. Pour cela on utilise un premier tage de 4 multiplexeurs en e parall`le recevant les mmes 2 bits de commande, puis lautre multiplexeur e e recevant les deux derniers bits de commande. Le lecteur est convi ` examiner ea direntes possibilits de choix daectation des bits de commandes soit au e e premier tage de 4 multiplexeurs en parall`le soit au deuxi`me. e e e

2.5
2.5.1

Portes complexes
Les circuits existants

Dans certains types de ralisations des portes un peu complexes sont utie lises ; par exemple les portes ORNAND et ANDNOR prsentes gure 8.3. e e e 2.5.2 Synth`se systmatique e e

Le principal probl`me li ` lutilisation de telles portes est que des procds e ea e e systmatiques de synth`se ne sont pas toujours disponibles. On obtient facie e lement une expression en somme de produits, donc en NAND de NAND. Les portes plus complexes correspondant par exemple ` (abc + de + f g) ne peuvent a provenir que doutils de Conception Assiste par Ordinateur. Les mthodes utie e lises alors consistent ` modier les formes algbriques (ou autres comme les e a e BDDs) des fonctions boolennes pour retrouver ou calquer (on parle de mape ping en anglais) les motifs correspondant aux lments de base disponibles. ee

3.

Algorithmique cble : conception logique a e

La conception logique a pour but de composer des fonctions boolennes, e ventuellement assez complexes, pour raliser une fonction boolenne plus e e e gnrale. Lessentiel de la dicult est la recherche de rgularit. e e e e e

3.1

La question de la rgularit e e

Pour introduire la notion de rgularit dans la conception, nous montrons e e ici les rsultats de deux mthodes de conception sur un mme exemple. e e e

http://fribok.blogspot.com/

3. Algorithmique cble : conception logique a e

179

Exemple E8.4 : Conversion binaire vers DCB Il sagit dune fonction boolenne ` 9 entres et 10 sorties. Sur la gure 8.10 e a e les bits dentre et de sorties ne gurent que par leur numro. Le circuit e e convertit lcriture binaire dun naturel de lintervalle [1, 366] (donc sur e 9 bits) vers son criture en Dcimal Cod en Binaire (donc sur 10 bits). e e e Chaque chire de lcriture dcimale est cod en binaire, par exemple e e e 28510 = 1 0001 11012 = 10 1000 0101DCB . 1) Par ltude de lalgorithme de conversion, nous connaissons une e dcomposition de la fonction du circuit en fonctions lmentaires. Il y a une e ee forte rgularit dans la faon dont se combinent ces fonctions lmentaires. e e c ee Elle est lie ` la rgularit induite par lalgorithme de conversion. Cette e a e e dcomposition donne la structure de la solution 2 de la gure 8.10. Tous les e rectangles reprsentent la mme fonction ` 4 entres et 4 sorties. Les deux e e a e rectangles marqus dun point, blanc ou noir, ont une entre de moins ou e e une entre et une sortie de moins. Tous les blocs tant identiques et leur e e disposition tant rguli`re, le schma topologique du circuit serait simple. e e e e La fonction tant une fonction arithmtique, pour obtenir le mme circuit e e e pour plus dentres et de sorties, il sut dtendre le schma. On dnombre 6 e e e e niveaux de blocs entre les entres et les sorties. e 2) Nous avons, avec laide des auteurs dun logiciel de synth`se logique, e donn la table de vrit compl`te de ce circuit ` loutil. Cela reprsente un e e e e a e peu moins de 400 lignes de 10 bits. Elles peuvent tre obtenues par un proe gramme. Ce logiciel a travaill en aveugle uniquement ` partir de ces tables. e a Le logiciel cherchait ` synthtiser ` partir de fonctions ` 3 ou 4 entres. Il a a e a a e essay de minimiser le nombre total de blocs. Il a par ailleurs essay de regroue e per des fonctions qui utilisaient les mmes variables ou les mmes rsultats e e e intermdiaires. Il a de plus cherch ` minimiser le nombre de niveaux logiques e ea total entre les entres et les sorties. Le rsultat est celui de la partie 1 de e e la gure 8.10. Par exemple le bloc reprsent en gris reoit les 4 entres de e e e c e numro 7, 5, 3 et 2 et dlivre 3 sorties, chacune tant utilise dans deux blocs. e e e e On dnombre 4 niveaux de blocs entre les entres et les sorties. e e

Dans tous les circuits ayant un grand nombre dentres, le concepteur e cherche une rgularit permettant de simplier le travail. Il est ` noter que e e a cette rgularit se retrouve souvent dans la topologie eective de la ralisation e e e du circuit. La plupart des circuits ralisant des fonctions arithmtiques, et e e dautres, prsentent de telles rgularits. Nous allons les tudier. Cette partie e e e e suppose connus les lments du chapitre 3 sur les reprsentations des granee e deurs. Dans la suite nous montrons 3 mthodes dassemblage de sous-circuits. e Dans la premi`re, lassemblage itratif, ou linaire, la connaissance de la soe e e

http://fribok.blogspot.com/

180

Circuits combinatoires

7532 7543864876352 86 864875 642310

8 7 6 5 4 3 2 1 0

8 7

432

9 8 7 6 5

4 3 2 1 0

Solution 1

Solution 2

Fig. 8.10 Deux solutions pour la ralisation dune mme fonction e e

lution pour le circuit travaillant sur N 1 bits permet de concevoir le circuit travaillant sur N bits. Cette structure est proche de la boucle ditration. e Le circuit global est obtenu en rptant N fois un circuit de base. e e Dans la deuxi`me, lassemblage rcursif, ou arborescent, la connaissance de e e la solution pour le circuit travaillant sur N/2 bits permet de concevoir le circuit travaillant sur N bits. Cette structure est proche de la structure darbre binaire. Parfois les deux ralisations de la fonction sur N/2 bits e doivent tre compltes pour permettre de raliser la fonction sur N bits. e ee e La troisi`me mthode, gnrale, regroupe des blocs selon des r`gles de come e e e e position de fonctions quelconques. Pour chacune de ces mthodes dassemblage nous donnons un ou quelques e exemples typiques. Un exemple simple, la fonction incrmentation, permet e ensuite de comparer direntes mthodes dans une tude de cas. e e e

3.2
3.2.1

Assemblages linaires e
Schma en tranches, schma en blocs e e

Reprsenter un circuit rsultant dun assemblage itratif peut se faire de e e e deux faons reprsentes gure 8.11. Cest un exemple sans signication. Un c e e circuit traite deux vecteurs de n bits a et b. Le traitement se compose de la mise en srie de 3 fonctions. Dans la premi`re fonction, symbolise par un carr, e e e e une entre externe X est prise en compte pour chaque bit. Dans la troisi`me e e fonction, symbolise par un ovale, une information passe de bit en bit, ` la e a faon dune retenue. c On parle de reprsentation en tranches quand on fait appara e tre toutes les cellules qui participent ` la fonction globale. Lexemple rel de lUAL a e (Cf. Exemple E8.10) utilise cette technique.

http://fribok.blogspot.com/

3. Algorithmique cble : conception logique a e

181

an1

ai b0 a0

b n X

A Add X S additionneur A 0 B Mux 1

rn1

r0

r Schma en blocs

Schma en tranches

C multiplexeur

Fig. 8.11 Reprsentation dun circuit en tranches ou en blocs ; reprsentation convene e tionnelle de ladditionneur et du multiplexeur N bits

On parle de reprsentation en blocs quand on ne dessine que les fonctions e sur N bits. On reprsente alors par un trait gras les bus, ou nappes de ls. e Lexemple du circuit de calcul du quanti`me (Cf. Exemple E8.9) utilise cette e reprsentation. e 3.2.2 Exemples : addition et soustraction de naturels

Exemple E8.5 : Ladditionneur N bits La mise en cascade de N additionneurs 1 bit constitue un additionneur N bits. Il peut eectuer laddition de deux naturels ou de deux relatifs cods sur N e bits. La somme de deux naturels cods en binaire pur sur N bits est sur N + 1 e bits. Le schma du circuit est donn gure 3.3 (chapitre 3). e e Exemple E8.6 : Ladditionneur/soustracteur N bits On a vu au chapitre 3 que le calcul sur les vecteurs boolens donnant la e reprsentation de la somme ou de la dirence, code en binaire pur ou en e e e complment ` 2, est le mme. Puisque le circuit peut eectuer laddition ou e a e la soustraction, il dispose dun bit de commande Add/Sub. Ce l vaut 0 si lopration voulue est une soustraction, 1 si cest une addition. e Le calcul de la somme A+B se fait en ajoutant A, B et 0. Le calcul de la dirence A-B se fait en ajoutant A, le complmentaire boolen de B et 1. e e e On se sert du l Add/Sub pour slectionner loprande Q ` ajouter ` A. e e a a Pour chaque bit, on a Qi = Add.Bi + Sub.Bi . De mme, on fabrique le report entrant r0 , pour ajouter 0 ou 1, selon e lquation : r0 = (si Add/Sub alors 0 sinon 1) = Add/Sub e Si lopration est une addition, la retenue sortante C est le report sortant. e Si lopration est une soustraction, la retenue sortante C est le complmentaire e e

http://fribok.blogspot.com/

182

Circuits combinatoires

An1

Bn1

A0 B0

10 1 0 C V

10

10

10

Add/Sub

Sn1

Sn2

S1

S0

Fig. 8.12 Additionneur-soustracteur N bits. Chaque carr est un additionneur 1 bit. e Tous les multiplexeurs sont commands par le mme signal. e e

Arbre de OUEXCLUSIFs

Arbre de ETs

Arbres mixtes

Fig. 8.13 Arbres binaires de portes

de ce report sortant. Le bit doVerow V est le XOR des deux derniers reports. Le schma, en tranches, du circuit est donn gure 8.12. e e

3.3

Assemblages arborescents

Exemple E8.7 : Le XOR gnralis e e e On conna la porte XOR ` 2 entres. Cette fonction est la somme modulo 2 t a e si lon interpr`te les deux entres comme entiers plutt que comme boolens. e e o e Il est possible dobtenir une somme modulo 2 de N entiers sur un bit (ou le XOR gnralis de N boolens) en utilisant lassociativit de cette fonction. Ce e e e e e calcul est utilis pour obtenir le bit de parit dun mot qui vaut 1 si le mot e e a un nombre impair de 1. Ce genre de technique peut sappliquer pour toute opration associative, par exemple le AND ou le OR. La gure 8.13 rappelle e que des arbres de NAND et de NOR peuvent remplacer les AND ou les OR. Voir aussi lexercice E8.15. Exemple E8.8 : Le dcodeur N bits e Le dcodeur est prsent paragraphe 2.1. Nous nous intressons ici ` sa e e e e a ralisation interne. Nous supposerons que son nombre dentres N est une e e puissance de 2. Il fabrique 2N sorties boolennes sur 2N ls ` partir de N e a

http://fribok.blogspot.com/

3. Algorithmique cble : conception logique a e

183

e1 D2 e3 D1 e2 s3

e0 Dcodeur 2 vers 4 e s0 s1

s3 s0

s10

Fig. 8.14 Dcodeur ` 4 entres et 16 sorties, ` partir de 2 dcodeurs ` 2 entres et 4 e a e a e a e sorties et de 16 portes AND.

entres. Une seule des sorties est ` 1. Il est tr`s facile de dcrire un tel circuit e a e e rcursivement : e si N vaut 1, le circuit consiste en 1 seul inverseur. Les deux sorties sont lentre et lentre complmente. e e e e si N est suprieur ` 1, on dispose de deux dcodeurs ` N/2 entres. Ils e a e a e N/2 ont chacun 2 sorties. En combinant 2 ` 2 dans des portes AND ` deux a a entres les sorties des 2 dcodeurs, on obtient le dcodeur souhait. e e e e Montrons le passage de 2 entres ` 4 par un exemple (Cf. Figure 8.14). e a Un dcodeur D1 ` 2 entres e3 e2 dlivre les 4 sorties s3 s2 s1 s0 . e a e e Un dcodeur D2 ` 2 entres e1 e0 dlivre les 4 sorties s3 s2 s1 s0 . e a e e Les quations des sorties du dcodeur ` 4 entres sont, pour p compris entre 0 e e a e et 15 : sp = sp div 4 AND sp modulo 4 cest-`-dire : a s15 = s3 AND s3 s14 = s3 AND s2 jusqu` s1 = s0 AND s1 s0 = s0 AND s0 a

3.4

Assemblages gnraux e e

Lexpression dune fonction boolenne tr`s complexe comme composition e e de fonctions boolennes plus simples donne une organisation de circuits come binatoires. Il sut de coller la structure du circuit sur la structure de la combinaison de fonctions. Cest le cas pour le circuit de calcul du quanti`me dans e lanne prsent en exemple. e e e Dans les cas o` une composition est connue, tout va bien. Si on ne sait pas u exprimer la fonction boolenne complexe, il ne reste plus que la table de vrit e e e

http://fribok.blogspot.com/

184

Circuits combinatoires

et sa traduction vers une somme de monmes. Cest le cas pour le calcul du o nombre premier suivant prsent aussi. e e Il y a peu de r`gles dans lobtention de lassemblage. Cest une branche de e lalgorithmique, sans plus. Une proprit toutefois est ` retenir : la slection, ee a e exprime dans les algorithmes par des structures choix est ralise par des e e e multiplexeurs. Souvent ce choix commute avec dautres oprations et cette e commutation peut tre exploite pour diminuer le cot dun circuit. Cela supe e u pose videmment connus les cots des multiplexeurs et autres blocs. Ceci est e u illustr dans le circuit dUnit Arithmtique et Logique. e e e Exemple E8.9 : Le calcul du quanti`me dans lanne e e Cet exemple a sa source dans [SFLM93]. Il a fait lobjet dune vraie ralisation e par un groupe dtudiants de ma e trise dinformatique dans le cadre dun projet europen de dveloppement de lenseignement de la microlectronique. e e e Un circuit reoit le code binaire dune date. Cette date est compose dun c e numro de jour dans le mois, cod sur 5 bits, dun numro de mois, cod sur e e e e 4 bits. Lanne est limite aux deux chires dcimaux donnant lanne dans e e e e 2 le si`cle . Chacun de ces deux chires dcimaux est cod en binaire, selon un e e e code DCB. Le circuit dlivre le code binaire du quanti`me de la date dans lanne. e e e eme ` Ainsi le 3 mars est le 62 jour de lanne les annes non bissextiles et le e e ` 63eme les annes bissextiles. e Concevoir ce circuit suppose de conna tre une mthode de calcul. Ici on e retient la suivante qui repose sur des fonctions tr`s spciques de cette applie e cation : Un premier circuit bis dlivre 1 si lanne est bissextile, 0 sinon. Il sagit de e e reconna un multiple de 4, ` partir du code DCB. tre a Un deuxi`me circuit > 2 dlivre 1 si le numro de mois est suprieur ` 2. e e e e a Un circuit Db donne sur 9 bits le code binaire du quanti`me du premier e e jour du mois les annes non bissextiles, ` partir du code du mois. On fait e a aisment les 9 tables de vrit correspondant ` cette fonction : 11 ; 232 ; e e e a 360,. . .,12334. Un additionneur ajoute le numro du jour, le numro du premier du mois e e et 1 si lanne est bissextile et si le numro de mois est suprieur ` 2. e e e a On remarque que plusieurs fonctions sont -boolennes car des codes binaires e dentres ne reprsentent pas des valeurs du domaine. e e

Exemple E8.10 : Lunit arithmtique et logique e e Lunit arithmtique et logique que nous tudions reoit deux nappes de ls A e e e c et B. Elle dlivre une nappe F. e
2

Encore un syst`me informatique avec le bogue de lan 2000 ! e

http://fribok.blogspot.com/

3. Algorithmique cble : conception logique a e

185

anne 8 4 5 Db 9 >2 bis mois jour

Fig. 8.15 Circuit de calcul du quanti`me dans lanne e e Opration e souhaite e A+B A-B B div 2 A AND B Opration e ralise e e A+B+0 A+B+1 B div 2 + 0 + 0 A AND B retenue entrante 0 1 0 entre di e ai ai bi+1 ai entre ei e bi bi 0 bi sortie fi si si si xi

Fig. 8.16 Oprations de lUAL e Opration e A+B A-B B div 2 A AND B mux 1 bi bi bi mux 2 ci ci 0 ci mux 3 ai ai bi+1 ai mux 4 si si si xi

Fig. 8.17 Commandes des multiplexeurs

Les nappes peuvent tre interprtes comme des entiers ou des vecteurs de e ee bits. LUAL calcule, selon 2 bits de commande com1 com0, la somme de A et B, la dirence de A et B, le quotient de B par 2 ou, sans linterprtation e e enti`re, le AND (bit ` bit) des nappes A et B. e a LUAL comporte un additionneur. En aiguillant les bonnes valeurs sur les entres ei , di et la retenue entrante de ladditionneur, on obtient les 3 rsultats e e arithmtiques en sortie si de ladditionneur (Cf. Figure 8.16). En utilisant e la sous-fonction AND prsente dans la fonction majorit de chaque tranche e e dadditionneur, on obtient la valeur xi = ei AND di . Un dernier multiplexeur permet dobtenir fi gal soit ` xi soit ` si . e a a Les slections des multiplexeurs 1, 2, 3 et 4 de la gure 8.18 peuvent tre e e obtenues aisment (Cf. Figure 8.17). Il reste ` exprimer les commandes de e a chaque multiplexeur en fonction de com1 com0.

http://fribok.blogspot.com/

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

fi Fig. 8.18 UAL. Les tranches reprsentes sont la tranche de plus fort poids, une tranche e e de rang intermdiaire et la tranche de poids faible. Le remplacement de e certains multiplexeurs par des portes est fait dans la partie droite.

Exemple E8.11 : Le calcul du nombre premier suivant Ceci est un exemple dcole. Un circuit reoit le code binaire dun naturel A e c cod sur N bits. Il dlivre le code binaire du nombre premier immdiatement e e e suprieur ` A si A est premier, 0 sinon. e a On ne conna pas dalgorithme gnral donnant ce rsultat. Pour raliser t e e e e le circuit il ne reste quune solution : pr-calculer la fonction sous forme de e table, la coder en binaire sous forme de table de vrit et raliser le circuit e e e dapr`s les expressions boolennes. e e Cela ne pose pas de probl`me pour les petites valeurs de N. e

4.

Etude de cas

Certains circuits peuvent donner lieu ` direntes organisations car lanaa e lyse de leur dcomposition nest pas unique. Nous montrons ici un exemple e dun tel circuit. Un exemple analogue est propos en exercice E8.18. e Exemple E8.12 : Incrmenteur e Un incrmenteur est un circuit combinatoire qui incrmente le naturel prsent e e e en entre. Les entres sont une nappe de N ls xN 1 , xN 2 , . . . , x1 , x0 . Ces e e bits codent en binaire un naturel X. Les sorties sont une nappe de N + 1 ls yN , yN 1 , yN 2 , . . . , y1 , y0 . Ces bits codent en binaire un naturel Y . Le circuit

http://fribok.blogspot.com/

4. Etude de cas

187

tudi doit tre tel que Y = X + 1. e e e Introduisons les produits intermdiaires Pi dnis par : P1 = 1, P0 = x0 , e e P1 = x1 .x0 , P2 = x2 .x1 .x0 , et gnralement Pj = i=j xi . e e i=0 On obtient, pour tout k dans lintervalle [0, N ], yk = xk Pk1 ou, ce qui est quivalent, yk = xk Pk1 . e La ralisation de lincrmenteur suppose donc la ralisation des produits e e e partiels Pi . Si N est petit (3 ou 4), il est facile de former les Pi par des portes NAND par synth`se systmatique. Plus gnralement, examinons direntes e e e e e solutions dans la fabrication des Pi avec des NAND et NOR. Les crit`res pris e en compte sont le nombre total de portes, le nombre de niveaux logiques entre entres et sorties et le nombre de portes (ou blocs) direntes ` dessiner pour e e a pouvoir les assembler et obtenir le dessin global du circuit. 1) Utilisation de portes AND ` 2, 3, . . . , N 1 entres (partie 1 de la a e gure 8.19) Le nombre de portes est de lordre de N . Le nombre de niveaux est optimal, il est de 1. La rgularit est tr`s mauvaise, chaque porte est dirente e e e e des autres. Une solution consiste ` dessiner une porte ` N entres et ` nen a a e a utiliser quune partie, mais ce nest pas tr`s conomique. Les portes AND sont e e ralises par des NAND suivies dinverseurs. Pour N grand cette technique ne e e fonctionne que si lon dispose de portes ` nombre dentres quelconque. Ce a e nest en gnral pas le cas. e e 2) Utilisation de portes AND ` 2 entres (partie 2 de la gure 8.19) Coma e plexit : de lordre de 2N portes, de lordre de 2N niveaux de portes. Une seule e cellule physique ` dessiner (encadre), est rpte N fois. Malheureusement la a e e ee porte AND nest pas une primitive physique en gnral ; elle est ralise par un e e e e NAND suivi dun inverseur. Cela conduit ` chercher une autre solution. a 3) Utilisation de portes AND ` 2 entres, alternativement ralises par un a e e e NAND ou un NOR (partie 3 de la gure 8.19) Cette solution repose sur les galits suivantes : e e u (v.w) = u NAND (v, w) t (u.v.w) = t NOR (u, NAND (v, w)) Complexit : de lordre de 2N portes, de lordre de N niveaux de portes. e Une seule cellule physique ` dessiner (encadre). Elle comporte deux tages. a e e Elle est rpte N/2 fois. e ee 4) Dcomposition rcursive des produits partiels, ` base de AND ` 2 entres e e a a e (partie 4 de la gure 8.19) Voyons comment on passe du circuit ` 8 entres au a e circuit ` 16 entres. Supposons connu le circuit qui fabrique les Pi pour i allant a e de 0 ` 7 ` partir des x7 , . . . , x0 . Dupliquons ce circuit et connectons-le aux a a entres x15 , . . . , x8 . On obtient des produits partiels Pi . P8 = x8 , P9 = x9 .x8 , e jusqu` P15 = x15 . . . . .x9 .x8 . Il sut dun ensemble de portes AND ` 2 entres a a e pour obtenir les Pi car, pour i de 8 ` 15 : Pi = Pi .P7 a Le nombre de portes est de lordre de 2 N log2 N portes, le nombre de niveaux est de log2 N . Chaque bloc est redessin deux fois (encadr). Dans e e

http://fribok.blogspot.com/

188

Circuits combinatoires

x0 P1 P0

P2

P1

P0

4 3

P3 P7 P1 P0

Fig. 8.19 Direntes solutions pour la ralisation de lincrmenteur. Les portes XOR e e e ne sont pas dessines dans la solution 4 e

chaque bloc, il faut dessiner le dernier tage de portes ralisant les AND avec e e le dernier produit de ltage prcdent. e e e Dans cette solution aussi il conviendrait de remplacer les cascades de AND par des cascades de NAND et de NOR, alternativement. La mise au point de cette solution est un excellent exercice.

5.

Exercices

E8.13 : De toutes les couleurs Reprendre les codes des couleurs dans le dbut du chapitre 3. Pour les couleurs e codes dans les deux codes, concevoir le circuit combinatoire qui transcode dans e un sens, dans lautre. E8.14 : Ralisation du XOR e Avec une porte s = (ab + c) et un NOR ` 2 entres, raliser la fonction XOR. a e e En se servant des schmas en transistor de la gure 7.9 du chapitre 7, compter e les transistors de la ralisation du XOR. e Essayer dautres expressions du XOR. Faire les schmas correspondants ; e compter les transistors, comparer.

http://fribok.blogspot.com/

5. Exercices

189

E8.15 : Des grandes portes avec des petites En utilisant les r`gles de De Morgan (Cf. Chapitre 2), montrer que e (a + b).(c + d) = a + b + c + d En dduire le schma dune fonction NOR ` 8 entres nutilisant que des e e a e NAND ou NOR ` 2 entres. Penser ` une organisation arborescente. a e a De mme3 donner le schma dune fonction NAND ` 8 entres nutilisant e e a e que des NAND et NOR ` 2 entres. a e Gnralisation : donner la r`gle gnrale permettant de raliser toute fonce e e e e e tion AND, OR, NAND ou NOR ` nombre quelconque dentres en se servant de a e NAND ` au plus 4 entres, de NOR ` au plus 3 entres et dinverseurs. a e a e E8.16 : Multiplieur Reprendre la technique de multiplication des naturels dans le chapitre 3. Etudier le circuit de multiplication. Au lieu dune itration en ligne, il faut penser e a ` une itration en matrice. Il est aussi possible de donner une description e rcursive de la solution. e E8.17 : Un circuit combinatoire avec un cycle Prendre un additionneur 1 bit. Reboucler le report sortant sur le report entrant. Se persuader que le circuit ` deux entres obtenu est un circuit combinatoire. a e Indication : le report (sortant) est soit constant pour les entres 00 et 11, e soit gal au report entrant pour les entres 01 et 10. On peut donc le reboucler e e sur le report entrant. E8.18 : Un seul 1 Soit une nappe de N ls xN 1 , xN 2 , . . . , x1 , x0 . Ce sont les entres dun circuit e combinatoire C. La sortie S vaut 1 si et seulement si un seul des xi vaut 1. Nous allons esquisser 5 solutions ` ce probl`me. a e Ide 1 (fonctionne bien pour N petit) : faire la table de vrit de S, donner e e e lquation de S, en dduire le circuit. e e Ide 2 : concevoir un circuit C, nayant que N 1 entres et deux sorties e e Z et T. Z vaut 1 si aucune des entres ne vaut 1. T vaut 1 si une seule e des entres vaut 1. Concevoir un circuit C qui, combin avec C donne un e e circuit ayant mme comportement que C, mais N entres. Construire C e e comme circuit itratif par mise en cascade de circuits C. Rsoudre le cas e e particulier du premier tage. e Ide 3 : supposer que N est une puissance de 2. Supposer que lon sait faire e un circuit C ` N/2 entres. C a deux sorties Z et T. Z vaut 1 si aucune a e des entres ne vaut 1. T vaut 1 si une seule des entres vaut 1. Concevoir e e un circuit C qui combine les quatre sorties des deux circuits C et dlivre e deux sorties Z et T. Construire C comme circuit rcursif par mise en arbre e de circuits C. Rsoudre le cas particulier du premier tage. e e
3

Apr`s tre all au NOR, il faut quon pense ` faire NAND (G. Brassens) e e e a

http://fribok.blogspot.com/

190

Circuits combinatoires

Ide 4 : se persuader quun additionneur un bit donne le nombre de 1 e parmi trois ls dentres. En utilisant un ensemble dadditionneurs un bits e concevoir un circuit qui donne le nombre de 1 parmi une nappe de ls. Concevoir un circuit qui dtecte si ce nombre de 1 est suprieur ` un, ou e e a nul. Simplier le circuit qui calcule le nombre de 1 pour tenir compte du fait que dans cet exercice on na pas besoin du nombre de 1, seulement de savoir sil est suprieur ` un ou nul. e a Ide 5 : concevoir un circuit qui reoit une nappe de N ls et dlivre une e c e nappe de N ls. Les deux nappes sont ordonnes (de droite ` gauche, de e a haut en bas...). La notion de premier fait rfrence ` cet ordre. Les sorties ee a de ce circuit soit sont toutes ` 0, soit sont toutes ` 0 sauf une, celle dont le a a rang est le rang du premier 1 de la nappe dentre. e Utiliser deux tels circuits pour la nappe des xi , lun pour un ordre, lautre pour lordre inverse. Si il y a un seul 1, le premier 1 dans un sens est aussi le premier 1 dans lautre sens. Etudier les 5 solutions du point de vue du nombre de portes, du nombre dtages de portes pour N valant 4, 16, 64 et 256. Saider dun outil de Concepe tion Assiste par Ordinateur. e

http://fribok.blogspot.com/

Chapitre 9 Elments de mmorisation e e


Un ordinateur est muni de composants permettant de stocker les donnes e et les programmes ; nous avons parl du tableau MEM au chapitre 4 et nous e reparlerons de mmoire dans les chapitres ultrieurs. e e Des lments de mmorisation sont aussi ncessaires pour raliser des maee e e e chines squentielles telles que nous les avons dnies au chapitre 5 (Cf. Chae e pitres 10, 11 et 14). Dune faon gnrale, il sagit de savoir comment raliser la fonction dafc e e e fectation des langages de haut niveau : x f(a, b, c). La mmorisation peut e avoir lieu chaque fois quune des variables a, b ou c est modie (comportee ment asynchrone) ou ` des instants xs par une entre spcique ne dpendant a e e e e pas des autres entres (comportement synchrone). Nous avons dj` parl de e ea e ces aspects au chapitre 6 et dans ce livre nous nous limitons aux circuits synchrones. Un cas particulier de ce type daectation est : x f(x, e) o` u les deux instances du nom x correspondent aux valeurs de x sur une mme e nappe de ls, ` des instants dirents. Ce nest pas une quation de point a e e xe. On la lit par exemple, comme dans un langage de programmation usuel, nouveau-x f (ancien-x, e). Dans ce chapitre nous tudions les lments de mmorisation permettant e ee e de rsoudre les probl`mes abords ci-dessus sous les deux aspects : e e e la vision externe, fonctionnelle, o` nous voyons quun processeur connect u e a ` de la mmoire peut crire une information dans la mmoire ou lire une e e e information prcdemment mmorise en envoyant des signaux de come e e e mande a cette mmoire. Une mmoire ne permet que les aectations de ` e e type x f(a, b, c) ; on ne peut pas lire et crire ` un mme emplacement e a e dans la mmoire dun ordinateur dans le mme instant. e e la vision interne, structurelle, o` nous expliquons comment de la mmoire u e peut tre fabrique ` partir dlments de mmorisation de base (nous e e a ee e partons du bistable tudi au chapitre 7). Nous montrons aussi quels e e lments de mmorisation conviennent pour raliser une aectation du type ee e e x f(x, e). Ces lments sont aussi utiliss dans les dispositifs de traiteee e ment de linformation dont naturellement les processeurs (Cf. Chapitre 14).

http://fribok.blogspot.com/

192

Elments de mmorisation e e

Dans le paragraphe 1. nous prsentons les composants lmentaires utie ee liss pour mmoriser de linformation et pour construire des circuits e e squentiels. Nous prsentons ensuite la notion de mmoire dans un ore e e dinateur (paragraphe 2.) puis comment est construite une mmoire ` e a partir de cellules ou points mmoires lmentaires (paragraphe 3.). Le e ee paragraphe 4. prsente des optimisations et des ralisations de mmoire e e e particuli`res. e

1.

Points de mmorisation de bits : bascules e et registres

Dans le chapitre 7, nous avons dcrit le comportement lectrique de certains e e points mmoire. Considrons une cha de 2k (k 1) inverseurs, la sortie de e e ne lun tant connecte ` lentre du suivant. Si nous rebouclons la sortie de la e e a e cha dinverseurs sur lentre, nous obtenons un circuit squentiel ` deux ne e e a tats stables, ou bistable. Nous nous intressons au cas k = 1. Tel que (Cf. Fie e gure 9.1-a), le bistable ne peut que fournir sa valeur ` un autre composant, a il nest pas possible de le charger avec une valeur particuli`re ; il peut tre lu, e e mais on ne peut y crire. e Nous allons tudier deux ralisations permettant de forcer une valeur en e e entre du circuit. La premi`re consiste ` remplacer les inverseurs par des portes e e a NOR (ou NAND). On obtient ainsi un circuit avec deux entres de commandes, e appel bascule RS (voir la gure 9.1-b pour le montage). La deuxi`me consiste e e a ` intercaler un multiplexeur entre les deux inverseurs ; ce montage est appel e verrou construit ` partir du bistable (Cf. Figure 9.4-a). a Par essence, les points de mmorisation sont des circuits o` lune des sorties e u reboucle sur lune des entres. Cela conduit ` des quations du type x = f(x, e), e a e o` les deux occurrences de x dnotent des valeurs de x ` des instants dirents. u e a e Pour distinguer une variable x ` un instant et la mme ` linstant suivant, nous a e a crivons x. Lquation prcdente devient : x = f(x, e) : la nouvelle valeur de e e e e x est fonction de son ancienne valeur et de e.
Comme nous lavons prcis en introduction, dans ce livre nous nous limitons e e aux circuits synchrones. Lorsque nous utiliserons des lments de mmorisation ee e dans des assemblages complexes (Cf. Chapitres 10, 11 et 14), les valeurs des variables seront examines ` des instants dnis par un signal en gnral e a e e e priodique appel horloge. e e

1.1
1.1.1

Points de mmorisation lmentaires : bascule RS, e ee verrou


Bascule RS

Une bascule RS poss`de deux entres R (Reset) et S (Set) permettant de e e forcer ltat respectivement ` 0 ou ` 1, et deux sorties Q1 et Q2. e a a

http://fribok.blogspot.com/

1. Points de mmorisation de bits : bascules et registres e

193

Q1 R S Q Q

(a)

S (b)

Q2 (c)

Fig. 9.1 a) le bistable b) la bascule RS ralise avec des portes NOR c) le symbole e e logique de la bascule RS

Nous allons dtailler le fonctionnement dune bascule RS ralise ` partir e e e a de portes NOR (voir pour le montage la gure 9.1-b) : Lorsque R et S sont stables ` 0, la bascule est quivalente ` un bistable. En a e a eet, NOR(x, 0) = x. A partir de cet tat stable, le passage de R ` 1 fait passer Q1 ` 0, apr`s un e a a e dlai de commutation de la porte NOR. Apr`s un autre dlai, Q2 passe ` e e e a 1. Lorsque R repasse ` 0, alors ltat reste stable. a e Par symtrie, ` partir de ltat stable, le raisonnement est le mme. Lorsque e a e e S passe ` 1, Q2 passe ` 0 et Q1 passe ` 1, ` ceci pr`s que Q2 change avant a a a a e Q1. Lorsque S (respectivement R) est ` 1 et que R (respectivement S) passe ` a a 1, les sorties Q1 et Q2 sont ` 0. Cette situation nvolue pas tant que les a e deux entres restent stationnaires. Cela constitue le plus souvent une erreur e dinitialisation. Remarquons que lorsque R et S ne sont pas tous deux ` 1, Q1 et Q2 sont a complmentaires, ce qui justie les noms habituels Q et Q. e La stabilisation des sorties ne peut avoir lieu exactement au mme instant e que le changement de lentre, ` cause du temps de commutation de chaque e a porte. Il existe ainsi un dlai de stabilisation de la bascule, dlai faible et born. e e e Nous ne prenons pas en compte de faon chire ce dlai mais seulement son c e e existence et notons que les valeurs en entre et en sortie sont considres ` e ee a des instants successifs. Plus prcisment, nous notons Q1, Q2 les valeurs de e e la bascule ` un instant donn et Q1, Q2 les nouvelles valeurs, ` un instant a e a immdiatement ultrieur. e e La table dvolution des valeurs de la bascule est donne ci-dessous, la e e premi`re ligne se lisant : si les entres S et R sont ` 0, la sortie Q1 reste ` la e e a a valeur quelle avait prcdemment et donc Q1 = Q1. A partir de cette table, e e on obtient les quations donnes ` ct. e e a oe Du schma de la gure 9.1-b, on tirerait les quations : Q1 = R + Q2, Q2 = e e S + Q1. Do` Q1 = R + S + Q1 = R.(S + Q1) et Q2 = S + R + Q2 = u S.(R + Q2).

http://fribok.blogspot.com/

194

Elments de mmorisation 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.S.R + S.R R.(Q1.S + S) R.(Q1 + S) Q2.S.R + S.R S.(Q2.R + R) S.(Q2 + R)

R S Q1

Q2 temps Fig. 9.2 Chronogramme du comportement logique idal dune bascule RS. Les poine tills reprsentent les instants de changement de Q1 et Q2. e e

e On remarque que si R.S = 1, Q1 = Q2 ce qui justie le schma logique de la gure 9.1-c. En revanche, dans le cas o` R et S valent 1, les sorties Q1 et u Q2 ne sont pas complmentaires. e Le chronogramme de la gure 9.2 montre le comportement temporel logique de la bascule RS. Avec la bascule RS ` portes NOR, la remise ` 0 est prioritaire sur la mise a a a a ` 1 : en eet, Q = R.(Q + S). Donc, si R vaut 1, la sortie Q passe ` 0. Sinon, la sortie est conditionne ` la valeur de S : si S vaut 1, la sortie Q vaut 1 sinon e a 0. La bascule RS peut tre aussi ralise avec des portes NAND. Les entres e e e e de commande sont actives ` 0 (lorsque R=S=1, la nouvelle valeur est gale ` a e a lancienne, si R vaut 0 et S vaut 1, Q passe ` 0, si R vaut 1 et S vaut 0, Q a passe ` 1) et la mise ` 1 est prioritaire sur la mise ` 0. a a a La table dvolution de la bascule et sa dnition quationnelle sont alors : e e e S 1 1 0 0 R 1 0 1 0 Q Q 0 1 1 Q Q 1 0 1 Q Q = R.Q.S = R.Q + S = S.Q.R = S.Q + R

http://fribok.blogspot.com/

1. Points de mmorisation de bits : bascules et registres e

195

1.1.2

Verrou

Un verrou (Cf. Figure 9.4) poss`de une entre de donne D (pour Data), e e e qui est la valeur ` mmoriser, et une entre de commande En (pour Enable). a e e Lorsque lentre En est active (En=1), le verrou est dit transparent et sa sortie e Q est gale ` la valeur de lentre D apr`s un petit dlai appel temps de e a e e e e traverse du verrou. Lorsque En est ` 0, le montage est quivalent ` un bistable. e a e a La sortie Q est ge et sa valeur est celle de lentre D au moment du front e e descendant de En. La dnition quationnelle du verrou D est : Q = En.D + e e En. Q. Le chronogramme de la gure 9.3 illustre ce comportement. Le verrou peut tre ralis de plusieurs faons, par exemple ` partir dun bise e e c a table en intercalant un multiplexeur entre les deux inverseurs (Cf. Figure 9.4a a). Lquation dduite de la gure est : Q = En.D + En.Q. On retrouve l` e e lquation du verrou en notant que Q=Q. e Un autre montage peut tre envisag en rebouclant directement la sortie e e du multiplexeur sur son entre. En eet, la ralisation dun multiplexeur dee e mande lutilisation de portes, induisant ainsi un dlai de commutation lorse quon eectue le rebouclage de la sortie sur lentre. Il est donc possible e de ne pas intercaler dinverseurs (en nombre pair) entre la sortie du multiplexeur et lentre. Dans la gure 9.4-d, on montre une ralisation de vere e rou ` partir dun multiplexeur, lui-mme ralis ` partir de portes NAND. a e e e a Remarquons que nous retrouvons cette ralisation ` partir de lquation : e a e Q = En.D + En.Q = En.D.En.Q. Nous proposons une derni`re ralisation dun verrou ` partir dune bascule e e a RS. Nous lobtenons en transformant lquation prcdente : e e e Q = En.D.En.Q = (En + D)(En + Q) = D.En + Q.(En + D) = En.D + Q.En.D = En.D.(Q + En.D) En rapprochant cette quation de celle de la bascule RS ` portes NOR : e a Q = R.(Q + S), avec R = En.D et S = En.D, on obtient la ralisation e donne dans la gure 9.4-b. Notons que, par construction, ce montage interdit e R = S = 1.

1.2

Points de mmorisation pour les circuits e squentiels : bascule ma e tre-esclave, bascule sensible au front

Nous avons dit prcdemment que nous souhaitions raliser des fonctions de e e e mmorisation permettant des aectations de la forme x f(x, e) en nous lie mitant aux syst`mes synchrones o` la progression des valeurs de x est cadence e u e par un signal (gnralement priodique) appel horloge. e e e e

http://fribok.blogspot.com/

196

Elments de mmorisation e e

En D Q temps

Fig. 9.3 Chronogramme du comportement logique dun verrou

D En 10 D (a) En D D En Q Q En (b)

R S

Q Q

(c)

(d)

Fig. 9.4 Trois ralisations dun verrou de type D et son symbole logique. a) ralisation e e dun verrou ` partir dun bistable et dun multiplexeur, b) ralisation dun a e verrou ` partir dune bascule RS, c) symbole logique dun verrou, d) ralisation a e dun verrou ` partir dun multiplexeur seul (en gris est reprsent lintrieur a e e e du multiplexeur).

http://fribok.blogspot.com/

1. Points de mmorisation de bits : bascules et registres e

197

Un verrou ne convient pas pour ce genre de ralisation car il ne permet pas e de commander les instants o` la mmorisation a lieu. Dans ce paragraphe, nous u e prcisons pourquoi le verrou ne convient pas et nous montrons des solutions e pour rsoudre le probl`me. e e 1.2.1 Probl`me de rebouclage du verrou e

Etudions le circuit dont lquation est x=x.e, ralis avec un verrou, dont e e e lentre dactivation est connecte au signal priodique En (par exemple lhore e e loge) et lentre D est relie ` la sortie dune porte NAND ` deux entres. e e a a e Cette porte NAND a pour entre e et la sortie Q du verrou. Nous avons les e quations suivantes : e Q = En.D + En.Q D = e.Q

Pendant que En est ` 1, si lentre e vaut 1, on a Q=D et D=Q. Si En a e reste ` 1 pendant un temps suprieur au temps de traverse de la porte NAND, a e e la sortie Q et lentre D peuvent passer successivement de 1 ` 0 un nombre e a indtermin de fois et donc fournir un rsultat incohrent. e e e e Illustrons ce comportement incohrent dans un circuit rel eectuant un e e calcul sur des nombres cods sur n bits. Supposons que lon veuille raliser e e x x + e avec x et e entiers (Cf. Figure 9.5-a). Nous tudierons de faon e c systmatique ces fonctions au chapitre 10. On veut que lhorloge H, connecte ` e e a lentre En des verrous, cadence les volutions de x aux instants i0 , i1 , i2 , i3 , i4 , e e . . .Notons x0 , x1 , x2 , x3 et x4 les valeurs successives de x. Les ls dentre e, eux, e changent nimporte quand par rapport aux instants xs par H. Dapr`s les e e valeurs de e observes aux instants i1 , i2 , i3 et i4 (Cf. Figure 9.5-b), les valeurs e de x ` ces mmes instants sont respectivement : x1 = x0 + 1, x2 = x1 + 1, a e x3 = x2 + 3 et x4 = x3 + 7. Observons le bit de poids faible de x mmoris dans le verrou dentre D0 e e e et de sortie Q0. Il change ` chaque addition puisquon ajoute des nombres a impairs ; donc D0 = Q0. Si lhorloge H vaut 0, le verrou est stable, il ne se passe rien. Quand H vaut 1, le verrou est transparent et Q0 suit les variations de D0. Dans le circuit combinatoire qui fabrique D0, D0 = Q0, et donc D0 passe alternativement de 1 ` 0 et de 0 ` 1. (Cf. Figure 9.5-c). a a On ne peut pas contrler combien de fois linverseur inverse pendant que o H est ` 1. Ceci peut donner une valeur quelconque lorsque H repasse ` 0. a a Le verrou ne peut donc pas tre ` la base de ralisation du comportement e a e x f(x, e). Rduire la dure de ltat haut de lhorloge pour liminer le probl`me nest e e e e e pas raliste. La solution consiste alors ` construire une bascule, cest-`-dire un e a a dispositif pour lequel ltat transparent est limit ` un tr`s court instant au e ea e moment du front montant (ou descendant) de lhorloge.

http://fribok.blogspot.com/

198

Elments de mmorisation e e

e ADD x Q0 D0 En x

instants xs 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 xs par H e e (impair) ADD

Qp Dp En H (a) Ralisation de laectation x x + e e x est reprsent sur p boolens e e e mmoriss dans p verrous e e D0 Q0 transparent 1 (c) H=1 : verrou transparent

Fig. 9.5 Probl`me pos par la nature transparente dun verrou e e

1.2.2

Bascule de type ma tre-esclave

Une bascule de type matre-esclave est construite en connectant en srie e deux verrous commands par des signaux complmentaires. Les gures 9.6 e e et 9.7 donnent respectivement le montage et un exemple de chronogramme. Le premier verrou, appel ma e tre, mmorise lentre D lorsque En1, ceste e a `-dire H, est ` 1 : la sortie Q1 suit lentre D (D1=D). Pendant ce temps, la a e valeur mmorise par le second verrou reste stable, puisque En2=0. Lorsque e e H prend la valeur 0, le contenu du premier verrou reste g et est transfr e ee dans le second verrou qui devient actif (En2=1) et mmorise donc la valeur e prcdemment stocke dans le premier verrou. Ainsi, la sortie Q reste stable e e e pendant que le signal H est ` 1 ou pendant que le signal H reste ` 0. La sortie a a Q change lorsque le signal H passe de 1 ` 0. Le temps pendant lequel H est ` a a 1 doit tre suprieur au temps de traverse du verrou. e e e 1.2.3 Bascule D ` front a

Une bascule D ` front a une entre de donne D, une entre dactivation H a e e e et une sortie Q. La bascule D ` front montant (respectivement descendant) est a caractrise par le fait que sa sortie Q est stable entre deux fronts montants e e (respectivement descendants) du signal connect sur H, en gnral une horloge. e e e La valeur de la sortie est celle de lentre D au moment du dernier front mone tant (respectivement descendant) de H. Il est donc ncessaire que lentre D e e soit stable pendant le front. Une bascule ` front montant (respectivement desa

http://fribok.blogspot.com/

1. Points de mmorisation de bits : bascules et registres e

199

D1 Q1 En1

D2 Q2 En2

H Fig. 9.6 Bascule de type ma tre-esclave

H D Q1

Fig. 9.7 Chronogramme dcrivant le comportement de la bascule ma e tre-esclave. Avant le premier front montant de H, Q1 est indtermin. e e

R1 H S1 R2 D S2

Q1 Q1 Q2 Q2

R3 S3

Q3 Q3

Q D Q H

Q Q

Fig. 9.8 Une ralisation de la bascule de type D ` front descendant et son symbole e a logique

http://fribok.blogspot.com/

200

Elments de mmorisation e e

cendant) peut tre ralise ` partir de 3 bascules RS NAND (respectivement e e e a NOR). Nous dcrivons le comportement de la bascule ` front descendant. La e a ralisation avec 3 bascules RS ` portes NOR est donne dans la gure 9.8. e a e Il y a deux niveaux de bascules : la bascule en sortie RS3, dont les entres sont pilotes par les sorties des e e bascules RS1 et RS2, et les deux bascules RS1 et RS2, dont les entres sont pilotes par H et D. e e Les quations de la bascule ` front sont : e a S2 Q1 R3 S3 R1 Q3 = = = = = = D S1.(Q1 + R1) Q1 Q2 Q2 S3(Q3 + R3) (1) (3) (5) (7) (9) (11) S1 R2 Q2 Q2 Q3 = = = = = H H + Q1 R2(Q2 + S2) S2(Q2 + R2) R3(Q3 + S3) (2) (4) (6) (8) (10)

Nous allons montrer que la sortie ne change pas entre deux fronts descendants de H. Nous faisons lhypoth`se que D reste stable pendant que H passe de 1 ` 0. e a Considrons ltat initial H=1, qui prc`de le front descendant de H. En e e e e appliquant les quations, nous obtenons les rsultats partiels suivants : S1 = e e 1, Q1 = 0, R2 = 1, R3 =0 , Q2 = 0, S3 =0 . Donc, la bascule RS3 ne change pas dtat et la sortie Q3 est stable. e Supposons qu` ltat initial, on ait en plus D=0. Il en rsulte que S2=0, a e e Q2=1, R1=1. Lors du passage de H ` 0, nous obtenons S1=0 dapr`s (2). a e u Puisque R1=1 dapr`s (3), nous obtenons Q1=1. Do` R3=1 . Par ailleurs, e le fait que R2=1 entra Q2=0 dapr`s (4), et donc S3=0 . La sortie de la ne e bascule Q3 est 0. Ensuite, tant que H reste ` 0, Q1 = 1 et R2=1. Il sensuit a que R3=1 et S3=0 . La sortie reste ` 0. Lorsque H repasse ` 1, Q1=0 dapr`s a a e (2) et (3), et R2=1 dapr`s (4). Donc R3 passe ` 0 et S3 reste ` 0 : la sortie e a a reste inchange. e Si ` ltat initial D=1, alors S2=1, Q2=0, R1=0. Nous obtenons Q1 = 0. a e Comme R2=0 et S2=1, Q2=1. La bascule RS3 est force ` 1. Par un raisone a nement analogue au cas o` D=0 ` ltat initial, la sortie Q3 reste stable. u a e Nous avons montr que, si lentre D reste stable pendant que H passe de e e 1 ` 0, la sortie Q3 reste stable jusquau front descendant suivant. a Le chronogramme de la gure 9.9 montre lvolution de la sortie Q de la e bascule ` front descendant en fonction de lentre D. a e Du point de vue de la ralisation, en technologie CMOS, la bascule ` front e a utilise autant de transistors quune bascule ma tre-esclave cest-`-dire deux fois a plus quun verrou.

http://fribok.blogspot.com/

1. Points de mmorisation de bits : bascules et registres e

201

H D Q

Fig. 9.9 Chronogramme dcrivant le comportement de la bascule ` front descendant e a

1.2.4

Un exemple de circuit utilisant des bascules ` front : a le dtecteur de passage e

Le dtecteur de passage, ncessaire lorque lon veut reprer le passage dun e e e signal de 1 ` 0, est un montage squentiel qui chappe aux techniques de a e e ralisation systmatique que nous tudions au chapitre 10. e e e La gure 9.10 dcrit un dispositif permettant la dtection dun passage. e e La sortie Q1 prend la valeur de lentre e aux fronts descendants de H et e la sortie Q2 recopie Q1 aux fronts montants de H. Q1 est stable entre deux fronts descendants. La sortie Q2 prend ainsi la valeur de la sortie Q1 avec une demi-priode de retard. e Supposons que les deux bascules soient initialement ` 0. Si lentre e passe a e a ` 1, Q1 et S passent ` 1. Apr`s une demi-priode, Q2 passe ` son tour ` 1 et a e e a a S passe ` 0. On obtient une impulsion de S dune demi-priode apr`s chaque a e e transition de 0 ` 1 de lentre. a e

1.3

Autres commandes associes ` une bascule e a

Pour certains circuits complexes, il est indispensable dintroduire une nouvelle entre dite de commande de chargement sur les bascules. Lensemble des e bascules a lentre dhorloge connecte ` lentre dhorloge du circuit et des e e a e groupes de bascules peuvent avoir lentre de chargement en commun. e En interne, le signal dhorloge est lentre dhorloge de la bascule (H) et e le signal de chargement (Ch) commande un multiplexeur (Cf. Figure 9.11). Notons que dans certaines documentations lentre de chargement est appele e e enable ce qui peut entra ner une certaine confusion avec le verrou. On peut ajouter dautres signaux, par exemple, pour linitialisation Preset (ou Set) et Clear (ou Reset) forcent respectivement la valeur de la bascule ` 1 et a a ` 0. Dans le chapitre 10, on fera gurer sur les bascules les entres de commande e et dinitialisation. Selon la structure interne de la bascule, ces entres sont e considres soit ` un front (initialisation synchrone), soit d`s quelles sont ee a e actives (initialisation asynchrone).

http://fribok.blogspot.com/

202

Elments de mmorisation e e

S e Q1 Q2

H H e Q1 Q2 S

Fig. 9.10 Dtecteur de passage de 0 ` 1 e a

D Ch

0 1

D H

D Ch H

H Fig. 9.11 Une ralisation dune bascule avec commande de chargement et son symbole e logique

http://fribok.blogspot.com/

2. La mmoire : organisation matricielle des points de mmorisation e e

203

1.4

Notion de registre

Un verrou ` n bits permet de stocker des informations codes sur plus dun a e bit. On lobtient par simple juxtaposition de verrous lmentaires commands ee e par le mme signal de chargement. e Sur le mme principe, en utilisant des bascules D, on obtient un registre ` e a n bits. La nappe des n boolens peut tre interprte comme un vecteur de bits e e ee mais aussi comme un nombre, un caract`re, etc. (Cf. Chapitre 3). e
Dans les chapitres 11 et 14, nous verrons lutilisation de tels registres dans la ralisation des parties opratives. Dans la suite et en particulier dans ces e e chapitres, nous considrons systmatiquement des registres fabriqus ` partir e e e a de bascules ` front et le plus souvent avec une commande de chargement. a

2.

La mmoire : organisation matricielle des e points de mmorisation e

Tout ordinateur est dot de mmoires plus ou moins grandes ` acc`s plus e e a e ou moins rapide. Ce paragraphe prsente la mmoire du point de vue externe, e e celui de lutilisateur. Nous expliquons ce que sont un mot mmoire et un acc`s e e mmoire, et nous donnons une ide des dirents types de mmoire. e e e e

2.1

Notion de mmoire dans un ordinateur e

Une mmoire est lorganisation dun ensemble de points de mmorisation e e lmentaires en matrice ` p lignes et n colonnes. On peut ainsi voir la mmoire ee a e comme lassemblage de n p bits. Mais on lutilise comme un tableau de p lments de taille n auxquels on acc`de par indice. Une ligne est appele mot ee e e de la mmoire et on parle dune mmoire de p mots de n bits. e e A chaque mot, cest-`-dire ` lensemble des n points de mmorisation a a e lmentaire qui le composent, est associ un l dit de slection du mot. La ee e e slection dun mot consiste ainsi ` mettre ` 1 le l de slection associ. e a a e e Linterface de la mmoire est compose de p ls de slection S0 , ..., Sp1 . e e e Lors dun acc`s un seul des S0 , ..., Sp1 doit valoir 1. De plus, un l permet de e prciser si lacc`s souhait est une lecture ou une criture. Le signal spciant e e e e e a le sens de lacc`s est not l/e (r/w en version anglaise) ; sil est ` 1 il sagit e e dune lecture (read) et sil est ` 0 cest une criture (write). Une telle notation a e a dj` t vue au chapitre 8 pour le signal Add/Sub. eaee Habituellement, le mot auquel le processeur acc`de est dsign par un e e e m numro (compris entre 0 et p 1) appel adresse. Si p = 2 , ladresse est e e code sur m bits (Am1 , ..., A0 ) et un dcodeur associ ` la mmoire ralise e e e a e e la fonction de calcul de lunique l de slection valant 1 ; ainsi, si les m bits e dadresse Am1 , ..., A0 codent lentier i (0 i 2m 1), le l de slection de e numro i vaut 1 et tous les autres valent 0. e

http://fribok.blogspot.com/

204

Elments de mmorisation e e

Adresses A0 Dcodeur e

S0

bit n-1 mot 0 mot 1

bit 0 Cellule Mmoire e SelMem 0 0 1 1 l/e 0 1 0 1 Opration e pas dacc`s e pas dacc`s e criture e lecture

Am-1 Sp1 mot 2m 1 n Donnes e SelMem l/e FinAcces

Fig. 9.12 Mmoire de 2m mots de n bits et signication des signaux SelMem et l/e. e

De plus, un acc`s ` la mmoire est matrialis par lactivation dun signal e a e e e de slection mmoire que nous notons dans la suite SelMem. e e La gure 9.12 reprsente une mmoire de 2m mots de n bits ainsi que e e lopration ralise selon la valeur des signaux SelMem et l/e. e e e
Remarque : Dans certains processeurs, les signaux de commande de la mmoire sont dnis de faon dirente avec, par exemple, deux signaux lec e e c e et ecr. Lacc`s ` la mmoire en lecture est ralis par la commande : lec ET e a e e e ecr et lacc`s en criture par la commande : lec ET ecr ; lec ET ecr signie e e quil ny a pas dacc`s ` la mmoire, et lec ET ecr na aucun sens (et doit tre e a e e vit). e e

La valeur ` stocker dans la mmoire (cas dune criture) ou ` extraire de a e e a celle-ci (cas dune lecture) est appele la donne (de taille n). e e Le processeur dialogue avec la mmoire via les signaux de contrle SelMem, e o FinAcces et l/e, et via le bus mmoire comprenant les adresses et les donnes. e e On parle de bus dadresses et de bus de donnes. e

2.2

Droulement dun acc`s mmoire par un processeur e e e

Nous considrons ici un ordinateur compos dun processeur et dune e e mmoire vive, avec les hypoth`ses simplicatrices suivantes : e e 1. Les adresses sont sur m bits et les donnes sur n bits. Les adresses sont e des adresses de mots de n bits et les acc`s mmoire sont limits aux seuls e e e mots de n bits. Le cas gnral permettant lacc`s ` des sous-ensembles du e e e a mot mmoire est tudi dans le chapitre 15. Lacc`s ` des sur-ensembles e e e e a du mot mmoire, en mode rafale, est tudi dans le paragraphe 4.3 du e e e prsent chapitre. e

http://fribok.blogspot.com/

2. La mmoire : organisation matricielle des points de mmorisation e e

205

2. La taille de mmoire physique et la capacit dadressage du processeur e e sont identiques. En gnral, la capacit dadressage du processeur est e e e suprieure ` la taille de la mmoire physique ; une mme adresse risque e a e e alors de correspondre ` plusieurs mots mmoire. Nous tudions cette a e e situation au chapitre 15. Le raccordement des signaux entre processeur et mmoire est tr`s simple : le e e bus de donnes est connect aux entres et sorties des donnes de la mmoire, e e e e e le bus dadresse aux entres de slection de mot. Le bus de donnes est bidie e e rectionnel alors que le bus dadresses est monodirectionnel. Lentre l/e de la e mmoire est relie au signal de mme nom du processeur, et lentre dactie e e e vation de la mmoire SelMem au signal de demande dacc`s ` la mmoire du e e a e processeur AccesMem. La sortie FinAcces est relie au signal du mme nom du e e processeur. 1. Lors dune criture, le processeur 1) ache sur le bus dadresses le numro e e de lemplacement mmoire auquel il acc`de ; 2) ache linformation ` e e a a crire sur le bus de donnes ; 3) met ` 0 le signal l/e ; 4) met ` 1 le signal e e a AccesMem. A lintrieur de la mmoire, le dcodeur dadresses slectionne lemplacee e e e ment correspondant, active le dispositif dcriture et dsactive la sortie e e du circuit de lecture. Pour chaque bit du mot dont la nouvelle valeur di`re de lancienne, le bistable mmoire change dtat. Le dlai maxie e e e mal de commutation dnit le temps dacc`s en criture de la mmoire. e e e e Le signal FinAcces est alors mis. A la n de lcriture, le processeur met e e a ` 0 le signal AccesMem. 2. Dans le cas dune lecture, le processeur 1) ache sur le bus dadresses le numro de lemplacement mmoire auquel il acc`de ; 2) met ` 1 le signal e e e a a l/e ; 3) met ` 1 le signal AccesMem. A lintrieur de la mmoire, le dcodeur dadresse slectionne lemplacee e e e ment correspondant, dsactive le dispositif dcriture et active la sortie du e e circuit de lecture. Apr`s un certain dlai, dont la borne suprieure est le e e e temps dacc`s en lecture, la valeur lue se stabilise sur le bus de donnes. e e Le signal FinAcces est alors mis. A la n de la lecture, le processeur e mmorise la valeur stabilise sur le bus de donnes dans un registre (ou e e e un verrou) interne et met ` 0 le signal AccesMem. a Entre deux cycles dacc`s mmoire, le signal AccesMem vaut 0 et les signaux e e dadresses, de donnes et l/e ne sont pas signicatifs. e Si un acc`s ` la mmoire dure un seul cycle dhorloge du processeur et si e a e le temps de cycle de la mmoire est infrieur ou gal ` ce dernier, on peut e e e a simplier le protocole de communication : la mmoire nmet pas lacquite e tement FinAcces pour signier explicitement la n dun acc`s. Le processeur e demande lacc`s, signal mis sur sa propre horloge, et la lecture ou lcriture e e e sont supposes tre eectives lors du prochain top dhorloge du processeur. e e

http://fribok.blogspot.com/

206

Elments de mmorisation e e

Adresse

A1

A2

AccesMem

l/e T1 T2

Fig. 9.13 Chronogrammes dcrivant lacc`s ` la mmoire. Lintervalle T1 correspond e e a e ` la lecture du mot mmoire dadresse A1 ; lintervalle T2 correspond ` a e a lcriture du mot mmoire dadresse A2. e e

La gure 9.13 montre une volution possible des dirents signaux, donnes e e e et adresses intervenant lors dun acc`s ` la mmoire par le processeur. e a e

2.3

Typologie de mmoires e

On peut donner une premi`re classication de la mmoire en considrant e e e lordre dans lequel le processeur acc`de aux donnes. La plupart des mmoires e e e centrales orent un acc`s alatoire : les donnes peuvent tre lues ou crites e e e e e a ` nimporte quel emplacement (en anglais RAM ou Random Access Memory). Le temps dacc`s ` une valeur est pratiquement indpendant de lemplacement e a e dans lequel elle est stocke. e Les bandes, cartouches et cassettes magntiques sont au contraire dexcele lents exemples de dispositifs ` acc`s squentiel (Cf. Chapitre 19). Pour accder a e e e a ` une donne situe en n de bande, il faut dabord parcourir la totalit de e e e la bande et des donnes qui prc`dent. Le temps dacc`s est proportionnel ` e e e e a lloignement de linformation sur la bande. e Les mmoires peuvent tre classes selon leurs fonctionnalits. Une dise e e e tinction est faite entre ROM (Read Only Memory) et RWM (Read Write Memory). Les premi`res tant accessibles en lecture seule, les secondes en lece e ture et criture. Dans les RWM, les donnes sont mmorises dans des points e e e e mmoires statiques (bascules) ou dynamiques (capacits). Dans la mesure o` e e u un point mmoire dynamique peut tre ralis avec moins de transistors, pour e e e e une mme surface, une mmoire dynamique aura une plus grande capacit de e e e stockage. En revanche, elle devra tre rafra e chie rguli`rement. e e La structure des ROM est gnralement base sur un autre principe : line e e formation est code dans la structure du circuit en ajoutant ou retranchant e des transistors (Cf. Chapitre 7). La structure tant ge, la mmoire ne peut e e e tre modie. De plus, la dconnexion lectrique du dispositif ne modie pas e e e e

http://fribok.blogspot.com/

3. Ralisation des mmoires statiques e e

207

les donnes mmorises. e e e Pour des raisons historiques, le sigle RAM est utilis ` la place de RWM ea (Read Write Memory).

3.
3.1

Ralisation des mmoires statiques e e


Dcomposition de la mmoire globale e e dun ordinateur en bo tiers et barettes

Nous avons prsent la mmoire dun ordinateur comme un tableau de 2m e e e mots de n bits (Cf. Paragraphe 2.). En pratique, on cherche ` minimiser le a nombre de broches. On va construire la mmoire ` laide de plusieurs bo e a tiers pour obtenir la capacit voulue. On peut envisager deux stratgies : e e considrer un bo e tier de capacit une colonne de 2m mots de 1 bit et juxe taposer les bo tiers. Cela donne, par bo tier, un dcodeur ayant m entres e e dadresse, une entre SelMem, une entre l/e et une sortie reprsentant le e e e bit slectionn. Le schma est analogue ` la gure 9.12, en considrant une e e e a e m mmoire de 2 mots de 1 bit. En juxtaposant n bo e tiers, partageant les mmes entres, on obtient une barette de capacit 2m n. e e e intgrer les mots les plus longs possibles jusqu` la taille n. Dans ce cas, nous e a considrons p bo e tiers de 2ki mots de n bits, tels que p 2ki = 2m . Nous i=1 obtenons ainsi une dcomposition de la mmoire en tranches horizontales. e e La premi`re solution est plus souple et peut sadapter ` des processeurs e a de tailles direntes (16, 32 ou 64 bits). De plus, le nombre de broches est e optimis : il y a m broches dadresses et n broches de donnes. Si on ajoute e e m une broche de donne, on passe dune capacit de 2 n ` une capacit de e e a e 2m (n + 1). Si on ajoute une broche dadresse, on passe dune capacit de e m m+1 2 n ` 2 a n. Toutes les mmoires de grande capacit sont organises e e e suivant ce schma. Dans la suite, on assimilera une barette de n bo e tiers de 1 bit ` un bo a tier de n bits.

3.2
3.2.1

Ralisation physique e
Principe dune ralisation avec verrous e

Nous donnons une ralisation interne dun bo e tier mmoire de 2m mots de e 1 bit ` laide de verrous et de portes 3 tats (Cf. Figure 9.14-a). Ce bo a e tier a m + 3 entres qui sont : ladresse du mot (Am1 , ...A0 ), le bit de donne Don, e e tier comporte un dcodeur qui sert ` e a le signal SelMem, et le signal l/e. Le bo slectionner le bon verrou : si Am1 , ...A0 =i, moti =1. A laide du signal l/e, e on slectionne le sens de transfert de la donne : si ce signal est ` 1, alors la e e a valeur sur le l de donne Don est recopie dans la bascule slectionne. Si ce e e e e

http://fribok.blogspot.com/

208

Elments de mmorisation e e

signal est a 0, la porte 3 tats en sortie de bascule slectionne est active et ` e e e e le contenu de la bascule est recopi sur le l de donne Don. e e La ralisation de chaque bit met en jeu 2 sorties pour le dcodeur, 1 verrou, e e 2 portes et, 1 inverseur et une porte 3 tats. e 3.2.2 Cellule de mmoire statique e

La gure 9.14-b montre une autre solution : la cellule mmoire ` bistable e a et forage par court-circuit. c Le processeur slectionne la cellule de numro i en activant le mot de ligne e e (moti ), qui connecte via les deux transistors C1 et B1, les inverseurs aux coe lonnes v et v dnissant la valeur dun bit. En lecture (SelMem vaut 1 et l/e vaut 1), la valeur stocke dans la cellule e (ct gauche du bistable) et son complment (ct droit du bistable) appaoe e oe raissent respectivement sur les colonnes v et v avec une dgradation des sie gnaux logiques. Le comparateur analogique dtecte la colonne sur laquelle la e tension est la plus leve et donne la valeur stocke dans la cellule. Cette valeur e e e est envoye en sortie (Don) de la mmoire via un amplicateur 3 tats activ e e e e par le produit des signaux l/e et SelMem. En criture (SelMem vaut 1 et l/e vaut 0) on impose un zro sur un des e e cts du bistable en reliant une des colonnes v et v ` la masse via un des deux oe a transistors B2 ou C2. Le signal de commande du transistor B2 ou C2 est le produit du signal de slection du bo e tier (SelMem), du signal dcriture (l/e) e et du signal dentre (Don pour B2 (v) et Don pour C2 (v)). e La colonne v est relie ` la masse si C2 est passant, ce qui est le cas lorsque e a Don vaut 0. Pendant ce temps, B2 est bloqu. Si de plus moti est ` 1, le e a transistor C1 est passant et le ct gauche du bistable est forc ` la masse. oe ea Ceci installe un 1 du ct droit. oe e a La colonne v est relie ` la masse si B2 est passant, ce qui est le cas lorsque Don vaut 1. Si de plus moti est ` 1, le transistor B1 est passant et le ct a oe droit du bistable est forc ` la masse. Ceci installe un 1 du ct gauche. ea oe 3.2.3 Organisation de cellules de mmoire en matrice e

On peut qualier une mmoire en fonction de son dbit : cest le nombre de e e mots auxquels on acc`de par seconde. Considrons une mmoire de 220 mots e e e (20 bits dadresse) de 1 bit organise comme nous lavons vu prcdemment. e e e On peut organiser cette mmoire, par exemple, comme une matrice (Cf. Fie gure 9.15) de 2048 (211 ) lignes de 512 (29 ) bits. La mmoire est ainsi constitue e e de lignes, une ligne tant slectionne grce aux 11 bits de poids forts de e e e a ladresse, et un tage de dcodage des informations dune colonne, la colonne e e tant slectionne grce aux 9 bits de poids faibles de ladresse. Le dbit est e e e a e alors amlior puisque pendant le dcodage des colonnes, il est possible de e e e commencer le dcodage dune nouvelle ligne. e

http://fribok.blogspot.com/

3. Ralisation des mmoires statiques e e

209

v (a) (b) moti moti A0 EnD Q motj +Am1 motj EnD Q l/e SelMem C1 B1

v Cellule

Slecteur e

l/e

Don C2 B2

Don SelMem

Fig. 9.14 Deux ralisations de points de mmoire. a) ` partir de verrous et de portes, e e a b) ` partir de bistables (le triangle en gris est un comparateur analogique). a

SelMem Poids forts A19 A9 l/e Slecteurs e Poids faibles A8 A0

Donnes e Fig. 9.15 Matrice de Cellules construite ` partir de bistables a

http://fribok.blogspot.com/

210

Elments de mmorisation e e

Nous verrons dans le paragraphe 4. quune telle organisation permet aussi doptimiser lacc`s ` des donnes appartenant ` une mme colonne. e a e a e

4.

Optimisations et techniques particuli`res e

Il existe divers types de ralisation des mmoires. Nous en prsentons e e e quelques-unes et ` la suite de lobservation du paragraphe 3.2.3, nous montrons a quelques approches permettant damliorer encore le dbit de la mmoire. e e e

4.1

Multiplexage lignes/colonnes

Dans le cas dune organisation de la mmoire telle que nous lavons vue ` e a la gure 9.15, on peut diminuer le nombre de broches de moiti. En eet, il ne e sert ` rien dactiver une colonne avant que la ligne ne soit slectionne. a e e Lide est de rutiliser les broches servant ` la slection des lignes pour e e a e raliser la slection des colonnes. Il convient alors que le nombre de ls soit le e e mme et on fabrique ainsi des matrices carres de cellules. e e Etant donn m/2 broches et une adresse code sur m bits (m tant pair), e e e les m/2 bits de poids forts codent une ligne et les m/2 bits de poids faibles une colonne. Le circuit reoit les m/2 bits de poids forts, qui sont mmoriss c e e et relis au dcodeur des lignes. Puis, pendant ce dcodage, le circuit reoit les e e e c m/2 bits de poids faibles qui sont relis au dcodeur des colonnes. e e Ce circuit est ralis ` partir dune matrice de cellules, en utilisant deux e ea signaux supplmentaires RAS (Row Address Strobe) et CAS (Column Address e Strobe). La ligne (respectivement la colonne) est slectionne au front dese e e a cendant de RAS, i.e. RAS (respectivement CAS). Le temps dacc`s ` une cellule mmoire est la somme du temps de slection dune ligne et du temps e e de slection dune colonne. e

4.2

Mmoires dynamiques e

Les mmoires dynamiques sont organises en matrices tout comme les e e mmoires statiques. Dans une cellule, linformation y est code sous forme de e e charge lectrique stocke dans la capacit grille-source dun transistor MOS. e e e La capacit de la cellule de mmoire dynamique se dcharge lentement et e e e linformation stocke dispara avec le temps. Pour viter cela, chaque ligne e t e est priodiquement lue et rcrite en totalit. Ce processus, connu sous le e ee e nom de rafrachissement, est eectu sur chaque ligne toutes les 2 ` 4 ms. e a Dans une mmoire de 16Mbits (4096 lignes) de 50 ns de temps de cycle, le e rafra chissement reprsente de lordre dun acc`s ligne par microseconde, ce qui e e consomme environ 5% du dbit thorique de la mmoire. La cellule dynamique e e e ne ncessite que deux transistors et un seul signal de colonne. Cela autorise la e construction de mmoires de plus grande capacit. e e

http://fribok.blogspot.com/

4. Optimisations et techniques particuli`res e

211

Par ailleurs, les mmoires dynamiques sont dotes dun registre interne e e de stockage de numro de ligne (adresses de poids fort), ce qui permet e dconomiser la moiti des broches dadresse sur le bo e e tier au prix dun dispositif externe de multiplexage (commun ` tous les bo a tiers). Lacc`s mmoire se droule en deux temps : le numro de ligne est ene e e e voy le premier et stock dans un verrou interne. Le temps de dcodage et e e e ltablissement de la connexion entre la ligne slectionne et les signaux de coe e e lonne est mis ` prot pour transmettre la deuxi`me partie de ladresse (numro a e e de colonne) au bo tier. Notons que dans la salve dacc`s ` direntes colonnes e a e dune mme ligne, ltape de slection et de connexion de la ligne aux colonnes e e e peut tre eectue en une seule fois en dbut de salve. Cette optimisation est e e e applicable a toute suite dacc`s mmoire ` des adresses ne dirant que par les ` e e a e poids faibles, qui correspondent au numro de colonne (Cf. Paragraphe 4.3). e A partir de ce principe, certaines mmoires ont t conues spcialement pour e ee c e la ralisation de cartes vido (Cf. Paragraphe 4.5). e e

4.3

Mode rafale

Le multiplexage ligne/colonne permet dconomiser non seulement des e broches mais aussi du temps : une fois lacc`s ` une ligne ralis, lacc`s ` e a e e e a des colonnes dans cette ligne est rapide. Si lintervalle dadresses auquelles on acc`de appartient ` une mme ligne, e a e on acc`de a la premi`re adresse par lintermdiaire des poids forts, puis on e ` e e acc`de ` chaque colonne. Si on ralise N acc`s conscutifs ` des lments ape a e e e a ee partenant ` la mme ligne, le temps dacc`s total est gal ` : Temps dacc`s a e e e a e ligne + Temps dacc`s colonne * N. e On parle dacc`s en mode rafale. Il existe de nombreuses mani`res de raliser e e e le mode rafale ; nous nen donnons ici que quelques principes. Par exemple, pour le mode dit quartet, la mmoire est dote dun circuit interne qui compte e e e e modulo quatre ; ` chaque impulsion de CAS, le circuit incrmente le numro a de colonne modulo 4 : on acc`de ` quatre informations conscutives. Le mode e a e dit page permet de slectionner nimporte quelle colonne dans une ligne : une e page correspond ` une ligne. a Nous tudions lacc`s mmoire un peu plus prcisment en considrant deux e e e e e e types dinterface entre la mmoire et le processeur : asynchrone et synchrone. e Dans les deux cas, nous nous intressons ` la lecture de 4 donnes de la mme e a e e ligne. Nous ne reprsentons pas le signal de lecture/criture, il est chantillonn e e e e en mme temps que ladresse de colonne par CAS. e Lorsque linterface est asynchrone RAS joue le rle de SelMem et CAS pero met la slection des colonnes auxquelles on acc`de dans la rafale. Considrons e e e les chronogrammes de la gure 9.16. Le signal RAS reste actif durant la slection des colonnes dune ligne. e Soit R-C une adresse compose dun numro de ligne R et dun numro de e e e colonne C. Soient a, b, c et d les mots dadresses R-C1, R-C2, R-C3 et R-C4.

http://fribok.blogspot.com/

212

Elments de mmorisation e e

adresse mode page adresse mode quartet RAS CAS Donne e

r r

c1 c1

c2

c3

c4

Fig. 9.16 Chronogrammes dcrivant lacc`s mmoire en mode rafale, pour une interface e e e asynchrone

adresse mode quartet RAS CAS SelMem Donne e Horloge

c1

Fig. 9.17 Chronogrammes dcrivant lacc`s mmoire en mode rafale, pour une interface e e e synchrone

http://fribok.blogspot.com/

4. Optimisations et techniques particuli`res e

213

W mot b

mot a

Fig. 9.18 Schma interne dune cellule de mmoire ` 2 acc`s simultans e e a e e

En mode page, le processeur envoie le numro de ligne (R), puis celui de la e colonne C1, celui de la colonne C2, celui de la colonne C3 et enn celui de la colonne C4 (C1, C2, C3 et C4 pouvant tre quelconques). e En mode quartet, le processeur envoie seulement le numro de la premi`re e e colonne C1 apr`s celui de la ligne R. On acc`de ` des emplacements conscutifs e e a e et cest le circuit mmoire qui incrmente en interne le numro de colonne : e e e (C4 = C3 + 1, C3 = C2 + 1, C2 = C1 + 1). Avec une interface synchrone (Cf. Figure 9.17), le processeur et la mmoire e sont synchroniss sur la mme horloge. Lacc`s mmoire se droule un peu e e e e e comme dans le mode quartet dcrit prcdemment ` quelques dirences pr`s : e e e a e e il y a un signal SelMem en plus de RAS ; tout est cadenc par une horloge de e bus H, drive de celle du processeur ; la longueur des rafales est dnie en e e e initialisant un registre de commande avant utilisation. Lors de la commande dinitialisation de la mmoire, les nombres de cycles e dhorloge entre RAS et CAS et entre CAS et la stabilisation des donnes sont e dnis en fonction du temps dacc`s de la mmoire (qui est xe), et de la e e e priode dhorloge qui peut varier avec la frquence du bus. Par exemple, ` 33 e e a Mhz, la mmoire sera capable de fonctionner sans cycle dattente entre RAS, e CAS et la stabilisation des donnes. A 66 Mhz, on intercalera un cycle dattente e pour avoir le mme temps dacc`s. e e

4.4

Mmoires ` plusieurs acc`s e a e

Le principe est daccder simultanment ` deux (ou plus dans le cas dacc`s e e a e multiple) emplacements mmoire. On a autant de dcodeurs, de signaux l/e, e e de slection de bo e tiers SelMem et de bus de donnes, que dacc`s. De plus, e e on rajoute un comparateur pour vrier quil ny a pas dacc`s simultans au e e e mme emplacement mmoire en criture. Le schma interne dune cellule dune e e e e telle mmoire est donn gure 9.18. e e Les mmoires ` n acc`s permettent de raliser des bancs de n registres e a e e utiliss par exemple dans la partie oprative du processeur. e e

http://fribok.blogspot.com/

214

Elments de mmorisation e e

4.5

La mmoire vido e e

Le processeur est connect ` de la mmoire et lensemble procese a e seur/mmoire est lui-mme connect ` des priphriques permettant le diae e e a e e logue avec le monde extrieur. Lcran et le clavier dont dispose tout utilisateur e e sont deux priphriques particuliers. Nous dtaillons au chapitre 16 les aspects e e e connexion et synchronisation, et au chapitre 17 les probl`mes poss par la gese e tion de priphriques de plus en plus labors. Nous nous intressons ici ` lun e e e e e a dentre eux, posant des probl`mes de gestion mmoire : lcran graphique. e e e Limage ache par un cran graphique est construite sous la forme dune e e matrice ` deux dimensions indiquant les points (ou pixels) de lcran ` allumer. a e a Chaque lment de cette matrice, stock dans une mmoire appele mmoire ee e e e e dcran, dnit lintensit et la couleur du pixel correspondant de lcran. e e e e Lintrieur du tube cathodique est recouvert dune substance qui met de e e la lumi`re lorsquelle est frappe par un faisceau dlectrons qui balaie la e e e surface de lcran, ligne apr`s ligne. Le contenu de la mmoire dcran est e e e e donc transmis squentiellement au dispositif qui module lintensit du faise e ceau. Limage gnre est par nature fugitive et doit tre rafra e ee e chie (rache) e e priodiquement, cinquante ` cent fois par seconde. e a La mmoire dcran est une partie de la mmoire principale ` laquelle on e e e a acc`de en criture par le processeur pour modier limage ache, et en lecture e e e par le dispositif de rafra chissement de lcran. Dans certains cas, cette mmoire e e dcran nest accessible qu` un processeur spcialis, le processeur graphique. e a e e En utilisant les techniques prsentes dans les paragraphes prcdents, le e e e e dbit de la mmoire resterait insusant. Il faut organiser lacc`s diremment. e e e e Lide consiste ` transfrer un paquet de mmoire important vers le e a e e priphrique et ` lui dlguer le travail consistant ` calculer les pixels ` ae e a ee a a cher ; essentiellement, il sagit de raliser des dcalages sur les donnes fournies e e e au priphrique (le paquet de mmoire transfr). e e e ee On appelle mmoire vido une mmoire optimise au niveau temps dacc`s e e e e e (matrice), et pourvue dun registre interne sur lequel agit un circuit squentiel e permttant deectuer les dcalages ncessaires ` lachage des pixels aux inse e a tants xs par les contraintes du balayage cran. e e

http://fribok.blogspot.com/

Chapitre 10 Circuits squentiels e


Un circuit squentiel poss`de, comme un circuit combinatoire (Cf. Chae e pitre 8), un ensemble dentres et un ensemble de sorties. Un circuit squentiel e e est un circuit dont les valeurs de sortie ` linstant prsent dpendent de la a e e squence des valeurs dentre quil y a reues depuis linstant initial. Il se dise e c tingue ainsi dun circuit combinatoire dans lequel les valeurs de sortie ` linsa tant prsent dpendent seulement des valeurs dentre prsentes ` cet instant e e e e a (apr`s le dlai de stabilisation d ` la traverse des portes logiques). Le circuit e e ua e squentiel poss`de une mmoire lui permettant de stocker des informations sur e e e la succession des valeurs dentre. Ces informations constituent ltat courant e e du circuit squentiel ` un instant donn. e a e Un circuit squentiel comporte ainsi des lments de mmorisation e ee e (Cf. Chapitre 9) dots dune fonction permettant de xer ltat initial. La e e valeur crite dans ces lments de mmorisation est fonction de celle qui y e ee e tait ` linstant prcdent : ltat suivant est une fonction de ltat courant e a e e e e et des valeurs dentre. Des circuits combinatoires permettent de calculer les e sorties du circuit et lvolution de son tat. e e Ce type de circuit permet de raliser un comportement qui peut tre dcrit e e e a ` laide dun automate dtats ni (Cf. Chapitre 5) ou dun algorithme. On e peut parler de machine algorithmique. Le nombre dtats, dentres et de sorties du circuit ` concevoir sont tr`s e e a e variables suivant la complexit de lapplication. Cela dtermine le choix de la e e mthode de conception. On retrouve les deux familles de solution voques au e e e chapitre 8. Dans le cas o` lalgorithme peut tre dcrit de faon simple par un automate u e e c dtats ni le point de dpart de la synth`se est le graphe explicite de lautomate e e e dtats ni. La mthode de conception dpend du type de lautomate, de la e e e biblioth`que de circuits combinatoires disponibles, et du type dlments de e ee mmorisation utiliss ; nous nous limitons ici aux bascules de type D prsentes e e e e au chapitre 9. On est proche ici de la synth`se logique. e Dans le cas plus gnral o` la construction du graphe de lautomate correse e u pondant ` lalgorithme est impossible pour cause de trop grande complexit, a e

http://fribok.blogspot.com/

216

Circuits squentiels e

la conception du circuit se fait selon des procds dirents (Cf. Chapitre 11). e e e On est proche ici de lalgorithmique cble. Deux grands types darchitectures a e (organisations matrielles) des circuits squentiels sont alors employs. e e e Dans lun, la partie qui permet de stocker les variables de lalgorithme et de raliser les calculs sur ces variables (partie oprative) est spare de la e e e e partie commandant lencha nement de ces oprations (partie contrle). Ces e o deux parties sont des circuits squentiels. e Dans lautre type darchitecture, les aspects de contrle et de calcul sont o mlangs. Ce sont les valeurs des variables (les donnes) qui contrlent direce e e o tement lencha nement des oprations sur celles-ci. On parle darchitecture ` e a ots de donnes (Data ow en anglais). Des architectures ` ots de donnes e a e sont illustres par des exemples dans ce chapitre. Le cas particulier des orgae nisation ` pipeline est introduit. a La mthode de synth`se base sur une partie contrle et une partie oprative e e e o e est prsente en dtail au chapitre 11. e e e Ces mthodes de conception de circuits sont aujourdhui automatises grce e e a a ` des outils de CAO de circuits. La ralisation se fait ` partir des spcications e a e des algorithmes dans dirents langages. Le plus courant, VHDL (devenu e un standard) permet de dcrire des spcications de circuits squentiels ` e e e a dirents niveaux : graphes dautomates dtats ni et algorithmes ` base e e a dinstructions de types divers (itratif, conditionnel . . .). e Nous dnissons dans le paragraphe 1. la notion de circuit squentiel en e e prcisant son architecture et en dcrivant son comportement temporel. e e Dans le paragraphe 2. nous tudions en dtail les mthodes de ralisation e e e e de circuits squentiels ` partir du graphe explicite dun automate dtats e a e ni (Cf. Chapitre 5). Nous dtaillons ici deux types de synth`se : cble et e e a e microprogramme. Dans le paragraphe 3. nous dcrivons deux exemples e e de ralisations par ots de donnes de circuits squentiels ` partir dun e e e a algorithme. Nous donnons aussi une ide de la notion de pipeline. e

1.
1.1

Notion de circuit squentiel e


Caractrisation e

Un circuit squentiel mmorise des informations qui lui permettent de ragir e e e a ` une squence dentres. Les sorties ` un instant donn ne dpendent plus e e a e e seulement des entres prsentes ` cet instant, mais aussi de la squence des e e a e entres quil y a reues depuis un instant initial. Pour dnir cet instant initial e c e le circuit comporte une entre particuli`re souvent appele init. e e e Le changement des entres peut tre pris en compte soit ` nimporte quel e e a moment (celui o` lentre change rellement), soit ` des instants dtermins u e e a e e et rguliers dpendant dune entre particuli`re (horloge ou clock ). Dans le e e e e premier cas on parle de circuits squentiels asynchrones, dans le deuxi`me de e e

http://fribok.blogspot.com/

1. Notion de circuit squentiel e

217

circuits squentiels synchrones. La conception de circuits asynchrones, beaue coup plus dlicate, continue dtre aujourdhui utilise pour des applications e e e ayant des contraintes temporelles ou de consommation critiques. Pour des raisons pdagogiques, nous nous limitons dans ce livre ` la conception de circuits e a de type synchrone. Dans le cas synchrone, le circuit a besoin dune entre dnissant les inse e tants successifs de prise en compte des valeurs des entres de donnes. Cest en e e gnral un signal rgulier de priode xe. Le circuit est synchronis sur cette e e e e e horloge : son tat volue vers un nouvel tat sur un des fronts (montant ou e e e descendant) de lhorloge.
Remarque : Dans la suite nous appelons entres les entres de donnes, e e e les autres entres sont dsignes par leur nom spcique (init et clock ). e e e e

Ltat courant de lautomate est mmoris ` laide de bascules sensibles au e e ea front (Cf. Chapitre 9) dont lentre dactivation est lhorloge. Ltat suivant e e dpend de ltat courant et des entres prsentes ` linstant courant. Les sorties e e e e a dpendent soit de ltat courant (mod`le de Moore), soit de ltat courant et e e e e des entres prsentes ` linstant courant (mod`le de Mealy). Les deux mod`les e e a e e sont prsents dans le chapitre 5. e e

1.2

Architecture gnrale e e

La gure 10.1 dcrit larchitecture gnrale du circuit ralisant un automate e e e e dans le cas des deux mod`les de Moore et de Mealy. Cette architecture peut e tre dcompose en 3 blocs aux fonctionnalits distinctes : e e e e Un bloc de bascules permet de mmoriser ltat courant de lautomate. Il e e donne ainsi en sortie la valeur de ltat courant et prend en entre la valeur e e de ltat suivant. Ces bascules sont sensibles au front de lentre particuli`re e e e clock : le passage de ltat courant au suivant est cadenc par cette entre e e e clock. Les bascules peuvent tre initialises ` une valeur donne (tat initial) e e a e e grce ` lentre init. a a e Un bloc permet de calculer la fonction de sortie de lautomate. Si lautomate est de Mealy les sorties dpendent des entres courantes et de ltat courant. e e e Si lautomate est de Moore les sorties ne dpendent que de ltat courant. e e Un bloc permet de calculer la fonction de transition de lautomate : il donne ltat suivant ` partir de ltat courant et des entres courantes. e a e e

1.3
1.3.1

Comportement temporel
Echantillonnage des entres et frquence de lhorloge e e

Pour que lautomate fonctionne correctement il est indispensable que lentre des bascules soit stabilise au moment du front dactivation du sie e gnal clock. Si ce nest pas le cas la valeur de la sortie de ces bascules est indtermine (Cf. Chapitre 9). Deux cas peuvent se prsenter : e e e

http://fribok.blogspot.com/

218

Circuits squentiels e

entres e

entres 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. 10.1 Architecture gnrale dun circuit ralisant un automate dtats ni. e e e e a) Mod`le de Moore ; b) mod`le de Mealy. e e

le syst`me en amont (fournissant les entres) ne conna pas lhorloge, cest e e t le cas par exemple lorque les entres proviennent de capteurs sur un monde e extrieur. Nous avons vu dans le chapitre 9 comment mettre en place un e mcanisme simple pour obtenir un chantillonnage ` partir de lhorloge. e e a le syst`me en amont est dj` synchronis sur la mme horloge que lautoe ea e e mate. Cest le cas par exemple de composants dun mme ordinateur. Les e dirents composants ont en entre la mme horloge. On verra au parae e e graphe 1.3.3 comment raliser la synchronisation entre deux syst`mes de ce e e type. Calcul de ltat suivant (Cf. Figure 10.2) Supposons ici que le front dace tivation des bascules du circuit squentiel soit le front montant de lhorloge. e Soit t-tats le dlai ncessaire ` la stabilisation des circuits combinatoires de e e e a calcul de ltat suivant. Nous avons vu au chapitre 8 que ce dlai nest pas nul. e e Soit i-entres linstant ` partir duquel les entres sont stables. e a e
Remarque : Le temps de stabilisation de la sortie des bascules nest pas nul. On le nglige ici par rapport aux dlais de stabilisation des circuits come e binatoires.

Pour que lautomate puisse voluer ` chaque front montant de lhorloge, e a il faut que le rsultat du calcul du nouvel tat soit stable avant le prochain e e front montant de clock. Le chronogramme de la gure 10.2-a montre cette dpendance. e Etudions le cas simple pour lequel on sait chantillonner les entres sur e e lhorloge, cest-`-dire o` les entres changent toujours sur un front de lhorloge. a u e Dans ce cas i-entres correspond ` un des deux fronts de lhorloge. On peut e a faire deux choix dchantillonnage. e

http://fribok.blogspot.com/

1. Notion de circuit squentiel e

219

Clock Temps i-entres e t-tats e (a) i-entres e t-tats e

Clock

Clock

Temps (b) i-entres e t-tats e

Temps (c)

Fig. 10.2 Chronogrammes dchantillonnage des entres dun automate. a) Temps de e e calcul ; b) chantillonnage sur front descendant ; c) chantillonnage sur front e e montant.

Une premi`re ide est dchantillonner les entres sur le front descendant e e e e de clock. Le circuit arrivant dans un nouvel tat au front montant et les entres e e sur le front descendant, les sorties des circuits combinatoires calculant ltat e suivant ont alors une demi-priode de lhorloge pour se stabiliser. Le chronoe gramme de la gure 10.2-b montre cette dpendance : la demi-priode de clock e e doit tre suprieure ` t-tats pour que les entres des bascules soient stables e e a e e au front montant. Si lon regarde de plus pr`s, il sav`re que lon peut anticiper cet e e chantillonnage et leectuer au mme front que le changement dtat. Au e e e mme instant ltat suivant est mmoris et les entres sont fournies. En eet e e e e e grce au temps de stabilisation des sorties des circuits combinatoires t-tats, a e larrive des nouvelles valeurs des entres nest pas encore rpercute ` lentre e e e e a e des bascules au moment du chargement du nouvel tat. La priode de clock doit e e tre suprieure ` t-tats. Pour une valeur de t-tats maximale donne, on peut e e a e e e ainsi doubler par rapport ` la premi`re solution (Figure 10.2-b) la frquence a e e maximale ` laquelle lautomate peut voluer (si on prend des niveaux haut et a e bas de lhorloge de mme dure). Le chronogramme de la gure 10.2-c montre e e cette volution. e Calcul des sorties (Cf. Figure 10.3) Si la solution adopte est e lchantillonnage des entres sur le front dactivation des bascules, que lon e e soit dans le cas dun automate de Moore ou de Mealy le rsultat est le mme. e e Soit t-sorties le dlai de stabilisation des circuits combinatoires calculant les e sorties. Les signaux de sorties seront stables un temps t-sorties apr`s le front e dactivation des bascules (Cf. Figure 10.3-a). En revanche, dans le cas o` lchantillonnage ne se fait pas sur le front u e dactivation des bascules, les sorties dun automate de Mealy auraient un comportement dirent de celui dun automate de Moore. Dans le cas de Moore, e les sorties ne dpendant que de ltat courant, lchantillonnage des entres ne e e e e change en rien leur calcul. Dans le cas du mod`le de Mealy, les sorties dpendent des entres et de e e e ltat courant. Soit i-entres linstant ` partir duquel les entres sont stables. e e a e

http://fribok.blogspot.com/

220

Circuits squentiels e

Clock

Clock

Temps t-sorties (a) i-entres e t-sorties

Temps (b)

Fig. 10.3 Chronogrammes des sorties dun automate. a) Cas de Moore ; b) cas de Mealy.

Les sorties sont stables un temps t-sorties apr`s i-entres (Cf. Figure 10.3-b). e e Il appara alors des valeurs transitoires sur les sorties pendant des temps non t ngligeables avant leur stabilisation. Ces valeurs transitoires peuvent provoquer e des volutions non voulues pour un syst`me aval (qui utiliserait les sorties ainsi e e produites). 1.3.2 Initialisation

Nous avons vu au chapitre 9 quil existe deux sortes dinitialisation des bascules. Linitialisation asynchrone est eectue d`s la prsence de la valeur e e e dinitialisation sur le signal correspondant. Linitialisation synchrone nest effectue quau moment du front dactivation de lhorloge. e Si linitialisation nest pas eectue au moment du front montant de lhore loge lautomate peut passer dans un tat indtermin si les circuits combie e e natoires de calcul de ltat suivant nont pas le temps de se stabiliser entre e linstant dinitialisation et le prochain front montant de lhorloge. La solution synchrone est donc utilise de prfrence. e ee 1.3.3 Synchronisation de deux ralisations e

On a souvent besoin de raliser deux automates 1 et 2, les sorties de laue tomate 1 tant connectes aux les entres de lautomate 2. Pour les raisons e e e voques prcdemment les horloges de ces deux automates ne peuvent pas e e e e tre indpendantes. Supposons que le front dactivation de lautomate 1 soit e e le front montant et que ses entres soient chantillonnes sur le front montant e e e de son horloge clock1 (Cf. Figure 10.4). Supposons que le front dactivation de lautomate 2 soit aussi le front montant. Le temps de calcul de ses sorties nest pas ngligeable : elles sont stables un temps t-sorties1 apr`s le front dactivation e e de lhorloge clock1. Le front montant de lhorloge de lautomate 2 doit avoir lieu apr`s que ses entres (les sorties de lautomate 1) sont devenues stables et e e que le calcul de son tat suivant sest stabilis (t-tats2). e e e Une premi`re ide consiste ` penser que les fronts dactivation des deux e e a horloges doivent tre dcals du temps de stabilisation ncessaire. e e e e

http://fribok.blogspot.com/

1. Notion de circuit squentiel e

221

Clock1 t-sorties1 t-tats1 e

Clock2 t-tats2 e Fig. 10.4 Chronogrammes de synchronisation de deux automates

Une faon simple pour raliser ce dcalage est de prendre pour clock2 le c e e complment de clock1. Le dcalage est alors dune demi-priode. Pour que les e e e entres des bascules des deux automates soient toujours stables au moment du e front dactivation, la priode minimale P de lhorloge doit alors vrier : e e P/2 > t-sorties1 + t-tats2 pour que ltat de lautomate 2 soit stable au e e moment du front montant de clock2. P > t-tats1 pour que ltat de lautomate 1 soit stable au moment du front e e montant de clock1. Dans ce cas le dcalage de lvolution de ltat des deux automates est e e e dune demi-priode de lhorloge. e Il sav`re que lon peut aussi prendre clock1 gale ` clock2. Les entres des e e a e bascules restent stables si lon respecte les conditions suivantes sur la priode e P de lhorloge : P > t-sorties1 + t-tats2 pour que ltat de lautomate 2 soit stable au e e moment du front montant de clock. P > t-tats1 pour que ltat de lautomate 1 soit stable au moment du front e e montant de clock. Automates en boucle Le cas particulier o` les sorties de lautomate 2 sont u les entres de lautomate 1 est intressant ` tudier. Ce cas de gure se prsente e e ae e souvent et appara en particulier dans la ralisation dalgorithmes complexes t e tudis au chapitre 11. e e Dans le cas o` les deux automates sont de type Mealy, nous obtenons la u conguration de la gure 10.5. Cette architecture peut ne pas arriver dans un tat stable puisque les entres des blocs combinatoires C1 et C2 sont des e e sorties de ces mmes blocs. e Il faut donc que lun des deux automates soit de type Moore. Pour simplier

http://fribok.blogspot.com/

222

Circuits squentiels e

entres1 e

Fonction de sortie C1 Fonction de transition bascules

sorties1

entres2 e

Fonction de sortie C2 Fonction de transition bascules

sorties2

init

clock

init

clock

Fig. 10.5 Cas de deux automates de Mealy en boucle

Clock t-sorties1 t-tats2 e

t-sorties2

t-tats1 e

Fig. 10.6 Chronogramme dcrivant la synchronisation de deux automates en boucle e

supposons que les deux soient de type Moore. Les deux automates peuvent alors voluer ` laide de la mme horloge clock (chronogramme de la gure 10.6). e a e Nous obtenons alors les conditions suivantes sur la priode P de lhorloge : e P > t-sorties1 + t-tats2 pour que ltat de lautomate 2 soit stable au e e moment du front montant de clock. P > t-sorties2 + t-tats1 pour que ltat de lautomate 1 soit stable au e e moment du front montant de clock.

2.

Synth`se des automates dcrits par leur e e graphe

Le point de dpart de cette synth`se est le graphe explicite dun automate e e dtats ni. Nous nous limitons ici aux automates de type : e synchrone (Cf. Chapitre 6) : les instants de changement des entres sont e

http://fribok.blogspot.com/

2. Synth`se des automates dcrits par leur graphe e e

223

connus et synchroniss avec lvolution de lautomate, le signal dhorloge e e permettant deectuer cette synchronisation. Lutilisation de ce type dautomate est largement rpandue. La synth`se en est plus simple et donc dun e e intrt pdagogique important. ee e ractif et dterministe (Cf. Chapitre 5) : dun point de vue matriel, il est e e e obligatoire que le circuit rsultant volue toujours en fonction de ses entres e e e vers un nouvel tat dtermin et unique. e e e En ce qui concerne le choix du type de lautomate Moore ou Mealy, il ny a pas de r`gle prcise. On peut toujours dcrire un automate de Moore quivalent e e e e a ` un automate de Mealy (Cf. Paragraphe 1.1.4, Chapitre 5). Suivant le syst`me e a e ` spcier une des deux formes peut tre plus complexe que lautre en nombre e dtats et de transitions. Cependant pour des raisons de comportement teme porel dans le cas de synchronisation dautomates (Cf. Paragraphe 1.3), le type Moore est en gnral plus utilis. e e e Nous dtaillons dans ce paragraphe la synth`se de deux types darchitece e ture. La premi`re est dite cble car la ralisation des fonctions de sorties e a e e et de transition est faite ` laide de circuits combinatoires. On va cbler les a a portes logiques correspondantes. La ralisation de ces fonctions boolennes est e e eectue suivant les techniques de synth`se de circuits combinatoires tudies e e e e au chapitre 8. Nous donnons ensuite les principes de ralisation dun deuxi`me type dare e chitecture dite microprogramme. Dans ce type de synth`se les fonctions de e e sortie et de transition sont en grande partie ralises ` laide dune mmoire e e a e morte (rom). Ce type de ralisation sinspire des principes de programmation e en langage dassemblage (Cf. Chapitre 12).

2.1

Ralisation cble e a e

Les direntes tapes de ce type de synth`se sont expliques et illustres e e e e e sur un exemple simple. 2.1.1 Un exemple : une commande de feu tricolore

On veut raliser une commande dun feu tricolore ` plaque. Les informations e a dentres sont : voiture-prsente (vp), voiture-absente (va). La sortie est la e e couleur du feu : Vert (V), Orange(O) ou Rouge (R). Le comportement du syst`me est le suivant (automate de Moore de la e gure 10.7). Au dpart le feu est rouge. Si le feu est rouge : si une voiture est e prsente, le feu passe au vert sinon le feu reste rouge. Si le feu est orange le e feu passe au rouge. Si le feu est vert : si une voiture est prsente, le feu reste e au vert ; si une voiture est absente deux fois de suite, le feu passe au orange.
Remarque : Le terme deux fois de suite implique que le temps est dcoup e e en intervalles rguliers. Nous retrouvons ici les entres dun automate syne e

http://fribok.blogspot.com/

224

Circuits squentiels e

R Un va O Quatre vp va V Trois vp V vp

va

Deux va

vp

Fig. 10.7 Automate dcrivant 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. 10.8 Codage des entres, des sorties et des tats du syst`me de commande de feu e e e tricolore.

chrone chantillonnes sur une horloge qui dcoupe le temps de faon rguli`re. e e e c e e deux fois de suite signie alors pendant deux priodes dhorloge successives. e

2.1.2

Choix de llment de mmorisation ee e

Pour pouvoir mmoriser ltat courant de lautomate nous avons ` notre e e a disposition les lments de mmorisation lmentaires prsents au chapitre 9. ee e ee e e Nous ne pouvons pas utiliser de verrous puisque la valeur de ltat suivant e dpend de ltat courant. Nous utilisons donc des bascules de type D sensibles e e au front. Elles comportent un signal dactivation qui force le changement dtat e et un signal dinitialisation (soit ` 1, soit ` 0 suivant le codage de ltat initial). a a e Ce signal dinitialisation est de type synchrone. 2.1.3 Codage des entres et des sorties e

Les lments des vocabulaires dentre et de sortie sont cods en binaire. Les ee e e codes inutiliss dans ce codage correspondent ` des cas de valeur phi-boolenne e a e dans les fonctions de transition et de sortie. Reprenons lexemple. Le vocabulaire dentre {va, vp} est cod ` laide e e a dune variable boolenne e (Figure 10.8-a). Le vocabulaire de sortie {R, O, V} e est cod ` laide de deux variables boolennes s1 et s2 (Figure 10.8-b). Le code ea e s1 = s2 = 1 ne correspond ` aucune sortie. a

http://fribok.blogspot.com/

2. Synth`se des automates dcrits par leur graphe e e

225

2.1.4

Codage des tats e

Ltat tant mmoris dans des bascules, une bascule stockant une infore e e e mation binaire, les direntes valeurs de ltat doivent tre codes en binaire. e e e e Les variables boolennes correspondant ` ce codage sont appeles variables e a e dtats. Dirents types de codage peuvent tre utiliss (Cf. Chapitre 3). Soit e e e e n le nombre dtats, le nombre minimum de bits permettant de raliser le coe e dage est log2 (n). Un tel codage est appel compact. Il permet une ralisation e e avec un nombre minimum de points de mmorisation. Un autre type de coe dage souvent utilis est le codage un parmi n. Ce type de codage entra e ne un nombre maximum de points de mmorisation mais llaboration du circuit e e ralisant lautomate peut se faire dune mani`re spcique que nous prcisons e e e e dans le paragraphe 2.1.6. Lautomate de la gure 10.7 comporte 4 tats. La gure 10.8-c donne un e exemple de codage compact des tats de cet automate ` laide de deux variables e a dtats q1 , q2 . e Le choix du code q1 = 0, q2 = 0 pour ltat initial implique que linitialisae tion des bascules ` laide du signal init est une initialisation ` zro. a a e On peut choisir un autre code pour ltat initial. Dans ce cas les bascules e doivent comporter les deux types dinitialisation (` 0 et ` 1). a a Il est a noter que les fonctions boolennes de sortie et de transition ` e dpendent de ces codages et que le choix du codage inuence fortement les e caractristiques du circuit (par exemple sa complexit en nombre de portes) e e et donc ses performances. Les outils de CAO ralisant cette synth`se prennent e e en compte ces crit`res lors du choix de ces codes. e 2.1.5 Expression algbrique des fonctions de transition et de sortie e

Larchitecture gnrale du circuit (pour un automate de Moore) est donne e e e dans la gure 10.9. Soient (d1 , d2 , . . . dn ) les variables codant ltat suivant, e (q1 , q2 , . . . qn ) les variables codant ltat ` linstant courant, (s1 , s2 , . . . sm ) les e a variables codant les sorties et (e1 , e2 , . . . et ) les variables codant les entres. e Le bloc mmorisant ltat courant de lautomate est compos de n bascules e e e D sensibles au front de lhorloge clock. Chacune a sur son entre D un signal e di et sa sortie Q donne un signal qi . Le circuit combinatoire calculant la fonction de sortie ralise les fonce tions boolennes dnissant la valeur des si . Dans le cas dun automate e e de Moore, si est une fonction boolenne des variables de ltat courant : e e si = fi (q1 , q2 , . . . qn ). Dans le cas dun automate de Mealy nous avons : si = fi (q1 , q2 , . . . qn , e1 , e2 , . . . et ). Le circuit combinatoire calculant ltat suivant ralise les fonctions e e boolennes : di = gi (q1 , q2 , . . . qn , e1 , e2 , . . . et ). e La fonction de transition de lautomate de la gure 10.7 peut tre dcrite e e sous forme de table. En utilisant les codes choisis prcdemment, cette table e e

http://fribok.blogspot.com/

226

Circuits squentiels e

Circuit combinatoire calculant les sorties m s1 ...sm Circuit combinatoire calculant ltat suivant e e1 ...et t QD n ... q1 ...qn init clock n d1 ...dn

Mmorisation de ltat courant e e

Fig. 10.9 La structure dun circuit ralisant un automate de faon cble e c a e

donne les valeurs des variables codant ltat suivant (d1 , d2 ) en fonction des e variables codant ltat courant (q1 , q2 ) et de lentre (e). Ce tableau correspond e e a ` la table de vrit des deux fonctions boolennes d1 , d2 . La gure 10.10 donne e e e ces tables ainsi que celles correspondant aux sorties. La gure 10.11 dcrit le e circuit rsultant ralis ` base de portes NAND et dinverseurs. e e ea 2.1.6 Cas particulier du codage des tats un parmi n e

Ce codage consiste ` coder n tats sur n bits en reprsentant chaque tat par a e e e un bit ; le code dun tat comporte alors un seul bit (parmi n) ` 1. On peut e a procder de la mme faon que prcdemment. Les fonctions de lautomate e e c e e comportent alors beaucoup de phi-boolens puisquil y a un nombre important e de codes inutiliss pour les tats. e e Toutefois on peut obtenir plus simplement une solution quivalente (et e simplie) du circuit en se calquant directement sur le graphe de lautomate. e La gure 10.13 montre la ralisation du circuit de commande de feu tricolore. e Par exemple, la bascule 1, codant ltat 1, est charge avec la valeur 1 si ltat e e e courant est 1 et lentre e ou si ltat courant est 4. De faon plus gnrale, e e c e e pour raliser le circuit on applique les r`gles suivantes : e e

http://fribok.blogspot.com/

2. Synth`se des automates dcrits par leur graphe e e

227

entre 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. 10.10 Tables de dnition des fonctions de transition et de sortie de lautomate e de commande de feu tricolore e s2

s1 Fonctions de sortie d1 d2

DQ DQ

q1 q2 init

clock Fonctions de transition

Fig. 10.11 Synth`se de lautomate de la gure 10.7 ` base de portes NAND et e a de bascules D. Les expressions boolennes correspondantes sont : d1 = e q1 .q2 . + q1 .q2 .e et d2 = q1 .e + q1 .q2 ; s1 = q1 .q2 + q1 .q2 et s2 = q1 .q2 . e

http://fribok.blogspot.com/

228

Circuits squentiels 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. 10.12 Codage 1 parmi n des tats du syst`me de commande de feu tricolore e e

On associe ` chaque tat un point de mmorisation (bascule D ` front). a e e a Un arc sortant de ltat X portant lentre E est ralis par une porte ET e e e e dont les entres sont la sortie de la bascule correspondant ` ltat X et e a e lentre E. Si un arc sort de ltat X pour toute entre du vocabulaire, cette e e e porte E est inutile (comme larc de ltat 4 ` ltat 1 dans lexemple). e a e Pour un ensemble darcs entrants dans un tat Y les direntes sorties des e e portes ET correspondantes sont mises en entre dune porte OU dont la e sortie est relie ` lentre de la bascule correspondant ` ltat Y. Dans le e a e a e cas o` il ny a quun seul arc entrant dans un tat, cette porte OU est u e inutile (comme ` lentre de ltat 3 ou 4). a e e On ralise chaque sortie par une porte OU qui a comme entres les sorties e e des bascules correspondant aux tats o` la sortie vaut 1. e u Linitialisation seectue en initialisant ` 1 la bascule correspondant ` ltat a a e initial et ` 0 les autres bascules. a Au cas par cas une combinaison de portes ET-OU peut tre remplace par e e une combinaison NAND-NAND. Pour lexemple du feu tricolore, nous choisissons de coder ltat ` laide des e a 4 variables q1 , q2 , q3 , q4 (Figure 10.12). Le codage des entres et des sorties e reste inchang. La gure 10.13 montre lautomate et le circuit rsultant. Sur e e la gure la commande dinitalisation nest pas reprsente : la commande init e e initalise la bascule de numro 1 ` 1 et les autres ` 0. e a a

2.2

Ralisation microprogramme e e

Dans ce type de synth`se les fonctions de transition et de sortie sont e ralises ` laide dune mmoire de type ROM. Chaque adresse de cette e e a e mmoire est le code dun tat de lautomate. e e On parle de microprogrammation car on peut utiliser un langage de description textuel du contenu de la ROM comme on le ferait avec le langage dassemblage pour du langage machine. Chaque ligne de la mmoire correse pond ` une micro-instruction du microprogramme. a Ce type de synth`se a beaucoup t utilis pour la ralisation de gros autoe ee e e mates demandant une mise au point importante. Elle permet en eet de modier lautomate par simple reprogrammation dune eprom (Cf. Chapitre 9).

http://fribok.blogspot.com/

2. Synth`se des automates dcrits par leur graphe e e

229

1 e 2 e 3 e 4 s2 s1 e

e
  

D Q1
!

3
  

4 s2

Fig. 10.13 Un circuit ralisant un automate avec un codage un parmi n des tats e e

Elle a t en particulier employe pour la conception de la partie contrle de ee e o certains processeurs cisc comme le 68000. En eet, la partie contrle dun tel o processeur est un automate de plusieurs centaines dtats et de sorties. Elle e est aussi utilise dans des circuits de type automate programmable. e 2.2.1 Architecture gnrale dune ralisation microprogramme e e e e

Cette technique sapplique ` la synth`se dautomates de type Moore. Lara e chitecture gnrale du circuit est donne dans la gure 10.14. e e e Contraintes sur lautomate Pour des raisons lies ` larchitecture utie a lise, des transformations prliminaires de lautomate peuvent tre ncessaires : e e e e chaque tat doit possder au plus deux successeurs. On a vu au paragraphe 2.4 e e du chapitre 5 comment eectuer une telle transformation. Il est ` remarquer a que lajout dtats supplmentaires, sil ne change pas le comportement de e e lautomate dun point de vue fonctionnel, change son comportement temporel. Les codes des tats sont choisis de faon ` ce que : e c a quand un tat x ne poss`de quun tat successeur, le code de celui-ci est e e e soit le code de x plus 1, soit un autre code choisi an de limiter le nombre de codes. quand un tat x poss`de 2 successeurs, le code de lun des 2 est le code de x e e plus 1. Lautre est choisi de mani`re ` minimiser le nombre de codes. Il se e a

http://fribok.blogspot.com/

 

# "

 

# "

 

s1

2 s1

230

Circuits squentiels e

succ [q] +1 q+1 tat-suivant e

sorties[q]

Bascules

ROM

clock init Fonction f de calcul de condition entres e Fig. 10.14 Architecture dune ralisation microprogramme dun automate e e

cond [q] (types de condition)

peut que cela ne soit pas possible, on ajoute alors un tat supplmentaire e e an dobtenir cette conguration. Calcul de ltat suivant Le code de ltat courant est mmoris dans des e e e e bascules et fournit une adresse de la mmoire. e Les primitives de calcul de ltat suivant sont de deux types : une e incrmentation (circuit +1 sur la gure 10.14) ; la donne dans la mmoire e e e du code de ltat suivant, lacc`s ` ce code se faisant ` laide du code de ltat e e a a e courant (adresse dune ligne de la mmoire). e Le fait que chaque tat ait au maximum deux tats successeurs permet de e e limiter la largeur de la mmoire. Quand le code de ltat suivant nest pas le e e code de ltat courant plus 1, son code se trouve dans la mmoire. e e Par ailleurs, il faut pouvoir spcier quelle est la condition permettant de e choisir ltat successeur (dpendant des entres de lautomate) quand il y en e e e a deux. Cette condition est aussi spcie dans la mmoire et correspond ` e e e a certaines sorties de celle-ci. On parle de champ condition. Soit q le code dun tat, soit succ[q] le code de ltat successeur (qui nest e e pas q + 1) contenu dans la mmoire, soit cond[q] la condition ` tester pour e a choisir ltat successeur suivant les entres de lautomate. Larchitecture mie e croprogramme comporte les circuits permettant de dnir le code de ltat e e e suivant comme suit : tat-suivant(q)= si f (cond[q], entres) alors succ[q] sinon q+1. e e Les codes sont choisis de faon ` ce que : c a quand un tat de code q ne poss`de quun tat successeur, cond [q] spcie e e e e soit la condition toujours vraie et tat-suivant(q) = succ[q], soit toujours e

http://fribok.blogspot.com/

2. Synth`se des automates dcrits par leur graphe e e

231

fausse et tat-suivant(q) = q + 1, quelles que soient les entres de lautomate. e e quand un tat q poss`de 2 successeurs, pour traiter les conditions dentres e e e se trouvant sur les transitions de lautomate, un circuit combinatoire dlivre e la valeur de la fonction boolenne f calculant la condition ` tester spcie e a e e dans la mmoire cond[q] ` partir des entres de lautomate. La slection e a e e selon cette condition entre la sortie de lincrmenteur et de la mmoire e e pourra se faire naturellement ` partir dun multiplexeur 2 voies vers 1. a Le calcul de ltat suivant est donc ralis ` laide dune partie de la e e e a mmoire, dun incrmenteur et dautres circuits combinatoires pour le calcul e e de la condition (en gris sur la gure 10.14).

Calcul des sorties Apr`s avoir procd comme prcdemment au codage e e e e e des sorties, pour chaque tat, la valeur de chaque sortie est mmorise une fois e e e pour toute dans la ligne de la mmoire correspondant ` ltat (not sorties[q] e a e e sur la gure 10.14).

Optimisations On a limit ici le nombre dtats successeurs ` 2 pour ne pas e e a augmenter la largeur de la mmoire. Des techniques ont t dveloppes pour e ee e e dnir plusieurs tats dans la mmoire sans trop en augmenter la largeur. Elles e e e consistent par exemple ` ne donner dans la mmoire que les bits qui changent a e pour les adresses successives ` partir dune adresse de base. Ainsi par exemple 2 a bits supplmentaires peuvent sure pour rsoudre les cas o` un tat poss`de 4 e e u e e successeurs. Dautres techniques sont aussi souvent employes pour minimiser e la largeur de la mmoire dpendant des sorties. Par exemple, on peut utiliser e e le champ contenant ltat successeur pour certaines sorties quand celui-ci nest e pas ncessaire. e On peut aussi remarquer que dans le cas tr`s particulier de lexemple de e la commande de feu tricolore, repris ci-dessous, la colonne la plus ` gauche a pourrait tre supprime puisquelle ne comporte que des 0. e e

Microprogrammation Pour spcier le contenu de la mmoire et permettre e e une mise au point aise, les concepteurs dnissent un langage particulier e e dont la syntaxe ressemble ` celle dun langage dassemblage (Cf. Chapitre 12). a Chaque ligne de la ROM est une micro-instruction du microprogramme. On retrouve ainsi des micro-instructions de branchement conditionnel pour les cas o` un tat poss`de deux successeurs. Les micro-instructions permettent u e e aussi de spcier des valeurs spciques pour les sorties. Elles peuvent alors e e faire rfrence, au niveau de la syntaxe, ` des entits extrieures ` lautomate, ee a e e a comme par exemple des registres ou une UAL dans le cas dune partie contrle o dun processeur (Cf. Chapitres 11 et 14).

http://fribok.blogspot.com/

232

Circuits squentiels 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

Fig. 10.15 Architecture dune ralisation microprogramme de lexemple du feu tricoe e lore et1 : et2 : bne be be ba et1 et2, et2, et1, 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. 10.16 Microprogramme de lexemple du feu tricolore

2.2.2

Exemple de la commande de feu tricolore

Chaque tat poss`de au plus deux tats successeurs. Le codage compact e e e choisi prcdemment vrie la condition sur le code des tats successeurs (q+1 e e e e e ou succ[q]). Les direntes conditions ` tester sont : e dans ltat Un ; e dans e a les tats Deux et Trois ; VRAI dans ltat Quatre. e e En utilisant un incrmenteur modulo 4 cette derni`re condition est inutile. e e Un seul bit c sut donc pour spcier dans la ROM quelle est la condition ` e a tester. Nous choisissons c = 1 pour la condition e et c = 0 pour la condition e. Pour les sorties, on choisit le mme codage que prcdemment. La ROM e e e poss`de 4 lignes. Deux bits de la ROM sont donc utiliss pour les sorties, un e e pour le calcul de la condition, deux pour le codage de ltat suivant. La fonction e f permettant de calculer la condition dterminant le choix de ltat suivant est e e ralise ` laide dun multiplexeur 2 voies vers 1 (Cf. Figure 10.15). e e a Linitialisation se fait ` laide du signal init qui initialise les bascules ` 0 a a puisque le code de ltat initial est 00. e Le contenu de la mmoire dans le cas du feu tricolore pourrait tre dcrit e e e par le microprogramme suivant de la gure 10.16. ba et1 est une micro-instruction de branchement inconditionnel ` une a tiquette et1. bne et be sont les micro-instructions de branchement sur les e a e e e conditions e et e. Seules les sorties ` 1 dans un tat sont spcies dans la micro-instruction correspondante.

http://fribok.blogspot.com/

3. Synth`se des circuits squentiels par ots de donnes e e e

233

2.3

Un exemple dtaill : la machine ` caf e e a e

Nous reprenons lexemple de la machine ` caf prsent dans le chapitre 5. a e e e La gure 10.17 rappelle son graphe de Moore. Nous tudions le codage des e entres/sorties du contrleur et la synth`se dun circuit squentiel dapr`s la e o e e e machine squentielle qui dcrit son comportement. e e Exemple E10.1 : Machine ` caf (suite de E5.2, p 105 et E6.3, p 133) a e Nous supposons ici que les entres s1 , s2 et s5 venant des capteurs et que e lentre fs venant de la machine ` caf sont synchronises sur le front dune e a e e horloge clock. Nous allons tudier comment laborer une ralisation cble de e e e a e cet automate. Le vocabulaire dentre de lautomate est {rien, s1 , s2 , s5 , fs }. rien signie : e toutes les autres entres sont fausses. Les combinaisons sur les 4 entres s1 , e e s2 , s5 et fs ntant pas toutes possibles, 3 bits susent pour les coder. Les e codages choisis sont donns dans la gure 10.18. Les 3 codes sur e1 , e2 , e3 non e utiliss correspondent ` des cas qui ne peuvent survenir. e a Dautre part, vues les spcications de lautomate, certaines de ces combie naisons ne peuvent pas survenir dans certains tats. Ainsi on ne peut avoir ni e s1 , ni s2 , ni s5 dans les tats 2F reu et Trop peru. On ne peut avoir fs dans e c c les autres tats. La fonction de transition est phi-boolenne. e e Nous procdons de mme pour les sorties. Le vocabulaire de sorties de e e lautomate tant { CB, RCB, AUCUNE}, trois cas sont possibles. Les sorties e sont codes sur 2 bits (Cf. Figure 10.18). e Il y a 4 tats que nous codons sur deux bits q1 et q2 (Cf. Figure 10.18). e Ltat est mmoris dans des bascules D sensibles au front montant de e e e lhorloge clock. La gure 10.19 donne la table de vrit des deux fonctions de e e transition d1 et d2 . La derni`re ligne rsume tous les autres cas pour lesquels e e les deux fonctions sont ` . a Si lon eectue une minimisation de la forme polynmiale (Cf. Chapitre 2), o on obtient les expressions : d1 = e2 .q1 .q2 +e1 .e2 .q1 +e3 et d2 = e1 .q2 +e1 .e2 .q2 +e3 . Pour les sorties on trouve : sortie1 = q1 .q2 et sortie2 = q1 . De ces quations on peut aisment dduire la ralisation de cet automate e e e e en utilisant 2 bascules D et des portes ou un PLA (Cf. Chapitre 8).

3.

Synth`se des circuits squentiels par ots e e de donnes e

Dans le cas o` la spcication du syst`me ` raliser est donne sous forme u e e a e e dalgorithme manipulant des variables, la modlisation sous forme de graphe e dtats ni devient rapidement impossible. En eet le nombre dtats peut e e devenir tr`s grand. Il est proportionnel au nombre de valeurs possibles des e variables de lalgorithme.

http://fribok.blogspot.com/

234

Circuits squentiels e

s5

AUCUNE Attente Pi`ces e

rien

s2 fs fs rien 2F reus c s1 s5 1F reu c AUCUNE C,B s1 rien

rien R,C,B

Trop peru c s2

Fig. 10.17 Graphe de Moore de lautomate 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,B C,B

sortie1 0 1 0

sortie2 0 1 1

Etats Attentes Pi`ces e 1F reu c 2F reu c Trop peru c

q1 1 1 0 0

q2 1 0 1 0

Fig. 10.18 Codage des entres, des sorties et des tats pour la synth`se de lautomate e e e de contrle de la machine ` caf o a e e1 0 0 0 0 0 1 1 e2 0 0 0 0 0 0 1 e3 0 1 0 1 0 0 0 q1 0 0 0 0 1 1 1 q2 0 0 1 1 0 0 0 d1 0 1 0 1 1 0 0 d2 0 1 1 1 0 1 0

e1 0 0 1 1 0 -

e2 1 0 1 0 1 -

e3 0 0 0 0 0 -

q1 1 1 1 1 1 -

q2 0 1 1 1 1 -

d1 0 1 0 1 0

d2 0 1 0 0 1

Fig. 10.19 Tables de vrit des fonctions de transition de lautomate de contrle de la e e o machine ` caf a e

http://fribok.blogspot.com/

3. Synth`se des circuits squentiels par ots de donnes e e e

235

Par exemple lalgorithme : u 0 ; tant que vrai : u= (u+1) mod 2n avec u reprsent sur n bits peut tre modlis par un automate dtats ni dont le e e e e e e graphe comporterait 2n tats. e Une mthode systmatique permet de raliser le circuit sans passer par la e e e dnition de son graphe dtats. Ltat du circuit squentiel est dni par la e e e e e valeur des variables apparaissant dans lalgorithme. Un registre est alors utilis e pour chacune de ces variables. Chaque calcul apparaissant dans lalgorithme est ralis par les composants combinatoires ncessaires. Lencha e e e nement des calculs se fait au gr du ot des donnes ` travers ces composants. Ainsi lexemple e e a ci-dessus se ralise videmment avec un incrmenteur n bits et un registre n e e e bits. Dans la suite de ce paragraphe, nous illustrons cette mthode sur deux e exemples. Puis nous donnons une ide de la notion de pipeline. e

3.1

Circuit ot de donnes ` une seule variable : e a la suite de Syracuse

Nous nous intressons ici ` ltude dun circuit qui dlivre successivement e a e e les entiers composant une suite particuli`re (dite de Syracuse) dnie par : e e si UN est pair alors UN +1 = UN DIV 2 sinon UN +1 = 3 * UN +1, o` DIV dnote u e la division enti`re. On peut dcrire le calcul de cette suite par lalgorithme : e e
Lexique U 0 : lentier > 0 donn ; U : un entier > 0 e Algorithme U U 0 tantque vrai : si U MODULO 2 = 0 alors U U DIV 2 sinon U 3 * U + 1

Cette suite a la particularit de converger vers les trois valeurs 4, 2, 1 pour e certaines valeurs de U 0. Prenons comme hypoth`se que U est born quelle e e que soit la valeur de U 0. Nous pouvons alors dcrire cet algorithme ` laide e a dun automate dtats ni, mais cela serait fastidieux, lautomate comportant e autant dtats que de valeurs possibles de U . e La gure 10.20 donne larchitecture dun circuit ot de donnes ralisant e e cet algorithme. Comme dans la synth`se cble, ltat est mmoris dans un ensemble de e a e e e e bascules qui contiennent la valeur de U . La boucle principale est ralise autour e e de ce registre puisque U change de valeur ` chaque itration. Une itration a e e est eectue pendant une priode de lhorloge clock activant les bascules du e e registre. Nous sommes obligs de xer une borne suprieure ` U , en xant le e e a nombre de bascules de ce registre ` n. Un circuit combinatoire calcule la valeur a suivante U de U .

http://fribok.blogspot.com/

236

Circuits squentiels e

init

clock

U U0 1

U0 1 0 DQ

x DIV 2 3x+1 n 0 1 U

Fig. 10.20 Calcul de la suite de Syracuse par un circuit ` ot de donnes a e

Laction si . . .alors . . .sinon . . . est ralise en eectuant en parall`le les cale e e culs : U DIV 2 et 3 * U + 1, puis en slectionnant un des deux rsultats ` laide e e a dun multiplexeur. Lvaluation de lexpression de la condition ne demande pas e de calcul puisquelle correspond au bit de poids faible de U (U0 ). Le composant calculant x DIV 2 est ralis par un dcalage vers les poids e e e faibles avec introduction dun 0. Le composant calculant 3 * x + 1 peut se raliser ` laide dun additionneur en observant que 3 * x + 1 = 2 * x + x + 1, e a 2 * x se ralisant ` laide dun dcalage vers les poids forts avec introduction e a e dun 0. Lopration dincrmentation + 1 peut seectuer en forant la retenue e e c entrante de ladditionneur ` 1. a Linitialisation de U ` U 0 peut se faire ` laide dun multiplexeur a a slectionnant lentre du registre mmorisant U , la valeur de U 0 ou de U . e e e Si lentre init est ` 1 le circuit initialise U par U 0, sinon il donne ` U sa e a a prochaine valeur U . La gure 10.21 donne larchitecture de ce circuit sous forme de tranches de 0 ` n-1. Toutes les tranches sont identiques, sauf les tranches 0 et n-1. Chaque a tranche implmente lalgorithme sur 1 bit et contient une bascule mmorisant e e `me bit de U . On retrouve les multiplexeurs de linitialisation (en haut) et de e le i laction si alors sinon en bas. La division et multiplication par 2 se retrouvent dans le dcalage des indices sur lentre de ladditionneur et du multiplexeur e e du bas.

3.2

Circuit ot de donnes ` plusieurs variables : e a la racine carre e

Lalgorithme de la gure 10.22 calcule la partie enti`re de la racine carre e e de lentier naturel x. La premi`re boucle de lalgorithme qui consiste ` calculer la valeur de la e a plus petite puissance de 4 suprieure ` x peut se faire ` laide dun circuit e a a combinatoire. Le lecteur pourra sintresser au probl`me ` titre dexercice sur e e a les circuits combinatoires.

http://fribok.blogspot.com/

3. Synth`se des circuits squentiels par ots de donnes e e e

237

U 0n1

U 0i

U 00 init

D Q Qn2 Qi Q

D Q Q0 Qi1 Add ci Qi c1 Q1

clock

0 Add 1

Add 0

cn1

ci+1

Qn1 Qi+1

Q0 tranche n-1 tranche i tranche 0

Fig. 10.21 Architecture en tranche pour le calcul de la suite de Syracuse par un circuit ` ot de donnes a e

Lexique x : lentier 0 donn e u, z, y, rsultat : des entiers 0 e Algorithme u 1 tantque u x : u 4* u z u ; y x tantque u > 1 : u u DIV 4 z z DIV 2 - u si z y : y y - z z z + 2 * u rsultat z DIV 2 e

Fig. 10.22 Algorithme de calcul de la racine carre [BB83] e

http://fribok.blogspot.com/

238

Circuits squentiels e

rsultat e

U div4

Y u dv 4 div2 moins z div 2 - u

mult2 plus moins test

z + 2*u

y-z si z y tant que u > 1

test1

Fig. 10.23 Calcul de la racine carre par un circuit ` ot de donnes e a e

Nous nous intressons ici ` la deuxi`me boucle de lalgorithme. Le circuit e a e densemble est donn gure 10.23. e Les variables internes u, z et y modies dans cette boucle constituent e ltat de lautomate. Elles sont mmorises dans trois registres U , Z, et Y . La e e e boucle correspond ` la fonction de transition de lautomate. Un passage dans a la boucle correspond ` une transition de lautomate, donc ` une priode de a a e lhorloge activant les registres. Par exemple la fonction de transition, restreinte a ` la partie U de ltat, est N ouvU = si (U 1 = 0) alors U sinon U DIV 4, e o` N ouvU dnote le nouvel tat. u e e On ne sintresse pas ici au dialogue du circuit avec un hypothtique monde e e extrieur. Le rsultat est prsent tout au long du droulement de lalgorithme e e e e mais il nest valide que lorsque U 1. La progression sarrte quand U arrive ` e a la valeur 1. Comme un automate ne sarrte pas, on reproduit ce comportement e en ne faisant plus changer les valeurs de U . La boucle tant que U > 1 est ralise ` laide des 3 multiplexeurs du bas de e e a la gure 10.23, chaque multiplexeur dcidant du changement des variables U ,Z e et Y . Le prdicat (U > 1) a besoin dtre calcul. Pour cela on peut faire une e e e soustraction de 1 ` U . On peut aussi, plus simplement, fabriquer le boolen a e U > 1 ` laide dune simple porte OU sur les tous les bits de U sauf le premier a (composant test1 sur la gure 10.23). Chaque calcul apparaissant dans la boucle est ralis ` laide dun ou plue ea sieurs composants apparaissant dans un tage de la gure 10.23. Le calcul de e

http://fribok.blogspot.com/

3. Synth`se des circuits squentiels par ots de donnes e e e

239

Z DIV 2 U ncessite un soustracteur (composant moins sur la gure). Le e calcul Z + 2 U ncessite un additionneur (composant plus sur la gure). Le e calcul Y Z ncessite un soustracteur (composant moins sur la gure). On e nglige videmment les multiplications ou divisions par une puissance de 2 e e (composants div2, mult2 et div4 sur la gure). Ce sont de simples dcalages. e Le calcul du prdicat Z Y ncessite le calcul de Z Y ou Y Z, on prote e e du calcul de Y Z pour lobtenir ` travers le composant test. La ralisation de a e linstruction si Z Y est eectue ` laide de deux multiplexeurs commands e a e par la sortie du composant test et dcidant du changement des valeurs de Z e et Y par les rsultats des calculs Z + 2 U et Y Z. e

3.3

Notion de pipeline

Le principe de pipeline est une optimisation particuli`re du principe de e ot de donne. Son utilisation est largement rpandue dans la conception des e e microprocesseurs actuels. Le lecteur peut trouver une description plus dtaille e e dans [HP94].
Remarque : Le terme de pipeline est un mot anglais. Il se prononce avec les diphtongues (aI ) /paI plaI n/. Une traduction franaise, oloduc, ligne de c e pipe, nayant quun rapport lointain avec ce dont nous parlons, nous gardons le terme pipeline. On peut le prononcer ` la franaise... On peut aussi risquer a c octoduc. e

Lorganisation sous forme de pipeline dun syst`me squentiel digital sape e plique ` des classes de fonctions particuli`res : il sagit de syst`mes qui dlivrent a e e e un ot de sorties en fonction dun ot dentres, en respectant un cadencement : e e e la N`me sortie est limage de la N`me entre. On peut voir une analogie avec e la le dattente de certaines caftrias ou cantines : les clients arrivent dans ee un certain ordre, prennent ou non entre, dessert, boisson ou plat chaud dans e lordre o` ces plats sont prsents puis payent ; mais lusage est que lon ne se u e e double pas. Par opposition on trouve des organisations de type buet o` chau cun passe dun comptoir ` lautre ` sa guise. Si lon prend peu de plats, on peut a a passer ` la caisse avant un consommateur arriv avant mais qui prend chaque a e plat. Evoquons les avantages et inconvnients des deux formules : attente dans e le pipeline derri`re lindcis qui hsite entre frites et pommes sautes, bouscue e e e lade dans le buet asynchrone. On suppose qu` lentre les consommateurs arrivent ` intervalles constants a e a de dure T. Au premier plat prsent le premier client met moins de T ` choisir. e e e a A linstant T il passe alors au rayon du deuxi`me plat et un deuxi`me client e e prend sa place au premier rayon. A linstant 2*T, le premier client passe au troisi`me rayon, le second client au second rayon et un troisi`me arrive dans e e le premier rayon. Le processus peut continuer. Si un client met plus de T ` a choisir ou sil veut passer au rayon suivant plus vite que T, le syst`me se met e a ` mal fonctionner (Cf. Les Temps Modernes de Charlie Chaplin).

http://fribok.blogspot.com/

240

Circuits squentiels e

Entres e Clock

R1

C1

R2

C2

Sorties

Fig. 10.24 Un circuit ` pipeline ` trois niveaux a a

On a un fonctionnement du mme type dans le syst`me matriel dcrit par e e e e la gure 10.24. A la date 1, un premier item dentre est charg dans le registre e e dentre R1 . Le circuit combinatoire C1 calcule une fonction f1 ` partir de la e a sortie de ce registre. A la date 2, un deuxi`me item dentre est charg dans le registre R1 . Sie e e multanment R2 est charg avec la sortie du circuit C1 . Le circuit combinatoire e e C1 calcule f1 sur la sortie de R1 , C2 calcule f2 sur la sortie de R2 . La simultan e est ncessaire au bon fonctionnement du syst`me. Evidemet e e ment la priode T de lhorloge qui pilote les chargements de tous les registres e doit tre suprieure au maximum des dlais des circuits combinatoires intere e e venant dans le pipeline. L` sarrte lanalogie avec le restaurant self-service o` a e u lon passe au rayon suivant de faon un peu asynchrone (d`s que lon a ni ` c e a un rayon et que le client prcdent a libr la place). e e ee Le temps de rponse unitaire pour chaque traitement est le produit de la e priode par le nombre de tranches dans le pipeline. Il peut tre suprieur ` la e e e a somme des dlais de chacun des circuits, voire tr`s suprieur si le pipeline est e e e mal quilibr. e e

4.

Exercices

E10.2 : Compteur On veut raliser un compteur. Il dlivre en sortie les entiers successifs de 0 e e a ` 7 (sur 3 bits). La sortie sur 3 ls (s2 , s1 , s0 ) est incrmente modulo 8 ` e e a chaque front montant dune entre incr. Linitialisation ` 0 des sorties se fait e a a ` laide du signal init actif ` 1. Donner lautomate de Moore correspondant ` a a ces spcications. Donner une ralisation cble de cet automate. e e a e Comment pourrait-on raliser un circuit quivalent ` laide dun circuit e e a combinatoire calculant une sortie S sur 3 bits gale ` une entre E (sur 3 bits) e a e plus 1 ? Ce circuit a fait lobjet dune tude de cas dans le chapitre 8. e Vriez en dessinant un chronogramme que le circuit de la gure 10.25 a e le mme comportement que les circuits prcdents. e e e E10.3 : Automate reconnaisseur de squence e Donner un codage binaire de trois informations a, b et c et construire une ralisation de lautomate tudi au chapitre 5 reconnaissant le langage rgulier e e e e ab + c.

http://fribok.blogspot.com/

4. Exercices

241

incr clock Q reset s2 s1 D Q reset s0 clock D Q reset clock D init

Fig. 10.25 Circuit ralisant un compteur sur 3 bits e e e s=0 e e s=1 e e s=0

Fig. 10.26 Graphe de Moore de lautomate correspondant au dtecteur de front e

E10.4 : Compteur/dcompteur modulo 10 e Un automate mmorise un entier naturel u de lintervalle [0, 9]. Il a deux entres e e plus, moins. Lvolution de ltat (cest-`-dire de lentier u) est dnie ainsi : e e a e
u 0 ; tant que vrai : si plus alors u (u+1) mod 10 sinon si moins alors u (u-1) mod 10 sinon u u

Donnez une ralisation en portes et bascules de ce compteur/dcompteur e e modulo 10. E10.5 : Dtecteur de front e On veut raliser lautomate du dtecteur de front dcrit dans le chapitre 9, e e e paragraphe 1.2.4. On suppose que lentre e est synchronise sur les fronts e e montants dune horloge clock. La sortie s passe ` 1 apr`s chaque front montant a e de e et au front descendant de clock suivant. Elle doit rester ` 1 jusquau a prochain front montant de clock. Vrier que lautomate de la gure 10.26 correspond ` ces spcications. e a e Faire la synth`se cble de cet automate. Quelle doit tre le signal que lon e a e e doit mettre sur lentre dactivation des bascules de lautomate ? La sortie e s de lautomate reste ` 1 pendant une priode de lhorloge, comment faire a e pour quelle reste ` 1 seulement pendant la demi-priode voulue ? Faire un a e chronogramme pour comprendre.

http://fribok.blogspot.com/

242

Circuits squentiels e

E10.6 : Machine ` laver a On veut raliser un contrleur de machine ` laver. La machine ` laver poss`de 4 e o a a e ls en entre permettant deectuer des commandes sur les lments de la mae ee chine : Lancer-Moteur-vitesse1, Lancer-Moteur-vitesse2, Entre-Eau, Entree e Lessive. La mise sous tension de 5 volts de ces ls correspond ` : a Lancer-Moteur-vitesse1 : active le moteur du tambour de la machine ` une a vitesse lente pendant une dure xe T1 (permettant le lavage) e Lancer-Moteur-vitesse2 : active le moteur du tambour de la machine ` une a vitesse rapide pendant une dure xe T2 (permettant lessorage) e Entre-Eau : permet larrive de leau dans le tambour pendant une dure e e e xe T3 (active une pompe ` eau) a Entre-Lessive : ouvre le conteneur de lessive (pour la mettre dans le tame bour). La machine ` laver poss`de 1 l Fin en sortie indiquant la n dune tche a e a lance par lune des 4 commandes prcdentes. Ce l passe ` 5 Volts lorsque la e e e a tche en cours se termine. Il repasse ` 0 volts lors du lancement dune nouvelle a a commande. Il est ` 0 ` linitialisation. a a On veut raliser le circuit permettant de commander cette machine. Il a e en entre Fin, Init et Dmarrer. Init est la commande dinitialisation ` la mise e e a sous tension. Dmarrer passe ` 5 volts un court instant lorsque lutilisateur e a lance un programme de lavage. Il a en sortie les 4 commandes Lancer-MoteurVitesse1 (LMV1), Lancer-Moteur-Vitesse2 (LMV2), Entre-Eau (EE), Entree e Lessive (EL). On veut orir ` lutilisateur un seul programme de lavage qui correspond a a ` la suite des tapes suivantes : un lavage : entre de leau, de la lessive et e e lancement du tambour ` vitesse lente ; un rinage : entre de leau et lancement a c e du tambour ` vitesse lente ; un essorage : lancement du tambour ` vitesse a a rapide. Pour les tapes ` plusieurs tches, les commandes correspondantes peuvent e a a tre eectues simultanment. Fin passe alors ` 1 ` la n de la tche la e e e a a a plus longue. Donner le graphe de lautomate dtats ni qui correspond au e contrleur de la machine ` laver. Faire une synth`se de cet automate en utio a e lisant des bascules D sensibles au front montant et des portes NAND et inverseurs. Donner le dessin du circuit en faisant appara tre les entres (Init, e Dmarrer, et Fin) et les sorties du circuit (LMV1, LMV2, EE, EL). e On veut maintenant orir ` lutilisateur 2 programmes au choix. Pour cela a on rajoute au contrleur une entre Prog spciant le programme de lavage ` efo e e a fectuer. Si Prog vaut 1 le programme de lavage est celui dni prcdemment, si e e e Prog vaut 0 le programme de lavage correspond seulement aux tapes de lavage e et rinage. Le contrleur poss`de comme prcdemment lentre Dmarrage. c o e e e e e Donner le graphe de lautomate correspondant ` ce nouveau contrleur et en a o raliser une synth`se. e e

http://fribok.blogspot.com/

Chapitre 11 Conception de circuits squentiels par sparation du e e contrle et des oprations o e


Nous avons vu dans le chapitre 10 comment concevoir un circuit squentiel e correspondant ` un automate dtats ni en partant de son graphe explicite. a e Ceci nest faisable que lorsque le graphe de lautomate na pas trop dtats e (une centaine). Au-del` le travail est complexe et fastidieux. Cest en partia culier le cas lors de la ralisation de circuits correspondant ` des algorithmes e a manipulant des variables enti`res. Dans ce cas dautres techniques de concepe tions de circuits existent. Nous avons vu dans le chapitre 10 ` travers deux a exemples une technique appele ot de donnes. Nous nous intressons ici ` e e e a une technique dirente permettant de dcomposer le probl`me (et du coup e e e le circuit correspondant) en deux parties distinctes : une partie contrle et o une partie oprative. La partie oprative est forme dun ensemble de registres e e e et doprateurs permettant de mmoriser les variables de lalgorithme et de e e raliser les oprations apparaissant sur ces variables dans lalgorithme. Par e e contre lencha nement dans le temps des oprations est dcid par la partie e e e contrle. Par rapport au ot de donnes cette technique permet doptimio e ser le nombre doprateurs ncessaires mais souvent au dtriment du temps e e e dexcution. e Nous expliquons dans le paragraphe 1. le principe gnral dune telle are e chitecture. Nous dcrivons dans le paragraphe 2. une partie oprative e e type, utilisable dans la plupart des cas. Nous donnons dans le paragraphe 3. les principes de la partie contrle et tudions sa synchronio e sation temporelle avec la partie oprative. Nous appliquons ensuite ces e principes gnraux ` deux exemples dtaills (paragraphe 4.). e e a e e Nous nous appuyons sur cette technique pour expliquer les principes de conception dun processeur au chapitre 14.

http://fribok.blogspot.com/

244

Conception de circuits squentiels... e

Acquittements Partie contrle o

Ordres

Init Commandes

Comptes-rendus

Horloge Donnes : e

Partie oprative e

Entres e Sorties

Fig. 11.1 Principaux signaux dune architecture PC/PO

1.

Principe gnral e e

La partie oprative (ou PO) ore les ressources (Bus, registres, UAL . . .) e ncessaires ` chaque opration sur les direntes variables apparaissant dans e a e e lalgorithme. Mais ce nest pas elle qui dcide de lopration ` eectuer ` un e e a a instant donn. Elle envoie des signaux de comptes rendus sur ces calculs ` la e a partie contrle. o La partie contrle (ou PC) g`re lencha o e nement des calculs eectus sur e les donnes au vu des comptes rendus de la PO. Elle gn`re lactivation des e e e oprations ` un instant donn, en envoyant des signaux de commandes ` la e a e a partie oprative. Elle ne modie pas directement les donnes. Elle traduit les e e primitives de contrle apparaissant dans lalgorithme. o Les deux parties sont deux circuits squentiels cadencs sur la mme hore e e loge. La gure 11.1 donne lorganisation des signaux entre la PC, la PO et le monde extrieur. Les communications entre les deux parties se font par e les signaux de commande et de compte-rendu. A chaque front (montant par exemple) dhorloge : des valeurs de commandes sont envoyes ` la PO par la PC pour slectionner e a e un calcul donn (par exemple : slection des entres de lUAL, opration e e e e eectue dans lUAL, . . .). e des comptes-rendus du calcul eectu (par exemple les indicateurs e arithmtiques dune UAL) peuvent alors tre renvoys par la PO ` la PC e e e a an de lui permettre de prendre une dcision pour le choix du calcul suivant. e Les connexions au monde extrieur tiennent compte de cette spcialisation : e e la PC ne reoit que des ordres et ne dlivre que des acquittements, signalant c e la n de sa mission, par exemple. la PO ne reoit que des donnes et ne dlivre que des donnes. Les ls c e e e dentres et de sorties peuvent dans certains cas tre les mmes (bus bidie e e rectionnel).

http://fribok.blogspot.com/

2. Notion de partie oprative type e

245

Nous avons vu au chapitre 5 comment obtenir une machine squentielle avec e actions ` partir dun algorithme. Chaque action apparaissant dans la machine a squentielle doit pouvoir tre excute dans la PO. Les actions atomiques, ou e e e e microactions, auxquelles nous nous intressons sont de type Ri Rj op Rk , e Ri entre ou sortie Ri o` op est une opration et Rj un registre. e u e On peut aussi avoir dans la PO type des microactions composes telle que e sortie Rj || Ri Rj op Rk . La partie contrle peut tre dcrite explicio e e tement par le graphe de lautomate dans lequel on remplace les actions par un ensemble de sorties boolennes correspondant aux signaux de commande de la e PO. Les entres de cet automate sont les comptes-rendus des calculs eectus e e dans la PO. Le tableau 11.3 donne la correspondance entre microactions et sorties boolennes. e

2.

Notion de partie oprative type e

Nous donnons Figure 11.2 la structure dune partie oprative type pere mettant une construction mthodique et rpondant ` la plupart des besoins. e e a Cette PO peut tre dans la plupart des cas optimise en termes de nombre de e e ressources (registres, bus, oprateurs) ou en termes de temps dexcution. Ces e e crit`res sont souvent incompatibles. e Une partie oprative comprend des registres, un oprateur appel UAL e e e (Unit Arithmtique et Logique) et des bus. e e
Remarque : Il est intressant de noter quune partie oprative peut tre e e e dcrite comme un automate dtats ni. Ses entres sont les donnes entrantes, e e e e les commandes de chargement et dinitialisation des registres, les commandes dopration. Son tat est compos des valeurs contenues dans les dirents e e e e registres. Ses sorties sont les donnes sortantes et les comptes-rendus ` dese a tination de la PC. Une utilisation systmatique de cette description est faite e dans lexercice E14.4 du chapitre 14.

2.1

Registres et commandes de chargement

Les registres contiennent les valeurs des variables apparaissant dans lalgorithme. Un registre est un ensemble de bascules de mme type partageant e les mmes commandes dactivation et dinitialisation (Cf. Chapitre 9, parae graphes 1.3 et 1.4). Les primitives matrielles sur un registre permettent dy e forcer une valeur prsente sur la nappe de ls en entre. Ceci est fait en connece e tant lhorloge gnrale du circuit ` lentre dhorloge des bascules et en connece e a e tant lentre Enable des bascules ` un signal de commande nomm signal de e a e chargement de ce registre. Sur la gure 11.2 chaque registre (Ri , i = 1, ..., n) est connect ` lhorloge ea gnrale et au signal de chargement not ChRi. Ces signaux de chargement font e e e partie des commandes envoyes par la PC. e

http://fribok.blogspot.com/

246

Conception de circuits squentiels... e

Sorties SelSorties Bus A ChR1 SelBusAR1 R1 SelBusBR1 horloge Bus B Bus Rsultat e SelEntres e Entres e Fig. 11.2 Une partie oprative type e ComptesRendus Rn SelUAL UAL Opration UAL e

microactions Ri Rj op Rk

Ri entre e

sortie Ri

commandes pendant le coup dhorloge ChRi = 1 ; ChRi (i=i ) = 0 ; SelBusARj = 1 ; SelBusARj (j=j ) = 0 ; SelBusBRk = 1 ; SelBusBRk (k=k ) = 0 ; SelUAL = 1 ; SelEntres = 0 ; SelSorties = 0 ; e commandes UAL pour lopration op e ChRi = 1 ; ChRi (i=i ) = 0 ; SelBusARj = ; SelBusBRk = ; SelUAL = 0 ; SelEntres = 1 ; SelSorties = 0 ; e commandes UAL = ChRi = 0 ; SelBusARi = 1 ; SelBusBRk = ; SelUAL = 0 ; SelEntres = 0 ; SelSorties = 1 ; e commandes UAL =

Fig. 11.3 Sorties correspondant aux microactions pour la P.O type de la gure 11.2

http://fribok.blogspot.com/

2. Notion de partie oprative type e

247

La sortie de chaque registre est connecte aux deux entres de lUAL mais e e une de ces deux connexions peut tre inutile et donc supprime. Il peut tre e e e intressant dinitialiser les registres ` laide du signal dinitialisation (` 1 ou ` e a a a 0) des bascules plutt que dobtenir des valeurs initiales via le bus Entres. o e

2.2

Oprateur et commande dopration e e

La ralisation de loprateur (ou UAL) suppose didentier la liste des e e oprations ncessaires ` lexcution de lalgorithme. Loprateur est un circuit e e a e e combinatoire susceptible de raliser ces direntes oprations selon des signaux e e e de commande (OprationUAL sur la gure 11.2). Si loprateur doit eectuer p e e oprations direntes, il est command par log2 (p) ls de commande. En plus e e e du rsultat de lopration proprement dit, des sorties de loprateur peuvent e e e tre de type indicateurs arithmtiques, ressemblant aux classiques Z, N, C et V e e des mots dtat de processeurs (Cf. Chapitre 12). Rien nempche den utiliser e e dautres si lexpression de lalgorithme utilise des primitives de test direntes. e Ces sorties de loprateur forment les signaux de compte-rendu de la PO vers e la PC (ComptesRendus sur la gure 11.2). Il y a dans ce travail de conception dun oprateur un aspect tout ` fait e a particulier. Lexpression dun algorithme se fait ` base de primitives supposes a e donnes ; ici le concepteur de machine algorithmique a le choix des primitives : e ce sont celles ralisables par un circuit ` un cot convenable. On peut par e a u exemple dcider dutiliser un multiplieur combinatoire de nombres cods en e e virgule ottante sur 64 bits dans une machine algorithmique si on en a besoin. Cela permet de considrer la multiplication de rels comme une primitive. Si e e lon ne veut pas utiliser un tel circuit, mais seulement un additionneur 8 bits, il faudra exprimer lalgorithme en nutilisant que des additions de nombres cods sur 8 bits. e On peut utiliser plusieurs oprateurs eectuant chacun une opration e e donne an de pouvoir parallliser certaines oprations et donc diminuer le e e e temps dexcution de lalgorithme. Toutefois ce genre doptimisation augmente e le nombre de connexions et doprateurs ncessaires. Si on le pousse ` lextrme, e e a e on retombe sur la solution ot de donnes prsente au paragraphe 3. du chae e e pitre 10.

2.3

Liaisons, bus et multiplexeurs, commandes de slection e

Les liaisons entre les registres et loprateur se font par des liaisons nommes e e bus. Deux bus oprandes (A et B) permettent damener aux deux entres de e e lUAL le contenu dun des registres. Les signaux SelBusARi et SelBusBRi permettent deectuer cette slection. Un bus Rsultat permet damener ` lentre e e a e des n registres le rsultat du calcul. Les signaux ChRi permettent deectuer e le chargement du registre souhait. e

http://fribok.blogspot.com/

248

Conception de circuits squentiels... e

C1 C 2 D1 D2 D3 D4 S1 D1 BUS

C1

C2

Dcodeur e D2 D3 D4

S2

S3

S4

(a)

(b)

BUS

Fig. 11.4 Liaisons de 4 registres ` un bus. a) ` base de multiplexeurs ; b) ` base de a a a portes trois tats. e

La liaison des registres ` chaque bus est ralise soit ` laide de multia e e a plexeurs, soit ` laide de portes trois tats entre les sorties des registres et a e le bus. Elle ncessite des signaux de commande permettant de dterminer ce e e choix. La gure 11.4 montre la ralisation dun bus supportant 4 entres D1 , e e D2 , D3 et D4 (qui sont par exemple les sorties de 4 registres) ` laide de deux a signaux de commande C1 et C2 . Dans le cas dune ralisation ` base de portes e a trois tats, le bus obtenu est ` double sens (contrairement ` lautre cas). Cela e a a peut tre indispensable dans le cas dentres/sorties avec lextrieur. Cette e e e solution est la plus souvent utilise. e Sur la gure 11.2, cest la solution ` base de portes trois tats qui a t a e ee choisie. Le dcodeur dlivrant les signaux Si (dans la gure 11.4) nappara e e t pas sur la gure 11.2. Ces signaux de slections (Si ) peuvent tre directement e e dlivrs dans chaque tat de la PC. Une autre solution consiste a raliser le e e e e dcodeur dans la PC ; le nombre de ls de commande entre la PC et la PO est e alors fortement augment. e On peut diminuer le nombre de connexions en diminuant le nombre de bus au dtriment du temps dexcution de lalgorithme. On peut placer par e e exemple un registre tampon supplmentaire en sortie de lUAL et connecter ce e registre ` un bus qui servira en mme temps de bus rsultat et de bus oprande. a e e e

2.4

Entres/Sorties e

Le bus Entres permet de charger des valeurs depuis lextrieur dans les e e registres. Les signaux SelEntres et ChRi du registre concern doivent alors e e tre actifs et la valeur initiale prsente sur le bus Entres. e e e Le bus Sorties permet de dlivrer ` lextrieur les rsultats de lalgorithme. e a e e Il est donc connect ` un des deux bus de sorties des registres de la PO. La ea porte trois tats active par SelSorties nest pas toujours ncessaire. e e e

http://fribok.blogspot.com/

3. Partie contrle o

249

Dans certains cas, il peut tre intressant de possder plusieurs nappes de e e e ls de sorties. Dans ces cas-l` les sorties de certains registres peuvent tre, par a e exemple, directement des sorties du circuit. Dans dautres cas les entres et les sorties peuvent tre multiplexes sur les e e e mmes ls. On peut alors relier les bus Entres et Sorties grce ` la prsence e e a a e de la porte trois tats commande par SelSorties sur la gure 11.2. e e

2.5

Relations entre microactions et commandes

On peut rcapituler (Cf. Figure 11.3) lensemble des commandes ncessaires e e a ` lexcution des 3 types de microactions sur la base dune partie oprative e e comme celle de la gure 11.2. On verra dans la suite des primitives dentres/sorties plus riches permettant un protocole de poigne de mains. e e

2.6

Synchronisation du calcul et de laectation du rsultat e

Deux schmas simples de synchronisation peuvent tre utiliss. Dans le e e e premier schma, tous les registres sont sensibles au (mme) front dhorloge. e e A chaque coup dhorloge une microaction Ri Rj op Rk est eectue et le e rsultat est charg dans le registre concern au prochain front de lhorloge. e e e Dans le deuxi`me schma, on peut utiliser des registres de type verrou e e (Cf. Chapitre 9) ; on ajoute alors un registre tampon en sortie de loprateur. e Ce registre est pilot par un signal de chargement actif sur le niveau haut e de lhorloge. Les autres registres sont pilots par un signal de chargement e actif sur le niveau bas. Une microaction se dcompose alors en deux phases, e correspondant aux deux niveaux de lhorloge. Dans la premi`re phase (haut) e les oprandes sont aiguills vers loprateur et le rsultat du calcul est charg e e e e e dans le tampon. Dans la deuxi`me phase (bas), le rsultat est charg dans le e e e registre concern. e Dans la suite on fera abstraction de cette alternative de mise en oeuvre des actions atomiques.

3.

Partie contrle o

Comme dcrit au chapitre 5, nous pouvons ` partir de lalgorithme obtenir e a une machine squentielle avec actions. Pour des raisons de synchronisation e avec la PO (Cf. Chapitre 10, paragraphe 1.3.3) le mod`le de Moore est utilis. e e Cette machine squentielle avec actions est ensuite transforme en autoe e mate dtats ni en remplaant les actions apparaissant sur les tats par lafe c e fectation des valeurs correspondantes ` ces actions, aux signaux de commande a a ` destination de la PO. Cette tape est dtaille dans les tudes de cas traites e e e e e

http://fribok.blogspot.com/

250

Conception de circuits squentiels... e

au paragraphe 4. Cet automate peut tre ensuite ralis par du matriel suivant e e e e une des mthodes dcrites dans le chapitre 10. e e Le probl`me est de dcider quels oprateurs et comptes-rendus de calculs e e e sont disponibles dans la PO. Chaque calcul et aectation de variable correspondante eectu dans un tat de lautomate doit tre ralisable en un cycle e e e e dhorloge dans la PO. Chaque condition apparaissant sur les transitions de lautomate doit tre un compte-rendu de loprateur utilis disponible dans e e e ltat prcdent. e e e

3.1

Entres/sorties e

La gestion des entres et des sorties ncessite une synchronisation avec le e e monde extrieur. Le protocole de poigne de mains (Cf. Chapitre 6) peut tre e e e employ pour permettre le chargement ou la sortie de certains registres de la e PO. Ce protocole de poigne de mains peut tre adapt au cas par cas suivant e e e lenvironnement dans lequel on doit implanter le circuit ` raliser. Des signaux a e de synchronisation ncessaires ` ces entres/sorties sont ajouts aux signaux e a e e de donnes. Ils sont reus par la PC. e c Dans le cas dune entre le circuit est le rcepteur et le monde extrieur est e e e lmetteur, et inversement pour une sortie. On reprend le schma de lautomate e e du rcepteur et de lmetteur dans une poigne de mains prsent dans le e e e e e chapitre 6. On associe ` lautomate de la PC deux tats pour chaque acquisition a e dentre et pour chaque dlivrance de sortie (Cf. Figure 11.5). Les entres sont e e e chantillonnes sur la mme horloge que la PC comme nous lavons vu dans le e e e chapitre 10. Dans le cas dune entre, le signal PresE correspond au signal de e prsence dune entre venant de lextrieur (metteur prt). Le signal EPrise e e e e e correspond au signal de signication ` lextrieur de la prise en compte de a e lentre (rcepteur non prt). Bien entendu ce signal est ` 0 dans tous les e e e a autres tats de lautomate. Dans ltat Chargement de lentre les commandes e e e a ` destination de la PO sont SelEntres pour amener la valeur du bus extrieur e e a ` lentre des registres et ChRi pour charger le registre voulu. e Dans le cas dune sortie, le signal PresS correspond au signal de prsence e dune sortie pour lextrieur (metteur prt). Ce signal est ` 0 dans tous les e e e a autres tats de lautomate. Le signal SPrise permet ` lextrieur de signaler e a e au circuit quil a pris en compte la sortie (rcepteur non prt). Dans ltat e e e Sortie prsente les commandes ` destination de la PO sont SelBusARi pour e a transmettre le registre voulu sur le bus A et SelSorties pour amener la valeur du bus A sur le bus de sortie. Nous pouvons illustrer ce protocole ` travers le dialogue dun circuit avec a une mmoire. Considrons par exemple un processeur eectuant des critures e e e (sorties) ou des lectures (entres) en mmoire. Nous avons expliqu au parae e e graphe 2.2 du chapitre 9 comment se droule un acc`s mmoire. Dans le cas e e e o` la mmoire est lente par rapport au processeur celui-ci doit attendre lors u e dun acc`s en lecture ou en criture que la mmoire lui signale la n de lacc`s. e e e e

http://fribok.blogspot.com/

3. Partie contrle o

251

EPrise

Attente Entre e PresE

PresE

PresS SelSorties SelBusARi

Sortie prsente e SPrise

SPrise

EPrise Chargement ChRi e SelEntres de lentre e PresE

PresE

PresS

Attente SPrise

SPrise

(a)

(b)

Fig. 11.5 Gestion dentres/sorties : a) acquisition dune entre ; b) dlivrance dune e e e sortie

La mmoire dlivre alors un signal FinAcc`s lorsque, soit la donne ` lire est e e e e a prte sur le bus, soit la donne ` crire est eectivement crite en mmoire. e e ae e e e a e Le processeur dlivre les signaux SelMem et l/e lors dun acc`s ` la mmoire. e On reprend les automates de la gure 11.5. Pour lcriture SPrise correspond ` e a a e FinAcc`s, PresS ` SelMem et l/e ; pour la lecture PresE correspond ` FinAcc`s, e a Eprise ` SelMem et l/e. a
Nous retrouverons la connexion dun processeur avec une mmoire dans ltude e e de cas du paragraphe 4.3 et dans le chapitre 14. Nous nous placerons alors dans le cas simple et idal o` la mmoire est susamment rapide pour permettre un e u e acc`s en un cycle dhorloge du processeur ; le signal FinAcc`s nest alors plus e e utile, il est implicite. Nous retrouverons les aspects de synchronisation au chapitre 15, pour relier lensemble processeur/mmoire avec le monde extrieur. e e

3.2

Synchronisation de la partie contrle et de la partie o oprative e

Nous avons vu dans le chapitre 10, paragraphe 1.3.3, comment synchroniser les ralisations de deux automates. Dans le cas dune ralisation PC/PO les e e sorties de la PO sont des entres de la PC et inversement. Nous sommes donc e en prsence de deux automates en boucle. e Supposons que lautomate ralisant la PC volue ` chaque front montant e e a dune horloge H. Il faut quentre deux fronts montants de H, la PO eectue le calcul command et donne un compte-rendu pour permettre ` la PC de calculer e a le prochain tat. Regardons ce qui se passe dans les deux cas de synchronisation e tudis au paragraphe 1.3.3 du chapitre 10. e e Dans le cas o` les registres de la PO sont chargs au front montant (Cf. Fiu e gure 11.6), cest le rsultat du calcul eectu dans ltat prcdent qui est e e e e e charg. La PO doit alors eectuer le calcul et mettre le compte-rendu de e e mani`re ` laisser le temps ` la PC de calculer ltat suivant avant le prochain e a a e

http://fribok.blogspot.com/

252

Conception de circuits squentiels... e

Passage dans ltat i e

Passage dans ltat i + 1 e

H Calcul eectu dans ltat i (PO) e e Calcul de ltat i+1 (PC) e Compte rendu valide Chargement du rsultat de ltat i (PO) e e Fig. 11.6 Chronogrammes montrant la synchronisation de la PC et de la PO avec chargement du registre rsultat en n de priode e e

Passage dans ltat i e

Passage dans ltat i + 1 e

H Calcul eectu dans ltat i (PO) e e Calcul de ltat i+1 (PC) e et Chargement du rsultat e de ltat i (PO) e Compte rendu valide Le compte-rendu peut changer Fig. 11.7 Chronogrammes montrant la synchronisation de la PC et de la PO avec chargement du registre rsultat au milieu de la priode e e

front montant de H. Dans ce cas-l`, il nest pas ncessaire de mmoriser ces a e e comptes-rendus. Dans le cas o` le calcul est eectu dans la premi`re phase (Cf. Figure 11.7) u e e les comptes-rendus changent alors une deuxi`me fois dans la deuxi`me phase e e puisque certains des registres peuvent avoir chang apr`s le front descendant e e de H. Il faut donc mmoriser ces comptes-rendus dans un registre au front e descendant de H. Lmission des commandes de la PC et le calcul doivent e donc tre raliss dans la premi`re demi-priode de H, le calcul de ltat suivant e e e e e e dans la deuxi`me. Cette solution est plus contraignante dans lencha e nement des direntes oprations de la PC et de la PO. e e

http://fribok.blogspot.com/

4. Etudes de cas

253

4.
4.1

Etudes de cas
Dmarche de conception e

Avant de traiter concr`tement des exemples prcis nous donnons lbauche e e e dune mthode de conception dune architecture PC/PO. Les deux premi`res e e tapes apparaissant ci-apr`s sont compl`tement lies et sont ` eectuer simule e e e a tanment. e Transformation de lalgorithme en une machine squentielle avec e actions : Rpertorier les actions et les prdicats apparaissant dans lalgorithme. e e Dnir les oprations ncessaires aux calculs de ces prdicats. Dnir les e e e e e oprations et les aectations de variables pouvant tre ralisables par un e e e circuit disponible pour construire la PO. Dcrire lalgorithme ` laide dune machine squentielle avec actions utie a e lisant ces variables et ces oprations. Les actions associes ` chaque tat e e a e doivent tre ralisables dans la PO en un coup dhorloge. e e Obtention de la PO : Rpertorier lensemble des variables apparaissant dans la machine e squentielle avec actions, chacune correspond ` un registre de la PO. e a Rpertorier lensemble des oprations apparaissant dans lalgorithme, y e e compris celles ncessaires aux calculs des prdicats. Construire une PO type e e (Cf. Parapraphe 2.) possdant un oprateur permettant de raliser tous les e e e calculs. On pourra ventuellement optimiser cette PO (au niveau temps de e calcul) en multipliant les oprateurs et paralllisant les calculs par fusion e e dtats dans la machine squentielle. e e Obtention de lautomate correspondant ` la PC : a Au vu de la PO et de la machine squentielle avec actions obtenir lautoe mate dtats ni correspondant ` la PC. Cet automate a comme entres e a e les ls de comptes-rendus (correspondant aux conditions apparaissant dans lalgorithme) sortant de loprateur de la PO et les signaux de synchronie sation avec le monde extrieur. Il a comme sorties les ls de commande e apparaissant sur les ressources de la PO et des signaux avec lextrieur. Il e faut donc dnir pour chaque tat la valeur des commandes ` destination e e a de la PO correspondant aux actions eectues. e Synth`se de lautomate de contrle : e o Il reste ` eectuer la synth`se de lautomate obtenu en utilisant une des a e mthodes donnes dans le chapitre 10. e e Assemblage de la PC et de la PO

http://fribok.blogspot.com/

254

Conception de circuits squentiels... e

Lexique m,n : des entiers 0 { m et n tant donns} e e n : le boolen Vrai e j, k : des entiers 0 : un entier Algorithme Tantque VRAI : Acqurir(m) ; Acquerir(n) ; e k 0 ; j 0 ; m ; tantque j m : {invariant : 0 j m et 2.m 0 } Dlivrer (j) ; Dlivrer (k) ; e e j j+1 ; + 2.n ; {2.m + 2.n 2.n} si 0 k k + 1 ; 2.m ; { apr`s cela : 2.m 0 } e n VRAI ; Dlivrer(n) ; e Fig. 11.8 Algorithme de Bresenham

4.2

Le traceur de segments

Le circuit que nous voulons concevoir doit dlivrer les coordonnes des e e points dun segment de droite sur un cran. Nous choisissons lalgorithme de e Bresenham prsent au paragraphe 2.3 du chapitre 5. La gure 11.8 rappelle e e lalgorithme. Les actions Acqurir et Dlivrer correspondent aux entres et sore e e ties. Pour que le circuit puisse fonctionner pour un nombre de segments illimit, e nous ajoutons une boucle globale sans n. 4.2.1 Obtention dune machine squentielle avec actions ` partir de e a lalgorithme

On peut classer les actions ` eectuer en deux catgories. Certaines corresa e pondent ` des entres/sorties : Acqurir(m), Acqurir(n), Dlivrer (j), Dlivrer(k), a e e e e e Dlivrer (n) ; dautres correspondent ` des calculs : j 0, k 0, e a m , j j + 1, + 2.n, k k + 1, 2.m. Les initialisations de j et k ` 0 se font directement ` travers un signal a a dinitialisation sur les registres. On peut ainsi runir les actions j 0, k e 0, et m dans le mme tat. On choisit dutiliser un seul oprateur e e e (Cf. Paragraphe 2.), les autres actions doivent donc se faire dans des tats e distincts. Les prdicats ` tester sont j m et 0. On peut de faon quivalente e a c e calculer chaque prdicat ou son complmentaire ; par exemple on peut calculer e e j>m ou j m. Pour le calcul du prdicat j > m on eectue m j. Il est plus e

http://fribok.blogspot.com/

4. Etudes de cas

255

Acqurir(m) e Dlivrer(n) e Acqurir(n) e m || j 0 || k 0 m-j ResNeg 2.m ResNeg k k+1 ResNeg Dlivrer(j) e Dlivrer(k) e

ResNeg

j j +1

+ 2.n Fig. 11.9 Une machine squentielle avec actions ralisant lalgorithme de Bresenham e e

facile de raliser une UAL qui donne un indicateur signiant rsultat ngatif e e e que rsultat ngatif ou nul. Pour le prdicat 0, on a besoin du mme e e e e indicateur. Le calcul dun prdicat peut ncessiter lajout dun tat. Par exemple ici le e e e calcul de j > m doit tre eectu dans un tat spcique alors que le calcul de e e e e 0 peut tre eectu au moment de laction + 2.n. e e On obtient la machine squentielle avec actions de la gure 11.9. e 4.2.2 Description de la partie oprative e

La gure 11.11 donne la partie oprative. Le circuit comporte 5 registres e nomms J, K, M, N et D contenant les valeurs des variables j, k, m, n et . e Les registres J et K possdent un signal dinitialisation InitJK ` 0 pour e a pouvoir eectuer les actions j 0 et k 0. Les calculs ` eectuer correspondent aux diverses actions numres a e ee prcdemment : M, K + 1, J + 1, D + 2.N, D 2.M. Il faut ajouter e e les calculs correspondant aux prdicats : j > m et 0. e On utilise une PO type comme dnie prcdemment mais on minimise le e e e nombre de connexions des registres aux bus. Ainsi les connexions J ; BusA, K ; BusA, M ; BusB, N ; BusB, D ; BusA susent. Nous ralisons toutes les oprations avec un oprateur unique ; il doit e e e

http://fribok.blogspot.com/

256

Conception de circuits squentiels... e

Op2 0 0 0

Op1 0 0 1

Op0 0 1 0

Opration e A+1 BA A + 2*B

Op2 0 1

Op1 1 0

Op0 1 0

Opration e A 2*B B

Fig. 11.10 Signaux de commande de lUAL de lalgorithme de Bresenham Sorties Bus A SelMBusB ChJ J InitJK H BUS Rsultat e Entres e Fig. 11.11 Partie oprative correspondant ` lalgorithme de Bresenham e a ChK K SelKBusA ChD D SelDBusA SelJBusA ChM M ChN SelNBusB SelUAL N UAL Op2, Op1, Op0

InitJK Bus B

ResNeg SelEntres e

raliser les oprations suivantes sur ses oprandes A et B : A+1, BA, A+2*B, e e e A2*B et B. Chacune de ces oprations doit tre eectue dans un tat e e e e dirent de la machine squentielle avec actions. e e La signication des trois signaux Op2 , Op1 , Op0 de commande des oprations de lUAL est donne dans le tableau de la gure 11.10. e e Cette UAL peut tre ralise ` laide dun additionneur (Cf. Chapitre 8). e e e a Elle doit gnrer un bit de signe du rsultat (ResNeg). e e e

4.2.3

Hypoth`ses sur les entres/sorties e e

Sans hypoth`ses sur lenvironnement exact (cran, table traante,..) il est e e c impossible de dcrire prcisment la primitive dachage dun pixel. e e e Nous convenons que M et N sont initialiss ` partir dun bus dentres (not e a e e Entres sur la gure 11.11), que J et K sont dlivrs sur un bus de sorties (not e e e e Sorties sur la gure 11.11) et que le signal Fin est dlivr directement par un e e l particulier issu de la PC (l portant une valeur constante, on pourrait bien sr lliminer). u e Pour les entres sur M et N et les sorties sur Fin, J et K nous utilisons le e protocole de poigne de mains. e

http://fribok.blogspot.com/

4. Etudes de cas

257

4.2.4

Dnition de la partie contrle par un automate dtats ni e o e

La gure 11.12 donne la partie contrle. Les tats correspondant ` o e a Acqurir(N) et Acqurir(M) sont remplacs chacun par les deux tats du e e e e rcepteur dans le protocole poigne de mains. On introduit ainsi les signaux e e de contrle venant de lextrieur (PresN et PresM) et un mme signal vers o e e lextrieur pour les deux cas EPrise. De mme pour les sorties Fin, J et K avec e e les signaux SortieFin, SortieJ, SortieK et SPrise. Nous supposons que les bascules utilises dans la PO sont des bascules D e sensibles au front montant, avec signal dinitialisation actif ` 1. a Il est ` remarquer que dans certains cas la valeur de signaux de commande a de la PO na pas dimportance. Ces valeurs sont alors dnies comme phie boolennes pour les fonctions de sortie correspondantes. e La gure 11.13 donne le dtail des sorties pour chaque tat de la PC ; ce e e sont des ls de commande apparaissant sur la PO de la gure 11.11 et les ls destins aux entres/sorties avec lextrieur. e e e

4.2.5

Assemblage de la PC et de la PO

Le circuit de la gure 11.14 montre lensemble des signaux changs lors e e de lassemblage de la PC et de la PO ainsi que ceux permettant la gestion des entres/sorties. Le seul compte-rendu de la PO vers la PC est ResNeg. La PC e et la PO voluent avec la mme horloge H. e e

4.3

La machine ` trier a

Cette tude de cas montre lutilisation dune mmoire ` ct dune machine e e a oe algorithmique. Cest ` ce titre une bonne introduction au chapitre 14 qui porte a sur la conception dun processeur. Le mcanisme dentre/sortie utilis ici est e e e spcique et dirent de ceux explicits plus haut. e e e Soit une mmoire permettant de stocker M mots de N bits. On dsire e e construire une machine permettant de raliser le tri des lments contenus e ee dans cette mmoire. On consid`re que ces lments sont des entiers naturels e e ee cods en base 2. La gure 11.15 donne lalgorithme du tri par insertion. e On suppose que M est initialis au dpart de lalgorithme. La mmoire e e e comporte un bus donne, un bus adresse et un signal de commande, not l/e, e e prcisant si on ralise une opration de lecture ou dcriture. Il faut donc que le e e e e circuit ralisant lalgorithme poss`de un bus de sortie correspondant ` ladresse e e a en mmoire et un bus dentres/sorties correspondant ` la donne stocke en e e a e e mmoire. On suppose que lacc`s ` la mmoire en lecture ou criture peut se e e a e e faire en un cycle dhorloge du circuit ` concevoir. Il ny a donc pas de signal a FinAcc`s. e

http://fribok.blogspot.com/

258

Conception de circuits squentiels... 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 MJ 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. 11.12 Automate dtats ni correspondant ` lalgorithme de Bresenham e a

http://fribok.blogspot.com/

4. 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, Op1, Op0) = (, , ) Chargement de M : ChM = SelEntres = EPrise = 1, InitJK = e ChJ = ChK = ChD = ChN = , (Op2, Op1, Op0) = (, , ) Attente : InitJK = ChJ = ChK = ChD = ChN = , (Op2, Op1, Op0) = (, , ) Chargement de N : ChN = SelEntres = EPrise = 1, e InitJK = ChJ = ChK = ChD = , (Op2, Op1, Op0) = (, , ) D M ; J 0 ; K 0 : ChD = InitJK = SelMBusB = SelUAL = 1, (Op2, Op1, Op0) = (1, 0, 0) M J : SelJBusA = SelMBusB = 1, (Op2, Op1, Op0) = (0, 0, 1) Sortir J : SortieJ = SelJBusA = 1, (Op2, Op1, Op0) = (, , ) Attente : (Op2, Op1, Op0) = (, , ) Sortir K : SortieK = SelKBusA = 1, (Op2, Op1, Op0) = (, , ) Attente : (Op2, Op1, Op0) = (, , ) J J+1 : ChJ = SelJBusA = SelUAL = 1, (Op2, Op1, Op0) = (0, 0, 0) D D+2*N : ChD = SelDBusA = SelNBusB =SelUAL = 1, (Op2, Op1, Op0)=(0, 1, 0) K K+1 : ChK = SelUAL = SelKBusA = 1, (Op2, Op1, Op0) =(0, 0, 0) D D2*M : ChD = SelDBusA = SelMBusB = SelUAL = 1, (Op2, Op1, Op0) = (0,1,1) Sortir n : SortieFin = 1, InitJK = ChJ = ChK = ChD = ChM = ChN = , (Op2, Op1, Op0) = (, , ) Attente : InitJK = ChJ = ChK = ChD = ChM = ChN = , (Op2, Op1, Op0) = (, , )

Fig. 11.13 Sorties mises dans chaque tat de la partie contrle de la gure 11.12. Les e e o signaux dont la valeur est 1 ou sont prciss et ceux pour lesquels elle e e vaut 0 sont omis. H Init PresN Sorties Entres e ResNeg Partie ChJ ChK ChD ChM ChN SelJBusA SelKBusA oprative SelMBusB SelNBusB e SelDBusA SelSorties SelUAL SelEntres e Op2 Op1 Op0 InitJK Partie contrle o PresM SPrise EPrise SortieJ SortieK SortieFin

Fig. 11.14 Vue gnrale du traceur de segments e e

http://fribok.blogspot.com/

260

Conception de circuits squentiels... e

Lexique M : un entier donn e i, j, t : des entiers 0 ; trouv, n : des boolens e e mem : un tableau [0..M1] dentiers 0 Algorithme i 1 tantque i M1 : j i ; t mem[i] ; trouv FAUX e tantque (j > 0 et non trouv) : e si mem[j1] > t alors mem [j] mem[j1] ; j j1 sinon trouv VRAI e mem [j] t ; i i + 1 n VRAI ; Dlivrer (n) e Fig. 11.15 Algorithme de la machine ` trier a

4.3.1

Obtention dune machine squentielle avec actions ` partir de e a lalgorithme

Les actions ` eectuer sont : a i 1, j i, t mem[i], trouv FAUX, e mem[j] mem[j1], j j1, trouve VRAI, mem[j] t, i i+1. Nous convenons de coder FAUX par la valeur 0 et VRAI par la valeur 1. Etudions lvaluation des prdicats : e e i M1 : on peut calculer i M et tester si le rsultat est nul. En eet, e i M 1 i M < 0. Initialement i < M et i tant incrment de 1 e e e a ` chaque itration on peut tester i = M. e j > 0 et non (trouv) : on peut calculer j et tester si le rsultat est non nul, e e puis calculer trouv et tester si le rsultat est nul. Initialement j > 0 et j e e tant dcrment de 1 ` chaque itration on peut tester j = 0. e e e e a e mem[j1] > t : on calcule mem[j1] t et on teste si le rsultat est e strictement positif. Pour ce calcul si lon se restreint ` un seul oprateur, il a e faut tout dabord aller chercher en mmoire mem[j1] et stocker la valeur e dans une variable temporaire que nous appelons temp. On peut ensuite calculer temp t. Le calcul se fait donc dans deux tats successifs ralisant e e les actions temp mem[j1] puis valuation du signe de temp t. e Laectation mem [j] mem[j1] ncessite deux acc`s ` la mmoire. On e e a e ne peut donc la raliser dans un seul tat de la machine squentielle. Il faut e e e comme prcdemment utiliser une variable, soit temp, permettant de stocker e e mem[j1] avant de laecter ` mem[j] ; ` deux tats successifs seront alors a a e associes les actions temp mem[j1] puis mem[j] temp. Comme lafe fectation temp mem[j1] se fait juste apr`s le test mem[j1] > t, temp e contient dj` la valeur de mem[j1] ; il est donc inutile de raliser cette aecea e tation.

http://fribok.blogspot.com/

4. Etudes de cas

261

0 i 1 2 ResNul 1 iM ResNul 3 4 j ResNul 6 mem[j] t ResNul 5 ResNul trouv e ResNul 7 i i + 1 13 8 temp mem[j1] temp - t ResPos mem[j] temp 9 ResPos 11 trouv VRAI e j i t mem[i] || trouv FAUX e Dlivrer(n) e

12

j j 1 10 Fig. 11.16 Machine squentielle avec actions de la machine ` trier e a

Linitialisation de trouv ` FAUX peut tre faite dans le mme tat que e a e e e laectation t mem[i] en se servant de linitialisation ` 0 du registre trouv. a e Le calcul du prdicat j > 0 et non (trouv) se fait dans deux tats successifs e e e (voir le mcanisme dclatement de conditions complexes dans le chapitre 5). e e La machine squentielle avec actions donne dans la gure 11.16 tient e e compte de ces remarques. 4.3.2 Obtention de la PO

On part de la PO type dcrite dans le paragraphe 2. La gure 11.17 dcrit e e une PO qui permet toutes les actions apparaissant dans les dirents tats de e e la machine squentielle avec actions donne prcdemment. e e e e

http://fribok.blogspot.com/

262

Conception de circuits squentiels... e

IBusA

JBusA

TPBusA

Bus A

Op2,Op1 BusAdresses ResetTR SetTR TRBusA UAL TR MBusB SelAdr

I InitI ChI

T E M P ChTEMP

ChJ

ChT

TPBusB Bus B ComptesRendus SelEntres e SelSorties

SelUAL

BusRsultat e BusDonnes e

Fig. 11.17 Partie oprative pour la machine ` trier e a

Il y a 6 registres permettant de stocker les variables de lalgorithme : I, J, T, TR (pour trouv), M et TEMP (pour la variable intermdiaire introduite). e e Le registre TR ne comporte quune seule bascule. Sa liaison sur n ls au bus A est complte par des 0. ee On se sert dun oprateur unique ` deux oprandes A et B qui doit permettre e a e les calculs : A, AB, A1, A+1 et dlivrer les comptes-rendus : rsultat nul et e e rsultat positif. e Pour raliser I 1, TR 0 et TR 1 on se sert des commandes e dinitialisation des bascules des registres correspondants. Les entres/sorties sont eectues via le bus adresses en sortie et le bus e e donnes en entre et sortie. e e On connecte I, J, TR et TEMP au bus A pour raliser les actions J I, J e J1, I I+1 et les calculs ncessaires ` lvaluation des prdicats I=M, e a e e J=0, TEMP>T et non (TR). On connecte M et T au bus B pour le calcul des prdicats I=M et TEMP>T. e Pour les actions ncessitant un acc`s mmoire en criture ou en lecture : e e e e T mem[I], TEMP mem[J1], mem[J] T, mem[J] TEMP, on a le choix, soit de connecter le bus A ou B au bus adresses, soit de passer par lUAL. On choisit la deuxi`me solution puisquil faut eectuer un calcul e dadresses pour laction TEMP mem[J1]. On connecte le bus donnes au bus rsultat pour les actions comportant une e e lecture en mmoire : T mem[I] et TEMP mem[J1]. Pour les actions e comportant une criture en mmoire : mem[J] T et mem[J] TEMP, e e on transmet J sur le bus adresses en passant par le bus A et lUAL, et on connecte T et TEMP au bus B puis le bus B au bus donnes. e En rsum, on doit pouvoir avoir sur le bus A le contenu des registres I, e e J, TR et TEMP. On doit pouvoir avoir sur le bus B le contenu des registres

http://fribok.blogspot.com/

5. Exercices

263

3 4 5 7

j i : IBusA = ChJ = 1, (Op2, Op1) = (0, 1), ChTEMP = ChT = ResetTR = SetTR = t mem[i] ; trouv = FAUX : IBusA = ChT = ResetTR = l/e = SelMem e = SelAdr = SelEntrees = 1, (Op2, Op1) = (0, 1), ChTEMP = j : JBusA = 1, (Op2, Op1) = (0, 1) temp mem[j1] : JBusA = ChTEMP= l/e = SelMem = SelAdr = SelEntres = 1, (Op2, Op1) = (1, 1) e

Fig. 11.18 Sorties pour quelques tats de lautomate de la gure 11.16 ; sont prciss e e e les signaux ` 1 et ` et omis ceux ` 0. a a a

M, T et TEMP. On doit pouvoir charger les registres I, J, TEMP et T par la valeur prsente sur le bus rsultat. On doit pouvoir amener la valeur prsente e e e sur le bus donnes sur le bus rsultat. On doit enn pouvoir amener la valeur e e prsente sur le bus B sur le bus donnes. e e 4.3.3 Obtention de lautomate dtats ni de la partie contrle e o

Le passage de la machine squentielle ` lautomate dtats ni se fait comme e a e prcdemment. On peut utiliser le protocole de poigne de mains pour laction e e e Dlivrer (n). On remplace ltat correspondant par les deux tats de lmetteur e e e e dans la poigne de mains (Cf. Paragraphe 3.1). e Nous donnons dans la gure 11.18, pour quelques tats, les sorties de laue tomate dtats ni correspondant ` la machine squentielle avec action de e a e la gure 11.16. Nous utilisons les signaux apparaissant sur la PO de la gure 11.17. Pour les critures et lectures en mmoire les signaux SelMem et l/e e e a ` destination de la mmoire sont des sorties supplmentaires de lautomate. e e Les congurations 00, 01, 10 et 11 des deux signaux Op2 , Op1 qui commandent lopration de lUAL (OperationUAL) correspondent respectivement e aux oprations : A + 1, A, AB, A1. e 4.3.4 Optimisation

On peut simplier ce circuit en nutilisant plus de registre pour stocker le boolen trouv. En eet on peut sortir directement de la boucle quand le e e test du prdicat mem[j-1] > t donne VRAI (voir la modication sur la machine e squentielle de la gure 11.19). e

5.

Exercices

E11.1 : La racine carre e Il sagit de construire un circuit permettant de calculer la partie enti`re de la e racine carre dun entier naturel x. Lalgorithme correspondant est donn au e e paragraphe 3.2 du chapitre 10. En suivant la mthode dcrite dans ce chapitre e e

http://fribok.blogspot.com/

264

Conception de circuits squentiels... e

i 1 Dlivrer(Fin) e ResNul iM 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. 11.19 Machine squentielle avec actions optimise de la machine ` trier e e a ResNul temp mem[j1]

http://fribok.blogspot.com/

5. Exercices

265

Lexique U : un entier > 0 ; n : un booleen Algorithme Tantque VRAI : Acqurir(U) e tantque U > 1 : si U MODULO 2 = 0 alors U U DIV 2 sinon U 3 * U + 1 Dlivrer (U) e Dlivrer(n) e

Fig. 11.20 Algorithme de la suite de Syracuse

SelSorties Bus A

Sorties

Op

ChU U horloge

UAL SelUAL BitPoidsFaible SelEntres e ResNeg

Bus Rsultat e Entres e

Fig. 11.21 Une partie oprative pour la suite de Syracuse e

donner une PO et une PC permettant de raliser cet algorithme ; sinspirer de e la PO type donne ` la section 2. e a E11.2 : La suite de Syracuse La gure 11.20 donne lalgorithme correspondant au calcul de la suite de Syracuse. La gure 11.21 reprsente une PO issue de la PO type du paragraphe 2. e permettant de raliser cet algorithme. Donner la machine squentielle avec ace e tions correspondant ` lalgorithme et utilisant cette PO. Les comptes-rendus de a lUAL sont le bit de poids faible et le signe du rsultat. En dduire lautomate e e dtats ni correspondant. Faire une synth`se cable de cet automate avec un e e e codage compact. On choisira pour cela un codage pour les trois oprations de e lUAL (Op) : 1X, X DIV 2 et 3*X+1. On eectuera les entres/sorties ` laide e a du protocole ` poigne de mains via les bus Entres et Sorties pour U. a e e

http://fribok.blogspot.com/

Troisi`me partie e Techniques de lalgorithmique logicielle

http://fribok.blogspot.com/

Chapitre 12 Le langage machine et le langage dassemblage


Nous avons tudi au chapitre 4 un ensemble de mod`les des traitements e e e quon peut vouloir faire eectuer par un dispositif informatique. Toutefois, ni les langages de programmation de haut niveau, ni les machines squentielles, e ne sont directement exploitables par un ordinateur, tel que nous lavons dni e en introduction. Le seul langage comprhensible par un ordinateur est le langage machine e de son processeur. Un programme en langage machine est une suite nie de bits, que le processeur interpr`te. Nous tudions au chapitre 14 les circuits e e squentiels qui ralisent cette tche dinterprtation. Un langage machine, bien e e a e que dicilement lisible par un tre humain, poss`de une structure : il est e e possible dy voir une suite de paquets de bits, chacun codant une instruction du processeur, cest-`-dire une opration lmentaire ralisable par le processeur a e ee e (par exemple additionner deux entiers cods sur un octet). e Concevoir un langage machine est une tche indissociable de la conception a du processeur. On doit choisir un ensemble dinstructions (on dit aussi : jeu dinstructions) de mani`re ` fournir un mod`le de calcul universel, mais ce nest e a e pas la seule contrainte. On peut avoir ` assurer la compatibilit ascendante a e dans une famille de processeurs, cest-`-dire ` assurer que les programmes en a a langage machine qui fonctionnaient sur un processeur de la gnration n sont e e rutilisables sur le processeur de la gnration n + 1. e e e Pour dnir compl`tement un langage machine, il faut ensuite choisir un e e codage de lensemble des instructions sur un certain nombre de bits. Si lon suppose donns le processeur et son langage machine, on peut e sintresser au probl`me de la programmation de ce dispositif par un tre hue e e main, qui ne saurait sexprimer directement en termes de squences de bits. e Le langage dassemblage est un langage textuel bti sur le mod`le du langage a e machine. Il a la mme structure, cest-`-dire les mmes instructions, mais il se e a e note par du texte. Traduire le langage dassemblage en langage machine suppose : une analyse

http://fribok.blogspot.com/

270

Le langage machine et le langage dassemblage

lexicale et syntaxique du texte, pour y reprer les structures ; la vrication e e des contraintes dutilisation des oprateurs et oprandes ; un codage des struce e tures en squences de bits. Nous tudions les principes de cette traduction e e dans le prsent chapitre. Cest par ailleurs la tche principale de loutil appel e a e assembleur des environnements de programmation. Nous verrons galement au e chapitre 18 les aspects de compilation spare ou dabstraction vis-`-vis de la e e a position en mmoire ` lexcution. Nous verrons au chapitre 13 que le langage e a e dassemblage est lui-mme une cible pour la traduction des langages de haut e niveau. Dans le paragraphe 1. nous exposons la dmarche de conception dun lane gage machine : choix du jeu dinstructions et codage, en prenant quelques exemples parmi les processeurs existants. Le paragraphe 2. dcrit les cae ractristiques dun langage dassemblage construit sur le langage mae chine. Les probl`mes de la traduction du langage dassemblage vers le e langage machine correspondants sont tudis au paragraphe 3. Enn nous e e donnons au paragraphe 4. un exemple de programme, sous 5 formes : un algorithme du langage dactions dcrit au chapitre 4 ; un texte crit dans e e un langage dassemblage pour un processeur 68000 ; un texte dun langage dassemblage pour processeur sparc ; un programme en langage machine 68000 ; un programme en langage machine sparc.

1.
1.1

Le langage machine
Description gnrique de la machine e e

Pour dnir la notion de langage machine, et proposer des crit`res de choix e e dun ensemble dinstructions qui constitue un mod`le de calcul universel, il e faut tout dabord dnir prcisment la machine. e e e Nous nous restreignons ici au mod`le darchitecture de Von Neue mann [BGN63] : une machine comporte une unit de calcul (qui ralise des e e oprations de base sur les entiers cods en binaire) et une mmoire qui contient e e e des oprandes et des codes doprations (les instructions). Les instructions sont e e excutes dans lordre o` elles sont ranges en mmoire. e e u e e Nous distinguons par la suite : Une mmoire de grande taille, dont les lments sont dsigns par des e ee e e numros quon appelle des adresses. Cest la mmoire que nous avons mae e nipule en en donnant une abstraction par le tableau MEM au chapitre 4. e Nous parlerons souvent de mmoire principale e Une mmoire de plus petite taille dont les lments, appels registres, sont e ee e dsigns par des noms ou par des numros courts. Sur certaines machines e e e on distingue des registres donnes et des registres adresses, avec des instruce tions travaillant sur lune des catgories de registres seulement. Sur dautres e

http://fribok.blogspot.com/

1. Le langage machine

271

machines, au contraire, les registres sont banaliss. Les machines les plus e anciennes ne comportaient quun seul registre, dit accumulateur
Nous dtaillons au chapitre 14 linuence de ce genre de distinction sur ce quon e appelle la partie oprative du processeur, cest-`-dire la structure du circuit qui e a connecte lunit de calcul aux bus et aux divers registres. e

La distinction entre ces deux types de mmoire permet de tenir compte, dans le e choix dun jeu dinstructions, de crit`res tels que le temps dacc`s ` la mmoire : e e a e les registres sont accessibles plus rapidement que la grande mmoire. Nous vere rons au chapitre 15 que les registres sont en gnral situs physiquement dans e e e le processeur, contrairement ` la grande mmoire. Dautre part les adresses a e des octets dans la grande mmoire sont des entiers assez longs (typiquement e 32 bits), qui soit ne peuvent pas appara tels quels dans le codage dune instre truction (Cf. Paragraphe 1.3), soit en ralentissemnt lexcution ; en revanche, e les adresses ou numros des registres sont de petits entiers 5 bits sur le proe cesseur sparc1 par exemple et peuvent donc appara comme dsignation tre e doprande dans le codage dune instruction. e

1.2

Elments et structure du langage machine e

Un programme crit en langage machine est une suite nie de codages e binaires dinstructions ventuellement paramtres. e e e 1.2.1 Instructions et codage

Une instruction lmentaire peut tre par exemple un transfert mmoire ee e e vers mmoire, dont leet peut tre dcrit par une phrase du langage dactions e e e prsent au chapitre 4 : MEM[a] 4 MEM[b]. Dans ce cas le codage complet e e de linstruction comprend : les reprsentations en binaire pur des adresses a e et b, codes sur un certain nombre de bits x ; le codage du type dopration e e e eectu : transfert mmoire vers mmoire de taille 4 octets. En langage machine e e e 68000, cette instruction est code sur 16 + 32 + 32 bits. Les 16 premiers bits e codent le type dopration eectu, la taille du transfert et le fait que lon doit e e trouver ensuite deux adresses de 32 bits ; les 32+32 bits suivants codent les deux adresses doprandes (voir paragraphe 1.3 pour un expos des principes e e de codage des instructions). Lajout dune constante ` une case mmoire (MEM[a] MEM[a] + k) a e peut galement constituer une instruction lmentaire dans un langage e ee machine. Dans ce cas le codage complet de linstruction comporte : la reprsentation en binaire pur de ladresse a ; le codage du type dopration e e eectu : incrmentation de case mmoire dsigne par son adresse ; le codage e e e e e binaire de la constante k.
Dans ce chapitre, sparc dsigne le sparc V8 qui a des mots de 32 bits, et non le sparc e V9, qui a des mots de 64 bits.
1

http://fribok.blogspot.com/

272

Le langage machine et le langage dassemblage

1.2.2

Notion de compteur programme

Sauf indication contraire, une suite dinstructions est lue squentiellement e par le processeur, qui interpr`te chacune dentre elles, et passe ` celle qui se e a trouve en mmoire ` ladresse suivante. Le processeur g`re donc ce quon ape a e pelle le compteur programme, qui donne le numro de la prochaine instruction e a ` lire. Le compteur programme est incrment ` chaque instruction. e ea Comme consquence de linterprtation dune instruction, le processeur e e peut modier le contenu de la mmoire ou dun registre, ou commander une e opration de lunit de calcul. Il peut galement modier le numro (ladresse) e e e e de la prochaine instruction ` lire. On parle alors de rupture de squence, ou a e branchement. Une instruction de rupture de squence doit comporter ladresse e de destination. Une rupture de squence peut tre inconditionnelle, auquel cas e e linterprtation de linstruction produit toujours le mme eet ; elle peut tre e e e conditionne, par exemple, par le signe du contenu dune case mmoire, ine e terprt comme un entier relatif ou comme le rsultat dun calcul. Dans ce ee e cas la rupture eective de squence, lors dune excution, dpend de ltat des e e e e donnes et donc de la mmoire ` ce moment-l`. e e a a 1.2.3 Dsignation dadresse et modes dadressage e

Nous traitons dans ce paragraphe de tout ce qui concerne les mcanismes e de dsignation demplacements en mmoire (mmoire principale ou registres), e e e utilisables dans toute instruction de calcul si elle a des oprandes en mmoire, e e dans les instructions de transfert depuis ou vers la mmoire, et dans les inse tructions de rupture de squence. Ces mcanismes sont appels des modes e e e dadressage. La gure 12.1 en donne une vue synthtique. e Considrons tout dabord le cas des instructions de calcul. Lorsquelles come portent un ou plusieurs oprandes en mmoire, le ou les param`tres correspone e e dants de linstruction doivent dsigner une adresse doctet en mmoire. Ce peut e e tre fait en donnant directement dans linstruction une constante enti`re posie e tive qui est ladresse voulue (cest le cas dans lexemple MEM[a] 4 MEM[b] voqu ci-dessus). On parle alors dadressage absolu. Ce peut tre fait e e e galement en donnant comme param`tre un numro de registre, dont le e e e contenu, lors de lexcution, donnera ladresse mmoire ; il sagit dans ce cas e e dadressage indirect par registre. Il en existe de nombreuses variantes : indirect par registre avec dplacement ; indirect par registre prdcrment (ou postincrment, ou pre e e e e e e e incrment, ou post-dcrment) avec ou sans dplacement, etc. Le mme e e e e e e e raisonnement est valable pour les instructions de transfert depuis ou vers la mmoire. e Dans le cas des instructions de rupture de squence, il faut indiquer dune e mani`re ou dune autre ` quelle adresse se trouve la prochaine instruction ` e a a excuter, puisque ce nest pas linstruction suivante. Il existe deux sortes de e branchements : les branchements relatifs ` la position courante du compteur a

http://fribok.blogspot.com/

1. Le langage machine

273

programme linstruction spcie alors un dplacement en avant ou en arri`re e e e par rapport au compteur programme et les branchements absolus linstruction spcie une nouvelle valeur du compteur programme, qui doit craser e e lancienne. Linstruction doit donc spcier un dplacement ou une adresse e e absolue. Dans les deux cas, on peut imaginer que cette donne est fournie die rectement comme une constante dans linstruction, ou indirectement dans un registre. Le tableau 12.1 rsume les diverses mani`res dindiquer une adresse e e mmoire dans une instruction. Pour nommer les modes dadressages, nous e avons utilis les termes les plus couramment employs. Le mode indirect par e e registre avec index est un adressage indirect par registre avec dplacement, e le dplacement tant stock dans un registre au lieu dtre donn par une e e e e e constante code dans linstruction. e Noter que pour une mme instruction, plusieurs modes dadressage peuvent e tre possibles. Voir aussi le paragraphe 1.3 qui traite du codage des instruce tions, pour comprendre comment distinguer les dirents cas. e 1.2.4 Mod`le de calcul universel, e mod`le de Von Neumann et langage machine type e

La premi`re contrainte ` respecter dans la conception du jeu dinstructions e a dun processeur est dassurer un mod`le de calcul universel. La comprhension e e compl`te de cette contrainte demande quelques connaissances en calculabilit, e e mais il est facile de se convaincre ` laide dexemples extrmes, comme le codage a e des boucles, que le probl`me se pose eectivement. e Il est en eet assez facile de se convaincre quun langage de haut niveau qui ne disposerait pas de structures itratives, sous quelque forme que ce soit, e ne permettrait pas de coder tout algorithme. Or les structures itratives core respondent aux ruptures de squence dans le langage machine. Un langage e machine qui ne permettrait pas ainsi de modier ladresse de la prochaine instruction ` lire, de mani`re conditionnelle, serait donc incomplet. a e La contrainte de fournir un mod`le de calcul universel est ralisable avec un e e langage machine ` une seule instruction complexe, du genre : acc`s mmoire a e e en lecture avec adressage indirect, conditionnel. Programmer directement dans un tel langage serait dj` tr`s dicile, et crire un compilateur de langage de ea e e haut niveau cest-`-dire un algorithme capable de traduire tout texte de a programme de haut niveau en suite de telles instructions serait encore plus ardu. Il ne sut donc pas que le jeu doprations oertes garantisse un mod`le e e de calcul universel. Le mod`le de machine dit de Von Neumann repose sur les e classes dinstructions suivantes : transfert de donnes (chargement depuis un e registre, chargement depuis la mmoire, stockage dans la mmoire) ; branchee e ments inconditionnels et conditionnels ; oprations arithmtiques et logiques. e e Le paragraphe 1.4 prsente ces grandes classes dinstructions plus des instruce

http://fribok.blogspot.com/

274

Le langage machine et le langage dassemblage

nom usuel

adresse eective (pour rsultats et e cibles de transferts) Pour les instructions de calcul et les transferts mmoire e immdiat e une constante rela- k tive k absolu une constante na- MEM[k] k turelle k registre di- un numro n e contenu de Regn Regn rect indirect par un numro n e MEM[contenu de contenu de registre Regn ] Regn indirect par deux numros n et MEM[contenu de contenu de e registre avec d Regn + contenu Regn + index de Regd ] contenu de Regd indirect par un numro n, une MEM[contenu de contenu de e registre avec constante relative Regn + d] Regn + d dplacement d e indirect par un numro n e MEM[contenu de contenu de registre pre Regn - t] Regn - t dcrment e e e indirect un numro n e MEM[contenu de contenu de par reRegn ] Regn gistre postdcrment e e e Pour les instructions de rupture de squence e relatif au une constante rela- PC + d compteur tive d N programme absolu une constante na- k turelle k

Information contenue dans le codage de linstruction

valeur ` utiliser a (pour oprandes e sources de calcul et sources de transferts)

eet ventuel e sur les oprandes e

Regn Regn -t Regn Regn -t

Fig. 12.1 Modes dadressage usuels. Noter que, pour les adressages indirects par registre avec pr (ou post) incrmentation (ou dcrmentation), leet sur e e e e le registre dindirection est de la forme : Regn Regn op t, o` op est u lopration + ou lopration , et t ne vaut pas ncessairement 1. t dpend e e e e de la taille de lopration, cest-`-dire de la taille des oprandes. Par exemple, e a e si linstruction travaille sur des mots de 32 bits, t = 4. Pour les adressages relatifs au compteur programme PC, la constante d donne dans linstruction e peut ventuellement tre multiplie par une constante N. Voir un exemple e e e paragraphe 1.4.3.

http://fribok.blogspot.com/

1. Le langage machine

275

tions spciques comme lon en trouve dans toute machine. e On trouve parfois le terme darchitecture de Von Neumann, o` la mmoire u e contient ` la fois les donnes et les instructions, par opposition ` larchiteca e a ture de Harvard, o` deux mmoires spciques contiennent, lune les donnes, u e e e lautre les instructions. Les deux architectures ont la mme puissance dexprese sion.

1.3

Codage des instructions

Nous avons donn au paragraphe 1.2.1 des exemples dinstructions, en ine diquant bri`vement quelles sont les informations ` coder. Nous prcisons cie a e dessous lensemble des informations ` coder, avant dtudier les contraintes a e qui portent sur la structure du code. Le codage complet dune instruction est obtenu par juxtaposition des codages des direntes informations qui la e dnissent ; on dit que le codage dune instruction est structur en champs e e (Cf. Figure 12.2) ; cest aussi le terme utilis pour les noms des direntes e e informations qui composent un type construit n-uplet (Cf. Chapitre 4).

1.3.1

Codage de la nature de lopration e

Lopration eectue est prise parmi toutes les oprations de lunit de cale e e e cul, les transferts entre mmoire et registres, les branchements, les instructions e spciques ventuelles (Cf. Paragraphe 1.4 pour une liste dtaille dinstruce e e e tions). Si le jeu dinstructions comporte n instructions, le codage compact de la nature de lopration demande b = log2 n bits (lentier immdiatement e e suprieur a log2 n). Il ny a aucune raison pour que le nombre dinstructions e ` dune machine soit exactement une puissance de 2, et il existe donc toujours au moins une conguration dun vecteur de b boolens qui ne correspond ` aucune e a instruction. Cela justie le cas derreur dans lalgorithme dinterprtation du e langage machine du paragraphe 1.6.2 ci-dessous, et constitue lune des causes dinterruption logicielle tudies dans la partie VI. e e On suppose que la nature dune instruction comporte implicitement linformation sur le nombre doprandes. Mme si lon imagine un langage machine e e orant par exemple une addition binaire et une addition ternaire, on consid`re e que ce sont deux instructions direntes ` compter dans les n instructions, e a et ` coder globalement. Cela donne un codage plus compact que de sparer a e le codage de la nature de linstruction et le codage dun entier donnant le nombre doprandes (qui pour une grande majorit des oprations est toujours e e e le mme). De mani`re gnrale, le choix de la structure des informations qui e e e e constituent une instruction, cest-`-dire le choix des champs, a une inuence a sur la compacit du codage. e

http://fribok.blogspot.com/

276

Le langage machine et le langage dassemblage

1.3.2

Codage des modes dadressage des param`tres e

Si le langage machine est tel quune mme opration accepte la dsignation e e e doprandes avec dirents modes dadressage, il faut coder le mode dadrese e sage de chacun des oprandes. Ce peut tre rduit ` 1 bit, comme dans le cas des e e e a oprations arithmtiques du sparc : une instruction daddition, par exemple, e e a toujours 3 param`tres, les emplacements des deux oprandes et lemplacee e ment du rsultat. Le rsultat et lun des oprandes sont forcment dans des e e e e registres. Le deuxi`me oprande peut tre dans un registre ou tre une vae e e e leur immdiate. Pour distinguer ces deux cas, le codage du mode dadressage e de ce deuxi`me oprande comporte 1 bit. Dans le cas du 68000, en revanche, e e toutes les oprations de calcul acceptent des oprandes dans des registres, ou e e en mmoire avec des modes dadressage varis. Le codage complet du mode e e dadressage de chaque oprande comporte 3 bits. e 1.3.3 Codage des informations mises en jeu dans le mode dadressage

La nature de linstruction, plus le mode dadressage des param`tres, e dtermine enti`rement quelle est la taille du reste du code (oprandes), et come e e ment il faut linterprter. En reprenant la deuxi`me colonne du tableau 12.1, on e e obtient les direntes informations ` coder : des entiers naturels (qui peuvent e a reprsenter des adresses mmoire absolues), des entiers relatifs (qui peuvent e e reprsenter des dplacements de branchements ou des oprandes doprations e e e e arithmtiques), des numros de registres. e e En gnral le nombre de registres est une puissance de 2, ce qui permet un e e codage compact et sans trous dun numro de registre. Sur le sparc, les 32 e registres sont cods sur 5 bits. Toute conguration dun vecteur de 5 boolens e e correspond ` un numro de registre existant. a e Les entiers sont cods (en binaire pur ou complment ` 2) sur une taille e e a prdnie (cest toujours la mme, elle est donc implicite et non code). Le e e e e jeu dinstructions 68000 distingue une addition gnrale et une addition dite e e rapide, selon que lun des oprandes est un entier long (32 bits) ou un entier e court tenant sur un octet. Dans ce cas, la taille de lentier param`tre est en e fait code dans la nature de linstruction : il y a deux additions. e 1.3.4 Structure du code

La gure 12.2 donne des exemples de structures de code. Le code dune instruction compl`te comporte le codage de la nature de lopration, le codage e e des modes dadressage des oprandes (si ncessaire), le codage des informae e tions eectives des oprandes (entiers, adresses, numros de registres). Ces e e dirents codages doivent tre juxtaposs pour former le codage complet de e e e linstruction. Sur certaines familles de machines, les codes des direntes inse tructions peuvent avoir des tailles direntes. Lorsque la taille est variable, elle e

http://fribok.blogspot.com/

1. Le langage machine

277

est enti`rement dtermine par la nature de linstruction et les modes dadrese e e sage des oprandes. Ces deux informations doivent tre codes dans les pree e e miers mots du code complet de linstruction, puisquils seront lus en premier. En 68000 par exemple, le premier mot de 16 bits contient ces deux informations, plus les informations relatives ` lun des oprandes, si elles tiennent dans a e la place restante. Le choix du codage prcis est guid par des considrations matrielles, e e e e qui portent sur la structure du circuit qui constitue linterface entre la partie oprative et la partie contrle du processeur (Cf. Chapitre 14). Par exemple e o les portions de code qui correspondent ` des numros de registres sont situes a e e au mme endroit quelle que soit linstruction, de mani`re ` simplier la pare e a tie oprative du processeur : les ls de slection de lensemble des bascules e e qui ralise les registres sont toujours branchs sur les mmes bits du registre e e e instruction. Cette contrainte, plus le fait que les valeurs immdiates sont ncessairement e e contigus (cest plus pratique pour la gnration de langage machine depuis e e e le langage dassemblage, et cela vite des chevauchements de nappes de ls e dans le circuit interpr`te), peut amener ` couper le codage de la nature de e a linstruction. Par exemple, sur le sparc, la nature de linstruction est code e sur les bits 31, 30, et 19 ` 24. Entre ces deux champs on trouve 5 bits pour le a numro de registre destination. e

1.4
1.4.1

Classes dinstructions usuelles


Instructions de calcul

En langage machine il ny a pas de typage des donnes, mais les types sont e implicites dans les oprations oertes. Certaines instructions ne sont utilises e e que si le programmeur interpr`te la correspondance entre vecteurs de boolens e e et entiers selon un certain code (binaire pur, complment ` 2, virgule ottante, e a dcimal cod binaire, pixels...). Il existe des oprations qui ont un sens si on e e e interpr`te les vecteurs de bits comme le codage dentiers (ADD, branchements e sur codes de conditions enti`res, voir ci-dessous), et il existe des oprations e e qui les interpr`tent comme des vecteurs de boolens (AND). En revanche il nen e e existe pas qui les interpr`tent comme le code ASCII dun caract`re ; ce serait e e le cas sil existait une instruction spcique du langage machine capable de e transformer un vecteur de bits reprsentant le caract`re a en vecteur de bits e e reprsentant le caract`re A ; cette opration est videmment ralisable sur e e e e e tout processeur, mais en passant par le codage des caract`res par des entiers e ou des vecteurs de boolens. Les seuls types sont donc les entiers et les vecteurs e de boolens ; lextension MMX [Int97] et VIS orent de plus des oprations qui e e interpr`tent les vecteurs de 32 bits comme 4 sous-vecteurs de 8 bits. e

http://fribok.blogspot.com/

278

Le langage machine et le langage dassemblage

31 3029 25 24 19 18 14 13 12 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 00 0 0 0 1 0 1 0 1 0 numro e du reg. dest. : 2 Nature de lopration : Addcc e numro e du reg. source : 1 oprande immdiat : 42 e e (a) Mode dadressage du deuxi`me e oprande : immdiat. e e Nature de lopration : AddI e Taille de lopration long mot (32 bits) e : 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 1 0 1 0 1 1 1 1 0 1 1 0 0 1 0 Mode dadressage pour le rsultat : e registre donne e Numro de registre : 7 e Valeur immdiate oprande : e e 42424242 cod sur 32 bits e (b) (poids forts dabord). Fig. 12.2 Structure du codage dune instruction : (a) codage de linstruction addcc %r1, 42, %r2 du sparc ; (b) codage de linstruction addi 42424242, D7 du 68000 (noter que 4242424210 = 028757B216 ).

Oprations sur les entiers Tous les processeurs orent les oprations dade e dition et de soustraction dentiers. La mme instruction est utilisable pour les e oprations sur les naturels cods en binaire bur et sur les entiers cods en e e e complment ` deux, grce aux bonnes proprits du codage en complment ` e a a ee e a deux (Cf. Chapitre 3). La dirence dinterprtation du codage des entiers ape e para dans les instructions de branchement conditionnels (paragraphe 1.4.3). t Certains processeurs orent galement la multiplication et la division e enti`re ; mais ce sont des instructions coteuses en temps ou en surface du cire u cuit interpr`te. Le sparc ore une instruction mulscc eectivement excutable e e en temps gal ` celui dune addition, mais cette instruction ne constitue quun e a pas de la multiplication 32 bits (la version 9 ore une vraie multiplication). Pour raliser la multiplication de deux entiers 32 bits, il faut crire 32 instruce e tions mulscc en squence. Le 68000 ore deux instructions muls et mulu de e multiplication de deux entiers signs ou non de 16 bits, dont le rsultat est sur e e 32 bits ; il ore de mme deux instructions divs et divu. e Lorsque la multiplication et la division gnrale nexistent pas, on trouve e e toutefois les instructions de dcalage arithmtique, qui permettent la division e e et la multiplication par des puissances de 2. (Cf. Chapitre 3, paragraphe 2.2.3).

http://fribok.blogspot.com/

1. Le langage machine

279

Oprations sur les vecteurs de boolens Les oprations sur les vecteurs e e e de boolens sont les extensions bit ` bit des oprateurs boolens usuels et, ou, e a e e non, nand, etc. Elles nexistent pas ncessairement toutes. Par exemple le sparc e ore AND et ANDN, OR et ORN, XOR et XORN, mais pas de NOT. ANDN (resp. ORN) calcule la conjonction (resp. la disjonction), bit ` bit, du premier oprande a e et de la ngation bit ` bit du second. Les proprits de lalg`bre de Boole e a ee e permettent de fabriquer les oprateurs manquants en termes des oprateurs e e disponibles. Pour utiliser les oprations sur les vecteurs de boolens dans la compilae e tion des oprations boolennes des langages de haut niveau, il faut inventer e e un bon codage des boolens du langage de haut niveau (Cf. Chapitre 4, parae graphe 2.2.1 et chapitre 13, paragraphe 1.2). Oprations structurelles Les oprations structurelles manipulent les vece e teurs de bits sans interprtation particuli`re de leur signication. Ce sont les e e dcalages logiques, ` droite ou ` gauche. Un dcalage ` droite, combin avec e a a e a e la conjonction boolenne bit ` bit utilise comme masquage, permet dexae a e miner individuellement tous les bits dun vecteur de bits, ou dextraire des sous-champs de longueur quelconque. Par exemple, lalgorithme suivant permet de calculer le nombre de 1 dans a e un vecteur de bits. Il utilise une opration ET bit ` bit avec loprande 1 (ceste a `-dire le vecteur de bits qui na quun 1 en poids faible) pour tester le bit de poids faible de V. A chaque tape, le vecteur V est dcal dun bit vers la e e e droite.
lexique : V : un vecteur de bits ; Nb : un entier 0 algorithme Nb 0 tantque V = 0 si (V ET bit ` bit 1 = 1) alors Nb Nb+1 a dcaler V dun bit vers la droite e

Nombre doprandes Toutes les oprations examines ci-dessus sont bie e e naires : elles ont deux oprandes et un rsultat. On pourrait donc penser que e e les instructions du langage machine doivent ncessairement dsigner 3 emplacee e ments mmoire ou registres. Cest le cas pour les machines dites ` 3 rfrences e a ee comme le sparc, o` lon crit par exemple ADD g1, g2, g3 pour raliser lafu e e fectation g3 g1+g2. Une rfrence est la dsignation dun oprande ou ee e e du rsultat, que ce soit un numro de registre ou une adresse en mmoire. e e e Mais il est possible de rduire le nombre de rfrences, et lon obtient ainsi des e ee machines dites ` 0, 1 ou 2 rfrences (voir exercice E12.1). a ee Le 68000 est une machine ` deux rfrences. Les oprations sont de la forme a ee e dest source op dest, et linstruction contient donc la dsignation de 2 e emplacements seulement. Lun est utilis ` la fois en lecture et en criture. ea e

http://fribok.blogspot.com/

280

Le langage machine et le langage dassemblage

Si lon veut maintenant ne dsigner quun emplacement, il faut que le e deuxi`me soit implicite. Cest le cas si lon introduit un registre dit accue mulateur not Acc. Les instructions sont alors de la forme : Acc Acc + e source. Le registre accumulateur doit tre charg auparavant par un transfert e e mmoire-registre ou registre-registre. e Finalement, on peut imaginer une machine ` 0 rfrence, o` les positions a ee u des deux oprandes et du rsultat sont implicites. On obtient, par exemple, e e une machine ` pile. Toute opration dpile les deux valeurs de sommet de pile a e e comme oprandes, et empile le rsultat de lopration. Une instruction est donc e e e de la forme : PILE[Sp+1] PILE[Sp] + Pile[Sp+1] ; Sp Sp+1, si Sp pointe sur le dernier emplacement occup et si la pile progresse en diminuant e Sp. 1.4.2 Instructions de transfert entre mmoire et registres e

Pour raliser un transfert de ou vers la mmoire, il faut pouvoir dsigner un e e e emplacement en mmoire, cest-`-dire fournir ladresse de son premier octet, e a et sa taille en nombre doctets. Taille de transferts La taille nest pas ` proprement parler un oprande a e de linstruction. Les tailles des transferts disponibles sont le plus souvent des constantes, en petit nombre. En gnral les tailles prvues vont de 1 octet (la e e e plus petite unit adressable sur une machine) jusqu` la taille du plus long e a mot manipulable par le jeu dinstructions, qui est aussi la taille des registres de donnes (Cf. Chapitres 9 et 15). Sur sparc on trouve ainsi des transferts de e 1, 2, ou 4 octets ; on trouve aussi un transfert double de 8 octets, qui concerne deux registres de numros conscutifs. e e Noter toutefois quil existe sur le vax une instruction de copie de blocs mmoire, dont la taille est un vrai param`tre, donn par exemple par le contenu e e e dun registre, ` lexcution. Un telle instruction a un eet quivalent ` celui a e e a dune boucle de transferts de taille xe. Elle peut avoir un intrt si le procesee seur garantit une excution plus rapide de la forme ` instruction unique, par e a rapport ` la forme avec boucle (transferts de taille xe, comptage et branchea ments explicites). Spcication compl`te des transferts Pour raliser un transfert de ou e e e vers un (ou plusieurs) registres, il faut dsigner un registre (par son numro) e e et ventuellement un sous-champ de ce registre. e Prenons lexemple du jeu dinstructions sparc. Il y a 32 registres de 32 bits. Les transferts mmoire sont de taille 1, 2, 4 ou 8 octets. Une instruction e de transfert mmoire vers registre est de la forme : LOAD t a r o` t est une e u constante parmi 1, 2, 4, 8 ; a est une adresse doctet (voir tableau 12.1 pour lobtention de cette adresse) ; r est un numro de registre, dans lintervalle e [0, 31]. Pour un transfert de taille 4, lopration est parfaitement spcie, la e e e

http://fribok.blogspot.com/

1. Le langage machine

281

source et la destination ayant la mme taille. Pour des transferts de taille 1 ou e 2, deux questions se posent : puisque la destination (un registre, de 4 octets) est plus grande que le transfert demand, dans quelle portion du registre doite on crire ? Doit-on inscrire une valeur et, si oui, laquelle, dans la portion de e registre inutilise ? e Sur le sparc, les transferts ont toujours pour destination la portion de poids faible des registres. La portion de poids fort est complte, soit par des ee zros (on parle alors de transfert non sign), soit par une recopie du bit de e e poids fort de la portion transfre (on parle alors de transfert sign). Cette ee e opration rappelle bien videmment lopration dextension de format, tenant e e e compte du codage en binaire pur ou complment ` deux, que nous avons tudie e a e e au chapitre 3, paragraphe 3.2.1. Sur le 68000, la portion dun registre qui nest pas destination du transfert est laisse intacte. e Sur le sparc, les instructions de transfert mmoire vers registres, de taille e infrieure a 4, existent donc en deux versions : la version dite signe, et la e ` e version non signe. Ces direntes conventions sont illustres et dtailles dans e e e e e la gure 12.3 (cas du LOAD de sparc). Les noms des instructions sont obtenus en combinant LD (pour LOAD) ou ST (pour STORE), le caract`re sign ou non e e du transfert (U pour unsigned, rien pour signed), et un caract`re spciant e e la taille : B pour byte, cest-`-dire octet, H pour half, rien pour la taille dun a mot, D pour double. Dans le cas des transferts doubles, 2 registres R et R interviennent. Linstruction nen dsigne quun ; le deuxi`me est implicite, cest e e le registre de numro suivant. De plus, le registre indiqu doit avoir un numro e e e pair. On retrouve l`, pour lensemble des registres, lquivalent des contraintes a e dalignement en mmoire. e Lors dun transfert registre vers mmoire (cas des STORE du sparc, e gure 12.3), des questions symtriques se posent. Si la taille du transfert e est infrieure ` celle du registre source, quelle portion du registre doit-on e a transfrer ? Dautre part, si la taille du transfert est suprieure ` loctet, e e a ladresse en mmoire doit satisfaire les contraintes de cadrage en mmoire e e mentionnes au chapitre 4, paragraphe 2.3. Si ladresse en mmoire est une e e constante, cette contrainte dalignement est vriable statiquement, cest-`e a dire avant lexcution, et le programme peut-tre rejet. En gnral, toutefois, e e e e e ladresse en mmoire nest pas une constante ; cest par exemple le contenu dun e registre, dans le cas de ladressage indirect par registre. La contrainte dalignement est alors vrie dynamiquement, cest-`-dire au moment de lexcution e e a e du programme par le processeur.
Nous verrons au chapitre 24 que ces erreurs dalignement en mmoire lors des e transferts font partie des exceptions ou interruptions logicielles prvues dans e un processeur.

http://fribok.blogspot.com/

282

Le langage machine et le langage dassemblage

Oprations LOAD e registre 32 bits R 31 24 23 16 15 87 0 a a+1 a+2 a+3 w x y z Mmoire e

Oprations STORE e 1 octet

transfert MEM R

taille 4

sign e

inst. LD

MEM R

non

LDUH

MEM R

oui

LDH

MEM R MEM R MEM R, R

1 1 8

non oui

LDUB LDB LDD

R MEM

ST

R MEM R MEM R, R MEM

2 1 8

STH STB STD

eet R[7..0] 1 MEM[a+3] ; R[15..8] 1 MEM[a+2] ; R[23..16] 1 MEM[a+1] ; R[31..24] 1 MEM[a] R[7..0] 1 MEM[a+1] R[15..8] 1 MEM[a] ; R[31..16] 2 ext16(0) R[7..0] 1 MEM[a+1] R[15..8] 1 MEM[a] ; R[31..16] 2 ext16(R[15]) R[7..0] 1 MEM[a] ; R[31..8] 3 ext24(0) R[7..0] 1 MEM[a] ; R[31..8] 3 ext24(R[7]) idem LD plus : R[7..0] 1 MEM[a+7] ; R[15..8] 1 MEM[a+6] ; R[23..16] 1 MEM[a+5] ; R[31..24] 1 MEM[a+4] MEM[a] 1 R[31..24] ; MEM[a+1] 1 R[23..16] ; MEM[a+2] 1 R[15..8] ; MEM[a+3] 1 R[7..0] MEM[a] 1 R[15..8] ; MEM[a+1] 1 R[7..0] MEM[a] 1 R[7..0] idem ST plus : MEM[a+4] 1 R[31..24] ; MEM[a+5] 1 R[23..16] ; MEM[a+6] 1 R[15..8] ; MEM[a+7] 1 R[7..0]

Fig. 12.3 Transferts registres vers mmoire et mmoire vers registres du sparc. On e e note ext16(b) (resp. ext24(b)) le mot de 16 (resp. 24) bits obtenu en copiant 16 fois (resp. 24 fois) le boolen b. e

http://fribok.blogspot.com/

1. Le langage machine

283

1.4.3

Instructions de rupture de squence e

Pour dnir compl`tement les instructions de rupture de squence, il faut e e e spcier, dune part linstruction de destination, dautre part la condition de e branchement. Les branchements sont dits relatifs ou absolus selon la mani`re e dindiquer linstruction de destination. Ils sont dits inconditionnels lorsque la condition est la constante boolenne vrai. Si la condition de branchement a la e valeur faux il y a passage en squence. e Branchements relatifs ou absolus Le branchement peut tre relatif ` e a la position courante du compteur programme linstruction spcie alors un e dplacement d en avant ou en arri`re par rapport au compteur programme ou e e absolu linstruction spcie une nouvelle valeur v du compteur programme, e qui doit craser lancienne. Leet dune instruction de branchement relatif sur e le compteur programme not PC est de la forme : PC PC + d. Leet dune e instruction de branchement absolu, au contraire, est de la forme PC v. Que lon indique un dplacement ou une adresse de destination absolue, il e faut choisir un mode dadressage : par une constante immdiate, indirectement e par un registre, avec ou sans dplacement, etc. e Noter que la notion de branchement relatif ou absolu est parfaitement indpendante du mode dadressage direct ou indirect. On peut envisager toutes e les combinaisons. Il existe ainsi sur le sparc une instruction jmpl de branchement inconditionnel, absolu, indirect par registre avec dplacement : le codage e de linstruction contient deux numros de registres n1 et n2 (ou bien un numro e e de registre n et une constante relative d). Leet sur le compteur programme est de la forme PC Regn1 + Regn2 (ou bien PC Regn + d). Il existe aussi une instruction ba de branchement inconditionnel, relatif, immdiat. e Donne du dplacement En cas de branchement relatif, le dplacement est e e e un nombre doctets, spciant lcart entre la valeur courante de PC et ladresse e e de linstruction de destination. Noter que dans la plupart des machines la valeur courante de PC est dj` sur linstruction suivante (Cf. Chapitre 14). Le ea dplacement nest pas un entier tout ` fait quelconque : il est pair si le codage e a des instructions se fait sur un nombre pair doctets. Sur le processeur sparc, ce dplacement est mme toujours multiple de 4, car toutes les instructions e e sont codes sur un format xe de 4 octets (voir paragraphe 1.3). On peut e alors proter de cette information pour gagner de la place dans le codage des instructions de branchement : au lieu de coder le dplacement exact d, on code e d = d/4, ce qui conomise 2 bits. Leet de linstruction est alors de la forme : e PC PC + d 4 (voir tableau rcapitulatif des modes dadressages 12.1). e Expression dune condition de branchement Dans un langage de programmation de haut niveau, les conditions des structures conditionnelles ou itratives sont des expressions boolennes quelconques qui font intervenir des e e

http://fribok.blogspot.com/

284

Le langage machine et le langage dassemblage

constantes, des noms de variables du lexique, des appels de fonctions, etc. (Cf. Chapitre 4, paragraphe 1.5). Dans une instruction du langage machine, il para dicile de coder t une condition quelconque faisant intervenir le contenu des registres ou de la mmoire et dventuels appels de fonctions. e e Une solution consiste ` utiliser les instructions de calcul du langage maa chine pour calculer la valeur boolenne de lexpression qui conditionne un e branchement. On obtient ainsi, apr`s un certain nombre dtapes, une valeur e e boolenne, range par exemple dans un registre ou une partie de registre. Le e e branchement conditionnel peut ensuite tre eectu dapr`s la valeur de ce e e e registre. On peut donc fabriquer un langage machine susant en ajoutant aux instructions de calcul, une unique instruction de branchement conditionnel de la forme BV n a. Cette instruction est un branchement si condition vraie, par exemple absolu, avec adressage absolu. Leet sur le compteur programme PC est : si Regn = vrai alors PC a sinon PC PC+1. Considrons le programme : e
si (A+2*B < 4 et C 0) alors ... sinon ...

On peut toujours le transformer en :


X : un boolen { une nouvelle variable, non utilise ailleurs } e e X A+2*B < 4 et C 0 si X alors ... sinon ...

Cette transformation est aisment gnralisable ` toutes les structures e e e a conditionnelles ou itratives du langage dactions. Elle permet de comprendre e comment produire une squence dinstructions du langage machine correspone dante. Il sut dcrire tout dabord une squence dinstructions de calcul et/ou e e de transferts mmoire destines ` placer dans un registre, par exemple Reg1 , la e e a valeur boolenne de la condition (A+2*B < 4 et C 0). Suit immdiatement e e une instruction BV 1 a, qui ralise un branchement dapr`s la valeur de Reg1 . e e (Pour une explication dtaille du codage des structures conditionnelles et e e itratives en langage machine, voir chapitre 13, paragraphes 1.3 et 1.4). e En ralit la plupart des processeurs orent une mthode intermdiaire e e e e entre lunique instruction de branchement conditionnel prsente ici et e e lhypothtique instruction universelle contenant le codage dune condition e boolenne quelconque. Ces mthodes sont bases sur lutilisation des indie e e cateurs arithmtiques (ou ags en anglais) fournis par le processeur. Dans e certains cas elles saccompagnent de lutilisation du mot dtat du processeur, e qui permet de stocker temporairement la valeur de ces indicateurs. Indicateurs arithmtiques et mot dtat Lide est simple : lors de toute e e e opration de calcul, lunit arithmtique et logique du processeur produit des e e e comptes-rendus sous la forme de 4 boolens dits indicateurs arithmtiques, qui e e peuvent tre stocks dans une portion de registre interne spcialis, appel mot e e e e e dtat du processeur. Noter que sur le sparc, les instructions arithmtiques e e

http://fribok.blogspot.com/

1. Le langage machine

285

existent en deux exemplaires : une version qui ne touche pas aux indicateurs, et une version qui les met ` jour. a Ces 4 indicateurs sont : Z, qui est vrai si le rsultat de lopration est 0 ; C, e e qui est vrai si lopration arithmtique a produit une retenue (C pour Carry) e e et qui, si lon interpr`te les oprandes et le rsultat comme des entiers naturels e e e cods en binaire pur, signie que le rsultat nest pas codable sur le mme e e e nombre de bits que les oprandes ; N, qui est le bit de poids fort du rsultat e e (si ce rsultat est interprt comme le codage en complment ` 2 dun entier e ee e a relatif, si N vaut 1 alors le rsultat est ngatif) ; V, qui na de sens que si e e lon interpr`te les oprandes et le rsultat comme des entiers relatifs cods en e e e e complment ` 2, et qui est vrai si le rsultat nest pas reprsentable sur le mme e a e e e nombre de bits que les oprandes (V pour oVerow). Reprendre le chapitre 3 e pour un expos dtaill de la signication des divers indicateurs arithmtiques. e e e e Si lon consid`re un processeur qui travaille sur des nombres rels e e reprsents en virgule ottante, il faut tenir compte dautres indicateurs ; il e e existe pour la reprsentation en virgule ottante une notion de dbordement e e pour des valeurs trop petites ou trop grandes, non reprsentables avec la e prcision disponible. e

Expression des conditions de branchement ` base dindicateurs a arithmtiques et de mot dtat Considrons le cas o` les indicateurs e e e u arithmtiques sont stocks dans un registre apr`s lexcution de chaque e e e e opration arithmtique. On introduit alors des oprations de branchement e e e dapr`s les valeurs de ces indicateurs (mme ide que pour le branchement e e e unique BV prsent plus haut, mais la condition peut utiliser 4 boolens au lieu e e e dun seul). Sur des processeurs 8 bits comme le 6502, il y a 8 branchements, dapr`s e la valeur vrai ou faux des 4 boolens. e Sur la plupart des processeurs actuels, il y a 16 branchements, selon des fonctions boolennes prdnies des indicateurs Z, N, C et V, correspondant e e e aux tests de comparaison usuels entre deux entiers naturels ou relatifs. On trouve ainsi un branchement BLE (Branch on Less or Equal) dont la condition est Z ou (V et non N ou non V et N). Lorsquon a eectu une soustrace tion entre deux entiers A et B, les bits du registre dtat sont tels que cette e condition est vraie si et seulement si A B, en interprtant A et B comme des e entiers relatifs cods en complment ` 2, pour faire la comparaison. En eet, e e a Z est vrai quand A = B, et la partie V et non N ou non V et N signie que A < B, en tenant compte des cas o` la soustraction dborde. Nous donnons u e les 16 fonctions boolennes usuelles au paragraphe 1.5. Lexercice E12.7 tudie e e la formule boolenne associe au branchement BLE. e e

http://fribok.blogspot.com/

286

Le langage machine et le langage dassemblage

Expression des conditions de branchement ` base dindicateurs a arithmtiques sans mot dtat Sur certains processeurs, on peut troue e ver des instructions qui combinent un test et un branchement. Par exemple, le processeur mips r10000 fournit une instruction qui combine un test et un branchement conditionnel sur les entiers. La condition est soit lgalit de deux e e registres, soit la comparaison dun registre par rapport ` zro (= 0, < 0, > 0, a e 0). Considrons le fragment de programme : e
A, B : des entiers si A = B alors ... sinon ...

Le code produit est simple : il nest pas ncessaire de calculer la valeur de e la condition boolenne A = B avant deectuer un branchement, si les deux e entiers sont dans des registres. On crit une seule instruction de la forme e BrEgal n1 n2 a dont leet est : si Regn1 = Regn2 alors PC a sinon PC PC+1. Toutefois, pour coder si A < B, il faut tout dabord eectuer une soustraction, et en placer le rsultat dans un registre explicitement manipul par le e e programmeur. Sauts ` des sous-programmes Enn tous les processeurs fournissent un a moyen de transfrer le contrle ` un sous-programme, avec sauvegarde de e o a ladresse de dpart, pour reprendre le ot normal des instructions quand le e sous-programme se termine. Considrons le programme suivant, dans lequel JSR est une intruction de e saut ` un sous-programme, RTS est linstruction de retour de sous-programme a et Inst-i dnote une instruction de calcul quelconque (ne provoquant pas e de rupture de squence). JSR a comme oprande une tiquette qui dsigne e e e e le sous-programme ; lexcution de JSR provoque un branchement (donc e une rupture de squence) au sous-programme dsign avec sauvegarde de e e e ladresse qui suit linstruction JSR. Linstruction RTS provoque un retour de sous-programme cest-`-dire un branchement ` ladresse qui avait t a a ee prcdemment sauvegarde. En cas de branchements successifs ` des souse e e a programmes, les adresses de retour doivent tre gres en pile. e ee 1 2 3 4 5 6 Inst-1 JSR SP1 Inst-2 Inst-3 JSR SP2 Inst-4 SP1 Inst-5 Inst-6 RTS SP2 Inst-7 Inst-8 JSR SP1 Inst-9 RTS

Lexcution de ce programme en terme des instructions Inst-i peut tre e e dcrite par la squence : Inst-1 (Inst-5 Inst-6) Inst-2 Inst-3 (Inst-7 e e Inst-8 (Inst-5 Inst-6) Inst-9) Inst-4 dans laquelle nous avons utilis une e parenth`se ouvrante chaque fois quun appel ` un sous-programme (instruce a tion JSR) est excut et une parenth`se fermante lors du retour correspondant e e e

http://fribok.blogspot.com/

1. Le langage machine

287

(instruction RTS). Lors du premier appel (excution de JSR SP1) ladresse saue vegarde est 3 ; lexcution de linstruction RTS eectue le retour ` cette adresse. e e a Linstruction de branchement avec sauvegarde de ladresse de dpart est e gnralement spcique : il sagit dune instruction de branchement qui nest e e e pas ordinaire puisquil lui faut intgrer une sauvegarde. Or apr`s le saut il est e e trop tard pour sauvegarder ladresse do` lon vient ; avant le saut il nest pas u toujours tr`s simple de la calculer. Selon les machines ladresse sauvegarde e e est ladresse qui suit le branchement, ou ladresse du branchement elle-mme ; e le retour de sous-programme doit tre cohrent avec ce choix. e e Les instructions de branchement ` des sous-programmes peuvent tre aba e solues ou relatives, et ladressage peut-tre direct ou indirect par registre, avec e ou sans dplacement. Sur le sparc on dispose de deux instructions de brane chement avec sauvegarde, qui peuvent donc tre utilises pour coder des sauts e e a ` des sous-programmes : call et jmpl. call est un branchement relatif ` a adressage direct, qui sauvegarde sa propre adresse dans un registre, toujours le mme. jmpl est un branchement absolu ` adressage indirect par registre avec e a dplacement, qui sauvegarde sa propre adresse dans un registre spci par e e e linstruction. Nous dtaillons au chapitre 13 lutilisation des instructions de saut ` des e a sous-programmes, et la structure de pile sous-jacente, pour le codage des actions et fonctions paramtres des langages impratifs usuels, comme celui e e e prsent au chapitre 4. e e

1.4.4

Combinaison test/instruction sans branchement

On trouve sur certains processeurs, par exemple mips r10000, ultrasparc, PentiumPro, des instructions de transfert de registres conditionnels. Une telle instruction est conditionne par le rsultat de lopration prcdente e e e e e et permet dviter des branchements explicites. Nous empruntons ` [SL96] e a lexemple suivant :
A, B : des entiers A min (A, B)

Le code produit est de la forme :


{ supposons A dans le registre r1 et B dans le registre r2 } SUB r1, r2, r3 { cest-`-dire r3 r1 r2 } a { cest-`-dire : si r3 > 0 alors r1 r2 } a MOV COND GT r3, r2, r1

La question intressante avec ce type de langage machine est : comment e crire un algorithme de traduction des langages de haut niveau en langage e machine qui prote au mieux de ces instructions sophistiques ? Les compie lateurs pour machines de ce type font appel ` des techniques assez labores a e e doptimisation de code.

http://fribok.blogspot.com/

288

Le langage machine et le langage dassemblage

1.4.5

Instructions spciales e

La plupart des langages machines comportent, outre les instructions usuelles prsentes jusque l`, des instructions spciques imposes par des e e a e e contraintes dordres assez divers. Par exemple, on trouve sur certaines machines de la famille x86 des instructions spciques in et out pour le contrle des priphriques e o e e dentre/sortie. Nous verrons au chapitre 16 un exemple dtaill dans lequel e e e la commande du coupleur dentre/sortie est compl`tement assimilable ` une e e a criture en mmoire, et peut donc se faire par des instructions de transfert e e vers la mmoire dj` dnies. Du point de vue du concepteur du langage mae ea e chine, cela implique que les adresses dacc`s ` la mmoire, telles quelles sont e a e produites par le processeur (qui les lit dans le codage des instructions) ` desa tination des bo tiers mmoire (Cf. Chapitre 15) sont ensuite aiguilles vers de e e la mmoire vritable ou vers un circuit dentres/sorties, dapr`s leur valeur ; e e e e typiquement, un intervalle dadresses est rserv aux circuits dentres/sorties. e e e Si les connexions du processeur ` la mmoire et aux priphriques ne vrient a e e e e pas cette contrainte, le processeur doit mettre lui-mme une indication daie e guillage, et cela ne peut se faire que si linstruction elle-mme comporte line formation ncessaire. Do` lexistence dinstructions spciques in et out. e u e Le processeur sparc comporte une instruction tr`s spcique sethi (pour e e SET High bits) ncessaire ` linstallation dune valeur immdiate de 32 bits e a e dans un registre. En eet, toutes les instructions sparc sont codes sur 32 e bits exactement, sans mot dextension. Une valeur immdiate v de 32 bits ne e peut donc pas tenir dans ce codage ; il ny a pas dinstruction de la forme set v, r, o` v est une valeur immdiate de 32 bits et r un numro de registre. u e e Comment raliser une telle opration ? Le jeu dinstructions sparc propose e e de raliser laectation dune constante 32 bits ` un registre en deux inse a tructions du langage machine : la premi`re aecte les 22 bits de poids fort e du registre ; la deuxi`me met ` jour les 10 bits de poids faible sans modier e a les 22 bits de poids fort (une instruction comme add ou or avec une valeur immdiate sur 13 bits convient). Pour faciliter lcriture de tels couples dinse e tructions, le langage dassemblage ore des macro-notations %hi et %lo qui permettent dextraire respectivement les 22 bits de poids fort et les 10 bits de poids faible dune constante. On crit ainsi : sethi %hi(0x0A08CF04), %r1 ; e or %r1, %lo(0x0A08CF04), %r1. En langage machine, la valeur immdiate e contenue dans linstruction or est 0x304 et celle contenue dans linstruction sethi est 0x028433. On trouve galement des instructions daddition ADDX et de soustrace tion SUBX qui prennent en compte comme troisi`me oprande la retenue de e e lopration prcdente (prsente dans le bit C du mot dtat). En encha e e e e e nant de telles instructions, on ralise laddition dentiers cods en complment ` e e e a 2 ou en binaire pur sur plusieurs mots de 32 bits. Lexercice E12.6 dtaille e lutilisation de cette instruction.

http://fribok.blogspot.com/

1. Le langage machine

289

Finalement, la plupart des langages machines comportent des instructions spcialement conues pour faciliter la traduction des langages de haut niveau. e c Nous dtaillons au chapitre 13 lexemple des instructions link et unlink du e 68000, ou save et restore du sparc.

1.5

Description du langage machine par le lexique dune machine squentielle ` actions e a

Pour un algorithme donn, pour comprendre le langage machine, on peut e dnir une machine squentielle ` actions (Cf. Chapitre 5) dont : 1) les actions e e a sont les instructions de calcul disponibles du langage machine ; 2) les prdicats e sont les conditions de branchement oertes par le langage machine ; 3) les transitions sont les branchements conditionnels ou inconditionnels et le passage en squence du langage machine. e Ces machines squentielles ont un lexique restreint caractris par : des e e e branchements uniquement binaires, des oprations sur des vecteurs de bits de e longueur xe, pris dans des registres ou dans le tableau MEM reprsentant la e mmoire ; des prdicats de branchement pris dans un ensemble prdni de e e e e formules boolennes ` base dindicateurs N, Z, C et V. e a La gure 12.4 donne le lexique dune telle machine squentielle ` ace a tions. La gure 12.5 donne un exemple dalgorithme exprim comme machine e squentielle ` actions. Nous verrons au chapitre 13 comment obtenir facilement e a a ` partir de cette machine un programme en langage machine ou un texte du langage dassemblage.

1.6

Algorithme dinterprtation du langage machine e

Une autre mani`re de comprendre le langage machine est den donner un e algorithme dinterprtation. e Lorsque lon travaille sur un ordinateur dont le processeur a pour langage machine prcisment le langage machine considr, le programme en lane e ee gage machine est directement interprt par le processeur, qui constitue une ee ralisation cble de lalgorithme dinterprtation. Nous prcisons cette notion e a e e e au chapitre 14. Lorsque le langage machine est mul (Cf. Paragraphe 1.7.2) sur un ordinae e teur quelconque, lalgorithme dinterprtation est exprim dans un langage de e e programmation comme C, compil (cest-`-dire traduit en langage machine de e a lordinateur hte) puis excut sur cet ordinateur (voir chapitre 18 pour plus o e e de dtails sur la dirence entre interprtation et compilation). e e e 1.6.1 Un petit langage machine

Nous considrons un langage machine ` 5 instructions. La nature de linse a truction est code sur un octet. Il y a toujours un octet dextension contenant e

http://fribok.blogspot.com/

290

Le langage machine et le langage dassemblage

{ Types mots de 8, 32 bits : } Vecteur8 : un tableau sur [0..7] de boolens e Vecteur32 : un tableau sur [0..31] de boolens e { Les 8 registres : } R : un tableau sur [0..7] de Vecteurs32 NumReg : le type entier sur 0..7 { La mmoire : } e MEM : un tableau sur [0..tmem1] de Vecteurs8 { Les indicateurs doprations arithmtiques } e e N, Z, C, V : des boolens e { Les prdicats : } e fonctionA un boolen e { fonctionA = vrai } fonctionNev un boolen e { fonctionNev = faux } fonctionN un boolen e { fonctionN = N } fonctionZ un boolen e { fonctionZ = Z } fonctionC un boolen e { fonctionC = C } fonctionV un boolen e { fonctionV = V } fonctionNbar un boolen e { fonctionN = non N } fonctionVbar un boolen e { fonctionVbar = non V } fonctionCbar un boolen e { fonctionCbar = non C } fonctionZbar un boolen e { fonctionZbar = non Z } fonctionBGU un boolen e { fonctionBGU = non (C ou Z) } fonctionBGE un boolen e { fonctionBGE = non (N ouexcl V) } fonctionBG un boolen { fonctionBG = non (Z ou (N ouexcl V)) } e fonctionBLEU un boolen e { fonctionBLEU = C ou Z } fonctionBL un boolen e { fonctionBL = (N ouexcl V) } fonctionBLE un boolen e { fonctionBLE = Z ou (N ouexcl V) } { Quelques actions : } SoustReg : une action (les donnes un, deux, trois : 3 NumReg) e lexique X : un entier dans [2331 , 2331 1] algorithme X R[un] - R[deux] { Cf. Chapitre 3, Paragraphes 2.2.5 et 3.2.3 } si (R[un]31 et non R[deux]31 et non X31 ) ou (non R[un]31 et R[deux]31 et X31 ) alors V 1 sinon V 0 si (non R[un]31 et R[deux]31 ) ou (X31 et (non R[un]31 ou R[deux]31 )) alors C 1 sinon C 0 Z si X31..0 = 0 alors 1 sinon 0 N X31 R[trois] X31..0 Fig. 12.4 Le langage machine dcrit par le lexique dune machine squentielle avec e e actions. On ne dcrit ici que linstruction soustraction avec mise ` jour des e a indicateurs arithmtiques e

http://fribok.blogspot.com/

1. 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 { proprit : A = B = pgcd(A0, B0) } ee

SoustReg (1,2,3) fonctionZ fonctionZbar SoustReg (1, 2, 3) fonctionBGU fonctionBLEU SoustReg(1,2,1) SoustReg(2,1,2) fonctionA

fonctionA

fonctionA Fig. 12.5 Traduction dun algorithme en machine squentielle ` actions et lexique rese a treint : la machine peut bien sr tre simplie. Initialement, A0 et B0 sont u e e respectivement dans les registres 1 et 2.

http://fribok.blogspot.com/

292

Le langage machine et le langage dassemblage

un numro de registre. Les instructions sont : ADD (addition dun registre e et dune valeur immdiate, donne dans un octet dextension), BT (branchee e ment inconditionnel absolu, adressage direct par registre, dont le numro est e donn dans un octet dextension), BZ (branchement si le rsultat de la derni`re e e e opration de calcul tait nul, relatif, direct par registre, numro dans un octet e e e dextension), INCRR (incrmentation dun registre, numro dans un octet dexe e tension) et INCRM (incrmentation dun mot mmoire, adressage indirect par e e registre, numro dans un octet dextension). Une machine proche de celle-ci e est utilise au chapitre 14 ; une autre plus compl`te au chapitre 22. e e

1.6.2

Interprtation e

Pour dcrire linterprtation dun programme crit dans notre petit langage e e e machine, nous supposons ici que le programme est install en mmoire, ` partir e e a de ladresse dbut. Le probl`me gnral de linstallation du codage binaire dun e e e e programme en mmoire, ou chargement, est tudi au chapitre 18. e e e Chaque instruction est code sur 1 octet, plus un ou deux octets dextene sion. Lalgorithme dinterprtation est donn gure 12.6. e e Noter la complexit de certaines actions, par exemple celle ncessaire ` e e a linterprtation dune instruction dincrmentation en mmoire, avec adrese e e sage indirect par registre : MEM[Reg[NumReg]] MEM[Reg[NumReg]] + 1. Nous verrons au chapitre 14 les contraintes quimpose une telle action sur ce quon appelle la partie oprative du processeur, cest-`-dire lunit de calcul, e a e les registres et les bus. Au niveau algorithmique, il est facile de remplacer cette action complexe par une action quivalente : e
temp MEM[Reg[NumReg]] temp temp + 1 MEM[Reg[NumReg]] temp

qui fait appara un nouveau registre temp. Cette nouvelle forme permet de tre sparer lacc`s en criture de lacc`s en lecture ` la mmoire. e e e e a e Noter galement le cas derreur lorsque le code dinstruction lu ne correse pond ` aucune instruction valide (il est en eet possible que le codage de a lensemble des instructions en vecteurs de n bits ne constitue pas une fonction surjective, comme nous lavons signal au paragraphe 1.3.1). Dans un e programme dinterprtation du langage machine, on peut mettre un message e e derreur. Lorsque le langage machine est directement interprt par le procesee seur, cette erreur doit galement tre dtecte, et signale au programmeur. e e e e e Nous y revenons au chapitre 24, paragraphe 1.2. En toute rigueur, il faudrait prvoir une dtection derreur lors de la lecture e e dun numro de registre dans un octet : NumReg MEM[PC], ` moins de e a supposer que toute conguration dun vecteur de 8 boolens correspond eectie vement ` un numro de registre existant, cest-`-dire que la machine comporte a e a 256 registres.

http://fribok.blogspot.com/

1. Le langage machine

293

lexique Vecteur8 : un tableau sur [0..7] de boolens e Vecteur32 : un tableau sur [0..31] de boolens e Reg : le tableau sur 0..31 de Vecteurs32 { Les 32 registres } NumReg : le type entier sur 0..7 ; adresse : le type entier sur 0..tmem1 MEM : un tableau sur [adresse] de Vecteurs8 { La mmoire } e Z : un boolen e { Indicateur dopration arithmtique } e e ADD, BT, BZ, INCRR, INCRM : les constantes de type Vecteur8 : 0, 1, 2, 3, 4 Inst : un Vecteur8 ; PC : une adresse dbut : une adresse ; taille : un entier > 0 e { MEM[dbut ... dbut+taille] contient les instructions } e e algorithme PC dbut e tantque PC < dbut + taille e Inst MEM[PC] { premier octet } ; PC PC + 1 { Lire no registre, ncessaire pour toutes les instructions (1 octet) } e NumReg MEM[PC] ; PC PC + 1 { lecture autres octets selon linstruction } selon Inst : Inst = ADD : { ajout de la valeur immdiate, troisi`me octet : } e e Reg[NumReg] Reg[NumReg] + MEM[PC] ; PC PC + 1 si Reg[NumReg] = 0 alors Z 1 sinon Z 0 Inst = BT : { NumReg est le numro du registre dindirection } e PC Reg[NumReg] Inst = BZ : { NumReg est le numro du registre dindirection } e si Z alors { branchement eectif } PC PC + Reg[NumReg] sinon { PC PC + 1 dj` eectu : passage en squence } ea e e Inst = INCRR : { NumReg est le numro du registre ` incrmenter } e a e Reg[NumReg] Reg[NumReg] + 1 si Reg[NumReg] = 0 alors Z 1 sinon Z 0 Inst = INCRM : { NumReg est le numro du registre dindirection, e qui donne ladresse de lemplacement mmoire ` e a incrmenter } e MEM[Reg[NumReg]] MEM[Reg[NumReg]] + 1 si MEM[Reg[NumReg]] = 0 alors Z 1 sinon Z 0 sinon : { code dinstruction invalide. Cf. Chapitre 24 } Fig. 12.6 Algorithme dinterprtation du petit langage machine e

http://fribok.blogspot.com/

294

Le langage machine et le langage dassemblage

1.7

Crit`res de choix dun ensemble dinstructions e

Nous rsumons ci-dessous quelques-unes des contraintes ` prendre en e a compte globalement pour le choix dun jeu dinstructions. Cest un probl`me e qui ne se pose quaux concepteurs de processeurs, mais lutilisateur dun processeur doit en tre conscient. e 1.7.1 Contraintes issues du co t du circuit interpr`te u e

Selon que lon privilgie la varit des instructions oertes par le langage e ee machine, ou bien le cot du circuit interpr`te (le processeur), on construit des u e jeux dinstructions assez dirents. e Lexemple typique consiste ` comparer un sparc et un 68000. Le sparc est a une machine dite RISC (pour Reduced Instruction Set Computer). En ralit e e lensemble des oprations eectivement disponibles nest pas si rduit que cela, e e mais les modes dadressage sont rudimentaires : toute opration arithmtique e e se fait sur des registres, et il nexiste que deux instructions spciques Load e et Store pour raliser des acc`s mmoire. Les instructions sont codables sur e e e un format xe, et leur interprtation est algorithmiquement simple. Le circuit e interpr`te est donc simple, lui aussi. La simplicit, en termes de matriel, se e e e traduit par la taille du circuit (en nombre de portes par exemple). Il reste donc de la place pour quiper le processeur dun grand nombre de registres (peut e tre de lordre de 500, nous verrons au chapitre 13 comment utiliser ce banc de e registres du sparc pour rendre ecace le codage des procdures dun langage e dactions). Dautre part le format xe des instructions permet de les excuter e toutes dans le mme temps. e Le 68000, en revanche, autorise gnralement 8 modes dadressage pour les e e oprations. Les instructions ont un format variable selon quelles font rfrence e ee ou non ` un oprande en mmoire, qui doit tre dsign par son adresse. a e e e e e Lalgorithme dinterprtation est plus complexe. Le processeur est microproe gramm (Cf. Chapitre 10) et les interprtations des instructions ont des dures e e e direntes. e 1.7.2 Probl`mes de compatibilit e e

La dnition dun langage machine pour une nouvelle machine nest jae mais totalement libre. Une nouvelle machine est en gnral une tape dans e e e une gamme de machines similaires plus anciennes, pour lesquelles il existe de nombreux programmes. Lorsquun constructeur propose la machine de gnration n + 1, il doit ase e surer que les programmes qui fonctionnent sur les machines de gnration n e e peuvent tre rutiliss. Cette notion cache de nombreux niveaux. Elle peut e e e signier, simplement, que le constructeur fournit avec sa nouvelle machine un syst`me et un compilateur pour chaque langage qui tait disponible auparae e vant. Un utilisateur ayant programm en C doit transmettre dune machine e

http://fribok.blogspot.com/

1. Le langage machine

295

a ` lautre les chiers source de ses programmes, les compiler avec le nouveau compilateur, et les excuter. e Malheureusement les utilisateurs tr`s anciens ont parfois perdu les chiers e source de leurs programmes, ou bien, ce qui est le cas pour presque tous les logiciels commerciaux, ils navaient achet le programme que sous sa forme e excutable. Ils ne disposent donc plus que du chier objet, cest-`-dire un proe a gramme en langage machine de gnration n. Le constructeur doit alors garane e tir la compatibilit ascendante de ses machines, cest-`-dire faire en sorte que e a le chier objet de gnration n soit interprtable sur la machine de gnration e e e e e n + 1. Il y a essentiellement deux solutions. Si les deux machines sont conceptuellement proches lune de lautre, le jeu dinstructions de la nouvelle machine est dni comme un sur-ensemble du jeu dinstructions de lancienne. Les ane ciens programmes sont excutables directement sur la nouvelle machine ; ils e nutilisent quune partie du nouveau jeu dinstructions, et sont donc peut-tre e moins ecaces que ce quils auraient pu tre en protant au mieux du nouveau e jeu dinstructions. Cest le cas entre sparc et ultrasparc. Si les deux machines sont tr`s direntes, le constructeur fournit un e e mulateur du langage machine n sur la machine n + 1. Un mulateur est un e e programme, crit dans un langage quelconque, par exemple C, et compil sur e e la nouvelle machine, avec le nouveau compilateur C. Ce programme est un interpr`te du langage machine n. Le code objet des anciens programmes nest e donc plus directement interprt par un processeur, mais par un programme, ee lui-mme compil et excut sur un autre processeur. e e e e Cest le cas des macintosh : les processeurs 68000 et PowerPC sont tr`s e dirents et il ny a pas de compatibilit ascendante de leurs jeux dinstruce e tions. Apple fournit donc un mulateur de 68000 parmi les programmes du e logiciel de base fourni avec les machines ` PowerPC. a 1.7.3 Langage machine et traduction des langages de haut niveau, machines-langages

Le jeu dinstructions dune machine peut comporter, outre les classes dinstructions usuelles du mod`le Von Neumann, des instructions tr`s spciques e e e destines ` la traduction des programmes en langage de haut niveau. e a On peut dire ainsi que le 68000 est une machine pour la compilation des langages ` structures de blocs (Pascal, C, Ada, etc.). Le jeu dinstructions a comporte les instructions link et unlink qui ne servent qu` grer lallocation a e dynamique de mmoire pour les variables dun tel type de langage (Cf. Chae pitre 13). De la mme mani`re, le processeur sparc ore les instructions save et e e restore qui permettent de dcaler une fentre sur le banc de registres. e e Ce mcanisme permet lallocation de mmoire pour le contexte local dune e e procdure, et le passage de param`tres directement dans les registres, sans e e

http://fribok.blogspot.com/

296

Le langage machine et le langage dassemblage

acc`s mmoire. e e De mani`re gnrale, la conception des processeurs est de plus en plus e e e indissociable de la compilation des langages de haut niveau. Si lon pousse le raisonnement ` lextrme, le jeu dinstructions dune maa e chine peut tre enti`rement conu pour lexcution de programmes crits dans e e c e e un langage donn. On a ainsi construit des machines LISP, des machines e PROLOG, etc. On entend parler galement de machines JAVA. Dans ce dere nier cas, de quoi sagit-il exactement ? Les concepteurs du langage JAVA en ont fait la publicit avec des arguments de portabilit et de scurit : JAVA e e e e est dabord compil en une forme intermdiaire (appele byte code) qui est e e e ensuite excutable, par interprtation, sur tout ordinateur qui poss`de line e e terpr`te adquat. Lexcution sous forme dinterprtation est censment plus e e e e e sre que lexcution par le processeur dun programme en langage machine ; u e en eet, loutil dinterprtation peut eectuer quelques vrications sur les e e oprations quil eectue. Si maintenant on propose un processeur dont le lane gage machine est exactement le format intermdiaire produit par la premi`re e e phase de compilation de Java, on obtient une machine Java. En gnral, la question se pose de savoir sil vaut mieux concevoir une e e machine ddie ` un langage particulier, et capable dassurer une excution e e a e ecace des programmes crits dans ce langage, ou bien concevoir un bon come pilateur de ce langage pour machine universelle.

2.

Le langage dassemblage

Le langage machine ore dj` tout ce qui est thoriquement ncessaire pour ea e e programmer nimporte quel algorithme. Il lui manque une notation lisible et manipulable par un tre humain. Le langage dassemblage est introduit ` cet e a eet et ore donc : tout dabord une notation textuelle aisment lisible du langage mae chine, cest-`-dire : 1) une notation des oprations de la machine (les a e mnmoniques) et de leurs oprandes, 2) un ensemble de directives de e e rservation et dinitialisation de la mmoire e e la possibilit dintroduire des commentaires e une notion de zones distinctes dans un programme : la zone des instructions (TEXT) et la zone de donnes (DATA, BSS), ainsi quune notation qui e permet de reprer facilement les portions de programme appartenant ` lune e a ou lautre de ces deux zones. un mcanisme de nommage des positions dans la zone des instructions ou e dans la zone de donnes, qui permet de sabstraire des valeurs explicites e dadresses mmoire. e Notons quil peut exister plusieurs langages dassemblage pour le mme lane gage machine. Les dirences rsident en gnral dans la notation des modes e e e e

http://fribok.blogspot.com/

2. Le langage dassemblage

297

dadressage des oprandes dinstructions, ou dans les mots-cls utiliss pour e e e les directives de rservation mmoire. Inversement, un constructeur ore soue e vent des langages dassemblage aussi similaires que possible pour des machines quipes de processeurs dirents. Ainsi la syntaxe des assembleurs SUN este e e elle la mme, en ce qui concerne la dnition des zones de donnes, que le e e e processeur soit un 68000 ou un sparc.

2.1

Aspects de lexicographie et macros

Les langages dassemblage usuels orent la possibilit dintroduire des come mentaires, dlimits par exemple comme en C par : /* et */ ou par un cae e ract`re, par exemple ! et la n de ligne qui suit. e Ils orent galement la notation des constantes enti`res dans plusieurs bases e e (typiquement dcimal, octal prxe 0 , hexadcimal prxe 0x), ainsi e e e e que la notation des constantes enti`res du code ASCII directement sous forme e de caract`res : a reprsente lentier not 97 en dcimal (voir chapitre 3 pour e e e e des dtails sur le codage des caract`res). e e Enn il est en gnral possible, soit dans lassembleur, soit dans un outil e e situ en amont et appel macro-assembleur, de dnir des constantes textuelles. e e e Ce mcanisme permet dviter une redondance dcriture, qui m`ne souvent ` e e e e a des incohrences lors des modications. On crit ainsi en dbut de chier une e e e ligne de la forme tailleMax=400. Lors de lassemblage, une premi`re passe sur e le texte du programme remplace toute occurrence de la cha de caract`res ne e tailleMax (sauf dans les commentaires) par la cha 400. Ce mcanisme ne e est assez limit, mais dj` tr`s utile. Un outil comme m4, disponible dans les e ea e environnements unix, permet de dnir des macros paramtres ; il est ainsi e e e possible de nommer une suite dinstructions qui appara souvent. t

2.2

Structuration des programmes

Un programme en langage dassemblage est destin ` tre traduit en laneae gage machine, puis plac en mmoire vive pour excution par le processeur. e e e Un programme comprend gnralement des instructions et des donnes (rese e e pectivement lalgorithme et les descriptions de variables du lexique, dans la terminologie du langage dactions prsent au chapitre 4). Le codage binaire e e du programme comporte donc le codage dinstructions, et le codage de donnes e (des entiers, des caract`res, des donnes structures, etc.). e e e Or en langage machine, rien nest typ. Le vecteur de boolens 00101010 e e peut tre vu aussi bien comme : un entier naturel cod en binaire pur, le e e code ASCII dun caract`re, 2 champs du codage dune instruction, la partie e exposant du codage dun rel, etc. Si la zone de mmoire sur laquelle on fait e e travailler le processeur contient des cha de bits qui correspondent au codage nes doprations valides, on peut excuter ces oprations. Il ny a pas de dirence e e e e intrins`que entre donnes et programmes. e e

http://fribok.blogspot.com/

298

Le langage machine et le langage dassemblage

Pour les besoins de la programmation, le langage dassemblage fournit une notion de zone dans les programmes, et une notation correspondante. Les zones sont : TEXT pour les instructions ; DATA pour les donnes statiques, cest-`e a dire dont la valeur est donne directement dans le texte du programme ; BSS e pour les donnes seulement dynamiques. Linuence de la distinction entre les e zones DATA et BSS est explique au chapitre 18. e Retenons simplement pour linstant que la zone TEXT contient les instructions, et la zone DATA un ensemble de donnes initialises que lon dsire placer e e e en mmoire vive lors de lexcution du programme. Ces donnes se comportent e e e comme des variables globales dun langage de programmation impratif : elles e ont la dure de vie du programme. e

2.3

Nommage des adresses ou tiquettes e

Pour reprer les instructions dans la zone TEXT, ou les donnes dans la e e zone DATA, le langage dassemblage fournit la notion dtiquette. Ce mcanisme e e permet de faire abstraction des adresses absolues et des dcalages exacts, dans e le cas des branchements par exemple. On crit typiquement, dans un langage dassemblage possible du processeur e sparc (BNE, SUBcc et BA sont des mnmoniques. voir paragraphe suivant) : e
boucle: SUBcc r1, r2, r3 BNE fin ! n instructions ici BA boucle

fin:

Les branchements conditionnels du sparc sont relatifs, et BNE fin exprime donc le dcalage des adresses entre la position de linstruction elle-mme et la e e cible du branchement, situe ` ltiquette fin. En langage machine, le code e a e de linstruction BNE fin comprend un entier relatif qui donne le dplacement e en nombre doctets, divis par 4, cest-`-dire le dplacement en nombre dinse a e tructions puisque toutes les instructions du sparc sont codes sur 4 octets. e Pour BNE fin on trouve un dplacement de n + 2 ; pour BA boucle, on trouve e (n + 2). La traduction des instructions de la forme BNE fin du langage dassemblage en instructions du langage machine demande le calcul du dcalage eectif. Cest e un travail ralis par lassembleur, qui ralise une analyse lexicale du texte du e e e programme, et associe ` chaque tiquette une adresse relative au dbut du a e e programme. Dans lexemple ci-dessus, on associe 0 ` boucle et (n + 3) 4 ` a a fin. Cest susant pour calculer les dcalages signals ci-dessus. e e Lorsque les branchements sont absolus, lutilisation dune tiquette permet e de mani`re similaire de faire abstraction de ladresse absolue destination du e branchement. Du point de vue du programmeur en langage dassemblage, il nest donc pas ncessaire de savoir si les branchements sont relatifs ou absolus. e

http://fribok.blogspot.com/

2. Le langage dassemblage

299

En revanche lassembleur doit maintenant traduire les tiquettes en adresses e absolues, dans la mmoire vive de la machine, au moment de lexcution. Pour e e cela il faut conna ladresse de base ` laquelle le programme sera install ; tre a e cette information nest pas toujours disponible au moment de lassemblage du programme. Il se pose alors un nouveau probl`me : comment produire un e programme en langage machine indpendant de sa position dinstallation en e mmoire ? Un tel objet est appel code translatable. Nous tudions sa produce e e tion au chapitre 18, paragraphe 2.3. Dans des ordinateurs simples o` les programmes sont toujours installs ` u e a partir de la mme adresse en mmoire, il nest pas ncessaire de produire du e e e code translatable.

2.4

Zone des instructions, mnmoniques et notation des e oprandes e

Observons Figure 12.7 un exemple, donn dans un langage dassemblage e possible pour processeur sparc. On associe ` chaque instruction un mnmonique, cest-`-dire un nom court a e a et vocateur. Par exemple LDUH signie LoaD Unsigned Half, cest-`-dire chare a gement non sign, de taille demi-mot. e Une instruction tient en gnral sur une ligne, commenant par un e e c mnmonique dinstruction, suivi de notations doprandes spars par des vire e e e gules. Il semble que le terme langage dassemblage vienne de l` : il sagit dasa sembler ces direntes parties pour constituer une instruction. e Les param`tres des instructions peuvent tre : des registres, des constantes, e e des dsignations dadresses en mmoire par lintermdiaire de modes dadrese e e sage plus ou moins sophistiqus. e Les registres sont en gnral nomms, par des noms dans lesquels appara e e e t une numrotation, comme r1, r2, .... Il peut exister plusieurs noms pour e un mme registre physique : on parle dalias. Lorsquil y a tr`s peu de registres, e e les noms des registres peuvent tre intgrs aux mnmoniques. On trouve par e e e e exemple dans un langage dassemblage pour processeur 6502 les mnmoniques e LDA, LDY et LDX qui correspondent au chargement des registres A, Y et X. Les constantes enti`res sont notes en utilisant une des bases disponibles, e e ou mme par lintermdiaire du code ASCII (Cf. Paragraphe 2.1). Lutilisation e e des constantes textuelles permet dcrire ADD r1, MAX, r4 ` la place de ADD e a r1, 4, r4. Noter que linstruction ADD du sparc exige des registres comme premier et troisi`me oprande, mais autorise un registre ou une constante (susamment e e petite) comme deuxi`me oprande. La dirence entre ces deux cas doit bien e e e sr tre code dans linstruction du langage machine correspondante, puisque u e e linterprtation dun des champs de linstruction en dpend (valeur immdiate e e e ou numro de registre). Or le mnmonique est le mme dans les deux cas. La e e e distinction est donc faite par lassembleur sur des crit`res lexicographiques : e

http://fribok.blogspot.com/

300

Le langage machine et le langage dassemblage

MAX=4 ADDcc ADD LDUH BNE CALL JMPL

! dfinition dune constante textuelle e .text ! dbut de la zone TEXT e r1, r2, r3 r1, MAX, r4 [r1+4], r2 labas fonction r2+r3, r0 Fig. 12.7 Exemple de zone TEXT

VAL=250 ISE=-125 .data XX : .long 0x15

YY :

ZZ :

! ! ! ! ! .half -12 ! ! .byte VAL ! ! .byte ISE ! ! .skip 12000 ! ! .asciz "toto" ! ! ! .align 4 ! .long XX ! ! !

dbut de zone de donnes e e e tiquette 4 octets initialiss avec le vecteur de e bits dcrit par 0x15 en hexadcimal, e e reprables par ltiquette XX e e 2 octets initialiss avec le codage e de -12 (ncessairement en complment ` 2) e e a un octet initialis avec le codage e de 250 (ncessairement en binaire pur) e un octet initialis avec le codage e de -125 (ncessairement en complment ` 2) e e a une zone contigu de 12000 octets, e non initialiss. e 5 octets, initialiss avec les codes e ASCII des caract`res t, o, t, o e et un octet mis ` zro pour finir. a e directive dalignement 4 octets initialiss avec le codage e binaire de ladresse absolue reprsente par ltiquette XX. e e e

Fig. 12.8 Exemple de zone DATA

http://fribok.blogspot.com/

2. Le langage dassemblage

301

on peut toujours distinguer une cha de caract`res qui constitue la notation ne e dune constante enti`re, dune cha de caract`res qui constitue un nom de e ne e registre, grce ` la lettre r qui prc`de le numro. Lorsquil risque dy avoir a a e e e confusion, ou mme simplement pour des raisons de lisibilit, les constantes e e sont prxes par le caract`re #. On crit ainsi dans un langage dassemblage e e e e pour 68000 : ADDI #4, D0. Les notations les plus compliques viennent des modes dadressage. Pour e des raisons de lisibilit et de comprhension du programme, le langage dasseme e blage propose en gnral une notation particuli`re pour les modes dadressage e e e qui supposent une indirection. Ce peuvent tre des crochets ou des parenth`ses. e e On crit ainsi LDUH [r1+4], r2 dans un langage dassemblage pour sparc, e ou move.l (A1), D1 dans un langage dassemblage pour 68000 (voir exemple complet, gure 12.9). Les dplacements ventuels sont nots par des additions, e e e comme dans LDUH [r1+4], r2. Enn un langage dassemblage peut dnir des pseudo-instructions. Par e exemple, le jeu dinstruction sparc tant limit, il nexiste pas dinstruction e e de comparaison de deux entiers (lquivalent de linstruction CMP du 68000). e On utilise donc une soustraction de la forme SUBcc r1, r2, r0 pour mettre a ` jour les indicateurs arithmtiques selon le rsultat de la comparaison de e e r1 et r2 (r0 est un registre spcial, dans lequel lcriture na aucun eet. Voir e e exercice E12.2). Lassembleur permet dcrire simplement CMP r1, r2, qui sera e traduit en langage machine exactement comme SUBcc r1, r2, r0. CMP est une pseudo-instruction. Notons que certaines pseudo-instructions remplacent parfois plusieurs instructions.

2.5

Zone de donnes et directives de e rservation mmoire e e

La zone de donnes comporte des directives de rservation demplacements e e mmoire, avec dnition dune valeur initiale ` y placer avant de dmarrer e e a e lexcution du programme. Le codage de ces donnes en langage machine est e e simplement le codage binaire des constantes indiques par le programmeur. e Observons lexemple de la gure 12.8. .long, .half, .byte et .asciz sont des directives de rservation mmoire e e avec initialisation. Elles sont suivies de la donne dune constante, sous des e formes diverses : nom de constante textuelle (.byte VAL), notation dentier en hexadcimal (.long 0x15), en dcimal (.half -12), etc. La constante peut e e aussi tre donne sous la forme dune tiquette (.long XX). Une tiquette e e e e reprsente une adresse, donc un entier positif. La seule dicult provient du fait e e que ladresse absolue associe ` ltiquette nest pas connue avant le chargement e a e en mmoire pour excution. On retrouve ici pour les donnes la notion de code e e e translatable dj` mentionne au paragraphe 2.3. ea e Dans le cas de .asciz, la taille est dtermine par la constante cha de e e ne caract`res associe. Ainsi .asciz "toto" rserve 5 = 4 + 1 octets, dont les e e e

http://fribok.blogspot.com/

302

Le langage machine et le langage dassemblage

4 premiers sont initialiss avec les codes ASCII des caract`res t, o, t, e e o et le dernier avec un caract`re de code 0. On respecte ainsi la convention e de reprsentation des cha e nes de caract`res utilise en C, cest-`-dire sous la e e a forme dune adresse de dbut, sachant que la cha est marque par 0. e ne e .skip est une directive de rservation mmoire sans initialisation. On la e e trouve plutt en zone BSS que DATA, puisque la zone BSS permet de rserver o e de la mmoire non initialise (Cf. Chapitre 18). e e .align est une directive de cadrage mmoire ncessaire pour tenir compte e e des contraintes dalignement mmoire dont nous avons parl au paragraphe 2.3 e e du chapitre 4. La directive .align 4 (resp. .align 2) tient compte de toutes les rservations mmoire eectues auparavant, et mnage un espace perdu de e e e e la taille ncessaire pour atteindre la prochaine adresse multiple de 4 (resp. 2). e

3.

Traduction du langage dassemblage en langage machine

La traduction du langage dassemblage en langage machine est eectue e par loutil appel assembleur des environnements de programmation. Cet outil e a essentiellement 3 fonctions : il ralise lanalyse lexicale et syntaxique du texte crit en langage dasseme e blage, diverses vrications comme par exemple lutilisation correcte des e modes dadressage et peut rejeter des programmes pour erreurs lexicales ou syntaxiques ; cette phase danalyse peut saccompagner de lexpansion des macro-notations et des dnitions de constantes ; e il ralise le codage en binaire des instructions et des donnes : transfore e mation des mnmoniques doprations et des notations de modes dadrese e sage en codage des instructions, transformation des directives de rservation e mmoire en codage binaire des donnes initialises ; e e e il ralise la traduction des tiquettes (ou symboles) en adresses absolues e e ou dplacements. En maintenant au cours du traitement un compteur ase sociant a chaque instruction une adresse calcule par rapport au dbut du ` e e programme, il est facile de calculer les dplacements relatifs. Par contre les e valeurs absolues ne peuvent tre calcules tant que lon ignore ladresse ` e e a laquelle le programme sera implant. Nous revenons sur ce point au chae pitre 18 ` propos de code translatable. a Nous montrons dans la section suivante ` travers quelques exemples la a traduction en langage machine sparc et 68000.

4.

Un exemple de programme

Considrons lalgorithme qui permet de dterminer le nombre de bits ` 1 e e a dans la reprsentation en binaire pur dun entier : e

http://fribok.blogspot.com/

4. Un exemple de programme

303

Lexique : x : un entier 0 { la donne } e NombreDeUns : un entier 0 { le rsultat ` calculer } e a Algorithme : NombreDeUns 0 tantque x = 0 si x mod 2 = 0 alors NombreDeUns NombreDeUns + 1 x x div 2

Nous donnons ci-dessous des programmes correspondants dans des langages dassemblage possibles pour les processeurs sparc et 68000, et les programmes en langage machine correspondants. Noter quen langage dassemblage les oprations arithmtiques notes x mod 2 et x div 2 sont remplaces e e e e par des manipulations explicites de vecteurs de boolens (dcalage logique et e e masquage).

4.1

Programme pour 68000

La gure 12.9 donne un programme en langage dassemblage pour processeur 68000. Nous donnons ci-dessous le codage des instructions, accompagn de e ladresse de rangement, et du texte en langage dassemblage obtenu par dcodage dans un dsassembleur. e e
0x0 0x6 0x8 0xA 0xC 0xE 0x10 0x16 0x18 0x1A 0x1C 0x1E 0x24 43f9 00000028 2211 7000 4a81 6710 2401 0282 00000001 6702 5280 e281 60ec 23c0 0000002c 4e75 lea move.l moveq tst.l beq move.l andi.l beq addq.l asr.l bra move.l rts 40,A1 (A1),D1 #0,D0 D1 +16 D1,D2 #1,D2 +2 #1,D0 #1,D1 -20 D0,44

Noter que lon produit du code comme si le programme dmarrait ` e a ladresse 0. Les donnes sont places apr`s la zone texte ; la zone data come e e mence donc ici ` ladresse 0x28. Le codage de la zone data est : 0000002a, a cest-`-dire la valeur 42 en dcimal code sur 16 bits. a e e Lorsque le programme est charg em mmoire centrale, les adresses sont e e translates en fonction de ladresse ` laquelle le programme est rang en e a e mmoire (Cf. Chapitres 18 et 20). e Dtaillons le codage de quelques instructions : e Exemple 1 : 43f9 00000028 lea Donnee, A1

http://fribok.blogspot.com/

304

Le langage machine et le langage dassemblage

! Correspondance des variables et des registres : ! x : D1 ! NombreDeUns : D0 .data ! ZONE DE DONNEES INITIALISEES Donnee : .long 42 ! un mot de 4 octets contenant ! le codage binaire de lentier ! not 42 en decimal. e .bss ! ZONE DE DONNEES non INIT. Resultat : .skip 4 ! un mot de 4 octets .text ! ZONE DE PROGRAMME .global main ! ncessaire (Cf. Chap. 18, 2.) e main : ! le pt dentre sappelle e ! ncessairement main. e lea Donnee,A1 !transfert de la mmoire vers un registre e !en adressage indirect par registre adresse. move.l (A1), D1 deb calcul : moveq 0,D0 ! NombreDeUns <-- 0 condition tq : tst.l D1 ! tantque (x !=0) beq fin tq ! branchement lorsque cond. fausse corps tq : si : move.l D1,D2 andi.l 1,D2 ! si (x mod 2 != 0) alors beq fin si alors : addq.l 1,D0 ! NombreDeUns<--NombreDeUns+1 fin si : asr.l D1 ! x <-- x div 2 bra condition tq fin tq : move.l D0, Resultat ! transfert dun registre vers la mmoire e ! en adressage direct fin prog : rts ! fin de programme. Fig. 12.9 Nombre de 1 : programme en langage dassemblage pour 68000

http://fribok.blogspot.com/

4. Un exemple de programme

305

Il sagit dune instruction load eective address dans un registre. 43f9 est le codage de la nature de linstruction, du numro de registre e (A1) et du mode dadressage utilis pour lautre oprande (cest cela qui e e dtermine sil y a des mots dextension ` lire, et combien). e a 00000028 : 2 mots dextension de 16 bits chacun, donnant la valeur dune adresse. Ici 0x28 en hexadcimal, cest-`-dire 40 en dcimal : cest la taille e a e en octets de la zone TEXT. Les donnes sont places en mmoire apr`s e e e e les instructions, et Donnee est le premier objet de la zone DATA. Exemple 2 : 2211 move.l (A1), D1 Tout est cod en 16 bits : la nature de lopration, la taille des oprandes e e e sur laquelles elle sapplique, la description des modes dadressage des deux oprandes (direct ou indirect par registre, numro de registre). e e Exemple 3 : 6710 beq +16 Tout est cod en 16 bits : la nature de lopration (un branchement si e e Z), le dplacement de 16 octets, par rapport ` linstruction qui suit celle e a du branchement. Linstruction de branchement est ` ladresse 0xC : la a suivante ` ladresse 0xE ; la destination ` ladresse 0x1E. a a

4.2

Programme pour sparc

La gure 12.10 donne un programme en langage dassemblage pour processeur sparc. Le codage des donnes (zone data) est : 0000 002a 0000 0000. Le codage e des instructions (zone text) donne une suite de mots de 32 bits, chacun codant une instruction.
9de3bfc0 90000000 808a6001 93326001 a0142000 21000000 80a24000 02800003 10bffff8 d0240000 a0142000 02800009 01000000 01000000 81c7e008 d2040000 01000000 90022001 21000000 81e80000

Exemple 1 : 21000000 a0142000 set Donnee, %l0 Il sagit dune pseudo-instruction permettant laectation dune valeur de 32 bits, ladresse Donnee en zone data. Elle est remplace par deux e instructions sethi %hi(Donnee), %l0 et or %l0, %lo(Donnee), %l0 dont les codages respectifs sont : 21000000 et a0142000. La valeur associ ` Donnee ntant pas connue lors de la traduction, les champs corea e respondants sont pour linstant mis ` 0. Ils seront mis ` jour lors du a a chargement du programme en mmoire centrale. Linformation concere nant Donnee est prsente dans les informations de translation et la table e des symboles (Cf. Chapitre 18). Exemple 2 : 01000000
nop

http://fribok.blogspot.com/

306

Le langage machine et le langage dassemblage

! Correspondance des variables et des registres : ! x : o1 ! NombreDeUns : o0 .data ! ZONE DE DONNEES INITIALISEES Donnee : .long 42 ! un mot de 4 octets contenant ! le codage binaire de lentier ! not 42 en decimal. e .bss ! ZONE DE DONNEES non INIT. Resultat : .skip 4 ! un mot de 4 octets ! non initialis. e .text ! ZONE DE PROGRAMME .global main ! ncessaire (Cf. Chap. 18, 2.) e main : ! le pt dentre sappelle e ! ncessairement main. e save %o6, -64, %o6 ! voir codage des actions. set Donnee, %l0 ! transfert de la mmoire vers un registre : e ld [%l0], %o1 deb calcul : add %g0,%g0,%o0 ! NombreDeUns <-- 0 condition tq : subcc %o1,%g0,%g0 ! tantque (x !=0) be fin tq ! branchement lorsque ! condition fausse nop corps tq : si : andcc %o1,1,%g0 ! si (x mod 2 != 0) alors be fin si nop alors : add %o0,1,%o0 ! NombreDeUns<--NombreDeUns+1 fin si : srl %o1,1,%o1 ! x <-- x div 2 ba condition tq nop fin tq : set Resultat, %l0 ! transfert dun registre vers la mmoire e st %o0, [%l0] fin prog : ret ! fin du programme restore Fig. 12.10 Nombre de 1 : programme en langage dassemblage pour sparc

http://fribok.blogspot.com/

4. Un exemple de programme

307

Linstruction nop nexiste pas en sparc. Elle est code par une instruce tion ayant un eet nul : une addition ou une disjonction portant sur le registre spcial %g0. e Exemple 3 : d2040000 ld [%l0], %o1 Cette instruction peut tre code compl`tement. Le mot de 32 bits se e e e dcompose en : e
code op 1 1 0 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

http://fribok.blogspot.com/

308

Le langage machine et le langage dassemblage

Exemple 4 : 02800009 be fin_tq Lopration est code sur les bits 31 et 30 (resp. 0 et 0) et 24 ` 22 (010). e e a La condition equal est code sur les bits 28 ` 25 (0001). Le dplacement e a e est cod sur les bits 21 ` 0 ; la valeur est ici 9, ce qui correspond au e a nombre dinstruction de linstruction de branchement jusqu` ltiquette a e fin tq.

5.

Exercices

E12.1 : Machines ` 0, 1, 2 ou 3 rfrences a ee Nous allons tudier lcriture dun algorithme simple dans un programme en e e langage dassemblage de jeux dinstruction de dirents types. Dans la suite de e cet exercice nous notons val une valeur immdiate et adr une adresse. Nous e utilisons les conventions dcriture du langage dassemblage similaire au sparc e dcrite dans ce chapitre. ope reprsente le mnmonique dune instruction e e e parmi add, mult, sub et div, OP est lopration arithmtique associe. e e e Traduire pour chacune des machines et langages dassemblage associs e dcrits ci-apr`s lalgorithme suivant, en convenant que A est ` ladresse a, e e a . . .et Y ` ladresse y : a
Lexique : A, B, C, D, E, F : des entiers { des donnes } e Y : un entier { le rsultat ` calculer } e a Algorithme : Y (A + B + C) / (D * E * F - 3)

Mme exercice avec le sparc. Pour chaque type de machine, observer la e taille du code obtenu en nombre dinstructions, estimer le nombre doctets ncessaires au codage du programme. e 1) Jeu dinstructions ` 1 rfrence et 1 seul registre : la machine correspona ee dant ` ce type dinstruction poss`de un registre de calcul appel accumulateur a e e (not acc) qui est toujours utilis dans les instructions de calcul. Laccumulae e teur est un des deux oprandes et le rsultat est forcment stock dans celui-ci. e e e e Lensemble des instructions ne poss`de quune rfrence : e ee instruction ope val ope [adr] store adr load val load [adr] signication acc acc OP val acc acc OP MEM[adr] MEM[adr] acc acc val acc MEM[adr]

2) Jeu dinstructions ` 2 rfrences et mode dadressage restreint : on raa ee joute ` la machine prcdente dautres registres (nots Ri). Chacun deux a e e e poss`de les mmes fonctionnalits que acc. La destination du calcul est toue e e jours un registre. Une des deux rfrences (servant de source et destination) ee est en mode dadressage registre direct.

http://fribok.blogspot.com/

5. Exercices

309

instruction ope Ri val ope Ri [adr] ope Ri Rj store Ri adr load Ri val load Ri [adr]

signication Ri Ri OP val Ri Ri OP MEM[adr] Ri Ri OP Rj MEM[adr] Ri Ri val Ri MEM[adr]

Les processeurs fabriqus autour de lanne 1975 (famille 8080 dintel et 6800 e e de motorola) utilisaient ces deux types dinstructions (1 et 2 rfrences). ee Dans le cas de lutilisation de laccumulateur linstruction est plus rapide. 3) Machine ` 2 rfrences et modes dadressage varis : on ajoute un mode a ee e dadressage indirect par registre. Une des deux rfrences est forcment en ee e mode dadressage registre direct (mais pas forcment la destination). Les inse tructions load et store sont remplaces par une instruction unique move. e instruction signication Rf. destinations en mode dadressage registre direct e ope val, Ri Ri val OP Ri ope [adr], Ri Ri Ri OP MEM[adr] ope [Rj], Ri Ri Ri OP MEM[Rj] Rf. destination en mode dadressage absolu e ope Ri,[adr] MEM[adr] MEM[adr] ope Ri Rf. destination en mode dadressage reg. indirect e ope Ri,[Rj] MEM[Rj] MEM[Rj] OP Ri Instruction move move Rj, Ri Ri Rj move val, Ri Ri val move [adr], Ri Ri MEM[adr] move Ri, [adr] MEM[adr] Ri Les processeurs de la famille 68000 de motorola (` patir de lanne 1980) a a e un jeu dinstructions de structure similaire avec un jeu de mode dadressage encore plus large. 4) Machine ` 0 rfrence : cest une machine qui ncessite une pile. Les a ee e instructions dopration se font toujours avec les deux oprandes qui sont au e e sommet de la pile (et qui sont alors enleves de la pile), le rsultat est stock e e e sur la pile. Ces instructions nont donc pas besoin de rfrences. Il faut pouvoir ee stocker des valeurs sur la pile avant les calculs, on ajoute donc deux instructions particuli`res push et pop. Celles-ci ont une rfrence. On suppose ici que le e ee pointeur de pile SP pointe sur le dernier emplacement occup et que la pile e progresse en diminuant SP.

http://fribok.blogspot.com/

310

Le langage machine et le langage dassemblage

instruction ope push val push [adr] pop [adr]

signication MEM[SP+1] MEM[SP] OP MEM[SP+1] ; SP SP+1 SP SP - 1 ; MEM[SP] val SP SP - 1 ; MEM[SP] MEM[adr] MEM[adr] MEM[SP] ; SP SP + 1

E12.2 : Utilisation du registre %g0 du sparc Larchitecture du processeur sparc introduit un objet manipulable comme un registre, mais qui poss`de des proprits particuli`res : lcriture dans ce ree ee e e gistre, en gnral not %g0, na pas deet, et la lecture de ce registre donne e e e toujours 0. Dautre part le sparc est une machine ` trois rfrences. Une insa ee truction de calcul op a trois arguments s1, s2 et d, et ralise laectation d e op(s1, s2). Le dernier argument est toujours un registre, donc toute opration crase un registre. Utiliser le registre %g0 pour raliser une compae e e raison et un test ` 0 en termes de soustraction. a E12.3 : Transferts mmoire/registres en sparc e Dans le jeu dinstructions du processeur sparc on trouve des instructions de chargement dune portion de registre (octet, B ou demi-mot, H) en mmoire e signes (LDB, LDH) ou non signes (LDUB, LDUH). Pour linstruction de rangement e e en mmoire (STB, STH), ce nest pas le cas. Pourquoi ? Dans le processeur 68000 e on na pas le probl`me. Pourquoi ? e E12.4 : Calcul dun modulo X tant un entier naturel, crire une ou plusieurs instructions sparc (ou e e de toute autre machine) permettant de calculer X mod 256 et gnralement e e X mod 2n . E12.5 : Dcoupage dun entier en octect e X tant un entier cod sur 32 bits (4 octets), O1, O2, O3 et O4 dsignant e e e 4 emplacements mmoire de 1 octet pas ncessairement contigus, crire une e e e squence dinstructions en langage dassemblage de nimporte quelle machine e permettant de ranger les octets X31..24 , X23..16 , X15..8 et X7..0 respectivement aux adresses O1, O2, O3 et O4. E12.6 : Addition double longueur Se convaincre que N, C, V ont un sens apr`s la suite dinstructions ADDcc, e r1, r2, r3 ; ADDXcc r4, r5, r6, par rapport aux entiers 64 bits cods rese pectivement dans les couples de registres (r3, r6), (r2, r5) et (r1, r4). En particulier comprendre que tout marche bien pour le complment ` 2, bien e a quon ne transmette que C dans ADDXcc. Z na plus de sens, en revanche. Pour comprendre pourquoi, tudier le probl`me suivant : comment tester que la e e somme, ralise en deux instructions, de deux entiers 64 bits occupant chacun e e 2 registres, est nulle ?

http://fribok.blogspot.com/

5. Exercices

311

E12.7 : Expressions boolennes associes aux branchements usuels e e A et B sont deux entiers reprsents dans les 2 registres %l0 et %l1 du sparc. e e Apr`s lexcution de linstruction subcc %l0, %l1, %g0 quelles doivent tre e e e les valeurs de Z, N, C, V pour que A B si A, B Z ? Mme question pour e que A B si A, B N ? Noter que A B A < B ou A = B ; pour A < B, envisager les 2 cas : A B est calculable ou lopration provoque un dbordement. Retrouver la e e formule : Z or (N xor V ). Etudier de mme les formules associes ` toutes les conditions de branchee e a ments. E12.8 : Plus Grand Commun Diviseur Donner en langage dassemblage sparc ou 68000 une squence dinstruce tions permettant de calculer le pgcd de deux entiers. Sinspirer de la machine squentielle ` actions dcrite dans le paragraphe 1.5 (Cf. Figure 12.5). Suppoe a e ser que les valeurs initiales A0 et B0 sont dans deux registres. Pour traduire la boucle ditration, sinspirer de lexemple trait dans le paragraphe 4. du e e prsent chapitre. e E12.9 : Observation de code produit On donne ci-dessous un programme en C et le programme en assembleur sparc produit par le compilateur gcc. Analyser le code produit pour y retrouver les structures de contrle de lalgorithme dcrit en C. o e
main () { int i ; int T[10] ; i = 0 ; while (i < 10) { T[i] = 2*i + 1 ; i = i + 1 ; } }

La structure de procdure du programme C donne les lignes 3, 25 et 26 e (Cf. Chapitre 13, paragraphe 3.5).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 .text main: save %sp,-104,%sp mov 0,%o0 .LL2: cmp %o0,9 ble .LL4 nop b .LL3 nop .LL4: mov %o0,%o2 sll %o2,2,%o1 sethi %hi(T),%o3 or %o3,%lo(T),%o2 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 mov %o0,%o3 sll %o3,1,%o4 add %o4,1,%o3 st %o3,[%o1+%o2] add %o0,1,%o0 b .LL2 nop .LL3: .LL1: ret restore .data T: .skip 40

http://fribok.blogspot.com/

Chapitre 13 Traduction des langages ` a structure de blocs en langage dassemblage


Nous nous intressons ici au probl`me de la traduction dun langage ` e e a structure de blocs en langage machine ou, de mani`re quivalente, en langage e e dassemblage. Le petit langage dactions prsent au chapitre 4 est un bon e e reprsentant de langage impratif ` structure de blocs, qui sont ici les actions e e a et les fonctions paramtres, munies de lexiques locaux. e e En tudiant la traduction de ce petit langage nous rencontrons les e probl`mes communs poss par la traduction dun langage impratif comme e e e Pascal, Ada, C, C++, Java ... La traduction des constructions de haut niveau de ces langages (objets de C++ ou Java, gnricit dAda, etc.) ou la traduce e e tion des langages non impratifs, pose de nouveaux probl`mes, qui dpassent e e e le cadre de cet ouvrage. La plupart du temps, les langages dont la structure est tr`s loigne dun style impratif comme celui prsent ici, sont traduits en e e e e e e langage dassemblage en passant par une tape intermdiaire (un programme e e C par exemple). Parmi toutes les mthodes ` mettre en oeuvre pour traduire un programme e a du langage dactions en langage machine, nous avons dj` tudi certains ea e e points : Au chapitre 4 nous avons montr comment reprsenter les types complexes e e en mmoire, et comment transformer les aectations ` des objets complexes e a en suite de transferts mmoire de taille xe. e e Indpendamment, nous avons montr au chapitre 5 comment traduire les e e structures de contrle en tats et transitions dune machine squentielle ` o e e a actions, et comment dnir le lexique de cette machine. e Au chapitre 12 nous avons dni un lexique restreint pour machine e squentielle ` actions, qui correspond ` la structure dun langage machine e a a type : les tests doivent tre uniquement binaires, et les prdicats restreints e e a ` un ensemble de fonctions prdnies sur des variables Z, N, C et V qui e e

http://fribok.blogspot.com/

314

Traduction des langages ` structure de blocs en langage dassemblage a

modlisent les indicateurs arithmtiques. Les variables du lexique restreint e e reprsentent la mmoire (le tableau MEM) et les registres. e e Comment utiliser ces transformations pour obtenir le programme en langage dassemblage correspondant ` un programme du langage dactions, et que a reste-t-il ` faire ? Deux types de probl`mes se posent. a e Tout dabord, il faut dcrire la transformation de chaque bloc (action ou e fonction) dun programme du langage dactions en machine squentielle ` e a lexique restreint, pour se rapprocher dun langage machine. En particulier, puisque le lexique restreint ne propose que le tableau MEM et quelques variables reprsentant les registres, il faut dcider, pour chacune des variables e e dnies dans le bloc, dun emplacement mmoire qui lui correspond. La die e cult de linstallation en mmoire du lexique vient de lexistence des lexiques e e locaux de fonctions et des actions ventuellement rcursives. Il faut dautre e e part traduire toutes les structures conditionnelles et itratives en nutilisant e que des branchements binaires, portant des prdicats prdnis sur Z, N, C et e e e V. Supposons maintenant quon a su obtenir, pour chaque bloc (action ou fonction) du langage dactions, une machine squentielle ` lexique restreint. Il e a ne reste plus qu` traduire ces machines squentielles en textes de programmes a e en langage dassemblage. Cela demande de disposer de mani`re squentielle les e e codages des dirents tats, avec les branchements adquats ; il faut nalement e e e coder les appels de procdures ou fonctions en utilisant les instructions dappel e de sous-programmes oertes par le langage machine considr. ee Nous tudions tout dabord dans le paragraphe 1. le cas des programmes e a ` un seul bloc : installation du lexique en mmoire et obtention dune e machine squentielle ` lexique restreint, production du texte en langage e a dassemblage. Le paragraphe 2. prsente les probl`mes spciques au coe e e dage des programmes ` plusieurs blocs : probl`me du lexique local, des a e procdures ou fonctions rcursives, passage de param`tres et contenu de e e e la mmoire lors de lexcution. En se basant sur les principes tudis e e e e dans ces deux premiers paragraphes, il est possible de dvelopper au pae ragraphe 3. des solutions globales pour deux types de langages machine : un langage machine ` structure de pile explicite, type 68000 ; un langage a machine ` fentres de registres, type sparc. a e

1.

Cas des programmes ` un seul bloc a

Nous avons tudi au chapitre 5 la traduction des programmes du lane e gage dactions en machines squentielles avec actions gnrales. Il ne reste e e e plus quune tape pour atteindre des machines squentielles ` lexique rese e a treint : il faut installer toutes les variables dans la mmoire ou les registres e (paragraphe 1.1), puis transformer les branchements gnraux en branchee e

http://fribok.blogspot.com/

1. Cas des programmes ` un seul bloc a

315

ments binaires faisant intervenir des conditions prdnies sur les indicateurs e e arithmtiques (paragraphe 1.3). e A partir des machines squentielles ` lexique restreint, on obtient facilement e a des textes de programmes en langage dassemblage (paragraphe 1.4).

1.1
1.1.1

Installation du lexique en mmoire e


Le probl`me e

Le langage dactions prsent ore la notion de lexique : on dclare des e e e variables en les nommant. La dclaration donne le type, et permet donc de e conna la taille ncessaire ` la reprsentation en mmoire des valeurs de cette tre e a e e variable. Dans tout ce qui prc`de, nous avons tudi comment reprsenter en e e e e e mmoire une donne de type quelconque, en supposant quil y a de la place e e libre, en quantit susante, ` partir dune certaine adresse donne. e a e
Remarque : Notons que nous ne parlons pas ici dallocation dynamique, dallocation de variables ` la demande du programme par les actions Allouer a et Librer comme dni au paragraphe 4. du chapitre 4. e e

Nous ne nous sommes pas interrogs sur le mcanisme dallocation de la e e mmoire, cest-`-dire sur la mani`re de choisir une adresse pour chaque vae a e riable, en assurant que deux variables distinctes sont installes dans des pore tions disjointes de la mmoire globale. Plus prcisment, cette contrainte vaut e e e pour les variables dont les priodes de vie (on dit aussi dure de vie) ne sont e e pas disjointes (Cf. Paragraphes 1.1.2, 2.1.1 et 2.6). Nous montrons ici comment remplacer systmatiquement les variables par e des zones du tableau MEM : il faut dabord choisir la position de chaque variable, ce qui donne une adresse a ; on remplace ensuite toute occurrence du nom de variable dans le programme par MEM[a]. On peut alors oublier le lexique. On obtient ainsi de mani`re systmatique lalgorithme quon aurait e e pu obtenir ` la main en installant soi-mme toutes les variables ncessaires a e e dans le tableau MEM. Les programmes en deviennent bien sr illisibles ; cette u transformation est dhabitude le travail du compilateur, pas celui du programmeur. La transformation de programmes que nous proposons ici peut tre vue comme la premi`re tape de gestion de ce que lon appelle courame e e ment syst`me ` lexcution dans les ouvrages traitant de compilation (voir par e a e exemple [CGV80, WM94]). 1.1.2 Solution pour le lexique dun programme ` un seul bloc a

Pour choisir la position des variables on proc`de de mani`re squentielle, e e e par exemple dans lordre du lexique, en mnageant des espaces perdus entre e les variables pour satisfaire aux ventuelles contraintes dalignement. La taille e ncessaire pour linstallation de toutes les variables du lexique en mmoire est e e donc suprieure ou gale ` la somme des tailles ncessaires pour les variables. e e a e

http://fribok.blogspot.com/

316

Traduction des langages ` structure de blocs en langage dassemblage a

On parlera par la suite de taille du lexique. Attention, cette taille peut dpendre e de lordre de dclaration des variables, qui a une inuence sur la position et e la taille des trous ncessaires aux contraintes dalignement. Noter que, dans le e cas dun programme ` un seul bloc, les variables ont toutes la mme dure de a e e vie, qui est celle du programme lui-mme. e Dans lexemple ci-dessous, la mmoire est un tableau doctets, et on dispose e des aectations de tailles 1, 2 et 4 :
N : lentier 42 Entier32s : le type entier dans [2321 , 2321 1] Entier16ns : le type entier dans [0, 216 1] Structure : le type < x : un Entier32s, y : un Entier16ns>. c1, c2 : des caract`res ; a : un Entier32s ; b : un Entier16ns e T : un tableau sur [0..N-1] de Structures

Les variables ` installer en mmoire sont c1, c2, a, b et T. Commenons a e c a ` une adresse A multiple de 4 pour c1 ; c2 peut tre plac juste ` ct, ` e e a oe a ladresse A + 1 ; a doit tre plac un peu plus loin, ` ladresse A + 4 ; b peut e e a tre plac a ladresse A + 8, sans perte de place ; T doit dmarrer ` ladresse e e` e a multiple de 4 qui suit A + 8 + 2, cest-`-dire A + 12. Noter que 2 octets sont a perdus entre b et T. Chaque lment de T occupe 8 octets. T[7].y est ` ladresse ee a A + 12 + (7 8) + 4. On traduit alors lalgorithme
c1 c2 ; T[7].y b

en :
delta c1 : lentier 0 ; delta c2 : lentier 1 ; delta a : lentier 4 ; delta b : lentier 8 delta T : lentier 12 ; delta x : lentier 0 ; delta y : lentier 4 taille structure : lentier 8 MEM[A+delta c1] 1 MEM[A+delta c2] MEM[A+delta T+7*taille structure + delta y] 2 MEM[A+delta b]

1.2

Traduction des oprations de base sur les types de e donnes e

Nous avons introduit dans le langage dactions du chapitre 4 des oprations e sur les types de donnes de base : entiers, boolens, caract`res. Pour les types e e e structurs, la seule opration globale que nous ayons envisage est laectation, e e e et nous avons dj` montr comment lexprimer en termes de transferts mmoire ea e e lmentaires (chapitre 4, paragraphe 3.). ee Le lexique restreint qui reprsente un langage machine type ne propose que e les oprations arithmtiques, logiques ou structurelles (Cf. Chapitre 12) dise e ponibles dans un processeur usuel. Il faut donc exprimer toutes les oprations e sur les types de base en termes de ces oprations lmentaires. e ee

http://fribok.blogspot.com/

1. Cas des programmes ` un seul bloc a

317

1.2.1

Cas des oprations sur les caract`res e e

Toutes les oprations sur les caract`res sont traduites en oprations e e e arithmtiques ou logiques par lintermdiaire du code ASCII. Nous signalions e e au chapitre 4, paragraphe 1.3.2, que le code ASCII est conu de mani`re ` c e a faciliter cette traduction. 1.2.2 Cas des oprations boolennes e e

Il y a trois types dutilisation des boolens : les oprations internes de e e lalg`bre de Boole tudie au chapitre 2 (ngation, conjonction, disjonction, e e e e etc.) ; les oprations de comparaison sur des types quelconques, qui produisent e des boolens ; les conditions de structures conditionnelles ou itratives. Ces e e trois types dutilisations interf`rent librement comme dans : e
X, Y : des entiers ; B, B : des boolens e B X < Y et Y 0 si (non B ou B) alors ... sinon ...

Il faut choisir un codage des boolens compatible avec ces trois types dutie lisation, et susceptible dtre manipul ecacement en langage machine. Typie e quement, les processeurs orent des oprations boolennes bit ` bit (Cf. Chae e a pitre 12, paragraphe 1.4.1) quon peut utiliser pour coder les oprations e boolennes. En revanche il nexiste pas, en gnral, dinstruction de compae e e raison arithmtique de deux registres, avec rsultat boolen dans un troisi`me, e e e e qui permettrait de coder simplement B X < Y. Le rsultat boolen des e e comparaisons est ` recuprer dans les indicateurs arithmtiques. Dautre part, a e e comme le mot dtat du processeur nest en gnral pas accessible en lecture e e e explicite, on doit coder B X < Y comme on coderait :
si X < Y alors B vrai sinon B faux

On retrouve donc le probl`me gnral de codage des structures conditione e e nelles. 1.2.3 Cas des entres/sorties e

Nous avons introduit dans le langage dactions des actions Lire et Ecrire gnriques (cest-`-dire valables pour tous types). La manipulation dtaille e e a e e des priphriques dentre/sortie ne fait pas partie, en gnral, du codage des e e e e e programmes crits en langage de haut niveau. Nous verrons en dtail au chae e pitre 16 comment sont ralises les communications entre le processeur et des e e priphriques comme le clavier et lcran. Les programmes ncessaires, souvent e e e e crits directement en assembleur, font partie du logiciel de base fourni avec un e ordinateur ; nous dnissons au chapitre 17 linterface entre ces programmes e de bas niveau rangs dans une biblioth`que et les programmes en langage dase e semblage produits par les compilateurs de langages de haut niveau. On trouve entre autres dans le logiciel de base usuel les primitives de manipulation des chiers, telles que nous les dnissons au chapitre 19. e Pour un compilateur, le codage dune entre/sortie est compl`tement simie e

http://fribok.blogspot.com/

318

Traduction des langages ` structure de blocs en langage dassemblage a

laire ` lappel dune procdure paramtre. Simplement, cette procdure ayant a e e e e t crite directement en assembleur, ou produite indpendamment par un ee e e compilateur, il faut adopter les mmes conventions de passages de param`tres e e et dappel de sous-programme, dans les deux contextes. Cest dailleurs le probl`me gnral de la compilation spare que nous tudions au chapitre 18. e e e e e e Le seul travail du compilateur consiste ` traduire une instruction de la a forme Lire (X), o` X est une variable de type quelconque, en un ensemble u doprations de lecture lmentaires disponibles dans la biblioth`que. On ne e ee e peut pas supposer, en eet, que la biblioth`que dentres/sorties standard foure e nit une primitive de lecture pour tout type susceptible dtre dni dans un e e programme utilisateur. La plupart des langages de programmation nautorisent les primitives Lire et Ecrire que sur les types numriques, les caract`res et les cha de caract`res. e e nes e Pour les types numriques cela suppose une convention de notation (dcimal e e pour les entiers, norme IEEE... pour les ottants). Ainsi en Pascal est-il impossible de lire un boolen, dni comme un type numr, par manque de e e e ee convention sur la notation des boolens. En Ada le compilateur traduit les lece tures de boolens en lectures de cha e nes de caract`res, suivies de conversions e des cha nes valides true et false en reprsentation interne des boolens. e e Dans les exemples de ce chapitre, nous nutilisons Lire et Ecrire que pour des entiers.

1.3
1.3.1

Traduction des conditions gnrales en conditions e e des machines restreintes


Codage de conditionnelles n-aires, type selon

La plupart des langages machine disposent de branchements uniquement binaires. Les structures conditionnelles de la forme selon du langage dactions utilis dans cet ouvrage, ou bien les structures switch de C, case de Pascal e et Ada, sont donc traduites en squences de conditionnelles binaires. e 1.3.2 Codage de conditions boolennes complexes e

Quel que soit lensemble des prdicats fonctions de N, Z, C et V disponibles e dans le langage machine cible, il est toujours possible dcrire dans le langage e dactions des conditions qui ne se traduisent pas par un seul prdicat. e On a donc le mme probl`me pour coder : si X < Y et Y > 0 grce e e a aux 16 prdicats usuels prsents au chapitre 12, gure 12.4, que pour coe e e der si X Y grce aux 8 prdicats du processeur 6502. La solution gnrale a e e e consiste ` encha a ner des conditionnelles. On traduit donc
si X < Y et Y > 0 alors A1 sinon A2

en :
si X < Y alors (si Y > 0 alors A1 sinon A2) sinon A2.

http://fribok.blogspot.com/

2. Cas des programmes ` plusieurs blocs a

319

A1 tantque C1 A2 si C2 alors A3 sinon A4 A5 A6

A1 :.. . C1 :.. . Bicc A6 A2 :.. . C2 :.. . Bicc A4 A3 :.. . ba A5 A4 :.. . A5 :.. . ba C1 A6 :.. .

! ! ! ! ! ! ! ! ! ! ! !

codage de laction A1 codage de la condition C1 branchement sur non C1 codage de laction A2 codage de la condition C2 branchement sur non C2 codage de laction A3 branchement inconditionnel codage de laction A4 codage de laction A5 branchement inconditionnel codage de laction A6

Fig. 13.1 Squentialisation des codages en langage dassemblage des tats dune mae e chine squentielle ` actions et lexique restreint. e a

1.4

Traduction des machines squentielles e ` lexique restreint en langage dassemblage a

Grce aux transformations de programmes suggres ci-dessus, on est caa ee pable dobtenir un programme du langage dactions dans lequel : 1) toutes les donnes sont en mmoire ou dans des registres ; 2) on na plus que des struce e tures conditionnelles binaires (des si ... alors ... sinon ...) et des itrations : 3) e toutes les conditions sont lmentaires, au sens o` on peut en obtenir la valeur ee u boolenne par une ou plusieurs instructions de calcul, suivies dune consultae tion du mot dtat. Ainsi X+2*Y < 4 est lmentaire, alors que X < Y et Y > 0 e ee ne lest pas. Cette forme de programme donne directement une machine squentielle ` lexique restreint, dans laquelle certains tats correspondent au e a e calcul des conditions lmentaires. ee La technique consiste ensuite ` coder chaque tat par une squence dinsa e e tructions du langage dassemblage, ` laquelle on associe une tiquette de dbut. a e e Il ne reste plus qu` disposer ces direntes squences les unes ` la suite des a e e a autres, en ajoutant les branchements ncessaires. e Cette technique est illustre par lexemple des gures 13.1 et 13.2. e

2.

Cas des programmes ` plusieurs blocs a

La dicult de la traduction en langage dassemblage des programmes ` e a structure de blocs provient de deux aspects de ces programmes : les lexiques locaux et le passage de param`tres, dans le cas le plus gnral o` les actions e e e u et fonctions introduites peuvent tre rcursives. Nous tudions les probl`mes e e e e lis aux lexiques locaux et aux param`tres dans les paragraphes 2.1 et 2.2 e e ci-dessous, avant de les rsoudre par une gestion de la mmoire en pile, aux e e

http://fribok.blogspot.com/

320

Traduction des langages ` structure de blocs en langage dassemblage 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, r2, fin r1, r2, sinon r1, r2, finsi r2, r1, boucle

et B dans r2 g0 g0 r1 r2

Fig. 13.2 Squentialisation des codages en langage dassemblage des tats dune mae e chine squentielle ` actions et lexique restreint : exemple du pgcd, Cf. Chae a pitre 12, gure 12.5. Le programme en langage dassemblage est obtenu de mani`re systmatique ; il peut ensuite tre simpli de plusieurs faons : supe e e e c pression de la deuxi`me comparaison SUBcc r1, r2, g0 ; remplacement du e BA finsi par BA boucle directement.

paragraphes 2.3 et 2.4. Enn le paragraphe 2.5 introduit le lien dynamique des compilateurs, et le paragraphe 2.6 rsume loccupation de la mmoire lors de e e lexcution dun ensemble de procdures et fonctions paramtres. e e e e Dans le cas o` une procdure A appelle une procdure B, nous appelons u e e contexte appelant lensemble des variables de A et contexte appel lensemble e des variables de B.

2.1
2.1.1

Installation en mmoire des lexiques locaux e


Cas des lexiques locaux sans rcursivit e e

Dans le cas dun ensemble dactions et fonctions sans rcursivit (mme e e e croise), on peut reprendre lapproche suivie prcdemment pour le lexique e e e dun programme ` un seul bloc : on installe en mmoire toutes les variables a e globales, puis toutes celles de la premi`re fonction ou action, ` la suite, puis e a toutes celles de la deuxi`me fonction ou action, etc. Si les lexiques locaux e de deux actions ou fonctions A1 et A2 contiennent tous deux le nom i, avec ventuellement des types dirents, alors ce nom correspond ` deux emplacee e a ments distincts de la mmoire, ventuellement de tailles direntes. En trae e e duisant lalgorithme de A1 on utilise lun des emplacements, et en traduisant lalgorithme de A2 on utilise lautre. Si deux actions ou fonctions A1 et A2 sont telles que A1 nappelle jamais A2 et A2 nappelle jamais A1, on se convainc aisment que ces deux blocs e ne seront jamais actifs en mme temps : on dit que leurs dures de vie sont e e disjointes. Dans ce cas leurs lexiques locaux peuvent occuper la mme portion e de la mmoire. e

http://fribok.blogspot.com/

2. Cas des programmes ` plusieurs blocs a

321

2.1.2

Cas des lexiques locaux avec rcursivit e e

Lorsque les actions et fonctions peuvent tre rcursives, il nest plus pose e sible dappliquer la mme mthode. Observons pour nous en convaincre le e e programme donn ` titre dexemple gure 13.3, qui utilise une action rcursive ea e de calcul de la suite de Fibonacci (dnie par : x0 = x1 = 1 puis n 2 xn = e xn1 + xn2 ). La gure 13.4 illustre le droulement du calcul si lentier lu dans e le programme principal est 4. Pour obtenir le rsultat correct il faut disposer dautant dexemplaires de e f1 et f2 (nots f1, f1, etc.) que dappels imbriqus. Il faut donc un espace e e mmoire pour la variable locale f1 (resp. f2) de CalculFibo pour chaque appel e de cette action. Or le nombre dappels dpend de la variable dentre A ; sa e e valeur est obtenue par Lire et est donc par dnition inconnue quand on est en e train de modier le texte du programme, indpendamment de toute excution, e e comme cest le cas ici. Il nous faut donc trouver un mcanisme permettant e dallouer une zone de mmoire ` chaque entre dans la procdure, zone qui e a e e devra tre restitue avant la sortie de procdure. e e e

2.2

Installation en mmoire des param`tres e e

Lorsquun programme comporte plusieurs blocs, il fait galement usage de e param`tres donnes ou rsultats. Comme les lexiques locaux, le passage de e e e param`tres demande de la mmoire. En eet, un passage de param`tres est un e e e change dinformation entre le contexte appelant et le contexte appel. Tout se e e passe comme si ces deux contextes avaient acc`s ` un emplacement dans une e a portion de mmoire partage gre de mani`re tr`s particuli`re : lappelant peut e e ee e e e y crire une information ` transmettre ` lappel ; lappel y lit linformation. e a a e e Le passage de param`tres ncessite donc une sorte de bo aux lettres. e e te 2.2.1 Conventions de passage des param`tres donnes ou rsultats e e e

Examinons tout dabord comment se passe lchange dinformation entre e appelant et appel, lors dun passage de param`tres, selon quil sagit dune e e donne ou dun rsultat. Nous traitons ici le param`tre rsultat avec le mode de e e e e passage par rfrence. Il existe dautres modes de passage de param`tres dont ee e les particularits sont expliques dans les ouvrages traitant de compilation (voir e e par exemple [CGV80, WM94]) et dont nous ne parlons pas ici. Considrons e lalgorithme de calcul de la somme de deux entiers, donn gure 13.5. e Le programme principal appelle CalculSomme en lui passant deux donnes e dans les param`tres A et B, et en reoit un rsultat dans le param`tre R. Supe c e e posons pour linstant que lallocation mmoire soit rsolue pour les param`tres e e e (voir plus loin) et quon dispose de 3 emplacements mmoire dadresses rese pectives aA, aB et aR pour le passage de param`tres. Par ailleurs les variables e du lexique global sont places aux adresses aX, aY et aZ. Lalgorithme modi e e est donn gure 13.6. e

http://fribok.blogspot.com/

322

Traduction des langages ` structure de blocs en langage dassemblage a

CalculFibo : une action (la donne n : un entier 0 ; le rsultat f : un entier > 0) e e { tat nal : f = xn } e lexique local : f1, f2 : des entiers > 0 algorithme : si n = 0 ou n = 1 alors f 1 sinon CalculFibo (n 1, f1) ; CalculFibo (n 2, f2) f f1 + f2 lexique du programme principal : A, B : des entiers 0 algorithme du programme principal : Lire (A) ; CalculFibo (A, B) ; Ecrire (B)

Fig. 13.3 Algorithme rcursif de calcul de la suite de Fibonacci e 1. CalculFibo (4, B) 1.1 CalculFibo (3, f1) 1.1.1 CalculFibo (2, f1) 1.1.1.1 CalculFibo (1, f1) f1 1 1.1.1.2 CalculFibo (0, f2) f2 1 1.1.1.3 f1 f1 + f2 1.1.2 CalculFibo (1, f2) f2 1 1.1.3 f1 f1+ f2 1.2 CalculFibo (2, f2) 1.2.1 CalculFibo (1, f1) f1 1 1.2.2 CalculFibo (0, f2) f2 1 1.2.3 f2 f1 + f2 1.3 B f1+f2 Fig. 13.4 Droulement du calcul de la suite de Fibonacci, pour lentre 4. e e f1 1 ; f2 1 ; f1 f1 + f2 { = 2 } ; f2 1 ; f1 f1+ f2 { = 3 } ; f1 1 ; f2 1 ; f2 f1 + f2 { = 2 } ; B f1+f2 { = 5 } ;

http://fribok.blogspot.com/

2. Cas des programmes ` plusieurs blocs a

323

CalculSomme (les donnes a, b : deux entiers ; le rsultat r : un entier) : e e r a+b lexique du programme principal X, Y, Z : trois entiers algorithme du programme principal Lire (X) ; Lire (Y) CalculSomme (X+1, Y2, Z) Ecrire (Z) Fig. 13.5 Algorithme de calcul de la somme de deux entiers CalculSomme : MEM[MEM[aR]] MEM[aA] + MEM[aB] algorithme du programme principal ... { traduction de Lire (X) ; Lire (Y) } MEM[aA] 4 MEM[aX] + 1 MEM[aB] 4 MEM[aY] 2 MEM[aR] 4 aZ CalculSomme ... { traduction de Ecrire (Z) } Fig. 13.6 Interprtation des natures de param`tres e e

Passage des donnes par valeur : Les valeurs des expressions qui constie tuent les param`tres donnes eectifs doivent tre calcules puis places en e e e e e mmoire par lappelant, ` un endroit connu de lappel qui les lira. Ainsi e a e on calcule la valeur de X+1, cest-`-dire MEM[aX] + 1, et on la recopie dans a MEM[aA]. Passage des rsultats par rfrence : Pour les param`tres rsultats, e e e e e passer leur valeur na aucun intrt. Par dnition un rsultat est produit par ee e e laction appele. Quand on crit CalculSomme (X+1, Y2, Z), on sattend ` e e a ce que la valeur de la variable Z soit modie. Pour cela il faut que laction e appele soit capable daecter une nouvelle valeur ` la variable Z. Si lace a tion CalculSomme tait toujours appele depuis le programme principal, avec e e comme troisi`me param`tre la variable Z, il surait dcrire dans le corps de e e e laction : MEM[aZ] .... Mais elle peut tre appele ` divers endroits du e e a programme, avec des param`tres dirents. Le corps de laction doit donc tre e e e capable dcrire dans la variable quon lui indique. Pour assurer ce fonctione nement, ladresse de la variable qui constitue le param`tre rsultat eectif est e e fournie ` lappele ; elle est place en mmoire par lappelant, ` un endroit a e e e a connu de lappele qui la lira. On crit donc : MEM[aR] 4 aZ. Lappele e e e peut alors rcuprer cette adresse dans MEM[aR], et sen servir pour crire e e e dans la bonne variable, par indirection : MEM[MEM[aR]] .... On retrouve

http://fribok.blogspot.com/

324

Traduction des langages ` structure de blocs en langage dassemblage a

la contrainte nonce au paragraphe 1.6 du chapitre 4 : les param`tres eectifs e e e rsultats doivent tre des expressions qui pourraient gurer en partie gauche e e daectation, cest-`-dire dsigner des emplacements mmoire. a e e Si lon dnit la variable : e
T : un tableau sur [0..N] de < y : un caract`re ; x : un entier > e

lexpression T[4].x peut-tre utilise comme param`tre rsultat de e e e e CalculSomme. Dans ce cas le passage de param`tre consiste ` crire, e a e dans le programme principal : MEM[aR] 4 aT + 4*8 + 4, o` aT dsigne u e ladresse de dbut du tableau T. Le corps de CalculSomme est inchang. e e 2.2.2 Installation en mmoire des bo e tes aux lettres

Une fois adoptes ces conventions de passage des param`tres donnes par e e e valeur et rsultat par adresse, il reste ` tudier la mani`re dobtenir aA, aB et e ae e aR : cest le probl`me de lallocation mmoire pour les param`tres. e e e Cas sans rcursivit : Il faut prvoir une zone de mmoire pour chaque e e e e param`tre de F1 vers F2, pour chaque couple dactions ou fonctions F1, F2 e telles quun appel de F2 appara quelque part dans le corps de F1. Un examen t du texte complet du programme, indpendamment de toute excution, permet e e de reprer qui appelle qui, et la place ncessaire pour la liste de param`tres, e e e dans chaque cas. On choisit alors les adresses dans MEM, par exemple ` la a suite de tous les emplacements allous aux variables globales. Il sut de se e tenir ` ces choix lorsque lon transforme les algorithmes des appelants et des a appels, comme nous lavons fait pour CalculSomme ci-dessus. e Cas avec rcursivit : Dans le cas avec rcursivit, on retombe sur le e e e e probl`me voqu pour les variables des lexiques locaux : il faut un emplacement e e e ddi aux param`tres, pour chaque appel de F1 qui appelle F2, ` lexcution. e e e a e Le choix des adresses des param`tres ne peut donc se faire statiquement, ceste a `-dire au moment de la transformation du programme.

2.3

Allocation dynamique de mmoire pour les lexiques e locaux

Il appara la ncessit de grer dynamiquement lassociation demplacet e e e ments en mmoire aux variables des lexiques locaux. Une solution consiste e a ` utiliser les primitives dallocation dite dynamique de mmoire tudies au e e e chapitre 4, paragraphe 4. Supposons que chaque appel de CalculFibo utilise Allouer et Librer pour e rserver momentanment la mmoire ncessaire ` linstallation de ses variables e e e e a e a locales f1 et f2. Notons taille 2 entiers le nombre doctets ncessaires ` ces deux entiers. Il nous faut encore une variable locale p qui donne ladresse de la zone alloue. On suppose quil y a toujours de la place disponible. Cela e donne le programme de la gure 13.7. Noter que lallocation mmoire pour les e

http://fribok.blogspot.com/

2. Cas des programmes ` plusieurs blocs a

325

direntes variables du lexique local suit la mme dmarche que celle prsente e e e e e au paragraphe 1.1.2. Une fois obtenue une adresse de base p par allocation dynamique, on dispose les variables les unes apr`s les autres en mnageant des e e espaces ventuels pour tenir compte des contraintes dalignement. e Cette transformation na pas encore permis dliminer le lexique local : on e a remplac les variables dorigine par une seule : p, mais il en faut toujours e autant dexemplaires que dappels de CalculFibo. Toutefois, on peut poursuivre la transformation du programme. En eet, on remarque que, vue la structure des appels dactions et fonctions, la derni`re e zone alloue est toujours la premi`re libre (autrement dit, les appels sont e e ee bien parenthss : on ne peut pas successivement entrer dans A ; entrer dans ee B ; sortir de A, sortir de B). On prote donc de cette situation tr`s particuli`re e e pour ne pas utiliser un mcanisme gnral dallocation et libration despaces e e e e mmoire, dont la complexit provient justement de la gestion des trous qui e e apparaissent si lon ne lib`re pas toujours le dernier allou. e e On propose de raliser lallocation mmoire par les algorithmes de la e e gure 13.9. Le corps des actions est tr`s court ; si lon suppose de plus quil e y a toujours de la place, on peut remplacer tout appel Allouer (p, n) par pp pp n ; p pp et tout appel Librer (p, n) par pp pp + n. On e peut ensuite liminer la variable locale p et ne garder que la variable globale e pp. Cela donne lalgorithme de la gure 13.8. On dit que la mmoire est gre e ee en pile, pour rendre compte du fait que les allocations se font selon un ordre dernier allou/premier libr (Cf. Chapitre 4, paragraphe 5.). e e e

2.4

Allocation dynamique de mmoire pour e les param`tres e

Pour lallocation mmoire ncessaire aux param`tres, il faut prvoir de e e e e mme des appels aux actions Allouer et Librer. Lallocation de mmoire pour e e e les param`tres a la mme proprit que celle des variables locales : on lib`re toue e ee e jours les derniers allous. On applique donc la mme simplication qui consiste e e a ` allouer et librer de la mmoire grce aux procdures de la gure 13.9. Lalloe e a e cation de mmoire pour le passage de param`tres se fait dans lappelant, juste e e avant lappel ; la libration se fait juste apr`s lappel, toujours dans lappelant. e e En appliquant toutes les transformations tudies jusque l` (dont le e e a mcanisme de passage de param`tre rsultat), on obtient lalgorithme donn e e e e gure 13.10. La gure 13.11 illustre lvolution du contenu de la mmoire lors e e de lexcution du programme qui appelle CalculFibo(4, ...). e Noter que la variable pp est gre grce ` des oprations parfaitement ee a a e symtriques : pp pp 8 (pour faire de la place aux variables locales) en e entrant dans CalculFibo et pp pp + 8 en en sortant ; pp pp 8 juste avant lappel rcursif de Calcul Fibo (pour tenir compte de la place occupe e e par les param`tres), pp pp + 8 juste apr`s. Cette forme de code garantit e e linvariant suivant : ltat de la mmoire (en particulier la position de pp) est e e

http://fribok.blogspot.com/

326

Traduction des langages ` structure de blocs en langage dassemblage a

CalculFibo : une action (la donne n : un entier 0 ; le rsultat f : un entier > 0) e e p : un pointeur de caract`re e { variable LOCALE } { lexique local : f1 sera en MEM[p+0] et f2 en MEM[p+4] } algorithme : Allouer (p, taille 2 entiers) si n = 0 ou n = 1 alors f 1 sinon CalculFibo (n 1, MEM[p+0]) CalculFibo (n 2, MEM[p+4]) f MEM[p+0]+MEM[p+4] Librer (p, taille 2 entiers) e lexique du programme principal : A, B : des entiers 0 algorithme du programme principal : Lire (A) ; CalculFibo (A, B) ; Ecrire (B) Fig. 13.7 Installation du lexique local de CalculFibo en mmoire e CalculFibo : une action (la donne n : un entier 0 ; le rsultat f : un entier > 0) e e algorithme : { Rservation de place pour les deux entiers du lexique local, qui rend e disponibles les deux emplacements MEM[pp+0] et MEM[pp+4]. Pour simplier, on ne fait pas le test de dbordement (Cf. Figure 13.9) } e pp pp taille 2 entiers { Corps de laction proprement dite } si n = 0 ou n = 1 alors f 1 sinon CalculFibo (n 1, MEM[pp+0]) CalculFibo (n 2, MEM[pp+4]) f MEM[pp+0]+MEM[pp+4] { Libration de la place occupe par le lexique local } e e pp pp + taille 2 entiers lexique du programme principal : A, B : des entiers 0 ; pp : un pointeur algorithme du programme principal : Initialiser Lire (A) CalculFibo (A, B) Ecrire (B) Fig. 13.8 Simplication de lallocation mmoire e

http://fribok.blogspot.com/

2. Cas des programmes ` plusieurs blocs a

327

MEM 0

adresses croissantes

pp : un pointeur Initialiser : pp tmem Allouer (p, n) : si pp n < T+1 alors p NIL sinon pp pp n p pp Librer (p, n) : e pp pp + n

Zone libre

T+1

Zone e occupe

pp

tmem 1 tmem

Fig. 13.9 Gestion mmoire simplie : pour allouer une nouvelle zone de taille n, on e e dplace le pointeur pp de n octets vers les adresses dcroissantes. La zone e e ainsi rendue disponible est entre les adresses pp incluse et pp+n exclue.

le mme ` lentre dans un bloc et ` la sortie. e a e a

2.5

Reprage des objets locaux par rapport ` la base de e a lenvironnement : lien dynamique

Nous remarquons dans lexemple CalculFibo (gure 13.10) que la position relative ` pp des objets prsents en mmoire est modie lorsque pp bouge. a e e e Ainsi, lors de lentre dans CalculFibo, les param`tres sont accessibles aux e e adresses MEM[pp+4] et MEM[pp+0]. D`s que lon diminue pp de 8, de mani`re e e a e ` mnager de la place pour les variables locales f1 et f2 de la procdure e CalculFibo dorigine, le reprage des param`tres devient : MEM[pp+4+8] et e e MEM[pp+0+8]. Rien de bien dicile ` calculer, mais le nouveau programme a de CalculFibo devient vite illisible sans dessin. Le probl`me vient du fait que les objets placs en mmoire (les variables e e e locales et les param`tres) sont reprs par rapport ` une unique adresse pp, e ee a elle-mme destine ` voluer. e e ae Lide du lien dynamique que lon trouve en compilation est tr`s simple : e e au lieu de reprer les objets locaux dun bloc par rapport ` ladresse du haut, e a qui risque dtre modie, il sut de les reprer par rapport ` ladresse du e e e a bas, qui ne bouge pas pendant toute la dure de vie du bloc. On introduit une e adresse supplmentaire pb, dite pointeur de base de lenvironnement (frame e pointer en anglais), destine ` pointer sur la base de lenvironnement du bloc e a

http://fribok.blogspot.com/

328

Traduction des langages ` structure de blocs en langage dassemblage a

CalculFibo : une action { param`tres : on rcup`re la valeur de la donne n en MEM[pp+4] ; on e e e e crit la valeur du rsultat f ` ladresse indique dans MEM[pp+0]. } e e a e pp pp 8 { Attention, maintenant, n est en MEM[pp+4+8] et f en MEM[pp+0+8] Lexique local : f1 sera en MEM[pp+0] et f2 en MEM[pp+4] } si MEM[pp+4+8] = 0 ou MEM[pp+4+8] = 1 alors MEM[MEM[pp+0+8]] 1 sinon { Premier appel : (Point i) } MEM[pp4] 4 MEM[pp+4+8] 1 MEM[pp8] 4 p+0 pp pp 8 { place des param`tres - (Point ii) } e CalculFibo pp pp + 8 { on te les param`tres } o e { Deuxi`me appel : } e MEM[pp4] 4 MEM[pp+4+8] 2 MEM[pp8] 4 pp+4 pp pp 8 { place des param`tres } e CalculFibo pp pp + 8 { on te les param`tres } o e MEM[MEM[pp+0+8]] MEM[pp+0]+MEM[pp+4] pp pp + 8 lexique du programme principal : pp : un pointeur { Unique variable globale restante } algorithme du programme principal : Initialiser { Initialisation de la zone pile } pp pp 8 { Place ncessaire aux variables du lexique global } e { A est en MEM[pp+0] et B en MEM[pp+4]. } { Traduction de lappel Lire (A) : } MEM[pp4] 4 pp+0 { adresse de A empile } e pp pp 4 ; Lire ; pp pp + 4 { valeur de A lue en pp+0 } { Appel de CalculFibo (A, B) : (point 1) } MEM[pp4] 4 MEM[pp+0] { param`tre donne : valeur de A } e e MEM[pp8] 4 pp+4 { param`tre rsultat : adresse de B } e e pp pp 8 { Allocation mmoire pour les param`tres } e e { (point 2) } CalculFibo pp pp + 8 { Libration de la mmoire des param`tres } e e e { Traduction de lappel Ecrire (B) : } MEM[pp4] 4 MEM[pp+4] { valeur de B empile } e pp pp 4 ; Ecrire ; pp pp + 4 { B crit } e Fig. 13.10 Elimination compl`te des lexiques et des param`tres dans CalculFibo (On e e a suppos taille 2 entiers = 8). e

http://fribok.blogspot.com/

2. 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. principal Point 1 on a lu A=4 MEM T

Prog. principal avant CalculFibo point 2 MEM T

CalculFibo (4, ...) avant le 1er appel rcursif (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 ii

CalculFibo (3, ...) point i

CalculFibo (1, ...) point i

Fig. 13.11 Contenu de la mmoire lors de lexcution de CalculFibo e e

http://fribok.blogspot.com/

var. locales inutilises e

330

Traduction des langages ` structure de blocs en langage dassemblage a

en cours dexcution, cest-`-dire juste sous les variables locales du bloc. Sur e a la gure 13.12-a, les pointeurs de base denvironnement sont gurs par des e `ches en trait gras ; la notation @x est utilise pour signier ladresse de x. e e Lorsquon passe dun bloc appelant ` un bloc appel, il sut de placer a e la variable pb ` la base de lenvironnement du bloc appel. Lorsque le bloc a e appel se termine, il faut replacer pb ` sa position antrieure, cest-`-dire la e a e a base de lenvironnement du bloc appelant. Contrairement ` ce qui se passe a pour le pointeur pp, il nest pas toujours ais de calculer lancienne position e de pb de mani`re ` dplacer pb par une action de la forme pb pb + k. On e a e introduit donc un mcanisme de sauvegarde de pb, ce qui donne le schma de e e la gure 13.12-b. Chacune des positions de pb pointe sur une case mmoire qui e contient la sauvegarde de lancienne valeur (plus bas dans la pile). La suite des ces sauvegardes successives forme ce que lon appelle le cha nage dynamique, ou lien dynamique.
Remarque : Il existe galement en compilation une notion de lien statique, e a ` ne pas confondre avec le lien dynamique. Le lien dynamique cha entre eux ne les environnements de deux blocs A et B tels que A appelle B, ` lexcution. a e Le lien statique cha entre eux les environnements de deux blocs A et B tels ne que B est dni dans A, dans le texte du programme. Cela peut arriver en e Pascal, Ada, ANSI C, par exemple, mais pas en C classique.

La gure 13.13 donne le programme de calcul de la suite de Fibonacci dans lequel on a introduit la manipulation de la variable pb.

2.6

Rsum de loccupation de la mmoire et remarques e e e

Nous avons dj` dit au chapitre 4, paragraphe 4., que la mmoire ncessaire ea e e aux donnes dun programme est forme de deux zones disjointes : une zone e e ncessaire ` la gestion des zones mmoire alloues et libres dynamiquement e a e e ee a ` la demande du programme, quon appelle tas, et une zone ncessaire ` la e a gestion des variables du lexique global et des lexiques locaux des procdures. e Nous venons de voir prcdemment que cette deuxi`me zone comporte non e e e seulement les variables et les param`tres mais aussi ventuellement des donnes e e e de liaison entre appelant et appel : sauvegarde du lien dynamique dans notre e cas, adresse de retour de sous-programme dans le cas o` linstruction dappel u lempile (cas du 68000, paragraphe 3.4.1), lien statique ventuellement. Cette e zone est gre comme une pile et on parle souvent de la pile ` lexcution pour ee a e la dsigner. e Un certain nombre de variables peuvent aussi tre stockes dans les registres e e du processeur. Il est alors ncessaire dassurer que leur valeur ne peut pas e tre modie par un sous-programme appel. La sauvegarde ventuelle de ces e e e e registres est aussi eectue dans la zone pile (Cf. Paragraphe 3.1.3). e Noter que les acc`s ` la zone pile sont des acc`s directs dans un tableau, e a e par adresse et dplacement, du genre MEM[pp+4]. Dans une vritable pile les e e seules actions autorises sont Empiler et Dpiler (Cf. Chapitre 4, paragraphe 5.) e e

http://fribok.blogspot.com/

2. Cas des programmes ` plusieurs blocs a

331

MEM ... f1 f2 param. @f1 param. 3 f1 f2 param. @B param. 4 A=4 B

MEM ... ancien pb param. @f1 param. 3 f1 f2 ancien pb param. @B param. 4 A=4 B

Variables locales de CalculFibo

Variables locales de CalculFibo Variables locales du prog. principal

(a)

(b)

Fig. 13.12 Pointeur de base denvironnement et lien dynamique. On reprend lexemple de CalculFibo, gure 13.11. (a) : position des variables locales du programme principal lors de deux appels de CalculFibo embo es ; les `ches indiquent la position de la base t e des 3 environnements ; la variable pb doit prendre successivement ces 3 valeurs lors du droulement du programme. e (b) : insertion des sauvegardes de pb.

http://fribok.blogspot.com/

332

Traduction des langages ` structure de blocs en langage dassemblage a

CalculFibo : une action pp pp 4 ; MEM[pp] pb { sauvegarde de pb } pb pp { installation du nouveau pb, lancien est en MEM[pb] } { param`tres : n est en MEM[pb+8] ; f est en MEM[pb+4]. } e pp pp 8 { Allocation pour les variables locales } { Lexique local : f1 sera en MEM[pb8] et f2 en MEM[pb4] } si MEM[pb+8] = 0 ou MEM[pb+8] = 1 alors MEM[MEM[pb+4]] 1 sinon { Premier appel : } MEM[pp4] 4 MEM[pb+8] 1 MEM[pp8] 4 pb+4 pp pp 8 ; CalculFibo ; pp pp + 8 { Deuxi`me appel : } e MEM[pp4] 4 MEM[pb+8] 2 MEM[pp8] 4 pb+4 pp pp 8 ; CalculFibo ; pp pp + 8 MEM[MEM[pb+4]] MEM[pb8]+MEM[pb4] pp pb { libration des variables locales } e pb MEM[pp] ; pp pp+4 { restauration de lancien pb }

lexique du programme principal : pp, pb : des pointeurs { Uniques variables globales restantes } algorithme du programme principal : Initialiser { Initialisation de la zone pile } pb pp { Initialisation du pointeur de base denvironnement } pp pp 8 { Place ncessaire aux variables du lexique global } e { A est en MEM[pb8] et B en MEM[pb4]. } { Traduction de lappel Lire (A) : } MEM[pp4] 4 pb8 pp pp 4 ; Lire ; pp pp + 4 { Appel de CalculFibo } MEM[pp4] 4 MEM[pb8] MEM[pp8] 4 pb4 pp pp 8 ; CalculFibo ; pp pp + 8 { Traduction de lappel Ecrire (B) : } MEM[pp4] 4 MEM[pb4] pp pp 4 ; Ecrire ; pp pp + 4 Fig. 13.13 Elimination compl`te des lexiques et des param`tres dans CalculFibo et e e introduction du pointeur de base denvironnement pb.

http://fribok.blogspot.com/

2. Cas des programmes ` plusieurs blocs a

333

et ne prjugent pas de limplantation de la pile, qui peut fort bien tre une e e squence cha ee. e n Noter aussi que la gestion en pile de la mmoire permet une rutilisation e e maximale de la mmoire pour les lexiques locaux de deux blocs qui ne sape pellent pas lun lautre. 2.6.1 Probl`mes dinitialisation e

Nous verrons plus tard que, lors de lexcution eective, le programme dit e principal dans le texte dun programme utilisateur nest pas le premier bloc existant. Il y a toujours un appelant, ne ft-ce que linterpr`te de commandes u e a ` partir duquel on lance lexcution du programme (Cf. Chapitre 20). e Le codage du programme principal suit donc exactement les mmes prine cipes que le codage des actions et fonctions paramtres. Linitialisation des e e pointeurs pp et pb nappara pas dans le code des programmes utilisateurs. t En produisant le codage du bloc qui correspond au programme principal, on suppose que ce bloc hrite, ` lexcution, dune valeur pertinente de ces deux e a e pointeurs, installe auparavant. Le codage du programme principal doit en e contrepartie assurer que ce bloc se termine proprement comme une action ou fonction, par un retour au contexte appelant. 2.6.2 Allocation mmoire mixte statique/dynamique e

Lallocation mmoire pour les variables, et la transformation de programme e correspondante, produit des programmes dans lesquels apparaissent des acc`s e mmoire de la forme MEM[b+k], o` b est une adresse de base, et k est une e u constante calcule statiquement par le compilateur. En eet, dans le cas des e procdures et fonctions rcursives, il est impossible dassocier statiquement e e (cest-`-dire pendant la compilation et indpendamment des excutions) une a e e adresse mmoire ` chaque nom de variable apparaissant dans le lexique. Plue a sieurs adresses correspondent au mme nom, et elles sont en nombre dpendant e e de lexcution. Nous avons rsolu cet aspect par une gestion de la mmoire en e e e pile, et une allocation mixte statique/dynamique : les adresses de base sont dynamiques, elles dpendent de lexcution ; les dplacements des direntes e e e e variables par rapport ` ladresse de base sont calculs statiquement, et sont a e indpendants de lexcution. e e La plupart des langages machine orent des acc`s mmoire avec adressage e e indirect par registre et dplacement, qui sont utilisables directement pour coe der nos programmes en langage dassemblage. Il sut que ladresse de base soit range dans un registre. Sil nexiste pas dadressage avec dplacement, e e ladresse compl`te de la variable peut tre calcule par une addition explicite e e e avant lacc`s mmoire. e e En revanche le mode dadressage indirect est indispensable. La gestion en pile de la mmoire nest pas implmentable en langage machine sans adressage e e indirect pour les acc`s mmoire : un adressage direct signie que toutes les e e

http://fribok.blogspot.com/

334

Traduction des langages ` structure de blocs en langage dassemblage a

adresses sont calculables statiquement, et inscrites une fois pour toutes comme des constantes dans le programme en langage machine.

3.

Traduction en langage dassemblage : solutions globales

On int`gre les solutions ` tous les aspects en prsentant deux classes de e a e solutions : la classe des solutions ` base de pile, du type de celle utilise pour a e une machine 68000 ; la classe des solutions ` base de fentres de registres, du a e type utilis pour une machine sparc. e

3.1
3.1.1

Utilisation des registres et sauvegarde


Utilisation des registres pour les variables globales

Les registres de la machine pour laquelle on produit du code sont bien appropris pour ranger les uniques variables globales qui subsistent apr`s toutes e e les transformations de programme envisages : les deux pointeurs, ou adresses, e pp et pb. En eet les registres sont par dnition accessibles dans tout contexte, e et la rapidit dacc`s (mmoire plus rapide que la grande mmoire, nombreuses e e e e instructions du langage machine travaillant directement sur des registres) est intressante pour des variables qui sont manipules tr`s souvent. e e e 3.1.2 Utilisation des registres pour les temporaires

Dautre part, lorsquon code un programme dun langage de haut niveau, il est courant de faire appara des variables temporaires dans les calculs, qui tre ne correspondent ` aucun nom explicitement dni par lutilisateur dans le a e lexique. Pour un programme comme :
x, y, z : des entiers x 3*(y + 2*z) 7*(x+y) z y

Il est impossible de calculer lexpression ` aecter ` x sans utiliser dautres ema a placements mmoire que ceux allous aux noms x, y, z. Dans certains langages e e machine (comme celui du sparc), il est mme impossible de coder laectation e z y (z et y tant en mmoire) sans passer par un registre intermdiaire : e e e il ny a pas de transfert mmoire vers mmoire directement. e e O` placer ces temporaires de calcul ? Pour des raisons de temps dexcution, u e on aimerait les placer dans les registres de la machine. On peut toujours imaginer, toutefois, une expression susamment complique pour ncessiter plus e e de variables temporaires quil ny a de registres disponibles. Dans ce cas les compilateurs placent les temporaires dans la pile.

http://fribok.blogspot.com/

3. Traduction en langage dassemblage : solutions globales

335

3.1.3

Ncessit de sauvegarde des registres e e

Si les registres de la machine servent aux temporaires de calcul, il appara t des cas comme :
lexique x, y, z : des entiers f : un entier un entier algorithme x f( 3*(y + 2*z) 7*(x+y) )

f(a) : 2 * a*a*a + 4 *a*a + 6*a + 1

Le programme principal et la fonction f doivent tout deux faire appel ` des a registres comme temporaires de calcul. Sils utilisent les mmes registres, il se e peut que les temporaires du programme principal ne soient pas prservs de e e part et dautre de lappel de f. Pour remdier ` cet inconvnient, il faut sauvegarder les valeurs des ree a e gistres utiliss comme temporaires de calcul, lorsquon passe dun bloc ` un e a autre. Il y a essentiellement deux classes de solutions : 1) la sauvegarde dans lappelant, de tous les registres quil utilise et veut prserver de part et dautre e de lappel dun autre bloc ; 2) la sauvegarde dans lappel, de tous les registres e dans lesquels il crit. La deuxi`me solution a tendance ` provoquer moins de e e a sauvegardes : on ne sauvegarde que ce qui est eectivement modi. Cela peut e malgr tout tre inutile : il est en eet possible quun appelant ne lutilise pas. e e La sauvegarde est ralise dans la pile, par exemple juste au-dessus des e e variables locales. Lexemple dtaill au paragraphe 3.4.3 ci-dessous illustre la e e sauvegarde des registres dans lappel. e

3.2

Appel de sous-programme : laller

Nous avons rsolu les probl`mes dallocation mmoire pour les lexiques e e e locaux et les param`tres. Dans nos algorithmes modis, il subsiste des appels e e rduits au nom de la procdure ou fonction appele. Chaque bloc est cod en e e e e langage dassemblage dapr`s les principes noncs au paragraphe 1. Il reste e e e a ` coder les appels de blocs par des instructions de branchement ` des sousa programmes disponibles dans le langage machine considr. Se pose alors le ee probl`me de ladresse du bloc ` atteindre. e a Le cas le plus simple est celui des structures de blocs statiques : les procdures et fonctions sont toutes connues, elles ont des noms, et sont toue jours appeles directement par lintermdiaire de leur nom, dans le programme e e en langage de haut niveau. On code chaque bloc P sparment (voir aussi aspects de compilation e e spare, chapitre 18, paragraphe 2.), en lui associant une tiquette de dbut e e e e dapr`s le nom du bloc dans le langage de haut niveau, par exemple P. Les e appels de P sont cods par : call P, si call est le nom de linstruction de e saut ` un sous-programme (Cf. Chapitre 12, paragraphe 1.4.3). a Les textes obtenus par codage des dirents blocs sont simplement juxtae

http://fribok.blogspot.com/

336

Traduction des langages ` structure de blocs en langage dassemblage a

poss, dans un ordre quelconque. Il sut de se rappeler quelle est ltiquette e e qui correspond au bloc du programme principal. On lappelle le point dentre e du programme. Un cas plus compliqu appara lorsque le langage de haut niveau quon e t utilise permet de dnir par exemple un tableau de fonctions. Dans ce cas les e fonctions ne sont plus ncessairement appeles par leur nom. On noterait par e e exemple, dans un langage dactions tendu : e
Tf : le tableau sur [1..10] de (un entier un entier) x : un entier sur [1..10] ; y, z : des entiers Lire (x) ; Lire (y) ; z Tf[x] (y)

Le programme en langage dassemblage correspondant doit manipuler explicitement les adresses des fonctions, cest-`-dire les adresses associes aux a e tiquettes de dbut des squences dinstructions des fonctions. Ladresse ` e e e a laquelle on doit brancher pour appeler la fonction Tf[x] doit tre calcule dye e namiquement, et le langage machine doit orir un appel de sous-programme par adressage indirect. Dans la suite nous ne nous intressons plus ` ce cas. e a

3.3

Appel de sous-programme : le retour

Dans les programmes transforms du langage daction obtenus au parae graphe prcdent, nous crivons tout simplement dans un bloc P : CalculFibo e e e pour signier quil faut excuter le corps de cette procdure ; nous souse e entendons que, lorsque cette procdure appele sera termine, le cours de e e e lexcution reprendra dans P, juste apr`s lappel. e e Le basculement de contexte ` laller est simple, comme nous venons de le a voir. Le basculement de contexte au retour, en revanche, doit tre tudi de e e e pr`s. e Tout dabord, il faut terminer le corps de la procdure appele CalculFibo e e par un branchement explicite au point o` lon dsire retourner. Et comme u e ce point dpend de la position de lappel de CalculFibo dans le programme, e cest une adresse variable selon les appels. Le branchement de retour est donc ncessairement indirect, puisque le code dune procdure est indpendant des e e e endroits o` elle est appele. u e En quelque sorte, ladresse o` il faudra retourner en n de procdure est u e un param`tre donne supplmentaire de toute procdure. Le raisonnement sur e e e e les param`tres de fonctions et procdures rcursives que nous avons tenu au e e e paragraphe 2. est encore valable. Ladresse de retour doit donc tre stocke quelque part (par exemple range e e e dans la pile avec les autres param`tres donnes) par le bloc appelant, avant e e linstruction de saut au sous-programme appel. En eet, cette adresse est e une valeur du compteur programme, et le saut ` un sous-programme consiste a justement a forcer une nouvelle valeur du compteur programme. ` Fort heureusement les langages machines orent toujours une instruction

http://fribok.blogspot.com/

3. Traduction en langage dassemblage : solutions globales

337

de branchement ` un sous-programme avec sauvegarde intgre de ladresse a e e dpart. Pour le retour, soit on trouve une instruction cohrente avec la saue e vegarde lors de lappel (cas du 68000), soit il faut utiliser une instruction de branchement en respectant les conventions de linstruction dappel (cas du sparc). Rappelons enn que le programme principal doit se comporter comme les autres blocs ; on suppose que lon y est arriv par un mcanisme dappel de e e sous-programme, et il se termine donc par un retour au contexte appelant.
Remarque : Si lon oublie linstruction de retour ` la n dun sousa programme, le processeur poursuit lexcution en squence cest-`-dire en e e a gnral dans le code dun autre sous-programme. e e

3.4
3.4.1

Solutions ` base de pile, type 68000 a


Gestion de la zone de pile en assembleur

Les modes dadressage indirects par registre avec pr-dcrmentation ou e e e post-incrmentation sont particuli`rement bien adapts ` la gestion en pile e e e a dune portion de la mmoire. Il sut de rserver un registre pour servir de e e pointeur de pile. Le choix de ce registre nest pas toujours enti`rement libre. Par exemple, e le jeu dinstructions du 68000 fournit linstruction jsr de saut ` un sousa programme, avec une sauvegarde automatique de ladresse qui suit linstruction jsr de la forme
RegA[7] RegA[7] 4 ; MEM[RegA[7]] PC

On y reconna un mcanisme de gestion de pile avec RegA[7] (le registre t e dadresse numro 7) comme pointeur de pile, plac sur la derni`re case occupe ; e e e e la pile cro en diminuant les adresses. t Il sut donc de grer le passage des param`tres et lallocation de mmoire e e e pour les lexiques locaux en adoptant cette convention impose par le jeu dinse tructions lui-mme (et quon ne peut donc pas remettre en cause, puisque e lalgorithme dinterprtation du langage machine est cbl). e a e Le retour de sous-programme adopte la mme convention. Linstruction e rts est un branchement inconditionnel, doublement indirect par registre avec postincrmentation. Leet est : e
PC MEM[RegA[7]] ; RegA[7] RegA[7] + 4

Autrement dit rts trouve son adresse en sommet de pile, et la dpile. e 3.4.2 Instructions link et unlink

Reprenons la squence dinstructions ncessaires ` linstallation de lenvie e a ronnement local de la procdure CalculFibo (Cf. Figure 13.13) : e

http://fribok.blogspot.com/

338

Traduction des langages ` structure de blocs en langage dassemblage a

pp pp - 4 ; MEM[pp] pb ; pb pp ; pp pp 8

Et la squence dinstructions symtrique, ` la n de CalculFibo : e e a


pp pb ; pb MEM[pp] ; pp pp+4

En langage dassemblage 68000, on crit, en supposant que le pointeur pp est e rang dans A7 et le pointeur pb dans A6 : e link A6, -8 ! squence de dbut e e .... unlink A6 ! squence de fin e Leet de ces instructions est exactement celui dcrit plus haut. Noter que e le choix de A6 comme pointeur de base denvironnement est libre, puisque cest un param`tre explicite des instructions link et unlink ; cest une convention e des compilateurs. A7 en revanche est le pointeur de pile oblig. e 3.4.3 Codage avec lien dynamique, variables locales dans la pile, temporaires dans des registres

Soit les actions A, B et C dnies Figure 13.14. A est laction principale, elle e appelle B qui appelle C. Nous donnons gure 13.15 le codage de la procdure A e dans un langage dassemblage pour 68000. Rappelons que ladresse de retour de sous-programme est sauv dans la pile dexcution par linstruction jsr et e e que la sauvegarde du lien dynamique et la mise en place de lenvironnement local du sous-programme sont assures par linstruction link. Par rapport au e schma de pile donn gure 13.12-b, la zone des donnes de liaison comporte e e e non seulement la sauvegarde de pb mais aussi ladresse de retour (en-dessous), ce qui donne la taille de deux adresses (8 octets) ` cette zone. a

3.5

Solutions ` base de fentres de registres, type sparc a e

Nous tudions ici les schmas de codage de sous-programmes suggrs e e ee par certaines architectures de processeurs, dites ` fentres de registres. Pour a e prciser les choses, nous traitons lexemple du sparc. Comme nous lavons e signal au chapitre 12, paragraphe 1.7.1, le processeur sparc est quip dun e e e banc de registres, qui sont ` acc`s plus rapide que la grande mmoire. Ces a e e nombreux registres sont utiliss pour optimiser les mcanismes de passages de e e param`tres et dappels de sous-programmes. Les techniques tudies plus haut, e e e et mises en oeuvre directement dans le cas des langages machine type 68000, sont encore applicables. Lide consiste ` utiliser le banc de registres comme e a un cache sur la pile. Nous dtaillons ci-dessous les mcanismes permettant de e e comprendre cette armation.

http://fribok.blogspot.com/

3. Traduction en langage dassemblage : solutions globales

339

A : laction { sans param`tre, donc. } e lexique : x, y : des entiers algorithme : x 1 ; B (3*x + 1, y) ; x y B : laction (la donne a : un entier, le rsultat b : un entier) e e lexique : z : un entier algorithme : C (z) ; b z + a C : laction (le rsultat u : un entier) e lexique : i : un entier algorithme : i 1 ; u 1 tant que i 10 u u + i ; i i + 1 Fig. 13.14 Procdures A, B, C e

! Tous les idfs dsignent des entiers de 4 octets e TailleEnvB = 4 ! Acc`s ` la variable locale, relatif ` ladresse de base : e a a deltaZ = 4 ! Acc`s aux param`tres, relatifs ` ladresse de base : e e a deltaA = 12 deltaB = 8 .text B :link A6, -TailleEnvB ! laction A a prpar les param`tres : donne a <--> valeur 3*x+1 e e e e ! et rsultat b <--> adresse de y avant lappel ` B e a move.l A0, -(SP) ! sauvegarde de 2 registres move.l D0, -(SP) ! appel de C : move.l A6, A0 ! calcul du param, adr de z dans A0 sub.l deltaZ, A0 move.l A0, -(SP) ! empiler A0 jsr C add.l 4, SP ! librer param`tre e e ! fin de lappel de C ! b <-- z + a move.l (A6+deltaA), D0 ! D0 <-- a add.l (A6-deltaZ), D0 ! D0 <-- D0 + z move.l (A6+deltaB), A0 ! A0 <-- adresse b move.l D0, (A0) ! b <-- D0 move.l (SP)+, D0 ! restauration de 2 registres move.l (SP)+, A0 unlk A6 rts Fig. 13.15 Codage de laction B en langage dassemblage 68000

http://fribok.blogspot.com/

340

Traduction des langages ` structure de blocs en langage dassemblage a

3.5.1

Le mcanisme de fentres de registres du sparc e e

Le SPARC dispose dun ensemble de registres gr en fentres : 8 registres ee e dits globaux sont accessibles en permamence. Les autres registres sont accessibles par groupes de 24 registres dits inputs, locals et outputs. Le groupe, ou fentre, courant, est repr par le registre CWP (pour Current Window Pointer). e ee Deux instructions spciques permettent de dplacer la fentre de registres e e e en incrmentant ou dcrmentant le registre CWP : save et restore. Le dcalage e e e e est de 16 registres. Deux fentres conscutives co e e ncident donc sur 8 registres : les registres ouputs de la fentre courante avant lexcution du save core e respondent aux inputs de la fentre courante apr`s lexcution du save. Le e e e restore a leet inverse. Le mcanisme des fentres de registres est illustr e e e par la gure 13.16.

3.5.2

Schma de codage idal e e

Le mcanisme des fentres permet dimplmenter de mani`re ecace la e e e e notion de contexte des langages procduraux. Schmatiquement, lorsquune e e procdure en appelle une autre, la procdure appele eectue un save, ce qui e e e lui permet de travailler avec un nouveau contexte. La communication entre procdure appelante et procdure appele (pour le passage des param`tres et la e e e e gestion de ladresse de retour) est assure par les 8 registres communs aux deux e fentres, qui constituent la zone dchange. En n dexcution, la procdure e e e e appele eectue un restore, qui rtablit le contexte prcdent, puis un saut e e e e a ` ladresse de retour. Notons que lors de lappel de sous-programme ladresse de linstruction call est sauvegarde dans le registre %o7, do` ladresse %o7+8 pour le retour e u (nous faisons suivre les instructions de saut par une instruction nop de faon c a ` ne pas se proccuper du pipeline). e Le cas idal le plus simple quon puisse envisager est le cas o` les procdures e u e nutilisent jamais plus de 7 param`tres dentre, ni plus de 8 variables locales, e e et o` le nombre dappels imbriqus ne dpasse pas le nombre de fentres phyu e e e siquement disponibles. Dans ce cas le mcanisme des fentres de registres est e e susant. Il sut de considrer leet de linstruction CALL pour respecter la e convention sur la mmorisation de ladresse de retour : dans le registre o7 de e lappelante, qui correspond au registre i7 de lappele. e Le schma de codage idal est donn gure 13.17. e e e
Remarque : La squence restore ; jmpl %o7+8, %g0 ; nop est souvent e transforme en jmpl %i7+8, %g0 ; restore. En eet, ladresse de retour est e situe dans le registre %o7 de lappelante, qui sappelle %i7 dans lappele. Elle e e sappelle donc %i7 avant le restore, et %o7 apr`s le restore. En protant du e dlai de branchement, on peut raliser le branchement avant la restauration e e du contexte.

http://fribok.blogspot.com/

3. Traduction en langage dassemblage : solutions globales

341

banc de registres i 32 bits

RESTORE

SAVE

i 7 registres globaux

Fig. 13.16 Mcanisme des fentres de registres e e

appelee: save ! utilisation des param`tres dentre %i0...%i6 e e ! et des variables locales %l0..%l7 restore jmpl %o7+8, %g0 nop appelante: ! place les param`tres dans %o0..%o6 e call appelee ! sauvegarde de ladresse de retour dans %o7 nop ... Fig. 13.17 Schma de codage idal utilisant le mcanisme de fentres de registres e e e e

http://fribok.blogspot.com/

342

Traduction des langages ` structure de blocs en langage dassemblage a

3.5.3

Probl`me : le banc de registres est ni e

En cas de programme consquent ou de procdure rcursive, lhypoth`se sur e e e e le petit nombre dappels imbriqus devient fausse. Pour que le programmeur e puisse considrer le banc de registres comme virtuellement inni, il faut prvoir e e dutiliser la mmoire en plus du banc de registres. e Une solution simple consiste ` imaginer que, lorsque le banc de registres est a plein, les procdures et fonctions se mettent ` utiliser directement la mmoire e a e gre en pile, selon le schma tudi pour 68000. Comme le codage pour banc ee e e e de registres di`re du codage pour pile ne serait-ce que dans lacc`s aux e e variables locales et param`tres chaque bloc devrait alors possder deux e e codages dirents, selon quil est appel quand le banc de registres est plein e e ou non. Cest hors de question. Il faut donc se dbrouiller pour obtenir cette commutation du banc de e registres vers la pile de mani`re transparente pour les programmes des divers e blocs, qui doivent toujours avoir limpression que le banc de registres est inni. La mise en oeuvre compl`te de cette solution transparente, plus la prise en e compte du fait que certains programmes ont plus de 8 variables locales ou plus de 8 param`tres, est dlicate. Elle nest pas ralisable de mani`re satisfaisante e e e e sans utiliser le mcanisme dinterruption logicielle qui sera prsent dans la e e e partie VI. Nous donnons ci-dessous quelques indices pour comprendre les schmas de e codage de langages ` structure de blocs en langage dassemblage sparc, tels a quon peut les observer en lisant le code produit par un compilateur C par exemple. 3.5.4 Cas raliste e

Pour que le programmeur (ou le concepteur de compilateur) puisse considrer le banc de registres comme virtuellement inni, il faut prvoir un e e mcanisme de sauvegarde des fentres de registres, lorsquon eectue plus de e e save quil nest physiquement possible den grer. e Cette sauvegarde est assure automatiquement, pendant linterprtation e e de linstruction save par le processeur, comme traitant dune interruption interne dclenche par le dpassement de capacit du banc de registres. Ce e e e e traitant dinterruption ralise une copie des registres %i0..%i7 et %l0..%l7 e dune fentre dans la pile. Il adopte des conventions sur la zone de pile utilise, e e qui doivent tre connues du programmeur. e Lide est dutiliser un registre comme pointeur de pile. Cest %o6. En e langage dassemblage %sp est dailleurs un synonyme de %o6 (sp pour Stack Pointer). Toute fentre correspondant au contexte dune procdure en cours e e dexcution doit tre telle que son registre %o6 pointe sur une zone de 64 octets e e libres de la pile. Cet invariant est suppos vri au moment o` la procdure e e e u e principale de notre programme est appele (il a t install par lappelant de e ee e cette procdure, linterpr`te de commandes par exemple, Cf. Chapitre 20). e e

http://fribok.blogspot.com/

4. Exercices

343

Pour que la proprit soit toujours vraie il sut, lors de tout changement de ee contexte qui installe une nouvelle fentre, dinitialiser le registre %o6 de la e nouvelle fentre. e Or linstruction save du sparc se comporte comme une addition, qui interpr`te la dsignation de ses oprandes dans la fentre de dpart, et la e e e e e dsignation du rsultat dans la fentre darrive. Une instruction save %o6, e e e e -64, %o6 permet donc dinitialiser le registre %o6 de la nouvelle fentre dapr`s e e la valeur du registre %o6 de lancienne : linstruction dcale le pointeur vers les e adresses infrieures, rservant ainsi un espace de la pile de taille 4 16 = 64 e e pour 16 registres de 4 octets. Lancien pointeur de pile, qui sappelait %o6 dans le contexte de lappelant, est toujours accessible. Il sappelle %i6 dans le contexte de lappel. %fp, pour Frame Pointer, est un synonyme de %i6 en e assembleur. Le programme de la gure 13.19 illustre ce mcanisme. e 3.5.5 Variables locales dans la pile et param`tres en exc`s e e

Dans le cas o` le nombre de registres ne sut pas pour stocker les variables u locales et passer les param`tres, il est possible dutiliser la pile. On peut lors e du save demander plus de place dans la pile que les 64 octets ncessaires ` la e a sauvegarde des registres %i0..%i7 et %l0..%l7 par le traitant dinterruption grant la demande dune fentre alors quil nen existe plus de libre. e e La gure 13.20 illustre lorganisation de la pile et des fentres de registres e dans ce cas. La seule contrainte quil faut respecter est de conserver la place en haut de zone alloue pour la sauvegarde ventuelle de la fentre courante. e e e Les variables locales sont alors ranges en bas de pile et on y acc`de via e e une adresse de la forme %fp d, le dplacement d pouvant tre calcul stae e e tiquement de la mme faon que pour la solution ` base de pile seulement. e c a Les param`tres sont ranges par lappelant dans le haut de sa zone locale, e e juste sous la zone de sauvegarde pour le traitant dinterruption. Dans lappel e on acc`de alors aux param`tres eectifs via une adresse de la forme %sp + d e e avec d 64, d tant lui aussi calculable statiquement. e

4.

Exercices

E13.1 : Observation de lexcution dune action rcursive e e Considrons lalgorithme de calcul de la suite de Fibonacci (Cf. Figure 13.3) e et plus particuili`rement la traduction dcrite dans le paragraphe 2.5 et la e e gure 13.10. Dessiner les dirents tats du tableau MEM et plus prcisment e e e e la partie pile au cours de lexcution de laction calculFibo avec la valeur 4 pour e la variable A. E13.2 : Codage des fonctions Reprendre la dmarche dcrite dans ce chapitre pour les fonctions. Les pae e ram`tres dune fonction sont des donnes, pour lesquelles on peut procder e e e

http://fribok.blogspot.com/

344

Traduction des langages ` structure de blocs en langage dassemblage a

fentre 1 e i save %o6, -64,%o6 Zone de sauvegarde de la fentre 2 e

l fentre 2 e o 6 7 l i 0

PILE

restore 6 7

fentre2.SP e 64

fentre1.SP = fentre2.FP e e Fig. 13.18 Utilisation des fentres de registres avec rservation de place dans la pile e e pour la sauvegarde des fentres. Noter que dans lcriture de linstruction e e save %o6, -64, %o6, le premier %o6 dsigne celui de lancienne fentre e e et le second celui de la nouvelle fentre. e appelee: save %o6, -64, %o6 ! ou save %sp, -64, %sp ! rserve une zone de 64=16*4 octets dans la pile, pour e ! la sauvegarde des registres i et l de ce nouveau contexte. ! ... utilisation des param`tres dentre %i0...%i6 e e ! et des variables locales %l0..%l7 ... ! retour et restauration de la fen^tre e jmpl %i7+8, %g0 restore appelante: ... call appelee ! sauvegarde de ladresse de retour dans %o7 nop Fig. 13.19 Programme ncessitant la sauvegarde des registres e

http://fribok.blogspot.com/

4. Exercices

345

appelant 0

PILE

save %o6, -taille,%o6 taille > 64

appel.sp e sauvegarde registres i, l Contexte

o 6 7

appelant.sp = appel.fp e

var. locales sauvegarde registres i, l param`tres e >6 Contexte de lappelant

o 6 7 appel e appelant.fp var. locales

Fig. 13.20 Variables locales et param`tres en exc`s dans la pile e e

http://fribok.blogspot.com/

e de lappel

346

Traduction des langages ` structure de blocs en langage dassemblage a

comme dans le cas des actions : on passe leur valeur. Le rsultat dune fonce tion est calcul par lappel sans que lappelant lui ait fourni ladresse dune e e de ses variables. Il faut donc choisir un mcanisme qui permet ` la fonction e a appele decrire le rsultat quelle calcule dans un emplacement mmoire connu e e e du contexte appelant, qui pourra le lire. On peut examiner deux solutions : le rsultat est stock dans un registre ou dans la pile. Noter que selon le type du e e rsultat de la fonction (par exemple sil sagit dun produit de types ou dun e tableau) la solution de la pile est plus facile ` mettre en oeuvre. a E13.3 : Nombre de 1 dans la reprsentation binaire dun entier e Traduire dans le langage dassemblage de votre choix lalgorithme prsent e e au chapitre 12, paragraphe 1.4.1, qui permet de compter les bits ` 1 dans la a reprsentation binaire dun entier. e E13.4 : Traduction de boucles imbriques e Traduire en langage dassemblage lalgorithme suivant :
lexique i, j, x : des entiers ; N : lentier ... { donn } e algorithme x 0 i parcourant 0 .. N j parcourant 0 .. N x x + i * j

Commencer par exprimer chaque boucle ` laide de la construction tant que a comme suggr au paragraphe 1.5 du chapitre 4. ee E13.5 : Algorithme de Bresenham Traduire dans le langage dassemblage de votre choix lalgorithme prsent au e e chapitre 5, paragraphe 2.3 qui permet de calculer les coordonnes des points e dune droite dans un plan. E13.6 : Suite de Syracuse Lalgorithme ci-dessous calcule les termes successifs de la suite de Syracuse. Traduire cet algorithme dans le langage dassemblage de votre choix.
lexique : X : lentier constant ... algorithme : tant que X = 1 si X reste 2 = 1 X 3 X + 1 sinon X X quotient 2

{ X est impair } { X est pair }

http://fribok.blogspot.com/

4. Exercices

347

E13.7 : Suite de Fibonacci Traduire compl`tement les algorithmes de lexemple suite de Fibonacci (algoe rithme dcrit dans la gure 13.3) dans lassembleur de votre choix. Envisager e des solutions avec ou sans gestion du lien dynamique, avec ou sans utilisation de fentres de registres. e E13.8 : Parcours dun tableau dentiers Soit lalgorithme :
lexique N : lentier ... { donn } e T : un tableau sur [0..N1] dentiers S, i : des entiers algorithme { calcul de la somme des lments du tableau } ee S T[0] i parcourant (1..N1) : S S + T[i]

Ecrire cet algorithme en langage dassemblage. Envisager plusieurs solutions en utilisant diverses reprsentations pour les entiers (2, 4 ou 8 octets) et divers e modes dadressage pour les acc`s aux lments du tableau. e ee E13.9 : Parcours dun tableau de structures Soit lalgorithme :
lexique N : lentier ... { donn } e ST : le type c : un caract`re ; m : un entier e T : un tableau sur [0..N1] de ST M, i : des entiers algorithme { calcul du maximum des lments du tableau } ee M T[0].m i parcourant (1..N1) : Si M < T[i] alors M T[i].m

Proposer une reprsentation en mmoire du type ST et crire en langage dase e e semblage lalgorithme ci-dessus. E13.10 : Parcours de matrice carre et comparaison double longueur e en complment ` deux e a Reprendre le probl`me E4.8 du chapitre 4, et proposer un programme en ase sembleur sparc (description de la zone de donnes, suite dinstructions). e E13.11 : Observation de code Observer le code produit par dirents compilateurs pour dirents proe e grammes ; en gnral une option (-S pour le compilateur gcc sous unix) permet e e dobtenir une version en langage dassemblage du code. Retrouver limplantation des variables globales, locales et des param`tres. e

http://fribok.blogspot.com/

Quatri`me partie e A la charni`re du logiciel et du e matriel... e

http://fribok.blogspot.com/

Chapitre 14 Le processeur : linterpr`te e cbl du langage machine a e


Ce chapitre dcrit la mise en oeuvre par un circuit de lalgorithme dine terprtation des instructions dun processeur. Nous parlons aussi dinterpr`te e e du langage machine. Cet interpr`te est cbl : ce nest pas un programme mais e a e un circuit. Etant donn le jeu dinstructions dni pour un processeur, la description e e de cet algorithme permet de comprendre comment est excute une instruce e tion, donc un programme en langage machine. Cest ce point de vue simple et purement pdagogique que nous adoptons ici, la description des mthodes de e e conception dun processeur dpassant le cadre de ce livre. Nous ne parlerons e pas non plus de processeur ` ot de donnes ou pipelin ; pour une description a e e approfondie le lecteur peut consulter [HP94]. Un processeur peut tre considr comme une machine algorithmique e ee (Cf. Chapitre 11) forme dune partie oprative (une UAL, des bus, des e e lments de mmorisation, etc.) et dune partie contrle. Le processeur est reli ee e o e a ` une mmoire dans laquelle est stock un programme en langage machine. La e e question de la liaison entre une machine algorithmique et une mmoire a t e ee tudie au chapitre 11. e e Le processeur doit rcuprer les instructions en langage machine dans la e e mmoire, dans lordre du programme, et les excuter une par une. Lalgoe e rithme dinterprtation du langage machine consiste ainsi en une boucle ine nie (mais nous verrons dans la partie VI, Chapitre 22, quil est possible dinterrompre cette boucle innie) : lire linstruction courante, la dcoder, e raliser le travail correspondant et dterminer ladresse de linstruction suie e vante (Cf. Paragraphe 1.6 du chapitre 12). Si linstruction ` excuter est par a e exemple add d0, d1, d2 le processeur doit faire en sorte que les contenus des registres d0 et d1 soient prsents aux deux entres de lUAL, activer laddition e e et envoyer le rsultat dans le registre d2. e La comprhension de ce chapitre suppose connus les chapitres 8, 9, 10, 11 e et 12. Apr`s avoir expliqu les principes de linterprtation des instruce e e

http://fribok.blogspot.com/

352

Le processeur : linterpr`te cbl du langage machine e a e

Processeur Partie contrle o

Mmoire e SelMem l/e bus donnes e programme

RI PC UAL Partie oprative e Fig. 14.1 Organisation globale de lensemble processeur/mmoire. UAL dsigne lunit e e e arithmtique et logique, PC le compteur de programme et RI le registre e instruction. bus adresses donnes e

tions du langage machine (paragraphe 1.), nous prsentons un exemple e extrmement simple dont le jeu dinstruction est dcrit dans le parae e graphe 2. Nous donnons dans le paragraphe 3. une ralisation du proe cesseur puis nous montrons comment lamliorer (paragraphe 4.). Enn, e nous tudions les consquences de quelques extensions du processeur (pae e ragraphe 5.).

1.

Les principes de ralisation e

La gure 14.1 dcrit la structure de lensemble processeur/mmoire. Le proe e cesseur est compos dune partie contrle et dune partie oprative ; la premi`re e o e e envoie des commandes ` la seconde qui, elle, met des comptes-rendus. La a e mmoire nest ici relie qu` un processeur. e e a
Les aspects prcis de communication entre le processeur et la mmoire sont e e dtaills dans le chapitre 15. Les aspects de liaison avec le monde extrieur e e e pour raliser par exemple des entres/sorties sont tudis dans le chapitre 16. e e e e

1.1

Relations du processeur avec la mmoire e

Le processeur est reli ` la mmoire par un bus adresses unidirectionnel et ea e un bus donnes bidirectionnel. e Nous supposons ici que la lecture ou lcriture seectue en un temps e infrieur au temps de cycle dhorloge du processeur. Lacc`s ` la mmoire est e e a e alors pilot par deux commandes : slection de la mmoire SelMem et lecture e e e ou criture l/e. Ainsi, pour crire la valeur vvv dans la mmoire ` ladresse e e e a xxx le processeur doit mettre SelMem ` 1 et l/e ` 0 en forant la valeur vvv a a c sur le bus donnes et la valeur xxx sur le bus adresses ; lcriture est eective e e

http://fribok.blogspot.com/

1. Les principes de ralisation e

353

au prochain front dhorloge du processeur. Pour lire la valeur contenue dans la mmoire ` ladresse xxx le processeur doit positionner les commandes Sele a Mem et l/e en forant la valeur xxx sur le bus adresses ; le contenu du mot c mmoire est disponible sur le bus donnes ` partir du prochain front dhorloge e e a du processeur. Le droulement dun acc`s mmoire dans le cas o` la mmoire est plus lente e e e u e a t dcrit au paragraphe 2.2 du chapitre 9 et les aspects de synchronisation ee e ont t dtaills au paragraphe 3.1 du chapitre 11. ee e e La mmoire contient deux types dinformations : des instructions et des e donnes. Une instruction machine comporte elle-mme deux types dinformae e tions : le code de linstruction et la dsignation de(s) oprande(s) de linstruce e tion. Selon les instructions et le format de leur codage ces informations peuvent tre lues en un seul acc`s ` la mmoire ou non. Lorsque plusieurs acc`s sont e e a e e ncessaires, ils se droulent ncessairement lors de cycles dhorloge dirents et e e e e conscutifs, le code de linstruction tant lu en premier. Un registre spcialis e e e e appel compteur programme (PC) rep`re le mot mmoire en cours de traitee e e ment. Il doit tre mis ` jour apr`s chaque acc`s ` une instruction en vue de e a e e a lacc`s suivant. e On peut envisager un autre type dorganisation dans laquelle la mmoire e est organise en deux parties distinctes : une mmoire pour les instructions e e et une mmoire pour les donnes. Ce type dorganisation ncessite deux bus e e e adresses et deux bus donnes dirents. Les principes gnraux restent tr`s e e e e e proches ; nous nen parlerons plus dans la suite.

1.2

Principes gnraux de la partie oprative e e e

La partie oprative dun processeur doit tre capable deectuer toutes les e e oprations et tous les transferts dinformation ncessaires ` lexcution des e e a e instructions du langage machine. Elle peut donc tre tr`s proche dune partie oprative type, dcrite au e e e e chapitre 11. Une particularit ` signaler est lexistence dun registre particulier ea (appel registre instruction et not RI), non manipulable par les instructions e e du langage machine et qui contient ` chaque instant linstruction en cours a dinterprtation. Le contenu de ce registre sert de compte-rendu pour la partie e contrle. o LUAL a deux types de sorties : une donne qui est le rsultat dun calcul e e et les codes de conditions arithmtiques Zu, Nu, Cu, Vu. La donne circule e e sur un bus et sera charge dans un registre ou un mot mmoire ; les codes e e de conditions sont des informations de contrle qui peuvent tre testes par o e e la partie contrle : ce sont des entres de la partie contrle. Ces codes de o e o conditions peuvent aussi tre chargs dans 4 bits dun registre dtat. e e e Notons quune adresse peut tre une entre de lUAL lorsquun calcul est e e ncessaire sur une adresse ; par exemple, pour traiter un mode dadressage ine direct avec dplacement, il faut ajouter la valeur de ladresse et le dplacement. e e

http://fribok.blogspot.com/

354

Le processeur : linterpr`te cbl du langage machine e a e

Les registres sont des lments de mmorisation internes au processeur. ee e Certains sont connus du programmeur et manipulables explicitement : un mnmonique leur est associ dans le langage dassemblage. Ces registres e e peuvent contenir des donnes et/ou des adresses. Ils peuvent tre classs en e e e direntes catgories. Par exemple dans la famille des processeurs 68xxx, les e e registres sont typs en registres de donnes et registres dadresses. Dans le e e sparc, on trouve des registres globaux et des registres locaux, dentre et de e sortie, les trois derniers tant organiss en fentres de registres. e e e Dautres registres, comme le compteur programme (PC), le pointeur de pile (SP), le mot dtat (SR) contenant les indicateurs Z, N, C, V, peuvent e tre manipuls au travers dinstructions spcialises. Par exemple, les instruce e e e tions de rupture de squence ont un eet sur la valeur du registre PC. Les e indicateurs Z, N, C, V du mot dtat contiennent les valeurs Zu, Nu, Cu, Vu e calcules par lUAL lors de la derni`re instruction qui a mis ` jour explicitee e a ment ces indicateurs. Dans certains processeurs, comme le sparc par exemple, le jeu dinstructions comporte les instructions arithmtiques sous deux formes : e Addcc et Add, addition avec ou sans mise ` jour des indicateurs. a Toute action sur un registre provoque un changement dtat de la partie e oprative. La partie oprative peut excuter un certain nombre dactions que e e e nous appellerons microactions (Cf. Paragraphe 3.1). Une microaction est un ensemble de modications simultanes de ltat de la partie oprative. e e e Rappelons que la partie oprative peut tre vue comme un automate dont e e ltat est lensemble des valeurs contenues dans les registres. Lexercice E14.4 e montre ce point de vue.

1.3

Principes gnraux de la partie contrle e e o

La partie contrle doit envoyer les commandes adquates ` la partie o e a oprative, le processeur ralisant ainsi linterprtation du langage machine. e e e Le schma gnral est le suivant : charger le registre dinstructions (RI) avec e e e linstruction courante (dont ladresse est dans PC), dcoder et excuter cette e e instruction, puis prparer le compteur programme (PC) pour linstruction suie vante. La partie contrle dun processeur est ainsi la ralisation matrielle dun o e e algorithme itratif qui peut tre dcrit par une machine squentielle avec ace e e e tions. Les sorties sont un ensemble dordres envoys ` la partie oprative e a e ou ` lextrieur et les entres sont des informations manant de la partie a e e e oprative : valeur dun code opration, valeur dun code condition et indie e cateurs arithmtiques. e La machine squentielle qui dcrit lalgorithme de la partie contrle est e e o aussi appele automate (ou graphe) de contrle ou squenceur. e o e Dans la suite nous dveloppons un exemple simple pour lequel nous e dcrivons la partie contrle tout dabord de faon fonctionnelle par un algoe o c rithme itratif en considrant les ressources (registres) du processeur comme e e

http://fribok.blogspot.com/

2. Exemple : une machine ` 5 instructions a

355

des variables et la mmoire comme un tableau. Nous donnons ensuite une dese cription sous forme de machine squentielle avec actions aux tats de laquelle e e on associe des microactions : ce sont les oprations eectivement ralisables e e par la partie oprative. Lobjectif est de montrer comment on peut concevoir e la partie oprative et la partie contrle dun processeur, tant donn le jeu e o e e dinstructions retenu.

2.

Exemple : une machine ` 5 instructions a

Le processeur comporte un seul registre de donnes, directement visible par e le programmeur, appel ACC (pour accumulateur). e Les instructions sont dcrites ci-dessous. On donne pour chacune une e syntaxe de langage dassemblage et leet de linstruction. mise ` zro du registre ACC a e chargement de la valeur immdiate vi dans ACC e chargement du mot mmoire dadresse ad avec le e contenu de ACC jmp ad saut ` ladresse ad a add [ad] chargement de ACC avec la somme du contenu de ACC et du mot mmoire dadresse ad. e clr ld #vi st [ad] Ce jeu dinstruction est extrmement rduit, lobjectif tant de disposer de e e e susamment dlments pour dtailler la conception du processeur mais de se ee e limiter de faon ` garder une taille raisonnable ` cette description. Remarquons c a a que lon pourrait rendre le jeu dinstructions plus symtrique en ajoutant une e instruction de chargement absolu : ld [ad]. La taille ncessaire au codage dune adresse ou dune donne est 1 mot. e e Les instructions sont codes sur 1 ou 2 mots : le premier mot reprsente le e e codage de lopration (clr, ld, st, jmp, add) ; le deuxi`me mot, sil existe, e e contient une adresse ou bien une constante. Le codage des instructions est donn gure 14.2-a. Voici un exemple de programme crit dans ce langage e e dassemblage :
ld #3 st [8] etiq: add [8] jmp etiq

En supposant le programme charg ` partir de ladresse 0, les adresses tant ea e des adresses de mots, ladresse associe au symbole etiq est 4. En supposant e que la taille dun mot est de 4 bits, la gure 14.2-b donne la reprsentation en e mmoire du programme prcdent apr`s assemblage et chargement en mmoire e e e e e a ` partir de ladresse 0 (Cf. Chapitre 18 pour plus de dtails). e
Remarque : En xant la taille dun mot nous avons g la taille maxie

http://fribok.blogspot.com/

356

Le processeur : linterpr`te cbl du langage machine e a e

mmoire e 0000 0010 0011 0011 1000 0101 1000 0100 0100 code de lopration ld e valeur immdiate 3 e code de lopration st e adresse 8 code de lopration add e adresse 8 code de lopration jmp e adresse 4

clr ld #vi st [ad] jmp ad add [ad]

1 2 3 4 5

vi ad ad ad

0100

0111

(a)

(b)
Fig. 14.2 (a) Codage des instructions ; (b) reprsentation en mmoire dun programme e e en langage machine

male de la mmoire puisquune adresse est code sur un mot. La mmoire du e e e processeur a ainsi une taille maximale de 16 mots.

Dans cet exemple, lexcution du programme commence par linterprtation e e de la premi`re instruction, dont le code est en mmoire ` ladresse 0. Ce code e e a tant celui de linstruction ld, linterpr`te lit une information supplmentaire e e e dans le mot dadresse 1. Cette valeur est alors charge dans le registre ACC. e Finalement, le compteur programme (PC) est modi de faon ` traiter linse c a truction suivante. Nous adoptons un point de vue fonctionnel, en considrant les ressources du e processeur comme les variables dun programme. Lalgorithme dinterprtation e des instructions est donn gure 14.3. e Nous montrons dans la suite comment raliser cet algorithme par un circuit. e Nous allons ainsi dnir la partie oprative puis la partie contrle qui la pilote. e e o

3.

Une ralisation du processeur e

Pour chaque instruction du langage machine, nous commenons par nous c poser les questions : de quel matriel avons-nous besoin ?, comment organiser e le ot des donnes pour cette instruction ? Nous retrouvons l` des questions e a tr`s proches de celles rsolues dans le chapitre 11. Les rponses ` ces quese e e a tions permettent de dnir la partie oprative. Puis nous tudions la faon e e e c de raliser les direntes tapes constituant lexcution dune instruction du e e e e langage machine ; nous dnissons ainsi la partie contrle. e o

http://fribok.blogspot.com/

3. Une ralisation du processeur e

357

lexique : entier4 : le type entiers reprsents sur 4 bits e e { les oprations arithmtiques sont donc modulo 16 } e e PC, Acc : des entier4 tailleMem : lentier 16 Mem : un tableau sur [0..tailleMem-1] dentier4 algorithme dinterprtation des instructions : e PC 0 tant que vrai selon Mem[PC] clr : Acc 0 ; PC PC + 1 ld : Acc Mem[PC + 1] ; PC PC + 2 st : Mem[Mem[PC + 1]] Acc ; PC PC + 2 jmp : PC Mem[PC + 1] add : Acc Acc + Mem[Mem[PC + 1 ]] ; PC PC + 2 Fig. 14.3 Algorithme dinterprtation du langage machine e

Lamlioration dune ralisation matrielle sexprime en termes de place e e e occupe par le circuit et de temps de calcul. Nous donnons ` la n de ce parae a graphe quelques lments permettant damliorer le schma obtenu selon ces ee e e crit`res et nous envisageons les consquences dune extension du jeu dinstruce e tions.

3.1

Dnition de la partie oprative e e

A partir du jeu dinstructions, on dnit le ux des donnes ncessaire, e e e les oprations que doit raliser lUAL, celles aectant le contenu des registres e e et les oprations concernant la mmoire. Cette tude permet petit ` petit de e e e a construire la partie oprative et de prciser les oprations lmentaires quelle e e e ee peut raliser : les microactions. e Nous notons : A ; B le fait que le contenu de A doit pouvoir tre e transfr en B sans distinguer les cas o` A ou B sont des bus ou des registres ; ee u A = B op C une microaction qui permet de stocker dans A le rsultat de e lopration op ralise sur les oprandes B et C. e e e e On arrive ainsi ` la partie oprative dcrite par la gure 14.4, la table 14.5 a e e rsumant lensemble des microactions ainsi que les transferts mis en jeu et les e commandes associes pour la partie oprative. e e Nous avons indiqu que le processeur est reli ` la mmoire par le bus e e a e adresses (BusAd) et le bus donnes (BusDon). On dispose des transferts : Buse Don ; Mem[BusAd] (criture mmoire) et Mem[BusAd] ; BusDon (lecture e e mmoire). e Tout dabord, il faut assurer le transfert de linstruction courante (repre ee par PC) de la mmoire vers le registre instruction (RI) de la partie oprative. e e

http://fribok.blogspot.com/

358

Le processeur : linterpr`te cbl du langage machine e a e

Dans notre exemple, une instruction est forme du code de lopration ` e e a raliser, plus ventuellement une valeur ou une adresse. Le code opration, les e e e valeurs et les adresses sont tous cods sur 1 mot. Nous choisissons de dcouper e e le registre RI en deux registres RI1 et RI2, le premier contenant le code opration e et le second linformation additionnelle (valeur immdiate ou adresse). Do` e u les transferts PC ; BusAd, BusDon ; RI1 (respectivement BusDon ; RI2), coupls avec lopration de lecture de la mmoire. Le rsum des microactions e e e e e associes se trouve dans les lignes 1 et 2 de la table 14.5. e Pour linstruction clr, il faut pouvoir forcer la valeur 0 dans le registre ACC : cette opration peut tre ralise par une commande de remise ` zro e e e e a e du registre (ligne 3 de la table 14.5). Linstruction ld #vi ncessite un transfert de la valeur immdiate vi dans e e laccumulateur. La valeur vi est stocke dans le registre RI2 ; do` le transfert e u RI2 ; ACC (ligne 4 de la table 14.5). Linstruction st [ad] ncessite un transfert de la valeur de ACC vers la e mmoire ; ce transfert a comme intermdiaire le bus donnes. Le transfert a e e e lieu ` ladresse qui a t stocke dans RI2. Do` : RI2 ; BusAd et ACC ; a ee e u BusDon, transferts coupls avec lopration dcriture mmoire (ligne 5 de la e e e e table 14.5). Linstruction jmp ad ncessite un transfert de la valeur ad dans le registre e PC. Linformation ad tant dans RI2 : RI2 ; PC (ligne 6 de la table 14.5). e Linstruction add [ad] ncessite un transfert des valeurs de ACC et du mot e mmoire dadresse ad (stocke dans RI2) vers les deux entres de lUAL, et un e e e transfert de la sortie de lUAL vers laccumulateur. La valeur provenant de la mmoire passe par le bus donnes do` : ACC ; UAL, RI2 ; BusAd, BusDon ; e e u UAL, UAL ; ACC et lopration de lecture mmoire. Evidemment lUAL doit e e disposer dune commande daddition de deux valeurs (ligne 7 de la table 14.5). De plus, pour assurer le passage au mot suivant, il faut pouvoir incrmenter e le compteur de programme, do` : PC ; UAL et UAL ; PC, lUAL dispou sant dune commande dincrmentation dune de ses entres (ligne 8 de la e e table 14.5). Enn il faut pouvoir initialiser le compteur de programme avec ladresse de la premi`re instruction (0 dans notre exemple) : do` une commande de remise e u a e ` zro du registre PC (ligne 9 de la table 14.5).

3.2

Description de lautomate de contrle o

Lexcution dune microaction est provoque par lactivation des come e mandes correspondantes et cest ` la partie contrle que revient le rle dactiver a o o ces commandes au bon moment. Lautomate de contrle du processeur est donn dans la gure 14.6. Les o e entres de cet automate sont des informations en provenance de la partie e oprative : conditions portant sur le code opration courant cest-`-dire le e e a contenu du registre RI1.

http://fribok.blogspot.com/

3. Une ralisation du processeur e

359

vers la partie contrle o chRI2 RI2 0 1 RI1 chRI1 ACC SelAccPC resetAcc chACC sAccUAL sAccDon Mem sRI2Ad Mem BusAd BusDon sPCAd Zu, Nu, Cu, Vu resetPC chPC ADD/INCR sPCUAL UAL

PC

Fig. 14.4 Une partie oprative 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 ; Acc RI2 ; BusAd Acc ; BusDon BusDon ; Mem[BusAd] RI2 ; PC Acc ; UAL(1) RI2 ; BusAd Mem[BusAd] ; BusDon BusDon ; UAL(2) UAL ; Acc PC ; UAL(1) UAL ; PC transferts utiliss e PC ; BusAd Mem[BusAd] ; BusDon BusDon ; RI1 PC ; BusAd Mem[BusAd] ; BusDon BusDon ; RI2 commandes pour la P.O. sPCAd, SelMem, l/e chRI1 sPCAd, SelMem, l/e chRI2 resetAcc SelAccPC, chAcc sRI2Ad, sAccDon, SelMem, l/e SelAccPC, chPC sAccUAL, sRI2Ad, SelMem, l/e, add/incr, SelAccPC chAcc sPCUAL, add/incr, SelAccPC, chPC resetPC

8 9

PC = PC + 1 PC = 0

Fig. 14.5 Commandes et transferts associs aux microactions. Les notations UAL(1) e et UAL(2) dsignent lentre 1 et lentre 2 de lUAL. e e e

http://fribok.blogspot.com/

360

Le processeur : linterpr`te cbl du langage machine e a e

Une premi`re version consisterait ` eectuer le test de chacun des codes e a conditions. Apr`s avoir lu le code de linstruction, nous obtiendrions un choix ` e a 5 cas (clr, ld, st, jmp et add). En remarquant que 4 instructions demandent la lecture du mot suivant (Etats E2, E4) nous pouvons regrouper les traitements. Cest ainsi que nous organisons demble les tests en 2 cas : instruction clr ou e non. Lautomate dcrit dans la gure 14.6 est la traduction de lalgorithme du e paragraphe 2. en paramtrant certains traitements. On note que pour toute e instruction sauf jmp le compteur de programme doit tre incrment (Etat E9) e e e an que la partie contrle puisse passer ` linstruction suivante ; dans le cas o a de linstruction jmp, le compteur de programme est charg avec ladresse de la e cible du branchement (Etat E6).

3.3

Ralisation matrielle de la partie contrle e e o

Maintenant que lautomate de contrle a t dcrit en terme des mio ee e croactions et des valeurs du code opration courant, nous allons dtailler sa e e ralisation matrielle. e e Les entres de lautomate sont des informations en provenance de la pare tie oprative, cest-`-dire les 4 bits du registre RI1 ; notons ri3 , ri2 , ri1 , ri0 le e a contenu de RI1, ri0 tant le bit de poids faible. La transition de ltat E1 vers e e ltat E3 est conditionne par : ri3 .ri2 .ri1 .ri0 car le code de linstruction clr est e e 0001. Pour un jeu dinstructions plus complet, les entres de la partie contrle e o peuvent tre plus nombreuses. e Les sorties de lautomate sont les commandes de la partie oprative. On e peut les reprsenter par une valuation du vecteur boolen : (SelMem, l/e, e e resetPC, resetAcc, chRI1, chRI2, chAcc, chPC, add/incr, SelAccPC, sAccUAL, sPCUAL, sAccDon, sRI2Ad, sPCAd). A ltat E1 est associ le vecteur de sore e tie : (1, 1, 0, 0, 1, 0, 0, 0, , , , , , 0, 1). Lexercice E14.5 propose de raliser la synth`se compl`te de cet automate. e e e Cet automate est cadenc par une horloge dont la priode correspond au e e temps ncessaire ` lexcution de la microaction la plus longue ; ce temps e a e est appel temps de cycle. Quand on lit quun processeur a une horloge ` e a 500 Megahertz, on peut penser que le coeur du processeur a un temps de cycle de 2 nanosecondes. Dans lexemple, la microaction la plus longue est Acc = Acc + Mem[RI2], qui comporte une addition et un acc`s mmoire e e alors que les autres microactions ne comportent que lun des deux.

4.

Critique et amlioration de la solution e

Apr`s avoir produit une solution, il est judicieux de se demander si elle peut e tre amliore. Il faut alors savoir selon quels crit`res physiques : frquence de e e e e e fonctionnement, surface du circuit, puissance lectrique dissipe, etc. e e

http://fribok.blogspot.com/

4. Critique et amlioration 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. 14.6 Un premier automate de contrle 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.7 Un autre automate de contrle pour le processeur o

http://fribok.blogspot.com/

362

Le processeur : linterpr`te cbl du langage machine e a e

En gnral, on essaie de rendre le processeur le plus rapide possible en e e diminuant le temps dexcution des instructions machine. Le temps dexcution e e dune instruction donne est gal ` N C o` N est le nombre dtats ncessaires e e a u e e a ` lexcution de linstruction et C est le temps de cycle. On peut donc diminuer e soit le temps de cycle, soit le nombre dtats ncessaires ` lexcution dune e e a e instruction. Dans notre exemple, lexcution de linstruction add, par exemple, e prend 5 cycles dhorloge. On peut aussi chercher ` conomiser le matriel : utiliser le moins possible ae e de registres ou de bus dans la partie oprative. e Une bonne ralisation est souvent le rsultat dun compromis entre tous e e ces aspects. Nous donnons ici quelques ides damliorations sur lexemple e e prcdent. e e

4.1

Dcomposition des microactions e

Pour diminuer le temps de cycle, on peut viter de grouper un acc`s e e a ` la mmoire et une opration UAL dans la mme microaction. Dans notre e e e exemple, on pourrait imaginer un registre tampon T connect au bus donnes e e et ` lentre de lUAL. Ltat E8 pourrait alors tre divis en 2 tapes corresa e e e e e pondant aux microactions T = Mem[RI2] et ACC = ACC + T. Le temps de cycle correspondrait alors au temps dacc`s ` la mmoire. Cela ne fait pas e a e gagner de temps pour lexcution de linstruction daddition mais les autres e instructions sont, elles, excutes plus rapidement. e e On peut, par ailleurs, se demander si le registre RI2 est bien ncessaire, e cest-`-dire se poser la question : peut-on faire transiter directement la valeur a ou ladresse associe ` un code opration vers le point o` elle est ncessaire ? e a e u e Dans le cas de linstruction ld (respectivement jmp) la microaction Acc = Mem[PC] (respectivement PC = Mem[PC]) convient. Pour cela, il faut connecter le bus donnes directement aux multiplexeurs dentre de chacun e e des registres Acc et PC, ce qui est parfaitement possible. En revanche, dans le cas des instructions st et add, il est indispensable de disposer dun registre intermdiaire pour stocker ladresse qui est utilise pour lacc`s mmoire, en e e e e criture pour st et en lecture pour add. Cette modication permettrait donc e de gagner un tat lors de lexcution des instructions ld et jmp et seulement e e dans ces deux cas.

4.2

Paralllisation de microactions e

Une autre faon damliorer lecacit du processeur consiste ` eectuer en c e e a parall`le certains traitements, quitte ` ajouter des oprateurs de base ou des e a e registres dans la partie oprative. Par exemple, pour la machine prcdente e e e il est possible de charger un mot de la mmoire dans RI1 et dincrmenter e e en parall`le PC an quil soit prt pour la lecture suivante, les microactions e e RI1 = Mem[PC] et PC = PC + 1 nutilisant pas le mme matriel. Etant e e

http://fribok.blogspot.com/

4. Critique et amlioration de la solution e

363

donnes deux microactions A1 et A2, A1 A2 dnote leur activation en pae e rall`le, cest-`-dire lactivation de lensemble des commandes associes ` lune e a e a et ` lautre dans le mme cycle dhorloge. a e La gure 14.7 dcrit un nouvel automate de contrle pour le processeur. e o Lincrmentation du compteur de programme est excute parall`lement ` la e e e e a lecture dun mot mmoire puisque le matriel (la partie oprative) le pere e e met. Cela ne pose pas de probl`me pour le traitement de linstruction jmp car e la valeur ainsi stocke dans le registre PC est crase par ladresse adquate e e e e ultrieurement. Le temps dexcution de linstruction add est maintenant de 3 e e cycles dhorloge. De faon gnrale, le temps dexcution de toutes les instrucc e e e tions machine a diminu car le nombre dtats traverss est plus petit. e e e Ce genre doptimisation doit tre fait avec prcaution. Supposons que la e e mmoire associe au processeur soit lente, quun acc`s mmoire dure plus dun e e e e cycle dhorloge ; la mmoire met alors un signal n-acc`s lorsque la donne lue e e e e est disponible sur le bus donnes. La microaction de lecture RI1 = Mem[PC] e e est alors ralise dans un tat comportant une boucle sur le signal n-acc`s et e e e le contrleur passe ` ltat suivant sur lentre n-acc`s. La mise en parall`le o a e e e e de cette microaction avec PC = PC + 1 peut tre incorrecte ; le compteur e programme peut avoir t incrment avant que la lecture ne soit ralise et ee e e e e Mem[PC] peut alors correspondre ` un mot suivant celui auquel on devait a accder. e

4.3

Paramtrisation des commandes e

Une autre amlioration consiste ` essayer de minimiser le nombre dtats de e a e la partie contrle. Ceci rend la ralisation de la partie contrle plus compacte o e o et peut aussi amliorer lecacit du processeur. e e La paramtrisation consiste ` ajouter une partie de matriel ` la fronti`re e a e a e de la partie contrle et de la partie oprative, ce qui permet de regrouper des o e traitements dans la partie contrle. o Par exemple, dans la partie contrle de la gure 14.7, les tats E5 et E6 se o e ressemblent beaucoup. Nous pouvons les rassembler en un seul tat comportant e la microaction ACCouPC = RI2 dont la commande associe est chACCouPC. e Il sut alors dajouter entre la partie contrle et la partie oprative le circuit o e combinatoire donn dans la gure 14.8. Lorsque la partie contrle active la e o commande chACCouPC la commande de chargement du registre adquat est e active selon la valeur du code opration, contenue dans RI1. e e Lexemple prcdent est simpliste. En ralit, il existe nombre de cas o` la e e e e u paramtrisation fait gagner un grand nombre dtats. Nous en montrons une e e utilisation dans le paragraphe suivant. Le matriel ajout peut constituer une partie importante du processeur ; e e par exemple, dans un 68000, la partie contrle, la partie oprative et la paro e tie servant ` la paramtrisation constituent chacune de lordre dun tiers du a e matriel. e

http://fribok.blogspot.com/

364

Le processeur : linterpr`te cbl du langage machine e a e

Etat 8 ri3.ri2.ri1.ri0 chACC

chACCouPC chPC ri3.ri2.ri1.ri0 Etat 2 ou Etat 4 Fig. 14.8 Production des commandes chACC et chPC selon la commande chACCouPC, le code opration et ltat de lautomate de contrle. chACCouPC est mise e e o e par la partie contrle, chACC et chPC sont reues par la partie oprative. o c e chACC est active lorsque lautomate de contrle est dans ltat 8 ou lorsque e o e chACCouPC est vraie alors que linstruction courante est ld (code par 2 en e dcimal). chPC est active lorsque lautomate de contrle est dans un des e e o tats 2 ou 4 ou lorsque chACCouPC est vraie alors que linstruction courante e est jmp (code 4 en dcimal). e e

5.

Extensions du processeur

Dans ce paragraphe, nous tudions des extensions de deux types pour le e processeur : augmentation du nombre de registres utilisables par le programmeur et extension du jeu dinstructions.

5.1

Augmentation du nombre de registres utilisateur

Imaginons que notre processeur ait 16 registres de donnes ACC0, ACC1, ..., e ACC15 au lieu dun seul accumulateur. Les instructions clr, ld, st et add ont alors un param`tre supplmentaire. e e Linstruction jmp reste inchange. La syntaxe de ces instructions peut tre : e e clr ACCi ld #vi, ACCi st ACCi, [ad] add [ad], ACCi mise ` zro du registre ACCi a e chargement de la valeur vi dans le registre ACCi stockage du contenu de ACCi ` ladresse ad en mmoire a e stockage de la somme du contenu de la mmoire e dadresse ad et du contenu de ACCi dans ACCi.

Le codage des instructions ld, st et add demande 3 mots (toujours de 4 bits) : un pour le code opration, un pour la valeur immdiate ou ladresse et un e e troisi`me pour le numro du registre. Le codage de linstruction clr en dee e mande 2 (Cf. Figure 14.9). La gure 14.10 dcrit une nouvelle partie oprative pour le processeur e e

http://fribok.blogspot.com/

5. Extensions du processeur

365

ld vi numro de registre e

st ou add ad numro de registre e

clr numro de registre e

Fig. 14.9 Codage des instructions pour une extension de la machine

BusA ACC0

sACC0A ACC15 ACC1 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 contrle o

BusAd

Fig. 14.10 Partie oprative complte pour le processeur tendu e ee e

tendu. On y trouve videmment les 16 registres ACCi, i = 0, .., 15, un ree e gistre supplmentaire RI3 qui permet de stocker le numro du registre lu en e e mmoire lors du traitement dune instruction clr, ld, st ou add. Les bits de e ce registre sont de nouvelles entres pour la partie contrle. e o Cette partie oprative comporte deux parties de calcul : une sur les donnes e e et une sur les adresses. On pourrait utiliser lunit de calcul sur les adresses e pour grer, par exemple, la mise ` jour dun pointeur de pile. e a Sans utiliser de technique de paramtrisation, la partie contrle compore o terait un tat par registre pour chacune des instructions clr, ld, st et add. e Par exemple, pour linstruction clr, on aurait les microactions : ACC0 = 0, ACC1 = 0, . . ., ACC15 = 0. Lautomate a alors beaucoup dtats et le cire cuit ` synthtiser est complexe et volumineux. a e Lors de lexcution des instructions clr, ld, st et add, le registre RI3 e contient la valeur i, numro du registre ACCi concern. Les 16 tats correspone e e dant ` la mise ` zro des 16 registres peuvent tre remplacs par un seul tat a a e e e e comportant la microaction ACCRI3 = 0 qui signie : le registre ACC dont le

http://fribok.blogspot.com/

366

Le processeur : linterpr`te cbl du langage machine e a e

microaction ACCRI3 = 0 ACCRI3 = RI2 Mem[RI2] = ACCRI3 ACCRI3 = ACCRI3 + Mem[RI2]

commandes resetACC sRI2B, chACC sACCDon, sRI2Ad, SelMem, Ecr sACCA, sRI2Ad, SelMem, Lec, chACC

Fig. 14.11 Commandes associes aux nouvelles microactions e RI3 resetACC resetACC0 resetACC1 resetACC15 RI3 sACCDon RI3 sACC0Don sACC1Don sACC15Don sACCA sACC0A sACC1A sACC15A chACC RI3 chACC0 chACC1 chACC15

Fig. 14.12 Ralisation de commandes paramtres e e e

numro est la valeur contenue dans RI3 est remis ` zro. De mme, les 16 tats e a e e e correspondant au chargement des 16 registres peuvent tre remplacs par un e e tat avec la microaction : ACCRI3 = RI2. Pour linstruction st, on va dnir e e la microaction : Mem[RI2] = ACCRI3 et pour linstruction add la microaction : ACCRI3 = ACCRI3 + Mem[RI2]. La table de la gure 14.11 donne les commandes associes ` chacune de ces nouvelles microactions. e a Il faut ajouter le matriel ncessaire pour laborer les commandes e e e resetACC0, . . ., resetACC15, chACC0, . . ., chACC15, sACCDon0, . . .sACCDon15, sACC0A, . . ., sACC15A ` partir des commandes resetACC, chACC, sACCDon, a sACCA et du contenu de RI3. La gure 14.12 dcrit ces circuits raliss avec e e e un dcodeur. e La description de la partie contrle paramtre est ainsi la mme que pour o e e e un seul registre ACC.

5.2

Extension du jeu dinstructions

Des extensions simples comme lajout doprations (soustraction, conjonce tion logique, incrmentation dun registre) sont aisment ralises en complie e e e quant lUAL. La commande de lUAL peut alors tre ralise directement ` e e e a partir dun sous-ensemble du registre instruction. Il faut toutefois faire attention aux tats o` lUAL est utilise pour des calculs ` usage interne, comme e u e a par exemple : PC = PC + 1.

http://fribok.blogspot.com/

6. 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. 14.13 Extrait de la partie contrle pour le traitement de linstruction brn. Les o `ches notes * ont pour cible lacquisition de linstruction suivante, ceste e `-dire ltat E2 de la gure 14.7. a e

Supposons que nous voulions maintenant ajouter des branchements conditionnels. Par exemple, on ajoute linstruction brn ad dont leet est : si le rsultat de lopration prcdente est ngatif alors eectuer un branchee e e e e ment ` ladresse ad sinon passer ` linstruction suivante. Ce genre dinstruca a tion utilise les codes de conditions calculs par lUAL lors de lexcution des e e oprations ; ici, il sagit de lindicateur de rsultat ngatif (N) que lon peut e e e supposer charg lors de toute instruction arithmtique. En revanche, le bit N e e nest pas charg lors dun calcul de type PC = PC + 1. e LUAL est complte avec un registre ` 1 bit. Ce bit est souvent stock dans ee a e le registre dtat. Le contenu de ce registre est accessible en permanence par e la partie contrle. La gure 14.13 dcrit la portion de partie contrle traitant o e o linstruction brn. Les exercices E14.1, E14.2 et E14.3 sugg`rent des modications plus e compl`tes pour le processeur tudi ci-dessus. e e e

6.

Exercices

E14.1 : Branchement conditionnel gnral e e On veut ajouter au langage machine du processeur tudi dans ce chapitre une e e instruction BRcc o` cc reprsente lun des codes de conditions classiques de u e tout processeur. Etudier les consquences de cette modication sur la partie e oprative et la partie contrle du processeur. On peut considrer un codage e o e des direntes conditions cc sur 4 bits b1, b2, b3, b4 (ou prendre le codage e dun processeur existant). Raliser, en particulier, le circuit combinatoire qui e reoit en entre les bits b1, b2, b3, b4 du code opration et les 4 bits Z, N, c e e C, V et dlivre un bit Br disant si la condition donne eectivement lieu ` e a un branchement ou non. Le bit Br est exploit par la partie contrle pour e o

http://fribok.blogspot.com/

368

Le processeur : linterpr`te cbl du langage machine e a e

tablir la nouvelle valeur du compteur programme. Cest encore une forme de e paramtrisation, sur les comptes-rendus plutt que sur les commandes. e o E14.2 : Mode dadressage relatif Dans le langage machine du processeur tudi dans le prsent chapitre, les e e e branchements sont absolus, ladresse cible du branchement est donne dans e linstruction. On veut maintenant introduire des branchement relatifs, cest-`a dire pour lesquels ladresse cible du branchement est gale ` la somme de PC e a et dune valeur constante donne dans linstruction. On peut modier la partie e oprative de la gure 14.10 et remplacer le circuit CALC par un additionneur e ou bien utiliser lUAL pour raliser laddition. Etudier les modications de la e partie oprative et dcrire la partie contrle du processeur. e e o E14.3 : Appel de sous-programme Ajouter dans le langage machine des instructions dappel et de retour de sousprogramme (ajouter les laisons entre PC et le bus donnes, ajouter un pointeur e de pile). Une instruction dappel de sous-programme demande la sauvegarde de ladresse de retour (Cf. Paragraphe 1.4.3 du chapitre 12). Un processeur intgrant entre autres cette possibilit est dcrit dans le chapitre 22. e e e E14.4 : Partie oprative vue comme un automate e Nous avons signal au paragraphe 1.2 que la partie oprative peut tre vue e e e comme un automate. Lobjectif de cet exercice est de prciser la dnition de e e cet automate. Une telle approche pourrait tre utilise dans un langage de e e description de matriel. e La partie oprative du processeur (Cf. Paragraphe 3.1) est un automate ` e a 15 ls dentre : chRI1, chRI2, SelAccPC, resetAcc, chACC, sAccUAL, sAccDon, e resetPC, chPC, sPCUAL, sRI2Ad, sPCAd, ADD/INCR, Lire. La commande Lire correspond ` la conjonction : l/e et SelMem. La commande l/e et SelMem a (Ecrire) ne modie pas ltat du processeur, mais seulement celui de la mmoire. e e Elle nest pas une entre de la partie oprative. e e 15 ls dentres donnent 215 entres possibles. On ne peut donc pas dcrire e e e les transitions selon toutes les valeurs des entres. On crira : si chRI1 alors ... e e pour parler en fait des 214 entres pour lesquelles chRI1 vaut 1. e Dnissons maintenant lensemble des tats de lautomate. Il y a 4 registres e e de 4 bits : RI1, RI2, Acc et PC. Ces 16 bits dnissent 216 tats. On va dcrire le e e e nouvel tat en fonction de lancien de faon symbolique, en utilisant un algoe c rithme. On peut en eet donner une description fonctionnelle de la fonction de transition a laide dexpressions conditionnelles dnissant la valeur de chaque ` e registre selon sa valeur prcdente et les entres courantes. On introduit des e e e variables intermdiaires pour faciliter lcriture (Cf. Figure 14.14). e e Poursuivre la description fonctionnelle de cette partie oprative. e E14.5 : Synth`se dune partie contrle e o Lobjectif de cet exercice est la synth`se de la partie contrle du processeur e o

http://fribok.blogspot.com/

6. Exercices

369

< RI1, RI2, Acc, PC > : tat de la partie oprative e e < nouvelRI1, nouvelRI2, nouvelAcc, nouveauPC > : nouvel tat de la partie oprative e e sortieUAL, BusDon, BusAd : variables intermdiaires e { Une partie de la fonction de transition de la partie oprative } e nouvelRI1 = si chRI1 alors BusDon sinon RI1 nouvelRI2 = si chRI2 alors BusDon sinon RI2 nouvelAcc = si resetAcc alors 0 sinon si chACC alors si selAccPC alors sortieUAL sinon RI2 sinon Acc BusDon = si sAccDon alors Acc sinon si Lire alors Mem[BusAd] sinon non dni e Fig. 14.14 Description symbolique dune fonction de transition 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 entres (RInst) e ri3 ri2 ri1 ri0 x x x x 0 0 0 1 =0 0 0 1 x x x x x x x x 0 0 1 0 0 0 1 1 0 1 0 0 nouvel tat e ne2 ne1 ne0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 1 1 0 1 1 1 1 1 1 0

e3 0 0 0 0 0 0 0 0

clr autre

ld st jmp

ne3 0 0 0 0 1 0 0 0

Fig. 14.15 fonction de transition

donne dans la gure 14.6 selon la technique tudie au chapitre 10. Lautomate e e e a 10 tats que lon peut coder sur 4 bits e3 , e2 , e1 , e0 ; ltat Ei est reprsent e e e e par le codage binaire de lentier i. La table de la gure 14.15 donne une partie de la fonction de transition. Terminer cette table et raliser la synth`se de cette fonction combinatoire avec e e des portes, ou un PLA (Cf. Chapitre 8). Remarquer au passage que lautomate de contrle rv`le une sous-spcication : rien nest prvu si le code de o e e e e linstruction dans RI1 nest pas un code valide. En fait, dans le cas de code invalide, lors du dcodage de linstruction une interruption est gnre par le e e ee processeur (Cf. Chapitre 22). La partie contrle a 16 ls de sorties : SelMem, l/e, resetPC, resetAcc, chRI1, o chRI2, chAcc, chPC, add/incr, SelAccPC, sAccUAL, sPCUAL, sAccDon, sRI2Ad, sPCAd (Cf. Paragraphe 3.2). La partie contrle tant dcrite par un automate o e e de Moore, les sorties dpendent uniquement de ltat. Nous donnons dans la e e gure 14.16 une partie de la fonction de sortie de lautomate. Complter cette e

http://fribok.blogspot.com/

370

Le processeur : linterpr`te cbl 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)

... ... ... ...

Fig. 14.16 fonction de sortie nom de linstruction addition soustraction soustraction bis conjonction disjonction ou exclusif charg. dun registre stockage en mmoire e branchement index e branchement relatif charg. bit poids forts assembleur ADD S1, S2, Rd SUB S1, S2, Rd SUBR S1, S2, Rd AND S1, S2, Rd OR S1, S2, Rd XOR S1, S2, Rd LOAD Rx, S2, Rd STORE Rx, S2, Rs JMP COND, S2, Rx JMPR COND, Y LDHI Rd, Y smantique e Rd S1 + S2 Rd S1 - S2 Rd S2 - S1 Rd S1 S2 Rd S1 S2 Rd S1 S2 Rd Mem[Rx+S2] Mem[Rx+S2] Rs PC Rx + S2 si COND PC PC + Y si COND Rd3113 Y, Rd120 0

Fig. 14.17 Instructions dun processeur inspir du sparc e

table et synthtiser la fonction combinatoire avec des portes ou un PLA. e En utilisant des bascules D pour reprsenter ltat de lautomate, dessiner e e le circuit synthtisant la partie contrle toute enti`re. e o e E14.6 : Interpr`te dun langage machine type sparc e Ce probl`me a pour but de dcrire linterpr`te du langage machine dun proe e e cesseur imaginaire inspir du processeur sparc. e Les adresses et les donnes sont sur 32 bits. Le processeur comporte 31 e registres (nots R1, . . ., R31) de 32 bits chacun et un registre spcial not R0 e e e contenant 0 en oprande source et non modiable. e La table 14.17 dcrit le jeu dinstructions du processeur et la gure 14.18 e prcise le codage des direntes instructions. S1, Rx, Rd, Rs dsignent des e e e registres : un des registres Ri, i=0, . . ., 31. S2 dsigne un registre ou une valeur e immdiate (sur 13 bits). Y reprsente une valeur immdiate sur 19 bits. On e e e peut ajouter les instructions ADDcc, SUBcc, SUBRcc, ANDcc, ORcc et XORcc qui ont le mme eet que ADD, SUB, SUBR, AND, OR et XOR avec mise ` jour des codes e a de conditions. Toute opration mettant en jeu des valeurs codes sur moins de e e 32 bits (13 pour S2, 19 pour Y) doit prendre en compte lextension du signe. La gure 14.19 dcrit la partie oprative. Cette partie oprative comporte e e e 3 bus internes. Les entres de lUAL sont connectes aux bus Bus1 et Bus2 e e et sa sortie au bus BusRes. Le circuit combinatoire ext-sign extrait du registre instruction RI la valeur immdiate et ltend sur 32 bits an de lenvoyer sur e e

http://fribok.blogspot.com/

6. Exercices

371

(a)

30 25 23 0 code op C

18

14 I

12 S2

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 immdiate (13bits) e ou no registre (bits 4-0) =1 si S2 est une valeur immdiate e 0 (b)

(c)

18 14 Rx 0

4 S2

Fig. 14.18 Codage des instructions dun processeur inspir du sparc : a) inse tructions ADD, ADDcc, SUB, SUBcc, SUBRm SUBRcc, AND, OR, XOR, LOAD, STORE ; b) instructions LDHI et JMPR ; c) instruction JMP.

Bus2. Le circuit combinatoire DEC eectue un dcalage dune valeur circulant e sur Bus2 ; elle est utile pour lexcution de linstruction LDHI. Le compteur e programme PC peut tre incrment, ou charg ` partir du rsultat dun calcul e e e ea e (via BusRes). La valeur circulant sur BusAd peut tre le rsultat dun calcul e e ralis par lUAL, une valeur stocke prcdemment dans le registre interne T e e e e e ou le contenu de PC. Voici quelques pistes ` explorer : a 1. Ajouter sur la partie oprative les commandes ncessaires. e e 2. Dcrire la partie contrle du processeur sous forme dune machine e o squentielle avec actions. Pour chaque microaction utilise, vrier quelle e e e est eectivement excutable par la partie oprative fournie. Pour cela, e e donner en dtail lensemble des commandes qui lui sont associes. e e 3. Dessiner les circuits ext-sign, DEC et COND. 4. Dcrire le circuit permettant de commander les registres : acc`s aux bus e e et chargement des registres. 5. Choisir un codage pour les oprations et pour les conditions e arithmtiques, et raliser le squenceur. e e e E14.7 : Interpr`te dun langage machine type 68000 e Ce probl`me a pour but de dcrire linterpr`te du langage machine dun proe e e cesseur imaginaire inspir du processeur 68000. La principale dirence avec e e le probl`me prcdent vient de lexistence dun nombre important de modes e e e dadressage pour ce processeur. Le programmeur dispose dun ensemble de registres nots Di, i=0, . . ., max. e Le registre Dmax joue un rle particulier, celui de pointeur de pile (aussi not o e SP). La partie oprative comporte deux bus internes BusSource et BusRsultat e e

http://fribok.blogspot.com/

372

Le processeur : linterpr`te cbl du langage machine e a e

Mem

PC

ZNCV

COND

Bus2

19

DEC

INCR Bus1 BusRes

o vers la partie contrle

ext-sign

32

R I

Fig. 14.19 Partie oprative dun processeur inspir du sparc e e

http://fribok.blogspot.com/

Mem

BusDon

R0

13

R 1

R 31

BusAd

6. Exercices

373

Mem Bus Source ZNCV INCR PC

BusAd

Di

Bus Rsultat e BusDon RI vers la partie contrle o Fig. 14.20 Partie oprative dun processeur inspir du 68000 e e Mem

et trois registres internes (non visibles par le programmeur) : A, D et T (Cf. Figure 14.20). T est un registre tampon servant ` stocker le rsultat dun calcul a e en sortie de lUAL, les deux autres (A, D) vont permettre de faciliter linterprtation des instructions. Les registres et les bus ont 32 bits. e Une instruction peut tre code sur 1 ou 2 mots de 32 bits. Le deuxi`me e e e mot ventuel est appel mot dextension. Le format de codage du premier mot e e dune instruction est le suivant : code opration nRd ModeAdr nRs e Cest une machine ` deux rfrences (Cf. Chapitre 12) ; nRd est le numro a ee e dun registre qui constitue le premier oprande. Les deux informations ModeAdr e et nRs dsignent le deuxi`me oprande, ModeAdr dcrivant le mode dadrese e e e sage de cet oprande et nRs le numro du registre concern. Le rsultat dune e e e e opration binaire est stock dans le registre de numro nRd. e e e Les modes dadressage considrs sont : registre direct (not nRs), registre ee e indirect (not nRs@), registre indirect avec prdcrmentation (not nRs@-), ree e e e e gistre indirect avec postincrmentation (not nRs@+), immdiat (not #imm), e e e e relatif et absolu. Les modes dadressage immdiat, relatif et absolu ncessitent e e un mot dextension ; pour ladressage immdiat, il sagit dune valeur, pour e ladressage relatif dun dplacement par rapport ` la valeur courante du compe a teur de programme et pour ladressage absolu dune adresse. Pour une description de la smantique des modes dadressage, voir le chapitre 12. e Les instructions considres sont laddition (add), la soustraction (sub), le ee et logique (and), le chargement dune adresse (lea), le chargement dun registre

http://fribok.blogspot.com/

374

Le processeur : linterpr`te cbl 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 dadressage 001 010 011 100 nRs@- nRs@ nRs@+ rel X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X

101

110 #imm

X X X X

111 abs X X X X X X X X

Fig. 14.21 Modes dadressage autoriss selon les instructions e

(load), le stockage dun registre en mmoire (store), le branchement (jmp) et e le branchement ` un sous-programme (bsr). a La table 14.21 donne un codage des instructions, le code opration tant e e cod sur trois bits (nomms a, b, c), et un codage pour le mode dadressage e e lui aussi sur trois bits (nomms d, e, f). Une croix dans une case indique que le e mode dadressage est autoris pour linstruction. Le tableau indique aussi les e instructions pour lesquelles il y a une mise ` jour du mot dtat (bits Z, N, C, a e V). Voici quelques pistes ` explorer : a 1. Etudier le droulement de linstruction add pour chacun des modes e dadressage. Constater les redondances et remarquer que linterprtation e peut tre faite en deux phases : tout dabord le calcul de ladresse du e deuxi`me oprande (sil sagit dune valeur, on la stockera dans D, et si e e cest une adresse, dans A), puis le traitement de lopration proprement e dite. 2. Etudier linterprtation de linstruction de branchement ` un souse a programme (jsr) ; ladresse de retour est stocke dans la pile, le registre e pointeur de pile tant Dmax. Nous navons pas fourni dinstruction de e retour ; comment peut-on la programmer avec les instructions donnes ? e 3. Ajouter sur la partie oprative les commandes ncessaires. e e 4. Dcrire la partie contrle du processeur sous forme dune machine e o squentielle avec actions. Pour chaque microaction utilise, vrier quelle e e e est eectivement excutable par la partie oprative fournie ; pour cela, e e donner en dtail lensemble des commandes qui lui sont associes. e e 5. Proposer une ralisation microprogramme (Cf. Chapitre 10) de lautoe e mate prcdent. e e 6. Dcrire les circuits de calcul des commandes dacc`s aux bus et de chare e gement des registres.

http://fribok.blogspot.com/

Cinqui`me partie e Architecture dun syst`me e matriel e et logiciel simple

http://fribok.blogspot.com/

Un syst`me matriel et logiciel e e simple


Dans ce qui prc`de, nous avons tudi ce quest un processeur. Du point de e e e e vue matriel il sagit dun assemblage de circuits combinatoires et squentiels e e dont le rle est linterprtation dun jeu dinstructions particulier. Le jeu dinso e tructions fourni permet ` un utilisateur dcrire un programme dans un langage a e de bas niveau : le langage machine. Pour obtenir un ordinateur, il manque encore un certain nombre de composants matriels et logiciels. La partie V dcrit le minimum ncessaire pour e e e obtenir un ordinateur simple, mono-utilisateur. Lordinateur ainsi labor ne e e sera pas un ordinateur rel, notre propos tant plutt de donner les principes e e o permettant de comprendre le rle et la place de chaque composant. Nous vero rons dans la partie VI comment tendre ce syst`me simple ` un ordinateur e e a multitches, donc ventuellement multi-usagers. a e

Processeur/mmoire et entres/sorties e e
Le chapitre 15 montre comment connecter le processeur et de la mmoire e centrale (ou principale). Il sagit de mmoire ` semiconducteurs, ` acc`s e a a e alatoire. Cette mmoire est organise en plusieurs composants dont cere e e tains sont des mmoires mortes programmables (EEPROM) ; dautres sont e ncessairement des mmoires vives. Cette mmoire sert ` lutilisateur : le proe e e a gramme en cours dexcution et les donnes associes sont stocks en mmoire e e e e e vive. Les informations et le code ncessaire au dmarrage de lordinateur sont e e stocks en mmoire morte. e e Pour raliser des programmes dont la valeur ne se rduit pas ` une e e a constante, lensemble processeur/mmoire doit tre ouvert vers lextrieur. e e e Nous verrons dans le chapitre 16 que la communication avec le monde extrieur e comporte des aspects de cblage (connexion physique de priphriques a e e dentres/sorties) mais quil faut surtout grer des probl`mes de synchronie e e sation (Cf. Chapitre 6). Nous reprendrons la description des entres/sorties e dans la partie VI et verrons des amliorations utilisant le mcanisme des ine e terruptions. Les priphriques dentres/sorties sont tr`s divers. On peut distinguer deux e e e e

http://fribok.blogspot.com/

378

Un syst`me matriel et logiciel simple e e

types de fonctionnalits : dialogue avec lenvironnement et gestion de mmoire e e secondaire. Certains priphriques permettant un dialogue avec un utilisateur humain e e (clavier/cran, souris et manettes diverses, scanner, tables traantes, cartes e c son, imprimantes, etc.), les circuits de communication avec un environnement industriel (gestion dautomatismes, de conduite de procds, de roe e bots, capteurs et actionneurs en tous genres) et enn les circuits servant ` a tablir des communications entre ordinateurs (gestion des rseaux locaux e e et liaisons grande distance, cartes rseau, modems). e La mmoire secondaire est une mmoire non volatile, de grande capacit et e e e en gnral de faible cot (par rapport ` la capacit). Les priphriques e e u a e e e de gestion de mmoire secondaire sont les disques et disquettes (acc`s e e alatoire), et les syst`mes darchivage et de sauvegarde (bandes, acc`s e e e squentiel). e

Notion de syst`me dexploitation e


Nous avons ` ce stade un squelette dordinateur mais celui-ci est inutia lisable sans logiciel permettant de lui faire excuter les travaux auxquels il e est destin. Ce logiciel constitue ce que lon appelle le syst`me dexploitation. e e Une partie rside en mmoire centrale et la plus grande partie est stocke en e e e mmoire secondaire. Ce logiciel doit tre adapt dune famille dordinateurs ` e e e a lautre et entre les gnrations successives dordinateurs dune mme famille. e e e Un syst`me dexploitation (dont lessentiel nest pas crit en langage dasseme e blage dune famille de processeurs particuli`re, mais dans un langage de haut e niveau) peut fonctionner sur des plate-formes matrielles tr`s diverses. Par e e exemple, on trouve le syst`me unix sur des pc, des stations de travail ou le e cray. Inversement, il existe souvent plusieurs choix possibles de syst`mes dexe ploitation pour un mme ordinateur ; sur un pc, on peut installer le syst`me e e unix (version linux, ou version xinu) ou windows ou windows NT. On trouve 3 sortes de logiciel dans un ordinateur : Des biblioth`ques charges de la gestion des principales ressources de lore e dinateur, dont les priphriques, la mmoire et les chiers. Elles constituent e e e le coeur du syst`me dexploitation (ce que lon appelle parfois le logiciel de e base). Elles dnissent des interfaces standardises orant les mmes fonce e e tionnalits que le matriel physique, mais sous une forme normalise. Ceci e e e sapplique en particulier ` la manipulation des priphriques. a e e Diverses biblioth`ques qui ne manipulent pas de ressources particuli`res et e e que les programmeurs peuvent dcider dutiliser ou non pour dvelopper e e leurs applications (calcul mathmatique, graphique). Elles donnent des e fonctionnalits de plus haut niveau sur le matriel existant pour dcharger e e e le programmeur dune partie du travail commun ` de nombreuses applicaa

http://fribok.blogspot.com/

Un syst`me matriel et logiciel simple e e

379

tions (par exemple, la plupart des syt`mes fournissent des biblioth`ques de e e gestion des cha nes de caract`res, de tri, etc.). e Les applications qui sont des programmes excutables. Certaines ne font e pas ` proprement parler partie du syst`me dexploitation mais sont livres a e e presque systmatiquement avec. Elles permettent de dvelopper dautres e e applications (diteurs de texte, compilateurs et assembleurs, diteurs de e e liens, dbogueurs) ou dobserver lactivit du syst`me (comme par exemple e e e regarder les les dattente des imprimantes). Les biblioth`ques qui constituent le syst`me dexploitation ont un stae e tut particulier : les applications ont besoin de services similaires et ces biblioth`ques interagissent avec la gestion des ressources de lordinateur dont e nous verrons dans la partie VI quelles peuvent tre partages entre plusieurs e e utilisateurs et plusieurs applications. Par consquent, on essaie de faire de e ces biblioth`ques un point de passage oblig, protg et contrl pour accder e e e e oe e aux ressources. De plus, elles sont utilises par toutes les applications et donc e rsidentes en mmoire principale (en EEPROM ou charges lors du dmarrage e e e e du syst`me). e Les couches suprieures du syst`me dexploitation sont gnralement e e e e stockes sur disque, ce qui permet de changer facilement de version ou de e syst`me dune part et dinstaller ventuellement plusieurs syst`mes dexploitae e e tion dirents sur des disques (ou des partitions de disques) distincts et choisir e celui que lon veut lancer au moment du dmarrage. Elles sont charges en e e mmoire lors de la phase de dmarrage. e e

Notion de pilote de priphrique e e


Nous ne nous intressons dans cette partie qu` la couche basse du e a syst`me dexploitation, cest-`-dire au minimum ncessaire ` la gestion des e a e a priphriques dentres/sorties, ` la sauvegarde des programmes (et des e e e a donnes) en mmoire secondaire et ` lexcution des programmes. e e a e En ce qui concerne les priphriques, de nombreux dtails peuvent changer e e e dun ordinateur ` lautre, ou mme durant la vie dune mme machine : souris a e e a ` 2 ou 3 boutons, taille du (des) disque(s), adresses et formats des registres des coupleurs, claviers ` la norme franaise azerty ou anglo-saxonne qwerty, a c etc. Lors du dmarrage de lordinateur et de linitialisation de la biblioth`que e e de gestion des priphriques, cette derni`re a besoin de conna e e e tre les caractristiques exactes de lensemble des priphriques prsents quelle a ` grer. e e e e a e Les ordinateurs sont gnralement quips dEEPROM qui permettent de stoe e e e cker ces informations de mani`re non volatile, ainsi quun petit programme e permettant de les consulter et de les mettre ` jour : le gestionnaire de congua ration. Le syst`me dexploitation stock sur le disque peut contenir ses propres e e pilotes de priphriques. Mais il doit en exister au moins une version rudimene e

http://fribok.blogspot.com/

380

Un syst`me matriel et logiciel simple e e

taire en EEPROM de mmoire centrale pour les priphriques indispensables e e e lors du dmarrage, typiquement clavier cran, disque, disquette ou CD. e e Les priphriques tant compliqus et orant plusieurs fonctionnalits, cere e e e e taines partages entre plusieurs priphriques, leur gestion est regroupe au e e e e sein dun partie du syst`me qui sappelle le pilote de priphrique. Ce sera e e e lobjet du chapitre 17.

Syst`me de gestion de chiers et interface de e commande


Une autre partie du syst`me utilisant les primitives du pilote ore des e services de plus haut niveau comme la gestion dinformations structures : le e syst`me de gestion des chiers (chapitre 19). e Par ailleurs, un programme en langage dassemblage ne peut sexcuter e quapr`s une phase de traduction en langage machine et ventuellement de e e liaison avec dautres programmes ou avec des biblioth`ques. Nous dcrivons e e dans le chapitre 18 les direntes tapes de la vie dun programme. e e La couche interface entre lutilisateur et tous ces composants est linterpr`te e du langage de commande. Cest lobjet du chapitre 20. Nous y dcrivons en e particulier le chargement dun programme en mmoire centrale et son lancee ment. Ensuite, cest le processeur qui interpr`te les instructions du programme e comme nous lavons dcrit dans le chapitre 14. e

http://fribok.blogspot.com/

Chapitre 15 Relations entre un processeur et de la mmoire e


Dans une version minimale, un ordinateur est compos dun processeur e (Cf. Chapitre 14) et dune mmoire (Cf. Chapitre 9). Le processeur produit e des informations ` stocker dans la mmoire ou bien rcup`re des informations a e e e prcdemment ranges en mmoire. e e e e Nous avons vu au chapitre 14 quun processeur peut tre considr comme e ee une machine algorithmique, assemblage dune partie oprative et dune partie e contrle. o Nous avons expliqu au chapitre 9 comment se droule un acc`s mmoire e e e e et prcis au chapitre 11 les aspects de synchronisation lors de la connexion e e dune machine algorithmique ` une mmoire. Au chapitre 14 nous nous sommes a e placs dans lhypoth`se simplicatrice dune mmoire rapide. e e e Ce chapitre apporte des informations complmentaires concernant la e ralisation de la connexion entre le processeur et la mmoire. Par ailleurs, e e nous prsentons les dirents aspects du dcodage dadresse permettant de e e e grer le fait que la mmoire soit organise en dirents morceaux, et que lon e e e e puisse la plupart du temps accder ` des sous-ensembles du mot mmoire. e a e Le paragraphe 1. est consacr ` dirents aspects concernant la connexion ea e du processeur et de la mmoire. Le paragraphe 2. montre les consquences e e de lorganisation de la mmoire en plusieurs units physiques, ou bo e e tiers. Enn dans le paragraphe 3. nous montrons comment grer des acc`s ` e e a des donnes logiques de tailles direntes (Cf. Chapitre 4) alors que les e e acc`s se font ` des donnes physiques de tailles identiques. e a e

1.

Le bus mmoire e

Nous avons vu au chapitre 9 que le bus mmoire est constitu du bus e e de donnes et du bus dadresse. Le bus de donnes est un ensemble de ls e e Dn1 ` D0 via lesquels transitent les valeurs changes par le processeur et a e e

http://fribok.blogspot.com/

382

Relations entre un processeur et de la mmoire e

la mmoire. Ce bus est bidirectionnel (transfert dans les deux sens). Le bus e dadresse (unidirectionnel) est un ensemble de ls Am1 ` A0 en sortie du a processeur via lesquels ce dernier indique ` la mmoire le numro (ladresse) a e e du mot auquel il acc`de. e Dans lhypoth`se o` le temps de cycle de la mmoire est infrieur ou gal e u e e e au cycle dhorloge du processeur, les seuls signaux Acc`sMem et l/e susent e pour grer le protocole de communication. Nous nous limitons ` cette situation e a dans ce chapitre pour nous concentrer sur les aspects connexion, organisation en dirents bo e tiers et acc`s ` des sous-ensembles du mot mmoire. e a e Notons toutefois que cette hypoth`se est assez rarement vrie. Le temps e e e dacc`s peut dpendre de la zone mmoire ` laquelle on acc`de (ROM, RAM ou e e e a e entres/sorties). Les processeurs g`rent donc un protocole complet (inspir du e e e protocole poigne de mains dcrit dans le chapitre 6) et la dure dun acc`s peut e e e e tre tendue dune ou plusieurs priodes dhorloge via un signal dacquittement e e e pilot par la mmoire. Le nom du signal varie avec les familles de processeurs e e (Data Transfert Ack pour le 68000, Memory Hold pour le sparc, Wait ou ready pour dautres processeurs 8 ou 16 bits ...).

1.1

Connexion simple

Nous avons dit au chapitre 9 que la connexion des ls tait simple mais en e ralit il ne sut pas de relier directement les ls de mme nature. e e e Les adresses et les donnes reprsentent un grand nombre de sorties du e e processeur (64 pour un processeur ` 32 bits). La puissance dissipe totale a e et le courant quest capable de dbiter un circuit intgr sont limits. Cela e e e e limite le courant pour chaque l de sortie. Chaque sortie ne peut donc piloter quun nombre rduit dentres, alors quelle peut tre connecte ` de nombreux e e e e a bo tiers de mmoire, do` la ncessit dune amplication externe. e u e e Lamplication des signaux unidirectionnels tels que les adresses ne pose pas de probl`me particulier : la sortie des amplicateurs externes peut rester e active en permanence. Le bus de donnes, bidirectionnel, implique au contraire le recours ` des e a amplicateurs ` sorties 3 tats monts tte-bche. Lors dune lecture, la coma e e e e mande 3 tats dans le sens mmoire/processeur doit tre active et celle dans le e e e e sens processeur/mmoire doit tre au contraire inhibe ; et rciproquement lors e e e e dune criture. Il sut donc de commander la validation des sorties processeur e e et mmoire respectivement par le signal l/e et son complment. e La gure 15.1 illustre ces connexions ; seul 1 l de la nappe des ls du bus donnes (respectivement bus adresses) est reprsent, ` savoir Di (respectivee e e a ment Aj). Sur la gure, on voit un signal supplmentaire DeconnexionProcesseur dont e nous parlons au paragraphe 1.3.

http://fribok.blogspot.com/

1. Le bus mmoire e

383

Di

Donne(no i) e

l/e AccesMem

l/e

Slection bo e tier

Aj

Adresse (no j)

PROCESSEUR

MEMOIRE

DconnexionProcesseur e Fig. 15.1 Connexion processeur/mmoire. Le signal DconnexionProcesseur est exe e pliqu au paragraphe 1.3 e l/e AutD Ai/Di Donne (no i) e l/e

D Q En AutAd AccesMem

Adresse (no i)

Slection bo e tier

PROCESSEUR

MEMOIRE DconnexionProcesseur e

Fig. 15.2 Multiplexage des bus adresses et donnes e

http://fribok.blogspot.com/

384

Relations entre un processeur et de la mmoire e

Ad/Don

Ad

Don

Ad Don

AutAd AutD l/e T1 T2

Fig. 15.3 Chronogrammes dcrivant lacc`s ` la mmoire dans le cas dun bus multie e a e plex : lintervalle T1 correspond ` une lecture mmoire et lintervalle T2 ` e a e a une criture mmoire. e e

1.2

Multiplexage du bus mmoire e

Pour des ncessits damplication des signaux, et pour conomiser le e e e nombre de broches sur les bo tiers, les processeurs sont parfois dots dun e bus mmoire multiplex. Le principe consiste ` faire transiter successivement e e a les adresses puis les donnes via les mmes broches. e e On trouve gnralement deux sorties supplmentaires servant ` e e e a lchantillonnage des donnes (AutD) et ` lchantillonnage des adresses (Aue e a e tAd) (data strobe et address strobe en anglais) signalant les instants auxquels les adresses et les donnes transitent sur le bus. e Sur la gure 15.2 qui montre les connexions, on note la prsence dun verrou e avant la commande 3 tats connecte ` la mmoire. e e a e Un cycle de lecture se droule en deux phases. Tout dabord, le processeur e met ladresse, accompagne de son signal de validation AutAd. Cette adresse e e est mmorise dans le verrou command par le signal AutAd. Durant cette e e e phase du cycle, la sortie de donnes de lamplicateur mmoire vers processeur e e doit tre dsactive. Puis dans une deuxi`me phase, la lecture se droule comme e e e e e dans le cas dun bus non multiplex, ` ceci pr`s que le transfert de la donne e a e e est conditionn par le signal dchantillonnage des donnes AutD. e e e Un cycle dcriture se droule de faon similaire ` un cycle de lecture. e e c a La commande des amplicateurs externes associs au bus donnes est moe e die en consquence : une solution simple consiste ` utiliser le signal AutD e e a comme condition supplmentaire de validation de ces amplicateurs. Lamplie cateur dans le sens mmoire vers processeur sera ainsi activ par la condition e e e e e l/e ET AutD. La gure 15.3 dcrit lvolution des dirents signaux.

http://fribok.blogspot.com/

2. Utilisation de plusieurs circuits de mmoire e

385

1.3

Dconnexion du bus mmoire e e

Dans un ordinateur, le processeur nest pas le seul composant qui ralise e des acc`s ` la mmoire. e a e Nous verrons au chapitre 16 consacr aux circuits dentres/sorties que e e certains dentre eux ont vocation ` accder ` la mmoire sans passer par le a e a e processeur (optimisation appele acc`s direct ` la mmoire). e e a e Plus gnralement, dans le cas o` plusieurs processeurs se partagent la e e u mme mmoire (par exemple un processeur gnral et un processeur grae e e e phique), le bus mmoire doit tre partag, do` la ncessit dun arbitrage e e e u e e de bus. Nous ne dtaillons pas dans ce livre la faon de raliser des arbitres e c e de bus. Nous montrons seulement comment dconnecter le processeur du bus e mmoire ce qui est un pralable ` toute possibilit de partage de ce bus. e e a e e Pour les signaux unidirectionnels dadresses, l/e et Acc`sMem, il sut dajouter une commande aux amplicateurs 3 tats : un signal de dconnexion e e du processeur : DconnexionProcesseur sur les gures 15.1 et 15.2. e En ce qui concerne les signaux bidirectionnels de donnes, les amplicateurs e 3 tats sont dj` prsents, il sut de rajouter le signal DconnexionProcesseur e ea e e comme condition supplmentaire dactivation des sorties. e

2.

Utilisation de plusieurs circuits de mmoire e

Il arrive que la capacit mmoire dun bo e e tier soit infrieure ` la capacit e a e souhaite. En gnral, on veut mme que la quantit de mmoire associe ` un e e e e e e e a processeur soit modiable ; il est courant de rajouter des bo tiers de RAM dans un ordinateur. Par ailleurs un ordinateur est dot de bo e tiers de mmoire vive e et de mmoire morte. Aussi pour fabriquer une mmoire on utilise plusieurs e e bo tiers. Dans un premier temps, considrons que les bo e tiers sont tous de la mme taille. e Par ailleurs les processeurs sont conus avec un bus adresses dune certaine c taille qui lui permet potentiellement dadresser 2 mots dirents. Nous e allons fabriquer une mmoire de taille (avec un certain nombre de bo e tiers) et 2 . Ce paragraphe montre comment alors associer une adresse ` chaque mot a physique de la mmoire, probl`me appel dcodage dadresses. e e e e Nous considrons tout dabord le cas o` = 2 puis nous tudions le cas e u e < 2 et enn nous parlons dextension mmoire. e

2.1

Dcodage externe et slection des mmoires e e e

Le probl`me peut se poser dans les termes suivants : comment former une e mmoire de 2m mots avec 2k bo e tiers mmoires (numrots de 0 ` 2k 1), de e e e a mk 2 mots chacune ? Chacun de ces bo tiers a ses m k bits dadresse et son propre signal de slection. e

http://fribok.blogspot.com/

386

Relations entre un processeur et de la mmoire e

a = b 2mk + l

b 2mk k

l mk B Slection e du bo tier Dcodeur e externe n Donnes e (b)

bo tier 1

bo tier b

2m 1

bo tier 2k 1

(a)

Acc`sMem e

Fig. 15.4 (a) Mmoire de 2m mots organise avec 2k bo e e tiers de 2mk mots chacun. (b) Dcodage dadresse en cascade. B est lun des 2k bo e tiers de taille 2mk .

Soit a une adresse de mot sur m bits. Soient respectivement b et l (cods e mk sur k et m k bits) le quotient et le reste de la division de a par 2 : mk a=b2 + l (le mot adresse en haut de la gure 15.4-b). Le principe consiste ` stocker le mot dadresse a dans le mot numro l du a e bo tier ou de la barette de numro b (Cf. Figure 15.4-a). e Le raccordement est le suivant : le bus de donnes, le signal l/e et les e signaux dadresses Amk1 ` A0 sont relis aux signaux correspondants des a e 2k circuits. Les signaux dadresses Am1 ` Amk sont relis aux entres de a e e slection dun dcodeur externe command par le signal Acc`sMem et dont e e e e chaque sortie pilote le signal de slection de bo e tier dun circuit mmoire. Le e dcodeur dadresse sur m bits, initialement interne aux bo e tiers, est ici remplac e par la mise en cascade du dcodeur externe sur k bits et (dans chaque circuit e mmoire) dun dcodeur interne sur m k bits (Cf. Figure 15.4-b). e e Cette organisation regroupe dans le mme bo e tier les mots dadresses conscutives de poids forts identiques. Lorsque lon ne veut utiliser que x e bo tiers (x < 2k ), la solution que nous venons de dcrire prsente lavantage e e de permettre la cration dune mmoire contigu de x 2mk mots. e e e Il existe des variantes de dcodage dans lesquelles la slection des bo e e tiers exploite dautres bits dadresses que ceux de poids forts. A partir de la dcomposition a = l 2k + b , par exemple, nous pourrions connecter les l e signaux de slection de mots des bo e tiers aux signaux dadresses Am1 ` Ak du a bus dadresses et les b signaux de poids faible Ak1 ` A0 au dcodeur externe a e pour slectionner des bo e tiers. Contrairement ` la prcdente, cette derni`re ora e e e ganisation disperse les mots dadresses conscutives dans des bo e tiers dirents. e Elle ne supporte pas labsence dun bo tier, les mots manquants crant des e trous dissmins dans toute la zone mmoire. Elle est ` la base de certaines e e e a techniques doptimisation du dbit de la mmoire (bancs de mmoire). e e e

http://fribok.blogspot.com/

A m A k

m k 1

m 1

bo tier 0

2. Utilisation de plusieurs circuits de mmoire e

387

2.2

Dcodage partiel et synonymie dadresses e

Il se peut que le nombre m de signaux dadresses du processeur exc`de e largement le nombre p de bits ncessaires mis ` sa disposition pour adresser la e a mmoire physique. e Une adresse de mot mise par le processeur se dcompose maintenant de e e la faon suivante : a = e 2mp + b 2pk + l. En partant des poids faibles : c l occupe les bits 0 ` k 1, b occupe les bits k ` p 1, e occupe les bits p ` a a a m 1. Le concepteur doit dnir quelle plage dadresses du processeur parmi les e p 2 possibles il attribue ` la mmoire (gnralement de 0 ` 2p1 , soit e = 0). a e e e a Une premi`re possibilit est dintroduire un nouvel tage de dcodage e e e e dnissant Acc`sMem. Dans le cas o` e = 0, Acc`sMem = Am1 , ...Ap et erreur e e u e e e e = Acc`sMem. Ainsi, Acc`sMem traverse un nouveau dcodeur avant datteindre la commande du dcodeur externe du schma prcdent, ce nouveau dcodeur e e e e e tant command par les bits dadresses de poids forts rests inutiliss. On parle e e e e alors de dcodage complet. e Lors dun cycle dacc`s en lecture en dehors de la plage dadresses dvolue e e a ` la mmoire, aucune sortie nimposera de niveau lectrique sur les signaux de e e donnes du bus. Il en rsulte que les bits peuvent prendre une valeur quelconque e e (qui peut dpendre entre autres de la technologie des amplicateurs de bus e utiliss). Un tel acc`s constitue une erreur de programmation. Le programmeur e e ne peut faire aucune hypoth`se sur le rsultat dune telle lecture. En pratique, e e on obtiendrait le plus souvent un mot dont tous les bits sont ` 1. a Lorsquil dtecte un cycle dacc`s en dehors de la plage dadresses de la e e mmoire, le circuit de dcodage dadresses peut se contenter de nactiver aucun e e bo tier. Il est toutefois prfrable de renvoyer un signal derreur au processeur ee qui provoquera un droutement de type erreur de bus (Cf. Chapitre 22), signal e qui sera rpercut au niveau de lutilisateur (le classique bus error). e e Une autre possibilit consiste ` conserver le schma prcdent sans tenir e a e e e compte des m p signaux dadresses de poids forts : on parle de dcodage e partiel. Tout mot de la mmoire physique poss`de dans ce cas 2mp adresses e e quivalentes ou synonymes : son adresse ocielle a et toutes les autres adresses e de la forme (a i 2mp ) modulo 2m avec i entier.

2.3

Supports de bo tiers multitaille et extension mmoire e

Les fabricants dordinateurs prvoient gnralement un certain nombre de e e e connecteurs dans lesquels on peut encher des bo tiers de mmoires pour en e augmenter la capacit (extension de mmoire). La che technique prcise alors e e e la quantit de mmoire dj` installe dans lappareil et la taille maximale quil e e ea e est possible datteindre en quipant tous les connecteurs de bo e tiers. Il est intressant de prvoir des connecteurs pouvant accepter aussi bien les e e

http://fribok.blogspot.com/

388

Relations entre un processeur et de la mmoire 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 lutilisateur pourra se e procurer ultrieurement. e Soit 2k le nombre de connecteurs. Soit 2p la taille de la plus petite barette supporte et 2g celle de la plus grande. La technique consiste ` dcoder les e a e signaux Ap ` Ap+k1 pour gnrer les signaux de slection de bo a e e e tiers. Les autres signaux A0 ` Ap1 et Ap+k ` Ag1 sont disponibles sur les connecteurs a a et relis aux entres de slection de mots des bo e e e tiers.

2.4

Spcialisation de zones mmoires e e

Le dcodage prend en compte dautres lments que la seule adresse. e ee Certains jeux dinstructions distinguent plusieurs espaces dadressage. Au moins un des espaces est toujours destin aux acc`s mmoire ordinaires via e e e les instructions normales (load/store ou move) dacc`s ` la mmoire. Le ou e a e les autres espaces sont destins ` des usages spciques et ncessitent lusage e a e e dinstructions spciales pour y accder. e e Des sorties additionnelles du processeur indiquent le numro de lespace e utilis. Du point de vue du dcodage, on peut considrer ce numro comme e e e e des bits de poids fort de ladresse ` dcoder. a e A titre dexemple, les processeurs de la famille intel distinguent un espace mmoire ordinaire (instruction move) et un espace ddi aux seules e e e entres/sorties (instructions in et out, Cf. Chapitre 12, paragraphe 1.4.5). Une e sortie M/IO du processeur indique ` quel espace le cycle dacc`s sadresse. a e De plus, le processeur dlivre vers lextrieur des signaux donnant des e e informations sur son tat interne ou sur la nature de linstruction en cours e dexcution. Le dcodeur doit mettre un signal derreur lorsquil dtecte un e e e e acc`s ` la mmoire non conforme aux informations fournies par le processeur. e a e Ce signal se traduit par lenvoi au processeur dune requte dinterruption e (Cf. Chapitre 22). Par exemple, il est possible au concepteur de la carte de protger en criture e e certaines zones de mmoire. Lors dune demande dacc`s en criture ` une telle e e e a zone, le dcodeur dadresse dtecte que ladresse ne fait pas partie des plages e e mmoires autorises en criture et met donc un signal derreur. e e e e Pour obtenir par exemple lexpression du signal de slection dune mmoire e e morte, il sut de prendre le signal que lon aurait utilis pour une mmoire e e vive et den faire le produit avec le signal l/e. Le concepteur de la carte peut installer un dcodeur qui dtecte les acc`s en criture en mmoire morte et e e e e e gn`re une erreur. e e Par ailleurs, nous verrons dans le chapitre 24 quil faut implanter des mcanismes de protection lorsque direntes entits utilisent le processeur et e e e la mmoire. Certaines parties de mmoire sont ainsi rserves ` certains types e e e e a dutilisateurs et lacc`s par dautres provoque une erreur detecte au niveau e e du dcodeur dadresses. On distingue la notion daccessibilit en mode supere e

http://fribok.blogspot.com/

3. Acc`s ` des donnes de tailles direntes e a e e

389

viseur ou en mode utilisateur ; lors de tout acc`s ` la mmoire le processeur e a e spcie le mode dacc`s courant : ce mode est une entre supplmentaire pour e e e e le dcodeur dadresses. Dans ce cas aussi lacc`s erron ` une zone reserve e e e a e a ` un certain mode doit tre dtect par le dcodeur qui met alors un signal e e e e e derreur. Lexercice E15.5 illustre la prise en compte dun tel cas.

3.

Acc`s ` des donnes de tailles direntes e a e e

Lunit adressable de la majorit des processeurs est loctet : les adresses e e utilises pour lacc`s ` la mmoire sont des adresses doctet. Mais les proe e a e cesseurs sont galement capables daccder ` des multiples de loctet allant e e a jusqu` la taille du bus donnes du processeur. a e Par exemple, dans la famille des processeurs 68xxx, linstruction en langage dassemblage comporte la taille de la donne manipule ; ainsi, les instructions e e move.b D1,D2, move.w D1,D2 et move.l D1,D2 signient respectivement le transfert dun octet, dun mot de 16 bits ou dun mot long de 32 bits du registre D1 vers le registre D2. Dans le sparc les donnes sont sur 32 bits sauf e pour certaines instructions ; par exemple, linstruction ld permet le chargement dans un registre dun mot mmoire 32 bits, mais on peut aussi lire un e octet (respectivement un demi-mot de 16 bits), sign ou non, avec une des e instructions : ldsb ou ldub (respectivement ldsh, lduh). Considrons par exemple un processeur 32 bits capable daccder ` des e e a octets, des demi-mots de 16 bits et des mots de 32 bits. Puisque les adresses sont des adresses doctet, la logique voudrait que le processeur soit dot dune e mmoire dun octet de large. Pour transfrer un mot de 32 bits dadresse e e A, il surait dencha ner quatre acc`s mmoire aux adresses conscutives A, e e e A + 1, A + 2 et A + 3. Cette solution prsente linconvnient dtre lente. Le e e e processeur est donc dot de quatre mmoires juxtaposes, fournissant chacune e e e un octet du mot de 32 bits, que le processeur peut lire en un seul cycle dacc`s e mmoire. En revanche, lorsque le processeur eectue un acc`s ` un octet, il e e a sut de ne slectionner quune seule de ces mmoires. Cette organisation pose e e des probl`mes : e 1. dalignement et de dcodage dadresse pour slectionner les quatre e e mmoires doctet. e 2. de cadrage des donnes sur le bus de donnes et dans les registres. On e e pourrait vouloir cadrer la donne de direntes faons (vers les poids e e c forts, vers les poids faibles, au milieu...) ; il faudrait alors plusieurs instructions de chargement ou de lecture dun registre. En fait, un seul type de cadrage sut ; en eet, on peut toujours raliser les autres avec des e instructions de dcalages, plus gnrales. Le principe retenu est de cadrer e e e les donnes de taille infrieure ` 32 bits en poids faible des registres et de e e a recopier le bit de signe (ou des 0 si on veut interprter la donne comme e e non signe) dans les bits de poids fort des registres. e

http://fribok.blogspot.com/

390

Relations entre un processeur et de la mmoire e

bus adresses

O3

O2

O1

O0

22 D31 D24 D23 D16 D15 D8 D7 D0

bus donnes e

32

Fig. 15.5 Mmoire organise avec 4 bo e e tiers de 1 Mo

Si lon veut accder ` des donnes de taille suprieure ` celle du bus donnes, e a e e a e il faut raliser plusieurs acc`s mmoire, le programmeur organisant lui-mme e e e e le stockage de ces donnes en mmoire. e e

3.1

Etude de cas : dcodage dadresses e

Dans ce paragrapge, nous prsentons une tude de cas illustrant le dcodage e e e dadresses pour un processeur ayant un bus de donnes sur 32 bits et un bus e dadresses sur 22 bits. 3.1.1 Organisation matrielle e

Nous disposons de 4 bo tiers mmoire de 1Mo (1 Mega-octets), cest-`-dire e a 20 20 10 10 6 de 2 octets. En eet, 2 = 2 2 = 1024 1024 10 . Pour pouvoir accder ` un mot mmoire de 32 bits en 1 cycle, on prend e a e chacun des 4 octets dans un des bo tiers. La gure 15.5 donne une premi`re e ide de cette organisation. e Puisquil ne peut y avoir quune adresse ` la fois sur le bus adresses, les a quatre octets auxquels le processeur acc`de sont ` la mme adresse, chacun e a e dans son bo tier. En consquence ladresse dun mot de 32 bits doit tre un e e multiple de 4. Supposons, en eet, que lon veuille accder ` 4 octets conscutifs e a e a ` partir dun octet du bo tier O2 ; il faudrait prendre les 3 premiers octets respectivement dans O2, O1 et O0 et le quatri`me dans O3, mais ` ladresse e a suivante do` une adresse dirente pour ce dernier octet . . . u e Nous utilisons les 2 bits de poids faibles de ladresse mise par le processeur e pour distinguer les bo tiers.
Remarque : Lassociation entre les mmoires et les octets du bus dpend de e e la convention utilise : gros ou petit boutiste (Cf. Chapitre 4). Nous supposons e ici que la convention est gros-boutiste.

Ladresse dun octet de O3 est de la forme 4 X (A1A0 = 00), ladresse dun octet de O2 de la forme 4 X + 1 (A1A0 = 01), ladresse dun octet de

http://fribok.blogspot.com/

3. Acc`s ` des donnes de tailles direntes e a e e

391

O1 de la forme 4 X + 2 (A1A0 = 10) et ladresse dun octet de O0 de la forme 4 X + 3 (A1A0 = 11). Les autres bits de ladresse (A21, . . ., A2) dsignent e une adresse dans un bo tier. Le bus de donnes se dcompose ` prsent en quatre octets. Les mmoires e e a e e doctet sont connectes chacune ` un octet du bus de donnes. e a e Ainsi, tant donne une adresse 4k + i mise par le processeur, la valeur k e e e code sur les vingt bits de poids fort relis aux dcodeurs internes des mmoires e e e e reprsente un numro doctet dans son bo e e tier et la valeur i code sur les deux e bits de poids faible est un numro de bo e tier o` trouver loctet dadresse 4k + i. u En mettant k en poids fort du bus dadresse, le processeur peut accder e e simultanment et en un seul cycle mmoire ` : loctet dadresse 4k via D24 ` e e a a D31 du bus de donnes, loctet dadresse 4k + 1 via D16 ` D23 , loctet dadresse e a 4k + 2 via D8 ` D15 et loctet dadresse 4k + 3 via D0 ` D7 . a a Par construction, les octets dadresses 4k+x et 4(k1)+y, avec (0 x 3 et 0 y 3), ne sont pas accessibles dans un mme cycle mmoire. e e La combinaison 4k + 2 et 4k + 3 correspond au transfert dun demi-mot de seize bits dadresse 4k + 2. En revanche, un demi-mot de seize bits dadresse 4k + 3, compos des octets dadresses 4k + 3 et 4(k + 1) + 0 nest pas accessible e en un seul cycle mmoire. e Nous retrouvons l` lorigine des r`gles dalignement exposes au chapitre 4 a e e imposant des adresses de demi-mot de seize bits paires, des adresses de mots de 32 bits multiples de 4 et ainsi de suite (notons cependant que le matriel e serait capable de transfrer en un cycle des demi-mots dadresses 4k + 1). e
Remarque : Les versions 32 bits de certaine familles de processeurs (intel et motorola) hritent de logiciels dvelopps pour leurs prdcesseurs e e e e e travaillant sur 8 ou 16 bits et pour lesquels les contraintes dalignement ne se posaient pas. Cest pourquoi ils tol`rent les adresses non alignes au prix e e de deux acc`s mmoire par transfert dobjet non align et dune complexit e e e e matrielle accrue. Sur les processeurs modernes, lacc`s ` des donnes ` des e e a e a adresses non alignes dclenche une erreur. e e

3.1.2

Le dcodeur dadresses e

Lors dun acc`s mmoire, le processeur tablit les signaux suivants : e e e ladresse A21, . . ., A0. la taille de la donne ; cette information provient du dcodage de linstruce e tion en cours dexcution. Le chargement ou le rangement se fait sur 1 octet, e 1 demi-mot de 16 bits ou 1 mot de 32 bits ; ces 3 cas peuvent tre cods sur e e 2 bits. les signaux Acc`sMem et l/e. e Le dcodeur dadresses doit produire les signaux de slection de chacun des e e bo tiers : SelO3, SelO2, SelO1, SelO0. Nous avons vu au paragraphe prcdent que le bo e e tier de numro i, e i {0, 1, 2, 3} contient le mot dadresse 4k + i. De plus le dcodeur dadresses e

http://fribok.blogspot.com/

392

Relations entre un processeur et de la mmoire e

taille PROCESSEUR AccesMem A1 A0 A21 ... A2 SelO3 SelO2 SelO1 SelO0 erreur DECODEUR DADRESSES

l/e

SelO3

SelO2

SelO1

SelO0

Fig. 15.6 Dcodage dadresse dans le cas dacc`s ` des sous-ensembles du mot mmoire e e a e

interne de chaque bo tier reoit ladresse sur 20 bits de loctet auquel le proc cesseur acc`de. e La gure 15.6 dcrit cette organisation. Le tableau 15.7 donne la table de e vrit de la fonction de dcodage dadresses. Notons la prsence dun signal e e e e erreur mis par le dcodeur ; ce signal correspond ` une demande dacc`s ` une e e a e a adresse invalide, il pourra tre associ ` une interruption (Cf. Chapitre 22). e ea Les exercices E15.4 et E15.5 poursuivent cette tude de cas. e Nous avons dit que la taille de la mmoire peut varier dans la vie dun e ordinateur, les constructeurs prvoyant en eet la possibilit de rajouter des e e bo tiers mmoire. Le dcodeur dadresses doit avoir t prvu pour ce faire et e e ee e cest lors de linitialisation de lordinateur quun programme dtecte la quantit e e de mmoire rellement prsente. e e e

3.2

Etude de cas : gestion du bus donnes e

Le probl`me quil reste ` rsoudre est le cadrage des donnes de taille e a e e infrieure a la taille du bus donnes sur celui-ci. Nous traitons un exemple e ` e simpli de faon ` ne pas crire des tables de vrit trop complexes. e c a e e e Considrons un processeur ayant un bus adresses sur m bits (adresse = e Am1 , ..., A0 ), un bus donnes sur 16 bits et une mmoire forme de deux e e e m1 bo tiers de 2 octets (Cf. Figure 15.8). Soit X lentier reprsent en binaire par les bits m1 ` 1 du bus adresses. La e e a

http://fribok.blogspot.com/

3. Acc`s ` des donnes de tailles direntes 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. 15.7 Fonction de dcodage dadresses e

mmoire note 2X stocke les octets dadresses paires (adresse = Am1 , ..., A1 , 0) e e et la mmoire note 2X + 1 stocke les octets dadresses impaires (adresse = e e Am1 , ..., A1 , 1). La mmoire 2X est connecte ` loctet de poids fort du bus donnes e e a e (D15 , ..., D8 ) et la mmoire 2X + 1 est connecte ` loctet de poids faible du e e a bus donnes (D7 , ..., D0 ). e Le processeur indique au dispositif de dcodage dadresses la taille de line formation a laquelle il acc`de (octet ou mot de 16 bits) et le bit de poids faible ` e dadresse (A0 ) indique sil sagit dune adresse paire ou impaire. Le dcodeur dadresses produit les signaux de slection des bo e e tiers mmoire : Sel2X et Sel2X+1. e Lorsquun acc`s ` un mot de 16 bits avec une adresse paire est demand, e a e il ny a aucun probl`me : un octet de chacun des bo e tiers tant envoy (ou e e rcupr) sur le bus donnes. e ee e Lorsque le processeur veut crire un octet en mmoire le probl`me est e e e simple. Le programmeur sait ` quelle adresse il crit et est responsable de a e lorganisation de ses donnes en mmoire. Il lui sut donc de prciser la taille e e e de la donne ` crire. En gnral des instructions sont prvues pour cela dans e ae e e e les processeurs ; par exemple, dans le sparc (Cf. Chapitre 12, gure 12.3), lcriture de 32 bits dans la mmoire est ralise par linstruction ST et lcriture e e e e e dun octet par une instruction dirente (STB, store byte). e En revanche, pour transfrer un octet de mmoire vers un registre R (lecture e e dun octet en mmoire), il faut savoir quelle partie du registre est aecte et e e que vaut le reste du registre. Le probl`me est ainsi de slectionner la bonne e e partie du bus donnes. e Pour traiter ce probl`me, un circuit C est ajout au processeur : la e e gure 15.9 montre sa position et la table 15.10 dcrit la fonction quil ralise. e e Les octets tant cadrs dans les poids faibles du registre R, si un octet de e e

http://fribok.blogspot.com/

394

Relations entre un processeur et de la mmoire e

PROCESSEUR

octet ou mot de 16 bits DECODEUR AccesMem A0 DADRESSES Sel2X 2X 0

erreur

Sel2X+1 2X+1 0

Am1 ... A1

2m1 1 D15...8 l/e

2m1 1 D7...0

Fig. 15.8 Mmoire accessible par octets ou mots de 16 bits e MEMOIRE 2X Bus Donnes e 16 PROCESSEUR C Registre instruction D15 D8 2X+1 D7 D0

un registre Fig. 15.9 Recadrage des donnes lors de lecture de sous-multiples du mot mmoire e e Type Acc`s e 16 16 8 8 8 8 Adresse paire impaire paire impaire paire impaire Type Instruction non sign e non sign e sign e sign e R15 ... R8 D15 ... D8 0 ... 0 0 ... 0 D15 ... D15 D7 ... D7 R7 ... R0 D7 ... D0 D15 ... D8 D7 ... D0 D15 ... D8 D7 ... D0

Fig. 15.10 Cadrage des donnes dans un registre lors dune opration de lecture e e mmoire e

http://fribok.blogspot.com/

4. Exercices

395

la mmoire 2X + 1 est transfr vers le registre R, il faut tendre la valeur e ee e reprsente en remplissant les 8 bits de poids fort du registre R avec des 0 ou le e e bit de signe de la valeur, selon quil sagit dun chargement non sign ou sign e e (Cf. Chapitre 3). Sil sagit dun octet de la mmoire 2X, il doit tre plac e e e dans les poids faibles de R, les poids forts tant traits comme prcdemment. e e e e Le circuit C reoit en entre la taille de la donne (octet ou mot de 16 c e e bits), la parit de ladresse (bit A0 ) et le type dinstruction (signe ou non). e e Par exemple, dans le processeur sparc on trouve une instruction de lecture dun octet sign LDSB ou non sign LDUB. Le tableau 15.10 prcise quels ls e e e du bus donnes sont envoys vers chaque bit du registre R ; certaines lignes e e ne sont pas prcises : lorsquil y a une demande dacc`s dun mot de 16 bits e e e a ` une adresse impaire, le dcodeur dadresses envoie le signal derreur, et la e valeur calcule par le circuit C na aucune importance. e

4.

Exercices

E15.1 Faire le schma dtaill en portes du circuit C de la gure 15.9 en e e e prenant les codages de taille dans la documentation dun vrai processeur. E15.2 Comment peut tre tendu le mcanisme dcrit au paragraphe 3.2 e e e e pour traiter des donnes de 32, 16 et 8 bits ? e E15.3 Chercher, dans des documentations techniques de processeurs, sils ont ou non une contrainte dalignement des mots de 2n octets sur fronti`re e n multiple de 2 . En proter pour regarder quelle convention a t adopte : ee e gros-boutiste ou petit-boutiste (Cf. Chapitre 4, paragraphe 2.2.4). E15.4 : Une mmoire simple (Cet exercice fait suite ` ltude de cas du e a e paragraphe 3.1) Le processeur a toujours un bus donnes de 32 bits mais un bus dadresses e de 24 bits. Nous disposons de 16 bo tiers de 1Mo. Dcrire lorganisation de la e mmoire et le dcodage dadresses an de disposer dune mmoire de 4 220 e e e mots de 32 bits, sachant que lon veut pouvoir accder ` des octets, ` des mots e a a de 16 bits ou ` des mots de 32 bits. a E15.5 : Une mmoire gnrale e e e On veut grer une mmoire dans laquelle lacc`s ` des octets, des mots de 16 e e e a ou 32 bits est possible. On dispose des bo tiers suivants : 4 bo tiers de ROM de 256Ko accessibles en mode superviseur, 4 bo tiers de RAM de 256Ko accessibles en mode superviseur, 8 bo tiers de RAM de 1Mo accessibles en mode superviseur et utilisateur, 1 bo tier servant aux entres/sorties de 3 mots de 8 bits, accessibles en e mode superviseur, le premier mot pouvant tre lu et/ou crit, le deuxi`me e e e ne pouvant tre que lu et le troisi`me uniquement crit, e e e 1 bo tier servant aux entres/sorties de 3 mots de 16 bits, accessibles en e

http://fribok.blogspot.com/

396

Relations entre un processeur et de la mmoire e

0 1M 2M 3M 4M 8M

ROMs

RAMs

3 octets en M+3, M+11, M+15 3 mots de 16 bits en 2M+2, 2M+10, 2M+14

RAMu 12M RAMu 16M Fig. 15.11 Organisation dune mmoire gnrale e e e

mode superviseur, le premier mot pouvant tre lu et/ou crit, le deuxi`me e e e ne pouvant tre que lu et le troisi`me uniquement crit. e e e
Remarque : Un bo tier de 256K est un bo tier 218 octets, 218 = 28 210 = 256 1024 256 103 .

La gure 15.11 dcrit limplantation de chacun de ces bo e tiers, ou mots pour la mmoire servant aux entres/sorties. Pour cette derni`re, pour linstant, on e e e peut considrer que ce sont des mots mmoire avec seulement des contraintes e e de lecture et/ou dcriture ; on verra au chapitre 16 comment les utiliser. e
Remarque : Les adresses dimplantation sur la gure 15.11 sont donnes e 6 = 103 103 en M (mga-octets) pour allger le dessin. Notons que 1M = 10 e e 210 210 = 220 .

Le processeur a des donnes sur 32 bits et des adresses sur 32 bits. Il met e e e les signaux : Acc`sMem, l/e, et le type dacc`s (octet, 16 bits ou 32 bits). e De plus, il envoie un signal s/u indiquant sil est en mode superviseur ou utilisateur. Nous verrons au chapitre 22 que le processeur poss`de dirents e e modes dexcution mais pour linstant on se contentera dmettre une erreur e e dacc`s mmoire dans le cas o` un acc`s ` une zone superviseur est demande e e u e a e alors que le processeur nest pas en mode superviseur. Faire un schma prcis de lorganisation de cette mmoire et dcrire le e e e e dcodeur dadresses. La fonction de dcodage da