QAbalgando por la historia (VII): Error de división del Intel Pentium, detectado por un profesor de Matemáticas

24 noviembre, 2022

Destacado, Noticias MTP, Testing de Software

Traemos al blog una nueva entrega de la serie que denominamos ‘QAbalgando por la historia’, que recoge errores o fallos relacionados con equipos y software que, con mejores procesos de calidad, quizá podrían haberse evitado. El caso de hoy es el relativo a una partida defectuosa de microprocesadores.




    Verano 1994. Thomas Nicely, profesor de Matemáticas de la escuela Lynchburg College, descubrió que algunos de los nuevos microprocesadores de la empresa Intel eran defectuosos.

    Todo comenzó cuando Thomas, haciendo una serie de divisiones en su computadora, observó que algunas operaciones con idénticos números arrojaban resultados diferentes. Para estar seguro, hizo las mismas operaciones en otro ordenador, viendo que estos sí coincidían. Más tarde, consiguió rastrear el error hasta el propio microprocesador, uno de los nuevos Pentium, no consiguiendo que Intel le diese una respuesta clara.

    Al ver que no sacaría nada por parte del fabricante, decidió hablar con otros profesores para que estos comprobasen las operaciones. Más adelante, viendo que el error era cierto, decidió poner una demanda contra Intel.

    Intel se negó al principio a quitar del mercado los microprocesadores defectuosos. Lo que hizo para tranquilizar al público fue, cambiar los procesadores defectuosos de aquellas personas que reclamaban. Declaró públicamente dos cosas: solo es probable que ocurra un error una vez en nueve mil millones de divisiones aleatorias de coma flotante”, y que “un usuario promedio de hoja de cálculo podría encontrar esta falla sutil una vez cada 27,000 años de uso”. Pero al final, consiguieron demandar a Intel quién declaró finalmente que habría un Pentium nuevo y gratuito para cualquier persona que lo solicitase.

    El hardware, la causa del problema

    La causa final estaba en el hardware, aunque el error aparecía, o no, dependiendo del modo de acceso a las operaciones. El microprocesador Pentium era la CPU (unidad central de procesamiento) de Intel y la más utilizada en ordenadores en aquellos momentos. Las CPU de Intel anteriores hacían toda su aritmética usando números enteros.

    A diferencia de las CPU anteriores de Intel, los chips 486DX y Pentium incluían una unidad (FPU) o coprocesador matemático que ya no usaba una aritmética de números enteros sino de punto flotante. El divisor incorporado en la unidad FPU (Floating Point Unit) usa un algoritmo que puede calcular dos dígitos por paso, en lugar de solo uno por paso como en las FPU de Intel anteriores, pero necesita almacenar una tabla de valores que señala al chip cómo dividir los números de punto flotante como números enteros. Esta tabla no se incluyó, por error, en 5 de cada 1000 FPU.

    Fallos sin solución

    Habría que ser muy atrevidos para asegurar que ciertos problemas de desarrollo e industrialización pueden ser atajados con una metodología cien por cien eficaz. Seguramente Intel aplicó los más severos métodos de gestión de pruebas y las herramientas de prueba más sofisticadas a lo largo del ciclo de vida de desarrollo del software y del hardware de sus nuevos componentes, pero las limitaciones de tiempo y coste ligadas en este caso a un posible enmascaramiento del error en los casos de prueba le llevaron a comercializar elementos defectuosos.

    ¿Solución de MTP?

    En este caso, no habría ninguna solución técnicamente hablando. MTP, empresa de aseguramiento de negocios digitales, ha aprendido del problema que tuvo Intel y seguiría aplicando los procesos de calidad y de desarrollo. Este problema está dentro de lo que dice la normativa de la organización ISTQB (International Software Testing Qualifications Board): algunos fallos no tienen solución.

     

    Fernando Rosique

    DBA Hub

     

    Otros post de Qabalgando por la historia:

     

    QAbalgando por la historia (I): Grace Murray Hopper

    Qabalgando por la historia (II): Mars Climate Orbiter, el error de conversión que nos dejó sin fotos de Marte

    QAbalgando por la historia (III): La destrucción del Mariner I (1962)

    QAbalgando por la historia (IV): AT&T en 1990, el gran colapso de la red a larga distancia

    QAbalgando por la historia (V): ¿Y si MTP hubiera trabajado en el Ariane 5 en 1996?

    QAbalgando por la historia (VI): Los Patriot ignoran un misil Scud que alcanza la base de Dhahran en la Guerra del Golfo

     

    Ver más historias