LDPC 填 3D NAND 出错率的坑

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Memblaze_2011/article/details/72621536

无论是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具有延时低,控制器复杂度低,易实现,同时可以满足2D NAND出错率需求等优点,在上一代产品中各个厂商采用的BCH编码方案。Memblaze的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 的数据
  2. 把数据发送给其中一个LDPC ECC 解码单元
  3. LDPC ECC 解码单元根据设置的迭代次数进行计算
  4. 经过步骤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的坑,为其可靠性保驾护航。


猜你喜欢

转载自blog.csdn.net/Memblaze_2011/article/details/72621536