2.6 SSD之ECC/LDPC

1. ECC: Error checking and correction

2011年做手机memory时,2D NAND检错和纠错算法是ECC,一个page 2k,每256 bytes做ecc,纠1检2。

分为行校验和列校验,简单的说就是从行或列逐层做异或(^),奇数个1就是1,偶数个1就是0.

write时比如按列来看(行的原理一样),还是画出来图容易明白:

Byte 0bit7bit6bit5bit4bit3bit2bit1bit0RP0RP2RP4...RP14
Byte 1bit7bit6bit5bit4bit3bit2bit1bit0RP1
Byte 2bit7bit6bit5bit4bit3bit2bit1bit0RP0RP3
Byte 3bit7bit6bit5bit4bit3bit2bit1bit0RP1
....................................
....................................RP15
Byte 252bit7bit6bit5bit4bit3bit2bit1bit0RP0RP2RP5
Byte 253bit7bit6bit5bit4bit3bit2bit1bit0RP1
Byte 254bit7bit6bit5bit4bit3bit2bit1bit0RP0RP3
Byte 255bit7bit6bit5bit4bit3bit2bit1bit0RP1
CP1CP0CP1CP0CP1CP0CP1CP0
CP3CP2CP3CP2
CP5CP4

CP0: bit 0/bit 2/bit 4/bit 6 这4列异或。

CP1: bit 1/bit 3/bit 5/bit 7 这4列异或。

CP2: bit 0/bit 1/bit 4/bit 5 这4列异或。

CP3: bit 2/bit 3/bit 6/bit 7 这4列异或。

CP4: bit 0/bit 1/bit 2/bit 3 这4列异或。

CP5: bit 4/bit 5/bit 6/bit 7 这4列异或。

最后得出CP0-5, RP0-15总共 22 bits,在NAND中占用3个 Bytes放在Spare区。

bit7bit6bit5bit4bit3bit2bit1bit0
Byte 0RP7RP6RP5RP4RP3RP2RP1RP0
Byte 1RP15RP14RP13RP12RP11RP10RP9RP8
Byte 2CP5CP4CP3CP2CP1CP011

read时怎么用它来纠错和检错呢?

同Write一样计算CP,RP,计算结果和spare中存放的进行对比。为

如果read出来的结果有1bit反转,怎么找出并纠正呢?

刚才的图再拿过来用下,还是从列先讲原理,比如bit2的列里存在1个bit反转,从最外层往里二分法比较。

bit7列bit6列bit5列bit4列bit3列bit2列bit1列bit0列
CP1CP0CP1CP0CP1CP0CP1CP0
CP3CP2CP3CP2
CP5CP4

对比CP4/CP5与之前存入的比较,发现CP4不一致;然后下一层级对比CP2/CP3发现在CP3,最后一层得出CP0不一致也就找到了bit2这一列。

同理,从行找到具体哪行,就确定那个bit发生了反转了,纠正过来。

如果有2个bit发生反转,假如在同一行,通过CP能找到在哪2列,但是RP是完全相同找不到在哪行。所以2个及以上的bit反转ECC就无能为力了。

2.LDPC: Low Density Parity Check Code

发展到3D NAND后,ssd容量也变大了,单个page也大了。ECC的纠正能力就难以满足,于是有了2k LDPC,到现在的4k LDPC。

LDPC是稀疏校验矩阵线性分组码,分为正则编码和非正则编码。简单点说就是设计一个校验矩阵H和生成矩阵G并且满足HG=0。write时数据和G矩阵异或,得出编码c;read时数据的转置和H矩阵做异或,得出编码s,s为0则解码成功。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值