社区编辑申请
注册/登录
固态硬盘纠错算法的前世今生
存储 存储设备 算法
纠错编码算法(Error Correction Code, ECC)是传输过程中发生错误后能在接收端自行发现并纠正的码。早期被广泛应用于通信领域,在发送端完成数据编码,在接收端完成数据译码,保证数据的可靠传输。

 纠错编码算法(Error Correction Code, ECC)是传输过程中发生错误后能在接收端自行发现并纠正的码。早期被广泛应用于通信领域,在发送端完成数据编码,在接收端完成数据译码,保证数据的可靠传输。NAND Flash作为一种广泛使用的存储介质,容易受到PE次数、数据保存时间、温度和Cell间干扰等因素的影响,数据写入后再读出无法保证绝对的正确性,因此需要ECC算法做数据恢复。

 

在2D NAND Flash时代,SSD控制器一般采用BCH编码保护数据正确性,BCH的几个特性

1. 对于固定的码长和码率,有一组固定的生成多项式和校验多项式,不需要单独设计;

2. 有相对固定的编码和译码算法;

3. 当错误数据个数小于一个指定值时,可以100%恢复数据;当数据错误个数大于这个指定值时,100%不能恢复数据;

4. BCH编码只能接收硬信息,即一个有效数据只能用1 bit表示;

但是随着3D NAND Flash技术的逐步成熟,3D NAND Flash表现出了更好的可靠性。因此,原本采用2D MLC的产品纷纷转投3D TLC(可靠性对比: 2D MLC > 3D TLC > 2D TLC),对SSD主控的ECC编码提出了更高的要求,因此,具备更强纠错能力的低密度奇偶校验编码(Low Density Parity Check, LDPC)越来越多的被采用。

相对于BCH,LDPC具备以下特性:

1. 对于固定的码长和码率,需要单独设计编译码使用的矩阵(通常指校验矩阵);

2. 有多种解码算法,但是***的纠错算法计算复杂度太高,无法硬件化,需要权衡算法特点和译码精度,简化算法;

3. 可以接收软信息(即一个有效数据可以用多个 bit表示),这是LDPC取代BCH的主要原因;

4. 译码成功或失败没有绝对的界线,即可能在只错几个bit的情况下无法成功纠错,但可以成功完成200 bit错误的数据译码;

5. 相同码率情况下,码长越长,纠错能力越强;

详细解释一下以上5个特性:

1. 低密度奇偶校验码的低密度是指其校验矩阵的稀疏性(在一个只有“0”元素和“1”元素的矩阵中,“1”元素的比例很低)。LDPC编码和译码都可以利用校验矩阵,矩阵的低密度意味着编译码算法的低复杂度、低运算量。对于固定码长和码率的LDPC码,校验矩阵有很多种,但是设计一个运算量小,复杂度低且纠错能力强的校验矩阵成为LDPC编码应用的一个难点。

 

LDPC校验矩阵H

2. 麻省理工学院Robert Gallager于1963年在博士论文中提出LDPC码,但因其复杂的译码算法不易实现,并没有被广泛采用。1981年,Tanner提出了用图模型来描述码字的概念,从而将LDPC码的校验矩阵对应到被称为Tanner图的双向图上,采用Tanner 图构造的LDPC码,通过并行译码可以显著地降低译码复杂度。

 

校验矩阵H对应的Tanner

此后,越来越多的LDPC译码算法出现,其中***的是比特翻转算法(Bit Flipping Algorithm)和最小和算法(Min-Sum Algorithm)。同时也出现了很多基于以上2种纠错算法的变种算法,用较小的代价提高了译码精度。

下图描述了一个编码后数据位“1101”,在信道上传输后变为“1001”后接收端的比特翻转译码的过程。

经过一次迭代后,错误bit被纠正。

 

 

 

 


 

 

3.软信息是用多bit表示一个bit的值,即等价于可以用多位精度表示一个信息的置信度。

用硬信息表示一个信息,只有“0”或“1”。而软信息更精确的表达了一个信息的置信度,软信息可以有“0.1”、“0.4”、“0.65”、“0.99”等表达方式。有了软信息,在相同码率下译码器可以纠正更多的错误。

但是存储不同于通信领域,存储器读出的数据只能是0或者1。因此,软信息的获取只能通过改变存储器读方式,多次读取才能获得。多次读取同一个信息必然造成读性能的下降,因此,在SSD控制器上,尽可能减少使用软信息做译码的概率。

 

4. LDPC是一种概率译码算法,在不同的错误率的情况下均有一个译码成功概率,并且这个概率具备一个明显的特点。当待译码数据错率低时,LDPC译码失败概率很低,可以低至1E-15,但是很难做到0失败,主要原因是对于每个矩阵都存在一个陷阱集,当陷阱集中包含的位置的点发生数据错误,LDPC便无法成功译码。随着错误率逐渐增加,译码失败概率会快速增加到接近100%失败。

 

5.对于BCH和LDPC,在相同码率下,码长越长,纠错能力越强。对于市场上流行的3D TLC Flash的页大小(页大小决定纠错算法码率),我们比较了2KB/4KB BCH和2KB/4KB LDPC硬判决译码的纠错能力。当码长增加时,相同的译码算法以及相同的码率下,纠错能力提升了近50%。长码长ECC算法的应用,更好的提高了纠错算法的能力,推迟了SSD主控启用LDPC软判决译码的使用,减少软判决译码带来的负面影响(性能和功耗方面)。

 

总结:

数据正确性是SSD最基本的要求,纠错编码保证了数据万无一失。随着更多新的Flash结构出现,纠错编码算法也在逐步演进。LDPC算法***限度的保证了数据的正确性。并且,随着越来越多SSD主控采用4KB LDPC,更好的延长了SSD的寿命。

责任编辑:武晓燕 来源: SSDFans
相关推荐

2021-11-30 05:45:16

2022-07-14 10:02:26

混合硬盘性能

2022-04-13 10:58:53

颗粒固态硬盘主控板

2022-02-25 08:08:13

固态硬盘机械硬盘

2022-03-04 14:54:26

固态硬盘性能数据

2022-01-13 15:36:14

2021-12-27 08:45:19

2018-10-16 14:07:47

SSD固态硬盘方法

2021-01-20 10:40:16

缓存固态硬盘SSD

2017-12-11 14:33:07

固态硬盘平衡算法

2021-10-04 11:11:14

2021-03-18 16:05:20

SSD存储故障

2021-10-17 21:59:33

2017-12-14 09:20:29

闪存硬盘固态

2022-05-05 11:28:36

SSD硬盘威宝写入寿命

2017-08-28 08:11:30

固态硬盘产品

2009-05-06 09:00:03

微软Windows 7操作系统

2018-09-18 10:29:44

SSD固态硬盘

2018-04-09 09:04:59

固态硬盘映射表

2019-12-24 15:16:16

SSD固态硬盘CPU

同话题下的热门内容

再见!英特尔宣布将彻底关停这项业务长江存储推出第四代TLC三维闪存X3-9070“自有芯”的SSD竞逐,“芯盛智能”已为人先文明长存,致态TiPro7000三体联名版让数据安全无忧铭刻经典,文明长存, 致态TiPro7000三体联名版正式启航

编辑推荐

SSD接口详解,再也不会买错固态硬盘了SAN和NAS、ISCSI存储有什么区别,SAN和NAS设备哪个更好?献给“大容量”用户: NAS与磁盘阵列柜正确的选择方式都在这里儿了手把手教你组 笔记本高大上的磁盘阵列磁盘阵列怎么配置,图文步骤来教你
我收藏的内容
点赞
收藏

51CTO技术栈公众号