The Intel 8086 was released in 1978, starting the x86 line that still dominates computing. I’m reverse-engineering the chip by studying the silicon die, and I think I’ve spotted a bug fix in the silicon. They didn’t have microcode updates then so they patched the silicon. ?

Here’s the fix. They pulled two signals horizontally out of the “Group Decode ROM”. They went to a NOR gate and an inverter that they added in an empty space. This signal went to another NOR gate, the gate split in two to add another input. This strange layout caught my eye.

The bug was an obscure problem: if you updated the stack segment register and the stack pointer and got an interrupt in the middle, the interrupt frame got pushed to the wrong location (essentially written to a random spot in memory).

The fix detected instructions that updated a segment register and sent a delay signal to the pre-existing circuit that delayed interrupts in other cases. The red box shows the die region in the previous image. The fix covered a large area.

The “bad” instructions were detected by the Group Decode ROM, which categorized instructions for decoding by matching bit patterns. They added two more patterns to catch the bad instructions. Here’s a closeup of the ROM circuitry; it’s really a Programmable Logic Array (PLA).


This illustrates the difficulty of fixing a bug in a microprocessor. Not as bad as the Pentium floating point bug that cost Intel $475 million in recalls though. Later processors update the microcode during boot to fix bugs in “software” rather than hardware.
For more details, see my latest blog post:
https://t.co/Si74o98iFq
The original bug is discussed at:
https://www.righto.com/2022/11/a-bug-fix-in-8086-microprocessor.html
https://www.pcjs.org/documents/manuals/intel/8086/