用于闪存的数据恢复方法与流程

文档序号:25543607发布日期:2021-06-18 20:40
本公开涉及半导体集成电路的非易失存储器领域,尤其涉及一种用于闪存的数据恢复方法。
背景技术
::闪存尤其是nand闪存是非挥发存储器的一种,被广泛的应用于手机、笔记本电脑、云存储等存储领域,闪存的基本功能是保存数据,保证写入的数据和读出的数据的一致性是存储系统的基本要求。差错控制编码(ecc,errorcorrectingcode)可以纠正读出数据的错误,是保证写入数据和读出数据的一致性,提高存储系统可靠性的重要手段。但差错控制编码也有一定的纠错范围,如果读出数据的原始误码率较高,将会超出差错控制编码的纠错能力,无法正确的恢复出写入的数据。在数据存储过程中,闪存会受到数据保持噪声的影响,当数据在闪存中存储一段时间后,存储在闪存储存单元的电荷将会泄漏,闪存的阈值电压分布态将会向阈值电压较小的一侧偏移,如果使用在数据存储初期使用的读电压进行读取操作,将会出现读出数据的误码率超过差错控制编码纠错能力的问题。技术实现要素:(一)要解决的技术问题针对于现有技术问题,本公开提出一种用于闪存的数据恢复方法,用于至少部分解决上述技术问题。(二)技术方案本公开提供一种用于闪存的数据恢复方法,包括:采用预设读电压从所述闪存中读取数据;计算所述数据对应的校验节点出错率;根据所述校验节点出错率,计算读电压调整步长;根据所述读电压调整步长调整所述预设读电压,采用调整后的预设读电压从所述闪存中读取数据,并重复所述计算所述数据对应的校验节点出错率的操作至所述根据所述读电压调整步长调整所述预设读电压的操作,直至所述校验节点出错率最小;选择最小的校验节点出错率对应的读电压从所述闪存中读取数据,以进行数据恢复。可选地,所述方法还包括:判断当前所述校验节点出错率是否小于预设阈值;若是,停止所述根据所述读电压调整步长调整所述预设读电压,采用调整后的预设读电压从所述闪存中读取数据的操作,以当前读取的数据进行数据恢复。可选地,所述方法还包括:判断当前所述校验节点出错率是否大于上一次所述校验节点出错率,若是,停止所述根据所述读电压调整步长调整所述预设读电压,采用调整后的预设读电压从所述闪存中读取数据的操作,以上一次读取的数据进行数据恢复。可选地,其中,所述计算所述数据对应的校验节点出错率包括:根据公式:rc=sum(h·dk)/m计算所述校验节点出错率,其中,rc为所述校验节点出错率,h为奇偶校验矩阵,dk为读出的一个码字的数据,m为校验节点的数量。可选地,所述根据所述校验节点出错率,计算读电压调整步长包括:基于所述闪存的阈值电压分布态,建立所述校验节点出错率与所述误码率的函数关系以及所述误码率与所述读电压调整步长的函数关系;根据所述校验节点出错率与所述误码率的函数关系、所述误码率与所述读电压调整步长的函数关系,建立所述校验节点出错率与所述读电压调整步长的函数关系;根据所述校验节点出错率与所述读电压调整步长的函数关系,计算所述读电压调整步长。可选地,所述建立所述校验节点出错率与所述误码率的函数关系以及所述误码率与所述读电压调整步长的函数关系包括:计算所述预设读电压对应的误码率,其中,所述计算所述预设读电压对应的误码率包括:根据公式:计算所述误码率,其中,pe为误码率,i为阈值电压分布态的序号,为第i个预设读电压,μi为所述闪存的第i个阈值电压分布态的均值,μi-1为所述闪存的第i-1个阈值电压分布态的均值,为均值为0,方差为σi-1的阈值电压分布态对应的高斯分布的分布函数,为均值为0,方差为σi的高斯分布的分布函数。可选地,其中,所述第i个预设读电压与第i个最佳读电压存在以下关系:其中,为第i个最佳读电压,为所述第i个预设读电压与所述第i个最佳读电压之间的读电压调整步长;所述第i个最佳读电压通过下式计算:其中,μi为第i个阈值电压分布态的均值,σi为第i个阈值电压分布态的方差,μi-1为第i-1个阈值电压分布态的均值,σi-1为第i-1个阈值电压分布态的方差。可选地,所述方法还包括:将所述校验节点出错率与所述读电压调整步长的函数关系来量化为查找表,通过查找所述查找表得到所述读电压调整步长。可选地,所述方法还包括:建立第i个预设读电压与所述第i个最佳读电压之间的读电压调整步长和第j个预设读电压与所述第j个最佳读电压之间的读电压调整步长之间的函数关系;基于函数关系,根据第i个预设读电压与所述第i个最佳读电压之间的读电压调整步长来计算第j个预设读电压与所述第j个最佳读电压之间的读电压调整步长。可选地,选择最小的校验节点出错率对应的读电压从所述闪存中读取数据,以进行数据恢复包括:采用差错控制编码对读取的数据进行数据恢复。(三)有益效果本公开提供一种用于闪存的数据恢复方法,至少具备以下有益效果:本公开的数据恢复方法能够基于校验节点出错率动态调整读电压调整的步长,找到最佳读电压所需的额外读次数较少,从而减小重读纠错算法中最佳读电压搜索所需要的时间。本公开通过校验节点出错率对读出数据的原始误码率做预测,在ecc译码之前无需ecc的译码过程就能够预判读出的数据能否被ecc译码器正确纠正。当预判读出的数据能够被ecc纠正时,停止重读纠错操作并进行ecc译码;当预判读出的数据无法被ecc纠正时,继续进行重读纠错操作对最佳读电压进行搜索,直到找到最佳读电压或者预判读出的数据能够被ecc纠错。也即该方法减少不必要的ecc译码,从而减小数据恢复所需要的时间。附图说明图1示意性示出了本公开实施例提供的用于闪存的数据恢复方法的流程图;图2示意性本公开一实施例提供的根据所述校验节点出错率计算读电压调整步长的方法流程图;图3示意性示出了本公开实施例提供的nand闪存的阈值电压分布态图;图4示意性示出了本公开实施例提供的第i个阈值电压偏移量和第j个阈值电压偏移量之间为线性函数关系曲线图;图5示意性示出了本公开实施例提供的tlcnand闪存的阈值电压分布态图图6示意性示出了本公开实施例提供的校验节点出错率与读电压调整步长的函数关系曲线图;图7示意性示出了本公开又一实施例提供的用于闪存的数据恢复方法的流程图;图8示意性示出了本公开又一实施例提供的用于闪存的数据恢复方法的流程图;图9示意性示出了本公开实施例提供的校验节点出错率和误码率之间的单调函数关系曲线图;图10示意性示出了本公开又一实施例提供的用于闪存的数据恢复方法的流程图;图11示意性示出了本公开实施例提供的用于闪存的数据恢复系统的结构图。具体实施方式为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。图1示意性示出了本公开一实施例提供的用于闪存的数据恢复方法的流程图。如图1所示,该方法例如可以包括操作s101~s105。在操作s101,采用预设读电压从闪存中读取数据。该预设读电压一般设置为初始读电压,也即数据保持时间为0的最佳读电压。所指读出的数据可以指经过ecc编码后写入nand闪存中的数据,在存储系统进行读操作时读出的数据。在操作s102,计算数据对应的校验节点出错率。在操作s103,根据校验节点出错率及误码率,计算读电压调整步长。该读电压调整步长也可称作判决距离,指将初始读电压调整至最佳读电压过程中每次调整的电压数值。在操作s104,根据读电压调整步长调整预设读电压,采用调整后的预设读电压从闪存中读取数据,并返回操作s102。返回操作s102后,继续执行操作s102~s104,直至校验节点出错率最小。在操作s105,选择最小的校验节点出错率对应的读电压从闪存中读取数据,以进行数据恢复。上述实施例提供的数据恢复方法,根据读出数据的校验节点出错率来计算判决距离,并将判决距离作为读电压调整的步长对读电压进行调整,对读电压调整后采用新的读电压读出数据,并计算新的读电压的读出数据的校验节点出错率,并根据此校验节点出错率计算判决距离,循环往复此过程,并选取所对应的校验节点出错率最小的读电压作为最佳读电压,从而可以动态调整读电压调整的步长,减少找到最佳读电压所需的额外读次数,进而减小重读纠错算法中最佳读电压搜索所需要的时间。根据本公开的实施例,由于nand闪存是以一个页(page)为一个最小的读取单位,在实际工程应用中一个页上可能包含多个码字,本实例中采用一个页上各码字校验节点出错率的平均值作为一个页(page)的校验节点出错率。具体的,一种计算校验节点出错率的方法例如可以为:根据公式:rc=sum(h·dk)/m计算校验节点出错率,其中,rc为校验节点出错率,h为奇偶校验矩阵,dk为读出的一个码字的数据,是读出的一个页(page)数据的一部分,m为校验节点的数量,也是h矩阵的总行数。图2示意性本公开一实施例提供的根据所述校验节点出错率计算读电压调整步长的方法流程图。图3示意性示出了本公开实施例提供的闪存的阈值电压分布态图。根据本公开的实施例,如图2所示,该方法例如可以包括操作s201~s203。在操作s201,基于闪存的阈值电压分布态,建立校验节点出错率与误码率的函数关系以及误码率与读电压调整步长的函数关系。一般情况下,nand闪存的误码率和读电压有关,如图3所示,其中,第i个初始读电压,一般是数据保持时间为0的最佳读电压,第i个最佳读电压,其为读出数据误码率最小的读电压,也是经过一段数据保持时间后的两个阈值电压分布态的交点,pi为第i个阈值电压分布态,pi-1第i-1个阈值电压分布态,为第i个阈值电压分布态的阈值电压偏移量,为第i-1个阈值电压分布态的阈值电压偏移量,为第i个预设读电压与第i个最佳读电压之间的读电压调整步长。虚线部分可以表示闪存的初始阈值电压分布态,当数据在闪存中存储一段时间后,存储在闪存储存单元的电荷将会泄漏,闪存的阈值电压分布态将会向阈值电压较小的一侧偏移,也即移动到实线部分所表示的阈值电压分布态。图3中阴影部分的面积即为nand闪存读出数据的误码率,阴影部分的面积可以用对阈值电压分布态做积分来求解。因此,两个阈值电压分布态之间的误码率,也叫第i个读电压下的误码率。在建立函数关系的过程中需要计算预设读电压对应的误码率。请参阅图3,一种计算预设读电压对应的误码率的方法可以为:根据公式:计算误码率,其中,pe为误码率,i为阈值电压分布态的序号,为第i个预设读电压,μi为闪存的第i个阈值电压分布态的均值,μi-1为闪存的第i-1个阈值电压分布态的均值,为均值为0,方差为σi-1的阈值电压分布态对应的高斯分布的分布函数,高斯分布的分布函数是高斯分布的概率密度的积分,为均值为0,方差为σi的高斯分布的分布函数。其中,第i个预设读电压与第i个最佳读电压存在以下关系:为第i个最佳读电压,为所述第i个预设读电压与所述第i个最佳读电压之间的读电压调整步长;第i个最佳读电压通过下式计算:其中,μi为第i个阈值电压分布态的均值,σi为第i个阈值电压分布态的方差,μi-1为第i-1个阈值电压分布态的均值,σi-1为第i-1个阈值电压分布态的方差。具体的,第i个最佳读电压计算公式的推导过程为:将图3所示的阈值电压分布态建模成高斯分布,两个高斯分布的交点就是第i个最佳读电压,用方程可以表示为:求解上述方程,当:σi-1≠σi可得到:而,在实际nand闪存中,由于:σi-1≈σi因此,本实施例使用如下公式进行简化:由此,第i个最佳读电压的表示方法可以表示为:进一步地,建立校验节点出错率与误码率的函数关系:在一个ldpc的校验矩阵h中,h中第i行中为1的bit组成了第i个奇偶校验方程,同时也是tanner图中的第i个校验节点,第i个校验方程出错的概率rci可以用如下公式来计算:其中,pe是ecc码字中单个比特出错的概率,同时也是读出数据的原始误码率,di是h矩阵的第i行中1的个数。设h是一个m行n列的矩阵,因此,由该h矩阵的零空间所构成的ecc中的校验方程的个数为m(也就是在tanner图中校验节点的个数是m),那么这m个校验方程的平均错误概率,即为校验节点出错率,可以用如下公式计算:特例地,如果h矩阵每一行中1的个数都是相同的,也即d1=d2=…=dm=d,那么校验节点出错率可以简化为:基于上述计算,即可得到校验节点出错率与误码率的函数关系。建立误码率与读电压调整步长的函数关系:在本实施例中,如图4所示,第i个阈值电压偏移量和第j个阈值电压偏移量之间为线性函数关系,具体如下式:第i个读电压调整步长(判决距离)和第i个阈值电压偏移量之间为线性函数关系,具体如下式:根据上述两个线性关系,计算得到误码率与读电压调整步长的函数关系为:同理,如图5所示,对于tlcnand闪存来说,对于lowpage的误码率与读电压调整步长的函数关系:对于middlepage的误码率与读电压调整步长的函数关系:对于,upperpage的误码率与读电压调整步长的函数关系:在操作s202,根据校验节点出错率与误码率的函数关系、误码率与读电压调整步长的函数关系,建立校验节点出错率与读电压调整步长的函数关系。在本公开一实施例中,建立的校验节点出错率与读电压调整步长的函数关系如图6所示。在操作s203,,根据校验节点出错率与读电压调整步长的函数关系,计算读电压调整步长。可以将校验节点出错率与读电压调整步长的函数关系来量化为查找表(lookuptable,lut),通过查找该查找表得到读电压调整步长。基于上述校验节点出错率、误码率以及函数关系的计算方法,可保证每页数据对应的校验节点出错率及误码率的准确率,进而保证数据恢复精准度。根据本公开的实施例,在选择最小的校验节点出错率对应的读电压从闪存中读取数据进行数据恢复时,采用差错控制编码对读取的数据进行数据恢复。图7示意性示出了本公开又一实施例提供的用于闪存的数据恢复方法的流程图。如图7所示,本实施例提供的数据恢复方法还可以包括操作s701~s702。在操作s701,建立第i个预设读电压与第i个最佳读电压之间的读电压调整步长和第j个预设读电压与第j个最佳读电压之间的读电压调整步长之间的函数关系。在操作s702,基于函数关系,根据第i个预设读电压与第i个最佳读电压之间的读电压调整步长来计算第j个预设读电压与第j个最佳读电压之间的读电压调整步长。例如,对于tlcnand闪存来说,将调整tlcnand闪存的7个读电压,具体地,对于lowpage,需要根据计算对于middlepage,需要根据计算和该方法可基于一读电压调整步长快速调整其它读电压调整步长。图8示意性示出了本公开又一实施例提供的用于闪存的数据恢复方法的流程图。如图8所示,本实施例提供的数据恢复方法还可以包括操作s801~s802。在操作s801,判断当前校验节点出错率是否小于预设阈值。若当前校验节点出错率小于预设阈值,则执行操作s802。根据本公开的实施例,如图9所示,校验节点出错率和误码率之间为单调函数关系,因此,可以采用校验节点出错率代替误码率,使用校验节点出错率的大小来判断读出的数据能否被ecc纠正,当读出数据的校验节点出错率小于某个值时,读出的数据错误可以被ecc纠正。例如,在一具体示例中,校验节点出错率小于0.2338可以被ecc硬判决译码纠正,校验节点出错率小于0.3749,可以被ecc软判决译码纠正。在操作s802,停止根据读电压调整步长调整预设读电压,采用调整后的预设读电压从闪存中读取数据的操作,以当前读取的数据进行数据恢复。本实施例提供的用于闪存的数据恢复方法是在前述根据校验节点出错率确定判决距离从而进行读电压调整的方法的基础上,加入对读出数据能否被ecc纠错的判断,当判断读出的数据能够被ecc纠正时,停止读电压调整的操作,提高系统性能。图10示意性示出了本公开又一实施例提供的用于闪存的数据恢复方法的流程图。如图10所示,本实施例提供的数据恢复方法还可以包括操作s1001~s1002。在操作s1001,判断当前校验节点出错率是否大于上一次校验节点出错率。当前校验节点出错率大于上一次校验节点出错率,表明当前读取数据的误码率相对一上一次在升高,上一次读取数据的读电压为最佳读电压,因此,在当前校验节点出错率大于上一次校验节点出错率,执行操作s1002。在操作s1002,停止根据读电压调整步长调整预设读电压,采用调整后的预设读电压从闪存中读取数据的操作,以上一次读取的数据进行数据恢复。本实施例提供的用于闪存的数据恢复方法是在前述根据校验节点出错率确定判决距离从而进行读电压调整的方法的基础上,加入对读出数据能否被ecc纠错的判断,当判断读出的数据能够被ecc纠正时,停止读电压调整的操作,提高系统性能。图11示意性示出了本公开实施例提供的用于闪存的数据恢复系统的结构图。如图11所示,该系统主要包括:校验节点出错率计算电路(cal_cner),用于计算计算数据对应的校验节点出错率。根据校验节点出错率查找判决距离的查表电路(fun_cner),用于根据校验节点出错率及误码率,计算读电压调整步长。第i个判决距离和第j个判决距离的函数关系查表电路(cal_rvdd),用于根据第i个预设读电压与第i个最佳读电压之间的读电压调整步长来计算第j个预设读电压与第j个最佳读电压之间的读电压调整步长。装置实施例未尽细节之处请参见方法实施例部分,此处不再赘述。需要说明的是,校验节点也叫校验方程,是ecc的校验矩阵的每一行中为1的位置所组成的奇偶校验方程。本公开实施例中的校验节点出错率的概念,既包括校验节点出错率本身的概念,也包括校验方程的概念,如果使用校验方程和判决距离的函数关系来进行读电压调整,均应包含在本公开的保护范围之内。以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1