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)
Quote:
Therefore, the 8087 was destined to have preponderantly One-operand instructions; the designer's task was to make a Virtue of this Necessity.
Quote:
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 KahanAn Interview with the Old Man of Floating-PointHistorical Perspective and Further ReadingQuote:
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.
-
http://amturing.acm.org/award_winners/kahan_1023746.cfm[1] with John Palmer