THE PENTIUM DIVISION FLAW


by

David W. Deley

©1995



INTRODUCTION

The following paper describes the details behind the floating point division bug in the hardware divide unit of Intel Corporation's Pentium(TM) processor. The Pentium is Intel's next generation of IBM-PC compatible microprocessors following the i486 CPU family. The original Pentium processor was introduced into the market in May of 1993, and an estimated two million were sold. A year later it was discovered that in certain very rare instances a division operation returned a result that was slightly incorrect.

Intel corrected the bug in June of 1994, and any new Pentium computer sold after January of 1995 probably has the newer corrected chip in it. Intel will also replace upon request any Pentium chip which has the floating point division flaw with a new one, just ask. I myself have never bothered replacing my flawed Pentium chip. The flaw is too insignificant to affect everyday users like myself. All my software runs just fine with no problems, and quite fast I might add. Actually that part about no problems is a lie -- I have endless problems with bugs in software for IBM-PC compatible computers, but none of the bugs are the result of the Pentium's floating point division flaw explained here.

For most people the flaw itself is just an entertaining curiosity since it's rare and the error in precision when it does occur is small. The flaw does arouse one's curiosity though, and it is quite interesting to study the details behind the flaw, as it brings together many aspects of computer science. Like any technical field, computer science can be made easy to understand, or it can be made difficult to understand. I hope most people find this paper easy to understand.

-David W. Deley    June 1995



CONTENTS:

INTRODUCTION

CHAPTER 1:   REVIEW
1.1  INTERPRETING THE VALUE OF A DECIMAL NUMBER
1.2INTERPRETING THE VALUE OF A BINARY NUMBER
1.3MOVING THE DECIMAL POINT OF A BASE 10 NUMBER
1.4MOVING THE RADIX POINT OF A BINARY NUMBER
1.5NORMALIZED NOTATION: BASE 10
1.6NORMALIZED NOTATION: BASE 2
1.7DIVISION NOMENCLATURE
1.8DIVISION OF NORMALIZED NUMBERS: BASE 10
1.9DIVISION OF NORMALIZED NUMBERS: BASE 2
1.10PENTIUM REPRESENTATION OF FLOATING POINT NUMBERS
1.11CARRY-SAVE ADDITION
1.12PARTIAL ADDITION

CHAPTER 2:   REVIEW
2.1  EXAMPLE
2.2ABSTRACT DIVISON
2.3THE ITERATIVE FORMULA FOR DIVISON
2.4BOUNDS ON RESULTING REMAINDER
2.5LOOKUP TABLE
2.6NEGATIVE QUOTIENT DIGITS

CHAPTER 3:   REVIEW
3.1  THE SRT DIVISION ALGORITHM
3.2THE ITERATIVE FORMULA FOR DIVISION BASE 4
3.3BOUNDS ON RESULTING REMAINDER
3.4THE PENTIUM LOOKUP TABLE (P-D PLOT)
3.5ITERATION USING THE P-D PLOT AS A LOOKUP TABLE

CHAPTER 4  EXAMPLE OF BUG

CHAPTER 5OBSERVATIONS ON HITTING THE ERROR CELL

CHAPTER 6TOPICS FOR FURTHER STUDY

CHAPTER 7HISTORY OF THE BUG'S DISCOVERY

CHAPTER 8HOW TO TEST FOR THE PENTIUM BUG

CHAPTER 9PENTIUM JOKES

REFERENCES


Begin the adventure!
Index

Back to DELEY'S home page
Today's flawed divisor is:
counter
email David Deley: deleyd@ieee.org