Error de división del Intel Pentium

Intel Pentium 66MHz (sSpec=SX837) 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 millón.

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 costo enorme.

Modelos afectados

El problema ocurre solo en algunos modelos el procesador Pentium original.[1] El bug solo existe en algunos procesadores de la familia Pentium con una velocidad de reloj menor a 120 MHz.[1] En los modelos afectados la aplicación Intel Processor Frequency ID verifica la presencia del error.

Los diez procesadores afectados se listan a continuación.

Pentium P5 800 nm 5V
FamiliaModeloVersiónVer. NúcleoVel. RelojVeloc. FSBS-spec
513B160 MHz60 MHzQ0352, Q0412, SX753
513B166 MHz66 MHzQ0353, Q0413, SX754
515C160 MHz60 MHzQ0466, SX835, SZ949
515C166 MHz66 MHzQ0467, SX837, SZ950
Pentium P54C 600 nm 3,3V
FamilyModelVersiónVer. NúcleoVel. RelojVeloc. FSBS-spec
521B175 MHz50 MHzQ0601
521B190 MHz60 MHzQ0542, Q0613, Q0543, SX879, SX885, SX909, SX874
521B1100 MHz66 MHzQ0563, Q0587, Q0614, SX886, SX910
522B375 MHz50 MHzQ0606, SX951
522B390 MHz60 MHzQ0628, Q0611, Q0612, SX923, SX922, SX921, SX942, SX943, SX944, SZ951
522B3100 MHz66 MHzQ0677, SX960

Comprobación 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 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
 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 puede 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 4 dígitos:[2]

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

Referencias

  1. «FDIV Replacement Program: Frequently asked questions». Intel. 20 de marzo de 2009. Solution ID CS-012748. Consultado el 10 de noviembre de 2009.
  2. «Pentium FDIV bug - a Picture». Kansas University Institute for Policy and Social Research. 30 de noviembre de 1994. Consultado el 3 de noviembre de 2010.
  3. «Pentnt».

Enlaces externos

Este artículo ha sido escrito por Wikipedia. El texto está disponible bajo la licencia Creative Commons - Atribución - CompartirIgual. Pueden aplicarse cláusulas adicionales a los archivos multimedia.