美文网首页Linux 内存管理技术文iOS
Cache 替换算法之:基本算法

Cache 替换算法之:基本算法

作者: yuwh_507 | 来源:发表于2015-05-17 13:13 被阅读3329次

Cache miss不仅意味着需要从主存获取数据,而且还需要将cache的某一个block替换出去。常用的算法包括FIFO、LRU、RR、Random等

FIFO: First in First out

fifo

如上图,不同的色块代表不同的主存数据,按既定的顺序被load到cache中,位于cache中的特定的位置,当需要被替换出去时,他们也按原来的顺序依次被替换出去。

Round Robin

rr

和FIFO相比,RR算法将cache划分成若干个单元,新数据进来时,根据cache单元的位置为顺序,依次将原有数据替换,从结果看,数据被替换出cache 的顺序和进入时的顺序没有必然关系。

Random

random

真正意义上的随机,你不知道下一次被替换出去的会是哪一个cache block

LRU(Least Recently Used)

LRU

按照Cache block被使用的先后顺序组成链表,按最老的数据最先被替换的规则进行替换

MRU(Most Recently Used)和LRU类似,差别在于它是按使用的频度来排序,按最少使用的数据最先被替换出去的规则进行替换。

————————————————————-

FIFO、RR和Random算法都没有考虑cache的使用历史信息,而程序的时间和空间局部性都依赖于这些历史信息,因此不少CPU使用了LRU算法。这并不意味着LRU就一定比这些算法强,理论和实验(参考1,参考2,参考3)都证明了LRU在某些场景下miss率比其他三种都高,比如访问数组{a, b, c, d, e}命中到同一个组时, Miss的概率非常高,在这种情况下LRU并不比FIFO、RR好多少,而明显弱于Random方式。

LRU算法没有利用访问次数这个重要信息,在处理文件扫描这种空间局限性较弱的场景时就显得有点力不从心,访问的数据量越大,miss率越高,因此LRU出现了改良算法:LRFU和LRU-K

LRFU是LRU和LFU(Least Frequently Used)两者的结合,优先替换访问次数少的数据。LRU-K记录页面访问的次数,K为最大值,实现方法是:先从使用次数为1的页面中根据LRU查找页面进行替换,如果没有1的页面则查找访问次数为2的页面,直到K为止。当K=1时,等效于LRU。现实中LRU-2比较常用。

LUR-K使用多个优先级队列,算法复杂度为O(Log2N),而LRU、FIFO这类算法的复杂度位O(1),因此采用LRU-K算法时需要耗费更多的cycle,同时,多个队列使用互相独立的空间,消耗的空间也较多,因此出现了针对LRU-2优化的2Q算法,其初衷是保证LRU-2效果不变的前提下,减小时间和空间的消耗。

2Q算法有两种实现方式:Simplified 2Q和Full version 2Q,下节详细介绍

参考1Alan Jay Smith [Sep. 1982].Cache Memories. Sep. 1982] ACM Computing Surveys Volume 14 Issue 3

参考2:GURURAJ S. RAO [Jul. 1978]. Performance Analysis of Cache Memories. Journal the ACM(JACM)Vol 25, No 3.

参考3:Jan Reineke, Daniel Grund, Christoph Berg, andReinhard Wilhelm[Nov 2007]. Timing Predictabilityof Cache Replacement Policies. Real-Time Systems. Volume 37, Number 2.

相关文章

  • Cache 替换算法之:基本算法

    Cache miss不仅意味着需要从主存获取数据,而且还需要将cache的某一个block替换出去。常用的算法包括...

  • Cache 替换算法之:LIRS

    Second Change 传统的FIFO和LRU算法都没有使用访问次数这个信息,使得对于空间局限性较弱的场景效率...

  • LRU Cache理解

    LRU Cache 1. 概念解析,LRU Cache算法 Lru Cache算法就是Least Recently...

  • 缓存相关

    cache淘汰算法:LIRS 算法 缓存那些事 Redis缓存淘汰算法,LRU算法,LRU算法讲解

  • Cache 替换算法和写策略

    前言:来吧,继续补 Cache 的知识。 替换算法 还记得组相联吗?就是主存中的一块可以放在 Cache 中的一组...

  • Cache 替换算法之:2Q

    Simplified 2Q 如果访问的数据P在Am中命中,将他放回到Am的Rear中,如果在A1命中,则将其从A1...

  • ES缓存

    node query cache 一个节点的所有shard共享一个缓存区。利用LRU算法替换缓存内容。 query...

  • 软考每天一练||网络工程师

    以下关于Cache的叙述中,正确的是( )。 A.在容量确定的情况下,替换算法的时间复杂度是影响Cache命中率的...

  • 重新组织函数 - Substitute Algorithm

    简述 Substitute Algorithm(替换算法)指你想把一个算法替换成另一个更清晰的算法,将函数本体替换...

  • 缓存淘汰算法

    一、OPT:最佳替换算法(optional replacement) 1. 算法思想此算法是用来评价其他算法的。永...

网友评论

    本文标题:Cache 替换算法之:基本算法

    本文链接:https://www.haomeiwen.com/subject/mwokqttx.html