專利名稱:用于循環(huán)糾錯碼的物理塊地址恢復(fù)設(shè)備、系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及檢錯和/或糾錯。具體而言,本發(fā)明涉及一種用于交錯Reed-Solomn碼的物理塊地址或邏輯塊地址(PBA或LBA)傳送和恢復(fù)系統(tǒng)及方法,這種系統(tǒng)和方法可以區(qū)分塊地址差錯和不可糾正的數(shù)據(jù)差錯,并且當發(fā)生物理塊地址或邏輯塊地址差錯時,允許恢復(fù)實際的塊地址。
背景技術(shù):
由于存儲媒體會受各種類型噪聲、失真和干擾的影響,所以在存儲媒體的輸出端會出現(xiàn)各種差錯。目前的趨勢是,將較多的數(shù)字數(shù)據(jù)存儲在存儲媒體上較小的區(qū)域內(nèi)。這種趨勢增加了差錯的可能性。為了糾正差錯,要使用糾錯編碼技術(shù)。存在各種糾錯編碼技術(shù)。一類糾錯碼是眾所周知的Reed Solomon(RS)碼。Reed Solomon(RS)編碼技術(shù)為每個塊添加b個用戶數(shù)據(jù)碼元和2t個冗余碼元,由此建立一個碼字(其中,t表示為該碼設(shè)計的碼元糾錯能力)。一個RS碼字中有b+2t個碼元。RS碼字以某種差錯概率出入存儲媒體。在解碼階段,通過分析接收到的數(shù)據(jù),可以檢測出存儲媒體發(fā)送數(shù)據(jù)所引起的某些差錯模式,并且可以重建原始數(shù)據(jù)。例如,可以參見Prentice Hall股份有限公司(Englewood Cliffs市,New Jersey州07632,ISBN 0-13-200809-2)于1995出版的、Stephen B.Wicker發(fā)表的“用于數(shù)字通信和存儲的差錯控制系統(tǒng)”。該文獻內(nèi)容按參考資料在此引入,用于討論一些傳統(tǒng)的檢錯和差錯控制系統(tǒng)及方法。
差錯通常是成串出現(xiàn)的,而不是隨機出現(xiàn)的,因此會有幾個連續(xù)差錯的字節(jié)或碼元。(在本說明書中,字節(jié)與碼元的意義相同,并且當使用術(shù)語“字節(jié)”時,位的個數(shù)可以任意,它不局限于8位、16位等,還可以取例如10位、12位或其它數(shù)字的位數(shù))。如果將上述一連串的差錯全部限制在單個碼字內(nèi),那么糾錯編碼技術(shù)可能不能糾正這些差錯,因為編碼技術(shù)的能力局限于糾正預(yù)定數(shù)量的差錯,而差錯串可能超越了這一能力。通常利用交錯來克服這一問題。交錯是這樣一種技術(shù),它將用戶數(shù)據(jù)碼元分布在幾個碼字上,以便在發(fā)送期間使任何給定碼字的碼元完全分開。當在解碼過程中重建碼字時,發(fā)送期間引入的差錯串斷開,并且分散在若干碼字上。用這種方法分布差錯,可以使一個碼字中出現(xiàn)的差錯數(shù)目較有可能落在糾錯技術(shù)的能力范圍內(nèi)。
經(jīng)編碼的數(shù)據(jù)存儲在存儲媒體的某個物理塊地址(PBA)上。PBA還可以與一個特定的邏輯塊地址(LBA)有聯(lián)系,因此本討論中對PBA的引用也適用于LBA。在正常情況下,記錄媒體上的每個位置都有一個物理塊地址;但是,由于諸如磁盤、磁光盤、磁帶等記錄媒體至少都會有一些缺陷,所以可能將與某些物理塊地址相關(guān)的媒體再次映射給另一些不同的物理塊地址。每個可用的(無差錯的)物理塊地址由一個邏輯塊地址來識別。在傳統(tǒng)的系統(tǒng)和設(shè)備中,可以在編碼/解碼過程中使用PBA(或LBA),其方法使得如果用不同的PBA(或LBA)對編碼數(shù)據(jù)解碼,那么解碼過程將失敗,也就是說,數(shù)據(jù)將出現(xiàn)不可糾正的差錯。
如
圖1所示,在一種傳統(tǒng)的方法中,為寫操作或編碼操作提供了一個盤片驅(qū)動計算機系統(tǒng)100,該系統(tǒng)具有主機102、可旋轉(zhuǎn)的磁盤驅(qū)動器104,以及糾錯碼編碼器/解碼器單元(ECC編碼器/解碼器)106,其中可旋轉(zhuǎn)磁盤驅(qū)動器104具有一個或多個可以存儲數(shù)據(jù)的盤片。(圖2示出了用于回讀操作或解碼操作的對應(yīng)的方框圖101。下文將對其作更詳細的描述。)ECC編碼器/解碼器106為用戶數(shù)據(jù)D(x)105在主機102和盤片104之間提供了第一路徑,并且在主機102和盤片104之間只內(nèi)插了一個多路開關(guān)選擇器或開關(guān)108,用于選擇數(shù)據(jù)D(x)105或奇偶性P(x)107,作為要寫入盤片104的信息109。將數(shù)據(jù)和奇偶性寫入盤片驅(qū)動存儲器中的方法是本領(lǐng)域所公知的,這里不再描述。還應(yīng)理解,為了實現(xiàn)該電路,實際應(yīng)用可以包括緩存器、寄存器、時鐘信號或其它邏輯電路。但是,為了方便理解本發(fā)明或者本發(fā)明與傳統(tǒng)系統(tǒng)、設(shè)備或方法的區(qū)別,這里不再對傳統(tǒng)的進行描述。
從主機102到盤片104的第二條路徑通過校正子/奇偶性發(fā)生器110來確定。校正子/奇偶性發(fā)生器110接收“異”(XOR)電路112的輸出,而“異”電路112則對數(shù)據(jù)D(x)以及隨機序列發(fā)生器的輸出113進行“異”運算。如本領(lǐng)域所知的,隨機序列發(fā)生器116接收實際的PBA(或LBA)117,將其作為種子來生成偽隨機序列輸出。奇偶性/校正子發(fā)生器110根據(jù)XOR 112輸出的和信號產(chǎn)生奇偶性P(x)。多路開關(guān)選擇器108響應(yīng)于數(shù)據(jù)/奇偶性選擇控制信號119的狀態(tài),選通數(shù)據(jù)D(x)或奇偶性P(x)。
在操作傳統(tǒng)的ECC編碼器/解碼器單元106時,隨機序列發(fā)生器單元116是很重要的。當進行寫操作(編碼)時,用指定的或?qū)嶋H的PBA值為種子使隨機序列發(fā)生器116引發(fā)隨機數(shù)(籽數(shù)),而當進行回讀操作(解碼)時,用期望的或預(yù)測的PBA值111使隨機序列發(fā)生器116引發(fā)籽數(shù)。如前所述,預(yù)測或估計的PBA(或LBA)111例如可以是一個4個字節(jié)的值,用于規(guī)定存儲媒體上期望寫入或讀出信息的位置(例如磁盤上的磁道和扇區(qū))。籽數(shù)是指用于編碼或解碼的一個過程,該過程中,在隨機序列發(fā)生器生成偽隨機序列之前,被預(yù)設(shè)PBA(或LBA)的值。用種子來生成偽隨機序列是本領(lǐng)域公知的技術(shù),這里不再描述。
在寫操作期間,XOR電路112用來自主機102的數(shù)據(jù)D(x)105對隨機序列發(fā)生器116的輸出序列113進行“異”運算,從而生成奇偶性。但在回讀期間,XOR 112用讀得的數(shù)據(jù)D(x)105對輸出序列113進行“異”運算,從而生成校正子(參見圖2的回讀結(jié)構(gòu))。在讀或回讀的操作模式下,如圖2所示,數(shù)據(jù)D(x)來自盤片104,并且被傳送給主機102?;刈x或解碼模式還使用糾錯單元(ECU)120,該單元接收校正子/奇偶性發(fā)生器110產(chǎn)生的校正子121。如果實際PBA(或LBA)不等于期望的PBA(或LBA),那么糾錯單元120產(chǎn)生一個不可糾錯的信號或指示121,確定是否發(fā)生差錯。這里不需要多路開關(guān)選擇器108,因為主機不需要奇偶性,而只接收數(shù)據(jù)D(x)。
不幸的是,如果隨機序列發(fā)生器116用來對相同數(shù)據(jù)進行寫操作和回讀操作時所用的種子值(在本例中是PBA或LBA)是不同的,那么寫隨機序列發(fā)生器輸出序列和讀隨機序列發(fā)生器輸出序列也將是不同的,而且如料想的,它們將不匹配或者相互抵消。例如,如果估計的PBA(LBA)不同于實際的PBA,那么播種值是不同的。當檢測到差錯時,無論差錯的起因是否為數(shù)據(jù)訛誤(例如,差錯可能因媒體不合格而引起,或者因?qū)嶋HPBA與估計PBA不匹配而引起),ECU 120只認為發(fā)生了不可糾正的差錯。在傳統(tǒng)的系統(tǒng)中,沒有一種過程可以識別差錯的起因是PBA不正確。
因此,此傳統(tǒng)的方法不能解決所有與糾錯和PBA不正確相關(guān)有問題,尤其不能區(qū)分不可糾正的數(shù)據(jù)差錯和PBA不正確。傳統(tǒng)方法也不能從回讀的數(shù)據(jù)中恢復(fù)實際的PBA。
有幾個理由期望能夠區(qū)分不可糾正的數(shù)據(jù)差錯和PBA(或LBA)不正確。首先,PBA或LBA不正確與例如缺陷媒體造成的差錯在本質(zhì)上是不同的。其次,從回讀數(shù)據(jù)中恢復(fù)實際PBA或LBA對于控制過程設(shè)計期間調(diào)節(jié)對盤片驅(qū)動器的尋找或同步操作是有用的。最后,由于在一些高密度記錄系統(tǒng)中,存在盤片被讀部分(PBA)不是盤片應(yīng)讀部分的可能性較大,所以從回讀數(shù)據(jù)中恢復(fù)實際PBA,從而允許對尋找操作控制系統(tǒng)進行實時或接近實時的調(diào)節(jié)是有利的。因此,需要一種方案可以解決不能區(qū)分不可糾正的數(shù)據(jù)差錯和PBA或LBA不正確的問題,并且需要一種方案可以解決不能從回讀數(shù)據(jù)中恢復(fù)實際PBA或LBA的問題。
本發(fā)明提供了一種解決這個問題和其它問題的方案,并且提供了優(yōu)于現(xiàn)有技術(shù)的其它優(yōu)點。
發(fā)明內(nèi)容
本發(fā)明涉及這樣的系統(tǒng)、設(shè)備和方法,它們具有多項式乘法器電路,可以對從存儲裝置物理塊地址或邏輯塊地址導(dǎo)出的預(yù)謀序列進行運算,并且所述系統(tǒng)、設(shè)備和方法可以提供存儲在媒體上的改進的碼字,可以區(qū)分不可糾正的數(shù)據(jù)差錯和不正確塊地址差錯,并且允許從數(shù)據(jù)存儲系統(tǒng)的存儲媒體中讀取的數(shù)據(jù)中恢復(fù)實際的塊地址,從而解決上述問題。
依照本發(fā)明的一個實施例,提供了一種用于生成碼的奇偶碼元序列的方法。該方法接收表示m碼元地址的序列,以及由k個數(shù)據(jù)碼元組成的序列。用一組乘數(shù)碼元乘以表示m碼元地址的序列,以產(chǎn)生由乘積碼元組成的第一序列,所述乘積碼元組成的第一序列等于第一序列和第二序列的和,其中第一序列的最后r個系數(shù)(r等于奇偶碼元的數(shù)目)為零,并且第二序列的次數(shù)小于奇偶碼元的數(shù)目。然后,在對碼字前k個碼元進行數(shù)據(jù)發(fā)送的階段,在生成數(shù)據(jù)序列加第一序列之和的第一奇偶序列之前,將乘積碼元組成的第一序列與數(shù)據(jù)序列相加。接著,在碼字結(jié)束時對許多碼元進行奇偶性發(fā)送階段,直接將第二序列與第一奇偶序列相加,以產(chǎn)生最終的奇偶序列。
依照本發(fā)明的另一實施例,用于生成碼的奇偶碼元序列的方法還有生成校正子碼元序列的步驟。生成校正子碼元序列的步驟包括以下步驟接收表示m碼元地址估計的序列,該序列可以不等于表示m碼元地址的序列,還接收由k+r個數(shù)據(jù)和奇偶碼元組成的回讀序列,其中一些可能是差錯的。然后,用一組乘數(shù)碼元乘以表示m碼元地址估計的序列,以產(chǎn)生由乘積碼元組成的第二序列,如果m碼元地址估計序列等于m碼元地址序列,那么第二序列將與乘積碼元組成的第一序列相同。還將乘積碼元組成的第二序列與回讀序列相加,以產(chǎn)生一個和序列,并生成和序列的校正子。
還提供了用于實施本發(fā)明方法的設(shè)備和系統(tǒng)。例如,提供一種具有本發(fā)明特征的、計算機系統(tǒng)用的數(shù)據(jù)存儲系統(tǒng),用于旋轉(zhuǎn)磁盤存儲系統(tǒng)、磁光存儲系統(tǒng)、磁帶存儲系統(tǒng),或者任何其它的數(shù)據(jù)或信息系統(tǒng),其中數(shù)據(jù)的地址或位置處于上述情況。本發(fā)明的設(shè)備、系統(tǒng)和方法更廣泛地用于將一些非地址塊信息的輔助信息與用戶數(shù)據(jù)相聯(lián)系,從而可以識別這種輔助信息中的差錯,并恢復(fù)輔助信息。本發(fā)明還可以作為一種計算機可讀程序存儲設(shè)備來實施,所述計算機可讀程序存儲設(shè)備可以包含計算機系統(tǒng)可以執(zhí)行的指令程序,用以執(zhí)行塊地址差錯鑒別和恢復(fù)方法。另外,本發(fā)明還可以作為塊地址差錯鑒別和恢復(fù)電路本身來實施,所述電路可以做成諸如盤片驅(qū)動系統(tǒng)等數(shù)據(jù)存儲系統(tǒng)的一個元件,其本身可以是計算機系統(tǒng)的一個組成部分。在諸多的優(yōu)點中,本發(fā)明用無首標的PBA/LBA完整方案為物理塊地址和/或邏輯塊地址(PBA/LBA)的恢復(fù)提供了虛擬預(yù)謀。
結(jié)合附圖閱讀以下詳細描述,將清楚表征本發(fā)明的這些或各種其它的特點和長處。
附圖概述圖1是一方框圖,示出了寫操作模式下的、傳統(tǒng)的數(shù)據(jù)存儲系統(tǒng),該系統(tǒng)具有基于隨機序列發(fā)生器的糾錯碼編碼器/解碼器單元。
圖2是一方框圖,示出了讀操作模式下的、傳統(tǒng)的數(shù)據(jù)存儲系統(tǒng),該系統(tǒng)具有基于隨機序列發(fā)生器的糾錯碼編碼器/解碼器單元。
圖3是一方框圖,示出了寫操作模式下本發(fā)明數(shù)據(jù)存儲系統(tǒng)的一個實施例,該系統(tǒng)具有基于多項式乘法器的糾錯碼編碼器/解碼器單元。
圖4是一方框圖,示出了讀操作模式下本發(fā)明數(shù)據(jù)存儲系統(tǒng)的一個實施例,該系統(tǒng)具有基于多項式乘法器的糾錯碼編碼器/解碼器單元。
圖5是一示意圖,將順序預(yù)謀方法與另一種方法進行比較,而所述另一種方法是將具有預(yù)謀物理塊地址之數(shù)據(jù)序列和奇偶性長度的函數(shù)S(x)與數(shù)據(jù)相加,并且對其進行處理,以獲得與順序預(yù)謀時相同的奇偶性。
圖6是一示意圖,示出了本發(fā)明乘法器電路的一個實施例。
圖7是一流程圖,詳細描述了本發(fā)明方法的一個實施例。
詳細描述現(xiàn)在參照附圖描述本發(fā)明結(jié)構(gòu)和方法的實施例。參照圖3,該圖示出了計算機系統(tǒng)200的實施例,在描述基于盤片204的數(shù)據(jù)存儲系統(tǒng)的情況下,計算機系統(tǒng)200包括本發(fā)明的ECC編碼器/解碼器206。類似圖3所示的系統(tǒng)除了包括糾錯碼(ECC)編碼器/解碼器206之外,還包括傳統(tǒng)類型的主計算機202以及諸如硬盤驅(qū)動器204或磁光驅(qū)動器等數(shù)據(jù)存儲系統(tǒng),其中所述主計算機具有存儲器、顯示器和定位設(shè)備。在計算機系統(tǒng)200中實施可執(zhí)行的軟件、固件、硬件或其組合可以實現(xiàn)本發(fā)明的方法,盡管至少在有關(guān)盤片驅(qū)動器204的控制器(未圖示)硬件中部分實施本發(fā)明是有利的,它可以使執(zhí)行速度適應(yīng)于對盤片寫入或回讀數(shù)據(jù)的速度。
圖3示出了本發(fā)明計算機數(shù)據(jù)存儲系統(tǒng)200的第一實施例。主計算機系統(tǒng)202將數(shù)據(jù)D(x)205寫入諸如磁盤204等數(shù)據(jù)存儲媒體中,并從數(shù)據(jù)存儲媒體204讀出數(shù)據(jù)D(x)205。一般可以用第一FIFO(先進選出緩存器)或緩存器(未圖示)臨時存儲在主計算機或處理器202和數(shù)據(jù)存儲媒體204之間傳遞的數(shù)據(jù)205。當主機202向數(shù)據(jù)存儲媒體204寫入數(shù)據(jù)時,將存儲在FIFO中的用戶數(shù)據(jù)傳送給糾錯碼(ECC)編碼器/解碼器單元206。然后,糾錯碼編碼器/解碼器單元206對用戶數(shù)據(jù)字節(jié)D(x)205與根據(jù)實際BPA/LBA序列產(chǎn)生的序列S1(x)231的和234進行編碼;產(chǎn)生包括第一部分奇偶字節(jié)或碼元的輸出211。以下將更詳細地描述,將來自校正子/奇偶性發(fā)生器210的輸出211與多項式乘法器216的輸出S2(x)232相加,以產(chǎn)生最終奇偶性Q(x)215的方式。傳統(tǒng)類型的盤片接口(未圖示)將包括數(shù)據(jù)205和奇偶性215的編碼器輸出209寫入數(shù)據(jù)存儲媒體204中。
在讀操作期間(參見圖4),盤片接口從數(shù)據(jù)存儲媒體204中讀取帶有附加奇偶性Q(x)的數(shù)據(jù)D(x)225,并一般通過FIFO將其傳送給緩存器(未圖示)。(為使描述清楚,附圖中沒有示出各種FIFO和緩存器,因為它們屬傳統(tǒng)類型,并且它們在此類數(shù)據(jù)存儲系統(tǒng)中的設(shè)計和使用是本領(lǐng)域公知的)。另外,將讀取的序列225與估計的PBA/LBA序列213一起傳送給ECC編碼器/解碼器單元206。ECC編碼器/解碼器單元206計算出校正子226,并判斷接收到的數(shù)據(jù)和/或估計的PBA/LBA序列是否包含任何出錯的字節(jié)或碼元。用ECC編碼器/解碼器單元206內(nèi)的或與之相關(guān)的糾錯單元220檢測出錯的碼元,并且當估計的PBA/LBA 213與實際PBA/LBA 217不匹配時,產(chǎn)生諸如PBA出錯標志227等出錯指示符,以及諸如PBA差錯值229等差錯值。當校正子表示沒有任何差錯時,對經(jīng)ECC編碼器/解碼器206處理的信息進行解碼,并將其傳送給主機202。
參照圖3和圖4可以對本發(fā)明進行概括。圖3和圖4分別是寫(編碼)和讀(解碼)操作模式下關(guān)于本發(fā)明ECC編碼器/解碼器單元206的一個較佳實施例的方框圖。ECC編碼器/解碼器單元206具有多項式乘法單元,它產(chǎn)生多項式序列S(x)=L(x)×M(x)×xk-m-u+1,其中L(x)是PBA(或LBA)或者從PBA(或LBA)導(dǎo)出的某些表示,M(x)是xm+r-1+u模g(x)形式的多項式,x是多項式的變量,m是每次碼字交錯時的預(yù)謀字節(jié)(碼元)數(shù),r是奇偶字節(jié)數(shù),0≤u<(k-m+1)是延遲值,而g(x)是生成多項式。注意,本說明中使用的字節(jié)是具有任意位數(shù)的碼元。
ECC編碼器/解碼器206產(chǎn)生奇偶字節(jié)序列Q(x),該序列與傳統(tǒng)ECC編碼器/解碼器單元(諸如參照圖1和圖2描述的ECC編碼器/解碼器單元)中產(chǎn)生的奇偶字節(jié)序列P(x)不同,但其寫于存儲媒體(盤片)上的字節(jié)數(shù)仍然與傳統(tǒng)奇偶性P(x)的相同,同時還有利于區(qū)分不可糾正的差錯和不正確PBA(LBA),并提供充分的信息以便從回讀數(shù)據(jù)中恢復(fù)PBA或LBA。
為了產(chǎn)生被寫入盤片內(nèi)的、具有虛擬預(yù)謀字節(jié)的碼字,給一般包括奇偶性/校正子發(fā)生器單元的ECC編碼器/解碼器增加多項式乘法裝置216,裝置216用xm+r-1+u模g(x)乘以序列L(x)×xk+r-m-u(這時,需要延遲u)。執(zhí)行所需加法的第一和第二“異”電路(XOR1,XOR2)也位于ECC編碼器/解碼器內(nèi)。在圖3和圖4所示的實施例中,乘法器216需要移入r-1個附加的零,以便產(chǎn)生S2(x)的最后r-1個字節(jié)。一般來說,奇偶性/校正子發(fā)生器210包括寄存器,它們用于存儲計算值直到計算值被輸出,但由于這些寄存器是傳統(tǒng)類型的,所以沒有示出。用附加零嵌平乘法器相當于將L(x)xk+r-m代替L(x)xk-m+1作為輸入序列饋送。
在寫操作期間開始編碼時,輸出多路開關(guān)選擇器208將用戶數(shù)據(jù)D(x)傳送到輸出端。將用戶數(shù)據(jù)D(x)和預(yù)謀序列L(x)的字節(jié)同時饋送到奇偶性發(fā)生器210的數(shù)據(jù)輸入端。用xr乘以D(x)以及用xk+r-m乘以L(x)分別對應(yīng)于給D(x)和L(x)附加r個和k+r-m個零。在前k個碼元期間,在乘法裝置216的輸出端產(chǎn)生S(x),并在奇偶性/校正子發(fā)生器210的輸入端將其與D(x)相加。在處理了k個字節(jié)后,用數(shù)據(jù)/奇偶性選擇控制信號將多路開關(guān)選擇器208切換至“奇偶性”輸入端,并且傳送奇偶字節(jié)。乘法器216開始產(chǎn)生S2(x)的字節(jié),它們可以都是零。將S2(x)加至奇偶性/校正子發(fā)生器210的輸出端,以形成所需要的序列。
在回讀期間,不對數(shù)據(jù)的奇偶字節(jié)進行區(qū)分,并且在奇偶性/校正子發(fā)生器210的輸入端將S1(x)和S2(x)與讀取的序列相加,致使不再需要XOR元件214。除這些方面外,在回讀操作期間,過程與寫操作的編碼過程相同。
現(xiàn)在簡要地討論Reed Solomon碼,以便理解本發(fā)明對PBA(或LBA)進行虛擬預(yù)謀的理論基礎(chǔ)。應(yīng)該理解,即使這里揭示的內(nèi)容描述了本發(fā)明關(guān)于Reed Solomon碼的實施例,但本發(fā)明的結(jié)構(gòu)和方法普遍適用于循環(huán)碼,并且尤其適用于BCH和Reed Solomon碼。Reed Solomon(RS)碼字可以只有有限數(shù)目的數(shù)據(jù)字節(jié)。例如,在一示范數(shù)據(jù)字段中,經(jīng)設(shè)計的碼元糾錯能力是由5個碼元(t=5),4次交錯(I=4)和5個字節(jié)檢錯碼奇偶性(EDC=5)組成的碼,在1020字節(jié)的字段中,用戶數(shù)據(jù)字節(jié)的最大數(shù)值是kmax=975,余下的45個字節(jié)用于奇偶檢驗。如果用戶的數(shù)據(jù)字節(jié)數(shù)k小于kmax,那么可以用前kmax-k個字節(jié)傳送附加信息。
本發(fā)明的結(jié)構(gòu)和方法使用循環(huán)碼字(諸如RS碼字)中的這些空字節(jié)(標稱位置在碼字的始端),將PBA或LBA信息傳送給存儲在盤片上的字節(jié)序列。術(shù)語“預(yù)謀”及其變化形式用于描述附加字節(jié)被放在碼字開始的事實。在一實施例中,用每次交錯預(yù)先考慮一個字節(jié)的速率預(yù)謀PBA或LBA,但是,可以每次交錯預(yù)謀更多數(shù)目的PBA或LBA字節(jié)。
在以下描述中將更加清楚,在寫操作期間,不把PBA或LBA字節(jié)本身寫入盤片驅(qū)動器或其它存儲裝置中。但是,仍在寫操作期間計算奇偶性,而在讀操作期間計算校正子,就好象PBA或LBA是存在的。為此,由于預(yù)謀的PBA或LBA從不真正寫到盤片驅(qū)動器或其它存儲裝置中,所以可以認為它們是“虛擬的”,而不是“真實的”。盡管沒有將預(yù)謀的字節(jié)本身寫入存儲裝置,但在回讀期間,如果由計算得到的校正子所表示的PBA(或LBA)字節(jié)不同于寫操作期間計算得到的PBA(或LBA),那么ECC將糾正PBA(或LBA)位置中的差錯。因此本發(fā)明的結(jié)構(gòu)和方法可以從PBA(或LBA)差錯中恢復(fù)。
在具有256元的Galois字段{GF(256)}上,Reed Solomon(RS)碼中的碼字具有有限的長度n=k+r≤255,其中k是用戶的數(shù)據(jù)字節(jié)數(shù),而r是奇偶字節(jié)數(shù)。通過碼的檢測/糾正能力確定奇偶字節(jié)的數(shù)值r,致使對于一個具有給定糾錯能力的碼,用戶的數(shù)據(jù)字節(jié)數(shù)k總是小于或等于用戶的最大數(shù)據(jù)字節(jié)數(shù)kmax=255-r。如果用戶數(shù)字字節(jié)的實際數(shù)目k小于kmax,那么前kmax-k個位置是空的或者是可使用的,并且可用來傳送m≤kmax-k個字節(jié)的附加信息。
例如,具有4個字節(jié)的邏輯塊地址(LBA)或物理塊地址(PBA),以及四次糾錯碼(ECC)交錯,那么我們可以預(yù)謀LBA(或PBA),每次交錯預(yù)謀一個字節(jié)(m=1)。當存在三次交錯時,利用每次交錯預(yù)謀一個字節(jié),本發(fā)明只使用PBA(或LBA)的三個低端字節(jié)。
ECC邏輯電路將計算這些附加PBA或LBA字節(jié)中的差錯,其計算方法與針對用戶數(shù)據(jù)的計算方法相同。這些附加PBA或LBA字節(jié)并不實際寫入盤片或其它存儲裝置中,但在寫操作的奇偶性計算期間,ECC編碼器會考慮這些附加字節(jié)。
在回讀期間,在校正子/奇偶性發(fā)生器單元210中,用這些PBA或LBA字節(jié)的估計值計算校正子,就好象這些估計值是從盤片中讀取的。在回讀操作期間,在糾錯單元220內(nèi)的ECC邏輯電路中(參見圖4),糾錯單元220響應(yīng)于接收到的校正子,檢測出估計或期望的PBA(或LBA)213與實際PBA(或LBA)217不匹配,從而產(chǎn)生PBA出錯標志和PBA差錯值。PBA(或LBA)出錯狀態(tài)和PBA(或LBA)差錯值可用來恢復(fù)實際的PBA(或LBA)的值。
現(xiàn)在描述計算PBA或LBA字節(jié)對奇偶性/校正子計算的貢獻的幾種方法。注意,在一些實施中,檢錯碼(EDC)將只有一次交錯,并且需要覆蓋所有預(yù)謀的PBA或LBA字節(jié),例如分別具有4次(m=4)或3次(m=3)ECC交錯的的實施。在一些例子中,與計算對ECC的貢獻相比,這會使計算PBA/LBA字節(jié)對EDC奇偶性/校正子計算的貢獻更難。
在本發(fā)明結(jié)構(gòu)和方法的一個實施例中,用相同的結(jié)構(gòu)在寫操作期間產(chǎn)生奇偶性,而在回讀期間產(chǎn)生校正子。因此,描述通常是指一公共的奇偶性/校正子發(fā)生器。但是,應(yīng)該注意,本發(fā)明的結(jié)構(gòu)和方法不限于奇偶性發(fā)生器和校正子發(fā)生器具有相同物理結(jié)構(gòu)的情況。因此,如本說明中所使用的,奇偶性/校正子發(fā)生應(yīng)該解釋為一個共享的奇偶性和校正子發(fā)生器單元,或者一個奇偶性發(fā)生器單元,或者一個校正子發(fā)生器單元。奇偶性/校正子發(fā)生器可以是與這里所述的本發(fā)明要求一致的任何傳統(tǒng)形式,其許多結(jié)構(gòu)是已知的,這里不再描述。
一種計算包含PBA或LBA信息的奇偶性/校正子的方法是,預(yù)謀表示用戶數(shù)據(jù)D(x)之PBA或LBA字節(jié)的序列L(x),并且使奇偶性/校正子發(fā)生器210運行m+k+r個時鐘周期。該方法很有用,并且可以使所需的硬件最小型化,但是對于每次交錯要預(yù)謀的m個附加字節(jié),卻需要增加m個時鐘周期的處理時間。在一些存儲裝置的實施例中,例如在高性能盤片驅(qū)動存儲系統(tǒng)中,不可能獲得這些附加的時鐘周期。這種方法可以稱為“順序預(yù)謀”。圖5示出了此順序預(yù)謀法,而下面將描述其它幾種方法。
奇偶性/校正子的第二種計算方法是,預(yù)先計算附加PBA/LBA字節(jié)對奇偶性/校正子的貢獻,并在處理第一用戶數(shù)據(jù)之前,先將這些值載入奇偶性/校正子發(fā)生器210。這種方法的一個不利因素是,根據(jù)奇偶性發(fā)生器的結(jié)構(gòu)、校正子發(fā)生器的結(jié)構(gòu)以及m的值,可能需要兩個不同的用于奇偶性和校正子的預(yù)計算電路。但是,當m=1時,也就是說,當每次交錯只有一個預(yù)謀字節(jié)時,這種潛在的不利不會發(fā)生。在該情況下,如果使用組合的奇偶性/校正子發(fā)生器,那么兩個預(yù)計算電路都是簡單的布線或其它直接耦合或連接。在本發(fā)明的一個實施例中,這一例外有利于ECC奇偶性/校正子的計算。
現(xiàn)在我們描述本發(fā)明方法的一個實施例,該方法用生成奇偶性和校正子的同一預(yù)計算電路在k+r個時鐘周期內(nèi)生成奇偶性/校正子。每次預(yù)計算的結(jié)果是一個總長度為n=k+r的“等價”字節(jié)序列,該長度與只根據(jù)用戶數(shù)據(jù)的傳統(tǒng)碼字長度相等。此序列等價于奇偶性和校正子計算的預(yù)謀序列L(x)。
等價序列中只有前m+r-1個字節(jié)可以具有非零值,其它所有的字節(jié)皆為零。我們知道,這是因為該序列是兩個次數(shù)已知的多項式的乘積。在本發(fā)明的至少一個實施例中,與到達的用戶數(shù)據(jù)D(x)并行提供預(yù)謀序列L(x),并且乘法器電路216用多項式M(x)=[xk+r-mmod g(x)]乘以預(yù)謀序列L(x),以產(chǎn)生等價序列S(x)=L(x)xk+r-mmod g(x)×xk-m+1。以下描述一例乘法器216的結(jié)構(gòu),該乘法器可以實現(xiàn)所需的多項式乘法。一般地說,乘法器多項式可以是M(x)=[xk+r-m+umod g(x)]的形式,其中u表示用戶數(shù)據(jù)始端的延遲,并且0≤u<(k-m+1)。M(x)的形式允許根據(jù)用戶數(shù)據(jù)D(x),相對于計算的開始,延遲PBA/LBA對奇偶性之貢獻的開始,致使例如可以在0≤u<(k-m+1)字節(jié)范圍內(nèi)將PBA/LBA貢獻的計算延遲任意一個量,其中u=0表示沒有延遲,而u=(k-m+1)表示PBA/LBA和D(x)對奇偶性的貢獻同時完成的一種延遲。
當m+r-1>k>m-2時,等價序列S(x)的最后(m+r-1)-k個字節(jié)直接與奇偶性/校正子發(fā)生器210的輸出進行“異”運算,從而獲得奇偶字節(jié),饋送到多路開關(guān)選擇器208的輸出端。對于k處于該范圍之外的情況,“異”電路212對從第一數(shù)據(jù)字節(jié)開始的數(shù)據(jù)D(x)和S(x)進行“異”運算,然后將結(jié)果送入奇偶性/校正子發(fā)生器210。
當k<m-1時,本發(fā)明結(jié)構(gòu)和方法的這一特殊實施例一般不工作,因為一個碼字的長度一般小于等價序列中非零字節(jié)的數(shù)目;但是,如果用戶數(shù)據(jù)字節(jié)數(shù)k保證不小于5,那么對實施m=4的EDC不加以限制。盡管本發(fā)明的結(jié)構(gòu)或方法沒有限制,但在以下描述的實施例中,除非另作說明,假設(shè)k≥m+r-1。
現(xiàn)在參照圖6,描述用于ECC編碼器/解碼器單元206的乘法器216的一個實施例,用以說明執(zhí)行乘法的方法和示范結(jié)構(gòu)。示范的乘法器電路針對r=4的情況,但本領(lǐng)域的熟練技術(shù)人員可以理解,此示范電路很容易被擴展,以容納更大數(shù)值和較小數(shù)值的r,并且還可以用其它電路來實現(xiàn)本發(fā)明方法的各個方面。乘法器電路216包括一個有三個寄存器單元251、252和253的移位寄存器(r2,r1,r0)250,三個XOR單元261、262和263,以及四個固定的乘法器271、272、273和274,其中四個乘法器將表達式xm+4-1mod g(x)=xm+3mod g(x)=p3x3+p2x2+p1x+p0中的系數(shù)p3、p2、p1和p0乘以序列L(x)xk+r-m的延遲形式。
在輸入序列的第一字節(jié)進入之前,將寄存器250設(shè)置為0,即每個階段都將r2、r1和r0設(shè)置為零(“0”)。在操作期間,將輸入序列的字節(jié)每次一個移入寄存器250中,并根據(jù)上述表達式在XOR門263的輸出端產(chǎn)生相應(yīng)的S(x)280的元素。注意,S(x)280是按上述方法的S1(x)281與S2(x)282的和。S(x)的最后r個碼元稱為S2(x)282,S(x)的其余碼元表示S1(x)×x-r。
我們現(xiàn)在描述一些與碼字的多項式表示有關(guān)的理論和數(shù)學的考慮,因為它們與本發(fā)明有關(guān)。在進一步的描述中,我們在示范的256元Galois字段上用系數(shù)和相應(yīng)多項式表示字節(jié)序列。對應(yīng)于序列值dk-1,dk-2,…d1,d0,的多項式是dk-1xk-1+dk-2xk-2+…+d1x+d0。原始的n=k+r字節(jié)的碼字C(x)=D(x)xr+P(x)以其組成部分(k字節(jié)的數(shù)據(jù)D(x)和r字節(jié)的奇偶性P(x))具有以下等式和表Ⅰ-Ⅳ中所示的結(jié)構(gòu)和多項性表示,其中k字節(jié)用來表示用戶數(shù)據(jù),而D(x)的次數(shù)=k-1。表Ⅰ.用戶數(shù)據(jù)用戶數(shù)據(jù),k字節(jié)
D(x)=dk-1xk-1+dk-2xk-2+…d1x+d0, deg D(x)=k-1;(1)表Ⅱ.奇偶性奇偶性,r字節(jié)
P(x)=pr-1xr-1pr-2xr-2+…+p1x+p0, deg P(x)=r-1;(2)表Ⅲ.碼字C.碼字C,n=k+r字節(jié)
用戶數(shù)據(jù),k字節(jié)奇偶性,r字節(jié)
C(x)=D(x)xr+P(x)deg C(x)=k-1+r.(3)用以下多項式L(x)表示具有m個字節(jié)lm-1,lm-2,…l1,l0,的預(yù)謀序列。
L(x)=lm-1xm-1+lm-2xm-2+…+l1x+l0, degL(x)=n-1.(4)如以下等式和表Ⅳ所示,碼字B由預(yù)謀序列、用戶數(shù)據(jù)和相應(yīng)的奇偶字節(jié)組成。
表Ⅳ.碼字B.碼字B,m+k+r字節(jié)
預(yù)謀的,m字節(jié)用戶數(shù)據(jù),k字節(jié)奇偶性,r字節(jié)
B(x)=L(x)xn+D(x)r+Q(x);deg B(x)=m+k+r-1.(5)我們不把包括預(yù)謀序列L(x)的碼字B(x)寫入盤片中,所以實際入盤片的序列A(x)不是碼字,并且實際上不包括預(yù)謀字節(jié)L(x),字節(jié)A(x)的序列可以寫成A(x)=D(x)xr+Q(x)。
(6)當讀回序列A(x)時,在某些情況下,序列可能已被差錯破壞,試圖通過將估計的或期望的預(yù)謀序列L(x)預(yù)謀成A(x)并且進行傳統(tǒng)的糾錯,來恢復(fù)碼字B(x)。
現(xiàn)在我們來看寫(編碼)期間的奇偶性生成,并且下面將看到,對奇偶性生成的討論還可以直接適用于校正子的生成。
由于Reed Solomon(RS)碼是一種循環(huán)碼,碼字應(yīng)該滿足C(x)mod g(x)=0的條件,其中C(x)是碼字,g(x)是生成多項式,而g(x)的次數(shù)是r-1(degg(x)=r-1)。因此,如果期望碼是系統(tǒng)化的,即C(x)=D(x)xr+P(x),(7)那么必須有P(x)=[D(x)xr]modg(x),(8)也就是說,用一個多項式表示奇偶字節(jié)序列P(x),該多項式等于D(x)xr除以生成多項式g(x)后所得的余數(shù)。
用類似的方式,在用預(yù)謀序列L(x)對碼字B(x)進行順序預(yù)謀的情況下,我們具有下列關(guān)系式B(x)=[L(x)xk+D(x)]xr+Q(x) (9)和Q(x)={[L(x)xk+D(x)]xr}mod g(x)=[L(x)xk+r]mod g(x)+[D(x)xr]mod g(x)(10)或者
Q(x)=[L(x)xk+r]modg(x)+P(x).(11)一般地說,對于順序預(yù)謀,由于奇偶性/校正子發(fā)生器一次處理一個字節(jié)的輸入序列B(x),所以它要化(m+r+k)個時鐘周期來生成Q(x),即要化k+r個周期來生成P(x),化m+k+r個周期來生成[L(x)xk+r]modg(x)。
應(yīng)該滿足關(guān)于等價序列S(x)和D(x)的兩個條件,使得奇偶性/校正子發(fā)生器210可以接收兩個輸入序列,并用成對的方式處理它們。滿足以下條件的多項式S(x)能通過簡單地將具有所需特性的S(x)與D(x)xr相加并且將所得的和序列處理為正常的用戶數(shù)據(jù)而在所要求的k+r個周期內(nèi)生成奇偶性Q(x);1.degS(x)=degD(x)xr=r+k-1;and (12)2.S(x)modg(x)=[L(x)kk+r]modg(x); (13)請回憶一下,D(x)xr對應(yīng)于為D(x)添加的r個零,正如L(x)xk+r-m對應(yīng)于為L(x)添加k+r-m個零。在本發(fā)明的結(jié)構(gòu)和過程中,用“異”(XOR)電路生成此結(jié)果的和序列。
不是多余的提醒,并且為了作完整的揭示,我們現(xiàn)在用模運算的數(shù)學特性為一些一般性的函數(shù)M(x)和N(x)導(dǎo)出例舉函數(shù)S(x)的R(x)。但是,應(yīng)該理解,本發(fā)明的結(jié)構(gòu)和方法不受此推導(dǎo)的限制,并且其余形式的S(x)和R(x)也在本發(fā)明的范圍和精神內(nèi)。具體地說,我們將S(x)的關(guān)系式推導(dǎo)成乘積L(x)R(x)的函數(shù)。首先,回憶算術(shù)的模g(x)特性,即[M(x)×N(x)]modg(x)=[M(x)modg(x)×N(x)]modg(x) (14)=[M(x)×N(x)modg(x)]modg(x)=[M(x)modg(x)×N(x)modg(x)]modg(x).然后,應(yīng)用式(13)中要求S(x)modg(x)=[L(x)kk+r]modg(x)的條件(2),我們獲得以下關(guān)系式[L(x)xk+r]modg(x)=[L(x)xk+r-s×xs]modg(x) (15)={L(x)×[xk+r-s×xsmodg(x)]}modg(x)=[L(x)×R(x)]modg(x)和R(x)=xk+r-s×xsmodg(x),where deg R(x)=k+r-s+r-1.(16)現(xiàn)在我們通過應(yīng)用要求“deg S(x)==deg D(x)xr=r+k-1”的條件(1)來識別合適的值“s”,以便達到以下結(jié)果
deg S(x)=deg[L(x)×R(x)]=m-1+k+r-s+r-1=r+k-1(17)和s=m+r-1.(18)于是,將s的值代入上述R(x)的表達式中,并且由于假設(shè)S(x)為L(x)R(x)的形式,所以我們獲得以下關(guān)于R(x)和S(x)的非常有用的定義R(x)=xm+r-1modg(x)×xk-m+1(19)和S(x)=[L(x)×xm+r-1modg(x)]×xk-m+1.(20)傳統(tǒng)的奇偶性/校正子發(fā)生器被設(shè)計成,只處理一個用戶數(shù)據(jù)序列,并且假設(shè)輸入序列D(x)×xr的最后“r”個字節(jié)為零,只取第一個D(x)作為輸入序列,忽略任何剩余的值。在本發(fā)明的結(jié)構(gòu)和方法中,只保證S(x)的最后k-m+1個字節(jié)為零,并且當r>k-m+1時,不把S(x)中一些非零的字節(jié)饋送到傳統(tǒng)的奇偶性/校正子發(fā)生器中。由于奇偶性/校正子發(fā)生器210可以是傳統(tǒng)的奇偶性/校正子發(fā)生器,或者至少本發(fā)明結(jié)構(gòu)和方法的實施例適用于這些傳統(tǒng)的奇偶性/校正子發(fā)生器,所以本發(fā)明的一個實施例將多項式S(x)作為兩個多項式的和來對待,并且提供附加的結(jié)構(gòu)和過程來處理附加值。
利用該方法,我們將S(x)寫成兩個多項式S1(x)和S2(x)的和S(x)=S1(x)+S2(x), (21)其中,degS2(x)=r-1,并且要求S1(x)的最后r個系數(shù)為零;以及S(x)modg(x)=S1(x)modg(x)+S2(x)modg(x).(22)即使只為用戶數(shù)據(jù)設(shè)計了一個奇偶性發(fā)生器,也將S1(x)饋送給奇偶性發(fā)生器210,在其輸出端產(chǎn)生結(jié)果[S1(x)modg(x)]。由于多項式S2(x)的次數(shù)小于生成多項式g(x)的次數(shù)(r)(其本身等于r),即degS2(x)<deg g(x)=r,所以S2(x)mod g(x)=S2(x),并且在適當?shù)臅r刻可以將S2(x)加到奇偶性發(fā)生器的輸出端,以便按適當?shù)臅r間順序形成序列S(x)=S1(x)+S2(x)。
應(yīng)該理解,當k<m-1時,不作修改一般不能使用該過程,因為在該情況下degL(x)+degR(x)+1=m+r-1>k+r (23)所以所需S(x)的非零部分的長度會超過將寫入盤片中的整個序列的長度。
生成校正子的過程類似于回讀期間或從存儲裝置中找回先前存儲的信息時所發(fā)生的奇偶性生成過程。使C(x)為對應(yīng)于從盤片或其它存儲媒體中讀取的字節(jié)序列的碼字多項式,并且碼的生成多項式為g(x)=(x+ar-1)(x+ar-2)…(x+a1)(x+a0)(24)將校正子的分量Sr-1,…,S0定義為C(x)在x=ar-1,…,x=a0處的值Sr-1=C(ar-1),…,S0=C(a0)??梢钥闯?,如果“a”是生成多項式g(x)的根,那么C(a)=[C(x)modg(x)]|x=a,(25)其中表達式[C(x)mod g(x)]是除以生成多項式g(x)后的余數(shù),并且標記“|x=a”表示多項式在特定值x=a處取值。
由以上描述可以知道,將S(x)與數(shù)據(jù)多項式D(x)×xr相加等價于根據(jù)生成的奇偶字節(jié)預(yù)謀L(x),這里生成的奇偶字節(jié)是除以生成多項式g(x)后的余數(shù)。因此,除了在寫操作期間,數(shù)據(jù)來自主機,而在回讀操作期間,數(shù)據(jù)來自存儲裝置外,可以采用與寫操作期間奇偶字節(jié)生成過程相同的過程在回讀期間生成校正子。
最后,在描述了本發(fā)明結(jié)構(gòu)和方法的實施例后,我們參照圖7的流程圖描述本發(fā)明的過程300。首先,接收一個多值序列,作為具有m個碼元的塊地址L(x)之多項式表示的系數(shù),并且接收一個多值序列,作為具有k個碼元的數(shù)據(jù)D(x)之多項式表示的系數(shù)(步驟301),接下來,我們用R(x)的系數(shù)乘以L(x)的系數(shù),產(chǎn)生具有S(x)=S1(x)+S2(2)形式的多項式乘積的系數(shù),致使S1(x)的最后r個系數(shù)為零,并且deg S2(x)=r-1,其中x是多項式的變量,k是數(shù)據(jù)碼元的數(shù)目,r是奇偶碼元的數(shù)目,u是延遲,m是L(x)中碼元的數(shù)目,而g(x)是碼的生成多項式(步驟302)。接下來,在對碼字的前k個碼元進行數(shù)據(jù)發(fā)送的階段,在為和D(x)+S1(x)×x-r生成第一奇偶序列之前,將第一多項式乘積分量S1(x)×x-r與數(shù)據(jù)多項式D(x)相加(步驟303)。最后,在對碼字的最后r個碼元進行奇偶性發(fā)送的階段,直接將第二多項式的乘積S2(x)與第一奇偶序列相加,產(chǎn)生最終的奇偶序列Q(x)(步驟304)。
現(xiàn)在,我們概括本發(fā)明實施例的各個方面。在一個方面,本發(fā)明提供了一種用于生成碼的奇偶碼元序列的方法。該方法包括以下步驟接收表示m碼元地址的序列,以及由k個數(shù)據(jù)碼元組成的序列;用一組乘數(shù)碼元乘以表示m碼元地址的所述序列,以產(chǎn)生由乘積碼元組成的第一序列,所述乘積碼元組成的第一序列等于第一序列和第二序列的和,其中第一序列的最后r個系數(shù)為零,并且第二序列的次數(shù)小于奇偶碼元的數(shù)目;在對碼字前k個碼元進行數(shù)據(jù)發(fā)送的階段,在生成數(shù)據(jù)序列加第一序列之和的第一奇偶序列之前,將乘積碼元組成的第一序列與數(shù)據(jù)序列相加;在碼字結(jié)束時對許多碼元進行奇偶性發(fā)送的階段,直接將第二序列與第一奇偶序列相加,以產(chǎn)生最終的奇偶序列。
此方法還可以產(chǎn)生循環(huán)碼的奇偶碼元序列Q(x),其條件為表示m碼元地址的序列包括一個多值序列,作為m碼元塊地址L(x)之多項式表示的系數(shù);由k個數(shù)據(jù)碼元組成的序列包括一個多值序列,作為具有k個碼元的數(shù)據(jù)D(x)之多項式表示的系數(shù);由乘數(shù)碼元組成的序列包括R(x)=xm+r-1+umod g(x)形式的多項式的系數(shù),其中x是多項式的變量,k是數(shù)據(jù)碼元的數(shù)目,r是奇偶碼元的數(shù)目,u是延遲,m是L(x)中碼元的數(shù)目,而g(x)是碼的生成多項式;由乘積碼元組成的第一序列包括以下形式的多項式乘積的系數(shù)S(x)=L(x)×R(x)×xk-m-u+1=L(x)×xm+r-1+umodg(x)×xk-m-u+1=S1(x)+S2(x)致使S1(x)的最后r個系數(shù)為零,并且deg S2(x)=r-1;另外,將最后沒有零碼元的第一序列與數(shù)據(jù)序列相加的所述步驟包括以下步驟,即在對碼字前k個碼元進行數(shù)據(jù)發(fā)送的階段,在產(chǎn)生和D(x)+S1(x)×x-r的第一奇偶序列之前,將第一多項式乘積分量S1(x)×x-r與數(shù)據(jù)多項式D(x)相加;直接將第二序列與第一奇偶序列相加的所述步驟包括以下步驟,即在對碼字的最后r個碼元進行奇偶性發(fā)送的階段,直接將第二多項式乘積S2(x)與第一奇偶序列相加,以產(chǎn)生最終的奇偶序列Q(x)。
在另一方面,用于生成碼的奇偶碼元序列的方法還包括以下步驟從包括最終奇偶序列的回讀序列中產(chǎn)生校正子碼元序列。
在另一方面,用于生成碼的奇偶碼元序列的方法還有產(chǎn)生校正子碼元序列的步驟,該步驟包括以下步驟接收表示m碼元地址估計的序列,該序列可以不等于表示m碼元地址的序列,還接收由k+r個數(shù)據(jù)和奇偶碼元組成的回讀序列,其中一些可能是差錯的;用一組乘數(shù)碼元乘以表示m碼元地址估計的序列,以產(chǎn)生由乘積碼元組成的第二序列,如果m碼元地址估計序列等于m碼元地址序列,那么第二序列將與乘積碼元組成的第一序列相同;將乘積碼元組成的第二序列與回讀序列相加,以產(chǎn)生一個和序列,并生成和序列的校正子。
在其它方面,當存在下述情況時,可以執(zhí)行用于生成校正子碼元序列的方法表示m碼元地址估計的序列包括一個多值序列,作為m碼元塊地址L′(x)之多項式表示的系數(shù);由k+r個數(shù)據(jù)和奇偶碼元組成的回讀序列包括一個多值序列,作為具有k個碼元的數(shù)據(jù)D(x)之數(shù)據(jù)估計D′(x)以及具有r個碼元的奇偶性Q(x)之奇偶性估計Q′(x)的多項式表示的系數(shù),其中D′(x)可以與D(x)不同,并且Q′(x)可以與Q(x)不同;由乘數(shù)碼元組成的序列包括R(x)=xm+r-1+umodg(x)形式的多項式的系數(shù),其中x是多項式的變量,k是數(shù)據(jù)碼元的數(shù)目,r是奇偶碼元的數(shù)目,u是延遲,m是L′(x)中碼元的數(shù)目,而g(x)是碼的生成多項式;由乘積碼元組成的第二序列包括下述形式的多項式乘積的系數(shù)S’(x)=L’(x)×R(x)×xk-m-u+1=L’(x)×xm+r-1+umod g(x)×xk-m-u+1=S’1(x)+S’2(x)致使S′1(x)的最后r個系數(shù)為零,并且deg S′2(x)=r-1;將乘積碼元組成的第二序列與回讀序列相加的步驟包括以下步驟(ⅰ)將乘積碼元組成的第二序列的第一分量S′1(x)乘以x-r后,與數(shù)據(jù)估計D′(x)相加;(ⅱ)將乘積碼元組成的第二序列的第二分量S′2(x)與奇偶性估計Q′(x)相加。
在另一方面,本發(fā)明提供了一種方法,用于將存儲裝置塊地址合并到碼字中,以便當從所述存儲裝置回讀時,可以區(qū)分塊地址差錯和不可糾正的數(shù)據(jù)差錯,并且可以從回讀的數(shù)據(jù)中恢復(fù)塊地址。此方法包括以下步驟預(yù)謀塊地址信息,以便釋放循環(huán)碼字開始的位置;根據(jù)塊地址信息和用戶數(shù)據(jù)兩者,計算奇偶性;在寫操作期間,將用戶數(shù)據(jù)和計算得到的奇偶性寫到存儲裝置中,但不把塊地址寫入存儲裝置;在讀操作期間,從存儲裝置讀取用戶數(shù)據(jù)和計算得到的奇偶性,并且用預(yù)謀估計的塊地址信息,根據(jù)用戶數(shù)據(jù)和計算得到的奇偶性或者為此二者,計算校正子;根據(jù)校正子計算差錯矢量,并且如果在對應(yīng)于預(yù)謀塊地址的位置上有非零分量,那么校正所述塊地址,以便恢復(fù)正確的塊地址。
發(fā)明的另一方面提供了一種糾錯碼編碼器/解碼器設(shè)備,該設(shè)備包括奇偶性/校正子發(fā)生器,用于在編碼操作期間產(chǎn)生奇偶性,并在解碼期間產(chǎn)生校正子;多項式乘法器,用一組乘數(shù)碼元乘以m個地址碼元,以便產(chǎn)生由乘積碼元組成的序列,該序列等于第一序列和第二序列的和,其中第一序列的最后r個系數(shù)為零,并且第二個序列的次數(shù)小于奇偶碼元的數(shù)目;第一加法器,用于在對碼字的前k個碼元進行數(shù)據(jù)發(fā)送的階段,在產(chǎn)生數(shù)據(jù)序列加第一序列之和的第一奇偶序列之前,將第一序列與數(shù)據(jù)序列相加;第二加法器,用于在碼字結(jié)束時對許多碼元進行奇偶性發(fā)送的階段,直接將第二序列與第一奇偶序列相加,以便產(chǎn)生最終的奇偶序列。
本發(fā)明可以在循環(huán)碼包括系統(tǒng)性循環(huán)Reed Solomon碼的情況下實施。
在另一方面,本發(fā)明提供了一種用于產(chǎn)生碼的奇偶碼元序列的設(shè)備。該設(shè)備包括乘法器電路,它用一組乘數(shù)碼元乘以表示m碼元地址的序列,以產(chǎn)生由乘積碼元組成的第一序列,乘積碼元的第一序列等于第一序列和第二序列的和,其中第一序列的最后r個系數(shù)為零,并且第二序列的次數(shù)小于奇偶碼元的數(shù)目;第一加法器,用于在對碼字的前k個碼元進行數(shù)據(jù)發(fā)送的階段,在產(chǎn)生數(shù)據(jù)序列加第一序列之和的第一奇偶序列之前,將乘積碼元組成的第一序列與具有k個數(shù)據(jù)碼元的數(shù)據(jù)序列相加;第二加法器,用于在碼字結(jié)束時對許多碼元進行奇偶性發(fā)送的階段,直接將第二序列與第一奇偶序列相加,以便產(chǎn)生最終的奇偶序列。
在另一方面,用于生成碼的奇偶碼元序列的設(shè)備還包括表示m碼元地址的序列包括一個多值序列,作為m碼元塊地址L(x)之多項式表示的系數(shù);由k個數(shù)據(jù)碼元組成的序列包括一個多值序列,作為具有k個碼元的數(shù)據(jù)D(x)之多項式表示的系數(shù);由乘數(shù)碼元組成的序列包括R(x)=xm+r-1+umod g(x)形式的多項式的系數(shù),其中x是多項式的變量,k是數(shù)據(jù)碼元的數(shù)目,r是奇偶碼元的數(shù)目,u是延遲,m是L(x)中碼元的數(shù)目,而g(x)是碼的生成多項式;由乘積碼元組成的第一序列包括下述形式的多項式乘積的系數(shù)S(x)=L(x)×R(x)×xk-m-u+1=L(x)×xm+r-1+mmod g(x)×xk-m-u+1=S1(x)+S2(x)致使S1(x)的最后r個系數(shù)為零,并且deg S2(x)=r-1;在對碼字的前k個碼元進行數(shù)據(jù)發(fā)送的階段,在產(chǎn)生和D(x)+S1(x)×x-r的第一奇偶序列之前,第一加法器將第一多項式乘積分量S1(x)×x-r與數(shù)據(jù)多項式D(x)相加;在對碼字的最后r個碼元進行奇偶性發(fā)送的階段,第二加法器直接將第二多項式乘積S2(x)與第一奇偶序列相加,以便產(chǎn)生最終的奇偶序列Q(x)。
本發(fā)明的熟練技術(shù)人員從上下文可以看出,某些算術(shù)運算是模2運算,而其它算術(shù)運算是常規(guī)的非求模運算。
應(yīng)該理解,盡管在上述描述中敘述了本發(fā)明各種實施例的各種特點和長處,并且詳細描述了本發(fā)明各種實施例的結(jié)構(gòu)和功能,但此揭示內(nèi)容只是說明性的,并且可以作細節(jié)上的變化,尤其對于在本發(fā)明原理內(nèi)的結(jié)構(gòu)和部件安排,變化的最大程度由后附權(quán)利要求書表達的較寬的一般含義來表示。例如,特殊元件可以根據(jù)ECC編碼器/解碼器、數(shù)據(jù)存儲系統(tǒng)或計算機的特殊應(yīng)用而變化,同時保持基本相同的功能,不脫離本發(fā)明的范圍和精神。另外,盡管這里描述的較佳實施例針對具有ECC編碼器/解碼器和多項式乘法器的數(shù)據(jù)存儲系統(tǒng)的ECC編碼器/解碼器,但本領(lǐng)域的熟練技術(shù)人員可以理解,不脫離本發(fā)明的范圍和精神,本發(fā)明的教導(dǎo)適用于其它系統(tǒng),諸如普通的數(shù)據(jù)存儲裝置和系統(tǒng)、數(shù)據(jù)傳輸裝置和系統(tǒng),或通信系統(tǒng)。
本說明書中提到的所有出版物、專利和專利申請,其內(nèi)容按參考資料在此引入,等同于各出版物或?qū)@暾埛謩e專門指明按參考資料引入。
權(quán)利要求
1.一種用于生成碼的奇偶碼元序列的方法,其特征在于,所述方法包括以下步驟(a)接收表示m碼元地址的序列,以及由k個數(shù)據(jù)碼元組成的序列;(b)用一組乘法碼元乘以表示m碼元地址的所述序列,以產(chǎn)生由乘積碼元組成的第一序列,所述乘積碼元組成的第一序列等于第一序列與第二序列的和,其中第一序列的最后r個系數(shù)為零,并且第二序列的次數(shù)小于奇偶碼元的數(shù)目;(c)在對碼字前k個碼元進行數(shù)據(jù)發(fā)送的階段,在生成數(shù)據(jù)序列加第一序列之和的第一奇偶序列之前,將所述乘積碼元組成的第一序列與所述數(shù)據(jù)序列相加;(d)在碼字結(jié)束時對許多碼元進行奇偶性發(fā)送的階段,直接將所述第二序列與所述第一奇偶序列相加,以產(chǎn)生最終的奇偶序列。
2.如權(quán)利要求1所述的方法,其特征在于,所述方法產(chǎn)生循環(huán)碼的奇偶碼元序列Q(x),并且表示所述m碼元地址的所述序列包括一個多值序列,作為m碼元塊地址L(x)的多項式表示的系數(shù);由k個數(shù)據(jù)碼元組成的所述序列包括一個多值序列,作為具有k個碼元的數(shù)據(jù)D(x)的多項式表示的系數(shù);由乘數(shù)碼元組成的所述序列包括R(x)=xm+r-1+umod g(x)形式的多項式的系數(shù),其中x是多項式的變量,k是數(shù)據(jù)碼元的數(shù)目,r是奇偶碼元的數(shù)目,u是延遲,m是L(x)中碼元的數(shù)目,而g(x)是所述碼的生成多項式;所述乘積碼元組成的所述第一序列包括以下形式的多項式乘積的系數(shù)S(x)=L(x)×R(x)×xk-m-u+1=L(x)×xm+r-1+umod g(x)×xk-m-u+1=S1(x)+S2(x)致使S1(x)的最后r個系數(shù)為零,并且deg S2(x)=r-1;將最后沒有零碼元的所述第一序列與所述數(shù)據(jù)序列相加的所述步驟(c)包括以下步驟,即在對碼字前k個碼元進行數(shù)據(jù)發(fā)送的階段,在產(chǎn)生和D(x)+S1(x)×x-r的第一奇偶序列之前,將所述第一多項式乘積分量S1(x)×x-r與所述數(shù)據(jù)多項式D(x)相加;直接將所述第二序列與所述第一奇偶序列相加的所述步驟(d)包括以下步驟,即在對碼字的最后r個碼元進行奇偶性發(fā)送的階段,直接將所述第二多項式乘積S2(x)與所述第一奇偶序列相加,以產(chǎn)生最終的奇偶序列Q(x)。
3.如權(quán)利要求1所述的方法,其特征在于,還包括以下步驟從包括所述最終奇偶序列的回讀序列中產(chǎn)生校正子碼元序列。
4.如權(quán)利要求1所述的方法,其特征在于,還包括生成校正子碼元序列的步驟,該步驟包括以下步驟(e)接收表示m碼元地址估計的序列,該序列可以不等于表示m碼元地址的所述序列,還接收由k+r個數(shù)據(jù)和奇偶碼元組成的回讀序列,其中一些可能是差錯的;(f)用一組乘數(shù)碼元乘以表示m碼元地址估計的所述序列,以產(chǎn)生由乘積碼元組成的第二序列,如果m碼元地址估計序列等于所述m碼元地址序列,那么所述第二序列將與乘積碼元組成的所述第一序列相同;(g)將乘積碼元組成的所述第二序列與所述回讀序列相加,產(chǎn)生一個和序列;(h)生成所述和序列的校正子。
5.如權(quán)利要求4所述的方法,其特征在于,表示所述m碼元地址估計的所述序列包括一個多值序列,作為m碼元塊地址L′(x)之多項式表示的系數(shù);由k+r個數(shù)據(jù)和奇偶碼元組成的所述回讀序列包括一個多值序列,作為具有k個碼元的所述數(shù)據(jù)D(x)之數(shù)據(jù)估計D′(x)以及具有r個碼元的所述奇偶性Q(x)之奇偶性估計Q′(x)的多項式表示的系數(shù),其中D′(x)可以與D(x)不同,并且Q′(x)可以與Q(x)不同;由乘數(shù)碼元組成的所述序列包括R(x)=xm+r-1+umod g(x)形式的多項式的系數(shù),其中x是多項式的變量,k是數(shù)據(jù)碼元的數(shù)目,r是奇偶碼元的數(shù)目,u是延遲,m是L′(x)中碼元的數(shù)目,而g(x)是所述碼的生成多項式;由所述乘積碼元組成的所述第二序列包括下述形式的多項式乘積的系數(shù)S’(x)=L’(x)×R(x)×xk-m-u+1=L’(x)×xm+r-1+umodg(x)×xk-m+u+1,=S’1(x)+S’2(x)致使S′1(x)的最后r個系數(shù)為零,并且deg S′2(x)=r-1;將乘積碼元組成的所述第二序列與所述回讀序列相加的所述步驟包括以下步驟(ⅰ)將乘積碼元組成的所述第二序列的第一分量S′1(x)乘以x-r后,與所述數(shù)據(jù)估計D′(x)相加;(ⅱ)將乘積碼元組成的所述第二序列的第二分量S′2(x)與所述奇偶性估計Q′(x)相加。
6.一種方法,用于將存儲裝置塊地址合并到碼字中,以便當從所述存儲裝置回讀時可以區(qū)分塊地址差錯和不可糾正的數(shù)據(jù)差錯,并且可以從回讀的數(shù)據(jù)中恢復(fù)塊地址,其特征在于,所述方法包括以下步驟(a)預(yù)謀塊地址信息,以便釋放循環(huán)碼字開始的位置;(b)根據(jù)所述塊地址信息和用戶數(shù)據(jù),計算奇偶性;(c)在寫操作期間,將所述用戶數(shù)據(jù)和所述計算得到的奇偶性寫到所述存儲裝置中,但不把所述塊地址寫入所述存儲裝置;(d)在讀操作期間,從所述存儲裝置讀取所述用戶數(shù)據(jù)和所述計算得到的奇偶性,并且用預(yù)謀估計的塊地址信息,為或根據(jù)所述用戶數(shù)據(jù)和所述計算得到的奇偶性或者為此二者,計算校正子。(e)根據(jù)所述校正子計算差錯矢量,并且如果在對應(yīng)于預(yù)謀塊地址的位置上有非零分量,那么校正所述塊地址,以便恢復(fù)正確的塊地址。
7.一種糾錯碼編碼器/解碼器,其特征在于,包括奇偶性/校正子發(fā)生器,用于在編碼操作期間產(chǎn)生奇偶性,并在解碼期間產(chǎn)生校正子;多項式乘法器,用一組乘數(shù)碼元乘以m個地址碼元,以便產(chǎn)生由乘積碼元組成的序列,該序列等于第一序列和第二序列的和,其中第一序列的最后r個系數(shù)為零,并且第二個序列的次數(shù)小于奇偶碼元的數(shù)目;第一加法器,用于在對碼字的前k個碼元進行數(shù)據(jù)發(fā)送的階段,在產(chǎn)生數(shù)據(jù)序列加第一序列之和的第一奇偶序列之前,將所述第一序列與所述數(shù)據(jù)序列相加;第二加法器,用于在碼字結(jié)束時對許多碼元進行奇偶性發(fā)送的階段,直接將所述第二序列與所述第一奇偶序列相加,以便產(chǎn)生最終的奇偶序列。
8.如權(quán)利要求2所述的方法,其特征在于,所述循環(huán)碼包括系統(tǒng)性循環(huán)Reed Solomon碼。
9.一種用于產(chǎn)生碼的奇偶碼元序列的設(shè)備,其特征在于,包括乘法器電路,它用一組乘數(shù)碼元乘以表示m碼元地址的序列,以產(chǎn)生由乘積碼元組成的第一序列,所述乘積碼元的第一序列等于第一序列和第二序列的和,其中第一序列的最后r個系數(shù)為零,并且第二序列的次數(shù)小于奇偶碼元的數(shù)目;第一加法器,用于在對碼字的前k個碼元進行數(shù)據(jù)發(fā)送的階段,在產(chǎn)生數(shù)據(jù)序列加第一序列之和的第一奇偶序列之前,將乘積碼元組成的所述第一序列與具有k個數(shù)據(jù)碼元的數(shù)據(jù)序列相加;第二加法器,用于在碼字結(jié)束時對許多碼元進行奇偶性發(fā)送的階段,直接將所述第二序列與所述第一奇偶序列相加,以便產(chǎn)生最終的奇偶序列。
10.如權(quán)利要求9所述的設(shè)備,其特征在于,表示所述m碼元地址的所述序列包括一個多值序列,作為m碼元塊地址L(x)之多項式表示的系數(shù);由k個數(shù)據(jù)碼元組成的所述序列包括一個多值序列,作為具有k個碼元的數(shù)據(jù)D(x)之多項式表示的系數(shù);由乘數(shù)碼元組成的所述序列包括R(x)=xm+r-1+umod g(x)形式的多項式的系數(shù),其中x是多項式的變量,k是數(shù)據(jù)碼元的數(shù)目,r是奇偶碼元的數(shù)目,u是延遲,m是L(x)中碼元的數(shù)目,而g(x)是所述碼的生成多項式;由所述乘積碼元組成的所述第一序列包括下述形式的多項式乘積的系數(shù)S(x)=L(x)×R(x)×xk-m-u+1=L(x)×xm+r-1+umodg(x)×xk-m-u+1=S1(x)+S2(x)致使S1(x)的最后r個系數(shù)為零,并且deg S2(x)=r-1;所述第一加法器在對碼字的前k個碼元進行數(shù)據(jù)發(fā)送的階段,在生成和D(x)+S1(x)×x-r的第一奇偶序列之前,將所述第一多項式乘積分量S1(x)×x-r與所述數(shù)據(jù)多項式D(x)相加;第二加法器,用于在對碼字的最后r個碼元進行奇偶性發(fā)送的階段,直接將所述第二多項式乘積S2(x)與所述第一奇偶序列相加,以便產(chǎn)生最終的奇偶序列Q(x)。
全文摘要
本發(fā)明涉及一種提供改進型媒體碼字的設(shè)備和方法,該設(shè)備和方法能夠區(qū)分不可糾正數(shù)據(jù)差錯和不正確塊地址差錯,并且允許從回讀數(shù)據(jù)中恢復(fù)地址。根據(jù)本發(fā)明的一個實施例,提供了一種產(chǎn)生奇偶性的方法,該方法接收表示地址和數(shù)據(jù)的序列。用一組乘數(shù)碼元(216)乘以所述地址序列,以產(chǎn)生由乘積碼元組成的第一序列。在產(chǎn)生第一奇偶序列(211)之前,將第一部分與數(shù)據(jù)序列相加,然后直接將第二部分與第一奇偶序列相加,以產(chǎn)生最終的奇偶序列(215)。提供了一種從回讀數(shù)據(jù)中產(chǎn)生校正子的相應(yīng)方法。提供了包含本發(fā)明方法的系統(tǒng)和設(shè)備。
文檔編號G11B27/30GK1288542SQ99802053
公開日2001年3月21日 申請日期1999年1月8日 優(yōu)先權(quán)日1998年1月8日
發(fā)明者P·I·瓦西列夫 申請人:西加特技術(shù)有限責任公司