Unité de calcul en virgule flottante

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

Une unité de calcul en virgule flottante (en anglais floating point unit, soit 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. Mais ils sont toutefois assez rares[réf. nécessaire]. Le plus souvent, le processeur utilise un microcode pour émuler 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 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[Quoi ?], 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]

Jusqu'au milieu des années 1990, il était normal que la FPU soit entièrement séparée du processeur dans les ordinateurs personnels. Cette FPU était alors placée dans un emplacement dédiée 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 une 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 une 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 incluses 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. Marius Cornea, Software implementations of division and square root operations for Intel Itanium processors, sur le site dl.acm.org, 2004.
  2. SPARCstation 1, sur le site nezetic.info.