一种闪存存储系统及其读写、删除方法

文档序号:8319097阅读:159来源:国知局
一种闪存存储系统及其读写、删除方法
【专利说明】
【技术领域】
[0001]本发明涉及存储领域,具体涉及一种闪存存储系统及其读写、删除方法。
【【背景技术】】
[0002]使用NAND Flash的固态存储系统逐渐成为一种新的广受欢迎的存储系统(SolidState Disk,SSD)。随着闪存技术的发展,MLC(Mult1-Level Cell)的单 page 容量从 4KB逐渐发展到8KB,16KB,32KB,随着TLC技术的成熟,单page容量会达到64KB,128KB甚至更高。然而Flash的使用寿命是有限的(25nm MLC擦写次数在3000次左右)。
[0003]零拷贝(zero-copy)最初是实现主机或路由器等设备高速网络接口的主要技术。零拷贝技术后来泛指可以减少数据拷贝和共享总线操作的次数,消除数据在存储器之间不必要的中间拷贝过程,有效地提高通信效率,是设计高速接口通道、实现高速服务器和路由器的关键技术之一。
[0004]当前缓存技术的两大不足:
[0005]由于Flash使用寿命有限,在Flash之前增加一级缓存,从而减少对Flash的擦写,是传统通用做法,但存储系统读写访问大小是4KB,而闪存的写入单位是page。而随着闪存技术发展,单page的容量可达16KB,32KB。如果按照传统做法,以访问请求大小4KB作为缓存的load,flush单位,则会造成写放大。增加Flash擦写次数,降低Flash寿命。如果单纯按照page大小申请缓存,则会造成缓存空间的浪费,从而降低缓存命中率。
[0006]传统闪存的缓存在读写时,需要经过两次数据拷贝,从而降低了缓存的访问速度。影响整个存储系统的性能。

【发明内容】

[0007]为了克服现有技术的不足,本发明提供了一种闪存存储系统及其读写、删除方法,以减少缓存与后端闪存之间的中间拷贝过程。
[0008]一种闪存存储系统的写数据方法,所述闪存存储系统包括缓存、主控模块、缓存元数据记录表和写映射表;其中,所述写映射表用于存储在缓存中写入逻辑存储块与物理存储块的对应关系,所述缓存元数据记录表用于存储元数据表地址、物理存储块和后端闪存地址之间的对应关系;所述闪存存储系统的写数据方法包括如下步骤:
[0009]SI,所述主控模块接收前端应用发出的将第一写入逻辑存储块中的数据写入第一后端闪存地址的命令;
[0010]S2,所述主控模块读取所述写映射表,获取与所述第一写入逻辑存储块对应的所述缓存中的第一物理存储块;
[0011]S3,所述主控模块对所述第一后端闪存地址进行计算,获得与所述第一后端闪存地址对应的第一元数据表地址;
[0012]S4,所述主控模块读取所述缓存元数据记录表,获取与所述第一元数据表地址对应的当前后端闪存地址;
[0013]S5,所述主控模块判断所述第一后端闪存地址与当前后端闪存地址是否相同;
[0014]S6,若所述第一后端闪存地址与所述当前后端闪存地址相同,则将所述第一物理存储块替换所述缓存元数据记录表中与所述当前后端闪存地址对应的当前物理存储块;
[0015]S7,若所述第一后端闪存地址与所述当前后端闪存地址不同,则将所述缓存元数据记录表中与所述当前后端闪存地址对应的当前物理存储块的数据存储到后端闪存的当前后端闪存地址中,并将所述第一后端闪存地址和第一物理存储块分别替代所述当前后端闪存地址和当前物理存储块。
[0016]在一个实施例中,所述闪存存储系统还包括引用计数表、空闲物理块FIFO和回收模块,所述空闲物理块FIFO用于存放所述缓存中空闲的物理存储块,所述计数表用于存储物理存储块与对应的引用次数,当所述空闲物理块FIFO将空闲的物理存储块分配出去时,将分配出去的物理存储块的引用次数设置为第一引用次数值;
[0017]还包括回收物理存储块步骤:
[0018]对于被替换的物理存储块,读取所述引用计数表中对应物理存储块的引用次数,若对应物理存储块的引用次数大于所述第一引用次数值则将对应的物理存储块的引用次数减设定引用次数,若对应物理存储块的引用次数等于第一引用次数值,则所述回收模块将对应的物理存储块写入所述空闲物理块FIFO中。
[0019]在一个实施例中,所述缓存元数据记录表还用于存储与物理存储块对应的物理存储块有效标志位,在所述物理存储块存储数据之前对应的物理存储块有效标志位的值被置为非有效值,在所述物理存储块存储数据之后对应的物理存储块有效标志位的值被置为有效值;
[0020]在所述步骤S6中,在将所述第一物理存储块替换所述缓存元数据记录表中与所述当前后端闪存地址对应的当前物理存储块之前,还包括如下步骤:
[0021]在所述缓存元数据记录表中判断所述当前后端闪存地址对应的当前物理存储块的物理存储块有效标志位的值是有效值还是非有效值,若是有效值则执行回收物理存储块步骤。
[0022]在一个实施例中,所述闪存存储系统还包括缓存元数据状态表;
[0023]所述缓存元数据记录表中,所述物理存储块具有多个,多个物理存储块分别与以所述后端闪存地址为基准的连续多个后端闪存地址相对应;
[0024]所述缓存元数据记录表还用于存储与物理存储块对应的物理存储块有效标志位,在物理存储块存储数据之前对应的物理存储块有效标志位的值被置为非有效值,在物理存储块存储数据之后对应的物理存储块有效标志位的值被置为有效值;
[0025]所述缓存元数据状态表用于存储元数据表地址、占用标志位和空标志位之间的对应关系,所述占用标志位的值包括分别表示所述元数据表地址对应的表项被占用和没有被占用的占用值和非占用值,所述空标志位的值包括分别表示所述元数据表地址中的物理存储块被写入数据和没有被写入数据的非空值和空值;
[0026]在所述步骤S3与步骤S4之间,还包括如下步骤:
[0027]S3.1,所述主控模块读取所述缓存元数据记录表,判断所述第一元数据表地址对应的占用标志位的值是否为占用值,若是则等待,否则执行步骤S3.2 ;
[0028]S3.2,所述主控模块判断所述第一元数据表地址对应的空标志位的值是否为非空值,若是则执行步骤S4;
[0029]在所述步骤S6中,还包括如下步骤:
[0030]S6.1,判断所述缓存元数据记录表中,与所述第一后端闪存地址对应的物理存储块的物理存储块有效标识的值是否为有效值;
[0031]S6.2,若是有效值则执行回收物理存储块步骤,并执行步骤S6.4 ;
[0032]S6.3,若不是有效值则将对应的物理存储块有效标识的值设为有效值,并执行步骤 S6.4 ;
[0033]S6.4,将所述第一物理存储块写入所述缓存元数据记录表的对应位置。
[0034]在一个实施例中,在步骤S6和步骤S7后,从所述空闲物理块FIFO中为所述第一写入逻辑存储块分配新的物理存储块。
[0035]本发明还提供了一种闪存存储系统的读数据方法,所述闪存存储系统包括缓存、主控模块、缓存元数据记录表和读映射表;其中,所述读映射表用于存储在缓存中读出逻辑存储块与物理存储块的对应关系,所述缓存元数据记录表用于存储元数据表地址、物理存储块和后端闪存地址之间的对应关系;所述闪存存储系统的读数据方法包括如下步骤:
[0036]SI,所述主控模块接收前端应用发出的将第一后端闪存地址的数据写入第一读出逻辑存储块中的命令;
[0037]S2,所述主控模块对所述第一后端闪存地址进行计算,获得与所述第一后端闪存地址对应的第一元数据表地址;
[0038]S3,所述主控模块读取所述缓存元数据记录表,获取与所述第一元数据表地址对应的当前后端闪存地址;
[0039]S4,所述主控模块判断所述第一后端闪存地址与当前后端闪存地址是否相同;
[0040]S5,若所述第一后端闪存地址与所述当前后端闪存地址相同,则将所述缓存元数据记录表中与所述第一后端闪存地址对应的当前物理存储块写入所述读映射表中且与所述第一读出逻辑存储块相对应;
[0041]S6,若所述第一后端闪存地址与所述当前后端闪存地址不同,则将所述缓存元数据记录表中与所述当前后端闪存地址对应的当前物理存储块的数据存储到后端闪存的当前后端闪存地址中,并将所述第一后端闪存地址和新的物理存储块分别替代所述当前后端闪存地址和当前物理存储块,并将所述新的物理存储块写入所述读映射表中且与所述第一读出逻辑存储块相对应。
[0042]在一个实施例中,所述闪存存储系统还包括引用计数表、空闲物理块FIFO和回收模块,所述空闲物理块FIFO用于存放所述缓存中空闲的物理存储块,所述计数表用于存储所述物理存储块与对应的引用次数,当所述空闲物理块FIFO将空闲的物理存储块分配出去时,将分配出去的物理存储块的引用次数设置为第一引用次数值;还包括回收物理存储块步骤:
[0043]在步骤S5中,当所述第一后端闪存地址对应的当前物理存储块写入所述读映射表中后,还包括如下步骤:
[0044]S5.1,将与所述第一后端闪存地址对应的当前物理存储块的引用次数增加设定引用次数,并将所述读映射表中与所述第一读出逻辑存储块对应的旧的物理存储块的引用次数减所述设定引用次数;
[0045]在步骤S6中,将所述新的物理存储块写入所述读映射表中后,还包括如下步骤:
[0046]S6.1,将所述新的物理存储块的引用次数增加设定引用次数,并将所述读映射表中与所述第一读出逻辑存储块对应的旧的物理存储块的引用次数减所述设定引用次数;
[0047]对于替换和被替换的物理存储块,读取所述引用计数表中物理存储块的引用次数,若物理存储块的引用次数大于所述第一引用次数值,则将对应的物理存储块的引用次数减设定引用次数,若物理存储块的引用次数等于第一引用次数值,则所述回收模块将对应的物理存储块写入所述空闲物理块FIFO中。
[0048]在一个实施例中,所述闪存存储系统还包括缓存元数据状态表;
[0049]所述缓存元数据记录表中,所述物理存储块具有多个,多个物理存储块分别与以所述后端闪存地址为基准的连续多个后端闪存地址相对应;
[0050]所述缓存元数据记录表还用于存储与物理存储块对应的物理存储块有效标志位,在物理存储块存储数据之前对应的物理存储块有效标志位的值被置为非有效值,在物理存储块存储数据之后对应的物理存储块有效标志位的值被置为有效值;
[0051]所述缓存元数据状态表用于存储元数据表地址、占用标志位和空标志位之间的对应关系,所述占用标志位的值包括分别表示所述元数据表地址对应的表项被占用和没有被占用的占用值和非占用值,所述空标志位的值包括分别表示所述元数据表地址中的物理存储块被写入数据和没有被写入数据的非空值和空值;
[0052]在所述步骤S2与步骤S3之间,还包括如下步骤:
[0053]S3.1,所述主控模块读取所述缓存元数据记录表,判断所述第一元数据表地址对应的占用标志位的值是否为占用值,若是则等待,否则执行步骤S3.2 ;
[0054]S3.2,所述主控模块判断所述第一元数据表地址对应的空标志位的值是否为非空值,若是则执行步骤S3;
[0055]在所述步骤S5中,还包括如下步骤:
[0056]S5.1,判断所述缓存元数据记录表中,与所述第一后端闪存地址对应的物理存储块的物理存储块有效标识的值是否为有效值;
[0057]S5.2,若是有效值则执行回收物理存储块步骤;
[0058]S5.3,若不是有效值则将对应的物理存储块有效标识的值设为有效值。
[0059]本发明还一种闪存存
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1