发明内容
本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种提高存储器可靠性的方法以及采用了该提高存储器可靠性的方法的闪存操作方法。
根据本发明的第一方面,提供了一种提高存储器可靠性的方法,其包括:记录坏扇区地址,并且为坏扇区分配用于替换的冗余扇区;利用校验和纠错码对存储器的扇区进行读取或编程;判断当前打算读取或编程的扇区的扇区地址是否是被记录的坏扇区地址;如果当前打算读取或编程的扇区的扇区地址是被记录的坏扇区地址,则对用于替换与被记录的坏扇区地址所对应的坏扇区的冗余扇区进行读取或编程。
优选地,所述提高存储器可靠性的方法还包括:如果当前打算读取或编程的扇区的扇区地址是被记录的坏扇区地址,则对当前读取或编程的扇区进行读取或编程。
根据本发明的第一方面,提供了一种提高存储器可靠性的方法,其包括:记录坏扇区地址,并且为坏扇区分配用于替换的冗余扇区;对存储器的扇区进行擦除;判断当前打算擦除的扇区的扇区地址是否是被记录的坏扇区地址;如果当前打算擦除的扇区的扇区地址是被记录的坏扇区地址,则对用于替换所述坏扇区的冗余扇区进行擦除。
优选地,所述提高存储器可靠性的方法还包括:在对用于替换所述坏扇区的冗余扇区进行擦除之后,利用校验和纠错码对所述冗余扇区进行读取检测,并且在所述读取检测没有通过的情况下判断存储器功能失效。
优选地,所述提高存储器可靠性的方法还包括:如果当前打算擦除的扇区的扇区地址不是被记录的坏扇区地址,则对当前打算擦除的扇区进行擦除,并且利用校验和纠错码对当前打算擦除的扇区进行读取检测。
优选地,所述提高存储器可靠性的方法还包括:在所述取检测未通过的情况下判断当前打算擦除的扇区的扇区地址是否是已经记录的坏扇区地址。
优选地,所述提高存储器可靠性的方法还包括:如果判断当前打算擦除的扇区的扇区地址是已经记录的坏扇区地址,则判断存储器功能失效。
优选地,所述提高存储器可靠性的方法还包括:如果判断当前打算擦除的扇区的扇区地址不是已经记录的坏扇区地址,则将当前打算擦除的扇区的扇区地址记录为坏扇区地址。
优选地,所述存储器是嵌入式闪存。
根据本发明的第三方面,提供了一种采用了根据本发明的第一方面的提高存储器可靠性的方法的闪存操作方法。
具体实施方式
为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
<第一实施例>
根据本发明第一实施例的提高存储器可靠性的方法包括:记录坏扇区地址,并且为坏扇区分配用于替换的冗余扇区;利用校验和纠错码对存储器的扇区进行读取或编程;判断当前读取或编程的扇区的扇区地址是否是被记录的坏扇区地址;如果当前打算读取或编程的扇区的扇区地址是被记录的坏扇区地址,则对用于替换与被记录的坏扇区地址所对应的坏扇区的冗余扇区进行读取或编程;另一方面,如果当前打算读取或编程的扇区的扇区地址是被记录的坏扇区地址,则对当前读取或编程的扇区进行读取或编程。
具体地说,图1示意性地示出了根据本发明第一实施例的提高存储器可靠性的方法。其中,图1所示的提高存储器可靠性的方法主要针对存储器的读取操作或编程操作。
如图1所示,在根据本发明实施例的提高存储器可靠性的方法中:
首先,在步骤SS1中开始操作;
此后,在步骤SS2中,将坏扇区地址AddN(N=1,2...m)从非易失性存储器中载入寄存器。具体地说,对于已知的坏扇区,将这些坏扇区的具体地址记录在寄存器中,以便后续步骤使用。
进一步地,在步骤SS2中,还可以将坏扇区的具体地址与替换该坏扇区的冗余扇区的冗余扇区地址对应存储在寄存器中,以便后续使用。
此后,在步骤SS3中,利用校验和纠错码(ECC,Error Correcting Code)对扇区地址A1进行读取或编程。
此后,在步骤SS4中,判断A1=AddN是否成立。即,判断当前读取或编程的扇区地址A1是否存在于存储了坏扇区地址AddN(N=1,2...m)的寄存器中。
如果步骤SS4的判定结果为否定的(即扇区地址A1不存在于存储了坏扇区地址AddN(N=1,2...m)的寄存器中),则在步骤SS5中,对扇区地址A1进行读取或编程。实际上,如果步骤SS4的判定结果为否定的,则判断扇区地址A1所对应的扇区是好的扇区,则可以对扇区地址A1进行读取或编程。
在步骤SS5之后,程序回到步骤SS3,此时可以进一步利用校验和纠错码对另一个扇区地址进行读取或编程。
另一方面,如果步骤SS4的判定结果为肯定的(即扇区地址A1存在于存储了坏扇区地址AddN(N=1,2...m)的寄存器中),则在步骤SS6中,对与扇区地址A1对应的冗余扇区地址Ad1进行读取或编程。也就是说,如果步骤SS4的判定结果为否定的,则判断扇区地址A1所对应的扇区是坏的扇区,则可以在寄存器中查找替换该坏扇区的冗余扇区的冗余扇区地址,由此利用该冗余扇区来替换该坏扇区。
在步骤SS6之后,程序回到步骤SS3,此时可以进一步利用校验和纠错码对另一个扇区地址进行读取或编程。
优选地,图1的上述提高存储器可靠性的方法适用于闪存的操作,尤其是嵌入式闪存的操作,并且特别有利于非易失性闪存的操作控制。
<第二实施例>
根据本发明第二实施例的提高存储器可靠性的方法包括:记录坏扇区地址,并且为坏扇区分配用于替换的冗余扇区;对存储器的扇区进行擦除;判断当前打算擦除的扇区的扇区地址是否是被记录的坏扇区地址;如果当前打算擦除的扇区的扇区地址是被记录的坏扇区地址,则对用于替换所述坏扇区的冗余扇区进行擦除;在对用于替换所述坏扇区的冗余扇区进行擦除之后,利用校验和纠错码对所述冗余扇区进行读取检测,并且在所述读取检测没有通过的情况下判断存储器功能失效。如果当前打算擦除的扇区的扇区地址不是被记录的坏扇区地址,则对当前打算擦除的扇区进行擦除,并且利用校验和纠错码对当前打算擦除的扇区进行读取检测。在所述取检测未通过的情况下判断当前打算擦除的扇区的扇区地址是否是已经记录的坏扇区地址。如果判断当前打算擦除的扇区的扇区地址是已经记录的坏扇区地址,则判断存储器功能失效。如果判断当前打算擦除的扇区的扇区地址不是已经记录的坏扇区地址,则将当前打算擦除的扇区的扇区地址记录为坏扇区地址。
图2示意性地示出了根据本发明第二实施例的提高存储器可靠性的方法。其中,图2所示的提高存储器可靠性的方法主要针对存储器的擦除操作。
如图2所示,在根据本发明实施例的提高存储器可靠性的方法中:
首先,在步骤S1中开始操作;
此后,在步骤S2中,将坏扇区地址AddN(N=1,2...m)从非易失性存储器中载入寄存器。具体地说,对于已经检测出来的已知坏扇区,将这些坏扇区的具体地址记录在寄存器中,以便后续步骤使用。
进一步地,在步骤S2中,还可以将坏扇区的具体地址与替换该坏扇区的冗余扇区的冗余扇区地址对应存储在寄存器中,以便后续使用。
此后,在步骤S3中,对扇区地址A1进行擦除。具体地说,对扇区地址A1所对应的扇区进行擦除。
此后,在步骤S4中,判断A1=AddN是否成立。即,判断当前读取或编程的扇区地址A1是否存在于存储了坏扇区地址AddN(N=1,2...m)的寄存器中。
如果步骤S4的判定结果为肯定的(即扇区地址A1存在于存储了坏扇区地址AddN(N=1,2...m)的寄存器中,也就是说,判断扇区地址A1所对应的扇区是坏的扇区),则在步骤S5中,对与扇区地址A1对应的冗余扇区地址Ad1进行擦除。
在步骤S5之后执行步骤S7,其中利用利用校验和纠错码ECC对该冗余扇区进行读取检测。
此后,在步骤S12中,判断步骤S7的检测是否通过。
如果步骤S12中判断检测通过,则程序回到步骤S3,此时可以进一步对另一个扇区地址进行擦除。
如果步骤S12中判断检测没有通过,则程序进入步骤S8以判断存储器功能失效。
另一方面,如果步骤S4的判定结果为否定的(即扇区地址A1不存在于存储了坏扇区地址AddN(N=1,2...m)的寄存器中,也就是说,判断扇区地址A1所对应的扇区是好的扇区),则在步骤S6中,对扇区地址A1的扇区进行擦除。
在步骤S6之后执行步骤S9,其中利用校验和纠错码ECC对该冗余扇区进行读取检测。
在步骤S9之后执行步骤S10,其中判断检测是否通过。
如果在步骤S10中判断检测通过,则程序回到步骤S3,此时可以进一步对另一个扇区地址进行擦除。
如果在步骤S10中判断检测没有通过,则执行步骤S11,其中判断是否已经定义了AddN。即,判断当前的扇区地址是否已经记录在用于记录坏扇区地址的寄存器中。
如果在步骤S11中判断已经定义了AddN,则程序进入步骤S8以判断存储器功能失效。
如果在步骤S11中判断还没有定义AddN,则程序进入步骤S2,其中将当前的坏扇区地址记录在寄存器中;并且,进一步可为该坏扇区地址分配一个用于替换的容易扇区。
优选地,图2的上述提高存储器可靠性的方法适用于闪存的操作,尤其是嵌入式闪存的操作,并且特别有利于非易失性闪存的操作控制。
对于任何熟悉本领域的技术人员而言,可以理解的是,可以将图1所示的提高存储器可靠性的方法的闪存操作方法与图2所示的提高存储器可靠性的方法的闪存操作方法结合起来,这种结合所组成的提高存储器可靠性的方法也落入本发明的保护范围。
并且,通过测试可知,上述方法对于非易失性存储器的100000周期,其失效率小于10PPM(即,一百万个元器件里的失效个数为10)。
根据本发明的另一实施例,本发明还提供了一种采用了根据图1所示的提高存储器可靠性的方法的闪存操作方法。此外,根据本发明的另一实施例,本发明还提供了一种采用了根据图2所示的提高存储器可靠性的方法的闪存操作方法。
可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。