# Unité de calcul en virgule flottante

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

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.
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. 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

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 :
* les FPU Intel 8087, 80287, 80387, 80487, utilisables respectivement avec les processeurs Intel 80386 et 80486SX (le 486DX avait un FPU intégré) ;
* les FPU Motorola 68881 et 68882, utilisés avec les processeurs Motorola 68020 et 68030, que l'on trouvait généralement dans des ordinateurs Macintosh ;
* les FPU de Weitek Corporation, certains modèles étant prévus pour fonctionner avec des processeurs Intel, d'autres avec des Motorola, ou même dans certaines SPARCstation de Sun Microsystems.
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.