Virgule fixe vs virgule flottante : plage, précision, matériel
En virgule fixe, la position de la virgule est fixée à l’avance et les nombres fractionnaires sont traités avec les mêmes suites de bits et les mêmes opérateurs que les entiers. Les circuits sont petits et consomment peu, d’où son usage dans les DSP, les microcontrôleurs sans unité de calcul flottant et les calculs entiers de l’inférence d’IA. La virgule flottante représente un nombre par un signe, un exposant et une mantisse, et déplace la virgule grâce à l’exposant : elle couvre ainsi une plage de valeurs très étendue avec une précision relative presque constante. Ses opérateurs sont plus grands, mais comme on n’a pas à se soucier de l’alignement des positions, elle est la norme pour le calcul général et l’entraînement d’IA.
| Critère | Virgule fixe | Virgule flottante |
|---|---|---|
| Représentation | Une suite de bits entière lue avec une échelle fixée à l’avance (2 puissance −n). Notée par exemple Q15 | Trois champs, signe, exposant et mantisse : (−1)^signe × 1,mantisse × 2^(exposant − biais). Définie par la norme IEEE 754 |
| Plage représentable (exemple) | En Q15 (16 bits) : de −1 à 1 − 2⁻¹⁵ | En simple précision (32 bits) : environ 10⁻³⁸ à 10³⁸. Encore plus près de 0 avec les nombres dénormaux |
| Précision | Pas constant (erreur absolue constante). Plus la valeur est petite, plus l’erreur relative est grande | Précision relative presque constante (environ 7 chiffres en simple précision). Plus la valeur est grande, plus le pas est grand |
| Opérateurs | Additionneurs et multiplieurs entiers tels quels | Circuits nécessaires pour comparer les exposants, aligner les mantisses, normaliser et arrondir |
| Taille des circuits et consommation | Faibles. À largeur égale, bien moins qu’en virgule flottante | Importantes. Souvent plusieurs fois plus de surface et d’énergie qu’un opérateur entier de même largeur |
| Traitement du dépassement | En complément à deux, la valeur repart du côté opposé. On l’évite par une arithmétique saturante ou des accumulateurs dotés de bits supplémentaires (bits de garde) | Au-delà de la plus grande valeur représentable, le résultat devient ±infini. 0 ÷ 0 et autres cas donnent NaN |
| Mise à l’échelle | Le programmeur estime la plage des valeurs et conçoit les décalages et la position de la virgule à chaque opération | L’exposant s’ajuste automatiquement, on n’a presque pas à s’en soucier |
| Reproductibilité des résultats | Les résultats sont facilement identiques au bit près | L’ordre des additions modifie légèrement le résultat (l’associativité n’est pas respectée) |
| Domaines d’utilisation | DSP, petits microcontrôleurs sans unité flottante, traitement du signal sur FPGA et ASIC, calculs entiers de l’inférence d’IA (INT8, par exemple) | Calcul général sur PC et serveurs, calcul scientifique (double précision), graphisme, entraînement d’IA (FP32, BF16, FP16, FP8) |
Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.