Saltar al contenido
Electrónica Online

Memoria Caché

memoria cache definicion

La memoria caché es un componente informático basado en un chip que hace más eficaz la recuperación de datos de la memoria del ordenador. Actúa como un área de almacenamiento temporal de la que el procesador del ordenador puede recuperar datos fácilmente. Esta área de almacenamiento temporal, conocida como caché, está más fácilmente disponible para el procesador que la fuente de memoria principal del ordenador, normalmente alguna forma de DRAM.

La memoria caché a veces se denomina memoria de la CPU (unidad central de procesamiento) porque suele estar integrada directamente en el chip de la CPU o colocada en un chip independiente que tiene una interconexión de bus separada con la CPU. Por lo tanto, es más accesible para el procesador, y capaz de aumentar la eficiencia, porque está físicamente cerca del procesador.

Para estar cerca del procesador, la memoria caché tiene que ser mucho más pequeña que la memoria principal. En consecuencia, tiene menos espacio de almacenamiento. También es más cara que la memoria principal, ya que es un chip más complejo que produce un mayor rendimiento.

Lo que sacrifica en tamaño y precio, lo compensa en velocidad. La memoria caché funciona entre 10 y 100 veces más rápido que la RAM, y sólo necesita unos pocos nanosegundos para responder a una petición de la CPU.

El nombre del hardware que se utiliza para la memoria caché es memoria estática de acceso aleatorio (SRAM) de alta velocidad. El nombre del hardware que se utiliza en la memoria principal de un ordenador es memoria dinámica de acceso aleatorio (DRAM).

La memoria caché no debe confundirse con el término más amplio caché. Las cachés son almacenes temporales de datos que pueden existir tanto en hardware como en software. La memoria caché se refiere al componente de hardware específico que permite a los ordenadores crear cachés en varios niveles de la red.

Contenido

Tipos de Memoria Caché

La memoria caché es rápida y cara. Tradicionalmente, se clasifica en «niveles» que describen su cercanía y accesibilidad al microprocesador. Hay tres niveles generales de caché:

La caché L1, o caché primaria, es extremadamente rápida pero relativamente pequeña, y suele estar integrada en el chip del procesador como caché de la CPU.

Por su parte, la caché L2, o caché secundaria, suele tener más capacidad que la L1. La caché L2 puede estar integrada en la CPU o en un chip o coprocesador independiente y disponer de un bus de sistema alternativo de alta velocidad que conecte la caché y la CPU. De esta forma, no se ve ralentizada por el tráfico del bus principal del sistema.

La caché de nivel 3 (L3) es una memoria especializada desarrollada para mejorar el rendimiento de L1 y L2. L1 o L2 pueden ser significativamente más rápidas que L3, aunque ésta suele duplicar la velocidad de la DRAM. En los procesadores multinúcleo, cada núcleo puede tener una caché L1 y L2 dedicada, pero pueden compartir una caché L3. Si una caché L3 hace referencia a una instrucción, normalmente se eleva a un nivel superior de caché.

En el pasado, las cachés L1, L2 y L3 se creaban utilizando componentes combinados del procesador y la placa base. Recientemente, la tendencia ha sido consolidar los tres niveles de caché de memoria en la propia CPU. Por eso, el principal medio para aumentar el tamaño de la caché ha empezado a pasar de la adquisición de una placa base específica con diferentes conjuntos de chips y arquitecturas de bus a la compra de una CPU con la cantidad adecuada de caché L1, L2 y L3 integrada.

Contrariamente a la creencia popular, implementar flash o más RAM dinámica (DRAM) en un sistema no aumentará la memoria caché. Esto puede resultar confuso ya que los términos almacenamiento en caché (almacenamiento en búfer del disco duro) y memoria caché a menudo se usan indistintamente. El almacenamiento en caché de la memoria, que utiliza DRAM o flash para almacenar en búfer las lecturas del disco, tiene como objetivo mejorar la E/S del almacenamiento al almacenar en caché los datos a los que se hace referencia con frecuencia en un búfer antes que un disco o cinta magnético más lento. La memoria caché, por otro lado, proporciona almacenamiento en búfer de lectura para la CPU.

memoria cache almacenamiento
Un diagrama de la arquitectura y el flujo de datos de una unidad de memoria caché típica.

Mapeo de la Memoria Caché

Las configuraciones de caché siguen evolucionando, pero la memoria caché funciona tradicionalmente con tres configuraciones diferentes:

  • La caché de mapeo directo tiene cada bloque asignado exactamente a una posición de memoria caché. Conceptualmente, una caché de mapeo directo es como las filas de una tabla con tres columnas: el bloque de caché que contiene los datos reales obtenidos y almacenados, una etiqueta con toda o parte de la dirección de los datos obtenidos, y un bit de bandera que muestra la presencia en la entrada de la fila de un bit válido de datos.
  • El mapeo de caché totalmente asociativo es similar al mapeo directo en estructura, pero permite que un bloque de memoria se mapee a cualquier ubicación de caché en lugar de a una ubicación de memoria caché preespecificada, como es el caso del mapeo directo.
  • El mapeo de caché asociativo puede verse como un compromiso entre el mapeo directo y el mapeo totalmente asociativo en el que cada bloque se mapea a un subconjunto de ubicaciones de caché. A veces se denomina mapeo asociativo de conjuntos de N-vías, que permite almacenar en caché una ubicación de la memoria principal en cualquiera de las «N» ubicaciones de la caché L1.

Políticas de escritura de datos

Los datos pueden escribirse en la memoria mediante diversas técnicas, pero las dos principales que afectan a la memoria caché son:

  • Escritura simultanea. Los datos se escriben en la memoria caché y en la memoria principal al mismo tiempo.
  • Reescritura. Los datos sólo se escriben inicialmente en la caché. A continuación, los datos pueden escribirse en la memoria principal, pero esto no es necesario y no impide que se produzca la interacción.

La forma en que se escriben los datos en la caché influye en la coherencia y la eficiencia de los datos. Por ejemplo, cuando se utiliza escritura simultanea, es necesario escribir más, lo que provoca latencia inicial. Si se utiliza la reescritura, las operaciones pueden ser más eficientes, pero los datos pueden no ser coherentes entre la memoria principal y la caché.

Una forma de que un ordenador determine la consistencia de los datos es examinando el bit sucio de la memoria. El bit sucio es un bit adicional incluido en los bloques de memoria que indica si la información ha sido modificada. Si los datos llegan al archivo de registro del procesador con un bit sucio activo, significa que no están actualizados y que existen versiones más recientes en otros lugares. Este escenario es más probable que ocurra en un escenario de reescritura, porque los datos se escriben en las dos áreas de almacenamiento de forma asíncrona.

Especialización y Funcionalidad

Además de las cachés de instrucciones y datos, otras cachés están diseñadas para proporcionar funciones especializadas del sistema. Según algunas definiciones, el diseño compartido de la caché L3 la convierte en una caché especializada. Otras definiciones mantienen la caché de instrucciones y la caché de datos separadas y se refieren a cada una de ellas como una caché especializada.

Los Translation Lookaside Buffers (TLBs) son también cachés de memoria especializadas cuya función es registrar traducciones de direcciones virtuales a direcciones físicas.

Otras cachés no son, técnicamente hablando, cachés de memoria. Las cachés de disco, por ejemplo, pueden utilizar DRAM o memoria flash para almacenar datos de forma similar a lo que hacen las cachés de memoria con las instrucciones de la CPU. Si se accede con frecuencia a los datos desde el disco, se almacenan en caché en DRAM o en una tecnología de almacenamiento de silicio basada en flash para acelerar el tiempo de acceso y la respuesta.

También existen cachés especializadas para aplicaciones como navegadores web, bases de datos, vinculación de direcciones de red y soporte del protocolo Network File System del lado del cliente. Estos tipos de cachés pueden distribuirse entre varios hosts conectados en red para proporcionar mayor escalabilidad o rendimiento a una aplicación que los utilice.

jerarquia de memoria de almacenamiento
Representación de la jerarquía de memoria y su funcionamiento.

Localidad

La capacidad de la memoria caché para mejorar el rendimiento de un ordenador se basa en el concepto de localidad de referencia. La localidad describe varias situaciones que hacen que un sistema sea más predecible. La memoria caché aprovecha estas situaciones para crear un patrón de acceso a la memoria en el que puede confiar.

Existen varios tipos de localidad. Dos de los más importantes para la memoria caché son:

  • Localidad temporal. Se produce cuando se accede repetidamente a los mismos recursos en un corto espacio de tiempo.
  • Localidad espacial. Se refiere al acceso a varios datos o recursos que están cerca unos de otros.

Rendimiento

La memoria caché es importante porque mejora la eficacia de la recuperación de datos. Almacena instrucciones de programa y datos que se utilizan repetidamente en el funcionamiento de los programas o información que la CPU probablemente necesitará a continuación. El procesador del ordenador puede acceder a esta información más rápidamente desde la memoria caché que desde la memoria principal. El acceso rápido a estas instrucciones aumenta la velocidad general del programa.

Aparte de su función principal de mejorar el rendimiento, la memoria caché es un recurso valioso para evaluar el rendimiento general de un ordenador. Los usuarios pueden hacerlo observando la proporción de aciertos y errores de la caché. Los aciertos de caché son casos en los que el sistema recupera con éxito datos de la caché. Un fallo de caché se produce cuando el sistema busca los datos en la caché, no los encuentra y los busca en otro lugar. En algunos casos, los usuarios pueden mejorar la relación aciertos-errores ajustando el tamaño del bloque de memoria caché, es decir — el tamaño de las unidades de datos almacenadas.

La mejora del rendimiento y la posibilidad de controlarlo no se limitan a mejorar la comodidad general del usuario. A medida que avanza la tecnología y se depende cada vez más de ella en situaciones de misión crítica, disponer de velocidad y fiabilidad se convierte en algo crucial. Incluso unos pocos milisegundos de latencia pueden acarrear enormes gastos, dependiendo de la situación.

Caché vs Memoria Principal

La DRAM es la memoria principal del ordenador y realiza cálculos a partir de los datos recuperados del almacenamiento. Tanto la DRAM como la memoria caché son memorias volátiles que pierden su contenido cuando se apaga el ordenador. La DRAM se instala en la placa base y la CPU accede a ella a través de una conexión bus.

La DRAM suele ser la mitad de rápida que las memorias caché L1, L2 o L3, y mucho más barata. Proporciona un acceso a los datos más rápido que el almacenamiento flash, las unidades de disco duro (HDD) y el almacenamiento en cinta. Se empezó a utilizar en las últimas décadas para proporcionar un lugar para almacenar datos del disco a los que se accede con frecuencia para mejorar el rendimiento de E/S.

La DRAM debe refrescarse cada pocos milisegundos. La memoria caché, que también es un tipo de memoria de acceso aleatorio, no necesita refrescarse. Está integrada directamente en la CPU para dar al procesador el acceso más rápido posible a las posiciones de memoria y proporciona un tiempo de acceso de nanosegundos a las instrucciones y datos de referencia frecuente. La SRAM es más rápida que la DRAM, pero como es un chip más complejo, también es más cara de fabricar.

dram significado
Un ejemplo de RAM dinámica.

Caché vs Memoria Virtual

Un ordenador tiene una cantidad limitada de memoria DRAM y aún menos de memoria caché. Cuando se ejecuta un programa grande o varios programas, es posible que la memoria se utilice al máximo. Para compensar la escasez de memoria física, el sistema operativo (SO) del ordenador puede crear memoria virtual.

Para ello, el SO transfiere temporalmente los datos inactivos de la DRAM al almacenamiento en disco. Este método aumenta el espacio de direcciones virtuales al utilizar la memoria activa de la DRAM y la inactiva de los discos duros para formar direcciones contiguas que contengan tanto una aplicación como sus datos. La memoria virtual permite a un ordenador ejecutar programas más grandes o múltiples programas simultáneamente, y cada programa funciona como si tuviera memoria ilimitada.

Para copiar la memoria virtual en memoria física, el sistema operativo divide la memoria en archivos de páginas o archivos de intercambio que contienen un determinado número de direcciones. Esas páginas se almacenan en un disco y, cuando se necesitan, el sistema operativo las copia del disco a la memoria principal y traduce la dirección de memoria virtual en una física. De estas traducciones se encarga una unidad de gestión de memoria (MMU).

Implementación e Historia

Los mainframes utilizaban una versión temprana de la memoria caché, pero la tecnología tal y como se conoce hoy en día comenzó a desarrollarse con la llegada de los microordenadores. Con los primeros PC, el rendimiento del procesador aumentaba mucho más rápido que el de la memoria, y ésta se convertía en un cuello de botella que ralentizaba los sistemas.

En la década de 1980, se impuso la idea de que se podía utilizar una pequeña cantidad de SRAM, más cara y rápida, para mejorar el rendimiento de la memoria principal, menos cara y más lenta. Al principio, la memoria caché estaba separada del procesador del sistema y no siempre se incluía en el chipset. Los primeros PC solían tener entre 16 KB y 128 KB de memoria caché.

Con los procesadores 486, Intel añadió 8 KB de memoria a la CPU como memoria de Nivel 1 (L1). En estos sistemas se utilizaban hasta 256 KB de memoria caché externa de Nivel 2 (L2). En los procesadores Pentium, la memoria caché externa volvió a duplicarse hasta alcanzar los 512 KB en la gama alta. También dividieron la memoria caché interna en dos cachés: una para instrucciones y otra para datos.

Los procesadores basados en la microarquitectura P6 de Intel, introducida en 1995, fueron los primeros en incorporar la memoria caché L2 a la CPU y permitir que toda la memoria caché de un sistema funcionara a la misma velocidad de reloj que el procesador. Antes de la P6, se accedía a la memoria L2 externa a la CPU a una velocidad de reloj mucho menor que la del procesador, lo que ralentizaba considerablemente el rendimiento del sistema.

Los primeros controladores de caché de memoria utilizaban una arquitectura de caché de escritura simultanea, en la que los datos escritos en la caché también se actualizaban inmediatamente en la RAM. Este enfoque minimizaba la pérdida de datos, pero también ralentizaba las operaciones. Con las PCs posteriores basadas en 486, se desarrolló la arquitectura de caché de reescritura, donde la RAM no se actualiza inmediatamente. En cambio, los datos se almacenan en la memoria caché y la RAM se actualiza sólo a intervalos específicos o en determinadas circunstancias en las que faltan datos o éstos son antiguos.

¿Te ha resultado útil esta información?

No
¡Gracias por tus comentarios!