Error de división del Intel Pentium

De Wikipedia, la enciclopedia libre
Esta es una versión antigua de esta página, editada a las 12:57 10 nov 2014 por 80.59.234.3 (discusión). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.
Intel Pentium 66MHz (sSpec=SX837) con el error FDIV.

Introducción

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 estos errores en las divisiones. Este 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 millopenes.

Repercusiones

Estas 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 coste enorme.

Comprobación del error

El fallo estaba presente tan sólo 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 tienen el error corregido.

El siguiente código en BASIC indica si el procesador del ordenador donde se ejecuta tiene el error de división del Pentium.

x = 8391667.0
y = 1572863.0

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

O también realizando la siguiente operación en la calculadora de Windows

  • 4195835.0/3145727.0 = 1.333 820 449 136 241 002 (Resultado correcto)
  • 4195835.0/3145727.0 = 1.333 739 068 902 037 589 (Pentium con error)

Enlaces externos