stringtranslate.com

Error del Pentium FDIV

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

El error Pentium FDIV es un error de hardware que afecta a la unidad de punto flotante (FPU) de los primeros procesadores Intel Pentium . Debido al error, el procesador devolvía resultados binarios de punto flotante 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 Lynchburg College . [1] Los valores faltantes en una tabla de búsqueda utilizada por el algoritmo de división de punto flotante de la FPU provocaron que los cálculos adquirieran pequeños errores. Si bien estos errores en la mayoría de los casos de uso solo ocurren raramente y dan como resultado pequeñas desviaciones de los valores de salida correctos, en ciertas circunstancias los errores pueden ocurrir con frecuencia y dar lugar a desviaciones más significativas. [2]

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

En diciembre de 1994, Intel retiró los procesadores defectuosos en lo que fue el primer retiro completo de un chip de computadora. [4] En su informe anual de 1994, Intel dijo que incurrió en "un cargo de 475 millones de dólares antes de impuestos... para recuperar el reemplazo y la cancelació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 sobre el 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 puede generar uno. Se implementa utilizando una matriz lógica programable con 2048 celdas, de las cuales 1066 celdas deberían haberse poblado con uno de cinco valores: −2, −1, 0, +1, +2 . Cuando se compiló la matriz original para el Pentium, cinco valores no se descargaron correctamente en el equipo que graba las matrices en los chips; por lo tanto, cinco de las celdas de la matriz contenían cero cuando deberían haber contenido +2. [6]

Como resultado, los cálculos que se basan en estas cinco celdas adquieren errores; Estos errores pueden acumularse repetidamente debido a la naturaleza recursiva del algoritmo SRT. En casos patológicos el error puede alcanzar el cuarto dígito significativo del resultado, aunque esto es raro. El error suele limitarse al noveno o décimo dígito significativo. [3]

Sólo ciertas combinaciones de numerador y denominador desencadenan el error. Un ejemplo comúnmente reportado es dividir 4.195.835 por 3.145.727. Realizar este cálculo en cualquier software que utilizara el coprocesador de punto flotante, como la Calculadora de Windows , permitiría a los usuarios descubrir si su chip Pentium se vio afectado. [7]

El valor correcto del cálculo es:

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 la matriz "vacías". Como resultado, el valor devuelto por un procesador Pentium defectuoso es incorrecto en cuatro dígitos o más: [8]

cual es realmente el valor de4.195.579/3.145.727=4.195.835 - 256/3.145.727.

Descubrimiento y respuesta

Thomas Nicely, profesor de matemáticas en Lynchburg College, había escrito un código para enumerar primos , primos gemelos , primos tripletes y primos cuatrillizos . 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, conjuntos de chips de 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 se había dado cuenta del problema de forma independiente en junio de 1994 y había comenzado a solucionarlo en ese momento, pero decidió no revelar públicamente ningún detalle ni retirar del mercado 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 las pruebas del defecto en 486-DX4 , Pentium y clones de Pentium . [9] Otros verificaron rápidamente el error y la noticia se difundió rápidamente en Internet . El error adquirió el nombre de "error Pentium FDIV" del mnemotécnico del lenguaje ensamblador x86 para la división de punto flotante, la instrucción afectada más utilizada. [9]

La historia apareció por primera vez en la prensa el 7 de noviembre de 1994, en un artículo en Electronic Engineering Times , "Intel fixes a Pentium FPU glitch" de Alexander Wolfe, [11] y posteriormente fue recogida por CNN en un segmento transmitido el 22 de noviembre. También se informó sobre el asunto en el New York Times y el Boston Globe , ocupando la portada de este último. [10] [12]

En este punto, Intel reconoció la falla del punto flotante, pero afirmó que no era grave y que no afectaría a la mayoría de los usuarios. Intel ofreció reemplazar 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, provocó una prensa negativa significativa para la empresa. Durante una charla de 2019, mientras reflexionaba sobre el desarrollo de Quake , John Romero describió con qué frecuencia y persistencia este error podría reproducirse al describir el comportamiento que Michael Abrash pasó horas rastreando que daría como resultado que partes de un nivel de juego aparecieran inesperadamente cuando se veían desde ciertos ángulos de cámara. . [13] IBM detuvo la venta de PC que contienen CPU Intel y el precio de las acciones de Intel disminuyó significativamente. [14] Algunos miembros de la industria cuestionaron el motivo detrás de la decisión de IBM; IBM produjo las CPU PowerPC en ese momento y potencialmente se beneficiaría de cualquier daño a la reputación del Pentium o Intel como empresa. Sin embargo, la decisión llevó a los compradores corporativos de equipos de PC a exigir reemplazos de las CPU Pentium existentes, y poco después otros fabricantes de PC comenzaron a ofrecer reemplazos "sin preguntas" de chips Pentium defectuosos. [4]

La creciente insatisfacción con la respuesta de Intel llevó a la compañía a ofrecer reemplazar todos los procesadores Pentium defectuosos a pedido el 20 de diciembre. [15] El 17 de enero de 1995, Intel anunció un cargo antes de impuestos de 475 millones de dólares contra las ganancias, aparentemente el costo total asociado con sustitución de los procesadores defectuosos. [9] Esto equivale a 837 millones de dólares en 2022. [16] Intel fue criticada por prohibir a los revendedores y fabricantes de equipos originales participar en el programa de retirada, exigiendo que los usuarios finales reemplacen 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 la falla 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 brinda 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 error FDIV ha sido citada como un caso del impacto en las relaciones públicas de un problema que eclipsa el impacto práctico de dicho problema en los clientes. [18] Si bien era poco probable que la mayoría de los usuarios encontraran la falla en su computación diaria, la reacción inicial de la compañía de no reemplazar los chips a menos que los clientes pudieran garantizar que estaban afectados provocó el rechazo de una minoría vocal de expertos de la industria. La publicidad posterior generada sacudió la confianza de los consumidores en las CPU y generó una demanda de acción incluso por parte de personas que probablemente no se verían afectadas por el problema. Andy Grove , director ejecutivo de Intel en ese momento, fue citado en The Wall Street Journal diciendo: "Creo que el núcleo del problema que pasamos por alto... fue que presumimos decirle a alguien de qué debería o no preocuparse, o debería o no no debería hacer". [4]

A raíz del error y el posterior retiro del mercado, hubo un marcado aumento en el uso de la verificación formal de las operaciones de punto flotante de hardware en toda la industria de semiconductores. Impulsado por el descubrimiento del error, en 1996 se desarrolló una técnica aplicable al algoritmo SRT llamada "verificación de modelo a nivel de palabra". [19] Intel pasó a utilizar ampliamente la verificación formal en el desarrollo de arquitecturas de CPU posteriores. En el desarrollo del Pentium 4 , se utilizó la evaluación de la trayectoria simbólica y la demostración de teoremas para encontrar una serie de errores que podrían haber dado lugar a un incidente de recuperación similar si no hubieran sido detectados. [20] La primera microarquitectura Intel que utilizó la verificación formal como método principal de validación fue Nehalem , desarrollada en 2008. [21]

Modelos afectados

El error FDIV afecta al Pentium P5 800 de 60 y 66 MHz en niveles escalonados anteriores a D1, y al Pentium P54C 600 de 75, 90 y 100 MHz en niveles escalonados anteriores a B5. Las CPU P54C y P54CQS de 120 MHz no se ven afectadas. [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 en IEEE Computational Science & Engineering , es verificar si hay divisores que puedan activar el acceso a las celdas de la matriz lógica programable que contienen erróneamente cero y, si se encuentran, multiplicar tanto el numerador como el denominador por 15/16. Esto los saca del rango de "buggy". Esta solución conlleva una penalización de velocidad mensurable: en el peor de los casos, para un programa que no hace nada más que operaciones FDIV con divisores incorrectos, el tiempo de ejecución se duplicaría ya que cada FDIV tomaría alrededor de 80 en lugar de 40 ciclos de reloj. Con más divisores aleatorios, el tiempo promedio por FDIV fue de aproximadamente 50 ciclos de reloj, es decir, 10 ciclos agregados para verificar el divisor: solo 5 de 1024 divisores aleatorios activarían la corrección de escala. Dado que FDIV es una operación poco común en la mayoría de los programas, la desaceleración normal con la solución instalada era típicamente de un porcentaje o menos. [8]

El principal desafío al que se enfrentaron las empresas de software fue implementar la solución en 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 de 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 detectaría un controlador de excepciones (también parcheado). Desde aquí, se podría ejecutar código arbitrario para solucionar 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 verificar la presencia del error y desactivar la FPU si se encuentra. [24] [25]

Ver también

Referencias

  1. ^ ab Edelman, Alan (1 de enero de 1997). "Las matemáticas del error de la división Pentium" (PDF) . Revisión SIAM . 39 (1): 54–67. Código Bib : 1997SIAMR..39...54E. doi : 10.1137/S0036144595293959 . Consultado el 11 de abril de 2021 .
  2. ^ ab "'Una discusión y solución para el error Pentium FDIV 'del Notebook Archive (2002) ". notebookarchive.org . Wolfram Research, Inc. Consultado el 11 de abril de 2021 .
  3. ^ ab Tom R. Halfhill (marzo de 1995). "Un error en una tabla de búsqueda creó el infame error en el último procesador de Intel". BYTE . No. Marzo de 1995. Archivado desde el original el 9 de febrero de 2006 . Consultado el 19 de diciembre de 2006 .
  4. ^ abc Carlton, Jim; Yoder, Stephen K. (21 de diciembre de 1994). "Computadoras: Humble Pie: Intel reemplazará sus chips Pentium". The Wall Street Journal (edición del este). pag. B1.
  5. ^ "1994 - Informe anual". Intel. 20 de junio de 2020. Archivado desde el 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 fallas de coma flotante en el procesador Pentium (1994) (PDF) (Reporte). Corporación Intel . Consultado 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 . Consultado el 3 de noviembre de 2010 .
  8. ^ ab Coe, T.; Mathisen, T.; Moler, C.; Pratt, V. (1995). "Aspectos computacionales del asunto Pentium" (PDF) . IEEE Ciencia e Ingeniería Computacional . 2 (1): 18–30. doi : 10.1109/99.372929 . Consultado el 13 de abril de 2021 .
  9. ^ abcd Muy bien, Thomas (19 de agosto de 2011). "Preguntas frecuentes sobre fallas de Pentium FDIV". trnicely.net . Archivado desde el original el 18 de junio de 2019 . Consultado el 18 de junio de 2019 .
  10. ^ ab Markoff, John (24 de noviembre de 1994). "NOTICIAS DE LA COMPAÑÍA; Una falla socava la precisión de los chips Pentium". Los New York Times . Consultado el 11 de abril de 2021 .
  11. ^ Alexander Wolfe (9 de noviembre de 1994). "Intel soluciona un problema técnico de Pentium FPU". Tiempos de ingeniería electrónica .
  12. ^ Moler, Cleve (invierno de 1995). "Una historia de dos números" (PDF) . Noticias y notas de MATLAB . Trabajos de matemáticas . Consultado el 21 de abril de 2021 .
  13. ^ "BTD12: Los principios de programación del software de identificación". TNG Technology Consulting GmbH. 6 de agosto de 2019 . Consultado el 17 de julio de 2023 .
  14. ^ ab Yeraswork, Zewde (30 de marzo de 2011). "Lecciones aprendidas: las fallas de Pentium ayudan a Intel en la retirada del chipset Sandy Bridge". CRN . Consultado el 11 de abril de 2021 .
  15. ^ "Intel adopta una política de reemplazo a pedido en procesadores Pentium con fallas de punto flotante; asumirá el cargo del cuarto trimestre contra las ganancias". Cable comercial. 20 de diciembre de 1994. Archivado desde el original el 10 de julio de 2012 . Consultado el 24 de diciembre de 2006 .
  16. ^ Johnston, Luis; Williamson, Samuel H. (2023). "¿Cuál era entonces el PIB de Estados Unidos?". Medición del valor . Consultado el 30 de noviembre de 2023 .Las cifras del deflactor del Producto Interno Bruto de los Estados Unidos siguen la serie Medición del valor .
  17. ^ Cipra, Barry Arthur (13 de enero de 1995). "Cómo la teoría de números sacó lo mejor del chip Pentium". Ciencia . 267 (5195): 175. Bibcode : 1995Sci...267..175C. doi : 10.1126/ciencia.267.5195.175. PMID  17791336. S2CID  19898103.
  18. ^ Precio, D. (abril de 1995). "Lecciones aprendidas sobre fallas de Pentium FDIV". Micro IEEE . 15 (2): 86–88. doi : 10.1109/40.372360.
  19. ^ Clarke, EM; Khaira, M.; Zhao, X. (1996). "Comprobación del modelo a nivel de palabra: evitar el error Pentium FDIV". 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 . Consultado el 29 de abril de 2021 .
  20. ^ O'Leary, J. (2004). "Verificación formal en diseño de CPU Intel". Actas. Segunda Conferencia Internacional ACM e IEEE sobre Métodos y Modelos Formales para el Codiseño, 2004. MEMOCODE '04 . pag. 152. doi :10.1109/MEMCOD.2004.1459841. ISBN 0-7803-8509-8. Consultado el 29 de abril de 2021 .
  21. ^ Kaivola, Roope; Gughal, Rajnish; Narasimhan, Naren; Telfer, Ámbar; Whittemore, Jesse; Pandav, Sudhindra; Slobodová, Anna; Taylor, Cristóbal; Frolov, Vladimir; Reeber, Erik; Naik, Armaghan (2009). "Reemplazo de pruebas con verificación formal en la validación del motor de ejecución del procesador Intel® Core ™ i7". Verificación asistida por computadora . 5643 : 414–429. doi : 10.1007/978-3-642-02658-4_32 .
  22. ^ "Procesadores P5 (586) de quinta generación | Tipos y especificaciones de microprocesadores | InformIT". www.informit.com . 8 de junio de 2001 . Consultado el 13 de abril de 2021 .
  23. ^ "Programa de reemplazo FDIV: preguntas frecuentes". Intel . 20 de marzo de 2009. ID de solución CS-012748. Archivado desde el original el 11 de mayo de 2009 . Consultado el 10 de noviembre de 2009 .
  24. ^ Vago, Arie. "Solución de problemas de Windows 95: cómo comprobar si hay un coprocesador matemático defectuoso". www.ayudaconwindows.com . Consultado el 23 de abril de 2019 .
  25. ^ "Pentnt". Microsoft Technet . Microsoft . 11 de septiembre de 2009 . Consultado el 23 de abril de 2019 .

enlaces externos