Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The 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.



The 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.


The 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.


"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".


And in hardware, the shift is free, so it's literally just a 12+16 adder.


There 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...


> 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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: