发明内容
本发明目的一是提供一种应用于Flash智能分析检测的检测方法,具有提高NandFlash分析检测后的有效容量的特点。
本发明的上述发明目的一是通过以下技术方案得以实现的:
S1、获取Column总集、Page总集,以及包含Column总集和Page总集的Block总集,预设坏Column总集、坏Page总集、可跟随迭代次数更新的错误阈值,以及包含坏Column总集和坏Page总集的初始坏Block模板;
S2、依次交替按照坏页选取策略和坏列选取策略,基于错误阈值从Block总集中依次交替获取坏Page元素和坏Column元素,并依次交替更新坏Page总集和坏Column总集;
S3、基于对应于不同错误阈值的各个坏Column总集和对应于不同错误阈值的各个坏Page总集,按照坏模板迭代策略更新错误阈值,从各个坏Column总集中获取最终Column总集,并从各个坏Page总集中获取最终Page总集;
S4、基于最终Column总集和最终Page总集更新初始坏Block模板,获取最终坏Block模板。
通过采用上述技术方案,Column总集包含一个Block里面的所有的Column,Page总集包含一个Block里面的所有的Page。坏Column总集包含通过指令纠错被评定为badColumn的所有Column,坏Page总集包含通过指令纠错被评定为bad Page的所有Page。初始坏Block模板指的是结合坏Column总集和坏Page总集获得的模板,若使用初始坏Block模板去分析读写Flash里面的所有Block,可以评估得到Flash的有效容量。
按照坏页选取策略是指令纠错基于错误阈值从Page总集里面选取坏Page元素的方法,而按照坏列选取策略是指令纠错基于错误阈值从Column总集里面选取坏Column元素的方法。选取坏Page元素和/或坏Column元素,相当于是选取坏元素的操作,而基于坏Page元素更新坏Page总集和/或坏Column总集,相当于是更新坏总集的操作;S2的步骤相当于是使选取坏元素的操作和更新坏总集的操作依次交替进行。由于在指令纠错基于错误阈值从Page总集里面选取坏Page元素时,坏Column元素会影响指令纠错对Page总集的判断,因此先获取较为精确的坏Column总集,再通过指令纠错去评估Page总集,可提高指令纠错的准确性,使获取的坏Page总集更加精准;同理,在指令纠错基于错误阈值从Column总集里面选取坏Column元素时,坏Page元素也会影响指令纠错对Column总集的判断,因此先获取较为精确的坏Page总集,再通过指令纠错去评估Column总集,可提高指令纠错的准确性,使获取的坏Column总集更加精准。
错误阈值指的是在指令纠错中进行评估的条件,相当于是Column判断为badColumn和/或Page 判断为bad Page的标准,错误阈值的改变会影响bad Column和/或badPage的数量错误阈值,但是在实际分析检测的过程中,错误阈值难以直接获取正确的值。通过改变错误阈值的方式,可以多个对应于不同错误阈值的坏Page总集和/或坏Column总集,而通过进行筛选比较判断,从各个坏Page总集和/或坏Column总集中选取最终Column总集和/或最终Page总集,相当于从多个错误阈值中选取相对准确的错误阈值,以使最终获得的坏Block模板更加准确。
通过这种是选取坏元素和更新坏总集依次交替进行的方式,可以提高坏Column总集和/或坏Page总集的准确性,且通过多次迭代循环之后,坏Column总集和/或坏Page总集会越来越趋向于精准,进而使得到的坏Block模板更加准确。另一方面,由于Nand Flash的物理性质,有部分Page本身就是bad Page,因此先选取坏Page元素再选取坏Column元素的方式,可以先将这部分bad Page从Block总集中选取出来作为坏Page元素,降低这部分badPage对后续选取坏Column元素的操作造成的影响,减少虚假bad Column的产生,使最终坏Block模板更加准确,进而提高Nand Flash分析检测后的有效容量。
可选的,在S2的步骤中,包括:
S21、按照坏列干扰排除策略,基于坏Column总集从Page总集中获取待测Page子集,按照坏页判断策略,基于错误阈值依次分析各个待测Page子集,从Block总集中获取坏Page元素,并基于坏Page元素更新坏Page总集;
S22、按照坏页干扰排除策略,基于坏Page总集从Column总集中获取各个待测Column子集,按照坏列判断策略,基于错误阈值依次分析各个待测Column子集,从Block总集中获取坏Column元素,并基于坏Column元素更新坏Column总集。
通过采用上述技术方案,坏列干扰排除可在Page总集需要进行指令纠错时,从Page总集中选取部分受坏Column总集较少的Column作为各个待测Page子集,然后再依次分析各个待测Page子集,获取各个坏Page元素,并将坏Page元素更新到坏Page总集中,从而获取更为精确的坏Page总集。同理,坏行干扰排除可在Column总集需要进行指令纠错时,从Column总集中选取部分受坏Page总集较少的Page作为各个待测Column子集,然后再分析各个待测Column子集,获取各个坏Column元素,并将坏Column元素更新到坏Column总集中,从而获取更为精确的坏Column总集。
可选的,在S1的步骤中,还包括:获取各个原始Column子集和各个原始Page子集,Column总集包含各个原始Column子集,Page总集包含各个原始Page子集;
在S21的步骤中,包括:
S211、将坏Column总集映射于各个原始Page子集,获取各个干扰Page子集;
S212、依次获取各个干扰Page子集在与其对应的各个原始Page子集中的补集,生成各个待测Page子集;
S213、按照坏页判断策略,基于错误阈值依次分析各个待测Page子集,从Block总集中获取坏Page元素,并基于坏Page元素更新坏Page总集;
在S22的步骤中,包括:
S221、将坏Page总集映射于各个原始Column子集中获取各个干扰Column子集;
S222、依次获取各个干扰Column子集在对应的各个原始Column子集中的补集,作为各个待测Column子集;
S223、按照坏列判断策略,基于错误阈值从各个待测Column子集获取各个坏Column元素,并更新坏Column总集。
通过采用上述技术方案,原始Column子集包含位于同一Column的各个存储单元,原始Page子集包含位于同一Page的各个存储单元。将坏Column总集映射在任意一原始Page子集后,可在原始Page子集中获取会与坏Column总集发生相交的存储单元,而干扰Column子集则包含这部分存储单元。干扰Column子集内的存储单元均是已经被判断为bad Page的一部分,在存储数据时会跳过干扰Column子集内的存储单元,因此在分析检测原始Page子集内还有多少存储单元需要跳过时,获取干扰Page子集在原始Page子集中的补集作为待测Page子集进行分析,可减少当前的bad Page对bad Column的分析的干扰。同理,在分析检测原始Column子集内还有多少存储单元需要跳过时,获取干扰Column子集在原始Column子集中的补集作为待测Column子集进行分析,可减少当前的bad Column对bad Page的分析的干扰。
可选的,在S213的步骤中,包括:
S2131、按照指令纠错策略,依次获取各个待测Page子集的Page错误值;
S2132、基于错误阈值和各个Page错误值,依次按照坏Page筛选策略,从各个待测Page子集中选取不满足Page有效条件的待测Page子集作为失效Page子集;
S2133、基于对应于失效Page子集的原始Page子集获取坏Page元素,获取包含所有坏Page元素的集合作为坏Page总集;
在S223的步骤中,包括:
S2231、按照指令纠错策略,依次获取各个待测Column子集的Column错误值;
S2232、基于错误阈值和Column错误值,按照阈值比较策略,从各个待测Column子集中选取不满足Column精度条件的待测Column子集作为失效Column子集;
S2233、基于对应于失效Column子集的原始Column子集获取坏Column元素,获取包含所有坏Column元素的集合作为坏Column总集。
通过采用上述技术方案,指令纠错策略可以先将数据写到待测Column子集的各个存储单元中,然后再读出来进行比较,然后统计错误的bit数,错误的bit数越多则错误值越高,当错误值高于错误阈值时,则该待测子集并不满足Column精度条件,可将该待测子集评估为失效Column子集,同时将对应于失效Column子集的原始子集作为bad Column,并通过将坏Page元素包含进坏Page总集的方式记录bad Column,当记录了所有的坏Page元素之后,当前的坏Page总集相当于是记录了各个bad Column的bad Column模板,用当前的badColumn模板取代旧的bad Column模板,从而完成bad Column模板的更新。同理,通过计算各个待测Column子集的Column错误值并与错误阈值进行比较的方式,可以获取各个不满足Page有效条件的失效Page子集,进而可以获取记录了各个bad Page的bad Page模板,用当前的bad Page模板取代旧的bad Page模板,从而完成bad Page模板的更新。
可选的,在S3的步骤中,包括:
S31、建立用于存储各个对应于不同的错误阈值的待对比模板的模板库;
S32、按照模板对比策略,判断当前的模板库中完整的错误阈值是否存在满足有效容量条件的最小值,若是则执行S34;若否则执行S33;
S33、更新错误阈值,基于坏Column总集和坏Page总集更新待对比模板,并存储进模板库中,并返回S2;
S34、基于判断结果生成最终Column总集和最终Page总集。
通过采用上述技术方案,待对比模板为当前的坏Column总集和/或坏Page总集的上一个坏Column总集和/或坏Page总集。模板库中可以存储对应于不同错误阈值的坏Column总集和/或坏Page总集,通过使多个对应于不同错误阈值的坏Column总集和/或坏Page总集之间的比较,可以找到较为适合的错误阈值,这个错误阈值对应的坏Column总集和/或坏Page总集,应较为准确且能满足Flash的有效容量要求。
可选的,在S32的步骤中,包括,
S321、判断当前的模板库是否存在待对比模板,若是则执行S322;若否则执行S323;
S322、判断待对比模板是否满足迭代终止条件,若是则执行S34;若否则执行S33;
S323、获取包含当前坏Column总集和当前坏Page总集的待对比模板,并将待对比模板存储到模板库中;
在S34的步骤中,还包括:获取待对比模板中的坏Column总集为最终Column总集,获取待对比模板中的坏Page总集为最终Page总集。
通过采用上述技术方案,最终Column总集和/或最终Page总集指的是较为精准也能满足Flash有效容量要求的坏Column总集和/或坏Page总集,为了得到最终Column总集和/或最终Page总集,需要更新错误阈值,使坏Column总集和/或坏Page总集不断发生更新迭代。当最终Column总集和/或最终Page总集未能成功选取时,当前的坏Column总集和/或坏Page总集会作为待对比模板存储到模板库中,模板库相当于储存了最终Column总集和/或最终Page总集的候选模板,直到最终Column总集和/或最终Page总集出现之前,坏Column总集和/或坏Page总集会随着错误阈值的改变而不断发生迭代更新,从而可以选出满足要求的最终Column总集和/或最终Page总集。当模板库内没有对待比模板时,则将当前的坏Column总集和当前的坏Page总集作为待对比模板加入模板库中。
可选的,在S322的步骤中,包括:
S3221、预设Column有效阈值,基于Column有效阈值判断当前待对比模板中的坏Column总集是否满足有效容量条件,若是则执行S3222;若否则执行S33;
S3222、预设Column迭代阈值,基于Column迭代阈值分析待对比模板和坏Column总集,判断待对比模板是否满足容量变化条件,若是则执行S3223;若否则执行S33;
S3223、预设Page有效阈值,基于Page有效阈值判断当前待对比模板中的坏Page总集是否满足有效容量条件,若是则执行S3224;若否则执行S33;
S3224、预设Page迭代阈值,基于Page迭代阈值分析待对比模板和坏Page总集,判断待对比模板是否满足容量变化条件,若是则执行S34;若否则执行S33。
通过采用上述技术方案,对应于当前的坏Column总集和/或坏Page总集的错误阈值,相当于是模板库中储存的待对比模板对应的错误阈值更新后的值,通过令当前的坏Column总集和/或坏Page总集与当前的待对比模板进行比较,可以评估错误阈值的改变是否对当前的坏Column总集和/或坏Page总集的生成具有足够大的影响,若该影响较小则说明当前的坏Column总集和/或坏Page总集再进行更新迭代后精度变化较小;同时,若错误阈值过小可能会导致坏Column总集和/或坏Page总集过多,直接影响Flash完成整个分析检测后的有效容量。因此,最终Column总集和/或最终Page总集相当于是取得坏Column总集和/或坏Page总集的精度与Flash的有效容量之间的平衡,通过最终Column总集和最终Page总集可以得到较为精确且满足有效容量需求的坏Block模板。
本发明目的二是提供一种应用于Flash智能分析检测的检测***,具有提高NandFlash分析检测后的有效容量的特点的特点。
本发明的上述发明目的二是通过以下技术方案得以实现的:
一种应用于Flash智能分析检测的检测***,包括,
初始模板建立模块,用于获取Column总集、Page总集,以及包含Column总集和Page总集的Block总集,预设坏Column总集、坏Page总集、可跟随迭代次数更新的错误阈值,以及包含坏Column总集和坏Page总集的初始坏Block模板;
模板更新模块,用于依次交替按照坏页选取策略和坏列选取策略,基于错误阈值从Block总集中依次交替获取坏Page元素和坏Column元素,并依次交替更新坏Page总集和坏Column总集;
模板迭代模块,用于基于对应于不同错误阈值的各个坏Column总集和对应于不同错误阈值的各个坏Page总集,按照坏模板迭代策略更新错误阈值,从各个坏Column总集中获取最终Column总集,并从各个坏Page总集中获取最终Page总集;
最终模板生成模块,用于基于最终Column总集和最终Page总集更新初始坏Block模板,获取最终坏Block模板。
本发明目的三是提供一种智能终端,具有提高Nand Flash分析检测后的有效容量的特点的特点。
本发明的上述发明目的三是通过以下技术方案得以实现的:
一种智能终端,包括存储器和处理器,所述存储器上存储有能够被处理器加载并执行如上述一种检测方法的计算机程序。
本发明目的四是提供一种计算机存储介质,能够存储相应的程序,具有便于实现提高Nand Flash分析检测后的有效容量的特点。
本发明的上述发明目的四是通过以下技术方案得以实现的:
一种计算机可读存储介质,存储有能够被处理器加载并执行如上述一种检测方法的计算机程序。
具体实施方式
相关技术中的Flash的检测分析方法为:
从Flash内的各个Block中抽取Block作为模板Block,基于模板Block预设坏Block模板;
抽取一个模板Block,通过ECC纠错分析模板Block内的所有Column,并获取各个bad Column;
将各个bad Column映射于所有Page,从所有Page中获取排除各个bad Column影响的各个待测Page;
通过ECC纠错分析模板Block内的所有待测Page,并获取各个bad Page;
基于各个bad Column和各个bad Page,更新模板Block的坏Block模板;
用坏Block模板分析读写比较Flash内的各个Block,获取Flash的有效容量。
另外的,上述Flash的检测分析方法中还可以抽取多个Block作为模板Block,最后可以获得多个坏Block模板,使用多个坏Block模板分析读写比较Flash内的各个Block,可以获得更加精准的Flash的有效容量。
针对上述相关技术,发明人认为,在上述检测分析方法获取bad Column时,相当于将所有的Page都作为good Page,即是忽略了bad Page对bad Column的影响。但是,由于Nand Flash的物理性质,有部分Page本身就是bad Page,若不降低这部分bad Page对各个Column检错分析的影响,可能会导致各个Column中会出现虚假的bad Column,而且badColumn和bad Page是相互影响的,这部分虚假的bad Column会导致ECC纠错分析的纠错能力下降,影响下个步骤中对各个Page的分析,最终获取的bad Page的数量也会较多,大幅度降低Nand Flash分析检测后的有效容量。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
下面结合说明书附图1-8对本申请实施例作进一步详细描述。
实施例一
本申请实施例提供一种应用于Flash智能分析检测的检测方法,所述方法的主要流程描述如下:
参照图1,S1、从Flash的所有Block中抽取模板Block,基于模板Block,获取原始Column子集、原始Page子集、包含所有原始Column子集的Column总集、包含所有原始Page子集的Page总集,以及包含Column总集和Page总集的Block总集,预设坏Column总集、坏Page总集、可跟随迭代次数更新的错误阈值,以及包含坏Column总集和坏Page总集的初始坏Block模板,错误阈值包括对应于坏Column总集的Column错误阈值和对应于坏Page总集的Page错误阈值。
Nand Flash在物理上可分为Block、Page和Column,Nand Flash由若干个Block组成,每个Block均由若干个Page组成,每个Page均由若干个Column组成,而每一个Column中的任意一个存储单元均与其中一个Page相关。Nand Flash的地址分为三类:对应于Block的Block Address、对应于Page的Page Address,以及对应于Column的Column Address。对于同一个Block而言,各个Page和各个Column相当于组成了一个矩阵,Page Address和ColumnAddress共同决定了同一个Block内每一个存储单元的地址,其中Page Address相当于坐标系中的x坐标,Column Address相当于坐标系中的y轴坐标。
在步骤S1中,一个原始Column子集指的是一个Column,原始Column子集内的各个元素均可以代表各个存储单元在某一Column中的位置;一个原始Page子集指的是一个Page,原始Page子集内的各个元素均可以代表各个存储单元在某一Page中的位置。Page总集指的是包含所有原始Column子集的总集,相当于包含所有的Column;Page总集指的是包含所有原始Page子集的总集,相当于包含所有的Page;Block总集指的是包含所有Column和所有Page的总集,相当于包含模板Block中的所有存储单元。
坏Column总集指的是包含所有bad Columnolmun的集合,当对应于任意一原始Column子集的Columnolmun被评估为bad Columnolmun时,可基于该原始Column子集生成坏Column元素并加入坏Column总集中;坏Page总集指的是包含所有bad Page的集合,当对应于任意一原始Page子集的Page被评估为bad Page时,可基于该原始Page子集生成坏Page元素并加入坏Page总集中。坏Column总集相当于是一个标出了所有bad Columnolmun的badColumnolmun模板,Flash进行数据存储时会跳过bad Columnolmun模板中的这部分Column上的所有存储单元;同理,坏Page总集相当于是一个标出了所有bad Page的bad Page模板,Flash进行数据存储时会跳过bad Page模板中的这部分Page上的所有存储单元;因此,
在本实施例中,坏Page总集的初始集和坏Column总集的初始集均为空集,坏Page总集和/或坏Column总集均需要通过抽取坏Page元素和/或坏Column元素并更新迭代的方式逐渐变得精确;在其他实施例中,若在分析检测之前可确定个别的bad Page和/或badColumn,可将对应的坏Page元素和/或坏Column元素预先加入坏Page总集和/或坏Column总集中。
Block初始模板中包含坏Column总集和坏Page总集,相当于包含了badColumnolmun模板和bad Page模板,若使用初始坏Block模板去分析读写Flash里面的所有Block,可以评估得到Flash的有效容量。错误阈值在指令纠错中对bad Column和/或badPage进行评估的条件之一,相当于是Column判断为bad Column和/或Page 判断为bad Page的标准,错误阈值的数值大小直接影响坏Column总集和/或坏Page总集内的元素数量。
值得注意的是,错误阈值不是一个确定的绝对值,bad Column和/或bad Page也并没有绝对的界限,错误阈值越大则表示对bad Column和/或bad Page的评估也越严格,最终获得bad Column和/或bad Page的数量会趋向于变小,最终使Flash进行分析检测后的有效容量变大;反之则使获得bad Column和/或bad Page的数量会趋向于变大,最终使Flash进行分析检测后的有效容量变小。
具体的,错误阈值包括有用于评估bad Page的Page错误阈值和用于评估badColumn的Column错误阈值。在本实施例中,通过ECC指令纠错,先将数据写到所有的Page中,然后再读出来进行比较,并统计每一个Page的错误的bit数,然后取所有Page的错误的bit数的平均值作为初始的Page错误阈值;同理,通过ECC指令纠错,统计每一个Column的错误的bit数,取所有Column的错误的bit数的平均值作为初始的Column错误阈值。
参照图1,S2、依次交替按照坏页选取策略和坏列选取策略,基于错误阈值从Block总集中依次交替获取坏Page元素和坏Column元素,并依次交替更新坏Page总集和坏Column总集。
其中,坏页选取策略是从Block总集中获取坏Page元素的方法,而使一包含所有坏Page元素的集合去代替坏Page总集,即是对坏Page总集的更新,相当于更新bad Page模板。坏列选取策略是从Block总集中获取坏Column元素的方法,而使一包含所有坏Column元素的集合去代替坏Column总集,即是对坏Column总集的更新,相当于更新bad Column模板,从而获取更为精确的bad Page模板和/或bad Column模板。
具体的,由于坏页选取策略和坏列选取策略是依次交错进行,更新坏Page总集和坏Column总集也依次交错进行,即是形成了先选取bad Page,更新bad Page模板,再基于当前的bad Page模板去选取bad Column,然后更新bad Column模板的顺序。值得注意的是,由于Nand Flash的物理性质,有部分Page本身就是bad Page,因此先更新bad Page模板,可先将原本就是bad Page的这部分Page选取出,降低这部分Page对bad Column模板更新的影响,提高bad Column模板的精确性。
参照图2,在S2的步骤中,包括:
S21、按照坏列干扰排除策略,基于坏Column总集从Page总集中获取待测Page子集,按照坏页判断策略,基于Page错误阈值依次分析各个待测Page子集,从Block总集中获取坏Page元素,并基于坏Page元素更新坏Page总集。
其中,按照坏列干扰排除策略指的是降低当前的bad Column对本步骤中bad Page的评估的干扰的方法。待测Page子集指的是与其对应的Page总集中需要进行纠错指令检测的存储单元。坏页判断策略指的是通过读写检测待测Page子集的错误数并与Page错误阈值进行比较,来评估对应于该待测Page子集的Page是否为bad Page的方法。
由于坏Column总集中的每一个bad Column内的所有存储单元都已经被评估为在储存数据时需要跳过的存储单元,若这部分存储单元再次参与对Page的分析,则会影响分析结果的准确性,导致bad Page的数量可能会过多;因此,需要先抽取各个Page总集中的待测Page子集,来将降低当前的bad Column对各个Page总集的影响,然后再更新bad Page模板。
参照图3,在S21的步骤中,包括:
S211、将坏Column总集映射于各个原始Page子集,获取各个干扰Page子集。
其中,将坏Column总集映射于原始Page子集,可以获取坏Column总集与原始子集之间的交点,相当于获取bad Column与Page之间的重叠的存储单元。每一个原始Page子集均对应设置有一个干扰Page子集,而干扰Page子集则包含了该原始Page子集内与当前badColumn重叠的所有存储单元。
S212、依次获取各个干扰Page子集在与其对应的各个原始Page子集中的补集,生成各个待测Page子集。
其中,每一个原始Page子集均对应设置有一个干扰Page子集。对于任意一原始Page子集而言,干扰Page子集包含了该原始Page子集中与当前bad Column重叠的存储单元;因此干扰Page子集在该原始Page子集中的补集,即干扰Page子集,则包含了所有受当前bad Column影响较小且需要参与Page分析的存储单元。
S213、按照坏页判断策略,基于Page错误阈值依次分析各个待测Page子集,从Block总集中获取坏Page元素,并基于坏Page元素更新坏Page总集。
其中,坏页判断策略指的是通过分析待测Page子集中的存储单元,来评估对应于待测Page子集的Page的损坏程度的方法,若该Page的损坏程度达到Page错误阈值对应的程度,则需要将该Page评估为bad Page,并基于该Page生成坏Page元素,记录到坏Page总集中。
参照图3,在S213的步骤中,包括:
S2131、按照指令纠错策略,依次获取各个待测Page子集的Page错误值。
其中,指令纠错策略指的是通过ECC指令纠错,先将数据写到待测Page子集的各个存储单元中,然后再读出来进行比较,并统计错误的bit数的方法,ECC指令纠错计算出的bit数的绝对值越大,该待测Page子集的Page错误值也越大。
S2132、基于Page错误阈值和各个Page错误值,依次按照坏Page筛选策略,从各个待测Page子集中选取不满足Page有效条件的待测Page子集作为失效Page子集。
其中,坏Page筛选策略是通过比较Page错误值和Page错误阈值,判断待测Page子集是否满足Page有效条件的方法。若待测Page子集的Page错误值大于等于Page错误阈值,则可将该待测Page子集判断为失效Page子集。
S2133、基于对应于失效Page子集的原始Page子集获取坏Page元素,获取包含所有坏Page元素的集合作为坏Page总集。
其中,每一个失效Page子集对应的待测Page子集均不满足Page有效条件,因此可以将对应于各个失效Page子集的Page评估为bad Page,而基于各个bad Page获取各个坏Page元素,相当于通过各个坏Page元素标记每一个bad Page。将坏Page总集重置为空集后,将所有获取到的坏Page元素加入坏Page总集中,则相当于使当前的坏Page总集包含了所有的bad Page,完成bad Page模板的更新。
值得注意的是,在当前的步骤中,各个Page中不为bad Page的Page会被评估为good Page,good Page的数量应至少为Page总数量的30%。
S22、按照坏页干扰排除策略,基于坏Page总集从Column总集中获取待测Column子集,按照坏列判断策略,基于Column错误阈值依次分析各个待测Column子集,从Block总集中获取坏Column元素,并基于坏Column元素更新坏Column总集。
其中,按照坏页干扰排除策略指的是降低当前的bad Page对本步骤中bad Column的评估的干扰的方法。待测Column子集指的是与其对应的Column总集中需要进行纠错指令检测的存储单元。坏列判断策略指的是通过读写检测待测Column子集的错误数并与Column错误阈值进行比较,来评估对应于该待测Column子集的Column是否为bad Column的方法。
由于坏Page总集中的每一个bad Page内的所有存储单元都已经被评估为在储存数据时需要跳过的存储单元,若这部分存储单元再次参与对Column的分析,则会影响分析结果的准确性,导致bad Column的数量可能会过多,想当于产生了虚假的bad Column;因此,需要先抽取各个Column总集中的待测Column子集,来将降低当前的bad Page对各个Column总集的影响,然后再更新bad Column模板。
参照图4,在S22的步骤中,包括:
S221、将坏Page总集映射于各个原始Column子集,获取各个对应的干扰Column子集。
其中,将坏Page总集映射于原始Column子集,可以获取坏Page总集与原始子集之间的交点,相当于获取bad Page与Column之间的重叠的存储单元。每一个原始Column子集均对应设置有一个干扰Column子集,而干扰Column子集则包含了该原始Column子集内与当前bad Page重叠的所有存储单元。
S222、依次获取各个干扰Column子集在与其对应的各个原始Column子集中的补集,生成各个对应于各个原始Column子集的待测Column子集。
其中,每一个原始Column子集均对应设置有一个干扰Column子集。对于任意一原始Column子集而言,干扰Column子集包含了该原始Column子集中与当前bad Page重叠的存储单元;因此干扰Column子集在该原始Column子集中的补集,即干扰Column子集,则包含了所有受当前bad Page影响较小且需要参与Column分析的存储单元。
S223、按照坏页判断策略,基于Column错误阈值依次分析各个待测Column子集,从Block总集中获取坏Column元素,并基于坏Column元素更新坏Column总集。
其中,坏页判断策略指的是通过分析待测Column子集中的存储单元,来评估对应于待测Column子集的Column的损坏程度的方法,若该Column的损坏程度达到Column错误阈值对应的程度,则需要将该Column评估为bad Column,并基于该Column生成坏Column元素,记录到坏Column总集中。
参照图4,在S223的步骤中,包括:
S2231、按照指令纠错策略,依次获取各个待测Column子集的Column错误值。
其中,指令纠错策略指的是通过ECC指令纠错,先将数据写到待测Column子集的各个存储单元中,然后再读出来进行比较,并统计错误的bit数的方法,ECC指令纠错计算出的bit数的绝对值越大,该待测Column子集的Column错误值也越大。
S2232、基于Column错误阈值和各个Column错误值,依次按照坏Column筛选策略,从各个待测Column子集中选取不满足Column有效条件的待测Column子集作为失效Column子集。
其中,坏Column筛选策略是通过比较Column错误值和Column错误阈值,判断待测Column子集是否满足Column有效条件的方法。若待测Column子集的Column错误值大于等于Column错误阈值,则可将该待测Column子集判断为失效Column子集。
S2233、基于对应于失效Column子集的原始Column子集获取坏Column元素,获取包含所有坏Column元素的集合作为坏Column总集。
其中,每一个失效Column子集对应的待测Column子集均不满足Column有效条件,因此可以将对应于各个失效Column子集的Column评估为bad Column,而基于各个badColumn获取各个坏Column元素,相当于通过各个坏Column元素标记每一个bad Column。将坏Column总集重置为空集后,将所有获取到的坏Column元素加入坏Column总集中,则相当于使当前的坏Column总集包含了所有的bad Column,完成bad Column模板的更新。
值得注意的是,在当前的步骤中,各个Column中不为bad Column的Column会被评估为good Column,good Column的数量应至少为Column总数量的30%。
S3、基于对应于不同Column错误阈值的各个坏Column总集和各个坏Page总集,按照坏模板迭代策略更新Column错误阈值,从各个坏Column总集中获取最终Column总集,并从各个坏Page总集中获取最终Page总集。
其中,通过更新错误阈值的方式,可以多个对应于不同错误阈值的坏Page总集和/或坏Column总集,而通过进行筛选比较判断,可从多个错误阈值中选取足以满足需求的错误阈值,并获取对应于该Page错误阈值的坏Page总集为最终Page总集,获取对应于该Column错误阈值的坏Column总集为最终Column总集,以使最终获得的坏Block模板更加准确。
参照图5,在S3的步骤中,包括:
S31、建立用于存储各个对应于不同的错误阈值的待对比模板的模板库。
其中,待对比模板为当前的bad Page模板和/或bad Column模板在更新前的badPage模板和/或bad Column模板;模板库储存待对比模板用于与当前的bad Page模板和/或bad Column模板进行比较。值得注意的是,待对比模板相当于是最终坏Block模板的候选模板,当待对比模板满足需求条件时,可从待对比模板中获取最终坏Block模板。
S32、按照模板对比策略,判断当前的模板库中完整的错误阈值是否存在满足有效容量条件的最小值,若是则执行S34;若否则执行S33。
其中,按照模板对比策略指的是使当前的bad Page模板和/或bad Column模板与上一个的bad Page模板和/或bad Column模板进行比较,来评估错误阈值更新后产生的影响程度的方法;由于错误阈值越大,Flash分析检测完成后的有效容量会趋向于变小,但错误阈值越大,则bad Page模板和/或bad Column模板的精准度会趋向于变小,因此需要选取满足有效容量的最小的错误阈值;若这个错误阈值未能在当前的步骤中被选取出,应继续更新错误阈值进行迭代,直到满足有效容量条件的最小的错误阈值被成功选取出。值得注意的是,当前的模板库中完整的错误阈值存在满足有效容量条件的最小值,指的是同时存在满足有效容量条件的最小Column错误阈值以及满足有效容量条件的最小Page错误阈值。
参照图5和图6,在S3的步骤中,包括:在S32的步骤中,包括:
S321、判断当前的模板库是否存在待对比模板,若是则执行S322;若否则执行S323。
其中,若当前的模板库中不存在待对比模板,则说明当前的bad Page模板和/或bad Column模板并未经过错误阈值的更新,模板库中也没有可进行对比的模板,无法判断是否满足需求条件。若当前的模板库中存在待对比模板,则需要将当前的bad Page模板和/或bad Column模板与当前的待对比模板进行对比分析。
S322、判断待对比模板是否满足迭代终止条件,若是则执行S34;若否则执行S33。
其中,当待对比模板中的坏Column总集和待对比模板中的坏Page总集同时满足迭代终止条件时,满足有效容量的最小的错误阈值出现,因此可停止错误阈值的更新,并基于判断结果选取最终Column总集和/或最终Page总集。
参照图6和图7,在S322的步骤中,包括:
S3221、预设Column有效阈值,基于Column有效阈值判断当前待对比模板中的坏Column总集是否满足有效容量条件,若是则执行S3222;若否则执行S331。
其中,由于bad Column越多,将数据存储到各个Column时需要跳过的Column也越多,因此需要限定bad Column的总数量,而Column有效阈值指的是bad Column数量的最大值。当坏Column总集中的元素数量大于等于Column有效阈值时,代表当前的bad Column的数量过多,各个Column的有效容量不满足需求,因此需要减少Column错误阈值的数值,并使bad Column模板迭代更新。
S3222、预设Column迭代阈值,基于Column迭代阈值分析待对比模板和坏Column总集,判断待对比模板是否满足容量变化条件,若是则执行S3223;若否则执行S331。
其中,待对比模板内的坏Column总集是当前坏Column总集的上一个坏Column总集;当Column错误阈值变化后,当前坏Column总集内的元素总数与上一个坏Column总集内的元素总数之间的差值,可反映出Column错误阈值的变化对上一个坏Column总集造成的影响,而这个影响越小,则表示Column错误阈值改变对待对比模板更新迭代的意义越小,Column错误阈值还需要进行更新;反之则表示Column错误阈值改变对待对比模板更新迭代的意义越大。Column迭代阈值指的是坏Column总集更新前后的数量变化的最小值,为了使最终获得的bad Column模板更加准确且受Column错误阈值变化的影响更小,需要选取坏Column总集更新前后的数量变化量小于Column迭代阈值的待对比模板作为bad Column模板,因此若坏Column总集更新前后的数量变化量小于Column迭代阈值,则当前的待对比模板满足容量变化条件。
具体的,基于Column迭代阈值分析待对比模板和坏Column总集,判断待对比模板是否满足容量变化条件,若是则执行S3223;若否则执行S331的步骤中,包括:
获取待对比模板内的坏Column总集内的元素总量与当前的坏Column总集内的元素总量之差的绝对值为Column比较值,比较Column比较值和Column迭代阈值,若Column比较值小于Column迭代阈值,则执行S3223;若Column比较值大于等于Column迭代阈值,则执行S331。
S3223、预设Page有效阈值,基于Page有效阈值判断当前待对比模板中的坏Page总集是否满足有效容量条件,若是则执行S3224;若否则执行S332。
其中,此时,较为准确的bad Column模板已经被获取,需要选取较为准确的badPage模板。由于bad Page越多,将数据存储到各个Page时需要跳过的Page也越多,因此需要限定bad Page的总数量,而Page有效阈值指的是bad Page数量的最大值。当坏Page总集中的元素数量大于等于Page有效阈值时,代表当前的bad Page的数量过多,各个Page的有效容量不满足需求,因此需要减少Page错误阈值的数值,并使bad Page模板迭代更新。
S3224、预设Page迭代阈值,基于Page迭代阈值分析待对比模板和坏Page总集,判断待对比模板是否满足容量变化条件,若是则执行S34;若否则执行S332。
其中,待对比模板内的坏Page总集是当前坏Page总集的上一个坏Page总集;当Page错误阈值变化后,当前坏Page总集内的元素总数与上一个坏Page总集内的元素总数之间的差值,可反映出Page错误阈值的变化对上一个坏Page总集造成的影响。Page迭代阈值指的是坏Page总集更新前后的数量变化的最小值,为了使最终获得的bad Page模板更加准确且受Page错误阈值变化的影响更小,需要选取坏Page总集更新前后的数量变化量小于Page迭代阈值的待对比模板作为bad Page模板,因此若坏Page总集更新前后的数量变化量小于Page迭代阈值,则当前的待对比模板满足容量变化条件。
具体的,在基于Page迭代阈值分析待对比模板和坏Page总集,判断待对比模板是否满足容量变化条件,若是则执行S34;若否则执行S332的步骤中,包括:
获取待对比模板内的坏Page总集内的元素总量与当前的坏Page总集内的元素总量之差的绝对值为Page比较值,比较Page比较值和Page迭代阈值,若Page比较值小于Page迭代阈值,则执行S34;若Page比较值大于等于Page迭代阈值,则执行S332。
S323、获取包含当前坏Column总集和当前坏Page总集的待对比模板,并将待对比模板存储到模板库中。
此时,当前的模板库中不存在待对比模板,当前的bad Page模板为第一次更新获取的bad Page模板,当前的bad Column模板也为第一次更新获取的bad Column模板,因此需要将当前的bad Page模板和当前的bad Page模板bad Column模板作为待对比模板加入模板库中。
参照图6,S33、基于判断结果更新错误阈值,基于坏Column总集和坏Page总集更新待对比模板,并存储进模板库中,并返回S2。
其中,由于错误阈值包括有Column错误阈值和Page错误阈值,因此需要基于判断结果判断是当前的Column错误阈值不为满足有效容量条件的最小值,或是Page错误阈值不为满足有效容量条件的最小值;而在更新完成Column错误阈值和/或Page错误阈值后,需要将当前的坏Column总集和当前的坏Page总集同时作为新的待对比模板存储进模板库中,此时旧的待对比模板被当前的坏Column总集和当前的坏Page总集代替。
参照图6和图7,在S33的步骤中,包括:
S331、预设Column更新值,获取Column更新值与Column错误阈值之差的绝对值作为Column错误阈值,将当前的坏Column总集更新至待对比模板中,并返回S211。
其中,Column错误阈值更新的过程是Column错误阈值逐渐减少的过程,Column更新值指的是Column错误阈值每更新一次需要减去的数值。当Column错误阈值更新完后,则将当前的坏Column总集取代待对比模板中的坏Column总集,相当于将当前的bad Column模板作为新的待对比模板,等待与后续更新的bad Column模板进行比较。Column错误阈值和bad Column模板均会一直更新,直到满足要求的较为准确的bad Column模板出现。
S332、预设Page更新值,获取Page更新值与Page错误阈值之差的绝对值作为Page错误阈值,将当前的坏Page总集更新至待对比模板中,并返回S211。
此时,较为准确的bad Column模板已经被获取,需要通过更新Page错误阈值,来选取较为准确的bad Page模板。Page更新值指的是Page错误阈值每更新一次需要减去的数值,当Page错误阈值更新完后,则将当前的坏Page总集代替待对比模板中的坏Page总集,相当于将当前的bad Page模板作为新的待对比模板,等待与后续更新的bad Page模板进行比较。
S34、基于判断结果生成最终Column总集和最终Page总集。
此时,待对比模板中的坏Column总集对应的Column错误阈值为满足有效容量条件的最小值,因此获取待对比模板中的坏Column总集作为最终Column总集;同时,待对比模板中的坏Page总集对应的Page错误阈值为满足有效容量条件的最小值,因此获取待对比模板中的坏Page总集作为最终Page总集。
S4、基于最终Column总集和最终Page总集更新初始坏Block模板,获取最终坏Block模板,使用最终坏Block模板分析读写所有Block,获取Flash的有效容量。
此时,最终Column总集代表的bad Column模板为最终的较为准确的bad Column模板,最终Page总集代表的bad Page模板为最终的较为准确的bad Page模板。因此,将最终Column总集代替初始坏Block模板中的坏Column总集,将最终Page总集代替初始坏Block模板中的坏Page总集,然后获取初始坏Block模板作为最终坏Block模板,可获取较为准确的坏Block模板,使用最终坏Block模板分析读写所有Block后,可较为精确的获取Flash的有效容量。
本实施例的实施原理为:在Nand Flash中包含有多个Block,其中一个Block相当于一个矩阵,Page相当于矩阵汇中的行,而Column相当于矩阵中的列;bad Page模板可标出若干个Page,在数据储存时,需要跳过这部分Page;bad Column模板可标出若干个Column,在数据储存时,需要跳过这部分Column。在分析检测Nand Flash中,先预设一个初始的badPage模板和一个初始的bad Column模板,且此时bad Page模板和bad Column模板均为空集,然后从各个Page中获取bad Page并更新bad Page模板,再从各个Column中获取badColumn并更新bad Column模板。这个依次更新bad Page模板和bad Column模板的过程,相当于先假定没有bad Column的情况下更新bad Page模板,然后再基于当前的bad Page模板更新bad Column模板,其中,由于上述过程从一开始就获取了bad Page,因此可以先将各个Page中由于物理性质就已经损坏的部分Page先获取出来,减少这部分Page对各个Column的评估的干扰,进而提高bad Column模板的准确率,减少虚假bad Column的产生,降低虚假bad Column过多导致Nand Flash分析检测后的有效容量过低的风险。
另一方面, bad Page模板和bad Column模板的依次更新形成了坏Block模板的更新,且在本实施例中,坏Block模板会发生多次更新迭代,而bad Page模板的更新与badColumn模板的更新会相互影响,从一开始就提高bad Column模板的准确率的方式可以在后续的迭代更新中提高坏Block模板整体的准确率。
由于bad Page的好坏和bad Column的好坏均没有绝对明确的界限,即bad Page和bad Column均没有一个完全准确的标准,因此需要预设错误阈值并使错误阈值更新,然后从多个错误阈值中获取相对准确的错误阈值,作为判断bad Page和/或bad Column好坏的相对标准。错误阈值包括Page错误阈值和Column错误阈值,Page错误阈值和/或Column错误阈值每更新一次,坏Block模板就发生一次迭代。Page错误阈值的更新可使bad Page模板发生迭代,通过对比当前的bad Page模板和迭代前的bad Page模板,可以评估迭代前的badPage模板是否受Column错误阈值影响较小且满足有效容量需求,最终获取较为准确的badPage模板;同理,通过Column错误阈值的更新可使bad Column模板发生迭代。
获取了最终的bad Page模板和最终的bad Column模板之后,可以获取最终坏Block模板,而通过最终坏Block模板写读比较所有的Block之后,可以获取当前的NandFlash的有效容量。经过多次迭代后的坏Block模板较为精确,一方面减少虚假bad Column的产生,提高了Nand Nand Flash分析检测后的有效容量,另一方面可使在Nand Flash中保存的数据更加稳定。
实施例二:
参照图8,在一个实施例中,提供一种应用于Flash智能分析检测的检测***,与上述实施例一中的检测方法相对应,应用于对Nand Flash的有效容量的分析检测,该***包括初始模板建立模块1、模板更新模块2、模板迭代模块3以及最终模板生成模块4。各功能模块详细说明如下:
初始模板建立模块1,用于获取Column总集、Page总集,以及包含Column总集和Page总集的Block总集,预设坏Column总集、坏Page总集、可跟随迭代次数更新的错误阈值,以及包含坏Column总集和坏Page总集的初始坏Block模板;
模板更新模块2,用于依次交替按照坏页选取策略和坏列选取策略,基于错误阈值从Block总集中依次交替获取坏Page元素和坏Column元素,并依次交替更新坏Page总集和坏Column总集;
模板迭代模块3,用于基于对应于不同错误阈值的各个坏Column总集和对应于不同错误阈值的各个坏Page总集,按照坏模板迭代策略更新错误阈值,从各个坏Column总集中获取最终Column总集,并从各个坏Page总集中获取最终Page总集;
最终模板生成模块4,用于基于最终Column总集和最终Page总集更新初始坏Block模板,获取最终坏Block模板。
实施例三:
在一个实施例中,提供了一种智能终端,其包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中存储器存储训练模型中的训练数据、算法公式以及滤波机制等。处理器用于提供计算和控制能力,处理器执行计算机程序时实现以下步骤:
S1、获取Column总集、Page总集,以及包含Column总集和Page总集的Block总集,预设坏Column总集、坏Page总集、可跟随迭代次数更新的错误阈值,以及包含坏Column总集和坏Page总集的初始坏Block模板;
S2、依次交替按照坏页选取策略和坏列选取策略,基于错误阈值从Block总集中依次交替获取坏Page元素和坏Column元素,并依次交替更新坏Page总集和坏Column总集;
S3、基于对应于不同错误阈值的各个坏Column总集和对应于不同错误阈值的各个坏Page总集,按照坏模板迭代策略更新错误阈值,从各个坏Column总集中获取最终Column总集,并从各个坏Page总集中获取最终Page总集;
S4、基于最终Column总集和最终Page总集更新初始坏Block模板,获取最终坏Block模板。
实施例四:
在一个实施例中,提供了一种计算机可读存储介质,其存储有能够被处理器加载并执行上述小面积指纹图像特征提取方法的计算机程序,计算机程序被处理器执行时实现以下步骤:
S1、获取Column总集、Page总集,以及包含Column总集和Page总集的Block总集,预设坏Column总集、坏Page总集、可跟随迭代次数更新的错误阈值,以及包含坏Column总集和坏Page总集的初始坏Block模板;
S2、依次交替按照坏页选取策略和坏列选取策略,基于错误阈值从Block总集中依次交替获取坏Page元素和坏Column元素,并依次交替更新坏Page总集和坏Column总集;
S3、基于对应于不同错误阈值的各个坏Column总集和对应于不同错误阈值的各个坏Page总集,按照坏模板迭代策略更新错误阈值,从各个坏Column总集中获取最终Column总集,并从各个坏Page总集中获取最终Page总集;
S4、基于最终Column总集和最终Page总集更新初始坏Block模板,获取最终坏Block模板。
所述计算机可读存储介质例如包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random AColumnColumness Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
具体实施方式的实施例均为本申请的较佳实施例,并非依此限制本申请的保护范围,故:凡依本申请的结构、形状、原理所做的等效变化,均应涵盖于本申请的保护范围之内。