WO2019189878A1 - 演算装置および演算システム - Google Patents

演算装置および演算システム Download PDF

Info

Publication number
WO2019189878A1
WO2019189878A1 PCT/JP2019/014330 JP2019014330W WO2019189878A1 WO 2019189878 A1 WO2019189878 A1 WO 2019189878A1 JP 2019014330 W JP2019014330 W JP 2019014330W WO 2019189878 A1 WO2019189878 A1 WO 2019189878A1
Authority
WO
WIPO (PCT)
Prior art keywords
adder
multiplier
bits
adders
multipliers
Prior art date
Application number
PCT/JP2019/014330
Other languages
English (en)
French (fr)
Inventor
淳一郎 牧野
啓吾 似鳥
美幸 坪内
Original Assignee
国立研究開発法人理化学研究所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 国立研究開発法人理化学研究所 filed Critical 国立研究開発法人理化学研究所
Priority to JP2020509352A priority Critical patent/JP7394462B2/ja
Priority to EP19776398.0A priority patent/EP3779670A4/en
Priority to CN201980024094.7A priority patent/CN111971649A/zh
Publication of WO2019189878A1 publication Critical patent/WO2019189878A1/ja
Priority to US17/037,767 priority patent/US20210011686A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3816Accepting numbers of variable word length

Definitions

  • the present invention relates to an arithmetic device and an arithmetic system, and more particularly to an arithmetic device and an arithmetic system that perform multiplication with variable precision.
  • the arithmetic device described in Patent Document 1 includes two multipliers 12 and 13, an ALU 37, and accumulators 24 and 25.
  • the input of the ALU 37 is supplied with the multiplication results of the multipliers 12 and 13 and the outputs of the accumulators 24 and 25.
  • Patent Document 1 has a problem that the circuit scale is large because the two multipliers 12 and 13 obtain the final multiplication result, resulting in poor power efficiency.
  • the number of transistors required for single precision multiplication is less than 1/4 of the number of transistors required for double precision multiplication, and the number of transistors required for half precision multiplication is required for double precision multiplication. 1/16 or less of the number of active transistors. Therefore, for example, a general arithmetic unit that executes by switching between single precision and double precision, for example, the number of transistors that can execute one double precision calculation or four single precision calculations as a circuit scale. Have In such a general arithmetic device, the number of transistors used for single-precision arithmetic is 1 ⁇ 4 or less that of transistors used for double-precision arithmetic. In addition, it is conceivable that one double precision calculation or two single precision calculations can be switched.
  • the transistor used for the single precision calculation is 1 ⁇ 2 of the transistor used for the double precision calculation. It becomes as follows. That is, although such an arithmetic unit has a large circuit scale for double-precision arithmetic, 3/4 or 1/2 or more of the transistors in the arithmetic unit are used when performing single-precision arithmetic. Without being wasted.
  • an object of the present invention is to provide an arithmetic device and an arithmetic system capable of efficiently executing multiple precision multiplications with a small circuit scale.
  • an arithmetic device that performs multiplication with variable precision.
  • the arithmetic device has a plurality of multipliers, and the plurality of multipliers are divided into one or more multipliers according to the operation accuracy mode and assigned to one or a plurality of groups.
  • the multiplier may include a multiplication unit that multiplies the individual multiplier that is at least a part of the digit range of the multiplier for the group and the individual multiplicand that is the part of the multiplicand of the multiplicand for the group according to the calculation accuracy mode.
  • the arithmetic unit has a plurality of adders, and the plurality of adders are divided into one or more adders according to the calculation accuracy mode and assigned to one or a plurality of groups, and assigned to each group.
  • the added one or more adders may include an adder that adds the multiplication results of the multipliers assigned to the group and outputs the product of the multiplier and the multiplicand.
  • the arithmetic unit inputs each multiplication result by each multiplier to each digit position to which the multiplication result in one or more adders is to be added for each of one or a plurality of groups according to the arithmetic accuracy mode.
  • One connection switch may be provided.
  • Each of the multiple multipliers may output a multiplication result including sum data of each digit and carry data from each digit by multiplying the individual multiplier and individual multiplicand.
  • Each of the plurality of multipliers may output a multiplication result of 2 unit bit length by multiplying the individual multiplier and individual multiplicand of 1 unit bit length.
  • Each of the plurality of adders may add a plurality of input data having a 2-unit bit length and output a sum of the 2-unit bit lengths and a carry to the upper digit according to the calculation accuracy mode.
  • At least one operation accuracy mode for multiplying a multiplier and multiplicand of 2 unit bit length or more, for each of one or a plurality of groups one or more multipliers are assigned to each multiplier in the multiplier for each cycle. And the individual multiplicand selected by the unit bit length in order from the upper digit for each cycle in the multiplicand, and the partial product of each individual multiplier and individual multiplicand as the multiplication result for each cycle. You may output.
  • the first connection switching unit is configured so that, for each cycle, the individual multiplier of the least significant digit range in the multiplier and the partial product of the individual multiplicand correspond to the least significant digit range in the adder of 1 or 2 or more.
  • Each partial product output by two or more multipliers may be shifted and input to one or more adders to be added to the intermediate result.
  • the arithmetic device further includes a second connection switching unit that shifts the intermediate result to the upper side by one unit bit length for each cycle of one or a plurality of groups and inputs the result to one or more adders. Good.
  • a plurality of multipliers and a plurality of adders may be assigned to two or more groups.
  • the computing device may compute the product of the multiplier and multiplicand for each of two or more groups using a plurality of cycles.
  • a plurality of multipliers are assigned to a plurality of groups each including one multiplier, and a multiplier assigned to each group is May be multiplied by a multiplier and multiplicand of one unit bit length assigned to.
  • the adder may be provided corresponding to each of the plurality of adders, and may have a plurality of intermediate registers respectively holding digit ranges corresponding to each adder in the intermediate result.
  • Each of the plurality of adders may include a first addition element that outputs an addition result including sum data of each digit and carry data from each digit.
  • Each of the plurality of intermediate registers may hold the sum data and carry data of the digit range output by the corresponding first addition element in the intermediate result.
  • the addition unit is a plurality of second addition elements provided corresponding to each of the plurality of adders, and is divided into one or more second addition elements according to the calculation accuracy mode, and is divided into one or more
  • Each group further includes a plurality of second addition elements that are added to the sum data and carry data output by one or more first addition elements in each group and output as a product of a multiplier and a multiplicand. You can do it.
  • an arithmetic device that performs multiplication with variable precision.
  • the arithmetic unit may include a multiplying unit having a plurality of multipliers each multiplying two numbers each having a unit bit length and outputting a multiplication result including sum data of each digit and carry data from each digit.
  • the arithmetic device may include an adding unit having a plurality of adders that add at least two input data each including a multiplication result by at least one of the plurality of multipliers.
  • the arithmetic device divides a plurality of multipliers and a plurality of adders into groups each including one or more multipliers and one or more adders and multiplying different multipliers and multiplicands according to the operation accuracy mode.
  • a mode selection unit that selects one or more multipliers and one or more adders in a group and a cycle number used to multiply the multiplier and the multiplicand.
  • the mode selection unit is configured to multiply a plurality of multipliers and a plurality of adders, n multipliers and n adders in an arithmetic accuracy mode of multiplying a multiplier and multiplicand of n unit bit length (n is a natural number), respectively.
  • Each of the n multipliers in each of at least one group includes n individual multipliers each having a digit range of 1 unit bit length included in the multiplier for each group, and a digit of 1 unit bit length included in the multiplicand. Multiplication with each of the n individual multiplicands, each in a range, may be performed n times per cycle for n cycles.
  • n adders in each of the at least one group are combined so that for n cycles, each multiplication result from the n multipliers in the same group every cycle, each in the intermediate result of the product of the multiplier and multiplicand. You may add to the digit position according to a multiplication result.
  • an arithmetic device that performs multiplication with variable precision, each configured to output a sum signal and a carry signal one stage before the multiplication result of two input data.
  • a first switch configured to switch to any one of the above, and output of a plurality of 1-unit bit length data constituting a plurality of addition results held in the plurality of registers according to the calculation accuracy mode
  • the tip is added to the plurality of Switching to any one of a plurality of bit positions of a plurality of inputs of the device, or switching
  • an arithmetic device that performs multiplication with variable precision, wherein the first sum signal of two unit bit lengths and the first sum signal of the first stage of the multiplication result of two data of one unit bit length and A first multiplier configured to output a carry signal of 1; a second sum signal of 2 unit bit length one stage before the multiplication result of two 1 unit bit length data; A second multiplier configured to output a carry signal; a first and a second adder configured to perform addition of a plurality of 2-unit bit length data; and First and second registers configured to hold a first addition result of the second adder and a second addition result of the second adder, respectively, and first and second output terminals; The first output from the first multiplier according to the calculation accuracy mode.
  • a plurality of 1-unit bit-length data respectively constituting the second sum signal and the second carry signal output from the second multiplier A first connection switch configured to switch the output destination to any one of a plurality of bit positions of a plurality of inputs of the first adder and the second adder, and the calculation accuracy mode
  • the output destinations of the plurality of 1-unit bit length data respectively constituting the first addition result Switch to one of a plurality of bit positions of a plurality of inputs of the second adder and the second adder, or output destination of the first addition result in the first register to the first output Switch to the terminal and the second Providing an arithmetic unit and a second connection switching unit configured to switch the output destination of the second addition result in register to said second output terminal.
  • a plurality of multipliers each performing multiplication with variable precision, each of which outputs a sum signal and a carry signal one stage before the multiplication result of two input data
  • a plurality of first stage adders each configured to output a sum signal and a carry signal one stage before the addition result, and each output from the corresponding first stage adder
  • a plurality of sum signal holding registers configured to hold the sum signal, and a plurality of carry configured to each hold the carry signal output from the corresponding first stage adder
  • a plurality of second stage adders each configured to add an input sum signal and a carry signal, and output from the plurality of multipliers according to the operation accuracy mode Configure multiple sum and carry signals
  • a plurality of unit bit length data output destinations are switched to any one of a plurality of bit positions of a plurality of inputs of the plurality of first stage adders, or a plurality of sums output from the plurality of multipliers
  • a first connection switch configured to switch an output destination of a signal and a carry signal to any
  • an arithmetic device that performs multiplication with variable precision, wherein the first sum signal of two unit bit length and the first sum signal of the first stage of the multiplication result of two data of one unit bit length and A first multiplier configured to output a carry signal of 1; a second sum signal of 2 unit bit length one stage before the multiplication result of two 1 unit bit length data; A second multiplier configured to output a carry signal, and a third sum signal and a third carry signal one stage before the addition result of the data of a plurality of 2-unit bit lengths. And a second adder configured to output a fourth sum signal and a fourth carry signal one stage before the addition result of a plurality of 2-unit bit length data.
  • the first and second output terminals for outputting the addition result of the third adder and the addition result of the fourth adder, respectively, and the first multiplier according to the calculation accuracy mode.
  • the output destination of the data of one unit bit length is switched to any one of a plurality of bit positions of a plurality of inputs of the first adder and the second adder, or the first sum signal and the first adder 1 carry signal to the third adder
  • the first connection switch configured to output the second sum signal and the second carry signal to the fourth adder, and according to the calculation accuracy mode, the first connection switch
  • the third sum signal in one register, the third carry signal in the second register, the fourth sum signal in the third register, and the fourth register in the fourth register Switching a plurality of 1-unit-bit-length data output destinations that respectively constitute the fourth carry signal to a plurality of bit positions of a plurality of inputs of the first adder and the second adder, or
  • the third sum signal in the first register and the third carry signal in the second register are output to the third adder and the fourth register in the third register Sum signal and before in the fourth register
  • a second connection switch configured to output the fourth carry signal to the fourth adder.
  • an arithmetic device that performs multiplication with variable precision, wherein the first sum signal of two unit bit lengths and the first sum signal of the first stage of the multiplication result of two 1 unit bit length data and A first multiplier configured to output a carry signal of 1; a second sum signal of 2 unit bit length one stage before the multiplication result of two 1 unit bit length data; A second multiplier configured to output a carry signal, a third sum signal of two unit bit lengths and a third carry one stage before the multiplication result of two 1-unit bit length data A third multiplier configured to output a signal, and a fourth sum signal and a fourth carry signal of 2 unit bit lengths one stage before the multiplication result of two 1 unit bit length data A fourth multiplier configured to output, and adding a plurality of 2-unit bit length data First to fourth adders each configured to execute, a first addition result of the first adder, a second addition result of the second adder, and the third adder First to fourth registers configured to hold the third
  • a computing device includes a second connection switch configured to switch an output destination of a fourth addition result to the fourth output terminal.
  • an arithmetic device that performs multiplication with variable precision, wherein the first sum signal of two unit bit lengths and the first sum signal of the first stage of the multiplication result of two data of one unit bit length and A first multiplier configured to output a carry signal of 1; a second sum signal of 2 unit bit length one stage before the multiplication result of two 1 unit bit length data; A second multiplier configured to output a carry signal, a third sum signal of two unit bit lengths and a third carry one stage before the multiplication result of two 1-unit bit length data A third multiplier configured to output a signal, and a fourth sum signal and a fourth carry signal of 2 unit bit lengths one stage before the multiplication result of two 1 unit bit length data A fourth multiplier configured to output, and adding a plurality of 2-unit bit length data A first adder configured to output a fifth sum signal and a fifth carry signal one stage before the result, and a first stage one stage before the addition result of a plurality of 2-unit bit length data A
  • a first connection switch configured to output a carry signal to the seventh adder and to output the fourth sum signal and the fourth carry signal to the eighth adder. And the fifth sum signal in the first register, the fifth carry signal in the second register, and the sixth register in the third register according to the calculation accuracy mode.
  • the sixth register the sixth carry signal in the fourth register, and the fifth register in the fifth register. 7 sum signal, the seventh carry signal in the sixth register, the eighth sum signal in the seventh register, and the eighth carry signal in the eighth register.
  • An arithmetic device including the second connection switch configured as described above is provided.
  • an arithmetic system including an arithmetic unit including a plurality of the arithmetic devices described above and a plurality of processors sharing the arithmetic unit.
  • the structure of the arithmetic unit 405 which concerns on this embodiment is shown.
  • the calculation in the semi-precision calculation mode of the calculation device 405 according to the present embodiment is shown.
  • a multiplication of a single precision multiplier A1 and a multiplicand B1 is shown.
  • the calculation in the single precision arithmetic mode of the arithmetic unit 405 which concerns on this embodiment is shown.
  • a multiplication of a double precision multiplier A1 and a multiplicand B1 is shown.
  • resistor 550 which concern on the 1st modification of this embodiment is shown.
  • the structure of the arithmetic unit 1 which concerns on the 2nd modification of this embodiment is shown.
  • movement in the semi-precision arithmetic mode of the arithmetic unit 1 which concerns on a 2nd modification is shown.
  • the input / output of the adder 4a in the half-precision arithmetic mode of the second modification is shown.
  • movement in the single precision arithmetic mode of the arithmetic unit 1 which concerns on a 2nd modification is shown.
  • the input / output of the adders 4a to 4b in the first cycle in the single precision operation mode of the second modification will be described.
  • the input / output of the adders 4a to 4b in the second cycle in the single precision arithmetic mode of the second modification example is shown.
  • a multiplier A1, a multiplicand B1, and a product C1 thereof in the double precision calculation mode are shown.
  • movement in the single precision arithmetic mode of the arithmetic unit 1 which concerns on a 2nd modification is shown.
  • the input / output of the adders 4a to 4d in the first cycle in the double precision arithmetic mode of the second modified example is shown.
  • the input / output of the adders 4a to 4d in the second cycle in the double precision arithmetic mode of the second modified example is shown.
  • the structure of the Wallace tree multiplier 2a is shown. Data generated by the Wallace tree multiplier 2a is shown.
  • the structure of the arithmetic unit 101 which concerns on the 3rd modification of this embodiment is shown.
  • movement in the semi-precision arithmetic mode of the arithmetic unit 101 which concerns on a 3rd modification is shown.
  • the input / output of the adder 4a in the half-precision arithmetic mode of the third modification is shown.
  • movement in the single precision arithmetic mode of the arithmetic unit 101 which concerns on a 3rd modification is shown.
  • the input / output of the adders 14a to 14b in the first cycle in the single precision operation mode of the third modification example is shown.
  • the input / output of the adders 14a and 14b in the second cycle in the single precision operation mode of the third modification example is shown.
  • movement in the double precision arithmetic mode of the arithmetic unit 101 which concerns on a 3rd modification is shown.
  • the input / output of the adders 14a to 14b in the first cycle in the double precision arithmetic mode of the third modified example is shown.
  • the input / output of the adders 14c to 14d in the first cycle in the double precision arithmetic mode of the third modified example is shown.
  • the input / output of the adders 14a to 14b in the second cycle in the double precision arithmetic mode of the third modified example is shown.
  • the input / output of the adders 14c to 14d in the second cycle in the double precision arithmetic mode of the third modified example is shown.
  • the structure of the adder 200 which performs carry signal hold addition using two CSA is shown.
  • the input data, intermediate data, and output data of the adder 200 are shown.
  • the configuration of an adder 300 that performs carry signal hold addition using four CSAs is shown. It is a figure showing the input data of the adder 300, halfway data, and output data.
  • the configuration of an adder 400 that performs carry signal hold addition using eight CSAs is shown.
  • the structure of the arithmetic system 1000 which concerns on the 4th modification of this embodiment is shown.
  • FIG. 1 shows a configuration of the arithmetic device 405 according to the present embodiment.
  • the arithmetic unit 405 performs multiplication with variable precision.
  • the arithmetic device 405 is a semi-precision arithmetic mode that multiplies a half-precision multiplier and multiplicand that is, for example, 13 bits, for example, a single-precision arithmetic mode that multiplies a single-precision multiplier and multiplicand that is 26 bits.
  • three arithmetic accuracy modes for example, a double precision arithmetic mode for multiplying a double precision multiplier and multiplicand of 52 bits.
  • the bit length (for example, 13 bits) used to represent the half-precision number is represented as “1 unit bit length”
  • the single-precision number is 2 unit bit length
  • the double-precision number is 4 Unit bit length.
  • Multiplication of the multiplier and multiplicand is a calculation that obtains the final product by adding each multiplication result obtained by multiplying digits for all combinations of each digit of the multiplier and each digit of the multiplicand to an appropriate digit position.
  • half-precision numbers are multiplied by one unit bit length
  • single-precision numbers are multiplied by one unit bit length, four times (2 ⁇ 2).
  • multiplication between double precision numbers is performed 16 times (4 ⁇ 4) times between numbers of one unit bit length.
  • the multiplication of the number of n unit bit lengths is performed n ⁇ n times the number of 1 unit bit lengths.
  • the unit bit length may be an arbitrary length depending on the design of the arithmetic device 405.
  • the arithmetic device 405 effectively uses a plurality of multipliers included in the arithmetic device 405 in each arithmetic accuracy mode of the half-precision arithmetic mode, the single-precision arithmetic mode, and the double-precision arithmetic mode.
  • the computing device 405 includes a multiplication unit 410, an addition unit 430, a mode selection unit 460, a first connection switch 470, and a second connection switch 480.
  • the multiplier unit 410 includes a plurality of multipliers 420, that is, for example, four multipliers 420-1 to 420-4 in this embodiment.
  • the plurality of multipliers 420 each receive two numbers each having a unit bit length, multiply them, and output a multiplication result.
  • the addition unit 430 includes a plurality of adders 440 and a plurality of intermediate registers 450.
  • the adder 430 includes, for example, four adders 440-1 to 440-4 and four intermediate registers 450-1 to 450-4.
  • the plurality of adders 440 add at least two pieces of input data each including a multiplication result by at least one multiplier 420 among the plurality of multipliers 420-1 to 420-4.
  • the same number of adders 440 as the multipliers 420 may be provided, and input data having the same bit length (for example, 2 unit bit length) as the output data of the multipliers 420 may be input.
  • a plurality of intermediate registers 450-i 1, 2, 3, 4) are provided corresponding to each of the plurality of adders 440-1 to 440-4.
  • Each intermediate register 450 holds the addition result output from the corresponding adder 440.
  • the mode selection unit 460 inputs a calculation accuracy mode in which the calculation device 405 should operate, and controls each unit of the calculation device 405 according to the calculation accuracy mode.
  • the mode selection unit 460 receives the designation of the calculation accuracy mode from a processor or the like connected to the calculation device 405, and dynamically controls each unit of the calculation device 405 so as to operate in the specified calculation accuracy mode.
  • the calculation accuracy mode set in the setting register or the like may be received, and each unit of the calculation device 405 may be controlled to operate fixedly in the calculation accuracy mode.
  • the mode selection unit 460 selects the number of divisions for dividing the plurality of multipliers 420 and the plurality of adders 440 into groups including one or more multipliers 420 and one or more adders 440 according to the calculation accuracy mode. To do. These one or more groups are used to multiply different multipliers and multiplicands. By such group division, the plurality of multipliers 420 are divided into one or two or more multipliers 420 according to the calculation accuracy mode and assigned to each of one or more groups. Then, in each group, each multiplier 420 has at least one of a multiplicity range (for example, a digit range of 1 unit bit length) of a multiplier for the group and at least a multiplicand for the group according to the calculation accuracy mode. Multiply by an individual multiplicand that is a partial digit range (for example, a digit range of 1 unit bit length).
  • a multiplicity range for example, a digit range of 1 unit bit length
  • the mode selection unit 460 selects the number of cycles used for multiplying the multiplier and multiplicand by using one or more multipliers 420 and one or more adders 440 in the group according to the calculation accuracy mode.
  • the plurality of adders 440 are divided into one or more adders 440 according to the calculation accuracy mode and assigned to each of the one or more groups. Then, one or more adders 440 assigned to each group add each multiplication result by each multiplier 420 assigned to the group. One or more adders 440 assigned to each group add each multiplication result for the number of cycles selected according to the calculation accuracy mode.
  • One or more intermediate registers 450 corresponding to one or more adders 440 in each group respectively hold digit ranges corresponding to each adder 440 in an intermediate result that is an addition result for each cycle.
  • one or more adders 440 assigned to each group finally obtain a product of a multiplier and a multiplicand and output it.
  • mode selection unit 460 divides four multipliers 420 and four adders 440 into four groups including one multiplier 420 and one adder 440.
  • the multiplication of four sets of multipliers and multiplicands, which may be different from each other, is performed in parallel in four groups.
  • the mode selection unit 460 divides the four multipliers 420 and the adders 440 into two groups including the two multipliers 420 and the two adders 440, and may be different from each other. Multiplication of a set of multipliers and multiplicands is performed in parallel in two groups. In this case, each group can execute single precision multiplication in which 1 unit bit length multiplication is performed 4 times in 2 cycles by executing 2 multiplications of 1 unit bit length in 1 cycle. Become.
  • the mode selection unit 460 sets the four multipliers 420 and the adder 440 as one group and performs multiplication of one set of multiplier and multiplicand in one group.
  • the group can execute double precision multiplication in which 1 unit bit length multiplication is performed 16 times in 4 cycles by executing 4 multiplications of 1 unit bit length in 1 cycle. .
  • the first connection switching unit 470 receives the control of the mode selection unit 460 and outputs each multiplication result output from each multiplier 420 to which digit position in each input data of each adder 440 according to the calculation accuracy mode. Switch whether to transmit.
  • the first connection switching unit 470 displays each multiplication result by each multiplier 420 for each of one or a plurality of groups, and the multiplication result by one or more adders 440 in the group, depending on the calculation accuracy mode. Input to the digit position to be added.
  • the second connection switching unit 480 is held in two or more intermediate registers 450 in each group for each of one or a plurality of groups according to the calculation accuracy mode.
  • the intermediate results are shifted and input to two or more adders 440 in the group.
  • the arithmetic unit 405 calculates a multiplication result for each multiplier 420 from the higher order side (or the lower order side) to the lower order side (or the higher order side) for each group for each group, and the multiplier 420 in each cycle.
  • FIG. 2 shows the calculation in the half-precision calculation mode of the calculation device 405 according to the present embodiment.
  • the product Ci is output.
  • the plurality of multipliers 420 are assigned to a plurality of groups each including one multiplier 420.
  • Each multiplier 420-i receives as input data INi0 and INi1 a 1-unit bit length multiplier Ai and a multiplicand Bi assigned to the group, and multiplies them to output a 2-unit bit length product Ci.
  • the first connection switch 470 inputs the product Ci, which is the multiplication result of each multiplier 420-i, to the adder 440-i corresponding to each multiplier 420-i.
  • Each adder 440-i stores the product Ci in each intermediate register 450-i without changing it, for example, by inputting the value 0 as other input data and adding it to the product Ci.
  • the second connection switch 480 outputs the product Ci stored in each intermediate register 450-i as the final multiplication result OUTi.
  • FIG. 3 shows the multiplication of the single precision, that is, the multiplier A1 and the multiplicand B1 of 2 unit bit length.
  • the multiplier A1 can be divided into a higher-order individual multiplier A10 and a lower-order individual multiplier A11 each having a digit range of 1 unit bit length.
  • the multiplicand B1 can be divided into a higher individual multiplier B10 and a lower individual multiplier B11.
  • the individual multiplier and individual multiplicand are numbers obtained by dividing the multiplier and multiplicand for each digit range of bit length that can be input to each multiplier 420.
  • the multiplication results of the multiplier A1 and the multiplicand B1 are obtained by multiplying the four multiplication results of the multiplication of A10 and B10, the multiplication of A11 and B10, the multiplication of A10 and B11, and the multiplication of A11 and B11, respectively, as shown in FIG. It can be calculated by adding in position.
  • FIG. 4 shows the calculation in the single precision calculation mode of the calculation device 405 according to the present embodiment.
  • the product Ci is output.
  • the plurality of multipliers 420 and the adders 440 are assigned to a plurality of groups each including two multipliers 420 and two adders 440.
  • the multipliers 420-1 and 420-2 and adders 440-1 and 440-2 are assigned to the first group
  • the multipliers 420-3 and 440-4 and adders 440-3 to 4 are assigned to the second group. It is done.
  • the arithmetic unit 405 receives a 2-unit bit length multiplier Ai and a multiplicand Bi for the i-th group, multiplies them, and outputs a 4-unit bit-length product Ci for the i-th group. Since the operations of the first group and the second group are the same except that the assigned multiplier 420, adder 440, and intermediate register 450 are different, the operation of the first group will be described below.
  • the arithmetic unit 405 implements the multiplication method shown in FIG. 3 in two cycles in each group. In the first cycle, the arithmetic unit 405 performs multiplication of each of the individual multipliers A10 and A11 and the individual multiplicand B10 and addition associated therewith.
  • the multiplier 420-1 inputs A10 to the input IN10 and B10 to the input IN11, and outputs a partial product A10 ⁇ B10 that is a product of these.
  • the multiplier 420-2 inputs A11 to the input IN20 and B10 to the input IN21, and outputs a partial product A11 ⁇ B10 which is a product of these.
  • the adder 440-1 and the adder 440-2 are combined to function as an adder (indicated as “adder Q”) having a 4-unit bit length.
  • the carry from the adder 440-2 to the adder 440-1 in the 4-unit bit length addition may be generated by, for example, a carry look ahead circuit and supplied to the adder 440-1.
  • the first connection switching unit 470 is configured so that the partial product A10 ⁇ B10 and the partial product A11 ⁇ B10 correspond to the lowest digit range of the adder Q so that the partial product A11 ⁇ B10 on the lowest side corresponds to the lowest digit range of the adder Q. * B10 and partial product A11 * B10 are shifted and input to adder Q.
  • the first connection switching unit 470 shifts the partial product A11 ⁇ B10 to the digit range indicated by 2 and 3 in the figure and causes the adder Q to input the partial product A11 ⁇ B10. Since the partial product A10 ⁇ B10 is positioned one unit bit length higher than the partial product A11 ⁇ B10, the first connection switch 470 displays the partial product A10 ⁇ B10 as a digit range indicated by 1 and 2 in the figure. To add to the adder Q. As a result, the adder Q converts the digit range 3 of the lowest one unit bit length into the digit range 2 of the lower one unit bit length of the partial product A11 ⁇ B10, and the digit range 2 of the lower unit by one unit bit length.
  • the digit range of the lower 1 unit bit length of the partial product A10 ⁇ B10, the digit range of the upper 1 unit bit length of the partial product A11 ⁇ B10, and the partial product A10 ⁇ B10 in the upper digit range 1 from the lowest Are input and added, and an intermediate result is output in which the digit range 1 to 3 is a partial product A1 ⁇ B10, which is the product of the multiplier A1 and the individual multiplicand B10.
  • the adder Q stores this partial product A1 ⁇ B10 in the intermediate registers 450-1 and 450-2.
  • the second connection switch 480 shifts the partial product A1 ⁇ B10, which is the intermediate result stored in the intermediate registers 450-1 and 450-2, to the upper side by one unit bit length and supplies it to the adder Q.
  • the multipliers 420-1 to 420-2 and the first connection switch 470 calculate the partial product A10 ⁇ B11 and the partial product A11 ⁇ B11 in the same manner as in the first cycle, and these partial products are converted into the partial products on the least significant side. Input to the adder Q so that A11 ⁇ B11 corresponds to the lowest digit range of the adder Q.
  • the intermediate registers 450-1 and 450-2 hold the product C1
  • the second connection switch 480 outputs the product C1 held in the intermediate registers 450-1 and 450-2 as OUT1 and 2 after the third cycle.
  • FIG. 5 shows double precision, that is, multiplication of a multiplier A1 and a multiplicand B1 with a 4-unit bit length.
  • the multiplier A1 is divided into individual multipliers A10 to A13 each having a unit bit length in order from the higher order side.
  • the multiplicand B1 is divided into individual multiplicands B10 to B13 each having a unit bit length in order from the higher order side.
  • the multiplication result of the multiplier A1 and the multiplicand B1 can be calculated by adding the multiplication results between all the combinations (16 sets) of the individual multipliers A10 to A13 and the individual multiplicands B10 to B13, respectively, at appropriate digit positions. it can.
  • the multiplication result of the individual multiplier that is higher by m unit bit lengths from the least significant side and the individual multiplicand that is higher by n unit bit lengths from the least significant side is m + n unit bit lengths from the least significant side. It is added to the intermediate result at the upper digit position.
  • the arithmetic unit 405 multiplies multipliers A1 and B1 having a double precision, that is, a 4-unit bit length in four cycles, and outputs a product C1.
  • the plurality of multipliers 420 and adders 440 are assigned to one group.
  • the multipliers 420-1 to 420-4 input A10 to A13 to IN10 to IN40 and B10 to IN11 to IN41, respectively, and a partial product A10 that is a product of each of A10 to A13 and B10.
  • * B10, A11 * B10, A12 * B10, and A13 * B10 are output.
  • the adders 440-1 to 440-4 function in combination as an adder of 8 unit bit length (shown as “adder O”).
  • the carry from the adder 440-i to the adder 440- (i-1) in the addition of 2 unit bit length is generated by, for example, a carry look ahead circuit and supplied to the adder 440- (i-1). May be.
  • the first connection switch 470 Similar to the single-precision arithmetic mode, the first connection switch 470 has the lowest partial product A13 ⁇ B10 of the partial products A10 ⁇ B10 to A13 ⁇ B10 corresponding to the lowest digit range of the adder O. In this manner, the partial products A10 ⁇ B10 to A13 ⁇ B10 are shifted and input to the adder O.
  • the adder O sets the partial product A13 ⁇ B10 in the least significant digit range 6 to 7, and the partial product A12 ⁇ B10 in the most significant digit range 5 to 6 by one unit bit length from the least significant.
  • the partial product A11 ⁇ B10 is input to the upper digit range 4 to 5 for the lower 2 unit bit length, and the partial product A10 ⁇ B10 is input to the upper digit range 3 to 4 for the lower 1 unit bit length from the lowest.
  • Addition is performed to output an intermediate result in which the digit range 3 to 7 is a partial product A1 ⁇ B10 which is the product of the multiplier A1 and the individual multiplicand B10.
  • the adder O stores the partial product A1 ⁇ B10 in the intermediate registers 450-1 to 450-1.
  • the second connection switching unit 480 shifts the intermediate result stored in the intermediate registers 450-1 to 450-4 upward by one unit bit length and supplies it to the adder O.
  • the multipliers 420-1 to 420-4 and the first connection switching unit 470 calculate partial products A10 ⁇ B11 to A13 ⁇ B11 in the same manner as in the first cycle, and these partial products are converted into the lowest partial product A13 ⁇ B11 is input to the adder O so as to correspond to the lowest digit range of the adder O.
  • the adder O is in a state in which the digit range is correctly associated with the partial product A1 ⁇ B10 shifted by the second connection switch 480 and the partial products A10 ⁇ B11 to A13 ⁇ B11 calculated in the second cycle. And add them together to output intermediate results.
  • the adder O stores the intermediate result in the intermediate registers 450-1 to 450-4.
  • the arithmetic unit 405 similarly to the second cycle, shifts the intermediate result stored in the intermediate registers 450-1 to 450-4 upward by one unit bit length and the partial product A10.
  • ⁇ B12 to A13 ⁇ B12 (for the third cycle) or partial products A10 ⁇ B13 to A13 ⁇ B13 (for the fourth cycle) are added and stored in the intermediate registers 450-1 to 450-4.
  • the intermediate registers 450-1 to 450-4 store the product C1.
  • the second connection switch 480 outputs the product C1 held in the intermediate registers 450-1 to 450-4 as OUT1 to OUT4 after the fifth cycle.
  • the arithmetic device 405 performs a plurality of multiplications in at least one arithmetic accuracy mode that multiplies a multiplier and multiplicand of 2 unit bit length or more, such as the single precision arithmetic mode and the double precision arithmetic mode.
  • the unit 420, the plurality of adders 440, and the plurality of intermediate registers 450 are divided into one or a plurality of groups, and each group calculates a product of a multiplier and a multiplicand for each group using a plurality of cycles in parallel.
  • one or two or more multipliers 420 select, for each cycle, individual multipliers in the range of digits that each multiplier 420 takes charge of among the multipliers, and one unit bit length in order from the upper digit for each cycle in the multiplicand.
  • Each individual multiplicand is input, and each individual multiplier and a partial product of the individual multiplicand are output as a multiplication result for each cycle.
  • the first connection switch 470 corresponds to the lowest digit range in the adder 440 in which the partial product of the lowest digit range in the multiplier and the partial product of the individual multiplicand are 1 or 2 for each cycle.
  • Each partial product output from one or more multipliers 420 is shifted and input to one or more adders 440 to be added to the intermediate result.
  • the second connection switching unit 480 shifts the intermediate result to the upper side by one unit bit length and inputs it to one or more adders 440-1 to 440-4 for each cycle.
  • the plurality of multipliers 420 are assigned to a plurality of groups including one multiplier 420 at a time. Then, the arithmetic unit 405 calculates the product of the multiplier and the multiplicand for each of the plurality of groups in one cycle. Accordingly, the arithmetic device 405 can effectively use the plurality of multipliers 420 by performing different multiplications for each of the plurality of multipliers 420.
  • the plurality of multipliers 420 and the plurality of adders 440 are assigned to two or more groups. Then, the arithmetic device 405 calculates the product of the multiplier and the multiplicand for each of the two or more groups using a plurality of cycles. Thereby, the arithmetic unit 405 divides the plurality of multipliers 420 into a plurality of groups, increases the number of cycles, and obtains the necessary number of multiplication results of the individual multiplier and the individual multiplicand, so that even in the higher-precision arithmetic accuracy mode. A plurality of multipliers 420 can be used effectively.
  • the plurality of multipliers 420 and the plurality of adders 440 are assigned to one group. Then, the arithmetic device 405 calculates the product of the multiplier and the multiplicand in one group using a plurality of cycles. As a result, the arithmetic unit 405 collects a plurality of multipliers 420 into one group, increases the number of cycles, and obtains the necessary number of multiplication results of the individual multiplier and the individual multiplicand, so that a plurality of arithmetic units 405 can be obtained even in a higher precision arithmetic accuracy mode.
  • the multiplier 420 can be effectively used.
  • the mode selection unit 460 is configured to multiply the plurality of multipliers 420 and the plurality of adders 440 by n multiplications in an operation accuracy mode in which a multiplier and a multiplicand of n unit bit length (n is a natural number) are multiplied.
  • n a multiplier and a multiplicand of n unit bit length (n is a natural number) are multiplied.
  • the mode selection unit 460 converts the total of four multipliers 420 (and four adders 440) into one multiplier 420 (and one Divide into four groups each containing an adder 440).
  • Each of the n multipliers 420 in each group includes n individual multipliers each having a digit range of 1 unit bit length included in the multiplier for each group, and a digit range of 1 unit bit length included in the multiplicand.
  • Each of the n individual multiplicands is multiplied by n sets in one cycle for n cycles.
  • the n adders 440 in each group are combined to each multiplication result from the n multipliers 420 in the same group every cycle for n cycles, and each multiplication result in the intermediate product of the multiplier and multiplicand products. It adds to the digit position according to.
  • the adder 440 can be effectively used in addition to the plurality of multipliers 420. Note that if the effective use of the adder 440 is not emphasized, the mode selection unit 460 may perform another group division and an operation with a different number of cycles.
  • the first connection switch 470 inputs the multiplication result from each multiplier 420 to the lower digit range of one or more adders 440, and the second connection switch 480 The intermediate result is shifted to the upper side.
  • the first connection switch 470 inputs the multiplication result from each multiplier 420 to the upper digit range of one or more adders 440, and the second connection switch 480 receives the intermediate result. It may be configured to shift to the lower side.
  • the arithmetic unit 405 may adopt a configuration that does not include the second connection switch 480. In this case, the first connection switch 470 adds each multiplication result to the corresponding digit range in the final product. You may make it switch a connection for every cycle so that it can do.
  • the arithmetic device 405 includes three arithmetic accuracy modes: a half-precision arithmetic mode, a single-precision arithmetic mode, and a double-precision arithmetic mode.
  • the arithmetic unit 405 may include an arbitrary arithmetic accuracy mode.
  • the arithmetic device 405 includes each arithmetic mode according to a number having a bit length that is a power of 2 of one unit bit length.
  • the arithmetic unit 405 may include one or a plurality of arithmetic modes corresponding to a number having a bit length other than a power of 2 of the unit bit length (for example, a unit bit length of 3). In such a calculation mode, the calculation device 405 may place some of the multipliers 420 and the adders 440 in an idle state. In addition, the arithmetic unit 405 includes the number of multipliers 420, the adder 440, and the intermediate register 450 that are a power of two, but the number of multipliers 420 (for example, six) that is not a power of two. , An adder 440 and an intermediate register 450 may be employed.
  • FIG. 6 shows a configuration of an adder 540 and an intermediate register 550 according to a first modification of the present embodiment.
  • the first modified example is mainly obtained by changing each adder 440 to the adder 540 and each intermediate register 450 to the intermediate register 550 in the arithmetic device 405 shown in FIGS. The description is omitted except for the differences from.
  • Adder 540 includes a carry save adder (CSA: Carry Save Adder, also referred to as “carry hold adder”).
  • CSA Carry Save Adder
  • Adder 540 includes a first addition element 542 and a second addition element 544.
  • the first addition element 542 includes one or more multiplication results from the one or more multipliers 420 input via the first connection switch 470 and an intermediate result input via the second connection switch 480.
  • the CSA outputs the addition result including the sum data of each digit and the carry data from each digit by adding each input data such as a digit range corresponding to the adder 540 in FIG.
  • the second addition element 544 is provided corresponding to each adder 540. As the plurality of adders 540 are divided into one or two or more adders 540 according to the calculation accuracy mode, the plurality of second adder elements 544 are divided into one or more second adder elements 544. And is assigned to each of one or a plurality of groups. The second addition element 544 adds the sum data and carry data output from one or more first addition elements 542 in each group, and outputs the result as a product of a multiplier and a multiplicand.
  • the second addition element 544 is an adder such as a carry look-ahead adder or a carry propagation adder that adds a carry from each digit to an upper digit and outputs a sum reflecting the carry.
  • the second addition element 544 receives and adds the carry from the lower second addition element 544 in the group, if necessary, according to the group division by the mode selection unit 460, and if necessary, the upper side in the group.
  • the carry of the addition result is propagated to the second addition element 544.
  • Intermediate register 550 holds the sum data and carry data of the digit range output from corresponding first addition element 542. Intermediate register 550 outputs the held sum data and carry data to second addition element 544. In this modification, the intermediate register 550 transfers the held sum data and carry data to the one or more first addition elements 542 via the second connection switch 480 without passing through the second addition element 544. Supply. Thereby, the arithmetic unit 405 according to the present modification eliminates the need to calculate the sum reflecting the carry in each cycle until the product of the multiplier and the multiplicand is finally calculated, and thus calculates an intermediate result. Circuit delay in the circuit can be reduced.
  • the arithmetic unit 405 as each of the plurality of multipliers 420, multiplies the individual multiplier and the individual multiplicand and outputs a multiplication result including sum data of each digit and carry data from each digit.
  • a multiplier using tree may be used.
  • the arithmetic unit 405 can reduce the circuit delay and the processing time required for one cycle.
  • FIG. 7 shows a configuration of the arithmetic device 1 according to the second modification.
  • the arithmetic unit 1 executes multiplication with variable precision.
  • the arithmetic unit 1 includes Wallace tree multipliers 2a to 2d (corresponding to the multipliers 420-1 to 420-4), a first connection switcher 20 (corresponding to the first connection switcher 470), and adders 4a to 4d (corresponding to the multipliers 420-1 to 470).
  • Adders 440-1 to 440-4), registers 5a to 5d (corresponding to intermediate registers 450-1 to 450-4), second connection switch 30 (corresponding to second connection switch 480), and output terminal OP1 to OP4 and switches 9b, 9c, 9d are provided.
  • the arithmetic unit 1 receives 8 inputs (IN1 to IN8) and outputs 4 outputs (OUT1 to OUT4).
  • Inputs IN1 to IN8 are 1-unit bit length (13 bits) data
  • outputs OUT1 to OUT4 are 2 unit bit lengths (26 bits).
  • the Wallace tree multiplier 2a receives the input data IN1 and the input data IN2, and executes carry-hold addition a plurality of times based on the Wallace tree, thereby obtaining 1 of the multiplication result of the input data IN1 and the input data IN2.
  • a 26-bit sum signal D and a carry signal E before the stage are output.
  • the Wallace tree multipliers 2b to 2d are the same as the Wallace tree multiplier 2a except that input data and output signals are different as shown in the figure.
  • Each of the adders 4a to 4d performs addition of a plurality of 26-bit data.
  • the registers 5a to 5d hold the addition results of the corresponding adders 4a to 4d, respectively.
  • the first connection switching unit 20 receives the sum signals D, F, H, J and carry signals E, G, I, K output from the Wallace tree multipliers 2a-2d according to the calculation accuracy mode, respectively.
  • the first connection switching unit 20 includes a switch and a shifter, and executes the switching described above by controlling them.
  • the second connection switching unit 30 adds the output destinations of the upper 13-bit data and the lower 13-bit data constituting the plurality of addition results in the registers 5a to 5d to the adders 4a to 4d according to the calculation accuracy mode. Is switched to one of a plurality of bit positions (lower half bit position or upper half bit position) of the plurality of inputs, or the output destination of the addition result of the adders 4a to 4d in the registers 5a to 5d is output. Switch to terminals OP1-4.
  • the second connection switching unit 30 includes a switch and a shifter, and controls the above-described switching by controlling them.
  • the switch 9b switches whether to send a carry bit from the adder 4b to the adder 4a.
  • the switch 9c switches whether to carry a carry bit from the adder 4c to the adder 4b.
  • the switch 9d switches whether to carry a carry bit from the adder 4d to the adder 4c.
  • the computing device 1 operates in a plurality of calculation accuracy modes including a half-precision calculation mode, a single-precision calculation mode, and a double-precision calculation mode.
  • a half-precision calculation mode a single-precision calculation mode
  • a double-precision calculation mode a calculation accuracy mode
  • FIG. 9 illustrates the operation in the half-precision arithmetic mode of the arithmetic device 1 according to the second modification.
  • the arithmetic unit 1 multiplies the i-th multiplier Ai and the i-th multiplicand Bi and outputs the i-th product Ci.
  • the Wallace tree multiplier 2a outputs the sum signal D and the carry signal E when it receives all 13 bits of the first multiplier A1 and all 13 bits of the first multiplicand B1.
  • the Wallace tree multipliers 2b to 2d operate in the same manner as the Wallace tree multiplier 2a except that the input and output are different as shown in the figure.
  • the first connection switching unit 20 sends the outputs of the Wallace tree multipliers 2a to 2d (26-bit sum signal and 26-bit carry signal) to the corresponding adder among the adders 4a to 4d. .
  • FIG. 10 shows the input and output of the adder 4a in the half precision operation mode of the second modification.
  • the adder 4a uses all 26 bits ⁇ d25-d0 ⁇ of the sum signal D as all 26 bits of the first input, and all 26 bits ⁇ e25-e0 ⁇ of the carry signal E as all 26 bits of the second input. Receive each. The lower 26 bits ⁇ l25-l0 ⁇ of the addition result L of the adder 4a are sent to the register 5a.
  • the adders 4b to 4d operate in the same manner as the adder 4a except that their inputs and outputs are different as shown in the figure.
  • the second connection switch 30 switches the output destination of the data in the registers 5a to 5d to the output terminals OP1 to OP4. As a result, the first to fourth products C1 to C4 are output from the output terminals OP1 to OP4.
  • Single precision calculation mode In single-precision arithmetic mode, the multiplier and multiplicand are 26 bits and the product is 52 bits. In the single precision operation mode, multiplication is executed in two cycles. In the single precision calculation mode, the switches 9b and 9d are turned on, and the switch 9c is turned off.
  • the upper 13 bits of the i-th multiplier Ai are Ai0, and the lower 13 bits are Ai1.
  • the upper 13 bits of the i-th multiplicand Bi are Bi0 and the lower 13 bits are Bi1.
  • the upper 26 bits of the i-th product Ci are Ci0, and the lower 26 bits are Ci1.
  • the Wallace tree multiplier 2a When the Wallace tree multiplier 2a receives the upper 13 bits A10 of the first multiplier A1 and the upper 13 bits B10 of the first multiplicand B1, the sum signal D (0) and the carry signal E (0) Is output.
  • the Wallace tree multiplier 2b receives the lower 13 bits A11 of the first multiplier A1 and the upper 13 bits B10 of the first multiplicand B1, the sum signal F (0) and the carry signal G (0) Is output.
  • the output of the Wallace tree multipliers 2a to 2d is sent to the adders 4a to 4d by the first connection switching unit 20.
  • the second connection switch 30 sends the data in the registers 5a to 5d to the adders 4a to 4d.
  • the upper 13 bits of the sum signal D (0) are sent to the shifter 6a.
  • the shifter 6a shifts the upper 13 bits of the sum signal D (0) by 13 bits to the lower and supplies it to the lower 13-bit position of the first input of the adder 4a.
  • the lower 13 bits of the sum signal D (0) are sent to the upper 13 bit position of the third input of the adder 4b.
  • the upper 13 bits of the carry signal E (0) are sent to the shifter 6b.
  • the shifter 6b shifts the upper 13 bits of the carry signal E (0) downward by 13 bits and supplies the result to the lower 13-bit position of the second input of the adder 4a.
  • the lower 13 bits of the carry signal E (0) are sent to the upper 13 bits of the second input of the adder 4b.
  • All 26 bits of the sum signal F (0) are supplied to all 26 bit positions of the third input of the adder 4b.
  • All 26 bits of carry signal G (0) are supplied to all 26 bit positions of the fourth input of adder 4
  • FIG. 13 is a diagram illustrating the inputs and outputs of the adders 4a and 4b in the first cycle in the single precision operation mode of the second modification.
  • the adder 4a receives the upper 13 bits ⁇ d25 (0) -d13 (0) ⁇ of the sum signal D (0) at the lower 13 bit position of the first input.
  • the adder 4a receives the upper 13 bits ⁇ e25 (0) -e13 (0) ⁇ of the carry signal E (0) at the lower 13-bit position of the second input.
  • the adder 4a receives 26 bits (all bits are 0) from the shifter 7a at all 26 bit positions of the third input.
  • the adder 4a receives the upper 2 bits of the addition result (28 bits) of the adder 4b at the lower 2 bit position of the fourth input.
  • the lower 26 bits ⁇ l25 (0) -l0 (0) ⁇ of the addition result L (0) of the adder 4a are sent to the register 5a.
  • the adder 4b receives the lower 13 bits ⁇ d12 (0) -d0 (0) ⁇ of the sum signal D (0) at the upper 13-bit position of the first input.
  • the adder 4b receives the lower 13 bits ⁇ e12 (0) -e0 (0) ⁇ of the carry signal E (0) at the upper 13-bit position of the second input.
  • the adder 4b receives all 26 bits ⁇ f25 (0) -f0 (0) ⁇ of the sum signal F (0) at all 26-bit positions of the third input.
  • Adder 4b receives all 26 bits ⁇ g25 (0) -g0 (0) ⁇ of carry signal G (0) at all 26-bit positions of the fourth input.
  • the adder 4b receives 26 bits (all bits are 0) from the shifter 7b at all 26 bit positions of the fifth input.
  • the lower 26 bits ⁇ m25 (0) -m0 (0) ⁇ of the addition result M (0) of the adder 4b are sent to the register 5b as the first output.
  • the upper 2 bits of the addition result M (0) of the adder 4b are sent as the second output to the lower 2 bit position of the fourth input of the adder 4a.
  • the Wallace tree multiplier 2a receives the upper 13 bits A10 of the first multiplier A1 and the lower 13 bits B11 of the first multiplicand B1, the sum signal D (1) and the carry signal E (1) Is output.
  • the Wallace tree multiplier 2b receives the sum signal F (1) and the carry signal G (1). Is output.
  • the output of the Wallace tree multipliers 2a to 2d is sent to the adders 4a to 4d by the first connection switching unit 20.
  • the second connection switch 30 sends the data in the registers 5a to 5d to the adders 4a to 4d.
  • the first connection switch 20 sends the signals D (1) to G (1) to the adders 4a to 4b in the same manner as the signals D (0) to G (0) in the first cycle.
  • FIG. 14 shows the inputs and outputs of the adders 4a and 4b in the second cycle in the single precision operation mode of the second modification.
  • the first to second and fourth inputs and outputs of the adder 4a and the first to fourth inputs and outputs of the adder 4b are the signals given to the respective inputs in the first cycle as shown in FIG. Since it is the signal of the second cycle corresponding to the output signal, the description is omitted except for the difference.
  • the shifter 7a shifts the 26 bits ⁇ l25 (0) -l0 (0) ⁇ held in the register 5a upward by 13 bits.
  • the shifter 7b shifts the 26 bits ⁇ m25 (0) ⁇ m0 (0) ⁇ held in the register 5b by 13 bits to the upper side, and the 13 bits ⁇ m25 (0) ⁇ m13 (0) overflowing from the shifter 7b ) ⁇ To the lower 13 bits of shifter 7a.
  • the adder 4a has 26 bits from the shifter 7a ⁇ higher 13 bits: l12 (0) -l0 (0), lower 13 bits: m25 (0) -m13 (0) ⁇ at all 26 bit positions of the third input. Receive.
  • the adder 4b receives 26 bits ⁇ the upper 13 bits: m12 (0) -m0 (0), the lower 13 bits: all bits are 0 ⁇ from the shifter 7b at all 26 bit positions of the fifth input.
  • the second connection switch 30 switches the output destination of the data in the registers 5a to 5d to the output terminals OP1 to OP4 after the end of the second cycle.
  • the upper 26 bits C10 of the first product, the lower 26 bits C11 of the first product, the upper 26 bits C20 of the second product, and the lower 26 bits C21 of the second product are output from the output terminals OP1 to OP4. Is output.
  • the multiplier and multiplicand are 52 bits, and the product is 104 bits.
  • multiplication is executed in four cycles.
  • the switches 9b, 9c, 9d are turned on.
  • FIG. 15 shows the multiplier A1, the multiplicand B1, and the product C1 in the double precision calculation mode.
  • FIG. 16 illustrates the operation in the double-precision arithmetic mode of the arithmetic device 1 according to the second modification.
  • the arithmetic unit 1 multiplies the multiplier A1 and the multiplicand B1 and outputs a product C1.
  • the multiplier A1 is divided into first to fourth bit groups (first to fourth digit range) A10 to A13 in order from the upper bit position.
  • the multiplicand B1 is divided into first to fourth bit groups (first to fourth digit range) B10 to B13 in order from the upper bit position.
  • the product C1 is divided into first to fourth bit groups C10 to C13 in order from the upper bit position.
  • the Wallace tree multiplier 2a receives the first bit group A10 of the multiplier A1 and the first bit group B10 of the multiplicand B1, and outputs a sum signal D (0) and a carry signal E (0).
  • the Wallace tree multiplier 2b receives the second bit group A11 of the multiplier A1 and the first bit group B10 of the multiplicand B1, and outputs a sum signal F (0) and a carry signal G (0).
  • the Wallace tree multiplier 2c receives the third bit group A12 of the multiplier A1 and the first bit group B10 of the multiplicand B1, and outputs a sum signal H (0) and a carry signal I (0).
  • the Wallace tree multiplier 2d receives the fourth bit group A13 of the multiplier A1 and the first bit group B10 of the multiplicand B1, and outputs a sum signal J (0) and a carry signal K (0).
  • the output of the Wallace tree multipliers 2a to 2d is sent to the adders 4a to 4d by the first connection switching unit 20.
  • the second connection switch 30 sends the data in the registers 5a to 5d to the adders 4a to 4d.
  • the upper 13 bits of the sum signal D (0) are sent to the lower 13 bit position of the first input of the adder 4b.
  • the lower 13 bits of the sum signal D (0) are sent to the upper 13 bit position of the first input of the adder 4c.
  • the upper 13 bits of the carry signal E (0) are sent to the lower 13 bit position of the second input of the adder 4b.
  • the lower 13 bits of the carry signal E (0) are sent to the upper 13 bits of the second input of the adder 4c.
  • All 26 bits of the sum signal F (0) are supplied to all 26 bit positions of the third input of the adder 4c.
  • All 26 bits of the carry signal G (0) are supplied to all 26 bit positions of the fourth input of the adder 4c.
  • the upper 13 bits of the sum signal H (0) are sent to the lower 13 bit position of the fifth input of the adder 4c.
  • the lower 13 bits of the sum signal H (0) are sent to the upper 13 bit position of the first input of the adder 4d.
  • the upper 13 bits of the carry signal I (0) are sent to the lower 13 bit position of the sixth input of the adder 4c.
  • the lower 13 bits of the carry signal I (0) are sent to the upper 13 bits of the second input of the adder 4d.
  • All 26 bits of the sum signal J (0) are supplied to all 26 bit positions of the third input of the adder 4d.
  • All 26 bits of the carry signal K (0) are supplied to the position and all 26 bits of the fourth input of the adder 4d.
  • FIG. 17 is a diagram illustrating the inputs and outputs of the adders 4a to 4d in the first cycle in the double precision arithmetic mode of the second modification.
  • the adder 4a receives 26 bits (all bits are 0) from the shifter 7a at all 26 bit positions of the first input.
  • the adder 4a receives the upper 2 bits of the addition result M (0) (28 bits) of the adder 4b at the lower 2 bit position of the second input.
  • the lower 26 bits ⁇ l25 (0) -l0 (0) ⁇ of the addition result L (0) of the adder 4a are sent to the register 5a.
  • the adder 4b receives the upper 13 bits ⁇ d25 (0) -d13 (0) ⁇ of the sum signal D (0) at the lower 13-bit position of the first input.
  • Adder 4b receives the upper 13 bits ⁇ e25 (0) -e13 (0) ⁇ of carry signal E (0) at the lower 13-bit position of the second input.
  • the adder 4b receives 26 bits (all bits are 0) from the shifter 7b at all 26 bit positions of the third input.
  • the adder 4b receives the upper 2 bits of the addition result N (0) (28 bits) of the adder 4c at the lower 2 bit position of the fourth input.
  • the lower 26 bits ⁇ m25 (0) -m0 (0) ⁇ of the addition result M (0) of the adder 4b are sent to the register 5b as the first output.
  • the upper 2 bits of the addition result M (0) of the adder 4b are sent as the second output to the lower 2 bit position of the second input of the adder 4a.
  • the adder 4c receives the lower 13 bits ⁇ d12 (0) -d0 (0) ⁇ of the sum signal D (0) at the upper 13-bit position of the first input.
  • the adder 4c receives the lower 13 bits ⁇ e12 (0) -e0 (0) ⁇ of the carry signal E (0) at the upper 13-bit position of the second input.
  • Adder 4c receives all 26 bits ⁇ f25 (0) -f0 (0) ⁇ of sum signal F (0) at all 26-bit positions of the third input.
  • Adder 4c receives all 26 bits ⁇ g25 (0) -g0 (0) ⁇ of carry signal G (0) at all 26-bit positions of the fourth input.
  • the adder 4c receives the upper 13 bits ⁇ h25 (0) -h13 (0) ⁇ of the sum signal H (0) at the lower 13 bit position of the fifth input.
  • the adder 4c receives the upper 13 bits ⁇ i25 (0) -i13 (0) ⁇ of the carry signal I (0) at the lower 13 bit position of the sixth input.
  • the adder 4c receives 26 bits (all bits are 0) from the shifter 7c at all 26 bit positions of the seventh input.
  • the adder 4c receives the upper 2 bits of the addition result O (0) (28 bits) of the adder 4d at the lower 2 bit position of the eighth input.
  • the lower 26 bits ⁇ n25 (0) -n0 (0) ⁇ of the addition result N (0) of the adder 4c are sent to the register 5c as the first output.
  • the upper 2 bits of the addition result N (0) of the adder 4c are sent as the second output to the lower 2 bit position of the fourth input of the adder 4b.
  • the adder 4d receives the lower 13 bits ⁇ h12 (0) -h0 (0) ⁇ of the sum signal H (0) at the upper 13-bit position of the first input.
  • the adder 4d receives the lower 13 bits ⁇ i12 (0) -i0 (0) ⁇ of the carry signal I (0) at the upper 13-bit position of the second input.
  • the adder 4d receives all 26 bits ⁇ j25 (0) -j0 (0) ⁇ of the sum signal J (0) at all 26-bit positions of the third input.
  • the adder 4d receives all 26 bits ⁇ k25 (0) -k0 (0) ⁇ of the carry signal K (0) at all 26 bit positions of the fourth input.
  • the adder 4d receives 26 bits (all bits are 0) from the shifter 7d at all 26 bit positions of the fifth input.
  • the lower 26 bits ⁇ o25 (0) -o0 (0) ⁇ of the addition result O (0) of the adder 4d are sent to the register 5d as the first output.
  • the upper 2 bits of the addition result O (0) of the adder 4d are sent as the second output to the lower 2 bit position of the eighth input of the adder 4c.
  • the Wallace tree multiplier 2a receives the first bit group A10 of the multiplier A1 and the second bit group B11 of the multiplicand B1, and outputs a sum signal D (1) and a carry signal E (1).
  • the Wallace tree multiplier 2b receives the second bit group A11 of the multiplier A1 and the second bit group B11 of the multiplicand B1, and outputs a sum signal F (1) and a carry signal G (1).
  • the Wallace tree multiplier 2c receives the third bit group A12 of the multiplier A1 and the second bit group B11 of the multiplicand B1, and outputs a sum signal H (1) and a carry signal I (1).
  • the Wallace tree multiplier 2d receives the fourth bit group A13 of the multiplier A1 and the second bit group B11 of the multiplicand B1, and outputs a sum signal J (1) and a carry signal K (1).
  • the output of the Wallace tree multipliers 2a to 2d is sent to the adders 4a to 4d by the first connection switching unit 20.
  • the second connection switch 30 sends the data in the registers 5a to 5d to the adders 4a to 4d.
  • the first connection switch 20 sends the signals D (1) to K (1) to the adders 4a to 4d in the same manner as the signals D (0) to K (0) in the first cycle.
  • FIG. 18 shows the inputs and outputs of the adders 4a to 4d in the second cycle in the double precision arithmetic mode of the second modification.
  • the shifter 7a shifts the 26 bits ⁇ l25 (0) -l0 (0) ⁇ held in the register 5a upward by 13 bits.
  • the shifter 7b shifts the 26 bits ⁇ m25 (0) ⁇ m0 (0) ⁇ held in the register 5b by 13 bits to the upper side, and the 13 bits ⁇ m25 (0) ⁇ m13 (0) overflowing from the shifter 7b ) ⁇ To the lower 13 bits of shifter 7a.
  • the adder 4a has 26 bits from the shifter 7a ⁇ upper 13 bits: l12 (0) -l0 (0), lower 13 bits: m25 (0) -m13 (0) ⁇ at all 26 bit positions of the first input. Receive.
  • the shifter 7c shifts the 26 bits ⁇ n25 (0) ⁇ n0 (0) ⁇ held in the register 5c by 13 bits to the upper side, and the 13 bits ⁇ n25 (0) ⁇ n13 (0) overflowing from the shifter 7c ) ⁇ To the lower 13 bits of shifter 7b.
  • the adder 4b adds 26 bits from the shifter 7b to the 26th position of the third input ⁇ higher 13 bits: m12 (0) -m0 (0), lower 13 bits: n25 (0) -n13 (0) ⁇ Receive.
  • the adder 4b receives the upper 2 bits of the addition result N (1) (28 bits) of the adder 4c at the lower 2 bit position of the fourth input.
  • the shifter 7d shifts the 26 bits ⁇ o25 (0) -o0 (0) ⁇ held in the register 5d by 13 bits to the upper side, and the 13 bits ⁇ o25 (0) -o13 (0) overflowing from the shifter 7d ) ⁇ To the lower 13 bits of shifter 7c.
  • the adder 4c adds 26 bits from the shifter 7c to the 26th position of the seventh input ⁇ higher 13 bits: n12 (0) -n0 (0), lower 13 bits: o25 (0) -o13 (0) ⁇ Receive.
  • the adder 4d receives 26 bits ⁇ upper 13 bits: o12 (0) -o0 (0), lower 13 bits: all bits are 0 ⁇ from the shifter 7d at all 26 bit positions of the fifth input.
  • the lower 26 bits ⁇ o25 (1) -o0 (1) ⁇ of the addition result O (1) of the adder 4d are sent to the register 5D as the first output.
  • the upper 2 bits of the addition result O (1) of the adder 4d are sent as the second output to the lower 2 bit position of the eighth input of the adder 4c.
  • the inputs of the Wallace tree multipliers 2a to 2d in the third cycle in the double precision arithmetic mode operate as follows.
  • the Wallace tree multiplier 2a receives the first bit group A10 of the multiplier A1 and the third bit group B12 of the multiplicand B1, and outputs a sum signal D (2) and a carry signal E (2).
  • the Wallace tree multiplier 2b receives the second bit group A11 of the multiplier A1 and the third bit group B12 of the multiplicand B1, and outputs a sum signal F (2) and a carry signal G (2).
  • the Wallace tree multiplier 2c receives the third bit group A12 of the multiplier A1 and the third bit group B12 of the multiplicand B1, and outputs a sum signal H (2) and a carry signal I (2).
  • the Wallace tree multiplier 2d receives the fourth bit group A13 of the multiplier A1 and the third bit group B12 of the multiplicand B1, and outputs a sum signal J (2) and a carry signal K (2).
  • the inputs of the Wallace tree multipliers 2a to 2d in the fourth cycle in the double precision operation mode operate as follows.
  • the Wallace tree multiplier 2a receives the first bit group A10 of the multiplier A1 and the fourth bit group B13 of the multiplicand B1, and outputs a sum signal D (3) and a carry signal E (3).
  • the Wallace tree multiplier 2b receives the second bit group A11 of the multiplier A1 and the fourth bit group B13 of the multiplicand B1, and outputs a sum signal F (3) and a carry signal G (3).
  • the Wallace tree multiplier 2c receives the third bit group A12 of the multiplier A1 and the fourth bit group B13 of the multiplicand B1, and outputs a sum signal H (3) and a carry signal I (3).
  • the Wallace tree multiplier 2d receives the fourth bit group A13 of the multiplier A1 and the fourth bit group B13 of the multiplicand B1, and outputs a sum signal J (3) and a carry signal K (3).
  • the second connection switch 30 switches the output destination of the data in the registers 5a to 5d to the output terminals OP1 to OP4 after the end of the fourth cycle.
  • the first to fourth bit groups C10 to C13 of the product C1 are output from the output terminals OP1 to OP4.
  • FIG. 19 shows the configuration of the Wallace tree multiplier 2a.
  • FIG. 20 shows data generated by the Wallace tree multiplier 2a.
  • the Wallace tree multiplier 2 a includes an input generator 79 and CSA (Carry Save Adder) 51 to CSA 61.
  • the input generator 79 generates 13-bit X0 to X12 from the 13-bit input IN1 and the 13-bit input IN2.
  • X0 is the product of IN1 and the 0th bit (LSB) of IN2.
  • LSB 0th bit
  • all the bits of X0 are 0.
  • 0th bit of IN2 is 1, all bits of X0 are the same as all bits of IN1.
  • the CSA 51 adds the carry signal pending addition of X1, X2, and X3, and outputs the sum signal 1S and the carry signal 1R.
  • the CSA 52 adds the carry signal hold addition to X3, X4, and X5, and outputs the sum signal 2S and the carry signal 2R.
  • the CSA 53 performs a carry signal hold addition on X6, X7, and X8, and outputs a sum signal 3S and a carry signal 3R.
  • the CSA 54 carries out the carry signal hold addition of X9, X10, and X11, and outputs the sum signal 4S and the carry signal 4R.
  • the CSA 55 carries out the carry signal hold addition of the sum signal 1S, the carry signal 1R, and the sum signal 2S, and outputs the sum signal 5S and the carry signal 5R.
  • the CSA 56 carries out the carry signal hold addition of the carry signal 2R, the sum signal 3S, and the carry signal 3R, and outputs the sum signal 6S and the carry signal 6R.
  • the CSA 57 carries out the carry signal hold addition of the sum signal 4S, the carry signal 4R, and X12, and outputs the sum signal 7S and the carry signal 7R.
  • the CSA 58 carries out the carry signal pending addition of the sum signal 5S, the carry signal 5R, and the sum signal 6S, and outputs the sum signal 8S and the carry signal 8R.
  • the CSA 59 carries out the carry signal pending addition of the carry signal 6R, the sum signal 7S, and the carry signal 7R, and outputs the sum signal 9S and the carry signal 9R.
  • the CSA 60 carries out the carry signal hold addition of the sum signal 8S, the carry signal 8R, and the sum signal 9S, and outputs the sum signal 10S and the carry signal 10R.
  • the CSA 61 carries out the carry signal pending addition of the sum signal 10S, the carry signal 10R, and the carry signal 9R, and outputs the sum signal 11S and the carry signal 11R.
  • the sum signal 11S becomes the sum signal D output from the Wallace tree multiplier 2a
  • the carry signal 11R becomes the carry signal E output from the Wallace tree multiplier 2a.
  • the adders 4a to 4d may also include a plurality of CSAs and perform addition based on the Wallace tree.
  • FIG. 21 shows the configuration of the arithmetic unit 101 of the third modification.
  • the arithmetic unit 101 includes a Wallace tree multiplier 2a to 2d, a first connection switch 120, adders 14a to 14d, registers 15a to 15d, registers 25a to 25d, and a second connection switch 130. Adders 16a to 16d, output terminals OP1 to OP4, and switches 161b to 161d and 151b to 151d. As in the second modification, the arithmetic unit 1 receives eight inputs (IN1 to IN8) and outputs four arithmetic results (OUT1 to OUT4).
  • the arithmetic device 101 of the third modified example is such that the adders 4a to 4d in the arithmetic device 1 of the second modified example are carry save adders (CSA), and with respect to the arithmetic device 1 of the second modified example,
  • CSA carry save adders
  • the registers 5a to 5d in the arithmetic unit 1 are divided into the registers 15a to 15d and the registers 25a to 25d so that the sum signal and the carry signal can be held separately.
  • an adder corresponding to the second addition element 544 of the first modification example is used to calculate the final product by adding the sum signals and carry signals held in the registers 15a to 15d and the registers 25a to 25d. 16a-d are provided. Further, as the adders 4a to 4d are changed to CSA, the switches 9b to 9d for switching whether or not the carry bit from the adders 4b to 4d is sent to the upper side are the switches 161b to d for the sum signal. And carry signals 151b to 151d.
  • the configuration and operation of the arithmetic device 101 will be described focusing on the changes from the arithmetic device 1 of the second modification.
  • the Wallace tree multipliers 2a to 2d are the same as in the second modification. Based on the Wallace tree, the adders 14a to 14d output a sum signal and a carry signal one stage before the addition result of a plurality of 2-unit bit length data.
  • the registers 15a to 15d hold the sum signals output from the corresponding adders 14a to 14d, respectively.
  • the registers 25a to 25d hold carry signals output from the corresponding adders 14a to 14d, respectively.
  • the adders 16a to 16d add the input sum signal and carry signal, respectively.
  • the output terminals OP1 to OP4 output the addition results of the adders 16a to 16d, respectively.
  • the first connection switcher 120 is the same as in the second modification.
  • the second connection switching unit 130 replaces each addition result of the registers 5a to 5d with a set of the sum signal and the carry signal of the register 15a and the register 25a, the register 15b and the register 25b.
  • the output destination of the set of sum signal and carry signal, the set of sum signal and carry signal of register 15c and register 25c, and the set of sum signal and carry signal of register 15d and register 25d are switched.
  • the switch 161b switches whether to send the carry bit of the sum signal from the adder 14b to the adder 14a.
  • the switch 161c switches whether the carry bit of the sum signal is sent from the adder 14c to the adder 14b.
  • the switch 161d switches whether the carry bit of the sum signal is sent from the adder 14d to the adder 14c.
  • the switch 151b switches whether the carry bit of the carry signal is sent from the adder 14b to the adder 14a.
  • the switch 151c switches whether to carry the carry bit of the carry signal from the adder 14c to the adder 14b.
  • the switch 151d switches whether to carry the carry bit of the carry signal from the adder 14d to the adder 14c.
  • the arithmetic unit 101 operates in a half-precision arithmetic mode, a single-precision arithmetic mode, and a double-precision arithmetic mode, as in the second modification.
  • movement is demonstrated centering on difference with operation
  • FIG. 22 illustrates the operation in the half-precision arithmetic mode of the arithmetic unit 101 according to the third modification.
  • the first connection switch 120 sends the outputs of the Wallace tree multipliers 2a to 2d to the adders 16a to 16d.
  • FIG. 23 shows the input of the adder 16a in the half-precision arithmetic mode of the third modified example.
  • the adder 16a receives all 26 bits ⁇ d25-d0 ⁇ of the sum signal D at all 26 bit positions of the first input.
  • Adder 16a receives all 26 bits ⁇ e25-e0 ⁇ of carry signal E at all 26 bit positions of the second input.
  • the adder 16a adds all 26 bits of the sum signal D and all 26 bits of the carry signal E, and outputs the lower 26 bits as the first product C1.
  • the adders 16b to 16d operate in the same manner as the adder 16a except that their inputs and outputs are different as shown in FIG.
  • FIG. 24 explains the operation in the single-precision arithmetic mode of the arithmetic unit 101 of the third modification, focusing mainly on the differences from the second modification in the operation of calculating the product C1 of the multiplier A1 and the multiplicand B1.
  • the shifters 7a to 7d in FIG. 16 are divided into shifters 17a to 17d and shifters 27a to 27d for shifting the sum signal and the carry signal.
  • FIG. 25 shows the inputs and outputs of the adders 14a-b in the first cycle in the single precision operation mode of the third modification.
  • the input and output of the adder 14a are divided into the third input of the sum signal and the fourth input of the carry signal with respect to the input and output of the adder 4a in the second modification.
  • 4 input is divided into the fifth input of the sum signal and the sixth input of the carry signal, and the output is divided into the first output of the sum signal and the second output of the carry signal.
  • the adder 14a receives 26 bits (all bits are 0) from the shifter 17a at all 26 bit positions of the third input.
  • the adder 14a receives 26 bits (all bits are 0) from the shifter 27a at all 26 bit positions of the fourth input.
  • the adder 14a receives the upper 2 bits of the sum signal SM (28 bits) as the addition result of the adder 14b at the lower 2 bit position of the fifth input.
  • the adder 14a receives the upper 3 bits of the carry signal RM (29 bits) as the addition result of the adder 14b at the lower 2 bit position of the sixth input.
  • the input and output of the adder 14b are divided into the fifth input of the sum signal and the sixth input of the carry signal, with respect to the input and output of the adder 4b in the second modification.
  • the first output is divided into the first output of the sum signal and the second output of the carry signal
  • the second output is divided into the third output of the sum signal and the fourth output of the carry signal. It will be a thing.
  • the adder 14b receives 26 bits (all bits are 0) from the shifter 17b at all 26 bit positions of the fifth input.
  • the adder 14b receives 26 bits (all bits are 0) from the shifter 27b at all 26 bit positions of the sixth input.
  • the lower 26 bits ⁇ Sm25 (0) -Sm0 (0) ⁇ of the sum signal SM (0) as the addition result of the adder 14b are sent to the register 15b as the first output.
  • the upper 2 bits of the sum signal SM (0) which is the addition result of the adder 14b, is sent as the third output to the lower 2 bit position of the fifth input of the adder 14a.
  • the lower 26 bits ⁇ Rm25 (0) -Rm0 (0) ⁇ of the carry signal RM (0) as the addition result of the adder 14b are sent to the register 25b as the second output.
  • the upper 3 bits of the carry signal RM (0), which is the addition result of the adder 14b is sent as the fourth output to the lower 3 bit position of the sixth input of the adder 14a.
  • FIG. 26 shows the inputs and outputs of the adders 14a-b in the second cycle in the single precision operation mode of the third modification.
  • the signal input source to the adders 14a and 14b is the same as in the first cycle.
  • the shifter 17a shifts the 26 bits ⁇ Sl25 (0) -Sl0 (0) ⁇ held in the register 15a upward by 13 bits.
  • the shifter 17b shifts the 26 bits ⁇ Sm25 (0) -Sm0 (0) ⁇ held in the register 15b upward by 13 bits, and the 13 bits ⁇ Sm25 (0) -Sm13 (0) overflowing from the shifter 17b ) ⁇ To the lower 13 bits of shifter 17a.
  • the shifter 27a shifts the 26 bits ⁇ Rl25 (0) -Rl0 (0) ⁇ held in the register 25a upward by 13 bits.
  • the shifter 27b shifts the 26 bits ⁇ Rm25 (0) -Rm0 (0) ⁇ held in the register 25b upward by 13 bits, and the 13 bits ⁇ Rm25 (0) -Rm13 (0) overflowing from the shifter 27b ) ⁇ To the lower 13 bits of shifter 27a.
  • the adder 14a adds 26 bits from the shifter 17a to the 26th bit position of the third input ⁇ upper 13 bits: S112 (0) -S10 (0), lower 13 bits: Sm25 (0) -Sm13 (0) ⁇ Receive.
  • the adder 14a adds 26 bits from the shifter 27a to the 26th position of the fourth input ⁇ higher 13 bits: Rl12 (0) -Rl0 (0), lower 13 bits: Rm25 (0) -Rm13 (0) ⁇ Receive.
  • the adder 14a receives the upper 2 bits of the sum signal SM (1) (28 bits) as the addition result of the adder 14b at the lower 2 bit position of the fifth input.
  • the adder 14a receives the upper 3 bits of the carry signal RM (1) (29 bits) as the addition result of the adder 14b at the lower 2 bit position of the sixth input.
  • the adder 14b receives 26 bits ⁇ upper 13 bits: Sm12 (0) -Sm0 (0), lower 13 bits: all bits are 0 ⁇ from the shifter 17b at all 26 bit positions of the fifth input.
  • the adder 14b receives 26 bits ⁇ upper 13 bits: Rm12 (0) -Rm0 (0), lower 13 bits: all bits are 0 ⁇ from the shifter 27b at all 26 bit positions of the sixth input.
  • the lower 26 bits ⁇ Sm25 (1) -Sm0 (1) ⁇ of the sum signal SM (1) as the addition result of the adder 14b are sent to the register 15b as the first output.
  • the upper 2 bits of the sum signal SM (1), which is the addition result of the adder 14b, is sent as the third output to the lower 2 bit position of the fifth input of the adder 14a.
  • the lower 26 bits ⁇ Rm25 (1) -Rm0 (1) ⁇ of the carry signal RM (1) as the addition result of the adder 14b are sent to the register 25b as the second output.
  • the upper 3 bits of the carry signal RM (1), which is the addition result of the adder 14b is sent as the fourth output to the lower 3 bit position of the sixth input of the adder 14a.
  • the second connection switching unit 130 outputs the data in the registers 15a to 15d and 25a to 25d to any one of the adders 16a to 16d after the end of the second cycle.
  • the sum signal ⁇ Sl25 (1) -Sl0 (1) ⁇ held in the register 15a and the carry signal ⁇ Rl25 (1) -Rl0 (1) ⁇ held in the register 25a are sent to the adder 16a. It is done.
  • the adder 16a performs addition and outputs the upper 26 bits C10 of the first product C1 to the output terminal OP1.
  • the adder 16b outputs the lower 26 bits C11 of the first product C1 to the output terminal OP2.
  • the adder 16b supplies the carry accompanying the addition to the adder 16a, and the adder 16a may perform the above addition including this carry.
  • FIG. 27 describes the operation in the double precision arithmetic mode of the arithmetic unit 101 of the third modification, focusing on the differences from the second modification.
  • 28A and 28B show the inputs and outputs of the adders 14a to 14d in the first cycle in the double precision arithmetic mode of the third modified example.
  • the shifters 7a-d in the second modification adders 4a-d are CSA, the carry from the lower digit is divided into a carry from the sum signal and a carry from the carry signal.
  • the outputs of the adders 4a to 4d are divided into a sum signal and a carry signal. Except for these differences, the inputs and outputs of the adders 14a to 14d shown in FIGS. 28A to 28B are the same as the inputs and outputs of the adders 4a to 4d shown in FIG.
  • the adder 14a receives 26 bits (all bits are 0) from the shifter 17a at all 26 bit positions of the first input.
  • the adder 14a receives 26 bits (all bits are 0) from the shifter 27a at all 26 bit positions of the second input.
  • the adder 14a receives the upper 2 bits of the sum signal SM (0) (28 bits) as the addition result of the adder 14b at the lower 2 bit position of the third input.
  • the adder 14a receives the upper 3 bits of the carry signal RM (0) (29 bits) as the addition result of the adder 14b at the lower 3 bit position of the fourth input.
  • the lower 26 bits ⁇ Sl25 (0) -Sl0 (0) ⁇ of the sum signal SL (0) as the addition result of the adder 14a are sent to the register 15a.
  • the adder 14b receives 26 bits (all bits are 0) from the shifter 17b at all 26 bit positions of the third input.
  • the adder 14b receives 26 bits (all bits are 0) from the shifter 27b at all 26 bit positions of the fourth input.
  • the adder 14b receives the upper 3 bits of the sum signal SN (0) (29 bits) as the addition result of the adder 14c at the lower 3 bit position of the fifth input.
  • the adder 14b receives the upper 4 bits of the carry signal RN (0) (30 bits) as the addition result of the adder 14c at the lower 4 bit position of the sixth input.
  • the lower 26 bits ⁇ Sm25 (0) -Sm0 (0) ⁇ of the sum signal SM (0) as the addition result of the adder 14b are sent to the register 15b as the first output.
  • the upper 2 bits of the sum signal SM (0), which is the addition result of the adder 14b, is sent as the third output to the lower 2 bit position of the third input of the adder 14a.
  • the lower 26 bits ⁇ Rm25 (0) -Rm0 (0) ⁇ of the carry signal RM (0), which is the addition result of the adder 14b, is sent to the register 15b as the second output.
  • the upper 3 bits of the carry signal RM (0), which is the addition result of the adder 14b is sent as the fourth output to the lower 3 bit position of the fourth input of the adder 14a.
  • the adder 14c receives 26 bits (all bits are 0) from the shifter 17c at all 26-bit positions of the seventh input.
  • the adder 14c receives 26 bits (all bits are 0) from the shifter 27c at all 26 bit positions of the eighth input.
  • the adder 14c receives the upper 2 bits of the sum signal SO (0) (28 bits) as the addition result of the adder 14d at the lower 2 bit position of the ninth input.
  • the adder 14c receives the lower 3 bits of the 10th input and the higher 3 bits of the carry signal RO (0) (29 bits) which is the addition result of the adder 14d.
  • the lower 26 bits ⁇ Sn25 (0) -Sn0 (0) ⁇ of the sum signal SN (0) as the addition result of the adder 14c are sent to the register 15c as the first output.
  • the upper 3 bits of the sum signal SN (0), which is the addition result of the adder 14c, is sent as the third output to the lower 3 bit position of the fifth input of the adder 14b.
  • the lower 26 bits ⁇ Rn25 (0) -Rn0 (0) ⁇ of the carry signal RN (0) as the addition result of the adder 14c are sent to the register 25c as the second output.
  • the upper 4 bits of the carry signal RN (0), which is the addition result of the adder 14c is sent as the fourth output to the lower 4 bit position of the sixth input of the adder 14b.
  • the adder 14d receives 26 bits (all bits are 0) from the shifter 17d at all 26 bit positions of the fifth input.
  • the adder 14d receives 26 bits (all bits are 0) from the shifter 27d at all 26 bit positions of the fifth input.
  • the lower 26 bits ⁇ o25 (0) -o0 (0) ⁇ of the addition result O (0) of the adder 14d are sent to the register 15d as the first output.
  • the upper 2 bits of the addition result O (0) of the adder 14d are sent as the second output to the lower 2 bit position of the eighth input of the adder 14c.
  • FIGS. 29A and 29B are diagrams showing the inputs and outputs of the adders 14a to 14d in the second cycle in the double precision arithmetic mode of the third modified example.
  • the signal input sources to the adders 14a to 14d are the same as in the second cycle.
  • the shifter 17a shifts the 26 bits ⁇ Sl25 (0) -Sl0 (0) ⁇ held in the register 15a upward by 13 bits.
  • the shifter 17b shifts the 26 bits ⁇ Sm25 (0) -Sm0 (0) ⁇ held in the register 15b upward by 13 bits, and the 13 bits ⁇ Sm25 (0) -Sm13 (0) overflowing from the shifter 17b ) ⁇ To the lower 13 bits of shifter 17a.
  • the shifter 27a shifts the 26 bits ⁇ Rl25 (0) -Rl0 (0) ⁇ held in the register 25a upward by 13 bits.
  • the shifter 27b shifts the 26 bits ⁇ Rm25 (0) -Rm0 (0) ⁇ held in the register 25b upward by 13 bits, and the 13 bits ⁇ Rm25 (0) -Rm13 (0) overflowing from the shifter 27b ) ⁇ To the lower 13 bits of shifter 27a.
  • the adder 14a adds 26 bits from the shifter 17a to the 26th position of the first input ⁇ higher 13 bits: S112 (0) -S10 (0), lower 13 bits: Sm25 (0) -Sm13 (0) ⁇ Receive.
  • the adder 14a has 26 bits from the shifter 27a ⁇ upper 13 bits: Rl12 (0) -Rl0 (0), lower 13 bits: Rm25 (0) -Rm13 (0) ⁇ at all 26 bit positions of the second input.
  • the adder 14a receives the upper 2 bits of the sum signal SM (1) (28 bits) as the addition result of the adder 14b at the lower 2 bit position of the third input.
  • the adder 14a receives the upper 3 bits of the carry signal RM (1) (29 bits) as the addition result of the adder 14b at the lower 3 bit position of the fourth input.
  • the shifter 17c shifts the 26 bits ⁇ Sn25 (0) -Sn0 (0) ⁇ held in the register 15c upward by 13 bits, and the 13 bits ⁇ Sn25 (0) -Sn13 (0) overflowing from the shifter 17c ) ⁇ To the lower 13 bits of shifter 17b.
  • the shifter 27c shifts the 26 bits ⁇ Rn25 (0) -Rn0 (0) ⁇ held in the register 25c upward by 13 bits, and the 13 bits ⁇ Rn25 (0) -Rn13 (0) overflowing from the shifter 27c ) ⁇ To the lower 13 bits of shifter 27b.
  • the adder 14b has 26 bits from the shifter 17b ⁇ higher 13 bits: Sm12 (0) -Sm0 (0), lower 13 bits: Sn25 (0) -Sn13 (0) ⁇ at all 26 bit positions of the third input. Receive. The adder 14b has 26 bits from the shifter 27b ⁇ higher 13 bits: Rm12 (0) -Rm0 (0), lower 13 bits: Rn25 (0) -Rn13 (0) ⁇ at all 26 bit positions of the fourth input. Receive. The adder 14b receives the upper 3 bits of the sum signal SN (1) (29 bits) as the addition result of the adder 14c at the lower 3 bit position of the fifth input. The adder 14b receives the upper 4 bits of the carry signal RN (1) (30 bits) as the addition result of the adder 14c at the lower 4 bit position of the sixth input.
  • the lower 26 bits ⁇ Sm25 (1) -Sm0 (1) ⁇ of the sum signal SM (1) as the addition result of the adder 14b are sent to the register 15b as the first output.
  • the upper 2 bits of the sum signal SM (1) which is the addition result of the adder 14b is sent as the third output to the lower 2 bit position of the third input of the adder 14a.
  • the lower 26 bits ⁇ Rm25 (1) -Rm0 (1) ⁇ of the carry signal RM (1) as the addition result of the adder 14b are sent to the register 25b as the second output.
  • the upper 3 bits of the carry signal RM (1), which is the addition result of the adder 14b, is sent as the fourth output to the lower 3 bit position of the fourth input of the adder 14a.
  • the shifter 17d shifts the 26 bits ⁇ So25 (0) -So0 (0) ⁇ held in the register 15d by 13 bits to the upper side, and the 13 bits overflowing from the shifter 17d ⁇ So25 (0) -So13 (0) ) ⁇ To the lower 13 bits of shifter 17c.
  • the shifter 27d shifts the 26 bits ⁇ Ro25 (0) -Ro0 (0) ⁇ held in the register 25d by 13 bits to the upper side, and the 13 bits ⁇ Ro25 (0) -Ro13 (0) overflowing from the shifter 27d ) ⁇ To the lower 13 bits of shifter 27c.
  • the adder 14c adds 26 bits from the shifter 17c to the 26th position of the seventh input ⁇ higher 13 bits: Sn12 (0) -Sn0 (0), lower 13 bits: So25 (0) -So13 (0) ⁇ Receive.
  • the adder 14c adds 26 bits from the shifter 27c to the 26th bit position of the eighth input ⁇ upper 13 bits: Rn12 (0) -Rn0 (0), lower 13 bits: Ro25 (0) -Ro13 (0) ⁇ Receive.
  • the adder 14c receives the upper 2 bits of the sum signal SO (1) (28 bits) as the addition result of the adder 14d at the lower 2 bit position of the ninth input.
  • the adder 14c receives the upper 3 bits of the carry signal RO (1) (29 bits) as the addition result of the adder 14d at the lower 3 bit position of the tenth input.
  • the lower 26 bits ⁇ Sn25 (1) -Sn0 (1) ⁇ of the sum signal SN (1) as the addition result of the adder 14c are sent to the register 15c as the first output.
  • the upper 3 bits of the sum signal SN (1), which is the addition result of the adder 14c, is sent as the third output to the lower 3 bit position of the fifth input of the adder 14b.
  • the lower 26 bits ⁇ Rn25 (1) -Rn0 (1) ⁇ of the carry signal RN (1) as the addition result of the adder 14c are sent to the register 25c as the second output.
  • the upper 4 bits of the carry signal RN (1), which is the addition result of the adder 14c is sent as the fourth output to the lower 4 bit position of the sixth input of the adder 14b.
  • the adder 14d receives 26 bits ⁇ upper 13 bits: So12 (0) -So0 (0), lower 13 bits: all bits are 0 ⁇ from the shifter 17d at all 26 bit positions of the fifth input.
  • the adder 14d receives 26 bits ⁇ upper 13 bits: Ro12 (0) -Ro0 (0), lower 13 bits: all bits are 0 ⁇ from the shifter 27d at all 26 bit positions of the sixth input.
  • the lower 26 bits ⁇ So25 (1) -So0 (1) ⁇ of the sum signal SO (1) as the addition result of the adder 14d are sent to the register 15d as the first output.
  • the upper 2 bits of the sum signal SO (1), which is the addition result of the adder 14d, is sent as the third output to the lower 2 bit position of the ninth input of the adder 14c.
  • the lower 26 bits ⁇ Ro25 (1) -Ro0 (1) ⁇ of the carry signal RO (1), which is the addition result of the adder 14d, are sent to the register 25d as the second output.
  • the upper 3 bits of the carry signal RO (1), which is the addition result of the adder 14d is sent as the fourth output to the lower 3 bit position of the 10th input of the adder 14c.
  • the inputs of the Wallace tree multipliers 2a to 2d in the third to fourth cycles in the double precision arithmetic mode are the same as in the second modification. Since the calculation procedure after the third to fourth cycles is the same as the calculation procedure of the second cycle, the description will not be repeated.
  • the second connection switching unit 130 outputs the data in the registers 15a to 15d and 25a to 25d to any one of the adders 16a to 16d after the end of the fourth cycle.
  • the sum signal ⁇ Sl25 (3) -Sl0 (3) ⁇ held in the register 15a and the carry signal ⁇ Rl25 (3) -Rl0 (3) ⁇ held in the register 25a are sent to the adder 16a. It is done.
  • the adder 16a performs addition and outputs the first bit group C10 of the product C1 to the output terminal OP1.
  • the adders 16b to 16d output the second to fourth bit groups C11 to C13 of the product C1 to the output terminals OP2 to OP4.
  • the adders 16b to d supply the carry accompanying the addition to the higher-order adders 16a to 16c, and the higher-order adders 16a to 16c perform the above addition including this carry. Good.
  • the adders 14a to 14d In the half-precision operation mode, no data is input to the adders 14a to 14d. That is, the sum signals D, F, H, and J and the carry signals E, G, I, and K output from the Wallace tree multipliers 2a to 2d bypass the adders 14a to 14d, and the adders 16a-d.
  • the adders 14a to 14d sequentially carry the carry signal hold addition of 6 inputs and 2 outputs, 6 inputs and 2 outputs + 2 carry signals, 6 inputs and 2 outputs, 6 inputs and 2 outputs and 2 carry signals output. Execute.
  • the adders 14a to 14d sequentially perform 4 inputs 2 outputs, 6 inputs 2 outputs + 2 carry signals outputs, 10 inputs 2 outputs + 2 carry signals outputs, 6 inputs 2 outputs + 2 carry signals outputs. Carry signal hold addition is executed.
  • the adder 14a includes four CSAs.
  • the adder 14a performs carry signal hold addition using four CSAs in the single precision calculation mode, and performs carry signal hold addition using two CSAs in the double precision calculation mode.
  • the adder 14b includes four CSA.
  • the adder 14b performs carry signal hold addition using four CSAs in the single precision arithmetic mode and the double precision arithmetic mode.
  • the adder 14c includes 8 CSAs.
  • the adder 14c performs carry signal hold addition using four CSAs in the single precision arithmetic mode, and performs carry signal hold addition using eight CSAs in the double precision arithmetic mode.
  • the adder 14d includes four CSAs.
  • the adder 14d performs carry signal hold addition using four CSAs in the single precision arithmetic mode and the double precision arithmetic mode.
  • FIG. 30 shows a configuration of an adder 200 that performs carry signal hold addition using two CSAs.
  • the configuration of the adder 200 is the configuration of the adder 14a in the double precision operation mode.
  • FIG. 31 shows input data, intermediate data, and output data of the adder 200.
  • the adder 200 receives four pieces of data Y0, Y1, Y2, and Y3.
  • the CSA 111 adds the carry signal pending addition to Y0, Y1, and Y2, and outputs the sum signal 1S and the carry signal 1R.
  • the CSA 112 adds the carry signal pending addition of Y3, the sum signal 1S, and the carry signal 1R, and outputs the sum signal 2S and the carry signal 2R.
  • the lower 26 bits of the sum signal 2S are output to one register, and the lower 26 bits of the carry signal 2R are output to the other register.
  • FIG. 32 is a diagram illustrating a configuration of an adder 300 that performs carry signal hold addition using four CSAs.
  • the configuration of the adder 300 is the configuration of the adders 14a to 14d in the single precision operation mode and the configuration of the adders 14b and d in the double precision operation mode.
  • FIG. 33 is a diagram showing input data, intermediate data, and output data of adder 300.
  • the adder 300 receives six pieces of data Y0, Y1, Y2, Y3, Y4, and Y5.
  • the CSA 121 adds the carry signal pending addition to Y0, Y1, and Y2, and outputs the sum signal 1S and the carry signal 1R.
  • the CSA 122 adds and holds the carry signal Y3, Y4, and Y5, and outputs a sum signal 2S and a carry signal 2R.
  • the CSA 123 carries out the carry signal hold addition of the sum signal 1S, the carry signal 1R, and the sum signal 2S, and outputs the sum signal 3S and the carry signal 3R.
  • the CSA 124 carries out the carry signal pending addition of the sum signal 3S, the carry signal 3R, and the carry signal 2R, and outputs the sum signal 4S and the carry signal 4R.
  • the lower 26 bits of the sum signal 4S are output to one register, and the lower 26 bits of the carry signal 4R are output to the other register.
  • the carry signal is output, the upper 2 bits of the sum signal 4S are output to the other adder, and the upper 3 bits of the carry signal 4R are output to the other adder.
  • FIG. 34 is a diagram illustrating the configuration of an adder 400 that performs carry signal hold addition using eight CSAs.
  • the configuration of the adder 400 is a configuration when the adder 14c is in the double precision operation mode.
  • the adder 400 receives 10 pieces of data Y0 to Y9.
  • the CSA 131 adds the carry signal pending addition to Y0, Y1, and Y2, and outputs the sum signal 1S and the carry signal 1R.
  • the CSA 132 performs a carry signal hold addition on Y3, Y4, and Y5, and outputs a sum signal 2S and a carry signal 2R.
  • the CSA 133 adds and holds the carry signal Y6, Y7, and Y8, and outputs the sum signal 3S and the carry signal 3R.
  • the CSA 134 carries out the carry signal hold addition of the sum signal 1S, the carry signal 1R, and the sum signal 2S, and outputs the sum signal 4S and the carry signal 4R.
  • the CSA 135 carries out the carry signal hold addition of Y9, the carry signal 2R, and the sum signal 3S, and outputs the sum signal 5S and the carry signal 5R.
  • the CSA 136 carries out the carry signal pending addition of the sum signal 4S, the carry signal 4R, and the sum signal 5S, and outputs the sum signal 6S and the carry signal 6R.
  • the CSA 137 adds the carry signal pending to the sum signal 6S, the carry signal 3R, and the carry signal 5R, and outputs the sum signal 7S and the carry signal 7R.
  • the CSA 138 adds the carry signal 6R, the sum signal 7S, and the carry signal 7R, and outputs the sum signal 8S and the carry signal 8R.
  • the lower 26 bits of the sum signal 8S are output to one register, and the lower 26 bits of the carry signal 8R are output to the other register.
  • the upper 3 bits of the sum signal 8S are output as a carry signal to another adder, and the upper 4 bits of the carry signal 8R are output as a carry signal to another adder.
  • adders 14a to 14d output the sum signal and carry signal one stage before the addition result, and adders 16a to 16d perform two cycles in single precision arithmetic. Only once, in double precision operations, the addition only needs to be performed once every four cycles. Therefore, in this Embodiment, the operation speed and power efficiency of the whole arithmetic unit can be increased rather than the 2nd modification.
  • FIG. 35 shows a configuration of an arithmetic system 1000 according to the fourth modification.
  • the arithmetic system 100 includes an arithmetic unit 900 and a plurality of element processors PE1 to PE4.
  • a plurality of element processors PE1 to PE4 share the arithmetic unit 900 for use.
  • the element processors PE1 to PE4 cooperate to operate as one processor, and when an operation other than the matrix operation is performed, the element processors PE1 to PE4 operate as individual processors.
  • the element processors PE1 to PE4 may operate as one processor also when the arithmetic system 1000 executes operations other than matrix operations.
  • the element processors PE1 to PE4 operate as one processor, the element processors PE1 to PE4 operate with one instruction, and therefore, the element processors PE1 to PE4 can be regarded as performing SIMD operations.
  • Element processors PE1 to PE4 are ring-coupled. Specifically, the element processor PE1 and the element processor PE2 are connected by a data bus, the element processor PE2 and the element processor PE3 are connected by a data bus, the element processor PE3 and the element processor PE4 are connected by a data bus, Element processor PE4 and element processor PE1 are connected by a data bus. In the element processors PE1 to PE4, processor IDs (00, 01, 10, 11) that can uniquely identify the element processors are set.
  • a memory space is set.
  • the memory address of the memory space includes a processor ID.
  • the lower 2 bits of the memory address may correspond to the processor ID.
  • a memory space corresponding to a 10-bit address is allocated to each of the element processors PE1 to PE4. Therefore, the memory space of the arithmetic system 1000 is expanded to 12 bits. In other words, the memory space of the arithmetic system 1000 is divided into four equal parts, and the element processor indicated by the processor ID included in the memory address accesses the memory area indicated by each memory address.
  • Each of the element processors PE1 to PE4 can access a memory area (responsible area) indicated by a memory address including the processor ID of the element processor, but is indicated by a memory address including a processor ID different from the processor ID of the element processor. Cannot access the memory area (non-charge area).
  • Each of the element processors PE1 to PE4 sequentially transfers data (circular shift) to other element processors via ring coupling. As a result, each of the element processors PE1 to PE4 can read the data in the non-responsible area or write the data in the non-responsible area.
  • Each of the element processors PE1 to PE4 holds input data that is a calculation target of the calculation unit 900 and output data that is a calculation result of the calculation unit 900 in an area indicated by a memory address.
  • the arithmetic unit 900 can execute, for example, a plurality of floating point operations in parallel.
  • the arithmetic unit 900 can execute, for example, operations for a deep neural network (DNN: Deep Neural Network) and a convolutional neural network (CNN: Convolutional Network).
  • DNN Deep Neural Network
  • CNN convolutional neural network
  • the arithmetic unit 900 includes a plurality of arithmetic devices 1A to 1D.
  • Each of the arithmetic devices 1A to 1D includes the arithmetic device 405 described in the embodiment, the arithmetic device 405 described in the first modification, the arithmetic device 1 described in the second modification, or the arithmetic device described in the third modification. 101.
  • Each of the arithmetic devices 1A to 1D is a device that executes a part of the arithmetic operation of the arithmetic unit 900.
  • the element processor PE1 can access the register of the arithmetic device 1A.
  • the element processor PE2 can access the register of the arithmetic device 1B.
  • the element processor PE3 can access the register of the arithmetic device 1C.
  • the element processor PE4 can access the register of the arithmetic unit 1D.
  • the arithmetic unit performs multiplication (A * B), but it is also possible to execute A * B + C.
  • the initial value of the third input of the adders 4a, 4c, 14a, and 14c may be changed from 0 to C in the case of single precision arithmetic, and the adder in the case of double precision arithmetic.
  • the initial value of the first input of 4a and 14a may be changed from 0 to C. Even in the case of half precision, C may be supplied to the unused input ports of the adders 4a to 4d and 14a to 14d.
  • the arithmetic circuit of the mantissa part of the floating-point format data is shown, but the present invention can also be applied as an arithmetic circuit for fixed-point format and block floating-point format data. Further, the present invention can be applied to an arithmetic circuit for data in which these arithmetic data (floating point format, fixed point format, and block floating point format) are mixed.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

複数の乗算器が演算精度モードに応じて1または2以上の乗算器毎に分割されて1または複数のグループのそれぞれに割り当てられ、各グループにおいて各乗算器が演算精度モードに応じて当該グループに対する乗数の少なくとも一部の桁範囲である個別乗数および当該グループに対する被乗数の少なくとも一部の桁範囲である個別被乗数を乗算する乗算部と、複数の加算器が演算精度モードに応じて1または2以上の加算器毎に分割されて1または複数のグループのそれぞれに割り当てられ、各グループに割り当てられた1または2以上の加算器が当該グループに割り当てられた各乗算器による各乗算結果を加算して乗数および被乗数の積を出力する加算部とを備える演算装置を提供する。

Description

演算装置および演算システム
 本発明は、演算装置および演算システムに関し、特に、可変精度で乗算を実行する演算装置および演算システムに関する。
 従来から、倍精度の乗算を実行する装置が知られている。たとえば、特許文献1に記載の演算装置は、2つの乗算器12,13と、ALU37と、アキュムレータ24,25とを備える。ALU37の入力部には、乗算器12,13の乗算結果と、アキュムレータ24,25の出力が与えられる。
特開平11-259273号公報
解決しようとする課題
 しかしながら、特許文献1に記載の装置は、2つの乗算器12,13が最終的な乗算結果まで求めるために回路規模が大きく、その結果電力効率が悪いという問題がある。
 さらに、近年では、1つの精度の乗算だけでなく、可変精度の乗算を小さな回路規模で実行することができる演算装置が望まれている。
 一般に、単精度の乗算に必要なトランジスタの数は、倍精度の乗算に必要なトランジスタの数の1/4以下であり、半精度の乗算に必要なトランジスタの数は、倍精度の乗算に必要なトランジスタの数の1/16以下である。したがって、例えば単精度と倍精度を切替えて実行するような一般的な演算装置は、回路規模としては倍精度演算1つ分、または単精度演算4つ分を実行することができるようなトランジスタ数を有する。このような一般的な演算装置では、単精度演算時に使用されるトランジスタが、倍精度演算に使用されるトランジスタの1/4以下となる。また、倍精度演算1つまたは単精度演算2つを切替可能とすることも考えられるが、その場合においても単精度演算時に使用されるトランジスタが、倍精度演算に使用されるトランジスタの1/2以下となる。つまり、このような演算装置は、倍精度演算のために大きな回路規模を有するにも係らず、単精度演算を実行するときには、演算装置内のトランジスタの3/4または1/2以上が使用されずに、無駄となる。
 それゆえに、本発明の目的は、小さな回路規模で、複数の精度の乗算をそれぞれ効率良く実行することができる演算装置および演算システムを提供することである。
一般的開示
 本発明の第1態様においては、可変精度で乗算を実行する演算装置を提供する。演算装置は、複数の乗算器を有し、複数の乗算器が演算精度モードに応じて1または2以上の乗算器毎に分割されて1または複数のグループのそれぞれに割り当てられ、各グループにおいて各乗算器が演算精度モードに応じて当該グループに対する乗数の少なくとも一部の桁範囲である個別乗数および当該グループに対する被乗数の少なくとも一部の桁範囲である個別被乗数を乗算する乗算部を備えてよい。演算装置は、複数の加算器を有し、複数の加算器が演算精度モードに応じて1または2以上の加算器毎に分割されて1または複数のグループのそれぞれに割り当てられ、各グループに割り当てられた1または2以上の加算器が当該グループに割り当てられた各乗算器による各乗算結果を加算して乗数および被乗数の積を出力する加算部を備えてよい。演算装置は、演算精度モードに応じて、1または複数のグループのそれぞれについて、各乗算器による各乗算結果を、1また2以上の加算器における当該乗算結果を加えるべき桁位置へと入力させる第1接続切替器を備えてよい。
 複数の乗算器のそれぞれは、個別乗数および個別被乗数を乗算して各桁の和データおよび各桁からの桁上げデータを含む乗算結果を出力してよい。
 複数の乗算器のそれぞれは、1単位ビット長の個別乗数および個別被乗数を乗算して2単位ビット長の乗算結果を出力してよい。複数の加算器のそれぞれは、2単位ビット長の複数の入力データを加算して2単位ビット長の和、および演算精度モードに応じて上位桁への桁上りを出力してよい。
 2単位ビット長以上の乗数および被乗数を乗算する少なくとも1つの演算精度モードにおいて、1または複数のグループのそれぞれについて、1または2以上の乗算器は、サイクル毎に、乗数のうち各乗算器が担当する桁範囲の個別乗数と、被乗数におけるサイクル毎に上位桁から順に1単位ビット長ずつ選択された個別被乗数とを入力して、サイクル毎にそれぞれの個別乗数および個別被乗数の部分積を乗算結果として出力してよい。第1接続切替器は、サイクル毎に、乗数における最下位側の桁範囲の個別乗数および個別被乗数の部分積が1または2以上の加算器における最下位の桁範囲に対応するように、1または2以上の乗算器が出力するそれぞれの部分積をシフトして1または2以上の加算器に入力させて中間結果に加算させてよい。演算装置は、1または複数のグループのそれぞれについて、サイクル毎に、中間結果を上位側に1単位ビット長シフトさせて1または2以上の加算器へと入力させる第2接続切替器を更に備えてよい。
 2単位ビット長以上の少なくとも1つの演算精度モードにおいて、複数の乗算器および複数の加算器は2以上のグループに割り当てられてよい。演算装置は、2以上のグループのそれぞれについて乗数および被乗数の積を、複数のサイクルを用いて演算してよい。
 1単位ビット長の乗数および被乗数を乗算する演算精度モードにおいて、複数の乗算器は、各々が1個の乗算器を含む複数のグループに割り当てられ、各グループに割り当てられた乗算器は、当該グループに割り当てられた1単位ビット長の乗数および被乗数を乗算してよい。
 加算部は、複数の加算器のそれぞれに対応してそれぞれ設けられ、中間結果における各加算器に対応する桁範囲をそれぞれ保持する複数の中間レジスタを有してよい。
 複数の加算器のそれぞれは、各桁の和データおよび各桁からの桁上げデータを含む加算結果を出力する第1加算要素を含んでよい。複数の中間レジスタのそれぞれは、中間結果における対応する第1加算要素が出力する桁範囲の和データおよび桁上げデータを保持してよい。加算部は、複数の加算器のそれぞれに対応してそれぞれ設けられる複数の第2加算要素であって、演算精度モードに応じて1または2以上の第2加算要素毎に分割されて1または複数のグループのそれぞれに割り当てられ、各グループにおいて1または2以上の第1加算要素が出力する和データおよび桁上げデータを加算して乗数および被乗数の積として出力する複数の第2加算要素を更に有してよい。
 本発明の第2態様においては、可変精度で乗算を実行する演算装置を提供する。演算装置は、各々が1単位ビット長の2つの数を乗算して各桁の和データおよび各桁からの桁上がりデータを含む乗算結果を出力する複数の乗算器を有する乗算部を備えてよい。演算装置は、各々が複数の乗算器のうちの少なくとも1つの乗算器による乗算結果を含む少なくとも2つの入力データを加算する複数の加算器を有する加算部を備えてよい。演算装置は、演算精度モードに応じて、複数の乗算器および複数の加算器を、1以上の乗算器および1以上の加算器を含み互いに異なる乗数および被乗数を乗算するグループ毎に分割する分割数と、グループにおいて1以上の乗算器および1以上の加算器を用いて乗数および被乗数を乗算するのに用いるサイクル数とを選択するモード選択部を備えてよい。
 モード選択部は、n単位ビット長(nは自然数)の乗数および被乗数を乗算する演算精度モードにおいて、複数の乗算器および複数の加算器を、n個の乗算器およびn個の加算器をそれぞれ含む少なくとも1つのグループに分割してよい。少なくとも1つのグループのそれぞれにおけるn個の乗算器は、グループ毎の乗数に含まれる1単位ビット長の桁範囲ずつであるn個の個別乗数のそれぞれと、被乗数に含まれる1単位ビット長の桁範囲ずつであるn個の個別被乗数のそれぞれとの乗算を、nサイクルの間、1サイクルにn組ずつ乗算してよい。少なくとも1つのグループのそれぞれにおけるn個の加算器は組み合わされて、nサイクルの間、サイクル毎に同じグループのn個の乗算器からの各乗算結果を、乗数および被乗数の積の中間結果における各乗算結果に応じた桁位置に加算していってよい。
 本発明の第3態様においては、可変精度で乗算を実行する演算装置であって、各々が、2つの入力データの乗算結果の1段前の和信号および桁上げ信号を出力するように構成される複数の乗算器と、複数の加算器と、各々が、対応する加算器の加算結果を保持するように構成される複数のレジスタと、複数の出力端子と、演算精度モードに応じて、前記複数の乗算器から出力される複数の和信号および複数の桁上げ信号を構成する複数の1単位ビット長のデータの出力先を前記複数の加算器の複数の入力の複数のビット位置の中のいずれかに切り替えるように構成される第1の切替器と、前記演算精度モードに応じて、前記複数のレジスタに保持されている複数の加算結果を構成する複数の1単位ビット長のデータの出力先を前記複数の加算器の複数の入力の複数のビット位置の中のいずれかに切り替え、または前記レジスタに保持されている複数の加算結果の出力先を前記複数の出力端子のいずれかに切り替えるように構成される第2の切替器とを備える演算装置を提供する。
 本発明の第4態様においては、可変精度で乗算を実行する演算装置であって、2つの1単位ビット長のデータの乗算結果の1段前の2単位ビット長の第1の和信号および第1の桁上げ信号を出力するように構成される第1の乗算器と、2つの1単位ビット長のデータの乗算結果の1段前の2単位ビット長の第2の和信号および第2の桁上げ信号を出力するように構成される第2の乗算器と、複数の2単位ビット長のデータの加算を実行するようにそれぞれ構成される第1および第2の加算器と、前記第1の加算器の第1の加算結果および前記第2の加算器の第2の加算結果をそれぞれ保持するように構成される第1および第2のレジスタと、第1および第2の出力端子と、演算精度モードに応じて、前記第1の乗算器から出力される前記第1の和信号および前記第1の桁上げ信号と、前記第2の乗算器から出力される前記第2の和信号および前記第2の桁上げ信号とをそれぞれ構成する複数の1単位ビット長のデータの出力先を前記第1の加算器および前記第2の加算器の複数の入力の複数のビット位置の中のいずれかに切り替えるように構成される第1の接続切替器と、前記演算精度モードに応じて、前記第1のレジスタ内の前記第1の加算結果および前記第2のレジスタ内の前記第2の加算結果をそれぞれ構成する複数の1単位ビット長のデータの出力先を前記第1の加算器および前記第2の加算器の複数の入力の複数のビット位置の中のいずれかに切替え、または前記第1のレジスタ内の前記第1の加算結果の出力先を前記第1の出力端子に切り替えるとともに前記第2のレジスタ内の前記第2の加算結果の出力先を前記第2の出力端子に切り替えるように構成される第2の接続切替器とを備える演算装置を提供する。
 本発明の第5態様においては、可変精度で乗算を実行する演算装置であって、各々が、2つの入力データの乗算結果の1段前の和信号および桁上げ信号を出力する複数の乗算器と、各々が、加算結果の1段前の和信号および桁上げ信号を出力するように構成される複数の第1段加算器と、各々が、対応する前記第1段加算器から出力される前記和信号を保持するように構成される複数の和信号保持レジスタと、各々が、対応する前記第1段加算器から出力される前記桁上げ信号を保持するように構成される複数の桁上げ信号保持レジスタと、各々が、入力される和信号と桁上げ信号とを加算するように構成される複数の第2段加算器と、演算精度モードに応じて、前記複数の乗算器から出力される複数の和信号および桁上げ信号を構成する複数の1単位ビット長のデータの出力先を前記複数の第1段加算器の複数の入力の複数のビット位置の中のいずれかに切り替え、または前記複数の乗算器から出力される複数の和信号および桁上げ信号の出力先を前記複数の第2段加算器の複数の入力のいずれかに切り替えるように構成される第1の接続切替器と、前記演算精度モードに応じて、前記複数の和信号保持レジスタに保持されている複数の和信号を構成する複数の1単位ビット長のデータおよび前記複数の桁上げ信号保持レジスタに保持されている複数の桁上げ信号を構成する複数の1単位ビット長のデータの出力先を前記複数の第1段加算器の複数の入力の複数のビット位置の中のいずれかに切り替え、または前記複数の和信号保持レジスタに保持されている複数の和信号および前記複数の桁上げ信号保持レジスタに保持されている複数の桁上げ信号を前記複数の第2段加算器の複数の入力のいずれかに切り替えるように構成される第2の接続切替器とを備える演算装置を提供する。
 本発明の第6態様においては、可変精度で乗算を実行する演算装置であって、2つの1単位ビット長のデータの乗算結果の1段前の2単位ビット長の第1の和信号および第1の桁上げ信号を出力するように構成された第1の乗算器と、2つの1単位ビット長のデータの乗算結果の1段前の2単位ビット長の第2の和信号および第2の桁上げ信号を出力するように構成された第2の乗算器と、複数の2単位ビット長のデータの加算結果の1段前の第3の和信号および第3の桁上げ信号を出力するように構成された第1の加算器と、複数の2単位ビット長のデータの加算結果の1段前の第4の和信号および第4の桁上げ信号を出力するように構成された第2の加算器と、前記第3の和信号、前記第3の桁上げ信号、前記第4の和信号、および前記第4の桁上げ信号をそれぞれ保持するように構成される第1~第4のレジスタと、入力される和信号と桁上げ信号とをそれぞれ加算するように構成される第3および第4の加算器と、前記第3の加算器の加算結果および前記第4の加算器の加算結果をそれぞれ出力する第1および第2の出力端子と、演算精度モードに応じて、前記第1の乗算器から出力される前記第1の和信号および前記第1の桁上げ信号と、前記第2の乗算器から出力される前記第2の和信号および前記第2の桁上げ信号とをそれぞれ構成する複数の1単位ビット長のデータの出力先を前記第1の加算器および前記第2の加算器の複数の入力の複数のビット位置の中のいずれかに切り替え、または前記第1の和信号および前記第1の桁上げ信号とを前記第3の加算器へ出力するととともに前記第2の和信号および前記第2の桁上げ信号とを前記第4の加算器へ出力するように構成された第1の接続切替器と、前記演算精度モードに応じて、前記第1のレジスタ内の前記第3の和信号、前記第2のレジスタ内の前記第3の桁上げ信号、前記第3のレジスタ内の前記第4の和信号、および前記第4のレジスタ内の前記第4の桁上げ信号をそれぞれ構成する複数の1単位ビット長のデータ出力先を前記第1の加算器および前記第2の加算器の複数の入力の複数のビット位置のいずれかに切り替え、または前記第1のレジスタ内の前記第3の和信号および前記第2のレジスタ内の前記第3の桁上げ信号とを前記第3の加算器へ出力するととともに前記第3のレジスタ内の前記第4の和信号および前記第4のレジスタ内の前記第4の桁上げ信号とを前記第4の加算器へ出力するように構成された第2の接続切替器とを備える演算装置を提供する。
 本発明の第7態様においては、可変精度で乗算を実行する演算装置であって、2つの1単位ビット長のデータの乗算結果の1段前の2単位ビット長の第1の和信号および第1の桁上げ信号を出力するように構成される第1の乗算器と、2つの1単位ビット長のデータの乗算結果の1段前の2単位ビット長の第2の和信号および第2の桁上げ信号を出力するように構成される第2の乗算器と、2つの1単位ビット長のデータの乗算結果の1段前の2単位ビット長の第3の和信号および第3の桁上げ信号を出力するように構成される第3の乗算器と、2つの1単位ビット長のデータの乗算結果の1段前の2単位ビット長の第4の和信号および第4の桁上げ信号を出力するように構成される第4の乗算器と、複数の2単位ビット長のデータの加算を実行するようにそれぞれ構成される第1~第4の加算器と、前記第1の加算器の第1の加算結果、前記第2の加算器の第2の加算結果、前記第3の加算器の第3の加算結果、および前記第4の加算器の第4の加算結果をそれぞれ保持するように構成される第1~第4のレジスタと、第1~第4の出力端子と、演算精度モードに応じて、前記第1の乗算器から出力される前記第1の和信号および前記第1の桁上げ信号と、前記第2の乗算器から出力される前記第2の和信号および前記第2の桁上げ信号と、前記第3の乗算器から出力される前記第3の和信号および前記第3の桁上げ信号と、前記第4の乗算器から出力される前記第4の和信号および前記第4の桁上げ信号とをそれぞれ構成する複数の1単位ビット長のデータの出力先を前記第1の加算器、前記第2の加算器、前記第3の加算器および前記第4の加算器の複数の入力の複数のビット位置のいずれかに切り替えるように構成される第1の接続切替器と、前記演算精度モードに応じて、前記第1のレジスタ内の前記第1の加算結果、前記第2のレジスタ内の前記第2の加算結果、前記第3のレジスタ内の前記第3の加算結果、および前記第4のレジスタ内の前記第4の加算結果をそれぞれ構成する複数の1単位ビット長のデータの出力先を前記第1の加算器、前記第2の加算器、前記第3の加算器、および前記第4の加算器の複数の入力の複数のビット位置のいずれかに切り替え、または前記第1のレジスタ内の前記第1の加算結果の出力先を前記第1の出力端子に切り替え、かつ前記第2のレジスタ内の前記第2の加算結果の出力先を前記第2の出力端子に切り替え、かつ前記第3のレジスタ内の前記第3の加算結果の出力先を前記第3の出力端子に切り替え、かつ前記第4のレジスタ内の前記第4の加算結果の出力先を前記第4の出力端子に切り替えるように構成される第2の接続切替器とを備える演算装置を提供する。
 本発明の第8態様においては、可変精度で乗算を実行する演算装置であって、2つの1単位ビット長のデータの乗算結果の1段前の2単位ビット長の第1の和信号および第1の桁上げ信号を出力するように構成される第1の乗算器と、2つの1単位ビット長のデータの乗算結果の1段前の2単位ビット長の第2の和信号および第2の桁上げ信号を出力するように構成される第2の乗算器と、2つの1単位ビット長のデータの乗算結果の1段前の2単位ビット長の第3の和信号および第3の桁上げ信号を出力するように構成される第3の乗算器と、2つの1単位ビット長のデータの乗算結果の1段前の2単位ビット長の第4の和信号および第4の桁上げ信号を出力するように構成される第4の乗算器と、複数の2単位ビット長のデータの加算結果の1段前の第5の和信号および第5の桁上げ信号を出力するように構成された第1の加算器と、複数の2単位ビット長のデータの加算結果の1段前の第6の和信号および第6の桁上げ信号を出力するように構成された第2の加算器と、複数の2単位ビット長のデータの加算結果の1段前の第7の和信号および第7の桁上げ信号を出力するように構成された第3の加算器と、複数の2単位ビット長のデータの加算結果の1段前の第8の和信号および第8の桁上げ信号を出力するように構成された第4の加算器と、前記第5の和信号、前記第5の桁上げ信号、前記第6の和信号、前記第6の桁上げ信号、前記第7の和信号、前記第7の桁上げ信号、前記第8の和信号、および前記第8の桁上げ信号をそれぞれ保持するように構成される第1~第8のレジスタと、入力される和信号と桁上げ信号とを加算するようにそれぞれ構成される第5~第8の加算器と、前記第5の加算器の加算結果、前記第6の加算器の加算結果、前記第7の加算器の加算結果、および前記第8の加算器の加算結果をそれぞれ出力する第1~第4の出力端子と、演算精度モードに応じて、前記第1の乗算器から出力される前記第1の和信号および前記第1の桁上げ信号と、前記第2の乗算器から出力される前記第2の和信号および前記第2の桁上げ信号と、前記第3の乗算器から出力される前記第3の和信号および前記第3の桁上げ信号と、前記第4の乗算器から出力される前記第4の和信号および前記第4の桁上げ信号とをそれぞれ構成する複数の1単位ビット長のデータの出力先を前記第1の加算器、前記第2の加算器、前記第3の加算器および前記第4の加算器の複数の入力の複数のビット位置のいずれかに切り替え、または前記第1の和信号および前記第1の桁上げ信号とを前記第5の加算器へ出力し、かつ前記第2の和信号および前記第2の桁上げ信号とを前記第6の加算器へ出力し、かつ前記第3の和信号および前記第3の桁上げ信号とを前記第7の加算器へ出力し、かつ前記第4の和信号および前記第4の桁上げ信号とを前記第8の加算器へ出力するように構成される第1の接続切替器と、前記演算精度モードに応じて、前記第1のレジスタ内の前記第5の和信号、前記第2のレジスタ内の前記第5の桁上げ信号、前記第3のレジスタ内の前記第6の和信号、前記第4のレジスタ内の前記第6の桁上げ信号、前記第5のレジスタ内の前記第7の和信号、前記第6のレジスタ内の前記第7の桁上げ信号、前記第7のレジスタ内の前記第8の和信号、および前記第8のレジスタ内の前記第8の桁上げ信号をそれぞれ構成する複数の1単位ビット長のデータの出力先を前記第1の加算器、前記第2の加算器、前記第3の加算器、および前記第4の加算器の複数の入力の複数のビット位置のいずれかに切り替え、または前記第1のレジスタ内の前記第5の和信号および前記第2のレジスタ内の前記第5の桁上げ信号とを前記第5の加算器へ出力し、かつ前記第3のレジスタ内の前記第6の和信号および前記第4のレジスタ内の前記第6の桁上げ信号とを前記第6の加算器へ出力し、かつ前記第5のレジスタ内の前記第7の和信号および前記第6のレジスタ内の前記第7の桁上げ信号とを前記第7の加算器へ出力し、かつ前記第7のレジスタ内の前記第8の和信号および前記第8のレジスタ内の前記第8の桁上げ信号とを前記第8の加算器へ出力するように構成された第2の接続切替器と備える演算装置を提供する。
 本発明の第9態様においては、上述の演算装置を複数個備える演算ユニットと、演算ユニットを共有する複数のプロセッサとを備える演算システムを提供する。
本実施形態に係る演算装置405の構成を示す。 本実施形態に係る演算装置405の半精度演算モードにおける演算を示す。 単精度の乗数A1および被乗数B1の乗算を示す。 本実施形態に係る演算装置405の単精度演算モードにおける演算を示す。 倍精度の乗数A1および被乗数B1の乗算を示す。 本実施形態の第1変形例に係る加算器540および中間レジスタ550の構成を示す。 本実施形態の第2変形例に係る演算装置1の構成を示す。 半精度演算モードにおける乗数Ai、被乗数Bi、およびこれらの積Ci(i=1~4)を示す。 第2変形例に係る演算装置1の半精度演算モードにおける動作を示す。 第2変形例の半精度演算モードにおける加算器4aの入出力を示す。 単精度演算モードにおける乗数Ai、被乗数Bi、およびこれらの積Ci(i=1~2)を示す。 第2変形例に係る演算装置1の単精度演算モードにおける動作を示す。 第2変形例の単精度演算モードにおける第1サイクルの加算器4a~bの入出力を示す。 第2変形例の単精度演算モードにおける第2サイクルの加算器4a~bの入出力を示す。 倍精精度演算モードにおける乗数A1、被乗数B1、およびこれらの積C1を示す。 第2変形例に係る演算装置1の単精度演算モードにおける動作を示す。 第2変形例の倍精度演算モードにおける第1サイクルの加算器4a~dの入出力を示す。 第2変形例の倍精度演算モードにおける第2サイクルの加算器4a~dの入出力を示す。 Wallace木乗算器2aの構成を示す。 Wallace木乗算器2aで生成されるデータを示す。 本実施形態の第3変形例に係る演算装置101の構成を示す。 第3変形例に係る演算装置101の半精度演算モードにおける動作を示す。 第3変形例の半精度演算モードにおける加算器4aの入出力を示す。 第3変形例に係る演算装置101の単精度演算モードにおける動作を示す。 第3変形例の単精度演算モードにおける第1サイクルの加算器14a~bの入出力を示す。 第3変形例の単精度演算モードにおける第2サイクルの加算器14a~bの入出力を示す。 第3変形例に係る演算装置101の倍精度演算モードにおける動作を示す。 第3変形例の倍精度演算モードにおける第1サイクルの加算器14a~bの入出力を示す。 第3変形例の倍精度演算モードにおける第1サイクルの加算器14c~dの入出力を示す。 第3変形例の倍精度演算モードにおける第2サイクルの加算器14a~bの入出力を示す。 第3変形例の倍精度演算モードにおける第2サイクルの加算器14c~dの入出力を示す。 2個のCSAを用いて桁上げ信号保留加算を実行する加算器200の構成を示す。 加算器200の入力データ、途中データ、出力データを示す。 4個のCSAを用いて桁上げ信号保留加算を実行する加算器300の構成を示す。 加算器300の入力データ、途中データ、出力データを表わす図である。 8個のCSAを用いて桁上げ信号保留加算を実行する加算器400の構成を示す。 本実施形態の第4変形例に係る演算システム1000の構成を示す。
 以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
 図1は、本実施形態に係る演算装置405の構成を示す。演算装置405は、可変精度で乗算を実行する。本実施形態においては、一例として演算装置405は、例えば13ビットである半精度の乗数および被乗数を乗算する半精度演算モード、例えば26ビットである単精度の乗数および被乗数を乗算する単精度演算モード、および、例えば52ビットである倍精度の乗数および被乗数を乗算する倍精度演算モードの3つの演算精度モードを有する。なお、説明の便宜上乗算される2つの数を「乗数」および「被乗数」と示すが、これらの間に実質的な相違はない。したがって、請求の範囲および明細書等に記載の「乗数」および「被乗数」を入れ換えた構成も、請求の範囲に係る発明の技術的範囲に属し、本明細書等に開示されたものである。
 ここで、半精度の数を表すのに用いられるビット長(例えば13ビット)を「1単位ビット長」と表したとすると、単精度の数は2単位ビット長となり、倍精度の数は4単位ビット長となる。乗数および被乗数の乗算は、乗数の各桁および被乗数の各桁の全ての組合せについて桁同士の乗算をした各乗算結果を適切な桁位置に加えていくことによって最終の積を得る計算であることに鑑みれば、半精度の数同士の乗算は1単位ビット長の数同士の乗算を1回、単精度の数同士の乗算は1単位ビット長の数同士の乗算を4回(2×2)、倍精度の数同士の乗算は1単位ビット長の数同士の乗算を16回(4×4)回行うものとなる。そして、n単位ビット長の数同士の乗算は、1単位ビット長の数同士の乗算をn×n回行うものとなる。なお、1単位ビット長は、演算装置405の設計に応じて任意の長さであってよい。
 本実施形態に係る演算装置405は、半精度演算モード、単精度演算モード、および倍精度演算モードの各演算精度モードにおいて、演算装置405が有する複数の乗算器を有効利用する。
 演算装置405は、乗算部410と、加算部430と、モード選択部460と、第1接続切替器470と、第2接続切替器480とを備える。乗算部410は、複数の乗算器420、すなわち例えば本実施形態においては4つの乗算器420-1~4を有する。複数の乗算器420は、各々が1単位ビット長の2つの数を入力し、これらを乗算して乗算結果を出力する。各乗算器420-i(k=1,2,3,4)は、1単位ビット長の入力データINik0およびINi1を入力し、2単位ビット長の乗算結果を出力する。
 加算部430は、複数の加算器440と、複数の中間レジスタ450とを有する。本実施形態においては、加算部430は、一例として4つの加算器440-1~4と、4つの中間レジスタ450-1~4とを有する。
 複数の加算器440は、各々が複数の乗算器420-1~4のうちの少なくとも1つの乗算器420による乗算結果を含む少なくとも2つの入力データを加算する。各加算器440-i(i=1,2,3,4)は、2単位ビット長の複数の入力データを加算して2単位ビット長の和、および演算精度モードに応じて上位桁への桁上りを出力する。ここで、加算器440は、乗算器420と同数設けられてよく、乗算器420の出力データと同じビット長(例えば2単位ビット長)の入力データを入力可能であってよい。
 複数の中間レジスタ450-i(i=1,2,3,4)は、複数の加算器440-1~4のそれぞれに対応してそれぞれ設けられる。各中間レジスタ450は、対応する加算器440が出力する加算結果を保持する。
 モード選択部460は、演算装置405が動作すべき演算精度モードを入力し、演算精度モードに応じて演算装置405の各部を制御する。ここで、モード選択部460は、演算装置405に接続されたプロセッサ等から演算精度モードの指定を受けて、指定された演算精度モードで動作するように演算装置405の各部を動的に制御してもよく、設定レジスタ等に設定された演算精度モードを受けて、その演算精度モードで固定的に動作するように演算装置405の各部を制御してもよい。
 モード選択部460は、演算精度モードに応じて、複数の乗算器420および複数の加算器440を、1以上の乗算器420および1以上の加算器440を含むグループ毎に分割する分割数を選択する。これらの1または複数のグループは、互いに異なる乗数および被乗数を乗算するために用いられる。このようなグループ分割により、複数の乗算器420は、演算精度モードに応じて1または2以上の乗算器420毎に分割されて1または複数のグループのそれぞれに割り当てられる。そして、各グループにおいて、各乗算器420は、演算精度モードに応じて当該グループに対する乗数の少なくとも一部の桁範囲(例えば1単位ビット長の桁範囲)である個別乗数および当該グループに対する被乗数の少なくとも一部の桁範囲(例えば1単位ビット長の桁範囲)である個別被乗数を乗算する。
 また、モード選択部460は、演算精度モードに応じて、グループにおいて1以上の乗算器420および1以上の加算器440を用いて乗数および被乗数を乗算するのに用いるサイクル数を選択する。ここで、上記のグループ分割により、複数の加算器440は、演算精度モードに応じて1または2以上の加算器440に分割されて1または複数のグループのそれぞれに割り当てられる。そして、各グループに割り当てられた1または2以上の加算器440は、当該グループに割り当てられた各乗算器420による各乗算結果を加算する。各グループに割り当てられた1または2以上の加算器440は、演算精度モードに応じて選択したサイクル数の間、各乗算結果を加算していく。各グループの1または2以上の加算器440に対応する1または2以上の中間レジスタ450は、サイクル毎の加算結果である中間結果における、各加算器440に対応する桁範囲をそれぞれ保持する。これにより、各グループに割り当てられた1または2以上の加算器440は、最終的に乗数および被乗数の積を得て、これを出力する。
 本実施形態に係るモード選択部460は、半精度演算モードにおいては、4つの乗算器420および4つの加算器440を、1つの乗算器420および1つの加算器440を含む4つのグループに分割し、互いに異なりうる4組の乗数および被乗数の乗算を、4つのグループで並列に行う。
 また、モード選択部460は、単精度演算モードにおいては、4つの乗算器420および加算器440を、2つの乗算器420および2つの加算器440を含む2つのグループに分割し、互いに異なりうる2組の乗数および被乗数の乗算を、2つのグループで並列に行う。この場合、各グループは、1サイクルに1単位ビット長の乗算を2つ実行することで、2サイクルを用いて1単位ビット長の乗算を4回行う単精度の乗算を実行することが可能となる。
 また、モード選択部460は、倍精度演算モードにおいては、4つの乗算器420および加算器440を1つのグループとし、1組の乗数および被乗数の乗算を1つのグループで行う。この場合、グループは、1サイクルに1単位ビット長の乗算を4つ実行することで、4サイクルを用いて1単位ビット長の乗算を16回行う倍精度の乗算を実行することが可能となる。
 第1接続切替器470は、モード選択部460の制御を受けて、演算精度モードに応じて、各乗算器420が出力する各乗算結果を各加算器440の各入力データにおけるどの桁位置へと伝送するかを切り替える。第1接続切替器470は、演算精度モードに応じて、1または複数のグループのそれぞれについて、各乗算器420による各乗算結果を、グループ内の1また2以上の加算器440における当該乗算結果を加えるべき桁位置へと入力させる。
 第2接続切替器480は、モード選択部460の制御を受けて、演算精度モードに応じて、1または複数のグループのそれぞれについて、サイクル毎に、グループ内の2以上の中間レジスタ450に保持された中間結果をシフトして、グループ内の2以上の加算器440へと入力させる。これにより、演算装置405は、各グループについて、サイクル毎に、上位側(または下位側)から下位側(または上位側)へと乗算器420毎の乗算結果を算出し、各サイクルにおいて乗算器420毎の乗算結果をグループの中間結果の下位側(または上位側)に加え、次のサイクルで中間結果を上位側(または下位側)にシフトしていくことによって、乗数および被乗数の積における適切な位置に各乗算結果を加えることができる。
 図2は、本実施形態に係る演算装置405の半精度演算モードにおける演算を示す。半精度演算モードにおいて、演算装置405は、半精度、すなわち1単位ビット長の4組の乗数Aiおよび被乗数Bi(i=1,2,3,4)をそれぞれ乗算して、1サイクルで4組の積Ciを出力する。
 半精度演算ノードにおいて、複数の乗算器420は、各々が1個の乗算器420を含む複数のグループに割り当てられる。本実施例においては、乗算器420-i(i=1,2,3,4)は、4つのグループに1つずつ割り当てられる。各乗算器420-iは、そのグループに割り当てられた1単位ビット長の乗数Aiおよび被乗数Biを入力データINi0およびINi1として入力し、これらを乗算して2単位ビット長の積Ciを出力する。
 半精度演算モードにおいて、第1接続切替器470は、各乗算器420-iの乗算結果である積Ciを、各乗算器420-iに対応する加算器440-iに入力する。各加算器440-iは、例えば他の入力データとして値0を入力して積Ciに加える等により、積Ciを変更せずに各中間レジスタ450-iに格納する。第2接続切替器480は、各中間レジスタ450-iに格納された積Ciを最終的な乗算結果OUTiとして出力する。
 図3は、単精度、すなわち2単位ビット長の乗数A1および被乗数B1の乗算を示す。乗数A1は、各々1単位ビット長の桁範囲である上位側の個別乗数A10および下位側の個別乗数A11に分けることができる。また、被乗数B1は、同様に上位側の個別乗数B10および下位側の個別乗数B11に分けることができる。ここで個別乗数および個別被乗数は、乗数および被乗数を、各乗算器420に対して入力可能なビット長の桁範囲毎に分割した数である。
 乗数A1および被乗数B1の乗算結果は、A10およびB10の乗算、A11およびB10の乗算、A10およびB11の乗算、並びに、A11およびB11の乗算の4つの乗算結果を、図示したようにそれぞれ適切な桁位置で加算することによって計算することができる。
 図4は、本実施形態に係る演算装置405の単精度演算モードにおける演算を示す。単精度演算モードにおいて、演算装置405は、単精度、すなわち2単位ビット長の2組の乗数Aiおよび被乗数Bi(i=1,2)をそれぞれ並行して乗算して、2サイクルで2組の積Ciを出力する。
 単精度演算モードにおいて、複数の乗算器420および加算器440は、各々が2個の乗算器420および2個の加算器440を含む複数のグループに割り当てられる。本実施例においては、乗算器420-1~2および加算器440-1~2が第1グループに割り当てられ、乗算器420-3~4および加算器440-3~4が第2グループに割り当てられる。演算装置405は、第iグループに対する2単位ビット長の乗数Aiおよび被乗数Biを入力し、これらを乗算して第iグループに対する4単位ビット長の積Ciを出力する。第1グループおよび第2グループの動作は、割り当てられる乗算器420、加算器440、および中間レジスタ450が異なる他は同様であるから、以下第1グループの動作を中心に説明する。
 単精度演算モードにおいて、演算装置405は、各グループにおいて図3に示した乗算方法を2サイクルで実現する。第1サイクルにおいて、演算装置405は、個別乗数A10およびA11のそれぞれと、個別被乗数B10との乗算およびこれに付随する加算を行う。
 第1サイクルにおいて、乗算器420-1は入力IN10にA10、入力IN11にB10を入力し、これらの積である部分積A10×B10を出力する。乗算器420-2は入力IN20にA11、入力IN21にB10を入力し、これらの積である部分積A11×B10を出力する。
 加算器440-1および加算器440-2は、組み合わされて4単位ビット長の加算器(「加算器Q」と示す。)として機能する。4単位ビット長の加算における加算器440-2から加算器440-1への桁上がりは、例えば桁上げ先見回路等によって生成され、加算器440-1へと供給されてよい。第1接続切替器470は、部分積A10×B10および部分積A11×B10のうち最下位側の部分積A11×B10が加算器Qの最下位側の桁範囲に対応するように、部分積A10×B10および部分積A11×B10をシフトして加算器Qに入力させる。すなわち、第1接続切替器470は、部分積A11×B10は、図中2および3と示した桁範囲へとシフトして加算器Qに入力させる。部分積A10×B10は部分積A11×B10よりも1単位ビット長分上位側に位置するので、第1接続切替器470は、部分積A10×B10を、図中1および2と示した桁範囲へとシフトして加算器Qに入力させる。この結果、加算器Qは、最下位の1単位ビット長の桁範囲3に部分積A11×B10の下位1単位ビット長の桁範囲、最下位から1単位ビット長分上位側の桁範囲2に部分積A10×B10の下位1単位ビット長の桁範囲および部分積A11×B10の上位1単位ビット長の桁範囲、最下位から2単位ビット長分上位側の桁範囲1に部分積A10×B10の上位1単位ビット長の桁範囲をそれぞれ入力して加算し、桁範囲1~3が乗数A1および個別被乗数B10の積である部分積A1×B10となる中間結果を出力する。加算器Qは、この部分積A1×B10を中間レジスタ450-1~2に格納する。
 第2サイクルにおいて、第2接続切替器480は、中間レジスタ450-1~2に格納された中間結果である部分積A1×B10を1単位ビット長分上位側にシフトして加算器Qに供給する。乗算器420-1~2および第1接続切替器470は、第1サイクルと同様にして部分積A10×B11および部分積A11×B11を算出し、これらの部分積を、最下位側の部分積A11×B11が加算器Qの最下位側の桁範囲に対応するように加算器Qに入力させる。加算器Qは、第2接続切替器480によってシフトされた部分積A1×B10と、第2サイクルに算出された部分積A10×B11およびA11×B11とを、桁範囲が正しく対応付けられた状態で入力して加算し、積A1×B1=C1を出力する。中間レジスタ450-1~2は積C1を保持し、第2接続切替器480は、中間レジスタ450-1~2に保持された積C1を第3サイクル以降にOUT1~2として出力する。
 図5は、倍精度、すなわち4単位ビット長の乗数A1および被乗数B1の乗算を示す。乗数A1は、上位側から順に各々1単位ビット長の個別乗数A10~A13に分けられる。被乗数B1は、上位側から順に各々1単位ビット長の個別被乗数B10~B13に分けられる。
 乗数A1および被乗数B1の乗算結果は、個別乗数A10~A13と、個別被乗数B10~B13との全組合せ(16組)の間の乗算結果をそれぞれ適切な桁位置で加算することによって計算することができる。ここで、最下位側からm単位ビット長分上位側にある個別乗数と、最下位側からn単位ビット長分上位側にある個別被乗数との乗算結果は、最下位側からm+n単位ビット長分上位側の桁位置において中間結果に加算される。
 倍精度演算モードにおいて、演算装置405は、倍精度、すなわち4単位ビット長の乗数A1およびB1を4サイクルで乗算して、積C1を出力する。倍精度モードにおいては、複数の乗算器420および加算器440は、1つのグループに割り当てられる。
 第1サイクルにおいて、乗算器420-1~4は、A10~A13をIN10~IN40に、B10をIN11~IN41のそれぞれに入力し、A10~A13のそれぞれと、B10との積である部分積A10×B10、A11×B10、A12×B10、およびA13×B10を出力する。
 加算器440-1~4は、組み合わされて8単位ビット長の加算器(「加算器O」と示す。)として機能する。2単位ビット長の加算における加算器440-iから加算器440-(i-1)への桁上がりは、例えば桁上げ先見回路等によって生成され、加算器440-(i-1)へと供給されてよい。単精度演算モードと同様に、第1接続切替器470は、部分積A10×B10~A13×B10のうち最下位側の部分積A13×B10が加算器Oの最下位側の桁範囲に対応するように、部分積A10×B10~A13×B10をシフトして加算器Oに入力させる。この結果、加算器Oは、最下位側の桁範囲6~7に部分積A13×B10を、最下位から1単位ビット長分上位側の桁範囲5~6に部分積A12×B10を、最下位から2単位ビット長分上位側の桁範囲4~5に部分積A11×B10を、最下位から1単位ビット長分上位側の桁範囲3~4に部分積A10×B10をそれぞれ入力して加算し、桁範囲3~7が乗数A1および個別被乗数B10の積である部分積A1×B10となる中間結果を出力する。加算器Oは、この部分積A1×B10を中間レジスタ450-1~4に格納する。
 第2サイクルにおいて、第2接続切替器480は、中間レジスタ450-1~4に格納された中間結果を1単位ビット長分上側にシフトして加算器Oに供給する。乗算器420-1~4および第1接続切替器470は、第1サイクルと同様にして部分積A10×B11~A13×B11を算出し、これらの部分積を、最下位側の部分積A13×B11が加算器Oの最下位側の桁範囲に対応するように加算器Oに入力させる。加算器Oは、第2接続切替器480によってシフトされた部分積A1×B10と、第2サイクルに算出された部分積A10×B11~A13×B11とを、桁範囲が正しく対応付けられた状態で入力して加算して、中間結果を出力する。加算器Oは、この中間結果を中間レジスタ450-1~4に格納する。
 第3~4サイクルにおいても、演算装置405は、第2サイクルと同様にして、中間レジスタ450-1~4に格納された中間結果を1単位ビット長分上側にシフトした値と、部分積A10×B12~A13×B12(第3サイクルの場合)または部分積A10×B13~A13×B13(第4サイクルの場合)とを加算して中間レジスタ450-1~4に格納する。これにより、第4サイクルにおいて、中間レジスタ450-1~4は積C1を格納する。第2接続切替器480は、中間レジスタ450-1~4に保持された積C1を第5サイクル以降にOUT1~4として出力する。
 以上に示したように、演算装置405は、上記の単精度演算モードおよび倍精度演算モードのような、2単位ビット長以上の乗数および被乗数を乗算する少なくとも1つの演算精度モードにおいて、複数の乗算器420、複数の加算器440、および複数の中間レジスタ450を1または複数のグループに分割し、各グループが並行して複数サイクルを用いてグループ毎の乗数および被乗数の積を算出する。各グループにおいて、1または2以上の乗算器420は、サイクル毎に、乗数のうち各乗算器420が担当する桁範囲の個別乗数と、被乗数におけるサイクル毎に上位桁から順に1単位ビット長ずつ選択された個別被乗数とを入力して、サイクル毎にそれぞれの個別乗数および個別被乗数の部分積を乗算結果として出力する。第1接続切替器470は、サイクル毎に、乗数における最下位側の桁範囲の個別乗数および個別被乗数の部分積が1または2以上の加算器440における最下位の桁範囲に対応するように、1または2以上の乗算器420が出力するそれぞれの部分積をシフトして1または2以上の加算器440に入力させて中間結果に加算させる。第2接続切替器480は、サイクル毎に、中間結果を上位側に1単位ビット長シフトさせて1または2以上の加算器440-1~4へと入力させる。
 上記の半精度演算モードのような、1単位ビット長の演算精度モードにおいて、複数の乗算器420は、1個ずつの乗算器420を含む複数のグループに割り当てられる。そして、演算装置405は、複数のグループのそれぞれについて乗数および被乗数の積を1サイクルで演算する。これにより、演算装置405は、複数の乗算器420のそれぞれで別々の乗算を行うことで、複数の乗算器420を有効利用することができる。
 上記の単精度演算モードのような、2単位ビット長以上の少なくとも1つの演算精度モードにおいて、複数の乗算器420および複数の加算器440は、2以上のグループに割り当てられる。そして、演算装置405は、2以上のグループのそれぞれについて乗数および被乗数の積を、複数のサイクルを用いて演算する。これにより、演算装置405は、複数の乗算器420を複数のグループに分割し、サイクル数を増やして個別乗数および個別被乗数の乗算結果を必要数得ることにより、より高精度の演算精度モードにおいても複数の乗算器420を有効活用することができる。
 上記の倍精度演算モードのような、2単位ビット長以上の少なくとも1つの演算精度モードにおいて、複数の乗算器420および複数の加算器440は、1つのグループに割り当てられる。そして、演算装置405は、1つのグループにおいて乗数および被乗数の積を、複数のサイクルを用いて演算する。これにより、演算装置405は、複数の乗算器420を1つのグループにまとめ、サイクル数を増やして個別乗数および個別被乗数の乗算結果を必要数得ることにより、さらに高精度の演算精度モードにおいても複数の乗算器420を有効活用することができる。
 本実施形態においては、モード選択部460は、n単位ビット長(nは自然数)の乗数および被乗数を乗算する演算精度モードにおいて、複数の乗算器420および複数の加算器440を、n個の乗算器420およびn個の加算器440をそれぞれ含む少なくとも1つのグループに分割する。例えば、半精度演算モード(n=1)においては、モード選択部460は、全体で4個の乗算器420(および4個の加算器440)を、1個の乗算器420(および1個の加算器440)をそれぞれ含む4つのグループに分割する。単精度演算モード(n=2)においては、モード選択部460は、全体で4個の乗算器420および4個の加算器440を、2個の乗算器420および2個の加算器440をそれぞれ含む2つのグループに分割する。倍精度演算モード(n=4)においては、モード選択部460は、全体で4個の乗算器420および4個の加算器440を、4個の乗算器420および4個の加算器440を含む1つのグループに分割する(割り当てる)。
 そして、各グループにおけるn個の乗算器420は、グループ毎の乗数に含まれる1単位ビット長の桁範囲ずつであるn個の個別乗数のそれぞれと、被乗数に含まれる1単位ビット長の桁範囲ずつであるn個の個別被乗数のそれぞれとの乗算を、nサイクルの間、1サイクルにn組ずつ乗算する。各グループにおけるn個の加算器440は組み合わされて、nサイクルの間、サイクル毎に同じグループのn個の乗算器420からの各乗算結果を、乗数および被乗数の積の中間結果における各乗算結果に応じた桁位置に加算していく。
 ここで、n単位ビット長の乗数および被乗数を乗算する演算精度モードにおいて、グループにn未満の乗算器420を割り当てたとしても、グループ内の加算器440は、組み合わされて2n単位ビット長の加算をする必要があるから、1サイクルで加算をするためにはグループにn個の加算器440を設ける必要がある。逆に、n単位ビット長の乗数および被乗数を乗算する演算モードにおいて、グループにnを越える乗算器420を割り当てた場合、1サイクルで加算をするためにはグループにn個の加算器440を設ければ十分であるが、より多くの乗算結果を加算する必要があるので加算器440により多くの入力を設ける必要がある。これに対し、本実施形態の構成によれば、複数の乗算器420に加えて加算器440も有効活用することができる。なお、加算器440の有効活用を重視しない場合には、モード選択部460は、他のグループ分割および異なるサイクル数での演算を行うようにしてもよい。
 また、本実施形態においては、第1接続切替器470は、各乗算器420からの乗算結果を1または2以上の加算器440の下位側の桁範囲に入力し、第2接続切替器480は、中間結果を上位側にシフトする構成をとる。これに代えて、第1接続切替器470は、各乗算器420からの乗算結果を1または2以上の加算器440の上位側の桁範囲に入力し、第2接続切替器480は、中間結果を下位側にシフトする構成をとってもよい。また、演算装置405は、第2接続切替器480を備えない構成を採用してもよく、この場合に第1接続切替器470は各乗算結果を、最終的な積における対応する桁範囲に加算できるようにサイクル毎に接続を切り替えるようにしてもよい。
 なお、本実施形態に係る演算装置405は、半精度演算モード、単精度演算モード、および倍精度演算モードの3つの演算精度モードを備える。これに代えて演算装置405は、任意の演算精度モードを備えてよい。また、演算装置405は、1単位ビット長の2のべき乗倍のビット長を有する数に応じた各演算モードを備える。演算装置405は、1単位ビット長の2のべき乗倍以外のビット長を有する数(例えば3単位ビット長等)に応じた演算モードを1または複数備えてもよい。このような演算モードにおいて、演算装置405は、一部の乗算器420および加算器440をアイドル状態としてもよい。また、演算装置405は、2のべき乗倍となる個数の乗算器420、加算器440、および中間レジスタ450を有するのに代えて、2のべき乗倍とならない個数(例えば6個)の乗算器420、加算器440、および中間レジスタ450を有する構成をとってもよい。
 図6は、本実施形態の第1変形例に係る加算器540および中間レジスタ550の構成を示す。第1変形例は、主に、図1から5に示した演算装置405における各加算器440を加算器540に、各中間レジスタ450を中間レジスタ550に変更したものであるから、以下演算装置405からの相違点を除いて説明を省略する。
 第1変形例においては、図1の各加算器440による加算を、桁上げ保存加算器(CSA:Carry Save Adder、「桁上げ保留加算器」とも示す。)を含む加算器540によって行う。加算器540は、第1加算要素542と、第2加算要素544とを含む。
 第1加算要素542は、第1接続切替器470を介して入力される1または複数の乗算器420からの1または複数の乗算結果、および第2接続切替器480を介して入力される中間結果における当該加算器540に対応する桁範囲等の各入力データを加算して、各桁の和データおよび各桁からの桁上げデータを含む加算結果を出力するCSAである。
 第2加算要素544は、各加算器540に対応して設けられる。演算精度モードに応じて複数の加算器540が1または2以上の加算器540毎に分割されるのに伴って、複数の第2加算要素544は、1または2以上の第2加算要素544毎に分割されて1または複数のグループのそれぞれに割り当てられる。第2加算要素544は、各グループにおいて1または2以上の第1加算要素542が出力する和データおよび桁上げデータを加算して乗数および被乗数の積として出力する。
 より具体的には、第2加算要素544は、中間レジスタ550に保持された和データおよび桁上げデータを加算してOUTx(x=1,2,3,4)として出力する。第2加算要素544は、各桁からの桁上がりを上位桁に加算して桁上がりを反映した和を出力する、桁上げ先見加算器および桁上げ伝搬加算器等の加算器である。第2加算要素544は、モード選択部460によるグループ分割に応じて、必要によりグループ内の下位側の第2加算要素544からの桁上げを受け取って加算し、および必要によりグループ内の上位側の第2加算要素544へと加算結果の桁上がりを伝搬させる。
 中間レジスタ550は、対応する第1加算要素542が出力する桁範囲の和データおよび桁上げデータを保持する。中間レジスタ550は、保持している和データおよび桁上げデータを第2加算要素544へと出力する。本変形例において、中間レジスタ550は、保持している和データおよび桁上げデータを第2加算要素544を介さずに第2接続切替器480経由で1または2以上の第1加算要素542へと供給する。これにより、本変形例に係る演算装置405は、最終的に乗数および被乗数の積を算出し終えるまでの各サイクルにおいて、桁上がりを反映した和を算出する必要がなくなるので、中間結果を算出する回路における回路遅延を低減することができる。
 また、演算装置405は、複数の乗算器420のそれぞれとして、個別乗数および個別被乗数を乗算して各桁の和データおよび各桁からの桁上げデータを含む乗算結果を出力する、ウォレス木(Wallece tree)を用いた乗算器を用いてもよい。各乗算器420および各加算器540としてCSAおよびウォレスツリー乗算器を用いることにより、演算装置405は、回路遅延を低減し、1サイクルに要する処理時間を短縮することができる。
 以下に、他の変形例について、図面を参照して説明する。なお、以下に示す変形例は、図1~6に示した実施形態またはその第1変形例と同一または類似の構成および機能を有するので、相違点を除いて説明を省略する場合がある。
 [第2変形例]
 図7は、第2変形例の演算装置1の構成を表わす。
 この演算装置1は、可変精度で乗算を実行する。演算装置1は、Wallace木乗算器2a~2d(乗算器420-1~4に対応)と、第1の接続切替器20(第1接続切替器470に対応)と、加算器4a~4d(加算器440-1~4に対応)と、レジスタ5a~5d(中間レジスタ450-1~4に対応)と、第2の接続切替器30(第2接続切替器480に対応)と、出力端子OP1~OP4と、スイッチ9b,9c,9dとを備える。
 演算装置1は、8個の入力(IN1~IN8)を受けて、4個の出力(OUT1~OUT4)を出力する。入力IN1~IN8は、1単位ビット長(13ビット)のデータであり、出力OUT1~OUT4は、2単位ビット長(26ビット)である。
 Wallace木乗算器2aは、入力データIN1と入力データIN2とを受けて、Wallace木に基づいて、桁上がり保留加算を複数回実行することによって、入力データIN1と入力データIN2との乗算結果の1段前の26ビットの和信号Dおよび桁上げ信号Eとを出力する。Wallace木乗算器2b~2dは、入力データおよび出力する信号が本図のように相違する他はWallace木乗算器2aと同様である。
 加算器4a~4dは、それぞれ、複数の26ビット長のデータの加算を実行する。
 レジスタ5a~5dは、それぞれ対応する加算器4a~4dの加算結果を保持する。
 第1の接続切替器20は、演算精度モードに応じて、Wallace木乗算器2a~2dから出力される和信号D、F、H、J、および桁上げ信号E、G、I、Kをそれぞれ構成する上位13ビットのデータ、下位13ビットのデータの出力先を加算器4a~4dの複数の入力の複数のビット位置(下位半分のビット位置または上位半分のビット位置)の中のいずれかに切り替える。第1の接続切替器20は、スイッチおよびシフタを有し、これらを制御することによって、上述の切替を実行する。
 第2の接続切替器30は、演算精度モードに応じて、レジスタ5a~5d内の複数の加算結果をそれぞれ構成する上位13ビットのデータ、下位13ビットのデータの出力先を加算器4a~4dの複数の入力の複数のビット位置(下位半分のビット位置または上位半分のビット位置)の中のいずれかに切り替え、またはレジスタ5a~5d内の加算器4a~4dの加算結果の出力先を出力端子OP1~4に切り替える。第2の接続切替器30は、スイッチおよびシフタを有し、これらを制御することによって、上述の切替を実行する。
 スイッチ9bは、加算器4bから加算器4aへ桁上りビットを送るか否かを切り替える。スイッチ9cは、加算器4cから加算器4bへ桁上りビットを送るか否かを切り替える。スイッチ9dは、加算器4dから加算器4cへ桁上りビットを送るか否かを切り替える。
 演算装置1は、半精度演算モード、単精度演算モード、および倍精度演算モードの複数の演算精度モードで動作する。以下では、各演算モードでの動作を説明する。
 (半精度演算モード)
 半精度演算モードでは、乗数および被乗数は、13ビットであり、積は、26ビットである。半精度演算モードでは、1サイクルで乗算が実行される。半精度演算モードでは、スイッチ9b~9dは、オフとなる。
 図8は、半精度演算モード時の第iの乗数Ai、第iの被乗数Bi、第iの積Ciを表わす(i=1,2,3,4)。図9は、第2変形例の演算装置1の半精度演算モードの動作を説明する。
 演算装置1は、第iの乗数Aiと第iの被乗数Biとを乗算して、第iの積Ciを出力する。Wallace木乗算器2aは、第1の乗数A1の全13ビットと、第1の被乗数B1の全13ビットとを受けたときに、和信号Dおよび桁上げ信号Eを出力する。Wallace木乗算器2b~2dは、入力および出力が本図のように相違する他はWallace木乗算器2aと同様に動作する。
 第1の接続切替器20によって、Wallace木乗算器2a~2dのそれぞれの出力(26ビットの和信号および26ビットの桁上げ信号)が、加算器4a~4dのうち対応する加算器に送られる。
 図10は、第2変形例の半精度演算モードにおける加算器4aの入力および出力を表わす。加算器4aは、第1の入力の全26ビットとして和信号Dの全26ビット{d25-d0}を、第2の入力の全26ビットとして桁上げ信号Eの全26ビット{e25-e0}をそれぞれ受ける。加算器4aの加算結果Lのうちの下位26ビット{l25-l0}がレジスタ5aに送られる。加算器4b~4dは、入力および出力が本図のように相違する他は加算器4aと同様に動作する。
 第2の接続切替器30は、レジスタ5a~d内のデータの出力先を出力端子OP1~4に切替える。これによって、出力端子OP1~4から、第1~4の積C1~4が出力される。
 (単精度演算モード)
 単精度演算モードでは、乗数および被乗数は、26ビットであり、積は、52ビットである。単精度演算モードでは、2サイクルで乗算が実行される。単精度演算モードでは、スイッチ9b,9dは、オンとなり、スイッチ9cは、オフとなる。
 図11は、単精度演算モード時の第iの乗数Ai、第iの被乗数Bi、および第iの積Ciを表わす(i=1,2)。図12は、第2変形例の演算装置1の単精度演算モードの動作を、主にi=1に関して説明する。なお、i=2に関する動作は、入力および出力が異なる他はi=1に関する動作と同様であるため説明を省略する。
 演算装置1は、第iの乗数Aiと第iの被乗数Biとを乗算して、第iの積Ciを出力する(i=1,2)。第iの乗数Aiの上位13ビットがAi0であり、下位13ビットがAi1である。第iの被乗数Biの上位13ビットがBi0であり、下位13ビットがBi1である。第iの積Ciの上位26ビットがCi0であり、下位26ビットがCi1である。
 まず、単精度演算モードにおける第1サイクルの計算手順を、主にi=1に関して説明する。
 Wallace木乗算器2aは、第1の乗数A1の上位13ビットA10と、第1の被乗数B1の上位13ビットB10とを受けたときに、和信号D(0)および桁上げ信号E(0)を出力する。Wallace木乗算器2bは、第1の乗数A1の下位13ビットA11と、第1の被乗数B1の上位13ビットB10とを受けたときに、和信号F(0)および桁上げ信号G(0)を出力する。
 第1の接続切替器20によって、Wallace木乗算器2a~2dの出力が、加算器4a~4dに送られる。第2の接続切替器30によって、レジスタ5a~5d内のデータが加算器4a~4dに送られる。
 すなわち、和信号D(0)の上位13ビットがシフタ6aに送られる。シフタ6aは、和信号D(0)の上位13ビットを下位へ13ビットだけシフトさせて、加算器4aの第1の入力の下位13ビット位置へ供給する。和信号D(0)の下位13ビットが加算器4bの第3の入力の上位13ビット位置へ送られる。桁上げ信号E(0)の上位13ビットがシフタ6bに送られる。シフタ6bは、桁上げ信号E(0)の上位13ビットを下位へ13ビットだけシフトさせて、加算器4aの第2の入力の下位13ビット位置へ供給する。桁上げ信号E(0)の下位13ビットが加算器4bの第2の入力の上位13ビット位置へ送られる。和信号F(0)の全26ビットが加算器4bの第3の入力の全26ビット位置へ供給される。桁上げ信号G(0)の全26ビットが加算器4bの第4の入力の全26ビット位置へ供給される。
 図13は、第2変形例の単精度演算モードにおける第1サイクルの加算器4a~bの入力および出力を表わす図である。
 加算器4aは、第1の入力の下位13ビット位置に、和信号D(0)の上位13ビット{d25(0)-d13(0)}を受ける。加算器4aは、第2の入力の下位13ビット位置に、桁上げ信号E(0)の上位13ビット{e25(0)-e13(0)}を受ける。加算器4aは、第3の入力の全26ビット位置に、シフタ7aから26ビット(全ビットが0)を受ける。加算器4aは、第4の入力の下位2ビット位置に、加算器4bの加算結果(28ビット)のうちの上位2ビットを受ける。
 加算器4aの加算結果L(0)のうちの下位26ビット{l25(0)-l0(0)}がレジスタ5aに送られる。
 加算器4bは、第1の入力の上位13ビット位置に、和信号D(0)の下位13ビット{d12(0)-d0(0)}を受ける。加算器4bは、第2の入力の上位13ビット位置に、桁上げ信号E(0)の下位13ビット{e12(0)-e0(0)}を受ける。
 加算器4bは、第3の入力の全26ビット位置に、和信号F(0)の全26ビット{f25(0)-f0(0)}を受ける。加算器4bは、第4の入力の全26ビット位置に、桁上げ信号G(0)の全26ビット{g25(0)-g0(0)}を受ける。加算器4bは、第5の入力の全26ビット位置に、シフタ7bから26ビット(全ビットが0)を受ける。
 加算器4bの加算結果M(0)のうちの下位26ビット{m25(0)-m0(0)}が第1の出力として、レジスタ5bに送られる。加算器4bの加算結果M(0)のうちの上位2ビットが第2の出力として、加算器4aの第4の入力の下位2ビット位置に送られる。
 次に、単精度演算モードにおける第2サイクルの計算手順を説明する。
 Wallace木乗算器2aは、第1の乗数A1の上位13ビットA10と、第1の被乗数B1の下位13ビットB11とを受けたときに、和信号D(1)および桁上げ信号E(1)を出力する。Wallace木乗算器2bは、第1の乗数A1の下位13ビットA11と、第1の被乗数B1の下位13ビットB11とを受けたときに、和信号F(1)および桁上げ信号G(1)を出力する。
 第1の接続切替器20によって、Wallace木乗算器2a~2dの出力が、加算器4a~4dに送られる。第2の接続切替器30によって、レジスタ5a~5d内のデータが加算器4a~4dに送られる。第1の接続切替器20は、信号D(1)~G(1)を、第1サイクルの信号D(0)~G(0)と同様にして加算器4a~bに送る。
 図14は、第2変形例の単精度演算モードにおける第2サイクルの加算器4a~bの入力および出力を表わす。加算器4aの第1~2および4の入力並びに出力と、加算器4bの第1~4の入力並びに出力とは、本図に示したように第1サイクルにおいて各入力に与えられた信号および出力される信号に対応する第2サイクルの信号であるから、相違点を除き説明を省略する。
 シフタ7aは、レジスタ5aに保持されている26ビット{l25(0)-l0(0)}を上位へ13ビットだけシフトさせる。シフタ7bは、レジスタ5bに保持されている26ビット{m25(0)-m0(0)}を上位へ13ビットだけシフトさせて、シフタ7bから溢れた13ビット{m25(0)-m13(0)}をシフタ7aの下位13ビット位置に送る。加算器4aは、第3の入力の全26ビット位置に、シフタ7aから26ビット{上位13ビット:l12(0)-l0(0)、下位13ビット:m25(0)-m13(0)}を受ける。
 加算器4bは、第5の入力の全26ビット位置に、シフタ7bから26ビット{上位13ビット:m12(0)-m0(0)、下位13ビット:全ビットが0}を受ける。
 第2の接続切替器30は、第2サイクルの終了後、レジスタ5a~d内のデータの出力先を出力端子OP1~4へ切り替える。これによって、出力端子OP1~4から、第1の積の上位26ビットC10、第1の積の下位26ビットC11、第2の積の上位26ビットC20、第2の積の下位26ビットC21が出力される。
 (倍精度演算モード)
 倍精度演算モードでは、乗数および被乗数は、52ビットであり、積は、104ビットである。倍精度演算モードでは、4サイクルで乗算が実行される。倍精度演算モードでは、スイッチ9b,9c,9dは、オンとなる。
 図15は、倍精精度演算モード時の乗数A1、および被乗数B1、積C1を表わす。図16は、第2変形例の演算装置1の倍精度演算モードの動作を説明する。
 図15および図16に示すように、演算装置1は、乗数A1と被乗数B1とを乗算して、積C1を出力する。乗数A1は、ビット位置が上位から順番に、第1~4ビット群(第1~4桁範囲)A10~A13に分割される。被乗数B1は、ビット位置が上位から順番に、第1~4ビット群(第1~4桁範囲)B10~B13に分割される。積C1は、ビット位置が上位から順番に、第1~4ビット群C10~C13に分割される。
 まず、倍精度演算モードにおける第1サイクルの計算手順を説明する。
 Wallace木乗算器2aは、乗数A1の第1ビット群A10と、被乗数B1の第1ビット群B10とを受けて、和信号D(0)および桁上げ信号E(0)を出力する。Wallace木乗算器2bは、乗数A1の第2ビット群A11と、被乗数B1の第1ビット群B10とを受けて、和信号F(0)および桁上げ信号G(0)を出力する。Wallace木乗算器2cは、乗数A1の第3ビット群A12と、被乗数B1の第1ビット群B10とを受けて、和信号H(0)および桁上げ信号I(0)を出力する。Wallace木乗算器2dは、乗数A1の第4ビット群A13と、被乗数B1の第1ビット群B10とを受けて、和信号J(0)および桁上げ信号K(0)を出力する。
 第1の接続切替器20によって、Wallace木乗算器2a~2dの出力が、加算器4a~4dに送られる。第2の接続切替器30によって、レジスタ5a~5d内のデータが加算器4a~4dに送られる。
 すなわち、和信号D(0)の上位13ビットが加算器4bの第1の入力の下位13ビット位置に送られる。和信号D(0)の下位13ビットが加算器4cの第1の入力の上位13ビット位置に送られる。桁上げ信号E(0)の上位13ビットが加算器4bの第2の入力の下位13ビット位置に送られる。桁上げ信号E(0)の下位13ビットが加算器4cの第2の入力の上位13ビット位置に送られる。和信号F(0)の全26ビットが加算器4cの第3の入力の全26ビット位置に供給される。桁上げ信号G(0)の全26ビットが加算器4cの第4の入力の全26ビット位置に供給される。和信号H(0)の上位13ビットが加算器4cの第5の入力の下位13ビット位置に送られる。和信号H(0)の下位13ビットが加算器4dの第1の入力の上位13ビット位置に送られる。桁上げ信号I(0)の上位13ビットが加算器4cの第6の入力の下位13ビット位置に送られる。桁上げ信号I(0)の下位13ビットが加算器4dの第2の入力の上位13ビット位置に送られる。和信号J(0)の全26ビットが加算器4dの第3の入力の全26ビット位置に供給される。桁上げ信号K(0)の全26ビットが加算器4dの第4の入力の全26ビットと位置に供給される。
 図17は、第2変形例の倍精度演算モードにおける第1サイクルの加算器4a~dの入力および出力を表わす図である。加算器4aは、第1の入力の全26ビット位置に、シフタ7aから26ビット(全ビットが0)を受ける。加算器4aは、第2の入力の下位2ビット位置に、加算器4bの加算結果M(0)(28ビット)のうちの上位2ビットを受ける。
 加算器4aの加算結果L(0)のうちの下位26ビット{l25(0)-l0(0)}がレジスタ5aに送られる。
 加算器4bは、第1の入力の下位13ビット位置に、和信号D(0)の上位13ビット{d25(0)-d13(0)}を受ける。加算器4bは、第2の入力の下位13ビット位置に、桁上げ信号E(0)の上位13ビット{e25(0)-e13(0)}を受ける。加算器4bは、第3の入力の全26ビット位置に、シフタ7bから26ビット(全ビットが0)を受ける。加算器4bは、第4の入力の下位2ビット位置に、加算器4cの加算結果N(0)(28ビット)のうちの上位2ビットを受ける。
 加算器4bの加算結果M(0)のうちの下位26ビット{m25(0)-m0(0)}が第1の出力として、レジスタ5bに送られる。加算器4bの加算結果M(0)のうちの上位2ビットが第2の出力として、加算器4aの第2の入力の下位2ビット位置に送られる。
 加算器4cは、第1の入力の上位13ビット位置に、和信号D(0)の下位13ビット{d12(0)-d0(0)}を受ける。加算器4cは、第2の入力の上位13ビット位置に、桁上げ信号E(0)の下位13ビット{e12(0)-e0(0)}を受ける。加算器4cは、第3の入力の全26ビット位置に、和信号F(0)の全26ビット{f25(0)-f0(0)}を受ける。加算器4cは、第4の入力の全26ビット位置に、桁上げ信号G(0)の全26ビット{g25(0)-g0(0)}を受ける。加算器4cは、第5の入力の下位13ビット位置に、和信号H(0)の上位13ビット{h25(0)-h13(0)}を受ける。加算器4cは、第6の入力の下位13ビット位置に、桁上げ信号I(0)の上位13ビット{i25(0)-i13(0)}を受ける。加算器4cは、第7の入力の全26ビット位置に、シフタ7cから26ビット(全ビットが0)を受ける。加算器4cは、第8の入力の下位2ビット位置に、加算器4dの加算結果O(0)(28ビット)のうちの上位2ビットを受ける。
 加算器4cの加算結果N(0)のうちの下位26ビット{n25(0)-n0(0)}が第1の出力として、レジスタ5cに送られる。加算器4cの加算結果N(0)のうちの上位2ビットが第2の出力として、加算器4bの第4の入力の下位2ビット位置に送られる。
 加算器4dは、第1の入力の上位13ビット位置に、和信号H(0)の下位13ビット{h12(0)-h0(0)}を受ける。加算器4dは、第2の入力の上位13ビット位置に、桁上げ信号I(0)の下位13ビット{i12(0)-i0(0)}を受ける。加算器4dは、第3の入力の全26ビット位置に、和信号J(0)の全26ビット{j25(0)-j0(0)}を受ける。加算器4dは、第4の入力の全26ビット位置に、桁上げ信号K(0)の全26ビット{k25(0)-k0(0)}を受ける。加算器4dは、第5の入力の全26ビット位置に、シフタ7dから26ビット(全ビットが0)を受ける。
 加算器4dの加算結果O(0)のうちの下位26ビット{o25(0)-o0(0)}が第1の出力として、レジスタ5dに送られる。加算器4dの加算結果O(0)のうちの上位2ビットが第2の出力として、加算器4cの第8の入力の下位2ビット位置に送られる。
 次に、倍精度演算モードにおける第2サイクルの計算手順を説明する。
 Wallace木乗算器2aは、乗数A1の第1ビット群A10と、被乗数B1の第2ビット群B11とを受けて、和信号D(1)および桁上げ信号E(1)を出力する。Wallace木乗算器2bは、乗数A1の第2ビット群A11と、被乗数B1の第2ビット群B11とを受けて、和信号F(1)および桁上げ信号G(1)を出力する。Wallace木乗算器2cは、乗数A1の第3ビット群A12と、被乗数B1の第2ビット群B11とを受けて、和信号H(1)および桁上げ信号I(1)を出力する。Wallace木乗算器2dは、乗数A1の第4ビット群A13と、被乗数B1の第2ビット群B11とを受けて、和信号J(1)および桁上げ信号K(1)を出力する。
 第1の接続切替器20によって、Wallace木乗算器2a~2dの出力が、加算器4a~4dに送られる。第2の接続切替器30によって、レジスタ5a~5d内のデータが加算器4a~4dに送られる。第1の接続切替器20は、信号D(1)~K(1)は、第1サイクルの信号D(0)~K(0)と同様にして加算器4a~dに送る。
 図18は、第2変形例の倍精度演算モードにおける第2サイクルの加算器4a~dの入力および出力を表わす。加算器4aの出力と、加算器4bの第1~2および4の入力並びに出力と、加算器4cの第1~6および8の入力並びに出力と、加算器4dの第1~4の入力および出力とは、本図に示したように第2サイクルにおいて各入力に与えられた信号および出力される信号に対応する第2サイクルの信号であるから、相違点を除いて説明を省略する。
 シフタ7aは、レジスタ5aに保持されている26ビット{l25(0)-l0(0)}を上位へ13ビットだけシフトさせる。シフタ7bは、レジスタ5bに保持されている26ビット{m25(0)-m0(0)}を上位へ13ビットだけシフトさせて、シフタ7bから溢れた13ビット{m25(0)-m13(0)}をシフタ7aの下位13ビット位置に送る。
 加算器4aは、第1の入力の全26ビット位置に、シフタ7aから26ビット{上位13ビット:l12(0)-l0(0)、下位13ビット:m25(0)-m13(0)}を受ける。
 シフタ7cは、レジスタ5cに保持されている26ビット{n25(0)-n0(0)}を上位へ13ビットだけシフトさせて、シフタ7cから溢れた13ビット{n25(0)-n13(0)}をシフタ7bの下位13ビット位置に送る。
 加算器4bは、第3の入力の全26ビット位置に、シフタ7bから26ビット{上位13ビット:m12(0)-m0(0)、下位13ビット:n25(0)-n13(0)}を受ける。加算器4bは、第4の入力の下位2ビット位置に、加算器4cの加算結果N(1)(28ビット)のうちの上位2ビットを受ける。
 シフタ7dは、レジスタ5dに保持されている26ビット{o25(0)-o0(0)}を上位へ13ビットだけシフトさせて、シフタ7dから溢れた13ビット{o25(0)-o13(0)}をシフタ7cの下位13ビット位置に送る。
 加算器4cは、第7の入力の全26ビット位置に、シフタ7cから26ビット{上位13ビット:n12(0)-n0(0)、下位13ビット:o25(0)-o13(0)}を受ける。
 加算器4dは、第5の入力の全26ビット位置に、シフタ7dから26ビット{上位13ビット:o12(0)-o0(0)、下位13ビット:全ビットが0}を受ける。
 加算器4dの加算結果O(1)のうちの下位26ビット{o25(1)-o0(1)}が第1の出力として、レジスタ5Dに送られる。加算器4dの加算結果O(1)のうちの上位2ビットが第2の出力として、加算器4cの第8の入力の下位2ビット位置に送られる。
 倍精度演算モードにおける第3サイクルにおけるWallace木乗算器2a~2dの入力は以下のように動作する。
 Wallace木乗算器2aは、乗数A1の第1ビット群A10と、被乗数B1の第3ビット群B12とを受けて、和信号D(2)および桁上げ信号E(2)を出力する。Wallace木乗算器2bは、乗数A1の第2ビット群A11と、被乗数B1の第3ビット群B12とを受けて、和信号F(2)および桁上げ信号G(2)を出力する。Wallace木乗算器2cは、乗数A1の第3ビット群A12と、被乗数B1の第3ビット群B12とを受けて、和信号H(2)および桁上げ信号I(2)を出力する。Wallace木乗算器2dは、乗数A1の第4ビット群A13と、被乗数B1の第3ビット群B12とを受けて、和信号J(2)および桁上げ信号K(2)を出力する。
 第3サイクルの以降の計算手順は、第2サイクルの計算手順と同様なので、説明を繰り返さない。
 倍精度演算モードにおける第4サイクルにおけるWallace木乗算器2a~2dの入力は以下のように動作する。
 Wallace木乗算器2aは、乗数A1の第1ビット群A10と、被乗数B1の第4ビット群B13とを受けて、和信号D(3)および桁上げ信号E(3)を出力する。Wallace木乗算器2bは、乗数A1の第2ビット群A11と、被乗数B1の第4ビット群B13とを受けて、和信号F(3)および桁上げ信号G(3)を出力する。Wallace木乗算器2cは、乗数A1の第3ビット群A12と、被乗数B1の第4ビット群B13とを受けて、和信号H(3)および桁上げ信号I(3)を出力する。Wallace木乗算器2dは、乗数A1の第4ビット群A13と、被乗数B1の第4ビット群B13とを受けて、和信号J(3)および桁上げ信号K(3)を出力する。
 第4サイクルの以降の計算手順は、第2サイクルの計算手順と同様なので、説明を繰り返さない。
 第2の接続切替器30は、第4サイクルの終了後、レジスタ5a~d内のデータの出力先を出力端子OP1~4に切替える。これによって、出力端子OP1~4から、積C1の第1~4ビット群C10~C13が出力される。
 図19は、Wallace木乗算器2aの構成を表わす。図20は、Wallace木乗算器2aで生成されるデータを表わす。
 Wallace木乗算器2aは、入力生成器79と、CSA(Carry Save Adder)51~CSA61とを備える。入力生成器79は、13ビットの入力IN1と、13ビットの入力IN2とから、各々13ビットのX0~X12を生成する。
 X0は、IN1と、IN2の第0ビット(LSB)との積である。IN2の第0ビットが0の場合に、X0の全ビットが0である。IN2の第0ビットが1の場合には、X0の全ビットは、IN1の全ビットと同じである。同様に、Xi(i=1~13)は、IN1と、IN2の第iビットとの積である。
 CSA51は、X1と、X2と、X3とを桁上げ信号保留加算して、和信号1Sと、桁上げ信号1Rとを出力する。CSA52は、X3と、X4と、X5とを桁上げ信号保留加算して、和信号2Sと、桁上げ信号2Rとを出力する。CSA53は、X6と、X7と、X8とを桁上げ信号保留加算して、和信号3Sと、桁上げ信号3Rとを出力する。CSA54は、X9と、X10と、X11とを桁上げ信号保留加算して、和信号4Sと、桁上げ信号4Rとを出力する。CSA55は、和信号1Sと、桁上げ信号1Rと、和信号2Sとを桁上げ信号保留加算して、和信号5Sと、桁上げ信号5Rとを出力する。CSA56は、桁上げ信号2Rと、和信号3Sと、桁上げ信号3Rとを桁上げ信号保留加算して、和信号6Sと、桁上げ信号6Rとを出力する。CSA57は、和信号4Sと、桁上げ信号4Rと、X12とを桁上げ信号保留加算して、和信号7Sと、桁上げ信号7Rとを出力する。CSA58は、和信号5Sと、桁上げ信号5Rと、和信号6Sとを桁上げ信号保留加算して、和信号8Sと、桁上げ信号8Rとを出力する。CSA59は、桁上げ信号6Rと、和信号7Sと、桁上げ信号7Rとを桁上げ信号保留加算して、和信号9Sと、桁上げ信号9Rとを出力する。CSA60は、和信号8Sと、桁上げ信号8Rと、和信号9Sとを桁上げ信号保留加算して、和信号10Sと、桁上げ信号10Rとを出力する。CSA61は、和信号10Sと、桁上げ信号10Rと、桁上げ信号9Rとを桁上げ信号保留加算して、和信号11Sと、桁上げ信号11Rとを出力する。和信号11SがWallace木乗算器2aから出力される和信号Dとなり、桁上げ信号11RがWallace木乗算器2aから出力される桁上げ信号Eとなる。
 加算器4a~4dも、複数のCSAを備え、Wallace木に基づいて、加算を実行するものであってもよい。
 以上のように、本変形例によれば、小さな回路規模で、半精度演算、単精度演算、または倍精度演算を実行することができる。
 [第3変形例]
 図21は、第3変形例の演算装置101の構成を表わす。
 この演算装置101は、Wallace木乗算器2a~2dと、第1の接続切替器120と、加算器14a~14dと、レジスタ15a~15dと、レジスタ25a~25dと、第2の接続切替器130と、加算器16a~16dと、出力端子OP1~OP4と、スイッチ161b~161d、151b~151dを備える。演算装置1は、第2変形例と同様に、8個の入力(IN1~IN8)を受けて、4個の演算結果(OUT1~OUT4)を出力する。
 第3変形例の演算装置101は、第2変形例の演算装置1における加算器4a~dを桁上げ保存加算器(CSA)としたものであり、第2変形例の演算装置1に対し、図1の実施形態から図6の第1変形例への変更と同様の変更を加えたものである。すなわち、演算装置1におけるレジスタ5a~5dは、和信号および桁上げ信号を別々に保持できるようにレジスタ15a~dおよびレジスタ25a~dに分けられている。また、レジスタ15a~dおよびレジスタ25a~dに保持される和信号および桁上げ信号を加算して最終的な積を算出するために、第1変形例の第2加算要素544に対応する加算器16a~dが設けられる。また、加算器4a~dをCSAとしたことに伴って、加算器4b~dからの桁上がりビットを上位側に送るか否かを切り替えるスイッチ9b~dは、和信号用のスイッチ161b~dおよび桁上げ信号用のスイッチ151b~dに分けられる。以下、第2変形例の演算装置1からの変更点を中心に、演算装置101の構成および動作を説明する。
 Wallace木乗算器2a~2dは、第2変形例と同様である。
 加算器14a~14dは、Wallace木に基づいて、複数の2単位ビット長のデータの加算結果の1段前の和信号および桁上げ信号を出力する。
 レジスタ15a~15dは、それぞれ対応する加算器14a~14dから出力される和信号を保持する。
 レジスタ25a~25dは、それぞれ対応する加算器14a~14dから出力される桁上げ信号を保持する。
 加算器16a~16dは、それぞれ入力される和信号と桁上げ信号とを加算する。
 出力端子OP1~OP4は、それぞれ加算器16a~16dの加算結果を出力する。
 第1の接続切替器120は、第2変形例と同様である。
 第2の接続切替器130は、第2変形例と同様に、レジスタ5a~dの各加算結果に代えて、レジスタ15aおよびレジスタ25aの和信号および桁上げ信号の組、レジスタ15bおよびレジスタ25bの和信号および桁上げ信号の組、レジスタ15cおよびレジスタ25cの和信号および桁上げ信号の組、レジスタ15dおよびレジスタ25dの和信号および桁上げ信号の組の出力先を切り替える。
 スイッチ161bは、加算器14bから加算器14aへ和信号の桁上りビットを送るか否かを切り替える。スイッチ161cは、加算器14cから加算器14bへ和信号の桁上りビットを送るか否かを切り替える。スイッチ161dは、加算器14dから加算器14cへ和信号の桁上りビットを送るか否かを切り替える。スイッチ151bは、加算器14bから加算器14aへ桁上げ信号の桁上りビットを送るか否かを切り替える。スイッチ151cは、加算器14cから加算器14bへ桁上げ信号の桁上りビットを送るか否かを切り替える。スイッチ151dは、加算器14dから加算器14cへ桁上げ信号の桁上りビットを送るか否かを切り替える。
 演算装置101は、第2変形例と同様に、半精度演算モード、単精度演算モード、および倍精度演算モードで動作する。以下では、各演算モードについて、第2変形例の演算装置1の動作との相違点を中心に動作を説明する。
 (半精度演算モード)
 図22は、第3変形例の演算装置101の半精度演算モードの動作を説明する。半精度演算モードでは、第1の接続切替器120によって、Wallace木乗算器2a~2dの出力が、加算器16a~16dに送られる。
 すなわち例えば、和信号Dの全26ビットが加算器16aの第1の入力の全26ビット位置に供給され、桁上げ信号Eの全26ビットが加算器16aの第2の入力の全26ビット位置に供給される。
 図23は、第3変形例の半精度演算モードにおける加算器16aの入力を表わす。
 加算器16aは、第1の入力の全26ビット位置に、和信号Dの全26ビット{d25-d0}を受ける。加算器16aは、第2の入力の全26ビット位置に、桁上げ信号Eの全26ビット{e25-e0}を受ける。加算器16aは、和信号Dの全26ビットと桁上げ信号Eの全26ビットとを加算して、第1の積C1として下位26ビットを出力する。加算器16b~dは、入力および出力が図22のように相違する他は加算器16aと同様に動作する。
 (単精度演算モード)
 図24は、第3変形例の演算装置101の単精度演算モードの動作を、主に乗数A1および被乗数B1の積C1を算出する動作における第2変形例との相違点を中心に説明する。図16のシフタ7a~dは、和信号および桁上げ信号をシフトするべくシフタ17a~dおよびシフタ27a~dに分けられる。
 図25は、第3変形例の単精度演算モードにおける第1サイクルの加算器14a~bの入力および出力を表わす。
 加算器14aの入力および出力は、第2変形例における加算器4aの入力および出力に対して、第3の入力が和信号の第3入力および桁上げ信号の第4の入力に分けられ、第4の入力が和信号の第5の入力および桁上げ信号の第6の入力に分けられ、出力が和信号の第1の出力および桁上げ信号の第2の出力に分けられたものとなる。加算器14aは、第3の入力の全26ビット位置に、シフタ17aから26ビット(全ビットが0)を受ける。加算器14aは、第4の入力の全26ビット位置に、シフタ27aから26ビット(全ビットが0)を受ける。加算器14aは、第5の入力の下位2ビット位置に、加算器14bの加算結果である和信号SM(28ビット)の上位2ビットを受ける。加算器14aは、第6の入力の下位2ビット位置に、加算器14bの加算結果である桁上げ信号RM(29ビット)の上位3ビットを受ける。
 加算器14aの加算結果である和信号SL(0)のうちの下位26ビット{Sl25(0)-Sl0(0)}が第1の出力として、レジスタ15aに送られる。加算器14aの加算結果である桁上げ信号RL(0)のうちの下位26ビット{Rl25(0)-Rl0(0)}が第2の出力として、レジスタ25aに送られる。
 加算器14bの入力および出力は、第2変形例における加算器4bの入力および出力に対して、第5の入力が和信号の第5の入力および桁上げ信号の第6の入力に分けられ、第1の出力が和信号の第1の出力および桁上げ信号の第2の出力に分けられ、第2の出力が和信号の第3の出力および桁上げ信号の第4の出力に分けられたものとなる。加算器14bは、第5の入力の全26ビット位置に、シフタ17bから26ビット(全ビットが0)を受ける。加算器14bは、第6の入力の全26ビット位置に、シフタ27bから26ビット(全ビットが0)を受ける。
 加算器14bの加算結果である和信号SM(0)のうちの下位26ビット{Sm25(0)-Sm0(0)}が第1の出力として、レジスタ15bに送られる。加算器14bの加算結果である和信号SM(0)のうちの上位2ビットが第3の出力として、加算器14aの第5の入力の下位2ビット位置に送られる。加算器14bの加算結果である桁上げ信号RM(0)のうちの下位26ビット{Rm25(0)-Rm0(0)}が第2の出力として、レジスタ25bに送られる。加算器14bの加算結果である桁上げ信号RM(0)のうちの上位3ビットが第4の出力として、加算器14aの第6の入力の下位3ビット位置に送られる。
 図26は、第3変形例の単精度演算モードにおける第2サイクルの加算器14a~bの入力および出力を表わす。加算器14a~bに対する信号の入力元は、第1サイクルと同様である。
 シフタ17aは、レジスタ15aに保持されている26ビット{Sl25(0)-Sl0(0)}を上位へ13ビットだけシフトさせる。シフタ17bは、レジスタ15bに保持されている26ビット{Sm25(0)-Sm0(0)}を上位へ13ビットだけシフトさせて、シフタ17bから溢れた13ビット{Sm25(0)-Sm13(0)}をシフタ17aの下位13ビット位置に送る。シフタ27aは、レジスタ25aに保持されている26ビット{Rl25(0)-Rl0(0)}を上位へ13ビットだけシフトさせる。シフタ27bは、レジスタ25bに保持されている26ビット{Rm25(0)-Rm0(0)}を上位へ13ビットだけシフトさせて、シフタ27bから溢れた13ビット{Rm25(0)-Rm13(0)}をシフタ27aの下位13ビット位置に送る。
 加算器14aは、第3の入力の全26ビット位置に、シフタ17aから26ビット{上位13ビット:Sl12(0)-Sl0(0)、下位13ビット:Sm25(0)-Sm13(0)}を受ける。加算器14aは、第4の入力の全26ビット位置に、シフタ27aから26ビット{上位13ビット:Rl12(0)-Rl0(0)、下位13ビット:Rm25(0)-Rm13(0)}を受ける。
 加算器14aは、第5の入力の下位2ビット位置に、加算器14bの加算結果である和信号SM(1)(28ビット)のうちの上位2ビットを受ける。加算器14aは、第6の入力の下位2ビット位置に、加算器14bの加算結果である桁上げ信号RM(1)(29ビット)のうちの上位3ビットを受ける。
 加算器14aの加算結果である和信号SL(1)のうちの下位26ビット{Sl25(1)-Sl0(1)}がレジスタ15aに送られる。加算器14aの加算結果である桁上げ信号RL(1)のうちの下位26ビット{Rl25(1)-Rl0(1)}がレジスタ25aに送られる。
 加算器14bは、第5の入力の全26ビット位置に、シフタ17bから26ビット{上位13ビット:Sm12(0)-Sm0(0)、下位13ビット:全ビットが0}を受ける。加算器14bは、第6の入力の全26ビット位置に、シフタ27bから26ビット{上位13ビット:Rm12(0)-Rm0(0)、下位13ビット:全ビットが0}を受ける。
 加算器14bの加算結果である和信号SM(1)のうちの下位26ビット{Sm25(1)-Sm0(1)}が第1の出力として、レジスタ15bに送られる。加算器14bの加算結果である和信号SM(1)のうちの上位2ビットが第3の出力として、加算器14aの第5の入力の下位2ビット位置に送られる。加算器14bの加算結果である桁上げ信号RM(1)のうちの下位26ビット{Rm25(1)-Rm0(1)}が第2の出力として、レジスタ25bに送られる。加算器14bの加算結果である桁上げ信号RM(1)のうちの上位3ビットが第4の出力として、加算器14aの第6の入力の下位3ビット位置に送られる。
 第2の接続切替器130は、第2サイクルの終了後、レジスタ15a~15d、25a~25d内のデータを加算器16a~16dのいずれかに出力する。
 レジスタ15aに保持されている和信号{Sl25(1)-Sl0(1)}と、レジスタ25aに保持されている桁上げ信号{Rl25(1)-Rl0(1)}とが加算器16aへ送られる。加算器16aは、加算を実行して、第1の積C1の上位26ビットC10を出力端子OP1へ出力する。加算器16bも同様にして、第1の積C1の下位26ビットC11を出力端子OP2へ出力する。ここで、加算器16bは、この加算に伴う桁上がりを加算器16aへと供給し、加算器16aはこの桁上がりを含めて上記の加算を行ってよい。
 (倍精度演算モード)
 図27は、第3変形例の演算装置101の倍精度演算モードの動作を、第2変形例との相違点を中心に説明する。
 図28Aおよび図28Bは、第3変形例の倍精度演算モードにおける第1サイクルの加算器14a~dの入力および出力を表わす。
 第2変形例のレジスタ5a~dを和信号用のレジスタ15a~dおよび桁上げ信号用のレジスタ25a~dに分けたことに伴い、第2変形例におけるシフタ7a~dから加算器4a~dへの入力が、シフタ17a~dから加算器14a~dへの和信号の入力およびシフタ27a~dから加算器14a~dへの桁上げ信号の入力に分けられる。また、加算器14a~dをCSAとしたことに伴い、下位桁からの桁上がりが和信号からの桁上がりおよび桁上げ信号からの桁上がりに分けられる。また、加算器4a~dの出力は、和信号および桁上げ信号に分けられる。これらの相違を除き、図28A~Bに示した加算器14a~dの入出力は、図17に示した加算器4a~dの入出力と同様である。
 加算器14aは、第1の入力の全26ビット位置に、シフタ17aから26ビット(全ビットが0)を受ける。加算器14aは、第2の入力の全26ビット位置に、シフタ27aから26ビット(全ビットが0)を受ける。加算器14aは、第3の入力の下位2ビット位置に、加算器14bの加算結果である和信号SM(0)(28ビット)のうちの上位2ビットを受ける。加算器14aは、第4の入力の下位3ビット位置に、加算器14bの加算結果である桁上げ信号RM(0)(29ビット)のうちの上位3ビットを受ける。
 加算器14aの加算結果である和信号SL(0)のうちの下位26ビット{Sl25(0)-Sl0(0)}がレジスタ15aに送られる。加算器14aの加算結果である桁上げ信号RL(0)のうちの下位26ビット{Rl25(0)-Rl0(0)}がレジスタ25aに送られる。
 加算器14bは、第3の入力の全26ビット位置に、シフタ17bから26ビット(全ビットが0)を受ける。加算器14bは、第4の入力の全26ビット位置に、シフタ27bから26ビット(全ビットが0)を受ける。加算器14bは、第5の入力の下位3ビット位置に、加算器14cの加算結果である和信号SN(0)(29ビット)のうちの上位3ビットを受ける。加算器14bは、第6の入力の下位4ビット位置に、加算器14cの加算結果である桁上げ信号RN(0)(30ビット)のうちの上位4ビットを受ける。
 加算器14bの加算結果である和信号SM(0)のうちの下位26ビット{Sm25(0)-Sm0(0)}が第1の出力として、レジスタ15bに送られる。加算器14bの加算結果である和信号SM(0)のうちの上位2ビットが第3の出力として、加算器14aの第3の入力の下位2ビット位置に送られる。加算器14bの加算結果である桁上げ信号RM(0)のうちの下位26ビット{Rm25(0)-Rm0(0)}が第2の出力として、レジスタ15bに送られる。加算器14bの加算結果である桁上げ信号RM(0)のうちの上位3ビットが第4の出力として、加算器14aの第4の入力の下位3ビット位置に送られる。
 加算器14cは、第7の入力の全26ビット位置に、シフタ17cから26ビット(全ビットが0)を受ける。加算器14cは、第8の入力の全26ビット位置に、シフタ27cから26ビット(全ビットが0)を受ける。加算器14cは、第9の入力の下位2ビット位置に、加算器14dの加算結果である和信号SO(0)(28ビット)のうちの上位2ビットを受ける。加算器14cは、第10の入力の下位3ビット位置、加算器14dの加算結果である桁上げ信号RO(0)(29ビット)のうちの上位3ビットを受ける。
 加算器14cの加算結果である和信号SN(0)のうちの下位26ビット{Sn25(0)-Sn0(0)}が第1の出力として、レジスタ15cに送られる。加算器14cの加算結果である和信号SN(0)のうちの上位3ビットが第3の出力として、加算器14bの第5の入力の下位3ビット位置に送られる。加算器14cの加算結果である桁上げ信号RN(0)のうちの下位26ビット{Rn25(0)-Rn0(0)}が第2の出力として、レジスタ25cに送られる。加算器14cの加算結果である桁上げ信号RN(0)のうちの上位4ビットが第4の出力として、加算器14bの第6の入力の下位4ビット位置に送られる。
 加算器14dは、第5の入力の全26ビット位置に、シフタ17dから26ビット(全ビットが0)を受ける。加算器14dは、第5の入力の全26ビット位置に、シフタ27dから26ビット(全ビットが0)を受ける。
 加算器14dの加算結果O(0)のうちの下位26ビット{o25(0)-o0(0)}が第1の出力として、レジスタ15dに送られる。加算器14dの加算結果O(0)のうちの上位2ビットが第2の出力として、加算器14cの第8の入力の下位2ビット位置に送られる。
 図29A~Bは、第3変形例の倍精度演算モードにおける第2サイクルの加算器14a~dの入出力を表わす図である。加算器14a~dに対する信号の入力元は、第2サイクルと同様である。
 シフタ17aは、レジスタ15aに保持されている26ビット{Sl25(0)-Sl0(0)}を上位へ13ビットだけシフトさせる。シフタ17bは、レジスタ15bに保持されている26ビット{Sm25(0)-Sm0(0)}を上位へ13ビットだけシフトさせて、シフタ17bから溢れた13ビット{Sm25(0)-Sm13(0)}をシフタ17aの下位13ビット位置に送る。シフタ27aは、レジスタ25aに保持されている26ビット{Rl25(0)-Rl0(0)}を上位へ13ビットだけシフトさせる。シフタ27bは、レジスタ25bに保持されている26ビット{Rm25(0)-Rm0(0)}を上位へ13ビットだけシフトさせて、シフタ27bから溢れた13ビット{Rm25(0)-Rm13(0)}をシフタ27aの下位13ビット位置に送る。
 加算器14aは、第1の入力の全26ビット位置に、シフタ17aから26ビット{上位13ビット:Sl12(0)-Sl0(0)、下位13ビット:Sm25(0)-Sm13(0)}を受ける。加算器14aは、第2の入力の全26ビット位置に、シフタ27aから26ビット{上位13ビット:Rl12(0)-Rl0(0)、下位13ビット:Rm25(0)-Rm13(0)}を受ける。加算器14aは、第3の入力の下位2ビット位置に、加算器14bの加算結果である和信号SM(1)(28ビット)のうちの上位2ビットを受ける。加算器14aは、第4の入力の下位3ビット位置に、加算器14bの加算結果である桁上げ信号RM(1)(29ビット)のうちの上位3ビットを受ける。
 加算器14aの加算結果である和信号SL(1)のうちの下位26ビット{Sl25(1)-Sl0(1)}がレジスタ15aに送られる。加算器14aの加算結果である桁上げ信号RL(1)のうちの下位26ビット{Rl25(1)-Rl0(1)}がレジスタ25aに送られる。
 シフタ17cは、レジスタ15cに保持されている26ビット{Sn25(0)-Sn0(0)}を上位へ13ビットだけシフトさせて、シフタ17cから溢れた13ビット{Sn25(0)-Sn13(0)}をシフタ17bの下位13ビット位置に送る。シフタ27cは、レジスタ25cに保持されている26ビット{Rn25(0)-Rn0(0)}を上位へ13ビットだけシフトさせて、シフタ27cから溢れた13ビット{Rn25(0)-Rn13(0)}をシフタ27bの下位13ビット位置に送る。
 加算器14bは、第3の入力の全26ビット位置に、シフタ17bから26ビット{上位13ビット:Sm12(0)-Sm0(0)、下位13ビット:Sn25(0)-Sn13(0)}を受ける。加算器14bは、第4の入力の全26ビット位置に、シフタ27bから26ビット{上位13ビット:Rm12(0)-Rm0(0)、下位13ビット:Rn25(0)-Rn13(0)}を受ける。加算器14bは、第5の入力の下位3ビット位置に、加算器14cの加算結果である和信号SN(1)(29ビット)のうちの上位3ビットを受ける。加算器14bは、第6の入力の下位4ビット位置に、加算器14cの加算結果である桁上げ信号RN(1)(30ビット)のうちの上位4ビットを受ける。
 加算器14bの加算結果である和信号SM(1)のうちの下位26ビット{Sm25(1)-Sm0(1)}が第1の出力として、レジスタ15bに送られる。加算器14bの加算結果である和信号SM(1)のうちの上位2ビットが第3の出力として、加算器14aの第3の入力の下位2ビット位置に送られる。加算器14bの加算結果である桁上げ信号RM(1)のうちの下位26ビット{Rm25(1)-Rm0(1)}が第2の出力として、レジスタ25bに送られる。加算器14bの加算結果である桁上げ信号RM(1)のうちの上位3ビットが第4の出力として、加算器14aの第4の入力の下位3ビット位置に送られる。
 シフタ17dは、レジスタ15dに保持されている26ビット{So25(0)-So0(0)}を上位へ13ビットだけシフトさせて、シフタ17dから溢れた13ビット{So25(0)-So13(0)}をシフタ17cの下位13ビット位置に送る。シフタ27dは、レジスタ25dに保持されている26ビット{Ro25(0)-Ro0(0)}を上位へ13ビットだけシフトさせて、シフタ27dから溢れた13ビット{Ro25(0)-Ro13(0)}をシフタ27cの下位13ビット位置に送る。
 加算器14cは、第7の入力の全26ビット位置に、シフタ17cから26ビット{上位13ビット:Sn12(0)-Sn0(0)、下位13ビット:So25(0)-So13(0)}を受ける。加算器14cは、第8の入力の全26ビット位置に、シフタ27cから26ビット{上位13ビット:Rn12(0)-Rn0(0)、下位13ビット:Ro25(0)-Ro13(0)}を受ける。加算器14cは、第9の入力の下位2ビット位置に、加算器14dの加算結果である和信号SO(1)(28ビット)のうちの上位2ビットを受ける。加算器14cは、第10の入力の下位3ビット位置に、加算器14dの加算結果である桁上げ信号RO(1)(29ビット)のうちの上位3ビットを受ける。
 加算器14cの加算結果である和信号SN(1)のうちの下位26ビット{Sn25(1)-Sn0(1)}が第1の出力として、レジスタ15cに送られる。加算器14cの加算結果である和信号SN(1)のうちの上位3ビットが第3の出力として、加算器14bの第5の入力の下位3ビット位置に送られる。加算器14cの加算結果である桁上げ信号RN(1)のうちの下位26ビット{Rn25(1)-Rn0(1)}が第2の出力として、レジスタ25cに送られる。加算器14cの加算結果である桁上げ信号RN(1)のうちの上位4ビットが第4の出力として、加算器14bの第6の入力の下位4ビット位置に送られる。
 加算器14dは、第5の入力の全26ビット位置に、シフタ17dから26ビット{上位13ビット:So12(0)-So0(0)、下位13ビット:全ビットが0}を受ける。加算器14dは、第6の入力の全26ビット位置に、シフタ27dから26ビット{上位13ビット:Ro12(0)-Ro0(0)、下位13ビット:全ビットが0}を受ける。
 加算器14dの加算結果である和信号SO(1)のうちの下位26ビット{So25(1)-So0(1)}が第1の出力として、レジスタ15dに送られる。加算器14dの加算結果である和信号SO(1)のうちの上位2ビットが第3の出力として、加算器14cの第9の入力の下位2ビット位置に送られる。加算器14dの加算結果である桁上げ信号RO(1)のうちの下位26ビット{Ro25(1)-Ro0(1)}が第2の出力として、レジスタ25dに送られる。加算器14dの加算結果である桁上げ信号RO(1)のうちの上位3ビットが第4の出力として、加算器14cの第10の入力の下位3ビット位置に送られる。
 倍精度演算モードにおける第3~4サイクルにおけるWallace木乗算器2a~2dの入力は第2変形例と同様である。第3~4サイクルの以降の計算手順は、第2サイクルの計算手順と同様なので、説明を繰り返さない。
 第2の接続切替器130は、第4サイクルの終了後、レジスタ15a~15d、25a~25d内のデータを加算器16a~16dのいずれかに出力する。
 レジスタ15aに保持されている和信号{Sl25(3)-Sl0(3)}と、レジスタ25aに保持されている桁上げ信号{Rl25(3)-Rl0(3)}とが加算器16aに送られる。加算器16aは、加算を実行して、積C1の第1ビット群C10を出力端子OP1へ出力する。加算器16b~dも同様にして、積C1の第2~4ビット群C11~C13を出力端子OP2~4へ出力する。ここで、加算器16b~dは、この加算に伴う桁上がりを上位側の加算器16a~cへ供給し、上位側の加算器16a~cはこの桁上がりを含めて上記の加算を行ってよい。
 次に、加算器14a~14dの具体的な構成例を説明する。
 半精度演算モードでは、加算器14a~dには、データが入力されない。すなわち、Wallace木乗算器2a~dから出力される和信号D、F、H、およびJと桁上げ信号E、G、I、およびKとが、加算器14a~dを迂回して、加算器16a~dに送られる。単精度演算モードでは、加算器14a~dは、順に、6入力2出力、6入力2出力+2桁上げ信号出力、6入力2出力、6入力2出力+2桁上げ信号出力の桁上げ信号保留加算を実行する。倍精度演算モードでは、加算器14a~dは、順に、4入力2出力、6入力2出力+2桁上げ信号出力、10入力2出力+2桁上げ信号出力、6入力2出力+2桁上げ信号出力の桁上げ信号保留加算を実行する。
 加算器14aは、4個のCSAを備える。加算器14aは、単精度演算モードでは、4個のCSAを用いて桁上げ信号保留加算を実行し、倍精度演算モードでは、2個のCSAを用いて桁上げ信号保留加算を実行する。
 加算器14bは、4個のCSAを備える。加算器14bは、単精度演算モードおよび倍精度演算モードでは、4個のCSAを用いて桁上げ信号保留加算を実行する。
 加算器14cは、8個のCSAを備える。加算器14cは、単精度演算モードでは、4個のCSAを用いて桁上げ信号保留加算を実行し、倍精度演算モードでは、8個のCSAを用いて桁上げ信号保留加算を実行する。
 加算器14dは、4個のCSAを備える。加算器14dは、単精度演算モードおよび倍精度演算モードでは、4個のCSAを用いて桁上げ信号保留加算を実行する。
 図30は、2個のCSAを用いて桁上げ信号保留加算を実行する加算器200の構成を表わす。この加算器200の構成は、加算器14aの倍精度演算モード時の構成である。図31は、加算器200の入力データ、途中データ、出力データを表わす。
 この加算器200には、4つのデータY0、Y1、Y2、Y3が入力される。
 CSA111は、Y0と、Y1と、Y2とを桁上げ信号保留加算して、和信号1Sと、桁上げ信号1Rとを出力する。CSA112は、Y3と、和信号1Sと、桁上げ信号1Rとを桁上げ信号保留加算して、和信号2Sと、桁上げ信号2Rとを出力する。
 和信号2Sの下位26ビットが一方のレジスタへ出力され、桁上げ信号2Rの下位26ビットが他方のレジスタへ出力される。
 図32は、4個のCSAを用いて桁上げ信号保留加算を実行する加算器300の構成を表わす図である。この加算器300の構成は、加算器14a~dの単精度演算モード時の構成、および加算器14b,dの倍精度演算モード時の構成である。図33は、加算器300の入力データ、途中データ、出力データを表わす図である。
 この加算器300には、6つのデータY0、Y1、Y2、Y3、Y4、Y5が入力される。
 CSA121は、Y0と、Y1と、Y2とを桁上げ信号保留加算して、和信号1Sと、桁上げ信号1Rとを出力する。CSA122は、Y3と、Y4と、Y5とを桁上げ信号保留加算して、和信号2Sと、桁上げ信号2Rとを出力する。CSA123は、和信号1Sと、桁上げ信号1Rと、和信号2Sとを桁上げ信号保留加算して、和信号3Sと、桁上げ信号3Rとを出力する。CSA124は、和信号3Sと、桁上げ信号3Rと、桁上げ信号2Rとを桁上げ信号保留加算して、和信号4Sと、桁上げ信号4Rとを出力する。
 和信号4Sの下位26ビットが一方のレジスタへ出力され、桁上げ信号4Rの下位26ビットが他方のレジスタへ出力される。桁上げ信号出力する場合には、和信号4Sの上位2ビットが他の加算器へ桁上げ信号出力され、桁上げ信号4Rの上位3ビットが他の加算器へ桁上げ信号出力される。
 なお、和信号1S、2S、桁上げ信号1R,2Rが生成された時点で、それらのパターンに従って、2ビットまたは3ビットの桁上げビットを生成して、加算器300から他の加算器へ出力するものとしてもよい。
 図34は、8個のCSAを用いて桁上げ信号保留加算を実行する加算器400の構成を表わす図である。この加算器400の構成は、加算器14cの倍精度演算モード時の構成である。この加算器400には、10個のデータY0~Y9が入力される。
 CSA131は、Y0と、Y1と、Y2とを桁上げ信号保留加算して、和信号1Sと、桁上げ信号1Rとを出力する。CSA132は、Y3と、Y4と、Y5とを桁上げ信号保留加算して、和信号2Sと、桁上げ信号2Rとを出力する。CSA133は、Y6と、Y7と、Y8とを桁上げ信号保留加算して、和信号3Sと、桁上げ信号3Rとを出力する。
 CSA134は、和信号1Sと、桁上げ信号1Rと、和信号2Sとを桁上げ信号保留加算して、和信号4Sと、桁上げ信号4Rとを出力する。CSA135は、Y9と、桁上げ信号2Rと、和信号3Sとを桁上げ信号保留加算して、和信号5Sと、桁上げ信号5Rとを出力する。CSA136は、和信号4Sと、桁上げ信号4Rと、和信号5Sとを桁上げ信号保留加算して、和信号6Sと、桁上げ信号6Rとを出力する。CSA137は、和信号6Sと、桁上げ信号3Rと、桁上げ信号5Rとを桁上げ信号保留加算して、和信号7Sと、桁上げ信号7Rとを出力する。CSA138は、桁上げ信号6Rと、和信号7Sと、桁上げ信号7Rとを桁上げ信号保留加算して、和信号8Sと、桁上げ信号8Rとを出力する。
 和信号8Sの下位26ビットが一方のレジスタへ出力され、桁上げ信号8Rの下位26ビットが他方のレジスタへ出力される。また、和信号8Sの上位3ビットが他の加算器へ桁上げ信号出力され、桁上げ信号8Rの上位4ビットが他の加算器へ桁上げ信号出力される。
 本実施の形態の演算装置によれば、加算器14a~14dは、加算結果の1段前の和信号および桁上げ信号を出力し、加算器16a~16dは、単精度演算では、2サイクルに1回だけ、倍精度演算では、4サイクルに1回だけ加算を実行すればよい。したがって、本実施の形態では、演算装置全体の動作速度および電力効率を第2変形例よりも増加させることができる。
 [第4変形例]
 図35は、第4変形例の演算システム1000の構成を表わす。この演算システム100は、演算ユニット900と、複数の要素プロセッサPE1~PE4とを備える。
 複数の要素プロセッサPE1~PE4は、演算ユニット900を共有して使用する。演算システム1000が行列演算を実行するときには、要素プロセッサPE1~PE4が協同して1つのプロセッサとして動作し、行列演算以外の演算を実行するときには、要素プロセッサPE1~PE4が個別のプロセッサとして動作する。演算システム1000が行列演算以外の演算を実行する際にも、要素プロセッサPE1~PE4が1つのプロセッサとして動作するものとしてもよい。要素プロセッサPE1~PE4が1つのプロセッサとして動作する場合、1つのインストラクションで要素プロセッサPE1~PE4が動作するので、要素プロセッサPE1~PE4は、SIMD動作を行っているとみなされうる。
 要素プロセッサPE1~PE4は、リング結合されている。具体的には、要素プロセッサPE1と要素プロセッサPE2とがデータバスで接続され、要素プロセッサPE2と要素プロセッサPE3とがデータバスで接続され、要素プロセッサPE3と要素プロセッサPE4とがデータバスで接続され、要素プロセッサPE4と要素プロセッサPE1とがデータバスで接続されている。要素プロセッサPE1~PE4には、要素プロセッサを一意に識別可能なプロセッサID(00,01,10,11)が設定されている。
 演算システム1000には、メモリ空間が設定されている。メモリ空間のメモリアドレスは、プロセッサIDを含む。たとえば、メモリアドレスの下位2ビットがプロセッサIDに対応するものとしてもよい。要素プロセッサPE1~PE4のそれぞれには、たとえば、10ビットのアドレスに対応するメモリ空間が割り当てられている。したがって、演算システム1000のメモリ空間は、12ビットに拡大されている。つまり、演算システム1000のメモリ空間が4等分され、各メモリアドレスによって示されるメモリ領域には、当該メモリアドレスに含まれるプロセッサIDによって示される要素プロセッサがアクセスする。
 要素プロセッサPE1~PE4のそれぞれは、当該要素プロセッサのプロセッサIDを含むメモリアドレスによって示されるメモリ領域(担当領域)へアクセスできるが、当該要素プロセッサのプロセッサIDとは異なるプロセッサIDを含むメモリアドレスによって示されるメモリ領域(非担当領域)へアクセスできない。要素プロセッサPE1~PE4のそれぞれは、リング結合を介して他の要素プロセッサに順にデータ転送(循環シフト)する。これにより、要素プロセッサPE1~PE4のそれぞれは、非担当領域のデータを読出し、または非担当領域にデータを書込むことができる。要素プロセッサPE1~PE4のそれぞれは、メモリアドレスによって示される領域に、演算ユニット900による演算対象である入力データ、および演算ユニット900による演算結果である出力データを保持する。
 演算ユニット900は、たとえば、複数の浮動小数点演算を並列して実行することができる。演算ユニット900は、たとえば、ディープニューラルネットワーク(DNN:Deep Neural Network)およびコンボリューションニューラルネットワーク(CNN:Convolutional Network)のための演算を実行することができる。
 演算ユニット900は、複数の演算装置1A~1Dを備える。演算装置1A~1Dのそれぞれは、実施形態で説明した演算装置405、第1変形例で説明した演算装置405、第2変形例で説明した演算装置1、または第3変形例で説明した演算装置101である。
 演算装置1A~1Dの各々は、演算ユニット900の演算の一部を実行する装置である。要素プロセッサPE1は、演算装置1Aのレジスタにアクセス可能である。要素プロセッサPE2は、演算装置1Bのレジスタにアクセス可能である。要素プロセッサPE3は、演算装置1Cのレジスタにアクセス可能である。要素プロセッサPE4は、演算装置1Dのレジスタにアクセス可能である。
 (他の変形例)
 本発明は、上記の実施形態に限定されるものではなく、たとえば以下のような変形例も含む。
 (1)上記の実施形態では、演算装置は、乗算(A*B)を実行しているが、A*B+Cを実行することも可能である。このためには、単精度演算の場合には、加算器4a、4c、14a,14cの第3の入力の初期値を0からCに変更すればよく、倍精度演算の場合には、加算器4a、14aの第1の入力の初期値を0からCに変更すればよい。半精度の場合にも、加算器4a~4d、14a~14dの使用されていない入力ポートにCを供給すればよい。
 (2)上記の実施形態では、浮動小数点形式のデータの仮数部分の演算回路を示しているが、固定小数点形式およびブロック浮動小数点形式のデータの演算回路としても適用可能である。また、これらの演算データ(浮動小数点形式、固定小数点形式、およびブロック浮動小数点形式)が混在したデータの演算回路としても適用可能である。
 今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
 1,1A~1D,101 演算装置、2a~2d Wallace木乗算器、4a~4d,14a~14d,16a~16d,200,300,400 加算器、5a~5d,15a~15d,25a~25d レジスタ、6a~6d,7a~7d,17a~17d,27a~27d シフタ、9b~9d,151b~151d,161b~161d スイッチ、20,120 第1の接続切替器、30,130 第2の接続切替器、51~61,111,112,121~124,131~138 CSA、79 入力生成器、900 演算ユニット、1000 演算システム、PE1~PE4 要素プロセッサ、OP1~OP4 出力端子、405 演算装置、410 乗算部、420-1~4 乗算器、430 加算部、440-1~4 加算器、450-1~4 中間レジスタ、460 モード選択部、470 第1接続切替器、480 第2接続切替器、540 加算器、542 第1加算要素、544 第2加算要素、550 中間レジスタ。

Claims (11)

  1.  可変精度で乗算を実行する演算装置であって、
     複数の乗算器を有し、前記複数の乗算器が演算精度モードに応じて1または2以上の乗算器毎に分割されて1または複数のグループのそれぞれに割り当てられ、各グループにおいて各乗算器が演算精度モードに応じて当該グループに対する乗数の少なくとも一部の桁範囲である個別乗数および当該グループに対する被乗数の少なくとも一部の桁範囲である個別被乗数を乗算する乗算部と、
     複数の加算器を有し、前記複数の加算器が演算精度モードに応じて1または2以上の加算器毎に分割されて前記1または複数のグループのそれぞれに割り当てられ、各グループに割り当てられた前記1または2以上の加算器が当該グループに割り当てられた各乗算器による各乗算結果を加算して前記乗数および前記被乗数の積を出力する加算部と、
     演算精度モードに応じて、前記1または複数のグループのそれぞれについて、各乗算器による各乗算結果を、前記1また2以上の加算器における当該乗算結果を加えるべき桁位置へと入力させる第1接続切替器と
     を備える演算装置。
  2.  前記複数の乗算器のそれぞれは、前記個別乗数および前記個別被乗数を乗算して各桁の和データおよび各桁からの桁上げデータを含む前記乗算結果を出力する請求項1に記載の演算装置。
  3.  前記複数の乗算器のそれぞれは、1単位ビット長の前記個別乗数および前記個別被乗数を乗算して2単位ビット長の前記乗算結果を出力し、
     前記複数の加算器のそれぞれは、2単位ビット長の複数の入力データを加算して2単位ビット長の和、および前記演算精度モードに応じて上位桁への桁上りを出力する
     請求項1または2に記載の演算装置。
  4.  2単位ビット長以上の前記乗数および前記被乗数を乗算する少なくとも1つの演算精度モードにおいて、
     前記1または複数のグループのそれぞれについて、
     前記1または2以上の乗算器は、サイクル毎に、前記乗数のうち各乗算器が担当する桁範囲の前記個別乗数と、前記被乗数におけるサイクル毎に上位桁から順に1単位ビット長ずつ選択された前記個別被乗数とを入力して、サイクル毎にそれぞれの前記個別乗数および前記個別被乗数の部分積を前記乗算結果として出力し、
     前記第1接続切替器は、サイクル毎に、前記乗数における最下位側の桁範囲の前記個別乗数および前記個別被乗数の前記部分積が前記1または2以上の加算器における最下位の桁範囲に対応するように、前記1または2以上の乗算器が出力するそれぞれの前記部分積をシフトして前記1または2以上の加算器に入力させて中間結果に加算させ、
     前記演算装置は、前記1または複数のグループのそれぞれについて、サイクル毎に、前記中間結果を上位側に1単位ビット長シフトさせて前記1または2以上の加算器へと入力させる第2接続切替器を更に備える
     請求項1から3のいずれか一項に記載の演算装置。
  5.  2単位ビット長以上の少なくとも1つの演算精度モードにおいて、前記複数の乗算器および前記複数の加算器は2以上のグループに割り当てられ、
     前記演算装置は、前記2以上のグループのそれぞれについて前記乗数および前記被乗数の積を、複数のサイクルを用いて演算する
     請求項4に記載の演算装置。
  6.  1単位ビット長の前記乗数および前記被乗数を乗算する演算精度モードにおいて、
     前記複数の乗算器は、各々が1個の乗算器を含む前記複数のグループに割り当てられ、
     各グループに割り当てられた乗算器は、当該グループに割り当てられた1単位ビット長の前記乗数および前記被乗数を乗算する
     請求項4または5に記載の演算装置。
  7.  前記加算部は、前記複数の加算器のそれぞれに対応してそれぞれ設けられ、前記中間結果における各加算器に対応する桁範囲をそれぞれ保持する複数の中間レジスタを有する請求項4から6のいずれか一項に記載の演算装置。
  8.  前記複数の加算器のそれぞれは、各桁の和データおよび各桁からの桁上げデータを含む加算結果を出力する第1加算要素を含み、
     前記複数の中間レジスタのそれぞれは、前記中間結果における対応する第1加算要素が出力する桁範囲の和データおよび桁上げデータを保持し、
     前記加算部は、前記複数の加算器のそれぞれに対応してそれぞれ設けられる複数の第2加算要素であって、演算精度モードに応じて1または2以上の第2加算要素毎に分割されて前記1または複数のグループのそれぞれに割り当てられ、各グループにおいて1または2以上の前記第1加算要素が出力する和データおよび桁上げデータを加算して前記乗数および前記被乗数の積として出力する複数の第2加算要素を更に有する
     請求項7に記載の演算装置。
  9.  可変精度で乗算を実行する演算装置であって、
     各々が1単位ビット長の2つの数を乗算して各桁の和データおよび各桁からの桁上がりデータを含む乗算結果を出力する複数の乗算器を有する乗算部と、
     各々が前記複数の乗算器のうちの少なくとも1つの乗算器による前記乗算結果を含む少なくとも2つの入力データを加算する複数の加算器を有する加算部と、
     演算精度モードに応じて、前記複数の乗算器および前記複数の加算器を、1以上の乗算器および1以上の加算器を含み互いに異なる乗数および被乗数を乗算するグループ毎に分割する分割数と、前記グループにおいて前記1以上の乗算器および前記1以上の加算器を用いて前記乗数および前記被乗数を乗算するのに用いるサイクル数とを選択するモード選択部と
     を備える演算装置。
  10.  前記モード選択部は、n単位ビット長(nは自然数)の前記乗数および前記被乗数を乗算する演算精度モードにおいて、前記複数の乗算器および前記複数の加算器を、n個の乗算器およびn個の加算器をそれぞれ含む少なくとも1つの前記グループに分割し、
     前記少なくとも1つのグループのそれぞれにおける前記n個の乗算器は、前記グループ毎の前記乗数に含まれる1単位ビット長の桁範囲ずつであるn個の個別乗数のそれぞれと、前記被乗数に含まれる1単位ビット長の桁範囲ずつであるn個の個別被乗数のそれぞれとの乗算を、nサイクルの間、1サイクルにn組ずつ乗算し、
     前記少なくとも1つのグループのそれぞれにおける前記n個の加算器は組み合わされて、nサイクルの間、サイクル毎に同じグループの前記n個の乗算器からの各乗算結果を、前記乗数および前記被乗数の積の中間結果における各乗算結果に応じた桁位置に加算していく、
     請求項9に記載の演算装置。
  11.  請求項1から10のいずれか一項に記載の演算装置を複数個備える演算ユニットと、
     前記演算ユニットを共有する複数のプロセッサと
     を備える演算システム。
PCT/JP2019/014330 2018-03-30 2019-03-29 演算装置および演算システム WO2019189878A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2020509352A JP7394462B2 (ja) 2018-03-30 2019-03-29 演算装置および演算システム
EP19776398.0A EP3779670A4 (en) 2018-03-30 2019-03-29 DEVICE AND SYSTEM OF ARITHMETIC OPERATIONS
CN201980024094.7A CN111971649A (zh) 2018-03-30 2019-03-29 运算装置和运算系统
US17/037,767 US20210011686A1 (en) 2018-03-30 2020-09-30 Arithmetic operation device and arithmetic operation system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018-069568 2018-03-30
JP2018069568 2018-03-30

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/037,767 Continuation US20210011686A1 (en) 2018-03-30 2020-09-30 Arithmetic operation device and arithmetic operation system

Publications (1)

Publication Number Publication Date
WO2019189878A1 true WO2019189878A1 (ja) 2019-10-03

Family

ID=68060301

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/014330 WO2019189878A1 (ja) 2018-03-30 2019-03-29 演算装置および演算システム

Country Status (5)

Country Link
US (1) US20210011686A1 (ja)
EP (1) EP3779670A4 (ja)
JP (1) JP7394462B2 (ja)
CN (1) CN111971649A (ja)
WO (1) WO2019189878A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022024080A (ja) * 2020-12-11 2022-02-08 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド ニューラルネットワークの積和演算方法及び装置
WO2023248309A1 (ja) * 2022-06-20 2023-12-28 日本電信電話株式会社 データ処理装置、データ処理プログラム、及びデータ処理方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112988111B (zh) * 2021-03-05 2022-02-11 唐山恒鼎科技有限公司 一种单比特乘法器
US20220365751A1 (en) * 2021-05-14 2022-11-17 Intel Corporation Compressed wallace trees in fma circuits
US20240111525A1 (en) * 2022-09-29 2024-04-04 Tenstorrent Inc. Multiplication hardware block with adaptive fidelity control system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01259273A (ja) 1988-04-08 1989-10-16 Tohoku Electric Power Co Inc 高圧系統への直流電圧印加装置
JPH0784762A (ja) * 1993-09-17 1995-03-31 Nippon Steel Corp 乗算回路
JPH1195981A (ja) * 1997-09-18 1999-04-09 Toshiba Corp 乗算回路
JP2000081966A (ja) * 1998-07-09 2000-03-21 Matsushita Electric Ind Co Ltd 演算装置
JP2003223316A (ja) * 2002-01-31 2003-08-08 Matsushita Electric Ind Co Ltd 演算処理装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4754421A (en) * 1985-09-06 1988-06-28 Texas Instruments Incorporated Multiple precision multiplication device
US5200912A (en) * 1991-11-19 1993-04-06 Advanced Micro Devices, Inc. Apparatus for providing power to selected portions of a multiplying device
US5764558A (en) * 1995-08-25 1998-06-09 International Business Machines Corporation Method and system for efficiently multiplying signed and unsigned variable width operands
US8307023B1 (en) * 2008-10-10 2012-11-06 Altera Corporation DSP block for implementing large multiplier on a programmable integrated circuit device
US8549055B2 (en) * 2009-03-03 2013-10-01 Altera Corporation Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry
US20120215825A1 (en) * 2011-02-22 2012-08-23 Mavalankar Abhay M Efficient multiplication techniques
JP6350111B2 (ja) * 2014-08-22 2018-07-04 富士通株式会社 乗算回路及びその乗算方法
US10037192B2 (en) * 2015-10-21 2018-07-31 Altera Corporation Methods and apparatus for performing product series operations in multiplier accumulator blocks
US10755169B2 (en) * 2017-10-17 2020-08-25 Mediatek Inc. Hybrid non-uniform convolution transform engine for deep learning applications

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01259273A (ja) 1988-04-08 1989-10-16 Tohoku Electric Power Co Inc 高圧系統への直流電圧印加装置
JPH0784762A (ja) * 1993-09-17 1995-03-31 Nippon Steel Corp 乗算回路
JPH1195981A (ja) * 1997-09-18 1999-04-09 Toshiba Corp 乗算回路
JP2000081966A (ja) * 1998-07-09 2000-03-21 Matsushita Electric Ind Co Ltd 演算装置
JP2003223316A (ja) * 2002-01-31 2003-08-08 Matsushita Electric Ind Co Ltd 演算処理装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022024080A (ja) * 2020-12-11 2022-02-08 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド ニューラルネットワークの積和演算方法及び装置
JP7320582B2 (ja) 2020-12-11 2023-08-03 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド ニューラルネットワークの積和演算方法及び装置
WO2023248309A1 (ja) * 2022-06-20 2023-12-28 日本電信電話株式会社 データ処理装置、データ処理プログラム、及びデータ処理方法

Also Published As

Publication number Publication date
CN111971649A (zh) 2020-11-20
JP7394462B2 (ja) 2023-12-08
EP3779670A4 (en) 2022-01-05
US20210011686A1 (en) 2021-01-14
JPWO2019189878A1 (ja) 2021-04-08
EP3779670A1 (en) 2021-02-17

Similar Documents

Publication Publication Date Title
WO2019189878A1 (ja) 演算装置および演算システム
CN110383237B (zh) 可重新配置的矩阵乘法器系统和方法
KR100291383B1 (ko) 디지털신호처리를위한명령을지원하는모듈계산장치및방법
US8078833B2 (en) Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
JP7361133B2 (ja) 深層学習アルゴリズムのための効率的なアーキテクチャ
US6609143B1 (en) Method and apparatus for arithmetic operation
JPS6347874A (ja) 算術演算装置
JP6308095B2 (ja) 演算回路及び演算回路の制御方法
US10853034B2 (en) Common factor mass multiplication circuitry
US20120278591A1 (en) Crossbar switch module having data movement instruction processor module and methods for implementing the same
US20180373678A1 (en) Outer product multipler system and method
US11907681B2 (en) Semiconductor device and method of controlling the semiconductor device
US20140289300A1 (en) Processor and processing method
JP2012209755A (ja) 演算回路及び2進数の変換方法
WO2018207926A1 (ja) 演算装置及び演算システム
US20020040427A1 (en) Single instruction multiple data processing
JP5116499B2 (ja) 演算処理回路
JPH05189585A (ja) 並列処理における条件付き演算制御回路
KR100900790B1 (ko) 재구성형 프로세서 연산 방법 및 장치
JP3982965B2 (ja) 繰り返し型乗算器とアレイ型乗算器
WO2021258954A1 (zh) 数据处理装置及数据处理方法
JPH08292876A (ja) 演算装置
JP2011180966A (ja) 積和演算器
JPS6152741A (ja) シフト機能付乗算回路
WO2020084694A1 (ja) 演算処理装置及び演算処理装置の制御方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19776398

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020509352

Country of ref document: JP

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2019776398

Country of ref document: EP

Effective date: 20201030