CN102023931A - 一种自适应缓存预取方法 - Google Patents
一种自适应缓存预取方法 Download PDFInfo
- Publication number
- CN102023931A CN102023931A CN2010106115301A CN201010611530A CN102023931A CN 102023931 A CN102023931 A CN 102023931A CN 2010106115301 A CN2010106115301 A CN 2010106115301A CN 201010611530 A CN201010611530 A CN 201010611530A CN 102023931 A CN102023931 A CN 102023931A
- Authority
- CN
- China
- Prior art keywords
- data
- region
- ahead
- fetching
- equipment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
本发明提供了一种自适应缓存预取方法,检查每个流,并使用多个队列记录每次访问的地址;如果当前访问的地址与之前某个队列中的地址连续,则认定为一个流,触发预取操作;检测预取对命中率的影响,若命中率低于阈值,则更改预取策略减少预取数量或关闭预取。本发明在预取前对访问流做了过滤,还原了原来的多个顺序流,然后分别针对每个顺序流做预取,由于顺序预取效率非常高,整个系统的性能将得到提升。
Description
技术领域
本发明涉及存储系统的性能优化领域,具体涉及一种自适应缓存预取方法。
背景技术
存储器是计算机的核心部件之一,其性能直接关系到整个计算机系统性能的高低。如何以合理的价格,设计出容量和速度满足计算机系统要求的存储器系统,始终是计算机体系结构设计中的关键问题之一。计算机用户希望容量越大越好,而且速度还要快,价格要便宜。仅用单一的一种存储器是很难达到这一目标的。较好的方法是采用存储层次,用多种存储器构成存储器的层次结构。然而,人们对于存储器的容量大、速度快、价格低的三个要求是相互矛盾的:(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所示的变化:
在A+2地址之前的所有数据的读取都只读用户发出的地址,而在用户发来对A+2地址的读请求时,因为之前已经存在一个顺序流(A、A+1),所以触发了预取操作,将向慢速IO设备发出预取请求。这时需要考虑的问题是如何处理用户需要的数据和预取的数据的关系以及预取多大的数据比较合适,因为慢速IO设备对大块数据的访问具有较好的性能,所以这里可以采用一种类似于处理器中Cache行的处理策略,将IO设备划分为大小相同的若干个块,称为Region,这些Region的大小大于一次的IO请求,比如可以设置为1MB大小。这样的话,用户的当前访问和预取操作可以合并为一次对整个Region的读取操作。
用户读取的数据可能在Region的任何位置,这时需要根据所在位置选择预取当前的Region,还是紧邻的下一个Region,具体分三种情况:
1、数据在Region的比较靠前的位置,那么直接将数据所在的Region一次从慢速IO设备读到高速IO设备即可,同时返回给用户之前所请求的数据;
2、数据在Region的最后一部分空间,那么应该读两部分的数据:请求的数据和紧邻的下一个Region的所有数据;
3、数据横跨两个Region,那么应该一次发出从当前Region的后一部分到下一个Region的所有数据的请求。
预取的数据暂存在高速IO设备中,用户请求的数据直接返回给用户,当今后用户按照顺序模式再次请求之后的数据时可以直接从快速的IO设备中读取,而不用再从慢速IO设备中获取;如果预取的数据不再被用户所请求,那么之前预取的数据就浪费掉了,但是考虑到慢速IO设备对大块数据的读取速度较快,这部分的开销在一定的命中率的情况下还是值得的。如果经过一段时候发现命中率非常低,则表明此应用程序存在很少的顺序的流请求,可以将预取关闭,从而减少开销,提高IO的整体性能。
Claims (4)
1.一种自适应缓存预取方法,其特征在于:步骤如下:
A、检查每个流,并使用多个队列记录每次访问的地址;
B、如果当前访问的地址与之前某个队列中的地址连续,则认定为一个流,触发预取操作;
C、检测预取对命中率的影响,若命中率低于阈值,则更改预取策略减少预取数量或关闭预取。
2.如权利要求1所述一种自适应缓存预取方法,其特征在于:所述预取策略包括不预取,始终预取和检测到顺序读才预取,否则不预取。
3.如权利要求1所述一种自适应缓存预取方法,其特征在于:根据用户读取的数据选择预取的region,region为将io设备划分为大小相等的块。
4.如权利要求3所述一种自适应缓存预取方法,其特征在于:预取region的策略为:
数据在Region的比较靠前的位置,那么直接将数据所在的Region一次从慢速IO设备读到高速IO设备即可,同时返回给用户之前所请求的数据;
数据在Region的最后一部分空间,那么应该读两部分的数据:请求的数据和紧邻的下一个Region的所有数据;
数据横跨两个Region,那么应该一次发出从当前Region的后一部分到下一个Region的所有数据的请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010611530.1A CN102023931B (zh) | 2010-12-17 | 2010-12-17 | 一种自适应缓存预取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010611530.1A CN102023931B (zh) | 2010-12-17 | 2010-12-17 | 一种自适应缓存预取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102023931A true CN102023931A (zh) | 2011-04-20 |
CN102023931B CN102023931B (zh) | 2015-02-04 |
Family
ID=43865249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010611530.1A Active CN102023931B (zh) | 2010-12-17 | 2010-12-17 | 一种自适应缓存预取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102023931B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102298508A (zh) * | 2011-09-07 | 2011-12-28 | 记忆科技(深圳)有限公司 | 基于流的固态硬盘预读取的方法及装置 |
CN102298556A (zh) * | 2011-08-26 | 2011-12-28 | 成都市华为赛门铁克科技有限公司 | 数据流识别方法及装置 |
CN102508642A (zh) * | 2011-11-10 | 2012-06-20 | 华为技术有限公司 | 一种数据预取方法及装置 |
CN102779098A (zh) * | 2012-06-14 | 2012-11-14 | 国家超级计算深圳中心(深圳云计算中心) | 混合缓存的协同式自适应预取方法、中间件和系统 |
CN102799390A (zh) * | 2012-06-14 | 2012-11-28 | 国家超级计算深圳中心(深圳云计算中心) | 能耗感知的协同式自适应预取方法和中间件 |
CN104572502A (zh) * | 2015-01-12 | 2015-04-29 | 浪潮电子信息产业股份有限公司 | 一种存储系统缓存策略自适应方法 |
CN104572479A (zh) * | 2013-10-24 | 2015-04-29 | Arm有限公司 | 预取策略控制 |
CN104636270A (zh) * | 2013-11-14 | 2015-05-20 | Arm有限公司 | 数据处理装置中的自适应预取 |
CN105487987A (zh) * | 2015-11-20 | 2016-04-13 | 深圳市迪菲特科技股份有限公司 | 一种处理并发顺序读io的方法及装置 |
CN106294211A (zh) * | 2016-08-08 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种多路顺序流的检测方法及装置 |
CN106325776A (zh) * | 2016-08-24 | 2017-01-11 | 浪潮(北京)电子信息产业有限公司 | 一种缓存淘汰策略的实时调整方法及装置 |
CN106407133A (zh) * | 2015-07-30 | 2017-02-15 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
CN103927136B (zh) * | 2014-04-21 | 2017-02-22 | 华为技术有限公司 | 输入输出io类型的识别方法和装置 |
CN106557435A (zh) * | 2016-11-16 | 2017-04-05 | 郑州云海信息技术有限公司 | 一种缓存模式识别的方法、缓存模块及存储系统 |
CN107783911A (zh) * | 2016-08-31 | 2018-03-09 | 杭州华为数字技术有限公司 | 一种数据过滤方法及终端设备 |
CN108182151A (zh) * | 2018-01-24 | 2018-06-19 | 北京百度网讯科技有限公司 | 顺序流缓存与检测的方法、装置、存储介质及终端设备 |
CN110226158A (zh) * | 2017-12-29 | 2019-09-10 | 华为技术有限公司 | 一种数据预取方法、装置和存储设备 |
CN111506778A (zh) * | 2020-04-14 | 2020-08-07 | 中山大学 | 一种基于K-Truss图的存储系统缓存预取方法、系统及介质 |
CN111625482A (zh) * | 2016-03-23 | 2020-09-04 | 北京忆恒创源科技有限公司 | 顺序流检测方法与装置 |
CN113407119A (zh) * | 2021-06-28 | 2021-09-17 | 海光信息技术股份有限公司 | 数据预取方法、数据预取装置、处理器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1650260A (zh) * | 2002-05-01 | 2005-08-03 | 皇家飞利浦电子股份有限公司 | 基于存储区的数据预取 |
CN101127008A (zh) * | 2006-08-18 | 2008-02-20 | 国际商业机器公司 | 用于预测性选择预取操作的范围的数据处理系统和方法 |
CN101236540A (zh) * | 2007-01-29 | 2008-08-06 | 国际商业机器公司 | 用于提供动态存储器预取的系统和方法 |
-
2010
- 2010-12-17 CN CN201010611530.1A patent/CN102023931B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1650260A (zh) * | 2002-05-01 | 2005-08-03 | 皇家飞利浦电子股份有限公司 | 基于存储区的数据预取 |
CN101127008A (zh) * | 2006-08-18 | 2008-02-20 | 国际商业机器公司 | 用于预测性选择预取操作的范围的数据处理系统和方法 |
CN101236540A (zh) * | 2007-01-29 | 2008-08-06 | 国际商业机器公司 | 用于提供动态存储器预取的系统和方法 |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102298556B (zh) * | 2011-08-26 | 2013-10-02 | 华为数字技术(成都)有限公司 | 数据流识别方法及装置 |
CN102298556A (zh) * | 2011-08-26 | 2011-12-28 | 成都市华为赛门铁克科技有限公司 | 数据流识别方法及装置 |
CN102298508A (zh) * | 2011-09-07 | 2011-12-28 | 记忆科技(深圳)有限公司 | 基于流的固态硬盘预读取的方法及装置 |
CN102508642A (zh) * | 2011-11-10 | 2012-06-20 | 华为技术有限公司 | 一种数据预取方法及装置 |
CN102779098B (zh) * | 2012-06-14 | 2016-04-20 | 国家超级计算深圳中心(深圳云计算中心) | 混合缓存的协同式自适应预取方法、装置和系统 |
CN102779098A (zh) * | 2012-06-14 | 2012-11-14 | 国家超级计算深圳中心(深圳云计算中心) | 混合缓存的协同式自适应预取方法、中间件和系统 |
CN102799390A (zh) * | 2012-06-14 | 2012-11-28 | 国家超级计算深圳中心(深圳云计算中心) | 能耗感知的协同式自适应预取方法和中间件 |
CN104572479A (zh) * | 2013-10-24 | 2015-04-29 | Arm有限公司 | 预取策略控制 |
CN104572479B (zh) * | 2013-10-24 | 2019-12-13 | Arm 有限公司 | 预取策略控制 |
US11494188B2 (en) | 2013-10-24 | 2022-11-08 | Arm Limited | Prefetch strategy control for parallel execution of threads based on one or more characteristics of a stream of program instructions indicative that a data access instruction within a program is scheduled to be executed a plurality of times |
CN104636270A (zh) * | 2013-11-14 | 2015-05-20 | Arm有限公司 | 数据处理装置中的自适应预取 |
CN103927136B (zh) * | 2014-04-21 | 2017-02-22 | 华为技术有限公司 | 输入输出io类型的识别方法和装置 |
CN104572502A (zh) * | 2015-01-12 | 2015-04-29 | 浪潮电子信息产业股份有限公司 | 一种存储系统缓存策略自适应方法 |
CN104572502B (zh) * | 2015-01-12 | 2018-06-19 | 浪潮电子信息产业股份有限公司 | 一种存储系统缓存策略自适应方法 |
CN106407133B (zh) * | 2015-07-30 | 2020-10-27 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
CN106407133A (zh) * | 2015-07-30 | 2017-02-15 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
CN105487987A (zh) * | 2015-11-20 | 2016-04-13 | 深圳市迪菲特科技股份有限公司 | 一种处理并发顺序读io的方法及装置 |
CN105487987B (zh) * | 2015-11-20 | 2018-09-11 | 深圳市迪菲特科技股份有限公司 | 一种处理并发顺序读io的方法及装置 |
CN111625482B (zh) * | 2016-03-23 | 2022-02-01 | 北京忆恒创源科技股份有限公司 | 顺序流检测方法与装置 |
CN111625482A (zh) * | 2016-03-23 | 2020-09-04 | 北京忆恒创源科技有限公司 | 顺序流检测方法与装置 |
CN106294211B (zh) * | 2016-08-08 | 2019-05-28 | 浪潮(北京)电子信息产业有限公司 | 一种多路顺序流的检测方法及装置 |
CN106294211A (zh) * | 2016-08-08 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种多路顺序流的检测方法及装置 |
CN106325776A (zh) * | 2016-08-24 | 2017-01-11 | 浪潮(北京)电子信息产业有限公司 | 一种缓存淘汰策略的实时调整方法及装置 |
CN107783911A (zh) * | 2016-08-31 | 2018-03-09 | 杭州华为数字技术有限公司 | 一种数据过滤方法及终端设备 |
CN107783911B (zh) * | 2016-08-31 | 2021-06-08 | 华为技术有限公司 | 一种数据过滤方法及终端设备 |
CN106557435B (zh) * | 2016-11-16 | 2020-03-06 | 苏州浪潮智能科技有限公司 | 一种缓存模式识别的方法、缓存模块及存储系统 |
CN106557435A (zh) * | 2016-11-16 | 2017-04-05 | 郑州云海信息技术有限公司 | 一种缓存模式识别的方法、缓存模块及存储系统 |
CN110226158A (zh) * | 2017-12-29 | 2019-09-10 | 华为技术有限公司 | 一种数据预取方法、装置和存储设备 |
CN110226158B (zh) * | 2017-12-29 | 2021-06-29 | 华为技术有限公司 | 一种数据预取方法、装置和存储设备 |
US11099997B2 (en) | 2017-12-29 | 2021-08-24 | Huawei Technologies Co., Ltd. | Data prefetching method and apparatus, and storage device |
CN108182151A (zh) * | 2018-01-24 | 2018-06-19 | 北京百度网讯科技有限公司 | 顺序流缓存与检测的方法、装置、存储介质及终端设备 |
CN111506778A (zh) * | 2020-04-14 | 2020-08-07 | 中山大学 | 一种基于K-Truss图的存储系统缓存预取方法、系统及介质 |
CN111506778B (zh) * | 2020-04-14 | 2023-04-28 | 中山大学 | 一种基于K-Truss图的存储系统缓存预取方法、系统及介质 |
CN113407119A (zh) * | 2021-06-28 | 2021-09-17 | 海光信息技术股份有限公司 | 数据预取方法、数据预取装置、处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN102023931B (zh) | 2015-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102023931A (zh) | 一种自适应缓存预取方法 | |
CN103856567B (zh) | 基于Hadoop分布式文件系统的小文件存储方法 | |
CN101236530B (zh) | 高速缓存替换策略的动态选择方法 | |
Stuecheli et al. | The virtual write queue: Coordinating DRAM and last-level cache policies | |
EP2642398B1 (en) | Coordinated prefetching in hierarchically cached processors | |
CN106909515B (zh) | 面向混合主存的多核共享末级缓存管理方法及装置 | |
US8200902B2 (en) | Cache device for coupling to a memory device and a method of operation of such a cache device | |
Loh | Extending the effectiveness of 3D-stacked DRAM caches with an adaptive multi-queue policy | |
Gulur et al. | Bi-modal dram cache: Improving hit rate, hit latency and bandwidth | |
Lv et al. | Operation-aware buffer management in flash-based systems | |
US20090006813A1 (en) | Data forwarding from system memory-side prefetcher | |
Lee et al. | Caching strategies for high-performance storage media | |
CN110795363B (zh) | 一种存储介质的热页预测方法和页面调度方法 | |
CN104111898A (zh) | 基于多维数据相似性的混合存储系统及数据管理方法 | |
CN108932150A (zh) | 基于ssd和磁盘混合存储的缓存方法、装置及介质 | |
On et al. | FD-buffer: a buffer manager for databases on flash disks | |
CN107301270A (zh) | Ddr存储系统访存延时的解析建模方法 | |
KR101105127B1 (ko) | 에스에스디 확장버퍼를 사용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장버퍼로서 사용하는 장치 | |
Ryu et al. | Impact of flash memory on video-on-demand storage: Analysis of tradeoffs | |
Zhang et al. | Design and optimization of large size and low overhead off-chip caches | |
Lee et al. | Characterization of Memory Access in Deep Learning and Its Implications in Memory Management. | |
Ryu et al. | FlashStream: A multi-tiered storage architecture for adaptive HTTP streaming | |
Gulur et al. | A comprehensive analytical performance model of dram caches | |
Yang et al. | HB-storage: Optimizing SSDs with a HDD write buffer | |
Shi et al. | A unified write buffer cache management scheme for flash memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220725 Address after: 100193 No. 36 Building, No. 8 Hospital, Wangxi Road, Haidian District, Beijing Patentee after: Dawning Information Industry (Beijing) Co.,Ltd. Patentee after: DAWNING INFORMATION INDUSTRY Co.,Ltd. Address before: 100084 Beijing Haidian District City Mill Street No. 64 Patentee before: Dawning Information Industry (Beijing) Co.,Ltd. |
|
TR01 | Transfer of patent right |