CN1652091A - 一种在数据存储***中预取数据的方法 - Google Patents

一种在数据存储***中预取数据的方法 Download PDF

Info

Publication number
CN1652091A
CN1652091A CNA2004100041188A CN200410004118A CN1652091A CN 1652091 A CN1652091 A CN 1652091A CN A2004100041188 A CNA2004100041188 A CN A2004100041188A CN 200410004118 A CN200410004118 A CN 200410004118A CN 1652091 A CN1652091 A CN 1652091A
Authority
CN
China
Prior art keywords
data
read request
stripe unit
metadata cache
address
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
Application number
CNA2004100041188A
Other languages
English (en)
Other versions
CN100428193C (zh
Inventor
黄玉环
张粤
张国彬
陈绍元
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2004100041188A priority Critical patent/CN100428193C/zh
Publication of CN1652091A publication Critical patent/CN1652091A/zh
Application granted granted Critical
Publication of CN100428193C publication Critical patent/CN100428193C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及一种在数据存储***中预取数据的方法,通过对主机读请求类型的精确判断,并做出相应的预取策略:对于连续数据,可以做大量的预取,如若干个分条单元、若干个分条、或整个磁道;对于热点数据,可以做一定的预取,如分条单元或分条;对于非连续非热点的随机数据,为了避免污染高速缓存,可以不写到数据缓存而只是将其地址写到地址缓存,以便为其他读请求数据的预取处理。本发明通过上述预取策略,最大程度地提高***的读命中率,同时也大大降低了随机读请求污染存储***中高速缓存的程度。

Description

一种在数据存储***中预取数据的方法
技术领域
本发明涉及计算机存储***性能的改进技术,具体来说是涉及一种在数据存储***中预取数据的方法。
背景技术
在改善存储***性能的研究中,磁盘阵列技术(RAID)是解决计算机外存I/O瓶颈问题的有效方法之一。而在众多用于提高磁盘阵列性能的方法当中,Cache技术则是一个普遍使用的重要方法。由于空间局部性好的Cache预读算法能够有效提高Cache读命中率,所以针对Cache预读算法的研究已有不少。
目前已经采用或提出的Cache预读算法有顺序预读算法、整磁道预读算法和TIP方法。而这些预读算法的侧重点都在于如何预取,而对于预取的策略问题却较少涉及或未详细分析。
IBM的专利6272590提出如下预取策略:如果当前读请求数据所在逻辑分条单元(N)相邻的分条单元(N-1)在Cache中命中或部分命中,则预取分条单元(N)到Cache中;否则不进行预取;在满足前述的前提下,如果该请求所在物理分条单元M相邻的物理分条单元(M-1)在Cache中命中或部分命中,则预取分条单元(M)和分条单元(M+1)到Cache中。
通过例子来说明Cache是如何针对主机读请求按照上述策略进行预取的。如图1所示,为磁盘数据分布示意图。其中,有两个分条分别标识0和1,每个分条上有两个数据分条单元,0~15扇区为一个分条单元,其余类推。
图2为读请求及相应的预取结果示意图,具体为:最初Cache为空,主机读请求为0~7扇区,此时Cache未找到与读请求逻辑地址相邻的分条单元,因此不做任何预取,只取0~7扇区,而未将分条单元90取满。主机读请求为16~23扇区,即逻辑分条单元92时,由于Cache中有逻辑相邻分条单元90,因此Cache将该分条单元92预取满。而在主机读请求为32~39扇区,即逻辑分条单元94时,由于Cache中有逻辑相邻分条单元92并且有物理相邻分条单元90,因此Cache将该分条单元94预取满,且预取相邻的物理分条单元98。
显然,上述现有专利技术属于顺序预读算法的一种,其是通过判断读请求的连续性,减少连续请求需要的预取数。由于该专利技术对主机读请求的类型判断只有顺序和非顺序的区别,因此无法对每种读请求采用更精确的预取策略。且该专利技术中针对主机读请求数据都预读整个分条单元,写入Cache,从而导致随机读请求污染Cache的程度比较高。
发明内容
本发明提出了一种在数据存储***中预取数据的方法,以解决现有技术中对主机读请求的类型判断不全面、预取精确不够而导致随机读请求污染Cache的程度较高的问题。
为此,本发明提供如下技术方案:
一种在数据存储***中预取数据的方法,其是在数据存储***中将数据存储磁盘中的数据预取到高速缓存,其中,该数据存储磁盘包含有若干个分条,每个分条又包含有若干个分条单元;该高速缓存包含有数据缓存和地址缓存;其中,所述方法包含有以下步骤:
向所述的数据存储***读请求数据;
确定该读请求的起始地址(LBA)、请求长度(LEN)以及该读请求所涉及的分条单元(N)或分条单元区域(N,N+1......N+m)(m为自然数);
判断该读请求数据在数据缓存或地址缓存的命中情况,再进一步判断与该读请求所属的分条单元(N)相邻的分条单元(N-1)在数据缓存或地址缓存的命中情况,以确定是否需要预取数据以及预取那些数据;
如果确定该读请求数据为连续数据,则从数据存储磁盘预取包含该读请求的分条单元(N)和与其相邻的分条单元(N+1),或包含该读请求的分条单元区域(N,N+1......N+m)和与其相邻的分条单元(N+m+1),到数据缓存;
如果确定该读请求数据为热点数据,则从数据存储磁盘预取包含该读请求的分条单元(N)到数据缓存。
其中,该方法还进一步包含有:
如果确定该读请求数据为随机数据,则从数据存储磁盘预取该读请求的地址到地址缓存。
所述的预取具体是指从数据存储磁盘中读取数据,并将其写到数据缓存。
其中,如果确定该读请求数据为连续数据,更具体是指:
如果该读请求的起始地址(LBA)与该读请求所在的分条单元(N)的起始地址对齐,当该读请求在数据缓存部分命中,或者在地址缓存命中,或者在两部分均未命中,则进一步当与该分条单元(N)相邻的分条单元(N-1)在数据缓存全部命中或在地址缓存命中,则从数据存储磁盘读满包含该读请求的分条单元(N)和与其相邻的分条单元(N+1),并写到数据缓存;
如果该读请求的起始地址(LBA)与该读请求所在的分条单元(N)的起始地址不对齐,当该读请求在地址缓存命中,则进一步当与该分条单元(N)相邻的分条单元(N-1)在数据缓存全部命中或在地址缓存命中,则从数据存储磁盘读满包含该读请求的分条单元(N)和与其相邻的分条单元(N+1),并写到数据缓存。
如果该读请求数据为连续数据,更具体是指:
如果该读请求的起始地址(LBA)与该读请求所涉及的分条单元区域(N,N+1......N+m)的起始地址对齐,当与该分条单元区域(N,N+1......N+m)相邻的分条单元(N-1)在数据缓存全部命中或在地址缓存命中,则从数据存储磁盘读满分条单元区域(N,N+1......N+m,N+m+1),并写到数据缓存;
如果该读请求的起始地址(LBA)与该读请求所涉及的分条单元区域(N,N+1......N+m)的起始地址不对齐,当该读请求在地址缓存命中,则进一步当与该分条单元区域(N,N+1......N+m)相邻的分条单元(N-1)在数据缓存全部命中或在地址缓存命中,则从数据存储磁盘读满分条单元区域(N,N+1......N+m,N+m+1),并写到数据缓存。
如果确定该读请求数据为热点数据,更具体是指:
如果该读请求的起始地址(LBA)与该读请求所在的分条单元(N)的起始地址对齐,当该读请求在数据缓存部分命中或在地址缓存命中,则进一步当与该分条单元(N)相邻的分条单元(N-1)在数据缓存部分命中,或在数据缓存或地址缓存均未命中,则从数据存储磁盘读满包含该读请求的分条单元(N),并写到数据缓存;
如果该读请求的起始地址(LBA)与该读请求所在的分条单元(N)的起始地址不对齐,则当该读请求在数据缓存部分命中,则从数据存储磁盘读满包含该读请求的分条单元(N),并写到数据缓存;
如果该读请求的起始地址(LBA)与该读请求所在的分条单元(N)的起始地址不对齐,当该读请求在地址缓存命中,则进一步当与该分条单元(N)相邻的分条单元(N-1)在数据缓存部分命中,或在数据缓存或地址缓存均未命中,则从数据存储磁盘读满包含该读请求的分条单元(N),并写到数据缓存。
如果确定该读请求数据为随机数据,更具体是指:
如果该读请求的起始地址(LBA)与该读请求所在的分条单元(N)的起始地址对齐,当该读请求在该数据缓存或地址缓存均未命中,则进一步当与该分条单元(N)相邻的分条单元(N-1)在数据缓存部分命中,或在数据缓存或地址缓存均未命中;则从数据存储磁盘读出该读请求的地址,并写到该地址缓存;
如果该读请求的起始地址(LBA)与该读请求所在的分条单元(N)的起始地址不对齐,当该读请求在该数据缓存或地址缓存均未命中,则从数据存储磁盘读出该读请求的地址,并写到该地址缓存。
所述的数据存储***更具体是指廉价磁盘冗余阵列RAID磁盘***。
所述的数据缓存采用最近最少使用(LRU)算法进行管理。
所述的地址缓存采用先进先出(FIFO)算法进行管理。
如果确定该读请求数据在数据缓存中全部命中,则不做预取操作。
另外,如果确定该读请求数据是热点非连续数据,则预取分条单元到数据缓存;
如果确定该读请求数据是一般连续数据,则预取分条到数据缓存;
如果确定该读请求数据是大量连续数据,则预取多个固定分条到数据缓存,如果每次的预取量随着数据连续性的增加而加大,则预取多个分条到数据缓存(Data Cache);
如果确定该读请求数据是极大量连续数据,则预取整个磁道到数据缓存。
本发明的主要目的在于提高存储***中高速缓存Cache的读效率,通过对主机读请求类型的精确判断,根据判断做出相应的预取策略:对于连续数据,可以做大量的预取,如若干个分条单元、若干个分条、或整个磁道;对于热点数据,可以做一定的预取,如分条单元或分条;对于非连续非热点的随机数据,为了避免污染高速缓存Cache,可以不写到数据缓存(Data Cache)而只是将其地址写到地址缓存(AddressCache),以便为其他读请求数据的预取处理。本发明通过上述预取策略,最大程度地提高***的读命中率,同时也大大降低了随机读请求污染存储***中高速缓存Cache的程度。
下面结合附图和具体实施例来详细描述本发明。
附图说明
图1是现有技术中磁盘数据分布示意图;
图2是针对图1的磁盘数据的读请求及相应的预取结果示意图;
图3是本发明所采用的存储***体系结构框图;
图4是本发明所采用的Cache结构示意图;
图5是本发明读处理的各种情形划分示意图。
具体实现方式
首先介绍一下本发明的***架构。本发明存储***架构是采用通用的***架构,如图3所示,主机1的读写请求经过光纤通道/SCSI总线到达阵列控制***2,阵列控制器2对读写请求进行一番处理,再通过光纤通道/SCSI总线交由相应磁盘3处理。其中,阵列控制***2包括虚线框中的四个模块,其功能简述如下:
目标器管理模块21:负责和主机操作***及Cache模块的接口,该模块接收来自主机的命令,进行相应的处理和转换后,转发至Cache模块继续处理;
Cache管理模块22:负责处理数据读写时内存块的管理和调度,如目标器模块发来一个读命令,Cache负责查找是否命中,若命中则直接返回给目标器模块;若没命中,则根据相应的算法给它分配内存块,再把命令交给RAID管理模块来处理;
RAID管理模块23:负责管理RAID中虚拟盘到物理盘的映射转换和接收及处理来自Cache的任务,负责整个RAID***的错误处理,包含对各种RAID级别的处理模块;
启动器管理模块24:负责接收来自RAID管理模块的命令,将其转换为具体的SCSI命令,并通过SCSI总线将其发给某个通道上的某个硬盘,然后由硬盘执行具体的SCSI命令从而完成任务。
本发明所述的高速缓存Cache采用如图4所示的结构。其是分为数据缓存(Data Cache)和地址缓存(Address Cache)。其中,地址Cache仅记录最近访问的地址,采用先进先出(FIFO:First In First Out)算法进行管理,即当地址缓存(Address Cache)空间超过给定值时,根据FIFO原则进行淘汰;而数据缓存(Data Cache)记录最近访问的地址和数据,采用最近最少使用(LRU:Least Recently Used)算法进行管理,即当数据Cache空间超过给定值时,根据LRU原则进行淘汰。
本发明根据Cache中的历史数据来判断主机读请求的类型,其判断标准大体分为两种:连续性和热点性。其中,连续数据是指主机请求是连续数据请求,热点数据指的是某段时间内频繁访问的数据。其中,极大量连续数据的大量连续,定义为存在满分条N,N+1...,N+m,m值大于一定值时,认为是大量连续。而对于主机读请求的分类情况以及针对每种情况所采用的预取策略,如图5所示,详细描述如下:
将主机读请求按照分条单元对齐方式以及读请求涉及的分条单元区域进行分类,如图5所示分为四个类别。确定该读请求的起始地址(LBA)、请求长度(LEN)以及该读请求所属的分条单元(N)或所涉及的分条单元区域(N,N+1......N+m)(m为自然数)。
类别一、对于读请求所属单个分条单元(N),并且该读请求的起始地址(LBA)与该分条单元(N)的起始地址对齐的情况,进一步细化为以下3种情形:
1、当主机读请求经查找后在数据缓存(Data Cache)全部命中,则直接从数据存储磁盘中将该读请求数据读出,不预取数据。
2、当主机读请求经查找后在数据缓存(Data Cache)部分命中,或在地址缓存(Address Cache)命中,则需进一步判断与该分条单元(N)相邻的分条单元(N-1)是否在数据缓存(Data Cache)或地址缓存(Address Cache)命中,其情况为:
1)若该分条单元(N-1)在数据缓存(Data Cache)全部命中或在地址缓存(Address Cache)命中,则***认为该读请求是连续读请求,要进行大量数据的预取,即从数据存储磁盘(M)预取包含该读请求在内的分条单元(N)和与其相邻的分条单元(N+1),并写到数据缓存(DataCache)中,将其数据和对应的地址均记录下来;
2)若该分条单元(N-1)在数据缓存(Data Cache)部分命中,或在数据缓存(Data Cache)或地址缓存(Address Cache)均未命中,则***认为该读请求是热点数据读请求,要进行一定数据的预取,即从数据存储磁盘预取包含该读请求在内的分条单元(N)并写到数据缓存(Data Cache)中,将其数据和对应的地址均记录下来。
3、当主机读请求经查找后在数据缓存(Data Cache)或地址缓存(Address Cache)中均未命中,则需进一步判断与该分条单元(N)相邻的分条单元(N-1)是否在数据缓存(Data Cache)或地址缓存(AddressCache)命中,其情况为:
1)、若该分条单元(N-1)在数据缓存(Data Cache)全部命中或在地址缓存(Address Cache)命中,则***认为该读请求是连续读请求,要进行大量数据的预取,即从数据存储磁盘预取包含该读请求在内的分条单元(N)和与其相邻的分条单元(N+1),并写到数据缓存(Data Cache)中,将其数据和对应的地址均记录下来;
2)、若该分条单元(N-1)在数据缓存(Data Cache)部分命中,或在数据缓存(Data Cache)或地址缓存(Address Cache)均未命中,则***认为该读请求是随机数据读请求,只需要从数据存储磁盘读出该读请求的地址,并写到该地址缓存(Address Cache)。
类别二、对于读请求所属单个分条单元(N),并且该读请求的起始地址(LBA)与该分条单元(N)的起始地址不对齐,而是该读请求的起始地址(LBA)在该分条单元(N)之内的情况,进一步细化为以下4种情形:
1、当主机读请求经查找后在数据缓存(Data Cache)全部命中,则直接从数据存储磁盘中将该读请求数据读出,不再做预取数据的操作。
2、当主机读请求经查找后在数据缓存(Data Cache)部分命中,则***认为该读请求是热点数据读请求,要进行一定数据的预取,即从数据存储磁盘预取包含该读请求在内的分条单元(N)并写到数据缓存(DataCache)中,将其数据和对应的地址均记录下来。
3、当主机读请求经查找后在地址缓存(Address Cache)命中,则需进一步判断与该分条单元(N)相邻的分条单元(N-1)是否在数据缓存(Data Cache)或地址缓存(Address Cache)命中,如果该分条单元(N-1)在数据缓存(Data Cache)全部命中或在地址缓存(Address Cache)命中,则***认为该读请求为连续读请求,要进行大量数据的预取,即从数据存储磁盘预取包含该读请求在内的分条单元(N)和与其相邻的分条单元(N+1),并写到数据缓存(Data Cache)中,将其数据和对应的地址均记录下来;否则,***认为该读请求是热点数据读请求,要进行一定数据的预取,即从数据存储磁盘预取包含该读请求在内的分条单元(N)并写到数据缓存(Data Cache)中,将其数据和对应的地址均记录下来。
4、当主机读请求经查找后在数据缓存(Data Cache)或地址缓存(Address Cache)均未命中,则***认为该读请求是随机数据读请求,只需要则从数据存储磁盘读出该读请求的地址,并写到该地址缓存(Address Cache)。
类别三、对于读请求涉及分条单元区域(N,N+1......N+m)(m为自然数),并且该读请求的起始地址(LBA)与该分条单元区域(N,N+1......N+m)的起始地址对齐的情况,进一步细化为以下2种情形:
1、当主机读请求经查找后在数据缓存(Data Cache)全部命中,则直接从数据存储磁盘中将该读请求数据读出,不再做预取数据的操作。
2、当与主机读请求相邻的分条单元(N-1)经查找后在数据缓存(DataCache)全部命中,或在地址缓存(Address Cache)命中,则***认为该读请求为连续读请求,要进行大量数据的预取,即从数据存储磁盘预取包含该读请求在内的分条单元区域(N,N+1......N+m),同时还要从数据存储磁盘预取分条单元(N+m+1),并写到数据缓存(Data Cache)中,将其数据和对应的地址均记录下来;否则只从数据存储磁盘预取包含该读请求在内的分条单元区域(N,N+1......N+m),并写到数据缓存(DataCache)中,将其数据和对应的地址均记录下来。
类别四、对于读请求涉及分条单元区域(N,N+1......N+m)(m为自然数),并且该读请求的起始地址(LBA)与该分条单元区域(N,N+1......N+m)的起始地址不对齐的情况,进一步细化为以下2种情形:
1、当主机读请求经查找后在数据缓存(Data Cache)全部命中,则直接从数据存储磁盘中将该读请求数据读出,不再做预取数据的操作。
2、当主机读请求涉及分条单元区域(N,N+1......N+m)之内的分条单元(N)在地址缓存(Address Cache)中命中,若与该分条单元区域(N,N+1......N+m)相邻的分条单元(N-1)经查找后在数据缓存(DataCache)全部命中,或在地址缓存(Address Cache)命中,则***认为该读请求为连续读请求,要进行大量数据的预取,即从数据存储磁盘预取包含该读请求在内的分条单元区域(N,N+1......N+m),同时还要从数据存储磁盘预取分条单元(N+m+1),并写到数据缓存(Data Cache)中,将其数据和对应的地址均记录下来;否则只从数据存储磁盘预取包含该读请求在内的分条单元区域(N,N+1......N+m),并写到数据缓存(DataCache)中,将其数据和对应的地址均记录下来。
为了简化起见,上述四种情形的处理只是针对读请求的类型进行判断,并根据判断请求类型采用预取分条单元的策略。而在具体实现时,是可以针对不同的读请求类型采用不同的预取策略,下面针对本发明的另一实施例进行简单描述,其中,读请求类型的判断仍然按照前述实施例的方法,只是针对不同的读请求类型采用另一种预取策略,其具体描述为:
对于随机数据的读请求,不进行预取操作;
对于热点非连续数据的读请求,预取分条单元到数据缓存(DataCache);
对于一般连续数据的读请求,预取分条到数据缓存(Data Cache);
对于大量连续数据的读请求(大量连续定义为:存在满分条N,N+1...N+m,m值大于一定值),预取多个固定分条到数据缓存(DataCache);如果每次的预取量随着数据连续性的增加而加大,则预取多个分条到数据缓存(Data Cache);
对于极大量连续数据的读请求,预取整个磁道到数据缓存(DataCache)。
本发明通过对主机读请求类型的精确判断,并根据判断做出相应的预取策略:对于连续数据,可以做大量的预取,如若干个分条单元、若干个分条、或整个磁道;对于热点数据,可以做一定的预取,如分条单元或分条;对于非连续非热点的随机数据,为了避免污染高速缓存Cache,可以不写到数据缓存(Data Cache)而只是将其地址写到地址缓存(Address Cache),以便为其他读请求数据的预取处理。本发明通过上述预取策略,最大程度地提高***的读命中率,同时也大大降低了随机读请求污染存储***中高速缓存Cache的程度。

Claims (12)

1、一种在数据存储***中预取数据的方法,其特征在于,所述方法包含有以下步骤:
向所述的数据存储***读请求数据;
确定该读请求数据的起始地址(LBA)、请求长度(LEN)以及该读请求所涉及的分条单元(N)或分条单元区域(N,N+1……N+m)(m为自然数);
判断该读请求数据在数据缓存或地址缓存的命中情况,再进一步判断与该读请求所属的分条单元(N)相邻的分条单元(N-1)在数据缓存或地址缓存的命中情况,以确定是否需要预取数据以及预取那些数据;
如果确定该读请求数据为连续数据,则从数据存储磁盘预取包含该读请求的分条单元(N)和与其相邻的分条单元(N+1),或包含该读请求的分条单元区域(N,N+1……N+m)和与其相邻的分条单元(N+m+1),到数据缓存;
如果确定该读请求数据为热点数据,则从数据存储磁盘预取包含该读请求的分条单元(N)到数据缓存。
2、如权利要求1所述的一种在数据存储***中预取数据的方法,其特征在于,该方法还进一步包含有:
如果确定该读请求数据为随机数据,则从数据存储磁盘预取该读请求的地址到地址缓存。
3、如权利要求1或2所述的一种在数据存储***中预取数据的方法,其特征在于:所述的预取具体是指从数据存储磁盘中读取数据,并将其写到数据缓存。
4、如权利要求1所述的一种在数据存储***中预取数据的方法,其特征在于,如果确定该读请求数据为连续数据,更具体是指:
如果该读请求的起始地址(LBA)与该读请求所在的分条单元(N)的起始地址对齐,当该读请求在数据缓存部分命中,或者在地址缓存命中,或者在两部分均未命中,则进一步当与该分条单元(N)相邻的分条单元(N-1)在数据缓存全部命中或在地址缓存命中,则从数据存储磁盘读满包含该读请求的分条单元(N)和与其相邻的分条单元(N+1),并写到数据缓存;
如果该读请求的起始地址(LBA)与该读请求所在的分条单元(N)的起始地址不对齐,当该读请求在地址缓存命中,则进一步当与该分条单元(N)相邻的分条单元(N-1)在数据缓存全部命中或在地址缓存命中,则从数据存储磁盘读满包含该读请求的分条单元(N)和与其相邻的分条单元(N+1),并写到数据缓存。
5、如权利要求4所述的一种在数据存储***中预取数据的方法,其特征在于,如果确定该读请求数据为连续数据,更具体是指:
如果该读请求的起始地址(LBA)与该读请求所涉及的分条单元区域(N,N+1……N+m)的起始地址对齐,当与该分条单元区域(N,N+1……N+m)相邻的分条单元(N-1)在数据缓存全部命中或在地址缓存命中,则从数据存储磁盘读满分条单元区域(N,N+1……N+m,N+m+1),并写到数据缓存;
如果该读请求的起始地址(LBA)与该读请求所涉及的分条单元区域(N,N+1……N+m)的起始地址不对齐,当该读请求在地址缓存命中,则进一步当与该分条单元区域(N,N+1……N+m)相邻的分条单元(N-1)在数据缓存全部命中或在地址缓存命中,则从数据存储磁盘读满分条单元区域(N,N+1……N+m,N+m+1),并写到数据缓存。
6、如权利要求1所述的一种在数据存储***中预取数据的方法,其特征在于,如果确定该读请求数据为热点数据,更具体是指:
如果该读请求的起始地址(LBA)与该读请求所在的分条单元(N)的起始地址对齐,当该读请求在数据缓存部分命中或在地址缓存命中,则进一步当与该分条单元(N)相邻的分条单元(N-1)在数据缓存部分命中,或在数据缓存或地址缓存均未命中,则从数据存储磁盘读满包含该读请求的分条单元(N),并写到数据缓存;
如果该读请求的起始地址(LBA)与该读请求所在的分条单元(N)的起始地址不对齐,则当该读请求在数据缓存部分命中,则从数据存储磁盘读满包含该读请求的分条单元(N);并写到数据缓存;
如果该读请求的起始地址(LBA)与该读请求所在的分条单元(N)的起始地址不对齐,当该读请求在地址缓存命中,则进一步当与该分条单元(N)相邻的分条单元(N-1)在数据缓存部分命中,或在数据缓存或地址缓存均未命中,则从数据存储磁盘读满包含该读请求的分条单元(N),并写到数据缓存。
7、如权利要求2所述的一种在数据存储***中预取数据的方法,其特征在于,如果确定该读请求数据为随机数据,更具体是指:
如果该读请求的起始地址(LBA)与该读请求所在的分条单元(N)的起始地址对齐,当该读请求在该数据缓存或地址缓存均未命中,则进一步当与该分条单元(N)相邻的分条单元(N-1)在数据缓存部分命中,或在数据缓存或地址缓存均未命中;则从数据存储磁盘读出该读请求的地址,并写到该地址缓存;
如果该读请求的起始地址(LBA)与该读请求所在的分条单元(N)的起始地址不对齐,当该读请求在该数据缓存或地址缓存均未命中,则从数据存储磁盘读出该读请求的地址,并写到该地址缓存。
8、如权利要求4或5或6或7所述的一种在数据存储***中预取数据的方法,其特征在于:如果确定该读请求数据在数据缓存中全部命中,则不做预取操作。
9、如权利要求1所述的一种在数据存储***中预取数据的方法,其特征在于,该方法还包含有:
如果确定该读请求数据是热点非连续数据,则预取分条单元到数据缓存;
如果确定该读请求数据是连续数据,则预取分条到数据缓存;
如果确定该读请求数据是大量连续数据,则预取多个固定分条到数据缓存,如果每次的预取量随着数据连续性的增加而加大,则预取多个分条到数据缓存(Data Cache);
如果确定该读请求数据是极大量连续数据,则预取整个磁道到数据缓存。
10、如权利要求1所述的一种在数据存储***中预取数据的方法,其特征在于:所述的数据存储***更具体是指廉价磁盘冗余阵列RAID磁盘***。
11、如权利要求1所述的一种在数据存储***中预取数据的方法,其特征在于:所述的数据缓存采用最近最少使用(LRU)算法进行管理。
12、如权利要求1所述的一种在数据存储***中预取数据的方法,其特征在于:所述的地址缓存采用先进先出(FIFO)算法进行管理。
CNB2004100041188A 2004-02-07 2004-02-07 一种在数据存储***中预取数据的方法 Expired - Lifetime CN100428193C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2004100041188A CN100428193C (zh) 2004-02-07 2004-02-07 一种在数据存储***中预取数据的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2004100041188A CN100428193C (zh) 2004-02-07 2004-02-07 一种在数据存储***中预取数据的方法

Publications (2)

Publication Number Publication Date
CN1652091A true CN1652091A (zh) 2005-08-10
CN100428193C CN100428193C (zh) 2008-10-22

Family

ID=34867626

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100041188A Expired - Lifetime CN100428193C (zh) 2004-02-07 2004-02-07 一种在数据存储***中预取数据的方法

Country Status (1)

Country Link
CN (1) CN100428193C (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100405777C (zh) * 2006-07-27 2008-07-23 清华大学 以太网存储区域网络中基于目标器内存设备的缓存方法
CN101853303A (zh) * 2010-06-02 2010-10-06 深圳市迪菲特科技股份有限公司 一种基于语义智能存储方法及***
CN102073461A (zh) * 2010-12-07 2011-05-25 成都市华为赛门铁克科技有限公司 输入输出请求调度方法、存储控制器和存储阵列
CN102298508A (zh) * 2011-09-07 2011-12-28 记忆科技(深圳)有限公司 基于流的固态硬盘预读取的方法及装置
WO2012109882A1 (zh) * 2011-08-05 2012-08-23 华为技术有限公司 数据读取的方法和存储器控制器
CN102768645A (zh) * 2012-06-14 2012-11-07 国家超级计算深圳中心(深圳云计算中心) 混合缓存的固态硬盘预取方法和固态硬盘ssd
WO2013152648A1 (zh) * 2012-04-12 2013-10-17 腾讯科技(深圳)有限公司 提高应用程序运行速度的方法、装置及终端
CN103645995A (zh) * 2013-12-04 2014-03-19 华为技术有限公司 写数据的方法及装置
CN104090728A (zh) * 2014-07-02 2014-10-08 浙江宇视科技有限公司 一种动态调整存储设备Cache读写命令数的方法和装置
CN104156323A (zh) * 2014-08-07 2014-11-19 浪潮(北京)电子信息产业有限公司 一种高速缓冲存储器的数据块长度自适应读取方法及装置
CN105808451A (zh) * 2014-12-29 2016-07-27 华为技术有限公司 一种数据缓存方法以及相关装置
CN106406981A (zh) * 2016-09-18 2017-02-15 深圳市深信服电子科技有限公司 一种读、写磁盘数据的方法及虚拟机监视器
CN106569961A (zh) * 2016-10-31 2017-04-19 珠海市微半导体有限公司 一种基于访存地址连续性的cache模块及其访存方法
CN106980577A (zh) * 2017-03-20 2017-07-25 华为机器有限公司 输入输出处理方法、装置及终端
WO2018201909A1 (en) * 2017-05-04 2018-11-08 Huawei Technologies Co., Ltd. Processing units having triangular load protocol
WO2020038466A1 (zh) * 2018-08-24 2020-02-27 华为技术有限公司 数据预取方法及装置
CN111105724A (zh) * 2019-11-30 2020-05-05 苏州浪潮智能科技有限公司 智能存储***
CN111857587A (zh) * 2020-07-15 2020-10-30 济南浪潮数据技术有限公司 一种在存储***缓存装置中基于磁道地址的命中检测方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2273798A (en) * 1992-12-22 1994-06-29 Ibm Cache system for disk array.
US6832296B2 (en) * 2002-04-09 2004-12-14 Ip-First, Llc Microprocessor with repeat prefetch instruction

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100405777C (zh) * 2006-07-27 2008-07-23 清华大学 以太网存储区域网络中基于目标器内存设备的缓存方法
CN101853303A (zh) * 2010-06-02 2010-10-06 深圳市迪菲特科技股份有限公司 一种基于语义智能存储方法及***
CN102073461A (zh) * 2010-12-07 2011-05-25 成都市华为赛门铁克科技有限公司 输入输出请求调度方法、存储控制器和存储阵列
CN102073461B (zh) * 2010-12-07 2012-07-04 成都市华为赛门铁克科技有限公司 输入输出请求调度方法、相关装置和存储阵列
WO2012109882A1 (zh) * 2011-08-05 2012-08-23 华为技术有限公司 数据读取的方法和存储器控制器
CN102298508B (zh) * 2011-09-07 2014-08-06 记忆科技(深圳)有限公司 基于流的固态硬盘预读取的方法及装置
CN102298508A (zh) * 2011-09-07 2011-12-28 记忆科技(深圳)有限公司 基于流的固态硬盘预读取的方法及装置
WO2013152648A1 (zh) * 2012-04-12 2013-10-17 腾讯科技(深圳)有限公司 提高应用程序运行速度的方法、装置及终端
US9256421B2 (en) 2012-04-12 2016-02-09 Tencent Technology (Shenzhen) Company Limited Method, device and terminal for improving running speed of application
CN102768645B (zh) * 2012-06-14 2016-01-20 国家超级计算深圳中心(深圳云计算中心) 混合缓存的固态硬盘预取方法和固态硬盘ssd
CN102768645A (zh) * 2012-06-14 2012-11-07 国家超级计算深圳中心(深圳云计算中心) 混合缓存的固态硬盘预取方法和固态硬盘ssd
CN103645995A (zh) * 2013-12-04 2014-03-19 华为技术有限公司 写数据的方法及装置
CN103645995B (zh) * 2013-12-04 2016-12-07 华为技术有限公司 写数据的方法及装置
CN104090728A (zh) * 2014-07-02 2014-10-08 浙江宇视科技有限公司 一种动态调整存储设备Cache读写命令数的方法和装置
CN104090728B (zh) * 2014-07-02 2017-07-14 浙江宇视科技有限公司 一种动态调整存储设备Cache读写命令数的方法和装置
CN104156323A (zh) * 2014-08-07 2014-11-19 浪潮(北京)电子信息产业有限公司 一种高速缓冲存储器的数据块长度自适应读取方法及装置
CN104156323B (zh) * 2014-08-07 2017-10-20 浪潮(北京)电子信息产业有限公司 一种高速缓冲存储器的数据块长度自适应读取方法及装置
CN105808451A (zh) * 2014-12-29 2016-07-27 华为技术有限公司 一种数据缓存方法以及相关装置
CN105808451B (zh) * 2014-12-29 2019-12-06 华为技术有限公司 一种数据缓存方法以及相关装置
CN106406981A (zh) * 2016-09-18 2017-02-15 深圳市深信服电子科技有限公司 一种读、写磁盘数据的方法及虚拟机监视器
CN106569961A (zh) * 2016-10-31 2017-04-19 珠海市微半导体有限公司 一种基于访存地址连续性的cache模块及其访存方法
CN106569961B (zh) * 2016-10-31 2023-09-05 珠海市一微半导体有限公司 一种基于访存地址连续性的cache模块及其访存方法
CN106980577A (zh) * 2017-03-20 2017-07-25 华为机器有限公司 输入输出处理方法、装置及终端
CN106980577B (zh) * 2017-03-20 2020-04-28 华为机器有限公司 输入输出处理方法、装置及终端
WO2018201909A1 (en) * 2017-05-04 2018-11-08 Huawei Technologies Co., Ltd. Processing units having triangular load protocol
US11334355B2 (en) 2017-05-04 2022-05-17 Futurewei Technologies, Inc. Main processor prefetching operands for coprocessor operations
WO2020038466A1 (zh) * 2018-08-24 2020-02-27 华为技术有限公司 数据预取方法及装置
US11669453B2 (en) 2018-08-24 2023-06-06 Huawei Technologies Co., Ltd. Data prefetching method and apparatus
CN111105724A (zh) * 2019-11-30 2020-05-05 苏州浪潮智能科技有限公司 智能存储***
CN111857587A (zh) * 2020-07-15 2020-10-30 济南浪潮数据技术有限公司 一种在存储***缓存装置中基于磁道地址的命中检测方法

Also Published As

Publication number Publication date
CN100428193C (zh) 2008-10-22

Similar Documents

Publication Publication Date Title
CN1652091A (zh) 一种在数据存储***中预取数据的方法
US9135181B2 (en) Management of cache memory in a flash cache architecture
CN1148658C (zh) 利用高速缓存器管理raid存储***的方法和***
Chen et al. Hystor: Making the best use of solid state drives in high performance storage systems
CN101038532A (zh) 数据存储装置及其方法
US8312217B2 (en) Methods and systems for storing data blocks of multi-streams and multi-user applications
US20090210620A1 (en) Method to handle demand based dynamic cache allocation between SSD and RAID cache
US9104578B2 (en) Defining address ranges used to cache speculative read data
CN1499382A (zh) 廉价冗余磁盘阵列***中高效高速缓存的实现方法
CN1934529A (zh) 海量存储加速器
CN107423229B (zh) 一种面向页级ftl的缓冲区改进方法
CN1955947A (zh) 一种高速缓存失效的处理器访存指令处理方法
CN1421003A (zh) 对盘驱动事务处理采用存取日志
CN1851635A (zh) 对廉价磁盘冗余阵列进行读写操作的方法和***
CN1545030A (zh) 基于磁盘特征的数据分布动态映射的方法
CN1896972A (zh) 用于虚实地址变换及读写高速缓冲存储器的方法及装置
CN107590084A (zh) 一种基于分类策略的页级缓冲区改进方法
CN101034375A (zh) 计算机存储***
Wu et al. OSPADA: One-shot programming aware data allocation policy to improve 3D NAND flash read performance
Wu et al. Improving performance for flash-based storage systems through GC-aware cache management
KR20230055978A (ko) 블록 수정 특성을 갖는 메모리의 데이터에 대해 순차 액세스하는 장치, 시스템, 및 그것의 동작 방법
Liu et al. ROCO: Using a solid state drive cache to improve the performance of a host-aware shingled magnetic recording drive
US9959052B1 (en) Media based cache for data storage device
KR101155542B1 (ko) Ssd 장치의 매핑 테이블 관리 방법
CN1704910A (zh) 一种磁盘阵列结构中的写处理方法

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
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20081022