Articulo de referencia

Caché (informática)

Diagrama que muestra los datos que residen en la caché de una CPU y su copia correspondiente en la RAM , identificados por sus etiquetas. En informática , un caché ( / k æ ʃ / ⓘ...

Diagrama que muestra los datos que residen en la caché de una CPU y su copia correspondiente en la RAM , identificados por sus etiquetas.

En informática , un caché ( / k æ ʃ / KASH [ 1 ] ) es un componente de hardware o software que almacena datos para que las solicitudes futuras de esos datos se puedan atender más rápidamente; los datos almacenados en una caché pueden ser el resultado de un cálculo anterior o una copia de datos almacenados en otro lugar. Unacierto de cachéocurre cuando los datos solicitados se encuentran en la caché, mientras que unfallo de cachéocurre cuando no se encuentran. Los aciertos de caché se atienden leyendo los datos de la caché, lo cual es más rápido que recalcular un resultado o leer de un almacenamiento de datos más lento; por lo tanto, cuantas más solicitudes se puedan atender desde la caché, más rápido será el rendimiento del sistema. [ 2 ]

Para ser rentables, las cachés deben ser relativamente pequeñas. Sin embargo, son eficaces en muchos ámbitos de la informática porque las aplicaciones típicas acceden a los datos con un alto grado de localidad de referencia . Estos patrones de acceso presentan localidad temporal, donde se solicitan datos que ya se han solicitado recientemente, y localidad espacial, donde se solicitan datos que se encuentran cerca de datos que ya se han solicitado.

Motivación

En el diseño de memorias, existe una compensación inherente entre capacidad y velocidad, ya que una mayor capacidad implica un mayor tamaño y, por lo tanto, mayores distancias físicas que deben recorrer las señales, lo que provoca retrasos en la propagación . También existe una compensación entre tecnologías de alto rendimiento como la SRAM y productos más económicos y fáciles de producir en masa, como la DRAM , la memoria flash o los discos duros .

El almacenamiento en búfer que proporciona una caché beneficia a uno o ambos, así como al rendimiento ( ancho de banda ).

Un recurso de mayor tamaño conlleva una latencia de acceso significativa; por ejemplo, un procesador moderno de 4 GHz puede tardar cientos de ciclos de reloj  en acceder a la DRAM. Esto se mitiga leyendo grandes bloques en la caché, con la esperanza de que las lecturas posteriores provengan de ubicaciones cercanas y puedan leerse desde la caché. Se puede utilizar la predicción o la precarga explícita para intuir de dónde provendrán las lecturas futuras y realizar solicitudes con antelación; si se realiza de forma óptima, se evita por completo la latencia.

El uso de una caché también permite un mayor rendimiento del recurso subyacente, al combinar múltiples transferencias de grano fino en solicitudes más grandes y eficientes. En el caso de los circuitos DRAM, el rendimiento adicional se puede obtener utilizando un bus de datos más ancho.

Operación

El hardware implementa la caché como un bloque de memoria para el almacenamiento temporal de datos que probablemente se volverán a utilizar. Las unidades centrales de procesamiento (CPU), las unidades de estado sólido (SSD) y los discos duros (HDD) suelen incluir caché basada en hardware, mientras que los navegadores web y los servidores web suelen depender del almacenamiento en caché por software.

Una caché se compone de un conjunto de entradas. Cada entrada tiene datos asociados , que son una copia de los mismos datos en algún almacén de respaldo . Cada entrada también tiene una etiqueta , que especifica la identidad de los datos en el almacén de respaldo de los que la entrada es una copia.

Cuando el cliente de caché (una CPU, un navegador web o un sistema operativo ) necesita acceder a datos que se supone que existen en el almacenamiento subyacente, primero consulta la caché. Si encuentra una entrada con una etiqueta que coincide con la de los datos deseados, utiliza los datos de dicha entrada. Esta situación se conoce como acierto de caché . Por ejemplo, un navegador web podría consultar su caché local en disco para comprobar si tiene una copia local del contenido de una página web en una URL específica . En este ejemplo, la URL es la etiqueta y el contenido de la página web son los datos. El porcentaje de accesos que resultan en aciertos de caché se conoce como tasa de aciertos o índice de aciertos de la caché.

La situación alternativa, cuando se comprueba la caché y no se encuentra ninguna entrada con la etiqueta deseada, se conoce como fallo de caché . Esto requiere un acceso más costoso a los datos del almacenamiento subyacente. Una vez recuperados los datos solicitados, normalmente se copian en la caché, listos para el siguiente acceso.

Cuando se produce un fallo de caché, normalmente se elimina alguna entrada existente para dejar espacio a los datos recién recuperados. La heurística utilizada para seleccionar la entrada a reemplazar se conoce como política de reemplazo . Una política de reemplazo común, la de menos usado recientemente (LRU), reemplaza la entrada más antigua, es decir, la que se accedió menos recientemente que cualquier otra. Los algoritmos de almacenamiento en caché más sofisticados también tienen en cuenta la frecuencia de uso de las entradas.

Redactar políticas

Una caché de escritura directa sin asignación de escritura
Una caché de escritura diferida con asignación de escritura

Las escrituras en caché deben propagarse eventualmente al almacenamiento subyacente. El momento en que esto ocurre está regido por la política de escritura . Las dos políticas de escritura principales son: [ 3 ]

  • Escritura directa : Las escrituras se realizan de forma síncrona tanto en la caché como en el almacenamiento subyacente.
  • Escritura diferida : Inicialmente, la escritura se realiza solo en la caché. La escritura en el almacenamiento subyacente se pospone hasta que el contenido modificado esté a punto de ser reemplazado por otro bloque de caché.

Una caché de escritura diferida es más compleja de implementar, ya que necesita rastrear qué ubicaciones se han sobrescrito y marcarlas como modificadas para su posterior escritura en el almacenamiento subyacente. Los datos en estas ubicaciones se escriben de nuevo en el almacenamiento subyacente solo cuando se eliminan de la caché, un proceso conocido como escritura diferida . Por esta razón, un fallo de lectura en una caché de escritura diferida puede requerir dos accesos a la memoria del almacenamiento subyacente: uno para escribir los datos modificados y otro para recuperar los datos solicitados. Otras políticas también pueden activar la escritura diferida de datos. El cliente puede realizar muchos cambios en los datos de la caché y luego notificar explícitamente a la caché que escriba los datos de nuevo.

Las operaciones de escritura no devuelven datos. Por consiguiente, es necesario tomar una decisión en caso de fallos de escritura: si se deben cargar o no los datos en la caché. Esto se determina mediante las siguientes políticas de fallos de escritura :

  • Asignación de escritura (también llamada obtención en escritura ): Los datos en la ubicación donde falló la escritura se cargan en la caché, seguidos de una operación de acierto de escritura. En este enfoque, los fallos de escritura son similares a los fallos de lectura.
  • Asignación sin escritura (también llamada escritura sin asignación o escritura indirecta ): Los datos en la ubicación donde falló la escritura no se cargan en la caché y se escriben directamente en el almacenamiento subyacente. En este enfoque, los datos se cargan en la caché solo cuando falla la lectura.

Si bien ambas políticas de escritura pueden implementar cualquiera de las políticas de fallo de escritura, normalmente se emparejan de la siguiente manera: [ 4 ] [ 5 ]

  • Una caché de escritura diferida suele emplear la asignación de escritura, previendo que las escrituras o lecturas posteriores en la misma ubicación se beneficiarán de tener los datos ya en la caché.
  • Una caché de escritura directa utiliza la asignación sin escritura. En este caso, las escrituras posteriores no ofrecen ninguna ventaja, ya que aún deben escribirse directamente en el almacenamiento subyacente.

Entidades distintas a la caché pueden modificar los datos en el almacenamiento subyacente, en cuyo caso la copia en la caché puede quedar obsoleta . Asimismo, cuando el cliente actualiza los datos en la caché, las copias de esos datos en otras cachés quedan obsoletas. Los protocolos de comunicación entre los gestores de caché que mantienen la coherencia de los datos están asociados con la coherencia de la caché .

Precarga

En caso de fallo de lectura de la caché, las cachés con una política de paginación bajo demanda leen la cantidad mínima de datos del almacenamiento subyacente. Una implementación típica de memoria virtual con paginación bajo demanda lee una página de memoria virtual (a menudo 4  KB) del disco a la caché de disco en la RAM. Una CPU típica lee una única línea de caché L2 de 128  bytes de la DRAM a la caché L2, y una única línea de caché L1 de 64  bytes de la caché L2 a la caché L1.

Las cachés con cola de precarga o una política de paginación anticipada más general van más allá: no solo leen los datos solicitados, sino que intuyen que pronto se necesitarán uno o dos bloques de datos adicionales, por lo que los precargan en la caché con antelación. La paginación anticipada resulta especialmente útil cuando el sistema de almacenamiento subyacente tiene una latencia elevada para leer el primer bloque y tiempos mucho más cortos para leer secuencialmente los siguientes, como en el caso del almacenamiento en disco y la memoria DRAM.

Algunos sistemas operativos van más allá con un cargador que siempre precarga todo el ejecutable en la RAM. Algunas cachés van aún más allá, no solo precargando un archivo completo, sino también comenzando a cargar otros archivos relacionados que podrían solicitarse pronto, como la caché de páginas asociada con un prefetcher o la caché web asociada con la precarga de enlaces .

Ejemplos de cachés de hardware

caché de la CPU

Las memorias pequeñas en o cerca de la CPU pueden operar más rápido que la memoria principal , mucho más grande . [ 6 ] La mayoría de las CPU desde la década de 1980 han utilizado una o más cachés, a veces en niveles en cascada ; los microprocesadores modernos de gama alta integrados , de escritorio y de servidor pueden tener hasta seis tipos de caché (entre niveles y funciones). [ 7 ] Algunos ejemplos de cachés con una función específica son la caché D , la caché I y el búfer de traducción de direcciones para la unidad de administración de memoria (MMU).

caché de GPU

Las primeras unidades de procesamiento gráfico (GPU) solían tener cachés de texturas de solo lectura limitadas y utilizaban la técnica de "swizzling" para mejorar la localidad de referencia en 2D . Los fallos de caché afectaban drásticamente al rendimiento, por ejemplo, si no se utilizaba el mipmapping . El almacenamiento en caché era importante para aprovechar las transferencias de 32 bits (o superiores) para los datos de textura, que a menudo eran de tan solo 4 bits por píxel.

A medida que las GPU avanzaron, admitiendo la computación de propósito general en unidades de procesamiento gráfico y núcleos de cómputo , desarrollaron cachés cada vez más grandes y generales, incluyendo cachés de instrucciones para sombreadores , que exhiben funcionalidades comunes en las cachés de la CPU. Estas cachés han crecido hasta gestionar primitivas de sincronización entre hilos y operaciones atómicas , e interactuar con una MMU al estilo de la CPU.

Procesadores de señal digital (DSP)

Los procesadores de señales digitales también se han generalizado a lo largo de los años. Los diseños anteriores utilizaban memoria de acceso directo a memoria ; los DSP modernos suelen incluir un conjunto de cachés muy similar al de una CPU (por ejemplo, la arquitectura Harvard modificada con caché L2 compartida, caché de instrucciones L1 dividida y caché de datos). [ 8 ]

Búfer de búsqueda lateral de traducción

Una unidad de gestión de memoria (MMU) que obtiene entradas de la tabla de páginas de la memoria principal tiene una caché especializada, utilizada para registrar los resultados de las traducciones de direcciones virtuales a direcciones físicas . Esta caché especializada se denomina búfer de traducción anticipada (TLB). [ 9 ]

Caché en red

Redes centradas en la información

Las redes centradas en la información (ICN) son un enfoque para evolucionar la infraestructura de Internet , pasando de un paradigma centrado en el host, basado en la conectividad perpetua y el principio de extremo a extremo , a una arquitectura de red en la que el punto central es la información identificada. Debido a la capacidad de almacenamiento en caché inherente de los nodos en una ICN, esta puede considerarse como una red de cachés débilmente conectada, lo que requiere políticas de almacenamiento en caché específicas. Sin embargo, el almacenamiento en caché de contenido ubicuo plantea el desafío de proteger el contenido contra el acceso no autorizado, lo que exige mayor atención y soluciones. [ 10 ]

A diferencia de los servidores proxy, en ICN la caché es una solución a nivel de red. Por lo tanto, presenta estados de caché que cambian rápidamente y tasas de llegada de solicitudes más altas; además, los tamaños de caché más pequeños imponen requisitos diferentes a las políticas de eliminación de contenido. En particular, las políticas de eliminación para ICN deben ser rápidas y ligeras. Se han propuesto varios esquemas de replicación y eliminación de caché para diferentes arquitecturas y aplicaciones de ICN.

Políticas

Consciente de la hora, menos usado recientemente

El algoritmo de uso menos reciente con reconocimiento de tiempo (TLRU) es una variante del algoritmo LRU diseñada para situaciones donde el contenido almacenado en caché tiene una vida útil válida. Este algoritmo es adecuado para aplicaciones de caché de red, como ICN, redes de distribución de contenido (CDN) y redes distribuidas en general. TLRU introduce un nuevo término: tiempo de uso (TTU). TTU es una marca de tiempo en el contenido que estipula el tiempo de uso del mismo en función de su ubicación y la información del editor. Gracias a esta marca de tiempo basada en la ubicación, TTU proporciona mayor control al administrador local para regular el almacenamiento en red.

En el algoritmo TLRU, cuando llega un contenido, un nodo de caché calcula el valor TTU local basándose en el valor TTU asignado por el editor del contenido. El valor TTU local se calcula mediante una función definida localmente. Una vez calculado el valor TTU local, se reemplaza el contenido en un subconjunto del contenido total almacenado en el nodo de caché. El algoritmo TLRU garantiza que el contenido menos popular y de corta duración se reemplace con el contenido entrante. [ 11 ]

Menos frecuente usado recientemente

El esquema de reemplazo de caché de uso reciente menos frecuente (LFRU) combina las ventajas de los esquemas LFU y LRU. LFRU es adecuado para aplicaciones de caché de red, como ICN, CDN y redes distribuidas en general. En LFRU, la caché se divide en dos particiones: una privilegiada y otra no privilegiada. La partición privilegiada se considera una partición protegida. Si el contenido es muy popular, se coloca en la partición privilegiada. El reemplazo de la partición privilegiada se realiza eliminando primero el contenido de la partición no privilegiada, luego transfiriendo el contenido de la partición privilegiada a la no privilegiada y, finalmente, insertando nuevo contenido en la partición privilegiada. En este procedimiento, se utiliza LRU para la partición privilegiada y un esquema LFU aproximado (ALFU) para la partición no privilegiada. La idea básica es almacenar en caché el contenido popular localmente con el esquema ALFU y transferirlo a la partición privilegiada. [ 12 ]

Pronóstico del tiempo

En 2011, el uso de teléfonos inteligentes con opciones de pronóstico del tiempo sobrecargaba los servidores de AccuWeather ; dos solicitudes de la misma zona generaban solicitudes separadas. Una optimización de los servidores perimetrales para truncar las coordenadas GPS a menos decimales significó que se utilizaran los resultados almacenados en caché de una consulta cercana. El número de consultas al servidor por día se redujo a la mitad. [ 13 ]

cachés de software

Caché de disco

Si bien las cachés de la CPU generalmente son administradas completamente por hardware, diversos programas informáticos administran otras cachés. La caché de páginas en la memoria principal es administrada por el núcleo del sistema operativo .

Si bien el búfer de disco , que forma parte integral del disco duro o de la unidad de estado sólido, a veces se denomina erróneamente caché de disco , sus funciones principales son la secuenciación de escritura y la precarga de lectura. Los controladores de disco de gama alta suelen tener su propia caché integrada para los bloques de datos del disco duro.

Finalmente, un disco duro local rápido también puede almacenar en caché información almacenada en dispositivos de almacenamiento de datos aún más lentos, como servidores remotos ( caché web ) o unidades de cinta locales o unidades ópticas de almacenamiento ; este esquema es el concepto principal de la gestión jerárquica del almacenamiento . Además, las unidades de estado sólido (SSD) rápidas basadas en memoria flash pueden usarse como cachés para discos duros de medios rotativos más lentos, funcionando conjuntamente como unidades híbridas .

caché web

Los navegadores web y los servidores proxy web , ya sea localmente o en el proveedor de servicios de Internet (ISP), utilizan cachés web para almacenar respuestas anteriores de los servidores web, como páginas web e imágenes . Las cachés web reducen la cantidad de información que se debe transmitir a través de la red, ya que la información almacenada previamente en la caché a menudo se puede reutilizar. 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. [ 14 ]

Otra forma de caché es el almacenamiento en caché P2P , donde los archivos más solicitados por las aplicaciones peer-to-peer se almacenan en la caché de un ISP para acelerar las transferencias P2P. De manera similar, existen equivalentes descentralizados que permiten a las comunidades realizar la misma tarea para el tráfico P2P, por ejemplo, Corelli. [ 15 ]

Memorización

Una caché puede almacenar datos que se calculan bajo demanda en lugar de recuperarlos de un almacenamiento subyacente. La memorización es una técnica de optimización que almacena los resultados de las llamadas a funciones que consumen muchos recursos en una tabla de búsqueda, lo que permite que las llamadas posteriores reutilicen los resultados almacenados y eviten cálculos repetidos. Está relacionada con la metodología de diseño de algoritmos de programación dinámica , que también puede considerarse un método de almacenamiento en caché.

Red de distribución de contenido

Una red de distribución de contenido (CDN, por sus siglas en inglés) es una red de servidores distribuidos que entregan páginas y otro contenido web a un usuario, en función de la ubicación geográfica del usuario, el origen de la página web y el servidor de distribución de contenido.

Las CDN se introdujeron a finales de la década de 1990 como una forma de acelerar la entrega de contenido estático, como páginas HTML, imágenes y vídeos. Al replicar el contenido en múltiples servidores alrededor del mundo y entregarlo a los usuarios según su ubicación, las CDN pueden mejorar significativamente la velocidad y la disponibilidad de un sitio web o aplicación. Cuando un usuario solicita un fragmento de contenido, la CDN comprueba si tiene una copia del mismo en su caché. Si la tiene, la CDN entrega el contenido al usuario desde la caché. [ 16 ]

puerta de enlace de almacenamiento en la nube

Una puerta de enlace de almacenamiento en la nube es un dispositivo de almacenamiento en la nube híbrido que conecta una red local a uno o más servicios de almacenamiento en la nube , generalmente servicios de almacenamiento de objetos como Amazon S3 . Proporciona una caché para los datos de acceso frecuente, lo que permite un acceso local de alta velocidad a dichos datos en el servicio de almacenamiento en la nube. Las puertas de enlace de almacenamiento en la nube también ofrecen beneficios adicionales, como el acceso al almacenamiento de objetos en la nube mediante protocolos de servicio de archivos tradicionales, así como el acceso continuo a los datos en caché durante las interrupciones de conectividad. [ 17 ]

Otros escondites

Una caché DNS almacena en caché una asignación de nombres de dominio a direcciones IP . Algunos ejemplos de servicios que proporcionan dichas cachés son el demonio BIND y las bibliotecas de resolución DNS con almacenamiento en caché .

La operación de escritura directa es común al operar en redes poco fiables , debido a la enorme complejidad del protocolo de coherencia requerido entre múltiples cachés de escritura diferida cuando la comunicación es inestable. Por ejemplo, las cachés de páginas web y las cachés del lado del cliente para sistemas de archivos distribuidos (como los de NFS o SMB ) suelen ser de solo lectura o de escritura directa precisamente para mantener el protocolo de red simple y fiable.

Los motores de búsqueda web también suelen poner a disposición las páginas web que tienen indexadas desde su caché . Esto puede resultar útil cuando las páginas web de un servidor web son inaccesibles temporal o permanentemente.

El almacenamiento en caché de bases de datos puede mejorar sustancialmente el rendimiento de las aplicaciones de bases de datos , por ejemplo, en el procesamiento de índices , diccionarios de datos y subconjuntos de datos de uso frecuente.

Una caché distribuida [ 18 ] utiliza hosts en red para proporcionar escalabilidad, confiabilidad y rendimiento a la aplicación. [ 19 ] Los hosts pueden estar ubicados en el mismo lugar o distribuidos en diferentes regiones geográficas.

Android Runtime y Common Language Runtime son ejemplos que utilizan cachés JIT basadas en almacenamiento . [ 20 ]

Los controladores de GPU suelen utilizar cachés de sombreado basadas en almacenamiento . [ 21 ]

Búfer frente a caché

La semántica de un búfer y una caché no es totalmente diferente; aun así, existen diferencias fundamentales en la intención entre el proceso de almacenamiento en caché y el proceso de almacenamiento en búfer.

Fundamentalmente, el almacenamiento en caché mejora el rendimiento en transferencias de datos repetidas. En las cachés de lectura, un dato debe haberse recuperado de su ubicación de origen al menos una vez para que las lecturas posteriores se beneficien del rendimiento, ya que se recuperan del almacenamiento intermedio más rápido de la caché en lugar de la ubicación de origen. En las cachés de escritura, el rendimiento de la escritura de un dato puede mejorarse en la primera escritura, ya que el dato se almacena inmediatamente en el almacenamiento intermedio de la caché, posponiendo su transferencia a la ubicación de origen o ejecutándose como un proceso en segundo plano. A diferencia del almacenamiento en búfer estricto, el proceso de almacenamiento en caché debe cumplir con un protocolo de coherencia de caché potencialmente distribuido para mantener la consistencia entre el almacenamiento intermedio de la caché y la ubicación de origen de los datos.

Por otro lado, el almacenamiento en búfer reduce la cantidad de transferencias de datos que de otro modo serían nuevos entre procesos que se comunican, lo que amortiza la sobrecarga que implican varias transferencias pequeñas en un menor número de transferencias de mayor tamaño. También proporciona un intermediario para procesos que se comunican y que no pueden realizar transferencias directas entre sí, o garantiza un tamaño o representación mínimos de datos requeridos por al menos uno de los procesos que participan en una transferencia.

En las implementaciones típicas de almacenamiento en caché, un elemento de datos que se lee o escribe por primera vez se almacena en búfer. El almacenamiento en caché casi siempre implica algún tipo de almacenamiento en búfer, mientras que el almacenamiento en búfer estricto no necesariamente implica almacenamiento en caché.

Un búfer es una ubicación de memoria temporal que se utiliza tradicionalmente porque las instrucciones de la CPU no pueden acceder directamente a los datos almacenados en dispositivos periféricos. Por lo tanto, se utiliza memoria direccionable como etapa intermedia. Además, dicho búfer puede ser necesario cuando se ensambla o desensambla un gran bloque de datos (según lo requiera un dispositivo de almacenamiento), o cuando los datos se entregan en un orden diferente al de su producción. Asimismo, un búfer completo de datos generalmente se transfiere de forma secuencial (por ejemplo, a un disco duro), por lo que el almacenamiento en búfer en sí mismo a veces aumenta el rendimiento de la transferencia o reduce la variación o fluctuación de la latencia de la transferencia, a diferencia del almacenamiento en caché, cuyo objetivo es reducir la latencia. Estas ventajas se mantienen incluso si los datos almacenados en búfer se escriben una sola vez en el búfer y se leen una sola vez.

Una caché también mejora el rendimiento de las transferencias. Parte de esta mejora se debe a la posibilidad de combinar varias transferencias pequeñas en una sola transferencia grande. Sin embargo, la principal mejora de rendimiento se produce porque es muy probable que los mismos datos se lean varias veces desde la caché, o que los datos escritos se lean pronto. El único propósito de una caché es reducir los accesos al almacenamiento subyacente, que es más lento. Además, la caché suele ser una capa de abstracción diseñada para ser invisible desde la perspectiva de las capas adyacentes.

Véase también

Referencias

  1. "Caché" . Diccionarios Oxford . Archivado del original el 18 de agosto de 2012. Consultado el 2 de agosto de 2016 .
  2. Zhong, Liang; Zheng, Xueqian; Liu, Yong; Wang, Mengting; Cao, Yang (febrero de 2020). "Maximización de la tasa de aciertos de caché en comunicaciones de dispositivo a dispositivo superpuestas a redes celulares" . China Communications . 17 (2): 232– 238. Bibcode : 2020CComm..17b.232Z . doi : 10.23919/jcc.2020.02.018 . ISSN 1673-5447 . S2CID 212649328 .  
  3. Bottomley, James (1 de enero de 2004). "Understanding Caching" . Linux Journal . Archivado del original el 4 de diciembre de 2020. Recuperado el 1 de octubre de 2019 .
  4. Hennessy, John L.; Patterson, David A. (2011). Arquitectura de computadoras: un enfoque cuantitativo . Elsevier. pág. B–12. ISBN  978-0-12-383872-8.
  5. Patterson, David A.; Hennessy, John L. (1990). Arquitectura de computadoras: Un enfoque cuantitativo . Morgan Kaufmann Publishers. pág. 413. ISBN  1-55860-069-8.
  6. Su, Chao; Zeng, Qingkai (10 de junio de 2021). Nicopolitidis, Petros (ed.). "Estudio de los ataques de canal lateral basados ​​en la caché de la CPU: análisis sistemático, modelos de seguridad y contramedidas" . Security and Communication Networks . 2021 : 1–15 . doi : 10.1155/2021/5559552 . ISSN 1939-0122 . 
  7. "Los procesadores Intel Broadwell Core i7 5775C '128MB L4 Cache', un auténtico gigante para juegos, y Skylake Core i7 6700K, el buque insignia de la compañía, finalmente están disponibles en tiendas" . 25 de septiembre de 2015. Archivado del original el 2 de octubre de 2023. Consultado el 30 de mayo de 2021 .Menciona la caché L4. Combinada con la caché I-Cache y la TLB separadas, esto eleva el número total de cachés (niveles + funciones) a 6.
  8. "Descripción general del SDK de Qualcomm Hexagon DSP" . Archivado del original el 1 de noviembre de 2019. Consultado el 10 de junio de 2016 .
  9. Frank Uyeda (2009). "Clase 7: Gestión de memoria" (PDF) . CSE 120: Principios de sistemas operativos . UC San Diego. Archivado (PDF) del original el 17 de mayo de 2017. Recuperado el 4 de diciembre de 2013 .
  10. Bilal, Muhammad; et al. (2019). "Distribución segura de contenido protegido en redes centradas en la información". IEEE Systems Journal . 14 (2): 1– 12. arXiv : 1907.11717 . Bibcode : 2020ISysJ..14.1921B . doi : 10.1109/JSYST.2019.2931813 . S2CID 198967720 .  
  11. Bilal, Muhammad; Kang, Shin-Gak (2014). Política de gestión de caché Time Aware Least Recent Used (TLRU) en ICN . 16.ª Conferencia Internacional sobre Tecnología Avanzada de la Comunicación. pp. 528–532 . arXiv : 1801.00390 . Bibcode : 2018arXiv180100390B . doi : 10.1109/ICACT.2014.6779016 . ISBN  978-89-968650-3-2. S2CID 830503 . 
  12. Bilal, Muhammad; et al . (2017). "Un esquema de gestión de caché para la eliminación y replicación eficiente de contenido en redes de caché" . IEEE Access . 5 : 1692–1701 . arXiv : 1702.04078 . Bibcode : 2017arXiv170204078B . doi : 10.1109/ACCESS.2017.2669344 . S2CID 14517299 .  
  13. Murphy, Chris (30 de mayo de 2011). "5 líneas de código en la nube". InformationWeek . pág. 28. Los servidores de AccuWeather gestionan entre 300 y 500 millones menos de solicitudes al día. 
  14. Múltiple (wiki). "Almacenamiento en caché de aplicaciones web" . Docforge . Archivado del original el 12 de diciembre de 2019. Recuperado el 24 de julio de 2013 .
  15. Tyson, Gareth; Mauthe, Andreas; Kaune, Sebastian; Mu, Mu; Plagemann, Thomas. Corelli: Un servicio de replicación dinámica para admitir contenido dependiente de la latencia en redes comunitarias (PDF) . MMCN'09. Archivado del original (PDF) el 18 de junio de 2015.
  16. "Entrega de contenido distribuido globalmente, por J. Dilley, B. Maggs, J. Parikh, H. Prokop, R. Sitaraman y B. Weihl, IEEE Internet Computing, Volumen 6, Número 5, noviembre de 2002" (PDF) . Archivado (PDF) del original el 9 de agosto de 2017. Recuperado el 25 de octubre de 2019 .
  17. "Definición: puerta de enlace de almacenamiento en la nube" . SearchStorage . Julio de 2014. Archivado del original el 21 de junio de 2022. Consultado el 21 de junio de 2022 .
  18. Paul, S.; Fei, Z. (1 de febrero de 2001). "Almacenamiento en caché distribuido con control centralizado". Computer Communications . 24 (2): 256– 268. CiteSeerX 10.1.1.38.1094 . doi : 10.1016/S0140-3664(00)00322-4 . 
  19. Khan, Iqbal (julio de 2009). "Almacenamiento en caché distribuido en el camino hacia la escalabilidad" . MSDN . 24 (7). Archivado del original el 5 de agosto de 2018. Recuperado el 5 de agosto de 2018 .
  20. Isaac (16 de mayo de 2025). "Todo sobre los archivos .art de Android Runtime: qué son, para qué se utilizan y las principales diferencias con Dalvik y ODEX" . Todo Android . Archivado del original el 19 de diciembre de 2025. Consultado el 16 de diciembre de 2025 .
  21. "Cómo borrar la caché de gráficos de NVIDIA, AMD o AutoCAD en sistemas Windows" . 31 de diciembre de 2023. Archivado del original el 17 de septiembre de 2025. Consultado el 16 de diciembre de 2025 .

Lecturas adicionales

  • "Lo que todo programador debería saber sobre la memoria"
  • "Almacenamiento en caché en entornos distribuidos"