5 ms·
According to Steve Morse, the 8086 designer: "Various alternatives for extending the 8080 address space were considered. One such alternative consisted of appe
by kens 4y ago
According to Steve Morse, the 8086 designer:
"Various alternatives for extending the 8080 address space were considered. One such
alternative consisted of appending 8 rather than 4 low-order zero bits to the contents of a
segment register, thereby providing a 24-bit physical address capable of addressing up to
16 megabytes of memory. This was rejected for the following reasons:
Segments would be forced to start on 256-byte boundaries, resulting in excessive
memory fragmentation.
The 4 additional pins that would be required on the chip were not available.
It was felt that a 1-megabyte address space was sufficient.
"
Ref: page 16 of https://www.stevemorse.org/8086history/8086history.pdf https://www.stevemorse.org/8086history/8086history.pdf
Credit to mschaef for finding this.
- bell-cot 4y agoBut they revisited and used that alternative later, in designing the 80286. (Launched Feb'82, with ~135K transistors, according to Wikipedia.) If only there was a famous Bill Gates quote, about how 16MB (the limit of 24-bit physical addresses) ought to be more than enough...
- rep_lodsb 4y agoOnly in protected mode, and then segments were defined by descriptor table entries having a full 24 bit base address.
- anyfoo 4y agoAnd it's been stated in related threads numerous times (and by you as well if I recall correctly) how Intel at that time strangely treated their low pin count limit as almost a religion... apparently that influenced many decisions.
- kabdib 4y ago> Segments would be forced to start on 256-byte boundaries, resulting in excessive memory fragmentation. Well, they were dead wrong about /that/.
- rep_lodsb 4y agoDepends on how many segments you allocate. With 16 byte alignment, it can be practical to have each object (e.g. a linked list node) in its own segment so that the pointers will be only 16 bits while giving access to 1 MB of address space.
- peterfirefly 4y agoThere were even some DOS C compilers that supported it -- similar to near/far/huge pointers. I can't remember what they were called, though.
- ataylor284_ 4y agoThe 8086 was designed to be a 16-bit 8080, and 16 times the address space of that chip was a nice incremental leap forward. If you didn't expect the chip to become the foundation of the PC industry for the next 4 decades, it was probably a reasonable choice. At the same time, Intel made the iAPX432 chip, which was the one that was supposed to be future proof and look how that turned out.