一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于页面替换代价的固态硬盘缓冲区管理方法

2022-09-15 04:37:28 来源:中国专利 TAG:


1.本发明属于固态硬盘性能优化设计技术领域,具体是一种基于页面替换代价的固态硬盘缓冲区管理方法。


背景技术:

2.为了应对海量非结构化数据的快速存取,常用的存储介质已由最早期的磁带、光盘等,发展到机械磁盘(hybrid hard disk,hdd),再到现如今常用的基于闪存的固态硬盘(solid state disk,ssd)。闪存没有传统物理磁盘的机械特性,因此固态硬盘具有非易失、高抗震、低功耗、小体积等诸多优点,其市场份额也在不断增加。
3.随着固态硬盘容量和性能的不断提升,固态硬盘的优良特性逐渐弥补了cpu(central processing unit,中央处理器)和i/o(input/output)之间的性能差距,但是固态硬盘也存在问题,严重阻碍固态硬盘的性能提升。一方面,固态硬盘无法在原有位置上进行数据更新,导致新写入的数据必须存储在未写入数据的空闲位置,当没有空闲位置的时候,就必须对无效数据所在的闪存块进行擦除操作,否则无法将新的数据写入闪存。另一方面,闪存的物理特性要求它的读、写操作以页为单位,擦除操作以块为单位进行,三种基本操作的耗时不同,而闪存本身是有擦除次数限制的,当闪存块的擦除次数超过阈值时,产生坏块的概率急剧增大,当有坏块产生时,数据无法写入坏块,或是写入的数据会产生错误。
4.传统的固态硬盘缓冲区管理方法主要以减少脏页面写回闪存为目标,当缓冲区没有空闲空间需要进行页面驱逐操作时,优先将干净页面驱逐出缓冲区,降低了缓冲区的命中率。


技术实现要素:

5.针对现有技术的不足,本发明拟解决的技术问题是,提供一种基于页面替换代价的固态硬盘缓冲区管理方法。该方法充分利用数据访问具有时间局部性的特点,将经常被访问的页面保留在缓冲区内,提高了缓冲区的命中率,同时又减少了脏闪存页的写回操作次数,提高了固态硬盘的整体性能。
6.本发明解决所述技术问题采用的技术方案如下:
7.一种基于页面替换代价的固态硬盘缓冲区管理方法,其特征在于,该方法将固态硬盘的缓冲区划分为工作区域和受害者区域,工作区域维护干净页面链表和混合页面链表,受害者区域维护受害者页面链表,三个页面链表均使用最近最少原则进行管理;干净页面链表用于存放未经修改的干净页面,混合页面链表用于存放被修改过的脏页面,受害者页面链表用于存放等待再次被访问或驱逐出缓冲区的受害者候选页面;
8.当访问请求到来时,判断访问请求的目标页面是否位于缓冲区,若位于缓冲区,则判断目标页面是否位于工作区域,若是,则执行s1,若否,则执行s2;若目标页面没有位于缓冲区,则执行s3;
9.s1、若访问请求是写请求,则将目标页面迁移至混合页面链表的mru端;若访问请
求是读请求,当目标页面是干净页面时,则将目标页面存放在干净页面链表的mru端,当目标页面是脏页面时,则将目标页面迁移至混合页面链表的mru端;最后,将目标页面返回上层应用;
10.s2、判断工作区域是否有空闲空间,若有,且访问请求是写请求,则将目标页面迁移至工作区域维护的混合页面链表的mru端;当访问请求是读请求,且目标页面是干净页面时,则将目标页面存放在工作区域中干净页面链表的mru端,当目标页面是脏页面时,则将目标页面迁移至工作区域中混合页面链表的mru端;最后,将目标页面返回上层应用;
11.若工作区域没有空闲空间,通过式(1)和式(2)分别计算位于干净页面链表lru端的干净页面的迁移代价以及位于混合页面链表lru端的脏页面的迁移代价,并将迁移代价小的页面迁移至受害者区域中的受害者页面链表的mru端,此时工作区域获得空闲空间,若目标页面是干净页面,则将目标页面插入到工作区域中干净页面链表的mru端;若目标页面是脏页面,则将目标页面插入到工作区域中混合页面链表的mru端;最后,将目标页面返回上层应用;
[0012][0013][0014]
式中,mc、mm分别表示干净页面和脏页面的迁移代价,cr、cw、ce分别表示读操作、写操作和擦除操作的代价,k表示比例系数,p表示闪存页的总数量,pd表示脏闪存页的数量,tc、td分别表示干净页面链表和混合页面链表lru端的页面距离上一次被访问的时间间隔;
[0015]
s3、若目标页面没有位于缓冲区,判断缓冲区是否有空闲空间,若有,则将目标页面从闪存读入缓冲区中,当访问请求是写请求时,将目标页面迁移至工作区域维护的混合页面链表的mru端;当访问请求是读请求,且目标页面是干净页面时,则将目标页面存放在工作区域中干净页面链表的mru端,当目标页面是脏页面时,则将目标页面迁移至工作区域中混合页面链表的mru端;最后,将目标页面返回上层应用;
[0016]
若缓冲区没有空闲空间,则扫描受害者页面链表,并根据式(3)和式(4)计算受害者页面链表中各个受害者候选页面的替换代价,选择替换代价最小的受害者候选页面作为受害者页面,并将受害者页面驱逐进入闪存中,此时工作区域获得空闲空间,当访问请求是写请求时,将目标页面存放在工作区域维护的混合页面链表的mru端;当访问请求是读请求,且目标页面是干净页面时,则将目标页面存放在工作区域中干净页面链表的mru端,当目标页面是脏页面时,则将目标页面存放在工作区域中混合页面链表的mru端;最后,将目标页面返回上层应用;
[0017][0018][0019]
式中,rc(i)表示受害者候选页面i的替换代价,aui表示受害者候选页面的平均访问时间间隔,分别表示受害者候选页面i第j次和第j-1次被访问的时间,表示受害
者候选页面i第一次被访问的时间,n表示被访问的总次数。
[0020]
进一步的,该方法还包括以下内容:
[0021]
根据式(5)和(6)分别计算缓冲区内各个闪存页的访问频率和区分冷脏页和热脏页的阈值;
[0022][0023][0024]
式中,vf(p)表示闪存页p的访问频率,count
p
表示闪存页p的访问次数,current_time表示系统当前时间,visit_time
p
表示闪存页p进入缓冲区的时间,表示区分冷脏页和热脏页的阈值;
[0025]
将访问频率高于阈值的脏闪存页称为热脏闪存页,访问频率低于阈值的脏闪存页称为冷脏闪存页,热脏闪存页和冷脏闪存页以簇为单位,分别存放到对应的物理块中并写回闪存;将干净闪存页直接丢弃,不再写回闪存。
[0026]
与现有技术相比,本发明的有益效果是:
[0027]
1、为了提高缓冲区的命中率,本发明提出了迁移代价的概念。若工作区域没有空闲空间,则计算位于干净页面链表lru(least recently used,最近最少被使用)端的干净页面的迁移代价以及位于混合页面链表lru端的脏页面的迁移代价,并选择迁移代价小的页面进行迁移。现有的缓存区管理方法主要优先将干净页面驱逐出缓冲区,但是总是优先替换干净页面,不考虑干净页面的访问频率会使干净页面刚刚进入缓冲区就被作为受害者页面被驱逐出缓冲区,降低缓冲区的命中率,而许久未被访问的脏页面占据缓冲区空间,导致空间浪费,因此本发明方法可以保证经常被访问的页面留在缓冲区中,提高缓冲区的命中率,降低了i/o延迟。
[0028]
2、减少脏页面写回闪存的代价。综合考虑页面所含脏闪存页的数量和页面的访问频率,以页面替换代价为指标,选择替换代价最小的受害者候选页面作为受害者页面,将受害者页面驱逐出缓冲区,不会造成太大的能耗。
[0029]
3、为了减少闪存页写回闪存的操作次数,使闪存页在数据访问上获得空间局部性,提出了一种页面重组方式,将要写回闪存的页面划分为小的闪存页,根据闪存页被访问的频率,以簇为单位分为冷脏页面组和热脏页面组,分别写入对应的物理块中,一次写回多个闪存页,降低了闪存中页面的分散度,优化闪存数据布局,而干净页面则直接丢弃,不再写回闪存中,减少了将未修改的页面写回闪存的冗余操作,降低了闪存中垃圾回收的频率和代价,还使闪存页在数据访问上具有了空间局部性,增大了一个物理块中的闪存页在同一时间变为无效页的概率,减少了垃圾回收过程中的数据迁移,为垃圾回收和磨损均衡做了准备工作,从而提高闪存存储系统的整体性能。充分利用缓冲区空间,使数据的读写操作尽可能在缓冲区内进行,从而减少数据写回闪存的次数,避免在闪存中造成频繁的数据更新与页面擦除。
附图说明
[0030]
图1是本发明的缓冲区结构布局图;
[0031]
图2是本发明的流程图;
[0032]
图3是本发明的页面分割示意图;
[0033]
图4(a)是实施例1中工作区域的页面状态示意图;
[0034]
图4(b)是实施例1中目标页面迁移后的页面状态示意图。
具体实施方式
[0035]
下面结合附图和具体实施方式对本发明的技术方案进行详细说明,但并不以此限定本技术的保护范围。
[0036]
本发明提供了一种基于页面替换代价的固态硬盘缓冲区管理方法(简称方法,参见图1~3),如图1所示,该方法将固态硬盘的缓冲区划分为工作区域和受害者区域两部分,工作区域维护两个页面链表,分别为干净页面链表和混合页面链表,受害者区域维护一个受害者页面链表;干净页面链表用于存放未经过修改的干净页面,混合页面链表用于存放被不同程度修改的脏页面,受害者页面链表用于存放受害者候选页面,受害者候选页面是指等待再次被访问或驱逐出缓冲区的页面;三个页面链表均使用最近最少原则进行管理;
[0037]
设置系统访问时间visit_time,其初始值设置为0;记录缓冲区页面被访问时间,缓冲区中每个页面均设置一个访问时间,即页面访问时间page_time,每访问一次则记录一次页面访问时间page_time,得到最近一次的页面访问时间;当i/o(读写)请求到来时,每访问一个缓冲区页面,则系统访问时间visit_time的值执行加1操作,同时将当前系统访问时间visit_time的值赋值给被访问页面的访问时间,并记录当前被访问页面的访问时间;
[0038]
该方法具体包括以下内容:
[0039]
一、当访问请求到来时,判断访问请求的目标页面是否位于缓冲区,若位于缓冲区,则判断目标页面是否位于工作区域,若是,则执行s1,若否,则执行s2;若目标页面没有位于缓冲区,则执行s3;
[0040]
s1、若目标页面位于缓冲区的工作区域内,根据页面状态和请求类型,将目标页面迁移至对应链表的mru(most recently used,最近最多被使用)端,并将目标页面返回上层应用;若访问请求是写请求,则将目标页面迁移至混合页面链表的mru端;若访问请求是读请求,当目标页面是干净页面时,则将目标页面存放在干净页面链表的mru端,当目标页面是脏页面时,则将目标页面迁移至混合页面链表的mru端;
[0041]
s2、若目标页面位于缓冲区的受害者区域内,则判断工作区域是否有空闲空间;若有,则根据页面状态和请求类型将目标页面迁移至工作区域中对应链表的mru端,并将目标页面返回上层应用;若访问请求是写请求,则将目标页面迁移至工作区域维护的混合页面链表的mru端;若访问请求是读请求,当目标页面是干净页面时,则将目标页面存放在工作区域中干净页面链表的mru端,当目标页面是脏页面时,则将目标页面迁移至工作区域中混合页面链表的mru端;
[0042]
若工作区域没有空闲空间,通过式(1)和式(2)分别计算位于干净页面链表lru(least recently used,最近最少被使用)端的干净页面的迁移代价以及位于混合页面链表lru端的脏页面的迁移代价,并将迁移代价小的页面迁移至受害者区域中的受害者页面
链表的mru端,此时工作区域获得空闲空间,若目标页面是干净页面,则将访问请求的目标页面插入到工作区域中干净页面链表的mru端;若目标页面是脏页面,则将目标页面插入到工作区域中混合页面链表的mru端;
[0043][0044][0045]
式中,mc、mm分别表示干净页面和脏页面的迁移代价,cr、cw、ce分别表示读操作、写操作和擦除操作的代价,k表示比例系数,p表示闪存页的总数量,pd表示脏闪存页的数量,tc、td分别表示干净页面链表和混合页面链表lru端的页面距离上一次被访问的时间间隔;
[0046]
通常情况下,脏页面的迁移代价大于干净页面的迁移代价;当脏页面的迁移代价小于干净页面的迁移代价时,说明脏页面距离上一次被访问的时间已经足够长,此时应将长时间未被访问的脏页面迁移到受害者区域,等待再次被访问或者驱逐出缓冲区;
[0047]
s3、若目标页面没有位于缓冲区,即目标页面位于闪存中,判断缓冲区是否有空闲空间,若有,则将目标页面从闪存读入缓冲区中,再根据页面状态和请求类型将目标页面迁移至对应链表的mru端,并将目标页面返回上层应用;若访问请求是写请求,则将目标页面迁移至工作区域维护的混合页面链表的mru端;若访问请求是读请求,当目标页面是干净页面时,则将目标页面存放在工作区域中干净页面链表的mru端,当目标页面是脏页面时,则将目标页面迁移至工作区域中混合页面链表的mru端;
[0048]
若缓冲区没有空闲空间,则扫描受害者页面链表,并根据式(3)和式(4)计算受害者页面链表中各个受害者候选页面的替换代价,选择替换代价最小的受害者候选页面作为受害者页面,并将受害者页面驱逐进入闪存中,此时工作区域获得空闲空间,当访问请求是写请求时,将目标页面存放在工作区域维护的混合页面链表的mru端;当访问请求是读请求,且目标页面是干净页面时,则将目标页面存放在工作区域中干净页面链表的mru端,当目标页面是脏页面时,则将目标页面存放在工作区域中混合页面链表的mru端;
[0049][0050][0051]
式中,rc(i)表示受害者候选页面i的替换代价,aui表示受害者候选页面的平均访问时间间隔,分别表示受害者候选页面i第j次和第j-1次被访问的时间,表示受害者候选页面i第一次被访问的时间,n表示被访问的总次数;
[0052]
替换代价最小说明该页面平均访问时间间隔比较长,短时间内再一次被访问的概率低;另外,缓冲区内所含脏闪存页的比例不大,驱逐到闪存内不会造成太大的能耗。
[0053]
二、假设内存页(位于缓冲区的页面)的大小为4kb,闪存页(位于闪存的页面)的大小为512b,一个内存页则可以划分为8个闪存页;数据未被修改的闪存页称为干净闪存页,数据被修改过的闪存页称为脏闪存页,参见图3;根据式(5)和(6)分别计算缓冲区内各个闪存页的访问频率和区分冷脏闪存页和热脏闪存页的阈值;
[0054][0055][0056]
式中,vf(p)表示闪存页p的访问频率,count
p
表示闪存页p的访问次数,current_time表示系统当前时间,visit_time
p
表示闪存页p进入缓冲区的时间,表示区分冷脏页和热脏页的阈值;
[0057]
将访问频率高于阈值的脏闪存页称为热脏闪存页,访问频率低于阈值的脏闪存页称为冷脏闪存页,热脏闪存页和冷脏闪存页以簇为单位,分别存放到对应的物理块中并写回闪存;将干净闪存页直接丢弃,不再写回闪存。
[0058]
实施例1
[0059]
本实施例以实际访问请求为例,说明基于页面替换代价的固态硬盘缓冲区管理方法,如图4(a)所示,当上层应用发来写请求,且目标页面p3位于工作区域的干净页面链表,目标页面p3中的数据被修改,因此将目标页面p3迁移至混合页面链表的mru端,如图4(b)所示,并将目标页面p3返回上层应用,完成访问请求。
[0060]
当上层应用发来读请求时,目标页面p9没有位于缓冲区,且缓冲区内没有空闲空间,则扫描受害者页面链表,并根据上述的式(3)和(4)分别计算受害者页面链表中各个受害者候选页面的替换代价,选择替换代价最小的受害者候选页面作为受害者页面,并将受害者页面驱逐进入闪存中;受害者候选页面的替换代价的计算过程为:
[0061]
首先,通过闪存页的页面状态标识位,确定脏闪存页的数量pd,进而得到脏闪存页所占比例
[0062]
然后,根据受害者候选页面被访问的时间和次数,计算受害者候选页面的平均访问时间间隔aui;
[0063]
最后,根据脏闪存页所占比例和受害者候选页面的平均访问时间间隔,计算替换代价rc(i);
[0064]
受害者页面被驱逐进入闪存后,缓冲区中的受害者区域获得空闲空间,通过式(1)和(2)分别计算工作区域中位于干净页面链表lru端的干净页面以及位于混合页面链表lru端的脏页面的迁移代价,将迁移代价小的页面迁移至受害者区域中的受害者页面链表的mru端,若目标页面p9是干净页面,则将其插入到干净页面链表的mru端,若目标页面p9是脏页面,则将其插入到混合页面链表的mru端,最后将目标页面p9返回上层应用,完成访问请求。
[0065]
本发明未述及之处适用于现有技术。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献