存储装置和存储设备转让专利

申请号 : CN202111313315.8

文献号 : CN113793635B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李舒

申请人 : 阿里云计算有限公司阿里巴巴(中国)有限公司

摘要 :

本说明书一个或多个实施例提供一种存储装置和存储设备,该存储装置包括:非易失性存储器,及适配于所述非易失性存储器的外围电路;解码器,所述解码器与所述外围电路电连接,用于通过所述外围电路从所述非易失性存储器中读取目标数据,并对所述目标数据进行纠错解码。

权利要求 :

1.一种存储装置,其特征在于,包括:非易失性存储器,及适配于所述非易失性存储器的外围电路;

解码器,所述解码器与所述外围电路电连接,用于通过所述外围电路从所述非易失性存储器中读取目标数据,并对所述目标数据进行纠错解码;

在所述解码器为硬解码器的情况下,所述存储装置与其所属的存储设备中的控制器之间设有交互接口,所述控制器中包含软解码器;所述硬解码器还用于:在纠错解码失败的情况下,生成所述软解码器所需的软信息,并将所述软信息通过所述交互接口发送至所述软解码器,以由所述软解码器通过所述软信息对原始或经所述硬解码器处理后的所述目标数据进行纠错解码。

2.如权利要求1所述的装置,其特征在于,所述外围电路包括:页缓冲器,所述页缓冲器与所述非易失性存储器电连接,用于对从所述非易失性存储器中读取的数据进行缓存;

其中,所述解码器电连接至所述页缓冲器,并从所述页缓冲器中读取缓存的所述目标数据。

3.如权利要求1所述的装置,其特征在于,所述外围电路包括:页缓冲器,所述页缓冲器与所述非易失性存储器电连接,用于对从非易失性存储器中读取的待解码数据进行缓存;

扩展缓冲器,所述扩展缓冲器与所述页缓冲器电连接,用于对从所述页缓冲器中读取的数据进行缓存;

其中,所述解码器电连接至所述扩展缓冲器,并从所述扩展缓冲器中读取缓存的所述目标数据。

4.如权利要求1所述的装置,其特征在于,所述解码器为硬解码器和/或软解码器。

5.如权利要求4所述的装置,其特征在于,所述硬解码器内置有状态机,所述状态机根据所述硬解码器的已执行操作管理所述硬解码器的状态信息,所述状态信息用于指示所述硬解码器的后续执行操作。

6.如权利要求4所述的装置,其特征在于,所述硬解码器包括:解扰模块,所述解扰模块用于对所述目标数据进行解扰;

硬解码模块,所述硬解码模块用于对解扰后的所述目标数据进行纠错解码。

7.如权利要求1所述的装置,其特征在于,所述外围电路垂直集成于所述非易失性存储器顶面的第一区域,所述解码器垂直集成于所述非易失性存储器顶面的第二区域。

8.如权利要求1所述的装置,其特征在于,所述非易失性存储器为3D闪存。

9.一种存储设备,其特征在于,包括:控制器,以及如权利要求1‑8中任一项所述的存储装置。

说明书 :

存储装置和存储设备

技术领域

[0001] 本说明书一个或多个实施例涉及存储技术领域,尤其涉及一种存储装置和存储设备。

背景技术

[0002] 随着存储技术的飞速发展,越来越多的大容量高密度存储设备被设计制造出来。存储设备内部一般包括两个部分,分配数据传输并进行数据中转的控制器以及存储数据的
存储装置,该控制器与存储装置之间通过预设的交互接口进行数据传输。控制器通常设有
ECC(Error Correction Coding,误差校正编码)模块,用于对从存储装置中读取的数据进
行误差检测及校正。
[0003] 在相关技术中,随着存储装置的容量和密度的增大,对ECC模块提出了更高的性能要求,例如需要提供强大的纠错能力,以及需要有足够的吞吐量来匹配数据流等,造成ECC
模块的面积和功耗越来越大,不仅提高了控制器的设计成本,还可能对交互接口造成阻塞。

发明内容

[0004] 有鉴于此,本说明书一个或多个实施例提供一种存储装置和存储设备。
[0005] 为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
[0006] 根据本说明书一个或多个实施例的第一方面,提出了一种存储装置,包括:
[0007] 非易失性存储器,及适配于所述非易失性存储器的外围电路;
[0008] 解码器,所述解码器与所述外围电路电连接,用于通过所述外围电路从所述非易失性存储器中读取目标数据,并对所述目标数据进行纠错解码。
[0009] 根据本说明书一个或多个实施例的第二方面,提出了一种存储设备,包括:
[0010] 控制器,以及如第一方面所述的存储装置。
[0011] 在本说明书所提供的技术方案中,将原本位于控制器中的解码器在存储装置中实现,可以减少对控制器的空间占用,不仅能够优化控制器的模块布局,而且可以降低控制器
的设计成本和功率消耗。同时,由于解码器可以直接与存储装置进行数据交互,而无需占用
控制器与存储装置之间的交互接口,不仅可以提高解码器的数据读取效率,还有助于提升
控制器与存储装置之间的数据吞吐量。

附图说明

[0012] 图1是一示例性实施例提供的一种存储装置示意图;
[0013] 图2是一示例性实施例的一种控制器及存储装置内部模块布局方式示意图;
[0014] 图3是一示例性实施例的另一种控制器及存储装置内部模块布局方式示意图;
[0015] 图4是一示例性实施例的一种存储装置的集成方式示意图;
[0016] 图5是一示例性实施例的一种外围电路结构示意图;
[0017] 图6是一示例性实施例的另一种外围电路结构示意图;
[0018] 图7是一示例性实施例的一种硬解码器结构示意图;
[0019] 图8是一示例性实施例的一种校验矩阵对应的Tanner图;
[0020] 图9是一示例性实施例的一种软信息传递示意图。

具体实施方式

[0021] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例
中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相
反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相
一致的装置和方法的例子。
[0022] 需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更
多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进
行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行
描述。
[0023] 现今应用比较广泛的存储装置主要包括以铁磁性材料为存储介质的机械硬盘和以FLASH(闪存)作为存储介质的SSD(Solid State Disk,固态硬盘)。在SSD中,以NAND闪存
为例,由于读写过程的干扰、电荷泄露等误码机制,会降低NAND闪存的可靠性。另外,NAND闪
存可能存在缺陷(例如,有缺陷的存储单元等),并且在NAND闪存的使用期间,由于闪存颗粒
的损耗,还可能出现更多的缺陷,这些缺陷的存在可能导致存储的数据出现错误。同样,在
机械硬盘中,机械结构的磨损、灰尘进入机械硬盘中或者负责从存储介质中读取数据的磁
头的故障等因素也会导致数据错误。因此需要通过误差检测以及校正技术,来保证数据复
制的可靠性。通常的误差检测及校正需要进行适当的数据编码与数据解码。使用特定的ECC
策略通过ECC编码模块将输入数据进行编码,并通过与ECC编码模块相对应的ECC解码模块
将已经编码的数据进行纠错解码,最后得到经过校正的数据。
[0024] ECC解码模块一般由硬解码器(hard decoder)和软解码器(soft decoder)组成,硬解码器和软解码器可以单独进行ECC解码,也可以相互配合进行ECC解码。硬解码器和软
解码器可以统称为解码器(ECC decoder)。以SSD为例,相关技术中的ECC解码模块集成于
SSD的控制器中,导致了控制器的设计复杂、成本增加。同时,无论是硬解码器还是软解码
器,在需要从作为存储装置的NAND闪存等非易失性存储器中读取待解码数据时,都需要经
过SSD控制器与存储装置之间的交互接口,这对于交互接口来说,可能会造成数据的拥塞,
降低了数据的传输速率。
[0025] 为了解决上述问题,本说明书提供了一种将原本在控制器中实现的解码器转移到存储装置中实现的技术方案。
[0026] 在本说明书的一示例性实施例中,提出一种如图1所示的存储装置11。该装置包括非易失性存储器(Non‑volatile memory)110、与该非易失性存储器适配的外围电路
(Peripheral circuit)120、以及通过外围电路120从非易失性存储器中读取目标数据进行
纠错解码的解码器130。
[0027] 在本实施例中,解码器130直接与外围电路120电连接,通过该外围电路120从非易失性存储器110中读取所需的待解码数据,即为目标数据。因此,解码器130在进行解码时将
不再需要通过SSD的控制器与存储装置11之间的交互接口来读取存储于非易失性存储器
110中的待解码数据,而是直接通过外围电路120读取。通过这种数据传输方式,交互接口只
需将经过解码器130解码的数据传输至控制器进行后续处理,缓解了交互接口的数据拥塞。
并且,如图2所示,通过将解码器130从控制器21中转移至存储装置11中实现,释放了控制器
21中解码器130占据的较大面积,因而有助于降低控制器21的设计成本以及功率消耗。当本
实施例基于SSD实现时,所述非易失性存储器110可以为闪存阵列。
[0028] 在本申请一示例性实施例中,如图3所示,考虑到非易失性存储器的面积限制,也可以将位于控制器21中的解码器130的一部分——硬解码器1301,转移至存储装置11中实
现,而保留控制器21中的软解码器1302。由于解码器130中的硬解码器1301和软解码器1302
虽然协同工作,但布局位置可以相对独立,因此在该实施例中,解码器130由位于存储装置
中的硬解码器1301和位于控制器21中的软解码器1302构成,两者之间通过控制器21和存储
装置11之间的交互接口进行数据传输。通过将解码器130中的硬解码器从控制器21中转移
至存储装置11中实现,控制器21中仅保留了软解码器1302,位于控制器21内部的解码器130
的布局可以由如图3左侧调整为如图3右侧的形式,其中虚线部分的硬解码器1301从控制器
21中转移至存储装置11中。在控制器中释放的面积可以用于实现SSD控制器的其他功能,同
样也可以减少解码器130在控制器21中的占用面积,降低控制器21的设计成本以及功率消
耗。
[0029] 同样地,在本申请另一示例性实施例中,也可以仅将软解码器转移至存储装置中实现,而将硬解码器保留在控制器中,同样可以利用存储装置提供的空间,减少解码器对控
制器中空间的占用。
[0030] 由于ECC解码是将数据格式转换至码域之后进行处理,因此,无论是固态硬盘还是机械硬盘,乃至其他种类的非易失性存储器,对于其中存储的数据进行误差检测及校正的
原理是相同的,均可以由相同机制的解码器完成,因此,与图1类似的存储装置也可以应用
在机械硬盘或者其他种类的存储设备中。
[0031] 在本说明书的一示例性实施例中,非易失性存储器可以为3D闪存(3D flash),例如3D NAND闪存。3D闪存将闪存阵列的排列方式从原本的二维空间排列改为纵向多层堆叠,
能够有效提升单位面积所能容纳的数据量。由于3D闪存的高密度,在集成了与3D闪存适配
的外围电路后,3D闪存仍然能够提供足够的表面空间,以容纳解码器集成于其表面上。如图
4所示的集成方式中,可以将解码器130集垂直集成于3D闪存阵列410的顶部的一个区域中,
而将外围电路120集成于3D闪存阵列410的另一个区域中。当3D闪存固定在电路板上时,可
将其与电路板焊接的表面称为底面,而与底面平行的另一表面提供了较大的表面积可以用
于集成外围电路和解码器,可将此表面称为顶面。这种集成方式巧妙利用了3D闪存阵列顶
部的空间,由于此时解码器130位于3D闪存阵列410的顶面,因此可以将其称为片上解码器
(On‑chip ECC decoder)。
[0032] 当然,非易失性存储器顶部的空间也可以仅用来集成硬解码器或者软解码器,而将ECC解码模块的剩余部分保留在控制器中实现,这种做法亦可以部分减少解码器在控制
器中占据的空间,疏解交互接口的数据传输压力,降低控制器的设计成本。甚至可以将一组
或几组软解码器和硬解码器在存储装置中实现,对来自存储装置的待解码数据即目标数据
进行前序的解码,然后将前序解码结果发送至控制器中的后续解码模块中,该模块也可以
由数个硬解码器配合软解码器组成,通过后续解码模块在前序解码结果的基础上进行后续
解码步骤,完成对目标数据的解码。
[0033] 在本说明书的一示例性实施例中,所述解码器130与所述外围电路120的电连接可以采用如图5的方式实现的。图5为集成于闪存阵列506上的外围电路与解码器130,其中外
围电路可以包括:用于输入输出数据信号的Toggle/ONFI接口(Toggle/ONFI interface)
501、用于选择存储单元的地址解码器(Address decoder)502以及用于缓存读取或者写入
的数据的页缓冲器(Page buffer)503。所述闪存阵列506通过页缓冲器503与解码器130电
连接。解码器130从闪存阵列506中读取数据时,首先由页缓冲器503对来自闪存阵列506中
的目标数据进行缓存,然后由解码器130从页缓冲器503中读取缓存的目标数据以进行解
码。
[0034] 在本说明书的另一示例性实施例中,所述解码器130与所述外围电路120的电连接可以采用如图6所示的方式实现。图6为集成于闪存阵列506上的前述外围电路120与解码器
130,与图5中的实现方式的区别在于,所述外围电路120还包括扩展缓冲器(Enlarged 
buffer)604,扩展缓冲器604与页缓冲器503电连接,通过页缓冲器503缓存从闪存阵列506
中读取的目标数据,此时,待解码的目标数据缓存在扩展缓冲器604中,当有数据从闪存阵
列506中解码时,扩展缓冲器604相当于一个专门缓存待解码数据的特殊区域,此时,扩展缓
冲器604的存在可以提高解码效率。当没有目标数据从闪存阵列506中解码时,为了避免扩
展缓冲器604闲置,此时扩展缓冲器604可以作为页缓冲器503的附加缓冲区域,相当于将页
缓冲器503放大,以实现写入性能的加速。
[0035] 本说明书中的ECC硬解码器可以采用相关技术中任意的硬解码器技术,本说明书并不对此进行限制。为了便于理解,下面结合图7介绍一种ECC硬解码器的具体实现方式。如
图7所示,硬解码器可以包括:读取缓冲器(Read buffer)701、代码奇偶校验矩阵(Code 
parity check matrix)702、校验子计算器(Syndrome calculation)703、校正选择器
(Correction selection)704。
[0036] 其中,读取缓冲器701通过外围电路读取存储在非易失性存储器中的待解码数据,待解码数据被缓存于读取缓冲器701中以供解码。此外,读取缓冲器701与控制器可通过如
前所述的交互接口进行数据交互。代码奇偶校验矩阵702是一种非易失性存储器,存储有用
于解码的代码信息。校验子计算器703基于代码奇偶校验矩阵702中存储的代码信息对从读
取缓冲器701中读取的待解码数据执行运算以生成与待解码数据相关联的校验子。校正选
择器704,根据校验子计算器703生成的校验子选择性地校正待解码数据的错误位,生成经
过校正的硬解码结果,并且生成与该硬解码结果相匹配的标识信息,该标识信息可以包括
硬解码的尝试次数、纠错解码是否成功等信息。
[0037] ECC解码模块中还可以包括加扰器和解扰器。其中,加扰器的作用是通过对数据信号添加扰码,抑制信号中的长连“0”或长连“1”,便于信号的提取,解扰器的作用是将加扰后
的数据还原为原始的未加扰的数据。ECC解码模块中的加扰器可以部署在控制器中,当控制
器将数据写入存储装置时由加扰器对数据进行加扰处理。在本申请说明书的一示例性实施
例中,当解码器从控制器中转为在存储装置中实现时,加扰器和解扰器均跟随解码器转移
至存储装置中实现。在本申请说明书的另一示例性实施例中,当将硬解码器由控制器转移
到存储装置中实现时,解扰器同样可以由控制器转移到存储装置中,而此时,加扰器则与软
解码器相同,被保留在控制器中。其中,解扰器可以在硬解码器中实现。硬解码器在对数据
进行硬解码的过程中,首先从存储装置中读取加扰后的数据,由硬解码器中的解扰器还原
为上述的待解码数据,然后由硬解码器对该待解码数据进行硬解码。
[0038] 待解码数据经由集成于存储装置中的硬解码器进行解码后,考虑到硬解码器的性能存在局限,可能会出现解码失败的情况。为了解决上述问题,在纠错解码失败的情况下,
可以进一步由软解码器进行解码,以提升解码成功的概率。硬解码器与软解码器之间的解
码过程可以相互独立。而为了提升解码的效率和成功概率,在硬解码器确认自身解码失败
的情况下,可以通过硬解码器生成软解码器所需的软信息(soft information),并将所述
软信息发送至软解码器,以由所述软解码器通过所述软信息对经所述硬解码器处理后的目
标数据继续进行纠错解码。在本说明书的一示例性实施例中,当将硬解码器在存储装置中
实现,而保留控制器中的软解码器时,上述由硬解码器生成的软信息需要经由存储装置和
控制器之间的交互接口进行传输,从而发送至软解码器。在本说明书一示例性实施例中,若
硬解码器纠错解码失败,则校正选择器704生成的标识信息还可以包括软解码器所需的软
信息。
[0039] 下面以使用LDPC码作为编码策略的ECC解码器为例,介绍一种通过硬解码器生成软解码器所需的软信息的具体实施方式。常用的ECC编码策略有LDPC(Low Density Parity 
Check,低密度奇偶校验)码、BCH码、BTC(Block  Turbo  Code,分组涡轮码)、CTC
(Convolutional Turbo Code,卷积涡轮码)等。根据校正需求的不同,可以配置合适的ECC
编码策略,并设计适当的ECC编解码器。其中,LDPC码以优秀的性能成为目前SSD控制器最先
进的编码策略,其性能接近香农极限(信道的香农极限或称香农容量指的是在会随机发生
误码的信道上进行无差错传输的最大传输速率)。在如图3左侧所示的ECC解码模块布局的
硬件中,当采用LDPC编码策略时,相关技术中需要由软解码器通过交互接口不断地对存储
装置进行多次的读操作,才能采样得到所需细粒度的电压值,以生成软解码所需的软信息。
而在本说明书的实施例中,当软信息由硬解码器生成时,硬解码器可以通过交互接口将包
含硬解码结果的软信息一次性传输至软解码器,软解码器通过硬解码器生成的软信息在硬
解码结果的基础上进一步进行纠错解码,此时软解码器依靠硬解码器生成的软信息即可完
成解码,软解码器无需对存储装置进行采样,因此避免了软解码器对存储装置的多次读取,
缓解了交互接口的数据拥塞。
[0040] 假设上述实施例应用于图2右侧所示的ECC解码模块中时,由于软解码器本身位于存储装置中,因此,软解码器、硬解码器、非易失性存储器之间的传输数据不需要通过存储
装置与控制器之间的交互接口,只需要把最终的解码结果通过该交互接口发送至控制器进
行下一步的操作。此种方案同样可以缓解交互接口的数据拥塞。
[0041] LDPC码的解码算法分为硬判决和软判决两种,其中硬判决算法主要为BF(Bit Flipping)算法,其原理是:当校验方程不成立时,说明此时必定有比特位发生了错误,而所
有可能发生错误的比特中不满足校验方程个数最多的比特发生错误的概率最大。在每次迭
代时均翻转发生错误概率最大的比特并用更新之后的码字重新进行解码。硬判决算法易于
通过硬件实现。
[0042] 软判决算法主要有BP(Belief Propagation,置信度)算法,以及一系列在BP算法上进行改进算法,例如LLR‑BP(Logarithm Likelihood Ratio‑Belief Propagation,对数
似然比‑置信度)算法。LLR‑BP算法是BP算法的一种简化算法,通过对数似然比来降低硬件
资源和计算时间。
[0043] 例如,如公式(1)所示为一用于校正的校验矩阵H,则其对应的Tanner图连接信息如图8所示。在Tanner图中,其变量节点与LDPC码校验矩阵H的列相对应,其校验节点与LDPC
码校验矩阵H中的行相对应,LDPC码校验矩阵H的非零元素与Tanner图中的连线相对应。在
校验矩阵H中,列重是指每列非零元素的个数,行重是指每行非零元素的个数,规则LDPC码
是所有列重和行重全部相等的码;如果不相等,则将其称之为非规则LDPC码。在图8中,校验
节点有5个,分别用C1~C5表示,变量节点有10个,分别用B1~B10表示。
[0044]                      (1)
[0045] 假设编码后的向量为 ,然后经信道传输,解码器接收到信道传送过来的向量为 ,所有变量节点Bi接收到对应的接收值yi。则向量C和校验
矩阵H必需满足线性方程组 。接收到的向量Y可能包含错误,导致 。
[0046] 无论是BP算法还是其改进LLR‑BP算法,其迭代的过程均可以描述为:
[0047] 第一次迭代:每个变量节点给所有与之相邻的校验节点传送一个可靠性消息,这个可靠性消息就是信道传送过来的值;每个校验节点接收到变量节点传送过来的可靠性消
息之后进行处理,然后返回一个新的可靠性信息给与之相邻的变量节点,这样就完成了第
一次迭代;此时可以进行判决,如果满足校验方程,则不需要再迭代,直接输出判决结果,否
则进行第二次迭代。
[0048] 第二次迭代:每个变量节点处理第一次迭代完成时校验节点传送过来的可靠性消息,处理完成后新的消息发送给校验节点,同理,校验节点处理完后返回给变量节点,这样
就完成了第二次迭代。完成后同样进行判决,如果满足校验方程则结束译码,否则如此反复
多次迭代,每次都进行判决,直到达到设定的最大尝试次数,译码失败。在每次迭代过程中,
无论是变量节点传送给校验节点的信息或者校验节点传送给变量节点的信息,都不应该包
括前次迭代中接收方发送给发送方的信息,这样是为了保证发送的信息与接收节点已得到
的信息相互对立。
[0049] 基于上述迭代过程,BP解码算法的基本步骤如下:
[0050] 首先,计算经信道传输后各变量节点的初始概率pi (1) 和pi (0),然后对每个变量节点求传递给与其相邻的校验节点的置信度信息,如下述公式(2)所示:
[0051]                                                   (2)
[0052] 其中,上标表示迭代次数。
[0053] 第二步,处理校验节点,求出第l次迭代过程中校验节点i传递给与之相邻的变量节点j的置信度信息,如下述公式(3)所示:
[0054]                             (3)
[0055] 第三步,处理变量节点,求出第l次迭代过程中变量节点j传递给与之相邻的校验节点i的置信度信息,如下述公式(4)所示:
[0056]                               (4)
[0057] 其中Kij是校正因子,使得每次计算出的 。
[0058] 第四步,根据校验节点反馈的信息,重新计算各变量节点的置信度信息,如下述公式(5)所示:
[0059]                                 (5)
[0060] 其中Kj也是校正因子,使得每次计算出的 。
[0061] 第五步,解码判决:如果 ,那么判决这一点的码值为1;否则,判断这一点的码值。
[0062] 和BP算法相比LLR‑BP解码算法中传递的可靠性信息不再是概率信息,而是似然概率信息,LLR‑BP解码算法的基本解码步骤如下:
[0063] 首先,采取初始化手段,变量节点接收信道传递信息,其中yn为接收数据,σ由信道特性给定,如下述公式(6)所示。
[0064]                                         (6)
[0065] 第二步,在水平方向上对校验节点信息进行更新,即找到H矩阵的每一行中不为0的点,将其对应的信息进行运算,运算公式可参考下述的公式(7):
[0066]                     (7)
[0067] 第三步,在垂直方向上,对变量节点信息进行更新,即找到H矩阵的每一列中不为0的点,将其对应的信息进行运算,运算公式可参考下述的公式(8):
[0068]                                      (8)
[0069] 第四步,更新后验概率,即将接收信号的每一个值进行更新,用于后续的判决,计算公式可参考下述的公式(9):
[0070]                                        (9)
[0071] 第五步,进行解码判决,根据更新后的对数似然比信息,对接收信号的每一位进行判决,若结果大于0,则判为0;否则判为1。
[0072] BP解码算法和LLR‑BP解码算法结束迭代的条件均为:解码后生成的向量X满足;或者,已经达到了最大尝试次数,在满足两种条件的情况下,把判决的结果X输
出,如果不满足以上两种条件,则继续步骤二、三、四。
[0073] 假设编码后的原始数据为 ,该原始数据满足 。其中校验矩阵H即为公式(1)所述矩阵,其对应的Tanner图如图8所示,该校验矩阵H的信息保存在
如图7所示的硬解码器的代码奇偶校验矩阵702中。原始数据向量C经传输后出现错误,包含
错误的待解码数据设为 。首先利用如图7所述的硬解码器对该待解码向
量进行硬解码。校正选择器704根据校验矩阵H与待解码向量Y1生成校验子。根据该校验子
中未满足Tanner图连接信息的检查节点以及变量节点与检查节点之间的关系生成置信度
信息,根据置信度对变量节点进行排序。选择置信度最低(即错误的可能性最高)的变量节
点进行翻转,并翻转读取缓冲器中与该变量节点对应的待解码数据中的相应位。这形成了
硬解码的一次尝试。修改后的待解码数据向量用于计算新的校验子,进一步分析该校验子
以选择要翻转的位,重复上述步骤直至生成的向量满足 硬解码器解码成功;或
者,迭代达到最大尝试次数,硬解码器解码失败。
[0074] 假设经m次尝试,生成的向量为 ,且 ,其中m为硬解码器的最大尝试次数,此时,判断硬解码器纠错解码失败。由于硬解码器无法完成对待解码
数据的完全解码,需要软解码器对上述结果进一步解码,因此硬解码器中的校正选择器704
需要生成包含软解码器所需的软信息的标识信息。
[0075] 在硬解码器纠错解码失败的基础上,在一示例性实施例中,假设软解码器的解码算法为BP算法,则软解码器解码时所需的软信息为置信度信息。由于硬解码器解码失败,校
正选择器704生成的置信度信息假设为 ,其中上标(0)表示软
解码器的迭代次数为0。硬解码器将该置信度信息发送给软解码器。根据上文中关于BP解码
算法步骤的描述,由于该初始置信度信息由硬解码器提供,软解码器可以无需读取位于存
储装置中的数据信息,所以在BP解码算法的第一步,初始化步骤中,将上述由硬解码器生成
的置信度信息 ,代替公式2中的计算结果,作为软解码步骤中的初始概率,并进行后续
的解码步骤。例如,假设原始数据 ,由硬解码器生成的置信度信息
,将该置信度信息带入到初始概率中,经步骤二、三、四,软解
码器经一次迭代后各变量节点的置信度 信息 在 的基 础上 ,更 新为
,对更新后的置信度信息进行解码判决,如果某一位的置
信度信息概率值 ,那么判决这一点的码值为1;否则,这一点的码值为0。假
设更新后的置信度信息为 ,对此
概率信息进行解码判决,得到如下的第一次迭代解码结果 。由
于 ,则表明此次迭代没有解码成功,由于并没有达到软解码的最大尝试次数,
因此,需要重复BP解码步骤的二至五步,直至解码结果满足 ,或者迭代次数超
过最大尝试次数,软解码失败。
[0076] 在另一示例性实施例中,软解码器的解码算法为LLR‑BP算法,软解码器解码所需的软信息为对数似然比信息。由于硬解码器解码失败,硬解码器中的校正选择器704需要生
成软解码器所需的软信息。本示例中软解码器解码算法为LLR‑BP算法,所以校正选择器704
需要生成的软信息为对数似然比信息,假设该对数似然比信息为 。
硬解码器将该对数似然比信息发送给软解码器。与采用BP解码算法的软解码器相似,将根
据公式6计算的初始化信息用由硬解码器生成的对数似然比信息 代替,并继续进行后
续的步骤。在 的基础上进行迭代。其迭代过程于采用BP解码算法的软解码的迭代过程
相类似。
[0077] 例如,假设原始数据 ,软解码器迭代的初始对数似然比信息为由硬解码生成的 ,软解码器在 的基础上,重复LLR‑BP解码算
法的步骤二、三、四,经x次迭代后,各变量节点的对数似然比信息更新为
,对上述的对数似然比信息进行解码判决,时发现该对数似然
比信息对应的解码结果 满足 ,则此时判断软解
码成功,软解码结果即为向量 。
[0078] 例 如 ,经x 次 迭 代 后 ,各 变 量 节 点 的 对 数 似 然比 信 息 更 新 为,对上述对数似然比信息
进行根据判决解码步骤,若第i位的对数似然比 ,则该位判为0;否则判为1,得到如
下的第x次迭代解码结果 ,此时满足 ,所以软解码成
功,软解码结果即为 。
[0079] 上述两种示例性实施例均实现了由硬解码器生成软解码器解码所需的软信息。当硬解码器纠错解码失败时,硬解码器中的校正选择器704不仅实现硬解码器解码过程中的
选择校验功能,还实现生成软解码器所需的软信息的功能。在本说明书一示例性实施例中,
当硬解码器从控制器中转移至存储装置中实现,而软解码器保留在控制器中时,所述软信
息可以包含在标识信息内并通过控制器上的交互接口发送至软解码器,由软解码器进行基
于硬解码结果进行进一步的软解码。
[0080] 控制器中还可以包括CRC(Cyclic Redundancy Check,循环冗余校验)系统,CRC系统可以用于实现CRC校验。CRC校验是一种根据网络数据包或计算机文件等数据产生简短固
定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的
错误。例如,CRC系统可以利用除法及余数的原理来实现错误侦测。软解码器在解码完成后
可以将经过解码的码字发送至CRC系统进行校验,以检测经软解码器解码后的数据是否仍
旧存在错误。
[0081] 在本说明书的一种具体实施方式中,硬解码器可以通过状态机来实现对自身所处状态的管理,并据此执行对应的操作。例如,当状态机处于第一状态时,表明需要从存储装
置中读取数据并解码,则硬解码器读取页缓冲器中缓存的数据,并开始解码。再例如,当状
态机处于第二状态时,表明硬解码器解码成功,则硬解码器停止解码,并将纠错解码成功的
解码结果发送至后续的处理装置。当状态机处于第三状态时,表明硬解码器解码失败,则硬
解码器停止解码并生成软解码器所需的软信息,将包含硬解码结果的软信息发送至软解码
器,进行进一步的解码。
[0082] 图9显示了说明书的一示例性实施例的一种从存储装置中的硬解码器1301到控制器中的软解码器1302的软信息的传递过程。由于软信息已经由硬解码器1301生成,因此不
需要由软解码器1302通过软信息生成模块921来生成软信息,可以节省软信息生成模块921
为了获取软信息对存储装置的非易失性存储器多次读取采样的时间。在一些情况下,软解
码器1302甚至可以不包含软信息生成模块921,从而节省了软解码器1302的设计开销,减小
软解码器1302在控制器21中占用的空间。通过交互接口,硬解码器1301可将生成的包含硬
解码结果的软信息发送到软解码器1302,在软解码器1302中通过软解码器的迭代解码进一
步减少错误。硬解码器1301的存在可以在一定程度上减轻软解码器1302的负担,从而加快
整体解码速度。
[0083] 存储装置可以集成多个解码器,这些解码器可以并行工作。例如在3D闪存的顶部,可以同时集成多个解码器。与仅集成一个解码器相比,在总数据量不变的情况下,并列集成
多个解码器可以将原有的单个解码器的串行的解码任务转变为多个解码器并行处理,使得
每个解码器分担的解码任务更少,多个解码器同时解码可以节省解码消耗的时间,提高解
码效率。
[0084] 此外,如果将硬解码器转移至存储装置中实现,软解码器保留在控制器中,则也可以在存储装置中增加硬解码器的数量,硬解码器也为并行工作。例如,在3D闪存顶部集成多
个硬解码器,此时,由于并行工作,每个硬解码器分担的解码任务更少,因此在增加硬解码
器数量的基础上还可以调高每个硬解码器的最大尝试次数,从而进行更多轮的迭代,相当
于分配了比以前更多的时间来解码每个读取结果,从而提高纠错解码能力,在硬解码器解
码能力提升的基础上,待解码数据由硬解码器解码成功的概率增加,疏解了软解码器的解
码压力。
[0085] 在本说明书一个或多个实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些
要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设
备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除
在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0086] 在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书
中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表
示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出
项目的任何或所有可能组合。
[0087] 应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区
分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第
二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如
果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0088] 以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何
修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。