La memoria caché de una CPU o una GPU es tan crucial para su funcionamiento que nos planteamos a día de hoy un procesador sin la misma. Pero, una pregunta que mucha gente se suele hacer es: ¿por qué la capacidad de almacenamiento de la caché no es más grande? Esto tiene una respuesta que os vamos a responder a continuación.
La memoria caché no es más que una copia «geográficamente cercana» de la parte de la memoria que los diferentes núcleos de una CPU están tratando en cada momento. Principalmente tiene tres utilidades distintas:
- Disminuir la latencia, tiempo de ejecución, de cada una de las instrucciones.
- Reducir el consumo energético por la interfaz entre la CPU y la memoria.
- Eliminar la contención del acceso a memoria por existir varios clientes.
Dado que la caché es limitada en capacidad, cuando la CPU o GPU buscan un dato y no lo encuentran lo que hacen es ir saltando de nivel en nivel. Donde el último nivel es el que tiene mayor capacidad de almacenamiento. Por lo que por lógica sería bueno utilizar memoria con mayor capacidad de almacenamiento como es la memoria DRAM. ¿Por qué no se utiliza la memoria DRAM como caché?
DRAM versus SRAM
Existen dos tipos de memoria, la SRAM y la DRAM, a partir de las cuales se han ido creando los diferentes tipos de memoria volátil utilizada en los PCs a través de su historia.
La memoria SRAM le debe su nombre a Static Random Access Memory, se trata de la RAM más veterana en PC, ya que se utilizaba como memoria en los primeros PCs, antes de ser reemplazada por la DRAM y su mayor capacidad de almacenamiento. La SRAM se construye haciendo uso de seis transistores en total para almacenar un solo bit de datos.
La DRAM en cambio debe su nombre a Dynamic Random Access y se construye haciendo uso de un transistor y un condensador para cada bit de datos. Por lo que el área que ocupa es mucho menor y por tanto permite poner más bits de datos por área, lo que la hace ideal como memoria volátil en la cual almacenar grandes cantidades de datos de manera temporal. No obstante no se utiliza la DRAM como caché.
¿Por qué no se utiliza la DRAM cómo caché?
El motivo de ello es muy sencillo, tanto en la DRAM como en la SRAM cuando almacenan un bit de datos lo que están haciendo es retener una carga eléctrica en su interior. En la DRAM dicha carga eléctrica es almacenada en el capacitador y estos tienen la tendencia de ir perdiendo la carga con el tiempo, por lo que requiere que dicha memoria sea refrescada.
Es precisamente en dicho periodo de refresco de la memoria en el que la CPU no podría acceder a los datos de la caché construida con DRAM y por tanto entraría en una burbuja de tiempo muerto. A día de hoy, si Intel, AMD o NVIDIA hicieran uso de memoria DRAM en sus CPU, al menos en el último nivel, provocaría que todo el procesador tuviese que ir a la mesa de diseño de nuevo.
Un truco que se realiza en algunos diseños con DRAM como caché de último nivel es el de implementar en el mismo nivel de la jerarquía una SRAM que es con la que la CPU realmente se comunica. Un sistema DMA interno copia los datos desde la DRAM embebida a la SRAM de manera directa. Dicha combinación al encontrarse dentro del procesador tiene una latencia mucho menor que la RAM y reúne las ventajas de capacidad de la DRAM con las de la SRAM.