Saltar para o conteúdo

Defeito de ponto flutuante

Origem: Wikipédia, a enciclopédia livre.
A versão imprimível já não suportada e pode apresentar defeitos de composição gráfica. Atualize os favoritos do seu navegador e use a função de impressão padrão do navegador.
Intel Pentium 66MHz (sSpec=SX837) com bug FDIV.

O defeito de ponto flutuante, também conhecido em inglês por Pentium FDIV bug, foi um defeito ocorrido nos primeiras unidades de processamento em ponto flutuante da Intel.

Lançamento do processador

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

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 AA 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

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.

Ligações externas

Referências

  1. 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 
  2. 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 
  3. 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