This application is based upon and claims the benefit of priority of the prior Japanese Patent Application No. 2011-205302, filed on Sep. 20, 2011, the entire contents of which are incorporated herein by reference.
The embodiments discussed herein are related to a parity predictor, a Carry-Less multiplier and an arithmetic operation processing apparatus.
The Carry-Less multiplier that performs Carry-Less multiplication used in CRC (Cyclic Redundancy Check) and the like to detect an error in a data stream has been known. First, the Carry-Less multiplication is explained.
In the normal multiplication to multiply multiplicand data by multiplier data, first, the multiplier data is broken down into every bit, and the partial product of the multiplicand data and the partial multiplier data of each bit is obtained. Then, with respect to the obtained partial product, digit alignment according to the position of the bit of the partial multiplier data used to calculate the partial product is performed. Then, the partial products of the same digits are added to each other to obtain the multiplication result. By contrast, in the Carry-Less multiplication, instead of the addition, the multiplication result is obtained by calculating the XOR of the partial products of the same digits.
The Carry-Less multiplication is further explained.
Meanwhile, in the explanation below, the logical AND (AND operation) of value a and value b is represented as “a*b”, the XOR (XOR operation) of value a and value b is represented as “a+b”, and the logical sum (OR operation) of value a and value b is represented as “âb”.
In
Furthermore, Z represents the multiplication result of the Carry-Less multiplication of the multiplicand A and the multiplier Y, and “z6 z5 z4 z3 z2 z1 z0” represents the respective bit of the multiplication result Z. Meanwhile, in the Carry-Less multiplication, the bit z7 being the upper digit of the bit z6 is always “0”.
In the Carry-Less multiplication, the respective bit of the multiplication result Z is calculated according to formula [1] below.
z0=d*y0
z1=c*yo+d*y1
z2=b*y0+c*y1+d*y2
z3=a*y0+b*y1+c*y2+d*y3
z4=a*y1+b*y2+c*y3
z5=a*y2+b*y3
z6=a*y3 [1]
Meanwhile, as another background art, a technique to detect an error in an operation result due to a soft error that occurs in an operation circuit with radiation such as alpha ray and the like entering the operation circuit. In this technique, first, a register holds a first numerical value in the gray code format. Next, numerical operation means obtains and outputs, from the first numerical value held in the register, a second numerical value being the result of a prescribed numerical operation with respect to the first numerical value in the gray code format. Next, parity operation means generates a second parity value being the parity value with respect to the second value, using a first parity value being the parity value with respect to the first numerical value held in the register to perform a prescribed logical operation corresponding to the numerical operation. Then, parity check means performs parity check with respect to the second numerical value output from the numerical operation means, using the second parity value generated by the parity operation means.
Meanwhile, techniques described in the following documents have been known.
Incidentally, in recent years, there has been an increasing possibility of malfunction of an arithmetic operation unit due to a soft error and the like with semiconductor miniaturization, raising a need for a mechanism such as parity check and circuit redundancy for ensuring reliability. However, the conventional Carry-Less multiplier is not equipped with a mechanism such as parity check and circuit redundancy, and for this reason, it is impossible to detect the malfunction of the multiplier.
According to an aspect of the embodiments, a parity predictor configured to predict a parity value of a Carry-Less multiplication result of a multiplicand data string and a multiplier data string being two data strings in which q (q is a natural number) data units being p-bit (p is a natural number equal to two or above) data, the parity predictor includes a low-order parity prediction unit configured to predict a parity value of a first data unit from lower order in a multiplication result data string representing the Carry-Less multiplication result based on a value and a parity value of a first data unit being a first data unit from lower order in each of the multiplicand data string and the multiplier data string; and a high-order parity prediction unit configured to predict a parity value for data at a high-order p−1 bit of the multiplication result data string being data following 2q−1-th data unit from lower order in the multiplication result data string, based on a value and a parity value for a q-th data unit being a q-th data unit from lower order in each of the multiplicand data string and the multiplier data string.
The object and advantages of the embodiment will be realized and attained by means of the elements and combinations particularly pointed out in the claims.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the embodiment, as claimed.
Preferred embodiments of the present invention will be explained with reference to accompanying drawings.
First,
The parity predictor 1 predicts the parity value of multiplication result data string 4 output from a multiplication circuit that performs Carry-Less multiplication of a multiplicand data string 2 and a multiplier data string 3. When performing a malfunction detection of a Carry-Less multiplier, the parity value of the multiplication result data string 4 that is output when the multiplicand data string 2 and the multiplier data string 3 are input to the Carry-Less multiplier being the target of detection is compared with the prediction result of the parity value by the parity predictor 1. By the comparison of the parity value and the prediction result of the parity value, when a mismatch of them is detected, it is determined that a malfunction has occurred in the Carry-Less multiplier being the detection target.
Meanwhile, in the present embodiment, the multiplicand data string 2 and the multiplier data string 3 are both a data string in which q (here, q is a natural number) data units are lined up.
However, in the explanation below, the number of data units of a multiplicand data string and the number of a multiplier data string are the same q just for the convenience of explanation, and they may be different.
Meanwhile, in this specification, a “data unit” is a p-bit data configured by lining up p (here, p is a natural number equal to or larger than 2) 1-bit data.
In addition, in the explanation below, also for the convenience of explanation, the number of bits of the data unit about the multiplication result data string is q bits being the same as the number of bits of the data unit of the multiplicand data string and the multiplier data string, but the number of bits of the data string about the multiplication result data string may be an integral multiple of p bits. The value of the parity of the part being an integral multiple of p bits, either the value calculated from the multiplication result data string or a the value of the predicted value, may be calculated using the value of the parity of the respective p bit of each.
The parity predictor 1 has a low-order parity prediction unit 10 and a high-order parity prediction unit 20.
The low-order parity prediction unit 10 predicts the parity value of the first data unit from the lower order in the multiplication result data string 4. The low-order parity prediction unit 10 predicts the parity value (low-order parity predicted value) based on the value of the first data unit being the first data unit from the lower order and the parity value in each of the multiplicand data string 2 and the multiplier data string 3.
The high-order parity prediction unit 20 predicts the parity value if the data following the 2q−1-th data unit from the lower order in the multiplication result data string 4, that is, the parity value of the high-order p−1th bit data of the multiplication result data string 4. The high-order parity prediction unit 20 predicts the parity value (high-order parity predicted value) of the p−1-th bit data based on the value of the q-th data unit being the q-th data unit from the lower order and the parity value in the multiplicand data string 2 and the multiplier data string 3.
In addition, the parity predictor 1 further has a middle-order parity prediction unit 30. The middle-order parity prediction unit 30 predicts the parity value of each data unit from the second to 2q−1-th from the lower order in the multiplication result data string 4, when the multiplicand data string 2 and the multiplier data string 3 are a data string in which the plurality of data units described above are lined up. The middle-order parity prediction unit 30 predicts the parity value (middle-order parity predicted value) based on the value and the parity value about each data unit from the first (first data unit) to the q-th (q-th data unit) from the lower order in the multiplicand data string 2 and the multiplier data string 3.
In this embodiment, the middle-order parity prediction unit 30 has a partial multiplication result parity prediction unit 40. The partial multiplication result parity prediction unit 40 predicts the parity value of each data unit for the partial multiplication result data string being the result of the Carry-Less multiplication of the multiplicand data string 2 and a partial multiplier data being one of data units constituting the multiplier data string 3. The middle-order parity prediction unit 30 performs the prediction of the middle-order parity predicted value based on the prediction result be the partial multiplication result parity prediction unit 40.
In the present embodiment, the partial multiplication result parity prediction unit 40 has a partial parity prediction unit 50. The partial parity prediction unit 50 predicts, for each data unit of the partial multiplication result data string described above, the parity value of the data unit.
The parity predictor 1 has the configuration described above. Details of the constituent elements are described later.
Next, the method of prediction of the parity value for the multiplication result data string 4 being the result of the Carry-Less multiplication of the multiplicand data string 2 and multiplier data string 3 used in the parity predictor 1 is described.
Meanwhile, a case in which even-number parity is used for the parity value is used is explained here, and a case in which odd-number parity is used is described later.
In order to facilitate the understanding of the method of prediction in a case in which prediction of the parity value of the multiplication result data string 4 described later, first, the prediction method in a case in which prediction of the parity value of the multiplication result data string 4 is performed without considering the data unit is explained.
Meanwhile, the parity prediction is explained here using the data example in
The data example in
P
—
Z=z6+z5+z4+z3+z2+z1+z0 [2]
is obtained.
Incidentally, substituting the formula [1] presented above into the formula [2],
P
—
Z=a*y0+b*y0+c*y0+d*y0+a*y1+b*y1+c*y1+d*y1+a*y2+b*y2+c*y2+d*y2+a*y3+b*y3+c*y3+d*y3 [3]
is obtained.
In addition, the formula [3] may be transformed into the formula [4] below.
P
—
Z=(a+b+c+d)*(y3+y2+y1+y0) [4]
In the right-hand side of the [4], focusing on the two terms (the terms of XOR) combined by the “*” symbol, “a+b+c+d” is the parity value of the multiplicand A, and “y3+y2+y1+y0” is the parity value of the multiplier Y. That is, assuming the parity value of the multiplicand A as P_A and the parity value of the multiplier Y as P_Y, the formula [5] below is obtained.
P
—
Z=P
—
A*P
—
Y [5]
Then, the value of P_A obtained from the multiplicand A and the value of P_Y obtained from the multiplier Y are substituted into the formula [5] to obtain the value of P_Z. The value is the predicted value of the parity value of the multiplication result Z.
When performing detection of the malfunction of the Carry-Less multiplier, the multiplicand A and the multiplier Y are input to the Carry-Less multiplier, to obtain the multiplication result Z being its output. Then, the parity value P_Z of the multiplication result Z is obtained by the formula [2]. Here, whether or not the parity value P_Z obtained by the formula [2] matches the predicted value obtained by the formula [5] is judged. Here, when they do not match, it is determined that the Carry-Less multiplier has malfunctioned. The malfunction of the Carry-Less multiplier is detected in this way.
Next, the method of prediction in a case in which prediction of the parity of the multiplication result data string 4 is performed for each data unit is explained.
Here, 4-bit data in which four 1-bit data units are lined up is assumed to be a data unit.
First, the prediction method of the parity value for each data unit of the multiplication result data string 4 in a case in which both the multiplicand data string 2 and the multiplier data string 3 are composed of one data unit (that is, in a case in which they are 4-bit data) is explained.
In
Furthermore, Z represents the multiplication result of the Carry-Less multiplication of the multiplicand A and the multiplier Y, and “z6 z5 z4 z3 z2 z1 z0” represents the respective bit of the multiplication result Z. Meanwhile, in the Carry-Less multiplication, the bit z7 being the upper digit of the bit z6 is always “0”.
In a similar manner to the case in
Here, the parity value of the respective data units of the multiplication result Z is assumed as P_Z0 and P_Z1. Here, P_Z0 is the parity value of the first data unit from the lower order in the (that is, “z3 z2 z1 z0”) multiplication result Z. In addition, P_Z1 is the parity value of the data following the first data unit from the lower order in the multiplication result Z, that is, the parity value of the high-order 3-bit data (“z6 z5 z4”) of the multiplication result Z.
At this time, the parity values P_Z0 and P_Z1 are respectively, according to the definition of the parity value,
P
—
Z0=z3+z2+z1+z0=(a*y0+b*y1+c*y2+d*y3)+(b*y0+c*y1+d*y2)+(c*y0+d*y0+d*y0 [6]
P
—
Z1=z6+z5+z4=a*y3+(a*y2+b*y3)+(a*y1+b*y2+c*y3) [7].
Incidentally, it has already been explained that the parity value P_Z of the multiplication result Z in the case without consideration of the data unit is obtained by the formula [2]. Comparing the formula [2] with the formula [6] and the formula [7], the formula [8] below is obtained.
P
—
Z=P
—
Z0+P—Z1 [8]
Here, considering the definition of XOR, it is obvious that the formula [8] may be transformed into the formula [9] and the formula [10] below.
P
—
Z0=P—Z+P—Z1 [9]
P
—
Z1=P—Z+P—Z0 [10]
Here, substituting the formula [7] into the formula [9] and substituting the formula [5] and the formula [6] into the formula [10], the formula [11] and the formula [12] below are obtained.
P
—
Z0=P—A*P—Y+a*y1+(a*y2+b*y2)+(a*y3+b*y3+c*y3)=P—A*P—Y+a*y1+(a+b)*y2+(a+b+c)*y3 [11]
P
—
Z1=P—A*P—Y+(a*y0+b*y1+c*y2+d*y3)+(b*y0+c*y1+d*y2)+(c*y0+d*y0+d*y0=P—A*P—Y+(a+b+c+d)*y0+(b+c+d)*y1+(c+d)*y2+d*y3 [12]
Then, the respective values of a, b, c, and d constituting the multiplicand A, the respective values of y0, y1, y2 and the y3 constituting the multiplier Y, and the value of P_Y obtained from these values are substituted into the formula [11] and the formula [12] respectively. Then, the values of the P_Z0 and the P_Z1 obtained from the formula [11] and the formula [12] at this time are assumed as the predicted value of the parity value of the multiplication result Z.
When performing detection of the malfunction of the Carry-Less multiplier, the multiplicand A and the multiplier Y are input to the Carry-Less multiplier, to obtain the multiplication result Z being its output. Then, the parity values P_Z0 and the P_Z1 of the multiplication result Z are obtained by the formula [6] and the formula [7]. Here, whether or not the parity values P_Z0 and the P_Z1 obtained by the formula [6] and the formula [7] match the predicted values obtained by the formula [11] and the formula [12] is judged. Here, when they do not match, it is determined that the Carry-Less multiplier has malfunctioned. The malfunction of the Carry-Less multiplier is detected in this way.
Meanwhile, the formula [11] may also be viewed as follows.
First, in
Here, in an opposite manner,
Here, it is apparent from the formula [3] that the XOR of the respective terms included in the part enclosed by the thick line in
In addition, the formula [12] may also be viewed as follows.
First, in
Here, in an opposite manner,
Here, it is apparent from the formula [3] that the XOR of the respective terms included in the part enclosed by the thick line in
Meanwhile, in the explanation below, it is assumed that the Carry-Less multiplication is illustrated as in
In
Here, 4-bit data in which four 1-bit data are lined up is assumed as the data unit as well.
Next, the prediction method of the parity value for each data unit of the multiplication result data string 4 in a case in which both the multiplicand data string 2 and the multiplier data string 3 are composed of two data units (that is, in a case in which they are 8-bit data) is explained.
In addition, in
In
Meanwhile, in the explanation below, the data unit “y3 y2 y1 y0” is referred to as a “data unit Y0”, and the data unit “y7 y6 y5 y4” is referred to as “data unit Y1”. In addition, the parity value of the data unit Y0 is assumed as P_Y0, and the parity value of the data unit Y1 is assumed as P_Y1.
First, a focus is put on the block A. In the block A, a part (the part excluding the protrusion to the block B) of the partial multiplication of the first data unit “e f g h” from the lower order in the multiplicand A and the data unit Y0 are represented. As the prediction formula of the parity value P_ZA of the multiplication result about the block A, a, b, c and d in the formula [11] that is the prediction formula of the parity value P_Z0 in the case of
P
—
ZA=P
—
A0*P—Y0+e*y1+(e+f)*y2+(e+f+g)*y3 [13]
Meanwhile, the parity value P_A0 is the parity value of the data unit “e f g h”. In the explanation below, the data unit “e f g h” is referred to as a “data unit AO”.
Next, a focus is put on the block D. In the block D, a part (the part excluding the protrusion to the block B) of the partial multiplication of the second data unit “a b c d” from the lower order in the multiplicand A and the data unit Y0 are represented. As the prediction formula of the parity value P_ZD of the multiplication result about the block D, the formula [12] that is the prediction formula of the parity value P_Z1 in the case of
P
—
ZD=P
—
A1*P—Y0+(a+b+c+d)*y0+(b+c+d)*y1+(c+d)*y2+d*y3 [14]
Meanwhile, the parity value P_A1 is the parity value of the data unit “a b c d”. In the explanation below, the data unit “a b c d” is referred to as a “data unit A1”.
Next, a focus is put on the block B. The block B may be viewed as an overlap between a part (the part excluding the protrusion to the block D) of the partial multiplication of the data units A1 and Y0 and a part (the part excluding the protrusion from the block A) of the partial multiplication of the data units A0 and Y0. In other words, prediction of the parity value P_ZB is performed as follows.
First, the parity value P_ZBD about a part (the part excluding the protrusion to the block D) of the partial multiplication of the data units A1 and Y0 is predicted. As the prediction formula of the parity value P_ZBD, the formula [11] being the prediction formula of the parity value P_Z0 in the case in
P
—
ZBD=P
—
A1*P—Y0+a*y1+(a+b)*y2+(a+b+c)*y3 [15]
Next, with respect to the predicted parity value P_ZBD, the influence due to the overlap of a part (the protruding part from the block A) of the partial multiplication of the data unit A0 and Y0 in the block B is compensated. Therefore, the parity value Z_B may be predicted using the formula [16] below.
P
—
ZB=P
—
ZBD+e*y1+(e+f)*y2+(e+f+g)*y3=P—A1*P—Y0+a*y1+(a+b)*y2+(a+b+c)*y3+e*y1+(e+f)*y2+(e+f+g)*y3 [16]
Next, a focus is put on the blocks C, F and E representing the middle results of the arithmetic operation in the partial multiplication of the multiplicand A and the data unit Y1. For prediction of the parity value about the blocks C, F and E, considering the correspondence relationship between these blocks and the blocks A, D and B, the formula [13], the formula [14], and the formula [16] being the prediction formulas of the parity value of the blocks A, D and B are used. That is, prediction of the parity values P_ZC, P_ZF, and P_ZE is performed using the formulas below in which y0, y1, y2, and y3 in the formula [13], formula [14], and the formula [16] are replaced with y4, y5, y6, and y7, respectively.
P
—
ZC=P
—
A0*P—Y1+e*y5+(e+f)*y6+(e+f+g)*y7 [17]
P
—
ZF=P
—
A1*P—Y1+(a+b+c+d)*y4+(b+c+d)*y5+(c+d)*y6+d*y7 [18]
P
—
ZE=P
—
A1*P—Y1+a*y5+(a+b)*y6+(a+b+c)*y7+e*y5+(e+f)*y6+(e+f+g)*y7 [19]
Once the parity value for each block is obtained, the parity values P_Z0, P_Z1, P_Z2, and P_Z3 for each data unit of the multiplication result Z may be obtained respectively by the formulas below.
P
—
Z0=P—ZA [20]
P
—
Z1=P—ZB+P—ZC [21]
P
—
Z2=P—ZD+P—ZE [22]
P
—
Z3=P—ZF [23]
When performing detection of the malfunction of the Carry-Less multiplier, the multiplicand A and the multiplier Y are input to the Carry-Less multiplier, to obtain the multiplication result Z being its output. Then, parity values P_Z0, P_Z1, P_Z2, and P_Z3 for each data unit of the of the multiplication result Z are obtained, using the respective value of the bit z0 to the bit z14 in the multiplication result Z, according to the definition of the parity value. Here, whether or not the parity values P_Z0, P_Z1, P_Z2, and P_Z3 in this way match the predicted values obtained respectively by the formula [20], the formula [21], the formula [22], and the formula [23] is judged. Here, when they do not match, it is determined that the Carry-Less multiplier has malfunctioned. The malfunction of the Carry-Less multiplier is detected in this way.
Here, the prediction method of the parity value for each data unit of the multiplication result data string 4 in a case in which [2.2] described above is generalized, that is, a case in which the size of the data unit and the size of the multiplicand data string 2 and the multiplier data string 3 are generalized.
First, the data unit is assumed as a p-bit data in which p (here, p is a natural number equal to or larger than 2) 1-bit data are lined up. Then, it is assumed that both the multiplicand A and the multiplier Y are composed of q (here, q is a natural number) data units (that is, they are q×p bit data). The multiplication result Z obtained by the Carry-Less multiplication of the multiplicand A and the multiplier Y becomes 2q×p−1 bit data.
Meanwhile, in the explanation below, the data unit composed of the first data unit from the lower order in the multiplicand A, that is, the data unit composed of the first through p-th bit data from the lower order is referred to as the “first multiplicand data unit”. In addition, each of the second data unit through the q-th data unit in the multiplicand A is referred to as the “second multiplicand data unit”, . . . , the “q-th multiplicand data unit”, respectively. In a similar manner, the data unit composed of the first data unit from the lower order in the multiplier Y, that is, the data unit composed of the first through p-th bit data from the lower order is referred to as the “first multiplier data unit”. In addition, each of the second data unit through the q-th data unit in the multiplier Y is referred to as the “second multiplier data unit”, . . . , the “q-th multiplier data unit”, respectively.
Furthermore, in the explanation below, the data unit composed of the first data unit from the lower order in the multiplication result Z, is referred to as the “first multiplication result data unit”. In addition, each of the second data unit through the 2q−1-th data unit in the multiplication result Z is also referred to as the “second multiplication result unit”, . . . , the “2q−1-th multiplication result data unit”, respectively. In addition, the p−1 bit data following the 2q−1-th multiplication result in the multiplication result Z, that is, the data of the p−1-th bit from the higher order in the multiplication result is referred to as the “second multiplication result data unit” for convenience.
First, the prediction method for the parity value of the first multiplication result data unit (hereinafter, the parity value is referred to as the “low-order parity value”) is explained. The prediction of the low-order parity value may be viewed in a similar manner as the prediction of the parity value P_Z0 in
First, the logical AND of the parity value of the first multiplicand data unit and the parity value of the first multiplier data unit is obtained. The value of the logical AND is referred to as the “low-order parity logical AND”. Meanwhile, this procedure corresponds to, in the formula [13], the logical operation of the first term among the terms connected by “+” symbol in the righthand side.
Next, the logical AND of the value of the highest order bit in the first multiplicand data unit and the value of the second digit from the lower order in the first multiplier data unit is obtained. The value of the logical AND is referred to as the “low-order first logical AND”. Meanwhile, this procedure corresponds to the logical operation of the second term on the righthand side in the formula [13].
Next, the logical AND of the XOR of the values of the respective bits for i digits (here, i is a natural number from 2 to p−1) from the higher order in the first multiplicand unit and the value of the bit at the i+1 digit from the lower order is obtained respectively. Since there are p−2 values that i mentioned above may take, there are p−2 values of the logical AND as well. The value of the logical AND is referred to as the “low-order second logical AND”. Meanwhile, this procedure corresponds to, in the formula [13], the logical operation of each term from the third term to the fourth term on the righthand side.
Meanwhile, the order for calculating the low-order parity logical AND, the low-order first logical AND, and the p−2 low-order second logical ANDs may not be the order described above.
Next, the XOR of the low-order parity logical AND, low-order first logical AND and p−2 low-order second logical ANDs obtained as described above is obtained. The value of the XOR obtained in this way is the prediction result of the low-order parity value. This procedure corresponds to, in the formula [13], the XOR operation of each term from the first term to the fourth term on the righthand side.
Next, the prediction method of the parity value of the 2q-th multiplication result data unit (the parity value is referred to as the “high-order parity value”) is explained. The prediction of the high-order parity value may be viewed in a similar manner as the prediction of the parity value P_Z3 in
First, the logical AND of the parity value of the q-th multiplicand data unit and the parity value of the q-th multiplier data unit is obtained. The value of the logical AND is referred to as the “high-order parity logical AND”. Meanwhile, this procedure corresponds to, in the formula [18], the logical operation of the first term in the respective terms connected by the “+” symbol on the righthand side.
Next, the logical AND of the value of the lowest-order bit in the q-th multiplicand data unit and the value of the highest-order bit in the q-th multiplier data unit is obtained. The value of the logical AND is referred to as the “high-order first logical AND”. Meanwhile, this procedure corresponds to, in the formula [18], the logical operation of the fifth term on the righthand side.
Next, the logical and of the XOR of the value of the respective bits for j digits (here, j is a natural number from 2 through p from the lower order in the q-th multiplicand data unit and the value of the bit at the j-th digit from the higher order in the q-th multiplier data unit is obtained respectively. Since there are p−1 values that j may take, p−1 values of the logical AND are obtained as well. The value of the logical and is referred to as the “high-order second logical AND”. Meanwhile, this procedure corresponds to, in the formula [18], the logical operation of each term from the second term to the fourth term on the righthand side.
Meanwhile, the order for calculating the high-order parity logical AND, the high-order first logical AND, and the p−1 high-order second logical ANDs may not be the order described above.
Next, the XOR of the high-order parity logical AND, high-order first logical AND and p−1 high-order second logical ANDs obtained as described above is obtained. The value of the XOR obtained in this way is the prediction result of the high-order parity value.
This procedure corresponds to, in the formula [18], the XOR operation of each term from the first term to the fifth term on the righthand side.
Next, the parity value of each multiplication result data unit from the second multiplication result data unit to the 2q−1-th multiplication data unit (the parity value is referred to as the “middle-order parity value”) is explained, The prediction of the middle-order parity value is performed based on the value and the parity of each data unit from the first data unit to the q-th data unit in each of the multiplicand A and the multiplier Y.
In the prediction of the middle-order parity value, prediction of the parity value for each data unit of the partial multiplication result data unit is performed, and based on the prediction result of the parity value for each data unit of the partial multiplication data unit, prediction of the middle-order parity value is performed. Meanwhile, the partial multiplication result is the result of the Carry-Less multiplication with one of the data units constituting the multiplicand A and the multiplier Y.
Here, the result of the Carry-Less multiplication of the multiplicand A and the r-th multiplier data unit (here, r is a natural number from 1 through q) is referred to as the “r-th partial multiplication result”. Therefore, in the example in
The first data unit from the lower order in the r-the partial the first data unit from the lower order in the r-th partial multiplication result is referred to as the “first partial”. In a similar manner, each data unit from the second data unit through the q-th data unit from the lower order in the r-th partial multiplication result is referred to as the “second partial”, . . . “q-th partial”, respectively. Furthermore, the data of the high-order p−1-th bit in the r-partial multiplication result being the data following the q-th partial in the r-th partial multiplication result is referred to as the “q+1-th partial” for convenience.
Hereinafter, the prediction method of the parity value of each of the first partial through the q+1-th partial is explained.
The prediction of the parity value of the first partial may be viewed in a similar manner to the prediction of the parity value P_ZA for the block A or the prediction of the parity value P_ZC for the block C in
First, the logical AND of the parity value of the first multiplicand data unit and the parity value of the r-th multiplier data unit is obtained. The value of the logical AND is referred to as the “low-order partial parity logical AND”. Meanwhile, this procedure corresponds to, in the formula [13], the logical operation of the first term among the terms connected by “+” symbols in the righthand side.
Next, the logical and of the value of the highest order bit in the first multiplicand data unit and the value of the second digit from the lower order in the r-th multiplier data unit is obtained. The value of the logical AND is referred to as the “low-order partial first logical AND”. Meanwhile, this procedure corresponds to the logical operation of the second term on the righthand side in the formula [13].
Next, the logical AND of the XOR of the values of the respective bits for g digits (here, g is a natural number from 2 to p−1) from the higher order in the first multiplicand unit and the value of the bit at the g+1 digit from the lower order in the r-th multiplier data unit is obtained respectively. Since there are p−2 values that g mentioned above may take, there are p−2 values of the logical AND as well. The value of the logical AND is referred to as the “low-order partial second logical AND”. Meanwhile, this procedure corresponds to, in the formula [13], the logical operation of each term from the third term to the fourth term on the righthand side.
Meanwhile, the order for calculating the low-order partial parity logical AND, the low-order partial first logical AND, and the p−2 low-order partial second logical ANDs may not be the order described above.
Next, the XOR of the low-order partial parity logical AND, low-order partial first logical AND and p−2 low-order partial second logical ANDs obtained as described above is obtained. The value of the XOR obtained in this way is the prediction result of the parity value for the first partial. This procedure corresponds to, in the formula [13], the XOR operation of each term from the first term to the fourth term on the righthand side.
The prediction of the parity value of the q+1-th partial may be viewed in a similar manner as the prediction of the parity value P_ZD for the block D in
First, the logical AND of the parity value of the q-th multiplicand data unit and the parity value of the r-th multiplier data unit is obtained. The value of the logical AND is referred to as the “high-order partial parity logical AND”. Meanwhile, this procedure corresponds to, in the formula [14], the logical operation of the first term in the respective terms connected by the “+” symbol on the righthand side.
Next, the logical AND of the value of the lowest-order bit in the q-th multiplicand data unit and the value of the highest-order bit in the r-th multiplier data unit is obtained. The value of the logical AND is referred to as the “high-order partial first logical AND”. Meanwhile, this procedure corresponds to, in the formula [14], the logical operation of the fifth term on the righthand side.
Next, the logical and of the XOR of the value of the respective bits for h digits (here, h is a natural number from 2 through p from the lower order in the q-th multiplicand data unit and the value of the bit at the h-th digit from the higher order in the q-th multiplier data unit is obtained respectively. Since there are p−1 values, that h may take, p−1 values of the logical AND are obtained as well. The value of the logical and is referred to as the “high-order partial second logical AND”. Meanwhile, this procedure corresponds to, in the formula [14], the logical operation of each term from the second term to the fourth term on the righthand side.
Meanwhile, the order for calculating the high-order partial parity logical AND, the high-order partial first logical AND, and the p−1 high-order partial second logical ANDs may not be the order described above.
Next, the XOR of the high-order partial parity logical AND, high-order partial first logical AND and p−1 high-order partial second logical ANDs obtained as described above is obtained. The value of the XOR obtained in this way is the prediction result of the parity value for the q+1-th partial. This procedure corresponds to, in the formula [14], the XOR operation of each term from the first term to the fifth term on the righthand side.
Next, the parity value of each data unit from the second partial through the q-th partial (the parity value is referred to as the “middle-order partial parity value”) is explained. The prediction of the middle-order partial parity value is may be viewed in a similar manner to the prediction of the parity value P_ZB for the block B in
Meanwhile, the procedure of predicting the parity value for the k-th partial (here, k is a natural number from 2 through q) is explained here.
First, the logical AND of the parity value of the k-th multiplicand data unit and the parity value of the r-th multiplier data unit is obtained. The value of the logical AND is referred to as the “middle-order partial parity logical AND”. Meanwhile, this procedure corresponds to, in the formula [16], the logical operation of the first term among the terms connected by “+” symbols in the righthand side.
Next, the logical and of the value of the highest order bit in the k-th multiplicand data unit and the value of the second digit from the lower order in the r-th multiplier data unit is obtained. The value of the logical AND is referred to as the “middle-order partial first logical AND”. Meanwhile, this procedure corresponds to the logical operation of the second term on the righthand side in the formula [16].
Next, the logical AND of the XOR of the values of the respective bits for m digits (here, m is a natural number from 2 to p−1) from the higher order in the k-th multiplicand unit and the value of the bit at the m+1 digit from the lower order in the r-th multiplier data unit is obtained respectively. Since there are p−2 values that m mentioned above may take, there are p−2 values of the logical AND as well. The value of the logical AND is referred to as the “middle-order partial second logical AND”. Meanwhile, this procedure corresponds to, in the formula [16], the logical operation of each term from the third term to the fourth term on the righthand side.
Next, the logical AND of the value of the highest-order bit in the k−1-th multiplicand data unit and the value of the bit at the second digit from the lower order in the r-th multiplier data unit is obtained. The value of the logical AND is referred to as the “middle-order partial third logical AND”. Meanwhile, this procedure corresponds to, in the formula [16], the logical operation of the fifth term on the righthand side.
Next, the logical AND of the XOR of the values of the respective bits for n digits (here, n is a natural number from 2 to p−1) from the higher order in the k-th multiplicand unit and the value of the bit at the n+1 digit from the lower order in the r-th multiplier data unit is obtained respectively. Since there are p−2 values that n mentioned above may take, there are p−2 values of the logical AND as well. The value of the logical AND is referred to as the “middle-order partial fourth logical AND”. Meanwhile, this procedure corresponds to, in the formula [16], the logical operation of each term from the sixth term to the seventh term on the righthand side.
Meanwhile, the order for calculating the middle-order partial parity logical AND, the middle-order partial first logical AND, p−2 middle-order partial second logical ANDs, the middle-order partial third logical AND and the p−2 middle-order partial fourth logical ANDs may not be the order described above.
Next, the XOR of the middle-order partial parity logical AND, the middle-order partial first logical AND, p−2 middle-order partial second logical ANDs, the middle-order partial third logical AND and the p−2 middle-order partial fourth logical ANDs described as descried above is obtained. The value of the XOR obtained in this way is the prediction result of the parity value for the k-th partial. Meanwhile, this procedure corresponds to, in the formula [16], the XOR operation of each term from the first term through the seventh term on the righthand side.
By executing the procedure described so far for all the values that the variable r may take, the parity predicted value for each data unit of the first partial multiplication result through the r-th partial multiplication result is obtained. The prediction of the middle-order parity value for each data unit constituting the multiplication result Z is performed by selecting parity predicted values for each data unit of these partial multiplication results according to a prescribed rule and obtaining the XOR of the selected parity predicted values.
First, among the data units constituting the multiplication result Z, the prediction method of the parity value of the s-th multiplication result (here, s is a natural number from 2 through q) is explained.
The prediction of the parity value of the s-th multiplication result data unit may be viewed in a similar manner to the prediction of the parity value P_Z1 performed using the parity predicted value for the block B and the parity predicted value for the block C in
First, the parity predicted value of the s-u+1 partial of the u-th partial multiplication result (here, u is a natural number from 1 through s) is selected. Since there are s values that u mentioned above may take, s parity predicted values are selected. Then, the XOR of the s parity predicted values is obtained. The value of the XOR obtained in this way is the predicted result of the parity value of the s-th multiplication result data unit.
Next, among the data units constituting the multiplication result Z, the prediction method of the parity value of the t-th multiplication result (here, t is a natural number from q+1 through 2q−1) is explained.
The prediction of the parity value of the t-th multiplication result data unit may be viewed in a similar manner to the prediction of the parity value P_Z2 performed using the parity predicted value for the block D and the parity predicted value for the block E in
First, the parity predicted value of the t-v+1 partial of the u-th partial multiplication result (here, v is a natural number from t-q through q) is selected. Since there are 2q-t+1 values that v mentioned above may take, 2q-t+1 parity predicted values are selected. Then, the XOR of the s parity predicted values is obtained. The value of the XOR obtained in this way is the predicted result of the parity value of the t-th multiplication result data unit.
The prediction of the middle-order parity value for each data unit from the second multiplication result data unit through the 2q−1 multiplication result data is performed as described above.
Even-number parity is used as the parity value in the prediction method of the parity value described above. Here, the prediction method in a case using odd-number parity is explained.
Even-number parity is for setting the value (parity value) of the parity bit so that the number of bit whose value is “1” in the respective bits constituting certain data and the parity bit of the data is an even number. For this purpose, as the parity value of certain data in even-number parity, the value of the XOR of the respective bits constituting the data is set.
In contrast, odd-number parity is for setting the value (parity value) of the parity bit so that the number of bit whose value is “1” in the respective bits constituting certain data and the parity bit of the data is an odd number. For this purpose, as the parity value of certain data in odd-number parity, the value obtained by XORing the value of the XOR of the respective bits constituting the data (that is, the parity value in the case of even-number parity) further and the value “1” is set.
In consideration of this relationship, the prediction formula of the parity value in the case of odd-number parity is derived.
First, the prediction formula in the case of odd-number parity used for the prediction in [1. parity prediction of a multiplication result data string without considering the data unit] is derived.
In the data example in
P
—
Z_odd=z6+z5+z4+z3+z2+z1+z0+1 [24]
In the formula [24], P_Z_odd is the parity value of the multiplication result Z in the case of odd-number parity. In the explanation above, the parity value in the case of odd-number parity is described in this way, to distinguish it from the parity value in the case of even-number parity described above.
The formula [1] is substituted into the formula [24] to modify it.
P
—
Z_odd=(a+b+c+d)*(y3+y2+y1+y0)+1 [25]
In the formula [25], P_Z_odd becomes “1” when at least one of the values (a+b+c+d) and (y3+y2+y1+y0) is “0”.
Incidentally, assuming the parity value of the multiplicand A in the case of odd-number parity as P_A_odd and the parity value of the multiplier Y as P_Y_odd, according to the definition of the parity value,
P
—
A_odd=a+b+c+d+1
P
—
Y_odd=y3+y2+y1+y0+1 [26].
In the formula [26], when the value of (a+b+c+d) is “0”, the value of P_A_odd is “1”, and when the value of (y3+y2+y1+y0) is “0”, the value of P_Y_odd is “1”. Therefore, when at least one of (a+b+c+d) and (y3+y2+y1+y0) becomes “0”, at least one of the values of P_A_odd and P_Y_odd is “1”. According to this, the formula [27] is obtained.
P
—
Z_odd=P—A_odd̂P—Y_odd [27]
Meanwhile, as described above, the symbol “̂” represents OR. In the case of odd-number parity, the value of P_Z_odd is obtained by substituting the value of P_A_odd obtained from the multiplicand A and the value of P_Y_odd obtained from the multiplier Y into the formula [27]. The value is the predicted value of the parity value of the multiplication result Z.
When performing the detection of the malfunction of the Carry-Less multiplier, the multiplicand A and the multiplayer Y is input into the Carry-Less multiplier, to obtained the multiplication result Z being its output. Then, the parity value P_Z_odd of the multiplication result Z is obtained by the formula [25]. Here, whether or not the parity value P_Z_odd obtained by the formula [25] match the predicted value obtained by the formula [27] is judged. Here, when they do not match, it is determined that the Carry-Less multiplier has malfunctioned. The malfunction of the Carry-Less multiplier is detected in this way.
Next, the prediction formula in the case of odd-number parity used for the prediction in [2. parity prediction for each data unit of the multiplication result data string] is derived.
First, [2.1. Case in which both the multiplicand data string and the multiplier data string are one data unit] is explained.
In the data example in
P
—
Z0_odd=z3+z2+z1+z0+1=(a*y0+b*y1+c*y2+d*y3)+(b*y0+c*y1+d*y2)+(c*y0+d*y1)+d*y0+1 [28]
P
—
Z1_odd=z6+z5+z4+1=a*y3+(a*y2+b*y3)+(a*y1+b*y2+c*y3)+1 [29]
respectively.
Next, in a similar manner to the case of even-number parity,
It is apparent from the formula [28] that the odd-number parity value in the part enclosed by the thick line in
P
—
Z0_odd=P—A_odd̂P—Y_odd+a*y1+(a+b)*y2+(a+b+c)*y3 [30]
In addition, in a similar manner to the case of even-number parity described above,
It is apparent from the formula [28] that the odd-number parity value in the part enclosed by the thick line in
P
—
Z1_odd=P—A_odd̂P—Y_odd+(a+b+c+d)*y0+(b+c+d)*y1+(c+d)*y2+d*y3 [31]
When performing the detection of the malfunction of the Carry-Less multiplier, the multiplicand A and the multiplayer Y is input into the Carry-Less multiplier, to obtained the multiplication result Z being its output. Then, the parity values P_Z0_odd and P_Z1_odd in odd-number parity for each data unit of the multiplication result Z are obtained by the formula [28] and the formula [29]. Here, whether or not the parity values P_Z0_odd and P_Z1_odd obtained by the formula [28] and the formula [29] match the predicted values obtained by the formula [30] and the formula [31] respectively is judged. Here, when they do not match, it is determined that the Carry-Less multiplier has malfunctioned. The malfunction of the Carry-Less multiplier is detected in this way.
Next, [2.2. Case in which both the multiplicand data string and the multiplier data string are two data units] is explained.
As the prediction formula of the parity value P_ZA_odd in odd-number parity of the multiplication result for the block A in the data example in
P
—
ZA_odd=P—A0_odd̂P—Y0_odd+e*y1+(e+f)*y2+(e+f+g)*y3 [32]
Meanwhile, P_Y0_odd is the parity value in odd-number parity of the data unit Y0, and P_Y1_odd is the parity value in odd-number parity of the data unit Y1.
Next, as the prediction formula of the parity value P_ZD_odd in odd-number parity of the multiplication result for the block D in the data example in
P
—
ZD_odd=P—A1_odd̂P—Y0_odd+(a+b+c+d)*y0+(b+c+d)*y1+(c+d)*y2+d*y3 [33]
Next, the prediction formula of the parity value P_ZB_odd in odd-number parity of the multiplication result for the block B in the data example in
P
—
ZB_odd=P—A1_odd̂P—Y0_odd+a*y1+(a+b)*y2+(a+b+c)*y3+e*y1+(e+f)*y2+(e+f+g)*y3 [34]
Next, for the prediction of the parity values for the blocks C, F and E in
P
—
ZC_odd=P—A0_odd̂P—Y1_odd+e*y5+(e+f)*y6+(e+f+g)*y7 [35]
P
—
ZF_odd=P—A1_odd̂P_Y1_odd+(a+b+c+d)*y4+(b+c+d)*y5+(c+d)*y6+d*y7 [36]
P
—
ZE_odd=P—A1_odd̂P—Y1_odd+a*y5+(a+b)*y6+(a+b+c)*y7+e*y5+(e+f)*y6+(e+f+g)*y7 [37]
Meanwhile, P_ZC_odd, P_ZF_odd, and P_ZE_odd are the parity values in odd-number parity of the multiplication result for the blocks C, F, and E, respectively.
Once the parity value for each block is obtained as descried above, parity value P_Z0_odd, P_Z1_odd, P_Z2_odd, and P_Z3_odd in odd-number parity for each data unit of the multiplication result may be respectively obtained by the following formulas.
P
—
Z0_odd=P—ZA_odd [38]
P
—
Z1_odd=P—ZB_odd+P—ZC_odd+1 [39]
P
—
Z2_odd=P—ZD_odd+P—ZE_odd+1 [40]
P
—
Z3_odd=P—ZF_odd [41]
Meanwhile, it is noted that in the formula [39] and the formula [40] presented above, “+1” is added, that is, the XOR with the value “1” is added, to the end of the righthand side.
For example, in
Thus, in odd-number parity, when the parity value in odd-number parity for each data unit of the multiplication result Z is obtained from the XOR of even numbers of blocks, with respect to the XOR, the XOR with the value “1” further needs to be obtained.
When performing the detection of the malfunction of the Carry-Less multiplier, the multiplicand A and the multiplayer Y is input into the Carry-Less multiplier, to obtained the multiplication result Z being its output. Then, the parity values P_Z0_odd, P_Z1_odd, P_Z2_odd, and P_Z3_odd in odd-number parity for each data unit of the multiplication result Z are obtained according to the definition of the parity value, using each value of the bit z0 through the bit Z14 in the multiplication result Z. Here, whether or not the parity values P_Z0_odd, P_Z1_odd, P_Z2_odd, and P_Z3_odd obtained in this way match the predicted values obtained by the formula [38], formula [39], formula [40], and the formula [41] respectively is judged. Here, when they do not match, it is determined that the Carry-Less multiplier has malfunctioned. The malfunction of the Carry-Less multiplier is detected in this way.
Next, [2.3. Case in which the size of the multiplicand data string and the multiplier data string is generalized] is explained.
First, [2.3.1. Prediction of low-order parity] may be viewed in a similar manner to the case [2.2] described above.
That is, the prediction of the low-order parity value is performed, for example, according to the following procedure, based on the value and of the first multiplicand data unit and the first multiplier data unit and their parity value and expanding the formula [38] and the formula [32].
First, the OR of the parity value of the first multiplicand data unit and the parity value of the first multiplier data unit is obtained. The value of the OR is referred to as the “low-order parity OR”. Meanwhile, this procedure corresponds to, in the formula [32], the logical operation of the first term among the terms connected by “+” symbol in the righthand side.
Next, the logical AND of the value of the highest order bit in the first multiplicand data unit and the value of the second digit from the lower order in the first multiplier data unit is obtained.
The value of the logical AND is referred to as the “low-order first logical AND”. Meanwhile, this procedure corresponds to the logical operation of the second term on the righthand side in the formula [32].
Next, the logical AND of the XOR of the values of the respective bits for i digits (here, i is a natural number from 2 to p−1) from the higher order in the first multiplicand unit and the value of the bit at the i+1 digit from the lower order is obtained respectively. Since there are p−2 values that i mentioned above may take, there are p−2 values of the logical AND as well. The value of the logical AND is referred to as the “low-order second logical AND”. Meanwhile, this procedure corresponds to, in the formula [32], the logical operation of each term from the third term to the fourth term on the righthand side.
Meanwhile, the order for calculating the low-order parity OR, the low-order first logical AND, and the p−2 low-order second logical ANDs may not be the order described above.
Next, the XOR of the low-order parity OR, low-order first logical AND and p−2 low-order second logical ANDs obtained as described above is obtained. The value of the XOR obtained in this way is the prediction result of the low-order parity value. This procedure corresponds to, in the formula [32], the XOR operation of each term from the first term to the fourth term on the righthand side.
Next, [2.3.2. Prediction of high-order parity] may be viewed in a similar manner to the case [2.2.] described above, That is, the prediction of the high-order parity value is performed according to the following procedure, based on the value for each of the q-th multiplicand data unit and the q-th multiplier data unit and their parity value and expanding the formula [41] and the formula [36].
First, the OR of the parity value of the q-th multiplicand data unit and the parity value of the q-th multiplier data unit is obtained. The value of the OR is referred to as the “high-order parity OR”. Meanwhile, this procedure corresponds to, in the formula [36], the logical operation of the first term in the respective terms connected by the “+” symbol on the righthand side.
Next, the logical AND of the value of the lowest-order bit in the q-th multiplicand data unit and the value of the highest-order bit in the q-th multiplier data unit is obtained. The value of the logical AND is referred to as the “high-order first logical AND”. Meanwhile, this procedure corresponds to, in the formula [36], the logical operation of the fifth term on the righthand side.
Next, the logical and of the XOR of the value of the respective bits for j digits (here, j is a natural number from 2 through p from the lower order in the q-th multiplicand data unit and the value of the bit at the j-th digit from the higher order in the q-th multiplier data unit is obtained respectively. Since there are p−1 values that j may take, p−1 values of the logical AND are obtained as well. The value of the logical and is referred to as the “high-order second logical AND”. Meanwhile, this procedure corresponds to, in the formula [36], the logical operation of each term from the second term to the fourth term on the righthand side.
Meanwhile, the order for calculating the high-order parity OR, the high-order first logical AND, and the p−1 high-order second logical ANDs may not be the order described above.
Next, the XOR of the high-order parity OR, high-order first logical AND and p−1 high-order second logical ANDs obtained as described above is obtained. The value of the XOR obtained in this way is the prediction result of the high-order parity value. This procedure corresponds to, in the formula [36], the XOR operation of each term from the first term to the fifth term on the righthand side.
Meanwhile, [2.3.3.1. Prediction of the parity value for each data unit of the partial multiplication result] in [2.3.3. Prediction of middle-order parity] may be viewed in a similar manner to the case [2.2] described above.
First, the prediction of first partial is performed, for example, according to the following procedure, based on the value of each of the first multiplicand data unit and the r-th multiplier data unit (here, r is a natural number from 1 through q) and their parity value and expanding the formula [32] or the formula [35].
First, the OR of the parity value of the first multiplicand data unit and the parity value of the r-th multiplier data unit is obtained. The value of the OR is referred to as the “low-order partial parity OR”. Meanwhile, this procedure corresponds to, in the formula [32], the logical operation of the first term among the terms connected by “+” symbols in the righthand side.
Next, the logical and of the value of the highest order bit in the first multiplicand data unit and the value of the second digit from the lower order in the r-th multiplier data unit is obtained. The value of the logical AND is referred to as the “low-order partial first logical AND”. Meanwhile, this procedure corresponds to the logical operation of the second term on the righthand side in the formula [32].
Next, the logical AND of the XOR of the values of the respective bits for g digits (here, g is a natural number from 2 to p−1) from the higher order in the first multiplicand unit and the value of the bit at the g+1 digit from the lower order in the r-th multiplier data unit is obtained respectively. Since there are p−2 values that g mentioned above may take, there are p−2 values of the logical AND as well. The value of the logical AND is referred to as the “low-order partial second logical AND”. Meanwhile, this procedure corresponds to, in the formula [32], the logical operation of each term from the third term to the fourth term on the righthand side.
Meanwhile, the order for calculating the low-order partial parity logical AND, the low-order partial first logical AND, and the p−2 low-order partial second logical ANDs may not be the order described above.
Next, the XOR of the low-order partial parity logical AND, low-order partial first logical AND and p−2 low-order partial second logical ANDs obtained as described above is obtained. The value of the XOR obtained in this way is the prediction result of the parity value for the first partial. This procedure corresponds to, in the formula [32], the XOR operation of each term from the first term to the fourth term on the righthand side.
Meanwhile, the parity value of the, q+1-th partial is performed according to the following procedure, based on the value for each of the q-th multiplicand data unit and the r-th multiplier data unit and their parity value and expanding the formula [33] or the formula [36].
First, the OR of the parity value of the q-th multiplicand data unit and the parity value of the r-th multiplier data unit is obtained. The value of the OR is referred to as the “high-order partial parity OR”. Meanwhile, this procedure corresponds to, in the formula [33], the logical operation of the first term in the respective terms connected by the “+” symbol on the righthand side.
Next, the logical AND of the value of the lowest-order bit in the q-th multiplicand data unit and the value of the highest-order bit in the r-th multiplier data unit is obtained. The value of the logical AND is referred to as the “high-order partial first logical AND”. Meanwhile, this procedure corresponds to, in the formula [33], the logical operation of the fifth term on the righthand side.
Next, the logical and of the XOR of the value of the respective bits for h digits (here, h is a natural number from 2 through p from the lower order in the q-th multiplicand data unit and the value of the bit at the h-th digit from the higher order in the q-th multiplier data unit is obtained respectively. Since there are p−1 values, that h may take, p−1 values of the logical AND are obtained as well. The value of the logical and is referred to as the “high-order partial second logical AND”. Meanwhile, this procedure corresponds to, in the formula [33], the logical operation of each term from the second term to the fourth term on the righthand side.
Meanwhile, the order for calculating the high-order partial parity logical AND, the high-order partial first logical AND, and the p−1 high-order partial second logical ANDs may not be the order described above.
Next, the XOR of the high-order partial parity logical AND, high-order partial first logical AND and p−1 high-order partial second logical ANDs obtained as described above is obtained. The value of the XOR obtained in this way is the prediction result of the parity value for the q+1-th partial. This procedure corresponds to, in the formula [33], the XOR operation of each term from the first term to the fifth term on the righthand side.
Furthermore, the prediction of the parity value of the k-th partial (here, k is a natural number from 2 through q) is performed, for example, according to the following procedure and expanding the formula [34] or the formula [37].
First, the OR of the parity value of the k-th multiplicand data unit and the parity value of the r-th multiplier data unit is obtained. The value of the OR is referred to as the “middle-order partial parity OR”. Meanwhile, this procedure corresponds to, in the formula [34], the logical operation of the first term among the terms connected by “+” symbols in the righthand side.
Next, the logical and of the value of the highest order bit in the k-th multiplicand data unit and the value of the second digit from the lower order in the r-th multiplier data unit is obtained. The value of the logical AND is referred to as the “middle-order partial first logical AND”. Meanwhile, this procedure corresponds to the logical operation of the second term on the righthand side in the formula [34].
Next, the logical AND of the XOR of the values of the respective bits for m digits (here, m is a natural number from 2 to p−1) from the higher order in the k-th multiplicand unit and the value of the bit at the m+1 digit from the lower order in the r-th multiplier data unit is obtained respectively. Since there are p−2 values that m mentioned above may take, there are p−2 values of the logical AND as well. The value of the logical AND is referred to as the “middle-order partial second logical AND”. Meanwhile, this procedure corresponds to, in the formula [34], the logical operation of each term from the third term to the fourth term on the righthand side.
Next, the logical AND of the value of the highest-order bit in the k−1-th multiplicand data unit and the value of the bit at the second digit from the lower order in the r-th multiplier data unit is obtained. The value of the logical AND is referred to as the “middle-order partial third logical AND”. Meanwhile, this procedure corresponds to, in the formula [34], the logical operation of the fifth term on the righthand side.
Next, the logical AND of the XOR of the values of the respective bits for n digits (here, n is a natural number from 2 to p−1) from the higher order in the k-th multiplicand unit and the value of the bit at the n+1 digit from the lower order in the r-th multiplier data unit is obtained respectively. Since there are p−2 values that n mentioned above may take, there are p−2 values of the logical AND as well. The value of the logical AND is referred to as the “middle-order partial fourth logical AND”. Meanwhile, this procedure corresponds to, in the formula [34], the logical operation of each term from the sixth term to the seventh term on the righthand side.
Meanwhile, the order for calculating the middle-order partial parity logical AND, the middle-order partial first logical AND, p−2 middle-order partial second logical ANDs, the middle-order partial third logical AND and the p−2 middle-order partial fourth logical ANDs may not be the order described above.
Next, the XOR of the middle-order partial parity logical AND, the middle-order partial first logical AND, p−2 middle-order partial second logical ANDs, the middle-order partial third logical AND and the p−2 middle-order partial fourth logical ANDs described as descried above is obtained. The value of the XOR obtained in this way is the prediction result of the parity value for the k-th partial. Meanwhile, this procedure corresponds to, in the formula [34], the XOR operation of each term from the first term through the seventh term on the righthand side.
Next, [2.3.3.2. Prediction of the middle-order parity based on the prediction result of the parity value for each data unit of the partial multiplication result] in the case of odd-number parity is explained.
First, by executing the procedure described so far for all the values that the variable r may take, the parity predicted value for each data unit of the first partial multiplication result through the r-th partial multiplication result is obtained. The prediction of the middle-order parity value for each data unit constituting the multiplication result Z is performed by selecting parity predicted values for each data unit of these partial multiplication results according to a prescribed rule and obtaining the XOR of the selected parity predicted values. However, as described above, it is noted that in odd-number parity, in obtaining the parity value in odd-number parity for each data unit of the multiplication result Z from the XOR of even numbers of the blocks, the XOR with the value “1” needs to be obtained further.
First, among the data units constituting the multiplication result Z, the prediction method of the parity value of the s-th multiplication result (here, s is a natural number from 2 through q) is explained.
The prediction of the parity value of the s-th multiplication result data unit may be viewed in a similar manner to the prediction of the parity value P_Z1 performed using the parity predicted value for the block B and the parity predicted value for the block C in
First, the parity predicted value of the s-u+1 partial of the u-th partial multiplication result (here, u is a natural number from 1 through s) is selected. Since there are s values that u mentioned above may take, s parity predicted values are selected. Then, the XOR of the s parity predicted values is obtained. Here, when s is an odd number, the value of the XOR obtained in this way is the predicted result of the parity value of the s-th multiplication result data unit. In contrast, when s is an even number, the XOR operation result of the XOR obtained in this way and the value “1” is the prediction result of the parity value of the s-th multiplication result data unit.
Next, among the data units constituting the multiplication result Z, the prediction method of the parity value of the t-th multiplication result (here, t is a natural number from q+1 through 2q−1) is explained.
The prediction of the parity value of the t-th multiplication result data unit may be viewed in a similar manner to the prediction of the parity value P_Z2 performed using the parity predicted value for the block D and the parity predicted value for the block E in
First, the parity predicted value of the t-v+1 partial of the u-th partial multiplication result (here, v is a natural number from t-q through q) is selected. Since there are 2q-t+1 values that v mentioned above may take, 2q-t+1 parity predicted values are selected. Then, the XOR of the s parity predicted values is obtained. When 2q-t+1 is an odd number, the value of the XOR obtained in this way is the predicted result of the parity value of the t-th multiplication result data unit. In contrast, when 2q-t+1 is an even number, the XOR operation result of the XOR obtained in this way and the value “1” is the prediction result of the parity value of the t-th multiplication result data unit.
The prediction of the middle-order parity value for each data unit from the second multiplication result data unit through the 2q−1 multiplication result data is performed as described above.
Next, an arithmetic operation processing apparatus including a Carry-Less multiplier having the malfunction detection function is explained.
The operation unit 110 performs various operations with respect to input data according to the control by the control unit 120, and outputs data obtained as a result of the arithmetic operation. The operation unit 110 includes an operator 111, a register 112, and the operation control unit 113.
The operator 111 is hardware that performs various arithmetic operations and logical operations. The operator 111 has a Carry-Less multiplier 200 described later.
The register 112 keeps data temporarily to give/receive data input to the operation unit 110 and data output from the operation unit 110 to/from the primary cache unit 130.
The operation control unit 113 controls the operation of the operator 111 and the register 112 according to the control by the control unit 120.
The control unit 120 reads out instruction data kept in the primary cache unit 130 in a prescribed order, and controls the operation unit 110 to make it perform various operations according to the read-out instruction data.
The primary cache unit 130 is a high-speed memory for accumulating frequently-used data. The primary cache unit 130 has an instruction cache 131 for accumulating instruction data and a data cache 132 for accumulating input data to the operator 111 and output data from the operator 111.
The secondary cache unit 140 is a low-speed memory with a larger capacity than that of the primary cache unit 130 for accumulating frequently-used data that are not accumulated in the primary cache unit 130 among data accumulated in the memory 150.
The memory data stores instruction data expressing an instruction of operation for the arithmetic operation processing apparatus and input data to the operator 111 and output data from the operator 111.
Next,
The Carry-Less multiplier 200 in
The Carry-Less multiplication circuit 201 is a circuit that performs the Carry-Less multiplication of the multiplicand A and the multiplier Y that are both 4-bit data and outputs the multiplication result Z, which is a circuit that performs the operation of the formula [1].
The Carry-Less multiplication parity prediction circuit 202 is a circuit that performs, in the case of even-number parity, the prediction of the predicted value P_Z_P of the multiplication result Z from the even-parity value P_A of the multiplicand A and the even-parity value P_Y of the multiplier Y. In addition, it is a circuit that performs, in the case of odd-number parity, the prediction of the predicted value P_Z_P of the multiplication result Z from the odd-number parity value P_A_odd of the multiplicand A and the even-number parity value P_Y_odd.
The parity check circuit 203 is a circuit that obtains the parity value P_Z of the multiplication result Z that the Carry-Less multiplication circuit 201 outputs and judges whether or not it matches the prediction of the predicted value P_Z_P being the Carry-Less multiplication parity prediction circuit 202.
Next, the configuration of the Carry-Less multiplication circuit 201 is explained. The specific circuit configuration of the Carry-Less multiplication circuit 201 in
The circuit in each diagram from
The circuit in
The circuit in
The circuit in
The circuit in
The circuit in
The circuit in
The Carry-Less multiplication circuit 201 in
Next, the configuration of the Carry-Less multiplication parity prediction circuit 202 in
The circuit in the first example illustrated in
The circuit in
The circuit in
Next, the configuration of the parity check circuit 203 in
The circuit in the first example illustrated in
The circuit in
Meanwhile, instead of the configuration as described above using the 2-input XOR circuits 481-486, using a 7-input XOR circuit, the output by inputting the respective values of the bits z6-z0 to the XOR circuit may be the parity value P_Z.
In the circuit in
Meanwhile, instead of the configuration as described above using the 2-input XOR circuits 481-486, using a 8-input XOR circuit, the output by inputting the respective values of the bits z6-z0 and the predicted value P_Z_P to the XOR circuit may be the check result P_Z_E.
Next, the circuit in
In the circuit in
Meanwhile, instead of the configuration as described above using the 2-input XOR circuits 481-487 and 491, using a 9-input XOR circuit, the output by inputting the respective values of the bits z6-z0, the value “1” and the predicted value P_Z_P to the XOR circuit may be the check result P_Z_E.
Meanwhile, in the circuit in
Next,
The configuration in
The Carry-Less multiplication circuit 201 in
Next, the configuration of the Carry-Less multiplication parity prediction circuit 202 in
The circuit in the first example illustrated in
The circuit in
In
The circuit in
In
The circuit in
In the circuit in
The circuit in
In the circuit in
Next, the configuration of the parity check circuit 203 in
The circuit in the first example illustrated in
The circuit in
For this purpose, the circuit obtains the output by inputting the values of the bits z0, z1, z2, and z3 respectively into the XOR circuit 541. The output of the XOR circuit 541 is the parity value P_Z0. The circuit configuration is the circuit that performs the operation of the formula [6].
Meanwhile, the circuit in
In the circuit in
Meanwhile, the circuit in
For this first, the circuit in
The circuit in
In the circuit in
As described above, in this embodiment, the parity check circuit 203 obtains the parity value for each data unit of the multiplication result Z using the XOR circuit in either of the case using even-number parity and odd-number parity. Then, judgment of the match/mismatch of the obtained parity value of the multiplication result and the parity value of the multiplication result Z that the Carry-Less multiplication parity prediction circuit 202 outputs is performed for each data unit using the 2-input XOR circuit. Then the OR or the judgment results for each data unit is obtained using the OR circuit, which becomes the detection result of the malfunction of the Carry-Less multiplier 201.
Next,
In
The Carry-Less multiplication parity prediction circuit 202 in
The Carry-Less multiplication circuit 201 in
Meanwhile, the parity check circuit 203 is configured in a similar manner to the one in the second example in
Next, the configuration of the Carry-Less multiplication parity prediction circuit 202 in
The circuit in the first example illustrated in each diagram from
The circuit in
In
The circuit in
In
Meanwhile, in
Then, the XOR circuit 651 in
The circuit in
In
In
Then, the XOR circuit 693 in
The circuit in
In
The circuit in
In the circuit in
The circuit in
In the circuit
The circuit in
In the circuit
The circuit in
In the circuit in
Next,
In
The Carry-Less multiplication circuit 201 in
The parity check circuit 203 in
Next, the configuration of the Carry-Less multiplication parity prediction circuit 202 in
The Carry-Less multiplication parity prediction circuit 202 had a low-order parity prediction circuit 800, a high-order parity prediction circuit 900, and a middle-order parity prediction circuit 1000.
The low-order parity prediction circuit 800 is a circuit that performs prediction of the low-order parity value as explained in [2.3.1. Prediction of low-order parity]. That is, the low-order parity prediction circuit 800 is a circuit that outputs the predicted value P_Z_P[1] of the parity value of the first data unit in the multiplication result Z. To the low-order parity prediction circuit 800, the value A[unit 1] and its parity value P_A[1] of the first multiplicand data unit, and the value Y[unit 1] and its parity value P_Y[1] of the first multiplier data unit are input.
The high-order parity prediction circuit 900 is a circuit that performs the prediction of the high-order parity value as explained in [2.3.2. Prediction of high-order parity]. That is, the high-order parity prediction circuit 900 is a circuit that outputs the predicted value P_Z_P[2q] of the data following the 2q−1 data unit from the lower order in the multiplication result Z (that is, data of the high-order p−1 bit of the multiplication result Z). To the high-order parity prediction circuit 900, the value Y[unit q] and its parity value P_Y[q] of the q-th multiplier data unit is input.
The middle-order parity prediction circuit 1000 is a circuit that performs prediction of the middle-order parity value as explained in [2.3.3. Prediction of middle-order parity]. That is, the middle-order parity prediction circuit 1000 is a circuit that outputs the predicted values P_Z_P[2], . . . , P_Z_P[2q−1] of the parity value for the respective data units from the second to 2q−1-th of the multiplication result Z.
To themiddle-orderparity prediction circuit 1000, thevalue A[unit 1], . . . , A[unit q] and their parity values P_A[1], . . . , P_A[q] of the first 1 multiplicand data unit through the q-th multiplicand data unit are input. Furthermore, to the middle-order parity prediction circuit 1000, the value Y[unit 1], . . . , Y[unit q] and their parity value P_Y[1], . . . , P_Y[q] of the first multiplier data unit to the q-th multiplier data unit are input.
Meanwhile, while the Carry-Less multiplication parity prediction circuit 202 in
The middle-order parity prediction circuit 1000 has a partial multiplication result parity prediction circuit 1100. The partial multiplication result parity prediction circuit 1100 is a circuit that performs prediction of the parity value for each data unit of the partial multiplication result described above as illustrated in [2.3.3.1. Prediction of the parity value for each data unit of the partial multiplication result].
Meanwhile, since the multiplier Y has q data units, the Carry-Less multiplication parity prediction circuit 202 in
The partial multiplication result parity prediction circuit 1100 has a partial parity prediction circuit 1200. The partial parity prediction circuit 1200 is a circuit that performs prediction explained in [2.3.3.1.1. Prediction of the parity value for the first partial]], [2.3.3.1.2. Prediction of the parity value for the q+1-th partial], [2.3.3.1.3. Prediction of the parity value for the middle partial]. That is, the partial parity prediction circuit 1200 is a circuit that outputs the predicted value of the parity value for each data unit of the partial multiplication result. Meanwhile, since the partial multiplication result consists of q+1 data units from the first partial through q+1-th partial, the partial multiplication result parity prediction circuit 1100 has q+1 units of the partial parity prediction circuit 1200, while
Next, the configuration of the low-order parity prediction circuit 800 in
The configuration of the first example of the low-order parity prediction circuit 800 in
The low-order parity prediction circuit 800 is a low-order parity logical AND circuit 801, a low-order first logical AND circuit 811, an XOR circuit 812, a low-order second logical AND circuit 813, and a low-order XOR circuit 814. Among them, the low-order parity prediction circuit 800 has p−2 units of both the XOR circuit 812 and the low-order second logical AND circuit.
The low-order parity logical AND circuit 801 is a circuit to which the parity value P_A[1] of the first multiplicand data unit and the parity value P_Y[1] of the first multiplier data unit are input and which outputs the value of the logical AND (the low-order parity logical AND described above) of their parity values.
The low-order first logical AND circuit 811 is a circuit to which the value of the highest-order bit of the first multiplicand data unit and the value of the bit at the second digit from the lower order in the first multiplier data unit are input and which outputs the value of the logical AND (the low-order first logical AND described above) of their logical AND.
The p−2 units of the XOR circuit 812 and the low-order second logical AND circuit 813 respectively performs an operation according to different values of i (here, i is a natural number from 2 through p−1). The XOR circuit 812 is a circuit to which the value of each bit for i digits from the higher order of the data unit is input and which outputs the value of their XOR. In addition, the low-order second logical AND circuit 813 is a circuit to which the output of the XOR circuit 812 and the value of i+1-th digit from the lower order in the first multiplier data unit are input and which outputs their logical AND (the low-order second logical AND described above).
The low-order XOR circuit 814 is a circuit to which the output of the low-order parity logical AND circuit 801, the output of the low-order parity logical AND circuit 811 and the output of each of the p−2 low-order second logical AND circuit 813 are input and which outputs the value of their XOR. The output of low-order XOR circuit 814 becomes the predicted value P_Z_P[1] of the multiplication result Z being the output of the low-order parity prediction circuit 800.
Next,
In the configuration in
The low-order XOR circuit 814 is a circuit to which the output of the low-order parity logical OR circuit 802, the low-order parity logical AND circuit 811 and the output of each of the p−2 units of the low-order second logical AND circuit 813 are input and which outputs the value of their XOR. The output of the low-order XOR circuit 814 becomes the predicted value P_Z_P[1] of the low-order parity value of the multiplication result Z being the output of the low-order parity prediction circuit 800.
Next, the configuration of the high-order parity prediction circuit 900 in
The configuration of the first example of the high-order parity prediction circuit 900 in
The high-order parity prediction circuit 900 has a high-order parity logical AND circuit 901, high-order first logical AND circuit 911, a XOR circuit 912, a high-order second logical AND circuit 913, and a high-order XOR circuit 914. The high-order parity prediction circuit 900 has p−1 units of both the XOR circuit 912 and the high-order second logical AND circuit 913 among them.
The high-order parity logical AND circuit 901 is a circuit to which the parity value P_A[q] of the q-th multiplicand data unit and the parity value P_Y[q] of the value of the q-th multiplier data unit are input and which outputs the value of the logical AND (the high-order parity logical AND described above) of their parity values.
The high-order first logical AND circuit 911 is a circuit to which the value of the lowest-order bit in the q-th multiplicand data unit and the value of the highest-order bit in the q-th multiplier data unit are input and which outputs the value of their logical AND (high-order first logical AND described above).
The p−1 units of the XOR circuit 912 and the high-order second logical AND circuit 913 respectively perform an operation according to different values of j (here, 2 is a natural number from 2 through p). The XOR circuit 912 is a circuit to which the value of each bit for j digits from the lower order in the q-th multiplicand data unit is input and which outputs their XOR. In addition, high-order second logical AND circuit 913 is a circuit to which the output of the XOR circuit 912 and the value of the bit at the j-th digit from the higher order in the q-th multiplier data unit are input and which outputs their logical AND (the high-order second logical AND described above).
The high-order XOR circuit 914 is a circuit to which the output of the high-order parity logical AND circuit 901, the output of the high-order parity logical AND circuit 911 and the output of each of the p−1 units of the high-order first logical AND circuit 913 are input and which outputs the value of their XOR. The output of the high-order XOR circuit 914 becomes the predicted value P_Z_P[2q] of the high-order parity value of the multiplication result Z being the high-order parity prediction circuit 900.
Next,
In the configuration in
The high-order XOR circuit 914 is a circuit to which the output of the high-order parity logical OR circuit 902, the output of the high-order parity logical AND circuit 911 and the output of each of the p−1 units of the high-order second logical AND circuit 913 are input and which outputs the value of their XOR. The output of the high-order XOR circuit 914 becomes the predicted value P_Z_P[2q] of the multiplication result Z being the output of the high-order parity prediction circuit 900.
Next, the configuration of the partial multiplication result parity prediction circuit 1100 provided in the middle-order parity prediction circuit 1000 in
It is assumed that the result of the Carry-Less multiplication of the multiplicand A and the r-th multiplier data unit (here, r is a natural number from 1 through q). The r-th partial multiplication result parity prediction circuit 1101 is a circuit that outputs the predicted values value P_Zr_P[1], P_Zr_P[q+1] of the parity value for each data unit of the r-th partial multiplication result.
The r-th partial multiplication result parity prediction circuit 1101 has, as a parity prediction circuit 1200, a first partial parity prediction circuit 1210, a q+1-th partial parity prediction circuit 1220, and a middle-order partial parity prediction circuit 1230.
The first partial parity prediction circuit 1210 is a circuit that performs prediction of the parity value of the first partial as explained in [2.3.3.1.1. Prediction of the parity value for the first partial]. That is, the first partial parity prediction circuit 1210 is a circuit that outputs the predicted value P_Zr_P[1] of the parity value of the first data unit from the lower order in the r-th partial multiplication result. To the first partial parity prediction circuit 1210, the value A[unit 1] and its parity value p_A[1] of the first multiplicand data unit and the value Y[unit r] and its parity value P_Y[r] of the r-th multiplier data unit are input.
The q+1-th partial parity prediction circuit 1220 is a circuit that performs prediction of the parity value of the q+1-th partial as explained in [2.3.3.1.2. Prediction of the parity value for the q+1-th partial]. That is, the q+1-th partial parity prediction circuit 1220 is a circuit that outputs the predicted value P_Zr_P[q+1] of the parity value of data following the q-th data unit from the lower order in the r-th partial multiplication result (data of the high-order p−1 bit in the r-th partial multiplication result data string). To the q+1-th partial parity prediction circuit 1220, the value A[unit q] and its parity value P_A[q] of the q-th multiplicand data unit and the value Y[unit r] of and its parity value P_Y[r] of the r-th multiplier data unit.
The middle-order partial parity prediction circuit 1230 is a circuit that performs the prediction of the middle-order partial parity value as explained in [2.3.3.1.3. prediction of the party value of the middle-order partial]. That is, the middle-order partial parity prediction circuit 1230 is a circuit that outputs the predicted values P_Zr_P[2], . . . , P_Zr_P[q] of the parity value of the respective data units from second through q-th from the lower order in the r-th partial multiplication result.
To the middle-order partial parity prediction circuit 1230, the value A[unit 1], . . . , A[unit q] of the respective data units from the first multiplicand data unit through the q-th multiplicand data unit. Furthermore, to the middle-order parity prediction circuit 1000, the value Y[unit r] of the r-th multiplier data unit and its parity value P_Y[r] are also input.
Meanwhile, while the r-th partial multiplication result parity prediction circuit 1101 has q−1 units of the middle-order partial parity prediction circuit 1230 that respectively output the parity predicted values P_Zr_P[2], . . . , P_Zr_P[q],
Next, the configuration of the first partial parity prediction circuit 1210 in
The configuration of the first example of the first partial parity prediction circuit 1210 in
The first partial parity prediction circuit 1210 has a low-order partial parity logical AND circuit 1201, a low-order partial first logical AND circuit 1211, an XOR circuit 1212, a low-order partial second logical AND circuit 1213, and a low-order partial XOR circuit 1214. Among them, the first partial parity prediction circuit 1210 has p−2 units of both the XOR circuit 1212 and the low-order partial second logical AND circuit 1213.
The low-order partial parity logical AND circuit 1201 is a circuit to which the parity value P_A[1] of the first multiplicand data unit and the value of the parity value P_Y[r] of the r-th multiplier are input and which outputs the value of the logical AND (low-order partial parity logical AND described above) of their parity values.
The low-order partial first logical AND circuit 1211 is a circuit to which the value of the highest-order bit of the first multiplicand data unit and the value of the bit at the second digit from the lower order in the r-th multiplier data unit are input and which outputs the value of their logical AND (low-order partial first logical AND described above).
The p−2 units of the XOR circuit 1212 and the low-order partial second logical AND circuit 1213 respectively perform operations according to different values of g (here, g is a natural number from 2 through p−1). The XOR circuit 1212 is a circuit to which the value of each bit for g digits from the higher order in the first multiplicand data unit is input and which outputs the value or their XOR. In addition, the low-order partial second logical AND circuit 1213 is a circuit to which the output of the XOR circuit 1212 and the value of the g+1 bit from the lower order in the r-th multiplier data unit are input and which outputs their logical AND (the low-order partial second logical AND described above).
The low-order partial XOR circuit 1214 is a circuit to which the output of the low-order partial parity logical AND circuit 1201, the output of the low-order partial parity logical AND circuit 1211 and the output of each of the p−2 units of low-order partial second logical AND circuit 1213 are input and which outputs the value of their XOR. The output of the low-order partial XOR circuit 1214 becomes the predicted value P_Zr_P[1] of the parity value of the first partial being the output of first partial parity prediction circuit 1210.
Next,
In the configuration in
The low-order partial XOR circuit 1214 is a circuit to which the output of the low-order partial parity OR circuit 1202, the output of the low-order partial parity logical AND circuit 1211 and the output of each of the p−2 units of the low-order partial second logical AND circuit 1213 are input and which outputs the value of their XOR. The output of the low-order partial XOR circuit 1214 becomes the predicted value P_Zr_P[1] of the first partial of the r-th partial multiplication result being the output of the first partial parity prediction circuit 1210.
Next, the configuration of the q+1-th partial parity prediction circuit 1220 in
The configuration of the q+1-th partial parity prediction circuit 1220 in
The q+1-th partial parity prediction circuit 1220 has a high-order partial parity logical AND circuit 1203, a high-order partial first logical AND circuit 1221, the XOR circuit 1222, a high-order partial second logical AND circuit 1223, and a high-order partial XOR circuit 1224. The q+1-th partial parity prediction circuit 1220 hasp−1 units of both the XOR circuit 1222 and the high-order partial second logical AND circuit 1223.
The high-order partial parity logical AND circuit 1203 is a circuit to which the parity value P_A[q] of the q-th multiplicand data unit and the parity value P_Y[r] of the r-th multiplier data unit are input and which outputs the value of the logical AND (the high-order partial parity logical AND described above) of their parity values.
The high-order partial first logical AND circuit 1221 is a circuit to which the value of the lowest-order bit in the q-th multiplicand data unit and the value of the highest-order bit in the r-th multiplier data unit are input and which outputs the value of their logical AND (the high-order partial first logical AND described above).
The p−1 units of the XOR circuit 1222 and the high-order partial second logical AND circuit 1223 respectively perform operations according to difference values of h (here, h is a natural number from 2 through p). The XOR circuit 1222 is a circuit to which the value of each bit for h digits from the lower order in the q-th multiplicand data unit is input and which outputs their XOR. In addition the high-order partial second logical AND circuit 1223 is a circuit to which the output of the XOR circuit 1222 and the value of the bit at the h-th digit from the higher order in the r-th multiplier data unit are input and which outputs the logical AND (the high-order partial second logical AND described above).
The high-order partial XOR circuit 1224 is a circuit to which the output of the high-order partial parity logical AND circuit 1203, the output of the high-order partial parity logical AND circuit 1221 and the output of each of the p−1 units of the high-order partial first logical AND circuit 1223 are input and which outputs the value of their XOR. The output of the high-order partial XOR circuit 1224 becomes the predicted value P_Zr_P[q+1] of the q+1-th partial of the r-th partial multiplication result being the output of the q+1-th partial parity prediction circuit 1220.
Next,
In the configuration in
The high-order partial XOR circuit 1224 is a circuit to which the output of high-order partial parity logical OR circuit 1204, the output of the high-order partial parity logical AND circuit 1221 and the output of each of the p−1 high-order partial second logical AND circuit 1223 are input and which outputs the value of their XOR. The output of the high-order partial XOR circuit 1224 becomes the predicted value P_Zr_P[q+1] of the q+1-th partial of the r-th partial multiplication result being the output of the first partial parity prediction circuit 1210.
Next, the configuration of the middle-order partial parity prediction circuit 1230 in
The k-th partial parity prediction circuit 1300 is a circuit that outputs the predicted value P_Zr_P[k] of the k-th (here, k is a natural number from 2 through q) data unit (the k-th partial described above) from the lower order in the r-th partial multiplication result.
To the k-th partial parity prediction circuit 1300, the value A[unit k] and its parity value P_A[k] of the k-th multiplicand data unit, and the value Y[unit r] and its parity value P_Y[r] of the r-th multiplier data unit are input. Furthermore, to the k-th partial parity prediction circuit 1300, the value A[unit k−1] of the k−1-th multiplicand data unit is also input.
The k-th partial parity prediction circuit 1300 has a middle-order partial parity logical AND circuit 1301, a middle-order partial first logical AND circuit 1311, an XOR circuit 1312, and a middle-order partial second logical AND circuit 1313. The k-th partial parity prediction circuit 1300 has p−2 units of both the XOR circuit 1312 and the middle-order partial second logical AND circuit 1313 among them.
The middle-order partial parity logical AND circuit 1301 is a circuit to which the parity value P_A[k] of the k-th multiplicand data unit and the parity value P_Y[r] of the value of the r-th multiplier data unit are input and which outputs the value of the logical AND of their parity value (the middle-order partial parity logical AND described above).
The middle-order partial first logical AND circuit 1311 is a circuit to which the value of the highest-order bit in the k-th multiplicand data unit and the value of the bit at the second digit from the lower order in the r-th multiplier data unit are input and which outputs the value of their logical AND (the middle-order partial first logical AND described above).
The p−2 units of the XOR circuit 1312 and the middle-order partial second logical AND circuit 1313 respectively perform operations according to difference values of m (here, m is a natural number from 2 through p−1). The XOR circuit 1312 is a circuit to which the value of each bit for m digits from the higher order in the k-th multiplicand data unit is input and which outputs the value of their XOR. In addition, middle-order partial second logical AND circuit 1313 is a circuit to which the output of the XOR circuit 1312 and the value of the bit at the m+1-th digit from the lower order in the r-th multiplier data unit are input and which outputs the logical AND (the middle-order partial second logical AND described above).
The middle-order partial third logical AND circuit 1321 is a circuit to which the value of the highest-order bit in the k−1-th 1 multiplicand data unit and the value of the bit at the second digit from the lower order in the r-th multiplier data unit are input and which outputs the value of their logical AND (the middle-order partial third logical AND described above).
The p−2 units of the XOR circuit 1322 and the middle-order partial fourth logical AND circuit 1323 respectively perform operations according to difference values of n (here, n is a natural number from 2 through p−1). The XOR circuit 1322 is a circuit to which the value of each bit for n digits from the higher order in the k−1-th multiplicand data unit is input and outputs the value of their XOR. In addition, the middle-order partial fourth logical AND circuit 1323 is a circuit to which the output of the XOR circuit 1322 and the value of the bit at the n+1-th digit from the lower order in the r-th multiplier data unit are input and which outputs the logical AND (the middle-order partial fourth logical AND described above).
The middle-order partial XOR circuit 1331 is a circuit to which the middle-order partial parity logical AND, the middle-order partial first logical AND, the middle-order partial second logical AND, middle-order partial third logical AND and the middle-order partial fourth logical AND are input and which outputs the value of their XOR. The output of the middle-order partial XOR circuit 1331 becomes the predicted value P_Zr_P[k] of the parity value of the k-th partial of the r-th partial multiplication result being the output of the k-th partial parity prediction circuit 1300.
Next,
In the configuration in
The middle-order partial XOR circuit 1331 is a circuit to which the middle-order partial parity OR, the middle-order partial first logical AND, the middle-order partial second logical AND, the middle-order partial third logical AND, and the middle-order partial fourth logical AND are input and which outputs the value of their XOR. The output of the middle-order partial XOR circuit 1331 becomes the predicted value P_Zr_P[k] of the k-th partial of the r-th partial multiplication result being the output of the k-th partial parity prediction circuit 1300.
By the configuration described above, all of the predicted values P_Zr_P[1], . . . , P_Zr_P[q+1] for each data unit of the r-th partial multiplication result are obtained for all the values that r (r is a natural number from 1 through q) may take are obtained.
Next, the specific configuration of the middle-order parity prediction circuit 1000 in
As described above, the Carry-Less multiplication parity prediction circuit 202 in
The s-th middle-order parity prediction circuit 2000 is a circuit that outputs the predicted value P_Z_P[2], . . . , P_Z_P[q] of the parity value of the s-th data unit (here, s is a natural number from 2 through q) from the lower order in the multiplication result Z. In addition, the multiplication result Z is a circuit that outputs the predicted values P_Z_P[q+1], . . . , P_Z_P[2q−1] of the t-th data unit (here, t is a natural number from q+1 through 2q−1) from the lower order in the multiplication result Z.
In
To the XOR circuit 2010, the parity predicted values that the s-u+1-th (here, u is a natural number from 1 through s) partial parity prediction circuits that the u-th partial multiplication result parity prediction circuits are input, and the XOR circuit 2010 outputs the XOR of the s parity predicted values. The output of the XOR circuit 2010 becomes the predicted value P_Z_P[s] of the parity value of the s-th data unit from the lower order in the multiplication result Z being the output of the s-th middle-order parity prediction circuit 2000.
In addition, in
To the XOR circuit 2011 output, the parity predicted values output from the t-v+1-th partial parity prediction circuits that the v-th (here, v is a natural number from t-q through q) partial multiplication result parity prediction circuits have, and outputs the XOR of the w parity predicted values. The output of the XOR circuit 2011 becomes the predicted value P_Z_P[t] of the parity value of the t-th data unit from the lower order in the multiplication result Z.
Next,
In the configuration of the s-th middle-order parity prediction circuit 2000 in
Meanwhile, when using odd-number parity as the parity value, instead of configuring the s-th middle-order parity prediction circuit 2000 as in
In addition, in the configuration of the t-th middle-order parity prediction circuit 2001 in
Meanwhile, when using odd-number parity as the parity value, instead of configuring the t-th middle-order parity prediction circuit 2001 as in
By the configuration described above, the parity predicted values P_Z_P[2], . . . , P_Z_P[2q−1] of the respective data units from the second through 2q−1 from the lower order in the multiplication result Z are output from the middle-order parity prediction circuit 1000. Therefore, by the middle-order parity prediction circuit 1000 and the low-order parity prediction circuit 800 and the high-order parity prediction circuit 900, the parity predicted values P_Z_P[1], . . . , P_Z_P[2q] of the respective data units of the multiplication result Z are obtained.
Thus, in any of the embodiments described above, the malfunction of the Carry-Less multiplication circuit 201 may be detected using the Carry-Less multiplication parity prediction circuit 202.
All examples and conditional language recited herein are intended for pedagogical purposes to aid the reader in understanding the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions, nor does the organization of such examples in the specification relate to a showing of the superiority and inferiority of the invention. Although the embodiments of the present invention have been described in detail, it should be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.
Number | Date | Country | Kind |
---|---|---|---|
2011-205302 | Sep 2011 | JP | national |