Ya había mencionado que la memoria del Sistema, la memoria RAM, no es la más rápida de nuestro ordenador. Las memorias Caché son más rápidas. Estas memorias son volátiles y de tipo estático, es decir, no hay que andar refrescando los datos cada poco tiempo, sino que permanecen siempre que mantengamos la alimentación. ¡¡Ojo!!, no asociar erróneamente memoria estática con no volátil, las memorias caché son de tipo estáticas pero son volátiles, es decir, si interrumpimos la alimentación eléctrica se perderán los datos.

Memoria Caché.

Si estas son las memorias más rápidas de nuestro ordenador, nos interesaría tener muchas de este tipo. El problema es que tienen poca capacidad comparadas con la RAM. Al final, como siempre, hay que buscar un equilibrio entre velocidad y capacidad.

La CPU tenderá a usar estas memorias para poder acceder más rápidamente a los datos, pero para trabajar de esta manera, tenemos que ser capaces de predecir los datos que va a necesitar la CPU y cargarlos antes en la memoria Caché. De esta tarea, nada sencilla, se ocupa la controladora de Caché, siguiendo los siguientes criterios:

Secuencialidad: La probabilidad de que la CPU valla accediendo a posiciones de memoria contiguas de forma secuencial, es muy alta. Es decir, si la CPU ha requerido datos de una determina posición de memoria, es altamente probable que lo siguiente que pida sean los datos de las posiciones de memoria siguientes. Así pues, la controladora de Caché se ocupará de cargar los datos de estas direcciones en la Caché, vaticinando que la CPU se los solicitaría a continuación.

– Datos de frecuente consulta: Hay ciertos datos que son consultados con bastante frecuencia, me refiero a bucles, pilas de almacenamiento, variables, etc. La controladora de la memoria Caché se encargara de que se carguen dichos datos.

Empleando estos dos criterios, se predicen los datos que va a necesitar la CPU y se cargan en la Caché. Posteriormente, cuando la CPU solicite los datos que necesite a la Caché, si los encuentra allí disponibles,  se produce lo que se llama un acierto de Caché. Por el contrario, sino los encuentra, tenemos un fallo de Caché. El porcentaje de acierto de Caché suele estar en torno al 90%, por lo que usando estas memorias mejoramos sensiblemente la velocidad de acceso a los datos.

Por otro lado, cuando se produce un fallo de Caché, la CPU tiene que obtener los datos de la RAM. Para que esta contrariedad ralentice lo menos posible el funcionamiento del ordenador, la CPU realiza la petición de los datos a la Caché y a la RAM al mismo tiempo. En el caso de tener un acierto de Caché, sencillamente se ignora la petición realizada a la RAM. Si tenemos un fallo de Caché, esperamos a recibir los datos de la RAM.

Finalmente, hay que comentar que tenemos distintos niveles de memorias Caché, dependiendo de su velocidad y capacidad. La Caché de nivel 1 (L1) es la que tiene mayor velocidad pero menor capacidad, la de nivel 2 sería algo más lenta pero con algo más de capacidad y así sucesivamente, vamos componiendo la arquitectura de menorías Caché de nuestro ordenador. Hoy en día es corriente encontrarte hasta 3 niveles integrados en la CPU, como puede verse en el detalle de abajo:

Adicionalmente a las Cachés integradas en la CPU, la placa madre también incorporará una memoria Caché, en este caso sería la de nivel 4. Y otro tipo de componentes, donde la velocidad de acceso a los datos sea importante, como la tarjeta de video o incluso del disco duro, pueden incorporar también memorias Cachés.

 

NOTA:

Este post es parte de la colección “Arquitectura de Sistemas” que reproduce los apuntes de la clase que imparto sobre este tema en ESIC. Puedes ver el índice de esta colección aquí.