SSD ECC纠错“天网”之LDPC码

简介: 在之前的文章中有提到过,SSD FTL层有一个很重要的功能就是ECC纠错(ECC, Error Correction Code)。


ECC纠错技术可以纠正一定数量的错误bit。主流的SSD ECC纠错技术主要有BCH编码和LDPC编码(LDPC码即低密度奇偶校验码,Low Density Parity Check Code,LDPC)。


不过,由于对更为廉价且密度更高的NAND闪存的需求以及3D NAND闪存的普及,对主控ECC纠错能力的要求越来越苛刻, BCH编码技术会慢慢退出历史舞台,目前市面上的SSD绝大多数都是采用LDPC码纠错。

LDPC码很低调,在背后默默地护送数据安全传输,不求回报。LDPC码其实是低调奢华有内涵,非常人能精通。很多公司LDPC的开发与维护都是专业的博士大牛们主宰。吾等小辈只能略过皮毛。


目前SSD主控基本通过硬件的方式实现的,在主控的FW中只需要传输主要的参数即可。

以下内容只是简单的大概介绍,想深入仔细的了解,请自行问度娘或者维基百科,更又很多学术论文。

【LDPC码简介】
LDPC码是一种线性分组码,它于1962年由Gallager提出,之后很长一段时间没有收到人们的重视。直到1993年Berrou等提出了turbo码,人们发现turbo码从某种角度上说也是一种LDPC码,近几年人们重新认识到LDPC码所具有的优越性能和巨大的实用价值。1996年MacKay和Neal的研究表明.采用LDPC长码可以达到turbo码的性能,而最近的研究表明,被优化了的非规则LDPC码采用可信传播(Belief Propagation)译码算法时,能得到比turbo码更好的性能。


目前,LDPC码被认为是迄今为止性能最好的码。LDPC码是当今信道编码领域的最令人瞩目的研究热点,近几年国际上对LDPC码的理论研究以及工程应用和VLSI(超大规模集成电路)实现方面的研究都已取得重要进展。基于LDPC码的上述优异性能可广泛应用于光通信、卫星通信、深空通信、第四代移动通信系统、高速与甚高速率数字用户线、光和磁记录系统等。

LDPC码可以用非常稀疏的校验矩阵或二分图来描述,也就是说LDPC码的校验矩阵的矩阵元除一小部分不为0外,其它绝大多数都为0。通常我们说一个(n,j,k) LDPC码是指其码长为n,其奇偶校验矩阵每列包含j个1,其它元素为0;每行包含k个1,其它元素为0。j和k都远远小于n,以满足校验矩阵的低密度特性。校验矩阵中列和行的个数即j和k为固定值的LDPC码称为规则码,否则称为非规则码。一般来说非规则的性能优于规则码。

【LDPC码的编码与译码】
LDPC 码所面临的一个主要问题是其较高的编码复杂度和编码时延。对其采用普通的编码方法,LDPC 码具有二次方的编码复杂度,在码长较长时这是难以接受的,幸运的是校验矩阵稀疏性使得LDPC 码的编码成为可能。目前,好的编码方法一般有如下几种情况:


1、T.J.Richardson 和R.L.Urbanke 给出了利用校验矩阵的稀疏性对校验矩阵进行一定的预处理后,再进行编码。

2、设计LDPC 码时,同时考虑编码的有效性,使H矩阵具有半随机矩阵的格式。
3、H 矩阵具有某种不变特性所采用的其他编码方法,例如基于删除译码算法提出的编码方案。

对同样的LDPC码来说,采用不同的译码算法可以获得不同的误码性能。优秀的译码算法可以获得很好的误码性能,反之,采用普通的译码算法,误码性能则表现一般。

LDPC码的译码算法包括三大类:硬判决译码、软判决译码和混合译码。


1. 硬判决译码将接收的实数序列先通过解调器进行解调,再进行硬判决,得到硬判决0,1序列,最后将得到的硬判决序列输送到硬判决译码器进行译码。这种方式的计算复杂度固然很低,但是硬判决操作会损失大部分的信道信息,导致信道信息利用率很低,硬判决译码的信道信息利用率和译码复杂度是三大类译码中最低的。常见的硬判决译码算法有比特翻转算法、一步大数逻辑译码算法。
2. 软判决译码可以看成是无穷比特量化译码,它充分利用接收的信道信息(软信息),信道信息利用率得到了极大的提高,软判决译码利用的信道信息不仅包括信道信息的符号,也包括信道信息的幅度值。信道信息的充分利用,极大地提高了译码性能,使得译码可以迭代进行,充分挖掘接收的信道信息,最终获得出色的误码性能。软判决译码的信道信息利用率和译码复杂度是三大类译码中最高的。最常用的软判决译码算法是和积译码算法,又称置信传播算法。
3. 与上述的硬判决译码和软判决译码相比,混合译码结合了软判决译码和硬判决译码的特点,是一类基于可靠度的译码算法,它在硬判决译码的基础上,利用部分信道信息进行可靠度的计算。常用的混合译码算法有加权比特翻转算法、加权OSMLG译码算法。

【LDPC码小结】
LDPC码是目前人们发现的纠错性能最好的一种码。为了说明这一问题,下面对LDPC码和turb码进行了简要比较。简单的说,LDPC码比turbo码区别在于,LDPC码是一种线性分组码,采用BP迭代译码;而turbo码采用的是卷积码,译码方法主要有MAP类的算法和软输出Viterbi算法的迭代译码。LDPC码有理论极限性能优于turbo码, 给定1/2码率条件下,采用BPSK调制的高斯信道中两种编码方法的纠错性能比较,LDPC码比turbo码更接近香农限,目前最优的LDPC码方案具有的香农限仅有0.0045dB。相对于turbo码而言,LDPC码具有更低的误码平台;其描述简单,对严格的理论分析具有可验证性;吐量大,极具高速译码潜力,而且因为LDPC码采用了并行的迭代译码算法,以及由于LDPC码具有随机码特性,在与信源或者信道级联时,不需要额外加交织器.系统的复杂度和延时都比turbo码要低。


相关文章
|
存储 编解码 算法
准循环 LDPC 码(QC-LDPC) | 带你读《5G-NR信道编码》之九
本节将为你介绍准循环 LDPC 码(QC-LDPC)的基本内容。
13739 2
准循环 LDPC 码(QC-LDPC) | 带你读《5G-NR信道编码》之九
|
监控 调度 开发工具
IO神器blktrace使用介绍
## 前言 1. blktrace的作者正是block io的maintainer,开发此工具,可以更好的追踪IO的过程。 2. blktrace 结合btt可以统计一个IO是在调度队列停留的时间长,还是在硬件上消耗的时间长,利用这个工具可以协助分析和优化问题。 ## blktrace的原理 一个I/O请求的处理过程,可以梳理为这样一张简单的图: ![](http://image
19736 0
|
10月前
|
编解码 算法 数据安全/隐私保护
基于BP译码的LDPC误码率matlab仿真,分析不同码长,码率,迭代次数以及信道类型对译码性能的影响
本内容介绍基于MATLAB 2022a的低密度奇偶校验码(LDPC)仿真,展示了完整的无水印仿真结果。LDPC是一种逼近香农限的信道编码技术,广泛应用于现代通信系统。BP译码算法通过Tanner图上的消息传递实现高效译码。仿真程序涵盖了不同Eb/N0下的误码率计算,并分析了码长、码率、迭代次数和信道类型对译码性能的影响。核心代码实现了LDPC编码、BPSK调制、高斯信道传输及BP译码过程,最终绘制误码率曲线并保存数据。 字符数:239
507 5
|
存储 缓存 固态存储
|
算法 数据安全/隐私保护
基于星座图整形方法的QAM调制解调系统MATLAB误码率仿真,对比16,32,64,256四种QAM调制方式
本MATLAB 2022a仿真展示了不同QAM阶数下的星座图及误码率性能,通过星座图整形技术优化了系统性能。该技术利用非均匀分布的星座点提高功率效率,并通过合理布局增强抗干扰能力。随着QAM阶数增加,数据传输速率提升,但对信道质量要求也更高。核心程序实现了从比特生成到QAM映射、功率归一化、加噪及解调的全过程,并评估了系统误码率。
424 0
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的校园二手交易平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的校园二手交易平台附带文章源码部署视频讲解等
213 2
|
关系型数据库 MySQL 数据库
SQLite和MySQL指南
【5月更文挑战第18天】了解如何使用Python连接SQLite和MySQL数据库。首先,安装必要的库,如`sqlite3`(Python自带)和`mysql-connector-python`。接着,连接SQLite数据库,创建表、插入和查询数据。对于MySQL,同样建立连接,但需提供额外的连接信息。使用参数化查询防止SQL注入,并处理异常以增强程序稳定性。可选ORM框架如SQLAlchemy简化操作。考虑使用内存数据库、连接池、异步库(如`aiosqlite`)以优化性能。使用环境变量或配置文件安全管理连接信息,并实施安全性措施保护数据库。通过本文,提升Python数据库编程技能。
|
固态存储 关系型数据库 MySQL
NVMe SSD原子写
NVMe SSD原子写
1050 0
NVMe SSD原子写
|
固态存储 算法 芯片
揭秘慧荣科技SMI专利黑科技—NANDXtend ECC 技术
NANDXtend™是慧荣科技专为TLC SSD产品的需求设计,所独家开发的先进韧体技术。NANDXtand™三维解错修正机制,结合了LDPC(低密度奇偶修正码)及RAID Data Recover修正技术,能高速平行译码并且精准修正错误。

热门文章

最新文章