Login
You're viewing the 101010.pl public feed.
  • Oct 18, 2026, 5:07 PM

    With a microscope, I zoomed in on the tiny silicon die and identified the circuitry. The ROM holds the software (microcode) that controls the chip. The adder is the heart of the chip, while the shifter aligns numbers, sliding them back and forth.

    A die photo of the 8087 under the microscope, zooming in on the datapath. Various functional blocks are labeled, such as the shifter, leading zero detector, adder, temporary registers, and stack registers.
    💬 1🔄 3⭐ 0

Replies

  • Oct 18, 2026, 5:08 PM

    Subtracting two floating-point numbers, say 8-7.5, takes a few steps. Floating-point numbers are stored as a power of 2 times a binary number. The numbers are shifted so the exponents align, and then subtracted in binary. To get rid of zeros at the front, the result is shifted (normalized).

    An example subtraction: 8 - 7.5. The numbers are expressed as powers of two times fractional binary numbers. For instance, 8 is 2^3 times 1.000. The numbers go through the steps of alignment, subtraction, and normalization to produce the result of 0.5.
    💬 2🔄 3⭐ 0
  • Oct 18, 2026, 5:08 PM

    The 8087 chip went beyond regular numbers, supporting special values such as infinities, positive and negative 0, Not-A-Number. Computer scientist W. Kahan made sure special values were handled in mathematically sensible ways, so the chip had pages of special-case rules to follow.

    A table from the 8087 documentation showing how different operations with infinity are handled. This is just part of the infinity table. Other tables described handling zeros, the special Not-a-Number value and other special cases.
    💬 1🔄 3⭐ 0
  • Oct 18, 2026, 5:09 PM

    The 8087 chip's microcode implemented infinity and other special cases in complicated code. This flowchart shows part of the code. Don't worry, you're not expected to understand this "spaghetti" code :-) The point is that there's a lot going on.

    A complicated flowchart showing how the 8087 chip handles special cases such as infinity minus infinity. It has many boxes connected by lines with arrows in a tangled mess.
    💬 1🔄 4⭐ 1
  • Oct 18, 2026, 5:11 PM

    Although the 8087 chip was complicated, it became popular because it made floating-point operations 100 times faster on the IBM PC and other systems. Its math became the standard (IEEE 754) used by all modern computers, so every time you do math, thank the 8087 chip :-)

    The 8087 chip under the microscope. In this photo, the metal layer on top is visible, forming white lines. The circuitry is visible as brown rectangular areas with various complex patterns. Around the edges, thin black bond wires connect the silicon die to the chip's external pins.
    💬 2🔄 4⭐ 0
  • 💬 5🔄 2⭐ 0
  • 💬 1🔄 0⭐ 0
  • 💬 0🔄 0⭐ 0
  • 💬 0🔄 0⭐ 0
  • 💬 0🔄 0⭐ 0
  • 💬 0🔄 0⭐ 0
  • 💬 0🔄 0⭐ 0
  • Oct 18, 2026, 5:32 PM

    @kenshirriff
    > Its math became the standard (IEEE 754)

    The 8087 and Intel did NOT invent the IEEE 754 floating point standard we all use, don't steal the credit like that!

    It was primarily designed by professor William Kahan:

    > The key designer of IEEE 754, William Kahan...
    en.wikipedia.org/wiki/IEEE_754

    > Kahan was the primary architect behind the IEEE 754-1985 standard for floating-point computation (and its radix-independent follow-on, IEEE 854). He has been called "The Father of Floating Point", since he was instrumental in creating the original IEEE 754 specification.[2] Kahan continued his contributions to the IEEE 754 revision that led to the current IEEE 754 standard.
    en.wikipedia.org/wiki/William_

    Nor was Kahan an employee of Intel; they don't get credit that way, either! He was a professor at UC Berkeley, and research on numeric algorithms and floating point and such were his life's work.

    8087 article:
    > Palmer credited William Kahan's writings on floating point as a significant influence on their design.[13][14]
    en.wikipedia.org/wiki/Intel_80

    Kahan *helped* Intel and the 8087, not the other way around. He also famously gave major help to HP, but that's another story.

    💬 3🔄 1⭐ 0
  • 💬 1🔄 0⭐ 2
  • Oct 18, 2026, 5:51 PM

    @jpmzemke
    You're saying that you were told that the non-extended precision 8087 was complely independent?

    But that's already contradicted by my quote above; the project started in 1977 and the co-architect Palmer credited Kahan, and Kahan was 90% or more of IEEE 754.

    Clearly they did a ton of work way before IEEE was finalized, so it's not that Palmer et al just copied IEEE, which didn't exist yet, but I'm trying to clarify that it's *also* true that IEEE wasn't a merely a copy of the 8087.

    Kahan is called "The Father of Floating Point" for strong reasons.

    Deeper more nuanced questions of credit splitting I have no idea about, but that *is* about nuance.

    I'm sure the architects of the 8087 did lots of work, I'm not saying otherwise.

    Floating point is a huge subject.

    P.S. Numerical analysts and floating point experts say that, if you have accuracy problems, you can't just blindly go from 64 bit to 80 bit to fix them -- that's a fool's paradise.

    80 bits helps as part of a solution, not as the whole solution.

    But I digress.

    @kenshirriff

    💬 2🔄 0⭐ 0
  • Oct 18, 2026, 6:07 PM

    Yes.
    I think the point is that the IEEE committee added the parts about _extended_ formats to the standard at least in part to reflect Intel's work on the 80-bit format for the 8087.
    If I recall correctly, such extended formats are separate from the "main sequence" of 32-64-128-bit formats.

    Again, this is all from memory, so don't take my word for it.

    @dougmerritt @jpmzemke @kenshirriff

    💬 1🔄 0⭐ 0
  • 💬 0🔄 0⭐ 2
  • Oct 18, 2026, 6:28 PM

    @jpmzemke
    Parlett was a high powered guy. I see we just lost him in February at age 94 (!). At Berkeley he was chair of C.S., and "He was the author of many influential papers on the numerical solution of eigenvalue problems, the QR algorithm, the Lanczos algorithm, symmetric indefinite systems, and sparse matrix computations.[3]"
    en.wikipedia.org/wiki/Beresfor

    Rump is head of the Institute for Reliable Computing (great topic).
    > What is research?
    > Yesterday I finished a proof,
    > Today I found a flaw.
    > I had a pleasant night.
    tuhh.de/ti3/rump/

    The history is clearly complicated and interesting, and I certainly don't know all of it.

    Back in the day, even before IEEE 754 was implemented, I was following the work of Kahan, whose research and writings I admired, and I worked with a (later, less famous) head of the 754 committee, Dick Delp, which gives me one perspective, but I claim no expertise; I just have a long interest.

    Come to think of it, I should clarify that I have even *less* expertise than may be implied by the above. And interest is certainly never the same as knowledge.

    @vnikolov @kenshirriff

    💬 1🔄 0⭐ 0
  • 💬 1🔄 0⭐ 0
  • 💬 1🔄 0⭐ 0
  • 💬 0🔄 0⭐ 0
  • Oct 18, 2026, 7:30 PM

    @dougmerritt @kenshirriff No, not independent. But the 80 bit had already been planned and were added for that reason to IEEE 754. 32, 64, and 128 bit feel more natural, why should one have a format that has more bits than 64 and not directly quadruple precision?

    💬 1🔄 0⭐ 0
  • Oct 19, 2026, 12:06 AM

    @jpmzemke
    Intel has made a lot of strange decisions over the decades. I won't defend 80 bits, but if I were to hazard a guess, perhaps it fit better into their transistor budget that year than did 128 bits. There may have been added concerns about the number of cycles burned.

    @kenshirriff

    💬 0🔄 0⭐ 0
  • Oct 18, 2026, 6:17 PM

    «> Its math became the standard (IEEE 754)»

    I think I would look for a phrasing like "8087 brought IEEE floating-point arithmetic to the masses" (after a couple of rounds of revising it).

    «It takes a lot of hardware to handle floating-point numbers like 12.34.»

    Paradoxically and off topic, 12.34 can't be represented exactly as a binary floating-point number.

    @dougmerritt @kenshirriff

    💬 0🔄 0⭐ 0
  • 💬 1🔄 0⭐ 0
  • 💬 0🔄 0⭐ 0
  • Oct 19, 2026, 6:40 AM

    @kenshirriff wait what? "0.0001" in binary equals 1/16 ? And "0.0010" equals 1/8? "0.01" = 1/4? .... So we're basically counting digits backwards here? Magic! Wild!

    Of course there's probably a (non-AI, LOL) maths proof here etc. but I've just never realised this! Until today! Woohoo!

    💬 0🔄 0⭐ 0