固態硬盤控制器上有ECC糾錯模塊 ,部分閃存還集成了ECC糾錯模塊。常用的閃存ECC 糾錯算法有BCH (Bose、Ray -Chaudhuri和Hocquenghem三位大神名的首字母 )和LDPC(Low Density Parity Check Code)等。目前市場上很多固態硬盤控制器都采用 BCH ,但LDPC正成為一種趨勢 。
目前,絕大多數固態硬盤都采用 靜態ECC糾錯方案 。ECC糾錯單元(用戶數據 )和ECC校準數據的大小在整個固態硬盤生命周期中是固定的,即糾錯能力 始終保持不變 。由于閃存在使用初期比特 翻轉的概率較小,隨著閃存的使用,錯誤的概率逐漸增加 。
因此 ,一些固態硬盤開始使用動態ECC糾錯方案 :開始使用更少的糾錯碼 ,以便在閃存頁面中存儲更多的用戶數據 ;隨著固態硬盤的使用,糾錯能力需要加強,用戶數據在閃存頁面中的比例越小,糾錯碼的比例越大。動態 ECC 糾錯 方案 是隨著 固態硬盤的使用 ,動態調整 其ECC糾錯能力 。
如果您開始使用 更少的ECC校準數據,那么每個頁面都可以寫更多的用戶數據 ,這相當于固態硬盤有更多的OP (Over Provisioning,預留空間),減少了寫放大 ;同時,從控制器中寫入或讀取閃存通道 ,用戶數據 越多,帶寬使用率越高。
事實上,動態ECC的優勢不僅體現 在ECC 糾錯能力隨著時間的推移而變化 ,而且體現在固態硬盤的閃存位置上。每個Die甚至每個閃存頁面都有不同的糾錯能力。在固態硬盤閃存陣列中,有些Die可能質量更好,有些 Die可能質量更差。好的Die可以使用更少的ECC糾錯代碼;相反,差的Die需要更強的ECC糾錯 。對于MLC來說,Lower Page比Upper Page更穩定 ,因此可以使用較弱的ECC保護 ;相反,Upper Page需要更強的ECC 保護 。
因此,ECC糾錯碼成了因態硬盤中不可缺少的重要部分,發揮它強大的糾錯功能。