CN101040445B - 对多组数据字进行错误保护的方法 - Google Patents
对多组数据字进行错误保护的方法 Download PDFInfo
- Publication number
- CN101040445B CN101040445B CN2005800344624A CN200580034462A CN101040445B CN 101040445 B CN101040445 B CN 101040445B CN 2005800344624 A CN2005800344624 A CN 2005800344624A CN 200580034462 A CN200580034462 A CN 200580034462A CN 101040445 B CN101040445 B CN 101040445B
- Authority
- CN
- China
- Prior art keywords
- data
- data word
- error
- error detection
- word
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2909—Product codes
- H03M13/2915—Product codes with an error detection code in one dimension
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2942—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks of information bits
Abstract
本发明公开了用于保护多组数据字(100)的方法、装置、数据结构、计算机可读介质和机构等。一个实施例操作这些数据字(101)来产生合成数据字(102)及其纠错码(103),以用于标识位错误的位置,其中检错码被用于标识哪个数据字确实具有位错误。一个实施例从存储器或其它存储设备中获取被存储的特定数据字及其检错码。如果检测到错误,则获取组中与纠错码相对应的其它数据字并且进行操作来产生新的合成数据字。纠错码和新的合成数据字被用于标识位错误的位置,在特定数据字中相应的位位置被纠正。
Description
技术领域
本发明的一个实施例涉及通信和计算机系统,尤其是联网的路由器、分组交换系统、计算机以及存储和/或传输信息的其它设备;并且更具体地说,一个实施例涉及通过如下方式对多组数据字的错误保护,所述方式即操作(manipulate)这些数据字来产生合成数据字(resultant data word)及其纠错码以用来标识位错误的位置,并且使用通常与每个数据字相关联的检错码来标识特定数据字是否有位错误。
纠错和检错码是众所周知的。例如,ANDREW S.TANENBAUM,COMPUTER NETWORKS,Prentice-Hall,1981,pp.125-132讨论了纠错和检错码,并且被通过引用结合于此。假设码字包含n位,其中m是数据位,r是纠错或检错位(例如冗余或检查位),n=m+r。有很多公知的方法来产生检错和纠错位。假定有两个码字,则可以确定有多少个位不相同(例如通过对这两个码字相应的位进行异或或者单一位求和并且对这些结果进行求和)。其中两个码字或一组码字不相同的位位置的数目被称为汉明距离。汉明距离为d意味着将一个码字转变成另一码字需要d个单一位错误。为了检测j个错误,要求汉明距离为j+1,因为利用这样的码,j个单一位错误不可能将有效的码字变成另一个有效的码字。类似地,为了纠正j个错误,需要距离为2j+1的码,因为这样正确的码字离得非常远以致于即使发生了j次变化,原始码字仍然比任何其它码字要近,所以它可以被唯一地确定。
用于保护存储在随机访问存储器(RAM)中的条目的已知存储技术将纠错或检错码添加到每个存储器条目上。作为对存储器区域的读取操作的一部分,数据部分和纠错或检错码被读取,然后被用于检测可能的错误和/或纠正数据部分中被发现的错误。如果要执行纠错,那么每个条目需要若干个附加位(其确切数目取决于数据的大小和所使用的纠错机构),附加位总体上会占用存储器中相当大的部分,或者限制可以被存储在存储条目中的数据值的大小(例如其实际位数减去纠错位的数目)。希望有更高效的机构用于保护数据,该机构可能具有这样的优点,即减少存储器中用于存储错误保护信息的总的部分。
发明内容
本发明公开了用于保护多组数据字的方法、装置、数据结构、计算机可读介质和机构等。一个实施例操作这些数据字来产生合成数据字及其纠错码,以用于标识位错误的位置,检错码被用于标识哪个数据字确实具有位错误。一个实施例从存储器或其它存储设备中获取被存储的特定数据字及其检错码。如果检测到错误,则获取组中与纠错码相对应的其它数据字并且进行操作来产生新的合成数据字。纠错码和新的合成数据字被用于标识位错误的位置,在特定的数据字中相应的位位置被纠正。
附图说明
所附权利要求书具体给出了本发明的特征。从下面结合附图的详细描述可以最佳地理解本发明及其优点,在附图中:
图1A-C是示出了用于保护数据字组的一个实施例的机制的框图;
图2A-C示出了在一个实施例中被保护的数据被存储和/或传输可以采用的若干种不限制数目的方法;
图3A示出了在一个实施例中所使用的用于产生被保护的数据字的过程;
图3B示出了在一个实施例中所使用的用于对被保护的数据字组中被破坏的数据字进行纠错的过程;
图4A示出了在一个实施例中所使用的用于产生被保护的数据字和/或对被保护的数据字组中被破坏的数据字进行纠错的机构;以及
图4B示出了在一个实施例中所使用的用于产生被保护的数据字和/或 对被保护的数据字组中被破坏的数据字进行纠错的机构。
具体实施方式
本发明公开了用于保护数据字组的方法、装置、数据结构、计算机可读介质和机构等。
这里所描述的实施例包括各个要素和限制,没有一个要素或限制被设计为关键要素或限制。每个权利要求各自作为一个整体来描述本发明的方面。此外,所描述的一些实施例可以包括但不限于系统、网络、集成电路芯片、嵌入式处理器、ASIC、方法和包含指令的计算机可读介质等。一个或多个系统、设备、组件等可以包括一个或多个实施例,这些实施例可以包括由相同或不同系统、设备、组件等执行的权利要求的一些要素或限制。下面所描述的实施例实施本发明的范围和精神内的各个方面和配置,附图示出了示例性且非限制性的配置。
这里一般用术语“系统”来描述任意数目的组件、元件、子系统、设备、分组交换元件、分组交换机、路由器、网络、计算机和/或通信设备或机构,或者其组件的组合。这里一般使用术语“计算机”来描述任意数目的计算机,包括但不限于个人计算机、嵌入式处理元件和系统、控制逻辑、ASIC、芯片、工作站、主机等。这里一般使用术语“处理元件”来描述任意类型的处理机构或设备,例如处理器、ASIC、现场可编程门阵列、计算机等。这里一般使用术语“设备”来描述任意类型的机构,包括计算机或系统或其组件。这里一般使用术语“任务”和“进程”来描述任意类型的运行程序,包括但不限于计算机进程、任务、线程、执行应用、操作系统、用户进程、设备驱动、本地代码、机器语言或其它语言等,并且可以是交互式的和/或非交互式的,本地和/或远程执行的,在前台和/或后台执行的,在用户和/或操作系统地址空间中执行的,程序库和/或单个应用程序,并且不局限于任何特定的存储器分区技术。附图中所示出的步骤、连接和对信号和信息的处理(包括但不限于任何框图、流程图和消息序列图)通常可以按照相同或不同的串行或并行顺序和/或利用不同的组件和/或进程、线程等和/或基于不同的连接以及结合其它实施例中的其它功能来 执行,除非这种执行方式不能实现实施例或者明确或暗含地需要某种顺序(例如对于读取值和处理值的顺序一必须在处理值之前获取值,虽然有些相关的处理可以在读取操作之前、与之同时和/或在其之后来执行)。此外,一般使用术语“标识”来描述用于直接或间接地确知某个事项的任何方式或机构,可以包括但不限于接收、从存储器中获取、确定、限定、计算、产生等。
此外,这里一般使用术语“网络”和“通信机构”来描述一个或多个网络、通信介质或通信系统(包括但不限于互联网、专用或公共电话网络、蜂窝网络、无线网络、卫星网络、有线网络、局域网、城域网和/或广域网、电缆、电连接、总线等)和诸如消息传递、进程间通信、共享的存储器等的内部通信机构。这里一般使用术语“消息”来描述信息片段,其可以(也可以不)通过任意类型的一个或多个通信机构被传送,但是通常是通过任意类型的一个或多个通信机构被传送。
术语“存储机构”包括任意类型的存储器、存储设备或用于以任意格式保存指令或数据的其它机构。“计算机可读介质”是可扩展的术语,其包括任何存储器、存储设备、存储机构和/或其它存储机构。术语“存储器”包括任何随机访问存储器(RAM)、只读存储器(ROM)、闪存、集成电路和/或其它存储器组件或元件、术语“存储设备”包括任何固态存储介质、磁盘驱动器、磁盘、联网服务、磁带驱动器和其它存储设备。存储器和存储设备可以存储要由处理元件和/或控制逻辑执行的计算机可执行指令以及由处理元件或控制逻辑操作的数据。术语“数据结构”是可扩展的术语,指任何数据单元、变量、数据结构、数据库和/或可以被应用于数据以辅助解析该数据或执行对该数据的操作的一个或多个组织方案,例如但不限于存储器区域或设备、组、队列、树、堆栈、列表、被链接的列表、阵列、表、指针等。数据结构通常被保存在存储机构中。这里一般使用术语“指针”和“链接”来标识用于引用或标识另一元件、组件或其它实体的某种机构,并且可以包括但不限于对存储器或其它存储机构或其中的区域的引用、数据结构中的索引、取值等。
这里使用术语“一个实施例”来引用特定的实施例,其中每次引用 “一个实施例”可以指不同的实施例,并且这里在描述相关的特征、要素和/或限制时重复使用该术语不是建立每个实施例都必须包括的相关的特征、要素和/或限制的累积集合,虽然实施例通常可以包括所有的这些特征、要素和/或限制。另外,短语“用于xxx的装置”通常包括包含用于执行xxx的计算机可执行指令的计算机可读介质。
另外,这里通常使用术语“第一”、“第二”等来表示不同的单元(例如第一元件、第二元件)。这里使用这些术语并不一定表示一种顺序(例如一个单元或事件发生或出现在另一单元或事件之前),而是提供一种在特定单元之间进行区分的机构。另外,使用名词的单数不是限制性的,其通常包括一个或多个特定事项,而不只是一个(例如使用词“存储器”通常指一个或多个存储器而不必指定“存储器或多个存储器”或者“一个或多个存储器”或者“至少一个存储器”等)。此外,短语“基于x”和“响应于x”被用于表明得到或引发某事项所依据的项目x的最小集合,其中“x”是可扩展的并且不必描述执行操作所依据的项目的完整列表。另外,短语“被耦合到”被用于表示两个元件或设备之间某种程度的直接或间接连接,耦合设备会改变或不改变被耦合的信号或被传送的信息。术语“子集”被用于表示具有集合的全部元素或部分元素的组。术语“子树”被用于表示整个树或部分树。此外,这里使用术语“或”来标识对联合项目中的一个或多个(包括全部)的选择。另外,过渡术语“包括(comprising)”与“包括(including)”、“包含”或“特征在于”意思相同,都是非排他性的或者开放式的,不排除附加的未提到的元件或方法步骤。
本发明公开了用于保护多组数据字的方法、装置、数据结构、计算机可读介质和机构等。一个实施例操作这些数据字来产生合成数据字及其纠错码,以用于标识位错误的位置,检错码被用于标识哪个数据字确实具有位错误。一个实施例从存储器或其它存储设备中获取被存储的特定数据字及其检错码。如果检测到错误,则获得(例如从存储设备中获取)组中与纠错码相对应的其它数据字并且进行操作来产生新的合成数据字。纠错码和新的合成数据字被用于标识位错误的位置,在特定的数据字中相应的位 位置被纠正。
因而,一个实施例不需要像在全部的纠错码都被存储在每个数据行中以保护其数据字的情况下所需要的那么大的存储空间。而且,利用检错来标识数据行是否包括错误,一个实施例只需要响应于检测到的错误获取包含相应的纠错码的其它部分的其它数据行(或者至少是它们的纠错码部分)(例如与读取具有纠错码部分的所有数据行或者至少是它们的纠错码部分不同的是,每次只访问这些数据行中的一行,虽然在一个实施例中当这些数据行中的一行被访问时所有的这些数据行或者至少是它们的纠错码部分都被获取)。
一个实施例操作多个数据字来产生数据字。产生用于合成数据字的纠错码,纠错码包括多个纠错位。将纠错位的不同子集与多个数据字中的至少两个相关联。对于每个特定的数据字,基于该特定的数据字和可能有的纠错位的相关联的子集产生检错码。
一个实施例传送和/或存储数据字、纠错码和检错码。在传送或存储之后,一个实施例:获取数据,这个被获取的数据包括特定的数据字,其相关联的检错码以及可能有的纠错位中其相关联的子集;并且对被获取的数据执行检错操作。在一个实施例中,响应于标识错误状况的检错操作,一个实施例对被获取的数据执行纠错操作。在一个实施例中,该纠错操作的执行包括基于数据字组的当前值产生新的合成字,基于合成字和纠错码标识合成字中要纠正的位位置,并且纠正所获取的数据(例如数据字、纠错位中相关联的子集或者检错码)中相应的位位置。
在一个实施例中,对数据字、纠错码和检错码的存储包括:对于每个数据字,将其值、其检错码和可能有的多个纠错位中其相关联的子集存储在一个或多个存储器中相同的存储器行中。在一个实施例中,操作数据字来产生合成数据包括对数据字的位进行异或。一个实施例包括用于执行这些操作中的每一个的装置。一个实施例包括包含用于执行这些操作中的每一个的计算机可执行指令的计算机可读介质。
一个实施例基于特定的数据字和特定的检错码对数据字组中特定的数据字执行检错检查。响应于被标识的错误状况,操作数据来产生合成数据 字,该数据包括数据字组。基于合成数据字和相关联的预定纠错码来执行纠错操作,以标识错误的位位置。特定的数据字中对应于该位位置的位被纠正。
在一个实施例中,每个数据字被包括在每个数据行中,并且这些数据行包括检错码和多个错误保护码,每个数据字与多个检错码中不同的检错码相关联。在一个实施例中,每个数据字被包括在存储在一个或多个存储器中的数据行中,多个数据行中的每一行包括一个数据字和一个检错码;并且特定的数据字和特定的检错码取自于一个或多个存储器。
在一个实施例中,纠错码被保存在独立于一个或多个存储器的寄存器中;并且纠错码取自于寄存器。在一个实施例中,纠错码中的不同部分被包括在多个数据行中的不同行中。在一个实施例中,特定的数据行包括特定的数据字、特定的检错码和纠错码的不同部分中的特定部分,所述不同部分包括特定部分和其余部分。响应于检错检查所标识的错误状况,获取纠错码的其余部分。在一个实施例中,数据字包括特定数据字和其余数据字;并且响应于检错检查所标识的错误状况,从一个或多个存储器中获取其余数据字。一个实施例包括用于执行这些操作中的每一个的装置。一个实施例包括包含用于执行这些操作中的每一个的计算机可执行指令的计算机可读介质。
一个实施例包括检错和纠错能力以及存储设备。该实施例被配置为从存储设备中获取数据字组中的数据字及其相关联的检错码,并且操作数据字组的当前值来产生合成数据字,并且基于合成数据字及其相关联的预定纠错码执行纠错操作以标识与错误状况相对应的位位置,并且纠正数据字中对应于错误状况的位以产生经纠正的数据字。
在一个实施例中,操作当前值来产生合成数据字包括对当前值进行异或。一个实施例被配置为响应于标识来自纠错操作的错误状况从存储器中获取数据字组中的其它数据字以用在操作中。一个实施例被配置为响应于错误状况的标识从存储设备中获取预定的纠错码。在一个实施例中,存储设备被配置为基于特定地址获取特定数据行,所述特定数据行包括数据字、其相关联的检错码和预定的纠错码的一部分,而不是预定的纠错码的 全部。
一个实施例包括用于基于特定数据字和特定检错码对多个数据字中的特定数据字执行检错检查的装置;用于响应于检错检查所标识的错误状况操作数据以产生合成数据字的装置,所述数据包括多个数据字;用于基于合成数据字和相关联的预定纠错码执行纠错操作以标识错误的位位置的装置;以及用于对特定数据字中对应于所述位位置的位进行纠错的装置。
图1A-C是示出了用于保护数据字组的一个实施例的机制的框图。如图1A中所示,多个数据字组100被操作(102)(例如按照某种方式以某种形式组合在一起,例如但不限于对数据字组100中的每个数据字进行异或)来产生合成数据字104。然后,纠错码产生函数(例如公知的或任何其它函数中的一个)被应用(103)于合成数据字102来产生预定的纠错码104。
图1B中所示的是在一个实施例中所使用的为数据字组中的每个数据字产生检错码的过程。如图所示,检错码函数(例如公知的或任何其它函数中的一个,例如但不限于奇偶产生函数)被应用(115)于数据字110和可能有的合成纠错码104(图1A)中相关联的子集112,来为数据字110或数据字110和合成纠错码104的相关联的子集112产生预定的检错码116。
图1C中所示的是在一个实施例中被存储和/或传送的受保护的数据行120-122。如图所示,受保护的数据行120-122中的每一行包括数据字131、用于相应的数据行120-122的检错码132和可能有的用于数据字组的纠错码的子集133。
图2A-C示出了在一个实施例中受保护的数据被存储和/或传输可以采用的若干种不限制数目的方法。提供这些图是为了图示本发明的几个实施例的操作,并且说明实施例很宽的范围。本领域技术人员应当清楚,在本发明的范围和精神内,可以有很多种改变方式。
图2A中所示出的是两个受保护的数据行200和204,每个数据行包含32位的数据字(201,205)和一组保护位210(203,207)。在一个实施例中,数据字201和205被操作(例如被异或)来产生32位的合成数据 字,纠错码产生函数被应用于所述合成数据字来产生6位的纠错码。这六位(E0到E5)被分布在受保护的数据行200和204之间,如图所示。而且,在一个实施例中,应用单一位检错码产生函数(例如奇偶产生函数)来为受保护的数据行200、204中的每一行产生单个奇偶位(P0和P1)(例如基于数据字或数据字及纠错位中其相关联的子集)。因而,在一个实施例中,可以利用两个36位的存储器区域来提供对具有两个32位的数据字的组的一位纠错。
图2B中所示出的是四个受保护的数据行250-253,每个数据行包含16位的数据字220-234和一组保护位240(241-244)。在一个实施例中,数据字220-234被操作(例如被异或)来产生16位的合成数据字,纠错码产生函数被应用于所述合成数据字来产生7位的纠错码。这七位(E0到E6)被分布在受保护的数据行250-253之间,如图所示。而且,在一个实施例中,应用单一位检错码产生函数(例如奇偶产生函数)来为受保护的数据字220-234中的每一个产生单个奇偶位(P0-P7)(例如基于数据字或数据字及纠错位中其相关联的子集)。因而,在一个实施例中,可以利用四个36位的存储器区域来提供对具有八个16位的数据字的组的一位纠错。
注意,符合本发明的范围和精神的一个实施例可以利用各种检错函数和纠错函数。例如,图2B中所示的是用于纠正16位的7位纠错码。注意,一个实施例利用5位的纠错码来纠正16位,这五位通常分布在受保护的数据字之间。
图2C中所示出的是四个受保护的数据行290-293,每个数据行包含8位的数据字260-275和一组保护位280(281-285)。在一个实施例中,数据字260-275被操作(例如被异或)来产生8位的合成数据字,纠错码产生函数被应用于所述合成数据字来产生4位的纠错码285,其可以与受保护的数据行290-293一起被存储在存储设备中,或者例如存储在单独的存储器、寄存器或其它区域中。而且,在一个实施例中,应用单一位检错码产生函数(例如奇偶产生函数)来为受保护的数据字260-275中的每一个产生单个奇偶位(P0-PF)(例如基于数据字或数据字及其相关联的纠错 位的子集)。因而,在一个实施例中,可以利用四个36位的存储器区域来提供对具有八个16位的数据字的组的一位纠错。
图3A示出了在一个实施例中所使用的用于产生受保护的数据字的过程。处理开始于处理框300,并且进行到处理框302,其中多个数据字被操作以产生合成数据字。在处理框304中,产生用于合成数据字的纠错码。在处理框306中,为多个数据字中的每一个和可能有的纠错码中相关联的多个位的子集确定检错码。在处理框308中,多个数据字、检错码和纠错码被存储和/或传送。处理结束于处理框310。
图3B示出了在一个实施例中所使用的用于对被保护的数据字组中被破坏的数据字进行纠错的过程。处理开始于处理框320,并且进行到处理框322,其中特定的数据字和可能有的纠错码的子集被获取(例如从存储器中被获取、被接收等)。在处理框324中进行判定,如果在所获取的数据中没有检测到错误(例如通过对所获取的数据执行检错函数以识别是否为正确的奇偶结果),然后在处理框326中,数据字以某种形式被转发和/或使用。否则,检测到错误,并且在处理框328中,执行纠错操作以标识位错误的位置,例如但不限于获取任何所需要的其余数据字和纠错码的部分,操作数据字(其当前值,可能包括错误位)来产生合成数据字,并且基于合成数据字和纠错码确定错误位的位位置。如果在数据字中有位错误,那么纠正该位错误。在处理框330中,正确的数据字以某种形式被转发和/或使用,并且存储被更新以纠正位错误。处理结束于框332。
图4A是在一个实施例中所使用的用于产生被保护的数据字和/或对被保护的数据字组中被破坏的数据字进行纠错的示例性系统或组件400的框图。在一个实施例中,系统或组件400执行与这里所示出或所描述的流程图中的一个相对应的一个或多个处理。
在一个实施例中,组件400包括处理元件401(例如处理器、定制逻辑等)、存储器402、存储设备403以及用于接收和发送分组、项目和/或其它信息的接口404,这些元件通常经一个或多个通信机构409(作为示例显示为总线)耦合。组件400的各个实施例可以包括更多或更少的元件。组件400的操作通常由处理元件401控制,处理元件401使用存储器 402和存储设备403来执行一个或多个按时间排定的任务或处理。存储器402是一种类型的计算机可读介质,并且通常包括随机访问存储器(RAM)、只读存储器(ROM)、闪存、集成电路和/或其它存储组件。存储器402通常存储要由处理元件401执行的计算机可执行指令和/或由处理元件401操作以执行根据本发明的功能的数据。存储设备403是另一种类型的计算机可读介质,并且通常包括固态存储介质、磁盘驱动器、磁盘、联网服务、磁带驱动器和其它存储设备。存储设备403通常存储要由处理元件401执行的计算机可执行指令和/或由处理元件401操作以执行根据本发明的功能的数据。
图4B示出了在一个实施例中所使用的用于产生被保护的数据字和/或对被保护的数据字组中被破坏的数据字进行纠错的存储系统420。在一个实施例中,存储器402(图4A)包括存储系统420。在一个实施例中,存储设备403(图4A)包括存储系统420。
如图所示,控制器422包括存储和数据字操作功能。纠错码产生机构424被用于产生纠错码。奇偶检查和纠错机构426被用于产生奇偶码并且纠正被检测到的错误。通常,包括受保护的数据字的受保护的数据行被存储在存储设备428中。在一个实施例中,用于数据字组的检错和/或纠错码被存储在存储设备428中;而在一个实施例中,用于数据字组的检错和/或纠错码被存储在控制器422内的存储设备中。在一个实施例中,存储系统420基于像标准的RAM这样的地址431来存储和获取数据字433,而且也执行数据保护功能。
从可以应用本发明原理的许多可能的实施例来看,应当理解这里针对附图描述的多个实施例和多个方面只是示例性的,并且不应当认为是限制了本发明的范围。例如,本领域技术人员应当清楚许多处理框操作可以被重新排序为在其它操作之前、之后或与之基本同时进行。而且,很多不同形式的数据结构可以被用在各个实施例中。这里所描述的发明包括所有可以落在所附权利要求书及其等同物的范围内的实施例。
Claims (14)
1.一种用于保护数据的方法,所述方法包括:
操作多个数据字来产生合成数据字;
产生用于所述合成数据字的纠错码,所述纠错码包括多个纠错位;
将所述多个纠错位的不同部分与所述多个数据字中的至少两个相关联;
对于所述多个数据字中的每个特定数据字:基于所述特定数据字和可能有的所述多个纠错位的所述相关联的部分产生检错码;
传送或存储所述多个数据字、所述纠错码和所述多个检错码;
在所述传送或存储操作之后获取数据,被获取的数据包括:所述多个数据字的特定数据字,与特定数据字相关联的所述检错码以及可能有的所述多个纠错位中与特定数据字相关联的部分;以及
对所述被获取的数据执行检错操作。
2.如权利要求1所述的方法,包括:响应于标识错误状况的所述检错操作:对所述被获取的数据执行纠错操作。
3.如权利要求2所述的方法,包括响应于所述标识错误状况,获取所述多个纠错位的所述不同部分的一个或多个附加部分。
4.如权利要求3所述的方法,其中所述多个纠错位的所述不同部分的所述一个或多个附加部分只在所述检错操作标识了所述错误状况的情况下才被获取。
5.如权利要求2所述的方法,其中所述执行纠错操作包括基于所述多个数据字的当前值产生新的合成字,基于所述合成字和所述纠错码标识在所述合成数据字中要纠正的位位置,以及纠正所述被获取的数据中相应的位位置。
6.如权利要求1所述的方法,其中所述存储多个数据字、所述纠错码和所述多个检错码包括:对于所述多个数据字的每个数据字,将数据字的值、所述检错码和可能有的所述多个纠错位中的与数据字相关联的部分存储在一个或多个存储器中相同的存储器行中。
7.如权利要求1所述的方法,其中所述操作所述多个数据字来产生所述合成数据字包括对所述多个数据字的位进行异或。
8.一种用于保护数据的方法,所述方法包括:
基于多个数据字中的特定数据字和特定检错码对所述特定数据字执行检错检查;
响应于所述检错检查所标识的错误状况,操作数据以产生合成数据字,所述数据包括所述多个数据字;
基于所述合成数据字和相关联的预定纠错码执行纠错操作以标识错误的位位置;以及
对所述特定数据字中对应于所述位位置的位进行纠错,
其中所述多个数据字中的每一个被包括在多个数据行中不同的数据行中;其中所述多个数据行包括所述纠错码和多个检错码,所述多个数据字中的每一个与所述多个检错码中不同的检错码相关联。
9.如权利要求8所述的方法,其中所述纠错码中不同的部分被存储在所述多个数据行中不同的数据行中。
10.一种用于保护数据的方法,其中多个数据字中的每一个被包括在存储在一个或多个存储器中的多个数据行中,所述多个数据行中的每一个包括所述多个数据字中的一个和多个检错码中的一个;所述方法包括:
从所述一个或多个存储器中获取所述多个数据字中的特定数据字和所述多个检错码中的特定检错码;
基于所述特定数据字和所述特定检错码对所述特定数据字执行检错检查;
响应于所述检错检查所标识的错误状况,操作数据以产生合成数据字,所述数据包括所述多个数据字;
基于所述合成数据字和相关联的预定纠错码执行纠错操作以标识错误的位位置;以及
对所述特定数据字中对应于所述位位置的位进行纠错。
11.如权利要求10所述的方法,其中所述纠错码被保存在与所述一个或多个存储器相独立的寄存器中;并且其中所述方法包括从所述寄存器中获取所述纠错码。
12.如权利要求10所述的方法,其中所述纠错码的不同部分被包括在所述多个数据行中的不同行中。
13.如权利要求12所述的方法,其中所述多个数据行中的特定数据行包括所述特定数据字、所述特定检错码和所述纠错码的所述不同部分中的特定部分,所述不同部分包括所述特定部分和其余部分;并且所述方法包括:响应于所述检错检查所标识的错误状况,获取所述纠错码的其余部分。
14.一种用于保护数据的方法,该方法包括:
基于多个数据字中的特定数据字和特定检错码对所述特定数据字执行检错检查,其中所述多个数据字包括所述特定数据字和其余数据字;
响应于所述检错检查所标识的错误状况,从一个或多个存储器中获取所述其余数据字,并且操作数据以产生合成数据字,所述数据包括所述多个数据字;
基于所述合成数据字和相关联的预定纠错码执行纠错操作以标识错误的位位置;以及
对所述特定数据字中对应于所述位位置的位进行纠错。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/040,678 | 2005-01-22 | ||
US11/040,678 US7350131B2 (en) | 2005-01-22 | 2005-01-22 | Error protecting groups of data words |
PCT/US2005/046910 WO2006078418A2 (en) | 2005-01-22 | 2005-12-26 | Error protecting groups of data words |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101040445A CN101040445A (zh) | 2007-09-19 |
CN101040445B true CN101040445B (zh) | 2012-08-08 |
Family
ID=36692698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800344624A Active CN101040445B (zh) | 2005-01-22 | 2005-12-26 | 对多组数据字进行错误保护的方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7350131B2 (zh) |
EP (1) | EP1839394B1 (zh) |
CN (1) | CN101040445B (zh) |
AT (1) | ATE492072T1 (zh) |
DE (1) | DE602005025407D1 (zh) |
WO (1) | WO2006078418A2 (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7349230B2 (en) * | 2005-10-18 | 2008-03-25 | Cisco Technology, Inc. | Associative memory cells configured to selectively produce binary or ternary content-addressable memory lookup results |
US7266004B2 (en) * | 2005-10-18 | 2007-09-04 | Cisco Technology, Inc. | Identifying content-addressable memory entries differing from a lookup word in multiple but less than a predetermined number of bit positions |
US7345897B2 (en) * | 2005-10-18 | 2008-03-18 | Cisco Technology, Inc. | Error protected ternary content-addressable memories and lookup operations performed thereon |
US8024639B2 (en) * | 2006-06-23 | 2011-09-20 | Schweitzer Engineering Laboratories, Inc. | Software and methods to detect and correct data structure |
US7689889B2 (en) * | 2006-08-24 | 2010-03-30 | Cisco Technology, Inc. | Content addressable memory entry coding for error detection and correction |
US7730344B1 (en) | 2006-08-28 | 2010-06-01 | Marvell International Ltd. | System and method for error correction |
US7647522B2 (en) * | 2006-09-28 | 2010-01-12 | Microsoft Corporation | Operating system with corrective action service and isolation |
US8069392B1 (en) * | 2007-10-16 | 2011-11-29 | Integrated Device Technology, Inc. | Error correction code system and method |
US20090271570A1 (en) * | 2008-04-29 | 2009-10-29 | Cisco Technology, Inc., A Corporation Of California | Content-Addressable Memory Lookup Operations with Error Detection |
CN101420624B (zh) * | 2008-11-13 | 2012-01-04 | 华为技术有限公司 | 一种视频解码错误处理方法及装置 |
US8230305B2 (en) * | 2009-04-02 | 2012-07-24 | Micron Technology, Inc. | Extended single-bit error correction and multiple-bit error detection |
US8750059B2 (en) * | 2009-08-12 | 2014-06-10 | Taiwan Semiconductor Manufacturing Company, Ltd. | Self-repairing memory |
US9619318B2 (en) * | 2013-02-22 | 2017-04-11 | Intel Deutschland Gmbh | Memory circuits, method for accessing a memory and method for repairing a memory |
US9258224B2 (en) * | 2013-02-28 | 2016-02-09 | Texas Instruments Incorporated | Packet processing VLIW action unit with or-multi-ported instruction memory |
US9569308B1 (en) * | 2013-07-15 | 2017-02-14 | Rambus Inc. | Reduced-overhead error detection and correction |
US9513987B2 (en) * | 2014-11-07 | 2016-12-06 | International Business Machines Corporation | Using error correcting codes for parity purposes |
US9966970B2 (en) * | 2015-04-09 | 2018-05-08 | Oracle International Corporation | Efficient silent code assignment to a set of logical codes |
US9690517B2 (en) * | 2015-05-22 | 2017-06-27 | Texas Instruments Incorporated | Dual-mode error-correction code/write-once memory codec |
US9887806B2 (en) | 2015-07-10 | 2018-02-06 | Cisco Technology, Inc. | Minimum latency link layer metaframing and error correction |
CN106601305A (zh) * | 2016-11-18 | 2017-04-26 | 华中科技大学 | 一种使用检错码和纠错码相结合的固态盘纠错方法 |
US10212082B2 (en) | 2017-07-01 | 2019-02-19 | Cisco Technology, Inc. | Dynamic priority of content-addressable memory blocks used in determining a highest-priority matching entry |
US10318588B2 (en) | 2017-07-01 | 2019-06-11 | Cisco Technology, Inc. | Searching varying selectable physical blocks of entries within a content-addressable memory |
US10387251B2 (en) | 2017-07-17 | 2019-08-20 | Cisco Technology, Inc. | Error detection and correction in a content-addressable memory using single-bit position lookup operations |
DE102018126051A1 (de) * | 2018-01-12 | 2019-07-18 | Taiwan Semiconductor Manufacturing Co. Ltd. | Neuartige Speichervorrichtung |
US10496299B2 (en) | 2018-04-16 | 2019-12-03 | Cisco Technology, Inc. | Efficient content-addressable memory entry integrity checking including for protecting the accuracy of packet processing operations |
US11467899B2 (en) | 2018-04-16 | 2022-10-11 | Cisco Technology, Inc. | Efficient content-addressable memory lookup result integrity checking and correcting operations including for protecting the accuracy of packet processing operations |
US11194475B2 (en) | 2018-04-16 | 2021-12-07 | Cisco Technology, Inc. | Coordinated updating and searching a content-addressable memory including for packet processing operations |
US10719387B2 (en) * | 2018-04-25 | 2020-07-21 | Oracle International Corporation | Memory interface with tamper-evident features to enhance software security |
US11108894B2 (en) * | 2019-08-09 | 2021-08-31 | Microsoft Technology Licensing, Llc | Masked packet checksums for more efficient digital communication |
US11694761B2 (en) * | 2021-09-17 | 2023-07-04 | Nxp B.V. | Method to increase the usable word width of a memory providing an error correction scheme |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1240067A (zh) * | 1996-10-09 | 1999-12-29 | 艾利森公司 | 用两个分组码纠错 |
US6393597B1 (en) * | 1999-06-01 | 2002-05-21 | Sun Microsystems, Inc. | Mechanism for decoding linearly-shifted codes to facilitate correction of bit errors due to component failures |
US6473880B1 (en) * | 1999-06-01 | 2002-10-29 | Sun Microsystems, Inc. | System and method for protecting data and correcting bit errors due to component failures |
Family Cites Families (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3648254A (en) | 1969-12-31 | 1972-03-07 | Ibm | High-speed associative memory |
US4168486A (en) | 1978-06-30 | 1979-09-18 | Burroughs Corporation | Segmented error-correction system |
US4296475A (en) | 1978-12-19 | 1981-10-20 | U.S. Philips Corporation | Word-organized, content-addressable memory |
US4617664A (en) * | 1984-06-29 | 1986-10-14 | International Business Machines Corporation | Error correction for multiple bit output chips |
JPS61139846A (ja) | 1984-12-12 | 1986-06-27 | Hitachi Ltd | 誤り訂正・検出方式 |
US4852100A (en) | 1986-10-17 | 1989-07-25 | Amdahl Corporation | Error detection and correction scheme for main storage unit |
US4740968A (en) | 1986-10-27 | 1988-04-26 | International Business Machines Corporation | ECC circuit failure detector/quick word verifier |
US4791606A (en) | 1987-09-01 | 1988-12-13 | Triad Semiconductors International Bv | High density CMOS dynamic CAM cell |
US4996666A (en) | 1988-08-12 | 1991-02-26 | Duluk Jr Jerome F | Content-addressable memory system capable of fully parallel magnitude comparisons |
US5440715A (en) | 1990-06-27 | 1995-08-08 | Advanced Micro Devices, Inc. | Method and apparatus for expanding the width of a content addressable memory using a continuation bit |
US5313475A (en) | 1991-10-31 | 1994-05-17 | International Business Machines Corporation | ECC function with self-contained high performance partial write or read/modify/write and parity look-ahead interface scheme |
US5383146A (en) | 1992-06-08 | 1995-01-17 | Music Semiconductors, Inc. | Memory with CAM and RAM partitions |
US5450351A (en) | 1993-11-19 | 1995-09-12 | International Business Machines Corporation | Content addressable memory implementation with random access memory |
US5379304A (en) | 1994-01-28 | 1995-01-03 | International Business Machines Corporation | Method and structure for providing error correction code and parity for each byte on SIMM's |
US6047369A (en) | 1994-02-28 | 2000-04-04 | Intel Corporation | Flag renaming and flag masks within register alias table |
US5774481A (en) * | 1995-03-31 | 1998-06-30 | International Business Machines Corporation | Reduced gate error detection and correction circuit |
US5845324A (en) | 1995-04-28 | 1998-12-01 | Unisys Corporation | Dual bus network cache controller system having rapid invalidation cycles and reduced latency for cache access |
US6041389A (en) | 1995-11-16 | 2000-03-21 | E Cirrus Logic, Inc. | Memory architecture using content addressable memory, and systems and methods using the same |
US5978885A (en) | 1996-06-17 | 1999-11-02 | Hewlett Packard Co. | Method and apparatus for self-timing associative data memory |
US6069573A (en) | 1996-06-17 | 2000-05-30 | Hewlett-Packard Company | Match and match address signal prioritization in a content addressable memory encoder |
US5842040A (en) | 1996-06-18 | 1998-11-24 | Storage Technology Corporation | Policy caching method and apparatus for use in a communication device based on contents of one data unit in a subset of related data units |
US5841874A (en) | 1996-08-13 | 1998-11-24 | Motorola, Inc. | Ternary CAM memory architecture and methodology |
US6181698B1 (en) | 1997-07-09 | 2001-01-30 | Yoichi Hariguchi | Network routing table using content addressable memory |
US6199140B1 (en) | 1997-10-30 | 2001-03-06 | Netlogic Microsystems, Inc. | Multiport content addressable memory device and timing signals |
JP3165099B2 (ja) * | 1998-02-05 | 2001-05-14 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 誤り訂正方法及びシステム |
CA2297775C (en) * | 1998-05-27 | 2006-07-18 | Ntt Mobile Communications Network Inc. | Specified error protection by parameter classification |
US6377577B1 (en) | 1998-06-30 | 2002-04-23 | Cisco Technology, Inc. | Access control list processing in hardware |
US6389506B1 (en) | 1998-08-07 | 2002-05-14 | Cisco Technology, Inc. | Block mask ternary cam |
US6304992B1 (en) * | 1998-09-24 | 2001-10-16 | Sun Microsystems, Inc. | Technique for correcting single-bit errors in caches with sub-block parity bits |
US6081440A (en) | 1998-11-05 | 2000-06-27 | Lara Technology, Inc. | Ternary content addressable memory (CAM) having fast insertion and deletion of data values |
US6137707A (en) | 1999-03-26 | 2000-10-24 | Netlogic Microsystems | Method and apparatus for simultaneously performing a plurality of compare operations in content addressable memory device |
US6510509B1 (en) | 1999-03-29 | 2003-01-21 | Pmc-Sierra Us, Inc. | Method and apparatus for high-speed network rule processing |
US6175513B1 (en) | 1999-07-12 | 2001-01-16 | Netlogic Microsystems | Method and apparatus for detecting multiple matches in a content addressable memory |
US6374326B1 (en) | 1999-10-25 | 2002-04-16 | Cisco Technology, Inc. | Multiple bank CAM architecture and method for performing concurrent lookup operations |
US6526474B1 (en) | 1999-10-25 | 2003-02-25 | Cisco Technology, Inc. | Content addressable memory (CAM) with accesses to multiple CAM arrays used to generate result for various matching sizes |
US6154384A (en) | 1999-11-12 | 2000-11-28 | Netlogic Microsystems, Inc. | Ternary content addressable memory cell |
US6675341B1 (en) * | 1999-11-17 | 2004-01-06 | International Business Machines Corporation | Extended error correction for SEC-DED codes with package error detection ability |
US6134135A (en) | 2000-01-10 | 2000-10-17 | Switchcore, A.B. | Mask arrangement for scalable CAM/RAM structures |
US6535951B1 (en) | 2000-02-29 | 2003-03-18 | Cisco Technology, Inc. | Hit result register file used in a CAM |
US6240003B1 (en) | 2000-05-01 | 2001-05-29 | Micron Technology, Inc. | DRAM content addressable memory using part of the content as an address |
US6246601B1 (en) | 2000-06-14 | 2001-06-12 | Netlogic Microsystems, Inc. | Method and apparatus for using an inter-row configurable content addressable memory |
US6732227B1 (en) | 2000-09-05 | 2004-05-04 | Integrated Device Technology, Inc. | Network translation circuit and method using a segmentable content addressable memory |
US6606681B1 (en) | 2001-02-23 | 2003-08-12 | Cisco Systems, Inc. | Optimized content addressable memory (CAM) |
US6597595B1 (en) | 2001-08-03 | 2003-07-22 | Netlogic Microsystems, Inc. | Content addressable memory with error detection signaling |
US6715029B1 (en) | 2002-01-07 | 2004-03-30 | Cisco Technology, Inc. | Method and apparatus for possibly decreasing the number of associative memory entries by supplementing an associative memory result with discriminator bits from an original set of information |
US6618281B1 (en) | 2002-05-15 | 2003-09-09 | International Business Machines Corporation | Content addressable memory (CAM) with error checking and correction (ECC) capability |
US20040015753A1 (en) | 2002-07-16 | 2004-01-22 | Patella Benjamin J. | Detection of bit errors in content addressable memories |
US7100097B2 (en) | 2002-07-16 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | Detection of bit errors in maskable content addressable memories |
US7065609B2 (en) | 2002-08-10 | 2006-06-20 | Cisco Technology, Inc. | Performing lookup operations using associative memories optionally including selectively determining which associative memory blocks to use in identifying a result and possibly propagating error indications |
US7103708B2 (en) | 2002-08-10 | 2006-09-05 | Cisco Technology, Inc. | Performing lookup operations using associative memories optionally including modifying a search key in generating a lookup word and possibly forcing a no-hit indication in response to matching a particular entry |
US6717946B1 (en) | 2002-10-31 | 2004-04-06 | Cisco Technology Inc. | Methods and apparatus for mapping ranges of values into unique values of particular use for range matching operations using an associative memory |
-
2005
- 2005-01-22 US US11/040,678 patent/US7350131B2/en not_active Expired - Fee Related
- 2005-12-26 EP EP05855469A patent/EP1839394B1/en active Active
- 2005-12-26 WO PCT/US2005/046910 patent/WO2006078418A2/en active Application Filing
- 2005-12-26 DE DE602005025407T patent/DE602005025407D1/de active Active
- 2005-12-26 AT AT05855469T patent/ATE492072T1/de not_active IP Right Cessation
- 2005-12-26 CN CN2005800344624A patent/CN101040445B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1240067A (zh) * | 1996-10-09 | 1999-12-29 | 艾利森公司 | 用两个分组码纠错 |
US6393597B1 (en) * | 1999-06-01 | 2002-05-21 | Sun Microsystems, Inc. | Mechanism for decoding linearly-shifted codes to facilitate correction of bit errors due to component failures |
US6473880B1 (en) * | 1999-06-01 | 2002-10-29 | Sun Microsystems, Inc. | System and method for protecting data and correcting bit errors due to component failures |
Also Published As
Publication number | Publication date |
---|---|
EP1839394A2 (en) | 2007-10-03 |
CN101040445A (zh) | 2007-09-19 |
US7350131B2 (en) | 2008-03-25 |
WO2006078418A3 (en) | 2007-01-25 |
WO2006078418A2 (en) | 2006-07-27 |
EP1839394B1 (en) | 2010-12-15 |
DE602005025407D1 (de) | 2011-01-27 |
EP1839394A4 (en) | 2008-04-02 |
ATE492072T1 (de) | 2011-01-15 |
US20060168494A1 (en) | 2006-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101040445B (zh) | 对多组数据字进行错误保护的方法 | |
CN102378967B (zh) | 扩展式单位错误校正及多位错误检测 | |
CN100478922C (zh) | 保护存储器的方法、装置和系统 | |
CN102317919B (zh) | 在存储器控制器中的数据完整性及方法 | |
CN102117662B (zh) | 用于8-位存储器设备的差错校正机制 | |
EP0535086B1 (en) | Multiple error correction in a computer memory | |
US20070089044A1 (en) | Method and apparatus for error management | |
US6457154B1 (en) | Detecting address faults in an ECC-protected memory | |
US6442726B1 (en) | Error recognition in a storage system | |
WO2000073907A1 (en) | System and method for protecting data and correcting bit errors due to component failures | |
CN1737787A (zh) | 总线耦合安全相关过程的方法和设备 | |
US20170046222A1 (en) | Error correction using wom codes | |
US8209594B2 (en) | Sending device, receiving device, communication control device, communication system, and communication control method | |
CN100421106C (zh) | 具有增强能力的关联存储器 | |
US6519736B1 (en) | Generating special uncorrectable error codes for failure isolation | |
US20090158045A1 (en) | Light-overhead and flexible wireless sensor message authentication method | |
JP5986504B2 (ja) | データ生存性を得るためのシステムおよび方法 | |
US6463563B1 (en) | Single symbol correction double symbol detection code employing a modular H-matrix | |
EP1703396B1 (en) | Error detection & correction | |
KR20150084560A (ko) | 인코딩 장치, 디코딩 장치 및 그 동작 방법 | |
JPS6148061A (ja) | マルチプロセッサ・コンピュータ・システム | |
EP0310220B1 (en) | An apparatus useful for correction of single bit errors and detection of double bit errors in the transmission of data | |
JP2013526225A (ja) | インタフェースを介して伝送されるデータパケットを保護する方法及び装置 | |
Subhasri et al. | VLSI design of parity check code with hamming code for error detection and correction | |
JPWO2006013637A1 (ja) | 電子タグ、リーダ、及びその製造方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |