一种固态盘内部缓存管理方法

文档序号:9631366阅读:768来源:国知局
一种固态盘内部缓存管理方法
【技术领域】
[0001] 本发明属于计算机存储技术领域,更具体地,涉及一种固态盘内部缓存管理方法。
【背景技术】
[0002] 闪存(NANDFLASH)具有读、写速度快,能耗低及抗震性好的特点,因此,基于闪存 的固态盘已广泛应用于高端服务器及笔记本电脑。存芯片由很多数据块组成,每个数据块 又包含多个数据页。闪存中,读、写操作的最小单位为页,闪存芯片可以随机读闪存中的任 意一页,但写操作时如果目标页中以前有数据,则必须先将该页的数据擦除,然后才能写新 的数据,闪存擦除的单位为块,即每次至少擦除一块,同时,对某个具体闪存块,它的擦除次 数是有限的;闪存中读、写操作所需时间是不对称的,在闪存中写一页所需时间通常是读一 页所需时间的8~12倍。为了提高基于闪存的固态盘的性能,在基于闪存的固态盘中,通 常会加入一个高速的缓存用于临时存放系统将来可能再次使用的数据,因此,如何有效管 理固态盘内部的缓存对提高固态盘性能及寿命具有重要的意义。
[0003]目前常用的缓存管理算法有LeastRecentlyUsed(LRU)、2queue(2Q)、Low Inter-referenceRecencySet(LIRS)、AdaptiveReplacementCache(ARC)等,这些常用 的缓存管理算法都是针对主机端的缓存管理。由于闪存具有读、写不对称的特点,因此直接 将它们用在固态盘内部的缓存管理中效果并不理想。
[0004] 针对固态盘内部的缓存管理算法主要有针对混合映射FlashTranslation Layer(FTL)的BPLRU(BlockPaddingLeastRecentlyUsed)算法和针对页映射的 CFLRU(Clean-FirstLRU)算法,BPLRU算法是当访问到闪存中某块的任一页时,就将其整个 块调入缓存中,换出缓存时也是将整个块一次性写回FLASH,该算法的优点是可以将随机读 写转换成顺序读写,同时减少混合存储中合并(merger)操作;但BPLRU法不适用于页映射 的固态盘,因为页映射的固态盘中每个逻辑页可以映射到固态盘任意的物理页上。
[0005] 页映射FTL具有简单、高效的特点,目前固态盘中常采用页映射FTL算法,在页映 射FTL固态盘中,SSD内部缓存管理通常采用CFLRU算法,当缓存写满数据需要替换时,缓 存中只要存在干净数据页,就将干净数据页以LRU方式替换出去;CFLRU法没有考虑干净数 据页(读数据)在将来系统是否还会再访问,在极端情况下,该方法会退化成只对脏数据页 (写数据)进行缓存的LRU算法;在以读操作为主的负载中,CFLRU的命中率会很低,从而影 响SSD的性能和寿命;同时,CFLRU将导致很多一次性写数据长期滞留在缓存中,影响固态 盘的性能。

【发明内容】

[0006] 针对现有技术的以上缺陷或改进需求,本发明提供了一种固态盘内部缓存管理方 法,其目的在于解决现有固态盘内部缓存管理方法缓存命中率低的问题。
[0007] 为了实现上述目的,本发明提供了一种固态盘内部缓存管理方法,具体包括如下 步骤:
[0008] (1)当固态盘接收到上层访问数据页X命令,设置数据页X权值的初始值;并判断 数据页X是否处于队列Alin中;若是,则访问该数据页,进入步骤(9);若否,则进入步骤 (2);
[0009] (2)判断数据页X是否处于环AClock中,若是,则进入步骤(3),若否,则进入步骤 (5);
[0010] (3)判断访问数据页X的动作是否为读操作,若是,将该数据页X移到环AClock的 尾部,进入步骤(9);若否,则表明访问数据页X的动作为写操作,进入步骤(4);
[0011] (4)将该数据页X的权值设置为最大值,并将该数据页X移到环AClock的尾部,进 入步骤(9);
[0012] (5)为数据页X在缓存中分配空间,进入步骤(6);
[0013] (6)判断数据页X的标识是否在队列Alout中,若是,进入步骤(7);若否,则进入 步骤(8);
[0014] (7)设置数据页X权值的初始值,并将该页插入到AClock的尾部,进入步骤(9);
[0015] (8)将数据页X插入到队列Alin的头部,进入步骤(9);
[0016] (9)结束读写访问;
[0017] 其中,Alin是指固态盘中内部缓存中的一个先进先出队列;Alout是指固态盘内 部缓存中的一个近期最少使用队列,即LRU队列;AClock是固态盘内部缓存中一个用指针 连接起来的单向环,该单向环中保存了两个指针,头部指针和尾部指针,尾部指针紧连着头 部指针,即尾部指针的下一节点指向头部节点;
[0018] Alin和AClock均用于存放缓存数据;Alout用于存放数据页的标识;当一个数据 页从Alin中替换出缓存时,将该数据页的标识保存到Alout队列;当一个页面从AClock环 中替换出缓存时,将该页丢弃。
[0019] 优选的,设置数据页X权值的初始值的方法具体如下:
[0020] (a)对于写操作,数据页X权值初始值的设定方法为:
[0021] 将闪存写一个数据页所用的时间除以闪存读一个数据页所用的时间,对获得的结 果乘以系数〇. 6,再取整,获得写权值初始值;如果系数太大则缓存中将保存大量的一次性 访问的写数据页,如果系数太小,则很多将来可能再次被访问的写数据页可能会被替换出 缓存,导致系统性能降低,寿命减小;实验结果显示当系数为〇. 6时系统能达到较优的结 果;如下公式所示:
[0022]
[0023] 其中,丨1:表示对数值取整;
[0024] (b)对于读操作,数据页权值初始值为0。
[0025] 优选的,上述步骤(4)中,将数据页X的权值取5 ;写的开销10倍于读操作;对于 写操作而言,若写权值过大,则会延长一次性写数据页在缓存中的停留时间,将导致很多将 来可能再被访问的读数据被替换出缓存,影响系统整体性能;如果写权值过小,则写数据页 将会较快的替换出缓存,会降低写操作的命中率。
[0026] 优选的,Alin队列长度最大值Kin为缓存大小的20%~30% ;AClock环的大小为 缓存总量的70%~80% ;Alout队列保存了各数据页的标识,在Alout队列中,可保存标识 的最大个数Kout为缓存所能存放数据页面个数的40 %~60 %。
[0027] 优选的,所述在缓存中为数据页X分配空间的方法,具体包括如下步骤:
[0028] (5. 1)判断缓存中是否有空闲空间,若是,则进入步骤(5. 2),若否,则进入步骤 (5. 3);
[0029] (5. 2)将数据页X存入分配到的缓存空间节点Z中,进入步骤(5. 12);
[0030] (5. 3)判断队列Alin长度是否大于Alin队列长度最大值Kin,若是,则进入步骤 (5.4);若否,则进入步骤(5. 10);
[0031] (5.4)将Alin尾部的数据块替换出缓存,替换出的数据记为Y,进入步骤(5.5);
[0032] (5. 5)将数据页X放入替换出的缓存节点Z中,进入步骤(5. 6);
[0033] (5. 6)提取替换出的数据Y的标志位,进入步骤(5. 7);
[0034] (5. 7)判断队列Alout长度是否大于Alout队列可保存标识符的最大个数Kout, 若是,进入步骤(5.8);若否,则进入步骤(5.9);
[0035] (5. 8)将Alout的尾部节点从Alout队列中删除,进入步骤(5. 9);
[0036] (5. 9)将上述替换出的数据Y的标志位放入新的节点L中,将L节点的下一节点指 向Alout的头节点,并将L节点作为Alout的头节点,进入步骤(5. 12);
[0037] (5. 10)获取AClock头部节点数据页的权值,判断该权值是否为0,若是,则进入步 骤(5. 12);若否,则进入步骤(5. 11);
[0038] (5. 11)将该数据页权值减1,使尾部指针指向头部页节点,头部指针指向下一个 数据页节点,进入步骤(5. 10);
[0039] (5. 12)将头部节点记作Z,使头部指针指向Z节点的下一节点,使尾部指针的下一 节点指向头部节点,进入步骤(5. 13);
[0040] (5. 13)将Z节点从AClock中剥离,将数据X放入Z节点中,进入步骤(5. 14);
[0041] (5. 14)函数返回Z节点,分配空间结束;
[0042] 在AClock中,初始时给读数据页和写数据页赋予不同的权值;在系统运行过程 中,各数据页的权值动态变化,在AClock环中进行替换操作时对权值为0的页面节点进行 替换;
[0043] 权值为0的数据页有读数据页和在缓存中长时间没被访问的写数据页,由于读数 据页为干净页面,替换时不需要对闪存进行操作,替换读数据页的开销较小;当权值为〇的 页面为写数据页时,则表明该页面在较长时间没有被访问,根据局部性原理,替换权值变为 〇的与数据页可提尚缓存的命中率,从而提尚系统性能。
[0044] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,对写操作及读操 作数据页赋予不同的权值,使写数据页在缓存中停留的时间比读数据页在缓存中停留的时 间更长,并根据数据页的命中情况,动态的调整各页面的权值,使缓存在保持较高的总命中 率的情况下提高写命中率,达到提高系统性能,延迟使用寿命的目的;具体能够取得如下所 列的有益效果:
[0045] (1)本发明提供的固态盘内部缓存管理方法,根据闪存读、写速度不对称性的特 点,对固态盘内部缓存中读、写数据页赋予不同的权值;写数据页的权值大于读数据页;缓 存中数据页的权值依据缓存中数据页命中情况及数据页在缓存中存放的时间进行动态调 整,当缓存写满数据需要替换时,系统查找缓存中权值为0的数据页进行替换;
[0046] 由于写数据页权值比读数据也权值大,写数据页在缓存中的停留时间比读数据页 在缓存中停留的时间长,以提尚缓存与命中率;因此,在保证缓存总命中率(读命中率+与 命中率)的情况下提高了写数据页的命中率,从而提高了固态盘的性能,同时延长了固态 盘的寿命;
[0047] (2)本发明提供的固态盘内部缓存管理方法,具有与2Q等传统的缓存管理算法相 当的总命中率(读命中+写命中),但由于本发明中将写数据页比读数据页赋予更高的权 值,使写数据页在缓存中停留的时间比读数据页停留的时间更长,提高了写命中率;实验结 果显不,它的与命中率比2Q等传统算法最多可提尚30%;另外,在Aclock环中,各页依据 局部性原理,动态调整权值,从而保证了系统具有较高的总命中率;
[0048] (3)本发明提供的固态盘内部缓存管理方法,与基于页映射的固态盘内部缓存管 理算法如CFLRU比较而言,由于该发明缓存中使用了两个队列,消除了一次性数据对缓存 的污染;使其总命中率比
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1