作者: 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具有延时低,控制器复杂度低,易实现,同时可以满足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硬解码的过程如下:
LDPC硬+软解码的过程如下:
你可能会问什么时候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 喜欢就请分享转发! |
|