Materia: #organizacion_del_computador_II

Tags: Memoria

Sistemas de memoria

La memoria consiste en distintos sistemas que son usados hoy en dia. Cada uno juega un rol importante en la computadora y es necesario entender dicho rol. Podemos separar las memorias en dos tipos: las memorias no volátiles y las memorias volátiles

Las memorias no volátiles son dispositivos que tiene la capacidad de retener la información cuando se les desconecta de la fuente de alimentación. Historicamente se les llama por la denominación ROM (Read Only Memory), pero ya quedo obsoleta esta definición ya que hoy en dia puede ser modificadas, y hasta en tiempo real. En la memoria no volátil se encuentra generalmente el programa de arranque de la maquina. A su vez, son mas baratas que las memorias volátiles, y consumen menos.

Por otro lado, las memorias volátiles son aquellos dispositivos en los que, una vez desconectados de la corriente, la información almacenada se pierde. Es irrecuperable. Son conocidas como RAM (Random Access Memory), debido a que su tiempo de acceso es siempre el mismo, independientemente de la ubicación del dato en la memoria. Son mas rapidas que las memorias no volátiles. En las memorias no volátiles suele haber buena parte del codigo de los programas que actualmente se estan ejecutando, ya que son mas veloces.

Es inviable usar unicamente un sistema de memoria, por lo que en la practica utilizamos ambos simultaneamente. Por esto mismo, existe el concepto de estructura jerárquica, en el que existen capas de memorias, cada una mas rapida pero de menor capacidad que la anterior.


Jerarquía de la memoria

El primer nivel de la jerarquía es la memoria cache, siendo la mas rapida pero cara de todas, basada en el sistema RAM. Mantiene una copia de los datos e instrucciones que el procesador está utlizando, o cuya probabilidad de ser requeridos en lo inmediato es muy alta, en base al principio de localidad.

El siguiente nivel en la jerarquía son las memorias dinámicas: la RAM. A diferencia de la memoria cache, las memorias dinámicas se encuentran generalmente separadas del CPU. Son mas lentas, pero mas baratas y con mayor capacidad que la memoria cache.

Tener las memorias separadas en estas categorias nos trae un gran problema: la coherencia entre las mismas. Los datos que no se encuentran en la memoria cache pero son necesarios permanecen en los restantes niveles de la jerarquía de memoria, lo cual involucra un sistema nuevo para mantener la coherencia entre cada nivel.


Controlador de memoria

Este sistema nuevo que mencionamos antes es el controlador de memoria, un dispositivo encargado de comunicar las memorias dinámicas con las demas piezas de la computadora. Su diseño es complejo, pero nos asegura poder acceder a la memoria que deseamos en base a un mapeo de direcciones bastante inteligente, aparte de poder saber de antemano si vale la pena buscar o no dicha direccion (quizas no fue modificada en la ejecución del programa, entonces se ahorra dicha busqueda).

flowchart TD

memoryUnit[Controlador de memoria]
RAM[Modulos de memoria RAM]
secCache[Cache secundaria]
IOUnit[Controlador de E/S]

memoryUnit --> RAM
RAM --> memoryUnit

memoryUnit --> IOUnit
IOUnit --> memoryUnit

processor --> secCache
secCache --> processor

memoryUnit --> processor
processor --> memoryUnit

subgraph processor[Procesador]
	primaryCache[Cache Primaria]
end
Grafico ejemplificando las relaciones entre el CPU y los distintos niveles de memoria.