当前位置: 首页 > 科技观察

固态硬盘纠错算法的前世今生

时间:2023-03-15 09:18:10 科技观察

SSD纠错算法的前世今生纠错码(ECC)是在传输过程中发生错误后,在接收端可以发现并纠正的代码。早期广泛应用于通信领域。发送端完成数据编码,接收端完成数据解码,保证数据的可靠传输。NANDFlash作为一种应用广泛的存储介质,容易受到PE数量、数据存储时间、温度、单元间干扰等因素的影响。数据写入和读出后不能保证绝对正确。因此,数据处理需要ECC算法。恢复。在2DNANDFlash时代,SSD控制器普遍采用BCH编码来保护数据的正确性。BCH的几个特点1、对于固定的码长和码率,有一组固定的生成多项式和校验多项式,不需要单独设计;2、有比较固定的编解码算法;3、当错误数据个数小于指定值时,可100%恢复数据;当数据错误数大于指定值时,100%的数据无法恢复;4、BCH编码只能接收硬信息,即一个有效数据只能用1比特表示;但随着3DNANDFlash技术的逐渐成熟,3DNANDFlash表现出了更好的可靠性。因此,原本采用2DMLC的产品纷纷改用3DTLC(可靠性比较:2DMLC>3DTLC>2DTLC),这对SSD主控的ECC编码提出了更高的要求。因此,纠错能力更强的产品越来越多地采用低密度奇偶校验编码(LowDensityParityCheck,LDPC)。LDPC与BCH相比有以下特点:1.对于固定的码长和码率,需要分别设计用于编解码的矩阵(通常称为奇偶校验矩阵);2.解码算法很多,但是最好的纠错算法计算复杂度太高,无法硬件化。需要平衡算法的特性和译码精度来简化算法;3、可以接收软信息(即一个有效数据可以用多个比特表示),这是LDPC取代BCH的主要原因;4、解码成功与否没有绝对的限制,即在只有几位错误的情况下纠错可能不成功,但200位错误的数据解码可以顺利完成;5、在码率相同的情况下,码长越长,纠错能力越强;详细解释以上五个特点:1、低密度奇偶校验码的低密度是指其奇偶校验矩阵的稀疏性(只有“0”元素和“1”元素矩阵,“1”的比例"元素非常低)。LDPC编码和解码都可以使用奇偶校验矩阵,矩阵的低密度意味着编码和解码算法的复杂度和计算量低。对于固定码长和码率的LDPC码,奇偶校验矩阵有很多种,但是设计一个计算量小、复杂度低、纠错能力强的奇偶校验矩阵成为LDPC码应用中的难点。LDPC校验矩阵H2.RobertGallager的麻省理工学院1963年在其博士论文中提出LDPC码,但因其译码算法复杂,不易实现,一直没有得到广泛应用。1981年,Tanner提出了concept使用图模型来描述码字,使得LDPC码的奇偶校验矩阵对应于称为Tanner图的双向图。使用Tanner图构造的LDPC码可以通过并行解码得到显着改进。降低解码复杂度。奇偶校验矩阵H对应的Tanner此后,出现了越来越多的LDPC译码算法,其中表现最好的是BitFlippingAlgorithm和Min-SumAlgorithm。同时,在上述两种纠错算法的基础上还有很多变种算法,以较小的代价提高译码精度。下图描述了编码数据位“1101”在信道传输后变为“1001”后接收端的bit-flip解码过程。一次迭代后,错误的位被纠正。3、软信息是用多个比特来表示一个比特的值,相当于置信度可以用多个比特的精度来表示一条信息。用硬信息来表示一条消息,只有“0”或“1”。软信息更准确地表达了一条信息的置信度,软信息可以用“0.1”、“0.4”、“0.65”、“0.99”等方式表示。有了软信息,解码器可以在相同的比特率下纠正更多的错误。但存储不同于通信领域,从内存中读取的数据只能是0或1。因此,软信息的获取只能通过改变内存读取方式和多次读取来获取。多次阅读相同的信息,必然会导致阅读成绩的下降。因此,在SSD控制器上,应尽可能降低使用软信息进行解码的概率。4.LDPC是一种概率解码算法。在不同的误码率下都有一个译码成功的概率,这个概率有一个明显的特征。当待解码数据的错误率较低时,LDPC解码失败概率很低,可低至1E-15,但很难做到零失败。主要原因是每个矩阵都有一个陷阱集。当trapset包含的位置点发生数据错误时,LDPC无法解码成功。随着错误率的逐渐增加,解码失败概率迅速增加,接近100%失败。5、对于BCH和LDPC,在相同码率下,码长越长,纠错能力越强。针对市面上流行的3DTLCFlash的页面大小(页面大小决定了纠错算法的码率),我们对比了2KB/4KBBCH和2KB/4KBLDPC硬判决解码的纠错能力。当码长增加时,在相同译码算法、相同码率下,纠错能力提升近50%。长码长ECC算法的应用更好的提高了纠错算法的能力,延迟了SSD主控使能LDPC软判决解码的使用,降低了软判决解码的负面影响(在性能和性能方面)能量消耗)。总结:数据正确性是SSD最基本的要求,纠错码保证了数据的万无一失。随着更多新的Flash结构的出现,纠错编码算法也在逐步演进。LDPC算法最大限度的保证了数据的正确性。而且随着越来越多的SSD主控使用4KBLDPC,SSD的寿命也得到了更好的延长。