CN109992443B - 一种nand闪存数据检查方法 - Google Patents
一种nand闪存数据检查方法 Download PDFInfo
- Publication number
- CN109992443B CN109992443B CN201910167728.6A CN201910167728A CN109992443B CN 109992443 B CN109992443 B CN 109992443B CN 201910167728 A CN201910167728 A CN 201910167728A CN 109992443 B CN109992443 B CN 109992443B
- Authority
- CN
- China
- Prior art keywords
- data
- block
- page
- nand flash
- flash memory
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
- G06F11/1056—Updating check bits on partial write, i.e. read/modify/write
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
- G06F11/106—Correcting systematically all correctable errors, i.e. scrubbing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提出了一种NAND闪存数据检查方法,包括以下步骤:按照每个block的数据写入顺序进行编号,并将编号保存;从最先写入的block开始检查,每完成一个block的检查操作后,按写入先后顺序启动下一个block的数据检查,检查完一个或几个block时,将检查的block写入顺序编号记录在NAND中;判断当前编号的block中的数据是否需要重写,如需要重写,则执行下一步,如不需要重写,则将检查指向下一编号的block并返回上一步;对当前存储单元中的数据复制到空白存储单元中,并擦除所述当前存储单元中的数据。
Description
技术领域
本发明涉及存储器测试领域,特别涉及一种NAND闪存数据检查方法。
背景技术
NAND闪存属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。非易失性就是不容易丢失,数据存储在这类设备中,即使断电了,也不会丢失。
闪存的内部存储是金属-氧化层-半导体-场效晶体管,里面有个悬浮门,是真正存储数据的单元。
数据在闪存的内存单元中是以电荷形式存储的。存储电荷的多少,取决于图中的控制门所被施加的电压,其控制了是向存储单元中冲入电荷还是使其释放电荷。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值Vth来表示。
NAND闪存作为一种比较实用的固态硬盘存储介质,有自己的一些物理特性,需要有基本的管理技术才能使用,对设计者来说,挑战主要在下面几点:
1.需要先擦除才能写入。
2.损耗机制,有耐久度限制。
3.读写时候造成的干扰会造成数据出错。
4.数据的保存期。
5.对初始和运行时候的坏块管理。
只有至少满足这些基本的管理技术,才能让NAND闪存成为一款可以使用的固态存储介质。
由于NAND闪存的上述物理特性,当数据在闪存中存放时间较长,或者闪存内的数据读取次数过多,会导致闪存数据的不稳定,这时候需要将闪存的block重新擦除,并将数据重写来保持数据的可靠性。一般解决这个问题的方法是从逻辑地址开始,按顺序检查数据。等待上层应用读到闪存数据不可靠,再将数据搬走,这种办法效率较低,没办法发现哪些数据不稳定的概率更高,并且闪存内部数据有些是过去的数据,不对应逻辑地址,这种数据不稳定时,意味着整个block稳定性也有问题,但这种方法不能识别。
发明内容
本发明针对现有技术存在的基于逻辑地址来对闪存中的数据进行检查效率低下并有可能无效的问题,提出了一种NAND闪存数据检查方法。
首先,本发明提出一种NAND闪存数据检查方法,包括以下步骤:
S100)按照NAND闪存的每个block的数据写入顺序进行编号,并将编号保存在这个block的每个页的spare区中;
S200)对每NAND闪存的每一个block进行检查,检查从最先写入的block开始,每完成一个block的检查操作后,按写入先后顺序启动下一个block的数据检查,检查完一个或者几个block时,可以将检查的block写入顺序编号记录在NAND中,如果掉电,下次启动可以继续从之前记录的编号继续检查,如果检查到最近写入的block,那将检查编号设置为最低,重新开始下一次的检查;
S300)判断当前编号的block中的数据是否需要重写,如需要重写,则执行步骤S400,如不需要重写,则将检查指向下一编号的block并返回步骤S200;
S400)对当前存储单元中的数据复制到NAND闪存中的空白存储单元中,并擦除所述当前存储单元中的数据。
进一步,在本发明所提出的上述方法中,若所述NAND闪存类型为SLC时,步骤S300还包括以下子步骤:
S311)读取当前block中的每一页数据并获取每一页的数据错误的比特数及P/E数;
S312)以当前页的数据错误的比特数为第一检查值,并以当前页P/E数的第一比例为标准值;
S313)当前block中的每一页的第一检查值均不超过标准值时,判断当前block中的数据不需要重写;当前block中的每一页中的至少一页的第一检查值超过标准值时,判断当前block中的数据需要重写。
进一步,在本发明所提出的上述方法中,若所述NAND闪存类型为TLC时,步骤S300还包括以下子步骤:
S321)读取当前block中的配对页中的X page数据并获取该页的数据错误的比特数及P/E数;
S322)以该页的数据错误的比特数为第一检查值,并以该页P/E数的第一比例为标准值;
S323)该页的第一检查值不超过标准值时,判断当前block中的数据不需要重写;该页的第一检查值超过标准值时,判断当前block中的数据需要重写。
进一步,在本发明所提出的上述方法中,步骤S400还包括以下子步骤:
当前存储单元中的数据传输到空白存储单元的缓存寄存器中,再从缓存寄存器中传输到该空白存储单元中。
具体地,在本发明所提出的上述方法中,所述NAND闪存的架构至少包括以下一种:TLC、MLC、eMLC、SLC及QLC。
其次,本发明提出一种NAND闪存数据检查装置,包括以下模块:
编号模块,用于按照NAND闪存的每个block的数据写入顺序进行编号,并将编号保存在这个block的每个页的spare区中;
检查模块,对NAND闪存的每一个block进行检查,检查从先写入数据的block开始,每完成一个block的检查操作后,检查下一个写入数据的block;
判断模块,用于判断当前编号的block中的数据是否需要重写,如需要重写,则启动重写模块,如不需要重写,则将检查指向下一编号的block,并启动计数模块;
重写模块,用于对当前存储单元中的数据复制到NAND闪存中的空白存储单元中,并擦除所述当前存储单元中的数据。
最后,本发明提出一种计算机可读存储介质,其上存储有计算机指令,所述指令用于执行上述方法。
本发明的有益效果是:对闪存的block进行编号而不是基于逻辑地址,按照数据写入的先后顺序优先检查最早写入的数据,使得数据的检查更有效。
附图说明
图1所示为浮栅MOSFET的结构图;
图2所示为SLC NAND闪存的存储原理图;
图3所示为MLC NAND闪存的存储原理图;
图4所示为TLC NAND闪存的存储原理图;
图5所示为本发明提出的一种NAND闪存数据检查方法的第一实施例流程图;
图6所示为本发明提出的一种NAND闪存数据检查方法的第二实施例流程图;
图7所示为本发明提出的一种NAND闪存数据检查方法的第三实施例流程图;
图8所示为本发明提出的一种NAND闪存数据检查装置的框架图;
图9所示为本发明提出的一种NAND闪存数据检查方法的第四实施例示意图。
具体实施方式
以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。附图中各处使用的相同的附图标记指示相同或相似的部分。
需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本申请中所使用的上、下、左、右等描述仅仅是相对于附图中本申请各组成部分的相互位置关系来说的。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本申请。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。
应当理解,尽管在本申请中可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本申请范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”。
参照图1所示的浮栅MOSFET的结构图,NAND闪存将信息存储在由浮栅晶体管组成的存储单元中,为了更好地理解不同类型的NAND闪存,首先对浮栅晶体管的结构、工作原理及其局限进行分析。
参照图1,浮栅晶体管或浮栅MOSFET(FGMOS)跟常规MOSFET非常类似,有一点不同的是它在栅极和沟道之间添加了额外的电绝缘浮栅。由于浮栅是电隔离的,所以即使在去除电压之后,到达栅极的任何电子也会被捕获。这使得存储器具有非易失性。与具有固定阈值电压的常规MOSFET不同,FGMOS的阈值电压取决于存储在浮栅中的电荷量。电荷越多,阈值电压越高。与常规MOSFET类似,当施加到控制栅极的电压高于阈值电压时,FGMOS将开始导通。因此,通过测量其阈值电压并与固定电压电平进行比较,就可以识别存储在FGMOS中的信息。这称为闪存的读操作。
可以使用两种方法将电子放置在浮栅中:Fowler-Nordheim隧穿或热载流子注入。对于Fowler-Nordheim隧穿,在带负电的源极和带正电的控制栅极之间施加强电场。这使得来自源极的电子隧穿穿过薄氧化层并到达浮栅。隧穿所需的电压取决于隧道氧化层的厚度。对于热载流子注入方法,高电流通过沟道,为电子提供足够的能量以穿过氧化物层并到达浮栅。
通过在控制栅极上施加强负电压,并在源极和漏极端子上施加强正电压,使用Fowler-Nordheim隧穿可以从浮栅移除电子。这将导致被捕获的电子通过薄氧化层返回沟道。在闪存中,将电子放置在浮栅中被认为是编程/写入操作,而去除电子被认为是擦除操作。
隧穿工艺有一个主要缺点:它会逐渐损坏氧化层。这被称为闪存磨损。每次对单元进行编程或擦除时,一些电子都会粘在氧化层中,从而逐渐磨损氧化层。一旦氧化层达到不再能够可靠地区分编程和擦除状态时,这一单元就被认为是坏的或磨损的。由于读取操作不需要隧穿,它们不会磨损单元。因此,闪存的寿命表示为它可以支持的编程/擦除(即P/E)周期数。
由于闪存的成本取决于其裸片面积,如果可以在同样的面积上存储更多数据,闪存将更具成本效益。NAND闪存有三种主要类型:单层单元(SLC)、多层单元(MLC)和三层单元(TLC)。顾名思义,在相同的单位面积上,TLC闪存比MLC存储的数据更多,而MLC又比SLC存储的数据多。另一种新型的NAND闪存称为3D NAND或V-NAND(垂直NAND)。通过在同一晶圆上垂直堆叠多层存储单元,这种类型的闪存可以获得更大的密度。
参照图2,在SLC闪存中,每个存储单元仅存储一位信息:逻辑0或逻辑1。单元的阈值电压与某个电压电平进行比较,如果高于这一电平,则该位被视为逻辑0。如果低于这一电平则为逻辑1。由于只有两个电平,因此两个电平电压之间的电压差距可能非常高。这使得读取存储单元更容易,更快捷。原始误码率(RBER)也很低,这要归功于较大的电压差,因为在读取操作期间任何泄漏或干扰的影响较小。低RBER还减少了特定数据块所需的ECC位数。大电压差的另一个优点是磨损的影响相对较小,因为微小的电荷泄漏具有相对较低的影响。逻辑电平的更宽分布也有助于以更低的电压对存储单元进行编程或擦除,这进一步增加了单元的耐用性,进而提高了寿命周期内P/E循环数。但是SLC闪存也有缺点,与其他类型的闪存相比,它在相同裸片面积上可以存储的数据要少,因此其存储单元的成本更高。
参照图3,在MLC闪存中,每个单元存储两位信息,即00、01、10和11。在这种情况下,阈值电压要与三个电平进行比较(总共4个电压带)。因为要对多个电平进行比较,读取操作需要更加精确,导致其读取速度比SLC闪存更慢。由于较低的电压差,原始误码率(RBER)也相对较高,而且特定数据块需要更多的ECC比特位。现在磨损的影响也更为显着,因为与SLC闪存相比,任何电荷泄漏都会产生更大的相对影响,从而减少了寿命周期内P/E循环次数。由于需要仔细编程以便将电荷存储在每个逻辑电平所需的紧密窗口内,MLC闪存的编程操作也要慢得多。然而,它的主要优点是每比特成本更低。MLC闪存的低可靠性和耐用性使得它不适合企业级应用,而低成本是它得以存在的主要因素。为了发挥其低成本优势,闪存制造商开发出一种优化级别的MLC闪存,称为eMLC,它具有较高的可靠性和耐用性。eMLC中的数据密度通常会降低,从而提供更好的电压差以提高可靠性。较慢的擦除和编程循环通常用于减少磨损的影响并提高耐用性。
参照图4,在TLC闪存中,每个单元存储3位信息。现在是将阈值电压与七个电平(总共8个电压带)进行比较。与SLC闪存相比,TLC闪存需要将更多电平进行比较,其读取操作需要高度精确,因此速度比较慢。原始误码率(RBER)也很高,这就需要为特定数据块提供更多ECC位。此外,其单元磨损的影响也增加了,大大减少了寿命周期内P/E循环次数。其编程操作也较慢,因为电压需要精确以便将电荷存储在每个逻辑电平所需的更严格的窗口内。TLC闪存的主要优势是每比特的成本最低。
参照图5所示的本发明提出的一种NAND闪存数据检查方法的第一实施例流程图,本实施例描述了一种NAND闪存数据检查方法,包括以下步骤:
S100)按照NAND闪存的每个block的数据写入顺序进行编号,并将编号保存在这个block的每个页的spare区中;
S200)对每NAND闪存的每一个block进行检查,检查从最先写入的block开始,每完成一个block的检查操作后,按写入先后顺序启动下一个block的数据检查,检查完一个或者几个block时,可以将检查的block写入顺序编号记录在NAND中,如果掉电,下次启动可以继续从之前记录的编号继续检查,如果检查到最近写入的block,那将检查编号设置为最低,重新开始下一次的检查;
S300)判断当前编号的block中的数据是否需要重写,如需要重写,则执行步骤S400,如不需要重写,则将检查指向下一编号的block并返回步骤S200;
S400)对当前存储单元中的数据复制到NAND闪存中的空白存储单元中,并擦除所述当前存储单元中的数据。
具体地,第一次数可以通过人工设置或者系统默认的方式进行指定。
进一步,参照图6所示的本发明提出的一种NAND闪存数据检查方法的第二实施例流程图,若所述NAND闪存类型为SLC时,步骤S300还包括以下子步骤:
S311)读取当前block中的每一页数据并获取每一页的数据错误的比特数及P/E数;
S312)以当前页的数据错误的比特数为第一检查值,并以当前页P/E数的第一比例为标准值;
S313)当前block中的每一页的第一检查值均不超过标准值时,判断当前block中的数据不需要重写;当前block中的每一页中的至少一页的第一检查值超过标准值时,判断当前block中的数据需要重写。
进一步,参照图7所示的本发明提出的一种NAND闪存数据检查方法的第三实施例流程图,若所述NAND闪存类型为TLC时,步骤S300还包括以下子步骤:
S321)读取当前block中的配对页中的X page数据并获取该页的数据错误的比特数及P/E数;
S322)以该页的数据错误的比特数为第一检查值,并以该页P/E数的第一比例为标准值;
S323)该页的第一检查值不超过标准值时,判断当前block中的数据不需要重写;该页的第一检查值超过标准值时,判断当前block中的数据需要重写。
具体地,X page根据Nand厂商的说明书设定,有一些固定的page称为X page。
进一步,步骤S400还包括以下子步骤:
当前存储单元中的数据传输到空白存储单元的缓存寄存器中,再从缓存寄存器中传输到该空白存储单元中。
进一步,步骤S400还包括以下子步骤:
将当前存储单元中的数据读取到寄存器,再从寄存器传输到Host。
具体地,在本发明所提出的上述方法中,所述NAND闪存的架构至少包括以下一种:TLC、MLC、eMLC、SLC及QLC。
具体地,NAND闪存有三种主要类型:单层单元(SLC)、多层单元(MLC)和三层单元(TLC)。顾名思义,在相同的单位面积上,TLC闪存比MLC存储的数据更多,而MLC又比SLC存储的数据多。另一种新型的NAND闪存称为3D NAND或V-NAND(垂直NAND)。通过在同一晶圆上垂直堆叠多层存储单元,这种类型的闪存可以获得更大的密度,QLC是3D NAND闪存的其中一种。
参照图8所示的本发明提出的一种NAND闪存数据检查装置的框架图,图8描述了一种NAND闪存数据检查装置,包括以下模块:
编号模块,用于按照NAND闪存的每个block的数据写入顺序进行编号,并将编号保存在这个block的每个页的spare区中;
检查模块,对NAND闪存的每一个block进行检查,检查从先写入数据的block开始,每完成一个block的检查操作后,检查下一个写入数据的block;
判断模块,用于判断当前编号的block中的数据是否需要重写,如需要重写,则启动重写模块,如不需要重写,则将检查指向下一编号的block,并启动计数模块;
重写模块,用于对当前存储单元中的数据复制到NAND闪存中的空白存储单元中,并擦除所述当前存储单元中的数据。
具体地,第一次数可以通过人工设置或者系统默认的方式进行指定。
进一步,若所述NAND闪存类型为SLC时,步骤判断模块还包括以下子模块:
读取模块,用于读取当前block中的每一页数据并获取每一页的数据错误的比特数及P/E数;
第一设定模块,用于以当前页的数据错误的比特数为第一检查值,并以当前页P/E数的第一比例为标准值;
第一判断模块,用于当前block中的每一页的第一检查值均不超过标准值时,判断当前block中的数据不需要重写;当前block中的每一页中的至少一页的第一检查值超过标准值时,判断当前block中的数据需要重写。
进一步,若所述NAND闪存类型为TLC时,判断模块还包括以下子模块:
获取模块,用于读取当前block中的配对页中的X page数据并获取该页的数据错误的比特数及P/E数;
第二设定模块,用于以该页的数据错误的比特数为第一检查值,并以该页P/E数的第一比例为标准值;
第二判断模块,用于该页的第一检查值不超过标准值时,判断当前block中的数据不需要重写;该页的第一检查值超过标准值时,判断当前block中的数据需要重写。
进一步,重写模块还包括以下子模块:
传输模块,用于当前存储单元中的数据传输到空白存储单元的缓存寄存器中,再从缓存寄存器中传输到该空白存储单元中。
进一步,重写模块还包括以下子模块:
寄存模块,用于将当前存储单元中的数据读取到寄存器,再从寄存器传输到Host。
具体地,在本发明所提出的上述方法中,所述NAND闪存的架构至少包括以下一种:TLC、MLC、eMLC、SLC及QLC。
参照图9所示的本发明提出的一种NAND闪存数据检查方法的第四实施例示意图,图中示出了根据数据写入顺序进行排序的n个block:block1,block2…blockn,其中,n个block中的每一个包含了n个页,按照本发明所提出的方法及装置,对每NAND闪存的读操数作从0开始进行计数,每完成一次读操作后,读操作数加1,当读操作数每间隔第一次数时,按照写入的先后按编号顺序启动一次内存数据检查,在本实施例中,第一次数取为4,也就是每隔4次读操作,就进行一次检查,即图中所示的,从0开始计算,当读操作为3时,对block1进行检查,当读操作数为7时,对block2进行检查,如此类推,直到完成最后一个有数据的block的检查。对于SLC闪存,需要对一个block中的每个页逐个进行检查,如图所示,若对block1进行检查时,则需要对block1中的页1到页n逐个进行检查,对于TLC闪存,只需检查block中的某一个页即可,以节省检查时间,提高效率。
最后,本发明提出一种计算机可读存储介质,其上存储有计算机指令,所述指令用于执行上述方法。
综上所述,利用本发明所提出的方法,对闪存的block进行编号而不是基于逻辑地址,按照数据写入的先后顺序优先检查最早写入的数据,使得数据的检查更有效。
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作-根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
进一步,该方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
本文描述了本公开的实施例,包括发明人已知用于执行本发明的最佳模式。在阅读了上述描述后,这些所述实施例的变化对本领域的技术人员将变得明显。发明人希望技术人员视情况采用此类变型,并且发明人意图以不同于如本文具体描述的方式来实践本公开的实施例。因此,经适用的法律许可,本公开的范围包括在此所附的权利要求书中叙述的主题的所有修改和等效物。此外,本公开的范围涵盖其所有可能变型中的上述元素的任意组合,除非本文另外指示或以其他方式明显地与上下文矛盾。
尽管本发明的描述已经相当详尽且特别对几个所述实施例进行了描述,但其并非旨在局限于任何这些细节或实施例或任何特殊实施例,而是应当将其视作是通过参考所附权利要求考虑到现有技术为这些权利要求提供广义的可能性解释,从而有效地涵盖本发明的预定范围。此外,上文以发明人可预见的实施例对本发明进行描述,其目的是为了提供有用的描述,而那些目前尚未预见的对本发明的非实质性改动仍可代表本发明的等效改动。
因此,应以说明性意义而不是限制性意义来理解本说明书和附图。然而,将明显的是:在不脱离如权利要求书中阐述的本申请的更宽广精神和范围的情况下,可以对本申请做出各种修改和改变。
其他变型在本申请的精神内。因此,尽管所公开的技术可容许各种修改和替代构造,但在附图中已示出并且在上文中详细描述所示的其某些实施例。然而,应当理解,并不意图将本申请局限于所公开的一种或多种具体形式;相反,其意图涵盖如所附权利要求书中所限定落在本申请的精神和范围内的所有修改、替代构造和等效物。
Claims (9)
1.一种NAND闪存数据检查方法,其特征在于,包括以下步骤:
S100)按照NAND闪存的每个block的数据写入顺序进行编号,并将编号保存在这个block的每个页的spare区中;
S200)对每NAND闪存的每一个block进行检查,检查从最先写入的block开始,每完成一个block的检查操作后,按写入先后顺序启动下一个block的数据检查,检查完一个或者几个block时,可以将检查的block写入顺序编号记录在NAND中,如果掉电,下次启动可以继续从之前记录的编号继续检查,如果检查到最近写入的block,那将检查编号设置为最低,重新开始下一次的检查;
S300)判断当前编号的block中的数据是否需要重写,如需要重写,则执行步骤S400,如不需要重写,则将检查指向下一编号的block并返回步骤S200;
S400)对当前存储单元中的数据复制到NAND闪存中的空白存储单元中,并擦除所述当前存储单元中的数据。
2.根据权利要求1所述的NAND闪存数据检查方法,其特征在于,若所述NAND闪存类型为SLC时,步骤S300还包括以下子步骤:
S311)读取当前block中的每一页数据并获取每一页的数据错误的比特数及P/E数;
S312)以当前页的数据错误的比特数为第一检查值并以当前页P/E数的第一比例为标准值;
S313)当前block中的每一页的第一检查值均不超过标准值时,判断当前block中的数据不需要重写;当前block中的每一页中的至少一页的第一检查值超过标准值时,判断当前block中的数据需要重写。
3.根据权利要求1所述的NAND闪存数据检查方法,其特征在于,若所述NAND闪存类型为TLC时,步骤S300还包括以下子步骤:
S321)读取当前block中的配对页中的X page数据并获取该页的数据错误的比特数及P/E数;
S322)以该页的数据错误的比特数为第一检查值并以该页的P/E数的第一比例为标准值;
S323)该页的第一检查值不超过标准值时,判断当前block中的数据不需要重写;该页的第一检查值超过标准值时,判断当前block中的数据需要重写。
4.根据权利要求1所述的NAND闪存数据检查方法,其特征在于,步骤S400还包括以下子步骤:
当前存储单元中的数据传输到空白存储单元的缓存寄存器中,再从缓存寄存器中传输到该空白存储单元中。
5.根据权利要求1所述的NAND闪存数据检查方法,其特征在于,步骤S400还包括以下子步骤:
将当前存储单元中的数据读取到寄存器,再从寄存器传输到Host。
6.根据权利要求1所述的NAND闪存数据检查方法,其特征在于,所述NAND闪存的架构至少包括以下一种:TLC、MLC、eMLC、SLC及QLC。
7.根据权利要求1所述的NAND闪存数据检查方法,其特征在于,步骤S200包括:
对每NAND闪存的读操数作从0开始进行计数,每完成一次读操作后,读操作数加1,当读操作数每间隔第一次数时,对每NAND闪存的每一个block进行检查,检查从最先写入的block开始,每完成一个block的检查操作后,根据所述第一次数的间隔按写入先后顺序启动下一个block的数据检查,检查完一个或者几个block时,可以将检查的block写入顺序编号记录在NAND中,如果掉电,下次启动可以继续从之前记录的编号继续检查,如果检查到最近写入的block,那将检查编号设置为最低,重新开始下一次的检查。
8.一种NAND闪存数据检查装置,其特征在于,包括以下模块:
编号模块,用于按照NAND闪存的每个block的数据写入顺序进行编号,并将编号保存在这个block的每个页的spare区中;
检查模块,对NAND闪存的每一个block进行检查,检查从先写入数据的block开始,每完成一个block的检查操作后,检查下一个写入数据的block;
判断模块,用于判断当前编号的block中的数据是否需要重写,如需要重写,则启动重写模块,如不需要重写,则将检查指向下一编号的block,并启动计数模块;
重写模块,用于对当前存储单元中的数据复制到NAND闪存中的空白存储单元中,并擦除所述当前存储单元中的数据。
9.一种计算机可读存储介质,其上存储有计算机指令,所述指令用于执行上述权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910167728.6A CN109992443B (zh) | 2019-03-06 | 2019-03-06 | 一种nand闪存数据检查方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910167728.6A CN109992443B (zh) | 2019-03-06 | 2019-03-06 | 一种nand闪存数据检查方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109992443A CN109992443A (zh) | 2019-07-09 |
CN109992443B true CN109992443B (zh) | 2023-03-10 |
Family
ID=67129303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910167728.6A Active CN109992443B (zh) | 2019-03-06 | 2019-03-06 | 一种nand闪存数据检查方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109992443B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110781043B (zh) * | 2019-10-11 | 2024-04-16 | 深圳佰维存储科技股份有限公司 | 存储产品的品质检测方法、装置、存储介质及设备 |
CN111198661B (zh) * | 2019-12-30 | 2024-02-27 | 深圳佰维存储科技股份有限公司 | 存储设备写入操作过程的还原方法、装置和设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567256A (zh) * | 2003-06-20 | 2005-01-19 | 深圳市朗科科技有限公司 | 闪存介质中数据保护方法 |
JP2008305507A (ja) * | 2007-06-08 | 2008-12-18 | Hagiwara Sys-Com:Kk | フラッシュメモリの状態検出方法 |
JP2012243141A (ja) * | 2011-05-20 | 2012-12-10 | Nec Casio Mobile Communications Ltd | 情報処理装置、情報処理装置の制御方法、および、プログラム |
CN104091617A (zh) * | 2014-06-17 | 2014-10-08 | 深圳市江波龙电子有限公司 | 一种闪存存储设备检测的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI621129B (zh) * | 2016-10-25 | 2018-04-11 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料寫入方法 |
-
2019
- 2019-03-06 CN CN201910167728.6A patent/CN109992443B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567256A (zh) * | 2003-06-20 | 2005-01-19 | 深圳市朗科科技有限公司 | 闪存介质中数据保护方法 |
JP2008305507A (ja) * | 2007-06-08 | 2008-12-18 | Hagiwara Sys-Com:Kk | フラッシュメモリの状態検出方法 |
JP2012243141A (ja) * | 2011-05-20 | 2012-12-10 | Nec Casio Mobile Communications Ltd | 情報処理装置、情報処理装置の制御方法、および、プログラム |
CN104091617A (zh) * | 2014-06-17 | 2014-10-08 | 深圳市江波龙电子有限公司 | 一种闪存存储设备检测的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109992443A (zh) | 2019-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8553457B2 (en) | Non-volatile memory with dynamic multi-mode operation | |
US7580315B2 (en) | Card controlling semiconductor memory including memory cell having charge accumulation layer and control gate | |
KR101122485B1 (ko) | 메모리 시스템 | |
CN103577342B (zh) | 管理闪存中所储存的数据的方法及相关记忆装置与控制器 | |
JP3812933B2 (ja) | ファイルシステムおよびその制御方法 | |
US20160260483A1 (en) | Semiconductor memory device and memory system | |
US9384839B2 (en) | Write sequence providing write abort protection | |
US20150134885A1 (en) | Identification and Operation of Sub-Prime Blocks in Nonvolatile Memory | |
CN109584915B (zh) | 将数据写入至闪存的方法及相关的记忆装置与闪存 | |
US9342401B2 (en) | Selective in-situ retouching of data in nonvolatile memory | |
TWI549134B (zh) | Nand型快閃記憶體及其程式化方法 | |
CN109992443B (zh) | 一种nand闪存数据检查方法 | |
US9053011B2 (en) | Selective protection of lower page data during upper page write | |
US20210034541A1 (en) | Memory system, memory control device, and memory control method | |
US9442842B2 (en) | Memory system performance configuration | |
US9466384B1 (en) | Memory device and associated erase method | |
US9042186B2 (en) | Solid state drive and data erasing method thereof | |
US9047974B2 (en) | Erased state reading | |
JP4433792B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 | |
CN105761754B (zh) | 存储单元编程方法、存储器控制电路单元与存储装置 | |
CN110462585B (zh) | 用于更新程序的方法和设备 | |
US20100332736A1 (en) | Method of operating nonvolatile memory device | |
JP4419525B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 | |
JP4332108B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
KR20090048754A (ko) | 플래시 메모리 소자 및 이의 프로그램 및 소거 방법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |