别只顾着围观看热闹,解读SSD专业词汇
pceva吧
全部回复
仅看楼主
level 12
毛主爱 楼主
很多人都喜欢看浴大的帖子,不过限于知识水平,很多人其实只是停留在“不明觉厉”的阶段。围观看热闹之余大家是否也想看懂、了解更多内容呢?一起来补习些基础知识吧,这对于认识固态硬盘工作原理也是很有用的。
何为ECC,ECC的原理是什么?
ECC是 “Error Checking and Correction”的缩写,即错误检测与修正。
要纠正错误,首先需要发现错误,这就是纠错校验码的作用。纠错码无所不在,举个常见的例子,身份证号码有18位长,输入的时候容易输错,那么就在18位身份证号码的最后一位设置了一个校验位,他是由前17位数字经过计算生成的一个校验码。在输入身份证号码的时候,系统就可以通过运算检验输入是否正确。如果感兴趣的话你可以百度一下“ISO 7064:1983.MOD 11-2”,这就是身份证校验码的计算标准。另外像ISBN国际标准书号的末位也是一个校验码,当然计算方法是不同的。
Read Retry其实并不新鲜,在机械硬盘出现坏道后也能体会到硬盘反复尝试读取的现象。对于固态硬盘来说,Read retry还包括更高级的阶段,也就是“Shift Read”,主控会通过调整多组不同的电压等参数来再度尝试读取。
还回到上面那个视力检查的例子中,如果医生发现我们的视力的确是坏掉了(近视了..类似颗粒进入寿命末期,出错越来越多),就会开始给我们配眼镜,通过添加和尝试不同的镜片让我们戴上后再尝试识别视力对数表上的图形(近视的同学应该都经历过…镜片就像是Shift Read,调整尝试多组读取参数尝试读取),经过调整后就有可能将数据正确地读取出来。
除了上边的纠错方式之外,有些固态硬盘主控还会使用类似RAID阵列原理的数据冗余存储方式来保证在前边所述的纠错都失败时能最终保住盘上的数据。比如SandForce支持的RAISE特性和美光M500上所使用的RAIN(Redundant Array of Independent NAND,独立NAND冗余阵列)。当然这些也是以消耗固态硬盘可用容量作为代价的,目的就是为数据安全树立最后一道屏障。
总结:
BCH纠错是最基本的纠错方式,他能够检测到错误并在一定范围内修正错误。如果BCH纠错无法解决则尝试Read Retry重试读取,重试读取还包括调整读取参数的Shift Read,当这些都无法纠正错误时,RAISE/RAIN这类冗余纠错措施将是最后一道防线(这道防线不是所有固态硬盘都具备)。纠错算法是有一定额外开销的,比如对于三星840Evo的掉速BUG,现在最为可能的原因就是三星为了提升TLC闪存在耐久度测试中的表现,降低了后台数据刷新的频率,出错增多后依靠Read Retry来强行读取,重试读取次数过多导致读取速度的下降。
2014年10月28日 05点10分 1
level 12
毛主爱 楼主
本文出自PCEVA!转载请说明!
2014年10月28日 05点10分 2
1