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)要做的事情了。