專利名稱:雙重誤差校驗碼系統(tǒng)的制作方法
背景技術(shù):
總的來說,本發(fā)明有關(guān)基于處理器的系統(tǒng)和基于處理器的系統(tǒng)中的內(nèi)存,具體的,有關(guān)糾正儲存于這些系統(tǒng)中的數(shù)據(jù)的系統(tǒng)。
在電子系統(tǒng)中,數(shù)據(jù)可以存儲在內(nèi)存中,在某些情況下,在存儲或傳輸期間,數(shù)據(jù)可能會發(fā)生損壞。因此,希望能夠確定數(shù)據(jù)是否損壞,如果可能,希望能糾正損壞的數(shù)據(jù)。已經(jīng)開發(fā)出了附加在所存儲數(shù)據(jù)中的誤差校驗碼。在讀取數(shù)據(jù)時,利用一個判據(jù)來確定所讀取的這個數(shù)據(jù)是否是正確的。該判據(jù)是基于附加的誤差校驗碼。在某些情況下,如果存儲的數(shù)據(jù)是錯誤的,數(shù)據(jù)可以被糾正。
例如,一種常規(guī)的誤差校驗碼是漢明碼。標準的漢明碼只有糾正單一錯誤的能力,最多能發(fā)現(xiàn)雙重錯誤。如果雙重錯誤被發(fā)現(xiàn),這就意味著數(shù)據(jù)損壞了,一般來說,除了重復(fù)發(fā)送數(shù)據(jù)外,沒有其它方法能夠糾正錯誤。結(jié)果是數(shù)據(jù)必須重新發(fā)送,拖延了系統(tǒng)的運行并且消耗資源。
簡單地重復(fù)發(fā)送數(shù)據(jù)并不能解決在硬錯誤的情況下所出現(xiàn)的問題。當數(shù)據(jù)被錯誤地調(diào)制(例如,由于噪音的原因)時,會產(chǎn)生硬錯誤。因而,需要一種前向誤差校驗系統(tǒng)以減少數(shù)據(jù)的重復(fù)發(fā)送。
如果能夠糾正被發(fā)現(xiàn)的雙重錯誤,至少在某些情況下,可以減少重復(fù)發(fā)送數(shù)據(jù)的頻率,增加系統(tǒng)的速度和減少因雙重錯誤而產(chǎn)生的系統(tǒng)負荷。
因此,有必要找到與誤差校驗碼有關(guān)的糾正雙重錯誤的方法。
附圖概要
圖1是本發(fā)明一個實例的邏輯描述;圖2是本發(fā)明一個實例的流程圖;圖3是本發(fā)明另一個實例的流程圖;圖4是本發(fā)明另一個實例的流程圖;圖5是圖4流程圖的續(xù)圖;圖6對單獨使用漢明碼和使用本發(fā)明實例進行了比較;圖7是本發(fā)明一個實例的示意圖。
發(fā)明詳述如圖1所示,用于誤差糾正的數(shù)據(jù)單元10的邏輯描述包括在水平方向延伸的行12(用字母R表示)和橫向的列(用在C方向延伸的箭頭表示)。因而,數(shù)據(jù)單元10可以看作帶誤差校驗行12和誤差校驗列的二維數(shù)據(jù)結(jié)構(gòu)。然而,在本文中的“誤差校驗行”和“誤差校驗列”術(shù)語不是指邏輯上的行和列,與常規(guī)存儲設(shè)備上的物理行和列無關(guān)。
單元10包含一些行12和列。除了最后的行12c,所有的行12都包含用戶數(shù)據(jù)。因此,在一個實例中,行12a和行12b是用戶行,行12c可以是奇偶校驗行。奇偶校驗行12c包含奇偶校驗數(shù)據(jù)。每一個行12,包含用戶行12a和12b以及奇偶校驗行12c,都包含一些用戶位16和漢明校驗位18。
當然,我們希望圖1的描述是純粹的邏輯示意圖,位16和位18可以以任何物理形式儲存在存儲介質(zhì)中。此外,盡管我們參考的是漢明校驗位18和奇偶校驗行12c,本發(fā)明的一些實例中仍然可能使用了其它的誤差校驗算法。因此,可以在行12中使用漢明校驗位18,在列中使用其它誤差校驗算法,并在本發(fā)明的一些實例中使用一個奇偶校驗行,該行使用不同于漢明校驗位的誤差校驗算法。在本發(fā)明的另一個實例中,可以使用不同于漢明和奇偶算法的算法。
漢明方案是在固定數(shù)量的數(shù)據(jù)上操作的。即,在例證實例中,在行12上使用漢明碼。在每一個行12上的漢明校驗位18保護每行上的16個用戶位。每一個行12實現(xiàn)了一個單誤差校驗,雙重錯誤檢測方案。奇偶行12c就象用戶行12a和12b一樣被漢明碼檢查處理。也就是說,按本發(fā)明的一個實例,如奇偶行12c上的18所表示的那樣,奇偶校驗位也受漢明碼保護。
誤差校驗方案并不完美,很小部分的錯誤會躲過任何方案的檢查,或者被檢測到但沒有糾正或沒有被檢測到。如果在任意一個行12中出現(xiàn)兩個錯誤,在沒有更多的信息時,漢明方案只能偵測到錯誤而不能糾正它,因為這個方案沒有辦法知道這兩個錯誤在行12的什么地方。換句話說,漢明算法知道有錯誤但是因為無法定位而不能糾正錯誤。
奇偶行12c中的每一位都是被編排好的,所以,正如所期望的那樣,列C的權(quán)(即1的數(shù)量)應(yīng)該為偶數(shù)或奇數(shù)。因而,每一個列C實現(xiàn)了一個奇偶校驗方案。借助于奇偶行12c,可以被定位并從而修復(fù)誤差校驗行12上的雙重錯誤。
在一個實例中,所有的單誤差都可以被糾正,如果有雙重誤差,則隨后可以糾正該雙重誤差。因此在一些實例中,可以使用兩次檢查。在第一次檢查時糾正所有的單一錯誤,在第二次檢查時糾正單一的雙重錯誤。由于常規(guī)系統(tǒng)中雙重錯誤的出現(xiàn)將導致數(shù)據(jù)損壞,這個方案與現(xiàn)存的方案相比有相當?shù)膬?yōu)勢。
如圖2所示,一開始,雙重誤差校驗運算方法20判斷是否在任何行上有兩個錯誤,如菱形框22所示。如果有,則檢查奇偶行12c,如方框24所示。利用奇偶行12c,確定有錯誤的列,如方框26所示。然后,一旦它們的位置被定位,這些錯誤可以被修正,如方框28所示。
如圖3所示,一開始,編碼算法30判斷緩沖區(qū)中是否接收到了數(shù)據(jù),如菱形框32所示。數(shù)據(jù)可能串行或并行地到達一個單元10大小的數(shù)據(jù)緩沖區(qū)。當接收到相當一個行大小的數(shù)據(jù)時,漢明校驗位18將被計算并被發(fā)送到緩沖區(qū),如方框34所示。當所有的用戶行12都被接收到并且各自的漢明校驗位18都已被計算,則計算并保存奇偶行12c,如菱形框38和方框40所示。最后,奇偶行12c的漢明校驗位被計算和保存在緩沖區(qū)中,如方框42所示。
數(shù)據(jù)單元10現(xiàn)在可以被寫入存儲介質(zhì)。例如對于閃存,一個內(nèi)置狀態(tài)機可以開始其從數(shù)據(jù)緩沖器寫數(shù)據(jù)單元10到閃存單元的算法。如方框44所示。
在另一個實例中,在接收行數(shù)據(jù)和計算漢明校驗位的同時,計算奇偶位。在接收行12時,在包含鎖存器和反饋邏輯的時序電路中可以得到每一列的累積加權(quán)。這樣,在接收并存儲了最后的用戶行12之后,立即可以將奇偶行12c寫入緩沖區(qū)。
參照圖4,一開始,譯碼算法從存儲介質(zhì)(例如閃存排列)讀取數(shù)據(jù)單元10,如方框52所示。每一個行12都被送到一個誤差校驗碼解碼器(ECC),以糾正單一的錯誤,如方框54所示。如果發(fā)現(xiàn)一個錯誤,如菱形框56所示,將檢查此錯誤是否為單一錯誤,如菱形框58所示。如果是,則如方框60所示,利用包含該錯誤的行12的漢明方案,可以立即糾正該單一錯誤。隨后,如方框62所示,保存該糾正后的數(shù)據(jù)。
如果該錯誤不是單一錯誤,那么將檢查其是否為雙重錯誤,如菱形框64所示。如果是,則將行號保存在一組名為錯誤地址累加器的鎖存器中,如方框66所示。同時一個錯誤計數(shù)器被遞增,如方框68所示,其目的是記錄包含雙重錯誤的行的行號。如果錯誤既不是單一的也不是雙重的,將產(chǎn)生一個錯誤信息,如方框65所示。
同時進行解碼過程,單元10的垂直方向奇偶位被計算和累加。最后被讀取的行12是奇偶行12c,該行是在先前的編碼階段保存的。如果有必要,奇偶行12c也是經(jīng)漢明校驗的,并且其數(shù)據(jù)與其它塊一起被積累而生成奇偶校正碼。
隨后,如菱形框70所示,判斷是否已處理了最后的行和列。如果是,繼續(xù)執(zhí)行圖5,如方框72所示。
參照圖5,如方框74所示,檢查錯誤計數(shù)器和地址累加器,判斷是否有單個的行包含一個雙重錯誤。在菱形框76中,如果沒有雙重錯誤,奇偶校正碼將被設(shè)為0,如方框78所示。如果只有一行包含雙重錯誤,如菱形框80所示,則相應(yīng)位的位置反映在奇偶校正碼上,如方框84所示。否則將產(chǎn)生一個錯誤信息,如方框82所示。因為行號保存在錯誤累加器中,這個方案可以知道那一行包含了雙重錯誤。從而,如先前描述的那樣,奇偶校驗碼和錯誤地址累加器使得雙重錯誤能被糾正。
利用本發(fā)明的實例,可以糾正雙重錯誤。漢明方案只有有限的錯誤糾錯能力。然而,漢明糾正系統(tǒng)的編碼和解碼簡單性使它在許多應(yīng)用場合都極具吸引力。漢明方案是可配置的,以具備各種各樣的糾錯能力,但是,以相同數(shù)量的用戶位所需的附加校驗位的數(shù)量來衡量,漢明方案的成本將隨著糾錯能力的增加而增加。在本發(fā)明的一些實例中,通過使用兩維糾錯,在單元10的每行中提供附加的雙重誤差校正,糾錯能力可以被大幅度提高。
如圖6所示,利用二維誤差校驗方案,ECC之后的記錄誤差率明顯降低。在例證實例中,單元10有65個行12和一個奇偶行12c,每一個行包括72個位16和位18。圖中顯示了分別使用簡單漢明糾錯方案和本發(fā)明的一個實例,ECC后的錯誤率(由N位中有一個錯誤來表示,其中N是錯誤率)與ECC前的錯誤率之間的函數(shù)關(guān)系。在相近成本下,后者陡峭的斜線顯示其糾錯能力遠大于單獨使用漢明。因為兩條線分叉,當使用ECC前的錯誤率增加時,這一點尤為明顯。在百萬分(在X軸上的6)之一的輸入錯誤率上,本發(fā)明的一個實例所提供的輸出錯誤率四倍數(shù)量級優(yōu)于單獨使用漢明。
在本發(fā)明的一些實例中,其它誤差校驗方案(如Bose-Chaudhuri-Hocquenghem(BCH)碼)在相似成本上提供的糾錯能力與本方案類似。不過,在一些實例中,它們在譯碼方面更為復(fù)雜,可能需要好幾萬的門電路和其它的專用器件,并且經(jīng)常需要幾百個處理器周期。在本發(fā)明的一些實例中,達到了低成本,復(fù)雜性和糾錯能力的好的折衷。
本發(fā)明可以應(yīng)用于一系列包括閃存在內(nèi)的內(nèi)存。在一些實例中,由于提高了誤差校驗?zāi)芰?,每個單元中的比特數(shù)更多了。例如,可以使用本發(fā)明的實例,實現(xiàn)每單元4位的閃存。
最后如圖7,舉例說明了按本發(fā)明的一個實例的硬件系統(tǒng)90。其中緩沖器96被緩沖地址發(fā)生器92和接收復(fù)位(RST)信號和開始信號的解碼器94所控制。一個讀取(RD)信號被送給一個雙重錯誤地址累加器100。該雙重錯誤地址累加器100保存了具有雙重錯誤的任何行的地址。列奇偶校驗累加器102保存了每列的列奇偶數(shù)據(jù)。雙重錯誤糾錯單元104執(zhí)行雙重誤差校驗。編碼和解碼由ECC編碼/解碼器106執(zhí)行。編碼/解碼器106接收時鐘信號(CLK),數(shù)據(jù),讀(RD)信號和寫(WD)信號。一個雙重錯誤計數(shù)器98記錄雙重錯誤的數(shù)量。當校正了單個錯誤和任何雙重錯誤之后,緩沖器96傳輸該數(shù)據(jù),以便在存儲器108中保存。
盡管此處只參照有限數(shù)量的實例描述了本發(fā)明,但本技術(shù)專業(yè)人員可以對其進行許多改動。這意味著附加的權(quán)利要求包含所有的在本發(fā)明的本質(zhì)和范圍內(nèi)的這類修改和更改。
權(quán)利要求
1.一種方法,包括布置數(shù)據(jù)單元在誤差校驗行和列上;對上述行和列,確定一個糾錯算法值;及糾正一個雙重錯誤。
2.權(quán)利要求1中的方法,其中確定糾錯算法值的步驟包括對上述行和列使用不同的誤差校驗算法。
3.權(quán)利要求2的方法,包括在所述行使用漢明碼,在所述列使用奇偶方案。
4.權(quán)利要求1的方法,包括定位和糾正單一錯誤,然后糾正一個雙重錯誤。
5.權(quán)利要求1的方法,包括提供一個附加的數(shù)據(jù)行,以便在所述列上執(zhí)行一個誤差校驗算法。
6.權(quán)利要求5的方法,包括在所述行應(yīng)用第一誤差校驗算法和在所述列應(yīng)用第二誤差校驗算法,并在所述附加行提供所述第一誤差校驗算法。
7.權(quán)利要求6的方法,包括逐一為所述行和列確定糾錯算法值。
8.權(quán)利要求6的方法,包括一前一后地為所述行和列確定糾錯算法值。
9.權(quán)利要求1的方法包括計算雙重錯誤的數(shù)量。
10.權(quán)利要求9的方法,包括確定雙重錯誤的數(shù)量是否超過一個單一的雙重錯誤。
11.一種產(chǎn)品,包含存有指令的媒介,這些指令能使基于處理器的系統(tǒng)完成以下動作安排數(shù)據(jù)單元在誤差校驗行和列上;為上述行和列,確定一個糾錯算法值;糾正雙重錯誤。
12.權(quán)利要求11的產(chǎn)品,還儲存有這樣的指令,該指令使基于處理器的系統(tǒng)為上述行和列確定一個糾錯算法值。
13.權(quán)利要求12的產(chǎn)品,還儲存有這樣的指令,該指令使基于處理器的系統(tǒng)在上述的行使用漢明碼和在上述的列使用奇偶方案。
14.權(quán)利要求11的產(chǎn)品,還儲存有這樣的指令,該指令使基于處理器的系統(tǒng),定位和糾正單一的錯誤,然后糾正雙重錯誤。
15.權(quán)利要求11的產(chǎn)品,還儲存有這樣的指令,該指令使基于處理器的系統(tǒng)提供附加的數(shù)據(jù)行,以便在所述列上執(zhí)行誤差校驗算法。
16.權(quán)利要求15的產(chǎn)品,還儲存有這樣的指令,該指令使基于處理器的系統(tǒng),在上述的行使用第一誤差校驗算法,在上述的列使用第二誤差校驗算法,并在上述的附加行提供上述第一誤差校驗算法。
17.權(quán)利要求16的產(chǎn)品,還儲存有這樣的指令,該指令使基于處理器的系統(tǒng)逐一為所述行和列確定糾錯算法值。
18.權(quán)利要求16的產(chǎn)品,還儲存有這樣的指令,該指令使基于處理器的系統(tǒng)一前一后地為所述行和列確定糾錯算法值。
19.權(quán)利要求11的產(chǎn)品,還儲存有這樣的指令,該指令使基于處理器的系統(tǒng)能夠計算雙重錯誤的數(shù)量。
20.權(quán)利要求19的產(chǎn)品,還儲存有這樣的指令,該指令使基于處理器的系統(tǒng)能夠確定雙重錯誤的數(shù)量是否超過一個單獨的雙重錯誤。
21.一個系統(tǒng),包括一個處理器;與所述處理器相連的存儲器,該存儲器保存有指令,該指令使處理器能夠安排數(shù)據(jù)單元在誤差校驗行和列;對上述行和列,確定一個糾錯算法值;糾正雙重錯誤。
22.權(quán)利要求21的系統(tǒng)中的存儲器存儲了指令,該指令使處理器能夠為上述行和列確定一個糾錯算法值。
23.權(quán)利要求22的系統(tǒng)中的存儲器存儲了指令,該指令使處理器能夠?qū)ι鲜龅男惺褂脻h明碼和在上述的列使用奇偶方案。
24.權(quán)利要求21的系統(tǒng)中的存儲器存儲了指令,該指令使處理器能夠定位和糾正單一錯誤,然后糾正雙重錯誤。
25.權(quán)利要求21的系統(tǒng)中的存儲器存儲了指令,該指令使處理器能夠提供一個附加的數(shù)據(jù)行,以便在上述的列上執(zhí)行誤差校驗算法。
26.權(quán)利要求25的系統(tǒng)中的存儲器存儲了指令,該指令能夠使處理器對上述行應(yīng)用第一誤差校驗算法,在上述列應(yīng)用第二誤差校驗算法,并對所述的附加行提供上述第一誤差校驗算法。
27.權(quán)利要求26的系統(tǒng)中的存儲器存儲了指令,該指令使處理器能夠逐一對上述的行和列確定糾錯算法值。
28.權(quán)利要求26的系統(tǒng)中的存儲器存儲了指令,該指令使處理器能夠一前一后地為上述的行和列確定糾錯算法值。
29.權(quán)利要求21的系統(tǒng)中的存儲器存儲了指令,該指令使處理器能夠計算雙重錯誤的數(shù)量。
30.權(quán)利要求29的系統(tǒng)中的存儲器存儲了指令,該指令使處理器能夠確定雙重錯誤的數(shù)量是否超過一個單一的雙重錯誤。
全文摘要
以誤差校驗行(12)和列的形式組織數(shù)據(jù)單元10。在行(12)和列上可以應(yīng)用不同的誤差校驗算法。結(jié)果,一旦一個給定行被判定含有雙重錯誤,則使用與列相關(guān)的誤差校驗算法,可以確定行(12)中的每個錯誤的位置。結(jié)果,在任意的其它單重錯誤被糾正之后,簡單雙重錯誤可以被定位和糾正。在一些實例中,誤差校驗的成功率得到極大的提高。
文檔編號G06F11/10GK1559033SQ02818852
公開日2004年12月29日 申請日期2002年9月5日 優(yōu)先權(quán)日2001年9月25日
發(fā)明者R·法肯塔爾, B·本哈米達, R 法肯塔爾, 狀 申請人:英特爾公司