”It has dual MMUs”
What are dual MMUs good for? One for kernel code and one for user-mode code? (Does that mean less cache flushing during context switches?)
What are dual MMUs good for? One for kernel code and one for user-mode code? (Does that mean less cache flushing during context switches?)
However, there are separate configuration registers for code and data address space that can be used to define which parts of the virtual address space should be translated and which parts are directly mapped to physical addresses without translation. Therefore, strictly spoken, the instruction address space is not necessarily identical to the data address space, despite having only one page table.
Amiga programmers, do you remember the (bad) habit of putting data fields directly into the code? Like this fragment:
...
jsr OpenLibrary(a6)
move.l d0, gfxbase
rts
gfxbase dc.l 0
Imagine now what could happen in the above move.l instruction if the address "gfxbase" is translated differently from the addresses of the instructions :)