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 numerosas pruebas de rendimiento se hacían para intentar dilucidar hasta qué punto el PowerPC era mejor o peor que los Pentium de Intel.

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. El caso es que todo había empezado cuando había empezado a utilizar 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 -pensemos por ejemplo en cifras financieras. Siempre tienen el mismo número de decimales.

Pues bien, el ejemplo de la Wikipedia creo que es suficientemente indicativo para comprender la magnitud del 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 incorrecto con un Pentium con el bug

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

Pero... ¿esto se podría notar en el día a día? Bueno... esa es la cuestión. Para el ususario medio seguramente nunca notaría ningún error en la vida útil de su ordenador, pero el problema no era el usuario medio. Aquel año yo pasé de un Spectrum a un PC -con un 486, los Pentium se me salían muchísimo de mi bolsillo- y para aprender me compraba todas las revistas de PC que podía. Como nuevo converso, deboraba todo lo que caía en mis manos -aunque muchas veces no lo entendiese- y recuerdo que a todo esto se le dio muchísimo bombo.

He estado buscando algunos de los artículos de entonces y no he podido encontrar nada