In 8086 architecture memory is addressed by segment:offset
scheme, where the 20-bit linear address is formed as address=segment*16+offset
. This looks needlessly complicated and doesn't allow to further extend physical address width without changing instruction set, despite the logical address having two 16-bit components (and 16+16>20
).
A much simpler way seems to be address=segment*65536+offset
. Also, in this case it'd be trivial to extend physical address width — by simply giving meaning to higher bits beyond originally used (lower 4 bits of segment
and 16 bits of offset
). Also, in such a case the CPU wouldn't even have to perform any addition to form the physical address.
Why was the actual address formation scheme chosen instead of the more straightforward one? Was it meant to say something like "any extension must be radical", like a change to 80286 addressing model?