The Intel 8086 processor (1978) started the x86 architecture still used today. This chip only had 40 pins, so the address pins needed to be reused for data or status. (The pins are connected to the pads around the edge.) It took some tricky circuitry to make this work. 🧵
The output pins need high current, so each pin has multiple large transistors in parallel. This diagram shows how long, parallel transistors are created from polysilicon and silicon, and then wired together by the metal layer on top.
Each pin has a latch to store the output value, as well as a circuit to read incoming data. This diagram shows how that circuitry looks on the die, underneath the metal layer. These transistors are much larger than regular logic transistors.
Although the 8086 had 16-bit registers, it created a larger 20-bit address space by breaking memory into segments. A special address adder computed the physical address from the segment and offset. These values moved through the chip over the internal AD and C buses.
This diagram shows the main functional blocks of the 8086. The address/data pins are along the edges. The address adder is in the upper left. Address and data values move across the various buses. Complicated bus control logic handles the memory accesses.
To support the different types of address pins, four different circuits were required, more than I'd expect. The 8086 is full of special cases: The top 4 address pins also provide status, but one pin constantly updates while the others don't. The bottom 4 pins use an extra latch.
For much more on the address/data pins, see my blog post: http://www.righto.com/2023/07/8086-pins.html
Reverse-engineering the 8086 processor's address and data pin circuits

The Intel 8086 microprocessor (1978) started the x86 architecture that continues to this day. In this blog post, I'm focusing on a small p...

@kenshirriff I understand Intel used to HATE adding extra pins to DIPs. Today's processors have more than 3k pins ... vorsprung durch technik!

@kenshirriff

"This diagram shows the main functional blocks of the 8086."

Your whole thread on this is so interesting!

It numbs the mind to think that this was, what 1980? (vs Moores Law...)

Thanks.

@kenshirriff How similar was the 8088 bus to that of the 8085?
@lopta The 8085 and 8086 buses were pretty similar. I think Intel wanted to make migration to the 8086 easier. Of course there were some differences since the 8086 has a 20-bit address bus and the 8085 has a 16-bit bus. But they used the same concepts: INTR/INTA for interrupts, HOLD/HLDA for bus hold, similar T state timing, similar status bits, and so forth.
@kenshirriff Thank you. I thought perhaps it helped engineers use (readily available?) 8085 support chips and adapt existing 8-bit boards to run 16-bit code.
@kenshirriff Was HOLD mostly asserted by a DMA controller (asking the CPU to tri-state the bus)?
@lopta HOLD could be asserted by a DMA controller, another processor in a multiprocessor system, or a coprocessor like the 8087 floating point chip.
@kenshirriff how much current is “high current” in this context?
@borogove The outputs were high current compared to the internal signals, but not a lot of current overall. The output pins could source 400 μA and sink 2.5 mA.
@kenshirriff
That brown photo looks like a sepia print of a really well organized area with crops that people could live in.