Parity prediction for binary adders with selection

Abstract: An apparatus for predicting parity of a result produced by selection of the most or least significant thirty-two bits produced by a thirty-four bit adder, the parity being predicted concurrently with and independently of the result. Parity for byte Si of the selected result is derived by circuitry implementing the relationship: Pi = yP(M,n-1) V P(n,M+7) V y′P(M+8, n+7) in which Pi is the parity bit for Si, y is the positive sense of a signal indicating selection, of the most significant thirty-two result bits, y′ is the complement of y and indicates selection of the least significant thirty-­ two result bits, P(M,n-1) is parity over the two most significant result bits in the portion of the result covering result bits m through n+7, P(m+8, n+7) is parity of the two least significant bits of the result portion, P(n, m+7) is parity over the central bits of the portion, i is an integer and 0≦i≦3, m=8i, and n=m+2.

Description: This invention relates to a data processing system including an adder for adding two binary data operands A and B which comprises digital signals representing the magnitude of binary numbers represented by the operands, the adder providing a plurality of result bits having a predetermined magnitude order and representing the result of an addition of the operands. A binary adder is a vital component of electronic digital computer systems. The speed and reliability of the binary adder are, therefore, major concerns in computer system design. It is well known that a carry look-ahead adder generates the result of an operation on two operands faster than that of a ripple carry adder. It is also known that a carry look-ahead adder can be implemented in many different ways. This invention is not concerned with design of a high-speed binary adder, but rather relates to the design of checking logic for error detection in a high speed adder. For an explanation of the operation of carry-look-ahead adders, see Langdon and Tang, "Concurrent Error Detection for Group-Look Ahead Adders," IBM Tech. Rep., TR 01.1200, August 26, 1969. In the past, computers were used largely in an off-time, batch-processing mode and the consequences of undetected hardware malfunctions were relatively minor. Today, digital computers, even main-frame computers, are utilized in on-line information processing, data entry and retrieval, and real-time control of processes. Incorrect computer operation in any of these applications must be detected as soon as possible. At the same time, the increased size and complexity of digital computers have made it more and more difficult to ensure correct machine operation. In modern computer systems, operational reliability is supported by built-in error detection. A commonly used method of error detection is parity checking. Conventionally, in a parity checking procedure, a "parity" bit is generated in response to the number of "ones" in an arbitrary group of bits. Typically, for a byte, comprising eight bits of data, the parity bit will take on a digital value (1 or 0) which will make the sum of the ones in the combined group of nine bits odd, if odd parity applies, or even, if even parity. In modern computer architecture, data are transferred or exchanged between architectural units in a standard format. For example, data is transferred in the form of sequences in multi-byte "words" in many contemporary architectures. It is the case that a parity bit accompanies each byte being transferred so that transfer of a four-byte word involves thirty-six bits. When words are operated upon by computer elements, as, for example, in an adder, the parity bits are separated and separately treated. When two words are combined in an adder to produce a result word, parity bits must be generated for each byte of the result. Formerly, parity bits for the result word were generated when the word was available from the adder. In this case, the parity bits were generated by operating on the result. It is now standard practice to increase the speed of conventional adder operations by "predicting" parity bits for the results in a parity predict operation performed concurrently with the add operation. In such schemes, predicted parity is generated and then compared to the actual parity of the result word. If disparity is detected, an error signal generated by the comparison causes the adder to repeat its operation. If a second error is detected, it is assumed that the adder has malfunctioned. Parity prediction schemes are shown in Louie, U.S. Patent No. 3,925,647 and Kalandra et al, IBM TDB Vol. 23, No. 12 (5/81). These schemes include parity prediction circuits which are very complex and may cause more delay then the adder itself. Elimination of delay is important, particularly in pipelined processing systems. The parity prediction delays cause the system designer to be faced with a trade-off: allow the system to operate at the speed of the adder and provide for means to unravel the system errors caused by errors in the adder, or slow the system to allow for the delays of the parity prediction circuit. Another parity prediction scheme is shown in Taylor, U.S. Patent No. 3,911,261. However, the scheme of Taylor only provides a "best guess" predicted parity. The increased error and delays caused by inaccurate "guesses" are unacceptable in modern computing systems. Parity prediction is further complicated by architectures which use a "shifting adder." A shifting adder provides a result which includes more bits than are actually used as the output result signal. A subset of the actual result signal is selected in response to a selection signal. The selection signal is generated from the instruction being executed. For example, an adder may provide an actual result word having thirty-four bits. A selection signal determines whether the thirty-two most significant bits or the thirty-two least significant bits are provided on the output port. This allows for the increased precision of a thirty-four bit add operation with the use of the more common thirty-two bit bus architecture, but complicates the task of parity prediction. Because the parity is to be provided for the thirty-two bit word on the adder output port, a parity prediction scheme must take into account that an entirely different parity bit is needed for each possible output word. This requires parity prediction circuits for each possible shift. The result, for the example given, is to double the required parity prediction circuitry. The invention as claimed provide a more efficient and economical technique of parity prediction for a shifting adder. In a shifting adder design, the instruction being performed may require that certain of the most significant or least significant bits of a result be selected; for example, the thirty-two most or least significant or thirty four bits may be selected. The selection determines the parity of the bits selected as the sum. By dividing the equations to predict parity into equations for predicting the parity of portions of the sum, parity may be predicted with a minimum of delay caused by the selection. The parity equations are factored to provide a set of terms that pertain only to one selection, a set of terms pertaining only to the other, and a set of terms independent of selection. The described embodiments are designed to use one parity bit for each eight bit byte convention. With the provided output signal having two less bits than the actual sum and the most significant versus least significant selection option, each byte of the provided output signal will always include six bits from the actual sum and may include the two adjacent higher magnitude bits or the two adjacent lower magnitude bits. The parities of these three portions are determined and are combined in response to the selection signal to determine the parity of the provided byte. Because the selection signal may be conditional after the operands are provided, the selection signal is included into the parity prediction logic at the last possible stage to prevent the selection signal delay from delaying the parity prediction output signal. This structure avoids unnecessary delays and duplication of parity prediction circuitry. Figure 1 is a diagram illustrating the central processing unit of a computer. Figure 2 is a diagram illustrating the structure and operation of a shifting adder in the CPU illustrated in Figure 1. Figure 3 is a diagram illustrating the structure of a parity prediction circuit for use in parallel with the shifting adder illustrated in Figure 2. Figure 4 is a diagram illustrating subdivision of a 34 bit result word produced by the adder illustrated in Figure 2 for the practice of the invention. Figures 5 and 6 illustrate how result bits are grouped for the purpose of determining how carries are accounted for in the practice of the invention. Figures 7-16 are logic diagrams illustrating a combinatorial logic circuit for an embodiment of the invention. Figures 17-20 are logic diagrams illustrating implementation of the invention in AND-INVERT (A1) combinatorial technology. Figure 1 is a schematic diagram showing the details of the structure of a computer central processing unit (CPU)2. The CPU2 includes a control unit 12 for providing addresses to an address register 14, which are passed on an address bus 8 to a memory 9. In response to addresses provided to memory 9, program instructions are loaded by way of a data bus 10 and data register 16 into an instruction register (IR) 18. The control unit 12 then reads the instructions loaded into the IR 18 in response to instructions decoded by the control unit 12, data is retrieved from storage in the memory 9. The data retrieved from the memory 9 can include a pair of operands provided to operand registers (01 and 02), 20, to be operated upon by an arithmetic logic unit (ALU) 22. The output resulting from ALU 22 operations is provided to an output register (OR) 24. The output of the ALU 22 may be stored in the memory 9 or provided to another internal register CPU. ALU 22 may comprise a shifting adder, such as is illustrated in Figure 2. In Figure 2, the shifting adder circuit includes operand registers 30 and 32, an adder (ADD) 34, a carry unit 35, and a select unit 36. The output of the adder 34 is operated upon by the select circuit 36 under control of a combination of the instruction register 18 and an instruction decoder 40 (I DECODE), contained in the control unit 12. In operation, a pair of operands, each consisting of thirty-four bits of data ordered from a most significant bit (MSB) to a least significant bit (LSB), are provided to the operand registers 30 and 32. The operand in the register 30 is referred to as operand A (OP A), while that in 32 is referred to as operand B (OP B). A carry-in bit, C in , is conditioned and provided by the carry unit 35. A carry unit 35 is conventional and can be understood by reference to U.S. Patent No. 3,986,015, incorporated by reference. The carry bit is set to a value of 0 or 1, depending upon the current instruction and the previous result. The 34-bit operands are provided to the adder 34 which is a conventional 34-bit adder. The adder 34 combines the operands and the carry-in bit to produce a 34-bit result, which is fed to the select circuit 36. The 34-bit result includes bits numbered from 0-33, with bit 0 being the most significant bit (MSB) and bit 33 the least (LSB). The select circuit is a conventional gated circuit, conditioned by a SELECT signal, to provide either the most significant or least significant 32 bits of the result. In this regard, the most significant 32 bits are bits 0-31, according to the significance convention employed herein, while the least significant 32 bits are bits 2-33. The SELECT signal is a binary signal produced by the instruction decoder 40 in response to an appropriate instruction in the instruction register 18. Depending upon the instruction, the decoder conditions the SELECT bit to assume one of two conventional digital values. Thus, according to the value of the SELECT signal, the selected result provided by the SELECT circuit 36 will consist of a 32-bit result comprising the 32 most or 32 least significant bits produced by the adder 34. Necessary to the understanding of the invention is reference first to Figure 3 where the adder 34 includes conventional circuits 42-44 for generating half sums (42), carry look-aheads (43), and, from the half sums and carry look-aheads, full sums (44). The circuits 42-44 can have any of a number of well-known structures. The adder 34 operates on the A and B operands, each consisting of 34 bits, with the bits of the A operand signified by A0...A33, from most to least significance, and the B operand from B0...B33 in order of descending significance. The selector 36 operates under the control of the SELECT signal, denoted hereinafter by y. In the description to follow, y is a binary signal, whose value is indicated by standard complementary notation. Thus, if positive, the notation is y, if negative, Y′. As stated above, the most or least significant 32 bits produced by the adder 34 are selected and provided as the sum S. The sum 50 S consists of 4 bytes S0, S1, S2, and S3 from most to least significant. The bits of each byte are subscripted by significance, thus the most significant byte S0 of the sum 50 consists of bits s0-s7. When produced, the selected sum 50 is provided to a conventional parity generator 52 which generates a parity bit for each of thc bytes S0-S3. The four parity bits produced by the generator 52 are compared with four parity bits generated by the parity prediction circuit of the invention 54. The parity prediction circuit 54 produces predicted parity bits Pi, with i = 0, 1, 2, or 3. In this notation, the subscript i denotes the parity bit produced by the parity predict circuit 54 for the corresponding sum byte. Thus, predicted parity bit P0 is the bit predicted for sum byte S0. Each predicted parity bit is compared with the corresponding parity bit produced by the parity generator 52 in a respective one of four exclusive - OR (XOR) gates 56. Thus, the predicted parity bit P0 is provided, together with the parity bit generated by the generator 52 for sum byte S0 to the left-hand most XOR gate 56. The outputs of the XOR gates 56 are connected to the inputs of the OR gate 58 to produce a RESULT INVALID indication in the event that any one of the predicted parity bits is not equal to the corresponding parity bit produced by the generator 52. Since the 32-bit sum 50 can consist of sum bits S0-S31 or S2-S33, the selection may completely alter the parity of the four bytes in the 32-bit sum 50. This problem is illustrated graphically in Figure 4. Figure 4 illustrates, conceptually, how the predicted parity applies to the result. In Figure 4, if the most significant 32 sum bits are selected, then the predicted parity bits will indicate parity over bits s0-s7, s8-s15, s16-s23, and s24-s31. If the least significant 32 bits are chosen, the parity bits will indicate parity over s2-s9, s10-s17, s18-s25, and s26-s33. Conceptually, if each set of four predicted parity bits is generated simultaneously, and the parity bits for the sum bytes of corresponding significance are fed to respective ones of selection circuits 60, 62, 64, and 66, the SELECT signal can be used to select the correct set of parity bits for the selected sum. Thus, if the positive sense of the SELECT signal (y) is used to signify selection of the most significant sum bits s0-s31, while the opposite sense (Y′) selects sum bits S2-S33, the selection circuit 60 will choose the predicted parity bit for sum bits s0-s7, for y and the predicted parity bit for s2-s9 for y′. The predicted parity bit selected by circuit 60 is provided to the XOR gates 56 as P0, parity bit for byte S0 of the selected sum 50. Similarly, selection circuit 62, 64, and 66 select the predicted parity bits P1, P2, and P3 for bytes S1, S2, and S3 of the selected sum 50. It will be evident to those skilled in the art that the selection of result bits to provide the sum 50 may completely alter the parity of each of the four bytes in the 32 bit sum. With reference now to Appendix A, a table of notations and equivalences, the concept of predicted parity bit selection illustrated in Figure 4 is derived analytically. In Appendix A, entries A.1.5-A.1.9 are well-known terms in the art. Reference is given, for example, to the above-referenced IBM Technical Report authored by Langdon, Jr. et al. Formally, if y (the value of the SELECT signal) is a variable that denotes the selection of sum bits s0-s31, then by mutual exclusiveness, y′ (the complement of y′) denotes the selection of sum bits s2-s33. Let P(a,b) be the parity of the sum from bit a to bit b; then, the parity, Pi, of the sum byte, Si, is: (1) yP(m,m+7) + y′P(n,n+7) = Pi such that: i belongs to N, m = 8i, n = m + 2, and 0 ≦ i ≦ 3. and by using equivalence A.2.2 from Appendix A. (2) yP(m,m+7) V y′P(n,n+7) = Pi Given that: P(m,m+7) = P(m,n-1) V P(n,m+7) and: P(n,n+7) = P(n,m+7) V P(m+8,n+7) then: (2) => Pi = y(P(m,n-1) V P(n,m+7)) V y′(P(n,m+7) V P(m+8,n+7)) = yP(m,n-1) V yP(n,m+7) V y′P(n,m+7) V y′P(m+8,n+7) = yP(m,n-1) V P(n,m+7)(y V y′) V y′P(m+8,n+7) (3) Pi = yP(m,n-1) V P(n,m+7) V y′P(m+8,n+7) There are three parity groups in equation (3) which are exclusive-ORed; the first is ANDed with y, the second is independent of the selection, and the third is ANDed with selection y′. In implementing equation (3), the quantities exclusive-ORed must be generated. It is generally known that in parity prediction for sums, an important factor is the provision of a carry bit. Parity prediction schemes use either both input operands and carry bits from the adder itself, or duplicate the carries by generating them separately. The sum is formed using the carry bit into either the "byte" or "nibble", thus the carry bit must be taken into account in predicting the parity of the bytes. In this regard, carry into the "byte" signifies the carry that is generated between groups of bits during add operations conducted to produce a sum. See the Langdon et al reference at page 2. In this invention, a "byte" carry refers to the carry brought into the operand bit operations which produce a respective byte of the sum, where a byte, as above, encompasses eight consecutive sum bits. A "nibble" carry is the carry brought into a 4-bit grouping during adder operations. PARITY PREDICTION USING THE BYTE CARRIES A machine is now described for predicting the parity of sum bytes. This machine is based upon partitioning of sum bits into predetermined routes within each bit. The parity prediction machine will predict a correct parity bit for the byte selected by the state of the SELECT signal. In the description which follows, and in other examples, subsequently described, the half-adder functions Ti, Gi, Hi, Tx-i, are as disclosed in the previously cited Langdon et al reference. In deriving the parity prediction equations using the carry bit into byte, the machine is partitioned into groups of 3 and 2 bits of groups as shown in Figure 5. In Figure 5, with the positive sense of the SELECT signal, the partitioning proceeds from the most to the least significant bits of S0, with 3 carries within, and 1 carry into the byte. The first internal carry, for example, Cin (0, 1) is carry generated from sum bits s2-s4 into sum bits s0 and s1. Carry into the byte is Cin (5, 7) from sum bits s8 and s9 into sum bits s5-s7. It should be noted that the carryin Cin to the adder is always provided to generate the least significant byte or nibble of the 34 bit result whether SELECT=y or y′. Now, using the partitioned groups, the carry into the byte, and equation (3) the parity P0 for sum byte S0 can be determined by the following equation: (B.24) P0 = (yT1 + y′H8) V (yH0 + y′T9) V (yH1′ (G(2,9) + T(2,9)Cin) + y′H9′Cin) V H2 V T4 V H5 V (G3 + T3G4′) V (H4′ + H3)(G(5,9) + (T5,9)Cin) V (G6 + T6G7′) V ((T7′ + G7′H6′) (G(8,9) + T(8,9)Cin) + T7(G(8,9) + T(8,9)Cin)′) The derivation for this equation is shown in Appendix B. Similarly, the same substitution can be used on the formulas in Appendix C. See, for example, P0 according to Equation C.21. By using the same procedure, the parity bits P1, P2, and P3 of the remaining bytes can be derived. PARITY PREDICTION USING THE NIBBLE CARRIES In using the nibble carries instead of the byte carries for parity predict, the adder may be partitioned in groups of 4 and 2 bits as shown in Figure 6. In Appendix D, deriving in the same manner as B.24 results in: (D.4) P0 = (yT1 + y′H8) V (yH0 + y′T9) V (yH1′Cin(0,1) + y′H9′Cin(8,9)) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V H6 V T7 V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H7′Cin(6,7) In Appendix E, the other formulas that can be derived in this manner are shown. Also, the carries can be substituted for in a similar manner as shown with regard to the last section. By the same procedure, the parity for the remaining bytes can be derived. INDUSTRIAL APPLICATION Several equations can be derived for parity prediction of 34-bit addition with selection, as in Appendix C and Appendix E, and these equations can be implemented similarly. Equation B.24 is chosen to demonstrate how to implement these formulas and how they compare to parity prediction for a 32-bit adder. (B.24) P0 = (yT1 + y′H8) V (yH0 + y′T9) V (yH1′(G(2,9) + T(2,9)Cin) + y′H9′Cin) V H2 V T4 V H5 V (G3 + T3G4′) V (H4′ + H3)(G(5,9) + T(5,9)Cin) V (G6 + T6G7′) V ((T7′ + G7′H6′)(G(8,9) + T(8,9)Cin) + T7(G(8,9) + T(8,9)Cin)′) The inputs to the parity predict circuitry are considered to be both the prime and complements of the adder inputs and the carries generated by the adder carry look-ahead 34 to the byte or nibble. In general, the carries in an implementation are delayed several levels from the adder inputs. Therefore, they need not be used until the last level of parity prediction. Thus, for P0, the carry terms are predicted on as is shown in equations (4) and (5). Cin = 1 (4) P0 = H2 V T4 V (G3 + T3G4′) V (H4′ + H3) (G(5,9) + T(5,9)) V H5 V (G6 + T6G7′) V ((T7′ + G7′H6′) (G(8,9) + T(8,9)) + T7(G(8,9)+T(8,9))′) V (yT1 + y′H8) V (yH0 + y′T9) V (yH1′(G(2,9) + T(2,9)) + y′H9′) Cin = 0 (5) P0 = H2 V T4 V (G3 + T3G4′) V (H4′ + H3) G(5,9) V H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)G(8,9) + T7G(8,9)′) V (yT1 + y′H8) V (yH0 + y′T9) V yH1′G(2,9) Equations 4 and 5 require 6 levels of logic for the actual implementation in a CMOS technology. The details on the logic arrays used, their associated delays and cell counts, and the terms that are calculated on each level are found in Appendix F. Appendix F also contains the terms that can be calculated on each level for the 32-bit adder parity predict derived in Langdon and Tang. The 32-bit adder parity predict takes 6 levels of logic and results in a worst case delay of 16.9 ns and 1000 cells, whereas the schema for a 34-bit adder parity predict results in a worst case delay of 17.9 ns and approximately 1100 cells. The 34-bit adder implemented in the same technology is known to have a worst case delay of 18.1 ns with 2700 cells. From Appendix F, several conclusions will be evident to those skilled in the art. First, parity prediction does not depend on the parity of the inputs, but entirely on the addend(A), augend(B), carry transmit(T), carry generates(G), halfsums(H), and the carries. Equation (3), which produces the parity, contains three "partial" parity portions, two that depend on the choice of the final result and one that is independent of the choice. The final formulation that is derived from the choice of the grouping of the adder inputs results in an expression that contains a minimal amount of exclusive OR's and their associated logic, not causing a prohibitive delay as is proven by Appendix F. The parity path is a non-critical path for the add function, but is obtained at the expense of additional hardware. However, the amount of hardware used to produce the parity for a 34-bit adder with selection on the final results is of the same order of magnitude as that of the parity for the 32-bit adder. Moreover, while there is a small difference in actual delay time (due to the varying book delays), the number of logic levels involved for parity prediction is equal for both 32-bit adders and 34-bit adders with selection on the result. Appendix G develops, from equation (1) a set of terms which permit the embodiment of the invention in the tangible structure illustrated in Figures 7-16. Figure 7 shows, in greater detail, the parity prediction circuit 54 of Figure 3 as defined by equations of Appendix G. In Figure 7, the inputs to the parity prediction circuit 54 are the SELECT signal and the operands A and B. The circuit of Figure 7 specifically details how the first parity bit P0 is derived from the inputs according to the equation of Appendix G. It is understood that corresponding circuitry for the parity bits P1,P2, and P3, under an odd parity regime can be easily derived from the teaching regarding the bit P0. The parity predict circuit of Figure 7 is shown in greater detail in Figures 8-16, wherein invertors are designated by N, and gates by A, OR gates by 0, and exclusive-OR gates by X. In the parity predict circuit are three half-sum generators 70-72 for producing, respectively, the half-sum bit Hi, the carry generate bit Gi, and the carry transmit bit Ti in response to operand bits Ai and Bi. These circuits are detailed in Figure 8, which illustrates the combinatorial circuit equivalent of the Hi, Gi and Ti equivalences defined in Appendix A. In addition, intermediate term circuits 75-77 receive specific carry generate and carry transmit terms from the corresponding circuits 71 and 72, in response to which they generate group carry generate and transmit signals. The group carry generate circuit 75 is generalized to G(i,i+1), the equivalent of which is illustrated in Figure 8 by a conventional arrangement of one OR gate (0) and two AND gates (A). A circuit 76 for producing a group carry generator G(i,i+n) is indicated by reference numeral 76 in Figure 7 and illustrated in more detail by a conventional arrangement of AND and OR gates illustrated in Figure 9. Similarly, a group carry transmit circuit 77 for producing the group carry transmit T(i,i+n) is indicated by reference numeral 77 in Figure 7 and illustrated, conventionally, in greater detail by an arrangement of AND gates in Figure 9. The term M(C=1) defined by equation (G.5.a) is represented by circuit block 78 in Figure 7, and illustrated in more detail in Figure 10 by an arrangement of inverters (N), AND gates, and OR gates which are interconnected conventionally to implement equation (G.5.a). A circuit block 80 in Figure 7 develops a term M(C=0) defined by equation (G.7.a). This circuit block is illustrated in greater detail in Figure 11. Those skilled in the art will recognize that Figure 11 is a combination of inverters, AND gates, and an OR gate conventionally interconnected to implement equation (G.7.a). Finally, an intermediate term K is generated by circuit block 82, which is illustrated in greater detail in Figure 12. The combinatorial logic circuit of Figure 12 includes inverters, AND gates, and an OR gate, which structurally embody the relationship of equation (G.3.a). As observed in Appendix G, and particularly with reference to equation (G.10), each parity byte can be implemented in a combinatorial circuit having two parallel branches, each corresponding to a respective state of the carry-in to the corresponding sum byte. Corresponding equations can be derived using the methodology of Appendix G for the parity bytes P1, P2, and P3. As will be evident, the carry in to the equation for bit P3 will be the carry in Cin produced by the carry select circuit 35 of Figure 2. The Pa0, Pb0, Pc0, and Pd0 terms used in equations (G.10) are generated by circuit elements 90, 91, 92, and 93, respectively. Circuit blocks 90 and 92, respectively for producing Pa0 and Pc0, are illustrated in greater detail in Figure 13. In Figure 13, the circuit 90 embodies equation (G.9.a), while circuit 92 illustrates a practice of equation (G.9.c). Circuit elements 91 and 93, for producing Pb0 and Pd0, respectively, are illustrated in greater detail in Figures 14 and 15, respectively. The circuit for producing PB0 which is illustrated in Figure 14 is an embodiment of equation (G.9.b), while the circuit for producing Pd0, detailed in Figure 15, is an implementation of equation (G.9.d). As is illustrated in Figures 13-15, the Pa0, Pb0, Pc0, and Pd0 terms are provided in complementary form, which is also indicated in the ± outputs of circuit blocks 90, 91, 92, and 93 of Figure 7. As inspection of equation (G.10) reveals, these complementary outputs are necessary for generating the odd parity bit, P0, for sum byte S0. This bit is produced in circuit element 95 of Figure 7, which is illustrated in greater detail in Figure 16. Figure 16 is a combinatorial logic representation of equation (G.10), and provides a complementary output, +P0 and -P0. (G.10) P0 = (Pa V Pb)Cin9 + (Pc V Pd)Cin9′ = Pa′PbCin9 + PaPb′Cin9 + Pc′PdCin9′ + PcPd′Cin9′ It will be evident with reference to Figure 7 and the methodology of Appendix G that the invention may be practiced to determine even parity over the selected sum bytes by implementation of equation (G.12): (G.12) => Pe = P0 (C=1)′Cin9 + P0(C=0)′Cin9′ = (Pa V Pb)′Cin9 + (Pc V Pd)′Cin9′ = Pa′Pb′Cin9 + PaPbCin9 + Pc′Pd′Cin9′ + PcPdCin9′ Thus, in order to predict either odd or even parity for byte 0, the following quantities must be computed. ±Pa, ±Pb, ±Pc, ±Pd To compute the complements (-Pa, -Pb, -Pc, -Pd) it is enough to negate an odd number of terms exclusive-ORed in the expressions. For Pa and Pc, the choice made is the negation of either H2 or H5, and for Pb and Pd, (T3′T4′ + T4G3 + T3H4)′ = T4T3′ + T3T4′ + G3′G4 With the same procedure, odd or even parity for sum bytes 1, 2, and 3 can be derived. In implementing equations G.10 and G.11 in a specific technology, the following algorithm can be used to produce the predicted parity signals: Step 1. Generate all the terms present in the expressions of step 2, namely ±Xj, ±Yj, ±Zj as needed. Step 2. Generate: Xa, Ya, ±Za ±Xb, Yb, Zb Xc, ±Yc, Zc ±Xd, Yd, Zd Step 3. Generate: ±Pa, ±Pb, ±Pc, ±Pd Step 4. Generate: P0 or Pe If a technology has available the arrays or the equivalent ones as described in Figures 17-20, then it can be concluded that each step requires a single logic level and parity predict can be computed in four logic levels. The methodology of Appendix G can also be implemented in a four stage odd parity predict circuit using AND-INVERT (AI) gates and including the dot-AND function. The maximum gate configuration required is a 6-way-AI and a maximum dot-AND of seven. This embodiment is shown schematically in Figures 17 through 20. In Figure 17-20, each square represents a conventional AI gate. Each AI gate has at least two inputs, each indicated by horizontal lines coming into its left-hand vertical side, and a single output emerging from its right-hand vertical side. When the outputs of two or more AI gates are connected to a common node, the common node indicates the conventional dot-AND function. The input signals of each gate in the Figures correspond either to terms found in the equations of Appendix G or to the outputs of AI gates occupying a previous level. The circuit levels ascend from Figure 17 through Figure 20. Thus, Figure 17 represents all of the gates necessary to implement the first level, and Figure 20 all of the gates required to embody the fourth level of circuitry. Given the fact that a direct implementation of parity prediction which does not practice this invention creates parity for both the least and most 32 significant bits of the adder, a large amount of hardware is required (namely, hardware for choice y and for y′). This could result in a prohibitive delay because the parity for both choice y and choice y′ must be produced before the selection of the final parity bits occurs, thus imposing an extra stage of delay in respect to parity predict for a 32-bit adder. This invention, instead of producing the parity as in equation (1), which implies that P(m,m+7) and P(n,n+7) must be produced, groups the terms in such a way that the parity of the choice-independent bits, P(m+2,m+7), is produced only once, thus improving hardware economy. Generally, in the practice of the invention, both P0 (C=1) and P0(C=0) are produced, and then P0. The invention breaks each of those paths into more than one; namely, the ones that produce ±Pa and ±Pb for P(C=1) and ±Pc and ±Pd for P(C=0). The direct impact on the parity predict circuitry is that the number of exclusive-ORs used in a single path is significantly reduced without changing the expressions that are exclusive-ORed together, thus implying that the above quantities can be calculated faster. The final parity can be produced with a 3x4 AND-OR (AO) array or equivalent, instead of a 2x2 AO suggesting that both expressions can be computed in a single stage. Though it is true that some additional hardware is required for the -Pa, -Pb, -Pc, and -Pd terms needed for equation (G.10), this expenditure is justified because +Pa, +Pb, +Pc, and +Pd can be produced faster than P(C=1) and P(C=0), which results in the savings of logic levels provided that a 3x4 AO or equivalent can be computed in one logic level. The expressions that are exclusive-ORed together are not prohibitive to be produced. The "worst" quantities can be produced in two stages of delay with the availability of a 6x5 and a 4x6 AO or equivalent array. It can be concluded from this description that, provided a technology offers 6-way AIs and AND-dotting of 7, the parity prediction for a 34-bit adder with selection on the final result can be produced in 4 logic levels. The invention being thus described, it will be obvious that the same may vary in many ways. For example, the grouping of bits need not be 2,3,3, but 3,3,2 etc. without being considered as a departure from the scope of the present invention. Also, although selection is performed for 32 bits from a 34 bit adder result, the invention can be regarded as pertaining to a selection of any number of result bits from an adder having a result with any number of bits. APPENDIX A In deriving the parity prediction equations, the following notations and boolean equivalencies will be used: 1. Notations (A.1.1) ′ is the not of the expression (A.1.2) (a + b) is the logical OR of "a" and "b" (A.1.3) (ab) is 'a' logical AND 'b' (A.1.4) V is an exclusive-OR(XOR) (A.1.5) Ti is the carry transmit of bit i (A.1.6) Gi is the carry generate of bit i (A.1.7) Hi is the half sum of bit i (A.1.8) Tx-y is the carry transmit signal from bit x to bit y (A.1.9) Gx-y is the carry generate signal from bit x to bit y (A.1.10) Pcx-y is the parity of the carries from bit x to bit y (A.1.11) Psx-y is the parity of the sum from bit x to bit y (A.1.12) O is the most significant bit (A.1.13) ±Pa means both Pa and Pa′ are produced 2. Boolean Equivalencies (A.2.1) 1 v a = a′ (A.2.2) a + b = a V b V ab (A.2.3) a + a′b = a + b (A.2.4) Ti = (ai + bi) (A.2.5) Gi = (aibi) (A.2.6) Hi = (ai V bi) = TiGi′ APPENDIX B For the parity of byte S0, i = 0, and: (3) P0 = yP(0,1) V P(2,7) V y′P(8,9) (B.1) P0 = yP(0,1) V P(2,4) V P(5,7) V y′P(8,9) It is known that the parity for addition obeys the following law. (B.2) Ps = Pa V Pb V Pc Ps is the parity of the sum, Pa and Pb are respectively the parity of addends A and B, and Pc is the parity of the carries. In adopting the convention of 1 bit parity per sum byte, equation (B.2) has to be produced for the byte. In doing this, a grouping of the byte is imposed, and this derivation is based on a 2-3-3 grouping, that is, s0s1, s2s3s4, and s5s6s7. The parity for the eight bit sum byte s0 is calculated by XORing the bits s0-s7 of that word. By the 2-3-3 grouping above: (B.3) Ps0-7 = Ps0-1 V Ps2-4 V Ps5-7 Now, the parity equation may be expressed as Ps5-7 = Pa5-7 V Pb5-7 V Pc5-7 Ps2-4 = Pa2-4 V Pb2-4 V Pc2-4 Ps0-1 = Pa0-1 V Pb0-1 V Pc0-1 In a group of 3 bits, the carries are computed by Cin = carry into the group Ci = GI + TiCin Ci-1 = Gi-1 + (Ti-1)Gi + (Ti-1)TiCin Ci-2 = carry out of the group Thus, carries in the group s5 to s7 are equal to Cin = previous carry C7 = G7 + T7Cin C6 = G6 + T6G7 + T6T7Cin C5 = Cout thus, Pc5-7 = Cin V C7 V C6 (B.4) Pc5-7 = Cin V (G7 + T7Cin) V (G6 + T6G7 + T6T7Cin) Using equivalence A.2.1, A.2.2 and A.2.6, G7 + T7Cin = G7 V T7Cin V G7T7Cin G7 + T7Cin = G7 V T7Cin (1 V G7) (B.5) G7 + T7Cin = G7 V H7Cin By the same method the final term in equation B.4 reduces. (B.6) G6 + T6G7 + T6T7Cin = G6 V T6G7 V G6T6G7 V T6T7Cin V G6T6T7Cin V T6T7G7Cin V T6T7G6G7Cin Let x = T6G7 V G6T6G7 = T6G7(1 V G6) = T6G7G6′ = H6G7 y = T6T7Cin(1 V G6) = H6T7Cin z = T6T7G7Cin(1 V G6) = H6T7G7Cin Then, G6 + T6G7 + T6T7Cin = G6 V x V y V z = G6 V H6G7 V H6T7Cin V H6T7G7Cin = G6 V H6G7 V H6T7Cin(1 V G7) => (B.7) G6 + T6G7 + T6T7Cin = G6 V H6G7 V H6H7Cin. The substitution of equations B.5 and 8.7 into equation B.4 results in: Pc5-7 = Cin V (G7 V H7Cin) V (G6 V H6G7 V H6H7Cin) = G6 V G7 V H6G7 V Cin(1 V H7 V H6H7) = G6 V G7 V H6G7 V Cin(1 V H7(1 V H6)) = G6 V G7 V H6G7 V Cin(1 V H7H6′) => (B.8) Pc5-7 = G6 V G7 V H6G7 V Cin(H7′ + H6) And with a similar derivation, (B.9) Pc2-4 = G3 V G4 V H3G4 V Cin1(H4′ + H3) PcO-1 is a group of two and the carries for this group are Cin2 = carry in C1 = G1 + T1Cin2 C0 = carry out A simplified expression for the parity of the carries of the group of bits 0 and 1 is derived below. Pc0-1 = Cin2 V C1 = Cin2 V (G1 + T1Cin2) = Cin2 V G1 V T1Cin2 V G1T1Cin2 = Cin2 V G1 V T1Cin2(1 V G1) = Cin2 V G1 V H1Cin 2 = G1 V Cin2(1 V H1) => (B.10) Pc0-1 = G1 V H1′Cin2 The predicted parity of the carries of the groups within the byte is summarized in the following three equations: (B.8) Pc5-7 = G6 V G7 V H6G7 V Cin(H7′ + H6) (B.9) Pc2-4 = G3 V G4 V H3G4 V Cin1(H4′ + H3) (B.10) Pc0-1 = G1 V H1′Cin2 PARITY OF THE GROUPS Using the equations for parity predict of the carries, the parity of the sum groups can now be derived. For the group of bits 5, 6, and 7, Pa and Pb are equal to: Pa5-7 = A5 V A6 V A7 Pb5-7 = B5 V B6 V B7 Thus, the parity of the sum of bits 5-7 is: Ps5-7 = A5 V A6 V A7 V B5 V B6 V B7 V G6 V G7 V H6G7 V Cin(H7′ + H6) But, A6 V B6 V G6 = A6 V B6 V A6B6 = A6 + B6 = T6, A7 V B7 V G7 = T7, and A5 V B5 = H5; thus, (B.11) Ps5-7 = T6 V T7 V H5 V H6G7 V Cin(H7′ + H6). In the same manner, the other group parity of the sums are derived. The following is the result. (B.12) Ps2-4 - T3 V T4 V H2 V H3G4 V Cin1(H4′ + H3) (B.13) Ps0-1 = T1 V HO V H1′Cin2 Equation B.11 implies the following transformation. Ps5-7 = T6 V T7 V H5 V H6G7 V (H7′ + H6)Cin = T6 V T7(Cin + Cin′) V H5 V H6G7 V (H7′ + H6)Cin = T6 V T7Cin V T7Cin′ V H5 V H6G7 V (H7′ + H6)Cin But, T7Cin V Cin(H7′ + H6) = Cin(T7 V (H7′ + H6)) = Cin(T7′(H7′ + H6) + T7H7H6′) = Cin(T7′ + T7′H6 + T7H7H6′) = Cin(T7′ + T7H7H6′) = Cin(T7′ + T7T7G7′H6′) = Cin(T7′ + T7G7′H6′) = Cin(T7′ + G7′H6′) Thus, Ps5-7 = H5 V T6 V H6G7 V T7Cin′ V Cin(T7′ + G7′H6′) And given that T7Cin′ V Cin(T7′ + G7′H6′) = Cin(T7′ + G7′H6′) + T7Cin′ then, Ps5-7 = H5 V T6 V H6G7 V ((T7′ + G7′H6′)Cin + T7Cin′). But, T6 V H6G7 = G6 + T6G7′ thus, (B.14) Ps5-7 = H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin + T7Cin′) The parity of the sum of bits 5 to 7 in equation B.14 has only two exclusive-ORs, and a similar expression for bits 2 to 4 can be derived in the same manner. (B.15) Ps2-4 = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin1 + T4Cin1′) The parity of the sum for bits 0 and 1 is reduced in a similar manner. Ps0-1 = H0 V T1Cin2 V T1Cin2′ V H1′Cin2 = H0 V T1Cin2 V TiCin2′ V (T1′ + G1)Cin2 = H0 V T1Cin2′ V Cin2(T1 V (T1′ + G1)) = H0 V T1Cin2′ V Cin2(T1′ (T1′ + G1) + T1(T1G1′)) = H0 V T1Cin2′ V Cin2(T1′ + T1G1′) = H0 V T1Cin2′ V Cin2(T1′ + G1′) = H0 V (T1Cin2′(Cin2′ + T1G1) + Cin2(T1′ + G1′)(T1′ + Cin2)) = H0 V (T1Cin2′ + Cin2(T1′+ G1′)) (B.16) Ps0-1 = HO V (T1Cin2′ + G1′Cin2) Thus, the parity of the sum for the groups within the byte have been reduced to the following three equations: (B.14) Ps5-7 = H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin + T7Cin′) (B.15) Ps2-4 = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin1 + T4Cin1′) (B.16) Ps0-1 = H0 V (T1Cin2′ + G1′Cin2) Another form of the parity of the sum of a byte can be derived from equations B.11to B.13. This reduction uses only positive carry-in terms which might be the case in some implementations. The following is the reduction. (B.11) Ps5-7 = T6 V T7 V H5 V H6G7 V Cin(H7′ + H6) = T7 V H5 V Cin(H7′ + H6) V T6 V T6G6′G7 = T7 V H5 V Cin(H7′ + H6) V T6(1 V G6′G7) = T7 V H5 V Cin(H7′ + H6) V (G6 + T6G7′) => (B.17) Ps5-7 = H5 V T7 V (G6 + T6G7′) V Cin(H7′ + H6) Therefore, (B.18) Ps2-4 = H2 V T4 V (G3 + T3G4′) V Cin1 (H4′ + H3) The equations for this second form of reduction are summarized below: (B.17) Ps5-7 = H5 V T7 V (G6 + T6G7′) V Cin(H7′ + H6) (B.18) Ps2-4 = H2 V T4 V (G3 + T3G4′) V Cin1(H4′ + H3) (B.13) Ps0-1 = T1 V HO V H1′Cin2 Two forms for the parity of the sum of the groups have been derived; the first form is equations B.14, B.15 and B.16, and the second form is equations B.17, B.18 and B.13. The next step in the derivation is to show how these equations can be used to determine the parity of a byte of the sum. By substituting equations B.13 to B.17 into B.1, several expressions can be derived that produce the parity into byte 0 of the sum. The derivation of one such expression follows. Using (B.13): P(0,1) = H0 V T1 V H1′Cin(0,1) P(8,9) = H8 V T9 V H9′Cin(8,9) and (B.18): P(2,4) = H2 V T4 V (G3 + T3G4′) V Cin(2,4)(H4′ + H3) and (B.14): P(5,7) = H5 V (G6 + T6G7′) V ((T7′ + G7′H6′) Cin(5,7) + T7Cin(5,7)′) (B.1) => P0 = y(H0 V T1 V H1′Cin(0,1)) V H2 V T4 V (G3 + T3G4′) V Cin(2,4)(H4′ + H3) V H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin(5,7)′) V y′(H8 V T9 V H9′Cin(8,9)) Using equivalencies: yT1 V y′H8 = yT1 + y′H8 yH0 V y′T9 = yH0 + y′T9 yH1′Cin(0,1) V y′H9′Cin((8,9) = yH1′Cin(0,1) + y′H9′Cin (8,9) (B.19) P0 = (yT1 + y′H8) V (yH0 + y′T9) V (yH1′Cin(0,1) + y′H9′Cin(8,9)) V H2 V T4 V (G3 + T3G4′) V Cin(2,4)(H4′ + H3) V H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin(5,7)′) The carries can be expressed in terms of the carry into the byte, Cin, as follows: (B.20) Cin(8,9) = Cin (B.21) Cin(5,7) = G(8,9) + T(8,9)Cin (B.22) Cin(2,4) = G(5,9) + T(5,9)Cin (B.23) Cin(0,1) = G(2,9) + T(2,9)Cin Thus: (B.19) => (B.24) P0 = (yT1 + y′H8) V (yH0 + y′T9) V (yH1′(G(2,9) + T(2,9)Cin) + y′H9′Cin) V H2 V T4 V H5 V (G3 + T3G4′) V (H4′ + H3)(G(5,9) + T(5,9)Cin) V (G6 + T6G7′) V ((T7′ + G7′H6′) (G(8,9) + T(8,9)Cin) + T7(G(8,9) + T(8,9)Cin)′) The other possible formulas that can be derived by substituting equations (B.13) to (B.19) into (B.1) are found in Appendix C. APPENDIX C By substituting equations B.13 through B.18 into B.1 several expressions can be derived that produce the parity of byte S0 of the result (and with analogous substitutions for the remaining bytes). The derivation of one such expression follows: Using (B.13): P(0,1) = H0 V T1 V H1′Cin(0,1) P(8,9) = H8 V T9 V H9′Cin(8,9) And (B.18): P(2,4) = H2 V T4 V (G3 + T3G4′) V Cin(2,4) (H4′ + H3) And (B.14): P(5,7) = H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin(5,7)′) (B.1) => (C.1) P0 = y(H0 V T1 V H1′Cin(0,1)) V H2 V T4 V (G3 + T3G4′) V Cin(2,4)(H4′ + H3) V H5 V (G6 + T6G7′) V ((T7′ + G7′H6′) Cin(5,7) + T7Cin(5,7)′) V y′(H8 V T9 V H9′Cin(8,9)) Using the equivalent forms: yT1 V y′H8 = yT1 + y′H8 yH0 V y′T9 = yH0 + y′T9 yH1′Cin(0,1) V y′H9′Cin(8,9) = yH1′Cin(0,1) + y′H9′Cin(8,9) (B.1) => (C.2) P0 = H2 V T4 V (G3 + T3G4′) V (H3 + H4′) Cin(2,4) V H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin(5,7)′) V (yT1 + y′H8) V (yH0 + y′T9) V (yH1′Cin(0,1) + y′H9′Cin(8,9)) Likewise using the equivalent forms: yT1 V y′T9 = yT1 + y′T9 yH0 V y′H8 = yH0 + y′H8 (B.1) => (C.3) P0 = H2 V T4 V (G3 + T3G4′) V (H3 + H4′) Cin(2,4) V H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin(5,7)′) V (yT1 + y′T9) V (yH0 + y′H8) V (yH1′Cin(0,1) + y′H9′Cin(8,9)) By the same method the following results may be derived: (B.13) => P(0,1) = H0 V T1 V H1′Cin(0,1) (B.18) => P(2,4) = H2 V T4 V (G3 + T3G4′) V Cin(2,4) (H4′ + H3) (B.17) => P(5,7) = H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) (B.13) => P(8,9) = H8 V T9 V H9′Cin(8,9) (C.4) P0 = H2 V T4 V (G3 + T3G4′) V (H3 + H4′) Cin(2,4) V H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) V (yT1 + y′H8)) V (yH0 + y′T9) V (yH1′Cin(0,1) + y′H9′Cin(8,9)) Or: (C.5) P0 = H2 V T4 V (G3 + T3G4′) V Cin(2,4)(H3 + H4′) V H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) V (yT1 + y′T9) V (yH0 + y′H8) V (yH1′Cin(0,1) + y′H9′Cin(8,9)) (B.13) => P(0,1) = H0 V T1 V H1′Cin(0,1) (B.18) => P(2,4) = H2 V T4 V (G3 + T3G4′) V Cin(2,4) (H4′ + H3) (B.17) => P(5,7) = H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) (B.16) => P(8,9) = H8 V (T9Cin(8,9)′ + G9′Cin(8,9)) Using the equivalent forms: yH0 V T1y V y′H8 = y(H0′T1 + H0′T1) + y′H8 y′(T9Cin(8,9)′ + G9′Cin(8,9)) V yH1′Cin(0,1) = yH1′Cin(0,1) + y′(T9Cin(8,9)′ + G9′Cin(8,9)) (C.6) P0 = H2 V T4 V (G3 + T3G4′) V Cin(2,4) (H3 + H4′) V H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) V (y(H0′T1 + H0T1′) + y′H8) V (yH1′Cin(0,1) + y′(T9Cin(8,9)′ + G9′Cin(8,9))) (B.13) => P(0,1) = H0 V T1 V H1′Cin(0,1) (B.18) => P(2,4) = H2 V T4 V (G3+T3G4′) V Cin((2,4)(H4′+H3)) (B.14) => P(5,7) = H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin(5,7)′) (B.16) => P(8,9) = H8 V (T9Cin(8,9)′ + G9′Cin(8,9)) (C.7) P0 = H2 V T4 V (G3 + T3G4′) V Cin(2,4) (H3 + H4′) V H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin(5,7)′) V ((H0′T1 + H0T1′)y + H8y′) V (H1′Cin(0,1)y + (T9Cin(8,9)′ + G9′Cin(8,9))y′) (B.13) => P(0,1) = H0 V T1 V H1′Cin(0,1) (B.18) => P(2,4) = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) (B.17) => P(5,7) = H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) (B.16) => P(8,9) = H8 V T9 V H9′Cin(8,9) (C.8) P0 = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) V H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) V (yT1 + y′H8) V (yH0 + y′T9) V (yH1′Cin(0,1) + y′H9′Cin(8,9)) Or: (C.9) P0 = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) V H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) V (yT1 + y′T9) V (yH0 + y′H8) V (yH1′Cin(0,1) + y′H9′Cin(8,9)) (B.13) => P(0,1) = H0 V T1 V H1′Cin(0,1) (B.15) => P(2,4) = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin (2,4)′) (B.17) => P(5,7) = H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) (B.16) => P(8,9) = H8 V (T9Cin(8,9)′ + G9′Cin(8,9)) (C.10) P0 = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) V H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) V ((H0′T1 + H0T1′)y + H8y′) V (H1′Cin(0,1)y + (T9Cin(8,9)′ + G9′Cin(8,9))y′) (B.13) => P(0,1) = H0 V T1 V H1′Cin(0,1) (B.15) => P(2,4) = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) (B.14) => P(5,7) = H5 V (G6 + T6G7′) V ((T7′ G7′H6′)Cin(5,7) + T7Cin(5,7)′) (B.16) => P(8,9) = H8 V T9 V H9′Cin(8,9) (C.11) P0 = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) V H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin(5,7)′) V (yT1 + y′H8) V (yH0 + y′T9) V (yH1′Cin(0,1) + y′H9′Cin(8,9)) Or: (C.12) P0 = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) V H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin(5,7)′) V (yT1 + y′T9) V (yH0 + y′H8) V (yH1′Cin(0,1) + y′H9′Cin(8,9)) (B.13) => P(0,1) = H0 V T1 V H1′Cin(0,1) (B.15) => P(2,4) = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) (B.14) => P(5,7) = H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin(5,7)′) (B.16) => P(8,9) = H8 V (T9Cin(8,9)′ + G9′Cin(8,9)) (C.13) P0 = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) V H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin(5,7)′) V ((H0′T1 + H0T1′)y + H8y′) V (H1′Cin(0,1)y + (T9Cin(8,9)′ + G9′Cin(8,9))y′) (B.16) => P(0,1) = H0 V (T1Cin(0,1)′ + G1′Cin(0,1)) (B.18) => P(2,4) = H2 V T4 V (G3 + T3G4′) V Cin(2,4) (H4′ + H3) (B.1) => P(5,7) = H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) (B.13) => P(8,9) = H8 V T9 V H9′Cin(8,9) (C.14) P0 = H2 V T4 V (G3 + T3G4′) V Cin(2,4) (H3 + H4′) V H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) V ((H8′T9 + H8T9′)y′ + H0y) V (H9′Cin(8,9)y′ + (T1Cin(0,1)′ + G1′Cin(0,1))y) (B.16) => P(0,1) = H0 V (T1Cin(0,1)′ + G1′Cin(0,1)) (B.18) => P(2,4) = H2 V T4 V (G3 + T3G4′) V Cin(2,4) (H4′ + H3) (B.17) => P(5,7) = H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) (B.16) => P(8,9) = H8 V (T9Cin(8,9)′ + G9′Cin(8,9)) (C.15) P0 = H2 V T4 V (G3 + T3G4′) V Cin(2,4) (H3 + H4′) V H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) V (H0y + H8y′) V (T1Cin(0,1)′ + G1′Cin(0,1))y V (T9Cin(8,9)′ + G9′Cin(8,9))y′ (B.16) => P(0,1) = H0 V (T1Cin(0,1)′ + G1′Cin(0,1)) (B.17) => P(2,4) = H2 V T4 V (G3 + T3G4′) V Cin(2,4) (H4′ + H3) (B.14) => P(5,7) = H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin(5,7)′) (B.13) => P(8,9) = H8 V T9 V H9′Cin(8,9) (C.16) P0 = H2 V T4 V (G3 + T3G4′) V Cin(2,4) (H3 + H4′) V H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin(5,7)′) V ((H8′T9 + H8T9′)y′ + H0y) V (H9′Cin(8,9)y′ + (T1Cin(0,1)′ + G1′Cin(0,1))y) (B.16) => P(0,1) = H0 V (T1Cin(0,1)′ + G1′Cin(0,1)) (B.18) => P(2,4) = H2 V T4 V (G3 + T3G4′) V Cin(2,4) (H4′ + H3) (B.14) => P(5,7) = H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin (5,7)′) (B.16) => P(8,9) = H8 V (T9Cin(8,9)′ + G9′CIn(8,9)) (C.17) P0 = H2 V T4 V (G3 + T3G4′) V Cin(2,4) (H3 + H4′) V H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)CIn(5,7) + T7Cin(5,7)′) V (H0y + H8y′) V (T1Cin(0,1)′ + G1′Cin(0,1))y V (T9Cin(8,9)′ + G9′Cin(8,9))y′ (B.16) => P(0,1) = H0 V (T1Cin(0,1)′ + G1′CIn(0,1)) (B.14) => P(2,4) = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) (B.18) => P(5,7) = H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) (B.13) => P(8,9) = H8 V T9 V H9′Cin(8,9) (C.18) P0 = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) V H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) V ((H8′T9 + H8T9′)y′ + H0y) V (H9′Cin(8,9)y′ + (T1Cin(0,1)′ + G1′Cin(0,1))y) (B.16) => P(0,1) = H0 V (T1Cin(0,1)′+ G1′Cin(0,1)) (B.14) => P(2,4) = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) (B.18) => P(5,7) = H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) (B.16) => P(8,9) = H8 V (T9Cin(8,9)′ + G9′Cin(8,9)) (C.19) P0 = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) V H5 V T7 V (G6 + T6G7′) V Cin(5,7) (H7′ + H6) V (H0y + H8y′) V (T1Cin(0,1)′ + G1′Cin(0,1))y (T9Cin(8,9)′ + G9′Cin(8,9))y′ (B.16) => P(0,1) = H0 V (T1Cin(0,1)′+ G1′Cin(0,1)) (B.14) => P(2,4) = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) (B.14) => P(5,7) = H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin((5,7) + T7Cin (5,7)′) (B.13) => P(8,9) = H8 V T9 V H9′Cin(8,9) (C.20) P0 = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) V H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin(5,7)′) V ((H8′T9 + H8T9′)y′ + H0y) V (H9′Cin(8,9)y′ + (T1Cin(0,1)′ + G1′Cin(0,1))y) (B.16) => P(0,1) = H0 V (T1Cin(0,1)′ + G1′Cin(0,1)) (B.14) => P(2,4) = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) (B.14) => P(5,7) = H5 V (G6 + T6G7′) V ((T7′ + G7′H6)Cin(5,7) + T7Cin(5,7)′) (B.16) => P(8,9) = H8 V (T9Cin(8,9)′ + G9′Cin(8,9)) (C.21) P0 = H2 V (G3 + T3G4′) V ((T4′ + G4′H3′)Cin(2,4) + T4Cin(2,4)′) V H5 V (G6 + T6G7′) V ((T7′ + G7′H6′)Cin(5,7) + T7Cin(5,7)′) V H0y + H8y′) V (T1Cin(0,1)′ + G1′Cin(0,1))y V (T9Cin(8,9)′ + G9′Cin(8,9))y′ APPENDIX D For the parity of byte 0 we have i = 0 and: (3) => P0 = yP(0,1) V P(2,7) V y′P(8,9) => (D.1) P0 = yP(0,1) V P(2,5) V P(6,7) V y′P(8,9) By substituting B.13 or B.16 for P(0,1), P(6,7), P(8,9) and using the following formulas (taken from Langdon and Tang, page 12): (D.2) P(i,i+3) = Hi V T(i+1) V T(i+2) V T(i+3) V (H(i+1)G(i+2) + H(i+1)′ H(i+2)G(i+3)) V (H(i+3)′Cin(i,i+3) + H(i+1)′ H(i+2) Cin(i,i+3)) Several formulas can be derived for parity prediction. For instance, using B.13 and B.15, the following formulas are derived: P(0,1) = H0 V T1 V H1′Cin(0,1) P(6,7) = H6 V T7 V H7′Cin(6,7) P(8,9) = H8 V T9 V H9′Cin(8,9) P(2,5) = H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) Thus: (D.3) P0 = yH0 V yT1 V yH1′Cin(0,1) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V T7 V H7′Cin(6,7) V y′H8 V y′T9 V y′H9′Cin(8,9) Using the same equivalencies as in the last section: (D.3) => (D.4) P0 = (yT1 + y′H8) V (yH0 + y′T9) V (yH1′Cin(0,1) + y′H9′Cin(8,9)) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V H6 V T7 V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H7′Cin(6,7) APPENDIX E By substituting equations B.11, B.12 and B.15 into equation D.1 eight formulas for parity of byte S0 of the result are formed. These formulas can be applied for the prediction of parity of all bytes of the results. CASE 1 (E.1.0) PO = (H0 V T1 V H1′Cin(O,1)) y V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin)2,5) + H3′H4Cin(2,5)) V H6 V T7 V H7′Cin(6,7) V (H8 V T9 V H9′Cin(8,9))y′ CASE 1.1 (E.1.1) PO = (yH0 + y′H8) V (yT1 + y′T9)V (yH1′Cin(0,1) + y′H9′Cin(8,9)) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V T7 V H7′Cin(6,7) CASE 1.2 (E.1.2) PO = (yH0 + y′T9) V (yT1 + y′H8) V (yH1′Cin(0,1) + y′H9′Cin(8,9)) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V T7 V H7′Cin(6,7) CASE 2 (E.2.0) PO = (H0 V T1 V H1′Cin(0,1))y V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V T7 V H7′Cin(6,7) V (H8 V (T9Cin′(8,9) V G9′Cin(8,9)))y′ CASE 2.1 (E.2.1) PO = (yH0 + y′H8) V (yT1 + y′(T9Cin(8,9)′ + G9′Cin(8,9))) V yH1′Cin(0,1) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V T7 V H7′Cin(6,7) CASE 2.2 (E.2.2) PO = (yH0 + y′(T9Cin(8,9)′ + G9′Cin(8,9))) V (yT1 + y′H8) V yH1′Cin(0,1) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′CinT1 + y′H8) V yH1′Cin(0,1) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V T7 V H7′Cin(6,7) CASE 3 (E.3.0) PO = (H0 V T1 V H1′Cin(0,1))y V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V (T7Cin(6,7)′ + G7′Cin(6,7)) V (H8 V T9 V H9′Cin(8,9))y′ CASE 3.1 (E.3.1) PO = (yH0 + y′H8) V (yT1 + y′T9) V (yH1′Cin(0,1) + y′H9′Cin(8,9)) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V (T7Cin(6,7)′ + G7′Cin(6,7)) CASE 3.2 (E.3.2) PO = (yH0 + y′T9) V (yT1 + y′H8) V (yH1′Cin(0,1) + y′H9′Cin(8,9)) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V (T7Cin(6,7)′ + G7′Cin(6,7)) CASE 4 (E.4.0) PO = (H0 V T1 V H1′Cin(0,1))y V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V (T7Cin(6,7)′ + G7′Cin(6,7)) V (H8 V (T9Cin′(8,9) V G9′Cin(8,9)))y′ CASE 4.1 (E.4.1) PO = (yH0 + y′H8) V (yT1 + y′(T9Cin(8,9)′ + G9′Cin(8,9))) V yH1′Cin(0,1) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V (T7Cin(6,7)′ + G7′Cin(6,7)) CASE 4.2 (E.4.2) PO = (yH0 + y′(T9Cin(8,9)′ + G9′Cin(8,9))) V (yT1 + y′H8) V yH1′Cin(0,1) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V (T7Cin(6,7)′ + G7′Cin(6,7)) CASE 5 (E.5.0) PO = (H0 V (T1Cin(0,1)′ + G1′Cin(0,1))y V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V T7 V H7′Cin(6,7) V (H8 V T9 V H9′Cin(8,9))y′ CASE 5.1 (E.5.1) PO = (yH0 + y′H8) V (y(T1Cin(0,1)′ + G1′Cin(O,1)) + y′T9) V y′H9′Cin(8,9) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V T7 V H7′Cin(6,7) CASE 5.2 (E.5.2) PO = (yH0 + y′T9) V (y(T1Cin(0,1)′ + G1′Cin(0,1)) + y′H8) V y′H9′Cin(8,9) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V T7 V H7′Cin(6,7) CASE 6 (E.6.0) PO = (H0 V (T1Cin(0,1)′ + G1′Cin(0,1))y V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V T7 V H7′Cin(6,7) V (H8 V (T9Cin(8,9)′ V G9′Cin(8,9)))y′ CASE 6.1 (E.6.1) PO = (yH0 + y′H8) V H2 V T3 V T4 V T5 V (y(T1Cin(0,1)′ + G1′Cin(0,1)) + y′(T9Cin(8,9)′ + G9′Cin(8,9))) V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V T7 V H7′Cin(6,7) CASE 6.2 (E.6.2) PO = (yH0 + y′(T9Cin(8,9)′ + G9′Cin(8,9))) V (y(T1Cin(0,1)′ + G1′Cin(0,1)) + y′H8) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V T7 V H7′Cin(6,7) CASE 7 (E.7.0) PO = (H0 V (T1Cin(0,1)′ + G1′Cin(0,1))y V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V (T7Cin(6,7)′ + G7′Cin(6,7)) V (H8 V T9 V H9′Cin(8,9))y′ CASE 7.1 (E.7.1) PO = (yH0 + y′H8) V (y(T1Cin(0,1)′ + (G1′Cin(0,1)) + y′T9) V y′H9′Cin(8,9) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V (T7Cin(6,7)′ + G7′Cin(6,7)) CASE 7.2 (E.7.2) PO = (y(T1Cin(0,1)′ + G1′Cin(0,1)) + y′H8) V (yH0 + y′T9) V y′H9′Cin(8,9) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V (T7Cin(6,7)′ + G7′Cin(6,7)) CASE 8 (E.8.0) PO = (H0 V (T1Cin(0,1)′ + G1′Cin(0,1))y V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V (T7Cin(6,7)′ + G7′Cin(6,7)) V (H8 V (T9Cin(8,9)′ V G9′Cin(8,9)))y′ CASE 8.1 (E.8.1) PO = (yH0 + y′H8) V H2 V T3 V T4 V T5 V (y(T1Cin(0,1)′ + G1′Cin(0,1)) + y′(T9Cin(8,9)′ + G9′Cin(8,9))) V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V (T7Cin(6,7)′ + G7′Cin(6,7)) CASE 8.2 (E.8.2) PO = (yH0 + y′(T9Cin(8,9)′ + G9′Cin(8,9))) V (y(T1Cin(0,1)′ + G1′Cin(0,1)) + y′H8) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V (T7Cin(6,7)′ + G7′Cin(6,7)) APPENDIX F This appendix describes the implementation of an existing schema for 32-bit adder parity predict (1) and the schema proposed for 34-bit adder parity predict. The CMOS technology chosen allows up to 9-way NANDs (3.9ns, 6 cells), ANDs (3.8ns, 6 cells), NORs (4.0ns, 6 cells), ORs (4.2ns, 6 cells); 2x8 AND-ORs (4.3ns, 9 cells); 3x4 AND-ORs (4.1ns, 7 cells); 2x4 OR-ANDs (4.0ns, 5 cells); 2 input XOR (2.6ns, 3 cells); and 2 input XOR not (3.3ns, 3 cells). Also 3 input XORs (4.7ns, 5 cells) are allowed producing parity prediction in five stages of delay, however, they are not used because this circuit has a prohibitive delay (an equivalent implementation using two levels of 2 input XORs is slightly faster). The existing schema for a 32-bit adder parity predict has been implemented in the chosen technology. Shown below is a table which gives the terms that are calculated per each level. 32-Bit Adder Parity Predict Level 0 Ai, Bi , Ai′, Bi′ Level 1 Hi, Hi′, Ti, Ti′, Gi, Gi′, T(i,i+1), T(i,i+1)′, G(i,i+1), G(i,i+1)′, T(i,i+2), T(i,i+2)′, T(i,i+3), T(i,i+3)′, (G3 + T3G4′), G4′h3′, G(5,6)′T(5,6)′, G(6,7)′T(6,7)′ Level 2 (H0 V H2), A=(H5 V (G3 + T3G4′)), (T6G7′ + G6′H7 + G6G7), (T4′ + G4′H3′), (G(5,7), + T(5,7)), G(5,7) ′T(5,7)′, T1G(2,3)′T(2,3)′, T1G(2,3)′G(4,5)′T(4,5)′, T1G(2,3)′G(4,5)′G(6,7)′T(6,7)′, G1′G(2,3), G1′T(2,3)G(4,5), G1T(2,3)T(4,5)G(6,7), G1′T(2,3)T(4,5)T(6,7), (T6′T7 + T6T7′ + G6′G7), G(5,7)′,T4G(5,7)′), G(2,7), G(2,7)′ Level 3 B1=((H0 V H2) V (T6G7′ + G6′H7 + G6G7)), C1=((T4′ + G4′H3′)(G(5,7) + T(5,7)) + T4(G(5,7)′T(5,7)′)), D=(T1G(2,7)′T(2,7)′ + G1′(G(2,7) + T(2,7)) = (T1G(2,3)′T(2,3)′ + T1G(2,3)′G(4,5)′T(4,5)′ + T1G(2,3)′G(4,5)′G(6,7)′T(6,7)′ + G1′G(2,3) + G1′T(2,3)G(4,5) + G1′T(2,3)T(4,5)G(6,7) + G1′T(2,3)T(4,5)T(6,7)) BO=((H0 V H2) V (T6′T7 + T6T7′ + G6′G7)), CO=(((T4′ + G4′H3′)′)G(5,7) + T4G(5,7)′), D1=(T1G(2,7)′ + G1′G(2,7)) Level 4 (A V B1), (A V B0), (C1 V D1) , (C0 V D0) Level 5 E = ((A V B1) V (C1 V D1)), F = ((A V B0) V (C0 V D0)) Level 6 PO = (Cin & E) + (Cin′ & F) A table is also given for the proposed schema for 34-bit adder parity predict which contains the lowest logic level at which each term can be produced. 34-bit Adder Parity Predict Level 0 Ai, Bi,Ai′,Bi′ Level 1 Hi, Hi′, Ti, Ti′, Gi, Gi′, T(i,i+1), T(i,i+1)′, G(i,i+1), G(i,i+1)′ , T(i, i+2), T(i,i+2)′, T(i,i+3), T(i,i+3)′, (G3 + T3G4′), (G7′ + G8 + T8T9), (G6 + T6G7′), (G(8,9) + T(8,9)), (G(8,9) + T(8,9))′, G7′H6′, (yT1 + y′H8), (yH0 + y′T9) Level 2 (H2 V T4), ((G3 + T3G4′) V H5), ((G6 + T6G7′) V (yT1 + y′H8)), ((G(5,9) + T(5,9))(H4′ + H3)), G(5,9)(H4′ + H3), (T7′ + G7′H6′)(G(8,9) + T(8,9)), (T7′ + G7′H6′)G(8,9), T7G(8,9)′T(8,9)′, T7G(8,9)′, G(2,9), yH1′G(2,3), yH1T(2,3)G(4,5), yH1′T(2,3)T(4,5)G(6,7), yH1′T(2,5)T(6,7)G(8,9), y′H1′T(2,5)T(6,9),y′H9′ Level 3 J= ((H2 V T4) V ((G3 + T3G4′) V H5)), K= (((G6 + T6G7′) V ( yT1 + y′H8)) V (yH0 + y′T9)), LO=((T7′ + G7′H6′)G(8,9) + T7G(8,9)′), L1=((T7′ + G7′H6′)(G(8,9) + T(8,9)) + T7G(8,9)′T(8,9) M1=(yH1′G(2,9) + yH1′T(2,9) + y′H9′), M0=(yH1′G(2,9)) Level 4 (J V K), (LO V L0), (L1 V M1) Level 5 E = ((J V K) V (L1 V M1)), F = ((J V K) V (L0 V M0)) Level 6 PO = (Cin & E) + (Cin′ & F) APPENDIX G In the addition of 34 bits with the selection of the 32 most or least significant bits where the final result depends on the instruction, the parity for the 32-bit sum as stated in equation (1) is: (1) Pi = yP(m,m+7) + y′P(n,n+7) where i belongs to N, m = 8i, n = m+2, and 0 ≦ i ≦ 3, y being the variable that denotes the selection, Pi being the parity of the byte position i, and P(a,b) is the parity of sum bits a to b. (1) => Pi = yP(m,m+7) V y′P(n,n+7) = yP(m,n-1) V yP(n,m+7) V y′P(n,m+7) V y′P(m+8,n+7) = yP(m,n-1) V y′P(m+8,n+7) V P(n,m+7) = yP(m,m+1) V y′P(m+8,m+9) V P(m+2,m+7) and for the ODD parity: Pi′ = (yP(m,m+1))′ V y′P(m+8,m+9) V P(m+2,m+7) For byte 0, i = 0, m = 0 and (G.1) P0′ = (yP(0,1))′ V y′P(8,9) V P(2,7) Using the parity predict for two bit groups as stated in (A.3) and letting Cini mean the carry into bit i, we have: (yP(0,1))′ = (y(T1 V H0 V H1′Cin1))′ = (yT1 V yH0 V yH1′Cin1)′ = (y′ + T1′) V yH0 V yH1′Cin1 and y′P(8,9) = y′T9 V y′H8 V y′H9′Cin9 Thus (G.2) (yP(0,1))′ V y′P(8,9) = (y′ + T1′) V y′T9 V yH0 V y′H8 V yH1′Cin1 V y′H9′Cin9 Let (a) = (y′ + T1′) V y′T9 = y′T9′ + T1′T9′ + yT1′ and (b) = yH0 V y′H8 = yH0 + y′H8 (G.2) => (G.3) (yP(0,1))′ V y′P(8,9) = (yH0 + y′H8) V (y′T9′ + T1′T9′ + yT1′) V yH1′Cin1 V y′H9′Cin9 Let K = (a) V (b) = (y′T9′ + T1′T9′ + yT1′)(H0′ + y′) (H8′ +y) + (y + T9)(T1 + T9)(y′ + T1) (yH0 + y′H8) = (y′T9′ + T1′T9′ + yT1′)(H0′H8′ + yH0′ + y′H8′) +(yT1 + T9) (y′ + T1) (yH0 + y′H8) = y′T9′H8′ + T1′T9′H0′H8′ + yT1′H0′ + (yT1 + y′T9 + T1T9) (yH0 + y′H8) (G.3.a) K = y′T9′T8′ + T1′T9′H0′H8′ + yT1′H0′ + y′T9H8 + yT1H0 Thus (G.3) => (yP(0,1))′ V y′P(8,9) = K V yH1′Cin1 V y′H9′Cin9 Using the three bit group parity as stated in B.18 we have for P(2,7) the following. P(2,7) = P(2,4) V P(5,7) = H5 V T7 V (G6 + T6G7′) V Cin7(H6 + H7′) V H2 V T4 V (G3 + T3G4′) V Cin4(H3 + H4′) (G.4) P(2,7) = H5 V T7 V (G6 + T6G7′)′ V Cin7 (H6 + H7′) V H2 V T4 V (G3 + T3G4′)′ V Cin4(H3 + H4′) but T7 V (G6 + T6G7′)′ = T7′(T6′ + G6′G7) + T7(G6 + T6G7′) = T6′T7′ + T7G6 + T6H7 and T4 V (G3 + T3G4′)′ = T3′T4′ + T4G3 + T3H4 Thus (G.4) => P(2,7) = H2 V H5 V (T6′T7′ + T7G6 + T6H7) V (T3′T4′ + T4G3 + T3H4) V Cin7(H6 + H7′) V Cin4(H3 + H4′) and (G.5) P0 = K V H2 V H5 V (T6′T7′ + T7G6 + T6H7) V (T3′T4′ + T4G3 + T3H4) V yH1′Cin1 V y′H9′Cin9 V Cin7(H6 + H7′) V Cin4(H3 + H4′) but M = Cin7(H6 + H7′) V (T6′T7′ + T7G6 + T6H7) = (Cin7′ + H6′H7)(T6′T7′ + T7G6 + T6H7) + Cin7 (H6 + H7′) (T6 + T7)(T7′ + G6′) (T6′ + H7′) = (T6′T7′ + T7G6 + T6H7)Cin7′ + H7G6 + Cin7 (H6 + H7′) (T6T7′ + T6G6′ + T7G6′) (T6′ + H7′) = (T6′T7′ + T7G6 + T6H7)Cin7′ + H7G6 + Cin7H7′(T6T7′ + T6G6′ + T7G6′) = (T6′T7′ + T7G6 + T6H7)Cin7′ + H7G6 + Cin7(T6T7′ + T6G6′T7′ + T6G6′G7 + G7G6′) = (T6′T7′ + T7G6 + T6H7)Cin7′ + H7G6 + Cin7(G6′G7 + T6T7′) = (T6′T7′ + T7G6 + T6H7) (T(8,9)′G(8,9)′ + G(8,9)′Cin9′) + H7G6 + (G(8,9) + T(8,9)Cin9) (G6′G7 + T6T7′) thus P0 = K V H2 V H5 V (T3′T4′ + T4G3 + T3H4) V M V yH1′Cin1 V y′H9′Cin9 V Cin4(H3 + H4′) but Cin1 = G(2,9) + T(2,9)Cin9 and Cin4 = G(5,9) + T(5,9)Cin9 thus (G.5) => (G.6) P0 = K V H2 V H5 V (T3′T4′ + T4G3 + T3H4) V M V yH1′ (G(2,9) + T(2,9)Cin9) V y′H9′Cin9 V (G(5,9) + T(5,9)Cin9) (H3 + H4′) For Cin9 = 1 (G.5.a) M(C=1) = T6′T7′W′ + T7G6W′ + T6H7W′ + H7G6 + WG6′G7 + WT6T7′ where W = (G(8,9) + T(8,9)) = G8 + T8G9 + T8T9 = G8 + T8T9 and W′ = (G(8,9) + T(8,9))′ = G(8,9)′T(8,9)′ = T8′ + G8′T9′ then (G.6) => (G.7) P0(C=1) = K V H2 V H5 V (T3′T4′ T4G3 + T3H4) V M(C=1) V yH1′(G(2,9) + T(2,9)) V y′H9′ V (G(5,9) + T(5,9))(H3 + H4′) And for Cin9 = 0 (G.7.a) M(C=0) = T6′T7′G(8,9)′ + T7G6G(8,9)′ + T6H7G(8,9)′ H7G6 + G(8,9)G6′G7 + G(8,9)T6T7′ then (G.6) => (G.8) P0(C=0) = K V H2 V H5 V (T3′T4′ + T4G3 + T3H4) V M(C=0) V yH1′G(2,9) V G(5,9) (H3 + H4′) Thus, the parity for byte 0 is: (G.9) P0 = P0(C=1)Cin9 + P0(C=0)Cin9′ It can be observed that equation (G.9) can be produced by a 2x2 AND-OR array (AO) or equivalent array and that actual technologies provide arrays with an equal to or higher level of function. Thus, if a technology offers a 3x4 AO or equivalent array, instead of computing P0(C=1) and P0(C=0), it is possible to break those paths in two because P0(C=1) and P0(C=0) can be written as follows: P0(C=1) = Pa0 V Pb0 and P0(C=0) = Pc0 V Pd0 where (G.9.a) Pa0 = K V H2 V H5 V y′H9′ V M(C=1) (G.9.b) Pb0 = (T3′T4′ + T4G3 + T3H4) V yH1′(G(2,9) + T(2,9)) V (G(5,9) + T(5,9))(H3 + H4′) (G.9.c) Pc = K V H2 V H5 V M(C=0) (G.9.d) Pd = (T3′T4′ + T4G3 + T3H4) V yH1′G(2,9) V G(5,9)(H3 + H4′) then (G.9) => (G.10) P0 = (Pa0 V Pb0)Cin9 + (Pc0 V Pd0)Cin9′ = Pa0′Pb0Cin9 + Pa0Pb0′Cin9 + Pc0′Pd0Cin9′ + Pc0Pd0′Cin9′ And the even parity for S0 is: Pe0 = P0′ = (P0(C=1)Cin9 + P0(C=0)Cin9′)′ = (P0(C=1)′ + Cin9′)(P0(C=0)′ + Cin9) (G.11) Pe0 = P0(C=1)′P0(C=0)′ + P0(C=1)′Cin9 + P0(C=0)′Cin9′ If A, B, and C are Boolean, then AC + AB + B′C = AB + B′C Thus (G.12) => Pe0 = P0(C=1)′Cin9 + P0(C=0)′Cin9′ = (Pa0 V Pb0)′Cin9 + (Pc0 V Pd0)′Cin9′ = Pa0′Pb0′Cin9 + Pa0Pb0Cin9 + Pc0′Pd0′Cin9′ + Pc0Pd0Cin9′

Claims: A data processing system including an adder (34) for adding two binary data operands A and B, said operands comprising digital signals representing the magnitude of binary numbers represented by said data operands, said adder (34) providing a plurality N of result bits having a predetermined magnitude order and representing the result of addition of said binary data operands, said data processing system comprising: selection signal generating means (40) for producing a binary selection signal indicating selection of a predetermined result bits, said signal having a first value indicated by y, or a complementary value, indicted by y′; selection means (36) for selecting bits of said N result bits to provide selected result portions on an output port, said selection occurring in response to said selection signal, said selection means (36) providing K fewer bits than said result bits where K is an integer, less than N, and providing as a selected result portion either the N-K most significant bits of said result bits in response to y or the N-K least significant bits of said result bits in response to y′; and parity prediction means (54) for providing one parity bit for each L bits of said selected result portions, where L is an integer greater than K and less than N, said parity bit determined in response to M bits of said selected result portions, where M is equal to L + K, O being the most significant bit of said M bits and M-1 being the least significant bit of said M bits, said parity bit being generated by logic circuitry executing the relationship: P(O,M-1) = yP(O,K-1) V P(K,M-K-1) V y′P(M-K,M-1) where, adjacent terms indicate the logical AND of these terms, V indicates the Exclusive-OR operation, and P(x,y) indicates the parity of bits X through y. The data processing system of Claim 1 where L is equal to eight and K is equal to two. The data processing of claim 1, wherein said selection means (36) providing as selected result portions two less bits than said result and providing the most significant bits of said result in response to selection signal y, and the least significant bits of said result in response to selection signal y′; and said parity prediction means (54) are responsive to said operands and to said selection signal y,y′ for predicting and indicating the parity of said selected result portion and for providing one parity bit for each eight bits of said selected result portion. The data processing system according to one of the claims 1 to 3, wherein the parity bit for the most significant eight bits of said selected result portion is determined by logic gates executing the formula: P0 = (yT1 + y′H8) V (yH0 + y′T9) V (yH1′(G(2,9) + T(2,9)Cin) + y′H9′Cin) V H2 V T4 V H5 V (G3 + T3G4′) V (H4′ + H3)(G(5,9) + T(5,9)Cin) V (G6 + T6G7′) V ((T7′ + G7′H6′) (G(8,9) + T(8,9)Cin) + T7(G(8,9) + T(8,9)Cin)′) where + is the logical OR operation, adjacent terms indicate the AND operation, V is the EXCLUSIVE-OR operation, Cin is the carry bit into the said most significant eight bits, T(i) = A(i) + B(i), G(i) = A(i)B(i), H(i) = A(i) V B(i), A(i) is the ith bit of the first of said data operands and B(i) is the ith bit of the second of said data operands, i is an integer, and 0 is the most significant bit position of said result and bit position i of said result is less significant than bit position i-1, and more significant than bit position i+1. The data processing system according to one of the claims 1 to 3, wherein the parity bit for the most significant eight bits of said selected result portion is determined by logic gates executing the formula: P0 = yH0 V yT1 V yH1′Cin(0,1) V H2 V T3 V T4 V T5 V (H3G4 + H3′H4G5) V (H5′Cin(2,5) + H3′H4Cin(2,5)) V H6 V T7 V H7′Cin(6,7) V y′H8 V y′T9 V y′H9′Cin(8,9) where + is the logical OR operation, the AND operation is performed on adjacent terms, V is the Exclusive-OR operation, Cin is the carry bit into the nibble, T(i) = A(i) + B(i), G(i) = A(i) B(i), H(i) = A(i) V B(i), A(i) is the ith bit of the first of said data operands and B(i) is the ith bit of the second of said data operands, and each bit of an operand is occupying a bit position i, where i is a positive integer and i ≧0, the significance of the bits of an operand being inversely related to their bit positions. The data processing system according to one of the claims 1 to 3, wherein the parity bit for the most significant eight bits of said selected result portion is determined by logic gates executing the formula: P0 = (yT1 + y′H8) V (yH0 + y′T9) V (yH1′(G(2,9) + T(2,9)Cin) + y′H9′Cin) V H2 V T4 V H5 V (G3 + T3G4′) V (H4′ + H3)(G(5,9) + T(5,9)Cin) V (G6 + T6G7′) V ((T7′ + G7′H6′) (G(8,9) + T(8,9)Cin) + T7(G(8,9) + T(8,9)Cin)′) where + is the logical OR operation, the AND operation is performed on adjacent terms, V is the Exclusive-OR operation, Cin is the carry bit into the byte, T(i) = A(i) + B(i), G(i) = A(i) B(i), H(i) = A(i) V B(i), A(i) is the ith bit of the first of said data operands and B(i) is the ith bit of the second of said data operands, i is an integer, and 0 is the most significant bit position of the ten bits from which said result portion is selected and 9 is the least significant bit position of the ten bits from which said result portion is selected. The data processing system according to one of the claims 1 to 3, wherein the parity bit for the most significant eight bits of said selected result portion is determined by logic gates executing the formula: P0 = K V H2 V H5 V (T6′T7′ + T7G6 + T6H7) V (T3′T4′ + T4G3 + T3H4) V yH1′Cin1 V y′H9′Cin9 V Cin7(H6 + H7′) V Cin4 (H3 + H4′) where K = y′T9′T8′ + T1′T9′H0′H8′ + yT1′H0′ + y′T9H8 + yT1H0 + is the logical OR operation, the AND operation is performed on adjacent terms, V is the Exclusive-OR operation, Cin is the carry bit into the byte, T(i) = A(i) + B(i), G(i) = A(i) B(i), H(i) = A(i) V B(i), A(i) is the ith bit of the first of said data operands and B(i) is the ith bit of the second of said data operands, i is an integer, and 0 is the most significant bit position of the ten bits from which said result is selected and 9 is the least significant bit position of the ten bits from which said result portion is selected. The data processing system according to one of the claims 1 to 3, wherein the parity bit for the most significant eight bits of said selected result portion is determined by logic gates executing the formula: P0 = K V H2 V H5 V (T3′T4′ + T4G3 + T3H4) V M V yH1′(G(2,9) + T(2,9)Cin9) V y′H9′Cin9 V (G(5,9) + T(5,9)Cin9) (H3 + H4′) where K = y′T9′T8′ + T1′T9′H0′H8′ + yT1′H0′ + y′T9H8 + yT1H0 M = (T6′T7′ + T7G6 + T6H7) (T(8,9)′G(8,9)′ + G(8,9)′Cin9′) + H7G6 + (G(8,9) + T(8,9)Cin9)(G6′G7 + T6T7′) + is the logical OR operation, the AND operation is performed on adjacent terms, V is the Exclusive-OR operation, Cin is the carry bit into the byte, T(i) = A(i) + B(i), G(i) = A(i) B(i), H(i) = A(i) V B(i), A(i) is the ith bit of the first of said data operands and B(i) is the ith bit of the second of said data operands, i is an integer, and 0 is the most significant bit position of the ten bits from which said result portion is selected and 9 is the least significant bit position of the ten bits from which said result portion is selected. The data processing system according to one of the claims 1 to 3, wherein the parity bit for the most significant eight bits of said selected result portion is determined by logic gates executing the formula: P0 = P0(C=1)Cin9 + P0(C=0)Cin9′ where P0(C=1) = K V H2 V H5 V (T3′T4′ + T4G3 + T3H4) V M(C=1) V yH1′(G(2,9) + T(2,9)) V y′H9′ V (G(5,9) + T(5,9))(H3 + H4′), P0(C=0) = K V H2 V H5 V (T3′T4′ + T4G3 + T3H4) V M(C=0) V yH1′G(2,9) V G(5,9) (H3 + H4′), M(C=1) = T6′T7′W′ + T7G6W′ + T6H7W′ + H7G6 + WG6′G7 + WT6T7′, W = G8 + T8G9 + T8T9, M(C=0) = T6′T7′G(8,9)′ + T7G6G(8,9)′ + T6H7G(8,9)′ H7G6 + G(8,9)G6′G7 + G(8, 9)T6T7′, K = y′T9′T8′ + T1′T9′H0′H8′ + yT1′H0′ + y′T9H8 + yT1H0 + is the logical OR operation, the AND operation is performed on adjacent terms, V is the Exclusive-OR operation, Cin is the carry bit into the byte, T(i) = A(i) + B(i), G(i) = A(i) B(i), H(i) = A(i) V B(i), A(i) is the ith bit of the first of said data operands and B(i) is the ith bit of the second of said data operands, i is an integer, and 0 is the most significant bit position of the ten bits from which said result portion is selected and 9 is the least significant bit position of the ten bits from which said result portion is selected. The data processing system according to one of the claims 1 to 3, wherein the parity bit for the most significant eight bits of said selected result portion is determined by logic gates executing the formula: P0 = Pa′PbCIN9 + PaPb′CIN9 + Pc′PdCIN9′ + PcPd′CIN9′ where Pa = K V H2 V H5 V y′H9′ V M(C=1), Pb = (T3′T4′ + T4G3 + T3H4) V yH1′(G(2,9) + T(2,9)) V (G(5,9) + T(5,9))(H3 + H4′), Pc = K V H2 V H5 V M(C=0), Pd = (T3′T4′ + T4G3 + T3H4) V yH1′G(2,9) V G(5,9) (H3 + H4′), M(C=1) = T6′T7′W′ + T7G6W′ + T6H7W′ + H7G6 + WG6′G7 + WT6T7′, W = G8 + T8G9 + T8T9, M(C=0) = T6′T7′G(8,9)′ + T7G6G(8,9)′ + T6H7G(8,9)′ H7G6 + G(8,9)G6′G7 + G(8,9)T6T7′, K = y′T9′T8′ + T1′T9′H0′H8′ + yT1′H0′ + y′T9H8 + yT1H0 + is the logical OR operation, the AND operation is performed on adjacent terms, V is the Exclusive-OR operation, CIN is the carry bit into the byte, T(i) = A(i) + B(i), G(i) = A(i) B(i), H(i) = A(i) V B(i), A(i) is the ith bit of the first of said data operands and B(i) is the ith bit of the second of said data operands, i is an integer, and 0 is the most significant bit position of the ten bits from which said result portion is selected and 9 is the least significant bit position of the ten bits from which said result portion is selected. The data processing system of Claim 10 further comprising even parity means for calculating the even parity of said bytes of said selected result portion, said even parity means comprising logical gates for executing the formula Pe = Pa′Pb′Cin9 + PaPbCin9 + Pc′Pd′Cin9′ + PcPdCin9′ The data processing system of at least one of claims 1 to 11, wherein said result comprises 34 bits and said selected result portion comprises 32 bits. The data processing system of claim 1 comprising: selection signal means (40) for producing a selection signal indicating a selected result portion; selection means (36) connected to said adder output and to said selection signal means (40) for selecting and providing data bits of said result in response to said selection signal, said selected result portion being provided at an output port of said selection means (36), said selection means (36) having an input port for receiving said data bits and having an input port for receiving said selection signal; and parity prediction means (54) responsive to said operands and to said selection signal for predicting and indicating the parity of said selected result portion, said parity prediction means (54) having a first input port for receiving said data operands, a second input port for receiving said selection signal, and an output port for providing a predicted parity output signal. The parity prediction system according to claims 1 or 13, further comprising: parity generating means (52) having an input port for receiving said selected result portion from said output port of said selection means (36) and an output port for providing a generated parity output signal; and parity comparison means (56,58) for comparing said generated parity output signal and said predicted parity output signal, said parity comparison means (56,58) having an error output terminal for providing an error signal when said generated parity output signal and said predicted parity output signal do not match.

Inventors: FEAL BRICE JOHN, PUTRINO MICHAEL, SCHWARZ ERIC MARK, VASSILIADIS STAMATIS, FEAL, BRICE JOHN, PUTRINO, MICHAEL, SCHWARZ, ERIC MARK, VASSILIADIS, STAMATIS
Applicants: IBM, INTERNATIONAL BUSINESS MACHINES CORPORATION
Application year: 1989
Main classification: G06F11
IPC codes: G06F11, G06F7