Codage du décimal
Codage des nombres dans les ordinateurs
H1210 v1 Article de référence

Codage du décimal
Codage des nombres dans les ordinateurs

Auteur(s) : Daniel ETIEMBLE

Date de publication : 10 nov. 2023 | Read in English

Logo Techniques de l'Ingenieur Cet article est réservé aux abonnés
Pour explorer cet article plus en profondeur Consulter l'extrait gratuit

Déjà abonné ?

Présentation

1 - Introduction

2 - Représentation des nombres entiers

3 - Multiplication d’entiers signés

4 - Division d’entiers signés

5 - Représentation virgule fixe

6 - Représentation virgule flottante

7 - Flottants par bloc

8 - Codage du décimal

  • 8.1 - Décimal codé binaire
  • 8.2 - Instructions pour l’arithmétique décimale

9 - Flottants décimaux

10 - Format Posit

11 - Remarques pour conclure

Sommaire

Présentation

RÉSUMÉ

Les processeurs ne travaillant que sur des chiffres binaires, un codage est nécessaire pour représenter les différents types de nombres.  Les formats entiers et flottants traités par les processeurs généralistes sont présentés avec les opérations arithmétiques de base et la manière dont elles sont implantées dans les jeux d’instructions des processeurs. Des formats plus spécifiques (virgule fixe, décimal, flottants réduits, nombres Posit) sont aussi présentés et discutés.

Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.

Lire l’article

Auteur(s)

  • Daniel ETIEMBLE : Ingénieur de l’INSA de Lyon - Professeur émérite à l’université Paris Saclay

INTRODUCTION

Comme les processeurs et plus généralement les systèmes électroniques digitaux opèrent uniquement sur des chiffres binaires appelées bits, le traitement des nombres nécessite un codage.

Les différentes représentations impliquent plusieurs aspects :

  • la présentation des formats ;

  • les opérations arithmétiques de base (addition, soustraction, multiplication, division) avec les problèmes éventuels de dépassement de capacité ;

  • les instructions des jeux d’instructions pour les différentes opérations, avec les variantes selon les jeux d’instructions.

Les formats entiers sur n bits représentent des nombres entiers non signés ou signés. Si les nombres positifs ont toujours la même représentation, différentes représentations des nombres négatifs ont été définies : signe et valeur absolue, complément à 1, complément à 2, cette dernière étant la seule utilisée depuis des dizaines d’années. Pour les opérations sur les entiers, le nombre de bits en sortie est différent du nombre de bits en entrée. Une addition n bits + n bits fournit un résultat sur n+1 bits et une multiplication n bits * n bits fournit un résultat sur 2n bits. Le traitement des retenues (addition) ou des n bits de poids fort (multiplication) pose des problèmes à la fois pour les instructions scalaires et pour les instructions SIMD des différents jeux d’instructions.

Les formats flottants simple précision (32 bits) et double précision (64 bits) ont été normalisés depuis le milieu des années 1980 (IEEE 754). Ils sont présentés ainsi que des formats réduits 16 bits et 8 bits plus récents, utilisés dans les réseaux de neurones profonds. Les formats flottants par bloc et les flottants décimaux sont aussi présentés. Le format Posit, proposé par J.L. Gustafson comme alternative à l’utilisation des formats flottants IEEE 754, est présenté et discuté.

Alors que les formats entiers et flottants existant depuis des dizaines d’années sont utilisés dans les processeurs généralistes, des modèles de calcul comme ceux des réseaux de neurones et les problèmes de consommation énergétique ont conduit à l’apparition de formats réduits qui peuvent être ajoutés à certains jeux d’instructions d’usage général ou implantés dans des processeurs spécialisés, des IP, des FPGA, etc.

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 93 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v1-h1210

Lecture en cours
Présentation

Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

8. Codage du décimal

Le codage du système décimal a pour objectif d’avoir des calculs décimaux exacts, sans les erreurs d’arrondi inévitables lorsque des valeurs exprimées en base 10 doivent être représentées avec le système binaire.

8.1 Décimal codé binaire

Le décimal codé binaire consiste à coder sur 4 bits les chiffres 0 à 9 (tableau 5).

Il existe deux formats : le BCD compressé où deux chiffres BCD utilisent un seul octet et le BCD décompressé, avec un chiffre BCD par octet, précédé par 0000.

HAUT DE PAGE

8.2 Instructions pour l’arithmétique décimale

L’arithmétique décimale n’est pas forcément disponible en matériel. Par exemple, Intel fournit une bibliothèque logicielle pour le calcul décimal (Intel® Decimal Floating-Point Math Library). Mais certains jeux d’instructions fournissent des instructions particulières qui permettent de faciliter le calcul décimal. Dans le jeu d’instructions IA-32 d’Intel, il existe quatre instructions d’ajustement pour l’addition, la soustraction, la multiplication et la division.

HAUT DE PAGE

8.2.1 Addition

L’ajustement pour l’addition fonctionne de la manière suivante, A et B étant des chiffres décimaux codés en BCD (instruction AAA) :

  • si A + B < 10, alors la somme A + B délivre la somme correcte. Par exemple 0111 + 0010 = 1001 (7 + 2 = 9) et il n’y a pas de retenue ;

  • si A + B ≥ 10, on calcule A + B + 6 qui fournit la somme correcte avec deux chiffres décimaux. Par exemple, 0101 + 1000 + 0110 = 1 0011 (5 + 8 = 13).

HAUT DE PAGE

8.2.2 Soustraction

L’instruction AAS suit la soustraction binaire de deux chiffres BCD non compactés :

    ...

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 94 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


Lecture en cours
Codage du décimal

Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

Sommaire
Sommaire

BIBLIOGRAPHIE

  • (1) - HARRIS (D.), OBERMAN (S.), HOROWITZ (M.) -   SRT Division: Architectures, Models, and Implementations (PDF) (Technical report). Stanford University,  -  9 September 1998.

  • (2) -    -  IEEE Standard for Floating-Point Arithmetic, https://irem.univ-reunion.fr/IMG/pdf/ieee-754-2008.pdf

  • (3) -   *  -  Intel® Advanced Vector Extensions 512 – FP16 Instruction Set for Intel® Xeon® Processor Based Products.

  • (4) -    -  BFloat16 processing for Neural Networks on Armv8-A, https://comunity.arm.com/arm-community-blogs/b/ai-and-ml-blog/posts/bfloat16-processing-for-neural-networks-on-armv8_2d00_ahttps://www.ti.com/lit/an/spra948/spra948.pdf

  • (5) - ROUHANI (R.) et al -   Pushing the Limits of Narrow Precision Inferencing at Cloud Scale with Microsoft Floating Point,  -  34th conference on Neural Information Processing Systems (NeuroIPS 2020à, Vancouver, Canada. https://www.microsoft.com/en-us/research/publication/pushing-the-limits-of-narrow-precision-inferencing-at-cloud-scale-with-microsoft-floating-point

  • ...

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 95 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

Ressources documentaires

Processeurs à grand nombre de cœurs (manycores)

Cet article présente les processeurs à très grand nombre de cœurs (manycores), avec les caractéristiques ...

Architecture des ordinateurs : CPU et coprocesseurs/accélérateurs

Les différents coprocesseurs/accélérateurs utilisés pour accélérer l'exécution des programmes dans ...

Hiérarchie mémoire : les caches

Entre le ou les processeurs d'un ordinateur et les organes de stockage existe une hiérarchie de ...

Processeurs : exécution pipeline des instructions

Cet article présente les caractéristiques essentielles de l'exécution pipeline des instructions dans les ...