Last visit was: Wed Dec 01, 2021 6:56 pm
It is currently Wed Dec 01, 2021 6:56 pm

 [ 2 posts ] 
 William Kahan on the design of the 8087 FPU 
Author Message

Joined: Wed Jan 09, 2013 6:54 pm
Posts: 1647
A classic, by Prof. William Kahan, the co-designer[1] (or co-architect) of the original 8087 Intel FPU:
"On the Advantages of the 8087's Stack" (pdf)
Therefore, the 8087 was destined to have preponderantly One-operand instructions; the designer's task was to make a Virtue of this Necessity.
When the 8087 was designed, I knew that stack over/underflow was an issue of more aesthetic than practical importance. I still regret that the 8087's stack implementation was not quite so neat as my original intention described in the accompanying note. If the original design had been realized, compilers to-day would use the 8087 and its descendants more efficiently, and Intel's competitors could more easily market faster but compatible 80x87 imitations. Back in 1979 we did not appreciate how difficult it would become, both technically and commercially, to disseminate appropriate stack over/underflow handling software; far less did we appreciate how clumsily the early compilers would handle stack over/underflow, nor how long they would take to do better.

Lots more on Kahan and the history of floating point:
A Conversation with William Kahan
An Interview with the Old Man of Floating-Point
Historical Perspective and Further Reading

Kahan learned to program during the summer of 1953 as an undergraduate majoring in mathematics at the University of Toronto. The university was a center of early computer development and use, and owned FERUT, one of the world’s first commercially manufactured computers –the second Manchester Ferranti Mark I ever built. Remaining at Toronto as a graduate student, he focused his studies on numerical analysis and explored the new possibilities in applied mathematics that were opened up by the use of computers. He made extended visits to two other computing centers: he spent the summer of 1957 working on the ILLIAC I at the University of Illinois, and after completing his Ph.D. in 1958 spent two years with the EDSAC-2 at Cambridge University's Mathematical Laboratory.

He returned to Toronto in 1960 as a faculty member, where his research focused on the error-analysis of numerical computations. For Kahan this involved not just determination of the accuracy of calculated results, but also the design of new software and architectural features to improve accuracy while maintaining high performance. He created an integrated system of mathematical routines, compiler tweaks and operating system modifications for the university’s IBM 7094 computer to help programmers create accurate, high performance floating point code. Kahan played a leading role in the numerical analysis subgroup of the IBM computer user group SHARE, and spearheaded its successful campaign in 1966-1967 to force IBM to fix design flaws in the arithmetic of its new System /360 computers.


[1] with John Palmer

Thu Nov 24, 2016 9:10 pm

Joined: Tue Dec 11, 2012 8:03 am
Posts: 285
Location: California
Interesting. And the 8087's 8-level floating-point stack depth was apparently not increased in later incarnations (the 80287, 80387, and the chip-resident equivalent part of the '486, Pentiums, etc.). My HP-71 hand-held computer which came out in 1983 complied with the IEEE floating-point standard before the standard was even approved. The 71's resident user language is an incredibly powerful version of BASIC (especially powerful with the user groups' language extensions added); but I also have the Forth & Assembler module. This Forth used a strange 20-bit cell size (due to the Saturn processor's 20-bit address bus and 4-bit data bus) and a separate 64-bit floating-point stack with four levels, X, Y, Z, and T, plus "Last X," like HP's RPN calculators of the day had. The maximum stack depth for the calculators was chosen, I suppose, because registers were so expensive in silicon in the early 70's, and because before the calculators were programmable, you couldn't remember what was in a deeper stack. After they were programmable of course you only had to keep track of what each subroutine used, and beyond that it's like an ocean liner that needs 38 feet (or whatever) water depth and anything additional is irrelevant, even if it's 15,000 feet. It's seldom that the 4-level floating-point stack is inadequate and needs to be moved into variables to avoid overflow; but it I used it for everything I use scaled-integer for, I'm sure I would want more the the 8087's 8 levels.

I'm a little bit surprised that they put so much value on floating-point in the 50's. Decades later, a lot of digital signal processing (DSP) was done in scaled-integer. I guess I can understand the point they mentioned about the complication of having different scale factors for various cells in large matrices.

_________________ lots of 6502 resources

Fri Nov 25, 2016 8:19 am WWW
 [ 2 posts ] 

Who is online

Users browsing this forum: CCBot and 0 guests

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software