You are on page 1of 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 dadresses doit calculer les sie e gnaux dacc`s ` chacun des bo e a tiers utiliss et le signal derreur dacc`s e e mmoire. e

http://fribok.blogspot.com/

Chapitre 16 Circuits dentres/sorties e


Nous avons vu au chapitre 15 comment se passent les transferts entre le processeur et la mmoire. Nous voulons maintenant enrichir notre ordinateur e minimal en orant des moyens de communication entre lensemble processeur/mmoire et le monde extrieur. Le monde extrieur peut tre un autre e e e e ordinateur ou un ensemble dorganes priphriques tels que clavier, lecteur de e e disquettes, imprimante, cran, capteurs, etc. e Lorsquil y a communication dinformation de lensemble processeur/mmoire en direction du monde extrieur, on parle dune sortie, et lorsque e e lchange a lieu depuis le monde extrieur vers lensemble processeur/mmoire e e e on parle dune entre. e Les circuits dentres/sorties assurent la gestion des changes entre le proe e cesseur et les priphriques, et plus particuli`rement g`rent la synchronisation e e e e entre ces dispositifs qui ont des vitesses de fonctionnement direntes. e Le paragraphe 1. prsente la notion dentres/sorties et prcise ce que e e e lon appelle un circuit dentres/sorties. Les aspects de synchronisae tion mis en jeu lors dune communication entre le processeur et des organes priphriques sont abords dans le paragraphe 2. Dans le pae e e ragraphe 3. nous montrons comment connecter matriellement des ore ganes priphriques ` lensemble processeur/mmoire. La programmae e a e tion de sorties et dentres lmentaires ainsi que linterface matrielle e ee e ncessaire sont prsentes dans les paragraphes 4. et 5. Dans le parae e e graphe 6. nous nous intressons ` lencha e a nement dentres/sorties et e prsentons des moyens doptimiser des tranferts de blocs : notions dacc`s e e direct ` la mmoire (DMA), de canal et de processeur dentres/sorties. a e e

1.

Notion dentres/sorties e

Pour xer les ides, considrons une conguration simple avec deux ore e ganes priphriques : un clavier pour les entres et un acheur sept segments e e e (Cf. Exemple E8.2) pour les sorties (Cf. Figure 16.1).

http://fribok.blogspot.com/

398

Circuits dentres/sorties e

PROCESSEUR/MEMOIRE

transcodeur .....

transcodeur

ENTREE

SORTIE

Fig. 16.1 Entre clavier et sortie acheur sept segments e

La frappe dune touche du clavier provoque lenvoi de signaux ` un a transcodeur qui fournit un codage de cette valeur sur 7 bits (code ASCII, Cf. Chapitre 3). Cette information doit alors tre traite par lensemble proe e cesseur/mmoire. Deux types de questions se posent : o` cette information e u est-elle stocke ? Comment grer le ux des caract`res frapps ` un rythme e e e e a compl`tement libre par lutilisateur ? e Imaginons maintenant un programme qui calcule des valeurs enti`res sur e 4 bits ` dlivrer ` lutilisateur, cest-`-dire ` acher sur lacheur sept sega e a a a ments. On peut supposer que ces valeurs sont stockes dans la mmoire associe e e e au processeur. Un transcodeur fabrique les signaux permettant dallumer les bons segments de lacheur an de donner la reprsentation en hexadcimal e e de lentier en question. L` aussi le mme type de questions se pose : coma e ment la mmoire est-elle relie ` ce transcodeur ? A quel rythme est-il possible e e a (souhaitable) denvoyer les informations ? Que ce soit pour une entre ou une sortie, on voit quil y a deux aspects ` e a prendre en compte : la ralisation de la connexion physique (matrielle) entre e e le priphrique et lensemble processeur/mmoire et la gestion de la synchronie e e sation des changes. Il est ainsi ncessaire dintercaler entre tout priphrique e e e e et lensemble processeur/mmoire un circuit de commande que lon appelle e circuit dentres/sorties ou coupleur de priphrique. e e e Dans la suite du chapitre, nous commenons par prciser les aspects lis ` c e e a la synchronisation des changes, puis nous prsentons les aspects matriels de e e e connexion (quels ls et circuits faut-il ajouter et o` ?). Enn nous montrons u comment programmer une entre ou une sortie, cest-`-dire comment utiliser e a les circuits dentres/sorties depuis un programme en langage dassemblage. e

http://fribok.blogspot.com/

2. Synchronisation entre le processeur et un priphrique e e

399

2.

Synchronisation entre le processeur et un priphrique e e

Les probl`mes qui se posent ici sont inhrents ` toute communication : e e a perte dune partie de linformation qui doit tre change ; rptition dune e e e e e mme information dj` change (Cf. Chapitre 6). Avant dtudier prcisment e eae e e e e le type de protocole quil est ncessaire dappliquer, nous allons discuter du e niveau auquel cette synchronisation intervient.

2.1

A quel niveau se passe la synchronisation ?

Les changes entre lensemble processeur/mmoire et le monde extrieur e e e peuvent tre dcomposs en deux niveaux : changes entre processeur/mmoire e e e e e et priphrique et changes entre le priphrique et le monde extrieur. e e e e e e Lors de la lecture dun caract`re, lensemble processeur/mmoire dialogue e e avec le priphrique clavier mais au-del` du clavier il y a un utilisateur. Cet e e a utilisateur tape des caract`res ` la vitesse qui lui convient, cest-`-dire de faon e a a c compl`tement arbitraire et non contrlable. Le syst`me informatique doit grer e o e e la synchronisation entre le processeur et le priphrique car on ne peut rien e e contrler entre lutilisateur et le priphrique. o e e Envisageons maintenant un cas o` la vitesse impose nest pas celle dun u e utilisateur mais celle dun organe mcanique. Par exemple, prenons le cas dune e imprimante. L`, on conna la vitesse ` laquelle limprimante peut acher des a t a caract`res et donc assurer une synchronisation de faon ` ne pas en perdre. Il e c a peut toutefois survenir des probl`mes ` des instants non prvisibles comme par e a e exemple labsence de papier : le probl`me est en gnral trait au niveau du e e e e syst`me qui g`re une liste des chiers en attente dimpression et qui nenvoie e e une information ` limprimante que si celle-ci peut la traiter. a Dans le cas gnral, il convient donc de tenir compte des erreurs et anomae e lies inhrentes ` toute interaction avec lenvironnement extrieur. e a e Nous avons vu au chapitre 15 comment grer les changes entre la mmoire e e e et le processeur. La connexion dorganes priphriques ne peut pas sen inspirer e e directement ; en eet, les entres/sorties prsentent des particularits qui les e e e distinguent des acc`s mmoire : e e la vitesse des processeurs et des mmoires ` semiconducteurs est suprieure e a e de plusieurs ordres de grandeur ` celle des priphriques mettant en jeu des a e e dispositifs mcaniques. A titre dillustration une imprimante ` impact (` e a a marguerite, matricielle ` aiguille, etc.) atteignant la dizaine de milliers de a caract`res imprims ` la seconde reprsenterait dj` une prouesse mcanique e e a e ea e alors que tous les processeurs rcents dpassent la centaine de millions dinse e tructions par seconde. le processeur ne peut dcider seul des instants auxquels les changes see e ront eectus : il ne peut par exemple deviner ` quel moment lutilisateur e a va appuyer sur une touche du clavier. Au mieux, il est possible de lisser

http://fribok.blogspot.com/

400

Circuits dentres/sorties e

les probl`mes en imaginant des mcanismes de mmorisation permettant e e e daccumuler les caract`res frapps au clavier en attendant que le processeur e e les traite. Dans la pratique, il ny a pas rellement de probl`me car la vie e tesse des processeurs est nettement suprieure au temps de raction dun e e utilisateur.

2.2

Synchronisation par poigne de mains e

Une entre (ou une sortie) met en jeu deux entits : un metteur et un e e e rcepteur. Dans le cas dune entre lmetteur est le priphrique et le rcepteur e e e e e e est le processeur. Dans le cas dune sortie cest linverse. Il faut mettre en oeuvre un protocole dchange qui permette au rcepteur de dtecter larrive e e e e des informations ` consommer et assurer un contrle de ux, autrement dit a o viter que lmetteur ne soumette des informations plus vite que le rcepteur ne e e e peut les traiter ou que le rcepteur ne traite plusieurs fois la mme information. e e Par exemple, considrons la sortie de caract`res sur une imprimante ; le e e protocole dchange doit assurer que le processeur nmettra pas un nouveau e e caract`re si le prcdent na pas encore t imprim et que limprimante nime e e ee e prime pas plusieurs fois le mme caract`re. e e Dans le cas gnral, lchange entre un processeur et un priphrique peut e e e e e tre rgi par le protocole de dialogue dit poigne de mains prsent au chae e e e e pitre 6. La mise en oeuvre de ce protocole rclame la gestion de signaux de synchroe nisation disant si linformation ` changer est parvenue ou non au rcepteur ae e et si le rcepteur a trait ou non linformation quil a reue. e e c Dans un programme dentre ou de sortie la valeur de ces signaux de syne chronisation est teste et tant que le signal attendu na pas la bonne valeur il e faut le tester ` nouveau jusqu` ce quil devienne correct. On parle dattente a a active car le processeur qui excute ce test ne peut rien faire dautre pendant e ce temps-l`, il est mobilis pendant toute la dure du transfert. a e e
Nous verrons au chapitre 24, paragraphe 3. que dautres solutions (utilisant la notion dinterruption) plus ecaces et plus ralistes sont en fait mises en e oeuvre dans les syst`mes multitches. e a

3.
3.1

Connexion dorganes priphriques e e


Notion de coupleur

Le circuit ncessaire ` la communication sappelle coupleur. Le procese a seur peroit le syst`me dentres-sorties comme un ensemble demplacements c e e mmoire relis au monde extrieur. Lusage a consacr le terme de registres du e e e e coupleur pour ces emplacements. Cela signie que certaines adresses de la mmoire sont rserves ` lusage e e e a

http://fribok.blogspot.com/

3. Connexion dorganes priphriques e e

401

l/e Acc`sMem e Dcodage e dadresses slection de dirents e e bo tiers mmoire e

Slection Coupleur e Coupleur Priphrique e e

Processeur

bus adresses

bus donnes e ls spcialiss e e emplacements mmoire e dits registres du coupleur Fig. 16.2 Connexion dun processeur et dun priphrique via un coupleur e e

des entres/sorties. Cest le dcodage dadresses qui prend en compte cette e e nouvelle contrainte. Les donnes transitant par le bus donnes (Cf. Chapitres 9 et 15) il faut e e quune connexion physique soit ralise entre le priphrique et le bus donnes e e e e e via le coupleur. La gure 16.2 donne une premi`re ide des lments intervee e ee nants dans cette mise en oeuvre. Pour raliser une entre il faut que des ls provenant de lunit priphrique e e e e e soient connects au bus de donnes via des portes trois tats ou des lments e e e ee de mmorisation. Pour raliser une sortie il faut connecter le bus de donnes e e e au priphrique via des lments de mmorisation. e e ee e Le montage nest pas ncessairement symtrique pour les entres et les e e e sorties. En eet, lors dune sortie, la valeur mise par le processeur appara e t fugitivement sur le bus donnes pendant le cycle dcriture et doit donc tre e e e mmorise. Par contre, en entre, il peut sure dchantillonner la valeur au e e e e moment de la lecture sans besoin de mmorisation. En eet, il est raisonnable e de faire lhypoth`se quen entre les valeurs sont stables : le priphrique est e e e e suppos maintenir les donnes pendant lintervalle de temps spci par le e e e e protocole de synchronisation. Nous nous plaons dans ce cas de gure pour la c suite du chapitre.

3.2

Connexion de priphriques ` des lments de e e a ee mmorisation e

Pour dcrire les connexions physiques des ls, nous commenons par rape c peler comment une cellule mmoire est connecte au bus donnes. Nous e e e

http://fribok.blogspot.com/

402

Circuits dentres/sorties e

e considrons une cellule de 1 bit (reprsent par un verrou) connecte au i`me l e e e e du bus de donnes Di. Le schma 16.3 montre la structure du circuit dchange e e e dinformation entre ce bit et le processeur. Acc`sMem et l/e sont les signaux e de slection et de lecture/criture de la mmoire. e e e Nous voulons maintenant faire communiquer lensemble processeur/mmoire avec le monde extrieur. Considrons, par exemple, un e e e monde extrieur tr`s simple dans lequel le processeur doit pouvoir envoyer e e (crire) une valeur sur des lampes, ou bien rcuprer (lire) une valeur sur des e e e interrupteurs. Reprenons le schma 16.3 et supprimons la connexion entre la sortie Q du e verrou et la porte 3 tats donnant lacc`s au l Di du bus donnes. Le montage e e e (Cf. Figure 16.4) cre un port dentre et un port de sortie relis sur lexemple e e e respectivement ` un interrupteur et une lampe. a Le montage dcrit permet la cration dune entre lmentaire et dune e e e ee sortie lmentaire. Le port dentre et celui de sortie peuvent occuper la mme ee e e adresse, comme ici, ou des adresses direntes. e Lcriture sur un port de sortie ou la lecture sur un port dentre mettent en e e jeu un mcanisme de slection dadresse analogue ` celui que nous avons dcrit e e a e au chapitre 15. Pour une criture (respectivement une lecture) sur un port de e sortie (respectivement dentre), le dcodeur dadresses reoit une demande e e c dacc`s ` la mmoire (Acc`sMem=1) accompagne dune adresse correspondant e a e e e a ` lun des circuits consacrs aux entres/sorties. Il active alors le signal de e e slection de ce circuit : SelCoupleur. e Le coupleur doit lui-mme comporter un dcodeur dadresses. Il fabrique les e e signaux de commande de chargement des bascules associes aux ports de sortie e et les signaux de commande des portes 3 tats associes aux ports dentre, ` e e e a e partir de SelCoupleur, du signal l/e mis par le processeur et de ladresse. Sur la gure 16.4, une seule cellule mmoire est reprsente ; nous navons donc pas e e e tenu compte de ladresse. La gure 16.5 dcrit lorganisation dun coupleur ` e a deux ports dentre et deux ports de sortie. Nous pouvons y observer la place e des dcodeurs. e Dans la suite de ce chapitre, nous ne reprsenterons plus les dirents e e dcodeurs mais dessinerons le processeur, le dcodeur dadresses et le dcodeur e e e du coupleur comme un ensemble.

4.
4.1

Programmation dune sortie


Interface simplie e

Nous traitons lexemple de limpression dun texte (suite de caract`res) sur e une imprimante. Le coupleur permet de traiter trois informations : une donne sur 8 bits, le caract`re, qui est une sortie pour le processeur et e e une entre pour limprimante, e

http://fribok.blogspot.com/

4. Programmation dune sortie

403

amplicateur 3 tats e 1 bit de bus donnes e Di D Q En

Acc`sMem e l/e Fig. 16.3 Echange entre le processeur et la mmoire sur un bit : lorsque le signal e e e Acc`sMem vaut 1 et le signal l/e vaut 0 la bascule mmorise la valeur prsente e sur le bus et lorsque Acc`sMem et l/e valent tous deux 1 la valeur mmorise e e e dans la bascule est prsente sur le bus. e

+5V

interrupteur Di D Q En Ecr SelCoupleur l/e

Lec

lampe

Fig. 16.4 Echange entre le processeur et lextrieur sur un bit : le signal lectrique e e command par linterrupteur appara sur le l Di du bus donnes lors dun e t e cycle de lecture (SelCoupleur=1 et l/e=1). Si linterrupteur est ferm le e processeur lira un 0, sil est ouvert il lira un 1. Par ailleurs la valeur mise e sur le l Di par le processeur lors dune criture (SelCoupleur=1 et l/e=0) e est mmorise par le verrou ; si cette valeur est 1 alors la lampe sallume, si e e cest 0 la lampe steint. e

http://fribok.blogspot.com/

404

Circuits dentres/sorties e

... ... PROCESSEUR Bus donnes e

Di D Q En A0 EcrS1 EcrS0 LecE1 LecE0 Dcodeur du coupleur e

Bus adresses Acc`sMem e

Dcodeur e dadresses l/e

SelCoupleur slection de dirents e e ... bo tiers mmoire e

Fig. 16.5 Coupleur ` deux ports dentres et deux ports de sortie : le dcodeur a e e dadresses active le signal SelCoupleur lorsquil reconna ladresse qui lui t est fournie comme une adresse du circuit dentres/sorties. En supposant e que le bit dadresse A0 permet de faire la distinction entre les deux mots du coupleur, le dcodeur du coupleur fabrique les signaux de commande des e 2 ports de sortie EcrS0 et EcrS1 et des 2 ports dentre LecE0 et LecE1, ` e a partie des signaux SelCoupleur, l/e et A0.

un boolen processeur prt qui signie quun nouveau caract`re est dispoe e e nible et doit tre imprim, e e un boolen imprimante prte, qui signie que limprimante est prte ` traiter e e e a un caract`re. Apr`s une impression il signie que le caract`re prcdent a e e e e e t imprim. ee e Le coupleur est compos dun registre de donnes RegD et dun registre de e e commande RegC auxquels on acc`de en criture, et dun registre dtat RegE e e e auquel on acc`de en lecture. Vus du processeur RegD est ` ladresse RD et e a contient la donne, RegC est ` ladresse RC et contient un seul bit signicatif : e a processeur prt ; RegE est ` ladresse RE et contient un seul bit signicatif e a imprimante prte. e Posons comme convention que le signal processeur prt est actif lorque le e registre RegC vaut 1 et que le signal imprimante prte est actif lorsque le signal e RegE vaut 1. La gure 16.6 dcrit cette organisation matrielle et la gure 16.7 donne les e e programmes dinitialisation du coupleur et dimpression dun caract`re stock e e a ` ladresse car. Ils sont crits en langage dassemblage 68000 (Cf. Chapitre 12 e pour un exemple de syntaxe de ce langage dassemblage). Lexcution de ces e

http://fribok.blogspot.com/

MONDE EXTERIEUR

D Q En

4. Programmation dune sortie

405

programmes met en oeuvre lalgorithme de lmetteur (voir le protocole poigne e e de mains dans le chapitre 6). La boucle dattente sur ltiquette att-pret, correspond ` ltat o` le procese a e u seur attend que le rcepteur soit libre ; lorsque cest le cas, le processeur peut e lui envoyer une valeur. La boucle dattente sur ltiquette att-traite correspond e a ` lintervalle de temps pendant lequel le processeur attend que le rcepteur ait e trait la donne envoye. Si le processeur nattend pas, il risque dcraser le cae e e e ract`re envoy. La remise ` zro du registre RegC correspond ` la dsactivation e e a e a e du signal processeur pr^t. e

4.2

Gestion derreur

Dans ce paragraphe nous examinons comment prendre en compte les erreurs provenant dun priphrique. Nous poursuivons avec lexemple de limprimante e e en considrant le probl`me de labsence de papier : limprimante ne doit plus e e recevoir de caract`res. e Pour grer le probl`me, il faut que le processeur puisse en tre inform ; pour e e e e cela le registre dtat RegE va tre complt par un nouveau signal erreur papier. e e ee Pour xer les ides nous supposons que ce signal est connect au bit 1 du bus e e donnes (Cf. Figure 16.8). Le programme dimpression dun caract`re, modi e e e pour prendre en compte la gestion de lerreur, est donn dans la gure 16.9. e En gnral, les informations contenues dans le registre dtat dun coupleur e e e permettent deectuer les tests lis aux aspects de synchronisation de lchange e e et de grer les dirents types derreurs lis au fonctionnement du priphrique e e e e e associ. e

4.3

Interface optimise e

Nous tudions dans ce paragraphe une version optimise du programme de e e sortie dun caract`re sur une imprimante. On va chercher ` rduire le nombre e a e dacc`s mmoire faits par le processeur pour raliser le transfert dune donne. e e e e Il faudra ajouter un peu de matriel mais celui-ci nest pas vraiment coteux. e u Nous repartons de la version de base ne traitant pas derreurs. Tout dabord, remarquons que lors dune sortie, lactivation de processeur prt va toujours de pair avec lcriture dans le registre de donnes. De plus, e e e hors initialisation, sa dsactivation suit toujours le front descendant du signal e imprimante prte. e Le registre de commande RegC peut tre remplac par une bascule RS mise e e a ` un par le signal dcriture dans le registre de donnes et remise ` zro par e e a e e e a le signal imprimante prte. Lors de linitialisation, la bascule doit tre mise ` 0. La bascule remplace le registre de commande et sa sortie se substitue au signal processeur prt (Cf. Figure 16.10). e Dautre part, pour pouvoir soumettre un nouveau caract`re, il faut ` la e a fois que limprimante soit prte (imprimante prte actif) et que le prcdent e e e e

http://fribok.blogspot.com/

406

Circuits dentres/sorties e

Processeur et dcodage e

bus donnes e D7 D0 RegD Imprimante RegC processeur prt e imprimante prte e Rcepteur e

ECRS0

criture donne e e

e ECRS1 criture commande RegE LECE1 lecture tat e Emetteur Fig. 16.6 Exemple de coupleur dimprimante. Lmetteur est constitu du processeur, e e du coupleur et des dcodeurs, le rcepteur est limprimante. Cette organisae e tion ncessite 2 ports de sortie (S0 pour les donnes, S1 pour la commande) e e et un port dentre pour ltat (E1). e e IMP-PRETE = 1 PROC-PRET = 1 NON-PROC-PRET = 0 .data car : .ascii A ! code du caract`re A e .text Init : moveq NON-PROC-PRET, RC !le processeur na rien ` mettre a e ImpCar : ! attendre que le priphrique soit pr^t e e e att-pret :move.b RE, D1 ! D1 est un reg. donne libre e andi.b IMP-PRETE, D1 beq att-pret ! limprimante nest pas pr^te e ! priphrique pr^t : envoyer la valeur ` imprimer e e e a move.b car, RD moveq PROC-PRET, RC att-trt : move.b RE, D1 andi.b IMP-PRETE, D1 bne att-trt ! le priphrique traite e e ! le caract`re a t imprim e e e e moveq NON-PROC-PRET, RC rts Fig. 16.7 Programme de sortie simple

http://fribok.blogspot.com/

4. Programmation dune sortie

407

Processeur et dcodage e

bus donnes e D7 D1 RegD Imprimante processeur prt e

D0 e e ECRS0 criture donne RegC e ECRS1 criture commande RegE

imprimante prte e erreur papier LECE1 lecture tat e

Fig. 16.8 Coupleur dimprimante avec gestion de lerreur : absence de papier IMP-PRETE = 1 ; PROC-PRET = 1 NON-PROC-PRET = 0 ERREUR = 2 ! bit 1 du registre RE : 21 .data car : .ascii A .text ImpCar : ! A la fin du traitement D1 contient 0 si tout ! sest bien pass et 1 sil y a eu une erreur e att-pret : move.b RE, D1 andi.b ERREUR, D1 bne pb-papier ! plus de papier move.b RE, D1 andi.b IMP-PRETE, D1 beq att-pret move.b car, RD moveq PROC-PRET, RC att-traite :move.b RE, D1 andi.b ERREUR, D1 bne pb-papier move.b RE, D1 andi.b IMP-PRETE, D1 bne att-traite OK : moveq 0, D1 bra fin pb-papier : moveq 1, D1 fin : moveq NON-PROC-PRET, RC rts Fig. 16.9 Programme de sortie grant un type derreur e

http://fribok.blogspot.com/

408

Circuits dentres/sorties e

e Processeur bus donnes RegD et dcodage e e e ECRS0 criture donne

Imprimante

S R

processeur prt e

RegE transfert possible LECE1 lecture tat e

imprimante prte e

Fig. 16.10 Exemple de coupleur dimprimante optimis e

caract`re ait t rcupr par limprimante, ce qui est dtectable par le fait que e ee e ee e processeur prt soit inactif. Si cette nouvelle double condition (transfert possible e sur la gure 16.10) est teste ` la place de la simple condition imprimante prte, e a e la boucle dattente qui suit lmission dun caract`re peut tre supprime. e e e e Le processeur na plus alors qu` tester transfert possible et crire le caa e ract`re ` transfrer dans le registre de donnes. Le signal processeur prt est e a e e e automatiquement mis ` jour par la bascule. La prsence de la bascule RS a e remplace les acc`s au registre de commande. e La gure 16.10 dcrit le matriel ncessaire ` cette nouvelle interface et e e e a le programme dimpression dun caract`re sur limprimante dans ce nouveau e contexte est dcrit dans la gure 16.11 . e
Remarque : Nous verrons, au paragraphe 6. de ce chapitre et au paragraphe 3. du chapitre 24, deux mthodes pour liminer lattente active sur e e att-pret excute par le processeur. e e

5.
5.1

Programmation dune entre e


Interface simplie e

Nous considrons lexemple de la lecture dun caract`re au clavier. e e Le coupleur du clavier comporte trois informations : la donne (adresse e RD) et le boolen clavier prt (adresse RE) accessibles en lecture, et le boolen e e e processeur prt (adresse RC) accessible en criture. clavier prt signie quun e e e caract`re a t frapp sur le clavier. processeur prt signie que le processeur e ee e e

http://fribok.blogspot.com/

6. Optimisation des entres/sorties groupes e e

409

TRANSFERT-POSSIBLE = 1 .data car : .ascii A .text ImpCar : att-pret :move.b RE, D1 andi.b TRANSFERT-POSSIBLE, D1 beq att-pret move.b car, RD ! la bascule RS passe a 1, limprimante sait quelle ! doit prendre un caractere rts Fig. 16.11 Programme de sortie optimis e

est prt ` traiter un caract`re. Apr`s une lecture antrieure cela signie que le e a e e e caract`re prcdemment envoy a t rcupr. e e e e ee e ee Les gures 16.12 et 16.13 dcrivent respectivement lorganisation matrielle e e et les programmes dinitialisation du coupleur et de lecture dun caract`re. e

5.2

Interface optimise e

Lide consiste, comme dans le cas de la sortie, ` remplacer le registre de e a commande par une bascule RS (Cf. Figure 16.14) et ` supprimer la boucle a dattente apr`s la rcupration du caract`re lu. Pour cela, constatons que la e e e e lecture du caract`re envoy par le clavier doit faire passer le signal processeur e e prt ` zro (entre R de la bascule). Lorsque le signal clavier prt devient inactif, e a e e e la bascule est alors remise ` 1. La bascule doit tre initialise ` 1. Dautre part, a e e a pour pouvoir lire un nouveau caract`re, il faut que le clavier en ait soumis un e (clavier prt actif) et que le processeur ne lait pas dj` lu (processeur prt e ea e actif) ; cette double condition constitue le nouveau boolen : transfert possible. e Les gures 16.14 et 16.15 dcrivent respectivement le matriel ncessaire et e e e le programme optimis de lecture dun carat`re au clavier. e e

6.

Optimisation des entres/sorties groupes e e

Nous nous intressons maintenant ` une situation tr`s classique consistant e a e a ` encha ner plusieurs entres/sorties. e Par exemple, pour eectuer la sortie des lments dun tableau de n caee ract`res (zone de mmoire de n octets conscutifs), on peut insrer le proe e e e gramme de sortie dun caract`re dans une boucle de parcours du tableau. e Cette solution nest pas tr`s ecace car pour chaque caract`re, une attente va e e avoir lieu.

http://fribok.blogspot.com/

410

Circuits dentres/sorties e

Processeur et dcodage e LECE0

bus donnes e lecture donne e

RegD Clavier RegC processeur prt e clavier prt e

e ECRS1 criture commande RegE LECE1 lecture tat e

Emetteur

Rcepteur e Fig. 16.12 Exemple de coupleur de clavier. Lmetteur est le clavier, le rcepteur est e e constitu du processeur, du coupleur et des dcodeurs. Cette organisation e e ncessite 2 ports dentres (E0 pour la donne, E1 pour ltat) et un port e e e e de sortie pour la commande (S1). CLAVIER-PRET = 1 PROC-PRET = 1 NON-PROC-PRET = 0 .data ! un octet initialis ` 0 pour stocker le caract`re lu e a e car : .byte 0 .text Init : ! le processeur est pr^t ` recevoir e a moveq PROC-PRET, RC LireCar : att-clavier :ove.b RE, D1 ! attendre priphrique pr^t m e e e andi.b CLAVIER-PRET, D1 beq att-clavier ! le clavier na rien envoy e ! le priphrique est pr^t : rcuprer le caract`re e e e e e e move.b RD, car moveq NON-PROC-PRET, RC att-traite :move.b RE, D1 ! attendre le traitement andi.b CLAVIER-PRET, D1 bne att-traite ! le caractere a t lu e e moveq PROC-PRET, RC rts Fig. 16.13 Programme dentre simple e

http://fribok.blogspot.com/

6. Optimisation des entres/sorties groupes e e

411

Processeur et dcodage e ECRS0

bus donnes e lecture donne e

RegD Clavier R processeur prt e S clavier prt e

RegE LECE1 lecture tat e

transfert possible

Fig. 16.14 Exemple de coupleur de clavier optimis e

TRANSFERT-POSSIBLE = 1 .data car : .byte 0 .text LireCar : att-clavier :ove.b RE, D1 m andi.b TRANSFERT-POSSIBLE, D1 beq att-clavier move.b RD, car rts Fig. 16.15 Programme dentre optimis e e

http://fribok.blogspot.com/

412

Circuits dentres/sorties e

Il est possible de dcharger le processeur dune partie de ce travail en ajoue tant un circuit qui sen chargera. Le circuit eectuant les entres/sorties est e un automate cbl dont la ralisation est peu coteuse : un registre contea e e u nant une adresse, un registre contenant le nombre dlments ` transfrer, un ee a e incrmenteur, un dcrmenteur et quelques bascules pour lautomate de come e e mande. Cette technique est appele acc`s direct ` la mmoire (en anglais Direct e e a e Memory Access, DMA), linterface accdant directement ` la mmoire. e a e Dans la suite, nous prsentons les aspects dorganisation matrielle dun e e syst`me comportant un processeur, de la mmoire, un circuit dentres/sorties e e e et un contrleur dacc`s direct ` la mmoire ; puis nous dcrivons le o e a e e droulement dune sortie. Enn nous voquons lvolution des syst`mes e e e e dentres/sorties. e

6.1

Acc`s direct ` la mmoire et partage de bus e a e

Cette technique permet de raliser par matriel le transfert impliqu par e e e une entre ou une sortie. De plus, elle lib`re le processeur pendant lattente de e e la disponibilit du priphrique. Ainsi, le processeur peut rcuprer, pour eece e e e e tuer des calculs, le temps quil utilisait prcdemment ` excuter une attente e e a e active. La ralisation de lacc`s direct ` la mmoire par un contrleur indpendant e e a e o e du processeur pose un certain nombre de probl`mes que nous examinons cie dessous. La gure 16.16 dcrit lorganisation du dispositif. e Il faut grer lacc`s ` la mmoire (adresses, donnes, signaux dacc`s e e a e e e mmoire et lecture/criture) ` la fois par le processeur et par le contrleur e e a o dacc`s direct ` la mmoire (CDMA). Le principe est de connecter alternae a e tivement les bus au processeur et au CDMA, via des amplicateurs ` sortie a trois tats. Le CDMA acc`de ` la mmoire en la pilotant directement ` la e e a e a place du processeur, temporairement dconnect du bus (Cf. Paragraphe 1.3 e e du chapitre 15 pour la ralisation matrielle de cette dconnexion). La gestion e e e du bus adresses demande deux signaux de dialogue entre le processeur et le CDMA : une demande de libration du bus mise par le CDMA (demande bus) e e et lautorisation correspondante mise par le processeur (lib`re bus). e e Le processeur doit pouvoir autoriser ou non le coupleur ` mettre des a e requtes de transfert en direction du CDMA. Pour cela, on utilise un boolen e e autorisation requte dma dans le registre de commande du coupleur. Ce boolen e e est mis ` jour par le processeur lorsquil initie un transfert. a Le coupleur doit pouvoir signaler au CDMA quil faut faire un transfert lorsque le priphrique est disponible. Cette information est matrialise par e e e e le signal requte transfert qui est un et logique entre tranfert possible (Cf. Pae ragraphe 4.3 et gure 16.10) et autorisation requte dma. e Le CDMA doit pouvoir accder directement ` la donne du coupleur sans e a e passer par le dcodage dadresses standard. De faon plus prcise, le CDMA e c e

http://fribok.blogspot.com/

6. Optimisation des entres/sorties groupes e e

413

CDMA requte transfert e acq transfert adresse taille i demande bus

COUPLEUR transfert possible autorisation requte dma e ECRS0

criture donne e e RegD slection e coupleur slection e CDMA Dcodeur dadresse e Adresses slection e mmoire e

PROCESSEUR

lib`re bus e

Donnes e

MEMOIRE

Fig. 16.16 Acc`s ` la mmoire avec DMA : on observe les 5 composants : processeur, e a e contrleur de DMA, coupleur, mmoire et dispositif de dcodage dadresse o e e qui slectionne les bo e tiers. Le CDMA comporte des registres dcrivant la e zone de mmoire ` transfrer (adresse et taille) et un registre index (i). Via e a e deux amplicateurs 3 tats, le bus dadresses est pilot soit par le processeur, e e soit par le CDMA. Le bus dadresses est une entre pour le CDMA, le e coupleur et la mmoire : il sert ` slectionner le registre du CDMA ou du e a e coupleur ou le mot mmoire lors dun acc`s initi par le processeur. Le bus e e e dadresses est une sortie pour les deux ma tres : le processeur et le CDMA ; il sert alors ` slectionner le registre du coupleur ou le mot mmoire. a e e

http://fribok.blogspot.com/

414

Circuits dentres/sorties e

soit pouvoir slectionner simultanment la mmoire en lecture et le coupleur e e e en criture. Ceci suppose lajout dun signal acq transfert. La slection eective e e du registre de donnes du coupleur est alors le ou logique entre acq transfert et e le signal de slection normal (ECRS0 sur la gure 16.10). e
Remarque : Dans le cas dune entre, le CDMA acc`dera simultanment e e e au coupleur en lecture et ` la mmoire en criture. a e e

6.2

Droulement dune sortie avec acc`s direct e e ` la mmoire a e

Nous pouvons maintenant dcrire plus prcisment le droulement dune e e e e sortie avec CDMA. Nous considrons lexemple de la sortie dun tableau tab e de n octets : 1. Le processeur crit ladresse tab et la taille n du tableau ` transfrer dans e a e les registres adresse et taille du CDMA. Ceci provoque linitialisation du registre i (compteur doctets transfrs) du CDMA. ee 2. Le processeur autorise le coupleur ` mettre une requte lorsquil est a e e prt : il crit dans le registre de commande du coupleur pour mettre le e e boolen autorisation requte dma ` vrai. e e a 3. Le processeur vaque ` dautres occupations. a 4. Lorsque le priphrique a termin le travail quil eectuait e e e prcdemment, il devient prt et le coupleur active le signal requte e e e e transfert. 5. Le CDMA active le signal demande bus. 6. Le processeur termine lventuel acc`s mmoire en cours et active lib`re e e e e bus pour indiquer que le bus est libre. Le processeur est alors dconnect e e du bus. 7. Le CDMA met ladresse de loctet courant, acc`de ` la mmoire en e e a e lecture et active simultanment acq transfert pour crire la donne dans e e e le coupleur. Pendant ce temps, lexcution de linstruction courante par e le processeur peut se poursuivre jusqu` ce quun acc`s mmoire soit a e e ncessaire. e 8. Le priphrique reoit le caract`re ` traiter et dsactive requte transfert. e e c e a e e Le CDMA dsactive ` son tour demande bus et incrmente le registre i. e a e Le processeur se connecte ` nouveau au bus en dsactivant lib`re bus et a e e poursuit son travail jusquau prochain transfert de caract`re. e La politique de partage des bus mmoire peut tre plus ou moins sophise e tique. Elle peut tre rudimentaire et pr-tablie (par exemple acc`s par le e e ee e processeur durant la demi-priode haute dune horloge, et par le CDMA pene dant lautre demi-priode). Elle peut tre cone ` un ma privilgi (tel e e e a tre e e que le processeur), qui dcide seul des instants auxquels il va cder les bus. e e Les bus peuvent tre partags entre un nombre quelconque de ma e e tres, selon des stratgies dallocation labores telles que des priorits xes ou tournantes. e e e e Lattribution des bus est alors gre par un circuit darbitrage, trop sophistiqu ee e pour tre dtaill dans cet ouvrage. e e e

http://fribok.blogspot.com/

7. Exercices

415

6.3

Canaux et processeurs dentres/sorties e

Ltape suivante est celle du canal dentres/sorties qui sest surtout e e dvelopp dans les grands syst`mes de gestion transactionnelle connects ` e e e e a de nombreux disques et terminaux. Il sagit dune unit dacc`s direct ` la mmoire capable dencha e e a e ner automatiquement des transferts de blocs dont les param`tres (adresse et taille e du tableau, priphrique et sens du transfert) sont stocks en mmoire par e e e e le processeur dune part, et dentrelacer des entres et sorties avec plusieurs e priphriques dautre part. La suite dordres dentres/sorties que le canal lit e e e en mmoire et excute est quelquefois appele programme canal. e e e Le canal peut tre muni de la possibilit deectuer des itrations et defe e e fectuer ou non certaines entres/sorties selon certaines conditions. Cette exe tension du canal aboutit ` la notion de processeur dentres/sorties dot de a e e tout un jeu dinstructions de comparaison et de branchement en plus des instructions dentre et de sortie de blocs de caract`res. Citons ` titre dexemple e e a le processeur 8089 dans la famille 8086 dintel. A partir de l`, lvolution du syst`me dentres/sorties peut emprunter plua e e e sieurs directions. On peut disposer de (co)processeurs dentres/sorties ddis e e e chacun ` un type de priphrique (processeur graphique, processeur de signaux a e e sonores, etc.). On peut choisir de dupliquer le processeur de calcul, lun des deux processeurs se substituant au processeur dentres/sorties. On obtient e alors un multiprocesseur ` mmoire commune. a e Actuellement, la plupart des terminaux graphiques sont des priphriques e e dits intelligents qui sont dots dune certaine puissance de traitement, en pare ticulier pour les traitements graphiques.

7.

Exercices

E16.1 : Circuit dentres/sorties e Rcuprer la documentation dun circuit dentres/sorties (par exemple RS232, e e e PIA). Reprer les registres du coupleur. Retrouver limplantation des signaux e voqus dans ce chapitre ; en gnral, ils sont reprsents par certains bits des e e e e e e registres du coupleur. Etudier les types de probl`mes grs par le circuit. Ecrire e ee les programmes dentres/sorties. e E16.2 : Contrleur dacc`s direct ` la mmoire o e a e Etudier la structure interne dun circuit contrleur de DMA. o

http://fribok.blogspot.com/

Chapitre 17 Pilotes de priphriques e e


En introduction de la partie V nous avons structur le syst`me dexploitae e tion en 2 parties : Une partie basse fortement dpendante des caractristiques du matriel et e e e fournissant des fonctionnalits tr`s proches de celui-ci mais sous une forme e e normalise. Il sagit des biblioth`ques de gestion des priphriques, appeles e e e e e pilotes de priphriques. Cest lobjet de ce chapitre. e e Une partie haute utilisant les primitives de la prcdente pour orir des e e services de plus haut niveau smantique, en loccurrence le SGF (Cf. Chae pitre 19), ou le chargeur/lanceur (Cf. Chapitre 20). Lintrt dune couche intermdiaire entre la programmation de tr`s bas ee e e niveau des entres/sorties dcrite au chapitre 16, et les couches suprieures du e e e syst`me, repose essentiellement sur deux aspects. e La diversit des caractristiques physiques des priphriques de mme nae e e e e ture, par exemple les disques, conduit ` en faire abstraction pour dnir une a e interface normalise, sur laquelle sappuient les programmes du syst`me de e e gestion de chiers. Dautre part, dans un syst`me simple, lutilisateur dialogue avec les applie cations via le clavier et lcran physique de lordinateur. Il est commode de e donner aux applications lillusion quil en est encore de mme lorsque lutie lisateur est par exemple connect ` distance depuis un autre ordinateur, via ea le rseau. On peut avoir recours ` des pilotes de priphriques virtuels, qui e a e e simulent lexistence dun priphrique ctif du type escompt par les applicae e e tions. Le pilote dcran virtuel se contentera de retransmettre les requtes ` e e a lordinateur distant o` elles seront traites par le pilote de clavier et dcran u e e local. Le principe est le mme avec les syst`mes de fentrage. e e e Apr`s avoir prsent la structure dun pilote de priphrique (parae e e e e graphe 1.), nous montrons par lexemple comment dnir une couche e pilote de priphrique. Nous tudions en dtail un pilote de priphrique e e e e e e de type caract`re : le clavier (paragraphe 2.) ; un pilote de priphrique e e e de type bloc : le disque (paragraphe 3.). Les fonctions introduites dans le pilote de disque sont rutilises au chapitre 19. Le paragraphe 4. voque e e e

http://fribok.blogspot.com/

418

Pilotes de priphriques e e

la complexit des priphriques actuels, et dcrit bri`vement un pilote e e e e e dcran graphique. e

1.
1.1

Structure dun pilote de priphrique e e


Interface dun pilote

Un pilote est constitu de structures de donnes et dun ensemble de e e procdures ou fonctions qui sont autant de services utilisables par le syst`me e e dexploitation ou ventuellement les programmes dapplication. Les structures e de donnes dcrivent les caractristiques du priphrique et de son coupleur, e e e e e son tat et les variables internes du pilote. Linterface comporte en gnral les e e e fonctions suivantes : Une procdure de lecture et/ou dcriture, selon la nature du priphrique, e e e e dune suite doctets. Des procdures dites douverture et de fermeture, appeles respectivement e e avant et apr`s une suite dacc`s en lecture ou en criture. Par exemple, e e e on ouvre un chier avant den lire ou den modier le contenu ; on doit dmarrer et arrter le moteur du lecteur de disquette. e e Une procdure dinitialisation utilise lors du dmarrage, suite ` la mise e e e a sous tension, ou lors de la rinitialisation du syst`me. e e Une fonction de contrle permettant de consulter ou de modier les pao ram`tres de fonctionnement du pilote et du priphrique. e e e un ensemble de routines particuli`res appeles traitants dinterruption que e e nous tudions aux chapitres 22 et 24. e

1.2

Identication des priphriques et de leur pilote e e

Les adresses des routines des pilotes sont regroupes dans une table de e branchement ` deux dimensions, indice dune part par le type de priphrique a e e e et dautre part par la fonction demande. e Il peut exister plusieurs exemplaires dun mme type de priphrique, e e e reprs par un numro dexemplaire et grs par le mme pilote. Dans ce cas ee e ee e la structure de donnes du pilote devient un tableau ` autant dentres que e a e dunits connectables ` lordinateur. e a Chaque priphrique peut, par exemple, tre identi par son numro de e e e e e type et son numro dexemplaire, appels numros de priphriques respectivee e e e e ment majeur et mineur dans la terminologie du syst`me unix. Les exemplaires e de disques de mme type peuvent par exemple direr par leur taille (2,4 ou e e 9 Go). Des priphriques de mme nature peuvent avoir des caractristiques e e e e susamment direntes pour tre considrs comme des types dirents et e e ee e grs par des pilotes distincts. On pourra par exemple trouver un pilote de ee disques ` la norme de raccordement ide et un pilote de disques de type scsi. a

http://fribok.blogspot.com/

2. Pilote pour un clavier

419

2.

Pilote pour un clavier

Le clavier est un priphrique de dialogue. Les changes entre le clavier et e e e lordinateur sont typiquement caract`res par caract`res. e e

2.1
2.1.1

Description dun clavier et de son coupleur


Vision externe

Un clavier est un ensemble de touches munies de cabochons indiquant la fonction (caract`re) associe ` la touche. Chaque touche est un bouton poussoir e e a dont le contact est ferm lorsque la touche est appuye et ouvert lorsque la e e touche est relche. a e Nous supposons pour simplifer lexpos que le contact est exempt de rebond e a ` louverture et ` la fermeture. Le lecteur est invit ` consulter [AL78, Zak80] a ea pour une prsentation plus dtaille des techniques dinterfaage des claviers. e e e c Chaque touche est repre par un numro indiquant sa position physique ee e dans le clavier. Chaque touche peut avoir plusieurs sens selon ltat de die verses touches modicatrices (majuscule, contrle, etc) au moment o` elle est o u enfonce. e Nous considrons ` titre dexemple un clavier de 64 touches ordinaires plus e a une touche de majuscule. 2.1.2 Interface du clavier physique

Nous supposons que la lecture du coupleur de clavier retourne une structure forme des champs suivants : un boolen de prsence indiquant si une touche e e e est enfonce au moment de la lecture, un ou plusieurs boolens indiquant ltat e e e des touches modicatrices, un entier donnant la position physique de la touche enfonce. e Il est souvent commode de considrer la juxtaposition de la position de la e touche et de ltat des modicateurs comme un numro de touche global dans e e un clavier virtuel dont chaque touche ne serait associe qu` un seul caract`re. e a e A chaque touche physique ordinaire correspondent autant de touches virtuelles que de combinaisons possibles dtat des modicateurs au moment o` la touche e u est enfonce. Le clavier de notre exemple poss`de 128 touches virtuelles : 64 e e touches 2 tats possibles de la touche majuscule. e 2.1.3 Vision interne

En pratique, les claviers sont organiss sous forme matricielle pour obtee nir une ralisation plus conomique et plus compacte (moins de ls). Chaque e e touche ordinaire est place ` lintersection dune ligne et dune colonne de la e a matrice. Pour tester ltat dune touche, il sut denvoyer un 0 sur sa ligne : e si la touche est appuye, le 0 appara e tra sur sa colonne. Le coupleur devient

http://fribok.blogspot.com/

420

Pilotes de priphriques e e

TOUCHEPRESENTE : lentier 0x80 { Bit 7 du coupleur } BITSTOUCHE : lentier 0x7F { pour rcuprer le numro de la touche } e e e ADRCLAVIER : lentier ... { adresse du coupleur clavier } ToucheAppuye : un entier e { Retourne un entier < 0 si aucune touche nest enfonce ; retourne un e entier 0 dans le cas contraire, et cest le code mis par la lecture du e coupleur de clavier } c, t : des caract`res e c 1 Mem [ADRCLAVIER] t aect c ET BITSTOUCHE { ET bit ` bit pour masquage } a si c ET TOUCHEPRESENTE = 0 { aucune touche appuye } e t -1 ToucheAppuye : t e Fig. 17.1 Fonction de dtection de touche appuye e e

alors un petit circuit squentiel qui balaie les lignes ` tour de rle et mmorise e a o e la premi`re touche appuye rencontre. e e e Dans la suite, pour xer les ides, nous considrons que la lecture du coue e pleur de clavier retourne la position de la touche sur les bits 0 ` 5 du bus de a donnes, ltat de la touche majuscule sur le bit 6 et la prsence dune touche, e e e en bit 7. Nous dnissons ainsi la fonction ToucheAppuye qui donne le numro de e e e touche appuye par lutilisateur (Figure 17.1). Attendre lenfoncement dune e touche t scrira : e
rpter t ToucheAppuye() jusqu` t 0 e e e a

De mme, attendre le relchement de la touche t scrira : e a e


rpter tt ToucheAppuye() jusqu` tt = t e e e a

2.2
2.2.1

Fonctionnalits du pilote de clavier e


Traduction des positions en codes ASCII

Le pilote de clavier pourrait se limiter ` une simple fonction retournant le a code lu sur le coupleur. Toutefois, ` lexception de certains jeux, les applications a ne sintressent gnralement pas ` la position physique de la touche, mais au e e e a caract`re qui lui est associ. Or la disposition des caract`res sur les touches e e e dpend de la langue ` laquelle le clavier est destin. e a e A titre dexemple, les types de clavier alphanumriques sont souvent dnis e e par les six premiers caract`res de la deuxi`me range : QWERTY (version e e e anglo-saxonne), AZERTY (version francise), etc. e Une premi`re fonction du pilote est donc de convertir le numro de touche e e

http://fribok.blogspot.com/

2. Pilote pour un clavier

421

en code ASCII en fonction de la topologie du clavier, que lon peut par exemple dcrire par un tableau (indic par le numro global de touche) : e e e
NumVersAscii : un entier un caract`re e { t tant le numro rendu par la lecture du coupleur de clavier, accompagn de line e e formation concernant la touche modicatrice, NumVersAscii (t) est le caract`re e associ ` t } ea

La correspondance nest pas biunivoque : certaines touches retournent le mme caract`re quels que soient les modicateurs, comme par exemple la barre e e despace, la touche de retour/n de ligne ou la touche de suppression de caract`re. e 2.2.2 Probl`mes dchantillonnage e e

Les applications souhaitent gnralement rcuprer un (et un seul) exeme e e e plaire du caract`re par frappe de touche. Chaque frappe correspond pourtant e a ` deux vnements physiques : lappui dune touche et son relchement. e e a La procdure dacquisition dun caract`re ne peut donc se limiter ` la seule e e a dtection dune touche enfonce. Elle doit galement attendre le relchement de e e e a la touche : le relchement est le seul vnement permettant dchantillonner a e e e correctement une suite de caract`res identiques. Sans cette prcaution, une e e touche pourrait tre chantillonne plusieurs fois par frappe. e e e Le pilote peut ventuellement orir une fonction de rptition automatique. e e e Le principe consiste ` mesurer le dlai durant lequel la touche reste enfonce. a e e Chaque accroissement de ce dlai dun temps gal ` la priode de rptition e e a e e e est assimil ` un relchement et donne lieu ` la rmission du caract`re. Notre ea a a ee e pilote simplif ne g`re pas cette fonctionnalit. e e e 2.2.3 Mode interactif et mode ligne

La primitive de base oerte par le pilote est la lecture au clavier dune suite de caract`res, les param`tres passs par lapplication tant le nombre n e e e e de caract`res attendus et ladresse t du tableau de caract`res ` remplir. e e a Le pilote peut se contenter de lire les n caract`res et de les passer ` lapplie a cation sans traitement particulier. Ce mode de fonctionnement est adapt aux e applications interactives telles que les diteurs de texte, qui g`rent elles-mmes e e e la mise ` jour de lcran et ragissent ` chaque frappe de caract`re (n tant a e e a e e le plus souvent gal ` 1). Nous dirons dans ce cas que le pilote fonctionne en e a mode interactif. Toutefois de nombreuses applications ne lisent pas des caract`res isols, e e mais des lignes. Une ligne est une suite de caract`res termine par un caract`re e e e de n de ligne. Le mode ligne est par exemple bien adapt au fonctionnement e dun interpr`te de commande textuel simple (Cf. Chapitre 20). Il est mme e e impos par certains syst`mes de gestion transactionnelle dots de nombreux e e e

http://fribok.blogspot.com/

422

Pilotes de priphriques e e

terminaux distants. Dans ce contexte, il est important de minimiser le trac sur les lignes entre les terminaux et lordinateur central ainsi que de dcharger e ce dernier des tches subalternes. La saisie et ldition des lignes sont alors a e gres en local par le terminal qui ne sadresse au syst`me central que lorsquil ee e dispose dune ligne compl`te. Ceci revient ` intgrer une partie du pilote dans e a e le matriel du terminal. e Lapplication ne conna gnralement pas ` lavance la longueur de la ligne t e e a qui est retourne par la routine de lecture du pilote. Pendant lacquisition dune e ligne, les caract`res saisis sont achs en cho ` lcran et dposs dans un e e e a e e e tampon de ligne. La routine de lecture retourne un rsultat lorsque le tampon e contient un caract`re de n de ligne. Durant la saisie, lutilisateur peut eectuer e diverses corrections, telles que supprimer le dernier caract`re de la ligne en e appuyant sur la touche deacement. Lors de lappel de la routine de lecture du pilote, le tampon de ligne peut contenir une cha de caract`res termine par une n de ligne, ou tre vide. ne e e e Dans ce dernier cas, le pilote attend les caract`res saisis par lutilisateur et les e recopie dans le tampon, jusqu` ce que ce dernier contienne une n de ligne. a Le param`tre n permet de limiter le nombre de caract`res transfrs par e e ee appel du pilote. Si n , la ligne est transfre en entier et le tampon de ligne ee est vid. Si n< , seuls les n premiers caract`res de la ligne sont consomms et e e e retirs du tampon de ligne. Le reste de la ligne sera consomm lors dappels e e ultrieurs du pilote. e Il existe une taille de ligne maximale, de lordre de la centaine de caract`res. e Lorsque le tampon de ligne ne contient plus quune case libre, le pilote refuse tous les caract`res except la n de ligne. Lcho ignore les caract`res refuss et e e e e e les remplace par le pseudo-caract`re sonnerie que le pilote dcran traduit en e e un signal sonore ou en un bref clignotement de lcran pour avertir lutilisateur e du probl`me. e Le param`tre n est gnralement gal ` la taille maximale de la ligne, ce qui e e e e a garantit aux applications de lire une ligne compl`te ` chaque appel du pilote. e a 2.2.4 Mode avec ou sans echo

Par dfaut, la ligne en cours de saisie appara ` lcran, ce qui permet ` e t a e a lutilisateur de dtecter et de corriger dventuelles fautes de frappe. Il existe e e cependant des cas de gures justiant la saisie dune ligne sans cho ` lcran e a e pour viter quune personne indiscr`te ou indlicate ne lise la saisie par dessus e e e lpaule de lutilisateur. Lexemple typique de cette situation est la saisie dun e mot de passe.

2.3

Programmation du pilote de clavier

Le fonctionnement de notre pilote est rgi par deux variables boolennes : e e mode ligne ou interactif, et mode avec ou sans cho ` lcran. e a e

http://fribok.blogspot.com/

3. Pilote pour un disque

423

{ Donnes du pilote } e ModeLigne : un boolen e ModeEcho : un boolen e MaxLigne : un entier > 0 Ligne : un tableau sur 0..MaxLigne 1 de caract`res { le tampon } e tailleligne : un entier 0 DebLigne : un entier sur 0..MaxLigne 1 { pointeur } { Initialisation du pilote de clavier } InitClavier : une action ModeLigne vrai ModeEcho vrai tailleligne 0 Fig. 17.2 Programmation du pilote de clavier - Variables et initialisation

La fonction de contrle du pilote permet de xer le mode de fonctionnement o et de consulter la taille maximale de ligne. On pourrait galement prvoir la possibilit daccder au tableau de core e e e respondance entre numro de touche et code ASCII du caract`re associ, pour e e e changer la signication de certaines touches ; par exemple pour raecter des e touches de fonctions qui nont pas de signication prdnie ` des caract`res e e a e accentus manquant sur le clavier. e Les programmes sont donns Figures 17.2, 17.3 et 17.4. Outre les variables e globales du pilote. la fonction de lecture dune ligne fait appel ` lcriture dun a e caract`re ` lcran lorsquelle doit appliquer lcho. e a e e

3.

Pilote pour un disque

Un disque est un priphrique de stockage de type bloc, cest-`-dire que les e e a changes se font par ensembles de plusieurs octets : les secteurs. e

3.1

Types de supports magntiques e

Les priphriques de stockage magntique utilisent un support dont la sure e e face est enduite dune ne pellicule de matriau magntisable, qui dle sous e e e un lectroaimant : la tte de lecture/criture. La trajectoire de cette tte par e e e e rapport ` la surface du support est appele piste magntique. a e e Linformation est transfre en srie, bit apr`s bit, pendant que la piste ee e e dle ` vitesse constante sous la tte. Elle est reprsente sur le support par une e a e e e succession dinversions de polarit du champ magntique, que llectroaimant e e e dtecte (lecture) ou impose (criture). e e Les disques durs, comme leur nom lindique, utilisent un plateau circulaire

http://fribok.blogspot.com/

424

Pilotes de priphriques e e

{ Quelques types et constantes } Fonction : le type (MODELIGNE, MODEECHO, TAILLEMAX) Auxiliaire : le type entier CompteRendu : le type entier FONCTION INCONNUE : le CompteRendu -1 PARAM INCORRECT : le CompteRendu -2 OK : le CompteRendu 0 ContrleClavier : une Fonction, un Auxiliaire un CompteRendu o { ContrleClavier (f, a) permet de xer des param`tres du pilote ou de les o e interroger, selon la valeur du param`tre f. Elle fournit un compte-rendu, e qui est soit un code derreur (valeur ngative), soit une valeur demande e e lorsquon lutilise pour interroger les donnes internes du pilote. } e lexique code : un CompteRendu ContrleClavier (f, a) : o code OK selon f : f = MODELIGNE : selon a : a = 0 : ModeLigne faux a = 1 : ModeLigne vrai sinon : code PARAM INCORRECT f = MODEECHO : selon a : a = 0 : ModeEcho faux a = 1 : ModeEcho vrai sinon : code PARAM INCORRECT f = TAILLEMAX : code MaxLigne sinon : code FONCTION INCONNUE

EcrireEcran : laction (la donne : un caract`re) e e { achage ` lcran, ` la position courante du curseur, du caract`re donn en a e a e e param`tre } e Fig. 17.3 Programmation du pilote de clavier - Modication et consultation de ltat e du pilote de clavier : criture ` lcran. e a e

http://fribok.blogspot.com/

3. Pilote pour un disque

425

LectureClavier : une action ( la donne MaxCar : un entier > 0, e le rsultat Cha : un tableau sur [0..MaxCar-1] de caract`res, e ne e le rsultat NbCar : un entier) e { MaxCar est le nombre de caract`res ` lire, Cha est le tableau ` remplir et e a ne a NbCar est le nombre de caract`res eectivement lus } e lexique : c : un caract`re ; t, tt : des entiers ; termine : un boolen e e algorithme si n 0 alors NbCar 1 sinon si non ModeLigne { Lecture des MaxCar caract`res demands } e e i parcourant 0..MaxCar 1 rpter t ToucheAppuye() jusqu` t 0 e e e a c NumVersAscii (t) { Conversion en caract`re } e si ModeEcho alors EcrireEcran (c) rpter tt ToucheAppuye() jusqu` tt = t e e e a sinon { Mode ligne } si tailleligne = 0 { tampon non vide. on consomme la ligne ` partir du dbut. } a e NbCar Min (TailleLigne, MaxCar) i parcourant 0 .. NbCar 1 : Cha ne[i] Ligne[DebLigne+i] { le reste sera consomm lors du prochain appel } e DebLigne DebLigne + NbCar ; TailleLigne TailleLigne NbCar sinon { tailleligne = 0, tampon vide - Saisie dune ligne } DebLigne 0 ; Termin faux e tantque non Termin e rpter t ToucheAppuye() jusqu` t 0 e e e a selon t : t = EFFACEMENT { ter le dernier caract`re du tampon, sil existe. } o e si tailleligne >0 tailleligne tailleligne 1 ; NbCar NbCar - 1 si ModeEcho : EcrireEcran (t) t = FINENTREE si ModeEcho : EcrireEcran (t) Ligne[tailleligne] NumVersAscii(t) tailleligne tailleligne + 1 ; NbCar NbCar + 1 Termin vrai e sinon { garder une place pour la n de ligne } si tailleligne MaxLigne 1 alors EcrireEcran (SONNERIE) sinon si ModeEcho alors EcrireEcran (NumVersAscii(t)) Ligne[tailleligne] NumVersAscii(t) tailleligne tailleligne + 1 ; NbCar NbCar + 1 rpter tt ToucheAppuye() jusqu` tt = t e e e a Fig. 17.4 Programmation du pilote de clavier - Fonction de lecture dune ligne

http://fribok.blogspot.com/

426

Pilotes de priphriques e e

rigide anim dun mouvement de rotation uniforme. La tte mobile otte ` e e a la surface du disque (laltitude de vol de la tte est de lordre du micron) e et se dplace radialement pour accder aux direntes pistes, circulaires et e e e concentriques. Les disquettes sont un support mince et souple. Pour viter une usure e inutile, les ttes ne sont plaques sur la surface du mdia magntique que e e e e durant les acc`s ` la disquette. Apr`s quelques secondes dinactivit, les ttes e a e e e sont cartes du support et la rotation de ce dernier est stoppe. e e e Il existe un ordre de grandeur de dirence entre les performances (dbit e e et temps dacc`s) des disquettes et celles des disques durs, lcart tant encore e e e plus important en ce qui concerne la capacit. e

3.2

Description dun disque dur

Un disque dur comporte des pistes circulaires et concentriques. Les pistes sont dcoupes en arcs de cercles appels secteurs. e e e 3.2.1 Notion dunit de transfert et secteurs e

Le secteur correspond ` lunit de transfert entre le disque et la mmoire, a e e de mme que loctet est gnralement lunit dchange entre la mmoire et le e e e e e e processeur. Les secteurs sont gnralement de 256 ou 512 octets ; il existe galement e e e des formats de disquettes avec des secteurs de 128 octets. Les donnes stockes le long dune piste sont spares par des intervalles e e e e permettant dabsorber les petites uctuations de vitesse de rotation. Lacc`s individuel aux octets sur le disque consommerait trop de place e pour les intervalles de sparation. Considrons ` titre dillustration une tr`s e e a e faible variation de vitesse de rotation (0,1%) et de tr`s courte dure (1% de la e e dure dun tour) du disque de 18 Go dont les caractristiques sont dtailles au e e e e paragraphe 3.2.4. Un centi`me de tour correspond ` 10 Kbits et une uctuation e a de 0,1% reprsente 10 bits, soit 1,25 octet. Les intervalles entre 2 octets pour e absorber une telle uctuation reprsenteraient dj` plus de la moiti de la e ea e longueur des pistes. La modication dun octet dun secteur directement sur le disque ntant e pas raliste, les donnes sont lues et crites par secteurs complets : le secteur e e e est lu en entier, loctet est modi dans la copie du secteur en mmoire, et le e e secteur est rcrit sur le disque. ee 3.2.2 Nombre de secteurs par piste

Nous supposons pour simplier lexpos que le nombre de secteurs par e piste est constant. Ceci signie que la frquence de transfert des informations e a ` la tte de lecture/criture est constante et que la densit denregistrement e e e

http://fribok.blogspot.com/

3. Pilote pour un disque

427

maximale autorise par le support nest atteinte que pour la piste intrieure e e (la plus courte). La frquence de transfert pourrait tre adapte ` la longueur des pistes pour e e e a exploiter au mieux le support, les pistes les plus externes ayant plus de secteurs. Le prix ` payer est une lectronique de lecture/criture plus sophistique et une a e e e lg`re complication des algorithmes de localisation des donnes sur le disque, e e e le numro de piste ne pouvant plus tre obtenu par simple division. e e 3.2.3 Plateaux, cylindres et temps dacc`s e

Pour augmenter la capacit des disques de mani`re conomique, on utilise e e e les deux faces des plateaux. On monte galement un ensemble de d plateaux e sur le mme axe de rotation. Les 2d ttes sont portes par un bras unique, elles e e e se dplacent solidairement, et se partagent ` tour de rle lunique lectronique e a o e de lecture/criture : on ne peut accder qu` une face de plateau ` la fois. e e a a Lensemble des pistes accessibles dans une position donne du bras portant e les ttes est appel cylindre. Un cylindre contient 2d pistes (une par tte). Le e e e temps dacc`s piste ` piste est le dlai ncessaire pour dplacer les ttes dun e a e e e e cylindre ` un cylindre adjacent. Le temps dacc`s piste est le dlai ncessaire a e e e pour amener les ttes ` un cylindre donn. On peut en dnir la valeur maxie a e e male (trajet entre les 2 cylindres extrmes) et une valeur moyenne en supposant e une rpartition quiprobable des cylindres de dpart et darrive sur le disque. e e e e Le temps dacc`s secteur est le temps de rotation ncessaire pour amener e e le secteur voulu sous la tte. Sa borne suprieure est la dure dune rotation e e e compl`te et la moyenne le temps dun demi-tour. e 3.2.4 Caractristiques des disques durs et performances e

Lvolution technologique des disques amliore trois caractristiques : e e e la densit linaire denregistrement le long des pistes, do` une augmentae e u tion de la capacit de stockage (par piste), e la densit radiale denregistrement (autrement dit lcart entre deux pistes), e e ce qui ` capacit gale rduit lencombrement du disque et le dbattement a ee e e des ttes et donc le temps dacc`s aux pistes, e e la frquence de fonctionnement de lensemble tte et lectronique de lece e e ture/criture, ce qui permet daugmenter le dbit et la vitesse de rotation, e e par rduction du temps dacc`s secteur. e e Le diam`tre courant des disques est successivement pass de huit pouces ` e e a cinq pouce un quart puis ` trois pouces et demi (standard actuel, soit environ a neuf centim`tres). Ltape suivante la plus probable est deux pouces et demi. e e Voici les principales caractristiques dun disque dur de 1998 : six plateaux e de trois pouces et demi tournant ` 10000 tours/minute, 6996 cylindres (pistes a par plateau), 35566480 secteurs de 512 octets chacun, soit une capacit toe tale de 18 Go, une frquence de transfert de 152 ` 211 Mbits/s, soit environ e a 1Mbit/tr, un temps dacc`s secteur de 2,99 ms, et un temps dacc`s piste ` e e a piste de 0,9 ms (temps acc`s piste moyen = 6 ms, maximal = 13 ms). e

http://fribok.blogspot.com/

428

Pilotes de priphriques e e

3.3

Structure des informations sur un disque dur

Nous supposons par convention que le cylindre de numro 0 correspond ` e a la piste la plus externe. Dans la gestion du mouvement des ttes, nous assimie lerons piste et cylindre. 3.3.1 Structure dune piste

Une piste a un dbut. Le rayon marquant le dbut dune piste est repr e e ee par un index. Dans le cas des disquettes, cet index est un simple trou dans le support, dtect par une fourche optolectronique. e e e Le contenu dune piste est une suite dautant denregistrements que de secteurs. Chaque enregistrement se compose dune en-tte et dun bloc de e donnes (le contenu du secteur). Lors dune criture, seul le bloc de donnes e e e est crit sur le disque, len-tte tant utilise pour reprer le dbut du secteur. e e e e e e Lcriture des en-ttes est eectue une fois pour toutes lors dune opration e e e e dinitialisation appele formatage physique du disque. e Une en-tte contiendra vraisemblablement le numro de piste et le numro e e e de secteur dans la piste. On pourrait en principe se contenter dune simple marque de dbut denregistrement. La piste peut tre connue en comptant les e e dplacements de la tte depuis la piste 0, mais le mcanisme qui dplace la tte e e e e e doit tre parfaitement prcis et able. De mme, le numro de secteur pourrait e e e e tre dtermin en comptant les dbuts denregistrement depuis le dbut de e e e e e piste. 3.3.2 Protection contre les erreurs de lecture/criture e

Les informations stockes sont munies doctets dits de CRC qui permettent e de dtecter dventuelles erreurs de recopie des donnes. Cette technique de e e e dtection derreur, qui ne permet pas de les corriger, est appele contrle de e e o redondance cyclique. Les intervalles avant et apr`s les donnes sont remplis par des motifs bie e naires prdnis tels quune suite de bits ` 1 (sur laquelle lenregistrement e e a prcdent peut dborder lg`rement) suivie dune squence plus courte de bits e e e e e e a ` 0 qui permet de dtecter la n de lintervalle. e La valeur de CRC est calcule ` partir de celle des donnes transfres. Elle e a e ee est ajoute aux donnes lors de lcriture et, lors dune lecture, compare aux e e e e octets de CRC prsents sur le disque. Toute dirence indique bien entendu e e une erreur.

3.4
3.4.1

Fonctionnalits du pilote de disque e


Interface entre le disque et le contrleur de disque o

Les principaux signaux de commande envoys au disque par le contrleur de e o disque sont les suivants : 1) sens du transfert des donnes : lecture ou criture, e e

http://fribok.blogspot.com/

3. Pilote pour un disque

429

si llectronique de pilotage de la tte ne fait pas partie du contrleur ; 2) e e o signal donne ` crire et signal dchantillonnage ; 3)slection de la tte de e a e e e e lecture/criture ` utiliser : face infrieure ou suprieure du plateau et numro e a e e e de plateau ; 4) dplacement de la tte dune piste ; 5) sens du dplacement de e e e la tte ; 6) remise ` 0. e a Les principaux signaux reus par le contrleur sont : 1) signal donne lue c o e et signal dchantillonnage ; 2) signal de prsence en piste 0 ; 3) index/dbut e e e de piste ; 4) disque prt ; 5) erreur, comme par exemple, dplacement de tte e e e au-del` des pistes extrmes. a e Pour une disquette, on trouve de plus une commande de rotation du moteur et de chargement/dchargement des ttes ainsi quun signal dentre indiquant e e e une ventuelle protection contre lcriture. e e Linitialisation ` la mise sous tension consiste essentiellement ` envoyer un a a signal de remise ` 0 ` lunit de disque, attendre que la vitesse de rotation soit a a e stabilise (signal prt du disque), ` ramener la tte sur la piste 0 et ` remettre e e a e a a ` 0 la variable piste courante du pilote. Les param`tres dcrivant le disque (nombre de plateaux, taille dun secteur, e e nombre de secteurs par piste, nombre de pistes) sont galement initialiss ` e e a partir de lEEPROM dcrivant la conguration. La taille de bloc sera initialise e e a ` sa valeur par dfaut (par exemple 1 secteur). e 3.4.2 Interface du pilote de disque vers les couches suprieures e

Vu du syst`me de gestion de chiers (SGF), le disque prsent par le pilote e e e est une suite de blocs numrots ; cest une structure linaire. Un bloc nest pas e e e ncessairement rduit au secteur physique. En gnral, un bloc est une suite e e e e de secteurs, et le nombre de secteurs par bloc est une puissance de 2. Nous appelons adresse physique le numro de bloc. Le nombre de secteurs e ( 1) par bloc est une information du pilote. Vu de la couche suprieure, il est indirent que lunit dacc`s (le bloc) e e e e oerte par le pilote de disque soit eectivement un secteur. Il sut de conna tre la taille du bloc en nombre doctets. Les procdures de lecture et dcriture du pilote permettent au SGF de e e transfrer une suite de blocs dadresses physiques conscutives entre le disque e e et un tableau ou tampon en mmoire. e 3.4.3 Correspondance entre les adresses physiques de blocs et les numros de secteurs et de pistes e

Les procdures de lecture et dcriture de bloc oertes aux couches e e suprieures font appel aux procdures de lecture et dcriture dun secteur e e e fournies par le contrleur de disque. o La premi`re tape consiste ` convertir le numro de bloc en numro global S e e a e e de secteur. Il sut pour cela de le multiplier par la taille T dun bloc exprime e en nombre de secteurs.

http://fribok.blogspot.com/

430

Pilotes de priphriques e e

Le numro global de secteur doit alors tre dcompos en un numro de e e e e e piste (ou plus exactement de cylindre), un numro de tte et un numro de e e e secteur dans la piste slectionne. Le pilote contrle au passage que le numro e e o e global de secteur appartient ` lintervalle lgal de numros de secteurs corresa e e pondant ` la capacit du disque. a e En supposant que toutes les pistes ont le mme nombre de secteurs, il sut e de diviser S par le nombre de secteurs par cylindre. Le quotient de la division donne le numro de piste. Le reste est ` son tour divis par le nombre de e a e secteurs par piste. Le quotient donne le numro de tte et le reste, le numro e e e local de secteur dans la piste. Cette organisation rduit le dplacement des ttes et les temps dacc`s en e e e e groupant les secteurs et les blocs de numros conscutifs sur le mme cylindre e e e ou sur des cylindres adjacents. Le probl`me revient alors ` eectuer une suite de copies entre le secteur de e a numro global S + i et le tampon dadresse A ` ladresse A + i*TailleSecteur e a avec 0 i T .

3.5

Programmation des fonctions du pilote

Les coupleurs ont volu avec les gnrations de circuits et intgr une part e e e e e e croissante de la gestion des disques. Les coupleurs rudimentaires sont devenus des contrleurs de disques qui dchargent le processeur de lessentiel du travail o e (formatage physique des disques, srialisation des octets de donnes, calcul de e e CRC et acc`s aux pistes et aux secteurs). Ce sont des circuits complexes dont e la documentation technique est souvent aussi volumineuse (plusieurs dizaines de pages) que celle des processeurs qui les utilisent. Il est donc hors de question de prsenter ici un contrleur de disque : la e o description de la norme de raccordement scsi peut occuper ` elle seule un livre a entier. Nous nous contenterons donc de donner les grandes lignes de lalgorithme de lecture et dcriture dun secteur, sans prciser la rpartition des rles entre e e e o le logiciel du pilote et le matriel du contrleur. e o 3.5.1 Communication avec le coupleur

On peut sattendre en pratique ` ce que le pilote se contente de transmettre a au contrleur la nature de lopration ` raliser : formatage, acc`s ` une piste, o e a e e a retour ` la piste 0, lecture ou criture dun secteur et les param`tres correspona e e dants, dattendre la n de lopration en testant le registre dtat du contrleur e e o et de grer la reprise du processus en cas derreur. e Dans le cas gnral, le secteur appartient ` une piste dirente de la piste e e a e courante survole par la tte. La dirence entre les deux pistes est calcule et e e e e convertie en autant dimpulsions de dplacement du signal dplacement piste e e dans la direction correspondante. La frquence des impulsions est fonction du e

http://fribok.blogspot.com/

3. Pilote pour un disque

431

temps dacc`s piste du disque. La variable piste courante est mise ` jour. La tte e a e est ensuite slectionne en lecture pour consulter les en-ttes denregistrement. e e e Le numro de piste ventuellement contenu dans la premi`re en-tte passant e e e e sous la tte apr`s le dplacement est compar avec la valeur de la variable piste e e e e courante. Un dsaccord indique une erreur de calibrage du compteur de piste. e Le rem`de consiste ` ramener la tte sur la piste 0, ` remettre ` 0 la variable e a e a a piste courante et ` recommencer le processus depuis le dbut. a e Ltape suivante consiste ` attendre le passage des en-ttes qui dlent sous e a e e la tte et den comparer le numro de secteur avec celui du secteur recherch. e e e Si cette information est absente de len-tte, il sut dattendre le passage du e dbut de piste et de compter les en-ttes ` partir de celui-ci. e e a La dtection de la bonne en-tte prc`de immdiatement le passage du e e e e e bloc de donnes du secteur sous la tte. La tte est commute en criture si e e e e e ncessaire, et le transfert commence. Les donnes sont transfres bit par bit e e ee a ` la cadence impose par la rotation du disque. e La srialisation de chaque octet est eectue par un registre ` dcalage du e e a e contrleur de disque, le processeur se contentant de dposer ou de rcuprer o e e e loctet dans le registre de donnes du contrleur. e o La valeur de CRC est calcule pendant le transfert, une erreur pouvant e tre ventuellement dtecte. Lcriture dun secteur peut tre suivie dune e e e e e e relecture de vrication au tour de piste suivant. e En lecture, lerreur ventuelle peut tre due ` une petite erreur de posie e a tionnement de la tte ou dans le cas dune disquette ` une poussi`re sur le e a e mdia. Lerreur peut tre transitoire et corrige en dplaant la tte puis en la e e e e c e ramenant a nouveau sur la piste pour une nouvelle tentative dacc`s. Au-del` ` e a dune dizaine de tentatives infructueuses, lerreur peut tre considre comme e ee fatale, et la donne irrcuprable. e e e Si un nouveau cycle criture-lecture donne ` nouveau une erreur, le secteur e a (voire toute la piste) est probablement dfaillant et devra tre marqu comme e e e tel et retir de la liste de secteurs utilisables. e Le cadencement des acc`s aux secteurs est dni par la rotation du disque et e e la frquence de transfert des octets simpose ` lensemble processeur/mmoire. e a e Si la cadence de transfert nest pas scrupuleusement respecte, un ou plusieurs e octets seront perdus et le transfert se terminera par une erreur. Lexcution dune boucle de transfert par le processeur peut savrer trop e e lente pour le dbit du disque. Par exemple, une frquence de transfert approxie e mative de 160 Mbits/s reprsente 20 Mo/s, soit 50 ns par octet ; cest ` peu e a pr`s le temps de cycle dune mmoire centrale. e e Pour augmenter le dbit, on transf`re les donnes par mots de 32 ou 64 bits e e e plutt quoctet par octet moyennant les contraintes dalignement dadresses des o tampons, a exploiter les acc`s en mode rafale (Cf. Chapitre 9), et ` coner la ` e a boucle de transfert ` une unit dacc`s direct ` la mmoire (Cf. Chapitre 16). a e e a e

http://fribok.blogspot.com/

432

Pilotes de priphriques e e

3.5.2

Fonctions oertes par le pilote

Nous avons vu au paragraphe 3.4.2 que le disque est organis en blocs, e chaque bloc tant une suite de secteurs. Un bloc est dni par un numro et sa e e e taille. Le pilote ore aux couches suprieures des fonctions dacc`s ` un bloc : e e a
TailleBloc : lentier ... { Taille dun bloc en nombre doctets } NbBlocs : lentier ... { Nombre de blocs du disque } AdPhysique : un entier sur 0 .. NbBlocs 1 Bloc : un tableau sur [0 .. TailleBloc 1] doctets LireBloc : une action (NoB : une AdPhysique, Tampon : un Bloc) { lecture du bloc de numro NoB dans le tableau Tampon } e EcrireBloc : une action (NoB : une AdPhysique, Tampon : un Bloc) { Ecriture du tableau Tampon dans le bloc de numro NoB } e

Dautre part les fonctions de contrle du pilote pourraient tre les suio e vantes : acc`s aux param`tres : taille dun secteur, du disque, nombre de e e secteurs par bloc ; formatage physique du disque ; etc. Certaines fonctions sont spciques des units ` support amovible : marche/arrt rotation, chargee e a e ment/dchargement des ttes, dtection de protection contre lcriture, jection e e e e e du mdia (disquette, CDROM). e

4.

Pour aller plus loin...

Les priphriques ont volu en prenant directement en charge une part e e e e croissante du travail de gestion des entres/sorties assur initialement par le e e processeur. Linterface matrielle de raccordement et la complexit de la proe e grammation des entres/sorties varient normment selon le degr de sophise e e e tication du priphrique raccord. e e e Sous le mme nom et pour les mmes fonctions, on trouve aujourdhui e e des dispositifs mcaniques dots dune interface lectronique rudimentaire ` e e e a laquelle le processeur donne des ordres tr`s lmentaires, tels que : dplacer la e ee e tte de limprimante dun dixi`me de millim`tre ` droite, et dautres disposant e e e a en interne de vritables petits ordinateurs de gestion capable dinterprter des e e requtes de niveau smantique lev, telles que : tracer un cercle et peindre e e e e lintrieur en jaune. On parle dans ce dernier cas de priphriques intelligents. e e e Au coeur de nombreux priphriques on rencontre une puce lectronique e e e intgrant tous les ingrdients (processeur, mmoire vive et mmoire morte) e e e e dun petit ordinateur. Lventail de priphriques concerns est tr`s large, des e e e e e syst`mes de disques jusquaux ensembles clavier/souris. e

http://fribok.blogspot.com/

4. Pour aller plus loin...

433

0x00 0x3E 0x20 0x20 0x3C 0x20 0x20 0x3E 0x00 Fig. 17.5 Reprsentation de la lettre E dans un carr de 9 par 8 pixels e e

4.1

Pilote pour un cran graphique e

Un cran graphique est un cran cathodique constitu par une matrice de e e e points. Dans un cran noir et blanc, ` chaque point est associe une information e a e boolenne signiant si le point est allum ou teint. Pour un cran couleur, ` e e e e a chaque point est associ le codage de sa couleur (sur 8, 16, 24 ou 32 bits). e Lensemble des informations dnissant la valeur de chaque point est stocke e e dans une mmoire appele mmoire dcran. La gestion dune image se fait e e e e ainsi par lecture et criture dans la mmoire dcran. Nous avons parl au e e e e paragraphe 4.5 du chapitre 9 de la gestion optimise de cette mmoire. e e Pour acher un caract`re, le processeur doit passer de son code ASCII ` sa e a reprsentation matricielle, ` recopier dans la mmoire dcran. La gure 17.5 e a e e illustre la reprsentation dun E majuscule dans un carr de neuf par huit e e pixels de ct. oe La forme matricielle a linconvnient dtre volumineuse (neufs octets par e e caract`re dans cet exemple) mais elle permet de mlanger du texte et des dese e sins. Lorsque lcran nache que du texte, la conversion peut tre eectue ` e e e a la vole par le dispositif de rafra e chissement. Cela rduit la taille de la mmoire e e dcran qui ne contient plus alors que les codes des caract`res achs, la table e e e de conversion ASCII vers la forme matricielle tant ge dans une mmoire e e e morte. On parle dcran alphanumrique. e e La connexion de lcran est illustre gure 17.6. La mmoire principale, la e e e mmoire cran et les autres interfaces dentres/sorties sont relies par le bus e e e e mmoire. En bas de la gure se trouvent les ma e tres qui se partagent lacc`s ` e a la mmoire dcran : le processeur et lunit de rafra e e e chissement.

http://fribok.blogspot.com/

434

Pilotes de priphriques e e

Ecran cathodique

Priphriques e e caract`re e

Mmoire dcran e e

Entres/Sorties e

Mmoire principale e

Bus Mmoire e

DMA de Rafra chissement

Acclrateur ee graphique

Processeur

Fig. 17.6 connexion dun cran avec ses mmoires e e

Pour un achage plus performant, les primitives grahiques les plus courantes (dont le trac de segments de droites et de gures gomtriques) peuvent e e e tre cbles (Cf. Chapitre 11) et dlgues ` un circuit acclrateur. Le bus peut e a e ee e a ee galement tre scind en deux parties (csure en pointill) par des connexions e e e e e de type trois tats, pour autoriser des acc`s simultans de lacclrateur grae e e ee phique ` la mmoire dcran et du processeur ` la mmoire principale ou aux a e e a e autres entres/sorties. e Le processeur principal qui gn`re linformation ` acher peut donc adrese e a ser de la mme mani`re la mmoire dcran et la mmoire principale. e e e e e A loppos, lensemble de la gure 17.6 peut constituer un terminal grae phique intelligent. Le dialogue avec le terminal sera en ralit un change e e e entre deux ordinateurs : le syst`me informatique central qui dcide dacher e e quelque chose et lordinateur interne ddi du terminal. Ces deux ordinateurs e e se consid`reront lun lautre comme des priphriques ordinaires de sortie et e e e dentre, transfrant des caract`res. e e e Le processeur du terminal excute une boucle innie consistant ` attendre e a un ordre dachage venant de lordinateur principal et ` eectuer ensuite a lopration correspondante : dessiner un rectangle, allumer tel pixel, eae cer tout lcran, etc. Le processeur principal se contente alors denvoyer les e quelques octets reprsentant lordre graphique correspondant. e La syntaxe de commande des priphriques de sortie graphique peut tre e e e tr`s labore : la complexit et la puissance dexpression du langage poste e e e script, reconnu par de nombreuses imprimantes, sont celles des langages de programmation.

http://fribok.blogspot.com/

Chapitre 18 Vie des programmes


Dans ce chapitre, nous examinons toutes les questions relatives ` la vie a dun programme, depuis sa cration sous forme de chier texte dans un langage e particulier, jusqu` son excution par le processeur dune machine donne. a e e La notion dexcution dun programme recouvre deux techniques e direntes, dont nous verrons quelles ne sont nalement que deux formes de e la mme approche : linterprtation et la compilation. e e En ce qui concerne linterprtation, nous navons vu pour linstant que le e cas du processeur qui interpr`te le langage machine. Il sagit dune ralisation e e matrielle cble de lalgorithme dinterprtation du langage machine e a e e prsent au chapitre 12. Cette ide dcrire un algorithme pour interprter e e e e e les constructions dun langage de programmation est utilise par les envie ronnements dexcution de tous les langages dits interprts, comme tcl, e ee perl, scheme, etc. Ces algorithmes dinterprtation sont alors simplement e programms au lieu dtre cbls. e e a e En ce qui concerne la compilation, lexcution dun programme consiste e en une interprtation, par le processeur, dun programme en langage machine e obtenu dapr`s le texte du programme par des tapes de traduction plus ou e e moins nombreuses et sophistiques. Nous avons dni au chapitre 4 les struce e tures principales des langages de programmation impratifs et tudi, au chae e e pitre 13, la traduction de ce type de langage en langage dassemblage. Ces techniques constituent le coeur des techniques de compilation des langages de haut niveau. La notion de vie dun programme tient compte galement du fait quun e programme est rarement dnitif d`s sa premi`re criture : les tapes dcriture, e e e e e e traduction, excution et correction peuvent tre rptes de nombreuses fois, e e e ee et il convient de rduire le temps ncessaire ` un tel cycle en introduisant e e a la possibilit de traiter sparment les dirents chiers qui composent un e e e e mme programme. Nous avons toujours considr jusque l` quun programme e ee a est constitu dun texte unique, trait de mani`re globale par les outils de e e e traduction successifs. La ralit est plus complexe, et nous dtaillons ici les e e e notions de compilation spare et de code translatable. Dans le paragraphe 3., e e

http://fribok.blogspot.com/

436

Vie des programmes

nous prsentons ldition de liens et nous dcrivons prcisment le format dun e e e e e chier objet translatable. Enn nous abordons la notion de code translatable et le probl`me de sa e production systmatique depuis un programme en langage dassemblage. Il e sagit de produire un programme en langage machine sans prjuger de ladresse e absolue ` laquelle le programme sera plac en mmoire vive pour excution. a e e e Dans le paragraphe 1. nous dnissons prcisment les termes ine e e terprtation et compilation, en donnant des exemples de langages e excuts selon lune ou lautre technique. Dans le paragraphe 2. nous e e rappelons les tapes de traduction des langages de haut niveau vers un e langage machine, et nous introduisons les notions de compilation spare, e e code translatable et dition de liens. e

1.

Interprtation et compilation e

Pour tudier les deux principes dexcution de programmes, par ine e terprtation ou par compilation, nous utilisons un petit langage impratif tr`s e e e simple. Ce langage est toutefois plus riche que les langages machine dont nous avons vu linterprtation aux chapitres 12 et 14. Il comporte en particulier des e structures itratives et conditionnelles. e

1.1

L : un langage impratif simple e

Le langage nore que le type entier relatif, dune seule taille. Il y a trois noms de variables prdnis : "X", "Y" et "Z", et aucun moyen den dclarer e e e de nouvelles. La porte et la dure de vie de ces 3 variables sont globales (le e e langage na pas de structure de blocs). On dispose de trois oprations binaires e notes "+", "*" et "" avec le sens usuel. On peut utiliser dans les oprations e e des constantes enti`res positives. e Comme actions lmentaires, le langage dispose de primitives ee dentre/sortie ` un seul param`tre, et de laectation. Les composie a e tions dactions sont la squence, la boucle while et la structure conditionnelle e if-then-else. Les conditions boolennes du while sont toujours de la forme e variable = 0. Celles du if sont de la forme variable > 0. Les boucles ne sont pas imbriques, les structures conditionnelles non plus. En revanche on peut e trouver une boucle dans une structure conditionnelle ou vice-versa. La squence dactions est implicite : chaque action occupe une ligne. On e a droit ` des lignes de commentaires, dont le premier mot est rem. Les a entres/sorties se notent : Read ... et Write ..., o` les pointills doivent e u e tre remplacs par le nom dune des variables prdnies. La structure while e e e e comporte un marqueur de n : le mot-cl endwhile tout seul sur sa ligne. De e mme la structure conditionnelle comporte une ligne endif (voir lexemple de e la gure 18.1 pour la notation des conditions. Laectation est note par une e

http://fribok.blogspot.com/

1. Interprtation et compilation e

437

read X read Y Z <-- X - Y while Z rem signifie : rem tant que Z non nul if Z rem signifie Z > 0 then X <-- X - Y else Y <-- Y - X endif Z <-- X - Y endwhile write X

! X dans l0, Y dans l1, Z dans l2 call read ; nop add g0, o0, l0 call read ; nop add g0, o0, l1 while : subcc l0, l1, l2 be endwhile ; nop ble else ; nop subcc l0, l1, l0 ba endif ; nop else : subcc l1, l0, l1 endif : ba while ; nop endwhile : add g0, l0, o0 call write ; nop

Fig. 18.1 (a) Exemple de programme L (b) Programme sparc correspondant.

instruction de la forme : ... expr, o` les pointills doivent tre remu e e placs par le nom dune des variables prdnies, et o` lexpression expr est e e e u forme dun seul oprateur, appliqu ` des oprandes qui sont soit des noms e e ea e de variables, soit des notations de constantes enti`res positives en dcimal. e e La gure 18.1 donne un exemple de texte du langage L et un programme en langage dassemblage sparc correspondant.

1.2

Excution par compilation e

Si lon utilise la technique de compilation, on doit traduire le texte dun programme en langage machine dun processeur dont on dispose. Supposons que lon compile notre langage simple vers du langage machine sparc. Le compilateur ralise lanalyse lexicale et syntaxique du texte du programme e (dcoupage en mots et vrication de la conformit des phrases ` lordre ime e e a pos), puis traduit les structures de haut niveau en branchements. On obtient e un programme du type dcrit gure 18.1-(b). Ce programme est ensuite trae duit en langage machine sparc par loutil dassemblage. Le rsultat est stock e e dans un chier objet (Cf. Chapitre 19) qui est ensuite charg en mmoire vive e e pour excution (Cf. Chapitre 20), et lanc, cest-`-dire interprt directement e e a ee par le processeur de la machine (Cf. Chapitre 14). Ecrire un compilateur, cest-`-dire le programme qui ralise les phases a e danalyse et de traduction, est une tche tr`s bien tudie maintenant, au a e e e moins pour les langages ` structure classique comme celui que nous avons a tudi au chapitre 4. On trouvera dans [CGV80, WM94] un expos complet e e e des techniques de compilation.

http://fribok.blogspot.com/

438

Vie des programmes

1.3
1.3.1

Excution par interprtation e e


Solution de base

Nous donnons gures 18.2 et 18.3 lalgorithme dinterprtation du langage e L. Pour programmer en langage L sur une machine ` processeur M, il faut a programmer lalgorithme dinterprtation, par exemple dans un langage de e haut niveau comme ada, puis compiler ce programme pour le langage machine du processeur M, le charger et le lancer. A lexcution, ce programme e dinterprtation travaille sur un programme du langage L, pris dans un chier e ou tap directement au clavier par le programmeur. Pendant cette excution, e e le texte de programme en langage L est trait comme une donne par le proe e gramme interpr`te, alors quil est peru comme un programme par lutilisateur e c humain qui la crit. On voit ici que la distinction entre programmes et donnes e e nest pas intrins`que. e Nous avons omis dans lalgorithme dinterprtation la phase de lecture du e chier texte du programme. Cette phase de lecture, dans un chier ou au clavier, est suppose eectue compl`tement avant que ne commence lexcution. e e e e Elle fournit le programme sous la forme dun tableau de lignes, chaque ligne tant dcoupe en mots (il y a au plus 5 mots sur une ligne dans la syntaxe du e e e langage que nous tudions ; un commentaire peut tre considr comme ayant e e ee 2 mots). Les textes comportant des lignes de plus de 5 mots ont t rejets. ee e On suppose que le programme lu tient dans le tableau de MAXLIGNE lignes. Par exemple, la lecture de la ligne X <-- X - Y du programme dexemple donn ci-dessus fournit : Prog[10] = < X, <--, X, -, Y > . e Une telle phase de lecture sapparente ` la phase danalyse lexicale et syna taxique dans un compilateur. Noter toutefois que le travail est perdu dune excution ` lautre. Lalgorithme fourni gure 18.3 est la phase dexcution e a e proprement dite, par parcours du tableau de lignes. 1.3.2 Prise en compte des boucles imbriques e

Dans le langage L prsent ci-dessus, nous avons suppos que les structures e e e itratives ne sont pas imbriques. Cette hypoth`se justie lalgorithme tr`s e e e e simple dinterprtation des structures itratives, pour lequel une seule adresse e e de dbut de boucle DebBoucle sut. Si les structures itratives peuvent tre e e e imbriques ` un niveau quelconque, il faut prvoir une pile dadresses de ree a e tour. Dautre part la recherche du mot-cl "endwhile" (lorsque la condition de e boucle devient fausse) est plus complique. Il faut en eet parcourir les lignes e du texte en comptant les while et en dcomptant les endwhile. e 1.3.3 Prtraitements divers e

La lecture du chier et le stockage dans un tableau des lignes dcoupes e e en mots constitue dj` un traitement pralable ` lexcution. Le dcoupage en ea e a e e mots des lignes qui constituent le corps dune boucle est eectu une seule fois. e

http://fribok.blogspot.com/

1. Interprtation et compilation e

439

Un autre prtraitement intressant consiste ` associer ` chaque instruce e a a tion "while" le numro de la ligne du "endwhile" correspondant. Cela vite e e la boucle tantque Mot1 de Prog[CP] = endwhile : CP CP + 1 de lalgorithme dinterprtation. e On pourrait bien sr liminer les commentaires d`s la phase de lecture du u e e chier, et imaginer de nombreux autres prtraitements, qui vitent de rpter e e e e du travail lors des multiples excutions dune ou plusieurs instructions du proe gramme.

1.4
1.4.1

Dnitions et exemples e
Compilation

On appelle compilation un mcanisme dexcution de programmes dans e e lequel les analyses lexicale, syntaxique et de typage, ainsi que la transformation du programme en un langage de plus bas niveau, sont eectues par e des prtraitements, avec rsultats intermdiaires stocks dans des chiers pere e e e sistants. En compilation, les chiers produits contiennent toute linformation ncessaire a lexcution du programme dorigine. On peut excuter un proe ` e e gramme si lon a perdu le chier source, ou mme si on ne la jamais eu. e En gnral on rserve aussi ce mot au cas o` la forme nale produite par e e e u loutil dit de compilation est un langage machine destin ` tre excut par le eae e e processeur correspondant. Les langages Pascal, ada, C, C++ sont habituellement compils ; rien e nempche toutefois de programmer pour ces langages des algorithmes dine terprtation. e 1.4.2 Interprtation et programmation incrmentale e e

On appelle interprtation un mcanisme dexcution de programmes dans e e e lequel on repart du texte source ` chaque excution (et donc il ne faut sura e tout pas le perdre !) ; il y a ventuellement des prtraitements eectus sur le e e e texte du programme avant excution, et des formes intermdiaires stockes en e e e mmoire vive pendant lexcution. e e On confond souvent le fait que le langage soit interprt avec le fait que ee lenvironnement de programmation autorise la programmation incrmentale. e Dans un environnement de programmation scheme ou lisp, par exemple, on ajoute des fonctions de mani`re interactive avant de les appeler. De mme, les e e langages de commandes tudis au chapitre 20 sont prvus pour la programe e e mation incrmentale, le langage PostScript galement (loutil dachage e e ghostview est bas sur linterpr`te ghostscript qui permet de programe e mer directement en langage PostScript et dobserver le rsultat). e La programmation incrmentale implique lexcution par interprtation, e e e mais linverse est faux. Les langages scheme, lisp, tcl, postscript, html, ml, prolog sont

http://fribok.blogspot.com/

440

Vie des programmes

lexique MAXLIGNE : lentier 100 numligne : le type entier sur 1..MAXLIGNE Texte : le type squence de caract`res e e { On suppose lexistence doprations manipulant des textes, comme e lgalit note =, la dirence note =, etc. De plus on note les e e e e e constantes texte avec des guillemets. } Ligne : le type < Mot1, Mot2, Mot3, Mot4, Mot5 : des Textes > Prog : un tableau sur [1..MAXLIGNE] de Lignes M1, M2, M3, M4, M5 : des Textes CP : un entier sur 1..MAXLIGNE+1 { Le compteur programme, cest-`-dire le numro de la ligne de linsa e truction en cours dinterprtation. } e DebBoucle : un entier sur 1..MAXLIGNE vX, vY, vZ : des entiers tmp1, tmp2 : des entiers ; cond : un boolen e N : le numro de la derni`re ligne du texte lu e e

ValeurDeNom : un Texte un entier { ValeurDeNom (t) est dnie pour un texte t parmi les noms de vae riables autorises X, Y ou Z, et donne la valeur de la variable e correspondante } ValeurDeNom (t) : selon t : t = X : vX t = Y : vY t = Z : vZ AectParNom : une action (la donne t : un Texte, la donne a : un entier) e e { pour les textes t parmi les noms de variables autorises X, Y ou e Z, AectParNom (t, a) aecte ` la variable correspondante (vX, vY a ou vZ) la valeur a } AectParNom (t, a) : selon t : t = X : vX a t = Y : vY a t = Z : vZ a ValeurDeNombre : un Texte un entier 0 { ValeurDeNombre (t) est lentier not t en dcimal. } e e Fig. 18.2 Lexique de lalgorithme dinterprtation e

http://fribok.blogspot.com/

1. Interprtation et compilation e

441

CP 1 tantque CP = N+1 M1 Mot1 de Prog[CP] selon M1 : M1 = rem : CP CP + 1 M1 = read : Lire (tmp) ; AectParNom (Mot2 de Prog[CP], tmp) ; CP CP + 1 M1 = write : Ecrire (ValeurDeNom (Mot2 de Prog[CP])) ; CP CP + 1 M1 = X ou M1 = Y ou M1 = Z : M3 Mot3 de Prog[CP] ; M4 Mot4 de Prog[CP] M5 Mot5 de Prog[CP] tmp1 selon M3 M3 = X ou M3 = Y ou M3 = Z : ValeurDeNom (M3) sinon ValeurDeNombre (M3) tmp2 selon M5 M5 = X ou M5 = Y ou M5 = Z : ValeurDeNom (M5) sinon ValeurDeNombre (M5) tmp selon M4 M4 = + : tmp1 + tmp2 M4 = * : tmp1 * tmp2 M4 = : tmp1 tmp2 AectParNom (M1, tmp) ; CP CP + 1 M1 = while : tmp ValeurDeNom (Mot2 de Prog[CP]) cond (tmp = 0) si cond alors DebBoucle CP ; CP CP + 1 sinon tantque Mot1 de Prog[CP] = endwhile : CP CP + 1 CP CP + 1 { on est sur la ligne qui suit la ligne du endwhile } M1 = endwhile : CP DebBoucle M1 = if : cond (ValeurDeNom (Mot2 de Prog[CP])) > 0 si cond alors CP CP + 1 sinon tantque Mot1 de Prog[CP] = else : CP CP + 1 CP CP + 1 M1 = then : CP CP + 1 M1 = else : tantque Mot1 de Prog[CP] = endif : CP CP + 1 M1 = endif : CP CP + 1 sinon : Ecrire (Erreur : instruction inconnue :, M1) Fig. 18.3 Algorithme dinterprtation e

http://fribok.blogspot.com/

442

Vie des programmes

habituellement interprts. Pour certains dentre eux il existe galement un ee e compilateur, qui permet dacclrer les excutions. Cest le cas par exemple de ee e ml ou scheme. 1.4.3 Compilation dynamique

Dans le cas de linterprtation, on peut imaginer un prtraitement qui e e consisterait ` produire ` partir du texte de programme lquivalent en asa a e sembleur ou en langage machine. Tant que cette forme intermdiaire nest pas e stocke dans un chier persistant, on peut considrer quil sagit toujours dun e e mcanisme dinterprtation. On trouve parfois le nom de compilation dynae e mique pour parler de ces situations. 1.4.4 Emulation

Nous avons vu au chapitre 12 la notion de compatibilit de familles de e processeurs. Si les deux machines sont tr`s direntes, le constructeur fournit e e un mulateur du langage machine n sur la machine n + 1. Un mulateur est e e un programme, crit dans un langage quelconque, par exemple C, et compil e e sur la nouvelle machine, avec le nouveau compilateur C. Ce programme est un interpr`te du langage machine n. Le code objet des anciens programmes nest e donc plus directement interprt par un processeur, mais par un programme, ee lui-mme compil et excut sur un autre processeur. e e e e Cest le cas des macintosh : Apple fournit un mulateur de 68000 parmi e les programmes du logiciel de base fourni avec les machines ` PowerPC. a 1.4.5 Code intermdiaire e

Pour certains langages de haut niveau, il est dicile de dire si lexcution e est assure par un mcanisme dinterprtation ou de compilation. En eet, le e e e programme est dabord compil dans un code intermdiaire stock dans un e e e chier, lequel est ensuite interprt. Cest le cas du pascal UCSD compil en ee e P-code, de prolog et java. Si lon construit une machine dont le langage machine est exactement le code intermdiaire, on dispose dun mcanisme dexcution par compilation, e e e au sens dni plus haut. Sinon le code intermdiaire doit tre interprt par e e e ee programme.

2.

Compilation spare et code translatable e e

Nous revenons sur le mcanisme dexcution par compilation, pour prciser e e e les probl`mes ` rsoudre dans le cas raliste o` les programmes ne sont pas e a e e u traits globalement par les outils de traduction. Lexpos est bas sur un e e e

http://fribok.blogspot.com/

2. Compilation spare et code translatable e e

443

/* FICHIER main.c */ include <stdio.h> include "fact.h" void main () { long R ; short n ; printf("Donnez un entier : ") ; scanf ("%hd", &n) ; R = Fact (n) ; printf("Fact(%d)=%d", n, R) ; }

/* FICHIER fact.h */ extern long Fact (short) ; /* FICHIER fact.c */ include "fact.h" long Fact(short x) { if (x==0) return 1 ; else return x * Fact (x-1) ; }

Fig. 18.4 (a) Factorielle en C

exemple tr`s simple crit en C ; le lecteur familier dun langage de ce type e e transposera facilement le discours dans le langage de son choix.

2.1

Un exemple en C

Nous donnons gure 18.4 un exemple de programme C dcompos en trois e e chiers : main.c qui contient le programme principal, lequel fait appel ` une a fonction Fact non dnie dans ce chier-l` ; fact.c qui contient la dnition e a e compl`te de la fonction Fact (prol et corps) ; fact.h qui contient le prol e de la fonction Fact. Ce chier dit dinterface est inclus dans le chier du programme principal, qui peut ainsi tre compil indpendamment du chier e e e qui contient le corps de la fonction Fact. Le chier dinterface est galement inclus dans le chier qui contient la e dnition compl`te de la fonction Fact ; cette redondance de dnitions pere e e met de faire vrier au compilateur la conformit entre la version de Fact du e e chier fact.c et la version publie dans fact.h ` lusage dautres chiers utilie a sateurs comme main.c. Noter toutefois que linclusion de fact.h dans fact.c nest pas obligatoire ; cest une prcaution du programmeur, pour viter des e e erreurs dues au mcanisme tr`s rudimentaire qui sert de support ` la programe e a mation modulaire en C. Un langage comme Ada ore en revanche un support compl`tement contrl. e oe Les paragraphes suivants dtaillent la structure de lexemple. e

2.2

Notion de compilation spare e e

La compilation spare consiste ` raliser la compilation dun programme, e e a e en traitant sparment direntes portions de ce source qui, par consquent, e e e e peuvent mme tre ranges dans des chiers dirents. e e e e

http://fribok.blogspot.com/

444

Vie des programmes

chier source 1

outil

1 outil

chier source 2 concatnation e de textes

outil

2 chier outil

Fig. 18.5 Schma gnral de compilation spare e e e e e

La gure 18.5 donne le schma gnral de la compilation spare, dans le e e e e e cas de deux chiers source. On tend facilement au cas de n chiers source. e Si le programme est constitu de deux chiers source 1 et 2, la compilation e spare fournit des outils et tels que le diagramme commute : e e = ((1), (2)) = ((1, 2)) Autrement dit, on obtient le mme rsultat en compilant sparment les deux e e e e chiers 1 et 2 grce ` loutil et en rassemblant les rsultats grce ` loutil a a e a a , quen compilant grce ` loutil le chier obtenu par simple concatnation a a e des chiers source 1 et 2. Pour comprendre ce schma de principe et les contraintes qui portent sur e la dnition des outils , ou sur la structure du format des chiers 1, 2, e il faut se poser 3 questions, dont les rponses sont lies : e e Etant donn un programme donn dans un seul chier source, comment e e sparer ce programme en plusieurs chiers source distincts, de telle sorte e quils puissent tre traits indpendamment lun de lautre par loutil ? e e e Quel type dinformation doit-on trouver dans le format des chiers 1, 2, pour quil soit possible de dnir loutil ? e Que gagne-t-on ` mettre en oeuvre un tel mcanisme, ncessairement plus a e e compliqu que la compilation centralise ? e e Nous rpondons ci-dessous aux trois questions, sans supposer tout de suite e que le format produit par loutil correspond ` du langage machine. Cela a permet de comprendre la compilation spare indpendamment de la produce e e tion de code translatable. En eet les deux probl`mes sont conceptuellement e indpendants, mme sils sont en gnral traits conjointement dans les envie e e e e ronnements de programmation usuels. Lexamen des trois questions ci-dessus conduit galement ` tudier la notion e ae de porte des noms dans un langage de programmation. e

http://fribok.blogspot.com/

2. Compilation spare et code translatable e e

445

2.2.1

Sparation dun programme et notion dinterface e

La possibilit de sparation dun programme en plusieurs chiers dpend e e e du langage source dans lequel les programmes sont crits, et du format des e chiers 1, 2. Si la transformation se rduit ` liminer les commentaires, par exemple, il e ae sut de dcouper le programme sans couper les commentaires, et le schma de e e compilation spare fonctionne : se contente de concatner les textes 1, 2. e e e Toutefois il nest pas intressant de dvelopper un tel mcanisme simplee e e ment pour raliser llimination des commentaires de mani`re spare (voir e e e e e aussi la rponse ` la question Que gagne-ton ?). e a Supposons donc que le format des chiers 1, 2 soit plutt du langage o dassemblage (ou du langage machine ventuellement assorti dinformations e supplmentaires, voir rponse ` la question suivante), et considrons un langage e e a e source du type de celui tudi au chapitre 4. e e Il para peu probable que la compilation spare soit ralisable si lon t e e e coupe un chier source au milieu du corps dune fonction ou dune procdure : e le principe de gnration de code pour les langages ` structure de blocs tudi e e a e e au chapitre 13 produit un prologue et un pilogue tr`s symtriques pour chaque e e e bloc, et il est donc ncessaire de disposer de ce bloc compl`tement en une seule e e fois. On imagine facilement, en revanche, que le programme puisse tre coup e e entre deux procdures ou fonctions ; nous avons montr au chapitre 13, pae e ragraphe 3.2, comment produire du code indpendamment pour les dirents e e blocs. Il sut ensuite de concatner les textes en langages dassemblage (ou e les programmes en langage machine) obtenus pour les dirents blocs. e En ralit la compilation dun bloc nest pas possible de mani`re e e e compl`tement indpendante des autres portions. Pour gnrer le code dun ape e e e pel de procdure, il est ncessaire de conna le prol exact de cette procdure, e e tre e pour raliser correctement le passage de param`tres en tenant compte de la e e reprsentation en mmoire des types des param`tres formels et du mode de e e e passage des param`tres. e Toutefois il nest pas ncessaire de conna le corps de la procdure ape tre e pele. Cette distinction entre prol et corps de fonction conduit ` la notion e a dinterface de portion de programme. Sur lexemple du calcul de la fonction factorielle donn en C ci-dessus, e linterface fact.h reprend la ligne de dclaration de la fonction Fact. Ce chier e est inclus dans le programme principal main.c : cela sut pour savoir compiler lappel de Fact. Le prol dune fonction est linformation ncessaire et susante ` done a ner aux utilisateurs ventuels de cette fonction. La mme distinction entre e e dnition compl`te dun objet du programme, et information rduite ncessaire e e e e aux utilisateurs, peut tre tudie pour dautres classes dobjets dans les lane e e gages de programmation : constantes, variables, types, etc.

http://fribok.blogspot.com/

446

Vie des programmes

2.2.2

Rassemblement de codes

Supposons que lon a produit du code sparment pour deux portions de e e programme source. Il faut maintenant savoir rassembler les direntes portions e de code pour constituer le code du programme global. Reprenons lexemple du dcoupage du programme entre les procdures et e e fonctions pour un langage dans lequel les programmes sont des collections de fonctions. Cest le cas de C ; le programme principal nest pas intrins`quement e dirent des autres fonctions du chier, et doit simplement sappeler main. e Cela signie simplement que le choix du point dentre dans le code produit ` e a partir du programme C se fait par convention sur un nom de fonction rserv. e e En Pascal, en revanche, la syntaxe du langage demande dexpliciter le programme principal, dans un bloc begin...end non nomm. Le code produit e pour ce bloc a la mme structure que celui produit pour une procdure ordie e naire, et cest le point dentre du programme. e La situation typique de compilation spare correspond au cas dune fonce e tion dnie dans le chier source 1, et utilise dans le chier source 2, comme e e la fonction Fact de lexemple en C. Linclusion du chier fact.h donnant le prol de la fonction Fact, dans le chier main.c, a servi dans la phase , pour gnrer correctement la squence dappel ` la fonction. e e e a Supposons que lon a obtenu deux chiers en langage dassemblage qui contiennent : lun une instruction du genre call Fact, lautre une portion de code ` ltiquette Fact : . a e Pour obtenir le code du programme global, il sut de concatner les deux e chiers en langage dassemblage obtenus. Puisque ce ne sont que deux collections de fonctions, le chier concatn reprsente lunion des deux collections, e e e et lordre na pas dimportance. Un probl`me peut toutefois survenir lorsque les deux chiers comportent e chacun une dnition dune tiquette L :. En eet, il est incorrect, dans un e e texte en langage dassemblage, de dnir deux fois la mme tiquette. e e e Ces considrations sur les noms des tiquettes (qui correspondent aux noms e e des objets du programme en langage de haut niveau) nous am`nent ` dnir e a e la notion de porte des noms dans les langages de programmation. e 2.2.3 Notion de porte des noms e

Le conit de noms ventuel rencontr lors de la fusion de deux chiers e e produit par loutil suppose que les tiquettes dnies dans les chiers 1, 2 e e sont visibles partout. Certaines dentre elles proviennent de noms dobjets du programme source, en particulier les tiquettes qui rep`rent le dbut du code des fonctions et e e e procdures. Dautres ont t cres de toutes pi`ces pour coder les structures e e e ee e conditionnelles et itratives (Cf. Chapitre 13, Figure 13.1). e Pour ces derni`res, il est particuli`rement ennuyeux quelles soient visibles e e partout. En eet, la compilation spare dun programme risque fort de proe e

http://fribok.blogspot.com/

2. Compilation spare et code translatable e e

447

duire les mmes noms pour le codage des structures de contrle, et ces noms e o seront identis par loutil de fusion . e Pour les tiquettes provenant de noms dobjets du programme source, cela e peut para moins contraignant : il est ` la charge du programmeur de ne tre a pas dnir deux fois la mme fonction dans deux chiers dirents du mme e e e e programme. Toutefois, si lon imagine un programme vraiment tr`s grand, crit e e par une quipe de 50 programmeurs, il est fort probable que deux dentre eux e auront crit une fonction max pour des besoins locaux. Dans un langage comme e Ada, C ansi, Pascal, on peut cacher la dnition de la fonction max dans une e autre fonction, et le probl`me est rduit : pour ces fonctions locales, le mme e e e mcanisme de porte que pour les variables locales de procdures sapplique. e e e Le probl`me subsiste pour les fonctions principales, qui ne sont incluses dans e aucune autre. Ces probl`mes trouvent une solution dans la structure de modules des lane gages de programmation, implmente de mani`re plus ou moins propre et e e e contrle selon les langages. oe Lide de base, que lon retrouve dans le mcanisme rudimentaire de e e dnition de porte par chier en C, consiste ` permettre un regroupement e e a dobjets du langage dans un module. A lintrieur dun module, des objets e sont dnis et localement utilisables. Pour tre visibles de lextrieur (dans les e e e autres modules), ils doivent tre exports. Il devient donc possible de dnir e e e deux fonctions max dans deux modules dirents, du moment quon ne les exe porte pas. Linterface dun module rcapitule les objets dnis dans ce module e e et utilisables ` lextrieur. a e En C, la notion de module correspond ` la structure de chier. Ce nest a pas le cas en Ada par exemple, o` un mme chier peut contenir plusieurs u e modules ou packages. En C, tout objet dni dans un chier est par dfaut e e export. Pour cacher sa dnition ` lextrieur, il faut prxer sa dclaration e e a e e e par le mot-cl static. En langage dassemblage, cest souvent linverse : toute e tiquette dnie est locale au chier, sauf exportation explicite. Dans les lane e gages dassemblage que nous avons utiliss dans cet ouvrage, lexportation e explicite se fait par une directive .global (voir par exemple lexemple donn e Figure 12.9 du chapitre 12). Ce mcanisme rudimentaire de masquage des noms ne saurait tre quali e e e de support ` la programmation modulaire. Un inconvnient majeur est limposa e sibilit de partager un nom entre deux chiers (ou modules) dun programme, e sans le partager galement avec tous les autres : la directive dexportation est e tous azimuts. 2.2.4 Avantages de la compilation spare e e

Rcapitulons les aspects tudis ci-dessus, pour rpondre ` la troisi`me e e e e a e question : que gagne-t-on ` mettre en oeuvre un mcanisme de compilation a e spare ? e e

http://fribok.blogspot.com/

448

Vie des programmes

On gagne du temps de compilation. Attention, cet argument nest valable quen raison des multiples compilations que subit un mme programme au e cours de sa vie. Pour une compilation unique, le schma de compilation e spare ne peut pas tre plus rapide quun schma de compilation global, e e e e puisquil g`re des informations supplmentaires (voir dtails ci-dessous). Il e e e est donc plus prcis de dire que lon gagne du temps sur un ensemble de n e compilations : si lon modie le chier 1 sans toucher au chier 2, il sut de recompiler le chier 1 et de raliser ltape pour obtenir le programme e e excutable ` jour. Pour que largument tienne, il faut galement que la e a e dure dune tape soit tr`s infrieure ` celle dune tape . e e e e a e Le schma de compilation spare permet aussi de dvelopper des proe e e e grammes complexes qui utilisent certaines portions de programmes directement sous forme compile. On y gagne la notion de biblioth`que, distribuable e e sous forme compile seulement. Ainsi tout syst`me unix est fourni avec de e e nombreuses biblioth`ques de fonctions utilisables dans des programmes C, e dont les fonctions dentres/sorties printf et scanf, ou encore les fonctions e mathmatiques cos, sin, etc. Une biblioth`que de fonctions est compose e e e de deux chiers : un chier objet qui contient le code des procdures et e fonctions, et un chier texte dit dinterface, qui donne les prols de ces procdures et fonctions. La gure 18.6 donne un exemple obtenu par la e commande man cos sur un syst`me unix standard. e Le schma de compilation spare autorise galement la programmation e e e e multilangages : si lon dispose, pour deux langages dirents L1 et L2, des e traducteurs , on peut rassembler les chiers produits et obtenir un programme excutable global, dont certaines parties taient ` lorigine crites e e a e en L1, et dautres en L2. Cela implique toutefois de fortes contraintes sur la structure de L1 et L2, qui doivent tre compilables dans le mme fore e mat. Nous utilisons beaucoup dans les parties V et VI la programmation multilangages C et langage dassemblage. Enn le schma propos permet de dnir une notion de porte des noms e e e e dobjets par chier (mme si ce nest pas ` proprement parler une bonne e a ide). Le diagramme de la gure 18.5 ne commute donc pas rellement : e e si lon dnit deux fonctions de mme nom dans les chiers source 1 et 2, e e le chemin par concatnation de textes rel`ve une erreur ; en revanche, le e e chemin par compilation spare ne rel`ve pas derreur, ` condition que les e e e a deux fonctions soient caches dans leurs chiers respectifs, cest-`-dire non e a exportes. e

2.3

Traduction des tiquettes en adresses et notion de e code translatable

La notion de code translatable et son intgration dans le schma gnral e e e e de compilation spare prsent ci-dessus suppose que lon xe le format des e e e e

http://fribok.blogspot.com/

2. Compilation spare et code translatable e e

449

Mathematical Library

cos(3M)

NAME cos - cosine function SYNOPSIS cc [ flag ... ] file ... -lm [ library ... ] include <math.h> double cos(double x) ; DESCRIPTION The cos() function computes the cosine of x, measured in radians. RETURN VALUES Upon successful completion, cos() returns the cosine of x. If x is NaN or +Inf, NaN is returned.
Fig. 18.6 Fonction cos de la biblioth`que mathmatique. Le paragraphe SYNOPSYS e e indique successivement : la commande compilation et dition de liens ` utie a liser pour spcier lutilisation de la biblioth`que lm ; la ligne dinclusion e e du chier dinterface, ` placer dans tout chier utilisateur ; le prol de la a fonction cos.

chiers produits par loutil . Il sagit de langage machine, cest-`-dire dun a format obtenu apr`s traduction des tiquettes ou symboles du langage dasseme e blage en adresses. Le choix de la nature des informations prsentes dans un chier objet transe latable est le rsultat dun compromis entre deux contraintes : 1) la phase e doit eectuer le maximum de travail, et la phase le minimum, pour que largument de gain de temps tienne ; 2) si lon veut pouvoir placer le programme nimporte o` en mmoire, il est impossible de raliser, dans , la u e e totalit des transformations qui vont du chier source au code binaire directee ment excutable. e Nous examinons le probl`me de la traduction des tiquettes en adresses, e e et la notion dutilisation relative ou absolue dun symbole, sur un exemple en langage dassemblage pour processeur sparc (Figure 18.7). 2.3.1 Utilisation relative dun symbole

Considrons le cas de linstruction ba debut. Il sagit dune utilisation relae tive du symbole debut (Cf. Chapitre 12, paragraphe 1.4.3). En ce qui concerne la traduction des symboles en adresses, cela signie simplement que le symbole debut nest utilis, dans linstruction ba debut, que pour sabstraire dun e calcul explicite de la distance entre linstruction de branchement et sa cible. Lassembleur compte les instructions et remplace ba debut par ba 4 (on compte en nombre dinstructions). La notion dutilisation relative de symbole est une proprit intrins`que ee e

http://fribok.blogspot.com/

450

Vie des programmes

.data D : .long 42 ! une donne de 32 bits initialise ` la valeur 42 e e a .text debut : sethi %hi (D), %r1 ! couple dinstructions destin e or %r1, %lo(D), %r1 ! ` ranger la valeur sur 32 bits de a ! ladresse reprsente par D dans r1 e e ld [%r1], %r2 ! chargement depuis la mmoire e ! du mot dadresse r1 ! ici r2 doit contenir 42. nop ba debut ! branchement inconditionnel nop Fig. 18.7 Utilisation relative ou absolue dun symbole

dune instruction du langage machine considr. Le processeur sparc a deux ee instructions relatives : les branchements et les appels de procdures call. e Toutes les autres instructions utilisant des symboles en font une utilisation absolue. Le processeur 68000 a une instruction de branchement relatif, similaire ` a celle du sparc. En revanche linstruction jsr de saut ` un sous-programme a est absolue. 2.3.2 Utilisation absolue dun symbole

Le cas des instructions sethi %hi (D), %r1 et or %r1, %lo(D), %r1 est plus compliqu. Toutes deux sont des utilisations absolues du symbole D. De e mme linstruction add %r1, X, %r2 est une utilisation absolue de X. Attene tion, il ny a pas dindirection implicite, et il sagit bien dajouter au registre r1 la valeur dadresse associe au symbole X ; toutefois, cette valeur e est ncessairement tronque ` 13 bits puisque cest la taille du champ valeur e e a immdiate dans le codage de linstruction add du sparc. e Du point de vue de la traduction des symboles en adresses, cela signie que le symbole D doit tre remplac par ladresse ` laquelle se trouvera la donne e e a e 42, en mmoire vive, lors de lexcution du programme. e e Cette adresse ne peut tre connue ` lassemblage que si le chargeur (Cf. Chae a pitre 20) dcide de toujours installer les programmes ` excuter ` une adresse e a e a xe A connue de lassembleur ; dans ce cas, lassembleur peut remplacer le symbole D par une valeur de la forme A + d, o` d reprsente la position relative u e de la donne D dans le code produit pour ce programme. Ici, en supposant que e les donnes sont places apr`s les instructions, d = 6 4 octets, puisquil y a e e e 6 instructions codes sur 4 octets avant la donne repre par D. e e ee Toutefois, dans les syst`mes multitches, le chargeur g`re la mmoire de e a e e

http://fribok.blogspot.com/

2. Compilation spare et code translatable e e

451

A A+4 A+8 A+12 A+16 A+20 A+24

0000001100 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?sethi %hi (D), %r1 ??? 1000001000010000011 ? ? ? ? ? ? ? ? ? ? ? ?or %r1, %lo(D), %r1 ? 11000100000000000100000000000000 ld [%r1], %r2 10000000000000000000000000000000 nop (add %g0, %g0, %g0) 00010000101111111111111111111100 ba debut (ba -4) 10000000000000000000000000000000 nop (add %g0, %g0, %g0) 00000000000000000000000000101010 .long 42 Fig. 18.8 Contenu de la mmoire ` lexcution e a e

mani`re disperse, et ladresse de chargement dun programme donn nest e e e connue quau dernier moment. Dans le programme en langage machine produit par loutil et stock dans un chier persistant, le symbole D na donc pas e encore t remplac par ladresse absolue qui lui correspond, et qui dailleurs ee e dpend de lexcution. e e 2.3.3 Contenu de la mmoire ` lexcution e a e

La gure 18.8 montre ce que doit tre le contenu de la mmoire vive lors de e e lexcution du programme de la gure 18.7. Chaque instruction est code sur e e 32 bits. Les donnes sont supposes places en mmoire apr`s les instructions : e e e e e on trouve en derni`re ligne le codage en binaire de la valeur 4210 , sur 32 bits. e La colonne de gauche donne les adresses, en supposant que le programme a t install en mmoire ` ladresse A. Linstruction ba debut a t enti`rement ee e e a ee e code, le champ dplacement contient le codage en complment ` 2, sur 22 e e e a bits, de la valeur 4. La question intressante est : que contiennent les deux champs de bits nots e e par des ? ? Linstruction sethi comporte un champ de 22 bits qui contient une valeur immdiate. sethi %hi(D), %r1 signie quil faut utiliser les 22 e bits de poids fort (high) de la valeur dadresse reprsente par D comme vae e leur immdiate. Or D = A + 24, donc hi(D) = hi(A + 24). De mme, or e e %r1, %lo(D), %r1 signie quil faut placer dans le champ de 13 bits rserv e e a ` une valeur immdiate, les 10 bits de poids faible (low) de la valeur dadresse e reprsente par D, ce qui vaut : lo (A + 24). e e Ces deux valeurs dpendent de ladresse de chargement A, et les deux e champs reprsents par des ? ne peuvent donc pas tre remplis correctement e e e tant que lon ne conna pas A. t 2.3.4 Fichier objet translatable et algorithme de translation dadresses

Le chier objet translatable est une tape intermdiaire entre le programme e e en assembleur donn gure 18.7 et le contenu de la mmoire vive lors de e e

http://fribok.blogspot.com/

452

Vie des programmes

lexcution de ce programme. La phase qui va du programme en assembleur au e chier translatable est appele assemblage, elle laisse des trous dans le codage e binaire des instructions et des donnes. La phase qui va du chier translatable ` e a limage mmoire du programme est appele chargement/lancement (Cf. Chae e pitre 20). Outre les aspects syst`me dallocation de mmoire, le mcanisme e e e de chargement/lancement applique lalgorithme de translation dadresses que nous dnissons ici, et qui a pour but de remplir les trous. e Pour permettre ` la procdure de chargement/lancement de complter les a e e trous, le chier translatable doit contenir des informations additionnelles appeles donnes de translation, qui dcrivent o` se trouvent les instructions ou e e e u les donnes incompl`tes (les trous) et comment les complter le moment venu. e e e Pour chaque trou, le chier objet translatable fournit une donne de transe lation. Intuitivement, pour lexemple tudi plus haut, linformation ncessaire e e e est la suivante : il existe un trou de 22 bits cadr ` droite dans le mot dadresse ea A + 0, ` remplir avec les 22 bits de poids forts de la valeur (A + 24), nots a e hi22(A + 24). Il existe un trou de 13 bits cadr ` droite dans le mot dadresse ea A + 4, ` remplir avec les 10 bits de poids faibles de la valeur (A + 24), nots a e lo10(A + 24). Une donne de translation comporte donc les informations suivantes : 1) la e position du trou ` remplir et sa taille, donne de mani`re relative au dbut du a e e e programme ; 2) le mode de calcul de la valeur ` utiliser : cest une fonction de a A, dans laquelle appara une constante (ici 24) connue ` lassemblage (cest t a le dcalage de la position du symbole D par rapport au dbut du programme). e e Le mode de calcul est donc compos dune constante K et dune expression e dans laquelle faire intervenir la constante K et A. Les donnes de translation sont bien sr codes sur un format xe ni, et e u e il est hors de question de coder des modes de calcul (des expressions) quelconques, comme par exemple hi((A + 24) 42). En ralit, lensemble des e e expressions ncessaires est enti`rement dni par le jeu dinstructions de la e e e machine considre. Par exemple, pour sparc, les expressions ncessaires pour ee e complter tous les trous possibles dans les instructions et les donnes sont au e e nombre de 32. Il sut de 5 bits pour les coder. Ce codage est une convention syst`me, connue de tous les outils qui produisent des chiers objets translae tables, et de la procdure de chargement/lancement qui les interpr`te. e e Nous donnons Figure 18.9 une bauche dalgorithme de translation e dadresses pour sparc, en faisant appara les deux expressions ncessaires tre e dans lexemple de la gure 18.7 et la donne de translation ncessaire au codage e e de linstruction add %r1, X, %r1.

http://fribok.blogspot.com/

2. Compilation spare et code translatable e e

453

lexique ModeDeCalcul : le type (reloc hi22, reloc lo10, reloc13, ...) { Type numr reprsentant les expressions de calcul. Les noms sont les e e e e noms eectifs utiliss dans les syst`mes ` base de sparc. En anglais, transe e a lation se dit relocation } DonneTranslation : le type < e position : un entier 0, mode : un ModeDeCalcul, const : un entier > { La taille du trou est implicitement code dans le mode de calcul ; la position e du trou est donne en adresses dinstructions (donc cest un multiple de 4) e car le codage des instructions sparc est tel que les trous sont toujours cadrs ` droite. } e a D : une DonneTranslation e Masque22pF : lentier ((222 1) 210 ) { 22 bits ` 1 en poids Forts, 10 bits ` 0 en poids faibles. Pour les dtails de a a e construction, revoir le paragraphe 4. du chapitre 3, ` propos du lien entre a larithmtique et les boolens. } e e Masque10pf : lentier 210 1 Masque13pf : lentier 213 1 { 10 (ou 13) bits ` 1 en poids faibles, 22 (ou 19) bits ` 0 en poids Forts } a a algorithme { Le chier objet translatable a t copi en mmoire ` partir de ladresse A, ee e e a instructions dabord, donnes ensuite, comme sur la gure 18.8. On parcourt e les donnes de translation du chier objet. } e D parcourant les donnes de translation du chier : e selon D.mode : { On modie un mot de 32 bits dans la mmoire, ` ladresse e a A+D.position, en superposant un autre mot de 32 bits, grce ` une a a opration OR bit ` bit. Voir chapitre 12, paragraphe 1.4.1 } e a D.mode = reloc hi22 : MEM [A + D.position] 4 MEM [A + D.position] OR (((A + D.const) ET Masque22pF) / 210 ) D.mode = reloc lo10 : MEM [A + D.position] 4 MEM[A + D.position] OR ((A + D.const) ET Masque10pf) D.mode = reloc 13 : MEM [A + D.position] 4 MEM [A + D.position] OR ((A + D.const) ET Masque13pf ....

Fig. 18.9 Algorithme de translation dadresses pour sparc.

http://fribok.blogspot.com/

454

Vie des programmes

3.
3.1

Format des chiers objets translatables et dition de liens e


Edition de liens, dnition e

Ldition de liens consiste ` prendre un ensemble de chiers translatables e a et ` tenter de les rassembler pour en faire un chier unique excutable. Ce a e nest pas exactement la spcication de loutil de la gure 18.5. Loutil e ralise en fait la fusion de deux chiers objet translatables, et donne un chier e du mme type. Une erreur peut survenir lors de la fusion en cas de double e dnition dun symbole. e Ldition de liens peut tre vue comme un mcanisme de fusion n-aire (ou e e e bien binaire, et on fusionne les chiers deux par deux), suivie dune tape de e vrication : pour que lensemble des chiers fournis constitue eectivement e un programme excutable, il ne doit plus y avoir de symbole indni (un appel e e dune fonction qui nest dnie nulle part, par exemple). Noter que lorsquon e utilise une fonction en biblioth`que, la commande ddition de liens spcie e e e la biblioth`que, cest-`-dire que cette biblioth`que est prise en compte dans e a e lensemble des chiers ` rassembler. a Ldition de liens de n chiers F1 , ..., Fn peut tre ralise par lalgorithme e e e e suivant (mme si ce nest pas tr`s raliste) : e e e
F (F1 , F2 ) F (F , F3 ) ... F (F , Fn ) { Des erreurs de double dnition peuvent survenir lors des fusions } e Si le chier F contient des symboles indnis alors e ERREUR sinon Transformer F en chier excutable e { ce nest pas tout ` fait le mme format que les chiers objet translatables, a e voir dtails ci-dessous. } e

On peut considrer que tout chier soumis ` la procdure de chargee a e ment/lancement est complet, cest-`-dire quil ne comporte plus de symboles a indnis. e

3.2

Format dun chier objet translatable

Comme signal plus haut, un chier objet translatable est constitu essene e tiellement de langage machine. Nous avons dni au paragraphe prcdent les e e e besoins en informations supplmentaires relatives ` la translation dadresses. e a Il nous faut ici complter ces informations par la table des symboles. En e eet, en tudiant loutil au paragraphe 2.2.2, nous avons suppos que le e e

http://fribok.blogspot.com/

3. Format des chiers objets translatables et dition de liens e

455

format produit par est du langage dassemblage, dans lequel on retrouve facilement les noms des fonctions sous forme de symboles (ou tiquettes). La e table des symboles sert ` tablir le lien entre les noms du programme dorigine ae et des adresses dans le programme en langage machine correspondant. Les noms sont indispensables ` la fusion de deux chiers en langage machine ; cest a le seul moyen de mettre en correspondance une instruction issue de lappel dune procdure F avec ltiquette qui marque le dbut du code de F. Cest e e e aussi dans la table des symboles quon trouve linformation relative ` la porte a e des noms, ncessaire lors de la fusion. e Nous dtaillons ci-dessous la structure dun chier objet. Nous nous inse pirons des chiers objet solaris, mais lexpos vaut pour la plupart des e syst`mes. Un chier objet est compos de sections dont les formats di`rent. e e e On y trouve au dbut une en-tte puis, dans un ordre x mais quelconque, les e e e zones TEXT et DATA, les zones de translation TEXT et DATA, la table des symboles et la table des cha nes. Nous dtaillons ces diverses zones ci-dessous. e 3.2.1 En-tte e

Un chier objet translatable commence par une en-tte qui constitue en e quelque sorte la carte du chier. On y trouve en particulier lindication sur la taille de toutes les autres sections, qui permet dy accder directement par des e dcalages (Cf. Chapitre 19). e On y trouve aussi la taille de la zone BSS du programme dorigine. La section BSS des programmes en langage dassemblage est analogue ` la seca tion DATA, mais on ne fait quy demander la rservation dune certaine zone e mmoire, sans dclarer de valeur initiale. La seule information ncessaire dans e e e le chier objet est donc la taille de cette zone, alors que pour la zone DATA il faut stocker le codage de toutes les valeurs initiales. Au moment du chargement/lancement, lallocation de mmoire est faite en tenant compte des besoins e de la zone BSS. Enn len-tte indique le point dentre du programme, cest-`-dire o` se e e a u trouve linstruction correspondant au dbut du programme principal, parmi e toutes les instructions de la zone TEXT. Le point dentre est donn comme e e un dcalage par rapport au dbut de la zone TEXT. e e 3.2.2 Zones TEXT et DATA

La zone TEXT contient le codage binaire des instructions du programme. Elle comporte ventuellement des trous, comme dj` vu sur lexemple du pae ea ragraphe 2.3. La zone DATA contient le codage binaire des valeurs initiales spcies e e dans le programme en assembleur. Elle peut galement comporter des trous. e Dans les exemples que nous avons vus jusque l`, il ny a jamais dutilisation a de symbole en zone DATA, et donc pas de probl`me dutilisation absolue. La e syntaxe de lassembleur autorise pourtant des dclarations de zones DATA de e

http://fribok.blogspot.com/

456

Vie des programmes

la forme :
X: Y: .long .long .long .long 42 212 X Y - X

! utilisation absolue du symbole X ! utilisation relative des symboles Y et X

A lexcution, le mot de 32 bits situ en troisi`me position dans la zone des e e e donnes initialises contiendra ladresse eective correspondant au symbole X. e e Cest une utilisation absolue de X, et lassembleur ne peut produire le mot de 32 bits correct. En revanche, lexpression Y - X est une utilisation relative des deux symboles X et Y : la dirence des adresses reprsentes par ces deux symboles ne e e e dpend pas de ladresse de chargement du programme, et peut tre calcule e e e lors de lassemblage ; elle vaut 4. Une telle dclaration en zone DATA utilise e les symboles de la mme mani`re que linstruction de branchement ba debut e e de lexemple tudi plus haut. e e 3.2.3 Table des symboles et table des cha nes

Pour conserver linformation relative aux noms des symboles, le chier comporte une table des cha nes et une table des symboles. La table des cha nes est un tableau de caract`res o` sont ranges, les unes e u e apr`s les autres et spares par des 0, toutes les cha e e e nes de caract`res qui e sont des noms dtiquettes (et non pas les cha e nes de caract`res qui sont des e donnes du programme, dclares par des directives .asciz "machaine" dans e e e la zone DATA, et dont le code ASCII est prsent dans la zone DATA du e chier objet). Isoler la table des cha nes permet de ne stocker quune fois une cha lorsquelle est le nom de plusieurs symboles. Nous expliquons au ne paragraphe 3.3 comment un chier objet translatable peut contenir plusieurs symboles de mme nom. e La table des symboles est une collection de n-uplets dcrivant chacun un e symbole, rangs dans un tableau indic de 1 ` NombreSymboles (lordre nest e e a pas pertinent, toutefois). Chaque n-uplet est cod sur un format xe (de lordre e de 12 octets). Le type correspondant est donn gure 18.10. e Lensemble Zone et Porte permet de dterminer exactement le statut du e e symbole considr (Figure 18.11). ee 3.2.4 Donnes de translation TEXT et DATA, gnralisation e e e

Le chier objet contient deux zones distinctes pour les donnes de transe lation relatives aux instructions, et pour celles relatives aux donnes. La zone e BSS ntant pas initialise, il ny a pas de trous dans son codage, et donc pas e e de donnes de translations associes. e e Au paragraphe 2.3.4 nous avons donn la structure des donnes de transe e

http://fribok.blogspot.com/

3. Format des chiers objets translatables et dition de liens e

457

ZoneDef : le type < zTEXT, zDATA, zBSS, zNONDEF > Symbole : le type < Nom : un entier > 0, { cest un indice dans la table des cha nes. Le nom du symbole est la cha comprise entre cet indice inclus et le prochain 0. } ne Zone : un ZoneDef, { zone o` appara la dnition de ltiquette dans le programme en u t e e langage dassemblage, ou valeur zNONDEF si ltiquette nest pas dnie e e dans le chier considr, mais seulement utilise, par exemple dans une e e e instruction call. } Porte : un boolen, { voir dtails ci-dessous. } e e e Valeur : un entier 0 { Lcart dadresses entre le dbut de la zone TEXT et la position o` e e u est dnie ltiquette. Dans lexemple de la gure 18.7, 24 est la valeur e e du symbole D. Lorsque Zone=zNONDEF, Valeur est non pertinent. } > Fig. 18.10 Type dun lment de la table des symboles ee

Porte e Zone Zone = zNONDEF Zone = zNONDEF

vrai (1) Le symbole est dni loe calement, et export e (3) Le symbole nest pas dni localement, il peut e tre pris dans un autre e chier (import) e

faux (2) Le symbole est dni loe calement, non export e Le symbole nest pas dni e localement, il ne peut pas tre pris dans un autre e chier. Ce cas nexiste pas normalement.

Fig. 18.11 Porte et zone de dnition des symboles e e

Modedecalcul : le type (reloc hi22, reloc lo10, reloc13, ...) DonneTranslation : le type < e position : un entier 0, mode : un ModeDeCalcul, numsymb : un entier sur 1..NombreSymboles { numro du symbole qui appara dans linstruction ` trou. on peut e t a consulter la table des symboles pour savoir si le symbole est dni et e dans ce cas consulter sa valeur, qui correspond ` la constante du type a prsent gure 18.9. } e e > Fig. 18.12 Type dune donne de translation gnrale e e e

http://fribok.blogspot.com/

458

Vie des programmes

lation dans le cas des symboles connus ` lassemblage, cest-`-dire dnis dans a a e le chier. Les utilisations de symboles indnis sont une autre source de trous dans e le code gnr par lassembleur. Ainsi une instruction de branchement relatif e ee ba labas produit un mot de 32 bits dont les 22 bits de poids faibles forment un trou, lorsque le symbole labas nest pas dni localement. e Pour reprer ce trou, et dcrire comment le complter plus tard, on utilise e e e galement une donne de translation. Le type dune donne de translation e e e gnrale est donn gure 18.12. e e e

3.3

Mise en oeuvre de ldition de liens e

Nous tudions le probl`me de ldition de liens en bauchant un algorithme e e e e de fusion de deux chiers objets translatables, et rendant un nouveau chier objet translatable. Les diteurs de liens rels travaillent sur n chiers simule e tanment, mais cela ne fait que compliquer lalgorithme. e 3.3.1 Structure du chier fusionn e

Considrons trois chiers objets 1, 2, et 3, tels que 3 soit la fusion des chiers e 1 et 2. Notons respectivement Hi, Ti, Di, TTi, TDi, TSi, TCi len-tte, la zone e TEXT, la zone DATA, la zone de translation TEXT, la zone de translation DATA, la table des symboles et la table des cha nes du chier numro i. e Le chier 3 est en gros la concatnation, zone par zone, des chiers 1 et 2. e Plus prcisment : e e T3 est la concatnation de T1 et T2 ; certains trous sont ventuellement e e remplis. Le chier fusionn comporte toutes les instructions du chier 1, et e toutes celles du chier 2. Lordre na pas dimportance, mais il faut dcider e o` se trouve le point dentre. Loutil de fusion peut prendre en param`tre u e e le nom dune tiquette qui dsigne le point dentre global. e e e De mme, D3 est la concatnation de D1 et D2 ; certains trous sont e e ventuellement remplis. Le chier fusionn comporte toutes les donnes du e e e chier 1 et toutes celles du chier 2. Il ny a pas de probl`me de point e dentre. e TT3 est bas sur lunion des donnes de translation TEXT du chier 1 e e (TT1) et de celles du chier 2 (TT2). Toutefois certaines donnes de transe lation peuvent tre utilises pendant la fusion pour complter certains trous e e e en zone T3, et disparaissent donc. La situation est similaire pour TD3 par rapport ` TD1, TD2. a La table des symboles TS3 est obtenue dapr`s TS1 et TS2 de la mani`re e e suivante : les noms de symboles qui napparaissent que dans lun des chiers sont conservs tels que ; pour un nom de symbole qui appara dans les deux e t chiers, il faut considrer, pour chaque symbole, les 3 cas de la gure 18.11. e

http://fribok.blogspot.com/

3. Format des chiers objets translatables et dition de liens e

459

Dautre part un chier objet peut comporter plusieurs symboles de mme e nom. Lanalyse dtaille de tous les cas possibles donne la structure de e e lalgorithme de fusion. La table des cha nes TC3 est une vritable union des deux tables de cha e nes TC1 et TC2, en ne conservant quun seul exemplaire dans le cas o` une u mme cha appara dans les deux chiers. e ne t Enn len-tte H3 rcapitule les tailles des direntes zones, et donne le e e e point dentre du chier fusionn. e e 3.3.2 Que se passe-t-il lors de la fusion ?

Eets de dcalages La fusion des deux chiers a tout dabord des eets de e dcalage, puisque les symboles sont numrots indpendamment dans les deux e e e e chiers, et leurs valeurs calcules indpendamment : e e Lunion des tables de symboles produit une nouvelle numrotation globale e des symboles, quil faut reporter dans les donnes de translation qui y font e rfrence. ee La concatnation des zones TEXT (resp. DATA) a pour eet de dplacer les e e tiquettes du deuxi`me chier par rapport au dbut de lensemble. Il faut e e e donc modier la valeur des symboles du deuxi`me chier. Aux symboles e dnis en zone T2, on ajoute la taille de T1 ; aux symboles dnis en zone e e D2 on ajoute la taille de T1, plus la taille de D1, etc. Dans le chier 3, les valeurs des symboles sont des dcalages par rapport au dbut de la e e concatnation T1 T2 D1 D2. e La concatnation des zones TEXT (resp. DATA) a aussi pour eet de e dplacer les trous par rapport au dbut de lensemble. Il faut donc mettre e e a ` jour les positions de trous dans les donnes de translation. Cela peut se e faire globalement au dbut. e Identication de symboles Un cas intressant de fusion survient lorsquun e trou peut-tre rempli. Cela se produit par exemple si le chier 1 comporte e une instruction call F avec F non dni, et le chier 2 une dnition de F e e exporte. On a donc un symbole de nom F dans chacun des chiers. Dautre e part linstruction call F est incompl`te dans le chier 1, et il y a dans TT1 e une donne de translation qui dcrit ce trou. e e En considrant les portes relatives de ces deux symboles, la fusion e e dtermine quil sagit en fait du mme symbole, et ralise lidentication. Cela e e e consiste ` ne garder quun lment dans la table de symboles globale. Dautre a ee part, puisque linstruction call F fait une utilisation relative du symbole F, et que celui-ci est connu dans le chier fusionn, linstruction call F incompl`te e e qui provenait du chier 1 peut maintenant tre complte. La donne de transe ee e lation du chier 1, plus les informations sur le symbole donnes par TS2 sufe sent pour cela.

http://fribok.blogspot.com/

460

Vie des programmes

Noter que si la mme situation se prsente, mais avec une instruction utie e lisant F de mani`re absolue dans le chier 1, il y a bien identication des e symboles, mais il subsiste une donne de translation pour cette instruction, et e elle ne sera complte quau chargement. ee Il y a galement identication de symboles lorsque par exemple les deux e chiers importent la mme fonction, qui nest dnie dans aucun deux. Elle e e le sera peut-tre dans un troisi`me chier, qui sera fusionn avec ceux-l` plus e e e a tard. Plusieurs symboles de mme nom dans un chier Les chiers obtee nus par assemblage dun programme en langage dassemblage ont exactement un symbole par nom. Pour bien comprendre lalgorithme de fusion, qui peut sappliquer incrmentalement, il faut remarquer quun chier objet obtenu par e fusion peut contenir deux symboles de mme nom, qui di`rent par leurs autres e e attributs (zone de dnition, valeur). Ce phnom`ne est d au mcanisme de e e e u e masquage des noms par chier : si lon fusionne deux chiers objet contenant chacun un symbole de nom i dni et non export, le chier global comporte e e deux symboles de nom i. Notons toutefois que si plusieurs symboles ont le mme nom, ce sont ncessairement des symboles dnis localement et non exe e e ports. Dans les donnes de translation du chier, les symboles sont rfrencs e e ee e par numro, pas par leur nom. e De mani`re gnrale, pour un nom de symbole i donn, un chier objet peut e e e e contenir : un nombre quelconque de symboles de nom i dnis localement et e non exports (cas 2 de la gure 18.11) ; au plus un symbole de nom i visible, e cest-`-dire dni localement et export (cas 1), ou bien non dni et import a e e e e (cas 3). 3.3.3 Ebauche dalgorithme

Nous donnons ci-dessous la structure principale de lalgorithme de fusion, qui est enti`rement guid par lunion des tables de symboles : on commence e e par recopier enti`rement TC1 et TS1 dans TC et TS, puis lon examine les e symboles de TS2 un par un.
recopier TS1 dans TS ; recopier TC1 dans TC { Parcours de la table des symboles du chier 2 } i2 parcourant 1..Taille(TS2) : n2 TS2[i2].Nom N TC2[n2] { la cha de TC2 commenant ` lind. n2 } ne c a Z2 TS2[i2].Zone ; P2 TS2[i2].Porte ; V2 TS2[i2].Valeur e

La gure 18.13 dtaille lanalyse par cas selon les portes respectives des e e symboles communs aux deux chiers.

http://fribok.blogspot.com/

3. Format des chiers objets translatables et dition de liens e

461

si N nappara pas parmi les cha t nes de TC1 { Cas simple, on ajoute la cha N ` TC (` la suite, soit n lindice), et le ne a a symbole TS2[i] ` TS, ` la suite, en le renumrotant. Il conserve sa porte et sa a a e e zone de dnition. Son nom vaut maintenant n, indice dans la table de cha e nes globale. Sa valeur est dcale ; il faut aussi reporter son nouveau numro dans e e e TT et TD (Cf. Paragraphe 3.3.2). } sinon { N appara parmi les cha t nes de TC1. Il y a dans TS1 un ou plusieurs symboles portant ce nom N. Cest le cas intressant. Par examen de P2, Z2 et e des portes et zones de dnition de ces symboles, on dtermine que faire de e e e TS2[i]. } si non P2 { symbole dni et cach dans le chier 2 } e e { Aucune identication ne peut avoir lieu avec les symboles portant le mme e nom en provenance du chier 1. On ajoute le symbole TS2[i], en le renumrotant et en dcalant sa valeur. Il faut aussi reporter son nouveau e e numro dans TT et TD. } e sinon { cest-`-dire symbole visible } a { Aucune identication ne peut avoir lieu entre le symbole TS2[i] et les symboles de mme nom cachs dans le chier 1. Il faut donc dterminer sil e e e existe un symbole visible (dni et export ou bien import) de mme nom e e e e dans le chier 1, que lon notera S1. } sil nexiste pas S1 { on ajoute le symbole TS2[i], en le renumrotant et en dcalant sa e e valeur. Il faut aussi reporter son nouveau numro dans TT et TD. } e sil existe S1 = < n1, Z1, vrai, V1 > { Il existe deux symboles de mme nom visibles dans les deux chiers. e Tout dpend maintenant du fait quils sont dnis ou non. } e e selon Z1, Z2 : Z1 = zNONDEF et Z2 = zNONDEF : { Il y a identication des symboles. Par exemple les deux chiers importent une fonction qui sera dnie dans un autre, non encore e fusionn. Le symbole reste non dni, import. Il na pas de valeur. e e e Il est renumrot par rapport au numro quil avait dans le chier e e e 2, et il faut reporter le nouveau numro dans TT, TD. } e Z1 = zNONDEF et Z2 = zNONDEF : ERREUR : double dnition e (Z1 = zNONDEF et Z2 = zNONDEF) ou (Z1 = zNONDEF et Z2 = zNONDEF) : { Cest LE cas intressant de fusion. Lun des chiers importe e un symbole, qui se trouve tre dni et export par lautre. Il y e e e a identication. Le symbole devient dni export. Sa valeur est e e calcule dapr`s la valeur quil a dans le chier o` il est dni. e e u e On reporte son nouveau numro dans les donnes de translation. e e De plus, les utilisations relatives du symbole dans le chier qui limporte peuvent tre rsolues, et cela supprime des donnes de e e e translation. } Fig. 18.13 Structure de lalgorithme de fusion

http://fribok.blogspot.com/

Chapitre 19 Syst`me de gestion de chiers e


Dans ce chapitre nous nous intressons au probl`me de la gestion des infore e mations qui doivent tre places en mmoire secondaire. Nous avons vu dans e e e le chapitre 16 comment connecter un priphrique dentre/sortie ` un ordinae e e a teur, et dans le chapitre 17 comment raliser linterface entre ce priphrique e e e et les programmes du syst`me dexploitation. Les priphriques de mmoire e e e e secondaire sont les disques, les bandes magntiques, etc., que lon peut lire et e crire un nombre inni de fois. e La mmoire secondaire est utilise pour le stockage de donnes dont la dure e e e e de vie doit tre suprieure ` la dure de vie des programmes qui les manipulent, e e a e et mme ventuellement suprieure ` la dure de vie du syst`me informatique e e e a e e qui les a stockes. Dans le premier cas on trouve par exemple les chiers source, e objet et excutable dun programme de lutilisateur (voir chapitre 18). Dans e le deuxi`me cas il peut sagir des chiers dune base de donnes, qui doivent e e tre conservs et transmis dun environnement informatique (machine, syst`me e e e dexploitation) ` un autre. a Mise ` part lexigence sur leur dure de vie, les donnes que lon peut vouloir a e e stocker sur des supports permanents ne sont pas de nature intrins`quement e dirente de celle des donnes manipules par les programmes. Nous avons e e e tudi au chapitre 4 un petit langage de description des structures de donnes e e e usuelles, et comment coder et installer dans les lments du tableau MEM ee tout type de donne structure. Les lments du tableau reprsentent les plus e e ee e petits blocs de la mmoire accessibles par le processeur (en gnral des octets, e e e voir chapitre 15). Les supports de mmoire secondaire imposent galement des e e contraintes physiques sur la taille du plus petit bloc accessible (dun ordre de grandeur dirent toutefois : 256 octets pour un disque par exemple, voir e chapitre 17). Lanalogie sarrte l`. En eet, abstraire la mmoire vive dune machine e a e par un tableau est lgitime, puisque la mmoire vive ore lacc`s direct par une e e e adresse. En revanche certains supports de mmoire secondaire norent pas e lacc`s direct : cest le cas des bandes magntiques. e e Lorsquon sintresse ` linstallation des donnes dans les blocs accessibles e a e

http://fribok.blogspot.com/

464

Syst`me de gestion de chiers e

dune mmoire secondaire, il faut tenir compte des acc`s que lon dsire raliser e e e e sur ces donnes : si lon a besoin de lacc`s direct, un support ` acc`s squentiel e e a e e ne convient pas. Chacun sait quil est plus facile dcouter le troisi`me mouvee e ment dune symphonie sur un disque compact que sur une cassette audio. Il existe une deuxi`me dirence essentielle entre les donnes dun proe e e gramme (qui sont stockes quelque part en mmoire vive pendant lexcution e e e du programme) et les donnes stockes sur un support de mmoire secondaire. e e e Il sagit du mcanisme dacc`s aux informations par leur nom, autrement dit e e du lien entre un nom externe connu de lutilisateur et une adresse en mmoire. e Dans le cas des programmes, les informations sont ranges dans des vae riables nommes par lutilisateur ; la correspondance entre le nom et ladresse e dans le tableau MEM est calcule par le compilateur, et prise en compte lors e de la fabrication du chier excutable, dans lequel on peut oublier les noms e (sauf si lon dsire eectuer du dbogage symbolique, voir chapitre 18). e e Dans le cas des donnes prsentes sur un support de mmoire secondaire, le e e e nom externe est un nom de chier, dans la terminologie usuelle. La correspondance entre ce nom externe et les adresses des donnes du chier sur le support e est tablie par exemple lors de la cration dun chier, par le logiciel qui soce e cupe de la gestion du support. Cette correspondance est une information dont la dure de vie doit tre au moins gale ` celle des donnes considres : elle e e e a e ee doit donc tre stocke sur le support lui-mme. A nimporte quel autre ene e e droit (mmoire vive de la machine, que ce soit dans un programme syst`me e e ou dans un programme utilisateur), elle aurait une dure de vie infrieure ` e e a celle des donnes sur le support de mmoire. e e On appelle syst`me de chiers lensemble des donnes stockes sur un supe e e port de mmoire secondaire (disque, bande, ...). Ces donnes comprennent e e bien sr les donnes de lutilisateur, mais aussi des informations quil na pas ` u e a conna tre, sur lorganisation de ce support de mmoire : correspondance entre e noms externes et adresses, o` reste-t-il de la place libre ?, etc. u On appelle syst`me de gestion de chiers (SGF dans la suite) lensemble e des programmes responsables de linstallation dun syst`me de chiers sur un e support de mmoire secondaire. Le SGF ralise linterface entre lutilisateur, e e qui peut dsigner ses donnes par des noms de chiers par exemple, et le logiciel e e pilote de priphrique qui ralise les lectures/critures eectives sur le support e e e e de mmoire. e Notons que ces deux notions correspondent aussi bien ` la gestion des a chiers utilisateurs sur un syst`me mono ou multi-utilisateurs ordinaire, qu` la e a manipulation des chiers de stockage dun SGBD (Syst`me de Gestion de Bases e de Donnes). Lorganisation des informations sur les supports secondaires est e toutefois plus complique dans le cas des SGBD, pour lesquels les contraintes e de temps dacc`s sont primordiales (et le volume des donnes tel que lon ne e e peut pas systmatiquement recopier les donnes en mmoire vive avant de e e e les traiter). Nous tudierons dans ce chapitre le cas dun syst`me de chiers e e

http://fribok.blogspot.com/

1. Situation du syst`me de gestion de chiers e

465

Autres informations associes aux chiers e (droits dacc`s, dates...) e Adresses logiques Adresses physiques Structuration hirarchique de lensemble de chiers e Le syst`me de gestion de chiers (SGF) : e Structuration des informations Adressage logique

Logiciel

Traduction des adresses logiques en adresses physiques Pilote de priphrique e e Circuit contrleur de priphrique o e e

Matriel e
Disque

Bande

Fig. 19.1 Situation gnrale du syst`me de gestion de chiers e e e

utilisateurs ordinaire. Nous prcisons tout dabord dans le paragraphe 1. la position du syst`me e e de gestion de chiers, entre le matriel spcique (disques, bandes et e e leurs contrleurs, Cf. Chapitre 16) et la vision des informations que peut o avoir lutilisateur ` travers un interpr`te de commandes textuel (Cf. Chaa e pitre 20). Le paragraphe 2. rappelle la notion dadresse physique hrite e e du pilote de priphrique (Cf. Chapitre 17) et dnit les notions de chier e e e et dadresse logique. Le paragraphe 2.3 tudie la fonction principale dun e syst`me de gestion de chiers, cest-`-dire limplantation des chiers sur e a les supports physiques. Le paragraphe 4. dcrit comment associer aux e chiers des informations comme les noms externes ou la date de cration. e Finalement, nous tudions dans le paragraphe 5. quelques fonctions de e base dun syst`me de gestion de chiers, comme le formatage dun disque e ou la cration de chier. e

1.

Situation du syst`me de gestion de chiers e

La gure 19.1 illustre la situation du syst`me de gestion de chiers. Nous e dtaillons ci-dessous la nature des informations manipules aux divers niveaux e e ainsi que les primitives disponibles aux divers niveaux. Le logiciel pilote de priphrique associ au lecteur de disque ou de bande e e e

http://fribok.blogspot.com/

466

Syst`me de gestion de chiers e

magntique (Cf. Chapitre 17) fournit vers les couches dabstraction suprieures e e une interface qui permet de manipuler des blocs ou units dacc`s e e numrots squentiellement. Dans la suite de ce chapitre, nous appellerons e e e adresse physique le mcanisme de dsignation non ambigu dune unit dacc`s, e e e e e cest-`-dire le numro de bloc. Rappelons que le logiciel pilote de priphrique a e e e traduit cette numrotation squentielle en couples (numro de secteur, numro e e e e de piste) pour les disques (lunit dacc`s peut mme tre constitue de plue e e e e sieurs secteurs). Tout en haut du schma on trouve la couche suprieure visible par lutie e lisateur. Les informations manipules sont des noms de chiers (qui re`tent e e ventuellement la structure hirarchique de lensemble des chiers). On peut e e trouver galement dautres informations associes ` un chier, comme les droits e e a dacc`s des dirents utilisateurs, la date de cration, le nom du programme e e e qui la cr, etc. ee Le SGF est la couche intermdiaire : il assure la correspondance entre les e noms de chiers et la position des donnes de ces chiers sur les blocs du e support de mmoire. e Lorsque lutilisateur tape editer /users/machin/toto.c, le programme editer fait appel aux fonctions du SGF pour retrouver le lien entre ce nom externe et la position des donnes sur le support de mmoire, et aux fonctions e e oertes par le logiciel pilote de priphrique pour raliser la lecture eective e e e de ces donnes. e Nous dtaillons au paragraphe 5. les principales fonctions du SGF accese sibles aux programmes de lutilisateur.

2.
2.1

Structure des donnes e et inuence sur limplantation


Notion de chier

Les donnes ` stocker sont regroupes dans des chiers. Cest lunit de base e a e e a ` laquelle on peut associer un nom externe connu de lutilisateur (` travers un a interpr`te de commandes, ou par programme). Chaque chier a une certaine e structure interne, qui correspond au type des donnes qui y sont stockes. e e

2.2
2.2.1

Relation entre la structure des donnes dun chier e et le type dacc`s ncessaire e e
Structure des donnes e

Nous avons dj` rencontr au chapitre 18 les chiers source, objet et ea e excutable dun programme. Le chier source est un texte, cest-`-dire une e a suite de caract`res. On peut le considrer comme une suite de bits, mais les e e

http://fribok.blogspot.com/

2. Structure des donnes et inuence sur limplantation e

467

oprations usuelles que lon eectue sur un chier source (dition, impression, e e ...) linterpr`tent comme une suite de caract`res (cest-`-dire une suite doce e a tets). De mme, le chier objet peut tre considr comme une suite de bits, e e ee ou comme une suite doctets. Les images ou les contenus de bases de donnes e constituent dautres types de chiers. Les chiers texte sont intrins`quement squentiels, puisque le type Texte e e manipul par les programmes est dni comme une squence de caract`res e e e e (lordre des lments fait partie du type). Inversement les chiers de bases de ee donnes relationnelles correspondent au type de donnes ensemble de n-uplets. e e Un chier de personnes peut ainsi tre constitu de triplets forms dun e e e nom, dune date de naissance et dun nom de ville. Il ny a pas de structure squentielle attache ` ce type de donnes. Les n-uplets peuvent tre dsigns e e a e e e e de mani`re non ambigu par une cl. Dans la thorie de lalg`bre relationnelle, e e e e e la cl ou identiant dune relation est un sous-ensemble des champs tel e que, pour une valeur des champs de la cl, le n-uplet est unique. Dans le chier e de personnes donn en exemple, on peut dcider dutiliser le nom comme cl. e e e On appelle adresse logique le mcanisme de dsignation non ambigu dun e e e enregistrement du chier. Si le chier comporte une structure squentielle, cest e en gnral un numro par rapport au dbut ; dans le cas contraire, on utilise e e e e la notion didentiant fournie par la structuration des donnes : une valeur de e la cl permet de dsigner un n-uplet sans ambigu e. e e t 2.2.2 Types dacc`s e

Le type dacc`s ncessaire aux donnes dun chier dpend de la mani`re e e e e e dont on interpr`te ces donnes. e e Tout chier peut tre considr comme une suite de bits. Lorsquon utilise e ee une commande de dump pour acher le contenu dun chier quelconque, le chier est interprt, au choix, comme une suite doctets, de mots de 16 ou 32 ee bits, ... Les outils spciques connaissent la structure et lutilisent ; des outils e gnriques peuvent lignorer et ne voir quune suite de bits. e e Un outil comme dump ne ralise que des acc`s squentiels (lecture dans e e e lordre, pas de suppression ni insertion au milieu), et a donc peu dexigences sur la mani`re dont est implant le chier. En revanche, tout outil qui conna e e t la structure des donnes du chier peut ncessiter un acc`s direct. Pour la e e e lecture, on peut vouloir par exemple ne lire que le caract`re numro 4200 dans e e un chier texte ; ou seulement la section des instructions dans un chier objet ; ou encore seulement une portion dune image dans un chier JPEG, ... Pour lcriture, on peut avoir besoin dinsrer une ligne dans un texte, de supprimer e e une section dun chier objet, etc. Noter quon peut vouloir raliser des acc`s directs ` un chier texte, bien e e a que le type des donnes soit intrins`quement squentiel. Inversement, la saue e e vegarde dun disque de base de donne sur une bande magntique ne ralise e e e que des acc`s squentiels aux donnes, bien que leur type soit intrins`quement e e e e

http://fribok.blogspot.com/

468

Syst`me de gestion de chiers e

non squentiel. e Reprenons lanalogie avec les disques et cassettes audio : il est plus facile dcouter la douzi`me chanson sur un disque compact que sur une cassette e e audio, mais, lorsquon recopie une cassette sur une autre, on na besoin de lacc`s direct ni sur la source, ni sur la copie. e Dernier point important : pourquoi se proccuper dacc`s direct aux e e donnes stockes sur un support de mmoire secondaire ? On pourrait en eet e e e imaginer une mani`re fort simple de manipuler les chiers : on commence toue jours par le recopier enti`rement en mmoire vive (et cela ncessite une lecture e e e squentielle), puis on eectue tout type de modication, puis on le recopie sur e le support de mmoire secondaire (et cela constitue une criture squentielle). e e e Dans ce cas les seuls types dacc`s ncessaires sont squentiels. e e e Cette approche est applicable ` ldition de petits chiers texte. Pour a e dautres types dapplication cest hors de question : tri de gros chiers, acc`s e a ` une base de donnes, ... e Pour assurer des acc`s directs parmi les donnes dun chier, il faut donc e e prvoir limplantation en consquence. e e

2.3

Inuence du type dacc`s ncessaire e e sur limplantation

Le type de manipulation envisage des chiers peut ncessiter un acc`s e e e direct ou non. Les adresses logiques sont des numros, ou des dsignations par e e le contenu. Les supports physiques sont ` acc`s direct ou squentiel. Il y a donc a e e de nombreux cas ` considrer, que nous regroupons en deux classes ci-dessous. a e 2.3.1 Acc`s par numro e e

Cest le cas raliste dun syst`me de gestion des chiers utilisateurs. Quel e e que soit le type des donnes de ces chiers, ils sont considrs comme des suites e ee doctets, et les adresses logiques sont des dcalages par rapport au dbut en e e nombre doctets. Acc`s direct sur support squentiel Cest un cas peu raliste. Sur tout e e e support squentiel on dispose dune opration de retour au dbut (rembobinage e e e dune bande magntique), mais passer dun lment dadresse n ` un lment e ee a ee dadresse m en rembobinant, puis en avanant de m, ne peut pas avoir des c performances comparables ` celles dun vritable acc`s direct. a e e Acc`s squentiel sur support squentiel Ceci constitue le cas typique de e e e la sauvegarde, pendant laquelle les chiers sont considrs comme squentiels. ee e En eet, aucune insertion ou suppression dlment du chier ne sera efee fectue sur le support ` acc`s squentiel. Les acc`s au support squentiel sont e a e e e e squentiels, lors des sauvegardes et restaurations. e

http://fribok.blogspot.com/

2. Structure des donnes et inuence sur limplantation e

469

Acc`s direct sur support ` acc`s direct Le chier peut tre considr e a e e ee comme une squence de n-uplets plus ou moins complexes, numrots par les e e e adresses logiques. On trouve dans tout bon ouvrage dalgorithmique une discussion sur les mrites respectifs de la reprsentation des squences dans des tableaux ou des e e e squences cha ees. Dans un tableau, lordre des lments de la squence est e n ee e implicite : cest lordre des indices ; dans une squence cha ee, lordre des e n lments est reprsent de mani`re explicite : chaque lment pointe sur ee e e e ee son successeur (et/ou sur son prdcesseur). Notons que les lments de la e e ee squence sont de toute faon dans le tableau MEM : la dirence entre les e c e deux approches est donc entre une implantation contigu et une implantation e disperse. . e Avec la solution tableau on occupe le minimum de mmoire ; avec la solue tion cha ee, on ajoute un pointeur par lment (cest-`-dire une adresse n ee a mmoire, de lordre de 32 bits). La comparaison sur le temps ncessaire e e pour une opration dinsertion tourne en revanche ` lavantage de la solution e a cha ee : il sut de raccrocher deux ou trois pointeurs et le tour est jou ; dans n e un tableau il faut mnager une place en dcalant des lments, cest-`-dire en e e ee a les recopiant dune case dans une autre. Comme dhabitude en informatique, les gains en place se font au dtriment du temps, et vice-versa. Notons galement e e quavec une implantation contigu on dispose de lacc`s direct ` un lment e e a ee par son numro ; on perd cette proprit avec une implantation disperse. e ee e Imaginons le cas dune squence de bits, stocke en utilisant une solution e e mixte contige/disperse : on peut cha u e ner entre eux des octets, auquel cas le rapport entre informations utiles et informations de cha nage est assez mauvais : un pointeur occupe de lordre de 4 octets, et il en faut 1 par octet utile. En choisissant la taille des blocs cha es, on r`gle le rapport entre informations n e utiles et informations de cha nage. Appliquons le raisonnement au cas de limplantation des chiers. Dans une implantation contigu, les emplacements de deux enregistrements e conscutifs quelconques du chier sont eux-mmes conscutifs ` lintrieur e e e a e dune mme unit dacc`s, ou situs dans deux units dacc`s de numros e e e e e e e conscutifs. La structure de squence du chier est reprsente grce ` la e e e e a a squence des adresses physiques. Une insertion ou suppression denregistree ment dans le chier demande un dcalage des lments prsents, ce qui peut e ee e tre assez coteux. e u Dans une implantation disperse, deux enregistrements conscutifs du e e chier peuvent tre placs ` des positions quelconques sur le disque. Pour ree e a constituer la structure squentielle, on peut cha e ner les lments entre eux, ou ee utiliser une table dimplantation (voir paragraphe 3. ci-dessous). Linsertion ou la suppression dun lment demande alors seulement la rorganisation du ee e cha nage ou de la table dimplantation, mais jamais le dplacement des enree gistrements du chier sur le disque. La solution par cha nage est coteuse en u taille (une adresse de suivant pour chaque lment du chier), et impose un ee

http://fribok.blogspot.com/

470

Syst`me de gestion de chiers e

acc`s squentiel au chier. e e 2.3.2 Acc`s direct par le contenu e

Ce cas ncessite des organisations spciques selon le type dacc`s direct e e e ncessaire. e Dans les syst`mes de gestion de bases de donnes (SGBD) par exemple, le e e mcanisme dadressage logique est induit par une description de haut niveau e de lensemble des informations gres (un ensemble de schmas de relations ee e par exemple, avec dnition des cls de relations). Limplantation des donnes e e e sur le disque est ralis par les couches basses des SGBD, qui constituent des e e syst`mes de gestion de chiers spciques. e e Ainsi certains SGBD proposent-ils, dans le langage de description de la structure des informations, un mcanisme qui permet au concepteur de la base e de donnes dexprimer des contraintes sur la position relative des informations e sur le disque. Le mcanisme de cluster du logiciel Oracle permet ainsi de e dclarer une association entre des champs X et Y, appartenant respectivement e a ` des relations R et S, si lon sait que les requtes dinterrogation comporteront e souvent un produit de la forme R (X=Y)* S en alg`bre relationnelle (cest-`e a dire un produit cartsien des relations R et S, suivi dune slection des n-uplets e e qui portent la mme valeur dans les champs X et Y). Le SGBD tient compte e au mieux de cette association, et tente dinstaller ` des positions proches sur a le disque les n-uplets de la relation R qui correspondent ` une valeur X0 du a champ X, et les n-uplets de la relation S qui correspondent ` cette mme valeur a e dans le champ Y. Lide est que, si on lit sur le disque un n-uplet de la relation e R portant une valeur X0 du champ X, on aura srement lu dans le mme bloc u e les n-uplets correspondants de la relation S. Mme si le SGBD nore pas au concepteur de la base de donnes un tel e e moyen de contrler la position des informations, limplantation des donnes est o e un probl`me crucial dans la ralisation dun SGBD, et elle est ncessairement e e e spcique. Lutilisation dun syst`me de gestion de chiers conu pour grer e e c e lensemble des chiers utilisateurs rduirait considrablement les performances. e e

3.

Implantation disperse sur un disque e

Nous tudions ici un exemple dimplantation disperse dun ensemble de e e chiers sur un disque, par un mcanisme de table dimplantation ` plusieurs e a niveaux dindirection. Le paragraphe 3.3 dcrit lorganisation des chiers dans e le syst`me de gestion de chiers dunix. e Dans une implantation disperse, lide est de partitionner le chier en more e ceaux, qui seront disposs sur le disque indpendamment les uns des autres ; e e toutefois un morceau sera plac sur des units dacc`s conscutives. Ainsi le e e e e reprage dun morceau se rduit ` une adresse physique, connaissant la taille e e a des morceaux.

http://fribok.blogspot.com/

3. Implantation disperse sur un disque e

471

La taille de ces morceaux est appele unit dallocation. Cest un multiple e e de la taille de lunit dacc`s dnie pour le disque (en gnral une puissance de e e e e e 2). Le choix de lunit dallocation permet de contrler le degr de dispersion e o e des informations du chier. Lun des cas extrmes consiste ` dnir lunit e a e e dallocation gale ` lunit dacc`s : les morceaux du chier sont de taille e a e e minimale, et les informations sont donc disperses au maximum. Lautre cas e extrme consiste ` choisir une unit dallocation tr`s grande, suprieure ` la e a e e e a taille des chiers. Dans ce cas les informations sont disperses au minimum, e cest-`-dire pas du tout : on retrouve limplantation contigu. a e Lunit dallocation est un param`tre fourni par lutilisateur au moment e e de linstallation dun syst`me de chiers sur un disque (au formatage logique, e voir paragraphe 5.1). Cette information doit tre conserve, puisquelle est e e indispensable pour linterprtation des donnes sur le disque ; elle doit avoir e e une dure de vie gale ou suprieure ` celle des donnes prsentes sur le disque, e e e a e e et doit donc tre inscrite sur le disque lui-mme (voir au paragraphe 3.7 la e e synth`se des informations prsentes sur un disque). e e

3.1

Cas dun seul chier de petite taille

Considrons tout dabord le cas simple dun seul chier de petite taille. On e introduit une table dimplantation de taille T , qui donne T adresses physiques de dbut de blocs de taille gale ` lunit dallocation. e e a e Cette table dimplantation doit elle-mme tre stocke sur disque, de e e e mani`re contigu, et ` une position connue. Elle peut occuper une ou plue e a sieurs units dacc`s au dbut du disque par exemple (Cf. Figure 19.2). e e e La taille du chier est limite ` T Ua octets, o` Ua reprsente lunit e a u e e dallocation.

3.2

Cas dun seul chier de taille moyenne

Lorsque le chier est de taille plus importante, la table dallocation unique ne sut plus. Les blocs du chier ont toujours une taille gale ` lunit dale a e location, mais ils ne sont pas tous accessibles directement. On introduit un mcanisme ` deux tages : les T premi`res cases de la table donnent toujours e a e e des adresses physiques de dbut de blocs du chier ; une case supplmentaire e e donne ladresse physique dune seconde table, qui de nouveau donne T adresses physiques de dbut de blocs du chier (Cf. Figure 19.3). e La taille dun chier moyen est ainsi borne par (T + T ) Ua . Notons que e lacc`s aux T premiers blocs est plus rapide que lacc`s aux blocs suivants, e e puisquil ne ncessite pas dindirection. e

http://fribok.blogspot.com/

472

Syst`me de gestion de chiers e

Table dimplantation : dans lunit dacc`s de numro 1. e e e 1 2 3 ... T

Fig. 19.2 Implantation disperse dun seul chier de petite taille : lunit dallocation e e est gale ` deux units dacc`s, et la table dimplantation est situe sur une e a e e e unit dacc`s. Elle donne T adresses physiques dunits dacc`s, quil faut e e e e interprter comme les adresses de dbut des blocs du chier, chacun de taille e e gale ` lunit dallocation. e a e

http://fribok.blogspot.com/

3. Implantation disperse sur un disque e

473

Table secondaire 1

Table primaire 1

T T+1

Fig. 19.3 Implantation disperse dun seul chier de taille moyenne : lunit dallocation e e correspond ` deux unit dacc`s. La table dimplantation primaire est situe a e e e sur une unit dacc`s. Elle donne tout dabord T adresses physiques dunits e e e dacc`s, quil faut interprter comme les adresses de dbut de blocs du chier. e e e Elle donne galement, dans sa case dindice T + 1, ladresse physique dune e unit dacc`s qui contient une table secondaire. Cette nouvelle table donne T e e adresses physiques dunits dacc`s, quil faut interprter comme les adresses e e e de dbut des blocs du chier. Tous les blocs du chier sont de taille gale ` e e a lunit dallocation e

http://fribok.blogspot.com/

474

Syst`me de gestion de chiers e

3.3

Cas dun seul chier tr`s grand e

Lorsque le chier est vraiment tr`s grand, on reproduit le raisonnement e ci-dessus et on obtient un mcanisme ` trois tages. Les T premi`res cases de e a e e la table donnent toujours des adresses physiques de dbut de blocs du chier ; e une case supplmentaire dindice T + 1 donne ladresse physique dune seconde e table, qui de nouveau donne T adresses physiques de dbut de blocs du chier e (comme dans le cas du chier de taille moyenne) ; une autre case, dindice T + 2, donne ladresse dune table de tables ; une derni`re case, dindice T + 3, e donne ladresse dune table de tables de tables dadresses physiques de dbut e de blocs du chier. La taille dun grand chier est ainsi borne par (T + T + T 2 + T 3 ) Ua . Si e lon choisit Ua = 512 octets, T = 10 pour la table primaire, et T = 128 pour les suivantes, la taille de chiers peut atteindre (10 + 128 + 1282 + 1283 ) 512 octets, soit de lordre dun gigaoctets. Lacc`s aux T premiers blocs est privilgi, puisquil est direct ; les T blocs e e e suivants sont accessibles grce ` une indirection ; les T 2 suivants grce ` deux a a a a 3 indirections ; les T suivants grce ` trois indirections. a a

3.4

Cas de plusieurs chiers

Tant que lon consid`re le cas dun seul chier, la table dimplantation prie maire peut tre place ` une position xe sur le disque. Si lon veut maintenant e e a stocker plusieurs chiers selon la mme mthode, chacun doit disposer de sa e e table dimplantation, elle-mme stocke sur le disque. Il faut donc tablir une e e e correspondance entre le chier et ladresse physique de sa table dimplantation. A cet eet, on rserve sur le disque une zone dite des descripteurs de e chiers, de taille xe, et permettant le stockage de n tables dimplantation. Le nombre de chiers stockables est ainsi born par n, une fois pour toutes (lors e du formatage du disque). Un chier est dsign par un numro, et ladresse e e e physique de son descripteur est obtenue comme un dcalage par rapport ` e a ladresse physique 0. Le nombre de descripteurs prvu au formatage est donc le nombre maxie mum de chiers reprsentables sur le disque. Selon la nature de lensemble des e chiers ` reprsenter, ce param`tre peut tre choisi plus ou moins grand. a e e e

3.5

Allocation de blocs

Les dirents chiers prsents sur un disque et reprsents de mani`re e e e e e disperse occupent des blocs de taille gale ` lunit dallocation, rpartis e e a e e de mani`re quelconque. Lors dune modication de lensemble des chiers e (cration, supression, augmentation...), il faut pouvoir : 1) dterminer ladresse e e physique dun bloc libre ; 2) dclarer quun bloc nest plus utilis, de mani`re e e e a ` permettre son utilisation ultrieure. e

http://fribok.blogspot.com/

3. Implantation disperse sur un disque e

475

Cest un probl`me gnral de gestion de mmoire. Il y a essentiellement 2 e e e e techniques. La premi`re consiste ` maintenir une table de marquage des blocs e a occups. La deuxi`me consiste ` maintenir une liste cha ee de blocs libres. e e a n

3.6

Redondance des informations

Tout chier est dcoup en blocs rpartis de mani`re quelconque sur le e e e e disque, la structure du chier est donc enti`rement rete par les tables dime ee plantation, elles-mmes accessibles par un unique point dentre situ ` une e e e a position xe : le descripteur de chier. Si lon endommage ce descripteur, tout est perdu. Dautres informations prsentes sur le disque sont particuli`rement e e critiques : lunit dallocation utilise pour tous les chiers du disque ; la table e e de marquage des blocs libres (ou la liste cha ee de blocs libres) ; etc. n Bien quil soit impossible de garantir compl`tement la prservation des e e informations du disque en toutes circonstances, certaines informations particuli`rement critiques sont regroupes et rpliques. En protant de la structure e e e e dun disque en cylindres (Cf. Chapitre 17), on dispose le paquet des informations critiques ` plusieurs emplacements dadresses physiques prdnies, a e e disposs en spirale verticale : ainsi deux exemplaires situs sur des plateaux e e dirents correspondent ` des positions direntes du bras. Si un probl`me e a e e physique provoque latterrissage des ttes de lecture/criture, il existe toujours e e des exemplaires ` labri. a

3.7

Rsum de loccupation du disque e e

En tenant compte des diverses considrations nonces jusque l`, lensemble e e e a des informations prsentes sur un disque est donc constitu de : e e Plusieurs exemplaires du groupe des informations critiques (unit dalloe cation, nombre de blocs de cette taille disponibles sur le disque, nombre maximum de chiers). Les informations du groupe sont stockes de mani`re e e contigu, et lensemble ne tient pas ncessairement dans un bloc, tel quil e e est dni pour la gestion des chiers. La taille du groupe est prdnie e e e (elle na pas ` tre inscrite sur le disque, ce qui repousserait le probl`me). ae e Les adresses physiques de dbut des positions de recopie du groupe sont e galement prdnies. e e e Egalement ` une position xe prdnie sur le disque, mais en un seul a e e exemplaire, on trouve un marquage des descripteurs de chiers occups e Une zone contigu du disque est rserve aux descripteurs de chiers. Cette e e e zone commence ` une adresse prdnie, et les dirents descripteurs sont a e e e accessibles par des dcalages. La zone des descripteurs est de taille xe. La e taille dun descripteur est xe et prdnie. e e Une autre zone contigu du disque est rserve ` la table de marquage des e e e a blocs occups. Il faut 1 bit par bloc du disque utilisable pour les chiers. La e table de marquage est dautant plus volumineuse que lunit dallocation e est petite. A la limite, il faut 1 bit par unit dacc`s physique. e e

http://fribok.blogspot.com/

476

Syst`me de gestion de chiers e

Tout lespace restant, vu comme un ensemble de blocs de taille gale ` e a lunit dallocation, est disponible pour le stockage dispers des chiers. e e

4.
4.1

Noms externes et autres informations attaches aux chiers e


Dsignation de chiers par des noms externes e

Pour linstant les dirents chiers reprsents de mani`re disperse sur un e e e e e disque sont identiables par un entier de lintervalle [1, n], o` n est le nombre u maximum de descripteurs x au formatage. e Lune des fonctions du syst`me de gestion de chiers est de permettre ` e a lutilisateur une dsignation des chiers par des noms externes. Le SGF doit e donc grer une association nom/numro, cest-`-dire un ensemble de couples e e a comportant une cha de caract`res (de taille borne) et un entier. Cet enne e e semble de couples constitue le chier catalogue du disque, et doit correspondre a ` un numro de descripteur xe, par exemple 1. e Lacc`s ` un chier de nom externe X comporte ainsi 3 tapes : e a e Lecture du descripteur numro 1 (adresse physique xe), qui donne la table e dimplantation primaire du chier catalogue. Parcours des blocs du chier catalogue, pour chercher un couple <X,i>. Notons ici que le nom de chier se comporte comme une cl de la relation e entre noms externes et numros de descripteurs, cest-`-dire qu` un nom e a a de chier donn ne peut correspondre quun descripteur. e Lecture du descripteur numro i. On est ramen au cas des chiers dsigns e e e e directement par des numros. e
Remarque : Lintroduction de la relation entre noms externes et numros e de descripteur, reprsente dans le chier catalogue, permet dassocier plue e sieurs noms externes au mme numro de descripteur. Cest le mcanisme e e e de lien dit physique oert par de nombreux syst`mes dexploitation, qui pere met le partage dinformations stockes de mani`re unique, et visibles sous e e des noms externes dirents. Noter toutefois que, dans ce cas, la suppression e de chier peut se rduire ` la suppression dune association nom/numro de e a e descripteur. Les blocs du chier et son descripteur ne peuvent tre eectie vement librs que lorsquaucun couple du catalogue ny fait plus rfrence. ee ee Pour viter un parcours exhaustif du catalogue qui permettrait de sassurer de e cette proprit lors de la suppression dun couple, on maintient en gnral un ee e e compteur de rfrences dans le descripteur : la suppression eective du chier ee nest ralise que lorsque ce compteur vaut 1 ; dans les autres cas le compteur e e est dcrment. e e e

http://fribok.blogspot.com/

5. Etude de quelques fonctions du syst`me de gestion de chiers e

477

4.2

Structure hirachique de lensemble de chiers e

La plupart des syst`mes de gestion de chiers actuels g`rent des arborese e cences de catalogues. Un catalogue peut contenir deux types de chiers : des catalogues sur les noeuds internes et les chiers ordinaires sur les feuilles de larbre. Le nom externe complet dun chier dcrit le chemin depuis la racine de e larbre vers la feuille considre. Dans la syntaxe de la plupart des interpr`tes ee e de commandes unix, /users/info1/arthur/tp.c est le nom complet dun chier situ au niveau 4 sous la racine. Les noms intermdiaires users, info1, e e arthur correspondent ` des sous-arbres, quon appelle rpertoires (directory a e en anglais) du SGF. Lacc`s ` ce chier suit les tapes : e a e Lecture du descripteur numro 1, qui donne la table dimplantation du e chier catalogue de la racine. Parcours des units dallocation de ce chier, en recherchant un couple e < users, i >. Lecture du descripteur numro i, qui donne la table dimplantation du e chier catalogue de la racine du sous-arbre users. Parcours des units dallocation de ce chier, en recherchant un couple e < info1, j >. Lecture du descripteur numro j, qui donne acc`s au catalogue du souse e arbre users/info1 et recherche dun couple < arthur, k > Finalement, lecture du descripteur numro k, qui donne acc`s au catalogue e e du sous-arbre users/info1/arthur, et recherche dun couple < tp.c, > est le numro de descripteur du chier cherch. e e

4.3

Autres informations attaches aux chiers e

Outre le mcanisme de dsignation par nom externe, la plupart des syst`mes e e e dexploitation permettent dassocier aux chiers des informations comme : la date de cration (voire la date de derni`re modication, la date de derni`re e e e consultation, etc.) ; le propritaire (dans un contexte multi-utilisateurs) et les e droits dacc`s en lecture et criture des utilisateurs non propritaires, etc. e e e Ces informations font partie du descripteur de chier.

5.
5.1

Etude de quelques fonctions du syst`me e de gestion de chiers


Formatage logique

Rappelons que nous avons dni au chapitre 17 la notion de formatage e physique dun disque, qui dtermine les pistes et secteurs, et tablit la correse e pondance entre ladressage par un couple (numro de piste, numro de secteur e e dans la piste), et ladressage global par numro dunit dacc`s. e e e

http://fribok.blogspot.com/

478

Syst`me de gestion de chiers e

Une fois cette structuration du disque en units dacc`s eectue, le SGF e e e est responsable du formatage logique, qui permet de voir le disque comme un ensemble de blocs de taille gale ` lunit dallocation. e a e Les param`tres du formatage logique sont : lunit dallocation et le nombre e e maximum de chiers reprsentables. Lopration de formatage installe les mule e tiples exemplaires du groupe des informations critiques, et les valeurs initiales de la table de marquage des descripteurs occups et de la table de marquage e des blocs occups. Elle construit galement le chier catalogue de la racine du e e syst`me de chiers, qui est initialement vide. Le descripteur de ce chier est le e descripteur de numro 0. e

5.2

Gestion dune information rpertoire courant e

Une fonctionnalit usuelle du syst`me de gestion de chiers consiste ` foure e a nir une notion de rpertoire courant. Nous verrons au chapitre 20 que cette e fonction est indispensable ` la ralisation de la notion de rpertoire courant a e e des interpr`tes de commandes. e Les fonctions oertes peuvent tre dcrites par : e e
RepCour : une squence de caract`res e e SetRepCour : une action (la donne : une squence de caract`res) e e e SetRepCour(R) : RepCour R GetRepCour : une squence de caract`res e e GetRepCour : RepCour

Il est intressant de se poser la question de la dure de vie de linformation e e RepCour. En eet, elle est ncessairement suprieure ` celle des appels des e e a primitives oertes par le SGF, dont SetRepCour et GetRepCour, mais aussi toutes les oprations de lecture/criture dcrites au paragraphe 5.4 ci-dessous. e e e Pour tous les acc`s au syst`me de gestion de chiers paramtrs par un e e e e nom externe, on peut convenir que les les noms de chiers qui ne commencent pas par un caract`re slash sont des noms relatifs au rpertoire courant. Pour e e obtenir des noms absolus, il sut de les prxer par le contenu de la variable e RepCour. Cela suppose videmment que le contenu de la variable RepCour est e un nom absolu de rpertoire, dcrivant un chemin depuis la racine de larbre e e des chiers jusqu` un noeud catalogue. a Noter que, dans le cas gnral dun syst`me multitches, le rpertoire coue e e a e rant est une notion locale ` un exemplaire dinterpr`te de commandes (Cf. Chaa e pitre 20) en cours dexcution, et il peut y en avoir plusieurs en parall`le. Dans e e ce cas, une seule variable de rpertoire courant dans le SGF ne sut plus, et e il y en a en ralit une par processus (Cf. Chapitre 23). e e

http://fribok.blogspot.com/

5. Etude de quelques fonctions du syst`me de gestion de chiers e

479

5.3

Cration et suppression de chier e

A chaque chier est associ un ensemble dinformations, permettant e daccder a son contenu, regroupes dans une structure appele descripteur e ` e e physique du chier ou noeud dinformation, ce terme faisant rfrence aux iee nodes du syst`me unix. On y trouve en particulier la taille du chier et sa e table dimplantation primaire.
NoeudInfo : le type < type : (catalogue, chier-ordinaire) { type du chier } taille : un entier ; { taille du chier en nombre doctets } tab-imp : un tableau sur [0..99] dAdPhysiques { potentiellement : adresses de dbut de 100 blocs du chier, chacun de la e taille de lunit dallocation UAlloc. } e >

Les octets formant le contenu du chier sont stocks sur les units dacc`s e e e dadresses physiques : tab-imp[0]+0, tab-imp[0]+1, ..., tab-imp[0]+UAlloc 1, tab-imp[1]+0, tab-imp[1]+1, ..., tab-imp[1]+UAlloc 1, ... Le nombre dunits dacc`s eectivement occupes est dtermin par la e e e e e taille du chier en octets et la taille de lunit dacc`s en octets. e e Lensemble des chiers prsents sur le disque est reprsent dans le e e e rpertoire o` un chier est identi par son nom et son acc`s indiqu par e u e e e le numro de son NoeudInfo. Une entre de rpertoire peut tre dcrite par : e e e e e
EntreeRep : le type (nom : un texte ; NoNoeudInfo : un entier)

Le rpertoire est lui-mme un chier. Les NoeudInfo sont rangs de faon e e e c contigu au dbut du disque, en commenant par celui du rpertoire. e e c e La cration dun chier demande lallocation dune entre dans le catalogue e e du rpertoire courant et la mise ` jour de cette entre avec le nom du chier et e a e un numro de noeud dinformation libre. Lajout au chier rpertoire est une e e criture de chier, dcrite ci-dessous. e e La suppression demande la libration de toutes les units dacc`s spcies e e e e e dans la table dimplantation du descripteur et la libration de lentre correse e pondante dans le catalogue. La suppression dune entre de catalogue est une e modication du chier catalogue.

5.4

Ouverture, lecture et criture de chiers e

Avant tout acc`s en lecture ou en criture ` un chier il est ncessaire de e e a e raliser lopration douverture du chier. Au niveau utilisateur un chier est e e

http://fribok.blogspot.com/

480

Syst`me de gestion de chiers e

dsign par un nom ; louverture consiste ` donner acc`s ` toutes les informae e a e a tions stockes dans le chier. e Ensuite on utilise les actions de lecture et dune action dcriture dune e unit dacc`s fournies par le pilote de priphrique associ au disque (Cf. Pae e e e e ragraphe 3. du chapitre 17). 5.4.1 Description dun chier pour les utilisateurs

Les programmes utilisateurs du SGF manipulent les chiers par lintermdiaire dune structure de donnes qui contient toutes les informations e e permettant daccder au chier ; outre les informations concernant lacc`s phye e sique, tires du descripteur physique (ou noeud dinformation) du chier, il est e ncessaire si lon veut raliser un acc`s squentiel, de mmoriser la position e e e e e atteinte lors du dernier acc`s, le mode dutilisation autoris, etc. Cette struce e ture de donnes est installe par le syst`me de gestion de chier en mmoire e e e e lors de louverture du chier et recopie sur le disque lors de la fermeture. On e obtient :
Descripteur : le type < type : (catalogue, chier-ordinaire) { type du chier } taille : un entier ; { taille du chier en nombre doctets } tab-imp : un tableau sur [0..99] dAdPhysiques { potentiellement : adresses de dbut de 100 blocs du chier, chacun de la e taille de lunit dallocation UAlloc. } e oset : un entier ; { pointeur courant dans le chier : cest un dcalage par rapport au e dbut, en nombre doctets. } e mode : (lect, ecr) ; { acc`s en lecture ou en criture } e e { Autres informations comme par exemple les droits dacc`s ` un utilie a sateur ou ` un autre } a >

5.4.2

Ouverture dun chier

La fonction douverture dun chier a pour rle de fournir aux programmes o utilisateurs un acc`s au chier identi par son nom. e e Il sagit de chercher dans le catalogue le nom du chier. Pour cela il faut lire le noeud dinformation du chier catalogue, puis parcourir les blocs du catalogue (via sa table dimplantation) ` la recherche de la cha de caract`res a ne e dcrivant le nom du chier. e Lorsque lon a trouv le nom du chier on rcup`re le numro de son noeud e e e e dinformation. Les noeuds dinformation sont stocks ` une adresse xe du e a disque ; on calcule alors ladresse physique du noeud dinformation du chier. Ltape suivante consiste ` lire ce noeud dinformation et ` lutiliser pour e a a mettre ` jour le descripteur du chier. Le contenu du noeud dinformation est a

http://fribok.blogspot.com/

5. Etude de quelques fonctions du syst`me de gestion de chiers e

481

recopi et les informations non lies ` limplantation du chier sur disque sont e e a initialises. e 5.4.3 Lecture et criture de chier e

La lecture demande au pralable une ouverture du chier en mode lecture. e Lutilisateur dispose alors du descripteur dans lequel il trouve ` la fois les infora mations dacc`s physique et la taille du chier. Lors dune lecture squentielle, e e les blocs, dont on trouve les adresses physiques de dbut dans la table dime plantation, sont lus les uns apr`s les autres dans un tampon en mmoire. Le e e dplacement par rapport au dbut du chier doit tre maintenu ` jour. e e e a Une opration dcriture est similaire. Le dplacement par rapport au dbut e e e e tant gal au nombre doctets du chier, lcriture squentielle a lieu ` la suite e e e e a des octets dj` mmoriss dans le chier. ea e e Un diteur de texte qui ralise ` la fois des oprations de lecture et dcriture e e a e e travaille dans un tampon mmoire contenant tout ou une partie du chier. Au e lancement le chier est ouvert puis lu dans le tampon, une opration explicite e permet ` lutilisateur de mmoriser le contenu de son chier, cest-`-dire de a e a lcrire sur disque. e

5.5

Sauvegarde, restauration, reconstitution des informations dun disque

La sauvegarde des informations dun disque (sur une bande magntique e par exemple) peut prendre deux formes, qui correspondent aux commandes dump et tar des syst`mes de la famille unix. Si lon veut sauvegarder un souse ensemble donn de chiers, il est ncessaire daccder au disque en suivant les e e e informations fournies par les noms des chiers et les tables dimplantation de leurs descripteurs. Lacc`s est alors similaire ` une srie de lectures. e a e Si, en revanche, on veut sauvegarder enti`rement le disque, il sut doublier e momentanment la structure impose par le formatage logique, et de recopier e e squentiellement tous les secteurs du disque sur une bande, dans lordre des e adresses physiques. Cest beaucoup plus rapide que la sauvegarde chier par chier, qui ralise nalement le mme travail, mais en compliquant les acc`s. e e e Cest la commande dump. Finalement il existe en gnral une fonction du SGF qui permet de proter e e de la redondance dinformation sur le disque pour tenter quelques rparations, e lorsquun probl`me physique endommage un ou plusieurs secteurs. Cest la e commande fsck (pour le system check) des syst`mes de la famille unix. e

5.6

Dsignation des priphriques ` travers le SGF e e e a

Dans le syst`me unix les priphriques sont nomms de la mme faon e e e e e c que sil sagissait de chiers : /dev/.... La convention de nommage et le type

http://fribok.blogspot.com/

482

Syst`me de gestion de chiers e

associ ` ce genre de chier permet de les distinguer des autres. ea La procdure douverture de chier analyse le nom et se branche sur e la procdure dcrite plus haut sil sagit dun chier standard, ou sur une e e procdure spciale dacc`s au priphrique. Les procdures de lecture/criture e e e e e e e font de mme. e

http://fribok.blogspot.com/

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


Nous venons de construire un syst`me logiciel et matriel simple, en connece e tant un processeur et de la mmoire (chapitre 15), en assurant la connexion e de cet ensemble au monde extrieur grce aux circuits dentres/sorties (chae a e pitres 16 et 17), et en construisant le syst`me de gestion de chiers (chapitre 19) e pour le stockage des informations ` longue dure de vie. Que manque-t-il ena e core pour en faire un ordinateur, au sens dni chapitre 1 ? Il manque un e protocole de dialogue entre cette machine et un utilisateur humain. Sans intervention dun utilisateur humain qui commande des calculs de la machine, crit e de nouveaux programmes, les compile et les excute, etc., le syst`me matriel e e e et logiciel que nous avons dcrit, aussi sophistiqu soit-il, ne permet dexcuter e e e des programmes que sils sont inscrits en mmoire morte. e Le dialogue entre lutilisateur humain et le syst`me matriel suppose encore e e une fois la dnition dun langage prcis et non ambigu, que nous appellerons e e langage de commandes. Ce langage est ncessairement interprt, puisquil est e ee saisi de mani`re interactive par lutilisateur humain. e Le programme interpr`te du langage de commandes (ou, plus simplement, e linterpr`te de commandes) est actif depuis le lancement du syst`me jusqu` son e e a arrt ; il lit au clavier une ligne de commande, analyse ce texte pour dterminer e e quelle commande il reprsente, avec quels param`tres. Dans un interpr`te texe e e tuel du syst`me unix, on crit par exemple : more toto.c ; more est le nom e e dun programme rsidant quelque part dans le syst`me de gestion de chiers, e e et toto.c est le param`tre de la commande ; ici cest galement un nom de e e chier. Linterpr`te de commandes doit accder au SGF pour lire le chier e e excutable du programme more, et linstaller en mmoire pour excution en e e e lui passant les param`tres indiqus dans la ligne de commandes. Lorsque le e e programme more se termine, on retourne dans linterpr`te de commandes, qui e est prt ` lire une nouvelle ligne. e a Pour terminer la prsentation de larchitecture logicielle et matrielle dun e e syst`me simple, il nous reste ` dcrire comment ce syst`me simple dmarre. e a e e e

http://fribok.blogspot.com/

484

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

Nous commenons, paragraphe 1., en dcrivant le dmarrage du syst`me. c e e e Le paragraphe 2. dnit exactement le mcanisme de base ncessaire ` e e e a tout interpr`te de commandes, le chargeur/lanceur de programmes ; ce e mcanisme est galement utilis au chapitre 23 pour la cration de proe e e e cessus. Le paragraphe 3. donne le programme type dun interpr`te de e commandes textuel. Nous terminons, au paragraphe 4., en voquant les e langages de commandes graphiques (ou icniques) et les langages de como mandes ` structures de contrle. a o

1.

Dmarrage du syst`me e e

Nous considrons un syst`me simple qui comporte de la mmoire morte, de e e e la mmoire vive et un disque dur. e Au dmarrage du syst`me, cest-`-dire ` la mise sous tension du dispositif e e a a matriel et logiciel, on peut supposer que la ralisation matrielle charge la e e e valeur 0 dans le compteur programme PC. Le processeur commence donc ` a interprter le contenu de la mmoire ` ladresse 0. Cette adresse correspond ` e e a a de la mmoire morte, qui contient lamorce du syst`me. e e Cette amorce est constitue du code de la procdure de dmarrage ; dun e e e pilote de disque rudimentaire (cest-`-dire un ensemble de procdures dacc`s a e e au disque) et dun embryon de syst`me de gestion de chiers capable de ree trouver sur le disque une image du syst`me dexploitation complet et de la e recopier en mmoire vive. e Le syst`me complet comporte le syst`me de gestion de chiers complet e e (dcrit au chapitre 19), les pilotes de priphriques complets (dcrits au e e e e chapitre 17) dont le pilote du disque, le code de la procdure de chargee ment/lancement de programmes, que nous tudions en dtail au paragraphe 2. e e ci-dessous.

1.1

Premi`re tape du dmarrage du syst`me e e e e

La procdure de dmarrage ralise les tapes suivantes : e e e e Appel aux fonctions de lembryon de SGF (qui appellent elles-mmes les e fonctions du pilote de disque rudimentaire), pour localiser et lire sur le disque limage du syst`me dexploitation complet. e Recopie de ce syst`me en mmoire vive, ` une adresse prdnie. e e a e e Installation de la structure de donnes en mmoire vive, ncessaire ` la vie e e e a du syst`me (zone libre pour les programmes, zone occupe par le syst`me, e e e adresses qui dlimitent ces zones). e Initialisation du registre SP du processeur utilis comme pointeur de pile. e La gure 20.1-(a) donne le contenu de la mmoire et du registre pointeur e de pile juste apr`s le dmarrage du syst`me, cest-`-dire apr`s le droulement e e e a e e du code damorage dcrit ci-dessus. c e

http://fribok.blogspot.com/

2. Mcanisme de base : le chargeur/lanceur e

485

La structure de mmoire dcrite ici nest pas ncessairement implante telle e e e e quelle dans les syst`mes rels. Toutefois les informations manipules et les are e e guments avancs pour choisir cette structure sont ralistes. On peut considrer e e e que les syst`mes rels ne sont que des variantes de la structure dcrite ici. e e e A lune des extrmits de la mmoire, on trouve rassembls des programmes e e e e et des donnes qui doivent avoir la dure de vie du syst`me : le programme et e e e les donnes du syst`me de gestion de chiers, des pilotes de priphriques, la e e e e procdure de chargement/lancement de programmes pris dans des chiers. e Parmi les donnes du syst`me on trouve les trois adresses DbutMEM, e e e FinMEM et DbutMEMlibre qui dlimitent les portions disponibles de la e e mmoire : la zone entre DbutMEM et DbutMEMlibre est occupe par les e e e e donnes et programme syst`me, et nest donc pas disponible pour les proe e grammes utilisateur. La zone entre DbutMEMlibre et FinMEM est disponible e pour les programmes utilisateur. La base de la pile est en FinMEM, et elle progresse vers la zone syst`me, jusqu` la borne DbutMEMlibre. e a e Le registre pointeur de pile du processeur est initialis ` la valeur FinMEM. ea

1.2

Deuxi`me tape du dmarrage e e e

Une fois cette structure de mmoire installe, il ne reste plus qu` lancer e e a un programme interpr`te dun langage de commandes, qui sera actif durant e toute la dure de vie du syst`me, et fera appel ` la procdure de chargee e a e ment/lancement de programme pour excuter les programmes requis par lutilie sateur ` la ligne de commandes. Pour installer le programme interpr`te de coma e mandes lui-mme, la procdure de dmarrage utilise galement la procdure e e e e e de chargement/lancement.

1.3

Fin du syst`me e

Nous verrons au paragraphe 3. que lune des commandes de tout langage de commandes est terminer, qui provoque la terminaison du programme dinterprtation, et donc le retour dans la procdure de dmarrage du syst`me. e e e e Celle-ci peut alors appeler des procdures du syst`me de gestion de chiers e e qui permettent de placer le syst`me de chiers dans un tat cohrent ; on peut e e e alors teindre la machine. e

2.

Mcanisme de base : le chargeur/lanceur e

Au l des chapitres 4, 5, 12, 13 et 18 nous avons tudi les transformae e tions successives dun chier texte de programme en langage de haut niveau, jusquau chier excutable qui lui correspond. Nous avons, au chapitre 18, antie cip sur le chargement du programme en mmoire, en tudiant les algorithmes e e e de translation dadresses.

http://fribok.blogspot.com/

486

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

Nous tudions ici le mcanisme complet de chargement et lancement de proe e gramme rsidant dans un chier du SGF, en prcisant en particulier comment e e et o` se fait lallocation eective de mmoire. Noter que lditeur de textes, le u e e compilateur et lassembleur qui ont servi ` produire le programme excutable a e a ` charger sont eux-mmes des programmes rsidant dans le SGF sous forme e e de code excutable, et ont d, en leur temps, tre chargs en mmoire pour e u e e e excution. e Toute la dicult rside dans le fait que la procdure de chargee e e ment/lancement ne se comporte pas tout ` fait comme une procdure standard, a e dont nous avons tudi le codage au chapitre 13. Pour comprendre la suite, il e e est toutefois ncessaire davoir bien assimil le principe du codage des blocs e e imbriqus ` laide dune pile. e a Supposons quun programme P veuille lancer un programme Q. Tr`s e schmatiquement, le fonctionnement est le suivant : e 1) La procdure active du programme P appelle la procdure de chargee e ment/lancement avec comme param`tres : le nom du chier dans lequel se e trouve le code compil du programme Q ` lancer et les param`tres ventuels e a e e ncessaires au programme Q lors de son lancement. e 2) La procdure de chargement/lancement alloue une zone de mmoire e e ncessaire pour linstallation en mmoire vive du chier objet de Q (zones e e TEXT, DATA et BSS), installe le programme et ralise la translation e dadresses (Cf. Chapitre 18, Figure 18.9). Attention, cette zone de mmoire e est ncessaire pour linstallation du code du programme lui-mme, et na rien e e a ` voir avec la zone de pile ncessaire pour les variables locales de ses procdures e e lors de son excution. e 3) La procdure de chargement/lancement lib`re la place quelle occupe e e dans la pile et se transforme en la procdure principale du programme lanc. e e Nous dtaillons ce mcanisme au paragraphe 2.3. Lorsque le programme e e lanc Q se termine, le contrle revient donc directement dans le programme e o P , sans repasser par le contexte intermdiaire de la procdure de chargee e ment/lancement. Nous prcisons ci-dessous linterface de la procdure de chargee e ment/lancement, et son droulement. e

2.1
2.1.1

Param`tres et rsultat de la procdure e e e de chargement/lancement


Les donnes e

Dans le cas gnral, la procdure de chargement/lancement a pour pae e e ram`tres donnes : une cha de caract`res qui donne le nom du chier qui e e ne e contient le programme ` charger ; une suite de cha a nes de caract`res qui constie tuent les param`tres ` donner ` ce programme. e a a La premi`re utilisation de la procdure de chargement/lancement est faite e e

http://fribok.blogspot.com/

2. Mcanisme de base : le chargeur/lanceur e

487

par la procdure de dmarrage pour installer linterpr`te de commandes. Dans e e e ce cas le param`tre nom de chier est le nom de linterpr`te de commandes e e standard (qui peut tre une donne inscrite dans le code de dmarrage). e e e Toutes les utilisations ultrieures sont le fait de linterpr`te de commandes e e lui-mme. Dans ce cas le nom du programme ` charger et les param`tres qui e a e doivent lui tre transmis sont donns par lutilisateur dans sa ligne de come e mandes. Par exemple, dans le langage de commandes csh des syst`mes unix, la e commande ls -l doit provoquer le chargement en mmoire du code excutable e e de ls, en lui transmettant le param`tre additionnel -l. (ls est la commande e utilise pour acher la liste des noms de chiers du rpertoire courant, et -l e e est une directive de prsentation de cette liste). Noter que les param`tres sont e e lus au clavier par linterpr`te, sous forme de cha e nes de caract`res. Le proe gramme interpr`te na aucun moyen de dcoder ces cha e e nes de caract`res pour e y retrouver par exemple des nombres. Le programme charg reoit donc des e c cha nes, et les dcode lui-mme. e e Cela permet de comprendre le prol de la fonction main des programmes crits en C, qui joue le rle de programme principal : e o
int main (int argc, char *argv[])

o` argc est le nombre de mots apparaissant sur la ligne de commandes (y u compris le nom de la commande elle-mme), et argv est un tableau de cha e nes de caract`res qui contient les dirents mots de la ligne de commande. e e

2.1.2

Le rsultat e

Le rsultat de la procdure de chargement/lancement est un code de retour, e e cest-`-dire une information qui tient dans un registre du processeur. a Les valeurs possibles du code de retour de la procdure de chargee ment/lancement sont ` envisager dans deux situations : a La procdure choue, et le programme demand ne peut tre charg ; le e e e e e programme demand nexiste pas, ou bien le chier nest pas lisible, ou bien e il ny a pas assez de place libre pour installer le programme en mmoire, e etc. Le programme a pu tre lanc, et sest termin. Il peut avoir lui-mme rendu e e e e un code de retour. Comme voqu ci-dessus, la procdure de chargement/lancement a un come e e portement tr`s particulier : lorsque le chargement du programme russit, la e e procdure de chargement se transforme en ce programme, par manipulations e directes des informations prsentes dans la pile. Lorsque le programme lanc e e se termine, le contrle revient directement dans lappelant du chargeur. La o procdure de chargement na donc de rsultat que lorsquelle choue ; le rsultat e e e e entier code la cause de lerreur, parmi celles suggres ci-dessus. ee Lorsque le chargement russit, lappelant du chargeur reoit directement le e c rsultat du programme charg. e e

http://fribok.blogspot.com/

488

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

2.1.3

Passage des param`tres e

Nous dtaillons le fonctionnement de la procdure de chargee e ment/lancement, et en particulier la structure de ses param`tres et de son e rsultat, dans le cas o` les appels de procdures sont raliss directement par e u e e e la pile (Cf. Chapitre 13, le schma de codage des appels de procdures dans e e un langage dassemblage style 68000). Nous utilisons le mcanisme de retour e des rsultats de fonction simples dcrit au chapitre 13. e e Dans le cas dappels de procdures raliss par un mcanisme de fentre e e e e e de registres (comme pour le processeur sparc) ou de toute autre mani`re, la e solution dcrite ci-dessous doit tre adapte. Les principes de base restent les e e e mmes, toutefois. e Un exemple de contenu de la pile tel quil doit tre install par lappelant e e de la procdure de chargement/lancement est donn gure 20.1-(b). e e

2.2
2.2.1

Allocation de mmoire pour linstallation e des programmes ` charger a


Cas gnral e e

Dans le cas gnral dun syst`me multi-utilisateurs ou simplement mule e e titches (Cf. Partie VI), les besoins en zones mmoire pour le chargement des a e programmes surviennent dans un ordre quelconque. Il est tout ` fait possible a dobserver un comportement du syst`me dans lequel les chargements et termie naisons de programmes A et B sont entrelacs (dbut de A, dbut de B, n de e e e A, n de B). Il est donc ncessaire de raliser une allocation mmoire disperse gnrale, e e e e e e dont linterface est dcrite au chapitre 4, paragraphe 4. Les fonctions dalloe cation et libration font partie du syst`me de base, leur code (Zones TEXT, e e DATA et BSS) est prsent en mmoire, dans la zone syst`me, pendant toute e e e la dure de vie du syst`me ; elles nont donc pas ` tre elles-mmes charges en e e ae e e mmoire, ce qui repousserait le probl`me de lallocation. Ces deux fonctions e e mettent ` jour les informations qui dcrivent loccupation de la mmoire ` un a e e a moment donn (tableau de marquage de zones libres, ou liste de blocs cha es, e n etc.). Ces informations sont galement prsentes en mmoire vive pendant e e e toute la dure de vie du syst`me. e e 2.2.2 Cas du syst`me simple e

Dans le cas que nous allons dtailler, nous supposerons que le syst`me nest e e ni multi-utilisateurs, ni multitches. Dans ce cas les besoins en zones mmoire a e pour le chargement des programmes suivent le schma dernier allou/premier e e libr. En eet, la procdure dinitialisation charge linterpr`te, qui peut charee e e ger des programmes utilisateur, lesquels peuvent eux-mmes charger dautres e programmes, mais tout cela se droule comme une suite dappels de procdures e e

http://fribok.blogspot.com/

2. Mcanisme de base : le chargeur/lanceur e

489

MEM MEM 0 code de lamorce ROM

SP Syst`me e RAM DbutMEM e nMEM DbutMEMlibre e

Ad. de retour dans lappelant Ad. du nom du programme. 3 (nombre de param`tres) e Ad. du 1er param. Ad. du 2`me param. e Ad. du 3`me param. e m o R t u d 0 o t r 0 0 t o t 0

/ u

max SP

(a)

(b)

Fig. 20.1 (a) : Contenu de la mmoire apr`s la premi`re tape du dmarrage. e e e e e (b) : Contenu dtaill de la pile install par lappelant de la procdure de e e e e chargement/lancement : le nom du programme est mor, les param`tres ` lui e a transmettre sont -d, -R et toto/tutu.

http://fribok.blogspot.com/

490

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

(malgr le comportement atypique de la procdure de chargement dcrit plus e e e haut). La mmoire disponible pour le chargement des programmes peut donc tre e e gre en pile. Attention, il ne faut pas confondre cette zone de mmoire vive ee e gre en pile, et la zone appele pile dexcution que nous avons dcrite au chaee e e e pitre 13, qui sert aux variables locales et param`tres des blocs du programme e en cours dexcution. e Ladresse DbutMemLibre joue le rle de pointeur de pile de la zone de e o mmoire utilise pour le chargement du code des programmes. Ce pointeur e e (mmoris dans une case mmoire et/ou dans un registre ddi du processeur), e e e e e est initialis par la procdure dinitialisation, comme mentionn plus haut. e e e Pour rserver une zone pour le chargement dun programme, la procdure de e e chargement doit dplacer ce pointeur vers les adresses plus grandes (vers le e bas sur la gure 20.1-(a)). Des considrations de symtrie voudraient que cette mme procdure e e e e de chargement soccupe de replacer le pointeur DbutMemLibre ` sa valeur e a prcdente, lorsque le programme qui a t charg et lanc se termine, et que e e ee e e la zone quil occupait peut tre rcupre. Le comportement particulier de la e e ee procdure de chargement nous en empche : lorsque le chargement russit, e e e on ne revient pas dans la procdure de chargement (ce qui aurait permis de e dplacer DbutMemLibre), mais directement dans lappelant du chargeur. Ce e e comportement est assur par trois points particuliers de lalgorithme dtaill e e e ci-dessous, que nous reprons par les lettres , et . e La solution que nous dcrivons ci-dessous consiste ` faire en sorte que tout e a programme (linterpr`te charg le premier, les programmes quil charge, les proe e grammes chargs par ceux-l`, etc.) dispose, dans la zone de pile o` se trouvent e a u ses param`tres, dune adresse mmoire qui lui permet de reprer la zone oce e e cupe par ses zones TEXT, DATA et BSS. e

2.3

Droulement du chargement/lancement e

La gure 20.2 illustre les tats successifs de la mmoire (pile dexcution et e e e zone occupable par le code et les donnes des programmes lancs), depuis une e e situation o` un programme Psapprte ` lancer un programme Q, jusqu` la u e a a situation o` le programme Q a t install et est en cours dexcution, prt ` u ee e e e a charger et installer lui-mme un autre programme. e 2.3.1 Etat de la mmoire quand un programme sapprte ` en e e a charger et lancer un autre

La gure 20.2-(a) illustre linvariant ` respecter : un programme P est a en cours dexcution, et sapprte ` demander le chargement/lancement dun e e a programme Q. Les zones TEXT, DATA et BSS du programme P sont en mmoire vive, e

http://fribok.blogspot.com/

2. Mcanisme de base : le chargeur/lanceur e

491

...

TDB (R) Adresses ZoneP TDB (P) faibles

Adresses fortes

SP

Variables locales de P FP Sauv. FP de R Ad. Retour dans R

http://fribok.blogspot.com/ ...

492

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

vers les adresses faibles. Le contexte dynamique de P occupe une portion de pile situe vers les adresses fortes, entre les adresses pointes par les registres e e SP (pointeur de pile) et FP (pointeur de base denvironnement). Au-dessus (vers les adresses faibles) de la zone occupe par les zones TEXT, e DATA et BSS de P, on trouve les zones TEXT, DATA et BSS des programmes qui ont lanc P (R sur la gure), dont la procdure dinitialisation du syst`me, e e e tout en haut. En dessous (vers les adresses fortes) de ladresse pointe par FP, on trouve e les environnements des procdures de P appeles par la procdure principale e e e et, encore en dessous, les environnements des procdures du programme qui a e lanc P. e Nous dcrivons ci-dessous les tapes du chargement/lancement. e e 2.3.2 Appel de la procdure de chargement/lancement e

La gure 20.2-(a) dcrit ltat de la mmoire lorsque le programme P e e e sapprte ` charger un programme Q. e a La gure 20.2-(b) dcrit ltat de la mmoire apr`s les tapes suivantes : e e e e e Appel de la procdure C de chargement/lancement par la procdure du e e programme P en cours dexcution : cette procdure empile les param`tres e e e pour C, qui comportent : le nom du chier contenant le programme Q a ` lancer, et les param`tres pour Q ; le nom du chier est plac tout en e e haut (en dernier). La structure dtaille des param`tres pour C est donne e e e e gure 20.1-(b). Lappel de C proprement dit empile ladresse de retour dans P () . Installation de lenvironnement de la procdure de chargement/lancement e (voir chapitre 13 et la gestion du lien dynamique) : sauvegarde du pointeur de base de lenvironnement de lappelant dans la pile, et mise en place du pointeur de base de lenvironnement de la procdure de chargement ; e dplacement du pointeur de pile pour mnager un espace pour les variables e e locales de la procdure. e Les variables locales de C sont dcrites par le lexique suivant : e
Taille : un entier { taille de mmoire ncessaire ` linstallation du proe e a gramme } PFichier : un descripteur de chier { Cf. Chapitre 19 } EnTete : une entte de chier excutable{ Cf. Chapitre 18 } e e

2.3.3

Excution de la procdure de chargement/lancement e e

La gure 20.2-(c) illustre ltat de la mmoire apr`s ltape dcrite dans ce e e e e e paragraphe. Le code de la procdure de chargement/lancement commence par accder e e au param`tre qui donne ladresse du nom du programme ` charger (on suppose e a que cest un nom absolu pour linstant) puis appelle la procdure douverture e

http://fribok.blogspot.com/

2. Mcanisme de base : le chargeur/lanceur e

493

de chier dapr`s son nom (Cf. Chapitre 19). Les param`tres ` lui passer sont : e e a ladresse du nom de chier, le mode douverture (ici lecture), ladresse de la variable PFichier. La procdure douverture peut chouer, et rendre un code e e derreur dans un registre ; dans ce cas la procdure de chargement se termine, e en conservant ce code de retour (voir dernier point). Lorsque louverture du chier sest bien passe, la variable PFichier est e pertinente, et peut servir ` raliser les acc`s suivants. Ltape suivante est a e e e lappel de la procdure du SGF qui permet de lire une portion du chier de e la taille de EnTete, ` partir du dbut du chier. Les param`tres ` lui passer a e e a sont : ladresse de PFichier, ladresse de EnTete. Si tout se passe bien, la variable EnTete contient ensuite la description des zones du chier excutable, e ainsi quun marqueur qui indique la nature du chier. Si ce nest pas un chier excutable, cela constitue un nouveau cas o` la procdure de chargement e u e choue, en rendant un code derreur. Si le chier est bien un chier excutable, e e on peut poursuivre. Le code de la procdure de chargement/lancement consiste ensuite ` calcue a ler la taille de la zone mmoire ncessaire ` linstallation du code et des donnes e e a e du programme Q. Len-tte du chier excutable donne les tailles respectives e e des zones TEXT, DATA et BSS du programme. La variable Taille est aecte e a ` la somme de ces tailles (ventuellement arrondie au multiple de 4 ou de 8 e suprieur, si ce nest pas dj` fait dans le chier excutable, pour satisfaire ` e ea e a des contraintes dalignement en mmoire vive). e Il faut ensuite allouer une zone mmoire pour le programme ` lane a cer et dterminer ainsi ladresse de chargement. Nous avons vu au parae graphe 2.2.2 que la zone de mmoire utilise pour installer le code des proe e grammes que lon charge est gre en pile, dans notre syst`me simple. Il ee e sut donc de dplacer le pointeur de dbut de la zone de mmoire libre, ` e e e a partir de son ancienne position. Cette position est connue et vaut, pendant lexcution de C, ZoneP = MEM [MEM[FP] + ]]. Il sut donc de calculer e ZoneQ ZoneP + Taille. La gure 20.2-(c) montre le rsultat de lallocation : la zone disponible pour e Q est comprise entre les adresses ZoneP incluse et ZoneQ exclue. La procdure C poursuit en recopiant le chier excutable en mmoire vive, e e e a ` partir de ladresse ZoneP, vers les adresses fortes, cest-`-dire entre ZoneP a incluse et ZoneQ = ZoneP + taille exclue. Elle applique ensuite lalgorithme de translation des adresses. Pour cela il faut lire dans le chier toujours ouvert la zone des donnes de translation TEXT et la zone des donnes de translation e e DATA. Le chier ne sert plus ` rien ensuite, et peut donc tre referm. Le a e e mot mmoire qui contient ladresse du nom du chier ` charger (juste sous e a ladresse de retour dans lappelant du chargeur, marqu dune * sur la gure) e peut tre cras, puisque le nom ne sert plus ` rien. On y range ladresse ZoneQ e e e a (Cf. Figure 20.2-(c)). Lun des champs de len-tte donne le dcalage Dcal du point dentre du e e e e programme Q par rapport au dbut de sa zone TEXT : cest ladresse relative e

http://fribok.blogspot.com/

494

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

de sa procdure principale. Ce dcalage est stock dans un registre, puis le e e e pointeur de pile est ramen ` la base de lenvironnement de la procdure de ea e chargement par SP FP. Le pointeur FP est replac sur la base de lenvie ronnement de lappelant par FP MEM[FP]. On calcule ladresse absolue du point dentre du programme ` lancer, dapr`s ladresse du dbut de la zone e a e e qui lui a t alloue (ZoneP) et le dcalage du point dentre. Cette adresse ee e e e absolue est range dans la pile ` ladresse SP : MEM[SP] ZoneP + Dcal e a e ().

2.3.4

Lancement eectif du programme charg e

Il ne reste plus quune tape pour atteindre ltat dcrit par la gure 20.2e e e (d), dans lequel le programme Q est install et en cours dexcution. On sest e e ramen ` linvariant dcrit par la gure 20.2-(a), Q peut lui-mme charger et ea e e lancer un autre programme. Une instruction type rts du langage machine 68000 sut () : son excution e dpile ladresse absolue du point dentre du programme Q dans le compteur e e programme. On entre donc dans le code de la procdure principale du proe gramme Q avec SP pointant sur ladresse de retour dans P, et FP pointant sur la base de lenvironnement de P. Le prologue de la procdure principale de Q e installe la sauvegarde du pointeur de base, dplace FP, puis dplace SP pour e e mnager la place des variables locales de la procdure principale de Q. e e Les param`tres pour Q, qui lui avaient t transmis par P via C, sont e ee disponibles dans la pile ` lendroit habituel, ` partir de FP+3 4 (les adresses a a tant stockes dans 4 octets). e e

2.3.5

Terminaison de la procdure de chargement/lancement e

En cas derreur lors du chargement, la procdure de chargement/lancement e se termine comme une procdure normale, avec un code de retour transmis ` e a son appelant P. Lorsque le chargement se passe bien, au contraire, la procdure de chare gement/lancement ne se termine pas comme une procdure normale : elle se e transforme en la procdure qui correspond au programme charg, qui lui a la e e structure dune procdure normale. e Quand la procdure principale du programme charg se termine, par une e e squence de terminaison normale de procdure, elle trouve en sommet de pile e e ladresse de retour dans lappelant du chargeur. On retourne donc dans lappelant du chargeur directement.

http://fribok.blogspot.com/

3. Programmation de linterpr`te de commandes e

495

2.4

Allocation dynamique de mmoire par e le programme lanc e

Nous avons dcrit comment est ralise lallocation de mmoire pour un e e e e programme, lors de son chargement en mmoire. Outre la mmoire alloue une e e e fois pour toutes, qui contient son code et ses donnes, le programme, lorsquil e sexcute, utilise galement la pile dexcution. e e e Il nous reste ` tudier comment et o` se font les ventuelles allocations a e u e dynamiques de mmoire, demandes par le programme charg, qui peut faire e e e appel ` des procdures Allouer, Librer telles quelles sont dcrites au chapitre 4. a e e e Tout dabord, le code de ces procdures peut faire partie du syst`me de e e base, et tre install en mmoire en permanence. Il peut aussi tre stock dans e e e e e une biblioth`que de fonctions, lie au code de notre programme. Dans ce cas e e les procdures font partie du code du programme charg. e e En quoi consiste lalgorithme des actions Allouer et Librer ? La premi`re e e question est : quelle zone de mmoire vive peut-elle tre rserve par le proe e e e gramme ? Autrement dit, o` reste-t-il de la place, et pour quelle partie de la u mmoire le programme lanc a-t-il le moyen de dclarer que la zone est rserve e e e e e a ` son usage exclusif ? Dans le cas de notre syst`me simple, il sut que le programme charg e e augmente articiellement la zone de mmoire qui lui a t alloue pour ses e ee e zones TEXT, DATA et BSS lors de son chargement. Pour cela, la procdure e dallocation dune zone de taille T appele par la procdure principale du e e programme P doit excuter : e
rsultat MEM[FP + ] e MEM[FP + ] MEM[FP + ] + T

La zone de mmoire comprise entre lancienne valeur de MEM[FP + ] e comprise et la nouvelle valeur exclue est utilisable par le programme P comme il lentend. Il en conna ladresse, ayant reu le rsultat rsultat de la procdure t c e e e dallocation. Les procdures dallocation et de libration peuvent ou non proter dune e e gestion disperse de la mmoire. e e

3.

Programmation de linterpr`te e de commandes

Linterpr`te de commandes est le programme lanc par la procdure globale e e e de dmarrage du syst`me. Il est fait pour tre actif pendant toute la dure de e e e e vie du syst`me ; quand sa procdure principale se termine, le contrle revient e e o dans la procdure de dmarrage (Cf. Paragraphe 1.3). e e

http://fribok.blogspot.com/

496

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

3.1

Lecture de commandes et utilisation du chargeur/lanceur

Lalgorithme le plus simple encha une lecture de ligne de commandes, ne lanalyse lexicale et syntaxique de ce texte, et linvocation de la procdure de e chargement/lancement pour excuter le programme requis par lutilisateur. e
Lexique Fin : un boolen ; L : un tableau de caract`res e e NomProg : un tableau de caract`res e Param : un tableau de tableaux de caract`res e NbParam : un entier 0 Algorithme Fin faux rpter jusqu` Fin e e a { Lecture dune ligne de commande par appel du pilote de clavier. } L ... { Analyse lexicale et syntaxique de la ligne L : fournit NomProg, Param et NbParam } si NomProg = Quitter alors Fin vrai sinon { Passage de param`tres au chargeur/lanceur : les param`tres ` destie e a nation du programme ` lancer dabord, le nom du programme ` lancer a a en dernier. } i parcourant 1..NbParam : Empiler la cha Param[i] ne Empiler la cha NomProg ne i parcourant 1..NbParam : Empiler les adresses des cha nes prcdentes e e empiler NbParam empiler adresse de NomProg appel de la procdure charger lancer e { On revient directement l` quand le programme charg a termin. } a e e dpiler param`tres de charger lancer e e { Fin de linterpr`te. On retourne dans lappelant du chargeur qui lavait e install, cest-`-dire le programme de dmarrage, qui soccupe de terminer e a e le syst`me proprement. } e

3.2

Commandes intrins`ques et informations gres e e e par linterpr`te e

Nous avons dj` vu le traitement particulier du mot Quitter dans lalgoea rithme de linterpr`te donn ci-dessus. Rien nempche dimaginer de nome e e breux autres mots ainsi interprts directement par le programme interpr`te ee e de commandes, sans que cela se traduise par le chargement en mmoire dun e chier excutable disponible dans le SGF. e

http://fribok.blogspot.com/

3. Programmation de linterpr`te de commandes e

497

3.2.1

Commandes intrins`ques de linterpr`te de commandes e e

Nous reprenons Figure 20.3 lalgorithme dinterprtation des commandes, e en illustrant comment sont traites les commandes intrins`ques. Noter la prioe e rit de la commande intrins`que sur une commande qui aurait le mme nom, e e e et qui correspondrait ` un chier excutable eectivement disponible dans le a e SGF. Toutefois la reconnaissance des noms de commandes intrins`ques se fait e sur une galit stricte des cha e e nes de caract`res, et il en gneral possible de e e contourner cette priorit grce aux direntes dsignations dun mme chier e a e e e quore un SGF ` structure hirarchique. Par exemple, dans un interpr`te de a e e commandes typique dunix comme csh, pushd est une commande intrins`que e (built-in command en anglais ; taper which pushd dans un interpr`te csh pour e voir appara le message pushd : shell built-in command). Si lon crit tre e un programme dont le chier excutable sappelle pushd, dans le rpertoire e e courant, il sut de taper ./pushd pour contourner la dtection des noms de e commandes intrins`ques par linterpr`te. e e 3.2.2 Caract`res spciaux du langage de commandes e e

On dcrit une exprience ` faire dans un syst`me permettant de dsigner e e a e e un ensemble de chiers ` laide dun caract`re spcial. a e e Dans les interpr`tes de commandes du syst`me unix, *.c reprsente lene e e semble des chiers de suxe .c. La commande ls ache ` lcran la liste des a e chiers du rpertoire courant. La commande ls *.c permet alors dacher la e liste des chiers de suxe .c. Lorsque lon donne cette commande ` linterpr`te a e du langage de commandes, par qui est trait le caract`re spcial * ? e e e Une exprience ` raliser pour guider la rexion est la suivante : crire e a e e e un programme EcrireParam qui accepte des param`tres sur la ligne de come mandes et les ache (Figure 20.4). Demander son excution dans un interpr`te e e de commandes, en tapant EcrireParam *.c, et observer lachage. Si lon observe *.c, cest que le caract`re * nest pas interprt de mani`re e ee e spcique par linterpr`te de commandes ; si lon observe eectivement la liste e e de tous les noms de chiers termins en .c du rpertoire courant, cest que le e e caract`re * est interprt par linterpr`te de commandes. e ee e 3.2.3 Gestion de rpertoires courants e

Nous avons dj` vu au chapitre 19 que le syst`me de gestion de chiers ea e peut proposer une notion de rpertoire courant, ainsi que les fonctions qui e permettent de le xer et de linterroger. Linformation sur le rpertoire coue rant est une variable globale du syst`me de gestion de chiers, et les fonce tions qui la consultent ou la modient sont implantes comme des programmes e excutables disponibles dans le SGF. Lorsque lutilisateur tape la commande e GetRepCour dans un interpr`te de commandes, le chier excutable correspone e

http://fribok.blogspot.com/

498

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

Lexique Fin : un boolen e L : un tableau de caract`res e NomProg : un tableau de caract`res e Param : un tableau de tableaux de caract`res e CommandesIntrins`ques : un ensemble de tableaux de caract`res e e { Les noms des commandes directement traites dans la boucle dine terprtation, dont Quitter } e NbParam : un entier 0 Algorithme { Diverses initialisations } Fin faux rpter jusqu` Fin e e a { Lecture dune ligne par appel du pilote de clavier. } L ... { Analyse lexicale et syntaxique de la ligne L : fournit NomProg, Param et NbParam } si NomProg CommandesIntrins`ques e selon NomProg NomProg = comm1 : ... NomProg = comm2 : ... NomProg = Quitter : Fin vrai ... sinon { Squence dappel du chargeur/lanceur, voir paragraphe 3.1 cie dessus. } { Fin de linterpr`te. } e Fig. 20.3 Commandes intrins`ques de linterpr`te de commandes e e

void main(int argc, char *argv[]) { int i ; for (i=0 ;i<argc ;i++) printf("Argument no %d : %s ", i, argv[i]) ; } Fig. 20.4 Un programme C qui imprime ses param`tres e

http://fribok.blogspot.com/

3. Programmation de linterpr`te de commandes e

499

dant est charg en mmoire, excut, rend un rsultat, et ce rsultat est ach e e e e e e e par linterpr`te de commandes. e Il est important de noter que, si le SGF nore pas la notion de rpertoire e courant, il est impossible de lintroduire au niveau de linterpr`te de come mandes. Linformation sur le rpertoire courant devrait tre une variable du e e programme interpr`te, et les fonctions de consultation et modication de cette e variable des commandes intrins`ques. La prise en compte dune notion de e rpertoire courant devrait tre assure par lalgorithme de linterpr`te, qui dee e e e vrait prxer systmatiquement les noms de chiers non absolus (ceux qui ne e e commencent pas par un caract`re slash, dans la syntaxe unix) par la cha e ne de caract`res rpertoire courant. Mais linterpr`te de commandes na aucun e e e moyen de savoir lesquels, parmi les arguments dune commande, sont des noms de chiers. Seul le programme lanc sait lesquels de ses param`tres sont des e e noms de chiers, et pour ceux-l` il appelle les fonctions dacc`s du SGF, lesa e quelles peuvent prxer le nom par le rpertoire courant. La commande cd e e (change directory) des interpr`tes de unix usuels ne peut donc pas tre une e e commande intrins`que : elle fait appel ` la fonction correspondante du SGF. e a En revanche, il est possible de grer, dans linterpr`te de commandes, une e e pile de rpertoires. On introduit alors empiler et dpiler, comme spcis e e e e au chapitre 4, paragraphe 5.1, sous forme de commandes intrins`ques. Par e exemple, dans linterpr`te csh de syst`mes unix, ces commandes sappellent e e pushd et popd. Une telle commande met ` jour la variable pile de linterpr`te a e de commandes, et appelle la fonction SetRepCour du SGF.

3.2.4

Gestion dune liste de chemins dacc`s privilgis e e e aux commandes

Une autre fonction couramment oerte par les interpr`tes de commandes e est la gestion dune liste de chemins dacc`s privilgis aux commandes que e e e lutilisateur est susceptible de taper. Linterpr`te de commandes g`re alors un tableau des prxes possibles pour e e e la dsignation dun chier et utilise celui-ci dans lordre lors de lacc`s ` un e e a chier. Lutilisateur dispose de commandes intrins`ques permettant dacher la e liste des prxes dans lordre utilis par linterpr`te et de modier cette e e e liste. En gnral, linterpr`te de commande est initialis avec une liste de e e e e prxes prdnie. Par exemple dans le syst`me unix, on trouve /usr/bin e e e e et /usr/local/bin dans la valeur initiale de la variable path, spciant les e prxes possibles pour les chiers. e Nous donnons Figure 20.5 ci-dessous un complment ` lalgorithme de line a terpr`te de commandes du paragraphe 3.1. Nous supposons que le prxe est e e spar du nom du chier par le caract`re slash comme en unix. e e e

http://fribok.blogspot.com/

500

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

Lexique ... Prxes : un tableau de tableaux de caract`res e e { Les prxes possibles pour un nom de chier correspondant ` une e a commande } NbPrxes : un entier 0 e ok : un boolen ; j : un entier e Algorithme { Diverses initialisations dont celle du tableau Prxes et de la variable e NbPrxes } e ... rpter jusqu` Fin e e a ok faux ; j 1 tant que (non ok) et (j NbPrxes) e Empiler les param`tres ` destination du programme ` lancer e a a Empiler la cha Prxes[j] & / & NomProg ne e { On a empil le nom du programme ` lancer. & est loprateur e a e de concatnation de cha e nes de caract`res } e { Empiler les adresses des cha nes prcdentes, le nombre de pae e ram`tres et ladresse du nom du programme ` lancer } e a Appel du chargeur/lanceur { Si le chargeur ne trouve pas le chier demand, il rend un code e derreur FICHIER NON TROUVE (Cf. Paragraphe 2.1.2). } si rsultat = FICHIER NON TROUVE e alors j j+1 { on va essayer avec un autre prxe } e sinon ok vrai { on sort de la boucle } si (non ok) alors Ecrire (Commande non trouve) e sinon { le programme a t excut, dpiler les param`tres du charee e e e e geur/lanceur } { Fin de linterpr`te. } e Fig. 20.5 Gestion dune liste de chemins dacc`s e

http://fribok.blogspot.com/

4. Fonctions volues des interpr`tes de commandes e e e

501

4.
4.1

Fonctions volues des interpr`tes e e e de commandes


Langages de commandes graphiques

Les interpr`tes de commandes ne sont pas ncessairement textuels. Ainsi e e les syst`mes dexploitation qui orent des interfaces graphiques volues proe e e posent un langage de commandes dit icnique : les principales commandes sont o reprsentes par des icnes, ou des boutons, sur lesquels il sut de cliquer pour e e o activer la commande. Dans ce cas il ny a pas de phase danalyse lexicale et syntaxique des textes taps par lutilisateur. e Un exemple typique concerne la manipulation qui permet de dplacer ou e copier des chiers dans une interface type windows ou macintosh : en cliquant sur une icne qui reprsente un chier, et en dplaant la souris, on o e e c dplace ou copie le chier. Dans un langage de commandes textuel, cela core respond ` une commande du genre : mv nom1 nom2, o` nom1 et nom2 sont des a u noms absolus ou relatifs du syst`me de gestion de chiers. e

4.2

Structures de contrle o

Les langages de commandes icniques sont souvent plus faciles ` utiliser o a que les langages textuels, mais moins puissants. En eet, les langages de commandes textuels peuvent tre tendus facilement jusqu` devenir de vritables e e a e langages de programmation, par lajout de structures de contrle. Pour raliser o e le mme traitement sur tous les chiers dun rpertoire qui se terminent en e e .fig, on crit une boucle. Dans le langage csh des syst`mes unix, on crit par e e e exemple :
foreach i (ls) # pendant lexec. de la boucle, la variable # tous les fichiers obtenus par la commande set j=basename $i .fig # recuperer nom if ($i == $j) then # le fichier ne echo $i " : fichier ignore" else echo -n "[fichier " $i "traite ..." ... commandes portant sur le fichier de echo "]" endif end

$i parcourt ls. de base, sans extension se termine pas par .fig

nom $i

On reconna tra aisment dans le texte de programme ci-dessus des struce tures de contrle similaires ` celles prsentes au chapitre 4. Les actions de o a e e base, en revanche, sont tr`s direntes. Dans un langage de programmation e e ordinaire, on y trouve principalement laectation et les entres/sorties. Ici on e

http://fribok.blogspot.com/

502

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

a aaire ` un langage ddi ` la description de commandes syst`me. Parmi a e e a e les actions de base du langage de commandes, on trouve donc en particulier linvocation de tous les programmes syst`me de base (appel du programme ls e du SGF dans lexemple ci-dessus).

http://fribok.blogspot.com/

Sixi`me partie e Architecture des syst`mes e matriels et logiciels complexes e

http://fribok.blogspot.com/

Chapitre 21 Motivations pour une plus grande complexit e


Les parties I ` V de cet ouvrage prsentent tout ce qui est ncessaire ` la a e e a construction dun ordinateur, au sens dni dans lintroduction. La machine e simple tudie comprend un organe de calcul (le processeur), de la mmoire et e e e des priphriques dentre/sortie. Nous lavons dautre part quip du logiciel e e e e e de base minimal ncessaire ` son utilisation : un syst`me de gestion de chiers, e a e des outils de cration de programmes, un interpr`te de commandes. e e Toutefois les ordinateurs rels sont des syst`mes matriels et logiciels plus e e e complexes que cela. Lobjet de ce chapitre est de comprendre les motivations qui prsident ` la dnition de syst`mes matriels et logiciels complexes, e a e e e reprsentatifs de la plupart des ordinateurs actuels. e Nous commenons par dnir prcisment, paragraphe 1., ce que nous c e e e appelons par la suite un syst`me complexe. Pour rpondre aux besoins ns e e e des utilisations complexes envisages, un nouveau mcanisme est dtaill e e e e au paragraphe 2. et son application aux besoins des syst`mes complexes e est voque paragraphe 3. Le paragraphe 4. donne un plan dtaill de la e e e e partie VI de cet ouvrage.

1.

Quappelle-t-on syst`me complexe ? e

Les syst`mes avec lesquels nous avons lhabitude de travailler sont mule titches et multi-utilisateurs. Ce sont deux notions tr`s direntes, et quasia e e ment indpendantes lune de lautre, que nous dtaillons ci-dessous. Par ailleurs e e ces syst`mes donnent des droits dirents ` dirents programmes. e e a e

1.1

Syst`mes multitches e a

Considrons une situation courante dutilisation dun ordinateur persone nel : lutilisateur humain est occup ` taper un courrier, dans une fentre dun ea e

http://fribok.blogspot.com/

506

Motivations pour une plus grande complexit e

diteur de textes quelconque ; lhorloge ache en permanence sur lcran proe e e gresse rguli`rement ; un transfert de chiers demand par lintermdiaire dun e e e e butineur Internet est en cours, etc. Lordinateur considr poss`de un procesee e seur, voire 2, mais de toutes faons en nombre largement infrieur au nombre c e dactivits direntes qui semblent se drouler simultanment. Il faut donc e e e e bien imaginer que la ressource processeur est partage entre les dirents proe e grammes qui supportent les activits de lutilisateur. Pourtant ce partage est e quasiment non perceptible par ltre humain : lditeur de textes se comporte e e de mani`re uniforme dans le temps (lcho ` lcran des caract`res taps au clae e a e e e vier ne para pas suspendu) ; lhorloge avance rguli`rement et marque lheure t e e juste, etc. Dautre part lutilisateur clair qui cre de nouveaux programmes e e e destins ` cet ordinateur na pas ` se proccuper, en gnral, du partage du proe a a e e e cesseur. Il crit des programmes sans savoir sils seront excuts par un syst`me e e e e monotche ou multitches. Il nous faut donc maintenant supposer lexistence a a dun mcanisme de gestion de la ressource processeur, capable dintervenir sur e le droulement normal dun programme. e

1.2

Syst`mes multi-utilisateurs e

Les syst`mes que nous utilisons couramment sont galement multie e utilisateurs, cest-`-dire que des personnes direntes peuvent utiliser les resa e sources de la machine, simultanment ou squentiellement. Sils lutilisent sie e multanment, ce nest quun cas particulier de fonctionnement multitches ; il e a faut toutefois prvoir plusieurs organes priphriques, typiquement plusieurs e e e couples cran/clavier connects au mme processeur. Cest le cas des ordinae e e teurs serveurs, sur lesquels sont branchs de nombreux terminaux. e La spcicit dun fonctionnement multi-utilisateurs tient ` la notion de e e a proprit qui peut tre attache aux informations persistantes comme les ee e e chiers. La notion de proprit des donnes conduit ` proposer des mcanismes ee e a e de protection, ` dirents niveaux : lacc`s par mot de passe qui permet de a e e protger les espaces disques, cest-`-dire les donnes persistantes des dirents e a e e utilisateurs ; un mcanisme actif pendant les excutions de programmes, de e e mani`re ` viter (ou du moins ` contrler srieusement), les interactions entre e ae a o e programmes de dirents utilisateurs. e

1.3

Hirarchie de droits e

Un syst`me dexploitation assure un partage de comptences entre ce quon e e appelle les utilisateurs, et les concepteurs de syst`mes dexploitation. On peut e tablir une hirarchie, depuis lutilisateur du traitement de texte, qui met lore e dinateur sous tension et lance un logiciel, jusquau dveloppeur qui a proe gramm les pilotes de disques et dimprimante, en passant par celui qui a e programm le traitement de textes. La protection, dans ce contexte, consiste e

http://fribok.blogspot.com/

2. Scrutation

507

a ` introduire des mcanismes qui permettent, entre autres, dinterdire ` lutie a lisateur nal de raliser des oprations de tr`s bas niveau sur le disque. Les e e e acc`s aux entres/sorties sont rservs aux programmes qui ont t conus e e e e ee c par les dveloppeurs du syst`me dexploitation. Il faut donc un mcanisme e e e de vrication que tous les acc`s aux entres/sorties, faits apparamment par e e e lutilisateur nal, se font bien, en ralit, ` travers des programmes dment e e a u certis. Cette vrication se fait pendant lexcution, sans que lutilisateur ne e e e sen aperoive. c

2.

Scrutation

En fait tout se ram`ne ` un probl`me de scrutation. De faon intuitive, dans e a e c un syst`me complexe il va falloir scruter quelques vnements intrieurs ou e e e e extrieurs, cest-`-dire consulter une information de temps en temps, et prvoir e a e un branchement ` un traitement adquat si elle a une valeur particuli`re. Cette a e e information peut tre lie au temps qui passe ou ` une infraction aux droits e e a dacc`s par exemple. Cela peut permettre de grer les aspects de partage de e e temps, les aspects de protection et de ragir ` des erreurs. e a Observons tous les niveaux o` il est possible dinsrer une action entre u e des instructions pour assurer une rgularit de la scrutation. On trouve e e grossi`rement trois niveaux : les programmes en langage de haut niveau des utie lisateurs ; les programmes en assembleur produits par compilation ; linterpr`te e du langage machine. On na pas vraiment le choix : la scrutation doit tre eectue le plus bas e e possible. Il est intressant de raliser la scrutation une seule fois, de ne pas faire e e conance aux divers programmes utilisateurs pour a, et de faire en sorte c que les couches de niveau le plus haut soient le plus possible indpendantes e de ce mcanisme de scrutation ; en eet le programmeur de haut niveau na e parfois mme pas connaissance des vnements ` observer. Il faut donc que la e e e a scrutation soit prvue dans le processeur, et pour cela il faut intervenir dans e lalgorithme dinterprtation des instructions. e On sait intgrer la scrutation dans linterpr`te de langage machine sans trop e e le ralentir ce qui nest pas le cas si on lint`gre dans les couches suprieures. e e Le cot en temps de la scrutation est nul ou drisoire en la ralisant au niveau u e e de linterpr`te de langage machine. e Notons que la scrutation matrielle najoute pas dtats au graphe de e e contrle du processeur, seulement des transitions. Par du matriel, un o e e e e e e c e clatement n aire apr`s un tat est ralis de la mme faon quun clatement e binaire. Ce nest pas le cas pour les syst`mes programms ou microprogramms. e e e Le fait de placer la scrutation dans linterpr`te de langage machine permet e davoir un certain contrle sur la frquence ` laquelle se fait la scrutation. Au o e a contraire si on le fait dans les programmes utilisateurs, on ne ma trise pas bien

http://fribok.blogspot.com/

508

Motivations pour une plus grande complexit e

le lien avec le temps physique ; on pourrait placer deux scrutations de part et dautre dune boucle qui se rv`lerait tr`s longue pour certaines donnes. e e e e Le mcanisme de scrutation est aussi utilis pour la dtection de certaines e e e erreurs. Supposons par exemple que lon excute une division avec un diviseur e nul. Qui se rend compte du probl`me ? Le programmeur peut encadrer toute e opration de division de son programme de haut niveau par un test ; il traite les e cas derreur comme bon lui semble. Ou bien le compilateur peut produire un code assembleur qui contient exactement ces tests, et un saut ` une procdure a e de traitement derreur dnie dans le compilateur. Comment linformation sur e cette erreur remonte-t-elle au programme, ou au moins ` la personne qui fait a excuter le programme ? e Lors de lexcution dune division, le processeur vrie que le diviseur nest e e pas nul. Le cas chant, une action particuli`re est dclenche. Les dirents e e e e e e programmeurs peuvent avoir connaissance des rsultats de cette action et proe grammer un message derreur pour lutilisateur nal.

3.
3.1

Mcanisme dinterruption : dnition et e e types dutilisations


Dnition et utilisations typiques e

Le mcanisme dinterruption est une mani`re astucieuse de faire cooprer e e e le matriel et le logiciel en utilisant le mcanisme de scrutation. On ne sait pas e e la mettre en oeuvre avec les lments prsents dans les chapitres prcdents. ee e e e e Une interrution est la prise en compte dun vnement qui sest produit e e dans le processeur lui-mme ou dans une autre unit matrielle qui lui est e e e associe. e Une interruption peut tre lie ` linstruction en cours dexcution. On e e a e parle alors dinterruption interne. Considrons par exemple le mcanisme de changement de fentre de ree e e gistres du sparc (Cf. Chapitre 13). Lors de lexcution dune instruction save e pour dcaler la fentre, il faut sassurer que cest encore possible. Dans le cas e e o` il ne reste pas de fentre libre il est ncessaire de raliser la sauvegarde dune u e e e fentre dans la pile. Lors de lexcution dun restore il faut ventuellement e e e raliser la restauration dune fentre depuis la pile. Le schma de codage que e e e nous avons propos impose de faire, en dbut de procdure un dcalage dans e e e e un sens avec test de dbordement et sauvegarde, ` la n un dcalage dans e a e lautre sens avec test de vide et restauration. En ralit, sur le sparc, on crit e e e seulement save, restore, et le processeur assure les sauvegardes et restaurations de faon transparente pour le programmeur. Cest le mcanisme des c e interruptions qui est mis ` contribution. a Il existe des interruptions qui ne sont pas lies ` linstruction en train de e a sexcuter sur le processeur. On les appelle interruptions externes. e

http://fribok.blogspot.com/

3. Mcanisme dinterruption : dnition et types dutilisations e e

509

Par exemple, la prise en compte dune baisse de tension peut permettre dinterrompre un traitement en cours dexcution pour eectuer une sauvee garde sur disque dinformations importantes. Cela peut tre ralis de mani`re e e e e compl`tement transparente pour notre programme, grce au mcanisme des e a e interruptions. Le programmeur na pas besoin dajouter dans ses programmes une action de vrication que lalimentation de lordinateur fonctionne correce tement ! De mme la dtection des dbut et n de traitement dune unit e e e e dentres/sorties peut permettre doptimiser lutilisation du priphrique. e e e On appelle mcanisme dinterruption une scrutation incluse dans le proe cesseur et permettant de lancer des programmes associs. Ce mcanisme est e e plus ou moins congurable. Par exemple lors de lassemblage dun ensemble dunits priphriques ` un processeur, on pourra xer les adresses des proe e e a grammes traitant les vnements lis ` ces priphriques. En gnral, il est e e e a e e e e prvu un syst`me de branchement avec indirection, les adresses de branchee e ment tant stockes dans une table en mmoire. e e e

3.2

Aspects temporels de lutilisation

On peut distinguer deux types dutilisations du mcanisme dinterruption e selon lvolution temporelle des vnements ` grer (Cf. Chapitre 6). e e e a e Dans le cas o` le rythme des vnements ` prendre en compte est u e e a compl`tement impos de lextrieur, on peut supposer, par exemple pour grer e e e e une montre, que lon reoit un signal toutes les secondes. Le programme bien c fait ne doit pas perdre de secondes : il est donc capable de faire la mise ` jour a de sa variable interne en moins de temps quune seconde. Si le programme est mal fait ou la machine pas assez rapide, le fonctionnement sera incorrect. Dans le cas de gestion dentres/sorties, il sagit dun dialogue entre le e processeur et un dispositif situ ` lextrieur. Autrement dit, les signaux ` e a e a scruter sont tels quil ne se passe rien dintressant en dehors des priodes o` e e u le processeur a demand une action ; dautre part quand il reoit ce quil a e c demand, il rpond en disant quil a bien consomm, et le dispositif extrieur e e e e peut se permettre de lui envoyer une nouvelle requte. e Signalons une vision particuli`re du syst`me dinterruptions. Lorsquon proe e gramme sur une machine dj` dote dun syst`me dexploitation, on voudrait ea e e pouvoir utiliser les biblioth`ques de programmes de ce syst`me. Pour cela il e e faudrait conna tre leurs adresses en mmoire. Cest videmment impossible. e e Une liaison statique est donc exclue. Une utilisation du mcanisme dinterrupe tion, ` travers les appels superviseurs que nous dtaillerons dans le chapitre 24, a e permet quand mme dutiliser ces programmes. e

http://fribok.blogspot.com/

510

Motivations pour une plus grande complexit e

4.

Plan de la suite

Pour inclure la gestion de mcanisme dinterruptions dans le processeur il e faut remettre en cause linterpr`te du langage machine. e Dans la suite, nous tudions : e le mcanisme dinterruption lui-mme : principe et rsolution des probl`mes e e e e que son introduction pose, en particulier les probl`mes de relation de temps e entre le processeur et le monde extrieur. e la dnition des fonctions et du fonctionnement dun syst`me complexe e e comme dni plus haut, en utilisant ce nouveau mcanisme. e e Dans le chapitre 22 nous prsentons un mcanisme dinterruption simple. e e On tudie la modication de linterpr`te de langage machine, et on prsente e e e les probl`mes lis. On introduit pour cela une machine simple comportant un e e seul l dinterruption. Cela nous permet de montrer que ce mcanisme dine terruption permet dj` un partage de temps lmentaire entre un programme ea ee principal et un traitant dinterruption. Nous tudions le cas typique de la pene dule : le processeur est partag entre deux activits, et les instructions de e e lun et lautre programmes sont entrelaces de mani`re non ma e e trisable par le programmeur. La lecture de ce chapitre est susante pour comprendre les aspects darchitecture matrielle lis ` lintroduction du mcanisme dinterruption. La suite e e a e constitue une introduction aux couches basses des syst`mes dexploitation mule titches et multi-utilisateurs. a Le partage de temps rudimentaire vu au chapitre 22 est limit au cas e de deux programmes, dont lun est susamment court. Dans le cas gnral e e (par exemple lorsquaucun des programmes ne sarrte !), il faut inventer un e mcanisme un peu plus sophistiqu : la notion de processus et le partage de e e temps, gr par le traitant dinterruption. Cest une brique de base importante ee pour la construction de syst`mes complexes. Cest lobjet du chapitre 23. e Dans le dernier chapitre (24) nous tudions le fonctionnement dtaill e e e des interruptions et leurs utilisations. Nous compltons le processeur du chae pitre 22 pour traiter les aspects lis ` la gestion dinterruptions multiples. Nous e a voquons les probl`mes de protection entre les diverses activits se droulant e e e e dans une machine. Nous montrons enn que le mcanisme des interruptions e permet doptimiser la gestion des entres/sorties prsente au chapitre 16. e e e

http://fribok.blogspot.com/

Chapitre 22 Le mcanisme dinterruption e


Nous allons doter un processeur dun mcanisme capable de scruter le e monde extrieur frquemment, rguli`rement et ` des instants bien identie e e e a ables. Le choix qui est fait est de scruter entre les instructions. On pourrait tout aussi bien construire un processeur o` la scrutation aurait lieu toutes u les 4 instructions. Ce mcanisme permet de mettre en place un partage du e temps entre le programme de lutilisateur et une tche active en fonction a e des rsultats de la scrutation. Ce mcanisme sera enrichi dans les chapitres e e ultrieurs dune scrutation ` des instants particuliers pendant lexcution dune e a e instruction. Le processeur dcrit au chapitre 14 ne convient pas. Il tait fait pour mone e trer les principes de base de ce quest un processeur. Il tait trop simple pour e supporter les extensions dont la scrutation a besoin. La premi`re tape du travail consiste (paragraphe 1.) ` se doter dun e e a processeur pouvant tre tendu aisment par un mcanisme de scrutae e e e tion lmentaire (paragraphe 2.). Nous donnons au paragraphe 3. une ee utilisation typique de ce mcanisme : la mise ` jour de lheure. De nome a breuses autres utilisations existent. Au paragraphe 4., nous voquons les e probl`mes lis aux acc`s concurrents ` des informations partages. e e e a e

1.
1.1

Architecture dun processeur pour la multiprogrammation


Partie oprative du processeur e

La gure 22.1 dcrit lorganisation de la partie oprative du processeur1 . e e Elle est inspire des P.O. types dj` connues. Le processeur dispose de plusieurs e ea registres de N bits (32, typiquement, mais peu importe). Bus adresses et bus
Sassurer avant de continuer la lecture de ce chapitre quon ne confond pas la Partie Contrle (PC) dun processeur et son PC (Program Counter) ou son registre dtat et le o e registre contenant ltat de sa Partie Contrle. e o
1

http://fribok.blogspot.com/

512

Le mcanisme dinterruption e

BusA Regdo,T,.. Rinst, REtat PC,SP,..

Oprateur e

BusB BusC Bus Donnes e Vers la P.C. Bus Adresses TA

Fig. 22.1 Partie oprative schmatique du processeur. Les commandes apparaissent en e e gris, mais leurs noms ne sont pas donns. e e

donnes vers la mmoire font aussi N bits. Les adresses de mots sont des e e multiples de 4. Les registres sont identis par un numro ou un nom. Les e e noms sont principalement une facilit mnmotechnique. Les instructions ont e e 3 oprandes au plus. Comme sur le sparc le registre de numro 0 contient e e la constante 0. Les registres apparaissent sur la gure comme Regdo. SP vaut pour Stack Pointer ; il est utilis comme pointeur de pile. PC vaut pour Program e Counter ; cest le compteur programme. Le programmeur peut les manipuler par des instructions spciales. e Le processeur comporte un registre dtat REtat dont le contenu est accese sible en permanence par la partie contrle. o Tous les registres, y compris le registre dtat, peuvent tre transmis via e e les bus A et B vers loprateur. La sortie de loprateur peut tre transmise e e e dans nimporte quel registre via un bus C. Loprateur est dot de toutes les e e oprations ncessaires : extraction des p bits de poids faible, gnration de e e e e constantes, fabrication des bits dtat Z, N, C, V, etc. e Des commutateurs entre le bus donnes bidirectionnel vers la mmoire et e e les bus B et C permettent les communications dans les deux sens : mmoire e vers registres et registres vers mmoire. e Certains registres ne sont pas directement accessibles par le programmeur dans les instructions : un registre particulier, connu sous le nom de Registre Instruction Rinst, dont le contenu est accessible en permanence dans la partie contrle du processeur ; un registre tampon gnral T sert dintermdiaire de o e e e stockage de valeurs temporaires ; un registre TA sert de Tampon dAdresse, son contenu est transmis sur le bus adresses.

http://fribok.blogspot.com/

1. Architecture dun processeur pour la multiprogrammation

513

1.2

Rpertoire dinstructions e

Les instructions du langage machine sont codes sur un ou deux mots e mmoire. Nous les dcrivons et montrons quel langage dassemblage poure e rait tre le correspondant de ce langage machine. Le processeur dispose des e instructions : Chargement du contenu dun mot mmoire dans un registre et rangement e du contenu dun registre dans un mot mmoire : e Pour ces deux instructions ladresse mmoire est obtenue en ajoue tant le contenu dun registre et une constante contenue dans le deuxi`me mot de linstruction. On peut imaginer si besoin des vae riantes prcisant la taille de loprande et la faon de complter les e e c e oprandes courts. Syntaxiquement, en langage dassemblage, cela donne : e ld [no regA, constante], no regB, st no regB, [no regA, constante] e o` no reg est un numro de registre. u Quand le registre ` ajouter ` la constante est le rea a gistre 0, il serait naturel dadmettre aussi la syntaxe : ld [constante], no regB, st no regB, [Constante]. Il est, par ailleurs possible de doter le langage dassemblage dune pseudoinstruction set pour installer une constante dans un registre ; cest particuli`rement utile quand cette valeur est donne par lintermdiaire dune e e e tiquette qui reprsente une adresse. e e Oprations en tout genre entre deux registres, ou entre un registre et une e constante et rangement du rsultat dans un troisi`me registre : e e La constante est dans le deuxi`me mot de linstruction. Ces instruce tions ne positionnent pas les bits Z, N, C, V du registre mot dtat e REtat. Comme dans le sparc, il existe des variantes des instructions qui positionnent les indicateurs arithmtiques. Ces oprations avec le e e registre 0 comme destinataire positionnent seulement le mot dtat. e Syntaxiquement, en langage dassemblage, cela donne par exemple : add no reg source1, no reg source2, no reg dest, sub no reg source1, constante , no reg dest, addcc no reg source1, no reg source2, no reg dest. Instructions de saut : jmp ou jsr destinataire Le deuxi`me mot des instructions de saut est ajout au contenu dun e e registre pour obtenir ladresse de saut. Pour jsr, il y a empilement de ladresse de retour. Syntaxiquement, en langage dassemblage, cela donne : jmp no reg, constante. On pourrait crire : jmp constante au lieu de e jmp r0, constante. Retour de sous-programme : rts, correspondant au jsr.

http://fribok.blogspot.com/

514

Le mcanisme dinterruption e

PC = 0 PC = PC+4 Inst 1 mot op reg rts

reset

TA = PC Inst 2 mots TA = PC brF

RInst = M[TA] PC = PC+4 op cst

T = M[TA] jsr TA,SP = SP-4 ld M[TA] = PC jmp,brV

reg = (T ou reg)*reg TA = T + rega st TA = SP SP = SP + 4 M[TA] = regb regb = M[TA]

PC = M[TA]

PC = T+(reg ou PC)

Fig. 22.2 Graphe de contrle du processeur, premi`re version. Certains rectangles como e portent 2 lignes distinctes, correspondant ` deux tats successifs, donc ` deux a e a microactions conscutives. Les deux tats seraient spars par une transition e e e e portant sur le prdicat toujours vrai. e

Branchement conditionnel : br destinataire Les conditions portent sur des combinaisons de bits du mot dtat REtat. e Ladresse eective de destination est obtenue en ajoutant le deuxi`me mot e de linstruction et le compteur programme. La condition est donne dans e un champ de linstruction. Syntaxiquement, en langage dassemblage, cela donne : br cond constante Dautres instructions seront ajoutes dans les versions ultrieures de cette e e machine.

On peut rcapituler ces instructions dans un tableau : e


taille 1 mot 1 mot 2 mots 2 mots 2 mots 2 mots 2 mots instruction ret. de ss-prog. arithmtique e arithmtique e acc`s mm. LD e e acc`s mm. ST e e saut branchement options + cc + cc champ1 regs1 regs1 rega rega cond. champ2 regs2 Const. Const. Const. Const. Const. champ3 regd regd regb regb rega

sauv ad. retour

http://fribok.blogspot.com/

2. Introduction dun mcanisme de scrutation lmentaire e ee

515

1.3

Interprtation des instructions e

Le graphe de contrle spciant le comportement de la partie contrle de ce o e o processeur est donn gure 22.2 ; les instructions codes sur 1 mot ncessitent e e e un acc`s mmoire et les instructions codes sur 2 mots en demandent deux. Un e e e certain nombre de dtails napparaissent pas comme les oprations eectivee e ment ralises par loprateur (gures par une * dans le graphe de contrle). e e e e o De mme nous ne prcisons pas la faon dont est eectivement faite la mise e e c a ` jour du compteur programme PC par T+reg ou T+PC, que nous notons : PC = T+(reg ou PC), le mode dadressage et la condition de branchement (brV reprsente tous les branchements o` la condition est value ` vrai, et e u e e a brF les branchements o` la condition est fausse). Ce sont l` deux exemples de u a paramtrisation. e

2.

Introduction dun mcanisme de scrutation e lmentaire ee

Comprendre le mcanisme de scrutation ncessite un double point de vue : e e une vision interne, ce qui se passe ` lintrieur du processeur, et une vision a e externe, ce que le programmeur peut programmer et observer. Du point de vue externe, le mcanisme de scrutation se comporte comme e un appel de sous-programme mais dclench par un changement dtat sur un e e e l plutt quen raison de lexcution dune instruction. o e On introduit dans le processeur ce mcanisme de scrutation du monde e extrieur. Un l dentre du processeur IRQ (pour Interrupt ReQuest) est en e e entre de la partie contrle. Ce l provient directement du monde extrieur. e o e Cela appara sur la gure 22.4. Un sous-programme, nomm conventionnellet e ment traitant, est rang en mmoire. Il se termine ncessairement par une e e e instruction nouvelle : rti. Comme on le verra dans le graphe de contrle de la o gure 22.3 le droulement de linstruction rti ressemble ` celui de linstruction e a rts. Nous les direncierons plus tard. e Lensemble ainsi constitu, un processeur dot de nouvelles fonctionnalits e e e et un nouveau type de programmes, constitue ce que lon appelle un syst`me e dinterruptions.

2.1

Le mcanisme de base, vision interne e

Comme prcdemment, la partie contrle du processeur peut calculer un e e o nouvel tat en fonction du code opration contenu dans Rinst, de ltat du e e e processeur contenu dans REtat et de ltat courant de la partie contrle. De e o plus la partie contrle a acc`s au bit IRQ et peut calculer son nouvel tat en o e e fonction de la valeur de ce bit. Le l IRQ est pris en compte entre deux instructions, cest-`-dire juste apr`s a e

http://fribok.blogspot.com/

516

Le mcanisme dinterruption e

basculement de dpart e TA,SP M[TA] TA TA PC

= = = = =

SP-4 PC 44 M[TA] M[TA]

reset PC = 0

Inst 1 mot rts, rti TA = SP SP = SP+4 PC = M[TA] non IRQ IRQ

PC = PC+4 TA = PC RInst = M[TA] op

Inst 2 mots ...

autres reg = (T ou reg) * reg non IRQ

...

IRQ

Fig. 22.3 Implantation du mcanisme de base dans le graphe de contrle du processeur. e o

la derni`re microaction dune instruction. Sur le graphe de contrle (Cf. Fie o gure 22.3), tout dernier tat dune instruction a donc deux successeurs. Pour e un des successeurs cela revient ` changer dinstruction, comme prcdemment, a e e pour lautre cela revient ` mettre en route une squence dtats particuli`re : le a e e e basculement de dpart. On trouve parfois le terme de changement de contexte. e Si IRQ vaut 0, le processeur passe normalement ` linstruction suivante de a linstruction qui vient de nir. La suivante peut tre celle crite ` la suite ou, e e a si la derni`re instruction est un branchement, cest linstruction qui se trouve e a ` ladresse de saut. Dans les deux cas, au moment de la prise en compte de IRQ, ladresse de cette instruction suivante est dans le compteur programme PC. Si IRQ vaut 1, la squence de basculement de dpart a lieu : ladresse e e de linstruction suivante prsente dans PC est sauvegarde, dans la pile, ` la e e a faon dun jsr. Puis la nouvelle adresse, celle de dbut du sous-programme c e traitant, est force dans le compteur programme. Il y a ainsi basculement du e programme normal au programme traitant. Cette adresse nest pas fournie par une instruction comme dans le cas du jsr. Elle est force par le processeur e lui-mme en interne. Cela peut tre une constante. Ou, comme nous le choisise e sons ici, une valeur range en mmoire ` une adresse pr-tablie constante (Ici, e e a ee 44 ; dans les vraies machines une valeur choisie telle quelle tombe au dbut e ou ` la n de la mmoire). Notons que lacc`s au sous-programme traitant a e e est ralis via une double indirection. Cela permet denvisager une extension e e

http://fribok.blogspot.com/

2. Introduction dun mcanisme de scrutation lmentaire e ee

517

a ` plusieurs traitants dont les adresses de dbut seraient stockes ` partir de e e a ladresse 6000.
On discutera, sous le nom de vectorisation du choix de cette technique au paragraphe 1.5 du chapitre 24. Lexercice E22.1 permet de discuter aussi ce point.

Lexcution du rti consiste ici ` dpiler ladresse de retour comme le rts. e a e Il y a alors basculement du programme traitant au programme normal.

2.2

Le mcanisme de base, vision externe e

Suivons sur un exemple ce que voit le programmeur lors de loccurrence dune interruption. La situation est reprsente par la gure 22.4. Supposons e e que les direntes parties de programme reprsentes ne comportent pas de e e e saut hors de ces parties (vers les zones reprsentes en gris). e e e La mmoire comporte un programme aux adresses 1000 ` 2000. La pile est e a place aux adresses de 4000 ` 5000, o` il doit, naturellement, y avoir de la e a u mmoire vive. Quand la pile est vide, SP contient 5000. Le sous-programme e traitant commence ` ladresse 3000. Il se termine par une instruction rti, a a ` ladresse 3500 sur le schma. La valeur 3000 est range ` ladresse 6000. La e e a valeur 6000 est range ` ladresse 44. e a On peut observer un historique des valeurs successives du compteur programme et du pointeur de pile sur la gure 22.5.

2.3

Commentaires

Le droulement envisag prcdemment soul`ve plusieurs questions, notame e e e e ment de vocabulaire. Nous allons les envisager. 1. Quel est le nom de ce mcanisme ? Mcanisme dinterruption. On dit que e e le programme en cours dexcution a t interrompu. Le sous-programme e ee traitant sappelle un traitant dinterruption. 2. Le dpart vers le sous-programme traitant est provoqu par un e e vnement matriel (le niveau 1 sur le l IRQ), le retour de souse e e programme est provoqu par un vnement logiciel (lexcution de linse e e e truction rti). Cette dissymtrie est-elle normale ? Oui. Cest l` toute e a lastuce de ce mcanisme. On parle de basculement de dpart et de base e culement de retour. On dit souvent dpart en interruption, retour dine terruption. 3. Le basculement de retour fait temporellement partie du traitant, mais pas le basculement de dpart. Cest une convention plutt quautre chose. e o Le basculement de dpart nest ni dans le programme interrompu ni dans e le traitant. Il est temporellement entre les deux. 4. Que se passe-t-il si il ny a pas dinstruction rti dans traitant ? Rien de spcial. Le processeur continue dexcuter des instructions. Il ny aura e e jamais de retour au programme interrompu. Il sagit videmment dune e erreur analogue ` labsence dun rts en n dun sous-programme. a

http://fribok.blogspot.com/

518

Le mcanisme dinterruption e

Rinst,REtat PO PC Calcul tat suivant E t a t Processeur

Adresses Donnes IRQ

adresses Const : 44 1000 2000 3000 3500 6000

Prog1 TRAITANT rti Pile 3000 Mmoire

Calcul des commandes

Clock, Reset

4000 5000 6000

L/E

Fig. 22.4 Le processeur, ses liens avec lextrieur et le contenu de la mmoire. e e

TRAITANT basculements Prog1 IRQ


PC SP M[4800] 1200 4800 ? 1204 4800 ? 1212 4800 ? 3000 3004 ... 3500 (rti) 4796 4796 4796 1216 1216 1216 1216 4800 1216 1224 4800 1216

dpart e

retour

temps Fig. 22.5 Diagrammes dvolution des valeurs de PC et SP. Une tranche de temps vere ticale pleine correspond ` lexcution dune instruction. La tranche verticale a e vide correspond au basculement de dpart. Les basculements de dpart et de e e retour sont mis en vidence. Arbitrairement certaines instructions sont sur 1 e mot, dautres sur 2.

http://fribok.blogspot.com/

2. Introduction dun mcanisme de scrutation lmentaire e ee

519

5. Combien de temps dure le basculement de dpart ? Il ny a pas de r`gle e e absolue. Sur notre exemple il dure 5 tats, cest-`-dire un temps du mme e a e ordre que lexcution dune instruction. e 6. Pourquoi ny a-t-il pas une adresse de dbut du traitant fournie lors e du basculement de dpart ? Parce que ce dpart nest provoqu que par e e e le changement dtat dun l. Un l ne peut pas coder une adresse. On e pourrait imaginer plusieurs ls codant cette adresse, mais do` viendraitu elle ? On pourrait imaginer que ladresse est quelque part dans le programme . . .mais ce nest pas possible car linterruption arrive ` linsu du a programme. 7. Ne pourrait-on avoir un mcanisme analogue pour un deuxi`me l IRQ e e ou pour un vnement imprvu interne au processeur ? La rponse est oui e e e e et ltude en est faite au chapitre 24. Il y aura aussi une instruction dont e le droulement provoque le basculement de dpart. De mme on verra e e e que la prsence dune instruction invalide peut provoquer un basculement e de dpart. e 8. reset est-il une interruption ? Un signal reset fait repartir le processeur dans son tat initial. Il interrompt bien lexcution. Il y a une sorte de e e basculement de dpart (PC remis ` 0) mais pas de basculement de retour e a correspondant. Normalement sur un ordinateur, le reset provient soit dun petit montage lectronique qui envoie une impulsion ` la mise sous tension, soit dun e a bouton ` la disposition de lutilisateur. a 9. Que se passe-t-il si une requte survient juste entre une instruction qui e modie les indicateurs Z, N, C et V et une instruction de branchement qui les exploite, alors que le sous-programme traitant peut modier les valeurs de ces indicateurs ? Cest une grosse faute dans la programmation du traitant. Au retour du traitant, le branchement conditionnel se fait sur la base de valeurs des indicateurs qui ne sont pas les bonnes. Plus gnralement, traitant est comme tout sous-programme, il peut moe e dier les valeurs contenues dans les registres, le contexte dappel. Il convient alors de sauvegarder et de restaurer ce contexte mme si le terme dappel e est incorrect ici. On na pas prcis exactement les registres concerns par e e e les instructions de chargement/rangement des registres. Si cest possible, une solution pour se prmunir contre le probl`me est que le sous-programme traie e tant commence par sauvegarder le mot dtat et se termine en restaurant ce e registre. REtat fait en eet partie du contexte du programme interrompu. On notera que certains processeurs orent cette sauvegarde/restauration du mot dtat dans le basculement de dpart et dans lexcution du rti sans e e e besoin dinstructions dempilement/dpilement du mot dtat. Cest le choix e e que nous ferons dans la version plus compl`te (Cf. Figure 22.6). e Le choix est dirent selon les processeurs. Le sparc ne sauvegarde pas e le mot dtat, il faut le programmer dans le sous-programme traitant, le e

http://fribok.blogspot.com/

520

Le mcanisme dinterruption e

6502 ne sauvegarde que le compteur programme et le registre dtat, le 6809 e sauvegarde tous les registres lors du basculement. Quel que soit le choix, le basculement de retour a videmment laction symtrique adquate. Cela moe e e die la dure des basculements. Le programmeur de traitants dinterruption e doit tre vigilant au choix fait sur sa machine. e

2.4

Probl`mes de synchronisation entre le processeur et e le monde extrieur e

Comme dans toute communication, il faut se proccuper de synchronisae tion. Le monde extrieur, qui met les requtes dinterruption, est le ma de e e e tre lchange. Le processeur na qu` suivre le rythme sil peut. Sil ne peut pas, e a tant pis. Lextrieur ne vrie pas. Ce cas peut prsenter deux symptmes : e e e o 1. Le l IRQ est ` 1 apr`s lexcution de la premi`re instruction du sousa e e e programme traitant. Le processeur empile ` nouveau une adresse de a retour et reforce ladresse de dbut de traitant dans le PC. Ce nest e peut-tre pas ce que lon cherche. Dans le paragraphe suivant, on mone trera comment viter cela. e On notera deux raisons possibles pour que IRQ soit encore ` 1 : soit il a est rest ` 1, soit il est pass ` 0 pendant un instant puis remont ` 1. ea ea ea 2. Le l IRQ est ` 0 apr`s la premi`re instruction de traitant mais repasse a e e a ` 1 pendant lexcution de traitant. Le processeur interrompt le traie tement en cours. Il y a donc deux occurrences direntes de traitant e en cours dexcution, comme pour un appel de sous-programme rcursif. e e Ce nest en gnral pas souhait. e e e Le monde extrieur et le processeur se synchronisent par un protocole sime pli de poigne de mains. Le processeur naccepte de nouvelle requte que e e e lorsquil a termin de traiter la prcdente. Pour une vraie poigne de mains, e e e e il reste ` lextrieur ` nmettre une requte que si la prcdente a t traite. a e a e e e e ee e Cest lobjet du paragraphe suivant.

2.5

Solutions aux probl`mes de synchronisation e

Les dirents probl`mes de synchronisation voqus sont traits par lintroe e e e e duction dun bit, conventionnellement nomm I, comme Inhib, contenu dans e e le mot dtat. e Les direntes modications pour traiter la synchronisation apparaissent e dans le nouveau graphe de contrle gure 22.6. o Quand I est ` vrai, le processeur ne prend pas en compte les requtes a e dinterruption. On dit que les interruptions sont masques. Quand I est ` e a faux, le processeur consid`re les requtes. e e Au moment du basculement de dpart en interruption, le mot dtat et e e ladresse de retour sont sauvs dans la pile puis le bit I est mis ` vrai. Pene a

http://fribok.blogspot.com/

3. Un exemple dtaill dutilisation : mise ` jour de la pendule e e a

521

dant toute lexcution de traitant, le bit I reste ` vrai et aucune demande e a dinterruption ne sera prise en compte : en sortie dun tat ope ltat suivant e e est forcment ltat dacquisition du code opration comme on le voit sur la e e e gure 22.6. Au moment du basculement de retour, lancienne valeur de I est restaure e grce ` la restauration du mot dtat. Cest ce qui guide le choix que nous a a e avons fait de sauver le registre dtat par sauvegarde automatique. e Avec cette solution, lextrieur peut mettre des requtes ` tout moment, e e e a cest le processeur qui reste ma de lchange. tre e Deux instructions supplmentaires sont ajoutes : clri et seti pour e e CLeaRI et SetI. Elles permettent de mettre I ` vrai ou ` faux. Cela pera a met au programmeur dautoriser la prise en compte dinterruptions pendant lexcution de traitant ou, ` linverse, de rendre certaines portions de code e a ininterruptibles. La ncessit de ces instructions appara dans le paragraphe 4. e e t Par ailleurs, pour pouvoir mettre au point les programmes traitant, dont la terminaison est ncessairement un rti, il est tr`s commode de pouvoir e e dclencher le basculement de dpart par une instruction. Nous ajoutons cette e e instruction nomme ici swi (pour SoftWare Interrupt). Cette instruction sera e aussi utilise pour forcer volontairement une interruption dans les chapitres e ultrieurs. e

3.

Un exemple dtaill dutilisation : mise ` e e a jour de la pendule

Nous prsentons ici une utilisation typique du syst`me dinterruptions. e e Nous choisissons la fonction de gestion de lheure courante. Dans un premier temps cette fonction est prsente sans faire appel au mcanisme dinterrupe e e tions (ce qui nest pas raliste), puis ce mcanisme est introduit. e e

3.1

Ralisation de la pendule sans interruption e

On suppose lordinateur dot dun oscillateur gnrant un signal priodique, e e e e qui dlivre une impulsion toutes les secondes. On ne connait pas trop pour le e moment la dure de cette impulsion. On verra plus tard (Cf. Paragraphe 3.3). e On veut raliser une pendule logicielle, qui maintient lheure courante dans e trois variables globales du syst`me : heures, minutes et secondes. Ces vae riables sont utilises par beaucoup de fonctions du syst`me dexploitation : e e envoi de courriers, datation des chiers, . . . Cette pendule logicielle est un programme qui incrmente lheure courante e toutes les secondes. On utilise pour cela une procdure qui fait avancer la e reprsentation de lheure dune seconde. On donne gure 22.7 le programme e en langage dassemblage. On se resservira de cette procdure. Naturellement e elle pourrait tre crite dans un langage de haut niveau. e e

http://fribok.blogspot.com/

522

Le mcanisme dinterruption e

TA,SP M[TA] TA,SP M[TA] REtat[I] TA TA PC swi rts

= = = = = = = =

SP-4 PC SP-4 REtat Vrai 44 M[TA] M[TA] rti

basculement de dpart e PC = 0

reset

PC = PC+4

TA = PC

RInst = M[TA] clri SP = SP+4 seti TA = SP

REtat[I] = Faux REtat[I] = Vrai non IRQ ou I

REtat = M[TA] autres instructions ope TA = SP SP = SP+4 PC = M[TA] IRQ et non I non IRQ ou I IRQ et non I Fig. 22.6 Graphe de contrle avec tout le traitement du mcanisme dinterruption. Les o e instructions non lies aux interruptions ne gurent plus. e

http://fribok.blogspot.com/

3. Un exemple dtaill dutilisation : mise ` jour de la pendule e e a

523

.data secondes :long 0 . minutes :.long 0 heures : .long 0 .text plus1sec :* utilise R4 comme / ld [secondes], R4 add R4, 1, R4 st R4, [secondes] subcc R4, 60, R0 blu retour st R0, [secondes] ld [minutes], R4 add R4, 1, R4 st R4, [minutes] subcc R4, 60, R0 blu retour st R0, [minutes] ld [heures], R4 add R4, 1, R4 st R4, [heures] subcc R4, 24, R0 blu retour st R0, [heures] retour : rts

registre de travail */ /* ou [R0 + secondes] */ /* secondes = secondes +1 */ /* si sec < 60 : termin */ e /* secondes = 0 */ /* minutes = minutes +1 */ /* si min < 60 : termin */ e /* minutes = 0 */ /* heures = heures +1 */ /* si heures < 24 : termin */ e /* heures = 0 */

Fig. 22.7 Procdure dincrmentation de 1 seconde e e

while (1) { /* attendre une impulsion sur le signal */ while (signal == 0) ; /* boucle vide ; sortie si signal = 1 */ while (signal == 1) ; /* boucle vide ; sortie si signal = 0 */ /* il y a bien eu une impulsion. */ plus1sec () ; } Fig. 22.8 Programme pendule

http://fribok.blogspot.com/

524

Le mcanisme dinterruption e

Le squelette du programme pendule, sans utilisation du mcanisme dine terruption, pourrait tre celui de la gure 22.8 o` signal est le nom dune e u variable correspondant au signal priodique qui peut tre lu par le processeur. e e A lvidence ce programme principal utilise toutes les ressources dun ordie nateur, mais peu ecacement ! Naturellement il nest pas question que lordinateur scrute en permanence le circuit gnrateur dimpulsion et ne fasse rien e e dautre.

3.2

Introduction du mcanisme dinterruption e

La pendule que nous cherchons ` raliser est une utilisation typique a e dun syst`me dinterruption. Le signal IRQ est directement limpulsion. Le e mcanisme dinterruption permet dincrmenter lheure ` linsu de lutilisae e a teur. Les programmes de lutilisateur sexcutent presque normalement, ils e sont interrompus une fois par seconde, les variables heures, minutes et secondes sont mises ` jour et le programme interrompu reprend son excution. a e Le programme traitant est approximativement le sous-programme plus1sec donn gure 22.7. e Supposons par exemple que nous voulions valuer la dure dun calcul dans e e un programme en C. La tche, donne gure 22.9, consiste tout simplement ` a e a lire lheure courante en n de calcul et ` retrancher lheure de dbut du calcul. a e Sans mcanisme dinterruption, lunique processeur de lordinateur peut e excuter un seul programme, le calcul ou la pendule, mais pas les deux ` la e a fois. La mesure devient possible en utilisant le signal priodique comme signal e dinterruption et en excutant lincrmentation de lheure dans le corps du e e traitant dinterruption. Le traitant dinterruption donn gure 22.10 se rsume ` un appel ` la e e a a procdure dincrmentation, encadr par un prologue et un pilogue de sauvee e e e garde dans la pile et de restauration des registres utiliss par la procdure. Au e e lieu dappeler la procdure plus1sec, comme on le fait ici, il serait possible de e simplement crire ses instructions dans traitant. e Le chronogramme de la gure 22.11 illustre le droulement dun calcul e durant un peu plus de deux secondes. A linstant initial i prcdant le calcul, e e la lecture de lheure courante donne lheure de dbut de calcul (3 :59 :57). e Larrive du signal IRQ provoque un dpart en interruption aux instants d1 , d2 e e et d3 et suspend lexcution du calcul le temps dincrmenter lheure courante. e e Lors des retours dinterruption aux instants r1 , r2 et r3 le calcul reprend ` a la nouvelle heure courante. Apr`s lecture de lheure courante en n de calcul e a ` linstant f (4 :00 :00), la soustraction de lheure de dbut donne la dure e e dexcution, soit 3 secondes. e Le lecteur sourcilleux aura not que le temps mesur pour le calcul comporte e e en fait aussi le temps de mise ` jour de lheure par les direntes excutions a e e de traitant. Il en concluera, ` juste titre, que la mesure du temps dexcution a e dun programme est une tche dlicate. On doit tre conscient de lordre de a e e

http://fribok.blogspot.com/

3. Un exemple dtaill dutilisation : mise ` jour de la pendule e e a

525

SecondesDbut= secondes ; e MinutesDbut = minutes ; e HeuresDbut = heures ; e CALCUL ; /* Le calcul proprement dit */ SecondesFin = secondes ; MinutesFin = minutes ; HeuresFin = heures ; Dure e = SecondesFin - SecondesDbut e + 60 * (MinutesFin MinutesDbut) ; e + 3600 * (HeuresFin HeuresDbut) ; e Fig. 22.9 Mesure dun temps de calcul

traitant : Prologue :add sp, -4, sp st R4, [sp] /*empiler Reg de travail*/ Appel : /* utilise le Reg de travail R4 */ jsr plus1sec Epilogue ld [sp] , R4 add sp, +4, sp /*dpiler Reg de travail*/ e rti Fig. 22.10 Traitant dinterruption de mise ` lheure a

heure traitant calcul IRQ

3 :59 :57

3 :59 :58

3 :59 :59

4 :00 :00

t i d1 r1 d2 r2 d3 r3 f
Fig. 22.11 Chronogramme dexcution de la pendule fonctionnant par interruption e

http://fribok.blogspot.com/

526

Le mcanisme dinterruption e

traitant calcul

IRQ

Fig. 22.12 La frquence des interruptions dpasse la capacit de traitement du procese e e seur : les impulsions hachures ne sont pas prises en compte. e

grandeur du temps de la mesure par rapport au temps du calcul.

3.3

Hypoth`ses temporelles ncessaires e e au bon fonctionnement

Il pourrait tre intressant de disposer dune pendule dune prcision e e e suprieure. Le principe de ralisation peut tre conserv : il sut daugmenter e e e e la frquence du signal dinterruption et de grer une variable supplmentaire e e e donnant les fractions de secondes. Nous pourrions ainsi imaginer la ralisation e par logiciel dune pendule indiquant les millisecondes voire les microsecondes. Toutefois la vitesse de calcul du processeur est constante et la frquence du e gnrateur dimpulsions ne peut pas tre augmente ainsi indniment. Plus e e e e e nous voulons augmenter la prcision de la pendule, plus sa gestion consomme de e temps de calcul et ralentit lexcution du calcul dont il faut mesurer la dure. e e Ce que lon mesure devient de plus en plus imprcis. Il y a plus grave : la e modication inconsidre des caractristiques des impulsions par rapport aux ee e possibilits du processeur peut conduire hors dun fonctionnement normal. e Le syst`me prsent a des limites et nous allons examiner quelques-unes de e e e ces situations.

3.3.1

Les impulsions ne doivent pas tre trop frquentes e e

Les interruptions ne doivent pas survenir avec une priode infrieure au e e temps dexcution du traitant plus celui des deux basculements dpart et ree e tour. Dans le cas contraire, videmment, des requtes niraient par ne pas tre e e e satisfaites. Cette contrainte temporelle re`te simplement le fait que, ` la frquence e a e dinterruption maximale la modication priodique de lheure courante e consomme la totalit du temps du processeur et ne peut plus tre acclre. e e ee e Si la frquence est trop leve, certaines impulsions sont ignores (voir chroe e e e nogramme 22.12).

http://fribok.blogspot.com/

3. Un exemple dtaill dutilisation : mise ` jour de la pendule e e a

527

traitant calcul IRQ t Fig. 22.13 Limpulsion du signal dinterruption, trop longue, est comptabilise 4 fois. e

3.3.2

Les impulsions ne doivent pas tre trop longues e

La dure des impulsions ne doit pas excder le temps dexcution du traie e e tant. Au moment du dpart en interruption, laction du signal IRQ est neue tralise par la mise ` 1 du bit I du registre dtat (voir chronogramme 22.13). e a e Mais, ` la n du traitant, linstruction de retour rti rtablit lancienne vaa e leur du registre dtat avec I ` 0. Si le signal IRQ est encore ` 1, il dclenche e a a e a ` nouveau un dpart en interruption. La mme impulsion est comptabilise e e e plusieurs fois. Parmi les rem`des envisageables, on peut construire un oscillateur matriel e e dlivrant un signal de forme adquate. Loscillateur peut galement tre muni e e e e dune entre de remise ` 0 de IRQ, active par une instruction du traitant ou e a e par un signal dacquittement mis par le processeur au moment du dpart en e e interruption. On retrouve alors une solution base sur un protocole de dialogue e en poigne de mains (Cf. Chapitre 6). e Une solution purement matrielle serait de calibrer la dure de limpulsion e e en insrant un dtecteur de front (Cf. Chapitre 9) cadenc par un sous-multiple e e e de lhorloge du processeur.

3.3.3

Les impulsions ne doivent pas tre trop courtes e

A contrario (voir chronogramme 22.14), le processeur peut ignorer une impulsion trop courte. En eet, le processeur ne teste IRQ quau moment o` il sapprte ` lire une nouvelle instruction. Linstruction la plus longue u e a a e ` excuter dnit la dure minimale des impulsions pour garantir leur prise e e en compte. Dans notre exemple il sagit de jsr qui sexcute en sept cycles e (Cf. Figure 22.2). rti dure un cycle de plus que jsr, mais larrive dune ime pulsion pendant lexcution de rti poserait dj` un probl`me de priode du e ea e e signal IRQ infrieure ` la dure du traitant. e a e L` aussi la solution consiste ` exiger que lmetteur dinterruption maina a e tienne sa requte tant quelle na pas t prise en considration. Cela revient, e ee e encore, ` une poigne de mains. a e

http://fribok.blogspot.com/

528

Le mcanisme dinterruption e

instr H

add

add

jsr

test

test

test

Fig. 22.14 Limpulsion dune dure de 4 cycles dhorloge du processeur est prise en e compte si linstruction en cours est add et ignore parce que trop courte e dans le cas de jsr. Sur cette gure, le dpart en interruption entre les deux e instructions add nest pas reprsent. e e

3.4

De linterruption priodique au e partage de temps gnralis e e e

La pendule est un exemple de partage de temps entre direntes activits e e concurrentes. Observ ` une chelle de temps macroscopique, notre ordinateur ea e semble excuter deux programmes en mme temps : le calcul et la mise ` jour e e a de lheure. La pendule met en oeuvre une forme tr`s rudimentaire de partage de temps : e il ny a que deux activits concurrentes et lun des programmes est une boucle e sans n. Dans le chapitre 23, nous verrons comment tendre le mcanisme e e de partage de temps ` un nombre quelconque dactivits concurrentes (les a e processus) et ` des programmes ordinaires (non limits ` des boucles sans n). a e a

4.

Notion de concurrence et datomicit des e oprations e

La pendule est un premier exemple de partage de temps du processeur entre deux programmes concurrents qui entrent en comptition pour son utilie sation : le programme de calcul et le sous-programme de mise ` jour de lheure a courante. Le partage de variables entre programmes concurrents pose un probl`me e datomicit des oprations sur ces variables, qui peut se traduire par des valeurs e e incohrentes de ces variables. e Soit une opration de consultation ou de modication dun ensemble de e variables eectue par un programme. Latomicit de lopration signie que e e e tout autre programme concurrent ne peut accder aux variables qu` des inse a tants tels que lopration est soit ralise enti`rement, soit pas commence du e e e e e tout.

http://fribok.blogspot.com/

IRQ

t test

4. Notion de concurrence et datomicit des oprations e e

529

heures minutes secondes traitant calcul IRQ

03 59 59 00 00

04

t s = 59 m=0 h=4

Fig. 22.15 Probl`mes datomicit : linterruption arrive apr`s que le programme a lu e e e les secondes et avant quil lise les minutes. Lheure lue est 4 :00 :59 au lieu de 3 :59 :59 ou 4 :00 :00.

Supposons que lon ralise un transfert de 1000 francs dun compte bane caire X crdit de 10000 francs vers un compte bancaire Y crdit de 2000 e e e e francs. Le transfert consiste ` dbiter X de 1000 francs puis ` crditer Y de a e a e la mme somme. De ltat initial (10000,2000), le couple (X,Y ) passe par un e e tat transitoire (9000,2000) pour atteindre ltat nal (9000,3000). e e On dit que lopration de transfert est atomique, si un programme e sexcutant en concurrence avec celui qui ralise le transfert peut observer e e (X,Y ) dans ltat initial ou dans ltat nal, mais pas dans ltat transitoire e e e (9000,2000). Dans notre exemple de la pendule, le programme de calcul peut lire une heure errone. Supposons quune interruption arrive ` 3h 59mn 59s o` le proe a u gramme termine son calcul et lit lheure courante pour en calculer la dure e (gure 22.15). Le scnario suivant montre que la lecture de lheure courante nest pas e atomique et peut rendre une valeur errone. e Le programme de calcul lit les secondes (Instruction SecondesFin = secondes) et trouve 59. Linterruption est prise en compte juste apr`s et fait e passer lheure courante ` 4 :00 :00. Au retour dinterruption, le programme a interrompu poursuit sa consultation de lheure courante et lit les minutes (00) et les heures (4). Lheure obtenue par le programmme nest ni 3 :59 :59, ni 4 :00 :00, mais 4 :00 :59. Cest une erreur. Le mme genre de probl`me peut e e tre mis en vidence avec deux mises ` jour concurrentes. Sur un ordinateur e e a simple ` un seul processeur, le rem`de consiste ` suspendre la prise en compte a e a des interruptions pendant lacc`s aux variables partages pour le rendre atoe e mique. Cest la principale utilit des instructions clri et seti que nous avons e dcrites au paragraphe 2.5. e

http://fribok.blogspot.com/

530

Le mcanisme dinterruption e

5.

Exercices

E22.1 : Choix de ladresse de dbut du traitant e Dans le basculement de dpart appara une double indirection pour lobtention e t de ladresse de dbut du traitant. Typiquement de la mmoire morte correse e pondrait ` ladresse 44, et de la mmoire vive ` ladresse 6000. Lutilisateur a e a peut ainsi crire ` ladresse 6000 ladresse de son choix (ici 3000) o` commence e a u le traitant. Que faut-il modier dans le graphe de contrle si lon suppose quun traitant o dbute ncessairement ` ladresse 36848 ? Cela ore-t-il la mme souplesse e e a e demploi ? Comment pourrait-on modier la machine pour que le traitement du IRQ soit (doublement) indirectement rfrenc par ladresse 44 et celui du ee e swi par ladresse 48 au lieu de ltre tous les deux par 44 (Cf. Figure 22.6) ? e E22.2 : Et en vrai ? Se procurer dans les biblioth`ques et librairies (papier ou lectroniques) les e e modes demploi dtaills de processeurs simples. Etudier leur syst`me dintere e e ruptions. Prolonger avec des processeurs complexes. Prolonger sur des ordinateurs.

http://fribok.blogspot.com/

Chapitre 23 Partage de temps et processus


Dans le chapitre 22, nous avons dvelopp un exemple simple de partage e e de temps du processeur entre une tche de fond ralisant un calcul et un travail a e priodique de mise ` lheure de la pendule. e a Dans ce chapitre, nous montrons que le mcanisme dinterruption permet de e raliser un partage de temps entre plusieurs travaux, dont les nombre, nature e et dure sont quelconques. e A chaque excution de programme correspond une entit dynamique. Le e e nom consacr par la littrature pour dsigner cette entit est processus, mais e e e e on peut aussi trouver dautres termes tels que tche ou activit . a e Lors de lexcution dun programme le syst`me doit maintenir un certain e e nombre dinformations (adresse de chargement, chiers ouverts, etc.). Par souci de prcision, dans ce chapitre, la notion de processus est implicitement associe e e a ` la gestion interne des structures de donnes du syst`me dexploitation et e e activit renvoie au contraire ` une vision externe du comportement du syst`me e a e et de lavancement des programmes excuts. Cette distinction permet de lever e e les ambigu es sur la dnition des instants auxquels le processeur passe dun t e programme ` lautre. a Le paragraphe 1. prsente le mcanisme de partage du temps du proe e cesseur entre plusieurs activits. Le paragraphe 2. prcise les structures e e de donnes associes ` chaque processus. Le paragraphe 3. dtaille le e e a e mcanisme de commutation dun processus ` un autre. La cration dun e a e processus et sa terminaison font lobjet du paragraphe 4.

1.

Principe et dnitions e

Les syst`mes dits multitches sont capables dexcuter plusieurs proe a e grammes a la fois. Ils sont tr`s utiles et permettent ` plusieurs utilisateurs ` e a de travailler en mme temps sur un ordinateur. Ils autorisent galement un e e utilisateur ` faire plusieurs choses ` la fois, par exemple diter un chier pena a e dant la compilation dun autre chier et lire en mme temps lheure ache e e

http://fribok.blogspot.com/

532

Partage de temps et processus

par un troisi`me programme. Nous restons toutefois ici dans le contexte des e machines ` un seul processeur. a Un programme est une entit statique compose dinstructions dcrivant e e e une suite doprations ` raliser pour aboutir au rsultat recherch. A chaque e a e e e excution dun programme correspond une activit et un processus associ dans e e e les tables du syst`me dexploitation, crs lors du lancement du programme et e ee dtruits quand lexcution du programme se termine. e e Il ne faut pas confondre programme avec processus ou activit. Si un utilie sateur lance une compilation et une dition, il y a deux activits et le syst`me e e e dexploitation cre deux processus excutant deux programmes dirents (le e e e compilateur et lditeur). A deux compilations simultanes correspondent deux e e processus distincts partageant le mme chier excutable mais des donnes e e e direntes. e Les ordinateurs capables dexcuter rellement plusieurs instructions dans e e plusieurs processeurs sont des machines ` architecture dite parall`le, dotes a e e dautant de processeurs que de calculs simultans. On trouve dans le commerce e de telles machines, puissantes mais onreuses, inadaptes pour un utilisateur e e qui na pas besoin dune grande puissance de calcul mais qui ne veut pas tre e bloqu durant une compilation. e Les syst`mes dexploitation multitches ont t conus pour ce genre dutie a ee c lisation. Ils g`rent un partage de temps du processeur et donnent aux utilisae teurs limpression de disposer dautant de processeurs (virtuels) que de travaux a ` mener de front. Les contraintes matrielles sur lordinateur se rsument ese e sentiellement ` une taille de mmoire susante pour contenir lensemble des a e programmes ` excuter et ` lexistence dun mcanisme dinterruption. a e a e La prsentation du mcanisme de partage de temps dans ce paragraphe et e e les paragraphes 2. et 3. suppose que les programmes ont dj` t lancs et que eaee e les processus prexistent. e

1.1

Mcanique dentrelacement par interruption e priodique e

Lhorloge de lordinateur gn`re un signal dinterruption priodique. On e e e prendra garde ` ne pas confondre lhorloge de lordinateur, de priode de lordre a e de quelques millisecondes, avec celle du processeur de priode de lordre de e quelques nanosecondes. Le traitant de cette interruption ralise le partage du e temps entre plusieurs activits. Le chronogramme de la gure 23.1 illustre ce e partage entre trois activits a1, a2 et a3 (et leurs processus associs p1, p2 e e et p3), lection tant la partie du traitant qui eectue le choix de la nouvelle e e activit. e Lobservation du syst`me dbute alors que le processeur est attribu ` lace e ea tivit a1. Lexcution de a1 est suspendue par le premier dpart en interruption e e e (instant di1 ) et sera reprise au retour de la troisi`me interruption (instant ri3 ). e Au retour de la premi`re interruption (instant ri1 ), le processeur reprend e

http://fribok.blogspot.com/

1. Principe et dnitions e

533

lection e a3 a2 a1 IRQ t di1 ri1 di2 ri2 di3 ri3 di4 ri4 di5 ri5 di6

Fig. 23.1 Multiplexage du processeur entre trois activits e

lexcution de lactivit a2. Cette derni`re est ` son tour suspendue par le e e e a deuxi`me dpart en interruption (di2 ) et sera reprise lors du quatri`me retour e e e dinterruption (ri4 ). Lintervalle de temps entre les deuxi`me et troisi`me interruptions est utilis e e e par a3, dont lexcution sera reprise puis suspendue ` nouveau aux instants e a respectifs ri5 et di6 . Le mme scnario se reproduit toutes les trois interruptions et le processeur e e travaille ` tour de rle pour la premi`re activit, la deuxi`me, et ainsi de suite a o e e e jusqu` la derni`re, apr`s quoi le processeur est raect ` la premi`re activit a e e e ea e e et cette squence se reproduit ` lidentique dans un nouveau cycle. e a Le processus associ ` lactivit en cours dexcution est le processus actif ea e e ou lu. Les autres processus sont dits prts (sous entendu ` poursuivre leur e e a excution lorsque le processeur leur sera attribu de nouveau). Dans le parae e graphe 3. du chapitre 24 nous verrons que les processus peuvent aussi se bloquer en attente dvnements tels que des ns dentres/sorties par exemple. e e e On parle de commutation dactivit, ou de commutation de processus, pour e dsigner le passage dune activit, et videmment dun processus, ` une autre. e e e a La gure 23.2 en dtaille le droulement. Cette commutation est dclenche e e e e par une interruption. Le traitant est alors appel traitant de commutation. e Lors du retour dinterruption, une activit doit retrouver la machine dans e ltat o` elle la laisse lors de sa suspension. Ltat de la machine est saue u e e vegard dans des structures de donnes que nous tudions en dtail au parae e e e graphe 2.. La premi`re tape de la commutation (s) est reprsente en traits ns sur e e e e les gures 23.1 et 23.2. Elle sauvegarde le contexte (essentiellement le contenu des registres du processeur) de lactivit suspendue (a2) dans les structures de e donnes du processus actif (p2). e Le mcanisme de dpart en interruption intgr au processeur sauvegarde e e e e automatiquement certains registres. La sauvegarde des autres registres est explicitement programme dans le prologue du traitant de commutation. e Le droulement de linterruption se termine par une squence symtrique de e e e

http://fribok.blogspot.com/

534

Partage de temps et processus

ordonnanceur activit a3 e RTI activit a2 e processus actif s p2 nant e lection processus actif e excution traitant e IRQ di2 de2 fe2

r RTI p3

ri2

Fig. 23.2 Dtail de la commutation entre les activits a2 et a3 e e

restauration (r) du contexte du (nouveau) processus actif (p3) depuis les structures de donnes convenables. Une partie de cette squence est programme e e e dans lpilogue du traitant, et lautre ralise automatiquement par linstruce e e tion rti. On a videmment symtrie par rapport au dpart. e e e Le syst`me dexploitation comporte des procdures charges dlire un noue e e e veau processus actif. Ces procdures constituent lordonnanceur. Le corps du e traitant appelle les procdures de lordonnanceur. e Lexcution des programmes des utilisateurs, lactivit, cesse d`s le dpart e e e e en interruption et ne reprend quau retour dinterruption. Mais on notera que du point de vue de la gestion des structures de donnes du syst`me, la come e mutation eective de processus a lieu entre la n de la sauvegarde et le dbut e de la restauration, qui utilisent les structures de donnes de lancien (p2) et e du nouveau (p3) processus actifs. Lordonnanceur nest pas une activit comme une autre. Il ne rsulte pas e e du lancement dune commande et le syst`me ne maintient pas de structures e de donnes pour lui ; ainsi, lordonnanceur nest pas un processus. e On note une dirence par rapport ` lexcution dun rti normal : ici lactie a e vit reprise nest pas ncessairement celle qui a t interrompue lors du dpart e e ee e en interruption. Lordonnanceur peut choisir et installer une autre activit. e

1.2

Notion de politique dordonnancement

La stratgie de rpartition du temps du processeur aux dirents procese e e sus est appele ordonnancement (scheduling en anglais) des processus. Deux e aspects sont ` considrer : lorigine de la dcision deectuer une commutation a e e et, une fois cette dcision prise, lalgorithme dlection du nouveau processus. e e Lorigine de la commutation peut se faire avec ou sans rquisition. e

http://fribok.blogspot.com/

1. Principe et dnitions e

535

Il existe des politiques dordonnancement sans rquisition : le processus e actif dcide lui-mme de linstant auquel il lib`re le processeur et appelle exe e e plicitement la squence dinstructions qui ralise la commutation. De telles e e politiques autorisent malheureusement lcriture (volontaire ou non) de proe grammes monopolisant le processeur. Au contraire, dans les politiques avec rquisition du processeur, les come mutations sont forces par interruption du processus actif. Dans le paragraphe e prcdent, nous avons dcrit une allocation avec rquisition par tranches de e e e e temps (cadence par un signal dinterruption priodique). e e Lordonnanceur attribue ` tour de rle un quantum de temps aux processus a o pour quils acc`dent au processeur. e Lalgorithme dlection illustr par la gure 23.1 est tr`s simple : les proe e e cessus acc`dent ` tour de rle au processeur selon un ordre premier arriv, e a o e premier servi. Cette mthode simple dordonnancement est connue sous le e nom dallocation en tourniquet. Il existe des stratgies dallocation plus labores que le tourniquet, grant e e e e des priorits entre les processus, ces priorits pouvant tre statiques ou voluer e e e e dynamiquement en fonction du comportement du processus. Dans ce chapitre, nous nous en tiendrons ` lallocation en tourniquet par a tranche de temps. Dans cette politique simple dordonnancement, le seul param`tre de rglage est la dure dune tranche de temps. Son choix rsulte dun e e e e compromis. La rduction de quantum tend ` amliorer la capacit de raction e a e e e du syst`me et son aptitude ` supporter de nombreux travaux interactifs alors e a que la minimisation du cot de gestion du partage pousse au contraire ` rduire u a e autant que possible la frquence des commutations. e Un choix judicieux de dure de tranche de temps donnera aux utilisateurs e qui ne peuvent observer le syst`me qu` une chelle de temps macroscopique e a e lillusion dune excution simultane des processus. e e Considrons ` titre dexemple un syst`me multitches et des utilisateurs e a e a en train dditer des chiers et une tranche de temps de deux millisecondes. e Supposons que le travail de mise ` jour de lachage apr`s la frappe dun a e caract`re ne dure pas plus dune tranche de temps. En supposant une vitesse e maximale de saisie de dix caract`res par seconde, le syst`me pourrait supporter e e cinquante ditions simultanes avec un temps de rponse maximal dun dixi`me e e e e de seconde et donner ` chaque utilisateur lillusion quil ne travaille que pour a lui. Les programmes de calcul intensifs sexcuteront videment moins vite, e e mais ceci nest pas trop gnant dans la mesure o` les utilisateurs peuvent faire e u autre chose pendant les calculs de longue dure. e

http://fribok.blogspot.com/

536

Partage de temps et processus

2.

Structures de donnes associes aux e e processus

Nous supposons dans ce paragraphe que le dpart en interruption sauve e tous les registres du processeur dans la pile, except le registre pointeur de e pile. De nombreux processeurs ne sauvegardent automatiquement que quelques registres. Il en va ainsi pour le processeur du chapitre 22, qui nempile que le registre dtat et le compteur programme. On peut cependant toujours se e ramener ` lquivalent dune sauvegarde de lensemble des registres ordinaires a e lors du dpart en interruption en insrant une action spciale au dbut du e e e e prologue et ` la n de lpilogue de traitant, procdure qui compl`te la a e e e sauvegarde automatique eectue par le processeur (Cf. Exercice E23.1). e

2.1

Besoin de zones propres ` chaque processus a

La possibilit dentrelacer les excutions de plusieurs programmes prsents e e e simultanment en mmoire nest pas une exclusivit des syst`mes dexploitae e e e tion multitches. a Le syst`me simple monotche dcrit dans la partie V ore une telle possibie a e lit : nous avons vu au chapitre 20 que linterpr`te de commande lit une ligne e e de commande, dclenche le chargement-lancement du programme excutable e e spci, attend la n de son excution et lit une nouvelle ligne de commande. e e e Il y a ainsi entrelacement entre lexcution de linterpr`te et celui de la come e mande lance. Mais lentrelacement respecte une proprit dernier lanc, pree ee e mier termin qui permet de grer lallocation de mmoire et les excutions de e e e e programmes comme des appels de procdures. Cette gestion repose sur une e pile globale du syst`me partage par lensemble des programmes. e e Cette organisation nest pas applicable aux syst`mes multitches qui ene a trelacent autant dexcutions de programmes que de processus indpendants, e e selon des politiques dordonnancement plus ou moins labores. Ces excutions e e e sont logiquement indpendantes les unes des autres et ninterf`rent entre elles e e que dans la mesure o` elles entrent en comptition pour lutilisation du temps u e du processeur. Il nexiste par exemple aucun lien entre les appels et retours de procdure respectifs de processus distincts. Cest pourquoi les processus sont e dotes de piles prives. e e Lexcution des programmes ne doit pas tre modie, mais seulement rae e e lentie, par le partage de temps et le support dexcution initialement fourni e par le syst`me simple monotche doit tre reproduit dans le cadre de chacun e a e des processus. La prservation du comportement des programmes excuts e e e implique en particulier que chaque processus dispose de ses propres zones de mmoire texte, donnes et pile prives auxquelles les autres processus ne e e e doivent normalement pas accder. e Il faut de plus que la valeur des registres observe par le programme ne e soit pas modie par les diverses suspensions dexcution. Chaque processus e e

http://fribok.blogspot.com/

2. Structures de donnes associes aux processus e e

537

est dot ` cet eet dune zone de mmoire prive destine ` la sauvegarde et ea e e e a a ` la restauration du contenu des registres, y compris le pointeur de pile SP (dans le prologue et lpilogue du traitant de commutation). e Enn il est ncessaire que la suspension nait pas dincidence directe sur les e entres et sorties eectues par le processus suspendu. Il sut pour cela de doe e ter les processus de tables de chiers ouverts individuelles et de terminaux de dialogue distincts. Les syst`mes multi-utilisateurs sont videment dots daue e e tant dcrans-claviers que de personnes utilisant simultanment la machine. e e Mais lorsque les processus sont lancs par le mme individu depuis le mme e e e cran-clavier, lcran peut tre divis en fentres qui constituent autant de e e e e e terminaux virtuels. Quand un processus est actif, les registres du processeur (Rtat, PC, SP, e registres donnes) contiennent des valeurs ` jour. Quand le processus est inace a tif, les informations pertinentes sont en mmoire dans la zone de sauvegarde e du processus. On peut ainsi assimiler un processus ` une machine virtuelle excutant a e un programme, dont la mmoire est consitue des zones texte, donnes e e e et pile alloues au processus, et dont le processeur est reprsent par la e e e zone de sauvegarde des registres en mmoire. e

2.2
2.2.1

Organisation eective des zones mmoire de chaque e processus


Structure de donnes en mmoire e e

Une partie de la mmoire est occupe par les instructions et les variables e e globales du syst`me dexploitation : elle contient entre autres lamorce de e dmarrage, les pilotes de priphriques, le syst`me de gestion de chiers, lore e e e donnanceur et les traitants. La gure 23.3 dcrit les structures de donnes en mmoire reprsentant les e e e e processus. Le syst`me dexploitation g`re une table proc dont la taille dnit un e e e nombre maximal de processus. Chaque entre de cette table est une structure, e nomme descripteur (de taille TPROC) qui dcrit un processus. Les processus e e peuvent tre identis par leur numro dentre, ou pid (process identier), e e e e dans cette table. Dans la mthode du tourniquet, les processus dont lexcution est suspene e due sont cha es dans une le des (processus) prts. Deux variables globales n e du syst`me mmorisent les pid respectifs du premier et du dernier procese e sus de cette le (tte-prts et queue-prts). Le pid du processus lu (en cours e e e e dexcution) est stock dans la variable globale actif. e e Le reste de la mmoire utilise est structur en autant dexemplaires de e e e zones texte, donnes et pile que de processus. e Le champ suivant du descripteur permet de lier les processus prts entre e eux dans la le des prts. Le champ tat du descripteur dcrit le statut du e e e

http://fribok.blogspot.com/

538

Partage de temps et processus

suivant proc 0 1 PID table des proc[PID] TPROC processus n-1 actif tte-prts e e queue-prts e tat e T dbut e T n D dbut e D n P dbut e P n ssp pile sregs donnes e texte

Fig. 23.3 Reprsentation dun processus en mmoire : ` gauche les variables globales e e a du syst`me dont la table des processus, au centre le dtail dun descripteur e e de processus et ` droite les zones de mmoires aectes ` un processus a e e a (texte, donnes et pile du processus). La portion de zone pile dj` utilise e ea e est reprsente en gris plus fonc. e e e

processus : actif, prt ou inexistant (pour les entres de la table encore inoce e cupes). Le descripteur contient aussi les adresses de dbut et de n des zones e e texte (T), donnes (D) et pile (P) alloues au processus. Le champ ssp contient e e une copie du registre pointeur de pile SP. 2.2.2 Echanges entre les registres et les structures de donnes du e processus

Quand le processus est actif, les valeurs ` jour sont dans les registres du a processeur. De plus, il existe en mmoire une zone de sauvegarde des registres e dont le contenu nest signicatif que si le processus nest pas actif. Cette zone comporte deux parties physiquement spares. e e Une premi`re partie occupe le sommet de la zone de pile du processus. e On la note sregs. Elle est destine aux registres ordinaires dont le contenu est e empil lors du dpart en interruption. e e Une autre partie se rduit ` la copie du registre pointeur de pile SP qui nest e a pas sauvegard au moment du basculement de dpart en interruption. Elle est e e dans le champ ssp du descripteur du processus dans la table des processus. Ce champ ssp contient ladresse de la zone sregs. Cette information est sauvegarde par le prologue du traitant de commutation, et, symtriquement, e e restaure par lpilogue. e e

http://fribok.blogspot.com/

3. Organisation du traitant de commutation

539

3.

Organisation du traitant de commutation

Le traitant de commutation consiste principalement en llection dun noue veau processus. Il contient de plus un prologue et un pilogue pour assurer la e prservation des valeurs convenables du pointeur de pile. e Une partie du traitant de commutation droule ainsi lalgorithme dlection e e et manipule les tables de processus en mmoire. Lalgorithme peut tre plus e e ou moins complexe selon la politique dordonnancement adopte. Par ailleurs, e une mme stratgie dordonnancement est susceptible dtre utilise sur des e e e e machines direntes. Cette partie du traitant est ralise sous la forme de e e e procdures ordinaires crites dans un langage de programmation (par exemple e e C) portable dune machine ` lautre, et compiles. a e Lautre partie du traitant, qui g`re la mcanique de sauvegarde et de rese e tauration et lappel des fonctions de lordonnanceur, est ncessairement crite e e en langage dassemblage. Sa programmation ncessite en eet lacc`s ` des rese e a sources autres que la mmoire (registres du processeur, notamment SP, mase quage et dmasquage des interruptions, retour dinterruption) que les langages e de programmation volus ne permettent pas de manipuler. e e

3.1

Election dun processus

La premi`re partie de la commutation (procdure actifversprt) remet le e e e processus actif suspendu dans lensemble des processus prts. La seconde partie e (procdure prtversactif) slectionne un des processus prts et en fait le nouveau e e e e processus actif.
actifverspr^t () { e proc[actif].tat = PRET; e ajouter_pr^ts (actif); e pr^tversactif () { e actif = retirer_pr^ts (); e proc[actif].tat = ACTIF; } e

Dans lalgorithme du tourniquet, lajout et le retrait portent respectivement sur la queue et la tte de la le des prts. e e
ajouter_pr^ts(pid p) { e proc[p].suivant = NULL; if (t^te_pr^ts == NULL) e e t^te_pr^ts = queue_pr^ts = p; e e e else { proc[queue_pr^ts].suivant = p; e queue_pr^ts = p;} } e pid retirer_pr^t () { e pid lu; e e lu = t^te_pr^ts; e e tete_pr^ts = proc[tete_pr^ts].suivant; e e return (lu); e }

http://fribok.blogspot.com/

540

Partage de temps et processus

3.2

Commutation de processus : une mise ` jour de a structures de donnes e

La gestion du registre SP par le traitant a pour but de berner le processeur. Au basculement de dpart, SP est celui de lactivit interrompue (soit A1, e e associe au processus p1). Les registres sont empils dans la pile du processus e e p1. Le traitant installe une nouvelle activit (soit A2) et modie SP : la e pile est alors celle du traitant. On a dj` vu que le traitant nest pas un ea processus. Au basculement de retour, rti, ce nest pas lancienne activit A1 e qui sera relance, mais une nouvelle (soit A3, associe au processus p3). Les e e registres, en particulier le compteur programme, seront dpils depuis la pile e e du processus p3. On arrive ainsi ` passer alternativement parmi plusieurs activits alors que a e le syst`me dinterruptions nest prvu que pour commuter entre une activit e e e et un traitant. Si le processus actif est suspendu et rlu dans la foule (cest en particulier ee e le cas sil est le seul processus dans le syst`me), le traitant de commutation se e comporte comme un traitant dinterruption ordinaire : le processeur est rtabli e dans son tat davant linterruption et le programme interrompu reprend nore malement son excution. e Dans le cas contraire, la restauration du registre SP le fera pointer sur la pile dun autre processus et au retour du traitant le processeur reprendra lexcution de cet autre processus (suspendu lors dune interruption e prcdente). e e Lors de la programmation du traitant on doit grer deux probl`mes : e e le passage dune pile ` une autre permettant ` chaque processus de retroua a ver, lorsquil redevient actif, les registres du processeur dans ltat o` ils e u taient lorsque ce processus a t interrompu. e ee la sauvegarde des adresses de retour et ventuellement de param`tres dans e e une pile, si lon programme le traitant en ralisant des appels de procdures e e (Cf. Chapitres 12 et 13). Dans la suite nous prsentons la ralisation du traitant en deux versions. e e Une premi`re version donne un squelette du traitant ralis sans aucun ape e e pel de procdure. Lobjectif est de mettre uniquement laccent sur la gestion e des piles du processus interrompu et du processus relanc. La deuxi`me vere e sion, correspondant mieux ` ce qui est fait dans un syst`me dexploitation, a e est donne compl`tement et utilise des appels de procdure pour chacune des e e e parties du traitant. Dans les deux versions, et dans chacune ` plusieurs endroits, on retrouve a des structures de donnes et un calcul identique : proc est ladresse de la table e des processus, actif est ladresse du mot mmoire contenant le pid du processus e actif, TPROC est une constante donnant la taille du descripteur dun processus et deltassp est le dplacement du champ ssp du descripteur. e Les programmes sont crits en assembleur du processeur dcrit dans le chae e pitre 22. Le registre R0 contient la constante 0 et na pas besoin de sauvegarde.

http://fribok.blogspot.com/

3. Organisation du traitant de commutation

541

Le fragment de code suivant range dans le registre R1 ladresse du descripteur du processus actif : set actif, R1 ld [R1], R1 mul R1, TPROC, R1 set proc, R2 add R1, R2, R1 Ce fragment de code sera remplac par lexpression : INITdesc (R1, actif). e 3.2.1 Version sans appel de procdures e

La version prsente dans la gure 23.4 est purement pdagogique. e e e Rappelons le choix fait concernant les interruptions : tous les registres ordinaires sont sauvegards dans la pile et sont bien videmment restaurs lors e e e du retour (rti). Pour xer les ides nous appelons Pprec le processus interrompu et Pnouv e le processus relanc. La gure 23.5 dcrit les piles en mmoire, les registres du e e e processeur et les descripteurs des processus Pprec et Pnouv avant lexcution e de linstruction rti. Les registres ordinaires sont dabord empils par le processeur dans la pile e de Pprec. Les registres ainsi sauvegards re`tent ltat du processeur lors de e e e linterruption. Puis SP est sauvegard dans le champ ssp du descripteur de e Pprec. Puis un processus est lu, soit Pnouv, et la liste des processus prts est e e mise ` jour, ainsi que la variable actif. Apr`s lpilogue, SP rep`re le sommet de a e e e pile du processus Pnouv qui avait t interrompu prcdemment. Au sommet ee e e de la pile de Pnouv se trouvent les registres du processeur avec leur valeur au moment o` Pnouv avait t interrompu. u ee 3.2.2 Version avec appel de procdures e

La solution prcdente ne donne pas totalement satisfaction : llection du e e e processus et les parties prologue et pilogue sont, en gnral, ralises par des e e e e e appels de procdures, avec ventuellement des param`tres. Ces mcanismes e e e e font de nouveau usage dune pile. Lordonnanceur ntant pas un processus, se pose le probl`me de la pile ` e e a utiliser pour la gestion des appels de actifverspr^t et pr^tversactif. Deux e e approches peuvent tre considres : la premi`re consiste ` faire de lordone ee e a nanceur une entit dote de sa propre pile ; lautre revient ` faire excuter e e a e llection en utilisant la pile du processus actif suspendu pour appeler les deux e fonctions dordonnancement. Nous dveloppons dans ce paragraphe le programme de traitement de come mutation de processus en considrant que lordonnanceur dispose dune pile e prive lui servant ` grer ses informations propres. Lexercice E23.2 montre e a e lautre solution.

http://fribok.blogspot.com/

542

Partage de temps et processus

traitant : prologue :INITdesc (R1, actif) st SP, [R1+deltassp]

/* actif est Pprec */ /* proc[Pprec].ssp = SP */

e lection :/* code dans le paragraphe prcdent */ e e epilogue :INITdesc (R1, actif) ld [R1+deltassp], SP /* actif est Pnouv */ /* SP = proc[Pnouv].ssp */

pointobs :/* Point dobservation */ reprise : rti /* restaure le contenu des registres ordinaires */ Fig. 23.4 Traitant de commutation de processus, version sans appel de procdures e

Pile Pprec

descripteur Pprec pret

R0 = 0 R1 Rn-1 REtat PC SP Registres du processeur

s r e g s

R1 Rn-1 REtat PC Pile Pnouv Pdbut e Pn ssp

descripteur Pnouv pret

sregs Pdbut e Pn ssp

Fig. 23.5 Contenu de la mmoire et des registres du processeur lors dune commutae tion du processus Pprec au processus Pnouv, au point dobservation avant lexcution de linstruction rti e

http://fribok.blogspot.com/

3. Organisation du traitant de commutation

543

traitant : /* les registres ordinaires ont t empils par le processeur e e e dans la pile de Pprec */ prologue : jsr sauver pointobsA : /* Point dobservation */ election : /* masquer IT : atomicit dacc`s ` file des pr^ts */ e e a e seti /* Election du nouveau proc. dans pile spciale*/ e set pileordo , SP jsr actifverspret jsr pretversactif /* actif = Pnouv */ cli /* dmasquer IT : fin dexclusion mutuelle */ e epilogue : jsr restaurer reprise : rti /* restaure les registres autres que SP */ sauver : INITdesc (R1, actif) st SP, [R1+deltassp] rts /* actif est Pprec */ /* proc[Pprec].ssp = SP */

restaurer : pointobsB : /* Point dobservation */ INITdesc (R1, actif) /* actif est Pnouv */ ld [R1+deltassp], SP /* SP = proc[Pnouv].ssp */ pointobsC : /* Point dobservation */ /* Corrige ladresse de retour pour excution e du rts de la procdure restaurer */ e set reprise, R1 st R1, [SP] /* sommet de pile = ladresse reprise */ pointobsD : /* Point dobservation */ rts /* retour ` reprise */ a Fig. 23.6 Traitant de commutation de processus utilisant une pile prive e

http://fribok.blogspot.com/

544

Partage de temps et processus

(a) descripteur Pprec pile Pprec election sregs var globales pile ordo descripteur Pnouv pile Pnouv

(b) descripteur Pprec pile Pprec election sregs var globales pile ordo descripteur Pnouv

SP

reprise SP pile Pnouv

(c) descripteur Pprec pile Pprec election sregs var globales pile ordo descripteur Pnouv pile Pnouv election sregs SP

(d) descripteur Pprec pile Pprec election sregs var globales pile ordo descripteur Pnouv pile Pnouv reprise sregs SP

Fig. 23.7 Contenu de la mmoire lors de lexcution du traitant de commutation de e e processus muni dune pile prive (Cf. Figure 23.6) e

http://fribok.blogspot.com/

3. Organisation du traitant de commutation

545

La gure 23.6 dcrit le programme traitant. Le programme utilise la noue velle variable globale pileordo qui est ladresse du sommet de la pile prive de e lordonnanceur. Les procdures actifverspr^t et pr^tversactif sont celles e e e dnies au paragraphe 3.1. e La gure 23.7 illustre le contenu des piles ` dirents instants de lexcution a e e du traitant. Nous allons maintenant dtailler lexcution pas ` pas du traitant. e e a Comme dans le paragraphe prcdent nous appelons Pprec le processus intere e rompu et Pnouv le processus lu. e A lentre du traitant (prologue), le registre SP est le sommet de la pile de e Pprec. Lors du dpart en interruption le processeur a sauvegard les registres e e (sauf SP) dans cette pile (zone sregs). Lappel jsr sauver a pour eet la sauvegarde au sommet de la pile de Pprec de ladresse de retour election. Le code de la procdure sauver stocke SP dans e le champ ssp du descripteur de Pprec. La valeur de SP sauvegarde est donc e dcale par rapport ` la position eective de sregs dans la pile de Pprec. Lors e e a de lexcution de rts, le processeur prend son adresse de retour dans la pile de e Pprec et SP rep`re le mot en dessous (Cf. Figure 23.7-a). e Le traitant excute alors la partie lection. Nous verrons dans le chapitre 24 e e que le processeur peut tre dot de plusieurs sources dinterruptions et que e e les traitants dinterruption sont eux-mmes interruptibles. Le masquage des e interruptions durant llection du nouveau processus actif garantit latomicit e e des oprations de mise ` jour de la le des prts. Ce probl`me datomicit a e a e e e dj` t analys sur lexemple de la pendule du chapitre 22. Le traitant met eaee e alors en place la pile prive de lordonnanceur. SP est charg avec ladresse du e e sommet de cette pile qui est ensuite utilise pour grer les adresses de retour e e et le passage de param`tres lors des appels actifverspr^t et pr^tversactif. e e e Lors de lappel jsr restaurer, SP rep`re toujours la pile de lordonnanceur. e Cest donc dans celle-ci quest sauvegarde ladresse de retour reprise (Cf. Fie gure 23.7-b). Lors de lexcution de restaurer, le champ ssp du descripteur de Pnouv qui e avait t sauvegard lors de la prcdente interruption de Pnouv, rep`re le mot ee e e e e au-dessus de la zone sregs de Pnouv. En eet, Pnouv avait t prcdemment ee e e interrompu de la mme faon que ce que nous venons de dcrire pour Pprec ; le e c e sommet de la pile de Pnouv contient donc ladresse election. SP est mis ` jour a avec ce champ ssp (Cf. Figure 23.7-c) mais ce nest pas ladresse qui convient pour lexcution du rts de restaurer. e Il faut donc corriger avec la bonne adresse cest-`-dire reprise avant a dexcuter rts (Cf. Figure 23.7-d). Apr`s le retour de restaurer, SP rep`re le e e e sommet de la pile de Pnouv qui contient la zone sregs. Le traitant excute alors e rti qui a pour eet la restauration de tous les autres registres. Lutilisation dune pile spare pour lordonnanceur permet de grer facie e e lement nimporte quelle profondeur dappel de procdures dans lalgorithme e dlection : il sut de dimensionner cette pile en consquence. e e Par contre le surcot de gestion du partage de temps pnalise les politiques u e

http://fribok.blogspot.com/

546

Partage de temps et processus

dlection complexes et le recours ` des algorithmes dlection exigeant une e a e pile de grande taille est peu probable. Lexcution de llection dans le contexte du processus interrompu, aue e trement dit en utilisant la pile de ce dernier plutt quune pile prive, est o e envisageable et simplie la ralisation du traitant (Cf. Exercice E23.2). e

4.

Cration et destruction de processus e

Dans un syst`me simple monotche lexcution dun programme rsulte e a e e dun simple appel du chargeur/lanceur par linterpr`te de commande (Cf. Chae pitre 20). Elle se termine galement de mani`re simple par lexcution dun e e e retour. Le passage ` un syst`me multitches multiplexant plusieurs processus sur a e a le processeur pose un certain nombre de questions : Comment et par qui est cr un processus ? Que devient le chargeur-lanceur ? Comment linterpr`te de ee e commande lance-t-il lexcution dun programme ? Comment se termine un e processus ? Comment lexcution de linterpr`te de commande est-elle suspene e due durant lexcution du programme lanc ? e e Le principe de fonctionnement est relativement simple : le lancement dun programme est une cration de processus excutant le programme lanc. La e e e cration dun processus est un mcanisme de liation : un processus (appel e e e ls) est cr par un autre processus (appel p`re). On parle parfois de naissance ee e e et de mort dun processus. La terminaison normale dun processus est une autodestruction. Apr`s cration, p`re et ls sexcutent comme deux processus indpendants. e e e e e Les descripteurs de processus sont enrichis de nouveaux champs dcrivant la e structure arborescente de liation des processus. Le p`re doit aussi avoir la e possibilit de se suspendre jusqu` la terminaison dun ls. Ce comportement e a est entre autres celui dun interpr`te de commandes textuel, qui cre un proe e cessus ls pour excuter la commande, puis en attend la terminaison avant de e lire une nouvelle ligne de commande. Ainsi un processus nest plus seulement actif ou prt mais peut tre suse e pendu. Il faut complter la notion dtat dun processus par ltat en attente e e e dun vnement qui peut tre la n dun autre processus par exemple. On parle e e e au chapitre 24 dautres extensions lies aux processus. e Les syst`mes multi-utilisateurs associent ` chaque processus un identie a cateur dutilisateur propritaire (uid) qui dnit les ressources (telles que les e e chiers) auxquelles il pourra accder (via les procdures du syst`me dexploitae e e tion). Il existe gnralement un utilisateur particulier nomm superutilisateur e e e (` ne pas confondre avec le mode superviseur), auquel aucune limitation de a droit dacc`s nest applique. e e

http://fribok.blogspot.com/

4. Cration et destruction de processus e

547

4.1

Cration e

La procdure de cration retourne au processus p`re appelant le pid du ls e e e cr, ou un code derreur (manque de mmoire ou dentre libre dans la table ee e e des processus ; chier inexistant ou ne contenant pas un binaire excutable e valide pour la machine, ou droits du p`re insusants). Elle poss`de un sure e ensemble des param`tres du chargeur-lanceur (except le dbut de mmoire e e e e libre) auquel elle se subtitue. Les param`tres supplmentaires sont relatifs ` e e a la gestion des droits dacc`s du processus cr. Par dfaut, le processus ls e ee e appartient au mme utilisateur que le processus p`re : seuls les processus ape e partenant au superutilisateur sont autoriss ` crer des ls appartenant ` un e a e a autre utilisateur. La procdure de cration alloue au ls une entre libre pid ls de la table e e e des processus ainsi quune pile syst`me si elle nest pas incluse dans pid ls. e Comme dans le syst`me simple, len-tte du chier excutable est lue et trois e e e zones de mmoire texte, donnes et pile utilisateur sont alloues au processus e e e cr. Le contenu des sections texte et donnes du chier excutable est charg ee e e e dans la mmoire alloue au processus ; lalgorithme de rimplantation est alors e e e appliqu. e La procdure de cration reproduit les param`tres passs par le p`re dans e e e e e la pile utilisateur du ls et initialise le champ sommet de pile syst`me (ssp) de e e pid ls ainsi que la zone de sauvegarde pointe par ce dernier. Le ls est ensuite insr dans larborescence de liation des processus et ee dans la liste des processus prts. e Noter que linitialisation de la zone de sauvegarde dans la pile syst`me e simule un processus prexistant interrompu par une interruption de commue tation et remis dans la le des prts. e

4.2

Terminaison

La procdure dautodestruction a pour param`tre un code de retour ` transe e a mettre au processus p`re, indiquant soit une excution correcte, soit lerreur e e ayant caus la terminaison prmature du ls. Ce param`tre de lappel de e e e e terminaison est recopi dans lentre de la table des processus correspondant e e au processus excutant lappel (donc le processus actif), o` le p`re pourra le e u e consulter ultrieurement. e Les zones texte, donnes et pile processus sont dsalloues et rajoutes ` e e e e a lespace mmoire disponible. e Dans la table des processus, la routine de destruction rinitialise le champ e p`re de chacun de ses processus ls, qui deviennent orphelins, et purge les ls e fantmes de la table des processus (les entres correspondantes de la table des o e processus sont remises dans la liste des entres libres). e Le processus en cours dautodestruction devient un processus fantme ou o zombie (mort-vivant) qui nvolue plus et qui nutilise plus dautre ressources e

http://fribok.blogspot.com/

548

Partage de temps et processus

que son entre dans la table des processus. e La libration de cette derni`re sera eectue ultrieurement par le processus e e e e p`re : elle contient le code de retour destin au p`re. Pour cela, le processus qui e e e sautodtruit rveille son p`re si ce dernier est bloqu en attente de terminaison e e e e dun ls. Si le processus qui sautodtruit est orphelin, il se purge lui-mme de e e la table des processus et dispara t. La procdure de destruction se termine dans les deux cas par llection dun e e nouveau processus actif.

4.3

Attente de terminaison dun ls

La procdure dattente retourne un code derreur si la liste des ls du e processus est vide. Sinon, elle retire de celle-ci un ls ls mort termin (dans e ltat fantme ou zombie), recopie le code de retour de ce dernier dans la e o variable passe par le p`re en param`tre de lappel, purge le ls de la table des e e e a processus et retourne ls mort ` lappelant. En labsence de ls termin, le processus p`re appelant excute une e e e procdure qui le bloque dans un tat dattente de termisaison dun ls, et e e reprend tout depuis le dbut apr`s avoir t rveill par un ls qui se termine. e e ee e e

4.4

Le mod`le unix e

Nous avons vu prcdemment que la procdure de cration permet ` un e e e e a processus p`re de crer un ls avec un chier excutable distinct de delui du e e e p`re, et sous une identication dirente. e e Le syst`me dexploitation unix ore trois primitives distinctes dont la come binaison permet darriver au mme rsultat. e e fork cre par clonage un processus ls ` limage du p`re. Les zones mmoire e a e e du p`re sont dupliques ` lidentique chez le ls. Le ls hrite de lidentie e a e cation du p`re. Juste apr`s la cration, le ls ne se distingue du p`re que e e e e par un pid (entre dans la table des processus) dirent. Le retour de fork e e est excut par les deux processus et retourne au p`re le pid du ls et au e e e ls une valeur nulle. exec est appel par un processus pour changer le programme quil excute. e e Le contenu du chier pass en param`tre remplace celui des zones mmoires e e e hrit du p`re. e e e setuid permet ` un processus de changer dutilisateur propritaire. a e Le scnario classiquement employ est le suivant : le p`re cre un ls via e e e e fork, le ls change didentication par setuid, puis appelle exec pour lancer son propre programme excutable. e Dautre part, aucun processus ls ne lib`re lui-mme son entre dans la e e e table des processus : la purge des zombies est ralise par le p`re (rel ou e e e e adoptif). Les ls ne deviennent pas orphelins : ` la mort du p`re, la paternit a e e

http://fribok.blogspot.com/

4. Cration et destruction de processus e

549

est transfre au processus initial du syst`me. Apr`s la phase de dmarrage, le ee e e e processus initial entre dans une boucle dans laquelle il attend la terminaison dun ls.

4.5

Scnario de dmarrage : e e cration dun premier processus e

Nous considrons ici les cas dun ordinateur auquel sont relis un certain e e nombre de terminaux. Un chier sur disque dcrit ces terminaux ainsi que e lensemble des utilisateurs autoriss ` se connecter. e a A linitialisation le processeur excute un traitant de dmarrage (amorce) e e rsidant en mmoire morte et contenant un pilote de disque rudimentaire. e e Apr`s que le syst`me ait t charg en mmoire, que les structures de donnes e e ee e e e aient t initialises, quun certain nombre de vrications aient t faites, la ee e e ee procdure damorage fabrique un pseudo processus pour appeler la procdure e c e de cration de processus et crer le processus initial appartenant ` un utilisae e a teur privilgi : le superutilisateur. e e Le chier excutable pass en param`tre (init) contient le programme de e e e dmarrage du syst`me. Celui-ci consulte un chier donnant la liste des termie e naux via lesquels les utilisateurs sont autoriss ` se connecter. Pour chacun e a deux, il cre un processus grant la procdure de connexion (login) avec pour e e e param`tre le nom du terminal ` grer. e a e Ce dernier processus ache la banni`re de connexion. Il saisit ensuite le e nom du compte et le mot de passe (en supprimant lcho ` lcran) et les e a e compare au contenu du chier de dclaration des utilisateurs. Dans le cas e o` la connexion est accepte, le processus de connexion cre un processus u e e appartenant ` lutilisateur connect pour excuter le programme associ ` a e e e a cet utilisateur dans le chier de dclaration. Cela peut tre par exemple un e e interpr`te de commandes. e Linterpr`te de commande fonctionne comme celui du syst`me simple ` e e a e deux dirences pr`s : lappel de la procdure charger lancer est remplac par e e e un appel superviseur de cration de processus suivi dun appel dattente de e terminaison ; lorsque la commande est une dconnexion (logout), le processus e interpr`te de commande excute un appel de terminaison et meurt. e e La terminaison du processus termine la session de travail, rveille le proe cessus p`re qui rache la banni`re et attend une nouvelle connexion dun e e e utilisateur sur le terminal.

http://fribok.blogspot.com/

550

Partage de temps et processus

5.

Exercices

E23.1 : Sauvegarde partielle ou totale des registres Lors dun dpart en interruption, notre processeur ne sauve que le compteur e programme et le registre dtat dans la pile. Dessiner ltat de la pile syst`me au e e e dbut du traitant. Nous donnons ci-dessous le traitant modi et la procdure e e e empiler. Dcrire ltat de la pile apr`s lexcution du rts de empiler. Ecrire la e e e e procdure dsempiler correspondante. e e
Traitant : jsr empiler jsr sauver ... jsr restaurer jsr desempiler rti empiler : sub SP, delta_reg7, SP st REG1, [SP + delta_reg1] st REG2, [SP + delta_reg2] ... st REG6, [SP + delta_reg6] ld [SP + delta_reg7], REG1 st REG1, [SP] st REG7, [SP + delta_reg7] rts

E23.2 : Ralisation du traitant de commutation sans utilisation dune e pile prive e Nous donnons ci-dessous une autre ralisation du traitant de commutae tion. Il nexiste pas de pile prive pour lordonnanceur. Cela signie que les e informations ` empiler ou ` rcuperer au sommet de la pile lors des appels et a a e retours de procdures le sont dans les piles des processus interrompu et lu. e e Par rapport aux programmes du paragraphe 3.2.2 certaines lignes de code ont t supprimes dans la partie election et dans la procdure restaurer. ee e e Etudier lexcution de ce traitant en dessinant les dirents tats du e e e contenu des piles et montrer que le programme traitant est bien correct. En particulier, remarquer que ladresse de retour pointe par le champ ssp du proe cessus suspendu sera modie par chacun des trois appels de procdure suie e vants, qui utilisent sa pile. A la n du traitant, ladresse eectivement prsente e dans la pile du processus suspendu est celle empile par lappel de restaurer e (reprise).
traitant : prologue : jsr sauver election : seti jsr actifverspr^t e jsr pr^tversactif e cli epilogue : jsr restaurer rti sauver : INITdesc (R1, actif) st SP, [R1+deltassp] rts restaurer: INITdesc (R1, actif) ld [R1+deltassp], SP rts

http://fribok.blogspot.com/

Chapitre 24 Gnralisation du mcanisme e e e dinterruption et applications


Nous avons introduit au chapitre 23 la notion de processus, brique de base de la construction des syst`mes complexes. Ce mcanisme plus avanc permet e e e de donner limpression de vraiment traiter deux tches simultanment. a e Il nous reste maintenant ` tudier comment gnraliser le mcanisme des ae e e e interruptions ` plusieurs sources dinterruption et grer les probl`mes de proa e e tection des informations des direntes activits se droulant simultanment. e e e e Par ailleurs, les direntes approches dentres/sorties tudies au chae e e e pitre 16 utilisent principalement une phase dattente active o` le procesu seur ne fait rien dautre que de scruter un coupleur en attendant que le priphrique soit en tat de communiquer. Lenrichissement du syst`me dintere e e e ruption et lutilisation du mcanisme de processus vont permettre de partager e vritablement le temps du processeur entre des tches de calcul et des tches e a a dentres/sorties. Nous gardons toutefois la synchronisation lmentaire : le e ee coupleur maintient la requte tant quil ne reoit pas de la part du processeur e c un acquittement signiant que la requte est prise en compte. e

Dans ce chapitre nous montrons comment se gnralise le mcanisme e e e dinterruption (paragraphe 1.) et comment sen servir pour apporter une rponse aux dirents besoins identis plus haut. Nous dtaillons e e e e en particulier la notion de mode superviseur/mode utilisateur (paragraphe 2.) du point de vue du programmeur et du point de vue du processeur. Pour utiliser au mieux cette protection, nous tendons le processeur e simple prsent au chapitre 22 avec quelques registres et de la circuitee e rie de calcul dadresses. Parmi les direntes utilisations du mcanisme e e dinterruption, nous tudions particuli`rement les entres/sorties (parae e e graphe 3.) o` le partage de temps est le plus justi. u e

http://fribok.blogspot.com/

552

Gnralisation du mcanisme dinterruption et applications e e e

1.

Classication des direntes sources e dinterruption

Dans le chapitre 22 nous avons considr deux sources dinterruptions posee sibles, un l IRQ et une instruction swi. Nous avons mentionn lutilisation du e swi principalement pour pouvoir mettre au point un programme traitant en provoquant par logiciel un basculement de dpart. e Pour mettre en place pleinement direntes possibilits de partage de e e temps, de nombreuses autres sources dinterruptions existent dans les machines. Les traitements correspondants permettent de simplier la tche du a programmeur dapplication en laissant dans le syst`me dexploitation de nome breux aspects dont la programmation est dlicate. En eet le syst`me dexe e ploitation comporte dj` de nombreux traitants. ea Nous prsentons les direntes types dinterruptions selon trois crit`res. e e e On sintresse dabord ` la source des interruptions : celle-ci peut provenir e a de lintrieur du processeur ou de lextrieur. Le paragraphe 1.1 prsente les e e e direntes interruptions de faon dtaille selon leur source. e c e e Par ailleurs les interruptions ont divers degr de synchronicit avec e e lexcution des instructions : les interruptions peuvent survenir ` des instants e a prvisibles ` une certaine tape de lexcution des instructions ou ` nimporte e a e e a quel moment. Dans le second cas elles ne sont considres quentre les insee tructions comme dans le chapitre 22. Le troisi`me crit`re est la fonction dune interruption. Les direntes fonce e e tions des interruptions dans la machine sont : la communication entre lordinateur et le monde extrieur, la dtection et lventuelle correction derreurs e e e diverses et les appels, voulus par le programmeur, de fonctions particuli`res e dj` programmes dans le logiciel de base livr avec la machine. Dans la praea e e tique ces trois crit`res ne sont pas totalement indpendants. e e Dans le texte nous ferons souvent rfrence ` la notion de superviseur qui ee a est tudie en dtail au paragraphe 2. e e e

1.1

Sources externes et sources internes

Il importe de distinguer les sources dinterruption selon leur origine physique et logique. Certaines proviennent de lintrieur du processeur, dautres e de lextrieur. e 1.1.1 Sources internes

Parmi les sources internes, citons tout ce qui est li ` lexcution dune e a e instruction. Instruction SoftWare Interrupt (swi) On a dj` mentionn lexistence ea e de cette instruction. Elle est utilise prioritairement pour appeler une fonction e

http://fribok.blogspot.com/

1. Classication des direntes sources dinterruption e

553

dj` existante du syst`me dexploitation et il existe des machines o` le code ea e u du swi comporte une constante prcisant lequel des services du syst`me est e e appel. Voir gure 24.1 la prise en compte du code swi. e Instructions invalides Si le registre instruction comporte N bits, il y a 2N codes possibles. Il se peut que certains codes ne soient ceux daucune instruction. On parle de code invalide. Mme sur le processeur simple tudi au e e e chapitre 14 certains codes taient invalides. Il est classique de gnrer une ine e e terruption interne dans ce cas. Voir gure 24.1 la prise en compte du code invalide. Certains codes invalides sont documents comme de vraies instructions. e Cette technique peut tre utilise pour tendre le jeu dinstructions sans pour e e e autant donner les ressources matrielles correspondantes. On peut par exemple e avoir ainsi des instructions de calcul en virgule ottante alors que le processeur ne dispose pas dune unit matrielle de calcul sur cette reprsentation. Il y a e e e alors un traitant spcique qui ralise par programme lquivalent de ce que e e e devrait faire linstruction.
Remarque : Dans la prhistoire de linformatique certains processeurs e se mettaient en cas de code invalide ` excuter une squence non docua e e mente. Il fallait, pour y comprendre quelque chose, prendre les quations e e de la ralisation de la partie contrle et retrouver les des tableaux de Kare o naugh. Chose que le programmeur normal refuse de faire. Faire, si ncessaire, e lexercice E14.5 pour voir la dicult. e

Donne invalide Il existe des machines o` une interruption est dclenche e u e e en cas dapparition dune instruction de division avec un oprande diviseur e nul. Une autre situation dinterruption se produit si il y a acc`s ` un mot e a alors que ladresse nest pas multiple de 4 dans une machine o` une telle u convention existe. Sur certaines machines des instructions particuli`res peuvent e faire dborder certaines ressources. Cest le cas sur le sparc o` les instructions e u save ou restore peuvent provoquer des interruptions pour dbordements de e fentre. e Instructions spciales Beaucoup de machines ont des classes dinstruce tions spciales (voir paragraphe 2.3). Le processeur ` deux (ou plus) modes e a de fonctionnement. Le mode de fonctionnement est matriellement un bit du e mot dtat. Un exemple sera fourni sous le nom de mode utilisateur/mode e superviseur dans ce chapitre. Dans le mode 1, toutes les instructions sont licites, dans le mode 2 certaines ne sont pas licites. Au moment du dcodage e du registre instruction, la prise en compte du bit de mode dans le mot dtat e et la rencontre dune instruction illicite pour le mode courant engendrent une interruption interne. On parle alors de violation de privili`ge. Les instructions e de changement de mode ne peuvent videmment pas tre toujours licites. e e

http://fribok.blogspot.com/

554

Gnralisation du mcanisme dinterruption et applications e e e

PC = PC+4

TA = PC

Load reg = M[TA] mot align e adresse valide mot non align e source = 1

RInst = M[TA] swi source = 3 adresse invalide et mot align e source = 2 code invalide source = 4 non IRQ ou I IRQ et non I source = 5 TA,SP = M[TA] = TA,SP = M[TA] = REtat[I] = TA = TA = PC = SP-4 PC SP-4 REtat Vrai f(source) M[TA] M[TA] autres excution e

Fig. 24.1 Graphe de contrle (tr`s partiel) du processeur acceptant plusieurs sources o e dinterruptions

1.1.2

Sources externes

Les sources externes sont diverses. On a dj` mentionn lexistence dun l ea e IRQ. Il peut y avoir plusieurs ls de requte au lieu dun seul. Les ls venant e de lextrieur du processeur peuvent vhiculer toutes sortes dinformation sur e e ltat du monde ou le droulement des instructions. e e

Etat du monde Certaines sources informent lordinateur dun tat du e monde : depuis le petit montage lectronique qui dtecte une faiblesse de e e lalimentation de lordinateur et fait commuter sur une tche de recopie de la a mmoire centrale sur disque dur, jusquau clic souris en passant par limpulsion e dhorloge ou la frappe dun caract`re au clavier. Nous reparlons de la gestion e dentres/sorties en utilisant le syst`me dinterruption au paragraphe 3. On e e trouve aussi de plus en plus dordinateurs qui dtectent : il ne sest rien pass e e depuis N minutes et passent automatiquement en mode basse consommation.

http://fribok.blogspot.com/

1. Classication des direntes sources dinterruption e

555

Excution problmatique Dautres sources rsultent de probl`mes lors e e e e de lexcution dinstructions. On a donn dans le chapitre 15 un dcodage e e e dadresse ; si une adresse mise sur le bus adresse ne correspond ` aucune zone e a mmoire installe, et si le dcodage est complet, un signal adresse invalide peut e e e tre fabriqu par le dcodeur. Ce signal peut tre une requte dinterruption. e e e e e Remarquons que le concepteur du processeur peut prvoir dans quels tats e e de la partie contrle une telle requte peut se produire : uniquement dans les o e tats o` il y a acc`s mmoire. Il installe alors un test apr`s chacun de ces tats. e u e e e e Sur la gure 24.1 on a gur ces tests apr`s un seul tat, celui dexcution de e e e e linstruction load. Cest videmment un souci de simplication ; le mme test e e aurait lieu apr`s chaque tat o` gure un acc`s mmoire. e e u e e Par ailleurs, le processeur qui acc`de en lecture ` la mmoire peut mettre e a e e un signal prcisant si lacc`s est ` une instruction ou ` une donne. Si un e e a a e syst`me de protection est install entre les zones texte et donnes des processus, e e e un dcodage dacc`s invalide peut tre install. e e e e

1.2

Synchronicit des interruptions et du droulement e e des instructions

Certains signaux dinterruptions passent ` ltat actif ` un instant prcis et a e a e prvisible par rapport au droulement de linstruction. Cest le cas de toutes les e e interruptions internes et des interruptions externes lies au dcodage dadresse. e e On parlera alors dinterruptions synchrones. Par contre les requtes venant des priphriques divers, ` travers des coue e e a pleurs, peuvent survenir nimporte quand. On parlera dinterruptions asynchrones. Les signaux sont alors chantillonns sur lhorloge du processeur pour e e tre conservs dans une bascule D, et ne sont pris en compte qu` des inse e a tants pr-tablis. Sur la gure 24.1 gure le test de IRQ apr`s lexcution des ee e e instructions marques autres. Il aurait lieu ` la n de chaque instruction. e a

1.3

Fonctions des interruptions

Le mcanisme dinterruption est utilis pour la mise en oeuvre de trois e e fonctionnalits importantes dans les syst`mes complexes. e e Une premi`re fonctionnalit correspond au partage de temps, ` loptimisae e a tion des oprations dentres/sorties et la prise en compte des alarmes venant e e de la priphrie : ce sont les interruptions proprement dites. e e La deuxi`me fonctionnalit concerne la gestion des erreurs et anomae e lies dclenches par lexcution des programmes : on parle alors plutt de e e e o droutement que dinterruption. e La troisi`me est lie ` linvocation des routines du syst`me dexploitation, e e a e par exemple celles des pilotes de priphriques avec les privil`ges adquats pour e e e e accder ` toutes les ressources de lordinateur : on parle dappel au superviseur. e a

http://fribok.blogspot.com/

556

Gnralisation du mcanisme dinterruption et applications e e e

1.4

Non indpendance des crit`res e e

Une interruption interne est forcment synchrone : appels au superviseur, e code ou donnes invalides, etc. e Une interruption externe est synchrone lorsquil sagit dune dtection dun e mauvais droulement dune instruction : acc`s mmoire non autoris, etc. e e e e Une interruption externe est asynchrone lorsquelle permet de grer les e communications avec le monde extrieur. e

1.5

Identication de la requte et slection du traitant e e

Puisquil y a plusieurs sources dinterruptions il est obligatoire de pouvoir identier la source de linterruption et de pouvoir associer un traitant particulier pour chaque source. Lorganisation type est davoir, apr`s le basculement de dpart, une valeur e e de PC caractristique de la source de la requte. Il convient donc de raliser e e e dune certaine faon la fonction qui donne une adresse de dbut pour chaque c e cause. Le probl`me se pose diremment selon que les direntes requtes sont e e e e simultanes ou non. e 1.5.1 Forage du Compteur Programme c

Il y a principalement trois faons de forcer le compteur programme au c moment du basculement de dpart. e La solution la plus rpandue consiste ` forcer une valeur dans un registre e a intermdiaire source. La valeur est caractristique de la cause dinterruption e e (voir gure 24.1). Cette valeur est ensuite utilise pour fabriquer ladresse de e dbut du traitant. e Certains processeurs de la famille intel tablissent un dialogue entre le e processeur et le coupleur apr`s une requte dinterruption asynchrone. Cela e e permet de localiser la source qui fournit alors un numro permettant de fabrie quer ladresse de dbut du traitant. e Une solution par programme est possible aussi : le processeur scrute les dirents mot dtat des coupleurs par le programme traitant et se branche, e e conditionnellement, ` une table dadresses pr-tablie. a ee 1.5.2 Choix parmi des sources simultanes e

La prise en compte de multiples sources dinterruptions demande de rgler e le probl`me du choix parmi les candidats possibles. Par exemple lorsquun acc`s e e a ` un mot a lieu ` une adresse non multiple de 4 dans une zone de mmoire o` a e u aucun boitier nest install, quel traitement sera fait ? Celui pour acc`s invalide e e ou celui de mmoire non installe ? e e

http://fribok.blogspot.com/

1. Classication des direntes sources dinterruption e

557

Nous distinguerons quatre faons de faire ce type de choix. Elles corresc pondent ` des mtiers de linformatique dirents. a e e Dans la premi`re solution le choix est fait ` la conception du processeur. Il e a est tabli par matriel ` lintrieur du processeur. Le choix nest videmment e e a e e pas modiable par lutilisateur nal de lordinateur. Le mtier concern est e e celui de concepteur de processeur. Dans la deuxi`me solution le choix est fait par matriel ` lextrieur du e e a e processeur. Lutilisateur de lordinateur ne peut en gnral pas faire de moe e dication mais larchitecte de machine a la charge de raliser cette fonction. e Le mtier concern est celui de concepteur dordinateurs ` base de processeurs e e a existants. Dans la troisi`me solution le choix de prise en compte parmi des requtes e e est fait par logiciel. Il sagit dune couche logicielle de bas niveau, enfouie dans le syst`me dexploitation. Lutilisateur nal ny peut rien. Le mtier concern e e e est celui de concepteur de logiciel de base dordinateur. Enn, sur la plupart des machines, par appel ` des routines syst`me, lutia e lisateur peut crire des programmes grant un certain nombre dvnements. e e e e Le lecteur du prsent livre risque bien dtre un jour dans cette situation ! e e Le premier choix est enti`rement matriel. Supposons 3 signaux de requtes e e e simultans possibles ` un instant donn irq1, irq2, irq3. Il est facile dintroduire e a e dans le graphe de contrle du processeur 4 tats E1, E2, E3 et E4 successeurs o e de ltat de test avec le squencement suivant : e e
tat suivant = si irq1 alors E1 sinon e si irq2 alors E2 sinon si irq3 alors E3 sinon E4

Par matriel, cela revient ` utiliser les boolens irq1, irq1.irq2, irq1.irq2.irq3, e a e et irq1.irq2.irq3 comme conditions de validation des arcs dans le graphe de lautomate de contrle. Cest ce qui est fait sur la gure 24.1 pour les sources mot o non align et adresse invalide apr`s ltat de lecture mmoire et chargement e e e e dun registre dans lexcution de linstruction de chargement. e Le deuxi`me cas sapplique pour les machines o` les coupleurs fournissent e u chacun un l de requte, par exemple jusqu` 16 ls, mais o` un circuit externe e a u au processeur, nomm encodeur de priorit dinterruptions, ne fournit au proe e cesseur que le numro, sur 4 bits, du l actif de plus fort numro. Le cblage du e e a clic souris sur lentre 3, de lhorloge sur lentre 14 et du contrleur de disque e e o sur lentre 7 xe alors les priorits respectives de ces direntes sources pose e e sibles. Si les 3 sources mettent des requtes simultanes, cest lhorloge (de e e e niveau 14) qui sera servie. Les troisi`me et quatri`me cas ont lieu quand plusieurs sources sont relies e e e par un seul l physique au processeur selon un montage ` base dune porte NOR a en NMOS o` la rsistance de rappel ` lalimentation est, par exemple, interne u e a au processeur (Cf. Figure 24.2). Le processeur entame alors une scrutation, par logiciel, dans un ordre donn, des registres dtats des dirents coupleurs e e e pour identier celui qui est lauteur de la requte. Dans le cas de requtes e e

http://fribok.blogspot.com/

558

Gnralisation du mcanisme dinterruption et applications e e e

bo tier coupleur i irq i

bo tier coupleur k irq k processeur

bo tier coupleur j irq j

irq i OU irq j OU irq k

Fig. 24.2 Liaison des requtes dinterruption sur un seul l e

simultanes, lordre de scrutation xe la priorit des sources. Le premier scrut e e e ayant mis une requte est servi. Il faut, naturellement, que les demandeurs e e non servis maintiennent leur requte. e Naturellement, il est possible de cumuler les dirents choix, en respectant e une certaine cohrence. e 1.5.3 Choix parmi des sources hirarchises e e

On a mentionn dans le chapitre 22 le traitement rserv ` une requte e e e a e dinterruption survenant pendant lexcution dun traitant. Le bit dinhibie tion I permet dautoriser ou dinterdire la prise en compte de telles requtes ` e a ce moment. Sur certaines machines le programmeur a acc`s ` ce bit. e a Cette technique peut tre gnralise ` plusieurs sources. Si un processeur e e e e a a 3 sources dinterruptions, irq1, irq2, irq3, on peut convenir que irq3 peut toujours interrompre le traitant de irq2 ou irq1. De mme que irq2 peut e toujours interrompre le traitant de irq1. Il reste alors au programmeur, par manipulation de bits I1 , I2 , I3 du mot dtat ` dcider si il autorise ou non ` e a e a ce que irqk interrompe le traitant de irqk . Il va de soi que si une requte peut interrompre un traitant il ne faut pas e que le traitant de commutation de contexte puisse tre interrompu nimporte e quand. Il convient donc daccorder une priorit leve aux interruptions horloge ee e et aux appels superviseur. Il reste, nanmoins, ` protger les traitants les uns e a e des autres.

1.6

Probl`me de la reprise dune instruction e

Les processeurs sparc ont une protection contre une utilisation dune nouvelle fentre qui viendrait ` craser une fentre dj` utilise. Si un tel acc`s e ae e ea e e est tent par une instruction, une interruption interne est mise. Le traitant e e dinterruption doit alors sauver en mmoire, dans une zone gre en pile, le e ee contenu des registres menacs. Au retour du traitant dinterruption, il convient e

http://fribok.blogspot.com/

2. Protection entre processus, notion de superviseur

559

alors de reprendre linstruction qui a caus linterruption, et non pas, comme e dans le cas gnral de passer ` la suivante. e e a Les machines vax disposent dune instruction dvaluation de polynme. e o La valeur de la variable est range ` un endroit et un tableau en mmoire e a e contient les N coecients. N peut tre grand. Lexcution de cette instruction e e peut donc durer un certain temps. Une interruption tr`s prioritaire peut alors e survenir. Et les concepteurs de la machine peuvent dcider dinterrompre linse truction de calcul du polynme sans perdre les calculs dj` faits. Se pose alors o ea le probl`me de savoir si il est possible de reprendre linstruction interrompue en e cours dexcution. Cela ncessite de sauvegarder, au moment du basculement e e de dpart, non seulement ladresse de retour gale dans ce cas ` ladresse de e e a linstruction en cours dexcution, mais aussi le numro de ltat o` a eu lieu e e e u linterruption ou le compteur de boucle indiquant o` en est lexcution. u e

2.

Protection entre processus, notion de superviseur

Dans un syst`me multi-utilisateurs bien conu, un processus ne peut pas e c accder librement aux ressources physiques de lordinateur (mmoire centrale, e e espace disque, temps du processeur) et les monopoliser. On ne peut imaginer quun programmeur sur une machine multi-utilisateur puisse crire un programme en langage dassemblage qui aille crire dans la e e structure de donnes de lordonnanceur de processus et salloue la totalit du e e temps. La condentialit des informations est galement importante. Imaginons e e quun enseignant soit en train dditer un sujet dexamen sur le serveur de e son tablissement : il est plus que souhaitable quun processus dun tudiant, e e travaillant sur la mme machine, ne puisse pas lire ni modier la mmoire du e e processus de lenseignant ou le contenu du chier sur le disque ! La ncessit de e e mcanismes de protection est encore plus vidente dans les domaines bancaires e e ou militaires. Dirents aspects de scurit sont couverts par la notion de mode supervie e e seur, qui soppose ` mode utilisateur. a

2.1

Notion de mode superviseur et de mode utilisateur

Le processeur est dot de deux modes de fonctionnement, utilisateur et e superviseur. Le principe consiste ` excuter le code de lutilisateur propritaire a e e du processus dans un mode restreint dit utilisateur, ou restreint, dans lequel le processeur ne peut accder ` la mmoire centrale en dehors des zones qui e a e lui sont alloues (texte, donnes, pile), ni aux priphriques. Les routines du e e e e noyau du syst`me dexploitation sont au contraire excutes dans un mode e e e

http://fribok.blogspot.com/

560

Gnralisation du mcanisme dinterruption et applications e e e

privilgi dit superviseur ou noyau, leur permettant daccder librement ` toute e e e a la mmoire et ` tous les priphriques de la machine. e a e e Le mode dexcution est dni par un nouveau boolen S (pour superviseur) e e e du registre dtat du processeur. La valeur de ce bit est ache vers lextrieur e e e lors des acc`s mmoire. Le circuit de dcodage dadresses vrie ladresse et e e e e le sens de chaque acc`s mmoire eectu par le processeur et sassure quils e e e correspondent bien aux zones mmoires attribues au processus actif et ` son e e a mode dexcution. e De plus certaines instructions tant accessibles seulement en mode supere viseur les programmes en mode utilisateur sont cantonns. Par exemple les e instructions de modication, voire de consultation, de certains registres du processeur ne sont excutables quen mode superviseur. La rencontre dune e instruction rserve sans que le bit S soit dans ltat convenable provoque une e e e interruption interne, analogue ` la rencontre dun code invalide. a La seule faon pour un programme sexcutant en mode utilisateur pour c e accder au syst`me dexploitation est connue sous le nom dappel au supervie e seur. Elle permet au programmeur dutiliser les procdures du syst`me dexe e ploitation.

2.2

Cahier des charges des appels au superviseur

Le cahier des charges du mcanisme dappel dune procdure du noyau du e e syst`me est le suivant : e le passage en mode superviseur doit tre coupl et restreint aux seuls appels e e de procdures bien identies du syst`me, e e e le mode en vigueur (donc tout ou partie du registre dtat, au minimum e le bit S) doit tre mmoris lors de lappel au superviseur et rtabli lors e e e e du retour : certaines procdures sont en eet susceptibles dtre appeles e e e indiremment par dautres procdures du syst`me en mode noyau ou par e e e du code utilisateur en mode restreint, il faut assurer la liaison dynamique entre lappelante et la routine syst`me, e dont ladresse peut varier dun ordinateur ` lautre (par exemple parce a quils disposent de pilotes de priphriques dirents), qui reposait dans e e e notre syst`me simple sur une table de branchement, e il faut contraindre le branchement aux seules entres dnies dans la table. e e Dans le cas contraire, un utilisateur malveillant pourrait court-circuiter les vrications (de droit dacc`s) eectues dans le prologue de la routine e e e syst`me en se branchant directement sur le corps de celle-ci, voire appeler e sa propre routine cre de toutes pi`ces ` la place de la procdure syst`me. ee e a e e En rsum, il sagit dappeler un traitant dont ladresse est dnie implicitee e e ment par un numro de service dans une table de vectorisation, de sauvegarder e le (bit S du) registre dtat en plus de ladresse de retour et de positionner S e a ` 1. Nous pouvons pour cela rutiliser le mcanisme dinterruptions vectorises, e e e avec trois modications mineures : 1) lappel est dclench explicitement par e e

http://fribok.blogspot.com/

2. Protection entre processus, notion de superviseur

561

une instruction (swi) ; 2) le numro de vecteur est un param`tre de linstruce e tion dinterruption logicielle swi. Dans ce contexte dutilisation linstruction dappel au superviseur est souvent nomme trap ; 3) le bit S est mis ` 1 lors du e a basculement de dpart ; cest pourquoi le matriel doit eectuer une sauvegarde e e de tout ou partie du registre dtat, au minimum le bit S. e

2.3

Instructions privilgies e e

Naturellement, lexcution de toute instruction autre que lappel supervie seur et susceptible de modier le bit S doit tre interdite en mode utilisae teur. Les instructions correspondantes sont dites privilgies et dclenchent e e e un droutement de violation de privil`ge si on tente de les excuter en mode e e e restreint. Toutes les instructions aectant un ou plusieurs boolens du registre dtat e e autres que ceux formant le code condition de branchement (Z, N, C, V) sont privilgies, ` commencer par linstruction de retour dinterruption. e e a Les registres dadresses dont nous parlons au paragraphe 2.7.1 utiliss pour e installer le mcanisme de protection sont en acc`s rserv. Leur criture, parfois e e e e e leur lecture, depuis le mode utilisateur constitue une violation. Cette restriction inclut le contrle de la prise en compte des interruptions o externes : en masquant les interruptions, un processus pourrait dsactiver le e mcanisme de partage de temps et monopoliser le processeur. e

2.4

Sparation des piles, deux pointeurs de pile e

Il subsiste un trou de scurit plus subtil : la sauvegarde du registre dtat et e e e de ladresse de retour seectuent en mode superviseur et ` ladresse donne par a e le pointeur de pile. Or laectation du pointeur de pile, utilise dans la gestion e des appels de procdures, ne peut tre privilgie. Le syst`me ne dispose donc e e e e e daucune garantie de validit de ladresse contenue dans le pointeur de pile. e Un dpart en interruption pourrait donc se faire avec une rfrence de pile e ee incorrecte. Or juste apr`s le processeur est en mode superviseur. e Cest pourquoi on peut doter le processeur de deux pointeurs de pile, un pour chaque mode dexcution, le pointeur de pile ` utiliser tant slectionn e a e e e par la valeur du bit S. On alloue ` chaque processus une pile syst`me destine au seul code excut a e e e e en mode noyau. Le tableau contenant la pile syst`me pourrait par exemple tre e e un champ supplmentaire de la structure de donnes reprsentant les processus. e e e Le pointeur de pile syst`me est automatiquement activ avant la sauvee e garde lors du dpart en interruption, droutement sur erreur, ou appel supere e viseur. En mode superviseur, une instruction privilgie permet de manipuler e e le pointeur de pile utilisateur. En mode utilisateur, lacc`s au pointeur de pile e syst`me est interdit. SP est le nom du pointeur de pile actif dans le mode e dexcution courant, les commandes dacc`s aux registres tiennent compte e e

http://fribok.blogspot.com/

562

Gnralisation du mcanisme dinterruption et applications e e e

du mode dexcution. Lappel de procdure, qui fait usage de SP, est ainsi e e indpendant du mode dans lequel sexcutent les procdures. e e e

2.5

Ralisation des appels au superviseur e

Les programmes utilisateurs sont lis (dynamiquement) avec les bie blioth`ques dinterface livres avec le syst`me, qui encapsulent et masquent le e e e mcanisme dappel superviseur. Pour accder ` un service syst`me, le procese e a e sus excute un appel de procdure normal, en mode utilisateur, en respectant e e la convention dappel de procdure standard dempilement de ladresse de ree tour et des param`tres dans la pile utilisateur. Puis la procdure appele, la e e e routine de biblioth`que dinterface, excute ` son tour une instruction dappel e e a superviseur avec le numro de service ` invoquer. e a Le traitant dappel superviseur sauvegarde le contenu des registres du processeur dans la pile syst`me et eectue un saut au code correspondant ` la e a primitive demande, via une table de branchement indexe par le numro de e e e service pass par la fonction de biblioth`que. e e En utilisant ladresse contenue dans le pointeur de pile utilisateur, le traitant peut retrouver les param`tres passs par lappelante dans la pile utilisae e teur et les recopier dans la pile syst`me pour appeler la routine charge du e e traitement. La procdure noyau invoque vrie que le processus actif poss`de les droits e e e e ncessaires pour lopration considre, et que les param`tres appartiennent ` e e ee e a la plage de valeurs lgales. Dans le cas dune lecture de chier, la routine e vriera entre autres que le propritaire du processus a le droit de lecture e e sur le chier et que le tampon de rception (param`tres adresse et taille du e e tampon) est bien inclus dans la zone de donnes aecte au processus actif. e e Rciproquement, le code derreur retourn par la fonction noyau est pass e e e en sens inverse ` la fonction de biblioth`que qui a excut lappel superviseur. a e e e La convention dappel stipule gnralement que la valeur retourne par la e e e fonction est stocke dans un registre du processeur. Dans ce cas, la fonction e syst`me peut tout simplement dposer un code de retour dans la zone de e e sauvegarde des registres dans la pile syst`me. Cette valeur sera dsempile par e e e lpilogue du traitant dappel superviseur, qui restaure la valeur des registres, e et la fonction de biblioth`que la rcuprera dans le registre correspondant. e e e

2.6

Protection gnralise e e e

Il existe des machines pourvues de plusieurs ( 2) anneaux ou niveaux de protection (` ne pas confondre avec le niveau de prise en compte des intera rutions externes), numrots de 0 ` p 1. Lanneau intrieur de numro 0 e e a e e correspond au mode noyau dpourvu de toute restriction. Les privil`ges ace e cords aux processus diminuent avec les numros danneaux et lanneau de e e

http://fribok.blogspot.com/

2. Protection entre processus, notion de superviseur

563

numro p 1 correspond au mode utilisateur dans lequel toutes les protections e sont actives. e Chaque rduction de niveau de protection met en jeu un mcanisme anae e logue ` lappel superviseur. Chaque anneau est dot de sa propre pile et la a e recopie des param`tres entre niveaux dappels dirents est gre par matriel e e ee e pour des raisons decacit. e Dans la description du syst`me dexploitation multics [Org72] (antrieur e e a ` unix) on trouve une discussion de la raison dtre et de lutilisation des e anneaux de protection. Le syst`me dexploitation os/2 utilise galement ce e e type de protection. En dpit de leur intrt, les anneaux de protection sont quelque peu tombs e ee e en dsutude. Ils sont supports par les processeurs de la famille 80x86 dintel e e e a ` partir du 80286.

2.7

Protection par dnition de zones mmoire e e

Nous dcrivons ici un mcanisme de protection par dcoupage de zones e e e mmoire et nous en donnons une extension simple, connue sous le nom de e translation dadresses. 2.7.1 Motivation, comportement et ralisation matrielle e e

Nous avons vu que chaque processus peut accder ` une zone texte, une e a zone donnes et une zone pile en mmoire. Pour garantir quun processus e e nacc`de pas aux zones de ses voisins, nous dotons le processeur de 6 ree gistres supplmentaires. Ces registres seraient inclus dans une partie de calcul e dadresse CA qui ne gure pas sur la gure 22.1. On la situerait dans la zone du registre TA. Ces 6 registres doivent contenir en fonctionnement normal les adresses de dbut et de n des 3 zones de texte, donnes et pile du processus en e e cours dexcution. Le bloc CA contient de plus 6 comparateurs entre ladresse e courante et ces 6 constantes (Cf. Figure 24.3). Ces 6 registres sont mis ` jour lors de ltape dpilogue du traitant dintera e e ruption qui assure la commutation de processus (Cf. Figure 23.6). Les valeurs a ` y installer gurent dans le descripteur du processus. La protection peut se faire ` dirents niveaux que nous allons aborder a e successivement. Un premier niveau de vrication consiste ` sassurer, ` la vole, lors de e a a e chaque acc`s mmoire ` une addresse ad que : e e a Dbut texte ad Fin texte e Dbut donnes ad Fin donnes e e e Dbut pile ad Fin pile e Si aucune de ces conditions nest satisfaite (t=d=p=0), lacc`s mmoire e e est annul (signal Acc`sMem mis ` 0) et une interruption est mise. Cest e e a e videmment une interruption interne parfaitement synchrone. Son traitement e

http://fribok.blogspot.com/

564

Gnralisation du mcanisme dinterruption et applications e e e

S z-1 fZ b axb x dZ a bus int z z-1 z+1 z-1 z+1 z-1 z+1 z t

z+1

Fig. 24.3 Comparateur simple entre une adresse et des dbuts (dZ) et n (fZ) de zones. e Les trois comparateurs sont cascads. Lentre S est le bit superviseur. En e e eet la vrication est faite en mode Utilisateur seulement. e

donne lieu ` un traitant derreur dadressage ressemblant ` celui pour adresse a a invalide ou mot non align. e Un deuxi`me niveau de vrication plus pousse peut tre install tenant e e e e e compte : du type dacc`s (lecture ou criture) ; du type dobjet accd (donne e e e e e ou instruction), en fait il sagit plus exactement de linstant dacc`s dans le e graphe de contrle (phase acquisition du code opration ou phase autre) ; o e du mode dexcution (superviseur ou utilisateur). Le circuit combinatoire de e vrication est un peu plus complexe dans ce cas. e 2.7.2 Translation dadresses

Un autre mcanisme utile peut venir complter cette protection : il est e e possible que deux processus soient en ralit lexcution du mme programme e e e e sur des donnes direntes. Que lon pense, par exemple, ` un compilateur trae e a vaillant en multitche pour dirents utilisateurs programmeurs. La zone text a e est alors partage et les zones data et bss sont dupliques. La translation des e e adresses dans la zone text ne peut plus tre ralise lors du chargement puisque e e e ces adresses, pour un mme code excut, rep`rent des endroits dirents. e e e e e Une solution classique est de navoir que des programmes qui, virtuellement, ne travaillent quavec des adresses mmoires qui ne sont pas absolues, mme si e e lon parle de mode dadressage absolu. Les adresses dans le code machine sont, en fait, des dplacements par rapport ` une adresse de dbut de zone. Ladresse e a e eective en mmoire dune donne est obtenue en ajoutant ce dplacement et e e e e e c le contenu du registre Dbut donnes. Le dplacement reoit souvent le nom e dadresse logique et ladresse eective en mmoire celui dadresse physique. e Ce mcanisme reoit le nom de translation dadresses. Il suppose qu` e c a chaque acc`s ` la mmoire une addition soit faite entre ladresse logique mise e a e e

http://fribok.blogspot.com/

3. Entres/sorties gres par interruption e e e

565

Rtrad Super/Util + Adresse logique 0 1 Adresse physique

Fig. 24.4 Matriel pour la translation dadresses e

par le processeur et le contenu dun registre de traduction Rtrad. Dans beaucoup de cas les donnes des programmes sexcutant en mode superviseur ne e e sont pas soumises ` ce traitement (Cf. Figure 24.4). a En cumulant protection et translation dadresse, on a un vricateur dacc`s e e pour chaque zone. Ces dirents vricateurs voient leurs rsultats cumuls par e e e e un simple circuit qui donne un signal dautorisation dacc`s ` la mmoire et le e a e dplacement correspondant si il y a un acc`s permis, un signal dinterruption e e interne si aucun acc`s nest permis. e

3.

Entres/sorties gres par interruption e e e

Rappelons le mcanisme, lmentaire et peu raliste, mis en place pour faire e ee e des entres/sorties (Cf. Chapitre 16) : e
Le processeur, via le programme pilote de priphrique, crit une commande e e e dans le registre du coupleur puis entre dans une boucle logicielle dattente. Cette boucle scrute le registre dtat du coupleur jusqu` ce que laction core a respondante soit termine. e

Nous dcrivons dans cette partie comment il est possible dviter le e e phnom`ne dattente active lors des entres/sorties en utilisant le mcanisme e e e e des interruptions.

3.1

Interruptions en provenance des priphriques e e

La solution consiste ` utiliser la possibilit donne aux coupleurs dmettre a e e e une interruption d`s quils ont termin une tche. Ils conservent un mot dtat e e a e indiquant quils ont eectivement termin. e Cette interruption est, naturellement, scrute par le processeur. Mais il e sagit l` dune scrutation matrielle, faite par lautomate Partie Contrle du a e o processeur. Il ny a donc plus de programme de scrutation et le processeur peut excuter des instructions tout en maintenant cette observation ncessaire e e du l de requte dinterruption IRQ. e

http://fribok.blogspot.com/

566

Gnralisation du mcanisme dinterruption et applications e e e

pendule Prt e pendule Actif

SWI appel au superviseur Endormi IRQnE/S(coupleur)

Fig. 24.5 Les 3 tats dun processus et les causes de changement e

Lorsque le processeur a dtect cette requte, le traitant peut lire le mot e e e dtat du coupleur. Mais une seule fois sut maintenant ` conrmer que cest e a bien ce coupleur qui a mis la requte. e e

3.2

Gestion de processus avec tat endormi e

Nous venons de voir que le processeur na plus besoin de scruter par programme le mot dtat dun coupleur lanc dans une action dentre/sortie. e e e Mais que peut-il faire dautre ? Un programme comportant une lecture dun caract`re au clavier et le traitement de ce caract`re ne peut videmment pas e e e se poursuivre tant que le caract`re nest pas obtenu. On va donc dire que ce e programme, le processus qui lui est associ en fait, sendort ou se bloque. e Les tats des processus Aux deux tats Prt et Actif des processus, nous e e e ajoutons un tat Endormi (ou Bloqu). Ces 3 tats sont reprsents sur la e e e e e gure 24.5. Dtaillons les raisons qui font passer un processus dun tat ` un e e a autre : 1. Un processus Actif qui na pas dentres/sorties en cours peut tre mis e e sur la le des Prts ` la suite dune interruption cause par la pendule e a e priodique de lordinateur. e 2. Un processus Prt, en tte de le, peut tre remis en tat Actif ` la suite e e e e a dune interruption cause par la pendule priodique de lordinateur. e e Ces deux situations ne sont pas nouvelles par rapport au chapitre 23. 3. Si un processus Actif a besoin dune action dentre/sortie, il fait un appel e syst`me (par une instruction swi) en donnant toutes les informations e sur la nature de lentre/sortie souhaite. Le syst`me dexloitation lance e e e laction en crivant dans le coupleur les commandes ncessaires et met e e le processus en tat Endormi. e 4. Un processus Endormi sur attente du rsultat dune certaine action e dentre/sortie est remis dans la le des Prts par le gestionnaire de e e processus d`s que linterruption de n dentre/sortie est mise par le e e e coupleur en question. La gure 24.6 donne deux situations dentrelacement de quatre processus. Dans la situation a, seul le processus P2 lance une action dentre/sortie et e laction est faite rapidement par rapport ` la priode de la pendule. Dans la a e situation b, P2 et P3 lancent des actions et le traitement de lentre/sortie de e P2 est un peu plus long.

http://fribok.blogspot.com/

3. Entres/sorties gres par interruption e e e

567

a) P1 P2 P3 P4 actif prt e prt e prt e SWI Priode de pendule e actif actif actif IRQnE/S prt e endormi actif prt e prt e prt e prt e actif

P1 b) P2 P3 P4 Fig. 24.6 Deux situations dentrelacement de 4 processus attendre priphrique () { e e dormeur = actif ; proc[actif].endormir = VRAI ; /* autoriser IT au niveau du coupleur */ *commande coupleur = AUTORISER IT ; appel superviseur dormir ; } Fig. 24.7 Procdure dattente e endormi endormi

3.3

Programmation des traitants dinterruption

Dans la procdure dattente du priphrique (Cf. Figure 24.7), le processus e e e actif excute un appel superviseur qui lui permet de se bloquer. e On trouve ainsi quatre traitants dans notre syst`me : le traitant dappel e superviseur qui eectue lcriture sur le coupleur, le traitant dappel supervie seur de blocage (Cf. Figure 24.8), le traitant dinterruption de rveil (Cf. Fie gure 24.9) et le traitant dinterruption de commutation du chapitre 23 qui g`re e les tranches de temps. Noter que trois de ces traitants manipulent la structure de donnes e dcrivant les processus et quils doivent donc se protger les uns des autres pour e e accder cette derni`re (Cf. Paragraphe 4. du chapitre 22) , do` le masquage e e u des interruptions au niveau du processeur pour garantir lexclusion mutuelle. Procdure dattente La procdure attendre priphrique consiste ` ene e e e a registrer le processus dans une variable (dormeur) du pilote de priphrique, e e

http://fribok.blogspot.com/

568

Gnralisation du mcanisme dinterruption et applications e e e

traitant dormir () { empiler () ; sauver () ; masquer it () ; /* la manipulation de la structure dcrivant les processus */ e /* ncessite une exclusion mutuelle */ e si proc[actif].endormir alors actif vers bloqu () ; e dmasquer it () ; e restaurer () ; dpiler () ; } e actif vers bloqu () { e proc[actif].tat = BLOQUE ; e pr^t vers actif () ; } e Fig. 24.8 Traitant de blocage

autoriser le coupleur ` mettre une interruption lorsque le priphrique devient ae e e prt et ` sendormir. e a Traitant de blocage Le traitant appel superviseur dormir eectue la transition Actif vers Bloqu du processus qui lappelle. Dans un premier temps, e nous supposons que ce blocage est inconditionnel. Dans lalgorithme, le blocage nest eectu que si la variable boolenne endormir du processus est vraie. La e e raison dtre de ce test sera explique apr`s la prsentation du traitant de e e e e rveil. e Traitant dinterruption de rveil La procdure de traitement e e a e appel superviseur dormir bloque le processus jusqu` larrive dune interruption de rveil indiquant que le priphrique est prt. e e e e Le traitant de rveil acc`de au coupleur pour annuler lautorisation e e dmettre une interruption (sans quoi linterruption serait prise en compte e a ` nouveau au retour du traitant, le priphrique nayant pas t servi), rveille e e ee e le processus bloqu (dont lidentit est stocke dans la variable dormeur du e e e pilote) et le remet dans lensemble des processus prts. Plus tard, le processus e rveill redevient actif et eectue le transfert de donne avec le priphrique. e e e e e L` encore, nous considrons dans un premier temps que le rveil est toua e e jours eectu par le traitant et nous verrons ensuite pourquoi celui-ci doit tre e e conditionn par la variable endormir. e En labsence de prcaution particuli`re, il existe un ala de fonctionnement e e e li au fait que le blocage du processus et lautorisation des interruptions au e niveau du coupleur ne sont pas eectues de mani`re atomique. e e Dans le cas favorable, linterruption de rveil arrive apr`s que le processsus e e se soit endormi et tout se passe correctement. Supposons ` prsent que la n a e

http://fribok.blogspot.com/

3. Entres/sorties gres par interruption e e e

569

traitant reveil () { empiler () ; masquer it () ; /* la manipulation de la structure dcrivant les processus */ e /* ncessite une exclusion mutuelle */ e si proc[actif].tat == BLOQUE ; e alors bloqu vers actif () ; e sinon /* le processus na pas eu le temps de sendormir */ proc[actif].endormir = FAUX ; dmasquer it () ; e dpiler () } e bloqu vers actif () { e proc[dormeur].tat = PRET ; e ajouter pr^t (dormeur) ; } e Fig. 24.9 Traitant dinterruption de rveil e

de la tranche de temps alloue au processus actif se termine juste apr`s que e e le processus a autoris le coupleur a linterrompre et juste avant dappeler e traitant dormir. Le processus se retrouve dans la le des prts. e Larrive de linterruption de rveil avant que le processus ne redevienne e e actif pour excuter lappel superviseur de blocage pose deux probl`mes : le e e signal de rveil est perdu et le processus ne se rveillera jamais apr`s stre e e e e endormi ; plus grave, le traitant de rveil, croyant le processus dj` endormi, e ea va essayer de lajouter en queue de la le des prts ` laquelle le processus e a appartient dj` et laisser la le dans un tat incohrent. ea e e On trouve deux mani`res principales de rsoudre le probl`me. La premi`re e e e e consiste ` masquer les interruptions au niveau du processeur avant dautoria ser le coupleur ` en mettre, de telle sorte que lautorisation au niveau du a e coupleur et le blocage du processus deviennent atomiques (les interruptions tant dmasques au moment du rveil du nouveau processus actif au retour e e e e du traitant de blocage). La seconde consiste ` mmoriser larrive ventuelle a e e e du signal de rveil entre le moment o` le coupleur est autoris ` interrompre et e u ea celui o` le processus se bloque : le blocage du processus est annul si le signal u e de rveil est arriv entre temps (endormi remis ` faux par le traitant de rveil). e e a e Lutilisation de la variable de processus endormir illustre la deuxi`me e stratgie. Elle prsente lavantage de fonctionner galement dans le cas o` le e e e u processus souhaiterait attendre plusieurs vnements et rpondre au premier e e e qui se prsente (la primitive unix select correspond ` ce type de fonctionnalit). e a e Le probl`me de la le vide Lorsque le processus actif sendort, la e le des prts peut tre vide, tous les processus tant bloqus en attente e e e e

http://fribok.blogspot.com/

570

Gnralisation du mcanisme dinterruption et applications e e e

dentres/sorties et lordonnanceur na plus de processus candidat ` lire. e ae Une stratgie consiste ` indiquer dans la variable actif labsence de procese a sus et ` excuter une instruction spciale qui stoppe le processeur (qui cesse a e e dexcuter des instructions) jusqu` larrive dune interruption de rveil dun e a e e processus (si le processeur ne peut tre stopp, il est toujours possible de lui e e faire excuter une boucle de test de la le des prts). Le premier processus e e rveill par une interruption rtablit le fonctionnement normal du processeur e e e et transite directement de ltat bloqu ` ltat actif. e ea e e Une autre mthode consiste ` modier la procdure retirer pr^t de e a e mani`re ` retourner, en labsence de processus prt, un processus gardien e a e spcial qui excute une boucle innie contenant un appel superviseur dormir. e e D`s quil devient actif, le gardien se bloque et perd ausitt le processeur. e o Si aucun processus na t rveill depuis, le gardien est lu ` nouveau et se ee e e e a bloque derechef, et ainsi de suite jusqu` quun processus ait t rveill et a ee e e que la le des prts soit non vide. La tte de la le des prts est alors lue e e e e immdiatement. e

4.

Pour aller plus loin

Nous avons, dans la partie VI de ce livre, prsent la notion de processus et e e montr comment grer direntes activits sexcutant en pseudo paralllisme e e e e e e sur un seul processeur. Dans un syst`me dexploitation la notion de processus est encore plus large : e un utilisateur lambda peut crer lui-mme des processus qui peuvent changer e e e des informations et se synchroniser de direntes faons. On parle alors de e c programmation concurrente. Pour avoir un expos complet des notions de synchronisation entre procese sus et trouver des complments dinformation sur la protection, le lecteur peut e consulter par exemple un des ouvrages suivants : [Kra85, Bac90, Tan94, SG96].

http://fribok.blogspot.com/

Index
chantillonnage, 127, 384 e criture (acc`s mmoire), 11, 205, 384, 402 e e e dition de liens, 436 e dition de texte, 17, 481 e mulation, 289, 295, 442 e tat, 8 e dun circuit squentiel, 215 e dun processus, 533, 566 dune machine squentielle (autoe mate), 101 nal, 104 initial, 17, 101, 215 tiquette, 449 e de transition, 101 du langage dassemblage, 298 absolu (adressage), 272 abstraction boolenne, 145 e acc`s e alatoire, 206 e direct ` la mmoire, 412 a e squentiel, 206, 467 e acc`s mmoire, 203, 204 e e en mode page, quartet, 211 en mode rafale, 204 accumulateur, 12, 271, 355 action, 81 atomique, 529 actionneur, 15 activit, 531 e adressage absolu, 272, 284, 355 direct, 13, 287 immdiat, 13, 355 e indirect, 272 mode d , 272 relatif, 272, 368 adresse, 11, 50, 203, 270 dcodage d, 385, 389 e logique, 467, 564 physique, 466, 564 aectation, 11, 79 alg`bre de Boole, 26 e algorithme, 12, 76, 215 algorithmique cble, 171, 216 a e alignement mmoire, 85, 302, 389 e allocation, 315 dynamique, 91 mmoire, 486 e statique, 93 unit d, 471 e amorce du syst`me, 484, 549 e amplication, 145, 382 analogique, 6, 49 appel de procdure, 286, 314, 335 e fonction, action, procdure, 81 e syst`me (superviseur), 555 e architecture, 5 de Von Neumann, 11, 275 argument, 81 ASCII, 65, 297, 398 ASIC, 156 assembleur, 14, 296, 298, 302 asynchrone, 123 attente active, 400, 565 automate, 11, 101, 215, 354 complet, dterministe, ractif, 102 e e de contrle, 354 o interprt, 109 ee synth`se logicielle, 107 e synth`se matrielle, 215 e e banc (registres), 213, 243, 294, 338 barette, 207, 386 bascule, 197, 215, 245, 403 D, 198, 257, 370 ma tre-esclave, 198 RS, 192, 192, 405 basculement, 516, 517 base de numration, 51 e BDD, 35, 177 biblioth`que, 19, 317, 378, 448, 562 e binaire, 7, 53 bistable, 154, 192 bit, 6, 49, 143 bloc (dun langage), 313 bo tier, 207, 382

http://fribok.blogspot.com/

572

INDEX

bogue, 9 boolen, 6, 49 e Boole (alg`bre de), 25 e boutiste (gros, petit), 84 branchement, 12, 272 Bresenham (algorithme de), 111, 254 BSS (zone), 298, 455, 486, 538, 560 bus, 13, 152, 181, 247 adresse, 13, 204 dconnexion de , 385 e donnes, 13, 204 e mmoire, 204, 381 e multiplex, 384 e canal dentres/sorties, 415 e CAO, 18 capteur, 15 caract`re, 7, 65, 76 e cha nage, 91 champ dun n-uplet, 77 du codage dune instruction, 13, 275 chargeur, 17, 93, 292, 303, 484, 536 chemin critique, 39, 166 chronogramme, 127 circuit, 15, 38 combinatoire, 148, 167, 215 dentre/sortie, 397 e squentiel, 148, 243 e synchrone/asynchrone, 216 CISC, 14 cl, 467 e CMOS, 137, 147, 200 codage, 6 binaire, 49 compact, 225 en complment ` deux, 59 e a un parmi n, 51, 225 code, 50 opration, 13, 270, 354 e translatable, 299, 436 cofacteurs, 32 combinatoire, 167 commande interpr`te de , 483 e signal de , 244, 352 commutation de processus, 533 compatibilit, 14 e ascendante, 295, 442 de types, 79 compilateur, 8 compilation, 19, 88, 289, 296, 437 dynamique, 442

spare, 335, 435, 443 e e complment e a ` deux, 59 boolen, 26 e compte-rendu, 244, 352 compteur, 240 dassemblage, 302 ordinal, 12 programme, 12, 272 conception de circuit combinatoire, 165 de circuit squentiel, 216, 243 e logique, 172 concurrent, 528, 570 conducteur, 138 continu, 6 conversion, 7, 49, 90 coupleur, 16, 400 de priphrique, 398 e e registres du, 400 cration de chier, 479 e cylindre, 427 dcalage, 63, 279 e dcodage dadresse, 385, 389, 401 e dcodeur, 173 e dlai, 130, 166, 193, 215 e dmarrage du syst`me, 483 e e drfrenage, 78 eee c dsassembleur, 303 e dterministe (machine squentielle), 102 e e DATA (zone), 298, 486, 538, 560 DCB, 52, 179 De Morgan, 28 descripteur de chier, 474 de processus, 537 digital, 6, 49, 143 directive, 296 de cadrage mmoire, 302 e de rservation mmoire, 301 e e discret, 6 disque, 94, 423, 465 DMA, 385, 412 domaine dune fonction, 28 donne, 8, 204, 297, 315, 438 e duale (fonction), 29 dure de vie, 298 e dune variable, 315 et partage de mmoire, 320 e dynamique allocation , 91 lien, 327

http://fribok.blogspot.com/

INDEX

573

point de mmorisation, 155 e emprunt, 54 encodeur, 173 de priorit, 557 e entier naturel, 51, 76 relatif, 58, 76 entre, 397 e dun circuit, 143, 165 dune machine squentielle, 101 e entres/sorties, 397, 565 e excuter, 12, 245, 351 e exception (voir interruption), 281 exposant, 66 expression, 78 algbrique, 31, 178, 225 e conditionnelle, 78 rguli`re, 104 e e fentre de registres, 338 e fermeture de chier, 493 Fibonacci (suite de), 321 chier, 17, 94, 295, 418, 439, 466, 483 FIFO, 95 le des processus, 537 type abstrait, 95 ot de donnes, 216, 233, 351 e fonction, 81, 320 boolenne gnrale, 29 e e e combinatoire, 165 de sortie, 103, 217 de transition, 103, 217 domaine de , 28 phi-boolenne, 30 e formatage logique, 478 physique, 428, 477 forme algbrique, 31, 172, 225 e de Lagrange, 32 intermdiaire, 296, 439 e polynmiale, 31 o fp (pointeur de base denvironnement), 327 FPGA, 161 front, 123, 148, 195, 405 gestion de chiers (voir syst`me), 17 e graphe dautomate, 102, 215, 245 de contrle, 243, 354, 515, 520, 557 o de dcision binaire, 35, 177 e

hexadcimal, 53 e horloge, 17, 126, 216 i-node, 479 icnique, 501 o implantation contigu/disperse, 469 e e indicateur, 58, 513 de dbordement (V), 62, 182, 285 e de rsultat ngatif (N), 285 e e de rsultat nul (Z), 285 e de retenue (C), 56, 182, 285 indirection et passage de param`tre, 323 e information, 5 inhib, 520 e initialisation, 201, 220 instruction, 8, 271 invalide, 292 jeu d, 269, 355 pseudo- , 301 interface, 7, 397, 443, 501 interpr`te de commandes, 17, 483 e interprtation, 18, 289, 296, 438 e du langage machine, 269, 351, 515 interruption, 281, 508, 509, 517, 532, 551 invariant, 88 inverseur, 144 isolant, 138 jeu (dinstructions), 13 Karnaugh (tableau de), 33 Lagrange (forme de), 32 lancement, 14 lanceur, 17, 484, 536 langage, 7 a ` structure de blocs, 313 dassemblage, 14, 88, 296 de commandes, 483 de haut/bas niveau, 19, 75 interprt, 483 ee machine, 13, 269, 270 rgulier, rationnel, 104 e lecture (acc`s mmoire), 11, 205, 384, 402 e e lexique, 76 lien dynamique/statique, 327 LIFO, 95 littral, 31 e locale (variable), 81 logiciel, 5 mmoire, 11, 82, 176, 203, 270, 381 e acc`s alatoire, 206 e e acc`s direct ` la, 412 e a

http://fribok.blogspot.com/

574

INDEX

alignement, 85, 389 dbit de, 208 e morte, 16, 161, 176 point mmoire, 206 e principale, 15, 270 secondaire, 15, 463 vido, 214 e vive, 16, 204, 297, 385 mmorisation, 15 e machine a ` 0, 1, 2 ou 3 rfrences, 279, 308 ee algorithmique, 215 de Turing, 10 de Von Neumann, 11, 270 langage, 296 parall`le, 11 e machine squentielle e avec actions, 80, 109 de Mealy, 101, 217 de Moore, 101, 217 macro-assembleur, macros, 297 mantisse, 66 masqu, 520 e matriel, 5 e MC68000, 229, 303, 337, 371, 404, 488 MEM (modlisation mmoire), 82, 270, e e 314 microaction, 245, 357 microprogrammation, 228, 294 microsyst`mes, 15 e mnmonique, 296, 299 e mod`le de calcul, 9 e mode dadressage, 272, 355 utilisateur, superviseur, 389, 559 module, 447 monme o canonique, 31 premier, 40 monal, 32 MOS, 143, 210 mot, 7 dtat du processeur, 284, 353, 512 e dextension, 281, 373 mmoire, 79, 203, 271, 353 e multi-utilisateurs, 488, 505, 559 multics, 563 multiplexeur, 120, 177, 247 multitches, 450, 505, 564 a naturel, 51, 76 NIL, 78 niveau logique, 123, 144

NMOS, 147, 557 nom, 6, 76, 315, 464 numration, 51 e numrique, 6, 143 e octal, 53 octet, 7, 82 oprande, 13 e oprateur, 78, 247, 362 e ordinateur, 5, 377 ordonnanceur, 534 organigramme, 80 ouverture de chier, 479, 493 priode, 526 e dhorloge, 17, 126, 217, 252, 360 priphrique, 16, 377, 397, 417 e e intelligent, 415 paralllisme, 247, 253, 362, 570 e param`tre e donne, rsultat, 81, 323 e e formel, 445 formel, eectif, 81 paramtrisation, 363, 515 e partie contrle, 216, 243, 249, 352 o oprative, 216, 243, 245, 271, 352 e passage (de param`tre) e par rfrence, 323 ee par valeur, 323 pendule, 17, 521 phi-boolenne (fonction), 30 e pid, 537 pile, 287, 319, 325, 438, 499, 512, 536 syst`me ` lexcution, 330 e a e type abstrait, 95 pilote de priphrique, 19, 417, 464 e e pipeline, 239, 351 piste, 426, 477 PLA, PLD, 160 poids (fort, faible), 52, 84, 386 poigne de mains, 121, 250, 382, 400, 520 e point dentre, 336, 455 e pointeur, 77 dinstruction, 12 de base denvironnement, 327 de pile, 309, 371, 512, 536 reprsentation, 89 e utilisation, 91 port (dentre, de sortie), 402 e porte des noms, 81, 446 e portabilit, 296 e porte

http://fribok.blogspot.com/

INDEX

575

tage logique de, 169 e complexe, 178 de base, 168 logique, 148 trois tats, 152, 248, 382, 401 e privilgi, 561 e e procdure, 294, 320 e processeur, 11, 351, 381 dentres/sorties, 415 e processus, 478, 510, 531, 532, 566, 570 produit boolen, 26 e programmable, 17 programmateur, 19 programmation concurrente, 570 programme, 8, 75, 297, 438 protocole poigne de mains, 121, 250, 382, e 400, 520 pseudo-instructions, 301 puce, 15, 147 ractivit dune machine squentielle, 103 e e e ralisation, 9 e cble, microprogramme, 223 a e e rel, 66 e rfrence (passage de param`tre par), 323 ee e rfrences (machine ` n), 279, 310 ee a rgulier (langage), 104 e rinitialisation, 17 e rpertoire, 477479, 497 e rseau, 16, 84 e rafale acc`s mmoire en mode, 211 e e rafra chissement, 210 RAM, 206 rationnel (langage), 104 registre, 12, 203, 243, 270, 354, 511 accumulateur, 271, 355 adresse, 270, 354, 512 banc de , 213, 243, 294, 338 dinstruction, 12, 353, 512 donne, 270, 354 e fentre de , 338 e relatif, 58, 76 report, 54 reprsentation, 6 e des donnes, 82 e des grandeurs, 49 des traitements, 75, 101 digitale/analogique, 49 en extension, en comprhension, 31 e reset, 17, 519 retenue, 54, 56, 181 RISC, 14, 294

robot, 15 ROM, 176, 206 rupture de squence, 12, 283 e slection, 244 e de bo tier, 386 mmoire, 204, 352, 385 e squence cha ee, 91 e n squenceur, 19, 354 e saut, 12, 283 a ` un sous-programme, 286, 335 secteur, 426 semi-conducteur, 138 SGBD, 464 SGF, 463, 464 Shannon, 32 signal de commande, 244, 352 logique, physique, 126 signe, 58 simulation, 18 somme boolenne, 26 e sortie, 397 dun circuit, 143, 165 dune machine squentielle, 101 e fonction de, 217 sp (pointeur de pile), 309, 342 sparc, 305, 338, 354, 370, 393, 437, 488, 519, 558 statique allocation , 93 lien, 327 point mmoire, 154, 206 e superviseur, 555 suppression de chier, 479 synchrone, 123, 216 synchronisation, 249 dentres/sorties, 399 e de circuits squentiels, 220 e par poigne de mains, 121, 250, 382, e 400, 520 Partie Contrle, Partie Oprative, o e 251 synth`se e cble/microprogramme, 216 a e e dautomate, 222 logique, 172 Syracuse (suite de), 235, 346 syst`me e a ` lexcution, 315 e dexploitation, 19, 378 dmarrage, 483 e de gestion de chiers, 17, 463, 464

http://fribok.blogspot.com/

576

INDEX

squentiel, 11 e tche, 531 a table de vrit, 28, 173, 226 e e table des cha nes, 456 table des symboles, 454 tableau (parcours de), 88 taille(), 84 tas, 93, 330 temporaires, 334 temps dacc`s, 205 e de cycle, 257, 360 de rponse, 148, 165 e logique, continu, discret, 121 tester, 9 TEXT (zone), 298, 486, 538, 560 traduction, 17, 435 traitant dinterruption, 517, 532, 552 traitement, 16 transistor, 15, 140 transition, 250, 360 dune machine squentielle, 101 e fonction de, 217, 224 translation dadresse, 299, 436, 563 TTL, 147 Turing (machine de), 10 type, 76 compatibilit de , 79 e UAL, 12, 184, 231, 244, 351 un parmi n, 51, 225 unit e adressable, 82 arithmtique et logique, 184, 231, e 244, 351 centrale, 11 dallocation, 471 de calcul, 245, 270 unix, 297, 347, 378, 418, 470, 483, 487, 497, 548 utilisateur, 399, 417, 464, 485, 559 valeur, 6 absolue, 58 passage par , 323 variable, 7, 76 boolenne, 28, 224 e dtat, 225 e locale, 81 temporaire, 334 vecteur de bits, 7, 50, 143 verrou, 192, 195, 384 vie des programmes, 93, 435

virgule ottante, 14, 66 Von Neumann (machine de), 11, 275 zone de donnes (DATA, BSS), 296, 486, e 538, 560 de programme (TEXT), 298, 486, 538, 560 des instructions (TEXT), 296

http://fribok.blogspot.com/

Bibliographie
[Aa91] [AL78] [Bac90] H. Abelson et all : Revised Report on the Algorithmic Language Scheme. W. Clinger and J. Rees, 1991. 2.2.2 Rodnay Zaks Austin Lesea : Techniques dinterface aux microprocesseurs. Sybex, 1978. 2.1.1 M.J. Bach : Conception du syst`me UNIX (traduction franaise de The e c design of the Unix operating system, 1986). Ed. Masson, Ed Prentice-Hall, 1990. 4. P. Berlioux et Ph. Bizard : Algorithmique construction, preuve et valuation des programmes. Dunod, 1983. 2.4.2, 10.22 e P. Berlioux et Ph. Bizard : Algorithmique structures de donnes et algoe rithmes de recherche. Dunod, 1988. 5. Cl. Benzaken : Syst`mes formels Introduction ` la logique et ` la thorie e a a e des langages. Masson, 1991. 1.1.2, 1.2 A.W. Burks, H.H. Goldstine et J. Von Neumann : Preliminary discussion of the logical design of an electronic computing instrument, (article de 1946), dans John von Neumann, Collected works, volume V. Ed. Pergamon Press, 1963. 2.2, 1.1

[BB83] [BB88] [Ben91] [BGN63]

[BRWSV87] R. Brayton, R. Rudell, A. Wang et A. Sangiovanni-Vincentelli : Mis : a multiple-level logic optimization system. IEEE Transaction on CAD, pages 10621081, novembre 1987. 4.1 [Bry86] [CDLS86] R.E. Bryant : Graph-based algorithms for boolean functions manipulation. IEEE Transaction on Computers, (8):677692, aot 1986. 3.3, 3.3.2 u M. Cand, E. Demoulin, J.L. Lardy et P. Senn : Conception des circuits intgrs M.O.S. Elments de base - perspective. Eyrolles, collection technique e e e et scientique des tlcommunications, 1986. 2.2.4, 3.2 ee P.-Y. Cunin, M. Griffith et J. Voiron : Comprendre la compilation. Springer Verlag, 1980. 2.4.2, 1.1.1, 2.2.1, 1.2 J. P. Colinge et F. Van De Wiele : Physique des dispositifs semi-conducteurs. Editions De Boek Universit, Paris, Bruxelles, 1996. 1.3 e N. Garcia, A. Damask et S. Schwarz : Physics for Computer Science Students (with emphasis on atomic and semi-conductor physics). Editions Springer-Verlag, 1991, 1998. 1.3 J.-Y. Girard : La machine de Turing. Seuil, 1995. 2.1 J. Hennessy et D. Patterson : Organisation et conception des ordinateurs. Linterface matriel/logiciel. Ed. Dunod, 1994. 3.3, 14 e G. Ifrah : Lhistoire universelle des chires : lintelligence des hommes raconte par les nombres et le calcul (2 tomes). Robert Laont, collection e Bouquins, 1994. 2.1.1

[CGV80] [CW96] [GDS98]

[Gir95] [HP94] [Ifr94]

http://fribok.blogspot.com/

578

BIBLIOGRAPHIE

[Int97] [Kar53]

Intel : The complete guide to MMX technology. McGraw-Hill, 1997. 1.4.1 M. Karnaugh : The map method for synthesis of combinational logic. Circuits AIEE Transactions on Communications and Electronics, pages 593599, 1953. 4. R.E. Bryant K. Brace, R. Rudell : Ecient implementation of a bdd package. Proceedings of the 27th ACM/IEEE Design Automation Conference IEEE0738, 1990. 4.3 S. Krakowiak : Principes des syst`mes dexploitation des ordinateurs. Dunod e Informatique, 1985. 4.2, 4. Jean Kuntzmann : Alg`bre de Boole. Dunod, 1965. 4. e Jean Kuntzmann : Slection parmi des communications prsentes au colloque e e e consacr ` lAlg`bre de Boole. Dunod, 1967. 4. ea e ` J. Lassegue : Turing. Les belles lettres - collection Figures du savoir, 1998. 2.1 C. Livercy : Thorie des programmes - schmas, preuves, smantique. Dunod, e e e 1978. 2. J.M. Muller : Arithmtique des ordinateurs. oprateurs et fonctions e e lmentaires. Masson, collection Etudes et Recherches en Informatique, 1989. ee 2.2 J.E. Organick : The MULTICS system : an examination of its structure. The MIT Press, Cambridge MA, 1972. 2.6 P.-C. Scholl, M.-C. Fauvet, F. Lagnier et F. Maraninchi : Cours dinformatique : langages et programmation. Masson, 1993. 1., 1.4, 2.1, E8.9 A. Silberschatz et P. B. Galvin : Principes des syst`mes dexploitation. e Addison-Wesley, 1996. 4. Andr Seznec et Fabien Lloansi : Etude des architectures des microprocese seurs mips r10000, ultrasparc et pentiumpro. Publication interne 1024, INRIA, Programme 1 - Architecture parall`les, bases de donnes, rseaux et syst`mes e e e e distribus Projet CAPS, mai 1996. 1.4.4 e A. Tanenbaum : Syst`mes dexploitation : syst`mes centraliss, syst`mes dise e e e tribus. InterEditions, 1994. 4. e A. M. Turing : Solvable and unsolvable problems. Science News, 31:723, 1954. 2.1 R. Wilhelm et D. Maurer : Les compilateurs : thorie, construction, e gnration. Masson, 1994. 1.1.1, 2.2.1, 1.2 e e Rodnay Zaks : Applications du 6502. Sybex, 1980. 2.1.1

[KB90]

[Kra85] [Kun65] [Kun67] [Las98] [Liv78] [Mul89]

[Org72] [SFLM93] [SG96] [SL96]

[Tan94] [Tur54] [WM94] [Zak80]

http://fribok.blogspot.com/

You might also like