一种提高Nand flash数据稳定性的方法以及装置
技术领域
本发明涉及到内存领域,特别是涉及到一种提高Nand flash数据稳定性的方法以及装置。
背景技术
数据在搬移过程中容易发生错误。例如,数据写入闪存后,由于回收、磨损平衡等原因需要将数据不断从旧的物理块搬移到新的物理块上,其中有些搬移是无法通过ECC(Error Correcting Code,错误检查和纠正)模块进行校验的,如闪存的copyback命令,现有技术无法保证数据在搬移过程中是无错误的,如果要保证数据无错误,就会影响产品性能。另外,文件系统中系统数据存在频繁的更新,每次都更新一小部分数据,但是对于闪存而言,则需要搬移整页数据,导致该数据也容易出错。由上述可知,现有技术无法在不影响产品性能的前提下,保证数据在搬移过程中不出现错误,数据稳定性差,主机可能会读取到错误数据,导致严重后果。因此,如何提高数据稳定性,使得主机能读取到正确数据显得十分必要。
发明内容
本发明的主要目的为提供一种一种提高Nand flash数据稳定性的方法,旨在解决提高数据稳定性,使得主机能读取到正确数据。
本发明提出一种提高Nand flash数据稳定性的方法,内存控制器与主机、DMA控制器,以及Nand存储器通信连接,Nand存储器包括物理页,物理页包括存储数据的数据存储区,以及存储数据来源信息和数据纠错信息的冗余区域,包括:
判断是否接收到第一操作指令信息,其中,第一操作指令信息为主机读取Nand存储器中的第一物理页,发现第一物理页中数据存储区的数据错误时产生的操作指令信息;
若是,则检查第一物理页中是否存在数据纠错信息出错的ECC纠错单元,其中,ECC纠错单元为DMA控制器将数据以DMA的形式传输给Nand存储器的最小单元,第一物理页包含多个ECC纠错单元;
若是,则标记数据纠错信息出错的ECC纠错单元,并检查第一物理页中剩余的ECC纠错单元中存储的数据纠错信息是否均出错;
若否,则从第一物理页中的冗余区域获取存储数据来源信息,其中,存储数据来源信息为第一物理页中数据存储区包含的数据的来源信息;
根据存储数据来源信息,寻找数据来源页,其中,第一物理页中存储的数据来自数据来源页,且数据来源页的数量至少为一;
检查第一数据来源页中的逻辑地址是否与第一物理页的逻辑地址一致,其中,第一数据来源页包含于所有数据来源页,逻辑地址分别存储于各数据来源页,以及第一物理页的冗余区域;
若是,则检查第一数据来源页中与第一物理页中错误数据对应的数据是否出错;
若否,则读出第一数据来源页中与第一物理页中错误数据对应的数据,并上传至主机。
进一步地,检查第一数据来源页中的逻辑地址是否与第一物理页的逻辑地址一致的步骤之后,包括:
若否,则从剩余的数据来源页中选择一个数据来源页作为新的第一数据来源页;
检查新的第一数据来源页中的逻辑地址是否与第一物理页的逻辑地址一致;
若否,则判断是否检查完所有数据来源页;
若否,则从剩余的数据来源页中选择一个数据来源页作为新的第一数据来源页;
检查新的第一数据来源页中与第一物理页中错误数据对应的数据纠错信息是否出错;
若否,则读出新的第一数据来源页中与第一物理页中错误数据对应的数据,并上传至主机。
优选的,检查第一物理页中剩余的ECC纠错单元中存储的数据纠错信息是否均出错的步骤之后,包括:
若是,则结束。
优选的,检查第一数据来源页中的逻辑地址是否与第一物理页的逻辑地址一致的步骤之前,包括:
获取所有数据来源页的物理地址;
从所有数据来源页中选取物理地址与第一物理页的物理地址最近的数据来源页作为第一数据来源页。
优选的,检查第一数据来源页中的逻辑地址是否与第一物理页的逻辑地址一致的步骤之前,包括:
获取各数据来源页对应的物理块的擦除次数;
选取擦除次数最多的物理块对应的数据来源页作为第一数据来源页。
本发明还一种提高Nand flash数据稳定性的装置,包括:
第一判断模块,用于判断是否接收到第一操作指令信息,其中,第一操作指令信息为主机读取Nand存储器中的第一物理页,发现第一物理页中数据存储区的数据错误时产生的操作指令信息;
第二判断模块,用于若是,则检查第一物理页中是否存在数据纠错信息出错的ECC纠错单元,其中,ECC纠错单元为DMA控制器将数据以DMA的形式传输给Nand存储器的最小单元,第一物理页包含多个ECC纠错单元;
第三判断模块,用于若是,则标记数据纠错信息出错的ECC纠错单元,并检查第一物理页中剩余的ECC纠错单元中存储的数据纠错信息是否均出错;
第一获取模块,用于若否,则从第一物理页中的冗余区域获取存储数据来源信息,其中,存储数据来源信息为第一物理页中数据存储区包含的数据的来源信息;
第一执行模块,用于根据存储数据来源信息,寻找数据来源页,其中,第一物理页中存储的数据来自数据来源页,且数据来源页的数量至少为一;
第四判断模块,用于检查第一数据来源页中的逻辑地址是否与第一物理页的逻辑地址一致,其中,第一数据来源页包含于所有数据来源页,逻辑地址分别存储于各数据来源页,以及第一物理页的冗余区域;
第五判断模块,用于若是,则检查第一数据来源页中与第一物理页中错误数据对应的数据是否出错;
第二执行模块,用于若否,则读出第一数据来源页中与第一物理页中错误数据对应的数据,并上传至主机。
优选的,提高Nand flash数据稳定性的装置,其特征在于,还包括:
第三执行模块,用于若否,则从剩余的数据来源页中选择一个数据来源页作为新的第一数据来源页;
第六判断模块,用于检查新的第一数据来源页中的逻辑地址是否与第一物理页的逻辑地址一致;
第七判断模块,用于若否,则判断是否检查完所有数据来源页;
第八判断模块,用于若否,则从剩余的数据来源页中选择一个数据来源页作为新的第一数据来源页;
第九判断模块,用于检查新的第一数据来源页中与第一物理页中错误数据对应的数据纠错信息是否出错;
第四执行模块,用于若否,则读出新的第一数据来源页中与第一物理页中错误数据对应的数据,并上传至主机。
优选的,提高Nand flash数据稳定性的装置,还包括:
结束模块,用于若是,则结束。
优选的,提高Nand flash数据稳定性的装置,还包括:
第一获取模块,用于获取所有数据来源页的物理地址;
第五执行模块,用于从所有数据来源页中选取物理地址与第一物理页的物理地址最近的数据来源页作为第一数据来源页。
优选的,提高Nand flash数据稳定性的装置,还包括:
第二获取模块,用于获取各数据来源页对应的物理块的擦除次数;
第六执行模块,用于选取擦除次数最多的物理块对应的数据来源页作为第一数据来源页。
本发明的有益效果在于:当物理页的数据发生错误时,根据存储在物理页的冗余区域的数据来源信息,找到数据来源页。通过判断数据来源页的逻辑地址是否出错,得知数据来源页中的数据是否被擦除;根据检查第一数据来源页中与第一物理页中错误数据对应的数据是否出错,从而获得正确的数据。内存控制器将正确数据上传到主机,还原出正确数据,使得主机读取正确数据,避免主机因数据迁移过程中出错导致读取错误数据。
附图说明
图1为本发明提供的一种提高Nand flash数据稳定性的方法的第一流程示意图;
图2为本发明提供的一种提高Nand flash数据稳定性的方法中的ECC纠错单元的结构示意图;
图3为本发明提供的一种提高Nand flash数据稳定性的方法中数据传输的过程示意图;
图4为本发明提供的一种提高Nand flash数据稳定性的方法的第二流程示意图;
图5为本发明提供的一种提高Nand flash数据稳定性的方法的第三流程示意图;
图6为本发明提供的一种提高Nand flash数据稳定性的方法的第四流程示意图;
图7为本发明提供的一种提高Nand flash数据稳定性的装置的结构示意图。
标号说明:
1、第一判断模块;2、第二判断模块;3、第三判断模块;4、第一获取模块;5、第一执行模块;6、第四判断模块;7、第五判断模块;8、第二执行模块。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1至图3,本发明提供一种提高Nand flash数据稳定性的方法,内存控制器与主机、DMA控制器,以及Nand存储器通信连接,Nand存储器包括物理页,物理页包括存储数据的数据存储区,以及存储数据来源信息和数据纠错信息的冗余区域,包括:
S1:判断是否接收到第一操作指令信息,其中,第一操作指令信息为主机读取Nand存储器中的第一物理页,发现第一物理页中数据存储区的数据错误时产生的操作指令信息;
S2:若是,则检查第一物理页中是否存在数据纠错信息出错的ECC纠错单元,其中,ECC纠错单元为DMA控制器将数据以DMA的形式传输给Nand存储器的最小单元,第一物理页包含多个ECC纠错单元;
S3:若是,则标记数据纠错信息出错的ECC纠错单元,并检查第一物理页中剩余的ECC纠错单元中存储的数据纠错信息是否均出错;
S4:若否,则从第一物理页中的冗余区域获取存储数据来源信息,其中,存储数据来源信息为第一物理页中数据存储区包含的数据的来源信息;
S5:根据存储数据来源信息,寻找数据来源页,其中,第一物理页中存储的数据来自数据来源页,且数据来源页的数量至少为一;
S6:检查第一数据来源页中的逻辑地址是否与第一物理页的逻辑地址一致,其中,第一数据来源页包含于所有数据来源页,逻辑地址分别存储于各数据来源页,以及第一物理页的冗余区域;
S7:若是,则检查第一数据来源页中与第一物理页中错误数据对应的数据是否出错;
S8:若否,则读出第一数据来源页中与第一物理页中错误数据对应的数据,并上传至主机。
在本发明实施例中,主机读取第一物理页,其中,第一物理页包含于Nand存储器中所有物理页。当主机读取第一物理页发现第一物理页中的数据错误时,产生第一操作指令信息。内存控制器在接收到第一操作指令信息后,检查第一物理页中是否存在数据纠错信息出错的ECC纠错单元,其中,ECC纠错单元为DMA控制器将数据以DMA(Direct MemoryAccess,直接内存存取)的形式传输给Nand存储器的最小单元,第一物理页包含多个ECC纠错单元。在本发明实施例中,第一物理页的数据存储区大小为16K Byte,冗余区域大小为2KByte。第一物理页包含16个ECC纠错单元,如图2所示,每个ECC纠错单元的数据存储区域均为1K Byte,冗余区域大小为125Byte。ECC纠错单元的数据存储区域用于存储数据,冗余区域用于保存存储数据区域包含的数据的来源信息,以及针对ECC纠错单元的数据存储区域包含的数据的数据纠错信息。内存控制器检查第一物理页中是否存在数据纠错信息出错的ECC纠错单元,即内存控制器中的ECC模块检查ECC纠错单元的错误Bit数是否超过纠错范围,若是,则判定该ECC纠错单元的数据纠错信息出错。若内存控制器检查第一物理页中存在数据纠错信息出错的ECC纠错单元,则继续检查第一物理页中剩余的ECC纠错单元是否均出错。如内存控制器检查出第一ECC纠错单元出错,则标记第一ECC纠错单元,检查第二至第十六个ECC纠错单元是否均出错。若否,则从第一物理页中的冗余区域获取存储数据来源信息,即从任意一个数据纠错信息没有出错的ECC纠错单元中获取数据来源信息。根据数据来源信息寻找数据来源页。内存控制器检查第一数据来源页中的逻辑地址是否与第一物理页的逻辑地址一致,若是,则说明数据来源页中的数据保存完好,未经过擦除。内存控制器检查第一数据来源页中与第一物理页中错误数据对应的数据是否出错,即通过ECC模块,检查第一数据来源页中与第一物理页中错误数据对应的数据是否出错。若否,则内存控制器读出第一数据来源页中与第一物理页中错误数据对应的数据,还原出正确数据,并上传至主机,使得主机能读取正确数据。
参考图3,举例说明上述过程。
在本发明实施例中,每列代表一个物理块,如物理块A,物理块B.....,物理块中的每个格子代表一个物理页。数据用X标识,X1、X2、X3表示数据从主机传输到物理块D的过程,且物理块A、物理块C中的数据可认为是物理块D中数据的备份。X1表示数据从主机传输到物理块A,物理块A的冗余区域记录的数据来源信息为集合{逻辑地址A1,物理地址1}。X2表示数据从物理块A传输到物理块C,物理块C的冗余区域记录的数据来源信息为集合{逻辑地址A1,物理地址1,逻辑地址A2,物理地址2}。X3表示数据从物理块C传输到物理块D,物理块D的冗余区域记录的数据来源信息为集合{逻辑地址A1,物理地址1,逻辑地址A2,物理地址2,逻辑地址A3,物理地址3},数据的传输形式为内存控制器将数据整理成一个个ECC纠错单元,以DMA的形式发送给Nand存储器。在本发明实施例中,每个物理页包含16个ECC纠错单元的信息,当主机读取物理块C的数据,发现数据错误时,产生第一操作指令信息,并将第一操作指令信息发送给内存控制器。内存控制器在接收到第一操作指令信息后,启动ECC模块检测ECC纠错单元的数据纠错信息是否出错。在本发明实施例中,物理块D的物理页D为第一物理页,物理块C的物理页D和物理块C的物理页D均为数据来源页,经检测发现,物理块D的物理页D(即第一物理页)中,第一ECC纠错单元的数据纠错信息出错,第二ECC纠错单元至第十六ECC纠错单元正常。内存控制器便读取存储于第二ECC纠错单元的冗余区域中的数据来源信息,即{逻辑地址A1,物理地址1,逻辑地址A2,物理地址2,逻辑地址A3,物理地址3}。内存控制区读取数据来源信息后,先判断物理块C的物理页D对应的逻辑地址A2与物理块D的物理页D对应的逻辑地址A3是否一致,若一致,则证明物理块C的物理页D在将数据传输到物理块D的物理页D后,其中的数据保存完好,并未被擦除。内存控制器通过ECC模块检查物理块C的物理页D的第一ECC纠错单元的数据纠错信息是否出错,若否,则根据物理地址2,提取物理块C的物理页D的第一ECC纠错单元的数据,并上传到主机,从而还原出正确的数据,避免主机读取错误数据,造成严重后果。从上述过程可知,当物理页的数据发生错误时,根据存储在物理页的冗余区域的数据来源信息,找到数据来源页。通过判断数据来源页的逻辑地址是否出错,得知数据来源页中的数据是否被擦除;根据检查第一数据来源页中与第一物理页中错误数据对应的数据是否出错,从而获得正确的数据。内存控制器将正确数据上传到主机,还原出正确数据,使得主机读取正确数据,避免主机因数据迁移过程中出错导致读取错误数据。
参照图4,检查第一数据来源页中的逻辑地址是否与第一物理页的逻辑地址一致的步骤S6之后,包括:
S61:若否,则从剩余的数据来源页中选择一个数据来源页作为新的第一数据来源页;
S62:检查新的第一数据来源页中的逻辑地址是否与第一物理页的逻辑地址一致;
S63:若否,则判断是否检查完所有数据来源页;
S61:若否,则从剩余的数据来源页中选择一个数据来源页作为新的第一数据来源页;
S64:检查新的第一数据来源页中与第一物理页中错误数据对应的数据纠错信息是否出错;
S65:若否,则读出新的第一数据来源页中与第一物理页中错误数据对应的数据,并上传至主机。
在本发明实施例中,若第一数据来源页中的逻辑地址与第一物理页的逻辑地址不一致,则从剩余的数据来源页中选择一个数据来源页作为新的第一数据来源页。如图3所示,若物理块D的物理页D对应的逻辑地址A3与物理块C的物理页对应的的逻辑地址A2不一致,则内存控制器从剩余的数据来源页中选择一个数据来源页作为新的第一数据来源页,即第一数据来源页从物理块C的物理页D,变更成物理块A的物理页D。当新的第一数据来源页中的逻辑地址与第一物理页的逻辑地址一致时,即物理块D的物理页D对应的逻辑地址A3与物理块A的物理页D对应的逻辑地址A1一致时,内存控制器检查物理块A的物理页D中,与物理块D的物理页D错误数据对应的数据的数据纠错信息是否出错,若否,则内存控制器从物理块A的物理页D中读取对应的数据,上传至主机。若新的第一数据来源页中的逻辑地址与第一物理页的逻辑地址不一致时,内存控制器会继续从剩余的数据来源页中选取新的第一数据来源页,直至找到符合要求的第一数据来源页,或者直至检查完所有数据来源页,并发现没有符合要求的数据来源页。通过上述操作,使得内存控制器能最大限度地利用数据来源页中存储的数据,提高数据还原的成功率。
参照图1,检查第一物理页中剩余的ECC纠错单元中存储的数据纠错信息是否均出错的步骤S3之后,包括:
若否,则结束。
在本发明实施例中,若第一物理页中的所有ECC纠错单元中存储的数据纠错信息均出错,意味着第一物理页中所有ECC纠错单元存储的数据都是错误的。内存控制器无法获取数据来源信息,因此无法根据数据来源信息,从数据来源页中获取原始数据,因此结束步骤S3的后续步骤,避免内存控制器做无意义的操作,降低内存控制器的功耗。
参照图5,检查第一数据来源页中的逻辑地址是否与第一物理页的逻辑地址一致的步骤S6之前,包括:
S51:获取所有数据来源页的物理地址;
S52:从所有数据来源页中选取物理地址与第一物理页的物理地址最近的数据来源页作为第一数据来源页。
在本发明实施例中,物理内存分为很多个页,每个这样的页就对应一个structpage*page结构,这些页描述结构存放在一个称之为mem_map的数组里面,而且是严格按照物理内存的顺序来存放的,也就是物理上的第一个页描述结构,作为mem_map数组的第一个元素,依次类推。所以,每个页描述结构(page)在数组mem_map里的位置在乘以页的大小,就可以得到该页的物理地址。从所有数据来源页中选取物理地址与第一物理页的物理地址最近的数据来源页作为第一数据来源页,这样内存控制器能从物理地址最接近的物理块中,即最短路径,还原原始数据,提高还原数据的效率。
参照图6,检查第一数据来源页中的逻辑地址是否与第一物理页的逻辑地址一致的步骤S6之前,包括:
S5A:获取各数据来源页对应的物理块的擦除次数;
S5B:选取擦除次数最多的物理块对应的数据来源页作为第一数据来源页。
在本发明实施例中,在内存读写过程中,每个物理块都会记录擦除次数。内存算法考虑到磨损平衡,会优先使用擦除次数少的物理块,以延长内存的使用寿命。简言之,擦除次数多的物理块被再次擦除的概率比较小,数据保存完整概率比较大。因此,选取擦除次数最多的物理块对应的数据来源页作为第一数据来源页,该物理块数据保存完整的概率最大!通过上述操作,使得内存控制器最大概率提取到完整的原始数据。
参照图7,本发明还提供一种提高Nand flash数据稳定性的装置,包括:
第一判断模块1,用于判断是否接收到第一操作指令信息,其中,第一操作指令信息为主机读取Nand存储器中的第一物理页,发现第一物理页中数据存储区的数据错误时产生的操作指令信息;
第二判断模块2,用于若是,则检查第一物理页中ECC纠错单元中存储的数据纠错信息是否出错,其中,ECC纠错单元为DMA控制器将数据以DMA的形式传输给Nand存储器的最小单元,第一物理页包含多个ECC纠错单元;
第三判断模块3,用于若是,则检查第一物理页中剩余ECC纠错单元中存储的数据纠错信息是否均出错;
第一获取模块4,用于若否,则从第一物理页中的冗余区域获取存储数据来源信息,其中,存储数据来源信息为第一物理页中数据存储区包含的数据的来源信息;
第一执行模块5,用于根据存储数据来源信息,寻找数据来源页,其中,第一物理页中存储的数据来自数据来源页,且数据来源页的数量至少为一;
第四判断模块6,用于检查第一数据来源页中的逻辑地址是否与第一物理页的逻辑地址一致,其中,第一数据来源页包含于所有数据来源页,逻辑地址分别存储于各数据来源页,以及第一物理页的冗余区域;
第五判断模块7,用于若是,则检查第一数据来源页中与第一物理页中错误数据对应的数据是否出错;
第二执行模块8,用于若否,则读出第一数据来源页中与第一物理页中错误数据对应的数据,并上传至主机。
在本发明实施例中,每列代表一个物理块,如物理块A,物理块B.....,物理块中的每个格子代表一个物理页。数据用X标识,X1、X2、X3表示数据从主机传输到物理块D的过程,且物理块A、物理块C中的数据可认为是物理块D中数据的备份。X1表示数据从主机传输到物理块A,物理块A的冗余区域记录的数据来源信息为集合{逻辑地址A1,物理地址1}。X2表示数据从物理块A传输到物理块C,物理块C的冗余区域记录的数据来源信息为集合{逻辑地址A1,物理地址1,逻辑地址A2,物理地址2}。X3表示数据从物理块C传输到物理块D,物理块D的冗余区域记录的数据来源信息为集合{逻辑地址A1,物理地址1,逻辑地址A2,物理地址2,逻辑地址A3,物理地址3},数据的传输形式为内存控制器将数据整理成一个个ECC纠错单元,以DMA的形式发送给Nand存储器。在本发明实施例中,每个物理页包含16个ECC纠错单元的信息,当主机读取物理块C的数据,发现数据错误时,产生第一操作指令信息,并将第一操作指令信息发送给内存控制器。内存控制器在接收到第一操作指令信息后,启动ECC模块检测ECC纠错单元的数据纠错信息是否出错。在本发明实施例中,物理块D的物理页D为第一物理页,物理块C的物理页D和物理块C的物理页D均为数据来源页,经检测发现,物理块D的物理页D(即第一物理页)中,第一ECC纠错单元的数据纠错信息出错,第二ECC纠错单元至第十六ECC纠错单元正常。内存控制器便读取存储于第二ECC纠错单元的冗余区域中的数据来源信息,即{逻辑地址A1,物理地址1,逻辑地址A2,物理地址2,逻辑地址A3,物理地址3}。内存控制区读取数据来源信息后,先判断物理块C的物理页D对应的逻辑地址A2与物理块D的物理页D对应的逻辑地址A3是否一致,若一致,则证明物理块C的物理页D在将数据传输到物理块D的物理页D后,其中的数据保存完好,并未被擦除。内存控制器通过ECC模块检查物理块C的物理页D的第一ECC纠错单元的数据纠错信息是否出错,若否,则根据物理地址2,提取物理块C的物理页D的第一ECC纠错单元的数据,并上传到主机,从而还原出正确的数据,避免主机读取错误数据,造成严重后果。从上述过程可知,当物理页的数据发生错误时,根据存储在物理页的冗余区域的数据来源信息,找到数据来源页。通过判断数据来源页的逻辑地址是否出错,得知数据来源页中的数据是否被擦除;根据检查第一数据来源页中与第一物理页中错误数据对应的数据是否出错,从而获得正确的数据。内存控制器将正确数据上传到主机,还原出正确数据,使得主机读取正确数据,避免主机因数据迁移过程中出错导致读取错误数据。
进一步地,提高Nand flash数据稳定性的装置,还包括:
第三执行模块,用于若否,则从剩余的数据来源页中选择一个数据来源页作为新的第一数据来源页;
第六判断模块,用于检查新的第一数据来源页中的逻辑地址是否与第一物理页的逻辑地址一致;
第七判断模块,用于若否,则判断是否检查完所有数据来源页;
第八判断模块,用于若否,则从剩余的数据来源页中选择一个数据来源页作为新的第一数据来源页;
第九判断模块,用于检查新的第一数据来源页中与第一物理页中错误数据对应的数据纠错信息是否出错;
第四执行模块,用于若否,则读出新的第一数据来源页中与第一物理页中错误数据对应的数据,并上传至主机。
在本发明实施例中,若第一数据来源页中的逻辑地址与第一物理页的逻辑地址不一致,则从剩余的数据来源页中选择一个数据来源页作为新的第一数据来源页。如图3所示,若物理块D的物理页D对应的逻辑地址A3与物理块C的物理页对应的的逻辑地址A2不一致,则内存控制器从剩余的数据来源页中选择一个数据来源页作为新的第一数据来源页,即第一数据来源页从物理块C的物理页D,变更成物理块A的物理页D。当新的第一数据来源页中的逻辑地址与第一物理页的逻辑地址一致时,即物理块D的物理页D对应的逻辑地址A3与物理块A的物理页D对应的逻辑地址A1一致时,内存控制器检查物理块A的物理页D中,与物理块D的物理页D错误数据对应的数据的数据纠错信息是否出错,若否,则内存控制器从物理块A的物理页D中读取对应的数据,上传至主机。若新的第一数据来源页中的逻辑地址与第一物理页的逻辑地址不一致时,内存控制器会继续从剩余的数据来源页中选取新的第一数据来源页,直至找到符合要求的第一数据来源页,或者直至检查完所有数据来源页,并发现没有符合要求的数据来源页。通过上述操作,使得内存控制器能最大限度地利用数据来源页中存储的数据,提高数据还原的成功率。
进一步地,提高Nand flash数据稳定性的装置,还包括:
结束模块,用于若是,则结束。
在本发明实施例中,若第一物理页中的所有ECC纠错单元中存储的数据纠错信息均出错,意味着第一物理页中所有ECC纠错单元存储的数据都是错误的。内存控制器无法获取数据来源信息,因此无法根据数据来源信息,从数据来源页中获取原始数据,因此结束步骤S3的后续步骤,避免内存控制器做无意义的操作,降低内存控制器的功耗。
进一步地,提高Nand flash数据稳定性的装置,还包括:
第一获取模块,用于获取所有数据来源页的物理地址;
第五执行模块,用于从所有数据来源页中选取物理地址与第一物理页的物理地址最近的数据来源页作为第一数据来源页。
在本发明实施例中,物理内存分为很多个页,每个这样的页就对应一个structpage*page结构,这些页描述结构存放在一个称之为mem_map的数组里面,而且是严格按照物理内存的顺序来存放的,也就是物理上的第一个页描述结构,作为mem_map数组的第一个元素,依次类推。所以,每个页描述结构(page)在数组mem_map里的位置在乘以页的大小,就可以得到该页的物理地址。从所有数据来源页中选取物理地址与第一物理页的物理地址最近的数据来源页作为第一数据来源页,这样内存控制器能从物理地址最接近的物理块中,即最短路径,还原原始数据,提高还原数据的效率。
进一步地,提高Nand flash数据稳定性的装置,还包括:
第二获取模块,用于获取各数据来源页对应的物理块的擦除次数;
第六执行模块,用于选取擦除次数最多的物理块对应的数据来源页作为第一数据来源页。
在本发明实施例中,在内存读写过程中,每个物理块都会记录擦除次数。内存算法考虑到磨损平衡,会优先使用擦除次数少的物理块,以延长内存的使用寿命。简言之,擦除次数多的物理块被再次擦除的概率比较小,数据保存完整概率比较大。因此,选取擦除次数最多的物理块对应的数据来源页作为第一数据来源页,该物理块数据保存完整的概率最大!通过上述操作,使得内存控制器最大概率提取到完整的原始数据。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。