Error de CPU de Intel en los años 90
Mi profesor que enseña "Lógica" en la universidad nos contó una historia sobre los procesadores Intel, que dice: En los años 90, Intel tenía un error en el cálculo de funciones matemáticas como sin / cos codificadas en el procesador. Este error creó inconsistencias en algunas cuentas bancarias, lo que llevó a Intel a contratar lógicos para demostrar la exactitud del código.
Traté de buscar esta historia en la web pero no encontré nada. ¿Alguien sabe algo al respecto o alguien puede darme algunas fuentes?
Respuestas
Sospecho que su profesor se refería a la FDIVfallo Pentium , lo que llevó a una gran protesta en los medios de comunicación en el momento y para el cual Intel solicitó un retiro.
Este error provocó que la división de punto flotante devolviera resultados incorrectos en algunos casos. No afectó solo FDIV, algunas instrucciones relacionadas se vieron afectadas: la otra división y las instrucciones restantes, y FPTANy FPATAN. Otras instrucciones trigonométricas fueron tratadas con sospecha, pero finalmente se aclararon, incluidas FSINy FCOS.
Sin embargo, parece poco probable que esto cause problemas en los bancos: las aplicaciones financieras generalmente evitan las representaciones de punto flotante, por lo que es poco probable que los errores en una instrucción de punto flotante los afecten.
Consulte también la entrada de Wikipedia sobre este error . Otro error famoso de Pentium fue el error F00F , que no provocó errores de cálculo; podría provocar bloqueos y se solucionó mediante un manejo específico en los sistemas operativos.
Stephen Kitt ya ha proporcionado una buena respuesta con respecto al error FDIV. Daré algunos detalles sobre el empleo de lógicos de Intel:
Debido a este error, Intel tuvo que reemplazar muchos procesadores, lo que resultó muy caro. No queriendo repetir esto, contrataron a varios científicos informáticos con experiencia en lógica formal para probar la exactitud de los algoritmos que se implementarán en los sucesores del pentium. Si desea saber más sobre su investigación, consulte las publicaciones de dos de estos científicos:https://www.cl.cam.ac.uk/~jrh13/papers/index.html, https://scholar.google.com/citations?user=MACCA0cAAAAJ&hl=en
Intel tenía un grupo de hardware bastante complejo para calcular un cociente de punto flotante de una manera que producía dos bits por iteración, lo que requería tener una tabla bastante grande que enumerara todas las combinaciones de patrones de bits donde parte del cociente debería ser 11 [en lugar de enumerando todos los patrones individualmente, la tabla habría tenido entradas donde cada bit puede ser 0, 1 o X, de modo que, por ejemplo, un patrón de bits de 100X01X coincidiría con 1000010, 1000011, 1001010 o 1001011, por lo que la tabla no necesitaba un número imposiblemente enorme de entradas]. Desafortunadamente, parte de la tabla se corrompió cuando se transfirió desde cualquier herramienta que se usó para generarla al diseño del chip.
Encuentro este enfoque de la división algo curioso, ya que habría sido rápido examinar el divisor y producir un valor que, cuando se multiplica por el divisor (redondeando hacia arriba) y el dividendo (redondeando hacia abajo), obligaría al nuevo divisor a tener su valor. bits superiores iguales a 0.1111 o 0.11111111, lo que facilitaría la extracción de 4 u 8 bits por iteración. El cociente final probablemente sería ligeramente menor que el valor correcto [nunca mayor, dadas las direcciones de redondeo anteriores], pero estaría lo suficientemente cerca como para que solo se necesiten dos o tres pasos de aproximación sucesiva al final para limpiar las cosas. arriba.
En cualquier caso, la máxima ironía con el error Intel FDIV es que, antes, durante la era 386/387, había un producto de la competencia de Weitek que podía realizar cálculos matemáticos de punto flotante de precisión simple mucho más rápido que los chips de Intel, pero no lo hizo. No hago matemáticas de doble precisión en absoluto. Algunos programas que normalmente habrían usado matemáticas de doble precisión enviaron versiones para Weitek que usaban matemáticas de precisión simple y, por lo tanto, producían resultados menos precisos. El equipo de marketing de Intel decidió explotar esta falta de precisión (diseñada y considerada aceptable) mediante la producción de un anuncio que mostraba una placa base con una calculadora de diez centavos decorada con gráficos de payasos donde debería haber estado la CPU, y la leyenda "Solicite Intel Math CoProcessors, o quién sabe en qué matemáticas tendrá que contar ".
Creo que esto probablemente se refiere al error Pentium FDIV ( error de división de punto flotante).
No recuerdo ningún problema específico con las instrucciones de trigonometría.