3D Nand Flash的大量上市,LDPC几乎成了所有厂商营销的噱头,甚至到了好像不提LDPC就上不了台面一样。
从ECC的角度看,目前没有比LDPC更强大的纠错算法,这的确是事实。
与之相反,市场上总会有另一种不同的声音存在,那就是:虽然LDPC在HDD中已经使用很多年,但对于LDPC在Nand Flash中使用,并没有经过市场的验证,并且,从理论上讲LDPC也存在先天性缺陷:
1、因为要做迭代,LDPC的latency非常长。
2、要得到soft information,HDD可以一次就拿到soft information,而nand flash无法拿到精确的软信息,一旦拿错,则后果则是灾难性的,LDPC的decoder会被软信息所欺骗,因为,LDPC需要利用软信息来计算概率,而错误的信息在计算的过程中会被不断的放大,
3、Nand Flash有个非常重要的特点是:写错误,例如,一些cell坏掉,而不是读错误,一旦写错,无论如何去拿软信息,都是错误的,错误的信息输入LDPC,则会100%带来错误,这个错误是无法改变,会导致LDPC decoding的Error Floor非常的高,从code的本身看,目前还无法设计出。
4、LDPC是不可控的,是不可计算的。
基于本人一贯的保守与眼拙之故,本人更加看好BCH+LDPC的混合模式,但也并不反对任何一家使用单纯的LDPC。
回归**本意:LDPC的设计者,如何测试自己的LDPC,这也是最近遇到最多的咨询问题,答案如下:
1、先准备LDPC code word;
2、在NFA100-E下,settings-pattern- settings-block - program-buffer pattern,将LDPC code word作为pattern写入nand flash;
3、获取LLR,在此之前,需要知道Nand Flash厂商的一些“读”的特殊命令,如:micron的 READ OFFSET,thoshiba的 SHIFT READ等命令,这些命令可以改变发送给nand flash读命令的阈值电压,不同的阈值电压可能会读取到不同的结果,可以据此信息生成自己的LLR。
对于同一个bit,可以使用Vth0-2读三次,得到三个输出结果,例如:1,1,0,通过这3bits来定义自己的LLR算法,从而得到自己的LLR信息。
4、将生成的LLR在PC端输入离线LDPC解码引擎即可做LDPC的分析。 |