Nandflash内生成softbit的方法、系统、主机以及储存介质
技术领域
本申请涉及Nandflash的领域,尤其是涉及Nandflash内生成softbit的方法、系统、主机以及储存介质。
背景技术
Nandflash是一种高密度的基于闪存(flash)技术的Nandflash,有容量大,速度快的优点,但Nandflash特别是新制程的Nandflash也存在误码率较高,可靠性差,寿命短的问题。
在实际应用中就需要Nandflash控制器需要应用ECC(错误检查和纠正)来保证数据的完整性,ECC主要应用两种算法BCH与LDPC。
LDPC主要的纠错方式有两种:1、硬判决译码,即从Nandflash读取之前写入Nandflash的编码数据,直接进行解码纠错;2、软判决译码,软判决译码不仅需要读取之前写入Nandflash的编码数据,还需要Nandflash提供基于当前数据的soft bit数据,LDPC根据softbit可以优先翻转更大几率错误bit,可以大幅提高LDPC算法的纠错能力与纠错时间。
softbit数据实际是标识Nandflash存储单元那些更可能出错;为提升Nandflash的数据的完整性Nandflash本身也提供了一些技术手段,例如重读技术(readretry)softbit数据等。
针对上述中的相关技术,发明人认为:不是所有的Nandflash都提供softbit数据,一些不能提供softbit的Nandflash不能进行软判决译码,对此情况有待进一步改善。
发明内容
为了实现在不能提供softbit的Nandflash中生成softbit,本申请提供Nandflash内生成softbit的方法、系统、主机以及储存介质。
第一方面,本申请提供的Nandflash内生成softbit的方法,采用如下的技术方案:Nandflash内生成softbit的方法,包括如下步骤:
在控制器内设置预设区域;
在预设区域内写入一组原始数据组,其中原始数据组内包括有多个原始数据,并且每个原始数据为基于Nandflash在预设基准电压下读取到每个bit的数值;
在控制器中建立Table,并将原始数据组写入Table内,其中Table用于存放数据;
获取调节数据操作:调节Nandflash的基准电压且调节后的基准电压为调节电压,读取原始数据组每个bit基于调节电压下的第一调节数据组,并将第一调节数据组写入Table,其中,第一调节数据组包括多个原始数据对应的调节数据;
多次执行获取调节数据操作并获取第二调节数据组;
获取对比数据:将原始数据与对应的调节数据依次进行判定是否一致,基于判定结果获取对比数据,其中对比数据依据判定结果有两种;
获取对比数据组:将原始数据与对应的第二调节数据组内的每个调节数据进行判定操作判定是否一致,基于多次判定结果得到原始数据对应的对比数据组,并写入Table内;对比数据组趋向判定操作:读取原始数据的对比数据组,并对比数据组中的两个对比数据数值进行频数比较,并依据频数比较进行原始数据的稳定性判定;
获取softbit:依据原始数据的稳定性判定获取原始数据的softbit,并将softbit写入Table中。
通过采用上述技术方案,在没有softbit的Nandflash,先在控制器内预设一个用于储存数据的预设区域,并且在预设区域写入一组原始数据组,随后再控制器内建立Table,并且将原始数据组内的每一个原始数据写入Table内,原始数据组为在同一基准电压下读取到bit组的数值;然后可以调节Nandflash的基准电压,便可以读取原始数据组每个原始数据在基准电压调节后的调节数据并记录为第一调节数据组,再将第一调节数据组写入Table内,并且每个调节电压与原始数据对应;然后在多次调节Nandflash的基准电压,可以获取到每个原始数据的多个调节数据,并将同一个原始数据的多个调节数据记录为第二调节数据组,将第二调节数据组写入Table中;然后执行获取对比数据操作,将原始数据与对应的第二调节数据组的所有调节数据进行判定操作,并依据读取多次判定操作的对比数据记录为对比数据组,并且对比数据依据判定结果有两种,每一个原始数据对应的对比数据组均写入Table内;在执行对比数据组趋向判定操作,记录同一对比数据组内两个判定结果读取到的频数,对比数据组中的两个对比数据数值进行频数比较,并依据频数比较结果进行原始数据的稳定性判定,最后进行获取softbit的操作,基于读取每个原始数据的稳定性判定结果数据获取每个原始数据softbit,从而读取原始数据的softbit组并写入Table内,Nandflash便可以通过读取Table内原始数据的softbit进行LDPC软纠错。
优选的,在所述获取调节数据操作中,包括:
多次调节基准电压:多次调节为多次增大基准电压以及多次减小基准电压;
依次读取多次增大以及多次减小基准电压的每个bit的调节且记录为第二调节数据组,并将第二数据组写入Table。
通过采用上述技术方案,在多次调节Nandflash的基准电压时,调节后的一部分基准电压大于预设基准电压,另一部分小于预设基准电压,并且读取每次调节基准电压后的调节数据并记录为第二调节数据组写入Table内。
优选的,在原始数据与调节数据判定操作步骤中,包括:
若是原始数据与调节数据一致,表示原始数据的数值未变化,则得到对比数据数值为0,读取对比数据并将写入Table;否则得到对比数据数值为1,表示原始数据的数值变化,读取对比数据组并写入Table。
通过采用上述技术方案,在调节基准电压后,将读取到每个bit的调节数据与原始数据进行对比并且根据对比结果得到对比数据,在每次原始数据与调节数据进行对比判定时,若是调节数据相较于原始数据未变化,此时对比数据记录为0,并写入在Table中;若是调节数据相较于原始数据有所变化,此时对比数据记录为1,并写入在Table中;每次调节基准电压后,重复进行对比原始数据与读取的调节数据,记录为第二调节数据组写入Table内。
优选的,在判断原始数据与调节数据是否变化时,判断公式为:C=A(xor)B,其中,A为读取到的原始数据的数值,B为读取到的调节数据的数值,C为对比数据的数值。
通过采用上述技术方案,在读取到调节数据的数值后,将原始数据的数值与调节数据的数值代入判断公式中,通过判断公式便可以获得对比数据的数值,记录每一原始数据的第二调节数据组写入Table内。
优选的,在所述原始数据的稳定性判定中,还包括:
读取对比数据组中出现对比数据为0的频数n、出现对比数据为1的频数m;
依据频数n和频数m判定结果进行原始数据的稳定性判定。
通过采用上述技术方案,在获取到每个原始数据的对比数据组后,便依次读取每个原始数据对应对比数据组中对比数据两个数值的频数,在将一个原始数据的对比数据组依次读取完毕之后,便可以获得出现对比数据为0的频数为n、出现对比数据为1的频数为m,对频数n和频数m进行原始数据的稳定性判定。
优选的,在原始数据的稳定性判定步骤中,具体为:
比较n和m,若是n>m,则判定该bit为稳定,并记录softbit为0;
否则判定该bit为不稳定,并记录softbit为1。
通过采用上述技术方案,在需要每个原始数据进行稳定性判定时,便读取频数n与频数m,并将n与m进行,其中若是n>m,则判定该bit为稳定,并记录softbit为0;否则判定该bit为不稳定,并记录softbit为1,并且将原始数据的softbit写入Table内。
优选的,依次对原始数据组内的每一个原始数据依次进行多次调节基准电压、原始数据判定操作、原始数据的稳定性判定,读取每个原始数据的softbit并写入Table中。
通过采用上述技术方案,通过对原始数据组内的每一个原始数据进行多次调节基准电压操作,便可以会将每一个原始数据的第二调节数据组写入Table内;再依次进行原始数据判定操作、原始数据的稳定性判定从而得到每个原始数据的softbit。
第二方面,本申请提供一种Nandflash内生成softbit的系统,包括
存储模块,控制器内建立的存储区域,原始数据组内每个原始数据为基于Nandflash在预设基准电压下读取到每个bit的数值;
表格建立模块,用于在控制器内建立用于写入数据的Table;
基准电压调节模块,将Nandflash的基准电压进行调节,读取原始数据组每个bit基于调节电压下的第一调节数据组,并将第一调节数据组写入Table中,其中,第一调节数据组包括多个原始数据对应的调节数据;
多次执行模块,用于多次执行基准电压调节模块,读取多次调节基准电压对应的调节数据并记录为第二调节数据组写入Table中;
获取对比数据模块,将原始数据与对应的第二调节数据组内的每个调节数据进行判定操作判定,基于多次判定结果获取原始数据对应的对比数据组,并写入Table内;
获取对比数据组模块,重复执行获取对比数据模块,获取原始数据的全部对比数据并记录为对比数据写入Table中;
频数获取模块,用于读取每个原始数据对应对比数据组中两个数值出现的频数;
频数比较模块,将原始数据的两个对比数据数值的频数,并将每个原始数据的比较结果记录为softbit写入Table中。
第三方面,本申请提供一种主机,包括Nandflash和处理器,Nandflash上存储有能够被处理器加载并执行如权利要求1至7中任一项所述方法的计算机程序。
第四方面,本申请提供一种计算机可读存储介质,存储有能够被处理器加载并执行如权利要求1至7中任一项所述方法的计算机程序。
综上所述,本申请包括以下至少一种有益技术效果:在没有softbit的Nandflash,先在控制器内预设一个用于储存数据的预设区域,并且在预设区域写入一组原始数据组,随后再控制器内建立Table,并且将原始数据组内的每一个原始数据写入Table内,原始数据组为在同一基准电压下读取到bit组的数值;然后可以调节Nandflash的基准电压,便可以读取原始数据组每个原始数据在基准电压调节后的调节数据并记录为第一调节数据组,再将第一调节数据组写入Table内,并且每个调节电压与原始数据对应;然后在多次调节Nandflash的基准电压,可以获取到每个原始数据的多个调节数据,并将同一个原始数据的多个调节数据记录为第二调节数据组,将第二调节数据组写入Table中;然后执行获取对比数据操作,将原始数据与对应的第二调节数据组的所有调节数据进行判定操作,并依据读取多次判定操作的对比数据记录为对比数据组,并且对比数据依据判定结果有两种,每一个原始数据对应的对比数据组均写入Table内;在执行对比数据组趋向判定操作,记录同一对比数据组内两个判定结果读取到的频数,对比数据组中的两个对比数据数值进行频数比较,并依据频数比较结果进行原始数据的稳定性判定,最后进行获取softbit的操作,基于读取每个原始数据的稳定性判定结果数据获取每个原始数据softbit,从而读取原始数据的softbit组并写入Table内,Nandflash便可以通过读取Table内原始数据的softbit进行LDPC软纠错。
附图说明
图1是本申请实施例一中生成softbit的流程框图。
图2是本申请实施例二中生成softbit的模块框图。
附图标记说明:
1、存储模块;2、表格建立模块;3、基准电压调节模块;4、多次执行模块;5、获取对比数据模块;6、获取对比数据组模块;7、频数获取模块;8、频数比较模块。
具体实施方式
以下结合附图1-2,对本申请作进一步详细说明。
实施例一:
本申请实施例公开Nandflash内生成softbit的方法,参照图1,包括如下步骤:
在控制器内设置预设区域,其中,预设区域用于提供存储数据的空间。
在预设区域内写入一组原始数据组,其中,原始数据组内包括有多个原始数据,并且每个原始数据为基于Nandflash在预设基准电压下读取到每个bit的数值;在本实施例中,原始数据组包括四个原始数据,分别为bit1=0、bit2=0、bit3=1、bit4=1。
在控制器中建立Table,并将原始数据组写入Table内,Table用于存放数据。
获取调节数据操作:调节Nandflash的基准电压且调节后的基准电压为调节电压,另外在本实施例中,调节基准电压是指,使用Nandflash提供的功能接口如:readretryoperation、read offset operation,read level shift opetation等来调整Nandflash内部的存储单元数据判定基准。
读取原始数据组每个bit基于调节电压下的第一调节数据组,并将第一调节数据组写入Table,其中,第一调节数据组包括多个原始数据调节一次基准电压对应的调节数据,参照Table中信息,四个原始数据在第一次调节基准电压的第一调节数据组内的调节数据依次为bit1=0、bit2=1、bit3=0、bit4=1。
多次执行获取调节数据操作并获取第二调节数据组,多次调节基准电压:多次调节为多次增大基准电压以及多次减小基准电压;依次读取多次增大以及多次减小基准电压的每个bit的调节数据,且记录为第二调节数据组,并将第二调节数据组写入Table,参照Table中信息,原始数据在多次调节基准电压的第二调节数据组内的调节数据依次为bit1=0、bit1=0、bit1=0、bit1=0、bit1=0。
获取对比数据:将原始数据与对应的调节数据依次进行判定是否一致,基于判定结果获取对比数据,其中对比数据依据判定结果有两种,具体的判定步骤为:若是原始数据与调节数据一致,表示原始数据的数值未变化,则得到对比数据数值为0,读取对比数据并将写入Table;否则得到对比数据数值为1,表示原始数据的数值变化,读取对比数据组并写入Table;
将原始数据与调节数据采用异或的逻辑进行运算判定便可以获取对比数据,判定公式为C=A(xor)B,其中,A为读取到的原始数据的数值,B为读取到的调节数据的数值,C为对比数据的数值,将读取到的A和B代入判定公式中,获取对比数据的数值C。
获取对比数据组:将原始数据与对应第二调节数据组内的每个调节数据进行判定操作判定是否一致,便可以获取到每次调节基准电压后原始数据的对比数据,获取到一个原始数据基于多次判定结果对应的对比数据组,并将对比数据组写入Table内,参照Table中信息,bit1对应对比数据组内的对比数据依次为0、0、0、0、0。
对比数据组趋向判定操作:读取原始数据的对比数据组,并对比数据组中的两个对比数据数值进行频数比较,并依据频数比较进行原始数据的稳定性判定。
频数比较:依次读取原始数组对应的对比数据组内的对比数据,并记录对比数据为1的频数n、记录出现对比数据为0的频数m,依据频数n和频数m判定结果进行原始数据的稳定性判定,参照Table中信息,bit1得对比数据组中n=5,m=0。
原始数据的稳定性判定,将频数n与频数m进行比较,若是n>m,则判定该bit为稳定,并记录softbit为0;否则判定该bit为不稳定,并记录softbit1。
对原始数据组内的每一个原始数据依次多次调节基准电压、原始数据判定操作、原始数据的稳定性判定,读取每个原始数据的softbit获取softbit组并写入Table中。
获取softbit:依据原始数据的稳定性判定获取原始数据的softbit,并将softbit写入Table中。
另外在获取对比数据组过程中,还可以每次进行调节基准电压后,便可以将第一调节数据组内的调节数据与对应原始数据先进行获取对比数据操作,便可以获取每一个原始数据在每次调节基准电压后对应的对比数据,并写入Table。
通过多调节基准电压操作以及相应的获取对比数据同时写入Table内,采用上述过程,同样可以获取每一个原始数据的对比数据组。
本实施例中,可以采用上述方法的部分步骤生成softbit,也可以直接将读取的对比数据作为原始数据的softbit,具体步骤如下:
参照Table1,先在控制器内预设一个用于储存数据的预设区域,并且在预设区域写入一组原始数据组,随后在控制器内建立Table1,并且将原始数据组内的每一个原始数据写入Table1内,原始数据组为在同一预设基准电压下bit组的数值,在本实施例中,原始数据组包括bit1=1、bit2=1、bit3=0、bit4=0。
调节Nandflash的基准电压,读取原始数据组每个原始数据在基准电压调节后的调节数据并记录为第一调节数据组,再将第一调节数据组写入Table1内;将原始数据与第一调节数据组总对应的调节数据进行判定操作获取对比数据,并且对比数据依据判定结果有两种。
在本实施例中,可以通过判定公式C=A(xor)B进行,在调节基准电压的获取对比数据的计算过程,以bit1为例,其中A=1、B=1,即是C=1(xor)1=0,对比数据为0,同时softbit为0;重复上述操作,得到bit2、bit3、bit4的softbit,并记录在Table1内。
Table1
实施例二:
在一个实施例中,提供一种Nandflash内生成softbit的系统,参照图2,包括
存储模块1,控制器内建立的存储区域,原始数据组内每个原始数据为基于Nandflash在预设基准电压下读取到每个bit的数值;
表格建立模块2,用于在控制器内建立用于写入数据的Table;
基准电压调节模块3,将Nandflash的基准电压进行调节,读取原始数据组每个bit基于调节电压下的第一调节数据组,并将第一调节数据组写入Table中,其中,第一调节数据组包括多个原始数据对应的调节数据;
多次执行模块4,用于多次执行基准电压调节模块3,读取多次调节基准电压对应的调节数据并记录为第二调节数据组写入Table中;
获取对比数据模块5,将原始数据与对应的第二调节数据组内的每个调节数据进行判定操作判定,基于多次判定结果获取原始数据对应的对比数据组,并写入Table内;
获取对比数据组模块6,重复执行获取对比数据模块,获取原始数据的全部对比数据并记录为对比数据写入Table中;
频数获取模块7,用于读取每个原始数据对应对比数据组中两个数值出现的频数;
频数比较模块8,将原始数据的两个对比数据数值的频数,并将每个原始数据的比较结果记录为softbit写入Table中。
实施例三:
在一个实施例中,提供一种主机,包括Nandflash和处理器,Nandflash上存储有能够被处理器加载并执行Nandflash内生成softbit的方法的计算机程序。
实施例四:
在一个实施例中,提供一种计算机可读存储介质,存储有能够被处理器加载并执行Nandflash内生成softbit的方法的计算机程序。
本申请实施例Nandflash内生成softbit的方法的实施原理为:
先在控制器内预设一个用于储存数据的预设区域,并且在预设区域写入一组原始数据组,随后再控制器内建立Table,并且将原始数据组内的每一个原始数据写入Table内,原始数据组为在同一基准电压下bit组的数值,在本实施例中,参照Table,原始数据组包括bit1=0、bit2=0、bit3=1、bit4=1。
然后可以调节Nandflash的基准电压,读取原始数据组每个原始数据在基准电压调节后的调节数据并记录为第一调节数据组,再将第一调节数据组写入Table内,并且每个调节数据与原始数据对应。
再多次调节Nandflash的基准电压,在多次调节基准电压后,原始数据总共经过奇数次调节基准电压,一个原始数据可以获得奇数个调节数据,并将同一个原始数据的多个调节数据记录为第二调节数据组,将第二调节数据组写入Table中;在本实施例中,对基准电压进行5次调节,并且以原始数据组的bit1作为示例,并且bit1在五次调节基准电压后读取的调节数据依次为0、0、0、0、0。
然后执行获取对比数据操作,将原始数据与对应的第二调节数据组的所有调节数据进行判定操作,并依据读取多次判定操作的对比数据记录为对比数据组,并且对比数据依据判定结果有两种,每一个原始数据对应的对比数据组均写入Table内;在本实施例中,可以通过判定公式C=A(xor)B进行,在第一次调节基准电压的获取对比数据的计算过程,其中A=0、B=0,即是C=0(xor)0=0,重复上述操作,便可以得到五次调节基准电压对应的5个对比数据,并记录在Table内。
再执行对比数据组趋向判定操作,记录同一对比数据组内两个判定结果读取到的频数,对比数据组中的两个对比数据数值进行频数比较,依次读取一个原始数据对应的对比数据,并记录对比数据出现的频数,并依据频数比较结果进行原始数据的稳定性判定,最后进行获取softbit的操作;例如在本实施例中bit1的对比数据组内,C=0的频数n=5、C=1的频数n=0,此时将频数n与频数m进行比较,n=5>m=0,便可以获取bit的softbit为0,并表示bit1稳定。
最后基于读取每个原始数据的稳定性判定结果数据获取每个原始数据softbit,从而读取原始数据的softbit组并写入Table内,在本实施例的Table中,bit1的softbit为0、bit2的softbit为1、bit3的softbit为1、bit4的softbit为0。
Table
在Nandflash的使用期间,控制器便可以通过写入读取Table内原始数据对应的softbit进行LDPC软纠错。
以上均为本申请的较佳实施例,并非依此限制本申请的保护范围,故:凡依本申请的结、形状、原理所做的等效变化,均应涵盖于本申请的保护范围之内。