ERROR DETECTION AND CORRECTION SYSTEM FOR USE WITH ADDRESS TRANSLATION MEMORY CONTROLLER

Abstract: A data transmission system for use in a mass memory system (41) includes a unique EDAC (36) which corrects all single component errors and detects all double component errors. High speed operation permits use of the EDAC (36) on address and control lines as well as on data lines. In memory systems (41) which use virtual memory addressing, further efficiency and economy is achieved by incorporating a partial implementation of the EDAC (36) encoding in the same virtual memory address translation unit (20) in which virtual memory address are calculated. False indications of error are avoided by ANDing the signals which indicate the location of an error, with an inclusive OR of all the bits which indicate the existence of the error but not the location of the error. In such manner, the error location signals are set to zero when the error detection bits indicate that there are no errors.

Description: ERROR DETECTION AND CORRECTION SYSTEM FOR USE WITH ADDRESS TRANSLATION MEMORY CONTROLLER Field of the invention The present invention relates to error detection and correction codes for use m detecting and correcting block errors Background of the Invention Errors are generated in digital systems from a variety of sources . Noise or individual connections can cause errors on any individual data bit, control line, or address b t. Many codes have been devised for detecting and correcting single and multiple bit errors Certain types of failures cause multiple b t errors occurring in a group, i.e , adjacent bit errors. A typical example is a chip failure, in which all of the bits handled by the chip are m error For example, in a memory using memory chips organized as "by 4" or "by 8" (4 bits per address or 8 bits per address) , a single chip failure results in up to 4 (or 8) adjacent bits being in error As another example, a 64 bit address bus may by driven by bus drivers organized with 4 drivers on one chip, or 16 driver chips One bus driver chip failure causes up to 4 adjacent address bits to be in error. A similar group of adjacent errors occur if the power supply connection to an otherwise good ch p fails or becomes intermittent As memory arrays become larger using larger data word lengths in larger addressed memory space, the reliability of large arrays declines because there are more memory chips and address bits to fail In critical missions, such as low orbit communications satellites, the probability of performing for the life of the satellite without an error becomes unacceptably low Thus, it is particularly important m an error detection and correction system to detect and/or correct errors caused by chip (module) failures In particular, it is desired to detect and correct 100% of all single component failures, and detect and identify all or most all double component failures In addition, it is also desired to protect address and control line signals as well as data However, address and control lines require near real time error detection and correction in order not to slow down the system In U.S. patent 3,562,709 to Snnivasan, an error correction scheme is disclosed for detecting 100% of all single module failures In Srinivasan, the information bits are divided into subsets with the following properties 1) a particular information bit appears only once in a subset, 2) each information bit appears in exactly two different subsets, 3) no two subsets of information bits have more than one particular bit in common, and 4) the number of subsets must be a prime number The subsets are arrayed in an error code matrix used for check bit generation and error detection and correction Each module contains a check bit The check bit is generated in each subset as a parity bit by the exclusive OR (modulo 2 sum) of all information bits in the subset The information data bits and the check bits are then transmitted from a source to a destination such as from the memory to the central processor, or back At the destination, the data is checked by generating syndrome bits in an exclusive OR logic array, and checking for characteristic patterns A bit within a module is m error if the two subsets containing that bit both indicate a parity error Furthermore, any other bits from the same module which are also in error will cause a different pair of subsets to indicate a parity error in both subsets. Since each bit within a module contains unique and separate pairs of subsets, all errors occurring solely within a single module can be corrected However, Srinivasan specifically limited the number of check bits equal to a prime number in order to be able to generate the matrix m an orderly manner by cyclically shifting and rotating bits m a vertical direction Furthermore, Srinivasan required the use of one check bit per module As a result, m Srinivasan, the number of check bits must be equal to the number of modules which must be equal to a prime number However, due to the constraints by which Srinivasan constructs his error code matrix, some double module errors appear as correct data, a condition which should never be allowed to occur Furthermore, due to the dimensional limitations imposed by Srinivasan as necessary conditions for constructing the error code matrix, the module size is not a power of two, thus making an error detection and correction system more expensive to construct from custom parts, or resulted m wasted capacity or more circuit connections if constructed from commercially available parts These constraints limited the range of useful codes and was wasteful of memory That is, for useful word lengths, Srinivasan did not provide for full utilization of memory Summary of the Invention The present invention is embodied in an error detection and correction (EDAC) system in which the numerical constraints imposed by Srinivasan are overcome The unique EDAC of the present invention corrects all single component errors and detects all double component errors, some of which double component errors are detected as single component errors That is, no double component error looks like correct data In particular, new classes of error codes are formed by providing an error code matrix having a number of subsets not equal to a prime number. A second new class of error codes are formed by providing a nonsymmetrical error code matrix having a number of subsets not equal to the number of modules The constraints of having each information bit appearing in exactly two different subsets, and no two subsets of information bits have more than one particular bit in common, is still met, but the number of check bits s less than the number of modules Even so, all single module errors are corrected. In such manner, in some cases more efficient EDAC codes are generated with fewer check bits for a given number of information bits Furthermore, improved performance in detecting double module errors is obtained by distributing the fewer check bits more evenly throughout the error code matrix In this second class of error codes, the number of check bits for a given number of data bits will be the same if the number of check bits is prime number. Further, yet another new class of error codes are formed by providing unused bits in some modules and distributing such unused bits more or less evenly throughout the error code matrix The above constraints of having each information bit appearing in exactly two different subsets, and no two subsets of information bits have more than one particular bit in common, is still met, but yet improved performance in detecting double module errors is effected by use of the unused bits. In another aspect of the present invention, for memory systems including virtual memory addressing, a memory address translation unit further incorporates a partial implementation of the EDAC encoding In a virtual memory system, memory management is typically achieved by the use of a memory address translation unit. The operating system of the central processor loads the memory address translation unit during the loading of an application program in order to translate the application program generated virtual addresses into actual memory system physical hardware addresses The higher order virtual address bits are the input to the memory address translation unit with the higher order physical address bits being its output The lower order address bits from the virtual address are used unmodified and are the lower order address bits of the physical address The EDAC encoding is integrated into the memory address translation unit so that both the virtual address translation and the EDAC encoding are carried out in one process, thus saving cost and improving speed In yet another aspect of the present invention, unused data bits are used as parity bits to reduce the number of error combinations in which double module errors appear as single module errors One unused data bit is used as a parity bit over all the data bits The use of a parity bit over the data is used to distinguish such cases as the case of two check bits being in error indicating a correctable error occurring in a single data bit in a third module If a second unused data bit is available, such as in the case of a 128 bit, 19 by 19 matrix, an independent parity bit on the check bits is used The additional parity bit over the check bits is used to distinguish the case of a data bit error and a check bit error (in different groups) appearing as a single module, correctable error In the later case, both parity bits (a first parity bit over the data and a second parity bit over the check bits) indicate an error Finally, the present invention is embodied m an EDAC system in which a false indication of error is avoided by ANDmg each of the error logic (EL) signals which indicate the location of an error, w th an inclusive OR of all the syndrome bits (Ss) which indicate the existence of an error but not the location of the error In such manner, the ELs are set to zero when the Ss bits indicate that there are no errors Brief description of the figures Figure 1 is a block diagram of a computer memory system in accordance with the present invention Figure 2 is an error code generation matrix or table showing the composition of check bit equations for an EDAC code for a 152 bit wide memory system having 19 modules, using the prior art Srinivasan method of error detection and correction. Figure 3 is an error code generation matrix or table showing the composition of check bit equations for an EDAC code, and the grouping of bits into physical modules of a 128 bit w de memory system having 19 modules, in accordance with the present invention figure 4 is an error code generation matrix or table showing the composition of check bit equations for an EDAC code and the grouping of bits into physical modules for a 64 bit wide memory system having 20 modules using a method according to the present invention The matrix or table of figure 4 also shows the syndromes that result from several different cases of error detection and correction Figure 5 is a logic diagram illustrating the logic circuit derived from the first line of figure 4, in the check bit generation table, for use in an error detection and correction in accordance with the present invention. Figure 6 is an error code generation matrix or table showing the composition of the check bit equations for an EDAC code for a 32 bit address Figure 6A is an error code generation matrix or table showing the composition of check bit equations for an EDAC code for a 44 bit wide memory system having 11 modules and eleven check bits, using the prior art Srinivasan method of error detection and correction Figure 6B is a modified error code generation matrix or table showing the composition of check bit equations for an EDAC code for a 33 bit wide memory system having 11 modules and eleven check bits, in accordance with the present invention Figure 6C is a modified error code generation matrix or table showing the composition of check bit equations for an EDAC code for a 33 bit wide memory system having 11 modules and 10 check bits, in accordance with the present invention. The check bit Cl will always be zero since all of the data bits in the equation are zero as shown in the top row of the matrix of figure 6C. Figure 7 is a logic diagram, partially m block form that illustrates the simultaneous and parallel operation of page translation and error detection and correction check bit generation m the addressing of a computer system according to the method of the present invention Figure 8 is an alternate embodiment for an error code generation matrix or table showing the composition of the check bit equations for an EDAC code used in the system of figure 9. Figure 9 is an alternate embodiment of a logic diagram, partially in block form that illustrates the simultaneous and parallel operation of page translation and error detection and correction check bit generation in the addressing of a computer system according to the method of the present invention Figure 10 is a logic diagram of the error logic using the calculated syndrome bits to indicate an error condition for column 10 of figure 4 Figure 11 is a logic diagram of the error logic using the calculated syndrome bits to indicate an error condition for column 11 of figure 4 Figure 12 is a chart showing the state of the error logic signals for the 20 columns of figure 4 Figure 13 is chart showing the state of the error logic signals for the 20 columns of figure 4 using a correction logic circuit Figure 13A is a logic circuit for performing correction logic to avoid a false indication of error when all the syndrome bits are equal to zero. Figure 14 illustrates m summary form, the relationship between the number of syndrome bits equal to a logic one, and the numbers of error logic signals equal to a logic one. DETAILED DESCRIPTION Whole System Overview The overall construction of a memory system built according to the method of the present invention is shown in figure 1. A processor (not shown) generates a virtual address composed of upper order bits designating a virtual page 12 and lower order bits designating an offset 14 that points to a particular word within a page The processor also generates a control code 10 that commands the memory system to perform an operation, such as to read or write a word or portion of a word. In addition, the processor generates data 16 that s to be written into the memory system or receives data that is read from the memory system. The memory operation commanded by the processor is effected by a memory controller 17 composed of a translation table 20, a check bit generator 18 for control code 10, partial check code logic 30 for the offset 14 of the address, final address check code logic 34, and two way error detection and correction (EDAC) logic 36 for data to and from the memory The translation table 20 in the memory controller contains a record for each virtual page that is loaded into real (physical) memory Each record contains the virtual page designator 22, the corresponding real page designator 24, the memory module control bits 26 needed to activate the correct memory module selection switch 27, and bits resulting from a previously loaded partial computation of the address check code field 28 The memory controller 17 acts through the main bus 38 of the system to control multiple memory modules. Each memory module 41 is composed of a memory array 46, local timing and control logic 44, EDAC logic 40 for control codes, and EDAC logic 42 for addresses The system may contain multiple memory controllers that arbitrate to gain use of the multiple memory modules, and each memory controller may be dedicated to a single processor or one or more processors may share one or more memory controllers. In operation, each of data, address and control signals are protected in real time by the EDAC logic system in accordance with the present invention. The check bit generator 18 adds check bits to the control code 10 and places the result on main bus 38. EDAC logic 36 computes check bits to be included with the data on the main bus 38. Address check bits are computed in two parts: virtual and offset. Check bits for the offset portion of the virtual address are computed by partial code check logic 30. Check bits for the virtual page portion of the virtual address are combined with the function of the address translation table, represented by partial check code field 28. The error protected address, (virtual page and offset) and the check bits for the address is placed on the main bus 38. At the memory module 41, the received control code is processed to check for any transmission errors in a control code EDAC circuit. The checked and/or corrected control code is provided to the timing and control logic 44. Similarly, the received address from the main bus 38 is processed in an address EDAC circuit. The checked and/or corrected address is applied to memory array 46. Received data and corresponding EDAC bits is stored together with its EDAC bits in memory array 46. It is also feasible to combine the control signals and the address bits into one number space and implement an EDAC by a single error code. During a memory read operation, the EDAC encoding and decoding of address and control signals is the same as for a memory store operation above. However, for a read operation, the data received from the memory array 46 is applied to the two way EDAC logic 36. In such manner, the integrity of the stored data is checked. That is, what was previously stored in the memory should be the same as what is now received from the memory. Errors in transmission or storage are detected and corrected if necessary, by the EDAC system. ERROR DETECTION AND CORRECTION OF ADDRESS BITS Typically in the prior art, the address translation table and EDAC encoding is performed m series. First a physical, real, address is generated from the virtual address, then the check bits are generated for the physical address which is the placed on the address bus. Having two processes occur in series, increases the length of the memory cycle which m turn reduces the maximum transfer rate between the memory array 46 and the central processor. In the present invention, the EDAC logic and the virtual address translation are integrated into the same operation. During system initialization, when the operating system is setting various system parameters m accordance the system hardware configuration, one of the initialization steps is to load the translation table memory 20 of the virtual memory controller 17. In the present invention, the operating system pre-computes some of the EDAC bits needed for the physical address bits, in effect, reducing delay time during computer operation The physical address bits have two component parts (physical page and offset) that need to be encoded whether separately or together to provide the error control desired. If the EDAC process is performed on the address in two separate pieces, the bits stored in the address translation table would require separate check bits just for the bits of the physical page address, and the bits of the offset address would require separate check bits just for the offset address. Both encoding processes of the address would take place in parallel. In the preferred embodiment shown in figure 1 (and in further detail m figures 7 and 9) , the physical page address and the offset address are encoded together with common check bits over the entire physical address The operating system pre-computes a partial error check code field 28 to be stored in the address translation table 20, as a first stage At the same time, another first stage partial error check code operation is performed in hardware, in the partial error check code logic 30. The two first stage partial error check code results are combined in a second stage partial error check encoder, to compute the final physical address check code 34 By pre- computmg a partial error check code field in the address translation table, the final address check code generation 34 requires only one gate level delay (as further illustrated m figures 7 and 9) In such manner, the address EDAC encoding delay time is being hidden and performed in parallel with the virtual page address translation delay time As a result of sharing the virtual page address translation delay time with partial EDAC encoding, the advantages of having EDAC coding on the address lines is obtained without the speed penalty normally associated with adding EDAC capability EDAC Principles The primary purpose of error detection and correction (EDAC) in the present invention is to detect and correct any number of bit errors contained within a single module (called single module error) A secondary purpose of the EDAC in the present invention is to detect, but not correct, a collection of bit errors that occur in more than a single memory module (called a multiple module error) The EDAC process can be described by a set of equations. Each bit of a check code is computed by an equation giving the exclusive OR (or modulo 2 sum) of a subset of the data bits to be protected Each bit of a syndrome code, which indicates the type and possibly the exact location of errors, is computed by an equation giving the exclusive OR (or modulo 2 sum) of a subset of both data and check code bits THE METHOD OF SRINIVASAN Figure 2 is a matrix or table of the EDAC equations for an example of the method of Srinivasan, which s the closest prior art to the present invention This example protects data in a memory system composed of 19 physically separate 9 bit wide memory modules arranged in parallel to get a memory system with a 152 bit wide data word plus 19 check bits for a total data path width of 171 bits The entries in the table beginning with ' C indicate check bits and the numbers are numerical designators of the 152 data bits Each row of the table is associated with a check bit equation and a corresponding syndrome bit equation The check bit equation defines the single check bit in that row as the exclusive OR combination of all the data bits in the row at the time when they are stored, and the corresponding syndrome equation defines the syndrome bit as the exclusive OR combination of all of the data bits in the row at the time when they are retrieved with the check bit for that row For example, the check bit equation associated with the first row is C2 =D24 / ®D31 'ΘD38 I ®D45>ΦD52'ΘD59 / ΘD66'<$D73' ®D81 ' D90 '®D99 '®D108 '®D117 '®D126 '®D135 '®D144 ' [EQ 1] where D indicates a data bit and Φ is a symbol for exclusive OR (the quotes exist only to match designators in figure 5 ) . T h e a s s o c i a t e d s y n d r o m e b i t e q u a t i o n i s Cl =D24"ΦD3l "@D38"®D45"®D52"®D59"®D66"@D73" ®D8l "®D90"®D99"®D108"®D117"®D126"@D135"®D144" [EQ 2 ] where S indicates a syndrome bit and the double quotes indicate the retrieved value of the bits, as opposed to the values written (which may or may not be equal) Each column of the table is associated with a physical 9 bit wide memory module The eight data bits and one check bit indicated in each column are the nine bits that are stored in the physical module associated with that column A table, such as figure 2, showing EDAC equations for the Srinivasan method is composed according to the following additional rules I The number k of rows and columns must be the same prime number (ic = 19 in figure 2 ) II One column (for example, column 10 in figure 2) is defined with its check bit at the center position and two entries of each data bit in symmetrical positions above and below the check bit There will remain two null entries arranged in symmetrical positions above and below the check bit III Each of the other k- 1 columns of the table has its eight data bits and one check b t arranged in positions that are a cyclical permutation of the arrangement in the first column formed (For example Start with column 10 in figure 2 Reduce the check bit designator by one and all data bit designators by eight to get the bits to be placed in column 9 Shift every bit up by one position, wrapping the bit m the top position around to the bottom position The result is column 9 of figure 2. Column 8 is formed similarly from column 9, etc Columns above 10 are formed in like manner but with down shifts instead of up shifts. ) Any combination of errors in the data bits and check bits of a single column are analyzed (and corrected) by examining the syndrome bits computed from the rows of the table in the manner of Equation 2 For the example of figure 2, there is a syndrome SI, Ξ2, S3, S4, S5, S6, Ξ7, S8 , S9, S10, Sll, S12, S13, S14, S15, S16, S17, S18 and S19 When this syndrome s a string of all zeros, there are no errors When one or more of the bits are one, the particular pattern of the syndrome w ll determine whether there s a correctable single module error or an uncorrectable multiple module error The rules used to form the table of check bit equations result in the following important property: each data bit appears in exactly two different rows, and no two data bits appear in the same two rows Because of this, each possible single bit error will generate a unique 2-of-k code n the syndrome (For example, if data bit 81 is bad in the example of figure 2, then the syndrome = 1100000000000000000 ) Each data bit is corrected by inverting its retrieved value if the 1 bits of its unique 2-of- code are seen m the computed syndrome, provided that examination of the whole syndrome does not determine that there is an uncorrectable multiple module error (For example, retrieved data bit 81 in the example of figure 2 is inverted f , where * s the logical AND operation ) The examination of the syndrome to decide between single module errors and multiple module errors can be implemented by a table of single bit entries indexed by all possible syndromes (2 19 bits in the example of figure 2) with a zero entry for single module errors and a one entry for multiple module errors. For example, if all of the bits in the first module were bad in the example of figure 2, the syndrome would be and the corresponding entry would be zero for single module errors, but if bits 8 and 16 were bad, the syndrome would be 0011000000000000011 and the corresponding entry would be one for multiple module error. Note that it is possible for an actual multiple module error to be incorrectly detected as an single module error (for example, if bits 81 and 65 are bad in the example of figure 2, the syndrome will be 1100000000000000011, and this is the same syndrome generated when bits 73 and 74 are bad m the same module 10.) However, these cases are a small percentage of the possible multiple module errors and multiple module errors are rare compared to single module errors. Note that not all check equations are involved when there are bits in a block which are in error (where there are zeros in the column and where the check bit is n the column) . To locate an error, both check equations containing a particular bit will indicate an error if the bit is in error. The same will be true of all pairs of check equations corresponding to the other bits in the same block as the particular example bit. It is also true, that none of the check equations, where there are no bits of the example block, will indicate an error. (If they do then a multiple block error conditions has occurred) . It is possible, but of little consequence, if the check equation containing the check bit that is in the example block indicates an error m the check bit. Syndrome bit logic to indicate an error condition for columns 11 and 12 in figure 2 are as follows: S12 either 1 or 0 3. THE NEW METHOD FOR 8 BIT WIDE MODULES Since the implementation of 9 bit wide memory modules is generally more expensive than the implementation of 8 bit wide modules, because of more standard 8 bit wide components, a modification and improvement is desirable to the Srinivasan method described above A table of check bit equations according to such an improved method is given in figure 3 This table is formed from a Srinivasan table, like the one shown in figure 2, by using one less data bit in each column (corresponding to a module) , leaving two additional null positions per column This leaves 152 - 19 = 133 data bits Since standard processors require memory widths of 2, 4, 8, or 16 bytes of 8 bits each, the number of bits is further reduced to 128 by removing an additional data bits from each of columns 8 through 12 (shown with X' s in the table) , leaving 128 bits (16 bytes) of data These five removed bits actually correspond to five unused bits in memory because all physical modules are identical 8 bit wide units The arrangement of bits in the physical modules is shown at the bottom of figure 3 While this improved method is less efficient in that the ratio of the number of non data bits (check bits and unused bits) to the number of data bits is higher than the Srinivasan method, this is more than compensated by the improved economy of standard components Furthermore, additional null entries in the table mean that fewer of the possible 2 syndrome codes represent correctable single module errors This means that the probability that a multiple module error will be mistaken for a single module error (a very serious failure) will be even lower than in the corresponding Srinivasan example (Simulation shows that this last effect of the improved method is strengthened when data bits are removed evenly across the columns, that is, one bit is removed from each column before a second bit is removed from any column, a second bit from each column before a third bit is removed from any column and so on Some simulation data also indicates that performance is slightly improved by spreading the columns with one fewer bit as far apart as possible, not grouped together as in figure 3 ) THE NEW METHOD FOR 4 BIT WIDE MODULES Four bit wide memory components are also quite standard, and sometimes more economical than 8 bit wide components, it is desirable to have a method for error detection and correction for 4 bit wide memory modules. Such a method is defined by the first 20 columns of the table in figure 4. This arrangement has twenty 4 bit wide modules containing 15 check bits, 64 data bits, and one unused bit. The arrangement of the bits in the physical modules is shown at the bottom of figure 4. This new EDAC method is a radical departure from prior art because: The number of rows and columns is not equal and neither is a prime number. 2. The columns are not cyclical permutations of one another. The significant property of the check bit equation tables are: each data bit appears in exactly two different rows, and no two data bits appear in the same two rows. Thus there is a 2-σf-Λ: (2-of-15 in this case) syndrome code generated for each single bit error, as before. Furthermore, the single module error case can still be distinguished from the multiple module error case by the syndrome calculation. Syndrome bit logic to indicate an error condition for columns 10 and 11 in figure 4 are as follows : For column 10 errors 51 = Sll and 52 = S10 and 512 = S15 and 513 = S14 and 53 = 0 and 54 = 0 and 55 = 0 and 56 = 0 and 57 = 0 and 58 = 0 and 59 = 0 Figure 5 shows a logical circuit implementation of the table of figure 4 The small numbers with single quote marks represent data bits to be stored The small numbers with double quote marks are retrieved data bits Exclusive OR gates 48, 50, 52, and 54 compute the first check bit Cl Similar circuits exist for all other check bits The check bits and data bits are stored in the memory modules 56. Exclusive OR gates 58, 60, 62, and 64 compute the syndrome bit SI from the retrieved data and check bits Similar circuits exist for all other syndrome bits The 15 bits of the syndrome are input to an error decision logic array 66 that contains an error decision logic This logic decodes the 2-of-15 codes that indicate bit inversions m the output data implemented by 64 exclusive OR gates, of which four (68, 70, 72, and 74) are shown in figure 5 The output of error decision logic 66 shown in figure 5 illustrates a correctable single module error case corresponding to syndrome column CE of figure 4 The total syndrome does not indicate a uncorrectable error, and the one' s in the syndrome indicate inversion (correction) of bits 34 and 35 If the circuits of figure 5 were to generate the syndrome of column OK of figure 4, there would be no errors and no bit inversions If the circuits of figure 5 were to generate the syndrome of column UE of figure 4, there would be an uncorrectable error indicated and none of the output data could be trusted Implementation of the error logic (EL) using the calculated syndrome bits to indicate an error condition for column 10 in figure 4 is shown in figure 10 In particular, error logic bit EL10 is generated by exclusive OR gates 104, 106, 108 and 110 and OR gate 102 The output of the above four exclusive OR gates are equal to zeros if S1=S11, S2=S10, S12=S15 and S13=S14 Also, S3-S9 are input to OR gate 102 The output of OR gate 102, NOT EL10 (inverted) , is equal to logic one if any of the inputs to OR gate 102 is equal to a one The output of inverter 112 is EL10 will be equal to a one if the errors occur m column 10 of figure 4, or if there are no errors anywhere. The next step is to identify the error condition and locate the error For no errors, all EL's (ELI through EL20, since there are 20 column in figure 4) are equal to ones. For an error in column 10, EL10 is equal to a one and all other EL's are equal to zeros For errors m multiple columns, all EL's will be equal to zeros To correct an error: 1 Locate the column containing the error. 2. Correct the errors as follows To correct D30 (ELlO-Sl)Φ D30 or use (EL10-Sills D30 (EL10-S2)® D29 or use (ELIO-Slθ)θ D29 (EL10 S12)β D31 or use (EL10 S15)β D31 (EL10-S13)* D32 or use (EL10 S14)θ D32 Implementation of the error logic (EL) using the calculated syndrome bits to indicate an error condition for column 11 in figure 4 is shown in figure 11 In particular, error logic bit ELll is generated by exclusive OR gates 116, 118 and 120, and OR gate 114. The output of the latter three exclusive OR gates are equal to zeros if S1=S13, S2=S12, and S3=S11. Also, S4-S8, S10, S14 and S15 are input to OR gate 114 The output of OR gate 114, NOT ELll (inverted) , is equal to logic one if any of the inputs to OR gate 114 is equal to a one. The output of inverter 122 is ELll will be equal to a one lf the errors occur in column 11 of figure 4, or if there are no errors anywhere The error condition is identified and located as follows For no errors, all EL's (ELI through EL20) are equal to ones. For an error in column 11, ELll is equal to a one and all other EL's are equal to zeros. For errors in multiple columns, all EL's will be equal to zeros To correct an error: 1 Locate the column containing the error 2. Correct the errors as follows: To correct D35 (EL11-S1)® D35 or use (EL11-S13)β D35 To correct D34 (EL11-S2)® D34 or use (ELll S12)β D34 To correct D33 (ELll S3)β D33 or use (ELll-Sll)β D33 To correct C9 (ELll S9)β> C9 The table n figure 12 shows the state of the error logic signals (EL) for 20 columns. Syndrome bits S=l indicate an error, while syndrome bιts=0 indicate no error. ELs indicate where the error is located However, with no errors, all ELs will be ones, causing a false indication of error. This anomalous situation can be avoided by ANDing the ELs with an inclusive OR of all Ss (SI through S15) , as shown in the logic diagram of figure 13A and using the output EL' instead of the EL. In such manner, the ELs are set to zero when there are no errors, as shown in the table of figure 13. Figure 14 shows the relationship between the numbers of syndrome (Ss) bits indicating a one, and the numbers of error logic (EL) signals indicating a one Zero S bits and zero EL bits represents no errors and correct data One S bit and no EL bits indicates a single check bit, or one check bit and one data bit in error. Data may be correct More than one check bit and no EL bits indicates multiple module errors, which is an uncorrectable condition Note that zero or one S bit cannot occur with the number of EL bits equal to one A group of errors occurring in a single module is indicated when more than one S bit is one and only one EL bit is one Multiple single module errors are fully correctable. Only the case of no ELs and exactly one S can cause problems The use of a spare bit as a parity bit helps eliminate a number of the troublesome situations If the data parity is good, then there is a single check bit in error and the data is good. If the data parity is bad, then there is one data bit and one check bit in error and the errors cannot be located or corrected. 2. GENERALIZED DESCRIPTION OF NEW EDAC METHOD Given a memory data word width of B bits implemented by an integral number of modules b bits wide, the new EDAC method of the present invention is described by a k by m check bit equation table for which: 1. m = B / b 2 . k is any positive integer such that (Jc)x(k -1)/ 2 is greater than B . [Note that (k) x (k -1) / 2 is the number of possible 2 - of -k codes.] 3. Each row contains one check bit computed from the data bits of that row m the manner of equation 1. 4. Each data bit appears in exactly two rows, and no other data bit appears in the same two rows. In the prior art, each column contained a check bit, i.e., one per memory module. In the present embodiment, there may be more columns than check bits One embodiment is to group all the columns with check bits in one group of adjacent columns, and all the columns without check bits in a second group of adjacent columns However, simulation shows that if the columns without check bits are as far apart from each other as possible, the multiple module error detection is optimized, as compared to the case wherein the columns without check bits are adjacent to each other In other words, it has been found experimentally that spacing the columns more or less evenly throughout the matrix, as compared to unevenly spacing or outright adjacent grouping, reduces the number of multiple module errors which appear as single module errors. Address Translation and EDAC Combined Most modern computer systems implement virtual memory See Mil tmovic, Vel ko, "High Level Language Computer Architecture", published 1989 by Computer Science Press, Inc Virtual memory is a technique that allows programs to be written in a very large address space (for example, 2 32 bytes = 4 gigabytes) , even though the physical memory of the computer system may be considerably smaller (for example, 2 29 bytes = 512 megabytes) To the computer and programmer, the virtual memory space appears large and contiguous The actual, physical memory space is composed of a variety of devices including high speed caches, RAM, ROM and one or more hard disks or other mass memory devices Virtual memory is implemented by programmable memory management hardware, responsive to the address provided by the central processor, to manage the physical switching of memories and make the discontinuous memory hardware appear as one continuous virtual memory space There are many ways to implement virtual memory One way is to provide a programmable memory, loaded for each application program when the application program is put into the computer's main memory for execution which translates between the application program's computed virtual addresses and the real addresses assigned to the application program by the computer's operating system. Figure 7 is a logic diagram partially m block form illustrating virtual address circuitry that maps or translates the larger virtual address to the smaller real address space of each memory device. In the example of figure 7, both the N bit virtual address space and the 32 bit real address space are divided into 128 megabyte (2 27 bytes) 'pages' , or contiguous blocks. The width of the data path to memory is assumed to be 128 bits or 16 bytes. A processor generates a 32 bit virtual address that is composed of a 5 bit virtual page designator 12, a 23 bit offset designator 14 that selects a specific 128 bit word in the page, and a 4 bit pointer to a byte within the word (not shown in figure 7) . The offset designator 14 is connected directly to the main bus to address the memory modules, and also to partial check code logic 30. The virtual page designator 12 is used to index a translation table 20. This translation table 20, maintained by the operating system and implemented with very high speed random access memory, generates a real page pointer 24 to a 128 megabyte page that actually exists in the real (physical) memory modules. The example system is capable of addressing 4 gigabytes, or 32 128 megabyte pages, of real memory, but typically there would be fewer real pages . According to the present invention, the address bits A32 to A5 are protected by error detection and correction (EDAC) following the principles described above. An embodiment of an EDAC code for use with a 32 bit address having 11 check bits is shown in the table of figure 6. Each row of the table in figure 6 defines one of 11 check bit equations. Check bit Cl is pre- computed according to the first row of the table in figure 6, and stored in a partial check code field 28 of the translation table (reference 29 in figure 7) . Check bits C3, C5, C6, C8, and CIO are computed in partial check code logic (30 in figure 7) . The partial check code logic 30 also computes part of the equations for C4 ' , C2 ' , Cll', C9', and C7 ' . These last five check bit computations are completed by final check code logic 34 using the address bits of real page pointer 24 Specifically C4 '=A27@A13®A9@A 7®A6 rpΛ ,, C4 = C4 >®A28 [EQ 4] Check bits C2, Cll, C9, and C7 are computed similarly according to their respective rows in the table of figure 6 Figure 9 is an alternate embodiment of a logic diagram partially in block form illustrating virtual address circuitry that maps or translates the larger virtual address to the smaller real address space of each memory device In the example of figure 9, both the N bit virtual address space and the 32 bit real address space are divided into 64 megabyte (2 16 bytes) ' pages' , or contiguous blocks The width of the data path to memory is assumed to be either 128 bits or 16 bytes, 64 bits or 8 bytes, or 32 bits or 4 bytes for which there is a data EDAC code A processor generates a 32 bit virtual address that is composed of a 16 bit virtual page designator 12, a 16 bit offset designator 14 that selects a specific word in the page, and a pointer to a byte within the word (not shown in figure 9) The offset designator 14 is connected directly to the mam bus to address the memory modules, and also to partial check code logic 30 The virtual page designator 12 is used to index a translation table 20 The translation table 20, maintained by the operating system and implemented with very high speed random access memory, generates a real page pointer 24 to a specific page that actually exists in the real (physical) memory modules The example system is capable of addressing 65K pages According to the present invention, the address bits sent to the memory module are protected by error detection and correction (EDAC) following the principles described above An embodiment of an EDAC code for use with a 32 bit address having 11 check bits is shown in the table of figure 8 Each row of the table in figure 8 defines one of 11 check bit equations. Check bit Cl is pre-computed according to the first row of the table in figure 8, and stored in a partial check code field 28 of the translation table (reference 29 in figure 9) . The partial check code logic 30 also computes part of the equations for C4 ' through Cll ' . The last eight check bit computations are completed by final check code logic 34 using the address bits of real page pointer 24. Check bits C2 , Cll, C9, and C7 are computed similarly according to their respective rows in the table of figure 8. Specifically: Cl = A31 Φ A30 Φ A29 β A28 Φ A27 Φ A26 C2 = A25 Φ A24 Φ A28 Φ A23 Φ A22 © A21 C3 = A20 © A19 Φ A23 Φ A18 β A17 ® A16 PSI = A19 © A29 PS2 = A20 Φ A30 PS3 = A16 Φ A25 PS4 = A21 Φ A31 PS5 = A17 Φ A26 PS6 = A18 Φ A27 PC11 = A5 Φ A2 Φ AO φ A12 PC10 = A8 Φ A4 Φ Al Φ AO φ A15 PC9 = All Φ A7 θ A3 Φ Al PC8 = A10 Φ A6 Φ A3 Φ A2 PC7 = A9 © A6 © A4 Φ A13 PC6 = A9 Φ A7 Φ A5 PC5 = A10 © A8 © A12 Φ A14 PC4 = All ® A15 Φ A14 β A13 C4 = PS6 Φ PC4 C5 = A22 Φ PC5 C6 = PS5 Φ PC6 C7 = PS4 Φ PC7 C8 = PS3 Φ PC8 C9 = PΞ2 Φ PC9 CIO = A24 Φ PC10 Cll = PSI Φ PC11 Alternate embodiments of the present invention are shown in figures 6A, 6B and 6C. In figure 6A, a check bit code generation table constructed in accordance with the prior Srinivasan method is illustrated. In figure 6B, spaces have been created in the table by setting bits D4, D8, D12, D16, D20, D24, D28, D32, D36, D40 and D44 to zero, and renumbering the remaining bits in consecutive order. The effect is to create a shortened matrix with a second diagonal of zeros in the check bit generation table, resulting m 11 check bits, 33 data bits and 4 bits per memory module. Similarly, in figure 6C, spaces have been created in the table by setting bits D4, D8, D12, D15, D18, D21, D25, D30, D35, D40 and D44 to zero, and renumbering the remaining bits in consecutive order. The effect is to create a shortened matrix with a first row of zeros in the check bit generation table, resulting in 10 check bits, 33 data bits and 4 bits per memory module. Check bit Cl is always zero and is therefore eliminated. By removing the constraints imposed by Srinivasan, numerous potentially useful code genertion tables may be constructed. Figure 7 logic uses the check bit generation table of figure 6 to compute the error check bits and EDAC logic for the page address, which is the upper 28 bits of the 32 bit virtual address bits. Figure 8 logic uses the check bit generation table of figures 6C or figure 6 to compute the error check bits and EDAC logic for the page address. In operation for both figure 7 and 9, the bits of the virtual page address 12 is applied to the translation table 20 which generates the real page from a high speed memory. Also the first check bits (Cl for figure 7) or (Cl, C2, C3 for figure 9) is looked up, having been precomputed when the translation table is loaded. The 23 bit offset address 14 (16 bits in figure 9) is applied to a partial check code logic circuit 30 which is typically implemented in dedicated logic consisting of exclusive OR gates. Partial check code logic 30 generates partial check bits C7 ' , C9' , Cll', C2 ' and C4 ' , as well as final check bits C3, C5, C6, C8 and CIO (also PS4-PS11 for figure 9) . The computation of the final check bits C7, C9, Cll, C2 and C4, (C4-C11 for figure 9) require exclusive OR logic 34 with only one or two gate delays. In figure 9, version 1 of the final address check code generator 34 has two gate delays . Version 2 corresponds to the one gate delay final address check code generator 34 from figure 7. The advantage of the virtual memory arrangement illustrated m figures 7 and 9 is that part of the check bit computations are completed in parallel with the operational delay of the translation table 20. Thereafter, final check bit encoding requires only the gate delay of exclusive OR functions of the final address check code logic 34. Prior art methods did not add check bits to the address bits, but instead performed all check bit computation after the address translation, which added substantially to the memory access delay. In the present invention, the sharing of circuit delay for both virtual address translation and partial EDAC encoding, allows effective EDAC encoding of the address bus without significant increase in the access delay of the virtual memory system. Although the check bit generation table used in the foregoing embodiment computes check bits across the whole virtual address, i.e. across both virtual page address 12 and offset page address 14, a separate EDAC may be used for the virtual page address 12 , with another EDAC used or the offset address 14. The partial check code field 28 would generate check bits ust for the real page address. The partial check code logic 30 would generate check bits just for the offset address. As a result, the final address check code 34 would be eliminated. While the virtual address translation technique is illustrated for use with the disclosed EDAC logic, it also may be used with other EDAC codes.

Claims: What is claimed is 1 A method for correcting errors in the transmission of information bits said method comprising, arranging said information bits into subsets such that each information bit is included in two subsets, to form a pair of subsets, and no two information bits are contained within the same pair of subsets, and wherein the number of subsets is other than a prime number, generating a check bit for each subset of said information bits wherein the number of check bits is other than a prime number, transmitting said check bits and said information bits as a plurality of blocks of bits, each of said plurality of blocks consisting of a group of information bits and no more than one check bit which is not associated with any information bit in its block, receiving said plurality of blocks and generating the exclusive OR of said bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors in only a single block of said plurality of blocks, producing responsive to said syndrome pattern, a plurality of error indicator outputs indicative of whether there is an error in one or more of said information bits, and producing responsive to said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits 2 A method for correcting errors in the transmission of information bits, said method comprising selecting subsets of said information bits where said subsets are rows in a matrix having columns and rows, each column of said matrix containing information bits selected such that each information bit is included in two rows, to form a pair of rows, and no two information bits are contained within the same pair of rows and wherein the number of subsets is other than a prime number, generating a parity bit for each row of said matrix corresponding to each said subset of information bits wherein the number of parity bits is other than a prime number; transmitting a plurality of blocks of bits, each of said plurality of blocks of bits consisting of the information bits in each respective column of said matrix and no more than one parity bit which is not associated with any information bit said respective column, receiving said plurality of blocks for generating the exclusive OR of said bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors in only a single block of said plurality of blocks; producing responsive to said syndrome pattern a plurality of error indicator outputs indicative of whether there is an error in one or more of said information bits, and producing responsive to said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits 3 A method for correcting errors in the transmission of information bits said method comprising, arranging said information bits into subsets such that each information bit is included in two subsets, to form a pair of subsets, and no two information bits are contained within the same pair of subsets, generating a check bit for each subset of said information bits, transmitting said check bits and said information bits as a plurality of blocks of bits, each of said plurality of blocks consisting of a group of information bits, and wherein the number of check bits is not equal to the number of said plurality of blocks, whereby some of said plurality of blocks have a check bit and others of said plurality of blocks have no check bit, receiving said plurality of blocks and generating the exclusive OR of said bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors in only a single block of said plurality of blocks, producing responsive to said syndrome pattern, a plurality of error indicator outputs indicative of whether there is an error m one or more of said information bits, and producing responsive to said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits 4 A method m accordance with claim 3, where the number of said plurality of blocks of bits is greater than the number of said check bits, and wherein at least two of said others of said plurality of blocks which have no check bit are spaced apart and have at least one of said plurality of blocks which has a check bit therebetween 5 A method for correcting errors in the transmission of information bits, said method comprising selectmg subsets of said information bits where said subsets are rows in a matrix having columns and rows, each column of said matrix containing information bits selected such that each information bit is included in two rows, to form a pair of rows, and no two information bits are contained within the same pair of rows; generating a parity bit for each row of said matrix corresponding to each said subset of information bits; transmitting a plurality of blocks of bits, each of said plurality of blocks of bits consisting of the information bits in each respective column of said matrix, and wherein the number of parity bits is not equal to the number of said plurality of blocks, whereby some of said columns have a parity bit and others of said columns have no parity bit; receiving said plurality of blocks for generating the exclusive OR of said bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors in only a single block of said plurality of blocks; producing responsive to said syndrome pattern a plurality of error indicator outputs indicative of whether there is an error in one or more of said information bits; and producing responsive to said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits. 6. A method in accordance with claim 5, where the number of said plurality of blocks of bits is greater than the number of said parity bits, and wherein at least two of said others of said columns which have no parity bit are spaced apart and have at least one of said columns which has a parity bit therebetween. 7 A method for correcting errors in the transmission of information bits said method comprising; arranging said information bits into subsets such that each information bit is included in two subsets, to form a pair of subsets, and no two information bits are contained within the same pair of subsets, generating a check bit for each subset of said information bits, transmitting sa d check b ts and said information bits as a plurality of blocks of bits, each of said plurality of blocks consisting of a group of information bits, and wherein the number of check bits is not equal to the number of said plurality of blocks, whereby some of said plurality of blocks have a check bit and others of said plurality of blocks have no check bit, and further wherein at least two of said plurality of blocks have at least one unused bit; receiving said plurality of blocks and generating the exclusive OR of sa d bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors in only a single block of said plurality of blocks, producing responsive to said syndrome pattern, a plurality of error indicator outputs indicative of whether there is an error in one or more of said information bits, and producing responsive to said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits 8 A method in accordance with claim 7, where the number of said plurality of blocks of bits is greater than the number of said check bits, and wherein said two of said plurality of blocks having at least one unused bit are spaced apart and have at least one of said plurality of blocks which has a check bit therebetween 9 A method for correcting errors in the transmission of information bits, said method comprising selecting subsets of said information bits where said subsets are rows in a matrix having columns and rows, each column of said matrix containing information bits selected such that each information bit is included two rows, to form a pair of rows, and no two information bits are contained within the same pair of rows, generating a parity bit for each row of said matrix corresponding to each said subset of information bits, transmitting a plurality of blocks of bits, each of sa d plurality of blocks of bits consisting of the information bits in each respective column of said matrix, and wherein the number of parity bits is not equal to the number of said plurality of blocks, whereby some of said columns have a parity bit and others of said columns have no parity bit, and further wherein at least two of said columns have at least one unused bit, receiving said plurality of blocks for generating the exclusive OR of said bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors in only a single block of said plurality of blocks, producing responsive to said syndrome pattern a plurality of error indicator outputs indicative of whether there is an error m one or more of said information bits, and producmg responsive to said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits 10 A method in accordance with claim 9, where the number of said plurality of blocks of bits is greater than the number of said parity bits, and wherein said two of said others of said columns which have an unused bit are spaced apart and have at least one of said columns which has a parity bit therebetween 11 In a computer and memory system having a virtual address translation memory for translating virtual addresses to real addresses, said virtual address including a virtual page address, an error correction and detection system encoder method comprising computing at least a portion of the real page address corresponding to said virtual page address, computing at least one check bit corresponding to said real page address, and storing said portion of said real page address and said check bit in said virtual address translation memory 12 A method accordance with claim 11, wherein said computer memory system further includes a ma bus connecting said computer to said memory, said method further comprising the steps of applying said virtual address to said virtual address translation unit, outputting said portion of said real page address stored in said virtual address translation unit on said main bus, and outputt g said check bit stored said virtual address translation unit on said mam bus 13 A method in accordance with claim 12, wherein said virtual address further includes an offset address, said method further comprising computing, responsive to said offset address, an error detection and correction code comprising a plurality of check bits, and outputt g said plurality of check bits on said main bus 14 In a computer and memory system having a virtual address translation memory for translating virtual addresses to real addresses, said virtual address including a virtual page address and an offset address, said system further including a mam bus connecting said computer to said memory, an error correction and detection system encoder method comprising computing at least a portion of the real page address corresponding to said virtual page address, storing said portion of said real page address said virtual address translation memory, applying said virtual address to said virtual address translation unit, outputtmg said portion of said real page address stored in said virtual address translation unit on said ma bus, computing, responsive to said offset address, a partial error detection and correction code, computing, responsive to said partial error detection and correction code, and to said real page address, a complete error detection and correction code; and outputtmg said complete error detection and correction code on said 15. An apparatus for correcting errors in the transmission of information bits said apparatus comprising; means for arranging said information bits into subsets such that each information bit is included m two subsets, to form a pair of subsets, and no two information bits are contained within the same pair of subsets, and wherein the number of subsets is other than a prime number, means for generating a check bit for each subset of said information bits wherein the number of check bits is other than a prime number, means for transmitting said check bits and said information bits as a plurality of blocks of bits, each of said plurality of blocks consisting of a group of information bits and no more than one check bit which is not associated with any information bit in its block, means for receiving said plurality of blocks and generating the exclusive OR of said bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors in only a single block of said plurality of blocks; means for producing responsive to said syndrome pattern, a plurality of error indicator outputs indicative of whether there is an error in one or more of said information bits, and means for producing responsive to said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits 16 An apparatus for correcting errors in the transmission of information bits, said apparatus comprising means for selecting subsets of said information bits where said subsets are rows a matrix having columns and rows, each column of said matrix containing information bits selected such that each information bit is included in two rows, to form a pair of rows, and no two information bits are contained within the same pair of rows and wherein the number of subsets is other than a prime number, means for generating a parity bit for each row of said matrix corresponding to each said subset of information bits wherein the number of parity bits is other than a prime number; means for transmitting a plurality of blocks of bits, each of said plurality of blocks of bits consisting of the information bits in each respective column of said matrix and no more than one parity bit which is not associated with any information bit in said respective column, means for receiving said plurality of blocks for generating the exclusive OR of said bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors in only a single block of said plurality of blocks; means for producing responsive to said syndrome pattern a plurality of error indicator outputs indicative of whether there is an error in one or more of said information bits; and means for producing responsive to said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits 17 An apparatus for correcting errors in the transmission of information bits said apparatus comprising, means for arranging said information bits into subsets such that each information bit is included in two subsets, to form a pair of subsets, and no two information bits are contained withm the same pair of subsets, means for generating a check bit for each subset of said information bits, means for transmitting said check bits and said information bits as a plurality of blocks of bits, each of said plurality of blocks consisting of a group of information bits, and wherein the number of check bits is not equal to the number of said plurality of blocks, whereby some of said plurality of blocks have a check bit and others of said plurality of blocks have no check bit, means for receiving said plurality of blocks and generating the exclusive OR of said bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors only a single block of said plurality of blocks, means for producing responsive to said syndrome pattern, a plurality of error indicator outputs indicative of whether there is an error in one or more of said information bits, and means for producing responsive to said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits 18 An apparatus in accordance with claim 17, where the number of said plurality of blocks of bits is greater than the number of said check bits, and wherein at least two of said others of said plurality of blocks which have no check bit are spaced apart and have at least one of said plurality of blocks which has a check bit therebetween. 19 An apparatus for correcting errors n the transmission of information bits, said apparatus comprising means for selecting subsets of said information bits where said subsets are rows in a matrix having columns and rows, each column of said matrix containing information bits selected such that each information bit is included in two rows, to form a pair of rows, and no two information bits are contained within the same pair of rows, means for generating a parity bit for each row of said matrix corresponding to each said subset of information bits; means for transmitting a plurality of blocks of bits, each of said plurality of blocks of bits consisting of the information bits in each respective column of said matrix, and wherein the number of parity bits is not equal to the number of said plurality of blocks, whereby some of said columns have a parity bit and others of said columns have no parity bit, means for receiving said plurality of blocks for generating the exclusive OR of said bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors in only a single block of said plurality of blocks, means for producing responsive to said syndrome pattern a plurality of error indicator outputs indicative of whether there is an error in one or more of said information bits, and means for producing responsive to said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits 20 An apparatus in accordance with claim 19, where the number of said plurality of blocks of bits is greater than the number of said parity bits, and wherein at least two of said others of said columns which have no parity bit are spaced apart and have at least one of said columns which has a parity bit therebetween 21 An apparatus for correcting errors in the transmission of information bits said apparatus comprising, means for arranging said information bits into subsets such that each information bit is included in two subsets, to form a pair of subsets, and no two information bits are contained withm the same pair of subsets, means for generating a check bit for each subset of said information bits, means for transmitting said check bits and said information bits as a plurality of blocks of bits, each of said plurality of blocks consisting of a group of information bits, and wherein the number of check bits is not equal to the number of said plurality of blocks, whereby some of said plurality of blocks have a check bit and others of said plurality of blocks have no check bit, and further wherein at least two of said plurality of blocks have at least one unused bit, means for receiving said plurality of blocks and generating the exclusive OR of said bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors in only a single block of said plurality of blocks, means for producing responsive to said syndrome pattern, a plurality of error indicator outputs indicative of whether there is an error in one or more of said information bits, and means for producing responsive to said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits 22 An apparatus in accordance with claim 21, where the number of said plurality of blocks of bits is greater than the number of said check bits, and wherein said two of said plurality of blocks having at least one unused bit are spaced apart and have at least one of said plurality of blocks which has a check bit therebetween 23. An apparatus for correcting errors in the transmission of information bits, said apparatus comprising: means for selecting subsets of said information bits where said subsets are rows in a matrix having columns and rows, each column of said matrix containing information bits selected such that each information bit is included in two rows, to form a pair of rows, and no two information bits are contained within the same pair of rows, means for generating a parity bit for each row of said matrix corresponding to each said subset of information bits, means for transmitting a plurality of blocks of bits, each of said plurality of blocks of bits consisting of the information bits in each respective column of said matrix, and wherein the number of parity bits is not equal to the number of said plurality of blocks, whereby some of said columns have a parity bit and others of said columns have no parity bit, and further wherein at least two of said columns have at least one unused bit, means for receiving said plurality of blocks for generating the exclusive OR of said bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors in only a single block of said plurality of blocks; means for producing responsive to said syndrome pattern a plurality of error indicator outputs indicative of whether there is an error in one or more of said information bits; and means for producing responsive to said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits. 24. An apparatus in accordance with claim 23, where the number of said plurality of blocks of bits is greater than the number of said parity bits, and wherein said two of said others of said columns which have an unused bit are spaced apart and have at least one of said columns which has a parity bit therebetween. 25. In a computer and memory system having a virtual address translation memory for translating virtual addresses to real addresses, said virtual address including a virtual page address, an error correction and detection system encoder apparatus comprising: means for computing at least a portion of the real page address corresponding to said virtual page address; means for computing at least one check bit corresponding to said real page address; and means for storing said portion of said real page address and said check bit in said virtual address translation memory. 26 An apparatus in accordance with claim 25, wherein said computer memory system further includes a main bus connecting said computer to said memory, said apparatus further comprising the steps of. means for applying said virtual address to said virtual address translation unit, means for outputtmg said portion of said real page address stored said virtual address translation unit on said ma bus; and means for outputtmg said check bit stored in said virtual address translation unit on said ma bus. 27. An apparatus in accordance with claim 27, wherein said virtual address further includes an offset address, said apparatus further comprising means for computing, responsive to said offset address, an error detection and correction code comprising a plurality of check bits; and means for outputtmg said plurality of check bits on said main bus 28 In a computer and memory system having a virtual address translation memory for translating virtual addresses to real addresses, sa d virtual address including a virtual page address and an offset address, said system further including a mam bus connecting sa d computer to said memory, an error correction and detection system encoder apparatus comprising: means for computing at least a portion of the real page address corresponding to said virtual page address; means for storing said portion of said real page address in said virtual address translation memory; means for applying said virtual address to said virtual address translation unit, means for outputtmg said portion of said real page address stored in said virtual address translation unit on said mam bus; means for computing, responsive to said offset address, a partial error detection and correction code, means for computing, responsive to said partial error detection and correction code, and to said real page address, a complete error detection and correction code; and means for outputtmg said complete error detection and correction code 29. A method for correcting errors in the transmission of information bits said method comprising; arranging said information bits into subsets such that each information bit is included in two subsets, to form a pair of subsets, and no two information bits are contained within the same pair of subsets, generating a check bit for each subset of said information bits,- transmitting said check bits and said information bits as a plurality of blocks of bits, each of said plurality of blocks consisting of a group of information bits and no more than one check bit which is not associated with any information bit in its block, receiving said plurality of blocks and generating the exclusive OR of said bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors in only a single block of said plurality of blocks; producing responsive to said syndrome pattern, a plurality of error indicator outputs indicative of whether there is an error in one or more of said information bits; generating the inclusive OR of said syndrome pattern; generating the AND function of each of said error indicator outputs and said inclusive OR of said syndrome pattern; and producing responsive to said AND function of said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits. 30. A method for correcting errors in the transmission of information bits, said method comprising: selecting subsets of said information bits where said subsets are rows m a matrix having columns and rows, each column of said matrix containing information bits selected such that each information bit is included in two rows, to form a pair of rows, and no two information bits are contained within the same pair of rows; generating a parity bit for each row of said matrix corresponding to each said subset of information bits; transmitting a plurality of blocks of bits, each of said plurality of blocks of bits consisting of the information bits in each respective column of said matrix and no more than one parity bit which is not associated with any information bit in said respective column; receiving said plurality of blocks for generating the exclusive OR of said bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors in only a single block of said plurality of blocks,- producing responsive to said syndrome pattern a plurality of error indicator outputs indicative of whether there is an error in one or more of said information bits,- generating the inclusive OR of said syndrome pattern; generating the AND function of each of said error indicator outputs and said inclusive OR of said syndrome pattern; and producing responsive to said AND function of said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits. 31. An apparatus for correcting errors in the transmission of information bits said apparatus comprising; means for arranging said information bits into subsets such that each information bit is included in two subsets, to form a pair of subsets, and no two information bits are contained within the same pair of subsets; means for generating a check bit for each subset of said information bits; means for transmitting said check bits and said information bits as a plurality of blocks of bits, each of said plurality of blocks consisting of a group of information bits and no more than one check bit which is not associated with any information bit in its block; means for receiving said plurality of blocks and generating the exclusive OR of said bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors in only a single block of said plurality of blocks; means for producing responsive to said syndrome pattern, a plurality of error indicator outputs indicative of whether there is an error in one or more of said information bits; means for generating the inclusive OR of said syndrome pattern; means for generating the AND function of each of said error indicator outputs and said inclusive OR of said syndrome pattern; and means for producing responsive to said AND function of said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits. 32. An apparatus for correcting errors in the transmission of information bits, said apparatus comprising: means for selecting subsets of said information bits where said subsets are rows in a matrix having columns and rows, each column of said matrix containing information bits selected such that each information bit is included in two rows, to form a pair of rows, and no two information bits are contained within the same pair of rows; means for generating a parity bit for each row of said matrix corresponding to each said subset of information bits; means for transmitting a plurality of blocks of bits, each of said plurality of blocks of bits consisting of the information bits each respective column of said matrix and no more than one parity b t which is not associated with any information bit m said respective column; means for receiving said plurality of blocks for generating the exclusive OR of said bits of each of said plurality of blocks to form a syndrome pattern indicative of whether there are one or more errors in only a single block of said plurality of blocks; means for producing responsive to said syndrome pattern a plurality of error indicator outputs indicative of whether there is an error in one or more of said information bits; means for generating the inclusive OR of said syndrome pattern; means for generating the AND function of each of said error indicator outputs and said inclusive OR of said syndrome pattern; and means for producing responsive to said AND function of said plurality of error indicator outputs and to said blocks of bits, output information bits which are the same value as the corresponding transmitted information bits.

Inventors: HELBIG WALTER A, HELBIG, WALTER, A.
Applicants: GORCA MEMORY SYSTEMS
Application year: 1996
Main classification: G06F11
IPC codes: G06F11, H04L1