O especialista em história da eletrônica e engenharia reversa Ken Shirriff disse que foi capaz de descobrir transistores na primeira geração dos processadores Intel Pentium que causaram o “erro FDIV” que custou ao fabricante US$ 475 milhões em 1994.
O bug do FDIV (Floating Point Division) era que os processadores não executavam corretamente a operação de divisão de números de ponto flutuante. O especialista se armou com um microscópio e examinou a matriz lógica programável (PLA) responsável por esse erro. O processador Intel Pentium baseado na arquitetura P5 foi fabricado usando a tecnologia de processo de 800 nm – o cristal contém 3,1 milhões de transistores, e seu arranjo pode realmente ser estudado sob um microscópio e os blocos de operações no chip podem ser identificados. Com os processadores modernos, que possuem dezenas de bilhões de transistores, isso é impossível.
A unidade de ponto flutuante nos processadores Pentium era mais rápida do que nos chips da época, graças ao algoritmo de divisão SRT, que permitia a divisão a uma taxa de dois bits por clock. Para que funcione corretamente, uma tabela de 2.048 células com os valores “-2”, “-1”, “0”, “1” e “2” foi colocada no chip em 112 linhas. Os valores foram expressos pela presença ou ausência de transistores nas células. Mas cinco entradas da tabela estavam faltando transistores importantes, resultando em valores padrão de “0” em vez do “2” correto. Isso fez com que os cálculos de ponto flutuante produzissem resultados incorretos.
O erro FDIV foi descoberto pelo professor de matemática do Lynchburg College, Thomas R. Nicely, mas a Intel inicialmente o chamou de insignificante e disse que só poderia ocorrer uma vez a cada 27 mil anos. A IBM, porém, determinou que isso poderia ocorrer a cada 24 dias e parou de vender processadores Pentium. Como resultado, a Intel fez recall de todos os processadores e sofreu um prejuízo de US$ 475 milhões. Vale ressaltar que, como resultado do estudo, Shirriff revelou a ausência não de 5 pontos de dados, como se supunha anteriormente, mas de 16, e 11 não detectados anteriormente. não causam erros “por pura sorte”, observou o engenheiro. A Intel acabou corrigindo rapidamente o bug preenchendo todas as entradas não utilizadas nas placas com valores “2” e funcionou.