Pentium FDIV bug
The Pentium FDIV bug was a bug in the Intel P5 Pentium floating point unit (FPU). Certain floating point division operations performed with these processors would produce incorrect results. According to Intel, there were a few missing entries in the lookup table used by the divide operation algorithm.[1]
The flaw was independently discovered and publicly disclosed in October 1994 by Professor Thomas Nicely, then at Lynchburg College, Virginia, USA.[2]
Although encountering the flaw was extremely rare in practice (Byte magazine estimated that 1 in 9 billion floating point divides with random parameters would produce inaccurate results),[3] both the flaw and Intel's initial handling of the matter were heavily criticized. Intel ultimately recalled the defective processors.
Contents |
Chronology
Professor Thomas Nicely, then a professor of mathematics at Lynchburg College, had written code to enumerate primes, twin primes, prime triplets, and prime quadruplets. Nicely noticed some inconsistencies in the calculations on June 13, 1994 shortly after adding a Pentium system to his group of computers, but was unable to eliminate other factors (such as programming errors, motherboard chipsets, etc.) until October 19, 1994. On October 24, 1994 he reported the issue to Intel. According to Nicely, his contact person at Intel would later admit that Intel had been aware of the problem since May 1994, when the flaw had been discovered when testing the FPU for its new P6 core, first used in the Pentium Pro.
On October 30, 1994, Nicely sent an email describing the error he had discovered in the Pentium floating point unit to various contacts, requesting reports of testing for the flaw on 486-DX4s, Pentiums and Pentium clones.[2]
This flaw in the Pentium FPU was quickly verified by other people around the Internet, and became known as the Pentium FDIV bug (FDIV is the x86 assembly language instruction for floating-point division). One example was found where the division result returned by the Pentium was off by about 61 parts per million.[2]
The story first appeared in the press on November 7, 1994, in an article in Electronic Engineering Times, "Intel fixes a Pentium FPU glitch" by Alexander Wolfe.[4]
The story was subsequently picked up by CNN in a segment which aired on November 21, 1994.[2] This brought it into widespread public prominence.
Publicly, Intel acknowledged the floating point flaw but claimed that it was not serious and would not affect most users. Intel offered to replace processors to users who could prove that they were affected. However, although most independent estimates found the bug to be of little importance and would have negligible effect on most users, it caused a great public outcry. Companies like IBM (whose IBM 5x86C microprocessor competed at that time with the Intel Pentium line) joined the condemnation.
On December 20, 1994 Intel offered to replace all flawed Pentium processors on the basis of request, in response to mounting public pressure.[5] Although it turned out that only a small fraction of Pentium owners bothered to get their chips replaced, the financial impact on the company was significant. Intel announced on January 17, 1995, a pre-tax charge of $475 million against earnings, ostensibly the total cost associated with replacement of the flawed processors.[2] Some of the defective chips were later turned into key rings by Intel.[6]
A 1995 article in Science describes the value of number theory problems in discovering computer bugs and gives the mathematical background and history of Brun's constant, the problem Nicely was working on when he discovered the bug.[7]
Affected models
This problem occurred only on some models of the original Pentium processor.[8] Any Pentium family processor with a clock speed of at least 120 MHz is new enough not to have this bug.[8]
On affected models, the Intel Processor Frequency ID Utility checks for the presence of this bug.
The ten affected processors are listed below. The 39 S-spec of those processors are not listed in the Intel processor specification finder web page.
Family | Model | Stepping | Manufacturing Stepping | Clock rate | FSB speed | S-spec |
---|---|---|---|---|---|---|
5 | 1 | 3 | B1 | 60 MHz | 60 MHz | Q0352 |
5 | 1 | 3 | B1 | 60 MHz | 60 MHz | Q0412 |
5 | 1 | 3 | B1 | 60 MHz | 60 MHz | SX753 |
5 | 1 | 3 | B1 | 66 MHz | 66 MHz | Q0353 |
5 | 1 | 3 | B1 | 66 MHz | 66 MHz | Q0413 |
5 | 1 | 3 | B1 | 66 MHz | 66 MHz | SX754 |
5 | 1 | 5 | C1 | 60 MHz | 60 MHz | Q0466 |
5 | 1 | 5 | C1 | 60 MHz | 60 MHz | SX835 |
5 | 1 | 5 | C1 | 60 MHz | 60 MHz | SZ949 |
5 | 1 | 5 | C1 | 66 MHz | 66 MHz | Q0467 |
5 | 1 | 5 | C1 | 66 MHz | 66 MHz | SX837 |
5 | 1 | 5 | C1 | 66 MHz | 66 MHz | SZ950 |
Family | Model | Stepping | Manufacturing Stepping | Clock rate | FSB speed | S-spec |
---|---|---|---|---|---|---|
5 | 2 | 1 | B1 | 75 MHz | 50 MHz | Q0601 |
5 | 2 | 1 | B1 | 90 MHz | 60 MHz | Q0542 |
5 | 2 | 1 | B1 | 90 MHz | 60 MHz | Q0613 |
5 | 2 | 1 | B1 | 90 MHz | 60 MHz | Q0543 |
5 | 2 | 1 | B1 | 90 MHz | 60 MHz | SX879 |
5 | 2 | 1 | B1 | 90 MHz | 60 MHz | SX885 |
5 | 2 | 1 | B1 | 90 MHz | 60 MHz | SX909 |
5 | 2 | 1 | B1 | 90 MHz | 60 MHz | SX874 |
5 | 2 | 1 | B1 | 100 MHz | 66 MHz | Q0563 |
5 | 2 | 1 | B1 | 100 MHz | 66 MHz | Q0587 |
5 | 2 | 1 | B1 | 100 MHz | 66 MHz | Q0614 |
5 | 2 | 1 | B1 | 100 MHz | 66 MHz | SX886 |
5 | 2 | 1 | B1 | 100 MHz | 66 MHz | SX910 |
5 | 2 | 2 | B3 | 75 MHz | 50 MHz | Q0606 |
5 | 2 | 2 | B3 | 75 MHz | 50 MHz | SX951 |
5 | 2 | 2 | B3 | 90 MHz | 60 MHz | Q0628 |
5 | 2 | 2 | B3 | 90 MHz | 60 MHz | Q0611 |
5 | 2 | 2 | B3 | 90 MHz | 60 MHz | Q0612 |
5 | 2 | 2 | B3 | 90 MHz | 60 MHz | SX923 |
5 | 2 | 2 | B3 | 90 MHz | 60 MHz | SX922 |
5 | 2 | 2 | B3 | 90 MHz | 60 MHz | SX921 |
5 | 2 | 2 | B3 | 90 MHz | 60 MHz | SX942 |
5 | 2 | 2 | B3 | 90 MHz | 60 MHz | SX943 |
5 | 2 | 2 | B3 | 90 MHz | 60 MHz | SX944 |
5 | 2 | 2 | B3 | 90 MHz | 60 MHz | SZ951 |
5 | 2 | 2 | B3 | 100 MHz | 66 MHz | Q0677 |
5 | 2 | 2 | B3 | 100 MHz | 66 MHz | SX960 |
The presence of the bug can be checked manually by performing the following calculation in any application that uses native floating point numbers, including the Windows Calculator or Microsoft Excel in Windows 95/98.
The correct value is
However, the value returned by the flawed Pentium would be incorrect beyond four significant digits[9]:
Pentium bug in popular media
During one of the conversations with Legion, one of the characters in the popular video game Mass Effect 2, he says:
An equation with a result of 1.33382 returns as 1.33381. This changes the results of all higher processes. We will reach different conclusions.
See also
References
- ^ "FDIV Replacement Program: Description of the Flaw". Intel. 2004-07-09. http://support.intel.com/support/processors/pentium/sb/CS-013007.htm. Retrieved 2006-12-19.
- ^ a b c d e Professor Thomas Nicely. "Pentium FDIV flaw FAQ". http://www.trnicely.net/pentbug/pentbug.html.
- ^ Tom R. Halfhill (1995-03). "An error in a lookup table created the infamous bug in Intel's latest processor" (– Scholar search). BYTE (March 1995). http://www.byte.com/art/9503/sec13/art1.htm. Retrieved 2006-12-19.[dead link]
- ^ Alexander Wolfe. "Intel fixes a Pentium FPU glitch". http://web.ccr.jussieu.fr/ccr/Documentation/Calcul/matlab5v11/docs/00001/00197.htm.
- ^ "Intel adopts upon-request replacement policy on Pentium processors with floating point flaw; Will take Q4 charge against earnings". Business Wire. 1994-12-20. http://findarticles.com/p/articles/mi_m0EIN/is_1994_Dec_20/ai_15939945. Retrieved 2006-12-24.
- ^ "How many engineers does it take to change a lightbulb?". Boiledbeans. 20 April 2009. http://www.boiledbeans.net/2009/04/20/how-many-engineers-does-it-take-to-change-a-lightbulb/. Retrieved 10 November 2009.
- ^ Cipra, Barry (1995-01-13). "How number theory got the best of the Pentium chip". Science 267 (5195): 175. doi:10.1126/science.267.5195.175. PMID 17791336.
- ^ a b "FDIV Replacement Program: Frequently asked questions". Intel. 2009-03-20. http://www.intel.com/support/processors/pentium/sb/CS-012748.htm. Retrieved 2009-11-10.
- ^ "Pentium FDIV bug - a Picture". Kansas University Institute for Policy and Social Research. 1994-11-30. http://www.ipsr.ku.edu/stafffil/hoyle/pentium_fdiv/. Retrieved 2010-11-03.
- Alexander Wolfe. ">Intel fixes a Pentium FPU glitch
External links
- Personal website of Dr. Nicely, who discovered the bug
- A page with precise information, also about the cause
- Ivars Peterson's Mathland on the bug
- A Tale of Two Numbers, by Cleve Moler of MathWorks
- ZIP-file containing more details (See ZIP file format for details on the file)
- Intel's official site
- Unopened Intel CPU box from the FDIV replacement program