Abstract:
A multiplier device comprising hold means for holding the result of addition, block product means for producing k block products each having 2n bits, where n is an integer equal to or greater than 2, the k block products being formed by multiplying each block by n bits, k blocks being obtained by dividing a multiplicand at intervals of n bits from the least significant bit of the multiplicand, and adder means for adding two groups of block products to the output of the hold means, the two groups of block products consisting of alternate block products out of the k block products from the block product means.

Description:
BACKGROUND OF THE INVENTION 
     The present invention relates to a multiplier device for performing a multiplying operation at a high speed. 
     In a conventional multiplying system, multiples of a multiplicand are previously formed, and one of the multiples of the multiplicand corresponding to each digit of a mulitiplier is selected in each adding cycle to add the selected multiple to the result of accumulation obtained up to the preceding adding cycle. 
     In such a system, the number of multiples of a multiplicand which are added to each other is increased as the number of bits making up each digit of a multiplier is larger, and thus the multiplying operation is delayed due to increased stages for forming the multiples. 
     SUMMARY OF THE INVENTION 
     An object of the present invention, therefore, is to provide a multiplier device which overcomes the prior art problem and can perform a multiplying operation based upon a plural-bit scanning in the case where the number of bits making up each digit of a multiplier is two or more, at a high speed, without producing multiplies of a multiplicand at a special multiple production system. 
     In order to achieve the above object, according to the present invention, a multiplicand is divided at intervals of n bits from the least significant bit side into k blocks, where n is an integer equal to or greater than 2, each of the blocks is multiplied by the n bits of multiplier by a block-product forming means to obtain k block products each having 2n bits, alternate ones of the k block products are extracted to form two groups of block products, the two groups thus obtained are applied to two input terminals of a three-input adder, and the result of accumulation carried out up to the preceding adding cycle is applied to the remaining input terminal of the adder to add the applied block products and the result of accumulation to each other to perform a multiplying operation. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     Now, an embodiment of the present invention will be explained below in detail, with reference to the accompanying drawing. 
     The drawing is a block diagram of an embodiment of a multiplier device according to the present invention. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     The multiplication of binary-coded decimal numerals will be explained using the present embodiment. In the drawing, reference numeral 1 designates a four-byte register for holding a multiplicand, 2 a four-byte register for holding a multiplier, 3 a block-product forming circuit for multiplying each of eight blocks which are obtained by dividing the multiplicand register 1 at intervals of four bits from the least significant bit, by the least significant one of eight blocks which are obtained by dividing the multiplier register 2 in the above-mentioned manner, to obtain block products each having eight bits, and 8 a three-input, binary-coded decimal adder (hereinafter referred to as a &#34;three-input adder&#34;) provided with four-byte input registers 4, 5 and 6 and a four-byte output register 9. Alternate ones of the eight block products formed by the block-product forming circuit 3 are taken out to form two groups of block products. One group including four block products which are odd-numbered ones from the least significant block product, is applied to the input register 5. The other group including four block products which are even-numbered ones from the least significant block product, is applied to an upper portion of the input register 6 other than four least significant bits. At this time, the four lower bits of the most significant block product are applied to four most significant bits of the input register 6, and the four upper bits of the most significant block product are applied to a guard digit register 7 for setting therein a guard digit in the course of arithmetic operation. Further, a value of 0000 is always supplied to the four least significant bits of the input register 6 to match the digit. 
     On the other hand, a lower portion of the input register 4 other than the four most significant bits thereof is connected to receive an upper portion of the output register 9 other than the four least significant bits thereof, and the four most significant bits of the input register 4 is supplied with the output of an adder 12 for adding the contents of the guard digit register 7 to the contents of a carry register 10 of the three-input adder 8. Four least significant bits of the output register 9 is applied to four most significant bits of the multiplier register 2. 
     Further, reference numeral 11 designates a shift circuit for shifting the contents of the multiplier register 2 to the right by four bits, and 13 an effective block number detecting circuit for detecting the number of effective blocks in the multiplier register 2 which hold a value other than zero. For example, in the effective block number detecting circuit 13, the blocks in the multiplier register 2 are decoded to find effective blocks, and it is detected whether the most significant effective block is first, second, . . . , or eighth effective block from the least significant effective block. Further, reference numeral 14 designates a counter for setting therein the output of the effective block number detecting circuit to decrease the contents of the counter 14 by one each time an adding cycle is carried out, and 15 a control section for controlling the whole of the present embodiment by a microprogram control system or others. 
     In the present embodiment, a lower portion of the result of multiplication is obtained in the multiplier register 2. A lower portion taking-out circuit 16 is used to take the above-mentioned lower portion out of the multiplier register 2. That is, the circuit 16 takes out blocks, the number of which is equal to a value obtained by subtracting one from the number of effective blocks detected by the effective block number detecting circuit 13, from an upper portion of the multiplier register 2. Alternatively, the lower portion of the result of multiplication is not applied to the multiplier register 2, but may be applied to a register for exclusive use or a register coupled unitarily with the lower-order side of the output register 9 to be shiftable therewith. However, such a circuit configuration becomes large in the number of registers as compared with the present embodiment. 
     The present embodiment operates of follows. Now, let us consider the case where numerals 5938 and 79 are set in the multiplicand register 1 and multiplier register 2, respectively, to perform a decimal multiplying operation 5938×79=469102. 
     At the beginning of the multiplying operation, it is detected by the effective block number detecting circuit 13 that the number of effective blocks in the multiplier (namely, the numeral 79) is equal to 2, and a value of 2 is set in the counter 14. The control section 15 delivers a control signal for starting an adding cycle since the contents of the counter 14 are larger than zero. 
     In the first adding cycle, the block values 0, 0, 0, 0, 5, 9, 3 and 8 of the multiplicand (namely, the numeral 5938) held in the multiplicand register 1 and the lower block value 9 of the multiplier (namely, the numeral 79) held in the multiplier register 2 are applied to the block-product forming circuit 3 to obtain block products 00, 00, 00, 00, 45, 81, 27 and 72 corresponding respectively to the block values 0. 0, 0, 0, 5, 9, 3 and 8 of the multiplicand. 
     Accordingly, the odd-numbered block products from the least significant block product, namely, values of 00, 00, 81 and 72 are applied to the input register 5, and thus the contents of the input register 5 become equal to 00008172. Further, the even-numbered block products from the least significant block product, namely, values of 0, 00, 45 27 are applied to the upper portion of the input register 6 other than the four least significant bits, and a value of 0 is applied to the four least significant bits to match the digit. Thus, the contents of the input register 6 become equal to 00045270. The guard digit register 7 is applied with the four upper bits of the most significant block product, namely, a value of 0. 
     A value of 00000000 is applied, as an initial value, to the input register 4. Accordingly, the contents of the output register 9 become equal to 00053442, and the contents of the carry register 10 are equal to zero. 
     In this state, the contents of the counter 14 become equal to 1. Accordingly, the control section 15 again delivers the control signal for starting an adding cycle. Thus, the contents of the multiplier register 2 are first shifted to the right by four bits, through the aid of the shift circuit 11, and then the four upper bits of the multiplier register 2 are supplied with the contents of the four least significant bits of the output register 9, namely, a value of 2. Thus, the contents of the multiplier register 2 become equal to 20000007. Next, the block values 0, 0, 0, 0, 5, 9, 3 and 8 of the multiplicand from the multiplicand register 1 and the upper block value 7 of the multiplier from the multiplier register 2 are applied to the block-product forming circuit 3 to obtain block products 00, 00, 00, 00, 35, 63, 21 and 56 corresponding respectively to the block values 0, 0, 0, 0, 5, 9, 3 and 8 of the multiplicand. The odd-numbered block products from the least significant block product, namely, values of 00, 00, 63 and 56 are applied to the input register 5, and thus the contents of the register 5 become 00006356. Further, the even-numbered block products from the least significant block product, namely, values of 0, 00, 35 and 21 are applied to the upper portion of the input register 6 other than the four least significant bits, and a value of 0 is applied to the four least significant bits to match the digit. Thus, the contents of the input register 6 become equal to 00035210. The guard digit register 7 is supplied with a value of 0. The lower portion of the input register 4 other than the four upper bits thereof is supplied with the upper portion of those contents of the output register 9 which indicate the result of addition having been carried out in the preceding adding cycle, other than the four lower bits, namely, a value of 0005344, and the four upper bits of the input register 4 are supplied with the summation of the contents of the carry register 10 (equal to zero) and the contents of the guard digit register 7 (equal to zero), that is, a value of 0. Thus, the contents of the input register 4 become 00005344. Accordingly, the contents of the output register are changed to 00046910, and the contents of the carry register 10 are still equal to 0. 
     In this state, the contents of the counter 14 become equal to zero. Accordingly, the control section 15 does not start an adding cycle any longer. The upper portion of the result (equal to 469102) of multiplication, namely, a value of 496910 is obtained in the output register 9, and sent to a different device (not shown) through a signal line 17. Further, the lower portion of the result of multiplication, namely, a value of 2 is obtained in the multiplier register 2, and sent to the different device through the lower portion taking-out circuit 16 and a signal line 18. 
     In the foregoing description, explanation has been made of the case where the multiplier has two effective blocks. When a multiplier includes three or more effective blocks, the number of adding cycles is increased. In this case, the number of lower blocks of the multiplication result which are to be taken out of the multiplier register 2, is also increased. Further, in the foregoing description an example has been explained where the multiplicand includes a relatively small number of blocks and a value of 0 is applied to the guard digit register 7. In the case where a multiplicand includes a large number of blocks and a value other than zero is applied to the guard digit register 7, the present embodiment performs the same operation as mentioned above, excepting that the value applied to the guard digit register 7 is added by the adder 12 to the contents of the carry register 10. Although the multiplication of binary-coded decimal numerals has been explained, it is needless to say that the multiplication of different kinds of numerals can be carried out in a similar manner. 
     In the present embodiment, each block-product forming part in the block-product forming circuit 3 is formed of a logical gate group including no carry bit. In more detail, since an 8-bit pattern corresponding to the product of a 4-bit block of a multiplicand and a 4-bit block of a multiplier is outputted to a single block-product forming part, each block-forming part can be formed of a simple logical gate group. 
     As has been explained in the foregoing, according to the present invention, it is not required to make multiplies of a multiplicand at a special stage. That is, a time delay required for obtaining multiples of a multiplicand can be eliminated, and therefore a multiplying operation can be performed at a high speed.