[发明专利]一种自适应缓存预取方法有效
申请号: | 201010611530.1 | 申请日: | 2010-12-17 |
公开(公告)号: | CN102023931A | 公开(公告)日: | 2011-04-20 |
发明(设计)人: | 袁清波;杨杰;邵宗有 | 申请(专利权)人: | 曙光信息产业(北京)有限公司 |
主分类号: | G06F12/08 | 分类号: | G06F12/08 |
代理公司: | 北京安博达知识产权代理有限公司 11271 | 代理人: | 徐国文 |
地址: | 100084 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 自适应 缓存 方法 | ||
技术领域
本发明涉及存储系统的性能优化领域,具体涉及一种自适应缓存预取方法。
背景技术
存储器是计算机的核心部件之一,其性能直接关系到整个计算机系统性能的高低。如何以合理的价格,设计出容量和速度满足计算机系统要求的存储器系统,始终是计算机体系结构设计中的关键问题之一。计算机用户希望容量越大越好,而且速度还要快,价格要便宜。仅用单一的一种存储器是很难达到这一目标的。较好的方法是采用存储层次,用多种存储器构成存储器的层次结构。然而,人们对于存储器的容量大、速度快、价格低的三个要求是相互矛盾的:(1)速度越快,每位价格就越高;(2)容量越大,每位价格就越低;(3)容量越大,速度就越慢。如果只采用其中的一种技术,存储器设计者就会陷入困境:从实现“容量大、价格低”的要求来看,应采用能提供大容量的存储器技术;但从满足性能需求的角度来看,又应采用昂贵且容量较小的快速存储器。走出这种困境的唯一方法,是采用多种存储器技术,构成多级存储层次。图1所示的是典型的两级存储模型,包括容量小但速度快的高速IO设备和容量大但速度慢的慢速IO设备,用户的所有数据都存放在慢速IO设备上,高速IO设备作为一个Cache使用,用户读取IO数据时总是先查找是否在高速IO设备中已有一份拷贝。
如果用户每次访问的数据都能在高速IO设备中找到,那系统的IO性能将会得到显著提高。但是由于高速设备容量远小于慢速设备,所以只能有一部分数据存放在高速IO设备上,而用户对数据的请求范围是非常大的,所以选择哪些数据缓存在高速IO设备上将极大影响系统的整体性能。根据用户的历史访问记录预测下一次可能访问的数据,并将这些数据预取到高速IO设备上,那么当用户真正需要访问这些数据时,性能就会非常高。单个线程的应用程序对IO请求的顺序性比较好,但是如果系统中存在多个顺序访问的应用程序,那么它们下发到IO设备上的请求就变得林乱不堪,如果根据单一访问流进行预取效果将会比较差。
发明内容
为解决预取问题,本发明首先对流进行过滤,然后再顺序预取。
一种自适应缓存预取方法,步骤如下:
A、检查每个流,并使用多个队列记录每次访问的地址;
B、如果当前访问的地址与之前某个队列中的地址连续,则认定为一个流,触发预取操作;
C、检测预取对命中率的影响,若命中率低于阈值,则更改预取策略减少预取数量或关闭预取。
本发明的一种优选技术方案在于:所述预取策略包括不预取,始终预取和检测到顺序读才预取,否则不预取。
本发明的另一种优选技术方案在于:根据用户读取的数据选择预取的region,region为将io设备划分为大小相等的块。
本发明的一种较优选技术方案在于:预取region的策略为:
数据在Region的比较靠前的位置,那么直接将数据所在的Region一次从慢速IO设备读到高速IO设备即可,同时返回给用户之前所请求的数据;
数据在Region的最后一部分空间,那么应该读两部分的数据:请求的数据和紧邻的下一个Region的所有数据;
数据横跨两个Region,那么应该一次发出从当前Region的后一部分到下一个Region的所有数据的请求。
本发明在预取前对访问流做了过滤,还原了原来的多个顺序流,然后分别针对每个顺序流做预取,由于顺序预取效率非常高,整个系统的性能将得到提升。
附图说明
图1典型的两级存储模型
图2预取过程
图3流检测实现
具体实施方式
在实现过程中,可以提供多种类型的预取策略供用户使用。一种是任何情况下都不触发预取操作,另一种只要有读操作均从慢速IO设备上预取一定数量的数据到高速IO设备。这两种情况的性能都比较差,完全不预取浪费了带宽、增加了延迟,全部预取则可能干扰正常的读写操作,甚至每次的读操作都可能因为等待预取而增加很大的开销,而且更严重的是预取回来的数据可能根本不会被接下来的IO请求所使用。再一种则是两者的折中,在判断出预取可能带来好处时才发出预取的动作。
最后一种是基于流的预测,它的基础是需要发现顺序流,而根据之前的分析可知,系统中可能存在多个顺序流,但是混到一起发到下层的IO系统后就不再是顺序的了,所以在预取之前必须将单一的混合流还原成原来的多个顺序流。实现方式可以采取简单的连续地址记录,两个地址就可以组成一个流,这样如果第三个地址也属于这个流时即可以发出预取操作。比如一个如下所示的地址流依次进入流检测系统:A、B、C、A+1、A+2,那么流检测系统会作如图3所示的变化:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于曙光信息产业(北京)有限公司,未经曙光信息产业(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010611530.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种含有嘧菌环胺的杀菌组合物
- 下一篇:新型塑料编织袋自动切缝机夹式切断机构