CN113110794B - 一种用于NandFlash的数据存储方法与系统 - Google Patents

一种用于NandFlash的数据存储方法与系统 Download PDF

Info

Publication number
CN113110794B
CN113110794B CN202010027012.9A CN202010027012A CN113110794B CN 113110794 B CN113110794 B CN 113110794B CN 202010027012 A CN202010027012 A CN 202010027012A CN 113110794 B CN113110794 B CN 113110794B
Authority
CN
China
Prior art keywords
page
current
bad
data
write
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
CN202010027012.9A
Other languages
English (en)
Other versions
CN113110794A (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.)
Zhuzhou CRRC Times Electric Co Ltd
Original Assignee
Zhuzhou CRRC Times Electric 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 Zhuzhou CRRC Times Electric Co Ltd filed Critical Zhuzhou CRRC Times Electric Co Ltd
Priority to CN202010027012.9A priority Critical patent/CN113110794B/zh
Publication of CN113110794A publication Critical patent/CN113110794A/zh
Application granted granted Critical
Publication of CN113110794B publication Critical patent/CN113110794B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0763Error or fault detection not based on redundancy by bit configuration check, e.g. of formats or tags
    • 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/0608Saving storage space on storage systems
    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种用于NandFlash的数据存储方法,包括:获取当前需要写入的数据所对应的写数据页码,其中,写数据页码为前一次写周期结束前所记录的页码数加一;从预设的页状态表中读取并识别当前页码的状态;如果该页为好页,将待写入数据写入当前页内,并进行数据读取校验,在校验错误时,将页状态表中的当前页标记为坏页,并生成新的当前页页码,以从页状态表中进行状态识别,在校验正确时,记录当前写周期的写数据页码,以进入下一个写周期。本发明提升了器件空间利用率和使用寿命,保证每个周期数据正确写入,且确保存储数据的连续性。

Description

一种用于NandFlash的数据存储方法与系统
技术领域
本发明涉及存储技术领域,尤其是涉及一种用于NandFlash的数据存储方法与系统。
背景技术
由于NANDFLASH器件的制造工艺和存储原理决定了在生产过程和使用过程中必然会产生坏块,因此,关于坏块管理是NAND应用场景中所必需的策略。一方面,在芯片出厂时需要识别出坏块,并进行标识;同时,在使用过程中所产生的坏块也必须要隔离出来,否则继续使用会导致潜在数据丢失的风险。
由于NAND FLASH包括多个块、以及每个块中又包括多个页。其中,块结构是擦除过程的最小操作单元,页结构是数据写入过程的最小操作单元。在现有技术中,普遍的做法是以块为整体判断该块是否为坏块,整个块中只要有一个页存在无法纠错的位,就判定该块为坏块,该块的所有页都无法继续使用。因而,为了保障存储数据的连续性,需要把现有坏块中好页的数据都搬移到新的块上,但实际上该块中其它页的存储单元都还是正常的,还是可以正常存储数据的,因此,现有的数据存储坏块管理方法存在较大的浪费,空间损耗较大,同时也降低了NAND FLASH器件的使用寿命,同时搬移数据需占用较长时间,影响新数据的存储,不利于数据存储的连续性。
另外,现有技术中所涉及的数据存储坏块管理方法,有些虽然能够以页为单位来进行坏块标记,从而达到有效提升NANDFLASH器件的空间利用率和使用寿命的目的,但无法针对涉及反复擦写操作的使用过程进行实时的坏页标记,其仍然是关于出厂时的坏块回收方案,对于数据存储时的连续性反复读写造成的坏块无法进行标记、数据写入时遇到坏块的连续性无法保证。
因此,针对以上缺陷,本发明急需提供一种能够针对出厂和使用中的坏块进行实时标记,保证数据存储的连续性,同时减小NANDFLASH器件的空间损失,提高NANDFLASH器件的使用寿命。
发明内容
本发明所要解决的技术问题之一是需要提供一种能够准确检测视频播放状态的方法,并实时对该状态进行控制,及时根据播放状态给予正确的重新连接控制信号,以保证偶发异常后视频能够正常播放。
为了解决上述技术问题,本发明实施例提供了一种用于NandFlash的数据存储方法,包括:步骤一、获取当前需要写入的数据所对应的写数据页码,其中,所述写数据页码为前一次写周期结束前所记录的页码数加一;步骤二、从预设的页状态表中读取并识别当前页码的状态;步骤三、如果该页为好页,将待写入数据写入当前页内,并进行数据读取校验,在校验错误时,将所述页状态表中的当前页标记为坏页,并生成新的当前页页码,从而返回所述步骤二,在校验正确时,记录当前写周期的所述写数据页码,以进入下一个写周期。
优选地,所述方法还包括:如果当前页为坏页,则获取所述页状态表中下一个邻近好页作为当前页写周期的所述写数据页码,从而执行所述步骤三。
优选地,在将所述页状态表中的当前页标记为坏页步骤之后,还包括:判断是否满足自动跳过坏页条件,若满足,则生成跳过坏页后的页码,并将其作为所述新的当前页页码。
优选地,在判断是否满足自动跳过坏页条件步骤中,进一步包括:若本次写周期内第一次标记坏页,则满足自动跳过坏页条件,将当前页码加一后生成新页码,从而返回所述步骤二;若本次写周期内第二次标记坏页,则生成表示当前周期写操作失败的故障提示,从而结束当前写周期。
优选地,所述页状态表存储于所述NandFlash,其中,所述页状态表包括多个字节,每个字节用于表示所述NandFlash内相应页的好坏状态,并在所述写周期不断循环过程中更新。
优选地,在所述步骤二中,识别用于表示当前页状态的字节内每一个二进制位,当所有二进制位中存在预设数量个表示状态正常的标志位时,确定当前页为好页,否则为坏页。
另一方面,提供了一种用于NandFlash的数据存储系统,包括:页码获取模块,其配置为获取当前需要写入的数据所对应的写数据页码,其中,所述写数据页码为前一次写周期结束前所记录的页码数加一;页状态识别模块,其配置为从预设的页状态表中读取并识别当前页码的状态;写操作动作模块,其配置为如果该页为好页,将待写入数据写入当前页内,并进行数据读取校验,在校验错误时,将所述页状态表中的当前页标记为坏页,并生成新的当前页页码,从而返回所述页状态识别模块,在校验正确时,记录当前写周期的所述写数据页码,以进入下一个写周期。
优选地,所述系统还包括:第一跳转模块,其配置为如果当前页为坏页,则获取所述页状态表中下一个邻近好页作为当前页写周期的所述写数据页码,从而执行所述写操作动作模块。
优选地,所述写操作动作模块,其还配置为在将所述页状态表中的当前页标记为坏页之后,判断是否满足自动跳过坏页条件,若满足,则生成跳过坏页后的页码,并将其作为所述新的当前页页码。
优选地,所述页状态识别模块,其进一步配置为识别用于表示当前页状态的字节内每一个二进制位,当所有二进制位中存在预设数量个表示状态正常的标志位时,确定当前页为好页,否则为坏页。
与现有技术相比,上述方案中的一个或多个实施例可以具有如下优点或有益效果:
本发明实施例主要提出了一种用于NandFlash器件的数据存储方法与系统,该方法和系统采用页状态表的坏页判断机制,以页为单位进行读、写及坏页标记,结合写入后读取结果的校验,基于该结果在发现校验错误位时才进行坏页标记,并允许重新在下一个好页中进行当前数据的写、读和校验操作。这样,避免了搬移坏块空间内好数据的工作,不会影响实时数据的正常存储。同时,相对于现有的坏块判定策略,有效的提升了NAND FLASH的空间利用率和使用寿命,更能够满足周期性存储数据需求的应用,对器件出厂和后续使用过程中产生的坏位进行实时性的动态更新记录,并保证每个周期数据正确写入,以及确保存储数据的连续性。另外,本发明采用NAND FLASH片内资源进行页状态存储,页状态具备容错机制,能够很好的解决NAND FLASH应用中产生坏位的固有缺陷,提高页状态信息的准确性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本申请实施例的用于NandFlash的数据存储方法的步骤图。
图2为本申请实施例的用于NandFlash的数据存储方法的具体流程图。
图3为本申请实施例的用于NandFlash的数据存储系统的模块框图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
由于NANDFLASH器件的制造工艺和存储原理决定了在生产过程和使用过程中必然会产生坏块,因此,关于坏块管理是NAND应用场景中所必需的策略。一方面,在芯片出厂时需要识别出坏块,并进行标识;同时,在使用过程中所产生的坏块也必须要隔离出来,否则继续使用会导致潜在数据丢失的风险。
由于NAND FLASH包括多个块、以及每个块中又包括多个页。其中,块结构是擦除过程的最小操作单元,页结构是数据写入过程的最小操作单元。在现有技术中,普遍的做法是以块为整体判断该块是否为坏块,整个块中只要有一个页存在无法纠错的位,就判定该块为坏块,该块的所有页都无法继续使用。因而,为了保障存储数据的连续性,需要把现有坏块中好页的数据都搬移到新的块上,但实际上该块中其它页的存储单元都还是正常的,还是可以正常存储数据的,因此,现有的数据存储坏块管理方法存在较大的浪费,空间损耗较大,同时也降低了NAND FLASH器件的使用寿命,同时搬移数据需占用较长时间,影响新数据的存储,不利于数据存储的连续性。如果按照传统的坏块管理方法,正常工作时当某个页存在无法纠错的位时,标记该页所在块为坏块,不再使用该块。这时,坏块中好页上的数据会全部丢失,需要将坏块中好页上的数据转移出来。如果需要转移的数据较多,则需要占用较大的系统资源和时间,会影响新的数据写入,造成数据缺失。
另外,现有技术中所涉及的数据存储坏块管理方法,有些虽然能够以页为单位来进行坏块标记,从而达到有效提升NANDFLASH器件的空间利用率和使用寿命的目的,但无法针对涉及反复擦写操作的使用过程进行实时的坏页标记,其仍然是关于出厂时的坏块回收方案,对于数据存储时的连续性反复读写造成的坏块无法进行标记、数据写入时遇到坏块的连续性无法保证。
为了解决上述技术问题,本发明提出了一种用于NandFlash器件的数据存储方法与系统,该方法及系统主要是针对读写数据连续性的解决方案,在对Nandflash使用过程中,一方面不再标记坏块只标记坏页,还在读写操作过程中通过同步对读写数据进行校验来判断当前所读写的页是否存在坏的位,若存在坏位(坏页),则标记该页为坏页。这样,本发明能够同时兼顾出厂时和出厂后反复使用过程中的坏块进行实时标记,也能够保证数据存储的连续性,同时减小NANDFLASH器件的空间损失,提高NANDFLASH器件的使用寿命。
在对本发明所述的数据存储方法进行说明之前,需要先对该方法和系统的应用场景进行说明。根据项目的特定应用,NAND FLASH器件用于存储连续数据,需要保证数据在写入过程中的连续性。具体地,采用页状态表的坏页判断机制,数据以页为单位分次写入,相应的写入一页数据的过程对应有相应的基于页写入操作的写周期,在将可写入多个页的数据包存入NAND FLASH器件时,相应的写入间隔周期为20ms,此时,对应有基于数据包的写入操作的数据包写入周期,然后,批量进行导出。因此,在一个数据包写入周期内,包括有不断循环的写周期,以将数据包按页写入器件内。另外,通过对NAND FLASH器件不断的写入并导出,能够实现多个数据包的存储和导出,从而对NAND FLASH器件进行循环反复的写入和擦除操作。由于每个写周期所涉及的过程是一致的,故本发明实施例以一个写周期为例进行说明。
图1为本申请实施例的用于NandFlash的数据存储方法的步骤图。如图1所示,首先,步骤S110获取当前需要写入当前页的数据(待写入数据)所对应的写数据页码。其中,此时的当前写数据页码为前一次写周期结束前所记录的页码数加一。而后,步骤S120从预设的页状态表中读取并识别当前写数据页码的状态(页码在所属块内的状态)。在本发明实施例中,采用页状态表的方式来对当前待写入页是否为坏页进行标记。其中,页状态表自身也存储于NandFlash器件中。页状态表由多个字节构成,每个字节对应一页的状态,具体表示NandFlash内相应页的好坏状态,并在写周期不断循环过程中更新。需要说明的是,在本发明实施例中,NandFlash器件中存储的针对每个页的好坏状态,是在上一轮对该器件内的相同页进行好坏状态判断时所更新好的状态信息。因而,本发明实施例中的页状态表,是能够在NandFlash器件不断使用过程中,对每完成一个写周期对应的页的好坏状态进行实时更新改写的,故在步骤S120所获取到的针对当前页的状态,是上一次对该页进行数据写入并读取校验时所对应的最新的状态表示信息,是可能经过不断使用后会产生变化的,而不单指出厂时的坏页状态,从而对当前页最新的状态标识进行识别,以此来判断出在反复经过多次写入和导出处理后,当前页是否仍然是好页。进一步,在识别出当前页为好页时,进入到步骤S130中,识别出当前页为坏页时,进入到步骤S140中。
步骤S130如果该页为好页,将待写入数据写入当前页内,进行写操作,并进行数据读取校验,在校验错误时,将页状态表中的当前页标记为坏页,并生成新的当前页页码,从而返回至上述步骤S120中,进一步获取新页码在页状态表中是否标记为坏页。这样,本发明在对当前页的好坏状态进行判断后,还进一步对当前页的写入结果进行读取,并进行读取校验,在读取校验失败后,表明该页在出厂后的使用过程中出现会使得读或写过程产生错误的坏位,在这种情况下,无需跳出当前写周期的程序,在页状态表中标记当前页为坏页后,直接自动跳转至步骤S120中,读取下一个页码的状态信息,以在下一页为好页时,将当前待写入数据直接写入下一个好页中,从而在校验合格后,结束当前写周期,以此保障了当前待写入数据在遇到读写错误的坏位时,能自动跳转至下一个好页,从而完成当前数据的在存储时的准确性和连续性。其中,步骤S120所生成的新的当前页页码,为当前坏页页码序列的下一个页码,即当前坏页页码加一后的新的页码。
另外,步骤S130在针对当前页已写入相应数据后进行读取校验过程中,若校验正确,则记录当前写周期中待写入数据存储进相应页的页码(写数据页码),从而进入到下一个基于页的写周期。
进一步,步骤S140如果当前页为坏页,则获取页状态表中基于当前页页码的下一个邻近好页作为当前写周期的写数据页码,从而进入到步骤S130中,以将待写入数据写入该页中。需要说明的是,在查找下一个好页时,下一个好页与当前坏页之间可能无间隔、也可能间隔至少一个坏页,此时,需要选取距离当前页页码编号之后最近的好页,并将其作为当前写周期内新的待写入数据的页。
这样,本发明实施例通过上述步骤S110~步骤S140完成了一次写周期的数据写操作,使得本发明在采用页状态表的判断机制的基础上,还能够对写入数据后的读取结果进行校验,并将读取校验不合格的坏位标记为坏页,以更新页状态表,从而对出厂和不断使用过程中所产生的坏页进行实时的动态标记。另外,还能够在读取校验不合格时,无需从当前写周期中跳出,以在自动跳转至下一个好页后,将当前待写入数据写入跳转后的好页中,从而不但能够保证每个写周期数据存储的正确写入,还确保数据存储过程的连续性。
图2为本申请实施例的用于NandFlash的数据存储方法的具体流程图。下面结合图1和图2对本发明实施例中的数据存储方法进行详细说明。如图1和图2所示,首先,步骤S201获取当前写周期对应的写数据页码。也就是说,步骤S201确定当前待写入数据需要写入的页对应的页码(即待写入页的页码),而后进入到步骤S202中。
步骤S202利用上述页状态表,读取当前页所在块内对应的状态,而后,利用步骤S203对读取结果进行识别,以判断当前页的状态是否为坏页,从而得到相应的坏页判断结果。在本发明实施例中,为了解决出厂和后续使用过程中出现的内部坏位无法实时动态监控的问题,采用页状态(动态)表对NANDFLASH器件内所有块中的页的坏位状态进行记录并更新。
以MICRON品牌的型号为MT29F128G08AJAAAWP的NAND FLASH为例。该器件内1个(器件)页有8192字节,1个(器件)块有128页,128Gb的NAND FLASH共有16384(器件)块(2097152页)。页状态表存储于NAND FLASH器件中,其大小由NAND FLASH器件的总块数来确定,页状态表中每一字节(1字节=8个标志位)表示一个(器件)页的状态。本示例的128Gb的NANDFLASH器件内存储的页状态表由16384(表)页组成,具有128个块所对应的区域可用于存储当前页状态表,每页前128字节对应一个块128页的页状态。例如,页状态表的第129页第1个字节,对应的是当前器件的第129块第1页的页状态,当该器件的第129块第1页在写入数据并读取校验过程中发现有无法纠错的位(校验失败),则判定该页为坏页,将页状态表内针对当前器件的第129页第1个字节8位全部写0,标记成坏页。其中,在本发明实施例的页状态表中,当页状态为好页时,对应该页的字节中的8个二进制标志位全部为1(标志位为1时,表示当前位状态正常);当页状态为坏页时,对应该页的字节中的8个二进制位全部为0(标志位为0时,表示当前位状态异常)。
进一步,在本发明实施例中,为了防止存储页状态表所在块在后续针对写入并更新所有页的页状态时由于反复使用可能会出现的坏位,从而造成页状态信息错误的情况发生(即虽然在更新当前页的状态的字节时写入8个二进制位全部为0的字节数据,但由于其中存在坏位,使得表示当前页状态的字节中可能出现一个或一个以上位显示为1的错误情况),本方明实施例在对页状态表内的页状态进行识别时,会采用冗余容错机制。具体地,步骤S203在从页状态表中读取到当前页的状态数据后进行识别,进一步识别用于表示当前页状态的字节内的每一个二进制位,当所有二进制位中存在预设数量个表示状态正常的标志位时,判断当前页为好页(坏页判断结果)。另外,当所有二进制位中存在的表示好页的标志位的数量并未达到上述预设数量时,确定当前页为坏页(坏页判断结果)。
举例来说,由于在页状态表中,页状态字节内的8个标志位全部为1时,也就是当前字节中的8个标志位都表示当前位状态正常(不存在坏位),此时,页状态为好页;页状态字节内的8个标志位全部为0时,也就是当前字节中的8个标志位都表示当前位状态异常(存在坏位),此时,页状态为坏页。在本发明实施例中,当对页状态表内的页状态进行识别时,采取容错机制,当8个标志位中存在有5位(预设数量为5)及以上位数都为1时,则认为该页为好页;否则,认为该页为坏页。
进一步,如果上述坏页判断结果表明当前页为坏页时,进入到步骤S204中获取页状态表中基于当前页页码的下一个邻近好页作为本次写周期对应的当前页的写数据页码,而后进入到步骤S205。由于步骤S204与上述步骤S140类似,故在此不作赘述。
步骤S205将当前待写入数据写入当前页所在的存储区域内,而后,利用步骤S206读取已写入的该页内的数据,并进行读取校验,而后进入到步骤S207中。步骤S207判断当前读取校验是否正确,如果校验正确,则进入到步骤S208中,如果校验错误则进入到步骤S209中。
步骤S208记录当前写周期对应的待写入页的页码(写数据页码),从而结束当前写周期,以完成将待写入数据准确写入当前页内的写操作。
步骤S209如果第一次校验错误,则统计当前校验失败次数,并判断针对当前待写入数据的读取校验失败次数是否达到预设允许校验次数阈值,若达到,则进入到步骤S210中,若未达到,则返回步骤S206中继续进行第二次校验,进一步在第二次校验合格后返回进入步骤S208中。如果在第二次校验仍不合格后,且当前校验失败次数仍未达到上述预设允许校验次数阈值后,继续返回至步骤S206进行第三次校验,直到当前校验失败次数达到上述允许校验次数阈值。优选地,在本发明实施例中,上述允许校验次数阈值为3次。这样,为了防止校验过程中因受到数据存储方法所适用的系统在应用中的干扰、校验计算错误等因素的影响,尽可能少的使得校验结果的判断错误会导致坏位判断的错误,在读取校验正确性判断过程中采用了多次判断的机制,从而仅针对不可通过多次校验来进行校验纠错的坏位判断结果实施坏页标记,从而进入到步骤S210中。
步骤S210立即将页状态表中的当前页标记为坏页,而后,进入到步骤S211。具体地,将页状态表中表示当前页页状态的字节中的8个标志位全部写为0。
在本发明实施例中,为了防止连续遇到基于读取校验过程的坏页的情况发生,不允许在当前写周期内占用过多的时间来进行多次写数据操作,故本发明实施例还需要在将页状态表中的当前页标记为坏页之后,利用步骤S211判断是否满足自动跳过坏页条件,也就是说,虽然本发明能够在读写校验结果的基础上判断出当前页为坏页后,自动跳转至下一个好页,以将当前待写入数据准确写入该好页中,但为了保障当前写周期不占用过多时间这个自动跳转机制仅允许执行一次。若步骤S211满足自动跳过坏页条件,则进入步骤S212中,步骤S212生成跳过坏页后的页码,并将其作为新的当前页码,而后返回至步骤S202中。如果不满足上述自动跳过坏页条件,则进入步骤S213中,步骤S213生成当前写操作故障提示,从而进入到步骤S208中。
更进一步地说,步骤S211判断当前步骤S210中标记坏页操作是否为本次写周期内第一次标记坏页操作,如果是,则满足上述自动跳过坏页条件,进入到步骤S212中。步骤S212将当前(坏页)页码加一后生成新页码以作为跳过坏页后的页码,从而返回到步骤S202中,继续从页状态表中读取并识别当前新页码的状态,以允许执行一次自动跳转机制。另外,步骤S211如果当前步骤S210中标记坏页操作为本次写周期内第二次标记坏页操作,则生成表示当前写周期内写操作失败的故障提示,进一步进入到步骤S208中,以在记录好当前写周期的坏页页码后,结束当前写周期,可使得当前待写入数据利用下一写周期进行相应的写操作。
在一个实施例中,根据特定项目应用,系统要求每20ms数据传输周期会有一包数据存入NAND FLASH,数据包包含4096words(前16个字节位故障头信息,包含时间戳、数据索引、数据信息等),占用NANDFLASH的1页空间。每个写周期进行写操作时,先读页状态表,判断该页状态,若为好页则进行写数据操作;若为坏页,则对下一个邻近的好页进行写数据操作。写完该页数据后,将数据读出进行校验,如果连续三次读校验不正确,则认为该页存在无法纠错的位,判定为坏页,在页状态表中标记坏页标识(将对应该页状态的字节写0),并在下一个邻近好页重新写入该包数据。需要说明的是,由于NAND FLASH器件的页写时间极短,为1us左右,当在遇到无法纠错的位对应的坏块时,需要重新写一页数据,这一过程完全可以在一个系统周期时间(20ms)内完成,不会影响下一个系统周期的数据存储,从而保证了数据存储的连续性。
另一方面,基于上述用于NandFlash的数据存储方法,本发明还提出了一种用于NandFlash的数据存储系统。图3为本申请实施例的用于NandFlash的数据存储系统的模块框图。如图3所示,该系统包括:页码获取模块31、页状态识别模块32和写操作动作模块33。其中,页码获取模块31其按照上述步骤S110实施,配置为获取当前需要写入的数据所对应的写数据页码,其中,当前写数据页码为前一次写周期结束前所记录的页码数加一;页状态识别模块32其按照上述步骤S120实施,配置为从预设的页状态表中,读取并识别当前页码的状态;写操作动作模块33其按照上述步骤S130实施,配置为如果该页为好页,将待写入数据写入当前页内,并进行数据读取校验,在校验错误时,将页状态表中的当前页标记为坏页,并生成新的当前页页码,从而返回至页状态识别模块32,在校验正确时,记录当前写周期的写数据页码,以进入下一个写周期。
另外,上述系统还包括:第一跳转模块34。第一跳转模块34其按照上述步骤S140实施,配置为如果当前页为坏页,则获取页状态表中下一个邻近好页作为当前页写周期的写数据页码,从而执行写操作动作模块33。
进一步,写操作动作模块33还配置为在将页状态表中的当前页标记为坏页之后,还包括:判断是否满足自动跳过坏页条件,若满足,则生成跳过坏页后的页码,并将其作为新的当前页页码。
进一步,页状态识别模块34进一步配置为识别用于表示当前页状态的字节内每一个二进制位,当所有二进制位中存在预设数量个表示状态正常的标志位时,确定当前页为好页,否则为坏页。
本发明实施例提出了一种用于NandFlash器件的数据存储方法与系统,该方法和系统采用页状态表的坏页判断机制,以页为单位进行读、写及坏页标记,结合写入后读取结果的校验,基于该结果在发现校验错误位时才进行坏页标记,并允许重新在下一个好页中进行当前数据的写、读和校验操作。这样,避免了搬移坏块空间内好数据的工作,不会影响实时数据的正常存储。同时,相对于现有的坏块判定策略,有效的提升了NAND FLASH的空间利用率和使用寿命,更能够满足周期性存储数据需求的应用,对器件出厂和后续使用过程中产生的坏位进行实时性的动态更新记录,并保证每个周期数据正确写入,以及确保存储数据的连续性。另外,本发明采用NAND FLASH片内资源进行页状态存储,页状态具备容错机制,能够很好的解决NAND FLASH应用中产生坏位的固有缺陷,提高页状态信息的准确性。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

Claims (5)

1.一种用于NandFlash的数据存储方法,其特征在于,包括:
步骤一、获取当前需要写入的数据所对应的写数据页码,其中,所述写数据页码为前一次写周期结束前所记录的页码数加一;
步骤二、从预设的页状态表中读取并识别当前页码的状态;
步骤三、如果该页为好页,将待写入数据写入当前页内,并进行数据读取校验,在校验错误时,将所述页状态表中的当前页标记为坏页,而后判断是否满足自动跳过坏页条件,若满足,则生成跳过坏页后的页码,并将其作为新的当前页页码,从而返回所述步骤二,在校验正确时,记录当前写周期的所述写数据页码,以进入下一个写周期,其中,在判断是否满足自动跳过坏页条件时,若本次写周期内第一次标记坏页,则满足自动跳过坏页条件,将当前页码加一后生成新页码,从而返回所述步骤二,若本次写周期内第二次标记坏页,则生成表示当前周期写操作失败的故障提示,从而结束当前写周期;
步骤四、如果当前页为坏页,则获取所述页状态表中下一个邻近好页作为当前页写周期的所述写数据页码,从而执行所述步骤三。
2.根据权利要求1所述的数据存储方法,其特征在于,所述页状态表存储于所述NandFlash,其中,所述页状态表包括多个字节,每个字节用于表示所述NandFlash内相应页的好坏状态,并在所述写周期不断循环过程中更新。
3.根据权利要求1或2所述的数据存储方法,其特征在于,在所述步骤二中,
识别用于表示当前页状态的字节内每一个二进制位,当所有二进制位中存在预设数量个表示状态正常的标志位时,确定当前页为好页,否则为坏页。
4.一种用于NandFlash的数据存储系统,其特征在于,包括:
页码获取模块,其配置为获取当前需要写入的数据所对应的写数据页码,其中,所述写数据页码为前一次写周期结束前所记录的页码数加一;
页状态识别模块,其配置为从预设的页状态表中读取并识别当前页码的状态;
写操作动作模块,其配置为如果该页为好页,将待写入数据写入当前页内,并进行数据读取校验,在校验错误时,将所述页状态表中的当前页标记为坏页,并生成新的当前页页码,从而返回所述页状态识别模块,在校验正确时,记录当前写周期的所述写数据页码,以进入下一个写周期,以及在将所述页状态表中的当前页标记为坏页之后,判断是否满足自动跳过坏页条件,若满足,则生成跳过坏页后的页码,并将其作为所述新的当前页页码,其中,在判断是否满足自动跳过坏页条件时,若本次写周期内第一次标记坏页,则满足自动跳过坏页条件,将当前页码加一后生成新页码,从而返回执行所述页状态识别模块,若本次写周期内第二次标记坏页,则生成表示当前周期写操作失败的故障提示,从而结束当前写周期;
第一跳转模块,其配置为如果当前页为坏页,则获取所述页状态表中下一个邻近好页作为当前页写周期的所述写数据页码,从而执行所述写操作动作模块。
5.根据权利要求4所述的数据存储系统,其特征在于,
所述页状态识别模块,其进一步配置为识别用于表示当前页状态的字节内每一个二进制位,当所有二进制位中存在预设数量个表示状态正常的标志位时,确定当前页为好页,否则为坏页。
CN202010027012.9A 2020-01-10 2020-01-10 一种用于NandFlash的数据存储方法与系统 Active CN113110794B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010027012.9A CN113110794B (zh) 2020-01-10 2020-01-10 一种用于NandFlash的数据存储方法与系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010027012.9A CN113110794B (zh) 2020-01-10 2020-01-10 一种用于NandFlash的数据存储方法与系统

Publications (2)

Publication Number Publication Date
CN113110794A CN113110794A (zh) 2021-07-13
CN113110794B true CN113110794B (zh) 2023-09-08

Family

ID=76708743

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010027012.9A Active CN113110794B (zh) 2020-01-10 2020-01-10 一种用于NandFlash的数据存储方法与系统

Country Status (1)

Country Link
CN (1) CN113110794B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080071366A (ko) * 2007-01-30 2008-08-04 삼성전자주식회사 낸드 플래시를 구비하는 레이드 시스템에서 낸드 플래시의온도를 고려한 데이터 백업 장치 및 방법
CN103268267A (zh) * 2013-05-24 2013-08-28 北京航天自动控制研究所 一种基于块的nandflash坏区动态标记处理方法
CN107562563A (zh) * 2016-07-01 2018-01-09 龙芯中科技术有限公司 Nand Flash控制方法和装置
CN108701488A (zh) * 2015-12-01 2018-10-23 科内克斯实验室公司 用于在逻辑上去除非易失性存储器存储设备中的缺陷页的方法和装置
CN109426451A (zh) * 2017-08-31 2019-03-05 慧荣科技股份有限公司 将数据写入闪存模块的方法及相关闪存控制器与电子装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI436212B (zh) * 2011-07-21 2014-05-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US10672497B2 (en) * 2018-04-03 2020-06-02 SK Hynix Inc. Memory system and method for bad block management

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080071366A (ko) * 2007-01-30 2008-08-04 삼성전자주식회사 낸드 플래시를 구비하는 레이드 시스템에서 낸드 플래시의온도를 고려한 데이터 백업 장치 및 방법
CN103268267A (zh) * 2013-05-24 2013-08-28 北京航天自动控制研究所 一种基于块的nandflash坏区动态标记处理方法
CN108701488A (zh) * 2015-12-01 2018-10-23 科内克斯实验室公司 用于在逻辑上去除非易失性存储器存储设备中的缺陷页的方法和装置
CN107562563A (zh) * 2016-07-01 2018-01-09 龙芯中科技术有限公司 Nand Flash控制方法和装置
CN109426451A (zh) * 2017-08-31 2019-03-05 慧荣科技股份有限公司 将数据写入闪存模块的方法及相关闪存控制器与电子装置

Also Published As

Publication number Publication date
CN113110794A (zh) 2021-07-13

Similar Documents

Publication Publication Date Title
US7240178B2 (en) Non-volatile memory and non-volatile memory data rewriting method
US6341109B1 (en) Defective area replacement method and information writing/reading device
CN109918022B (zh) 一种ssd开卡坏块表继承方法
CN104282342A (zh) 闪存装置、存储器控制器及闪存的控制方法
RU2269814C2 (ru) Способ надежной записи указателя для кольцевой памяти
CN106910528A (zh) 一种固态硬盘数据巡检的优化方法及装置
WO2024055611A1 (zh) 基于固件仿真的故障现场回溯方法、设备及可读存储介质
TW201519246A (zh) 存取快閃記憶中儲存單元的方法以及使用該方法的裝置
CN102929740A (zh) 检测存储设备坏块的方法和装置
CN113110794B (zh) 一种用于NandFlash的数据存储方法与系统
CN112270945B (zh) 记录是否有擦除时掉电的方法、装置、存储介质和终端
JP5541194B2 (ja) フラッシュメモリに対してデータの読み出しおよび書き込みを行う制御装置
CN114721602B (zh) 一种基于FreeRTOS的Nor Flash滚动存储方法及装置
CN108665941A (zh) 基于nand闪存的列修复方法、装置和nand存储设备
CN111737049A (zh) 基于raid6的磁盘阵列数据恢复方法和装置
CN113625947B (zh) 一种数据纠错方法、装置、设备及计算机可读存储介质
CN105744200A (zh) 视频监控录像的存储方法及装置
US20220283894A1 (en) Detection method and system applied to intelligent analysis and detection for flash, intelligent terminal, and computer-readable storage medium
CN116185563A (zh) 一种基于车规级微控制器数据闪存的软件模拟算法
JP2003036209A (ja) 不揮発性メモリ並びに不揮発性メモリのデータ書き換え方法
CN106408790B (zh) 金融设备循环机芯日志信息写入方法及读取方法
WO2022027170A1 (zh) 闪存数据管理方法、存储设备控制器及存储设备
US11361221B2 (en) Method of training artificial intelligence to estimate lifetime of storage device
CN110795275A (zh) 基于异常掉电过程中的异常块识别方法和装置
CN115509466B (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
GR01 Patent grant
GR01 Patent grant