Actualizado a: 19 de enero de 2024
Seguramente que hayas escuchado hablar o hayas leído MMU o controlador de memoria en algún lugar, pero que no sepas muy bien de qué se trata o si existe alguna diferencia entre ambos, ya que muchos los usan como sinónimos, pero no son del todo iguales. Por eso, aquí te aclaramos todas las dudas al respecto…
¿Qué es MMU?
Una MMU (Memory Management Unit), o unidad de gestión de memoria, es un componente de hardware que se encarga de gestionar todas las operaciones de memoria y almacenamiento en la caché de la CPU. Además, esta MMU suele estar integrada en el procesador, aunque en el pasado se solía usar un IC separado.
Ten en cuenta que gestionar la memoria de forma adecuada es algo muy importante, y que afecta directamente al rendimiento, por lo que la MMU es imprescindible. De hecho, se encarga de tres cosas vitales:
- La administración de la memoria del hardware: supervisa y regula el uso que hace el procesador de la memoria de acceso aleatorio (RAM) y la memoria caché.
- La gestión de la memoria del sistema operativo: garantiza que los recursos de memoria adecuados estén disponibles para la ejecución de programas.
- La administración de la memoria de la aplicación: asigna la memoria requerida de cada programa individual o proceso, y luego recicla el espacio de memoria liberado cuando concluye la ejecución de dicho proceso para que pueda ser ocupado por otro.
¿Cómo funciona la MMU?
La MMU trabaja junto con la CPU para gestionar de forma correcta la memoria donde se guardan todos los datos e instrucciones que hacen posible ejecutar el software, así como garantizar que se realicen las tareas de E/S necesarias. Para ello, hará lo siguiente:
- Distribución de la memoria: la MMU mueve los recursos de la memoria a donde pueden cumplir mejor con los requisitos del sistema, normalmente antes y después de que se ejecuten los procesos del sistema.
- Supervisión: realiza un seguimiento de todos los recursos de memoria.
- Eficiencia: conserva la memoria principal y otros recursos de memoria.
- Integridad del sistema: reduce la probabilidad de fragmentación de memoria y asignación deficiente de memoria.
- Integridad de los datos: garantiza que se mantenga la integridad de la información almacenada. Es decir, minimiza la corrupción.
Gestión de la memoria física frente a la lógica
Para entender con la memoria con la que trabaja una MMU, hay que entender también qué es la memoria lógica y qué es la memoria física:
- Memoria lógica: las direcciones de memoria lógica, también llamadas espacio de direcciones virtuales, son creadas por la CPU. Esta memoria virtual puede cambiar su tamaño dinámicamente según los requisitos de procesamiento. Es decir, puede ir más allá del límite de la memoria RAM instalada. Seguro que te suena esto, ya que pagefile.sys de Windows o la partición SWAP de los Unix, es precisamente parte de la unidad de almacenamiento usada como suplemento de la RAM.
- Memoria física: la MMU calcula las direcciones físicas. Luego se cargan en el registro de direcciones para que puedan ser accedidas. Las direcciones físicas no cambian, como lo hacen las lógicas. Se refieren a posiciones de memoria reales en el espacio de direccionamiento.
¿Qué es un controlador de memoria?
Por otro lado, tenemos el controlador de memoria o memory controller. Este elemento es una parte importante del sistema de memoria, que controla la RAM y hace que ésta responda ante la demanda de la CPU mediante señales de control para que la memoria sepa si se trata de un acceso de escritura o de lectura, etc.
Además, del controlador de memoria dependerá la capacidad máxima de memoria que se puede usar en un sistema informático, además de la cantidad de bancos, el tipo, la velocidad de la memoria, el ancho de banda, etc. Es decir, determina el rendimiento del sistema de memoria.
Tipos de controladores de memoria
Los controladores de memoria han ido evolucionando a lo largo de la historia, por lo que tenemos varios tipos:
- Controlador de memoria tradicional: se usó por muchos años y estaba dentro del northbridge del chipset. De esa forma, la CPU podía acceder a la memoria a través de este chip para intercambiar datos. No obstante, dado que esto creaba retrasos, finalmente se terminó integrando en la CPU. Ten en cuenta que cuando se produce el acceso a través del northbridge, esto se hacía a través del denominado FSB o Front Side Bus que había en la época, y este tenía una frecuencia de reloj y ancho de banda limitado.
- Controlador de memoria integrado: llegaría más tarde, cuando algunas CPUs comenzaron a integrarlo en su interior. Actualmente prácticamente todas las CPUs tienen el controlador de memoria integrado. Es más, suelen tener más de un controlador. De esta forma, se reduce la latencia y se aumenta la velocidad, ya que la CPU puede acceder directamente a la memoria RAM. No necesita pasar por un FSB lento, sino que la información viaja de forma directa.
Diferencias entre MMU vs controlador de memoria
Como ves, es algo complejo deducir cuál es la diferencia entre una MMU y un controlador de memoria. Muchas veces se usan como sinónimo, pero lo cierto es que si nos podemos estrictos hay diferencias destacables:
- MMU: tradicionalmente es la responsable de manejar la memoria virtual y el caché de la CPU. Esta unidad realiza las traducciones de direcciones virtuales usadas en el lado del software en direcciones físicas que son las presentes en la memoria RAM.
- Controlador de memoria: se dedica a controlar la mensajería y señalización física que interviene en la comunicación entre la CPU y la memoria externa. Es decir, dicho de otro modo, el controlador de memoria realiza transacciones entre la CPU y la memoria RAM usando comandos como LOAD/STORE para los accesos.
Cuando se debe realizar una operación relacionada con la memoria, el sistema operativo representará la dirección virtual en MMU, que la traducirá a la dirección física real en el dispositivo. Posteriormente, esta dirección física será utilizada por el controlador de memoria para realizar la transacción deseada (lectura o escritura de una dirección de memoria).