Caché (informática): concepto, tipos, funcionamiento y usos
Explicación práctica sobre qué es una caché en informática, sus tipos, principios de funcionamiento, políticas de reemplazo, diferencias con búferes y ejemplos de uso.
Visión general
En informática, una caché es un área de almacenamiento temporal diseñada para acelerar el acceso a datos o resultados que se usan con frecuencia. La idea básica consiste en mantener una copia de información costosa de obtener —por cálculo, por tiempo de acceso o por coste— en un medio de acceso más rápido. Cuando un cliente solicita esos datos, el sistema consulta primero la caché y, si la copia está disponible, entrega esa copia en lugar de volver a calcular o recuperar el original. Este mecanismo reduce la latencia perceptible y la carga sobre recursos lentos o limitados.
Características y componentes
Las cachés suelen organizarse en bloques u objetos y cuentan con varios elementos clave: espacio de almacenamiento limitado, una política para decidir qué datos almacenar y otra para elegir qué entradas eliminar cuando hacen falta más recursos. Además se usan índices o tablas de búsqueda para localizar rápidamente entradas en la caché. Su diseño busca equilibrio entre tamaño, coste y tiempo de búsqueda: a mayor capacidad suele aumentar también la complejidad y la latencia interna de la propia caché.
Tipos y ejemplos
Existen múltiples formas de caché según su ubicación y propósito. Entre las más comunes están:
- Caché de CPU: niveles L1, L2 y L3 cerca del procesador para acelerar instrucciones y datos de uso frecuente.
- Caché de disco y sistema de archivos: mantiene bloques leídos desde almacenamiento persistente para reducir accesos a disco.
- Caché web y proxy: almacena respuestas HTTP para servir contenido estático sin contactar al servidor origen.
- Caché de aplicaciones y memoria intermedia: estructuras en memoria (por ejemplo, en bases de datos o en frameworks) que guardan resultados de consultas o cálculos.
Para ampliar información técnica y ejemplos, ver recursos introductorios y guías prácticas como tutoriales o documentación de bibliotecas específicas (ver más).
Localidad de referencia y por qué funciona
Las cachés se benefician de la localidad de referencia, una propiedad observada en muchos programas donde los accesos a datos o instrucciones tienden a concentrarse en regiones cercanas en espacio o en tiempo. Hay dos formas: localización temporal (mismo dato requerido de nuevo en poco tiempo) y localización espacial (acceder a datos contiguos). Gracias a esas tendencias, una copia en caché tiene altas probabilidades de ser reutilizada antes de quedar obsoleta.
Políticas de reemplazo y coherencia
Cuando la caché está llena debe elegirse una entrada a expulsar. Las estrategias habituales son:
- LRU (Least Recently Used): se elimina la entrada menos recientemente usada.
- LFU (Least Frequently Used): basada en la frecuencia de acceso.
- FIFO (First In, First Out): se expulsa la más antigua.
- Aproximaciones aleatorias o hibridas: simplifican costes de mantenimiento.
Además, en sistemas donde los datos pueden modificarse existe el problema de coherencia: la copia en la caché puede diferir del original. Para mitigarlo se emplean políticas como escritura inmediata (write-through), escritura diferida (write-back) y mecanismos de invalidación y sincronización. Las decisiones dependen de requisitos de consistencia, rendimiento y coste.
Diferencias con búferes y consideraciones de diseño
Un búfer y una caché pueden parecer similares, pero conceptual y de uso difieren. Un búfer se emplea para acomodar datos entre productores y consumidores con conocimiento explícito de la aplicación; típicamente la gestión del búfer es responsabilidad del usuario o del sistema que produce/consume los datos. En cambio, una caché suele ser transparente para el cliente: mejora el rendimiento sin que el solicitante tenga que gestionar directamente las copias. Esta distinción influye en la política de coherencia, en quién toma decisiones sobre reemplazo y en la complejidad de implementación.
Usos, beneficios y ejemplos prácticos
Las cachés son omnipresentes: aceleran la ejecución de programas en CPU, reducen latencia en servidores web, alivian carga en bases de datos y permiten una experiencia de usuario más fluida en aplicaciones móviles y de escritorio. Algunos ejemplos concretos: almacenar páginas web estáticas en un proxy, guardar fragmentos de resultados de consultas frecuentes en una base de datos en memoria, o mantener en caché thumbnails de imágenes para reducir tiempo de renderizado. Para casos de estudio y mejores prácticas consulte guías de rendimiento y documentación especializada.
El diseño de una caché requiere equilibrar tamaño, velocidad, coste y consistencia. Un uso correcto puede mejorar el rendimiento medio de un sistema de manera notable; un mal diseño puede introducir incoherencias, sobrecostes o incluso empeorar la latencia en ciertas cargas de trabajo.
Cómo funcionan las cachés
Una caché es un bloque de memoria para almacenar datos que probablemente se vuelvan a utilizar. La CPU y el disco duro suelen utilizar una caché, al igual que los navegadores y los servidores web.
Una caché se compone de muchas entradas, llamadas pool. Cada entrada contiene un dato (un bit de datos) que es una copia de un dato en otro lugar. Las cachés suelen utilizar lo que se llama un almacén de respaldo. Los almacenes de respaldo son lentos o costosos de acceder, en comparación con la caché. Una caché de disco utiliza un disco duro como almacén de respaldo, por ejemplo. Cada entrada también tiene una pequeña información adjunta, llamada etiqueta. Esta etiqueta se utiliza para encontrar la ubicación donde se almacenan los datos originales.
Cachés de lectura
Un cliente (una CPU, un navegador web, un sistema operativo) quiere acceder a un dato que cree que está en el almacén de respaldo, primero comprueba si el dato puede encontrarse en la caché. Si el dato se encuentra en la caché, el cliente puede utilizarlo y no necesita usar la memoria principal. Esto se conoce como un éxito de la caché. Así, por ejemplo, un programa de navegación web puede comprobar su caché local en el disco para ver si tiene una copia local del contenido de una página web en una URL concreta. En este ejemplo, la URL es la etiqueta, y el contenido de la página web es el dato.
La otra situación que puede darse es que el dato con la etiqueta no se encuentre en la caché. Esto se conoce como "cache miss". El dato tiene que ser recuperado del almacén de respaldo. Normalmente, se copia en la caché, de modo que la próxima vez, ya no es necesario recuperarlo del almacén de respaldo.
La caché sólo tiene un tamaño limitado. Para hacer sitio a la entrada no almacenada anteriormente, puede ser necesario eliminar otra entrada de la caché. Se utilizan reglas especiales para encontrar la entrada que mejor debe ser borrada. Estas reglas suelen llamarse Heurística. La heurística utilizada para encontrar la entrada se denomina política de sustitución. Una regla muy simple que se utiliza es la llamada Least recently used (o LRU). Simplemente toma la entrada que fue utilizada hace más tiempo. Otras heurísticas se encuentran en el algoritmo de la caché.
Caché para escribir
La caché también puede utilizarse para escribir datos; la ventaja de esto es que el cliente puede continuar su operación una vez que la entrada se ha escrito en la caché; no tiene que esperar hasta que la entrada se escriba en el almacén de respaldo.
Sin embargo, la entrada debe escribirse en el almacén de respaldo en algún momento. El momento en que esto ocurre está controlado por la política de escritura.
En una caché de escritura, cada entrada se escribe en el almacén de respaldo inmediatamente, además de almacenarse en la caché.
La otra opción es escribir sólo en la caché y escribir después en el almacén de respaldo. Esto se conoce como caché de escritura trasera (o de escritura posterior). La caché marca las entradas que aún no se han escrito en el almacén de respaldo; la marca que se utiliza suele denominarse bandera sucia. Antes de borrar las entradas de la caché, se escriben en el almacén de respaldo. Esto se conoce como escritura perezosa. Un fallo en una caché de escritura (que requiere que un bloque sea reemplazado por otro) a menudo necesitará dos accesos a la memoria: uno para obtener el dato necesario, y otro para escribir los datos reemplazados desde la caché al almacén.
La política de almacenamiento en caché también puede decir que un determinado dato debe escribirse en la caché. El cliente puede haber hecho muchos cambios al dato en la caché. Cuando haya terminado, puede decirle explícitamente a la caché que vuelva a escribir el dato.
La asignación sin escritura es una política de caché en la que sólo se almacenan las lecturas. Esto evita la necesidad de almacenar en la caché las lecturas o las escrituras. Las escrituras se realizan en el almacén de respaldo todo el tiempo.
El cliente no es la aplicación que cambia los datos en el almacén de respaldo. Si los datos cambian en el almacén de respaldo, la copia en la caché estará desactualizada, o será obsoleta. Por otra parte, cuando el cliente actualiza los datos en la caché, las copias de esos datos en otras cachés se vuelven obsoletas. Existen protocolos de comunicación especiales que permiten a los gestores de la caché hablar entre sí para mantener la coherencia de los datos. Se conocen como protocolos de coherencia.
Selección de la entrada a sustituir
Una caché es pequeña y estará llena, o casi llena, la mayor parte del tiempo. Así que cuando se añade un nuevo valor, hay que eliminar uno antiguo. Hay diferentes maneras de hacer esta selección:
- El primero en entrar es el primero en salir: Simplemente sustituye la entrada que se añadió a la caché hace más tiempo
- Utilización más reciente: Esta idea es similar a la del FIFO anterior, pero cuando se utiliza una entrada, se actualiza su marca de tiempo/edad.
- Utilización menos frecuente: De nuevo, de forma similar al caso FIFO, en lugar de utilizar una marca de tiempo se utiliza un contador, que se incrementa cada vez que se utiliza una entrada
- Elija una entrada al azar
Historia
La palabra caché se utilizó por primera vez en informática en 1967, cuando se preparó un artículo científico para ser publicado en IBM Systems Journal. El artículo trataba sobre una nueva mejora de la memoria en el Modelo 85. El modelo 85 era un ordenador de la línea de productos IBM System/360. El editor del Journal quería una palabra mejor para el buffer de alta velocidad, utilizado en el artículo. No obtuvo ninguna respuesta y sugirió caché, del francés cacher, que significa "esconder". El artículo se publicó a principios de 1968 y los autores fueron premiados por IBM. Su trabajo fue ampliamente acogido y mejorado. Cache pronto se convirtió en un uso estándar en la literatura informática.
Dónde se utilizan las cachés
Cachés de la CPU
Las pequeñas memorias situadas en el chip de la CPU o cerca de él pueden ser más rápidas que la memoria principal, mucho más grande. La mayoría de las CPUs desde la década de 1980 han utilizado una o más memorias caché. Las CPU modernas de propósito general de los ordenadores personales pueden tener hasta media docena. Cada caché puede estar especializada en una parte diferente de la tarea de ejecutar programas.
Cachés de disco
Las cachés de la CPU suelen ser gestionadas íntegramente por el hardware, mientras que otras cachés son gestionadas por otro tipo de software. El sistema operativo suele gestionar una caché de páginas en la memoria principal. Los usuarios ajenos a la informática suelen llamar a esta caché memoria virtual. Está gestionada por el núcleo del sistema operativo.
Los discos duros modernos tienen búferes de disco. A veces se les llama "caché de disco", pero es un error. La función principal de estos búferes es ordenar las escrituras del disco y gestionar las lecturas. Las visitas repetidas a la caché son raras, porque la memoria intermedia es muy pequeña en comparación con el tamaño del disco duro.
Los discos duros locales son rápidos en comparación con otros dispositivos de almacenamiento, como los servidores remotos, las unidades de cinta locales o las máquinas de discos ópticos. Utilizar los discos duros locales como cachés es el concepto principal de la gestión del almacenamiento jerárquico.
Cachés web
Los navegadores web y los servidores proxy utilizan cachés para almacenar las respuestas anteriores de los servidores web, como las páginas web. Las cachés web reducen la cantidad de información que debe transmitirse por la red. La información almacenada previamente en la caché puede reutilizarse a menudo. Esto reduce el ancho de banda y los requisitos de procesamiento del servidor web, y ayuda a mejorar la capacidad de respuesta para los usuarios de la web.
Los navegadores modernos utilizan una caché web integrada, pero algunos proveedores de servicios de Internet u organizaciones también utilizan un servidor proxy de caché. Se trata de una caché web que se comparte entre todos los usuarios de esa red.
Los motores de búsqueda también suelen poner a disposición de los usuarios las páginas web que han indexado en su caché. Por ejemplo, Google ofrece un enlace "Cached" junto a cada resultado de búsqueda. Esto es útil cuando las páginas web son temporalmente inaccesibles desde un servidor web.
Almacenamiento en caché con redes poco fiables
La operación de escritura es común en redes poco fiables (como una LAN Ethernet). El protocolo utilizado para asegurarse de que los datos de la caché de escritura tienen sentido cuando se utilizan varias cachés de escritura es muy complejo, en tal caso.
Por ejemplo, las cachés de las páginas web y las cachés de los sistemas de archivos de red del lado del cliente (como las de NFS o SMB) suelen ser de sólo lectura o de escritura para que el protocolo de red sea sencillo y fiable.
La diferencia entre búfer y caché
El búfer y la caché no son mutuamente excluyentes, sino que a menudo se utilizan juntos. Sin embargo, la razón por la que se utilizan es diferente. Un búfer es una ubicación en la memoria que se utiliza tradicionalmente porque las instrucciones de la CPU no pueden dirigirse directamente a los datos almacenados en los dispositivos periféricos. La memoria del ordenador se utiliza como almacén intermedio.
Además, un búfer de este tipo puede ser factible cuando se ensambla o desensambla un gran bloque de datos (según lo requiera un dispositivo de almacenamiento), o cuando los datos pueden entregarse en un orden diferente al que se producen. Además, todo un búfer de datos suele transferirse de forma secuencial (por ejemplo, al disco duro), por lo que el búfer en sí mismo aumenta a veces el rendimiento de la transferencia. Estas ventajas están presentes incluso si los datos almacenados en el búfer se escriben en él una vez y se leen del mismo una vez.
Una caché también aumenta el rendimiento de las transferencias. Una parte del aumento proviene igualmente de la posibilidad de que varias transferencias pequeñas se combinen en un gran bloque. Pero la principal ganancia de rendimiento se produce porque hay muchas posibilidades de que el mismo dato se lea de la caché varias veces, o de que los datos escritos se lean pronto. El único propósito de las cachés es reducir los accesos al almacenamiento subyacente más lento. La caché también suele ser una capa de abstracción que está diseñada para ser invisible desde la perspectiva de las capas vecinas. De este modo, las aplicaciones o los clientes pueden no ser conscientes de que existe una caché.
Preguntas y respuestas
P: ¿Qué es el almacenamiento en caché?
R: El almacenamiento en caché es un término utilizado en informática que hace referencia a la práctica de almacenar copias de datos que se utilizan con frecuencia para acceder a ellos más rápidamente que volviendo a buscar o calcular los datos originales.
P: ¿Cómo funciona el almacenamiento en caché?
R: El almacenamiento en caché funciona utilizando dos tipos de medios de almacenamiento, uno que suele ser bastante grande pero de acceso lento, y otro al que se puede acceder mucho más rápido pero que suele ser más pequeño. La idea que subyace al almacenamiento en caché es utilizar el medio rápido para almacenar copias de los datos, de modo que acceder a los datos originales lleve menos tiempo o sea menos costoso.
P: ¿Qué es un búfer?
R: Un búfer es similar a una caché en el sentido de que almacena copias de datos para un acceso más rápido; sin embargo, con un búfer, el cliente que accede a los datos sabe que existe un búfer y que está gestionado por una aplicación, mientras que con una caché, los clientes no tienen por qué saber que existe una caché.
P: ¿Qué significa localidad de referencia?
R: La localidad de referencia significa que cuando una aplicación accede a determinados bloques de datos estructurados, es probable que también acceda a otros bloques cercanos a los que accedió originalmente. Esto ayuda a que las cachés funcionen bien, ya que suelen ser pequeñas en comparación con todos los datos disponibles.
P: ¿Por qué las cachés más grandes tardan más en buscar entradas?
R: Las cachés más grandes tardan más porque contienen más información almacenada y, por tanto, requieren más tiempo para las búsquedas. También son más caras, ya que requieren más recursos para su almacenamiento.
P: ¿Cómo puede ayudar la localidad a que las cachés funcionen mejor?
R: La localidad ayuda a que las cachés funcionen mejor porque cuando las aplicaciones acceden a determinados bloques de datos estructurados, es probable que también necesiten otros bloques cercanos que pueden recuperarse rápidamente de la caché en lugar de tener que buscarlos en otro lugar o volver a calcularlos.
Artículos relacionados
Autor
AlegsaOnline.com Caché (informática): concepto, tipos, funcionamiento y usos Leandro Alegsa
URL: https://es.alegsaonline.com/art/15884
Fuentes
- oxfordlearnersdictionaries.com : "cache noun"
- dictionary.cambridge.org : "cache definition, meaning"
- merriam-webster.com : "Cache"
- books.google.com : Pro Oracle Database 11g RAC on Linux
- dx.doi.org : dx.doi.org/10.1109/85.646206
