arithmétiques des ordinateurs - plan d'exposé

Upload: palmface-med

Post on 18-Jul-2015

33 views

Category:

Documents


0 download

DESCRIPTION

Document de Arnaud Tisserand

TRANSCRIPT

Plan de lexpos e

Arithmtique des ordinateurs eArnaud Tisserand Arnaire INRIA LIP e

Introduction Arithmtique ottante e

Ecole doctorale de mathmatiques et dinformatique fondamentale de Lyon e 12 avril 2005

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

2/76

Larithmtique chez les Babyloniens eUtilisation dun syst`me de position (le premier de lhistoire) en base 60 avec e les chires suivants (et la base auxiliaire 10) :1 2 3 4 5 6 7 8 9 10

Partie 1Exemple de codage :

Introduction

= 33 60 + 24 = 2004 Syst`me de position en base sur n chires (pour des entiers naturels) : en1

x = xn1xn2 x1x0 =

xi ii=0

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

3/76

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

4/76

Oh, la belle table de multiplication. . .

Le boulier chinois : position de repos (0)00 0 00 0 00 0 00 0 00 0 00 0 00 0 10 0 10 1 10 0 10 0 1 00 0 10 00 0 0 10 00 1 00 0 00 0

Illustration de la table de multie a plication par 25 trouve ` Suse et date du IIe millnaire av. J.-C e e (conserve au Muse du Louvre). e e Remarque : seuls les produits par (1), 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 30, 40, 50 sont ncessaires sur les e 59 possibles.

1

x5

x1

Les colonnes reprsentent les units, les dizaines, les centaines, les mile e liers,. . . de la droite vers la gauche Les boules sont actives lorsquelles sont au plus proche de la barre du e e e e e milieu, et dsactives sinon (0 est donc reprsent ci-dessus) Les boules situes au dessus de la barre horizontale du milieu sont e multiplies par 5 (celles de dessous par 1). e5/76 A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 6/76

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

Le boulier chinois : criture de 2647 e

Le boulier chinois : 2647+1362

tat de dpart

2

6

4

7

tat 1

+1

2

6

4

7

La premi`re illustration connue dun boulier chinois dans un livre date de 1175. e Il existe des dispositifs proches (tablettes avec des rainures sur lesquelles on dplace des petits cailloux) depuis bien plus longtemps. e Il existe des concours de rapidit de calcul sur des bouliers. Le japonais Yoshio e Kogima a eectu correctement 50 divisions, avec des oprandes de 5 ` 7 e e a chires, en 1 min 18 s et 4 centi`mes sur un boulier japonais (soroban) ! eA. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 7/76

tat 2

+1

+3

tat 3

+1

+3

+6

tat 4

+1

+3

+6

+2

tat 5

4

0

0

9

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

8/76

Arithmtique des ordinateurs e Etude et conception de moyens pour eectuer les calculs de base en machine. units de calcul matrielles : e e additionneur/soustracteur, multiplieur, diviseur, . . . units ottantes e oprateurs spciques (ex : ltres pour traitement du signal) e e support logiciel pour les calculs de base : biblioth`ques mathmatiques de base (libm) e e biblioth`ques de fonctions lmentaires (sin, cos, exp, log, . . .) e ee biblioth`ques multi-prcision e e biblioth`ques darithmtique dintervalle e e validation de la qualit numrique : e e test et/ou preuve de la prcision de calculs e preuve du bon comportement des oprations (dpassements, . . . ) e eA. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 9/76

Arithmtique des ordinateurs (suite) eLes trois aspects fondamentaux de larithmtique des ordinateurs : e Syst`mes de reprsentation des nombres : e e entier, virgule xe, virgule ottante, redondant, grande base, syst`me e logarithmique, syst`me modulaire, corps nis. . . e Algorithmes de calcul : additionsoustraction, multiplication, division, PGCD, racine carre, fonce tions lmentaires (sin, cos, exp, log . . .), oprateurs composites (ex : ee e e e 1/ (x2 + y 2)), oprateurs spciques (FIR, DCT, crypto), algorithmes numriques, preuves de programmes. . . e Ma triser les implantations : cibles logicielles et matrielles, support arithmtique dans les langages de e e programmation, validation, test, optimisation des performances (vitesse, mmoire, surface de circuit, temps rel, consommation dnergie). . . e e eA. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 10/76

Arithmtique des ordinateurs (suite) eLiens avec : architecture des ordinateurs micro-lectronique e outils CAO de circuits algorithmes numriques e calcul formel optimisation globale thorie des nombres e preuves formelles ...A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 11/76

Arithmtique des ordinateurs (suite) e

Exemples de sujets de recherche dans lquipe/projet Arnaire : e e biblioth`que de fonctions lmentaires avec arrondi correct e ee biblioth`que darithmtique dintervalle en multi-prcision e e e oprateurs de cryptographie pour circuits FPGA e biblioth`que pour le support ottant dans les processeurs entiers e units ottantes et logarithmiques pour circuits FPGA e

oprateurs arithmtiques matriels ` basse consommation dnergie e e e a e arithmtique corps nis pour biblioth`que dalg`bre linaire e e e e preuves automatiques doprations arithmtiques e e

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

12/76

Syst`me logarithmique eUn nombre est reprsent par son signe et le logarithme de sa valeur absolue e e crit en virgule xe (le nombre 0 doit tre reprsent par un codage spcial). e e e e e Les oprations dans ce syst`me seectuent en utilisant : e e log2(a b) = log2 a + log2 b log2(a b) = log2 a log2 b log2(a ) = q log2 aq

Besoins dans les processeurs/architectures volus e e Oprateurs arithmtiques capables de fonctionner ` de hautes frquences e e a e Oprateurs arithmtiques ` basse consommation dnergie pour les applie e a e cations embarques et les appareils portables e Prendre en compte les nouvelles contraintes technologiques

log2(a b) = log2 a + log2(1 2

log2 blog2 a

)

Ajout de nouvelles fonctionnalits de calcul, exemple : FMA (fused e multiply and add), oprateurs de cryptographie, units graphiques e e Sujets de recherche actuels sur les oprateurs arithmtiques matriels : e e e nouvelles fonctionnalits e basse consommation dnergie e oprateurs recongurables e oprateurs pour la cryptographie/signature e ...A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 14/76

o` les fonctions log2(1 + 2x) et log2(1 2x) sont tabules ou approches. u e e Applications en traitement du signal et en contrle numrique. Il y avait mme o e e un projet europen pour concevoir un processeur avec des units de calcul 32 e e bits en syst`me logarithmique. eA. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 13/76

Suite de J.-M. Muller100

Exemple de Shampine et Watts (1/2)On cherche la solution de lquation direntielle suivante : e e f (x) = 10(f (x) x2) f (0) = 0.02

50 u(n) 0 50 100 0 5 10 n 15 20

u0 = 2 u1 = 4 un+1 = 111 1130 + 3000 un unun1n0 1 2 3 4 5 6 7 8

un programme C2.000000000000000 -4.000000000000000 18.500000000000000 9.378377914428711 7.801147460937500 7.154346466064453 6.805830478668213 6.578579425811768 6.235515594482422

n9 10 11 12 13 14 15 16 17

un programme C2.913589954376221 -111.709793090820312 111.898239135742188 100.661544799804688 100.040603637695312 100.002494812011719 100.000152587890625 100.000007629394531 100.000000000000000

Rsolution numrique par la mthode de Runge-Kutta dordre 4 (et 100000 e e e points) sur un PentiumIV :f (x) f (1) f (2) f (3) f (4) f (5) f (6)15/76

Et pourtant, (un) converge thoriquement vers 6 ! eA. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

prg. C (oat) 1.07524 1018.31 -1.4026e+07 4.97446e+11 -1.91225e+14 -7.33462e+19

valeur prg. C (double) 1.22 4.42 9.66711 -250.367 1.45778e+07 -1.22707e+11

exacte 1.22 4.42 9.62 16.82 26.02 37.2216/76

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

Exemple de Shampine et Watts (2/2)La solution de f (x) = 10(f (x) x2) f (0) = 0.02 f (x) = Celle de 1 1 + x + x2 50 5

Maple : BUG # 1542Bug prsent sur la version Maple 6.01, IBM INTEL NT, Jun 9 2000 e Build ID 79514. entre e 1/21474836480; 214748364810; 21474836481.234; 2147483648; rsultat Maple e Error, division by zero 10 1.234 2147483648 valeur thorique e 1/21474836480 214748364810 21474836481.234 2147483648

est

f (x) = 10(f (x) x2) f (0) = c f (x) = 1 1 1 + x + x2 + (c )e10x 50 5 50

est

Cause : probl`me dans la lecture des nombres entiers (integer parsing) : petits e entiers avec un format du processeur et grands entiers avec un format interne, erreur dans le mode de slection du format. e Source : http://maple.bug-list.org/17/76 A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 18/76

La solution dpend donc tr`s fortement des conditions initiales. e eA. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

Maple : bug de la factorielle (version 7)Entre : e> 1001!/1000! ,1002!/1000! ,1002!/1001! ,1003!/1000! ,1003!/1001! ,1003!/1002!;1, 1, 1, 1, 1, 1

Petits probl`mes numriques : un polynme rebelle ? e e oAvec un petit programme C, calculons des valeurs (oat) de p(x) ci-dessous pour x entre 0.988 et 1.012, et traons la courbe correspondante. c p(x) = x7 7x6 + 21x5 35x4 + 35x3 21x2 + 7x 13e14 2e14 1e14p(x)

Comportement corrig : e> 1001!/1000! ,1002!/1000! ,1002!/1001! ,1003!/1000! ,1003!/1001! ,1003!/1002!;1 0 0 1 , 1 0 0 3 0 0 2 , 1 0 0 2 , 1 0 0 6 0 1 1 0 0 6 , 1 0 0 5 0 0 6 , 1003

Il y a une erreur dans le code de la fonction factorielle de la version 7 de Maple (il y des correctifs possibles pour cette version). Source : Maple User Group Answers (http://www-math.math.rwth-aachen.de/MapleAnswers/)A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 19/76

0 1e14 2e14 3e14 0.99 0.995 1 x 1.005 1.01

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

20/76

Augmenter la prcision : une stratgie able ? e eExemple de S. Rump : a f (a, b) = 333.75b + a (11a b b 121b 2) + 5.5b + 2b6 2 2 2 6 4 8

Petits probl`mes numriques : In = nIn1 1 (1/4) e e eProbl`me : approcher numriquement In = e e1 n x x e dx 0

pour n = 50.

Mthode : utiliser la rcurrence In = nIn1 1 avec I0 = 1 1 e e e en 1 2 3 4 5 6 7 8 9 10 20 30 40 50 programme C 0.2642411177 0.1606027941 0.1139289413 0.08783632386 0.07130217811 0.05993362749 0.05165595124 0.04536816875 0.04043407757 0.0364613345 -82.17689174 -8.961529476e+15 -2.756557975e+31 -1.027535737e+48 valeur exacte 0.26424111765711535680895245 0.16060279414278839202238114 0.11392894125692285447161967 0.08783632385624909629095493 0.07130217810980315985925092 0.05993362748737663755998179 0.05165595124019414132434878 0.04536816875011080899926653 0.04043407757955495939787503 0.03646133462410727238322656 0.01835046769725620632614475 0.01224950295785890695334039 0.00919138801539721301175301 0.0073547067958001888639367122/76

Sur un ordinateur IBM 370, on a : prcision e simple double tendue e valeur calcule e 1.172603 1.1726039400531 1.172603940053178

Mais ces rsultats tr`s proches sont totalement faux ! La bonne valeur est e e -0.82739605994682136814116. . .A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 21/76

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

En intgrant par parties In, on a : e1

Petits probl`mes numriques : In = nIn1 1 (2/4) e e eIn =0 1

Petits probl`mes numriques : In = nIn1 1 (3/4) e e eQuestion : pourquoi un tel comportement numrique ? e

xnexdx nxn1(ex)dx0 1

= [xn(ex)]1 0 = (e1 0) + n 1 = + nIn1 e

xn1exdx0

Rponse : en passant de In1 ` In, lerreur numrique (accumulation des e a e erreurs de reprsentation et des premiers calculs) est multiplie par n. Lerreur e e numrique sur lvaluation de In croit donc comme n!. e e

Rq : 50! = 30414093201713378043612608166064768844377641568960512000000000000

Rappel : f (x)g(x)dx = f (x)g(x) A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

f (x)g (x)dx23/76

En transformant un peu la mthode, on a. . . e

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

24/76

Rcurrence rtrograde : In1 = e e

Petits probl`mes numriques : In = nIn1 1 (4/4) e e eIn + 1 e n

Pour en savoir plus. . .

en connaissant Ip avec p >> n.50! p! .

Gain : en partant de Ip, lerreur sur In sera proportionnelle ` an 60 59 58 57 56 55 54 53 52 51 50 Ip = 0.5 0.5 0.01446465735 0.00648040845 0.006454480166 0.006567261778 0.006686548267 0.006810290717 0.006938698739 0.007072040376 0.007210605414 0.007354706796 Ip = 1.0 1 0.02279799069 0.006621651387 0.006456915389 0.006567304501 0.00668654903 0.006810290731 0.006938698739 0.007072040376 0.007210605414 0.007354706796

Digital Arithmetic Milos Ercegovac et Tomas Lang 2003 Morgan Kaufmann ISBN : 1558607986 Arithmtique des ordinateurs e JeanMichel Muller 1989 Masson ISBN : 2225816891

Ip = 12345.0 12345 205.7561313 3.493627301 0.06657770245 0.007622055151 0.006705383863 0.006810633182 0.006938705081 0.007072040495 0.007210605417 0.007354706796

Rappel : valeur exacte 0.00735470679580018886393671 . . . Source : J.-M. MullerA. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 25/76 A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

26/76

Autres rfrences ee Livre de G. Guitel : Histoire compare des numrations crites, Flammae e e rion, 1975 Livre de G. Ifrah : Histoire universelle des chires, Robert Lafond, 1994 Livre collectif : Calcul et arithmtique des ordinateurs (Trait IC2), Hermes e e Sciences, 2004 (` para a tre) Livre collectif : Qualit des Calculs sur Ordinateur, Masson, 1997 e Numro spcial collectif de la revue Rseaux et syst`mes rpartis, calcue e e e e lateurs parall`les sur larithmtique des ordinateurs, Hermes, 2001 e e Document de Jean Vuillemin : Les Langages Numriques, ehttp://www.di.ens.fr/~jv/HomePage/pdf/langnum.pdf

Partie 2 Arithmtique ottante e

Un site web sur les bouliers :A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

http://www.ee.ryerson.ca:8080/~elf/abacus/history.html27/76 A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 28/76

Points abords dans cette partie e

Reprsentation ottante eUn nombre x est reprsent en virgule ottante de base par : e e son signe sx (codage sur un bit : 0 pour x positif et 1 pour x ngatif) e son exposant ex, un entier de k chires compris entre emin et emax sa mantisse mx de n + 1 chires tels que x = (1)sx mx ex avec mx = x 0 . x 1 x 2 x 3 x n

Probl`mes historiques e Reprsentation des nombres e Comportement des oprations e Proprits des nombres ottants ee Probl`mes de prcision e e Exemples

o` xi {0, 1, . . . , 1}. u

Pour des questions de prcision, on exige que la mantisse soit normalise, ceste e `-dire que son premier chire x0 soit dirent de 0. On a alors mx [1, [. Il a e e faut alors un codage spcial pour le nombre 0.29/76 A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 30/76

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

Au dbut tait le chaos. . . e eLes reprsentations ottantes taient pendant longtemps tr`s direntes les e e e e unes des autres selon les constructeurs de processeurs. machine Cray 1 DEC VAX HP 28 et 48G IBM 3090 2 2 2 2 10 16 16 16 n 48 96 53 56 12 6 14 28 emin 8192 8192 1023 127 499 64 64 64 emax 8191 8191 1023 127 499 63 63 63

Autres exemples de probl`mes e IBM System/370 en FORTRAN on avait 4 = 2

Sur certaines machines CDC et Cray on avait : x+y =y+x 0.5 x = x/2.0 Avec a, comment crire des programmes numriquement corrects de faon c e e c simple ? A lpoque, les constructeurs ne sintressent quaux formats de stockage des e e donnes et pas beaucoup aux proprits mathmatiques des units de calcul. . . e ee e eA. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 32/76

Probl`me : il ntait pas possible de faire raisonnablement des programmes et e e des biblioth`ques numriques portables ! e eA. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 31/76

Rvolution de 1985 : la norme IEEE-754 eApr`s de nombreuses annes de travail, une norme xe la reprsentation des e e e donnes et le comportement des oprations de base en virgule ottante. e e

Objectifs de la norme IEEE-754

permettre de faire des programmes portables Cette norme xe : les formats des donnes e les valeurs spciales e les modes darrondi la prcision des oprations de base e e les r`gles de conversion e En fait, il y a deux normes1 : ANSI/IEEE Standard for Binary Floating-Point Arithmetic en 1985 ANSI/IEEE Standard for Radix-Independent Floating-Point Arithmetic en 1987 (o` = 2 ou 10) u1

rendre les programmes dterministes dune machine ` une autre e a conserver des proprits mathmatiques ee e permettre/imposer larrondi correct faciliter la construction de preuves faciliter la gestion des exceptions

permettre/imposer des conversions ables

faciliter les comparaisons (unicit de la reprsentation, sauf pour 0) e e permettre un support pour larithmtique dintervalle e

ANSI : American National Standards Institute, IEEE : Institute of Electrical and Electronics Engineers33/76 A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 34/76

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

IEEE-754 : formats de baseEn base = 2, la normalisation de la mantisse implique que le premier bit est toujours un 1 qui nest pas stock physiquement, on parle de 1 implicite. e format double prcision e simple prcision e total 64 32 nombre de bits signe exposant mantisse 1 11 52 + 1 1 8 23 + 1double prcision

IEEE-754 : mantisse et fractionLa mantisse (normalise) du nombre ottant x est reprsente par n + 1 bits : e e e mx = 1 . x1 x2 x3 xn1 xnfx

o` les xi sont des bits. u La partie fractionnaire de mx est appele fraction (de n bits) : fx. On a alors : e mx = 1 + f x

simple prcision

On a aussi :63 MSB 56 48 40 32 position des bits 24 16 8 0 LSB

1 mx < 235/76 A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 36/76

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

IEEE-754 : exposantLexposant ex est un entier sign de k bits tel que : e emin e emax Direntes reprsentations sont possibles : complment ` 2, signe et magnitude, e e e a e biaise. Cest la reprsentation biaise qui est choisie. e e Ceci permet de faire les comparaisons entre ottants dans lordre lexicographique (sauf pour le signe sx) et de reprsenter le nombre 0 avec ex = fx = 0. e Lexposant stock physiquement est lexposant biais eb tel que : e e eb = e + b o` b est le biais. uA. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 37/76

IEEE-754 : exposant (suite)Les exposants non biaiss emin 1 et emax + 1 (respectivement 0 et 2k 1 en e biais) sont rservs pour zro, les dnormaliss et les valeurs spciales. e e e e e e e format SP DP taille k 8 11 biais b 127 (= 281 1) 1023 (= 2111 1) non-biais e emin emax 126 127 1022 1023 biais e emin emax 1 254 1 2046exposant rserv plage dexposants utilisables 127 126 125 000000000

exposant rserv math.

2

1

0

1

2

126 127 128 253 254 25511111101 11111110 11111111

machine

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

biais

100000001

200000010

125 126 127 128 12901111101 01111110 01111111 10000000 10000001

non biais

38/76

IEEE-754 : zro eLe nombre zro est cod en mettant tous les bits de lexposant et de la fraction e e ` 0 dans le mot machine. Le bit de signe encore libre permet davoir deux a reprsentations direntes du nombre zro : 0 et +0. e e e Le fait que zro soit sign est cohrent avec le fait quil y ait deux innis e e e distincts. On a alors : 1 = + +0 et 1 = 0

IEEE-754 : valeurs spciales e Les innis : et + Ils sont cods en utilisant le plus grand exposant possible et une fraction e nulle. Linni est sign. e e = emax + 1 et fx = 0

Not a Number : NaN Permet de reprsenter le rsultat dune opration invalide telle que 0/0, e e e 1 ou 0 . NaN est cod en utilisant le plus grand exposant possible e et une fraction non-nulle. Les NaN se propagent dans les calculs. e = emax + 1 et fx = 0 En simple prcision, on a donc : e 1 11111111 00000000000000000000000 + 0 11111111 00000000000000000000000 NaN 0 11111111 00000000000000000000100

La norme impose que le test 0 = +0 retourne la valeur vrai. En simple prcision, on a donc : e 0 +0 1 00000000 00000000000000000000000 0 00000000 0000000000000000000000039/76

(par exemple)

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

40/76

IEEE-754 : nombres dnormaliss e eLobjectif des nombres dnormaliss est duniformiser la rpartition des nombres e e e reprsentables autour de 0. En eet, le 1 implicite dans la mantisse implique e quil ny a pas de nombre reprsentable entre 0 et 2emin alors quil y en a 2n e emin emin+1 entre 2 et 2 .sans

IEEE-754 : modes darrondisSi a et b sont deux nombres exactement reprsentables en machine (ou nombres e machine) alors le rsultat dune opration r = a b nest, en gnral, pas e e e e reprsentable en machine. Il faut arrondir le rsultat. Par exemple, en base e e = 10, le nombre 1/3 nest pas reprsentable avec un nombre ni de chires. e La norme propose 4 modes darrondi : arrondi vers + (ou par exc`s), not (x) : retourne le plus petit nombre e e machine suprieur ou gal au rsultat exact x e e e arrondi vers (ou par dfaut), not (x) : retourne le plus grand e e nombre machine infrieur ou gal au rsultat exact x e e e arrondi vers 0, not Z(x) : retourne (x) pour les nombres ngatifs et e e (x) pour les positifs arrondi au plus pr`s, not (x) : retourne le nombre machine le plus e e proche du rsultat exact x (celui dont la mantisse se termine par un 0 e pour le milieu de nombres machine conscutifs, on parle darrondi pair) e41/76 A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 42/76

0 avec

2

e min

2

e min

+1

Les nombres dnormaliss scrivent (avec eb = 0) : e e e x = (1)sx (0.fx) 2eminA. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

IEEE-754 : modes darrondis (suite)nombres machine

0.000

0.001

0.010

dnormaliss

0.011

0.100

0.101

0.110

0.111

1.000

1.001

1.010

1.011

1.100

1.101

1.110

1.111

1.000

modes darrondi

vers +inf

vers inf

au plus prs

Proprit darrondi correct : soient a et b deux nombres machine, ee une des oprations (+, , , ) et le mode darrondi choisi (parmi les 4 modes IEEE). e Le rsultat fourni lors du calcul de (a b) doit tre (a th b). e e Le rsultat retourn doit tre celui obtenu par un calcul avec une prcision e e e e innie, puis arrondi. On a la mme exigence pour la racine-carre. e eA. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 43/76

1.001

IEEE-754 : modes darrondi en C#i n c l u d e < s t d i o . h> #i n c l u d e u t i l i e e e . h #i n c l u d e < f e n v . h> / g e s t i o n de l environnement f l o t t a n t / i n t main ( ) { c f l o a t a , b , sup , sdown ; / a = 2 2( 23) et b = 2( 24) / a . s . sig = 0; a . s . exp = 0+127; a . s . man = (2 0 e + grand dnormalis > 0 e e + petit dnormalis > 0 e e exposant emin e emax e = emin 1 e = emin 1 e = emax + 1 e = emax + 1 # bits total 32 64 k 8 11 fraction f 0 f >0 f =0 f =0 f >0 n 23 52 valeur (1.f ) 2e (0.f ) 2emin 0 NaN emax 127 1023 b 127 1023inf

Exemple de reprsentation simplie e es=1 e=1 e=2 s=0 e=3 reprsentation flottante (non IEEE)

+inf 101.01

14 12 10 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 81.10 1.01 1.00 1.00 1.112 1 0 1

121.10

141.11

signe 1 bit exposant 3 bits mantisse 3 bits fraction 2 bits

+inf 0 1 21.00

nombres reprsentables valeurs spciales nombres dnormaliss biais = 3

emin 126 1022

31.10 1.01 e=2

41.00 1.11

51.01 e=1

61.10

71.11

8

10

12

14

e=0

simple prcision e 3.40282347 1038 1.17549435 1038 1.17549421 1038 1.40129846 1045

double prcision e 1.7976931348623157 10308 2.2250738585072014 10308 2.2250738585072009 10308 4.9406564584124654 1032451/76

00.00 0.01 0.10 0.11

0.51.00 1.01 1.10 1.11

11.00

1.251.01

1.51.10

1.751.11

21.00

000 001 010 011 100 101 110 111

0 + e=2 e=1 e=0 e=1 e=2 e=3 rserv

0.0625

0.125

0.1875

0.3125

0.375

0.4375

0

0.25

0.5

0.625

0.75

0.875

1

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

52/76

Question histoire

Le Z3 : premier ordinateur avec des ottantsCr en 1941 par Konrad Zuse (19101995) ` Berlin. ee a

De quand date le premier ordinateur avec des ottants ?

photographie de la version reconstruite en 1961 Source : http://www.epemag.com/zuse/

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

53/76

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

54/76

Le Z3 : architecture et caractristiques eMemoryaddress (lamps) (keyboard)

Le Z3 : format des donnes et unit ottante e eFormat ottant : 1 bit de signe 7 bits dexposant reprsent en complment ` deux e e e a exposant ` -64 valeur 0 a exposant ` 63 inni a 14 bits de mantisse + 1 bit implicite Unit ottante : e addition/soustraction en 3 cycles (0.6 s/op) multiplication en 16 cycles (3.0 s/op) division en 18 cycles (3.4 s/op) racine carre (temps variable) e Autres instructions : lecture clavier, achage, load, store.55/76 A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 56/76

8data

Output

Input

Punched Tape Reader

225.33 Hertz

Control Unitinstr. data

Clock generator

22

Floatingpoint Unit 22 reg 1 reg 2

Taille Poids Frquence e Technologie Consommation

5 m 2 m 0.8 m 1000 kg 5.33 Hz lectrique ` relais (num. : 600, mm. : 1400) e a e 4000 W

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

Processeur Intel 486 : caractristiques e

Processeur Intel 486 : architecture

processeur 32 bits coprocesseur arithmtique intgr e e e commercialisation en 1989 frquences : 50, 33 et 25 MHz e nombres de transistors : 1 200 000 technologie : CMOS 0.8 ou 1.0 m surface : 81 mm2 alimentation : 5 V boitier : 168 PGA pipeline : 5 tages e cache L1 : 8 KB (4w SA, WT) UAL : 1

unit entire registres CTRL

unit flottante

pile de registres

CTRL

UAL ADD RAD MUL

bus de donnes

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

57/76

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

58/76

Reprsentations ottantes non-standard eExemple du processeur DSP (digital signal processor) SHARC 21160 dAnalog Devices o` il y a plusieurs formats ottants non-standard (et seulement un u compatible IEEE-754 simple prcision). esimple prcision (1,8,23) IEEE

Alternative aux ottants : la virgule xeDans bon nombre de processeurs DSP, on trouve un support matriel tr`s e e ecace (en vitesse et consommation dnergie) pour le calcul sur les rels ` e e a laide de multiples formats en virgule xe (16, 24 ou 32 bits).215

2

14

2

13

2

12

2

11

2

10

2

9

2

8

2

7

2

6

2

5

2

4

2

3

2

2

2

1

2

0

N16 ou Z16

s0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

1Q15

s1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

prcision tendue (1,8,31) IEEEQ16

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

s0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

format court (1,4,11) IEEE

8Q1627

2

6

2

5

2

4

2

3

2

2

2

1

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

s

39 MSB

32

24

16

8

0 LSB23 MSB 16 position des bits 8 0 LSB

position des bits

Mais la qualit numrique et la portablilit sont moindres quen IEEE-754 e e eA. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 59/76 A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 60/76

Rfrences sur les ottants IEEE-754 ee

Multiplication-addition fusionne (FMA) eLe FMA (pour fused multiply and add) existe depuis de nombreuses annes e dans les DSP et arrive de plus en plus dans les processeurs gnralistes. Cette e e opration eectue le calcul suivant en une seule instruction (au lieu de 2 sans e unit FMA). e r = (a + b c) Pour le moment le comportement de cette opration nest pas normalis en e e IEEE-754. En pratique les processeurs gnralistes qui poss`de une unit FMA e e e e retournent le meilleur rsultat possible : larrondi du rsultat thorique (arrondi e e e correct de (a + b c)) en eectuant un seul arrondi. Exemple dutilisation : valuation de polynmes e o p(x) = p0 + (p1 + (p2 + (p3 + p4 x) x) x) x

Documentation de W. Kahan (le p`re de la norme) ehttp://www.cs.berkeley.edu/~wkahan/ieee754status/

Documentation gnrale et scripts Java pour faire des conversions e ehttp://babbage.cs.qc.edu/courses/cs341/IEEE-754references.html

Version web de larticle de D. Goldberg dans ACM Computing Surveyshttp://docs.sun.com/source/806-3568/ncg_goldberg.html

Documentation du Centre Charles Hermite (Nancy)http://cch.loria.fr/documentation/IEEE754/

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

61/76

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

62/76

Exemples de proprits vraies en machine e eLaddition ottante et la multiplication ottante sont commutatives mais pas associatives (dpassements de capacit par exemple). La multiplication e e ottante nest pas distributive par rapport ` laddition. a Si aucun dpassement de capacit vers linni ou vers zro ne se produit e e e pendant les calculs, les proprits suivantes sont vries avec des nombres ee e e ottants et des oprations ottantes IEEE. e x0 = x 0 = x 1 = x 1 = x 2 = x/263/76

Exemples de proprits vraies en machine (suite) e eGrce ` la norme IEEE, en labsence de dpassement de capacit (vers + ou a a e e vers 0) et de division par 0, avec x et y deux nombres machine on a : 1 x x2 + y2 1

mme apr`s 5 erreurs darrondi. e e

x 1 = x 0.5 x = x

x1 = x

2 x = x x = 2x

( x) 0 si ( 0) = 0

x0

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

64/76

Probl`me dintgration numrique e e e2 ` A laide de la mthode des rectangles, essayons de calculer 1 dx en SP (le e x rsultat thorique est ln(2)), et ce pour plusieurs nombres de rectangles : e e1

Prcision et erreur darrondi eA chaque arrondi, il est possible de perdre un peu de prcision, on parle derreur e darrondi. Mme si une opration isole retourne le meilleur rsultat possible e e e e (larrondi du rsultat exact), une suite de calculs peut conduire ` dimportantes e a erreurs du fait du cumul des erreurs darrondi. Prcision en nombre de bits justes (pbits = log2(|errabsolue|)) : e a = 1.110 000 000 = 1.75 a = 1.101 111 111 = 1.748046875 |a a | = 0.000 000 001 = 0.00193125 pbits = 9

prcision absolue du rsultat

0.1

0.01

0.001

0.0001

1e05 10 100 1000 10000 100000 1e+06 nombre de rectangles 1e+07 1e+08

e Si a est la valeur exacte, alors a reprsente a avec un 1 bit faux (et pas 8). 9 9 En eet, |a a | = 2 , o` 2 est le poids du dernier bit de a. u65/76 A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 66/76

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

Phnom`ne de cancellation (ou limination) e e eSe produit lors de la soustraction de deux nombres tr`s proches. epartie entire partie fractionnaire 2 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Phnom`ne dabsorption e eSe produit lors de laddition de deux nombres ayant des ordres de grandeur tr`s dirents o` lon peut perdre le plus petit. e e u

... a b

partie entire

partie fractionnaire

2 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

... a

1 1 0 0 1 0 0 1 0 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 rsultat exact 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 renormalisation

1 1 0 0 1 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 1 0 1 1

1 0 0 0 0 0 0 0 1 1 1 1 ... b rsultat exact (a+b) 0 1 1 0 0 1 0 0 1 0 0 0 0 1 1 1 1 1 0 1 0 1 0 1 1 0 0 1 1 1 1 ... 1 1 0 0 1 0 0 1 0 0 0 0 1 1 1 1 1 0 1 0 1 0 1 1

(ab)

1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Lopration (a b) est exacte car les oprandes sont supposs exactes. Mais e e e si les oprandes sont elles-mmes des rsultats de calculs avec des erreurs e e e darrondi, les 0 ajouts ` droite (partie rouge fonc) sont faux. La cancellation e a e est dite catastrophique quand il ny a presque plus de chires signicatifs.A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 67/76

On parle mme dabsorption catastrophique dans certains cas. Exemple : en e simple prcision, avec a = 230 et b = 230 on a alors : e a b = 230A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

et donc

(a b)

a=0

68/76

Exemple du phnom`ne dabsorption e eCalculer numriquement, pour de grandes valeurs de N, la somme : e 1 i i=1 Rsultats dun programme C (ottant SP) sur un processeur Pentium4 : eN ordre 1N N 1 exacte 100000 1.209085e+01 1.209015e+01 1.209015e+01 1000000 1.435736e+01 1.439265e+01 1.439273e+01 10000000 1.540368e+01 1.668603e+01 1.669531e+01 100000000 1.540368e+01 1.880792e+01 1.899790e+01Nproblme physique

Les direntes sources derreur e

modle

algorithme rsolution erreurs de mthode

programme informatique erreurs darrondi

erreurs de mesure

erreurs de modlisation

` A notre niveau, on peut seulement travailler pour proposer des algorithmes numriques avec de plus petites erreurs de mthode et des implantations e e logicielles qui ma trisent mieux les probl`mes darrondi. e

En rouge les chires faux. Source : J.-M. MullerA. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 69/76

En pratique, pour obtenir de bons rsultats, il faut concevoir des algorithmes e en prenant en compte d`s le dbut les erreurs darrondi. e e

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

70/76

Des erreurs numriques qui causent des catastrophes e Le 25 fvrier 1991, ` Dharan en Arabie Saoudite, un missile (anti-missile) e a Patriot amricain loupe un missile Scud iraquien. Ceci provoqua la mort e de 28 personnes et plus dune centaine de blesss. e Perte dune plate-forme ptroli`re en mer du nord, au large de la Norv`ge, e e e le 23 aot 1991 : cot estim ` 700 M$. u u ea En 1982 ` la bourse de Vancouver, les calculs sur un indice nouveau, de a valeur initiale 1000.0, sont tronqus (plutt quarrondis). Apr`s 22 mois e o e la valeur de lindice calcul est de 520 au lieu de 1098.892. . . e Liens web :http://www.ima.umn.edu/~arnold/disasters/disasters.html http://ta.twi.tudelft.nl/nw/users/vuik/wi211/disasters.html http://www5.in.tum.de/~huckle/bugse.html

Explosion du vol Ariane 501

Le 4 juin 1996, lors de son premier vol, la fuse europenne Ariane 5 explose 30 e e secondes apr`s son dcollage causant la perte de la fuse et de son chargement e e e estim ` 500 M$. ea

Apr`s deux semaines denqute, un probl`me est trouv dans le syst`me de e e e e e rfrence inertiel. La vitesse horizontale de la fuse par rapport au sol tait ee e e calcule sur des ottants 64 bits. Dans le programme du calculateur de bord, il e y avait une conversion de cette valeur ottante 64 bits vers un entier sign 16 e bits. Malheureusement, rien ntait fait pour tester que cette conversion tait e e bien possible mathmatiquement (sans dpassement de capacit). . . e e e

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

71/76

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

72/76

Un petit programme rigoloQue fait le programme suivant, d ` Gentleman 3 ? ua#i n c l u d e < s t d i o . h> i n t main ( ) { float a = 1.0 , b = 1.0; w h i l e ( ( ( ( a + 1 . 0 ) a ) 1 . 0 ) == 0 . 0 ) a = 2.0 a ; w h i l e ( ( ( ( a + b ) a ) b ) != 0 . 0 ) b = b + 1.0; p r i n t f ( Gentleman : %f \n , b ) ; return 0; }W. M. Gentleman, More on algorithms that reveal properties of oating point arithmetic units, Communications of the ACM, vol. 17, n. 5, 1974.A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 73/76 3

Un petit programme rigolo (suite)Dans le cas de notre reprsentation de test (1, 3, 3), on a : ea=1 a=20 1 2 3

a=4

a=8 b=1 b=2

4

5

6

7

8

10

12

14

a 1.0 2.0 4.0 8.0 8.0 8.0

b 1.0 1.0 1.0 1.0 1.0 2.0

tests eectus e ((a + 1.0) a) 1.0 = ((2.0) a) 1.0 = (1.0) 1.0 = 0 ((a + 1.0) a) 1.0 = ((3.0) a) 1.0 = (1.0) 1.0 = 0 ((a + 1.0) a) 1.0 = ((5.0) a) 1.0 = (1.0) 1.0 = 0 ((a + 1.0) a) 1.0 = (( 8.0 ) a) 1.0 = (0.0) 1.0 = 1.0round(9)

((a + b) a) b = (( 8.0 ) a) b = (0.0) b = 1.0round(9)

((a + b) a) b = ((10.0) a) b = (2.0) b = 0.074/76

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

Un petit programme rigolo (n)Le programme de Gentleman retourne la base utilise par les units de calcul e e ottant du processeur (2 dans le cas de mon PC avec un Pentium III). Pourquoi ?

Fin

Questions ?

a/2

...

a2 a1

a

a+1 a+2

...

a+b

a+b

1

1

premi`re boucle : recherche de a reprsentable tel que a + 1 ne soit pas e e reprsentable e deuxi`me boucle : recherche de b reprsentable tel que a + b soit e e reprsentable e le rsultat est b = la base interne de lunit ottante e eA. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 75/76

Pour me contacter : [email protected] http://perso.ens-lyon.fr/arnaud.tisserand/ Laboratoire LIP. ENS Lyon. 46 alle dItalie. F-69364 Lyon cedex 07. e

Merci.A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e 76/76

Reprsentation des entiers relatifs eIl existe direntes reprsentations possibles pour les entiers signs : e e e signe et magnitude (valeur absolue)n2

A = (saan2 . . . a1a0) = (1)sa

ai2ii=0

Annexes

complment ` (la base) deux e an2

A = (an1an2 . . . a1a0) = an12n1 + biaise (souvent B = 2n1 1) e A = Amath + B ...

a i 2ii=0

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

A1

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

A2

Reprsentation des entiers relatifs (suite) evaleurs bits 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 signe/magnitude 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 complment 2 0 1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 biaise (B=7) 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8

Reprsentation des entiers relatifs (suite) ereprsentations entier 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 signe/magnitude complment 2 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 biaise (B=7) 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

1111 1110 1101 1100 1011 1010 1001 0000 0001 0010 0011 0100 0101 0110 0111

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

A3

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e

A4

Trace de lexcution du programme dintgration e e10 20 50 100 200 500 1000 2000 5000 10000 20000 50000 100000 200000 500000 1000000 2000000 5000000 10000000 20000000 50000000 8 . 4 1 0 3 6 5 e 02 3 . 9 6 4 6 6 3 e 02 1 . 5 3 3 2 2 2 e 02 7 . 5 8 3 2 0 3 e 03 3 . 7 6 9 5 7 8 e 03 1 . 5 0 1 3 8 3 e 03 7 . 5 0 5 4 3 6 e 04 3 . 9 3 8 6 9 4 e 04 1 . 5 7 1 7 9 4 e 04 6 . 1 9 3 1 1 3 e 05 2 . 4 5 3 3 4 6 e 04 2 . 4 4 0 7 9 1 e 04 2 . 5 5 6 4 2 4 e 04 2 . 6 8 8 1 5 0 e 04 2 . 4 0 6 9 5 3 e 03 9 . 1 4 4 4 2 7 e 03 1 . 0 5 0 5 3 2 e 02 3 . 3 7 4 9 9 2 e 03 2 . 1 5 0 5 8 9 e 02 3 . 0 6 8 5 2 8 e 01 1 . 9 3 1 4 7 2 e 01

Trace de lexcution du programme de Gentleman ea = 1.000000 b = 1.000000 boucle 1 64 i t r a t i o n ( s ) e a = a + 1.0 = (a + 1.0) a = (( a + 1.0) a) 1.0 = 18446744073709551616.000000 18446744073709551616.000000 0.000000 1.000000

boucle 2 b = 1.000000 a + b = 18446744073709551616.000000 ( a + b ) a = 0.000000 ( ( a + b ) a ) b = 1.000000 1 itration ( s ) eb = a + b = (a + b) a = (( a + b) a) b = Gentleman : 2 . 0 0 0 0 0 0A5 A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e A6

2.000000 18446744073709551616.000000 2.000000 0.000000

A. Tisserand INRIA LIP Arnaire Arithmtique des ordinateurs e e