Présentation et objectifs généraux
Mots clés : arithmétique des
ordinateurs, virgule flottante, fiabilité numérique,
fonctions élémentaires, opérateurs asynchrones, circuits
intégrés numériques, FPGA, calcul formel .
Résumé :
L'objectif du projet ARÉNAIRE est de
contribuer à l'élaboration et à la consolidation des
connaissances dans le domaine de l'arithmétique des
ordinateurs. Nos travaux se situent sur deux axes
privilégiés : d'une part l'utilisation avertie des
normes existantes pour construire des algorithmes fiables
et les prouver ; d'autre part la mise au point, plus
en amont, des unités arithmétiques du futur. Fiabilité,
précision, rapidité et (à plus long terme) faible
consommation sont les principaux objectifs du projet.
Le but scientifique du projet est de participer à
l'amélioration de l'arithmétique disponible sur les
microprocesseurs et les calculateurs dédiés. Cette
amélioration peut porter aussi bien sur la rapidité des
calculs que sur leur fiabilité et leur précision, ainsi que
sur des paramètres plus technologiques tels que la
consommation d'énergie dans les circuits intégrés.
L'arithmétique des ordinateurs a connu un changement
majeur en 1985 avec l'apparition de la norme
IEEE-754, qui spécifie les formats de
représentation des nombres et les opérations arithmétiques en
virgule flottante. Cette norme s'est rapidement imposée. Une
des principales exigences de la norme est liée aux modes
d'arrondi. La somme, le produit, le quotient de deux nombres
qui s'écrivent exactement en virgule flottante (on dira des
« nombres machine » pour simplifier) ne sont en
général pas des nombres machine. Il faut donc les
arrondir. La norme IEEE-754 demande
que l'utilisateur puisse choisir entre 4 modes d'arrondi
possibles : au plus près -- c'est le mode par défaut --
, vers le haut, vers le bas ou vers zéro. Si a et b
sont des nombres machine, le résultat d'une des quatre
opérations arithmétiques a
b
doit être le nombre machine qui serait obtenu si on avait
d'abord fait le calcul avec une précision infinie
avant d'arrondir avec le mode d'arrondi demandé par
l'utilisateur. Cette exigence est appelée « arrondi
exact ».
La plupart des micro-ordinateurs et des stations de
travail actuels suivent la norme IEEE et les
conséquences de cette adhésion sont importantes :
- on peut développer des algorithmes et des
preuves de correction qui utilisent la
spécification des unités de calcul comme cela a été fait
par William Kahan et ses élèves à l' University of
California de Berkeley [Kah99] ;
- en jouant sur les différents modes d'arrondi, il est
possible pour l'utilisateur d'obtenir un minorant ou un
majorant certifié du résultat et de faire ainsi de l'
arithmétique d'intervalles.
L'exemple suivant illustre les avantages que l'on peut
retirer de cette démarche. On prouve [CHGM99]
que (sauf dépassements de capacité), si x est exactement représentable en
flottant et si z est une
approximation au poids du dernier bit près de 1/x, alors la suite d'opérations
 |
= |
on(1 - xz) |
|
z' |
= |
on(z + z) |
où
on(a +
bc) signifie que le calcul a + bc est fait en arrondi au
plus près, donne une valeur z' égale à l'arrondi au plus près de
1/x. Ainsi, en utilisant
l'arrondi correct de la multiplication-accumulation, on peut
fournir des algorithmes de division fournissant un arrondi
correct sans utiliser d'arithmétique à plus grande précision
pour les calculs intermédiaires. C'est cette méthode qui sera
utilisée pour effectuer des divisions sur l'architecture
IA64, développée conjointement par Intel et HP.
La plupart des travaux actuels en arithmétique des
ordinateurs se situent autour des deux thèmes
suivants :
- Thème 1 : Les opérateurs arithmétiques
étant donnés, les utiliser « au mieux ». Par
exemple, les « axiomes » qui constituent les
spécifications de la norme IEEE (ou d'autres
spécifications) étant donnés, il faut construire des
algorithmes et les preuves de correction de ces algorithmes
qui utilisent au mieux chaque opportunité de performance.
Nous mettons au point une arithmétique en précision
multiple qui utilise, au lieu d'entiers, des flottants
IEEE comme « briques de base ».
Nous démarrons une activité d'arithmétique en calcul
formel. Dans le cadre de l'ARC INRIA « AOC »
(Arithmétique des Ordinateurs Certifiée), nous travaillons
avec des membres des projets LEMME (Sophia) et POLKA
(Lorraine) à la preuve de propriétés et d'algorithmes en
virgule flottante. Dans le cadre d'un contrat entre l'INRIA
et ST Microelectronics, nous avons proposé des algorithmes
de division par une constante utilisant les opérateurs
disponibles sur un circuit DSP construit par ST.
- Thème 2 : Concevoir et/ou valider des
opérateurs, ou de manière peut-être plus générale,
concevoir d'autres « briques de base » que celles
de l'arithmétique IEEE. La norme
IEEE ne spécifie que les quatre opérations
arithmétiques et la racine carrée, et nous travaillons à
une implantation rigoureuse et intelligente d'autres
fonctions en virgule flottante. Nous travaillons également
sur d'autres systèmes de numération. Il n'est pas utopique
d'étudier ces systèmes : si pour des besoins
« généralistes » comme pour un microprocesseur,
l'arithmétique virgule flottante semble incontournable
(même si on peut certainement en améliorer les
implantations existantes), sur des systèmes dédiés à des
applications particulières, d'autres modes de
représentation des nombres peuvent s'avérer mieux adaptés.
Un exemple classique est celui des systèmes de numération
redondants (carry-save, borrow-save, etc.) qui
sont utilisés à l'intérieur de nombreux multiplieurs et
diviseurs. Cette utilisation est transparente : en
entrée comme en sortie de ces opérateurs, les nombres sont
représentés dans un système usuel.
La recherche sur les algorithmes et les architectures pour
la multiplication, pour la division, et pour le calcul des
fonctions élémentaires est toujours très active
. Les membres du
projet ont acquis une solide réputation dans ce domaine et
ont l'intention de poursuivre leurs travaux dans cette
voie.
La maîtrise des erreurs d'arrondi dans les calculs (et de
manière plus générale, la fiabilité numérique des systèmes)
est un sujet de plus en plus important. On effectue des
calculs considérablement plus volumineux que dans les années
70, alors que les formats de représentation des nombres (et
par conséquent la précision de chaque opération prise
individuellement) n'ont presque pas changé. Une conséquence
est que les problèmes de précision se posent de plus en plus.
Dans de nombreux domaines d'application, l'imprécision de
l'arithmétique flottante peut avoir des conséquences
tragiques. La maîtrise de la précision est un thème
important. Notre équipe travaille déjà activement sur ce
thème : nous avons participé jusqu'en 1999 à l'ARC INRIA
FIABLE. Nous avons également collaboré en
1998-99 avec la société Aérospatiale dans ce domaine. Nous
nous intéressons tout particulièrement à la précision du
calcul des fonctions élémentaires. Notre avancée récente sur
le problème du « Dilemme du Fabricant de Tables »
se situe dans ce domaine.
L'amélioration automatique de la précision des résultats
complète la maîtrise de la fiabilité numérique. Les
utilisateurs qui rencontrent des problèmes de précision
numérique n'ont souvent ni le temps ni le métier pour
répondre à ces problèmes difficiles. Ce constat incite à
proposer des approches automatiques qui permettent de
contrÔler et d'améliorer la qualité numérique d'un programme
vu comme une « boîte noire ».