Enciclopedia de Conocimientos Fundamentales
UNAM ˜ SIGLO XXI


regreso








6.4.3 La jerarquía de memoria: la idea del caché

Hoy en día, en cada computadora existe una muy variada gama de dispositivos de memoria. Ya se habló de la distinción entre la primaria (volátil) y la secundaria, pero dentro de cada una de estas categorías existe una gran diversidad. La memoria fundamental para todo sistema de cómputo, de la que depende esencialmente la ejecución de los algoritmos, es la primaria, dado que las arquitecturas de Von Neumann requieren que el programa se almacene en ésta para poder ser ejecutado.

Existen diversos tipos de memoria primaria dependiendo de la tecnología usada para su fabricación, lo que conlleva características que influyen notablemente en el desempeño. Existen memorias a las que, cuando se les solicita un dato, pueden entregarlo a la misma velocidad a la que trabaja el procesador; es decir, su frecuencia de operación es la misma que la de éste. Pero esto no es lo común, normalmente las memorias tardan mucho más en responder, son cientos de veces más lentas que los procesadores, lo que significa que cuando se requiere de un dato en el procesador, éste tendría que esperar una eternidad (en su escala de tiempo, cientos o miles de ciclos de reloj) para poder continuar su labor.

Pero la solución real no consiste en ponerle a la computadora sólo la memoria más rápida posible, la que no se tarda nada, porque es muy cara. En efecto, la memoria es tanto más cara cuanto más rápida. Construir un sistema usando sólo la memoria más rápida lo haría increíblemente costoso, prácticamente nadie podría comprarlo. Por supuesto, el otro extremo tampoco es deseable: poner sólo memoria de bajo desempeño haría un sistema muy barato, pero también inútil.

Para lograr el equilibro deseable se construye lo que se denomina una jerarquía de memoria: el sistema posee varios tipos de memoria, desde la muy cara hasta la más barata; más de la barata y menos de la más cara. La más veloz, de la que hay poca, se pone cerca del procesador para que lo atienda preferentemente. Pero como, debido a su tamaño, a lo mejor no cabe todo lo que el procesador necesita en un momento dado, se pone otro nivel de memoria, un poco más lejos del procesador, un poco más lenta, pero con mayor capacidad de almacenamiento. Y así sucesivamente hasta llegar a la memoria principal del sistema, que normalmente se denomina RAM.

El nivel de memoria más cercano al procesador forma parte de la estructura misma de éste. Está constituido por los ya mencionados registros del procesador en donde se almacenan los operandos que se requieren en el corto plazo. Los procesadores, a lo largo de la historia, han tenido cada vez más registros: se ha pasado de tener uno solo en el decenio de los setenta del siglo XX hasta cientos en las máquinas actuales.

A los niveles de memoria que se encuentran entre la memoria principal y los registros del procesador se les denomina memoria caché. Al caché más veloz, más caro, más pequeño y, por supuesto, más cercano al procesador se le denomina caché de nivel L1, el siguiente es el de L2 y así sucesivamente hasta el caché inmediato anterior a la memoria principal. El número de cachés es decisión del diseñador del sistema, y cuanto mayor sea mejor será el desempeño porque siempre, o casi siempre, el que responde a una petición de un dato de memoria es el mejor caché de entre los que poseen el dato.

brechavelocidades
Gráfica 2. Brecha entre las velocidades de los procesadores y las de la memoria a lo largo del tiempo (velocidad en mHz).


La idea del caché es un gran invento que se usa en diversas situaciones de computación. Por ejemplo, el funcionamiento de internet y la web depende de esta idea. En el caso de las computadoras, durante toda la historia de las computadoras electrónicas, la memoria siempre ha sido mucho más lenta que el procesador, por lo que el desempeño total del sistema, sin importar qué tan bueno sea el procesador, depende esencialmente de la memoria. Más aún, esta brecha de velocidades entre el procesador y la memoria ha ido creciendo con el tiempo (véase la gráfica anterior). La existencia de uno o varios niveles de caché amortigua el impacto negativo que tiene la velocidad de la memoria en el desempeño: a mayor número de niveles, más suave será la caída entre la velocidad de un nivel y el siguiente.

El funcionamiento de la memoria caché se basa en lo que se denomina principio de localidad. Este principio tiene dos variantes:

1] Temporal. Una vez que se utiliza un dato de memoria es altamente probable que este mismo dato y su lugar de almacenamiento sigan siendo utilizados por un tiempo relativamente corto.

2] Espacial. Una vez que se utiliza un dato de memoria es altamente probable que los lugares de almacenamiento alrededor de él y los datos allí guardados sean utilizados en un futuro cercano.

Caché en la vida cotidiana

Cuando una persona acude a la biblioteca para llevar a cabo un par de tareas escolares se utiliza el principio de localidad. Supóngase que tiene una tarea de historia: la Revolución industrial. Se dirige a la estantería (memoria principal) y saca tres ejemplares que hablan sobre el tema, todos los libros sobre la Revolución industrial están cerca en la estantería porque los libros se acomodan de acuerdo a un código (colocación) que depende del tema del libro. Toma los libros y los lleva a su mesa (caché), donde usa cada uno de ellos por un tiempo (localidad temporal), luego se da cuenta de que necesita algo que no está en ellos y regresa a la estantería, al lugar de donde sacó los tres primeros, y saca otros dos que están por allí (localidad espacial) porque tratan de lo mismo y los lleva a su mesa.

Luego de un par de horas, las cosas cambian porque la persona necesita también hacer tarea de biología: fotosíntesis, por ejemplo. Se dirige a la estantería, ahora a un lugar completamente diferente, y saca dos libros de plantas, regresa a su mesa y ¡uf!, de pronto se da cuenta de un problema, la mesa está repleta de libros de la Revolución industrial. Los quita, los deja en el lugar de donde el personal los toma para volverlos a colocar en su sitio y pone entonces los de plantas. Ahora su caché posee libros que corresponden a lugares en la estantería lejanos de los anteriores, pero cercanos entre sí, y como es muy pequeño comparado con toda la estantería, tiene que reemplazar los libros que tenía allí por los nuevos.

Esto es lo que ocurre también en los cachés de las computadoras. Una memoria caché de cierto nivel posee siempre un subconjunto, bastante pequeño, de las cosas guardadas en el siguiente nivel más grande de memoria; cuando se requiere de cosas que no están en un caché, hay que traerlas del siguiente nivel (en general de alguno de los siguientes) para ponerlas en éste; si ya no caben habrá que quitar algo de lo que se tiene almacenado actualmente para poder colocar lo nuevo. Después de todo, de acuerdo con el principio de localidad, lo más reciente será usado frecuentemente en el futuro cercano, de manera que más vale tenerlo ahí cuando sea solicitado otra vez.


Inicio de página