分享

LDPC 填 3D NAND 的坑

 小溪咚咚 2017-07-03


作者: MemBlaze 李月宽

 

想要和作者还有《大话存储》作者冬瓜哥、《PCI Express体系结构导读》作者王齐、《蛋蛋读NVMe》作者蛋蛋等全世界的大牛讨论SSD及存储相关技术?加nanoarch为微信好友,拉你进ssdfans微信群 。 


无论是2D NAND还是3D NAND,都存在RBER(初始比特出错率)的问题,并且PE(擦写)次数增加,RBER将逐渐变大。有错误就需要纠错,在2D NAND时代, MLC寿命末期的RBER示意如下。


上图共有4096*8个单元,每个单元为1bit,代表一个4KB大小的数据块,红点则是出错的比特(下文图片仍采用这种规范表示NAND的出错率)


对于MLC的这些错误比特,BCH编码即可以完成纠正,这也是2D NAND时代MLC能够成为企业级固态硬盘广泛应用的直接原因(SLC太贵,TLC出错率太高造成硬盘寿命达不到要求)。而3D TLC NAND出错率比2D MLC NAND高出很多,同样是一块4KB大小的数据块,3D TLC NAND寿命末期的出错率大约是下图这样。



寿命后期的3D TLC NAND对于3D TLC NAND的错误率,BCH编码显得非常无力。这就是LDPC应用于新一代PCIe SSD的大背景。


1963年,Gallager在MIT Press上发表了一个名为《Low-Density Parity-Check Codes》的论文,LDPC就此诞生,但是在此之后沉寂了30年,直到上世纪90年代才被重新重视,LDPC码是迄今为止发现的离Shannon 容量限最近的一类码国际上对LDPC 码的理论分析、工程应用以及超大规模集成电路(VLSI)实现等方面的研究都取得了重要进展,LDPC 编码已经广泛应用于光通信、卫星通信、深空通信、4G、高速与甚高速率数字用户线和磁记录等系统中。


在3D NAND时代, LDPC可以充分利用NAND的错误偏移的特点进行解码。下面表格就从BCH和LDPC的实现复杂度以及纠错能力等方面做了对比。



BCH

LDPC 硬解码

LDPC 硬+软解码

读延时

解码延时

固定时间-短

固定时间-短

多次迭代-长

控制器复杂度

纠错能力

确定性

纠错能力低

概率性

纠错能力高

概率性

纠错能力高

功耗

跨NAND移植性

高出错率纠错能力

没有

 

从上表可以看出,BCH具有延时低,控制器复杂度低,易实现,同时可以满足2D NAND出错率需求等优点,在上一代产品中各个厂商采用的BCH编码方案。我们的PBlaze3, PBlaze4 PCIe SSD两代产品中同样采用了BCH。由于3D TLC NAND 的出错率太高,BCH 没办法解决,我们选择了LDPC。LDPC 分硬解码和硬+软解码两种。3D TLC NAND在寿命前中后期大量使用硬解码,到了寿命末期部分数据需要使用硬+软解码。LDPC硬解码与BCH比较具有同样的低延时特性,而LDPC硬解码的纠错能力是BCH的2-3倍。LDPC硬+软解码与LDPC硬解码比较优势是可以纠正高出错率,但是延时较高。


下面介绍小LDPC硬解码和硬+软解码的过程。


LDPC硬解码的过程如下:

  1. 发送命令读取Flash Channel 连接的NAND 对应Page 的数据

  1. 把数据发送给其中一个LDPC ECC 解码单元

  2. LDPC ECC 解码单元根据设置的迭代测试进行计算

  3. 经过步骤3,如果数据没有错误或者全部错误数据都已经纠正就把数据移动到DDR。

    从上面过程可以看出一次LDPC硬解码仅需要读取一次NAND, 然后尽全力采用多次迭代计算来纠正错误。这种方法延时比较低。NAND到了寿命末期出错率较高,部分Page进行多次迭代计算可能仍然不能全部纠正,这时候就需要硬软都上了。


LDPC硬+软解码的过程如下:

  1. LDPC 硬解码失败,发送请求软解码搞定。

  2. 固件发送多次读取NAND 上面Page的请求,这里假设是3次读吧。这三次读是比较讲究姿势的。TLC 有Low, Upper 和Extra三类Page, 不同Page 姿势不一样。即使是同类Page调整的幅度也是不同的。另外调整方法和上次的状态,大环境的影响都是相关的。

  3. 从NAND 三次读出的原始数据放到DDR 中。

  4. 加载Log Likelihood Ratio(LLR ) 表给LDPC 解码单元指定的位置。LLR 表那里来的。这个是NAND 厂的智慧结晶啊。我们是好伙伴。赠送的。

  5. 三份原始数据和一个LLR 表都来了,这时候软解码进程就开始了。整个过程硬件会自动的完成。这里也可以通过寄存器控制迭代多少次。

  6. 解码完成之后会通过CRC检测是否成功,如果成功纠正的数据就移动到DDR。


你可能会问什么时候LDPC硬解码会失败, 答案是超过控制器的硬解码能力。那控制器的硬解码能力是什么样子的呢。秘密。。。。看下图。错误率超过下图就要用硬+软解码了。



硬解码最大支持的3D TLC NAND出错率


LDPC使得3D-TLC大规模应用于企业级PCIe SSD成为现实,Memblaze在新一代PBlaze系列PCIe SSD中使用3D-TLC作为存储介质,一方面通过采购高质量3D-TLC保障介质在耐擦写能力、性能稳定性等方面处于一个较高的水准,另一方面采用了Microsemi的Belmar控制器,这一控制器的一大特点就是含有8个LDPC引擎,每个LDPC引擎可以达到1GB/s带宽,总共8GB/s带宽。这样的性能足以保障纠错不会成为性能瓶颈。


Memblaze LDPC 方案完美填好3D TLC NAND的坑,为其可靠性保驾护航。

 

Gallager,《Low-Density Parity-Check Codes》,1963

http://www.inference.phy./mackay/gallager/papers/ldpc.pdf


喜欢就请分享转发!


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多