CN102511040A - 一种Nand Flash页的检测方法和装置 - Google Patents
一种Nand Flash页的检测方法和装置 Download PDFInfo
- Publication number
- CN102511040A CN102511040A CN2011800032312A CN201180003231A CN102511040A CN 102511040 A CN102511040 A CN 102511040A CN 2011800032312 A CN2011800032312 A CN 2011800032312A CN 201180003231 A CN201180003231 A CN 201180003231A CN 102511040 A CN102511040 A CN 102511040A
- Authority
- CN
- China
- Prior art keywords
- programming
- page
- leaf
- programming state
- state sign
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
Abstract
本发明涉及数据存储技术,具体公开了一种Nand Flash页的检测方法,包括:对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页;读取所述第一编程状态标志,确定所述第一编程状态标志指示非空闲状态;判断所述第一编程状态标志是否指示编程开始状态:如果所述第一编程状态标志指示非编程开始状态,确认所述页受异常中止的影响。本发明实施例还公开了一种Nand Flash页的检测装置。
Description
技术领域
本发明涉及数据存储技术,尤其涉及一种Nand Flash页的检测方法和装置。
背景技术
随着信息技术和半导体技术的发展,电信设备对数据存储的容量、性能要求越来越高。Nand Flash因其具有容量大、擦写速度快、体积小、成本低等特点,逐渐被广泛应用于电信设备的数据存储。
根据Nand Flash器件的特点,编程过程中,数据从页(Page)的数据(Data)区的前端开始顺序写入,直到页的备用(Spare)区的末端。如果在编程过程中发生异常中止,如掉电、复位等,则当前页的数据可能无法写完或者当前比特的状态无法保证,极有可能对当前编程数据造成破坏。若当前编程数据为文件系统的关键数据,如FAT(File Allocation Table,文件分配表)、重要目录等,则会对文件系统造成非常严重的影响。
现有技术中,若编程过程中发生异常中止,系统重新上电后,在应用层采用ECC(Error Correction Code,纠错码)对Nand Flash页进行校验,检测出受影响的页,以便对受影响的页所在的文件或者目录采取适当的恢复措施,降低对文件系统的影响。但如果Nand Flash页的错误比特数超过ECC检错能力,应用层无法检测出受影响的页以及数据损坏的文件或者目录。因此,受检错能力的限制,应用层的校验不能准确地检测出受异常中止影响的Nand Flash页,无法有效地消除异常中止对文件系统造成的影响。
发明内容
本发明的实施例提供了一种Nand Flash页的检测方法和装置,解决现有技术不能准确地检测出受异常中止影响的Nand Flash页的问题。
本发明的实施例采用如下技术方案:
本发明一方面提供了一种Nand Flash页的检测方法,包括:
对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页;
读取所述第一编程状态标志,确定所述第一编程状态标志指示非空闲状态;
判断所述第一编程状态标志是否指示编程开始状态:如果所述第一编程状态标志指示非编程开始状态,确认所述页受异常中止的影响。
本发明另一方面提供了一种Nand Flash页的检测方法,包括:
对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前和之后将第三编程状态标志写入所述页;
读取所述第三编程状态标志,确定所述第三编程状态标志指示非空闲状态;
判断所述第三编程状态标志是否指示编程完成状态:如果所述第三编程状态标志指示非编程完成状态,确认所述页受异常中止的影响。
本发明一方面提供了一种Nand Flash页的检测装置,包括:
写入模块,用于对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页;
读取模块,用于读取所述第一编程状态标志;
确定模块,用于确定所述第一编程状态标志指示非空闲状态;
判断模块,用于判断所述第一编程状态标志是否指示编程开始状态:如果所述第一编程状态标志指示非编程开始状态,确认所述页受异常中止的影响。
本发明另一方面提供了一种Nand Flash页的检测装置,包括:
写入模块,用于对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前和之后将第三编程状态标志写入所述页;
读取模块,用于读取所述第三编程状态标志;
确定模块,用于确定所述第三编程状态标志指示非空闲状态;
判断模块,用于判断所述第三编程状态标志是否指示编程完成状态:如果所述第三编程状态标志指示非编程完成状态,确认所述页受异常中止的影响。
本发明实施例提供的一种Nand Flash页的检测方法和装置,能够准确地检测出受异常中止影响的页,以有效地消除异常中止对文件系统造成的影响。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明的实施例提供的Nand Flash页的结构示意图;
图2为本发明的实施例提供的Nand Flash页的编程状态示意图;
图3为本发明的一实施例提供的一种Nand Flash页的检测方法的流程图;
图4为本发明的另一实施例提供的一种Nand Flash页的检测方法的流程图;
图5a为本发明的一实施例提供的编程状态标志的位置示意图;
图5b为本发明的一实施例提供的空闲状态页的编程示意图;
图6a为本发明的另一实施例提供的编程状态标志的位置示意图;
图6b为本发明的另一实施例提供的空闲状态页的编程示意图;
图7为本发明的再一实施例提供的一种Nand Flash页的检测方法的流程图;
图8a为本发明的再一实施例提供的编程状态标志的位置示意图;
图8b为本发明的再一实施例提供的空闲状态页的编程示意图;
图9a为本发明的一实施例提供的一种Nand Flash页的检测装置的结构框图;
图9b为本发明的一实施例提供的另一种Nand Flash页的检测装置的结构框图;
图10a为本发明的另一实施例提供的一种Nand Flash页的检测装置的结构框图;
图10b为本发明的另一实施例提供的另一种Nand Flash页的检测装置的结构框图;
图11a为本发明的再一实施例提供的一种Nand Flash页的检测装置的结构框图;
图11b为本发明的再一实施例提供的另一种Nand Flash页的检测装置的结构框图。
具体实施方式
本发明实施例提供了一种Nand Flash页的检测方法和装置。为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
Nand Flash由多个块(Block)组成,一个块由多个页(Page)组成。Nand Flash最小擦除单位是块,最小编程单位是页,写一个文件(包括新写入或者更新)对应一个或者多个页的编程操作。如图1所示,Nand Flash的每个页内包含一个数据区(DataArea)和一个扩展的备用区(SpareArea)。
下述实施例中,将一个页的编程状态划分为空闲、编程开始和编程完成三种状态,如图2所示。对于一个已擦除的块(Block),该块的所有页的编程状态为空闲,每个页的所有比特值均为1;编程过程中,即数据开始写入至数据完成写入之前,页的编程状态为编程开始;编程结束,即数据写入完成之后,页的编程状态为编程完成。
实施例一,本发明实施例提供了一种Nand Flash页的检测方法,其流程如图3所示,该方法具体包括如下步骤:
步骤S101,对擦除后编程状态为空闲的页编程,在写入该页的数据区数据和备用区数据之前将第一编程状态标志写入该页。
对于擦除后的块,该块包含的所有页的编程状态为空闲,每个页的所有比特值(包括每个页的第一编程状态标志的所有比特值)均为1。
本实施例中,第一编程状态标志可以位于页的数据区的前端。
对擦除后编程状态为空闲的页进行编程,将第一编程状态标志设置为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入指示编程开始状态的第一编程状态标志、正常的数据区数据、正常的备用区数据。
可以将第一编程状态标志随数据一起,填充到页缓存(Page Buffer)中,组成待写入该页的内容,再从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中指示编程开始状态的第一编程状态标志、正常的数据区数据、正常的备用区数据顺序写入该Nand Flash页中。
本实施例中,第一编程状态标志也可以位于页的备用区的前端。
对擦除后编程状态为空闲的页进行编程,将第一编程状态标志设置为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的第一编程状态标志、比特值均为1的备用区数据,再顺序写入正常的数据区数据、指示编程开始状态的第一编程状态标志、正常的备用区数据。
可以先将第一编程状态标志填充到页缓存中,页缓存的其它部分比特值置1,组成待写入该页的内容,从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中比特值均为1的数据区数据、指示编程开始状态的第一编程状态标志、比特值均为1的备用区数据顺序写入该Nand Flash页中;再将第一编程状态标志随数据一起,填充到页缓存中,组成待写入该页的内容,从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中正常的数据区数据、指示编程开始状态的第一编程状态标志、正常的备用区数据顺序写入该NandFlash页中。
步骤S102,读取第一编程状态标志,确定第一编程状态标志指示非空闲状态。
本实施例中,如果第一编程状态标志位于页的数据区的前端,第一编程状态标志可以直接从页的内容中读取;如果第一编程状态标志位于页的备用区的前端,第一编程状态标志可以直接从页的内容中读取,也可以读取备份区的内容,继而从备份区的内容中提取第一编程状态标志。
本实施例中,第一编程状态标志取值为所有比特值均为1时,指示空闲状态。即擦除后编程状态为空闲的页中的第一编程状态标志指示空闲状态。
读取页的第一编程状态标志,第一编程状态标志的取值非所有比特值均为1,则确定第一编程状态标志指示非空闲状态;第一编程状态标志取值为所有比特值均为1,则确定第一编程状态标志指示空闲状态,结束对该页的检测。
步骤S103,判断第一编程状态标志是否指示编程开始状态:如果第一编程状态标志指示非编程开始状态,则确认该页受异常中止的影响。
Nand Flash页编程过程中,如果在写入第一编程状态标志时发生异常中止,可以通过实施例一提供的方法检测出受异常中止影响的Nand Flash页。
实施例二,本发明实施例提供了一种Nand Flash页的检测方法,其流程如图4所示,该方法具体包括如下步骤:
本实施例中,通过第一编程状态标志和第二编程状态标志,共同标识页的空闲、编程开始和编程完成三种状态。
步骤S201,对擦除后编程状态为空闲的页编程,在写入该页的数据区数据和备用区数据之前将第一编程状态标志写入该页,在写入该页的数据区数据和备用区数据之后将第二编程状态标志写入该页。
对于擦除后的块,该块包含的所有页的编程状态为空闲,每个页的所有比特值(包括每个页的第一编程状态标志的所有比特值)均为1。
本实施例中,第一编程状态标志的位置和第二编程状态标志的位置,可以是:第一编程状态标志位于数据区的前端,第二编程状态标志位于备用区的末端,如图5a所示。
对擦除后编程状态为空闲的页进行编程,如图5b所示,将第一编程状态标志设置为指示编程开始状态,将第二编程状态标志设置为指示编程完成状态。从该页的数据区的前端开始直到该页的备用区的末端,顺序写入指示编程开始状态的第一编程状态标志、正常的数据区数据、正常的备用区数据、指示编程完成状态的第二编程状态标志。
可以将第一编程状态标志和第二编程状态标志随数据一起,填充到页缓存中,组成待写入该页的内容,再从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中指示编程开始状态的第一编程状态标志、正常数据区数据、正常备用区数据、指示编程完成状态的第二编程状态标志顺序写入该Nand Flash页中。
本实施例中,第一编程状态标志的位置和第二编程状态标志的位置,也可以是:第一编程状态标志位于页的备用区的前端,第二编程状态标志位于页的备用区的末端,如图6a所示。
对擦除后编程状态为空闲的页进行编程,如图6b所示,将第一编程状态标志设置为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的第一编程状态标志、比特值均为1的备用区数据、比特值均为1的第二编程状态标志;将第二编程状态标志设置为指示编程完成状态,再顺序写入正常的数据区数据、指示编程开始状态的第一编程状态标志、正常的备用区数据、指示编程完成状态的第二编程状态标志。
可以将第一编程状态标志填充到页缓存中,页缓存的其它部分比特值置1,组成待写入该页的内容,再从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中比特值均为1的数据区数据、指示编程开始状态的第一编程状态标志、比特值均为1的备用区数据、比特值均为1的第二编程状态标志顺序写人该Nand Flash页中;再将第一编程状态标志和第二编程状态标志随数据一起,填充到页缓存中,组成待写入该页的内容,从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中正常的数据区数据、指示编程开始状态的第一编程状态标志、正常的备用区数据、指示编程完成状态的第二编程状态标志顺序写人该Nand Flash页中。
步骤S202,读取第一编程状态标志,确定第一编程状态标志指示非空闲状态。
本实施例中步骤S202与实施例一中步骤S102的实施方法相类似,此处不再赘述。
步骤S203,判断所述第一编程状态标志是否指示编程开始状态:
如果第一编程状态标志指示非编程开始状态,则确认该页受异常中止的影响;
如果第一编程状态标志指示编程开始状态,则读取该页的第二编程状态标志,判断第二编程状态标志是否指示编程完成状态:如果第二编程状态标志指示非编程完成状态,则确认该页受异常中止的影响;如果第二编程状态标志指示编程完成状态,则确认该页未受异常中止的影响。
本实施例中,第二编程状态指示的取值为所有比特值均为1时,指示空闲状态。即擦除后编程状态为空闲的页中的第二编程状态标志指示空闲状态。
第二编程状态标志位于页的备用区的末端,可以直接从页的内容中读取,也可以读取备份区的内容,继而从备份区的内容中提取第二编程状态标志。
Nand Flash页编程过程中,在写入页的内容(包括写入数据区数据、写入备用区数据、写入第一编程状态标志、或者写入第二编程状态标志)时发生异常中止,实施例二提供的方法均可以检测出受异常中止影响的Nand Flash页。
实施例三,本发明实施例提供了一种Nand Flash页的检测方法,其流程如图7所示,该方法具体包括如下步骤:
本实施例中,通过第三编程状态标志,标识页的空闲、编程开始和编程完成三种状态。
步骤S301,对擦除后编程状态为空闲的页编程,在写入该页的数据区数据和备用区数据之前和之后将第三编程状态标志写入该页。
对于擦除后的块,该块包含的所有页的编程状态为空闲,每个页的所有比特值(包括每个页的第一编程状态标志的所有比特值)均为1。
本实施例中,第三编程状态标志可以位于页的备用区的末端,如图8a所示。
对擦除后编程状态为空闲的页进行编程,如图8b所示,将第三编程状态标志设置为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入比特值均为1的数据区数据、比特值均为1的备用区数据、指示编程开始状态的第三编程状态标志;将第三编程状态标志设置为指示编程完成状态,再顺序写入正常的数据区数据、正常的备用区数据、指示编程完成状态的第三编程状态标志。
可以将第三编程状态标志填充到页缓存中,页缓存的其它部分比特值置1,组成待写入该页的内容,再从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中比特值均为1的数据区数据、比特值均为1的备用区数据、指示编程开始状态的第三编程状态标志顺序写人该Nand Flash页中;再将第三编程状态标志随数据一起,填充到页缓存中,组成完整的待写入该页的内容,从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中正常的数据区数据、正常的备用区数据、指示编程完成状态的第三编程状态标志顺序写人该Nand Flash页中。
步骤S302,读取第三编程状态标志,确定第三编程状态标志指示非空闲状态。
本实施例中,第三编程状态标志位于页的备用区的末端,可以直接从页的内容中读取,也可以读取备份区的内容,继而从备份区的内容中提取第三编程状态标志。
本实施例中,第三编程状态标志取值为所有比特值均为1时,指示空闲状态。即擦除后编程状态为空闲的页的第三编程状态标志指示空闲状态。
读取页的第三编程状态标志,第三编程状态标志的取值非所有比特值均为1,则确定第三编程状态标志指示非空闲状态;第三编程状态标志取值为所有比特值均为1,则确定第一编程状态标志指示空闲状态,结束对该页的检测。
步骤S303,判断第三编程状态标志是否指示编程完成状态:
如果第三编程状态标志指示非编程完成状态,则确认该页受异常中止的影响;
如果第三编程状态标志指示编程完成状态,则确认该页未受异常中止的影响。
Nand Flash页编程过程中,在写入页的内容(包括写入数据、写入第一编程状态标志、或者写入第二编程状态标志)时发生异常中止,实施例三提供的方法均可以检测出受异常中止影响的Nand Flash页。
上述实施例一、二、三中,进一步地,可以从Nand Flash的第一个块的第一个页开始,遍历Nand Flash的所有块的所有页,检测出受异常中止影响的NandFlash页。继而可以查找到这些页所在的文件或者目录,记录这些数据损坏的文件或者目录的信息,并且隔离这些文件或者目录,对数据损坏的文件或者目录采取适当的恢复措施,以有效地消除异常中止对文件系统造成的影响。
上述实施例一、二、三提供的方法中,第一编程状态标志、第二编程状态标志、第三编程状态标志可以指示:空闲状态、编程开始状态、编程完成状态。其中,编程状态标志指示空闲状态时,取值为所有比特值均为1。
编程状态标志指示编程开始状态、编程完成状态时,不同情况下可选取的值有所不同:
实施例一中,第一编程状态标志位于页的数据区的前端,第一编程状态标志可以取除所有比特值均为1以外的任意两个数值或者两个区段数值,指示编程开始状态和编程完成状态。
实施例二中,第一编程状态标志位于数据区的前端,第二编程状态标志位于备用区的末端,第一编程状态标志和第二编程状态标志均可以取除所有比特值均为1以外的任意两个数值或者两个区段数值,指示编程开始状态和编程完成状态。
下述三种情况下实施例提供的方法对页进行了两次重复编程,编程状态标志指示编程开始状态和编程完成状态时的取值有一定限制:
实施例一中,第一编程状态标志位于页的备用区的前端;
实施例二中,第一编程状态标志位于页的备用区的前端,第二编程状态标志位于页的备用区的末端;
实施例三中,第三编程状态标志位于页的备用区的末端。
利用Flash的编程和擦除操作具有的特点,即擦除的过程实质上是将所有存储单元的值变为“1”,而编程是将某些存储单元的值由“1”变为“0”。将原编程状态标志的取值中某些比特值由“1”变为“0”,作为编程时刷新的编程状态标志的取值。由此实现在不擦除页所在的块的情况下,再次对该页进行编程。
例如:实施例一中,第一编程状态标志位于页的备用区的前端。
第一编程状态标志:编程前设置为指示空闲状态,取值为所有比特值均为1;第一次编程时刷新为指示编程开始状态,则指示编程开始状态时所取的值为指示空闲状态时所取的值中某些比特由“1”变为“0”。
例如:实施例二中,第一编程状态标志位于页的备用区的前端,第二编程状态标志位于页的备用区的末端。
第一编程状态标志:编程前设置为指示空闲状态,取值为所有比特值均为1;第一次编程时刷新为指示编程开始状态,则指示编程开始状态时所取的值为指示空闲状态时所取的值中某些比特由“1”变为“0”。
第二编程状态标志:编程前设置为指示空闲状态,取值为所有比特值均为1;第二次编程时刷新为指示编程完成状态,则指示编程完成状态时所取的值为指示空闲状态时所取的值中某些比特由“1”变为“0”。
例如:实施例三,第三编程状态标志位于页的备用区的末端。
第三编程状态标志:编程前设置为指示空闲状态,取值为所有比特值均为1;第一次编程时刷新为指示编程开始状态,则指示编程开始状态时所取的值为指示空闲状态时所取的值中某些比特由“1”变为“0”;第二次编程时刷新为指示编程完成状态,则指示编程完成状态时所取的值为指示编程开始状态时所取的值中某些比特由“1”变为“0”。则第三编程状态标志指示空闲状态、编程开始状态和编程完成状态时的取值可以如下表所示:
编程状态指示 | 十六进制值 | 二进制值 |
空闲 | 0xffff | 11111111 11111111 |
编程开始 | 0xafaf | 10101111 10101111 |
编程完成 | 0xa5a5 | 10100101 10100101 |
Nand Flash页编程过程中如果发生异常中止,Nand Flash页受异常中止的影响至少包括下述的一种情况:导致Nand Flash页的数据无法写完、比特状态无法保证。本发明实施例提供的一种Nand Flash页的检测方法,编程状态的写入严格设计在数据写入之前和数据写入完成之后,能够准确地检测出受到上述异常中止影响的Nand Flash页,查找到这些页所在的文件或者目录,记录数据损坏的文件或者目录信息,并且隔离这些文件或者目录,以便系统和上层应用进行故障定位和故障恢复,消除异常中止对文件系统造成的影响。
实施例四,本发明实施例提供了一种Nand Flash页的检测装置,如图9a所示,包括写入模块910、读取模块920、确定模块930和判断模块940:
写入模块910,用于对擦除后编程状态为空闲的页编程,在写入该页的数据区数据和备用区数据之前将第一编程状态标志写入该页。
读取模块920,用于读取第一编程状态标志。
如果第一编程状态标志位于页的数据区的前端,第一编程状态标志可以直接从页的内容中读取;如果第一编程状态标志位于页的备用区的前端,第一编程状态标志可以直接从页的内容中读取,也可以读取备份区的内容,继而从备份区的内容中提取第一编程状态标志。
确定模块930,用于确定第一编程状态标志指示非空闲状态。
本实施例中,第一编程状态标志取值为所有比特值均为1时,指示空闲状态。即擦除后编程状态为空闲的页中的第一编程状态标志指示空闲状态。
第一编程状态标志的取值非所有比特值均为1,则确定第一编程状态标志指示非空闲状态;第一编程状态标志取值为所有比特值均为1,则确定第一编程状态标志指示空闲状态,结束对该页的检测。
判断模块940,用于判断第一编程状态标志是否指示编程开始状态:如果第一编程状态标志指示非编程开始状态,确认该页受异常中止的影响。
可选地,第一编程状态标志位于该页的数据区的前端,如图9b所示,写入模块910可以包括:
第一写入子模块911,用于对擦除后编程状态为空闲的该页进行编程,将第一编程状态标志设置为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入指示编程开始状态的第一编程状态标志、正常的数据区数据、正常的备用区数据。
可选地,第一编程状态标志位于该页的备用区的前端,如图9b所示,写入模块910可以包括:
第二写入子模块912,用于对擦除后编程状态为空闲的该页进行编程,将第一编程状态标志设置为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的第一编程状态标志、比特值均为1的备用区数据,再顺序写入正常的数据区数据、指示编程开始状态的第一编程状态标志、正常的备用区数据。
实施例五,本发明实施例提供了一种Nand Flash页的检测装置,如图10a所示,包括写入模块1010、读取模块1020、确定模块1030和判断模块1040:
写入模块1010,用于对擦除后编程状态为空闲的页编程,在写入该页的数据区数据和备用区数据之前将第一编程状态标志写入该页,在写入该页的数据区数据和备用区数据之后将第二编程状态标志写入该页。
读取模块1020,用于读取第一编程状态标志;还用于读取第二编程状态标志。
如果第一编程状态标志位于页的数据区的前端,第一编程状态标志可以直接从页的内容中读取;如果第一编程状态标志位于页的备用区的前端,第一编程状态标志可以直接从页的内容中读取,也可以读取备份区的内容,继而从备份区的内容中提取第一编程状态标志。
第二编程状态标志位于页的备用区的末端,可以直接从页的内容中读取,也可以读取备份区的内容,继而从备份区的内容中提取第二编程状态标志。
确定模块1030,用于确定第一编程状态标志指示非空闲状态。
本实施例中,第一编程状态标志取值为所有比特值均为1时,指示空闲状态。即擦除后编程状态为空闲的页中的第一编程状态标志指示空闲状态。
第一编程状态标志的取值非所有比特值均为1,则确定第一编程状态标志指示非空闲状态;第一编程状态标志取值为所有比特值均为1,则确定第一编程状态标志指示空闲状态,结束对该页的检测。
判断模块1040,用于判断所述第一编程状态标志是否指示编程开始状态:如果第一编程状态标志指示非编程开始状态,则确认该页受异常中止的影响;如果第一编程状态标志指示编程开始状态,则判断第二编程状态标志是否指示编程完成状态:如果第二编程状态标志指示非编程完成状态,则确认该页受异常中止的影响;如果第二编程状态标志指示编程完成状态,则确认该页未受异常中止的影响。
本实施例中,第二编程状态指示的取值为所有比特值均为1时,指示空闲状态。即擦除后编程状态为空闲的页中的第二编程状态标志指示空闲状态。
可选地,第一编程状态标志位于该页的数据区的前端,第二编程状态标志位于该页的备用区的末端,如图10b所示,写入模块1010可以包括:
第三写入子模块1011,用于对擦除后编程状态为空闲的该页进行编程,将第一编程状态标志设置为指示编程开始状态,第二编程状态标志设置为指示编程完成状态。从该页的数据区的前端开始直到该页的备用区的末端,顺序写入指示编程开始状态的第一编程状态标志、正常的数据区数据、正常的备用区数据、指示编程完成状态的第二编程状态标志。
可选地,第一编程状态标志位于该页的备用区的前端,第二编程状态标志位于该页的备用区的末端,如图10b所示,写入模块1010可以包括:
第四写入子模块1012,用于对擦除后编程状态为空闲的该页进行编程,将第一编程状态标志设置为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的第一编程状态标志、比特值均为1的备用区数据、比特值均为1的第二编程状态标志;将第二编程状态标志设置为指示编程完成状态,再顺序写入正常的数据区数据、指示编程开始状态的第一编程状态标志、正常的备用区数据、指示编程完成状态的第二编程状态标志。
实施例六,本发明实施例提供了一种Nand Flash页的检测装置,如图11a所示,包括写入模块1110、读取模块1120、确定模块1130和判断模块1140:
写入模块1110,用于对擦除后编程状态为空闲的页编程,在写入该页的数据区数据和备用区数据之前和之后将第三编程状态标志写入该页。
读取模块1120,用于读取第三编程状态标志。
第三编程状态标志位于页的备用区的末端,可以直接从页的内容中读取,也可以读取备份区的内容,继而从备份区的内容中提取第三编程状态标志。
确定模块1130,用于确定第三编程状态标志指示非空闲状态。
本实施例中,第三编程状态标志取值为所有比特值均为1时,指示空闲状态。即擦除后编程状态为空闲的页的第三编程状态标志指示空闲状态。
第三编程状态标志的取值非所有比特值均为1,则确定第三编程状态标志指示非空闲状态;第三编程状态标志取值为所有比特值均为1,则确定第一编程状态标志指示空闲状态,结束对该页的检测。
判断模块1140,用于判断第三编程状态标志是否指示编程完成状态:如果第三编程状态标志指示非编程完成状态,确认该页受异常中止的影响;如果所述第三编程状态标志指示编程完成状态,则确认该页未受异常中止的影响。
可选地,第三编程状态标志位于页的备用区的末端,如图11b所示,写入模块1110可以包括:
第五写入子模块1111,用于对擦除后编程状态为空闲的该页进行编程,将第三编程状态标志设置为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入比特值均为1的数据区数据、比特值均为1的备用区数据、指示编程开始状态的第三编程状态标志;将第三编程状态标志设置为指示编程完成状态,再顺序写入正常的数据区数据、正常的备用区数据、指示编程完成状态的第三编程状态标志。
上述实施例四至六装置内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
采用本发明实施例提供的技术方案,能够准确地检测出受异常中止影响的Nand Flash页,以有效地消除异常中止对文件系统造成的影响。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种Nand Flash页的检测方法,其特征在于,包括:
对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页;
读取所述第一编程状态标志,确定所述第一编程状态标志指示非空闲状态;
判断所述第一编程状态标志是否指示编程开始状态:如果所述第一编程状态标志指示非编程开始状态,确认所述页受异常中止的影响。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在写入所述页的数据区数据和备用区数据之后将第二编程状态标志写入所述页;
如果所述第一编程状态标志指示编程开始状态,读取所述第二编程状态标志,判断所述第二编程状态标志是否指示编程完成状态:如果所述第二编程状态标志指示非编程完成状态,确认所述页受异常中止的影响。
3.根据权利要求1所述的方法,其特征在于,所述第一编程状态标志位于所述页的数据区的前端;
所述在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页,具体包括:
从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入指示编程开始状态的所述第一编程状态标志、正常的数据区数据、正常的备用区数据。
4.根据权利要求1所述的方法,其特征在于,所述第一编程状态标志位于所述页的备用区的前端;
所述在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页,具体包括:
从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的所述第一编程状态标志、比特值均为1的备用区数据;再顺序写入正常的数据区数据、指示编程开始状态的所述第一编程状态标志、正常的备用区数据。
5.根据权利要求2所述的方法,其特征在于,所述第一编程状态标志位于所述页的数据区的前端,所述第二编程状态标志位于所述页的备用区的末端;
所述在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页,所述在写入所述页的数据区数据和备用区数据之后将第二编程状态标志写入所述页,具体包括:
从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入指示编程开始状态的所述第一编程状态标志、正常的数据区数据、正常的备用区数据、指示编程完成状态的所述第二编程状态标志。
6.根据权利要求2所述的方法,其特征在于,所述第一编程状态标志位于所述页的备用区的前端,所述第二编程状态标志位于所述页的备用区的末端;
所述在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页,所述在写入所述页的数据区数据和备用区数据之后将第二编程状态标志写入所述页,具体包括:
从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的所述第一编程状态标志、比特值均为1的备用区数据、比特值均为1的所述第二编程状态标志;再顺序写入正常的数据区数据、指示编程开始状态的所述第一编程状态标志、正常的备用区数据、指示编程完成状态的所述第二编程状态标志。
7.一种Nand Flash页的检测方法,其特征在于,包括:
对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前和之后将第三编程状态标志写入所述页;
读取所述第三编程状态标志,确定所述第三编程状态标志指示非空闲状态;
判断所述第三编程状态标志是否指示编程完成状态:如果所述第三编程状态标志指示非编程完成状态,确认所述页受异常中止的影响。
8.根据权利要求7所述的方法,其特征在于,所述第三编程状态标志位于所述页的备用区的末端;
所述在写入所述页的数据区数据和备用区数据之前和之后将第三编程状态标志写入所述页,具体包括:
从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入比特值均为1的数据区数据、比特值均为1的备用区数据、指示编程开始状态的所述第三编程状态标志;再顺序写入正常的数据区数据、正常的备用区数据、指示编程完成状态的所述第三编程状态标志。
9.一种Nand Flash页的检测装置,其特征在于,包括:
写入模块,用于对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页;
读取模块,用于读取所述第一编程状态标志;
确定模块,用于确定所述第一编程状态标志指示非空闲状态;
判断模块,用于判断所述第一编程状态标志是否指示编程开始状态:如果所述第一编程状态标志指示非编程开始状态,确认所述页受异常中止的影响。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
所述写入模块还用于在写入所述页的数据区数据和备用区数据之后将第二编程状态标志写入所述页;
所述读取模块还用于读取所述第二编程状态标志;
所述判断模块还用于如果所述第一编程状态标志指示编程开始状态,判断所述第二编程状态标志是否指示编程完成状态:如果所述第二编程状态标志指示非编程完成状态,确认所述页受异常中止的影响。
11.根据权利要求9所述的装置,其特征在于,所述第一编程状态标志位于所述页的数据区的前端;
所述写入模块包括:
第一写入子模块,用于对擦除后编程状态为空闲的所述页编程,从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入指示编程开始状态的所述第一编程状态标志、正常的数据区数据、正常的备用区数据。
12.根据权利要求9所述的装置,其特征在于,所述第一编程状态标志位于所述页的备用区的前端;
所述写入模块包括:
第二写入子模块,用于对擦除后编程状态为空闲的所述页编程,从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的所述第一编程状态标志、比特值均为1的备用区数据;再顺序写入正常的数据区数据、指示编程开始状态的所述第一编程状态标志、正常的备用区数据。
13.根据权利要求10所述的装置,其特征在于,所述第一编程状态标志位于所述页的数据区的前端,所述第二编程状态标志位于所述页的备用区的末端;
所述写入模块包括:
第三写入子模块,用于对擦除后编程状态为空闲的所述页编程,从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入指示编程开始状态的所述第一编程状态标志、正常的数据区数据、正常的备用区数据、指示编程完成状态的所述第二编程状态标志。
14.根据权利要求10所述的装置,其特征在于,所述第一编程状态标志位于所述页的备用区的前端,所述第二编程状态标志位于所述页的备用区的末端;
所述写入模块包括:
第四写入子模块,用于对擦除后编程状态为空闲的所述页编程,从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的所述第一编程状态标志、比特值均为1的备用区数据、比特值均为1的所述第二编程状态标志;再顺序写入正常的数据区数据、指示编程开始状态的所述第一编程状态标志、正常的备用区数据、指示编程完成状态的所述第二编程状态标志。
15.一种Nand Flash页的检测装置,其特征在于,包括:
写入模块,用于对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前和之后将第三编程状态标志写入所述页;
读取模块,用于读取所述第三编程状态标志;
确定模块,用于确定所述第三编程状态标志指示非空闲状态;
判断模块,用于判断所述第三编程状态标志是否指示编程完成状态:如果所述第三编程状态标志指示非编程完成状态,确认所述页受异常中止的影响。
16.根据权利要求15所述的装置,其特征在于,所述第三编程状态标志位于所述页的备用区的末端;
所述写入模块包括:
第五写入子模块,用于对擦除后编程状态为空闲的所述页编程,从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入比特值均为1的数据区数据、比特值均为1的备用区数据、指示编程开始状态的所述第三编程状态标志;再顺序写入正常的数据区数据、正常的备用区数据、指示编程完成状态的所述第三编程状态标志。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2011/083372 WO2013078676A1 (zh) | 2011-12-02 | 2011-12-02 | 一种Nand Flash页的检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102511040A true CN102511040A (zh) | 2012-06-20 |
CN102511040B CN102511040B (zh) | 2014-03-12 |
Family
ID=46222771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180003231.2A Active CN102511040B (zh) | 2011-12-02 | 2011-12-02 | 一种Nand Flash页的检测方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102511040B (zh) |
WO (1) | WO2013078676A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750467A (zh) * | 2019-10-22 | 2020-02-04 | 深圳芯邦科技股份有限公司 | 一种Nand Flash中干扰页的检测方法、系统 |
CN111782142A (zh) * | 2020-06-19 | 2020-10-16 | 科大智能电气技术有限公司 | 一种基于分时处理的Flash存储方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5966720A (en) * | 1992-02-20 | 1999-10-12 | Fujitsu Limited | Flash memory accessed using only the logical address |
CN1725180A (zh) * | 2005-07-18 | 2006-01-25 | 杭州华为三康技术有限公司 | 对可编程逻辑器件在线升级的方法及装置 |
CN1937077A (zh) * | 2005-09-22 | 2007-03-28 | 康佳集团股份有限公司 | 闪存介质中的数据多状态管理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100590737C (zh) * | 2003-01-26 | 2010-02-17 | 深圳市朗科科技股份有限公司 | 闪存介质中的数据管理方法 |
-
2011
- 2011-12-02 WO PCT/CN2011/083372 patent/WO2013078676A1/zh active Application Filing
- 2011-12-02 CN CN201180003231.2A patent/CN102511040B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5966720A (en) * | 1992-02-20 | 1999-10-12 | Fujitsu Limited | Flash memory accessed using only the logical address |
CN1725180A (zh) * | 2005-07-18 | 2006-01-25 | 杭州华为三康技术有限公司 | 对可编程逻辑器件在线升级的方法及装置 |
CN1937077A (zh) * | 2005-09-22 | 2007-03-28 | 康佳集团股份有限公司 | 闪存介质中的数据多状态管理方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750467A (zh) * | 2019-10-22 | 2020-02-04 | 深圳芯邦科技股份有限公司 | 一种Nand Flash中干扰页的检测方法、系统 |
CN110750467B (zh) * | 2019-10-22 | 2021-11-02 | 深圳芯邦科技股份有限公司 | 一种Nand Flash中干扰页的检测方法、系统 |
CN111782142A (zh) * | 2020-06-19 | 2020-10-16 | 科大智能电气技术有限公司 | 一种基于分时处理的Flash存储方法 |
CN111782142B (zh) * | 2020-06-19 | 2024-04-05 | 科大智能电气技术有限公司 | 一种基于分时处理的Flash存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102511040B (zh) | 2014-03-12 |
WO2013078676A1 (zh) | 2013-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11347403B2 (en) | Extending the life of a solid state drive by using MLC flash blocks in SLC mode | |
US8046645B2 (en) | Bad block identifying method for flash memory, storage system, and controller thereof | |
TWI527037B (zh) | 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置 | |
US8332576B2 (en) | Data reading method for flash memory and controller and storage system using the same | |
CN101599305B (zh) | 具有数据修复功能的储存系统及其数据修复方法 | |
US9189313B2 (en) | Memory system having NAND-type flash memory and memory controller with shift read controller and threshold voltage comparison module | |
CN103578565B (zh) | 一种NAND Flash存储芯片的校验方法及装置 | |
US20090327804A1 (en) | Wear leveling in flash storage devices | |
US9141476B2 (en) | Method of storing system data, and memory controller and memory storage apparatus using the same | |
US9141530B2 (en) | Data writing method, memory controller and memory storage device | |
CN101874240A (zh) | 增加存储器的多个块的寿命 | |
TWI476590B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
CN102298543A (zh) | 一种存储器管理方法和装置 | |
CN104699413A (zh) | 数据管理方法、存储器存储装置及存储器控制电路单元 | |
CN105005450A (zh) | 数据写入方法、存储器存储装置及存储器控制电路单元 | |
CN105808371A (zh) | 数据备份与恢复方法、控制芯片及存储装置 | |
US10176876B2 (en) | Memory control method and apparatus for programming and erasing areas | |
US20090164869A1 (en) | Memory architecture and configuration method thereof | |
CN103106148B (zh) | 区块管理方法、存储器控制器与存储器存储装置 | |
CN112347001B (zh) | 闪存垃圾回收的校验方法、装置及电子设备 | |
CN102511040B (zh) | 一种Nand Flash页的检测方法和装置 | |
CN104461379A (zh) | 提高nand闪存的稳定性的方法和nand闪存 | |
US10824340B2 (en) | Method for managing association relationship of physical units between storage area and temporary area, memory control circuit unit, and memory storage apparatus | |
US20120159280A1 (en) | Method for controlling nonvolatile memory apparatus | |
CN107680632B (zh) | 一种固态硬盘的寿命测试方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |