专利名称::在存储系统中更新卷积编码数据的制作方法
技术领域:
:本发明涉及生成巻积编码数据的装置和方法。
背景技术:
:数据存储系统被用来存储由一个或多个主机计算机系统提供的信息。数据存储系统有时保存由使用一种或多种编码协议的一个或多个主机计算机系统所提供的信息。另外,数据存储系统接收来自一个或多个主机计算机系统的修正数据。数据存储系统有时使用一个或多个编码协议保存这种修正信息。
发明内容提供了生成巻积编码的数据的装置和方法。该方法提供了巻积编码器。此外方法还接收原始数据并生成巻积编码的原始数据。该方法接收修正数据。该方法通过将原始数据与修正数据异或来生成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·贝茨申请人:国际商业机器公司