Motorola 68451

The MC68451 was a Motorola (now Freescale) Memory Management Unit (MMU), which was primarily used in conjunction with the Motorola MC68010 microprocessor.
The MC68451 supported a 16 MB address space and provided a MC68000 or a MC68010 with support for memory management and protection of memory against unauthorized access. The block size was variable, so it was usually used for segment-based memory management. It supported the mapping of up to 96 memory segments or pages of a variable size from logical to physical addresses. To allow more segments or pages, the simultaneous use of up 3 MC68451 MMUs was officially supported.
In combination with a MC68010 the MC68451 permitted the realization of virtual memory. With the earlier MC68000, this was not possible due to a design error in the way the MC68000 treated memory access errors, i.e. processor state could not always be properly restored after a page fault. The limitation to 96 segment table entries made systems based on a MC68010 and a MC68451 slow, as they often had to modify the segment table due to its small size. Some companies (e.g. H. Berthold AG) therefore used 12 MC68451 MMUs together, others (e.g. Sun Microsystems) used their own proprietary MMUs instead of the MC68451. A small Massachusetts workstation company, Apollo Computer, used two 68000 processors running concurrently (one was running a single instruction behind), so that when a processor fault occurred, the CPUs could switch places and the second CPU could take over processing once a virtual memory page was swapped in.