fbpx
Wikipedia

Algoritmo de caché

En computación, los algoritmos de caché (referidos también como algoritmos de reemplazo o políticas de reemplazo) son programas que optimizan la gestión de la información en la memoria caché del ordenador. Cuando el caché está lleno, el algoritmo elige qué elementos elimina para liberar espacio y poder añadir nuevos elementos.

El tiempo medio de acceso en memoria es[1]

donde:

= tiempo medio de acceso al elemento
= probabilidad de fallo = 1 - (probabilidad de acierto)
= tiempo para hacer un acceso a memoria cuando ha habido un fallo (o, con caché multinivel, tiempo medio entre accesos al elemento en memoria para el siguiente nivel de caché)
= latencia: tiempo para acceder al elemento en caché cuando ha habido un acierto
= efectos secundarios, como colas mantenidas por los multiprocesadores

Hay dos cifras principales al evaluar un caché: latencia y tasa de aciertos. Hay también otros factores secundarios que afectan a la prestación del caché.[1]

La tasa de aciertos en el caché describe cuántas veces que se busca un elemento este está en el caché.

La latencia del caché describe lo que tarda en devolver un elemento solicitado (implica que ha habido un acierto). Las estrategia de reemplazo más rápidas llevan en cuenta los elementos menos usados para reducir la cantidad de tiempo utilizado en actualizarlos.

Cada estrategia de reemplazo supone un compromiso entre la tasa de aciertos y la latencia.

Medidas de la tasa de acierto se hacen empíricamente mediante aplicaciones de estrés. La tasa de acierto varía ampliamente de una aplicación a otra. En particular, las aplicaciones de streaming de video y audio generalmente tienen una tasa de acierto cercana a cero, dado que cada bit del stream se lee la primera vez -una omisión obligada- y luego no es leído o escrito nunca más. Incluso peor, muchos algoritmos de caché -especialmente LRU- permiten que estos datos de streaming entren en el caché, sacando fuera otros datos que sí se usarán pronto (contaminación del caché) .[2]

Ejemplos editar

Algoritmo de Bélády editar

El algoritmo teórico más eficiente debe consistir en descartar la información que se tardará más en solicitar. A este resultado óptimo se le denomina el de László Bélády, o el algoritmo clarividente. Dado que es imposible predecir cuándo en el futuro va a ser solicitada una información también es imposible predecir cuán tarde va a ser solicitada, por lo que este algoritno no es implementable en la práctica. Los tiempos solo pueden ser calculados teóricamente y sirven como patrón para cuantificar la eficiencia de los algoritmos reales.

Menos usado recientemente (LRU) editar

El algoritmo Least Recently Used (LRU) descarta primero los elementos menos usados recientemente. El algoritmo lleva el seguimiento de lo que se va usando, lo que resulta caro si se quiere hacer con precisión. La implementación de esta técnica requiere llevar la cuenta de la edad de cada elemento de caché y buscar el menos usado sobre la base de ella. En una implementación como esa, cada vez que se usa un elemento, la edad de todos las demás elementos cambia. LRU pertenece a una familia de algoritmos de caching entre cuyos miembros se incluye 2Q por Theodore Johnson y Dennis Shasha, y LRU/K por Pat O'Neil, Betty O'Neil y Gerhard Weikum.

Usado más recientemente editar

Most Recently Used (MRU) descarta primero -al contrario de LRU- los elementos más usados recientemente. Chou y Dewitt mostraron sus hallazgos en la 11 conferencia VLDB, haciendo notar que "Cuando un fichero se escanea repetidamente en un patrón en bucle secuencial, el mejor algoritmo de reemplazo resulta ser MRU".[3]​ A partir de ahí otros investigadores presentaron en el 22 congreso VLDB que para patrones de acceso aleatorio sobre grandes conjuntos de datos (conocidos como patrones de acceso cíclico) el algoritmo de caché MRU dan mayor tasa de acierto por su tendencia a retener los datos más antiguos.[4]​ Los algoritmos MRU son los más útiles en situaciones en las que cuanto más antiguo es un elemento, más probable es que se acceda a él.

Pseudo-LRU editar

Pseudo-LRU (PLRU): para cachés de CPU con gran asociatividad (generalmente >4 vías), el coste de implementación de LRU resulta prohibitivo. En muchos cachés de CPUs, una política que casi siempre desplace uno de los registros menos usados recientemente resulta suficiente. Muchos diseños de CPUs imlpementan un algoritmo PLRU que solo necesita un bit por cada ítem en el caché para funcionar. Típicamente PLRU tiene una tasa de fallos ligeramente mayor, una latencia ligeramente mejor y usa menos energía que LRU.

 
De qué posiciones de memoria puede hacerse caché a qué posiciones de caché

Reemplazo aleatorio editar

Random Replacement (RR): cuando se necesita espacio se selecciona aleatoriamente un candidato a descartar. Este algoritmo no requiere guardar información sobre la historia de accesos. Dada su simplicidad, ha sido usado en procesadores ARM.[5]​ Admite simulación estocástica eficiente.[6]

LRU segmentado editar

Segmented LRU (SLRU) divide el caché en dos segmentos, un segmento de supervisión y un segmento protegido. En ambos segmentos se ordenan los elementos del más al menos accedido recientemente. La información sobre omisiones se añade al caché en el extremo de los más recientemente accedidos, en el segmento de supervisión. Los aciertos se eliminan de allí donde residen y se añaden en el extremo de los más recientemente accedidos dentro del segmento protegido. Los elementos del segmento protegido ha sido entonces accedidos al menos dos veces. El segmento protegido es finito, por lo que la migración de un elemento del segmento de supervisión al protegido puede forzar la migración del elemento LRU en el segmento protegido al extremo MRU del segemnto de supervisión, dando a este elemento otra oportunidad para ser accedido antes de ser reemplazado. El límite del tamaño del segmento protegido es un parámetro de SLRU que varía según los patrones de carga E/S. Cuando los datos han de ser descartados del caché se obtienen elementos de extremos LRU del segmento de supervisión.[7]​"

Asociación de ida y vuelta editar

2-way set associative: se utiliza para caché de alta velocidad de CPUs, donde incluso un PLRU resulta demasiado lento. En él, la dirección de un nuevo elemento se usa para calcular una de las dos posibles posiciones del caché a las que se puede enviar. Este algoritmo requiere solo un bit por cada par de elementos de caché, para indicar cuál de los dos se ha sido menos usado recientemente. Esto resulta más eficiente que hacer LRU con las dos.

Mapeo directo de caché editar

Direct-mapped cache: se utiliza en las CPU de más alta velocidad donde incluso el caché de ida y vuelta resultan muy lentos. La dirección de los nuevos elementos se utiliza para calcular dónde ubicar lo que llega. Lo que hubiera ahí se descarta.

Menos frecuentemente usados editar

Least Frequently Used (LFU) cuenta la frecuencia con la que un elemento se solicita. Aquellos que se solicitan menos se descartan primero.

caché de reemplazo adaptativo editar

Adaptive Replacement Cache (ARC)[8]​ hace un balanceo constante entre LRU y LFU, mejorando el resultado con su combinación. ARC mejora SLRU usando información acerca de elementos desalojados recientemente para ajustar dinámicamente el tamaño del segmento protegido y del supervisión para hacer mejor uso del espacio disponible.

CLOCK con reemplazo adaptativo editar

CLOCK with Adaptive Replacement (CAR) combina Adaptive Replacement Cache (ARC) con el algoritmo de reemplazo de páginas CLOCK. CAR tiene unas prestaciones comparables a las de ARC, y mejora sustancialmente tanto LRU como CLOCK. Del mismo modo que ARC, CAR se autoajusta y no requiere de parámetros del usuario.

Algoritmo de caché multi-cola editar

Multi Queue (MQ) caching algorithm:[9]​ (por Zhou, Philbin, and Li).

Otros considerandos editar

  • elementos con coste diferente: guardo los elementos que son difíciles de obtener, e.g. aquellos que se tarda mucho en recupera
  • elementos que requieren más caché: si los elementos tienen distinto tamaño puede resultar mejor descartar uno grande a varios pequeños
  • expiración de elementos: algunos cachés guardan información que expira (e.g. noticias, DNS o navegador). El ordenador puede descartar los expirados. Dependiendo del tamaño del caché puede no ser necesario ningún algoritmo para descartarlos

Existen también algoritmos para mantener la coherencia del caché. Esto se aplica a situaciones en las que múltiples cachés independientes se utilizan para los mismos datos (e.g. los múltiples servidores de una base de datos troceada -sharded- actualizando el mismo fichero de datos).

Véase también editar

Referencias editar

  1. Alan Jay Smith. "Design of CPU Cache Memories". Proc. IEEE TENCON, 1987. [1]
  2. Paul V. Bolotoff. "Functional Principles of Cache Memory" el 14 de marzo de 2012 en Wayback Machine.. 2007.
  3. Hong-Tai Chou and David J. Dewitt. An Evaluation of Buffer Management Strategies for Relational Database Systems. VLDB, 1985.
  4. Shaul Dar, Michael J. Franklin, Björn Þór Jónsson, Divesh Srivastava, and Michael Tan. Semantic Data Caching and Replacement. VLDB, 1996.
  5. ARM Cortex-R series processors manual
  6. An Efficient Simulation Algorithm for Cache of Random Replacement Policy [2]
  7. Ramakrishna Karedla, J. Spencer Love, and Bradley G. Wherry. Caching Strategies to Improve Disk System Performance. In Computer, 1994.
  8. Nimrod Megiddo and Dharmendra S. Modha. ARC: A Self-Tuning, Low Overhead Replacement Cache. FAST, 2003.
  9. Yuanyuan Zhou, James Philbin, and Kai Li. The Multi-Queue Replacement Algorithm for Second Level Buffer Caches. USENIX, 2002.

Enlaces externos editar

  • Definitions of various cache algorithms
  • Fully associative cache
  • Set associative cache
  • Direct mapped cache
  •   Datos: Q13404475
  •   Multimedia: Cache algorithm / Q13404475

algoritmo, caché, este, artículo, trata, sobre, algoritmos, generales, caché, para, algoritmos, detallados, específicos, caché, véase, algoritmos, reemplazo, páginas, computación, algoritmos, caché, referidos, también, como, algoritmos, reemplazo, políticas, r. Este articulo trata sobre de algoritmos generales de cache Para algoritmos detallados especificos del cache CPU RAM vease Algoritmos de reemplazo de paginas En computacion los algoritmos de cache referidos tambien como algoritmos de reemplazo o politicas de reemplazo son programas que optimizan la gestion de la informacion en la memoria cache del ordenador Cuando el cache esta lleno el algoritmo elige que elementos elimina para liberar espacio y poder anadir nuevos elementos El tiempo medio de acceso en memoria es 1 T m Tm 1 m Th E displaystyle T m T m 1 m T h E donde T displaystyle T tiempo medio de acceso al elemento m displaystyle m probabilidad de fallo 1 probabilidad de acierto Tm displaystyle T m tiempo para hacer un acceso a memoria cuando ha habido un fallo o con cache multinivel tiempo medio entre accesos al elemento en memoria para el siguiente nivel de cache Th displaystyle T h latencia tiempo para acceder al elemento en cache cuando ha habido un acierto E displaystyle E efectos secundarios como colas mantenidas por los multiprocesadoresHay dos cifras principales al evaluar un cache latencia y tasa de aciertos Hay tambien otros factores secundarios que afectan a la prestacion del cache 1 La tasa de aciertos en el cache describe cuantas veces que se busca un elemento este esta en el cache La latencia del cache describe lo que tarda en devolver un elemento solicitado implica que ha habido un acierto Las estrategia de reemplazo mas rapidas llevan en cuenta los elementos menos usados para reducir la cantidad de tiempo utilizado en actualizarlos Cada estrategia de reemplazo supone un compromiso entre la tasa de aciertos y la latencia Medidas de la tasa de acierto se hacen empiricamente mediante aplicaciones de estres La tasa de acierto varia ampliamente de una aplicacion a otra En particular las aplicaciones de streaming de video y audio generalmente tienen una tasa de acierto cercana a cero dado que cada bit del stream se lee la primera vez una omision obligada y luego no es leido o escrito nunca mas Incluso peor muchos algoritmos de cache especialmente LRU permiten que estos datos de streaming entren en el cache sacando fuera otros datos que si se usaran pronto contaminacion del cache 2 Indice 1 Ejemplos 1 1 Algoritmo de Belady 1 2 Menos usado recientemente LRU 1 3 Usado mas recientemente 1 4 Pseudo LRU 1 5 Reemplazo aleatorio 1 6 LRU segmentado 1 7 Asociacion de ida y vuelta 1 8 Mapeo directo de cache 1 9 Menos frecuentemente usados 1 10 cache de reemplazo adaptativo 1 11 CLOCK con reemplazo adaptativo 1 12 Algoritmo de cache multi cola 1 13 Otros considerandos 2 Vease tambien 3 Referencias 4 Enlaces externosEjemplos editarAlgoritmo de Belady editar El algoritmo teorico mas eficiente debe consistir en descartar la informacion que se tardara mas en solicitar A este resultado optimo se le denomina el de Laszlo Belady o el algoritmo clarividente Dado que es imposible predecir cuando en el futuro va a ser solicitada una informacion tambien es imposible predecir cuan tarde va a ser solicitada por lo que este algoritno no es implementable en la practica Los tiempos solo pueden ser calculados teoricamente y sirven como patron para cuantificar la eficiencia de los algoritmos reales Menos usado recientemente LRU editar El algoritmo Least Recently Used LRU descarta primero los elementos menos usados recientemente El algoritmo lleva el seguimiento de lo que se va usando lo que resulta caro si se quiere hacer con precision La implementacion de esta tecnica requiere llevar la cuenta de la edad de cada elemento de cache y buscar el menos usado sobre la base de ella En una implementacion como esa cada vez que se usa un elemento la edad de todos las demas elementos cambia LRU pertenece a una familia de algoritmos de caching entre cuyos miembros se incluye 2Q por Theodore Johnson y Dennis Shasha y LRU K por Pat O Neil Betty O Neil y Gerhard Weikum Usado mas recientemente editar Most Recently Used MRU descarta primero al contrario de LRU los elementos mas usados recientemente Chou y Dewitt mostraron sus hallazgos en la 11 conferencia VLDB haciendo notar que Cuando un fichero se escanea repetidamente en un patron en bucle secuencial el mejor algoritmo de reemplazo resulta ser MRU 3 A partir de ahi otros investigadores presentaron en el 22 congreso VLDB que para patrones de acceso aleatorio sobre grandes conjuntos de datos conocidos como patrones de acceso ciclico el algoritmo de cache MRU dan mayor tasa de acierto por su tendencia a retener los datos mas antiguos 4 Los algoritmos MRU son los mas utiles en situaciones en las que cuanto mas antiguo es un elemento mas probable es que se acceda a el Pseudo LRU editar Pseudo LRU PLRU para caches de CPU con gran asociatividad generalmente gt 4 vias el coste de implementacion de LRU resulta prohibitivo En muchos caches de CPUs una politica que casi siempre desplace uno de los registros menos usados recientemente resulta suficiente Muchos disenos de CPUs imlpementan un algoritmo PLRU que solo necesita un bit por cada item en el cache para funcionar Tipicamente PLRU tiene una tasa de fallos ligeramente mayor una latencia ligeramente mejor y usa menos energia que LRU nbsp De que posiciones de memoria puede hacerse cache a que posiciones de cacheReemplazo aleatorio editar Random Replacement RR cuando se necesita espacio se selecciona aleatoriamente un candidato a descartar Este algoritmo no requiere guardar informacion sobre la historia de accesos Dada su simplicidad ha sido usado en procesadores ARM 5 Admite simulacion estocastica eficiente 6 LRU segmentado editar Segmented LRU SLRU divide el cache en dos segmentos un segmento de supervision y un segmento protegido En ambos segmentos se ordenan los elementos del mas al menos accedido recientemente La informacion sobre omisiones se anade al cache en el extremo de los mas recientemente accedidos en el segmento de supervision Los aciertos se eliminan de alli donde residen y se anaden en el extremo de los mas recientemente accedidos dentro del segmento protegido Los elementos del segmento protegido ha sido entonces accedidos al menos dos veces El segmento protegido es finito por lo que la migracion de un elemento del segmento de supervision al protegido puede forzar la migracion del elemento LRU en el segmento protegido al extremo MRU del segemnto de supervision dando a este elemento otra oportunidad para ser accedido antes de ser reemplazado El limite del tamano del segmento protegido es un parametro de SLRU que varia segun los patrones de carga E S Cuando los datos han de ser descartados del cache se obtienen elementos de extremos LRU del segmento de supervision 7 Asociacion de ida y vuelta editar 2 way set associative se utiliza para cache de alta velocidad de CPUs donde incluso un PLRU resulta demasiado lento En el la direccion de un nuevo elemento se usa para calcular una de las dos posibles posiciones del cache a las que se puede enviar Este algoritmo requiere solo un bit por cada par de elementos de cache para indicar cual de los dos se ha sido menos usado recientemente Esto resulta mas eficiente que hacer LRU con las dos Mapeo directo de cache editar Direct mapped cache se utiliza en las CPU de mas alta velocidad donde incluso el cache de ida y vuelta resultan muy lentos La direccion de los nuevos elementos se utiliza para calcular donde ubicar lo que llega Lo que hubiera ahi se descarta Menos frecuentemente usados editar Least Frequently Used LFU cuenta la frecuencia con la que un elemento se solicita Aquellos que se solicitan menos se descartan primero cache de reemplazo adaptativo editar Adaptive Replacement Cache ARC 8 hace un balanceo constante entre LRU y LFU mejorando el resultado con su combinacion ARC mejora SLRU usando informacion acerca de elementos desalojados recientemente para ajustar dinamicamente el tamano del segmento protegido y del supervision para hacer mejor uso del espacio disponible CLOCK con reemplazo adaptativo editar CLOCK with Adaptive Replacement CAR combina Adaptive Replacement Cache ARC con el algoritmo de reemplazo de paginas CLOCK CAR tiene unas prestaciones comparables a las de ARC y mejora sustancialmente tanto LRU como CLOCK Del mismo modo que ARC CAR se autoajusta y no requiere de parametros del usuario Algoritmo de cache multi cola editar Multi Queue MQ caching algorithm 9 por Zhou Philbin and Li Otros considerandos editar elementos con coste diferente guardo los elementos que son dificiles de obtener e g aquellos que se tarda mucho en recupera elementos que requieren mas cache si los elementos tienen distinto tamano puede resultar mejor descartar uno grande a varios pequenos expiracion de elementos algunos caches guardan informacion que expira e g noticias DNS o navegador El ordenador puede descartar los expirados Dependiendo del tamano del cache puede no ser necesario ningun algoritmo para descartarlosExisten tambien algoritmos para mantener la coherencia del cache Esto se aplica a situaciones en las que multiples caches independientes se utilizan para los mismos datos e g los multiples servidores de una base de datos troceada sharded actualizando el mismo fichero de datos Vease tambien editarCache informatica Algoritmos de reemplazo de paginasReferencias editar a b Alan Jay Smith Design of CPU Cache Memories Proc IEEE TENCON 1987 1 Paul V Bolotoff Functional Principles of Cache Memory Archivado el 14 de marzo de 2012 en Wayback Machine 2007 Hong Tai Chou and David J Dewitt An Evaluation of Buffer Management Strategies for Relational Database Systems VLDB 1985 Shaul Dar Michael J Franklin Bjorn THor Jonsson Divesh Srivastava and Michael Tan Semantic Data Caching and Replacement VLDB 1996 ARM Cortex R series processors manual An Efficient Simulation Algorithm for Cache of Random Replacement Policy 2 Ramakrishna Karedla J Spencer Love and Bradley G Wherry Caching Strategies to Improve Disk System Performance In Computer 1994 Nimrod Megiddo and Dharmendra S Modha ARC A Self Tuning Low Overhead Replacement Cache FAST 2003 Yuanyuan Zhou James Philbin and Kai Li The Multi Queue Replacement Algorithm for Second Level Buffer Caches USENIX 2002 Enlaces externos editarDefinitions of various cache algorithms Fully associative cache Set associative cache Direct mapped cache nbsp Datos Q13404475 nbsp Multimedia Cache algorithm Q13404475 Obtenido de https es wikipedia org w index php title Algoritmo de cache amp oldid 139187033, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos