Defeito de ponto flutuante – Wikipédia, a enciclopédia livre
1Lançamento do processador
2Descoberta do defeito
3Estratégia de recall
Intel Pentium 66MHz (sSpec=SX837) com bug FDIV.
Lançamento do processador[editar | editar código-fonte]
Em 1994, a Intel iniciou a série Pentium, lançando o processador mais potente da época, sucessor do 486. O novo processador Pentium foi aceito rapidamente pelo mercado, tornando-se um grande sucesso.
Uma das inovações da família Pentium era uma tabela, usada para aumentar a velocidade do algoritmo de multiplicação em ponto flutuante do processador. Ainda na fase de testes, a Intel percebeu uma falha nessa tabela, mas os testes mostraram se tratar de um erro muito raro. Segundo o fabricante, um usuário normal só perceberia o erro uma vez a cada 27.000 anos. A Intel decidiu corrigir este problema nas versões seguintes do processador (os Pentium III e Pentium IV, por exemplo, não apresentam tal problema), pois acharam que ninguém perceberia o raro erro de cálculo do seu poderoso processador.
Descoberta do defeito[editar | editar código-fonte]
A previsão da Intel estava errada. Ainda em 1994, Thomas R. Nicely percebeu.[1] o erro ao analisar, neste processador, cálculos atinentes à constante de Brun (somas de recíprocos de números primos gêmeos) até 1014[2] Confiando na sua teoria, Nicely pôs em dúvida a eficiência do processador Pentium, e realizou os mesmos cálculos, desta vez utilizando um processador 486. Ao comparar os resultados de inúmeros cálculos feitos, ora com processador Pentium, ora com 486, Nicely concluiu que o erro era realmente muito raro, acontecia apenas no cálculo de produtos de determinados números.
Um exemplo é a expressão A - (( A / B) X B), um cálculo simples, onde divide-se A por um número B e depois multiplica-se o resultado por B, obtendo como resultado o próprio número A, então A – A forneceria 0 como resultado final do cálculo. Nicely mostrou[3] que, substituindo, nesta expressão, a variável A por 4.195.835 e a variável B por 3.145.727, no processador Pentium, o resultado seria 256. Estava comprovado o defeito de ponto flutuante nos processadores Pentium.
Estratégia de recall[editar | editar código-fonte]
A Intel assumiu o erro, mas propôs, inicialmente, trocar apenas os processadores de quem conseguisse provar que usava o computador para cálculos matemáticos que exigissem precisão absoluta. A resposta de centenas de milhares de consumidores foi clara, as pessoas haviam pago mais de US$ 600,00 por um processador, e não queriam conviver com essa possibilidade de erro de cálculo, principalmente depois da IBM declarar que a probabilidade do erro ocorrer, segundo as suas pesquisas, era de uma vez a cada 24 dias e não os 27.000 anos anunciados pela Intel. Na ocasião, a IBM chegou a ameaçar retirar do mercado todos os computadores IBM equipados com processador Pentium.
A Intel acabou cedendo ao apelo de seus clientes, contabilizando um prejuízo de mais de US$ 450.000.000,00, gastos com a substituição destes processadores.
«Some Results of Computational Research in Prime Numbers (Computational Number Theory)» (em inglês). Página científica (pessoal) de Thomas R. Nicely
↑ Thomas R. Nicely (30 de outubro de 1994). «Original e-mail message announcing the discovery of the Pentium division flaw» (em inglês). Consultado em 11 de abril de 2012
↑ Thomas R. Nicely (19 de agosto de 2011). «A personal FAQ regarding the Pentium division flaw» (em inglês). Consultado em 11 de abril de 2012
↑ Thomas R. Nicely. «pentbug.zip, a zipfile containing the C source code (pentbug.c) and corresponding DOS executables (pentbug.exe and bug16bit.exe) for a program which will check for the flaw.» (em inglês). Consultado em 11 de abril de 2012