In 1980, Intel released the 8087 floating-point chip, making math much faster.
-
In 1980, Intel released the 8087 floating-point chip, making math much faster. I'm reverse-engineering this chip, 46 years later. Most of its instructions are implemented in microcode, but some are implemented in hardware. Let's look at the circuitry that decodes instructions and decides what to do...

-
In 1980, Intel released the 8087 floating-point chip, making math much faster. I'm reverse-engineering this chip, 46 years later. Most of its instructions are implemented in microcode, but some are implemented in hardware. Let's look at the circuitry that decodes instructions and decides what to do...

@kenshirriff this is extremely cool, good luck

-
In 1980, Intel released the 8087 floating-point chip, making math much faster. I'm reverse-engineering this chip, 46 years later. Most of its instructions are implemented in microcode, but some are implemented in hardware. Let's look at the circuitry that decodes instructions and decides what to do...

Like many processors, the 8087 uses a "Programmable Logic Array" (PLA) to decode the bit patterns in instructions. A PLA consists of grids of transistors, with some of the transistors missing. The pattern of transistors controls the PLA's function. The grid is a dense and flexible way of implementing this logic.

-
Like many processors, the 8087 uses a "Programmable Logic Array" (PLA) to decode the bit patterns in instructions. A PLA consists of grids of transistors, with some of the transistors missing. The pattern of transistors controls the PLA's function. The grid is a dense and flexible way of implementing this logic.

The microcode inside the 8087 chip uses conditional jumps for many purposes. Some conditions examine the instruction, so the microcode can act differently for different instructions. Here's the PLA that stores target addresses for microcode jumps. Target 0 is special: it does a three-way branch depending if the instruction is multiplication, division, or addition/subtraction.

-
The microcode inside the 8087 chip uses conditional jumps for many purposes. Some conditions examine the instruction, so the microcode can act differently for different instructions. Here's the PLA that stores target addresses for microcode jumps. Target 0 is special: it does a three-way branch depending if the instruction is multiplication, division, or addition/subtraction.

Instruction decoding in the 8087 has many more complications: hardcoded instructions handled by the "Bus Interface Unit", instructions that load a constant from the constant ROM, and handling the instruction queue. For more details, see my latest blog post:
https://www.righto.com/2026/02/8087-instruction-decoding.html -
In 1980, Intel released the 8087 floating-point chip, making math much faster. I'm reverse-engineering this chip, 46 years later. Most of its instructions are implemented in microcode, but some are implemented in hardware. Let's look at the circuitry that decodes instructions and decides what to do...

@kenshirriff Cool.I remember when they had to sell them in a matched set because of a NMI bug in the 8088. We discovered that bug the hard way at Dynalogic.

-
I incentive moved this topic from Uncategorized on