Monday, March 8, 2010

Intel 8086 Memory addressing architecture

Before Coming to the point, a small history lesson for everybody.
The first microprocessor launched by Intel was 4004, specifically designed for a Japanese firm making calculators.
The Intel design engineer conceived the idea of producing a general-purpose programmable chip, instead of the custom logic for each different customer that was the rule at the time.
So they came up with a 4-bit microprocessor, which was runaway success.

This was how Intel started, after 4004 Intel came up with many successive microprocessors, like 8008,8080,8085,8086...
Out of all these Intel's 8086 is the one we are going to discuss.

8086 was different from its predecessor, the Intel 8085.
8086 had 20-bit address bus, thus enabling it to address memory up to 1 Mb. But the processor itself was 16 bit.
So how was this possible, it should have been able to address only 2^16 i.e. 64 Kb of memory.
Intel achieved this by overlapping 2 16 bit words to form 20 bit address. Interesting point is that they could have used these 2 16 bit words to get 32 bit addresses, thus resulting in being able to get addresses up to 2^32. But this was considered unnecessary at that time.

Intel used the first 16 bit word as offset address and second 16 bit word as segment address, 4 segment registers present in 8086 did all the bit shifting and addition required.

And as MS-DOS was created for IBM pc around this time, which in turn used Intels 8086 chips, it had 1 Mb limit the address space, out of which 640 Kb was taken by MS-DOS itself, remaining 640 Kb was used for user processes. But that in itself is a different story altogether.

No comments:

Post a Comment