首页 > 专利 > 杭州电子科技大学 > 一种置换和回写自适应的缓冲区管理方法专利详情

一种置换和回写自适应的缓冲区管理方法   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2018-03-30
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2018-12-14
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2020-10-09
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2038-03-30
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN201810276887.5 申请日 2018-03-30
公开/公告号 CN108845957B 公开/公告日 2020-10-09
授权日 2020-10-09 预估到期日 2038-03-30
申请年 2018年 公开/公告年 2020年
缴费截止日
分类号 G06F12/02G06F12/0866 主分类号 G06F12/02
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 7
权利要求数量 8 非专利引证数量 1
引用专利数量 2 被引证专利数量 0
非专利引证 1、2004.04.01杜晨杰,李君,姚英彪.缓冲区管理层对固态盘的有效性研究《.浙江万里学院学报》.2017,第30卷(第2期),第72-76页. XIAO Zhi-bin,etc..Optimizing pipelinefor a RISC processor with multimediaextension ISA《.Journal of ZhejiangUniversity SCIENCE A》.2006,第7卷(第2期),全文.;
引用专利 US2004095666A、US2004062159A 被引证专利
专利权维持 4 专利申请国编码 CN
专利事件 事务标签 公开、实质审查、授权
申请人信息
申请人 第一申请人
专利权人 杭州电子科技大学 当前专利权人 杭州电子科技大学
发明人 姚英彪、周杰、颜明博 第一发明人 姚英彪
地址 浙江省杭州市经济技术开发区白杨街道2号大街1158号 邮编 310018
申请人数量 1 发明人数量 3
申请人所在省 浙江省 申请人所在市 浙江省杭州市
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
浙江千克知识产权代理有限公司 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
周希良
摘要
本发明提供一种置换和回写自适应的缓冲区管理方法,将缓冲区划分为缓存块记录表、写缓冲区和读缓冲区;其中,缓存块记录表用于记录同属一个逻辑数据块的数据页在缓冲区的位置信息,写缓冲区用于缓存响应写请求而被修改过的数据页,读缓冲区用于缓存仅响应读请求而未被修改的数据页。本发明在加载和剔除数据页时采用页级的管理方式,通过周期自适应调整读缓冲区阈值,能够感知负载读写特的变化,使得该管理方法在多种负载条件下都能得到较高的缓存命中率。同时,采用脏页自适应聚簇回写,能够感知FTL层垃圾回收的压力,自适应地调整回写策略,能够有效地减少因为FTL垃圾回收引发的额外块擦除次数,提升了固态硬盘的总体性能和使用寿命。
  • 摘要附图
    一种置换和回写自适应的缓冲区管理方法
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2020-10-09 授权
2 2018-12-14 实质审查的生效 IPC(主分类): G06F 12/02 专利申请号: 201810276887.5 申请日: 2018.03.30
3 2018-11-20 公开
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
1.一种置换和回写自适应的缓冲区管理方法,
所述缓冲区划分为缓存块记录表、写缓冲区和读缓冲区;
所述缓存块记录表用于记录同属一个逻辑数据块的数据页在缓冲区的位置信息,所述写缓冲区用于缓存响应写请求而被修改过的数据页,所述读缓冲区用于缓存仅响应读请求而未被修改的数据页;其特征在于,
所述管理方法包括以下步骤:
S1,当访问请求到来,查询缓存块记录表是否包含请求对应的缓存块信息,若存在,执行S2,否则,执行S4;
S2,查询缓存块记录表中是否存在指向请求数据页的位置指针,若存在,则执行S3,否则,执行S5;
S3,将命中数据页迁移到相应缓冲区的MRU位置,MRU指最近访问端;更新对应缓存块记录表中的位置指针列表;之后执行S8;
S4,向缓存块记录表中添加对应的记录块信息,同时初始化该记录块的所有信息,之后执行S5;
S5,判定当前缓冲区是否满;若满,执行S6,否则,执行S7;
S6,比较读缓冲区与目标阈值Tau的大小;若大于,则选择读缓冲区的LRU位置的数据页剔除,否则,选择写缓冲区的LRU位置的数据页作为剔除项并执行自适应聚簇回写;更新剔除数据页对应的记录块信息,之后执行S7;
S7,将缺失的请求数据页加载入对应的缓冲区,同时将指向该数据页的位置指针添加至对应的缓存块记录表的位置指针列表中,并更新对应的记录块信息;之后执行S8;
S8,启动置换策略阈值调整机制,对阈值Tau进行调整;最后,结束本次请求的处理。

2.根据权利要求1所述的置换和回写自适应的缓冲区管理方法,其特征在于,所述读缓冲区和写缓冲区采用LRU管理队列,当缓冲区命中请求和加载新数据页时,将命中请求和加载新数据页迁移到队列的MRU位置。

3.根据权利要求1所述的置换和回写自适应的缓冲区管理方法,其特征在于,所述缓存块记录表中,一个记录块的信息包含:缓存块编号BlkNum、缓冲区中同属该记录块的数据页个数BlkSize、同属该记录块的干净页位置指针列表C-list-index、同属该记录块的脏页位置指针列表D-list-index。

4.根据权利要求3所述的置换和回写自适应的缓冲区管理方法,其特征在于,所述步骤S3中,更新对应缓存块记录表中的位置指针列表具体为:
从C-list-index或D-list-index列表中剔除指向该迁移数据页的旧位置指针,之后判断迁入位置,若迁入读缓冲区,则将位置指针存入对应的缓存块中C-list-index;否则,将数据页的位置指针存入记录块中的D-list-index。

5.根据权利要求3所述的置换和回写自适应的缓冲区管理方法,其特征在于,所述步骤S6中,所述更新剔除数据页对应的记录块信息,具体为:
从C-list-index或D-list-index列表中找到指向该剔除数据页的旧位置指针并剔除,并更新对应的记录块的BlkSize=BlkSize-1。

6.根据权利要求3所述的置换和回写自适应的缓冲区管理方法,其特征在于,所述步骤S7中,所述将指向该数据页的位置添加至对应的缓存块记录表的位置指针列表中,并更新对应的记录块信息,具体为:
判断请求类型,若为读请求,则将新添加数据页的位置指针存入对应的缓存记录块中C-list-index;否则,将数据页的位置指针存入记录块中的D-list-index,之后更新对应的记录块的BlkSize=BlkSize+1。

7.根据权利要求1所述的置换和回写自适应的缓冲区管理方法,其特征在于,所述步骤S6中,所述自适应聚簇回写的流程为:
S61,选择写缓冲区LRU位置的数据页作为剔除对象,并查询该数据页对应的缓存记录块中D-list-index信息,之后执行S62;
S62,依次读取D-list-index的位置指针指向的数据页,并根据位于缓存队列前半部分为热数据的原则,对所述D-list-index的位置指针指向的数据页进行判断,并将判别为热的数据页加入保留集合Ф,之后执行S63;
S63,计算当前写入放大系数
根据当前写入放大系数W计算当前回写阈值
其中,Bw为固定周期内缓存区回写次数的统计值;Fw为固定周期内闪存写操作次数统计值;BlkMaxSize为所述逻辑数据块大小,t为常系数;之后执行S64;
S64,计算填补页数E=BlkMaxSize-N,N为当前记录块在写缓冲区中的数据页个数,之后比较比较E和Th的大小;若E≤Th,则执行S65;否则,执行S66;
S65,启用页填充,从底层闪存中读取E个填补页和回写的脏页组成整个数据块回写入底层闪存;之后执行S67;
S66,不启用页填充,将D-list-index中的脏页全部回写入底层闪存,执行S67;
S67,将集合Ф中的数据页全部移入到读缓冲区,同时删除原数据块的缓存块记录表中的D-list-index的位置信息,同时将转移后的新位置指针存入C-list-index;最后结束本次聚簇回写操作。

8.根据权利要求7所述的置换和回写自适应的缓冲区管理方法,其特征在于,所述步骤S8中,所述启动置换策略阈值调整机制,对阈值Tau进行调整,具体调整流程为:
S81,判断当前请求是否为命中,若是,则执行S82,否则,执行S83;
S82,判断请求类型和命中区域,若读缓冲区读命中,则CRH加1;若读缓冲区写命中,则CWH加1;若写缓冲区读命中,则DRH加1;若写缓冲区写命中,则CRH加1;最后执行S83;
S83,更新当前的TCount,即TCount=TCount+1,同时更新统计值Bw和统计值Fw,之后执行S84;
S84,判断TCount是否达到阈值更新周期CycleTime,若是,则执行S85,否则,结束阈值Tau的本次更新操作;
其中,CRH为读缓冲区的读命中统计变量,CWH为读缓冲区的写命中统计变量;DRH为写缓冲区的读命中统计变量,DWH为写缓冲区的写命中统计变量;TCount为当前请求操作计数;CycleTime为阈值更新周期;
S85,计算目标写缓冲区单位增益DR,目标读缓冲区单位增益CR:
其中BufSize为读写总缓冲区的大小,Tau’为更新前的阈值,
Cr,Cw为归一计算得到读写时延代价系数:
其中,ReadDelay和WriteDelay分别为周期内读延迟和写延迟;之后执行S86;
S86,更新阈值Tau:
同时更新周期缓冲区回写次数统计值Bw=0,周期闪存写操作次数统计值Fw=0,周期计数值TCount=1,最后结束阈值Tau的本次更新操作。
说明书

技术领域

[0001] 本发明属于基于闪存固态盘的固件优化方法设计技术领域,公开了一种置换和回写自适应的缓冲区管理方法。

背景技术

[0002] 东芝公司在1989年提出了一种新型的非易失性存储介质——NAND闪存(flash memory),该存储介质因为其高性能,低功耗,抗震性好的优点被广泛应用于嵌入式设备,便携式电脑和企业级存储系统。本文提到的闪存即为NAND闪存。
[0003] 缓冲区是存储系统组成中不可或缺的一部分,通过将频繁访问的数据保存在小容量的高速缓存中,可以有效改善存储系统的I/O性能。几十年来,研究人员针对以机械硬盘为主存储介质的存储系统提出了很多经典有效的缓冲区方法,例如FIFO(先进先出方法),LRU(最久未使用方法),LFU(最少使用置换方法),和LRFU(最近及最不频繁使用置换方法)等等。但是,固态硬盘的底层存储介质为闪存,闪存具有明显与传统磁介质不一样的特点,因而传统面向机械硬盘的缓存区管理算法在固态盘缓存区设计中难以适用。
[0004] 固态硬盘底层的NAND闪存有如下局限:1)闪存只提供读、写和擦除3种操作,且这三种操作性能不对称,读最快,写次之,擦除最慢;2)闪存是按页(page)、块(block)、平面(plane)的结构进行组织;页是读/写的最小单位,一般为2/4/8KB;块是擦除的最小单位,一个块一般包含64/128个页;3)闪存擦除后只能写一次,即所谓的erase-before-write,这造成闪存不支持原地更新;4)闪存每个存储单元的编程/擦除(P/E)次数有限,超过该P/E次数后,闪存存储数据不再可靠。
[0005] 针对闪存的读写不对称性,研究人员提出了一系列面向闪存的缓冲区方法,根据操作粒度可以区分为页级缓冲区方法和块级缓冲区方法。
[0006] 页级缓冲区方法:大部分的改进方法都以LRU为基础,其中经典有效的方法有CFLRU(干净页优先最近最少置换)方法,CCF-LRU(冷干净页优先最近最少置换)方法,AD-LRU(自适应双队列最小冷区置换)方法。但这些方法都只考虑了缓冲区中置换页的状态,而忽视了当前访问负载的特性,导致各类方法只适用于特定的负载才能获得较优的性能。相对于页级缓冲区方法以单一页进行回写操作,块级缓冲区方法在回写操作时,以块为组织单位进行回写,能够有效重构访问模式,将随机的写请求转变为连续的写请求,从而能够有效地减少底层FTL的垃圾回收开销。
[0007] 块级缓冲区方法:以BPLRU(块填充最近最少置换)方法和FAB(最大块优先置换)方法为基础,衍生了PUD-LRU(Predicted average Update Distance aware LRU)方法,CLC(Cold and Largest Cluster)方法。但这些块级缓冲区方法,都只缓存写请求,在以读请求为主的负载环境下,其性能表现不佳。此外,这些块级缓存区方法在脏页回写时,对同一回写块中数据页的冷热不加以区分,导致部分热数据页过早被回写,同时回写时无法感知底层闪存转化层(Flash Translation Layer,FTL)垃圾回收的压力,采用单一的回写策略,导致FTL层额外的垃圾回收开销。

发明内容

[0008] 针对上述现有技术中存在的不足,本发明公布一种置换和回写自适应的缓冲区管理方法,不仅能根据负载读写特性动态调整置换策略提高缓冲区读写命中率,而且能够在聚簇回写时保留热数据页和根据闪存转换层(FTL)垃圾回收压力调整回写策略减少底层闪存块的擦除次数。
[0009] 为实现本发明的目的,本发明采用以下技术方案:
[0010] 一种置换和回写自适应的缓冲区管理方法,所述缓冲区划分为缓存块记录表、写缓冲区和读缓冲区;所述缓存块记录表用于记录同属一个逻辑数据块的数据页在缓冲区的位置信息,所述写缓冲区用于缓存响应写请求而被修改过的数据页,所述读缓冲区用于缓存仅响应读请求而未被修改的数据页;
[0011] 所述管理方法包括以下步骤:
[0012] S1,当访问请求到来,查询缓存块记录表是否包含请求对应的缓存块信息,若存在,执行S2,否则,执行S4;
[0013] S2,查询缓存块记录表中是否存在指向请求数据页的位置指针,若存在,则执行S3,否则,执行S5;
[0014] S3,将命中数据页迁移到相应缓冲区的MRU位置,更新对应缓存块记录表中的位置指针列表;之后执行S8;
[0015] S4,向缓存块记录表中添加对应的记录块信息,同时初始化该记录块的所有信息,之后执行S5;
[0016] S5,判定当前缓冲区是否满;若满,执行S6,否则,执行S7;
[0017] S6,比较读缓冲区与目标阈值Tau的大小;若大于,则选择读缓冲区的LRU位置的数据页剔除,否则,选择写缓冲区的LRU位置的数据页作为剔除项并执行自适应聚簇回写;更新剔除数据页对应的记录块信息,之后执行S7;
[0018] S7,将缺失的请求数据页加载入对应的缓冲区,同时将指向该数据页的位置添加至对应的缓存块记录表的位置指针列表中,并更新对应的记录块信息;之后执行S8;
[0019] S8,启动置换策略阈值调整机制,对阈值Tau进行调整;最后,结束本次请求的处理。
[0020] 进一步地,所述读缓冲区和写缓冲区采用LRU管理队列,当缓冲区命中请求和加载新数据页时,将命中请求和加载新数据页迁移到队列的MRU位置。
[0021] 进一步地,所述缓存块记录表中,一个记录块的信息包含:缓存块编号BlkNum、缓冲区中同属该记录块的数据页个数BlkSize、同属该记录块的干净页位置指针列表C-list-index、同属该记录块的脏页位置指针列表D-list-index。
[0022] 进一步地,所述步骤S3中,更新对应缓存块记录表中的位置指针列表具体为:
[0023] 从C-list-index或D-list-index列表中剔除指向该迁移数据页的旧位置指针,之后判断迁入位置,若迁入读缓冲区,则将位置指针存入对应的缓存块中C-list-index;否则,将数据页的位置指针存入记录块中的D-list-index。
[0024] 进一步地,所述步骤S6中,所述更新剔除数据页对应的记录块信息,具体为:
[0025] 从C-list-index或D-list-index列表中找到指向该剔除数据页的旧位置指针并剔除,并更新对应的记录块的BlkSize=BlkSize-1。
[0026] 进一步地,所述步骤S7中,所述将指向该数据页的位置添加至对应的缓存块记录表的位置指针列表中,并更新对应的记录块信息,具体为:
[0027] 判断请求类型,若为读请求,则将新添加数据页的位置指针存入对应的缓存记录块中C-list-index;否则,将数据页的位置指针存入记录块中的D-list-index,之后更新对应的记录块的BlkSize=BlkSize+1。
[0028] 进一步地,所述步骤S6中,所述自适应聚簇回写的流程为:
[0029] S61,选择写缓冲区LRU位置的数据页作为剔除对象,并查询该数据页对应的缓存记录块中D-list-index信息,之后执行S62;
[0030] S62,依次读取D-list-index的位置指针指向的数据页,并根据位于缓存队列前半部分为热数据的原则,对所述D-list-index的位置指针指向的数据页进行判断,并将判别为热的数据页加入保留集合Ф,之后执行S63;
[0031] S63,计算当前写入放大系数
[0032] 根据当前写入放大系数W计算当前回写阈值
[0033] 其中,Bw为固定周期内缓存区回写次数的统计值;Fw为固定周期内闪存写操作次数统计值;BlkMaxSize为所述逻辑数据块大小,t为常系数;
[0034] 之后执行S64;
[0035] S64,计算填补页数E=BlkMaxSize-N,N为当前记录块在写缓冲区中的数据页个数,之后比较比较E和Th的大小;若E≤Th,则执行S65;否则,执行S66;
[0036] S65,启用页填充,从底层闪存中读取E个填补页和回写的脏页组成整个数据块回写入底层闪存;之后执行S67;
[0037] S66,不启用页填充,将D-list-index中的脏页全部回写入底层闪存,执行S67;
[0038] S67,将集合Ф中的数据页全部移入到读缓冲区,同时删除原数据块的缓存块记录表中的D-list-index的位置信息,同时将转移后的新位置指针存入C-list-index;最后结束本次聚簇回写操作。
[0039] 进一步地,所述步骤S8中,所述启动置换策略阈值调整机制,对阈值Tau进行调整,具体调整流程为:
[0040] S81,判断当前请求是否为命中,若是,则执行S82,否则,执行S83;
[0041] S82,判断请求类型和命中区域,若读缓冲区读命中,则CRH加1;若读缓冲区写命中,则CWH加1;若写缓冲区读命中,则DRH加1;若写缓冲区写命中,则CRH加1;最后执行S83;
[0042] S83,更新当前的TCount,即TCount=TCount+1,同时更新统计值Bw和统计值Fw,之后执行S84;
[0043] S84,判断TCount是否达到阈值更新周期CycleTime,若是,则执行S85,否则,结束阈值Tau的本次更新操作;
[0044] 其中,CRH为读缓冲区的读命中统计变量,CWH为读缓冲区的写命中统计变量;DRH为写缓冲区的读命中统计变量,DWH为写缓冲区的写命中统计变量;TCount为当前请求操作计数;CycleTime为阈值更新周期;
[0045] S85,计算目标写缓冲区单位增益DR,目标读缓冲区单位增益CR:
[0046]
[0047] 其中BufSize为读写总缓冲区的大小,Tau’为更新前的阈值,
[0048] Cr,Cw为归一计算得到读写时延代价系数:
[0049]
[0050] 其中,ReadDelay和WriteDelay分别为周期内读延迟和写延迟;之后执行S86。
[0051] S86,更新阈值Tau:
[0052]
[0053] 同时更新周期缓冲区回写次数统计值Bw=0,周期闪存写操作次数统计值Fw=0,周期计数值TCount=1,最后结束阈值Tau的本次更新操作。
[0054] 本发明与现有技术相比,有益效果是:
[0055] 本发明提出的置换和回写自适应的缓冲区管理方法,在加载和剔除数据页时采用页级的管理方式,并通过周期自适应调整读缓冲区阈值,能够感知负载读写特的变化,使得该管理方法在多种负载条件下都能得到较高的缓存命中率。其次,本发明中提出的管理方法在脏页聚簇回写时,能够感知FTL层垃圾回收的压力,自适应地调整回写策略,能够有效的减少因为FTL垃圾回收引发的额外块擦除次数,提升固态硬盘的总体性能和使用寿命。

实施方案

[0063] 为了使本领域技术人员更好地理解本发明的技术方案,下面将结合附图以及具体的实施方式,对本发明进行详细地介绍说明。
[0064] 为了对发明进一步详细说明,首先需要给出本发明相关概念的定义:
[0065] 缓存数据页:缓存的基本读写单位,与闪存的物理页大小一致。
[0066] 缓存数据块:由数据请求页地址对物理块大小进行除法运算,得到商一致的数据页组成的集合,该数据块的最大包含页数和底层物理块的包含物理页数一致。
[0067] 逻辑页地址:主机I/O请求P按照其文件系统的标识的逻辑地址编号(Logical Page Number,LPN)。
[0068] 逻辑块号:也是缓存数据块的编号(Block Number,BlkNum),指定请求P的BlkNum为其LPN除以数据块最大页数得到的商。
[0069] 本发明提出的一种置换和回写自适应的缓冲区管理方法,将缓存划分为三个部分:缓存块记录表,写缓冲区(Write Buffer)和读缓冲区(Read Buffer)。
[0070] 缓存块记录表用来记录同属于一个数据块的不同数据页在缓冲区的位置和状态。缓存块记录表通过记录不同数据页的位置指针,加速了请求数据页的查询,更新,回写的操作。
[0071] 如图1所示,缓存块记录表中,记录块的信息具体包括:当前的缓存块编号BlkNum,当前缓冲区中同属该记录块的数据页个数BlkSize,同属该记录块的干净页位置指针列表C-list-index,同属该记录块的脏页位置指针列表D-list-index。所述的缓存块的大小和实际底层的物理块大小一致,即包含的数据页个数相同,其大小值为BlkMaxSize。对应数据页的逻辑页地址(Logical Page Number,LPN)除BlkMaxSize,所得结果记为其所属的缓存块的编号,相应的余数为其缓存块的偏移量。
[0072] 写缓冲区用于缓存响应写请求后发生修改后的数据页(脏页),该缓冲区的数据页依据LRU原则形成队列进行管理;同时该缓冲区内的数据页又分冷热,前半部分的数据页为热页,后半部的数据页为冷页。
[0073] 读缓冲区用于缓存仅响应读请求未发生修改的数据页(干净页),该缓冲区的数据页同样采用LRU队列管理。该缓冲区中的数据页响应写请求后将被迁入写缓冲区,同样写缓冲区的热数据页发生回写也会被迁入读缓冲区中。
[0074] 如图2所示,读写缓冲区的队列结构中,两种缓冲区的队列大小会因为在置换过程中动态选择置换对象而发生变化。
[0075] 对读写缓冲区的命中情况,底层读写延迟,缓冲区回写次数,底层数据页更新写次数进行周期的统计。
[0076] 将固定观察周期内的写缓冲区的读命中统计变量记为DRH,写缓冲区的写命中统计变量记为DWH;读缓冲区的读命中统计变量记为CRH,读缓冲区的写命中统计变量记为CWH;该周期内缓存区回写次数记为Bw,该周期内闪存写操作次数记为Fw;该周期内写延迟记为WriteDelay,读延迟记为ReadDelay。
[0077] 在选择写缓冲区的数据页作为置换对象并回写入闪存时,将触发自适应聚簇回写机制。
[0078] 如图3所示,自适应聚簇回写机制中,由置换数据页确定回写缓存块,借助该缓存块记录中的D-list-index的记录信息确定回写的脏页集合同时识别保留热脏页。在聚簇回写过程中,根据当前的写入放大系数动态选择是否采用页填充。其操作流程如下:
[0079] S61,选择写缓冲区LRU位置的数据页V作为剔除对象,并查询该数据页对应的缓存记录块中D-list-index信息,之后执行S62。
[0080] S62,依次读取D-list-index的位置指针指向的数据页,并根据位于缓存队列前半部分为热数据的原则,对这些数据页进行判断,并将判别为热的数据页加入保留集合Ф,之后执行S63。
[0081] S63,计算当前回写阈值 其中, 之后执行S64。
[0082] S64,计算填补页数E=BlkMaxSize-N,N为当前记录块在写缓冲区中的数据页个数,之后比较比较E和Th的大小;若E≤Th,则执行S65;否则,执行S66。
[0083] S65,启用页填充,从底层闪存中读取E个填补页和回写的脏页组成整个数据块回写入底层闪存,之后执行S67。
[0084] S66,不启用页填充,将D-list-index中的脏页全部回写入底层闪存,执行S67。
[0085] S67,将集合Ф中的数据页全部移入到读缓冲区,同时删除原数据块的缓存块记录表中的D-list-index的位置信息,同时将转移后的新位置指针存入C-list-index,最后结束本次聚簇回写操作。
[0086] 本发明提出的管理方法中,在置换数据页时,通过比较阈值Tau(当前目标读缓冲区大小)和当前读缓冲区大小,选择置换缓冲对象。其阈值Tau会综合当前读写缓冲区的命中情况和底层的读写延迟,进行周期性的调整,阈值调整机制如图4所示,流程如下:
[0087] S81,判断当前请求是否为命中,若是,则执行S82,否则,执行S83;
[0088] S82,判断请求类型和命中区域,若读缓冲区读命中,则CRH加1;若读缓冲区写命中,则CWH加1;若写缓冲区读命中,则DRH加1;若写缓冲区写命中,则CRH加1;最后执行S83;
[0089] S83,更新当前的TCount,即TCount=TCount+1,同时更新统计值Bw和统计值Fw,之后执行S84;
[0090] S84,判断TCount是否达到阈值更新周期CycleTime,若是,则执行S85,否则,结束本次阈值更新操作;
[0091] 其中,CRH为读缓冲区的读命中统计变量,CWH为读缓冲区的写命中统计变量;DRH为写缓冲区的读命中统计变量,DWH为写缓冲区的写命中统计变量;TCount为当前请求操作计数;CycleTime为阈值更新周期;
[0092] S85,计算目标写缓冲区单位增益DR,目标读缓冲区单位增益CR:
[0093]
[0094] 其中BufSize为读写总缓冲区的大小,Tau’为更新前的阈值,
[0095] Cr,Cw为归一计算得到读写时延代价系数:
[0096]
[0097] 其中,ReadDelay和WriteDelay分别为周期内读延迟和写延迟;之后执行S86。
[0098] S86,更新阈值Tau:
[0099]
[0100] 同时更新周期缓冲区回写次数统计值Bw=0,周期闪存写操作次数统计值Fw=0,周期计数值TCount=1,最后结束阈值Tau的本次更新操作。
[0101] 如图5所示,本发明的请求处理总流程,包含如下步骤:
[0102] S1,当一个请求P到达时,根据请求P的LPN号换算找到对应的缓存块编号pBlkNum,查询缓存块记录表中是否存在该缓存块编号,若存在,则执行S2,否则,执行S4;
[0103] S2,遍历该缓存块记录表项中的位置指针,查询请求P是否存在缓冲区中,若是,则执行S3,否则,执行S5;
[0104] S3,判读请求数据页所在缓冲区位置,将命中的数据页移动至对应缓冲区的MRU位置,同时更新对应缓存块记录表项中的位置指针列表,将旧的指向该数据页的指针剔除,将指向该数据页位置的新指针存入;之后执行S8;
[0105] S4,向缓存块记录表中添加编号pBlkNum缓存块表项信息,初始化该表项的BlkNum=pBlkNum,BlkSize=0,D-list-index和C-list-index为空,之后执行S5;
[0106] S5,判断当前缓冲区是否满,若满,则执行S6,否则执行S7;
[0107] S6,比较当前的读缓冲区大小和阈值Tau的大小,若大于,则选择读缓冲区的LRU位置的数据页进行剔除;否则,选择写缓冲区的LRU位置的数据页作为置换缓冲区,并执行自适应聚簇回写机制;从C-list-index或D-list-index列表中找到指向该剔除数据页的旧位置指针并剔除,并更新对应的记录块的BlkSize=BlkSize-1;之后,执行S7;
[0108] S7,将缺失的请求数据页从闪存读入缓冲区,同时判读其请求类型;若为读请求,则将数据页加载到读缓冲区中,同时将指向该数据页的位置的指针存入缓存块记录的C-list-index中;否则将数据页加载到写缓冲区,同时将位置指针存入对应缓存块记录的D-list-index中;之后更新缓存记录表中的BlkSize=BlkSize+1,之后,执行S8;
[0109] S8,启动周期阈值Tau,对阈值Tau进行周期调整,最后,结束本次请求的处理。
[0110] 所述步骤S3中,更新对应缓存块记录表中的位置指针列表具体为:
[0111] S31,判读请求数据页所在缓冲区位置,若为写缓冲区,则执行S32;若为读缓冲区,则执行S33;
[0112] S32,将命中的数据页移动至写缓冲区的MRU位置,同时更新对应缓存块记录表项中的D-list-index,将旧的指向该数据页的指针剔除,将指向该数据页位置的新指针存入D-list-index;之后执行S8;
[0113] S33,将命中的数据页移至读缓冲区的MRU位置,同时更新相应的C-list-index,将旧的指向该数据页的指针剔除,将新的位置指针存入C-list-index;之后执行S8。
[0114] 为了对本发明的管理方法的处理流程进行进一步说明,结合具体的一组实际请求处理实例进行说明,该实例处理过程如图6所示。
[0115] 在本实例中,数据块大小为4个数据页,缓冲区的大小为10个数据页,读写延迟时延比固定为W/R=4/1,写入放大系数恒定为W=1.5,阈值更新周期为10,当前的周期计数值TCount=1,阈值Tau初始值为5.
[0116] 在本实例中,请求序列如图6中所示,由请求的逻辑地址和请求类型构成,例如(R,20),表示一个访问数据页LPN为20的读请求。
[0117] 在本实例中,针对第一个请求(R,20)的处理流程:
[0118] C1,根据LPN换算得到缓存块号pBlkNum=20/4=5,查询缓存块记录表中是否存在该缓存块号的记录信息。
[0119] C2,不存在该缓存块的信息,加载pBlkNum=5的记录表项到缓存块记录表中,同时更新表项的块编号BlkNum=5,BlkSize=0,C-list-index和D-list-index为空。
[0120] C3,加载请求页入缓冲区,发现缓冲区满,比对读缓冲区大小RL(4)和当前阈值Tau(5),选择写缓冲区LRU位置LPN=13作为置换对象。
[0121] C4,置换页(LPN=13)属于缓存块VBlkNum=13/4=3,属于该缓存块的脏页LPN=14为热需要进行保留,当前的回写阈值 取整为2,填补页为2,选择整块回写,且读缓冲区包含其余数据页,不需要额外的读取操作,直接整块回写即可。
[0122] C5,将VBlkNum=3缓存块中的D-list-index置空,将LPN=14的数据页移入读缓冲区队列的尾部,并将指向该数据页的位置指针存入C-list-index中
[0123] C6,将请求载入缓冲区,判断该请求为读类型,将LPN=20的数据页载入到读缓冲区的MRU位置,并将该位置指针存入到pBlkNum=20/4=5的C-list-index,同时更新其BlkSize=1
[0124] C7,启动周期阈值Tau更新,因为未命中请求,故周期计数值TCount累加变为2,判断TCount小于更新周期CycleTime,所以直接结束更新调整,结束本次请求的操作。
[0125] 在本实例中,针对第二个请求(W,1)的处理流程:
[0126] C8,根据LPN换算得到缓存块号pBlkNum=1/4=0,查询缓存块记录表中是否存在该缓存块号的记录信息。
[0127] C9,遍历该缓存块C-list-index发现存在LPN=1的数据页位于读缓冲区中[0128] C10,判断请求的类型为写请求,则将该数据页从读缓冲区移入到写缓冲区的MRU位置,同时清除C-list-index的位置指针,将有关该数据页新的位置指针存入该缓存块记录表的D-list-index中
[0129] C11,启动周期阈值Tau更新,因为是读缓冲区写命中,故统计值CWH累加,之后周期计数值TCount累加变为3,又未达到更新周期结束调整,结束本次请求的操作。
[0130] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

附图说明

[0056] 为了更清楚地说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0057] 图1:本发明的缓存块记录表示意图。
[0058] 图2:本发明的读写缓冲区队列结构示意图。
[0059] 图3:本发明的自适应聚簇回写流程图。
[0060] 图4:本发明的周期阈值调整流程图。
[0061] 图5:本发明的请求处理总流程图。
[0062] 图6:本发明的实例处理过程图。
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号