一种基于闪存的自适应缓冲区置换方法

文档序号:6773471阅读:180来源:国知局
专利名称:一种基于闪存的自适应缓冲区置换方法
技术领域
本发明涉及一种缓冲区置换方法,特别是关于一种基于闪存的自适应缓冲区置换 方法。
背景技术
在典型的计算机系统中包含两层存储器,分别是主存和辅存。主存比辅存的存取 速度快很多。假定用磁盘作辅存,由于磁盘的读写代价基本相等,因此现有的缓冲区管理 策略的目标就是最小化缓冲区的缺页率。缺页率反映了必须从辅存读入缓冲区的页的比 例。比如,2Q(双队列方法)、ARC(自适应的置换方法)、LIRS (低内部访问最近集合方法)、 CLOCK(时钟方法)、LRU-K(k个最近最少使用方法)、FBR(基于频率的置换方法)和LRFU(最 近及最不频繁使用方法)等方法主要是启发式的提高LRU(最近最少使用策略)方法的性 能,它们是根据数据页的寿命,或者平衡数据页的寿命和频率来减少缺页率。但是,由于闪 存的读写代价不对称,当以上的假设应用于闪存上时是不成立的。因此,对于基于闪存的 缓冲区管理来说,就增加了另一层面的考虑因素。有着不同读写代价的缓冲区置换问题可 模拟成加权的缓冲区问题,其目的是最小化请求序列的总的代价。针对这种问题,在“New results on server problems,SIAM J. Discrete Math. , vol. 4,no. 2, pp.172-181,1991.“ 一文中提出了复杂度为0(sn2)的最优的离线方法,这个问题可归结为最小代价最大流问题 进行求解。但是,由于需要先验的知道完整的请求序列,因此这个最优的方法需要占用大量 的时间和空间资源。对于在线的方法,不可能提前知道任何未来的请求。最近,研究者已经提出了许多 在线的基于闪存的缓冲区管理方法。考虑闪存的缓冲区策略(FAB)维护了一个块层的LRU 链表,属于同一擦除块的页链接到同一块中。当命中块中的一个页时,包含这个页的整个块 都移动到LRU链表的头部。当发生缺页时,有着最多页数的块将被选择进行置换,在这个块 中的所有脏页都将写回闪存。FAB主要用在便携式媒体播放器上,在这种应用场景下,多数 的写请求都是顺序的。在"Bplru :A buffer management scheme for improving random writes in flash storage, in FAST, 2008, pp. 239-252. ”一文中的提出的 BPLRU ( ±夬填充 最近最少使用方法)也维护了一个块层的LRU链表,与FAB不同的是,BPLRU使用SSD (固 态硬盘)内部的RAM作为缓冲区,将随机写变成顺序写来提高写操作的效率,并能减少擦 除操作的次数。然而,这种方法并不能真正减少主存缓冲区的写请求的次数。在“CflrU:a replacement algorithm for flash memory, in CASES,2006,pp. 234-241. ” 一文中提出的 CFLRU (干净页优先最近最少使用方法)是利用闪存读写性能不对称性提出一种优先置换 只读页的缓冲区策略,这种策略假设对闪存的进行写操作的代价很高,远远大于对闪存的 读代价。如图1所示,其中C为干净页,D为脏页,CFLRU的基本思想是将LRU链表分成两个 部分工作区和置换区。每当缺页发生,如果在置换区中存在只读的页,此策略就会从中选 择最近最少使用的只读页进行置换。只有当置换区中没有只读页时,才选择链表尾部的脏 页进行置换,由参数w表示置换区的大小。与LRU策略相比,CFLRU在很大程度上减少了对闪存的写操作。但是,以上方法的主要不足在于1、针对磁盘设计的缓冲区策略假定所有对辅存 的物理操作有着相同的存取代价,因此无法利用闪存读速度快的优势,并且无法避免闪存 写操作代价高这个固有缺陷;2、针对闪存设计的缓冲区策略假设闪存的读代价与昂贵的写 操作代价相比是可以忽略的,这与实际的情况不符。3、针对闪存设计的缓冲区策略都没有 考虑不同的闪存的读写代价不对称性的差异,只是针对某一款闪存设计缓冲区策略。4、针 对闪存设计的缓冲区策略都没有考虑频繁访问与仅访问一次的脏页的区别。

发明内容
针对上述问题,本发明的目的是提供一种能提高系统性能、适应各种闪存及各种 存取模式的基于闪存的自适应缓冲区置换方法。为实现上述目的,本发明采取以下技术方案一种基于闪存的自适应缓冲区置换 方法,其包括如下步骤(1)采用数据页的组织方式为通过判断缓冲区中的页是否被修改 过,分别存储到只读链表和脏页链表中,再将只读链表划分成两个链表Lct和!^,且Lct η Lcb =Φ ;脏页链表划分成两个链表Ldt和Ldb,且Ldt Π Ldb = Φ ;参数δ c和δ D分别代表链表 Lcb和链表Ldb的大小;其中,链表Lct用来存放频繁访问的只读的页,链表Lra用来存放一次 访问的只读的页以及曾被频繁访问,但最近很长时间没有被访问的只读页,链表Ldt用来存 放频繁访问的脏页,Lcb用来存放一次访问的脏页以及曾被频繁访问,但最近很长时间没有 被访问的脏页;(2)当CPU发出请求的数据页被命中,则判断数据页是否在只读链表中;(3) 数据页在只读链表中,若对该数据页的操作类型是读操作,则把数据页移动到链表Lct的最 近最多使用端;若对该数据页的操作类型是写操作,则将数据页移动到脏页链表Ldb的最近 最多使用端;并分别按照参数S。和、调整链表Lcb和链表Ldb的大小;(4)数据页在脏页 链表中,则将数据页移动到脏页链表Ldt的最近最多使用端,按照参数δ D调整链表Ldb的大 小;( 当CPU发出请求的数据页没有命中,对该数据页进行缺页处理,按照代价自适应的 从两个链表中选择页进行置换,能适应各种闪存以及各种存取模式。所述步骤(5)中,将对所述内存缓冲区的存取操作称为逻辑操作,对所述闪存的 存取操作称为物理操作,则在缺页时对所述的数据页进行置换的步骤如下①开始运行前 参数Se= δΒ = 0,在开始状态内存缓冲区不满,当发生缺页时,将存取的数据页读入内存, 并增加物理操作计数;判断对数据页的操作类型,若是读操作,则将数据页插入到链表Lra 的最近最多使用端;若是写操作,则将数据页插入到链表Ldb的最近最多使用端,最后按照 参数\和、的值调整链表Lra或链表Ldb的大小;②当发生缺页时,若内存缓冲区满,则 从内存缓冲区中根据置换代价从只读链表或脏页链表的最近最少使用端选择一个数据页 进行置换;③若被置换的数据页是被修改过的,则将该数据页写回闪存后,再将该数据页从 内存缓冲区中删除;若被置换的数据页是只读的页,则将此页直接从内存缓冲区中删除,再 从闪存存取新的请求数据页;数据页置换时,利用镜像缓冲区来记录内存缓冲区中被置换 的数据页的访问历史;④如果数据页的页号在镜像缓冲区中,则将参数S。或值增加 1,从闪存存取数据页,并根据对数据页的操作类型是读操作或写操作,将其插入到链表Lct 或链表Ldt的最近最多使用端,调整链表L。b或链表Ldb的大小;⑤如果数据页的页号不在镜 像缓冲区中,从闪存存取数据页,并根据对数据页的操作类型是读操作或是写操作,将其插入到链表Lra或链表Ldb的最近最多使用端,最后调整链表Lcb或链表Ldb的长大小。 所述镜像缓冲区划分成两个链表Lqi和Ldh,分别用来存放从所述只读链表和脏页 链表中被置换的只访问一次的页的页号,且ILQI U Ldh| = s,s为内存缓冲区中最多能存放 的数据页数。所述数据页根据置换代价进行置换时,采用结合物理操作和逻辑操作的代价 计算方法来计算所述只读链表的代和所述脏页链表的代价C/-D的值假定对数据页 的存取是相互独立的,缓冲区最多存放s个数据页,η是被处理文件中数据页的个数, 则对某个数据页的逻辑操作在缓冲区中命中的概率是s/n,而一个逻辑操作被转换为物 理操作的概率是(1 -s/n),则代价C4和Cld的值分别为CLc =(RLc-(\~s/n) + Mhc )-Cr, CLd =(RLd-{\-sln) + MLD)-{Cr+Cw),其中,/ 4表示链表Lc中逻辑操作的次数;表示链 表Ld中逻辑操作的次数表示链表L。中物理操作的次数表示链表Ld中物理操作 的次数。本发明由于采取以上技术方案,其具有以下优点1、本发明由于采用基于闪存的 自适应缓冲区置换方法与其他基于闪存的数据库系统的缓冲区置换方法相比,本发明能根 据不同性能的闪存进行自适应的策略调整,因此可以应用到不同的闪存硬盘上,并能获得 比其他缓冲区方法更好的性能。2、本发明在命中率不下降的前提下,能减少对闪存的写操 作,减少了对闪存的磨损并提高了系统的性能。3、本发明能很好的处理序列访问模式和长 循环访问模式,从而与其他基于闪存提出的的缓冲区管理方法相比,能取得更好的性能,适 应各种闪存及各种存取模式。本发明可以广泛应用于缓冲区置换方法中。


图1是现有技术中的干净页优先最近最少使用置换方法示意图;图2是本发明的自适应的基于代价的缓冲区置换方法结构示意图;图3是本发明的自适应的基于代价的缓冲区置换方法的总体流程示意图;图4是本发明的自适应的基于代价的缓冲区置换方法在发生缺页时的流程示意 图。
具体实施例方式下面结合附图和实施例对本发明进行详细的描述。如图2所示,本发明采用的缓冲区中数据页的组织方式为缓冲区中的数据页按 照是否被修改过,分别存储到两个不同的链表中,分别是只读链表L。和脏页链表LD,其中, 只读链表L。表示用来存放只读的页,脏页链表Ld表示用来存放修改过的页。若缓冲区满, 假定内存缓冲区中最多能放s个页,那么|Le U Ld| = s与!^ Π Ld= Φ同时成立。相似 的,将只读链表Lc划分成链表LeT和链表LeB两个链表,并且链表
权利要求
1.一种基于闪存的自适应缓冲区置换方法,其包括如下步骤(1)采用数据页的组织方式为通过判断缓冲区中的页是否被修改过,分别存储到只 读链表和脏页链表中,再将只读链表划分成两个链表1^和Lffl,且LeT η Lcb = Φ ;脏页链表 划分成两个链表Ldt和Ldb,且Ldt η Ldb = Φ ;参数δ c和δ D分别代表链表Lcb和链表Ldb的 大小;其中,链表Lct用来存放频繁访问的只读的页,链表Lra用来存放一次访问的只读的页 以及曾被频繁访问,但最近很长时间没有被访问的只读页,链表Ldt用来存放频繁访问的脏 页,Lra用来存放一次访问的脏页以及曾被频繁访问,但最近很长时间没有被访问的脏页;(2)当CPU发出请求的数据页被命中,则判断数据页是否在只读链表中;(3)数据页在只读链表中,若对该数据页的操作类型是读操作,则把数据页移动到链表 Lct的最近最多使用端;若对该数据页的操作类型是写操作,则将数据页移动到脏页链表Ldb 的最近最多使用端;并分别按照参数S。和、调整链表Lra和链表Ldb的大小;(4)数据页在脏页链表中,则将数据页移动到脏页链表Ldt的最近最多使用端,按照参 数δ D调整链表Ldb的大小;(5)当CPU发出请求的数据页没有命中,对该数据页进行缺页处理,按照代价自适应的 从两个链表中选择页进行置换,能适应各种闪存以及各种存取模式。
2.如权利要求1所述的一种基于闪存的自适应缓冲区置换方法,其特征在于所述步 骤(5)中,将对所述内存缓冲区的存取操作称为逻辑操作,对所述闪存的存取操作称为物 理操作,则在缺页时对所述的数据页进行置换的步骤如下①开始运行前参数S。=δΒ = 0,在开始状态内存缓冲区不满,当发生缺页时,将存取 的数据页读入内存,并增加物理操作计数;判断对数据页的操作类型,若是读操作,则将数 据页插入到链表Lcb的最近最多使用端;若是写操作,则将数据页插入到链表Ldb的最近最 多使用端,最后按照参数S。和S D的值调整链表Lcb或链表Ldb的大小;②当发生缺页时,若内存缓冲区满,则从内存缓冲区中根据置换代价从只读链表或脏 页链表的最近最少使用端选择一个数据页进行置换;③若被置换的数据页是被修改过的,则将该数据页写回闪存后,再将该数据页从内存 缓冲区中删除;若被置换的数据页是只读的页,则将此页直接从内存缓冲区中删除,再从闪 存存取新的请求数据页;数据页置换时,利用镜像缓冲区来记录内存缓冲区中被置换的数 据页的访问历史;④如果数据页的页号在镜像缓冲区中,则将参数\或、的值增加1,从闪存存取数 据页,并根据对数据页的操作类型是读操作或写操作,将其插入到链表!^或链表Ldt的最近 最多使用端,调整链表Lra或链表Ldb的大小;⑤如果数据页的页号不在镜像缓冲区中,从闪存存取数据页,并根据对数据页的操作 类型是读操作或是写操作,将其插入到链表Lra或链表Ldb的最近最多使用端,最后调整链表 Lcb或链表Ldb的长大小。
3.如权利要求2所述的一种基于闪存的自适应缓冲区置换方法,其特征在于所述镜 像缓冲区划分成两个链表Lai和Ldh,分别用来存放从所述只读链表和脏页链表中被置换的 只访问一次的页的页号,且ILqi U LdhI = S, S为内存缓冲区中最多能存放的数据页数。
4.如权利要求2或3所述的一种基于闪存的自适应缓冲区置换方法,其特征在于所 述数据页根据置换代价进行置换时,采用结合物理操作和逻辑操作的代价计算方法来计算所述只读链表的代价<^4和所述脏页链表的代价Ciil的值假定对数据页的存取是相互独立的,缓冲区最多存放s个数据页,η是被处理文件中数 据页的个数,则对某个数据页的逻辑操作在缓冲区中命中的概率是s/n,而一个逻辑操作被 转换为物理操作的概率是(l-s/η),则代价CiJnC^的值分别为
全文摘要
本发明涉及一种基于闪存的自适应缓冲区置换方法,其包括步骤(1)通过判断缓冲区中的页是否被修改过,分别存储到只读链表和脏页链表中;(2)当CPU发出请求的数据页被命中,判断数据页是否在只读链表中;(3)在只读链表中,根据操作类型把数据页移动到链表LCT或LDB的最近最多使用端;(4)数据页在脏页链表中,则将数据页移动到脏页链表LDT的最近最多使用端,按照参数δD调整链表LDB的大小;(5)当CPU发出请求的数据页没有命中,对该数据页进行缺页处理,按照代价自适应的从两个链表中选择页进行置换,能适应各种闪存以及各种存取模式。本发明能适应不同的闪存,并能减少对闪存的写操作,提高系统的性能。
文档编号G11C16/06GK102097128SQ201010566968
公开日2011年6月15日 申请日期2010年11月25日 优先权日2010年11月25日
发明者孟小峰, 汤显 申请人:中国人民大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1