Un ordenador por dentro (V): la jerarquía de memoria
Un ordenador puede hacer muchas cosas. Ya hemos visto cómo la CPU, compuesta por miles de sistemas digitales, puede ejecutar órdenes complejas codificadas en forma de programas que dicen al ordenador qué hacer con un conjunto de datos. Estos datos, cómo no, son un conjunto de números 0 y 1 que pueden representar cualquier cosa: números enteros, números con decimales, textos, música, imágenes, y un largo etcétera.
Hoy hablaremos de la memoria: el lugar donde todos estos datos están almacenados, a la espera de ser usados por la CPU. A pesar de llamarse la memoria, dicho singular es que es un poco inexacto, ya que la memoria no está localizada en un punto en concreto, sino que está repartida por muchos lugares del ordenador (sería más correcto llamarla “las memorias”).
Las memorias no están repartidas porque sí, sino que tienen una razón para estarlo, puesto que cada memoria tiene unas características diferentes: hay memorias muy pequeñitas, donde caben muy pocos datos, y otras muy muy grandes, donde cabe una cantidad de datos casi infinita. Es por eso que en ambientes técnicos se suele hablar de la jerarquía de memoria.
Si usted es nuevo en esta página y se ha encontrado con este artículo, quizá le interese leer los capítulos anteriores de la serie Un ordenador por dentro para aprovechar y comprender mejor el capítulo actual.
- Capítulo 1: el 0 y el 1
- Capítulo 2: representando datos con el 0 y el 1
- Capítulo 3: los sistemas digitales
- Capítulo 4: la Unidad Central de proceso
Antes de empezar a describir las particularidades de cada uno de los peldaños de esta jerarquía, permítame que empiece con un símil.
El pintor de muñecos
Imagínese que usted es uno de esos pintores artesanales de muñecos de PVC. Miles de niños aguardan ansiosos las figuritas coloreadas de sus personajes de televisión favoritos. La empresa creadora de las figuras es consciente de eso, por lo que en vez de pagarle por tiempo, le paga 50 céntimos por cada figurita que pinte; a ambos les interesa pintar el máximo número de muñequitos en el menor tiempo.
Como estas figuritas son las más demandadas del mercado, hay un almacén de 3000m2 lleno de figuras para que usted pinte todas las que pueda. Pero este almacén también contiene otros productos de PVC que usted no debe tocar, puesto que son para otras finalidades. Los palés llenos de figuritas están desperdigados por el almacén.
Imagínese en la siguiente situación: usted va recorriendo el almacén, y va buscando los palés con figuritas. Cuando encuentra uno, abre una caja, saca una figura, la pinta, y la vuelve a meter en la caja. Y así sucesivamente con las demás figuras.
Obviamente no parece un método de trabajo muy rápido, y usted gastará mil veces más tiempo buscando los palés de figuras por el almacén de 3000m2, abriendo y cerrando cajas, que haciendo la tarea por la que le pagan: pintar las figuras. Usted no ganará suficiente dinero, su empresa no podrá satisfacer toda la demanda de muñecos, y los niños del mundo estarán tristes.
A su empresa se le ocurre una idea para mejorar su rendimiento y beneficiar a todos: usted está en una sala aparte, y una persona se encarga de buscar por el almacén los palés de muñecos y traerlos a su sala con un toro. Usted ahora sólo se tiene que preocupar de sacar los muñecos, pintarlos y volverlos a guardar en la caja. Ha ahorrado muchísimo tiempo, pero como usted quiere ganar mucho más dinero pintando el máximo número de muñecos, no es suficiente.
Para acelerarlo todo, usted decide coger una caja del palé, ponerla sobre una mesa y sentarse a trabajar. Saca unos cuantos muñecos de la caja y pinta varios a la vez con su pincel. Pinta primero todas las partes rojas, luego todas las partes azules, luego las verdes… Cuando acaba con estos muñecos, los mete en la caja y saca otros. Y así hasta que se acaba la caja. Cuando tiene toda la caja pintada, la lleva al palé, la apila, y trae otra caja. Cuando todo el palé está lleno, alguien se lo lleva le trae otro.
Con la manera lenta (y estúpida) de hacer las cosas gastaba varios segundos, e incluso minutos, entre muñeco y muñeco, ahora puede pintar muchos muñecos a la vez, gasta apenas 3 o 4 segundos en guardar los muñecos en la caja y sacar otros nuevos; con una frecuencia menor, cada vez que acaba una caja, gasta unos segundos en cambiarla por otra del palé. Y con mucha menos poca frecuencia, acaba el palé y tiene que esperar dos o tres minutos a que le traigan otro del almacén.
Este apartado no pretendía enseñarle a pintar muñecos rápidamente. Ni siquiera desvela nada nuevo, puesto que este es el modo de trabajar que cualquier persona haría sólo guiándose por la intuición. Pero es de menester hacerle observar que, gracias a esta técnica, los tiempos de espera entre que pinta un muñeco y otro son cortos la mayoría de veces, unas cuantas veces ha de esperar unos pocos segundos, y muy de tanto en tanto ha de esperar un par de minutos. Si se hiciera la media de tiempo necesario para pintar un muñeco, saldría una media muy baja, puesto que las mayores esperas son muy poco frecuentes.
La jerarquía de memoria
De la misma manera que a su empresa ficticia le interesa que usted pinte rápidamente el mayor número de muñecos ficticios, a usted le interesa que su ordenador procese los datos a la mayor velocidad posible. Es por eso que la memoria de su ordenador tiene una organización muy similar a la del almacén de muñecos de PVC.
La memoria secundaria
La memoria secundaria es habitualmente la memoria más extensa que tienen la mayoría de ordenadores personales. Está localizada en el disco duro, donde usted suele guardar sus fotos, vídeos y documentos, y donde también se guardan algunos datos temporalmente cuando hay tantos que no caben en la memoria principal, explicada en el siguiente apartado.
Al igual que el almacén de la empresa de muñecos de PVC, la memoria secundaria es muy extensa y permite almacenar una infinidad de datos. Si en capítulos anteriores mencionamos el byte como una unidad de memoria compuesta por 8 bits, que podía guardar una letra o un número entre 0 y 255, a 2008 están empezando a venderse ordenadores domésticos con discos duros de 1 Terabyte. Para que se haga una idea, 1 Terabyte son 1.000.000.000.000 bytes, suficiente para almacenar casi 1500 películas DivX, más de 300.000 canciones MP3, o 500.000 copias de El Quijote de Cervantes.
El disco duro es un tipo de memoria muy barata, por lo que se aprovecha para hacerla muy grande. Sin embargo es una memoria muy lenta en comparación con las otras, ya que el disco duro es mecánico. Está formado por unos discos que van dando vueltas, donde están almacenados los datos magnéticamente. Para leerlos, hay unos brazos móviles con unos sensores que van a buscar los datos que el ordenador pide. Un disco duro normal sería capaz de leer 100 veces el Quijote en un sólo segundo; a pesar de que puede parecer sorprendente, sigue siendo demasiado lento para un ordenador.
La memoria principal
Cuando le hablan de “memoria RAM”, se están refiriendo a la memoria principal. Es un tipo de memoria varias decenas de veces más rápida que la memoria secundaria, pero también varias decenas de veces más cara y, por tanto, varias decenas de veces más pequeña.
Siguiendo el símil de la empresa de muñecos, la memoria principal equivaldría al palé que hay en la habitación donde se pintan los muñecos: está suficientemente cerca del que ha de tratar los datos (la CPU) para ir rápido, y tiene suficiente tamaño para tener una buena cantidad de datos.
Los PCs actuales tienen entre 2 y 4 Gigabytes de memoria RAM. 1 Gigabyte es la milésima parte de 1 Terabyte, es decir 1.000 millones de bytes. Aún así es una buena cantidad de memoria: caben 500 copias de El Quijote o más de 300 MP3.
La memoria RAM suele estar formada por millones de condensadores: unos pequeñísimos componentes eléctricos que guardan la electricidad durante un espacio de tiempo. Si hay electricidad en el condensador se está almacenando un 1, si no hay electricidad se está almacenando un 0.
Es un mecanismo eléctrico, y no mecánico como el disco duro, y puesto que los electrones son mucho más rápidos que unos brazos mecánicos que se mueven por una superficie, se podría decir que la memoria RAM ya es bastante rápida. Como con el palé del almacén, aún así se podría acelerar todavía más el proceso.
La memoria caché
La memoria caché es una memoria muy rápida que se encuentra dentro del mismo chip que la CPU. A diferencia de la memoria principal y secundaria, el acceso a los datos de la caché es prácticamente instantáneo. Es una memoria muy cara, por lo que es mucho más pequeña que la memoria principal.
Generalmente, la caché se suele dividir en dos niveles (a veces incluso 3): la caché de nivel 1 es una memoria muy pequeña, de unos pocos cientos de Kilobytes (1 Kilobyte = 1.000 bytes), y muy rápida; la caché de nivel 2 es un poco más grande, de uno o dos Megabytes máximo (1 Megabyte = 1.000.000 de bytes). La caché de nivel 1 es mucho más rápida que la de nivel 2.
Para comprender la función de la memoria caché, volveremos a compararla con la fábrica de muñecos: los muñecos que hay en la caja que el pintor pone en la mesa son fácilmente accesibles, y equivaldrían a la caché de nivel 2. El puñado de muñecos que el pintor saca de la caja y tiene muy a mano para pintarlos equivaldrían a la caché de nivel 1.
Los registros
Los registros es la memoria más pequeña que existe, pero también es la más rápida (y la más cara). Los registros equivaldrían a las manos del pintor de muñeco. El ordenador trabaja con los datos que hay en los registros, sólo que en vez de tener 2 manos, él tiene algunas decenas de registros para tratar algunas decenas de datos a la vez. Los registros están dentro de la CPU y, al igual que con los muñecos que el pintor tiene entre las manos, no hay que esperar prácticamente nada para acceder a ellos (con un muñeco en una mano y el pincel en otra, se puede empezar a pintar el muñeco instantáneamente, sin tener que ir a buscarlo a ninguna parte.
La tecnología que se usa para crear tanto los registros como la memoria caché son los sistemas digitales de los que hemos hablado en capítulos anteriores: mediante puertas lógicas se mantienen los electrones dando vueltas en un circuito cerrado (obteniendo así un 1). Si se quiere cambiar el valor de la memoria a 0, tan sólo hay que “abrir” las puertas del circuito y dejar que se escapen los electrones para que deje de haber corriente. Este sistema digital tiene el pintoresco nombre de Flip-Flop.
Cómo interactuan las memorias dentro de la jerarquía
Al igual que el pintor pinta los muñecos que tiene en la mano, la CPU opera con los datos que tiene en los registros. Para “coger y soltar” los datos, la CPU tiene instrucciones de “leer datos de memoria y almacenar en el registro” o “escribir los datos del registro en la memoria”.
Como los datos con los que se trabaja suelen estar juntos (por ejemplo, un texto tiene todas las letras guardadas en memoria una detrás de la otra), estos grupos de datos se suelen guardar en la caché, para ir a buscarlos todos rápidamente, de la misma manera que el pintor tiene a mano todos los muñecos que va a pintar.
Como la caché tiene un tamaño limitado, de tanto en tanto no se encuentran los datos que se quieren. En ese momento, se guardan los datos de la caché en memoria principal y se copia desde la memoria principal el dato que se busca y los que hay guardados cerca (que se supone que a continuación se van a usar).
Como la memoria principal es limitada, es posible que alguna vez (aunque con muy poca frecuencia), haya que ir a buscar los datos a memoria secundaria. Para el pintor esto equivaldría a haber acabado de pintar todo el palé de muñecos, y tener que ir a buscar más muñecos al almacén.


Muy buen ejemplo el del pintor de muñecos.