Error de divisió del Pentium

De Viquipèdia
Dreceres ràpides: navegació, cerca
Intel Pentium 66MHz (sSpec=SX837) amb l'error FDIV.

El 30 d'octubre de 1994 el professor Thomas Nicely de la Universitat de Lynchburg va descobrir un bug en la unitat de coma flotant del Intel Pentium. Es va adonar que algunes operacions de divisió retornaven sempre un valor erroni per excés. Altres persones van confirmar ràpidament aquests errors en les divisions. Aquest error es va fer notori molt ràpidament i se li va donar el nom d'error FDIV del Pentium (FDIV és la instrucció de divisió en coma flotant dels microprocessadors x86). Uns altres van posar en relleu problemes de divisió el resultat retornat de la qual pel Pentium tenia un error de fins a 61 unitats per milió. Tots els processadors de família Pentium que tinguen una freqüència de rellotge de més de 100 MHz tenen l'error corregit.

Repercussions[modifica | modifica el codi]

Aquestes comprovacions van crear una gran polèmica. Intel va negar inicialment l'existència del problema. Més tard, Intel va remarcar la insignificança dels defectes dels seus microprocessadors, volent tranquil·litzar als usuaris. Intel es va negar a substituir sistemàticament als microprocessadors defectuosos; no obstant això, si una persona podia demostrar que havia estat afectada per l'error, llavors Intel procediria a canviar el seu processador. Encara que avaluacions efectuades per organismes independents van mostrar la poca importància de les conseqüències d'error i que l'efecte era menyspreable en la majoria de les ocasions, es va provocar una situació en la qual els usuaris de Intel Pentium demandaven el canvi dels processadors defectuosos. Empreses com IBM es van unir a la denúncia. Finalment, Intel es va veure forçada a acceptar substituir tots els processadors defectuosos, el que li va representar un cost enorme. Aquells que disposen d'una unitat d'aquest tipus encara poden posar-se en contacte amb Intel perquè la hi canvie.

Comprovació de l'error[modifica | modifica el codi]

El següent codi en BASIC permet saber si el vostre processador té l'error de divisió.

x = 8391667.0
y = 1572863.0

IF x - (x / y) * y <> 0 THEN 
PRINT "El vostre processador té l'error de divisió del Pentium." 
ELSE
PRINT "El vostre processador no té l'error de divisió del Pentium." 
END IF

Enllaços externs[modifica | modifica el codi]