En la estructura y tecnología de los computadores existen diversos tipos de memoria. La raíz de esta diversificación tiene su raíz en la jerarquía de memoria, y las nuevas tecnologías tan sólo permiten mejorar el nivel físico (o electrónico) permaneciendo el conceptual intacto.
En las primeras computadoras tan sólo había un tipo de memoria programable, que almacenaba las instrucciones y los datos se introducian mediante entradas utilizando complicados códigos.
Desde siempre fue deseable que tanto los datos como las instrucciones en nuestros ordenadores fuesen guardados en una memoria muy grande, muy rápida y económicamente asequible. Por desgracia, esto es tan sólo una situación idílica:
- A mayor velocidad, mayor coste. Son más caros de implementar los rápidos registros en un microprocesador que un disco duro SATA con un tiempo de acceso muchísimo mayor.
- A mayor tamaño, menor velocidad. Un disco duro es más grande que una memoria caché, pero esta tiene menor tamaño y menor tiempo de acceso.
- A mayor tamaño, menor coste por bit. Las cintas magnéticas cuestan cuatro duros, una caché del mismo tamaño sería carísima además de inútil en su función xD
Por tanto, es necesario establecer una jerarquía donde la memoria más rápida, de menor tamaño y más cara está más cercana a la CPU, mientras que la memo más lenta, con mayor capacidad y menor coste por bit está más alejada de la misma. Veamos un dibujito cortesía de la Wikipedia 😉
Así, la CPU busca una instrucción o dato en la memoria más cercana a él; la memoria caché. Si la palabra se encuentra allí se produce un acierto o hit, transfiriéndose ésta al microprocesador. Por el contrario se produce un fallo y, desde los niveles más bajos de la jerarquía serán enviados los datos, bien mediante palabras o en bloques de transferencia, como es el caso entre la memoria principal DDR DRAM y la caché SRAM.
¿Porqué transferir bloques?¿Qué datos necesitará la CPU? Pues muy fácil: los datos e instrucciones suelen estar en direcciones consecutivas de memoria, por lo que si una posición de ellas es referenciada por el procesador, las próximas a la misma tienen alta probabilidad de ser referenciadas también conformando lo que se conoce como principio de localidad de referencia.
Para cualquiera que desee profundizar en el tema, le aconsejo cualquier libro de estructura o tecnología de los computadores 😀