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 devolvería resultados de coma 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 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 llevaron a 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 de cada 9 mil millones de divisiones de punto 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 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". [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 llenado 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 generalmente se limita al noveno o décimo dígito significativo. [3]
Solo ciertas combinaciones de numerador y denominador desencadenan el error. Un ejemplo comúnmente reportado es dividir 4,195,835 entre 3,145,727. Realizar este cálculo en cualquier software que utilice el coprocesador de punto flotante, como Windows Calculator , 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 matriz 'vacías'. Como resultado, el valor devuelto por un procesador Pentium defectuoso es incorrecto en o más de cuatro dígitos: [8]
Descubrimiento y respuesta
Thomas Nicely, profesor de matemáticas en el Lynchburg College, había escrito código para enumerar primos , primos gemelos , trillizos primos y cuatrillizos primos . Nice 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 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 los informes, Intel se había enterado del problema de forma independiente en junio de 1994, y había comenzado a solucionarlo en este punto, pero decidió no revelar públicamente ningún detalle o recordar 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 de la falla en 486-DX4s , Pentiums y clones de Pentium . [9] El error fue verificado rápidamente por otros y la noticia se difundió rápidamente en Internet . El insecto adquiere el nombre "Pentium FDIV fallo" de la lenguaje ensamblador x86 nemotécnica para f loating puntos div isión, la instrucción de uso más frecuente afectados. [9]
La historia apareció por primera vez en la prensa el 7 de noviembre de 1994, en un artículo de Electronic Engineering Times , "Intel corrige un problema técnico de Pentium FPU" de Alexander Wolfe, [11] y posteriormente fue recogida por CNN en un segmento transmitido el 22 de noviembre. También fue informado por el New York Times y el Boston Globe , que ocupa la primera plana en 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 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 presión negativa significativa para la empresa. IBM detuvo la venta de PC que contenían CPU Intel y el precio de las acciones de Intel disminuyó significativamente. [13] El motivo de la decisión de IBM fue cuestionado por algunos en la industria; 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]
El creciente descontento con la respuesta de Intel llevó a la compañía a ofrecer reemplazar todos los procesadores Pentium defectuosos a pedido el 20 de diciembre. [14] 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 $ 743 millones en 2019. [15] Intel fue criticado por prohibir a los revendedores y fabricantes de equipos originales participar en el programa de retiro del mercado, requiriendo 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". [13]
Un artículo de 1995 en Science describe el valor de los problemas de la teoría de números en el descubrimiento de errores informáticos y ofrece los antecedentes matemáticos y la historia de la constante de Brun , el problema en el que estaba trabajando Nicely cuando descubrió el error. [dieciséis]
La respuesta de Intel al error FDIV se ha citado como un caso del impacto de relaciones públicas de un problema que eclipsa el impacto práctico de dicho problema en los clientes. [17] 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 de expertos de la industria. La publicidad subsiguiente generada sacudió la confianza de los consumidores en las CPU y provocó una demanda de acción incluso de personas que probablemente no se verán afectadas por el problema. Andrew Grove, director ejecutivo de Intel en ese momento, fue citado en el Wall Street Journal diciendo: "Creo que el núcleo del problema que pasamos por alto [...] fue que supusimos decirle a alguien lo que debería o no debería preocuparnos, o debería o 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 la industria de los semiconductores. Impulsado por el descubrimiento del error, en 1996 se desarrolló una técnica aplicable al algoritmo SRT llamada "verificación de modelos a nivel de palabra". [18] Intel pasó a utilizar la verificación formal ampliamente en el desarrollo de arquitecturas de CPU posteriores. En el desarrollo del Pentium 4 , la evaluación de la trayectoria simbólica y la demostración de teoremas se utilizaron para encontrar una serie de errores que podrían haber llevado a un incidente de recuperación similar si no hubieran sido detectados. [19] La primera microarquitectura de Intel que utilizó la verificación formal como método principal de validación fue Nehalem , desarrollada en 2008. [20]
Modelos afectados
El error FDIV afecta al Pentium P5 800 de 60 y 66 MHz en niveles de escalonamiento antes de D1, y al Pentium P54C 600 de 75, 90 y 100 MHz en escalones antes de B5. Las CPU de 120 MHz P54C y P54CQS no se ven afectadas. [21] [22]
Parches de software
Los fabricantes crearon varios parches de software para solucionar el error. Un algoritmo específico, descrito en un artículo en IEEE Computational Science & Engineering , es verificar los numeradores y denominadores que activarán el acceso a las celdas de matriz lógica programable que contienen erróneamente cero y, si se encuentran, multiplicar ambos números por 15/16. Esto los saca del rango de 'buggy'. Sin embargo, hacer esto tiene una penalización de velocidad significativa, en algunos casos duplicando el tiempo necesario para realizar el cálculo. [8]
El principal desafío al que se enfrentaban las empresas de software era 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 luego desencadenaría una excepción que detectaría un controlador de excepciones (también parcheado). A partir de aquí, se podría ejecutar código arbitrario para solucionar el error. [2]
Microsoft ofreció soluciones alternativas a nivel de sistema operativo en versiones de Windows hasta Windows XP. Se incluyeron utilidades con el sistema operativo para verificar la presencia del error y deshabilitar la FPU si se encuentra. [23] [24]
Ver también
- Error del Pentium F00F
- MOS Technology 6502 errores y peculiaridades
- Problemas de precisión en operaciones de punto flotante
Referencias
- ↑ a b Edelman, Alan (1 de enero de 1997). "Las matemáticas del error de división Pentium" (PDF) . Revisión SIAM . 39 (1): 54–67. Código Bibliográfico : 1997SIAMR..39 ... 54E . doi : 10.1137 / S0036144595293959 . Consultado el 11 de abril de 2021 .
- ^ a b " ' Discusión y solución del error Pentium FDIV' del archivo de Notebook (2002)" . notebookarchive.org . Wolfram Research, Inc . Consultado el 11 de abril de 2021 .
- ^ a b 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 (marzo de 1995). Archivado desde el original (- Búsqueda académica ) el 9 de febrero de 2006 . Consultado el 19 de diciembre de 2006 .
- ^ a b c Carlton, Jim; Yoder, Stephen K. (21 de diciembre de 1994). "Computadoras: Humble Pie: Intel para reemplazar sus chips Pentium". Wall Street Journal (edición oriental ed., 21 de diciembre de 1994). pag. B1.
- ^ "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 .
- ^ Sharangpani, HP; Barton, ML (30 de noviembre de 1994). Análisis estadístico de la falla de punto flotante en el procesador Pentium (1994) (PDF) (Informe). Intel Corporation . Consultado el 11 de abril de 2021 .
- ^ "Error de Pentium FDIV - una imagen" . Instituto de Política e Investigación Social de la Universidad de Kansas. 30 de noviembre de 1994 . Consultado el 3 de noviembre de 2010 .
- ^ a b Coe, T .; Mathisen, T .; Moler, C .; Pratt, V. (1995). "Aspectos computacionales del asunto Pentium" (PDF) . IEEE Ciencias e Ingeniería Computacional . 2 (1): 18–30. doi : 10.1109 / 99.372929 . Consultado el 13 de abril de 2021 .
- ^ a b c d 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 .
- ^ a b Markoff, John (24 de noviembre de 1994). "NOTICIAS DE LA COMPAÑÍA; Defecto socava la precisión de los chips Pentium" . The New York Times . Consultado el 11 de abril de 2021 .
- ^ Alexander Wolfe (9 de noviembre de 1994). "Intel corrige un error de Pentium FPU" . Tiempos de Ingeniería Electrónica.
- ^ Moler, Cleve (invierno de 1995). "Una historia de dos números" (PDF) . Noticias y notas de MATLAB . MathWorks . Consultado el 21 de abril de 2021 .
- ^ a b 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 .
- ^ "Intel adopta una política de reemplazo a pedido en los procesadores Pentium con falla de punto flotante; asumirá el cargo del cuarto trimestre contra las ganancias" . Business Wire. 20 de diciembre de 1994. Archivado desde el original el 10 de julio de 2012 . Consultado el 24 de diciembre de 2006 .
- ^ Thomas, Ryland; Williamson, Samuel H. (2020). "¿Cuál fue entonces el PIB de Estados Unidos?" . Medir el valor . Consultado el 22 de septiembre de 2020 .Las cifras del deflactor del producto interno bruto de Estados Unidos siguen la serie del valor de medición .
- ^ 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. Código Bibliográfico : 1995Sci ... 267..175C . doi : 10.1126 / science.267.5195.175 . PMID 17791336 . S2CID 19898103 .
- ^ Price, D. (abril de 1995). "Pentium FDIV fallas-lecciones aprendidas". IEEE Micro . 15 (2): 86–88. doi : 10.1109 / 40.372360 .
- ^ Clarke, EM; Khaira, M .; Zhao, X. (1996). "Verificación del modelo de nivel de palabra: evitar el error Pentium FDIV" . Actas de la 33ª Conferencia Anual sobre la Conferencia de Automatización del Diseño - DAC '96 . Dac '96: 645–648. doi : 10.1145 / 240518.240640 . ISBN 0897917790. S2CID 2500033 . Consultado el 29 de abril de 2021 .
- ^ O'Leary, J. (2004). "Verificación formal en el diseño de cpu intel" . Actas. Segunda Conferencia Internacional ACM e IEEE sobre métodos y modelos formales para el co-diseño, 2004. MEMOCODE '04. : 152. doi : 10.1109 / MEMCOD.2004.1459841 . ISBN 0-7803-8509-8. Consultado el 29 de abril de 2021 .
- ^ Kaivola, Roope; Ghughal, Rajnish; Narasimhan, Naren; Telfer, ámbar; Whittemore, Jesse; Pandav, Sudhindra; Slobodová, Anna; Taylor, Christopher; 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 $ ^ {\ scriptsize \ circledR} $ CoreTM i7" . Verificación asistida por computadora . 5643 : 414–429. doi : 10.1007 / 978-3-642-02658-4_32 . Consultado el 29 de abril de 2021 .
- ^ "Procesadores de quinta generación P5 (586) | Tipos y especificaciones de microprocesadores | InformIT" . www.informit.com . 8 de junio de 2001 . Consultado el 13 de abril de 2021 .
- ^ "Programa de sustitución de 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 .
- ^ Slob, Arie. "Solución de problemas de Windows 95: cómo comprobar si hay un coprocesador matemático defectuoso" . www.helpwithwindows.com . Consultado el 23 de abril de 2019 .
- ^ "Pentnt" . Microsoft TechNet . Microsoft . 11 de septiembre de 2009 . Consultado el 23 de abril de 2019 .
enlaces externos
- Sitio web personal del Dr. Nicely, quien descubrió el error.
- Una página con información precisa, también sobre la causa
- Archivo ZIP que contiene más detalles (consulte el formato de archivo ZIP para obtener detalles sobre el archivo)
- Archivo de la página de información oficial de Intel sobre el error
- Caja de CPU Intel sin abrir del programa de reemplazo FDIV