当前位置: 首页 > 专利查询>安徽大学专利>正文

一种面向大规模非易失性存储介质的缓存方法和系统技术方案

技术编号:15541686 阅读:376 留言:0更新日期:2017-06-05 10:58
本发明专利技术公开了一种面向大规模非易失性存储介质的缓存方法和系统,包括:获取命令请求,当命令请求为写命令请求时,将目标映射项根据逻辑地址前缀存入H‑Cache,当H‑Cache内剩余空间小于A时,将H‑Cache中最长时间没被访问的映射项迁移到C‑Cache,当C‑Cache内剩余空间小于B时,将C‑Cache中Block按照访问次数排序,检查访问次数最少Block中映射项标志位,若为0,将映射项写到Mapping中,将映射项标志位置为1,若为1,删除映射项;当命令请求为读命令请求时,获取目标映射项逻辑地址并在H‑Cache中检索逻辑地址对应的目标映射项,若有,输出目标映射项的物理地址;若无,在C‑Cache中搜索逻辑地址对应的目标映射项,若有,输出目标映射项的物理地址,若无,在Mapping区中检索并输出逻辑地址的对应的物理地址。

Cache method and system for large-scale nonvolatile storage medium

The invention discloses a method and system for large scale non cached, non-volatile storage medium includes: acquiring the command request, when the command request for a write command request, mapping the target according to the logical address prefix is stored in the H Cache H Cache, when in the remaining space is less than A, H Cache the long time no access map is migrated to the C Cache C Cache, when remaining in the space of less than B, the Block C Cache according to the number of visits to sort, check visits at least Block mapping markers, if 0, map items written in Mapping, the marks of position mapping 1, if 1, delete the mapping; when the command request to read commands, obtain the target mapping logic address and search target mapping, the logical address corresponding to the H Cache in if, the physical output target mapping item The site; if not, the search target mapping, the logical address corresponding to the C Cache in if, physical address, mapping the target output if not, physical addresses corresponding in the Mapping area in search and output the logical address.

【技术实现步骤摘要】
一种面向大规模非易失性存储介质的缓存方法和系统
本专利技术涉及数据存储检索
,尤其涉及一种面向大规模非易失性存储介质的缓存方法和系统。
技术介绍
相比于传统的磁盘,基于非易失性存储介质(Non-VolatileMemory,NVM)的固态硬盘呈现出许多低功耗、读写速度快、防震较好等优点,在一些存储性能要求的较高的场所(如数据中心),NVM(Non-VolatileMemory)介质设备使用比例已超过磁盘。大数据时代,国际数据公司预测,从2016年开始的五年内,全球每年产生的数据总量均将增加40%,到2020年全球数据总量将达到44ZB。基于NVM介质的固态盘系统中,传统的数据组织和管理形式的弊端开始显现。首先,随着存储数据量增长,一方面,管理逻辑数据与物理数据映射的元数据量较大,这些元数据所需的缓存空间和存储空间较大;另一方面,基于这些元数据的缓存和索引管理的实现难度较复杂,尤其随着大容量三维NVM介质被应用到固态盘系统中,传统缓存和索引管理的方法逐渐不能完成满足高性能存储访问的需求,这将成为数据存储访问性能的瓶颈之一。现有固态盘结构中,为了兼容传统主机端文件系统对块设备的访问模式,通常在固态盘软件栈设计一种NVM设备转换层(Non-VolatileMemoryTranslationLayer,NVMTL),其主要包括地址映射、磨损平衡和垃圾回收等模块,其中地址映射是NVMTL最核心的功能,它负责将来自文件系统的逻辑地址转换为NVM设备中的物理地址。根据逻辑地址与物理地址映射粒度的大小,NVMTL地址映射可以分为页映射、块映射以及混合映射。大多数NVMTL地址映射管理中,逻辑地址与物理地址的关系条目均采用二维表的形式组织管理。在基于NVM介质的大容量存储系统中,首先,当数据量较大时,数据检索性能较低;此外,NVM介质现有部分解决方案采用采用二级映射的方法来缓存全体映射项中的一部分经常被访问的映射条目,这在访问不命中条件下的检索性能较差,存储访问管理上较难实现。
技术实现思路
基于
技术介绍
存在的技术问题,本专利技术提出了一种面向大规模非易失性存储介质的缓存方法和系统;本专利技术提出的一种面向大规模非易失性存储介质的缓存方法,该方法包括以下步骤:S1、根据用户命令请求判断其为目标映射项写命令请求或目标映射项读命令请求,当判断所述命令请求为目标映射项写命令请求时执行S2;当判断所述命令请求为目标映射项读命令请求时执行S3;S2、将目标映射项末尾标志位置为0,再将目标映射项根据其逻辑地址前缀存入H-Cache区中;S3、获取目标映射项读命令请求中的逻辑地址,判断H-Cache中是否有所述逻辑地址对应的目标映射项,当判断结果为是时,输出所述目标映射项对应的物理地址;当判断结果为否时,检索C-Cache中是否有所述逻辑地址对应的目标映射项,当检索结果为是时,输出所述目标映射项对应的物理地址,当检索结果为否时,在Mapping区中检索所述逻辑地址对应的目标映射项并输出所述目标映射项对应的物理地址。2、根据权利要求1所述的面向大规模非易失性存储介质的缓存方法,其特征在于,步骤S2,具体包括:S20、将目标映射项末尾标志位置为0;S21、将目标映射项根据其逻辑地址前缀存入H-Cache区的非压缩前缀完全二叉树中,判断H-Cache区内剩余空间是否小于预设阈值A,当判断结果为是时,对H-Cache区中的原有映射项进行迁移,执行S22;当判断结果为否时,不进行操作;S22、将H-Cache区中最长时间没被访问的映射项迁移到C-Cache区的压缩前缀完全二叉树中,判断C-Cache区内剩余空间是否小于预设阈值B,当判断结果为是时,将C-Cache区中的Block块按照访问次数排序,并逐项检查访问次数最少的Block块中映射项的标志位为0或1,若标志位为0,将该映射项迁移到Mapping区中,再将该映射项标志位置为1,若标志位为1,删除该映射项;当判断结果为否时,不进行操作。3、根据权利要求2所述的面向大规模非易失性存储介质的缓存方法,其特征在于,在步骤S21中,所述将目标映射项根据其逻辑地址前缀存入H-Cache区的非压缩前缀完全二叉树之前,还包括:通过非压缩前缀完全二叉树构建方法建立H-Cache区的非压缩前缀完全二叉树,其中,所述非压缩前缀完全二叉树构建方法,具体包括:S200、建立一个Block块作为根节点,并设置Block块前缀为0;其中,所述Block块存储的映射项数量为1;S201、将H-Cache区中需要存入树中的映射项的逻辑地址首位设置为0,并将第一个映射项存入所述Block块中;S202、再存入一个新的映射项到所述Block块中,所述Block块存储的映射项数量已满,将所述Block块分裂出两个子节点,两个子Block块节点的前缀分别设置为00和01,然后将原来前缀为0的Block块节点中的映射项逐项检查其逻辑地址的前两位,将逻辑地址前两位为00的映射项转移到前缀为00的子Block块节点中,将逻辑地址前两位为01的映射项转移到前缀为01的子Block块节点中,最后将新存入的映射项根据其逻辑地址前两位存入相应的子Block块节点中;S203、重复步骤S202操作,直至H-Cache区中需要存入树中的映射项全部存入树中后,通过虚拟节点补全所述树,得到非压缩前缀完全二叉树。4、根据权利要求1所述的面向大规模非易失性存储介质的缓存方法,其特征在于,在步骤S3中,在判断H-Cache中是否有所述逻辑地址对应的目标映射项之前,包括:通过非压缩前缀完全二叉树构建方法建立H-Cache区的非压缩前缀完全二叉树,其中,所述非压缩前缀完全二叉树构建方法,具体包括:S210、建立一个Block块作为根节点,并设置Block块前缀为0;其中,所述Block块存储的映射项数量为1;S211、将H-Cache区中需要存入树中的映射项的逻辑地址首位设置为0,并将第一个映射项存入所述Block块中;S212、再存入一个新的映射项到所述Block块中,所述Block块存储的映射项数量已满,将所述Block块分裂出两个子节点,两个子Block块节点的前缀分别设置为00和01,然后将原来前缀为0的Block块节点中的映射项逐项检查其逻辑地址的前两位,将逻辑地址前两位为00的映射项转移到前缀为00的子Block块节点中,将逻辑地址前两位为01的映射项转移到前缀为01的子Block块节点中,最后将新存入的映射项根据其逻辑地址前两位存入相应的子Block块节点中;S213、重复步骤S212操作,直至H-Cache区中需要存入树中的映射项全部存入树中后,通过虚拟节点补全所述树,得到非压缩前缀完全二叉树;在步骤S3中,通过非压缩前缀完全二叉树检索算法判断H-Cache中是否有所述逻辑地址对应的目标映射项,其中,所述非压缩前缀完全二叉树检索算法具体包括:S300、接收目标映射项的逻辑地址;S301、根据H-Cache区前缀完全二叉树的高度k,取目标映射项的逻辑地址前k位,并利用二叉树Block块序号快速计算算法,计算得到目标映射项可能存在的Block块号;S302、检索所述Block块中是否存储目标映射项的逻辑地址,当检索结果为是时,返回目标映射项的本文档来自技高网
...
一种面向大规模非易失性存储介质的缓存方法和系统

【技术保护点】
一种面向大规模非易失性存储介质的缓存方法,其特征在于,所述方法包括以下步骤:S1、根据用户命令请求判断其为目标映射项写命令请求或目标映射项读命令请求,当判断所述命令请求为目标映射项写命令请求时执行S2;当判断所述命令请求为目标映射项读命令请求时执行S3;S2、将目标映射项末尾标志位置为0,再将目标映射项根据其逻辑地址前缀存入H‑Cache区中;S3、获取目标映射项读命令请求中的逻辑地址,判断H‑Cache中是否有所述逻辑地址对应的目标映射项,当判断结果为是时,输出所述目标映射项对应的物理地址;当判断结果为否时,检索C‑Cache中是否有所述逻辑地址对应的目标映射项,当检索结果为是时,输出所述目标映射项对应的物理地址,当检索结果为否时,在Mapping区中检索所述逻辑地址对应的目标映射项并输出所述目标映射项对应的物理地址。

【技术特征摘要】
1.一种面向大规模非易失性存储介质的缓存方法,其特征在于,所述方法包括以下步骤:S1、根据用户命令请求判断其为目标映射项写命令请求或目标映射项读命令请求,当判断所述命令请求为目标映射项写命令请求时执行S2;当判断所述命令请求为目标映射项读命令请求时执行S3;S2、将目标映射项末尾标志位置为0,再将目标映射项根据其逻辑地址前缀存入H-Cache区中;S3、获取目标映射项读命令请求中的逻辑地址,判断H-Cache中是否有所述逻辑地址对应的目标映射项,当判断结果为是时,输出所述目标映射项对应的物理地址;当判断结果为否时,检索C-Cache中是否有所述逻辑地址对应的目标映射项,当检索结果为是时,输出所述目标映射项对应的物理地址,当检索结果为否时,在Mapping区中检索所述逻辑地址对应的目标映射项并输出所述目标映射项对应的物理地址。2.根据权利要求1所述的面向大规模非易失性存储介质的缓存方法,其特征在于,步骤S2,具体包括:S20、将目标映射项末尾标志位置为0;S21、将目标映射项根据其逻辑地址前缀存入H-Cache区的非压缩前缀完全二叉树中,判断H-Cache区内剩余空间是否小于预设阈值A,当判断结果为是时,对H-Cache区中的原有映射项进行迁移,执行S22;当判断结果为否时,不进行操作;S22、将H-Cache区中最长时间没被访问的映射项迁移到C-Cache区的压缩前缀完全二叉树中,判断C-Cache区内剩余空间是否小于预设阈值B,当判断结果为是时,将C-Cache区中的Block块按照访问次数排序,并逐项检查访问次数最少的Block块中映射项的标志位为0或1,若标志位为0,将该映射项迁移到Mapping区中,再将该映射项标志位置为1,若标志位为1,删除该映射项;当判断结果为否时,不进行操作。3.根据权利要求2所述的面向大规模非易失性存储介质的缓存方法,其特征在于,在步骤S21中,所述将目标映射项根据其逻辑地址前缀存入H-Cache区的非压缩前缀完全二叉树之前,还包括:通过非压缩前缀完全二叉树构建方法建立H-Cache区的非压缩前缀完全二叉树,其中,所述非压缩前缀完全二叉树构建方法,具体包括:S200、建立一个Block块作为根节点,并设置Block块前缀为0;其中,所述Block块存储的映射项数量为1;S201、将H-Cache区中需要存入树中的映射项的逻辑地址首位设置为0,并将第一个映射项存入所述Block块中;S202、再存入一个新的映射项到所述Block块中,所述Block块存储的映射项数量已满,将所述Block块分裂出两个子节点,两个子Block块节点的前缀分别设置为00和01,然后将原来前缀为0的Block块节点中的映射项逐项检查其逻辑地址的前两位,将逻辑地址前两位为00的映射项转移到前缀为00的子Block块节点中,将逻辑地址前两位为01的映射项转移到前缀为01的子Block块节点中,最后将新存入的映射项根据其逻辑地址前两位存入相应的子Block块节点中;S203、重复步骤S202操作,直至H-Cache区中需要存入树中的映射项全部存入树中后,通过虚拟节点补全所述树,得到非压缩前缀完全二叉树。4.根据权利要求1所述的面向大规模非易失性存储介质的缓存方法,其特征在于,在步骤S3中,在判断H-Cache中是否有所述逻辑地址对应的目标映射项之前,包括:通过非压缩前缀完全二叉树构建方法建立H-Cache区的非压缩前缀完全二叉树,其中,所述非压缩前缀完全二叉树构建方法,具体包括:S210、建立一个Block块作为根节点,并设置Block块前缀为0;其中,所述Block块存储的映射项数量为1;S211、将H-Cache区中需要存入树中的映射项的逻辑地址首位设置为0,并将第一个映射项存入所述Block块中;S212、再存入一个新的映射项到所述Block块中,所述Block块存储的映射项数量已满,将所述Block块分裂出两个子节点,两个子Block块节点的前缀分别设置为00和01,然后将原来前缀为0的Block块节点中的映射项逐项检查其逻辑地址的前两位,将逻辑地址前两位为00的映射项转移到前缀为00的子Block块节点中,将逻辑地址前两位为01的映射项转移到前缀为01的子Block块节点中,最后将新存入的映射项根据其逻辑地址前两位存入相应的子Block块节点中;S213、重复步骤S212操作,直至H-Cache区中需要存入树中的映射项全部存入树中后,通过虚拟节点补全所述树,得到非压缩前缀完全二叉树;在步骤S3中,通过非压缩前缀完全二叉树检索算法判断H-Cache中是否有所述逻辑地址对应的目标映射项,其中,所述非压缩前缀完全二叉树检索算法具体包括:S300、接收目标映射项的逻辑地址;S301、根据H-Cache区前缀完全二叉树的高度k,取目标映射项的逻辑地址前k位,并利用二叉树Block块序号快速计算算法,计算得到目标映射项可能存在的Block块号;S302、检索所述Block块中是否存储目标映射项的逻辑地址,当检索结果为是时,返回目标映射项的逻辑地址对应的物理地址;当检索结果为否时,执行S303;S303、令k=k-1,执行S301、S302操作,直至K=1,执行S304;S304、根据目标映射项的逻辑地址前1位和二叉树Block块序号快速计算算法,计算得到目标映射项可能存在的Block块号,检索所述Block块中是否存储目标映射项的逻辑地址,当检索结果为是时,返回目标映射项的逻辑地址对应的物理地址;当检索结果为否时,表示目标映射项的逻辑地址在所述非压缩前缀完全二叉树中不存在;在步骤S3中,所述检索C-Cache中是否有所述逻辑地址对应的目标映射项之前,还包括:通过压缩前缀完全二叉树构建方法建立C-Cache区的压缩前缀完全二叉树;所述在Mapping区中检索所述逻辑地址对应的目标映射项并输出所述目标映射项对应的物理地址之前,还包括:通过压缩前缀完全二叉树构建方法建立Mapping区的压缩前缀完全二叉树;其中,所述压缩前缀完全二叉树构建方法,具体包括:S310、建立一个Block块作为根节点,并设置Block块前缀为0;其中,所述Block块存储的映射项数量为M,其中,1<M;S311、将需要存入树中的映射项的逻辑地址首位设置为0,将第一个映射项存入所述Block块中并执行数据压缩;S312、解压缩所述Block块,再逐项存入新的映射项到所述Block块中,当所述Block块中的映射项数目已达设定阈值M时,将所述Block块分裂出两个子节点,两个子Block块节点的前缀分别设置为00和01,然后将原来前缀为0的Block块节点中的映射项逐项检查其逻辑地址的前两位,将逻辑地址前两位为00的映射项转移到前缀为00的子Block块节点中,将逻辑地址前两位为01的映射项转移到前缀为01的子Block块节点中,最后将新存入的映射项根据其逻辑地址前两位存入相应的子Block块节点中;S313、重复步骤S312操作,直至需要存入树中的映射项全部存入树后,通过虚拟节点补全所述树,得到压缩前缀完全二叉树;在步骤S3中,通过压缩前缀完全二叉树检索算法检索C-Cache中是否有所述逻辑地址对应的目标映射项,且通过压缩前缀完全二叉树检索算法检索Mapping区中是否有所述逻辑地址对应的目标映射项,其中,所述压缩前缀完全二叉树检索算法具体包括:S320、接收目标映射项的逻辑地址;S321、根据C-Cache区或Mapping区中压缩前缀完全二叉树的高度k取目标映射项的逻辑地址前k位,并利用二叉树Block块序号快速计算算法,计算得到目标映射项可能存在的Block块号;S322、检索所述Block块的Bloomfilter中是否含有目标映射项的存储标记,当检索结果为是时,解压缩所述Block块并返回目标映射项的逻辑地址对应的物理地址,再压缩所述Block块;当检索结果为否时,执行S323;S323、令k=k-1,执行S321、S322操作,直至K=1,执行S324;S324、根据目标映射项的逻辑地址前1位和二叉树Block块序号快速计算算法,计算得到目标映射项可能存在的Block块号,检索所述Block块的Bloomfilter中是否含有目标映射项的存储标记,当检索结果为是时,返回目标映射项的逻辑地址对应的物理地址;当检索结果为否时,表示目标映射项的逻辑地址在所述压缩前缀完全二叉树中不存在。5.根据权利要求1所述的面向大规模非易失性存储介质的缓存方法,其特征在于,在步骤S3中,所述检索C-Cache中是否有所述逻辑地址对应的目标映射项,当检索结果为是时,输出所述目标映射项对应的物理地址过程中,具体包括:记录此次检索时间,当预设时间内所述逻辑地址对应的目标映射项被再次被检索到时,将所述目标映射项转移到H-Cache区;在步骤S3中,所述在Mapping区中检索所述逻辑地址对应的目标映射项并输出所述目标映射项对应的物理地址过程中,还包括:在Mapping区中检索所述逻辑地址对应的目标映射项所在的Block块,并将所述Block块中目标映射...

【专利技术属性】
技术研发人员:孙辉陈国栋施巍松
申请(专利权)人:安徽大学
类型:发明
国别省市:安徽,34

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1