stringtranslate.com

Políticas de reemplazo de caché

En informática , las políticas de reemplazo de caché (también conocidas como algoritmos de reemplazo de caché o algoritmos de caché ) son instrucciones o algoritmos de optimización que un programa de computadora o una estructura mantenida por hardware puede utilizar para administrar un caché de información. El almacenamiento en caché mejora el rendimiento al mantener elementos de datos recientes o de uso frecuente en ubicaciones de memoria cuyo acceso es más rápido o computacionalmente más económico que los almacenes de memoria normales. Cuando el caché está lleno, el algoritmo debe elegir qué elementos descartar para dejar espacio para nuevos datos.

Descripción general

El tiempo promedio de referencia de la memoria es [1]

dónde

= proporción de errores = 1 - (proporción de aciertos)
= tiempo para acceder a la memoria principal cuando hay una falla (o, con una caché de varios niveles, tiempo promedio de referencia de memoria para la caché inmediatamente inferior)
= latencia: tiempo para hacer referencia al caché (debe ser el mismo para aciertos y errores)
= efectos secundarios, como efectos de cola en sistemas multiprocesador

Un caché tiene dos figuras principales de mérito: latencia y tasa de aciertos. Varios factores secundarios también afectan el rendimiento de la caché. [1]

La tasa de aciertos de un caché describe la frecuencia con la que se encuentra un elemento buscado. Las políticas de reemplazo más eficientes rastrean más información de uso para mejorar la tasa de aciertos para un tamaño de caché determinado. La latencia de un caché describe cuánto tiempo después de solicitar un elemento deseado, el caché puede devolver ese elemento cuando hay un resultado. Las estrategias de reemplazo más rápidas generalmente rastrean menos información de uso (o, con una caché asignada directamente, ninguna información) para reducir el tiempo necesario para actualizar la información. Cada estrategia de reemplazo es un compromiso entre la tasa de aciertos y la latencia.

Las mediciones de la tasa de aciertos generalmente se realizan en aplicaciones de referencia y la tasa de aciertos varía según la aplicación. Las aplicaciones de transmisión de video y audio a menudo tienen una tasa de aciertos cercana a cero, porque cada bit de datos en la transmisión se lee una vez (un error obligatorio), se usa y luego nunca se lee ni se escribe nuevamente. Muchos algoritmos de caché (particularmente LRU ) permiten que la transmisión de datos llene el caché, eliminando información que pronto se volverá a utilizar ( contaminación del caché ). [2] Otros factores pueden ser el tamaño, el tiempo de obtención y el vencimiento. Dependiendo del tamaño de la caché, es posible que no sea necesario ningún algoritmo de almacenamiento en caché adicional para descartar elementos. Los algoritmos también mantienen la coherencia de la caché cuando se utilizan varias cachés para los mismos datos, como cuando varios servidores de bases de datos actualizan un archivo de datos compartido.

Políticas

Anomalía de Bélády en los algoritmos de reemplazo de páginas

El algoritmo de almacenamiento en caché más eficaz sería descartar información que no sería necesaria durante mucho tiempo; esto se conoce como algoritmo óptimo de Bélády , política de reemplazo óptima o algoritmo clarividente . Dado que generalmente es imposible predecir hasta qué punto en el futuro se necesitará información, esto es inviable en la práctica. El mínimo práctico se puede calcular después de la experimentación y se puede comparar la efectividad de un algoritmo de caché elegido.

Cuando ocurre un error de página , hay un conjunto de páginas en la memoria. En el ejemplo, el cuadro 1, el cuadro 2 y el cuadro 3 acceden a la secuencia de 5, 0, 1 respectivamente. Cuando se accede a 2, reemplaza el valor 5 (que está en el cuadro 1, prediciendo que no se accederá al valor 5 en un futuro cercano. Debido a que un sistema operativo de propósito general no puede predecir cuándo se accederá a 5, el algoritmo de Bélády no se puede implementar allí .

Reemplazo aleatorio (RR)

El reemplazo aleatorio selecciona un elemento y lo descarta para hacer espacio cuando sea necesario. Este algoritmo no requiere mantener ningún historial de acceso. Se ha utilizado en procesadores ARM debido a su simplicidad [3] y permite una simulación estocástica eficiente . [4]

Políticas simples basadas en colas

Primero en entrar, primero en salir (FIFO)

Con este algoritmo, la caché se comporta como una cola FIFO ; desaloja los bloques en el orden en que se agregaron, independientemente de la frecuencia o cuántas veces se accedió a ellos antes.

Último en entrar, primero en salir (LIFO) o Primero en entrar, último en salir (FILO)

La caché se comporta como una pila y a diferencia de una cola FIFO. El caché desaloja primero el bloque agregado más recientemente, independientemente de la frecuencia o cuántas veces se accedió a él antes.

Políticas simples basadas en lo reciente

Usado menos recientemente (LRU)

Descarta primero los elementos usados ​​menos recientemente. Este algoritmo requiere realizar un seguimiento de qué se utilizó y cuándo, lo cual es engorroso. Requiere "bits de antigüedad" para las líneas de caché y rastrea la línea de caché utilizada menos recientemente en función de ellos. Cuando se utiliza una línea de caché, la antigüedad de las otras líneas de caché cambia. LRU es una familia de algoritmos de almacenamiento en caché , que incluye 2Q de Theodore Johnson y Dennis Shasha [5] y LRU/K de Pat O'Neil, Betty O'Neil y Gerhard Weikum. [6] La secuencia de acceso para el ejemplo es ABCDEDF:

Cuando se instala ABCD en los bloques con números de secuencia (incremento 1 por cada nuevo acceso) y se accede a E, es un error y debe instalarse en un bloque. Con el algoritmo LRU, E reemplazará a A porque A tiene el rango más bajo (A(0)). En el penúltimo paso, se accede a D y se actualiza el número de secuencia. Luego se accede a F, reemplazando a B, que tenía el rango más bajo, (B(1)).

Consciente del tiempo, utilizado menos recientemente

El tiempo de uso menos reciente (TLRU) [7] es una variante de LRU diseñada para cuando el contenido de un caché tiene una vida útil válida. El algoritmo es adecuado para aplicaciones de caché de red, como redes centradas en la información (ICN), redes de entrega de contenido (CDN) y redes distribuidas en general. TLRU introduce un término: TTU (tiempo de uso), una marca de tiempo del contenido (o una página) que estipula el tiempo de usabilidad del contenido en función de su localidad y el editor del contenido. TTU proporciona más control a un administrador local en la regulación del almacenamiento de red.

Cuando llega contenido sujeto a TLRU, un nodo de caché calcula la TTU local en función de la TTU asignada por el editor de contenido. El valor TTU local se calcula con una función definida localmente. Cuando se calcula el valor de TTU local, el reemplazo de contenido se realiza en un subconjunto del contenido total del nodo de caché. TLRU garantiza que el contenido menos popular y de corta duración sea reemplazado por contenido entrante.

Utilizado más recientemente (MRU)

A diferencia de LRU, MRU descarta primero los elementos utilizados más recientemente. En la undécima conferencia VLDB , Chou y DeWitt dijeron: "Cuando un archivo se escanea repetidamente en un patrón de referencia [en bucle secuencial], MRU es el mejor algoritmo de reemplazo ". [8] Los investigadores que se presentaron en la 22ª conferencia VLDB señalaron que para patrones de acceso aleatorio y escaneos repetidos en grandes conjuntos de datos (también conocidos como patrones de acceso cíclico), los algoritmos de caché MRU tienen más aciertos que LRU debido a su tendencia a retener datos más antiguos. [9] Los algoritmos MRU son más útiles en situaciones en las que cuanto más antiguo es un elemento, es más probable que se acceda a él. La secuencia de acceso para el ejemplo es ABCDECDB:

ABCD se colocan en la caché, ya que hay espacio disponible. En el quinto acceso (E), el bloque que contenía D se reemplaza por E, ya que este bloque se usó por última vez. En el siguiente acceso (a D), se reemplaza C ya que era el bloque al que se accedió justo antes de D.

LRU segmentado (SLRU)

Una caché SLRU se divide en dos segmentos: de prueba y protegida. Las líneas de cada segmento están ordenadas de mayor a menor acceso reciente. Los datos de los errores se agregan al caché en el extremo del segmento de prueba al que se accedió más recientemente. Las visitas se eliminan de donde residen y se agregan al extremo del segmento protegido al que se accedió más recientemente; Se ha accedido a las líneas del segmento protegido al menos dos veces. El segmento protegido es finito; La migración de una línea del segmento de prueba al segmento protegido puede forzar la migración de la línea LRU en el segmento protegido al extremo utilizado más recientemente del segmento de prueba, dando a esta línea otra oportunidad de acceder antes de ser reemplazada. El límite de tamaño del segmento protegido es un parámetro SLRU que varía según los patrones de carga de trabajo de E/S . Cuando se deben descartar datos de la caché, las líneas se obtienen del extremo LRU del segmento de prueba. [10]

Aproximaciones LRU

LRU puede resultar costoso en cachés con mayor asociatividad . El hardware práctico suele emplear una aproximación para lograr un rendimiento similar a un costo de hardware menor.

Pseudo-LRU (PLRU)

Para cachés de CPU con gran asociatividad (generalmente > cuatro formas), el costo de implementación de LRU se vuelve prohibitivo. En muchas cachés de CPU, es suficiente un algoritmo que casi siempre descarta uno de los elementos utilizados menos recientemente; Muchos diseñadores de CPU eligen un algoritmo PLRU, que sólo necesita un bit por elemento de caché para funcionar. PLRU generalmente tiene una tasa de falla ligeramente peor, una latencia ligeramente mejor , usa un poco menos de energía que LRU y tiene una sobrecarga menor que LRU.

Los bits funcionan como un árbol binario de punteros de un bit que apuntan a un subárbol utilizado menos recientemente. Seguir la cadena de puntero hasta el nodo hoja identifica al candidato de reemplazo. Con un acceso, todos los punteros en la cadena desde el nodo hoja de la vía accedida hasta el nodo raíz se configuran para apuntar a un subárbol que no contiene la ruta accedida. La secuencia de acceso en el ejemplo es ABCDE:

Cuando hay acceso a un valor (como A) y no está en el caché, se carga desde la memoria y se coloca en el bloque hacia donde apuntan las flechas en el ejemplo. Una vez colocado ese bloque, las flechas se invierten para que apunten en la dirección opuesta. Se colocan A, B, C y D; E reemplaza A a medida que el caché se llena porque ahí era donde apuntaban las flechas, y las flechas que conducían a A giran para apuntar en la dirección opuesta (a B, el bloque que será reemplazado en el próximo caché falla).

Reloj-Pro

El algoritmo LRU no se puede implementar en la ruta crítica de los sistemas informáticos, como los sistemas operativos , debido a su gran sobrecarga; En su lugar, se suele utilizar Clock , una aproximación de LRU. Clock-Pro es una aproximación de LIRS para implementación de bajo costo en sistemas. [11] Clock-Pro tiene el marco Clock básico, con tres ventajas. Tiene tres "manecillas de reloj" (a diferencia de la "manecilla" única de Clock) y puede medir aproximadamente la distancia de reutilización de los accesos a datos. Al igual que LIRS, puede desalojar rápidamente elementos de datos de acceso único o de baja localidad . Clock-Pro es tan complejo como Clock y fácil de implementar a bajo costo. La implementación de reemplazo de caché de búfer en la versión 2017 de Linux combina LRU y Clock-Pro. [12] [13]

Políticas simples basadas en frecuencia

Uso menos frecuente (LFU)

El algoritmo LFU cuenta con qué frecuencia se necesita un artículo; los que se usan con menos frecuencia se descartan primero. Esto es similar a LRU, excepto que se almacena cuántas veces se accedió a un bloque en lugar de cuán recientemente. Mientras se ejecuta una secuencia de acceso, el bloque que se usó la menor cantidad de veces se eliminará del caché.

Uso reciente menos frecuente (LFRU)

El algoritmo menos frecuente utilizado recientemente (LFRU) [14] combina los beneficios de LFU y LRU. LFRU es adecuado para aplicaciones de caché de red como ICN , CDN y redes distribuidas en general. En LFRU, el caché se divide en dos particiones: privilegiada y sin privilegios. La partición privilegiada está protegida y, si el contenido es popular, se inserta en la partición privilegiada. Al reemplazar la partición privilegiada, LFRU desaloja el contenido de la partición sin privilegios; empuja el contenido de la partición privilegiada a la no privilegiada e inserta contenido nuevo en la partición privilegiada. Se utiliza LRU para la partición privilegiada y un algoritmo LFU (ALFU) aproximado para la partición sin privilegios.

LFU con envejecimiento dinámico (LFUDA)

Una variante, LFU con envejecimiento dinámico (LFUDA), utiliza el envejecimiento dinámico para adaptarse a los cambios en un conjunto de objetos populares; agrega un factor de antigüedad de la caché al recuento de referencias cuando se agrega un nuevo objeto a la caché o se vuelve a hacer referencia a un objeto existente. LFUDA incrementa la antigüedad de la caché al desalojar bloques configurándola en el valor clave del objeto desalojado, y la antigüedad de la caché siempre es menor o igual al valor de clave mínimo en la caché. [15] Si se accedió con frecuencia a un objeto en el pasado y se vuelve impopular, permanecerá en la caché durante mucho tiempo (evitando que objetos nuevos o menos populares lo reemplacen). El envejecimiento dinámico reduce la cantidad de dichos objetos, haciéndolos elegibles para reemplazo, y LFUDA reduce la contaminación de la caché causada por LFU cuando una caché es pequeña.

Políticas estilo RRIP

Las políticas de estilo RRIP son la base de otras políticas de reemplazo de caché, incluido Hawkeye. [dieciséis]

Predicción del intervalo de re-referencia (RRIP)

RRIP [17] es una política flexible, propuesta por Intel , que intenta proporcionar una buena resistencia al escaneo y al mismo tiempo permite desalojar las líneas de caché más antiguas que no se han reutilizado. Todas las líneas de caché tienen un valor de predicción, el RRPV (valor de predicción de referencia), que debe correlacionarse con el momento en que se espera que se reutilice la línea. El RRPV suele ser alto en el momento de la inserción; Si una línea no se reutiliza pronto, será expulsada para evitar que los escaneos (grandes cantidades de datos utilizados solo una vez) llenen el caché. Cuando se reutiliza una línea de caché, el RRPV se establece en cero, lo que indica que la línea se ha reutilizado una vez y es probable que se reutilice nuevamente.

En caso de fallo de caché, la línea con un RRPV igual al máximo RRPV posible es expulsada; con valores de 3 bits, se desaloja una línea con un RRPV de 2 3 - 1 = 7. Si ninguna línea tiene este valor, todos los RRPV del conjunto se incrementan en 1 hasta que uno lo alcance. Se necesita un desempate y normalmente es la primera línea de la izquierda. El aumento es necesario para garantizar que las líneas más antiguas envejezcan adecuadamente y serán desalojadas si no se reutilizan.

RRIP estático (SRRIP)

SRRIP inserta líneas con un valor RRPV de maxRRPV; una línea que acaba de insertarse será la que tendrá más probabilidades de ser expulsada si se pierde el caché.

RRIP bimodal (BRRIP)

SRRIP funciona bien normalmente, pero sufre cuando el conjunto de trabajo es mucho mayor que el tamaño de la caché y provoca una destrucción de la caché . Esto se soluciona insertando líneas con un valor RRPV de maxRRPV la mayor parte del tiempo e insertando líneas con un valor RRPV de maxRRPV - 1 aleatoriamente con una probabilidad baja. Esto hace que algunas líneas se "peguen" en el caché y ayuda a evitar la destrucción. BRRIP, sin embargo, degrada el rendimiento en accesos que no son de destrucción. SRRIP funciona mejor cuando el conjunto de trabajo es más pequeño que el caché y BRRIP funciona mejor cuando el conjunto de trabajo es más grande que el caché.

RRIP dinámico (DRRIP)

DRRIP [17] usa duelo de conjuntos [18] para seleccionar si se usa SRRIP o BRRIP. Dedica algunos conjuntos (normalmente 32) para usar SRRIP y otros pocos para usar BRRIP, y utiliza un contador de políticas que monitorea el rendimiento del conjunto para determinar qué política será utilizada por el resto de la caché.

Políticas que se aproximan al algoritmo de Bélády

El algoritmo de Bélády es la política óptima de reemplazo de caché, pero requiere conocimiento del futuro para desalojar las líneas que se reutilizarán en mayor medida en el futuro. Se han propuesto varias políticas de reemplazo que intentan predecir distancias de reutilización futuras a partir de patrones de acceso pasados, [19] permitiéndoles aproximarse a la política de reemplazo óptima. Algunas de las políticas de reemplazo de caché de mejor rendimiento intentan imitar el algoritmo de Bélády.

ojo de halcón

Hawkeye [16] intenta emular el algoritmo de Bélády utilizando accesos pasados ​​por parte de una PC para predecir si los accesos que produce generan accesos compatibles con el caché (utilizados más adelante) o accesos adversos al caché (no utilizados más adelante). Muestra una serie de conjuntos de caché no alineados, utiliza un historial de longitud y emula el algoritmo de Bélády en estos accesos. Esto permite que la política determine qué líneas deberían haberse almacenado en caché y cuáles no, prediciendo si una instrucción es compatible con el caché o no. Estos datos luego se introducen en un RRIP; los accesos desde instrucciones compatibles con el caché tienen un valor RRPV más bajo (es probable que sean desalojados más adelante), y los accesos desde instrucciones que rechazan el caché tienen un valor RRPV más alto (es probable que sean desalojados antes). El backend de RRIP toma las decisiones de desalojo. La caché muestreada y el generador OPT establecen el valor RRPV inicial de las líneas de caché insertadas. Hawkeye ganó el campeonato de caché CRC2 en 2017, [20] y Harmony [21] es una extensión de Hawkeye que mejora el rendimiento de la captación previa.

Ver título
Diagrama de bloques de la política de reemplazo de caché de Mockingjay

Sinsajo

Sinsajo [22] intenta mejorar Hawkeye de varias maneras. Elimina la predicción binaria, lo que le permite tomar decisiones más detalladas sobre qué líneas de caché desalojar y deja la decisión sobre qué línea de caché desalojar para cuando haya más información disponible.

Mockingjay mantiene un caché de muestra de accesos únicos, las PC que los produjeron y sus marcas de tiempo. Cuando se accede nuevamente a una línea en el caché muestreado, la diferencia horaria se enviará al predictor de distancia de reutilización. El RDP utiliza el aprendizaje de diferencias temporales, [23] donde el nuevo valor de RDP aumentará o disminuirá en un pequeño número para compensar los valores atípicos; el número se calcula como . Si el valor no se ha inicializado, la distancia de reutilización observada se inserta directamente. Si el caché muestreado está lleno y es necesario descartar una línea, se le indica al RDP que la última PC que accedió produce accesos de transmisión.

En un acceso o inserción, el tiempo estimado de reutilización (ETR) para esta línea se actualiza para reflejar la distancia de reutilización prevista. En caso de error de caché, se desaloja la línea con el valor ETR más alto. Sinsajo tiene resultados cercanos al algoritmo óptimo de Bélády.

Políticas de aprendizaje automático

Varias políticas han intentado utilizar perceptrones , cadenas de Markov u otros tipos de aprendizaje automático para predecir qué línea desalojar. [24] [25] También existen algoritmos de aprendizaje aumentado para el reemplazo de caché. [26] [27]

Otras políticas

Conjunto de actualidad baja entre referencias (LIRS)

LIRS es un algoritmo de reemplazo de páginas con mejor rendimiento que LRU y otros algoritmos de reemplazo más nuevos. La distancia de reutilización es una métrica para clasificar dinámicamente las páginas visitadas para tomar una decisión de reemplazo. [28] LIRS aborda los límites de LRU mediante el uso de la actualidad para evaluar la actualidad interreferencia (TIR) ​​para tomar una decisión de reemplazo.

En el diagrama, X indica que se accede a un bloque en un momento determinado. Si se accede al bloque A1 en el momento 1, su actualidad será 0; este es el bloque al que se accede por primera vez y la TIR será 1, ya que predice que se accederá nuevamente a A1 en el tiempo 3. En el tiempo 2, dado que se accede a A4, la actualidad será 0 para A4 y 1 para A1; A4 es el objeto al que se accedió más recientemente y la TIR será 4. En el momento 10, el algoritmo LIRS tendrá dos conjuntos: un conjunto LIR = {A1, A2} y un conjunto HIR = {A3, A4, A5}. En el momento 10, si hay acceso a A4 se produce un fallo; LIRS desalojará a A5 en lugar de A2 debido a su mayor actualidad.

Caché de reemplazo adaptativo

La caché de reemplazo adaptativa (ARC) equilibra constantemente entre LRU y LFU para mejorar el resultado combinado. [29] Mejora SLRU al utilizar información sobre elementos de caché desalojados recientemente para ajustar el tamaño de los segmentos protegidos y de prueba para aprovechar al máximo el espacio de caché disponible. [30]

Reloj con reemplazo adaptativo

Reloj con reemplazo adaptativo (CAR) combina las ventajas de ARC y Clock . CAR tiene un rendimiento comparable al de ARC y supera a LRU y Clock. Al igual que ARC, CAR se autoajusta y no requiere parámetros especificados por el usuario.

cola múltiple

El algoritmo de reemplazo de colas múltiples (MQ) se desarrolló para mejorar el rendimiento de una caché de búfer de segundo nivel, como la caché de búfer de un servidor, y fue presentado en un artículo por Zhou, Philbin y Li. [31] La caché MQ contiene un número m de colas LRU: Q 0 , Q 1 , ..., Q m -1 . El valor de m representa una jerarquía basada en la vida útil de todos los bloques en esa cola. [32]

Cesto

Pannier [33] es un mecanismo de almacenamiento en caché flash basado en contenedores que identifica contenedores cuyos bloques tienen patrones de acceso variables. Pannier tiene una estructura de cola de supervivencia basada en colas de prioridad para clasificar los contenedores según su tiempo de supervivencia, que es proporcional a los datos activos en el contenedor.

Análisis estático

El análisis estático determina qué accesos son aciertos o errores de caché para indicar el peor tiempo de ejecución de un programa. [34] Un enfoque para analizar las propiedades de las cachés LRU es darle a cada bloque en la caché una "edad" (0 para el utilizado más recientemente) y calcular intervalos para las posibles edades. [35] Este análisis se puede refinar para distinguir casos en los que se puede acceder al mismo punto del programa mediante rutas que resultan en errores o aciertos. [36] Se puede obtener un análisis eficiente abstrayendo conjuntos de estados de caché mediante anticadenas que están representadas por diagramas de decisión binarios compactos . [37]

El análisis estático de LRU no se extiende a las políticas pseudo-LRU. Según la teoría de la complejidad computacional , los problemas de análisis estático planteados por pseudo-LRU y FIFO se encuentran en clases de complejidad más altas que los de LRU. [38] [39]

Ver también

Referencias

  1. ^ ab Alan Jay Smith. "Diseño de memorias caché de CPU". Proc. IEEE TENCON, 1987. [1]
  2. ^ Pablo V. Bolotoff. "Principios funcionales de la memoria caché" Archivado el 14 de marzo de 2012 en Wayback Machine . 2007.
  3. ^ Guía del programador de la serie ARM Cortex-R
  4. ^ Un algoritmo de simulación eficiente para la política de caché de reemplazo aleatorio [2]
  5. ^ Johnson, Theodore; Shasha, Dennis (12 de septiembre de 1994). "2Q: un algoritmo de reemplazo de gestión de búfer de alto rendimiento y bajos gastos generales" (PDF) . Actas de la XX Conferencia Internacional sobre Bases de Datos Muy Grandes . VLDB '94. San Francisco, CA: Morgan Kaufmann Publishers Inc.: 439–450. ISBN 978-1-55860-153-6. S2CID  6259428.
  6. ^ O'Neil, Elizabeth J .; O'Neil, Patrick E.; Weikum, Gerhard (1993). "El algoritmo de reemplazo de páginas LRU-K para el almacenamiento en búfer del disco de la base de datos". Actas de la conferencia internacional ACM SIGMOD de 1993 sobre gestión de datos: SIGMOD '93 . Nueva York, NY, Estados Unidos: ACM. págs. 297–306. CiteSeerX 10.1.1.102.8240 . doi :10.1145/170035.170081. ISBN  978-0-89791-592-2. S2CID  207177617.
  7. ^ Bilal, Mahoma; et al. (2014). "Política de gestión de caché de uso menos reciente (TLRU) según el tiempo en ICN". XVI Congreso Internacional sobre Tecnologías de la Comunicación Avanzada . págs. 528–532. arXiv : 1801.00390 . Código Bib : 2018arXiv180100390B. doi :10.1109/ICACT.2014.6779016. ISBN 978-89-968650-3-2. S2CID  830503.
  8. ^ Hong-Tai Chou y David J. DeWitt. Una evaluación de estrategias de gestión de búfer para sistemas de bases de datos relacionales. VLDB, 1985.
  9. ^ Shaul Dar, Michael J. Franklin, Björn Þór Jónsson, Divesh Srivastava y Michael Tan. Almacenamiento en caché y reemplazo de datos semánticos. VLDB, 1996.
  10. ^ Ramakrishna Karedla, J. Spencer Love y Bradley G. Wherry. Estrategias de almacenamiento en caché para mejorar el rendimiento del sistema de disco. En Computadora , 1994.
  11. ^ Jiang, canción; Chen, Feng; Zhang, Xiaodong (2005). "CLOCK-Pro: una mejora eficaz del reemplazo de CLOCK" (PDF) . Actas de la Conferencia Anual sobre USENIX Conferencia Técnica Anual . Asociación USENIX: 323–336.
  12. ^ "Gestión de memoria de Linux: diseño de reemplazo de página". 30 de diciembre de 2017 . Consultado el 30 de junio de 2020 .
  13. ^ "Una implementación de reemplazo de página CLOCK-Pro". LWN.net . 16 de agosto de 2005 . Consultado el 30 de junio de 2020 .
  14. ^ Bilal, Mahoma; et al. (2017). "Un plan de gestión de caché para el desalojo y la replicación eficientes de contenido en redes de caché". Acceso IEEE . 5 : 1692-1701. arXiv : 1702.04078 . Código Bib : 2017arXiv170204078B. doi :10.1109/ACCESS.2017.2669344. S2CID  14517299.
  15. ^ Jayarekha, P.; Nair, T (2010). "Un enfoque de reemplazo dinámico adaptativo para un sistema de memoria caché de prefijo basado en multidifusión". arXiv : 1001.4135 [cs.MM].
  16. ^ ab Jainista, Akanksha; Lin, Calvin (junio de 2016). "Regreso al futuro: aprovechamiento del algoritmo de Belady para mejorar el reemplazo de caché". 2016 ACM/IEEE 43º Simposio Internacional Anual sobre Arquitectura de Computadores (ISCA) . págs. 78–89. doi :10.1109/ISCA.2016.17. ISBN 978-1-4673-8947-1.
  17. ^ ab Jaleel, Aamer; Theobald, Kevin B.; Steely, Simón C.; Emer, Joel (19 de junio de 2010). "Reemplazo de caché de alto rendimiento mediante predicción de intervalo de referencia (RRIP)". Actas del 37º simposio internacional anual sobre arquitectura informática . ISCA '10. Nueva York, NY, EE.UU.: Asociación de Maquinaria de Computación. págs. 60–71. doi :10.1145/1815961.1815971. ISBN 978-1-4503-0053-7. S2CID  856628.
  18. ^ Qureshi, Moinuddin K.; Jaleel, Aamer; Patt, Yale N.; Steely, Simón C.; Emer, Joel (9 de junio de 2007). "Políticas de inserción adaptativas para almacenamiento en caché de alto rendimiento". Noticias de arquitectura informática de ACM SIGARCH . 35 (2): 381–391. doi :10.1145/1273440.1250709. ISSN  0163-5964.
  19. ^ Keramidas, Georgios; Petoumenos, Pavlos; Kaxiras, Stefanos (2007). "Reemplazo de caché basado en predicción de distancia de reutilización". 2007 25º Congreso Internacional de Diseño Informático . págs. 245-250. doi :10.1109/ICCD.2007.4601909. ISBN 978-1-4244-1257-0. S2CID  14260179.
  20. ^ "EL SEGUNDO CAMPEONATO DE REEMPLAZO DE CACHE - Ubicado junto con ISCA en junio de 2017". crc2.ece.tamu.edu . Consultado el 24 de marzo de 2022 .
  21. ^ Jainista, Akanksha; Lin, Calvin (junio de 2018). "Repensar el algoritmo de Belady para adaptarse a la captación previa". 2018 ACM/IEEE 45º Simposio Internacional Anual sobre Arquitectura de Computadores (ISCA) . págs. 110-123. doi :10.1109/ISCA.2018.00020. ISBN 978-1-5386-5984-7. S2CID  5079813.
  22. ^ Shah, Ishan; Jainista, Akanksha; Lin, Calvin (abril de 2022). "Mimetismo eficaz de la política MIN de Belady". HPCA .
  23. ^ Sutton, Richard S. (1 de agosto de 1988). "Aprender a predecir mediante los métodos de diferencias temporales". Aprendizaje automático . 3 (1): 9–44. doi : 10.1007/BF00115009 . ISSN  1573-0565. S2CID  207771194.
  24. ^ Liu, Evan; Hashemi, Milad; Swersky, Kevin; Ranganathan, Parthasarathy; Ahn, Junwhan (21 de noviembre de 2020). "Un enfoque de aprendizaje por imitación para el reemplazo de caché". Congreso Internacional sobre Aprendizaje Automático . PMLR: 6237–6247. arXiv : 2006.16239 .
  25. ^ Jiménez, Daniel A.; Terán, Elvira (14 de octubre de 2017). "Predicción de reutilización multiperspectiva". Actas del 50º Simposio Internacional Anual IEEE/ACM sobre Microarquitectura . Nueva York, NY, Estados Unidos: ACM. págs. 436–448. doi :10.1145/3123939.3123942. ISBN 9781450349529. S2CID  1811177.
  26. ^ Lykouris, Thodoris; Vassilvitskii, Sergei (7 de julio de 2021). "Almacenamiento en caché competitivo con asesoramiento de aprendizaje automático". Revista de la ACM . 68 (4): 1–25. arXiv : 1802.05399 . doi : 10.1145/3447579 . eISSN  1557-735X. ISSN  0004-5411. S2CID  3625405.
  27. ^ Mitzenmacher, Michael ; Vassilvitskii, Sergei (31 de diciembre de 2020). "Algoritmos con predicciones". Más allá del análisis de algoritmos en el peor de los casos . Prensa de la Universidad de Cambridge. págs. 646–662. arXiv : 2006.09123 . doi :10.1017/9781108637435.037. ISBN 9781108637435.
  28. ^ Jiang, canción; Zhang, Xiaodong (junio de 2002). "LIRS: una política eficiente de reemplazo de conjuntos recientes de baja interreferencia para mejorar el rendimiento de la caché del búfer" (PDF) . Revisión de la evaluación del desempeño de ACM Sigmetrics . Asociación para Maquinaria de Computación. 30 (1): 31–42. doi :10.1145/511399.511340. ISSN  0163-5999.
  29. ^ Nimrod Megiddo y Dharmendra S. Modha. ARC: una caché de reemplazo de gastos generales bajos y autoajustable. RÁPIDO, 2003.
  30. ^ "Alguna información sobre la caché de lectura de ZFS - o: The ARC - c0t0d0s0.org". Archivado desde el original el 24 de febrero de 2009.
  31. ^ Yuanyuan Zhou , James Philbin y Kai Li. El algoritmo de reemplazo de colas múltiples para cachés de búfer de segundo nivel. USENIX, 2002.
  32. ^ Eduardo Pinheiro, Ricardo Bianchini, Técnicas de conservación de energía para servidores basados ​​en matrices de discos, Actas de la 18.ª conferencia internacional anual sobre supercomputación, del 26 de junio al 1 de julio de 2004, Malo, Francia
  33. ^ Cheng Li, Philip Shilane, Fred Douglis y Grant Wallace. Pannier: un caché flash basado en contenedores para objetos compuestos. Middleware ACM/IFIP/USENIX, 2015.
  34. ^ Cristiano Fernando; Reinhard Wilhelm (1999). "Predicción eficiente y precisa del comportamiento de la caché para sistemas en tiempo real". Sistema en tiempo real . 17 (2–3): 131–181. doi :10.1023/A:1008186323068. S2CID  28282721.
  35. ^ Cristiano Fernando; Florián Martín; Reinhard Guillermo; Martín Alt (noviembre de 1999). "Predicción del comportamiento de la caché mediante interpretación abstracta". Ciencia de la programación informática . Saltador. 35 (2–3): 163–189. doi :10.1016/S0167-6423(99)00010-6.
  36. ^ Valentín Touzeau; Claire Maïza; David Monniaux; Jan Reineke (2017). "Determinar la incertidumbre para un análisis de caché exacto y eficiente". Verificación asistida por ordenador (2) . arXiv : 1709.10008 . doi :10.1007/978-3-319-63390-9_2.
  37. ^ Valentín Touzeau; Claire Maïza; David Monniaux; Jan Reineke (2019). "Análisis rápido y exacto de cachés LRU". Proc. Programa {ACM}. Lang . 3 (POPL): 54:1–54:29. arXiv : 1811.01670 .
  38. ^ David Monniaux; Valentin Touzeau (11 de noviembre de 2019). "Sobre la complejidad del análisis de caché para diferentes políticas de reemplazo". Revista de la ACM . Asociación para Maquinaria de Computación. 66 (6): 1–22. doi :10.1145/3366018. S2CID  53219937.
  39. ^ David Monniaux (13 de mayo de 2022). "La brecha de complejidad en el análisis estático de los accesos a la caché crece si se agregan llamadas a procedimientos". Métodos formales en el diseño de sistemas . Springer Verlag. 59 (1–3): 1–20. arXiv : 2201.13056 . doi :10.1007/s10703-022-00392-w. S2CID  246430884.

enlaces externos