Aller au contenu

Unité de calcul en virgule flottante

Un article de Wikipédia, l'encyclopédie libre.
Le Motorola 68882, un coprocesseur arithmétique.

Une unité de calcul en virgule flottante (UVF, en anglais floating-point unit, FPU) est une partie d'un processeur, spécialement conçue pour effectuer des opérations sur des nombres à virgule flottante.

Opérations

[modifier | modifier le code]

Tous les processeurs incorporent au moins l'addition, la soustraction et la multiplication. L'opération fused multiply–add (multiplication suivie d'une addition, avec un seul arrondi), requise par la norme IEEE 754 dans sa révision de 2008, est de plus en plus implémentée. Elle est très utile pour accélérer certains algorithmes. La plupart des processeurs incorporent également la division et la racine carrée, mais ces opérations peuvent aussi être implémentées efficacement en logiciel, comme sur Itanium[1].

Quelques systèmes sont aussi capables d'exécuter des calculs plus complexes, comme des exponentielles ou des fonctions trigonométriques (comme les cosinus), mais de manière peu précise dans certains domaines[2]. Le plus souvent, le processeur utilise un microcode pour implémenter ces opérations. Cette microprogrammation est plus lente qu'un câblage, mais bien plus économique, moins dissipatrice d'énergie et surtout moins complexe. Pour donner un exemple, le Pentium d'Intel avait une unité flottante microprogrammée. On peut d'ailleurs remarquer que le remplissage incomplet d'une table du microcode était à l'origine de son fameux bug.

Les opérations en virgule flottante comme l'addition et la multiplication sont typiquement pipelinées, mais les opérations plus compliquées, comme la division, peuvent ne pas l'être.

Quelques systèmes peuvent même avoir un, voire plusieurs circuit(s) dédié(s) à la division de nombre à virgule flottante.

Coprocesseurs

[modifier | modifier le code]

Du fait des limites de la technologie de l'époque, jusqu'au milieu des années 1990, il était normal que le FPU fût entièrement séparé du processeur dans les ordinateurs personnels. Ce FPU était alors placé dans un emplacement dédié sur la carte mère de l'ordinateur. Elle constituait une option facultative et onéreuse, achetée seulement si nécessaire pour accélérer ou permettre d'utiliser des applications qui exigeaient un FPU. Ont ainsi été distribuées sous forme de coprocesseurs :

Toutes les applications n'étaient pas capables de tirer parti de ces coprocesseurs. Les applications d'illustration vectorielle comme CorelDRAW, bien que fortement consommatrices de fonctions trigonométriques, n'utilisaient pas la virgule flottante, mais des approximations ingénieuses travaillant sur des valeurs entières (car de toute façon on ne cherche jamais à adresser plus précisément que le pixel d'écran). Aussi l'éditeur canadien précisait-il bien dans sa documentation qu'il ne fallait pas chercher à accélérer le produit en achetant un coprocesseur flottant. D'autres logiciels (comme 3D Studio Max) nécessitaient quant à eux obligatoirement un FPU, disponible sur les versions professionnelles des ordinateurs de l'époque. Les ordinateurs sans FPU pouvaient, eux, utiliser un émulateur de FPU de façon à faire tourner le logiciel, mais avec des performances très dégradées.

De nos jours, les FPU sont inclus dans les processeurs d'ordinateurs personnels, l'échelle d'intégration le permettant pour un coût à peu près nul, tandis que les câblages manuels (ou assistés) coûtent pour leur part plus cher que l'impression d'un circuit intégrant tout dès le départ.

Notes et références

[modifier | modifier le code]
  1. (en) Marius Cornea, « Software implementations of division and square root operations for Intel Itanium processors », sur dl.acm.org, (consulté le ).
  2. (en) Marius Cornea, « FSIN Documentation Improvements in the "Intel 64 and IA-32 Architectures Software Developer's Manual" », sur software.intel.com, (consulté le ).
  3. SPARCstation 1, sur le site nezetic.info.

Articles connexes

[modifier | modifier le code]