專利名稱:對多組數(shù)據(jù)字進(jìn)行錯誤保護(hù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的一個實施例涉及通信和計算機(jī)系統(tǒng),尤其是聯(lián)網(wǎng)的路由器、分組交換系統(tǒng)、計算機(jī)以及存儲和/或傳輸信息的其它設(shè)備;并且更具體地說,一個實施例涉及通過如下方式對多組數(shù)據(jù)字的錯誤保護(hù),所述方式即操作(manipulate)這些數(shù)據(jù)字來產(chǎn)生合成數(shù)據(jù)字(resultant data word)及其糾錯碼以用來標(biāo)識位錯誤的位置,并且使用通常與每個數(shù)據(jù)字相關(guān)聯(lián)的檢錯碼來標(biāo)識特定數(shù)據(jù)字是否有位錯誤。
背景技術(shù):
糾錯和檢錯碼是眾所周知的。例如,ANDREW S.TANENBAUM,COMPUTER NETWORKS,Prentice-Hall,1981,pp,125-132討論了糾錯和檢錯碼,并且被通過引用結(jié)合于此。假設(shè)碼字包含n位,其中m是數(shù)據(jù)位,r是糾錯或檢錯位(例如冗余或檢查位),n=m+r。有很多公知的方法來產(chǎn)生檢錯和糾錯位。假定有兩個碼字,則可以確定有多少個位不相同(例如通過對這兩個碼字相應(yīng)的位進(jìn)行異或或者單一位求和并且對這些結(jié)果進(jìn)行求和)。其中兩個碼字或一組碼字不相同的位位置的數(shù)目被稱為漢明距離。漢明距離為d意味著將一個碼字轉(zhuǎn)變成另一碼字需要d個單一位錯誤。為了檢測j個錯誤,要求漢明距離為j+1,因為利用這樣的碼,j個單一位錯誤不可能將有效的碼字變成另一個有效的碼字。類似地,為了糾正j個錯誤,需要距離為2j+1的碼,因為這樣正確的碼字離得非常遠(yuǎn)以致于即使發(fā)生了j次變化,原始碼字仍然比任何其它碼字要近,所以它可以被唯一地確定。
用于保護(hù)存儲在隨機(jī)訪問存儲器(RAM)中的條目的已知存儲技術(shù)將糾錯或檢錯碼添加到每個存儲器條目上。作為對存儲器區(qū)域的讀取操作的一部分,數(shù)據(jù)部分和糾錯或檢錯碼被讀取,然后被用于檢測可能的錯誤和/或糾正數(shù)據(jù)部分中被發(fā)現(xiàn)的錯誤。如果要執(zhí)行糾錯,那么每個條目需要若干個附加位(其確切數(shù)目取決于數(shù)據(jù)的大小和所使用的糾錯機(jī)構(gòu)),附加位總體上會占用存儲器中相當(dāng)大的部分,或者限制可以被存儲在存儲條目中的數(shù)據(jù)值的大小(例如其實際位數(shù)減去糾錯位的數(shù)目)。希望有更高效的機(jī)構(gòu)用于保護(hù)數(shù)據(jù),該機(jī)構(gòu)可能具有這樣的優(yōu)點,即減少存儲器中用于存儲錯誤保護(hù)信息的總的部分。
發(fā)明內(nèi)容
本發(fā)明公開了用于保護(hù)多組數(shù)據(jù)字的方法、裝置、數(shù)據(jù)結(jié)構(gòu)、計算機(jī)可讀介質(zhì)和機(jī)構(gòu)等。一個實施例操作這些數(shù)據(jù)字來產(chǎn)生合成數(shù)據(jù)字及其糾錯碼,以用于標(biāo)識位錯誤的位置,檢錯碼被用于標(biāo)識哪個數(shù)據(jù)字確實具有位錯誤。一個實施例從存儲器或其它存儲設(shè)備中獲取被存儲的特定數(shù)據(jù)字及其檢錯碼。如果檢測到錯誤,則獲取組中與糾錯碼相對應(yīng)的其它數(shù)據(jù)字并且進(jìn)行操作來產(chǎn)生新的合成數(shù)據(jù)字。糾錯碼和新的合成數(shù)據(jù)字被用于標(biāo)識位錯誤的位置,在特定的數(shù)據(jù)字中相應(yīng)的位位置被糾正。
所附權(quán)利要求書具體給出了本發(fā)明的特征。從下面結(jié)合附圖的詳細(xì)描述可以最佳地理解本發(fā)明及其優(yōu)點,在附圖中圖1A-C是示出了用于保護(hù)數(shù)據(jù)字組的一個實施例的機(jī)制的框圖;圖2A-C示出了在一個實施例中被保護(hù)的數(shù)據(jù)被存儲和/或傳輸可以采用的若干種不限制數(shù)目的方法;圖3A示出了在一個實施例中所使用的用于產(chǎn)生被保護(hù)的數(shù)據(jù)字的過程;圖3B示出了在一個實施例中所使用的用于對被保護(hù)的數(shù)據(jù)字組中被破壞的數(shù)據(jù)字進(jìn)行糾錯的過程;圖4A示出了在一個實施例中所使用的用于產(chǎn)生被保護(hù)的數(shù)據(jù)字和/或?qū)Ρ槐Wo(hù)的數(shù)據(jù)字組中被破壞的數(shù)據(jù)字進(jìn)行糾錯的機(jī)構(gòu);以及圖4B示出了在一個實施例中所使用的用于產(chǎn)生被保護(hù)的數(shù)據(jù)字和/或?qū)Ρ槐Wo(hù)的數(shù)據(jù)字組中被破壞的數(shù)據(jù)字進(jìn)行糾錯的機(jī)構(gòu)。
具體實施例方式
本發(fā)明公開了用于保護(hù)數(shù)據(jù)字組的方法、裝置、數(shù)據(jù)結(jié)構(gòu)、計算機(jī)可讀介質(zhì)和機(jī)構(gòu)等。
這里所描述的實施例包括各個要素和限制,沒有一個要素或限制被設(shè)計為關(guān)鍵要素或限制。每個權(quán)利要求各自作為一個整體來描述本發(fā)明的方面。此外,所描述的一些實施例可以包括但不限于系統(tǒng)、網(wǎng)絡(luò)、集成電路芯片、嵌入式處理器、ASIC、方法和包含指令的計算機(jī)可讀介質(zhì)等。一個或多個系統(tǒng)、設(shè)備、組件等可以包括一個或多個實施例,這些實施例可以包括由相同或不同系統(tǒng)、設(shè)備、組件等執(zhí)行的權(quán)利要求的一些要素或限制。下面所描述的實施例實施本發(fā)明的范圍和精神內(nèi)的各個方面和配置,附圖示出了示例性且非限制性的配置。
這里一般用術(shù)語“系統(tǒng)”來描述任意數(shù)目的組件、元件、子系統(tǒng)、設(shè)備、分組交換元件、分組交換機(jī)、路由器、網(wǎng)絡(luò)、計算機(jī)和/或通信設(shè)備或機(jī)構(gòu),或者其組件的組合。這里一般使用術(shù)語“計算機(jī)”來描述任意數(shù)目的計算機(jī),包括但不限于個人計算機(jī)、嵌入式處理元件和系統(tǒng)、控制邏輯、ASIC、芯片、工作站、主機(jī)等。這里一般使用術(shù)語“處理元件”來描述任意類型的處理機(jī)構(gòu)或設(shè)備,例如處理器、ASIC、現(xiàn)場可編程門陣列、計算機(jī)等。這里一般使用術(shù)語“設(shè)備”來描述任意類型的機(jī)構(gòu),包括計算機(jī)或系統(tǒng)或其組件。這里一般使用術(shù)語“任務(wù)”和“進(jìn)程”來描述任意類型的運行程序,包括但不限于計算機(jī)進(jìn)程、任務(wù)、線程、執(zhí)行應(yīng)用、操作系統(tǒng)、用戶進(jìn)程、設(shè)備驅(qū)動、本地代碼、機(jī)器語言或其它語言等,并且可以是交互式的和/或非交互式的,本地和/或遠(yuǎn)程執(zhí)行的,在前臺和/或后臺執(zhí)行的,在用戶和/或操作系統(tǒng)地址空間中執(zhí)行的,程序庫和/或單個應(yīng)用程序,并且不局限于任何特定的存儲器分區(qū)技術(shù)。附圖中所示出的步驟、連接和對信號和信息的處理(包括但不限于任何框圖、流程圖和消息序列圖)通??梢园凑障嗤虿煌拇谢虿⑿许樞蚝?或利用不同的組件和/或進(jìn)程、線程等和/或基于不同的連接以及結(jié)合其它實施例中的其它功能來執(zhí)行,除非這種執(zhí)行方式不能實現(xiàn)實施例或者明確或暗含地需要某種順序(例如對于讀取值和處理值的順序一必須在處理值之前獲取值,雖然有些相關(guān)的處理可以在讀取操作之前、與之同時和/或在其之后來執(zhí)行)。此外,一般使用術(shù)語“標(biāo)識”來描述用于直接或間接地確知某個事項的任何方式或機(jī)構(gòu),可以包括但不限于接收、從存儲器中獲取、確定、限定、計算、產(chǎn)生等。
此外,這里一般使用術(shù)語“網(wǎng)絡(luò)”和“通信機(jī)構(gòu)”來描述一個或多個網(wǎng)絡(luò)、通信介質(zhì)或通信系統(tǒng)(包括但不限于互聯(lián)網(wǎng)、專用或公共電話網(wǎng)絡(luò)、蜂窩網(wǎng)絡(luò)、無線網(wǎng)絡(luò)、衛(wèi)星網(wǎng)絡(luò)、有線網(wǎng)絡(luò)、局域網(wǎng)、城域網(wǎng)和/或廣域網(wǎng)、電纜、電連接、總線等)和諸如消息傳遞、進(jìn)程間通信、共享的存儲器等的內(nèi)部通信機(jī)構(gòu)。這里一般使用術(shù)語“消息”來描述信息片段,其可以(也可以不)通過任意類型的一個或多個通信機(jī)構(gòu)被傳送,但是通常是通過任意類型的一個或多個通信機(jī)構(gòu)被傳送。
術(shù)語“存儲機(jī)構(gòu)”包括任意類型的存儲器、存儲設(shè)備或用于以任意格式保存指令或數(shù)據(jù)的其它機(jī)構(gòu)?!坝嬎銠C(jī)可讀介質(zhì)”是可擴(kuò)展的術(shù)語,其包括任何存儲器、存儲設(shè)備、存儲機(jī)構(gòu)和/或其它存儲機(jī)構(gòu)。術(shù)語“存儲器”包括任何隨機(jī)訪問存儲器(RAM)、只讀存儲器(ROM)、閃存、集成電路和/或其它存儲器組件或元件、術(shù)語“存儲設(shè)備”包括任何固態(tài)存儲介質(zhì)、磁盤驅(qū)動器、磁盤、聯(lián)網(wǎng)服務(wù)、磁帶驅(qū)動器和其它存儲設(shè)備。存儲器和存儲設(shè)備可以存儲要由處理元件和/或控制邏輯執(zhí)行的計算機(jī)可執(zhí)行指令以及由處理元件或控制邏輯操作的數(shù)據(jù)。術(shù)語“數(shù)據(jù)結(jié)構(gòu)”是可擴(kuò)展的術(shù)語,指任何數(shù)據(jù)單元、變量、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫和/或可以被應(yīng)用于數(shù)據(jù)以輔助解析該數(shù)據(jù)或執(zhí)行對該數(shù)據(jù)的操作的一個或多個組織方案,例如但不限于存儲器區(qū)域或設(shè)備、組、隊列、樹、堆棧、列表、被鏈接的列表、陣列、表、指針等。數(shù)據(jù)結(jié)構(gòu)通常被保存在存儲機(jī)構(gòu)中。這里一般使用術(shù)語“指針”和“鏈接”來標(biāo)識用于引用或標(biāo)識另一元件、組件或其它實體的某種機(jī)構(gòu),并且可以包括但不限于對存儲器或其它存儲機(jī)構(gòu)或其中的區(qū)域的引用、數(shù)據(jù)結(jié)構(gòu)中的索引、取值等。
這里使用術(shù)語“一個實施例”來引用特定的實施例,其中每次引用“一個實施例”可以指不同的實施例,并且這里在描述相關(guān)的特征、要素和/或限制時重復(fù)使用該術(shù)語不是建立每個實施例都必須包括的相關(guān)的特征、要素和/或限制的累積集合,雖然實施例通??梢园ㄋ械倪@些特征、要素和/或限制。另外,短語“用于xxx的裝置”通常包括包含用于執(zhí)行xxx的計算機(jī)可執(zhí)行指令的計算機(jī)可讀介質(zhì)。
另外,這里通常使用術(shù)語“第一”、“第二”等來表示不同的單元(例如第一元件、第二元件)。這里使用這些術(shù)語并不一定表示一種順序(例如一個單元或事件發(fā)生或出現(xiàn)在另一單元或事件之前),而是提供一種在特定單元之間進(jìn)行區(qū)分的機(jī)構(gòu)。另外,使用名詞的單數(shù)不是限制性的,其通常包括一個或多個特定事項,而不只是一個(例如使用詞“存儲器”通常指一個或多個存儲器而不必指定“存儲器或多個存儲器”或者“一個或多個存儲器”或者“至少一個存儲器”等)。此外,短語“基于x”和“響應(yīng)于x”被用于表明得到或引發(fā)某事項所依據(jù)的項目x的最小集合,其中“x”是可擴(kuò)展的并且不必描述執(zhí)行操作所依據(jù)的項目的完整列表。另外,短語“被耦合到”被用于表示兩個元件或設(shè)備之間某種程度的直接或間接連接,耦合設(shè)備會改變或不改變被耦合的信號或被傳送的信息。術(shù)語“子集”被用于表示具有集合的全部元素或部分元素的組。術(shù)語“子樹”被用于表示整個樹或部分樹。此外,這里使用術(shù)語“或”來標(biāo)識對聯(lián)合項目中的一個或多個(包括全部)的選擇。另外,過渡術(shù)語“包括(comprising)”與“包括(including)”、“包含”或“特征在于”意思相同,都是非排他性的或者開放式的,不排除附加的未提到的元件或方法步驟。
本發(fā)明公開了用于保護(hù)多組數(shù)據(jù)字的方法、裝置、數(shù)據(jù)結(jié)構(gòu)、計算機(jī)可讀介質(zhì)和機(jī)構(gòu)等。一個實施例操作這些數(shù)據(jù)字來產(chǎn)生合成數(shù)據(jù)字及其糾錯碼,以用于標(biāo)識位錯誤的位置,檢錯碼被用于標(biāo)識哪個數(shù)據(jù)字確實具有位錯誤。一個實施例從存儲器或其它存儲設(shè)備中獲取被存儲的特定數(shù)據(jù)字及其檢錯碼。如果檢測到錯誤,則獲得(例如從存儲設(shè)備中獲取)組中與糾錯碼相對應(yīng)的其它數(shù)據(jù)字并且進(jìn)行操作來產(chǎn)生新的合成數(shù)據(jù)字。糾錯碼和新的合成數(shù)據(jù)字被用于標(biāo)識位錯誤的位置,在特定的數(shù)據(jù)字中相應(yīng)的位位置被糾正。
因而,一個實施例不需要像在全部的糾錯碼都被存儲在每個數(shù)據(jù)行中以保護(hù)其數(shù)據(jù)字的情況下所需要的那么大的存儲空間。而且,利用檢錯來標(biāo)識數(shù)據(jù)行是否包括錯誤,一個實施例只需要響應(yīng)于檢測到的錯誤獲取包含相應(yīng)的糾錯碼的其它部分的其它數(shù)據(jù)行(或者至少是它們的糾錯碼部分)(例如與讀取具有糾錯碼部分的所有數(shù)據(jù)行或者至少是它們的糾錯碼部分不同的是,每次只訪問這些數(shù)據(jù)行中的一行,雖然在一個實施例中當(dāng)這些數(shù)據(jù)行中的一行被訪問時所有的這些數(shù)據(jù)行或者至少是它們的糾錯碼部分都被獲取)。
一個實施例操作多個數(shù)據(jù)字來產(chǎn)生數(shù)據(jù)字。產(chǎn)生用于合成數(shù)據(jù)字的糾錯碼,糾錯碼包括多個糾錯位。將糾錯位的不同子集與多個數(shù)據(jù)字中的至少兩個相關(guān)聯(lián)。對于每個特定的數(shù)據(jù)字,基于該特定的數(shù)據(jù)字和可能有的糾錯位的相關(guān)聯(lián)的子集產(chǎn)生檢錯碼。
一個實施例傳送和/或存儲數(shù)據(jù)字、糾錯碼和檢錯碼。在傳送或存儲之后,一個實施例獲取數(shù)據(jù),這個被獲取的數(shù)據(jù)包括特定的數(shù)據(jù)字,其相關(guān)聯(lián)的檢錯碼以及可能有的糾錯位中其相關(guān)聯(lián)的子集;并且對被獲取的數(shù)據(jù)執(zhí)行檢錯操作。在一個實施例中,響應(yīng)于標(biāo)識錯誤狀況的檢錯操作,一個實施例對被獲取的數(shù)據(jù)執(zhí)行糾錯操作。在一個實施例中,該糾錯操作的執(zhí)行包括基于數(shù)據(jù)字組的當(dāng)前值產(chǎn)生新的合成字,基于合成字和糾錯碼標(biāo)識合成字中要糾正的位位置,并且糾正所獲取的數(shù)據(jù)(例如數(shù)據(jù)字、糾錯位中相關(guān)聯(lián)的子集或者檢錯碼)中相應(yīng)的位位置。
在一個實施例中,對數(shù)據(jù)字、糾錯碼和檢錯碼的存儲包括對于每個數(shù)據(jù)字,將其值、其檢錯碼和可能有的多個糾錯位中其相關(guān)聯(lián)的子集存儲在一個或多個存儲器中相同的存儲器行中。在一個實施例中,操作數(shù)據(jù)字來產(chǎn)生合成數(shù)據(jù)包括對數(shù)據(jù)字的位進(jìn)行異或。一個實施例包括用于執(zhí)行這些操作中的每一個的裝置。一個實施例包括包含用于執(zhí)行這些操作中的每一個的計算機(jī)可執(zhí)行指令的計算機(jī)可讀介質(zhì)。
一個實施例基于特定的數(shù)據(jù)字和特定的檢錯碼對數(shù)據(jù)字組中特定的數(shù)據(jù)字執(zhí)行檢錯檢查。響應(yīng)于被標(biāo)識的錯誤狀況,操作數(shù)據(jù)來產(chǎn)生合成數(shù)據(jù)字,該數(shù)據(jù)包括數(shù)據(jù)字組?;诤铣蓴?shù)據(jù)字和相關(guān)聯(lián)的預(yù)定糾錯碼來執(zhí)行糾錯操作,以標(biāo)識錯誤的位位置。特定的數(shù)據(jù)字中對應(yīng)于該位位置的位被糾正。
在一個實施例中,每個數(shù)據(jù)字被包括在每個數(shù)據(jù)行中,并且這些數(shù)據(jù)行包括檢錯碼和多個錯誤保護(hù)碼,每個數(shù)據(jù)字與多個檢錯碼中不同的檢錯碼相關(guān)聯(lián)。在一個實施例中,每個數(shù)據(jù)字被包括在存儲在一個或多個存儲器中的數(shù)據(jù)行中,多個數(shù)據(jù)行中的每一行包括一個數(shù)據(jù)字和一個檢錯碼;并且特定的數(shù)據(jù)字和特定的檢錯碼取自于一個或多個存儲器。
在一個實施例中,糾錯碼被保存在獨立于一個或多個存儲器的寄存器中;并且糾錯碼取自于寄存器。在一個實施例中,糾錯碼中的不同部分被包括在多個數(shù)據(jù)行中的不同行中。在一個實施例中,特定的數(shù)據(jù)行包括特定的數(shù)據(jù)字、特定的檢錯碼和糾錯碼的不同部分中的特定部分,所述不同部分包括特定部分和其余部分。響應(yīng)于檢錯檢查所標(biāo)識的錯誤狀況,獲取糾錯碼的其余部分。在一個實施例中,數(shù)據(jù)字包括特定數(shù)據(jù)字和其余數(shù)據(jù)字;并且響應(yīng)于檢錯檢查所標(biāo)識的錯誤狀況,從一個或多個存儲器中獲取其余數(shù)據(jù)字。一個實施例包括用于執(zhí)行這些操作中的每一個的裝置。一個實施例包括包含用于執(zhí)行這些操作中的每一個的計算機(jī)可執(zhí)行指令的計算機(jī)可讀介質(zhì)。
一個實施例包括檢錯和糾錯能力以及存儲設(shè)備。該實施例被配置為從存儲設(shè)備中獲取數(shù)據(jù)字組中的數(shù)據(jù)字及其相關(guān)聯(lián)的檢錯碼,并且操作數(shù)據(jù)字組的當(dāng)前值來產(chǎn)生合成數(shù)據(jù)字,并且基于合成數(shù)據(jù)字及其相關(guān)聯(lián)的預(yù)定糾錯碼執(zhí)行糾錯操作以標(biāo)識與錯誤狀況相對應(yīng)的位位置,并且糾正數(shù)據(jù)字中對應(yīng)于錯誤狀況的位以產(chǎn)生經(jīng)糾正的數(shù)據(jù)字。
在一個實施例中,操作當(dāng)前值來產(chǎn)生合成數(shù)據(jù)字包括對當(dāng)前值進(jìn)行異或。一個實施例被配置為響應(yīng)于標(biāo)識來自糾錯操作的錯誤狀況從存儲器中獲取數(shù)據(jù)字組中的其它數(shù)據(jù)字以用在操作中。一個實施例被配置為響應(yīng)于錯誤狀況的標(biāo)識從存儲設(shè)備中獲取預(yù)定的糾錯碼。在一個實施例中,存儲設(shè)備被配置為基于特定地址獲取特定數(shù)據(jù)行,所述特定數(shù)據(jù)行包括數(shù)據(jù)字、其相關(guān)聯(lián)的檢錯碼和預(yù)定的糾錯碼的一部分,而不是預(yù)定的糾錯碼的全部。
一個實施例包括用于基于特定數(shù)據(jù)字和特定檢錯碼對多個數(shù)據(jù)字中的特定數(shù)據(jù)字執(zhí)行檢錯檢查的裝置;用于響應(yīng)于檢錯檢查所標(biāo)識的錯誤狀況操作數(shù)據(jù)以產(chǎn)生合成數(shù)據(jù)字的裝置,所述數(shù)據(jù)包括多個數(shù)據(jù)字;用于基于合成數(shù)據(jù)字和相關(guān)聯(lián)的預(yù)定糾錯碼執(zhí)行糾錯操作以標(biāo)識錯誤的位位置的裝置;以及用于對特定數(shù)據(jù)字中對應(yīng)于所述位位置的位進(jìn)行糾錯的裝置。
圖1A-C是示出了用于保護(hù)數(shù)據(jù)字組的一個實施例的機(jī)制的框圖。如圖1A中所示,多個數(shù)據(jù)字組100被操作(102)(例如按照某種方式以某種形式組合在一起,例如但不限于對數(shù)據(jù)字組100中的每個數(shù)據(jù)字進(jìn)行異或)來產(chǎn)生合成數(shù)據(jù)字104。然后,糾錯碼產(chǎn)生函數(shù)(例如公知的或任何其它函數(shù)中的一個)被應(yīng)用(103)于合成數(shù)據(jù)字102來產(chǎn)生預(yù)定的糾錯碼104。
圖1B中所示的是在一個實施例中所使用的為數(shù)據(jù)字組中的每個數(shù)據(jù)字產(chǎn)生檢錯碼的過程。如圖所示,檢錯碼函數(shù)(例如公知的或任何其它函數(shù)中的一個,例如但不限于奇偶產(chǎn)生函數(shù))被應(yīng)用(115)于數(shù)據(jù)字110和可能有的合成糾錯碼104(圖1A)中相關(guān)聯(lián)的子集112,來為數(shù)據(jù)字110或數(shù)據(jù)字110和合成糾錯碼104的相關(guān)聯(lián)的子集112產(chǎn)生預(yù)定的檢錯碼116。
圖1C中所示的是在一個實施例中被存儲和/或傳送的受保護(hù)的數(shù)據(jù)行120-122。如圖所示,受保護(hù)的數(shù)據(jù)行120-122中的每一行包括數(shù)據(jù)字131、用于相應(yīng)的數(shù)據(jù)行120-122的檢錯碼132和可能有的用于數(shù)據(jù)字組的糾錯碼的子集133。
圖2A-C示出了在一個實施例中受保護(hù)的數(shù)據(jù)被存儲和/或傳輸可以采用的若干種不限制數(shù)目的方法。提供這些圖是為了圖示本發(fā)明的幾個實施例的操作,并且說明實施例很寬的范圍。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)清楚,在本發(fā)明的范圍和精神內(nèi),可以有很多種改變方式。
圖2A中所示出的是兩個受保護(hù)的數(shù)據(jù)行200和204,每個數(shù)據(jù)行包含32位的數(shù)據(jù)字(201,205)和一組保護(hù)位210(203,207)。在一個實施例中,數(shù)據(jù)字201和205被操作(例如被異或)來產(chǎn)生32位的合成數(shù)據(jù)字,糾錯碼產(chǎn)生函數(shù)被應(yīng)用于所述合成數(shù)據(jù)字來產(chǎn)生6位的糾錯碼。這六位(E0到E5)被分布在受保護(hù)的數(shù)據(jù)行200和204之間,如圖所示。而且,在一個實施例中,應(yīng)用單一位檢錯碼產(chǎn)生函數(shù)(例如奇偶產(chǎn)生函數(shù))來為受保護(hù)的數(shù)據(jù)行200、204中的每一行產(chǎn)生單個奇偶位(P0和P1)(例如基于數(shù)據(jù)字或數(shù)據(jù)字及糾錯位中其相關(guān)聯(lián)的子集)。因而,在一個實施例中,可以利用兩個36位的存儲器區(qū)域來提供對具有兩個32位的數(shù)據(jù)字的組的一位糾錯。
圖2B中所示出的是四個受保護(hù)的數(shù)據(jù)行250-253,每個數(shù)據(jù)行包含16位的數(shù)據(jù)字220-234和一組保護(hù)位240(241-244)。在一個實施例中,數(shù)據(jù)字220-234被操作(例如被異或)來產(chǎn)生16位的合成數(shù)據(jù)字,糾錯碼產(chǎn)生函數(shù)被應(yīng)用于所述合成數(shù)據(jù)字來產(chǎn)生7位的糾錯碼。這七位(E0到E6)被分布在受保護(hù)的數(shù)據(jù)行250-253之間,如圖所示。而且,在一個實施例中,應(yīng)用單一位檢錯碼產(chǎn)生函數(shù)(例如奇偶產(chǎn)生函數(shù))來為受保護(hù)的數(shù)據(jù)字220-234中的每一個產(chǎn)生單個奇偶位(P0-P7)(例如基于數(shù)據(jù)字或數(shù)據(jù)字及糾錯位中其相關(guān)聯(lián)的子集)。因而,在一個實施例中,可以利用四個36位的存儲器區(qū)域來提供對具有八個16位的數(shù)據(jù)字的組的一位糾錯。
注意,符合本發(fā)明的范圍和精神的一個實施例可以利用各種檢錯函數(shù)和糾錯函數(shù)。例如,圖2B中所示的是用于糾正16位的7位糾錯碼。注意,一個實施例利用5位的糾錯碼來糾正16位,這五位通常分布在受保護(hù)的數(shù)據(jù)字之間。
圖2C中所示出的是四個受保護(hù)的數(shù)據(jù)行290-293,每個數(shù)據(jù)行包含8位的數(shù)據(jù)字260-275和一組保護(hù)位280(281-285)。在一個實施例中,數(shù)據(jù)字260-275被操作(例如被異或)來產(chǎn)生8位的合成數(shù)據(jù)字,糾錯碼產(chǎn)生函數(shù)被應(yīng)用于所述合成數(shù)據(jù)字來產(chǎn)生4位的糾錯碼285,其可以與受保護(hù)的數(shù)據(jù)行290-293一起被存儲在存儲設(shè)備中,或者例如存儲在單獨的存儲器、寄存器或其它區(qū)域中。而且,在一個實施例中,應(yīng)用單一位檢錯碼產(chǎn)生函數(shù)(例如奇偶產(chǎn)生函數(shù))來為受保護(hù)的數(shù)據(jù)字260-275中的每一個產(chǎn)生單個奇偶位(P0-PF)(例如基于數(shù)據(jù)字或數(shù)據(jù)字及其相關(guān)聯(lián)的糾錯位的子集)。因而,在一個實施例中,可以利用四個36位的存儲器區(qū)域來提供對具有八個16位的數(shù)據(jù)字的組的一位糾錯。
圖3A示出了在一個實施例中所使用的用于產(chǎn)生受保護(hù)的數(shù)據(jù)字的過程。處理開始于處理框300,并且進(jìn)行到處理框302,其中多個數(shù)據(jù)字被操作以產(chǎn)生合成數(shù)據(jù)字。在處理框304中,產(chǎn)生用于合成數(shù)據(jù)字的糾錯碼。在處理框306中,為多個數(shù)據(jù)字中的每一個和可能有的糾錯碼中相關(guān)聯(lián)的多個位的子集確定檢錯碼。在處理框308中,多個數(shù)據(jù)字、檢錯碼和糾錯碼被存儲和/或傳送。處理結(jié)束于處理框310。
圖3B示出了在一個實施例中所使用的用于對被保護(hù)的數(shù)據(jù)字組中被破壞的數(shù)據(jù)字進(jìn)行糾錯的過程。處理開始于處理框320,并且進(jìn)行到處理框322,其中特定的數(shù)據(jù)字和可能有的糾錯碼的子集被獲取(例如從存儲器中被獲取、被接收等)。在處理框324中進(jìn)行判定,如果在所獲取的數(shù)據(jù)中沒有檢測到錯誤(例如通過對所獲取的數(shù)據(jù)執(zhí)行檢錯函數(shù)以識別是否為正確的奇偶結(jié)果),然后在處理框326中,數(shù)據(jù)字以某種形式被轉(zhuǎn)發(fā)和/或使用。否則,檢測到錯誤,并且在處理框328中,執(zhí)行糾錯操作以標(biāo)識位錯誤的位置,例如但不限于獲取任何所需要的其余數(shù)據(jù)字和糾錯碼的部分,操作數(shù)據(jù)字(其當(dāng)前值,可能包括錯誤位)來產(chǎn)生合成數(shù)據(jù)字,并且基于合成數(shù)據(jù)字和糾錯碼確定錯誤位的位位置。如果在數(shù)據(jù)字中有位錯誤,那么糾正該位錯誤。在處理框330中,正確的數(shù)據(jù)字以某種形式被轉(zhuǎn)發(fā)和/或使用,并且存儲被更新以糾正位錯誤。處理結(jié)束于框332。
圖4A是在一個實施例中所使用的用于產(chǎn)生被保護(hù)的數(shù)據(jù)字和/或?qū)Ρ槐Wo(hù)的數(shù)據(jù)字組中被破壞的數(shù)據(jù)字進(jìn)行糾錯的示例性系統(tǒng)或組件400的框圖。在一個實施例中,系統(tǒng)或組件400執(zhí)行與這里所示出或所描述的流程圖中的一個相對應(yīng)的一個或多個處理。
在一個實施例中,組件400包括處理元件401(例如處理器、定制邏輯等)、存儲器402、存儲設(shè)備403以及用于接收和發(fā)送分組、項目和/或其它信息的接口404,這些元件通常經(jīng)一個或多個通信機(jī)構(gòu)409(作為示例顯示為總線)耦合。組件400的各個實施例可以包括更多或更少的元件。組件400的操作通常由處理元件401控制,處理元件401使用存儲器402和存儲設(shè)備403來執(zhí)行一個或多個按時間排定的任務(wù)或處理。存儲器402是一種類型的計算機(jī)可讀介質(zhì),并且通常包括隨機(jī)訪問存儲器(RAM)、只讀存儲器(ROM)、閃存、集成電路和/或其它存儲組件。存儲器402通常存儲要由處理元件401執(zhí)行的計算機(jī)可執(zhí)行指令和/或由處理元件401操作以執(zhí)行根據(jù)本發(fā)明的功能的數(shù)據(jù)。存儲設(shè)備403是另一種類型的計算機(jī)可讀介質(zhì),并且通常包括固態(tài)存儲介質(zhì)、磁盤驅(qū)動器、磁盤、聯(lián)網(wǎng)服務(wù)、磁帶驅(qū)動器和其它存儲設(shè)備。存儲設(shè)備403通常存儲要由處理元件401執(zhí)行的計算機(jī)可執(zhí)行指令和/或由處理元件401操作以執(zhí)行根據(jù)本發(fā)明的功能的數(shù)據(jù)。
圖4B示出了在一個實施例中所使用的用于產(chǎn)生被保護(hù)的數(shù)據(jù)字和/或?qū)Ρ槐Wo(hù)的數(shù)據(jù)字組中被破壞的數(shù)據(jù)字進(jìn)行糾錯的存儲系統(tǒng)420。在一個實施例中,存儲器402(圖4A)包括存儲系統(tǒng)420。在一個實施例中,存儲設(shè)備403(圖4A)包括存儲系統(tǒng)420。
如圖所示,控制器422包括存儲和數(shù)據(jù)字操作功能。糾錯碼產(chǎn)生機(jī)構(gòu)424被用于產(chǎn)生糾錯碼。奇偶檢查和糾錯機(jī)構(gòu)426被用于產(chǎn)生奇偶碼并且糾正被檢測到的錯誤。通常,包括受保護(hù)的數(shù)據(jù)字的受保護(hù)的數(shù)據(jù)行被存儲在存儲設(shè)備428中。在一個實施例中,用于數(shù)據(jù)字組的檢錯和/或糾錯碼被存儲在存儲設(shè)備428中;而在一個實施例中,用于數(shù)據(jù)字組的檢錯和/或糾錯碼被存儲在控制器422內(nèi)的存儲設(shè)備中。在一個實施例中,存儲系統(tǒng)420基于像標(biāo)準(zhǔn)的RAM這樣的地址431來存儲和獲取數(shù)據(jù)字433,而且也執(zhí)行數(shù)據(jù)保護(hù)功能。
從可以應(yīng)用本發(fā)明原理的許多可能的實施例來看,應(yīng)當(dāng)理解這里針對附圖描述的多個實施例和多個方面只是示例性的,并且不應(yīng)當(dāng)認(rèn)為是限制了本發(fā)明的范圍。例如,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)清楚許多處理框操作可以被重新排序為在其它操作之前、之后或與之基本同時進(jìn)行。而且,很多不同形式的數(shù)據(jù)結(jié)構(gòu)可以被用在各個實施例中。這里所描述的發(fā)明包括所有可以落在所附權(quán)利要求書及其等同物的范圍內(nèi)的實施例。
權(quán)利要求
1.一種用于保護(hù)數(shù)據(jù)的方法,所述方法包括操作多個數(shù)據(jù)字來產(chǎn)生合成數(shù)據(jù)字;產(chǎn)生用于所述合成數(shù)據(jù)字的糾錯碼,所述糾錯碼包括多個糾錯位;將所述多個糾錯位的不同部分與所述多個數(shù)據(jù)字中的至少兩個相關(guān)聯(lián);以及對于所述多個數(shù)據(jù)字中的每個特定數(shù)據(jù)字基于所述特定數(shù)據(jù)字和可能有的所述多個糾錯位的所述相關(guān)聯(lián)的部分產(chǎn)生檢錯碼。
2.如權(quán)利要求1所述的方法,包括傳送或存儲所述多個數(shù)據(jù)字、所述糾錯碼和所述多個檢錯碼;并且在所述傳送和存儲操作之后獲取數(shù)據(jù),所述被獲取的數(shù)據(jù)包括所述多個數(shù)據(jù)字的特定數(shù)據(jù)字,其相關(guān)聯(lián)的所述檢錯碼以及可能有的所述多個糾錯位中其所述相關(guān)聯(lián)的部分;并且對所述被獲取的數(shù)據(jù)執(zhí)行檢錯操作。
3.如權(quán)利要求2所述的方法,包括響應(yīng)于標(biāo)識錯誤狀況的所述檢錯操作對所述被獲取的數(shù)據(jù)執(zhí)行糾錯操作。
4.如權(quán)利要求3所述的方法,包括響應(yīng)于所述標(biāo)識所述錯誤狀況,獲取所述多個糾錯位的所述不同部分的一個或多個附加部分。
5.如權(quán)利要求4所述的方法,其中所述多個檢錯位的所述不同部分的所述一個或多個附加部分只在所述檢錯操作標(biāo)識了所述錯誤狀況的情況下才被獲取。
6.如權(quán)利要求3所述的方法,其中所述執(zhí)行所述糾錯操作包括基于所述多個數(shù)據(jù)字的當(dāng)前值產(chǎn)生新的合成字,基于所述合成字和所述糾錯碼標(biāo)識在所述合成數(shù)據(jù)字中要糾正的位位置,以及糾正所述被獲取的數(shù)據(jù)中相應(yīng)的位位置。
7.如權(quán)利要求2所述的方法,其中所述存儲所述多個數(shù)據(jù)字、所述糾錯碼和所述多個檢錯碼包括對于所述多個數(shù)據(jù)字的每個所述數(shù)據(jù)字,將其值、其所述檢錯碼和可能有的所述多個檢錯位中的其相關(guān)聯(lián)的部分存儲在一個或多個存儲器中相同的存儲器行中。
8.如權(quán)利要求1所述的方法,其中所述操作所述多個數(shù)據(jù)字來產(chǎn)生所述合成數(shù)據(jù)包括對所述多個數(shù)據(jù)字的位進(jìn)行異或。
9.一種用于保護(hù)數(shù)據(jù)的方法,所述方法包括基于特定數(shù)據(jù)字和特定檢錯碼對多個數(shù)據(jù)字的所述特定數(shù)據(jù)字執(zhí)行檢錯檢查;響應(yīng)于所述檢錯檢查所標(biāo)識的錯誤狀況,操作數(shù)據(jù)以產(chǎn)生合成數(shù)據(jù)字,所述數(shù)據(jù)包括所述多個數(shù)據(jù)字;基于所述合成數(shù)據(jù)和相關(guān)聯(lián)的預(yù)定糾錯碼執(zhí)行糾錯操作以標(biāo)識錯誤的位位置;以及對所述特定數(shù)據(jù)字中對應(yīng)于所述位位置的位進(jìn)行糾錯。
10.如權(quán)利要求9所述的方法,其中所述多個數(shù)據(jù)字中的每一個被包括在多個數(shù)據(jù)行中不同的數(shù)據(jù)行中;其中所述多個數(shù)據(jù)行包括所述糾錯碼和多個檢錯碼,所述多個數(shù)據(jù)字中的每一個與所述多個檢錯碼中不同的檢錯碼相關(guān)聯(lián)。
11.如權(quán)利要求10所述的方法,其中所述糾錯碼中不同的部分被存儲在所述多個數(shù)據(jù)行中不同的數(shù)據(jù)行中。
12.如權(quán)利要求9所述的方法,其中所述多個數(shù)據(jù)字中的每一個被包括在存儲在一個或多個存儲器中的多個數(shù)據(jù)行中,所述多個數(shù)據(jù)行中的每一個包括所述多個數(shù)據(jù)字中的一個和所述多個檢錯碼中的一個;并且所述方法包括從所述一個或多個存儲器中獲取所述特定數(shù)據(jù)字和所述特定糾錯碼。
13.如權(quán)利要求12所述的方法,其中所述糾錯碼被保存在與所述一個或多個存儲器相獨立的寄存器中;并且其中所述方法包括從所述寄存器中獲取所述糾錯碼。
14.如權(quán)利要求12所述的方法,其中所述糾錯碼的不同部分被包括在所述多個數(shù)據(jù)行中的不同行中。
15.如權(quán)利要求14所述的方法,其中所述多個數(shù)據(jù)行中的特定數(shù)據(jù)行包括所述特定數(shù)據(jù)字、所述特定檢錯碼和所述糾錯碼的所述不同部分中的特定部分,所述不同部分包括所述特定部分和其余部分;并且所述方法包括響應(yīng)于所述檢錯檢查所標(biāo)識的錯誤狀況,獲取所述糾錯碼的其余部分。
16.如權(quán)利要求9所述的方法,其中所述多個數(shù)據(jù)字包括所述特定數(shù)據(jù)字和其余數(shù)據(jù)字;并且所述方法包括響應(yīng)于所述檢錯檢查所標(biāo)識的錯誤狀況,從所述一個或多個存儲器中獲取所述其余數(shù)據(jù)字。
17.一種用于保護(hù)存儲器的裝置,所述裝置包括檢錯和糾錯能力以及存儲設(shè)備,所述裝置被配置為從所述存儲設(shè)備中獲取多個數(shù)據(jù)字中的數(shù)據(jù)字及其相關(guān)聯(lián)的檢錯碼,并且操作所述多個數(shù)據(jù)字的當(dāng)前值來產(chǎn)生合成數(shù)據(jù)字,并且基于所述合成數(shù)據(jù)字及其相關(guān)聯(lián)的預(yù)定糾錯碼執(zhí)行糾錯操作以標(biāo)識與錯誤狀況相對應(yīng)的位位置,并且糾正所述數(shù)據(jù)字中與所述位位置相對應(yīng)的位以產(chǎn)生經(jīng)糾正的數(shù)據(jù)字。
18.如權(quán)利要求17所述的裝置,其中所述操作所述當(dāng)前值來產(chǎn)生所述合成數(shù)據(jù)字包括對所述當(dāng)前值進(jìn)行異或。
19.如權(quán)利要求17所述的裝置,其中所述裝置被配置為響應(yīng)于所述糾錯操作標(biāo)識錯誤狀況從存儲器中獲取所述多個數(shù)據(jù)字中的所述其它數(shù)據(jù)字以用在所述操作中。
20.如權(quán)利要求19所述的裝置,其中所述裝置被配置為響應(yīng)于所述標(biāo)識所述錯誤狀況從所述存儲設(shè)備中獲取所述預(yù)定的糾錯碼。
21.如權(quán)利要求20所述的裝置,其中所述存儲設(shè)備被配置為基于特定地址獲取特定數(shù)據(jù)行,所述特定數(shù)據(jù)行包括所述數(shù)據(jù)字、其所述相關(guān)聯(lián)的檢錯碼和所述預(yù)定的糾錯碼的一部分,而不是所述預(yù)定的糾錯碼的全部。
22.如權(quán)利要求17所述的裝置,其中所述裝置被配置為響應(yīng)于所述標(biāo)識所述錯誤狀況從所述存儲設(shè)備中獲取所述預(yù)定的糾錯碼。
23.如權(quán)利要求22所述的裝置,其中所述存儲設(shè)備被配置為基于特定地址獲取特定數(shù)據(jù)行,所述特定數(shù)據(jù)行包括所述數(shù)據(jù)字、其所述相關(guān)聯(lián)的檢錯碼和所述預(yù)定的糾錯碼的一部分,而不是所述預(yù)定的糾錯碼的全部。
24.一種用于保護(hù)數(shù)據(jù)的裝置,所述裝置包括用于基于特定數(shù)據(jù)字和特定檢錯碼對多個數(shù)據(jù)字中的所述特定數(shù)據(jù)字執(zhí)行檢錯檢查的裝置;用于響應(yīng)于所述檢錯檢查所標(biāo)識的錯誤狀況操作數(shù)據(jù)以產(chǎn)生合成數(shù)據(jù)字的裝置,所述數(shù)據(jù)包括所述多個數(shù)據(jù)字;以及用于基于所述合成數(shù)據(jù)字和相關(guān)聯(lián)的預(yù)定糾錯碼執(zhí)行糾錯操作以標(biāo)識錯誤的位位置并且對所述特定數(shù)據(jù)字中對應(yīng)于所述位位置的位進(jìn)行糾錯的裝置。
25.如權(quán)利要求24所述的裝置,包括用于響應(yīng)于所述檢錯檢查所標(biāo)識的錯誤狀況從存儲設(shè)備中獲取所述糾錯碼中的至少一部分和所述多個數(shù)據(jù)字中的至少一個的裝置。
全文摘要
本發(fā)明公開了用于保護(hù)多組數(shù)據(jù)字(100)的方法、裝置、數(shù)據(jù)結(jié)構(gòu)、計算機(jī)可讀介質(zhì)和機(jī)構(gòu)等。一個實施例操作這些數(shù)據(jù)字(101)來產(chǎn)生合成數(shù)據(jù)字(102)及其糾錯碼(103),以用于標(biāo)識位錯誤的位置,其中檢錯碼被用于標(biāo)識哪個數(shù)據(jù)字確實具有位錯誤。一個實施例從存儲器或其它存儲設(shè)備中獲取被存儲的特定數(shù)據(jù)字及其檢錯碼。如果檢測到錯誤,則獲取組中與糾錯碼相對應(yīng)的其它數(shù)據(jù)字并且進(jìn)行操作來產(chǎn)生新的合成數(shù)據(jù)字。糾錯碼和新的合成數(shù)據(jù)字被用于標(biāo)識位錯誤的位置,在特定數(shù)據(jù)字中相應(yīng)的位位置被糾正。
文檔編號G11C29/00GK101040445SQ200580034462
公開日2007年9月19日 申請日期2005年12月26日 優(yōu)先權(quán)日2005年1月22日
發(fā)明者歐德·特拉尼 申請人:思科技術(shù)公司