Danielle Etiemble – Architecture des Ordinateurs

Embed Size (px)

Citation preview

Architecture des Ordinateurs Premi`re partie e

Ccile Germain e

Daniel Etiemble

Licence dInformatique - IUP Miage - FIIFO

Table des mati`res e1 Introduction 2 Les 2.1 2.2 2.3 2.4 composantes de lordinateur Le mod`le de Von Neumann . . . . . . . . . e Les faits technologiques . . . . . . . . . . . Lunit centrale . . . . . . . . . . . . . . . . e La mmoire . . . . . . . . . . . . . . . . . . e Les RAM . . . . . . . . . . . . . . . . . . . Les RAM statiques . . . . . . . . . . . . . . Les RAM dynamiques . . . . . . . . . . . . La hirarchie mmoire . . . . . . . . . . . . e e 2.5 Performances . . . . . . . . . . . . . . . . . Lvolution exponentielle des performances e Mesure de performances . . . . . . . . . . . CPI et IPC . . . . . . . . . . . . . . . . . . 3 7 7 9 9 12 12 13 13 14 16 16 16 17 21 21 22 23 23 24 24 25 26 28 32 33 33 34 35

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3 Reprsentation de linformation e 3.1 Linformation . . . . . . . . . . Quantit dinformation . . . . . e Support de linformation . . . Notations . . . . . . . . . . . . 3.2 Reprsentation des caract`res . e e 3.3 Reprsentation des entiers . . . e Entiers naturels . . . . . . . . . Entiers relatifs . . . . . . . . . Oprations arithmtiques . . . e e Traitement des erreurs . . . . . Reprsentation BCD . . . . . . e 3.4 Nombres rels . . . . . . . . . . e Reprsentation des rels . . . . e e Reprsentation IEEE 754 . . . e

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

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

. . . . . . . . . . . . . . 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2 Oprations ottantes . . . . . . . . . e Traitement des situations anormales Prcision . . . . . . . . . . . . . . . . e Placement mmoire . . . . . . . . . . e Big Endian et Little Endian . . . . . Alignement . . . . . . . . . . . . . . Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Tables des mati`res e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 38 40 41 41 42 43 45 46 46 46 49 50 52 52 53 54 55 56 56 60 61 61 63 63 66 66 66 68 70 72 74 75 77 80

3.5

4 Architecture logicielle du processeur 4.1 Mod`le dexcution . . . . . . . . . . . . . . . . . . . . . e e Dnition . . . . . . . . . . . . . . . . . . . . . . . . . . e Les dirents mod`les dexcution . . . . . . . . . . . . e e e 4.2 Format des instructions . . . . . . . . . . . . . . . . . . 4.3 Langage de haut niveau et langage machine . . . . . . . 4.4 Instructions arithmtiques et logiques . . . . . . . . . . e Mode dadressage . . . . . . . . . . . . . . . . . . . . . . Instructions . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 Instructions dacc`s mmoire . . . . . . . . . . . . . . . e e Acc`s entiers . . . . . . . . . . . . . . . . . . . . . . . . e Acc`s ottants . . . . . . . . . . . . . . . . . . . . . . . e Modes dadressage . . . . . . . . . . . . . . . . . . . . . 4.6 Instructions de comparaison . . . . . . . . . . . . . . . . 4.7 Instructions de saut et de branchement . . . . . . . . . . Branchements conditionnels sur registre code-conditions Branchements conditionnels sur registre gnral . . . . . e e Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . Boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.8 Sous-programmes . . . . . . . . . . . . . . . . . . . . . . Fonctionnalits . . . . . . . . . . . . . . . . . . . . . . . e Appel et retour de sous-programme . . . . . . . . . . . . Passage des param`tres . . . . . . . . . . . . . . . . . . e Pile dexcution . . . . . . . . . . . . . . . . . . . . . . . e Sauvegarde du contexte . . . . . . . . . . . . . . . . . . Etude de cas . . . . . . . . . . . . . . . . . . . . . . . . Edition de liens et chargement dun programme . . . . . Quelques utilitaires . . . . . . . . . . . . . . . . . . . . .

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

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

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

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

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

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

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

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

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

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

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

Chapitre 1

IntroductionUn cours sur lArchitecture des Ordinateurs demande de dnir ce que sont, dune part e un ordinateur, dautre part larchitecture. Le lecteur qui sapprte ` aborder le troiseme e a millnaire a certainement une intuition sur lordinateur, mais peut-tre pas dide prcise e e e e sur la notion darchitecture. Un ordinateur est un machine qui traite une information fournie par un organe dentre suivant un programme et dlivre une information sur un organe de sortie. e e La partie de lordinateur charge du traitement de linformation est appele Unit Centrale e e e (UC) ou Central Processing Unit (CPU). Lexplosion des jeux informatiques et videos a certainement dius aupr`s du grand e e public une connaissance fonctionnelle de certains composants architecturaux : chacun sait que, pour jouer raisonnablement sur un PC, il vaut mieux quil soit quip dune e e carte 3D, et beaucoup connaissent la hirarchie en termes de rapport qualit/prix de ces e e cartes. En tant que sous-discipline scientique de linformatique, aussi bien quen tant que comptence professionnelle, larchitecture des ordinateurs est plus que cette connaissance e encyclopdique. e Matriellement, un ordinateur est compos de cartes et de priphriques (cran, clavier, e e e e e disques etc.) ; chaque carte est elle-mme construite ` partir de composants lectroniques, e a e qui utilisent depuis les annes 60 la technologie des transistors et depuis les annes 70 la e e technologie des circuits intgrs. e e Ces divers organes doivent tre conus et organiss pour trouver un optimum suivant e c e les crit`res de fonctionnalit, de performances et de prix. Le plus important de ces organes e e est le processeur, qui est compos dun ou dun petit nombre de circuits intgrs. e e e Dans le sens le plus gnral, larchitecture est donc la conception et lorganisation des e e composants matriels de lordinateur bass sur la technologie des circuits intgrs, et plus e e e e particuli`rement du processeur. e Le terme de matriel dans la dnition ci-dessus ne signie pas que larchitecte dessine e e des transistors. Le fonctionnement dun ordinateur peut senvisager suivant la hirarchie des niveaux e 3

4

Chapitre 1. Introduction

Application Langage de haut niveau Langage machine

Microarchitecture Circuits Intgrs

Figure 1.1: Les niveaux dun syst`me informatique e dcrite dans la g 1.1. Lutilisateur nal voit une application plus ou moins interactive, e par exemple un jeu, ou un logiciel de traitement de texte. Cette couche est ralise e e essentiellement suivant un mod`le de calcul g dans un langage de haut niveau, qui e e utilise des mcanismes gnriques. Par exemple, presque tous les langages connaissent la e e e notion dappel fonctionnel rcursif, qui requiert sur les processeurs un mcanisme de pile e e et un mcanisme de rupture de squence (ceci sera expliqu plus loin). e e e Chaque processeur dispose dun langage spcique, son jeu dinstructions, qui implmente e e ces mcanismes communs. Le jeu dinstruction est galement appel langage-machine, ou e e e encore architecture logicielle. De faon prcise, le jeu dinstruction est une abstraction c e programmable (i.e. utilisable pour la programmation) du processeur. Les niveaux suivants sont gs dans le matriel, et ne sont pas reprogrammables. Le jeu dinstruction est e e donc linterface de programmation, lAPI, du processeur. Le jeu dinstruction est implment par divers circuits logiques : registres, UAL etc. e e Lorganisation et la coordination de ces organes constitue larchitecture matrielle du proe cesseur. De mme quune API est destine ` recevoir plusieur implmentations, ou une e e a e voiture plusieurs motorisations, un jeu dinstruction correspond en gnral ` plusieurs e e a architectures matrielles direntes. Finalement, les circuits logiques abstraits sont ine e stancis dans une technologie donne. e e Linteraction entre les niveaux de la hrarchie nest pas simplement descendante. Une e architecture logicielle est dune part conue pour permettre une compilation commode et c ecace des langages de haut niveau, mais aussi en fonction des possibilits dimplantation e matrielle. Lexemple le plus lmentaire est la taille des mots que le processeur peut e ee traiter : 8 bits dans les anness 70, 32 et plus souvent 64 maintenant. Plus profondment, e e la priode rcente (annes 85- 90) a vu une convergence forte des jeux dinstructions des e e e processeurs non Intel vers un noyau RISC. Un des objectifs de ce cours est de montrer comment ce type darchitecture logicielle dcoule de ltat de la technologie ` cette priode. e e a e

Non Programmable programmable

5 Le terme darchitecture a t initialement dni comme `quivalent a celui de jeu ee e e ` dinstructions. La premi`re architecture en ce sens est lIBM 360, dont le cycle de e vie sest tendu de 64 a 86. De mme, larchitecture 8086 est incluse dans toutes les e ` e architectures Intel qui lui ont succd. Auparavant, les niveaux de spcication (jeu e e e dinstruction) et de ralisation ntaient pas distingus. Lintrt vident est dassurer la e e e ee e compatibilit totale sans recompilation des applications. Cest un aspect supplmentaire, e e et tr`s important, de la fonctionnalit. En particulier, larchitecture logicielle x86 poss`de e e e de nombreuses caractristiques (nombre de registres, modes dadressage) qui expriment les e contraintes technologiques des annes 70, et ne sont plus du tout adaptes ` la technologie e e a actuelle. Cependant, Intel a maintenu la compatibilit binaire jusquau P3, a cause de e ` lnorme base installe. e e La convergence vers les jeux dinstruction RISC a ensuite mis laccent sur laspect organisation, qui est alors devenu le principal enjeu scientique et commercial de larchitecture. La priode qui souvre verra probablement un renouveau de la variabilit des jeux dinstruction. e e En particulier lIA-64 dIntel ore une fonctionnalit nouvelle dans le jeu dinstruction, e qui na jamais exist prdemment dans des ordinateurs commerciaux. e ce Le cours traite les deux aspects de larchitecture. La premi`re partie tudie larchitecture e e logicielle, ` travers le codage de linformation, et les jeux dinstruction. On tudiera a e en particulier la relation entre les structures des langages de haut niveau et le langage machine. La deuxi`me partie tudie larchitecture matrielle, du processeur, de la e e e hirarchie mmoire, et des organes dentres-sortie. Cette partie tudiera en particulier e e e e les consqences des contraintes technologiques sur les mod`les dexcution, la gestion de e e e la mmoire et les entres-sorties. e e Deux excellents livres correspondent ` ce cours [2, 1]. Ils ont t tous deux crits par a ee e les architectes des premiers microprocesseurs RISC. [2] est un synth`se abordable pour un e tudiant de licence, mais quand mme assez dicile. Ce livre a tr`s fortement marqu e e e e la conception darchitectures, en imposant une discipline dapproche quantitative. [1] est plus lmentaire. [3] est une synth`se qui prsente les caractristiques fondamentales des ee e e e architectures RISC.

6

Chapitre 1. Introduction

Chapitre 2

Les composantes de lordinateur2.1 Le mod`le de Von Neumann e

Mmoire Bus CPU Entres Sorties

Figure 2.1: Principe de lorganisation dun ordinateur Dnition 1 Lordinateur est une machine lectronique, qui traite linformation dans e e une unit centrale (UC, ou CPU pour Central Processing Unit), selon un programme qui e est enregistr en mmoire. Les donnes fournies en entre par un organe dentre (par e e e e e exemple de type clavier) sont traites par lunit centrale en fonction du programme pour e e dlivrer les rsultats en sortie, via un organe de sortie (par exemple un cran). e e e Cette dnition tr`s gnrale est rsume dans la g. 2.1. Elle implique de dnir ce que e e e e e e e sont linformation et le traitement. Linformation est numrise, cest ` dire limite ` des e e a e a valeurs discr`tes, en loccurence binaires ; les dtails du codage binaire de linformation e e sont traits au chapitre suivant. Par ailleurs, la dnition implique que le comportement e e dun programme qui ne fait pas dentres-sorties ne peut tre spci. e e e e Le traitement suit le mod`le dexcution de Von Neumann. e e La mmoire contient les instructions et les donnes. e e 7

8

Chapitre 2. Les composantes de lordinateur La mmoire est forme dun ensemble de mots de longueur xe, chaque mot cone e tenant une information code en binaire. Chaque mot de la mmoire est accessible e e par lintermdiaire de ladresse mmoire. Le temps dacc`s ` un mot est le mme e e e a e quelle que soit la place du mot en mmoire : ce type dacc`s est appel alatoire, et e e e e les mmoires sont appeles RAM (random access memory). e e Les instructions sont excutes en squence. Le CPU conserve ladresse de la proe e e chaine instruction a excuter dans un registre, appel PC (Program Counter) ; pour ` e e chaque instruction, le CPU eectue les actions suivantes : lire linstruction a ladresse PC et incrmenter PC ; e excuter linstruction. e

Le premier ordinateur a t la machine ENIAC, construite a luniversit de Pennsylee ` e vannie (Moore School) pendant la seconde guerre mondiale, par les ingnieurs J. P. Eckert e et J. Mauchly. Elle avait t commande par larme amricaine pour le calcul des taee e e e bles de tir pour lartillerie. LENIAC a t la premi`re machine programmable, cest ` ee e a dire dont la squence doprations ntait pas prdnie, contrairement a un automate e e e e e ` du type caisse enregisteuse. Mais la nouveaut radicale de cette approche ntait pas e e compl`tement perue, ce dont tmoigne le nom de la machine : ENIAC signie Electronic e c e Numerical Integrator And Calculator. Cest le mathmaticien John Von Neuman, intgr e e e en 1944 au projet ENIAC, qui formalisa les concepts prsents dans ce premier ordinateur, e et les dveloppa sous le nom de projet EDVAC : Electronic Discrete Variable Automatic e Computer. La cration dun nouveau terme, Computer et non Calculator, correspond a e ` une rupture thorique fondamentale. Comme cela se reproduira souvent dans lhistoire de e linformatique, ce progr`s thorique majeur aboutit dans le tr`s court terme ` un semie e e a chec pratique : lquipe se dispersa, et lEDVAC ne fut oprationnel quen 1952. Von e e e Neumann contribua a la construction dune machine prototype universitaire a Princeton, ` ` LIAS. Eckert et J. Mauchly fond`rent une entreprise qui ralisa le premier ordinateur e e commercial, lUNIVAC-1, dont 48 exemplaires furent vendus. On trouvera un rsum de e e lvolution des calculateurs et des ordinateurs dans [4]. e La ralisation de lorganisation abstraite de la g. 2.1 a fortement vari depuis lorigine e e des ordinateurs. La g. 2.2 dcrit lorganisation matrielle typique dun ordinateur monoe e processeur (ie avec un seul CPU). Les composants matriels ne recoupent pas exactement e lorganisation abstraite : la mmoire est ralise par un ensemble de composants matriels, e e e e depuis un circuit intgrs dans le composant processeur (cache L1), jusquaux disques. Les e e disques appartiennent au domaine des entres-sorties par leur gestion, et en tant que supe port des syst`mes de chiers, mais aussi ` la hirarchie mmoire, car ils contiennent une e a e e partie des donnes et des instructions adressables par le processeur. Les entres-sorties e e incluent des interfaces, qui sont elles-mmes des processeurs programmables. e

2.2. Les faits technologiquesBus Systme

9

Cache L2 Mmoire centrale Processeur CPU Cache L1 Adapteur

Bus Entres-Sorties Contrleur Contrleur Contrleur

rseau

Figure 2.2: Architecture dun ordinateur monoprocesseur en 99

2.2

Les faits technologiques

Lvolution des architectures repose sur la loi de Moore : e Dnition 2 Le nombre de transistors dans un circuit double approximativement tous les e 18 mois. Cette volution exponentielle de la capcit de calcul est accompagn dune augmentation, e e e galement exponentielle, de la frquence de fonctionnement, qui est multiplie par un e e e facteur 1,24 tous les ans (g. 2.3). La loi de Moore est tr`s souvent incorrectement interprte comme un doublement des e ee performances tous les 18 mois, ce qui nest pas exact : on verra plus loin que la performance progresse exponentiellement, mais moins vite. La loi de Moore est relie ` deux phnom`nes : dune part laugmentation de la densit e a e e e dintgration, cest ` dire du nombre de transistors intgrables par unit de surface, dautre e a e e part, laugmentation de la taille des circuits intgrs. Elle traduit globalement le nombre e e doprateurs matriels, et donc de fonctionnalits, qui peuvent tre intgres dans un e e e e e e processeur. Le produit du nombre doprateurs par la frquence dactivation traduit donc e e le nombre doprations potentiellement disponibles par seconde. e

2.3

Lunit centrale e

10

Chapitre 2. Les composantes de lordinateur

1000 Intel Motorola 100 Sparc DEC Alpha MIPS 10 78 80 82 84 86 88 90 92 94 96 98RI Partie contrle

Figure 2.3: Evolution de la frquence des processeurs e Pour excuter un programme, lunit centrale appelle les instructions depuis la mmoire, e e e et les donnes que traitent ces instructions. En eet, dans ltat actuel de la technologie, le e e CPU ne peut travailler que sur des informations physiquement stockes pr`s des organes e e de calcul quelle contient. Lunit centrale se dcompose en une partie oprative, ou chemin de donnes et une e e e e partie contrle (g. 2.4). o Le chemin de donnes est organis autour dune unit arithmtique et logique (UAL) e e e e et doprateurs arithmtiques ottants qui eectuent les oprations sur les donnes. Les e e e e

F0 F1 Fn Units flottantes

R0 R1 Rn

PC

UAL

Chemin de donnes

Figure 2.4: Organisation de lunit centrale e

2.3. Lunit centrale e

11

oprandes, initialement lus en mmoire, et les rsultats des oprations, sont stocks dans e e e e e des organes de mmorisations internes au CPU, les registres. Certains de ces registres sont e visibles : leur nom (ou leur numro) est prsent dans linstruction, et le programmeur e e en langage machine peut dcider quel registre lire ou crire ; par exemple, linstruction e e ADD R1, R2, R3 nomme les trois registres R1, R2 et R3. Dautres registres ne sont pas visibles, et servent ` des besoins de stockage temporaire. Le chemin de donnes dtermine a e e les deux caractristiques fondamentales dune unit centrale, le temps de cycle et la largeur e e du chemin de donnes. e Le temps de cycle Tc est essentiellement le temps dune opration de lUAL ; linverse e du temps de cycle est la frquence ; si lunit de temps de cycle est la seconde, lunit e e e de frquence est le Hertz. Par exemple, un processeur cadenc ` 500MHz a un temps e ea 1 de cycle de 500106 = 2ns = 2 109 s. La largeur du chemin de donnes est la taille de linformation traite par la pare e tie oprative. Les premiers microprocesseurs taient des 8 bits, les processeurs e e gnralistes actuels sont 32 ou 64 bits, le processeur de la Playstation 2 est un e e 128 bits. On a mentionn ci-dessus linstruction ADD R1, R2, R3, alors que les instruce tions sont des mots binaires. En fait, le codage binaire des instructions ntant pas tr`s e e pratique pour lutilisateur humain, les instructions peuvent tre dcrites par un langage e e rudimentaire, le langage dassemblage. Celui-ci comporte des mnmoniques, qui dcrivent e e lopration, et une description des oprandes. Cest aussi le langage quutilise un proe e grammeur humain. Le langage dassemblage na aucune ralit au niveau de la machine e e ; la traduction en binaire est ralise par un utilitaire, lassembleur. La correspondance e e entre instruction binaire et langage dassemblage est tr`s lmentaire, du type traduce ee tion mot-`-mot (contrairement ` la compilation). Le codage est si immdiat quil est a a e rversible : les debogueurs (dbx, gdb) contiennent des dsassembleurs, qui eectuent le e e codage inverse, du binaire vers le langage dassemblage. Dans la suite, on utilisera un langage dassemblage gnrique, o` les registres seront nots R0 ` R31, et la syntaxe est e e u e a du type dest-source, par exemple ADD R1, R2, R3 ; une instruction daddition signie R1 R2 + R3 , le ; signalant le dbut dun commentaire. e La partie contrle eectue le squencement des direntes instructions en fonction des o e e rsultats des oprations et actionne les circuits logiques de base pour raliser les transferts e e e et traitements de donnes. Elle contrle galement la synchronisation avec les autres e o e composants. A cheval entre le chemin de donnes et la partie contrle, on trouve deux registres e o spcialiss : le compteur de programme PC, dont on a dj` parl, et le registre instruction e e ea e RI. Comme les autres informations, linstruction ne peut tre traite par le CPU que e e si elle y est physiquement prsente. La lecture de linstruction consiste donc ` copier e a

12

Chapitre 2. Les composantes de lordinateur

linstruction depuis la mmoire vers le registre RI. Comme le registre RI peut contenir une e constante oprande, il appartient au chemin de donnes ; comme il contient linstruction, e e que la partie contrle dcode pour activer les circuits logiques qui excutent linstruction, o e e il appartient aussi a la partie contrle. PC contrle la lecture de linstruction, mais il peut ` o o aussi tre modi par les instructions qui ralisent des branchements. e e e

2.4

La mmoire e

Les mmoires contiennent le programme (instructions et donnes). Les informations e e mmorises sont repres par une adresse. On distingue les mmoires ` acc`s alatoires e e ee e a e e (RAM) ralises avec des technologies semiconducteurs, et les mmoires secondaires, ralises e e e e e essentiellement avec des supports magntiques. e Les principes de fonctionnement des mmoires secondaires, comme les disques et les e disquettes, seront prsents dans le chapitre sur les Entres-Sorties. La caractristique e e e e importante est un temps dacc`s tr`s grand par rapport aux temps de cycle de lUC : pour e e les disques, il se chire en dizaines de s.

Les RAMp lecture/criture 0

adresses m 2m - 1 donnes

Figure 2.5: Schma fonctionnel dune mmoire RAM e e Les RAM sont caractrises par le fait quun mot peut tre lu ou crit en un temps e e e e identique quelle que soit son adresse. Un mot est repr par une adresse : une adresse ee sur m bits permet de reprer un mot de p bits parmi 2m (g. 2.5). Gnralement, la plus e e e petite unit adressable est loctet (8 bits), mais la mmoire peut lire ou crire un mot de e e e plusieurs octets (4 ou 8 pour manipuler en un acc`s 32 ou 64 bits). Les mmoires RAM e e sont caractrises par plusieurs param`tres. e e e

2.4. La mmoire e Introduction 1980 1983 1986 1989 1992 1995 Capacit e 64 Kbits 256 Kbits 1 Mbits 4 Mbits 16 Mbits 64 Mbits Temps de cycle 250 ns 220 ns 190 ns 165 ns 120 ns 90 ns

13

Table 2.1: Evolution des mmoires dynamiques. e Taille, organisation et capacit : nombre de mots, nombre de bits par mot et nombre e total de bits. Temps dacc`s, le temps entre lenvoi de ladresse et lobtention de la donne, et e e temps de cycle, le temps entre deux oprations mmoire successives. e e Les mmoires RAM sont ralises avec les technologies ` semiconducteurs, le plus souvent e e e a a ` base de transistors MOS Il existe deux grandes classes de circuit ralisant une RAM, les RAM statiques (SRAM) e et les RAM dynamiques (DRAM)

Les RAM statiquesLeur point mmoire est constitu avec des portes logiques. La mmorisation est permae e e nente, tant que la mmoire est alimente. La lecture nest pas destructrice et le temps e e dacc`s est identique au temps de cycle. La complexit du point mmoire est denviron e e e 6 transistors MOS. En premi`re approximation, on peut dire que le temps dacc`s des e e SRAM dcro exponentiellement en fonction des annes, les temps dacc`s tant dautant e t e e e plus grand que la taille mmoire utilise est grande. e e Cette information est importante. En eet, le temps de cycle des processeurs dcro e t exponentiellement en fonction des annes. Il est donc possible, en jouant sur la taille e des mmoires SRAM utilises, dadapter le temps dacc`s des mmoires SRAM au temps e e e e de cycle des processeurs. Ladaptation est encore plus facile si lon implante la mmoire e SRAM sur la mme puce que le processeur. e

Les RAM dynamiquesLeur point mmoire est constitu avec une capacit et un transistor, et a une complexit e e e e quivalente a 1,5 transistor MOS. A surface gale, leur capacit est quatre fois plus leve e ` e e e e quune SRAM. Il existe une tr`s grande varit de mmoires dynamiques, quon ne peut e ee e dcrire dans le cadre de ce cours. On trouvera une synth`se rcente dans [6]. e e e

14

Chapitre 2. Les composantes de lordinateur

La mmorisation est fonde sur un phnom`ne lectrique (conservation de charges dans e e e e e un condensateur). La premi`re consquence est que la lecture tant destructrice, il faut e e e rcrire la valeur que lon lit. Le temps de cycle dune mmoire dynamique est donc au ee e moins le double de son temps dacc`s. La seconde consquence est que la mmorisation e e e nest que transitoire, et il faut rafra chir priodiquement tous les points mmoire. Ce e e rafra chissement est fait automatiquement dans la plupart des bo tiers DRAM. La table. 2.1, dapr`s [2], montre lvolution des temps de cycle et de la capacit des DRAM en e e e fonction des annes. On constate une dcroissance quasi-linaire en fonction des annes, au e e e e lieu dune dcroissance exponentielle pour les SRAM. Dautre part, la capacit quadruple e e tous les trois ans (le taux annuel correspondant est 60%, mais les gnrations successives e e de DRAM stagent en fait par tranches de trois ans). Cest exactement le taux de la loi e de Moore. En rsum, ` une priode donne, les bo e e a e e tiers mmoire DRAM disponibles contiennent e 4 fois plus de bits que les mmoires SRAM de technologie quivalente et sont moins chers, e e mais beaucoup plus lents.

La hirarchie mmoire e e

1000

performance

100

10

1 80 85 90 95 99 anne

Figure 2.6: Lcart de performances entre processeur et DRAM e Les caractristiques (quantit dinformation stocke, temps dacc`s et de cycle, co t par e e e e u bit) des direntes mmoires conduisent ` lutilisation dune hirarchie de mmoires, allant e e a e e de mmoires petites et rapides vers des mmoires plus grosses et plus lentes. Deux niveaux e e sont importants : la mmoire cache (SRAM) ` ct de la mmoire principale (DRAM), e a oe e

2.4. La mmoire eVitesse Cot

15

Mmoire principale DRAM

Cache L2

Cache L1

Capacit

Figure 2.7: Hirarchie caches - mmoire principale e e temps dacc`s e 6,7 ns (2Tc ) 20 ns (6Tc ) 26 ns (8Tc ) 253 ns (76Tc ) 60 ns (18Tc ) Dbit e 4800 MO/s 4800 MO/s 960 MO/s 1200 MO/s 30 - 100 M0/s

L1 8 KO, intgr e e L2 96 KO, intgr e e L3 4 MO, externe Mmoire principale e Composant DRAM

Table 2.2: Performances de la hirarchie mmoire de lAlphaServer 8200 ; le processeur e e est un Alpha 21164 a 300 MHz. ` et la mmoire virtuelle, constitu de la mmoire principale (DRAM) a ct de la mmoire e e e ` oe e secondaire (disque). Lvolution des performances des processeurs et des DRAM diverge, car lune est exe ponentielle et lautre linaire (g. 2.6, dapr`s [5]). Mais la ralisation de la mmoire e e e e principale dun ordinateur uniquement a partir de SRAM est exclue, pour des raisons ` conomiques : le cot des mmoires constituant lessentiel du cot des ordinateurs, lutilisation e u e u de mmoires statiques ` la place des mmoires dynamiques se traduirait par un facteur e a e multiplicatif de lordre de 3 ou 4 du prix des machines. Les architectures actuelles rsolvent cette divergence par lintroduction de caches. Les e caches sont des RAM statiques, qui contiennent un extrait, quon esp`re utile, du contenu e de la mmoire principale, ralise en DRAM (g. 2.7). Idalement, les caches permettront e e e e de soutenir le dbit mmoire, en instruction et donnes, gal ` celui du processeur. Le e e e e a cache de premier niveau est en gnral intgr avec le CPU dans le circuit processeur e e e e ; le cache de second niveau peut tre dans le mme circuit (Alpha 21164), ou bien un e e autre circuit, qui peut tre dans le mme bo e e tier que le processeur (Pentium Pro), mais est le plus souvent ` lextrieur. Le passage ` lextrieur du circuit a pour consquence a e a e e que le temps dacc`s ` la mmoire principale peut tre encore plus grand que le temps e a e e

16

Chapitre 2. Les composantes de lordinateur

100 Intel 10 Motorola Sparc DEC Alpha 1 MIPS

0,1 89 90 91 92 93 94 95 96 97 98

Figure 2.8: Evolution des performances des ordinateurs sur les benchmark SPEC. La ligne continue est une droite de pente 1,5. dacc`s au circuit DRAM correspondant. En revanche, une connexion large entre DRAMs e et processeur permet dquilibrer mieux les dbits. La table 2.2 donne les performances e e dune hirachie mmoire agressive. e e

2.5

Performances

Lvolution exponentielle des performances eLa performances des ordinateurs dpend de lensembles des composantes matrielles (CPU, e e mmoires, entres-sorties) et logicielles (programme, syst`me). La performance des come e e posantes matrielles est elle-mme le rsultat de lvolution exponentielle de la technologie e e e e (loi de Moore) et de larchitecture des processeurs et des ordinateurs. Le rsultat net est e actuellement une croissance exponentielle des performances (g. 2.8) : la performance est multiplie dun facteur environ 1,5 par an (augmentation de 50%). e

Mesure de performancesLa dnition et la mesure des performances dun ordinateur sont un probl`me dicile. e e Tout dabord, les performances dun ordinateur dpendent de lutilisation vise. la mesure e e

2.5. Performances

17

la plus courante est le temps dexcution, mais le dbit peut tre plus important, par e e e exemple pour une machine qui joue un rle de serveur. o Ensuite, le temps dexcution dune tche, de son dbut a sa n, comprend le temps e a e ` dexcution du programme par le CPU, mais aussi les acc`s mmoire, les acc`s disque, les e e e e activits dentre-sortie et le temps utilis pour les besoins du syst`me dexploitation. Il e e e e dpend donc des performances de lensemble des composantes matrielles et logicielles du e e syst`me. e Les units de mesure les plus simples sont les MIPS (million dinstructions par seconde) e ou le MegaFLOP (million dinstructions ottantes par seconde). Ces deux performance a souvent t calcule de faon parfaitement trompeuse, comme le nombre dinstructions ee e c (ou dinstructions ottantes) que larchitecture permet dexcuter en 1 cycle divise par e e le temps de cycle. Ce chire reprsente alors seulement la puissance crte, cest ` dire ce e e a que larchitecture ne peut en aucun cas dpasser. La premi`re unit ne permet de toutes e e e faons pas de comparer entre elles les performances de faon absolue, car elle dpend c c e de la quantit de travail queectue chaque instruction. Les MFlops mesurs sur une e e application sont plus signicatifs, car ils mesurent de faon normalise la quantit de travail c e e utile que doit eectuer un algorithme numrique : additions et multiplications ottantes e comptent pour 1 opration ottante, et toutes les autres oprations sont normalises (par e e e exemple, une racine carre est compte pour un certain nombre dadditions ottantes). e e Pour comparer entre eux divers CPU ou divers ordinateurs, il est gnralement admis e e que la seule mani`re correcte est la mesure du temps dexcution sur des programmes e e rels pour des entres dtermines. La dnition de programmes tests reprsentatifs e e e e e e des applications, donc prdictifs des performances sur des applications relles, Les proe e grammes spciques dvaluation de performance ou benchmark, nest pas un probl`me e e e compl`tement rsolu actuellement. De tels programmes, appels benchmarks, sont spcis e e e e e par des consortiums industriels ou des organisations scientiques. Certains, comme la suite des programmes SPEC, sont utiliss par les constructeurs pour valuer la puissance e e de calcul brute des processeurs, sur du calcul entier (SPECint) ou ottant (SPECfp). Les mesures exprimes en SPEC nont de valeur que si les conditions dexprimentation e e (frquence dhorloge, hirarchie mmoire utilise, etc.) sont prcises. Dautres types e e e e e e de benchmarks sont plus orients vers des applications utilisateurs. Cest le cas par exe emple des programmes dvaluation comme TP-1 qui mesurent le nombre de transace tions par seconde (TPS) caractristique de syst`mes transactionnels. Dans ce cas, cest e e lensemble des performances, incluant notamment le dbit dacc`s aux disques et le syst`me e e e dexploitation, qui est value sur une classe dapplication caractristique. e e e

CPI et IPCPour mesurer et comparer les performances darchitectures, il faut donc dabord travailler a ` programme utilisateur constant. Les performances dune architecture, pour un programme donn, sont caractrises par le temps coul sur lexcution du programme utilisateur e e e e e e

18

Chapitre 2. Les composantes de lordinateur

(hors temps syst`me), selon la formule suivante : e Tempsexe = NI CPI Tc o` NI est le nombre dinstructions du programme, CPI est le nombre moyen de cyu cles dhorloge pour excuter une instruction, et T c est le temps de cycle. NI est fonce tion des instructions machine utilisables par compilateur, donc dcrit la fonctionnalit e e de larchitecture logicielle. En premi`re approximation, Tc est fonction de la technoloe gie utilise qui dtermine le temps dexcution des tapes lmentaires, par exemple la e e e e ee traverse de lUAL, et dcrit donc les contraintes technologiques. e e On dnit galement le nombre dinstructions par cycle, IPC : IPC = 1/CPI. Le produit e e CPITc est reli au MIPS par la relation : e Nombre de MIPS = NI 106 = F IPC Tempsexe

si la frquence F est exprime en MHz. e e CPI traduit les performances des architectures matrielles. Il permet dabord de come parer des architectures matrielles qui implmentent la mme architecture logicielle, en e e e liminant linuence de la technologie (Tc ) : typiquement, le CPI a doubl entre le pentium e e Pro et le PII. CPI permet galement de comparer les performances relles avec les performances e e crtes. Par exemple, ltude [5] montre quun syst`me processeur-mmoire ` base de e e e e a 21164 (lAlphaServer 8200) atteint seulement une performance de 3,0 a 3,6 CPI, alors que ` le 21164 est capable dexcuter 4 instructions par cycle, donc un CPI de 0,25. La valeur e du CPI moyen mesur sur des programmes rels, compar au CPI minimum ou CPI optie e e mal (CPIopt), va traduire la dirence entre les performances relles et les performances e e maximales de la machine. La valeur du CPI moyen mesur sur des programmes rels, e e compar au CPI minimum ou CPI optimal (CPIopt), va traduire la dirence entre les e e performances relles et les performances maximales de la machine, suivant la relation : e CPI = CPIopt (1 + a + c + v + s) CPIopt correspond au fonctionnement idal du squencement des instructions quon tudiera e e e aux chapitres 4 et 5 ; le terme a est li ` des alas de fonctionnement ` lintrieur de e a e a e lexcution des instructions quon tudiera au chapitre 5 ; c et v sont des facteurs core e rectifs qui tiennent compte des limitations lies ` lexistence de la hirarchie mmoire e a e e constitue de caches, dune mmoire principale et de mmoires secondaires (chapitres 6 et e e e 7) ; s traduit limpact du syst`me dexploitation, notamment pour les oprations dentrese e e sorties (chapitre 8). CPI permet enn de comparer des architectures de processeur, donc indpendamment e du syst`me mmoire : on compare alors plus prcisment CPIopt , ou CPIopt (1 + a). e e e e Llment dcisif qui a conduit au succ`s des architectures RISC est une valeur du CPI ee e e moyen bien meilleure a celle des architectures CISC. Elle est infrieure ` 1,5 pour les ` e a

2.5. Performances

19

premiers RISC commerciaux (SPARC de la socit Sun, ou R2000 et R3000 de la socit ee ee MIPS), alors quune architecture CISC comme celle du VAX-11 de Digital avait un CPI moyen de lordre de 6 a 8. CPIopt est de lordre de 1/4 a 1/8 actuellement. ` `

20

Chapitre 2. Les composantes de lordinateur

Chapitre 3

Reprsentation de linformation eLes types dinformations traites directement par un processeur ne sont pas tr`s nombreux. e e Les donnes : e les entiers, avec deux sous-types, entiers naturels et relatifs ; les ottants, qui dcrivent les rels, avec galement deux sous-types, simple et e e e double prcision. e les caract`res, qui sont plutt traits au niveau du logiciel de base. e o e Le codage de ces trois types est actuellement dnie formellement par des standards, e cest ` dire des normes contraignantes spcies par des organisations internationales. a e e Les instructions, dont le codage est spcique dun processeur. e Toute cette section traite de linformation par rapport aux mcanisme dun ordinateur, e et na donc pas de rapport avec la thorie de linformation utilise dans la thorie du e e e codage.

3.1

Linformation

Dans un ordinateur, linformation est numrise (digitale) : e e Dnition 3 Linformation est la connaissance dun tat parmi un nombre ni dtats e e e possibles. Une information non numrise est une information analogique : une grandeur physique e e continue, par exemple tension ou courant. 21

22

Chapitre 3. Reprsentation de linformation e

Etat France GB Allemagne Espagne Italie Portugal Gr`ce e Irlande

b2 0 0 0 0 1 1 0 1

b1 0 0 1 1 0 0 1 1

b0 0 1 0 1 0 1 0 1

Table 3.1: Reprsentation de huit Etats e

Quantit dinformation eLunit de mesure de linformation est le bit. e Dnition 4 1 bit est quantit dinformation lie ` la connaissance dun tat parmi deux. e e e a e 1 bit dinformation peut tre reprsent commodment par un digit binaire, prenant e e e e les valeurs 0 ou 1. Avec n bits, on peut reprsenter 2n congurations. La table 3.1 montre comment on e peut reprsenter 8 tats avec 3 bits. e e Proposition 1 La quantit dinformation contenue dans la connaissance dun tat parmi e e N est log2 (N ) bits. I = log2 (N ) Pour avoir une ide intuitive des grandeurs mises en jeu, il sut de remarquer que e e 210 = 1024, encore not 1K. 220 est donc de lordre du million : 220 (102 )3 = 106 . La caractristique la plus fondamentale, mais aussi la plus lmentaire dun ordinateur e ee est la taille de linformation quil est capables de manipuler. Le nombre dtats distincts e reprsents dans un ordinateur moderne est grand. En 74, le premier microprocesseur, e e le 8080 dIntel, tait un ordinateur 8 bits, correspondant a 256 tats. En 99, tous les e ` e processeurs existants sont 32 bits ou 64 bits. 32 bits correspondent a 232 = 22 230 , soit ` 4 milliards. Bien que ce nombre soit grand, il nest pas inni. Une partie des applications informatiques travaille sur des ensembles nis : un diteur de texte traite les caract`res, un e e programme de gestion dcran des pixels. A linverse, les applications numriques travaile e lent sur des ensembles non borns : entiers naturels ou relatifs, rationnels, rels. e e Les calculs dordinateurs sont donc par construction susceptibles derreur. On verra plus loin comment contrler ces erreurs, mais les supprimer est impossible. o

3.1. Linformation

23

V Etat haut Etat bas Seuil Haut Seuil Bas

t1

t3

t2

temps

Figure 3.1: Information : tat et temps. e

Support de linformationBien que linformation soit numrise, son support est physique, donc analogique : type e iquement, dans la technologie actuelle des CI, la tension. La connaissance dun tat dpend e e donc de deux seuils, haut et bas. La gure 3.1 illustre cette notion avec un signal lectrique. Elle montre quil y a deux e tats signicatifs, ltat bas lorsque la tension est infrieure ` une rfrence basse, et un e e e a ee tat haut lorsque la tension est suprieure ` une rfrence haute. Le troisi`me tat, situ e e a ee e e e entre les rfrences basse et haute, ne peut tre utilis comme support dinformation. ee e e Donc, pour quil y ait information, il faut prciser linstant auquel on regarde ltat du e e signal. : par exemple, en t1 le signal est haut et en t2 , le signal est bas. En revanche, a ` linstant t3 , le signal ne fournit aucune information et ne doit donc pas tre chantillon. e e e

NotationsMots binaires Dnition 5 Un mot de n bits est une suite (ai ), 0 i n 1 ; a0 est le bit de poids e faible, an est le bit de poids fort.

La notation hexadcimale e La notation hexadcimale est une mani`re simplie dcrire des mots binaires. Un mot e e e e binaire de n bits peut tre crit ` laide de n/4 digits hexadcimaux, en remplaant e e a e c chaque groupe de 4 digits binaires par le digit hexadcimal correspondant (table 3.2). e Actuellement, lusage de la notation hexdcimale ne correspond ` aucun support matriel e a e : il nexiste pas dadditionneur travaillant sur des digits hexadcimaux. En revanche, il e est plus agrable decrire dans un programme C 0x1234 que son quivalent binaire. e e

24

Chapitre 3. Reprsentation de linformation e

Chire Hexa Code binaire Chire Hexa Code binaire

0 0000 8 1000

1 0001 9 1001

2 0010 A 1010

3 0011 B 1011

4 0100 C 1100

5 0101 D 1101

6 0110 E 1110

7 0111 F 1111

Table 3.2: Correspondance entre chires hexadcimaux et quartets binaires e

3.2

Reprsentation des caract`res e e

De nombreux standards existent. Le plus simple est le code ASCII (American Standard Code for Information Interchange) [7]. Il permet de reprsenter sur un octet des donnes e e alphanumriques, dont les caract`res latins et les chires dcimaux, et quelques autres e e e informationscomme le retour chariot. Par exemple, la lettre A est code par 41H et le e chire 9 par 39H La reprsentation utilise en fait 7 bits, plus un bit de parit. Ce code e e a t tabli par lANSI. Il a volu vers le standard ISO 8859-1 (Latin-1), qui utilise les eee e e 8 bits pour reprsenter entre autres les caract`res accentus : par exemple, le code CAH e e e reprsente E. e Dautres standards existent, en particulier Unicode [8]. Il utilise deux octets pour encoder aussi des jeux de caract`res non latins, cyrilliques, hbreu, asiatiques. Unicode a e e t tabli par le Unicode consortium. Un encodage proche dUnicode, lUCS (Universal eee Character Set), est lobjet de la norme ISO 10646.

3.3

Reprsentation des entiers e

La plupart des langages de programmation permettent de distinguer le type entier naturel du type entier relatif. Par exemple, C propose unsigned int et int. Pourquoi cette distinction ? Certains objets sont intrins`quement des entiers non signs : une adresse mmoire e e e ou un age ne peuvent prendre des valeurs ngatives. e La capacit de reprsentation est limite, comme on la vu ci-dessus. Sur un budget e e e de 4 bits, par exemple, on peut reprsenter soit 16 entiers naturels, soit 16 entiers relatifs, e donc 8 positifs et 8 ngatifs si on souhaite une repsentation raisonnablement quilibre. e e e e Le codage des naturels et des relatifs est donc dirent. e

3.3. Reprsentation des entiers e Code Entier Code Entier 0000 0 1000 8 0001 1 1001 9 0010 2 1010 10 0011 3 1011 11 0100 4 1100 12 0101 5 1101 13 0110 6 1110 14 0111 7 1111 15

25

Table 3.3: Reprsentation des entiers [0 15] sur un quartet e

Entiers naturelsReprsentation e Un syst`me de reprsentation des nombres fond sur la numration de position utilise e e e e une base b, par exemple 10 ou 2, et b symboles qui reprsentent les nombres entre 0 et e b 1 : en base 2, on na donc que deux symboles, 0 et 1. Dnition 6 La reprsentation en base 2 est fonde sur lgalit suivante : e e e e en1

an1 an2 . . . a0 =i=0

2

ai 2i

Par exemple, la table 3.3 donne la reprsentation des entiers naturels de 0 ` 15 sur 4 bits. e a Proposition 2 Sur n bits, on peut reprsenter les entiers naturels N tels que 0 N < e 2n 1. En eet, le plus grand nombre reprsentable est en1

2i = 2n 1.i=0

Avec un octet, on peut donc reprsenter tous les entiers naturels entre 0 et 255. Un e mot de 32 bits permet de reprsenter tous les entiers naturels entre 0 et 4 294 967 295 e Ladditionneur Ladditionneur dune UAL est capable deectuer lopration daddition de deux entiers e naturels. Il faut souligner ici que ladditionneur est loprateur fondamental de lUAL : e toutes les autres oprations, soustraction de naturels, addition et soustraction de nombres e relatifs devront tre conues pour exploiter ecacement ladditionneur naturel. On note e c A B linterprtation en entier naturel du rsultat de laddition UAL. e e Laddition UAL fournit galement une retenue, qui ne fait pas partie du rsultat, mais e e est conserve. Dans la suite, on note C la retenue. On a donc : e

26

Chapitre 3. Reprsentation de linformation e

Proposition 3 Si A et B sont des entiers naturels, A+B =A B + C2n .

Si laddition de deux naturels produit une retenue, le rsultat est faux : le rsultat est e e trop grand pour tre reprsent. Par exemple, sur 4 bits, laddition UAL de 0111 et 1100 e e e donne 0011, avec retenue 1. En eet, 7 + 12 = 19, qui ne peut tre reprsent sur 4 bits. e e e

Entiers relatifsUne reprsentation raisonnable des entiers relatifs doit tre symtrique, en permettant e e e de reprsenter autant dentiers positifs que ngatifs. Ceci pose un probl`me li au zro. e e e e e En eet, il y a un nombre pair de congurations associes ` n bits, a rpartir entre e a ` e nombres positifs, nombres ngatifs et la valeur 0. La reprsentation ne peut donc pas tre e e e compl`tement symtrique. e e La reprsentation universelle actuelle est la reprsentation en complment ` 2. e e e a Complment ` 2 e a000 111 110 -2 3 -1 0 1 001 2 010 011

=0 =0 =0

101 -3

-4 100

Figure 3.2: Reprsentation des entiers relatifs sur 3 bits e Un exemple du codage en complment ` 2 sur 3 bits est dcrit g. 3.2. On pourra srement e a e u dcrire 0, 1, 2 et 3 et -1, -2, -3. Pour utiliser ecacement ladditionneur, la reprsentation e e des ces nombres en tant quentiers positifs doit tre identique a leur reprsentation en e ` e tant quentiers naturels. Pour la mme raison, il faut dnir la reprsentation des ngatifs e e e e de telle sorte que laddition UAL de N et N ait pour rsultat 0. Il ny a quune soe lution possible. En fait laddition UAL donne 0 avec retenue, cest a dire que laddition ` 3 mathmatique donne 8 = 2 e On remarque que le bit de poids fort des positifs est a 0, et celui des ngatifs ` 1. Cette ` e a caractrisation peut tre exploite facilement en matriel pour tester le signe dun nombre e e e e entier relatif. Il reste une conguration non attribue : 100. Elle peut tre attribue, soit e e e a ` 4, soit a -4. Pour rester cohrent avec la caractrisation du signe par le bit de poids ` e e fort,elle est associe ` -4. e a

3.3. Reprsentation des entiers e

27

non -2n reprsentable

-2n-1

0

2n-1

2n non reprsentable

Figure 3.3: Reprsentation des entiers relatifs sur n bits e Dnition 7 La reprsentation en complment ` 2 sur n bits est dnie par : e e e a e 1. les entiers reprsents sont [2n1 , 2n1 1]; e e 2. la reprsentation des entiers positifs est identique a celle des entiers naturels ; e ` 3. la reprsentation dun entier ngatif N est la reprsentation en naturel de 2n N e e e Cette dnition est illustre g. 3.3. Par exemple, la reprsentation sur 3 bits de 3est e e e la reprsentation du naturel 8 3 = 5 sur 3 bits, soit 101. La dnition est consistante : e e si N est ngatif et reprsentable, 2n1 N < 0, donc 2n1 2n N < 2n ; 2n N e e est donc un entier naturel et reprsentable sur n bits, puiquil est plus petit que 2n . e On a les proprits suivantes : ee Proposition 4 En complment ` 2 e a 1. Laddition UAL des reprsentations dun entier relatif N et de N est gale a 0. e e ` 2. Le bit de poids fort de la reprsentation des positifs est 0, le bit de poids fort de la e reprsentation des ngatifs est 1. e e 3. La reprsentation de -1 est le mot o` tous les bits sont a 1 e u ` La premi`re proprit vient du fait que laddition UAL des reprsentations de N et de e ee e N est celle (en supposant N 0) des naturels N et 2n N . Le rsultat est donc 0 avec e retenue 1. Soit N 0 un positif reprsentable. 0 < N < 2n1 , donc an1 = 0. Soit N un e ngatif reprsentable. 0 < N 2n1 , donc 2n N 2n1 , ce qui prouve la deuxi`me e e e proprit. 2 ee La dnition prcdente dcrit comment coder les nombres relatifs, ce qui est par e e e e exemple la tche dun compilateur. Lopration inverse, dinterprtation dune cha de a e e ne bit vers un nombre relatif, est dcrite par la proprit suivante : e ee Proposition 5 Si un entier relatif N est reprsent sur n bits par an1 an2 . . . a0 , alors e en2

N = an1 2

n1

+i=0

ai 2i .

28

Chapitre 3. Reprsentation de linformation e

Soit M = an1 2n1 + n2 ai 2i . On va montrer que M a pour reprsentation an1 an2 . . . a0 . e i=0 Dabord, M est reprsentable : en2 n2

(1)2n1 +i=0

0.2i M 0 +i=0

2i ,

e e e donc 2n1 M 2n1 1. Si an1 = 0, M est reprsent par an1 an2 . . . a0 dapr`s la dnition 7.2. Si an1 = 1, M < 0, donc sa reprsentation est celle du naturel 2n + M . e en2 n2

2n + M = 2n 2n1 +i=0

ai 2i = 2n1 +i=0

ai 2i ,

qui se reprsente comme 1an2 . . . a0 .2 e Autres reprsentations e Plusieurs reprsentations des entiers relatifs ont t utilises dans le lointain pass de e ee e e linformatique, mais la seule reprsentation utilise actuellement pour les entiers relatifs est e e la reprsentation en complment ` 2. En revanche, dautres reprsentations sont utilises e e a e e indirectement, en particulier pour les exposants des ottants (cf 3.4). Dans toutes les reprsentations, les nombres positifs sont reprsents par leur criture en base 2, qui est e e e e compatible avec laddition UAL.

Oprations arithmtiques e eOn a vu que lUAL eectue laddition de deux entiers naturels. Le calcul de loppos dun e nombre relatif, laddition et la soustraction de nombres relatifs, doivent tre des oprations e e ralisables facilement avec ladditionneur de lUAL. e Oppos e Proposition 6 Si N est un entier dans [2n1 + 1, 2n1 1], la reprsentation de N e sobtient en complmentant bit ` bit la reprsentation de N et en ajoutant 1. Lopration e a e e de complmentation bit ` bit et ajout de 1 est appele la complmentation ` 2. e a e e a Par exemple, sur 4 bits, la reprsentation de 3 est 0011. La reprentation de -3 sobtient e s en calculant sur 4 bits 1100 1 = 1101. En recommenant lopration, on retrouve 0011. c e Supposons N > 0 (sinon, on inverse les rles de N et N ). Si N est not an1 an2 . . . a0 , o e alorsn1 i=0

N=

ai 2i .

Le nombre M obtenu par complmentation a 2 est e `n1 n1

M =1i=0

ai 2 = 1 +i=0

i

ai 2i ,

3.3. Reprsentation des entiers e car lopration ne produit jamais de retenue pour N > 0. Donc en1

29

N +M =1+i=0

(ai + ai ) = 2n ,

donc M est la reprsentation de N . e Extension de signe Proposition 7 Si N est un entier relatif reprsent sur n bits par an1 an2 . . . a0 , N est e e reprsent sur m (m > n) bits par an1 . . . an1 an2 . . . a0 . e e e Cette opration est appele extension de signe : le bit de poids fort an1 est recopi sur les e e m n bits manquants. Par exemple, 7 est reprsent par 0111 sur 4 bits, et par 00000111 e e sur un octet ; 2 est reprsent par 1110 sur 4 bits, et par 11111110 sur un octet. e e La proposition est vidente si N 0. Si N < 0, les deux nombres ont le mme e e complment ` 2. e a Addition et soustraction La premi`re question est de savoir si laddition UAL est compatible avec la reprsentation e e en complment ` 2, ie si e a codage(A) codage(B) = codage(A + B)

Ce nest pas toujours vrai : le nombre de congurations possibles tant limit, le e e rsultat peut tre erron. Par exemple, sur 4 bits, 7 est reprsent par 0111, 2 est reprsent e e e e e e e par 0010, et laddition donne 1001, qui reprsente 8 + 1 = 7 et non 9. De mme e e laddition UAL de 7 (1001) et 6 (1010) donne 0011, soit 3 et non 13. Le probl`me e est que le rsultat est trop grand en valeur absolue pour tre reprsent sur 4 bits. e e e e Le probl`me est donc de dterminer un algorithme simple, qui sera implment en e e e e matriel, pour dtecter lerreur. On a vu que, pour laddition des naturels, lindicateur est e e le bit de retenue. Pour laddition des relatifs, la proposition suivante fournit un crit`re de e correction. Proposition 8 Laddition UAL de deux relatifs N et M fournit toujours un rsultat e correct si N et M ne sont pas de mme signe. Si N et M sont de mme signe, le rsultat e e e est correct si le bit de signe est gal a la retenue. e ` Addition dans lUAL des relatifs N et M signie interprtation en relatif du rsultat de e e laddition UAL des codages de N et M . On veut donc vrier que e codage(N ) codage(M ) = codage(N + M ), (3.1)

30

Chapitre 3. Reprsentation de linformation e

si et seulement si la condition de la proposition est vraie. Pour pouvoir eectuer des calculs, on choisit une interprtation univoque des deux membres de cette galit, celle e e e des entiers naturels. Premier cas : N 0 et M < 0 Alors, 2n1 N + M < 2n1 , car 0 N < 2n1 et 2n1 M < 0 Donc, N + M est reprsentable. codage(N ) = N, codage(M ) = 2n + M . Donc, e codage(N ) codage(M ) = 2n + N + M C2n ,

o` C est la retenue (prop 3). u Il y a retenue si N + 2n + M 2n , donc si N + M 0 ; dans ce cas, codage(N + M ) = N + M car N + M 0 et reprsentable; codage(N ) codage(M ) = N + M car C = 1. e Il ny a pas retenue si N + 2n + M < 2n , donc si N + M < 0 ; dans ce cas, codage(N + e M ) = 2n +N +M car N +M < 0 et reprsentable; codage(N ) codage(M ) = N +M +2n car C = 1. Deuxi`me cas : N 0 et M 0 e e Alors, 0 N + M < 2n . Donc, N + M est reprsentable si 0 N + M < 2n1 et non reprsentable sinon. e codage(N ) = N, codage(M ) = M . Laddition UAL ne produit jamais de retenue : les bits de poids fort sont tous deux a 0 ; donc ` codage(N ) codage(M ) = N + M C2n = N + M,

puisque C = 0. Dautre part, codage(N + M ) = N + M si N + M est reprsentable, e puisque N + M 0. Donc, lgalit (3.1) est vraie si et seulement si N + M < 2n1 , donc e e si le bit poids fort est 0, comme la retenue. Troisi`me cas : N < 0 et M < 0 e e Alors, 2n N + M < 0. Donc, N + M est reprsentable si 2n1 N + M < 0 et non reprsentable sinon. e codage(N ) = 2n + N, codage(M ) = 2n + M . Laddition UAL produit toujours une retenue : les bits de poids fort sont tous deux a 1 ; donc ` codage(N ) codage(M ) = 2n + N + 2n + M C2n = 2n + N + M,

puisque C = 1. Dautre part, codage(N + M ) = 2n + N + M si N + M est reprsentable, e puisque N + M < 0. Donc, lgalit (3.1) est vraie si et seulement si N + M > 2n1 , e e donc si 2n + N = M > 2n1 , donc si le bit de poids fort est a 1, comme la retenue. 2 ` Dcalages e Un oprateur de lUAL indpendant de ladditionneur eectue les dcalages logiques, e e e sll(shift logical left) et slr(shift logical right) et le dcalage arithmtique, sar(shift arithe e metic right).

3.3. Reprsentation des entiers ea3 b3 a2 b2 a1 b1 a0 b0

31

Additionneur 1 bit

Additionneur 1 bit

Additionneur 1 bit

Additionneur 1 bit

C

O s3

N s2

Z s1 s0

P

Figure 3.4: Gnration des code-conditions e e Dnition 8 e sll(an1 an2 . . . a0 ) = an2 . . . a0 slr(an1 an2 . . . a0 ) = 0an1 . . . a1 sar(an1 an2 . . . a0 ) = an1 an1 . . . a1 Le dcalage arithmtique droit tend le bit de poids fort, le dcalage logique droit remplit e e e e le bit manquant par un 0. Proposition 9 Linterprtation arithmtique des dcalages est donn par les proprits e e e e ee suivantes: 1. Si un entier naturel N est reprsent par an1 an2 . . . a0 , sll(an1 an2 . . . a0 ) = 2N e e et slr(an1 an2 . . . a0 ) = N/2, le quotient tant le quotient entier. e 2. Si un entier relatif N est reprsent par an1 an2 . . . a0 , sll(an1 an2 . . . a0 ) = 2N e e e et sar(an1 an2 . . . a0 ) = N/2, le quotient tant le quotient entier. Par exemple, sur 4 bits, 7 est reprsent par 0111 ; sll(0111) = 1110, qui reprsente 14 e e e ; slr(0111) = 0011, qui reprsente 3. 3 est reprsent par 1101 ; sll(1101) = 1010, qui e e e reprsente 6 ; sar(1101) = 1110, qui reprsente 2 (rappel : le quotient entier de a par e e b est le plus grand entier infrieur ou gal au rel a/b, donc (3)/2 = 2, et non 1. e e e

32

Chapitre 3. Reprsentation de linformation e

Traitement des erreursUne opration UAL gn`re, outre le rsultat sur n bits, plusieurs informations que le code e e e e peut vouloir tester par la suite (g. 3.4). Ces informations sont : C : retenue (carry) P : parit, rsultat pair ou impair e e Z : rsultat 0 e N : rsultat ngatif e e 0 : dpassement de capacit (overow) e e C correspond a un dpassement de capacit quand lopration est interprte dans le ` e e e ee champ des entiers naturels. 0 correspond a un dpassement de capacit quand lopration ` e e e est interprte dans le champ des entiers relatifs. ee Ces informations sont appeles Code-conditions, ou drapeaux (ags). Elles sont soue vent conserves dans un registre dtat du processeur, le registre code-conditions RCC, et e e accessibles par des instructions conditionnelles, par exemple BE = brancher si drapeau Z positionn. Dautres architectures (MIPS, Alpha, IA64) conservent ce rsultat dans un e e registre adressable. Ce probl`me sera tudi plus en dtail au chapitre suivant. e e e e Que se passe-t-il lors dun dpassement de capacit ? Pour beaucoup darchitectures e e (x86, SPARC) , rien dautre que le positionnement du code-condition associ. Dautres e (MIPS) peuvent dclencher une exception (trap), qui dclenche elle-mme lexcution dun e e e e gestionnaire dexception (trap handler) cest a dire lexcution dune routine associe ` ` e e a lv`nement. Le processeur fournit un support matriel en lanant lexcution de la routine e e e c e sans intervention de lapplication. Le logiciel de base fournit le contenu de la routine. Dans ce cas prcis, la routine va en gnral signaler lerreur et arrter lexcution du programme. e e e e e Le comportement de ces architecture est donc tr`s dirent, par exemple sur le calcul de e e 100! : les premi`res fournissent un rsultat faux, 100! modulo 2n ; les secondes signalent e e lerreur. Certains langages, comme ADA, requi`rent la dtection de toutes les erreurs e e arithmtiques. Sur les architectures qui ne dclenchent pas dexception, le compilateur doit e e insrer un code de test de dbordement apr`s chaque opration arithmtique susceptible e e e e e den produire. Lexemple le plus cl`bre derreur arithmtique catastrophique est la perte de la fuse ee e e Ariane 5 apr`s quarante secondes de vol en 96 [9]. La dfaillance tait due a un comportee e e ` ment aberrant du syst`me de guidage de la fuse. Ce syst`me tait forme dun syst`me e e e e e de rfrence inertiel (SRI) aliment par des capteurs et fournissant des informations a ee e ` un calculateur embarqu (ORB, on board computer) qui commandait les mouvements de e rotation de la fuse. Lensemble SRI plus ORB tait rpliqu en deux exemplaires pour e e e e assurer la redondance. A environ 37 secondes, les SRI1 et SRI2 ont envoy un message e derreur aux OBC1 et 2 ; larrive dun tel message ntait pas prvue dans le code excut e e e e e par les OBC, qui lont interprt comme des coordonnes. La fuse a tangu brutalement, ee e e e puis a commenc ` se briser. Le dispositif dautodestruction, destin ` viter que la fuse ea eae e retombe dangereusement sur la terre, a dtect la rupture fuse-boosters, et dtruit la e e e e fuse en vol. e Le message derreur est intervenu lorsque les syst`mes de rfnces inertiels eectuaient e ee

3.4. Nombres rels e Chire dcimal e 0 1 2 3 4 5 6 7 8 9 code 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

33

Table 3.4: Dcimal cod binaire e e la conversion dun ottant x vers un entier 16 bits, avec arrondi videmment (par exemple e 10,3 10). La valeur de x tait trop grande pour tenir sur un entier 16 bits, et le code e ADA a signal le dpassement de capacit. . . . Or, ce fragment de code de conversion, e e e hrit dAriane 4, tait inutile pour Ariane 5 ; dans Ariane 4, la valeur de lentier tait e e e e reprsentable sur 16 bits. Cette erreur lmentaire a cot plus de 4 milliards de francs. . . e ee ue

Reprsentation BCD eCertaines applications, notamment en gestion, exigent des calculs dcimaux exacts, e sans arrondi, ce qui implique de travailler avec des nombres dcimaux. En eet, avec un e nombre x de bits, il est impossible de convertir de mani`re exacte des nombres binaires e e en nombres dcimaux et rciproquement. On utilise alors la reprsentation dcimale code e e e e e binaire (binary coded decimal, BCD), dans laquelle chaque chire dcimal (0 - 9) est cod e e avec 4 chires binaires, en codage naturel 3.4. On distingue le BCD non compact, avec e 1 octet par chire, et le BCD compact, avec 1 octet pour 2 chires. e Le BCD nest pas compatible avec laddition UAL : codageBCD (1) car 0001 1010 = 0011, mais codageBCD (6) , qui nest pas un code BCD. codageBCD (8) = 1110 codageBCD (2) = codageBCD (3)

3.4

Nombres rels e

La reprsentation et le traitement des nombres rels sont appels reprsentation et traitee e e e ment ottants. Lexplication est que la virgule na pas une position xe, comme on le

34 verra par la suite.

Chapitre 3. Reprsentation de linformation e

Reprsentation des rels e eMantisse et exposant La reprsentation ottante est base sur la reprsentation dun nombre sous forme mantisse e e e et exposant : x = m B e Par exemple, en notation dcimale, 2, 76 peut scrire 2, 76 100 , et aussi 276 102 . e e Dans la suite, certains exemples seront prsents en dcimal (m, e en base 10, B = 10) e e e pour allger les notations. En machine, tout est en base 2. e Un nombre dcimal a une innit de reprsentations mantisse-exposant, par exemple e e e 2, 76 = 0, 276 101 = 27, 6 101 etc. La reprsentation normalise se dnit par lexistence dun seul chire, qui ne doit pas tre e e e e 0, avant la virgule. Dans lexemple prcdent, cette reprsentation est donc 2, 76 100 . e e e En base 2, le chire avant la virgule est ncssairement 1. Il nest donc pas utile de e e gaspiller un bit pour lindiquer. La mantisse comportera donc souvent un 1 implicite. Dicults de la reprsentation des rels e e e La reprsentation des nombres rels pose un probl`me plus dicile que celle des nombres e e e entiers : les nombres rels sont continus. Lordinateur ne travaillant que sur un nombre e limit de digits, il doit arrondir les reprsentations. Il ne peut pas non plus reprsenter e e e des rels abitrairement grands ou petits en valeur absolue. e Tous les nombres rationnels ne peuvent pas scrire sous forme mantisse-exposant. Par e exemple en base 10 et en base 2, 1/3. Les nombres rationnels qui scrivent sous cette forme e en base 10 sont les nombres dcimaux, mais le terme quivalent en base 2, deuxcimaux, e e nest gu`re usit. Les nombres reprsentables en machine sont donc un sous-ensemble des e e e nombres deucimaux. La reprsentation des rels, les crit`res de prcision (arrondi) requis des processeurs, et e e e e le traitement des dpassements de capacit (nombres trop grands ou trop petits) ont t e e ee un sujet de longues polmique parmi les constructeurs de machines et les utilisateurs du e calcul scientique : le standard actuel, la norme IEEE 754, fut mis en chantier en 1977, mais son adoption dnitive date de 1985. e La norme IEEE 754 comporte deux aspects : la dnition dune reprsentation come e mune des rels, et des contraintes sur la prcision des calculs. e e On mesure mieux la dicult du probl`me si lon sait que Von Neumann tait oppos e e e e a ` lide mme de larithmtique ottante en matriel. Cette opposition tait fonde sur la e e e e e e complexit du matriel requis, et sur lencombrement mmoire supplmentaire. e e e e

3.4. Nombres rels e Simple prcision e 8 23 E (exposant) f (mantisse) Double prcision e 11 52 E (exposant) f (mantisse)

35

1 s 1 s

Table 3.5: Formats IEEE 754 simple et double prcision. e

Reprsentation IEEE 754 eIl existe quatre formats : simple et double prcision, et simple et double prcision e e tendue. Nous ne prsentons que simple et double prcision. La g. 3.5 prsente les e e e e formats correspondants. En simple prcision e est linterprtation de E en exc`s ` 128 : e e e a e = interprtation de E en naturel - 127. e Donc, en simple prcision, emin = 0 127 = 127, emax = 255 127 = 128. e En double prcision, e est linterprtation de E en exc`s ` 1023 : emin = 1023, emax = e e e a 1024 Cas normalis e Pour emin < e < emax , le codage sinterpr`te de la faon suivante : e c le bit de plus fort poids donne le signe du nombre ; la mantisse utilise un 1 implicite ; donc, pour une partie fractionnaire f1 f2 . . . fn , la mantisse m est dnie par : en

m = 1, f1 f2 . . . fn = 1 +i=1

fi 2i = 1f1 f2 . . . fn 2n ;

2

au total, le nombre svalue par : e x = (1)s 1, f1 f2 . . . fn 2e . Par exemple, C8900000 code 218 (1 + 23 ). En eet, on a : bit de signe 1 E = 10010001 = 145, donc e = 17 2 f = 0010. . . 0, donc m = 1, 001 = 1 + 23

36

Chapitre 3. Reprsentation de linformation e

1/4 0 1/2

1 2 4 8

Figure 3.5: Echelle de reprsentation des ottants e Nom Normalis e Dnormalis e e Zro e Inni NaN e emin < e < emax e = emin e = emin e = emax e = emax f quelconque =0 0 0 =0 valeur 1, f 2e s 0, f 2emin (1) (1)s 0 (1)s NaN (1)s

Table 3.6: Interprtation des champs dans le format IEEE 754 e La reprsentation normalise permet de reprsenter les nombres de faon quilibre. e e e c e e Considrons un exemple plus simple, avec 2 bits de mantisse et 3 bits dexposant (ce e qui nest pas un choix raisonnable !). Lexposant est donc interprt en exc`s ` 3, et ee e a 2 e 3. La gure 3.5 dcrit les nombres positifs reprsents. Entre ces nombres, on e e e a les rels non deucimaux de lintervalle, qui devront tre approxims. Les barres paisses e e e e correspondent aux cas o` m = 1, donc x = 22 , 21 , 20 , 21 , 22 , 23 . On voit que dans chaque u intervalle, lespacement est double de celui du prcdent. La dirence entre deux nombres e e e reprsents conscutifs nest pas constante, mais lerreur relative cre par un arrondi est e e e ee constante. Cas exceptionnels La table 3.6 montre que les valeurs extrmes sont rserves pour une reprsentation e e e e synthtique des nombres non reprsentables en normalis. e e e Il existe un plus grand nombre exactement reprsentable en normalis : e e xm = 1, 1 . . . 1 2emax 1 . Les nombres plus grands sont reprsents par les mots o` le signe est positif, e = emax e e u et f = 0. Linterprtation de tous ces mots est identique : +. Pour les nombres ngatifs, e e on a une reprsentation analogue de . e Il existe un plus petit nombre strictement positif reprsentable en normalis. Cepene e dant, la reprsentation dnormalise permet de reprsenter des nombres plus petits. On e e e e

3.4. Nombres rels e

37

notera que le bit implicite nest plus 1, mais 0, do` lappellation dnormalis. u e e Il existe deux reprsentations de 0, suivant le bit de signe. e Enn, un code est rserv pour reprsenter le rsultat dune opration aberrante, par e e e e e exemple 0/0. Ce code est not NaN. e Lobjectif de cette reprsentation est dcrit en 3.4. e e

Oprations ottantes eLes oprations ottantes impliquent un traitement simultan des mantisses (cest ` dire e e a des parties fractionnaires) et des exposants. Les principales oprations sont les come paraisons et les oprations arithmtiques : addition, soustraction, multiplication, division. e e Dans tous les microprocesseurs gnralistes actuels, les oprations daddition, soustraction, e e e multiplication et division sont raliss par des oprateurs matriels spciques, intgrs e e e e e e e dans le CPU. On trouvera une prsentation de ces oprateurs dans [2, 10]. Lensemble de e e ces oprateurs est applele Floating Point Unit (FPU). En revanche, les oprations plus e e e complexes, racine carre, fonctions trigonomtriques, sont raliss par logiciel. e e e e Le standard IEEE 754 dcrit dans cette section ne prescrit rien sur limplmentation. Il e e spcie simplement les bits dune reprsentation, et du rsultat des opration arithmtiques e e e e e ottante. Ainsi, le langage Java ore un calcul ottant conforme IEEE 754 indpendamment e de toute plate-forme matrielle. e Comparaisons Lutilisation du bit de signe permet le test rapide du signe. La notation en exc`s pour e lexposant permet de comparer les ottants en utilisant la comparaison de entiers naturels. Addition et soustraction Laddition implique une dnormalisation du nombre le plus petit pour que les exposants e deviennent gaux, suivie dune addition des mantisses, qui est suivie ventuellement dune e e renormalisation. La dnormalisation et la renormalisation peuvent entra e ner une perte dinformation. Laddition peut entra ner la sortie du champ des nombres reprsentable en normalis : par e e exemple xm + xm . Multiplication Soit deux nombres ottants x1 = s1 m1 2e1 et x2 = s2 m2 2e2 . Le produit x1 x2 est donn e par s1 s2 m1 m2 2e1 +e2 . Il y a multiplication des mantisses, ce qui correspond a une multiplication enti`re, ` e o` lon arrondit pour obtenir un rsultat correspondant au nombre de bits de la partie u e fractionnaire. Compte tenu du codage en exc`s, laddition des exposants correspond a e ` lopration E1 + E2 c, o` les Ei sont interprts comme des entiers naturels, c = 127 e u ee

38

Chapitre 3. Reprsentation de linformation e

en simple prcision et 1023 en double prcision. L` encore, il peut il y avoir perte e e a dinformation, lors de larrondi, ou sortie du champ des nombres reprsentables, lorsque e lexposant est trop grand ou trop petit.

Traitement des situations anormalesComme on vient de le voir, les calculs peuvent entra ner soit un dpassement de capacit, e e le rsultat nest pas reprsentable en format normalis, ou erreur, le rsultat est arrondi. e e e e La norme IEEE 754 vise a permettre ` un programme dadopter un comportement adquat ` a e dans ce type de situation anormale. Cette section en prsente les aspects lmentaires. e ee On trouvera un traitement exhaustif dans [11]. Les rsultats non reprsentables sont pris en compte par larithmtique tendue et e e e e la reprsentation dnormalise. Les erreurs sont prises en compte par une contrainte de e e e prcision. e Arithmtique tendue e e Lide de larithmtique tendue est quil peut tre protable de laisser survivre un proe e e e gramme qui a, par exemple, eectu une division par 0. Lexemple plus simple est un e solveur qui cherche les zeros dune fonction dont lensemble de dnition nest pas come modment calculable. le solveur travaille en valuant la fonction en divers points. Sil e e tombe sur une valeur hors de lensemble de dnition de la fonction, il peut fort bien e calculer 0/0 ou 1. Cette erreur nest pas ncessairement gnante, si le solveur peut e e recommencer en un autre point indpendamment. e La norme dnit dabord une arithmtique tendue a trois valeurs supplmentaires, e e e ` e et NaN. Ce sont les r`gles usuelles, par exemple : e (+) + (+) = (+) (+) + () = NaN () () = () avec r`gle des signes. e Toute opration dont un des oprandes est NaN a pour rsultat NaN. e e e Du point de vue de lapplication, si une opration produit un rsultat trop grand e e en valeur absolue, ou bien est mathmatiquement incorrecte (0/0), le rsultat tombe dans e e lensemble {+, , NaN }, et les calculs peuvent se poursuivre en utilisant larithmtique e tendue. e Tout FPU conforme IEEE 754 doit implanter cette arithmtique tendue. e e Reprsentation dnormalise e e e La dirence de deux nombres normaliss peut ne pas tre reprsentable en format nore e e e malis. Par exemple, en simple prcision (emin = 127), x = 1, 1 . . . 11 2126 et e e y = 1, 1 . . . 10 2126 sont reprsentables en normalis (par 00FFFFFF et 00FFFFFE). e e 126 nest pas reprsentable en normalis. e e Mais x y = 0, 0 . . . 01 2

3.4. Nombres rels e

39

On pourrait tout simplement arrondir le rsultat, au plus proche reprsentable, soit e e 0. Mais supposons que le FPU ralise correctement la comparaison de deux ottants, en e testant lgalit de tous leurs bits. Le test x = y donne faux, et le test x y = 0 donne e e vrai. Deux codes identiques du point de vue mathmatique auront des rsultats dirents e e e : le code if not (x=y) then z = 1/(x-y) pourrait aboutir a une division par 0, et le code if ` not (x-y = 0) then z = 1/(x-y) ne produit pas derreur. La reprsentation dnormalise permet prcisment la reprsentation de ces nombres e e e e e e trop petits : 0, 0 . . . 01 2126 = 0, 0 . . . 10 2127 , qui se reprsente comme 00000002. e Dans ce cas, les deux tests ont le mme rsultat. e e La dirence de deux nombres dnormalise peut elle-mme tre trop petite pour e e e e e tre reprsente, mme en dnormalis, et donc tre arrondie a 0. On verra plus loin le e e e e e e e ` traitement de ce type dv`nement. e e Drapeaux et gestionnaires dexceptions Le standard IEEE 754 fournit un fonctionnement par dfaut, qui est de continuer le calcul e dans larithmtique tendue. Continuer lexcution est souvent la solution approprie, e e e e mais pas toujours. Sur erreur arithmtique ottante, une application peut donc souhaiter e trois comportements : arrt immdiat, ou contrle par elle-mme ou non-traitement. e e o e Un exemple typique dapplication qui demande un arrt immdiat est celui du calcul e e x de 1+x2 . En simple prcision, quand x = 265 (reprsentable par 60000000), x2 produit e e et le rsultat est 0, alors quil est de lordre de 1/x, qui est parfaitement reprsentable ; e e le rsultat est donc compl`tement erron et continuer lexcution en gnral sans intrt e e e e e e ee (et ventuellement coteux en temps machine). Un exemple typique dapplication qui e u demande un traitement nuanc est une application qui gn`re des nombres dnormaliss e e e e e : elle ne souhaite pas sinterrompre prmaturment ` chaque rsultat dnormalis, mais e e a e e e elle veut sinterrompre si elle obtient un 0 comme rsultat de la soustraction de nombres e dnormaliss. e e Le standard prescrit que les v`nements anormaux soient enregistrs, dans des drae e e peaux (ag), et recommande fortement que des gestionnaires dexceptions soient installs. e Les drapeaux permettent un traitement personnel a lutilisateur (ventuellement rien) ; ` e les gestionnaires dexception fournissent un traitement par le logiciel de base (syst`me), e qui permet en particulier larrt immdiat. e e La gure 3.7 prsente ces drapeaux. Des instructions du processeur permettent de e les tester. Finalement, des routines des biblioth`ques numriques orent une interface e e utilisateur vers ces instructions, par exemple la libm, qui est la librairie numrique standard e associe au langage C. Lutilisateur peut donc choisir de ne pas tester les drapeaux, ou de e les tester et dappliquer un algorithme de son choix. La norme prescrit que les drapeaux soient persistants (sticky) : ` la dirence des drapeaux entiers, un drapeau positionn ne a e e sera remis ` ` que par une instruction explicite. Les drapeaux et les librairies numriques aa e permettent donc le contrle par lapplication. o Un traitement gnrique, en gnral larrt immdiat est rendu possible si chaque e e e e e e

40

Chapitre 3. Reprsentation de linformation e

Flag Underow Overow Division par 0 Invalid Operation Inexact

Condition Nombre trop petit Nombre trop grand division par 0 Le resultat est NaN et les oprandes = NaN e Resultat arrondi

Resultat 0, emin ou nombre denormalise ou xmax NaN Resultat arrondi

Table 3.7: Ev`nements anormaux dans la norme IEEE 754. la premi`re colonne dcrit e e e le drapeau, la seconde lopration qui cre cet v`nement, la troisi`me le rsultat dans le e e e e e e comportement par dfaut. e dpassement de capacit ottant peut dclencher une exception. Le drapeau nest alors e e e pas positionn. e Le choix entre positionnement des drapeaux (avec poursuite de lexcution du proe gramme utilisateur) et exception est programmable. Les microprocesseurs orent des bits de contrle, qui font gnralement partie dun mot de contrle du processeur, et des ino e e o structions pour les positionner, qui permet ce choix. Il y a un bit de contrle par exception. o Lorsque lerreur ne produit paslappel dun gestionnaire dexception, on dit que lexception est masque. Par exemple, lexception Rsultat Inexact est presque toujours masque : la e e e plupart des calculs eectuent des arrondis et le programme doit continuer. Linterface dun langage de haut niveau vers les instructions de masquage est ralis par des options e e du compilateur.

Prcision eLes oprations dalignement et darrondi perdent de linformation, ce qui peut tre sans e e eet ou catastrophique. Par exemple, sur 3 digits dcimaux de mantisse, soient x = 2, 15 1012 et y = 1, 25 e 5 . En alignant y sur x et en arrondissant, y = 0 et x 10 y = 2, 15 1012 , ce qui est le rsultat arrondi correct ( est loprateur de soustraction sur 3 digits). e e 1 et y = 9, 93, en alignant y sur x et en arrondissant, Mais, pour x = 1, 01 10 y = 0, 99101 et x y = 0, 02, alors que le rsultat exact sur 3 digits est 10, 19, 93 = 0, 17. e Deux digits sont donc faux : lerreur sur le dernier digit sest propage. e Une mesure de la prcision est le ulp (units in last postion). Dans le calcul prcdent, e e e lerreur est 15 ulp. Le standard IEEE impose que les oprations daddition, soustraction, multiplication e et division soient arrondies exactement : tout se passe comme si le rsulat tait calcul e e e exactement, puis arrondi au plus pr`s. Ceci requiert que lunit de calcul dispose de plus e e de bits que le format, pour stocker temporairement des informations. On a montr que 3 e

3.5. Placement mmoire e

41

bits susent (garde, garde supplmentaire et sticky bit). e Le contrat assur par le standard IEEE ne garantit videmment rien sur le cumul des e e erreurs dans une squence de calculs. Ltude de la la qualit numrique des rsultats dun e e e e e algorithme est une branche de lanalyse numrique. e Lexemple le plus simple est lassociativit, que le calcul ottant ne respecte pas. e Considrons lexemple suivant, toujours avec une mantisse 3 digits dcimaux : e e 2, 15 1012 (2, 15 1012 1, 25 105 ) = 2, 15 1012 2, 15 1012 = 0 (2, 15 1012 2, 15 1012 ) 1, 25 105 = 1, 25 105

3.5

Placement mmoire e

Big Endian et Little EndianLa mmoire est en gnral organise par octets, cest ` dire que la plus petite unit e e e e a e adressable est loctet. Ainsi, la dclaration : e char c = A; correspond a la rservation dun octet, dont ladresse est par dnition celle de la variable ` e e c, et qui est initialis ` 0x41 (rservation signie simplement que le compilateur nallouera ea e pas cet octet pour une autre variable ; on verra dans le chapitre suivant comment seectue cette rservation). On notera dans la suite @x ladresse mmoire dune variable x e e Comme la mmoire est organise par octets, les types reprsents sur plus dun octet e e e e est plus dicile ` grer ; par exemple, la dclaration : a e e int x = 0x12345678 ; demande que lensemble doctets {12, 34, 56, 78} soit plac en mmoire dans lensemble e e dadresses {@x, 1+@x,2+@x, 3+@x}, mais dans quel ordre ? En fait, deux solutions existent (g. 3.6). Big Endian : loctet de poids fort est a ladresse @x ; on commence par le gros bout. ` Little Endian : loctet de poids faible est a ladresse @x ; on commence par le petit ` bout. Initialement, lun des formats tait caractristique des architectures x86 (Intel), et e e lautre des architectures 68x00 (Motorola). Actuellement, les processeurs peuvent tre e congurs pour supporter les deux formats. Les noms Big Endian et Little Endian sont e une allusion littraire. Dans les annes 80, les news ont t encombres par dinterminables e e ee e polmiques portant sur les mrites respectifs des deux formats, pour lesquels aucun argue e ment dcisif nexiste. Le nom fait allusion a un pisode des voyages de Gulliver, o` une e ` e u guerre est dclare entre les partisans du gros bout et du petit bout pour entamer les ufs e e a ` la coque.

42 Adresse @x 1+@x 2+@x 3+@x Big Endian 12 34 56 78 Little Endian 78 56 34 12

Chapitre 3. Reprsentation de linformation e

Figure 3.6: Plan mmoire en Big Endian et Little Endian e

AlignementLes deux dclarations suivantes sont smantiquement quivalentes. e e e (a) (b) int x = 0x12345678; char c = A; char c = A int x = 0x12345678; Cependant, elles produisent deux occupations mmoire direntes (g. 3.7, en Big e e Endian, en supposant que les variables sont implantes ` partir de ladresse 0x1000). e a Dans les deux cas, la variable x, qui occupe quatre octets, est implante ` une adresse e a multiple de 4 ; dans le deuxi`me cas, le compilateur est contraint de laisser inoccups e e quelques octets pour respecter cette contrainte. Plus gnralement, e e Dnition 9 On dit quune donne de taille p mots mmoire est aligne si son adresse e e e e est multiple de p.

Adresse 1000 1001 1002 1003 1004 1005 1006 1007

(a) 12 34 56 78 41 -

(b) 41 12 34 56 78

Figure 3.7: Alignement mmoire e Lalignement dcoule de larchitecture matrielle : les acc`s aux circuits qui sont le e e e support matriel de la mmoire sont organiss pour permettre un acc`s rapide aux enseme e e e bles doctets aligns. Le surcot en encombrement mmoire est compens par la rapidit. e u e e e La plupart des processeurs, a lexception des architectures Intel, nautorisent pas lacc`s ` e non align, le surcot en encombrement mmoire tant compens par la rapidit. Un acc`s e u e e e e e

3.5. Placement mmoire e

43

non align provoque alors une exception, qui conduit en gnral a la n prmature du e e e ` e e programme. En particulier, une erreur dexcution interviendra si un pointeur sur un type e multi-octets (par exemple sur un entier), se retrouve pour une raison quelconque contenir une adresse non aligne. Lorsque lacc`s non align est permis, il est souvent plus coteux e e e u en temps quun acc`s align. Les compilateurs actuels crent donc toujours un code align. e e e e

TypesLes LHN dnissent des types, qui permettent un calcul sur le type des expressions, donc e sur le rsultat des aectations (par exemple entier + ottant ottant). Le type dune e variable dnit aussi son encombrement mmoire. On ne consid`rera ici que les structures e e e de donnes les plus courantes, scalaires et tableaux. e Types scalaires On a vu ci-dessus la reprsentation des types scalaires. e Tableaux

a00 a01 a02 a10 a11 a12 a20 a21 a22 RMO

0 1 2 3 4 5 6 7 8

a00 a10 a20 a10 a11 a12 a20 a21 a22 CMO

0 1 2 3 4 5 6 7 8

Figure 3.8: Allocation des tableaux en mmoire e Les tableaux sont raliss en mmoire par une squence implante ` partir de ladresse e e e e e a du premier lment du tableau. Pour un tableau unidimensionnel A, ladresse de A[i] est ee u ee @A + i sa , o` sa est la taille en octets dun lment de a. Les tableaux multidimensionnels sont linariss par le compilateur (g. 3.8). Les come e pilateurs C et Pascal utilisent lordre ligne dabord (Row Major Order, RMO) ; par exemple, pour un tableau bidimensionnel, les lments dune ligne sont allous conscutivement ee e e en mmoire ; les compilateurs Fortran utilisent lordre colonne dabord (Colum Major Ore der, CMO) o` les lments dune colonne sont allous conscutivement en mmoire. u ee e e e

44

Chapitre 3. Reprsentation de linformation e

Chapitre 4

Architecture logicielle du processeurLarchitecture logicielle est la spcication dun processeur. Elle dcrit les units fonce e e tionnelles (UAL, Units de calcul ottant etc.), les registres visibles, les types de donnes e e manipuls et les oprations le processeur eectue sur ces donnes. Cette spcication e e e e est dcrite par le jeu dinstructions. Cest la machine que voit un compilateur, ou un e programmeur en langage machine. Le but de larchitecture logicielle dun processeur gnraliste est de permettre une e e excution ecace des constructions des langages de haut niveau (LHN). Ces constructions e ont une smantique riche, par exemple une boucle, ou un appel de fonction. e Lintroduction a soulign que la prise en compte de lensemble des contraintes teche nologique a des consquences majeures ` tous les niveaux de larchitecture, matrielle et e a e logicielle. Dans ce chapitre, nous ne consid`rerons que deux contraintes : e le nombre des oprateurs matriels est limit; e e e les calculs ne peuvent seectuer que sur des donnes prsentes dans le processeur. e e Ce chapitre prsente donc une typologie des composants des architecture logicielles, par e rapport aux structures des LHN impratifs. Lobjectif nest ni de prsenter de mani`re e e e exhaustive le jeu dinstructions dune machine (plus de 200 pour le PowerPC !), ni de prsenter toutes les variantes de jeux dinstructions que lon peut trouver dans les archie tectures actuelles, mais dtudier les caractristiques des jeux dinstruction qui permettent e e lexcution des langages de haut niveau. Les chapitres suivants discuteront de faon plus e c approfondie linteraction avec les contraintes technologiques. 45

46

Chapitre 4. Architecture logicielle du processeur

4.1

Mod`le dexcution e e

Dnition eLe choix du nombre doprandes sur lesquels travaille une instruction machine est une e question cl. Il rsulte dun compromis entre le temps de calcul, le nombre doprateurs e e e matriels utiliss et le nombre de registres disponibles. e e Soit par exemple linstruction Y := A + B + C + D. Elle peut tre excute en une e e e seule instruction si lon dispose de trois oprateurs matriels daddition (additionneurs), e e ou en trois instructions avec un seul additionneur. La frquence dune telle instruction e dans les codes LHN ne ncessite certainement pas le co t de trois additionneurs, alors que e u linstruction suivante sera typique des langages de haut niveau : Resultat = operande1 OP operande2 . Cette instruction correspond a ce que peut raliser une UAL qui eectue une opration ` e e sur deux oprandes et dlivre un rsultat. e e e Trois oprandes spcis par instruction (deux oprandes source et un rsultat) cone e e e e stituent donc un bon compromis entre ecacit et cot du matriel. Cependant, ce come u e promis suppose quon peut eectivement accder ` trois oprandes, ce que le nombre e a e de registres disponible na pas toujours permis. La premi`re caractristique du mod`le e e e dexcution est donc le nombre doprandes. e e Les oprandes considrs peuvent tre situs, soit dans un registre interne a lunit e ee e e ` e centrale, soit dans la mmoire. Pour chaque oprande source ou rsultat, linstruction doit e e e contenir le numro de registre pour les oprandes dans lUC, ou lensemble des informations e e pour calculer ladresse mmoire de loprande. e e Dnition 10 Soit n le nombre total doprandes spcis par instruction, et m le nombre e e e e doprandes mmoire. Le couple (n, m), avec m n , dnit le mod`le dexcution du e e e e e processeur.

Les dirents mod`les dexcution e e eLa gure 4.1 illustre les dirents mod`les dexcution des instructions, sur lexemple A e e e = B + C. La partie (a) prsente le mod`le mmoire-mmoire (3,3), qui est caractristique du e e e e e VAX-11 de Digital. Une instruction peut spcier les deux oprandes source et le rsultat, e e e et chaque oprandes peut tre situ en mmoire. Linstruction A = B + C est excute e e e e e e par une instruction assembleur : ADD @A, @B, @C. La partie (b) prsente le mod`le mmoire-accumulateur (1,1), typique des premiers e e e microprocesseurs 8 bits (Intel 8080 ou Motorola 6800). Linstruction ne spcie quun e oprande ; les autres ssont implicites, contenus dans le registre accumulateur. Linstruction e A = B + C est alors