Caché (informática)En informática, una caché, antememoria[1] o memoria intermedia[2] es un componente de hardware o software que guarda datos para que las solicitudes futuras de esos datos se puedan atender con mayor rapidez; los datos almacenados en una caché pueden ser el resultado de un cálculo anterior o el duplicado de datos almacenados en otro lugar, generalmente, da velocidad de acceso más rápido. Se produce un acierto de caché cuando los datos solicitados se pueden encontrar en esta, mientras que un fallo de caché ocurre cuando no están dichos datos. La lectura de la caché es más rápida que volver a calcular un resultado o leer desde un almacén de datos más lento; por lo tanto, cuantas más solicitudes se puedan atender desde la memoria caché, más rápido funcionará el sistema. Una caché de memoria se refiere a la memoria de acceso rápido de una unidad central de procesamiento (CPU), que guarda temporalmente los datos recientes de los procesados (información).[3] La memoria caché es un búfer especial de memoria que poseen las computadoras, que funciona de manera semejante a la memoria principal, pero es de menor tamaño y de acceso más rápido. Surgió cuando las memorias ya no fueron capaces de acompañar a la velocidad del procesador, por lo que se puede decir que es una memoria auxiliar, que posee una gran velocidad y eficiencia, y sirve para que el microprocesador reduzca el tiempo de acceso a datos ubicados en la memoria principal que se utilizan con más frecuencia. La caché es una memoria que se sitúa entre la unidad central de procesamiento (CPU) y la memoria de acceso aleatorio (RAM) para acelerar el intercambio de datos. Cuando se accede por primera vez a un dato, se hace una copia en la caché; los accesos siguientes se realizan a dicha copia, haciendo que sea menor el tiempo de acceso medio al dato. Cuando el microprocesador necesita leer o escribir en una ubicación en la memoria principal, primero verifica si una copia de los datos está en la caché; si es así, el microprocesador de inmediato lee o escribe en la memoria caché, que es mucho más rápido que de la lectura o la escritura a la memoria principal.[4] De forma similar, el caché software es un espacio de memoria que contiene los datos calculados o copiados desde un espacio más lento. Un ejemplo habitual es hablar de la caché del navegador web. Este espacio en disco contiene la información temporal descargada desde Internet o red interna que, por la naturaleza del sistema, siempre tendrá una velocidad más lenta que el disco físico de la máquina. Etimología y ortografíaLa palabra procede del inglés cache («escondite secreto para guardar mercancías, habitualmente de contrabando»), y esta a su vez del francés caché, («escondido u oculto»). A menudo, en español se escribe con tilde sobre la «e», del mismo modo como se venía escribiendo con anterioridad el neologismo «caché» («distinción o elegancia» o «cotización de un artista»), proveniente también del francés, pero no de la misma palabra, sino de cachet («sello o salario»). La Real Academia Española, en su Diccionario de la lengua española, solo reconoce la palabra con tilde,[3] aunque en la literatura especializada en arquitectura de computadoras (por ejemplo, las traducciones de libros de Andrew S. Tanenbaum, John L. Hennessy y David A. Patterson) se emplea siempre la palabra sin tilde, por ser anglosajona, y debe por ello escribirse en cursiva (cache). MotivaciónExiste una relación inherente entre el tamaño y la velocidad; dado que un recurso más grande implica mayores distancias físicas, pero también una compensación entre tecnologías costosas (como SRAM) versus productos más baratos, fácilmente producidos en masa (como DRAM o discos duros). El almacenamiento en búfer proporcionado por una caché beneficia tanto el ancho de banda como la latencia: LatenciaEl acceso a un recurso en un dispositivo diferente de la memoria de acceso rápido del procesador, incurre en una latencia significativa para poder trabajar con estos. Puede tomar cientos de ciclos de reloj para que un procesador moderno de 4 GHz llegue a tener disponible los datos o instrucciones almacenados en una DRAM. Esto se mitiga leyendo en fragmentos y almacenando los datos temporalmente en una memoria más rápida o cercana al procesador, con la esperanza de que las lecturas posteriores sean más rápidas. Las técnicas de predicción o de obtención previa explícita (en inglés, prefetching) permiten «adivinar» de dónde vendrán las lecturas futuras y realizar las solicitudes con anticipación; si se hace correctamente, la latencia se reduce a niveles de tiempo próximos al de los ciclos de trabajo del procesador. Ancho de bandaEl uso de una caché también permite un mayor rendimiento (en inglés, se usa el término throughput) del recurso subyacente, mediante el empaquetado de múltiples transferencias de pequeñas en solicitudes más grandes y más eficientes. En el caso de DRAM, esto podría servirse por un bus más ancho. Imagínese un programa escaneando bytes en un espacio de direcciones de 32 bits, pero atendido por un bus de datos de 128 bits fuera de chip; los accesos de byte individuales sin caché solo permitirían usar 1/16 del ancho de banda total, y el 80 por ciento del movimiento de datos serían direcciones. Leer trozos más grandes reduce la fracción de ancho de banda requerida para transmitir información de dirección. Tipos de cachéLa unidad caché es un sistema especial de almacenamiento de alta velocidad. Puede ser tanto un área reservada de la memoria principal como un dispositivo de almacenamiento de alta velocidad independiente. Hay tres tipos de caché frecuentemente usados en computadoras personales: caché de disco, caché de pista y caché web. Caché de discoEs una porción de memoria RAM asociada a un disco, con el fin de almacenar datos recientemente leídos y agilizar su carga en el caso de que sean solicitados otra vez. Puede mejorar notablemente el rendimiento de las aplicaciones, dado que acceder a un byte de datos en RAM puede ser miles de veces más rápido que acceder a un byte del disco duro. Caché de pistaEs una memoria de estado sólido tipo RAM cuyo uso generalmente se limita a las supercomputadoras por su costo tan elevado. Caché webEs la encargada de almacenar documentos web para reducir el ancho de banda consumido, la carga de los servidores y el retraso de las descargas. Existen tres tipos de caché web: privados, que solo funcionan para un usuario; compartidos, que sirven páginas a varios usuarios, y pasarela, que funcionan a cargo del propio servidor original, de forma que los clientes no distinguen unos de otros. Composición internaLos datos en la memoria caché se alojan en distintos niveles según la frecuencia de uso que tengan. La información puede transferirse entre los distintos niveles de forma inclusiva o exclusiva:
Memoria caché nivel 1 (Caché L1)También llamada memoria interna,[3] se encuentra en el núcleo del microprocesador. Se utiliza para almacenar y acceder a datos e instrucciones importantes y de uso frecuente, agilizando los procesos, al ser el nivel que ofrece un tiempo de respuesta menor. Se divide en dos subniveles:
Memoria caché nivel 2 (Caché L2)Se encarga de almacenar datos de uso frecuente, es mayor que la caché L1, pero a costa de ser más lenta. Aun así, es más rápida que la memoria principal (RAM). Puede ser inclusiva y contener una copia del nivel 1, además de información extra o exclusiva, y que su contenido sea totalmente diferente de la caché L1, proporcionando así mayor capacidad total. Memoria caché nivel 3 (Caché L3)Es más rápida que la memoria principal (RAM), pero más lenta y mayor que L2, ayuda a que el sistema guarde gran cantidad de información, agilizando las tareas del procesador. En esta memoria se agiliza el acceso a datos e instrucciones que no se localizaron en L1 o L2. Al igual que la L2, puede ser inclusiva y contener una copia de L2 además de información extra o, por el contrario, ser exclusiva y contener información totalmente diferente a la de los niveles anteriores, consiguiendo así una mayor capacidad total. DiseñoEn el diseño de la memoria caché se deben considerar varios factores que influyen directamente en el rendimiento de la memoria y por lo tanto en su objetivo de aumentar la velocidad de respuesta de la jerarquía de memoria. Estos factores son las políticas de ubicación, extracción, reemplazo y escritura. Política de ubicaciónDecide dónde debe colocarse un bloque de memoria principal que entra en la memoria caché. Las más utilizadas son:
Política de extracciónLa política de extracción determina cuándo y qué bloque de memoria principal hay que traer a memoria caché. Existen dos políticas muy extendidas:
Política de reemplazoVéase también: Algoritmos de reemplazo de páginas
Determina qué bloque de memoria caché debe abandonarla cuando no existe espacio disponible para un bloque entrante. Básicamente hay cuatro políticas:
Política de actualización o escrituraDeterminan el instante en que se actualiza la información en memoria principal cuando se hace una escritura en la memoria es ejecutada. Existen dos casos diferentes: Sobre la memoria caché
Sobre la memoria principal
OptimizaciónPara una optimización en la manera en que se ingresa a la memoria caché y cómo se obtienen datos de ella, se han tomado en cuenta distintas técnicas que ayudarán a que haya menos reincidencia de fallos.[cita requerida] Mejorar el rendimiento
Reducción de fallosTipos de fallosExisten tres tipos de fallos en una memoria caché (se conocen como clasificación 3C):
En un sistema multiprocesador, existen dos tipos más de fallos (clasificación 5C[5]):
Técnicas para reducir fallosExisten diversas técnicas para reducir esos fallos en la caché. Algunas son:
Reducción de tiempo de acceso
En las cachés de correspondencia, la comprobación de la etiqueta y el acceso al dato, se hace al mismo tiempo.
Véase tambiénReferencias
Enlaces externos |