Articulo de referencia

Error de Pentium FDIV

\n"}"> Procesador Intel Pentium de 66 MHz (sSpec=SX837) con el error FDIV. El error FDIV del Pentium es un fallo de hardware que afecta a la unidad de punto flotante (FPU) de lo...

Este es un buen artículo. Haz clic aquí para obtener más información.

Procesador Intel Pentium de 66 MHz (sSpec=SX837) con el error FDIV.

El error FDIV del Pentium es un fallo de hardware que afecta a la unidad de punto flotante (FPU) de los primeros procesadores Intel Pentium . Debido a este error, el procesador devolvía resultados de punto flotante binarios incorrectos al dividir ciertos pares de números de alta precisión . El error fue descubierto en 1994 por Thomas R. Nicely, profesor de matemáticas en el Lynchburg College . [ 1 ] La falta de valores en una tabla de búsqueda utilizada por el algoritmo de división de punto flotante de la FPU provocaba que los cálculos presentaran pequeños errores. En ciertas circunstancias, los errores podían ocurrir con frecuencia y generar desviaciones significativas. [ 2 ]

La gravedad del error FDIV es objeto de debate. Aunque rara vez lo encuentran la mayoría de los usuarios ( la revista Byte estimó que 1 de cada 9 mil millones de divisiones de punto flotante con parámetros aleatorios produciría resultados inexactos), [ 3 ] tanto el fallo como el manejo inicial del asunto por parte de Intel fueron duramente criticados por la comunidad tecnológica.

En diciembre de 1994, Intel retiró del mercado los procesadores defectuosos, en lo que fue la primera retirada total de un chip de computadora. [ 4 ] En su informe anual de 1994, Intel declaró haber incurrido en "un cargo antes de impuestos de 475 millones de dólares  ... para cubrir el reemplazo y la amortización de estos microprocesadores". [ 5 ]

Descripción

Para mejorar la velocidad de los cálculos de división de punto flotante en el chip Pentium con respecto al 486DX , Intel optó por reemplazar el algoritmo de división de desplazamiento y resta con el algoritmo de Sweeney, Robertson y Tocher (SRT). El algoritmo SRT puede generar dos bits del resultado de la división por ciclo de reloj , mientras que el algoritmo del 486 solo podía generar uno. La tabla de búsqueda implementada utilizaba una matriz lógica programable (PLA) con 2048 celdas, de las cuales 1066 debían contener uno de cinco valores: −2, −1, 0, +1, +2 . [ 3 ] Cuando la matriz original del Pentium se compiló en el patrón de máscara utilizado para la fabricación, el equipo de litografía no recibió cinco valores de +2. Como resultado, cinco celdas de la matriz en las PLA grabadas de los chips reales que debían contener +2 en realidad contenían cero. [ 6 ] [ 3 ]

Como resultado, los cálculos que dependen de estas cinco celdas introducen errores, que pueden acumularse debido a la naturaleza recursiva del algoritmo SRT . En el peor de los casos, el error puede llegar hasta el quinto dígito significativo del resultado, aunque esto es raro y los errores suelen aparecer en el noveno o décimo dígito significativo. [ 3 ]

Solo ciertas combinaciones de numerador y denominador activan el error; un ejemplo comúnmente reportado es la división de 4.195.835 entre 3.145.727. Realizar este cálculo en cualquier software que utilice el coprocesador de punto flotante, como la Calculadora de Windows , permitiría a los usuarios descubrir si su chip Pentium está afectado. [ 7 ]

El valor correcto del cálculo es:

4.195.8353.145.727=1.333820449136241002{\displaystyle \textstyle {\dfrac {4{,}195{,}835}{3{,}145{,}727}}=1.333820449136241002}

Cuando se convierte al valor hexadecimal utilizado por el procesador, 4.195.835 = 0x4005FB y 3.145.727 = 0x2FFFFF. El "5" en 0x4005FB activa el acceso a las celdas de matriz "vacías". Como resultado, el valor devuelto por un procesador Pentium defectuoso es incorrecto en cuatro dígitos o más: [ 8 ]

4.195.8353.145.727=1.333739068902037589{\displaystyle \textstyle {\dfrac {4{,}195{,}835}{3{,}145{,}727}}=1.333{\color {red}{739068902037589}}}

que en realidad es el valor de4.195.5793.145.727=4.195.8352563.145.727{\displaystyle \textstyle {\dfrac {4{,}195{,}579}{3{,}145{,}727}}={\dfrac {4{,}195{,}835-256}{3{,}145{,}727}}}.

Descubrimiento y respuesta

Thomas Nicely, profesor de matemáticas en Lynchburg College, había escrito código para enumerar números primos , primos gemelos , tríos de primos y cuádruples de primos . Nicely notó algunas inconsistencias en los cálculos el 13 de junio de 1994, poco después de agregar un sistema Pentium a su grupo de computadoras, pero no pudo eliminar otros factores (como errores de programación, chipsets de la placa base , etc.) hasta el 19 de octubre de 1994. [ 1 ] El 24 de octubre de 1994, informó del problema a Intel. [ 9 ] Según se informa, Intel tuvo conocimiento del problema de forma independiente en junio de 1994 y comenzó a solucionarlo en ese momento, pero optó por no revelar públicamente ningún detalle ni retirar las CPU afectadas. [ 10 ]

El 30 de octubre de 1994, Nicely envió un correo electrónico describiendo el error a varios contactos académicos, solicitando informes de pruebas de la falla en 486-DX4 , Pentium y clones de Pentium . [ 9 ] El error fue rápidamente verificado por otros, y la noticia se difundió rápidamente en Internet . El error adquirió el nombre de "error FDIV del Pentium" por el mnemónico del lenguaje ensamblador x86 para la división de punto flotante, la instrucción afectada más utilizada. [ 9 ]

La noticia apareció por primera vez en la prensa el 7 de noviembre de 1994, en un artículo de Electronic Engineering Times titulado "Intel soluciona un fallo en la FPU del Pentium", de Alexander Wolfe, [ 11 ] y posteriormente fue retomada por CNN en un segmento emitido el 22 de noviembre de 1994. También fue publicada por The New York Times y The Boston Globe , llegando a ocupar la portada de este último. [ 10 ] [ 12 ]

En este punto, Intel reconoció el fallo de coma flotante, pero afirmó que no era grave y que no afectaría a la mayoría de los usuarios. Intel ofreció reemplazar los procesadores a los usuarios que pudieran demostrar que estaban afectados. Sin embargo, aunque la mayoría de las estimaciones independientes encontraron que el error tendría un impacto muy limitado en la mayoría de los usuarios, causó una importante prensa negativa para la empresa. Durante una charla en 2019, mientras reflexionaba sobre el desarrollo de Quake , John Romero describió con qué frecuencia y persistencia Michael Abrash podía reproducir este error . Abrash pasó horas rastreando las condiciones exactas necesarias para producir el error, que resultaría en partes de un nivel del juego apareciendo inesperadamente cuando se veía desde ciertos ángulos de cámara. [ 13 ] IBM suspendió la venta de PC que contenían CPU Intel, y el precio de las acciones de Intel disminuyó significativamente. [ 14 ] El motivo detrás de la decisión de IBM fue cuestionado por algunos en la industria; IBM producía las CPU PowerPC en ese momento y potencialmente podría beneficiarse de cualquier daño a la reputación de Pentium o de Intel como empresa. Sin embargo, la decisión llevó a que los compradores corporativos de equipos informáticos exigieran el reemplazo de las CPU Pentium existentes, y poco después otros fabricantes de PC comenzaron a ofrecer reemplazos "sin hacer preguntas" de los chips Pentium defectuosos. [ 4 ]

La creciente insatisfacción con la respuesta de Intel llevó a que la compañía ofreciera reemplazar todos los procesadores Pentium defectuosos a solicitud el 20 de diciembre. [ 15 ] El 17 de enero de 1995, Intel anunció un cargo antes de impuestos de $ 475 millones contra las ganancias, aparentemente el costo total asociado con el reemplazo de los procesadores defectuosos. [ 9 ] Esto equivale a $ 891 millones en 2024. [ 16 ] Intel fue criticada por impedir que los revendedores y los OEM participaran en el programa de retiro, lo que obligó a los usuarios finales a reemplazar los chips ellos mismos. La justificación de Intel para esto, publicada en su página web de soporte, fue que "es decisión individual del usuario final determinar si el defecto está afectando la precisión de su aplicación". [ 14 ] 

Un artículo de 1995 en Science describe el valor de los problemas de teoría de números para descubrir errores informáticos y proporciona los antecedentes matemáticos y la historia de la constante de Brun , el problema en el que Nicely estaba trabajando cuando descubrió el error. [ 17 ]

La respuesta de Intel al fallo FDIV se ha citado como un ejemplo de cómo el impacto en las relaciones públicas de un problema eclipsa el impacto práctico del mismo en los clientes. [ 18 ] Si bien era improbable que la mayoría de los usuarios se encontraran con la falla en su informática diaria, la reacción inicial de la compañía de no reemplazar los chips a menos que los clientes pudieran demostrar que estaban afectados provocó el rechazo de una minoría ruidosa de expertos de la industria. La publicidad generada posteriormente sacudió la confianza de los consumidores en las CPU y llevó a una demanda de acción incluso por parte de personas que probablemente no se verían afectadas por el problema. Andy Grove , el entonces director ejecutivo de Intel, fue citado en The Wall Street Journal diciendo: "Creo que el núcleo del problema que pasamos por alto... fue que nos atrevimos a decirle a alguien de qué debía o no debía preocuparse, o qué debía o no debía hacer". [ 4 ]

Tras el fallo y la posterior retirada del producto, se produjo un marcado aumento en el uso de la verificación formal de las operaciones de punto flotante del hardware en toda la industria de semiconductores. Impulsada por el descubrimiento del fallo, en 1996 se desarrolló una técnica aplicable al algoritmo SRT denominada " verificación de modelos a nivel de palabra ". [ 19 ] Intel continuó utilizando la verificación formal de forma extensiva en el desarrollo de arquitecturas de CPU posteriores. En el desarrollo del Pentium 4 , se emplearon la evaluación simbólica de trayectorias y la demostración de teoremas para encontrar varios fallos que podrían haber provocado un incidente de retirada similar de no haber sido detectados. [ 20 ] La primera microarquitectura de Intel en utilizar la verificación formal como método principal de validación fue Nehalem , desarrollada en 2008. [ 21 ]

Modelos afectados

El error FDIV afecta a los procesadores  Pentium P5 800 de 60 y 66 MHz en versiones  anteriores a D1, y a los Pentium P54C 600 de 75, 90 y 100 MHz en versiones anteriores a B5. Los  procesadores P54C y P54CQS de 120 MHz no se ven afectados. [ 22 ] [ 23 ]

parches de software

Los fabricantes produjeron varios parches de software para solucionar el error. Un algoritmo específico, descrito en un artículo de IEEE Computational Science & Engineering , consiste en multiplicar tanto el numerador como el denominador por 15/16 si un divisor intenta acceder a una celda PLA que contiene erróneamente cero. Esta solución conlleva una penalización de velocidad considerable; en el peor de los casos, para un programa que solo realiza operaciones FDIV con divisores defectuosos, el tiempo de ejecución se duplicaría, ya que cada FDIV tardaría unos 80 ciclos de reloj en lugar de los 40 habituales. Con divisores más aleatorios, el tiempo promedio por FDIV era de aproximadamente 50 ciclos de reloj, es decir, 10 ciclos adicionales para comprobar el divisor: solo 5 de cada 1024 divisores aleatorios activarían la corrección de escalado. Dado que FDIV es una operación poco frecuente en la mayoría de los programas, la ralentización normal con la solución instalada era típicamente del 1 % o menos. [ 8 ]

El principal desafío al que se enfrentaron las empresas de software fue implementar la solución en el software preexistente, gran parte del cual dependía de bibliotecas fuera de su control. Algunas empresas, como Wolfram Research , optaron por parchear directamente el código máquina de los ejecutables existentes para reemplazar el código de operación FDIV con una instrucción ilegal. Esto desencadenaría una excepción que sería capturada por un manejador de excepciones (también parcheado). A partir de ahí, se podría ejecutar código arbitrario para sortear el error. [ 2 ]

Microsoft ofreció soluciones alternativas a nivel del sistema operativo en versiones de Windows hasta Windows XP. Se incluyeron utilidades con el sistema operativo para comprobar la presencia del error y deshabilitar la FPU si se encontraba. [ 24 ] [ 25 ]

Véase también

Referencias

  1. 1 2 Edelman, Alan (1 de enero de 1997). "Las matemáticas del error de división del Pentium" (PDF) . SIAM Review . 39 (1): 54– 67. Bibcode : 1997SIAMR..39...54E . doi : 10.1137/S0036144595293959 . Archivado (PDF) del original el 14 de agosto de 2024. Recuperado el 11 de abril de 2021 .
  2. 1 2 "«Una discusión y solución para el error FDIV del Pentium» del Notebook Archive (2002) . notebookarchive.org . Wolfram Research, Inc. Consultado el 11 de abril de 2021 .
  3. 1 2 3 4 Tom R. Halfhill (marzo de 1995). "Un error en una tabla de búsqueda creó el infame fallo en el último procesador de Intel" . BYTE . N.° marzo de 1995. Archivado del original el 9 de febrero de 2006. Recuperado el 19 de diciembre de 2006 . 
  4. 1 2 3 Carlton, Jim; Yoder, Stephen K. (21 de diciembre de 1994). "Computadoras: Humildad: Intel reemplazará sus chips Pentium". The Wall Street Journal ( edición del este). pág. B1.  
  5. "1994 - Informe Anual" . Intel. 20 de junio de 2020. Archivado del original el 26 de febrero de 2017. Consultado el 20 de junio de 2020 .
  6. Sharangpani, HP; Barton, ML (30 de noviembre de 1994). Análisis estadístico de fallos de punto flotante en el procesador Pentium (1994) (PDF) (Informe). Intel Corporation. Archivado del original (PDF) el 19 de marzo de 2022. Recuperado el 11 de abril de 2021 .
  7. "Error del Pentium FDIV: una imagen" . Instituto de Investigación Social y Política de la Universidad de Kansas. 30 de noviembre de 1994. Archivado del original el 3 de noviembre de 2021. Consultado el 3 de noviembre de 2010 .
  8. 1 2 Coe, T.; Mathisen, T.; Moler, C.; Pratt, V. (1995). "Aspectos computacionales del caso Pentium" (PDF) . IEEE Computational Science and Engineering . 2 (1): 18– 30. doi : 10.1109/99.372929 . Archivado (PDF) del original el 23 de junio de 2021. Recuperado el 13 de abril de 2021 .
  9. 1 2 3 4 Nicely, Thomas (19 de agosto de 2011). "Preguntas frecuentes sobre el fallo FDIV del Pentium" . trnicely.net . Archivado del original el 18 de junio de 2019. Recuperado el 18 de junio de 2019 .
  10. 1 2 Markoff, John (24 de noviembre de 1994). "NOTICIAS DE LA EMPRESA; Un fallo compromete la precisión de los chips Pentium" . The New York Times . Archivado del original el 14 de agosto de 2024. Recuperado el 11 de abril de 2021 .
  11. Alexander Wolfe (9 de noviembre de 1994). "Intel corrige un fallo de la FPU del Pentium" . Electronic Engineering Times . Archivado del original el 18 de diciembre de 2010. Consultado el 19 de enero de 2011 .
  12. Moler, Cleve (Invierno de 1995). "Una historia de dos números" (PDF) . Noticias y notas de MATLAB . MathWorks. Archivado (PDF) del original el 14 de agosto de 2024. Recuperado el 21 de abril de 2021 .
  13. "BTD12: Principios de programación del software Id" . TNG Technology Consulting GmbH. 6 de agosto de 2019. Archivado del original el 25 de agosto de 2023. Consultado el 17 de julio de 2023 .
  14. 1 2 Yeraswork, Zewde (30 de marzo de 2011). "Lecciones aprendidas: los fallos del Pentium ayudan a Intel en la retirada del chipset Sandy Bridge" . CRN . Archivado del original el 14 de agosto de 2024. Recuperado el 11 de abril de 2021 .
  15. "Intel adopta una política de reemplazo a pedido para los procesadores Pentium con fallo de coma flotante; asumirá un cargo en las ganancias del cuarto trimestre" . Business Wire. 20 de diciembre de 1994. Consultado el 24 de diciembre de 2006 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  16. Johnston, Louis; Williamson, Samuel H. (2023). "¿Cuál era el PIB de EE. UU. entonces?" . MeasuringWorth . Recuperado el 30 de noviembre de 2023 .Las cifras del deflactor del Producto Interno Bruto de Estados Unidos siguen la serie MeasuringWorth .
  17. Cipra, Barry Arthur (13 de enero de 1995). "Cómo la teoría de números sacó el máximo provecho del chip Pentium". Science . 267 ( 5195): 175. Bibcode : 1995Sci...267..175C . doi : 10.1126/science.267.5195.175 . PMID 17791336. S2CID 19898103 .  
  18. Price, D. (abril de 1995). "Pentium FDIV fallo: lecciones aprendidas". IEEE Micro . 15 (2): 86– 88. doi : 10.1109/40.372360 .
  19. Clarke, EM; Khaira, M.; Zhao, X. (1996). "Verificación de modelos a nivel de palabra: cómo evitar el error FDIV del Pentium" . Actas de la 33.ª conferencia anual sobre automatización del diseño - DAC '96 . págs. 645–648 . doi : 10.1145/240518.240640 . ISBN  0897917790. S2CID 2500033 . Archivado del original el 29 de abril de 2021 . Recuperado el 29 de abril de 2021 . 
  20. O'Leary, J. (2004). "Verificación formal en el diseño de CPU Intel" . Actas de la Segunda Conferencia Internacional ACM e IEEE sobre Métodos y Modelos Formales para el Codiseño, 2004. MEMOCODE '04 . pág. 152. doi : 10.1109/MEMCOD.2004.1459841 . ISBN  0-7803-8509-8Archivado del original el 29 de abril de 2021. Consultado el 29 de abril de 2021 .
  21. Kaivola, Roope; Ghughal, Rajnish; Narasimhan, Naren; Telfer, Amber; Whittemore, Jesse; Pandav, Sudhindra; Slobodová, Anna; Taylor, Christopher; Frolov, Vladimir; Reeber, Erik; Naik, Armaghan (2009). "Reemplazando las pruebas con la verificación formal en la validación del motor de ejecución del procesador Intel Core i7". Verificación asistida por computadora . Notas de clase en ciencias de la computación. Vol. 5643. págs. 414–429 . doi : 10.1007/978-3-642-02658-4_32 . ISBN   978-3-642-02657-7.
  22. "Procesadores P5 (586) de quinta generación | Tipos y especificaciones de microprocesadores | InformIT" . informit.com . 8 de junio de 2001. Archivado del original el 13 de abril de 2021. Consultado el 13 de abril de 2021 .
  23. "Programa de reemplazo de FDIV: Preguntas frecuentes" . Intel . 20 de marzo de 2009. ID de solución CS-012748. Archivado del original el 11 de mayo de 2009. Consultado el 10 de noviembre de 2009 .
  24. Slob, Arie. "Solución de problemas de Windows 95: Cómo comprobar si hay un coprocesador matemático defectuoso" . helpwithwindows.com . Archivado del original el 14 de agosto de 2024. Consultado el 23 de abril de 2019 .
  25. "Pentnt" . Microsoft TechNet . Microsoft . 11 de septiembre de 2009. Archivado del original el 3 de febrero de 2018. Consultado el 23 de abril de 2019 .
  • Página web personal del Dr. Nicely, quien descubrió el error.
  • Una página con información precisa, también sobre la causa.
  • Archivo de la página de información oficial de Intel sobre el error.
  • Caja de CPU Intel sin abrir del programa de reemplazo de FDIV.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Pentium_FDIV_bug&oldid=1350553689 "