Error de división del Intel Pentium

Intel Pentium 66MHz (sSpec=SX837) FDIV.

Introducción

editar

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

editar

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

editar

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
Familia Modelo Versión Ver. Núcleo Vel. Reloj Veloc. FSB S-spec
5 1 3 B1 60 MHz 60 MHz Q0352, Q0412, SX753
5 1 3 B1 66 MHz 66 MHz Q0353, Q0413, SX754
5 1 5 C1 60 MHz 60 MHz Q0466, SX835, SZ949
5 1 5 C1 66 MHz 66 MHz Q0467, SX837, SZ950
Pentium P54C 600 nm 3,3V
Family Model Versión Ver. Núcleo Vel. Reloj Veloc. FSB S-spec
5 2 1 B1 75 MHz 50 MHz Q0601
5 2 1 B1 90 MHz 60 MHz Q0542, Q0613, Q0543, SX879, SX885, SX909, SX874
5 2 1 B1 100 MHz 66 MHz Q0563, Q0587, Q0614, SX886, SX910
5 2 2 B3 75 MHz 50 MHz Q0606, SX951
5 2 2 B3 90 MHz 60 MHz Q0628, Q0611, Q0612, SX923, SX922, SX921, SX942, SX943, SX944, SZ951
5 2 2 B3 100 MHz 66 MHz Q0677, SX960

Comprobación del error

editar

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

editar
  1. a b «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. Archivado desde el original el 3 de noviembre de 2021. Consultado el 3 de noviembre de 2010. 
  3. «Pentnt». 

Enlaces externos

editar