https://www.righto.com/2026/05/microcode-inside-intel-8087-floating.html
In 1980, Intel introduced the 8087 floating-point chip, a co-processor that made floating-point operations up to 100 times faster. This chip was highly influential, and today most processors use the floating-point standard introduced by the 8087.
The 8087 uses complicated algorithms to accurately compute functions such as square roots, tangents, and exponentials. These algorithms are implemented inside the chip in low-level code called microcode. I'm part of a group, the Opcode Collective, that is reverse-engineering this microcode. In this post, I take a close look at the microcode for one of the 8087's instructions—FXCH—and explain how the microcode works. The FXCH (Floating-point Exchange) instruction exchanges two floating-point registers. You might expect this instruction to be trivial, but there's more going on than you might expect; the microcode uses 14 micro-instructions to implement the exchange instruction.
To explore the microcode, I opened up an 8087 chip and created a high-resolution image with a microscope. The large microcode ROM occupies a central position, holding the micro-instructions that control the chip. The microcode engine on the left steps through the microcode, handling jumps and subroutine calls. The bottom half of the chip is the "datapath", the circuitry that performs floating-point calculations; it is split into a 16-bit datapath for the number's exponent and a 64-bit datapath for the number's fractional part (also known as the significand).
(Score: 3, Insightful) by owl on Tuesday June 02, @01:33AM (1 child)
That's a fair assessment, given that the rom microcode is in fact a little program to use a small set of somewhat generic hardware elements to perform floating point math.
However, you can also think of it as "hardware floating point" in much the same way as GNU defines "hardware". Everything's etched in silicon and you can't change any of the programming inside, no matter how hard you try, so yeah, it is "hardware". But agreed, it is not a Weitek FPU chip [wikipedia.org].
(Score: 2) by lars_stefan_axelsson on Tuesday June 02, @07:49AM
Yes, it becomes a peculiar game of semantics pretty quickly: With that, strict, definition, then the CPU that came with the FPU wasn't a "hardware" CPU either. It also used microcode.
In fact, which that definition then Intel hasn't sold a "hardware" CPU since the 8085... And what about state machines in general? I can't build my Mealy/Moore machines using 7400-logic anymore, because that's not hardware, but software? I was programming all those years ago at university? Yes, that's perhaps making too fine a point, but it still points to something. Memory and states are not "forbidden" as such in a hardware implementation, it doesn't magically make it software. In fact memory/state, takes up most of the class in digital design courses.
Now, the actual implementation details with uops and more, or less, direct decoding is actually interesting when we come to more modern architectures with Intel being much more RISC-like internally, it's just that it doesn't run x86 instructions as such.
So, of course, the interesting discussion lies beyond what "hardware" means; it's a summary word at best, but I'd still say it's a meaningful distinction to make when we're talking about hardware vs software floating point. In that case the 8087 is hardware floating point as opposed to the 8086 implementing the same instructions via traps in software.
Stefan Axelsson