Selecciona Edición
Conéctate
Selecciona Edición
Tamaño letra
BLOGS Por MIGUEL ÁNGEL MORALES
HISTORIA DE LAS MATEMÁTICAS

La historia del error de división de los primeros Pentium

Unos cálculos relacionados con primos gemelos fueron los responsables de destapar el error FDIV de los 586

Se conocen números primos de más de 20 millones de cifras (y se siguen buscando primos más grandes) y se han calculado millones de decimales del número Pi. ¿Son “necesarios” cálculos tan grandes? ¿Nos sirven de algo los resultados obtenidos con ellos? Sí, con números primos muy grandes podemos aumentar la seguridad de nuestras comunicaciones, y el gran atractivo del número Pi podría ser razón suficiente para que nos siga apeteciendo conocer más sobre él, pero estos cálculos monstruosos pueden ayudarnos a algo más: testear procesadores y equipos informáticos. Hoy os voy a hablar sobre uno de los casos más sonados a este respecto: el famoso error FDIV de los procesadores Pentium.

Nos situamos en 1994. El matemático estadounidense Thomas Nicely toma un trabajo anterior sobre la constante de Brun, relacionada con los primos gemelos (de los que hablamos hace unas semanas en Porque 70 millones “no son nada”) e intenta ampliarlo. Dicho trabajo calculaba dicha constante para todas las parejas de primos gemelos hasta 100.000 millones (más de 220 millones de parejas), y Nicely quería alcanzar el billón para mejorar la estimación de esta constante de Brun.

En aquella época, los microprocesadores Pentium acaban de hacer acto de presencia en el mercado como sucesores de los anteriores 486 (de hecho el nombre “Pentium” en un guiño al 5 que tenían esos 586, versión siguiente al 486). Nicely decide añadir un Pentium a su cadena de microprocesadores para, entiendo, hacer el cálculo más rápido y eficiente.

Y aquí es donde está el turrón. Nicely utiliza dos métodos para el cálculo de la constante de Brun, y se da cuenta de que los resultados obtenidos por ellos tienen una diferencia demasiado grande. Evidentemente algo iba mal, y Nicely intenta encontrar dónde está el error. Analiza su propio software por si el fallo venía por ahí, y después de localizar el punto exacto en el que se producía esa diferencia anómala decide realizar el cálculo de dicho punto con un 486 (esto es, prescinde del Pentium). Curiosamente, el error desaparece.

La cosa está clara, ¿verdad? Bueno, a medias. El error podría venir de cualquier otro componente de hardware, pero Nicely acaba concluyendo que el problema está en el microprocesador Pentium cuando consigue reproducir dicho fallo en otros equipos con un procesador del mismo tipo.

A finales de dicho año 1994, Nicely avisa vía correo electrónico a Intel (fabricante de los Pentium) del error que ha encontrado… Pero no recibe una respuesta “satisfactoria”. A la vista de esto, nuestro protagonista contacta con varias personas y les pide que intenten reproducir la situación para ver si el error se sigue presentando. La respuesta es afirmativa: el error persiste.

Al darse a conocer el asunto, varias personas en Internet consiguen también reproducir el error, con lo que el asunto explota: los microprocesadores Pentium fallan. Más concretamente, tienen un error al hacer divisiones en coma flotante (floating-point division, por lo que este fallo se conoce como error FDIV).

Algunas fuentes estiman que el error era del orden de 61 unidades por millón. Quizás con pocas operaciones este error no sería muy relevante, pero imaginad cuántas operaciones hace un microprocesador a lo largo de un día…

El caso es que, al final, Intel tuvo que reconocer el error (de hecho, hasta reconoció que conocían su existencia antes incluso de que Nicely les avisara) y tuvieron que reemplazar todos los microprocesadores defectuosos, que eran los que trabajaban a una velocidad de reloj menor de 120 MHz. Esto costó millones en pérdidas a la compañía y, al menos, sirvió para que de ahí en adelante los controles de calidad de Intel pasaran a ser una parte mucho más importante de su empresa.

Como curiosidad final, es interesante comentar que Intel acabó “usando” a Nicely para testear los nuevos microprocesadores después de corregir el error.

Tenéis más información, tanto histórica como técnica, sobre este caso en How Number Theory Got the Best of the Pentium Chip, de la revista Science, en Anatoym of the Pentium Bug y en The mathematics of the Pentium division bug. También tenéis más datos en la propia web de Thomas Nicely.


La conclusión que podemos sacar de todo esto es la que comentábamos al principio: aparte del propio placer matemático que pueden provocar estos enormes cálculos, es importante la utilidad que pueden tener los mismos a la hora de probar equipos informáticos y buscar errores de cálculo de los mismos. Así que si de aquí en adelante veis por ahí algún récord de cálculo de dígitos de un número o decimales de otro y pensáis que es un tiempo consumido de manera inútil, recordad este caso.

Por cierto, ya que estamos creo que viene a cuento preguntar: ¿conocéis algún otro caso que pueda asemejarse a este?