Bug de la division du Pentium
Le bug de la division du Pentium est un bug informatique ayant affecté le microprocesseur Pentium du fabricant Intel peu après son lancement en 1994 : une erreur était introduite lors de certaines opérations de division.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/01/KL_Intel_Pentium_A80501.jpg/180px-KL_Intel_Pentium_A80501.jpg)
Détection
modifierEn , le professeur Thomas Nicely[1] de l'université de Lynchburg dévoile un dysfonctionnement dans l'unité de calcul en virgule flottante du Pentium lors de calculs sur la constante de Brun. Il s'est rendu compte que certaines opérations de division renvoient toujours une valeur erronée par excès sur ce processeur. Ces erreurs dans les divisions sont rapidement confirmées par d'autres personnes.
Ce bug devient très vite notoire et est surnommé le « bug FDIV du Pentium » (FDIV est l'instruction de division en virgule flottante des microprocesseurs x86). D'autres ont mis en évidence des problèmes de division dont le résultat retourné par le Pentium était au-dessus de la valeur réelle jusqu'à 61 unités pour 10000. L'erreur provenait de l'initialisation incomplète (dans le silicium) d'une table de valeurs servant à un nouvel algorithme de division, plus rapide.
La présence du bug peut être vérifiée via l'opération qui suit, à effectuer dans une application qui utilise de manière native les nombres en virgule flottante, comme la Calculatrice de Windows :
- 4 195 835,0 / 3 145 727,0 = 1,333820449136241002 (valeur correcte),
- 4 195 835,0 / 3 145 727,0 = 1,333739068902037600 (valeur erronée retournée par le processeur).
Ce problème s'est produit seulement sur quelques modèles du processeur Pentium. Tous les processeurs de famille Pentium ayant une fréquence d'horloge de plus de 100 MHz et plus récents sont exempts de ce bug.
Ces constatations ont alimenté une vive polémique. Intel a d'abord nié le problème[2]. Plus tard, Intel a minimisé l'importance des défauts de ses microprocesseurs, voulant rassurer les utilisateurs et a refusé de remplacer systématiquement les microprocesseurs défectueux. Cependant, si une personne pouvait montrer qu'elle avait été affectée par le dysfonctionnement, alors Intel remplacerait son processeur.
Bien que des évaluations effectuées par des organismes indépendants eussent montré le peu d'importance des conséquences du bug et son effet négligeable dans la plupart des utilisations, la communication nonchalante d'Intel a provoqué une grande colère publique, et le bug a trouvé un large écho dans la presse nationale américaine[3]. Des compagnies comme IBM (dont le clone du Pentium « 586 » concurrençait au même moment la gamme des Pentium d'Intel) ont joint leur voix pour exprimer leur colère. Finalement, Intel a décidé de remplacer tous les processeurs Pentium défectueux, ce qui aurait pu représenter un coût énorme pour la compagnie. Toutefois, seule une petite fraction des possesseurs de processeurs défectueux a demandé l'échange.
Notes et références
modifier- La chronologie exacte des événements est disponible sur la page personnelle de Thomas Nicely (en).
- Cf. l'exposé de (en) Robert C. Collins, « P54C Erratum 23 - Slight Precision Loss for Floating-point Divides on Specific Operand Pairs », (consulté le )
- Cf. John Markoff, « Circuit flaw causes Pentium chip to miscalculate, Intel admits », New York Times, no 24 novembre, (lire en ligne)
Voir aussi
modifierLiens externes
modifier- (fr) Les leçons d'un algorithme délinquant : un article concernant le bug de la division du Pentium.
- (en) Pentium Processor Divide Algorithm : description de l'algorithme de division SRT du Pentium et de l'erreur dans la table de correspondante, sur le site d'Intel.
- (en) Informations sur le bug, en explique notamment la cause.
- (en) A Tale of Two Numbers[PDF], par Cleve Moler
- (en) Archive d'articles et documents publiés sur le sujet (possibilité de télécharger une archive en format ZIP).