基于闪存的数据写入方法和装置的制造方法

文档序号:8512408阅读:341来源:国知局
基于闪存的数据写入方法和装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别是涉及一种基于闪存的数据写入方法和装置。
【背景技术】
[0002]闪存是一种广泛使用的存储介质,其中Nand Flash (Nand型闪存,一种非挥发性闪存)是一种新型闪存,以Nand型闪存制作的固态硬盘、存储卡等具有读写速度快、无振动的优点,广泛应用于军事、车载、工控、视频监控、电力、医疗、互联网等领域。
[0003]Nand型闪存的基本结构包括若干块,每个块又包括若干页。块的尺寸大于页的尺寸,以当前典型Nand型闪存为例,块尺寸一般为2M字节,而页尺寸一般为8K字节。
[0004]Nand型闪存可以重复写,但是重复写之前必须执行擦除操作,而对Nand型闪存的擦除操作会影响其使用寿命。其中,Nand型闪存的擦除是以块为单位的,而对Nand型闪存的读写通常以页为单位。如果对Nand型闪存的同一个地址重复写,需要该地址对应的块中的数据读出来,根据待写入的数据内容更新数据后,再执行擦除操作,然后再将更新后的数据写入擦除后的块中。这个过程导致非常慢的重复写速度,同时也带来了写入放大的问题。写入放大问题是指将待写入数据写入Nand型闪存中的过程中,写入的数据量,比待写入数据本身的数据量要多。
[0005]传统技术中为解决写入放大的问题,以Nand型闪存为存储介质的固态硬盘和存储卡设计方案引入了硬件映射层。硬件映射层将Nand型闪存的读写地址分为两种地址,物理地址和逻辑地址。用户触发的读写地址是逻辑地址,逻辑地址经过硬件映射层的转换,从逻辑地址转为物理地址,才真正执行读写。重复写同一个逻辑地址,经过硬件映射层的转换后,可以写到不同的物理地址,并将之前的物理地址对应的数据标记为无效数据,因此避免了擦除操作,可减轻写入放大问题。
[0006]但Nand型闪存经过多次读写操作后,Nand型闪存中的同一块中,有部分是有效数据,有部分是无效数据,空的块没有或很少,此时就需要进行垃圾回收。垃圾回收需要读出多个块内的有效数据,将多个块内的有效数据整合到Nand型闪存中预留的冗余空间中的块,然后将只有无效数据的块擦除,从而释放无效数据占用的块。但垃圾回收的过程引入了Nand型闪存内部的写操作,放大了写的次数,可能导致Nand型闪存的寿命缩短。而且预留的冗余空间导致用于用户存储数据的存储空间减小,而且冗余空间越大,越容易在用户存储空间满的情况下进行垃圾回收,写入放大问题更严重。

【发明内容】

[0007]基于此,有必要针对Nand型闪存存在写入放大的问题,提供一种基于闪存的数据写入方法和装置。
[0008]一种基于闪存的数据写入方法,所述方法包括:
[0009]接收原始数据写入请求;
[0010]根据所述原始数据写入请求对应的待写入数据的数据量聚合多个所述原始数据写入请求,使聚合的数据写入请求对应的待写入数据的数据量总量与块容量的正整数倍匹配;
[0011]根据所述聚合的数据写入请求,在Nand型闪存中确定与所述匹配的块容量的倍数对应的数量的空闲物理块,将所述聚合的数据写入请求对应的待写入数据写入所述确定的空闲物理块。
[0012]一种基于闪存的数据写入装置,所述装置包括:
[0013]数据写入请求接收模块,用于接收原始数据写入请求;
[0014]聚合模块,用于根据所述原始数据写入请求对应的待写入数据的数据量聚合多个所述原始数据写入请求,使聚合的数据写入请求对应的待写入数据的数据量总量与块容量的正整数倍匹配;
[0015]数据写入模块,用于根据所述聚合的数据写入请求,在Nand型闪存中确定与所述匹配的块容量的倍数对应的数量的空闲物理块,将所述聚合的数据写入请求对应的待写入数据写入所述确定的空闲物理块。
[0016]上述基于闪存的数据写入方法,将多个原始数据写入请求聚合,且聚合的数据写入请求对应的待写入数据的数据量总量与块容量的正整数倍匹配,然后向与匹配的块容量的倍数对应的数量的空闲物理块中写入聚合的数据写入请求所对应的待写入数据。这样每次向空闲物理块写入数据,写入的聚合的数据写入请求对应的待写入数据的数据量总量能够覆盖一个或多个物理块,不需要数据的移动以及擦除等操作,实现了以块为单位进行写入。写入数据与擦除数据都是以块为单位进行,保证了写入与擦除的一致,可有效避免写入放大问题。
【附图说明】
[0017]图1为一个实施例中基于闪存的数据写入方法的流程示意图;
[0018]图2为一个实施例中根据聚合的数据写入请求,在Nand型闪存中确定与匹配的块容量的倍数对应的数量的空闲物理块,将聚合的数据写入请求对应的待写入数据写入确定的空闲物理块的步骤的流程;
[0019]图3为一个实施例中基于闪存的数据写入系统的结构框图;
[0020]图4为一个实施例中基于闪存的数据写入装置的结构框图;
[0021]图5为图4中的数据写入模块的一个实施例的结构框图;
[0022]图6为图5中的块映射模块的一个实施例的结构框图;
[0023]图7为另一个实施例中基于闪存的数据写入装置的结构框图;
[0024]图8为在一个实施例中基于闪存的数据写入装置的结构框图。
【具体实施方式】
[0025]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0026]除非上下文另有特定清楚的描述,本发明中的元件和组件,数量既可以单个的形式存在,也可以多个的形式存在,本发明并不对此进行限定。本发明中的步骤虽然用标号进行了排列,但并不用于限定步骤的先后次序,除非明确说明了步骤的次序或者某步骤的执行需要其他步骤作为基础,否则步骤的相对次序是可以调整的。可以理解,本文中所使用的术语“和/或”涉及且涵盖相关联的所列项目中的一者或一者以上的任何和所有可能的组口 O
[0027]如图1所示,在一个实施例中,提供了一种基于闪存的数据写入方法,本实施例以该方法应用于Nand型闪存来举例说明,可以理解的是该方法可以应用于任何以块为单位进行擦除的闪存。该方法包括:
[0028]步骤102,接收原始数据写入请求。
[0029]当用户欲向Nand型闪存中写入数据时,通过预设的写数据接口触发原始数据写入请求,写入数据请求对应待写入数据。终端接收该原始数据请求和与写入数据请求对应的待写入数据。
[0030]步骤104,根据原始数据写入请求对应的待写入数据的数据量聚合多个原始数据写入请求,使聚合的数据写入请求对应的待写入数据的数据量总量与块容量的正整数倍匹配。
[0031]终端预设缓冲区,缓冲区的大小根据实际需要进行设定,在这里不做限定。终端在缓冲区中缓冲多个写入数据请求及对应的待写入数据,从而根据原始数据写入请求所对应的待写入数据的数据量,对多个原始数据写入请求进行聚合,要求聚合的数据写入请求对应的待写入数据的数据量总量与块容量的正整数倍匹配。
[0032]其中,块容量是指一个物理块或者逻辑块所能够容纳的数据量,比如一个块所能容纳的数据量为2M字节,则块容量为2M字节。块容量的正整数倍比如可以是2M字节、4M字节、6M字节、8M字节等。
[0033]聚合的数据写入请求对应的待写入数据的数据量总量与块容量的正整数倍匹配,可以是上述数据量总量等于块容量的正整数倍;或者上述数据量总量与大于该数据总量的最接近的正整数倍的块容量的偏差在预设取值范围内。这里两个值的偏差可以是指两个值的差值或者差值的绝对值,也可以是两个值的比值。
[0034]举例说明,若一个原始数据写入请求对应的待写入数据的数据量为1M,另一个原始数据写入请求对应的待写入数据的数据量为0.9M,假设当数据量总量与大于该数据总量的最接近的正整数倍的块容量的比值在[0.9,I]内时进行聚合。则由于1.9M与2M的比值在[0.9,1]之内,所以该两个原始数据写入请求可以聚合,且对应的待写入数据的数据量总量为1.9M。再比如,若三个原始数据写入请求对应的待写入数据的数据量分别为1.5M、1.5M和0.SM,由于数据总量的和为3.SM,与大于该数据总量且最接近的正整数倍的块容量即4M的比值在[0.9,I]之内,所以该三个原始数据写入请求可以聚合。
[0035]步骤106,根据聚合的数据写入请求,在闪存中确定与匹配的块容量的倍数对应的数量的空闲物理块,将聚合的数据写入请求对应的待写入数据写入确定的空闲物理块。
[0036]具体地,根据聚合的数据写入请求,需根据匹配的块容量的倍数确定相应数量的空闲物理块。当向确定的多个空闲物理块中写入待写入数据时,可将聚合的数据写入请求对应的待写入数据按照确定的空闲物理块的数量平分后,分别写入每个确定的空闲物理块;或者可在写满一个空闲物理块后继续写下一个物理块,这里不做限制。
[0037]举例说明,若三个原始数据写入请求对应的待写入数据的数据量分别为1.5M、1.5M和0.8M,则匹配的块容量的倍数为2倍,此时需要在Nand型闪存中确定2个空闲物理块,再将待写入数据共3.SM平分为两个1.9M的数据写入确定的2个空闲物理块中。
[0
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1