高阶数据结构——LRU Cache

1.什么是LRU Cache

LRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法。 什么是Cache?狭义的Cache指的是位于CPU和主存间的快速RAM, 通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。 广义上的Cache指的是位于速度相差较大的两种硬件之间, 用于协调两者数据传输速度差异的结构。除了CPU与主存之间有Cache, 内存与硬盘之间也有Cache,乃至在硬盘与网络之间也有某种意义上的Cache── 称为Internet临时文件夹或网络内容缓存等。

例如:我们现在要打开微信,操作系统会从赋存中将微信相关的代码数据加载到内存中,CPU读取内存中的数据即可,但是CPU的速度是非常快的,相对于CPU来说,内存的速度就很慢了。

为了解决这个问题,会在CPU与内存之间增加一个Cache来协调两者的速度差异。当我们在使用微信的视频聊天功能时,CPU下次读取的指令大概率还是视频聊天,所以可以预先加载一部分视频聊天的数据或者代码到Cache中去。Cache要比内存快得多,能更好的配合CPU工作。
空间局部性原理:现在正在使用的数据和将来要使用的数据在存储位置上可能是相邻的。

而Cache就是建立在局部性原理上工作的。

2. Cache的替换算法

计算机的硬件设计上,速度越快的,造价越高,容量越小,Cache的速度虽然快,但是容量较小,如果Cache满了,现在需要将新的内容加载到Cache中,则需要进行替换,有四种比较常见的Cache替换算法。

  • 1.随机算法(RAND)
  • 2.先进先出算法(FIFO)
  • 3.近期最少使用(LRU)
  • 4.最近不经常使用(LFU)

2.1 随机算法(Rand)

在Cache满了时,随机选择一块进行替换。

假设现在一共有4个Cache块,以下是CPU访问的主存块号顺序。{1,2,3,4,1,2,5,1,2,3,4,5}

1,2,3,4号主存块直接插入即可,因为此时Cache还没有满,接下来的1,2号主存块因为Cache中已经存在,所以直接访问Cache中的即可。

到访问5号内存块时,因为Cache中没有,所以要进行替换,由于当前是随机替换,这里就替换3号Cache。

再接下来的1,2号都可以直接命中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值