ECC纠错工作原理
我们知道,所有型号的闪存都无法保证存储的数据会水久稳定,这时候就需要ECC(纠
错码)去给闪存纠错。ECC能力的强弱直接影响到SSD的使用寿命和可靠性。本章将简单
介绍ECC的基本原理和目前最主流的ECC算法—LDPC。
信号和噪
噪声信号充斥着整个世界,不只包括打电话时对方声嘶力竭的喊声,也包括还钱时手抖多按的一个0,甚至在生物学领域,基因对的复制偏差、癌细胞的产生、意外突破橡胶屏障的新生命都可以划入噪声信号的范畴。凡是有信息传递的地方就有噪声。我们唯一能做的是,把噪声限制在一定大小的笼子里。
如何建造这样一个笼子?我们看一下历史的经验。
场景是,蛋蛋每天坐地铁都会邂逅一个美丽的女孩。两人日久相熟,经常相视一笑,却默然无语。转眼间,蛋蛋就要离开这个城市,他决定勇敢地表白。
表白的地点还是那一班地铁。唯一的困难是地铁太吵了,女神能够准确无误地接收到
蛋蛋爱的呼唤吗?这难不倒蛋蛋,他采取了以下策略。
1)扩音器
2)每个字清晰地说三遍。
3)结尾用手比画一个爱心出来。
利用扩音器可以改善有效信号和噪声的强度比,为女神准确地接收做了基础建设。每个字说三遍,增加了信息的冗余,即使有少量字没有听清,也不影响表达的内容。结尾个爱心的手势,增加对关键信息的?;?,借助大家都懂的意象,盖上爱的印章。
聪明的蛋蛋揭示了长久以来我们传播信息的诀窍。增强信号和噪声的强度比,增加信号冗余。前者不在此讨论,我们只考虑在不用扬声器的情况下,如何尽量准确地传递信息。
实际通信中,我们用 information bits表示有效信息长度, channel use表示实际通信中传输的信息长度。定义:
Code rate=(information bits)/(channel use)
举个例子,因为每个字说三遍,所以蛋蛋采用的 Code rate为13
Code rate可以反映冗余程度。Code rate越高,冗余越小、反之冗余越大。Shannon揭示了,每一种实际的信息传输通道都有一个参数C,如果 Code rate<C,有效信息传递的错误率可以在理论上趋近于0。但是如何趋近于0,就是纠错编码( Error correction code)要做的事情了。