En RESET, la MMU generalmente está 'apagada', es decir, no realiza ninguna traducción de las direcciones de memoria. Por lo tanto, el vector RESET se recupera de BIOS EPROM / Flash porque la memoria del BIOS puede estar en esa dirección física.
La CPU finalmente activará la MMU, cuando se hayan configurado suficientes datos de la MMU. Por ejemplo, la MMU puede tener tablas, en matrices de memoria, que convertirán una dirección virtual en una dirección física.
Hay varios tipos de MMU. Los más simples tienen una dirección base que es un desplazamiento en la memoria física y un límite, que es la dirección más grande a la que puede acceder un programa. Este tipo es común en MCU de 32 bits.
Las MMU más complejas crearán la ilusión de direccionamiento virtual. El espacio de direcciones de un programa parece ser contiguo para el programa y los datos, pero en realidad no lo es, y parte de él puede almacenarse en un sistema de almacenamiento externo como un disco o SSD.
La MMU está "en chip" en las CPU modernas. Eran unidades separadas de chip para algunas CPU en los 70 y parte de los 80.
AN MMU tiene una relación muy 'íntima' con la CPU. Cada acceso a la memoria va a través de la MMU. La MMU puede evitar que la instrucción cualquier complete un acceso a la memoria. Por ejemplo, una instrucción de carga o almacenamiento, transfiriendo datos entre la CPU y la memoria, debe evitarse porque se está utilizando una dirección que no es válida. Por lo tanto, la MMU necesita una integración rápida y sincronizada con la CPU.
Para una CPU con capacidad de direccionamiento virtual, la MMU puede evitar que una instrucción se complete para una página de memoria virtual "faltante" al interrumpir la CPU en la mitad de la instrucción. El estado de la CPU se almacena y se inicia el proceso para recuperar la página faltante del almacenamiento externo. Otros programas pueden ejecutarse mientras tanto. Finalmente, la página se carga en la memoria, la página se "arregla" en las tablas de la MMU, de modo que sea válida, y luego la instrucción incompleta se vuelva a completar, posiblemente millones de instrucciones más adelante.
Hay una opción acerca de la relación entre la memoria caché y la MMU. Un caché puede estar indexado por direcciones de memoria física o direcciones de memoria virtual. Si la caché está indexada por direcciones virtuales, la búsqueda en caché puede realizarse en paralelo con la MMU. Si la caché está indexada por direcciones físicas, la búsqueda se realiza después de que la MMU haya traducido una dirección virtual a una dirección física.
Una MMU no puede asignar la memoria de video al espacio de direcciones de la CPU a menos que la tarjeta de video ya haga que la memoria de video se vea como la memoria normal. La MMU no realiza ningún tipo de magia, sino que realiza la traducción de direcciones entre la CPU y el acceso a la memoria. La MMU se configura para cada proceso lógico (OS), por ejemplo, Aplicación separada. La MMU puede "ocultar" partes del espacio de direcciones de un proceso, y normalmente lo hace. Por lo tanto, la MMU podría impedir que un proceso acceda a la memoria de video si es parte del espacio de direcciones subyacente de la CPU.
Es la MMU la que permite que un sistema operativo cree un entorno de memoria virtual para los procesos. El SO está mayormente limitado a usar cualquier arquitectura de dirección virtual que proporcione la MMU. El sistema operativo y la MMU no tienen que estar exactamente alineados, por ejemplo, el sistema operativo podría usar páginas más grandes de las que admite la MMU, pero sería extremadamente incómodo para el sistema operativo intentarlo para usar páginas más pequeñas.
Es la MMU la que permite al sistema operativo proporcionar la ilusión de memoria virtual. Sin una MMU adecuada, no sería práctico proporcionar memoria virtual.
(Sin una MMU capaz de memoria virtual, la ilusión de memoria virtual, contenida en el proceso, sería gestionada por un intérprete como la Máquina Virtual de Java (JVM) o el tiempo de ejecución de .NET. Actúan sobre cada instrucciones para garantizar que el código del programa Java / C # no pueda dañar otro programa que se esté ejecutando en el mismo espacio de direcciones.)
Normalmente, la CPU se ejecuta en un par de 'modos' diferentes, y la MMU tratará una dirección de manera diferente según el modo. El sistema operativo se ejecutará en un "modo" más privilegiado que un proceso de usuario.
Una MMU que admite el direccionamiento virtual interceptará cada acceso de proceso de usuario a la memoria (tanto para instrucciones como para datos) y convertirá la dirección virtual en una dirección física real. Esta traducción no necesariamente sucede. Las tablas de traducción de la MMU también llevan bits de control, que la MMU aplica, lo que le permite al usuario procesar permisos para leer, ejecutar o escribir en la dirección física.