CN110764693B - 一种提高Nand flash数据稳定性的方法以及装置 - Google Patents

一种提高Nand flash数据稳定性的方法以及装置 Download PDF

Info

Publication number
CN110764693B
CN110764693B CN201910867061.0A CN201910867061A CN110764693B CN 110764693 B CN110764693 B CN 110764693B CN 201910867061 A CN201910867061 A CN 201910867061A CN 110764693 B CN110764693 B CN 110764693B
Authority
CN
China
Prior art keywords
data
page
data source
physical
physical page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910867061.0A
Other languages
English (en)
Other versions
CN110764693A (zh
Inventor
李虎
罗胜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Demingli Electronics Co Ltd
Original Assignee
Shenzhen Demingli Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Demingli Electronics Co Ltd filed Critical Shenzhen Demingli Electronics Co Ltd
Priority to CN201910867061.0A priority Critical patent/CN110764693B/zh
Publication of CN110764693A publication Critical patent/CN110764693A/zh
Application granted granted Critical
Publication of CN110764693B publication Critical patent/CN110764693B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明揭示了一种提高Nand flash数据稳定性的方法以及装置,其中,内存控制器与主机、DMA控制器,以及Nand存储器通信连接,Nand存储器包括物理页,物理页包括存储数据的数据存储区,以及存储数据来源信息和数据纠错信息的冗余区域,方法包括:当物理页的数据发生错误时,根据存储在物理页的冗余区域的数据来源信息,找到数据来源页。通过判断数据来源页的逻辑地址是否出错,得知数据来源页中的数据是否被擦除;根据检查第一数据来源页中与第一物理页中错误数据对应的数据是否出错,从而获得正确的数据。内存控制器将正确数据上传到主机,还原出正确数据,使得主机读取正确数据,避免主机因数据迁移过程中出错导致读取错误数据。

Description

一种提高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数据稳定性的装置,还包括:
第二获取模块,用于获取各数据来源页对应的物理块的擦除次数;
第六执行模块,用于选取擦除次数最多的物理块对应的数据来源页作为第一数据来源页。
在本发明实施例中,在内存读写过程中,每个物理块都会记录擦除次数。内存算法考虑到磨损平衡,会优先使用擦除次数少的物理块,以延长内存的使用寿命。简言之,擦除次数多的物理块被再次擦除的概率比较小,数据保存完整概率比较大。因此,选取擦除次数最多的物理块对应的数据来源页作为第一数据来源页,该物理块数据保存完整的概率最大!通过上述操作,使得内存控制器最大概率提取到完整的原始数据。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种提高Nand flash数据稳定性的方法,其特征在于,内存控制器与主机、DMA控制器,以及Nand存储器通信连接,所述Nand存储器包括物理页,物理页包括存储数据的数据存储区,以及存储数据来源信息和数据纠错信息的冗余区域,包括:
判断是否接收到第一操作指令信息,其中,所述第一操作指令信息为所述主机读取所述Nand存储器中的第一物理页,发现所述第一物理页中所述数据存储区的数据错误时产生的操作指令信息;
若是,则检查所述第一物理页中是否存在数据纠错信息出错的ECC纠错单元,其中,所述ECC纠错单元为所述DMA控制器将数据以DMA的形式传输给所述Nand存储器的最小单元,所述第一物理页包含多个所述ECC纠错单元;
若是,则标记数据纠错信息出错的ECC纠错单元,并检查所述第一物理页中剩余的所述ECC纠错单元中存储的数据纠错信息是否均出错;
若否,则从所述第一物理页中的冗余区域获取所述存储数据来源信息,其中,所述存储数据来源信息为所述第一物理页中所述数据存储区包含的数据的来源信息;
根据所述存储数据来源信息,寻找数据来源页,其中,所述第一物理页中存储的数据来自所述数据来源页,且所述数据来源页的数量至少为一;
检查第一数据来源页中的逻辑地址是否与所述第一物理页的逻辑地址一致,其中,所述第一数据来源页包含于所有所述数据来源页,所述逻辑地址分别存储于各所述数据来源页,以及所述第一物理页的冗余区域;
若是,则检查所述第一数据来源页中与所述第一物理页中错误数据对应的数据是否出错;
若否,则读出所述第一数据来源页中与所述第一物理页中错误数据对应的数据,并上传至所述主机。
2.根据权利要求1所述的提高Nand flash数据稳定性的方法,其特征在于,所述检查第一数据来源页中的逻辑地址是否与所述第一物理页的逻辑地址一致的步骤之后,包括:
若否,则从剩余的所述数据来源页中选择一个数据来源页作为新的第一数据来源页;
检查所述新的第一数据来源页中的逻辑地址是否与所述第一物理页的逻辑地址一致;
若否,则判断是否检查完所有所述数据来源页;
若否,则从剩余的所述数据来源页中选择一个数据来源页作为新的第一数据来源页;
检查所述新的第一数据来源页中与所述第一物理页中错误数据对应的数据纠错信息是否出错;
若否,则读出所述新的第一数据来源页中与所述第一物理页中错误数据对应的数据,并上传至所述主机。
3.根据权利要求1所述的提高Nand flash数据稳定性的方法,其特征在于,所述检查所述第一物理页中剩余的所述ECC纠错单元中存储的数据纠错信息是否均出错的步骤之后,包括:
若是,则结束。
4.根据权利要求1所述的提高Nand flash数据稳定性的方法,其特征在于,所述检查所述第一数据来源页中的逻辑地址是否与所述第一物理页的逻辑地址一致的步骤之前,包括:
获取所有所述数据来源页的物理地址;
从所有所述数据来源页中选取物理地址与所述第一物理页的物理地址最近的数据来源页作为所述第一数据来源页。
5.根据权利要求1所述的提高Nand flash数据稳定性的方法,其特征在于,所述检查所述第一数据来源页中的逻辑地址是否与所述第一物理页的逻辑地址一致的步骤之前,包括:
获取各所述数据来源页对应的物理块的擦除次数;
选取擦除次数最多的物理块对应的所述数据来源页作为所述第一数据来源页。
6.一种提高Nand flash数据稳定性的装置,其特征在于,包括:
第一判断模块,用于判断是否接收到第一操作指令信息,其中,所述第一操作指令信息为所述主机读取所述Nand存储器中的第一物理页,发现所述第一物理页中所述数据存储区的数据错误时产生的操作指令信息;
第二判断模块,用于若是,则检查所述第一物理页中是否存在数据纠错信息出错的ECC纠错单元,其中,所述ECC纠错单元为所述DMA控制器将数据以DMA的形式传输给所述Nand存储器的最小单元,所述第一物理页包含多个所述ECC纠错单元;
第三判断模块,用于若是,则标记数据纠错信息出错的ECC纠错单元,并检查所述第一物理页中剩余的所述ECC纠错单元中存储的数据纠错信息是否均出错;
第一获取模块,用于若否,则从所述第一物理页中的冗余区域获取所述存储数据来源信息,其中,所述存储数据来源信息为所述第一物理页中所述数据存储区包含的数据的来源信息;
第一执行模块,用于根据所述存储数据来源信息,寻找数据来源页,其中,所述第一物理页中存储的数据来自所述数据来源页,且所述数据来源页的数量至少为一;
第四判断模块,用于检查第一数据来源页中的逻辑地址是否与所述第一物理页的逻辑地址一致,其中,所述第一数据来源页包含于所有所述数据来源页,所述逻辑地址分别存储于各所述数据来源页,以及所述第一物理页的冗余区域;
第五判断模块,用于若是,则检查所述第一数据来源页中与所述第一物理页中错误数据对应的数据是否出错;
第二执行模块,用于若否,则读出所述第一数据来源页中与所述第一物理页中错误数据对应的数据,并上传至所述主机。
7.根据权利要求6所述的提高Nand flash数据稳定性的装置,其特征在于,还包括:
第三执行模块,用于若否,则从剩余的所述数据来源页中选择一个数据来源页作为新的第一数据来源页;
第六判断模块,用于检查所述新的第一数据来源页中的逻辑地址是否与所述第一物理页的逻辑地址一致;
第七判断模块,用于若否,则判断是否检查完所有所述数据来源页;
第八判断模块,用于若否,则从剩余的所述数据来源页中选择一个数据来源页作为新的第一数据来源页;
第九判断模块,用于检查所述新的第一数据来源页中与所述第一物理页中错误数据对应的数据纠错信息是否出错;
第四执行模块,用于若否,则读出所述新的第一数据来源页中与所述第一物理页中错误数据对应的数据,并上传至所述主机。
8.根据权利要求6所述的提高Nand flash数据稳定性的装置,其特征在于,还包括:
结束模块,用于若是,则结束。
9.根据权利要求6所述的提高Nand flash数据稳定性的装置,其特征在于,还包括:
第一获取模块,用于获取所有所述数据来源页的物理地址;
第五执行模块,用于从所有所述数据来源页中选取物理地址与所述第一物理页的物理地址最近的数据来源页作为所述第一数据来源页。
10.根据权利要求6所述的提高Nand flash数据稳定性的装置,其特征在于,还包括:
第二获取模块,用于获取各所述数据来源页对应的物理块的擦除次数;
第六执行模块,用于选取擦除次数最多的物理块对应的所述数据来源页作为所述第一数据来源页。
CN201910867061.0A 2019-09-12 2019-09-12 一种提高Nand flash数据稳定性的方法以及装置 Active CN110764693B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910867061.0A CN110764693B (zh) 2019-09-12 2019-09-12 一种提高Nand flash数据稳定性的方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910867061.0A CN110764693B (zh) 2019-09-12 2019-09-12 一种提高Nand flash数据稳定性的方法以及装置

Publications (2)

Publication Number Publication Date
CN110764693A CN110764693A (zh) 2020-02-07
CN110764693B true CN110764693B (zh) 2023-03-28

Family

ID=69329609

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910867061.0A Active CN110764693B (zh) 2019-09-12 2019-09-12 一种提高Nand flash数据稳定性的方法以及装置

Country Status (1)

Country Link
CN (1) CN110764693B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111625481B (zh) * 2020-04-28 2022-07-26 深圳市德明利技术股份有限公司 一种防止闪存比特错误放大的方法和装置以及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101288056A (zh) * 2006-03-13 2008-10-15 松下电器产业株式会社 闪速存储器用的存储控制器
CN103262054A (zh) * 2010-12-13 2013-08-21 弗森-艾奥公司 用于自动提交存储器的装置、***和方法
CN109388343A (zh) * 2018-09-26 2019-02-26 深圳市德名利电子有限公司 一种数据存储方法及存储器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8281227B2 (en) * 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US9176810B2 (en) * 2011-05-27 2015-11-03 SanDisk Technologies, Inc. Bit error reduction through varied data positioning

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101288056A (zh) * 2006-03-13 2008-10-15 松下电器产业株式会社 闪速存储器用的存储控制器
CN103262054A (zh) * 2010-12-13 2013-08-21 弗森-艾奥公司 用于自动提交存储器的装置、***和方法
CN109388343A (zh) * 2018-09-26 2019-02-26 深圳市德名利电子有限公司 一种数据存储方法及存储器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种基于NAND Flash的多通道存储***编址方式研究与实现;赵倩等;《微电子学与计算机》;20180905(第09期);全文 *
延长固态硬盘使用寿命的算法综述;杨松芳;《中国集成电路》;20180605(第06期);全文 *

Also Published As

Publication number Publication date
CN110764693A (zh) 2020-02-07

Similar Documents

Publication Publication Date Title
CN109582217B (zh) 数据储存装置与将数据写入存储器装置的方法
US8006030B2 (en) Memory controller for identifying the last valid page/segment in a physical block of a flash memory
US7321959B2 (en) Control method of a non-volatile memory apparatus
US8175012B2 (en) Decoding/encoding method for booting from a NAND flash and system thereof
CN102880521B (zh) 非易失性存储器装置中管理块和存取数据页的方法及设备
CN109933545B (zh) 数据储存装置与存储器装置的数据处理方法
US10489246B2 (en) Data storage device and data maintenance method thereof
CN109582216B (zh) 数据储存装置与存储器装置的数据处理方法
CN102099793A (zh) 根据固态存储器的擦除计数进行误差校正的方法和装置
CN101901169B (zh) 扫描装置及方法
CN112612634A (zh) 存储器***和主机的操作方法以及计算***
US10642731B2 (en) Memory management method and storage controller
CN105808371A (zh) 数据备份与恢复方法、控制芯片及存储装置
CN104282342A (zh) 闪存装置、存储器控制器及闪存的控制方法
CN112148522A (zh) 快闪存储器中的错误校正方案
TWI473103B (zh) 快閃記憶體儲存裝置及其不良儲存區域的判定方法
US10229742B2 (en) Flash memory device
CN116880782A (zh) 一种内嵌式存储器及其测试方法
CN110764693B (zh) 一种提高Nand flash数据稳定性的方法以及装置
JP6524126B2 (ja) メモリ制御装置及びメモリ制御方法
CN112051963B (zh) 数据写入方法、存储器控制电路单元以及存储器存储装置
US11995224B2 (en) Data storage device and data processing method
CN110764947B (zh) 数据写入方法以及存储控制器
CN117806569B (zh) 一种存储设备以及数据处理方法
CN117789808B (zh) 一种存储器及其坏块纠错方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 518000 Intelligence Valley Innovation Park 701, 707, No. 1010 Bulong Road, Xinniu Community, Minzhi Street, Longhua District, Shenzhen City, Guangdong Province

Applicant after: Shenzhen deminli Technology Co.,Ltd.

Address before: 518000 Intelligence Valley Innovation Park 701, 707, No. 1010 Bulong Road, Xinniu Community, Minzhi Street, Longhua District, Shenzhen City, Guangdong Province

Applicant before: SHENZHEN DEMINGLI ELECTRONICS Co.,Ltd.

CB02 Change of applicant information
CB02 Change of applicant information

Address after: 2501, 2401, block a, building 1, Shenzhen new generation industrial park, 136 Zhongkang Road, Meidu community, Meilin street, Futian District, Shenzhen, Guangdong 518000

Applicant after: Shenzhen deminli Technology Co.,Ltd.

Address before: 701, 707, wisdom Valley Innovation Park, 1010 Bulong Road, Xinniu community, Minzhi street, Longhua District, Shenzhen, Guangdong 518000

Applicant before: Shenzhen deminli Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant