SYSTEM AND METHOD FOR DETECTING DOUBLE-BIT ERRORS AND FOR CORRECTING ERRORS DUE TO COMPONENT FAILURES

Abstract: A system for detecting and correcting errors in a data block includes a check bits generation unit which receives and encode data to be protected. The check bits generation unit partition the data into a plurality of logical groups. The check bits generation unit generates a parity bit for each of the logical group and additionally generates a pair of global error correction codes. The error correction unit is configured to generate a parity error bit for each of the logical group of data based on the received data and the original parity bits, as well as first and second syndrome codes.

Description: TITLE: SYSTEM AND METHOD FOR DETECTING DOUBLE-BIT ERRORS AND FOR CORRECTING ERRORS DUE TO COMPONENT FAILURES BACKGROUND OF THE INVENTION 1. Field of the Invention This mventton relates to error detection and correction m electronic systems and, more particularly, to systems that employ error correction codes to facilitate detection and correction of bit errors. 2. Descnption of the Related Art Error codes are commonly used m electronic systems to detect and correct data errors, such as transmission errors or storage errors. For example, error codes may be used to detect and correct errors in data transmitted via a telephone lme, a radio transmitter, or a compact disc laser. Error codes may additionally be used to detect and correct errors associated with data stored in the memory of computer systems One common use of error codes is to detect and correct errors of data transmitted on a data bus of a computer system In such systems, error correction bits, or check bits, may be generated for the data pπor to its transfer or storage When the data is received or retrieved, the check bits may be used to detect and correct errors within the data. Component failures are a common source of error in electrical systems. Faulty components may include faulty memory chips or faulty data paths provided between devices of a system. Faulty data paths can result from, for example, faulty pins, faulty data traces, or faulty wires. Hamming codes are a commonly used type of error code. The check bits m a Hamming code are parity bits for portions of the data bits. Each check bit provides the parity for a unique subset of the data bits If an error occurs (i.e. one or more of the data bits unintentionally change state), one or more of the check bits upon regeneration will also change state (assummg the error is within the class of errors covered by the code). By determining the specific bits of the regenerated check bits that changed state, the location of the error within the data may be determined For example, if one data bit changes state, this data bit will cause one or more of the regenerated check bits to change state Because each data bit contributes to a unique group of check bits, the check bits that are modified will identify the data bit that changed state. The error may be corrected by inverting the bit identified as being erroneous. One common use of Hamming codes is to correct single bit errors within a group of data Generally speaking, the number of check bits must be large enough such that 2 k - 1 is greater than or equal to n+k where k is the number of check bits and n is the number of data bits. Accordmgly, seven check bits are typically required to implement a single error correcting Hamming code for 64 data bits. A smgle error correcting Hamming code is capable of detecting and correcting a smgle error. Figures 1-3 illustrate an example of a system employing a single-error correction (SEC) Hamming code In this example, four data bits (D4, D3, D2, and DI) are protected usmg three check bits (PI, P2, and P3). The parity generator 10 (Figure 1) is used to encode the data block that contams the data bits and the check bits The encoding process is performed pπor to storing or communicating the data. Figure 2 shows an assignment of data bits to calculate the check bits In this example, the check bit PI is generated by an XOR (exclusive OR) of the binary values in D4, D3, and DI. Similarly, the check bit P2 is generated by an XOR of the binary values in D4, D2, and DI, and the check bit P3 is generated by an XOR of the binary values in D3, D2 and DI. Figure 3 shows the bit positions and the corresponding content of these positions within the encoded data block. The data block, which mcludes the data bits and the generated check bits, may then be stored in a memory chip or communicated over a data communication path. At the pomt of receipt, the data block is retπeved and decoded. The decoding process mvolves performing a validity check on the received word, and executing an error correction technique if an error was detected. To check whether an error occurred in the storage (or transmission) of the data block, the check bits PI, P2, and P3 are effectively regenerated using the received data, and each regenerated check bit is XORed with the corresponding received check bit to generate a correspondmg syndrome bit. Figure 4 is a table depicting a manner in which these syndrome bits may be generated. More particularly, syndrome bit SI may be generated by XORing the received binary values m PI, D4, D3, and DI. If none of the received data bits (D4, D3, DI) is erroneous, the value of the received check bit PI is effectively XORed with itself, and the syndrome bit SI will be 0 (assuming the oπginal check bit PI is not erroneous) If one of the data bits (D4, D3, DI) or the check bit PI is erroneous, the syndrome bit SI will be 1 (asserted), thus indicating an error Syndrome bits S2 and S3 may be generated similarly. Taken collectively, the syndrome bits SI, S2 and S3 may be used to identify the location of an erroneous bit. For example, the binary value of the syndrome bits in the order [S3, S2, SI] mdicates the position of the erroneous bit within the 7 bit data block as depicted in Figure 3. If the syndrome code is all zeros (i.e. "000"), the data has no single bit error. Upon identification of the erroneous bit position, the error is corrected by inverting the binary value m that position, l e. from 0 to 1 or from 1 to 0 It is a common practice to store data in, or communicate data through, multiple components. For example, a data block may be stored in a plurality of memory chips, or it may be communicated through a plurality of wires. An error may be introduced if one of the components is faulty. A Hammmg code such as that descnbed above may be used to address error correction m such systems. For example, consider the case of storing D bits of data that are protected by C check bits usmg M memory chips. The data block therefore contams D+C bits. If the data block is to be evenly divided among the M memory chips, each memory chip will store X of the data and or check bits of the data block, where X = (D+C)/M The standard approach to providing error correction for chip failures is to divide the D+C data and check bits mto X logical groups each including M bits, and assigning 1 bit from each chip to each of the groups The check bits m each group form a SEC (single-error correcting) code such as a Hammmg code. When any chip fails, it mtroduces at most one error mto each group, and these errors are corrected independently usmg the SEC codes. If a Hammmg code is used in each group, a total of C = X*L check bits are required, where L is the smallest mteger such that 2 Λ L > M. This standard approach is inefficient because each group is able to mdependently identify which bit (if any) within the group is m error. However, if the only failures considered are memory chip failures, the failures m different groups are highly correlated. In some systems, in addition to correctmg single-bit errors due to component failures, it may also be desirable to detect any double-bit errors that may occur. The standard approach is to evenly divide the data block among the memory chips m the manner as described above, and to generate check bits for each group which form an SEC-DED (smgle-error correctmg, double-error detecting) code such as an extended Hammmg code When any chip fails, it mtroduces at most one error mto each group, and these errors are corrected independently usmg the SEC-DED codes When two arbitrary bits are in error, they are either corrected (if they lie m different groups) or are detected (if they he in the same group) If an extended Hammmg code is used m each group, a total of C=X*L check bits are required, where L is the smallest integer such that 2 Λ (L-1)>M Similar to the foregoing discussion, however, the use of extended Hammmg codes in such systems is inefficient It would be desirable to provide a system and method which allow for the reliable storage or transmission of data m environments wherem component failures are possible In particular, it would be desirable to provide a system and method which allow for the detection of arbitrary double-bit errors while performing correction of errors due to component failures where the number of required check bits may be reduced SUMMARY OF THE INVENTION The problems outlined above may in large part be solved by a system and method for detectmg and correctmg errors m a data block in accordance with the present mvention In one embodiment, a system mcludes a check bits generation unit which receives and encodes data to be protected The check bits generation unit effectively partitions the data mto a plurality of logical groups The check bits generation unit generates a paπty bit for each of the logical groups, and additionally generates a pair of global eπor coπection codes, referred to generally as a first global error coπection code and a second global eπor coπection code In one implementation, data at coπespondmg bit positions within the logical groups are conveyed through a common component, such as the same wire, or are stored in the same component, such as the same memory chip Additionally, data bits at different bit positions within a given logical group are not conveyed through, or are not stored within, a common component In one particular embodiment, the data is divided mto a total of X logical groups The first global eπor coπection code (also refeπed to in this embodiment as an "untwisted" global eπor coπection code) is equivalent to the result of generatmg an individual eπor coπection code for each logical group and XORing the collection of individual eπor coπection codes together The second global eπor coπection code (also refeπed to m this embodiment as the "twisted" global eπor coπection code) is equivalent to the result of (or may be derived by) shifting (either linearly or cyclically) the eπor coπection code for a given ith group by l bit posrtions, wherem l = 0 to X-l, and by XORing coπespondmg columns of the resultmg shifted eπor coπection codes together The data and the check bits (collectively formed by the paπty bit for each logical group and the first and second global eπor coπection codes) are then conveyed through a communication channel or are stored in memory The system further mcludes an eπor coπection unit which is coupled to receive the plurality of data bits and the check bits following storage or transmission The eπor coπection unit is configured to generate a paπty eπor bit for each of the logical groups of data based on the received data bits and the original paπty bits The panty eπor bits mdicate whether a change m panty for each logical group has occuπed The eπor coπection unit is further configured to generate a regenerated first global eπor coπection code in the same manner in which the original first global eπor code is derived, usmg the received data Thus, in one embodiment, the regenerated first global eπor coπection code is equivalent to the result of generatmg an mdividual eπor coπection code for each logical group (of the received data), and XORing them together A first global syndrome code is then generated by XORmg the original first global eπor coπection code with the regenerated first global eπor coπection code Subsequent operations of the eπor coπection unit are dependent upon whether an odd number of the parity eπor bits is asserted or an even number of the panty eπor bits asserted. In one particular embodiment, in response to detectmg that an odd number of the parity eπor bits are asserted, the eπor coπection unit uses a binary value of the first syndrome code to determine the bit position of any eπors withm any of the logical groups. Usmg this information, the eπor coπection unit may coπect the eπors by inverting the values at the positions mdicated as bemg eπoneous. In an alternative operation, in response to detectmg that an even number of the panty eπor bits are asserted, the eπor coπection unit determines whether the first syndrome code has an all-zeros value. If not, the eπor coπection unit generates an eπor signal mdicatmg that an uncoπectable eπor m the data exists. This condition will occur whenever any uncoπectable double-bit eπor m the data block is present (l e , when two bits in different positions in any of the logical groups have eπors) On the other hand, if the first global syndrome code has an all-zeros value, the eπor coπection unit determines whether any of the panty eπor bits are asserted. If not, the data is determined to be coπect as received If any of the panty eπor bits are asserted, the eπor coπection unit generates a regenerated second global eπor coπection code m the same manner m which the origmal second global eπor coπection code is deπved Thus, m one embodiment, the regenerated second global eπor coπecnon code is equivalent to the result of (or may be denved by) shiftmg the regenerated eπor coπection code for a given ith group by I bit positions, wherem l = 0 to X-l, and by XORmg coπespondmg columns of the resulting shifted eπor coπection codes together A second global syndrome code is then generated by XORmg the origmal second global eπor coπection code with the regenerated second global eπor coπection code. The eπor coπection unit then uses the binary value of a row syndrome code denved from the second global syndrome code to determine the position of an eπor in any of the logical groups for which an eπor is mdicated (pursuant to the coπespondmg paπty eπor bits), and coπects the eπors, if present In alternative embodiments, the second global syndrome code (rather than the first syndrome code) is also used to determine the position of coπectable eπors when an odd number of the paπty eπor bits is set. In general, the first global syndrome code is generated such that it is indicative of situations m which two bit eπors m different bit positions within the logical groups are present in the received data In such situations, the first global eπor coπection code is different from the regenerated first global eπor coπection code. In the embodiment descnbed above, if the first syndrome code is not an all zeros value when an even number of panty eπor bits is set, a double bit eπor is indicated. In other embodiments, other predetermined values of the first syndrome code may mdicate a double bit eπor In addition, in general the second global syndrome code is generated such that, with knowledge of the specific logical groups that have a smgle bit eπor, a value indicative of the location of the eπor in such groups may be denved from the global syndrome code The overall number of bits forming the global syndrome code and the panty bits for each logical group is smaller than the overall number of bits needed for the eπor coπection codes individually associated with the logical groups The system accommodates the detection of arbitrary double-bit eπors in the data block while performing coπection of eπors due to component failures Advantageously, the overall number of required check bits (the paπty bits for the logical groups and the bits formmg the first and second global eπor coπection codes) may be smaller than the overall number of bits needed to implement a system usmg extended Hammmg codes. BRIEF DESCRIPTION OF THE DRAWINGS Other objects and advantages of the mvention will become apparent upon readmg the following detailed description and upon reference to the accompanying drawmgs m which: Figure 1 (prior art) is a block diagram illustrating a paπty generator to encode data bits using a smgle eπor coπectmg Hammmg code; Figure 2 (prior art) is an assignment table to compute a set of check bits; Figure 3 (pnor art) is an illustration of bit positions and their content for a data block encoded by the panty generator of Figure 1 ; Figure 4 (pπor art) is an assignment table for generatmg a syndrome code; Figure 5 is a block diagram of a system mcludmg an eπor control unit according to one embodiment of the present mvention; Figure 6A illustrates an encodmg process including the generation of row parity bits and row eπor coπection codes, Figure 6B illustrates a manner in which a global eπor coπection code may be generated; Figures 7A and 7B collectively form a flow diagram depicting operation of one embodiment of an eπor coπection system; Figure 8 A illustrates a manner m which a set of row panty eπor bits and a regenerated untwisted global eπor coπection code may be generated, Figure 8B illustrates a manner m which an untwisted global syndrome code may be generated; Figures 9A, 9B, 9C, 10A, 10B, 11A, 1 IB, 12A, 12B, 12C and 12D illustrate further examples of the generation of row panty eπor bits, untwisted global eπor coπection codes, twisted global eπor coπection codes, untwisted global syndrome codes, and twisted global syndrome codes, Figure 13 is a block diagram of a system mcludmg a lmear shift unit for decodmg a data block; Figure 14 is a functional block diagram of a lmear shift unit, Figures 15-21 illustrate an exemplary generation of a row syndrome code, Figures 22 and 23 illustrate a flow diagram illustrating one embodiment of a lmear decode process, Figures 24-31 are assignment tables illustrating the operation of a set of check bits m accordance with another embodiment of the mvention; Figures 32-39 are assignment tables illustrating the generation of a set of row parity eπor bits and regenerated twisted check bits for the embodiment of Figures 20-27, Figure 40 illustrates a lmear decode process; and Figure 41 is a block diagram of a system m accordance with another embodiment of the present mvention While the mvention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawmgs and will herein be descnbed m detail It should be understood, however, that the drawmgs and detailed descnption thereto are not mtended to limit the mvention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling withm the spirit and scope of the present invention as defined by the appended claims DETAILED DESCRIPTION OF THE DRAWINGS Turning now to Figure 5, a block diagram of a system mcludmg an eπor control unit 105 is shown accordmg to one embodiment of the present mvention In this particular embodiment, the eπor control unit 105 is coupled to convey and receive data from storage 110 The storage 110 is configured to store a data block (data bits and check bits) that is communicated from/to the eπor control unit 105 The storage 110 mcludes a plurality of memory chips 1 lOA-l 10M Each of the memory chips 1 lOA-l 10M is configured to store a portion of the data block The memory chips 1 lOA-l 10M may be any type memory/ storage devices usable to store data As will be described m further detail below, eπor control unit 105 is configured to encode data to be stored m the storage 110, and to decode received encoded data following storage to coπect and/or detect certain categones of bit eπors (when they occur) usmg a relatively small number of check bits as compared with traditional approaches The eπor control unit 105 mcludes a check bits generation unit 120 to perform the encodmg process and an eπor coπection unit 130 to perform the decodmg process and to perform eπor coπection Data bits are received via data path 151 and are encoded by check bits generation unit 120 pnor to storing a data block (data bits and check bits) mto storage 110 via data path 152 Subsequently, the stored data block may be retneved by eπor coπection unit 130 via data path 153 Eπor coπection unit 130 decodes the data block to detect and coπect eπors in the data If one or more coπectable eπors are detected, the eπors are coπected The data bits (coπected, if necessary) are then output via data path 155 If an uncoπectable eπor is detected, an eπor signal is asserted at lme 156 It is noted that check bits generation unit 120 and eπor coπection unit 130 may be implemented m hardware, m software, or usmg a combmation thereof Vanous specific implementations are possible The operation of eπor control unit 105 will next be explamed with reference to Figures 5-8 Figures 6A- 8B illustrate an example wherem a total of 20 data bits to be stored in storage 110 are protected Figures 6A and 6B illustrate an encodmg process performed by the check bits generation unit 120 pπor to the storage of the data bits Check bits generation unit 120 receives the 20 data bits (via data path 151) and, in this example, processes the data accordmg to five logical groups, each group formmg a respective row R0 - R4, as shown in Figure 6A A set of columns denoted D4, D3, D2, and DI is formed by coπespondmg bit positions of each row As will be descnbed m further detail below, the data formmg each column is stored m the same memory chip, and different bits of each row are stored m different memory chips Check bits generation unit 120 is configured to generate a panty bit (PPR) for each of the rows The set of panty bits may be calculated usmg either even or odd panty Smce one panty bit is calculated per row, or logical group, the number of PPR bits equals the number of rows In the example of Figure 6A, even panty is used Thus, for the exemplary data as illustrated, each of the panty bits (PPRs) for rows R0-R3 is 1 The paπty bit for row R4 Check bits generation unit 120 is further configured to generate a first global eπor coπection code and a second eπor coπection code Generally speaking, the first global eπor coπection code is equivalent to, or may be derived from, a first predetermined logical combmation of eπor coπection codes each individually associated with a respective row Similarly, the second global eπor coπection code is equivalent to, or may be derived from, a second predetermined logical combmation of eπor coπection codes each individually associated with the respective row Figures 6A and 6B illustrate a particular manner m which the first and second global eπor coπection codes may be generated by check bits generation unit 120 It is noted that the first and second global eπor coπection codes may be generated differently in other embodiments Figure 6 A illustrates an eπor coπection code (ECC) associated with each row In the example of Figure 6A, the eπor coπection code for each row is calculated accordmg to the assignment table shown in Figure 2 For example, the eπor coπection code calculated for the data m row RO is [111], and the eπor coπection code calculated for row Rl is [011], and so on It is noted, however, that other specific eπor coπection coding techniques may be employed for the mdividual rows, and that different eπor coπection coding techniques may be associated with differing rows As illustrated m Figure 6A, in this embodiment the first global eπor coπection code is equivalent to the result of XOR g the collection of individual eπor coπection codes together The first global eπor coπection code m this embodiment is refeπed to as an "untwisted" global eπor coπection code (UGECC), due to the fact that each bit of the UGECC is equivalent to or is deπved from a combmation of aligned (and unshifted) coπespondmg bits of the mdividual eπor coπection codes As illustrated in Figure 6B, in this embodiment the second global eπor coπection code is generated by selectively shiftmg certam row ECCs with respect to one another and XORmg the resultmg vertically aligned bits Smce some of the row ECCs are shifted more than others, the bits formmg the second global eπor coπection code are refeπed to as "twisted" check bits, and the second global eπor coπection code is refeπed to as a "twisted" global eπor coπection code (TGECC) In the embodiment of Figure 6B, the second global eπor coπection code is deπved by linearly shiftmg the eπor coπection code for a given ith group by l bit positions wherem l = 0 to X-l, and where X is the total number of rows or logical groups The bits m each resultmg vertically aligned column are then XORed together, to thereby generate the global eπor coπection code (leadmg or trailing 0s may be added to the entries of each row of the twisted ECCs, as necessary, prior to this XOR operation) It is noted that while the first and second global eπor coπection codes may be calculated by first generatmg the mdividual eπor coπection codes for each row, in other embodiments, the first and second global eπor coπection codes may be generated directly from the data bits (I e , without generating mdividual coπection codes for each row) For example, the first and second global eπor coπection codes illustrated in Figures 6A and 6B could be generated directly from the data bits usmg predetermined functions, without generatmg mdividual eπor coπection codes for each row Upon calculation of the untwisted and twisted global eπor coπection codes (UGECC and TGECC), the data block mcludmg 20 bits of data, the parity bits (PPRs) and the global eπor coπection codes are conveyed to storage 110 It is noted that the bits formmg each column (D4, D3, D2, and DI) of data m the data block are stored m a common memory chip, and that no two data bits in differing bit positions of a particular row are stored m the same memory chip It is further noted that the panty bits and untwisted and twisted global eπor coπection codes may be stored m additional memory chips A further example of the manner in which the paπty bits and the bits formmg the untwisted and twisted global eπor coπection codes may be distributed for storage withm vaπous memory chips will be provided further below in conjunction with Figures 22-37 It is further noted that in the example of Figures 6A and 6B, a total of 15 check bits (the paπty bits (PPRs) and the bits of the first and second global eπor coπection code) are generated for storage along with the 20 data bits This overall number of check bits is advantageously less than the number of check bits may be required usmg conventional methods Referring now to Figures 7A - 13B, the decodmg process of the data block following storage will next be explamed Figures 7A and 7B collectively form a flow diagram depicting operation of the eπor coπection system As illustrated m Figure 7A, after check bits generation unit 120 receives data duπng step 202, generates the parity bits (PPRs) and the first and second global eπor coπection codes (UGECC and TGECC) durmg step 204, and stores or transmits the data block upon step 206, the data block is retneved or received by eπor coπection unit 130 (step 208) At this pomt, the decoding process begms As illustrated m Figure 8 A, eπor coπection unit 130 processes the data accordmg to the same logical groups as formed by check bits generation unit 120 Eπor coπection unit 130 may be configured to generate a regenerated paπty bit per row (PPR') usmg the received data The same parity type (even or odd) is used duπng both encodmg and decodmg In the example of Figure 8 A, three eπors are introduced mto the received data set, all occurring m column D2, as shown with underlines in rows R0, Rl and R3 (l e , the bits m rows R0, Rl and R3 of column D2 have been changed to exemplify eπors) Such eπors could be the result of, for example, a faulty memory chip that stores the column D2 bits of the data set Thus, for this example, the regenerated panty bits for rows R0, Rl and R3 change state A bit for each row mdicatmg that a panty eπor exists, refeπed to as a row paπty eπor bit (RPE), may be generated by XORmg the oπgmal panty bits with the regenerated panty bits (step 210) It is noted that generation of the row panty eπor bits (RPEs) may instead be generated directly by XORmg coπespondmg bits of the received data bits with the oπgmal parity bits (PPRs) (without separately generating the regenerated paπty bits (PPRs)) The row panty eπor bits RPEs illustrated in Figure 8A reflect the smgle bit eπors in rows R0, Rl and R3 Eπor coπection unit 130 also generates a regenerated first global eπor coπection code in the same manner m which the onginal first global eπor coπection code was generated, usmg the received data bits Thus, as illustrated m Figure 8A, m the depicted embodiment the regenerated first global eπor coπection code is equivalent to the result of XOR g a set of mdividual eπor coπection codes based on the received data bits The regenerated first global eπor coπection code in this embodiment is refeπed to as the regenerated untwisted global eπor coπection code (or the regenerated UGECC) Eπor coπection unit 130 subsequently generates a first global syndrome code based upon the onginal first global eπor coπection code and the regenerated first global eπor coπection code dunng step 212 In one embodiment, as illustrated in Figure 8B, the first global syndrome code is generated by an exclusive OR of the onginal UGECC and the regenerated UGECC This first global syndrome code is thus refeπed to as an "untwisted" global syndrome code (UGSC) At step 214 of Figure 7 A, eπor coπection unit 130 determines whether an even number or an odd number of row paπty eπor bits (RPEs) is asserted For the example illustrated in Figure 8 A, smce a total of three row panty eπor bits is asserted (an odd number), the eπor coπection unit 130 uses the binary value of the untwisted global syndrome code UGSC (taken in reverse order with respect to the depicted value m Figure 8B) to determine the position of an eπor in any of the logical groups (e g , any rows) that have eπors, pursuant to the row panty eπor bits Therefore, m this example, the untwisted global syndrome code has a value of "110" (read backwards), which is binary six This value coπelates to the bit position D2, as illustrated in Figure 3, which coπesponds to the position of the eπors introduced m the example of Figure 8 A Upon determination of the eπoneous bits in the received data set, the eπor coπection unit 230 is configured to coπect the data bits, as needed (step 213) For example, m the example of Figure 8 A, the bits in column D2 of rows RO, Rl, and R3 are identified as bemg eπoneous Accordmgly, eπor coπection unit 230 inverts these bits and accepts or outputs the data as coπected via data output 155 (step 217) Figure 9 A illustrates a similar example in which two eπors (rather than three) are introduced mto the received data set, both occurring in column D2, as shown with underlmes m rows Rl and R3 In this situation, eπor coπection unit 130 again generates a set of row paπty eπor bits (RPEs) and a regenerated "untwisted" global eπor coπection code (regenerated UGECC) during step 210 As illustrated m Figure 9B, eπor coπection unit 130 also generates an untwisted global syndrome code (UGSC) by XORmg the oπgmal UGECC with the regenerated UGECC (step 212) In this example, the generated "untwisted" global syndrome code (UGSC) is all zeros Since in the example of Figure 9A, an even number of row panty eπor bits is asserted (step 214), the eπor coπection unit 130 determines whether the untwisted global syndrome code (UGSC) is an all zeros value (step 216) As illustrated m Figure 9B, smce the UGSC is an all zeros value, the eπor coπection unit 130 subsequently determines whether any of the row eπor paπty bits (RPEs) are asserted (step 220) In this example, the row paπty eπor bits for rows Rl and R3 are asserted Thus, the eπor coπection unit 130 generates a regenerated second global eπor coπection code in the same manner in which the ongmal second global eπor coπection code was generated, usmg the received data bits Thus, m this embodiment, a regenerated twisted global eπor coπection code is generated (step 222) by shiftmg the eπor coπection code for a given ith group by l bit positions, where l = 0 - X-l, and by XORmg the bits m the resulting vertically aligned columns, as depicted m Figure 9C Similar to the previous discussion, m other embodiments, the regenerated twisted global eπor coπection code may be deπved directly from a predetermined function of the received data bits, without generatmg an mdividual eπor coπection code for each row In such embodiments, however, the twisted global eπor coπection code is equivalent to a predetermined combmation of a set of eπor coπection codes each individually associated with a coπespondmg row As shown m Figure 10A, upon generation of the regenerated twisted global eπor coπection code (the regenerated TGECC), a second global syndrome code may be generated by XORing the origmal second global eπor coπection code with the regenerated second global eπor coπection code (step 224) In this embodiment, the second global syndrome code is refeπed to as a twisted global syndrome code (TGSC) The second global syndrome code is indicative of a difference between the oπgmal second global eπor coπection code and the regenerated second global eπor coπection code In embodiments m which the eπor coπection codes for vanous logical groups are effectively shifted m a twisted manner and are XORed, the second global syndrome code mcludes a bit coπespondmg to each aligned column of the regenerated shifted eπor coπection codes which mdicates whether a paπty eπor for that column exists For instance, m the example of Figure 10A, the bits m the twisted global syndrome code (TGSC) for positions 2, 3, 4 and 5 are set This is the result of the fact that the panty m each of columns 2, 3, 4 and 5 of the shifted regenerated eπor coπection codes of Figure 9C is different from the panty of each of the coπespondmg columns of the origmal shifted eπor coπection codes, as depicted in Figure 6B Accordingly, in this embodiment the twisted global syndrome code includes a bit coπespondmg to each aligned column of the regenerated shifted eπor coπection codes which mdicates whether a paπty eπor for that column exists Since the regenerated eπor coπection codes for the logical groups that have eπors (assuming the untwisted global syndrome code is an all-zeros value) will mcur changes at exactly the same bit positions, by shifting in a twisted manner the various eπor coπection codes and XORing the resultmg bit aligned columns, the coπelation that exists with respect to changes in the eπor coπection codes for logical groups that have eπors may be exploited to thereby extract information mdicatmg the specific positions of the eπors For example, Figure 10B illustrates a manner m which a set of row syndrome codes, each of which is indicative of the position of an eπor in a given row, may be generated usmg the twisted global syndrome code and the row parity eπor information (step 226) As illustrated m Figure 10B, entnes (initially unfilled) for each row syndrome code are provided by shiftmg the entries in the same manner m which the eπor coπection codes were shifted to generate the twisted global eπor coπection code First, the row syndrome codes for any rows that do not have eπors can be filled in with all "0" values (since rows without eπors could not contnbute to a panty eπor in any given column, as identified by the twisted global syndrome code) Thus, the row syndrome code entnes for rows RO, R2, and R4 can be filled in with all "0" values As depicted in Figure 10B, the first row with an eπor is row Rl Smce the first bit of the row syndrome code for row Rl is m column position 1, and smce the global syndrome value for that bit position is 0 and the only other contπbutmg value for that bit position of the twisted global syndrome code is deπved from the row syndrome code for row R0 (which is already known to be "0"), the value of the first bit of the row syndrome code for row Rl can be filled in as "0" Additionally, smce the row syndrome code for every row with an eπor is known to be identical, the first bit of the row syndrome code for row R3 can also be filled m as a "0" Subsequently, the second bit of the syndrome code for row Rl may be similarly determined by considering the value in bit position 2 of the global syndrome, and the values of the bits m position 2 of rows 0 and 2 (l e , the last bit of the row syndrome code for row R0 and the first bit of the row syndrome code for row R2) In this situation, the value of the second bit of the row syndrome code for row Rl may be filled in as a "1" Again, this value is also reflected in the second bit of the row syndrome code for row R3 The last bit of the row syndrome codes may be determined similarly The binary value of the row syndrome codes (taken m reverse order with respect to the depicted values in Figure 10B) mdicates the position of the eπor for logical groups that have eπors Therefore, m this example, the value "110", which is binary 6, coπelates to bit position D2, as shown m Figure 3 This position coπesponds to the position of the eπors introduced in the example shown m Figure 9A Upon determination of the eπoneous bits in the received data set, the eπor coπection unit 230 is configured to coπect the data, as needed For example, m the example of Figure 9A, the bits m column D2 of the rows Rl and R3 are identified as bemg eπoneous Accordmgly, eπor coπection unit 230 inverts these bits and outputs the data as coπected via data output 155 Figure 11 A illustrates a further example in which two eπors are introduced mto a smgle logical group (l e , row) More particularly, in Figure 11A, the bits in positions D3 and D2 of row Rl have eπors In this case, all of the row panty eπor bits are zero, since the double-bit eπor occurs in the same row Rl In addition, m this case, the regenerated untwisted global eπor coπection code is "000" As illustrated m Figure 1 IB, after the untwisted global syndrome code is generated dunng step 212, the eπor coπection unit 130 determines that an even number (0) of row parity eπor bits is asserted in this case, durmg step 214 Thus, the eπor coπection unit 130 determines whether the untwisted global syndrome code an all-zeros value, as depicted m Figure 1 IB, smce the untwisted global syndrome code is not an all-zeros value, an eπor signal is generated durmg step 230 to mdicate the existence of the double-bit eπor Figure 12A illustrates another example m which a double-bit eπor is introduced, one appearing m column D2 of row R0 and the other appearing at column D4 of row R4 As illustrated m this example, the row panty eπor bits for rows R0 and R4 are set Additionally, the regenerated untwisted global eπor coπection code is "010" Smce an even number of row paπty eπor bits is asserted (step 214), the eπor coπection unit 130 determines whether the untwisted global syndrome code is an all-zeros value As illustrated m Figure 12B, smce the untwisted global syndrome code is not an all-zeros value, the eπor coπection unit 130 generates an eπor signal dunng step 230 to indicate the presence of the double-bit eπor Turning finally to Figure 12C, an example is illustrated wherem no eπors are introduced mto the data set Thus, m this example, none of the row panty eπor bits are set, and the regenerated untwisted global eπor coπection code is "110" As illustrated m Figure 12D, the untwisted global syndrome code is therefore "000" Smce the eπor coπection unit 130 determines that an even number of row parity eπor bits is asserted duπng step 214, the eπor coπection unit 130 determines whether any of the row paπty eπor bits are set durmg step 220 Smce m this case, none are set, the eπor coπection unit 130 accepts the data as bemg coπect Turning next to Figures 13-23, a manner m which the row parity information and the twisted global syndrome code may be decoded to generate the row syndrome code is next considered More particularly, as illustrated m Figure 13, eπor coπection unit 130 may employ an RPE/global syndrome code generation unit 131 and a lmear shift unit 132 for decodmg a received data block which is encoded usmg the lmear shiftmg methodology as descnbed above A functional block diagram illustrating functional aspects of the lmear shift unit 132 is illustrated in Figure 14 As shown, lmear shift unit 132 mcludes a control unit 135 coupled to a pair of shift registers 133 and 134 The various functionality illustrated m Figures 13 and 14 may be implemented m hardware, m software, or usmg a combmation thereof The RPE/global syndrome code generation unit 131 generates the row panty eπor bits (RPEs), the untwisted global syndrome code (UGSC) and the twisted global syndrome code (TGSC) in accordance with the foregomg descnption usmg the received data block If an even number of the row parity eπor bits (RPEs) is set, the row parity eπor bits and the global syndrome code are provided to the lmear shift unit 132 to determine the row syndrome code The operation of the lmear shift unit 132 is explamed with reference to Figures 15-21, along with the flow diagrams of Figures 22 and 23 As illustrated m Figure 15, shift register 133 mcludes a plurality of cells RPE[0 4] for stormg the row paπty eπor bits (RPEs) for rows 0-4, respectively Similarly, shift register 134 mcludes a plurality of cells TGSC[0 6] for stormg the twisted global syndrome code Referring collectively to Figures 15 and 22, initially, the row panty eπor bits RPEs are loaded into shift register 133, and control unit 135 determines whether the shift register contains all "0"s (steps 310 and 330) If shift register 133 contams all 0s, thus mdicatmg that no smgle bit row eπors exist, no data eπor is reported, and the data is output from the eπor control unit (step 340) On the other hand, if one or more row parity eπor bits are set, the twisted global syndrome code is loaded mto shift register 134 (step 350) Figure 16 illustrates the contents of shift registers 133 and 134 at this pomt m the methodology for the exemplary RPEs and twisted global syndrome code generated for the example associated with Figure 10B The content of the right-most cell of shift register 133 (cell RPE[0]) is then determined dunng step 360 If the value m the nght-most cell RPE[0] of the shift register 133 is "0", the contents of both the shift register 133 and the shift register 134 are shifted one bit position to the right (step 370) The left-most paπty m each of these registers is padded with a "0", and the values which are shifted from the nght-most positions are discarded This process repeats until the value m the nght-most cell RPE[0] of register 133 is a "1" Figure 17 illustrates the resultmg values m shift registers 133 and 134 following this operation for the exemplary codes At this pomt, the bit value m the nght-most cell of the register 134 is recorded as row syndrome code bit RSC[0], as is also shown in Figure 17 (step 380) If all the row syndrome code bits have not yet been determined (step 390), a determination is made as to whether the last recorded row syndrome code bit was 1 If not, the contents of shift register 134 are agam shifted by one position to the nght (step 44) , and the process repeats On the other hand, if the last row syndrome code bit recorded was 1, aligned bit positions of the first and second shift registers are XORed and the result is stored m the second shift register 134 (steps 420 and 430) In the illustrated example, the most recently recorded row syndrome code bit was "0", and thus the contents of the second shift register 134 are shifted by one position to the nght (step 440), and the process repeats by recording the value in the nght-most position of register 134 as the next RSC bit, as illustrated m Figure 18 Dunng the next iteration, smce the last recorded RSC bit was "1", the value m shift register 133 is XORed with the value m shift register 134 (step 420) and the result is stored m shift register 134, as illustrated m Figure 19 The contents of register 134 are agam shifted by one position to the nght as illustrated m Figure 20 (step 440) and the resultmg bit in the nght-most position of shift register 134 is recorded as the next RSC bit, as illustrated in Figure 21 (step 380) When all bits of the row syndrome code have been determined, the process ends (step 400) The row syndrome code is indicative of the position of the eπor for any rows with an eπor In the illustrated example, the binary value of the row syndrome code is 6 Referring to Figure 3, bit position 6 coπesponds to column D2, which is the position of the eπors introduced in the example of Figure 9A It is noted that alternative embodiments of the lmear shift decode methodology descnbed m conjunction with Figures 13-23 are possible For example, rather than nght shiftmg the values m shift registers 133 and 134, the values may be left shifted m a similar manner to denve the row syndrome code It is also noted that the received check bits may be decoded usmg other mechanisms For example, mechanisms employmg Gaussian Elimination could be used to decode the row parity eπor bits and the twisted global syndrome code to denve a row syndrome code It is additionally noted that m vanous embodiments, one of the rows (or logical groups) may be omitted m the calculation of the twisted global eπor coπection code and the regenerated twisted global eπor coπection code For example, m the illustration of Figures 6A and 6B, the eπor coπection code information relatmg to row R4 may be omitted from the generation of the twisted global eπor coπection code In such embodiments, the twisted global eπor coπection code, the regenerated twisted global eπor coπection code, and the twisted global syndrome code may each be expressed using one fewer bit If a smgle bit eπor occurs m the logical group omitted m the calculation of the twisted and untwisted global eπor coπection codes, the position of the eπor may still be determined usmg the untwisted global syndrome code. Figures 24-39 are tables which illustrate another embodiment of a system which employs the linearly shifted technique for global syndrome code generation as described above. In the embodiment depicted by Figures 24-39, 262 bits of data are protected with 26 check bits. The code is defined m terms of 288-bit blocks The data bits within a block are denoted D[261 :0]. The 26 check bits within a block consist of 8 panty bits P[7:0] an untwisted global eπor coπection code consisting of 6 regular (untwisted) check bits R[5.0], and a twisted global eπor coπection code consisting of 12 twisted check bits T[l 1.0]. The 288-bit block is divided mto eight groups, denoted G[0] through G[7], each of which contams 36 bits. This code can coπect one eπor per group G[0] through G[7], provided that all of the eπors occur in the same position within each group. The code can further detect arbitrary double-bit eπors, as descnbed above. The paπty bits P[7:0], the regular check bits R[5:0], and the twisted check bits T[l 1:0] are calculated accordmg to the tables of Figures 24-31. Each table lists the 36 bit positions within the group and the contents of each bit position. For example, G[0][0] contams P[0], G[0][29] contains D[27], and G[l][02] contams T[2], and so on. The remammg rows m each table give the rules for calculatmg the check bits. Each check bit is the exclusive- or of certam values. More particularly, the values which contnbute to a particular check bit are mdicated usmg a "1" at the appropnate positions m the tables. For example, panty bit P[0] is the exclusive-or of G[0][35 1]. Smce the panty bits P[7:0] depend upon certam ones of the check bits R[5 0] and T[l 1:0], the check bits R[5.0] and T[l 1 :0] can be calculated before calculatmg the paπty bits P[7 0]. Similarly, smce the regular check bits R[5:0] depend upon certam ones of the twisted check bits T[l 1 0], the twisted check bits T[l 1.0] can be calculated first, and subsequently the regular check bits R[5:0]. Alternate rules for calculating the panty eπor bits and the check bits directly from the data, and in any order, can also be denved. It is noted that m this example, there are total of 36 entnes m each group. Accordmgly, the system may be constructed such that a total of 36 memory chips are used, each stormg a bit from a coπespondmg position of each group. When the data are received, paπty eπor bits Q[7 0] and regenerated check bits S[5:0] and V[l 1:0] (the regenerated untwisted and twisted global eπor coπection codes) are calculated by takmg the exclusive-or of the received values, m accordance with the assignment tables of Figures 32-39. In addition, a global panty eπor bit Q may be calculated taking the exclusive-or of Q[7:0] In certam cases, it is necessary to generate a row syndrome U[5:0] (i.e., the row or group syndrome code). This untwisted syndrome is a function of V[l 1.0] and Q[7.0]. As illustrated m Figure 40 and like the previous example, the untwisted syndrome U[5:0] can be calculated usmg parallel shift registers, 333 and 334, which are similar to the registers 133 and 134 illustrated m Figure 15 Shift register 333 contams 7 cells, A[6 0], and shift register 334 contams 12 cells, B[l 1:0]. Each cell holds a smgle bit. The shift registers 333 and 334 are separately controlled When a shift register is made to shift, it transfers the contents of each cell one position to the nght, outputs the value that was m its right-most cell, and loads a "0" mto its left-most cell. Similar to the previous descnption, it is also possible to calculate the XOR of shift register 333 and shift register 334 and store the contents mto shift register 334 (shift register 333 is logically padded with 0s m positions 11:7 when the XOR is computed). The untwisted row syndrome U[5 0] is calculated as follows 1 Load Q[ι] in cell A[ι], 0< l < 6, and load V[ι] in cell B[ι], 0 < l < 1 1 2 While A[0] contams 0 a Shift both shift register 333 and shift register 334 nght one position, discardmg the values shifted out 3 For l = 0 through 5 a Set U[ι] = B[0] b If B[0] = 1 , calculate the XOR of shift register 333 and shift register 334 and place the result m shift register 334 (that is, By] = A[ ] XOR B|j], 0 < j < 6) c Shift shift register 334 nght one position, discardmg the value shifted out Given Q, Q[7 0], S[5 0] and U[5 0], eπors are coπected as follows The descnption of what type of eπor has occuπed assumes that the eπors are within the considered type (namely 1 or 2 eπors in arbitrary locations or 0 to 8 eπors, all in the same position within their group) 1 IfQ = 0 a IfS[5 0] = 00000000 l If Q[7 0] = 00000000, no eπor has occuπed n If Q[7 0] ≠ 00000000, a coπectable eπor has occuπed Complement the bits in all locations of the form G[ι][j], 0 < I < 7, 0 <j < 35, where Q[ι] = 1 and = U[5 0] (viewed as a binary number) (If U[5 0] > 35, an uncoπectable eπor not in the class of considered eπors has occuπed) b If S[5 0] ≠ 00000000, an uncoπectable eπor has occuπed 2 If Q = 1 A coπectable eπor has occuπed Complement the bits in all locations of the form G[ι]|j], 0 < i < 7, 0 < j < 35, where Q[ι] = 1 and j = S[5 0] (viewed as a binary number) (If S[5 0] > 35, an uncoπectable eπor not m the class of considered eπors has occuπed) It is noted that no eπor has occuπed if Q[7 0] = 00000000 and S[5 0] = 000000 It is also noted that U[5.0] only needs to be calculated m case l.a n (which mdicates a coπectable eπor has occuπed) In the embodiment illustrated by Figures 22-37, the twisted global eπor coπection code formed by twisted check bits T[ 11 :0] are generated directly from a predetermined combmation of the data bits Each twisted check bit T[l 1.0] is stored at a position within each group such that it is the only check bit that covers that position. For example, as illustrated in Figure 32, the twisted check bit TO is stored at position G[0][01], and is the only check bit which contπbutes to the regenerated twisted check bit V[0], and so In addition, it is noted that the paπty bits P[7:0] for each data group mclude certam twisted check bits stored within that group. Smce the panty bits are stored within position [00] of the vanous groups, further efficiency may be attained. Alternative embodiments are also possible For example, m another contemplated embodiment, the eπor coπection codes generated for the logical groups are "cyclically" shifted (rather than linearly shifted) and are XORed together to denve the shifted global eπor coπection code as well as the regenerated shifted eπor coπection code. In addition, it is noted that in other embodiments, path "C" of the flow diagram of Figure 7B may be omitted In such embodiments, when an odd number of panty eπor bits are asserted, the position of an eπor may be determined usmg the twisted global syndrome code. Finally, Figure 41 illustrates an embodiment wherem a data block protected in accordance with the foregomg techniques is conveyed through a plurality of communication channels 410A... 410M. Each communication channel 410A-410M is illustrative of, for example, a wire or other transmission medium. Similar to the previous embodiments, different bits in each logical group are conveyed through different communication channels. While the present mvention has been descnbed with reference to particular embodiments, it will be understood that the embodiments are illustrative and that the mvention scope is not so limited. Any vanations, modifications, additions and improvements to the embodiments descnbed are possible. These vanations, modifications, additions and improvements may fall within the scope of the mvention as detailed within the following claims.

Claims: Claims: 1 A system for detectmg and coπectmg data eπors, comprising a check bits generation unit for receivmg a plurality of data bits, wherem said check bits generation unit is configured to generate a paπty bit coπespondmg to each of a plurality of groupmgs of said data bits, and wherem said check bits generation unit is configured to generate a first global eπor coπection code indicative of a first predetermmed combmation of a set of eπor coπection codes each individually associated with a coπespondmg one of said plurality of groupmgs, and wherem said check bits generation unit is configured to generate a second global eπor coπection code indicative of a second predetermmed combmation of said set of eπor coπection codes; an eπor coπection unit coupled to receive said plurality of data bits, said panty bit for each of said plurality of groupmgs, said first global eπor coπection code, and said second global eπor coπection code, wherem said eπor coπection unit is configured to generate a paπty eπor bit for each of said plurality of groupmgs of said data bits as received, and wherem said eπor coπection unit is configured to generate a first global syndrome code based upon said first global eπor coπection code to determine the existence of double- bit eπors at different positions m any of said plurality of groupmgs if an even total number of paπty eπor bits of said plurality of groupmgs is asserted, and wherem said eπor coπection unit is configured to generate a second global syndrome code based upon said second global eπor coπection code to determine a position of an eπor if an even total number of paπty bits of said plurality of groupmgs is asserted. 2 The system as recited m Claim 1 wherem said first global eπor coπection code is equivalent to an exclusive OR of said set of eπor coπection codes. 3 The system as recited m Claim 2 wherem said first global syndrome code depends upon a difference between said first global eπor coπection code and a regenerated first global eπor coπection code 4 The system as recited m Claim 3 wherem said second global syndrome code depends upon a difference between said second global eπor coπection code and a regenerated second global eπor coπection code 5 The system as recited m Claim 4 wherem, if an even total number of paπty eπor bits of said plurality of groupmgs is set, and if said first global syndrome code is not equal to a predetermmed value, said eπor coπection unit is configured to responsively generate an eπor signal. 6 The system as recited m Claim 5 wherem said predetermmed value is an all-zeros value 7. The system as recited m Claim 6 wherem, if an even total number of parity eπor bits of said plurality of groupmgs is set, and if said first syndrome code is equal to said all-zeros value, said eπor coπection unit is configured to responsively use a value of a row syndrome code to determme a position of an eπor within each of said plurality of groupmgs of said data bits, wherem said eπor coπection unit is configured to denve said row syndrome code from said second global syndrome code 8. The system as recited m Claim 7 wherem, if an odd total number of parity eπor bits of said plurality of groupmgs is set, said eπor coπection unit is configured to responsively use a value of said first syndrome code to determme a position of an eπor. 9. The system as recited m Claim 1 wherem said first global eπor coπection code is equivalent to a predetermined function of said set of eπor coπection codes. 10. The system as recited m Claim 9 wherem each bit of said first global eπor coπection code is equivalent to an exclusive OR of a predetermined set of bits of said set of eπor coπection codes. 11. The system as recited m Claim 1 wherem said first global eπor coπection code is denved by bit-wise shiftmg at least some of said eπor coπection codes and by XORmg aligned bits of a plurality of resultmg shifted eπor coπection codes. 12. The system as recited m Claim 11 wherem said plurality of data bits mclude a total of X groupmgs, and wherem said first global eπor coπection code is denved by shifting said eπor coπection code for a given ith group by l bit positions, wherem l = 0 to X-l, and by XORing a plurality of resulting shifted eπor coπection codes together. 13 The system as recited m Claim 12 wherem said second global eπor coπection code is denved by linearly shifting said eπor coπection code for said given ith group by I bit positions. 14. The system as recited m Claim 12 wherem said second global eπor coπection code is denved by cyclically shifting said eπor coπection code for said given ith group by l bit positions. 15. The system as recited in claim 1 wherem said eπor coπection unit is further configured to coπect eπors withm any of said plurality of groupmgs due to a smgle component failure 16. The system as recited m claim 1 further compnsmg a component mto which said plurality of data bits, said panty bit for each of said plurality of groupmgs, and said first and second global eπor coπection codes are conveyed pnor to bemg provided to said eπor coπection unit. 17 The system as recited in claim 16 wherem said component mcludes a plurality of memory chips. 18. The system as recited in claim 16 wherein said component mcludes a plurality of communication paths. 19. The system as recited m claim 17 wherem each bit withm a particular groupmg of data bits is stored m a separate memory chip, whereby no two bits of any given groupmg are stored withm the same memory chip. 20. The system as recited m claim 19 wherem bits at coπespondmg positions withm the said plurality of groupmgs are stored withm the same memory chip. 21. The system as recited m claim 1 wherem said eπor coπection code for each of said plurality of groupmgs is a smgle eπor coπection Hammmg code. 22. A system for detectmg and coπecting data eπors, compnsing: a check bits generation unit for receiving a plurality of data bits, wherem said check bits generation unit is configured to generate a panty bit coπespondmg to each of a plurality of groupmgs of said data bits, and wherem said check bits generation umt is configured to generate an untwisted global eπor coπection code indicative of a first combmation of eπor coπection codes each individually associated with a coπespondmg one of said plurality of groupmgs, and wherem said check bits generation u t is configured to generate a twisted global eπor coπection code indicative of a second combmation of eπor coπection codes each individually associated with a coπespondmg one of said plurality of groupmgs; an eπor coπection unit coupled to receive said plurality of data bits, said panty bit for each of said plurality of groupmgs, and said untwisted and twisted global eπor coπection codes, wherem said eπor coπection unit is configured to generate a paπty eπor bit for each of said plurality of groupmgs of said data bits as received, and wherem said eπor coπection umt is configured to generate an untwisted global syndrome code based upon said untwisted global eπor coπection code to determme the existence of double-bit eπors at different positions in any of said plurality of groupmgs if an even total number of paπty eπor bits of said plurality of groupmgs is asserted, and wherem said eπor coπection umt is configured to generate a twisted global syndrome code based upon said twisted global eπor coπection code to determine a position of an eπor if an even total number of paπty bits of said plurality of groupmgs is asserted. 23. A method for coπecting data eπors compπsmg: receiving a plurality of data bits; generating a panty bit coπespondmg to each of a plurality of groupmgs of said data bits; generating an untwisted global eπor coπection code indicative of a first combmation of eπor coπection codes each individually associated with a coπespondmg one of said plurality of groupmgs; generating a twisted global eπor coπection code indicative of a second combmation of eπor coπection codes each individually associated with a coπespondmg one of said plurality of groupmgs; receivmg said plurality of data bits, said parity bit for each of said plurality of groupmgs, and said untwisted and twisted global eπor coπection codes; generatmg a paπty eπor bit for each of said plurality of groupmgs of said data bits as received, and if an even total number of panty eπor bits of said plurality of groupings is set, generating an untwisted global syndrome code based upon said untwisted global eπor coπection code to determine the existence of double-bit eπors at different positions m any of said plurality of groupings; and if an even total number of parity eπor bits of said plurality of groupmgs is asserted, generatmg a twisted global syndrome code based upon said twisted global eπor coπection code to determine a position of an eπor. 24. The method as recited m Claim 23 wherem said unshifted global eπor coπection code is equivalent to an exclusive OR of said eπor coπection codes 25. The method as recited in Claim 24 wherem said shifted global eπor coπection code is denved by bit- wise shifting at least some of said eπor coπection codes and by XORing aligned bits of a plurality of resultmg shifted eπor coπection codes. 26. The method as recited m Claim 25 wherem said plurality of data bits mclude a total of X groupmgs, and wherem said global eπor coπection code is deπved by shifting said eπor coπection code for a given ith group by l bit positions, wherem l = 0 to X-1, and by XORmg a plurality of resulting shifted eπor coπection codes together. 27 The method as recited m Claim 26 further compnsmg generating a row syndrome code dependent upon said twisted global syndrome code if said even total number of panty eπor bits is set, wherem said row syndrome code is a value which mdicates said position of said eπor

Inventors: CYPHER ROBERT, CYPHER, ROBERT
Applicants: SUN MICROSYSTEMS INC, SUN MICROSYSTEMS, INC.
Application year: 2000
Main classification: G06F11
IPC codes: G06F11, H03M13