How Could the Intel 8088 Have a 20 bit Adress Bus?

This is a discussion on How Could the Intel 8088 Have a 20 bit Adress Bus? within the Tech Board forums, part of the Community Boards category; To the best of my understanding, the Intel 8086/88 had 16 bit registers. How, then, could it have had a ...

To the best of my understanding, the Intel 8086/88 had 16 bit registers. How, then, could it have had a 20 bit address bus?

Originally Posted by cyberfish

This (having wider address bus than CPU bus) is very common in 8-bit CPUs, because 256 bytes of memory is often not enough.

??? Nah, I'm just tripping...

About the OP's question, the Intel 8086/8088 16-bit CPU could access up to 1MB of memory. "How" would someone ask, "this processor has 16-bit registers!".
This processor, until the 80286 when protected mode was introduced, used two registers for the memory address: A segment and an offset.
The real address could be calculated by: segment*16+offset : Multiplying by 16 extends "segment" 4 bits to the left, resulting in a 20-bit address. That is the reason for the "extra" addressing lines.

What you read is correct. The 8088 was an hybrid 8086 processor with 16 bit registers but an 8 bit data bus. It was neither a 16-bit cpu or an 8-bit cpu. It was a bit of both. A processor isn't defined exclusively by its registers size.

Meanwhile, because the 8086 was the first true 16 bit processor from Intel, it's very natural it would inherit some of the principles of earlier 8 bit architecture. Namely the requirements to address a larger memory space than that possible through a single register. And especially because 65k was even at the time a rather small memory space. So cyberfish comment nicely complements the information already given by giving it an historic context. It was indeed very common for 8 bit (but also 16 bit) processors to address larger memory spaces than those apparently made possible with those register sizes. They simply had to.

The internal data bus was 16 bit on both processors. It was the external data bus that was different. 16-bit on the 8086 and 8-bit on the 8088.

The 8086 was my first PC processor too. It was the processor for the Amstrad PC 1512, my first personal computer. The 8088 I only know from much more recently, from when I was studying the Z80 a couple years ago and one interesting book at the time (available here, but I can't remember exactly which title) made extensive comparisons to the 8088.