Pentium Defects

Probably the most famous processor bug in history is the now legendary flaw in the Pentium FPU. It has often been called the FDIV bug because it affects primarily the FDIV (floating-point divide) instruction, although several other instructions that use division are also affected.

Intel officially refers to this problem as Errata No. 23, titled "Slight precision loss for floating-point divides on specific operand pairs." The bug has been fixed in the D1 or later steppings of the 60/66MHz Pentium processors, as well as the B5 and later steppings of the 75/90/100MHz processors.

The 120MHz and higher processors are manufactured from later steppings, which do not include this problem. This bug caused a tremendous fervor when it first was reported on the Internet by a mathematician in October 1994. Within a few days, news of the defect had spread nationwide, and even people who did not have computers had heard about it.

The Pentium incorrectly performed floating-point division calculations with certain number combinations, with errors anywhere from the third digit on up. By the time the bug was publicly discovered outside of Intel, the company had already incorporated the fix into the next stepping of both the 60/66MHz and the 75/90/100MHz Pentium processor, along with the other corrections Intel had made.

After the bug was made public and Intel admitted to already knowing about it, a fury erupted. As people began checking their spreadsheets and other math calculations, many discovered they had also encountered this problem and did not know it.

Others who had not encountered the problem had their faith in the core of their PCs very shaken. People had come to put so much trust in the PC that they had a hard time coming to terms with the fact that it might not even be capable of doing math correctly!

One interesting result of the fervor surrounding this defect is that people are less likely to implicitly trust their PCs and are therefore doing more testing and evaluating of important results. The bottom line is that if your information and calculations are important enough, you should implement some results tests.

Several math programs were found to have problems. For example, a bug was discovered in the yield function of Excel 5.0 that some were attributing to the Pentium processor. In this case, the problem turned out to be the software (which has been corrected in versions 5.0c and later).

Intel finally decided that in the best interest of the consumer and its public image, it would begin a lifetime replacement warranty on the affected processors. Therefore, if you ever encounter one of the Pentium processors with the Errata 23 floating-point bug, Intel will replace the processor with an equivalent one without this problem.

Usually, all you have to do is call Intel and ask for the replacement. It will ship you a new part matching the ratings of the one you are replacing in an overnight shipping box. The replacement is free, including all shipping charges. You merely remove your old processor, replace it with the new one, and put the old one back in the box.

Then you call the overnight service, who picks it up and sends it back. Intel will take a credit card number when you first call for the replacement only to ensure that the original defective chip is returned. As long as it gets the original CPU back within a specified amount of time, there will be no charges to you. Intel has indicated that these defective processors will be destroyed and will not be remarketed or resold in another form.

Testing for the FPU Bug

Testing a Pentium for this bug is relatively easy. All you have to do is execute one of the test division cases cited here and see whether your answer compares to the correct result.

The division calculation can be done in a spreadsheet (such as Lotus 1-2-3, Microsoft Excel, or any other), the Microsoft Windows built-in calculator, or any other calculating program that uses the FPU. Make sure that for the purposes of this test the FPU has not been disabled.

That typically requires some special command or setting specific to the application and, of course, ensures that the test comes out correct, regardless of whether the chip is flawed. The most severe Pentium floating-point errors occur as early as the third significant digit of the result.

Here is an example of one of the more severe instances of the problem:

962,306,957,033 / 11,010,046 = 87,402.6282027341 (correct answer)

962,306,957,033 / 11,010,046 = 87,399.5805831329 (flawed Pentium)

As you can see in the previous case, the error turns up in the third most significant digit of the result. In an examination of more than 5,000 integer pairs in the 5- to 15-digit range found to produce Pentium floating-point division errors, errors beginning in the sixth significant digit were the most likely to occur.

Several workarounds are available for this bug, but they extract a performance penalty. Because Intel has agreed to replace any Pentium processor with this flaw under a lifetime warranty replacement program, the best workaround is a free replacement!

Power Management Bugs

Starting with the second-generation Pentium processors, Intel added functions that enable these CPUs to be installed in energy-efficient systems. These are usually called Energy Star systems because they meet the specifications imposed by the EPA Energy Star program, but they are also unofficially called green PCs by many users.

Unfortunately, there have been several bugs with respect to these functions, causing them to either fail or be disabled. These bugs are in some of the functions in the power-management capabilities accessed through SMM.

These problems are applicable only to the second-generation 75/90/100MHz processors because the first-generation 60/66MHz processors do not have SMM or power-management capabilities, and all higher-speed (120MHz and up) processors have the bugs fixed.

Most of the problems are related to the STPCLK# pin and the HALT instruction. If this condition is invoked by the chipset, the system will hang. For most systems, the only workaround for this problem is to disable the power-saving modes, such as suspend or sleep.

Unfortunately, this means that your green PC won't be so green anymore! The best way to repair the problem is to replace the processor with a later stepping version that does not have the bug. These bugs affect the B1 stepping version of the 75/90/100MHz Pentiums, and they were fixed in the B3 and later stepping versions.

Pentium Processor Models and Steppings

We know that like software, no processor is truly ever perfect. From time to time, the manufacturers gather up what problems they have found and put into production a new stepping, which consists of a new set of masks that incorporate the corrections. Each subsequent stepping is better and more refined than the previous ones.

Although no microprocessor is ever perfect, they come closer to perfection with each stepping. In the life of a typical microprocessor, a manufacturer might go through half a dozen or more such steppings. To determine the specifications of a given processor, you must look up the S-spec number in the table of processor specifications.

To find your S-spec number, you have to read it off the chip directly. It can be found printed on both the top and bottom of the chip. If your heatsink is glued on, remove the chip and heatsink from the socket as a unit and read the numbers from the bottom of the chip.

Then, you can look up the S-spec number in the Specification Guide Intel publishes (via its Web site); it tells you the specifications of that particular processor. Intel is introducing new chips all the time, so visit its Web site and search for the Pentium processor "Quick Reference Guide" in the developer portion of its site.

There you will find a complete listing of all current processor specifications by S-spec number. One interesting item to note is that several subtly different voltages are required by different Pentium processors.