课堂笔记:LRU的改进算法LIRS

长平狐 发布于 2013/03/04 19:30
阅读 469
收藏 0

 

LRU(Least Recent Used)是我们在cache替换算法中最普遍使用的算法,在缓存块已满,而需要缓存新的数据块的时候,

这时需要从缓存中找到一个“没有价值”的块用新的数据块去替换它。

 

LRU的特点是简洁高效,但是缺点是LRU的缺点是不能对weak locality的数据进行缓存

 

一个印度人的ARC还有LIRSLRU的缺点是不能对weak locality的数据进行缓存。

 

a. 如果stack size有1000个块,而一个文件是1001个块的大小,而且每次访问都是从头到尾的访问。则LRU的性能非常

差,几乎没有任何缓存。

 

b. 假设我们要邀请学习好的同学到一个容纳10人的会议室开会。如果是LRU算法的话,会邀请90分以上或者80分以上的人,,但是如果没有80分以上的同学则一个都不邀请,而会议室也就白白浪费了,对于LIRS,邀请

成绩前在10名的同学到会议室。这里会议室为我们的stack ,这样我们的会议室也就是stack至少不会浪费。

 

所以我们这里边的问题就是如何把一些weak locality的数据也能够缓存起来,使我们的cache得到充分的使用?

 

2. 两个概念

Reuse: 一个块被使用之后,再次被使用

Recency:一个块被访问后,和上一次访问之间的距离。

 

 

LIRS的基本思想是对访问的数据块进行分类,一部分为hot数据块,一部分为cold数据块。对于hot数据块我们可以分配

90%以上的cache给它们。而对于cold数据块给它们分配10%。

 

本次听课还收获了一些做研究的思路。 jiangsong老师的大概科研思路如下:

a.提出问题:根据一些实验现象,发现现有系统或者算法不足的地方。

b.发现问题:搜集各种实验数据,画成图表,直观的去暴露问题,从而找出现有方法可能的不足之处。

c. 形象化或者生活化的去解决这个问题

d. 把b中发现的问题用数学或者算法的形式进行描述,提出新的观点和概念,论述问题的本质原因。

e. 选择合适的数据结构或者算法去实现d中的解决方案

f. 做测试和分析,对比同类方法。

 

Thanks

MK

 

 

 

Thanks

MK


原文链接:http://blog.csdn.net/michael_kang/article/details/5686756
加载中
返回顶部
顶部