糾錯碼

在計算機 ， 電信 ， 信息理論和編碼理論中 ， 糾錯碼 （ ECC ) 是信息傳輸中錯誤檢測與糾正的工具 。 它通常用在不可靠或嘈雜的信道中 。 數據發送方利用糾錯碼中的冗餘信息 ， 使得接收方能夠檢測消息傳輸中發生的錯誤 ， 而且通常可以糾正這些錯誤而無需重新傳輸 。 美國數學家理查德 · 漢明 （ Richard Hamming ） 在1940年代開創了這一領域 ， 並在1950年發明了第一個糾錯碼 ： 漢明 （ 7,4 ） 代碼 。 相比錯誤檢測 ， 糾錯碼不僅能夠檢測到錯誤 ， 而且可以將其更正 。 它的優點是在出現錯誤時不需要反向信道來請求重發數據 ， 缺點是消息中增加了固定開銷 ， 因此需要更高的前向信道帶寬 。 因此 ， 糾錯碼用於重傳成本高昂或無法實現的情況 ， 例如單向通信鏈路 ， 時延較長的鏈接 ， 以及以多播方式發送給多個接收者的鏈接 。 比如 ， 繞天王星運行的衛星 ， 由於傳輸錯誤而造成的重發會造成5個小時的延遲 。 糾錯碼信息通常添加到大容量存儲設備中 ， 以恢復損壞的數據 ， 並廣泛用於調制解調器 、 固態硬盤 ， 以及主存爲 ECC 內存的系統中 。 接收機中的糾錯碼處理可以應用於數字比特流 ， 也可以應用於數字調製載波的解調 。 對於後者 ， 糾錯碼是接收器中類比數位轉換器的組成部分 。 維特比 （ Viterbi ） 解碼器採用軟判決算法 ， 以從被噪聲破壞的模擬信號中解調數字數據 。 許多糾錯碼編碼器 / 解碼器還可以生成比特誤碼率 （ BER ） 信號 ， 該信號可用作反饋以微調模擬接收電子設備 。 糾錯碼能夠糾正的錯誤位 / 丟失位的最大數量取決於它的的設計 ， 因此 ， 不同的糾錯碼適用於不同的環境 。 一般來說 ， 能夠糾正大量錯誤的代碼中有着更多的冗餘信息 ， 所以會需要更多帶寬進行傳輸 ， 從而降低了有效比特率 ， 且同時提高了接收到的有效信噪比 。 克勞德 · 香農 （ Claude Shannon ） 的有噪信道編碼定理回答了以下問題 ： 若使用最有效的代碼將解碼錯誤概率變爲零 ， 數據通信還剩下多少帶寬 ？ 對於具有基本噪聲水平的信道 ， 該定理給出了理論上的最大信息傳輸速率 。 但是 ， 該證明不具建設性 ， 也就是說它並不能用來構建實現最大速率的代碼 。 經過多年的研究 ， 如今一些先進的糾錯碼系統 ， 其速率已非常接近理論最大值 。