3 ms·
The 8088/8086 did not have an MMU.
by danachow 5y ago
The 8088/8086 did not have an MMU.
- adrian_b 5y agoThe 8088/8086 had a MMU that provided only addressing space extension, from 16-bit to 20-bit. It did not provide memory protection. The PDP-11 MMU provided memory protection so that process isolation was possible, but its main function was also addressing space extension, from 16-bit to 18-bit in the first version and from 16-bit to 22-bit in the later version, but that function was much less convenient to use than in 8088/8086.
- AnimalMuppet 5y agoThe 8088/8086 segment architecture is not what is generally considered an MMU. Yes, it provides address translation. That's part of what an MMU does. That doesn't make it an MMU, though. The 80286 is generally considered to be when an MMU was added to the x86 line.
- adrian_b 5y agoThe address translation, either with segments or with pages, is the essential function of a MMU and by far its most complex feature. Adding flags for additional features piggy-backed over the address translation, e.g. memory protection, is the easy part of a MMU. 80286 added memory protection, which is essential for a multi-user operating system, like UNIX. That is why it was the first Intel CPU to which UNIX was ported, but any computer with address space extension must have a MMU. 8088/8086 was indeed unusual in having a MMU without memory protection, because it was intended only for personal computers, while the previous computers expensive enough to need address space extension were all intended for multi-user applications, so all included memory protection in the MMUs.
- AnimalMuppet 5y ago"Address translation" at the level done by the 8088 is not the most complex part of a MMU. It's a shift and an add. So, no. That's not what any of the rest of us mean by "MMU".
- monocasa 5y agoAnd in hardware, the shift is free, so it's literally just a 12+16 adder.
- johndoe0815 5y agoThere was a Xenix version for the 8086. Of course, without memory protection, a misbehaving process was able to wreak havoc. You can run the system in your browser using the pcjs emulator: https://www.pcjs.org/software/pcx86/sys/unix/sco/xenix/086/2.1.3/ https://www.pcjs.org/software/pcx86/sys/unix/sco/xenix/086/2...
- danachow 5y ago> The 8088/8086 had a MMU that provided only addressing space extension, from 16-bit to 20-bit. In hardware this is literally an add. Calling a single add (with aliasing) an MMU is quite a reach. The 80286 is not merely an extension on this as the segment registers actually do indirection. Also in terms of silicon real-estate I think you greatly underestimate the complexity of what you call the “easy” part - anything that can fault is no longer trivial for one - the 8088 cannot do this.
- drallison 5y agoI believe the 8086, as originally designed and implemented, had a segmented address space with base and bounds registers in the style of the CDC 6600. This rudimentary but effective memory management approach was scrapped by Intel to make the 8086 part commensurate with the stepper reticle and semiconductor process of the time.
- drallison 5y agoAn email exchange with one of the 8086 architects informs me that no version of the 8086 design had base and bound hardware. Vivid and detailed as my recollection is, I appear to be remembering something that never happened.