Les nombres à virgule flottante

Slides:



Advertisements
Présentations similaires
Architecture de machines Codage des informations
Advertisements

Le Concept du programme enregistré
Architecture de machines Le microprocesseur
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
Plan du cours : 2ème Partie
Le codage de l ’information
Le Concept du programme enregistré
Architecture des Ordinateurs
Les types de codage Le complément à 2 : Nombres entiers
2.Les différentes architectures (Louis)
Les microprocesseurs A. Objectifs de la séquence:
Représentation numérique de l’information
Partie Informatique Algorithmique Introduction A. LOTFI
Architecture de base d’un ordinateur
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Structure de la famille de DSP Motorola 56300
B.Shishedjiev - Informatique
Le codage des nombres en informatique
PROGRAMMATION SCIENTIFIQUE EN C
Formats des nombres réels
Arithmétique des “computers”
LES SYSTEMES AUTOMATISES
Principes de programmation
Architecture des ordinateurs
Annexe A: Numérotation binaire
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI Jean-Jacques DUMÉRY -1-
Chapitre 1 NOMBRES RELATIFS 1) Multiplication 2) Division.
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
L'Unité centrale (CPU) Le CPU doit être rapide (mesuré en temps de CPU) UNITE DE CONTROLE Générer les signaux de control/temps Contrôler le décodage/exécution.
Informatique, Ordinateur & Programme ...
Codage des nombres réels avec la norme IEEE-754
Ecrire des expressions arithmétiques et logiques
<< RESISTANCES >>
JavaScript.
Le processeur Xtensa de Tensilica: paramétrage et extensibilité
Cours de Structure et Technologie des composants d’ordinateurs
Structures de stockage
Le codage des nombres en informatique
Le calcul mental _ février 2010 ARGENTEUIL SUD
L’écriture des grands nombres: les puissances de 10
Un survol du language C.
Codage des nombres en informatique : le système binaire.
3-Présentation d’un µP simple
Java Les primitives 1. Représentation d’éléments La représentation de n’importe quoi en informatique (chiffres, nombres, lettres, etc.) est composée de.
Projet de Fin d’Etudes – Optimisation SSE 1/28. 1) Présentation du Stage 2) Les instructions SSE 3) Algorithme DSP Audio Conclusion 2/28 Projet de Fin.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Microcontrôleurs PIC. 1ère séance Présentation du PIC16F876 Outils de programmation du PIC Le langage C Exemples d’applications simples 2ème séance Présentation.
1 INFOR 101 Chapitre 4 Marianne Morris. 2 Révision de chapitre 3 Algorithmes Sequential Search Selection Sort Binary Search Ordre de magnitude  (n) Mesurer.
INFOR 101 Chapitre 5 Marianne Morris.
Progression - Quelques rappels
Introduction au langage C Les entrées-sorties
Introduction aux systèmes numériques
Exécution d ’un programme en 6809: Présentation du programme
6 + (-12) = C’est une addition de 2 nombres de signes contraires, le résultat : (-6) - a pour signe, le signe du nombre le plus éloigné de zéro : ici -
Représentation digitale des données Trois formats de base: 1) Décimale: base 10 (Une constante i.e dimension d ’1 vecteur) 2) Binaire: base 2 ( Mask, set/reset.
Introduction à la programmation (420-PK2-SL) cours 1
Codage de l’information
Soit n un nombre entier supérieur ou égal à 1.
Création et Optimisation de Modules Audio avec les instructions SSE
Chapitre 4 La représentation des nombres.
Chapitre 3 L’accès aux données.
- 5  3 = ? - 5  ( - 9) = ? 6  (- 9) = ? (– 35)  (– 2) = ?
Chapitre 4b La représentation des nombres.
Architecture des ordinateurs
CHAPITRE 10 Les sous-programmes 1. Sous-programme Suite d’instructions appelée de manière répétitive Par un programme Par plusieurs programmes distincts.
Introduction au langage C
A. Lebrun. La base 2 Un nombre peut se représenter en base deux par une suite de 0 ou de 1. Chaque bit a un poids qui dépend de son rang Le format n impose.
Département Informatique Codage de l’information Laurent JEANPIERRE IUT de CAEN – Campus 3.
Codification et représentation de l’information Enseignant: Mahseur mohammed Groupe FB: mi2016ua1 Chaine YT: Cours informatique.
Transcription de la présentation:

Les nombres à virgule flottante Chapitre 11 Les nombres à virgule flottante

Représentation Il existe un nombre fini d’entiers dans l’intervalle 𝑚𝑖𝑛, 𝑚𝑎𝑥 Il y a cependant une infinité de nombres réels dans le même intervalle Comment représenter une infinité de nombres? On approxime la plupart des nombres réels de l’intervalle Cette approximation doit permettre Une bonne approximation des nombres réels non représentables D’exprimer de très grands nombres réels D’exprimer de très petits nombres réels

Représentation Les points flottants Une mantisse ( 𝑑 1 𝑑 2 … 𝑑 𝑛 ) Une base (𝐵) Un exposant (𝑒) ±0, 𝑑 1 𝑑 2 … 𝑑 𝑛 × 𝐵 ±𝑒 Un ensemble F de nombres virgule flottante s’exprime 𝐹=(𝐵, 𝑙, 𝑚, 𝑀) 𝐵 est la base 𝑙 est le nombre de symboles de la mantisse (0≤ 𝑑 𝑖 ≤𝐵−1) 𝑚 est l’exposant minimal 𝑀 est l’exposant maximal −𝑚≤𝑒≤𝑀

F=(B, l, m, M) Nombre virgule flottante normalisé Nombre pour lequel 𝑑 1 ≠0 La normalisation permet de mieux estimer la précision 0,0123× 10 3 est non normalisé 0,123× 10 2 est normalisé 0,0123× 10 3 0,1234× 10 2

F=(B, l, m, M) Valeur absolue du plus petit nombre 𝑚𝑖𝑛 Valeur absolue du plus grand nombre 𝑚𝑎𝑥 𝑚𝑖𝑛 = ±0,10…0× 𝐵 −𝑚 0,1× 𝐵 −𝑚 𝐵 −1 × 𝐵 −𝑚 𝐵 − 𝑚+1 𝑚𝑎𝑥 = ±0, 𝐵−1 𝐵−1 … 𝐵−1 × 𝐵 𝑀 0, 𝐵−1 𝐵−1 … 𝐵−1 × 𝐵 𝑀 1− 𝐵 −𝑙 × 𝐵 𝑀 𝐵 𝑀 (1− 𝐵 −𝑙 )

F=(B, l, m, M) Précision relative Cardinalité Un nombre à virgule flottante est une approximation d’un réel Il y a nécessairement perte de précision Il y a une erreur lors du calcul, versus le même calcul avec des réels L’estimation de la précision relative est 𝐵 1−𝑙 Cardinalité On compte le nombre zéro Autant de négatifs que de positifs 2 𝐵−1 𝐵 𝑙−1 𝑀+𝑚+1 +1 B-1 possibilité pour le premier chiffre de la mantisse Valeurs possibles pour l’exposant B possibilités pour chacun des l-1 autres chiffres

F=(B, l, m, M) Exemple : F=(2, 3, 1, 2) Distance entre deux éléments, dans un intervalle de puissance de 2 voisines 𝑚𝑖𝑛 = 𝐵 − 𝑚+1 𝑚𝑖𝑛 = 2 −2 = 1 4 𝑚𝑎𝑥 = 𝐵 𝑀 ×(1− 𝐵 −𝑙 ) 𝑚𝑎𝑥 = 2 2 × 1− 2 −3 = 2 2 − 2 −1 =3,5 2 𝐵−1 𝐵 𝑙−1 𝑀+𝑚+1 +1 2× 2−1 2 2 2+1+1 +1=33 3 2 1 -1 -2 -3 [ 2 −2 , 2 −1 ] Il faut ajouter 0,001× 2 −1 soit 2 −3 × 2 −1 soit 2 −1−3 [ 2 −1 , 2 0 ] Il faut ajouter 0,001× 2 0 soit 2 −3 × 2 0 soit 2 0−3 [ 2 𝑖−1 , 2 𝑖 ] Il faut ajouter 0,001× 2 𝑖 soit 2 −3 × 2 𝑖 soit 2 𝑖−𝑙

Représentation interne Exemple : F=(10, 5, 9, 9) Mantisse Exposant (0 à 9) Signe de l’exposant Signe de la mantisse −0,73518× 10 5 →10573518 0,738× 10 −3 →01373800 Maximum : 0,99999× 10 9 = 1− 10 −5 × 10 9 ≅ 10 9 Minimum : 0,10000× 10 −9 = 10 −10

Représentation interne Exemple : F=(10, 5, 9, 9) Mantisse Exposant biaisé(00 à 99) Signe de la mantisse On ajoute un biais de 50 à l’exposant −0,73518× 10 5 →15573518 0,738× 10 −3 →04773800 Maximum : 0,99999× 10 49 = 1− 10 −5 × 10 49 ≅ 10 49 Minimum : 0,10000× 10 −50 = 10 −51

Norme IEEE754 S’appuie sur la représentation précédente Exposant biaisé (sur 8 bits)  0≤𝑒≤255 0 et 255 sont des valeurs réservées 254 valeurs possibles  le biais est donc de 127 Précision Taille Signe Exposant biaisé Mantisse Simple 32 bits 1 bit 8 bits 23 bits Double 64 bits 11 bits 52 bits Quadruple 128 bits 15 bits 112 bits s e f S Exposant Mantisse 31 30 23 22

Norme IEEE754 Valeur d’un nombre normalisé Si 𝑠 est 0, le -1 disparait, sinon, il reste 𝑠=0 →nombre positif; 𝑠=1 →nombre négatif Le nombre est normalisé, il commence toujours par 1 Inutile de le représenter La mantisse est seulement les chiffres après la virgule −1 𝑠 × 2 𝑒−127 ×1,𝑓

Norme IEEE754 Valeur d’un nombre non normalisé (e=0) Le nombre n’est plus normalisé, il ne commence donc plus nécessairement par 1 On ne peut plus le cacher −1 𝑠 × 2 −126 ×0,𝑓 −1 𝑠 × 2 𝑒−127 ×1,𝑓 devient −1 𝑠 × 2 0−127 ×𝑏,𝑓= −1 𝑠 × 2 −127 × 2 1 × 𝑏,𝑓× 2 −1 −1 𝑠 × 2 −126 ×0,𝑏𝑓 (bf devient la nouvelle mantisse)

Norme IEEE754 Représentation de 0 Représentation de l’infini 𝑒=0 𝑓=0 𝑒=255 Le bit de signe indique si c’est ∞ ou −∞ Obtenu, entre autres, lors d’une division par 0

Norme IEEE754 Représentation de NaN (Not a Number) 𝑒=255 𝑓≠0 Si le premier bit de la mantisse est 1 Provoque une erreur d’exécution 0 Ne provoque pas d’erreur, la valeur est propagée Obtenu lors d’opération comme 0 0 ; ∞−∞; ∞ ∞ ; 0×∞; −𝑥

Norme IEEE754 Valeur minimale et maximale Nombres normalisés Nombres non normalisés 𝑚𝑎𝑥 = 0 11111110 11…11 |𝑚𝑖𝑛| = 0 00000001 00…00 = 2 254−127 ×1,11… 1 2 = 2 1−127 ×1,000…00 = 2 127 ×(2− 2 −23 ) = 2 −126 ×1 ≈ 2 128 = 2 −126 ≈3,4028× 10 38 𝑚𝑎𝑥 = 0 00000000 11…11 |𝑚𝑖𝑛| = 0 00000000 00…01 = 2 −126 ×0,11… 1 2 = 2 −126 ×0,000…01 = 2 −126 ×(1− 2 −23 ) = 2 −126 × 2 −23 = 2 −126 − 2 −149 = 2 −149 ≈ 2 −126

Unité virgule flottante Possède 32 registres simple précision F0 à F31 32 registres double précision F0, F2, …, F62 16 registres de quadruple précision F0, F4, …, F60 Tous les registres sont globaux et accessibles en tout temps Ils ne font partie d’aucune fenêtre de registres

Unité virgule flottante Un registre FSR (64 bits) Nom Bits Description 38:63 réservé fcc3 36:37 codes de condition fcc2 34:35 fcc1 32:33 RD 30:31 direction de l’arrondi 28:29 TEM 23:27 erreurs détectables NS 22 représentation non standard 20:21 ver 17:19 version de l’unité ftt 14:16 cause de l’exception qne 13 interruptions logiques en attente 12 fcc0 10:11 aexc 5:9 exceptions accumulées cexc 0:4 instruction ayant causé une exception

Unité virgule flottante Un registre FSR (64 bits) Le champ d’intérêt est le fcc0 (bits 10 et 11) 𝑓𝑐𝑐0=0 1er opérande = 2ème opérande 𝑓𝑐𝑐0=1 1er opérande < 2e opérande 𝑓𝑐𝑐0=2 1er opérande > 2e opérande 𝑓𝑐𝑐0=3 opérande non comparables (Nan)

Instructions On peut aussi charger des valeurs de la mémoire dans les registres virgule flottante En fait, on ne peut pas copier directement la valeur d’un registre R vers un registre F! On passe par la mémoire ld Charge une valeur simple précision ldd Charge une valeur double précision ldq Charge une valeur quadruple précision st Stocke une valeur simple précision std Stocke une valeur double précision stq Stocke une valeur quadruple précision ld [%l1+%l2], %f3

Instructions Les instructions arithmétiques sont légèrement modifiées pour prendre en charge les virgules flottantes Voir annexe C.14 du manuel pour la liste complète On peut aussi faire des branchements sur les codes condition de l’unité virgule flottante On ajoute un « f » devant les instructions normales de branchement « bne » devient « fbne »

Instructions Il peut aussi être pratique de changer le format d’une valeur Par exemple, si la valeur « 48 » est en mémoire, et qu’on veut la multiplier par la valeur « 1,465 » Il faut transformer la valeur « 48 » d’un entier à un nombre virgule flottante 𝐹𝛼𝑇𝑂𝛽 | 𝛼,𝛽= 𝑖, 𝑠,𝑑,𝑞 𝑒𝑡 𝛼≠𝛽 i entier s  simple précision d  double précision q  quadruple précision fitos %f0, %f1

Instructions Pour déclarer des données en virgule flottante .align 4 .single 0r12.34 .align 8 d: .double 0r56.78 .align 16 q: .quad 0r90.12 .align 4 s: .skip 4 .align 8 d: .skip 8