# Milestone-Proposal:Intel 8087 Math Coprocessor

**To see comments, or add a comment to this discussion, click here.**

Docket #:2022-22

*This proposal has been submitted for review.*

**To the proposer’s knowledge, is this achievement subject to litigation?**
No

**Is the achievement you are proposing more than 25 years old?**
Yes

**Is the achievement you are proposing within IEEE’s designated fields as defined by IEEE Bylaw I-104.11, namely: Engineering, Computer Sciences and Information Technology, Physical Sciences, Biological and Medical Sciences, Mathematics, Technical Communications, Education, Management, and Law and Policy. **
Yes

**Did the achievement provide a meaningful benefit for humanity?**
Yes

**Was it of at least regional importance?**
Yes

**Has an IEEE Organizational Unit agreed to pay for the milestone plaque(s)?**
Yes

**Has the IEEE Section(s) in which the plaque(s) will be located agreed to arrange the dedication ceremony?**
Yes

**Has the IEEE Section in which the milestone is located agreed to take responsibility for the plaque after it is dedicated?**
Yes

**Has the owner of the site agreed to have it designated as an IEEE Milestone?**
Yes

**Year or range of years in which the achievement occurred:**

1980

**Title of the proposed milestone:**

Intel 8087 Math Coprocessor, 1980

**Plaque citation summarizing the achievement and its significance: Text absolutely limited by plaque dimensions to 70 words; 60 is preferable for aesthetic reasons.**

Intel’s release of its 8087 math coprocessor vastly expanded the capabilities of its 8086 and 8088 microprocessors by enabling floating-point arithmetic, binary-decimal conversion, and transcendental functions, using special CPU instructions designed to invoke a coprocessor. The Intel 8087’s robust exception handling and breadth of features surpassed all existing computers. Its data types and arithmetic were the basis of the IEEE 754 Floating-Point Standard, and revolutionized computing.

**200-250 word abstract describing the significance of the technical achievement being proposed, the person(s) involved, historical context, humanitarian and social impact, as well as any possible controversies the advocate might need to review.**

**IEEE technical societies and technical councils within whose fields of interest the Milestone proposal resides.**

**In what IEEE section(s) does it reside?**

Haifa, Israel

### IEEE Organizational Unit(s) which have agreed to sponsor the Milestone:

**IEEE Organizational Unit(s) paying for milestone plaque(s):**

**Unit:** Israel

**Senior Officer Name:** Shmuel Auster

**IEEE Organizational Unit(s) arranging the dedication ceremony:**

**Unit:** Israel

**Senior Officer Name:** Shmuel Auster

**IEEE section(s) monitoring the plaque(s):**

**IEEE Section:** Israel

**IEEE Section Chair name:** Shmuel Auster

### Milestone proposer(s):

**Proposer name:** Jerome Coonen

**Proposer email:** *Proposer's email masked to public*

**Proposer name:** Rafi Nave

**Proposer email:** *Proposer's email masked to public*

**Please note:** your email address and contact information will be masked on the website for privacy reasons. Only IEEE History Center Staff will be able to view the email address.

**Street address(es) and GPS coordinates in decimal form of the intended milestone plaque site(s):**

IDC2, Saharov St, Haifa, Israel; 34.960676, 32.789453. IDC2 is one of several Intel Development Center buildings leased from MATAM, which is an English acronym for the Hebrew "Scientific Industries Center".

**Describe briefly the intended site(s) of the milestone plaque(s). The intended site(s) must have a direct connection with the achievement (e.g. where developed, invented, tested, demonstrated, installed, or operated, etc.). A museum where a device or example of the technology is displayed, or the university where the inventor studied, are not, in themselves, sufficient connection for a milestone plaque**.

**Please give the address(es) of the plaque site(s) (GPS coordinates if you have them). Also please give the details of the mounting, i.e. on the outside of the building, in the ground floor entrance hall, on a plinth on the grounds, etc. If visitors to the plaque site will need to go through security, or make an appointment, please give the contact information visitors will need. **
Corporate office

**Are the original buildings extant?**

Yes, the original “warehouse” for ~50 employees is a MATAM property, but is no longer leased by Intel.

**Details of the plaque mounting:**

The proposed plaque location is along an outdoor pathway leading to the lobby of IDC2. It is a short distance from the original "warehouse" where 8087 work began. The plaque will be installed on a plinth.

**How is the site protected/secured, and in what ways is it accessible to the public?**

Visitors enter MATAM mainly on foot through the building of Zim. The entrance faces Saharov Street, where there is public parking available. Visitors pass a security desk to enter the office park. Entrance is free to the public, subject to security screening. The area of the plaque is an outdoor footpath on the way to the IDC2 lobby.

**Who is the present owner of the site(s)?**

Intel owns IDC2, where the plaque is to be placed.

**What is the historical significance of the work (its technological, scientific, or social importance)? If personal names are included in citation, include justification here. (see section 6 of Milestone Guidelines)**

## Historical Significance

- First math coprocessor
- The Intel 8087 was the first of what would be several math
*coprocessors*to appear across the microprocessor industry. Coprocessors work in tandem with their host CPU, tracking the instruction stream, executing instructions intended for them, ignoring any other instructions, and letting the CPU handle the general tasks such as computing effective addresses for data transfer to and from memory. Math coprocessors served to increase the capability of CPUs, which were already at the limit of what could be provided on a single chip. When the 8087 appeared in 1980, Motorola, Zilog, and National Semiconductor were already at work on coprocessors for their CPU lines.

- Basis for IEEE Standard 754
- Intel engineers were a year into the 8087 design when the IEEE 754 committee began to gain momentum in 1978. As noted in the Milestone Proposal for floating point standard 754, mathematical consultant William Kahan received permission to propose the data types, arithmetic operations, and exception handling as the new IEEE standard. Intel effectively kick-started the 754 standards effort through Kahan and his colleagues and students at the University of California at Berkeley.

- First hardware implementation of IEEE Standard 754
- Given the tight connection between the Intel 8087 design and proposed standard 754, the 8087 was naturally the first hardware implementation of what five years after its introduction would be adopted as IEEE Standard 754 for Floating Point Arithmetic.

- First integrated support for transcendental functions
- The Intel 8087, together with either the 8086 (16-bit bus) or 8088 (8-bit bus) microprocessor, was the first general-purpose processor with hardware support for
*elementary transcendental functions*like tangent, arctangent, logarithm, and exponential. With just five kernel functions, the 8087 provided the basis for a fast, accurate mathematical function library. Historically, pocket calculators and specialized flight navigation computers had by some measure supported elementary functions in hardware for years. No mainframe, minicomputer, or microprocessor had integrated transcendental functions into its instruction set before the Intel 8087.

The Intel 8087 helped determine the course of personal computing. As the only available option for high-speed floating point arithmetic in the early 1980s, the 8087 helped drive IBM's decision to use the Intel 8088 CPU for its new line of personal computers.

The Intel 8087's lasting impact on numerical computing has roots years before its arrival on the market in 1980. John F. Palmer joined Intel in 1976, a few years out of his Ph.D. program at Stanford University. Charged with designing floating point arithmetic for the coming 8086 family of microprocessors, Palmer looked at Intel's overall efforts, including the powerful 432 chipset already in development. Palmer, who knew the dismal state of numerics across the mainframe and minicomputer landscape, sensed an opportunity.

Palmer resolved that Intel would have the best arithmetic, not just of the microprocessor industry but of the **entire** computing industry. Intel would sell the *Cadillac of numeric processors*, as he phrased it then. This decision would push the origin of Intel's impact another 20 years farther back.

For John Palmer, arriving at the best possible arithmetic for a long-lived product line would not be an academic exercise. Intel's arithmetic needed to learn from and build on the painful experience of prior decades. What may sound melodramatic in the hindsight of 40 years of standard arithmetic is actually hard to overstate. Nothing could be taken for granted in the years up to the 8087. Floating point arithmetic, whether performed in binary or decimal, has inherent subtleties. But even *simple arithmetic* could be dangerous on computers of the 1960s and 1970s. Programs could fail because `x*y`

differed from `y*x`

. Even multiplying `1.0*x`

could deliver a result different from `x`

. Or testing that `x`

was nonzero before dividing `y/x`

could still lead to a *division-by-zero* error and program halt. Was `x`

zero or not? The list of anomalous behaviors was long.

Palmer knew where to turn. The single most experienced expert in computer arithmetic – and its hazards – was across San Francisco Bay in Berkeley, at the University of California. Prof. William Kahan had been using computers for numerical calculation since the 1950s. At the university computer centers of his native Toronto, or at Illinois or Cambridge or Stanford or at Berkeley, where he relocated in 1969, Kahan looked over the shoulders of engineers, scientists, and mathematicians as they struggled with programs – or computers – that malfunctioned. By the time Palmer contacted him, Kahan had already broadened his study from largely binary computers to the emerging decimal calculators, which had their own surprises.

By recruiting Kahan in 1976 to consult on the 8087, Palmer ensured that the stage would be set for an international standard yet to come. Perhaps at Intel's suggestion, but without mentioning the affiliation, Kahan gave a one-hour talk at the First West Coast Computer Faire in April, 1977 (see the References below). A listener who persists 40 minutes into the presentation and Q&A will hear hints of what would become the Intel 8087 and later IEEE Standard 754.

As a small sidebar, it's not necessarily obvious what *quality* means in arithmetic. We do arithmetic every day. We strive to avoid blunders, but where does quality come in? Do we really have a choice? Computer arithmetic is constrained more strictly than pencil-and-paper calculation. Intel's challenge was to figure out *which* numbers would be represented, how they would be *encoded* in bits, and what the best *result* would be for any calculation on any operands, knowing it, too, had to fit the encoding. What is to be done if a value is too big or too small or has too many digits to represent exactly? The design of computer arithmetic entails many interdependent choices. Kahan brought two decades of experience to that challenge.

**What obstacles (technical, political, geographic) needed to be overcome?**

## Obstacles

- Chip capacity
- Chip capacity factors into all of the obstacles in this discussion. Processors of the mid-1970s lacked the capacity to support floating point computation in the CPU. The insightful engineering manager of the 8086 project at Intel envisioned a
*hook*in the 8086 to permit an external coprocessor to sit alongside the CPU. Engineers developed the ESC (escape) family of instructions to define the additional functionality and the WAIT instruction to help synchronize the two chips. In that era, it took two chips to get the job done.

- Feasibility
- The 8087, scheduled for release in 1980, would be a 40-pin DIP (dual in-line package) with a die (silicon chip) less than 10 mm on a side. When the 8087 design strained the limits of that small die, engineers in Santa Clara doubted it could be built. That's not to mention that when they were finished, it would be
*just a floating point processor*. The reality is that in that era of flawed arithmetic, few engineers could get excited about floating point. A senior Intel manager flew to Israel to propose the project to the small team in Haifa. After a follow-up visit to Santa Clara, the Intel Haifa team eagerly accepted the daunting challenge to build the 8087.

- Transistor count
- The engineers in Santa Clara were correct that the
*Cadillac*of numeric processors might not fit in the 40-pin DIP of the time. The Haifa engineers struggled to find space for over 30,000 bits of microcode ROM (read-only memory). They solved the problem by designing a revolutionary scheme where each transistor location encoded 2 bits, reducing by half the total ROM footprint. See the patent awarded to Moshe Stark of Intel in the references.

- Carry propagation
- Engineers determined that, in a single clock cycle, a carry could propagate across as many as 67 bits in the 8087 data path. This meant that the 80-bit floating-point type, called
*temporary real*on the 8087, could have a 64-bit significand, with three extra bits in the data path to support correct rounding. The extra bits have been known as*Guard*,*Round*, and*Sticky*since the emergence of Standard 754. Internally, the 8087 could use full 67-bit arithmetic for the evaluation of transcendental functions like tangent, and logarithm. This is an example of the 8087 performing at the limits of what was possible in 1980.

- Opcode space
- The term
*opcode space*refers to the set of bit encodings of a processor's instructions. On 8087, the ESC (escape) instructions used for floating point instructions encoded relatively few operations. The ESC instructions were part of the 8086/8088 CPU design, and were set aside for coprocessor use before the 8087 design began. While the coprocessor could hold eight accessible 80-bit floating point values, often thought of as*registers*, it lacked sufficient opcode space (in the ESC instructions) to address two registers to be used as traditional*source*and*destination*values. As a consequence, the eight 8087 internal registers were treated as a*push-down stack*. In this stack configuration, the*top*one or two values could be implied as operands with no requirement for encoding bits. The 8087 did allow the top element and one other element addressed within the stack to be used as operands in arithmetic. Features of this*register stack*design rippled through the use of 8087 via high-level language compilers.

- ROM constants and error analysis
- The Unique Features section below discusses the elementary transcendental functions in the 8087. The primary obstacle to including the functions was the lack of ROM space for tables of
*constants*for the functions. The designers would have to reduce their support to the bare minimum number of functions, with the fewest possible required constants. Resolving those issues introduced a new obstacle,*error analysis*, a subtle art at the boundary of mathematics and computing. The discussion below offers some detail.

The obstacles faced by the 8087 team cannot be overstated. What they realized on a silicon die in 1980 required the close integration of the instruction set architecture, mathematical design, and hardware implementation. Bruce Ravenel created the stack-based execution model that fit the 8087's capability into the available ESCAPE instructions. John Palmer collaborated with Kahan on the design of the data types, mathematical operations, exception handling, and details like rounding. Rafe Nave led the design team in Haifa, Israel who fit a, "size 13 foot in to a size 10 shoe," as it has been put; true to their time, the 8087 design team laid the chip out by hand on large drawing boards.

**What features set this work apart from similar achievements?**

## Unique Features

- The Intel 8087 was a breakthrough product of such proportions that every one of its unique features has historical significance. The legacy of the 8087 and its follow-on coprocessors and integrated arithmetic for CPUs subsequent to 8086/8088 is strengthened by its strong connection to IEEE 754, the arithmetic standard.

- Audacity
- The single defining feature of the Intel 8087 is its sheer audacity. The Cadillac of coprocessors accompanied the 8086 CPU, itself designed under daunting schedule and compatibility constraints. Management specified that the 8086 would be, by some definition,
*backward compatible*with the 8080 processor and that it would support a least 128K bytes of RAM (random-access memory). The schedule permitted just a few months for the 8086 architecture design. But because no one paid much attention to floating point in that era, and management certainly didn't, the 8087 design team had the time and the freedom to push the envelope for a game-changing product.

- Temporary real data type
- The 8087 register stack supported values with a sign bit, 15-bit exponent, and 64-bit significand. This type, called
*extended*in IEEE 754, provided extra range and precision over the 32-bit single and 64-bit double types. Emerging pocket calculators routinely supported extra significant (decimal) digits internally, but that feature was visible only to the most expert users. No mainframe or minicomputer had ever offered such an extended type for general use.

- Robust exception handling
- Legacy computers stopped abruptly on exceptions like exponent overflow. Over time, designers created one or another
*indeterminate*value to substitute when things went wrong. The 8087 defined five flavors of exception and specified a well-defined result in each instance. Only in the most desperate cases, such as 0/0, with no possible mathematical interpretation did the 8087 resort to its indeterminate value, the*Not-a-Number*or NaN made famous by IEEE 754. The 8087 also provided a*sticky flag*for each of the exceptions, to be interrogated by programs during execution. The flags were sticky in the sense that once set they would remain set until cleared by the program.

- Choice of rounding direction
- The 8087 offered four ways to round each arithmetic result. Conceptually, the 8087 performed the basic arithmetic operations, including square root, as if with unbounded range and precision. According to the setting of the 8087 control word, accessible to programs, the 8087 would
*round to nearest (ties to even)*,*round toward 0*,*round toward +infinity*, or*round toward –infinity*. Program control of the rounding direction was a new feature, also taken up by IEEE 754. Even the support of*round to nearest*required special care. At the time the 8087 arrived, the best systems would round by*add half and chop*, which differs only in the handling of halfway cases, which are biased away from zero.

- Transcendental functions in hardware
- One of John Palmer's dreams for the 8087 was to offer the elementary transcendental functions in hardware. These are the functions programmers know from the
*math libraries*available in most programming environments. In everyday English, we know them as sine, cosine, tangent, logarithm, exponential, power, and inverse functions like arcsine, arccosine, arctangent, and more. They are*elementary*in the sense that many people learn something about them by the time they finish high school. They are*transcendental*in the technical sense that they cannot be expressed exactly by polynomials or ratios of polynomials.

- With transcendental functions supported in hardware, Intel could produce a fast, accurate function library that system designers could incorporate into any software environment running with an 8087 (or its software emulator). Specifically, system designers would not be tempted to offer
*quick-and-dirty*libraries that perform well in benchmarks while providing results that may be hazardous to users.

- The challenge was to fit all this capability into a very ambitious chip. Detailed error analysis andartful algorithm design led to two sets of constants:

`atan(2^-k) for k = 0, 1, ..., 15`

`log2(1 + 2^-k) for k = 2, 3, ..., 15`

- With these 30 values, and another 12 of general utility, the designers implemented five
*kernel*functions on which an entire math library could be built.

- The first step in the challenge was to reduce the problem. The excerpt from the book by Palmer and Stephen Morse in the references explains how computing
`cos(x)`

, a trigonometric cosine, for any representable number`x`

reduces to computing`cos(z)`

or`sin(z)`

for a reduced value`0 <= z <= pi/4.0`

.

- The second step was to express all desired functions in terms of the five kernel functions in silicon. Again, Palmer and Morse illustrate how to express sine and cosine in terms of the tangent function. The reference by M. Abramowitz and I. R. Stegun contains many helpful identities, in this case item 4.3.23.

- Ultimately, every library function computation reduces to one of the five kernel functions. To get a sense of how the 8087 supports sophisticated functions so economically, it's helpful to recall long multiplication and division from early school days. With its limited silicon die size and transistor count, the 8087 could not support a fast
*array multiplier*or multi-bit*SRT divider*in hardware. Instead, the 8087 multiplied by shift-and-add and subtracted by shift-and-subtract. These processes are the binary analogs of the decimal arithmetic we learned as children.

- Here is a simple example in 4-bit arithmetic, 13 times 9:

```
```

muliplicand 1101 13
x multiplier x 1001 x 9
------------- ------ ---
product 1101 117
0000
0000
1101
-------
1110101

```
```

- To generate the parallelogram of partial products, at each step shift the
*multiplicand*by one bit and multiply it by either 0 or 1. It's far easier than decimal multiplication, but it's tedious for humans with the 67-bit numbers in the 8087.

- Long division works the same way, with a decision at each divide step about whether to subtract:

```
```

quotient 1101
+-------- +-------
divisor/dividend 1001/1110101
1001
----
01010
1001
----
0001001
1001
----
0000

```
```

- These shift-and-add and shift-and-subtract steps play perfectly into a technique called CORDIC, dating from the 1950s. CORDIC is an acronym from the
*COordinate Rotation DIgital Computer*, a specialized aircraft navigation computer.

- As an example in the trigonometric domain, the CORDIC technique for
`tan(x)`

decomposes`x`

into the sum of small numbers of the form`atan(2^-k)`

as in the 8087 table of ROM constants. Then it's back to high school math for identities like:

```
```

tan(a) + tan(b)
tan(a + b) = ----------------
1 - tan(a)tan(b)

```
```

- When
`b`

has the form`atan(2^-k)`

, the expression simplifies considerably.

```
```

tan(a) + 2^-k
--------------
1 - tan(a)2^-k

```
```

- Powers of 2 as factors equate to shifts in binary arithmetic, simplifying the computation. This is just a hint of the technique. Rafi Nave's paper in the references offers further detail and the tangent.

- The 8087 implementation of its five transcendental functions is more subtle than pure CORDIC, which is a fixed point (essentially integer) technique. The 8087 uses a blend of fixed point and floating point arithmetic, which is available at the low level of the chip's internal
*microcode*. The 8087 algorithm design has enough ROM constants to reduce its arguments in the fixed point domain to the point where a seed approximation can be computed in floating point. Delicate error analysis determined that this approach would produce approximations with both the desired properties of monotonicity and accuracy to nearly 64 significant bits. His papers in the references outline the ideas.

- The designers referred to the technique as
*pseudo-multiplication*and*pseudo-division*rather than CORDIC, because they used the very same steps of multiplication and division but with the ROM constants to decompose arguments and reconstruct results. Another key component was the fast*barrel shifter*described in the references. (The barrel shifter takes its name from the similarity of striping in the silicon to staves in a wooden barrel.)This integration of the transcendental functions with the arithmetic at the microcode level is why computing a tangent takes just over twice as long as a quotient.

- By the mid-1980s, increased die sizes and transistor counts gave designers more room to implement more kernel functions using more ROM constants and simpler algorithms. In 1980, however, the 8087 was a marvel.

**Supporting texts and citations to establish the dates, location, and importance of the achievement:** Minimum of five (5), but as many as needed to support the milestone, such as patents, contemporary newspaper articles, journal articles, or chapters in scholarly books. 'Scholarly' is defined as peer-reviewed, with references, and published. **You must supply the texts or excerpts themselves, not just the references**. At least one of the references must be from a scholarly book or journal article. All supporting materials must be in English, or accompanied by an English translation.

## Annotated Citation

- Intel’s 1980 release of its 8087 math coprocessor vastly expanded the capabilities of its 8086 and 8088 microprocessors
- Intel launched the 8086 microprocessor project in 1976, with a 1978 target for delivery. The 8088 CPU, with a lower-cost 8-bit bus, arrived in 1979, executing exactly the same instruction set. The 8087 design began in 1976 but the architecture took far longer to emerge than the few months granted the 8086 team. As history would have it, the 8087 did "vastly" expand on the early 16-bit microprocessor whose quick-to-market design belied its destiny as a dominant industry architecture.

- by enabling floating-point arithmetic, binary-decimal conversion, and transcendental functions,
- The 8087
*temporary real*data type in its on-chip register stack offered additional precision (64 significant bits vs. 53 for the double type and 24 for single) and exponent range (15 bits vs. 11 bits for double and 8 for single). With this extended precision and range, intermediate subexpressions in users' programs almost never suffered from rounding or over/underflow problems. The 8087 handled every exceptional circumstance – overflow, underflow, roundoff, division by zero, invalid operation – predictably and cleanly. It supported four selectable rounding directions. The 8087 could convert between its*temporary real*type and 18-digit packed decimal integers. The 8087 also included five transcendental functions in silicon: tangent, arctangent, exponentiation, and two flavors of logarithm. They executed in the time of several multiplications, removing any temptation for systems designers to insert*fast*(read*inaccurate*) library functions.

- using special CPU instructions designed to invoke a coprocessor.
- The 8086/8088 ESC (escape) instructions supported memory address computations to be handled by the CPU, but left the opcodes open for definition specific to a coprocessor such as the 8087. The coprocessor, with the same pinout as the CPU and some shared instruction decode logic, could read to and write from memory using effective addresses computed by the CPU, and perform computations defined in the ESC opcode bits. Intel left the possible use of the ESC and WAIT instructions loosely specified in its documentation while the 8087 was in active development and not yet announced.

- The Intel 8087's robust exception handling and breadth of features surpassed all existing computers.
- No mainframe, minicomputer, or other microprocessor hardware offered features anything close to the 8087 in 1980. No system had ever offered extended exponent range and precision in a user-accessible data type. No system had ever provided such thorough and logical exception handling. And none had provided essential hardware support for a complete math library in software.

- Its data types and arithmetic were the basis of the IEEE 754 Floating-Point Standard, and revolutionized computing.
- When the committee for IEEE Standard 754 for Floating Point Arithmetic gained momentum in 1978, the proposal based on 8087 data types, arithmetic, and exception handling emerged as a leading contender.

## David Hough – Expert's Report

I am pleased to support this proposal for a plaque highlighting the 8087. In 1976 while finishing my thesis under Prof. W. Kahan at Berkeley, I began work at Tektronix on a new microcoded processor, and one of my first tasks was to meet with Dr. John Palmer of Intel. We discussed Intel's architecture for software floating point, which contained ideas that later were incorporated into 754 and 8087. Later I learned from Prof. Kahan that there was a bigger agenda at work, though I could not imagine, in the era of the 8080 and 6800 CPU's, and the AMD 2900 bit slices that I was to use through microcode in a new processor, how a complete floating-point coprocessor could be built in one chip. I became active in the 754 effort in 1978, and by then other vendors were trying to catch up to what they'd heard about the 8087.

By 1986, 8087's were a consumer product that you could buy at Fry's.

1. Is the suggested wording of the Plaque Citation accurate?

- Yes, I agree with the wording and elaboration.

2. Is the evidence presented in the proposal of sufficient substance and accuracy to support the Citation?

- The evidence captures the progressive disclosures that astonished the technical community and worried Intel's competitors - pushing the envelope on so many technological barriers.

3. Does the proposed milestone represent a significant technical achievement?

- As the references indicate, there were several breakthroughs that captured the attention of technologists - 67-significant-bit arithmetic, elementary transcendental function cores in hardware, and a double-density ROM technology to hold the extensive microcode.

- As it became apparent that the 8087 was soon to be a real commercial product, that provided additional impetus to agree on and complete the 754 standard, as well as impetus for other vendors to bring their floating-point arithmetic projects to fruition, and to bring them into compatibility with the proposed standard.

## Michael Overton – Expert's Report

I am honored to provide an Expert's Report for the IEEE Milestone plaque honoring the Intel 8087 Math Coprocessor. The 8087 figured prominently in my book, *Numerical Computing with IEEE Floating Point Arithmetic*, published by SIAM in 2001. The book is included in the references for this proposal.

In Chapter 8, I wrote:

- In 1980, Intel announced the 8087 and 8088 chips, which were used in the first IBM PCs. The 8088 was a modification of the 8086. The 8087 was the floating point coprocessor, providing a floating point unit (FPU), on a separate chip from the 8088. The 8087 was revolutionary in a number of respects. It was unprecedented that so much functionality could be provided by such a small chip. Many of the features of the IEEE [754] standard were first implemented on the 8087. The extended [floating point] format recommended by the standard was based on the 8087 design.

More than two decades later, it is crystal clear that the 8087 had an enormous impact on the development of later floating point processors and on computing in general. I am currently writing a second edition of the book (to be published in 2024) which emphasizes this point.

Here are answers to the specific questions.

1) Is the suggested wording of the Plaque Citation accurate?

- Yes, the wording is highly accurate.

2) Is the evidence presented in the proposal of sufficient substance and accuracy to support the Citation?

- Yes, the evidence of the originality and impact of the 8087 is substantial and completely convincing.

3) Does the proposed milestone represent a significant technical achievement?

- Yes, the achievement was remarkable. Many in the computer industry doubted that the design of the 8087 could be implemented with the chip technology of the time. Other computer companies had to scramble to catch up with Intel, still dominant in the industry today. As of August 2022, according to the Top 500 list, 384 of the 500 fastest supercomputers in the world are based on Intel x86/x87 microprocessors and 101 are based on AMD x86 microprocessors, which themselves are based on the original Intel design. (See https://en.wikipedia.org/wiki/TOP500.)

Michael Overton

Courant Institute of Mathematical Sciences, New York University

Fellow of SIAM

Fellow of IMA (U.K.)

**Supporting materials (supported formats: GIF, JPEG, PNG, PDF, DOC): ** All supporting materials must be in English, or if not in English, accompanied by an English translation. **You must supply the texts or excerpts themselves, not just the references**. For documents that are copyright-encumbered, or which you do not have rights to post, email the documents themselves to ieee-history@ieee.org. Please see the Milestone Program Guidelines for more information.

## Primary References

*IEEE Standard for Floating-Point Arithmetic, ANSI/IEEE Standard 754-2019*, Institute of Electrical and Electronics Engineers, New York, USA, 2019.
The current revision of IEEE 754 is available for a fee at the link above. The shorter original, superseded version, as implemented by the 8087, is listed below.

William Kahan and John Palmer. On a Proposed Floating-Point Standard, *ACM Signum Newsletter*, 14:13-21, 1979.
Kahan and Palmer present features of the Intel 8087, announced but not yet released, with mathematical and programming examples.

*The 8086 Family User's Manual: Numerics Supplement*, Intel Corp., Santa Clara, CA, USA, 1980.
Intel's first documentation of the 8087.

John F. Palmer and Stephen P. Morse. *The 8087 Primer*, John Wiley & Sons, New York, NY, USA, 1984.
Palmer, architect of the 8087, and Morse, architect of the 8086, give a detailed look at the computational capabilities of the 8087, including discussion of programming in both Fortran and assembly language. Chapter 6 on Special Computational Instructions is given here.

Rafi Nave. Implementation of Transcendental Functions on a Numerics Processor, *Microprocessing and Microprogramming*, North-Holland, 11:221-225, 1983.
Nave, head of the 8087 design team at Intel Israel in Haifa, describes the implementation of CORDIC algorithms in the floating point domain on the 8087.

## Computing with the Intel 8087

Michael L. Overton. *Numerical Computing with IEEE Floating Point Arithmetic: Including One Theorem, One Rule of Thumb, and One Hundred and One Exercises*, SIAM, Philadelphia, PA, USA, 2001.
Overton's friendly book takes the reader from first steps through some of the subtle points (and misconceptions) about numerical programming. This first edition has particular focus on the 8087.

William M. Kahan. Mathematics Written in Sand: the hp-15C, Intel 8087, etc., *Statistical Computing Section, Proceedings of the American Statistical Association*, Toronto, 1983, pages12-26.
Kahan's first paper discussing the 8087, including several of his classic numerical challenges for any computing device.

Charles Severance. An Interview with the Old Man of Floating Point, http://www.cs.berkeley.edu/~wkahan/ieee754status/754story.html A condensed version appeared in *Computer*, 31:114–115,1998.
Severance presents a pocket history of IEEE Standard 754, then discusses a range of numerical topics with Prof. Kahan.

## Inside the Intel 8087

Rafi Nave and John F. Palmer. A numeric data processor, *1980 IEEE International Solid-State Circuits Conference. Digest of Technical Papers*, XXIII:108-109, 1980.
Nave and Palmer deliver what is probably the first public presentation of the Intel 8087.

Ken Shirriff. Extracting ROM constants from the
8087 math coprocessor's die, *Ken Shirriff's blog*, latest updates at https://www.righto.com/2020/05/extracting-rom-constants-from-8087-math.html.
Shirriff analyzes the 8087 die to expose the 42 numerical constants encoded in read-only-memory. The values include arctangent values, atan(2^-k) for k=0..15 and logarithms base 2, log2(1 + 2^-k) for k = 2..15 for use in computing the five on-chip transcendental functions.

Ken Shirriff. Two bits per transistor: high-density ROM in Intel's 8087 floating point chip, *Ken Shirriff's blog*, latest updates at https://www.righto.com/2018/09/two-bits-per-transistor-high-density.html.
Shirriff analyzes the transistors invented by the 8087 team in order to reduce the footprint of the microcode ROM on the die.

Ken Shirriff. Die analysis of the 8087 math coprocessor's fast bit shifter, *Ken Shirriff's blog*, latest updates at https://www.righto.com/2020/05/die-analysis-of-8087-math-coprocessors.html.
Shirriff analyzes the *barrel* shifter at the heart of both the arithmetic operations and the CORDIC-like transcendental functions in the 8087.

William Kahan. Pseudo-Division Algorithms for Floating-Point Logarithms and Exponentials, unpublished note, 2001. Kahan describes CORDIC-like techniques for computing logarithms and exponentials, with hints about how such ideas were exploited on the Intel 8087 and Motorola 68881/2 coprocessors.

William Kahan. Elementary Functions from Kernels and Elementary Inequalities among Elementary Functions, unpublished double note, 1985. In the first short paper, Kahan illustrates how Intel's full math library could be built on the five transcendental functions implemented in the 8087. The second paper presents numerous inequalities useful in testing for desired monotonicity properties in elementary function libraries.

John Palmer, Bruce Ravenel, Rafi Nave. 1982. Numeric Data Processor. US Patent 4,338,675, filed Feb. 13, 1980, and issued Jul. 6, 1982. This general patent covers the breadth of 8087 features.

John Palmer, Bruce Ravenel, Ravi Nave. 1984. Fraction Bus for Use in a Numeric Data Processor. US Patent 4,484,259, filed Jan. 22, 1982, and issued Nov. 20, 1984. This patent discusses the 67-bit data path in the 8087, supporting both the use of three extra bits – Guard, Round, and Sticky – in computing 64-bit results and the use of full 67-bit chopped arithmetic in the computation of the transcendental functions.

Robert J. Koehler, John A. Bayliss. 1981. Apparatus and Method for Cooperative and Concurrent Coprocessing of Digital Information . US Patent 4,270,167, filed Jun. 30, 1978, and issued May 26, 1981. This patent discusses the mechanism enabling the 8087 coprocessor to operate alongside the 8086 and 8088 CPUs.

Moshe Stark. 1981. Multiple Bit Read-Only Memory Cell and Its Sense Amplifier. US Patent 4,287,570, filed Jun. 1, 1979, and issued Sep. 1, 1981. See Ken Shirriff's post in the references for an analysis of this invention.

John Palmer, Bruce Ravenel, Ravi Nave. 1985. Programmable Bidirectional Shifter. US Patent 4,509,144, filed Dec. 5, 1983, and issued Apr. 2, 1985. See Ken Shirriff's post in the references for an analysis of this invention.

## Intel 8087 in the News

Dave Bursky. Coprocessor implements floating-point math, *Electronic Design*, 28(10):35-37, 1980.
Bursky offers a summary of 8087 features in an early trade press note.

R. B. Simington. The Intel 8087 Numerics Processor Extension, *Byte*, 8(4):154-175, 1983.
Simington, of Intel customer training, presents an overview of the 8087 and its close ties to the host 8086 or 8088 CPU.

## About Floating Point Arithmetic

Jean-Michel Muller, Nicolas Brunie, Florent de Dinechin, Claude-Pierre Jeannerod, Mioara Joldes, Vincent Lefèvre, Guillaume Melquiond, Nathalie Revol, and Serge Torres. *Handbook of Floating-Point Arithmetic*, 2nd edition, Cham, Switzerland, 2018, chapter 3, appendix B.
Muller and his colleagues present IEEE standard arithmetic and its utility in the larger context of computer arithmetic. Chapter 3 is provided here.

Nicholas J. HIgham. *Accuracy and Stability of Numerical Algorithms*, 2nd edition, SIAM, Philadelphia, PA, USA, 2002, chapters 2, 27.
Higham presents IEEE standard arithmetic in the context of scientific and engineering numerical computation. Chapter 2 is provided here.

William Kahan. Why do we need a floating-point arithmetic standard? Technical Report, University of California, Berkeley, CA, USA, February 1981. Kahan, the principal designer of IEEE 754, provides a detailed survey of the numerical challenges inspiring many features of the standard.

David Goldberg. What every computer scientist should know about floating-point arithmetic, *ACM Computing Surveys*, 23(1):5-48, 1991.
Goldberg's widely-read paper surveys the state of floating point arithmetic following wide adoption of IEEE 754.

## Historical References

*IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Standard 754-1985*, Institute of Electrical and Electronics Engineers, New York, USA, 1985. Reprinted in SIGPLAN Notices 22(2):9-25, 1987.
The original binary standard is superseded by the 2019 revision cited above, but it offers a simpler first read of the essentials of standard binary floating point. The 8087 emerged alongside latter drafts of this standard, when it had stabilized.

Harold Stone, William Kahan, Jerome Coonen. Draft of material on a Floating-Point Standard, from discussions with H. Stone, W. Kaan, J. Coonen, 1978.
First draft of what came to be known as the *KCS* proposal to the IEEE 754 subcommittee, with details connected to the early 8087 design.

Thomas Haigh and Paul E. Ceruzzi. *A New History of Modern Computing*, The MIT Press, Cambridge, MA, USA, 2021, pages 220-221.
Haigh and Ceruzzi recount the arrival of the Intel 8087 in 1980, implementing the proposal on its way to becoming IEEE Standard 754. The personal computer passed from a plaything to a tool with the computational power of a minicomputer.

Donald MacKenzie. Negotiating Arithmetic, Constructing Proof: The Sociology of Mathematics and Information Technology, *Social Studies of Science*, SAGE, SAGE, London, Newbury Park, New Delhi, 1993, 37-65.
MacKenzie, who studies the sociology of mathematics, computing, and finance, summarizes the process of IEEE 754, several years after its initial adoption.

Donald E. Knuth. *The Art of Computer Programming, Volume 2, Seminumerical Algorithms*, Third edition, Addison-Wesley, Reading, MA, USA, 1998, pages 222, 226.
Knuth's famous line introduces his many references to the standard: *A revolutionary change in floating point hardware took place when most manufacturers started to adopt ANSI/IEEE Standard 754 during the late 1980s.* The Intel 8087 was the first to do so.

David G. Hough. The IEEE Standard 754: One for the History Books, *ACM Signum Newsletter*, 14:13-21, 2019.
Hough, who chaired the committee developing the 2019 revision of IEEE 754, summarizes the recent updates, following an enlightening tour of the motivations and issues surrounding the previous versions. Hough traces early interest in a standard to John Palmer's work at Intel on what would be the 8087.

M. Abramowitz and I. A. Stegun. *Handbook of Mathematical Functions: With Formulas, Graphs, and Mathematical Tables*, Italy: Dover Publications,1965.
Abramowitz & Stegun is a classic reference. Chapter 4, Elementary Transcendental Functions, presents a number of identities and continued fraction expansions used in the implementation of the 8087 transcendental functions.

Implementation of software systems and modules, part 1, *First West Coast Computer Faire*, April 1977, audio tapes archived the Computer History Museum, Mountain View, CA.
Two audio files, Side A and Side B of a 1977 tape recording, capture *part 1* of a 3-part session. Advance to time 26:50 of Side A to begin a talk by Prof. William Kahan of UC Berkeley. The talk continues into Side B. Without reference to his work with Intel, Kahan talks about the dismal state of floating point arithmetic at the time and offers some surprising advice for those wishing to implement floating point in software. Listeners who persevere into the Q&A period will finally hear reference to features being considered for the still-secret Intel 8087 and later destined for IEEE Standard 754.

**Please email a jpeg or PDF a letter in English, or with English translation, from the site owner(s) giving permission to place IEEE milestone plaque on the property, and a letter (or forwarded email) from the appropriate Section Chair supporting the Milestone application to ieee-history@ieee.org with the subject line "Attention: Milestone Administrator." Note that there are multiple texts of the letter depending on whether an IEEE organizational unit other than the section will be paying for the plaque(s). **

**Please recommend reviewers by emailing their names and email addresses to ieee-history@ieee.org. Please include the docket number and brief title of your proposal in the subject line of all emails.**