專利名稱::在存儲系統中更新卷積編碼數據的制作方法
技術領域:
:本發明涉及生成巻積編碼數據的裝置和方法。
背景技術:
:數據存儲系統被用來存儲由一個或多個主機計算機系統提供的信息。數據存儲系統有時保存由使用一種或多種編碼協議的一個或多個主機計算機系統所提供的信息。另外,數據存儲系統接收來自一個或多個主機計算機系統的修正數據。數據存儲系統有時使用一個或多個編碼協議保存這種修正信息。
發明內容提供了生成巻積編碼的數據的裝置和方法。該方法提供了巻積編碼器。此外方法還接收原始數據并生成巻積編碼的原始數據。該方法接收修正數據。該方法通過將原始數據與修正數據異或來生成X0R數據流,使用巻積編碼器形成巻積編碼的X0R數據流,并且將巻積編碼的XOR數據流與巻積編碼的原始數據異或以生成巻積編碼的修正數據。現在參考圖示將描述僅作為例子的本發明的實施例,其中圖1是說明數據存儲系統的一個實施例的框圖2示出了巻積編碼器電路的一個實施例;圖3是表現能夠將1位二進制數據編碼為2位編碼后數據的巻積編碼算法的表;圖4包含表現能夠將1位二進制數據編碼為2位編碼后數據的巻積編碼算法的狀態圖;圖5說明了用于將2位編碼后數據解碼為1位二進制數據的PRML格;圖6A示出了用于說明根據本發明的一個實施例的方法的原始數據;圖6B示出了用于說明根據本發明的一個實施例的方法的修正數據;圖6C示出了在已經使用圖2的巻積編碼器電路來巻積編碼原始數據之后的圖6A的原始數據;圖7A示出了通過異或圖6A的原始數據與圖6B的修正數據所形成的XOR數據流;圖7B示出了通過使用圖2的巻積編碼器電路來巻積編碼圖7A的XOR數據流所形成的巻積編碼的XOR數據流;圖7C示出了圖6C的巻積編碼的原始數據正與圖7B的巻積編碼的XOR數據流異或以生成巻積編碼的修正數據;圖8A示出了通過從圖7A的XOR數據流中刪除前導的零部分而形成的第一截短的XOR數據流;圖8B示出了通過使用圖2的巻積編碼器電路巻積編碼圖8A的第一截短的XOR數據流而形成的巻積編碼的第一截短的XOR數據流;7圖8C示出了與圖6C的巻積編碼的原始數據所索引的圖8B的巻積編碼的第一截短的X0R數據流;圖8D示出了圖6C中巻積編碼的原始數據與圖8C的所索引的巻積編碼的第一截短的XOR數據流異或以生成巻積編碼的修正數據;圖9A示出了通過從圖8A的第一截短的XOR數據流中刪除的尾部零部分的一部分而形成的第二截短XOR數據;圖9B示出了通過使用圖2的巻積編碼電路巻積編碼圖9A的第二截短的X0R數據流而形成的巻積編碼的第二截短X0R數據流;圖9C示出了與圖6C的巻積編碼的原始數據索引的圖8B的巻積編碼的第二截短的X0R數據流;圖9D示出了圖6C的巻積編碼的原始數據與圖9C的所索引的巻積編碼的第二截短的XOR數據流異或以生成被巻積編碼的修正數據;圖10是概述了該方法的第一個實施例的步驟的流程圖;圖11是概述了包括該方法的第二個實施例和該方法的第三個實施例的另外的步驟的流程圖。具體實施例方式參考附圖在以下描述的優先實施例中描述本發明,在附圖中相同的數字代表了相同或相似的元件。貫穿本說明對"一個實施例","實施例",或類似語言的引用意味著與實施例有關的具體特征、結構或特性被包括在本發明的至少一個實施例中。因此,貫穿本說明的短語"在一個實施例中"、"在實施例中"和類似語言的出現可以但不一定都指的是相同的實施例。在一個或多個實施例中描述的本發明的特征、結構或特性可以以任何合適的方式組合。在以下的描述中,大量具體細節被列舉以提供本發明的實施例的完全理解。然而本領域的技術人員將認識到可以在沒有一個或多個具體的細節,或通過其它的方法、組件、材料等來實現本發明。在其它實例中,不詳細地描述或示出眾所周知的結構、材料或操作以避免含糊本發明的概念。圖1圖示了數據存儲系統100。在所圖示的圖1的實施例中,系統100包括交換訪問網絡,其中一個或多個交換機125被用來創建交換構造120。在某些實施例中,使用運行在光纖通道("FC")物理層上的小型計算機系統接口(SCSI)協議實現數據存儲系統100。在其它實施例中,數據存儲系統IOO可以利用其它協議實現,如無限帶寬技術(Infiniband)、FICON(專門形式的光纖通道連接)、TCP/IP,以太網、千兆比特以太網或iSCSI。交換機125具有主機101、103、105、107、109和控制器131兩者的地址以使任何主機101、103、105、107和/或109能夠被可交換地連接至任何控制器131。主機計算機101、103、105、107和109每個包括如大型機、個人計算機、工作站及其組合的計算系統,包括如Windows、AIX、Unix、MVS、LINUX等(Windows是微軟公司的注冊商標;AIX和MVS是IBM公司的注冊商標;UNIX是在美國和其它國家由開放組織許可獨占的注冊商標;LINUX是LinuxTorvald的注冊商標)的操作系統。在某些實施例中,主機計算機101、103、105、107和109還包括存儲管理程序。在主機計算機101、103、105、107和109中8的存儲管理系統可以包括本領域所知的存儲管理類型程序的功能性,該存儲管理類型程序管理去往和來自數據存儲和檢索系統的數據的傳輸,如在IBMMVS操作系統中實現的IBMDFSMS。分別利用1/0接口111、113、115、117和119將主機計算機101、103、105、107和109耦合至構造120。1/0接口1U、113、115、117和119可以是任何1/0接口的類型;例如,FC仲裁環、至構造120的點對點FC連接或由主機計算機101、103、105、107和109使用的一個或多個信號線的其它形式,以直接向和從構造120傳輸信息。構造120包括例如用于連接二個或多個計算機網絡的一個或多個FC交換機125。在某些實施例中,FC交換機125是傳統的路由器交換機。在可替換的實施例中,主機計算機101、103、105、107和/或109以點對點配置連接至存儲控制器131而沒有交換機。交換機125跨越1/0接口135將主機計算機101、103、105、107和109與控制器131互連。1/0接口135可以是任何類型的1/0接口,例如,光纖通道、Infiniband、千兆以太網、以太網、TCP/IP、iSCSI、SCSII/O接口或由FC交換機125使用的一個或多個信號線,以分別向和從控制器131和隨后向多個數據存儲介質160、170、180和190傳輸信息。可替換地,數據存儲介質160、170、180和190能夠被物理地與彼此以及控制器131遠離,使得單個故障只能損害數據存儲介質160、170、180,和190之一。通過"數據存儲介質",申請人意指與硬件、軟件和/或固件結合的、從那樣的數據存儲介質讀取數據和向那樣的數據存儲介質寫入數據所需要的數據存儲介質。在某些實施例中,一個或多個數據存儲介質160、170、180和/或190包括諸如且不局限于磁盤、磁帶等的磁性數據存儲介質。在某些實施例中,一個或多個數據存儲介質160、170、180和/或190包括諸如且不局限于CD、DVD、HD-DVD、Blu-Ray等的光存儲介質。在某些實施例中,一個或多個數據存儲介質160、170、180和/或190包括諸如且不局限于PR0M、EPR0M、EEPR0M、閃速PR0M、緊致閃存、智能介質等的電子數據存儲介質。在某些實施例中,一個或多個數據存儲介質160、170、180和/或190包括全息數據存儲介質。存儲陣列130包括控制器131和存儲介質160、170、180和190。控制器131和存儲介質160、170、180和190可以被共同置于普通的機架或箱中。可替換的,因為故障恢復的原因,在有時被稱為geoplex之中,控制器131和存儲介質160、170、180和190可以被地理上地分開分布。存儲介質160、170、180和/或190也可以具有協同工作的分離的且不同的控制器以提供對geoplex中的所述存儲器的存取。控制器131可以有多種不同的形式并且可以包括嵌入式系統、分布式控制系統、個人計算機、工作站等。在圖1所說明的實施例中,存儲控制器131包括處理器140、元數據控制器148、隨機訪問存儲器(RAM)154、非易失性存儲器150、專用電路142、編碼數據接口158和主機信息接口132。主機信息接口132保持信息134,該信息134將在向存儲介質160、170、180、190的寫操作期間被編碼器146編碼;或已經在從存儲介質160、170、180、190的讀操作期間被解碼器144讀取和解碼。在某些實施例中,RAM154被用作數據緩存器。處理器140、RAM154、非易失性存儲器150、專用電路142、元數據控制器148、編碼數據接口158和主機信息接口132通過總線145彼此通信。可替換地,RAM154和/或非易失性存儲器150可以與專用電路142、編碼數據接口158、元數據控制器148和主機信息接口132—起駐留于處理器140中。處理器140可以9包括成品微處理器、定制處理器、FPGA、ASIC,或其它形式的離散邏輯。在某些實施例中,RAM154被用作由主機101、103、105、107,和/或109所寫入的,或為主機101、103、105、107,和/或109所讀取以保持所計算的數據、棧數據、可執行指令等的數據的緩存。在某些實施例中,RAM154被用于在巻積編碼的數據被存儲在數據存儲介質160、170、180和190上之前從編碼器146所接收的巻積編碼的數據156的臨時存儲。非易失性存儲器150可以包括任何類型的非易失性存儲器,諸如電可擦除可編程只讀存儲器(EEPROM)、閃速可編程只讀存儲器(PROM)、電池備份RAM、硬盤、或其它類似器件。非易失性存儲器150被典型地用以保持可執行固件和任何非易失性數據,如元數據152。在某些實施例中,編碼數據接口158包括允許通信處理器140與數據存儲介質160、170、180和190通信的一個或多個通信接口。主機信息接口132允許處理器140與構造120、交換機125和主機101、103、105、107和/或109通信。編碼數據接口158和主機信息接口132的例子包括諸如RS-232、USB(通用串行總線)、SCSI(小型計算機系統接口)、光纖通道、千兆以太網等的串行接口。此外,編碼數據接口158和/或主機信息接口132可以包括諸如射頻的無線接口、諸如且不限于藍牙、或諸如且不限于使用紅外線頻率的設備的光學通信設備。在某些實施例中,由軟件、固件、專用邏輯或其組合在處理器140中實現元數據控制器148。此外,元數據控制器148的所有或部分可以駐留于控制器131外部,如以主機101、103、105、107和/或109之一中的軟件實現。元數據控制器148管理與被接收用于在存儲器件上存儲為巻積編碼的數據的信息相關的元數據。在某些實施例中,元數據控制器148負責生成、改變、保持、存儲、提取和處理與被接收用于存儲為巻積編碼的數據的信息相關的元數據(例如,元數據152)。在某些實施例中,由軟件、固件、專用邏輯或其組合在處理器140中實現分發器136。此外,分發器136的所有或部分可以駐留于控制器131外部,諸如在主機101、103、105、107,和/或109之一中的軟件實現中。分發器136將巻積編碼的數據分發至RAM,和/或直接至存儲介質160、170、180,和/或190。當分發器136將巻積編碼的數據分發至多個數據存儲介質,諸如介質160、170、180,和/或190時,根據元數據152完成該分發,使得所分發的巻積編碼數據能夠稍后從存儲器件被讀取并且被解碼為原始數據或修正數據。專用電路142提供額外的硬件以使控制器131能夠進行特有的功能,諸如用于數據存儲介質160、170、180和190、控制器131和編碼器146的環境冷卻的風扇控制。編碼器146可以被實現為巻積編碼器,諸如且不限于巻積編碼器電路200(圖2)。專用電路142可以包括提供脈沖寬度調制(P麗)控制、模擬到數字轉換(ADC)、數字到模擬轉換(DAC)、異或("XOR")等的電子線路(electronics)。此外,專用電路142的全部或部分可以駐留于控制器131外部,諸如在主機101、103、105、107,和/或109之一中的軟件實現中。在某些實施例中,編碼器146包括將一個數據位編碼為一套兩個數據位的巻積編碼器。在某些實施例中,編碼器146包括在表300(圖3)和狀態圖400(圖4)中體現的巻積編碼算法。在某些實施例中,解碼器144包括PRML格(trellis)500(圖5)。解碼器144也可以包括棧圖。在某些實施例中,實現小型寫入更新,有時被稱為對現有文件的"原子(atomic)"更新。在某些實施例中,該現有文件包括先前被巻積編碼的數據。該方法將先前被巻積編碼的數據位的相對小的部分改變為在已巻積編碼的數據集內的其它的巻積編碼的數據位,而不用必須重新巻積編碼整個數據集。該方法在任何地方都不使用在RAID3、4或5中所使用的行奇偶性。該方法在任何地方都不使用RAID-6中所使用的對角線奇偶性。使用根據本發明的方法,增加的更新包括原始數據的所改變的部分以及(m個)尾部0的異或("X0R"),其中,(m)是在巻積編碼器電路200(圖2)的線性移位陣列中的存儲器步驟的數量。增加的更新被巻積編碼,然后與原始巻積編碼的數據異或以結束該更新。現在參考圖10,在步驟1010中,該方法供應包括(m個)寄存器、即(m)級延遲的巻積編碼器。在某些實施例中,步驟1010的巻積編碼器被置于諸如數據存儲系統IOO(圖1)的數據存儲系統中。在某些實施例中,步驟1010的巻積編碼器被置于諸如存儲陣列130(圖1)的存儲陣列中。在某些實施例中,步驟1010的巻積編碼器被置于諸如存儲控制器131的存儲控制器中。在某些實施例中,巻積編碼器被置于諸如編碼器146(圖1)的編碼器中,被置于諸如存儲控制器131的存儲控制器中。在某些實施例中,步驟1010的巻積編碼器包括編碼器電路200(圖2)。在某些實施例中,步驟1010的巻積編碼器實現了表300(圖3)和狀態圖400(圖4)所示的編碼算法。現在參考圖2,巻積編碼器電路200—次一比特地接收輸入的信息流U(J-3)205,用于編碼。編碼器電路200包括包含寄存器210、220和230的3階移位寄存器。寄存器210、220和230的初始內容優選地是0,用于編碼處理。輸入的信息流U(J-3)205和寄存器210、220和230的輸出選擇性地由加法器240相加以產生輸出V(J,1)245,由加法器250相加以產生輸出V(J,1)255。在某些實施例中,模_2加法器240和250被實現為在專用電路142中的X0R(異或)門。在其他實施例中,通過使用軟件、固件、專用邏輯等來實現加法器240和250。現在參考圖3和4,在某些實施例中,步驟1010的巻積編碼器使用表300和狀態圖400中體現的巻積編碼算法。該裝置和方法的描述不應該被認為限制該裝置和方法為僅使用表300和狀態圖400中體現的巻積編碼算法,巻積編碼器電路200。而是,在其他實施例中,該方法使用不同的巻積編碼算法。圖3和4的編碼算法包括八個狀態S。410、Si411、S2412、S3413、S4414、Ss415、S6416和S^17。在狀態之間的每個躍遷導致將從主機101、103、105、107和/或109接收的一位原始數據編碼為圖2、3、4所示的兩位編碼數據,其在某些實施例中然后被存儲在存儲介質160、170、180和190中。表300(圖3)包括四個列初始狀態310、目的地狀態320、原始數據330、和巻積編碼的數據340。基于總共八個狀態S。、SpS2、S3、S4、S5、S6和S7和從每個初始狀態可能的兩個躍遷,在表300中存在總共16行。表300經由狀態圖400生成,且在此用于圖示將原始數據編碼以產生編碼數據。再次參考圖IO,在步驟1020中,該方法提供諸如原始數據600(圖6A)的原始數據。在某些實施例中,由一個或多個主機計算機、諸如但不限于主機計算機101(圖1)、103(圖1)、105(圖1)、107(圖1)禾P/或109(圖1)來提供步驟1020的原始數據。步驟1020還包括接收原始數據。在某些實施例中,由諸如存儲陣列130(圖1)的存儲陣列來接收步驟1020的原始數據。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來接收步驟1020的原始數據。在步驟1030中,該方法使用步驟1010的巻積編碼器來生成巻積編碼的原始數據。作為例子,且現在參考圖2、6A和6C,在步驟1030中,該方法使用巻積編碼器電路200和原始數據600來生成巻積編碼的原始數據620。在某些實施例中,由提供步驟1020的原始數據的主機計算機來進行步驟1030。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來進行步驟1030。在某些實施例中,由置于存儲控制器中的諸如處理器140(圖1)的處理器來進行步驟1030。在某些實施例中,由編碼器146(圖1)來進行步驟1030。再次參考圖IO,在步驟1040中,該方法保存步驟1030的巻積編碼的原始數據。在某些實施例中,步驟1030的巻積編碼的原始數據被保存在一個或多個數據存儲介質160(圖1)、170(圖1)、180(圖1)和/或190(圖l)中。在某些實施例中,由提供步驟1020的原始數據的主機計算機來進行步驟1040。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來進行步驟1040。在某些實施例中,由置于存儲控制器中的諸如處理器140(圖1)的處理器來進行步驟1040。在步驟1050中,該方法提供諸如修正數據610(圖6B)的修正數據。修改數據610具有與原始數據中的各個位600(圖6A)不同的改變的位615。在某些實施例中,由一個或多個主機計算機、諸如但不限于主機計算機101(圖1)、103(圖1)、105(圖1)、107(圖1)和/或109(圖1)來提供步驟1050的修正數據。步驟1050還包括接收修正數據。在某些實施例中,由諸如存儲陣列130(圖1)的存儲陣列來接收步驟1050的修正數據。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來接收步驟1050的修正數據。在步驟1060中,該方法通過將步驟1020的原始數據與步驟1050的修正數據異或來生成XOR數據流。本領域技術人員將理解,通過"異或",原始數據一位一位地與修正數據異或。異或僅發生在原始數據和修正數據中相應位的位置之間位0僅與位0異或,位1僅與位1異或,等等。表l顯示了四個可能的異或結果。表1<table>tableseeoriginaldocumentpage12</column></row><table>現在參考圖6A、6B和7A,在步驟1060通過將原始數據600和修正數據610異或來生成XOR數據流700。XOR數據流700包括包含通過將原始數據600和修正數據610中對應且相同的位異或而生成的多個前導的"O"的部分702。XOR數據流700還包括包含通過將原始數據600中相應位和修正數據610中改變的位615異或而生成的多個"l"的部分704。XOR數據流700還包括通過將原始數據600和修正數據610中相應且相同的位異或而生成的多個尾部"O"的部分730。再次參考圖IO,在步驟1070中,該方法確定是否生成和使用一個或多個截短的X0R數據流。在某些實施例中,由提供步驟1020的原始數據的主機計算機來進行步驟1070。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來進行步驟1070。在某些實施例中,由置于存儲控制器中的諸如處理器140(圖1)的處理器進行步驟1070。如果該方法選擇不生成和使用一個或多個截短的XOR數據流,則該方法從步驟1070遷移到步驟1080,其中,該方法巻積編碼諸如XOR數據流700的步驟1060的XOR數據流。在某些實施例中,由提供步驟1020的原始數據的主機計算機來進行步驟1080。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來進行步驟1080。在某些實施例中,由置于存儲控制器中的諸如處理器140(圖1)的處理器進行步驟1080。作為例子并現在參考圖2、7A和7B,使用XOR數據流700和巻積編碼器電路200來生成巻積編碼的XOR數據流710。巻積編碼的XOR數據流710包括由巻積編碼部分702使用編碼器電路200生成的部分712。當巻積編碼多個前導的"O"時,編碼器電路200將每個"O"編碼為表示反復S。到S。躍遷的"OO"。巻積編碼的XOR數據流710還包括由巻積編碼部分704生成的部分714以及(m個)尾部的0,其中,對于巻積編碼器電路200,(m)具有值3。編碼器電路200包括三個寄存器,即寄存器210、220和230。因此,巻積編碼器電路200在該編碼器返回到狀態S。之前編碼前三個尾部O。然后,每個尾部的"0"被編碼為表示反復S。到S。躍遷的"00"。巻積編碼的XOR數據流710還包括通過使用巻積編碼器電路200來巻積編碼部分706的剩余尾部的0而生成的部分716。再次參考圖10,在步驟1090中,該方法將步驟1080的巻積編碼的XOR數據流和步驟1030的巻積編碼的原始數據異或。在某些實施例中,由提供步驟1020的原始數據的主機計算機來進行步驟1090。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來進行步驟1090。在某些實施例中,由置于存儲控制器中的諸如處理器140(圖1)的處理器進行步驟1090。作為例子且現在參考圖7C,在步驟1090中,該方法將巻積編碼的原始數據620和巻積編碼的XOR數據流710異或,以生成巻積編碼的修正數據720。在該實施例中,步驟1090中的方法將巻積編碼的原始數據620的部分622和巻積編碼的XOR數據流710的前導0部分712異或以形成修正數據720的巻積編碼的部分722。在該實施例中,該方法還將巻積編碼的原始數據620的部分624和巻積編碼的XOR數據流710的改變的位/(m個)尾部0部分714異或,以形成修正數據720的更新的部分724。在該實施例中,該方法還將巻積編碼的原始數據620的部分626和巻積編碼的XOR數據流710的剩余尾部0部分716異或,以形成修正數據720的巻積編碼的部分726。在其他實施例中,該方法使用第一截短的XOR數據流,其中,該方法從XOR數據流710中刪除前導的0,且然后巻積編碼該第一截短的XOR數據流,且將巻積編碼的第一截短的XOR數據流和原始數據異或,以生成修正數據。在另一實施例中,該方法使用第二截短的XOR數據流,其中,該方法進一步從第一截短的XOR數據流中刪除幾乎(m個)尾部O以形成第二截短的XOR數據流,且然后巻積編碼該第二截短的XOR數據流,且將巻積編碼的第二截短的XOR數據流和原始數據異或,以生成修正數據。再次參考圖IO,如果該方法在步驟1070選擇生成和使用一個或多個截短的X0R數據流,則該方法從步驟1070遷移到步驟lllO(圖11)。在步驟1110中,該方法生成第一截短的X0R數據流。在某些實施例中,由提供步驟1020(圖10)的原始數據的主機計算機來進行步驟1110。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來進行步驟1110。在某些實施例中,由置于存儲控制器中的諸如處理器140(圖1)的處理器進行步驟1110。作為例子且現在參考圖7A和8A,X0R數據流700的部分702包括(N個)前導0。在步驟1110中,該方法通過從第一截短的XOR數據流700中刪除包括部分702的(N個)前導0來生成第一截短的XOR數據流800。第一截短的XOR數據流800包括改變位部分804以及尾部0部分806。再次參考圖ll,在步驟1120中,該方法確定是否生成和使用第二截短的XOR數據流。在某些實施例中,由提供步驟1020(圖10)的原始數據的主機計算機來進行步驟1120。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來進行步驟1120。在某些實施例中,由置于存儲控制器中的諸如處理器140(圖1)的處理器進行步驟1120。如果該方法在步驟1120選擇不生成和使用第二截短的XOR數據流,則該方法從步驟1120遷移到步驟1130,其中,該方法巻積編碼步驟1110的第一截短的XOR數據流,諸如第一截短的X0R數據流810(圖8A)。在某些實施例中,由提供步驟1020(圖10)的原始數據的主機計算機來進行步驟1130。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來進行步驟1130。在某些實施例中,由置于存儲控制器中的諸如處理器140(圖1)的處理器進行步驟1130。作為例子且現在參考圖2、8A和8B,使用第一截短的XOR數據流800和巻積編碼器電路200來形成巻積編碼的第一截短的XOR數據流810。巻積編碼的第一截短的XOR數據流810還包括由巻積編碼部分804生成的部分814以及(m個)尾部的O,其中,對于巻積編碼器電路200,(m)具有值3。編碼器電路200包括三個寄存器,即寄存器210、220和230。因此,巻積編碼器電路200在該編碼器返回到狀態S。之前編碼前三個尾部0。然后,每個尾部的"O"被編碼為表示反復S。到S。躍遷的"OO"。巻積編碼的第一截短的XOR數據流810還包括通過使用巻積編碼器電路200來巻積編碼部分806的剩余尾部的0而生成的部分816。再次參考圖ll,在步驟1140中,該方法索引步驟1130的巻積編碼的第一截短的XOR數據流為步驟1030(圖10)的巻積編碼的原始數據。在步驟1110中,該方法從步驟1060(圖10)的XOR數據流中刪除(N個)尾部O以生成第一截短的XOR數據流。在步驟1180中,該方法配準步驟1170的巻積編碼的第二截短的XOR數據流的第一位和巻積編碼的原始數據的第[(2)(N)+1]位。在某些實施例中,由提供步驟1020(圖10)的原始數據的主機計算機來進行步驟1140。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來進行步驟1140。在某些實施例中,由置于存儲控制器中的諸如處理器140(圖1)的處理器進行步驟1140。作為例子且現在參考圖7A、8A和8C,X0R數據流700包括(N個)前導O,其中,(N)為13。這13個前導0被刪除以形成第一截短的X0R數據流800。在步驟1140中,該方法配準巻積編碼的第一截短的XOR數據流810的第一位和巻積編碼的原始數據620的第27位[(2)(13)+1]。再次參考圖ll,在步驟1150中,該方法將步驟1130的索引的巻積編碼的XOR數14據流和步驟1030的巻積編碼的原始數據異或,以形成巻積編碼的修正數據。在某些實施例中,由提供步驟1020(圖10)的原始數據的主機計算機來進行步驟1150。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來進行步驟1150。在某些實施例中,由置于存儲控制器中的諸如處理器140(圖1)的處理器進行步驟1150。作為例子且參考圖8D,巻積編碼的第一截短的XOR數據流810不包括對應于巻積編碼的原始數據620的部分622的部分。因此,在步驟1150中,該方法復制部分622作為巻積編碼的修正數據720的第一部分722。還在步驟1150中,該方法將巻積編碼的原始數據620的部分624和巻積編碼的第一截短的XOR數據流810的部分814異或,以產生巻積編碼的修正數據720的巻積編碼的部分724,并將巻積編碼的原始數據620的部分626和巻積編碼的第一截短的X0R數據流810的部分816異或,以產生巻積編碼的修正數據720的第三部分726,以完成巻積編碼的修正數據720的生成。再次參考圖ll,如果該方法在步驟1120選擇生成和使用第二截短的X0R數據流,則該方法從步驟1120遷移到步驟1160,其中,該方法生成第二截短的X0R數據流。在某些實施例中,由提供步驟1020的原始數據的主機計算機來進行步驟1160。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來進行步驟1160。在某些實施例中,由置于存儲控制器中的諸如處理器140(圖1)的處理器進行步驟1160。作為例子且現在參考圖8A和9A,第一截短的XOR數據流800包括改變位部分804和包含(P個)尾部0的部分806。在步驟1160中,該方法通過刪除尾部0的[(P)-(m)]來生成第二截短的XOR數據流900,其中(m)等于在步驟1010(圖10)的巻積編碼器中使用的寄存器的數量。在圖9A的所示的實施例中,第二截短的XOR數據流900包括改變的位部分902以及3個尾部0部分904。再次參考圖ll,在步驟1170中,該方法巻積編碼步驟1160的第二截短的XOR數據流,諸如第二截短的X0R數據流900(圖9A)。在某些實施例中,由提供步驟1020(圖10)的原始數據的主機計算機來進行步驟1170。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來進行步驟1170。在某些實施例中,由置于存儲控制器中的諸如處理器140(圖1)的處理器進行步驟1170。作為例子,且現在參考圖2、9A和9B,使用第二截短的XOR數據流900和巻積編碼器電路200來形成巻積編碼的第二截短的XOR數據流910。由巻積編碼部分902和904來生成巻積編碼的第二截短的XOR數據流910。再次參考圖ll,在步驟1180中,該方法索引步驟1170的巻積編碼的第二截短的XOR數據流為步驟1030(圖10)的巻積編碼的原始數據。在步驟1110中,該方法從步驟1060(圖10)的XOR數據流中刪除(N個)尾部O以生成第一截短的XOR數據流。在步驟110中,該方法配準步驟1130的巻積編碼的第一截短的XOR數據流的第一位和巻積編碼的原始數據的第[(2)(N)+1]位。在某些實施例中,由提供步驟1020(圖10)的原始數據的主機計算機來進行步驟1180。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來進行步驟1180。在某些實施例中,由置于存儲控制器中的諸如處理器140(圖1)的處理器進行步驟1180。作為例子且現在參考圖7A、8A和9C,X0R數據流700包括(N個)前導O,其中,(N)為13。這13個前導0被刪除以形成第一截短的X0R數據流800。在步驟1180中,該方法配準巻積編碼的第二截短的X0R數據流910的第一位和巻積編碼的原始數據620的第27位[(2)(13)+1]。再次參考圖ll,在步驟1190中,該方法將步驟1180的索引的巻積編碼的第二截短的XOR數據流和步驟1030的巻積編碼的原始數據異或,以形成巻積編碼的修正數據。在某些實施例中,由提供步驟1020的原始數據的主機計算機來進行步驟1190。在某些實施例中,由諸如存儲控制器131(圖1)的存儲控制器來進行步驟1190。在某些實施例中,由置于存儲控制器中的諸如處理器140(圖1)的處理器進行步驟1190。作為例子且參考圖9D,巻積編碼的第二截短的X0R數據流910不包括對應于巻積編碼的原始數據620的部分622的部分,也不包括對應于巻積編碼的原始數據620的部分626的部分。在步驟1190中,該方法復制部分622作為巻積編碼的修正數據720的部分722。還在步驟1190中,該方法復制部分626作為巻積編碼的修正數據720的部分726。還在步驟1190中,該方法將巻積編碼的原始數據的部分624和巻積編碼的第二截短的X0R數據流910的部分異或,以產生更新的部分724,這完成了巻積編碼的修正數據720的生成。在某些實施例中,在圖10和11中陳述的各個步驟可以被組合、消除、重新排序。例如,該方法的第一實施例包括8個步驟,包括圖10的步驟1010、1020、1030、1040、1050、1060、1080和1090。該方法的第二實施例包括IO個步驟,包括圖10的步驟1010、1020、1030、1040、1050、1060以及圖11的步驟1110、1130、1140和1150。該方法的第三實施例包括11個步驟,包括圖10的步驟1010、1020、1030、1040、1050、1060以及圖11的步驟1110、1160、1170、1180和1190。該8步第一實施例在修正數據中的修正位和原始位之間的比例高、即幾乎所有原始數據都被修正的情況下最有用。另一方面,在修正位和原始位之間的比例非常低的情況下,即"原子"更新,則優選地使用11步第三實施例。雖然,第三實施例包括11個步驟,但該第三實施例需要少得多的計算功率和時間來用于"原子"更新,這是因為第三實施例使用步驟1170,其中巻積編碼了實質上截短的X0R數據流、即第二截短的X0R數據流。另外,ll步第三實施例需要少得多的計算功率和時間,因為第三實施例使用步驟1190,其中,僅巻積編碼的第二XOR數據流與巻積編碼的原始數據異或。該裝置和方法的上述實施例中的任一個都可以被數據存儲服務提供者使用,來向一個或多個數據存儲服務消費者提供數據存儲服務。在某些實施例中,一個或多個數據存儲服務消費者擁有和/或操作一個或多個主機計算機101(圖1)、103(圖1)、105(圖1)、107(圖1)和/或109(圖1)。這些一個或多個數據存儲服務消費者從一個或多個主機計算機向諸如存儲陣列130(圖1)的存儲陣列提供消費者數據,其中,該數據存儲服務提供者擁有和/或操作該存儲陣列。在某些實施例中,本發明包括指令駐留存儲器150(圖1),其中那些指令可由諸如處理器140(圖1)的處理器執行以進行圖10中呈現的步驟1020、1030、1040、1050、1060、1070、1080和/或1090中的一個或多個、和/或圖11中呈現的步驟1110、1120、1130、1140、1150、1160、1170、1180和/或1190中的一個或多個。在其他實施例中,本發明包括在任何其他計算機程序產品中駐留的指令,其中,那些指令可由在系統100外部或內部的計算機執行以進行圖10中呈現的步驟1020、1030、1040、1050、1060、1070、1080和/或1090中的一個或多個、和/或圖11中呈現的步驟1110、1120、1130、1140、1150、1160、1170、1180和/或1190中的一個或多個。在任何一種情況下,該指令可以被編碼在信息存儲介質中,該信息存儲介質例如包括磁性信息存儲介質、光學信息存儲介質、電子信息存儲介質等。通過"電子存儲介質",申請人意思是例如諸如PROM、EPR0M、EEPR0M、閃速PR0M、緊致閃存、智能媒介等的器件。雖然已經詳細描述了本發明的優選實施例,但是應該理解,本領域技術人員在不脫離權利要求闡述的本發明的范圍的情況下可以對這些實施例進行修改和適應。權利要求一種生成卷積編碼的數據的方法,包括以下步驟供應包括(m)階的卷積編碼器,其中(m)大于或等于1;提供原始數據;使用所述卷積編碼器生成卷積編碼的原始數據;提供修正數據,其中,所述修正數據包括與修正位序列結合的原始位序列;通過將所述原始數據和所述修正數據異或來生成XOR數據流,其中,所述XOR數據流包括與多個前導0和多個尾部0結合的多個改變的位;確定是否使用截短的XOR數據流;操作性地如果將不使用截短的XOR數據流;使用所述卷積編碼器來形成卷積編碼的XOR數據流;以及將所述卷積編碼的XOR數據流和所述卷積編碼的原始數據異或。2.根據權利要求l的方法,其中,所述供應巻積編碼器的步驟包括供應包括3階的巻積編碼器。3.根據權利要求2的方法,還包括以下步驟供應與主機計算機通信的數據存儲系統,其中,所述數據存儲系統包括所述巻積編碼器和數據存儲介質;其中,所述提供步驟還包括通過所述主機計算機向所述數據存儲系統提供所述原始數據。4.根據前述任一權利要求所述的方法,還包括在所述數據存儲介質中保存所述巻積編碼的原始數據的步驟。5.根據前述任一權利要求所述的方法,其中,所述原始數據包括(N)位,且其中,所述巻積編碼的原始數據包括(2)(N)位。6.根據前述任一權利要求所述的方法,還包括以下步驟操作性地如果將使用截短的XOR數據流,確定是否使用第二截短的XOR數據流;操作性地如果將不使用第二截短的XOR數據流,通過從所述XOR數據流中刪除所述多個前導0來形成第一截短的XOR數據流;使用所述巻積編碼器來形成巻積編碼的第一截短的XOR數據流;將所述巻積編碼的第一截短的XOR數據流索引到所述巻積編碼的原始數據;將所述巻積編碼的第一截短的XOR數據流和所述被索引的巻積編碼的原始數據異或。7.根據權利要求6的方法,還包括以下步驟操作性地如果將使用第二截短的XOR數據流,通過從所述第一截短的XOR數據流中刪除所述多個尾部0中的幾乎(m個)來形成第二截短的XOR數據流;使用所述巻積編碼器來形成巻積編碼的第二截短的XOR數據流;將所述巻積編碼的第二截短的XOR數據流索引到所述巻積編碼的原始數據;將所述巻積編碼的第二截短的XOR數據流和所述被索引的巻積編碼的原始數據異或。8.—種用于生成巻積編碼的數據的制品,包括包含(m)階的巻積編碼器,和具有其中布置的計算機可讀程序代碼的計算機可讀介質,其中(m)大于或等于l,所述計算機可讀程序代碼包括用于以下的一系列計算機可讀程序步驟接收原始數據;生成巻積編碼的原始數據;接收修正數據,其中,所述修正數據包括與修正位序列結合的原始位序;通過將所述原始數據和所述修正數據異或來生成X0R數據流,其中,所述X0R數據流包括與多個前導0和多個尾部0結合的多個改變的位;確定是否使用截短的X0R數據流;操作性地如果將不使用截短的X0R數據流;使用所述巻積編碼器來形成巻積編碼的X0R數據流;以及將所述巻積編碼的XOR數據流和所述巻積編碼的原始數據異或。9.根據權利要求8的制品,其中,所述巻積編碼器包括3階。10.根據權利要求8的制品,其中,所述制品被置于包括數據存儲介質的數據存儲系統中,所述計算機可讀程序代碼進一步包括用于在所述數據存儲介質中存儲所述巻積編碼的原始數據的一系列計算機可讀程序步驟。11.根據權利要求8的制品,其中,所述原始數據包括(N)位,且其中所述巻積編碼的原始數據包括(2)(N)位,其中,(N)大于或等于1。12.根據權利要求8的制品,所述計算機可讀程序代碼還包括用于以下的一系列計算機可讀程序步驟操作性地如果將使用截短的XOR數據流,確定是否使用第二截短的X0R數據流;操作性地如果將不使用第二截短的XOR數據流,通過從所述XOR數據流中刪除所述多個前導0來形成第一截短的XOR數據流;使用所述巻積編碼器來形成巻積編碼的第一截短的XOR數據流;將所述巻積編碼的第一截短的XOR數據流索引到所述巻積編碼的原始數據;將所述巻積編碼的第一截短的XOR數據流和所述被索引的巻積編碼的原始數據異或。13.根據權利要求12的制品,所述計算機可讀程序代碼還包括用于以下的一系列計算機可讀程序步驟操作性地如果將使用第二截短的XOR數據流,通過從所述第一截短的XOR數據流中刪除所述多個尾部O中的幾乎(m個)來形成第二截短的XOR數據流;使用所述巻積編碼器來形成巻積編碼的第二截短的XOR數據流;將所述巻積編碼的第二截短的XOR數據流索引到所述巻積編碼的原始數據;將所述巻積編碼的第二截短的XOR數據流和所述被索引的巻積編碼的原始數據異或。14.一種在置于數據存儲系統中的計算機可讀介質中編碼的計算機程序產品,所述數據存儲系統包括處理器、巻積編碼器和數據存儲介質,所述計算機程序產品可由所述處理器使用來生成巻積編碼的數據,包括使得所述可編程計算機處理器接收原始數據的計算機可讀程序代碼;使得所述可編程計算機處理器生成巻積編碼的原始數據的計算機可讀程序代碼;使得所述可編程計算機處理器接收修正數據的計算機可讀程序代碼,其中,所述修正數據包括與修正位序列結合的原始位序;使得所述可編程計算機處理器通過將所述原始數據和所述修正數據異或來生成XOR數據流的計算機可讀程序代碼,其中,所述XOR數據流包括與多個前導0和多個尾部0結合的多個改變的位;使得所述可編程計算機處理器確定是否使用截短的XOR數據流的計算機可讀程序代碼;如果將不使用截短的XOR數據流,使得所述可編程計算機處理器進行以下步驟的計算機可讀程序代碼使用所述巻積編碼器來形成巻積編碼的XOR數據流;以及將所述巻積編碼的XOR數據流和所述巻積編碼的原始數據異或。15.根據權利要求14的計算機程序代碼,其中,所述巻積編碼器包括3階。16.根據權利要求14或15的計算機程序代碼,還包括使得所述可編程計算機處理器在所述數據存儲介質中存儲所述巻積編碼的原始數據的計算機可讀程序代碼。17.根據權利要求14到16中任一的計算機程序代碼,其中,所述原始數據包括(N)位,且其中所述巻積編碼的原始數據包括(2)(N)位,其中,(N)大于或等于1。18.根據權利要求14到17中的任一的計算機程序代碼,還包括如果將使用截短的XOR數據流,使得所述可編程計算機處理器確定是否使用第二截短的XOR數據流的計算機可讀程序代碼;如果將不使用第二截短的XOR數據流,使得所述可編程計算機處理器通過從所述XOR數據流中刪除所述多個前導0來形成第一截短的XOR數據流的計算機可讀程序代碼;使得所述可編程計算機處理器使用所述巻積編碼器來形成巻積編碼的第一截短的XOR數據流的計算機可讀程序代碼;使得所述可編程計算機處理器將所述巻積編碼的第一截短的XOR數據流索引到所述巻積編碼的原始數據的計算機可讀程序代碼;使得所述可編程計算機處理器將所述巻積編碼的第一截短的XOR數據流和所述被索引的巻積編碼的原始數據異或的計算機可讀程序代碼。19.根據權利要求18的計算機程序代碼,還包括如果將使用第二截短的XOR數據流,使得所述可編程計算機處理器通過從所述第一截短的XOR數據流中刪除所述多個尾部0中的幾乎(m個)來形成第二截短的XOR數據流的計算機可讀程序代碼;使得所述可編程計算機處理器使用所述巻積編碼器來形成巻積編碼的第二截短的XOR數據流的計算機可讀程序代碼;使得所述可編程計算機處理器將所述巻積編碼的第二截短的XOR數據流索引到所述巻積編碼的原始數據的計算機可讀程序代碼;使得所述可編程計算機處理器將所述巻積編碼的第二截短的XOR數據流和所述被索引的巻積編碼的原始數據異或的計算機可讀程序代碼。20.—種由數據存儲服務提供者向數據存儲服務消費者提供數據存儲服務的方法,包括以下步驟供應包括(m)階的巻積編碼器,其中(m)大于或等于1;由所述數據存儲服務提供者從所述數據存儲服務中接收原始消費者數據;使用所述巻積編碼器來形成巻積編碼的原始消費者。21.根據權利要求20的方法,其中,所述供應巻積編碼器的步驟還包括由所述數據存儲服務消費者供應包括3階的巻積編碼器;所述數據存儲服務消費者進行所述生成步驟。22.根據權利要求20的方法,還包括以下步驟由所述數據存儲服務消費者提供修正消費者數據,其中,所述修正消費者數據包括與修正位序列結合的原始位序;由所述數據存儲服務提供者通過將所述原始消費者數據和所述修正消費者數據異或來生成XOR數據流,其中,所述XOR數據流包括與多個前導0和多個尾部0結合的多個改變的位;由所述數據存儲服務提供者確定是否使用截短的XOR數據流;操作性地如果將不使用截短的XOR數據流;由所述數據存儲服務提供者使用所述巻積編碼器來形成巻積編碼的XOR數據流;以及由所述數據存儲服務提供者將所述巻積編碼的XOR數據流和所述巻積編碼的原始數據異或。23.根據權利要求22的方法,還包括以下步驟操作性地如果將使用截短的XOR數據流,由所述數據存儲服務提供者確定是否使用第二截短的XOR數據流;操作性地如果將不使用第二截短的XOR數據流,由所述數據存儲服務提供者通過從所述XOR數據流中刪除所述多個前導的0來形成第一截短的XOR數據流;由所述數據存儲服務提供者使用所述巻積編碼器來形成巻積編碼的第一截短的XOR數據流;由所述數據存儲服務提供者將所述巻積編碼的第一截短的XOR數據流索引到所述巻積編碼的原始數據;由所述數據存儲服務提供者將所述巻積編碼的第一截短的XOR數據流和所述被索引的巻積編碼的原始數據異或。24.根據權利要求23的方法,還包括以下步驟操作性地如果將使用第二截短的XOR數據流,由所述數據存儲服務提供者通過從所述第一截短的XOR數據流中刪除所述多個尾部的0中的幾乎(m個)來形成第二截短的XOR數據流;由所述數據存儲服務提供者使用所述巻積編碼器來形成巻積編碼的第二截短的XOR數據流;由所述數據存儲服務提供者將所述巻積編碼的第二截短的XOR數據流索引到所述巻積編碼的原始數據;由所述數據存儲服務提供者將所述巻積編碼的第二截短的XOR數據流和所述被索引的巻積編碼的原始數據異或。25.—種存儲控制器,包括包括(m)階的巻積編碼器,其中(m)大于或等于1;其中所述巻積編碼器輸入包括(N)位的數據,并生成包括(2)(N)位的巻積編碼的數據,其中(N)大于或等于l。26.根據權利要求25的存儲控制器,還包括解碼器;其中,所述解碼器輸入所述巻積編碼的數據,并生成包括(N)位的所述數據。27.根據權利要求26的存儲控制器,其中,所述解碼器包括PRML格。28.—種包括存儲控制器的數據存儲系統,其中所述存儲控制器包括包括(m)階的巻積編碼器,其中(m)大于或等于1;其中所述巻積編碼器輸入包括(N)位的數據,并生成包括(2)(N)位的巻積編碼的數據,其中(N)大于或等于l。29.根據權利要求28的數據存儲系統,其中所述數據控制器還包括解碼器;其中,所述解碼器輸入所述巻積編碼的數據,并生成包括(N)位的所述數據。30.根據權利要求29的數據存儲系統,其中,所述解碼器包括PRML格。31.—種計算機程序,包括適用于當在計算機上運行所述程序時進行權利要求1-7的所有步驟的程序代碼裝置。全文摘要公開用于生成卷積編碼的數據的裝置和方法。該方法供應卷積編碼器。該方法接收原始數據并生成卷積編碼的原始數據。該方法接收修正數據。該方法通過將所述原始數據和所述修正數據異或來生成XOR數據流,使用所述卷積編碼器來形成卷積編碼的XOR數據流,且將所述卷積編碼的XOR數據流和所述卷積編碼的原始數據異或來生成卷積編碼的修正數據。文檔編號H03M13/23GK101796731SQ200880102510公開日2010年8月4日申請日期2008年7月28日優先權日2007年8月9日發明者丹尼爾·J·維納斯基,克雷格·A·克萊因,尼爾斯·豪斯坦,艾倫·K·貝茨申請人:國際商業機器公司