Escuchando el <a href="https://msdos.club/ms-dos-club-podcast-vol-9-diciembre-de-2020/">podcast nº9</a> de MS-DOS Club durante la parte del MOD de Chiquito para Doom uno de los creadores del mismo mencionaba haber tenido un Pentium 60 con el famoso bug del Pentium. Bueno, famoso... como son famosas estas cosas. En su momento se levantó mucho revuelo y una vez pasado ni Dios se acordaba de ello. Pero el caso es que creo que la historia es curiosa, lo suficiente al menos para motivarme a escribir este pequeño artículo.

Como siempre, lo primero es ponerse un poco en perspectiva. Estamos en el año 1994, la plataforma PC se ha convertido en la hegemónica. Uno tras otro, los rivales o se han reconvertido en fabricantes de PC o están sucumbiendo. El estándar, con todas sus deficientes, se había zampado incluso a su propio padre. IBM, la otrora topoderosa IBM, había vuelto con el rabo entre las piernas al PC estándar tras intentar redirigir la industria hacia otras aguas más protegidas por copyright.

Realmente, sabemos cómo acabó todo aquello. Las bases del binomio Wintel que dominaría la industria con puño de hierro hasta la explosión del fenómeno smartphone ya estaban sembradas, pero en 1994 parecían mucho menos sólidas de lo que de verdad eran. Varias amenazas se cernían tanto sobre Microsoft como sobre Intel, aunque como sabemos todo quedaría en agua de borrajas.

La parte de Microsoft era quizá la más atacada. Windows Chicago, el futuro Windows 4.0 heredero del exitoso Windows 3.0, no parece de acumular retrasos. IBM estaba decidida a potenciar OS/2 como gran alternativa a Windows, no sólo en mercados empresariales sino también en el doméstico. Por si fuera poco, Digital Research como la propia IBM seguían sacando nuevas versiones de DR-DOS y PC-DOS, y aunque Microsoft prometía no abandonar a los usuarios del viejo DOS la verdad es que salvo la revisión -muy- menor de 6.22 no volveríamos a ver un MS-DOS como producto independiente nunca más.

En el terreno del hardware la cosa estaba más calmada. Intel, por supuesto, tenía competencia. Tanto AMD como Cyrix tenían procesadores compatibles con sus 386 y 486, aunque ninguno de ellos había sacado aún una alternativa al Pentium, que aunque bastante caro aún en 1994 ya llevaba desde marzo del 93 en el mercado.

De hecho, en el cuarto trimestre de 1994 la principal amenaza que se veía a los procesadores Intel venían de la mano de Apple, Motorola e IBM. Juntas, habían desarrollado la plataforma PowerPC, un procesador de arquitectura RISC y que iba a gobernar los Macintosh. Las revistas de la época, incluso las dedicadas exclusivamente a PC, se hacían bastante eco de estos procesadores y tras la salida de los primeros PowerMac con PowerPC 601 se veían numerosas comparativas entre los ordenadores de Apple y PCs con Pentium de similares características. Por supuesto, se rumoreaba sobre una línea de ordenadores IBM con PowerPC y OS/2, e incluso poco después ordenadores Amiga -aunque Commodore ya había quebrado- migrando también a los nuevos procesadores -que en aquel momento fabricaba Motorola.

Y, con todo esto, saltó la noticia. Thomas Nicely, un profesor de matemáticas, se había dado cuenta de algunas inconsistencias en los resultados de algunos programas que había desarrollado, dando resultados distintos según el ordenador en que se ejecutasen. Este problema había empezado al instalar nuevos ordenadores con chips Pentium. Tirando del hilo consiguió comprobar que el problema estaba en el lado del procesador. Los Pentium tenían un error en la operación FDIV, es decir, división en coma flotante.

No es cuestión de ponerse muy técnico, así que para entender el problema, digamos que un procesador CISC -los microprocesadores tradicionales de toda la vida, todas las generaciones de x86- trae muchas instrucciones, y una de ellas es la de división de dos números en coma flotante. ¿Y qué es un número en coma flotante? Pues un número con decimales, y se llaman de coma flotante porque el número de decimales que manejan no es fijo, depende del número. 10.5 tiene un decimal, pero 10.52 tiene dos decimales, y 10.050055034 tiene 9 decimales. Como el número de decimales de un número puede variar, en memoria tienen un formato donde la coma de los decimales no está fija sino que varía. En contraposición a esto, pensemos por ejemplo en cantidades financieras, donde el número de decimales de las cifras siempre es el mismo.

Pues bien, el ejemplo de la <a href="https://es.wikipedia.org/wiki/Error_de_divisi%C3%B3n_del_Intel_Pentium">Wikipedia</a> creo que es suficientemente indicativo para ver gráficamente cómo afectaba el error.

4,195,835 / 3,145,727 = 1.333820449136241002 &lt;- Resultado correcto

4,195,835 / 3,145,727 = 1.333<span style="color: #ff0000">739068902037589</span>&lt;- Resultado obtenido con un Pentium con el bug

Es decir, simplificando, que los primeros Pentium no redondeaban bien cifras de bastantes decimales.

Pero... ¿hasta qué punto este error de redondeo es chungo? Bueno... esa es la cuestión. Para cualquier otro usuario de la primera mitad de los 90 que no se dedicase a CAD, cálculos trigonométricos y similares, posiblemente nunca se viene afectado por este error en la vida útil del ordenador -recordemos además que entonces la vigencia de un ordenador se calculaba en 2 o 3 años-, pero la magnitud del problema se amplificó sobremanera.

Yo por aquellos entonces compraba varias revistas de informática, y en PC Actual le dieron bastante cobertura a este problema.