Intel Pentium partition error
Introduction
On October 30, 1994, Professor Thomas Nicely of Lynchburg University discovered an error in the floating point unit of the Intel Pentium. Nicely noticed that some division operations always returned an erroneous value due to excess. Other people quickly confirmed these errors in the divisions. This design flaw became noticeable very quickly and was given the name Pentium FDIV bug (FDIV is the floating point division instruction of x86 microprocessors). Others highlighted division problems whose result returned by the Pentium was in error by as much as 61 units per million.
Repercussions
These checks created a lot of controversy. Intel initially denied the existence of the problem. Later, Intel stressed the insignificance of its microprocessor defects, wanting to reassure users. Intel refused to routinely replace defective microprocessors; however, if a person could prove that they had been affected by the bug, then Intel would proceed to change their processor. Although evaluations carried out by independent organizations showed the insignificance of the consequences of error and that the effect was negligible in most cases, it led to a situation in which Intel Pentium users demanded the replacement of defective processors. Companies like IBM joined the complaint. Ultimately, Intel was forced to agree to replace all of the defective microprocessors, at enormous cost.
Models affected
The problem occurs only on some models of the original Pentium processor. The bug only exists on some Pentium family processors with a clock speed of less than 120 MHz. On affected models the application Intel Processor Frequency ID checks for the presence of the error.
The ten affected processors are listed below.
Family | Model | Version | See. Nucleus | Vel. Clock | Veloc. FSB | S-spec |
---|---|---|---|---|---|---|
5 | 1 | 3 | B1 | 60 MHz | 60 MHz | Q0352, Q0412, SX753 |
5 | 1 | 3 | B1 | 66 MHz | 66 MHz | Q0353, Q0413, SX754 |
5 | 1 | 5 | C1 | 60 MHz | 60 MHz | Q0466, SX835, SZ949 |
5 | 1 | 5 | C1 | 66 MHz | 66 MHz | Q0467, SX837, SZ950 |
Family | Model | Version | See. Nucleus | Vel. Clock | Veloc. FSB | S-spec |
---|---|---|---|---|---|---|
5 | 2 | 1 | B1 | 75 MHz | 50 MHz | Q0601 |
5 | 2 | 1 | B1 | 90 MHz | 60 MHz | Q0542, Q0613, Q0543, SX879, SX885, SX909, SX874 |
5 | 2 | 1 | B1 | 100 MHz | 66 MHz | Q0563, Q0587, Q0614, SX886, SX910 |
5 | 2 | 2 | B3 | 75 MHz | 50 MHz | Q0606, SX951 |
5 | 2 | 2 | B3 | 90 MHz | 60 MHz | Q0628, Q0611, Q0612, SX923, SX922, SX921, SX942, SX943, SX944, SZ951 |
5 | 2 | 2 | B3 | 100 MHz | 66 MHz | Q0677, SX960 |
Error checking
The bug was present only in some models of the Pentium processor. All Pentium family processor models running at a clock frequency of at least 120 MHz have the bug fixed.
The following BASIC code indicates whether the processor of the computer it runs on has the Pentium division error.
x = 8391667 and = 1572863 IF x - (x / and) ♪ and ▪ 0 THEN PRINT "Your processor has the Pentium error" ELSE PRINT "Your processor doesn't have the Pentium error" END IF
You can also perform the calculation from the Windows calculator or from a spreadsheet. The correct value is
- 4.195.8353.145.727=1,333820449136241002{displaystyle textstyle {frac {4.195.835}{3.145.727}}}=1,333820449136241002}
The conversion to hexadecimal by the processor is 4,195,835 = 0x4005FB and 3,145,727 = 0x2FFFFF. The '5' at 0x4005 causes an error in the FPU control logic. As a result, the value returned by a failed Pentium is incorrect to more than 4 digits:
- 4.195.8353.145.727=1,333739068902037589{displaystyle textstyle {frac {4.195.835}{3.145.727}}}=1,333{color {Red}{739068902037589}}}}}}}
Another way to detect the error is to use the pentnt utility included with Windows NT 3.51, NT 4.0, 2000 and XP.
Contenido relacionado
Ohmmeter
Quanta Plus
Aviaco