Compartir

La Habana, Cuba. – El 30 de octubre de 1994 el profesor Thomas Nicely de la Universidad de Lynchburg descubrió un error en la unidad de coma flotante del Intel Pentium. Nicely observó que algunas operaciones de división devolvían siempre un valor erróneo por exceso. Otras personas confirmaron rápidamente esos errores en las divisiones. El fallo de diseño se hizo notorio muy rápidamente y se le dio el nombre de error FDIV del Pentium (FDIV es la instrucción de división en coma flotante de los microprocesadores x86). Otros pusieron de relieve problemas de división cuyo resultado devuelto por el Pentium tenía un error de hasta 61 unidades por millón.

Esas comprobaciones crearon una gran polémica. Intel negó inicialmente la existencia del problema. Más tarde, Intel remarcó la insignificancia de los defectos de sus microprocesadores, queriendo tranquilizar a los usuarios. Intel se negó a sustituir sistemáticamente los microprocesadores defectuosos; sin embargo, si una persona podía demostrar que había sido afectada por el error, entonces Intel procedería a cambiar su procesador. Aunque evaluaciones efectuadas por organismos independientes mostraron la poca importancia de las consecuencias de error y que el efecto era desdeñable en la mayoría de las ocasiones, se provocó una situación en la que los usuarios de Intel Pentium demandaban el reemplazo de los procesadores defectuosos. Empresas como IBM se unieron a la denuncia. Al final, Intel se vio forzada a aceptar sustituir todos los microprocesadores defectuosos, lo que le representó un costo enorme.

El problema ocurrió solo en algunos modelos el procesador Pentium original. El error solo existió en algunos procesadores de la familia Pentium con una velocidad de reloj menor a 120 MHz. En los modelos afectados la aplicación Intel Processor Frequency ID verifica la presencia del error. El fallo estaba presente tan solo en algunos modelos del procesador Pentium. Todos los modelos de procesador de familia Pentium que funcionan a una frecuencia de reloj de por lo menos 120 MHz tenían el error corregido. El siguiente código en BASIC indica si el procesador de la computadora donde se ejecuta tiene el error de división del Pentium.

x = 8391667

y = 1572863

IF x – (x / y) * y <> 0 THEN

PRINT «Su procesador tiene el error del Pentium»

ELSE

PRINT «Su procesador no tiene el error del Pentium»

END IF

También se pudo realizar el cálculo desde la calculadora de Windows o desde una planilla de cálculo. El valor correcto es

La conversión a hexadecimal por el procesador es 4.195.835 = 0x4005FB y 3.145.727 = 0x2FFFFF. El ‘5’ en 0x4005 causa un error en la lógica de control de la FPU. Como resultado, el valor devuelto por un Pentium con error es incorrecto a más de cuatro dígitos:

4.195.835 3.145.727 = 1 , 333 739068902037589 {\displaystyle \textstyle {\frac {4.195.835}{3.145.727}}=1,333{\color {Red}{739068902037589}}}

Otra forma de detectar el error es usando la utilidad pentnt incluida con Windows NT 3.51, NT 4.0, 2000 y XP.