一种闪存存储设备中数据管理的方法及装置制造方法
【专利摘要】本发明适用于存储器的数据存储【技术领域】,提供了一种闪存存储设备中数据管理的方法及装置,所述方法包括:接收主机系统发送的写指令,所述写指令包含有待写入数据以及所述待写入数据写入的目标地址,所述目标地址为所述闪存存储设备中某一页的地址;以SLC方式将所述待写入数据写入所述目标地址;判断写入所述目标地址的数据是否与所述待写入数据一致;若不一致,则通过ECC码对写入所述目标地址的错误数据进行纠正,并在纠正不成功时,重新以SLC方式将所述待写入数据写入所述目标地址。通过本发明,可有效提高闪存存储设备数据写入的正确性和稳定性。
【专利说明】一种闪存存储设备中数据管理的方法及装置
【技术领域】
[0001]本发明属于存储器的数据存储【技术领域】,尤其涉及一种闪存存储设备中数据管理的方法及装置。
【背景技术】
[0002]闪存存储设备按照其内部构架可以分为单层单元闪存(Single-Level Cell, SLC)和多层单元闪存(Mult1-Level Cell,MLC)。闪存内部包含多个存储块(block),每个存储块包含多个页(page),每个页又包含多个字节(byte)。
[0003]现有的SLC型闪存中所有的页都具有写入速度快以及稳定可靠的特性,而MLC型闪存中只有部分页具有写入速度快以及稳定可靠的特性。通常,将数据只写入上述的“具有写入速度快且稳定可靠的特性的页”的写入方式定义为SLC方式写入,将数据写入MLC型闪存的所有页的写入方式定义为MLC方式写入。
[0004]然而,在对闪存存储设备以SLC方式进行数据写入,即对闪存存储设备中具有写入速度快且稳定可靠的特性的页包含的存储单元进行放电时,可能会出现放电过程易受到干扰、放电不彻底或者不能较精确的控制每个存储单元的充放电电压的情况导致写入的数据容易出错,从而可能会出现如图1所示的待写入数据与实际写入的数据不一致的情况,影响闪存存储设备数据写入的正确性和稳定性。
【发明内容】
[0005]本发明实施例的目的在于提供一种闪存存储设备中数据管理的方法及装置,以提高闪存存储设备数据写入的正确性和稳定性。
[0006]本发明实施例是这样实现的,一种闪存存储设备中数据管理的方法,所述方法包括:
[0007]接收主机系统发送的写指令,所述写指令包含有待写入数据以及所述待写入数据写入的目标地址,所述目标地址为所述闪存存储设备中某一页的地址;
[0008]以SLC方式将所述待写入数据写入所述目标地址;
[0009]判断写入所述目标地址的数据是否与所述待写入数据一致;
[0010]若不一致,则通过ECC码对写入所述目标地址的错误数据进行纠正,并在纠正不成功时,重新以SLC方式将所述待写入数据写入所述目标地址。
[0011]本发明实施例的另一目的在于提供一种闪存存储设备中数据管理的装置,所述装置包括:
[0012]指令接收单元,用于接收主机系统发送的写指令,所述写指令包含有待写入数据以及所述待写入数据写入的目标地址,所述目标地址为所述闪存存储设备中某一页的地址;
[0013]写入单元,用于以SLC方式将所述待写入数据写入所述目标地址;
[0014]判断单元,用于判断写入所述目标地址的数据是否与所述待写入数据一致;[0015]处理单元,用于在所述判断单元判断结果为否时,通过ECC码对写入所述目标地址的错误数据进行纠正,并在纠正不成功时,重新以SLC方式将所述待写入数据写入所述目标地址。
[0016]本发明实施例与现有技术相比存在的有益效果是:本发明实施例的闪存存储设备在接收到写指令后,以SLC方式将所述待写入数据写入所述目标地址,并判断写入所述目标地址的数据是否与所述待写入数据一致,若不一致,则通过ECC码对写入所述目标地址的错误数据进行纠正,并在纠正不成功时,重新以SLC方式将所述待写入数据写入所述目标地址,直到写入所述目标地址的数据与所述待写入数据完全一致。通过本发明实施例有效的解决了在对闪存存储设备数据写入的过程中,闪存存储设备的某些存储单元在放电过程易受到干扰、放电不彻底或者不能较精确的控制每个存储单元的充放电电压的情况下,所导致的待写入数据不能正确、稳定的写入闪存存储设备的问题。
【专利附图】
【附图说明】
[0017]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0018]图1是现有技术提供的数据写操作的示例图;
[0019]图2是本发明实施例一提供的闪存存储设备中数据管理方法的实现流程图;
[0020]图3是本发明实施例二提供的闪存存储设备中数据管理方法的实现流程图; [0021]图4是本发明实施例三提供的闪存存储设备中数据管理装置的组成结构图图5是本发明实施例四提供的闪存存储设备中数据管理装置的组成结构图。
【具体实施方式】
[0022]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0023]为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
[0024]实施例一:
[0025]图2示出了本发明实施例一提供的闪存存储设备中数据管理方法的实现流程,该方法过程详述如下:
[0026]在步骤S201中,接收主机系统发送的写指令,所述写指令包含有待写入数据以及所述待写入数据写入的目标地址,所述目标地址为所述闪存存储设备中某一页的地址。
[0027]在本实施例中,所述写指令包括但不限于以下信息:待写入的数据以及所述待写入数据写入闪存存储设备的目标地址。所述目标地址为所述闪存存储设备中某一页的地址,为了便于理解,假设所述目标地址指向所述闪存存储设备某一存储块(block)中的的PO页(为了便于理解,按顺序用P0,P1,P2…P (η-Ι),Ρ (η)来标示该存储块中包含的所有页),如图1所示,假设所述待写入数据的数据内容为“0123456789”,将“0123456789”写入所述PO页,得到实际写入数据。所述主机系统为可存储数据的任意系统,例如电脑系统、数码相机、摄影机、通信装置、音讯播放器、视讯播发器等系统。
[0028]在步骤S202中,将所述待写入数据以SLC方式写入到所述闪存存储设备的所述目标地址中;
[0029]在步骤S203中,判断写入所述目标地址的数据是否与所述待写入数据一致,若判断结果为“是”,则结束操作;若判断结果为“否”,则执行步骤S204。
[0030]在本实施例中,可以直接通过匹配的方式判断写入所述目标地址的数据(即所述实际写入数据)是否与所述待写入数据一致,也可以通过错误检查和纠正(Error Checkingand Correction, ECC)校验写入所述目标地址的数据是否与所述待写入数据一致。
[0031]在步骤S204中,通过ECC码对写入所述目标地址的错误数据进行纠正,并在纠正不成功时,并重新以SLC方式将所述待写入数据写入所述目标地址,即返回执行步骤S202。
[0032]具体的可以是,通过ECC码对写入所述目标地址的错误数据进行纠正,并在纠正不成功时,判断所述目标地址指向的页的写入次数是否超出预设的阈值,如果未超出预设的阈值,并重新以SLC方式将所述待写入数据写入所述目标地址,即返回执行步骤S202 ;如果超出预设的阈值,将所述目标地址指向的该页标记为无效页,并重新以SLC方式将所述待写入数据写入所述目标地址连续的后续地址中。
[0033]进一步的,通过ECC码对写入所述目标地址的错误数据进行纠正,并在纠正不成功时,重新以SLC方式将所述待写入数据写入所述目标地址包括:
[0034]读取写入所述目标地址的数据,并对读取的所述数据进行ECC校验;
[0035]当读取的所述数据中错误数据的字节数超过了 ECC阈值时,判定为纠正不成功,返回步骤S202执行;当读取的所述数据中错误数据的字节数未超过ECC阈值时,对读取的所述数据进行纠正,并在纠正成功后结束操作。
[0036]其中,所述ECC阈值为ECC码能检测并纠正的最大字节数。
[0037]在本实施例中,如果写入所述目标地址的数据与所述待写入数据不一致且写入所述目标地址的数据无法通过ECC纠正,则重新返回步骤S202执行,直至写入所述目标地址的数据与所述待写入数据完全一致。
[0038]本发明实施例对所述待写入数据以同样的方式进行再次的编程,即以SLC写入方式对目标地址所在页(如PO页)中包含的每个存储单元的充放电电压进行重新控制,使得出错的存储单元重新进行电压调整以便能正确的存储所述待写入数据,从而有效的降低存储单元存储数据的错误率,提高数据存储的稳定性。
[0039]实施例二:
[0040]图3示出了本发明实施例二提供的闪存存储设备中数据管理方法的实现流程,实施例二的所述闪存存储设备至少包括一多层单元闪存,该方法过程详述如下:
[0041 ] 在步骤S301中,接收主机系统发送的写指令,所述写指令包含有待写入数据以及所述待写入数据写入的目标地址,所述目标地址为所述闪存存储设备中某一页的地址;
[0042]在步骤S302中,将所述待写入数据以SLC方式写入到所述闪存存储设备的所述目标地址中;
[0043]在步骤S303中,判断写入所述目标地址的数据是否与所述待写入数据一致,若判断结果为“是”,则结束操作;若判断结果为“否”,则执行步骤S304。
[0044]在步骤S304中,通过ECC码对写入所述目标地址的错误数据进行纠正,并在纠正不成功时,重新以SLC方式将所述待写入数据写入所述目标地址,即返回执行步骤S302。
[0045]本实施例步骤S301至步骤S304的具体实施过程如实施例二步骤S201至步骤S204所述,在此不再赘述。
[0046]在步骤S305中,在系统空闲时或者在闪存存储设备的使用容量达到预设的阈值时,选取空块作为交换块,并将以SLC方式写入所述目标地址的数据以MLC方式搬移到所述交换块中。
[0047]由于本发明实施例主要解决的是MLC型闪存存储设备在以MLC方式进行数据写入时容易出现数据错误、稳定性差的问题。因此本实施例利用SLC写入方式的优势,先将所述待写入数据以SLC方式写入到所述闪存存储设备的目标地址,然后再将写入所述目标地址的数据以MLC方式搬移到选定的交换块中。其中,所述交换块为没有写入数据的空块。
[0048]另外,本发明实施例还可以充分利用所述MLC型闪存存储设备的存储空间,由于在对MLC型闪存设备进行以SLC方式写入数据时只对其中一些具有写入速度快且稳定可靠的页进行数据写入,即所述目标地址为一些具有写入速度快且稳定可靠的页,当系统空闲的时候或者闪存存储设备的使用容量达到预设的阈值时,将以SLC方式写入所述目标地址的数据以MLC方式搬移到所述交换块中,可以使MLC型闪存存储设备的所有页都可以用来存放数据,这样便避免了 MLC闪存存储设备存储空间的浪费。
[0049]在步骤S306中,判断写入所述交换块中的数据是否与所述以SLC方式写入所述目标地址的数据一致;若判断结果为“是”,则结束操作;若判断结果为“否”,则执行步骤S307 ;
[0050]在本实施例中,可以直接通过匹配的方式判断写入所述交换块中的数据是否与写入所述目标地址的数据一致,也可以通过错误检查和纠正(Error Checking andCorrection, ECC)校验写入所述交换块中的数据是否与写入所述目标地址的数据一致。
[0051]在步骤S307中,通过ECC码对写入所述交换块中的错误数据进行纠正,并在纠正不成功时,擦除所述交换块,重新将以SLC方式写入所述目标地址的数据以MLC方式搬移到所述交换块中;或者,通过ECC码对写入所述交换块中的错误数据进行纠正,并在纠正不成功时,选取空块作为所述交换块的替换块,并将所述交换块标记为无效块,重新以MLC方式将搬移到所述交换块中的数据写入所述替换块。
[0052]具体的可以是,通过ECC码对写入所述交换块中的错误数据进行纠正,并在纠正不成功时,判断所述交换块的写入次数是否超出预设的阈值,如果未超出预设的阈值,擦除该交换块,并重新将以SLC方式写入所述目标地址的数据以MLC方式搬移到所述交换块中,即返回执行步骤S305 ;如果超出预设的阈值,将所述交换块标记为无效块,并重新将以SLC方式写入所述目标地址的数据以MLC方式搬移到离所述交换块物理距离最近的空块中。其中,所述空块为没有写入数据的块,所述无效块可以作为坏块不再使用,也可作为备用块后续再次使用。
[0053]进一步的,所述通过ECC码对写入所述交换块中的错误数据进行纠正包括:
[0054]读取写入所述交换块中的数据,并对读取的所述数据进行ECC校验;
[0055]当读取的所述数据中错误数据的字节数超过了 ECC阈值时,判定为纠正不成功;
[0056]其中,所述ECC阈值为ECC码能检测并纠正的最大字节数。在本实施例中,每份存储的数据都包含一个ECC码,为了检测输出数据是否存在错误,系统在数据读取时,先生成正确的ECC码,并将该ECC码与读取的数据的ECC码进行比较验证,如果比较结果相同,则说明读取的数据正确。如果比较结果不相同,则说明读取的数据存在错误。
[0057]作为本发明的另一示例,本实施例还可以包括:在系统生成的ECC码与读取数据的ECC码比较结果不相同时,对该读取数据中错误数据的大小进行检测,在所述错误数据的字节数等于或者小于预设的阈值时(例如:1比特),通过ECC码对所述错误数据进行纠正,在所述错误数据纠正不成功时,再对存储所述数据的目标地址块进行检测;在所述错误数据大于预设的阈值时,直接进行坏块检测。
[0058]另外,为了更好的区分所述存储块,本实施例还包括对所述存储块的状态进行标识,所述状态标识包括“忙”、“空闲”、“坏块”等。
[0059]本发明实施例为解决MLC型闪存存储设备在以MLC方式进行数据写入时容易出现数据错误、稳定性较差的问题,将SLC数据写入的方式运用到MLC型闪存存储设备中,即在MLC型闪存存储设备接收到写指令时,先将写指令中的待写入数据以SLC方式写入目标地址,然后再以MLC方式将所述目标地址中的数据搬移到选定的交换块中,并经过多次ECC校验,直至写入的数据完全正确,从而保证MLC型闪存存储设备在数据写操作过程中数据的准确性和稳定性,有效提升闪存存储设备的整体性能。
[0060]实施例三:
[0061]图4示出了本发明实施例三提供的闪存存储设备中数据管理装置的组成结构,为了便于说明,仅示出了与本发明实施例相关的部分。
[0062]该闪存存储设备中数据管理装置可以应用于闪存存储设备中,可以是运行于闪存存储设备内的软件单元、硬件单元或者软硬件相结合的单元,也可以作为独立的挂件集成到闪存存储设备中或者运行于闪存存储设备的应用系统中。
[0063]该闪存存储设备中数据管理装置包括指令接收单元41、写入单元42、第一判断单元43以及第一处理单元44。其中,各单元的具体功能如下:
[0064]指令接收单元41,用于接收主机系统发送的写指令,所述写指令包含有待写入数据以及所述待写入数据写入的目标地址,所述目标地址为所述闪存存储设备中某一页的地址;
[0065]写入单元42,用于以SLC方式将所述待写入数据写入所述目标地址;
[0066]第一判断单元43,用于判断写入所述目标地址的数据是否与所述待写入数据一致;
[0067]第一处理单元44,用于在所述第一判断单元43判断结果为否时,通过ECC码对写入所述目标地址的错误数据进行纠正,并在纠正不成功时,重新以SLC方式将所述待写入数据写入所述目标地址。
[0068]进一步的,所述第一处理单元44包括:
[0069]第一读取模块441,用于读取写入所述目标地址的数据,并对读取的所述数据进行ECC校验;
[0070]第一处理模块442,用于当读取的所述数据中错误数据的字节数超过了 ECC阈值时,判定为纠正不成功,重新以SLC方式将所述待写入数据写入所述目标地址,其中所述ECC阈值为ECC码能检测并纠正的最大字节数。
[0071]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元或模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述装置中单元、模块的具体工作过程,可以参考前述方法实施例一中的对应过程,在此不再赘述。
[0072]实施例四:
[0073]图5示出了本发明实施例四提供的闪存存储设备中数据管理装置的组成结构,为了便于说明,仅示出了与本发明实施例相关的部分。
[0074]该闪存存储设备中数据管理装置可以应用于闪存存储设备中,可以是运行于闪存存储设备内的软件单元、硬件单元或者软硬件相结合的单元,也可以作为独立的挂件集成到闪存存储设备中或者运行于闪存存储设备的应用系统中。
[0075]该闪存存储设备中数据管理装置包括指令接收单元51、写入单元52、第一判断单元53以及第一处理单元54。其中,各单元的具体功能如下:
[0076]指令接收单元51,用于接收主机系统发送的写指令,所述写指令包含有待写入数据以及所述待写入数据写入的目标地址,所述目标地址为所述闪存存储设备中某一页的地址;
[0077]写入单元52,用于以SLC方式将所述待写入数据写入所述目标地址;
[0078]第一判断单元53,用于判断写入所述目标地址的数据是否与所述待写入数据一致;
[0079]第一处理单元54,用于在所述判断单元53判断结果为否时,通过ECC码对写入所述目标地址的错误数据进行纠正,并在纠正不成功时,重新以SLC方式将所述待写入数据写入所述目标地址。
[0080]进一步的,所述第一处理单元54包括:
[0081]第一读取模块541,用于读取写入所述目标地址的数据,并对读取的所述数据进行ECC校验;
[0082]第一处理模块542,用于当读取的所述数据中错误数据的字节数超过了 ECC阈值时,判定为纠正不成功,重新以SLC方式将所述待写入数据写入所述目标地址,其中所述ECC阈值为ECC码能检测并纠正的最大字节数。
[0083]进一步的,所述闪存存储设备至少包括一多层单元闪存,所述装置包括:
[0084]搬移单元55,用于在系统空闲时或者在闪存存储设备的使用容量达到预设的阈值时,选取空块作为交换块,并将以SLC方式写入所述目标地址的数据以MLC方式搬移到所述交换块中。
[0085]进一步的,所述装置包括:
[0086]第二判断单元56,用于判断写入所述交换块中的数据是否与所述以SLC方式写入所述目标地址的数据一致;
[0087]第二处理单元57,用于在所述第二判断单元56判断结果为否时,通过ECC码对写入所述交换块中的错误数据进行纠正,并在纠正不成功时,擦除所述交换块,重新将以SLC方式写入所述目标地址的数据以MLC方式搬移到所述交换块中;或者,在所述第二判断单元判断结果为否时,通过ECC码对写入所述交换块中的错误数据进行纠正,并在纠正不成功时,选取空块作为所述交换块的替换块,并将所述交换块标记为无效块,重新以MLC方式将搬移到所述交换块中的数据写入所述替换块。
[0088]进一步的,所述第二处理单元57包括:
[0089]第二读取模块571,用于读取写入所述交换块中的数据,并对读取的所述数据进行ECC校验;
[0090]第二处理模块572,用于当读取的所述数据中错误数据的字节数超过了 ECC阈值时,判定为纠正不成功,其中所述ECC阈值为ECC码能检测并纠正的最大字节数。
[0091]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元或模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述装置中单元、模块的具体工作过程,可以参考前述方法实施例一中的对应过程,在此不再赘述。
[0092]综上所述,本发明实施例的闪存存储设备在接收到写指令后,以SLC方式将所述待写入数据写入所述目标地址,并判断写入所述目标地址的数据是否与所述待写入数据一致,若不一致,则通过ECC码对写入所述目标地址的错误数据进行纠正,并在纠正不成功时,重新以SLC方式将所述待写入数据写入所述目标地址,直到写入所述目标地址的数据与所述待写入数据完全一致。通过本发明实施例有效的解决了在对闪存存储设备数据写入的过程中,闪存存储设备的某些存储单元在放电过程易受到干扰、放电不彻底或者不能较精确的控制每个存储单元的充放电电压的情况下,所导致的待写入数据不能正确、稳定的写入闪存存储设备的问题。另外,对于MLC闪存存储设备,本发明实施例充分利用了 SLC写入方式的优势,先将写指令中的待写入数据以SLC方式写入目标地址,然后再以MLC方式将所述目标地址中的数据搬移到选定的交换块中,并经过多次ECC校验,保证写入的数据完全正确,从而保证MLC型闪存存储设备在数据写操作过程中数据的准确性和稳定性,有效提升闪存存储设备的整体性能,具有较强的易用性和实用性。
[0093]本领域普通技术人员还可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,包括R0M/RAM、磁盘、光盘等。
[0094]以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属【技术领域】的普通技术人员来说,在不脱离本发明构思的前提下做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明由所提交的权利要求书确定的专利保护范围。
【权利要求】
1.一种闪存存储设备中数据管理的方法,其特征在于,所述方法包括: 接收主机系统发送的写指令,所述写指令包含有待写入数据以及所述待写入数据写入的目标地址,所述目标地址为所述闪存存储设备中某一页的地址; 以SLC方式将所述待写入数据写入所述目标地址; 判断写入所述目标地址的数据是否与所述待写入数据一致; 若不一致,则通过ECC码对写入所述目标地址的错误数据进行纠正,并在纠正不成功时,重新以SLC方式将所述待写入数据写入所述目标地址。
2.如权利要求1所述的方法,其特征在于,所述通过ECC码对写入所述目标地址的错误数据进行纠正,并在纠正不成功时,重新以SLC方式将所述待写入数据写入所述目标地址包括: 读取写入所述目标地址的数据,并对读取的所述数据进行ECC校验; 当读取的所述数据中错误数据的字节数超过了 ECC阈值时,判定为纠正不成功,重新以SLC方式将所述待写入数据写入所述目标地址; 其中,所述ECC阈值为ECC码能检测并纠正的最大字节数。
3.如权利要求1或2 所述的方法,其特征在于,所述闪存存储设备至少包括一多层单元闪存,所述方法包括: 在系统空闲时或者在闪存存储设备的使用容量达到预设的阈值时,选取空块作为交换块,并将以SLC方式写入所述目标地址的数据以MLC方式搬移到所述交换块中。
4.如权利要求3所述的方法,其特征在于,所述方法包括: 判断写入所述交换块中的数据是否与所述以SLC方式写入所述目标地址的数据一致;若不一致,则通过ECC码对写入所述交换块中的错误数据进行纠正,并在纠正不成功时,擦除所述交换块,重新将以SLC方式写入所述目标地址的数据以MLC方式搬移到所述交换块中。
5.如权利要求3所述的方法,其特征在于,所述方法包括: 判断写入所述交换块中的数据是否与所述以SLC方式写入所述目标地址的数据一致;若不一致,则通过ECC码对写入所述交换块中的错误数据进行纠正,并在纠正不成功时,选取空块作为所述交换块的替换块,并将所述交换块标记为无效块,重新以MLC方式将搬移到所述交换块中的数据写入所述替换块。
6.如权利要求4或5所述的方法,其特征在于,所述通过ECC码对写入所述交换块中的错误数据进行纠正包括: 读取写入所述交换块中的数据,并对读取的所述数据进行ECC校验; 当读取的所述数据中错误数据的字节数超过了 ECC阈值时,判定为纠正不成功; 其中,所述ECC阈值为ECC码能检测并纠正的最大字节数。
7.—种闪存存储设备中数据管理的装置,其特征在于,所述装置包括: 指令接收单元,用于接收主机系统发送的写指令,所述写指令包含有待写入数据以及所述待写入数据写入的目标地址,所述目标地址为所述闪存存储设备中某一页的地址;写入单元,用于以SLC方式将所述待写入数据写入所述目标地址; 第一判断单元,用于判断写入所述目标地址的数据是否与所述待写入数据一致; 第一处理单元,用于在所述第一判断单元判断结果为否时,通过ECC码对写入所述目标地址的错误数据进行纠正,并在纠正不成功时,重新以SLC方式将所述待写入数据写入所述目标地址。
8.如权利要求7所述的装置,其特征在于,所述第一处理单元包括: 第一读取模块,用于读取写入所述目标地址的数据,并对读取的所述数据进行ECC校验; 第一处理模块,用于当读取的所述数据中错误数据的字节数超过了 ECC阈值时,判定为纠正不成功,重新以SLC方式将所述待写入数据写入所述目标地址,其中所述ECC阈值为ECC码能检测并纠正的最大字节数。
9.如权利要求7或8所述的装置,其特征在于,所述闪存存储设备至少包括一多层单元闪存,所述装置包括: 搬移单元,用于在系统空闲时或者在闪存存储设备的使用容量达到预设的阈值时,选取空块作为交换块,并将以SLC方式写入所述目标地址的数据以MLC方式搬移到所述交换块中。
10.如权利要求9所述的装置,其特征在于,所述装置包括: 第二判断单元,用于判断写入所述交换块中的数据是否与所述以SLC方式写入所述目标地址的数据一致; 第二处理单元,用于在所述第二判断单元判断结果为否时,通过ECC码对写入所述交换块中的错误数据进行纠正,并在纠正不成功时,擦除所述交换块,重新将以SLC方式写入所述目标地址的数据以MLC方式搬移到所述交换块中;或者,在所述第二判断单元判断结果为否时,通过ECC码对写入所述交换块中的错误数据进行纠正,并在纠正不成功时,选取空块作为所述交换块的替换块,并将所述交换块标记为无效块,重新以MLC方式将搬移到所述交换块中的数据写入所述替换块。
11.如权利要求10所述的装置,其特征在于,所述第二处理单元包括: 第二读取模块,用于读取写入所述交换块中的数据,并对读取的所述数据进行ECC校验; 第二处理模块,用于当读取的所述数据中错误数据的字节数超过了 ECC阈值时,判定为纠正不成功,其中所述ECC阈值为ECC码能检测并纠正的最大字节数。
【文档编号】G06F12/02GK103955431SQ201410143753
【公开日】2014年7月30日 申请日期:2014年4月11日 优先权日:2014年4月11日
【发明者】梁小庆 申请人:深圳市江波龙电子有限公司