掌桥专利:专业的专利平台
掌桥专利
首页

误码率平衡方法及装置,读取方法及装置

文献发布时间:2023-06-19 11:29:13


误码率平衡方法及装置,读取方法及装置

技术领域

本发明涉及非易失存储器技术领域,特别涉及误码率平衡方法及装置,读取方法及装置。

背景技术

NAND闪存是用于SSD和存储卡的一种非易失性存储体系结构。

典型的NAND包括多个块(Block),每个Block又由多个物理页(Page)组成,每个Page对应着一个字线(Word line,WL),由多个存储单元(最小存储粒度)构成。物理页是读写的单元,也就是向NAND闪存中写入或读出数据必须以页为操作单位进行。

其中,TLCNAND闪存是NAND的一种,TLCNAND的一个存储单元可存储3比特,这3比特分别属于不同的逻辑页:快页(Upper Page)、中页(Middle Page、慢页(Lower Page)。也即,一物理页对应三个虚拟页。

这3比特的格雷码有多个分布态(E至P7)如下表1所示。

表1

在将数据写入物理页之前,会对原始数据进行编码存储。当Upper Page、MiddlePage、Lower Page中任一页数据的误码率上升到纠错能力上限时,就需要将Upper Page、Middle Page、Lower Page中的数据读出进行纠错,纠错后再重新编码写入。

Upper Page、Middle Page、Lower Page存在误码率不平衡的问题,请参见图1,在Upper Page达到纠错上限时,当Upper page误码率上升到纠错能力上限时,就需要进行读出纠错再写入的操作,而此时Middle page和Lower Page的误码率还较低,纠错能力被浪费。

发明内容

有鉴于此,本发明实施例提供误码率平衡方法及装置,读取方法及装置,以实现对不同逻辑页的误码率的平衡。

为实现上述目的,本发明实施例提供如下技术方案:

一种误码率平衡方法,包括:

获取J块原始数据;J为逻辑页的总数;

采用第一预设编码算法对j块原始数据进行编码,得到j个第一码字;所述j块原始数据对应第一逻辑页组中的j页逻辑页;其中,j为小于J的正整数;所述第一码字长度为L;

采用第二预设编码算法对J-j块原始数据进行编码,得到J-j个第二码字;所述J-j块原始数据对应第二逻辑页组中的J-j页逻辑页;所述第二码字长度为S;S小于L;所述j个第一码字前S比特的数据和所述J-j个第二码字,对应同一存储单元的数据为一个比特单元;每一比特单元包括J比特的数据;

根据比特单元的分布态,确定第一比特单元组;所述第一比特单元组包括:与同一沟道上G个连续的存储单元相对应的G个比特单元,并且,所述G个比特单元的分布态组合为第一分布态组合集中的分布态组合;G为自然数;

对所述第一比特单元组中对应所述J-j页逻辑页的数据,执行修改操作以平衡各逻辑页的误码率,得到J-j个第三码字;其中,在执行所述修改操作后,所述第一比特单元组被修改为第二比特单元组;所述第二比特单元组中的G个比特单元的分布态组合为第二分布态组合集中的分布态组合;

采用第三预设编码算法对所述J-j个第三码字进行编码,得到J-j个第四码字;所述第四码字长度为L;

向非易失存储器写入所述j个第一码字和J-j个第四码字。

一种读取方法,用于读取采用上述的方法写入的数据;

所述读取方法包括:

获取所述非易失存储器中与各逻辑页对应的J块数据;J为逻辑页的总数;

基于通用的对数似然概率LLR值,对第一逻辑页组中j页逻辑页所对应的j块数据,采用与所述第一预设编码算法相对应的译码算法进行解码和纠错处理,得到所述j块原始数据;

基于通用的LLR值,对第二逻辑页组中J-j页逻辑页所对应的J-j块数据,采用与所述第三预设编码算法相对应的译码算法进行解码和纠错处理,得到所述J-j个第三码字;

预测所述J-j个第三码字中因执行所述修改操作而发生改变的数据所在的比特位置;预测出的比特位置为不可靠比特位置,其他比特位置为可靠比特位置;

将不可靠比特位置的LLR值设置为0;

将数据取值为1的可靠比特位置所对应的LLR值为-10,将数据取值为0的可靠比特位置所对应的LLR值为10;

基于各比特位置的LLR值,采用与所述第二预设编码算法相对应的译码算法对所述J-j个第三码字进行解码和纠错处理,得到J-j块原始数据。

一种误码率平衡装置,包括:

第一获取单元,用于获取J块原始数据;J为逻辑页的总数;

第一编码单元,用于:

采用第一预设编码算法对j块原始数据进行编码,得到j个第一码字;所述j块原始数据对应第一逻辑页组中的j页逻辑页;其中,j为小于J的正整数;所述第一码字长度为L;

第二编码单元,用于:

采用第二预设编码算法对J-j块原始数据进行编码,得到J-j个第二码字;所述J-j块原始数据对应第二逻辑页组中的J-j页逻辑页;所述第二码字长度为S;S小于L;所述j个第一码字的前S比特的数据和所述J-j个第二码字的S比特的数据中,对应同一存储单元的数据为一个比特单元;每一比特单元包括J比特的数据;

根据比特单元的分布态,确定第一比特单元组;所述第一比特单元组包括:与同一沟道上G个连续的存储单元相对应的G个比特单元,并且,所述G个比特单元的分布态组合为第一分布态组合集中的分布态组合;G为自然数;

对所述第一比特单元组中对应所述J-j页逻辑页的数据,执行修改操作以平衡各逻辑页的误码率,得到J-j个第三码字;其中,在执行所述修改操作后,所述第一比特单元组被修改为第二比特单元组;所述第二比特单元组中的G个比特单元的分布态组合为第二分布态组合集中的分布态组合;

采用第三预设编码算法对所述J-j个第三码字进行编码,得到J-j个第四码字;所述第四码字长度为L;;

向非易失存储器写入所述j个第一码字和J-j个第四码字。

一种读取装置,读取采用上述的方法写入的数据;

所述读取装置包括:

第二获取单元,用于:

获取所述非易失存储器中的J块数据;J为逻辑页的总数;

第一译码单元,用于:

基于通用的对数似然概率LLR值,对第一逻辑页组中j页逻辑页所对应的j块数据,采用与所述第一预设编码算法相对应的译码算法进行解码和纠错处理,得到所述j块原始数据;

第二译码单元,用于:

基于通用的对数似然概率LLR值,对第二逻辑页组中J-j页逻辑页所对应的J-j块数据,采用与所述第三预设编码算法相对应的译码算法进行解码和纠错处理,得到所述J-j个第三码字;

预测所述J-j个第三码字中因执行所述修改操作而发生改变的数据所在的比特位置;预测出的比特位置为不可靠比特位置,其他比特位置为可靠比特位置;

将不可靠比特位置的LLR值设置为0;

将数据取值为1的可靠比特位置所对应的LLR值为-10,将数据取值为0的可靠比特位置所对应的LLR值为10;

基于各比特的LLR值,采用与所述第二预设编码算法相对应的译码算法对所述J-j个第三码字进行解码和纠错处理,得到J-j块原始数据。

可见,在本发明实施例中,对一部分原始数据进行了一级编码,得到j个第一码字。而对其他的原始数据采用了二级编码方式:在第一级编码过程后得到J-j个第二码字,对由J-j个第二码字和j个第一码字中的第一比特单元组中对应J-j页逻辑页的数据,执行了修改操作以平衡各逻辑页的误码率。在执行修改操作后,第一比特单元组被修改为第二比特单元组,而第二比特单元组中的G个比特单元的分布态组合为第二分布态组合集中的分布态组合,第一比特单元组中G个比特单元的分布态组合则为第一分布态组合集中的分布态组合。第二分布态组合集中的分布态组合与第一分布态组合集中的分布态组合相比,可在一定程度上平衡各逻辑页的误码率,进而推迟了读出纠错再写入的操作的发生时间。

需要说明的是,本发明在第二码字的基础上引入了修改错误得到第三码字,再次编码得到第四码字。随着时间的推移,第四码字中的比特会发生其他错误。在读取数据时,在对J-j页逻辑页所对应的J-j块数据进行了第一次译码后会纠正其他错误,得到J-j个第三码字。

译码是基于LLR值进行纠错处理的。在第三码字中,除了修改错误并无其他错误,因此可预测修改错误所在的比特位置,将其作为不可靠位置,其他的比特位置作为可靠比特位置,因为其他比特位置不存在错误,因此,可将其LLR值设置为10或-10,而不可靠比特位置的LLR值可设置为0。

在第二次译码过程中,不再使用通用的LLR值进行纠错处理,而是基于上述设置的LLR值进行纠错,以实现更准确的纠错效果,纠正本发明实施例在编码时引入的修改错误。

附图说明

图1为误码率不平衡示意图;

图2a为本发明实施例提供的横向扩散效应示意图;

图2b为本发明实施例提供的存储单元间相互影响示意图;

图2c为本发明实施例提供的固态驱动器结构示意图;

图3a、图4a为本发明实施例提供的误码率平衡方法的示例性流程;

图3b、图4b为本发明实施例提供的读取方法的示例性流程;

图3c为本发明实施例提供的置信度区间示意图;

图5为本发明实施例提供的误码率平衡装置的结构示意图;

图6为本发明实施例提供的读取装置的结构示意图。

具体实施方式

NAND闪存分为SLC(单层次存储单元)NAND闪存、MLC(双层存储单元)NAND闪存以及TLC(Triple-Level Cell,三层存储单元)NAND闪存等。

TLCNAND的一个存储单元可存储3比特,这3比特分别属于不同的逻辑页:快页(Upper Page)、中页(Middle Page)、慢页(Lower Page)。也即,一物理页对应三个虚拟页。

请参见图2a,TLCNAND闪存采用“共享电荷存储层(Share Silicon)”结构,该结构在简化了工艺制程的同时带来了横向扩散(Lateral spreading)效应:若对一个块进行数据写入,那么对于同一个沟道上相邻字线(Word Line)所对应的存储单元,如果存储的电荷差距大,会导致明显的横向扩散效应,进而导致对应存储单元的误码率的明显上升。

以P6态为例,图2b示出了在同一沟道上相邻字线分别是E到P7态下误码率的情况。可以看到如果相邻WL存储的信息是E,则P6的误码率明显比相邻WL存储的信息是P7的情况高很多。

请参见图2b,根据统计当WL(n)(字线n)存储的是P6态时,若WL(n+1)存储的信息是E态,则P6的误码率相比于相邻是P7态的误码率来说要高得多。同时,因为编程顺序(从WL(0)开始编程),WL(n+1)对WL(n)的影响比WL(n-1)要大。

由于高态(例如P7态)的阈值分布在存储过程中会因横向扩散效应和纵向脱陷导致更严重的展宽和更快的漂移速度,这造成高态分布态之间的交叠更加严重。若以上表1中的格雷码编码方式进行数据写入,P7和P6态交叠产生的错误是由Upper Page承担,P6和P5态交叠产生的错误是由Middle Page承担。这些高态产生的错误往往较其他态交叠产生的错误要多,从而导致TLC中三个逻辑页的错误增长速度不同,进而导致逻辑页间误码率的不平衡。

为解决上述问题,本发明提供误码率平衡方法及装置,以实现对不同逻辑页的误码率的平衡。

请参见图2c,上述装置具体可为固态驱动器(Solid State Disk或Solid StateDrive,简称SSD)中的ECC(Error Checking and Correcting,错误检查和纠正)模块,或为SSD中的控制器(包括ECC模块和读写控制器)。

来自PC(个人电脑)的待写入NAND的数据,会经ECC模块处理后,由读写控制器写入NAND。而在需要读取数据时,可由读写控制器从NAND中读取数据,交由ECC模块进行译码后,再提供给PC。

图3a示出了上述误码率平衡方法的一种示例性流程,其可包括:

S0:获取J块原始数据。

J为逻辑页的总数,是正整数。以SLC为例,J=1,以MLC为例,J=2,以TLC为例,J=3。每一块原始数据的长度为K。

S1:采用第一预设编码算法对j块原始数据进行编码,得到j个第一码字。

在编码时,是按照逻辑页分别编码的。

在本步骤中的j块原始数据,对应第一逻辑页组中的j页逻辑页(其中,j为小于J的正整数)。

第一预设编码算法可为BCH(Bose-Chaudhuri-Hocquenghem)编码算法、LDPC(low-density parity-check,LDPC)编码算法等。

在一个示例中,可使用LDPC(9872,8192)编码算法进行编码。

需要说明的是,LDPC(9872,8192)中,9872为码字长度,也即L;8192为码字中数据信息的长度;LDPC(9872,8192)校验信息长度为1680。

前述提及的数据块的长度K,与编码算法支持的数据信息的长度相等,若采用LDPC(9872,8192),K取值为8192。

S2:采用第二预设编码算法对J-j块原始数据进行编码,得到J-j个第二码字。

步骤S1和S2是并列执行的。

J-j块原始数据对应第二逻辑页组中的J-j页逻辑页。本文后续将介绍第一逻辑页组和第二逻辑页组如何确定。

第二码字的长度为S,小于第一码字的长度L。

在一个示例中,可使用LDPC(8962,8192)编码算法进行编码。则S=8962。

可取j个第一码字的前8962比特与J-j个第二码字进行观察,一共8962*J个比特。

在这8962*J个比特中,对应同一存储单元的数据为一个比特单元,每一比特单元包括J比特的数据。

这J比特数据对应一个分布态,一个比特单元中的J比特分别属于J页逻辑页。

对于TLCNAND闪存,J=3,也即,一个比特单元包括3个比特分别属于不同的逻辑页:Upper Page、Middle Page和Lower Page,一个比特单元所包含的比特数,正好是一个TLCNAND存储单元可存储的容量。

在TLC模式下,一个比特单元的3比特的格雷码分布态(E至P7)如下表1所示。

表1

第二码字可以DP

S3:根据比特单元的分布态,确定第一比特单元组。

第一比特单元组包括:与位于同一沟道上G个连续的存储单元相对应的G个比特单元,并且,这G个连续的比特单元所对应的分布态组合与第一分布态组合集相匹配。

G为正整数。以G=3为例,则每一第一比特单元组包括与位于同一沟道上的3个连续的存储单元相对应的3个比特单元,并且,这3个比特单元所对应的分布态组合为第一分布态组合集中的分布态组合。

以图2a为例,在同一沟道上字线WL(n+3)、WL(n+2)、WL(n+1)所对应的存储单元可构成一个存储单元组,该存储单元组对应的比特单元组可称为单元组n+2;在同一沟道上字线WL(n+2)、WL(n+1)、WL(n)所对应的存储单元可构成一个存储单元组,该存储单元组对应的比特单元组可称为单元组n+1;同理,在同一沟道上字线WL(n+1)、WL(n)、WL(n-1)所对应的存储单元亦可构成一个存储单元组,该存储单元组对应的比特单元组可称为单元组n。

假定,单元组n所对应的分布态组合为第一分布态组合集中的分布态组合,那么,单元组n即为第一比特单元组。

本文后续会详细介绍第一分布态组合集。

S4:对第一比特单元组中对应上述J-j页逻辑页的数据,执行修改操作以平衡各逻辑页的误码率,得到J-j个第三码字。

从比特单元组角度观察,修改后,第一比特单元组(例如前述的单元组n)被修改为第二比特单元组,第二比特单元组所对应的分布态组合为第二分布态组合集中的分布态组合。本文后续会详细介绍第二分布态组合集。

从码字角度观察,对应上述J-j页逻辑页的数据,实际上是J-j个第二码字中的数据,因此,本步骤是对J-j个第二码字中的数据进行修改操作,得到J-j个第三码字。第三码字可用DalgPalg表示。

S5:采用第三预设编码算法对上述J-j个第三码字进行编码,得到J-j个第四码字。

第四码字可用DalgPalgP2表示,第四码字长度为L,与第一码字相同。

第二预设编码算法可为BCH编码算法、LDPC编码算法等。

在一个示例中,第三预设编码算法具体可为LDPC(9872,8962)。

S6:向非易失存储器写入上述j个第一码字和J-j个第四码字。

第一码字和第四码字长度相同,会被一起写入NAND闪存中。可按照现有的写入方式写入,在此不作赘述。

步骤S5可由图2c中的读写控制器执行。

也即,在本实施例中,有些原始数据块进行了一次编码,有些原始数据块则进行了二次编码,并在编码过程中对数据进行了修改。

与之相对应,请参见图3b,在将第三码字存入非易失存储器,可采用如下方式读取写入的数据:

S7:获取非易失存储器中与各逻辑页对应的J块数据。

若前述第一码字和第四码字长度为9872,则获取的数据长度可为9872*J。

需要说明的是,随着时间的推移,码字中的比特会发生其他错误,所以获取的数据与存入时并不相同,可以D′

S8:基于通用的LLR(对数似然概率)值,对第一逻辑页组中j页逻辑页所对应的j块数据,采用与前述第一预设编码算法相对应的译码算法进行解码和纠错处理,得到j块原始数据。

在编码过程中,将对应第一逻辑页组的原始数据采用第一预设编码算法进行了编码,因此,在本步骤中,对与第一逻辑页组对应的数据,采用相应的译码算法进行解码和纠错处理,得到j块原始数据。

现对LLR进行简单介绍。

LLR体现的是置信度与可靠性。在译码时,会使用LLR值进行纠错处理。

以单层单元闪存(SLC)为例简单介绍LLR,SLC为NAND闪存架构,其每一个存储单元储存一位数据,因此其存储单元中的数据的分布态为E态和P态。

以SLC来说,会对数据读取3次,每次使用不同的电压,将读出的数据分成4块区域,如图3c所示,4块区域为E_L、E_H、P_L、P_H(其中,E表示E态,P表示P态,L表示低置信度,H表示高置信度)。根据SLC的LLR定义:

不同区域的LLR对应不同的LLR,体现的是不同的置信度与可靠性。

如下表2所示,在E_H区域的比特数据,为0的概率(P0)为0.01,为1的概率(P1)为0.99,在E_L区域的比特数据,为0的概率为0.12,为1的概率为0.88;在P_L区域的比特数据,为0的概率为0.8,为1的概率为0.2;在P_H区域的比特数据,为0的概率为0.99,为1的概率为0.01。

表2

对于TLC,其读取数据时的读取次数更多,所分区域也更多。TLC的通用LLR值可通过查表得到,在此不作赘述。

S9:基于通用的LLR值,对第二逻辑页组中J-j页逻辑页所对应的J-j块数据,采用与前述第三预设编码算法相对应的译码算法进行解码和纠错处理,得到J-j个第三码字。

步骤S9是与前述步骤S5相对应的。

在编码过程中,将对应第二逻辑页组的原始数据进行了二次编码,所以译码时也要进行二次译码,第一次译码是得到第三码字。

S10:预测J-j个第三码字中因执行上述修改操作而发生改变的数据所在的比特位置。

预测出的比特位置为不可靠比特位置,其他比特位置为可靠比特位置。

S11:将不可靠比特位置的LLR值设置为0,将数据取值为1的可靠比特位置所对应的LLR值为-10,将数据取值为0的可靠比特位置所对应的LLR值为10。

在第三码字中,除了修改错误并无其他错误,因此可预测修改错误所在的比特位置,将其作为不可靠比特位置,其他的比特位置为可靠比特位置(因为不会出错)。因此,在本实施例中,可将可靠比特位置的LLR值设置为10或-10,而不可靠比特位置的LLR值可设置为0。

S12:基于各比特位置的LLR值,采用与上述第二预设编码算法相对应的译码算法对上述J-j个第三码字进行解码和纠错处理,得到J-j块原始数据。

这J-j块原始数据与步骤S8中得到的j块原始数据,即为译码的最终结果,可向PC输出。

可见,在本发明实施例中,对一部分原始数据进行了一级编码,得到j个第一码字。而对其他的原始数据采用了二级编码方式:在第一级编码过程后得到J-j个第二码字,对由J-j个第二码字和j个第一码字中的第一比特单元组中对应J-j页逻辑页的数据,执行了修改操作以平衡各逻辑页的误码率。在执行修改操作后,第一比特单元组被修改为第二比特单元组,而第二比特单元组中的G个比特单元的分布态组合为第二分布态组合集中的分布态组合,第一比特单元组中G个比特单元的分布态组合则为第一分布态组合集中的分布态组合。第二分布态组合集中的分布态组合与第一分布态组合集中的分布态组合相比,可在一定程度上平衡Upper Page、Middle Page、Lower Page的误码率,进而推迟了读出纠错再写入的操作的发生时间。

需要说明的是,本发明在第二码字的基础上引入了修改错误得到第三码字,再次编码得到第四码字。随着时间的推移,第四码字中的比特会发生其他错误。在读取数据时,在对J-j页逻辑页所对应的J-j块数据进行了第一次译码后会纠正其他错误,得到J-j个第三码字。

译码是基于LLR值进行纠错处理的。在第三码字中,除了修改错误并无其他错误,因此可预测修改错误所在的比特位置,将其作为不可靠位置,其他的比特位置作为可靠比特位置,因为其他比特位置不存在错误,因此,可将其LLR值设置为10或-10,而不可靠比特位置的LLR值可设置为0。

下面以G=3为例,重点介绍如何确定第一分布态组合集和第二分布态组合集。

本申请是基于数据修改评估模型来确定第一分布态组合集和第二分布态组合集的,其建立步骤如下:

步骤1:定义某沟道上三个相邻的WL所对应的三个存储单元为一个存储单元组。

步骤2:计算码字组中各分布态组合所对应的存储单元组的误码率:

这里的码字组包括上述j个第一码字前S比特的数据和上述J-j个第二码字。

以某一分布态组合ABD为例,其对应的各存储单元组中的三个存储单元均分别以WL(n+1)、WL(n)、WL(n-1)表示,WL(n)分别与WL(n+1)和WL(n-1)相邻。

ABD也可分别称为第一至第三分布态。

在一个示例中,可采用如下计算公式计算ABD在预定时刻t的误码率Error Rate(ABD,t):

Error Rate(ABD,t)=Error Num(ABD,t)/TotalNum(ABD)。

预定时刻t为预估的数据保持时间,本领域技术人员可根据实际情况灵活设计时刻t,在此不作赘述。

Error Num(ABD,t)表示t时刻分布态组合为ABD但发生错误的存储单元组的数量,Total Num(ABD)表示分布态组合为ABD的存储单元组的总数量。

假定要将ABD修改为ACD。其中,ABD可视为初始分布态组合,ACD可视为目标分布态组合。以TLC为例,A、B、C、D中的每一个分布态为E至P7态中的任一个,但ABD与ACD是不同的,也即B与C是不同的,C也可称为第四分布态。

同理,ACD在预定时刻t的误码率Error Rate(ACD,t)=Error Num(ACD,t)/TotalNum(ACD)。

其他分布态在预定时刻的误码率计算方式与之相类似,在此不作赘述。

步骤3:计算修改前后WL(n)的误码率变化:

WL(n)的误码率变化=Error Rate(ABD,t)-Error Rate(ACD,t)

也即,WL(n)的误码率变化为初始分布态组合和目标分布态组合间的差值(可称为第一误码率差值)。

步骤4:计算修改前后WL(n-1)的误码率变化:

计算修改前后WL(n-1)的误码率变化时,是将WL(n-1)作为中间存储单元的。

在修改前,以WL(n-1)作为中间存储单元的存储单元组的分布态可表示为:XAB,分布态X表示任一分布态。

XAB可视为一个分布态组合集(可称为第三分布态组合集),以TLC模式为例,以0对应E态,1对应P1态,以此类推,则XAB可包括:0AB、1AB、2AB、3AB、4AB、5AB、6AB、7AB。

在修改后,以WL(n-1)作为中间存储单元的存储单元组的分布态可表示为:XAC。

同理,XAC可视为一个分布态组合集(可称为第四分布态组合集),以TLC模式为例,则XAC可包括:0AC、1AC、2AC、3AC、4AC、5AC、6AC、7AC。

设修改前WL(n-1)的误码率表示为Error Rate aver(AB,t)或ERaver1,则

Error Rate aver(AB,t)=average(∑

也即,将0AB、1AB、2AB、3AB、4AB、5AB、6AB、7AB在预定时刻t的误码率相加再取平均值作为Error Rate aver(AB,t)。

设修改后WL(n-1)的误码率表示为Error Rate aver(AD,t)或ERaver2,则

Error Rate aver(AD,t)=average(∑

也即,将0AC、1AC、2AC、3AC、4AC、5AC、6AC、7AC在预定时刻t的误码率相加再取平均值作为Error Rate aver(AD,t)。

WL(n-1)的误码率变化=Error Rate aver(XAB)-Error Rate aver(XAC)。

WL(n-1)的误码率变化可称为第二误码率差值。

步骤5:计算修改前后WL(n+1)的误码率变化:

计算修改前后WL(n+1)的误码率变化时,也是将WL(n+1)作为中间存储单元的。

在修改前,以WL(n+1)作为中间存储单元的存储单元组的分布态可表示为BDY,分布态Y表示E至P7分布态。

BDY可视为一个分布态组合集(可称为第五分布态组合集),以TLC模式为例,以0对应E态,1对应P1态,以此类推,则BDY可包括:BD0、BD1、……BD7。

在修改后,以WL(n-1)作为中间存储单元的存储单元组的分布态可表示为:BCY。

同理,BCY可视为一个分布态组合集(可称为第六分布态组合集),以TLC模式为例,则CDY可包括:CD0、CD1、……CD7。

以Error Rate aver(BDY)或ERaver3表示修改前在时刻tWL(n+1)的误码率,以Error Rate aver(CDY)或ERaver4表示修改后在时刻tWL(n+1)的误码率,则:

WL(n+1)的误码率变化=Error Rate aver(BDY)-Error Rate aver(CDY)

WL(n+1)的误码率变化可称为第三误码率差值。

步骤6:计算更改增益(将ABD改成ACD):

更改增益=WL(n)的误码率变化+WL(n-1)的误码率变化+WL(n+1)的误码率变化。

某码字组计算出的数据修改评估模型如下表2所示,表2中的每一行为一个数据修改评估结果,包括初始分布态组合、目标分布态组合、误码率增益等:

表2

以表2中第一行为例,初始分布态组合为:070(也即,E态、P7态、E态),误码率为0.45,目标分布态组合为000(也即,E态、E态、E态),也即,将WL(k)的分布态由P7态修改为E态,通过表1可知,是将Middle page上的数据由“0”修改为“1”。

表2中第一行中,目标分布态组合的误码率等于0;WL(n)的误码率增益为正0.447,表示WL(n)的误码率降低了0.447;WL(n-1)的误码率增益为负0.002,表示WL(n-1)的误码率增大了0.002;WL(n+1)的误码率增益为负0.001,表示WL(n+1)的误码率增大了0.001;总增益为0.444。

基于上述表2,可将满足预设条件的数据修改评估结果作为目标数据修改评估结果,将目标数据修改评估结果中的初始分布态组合放入所述第一分布态组合集,将目标数据修改评估结果中的目标分布态组合放入所述第二分布态组合集中。

在一个示例中,预设条件可包括:增益高,并且,修改的逻辑页为lower page(也即前述的第二逻辑页组包括lower page)。

例如,第一分布态组合集可包括如下任意一种或多种:

第一组合:E态、P7态、E态,对应表3中的070;

第二组合:E态、P7态、P1态,对应表3中的071;

第三组合:P1态、P7态、E态,对应表3中的170;

第四组合:P2态、P7态、E态,对应表3中的270;

第五组合:P1态、P7态、P1态,对应表3中的171;

第六组合:P2态、P7态、P1态,对应表3中的271;

第七组合:P4态、P7态、E态,对应表3中的470;

第八组合:P1态、P7态、P2态,对应表3中的172。

第二分布态组合集可包括如下组合中的至少一种:

第九组合:E态、P2态、E态,对应表3中的020;

第十组合:E态、P2态、P1态,对应表3中的021;

第十一组合:P1态、P2态、E态,对应表3中的120;

第十二组合:P2态、E态、E态,对应表3中的200;

第十三组合:P1态、P2态、P1态,对应表3中的121;

第十四组合:P2态、P2态、P1态,对应表3中的221;

第十五组合:P4态、P2态、E态,对应表3中的420;

第十六组合:P1态、P2态、P2态,对应表3中的122。

基于上述表2,请参见图4a,误码率平衡方法的示例性得可包括如下步骤:

S40:获取J块原始数据;

S40与前述的步骤S0相同,在此不作赘述。

S41:采用LDPC(9872,8192)编码算法对与Upper page和Middle page对应的原始数据进行编码,得到分别与Upper page和Middle page对应的第一码字。

S41与前述步骤S1相类似,在此不作赘述。

S42:采用LDPC(8962,8192)编码算法对与Lower page对应的原始数据进行编码,得到与Lower page对应的第二码字。

LDPC(8962,8192)编码算法请参见前述记载,在此不作赘述。

S43:根据比特单元的分布态,将分布态组合为第一组合至第八组合的比特单元组确定为第一比特单元组。

具体的,可将分布态组合为070、071、170、270、171、271、470以及172的比特单元组确定为第一比特单元组。

比特单元组的概念请参见前述记载,在此不作赘述。

S44:将第一比特单元组分布态为第一预设分布态的比特单元的Lower Page页的比特数据由1修改为0。

在本实施例中,第一预设分布态为P7态,修改后P7态变为P2态,也即前述的第二预设分布态具体为P2态。

修改后,第一比特单元变为上述第二比特单元,J-j个第二码字变为J-j个第三码字。

操作可总结如下:

070--->020[1;1;1;1;0;1;1;1;1]--->[1;1;1;0;0;1;1;1;1]

071--->021[1;1;1;1;0;1;0;1;1]--->[1;1;1;0;0;1;0;1;1

170--->120[0;1;1;1;0;1;1;1;1]--->[0;1;1;0;0;1;1;1;1]

270--->220[0;0;1;1;0;1;1;1;1]--->[0;0;1;0;0;1;1;1;1]

171--->121[0;1;1;1;0;1;0;1;1]--->[0;1;1;0;0;1;0;1;1]

271--->221[0;0;1;1;0;1;0;1;1]--->[0;0;1;0;0;1;0;1;1]

470--->420[0;1;0;1;0;1;1;1;1]--->[0;1;0;0;0;1;1;1;1]

172--->122[0;1;1;1;0;1;0;0;1]--->[0;1;1;0;0;1;0;0;1]

S45:采用LDPC(9872,8962)编码算法对上述J-j个第三码字进行编码,得到J-j个第四码字。

第三码字可用DalgPalgP2表示。

步骤S45与前述步骤的S5相同,在此不赘述。

S46:向非易失存储器写入上述j个第一码字和J-j个第四码字。

步骤S46与前述步骤的S6相同,在此不赘述。

在本实施例中,通过修改单元组,在Lower page上引入修改以降低Middle page和Upper page的误码率。

与之相对应,读取方法示例性得可包括如下步骤:

S47:获取非易失存储器中与各逻辑页对应的J块数据。

若二次编码时采用LDPC(9872,8962)进行编码,获取的数据长度可为9872*J。

需要说明的是,随着时间的推移,第四码字中的比特会发生其他错误,所以获取的数据与第四码字并不相同,可以D′

S48:基于通用的LLR值,对与Upper page和Middle page对应的数据,采用与LDPC(9872,8162)编码算法相对应的译码算法进行解码和纠错处理,得到对应Upper page和Middle page的原始数据。

S48与前述的S8相类似,在此不作赘述。

S49:基于通用的LLR值,对Lower page所对应的数据,采用与LDPC(9872,8962)编码算法相对应的译码算法进行解码和纠错处理,得到第三码字。

第三码字长度为8962。

相关介绍请参见前面的记载,在此不作赘述。

S410:根据比特单元的分布态,确定第二比特单元组。

在一个示例中,可将步骤S49中得到的对应Upper page和Middle page的原始数据(也即对应第一逻辑页组中各逻辑页的原始数据),再重新使用LDPC(9872,8192)编码算法进行编码,得到第一码字。

然后取各第一码字的前S比特(本实施例中为前8962比特)与第三码字进行观察,一共8962*J个比特。在这8962*J个比特中,对应同一存储单元的数据为一个比特单元,每一比特单元包括J比特的数据。

第二比特单元组包括分布态组合为:020、021、120、200、121、221、420和122的比特单元组。

S411:将第二比特单元组的第二比特单元中、与lower page对应的比特位置确定为不可靠比特位置,将第三码字中其他比特位置确定为可靠位置。

第二比特单元为分布态为第二预设分布态的比特单元。在本实施例中,第二预设分布态为P2,因此,第二比特单元组中,分布态为P2的比特单元为第二比特单元。

前述介绍了,在编码时,第一分布态组合集会被修改为第二分布态组合集,例如,将P7态修改为P2态。

当然,除了修改得到的P2态,还有原本是P2态的比特单元。因此,第二比特单元组的数量要多于前述的第一比特单元组。

S412:将不可靠比特位置的LLR值设置为0,将数据取值为1的可靠比特位置所对应的LLR值为-10,将数据取值为0的可靠比特位置所对应的LLR值为10。

S413:基于各比特位置的LLR值,采用与LDPC(8962,8192)编码算法相对应的译码算法对第三码字进行解码和纠错处理,得到与lower page对应的原始数据。

具体的,本步骤所采用的译码算法可称为:

MCFU(Most Correct Few Uncertain)-LDPC(8962,8192,140)。

前述步骤S410至S412也由MCFU-LDPC(8962,8192,140)执行。这里的140表示允许的纠错错误的个数。

本实施例所提供的MCFU-LDPC与普通LDPC纠错能力相对比有如下特点:

在MCFU-LDPC中,大多数的比特都能保证一定正确,在1k字节中只有约200比特是不确定的(也即约有200比特的不可靠比特数据)。

而在普通LDPC中,大约有1000比特是不确定的,而其他的也不是完全能保证正确的,置信度也不是非常高。

根据实验,MCFU-LDPC的纠错能力在普通LDPC的三倍以上,MCFU-LDPC纠错能力为:105/1k bytes(95%码率)。

与BCH码相比,其纠错能力更为突出。

下表4为实验数据。

表4

BCH(9872,8192,120)允许的纠正错误的个数是120个。

请参见表4所示的实验数据(表4中的PIE表示修改数据带来的错误,NE为普通的错误),若采用BCH(9872,8192,120)对原始数据进行编码后直接存储的方式,以125摄氏度下为例,在写入5.5小时后,Upper page的错误达到120个时,Middle page和Lower page的错误分别为100个和56个。

若采用BCH(9872,8192,120)对原始数据进行编码,再对编码码字进行如下操作的方式,以125摄氏度下为例,在写入6.8小时后,Upper page的错误达到120个时,Middlepage和Lower page的错误分别为118个。

070--->020[1;1;1;1;0;1;1;1;1]--->[1;1;1;0;0;1;1;1;1]

071--->021[1;1;1;1;0;1;0;1;1]--->[1;1;1;0;0;1;0;1;1

170--->120[0;1;1;1;0;1;1;1;1]--->[0;1;1;0;0;1;1;1;1]

270--->200[0;0;1;1;0;1;1;1;1]--->[0;0;1;1;1;1;1;1;1]

而采用本实施例所提供的方案后,同样在125摄氏度下,在写入8.42小时后,Middle page的错误达到120个,Upper page的错误达到115个,Lower page的错误为65NE+140PIE。由于对于Lower page有两次译码,第一次译码可纠正65个普通错误,第二次译码可纠正140个修改数据带来的错误。

这表明,本实施例所提供的技术方案,在TLC模式下三个逻辑页的误码率几乎在同时超过纠错能力,使纠错能力被完全使用,有效时间得到了延长,在减少横向电荷扩散效应和纵向脱陷对NAND Flash数据保持能力的影响的同时调整了TLC误码率不平衡现象。并且,基于MCFU-LDPC,有效提高对于纠正修改带来的错误的能力,能修改更多单元组,从而更有效的NAND Flash的数据保持能力。

上述介绍了G=3时技术方案,实际上G可取1、2、4、5等。对于G=1的情况,则未考虑横向电荷扩散效应,只是减少了纵向脱陷效应。

对于G=1的情况,将不再考虑分布态组合,只考虑将高态修改为低态。以TLC模式为例,示例性的可将P7态修改为P2态。

下面介绍误码率平衡装置(ECC模块),请参见图5,其示例性的包括:

第一获取单元1,用于获取原始数据;

第一编码单元2,用于:

采用第一预设编码算法对j块原始数据进行编码,得到j个第一码字;所述j块原始数据对应第一逻辑页组中的j页逻辑页;其中,j为小于J的正整数;所述第一码字长度为L;

第二编码单元3,用于:

采用第二预设编码算法对J-j块原始数据进行编码,得到J-j个第二码字;所述J-j块原始数据对应第二逻辑页组中的J-j页逻辑页;所述第二码字长度为S;S小于L;所述j个第一码字的前S比特的数据和所述J-j个第二码字的S比特的数据中,对应同一存储单元的数据为一个比特单元;每一比特单元包括J比特的数据;

根据比特单元的分布态,确定第一比特单元组;所述第一比特单元组包括:与同一沟道上G个连续的存储单元相对应的G个比特单元,并且,所述G个比特单元的分布态组合为第一分布态组合集中的分布态组合;G为自然数;

对所述第一比特单元组中对应所述J-j页逻辑页的数据,执行修改操作以平衡各逻辑页的误码率,得到J-j个第三码字;其中,在执行所述修改操作后,所述第一比特单元组被修改为第二比特单元组;所述第二比特单元组中的G个比特单元的分布态组合为第二分布态组合集中的分布态组合;

采用第三预设编码算法对所述J-j个第三码字进行编码,得到J-j个第四码字;所述第四码字长度为L;;

向非易失存储器写入所述j个第一码字和J-j个第四码字。

具体细节请参见本文前述记载,在此不作赘述。

在本发明其他实施例中,请参见图6,上述装置还可包括:

评估单元4,用于在执行修改前,建立数据修改评估模型。

其中,上述第一分布态组合集和第二分布态组合集是根据数据修改评估模型确定的。

在本发明其他实施例中,评估单元4还用于:

将目标数据修改评估结果中的初始分布态组合放入所述第一分布态组合集;

将目标数据修改评估结果中的目标分布态组合放入所述第二分布态组合集中;

所述目标数据修改评估结果包括满足预设条件的数据修改评估结果。

具体细节请参见本文前述记载,在此不作赘述。

数据修改评估模型的介绍和建立方式可参见本文前述记载,在此不作赘述。

在第一比特单元组所对应的G个比特单元中,分布态为第一预设分布态的比特单元为第一比特单元组。

在本发明其他实施例中,在执行修改操作的方面,上述所有实施例中的第二编码模块3可具体用于:

对第一比特单元组中与第二逻辑页组对应的比特数据进行修改,得到第二比特单元组,第二比特单元组的分布态为第二预设分布态。

具体细节请参见本文前述记载,在此不作赘述。

在本发明其他实施例中,上述第一分布态组合集包括如下组合中的至少一种:

第一组合:E态、P7态、E态;

第二组合:E态、P7态、P1态;

第三组合:P1态、P7态、E态;

第四组合:P2态、P7态、E态;

第五组合:P1态、P7态、P1态;

第六组合:P2态、P7态、P1态;

第七组合:P4态、P7态、E态;

第八组合:P1态、P7态、P2态。

上述第二分布态组合集包括如下组合中的至少一种:

第九组合:E态、P2态、E态;

第十组合:E态、P2态、P1态;

第十一组合:P1态、P2态、E态;

第十二组合:P2态、E态、E态;

第十三组合:P1态、P2态、P1态;

第十四组合:P2态、P2态、P1态;

第十五组合:P4态、P2态、E态;

第十六组合:P1态、P2态、P2态。

具体细节请参见本文前述记载,在此不作赘述。

在J等于3时,在其他实施例中,上述目标逻辑页可为:Lower Page;第一预设分布态可为P7态,第二预设分布态为P2态;

在本发明其他实施例中,在对第一比特单元组中与第二逻辑页组对应的比特数据进行修改的方面,上述所有实施例中的编码模块2可具体用于:

将第一比特单元组中Lower Page页的比特数据由1修改为0。具体细节请参见本文前述记载,在此不作赘述。

下面介绍读取装置(ECC模块或SSD中的控制器),请参见图6,其示例性的包括:

第二获取单元5,用于:获取非易失存储器中的数据;

第一译码单元6,用于:

基于通用的对数似然概率LLR值,对第一逻辑页组中j页逻辑页所对应的j块数据,采用与所述第一预设编码算法相对应的译码算法进行解码和纠错处理,得到所述j块原始数据;

第二译码单元7,用于:

基于通用的对数似然概率LLR值,对第二逻辑页组中J-j页逻辑页所对应的J-j块数据,采用与所述第三预设编码算法相对应的译码算法进行解码和纠错处理,得到所述J-j个第三码字;

预测所述J-j个第三码字中因执行所述修改操作而发生改变的数据所在的比特位置;预测出的比特位置为不可靠比特位置,其他比特位置为可靠比特位置;

将不可靠比特位置的LLR值设置为0;

将数据取值为1的可靠比特位置所对应的LLR值为-10,将数据取值为0的可靠比特位置所对应的LLR值为10;

基于各比特的LLR值,采用与所述第二预设编码算法相对应的译码算法对所述J-j个第三码字进行解码和纠错处理,得到J-j块原始数据。

具体细节请参见本文前述记载,在此不作赘述。

在本发明其他实施例中,可令位于同一沟道上的、分布态组合与第二分布态组合集相匹配的G个连续的存储单元为第二目标存储单元组;

在第二目标存储单元组所对应的G个比特单元中,分布态为第二预设分布态的比特单元为第二比特单元;则第二比特单元中与第二逻辑页组中的逻辑页对应的比特位置为不可靠比特位置。

具体细节请参见本文前述记载,在此不作赘述。

在本发明其他实施例中,J等于3;上述第二预设分布态为P2态;上述目标逻辑页为:Lower Page。具体细节请参见本文前述记载,在此不作赘述。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及模型步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或模型的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、WD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 误码率平衡方法及装置,读取方法及装置
  • 信息读取方法及装置、信息读取装置的信号取得方法、频带限制处理方法、定时点振幅抽出方法及信号处理方法、读取信号处理装置以及读取信号处理方法及处理装置
技术分类

06120112942101