WO2019082511A1 - 演算装置及び車載制御装置 - Google Patents

演算装置及び車載制御装置

Info

Publication number
WO2019082511A1
WO2019082511A1 PCT/JP2018/032577 JP2018032577W WO2019082511A1 WO 2019082511 A1 WO2019082511 A1 WO 2019082511A1 JP 2018032577 W JP2018032577 W JP 2018032577W WO 2019082511 A1 WO2019082511 A1 WO 2019082511A1
Authority
WO
WIPO (PCT)
Prior art keywords
multiplier
multiplicand
register
bits
stored
Prior art date
Application number
PCT/JP2018/032577
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 DE112018004631.1T priority Critical patent/DE112018004631T5/de
Publication of WO2019082511A1 publication Critical patent/WO2019082511A1/ja

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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • 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/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Definitions

  • the present invention relates to programmable logic devices that include multipliers.
  • DNN Deep Neural Network
  • a programmable logic device such as an FPGA (Field-Programmable Gate Array) having high arithmetic performance per power consumption is preferable.
  • Patent Document 1 and Non-Patent Document 1 are known as techniques for increasing the computing capability of the computing device.
  • Patent Document 1 discloses a technique for realizing a pipeline of multiplication using a plurality of low-bit-number operators. Further, Non-Patent Document 1 discloses a technique for realizing two multiplications in parallel by one product-sum operation unit.
  • the multipliers of the FPGA are built in hardware, the reduction in the number of bits of the multiplications does not change the arithmetic capability of the multipliers and does not contribute to the reduction of the power consumption. Further, in the above Non-Patent Document 1, although two multiplications can be performed by one multiplier, there is a limitation that one multiplier c is shared for two multiplicands a and b, and parallelization of multiplications is possible. Is limited to a ⁇ c and b ⁇ c.
  • the present invention has been made in view of the above problems, and an object of the present invention is to execute a plurality of multiplications in parallel by one multiplier without being limited to one multiplier.
  • the present invention performs multiplication of a multiplier A, a multiplier B, a receiving unit for receiving a multiplicand a and a multiplicand b, a multiplier including the multiplier A and the multiplier B, and a multiplicand including the multiplicand a and the multiplicand b And an output unit for outputting a plurality of multiplication results from the operation result of the multiplier, wherein the multiplier multiplies the multiplicand a by the multiplier A and the multiplier B, and An operation of multiplying the multiplicand b by the multiplier A or the multiplier B is collectively performed.
  • FIG. 2 is a block diagram showing Embodiment 1 of the present invention and showing an example of a multiplier.
  • FIG. 7 shows the first embodiment of the present invention, and shows an example of a register of a multiplier. It is a figure which shows Example 1 of this invention, and shows the position which stores a multiplier and a multiplicand.
  • FIG. 7 shows the first embodiment of the present invention, and shows an example in which a multiplier is applied to a convolution operation.
  • FIG. 2 of this invention shows an example of a calculation apparatus for vehicle mounting.
  • FIG. 7 is a diagram illustrating Embodiment 2 of the present invention and illustrating an example of a register of a multiplier.
  • FIG. 7 shows the second embodiment of the present invention and shows an example in which a multiplier is applied to a convolution operation. It is a block diagram which shows Example 3 of this invention, and shows an example of a vehicle-mounted control apparatus.
  • FIG. 1 is a block diagram showing a first embodiment of the present invention and showing an example of an on-board arithmetic device.
  • an example in which an FPGA including a plurality of multipliers is adopted as the on-vehicle arithmetic device 1 is shown.
  • Arithmetic unit 1 receives n multiplicands a and b and n multipliers A and B to be operated and n multipliers 3 for executing three multiplications in parallel as will be described later. And -1 to 3-n, and output units 4-1 to 4-n for outputting the operation results of the multipliers 3-1 to 3-n.
  • reference numeral 3 is used in which "-" and the like are omitted. The same applies to the symbols of other components.
  • Arithmetic unit 1 includes programmable logic blocks and memory resources (not shown) in addition to n multipliers 3.
  • the receiving unit 2 and the output unit 4 can be configured by the above-described logic block or the like.
  • Arithmetic unit 1 stores a B register 31 storing multiplicands a and b, an AD register 35 storing multipliers A and B, a multiplication unit 36 multiplying the values of B register 31 and AD register 35, and a multiplication result. And P register 39.
  • the receiving unit 2 stores 4-bit multiplicands a and b in predetermined positions (bits) of the 18-bit B register 31. Further, the reception unit 2 stores 4-bit multipliers A and B in predetermined positions (bits) of the 25-bit AD register 35 using a pre-adder 34 described later.
  • the multiplication unit 36 multiplies the value of the B register 31 by the value of the AD register 35, and stores the calculation result in the 45-bit P register 39.
  • the reception unit 2 adjusts the storage positions of the multiplicands a and b and the multipliers A and B to obtain 8-bit operation results (b ⁇ A, a ⁇ A, b ⁇ A multiplication result including three B) can be obtained by one multiplication.
  • the operation result can be handled by 9 bits to which 1 code bit is added.
  • the sign bit of the operation result (b ⁇ B) of the upper bit can be included in 19 bits which are undefined in the figure.
  • the output unit 4 selects and outputs three 8-bit operation results stored at predetermined positions from the 45-bit operation results stored in the P register 39.
  • FIG. 2 is a block diagram showing an example of a detailed configuration of the multiplier 3.
  • the 18-bit B register 31 is connected to the multiplication unit 36.
  • a pre-adder 34, an A register 32 and a D register 33 are disposed at the front stage of the AD register 35 shown in FIG.
  • Each of the A register 32 and the D register 33 is composed of 25 bits.
  • the pre-adder 34 stores the addition result of the A register 32 and the D register 33 in the 25-bit AD register 35.
  • the reception unit 2 stores the multiplicands a and b in the B register 31, stores the constant B in the A register 32, and stores the multiplier B in the D register 33.
  • the pre-adder 34 outputs the addition result of the multipliers A and B to the AD register 35.
  • the multiplication unit 36 stores the result of multiplying the value of the B register 31 by the value of the AD register 35 in the M register 37.
  • the M register 37 is connected to the P register 39 through the ALU 38.
  • the ALU 38 outputs the contents of the M register 37 to the P register 39 as it is.
  • the width of the M register 37 and the P register 39 is 45 bits.
  • the reception unit 2 stores the multiplicands a and b in predetermined positions of the B register 31. Further, the reception unit 2 stores the multiplier B at a predetermined position of the A register 32 and stores the multiplier A at a predetermined position of the D register 33.
  • the multiplier 3 When values are set in the A register 32 and the D register 33, the multiplier 3 causes the pre-adder 34 to add.
  • the pre-adder 34 stores the addition result of the A register 32 and the D register 33 in the 25-bit wide AD register 35.
  • FIG. 3 is a diagram showing an example of each register of the multiplier 3.
  • the left side of the figure shows MSB (Most Significant Bit), and the right side shows LSB (Least Significant Bit).
  • the receiving unit 2 stores the 4-bit multiplicand b in the 0 to 3 bits on the LSB side of the B register 31. Furthermore, the reception unit 2 stores the 4-bit multiplicand a in the 9 to 12 bits on the MSB side of the B register 31. Note that the receiving unit 2 sets 0 in the other bits (4 to 8, 13 to 17) of the B register 31 except for the bits storing the multiplicands a and b.
  • the receiving unit 2 stores the 4-bit multiplier A in the 0 to 3 bits on the LSB side of the D register 33. Furthermore, the reception unit 2 stores the 4-bit multiplier B in the 18 to 21 bits on the MSB side of the A register 32.
  • the accepting unit 2 sets 0 in the other bits (4 to 24) of the D register 33 except for the bit storing the multiplier A. Further, the reception unit 2 sets 0 to the other bits (0 to 17 and 22 to 24) of the A register 32 except the bit storing the multiplier B.
  • the multiplier A is stored in the LSB side 0 to 3 bits of the AD register 35
  • the multiplier B is stored in the MSB side 18 to 21 bits of the AD register 35.
  • 0 is set to the other bits (4 to 17 and 22 to 24) other than the bits storing the multipliers A and B of the AD register 35.
  • the multiplier result by the multiplication unit 36 is stored in bits 0 to 26 of the P register 39.
  • the value of multiplicand b ⁇ multiplier A is stored in bits 0 to 7 of P register 39. Eight bits of the P register 39 can be used as a sign bit of the b ⁇ A multiplication result.
  • the value of multiplicand a ⁇ multiplier A is stored in 9 to 16 bits of the P register 39.
  • the 17 bits of the P register 39 can be used as the sign bit of the a ⁇ A multiplication result.
  • the value of multiplicand b ⁇ multiplier B is stored in the 18th to 25th bits of the P register 39.
  • the 26 bits of the P register 39 can be used as the sign bit of the b ⁇ B multiplication result.
  • the multiplication unit 36 can perform b ⁇ A by one multiplication. And three calculation results of a ⁇ A and b ⁇ B can be obtained.
  • the output unit 4 selects 0 to 7 bits of the P register 39 as the operation result of b ⁇ A, selects 9 to 16 bits as the operation result of a ⁇ A, and 18 to 25 bits of the multiplication result of b ⁇ B. It can be selected and output.
  • three multiplication results (b ⁇ A, a ⁇ A, b ⁇ B) are multiplied by one from four values of the multiplicands a and b and the multipliers A and B. It becomes possible to obtain.
  • three multiplication results can be calculated in parallel with desired multipliers A and B without being limited to one multiplier c as in the conventional example.
  • FIG. 4 is a diagram showing positions where multipliers and multiplicands are stored in each register of the multiplier 3.
  • FIG. 3 shows an example in which the multiplicand and the multiplier are 4 bits
  • FIG. 4 shows that the D register 33, the A register 32, and the B register 31 have the multiplicand when the number of bits of the multiplicand and the multiplier is X bits. And indicate the position to set the multiplier.
  • the reception unit 2 sets the multiplier A to 0 to X-1 bits on the LSB side.
  • the receiving unit 2 sets the multiplier B from 2 ⁇ (2 ⁇ + 1) bits on the MSB side.
  • the reception unit 2 sets the multiplicand b to 0 to X-1 bits on the LSB side, and sets the multiplicand a from 2X + 1 bits on the MSB side.
  • b ⁇ A and a code bit are stored in 0 to 2X bits on the LSB side, and a ⁇ A and a code bit are stored in 9 to 2 ⁇ (2X bit + 1) ⁇ 1.
  • B ⁇ B and code bits are stored in 2 ⁇ (2 ⁇ bits + 1) to 3 ⁇ (2 ⁇ bits + 1) ⁇ 1.
  • the reception unit 2 stores the multiplier A from the least significant bit in the AD register 35 (first register), stores the multiplier B from the position of 4 ⁇ + 2 bits from the least significant bit, and the B register 31 (second Registers the multiplicand b from the least significant bit, and stores the multiplicand a from the least significant bit to a position of 2 ⁇ + 1 bits.
  • multipliers A and B may be set in either the D register 33 or the A register 32.
  • FIG. 5 is a diagram showing an example in which the multiplier 3 is applied to a convolution operation.
  • the illustrated example shows an example in which the image and the filter are multiplied in a sliding window.
  • the images a and b before the slide and the multipliers A and B of the filter are calculated by the multiplier 3-1, and the images c and d after the slide and the multipliers B and C of the filter are calculated by the multiplier 3-2.
  • An example will be shown in which the results before sliding and the results after sliding are output by the adders 5-1 and 5-2 arranged at the subsequent stage of the multiplier 3.
  • the adders 5-1 and 5-2 show an example included in the output unit 4.
  • the multiplier 3-1 receives the images a and b as multiplicands, receives the filters A and B as multipliers, and executes multiplication. Similar to FIG. 3, the multiplier 3-1 calculates a ⁇ A, b ⁇ B and b ⁇ A as multiplication results.
  • the multiplier 3-2 receives the images c and d as multiplicands, receives the filters B and C as multipliers, and executes multiplication.
  • the multiplier 3-2 calculates c ⁇ B, d ⁇ C and c ⁇ C as multiplication results.
  • the multiplier 3-1 outputs a ⁇ A and b ⁇ B to the adder 5-1.
  • the multiplier 3-2 outputs c ⁇ C to the adder 5-1.
  • the adder 5-1 outputs the result (a ⁇ A, b ⁇ A, c ⁇ C) of the convolution operation before sliding.
  • the multiplier 3-2 outputs c ⁇ B and d ⁇ C to the adder 5-2.
  • the multiplier 3-1 outputs b ⁇ A to the adder 5-2.
  • the adder 5-2 outputs the result (b ⁇ A, c ⁇ B, d ⁇ C) of the convolution operation after sliding.
  • the convolution operation can be efficiently performed. Then, since three multiplication results can be calculated in parallel by one multiplier, the number of multipliers 3 used in the arithmetic device 1 that executes the convolution operation can be reduced, and power consumption can also be reduced. be able to.
  • the multiplication unit 36 adds the values to the B register 31.
  • the receiving unit 2 directly accesses the AD register 35 to store the multipliers A and B as described above, and stores the multiplicands a and b, the B register 31 and the multipliers A and B.
  • the multiplication unit 36 may calculate the product of the AD register 35 for storing.
  • the multiplier 3 collectively executes the operation of multiplying the multiplicand a by the multiplier A and the operation of multiplying the multiplicand b by the multiplier A and the multiplier B simultaneously to obtain three multiplication results.
  • B ⁇ A, a ⁇ A, b ⁇ B can be obtained, and a plurality of multiplications can be executed in parallel by one multiplier without being limited to one multiplier.
  • FIG. 6 and 7 show a second embodiment of the present invention and is a block diagram showing an example of the on-vehicle arithmetic device 1.
  • the storage position of the multiplier B in the A register 32 (AD register 35) is stored at a position different from that of the first embodiment, and the other configuration is the same as that of the first embodiment.
  • the reception unit 2 of the second embodiment stores the multiplier B from the 9th bit (2X + 1) on the LSB side of the A register 32, as shown in FIG.
  • the pre-adder 34 adds the A register 32 and the D register 33 and stores the operation result in the AD register 35 as shown in FIG.
  • the multiplier 36 calculates the product of the B register 31 and the AD register 35 as in the first embodiment, and stores the operation result in the P register 39 via the M register 37.
  • the second embodiment is different from the first embodiment in that b ⁇ A + c ⁇ B can be calculated instead of a ⁇ A of the first embodiment.
  • the receiving unit 2 sets the multiplicands b and c in the B register 31, sets the multiplier B in the A register 32, and sets the multiplier A in the D register 33.
  • the reception unit 2 stores the 4-bit multiplicand c in the 0 to 3 bits on the LSB side of the B register 31. Furthermore, the receiving unit 2 stores the 4-bit multiplicand b in the 9 to 12 bits on the MSB side of the B register 31 as in the first embodiment. Note that the receiving unit 2 sets 0 to the other bits (4 to 8, 13 to 17) of the B register 31 except for the bits storing the multiplicands b and c.
  • the reception unit 2 stores the 4-bit multiplier A in 0 to 3 bits on the LSB side of the D register 33. Furthermore, the reception unit 2 stores the 4-bit multiplier B in 9 to 12 bits from the LSB side of the A register 32.
  • the accepting unit 2 sets 0 in the other bits (4 to 24) of the D register 33 except for the bit storing the multiplier A. Further, the reception unit 2 sets 0 in the other bits (0 to 8, 13 to 24) of the A register 32 except the bit storing the multiplier B.
  • the multiplier A is stored in the 0 to 3 bits on the LSB side of the AD register 35, and the multiplier B is stored in the 9 to 12 bits of the AD register 35.
  • the receiving unit 2 stores the multiplier A from the least significant bit in the AD register 35 (first register), stores the multiplier B from the position of 2X + 1 bits from the least significant bit, and the B register 31 (second Registers the multiplicand b from the least significant bit, and stores the multiplicand a from the least significant bit to a position of 2 ⁇ + 1 bits.
  • the multiplier result by the multiplication unit 36 is stored in bits 0 to 26 of the P register 39.
  • the value of multiplicand c ⁇ multiplier A is stored in bits 0 to 7 of P register 39. Eight bits of the P register 39 can be used as a sign bit of the b ⁇ A multiplication result.
  • values of multiplicand b ⁇ multiplier A + multiplicand c ⁇ multiplier B are stored.
  • the 17 bits of the P register 39 can be used as the sign bit of the multiplication result of b ⁇ A + c ⁇ B.
  • the value of multiplicand b ⁇ multiplier B is stored.
  • the 26 bits of the P register 39 can be used as the sign bit of the b ⁇ B multiplication result.
  • the multiplication unit 36 By setting the multiplicands b and c and the multipliers A and B at predetermined positions of the A register 32, B register 31, and D register 33 as shown in the figure, the multiplication unit 36 performs c ⁇ A in one multiplication. And three multiplied results of b ⁇ A + c ⁇ B and b ⁇ B.
  • the output unit 4 selects bits 0 to 7 of the P register 39 as a calculation result of c ⁇ A, selects 9 to 16 bits as a calculation result of b ⁇ A + c ⁇ B, and selects 18 to 25 bits of b ⁇ B. It can be selected and output as the multiplication result.
  • three multiplication results can be obtained at one time from the four values of the multiplicand b and b and the multipliers A and B.
  • three multiplication results can be calculated in parallel with desired multipliers A and B without being limited to one multiplier c as in the conventional example.
  • FIG. 8 is a diagram showing an example in which the multiplier 3 of the second embodiment is applied to a convolution operation.
  • the illustrated example shows an example in which the image and the filter are multiplied in a sliding window.
  • the images b and c before the slide and the multipliers A and B of the filter are calculated by the multiplier 3-1, and the images d and e after the slide and the multipliers B and A of the filter are calculated by the multiplier 3-2.
  • adders 5-1, 5-2, 5-3 and 5-4 arranged at the subsequent stage of multiplier 3 output the results before sliding and the results after sliding 1, 2 after sliding and 3 after sliding An example is shown.
  • the adders 5-1 to 5-4 are examples included in the output unit 4.
  • the multiplier 3-1 receives the images b and c as multiplicands, receives the filters A and B as multipliers, and executes multiplication. As shown in FIG. 7, the multiplier 3-1 calculates c ⁇ A, b ⁇ A + c ⁇ B and b ⁇ B as multiplication results.
  • the multiplier 3-2 receives the images d and e as multiplicands, receives the filters B and A as multipliers, and executes multiplication.
  • the multiplier 3-2 calculates d ⁇ A, d ⁇ B + e ⁇ A and e ⁇ B as the multiplication results.
  • the multiplier 3-1 outputs c ⁇ A and b ⁇ B to the adder 5-1, outputs b ⁇ A + c ⁇ B to the adder 5-2, and outputs c ⁇ A to the adder 5-3. Do.
  • the adder 5-1 outputs the result (b ⁇ B, c ⁇ A) of the convolution operation before sliding.
  • the multiplier 3-2 outputs d ⁇ A to the adder 5-2, d ⁇ B + e ⁇ A to the adder 5-3, and d ⁇ A and e ⁇ B to the adder 5-4. Do.
  • the adder 5-2 outputs the result (b ⁇ A, c ⁇ B, d ⁇ A) of the post-slide 1 convolution operation.
  • the adder 5-3 outputs the result (c ⁇ A, d ⁇ B, ex ⁇ A) of the post-slide 2 convolution operation.
  • the adder 5-4 outputs the result (d ⁇ A, e ⁇ B) of the post-slide 3 convolution operation.
  • the convolution operation can be efficiently performed. Then, since three multiplication results can be calculated in parallel by one multiplier, the number of multipliers 3 used in the arithmetic device 1 that executes the convolution operation can be reduced, and power consumption can also be reduced. be able to.
  • the pre-adder 34 adds the values of the A register 32 for storing the multipliers A and B and the values of the D register 33 and stores them in the AD register 35.
  • the receiving unit 2 directly accesses the AD register 35 to store the multipliers A and B as described above, and stores the multiplicands b and c in the B register 31 and the multipliers A and B.
  • the multiplication unit 36 may calculate the product of the AD register 35 for storing.
  • the multiplicands b and c are used.
  • the multiplication result is b ⁇ A. , A ⁇ A + b ⁇ B, a ⁇ B.
  • the multiplier 3 collectively executes the operation of multiplying the multiplicand a by the multiplier A and the multiplier B and the operation of multiplying the multiplicand b by the multiplier A and the multiplier B simultaneously to obtain three multiplication results (b ⁇ A, a ⁇ A + b ⁇ B, a ⁇ B) can be obtained, and it becomes possible to execute a plurality of multiplications in parallel by one multiplier without being limited to one multiplier.
  • FIG. 9 is a block diagram showing a third embodiment of the present invention, and showing an example of a vehicle-mounted control device 100 adopting the on-board arithmetic device 1 of the first or second embodiment.
  • the on-vehicle control device 100 is connected to a camera 110 for acquiring an image and an actuator 140 to be controlled by the vehicle.
  • the in-vehicle control device 100 outputs an image acquired by the camera 110 in a predetermined format, the arithmetic device 1 receiving data from the image processor 120 and performing a convolution operation of DNN, and the arithmetic device 1
  • the drive unit 130 controls the actuator 140 based on the calculation result of
  • the arithmetic device 1 is the same as that of the first embodiment or the second embodiment, and performs control of a vehicle by executing a convolution operation of DNN.
  • Arithmetic device 1 receives the data output from image processing unit 120 as a multiplicand, and carries out an operation including multiplication with multipliers A and B of a preset filter.
  • Arithmetic unit 1 may receive filter multipliers A and B from the outside.
  • the actuator 140 constitutes, for example, a steering device, a braking device, or a driving force control device.
  • the drive unit 130 may control an electronic device such as an inverter instead of the actuator 140.
  • the arithmetic unit 1 can execute three multiplications collectively by one multiplier 3 as in the first embodiment or the second embodiment. Therefore, in the case of executing a large number of multiplications as in the DNN convolution operation, the number of multipliers 3 operated in the arithmetic unit 1 can be reduced, and a reduction in power consumption can also be realized.
  • the multiplier 3 of the first embodiment shows an example in which the operation of multiplying the multiplicand a by the multiplier A and the operation of multiplying the multiplicand b by the multiplier A and the multiplier B are collectively executed.
  • the multiplier 3 of 2 illustrated an example in which the operation of multiplying the multiplicand a by the multiplier A and the multiplier B and the operation of multiplying the multiplicand b by the multiplier A and the multiplier B are collectively executed. It is not something to be done. For example, an operation of multiplying the multiplicand a by the multiplier A and the multiplier B, and an operation of multiplying the multiplicand b by the multiplier A or the multiplier B may be executed at once.
  • the present invention is not limited to the embodiments described above, but includes various modifications.
  • the embodiments described above are described in detail in order to illustrate the present invention in an easy-to-understand manner, and are not necessarily limited to those having all the configurations described.
  • part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment.
  • addition, deletion, or replacement of other configurations may be applied singly or in combination with some of the configurations of the respective embodiments.
  • each of the configurations, functions, processing units, processing means, and the like described above may be realized by hardware, for example, by designing part or all of them with an integrated circuit.
  • each configuration, function, and the like described above may be realized by software by a processor interpreting and executing a program that realizes each function.
  • Information such as a program, a table, and a file for realizing each function can be placed in a memory, a hard disk, a recording device such as an SSD (Solid State Drive), or a recording medium such as an IC card, an SD card, or a DVD.
  • control lines and information lines indicate what is considered to be necessary for the description, and not all control lines and information lines in the product are necessarily shown. In practice, almost all configurations may be considered to be mutually connected.

Landscapes

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

Abstract

乗数Aと、乗数Bと、被乗数a及び被乗数bを受け付ける受付部と、前記乗数A及び前記乗数Bを含む乗数と、前記被乗数a及び前記被乗数bを含む被乗数との乗算を実行する乗算器と、前記乗算器の演算結果から複数の乗算結果を出力する出力部と、を有し、前記乗算器は、前記被乗数aに対し、前記乗数A及び前記乗数Bを乗ずる演算と、前記被乗数bに対し、前記乗数Aまたは前記乗数Bを乗ずる演算を一括で実行する。

Description

演算装置及び車載制御装置 参照による取り込み
 本出願は、平成29年(2017年)10月23日に出願された日本出願である特願2017-204440の優先権を主張し、その内容を参照することにより、本出願に取り込む。
 本発明は、乗算器を含むプログラマブルロジックデバイスに関する。
 近年、機械学習による物体認識や行動予測を、車両の自動運転に適用する技術が進展している。物体認識等に適用する機械学習手法としては、Deep Neural Network(以下、DNN)が知られている。
 DNNでは畳み込み演算の演算量が大きいため、車両に搭載する演算装置では演算能力の増大が必要となる。畳み込み演算を高速に実行するためには、積和演算器を含む演算装置を採用して演算の並列度を向上させる必要がある。車載用の演算装置としては、消費電力当たりの演算性能が高いFPGA(Field-Programmable Gate Array)等のプログラマブルロジックデバイスが好適である。
 また、DNNの推論演算では、32bitや16bit幅のデータではなく、低ビット幅(INT8、またはINT8以下)の演算でも認識率の低下が少ないため、低ビット幅での演算が主流になりつつある。
 演算装置の演算能力を増大させる技術としては、特許文献1や非特許文献1が知られている。特許文献1には、低ビット数の演算器を複数使用して乗算のパイプラインを実現する技術が開示されている。また、非特許文献1には、一つの積和演算器で2つの乗算を並列的に実現する技術が開示されている。
特開2003-303094号公報
 FPGAの乗算器はハードウェアで作り込まれているため、乗算を低ビット化しても乗算器の演算能力は変わらず、また、消費電力の低下にも寄与しない。また、上記非特許文献1では、一つの乗算器で2つの乗算が可能となっているが、2つの被乗数a、bに対してひとつの乗数cを共用するという制限があり、乗算の並列化がa×c、b×cに制限されてしまう、という問題があった。
 そこで本発明は、上記問題点に鑑みてなされたもので、ひとつの乗数に制限されずに一つの乗算器で複数の乗算を並列的に実行することを目的とする。
 本発明は、乗数Aと、乗数Bと、被乗数a及び被乗数bを受け付ける受付部と、前記乗数A及び前記乗数Bを含む乗数と、前記被乗数a及び前記被乗数bを含む被乗数との乗算を実行する乗算器と、前記乗算器の演算結果から複数の乗算結果を出力する出力部と、を有し、前記乗算器は、前記被乗数aに対し、前記乗数A及び前記乗数Bを乗ずる演算と、前記被乗数bに対し、前記乗数Aまたは前記乗数Bを乗ずる演算を、一括で実行する。
 したがって、本発明は、2つの被乗数a、bに対して2つの乗数A、Bを用いて3つの乗算を並列的に実行することが可能となり、ひとつの乗算器の演算能力を向上させることが可能となる。これにより、ひとつの乗数に制限されずに一つの乗算器で複数の乗算を並列的に実行することが可能となる。
本発明の実施例1を示し、車載用の演算装置の一例を示すブロック図である。 本発明の実施例1を示し、乗算器の一例を示すブロック図である。 本発明の実施例1を示し、乗算器のレジスタの一例を示す図である。 本発明の実施例1を示し、乗数及び被乗数を格納する位置を示す図である。 本発明の実施例1を示し、乗算器を畳み込み演算に適用した例を示す図である。 本発明の実施例2を示し、車載用の演算装置の一例を示すブロック図である。 本発明の実施例2を示し、乗算器のレジスタの一例を示す図である。 本発明の実施例2を示し、乗算器を畳み込み演算に適用した例を示す図である。 本発明の実施例3を示し、車載用制御装置の一例を示すブロック図である。
 以下、本発明の実施形態を添付図面に基づいて説明する。
 図1は、本発明の実施例1を示し、車載用の演算装置の一例を示すブロック図である。本実施例1では、車載用の演算装置1として、複数の乗算器を含むFPGAを採用した例を示す。
 演算装置1は、演算対象の被乗数a、bと乗数A、Bを受け付けるn個の受付部2-1~2-nと、後述するように3つの乗算を並列実行するn個の乗算器3-1~3-nと、乗算器3-1~3-nの演算結果を出力する出力部4-1~4-nとを含む。なお、以下の説明では、乗算器3-1~3-nの全体について説明する際には「-」以降を省略した符号3を用いる。他の構成要素の符号についても同様である。
 演算装置1は、n個の乗算器3の他に、図示はしないが、プログラム可能な論理ブロックやメモリリソースを含む。受付部2や出力部4は、上記論理ブロック等によって構成することができる。
 演算装置1は、被乗数a、bを格納するBレジスタ31と、乗数A、Bを格納するADレジスタ35と、Bレジスタ31とADレジスタ35の値を乗じる乗算部36と、乗算結果を格納するPレジスタ39とを含む。
 受付部2は、4ビットの被乗数a,bを、18ビットのBレジスタ31の所定の位置(ビット)に格納する。また、受付部2は、後述する前置加算器34を用いて、4ビットの乗数A、Bを、25ビットのADレジスタ35の所定の位置(ビット)に格納させる。
 乗算部36は、Bレジスタ31の値にADレジスタ35の値を乗じて、演算結果を45ビットのPレジスタ39に格納する。本実施例1では、受付部2が後述するように、被乗数a,bと乗数A、Bの格納位置を調整することで、8ビット長の演算結果(b×A、a×A、b×B)を3つ含む乗算結果を1回の乗算で得ることができる。なお、演算結果には1ビットの符号ビットを加えた9ビットで扱うことができる。また、上位ビットの演算結果(b×B)の符号ビットは、図中不定とした19ビットの中に含めることができる。
 出力部4は、Pレジスタ39に格納された45ビットの演算結果から、所定の位置に格納された8ビット長の3つの演算結果を選択して出力する。
 図2は、乗算器3の詳細な構成の一例を示すブロック図である。18ビットのBレジスタ31は乗算部36に接続される。
 図1に示したADレジスタ35の前段には、前置加算器34とAレジスタ32とDレジスタ33が配置される。Aレジスタ32とDレジスタ33は、それぞれ25ビットで構成される。前置加算器34は、Aレジスタ32とDレジスタ33の加算結果を、25ビットのADレジスタ35に格納する。
 受付部2は、Bレジスタ31に被乗数a、bを格納し、Aレジスタ32に定数Bを格納し、Dレジスタ33に乗数Bを格納する。前置加算器34は乗数A、Bの加算結果をADレジスタ35に出力する。
 乗算部36は、Bレジスタ31の値にADレジスタ35の値を乗じた結果をMレジスタ37に格納する。Mレジスタ37はALU38を介してPレジスタ39に接続される。本実施例1では、ALU38はMレジスタ37の内容をそのままPレジスタ39に出力する。なお、本実施例1では、Mレジスタ37と、Pレジスタ39の幅は45ビットとする。
 図示の例では、受付部2は、被乗数a、bをBレジスタ31の所定の位置に格納する。また、受付部2は、乗数BをAレジスタ32の所定の位置に格納し、乗数AをDレジスタ33の所定の位置に格納する。
 乗算器3はAレジスタ32とDレジスタ33に値が設定されると、前置加算器34で加算させる。前置加算器34は、Aレジスタ32とDレジスタ33の加算結果を25ビット幅のADレジスタ35に格納する。
 図3は、乗算器3の各レジスタの一例を示す図である。図中左側がMSB(Most Significant Bit)を示し、図中右側がLSB(Least Significant Bit)を示す。
 受付部2は、4ビットの被乗数bをBレジスタ31のLSB側の0~3ビットに格納する。さらに、受付部2は、4ビットの被乗数aをBレジスタ31のMSB側の9~12ビットに格納する。なお、受付部2は、被乗数a,bを格納したビットを除くBレジスタ31の他のビット(4~8、13~17)には0を設定する。
 受付部2は、4ビットの乗数AをDレジスタ33のLSB側の0~3ビットに格納する。さらに、受付部2は、4ビットの乗数BをAレジスタ32のMSB側の18~21ビットに格納する。なお、受付部2は、乗数Aを格納したビットを除くDレジスタ33の他のビット(4~24)には0を設定する。また、受付部2は、乗数Bを格納したビットを除くAレジスタ32の他のビット(0~17、22~24)には0を設定する。
 前置加算器34による加算結果は、ADレジスタ35のLSB側の0~3ビットに乗数Aが格納され、ADレジスタ35のMSB側の18~21ビットに乗数Bが格納される。また、ADレジスタ35の乗数A、Bを格納したビット以外の他のビット(4~17、22~24)には0が設定される。
 乗算部36による乗数結果は、Pレジスタ39の0~26ビットに格納される。Pレジスタ39の0~7ビットには、被乗数b×乗数Aの値が格納される。Pレジスタ39の8ビットは、b×Aの乗算結果の符号ビットとして用いることができる。
 Pレジスタ39の9~16ビットには、被乗数a×乗数Aの値が格納される。Pレジスタ39の17ビットは、a×Aの乗算結果の符号ビットとして用いることができる。Pレジスタ39の18~25ビットには、被乗数b×乗数Bの値が格納される。Pレジスタ39の26ビットは、b×Bの乗算結果の符号ビットとして用いることができる。
 被乗数a、bと乗数A、Bを図示のように、Aレジスタ32、Bレジスタ31、Dレジスタ33の所定の位置に設定することで、乗算部36は、一回の乗算で、b×Aとa×A及びb×Bの3つの演算結果を得ることができる。
 出力部4は、Pレジスタ39の0~7ビットをb×Aの演算結果として選択し、9~16ビットをa×Aの演算結果として選択し、18~25ビットをb×Bの乗算結果として選択して出力することができる。
 本実施例1の演算装置1によれば、被乗数a、bと乗数A、Bの4つの値から、3つの乗算結果(b×A、a×A、b×B)を1回の乗算で得ることが可能となる。このように、本実施例1では、前記従来例のようにひとつの乗数cに制限されることなく所望の乗数A、Bで3つの乗算結果を並列的に算出することが可能となる。
 図4は、乗算器3の各レジスタに乗数及び被乗数を格納する位置を示す図である。図3の例では、被乗数と乗数が4ビットの例を示したが、図4は、被乗数と乗数のビット数をXビットとした場合に、Dレジスタ33、Aレジスタ32、Bレジスタ31に被乗数と乗数を設定する位置を示す。なお、以下の例では、各レジスタの長さ(ビット数)に制限がないと仮定した場合を示す。
 Dレジスタ33には、受付部2が乗数Aを、LSB側の0~X-1ビットに設定する。Aレジスタ32には、受付部2が乗数Bを、MSB側の2×(2X+1)ビットから設定する。
 Bレジスタ31には、受付部2が被乗数bを、LSB側の0~X-1ビットに設定し、被乗数aを、MSB側の2X+1ビットから設定する。
 乗算結果を格納するPレジスタ39には、LSB側の0~2Xビットにb×Aと符号ビットが格納され、9~2×(2Xビット+1)-1にa×Aと符号ビットが格納され、2×(2Xビット+1)~3×(2Xビット+1)-1にb×Bと符号ビットが格納される。
 換言すれば、受付部2は、ADレジスタ35(第1のレジスタ)で乗数Aを最下位ビットから格納し、乗数Bを最下位ビットから4X+2ビットの位置から格納し、Bレジスタ31(第2のレジスタ)で被乗数bを最下位ビットから格納し、被乗数aを最下位ビットから2X+1ビットの位置から格納する。
 なお、図示はしないが、Dレジスタ33またはAレジスタ32のいずれか一方に、乗数A、Bを設定するようにしてもよい。
 図5は、乗算器3を畳み込み演算に適用した例を示す図である。図示の例では、スライディングウィンドウで画像とフィルタの乗算を行う例を示す。スライド前の画像a、bとフィルタの乗数A、Bを乗算器3-1で演算し、スライド後の画像c、dとフィルタの乗数B、Cを乗算器3-2で演算する。そして、乗算器3の後段に配置した加算器5-1、5-2でスライド前の結果と、スライド後の結果を出力する例を示す。なお、加算器5-1、5-2は、出力部4に含まれる例を示す。
 乗算器3-1は、画像a、bを被乗数として受け付けて、フィルタA、Bを乗数として受け付けて乗算を実行する。前記図3と同様に、乗算器3-1は、乗算結果としてa×A、b×B及びb×Aを算出する。
 乗算器3-2は、画像c、dを被乗数として受け付けて、フィルタB、Cを乗数として受け付けて乗算を実行する。乗算器3-2は、乗算結果としてc×B、d×C及びc×Cを算出する。
 乗算器3-1は、加算器5-1にa×A、b×Bを出力する。乗算器3-2は、加算器5-1にc×Cを出力する。加算器5-1は、スライド前の畳み込み演算の結果(a×A、b×A、c×C)を出力する。
 乗算器3-2は、加算器5-2にc×B、d×Cを出力する。乗算器3-1は、加算器5-2にb×Aを出力する。加算器5-2は、スライド後の畳み込み演算の結果(b×A、c×B、d×C)を出力する。
 本実施例1では、乗算器3を複数使用することで、畳み込み演算を効率よく実行することができる。そして、一つの乗算器で3つの乗算結果を並列的に算出することが可能なるので、畳み込み演算を実行する演算装置1で使用する乗算器3の数を低減でき、消費電力の削減も実現することができる。
 なお、上記実施例1では、乗数A、Bを格納するAレジスタ32とDレジスタ33の値を前置加算器34が加算してADレジスタ35に格納してから、乗算部36がBレジスタ31との乗算を行う例を示したが、これに限定されるものではない。前置加算器34を用いない場合では、受付部2がADレジスタ35に直接アクセスして乗数A、Bを上述のように格納し、被乗数a,bを格納するBレジスタ31と、乗数A、Bを格納するADレジスタ35の積を乗算部36が演算すれば良い。
 以上のように、乗算器3は、前記被乗数aに対して乗数Aを乗ずる演算と、被乗数bに対して前記乗数A及び乗数Bを乗ずる演算を一括して実行することで、3つの乗算結果(b×A、a×A、b×B)を得ることができ、ひとつの乗数に制限されずに一つの乗算器で複数の乗算を並列的に実行することが可能となる。
 図6、図7は、本発明の実施例2を示し、車載用の演算装置1の一例を示すブロック図である。本実施例2では、Aレジスタ32(ADレジスタ35)への乗数Bの格納位置を前記実施例1とは異なる位置に格納するもので、その他の構成は前記実施例1と同様である。
 本実施例2の受付部2は、図7で示すように、Aレジスタ32のLSB側の9ビット目(2X+1)から乗数Bを格納する。前置加算器34はAレジスタ32とDレジスタ33を加算して図6のようにADレジスタ35に演算結果を格納する。
 乗算部36は、前記実施例1と同様にBレジスタ31とADレジスタ35の積を算出してMレジスタ37を介してPレジスタ39に演算結果を格納する。本実施例2では、前記実施例1のa×Aに代わって、b×A+c×Bを算出できる点が実施例1と相違する。
 本実施例2では図7で示すように、受付部2が被乗数b、cをBレジスタ31に設定し、乗数BをAレジスタ32に設定し、乗数AをDレジスタ33に設定する。
 すなわち、受付部2は、4ビットの被乗数cをBレジスタ31のLSB側の0~3ビットに格納する。さらに、受付部2は、前記実施例1と同様に、4ビットの被乗数bをBレジスタ31のMSB側の9~12ビットに格納する。なお、受付部2は、被乗数b、cを格納したビットを除くBレジスタ31の他のビット(4~8、13~17)には0を設定する。
 また、受付部2は、4ビットの乗数AをDレジスタ33のLSB側の0~3ビットに格納する。さらに、受付部2は、4ビットの乗数BをAレジスタ32のLSB側から9~12ビットに格納する。なお、受付部2は、乗数Aを格納したビットを除くDレジスタ33の他のビット(4~24)には0を設定する。また、受付部2は、乗数Bを格納したビットを除くAレジスタ32の他のビット(0~8、13~24)には0を設定する。
 前置加算器34による加算結果は、ADレジスタ35のLSB側の0~3ビットに乗数Aが格納され、ADレジスタ35の9~12ビットに乗数Bが格納される。
 換言すれば、受付部2は、ADレジスタ35(第1のレジスタ)で乗数Aを最下位ビットから格納し、乗数Bを最下位ビットから2X+1ビットの位置から格納し、Bレジスタ31(第2のレジスタ)で被乗数bを最下位ビットから格納し、被乗数aを最下位ビットから2X+1ビットの位置から格納する。
 乗算部36による乗数結果は、Pレジスタ39の0~26ビットに格納される。Pレジスタ39の0~7ビットには、被乗数c×乗数Aの値が格納される。Pレジスタ39の8ビットは、b×Aの乗算結果の符号ビットとして用いることができる。
 Pレジスタ39の9~16ビットには、被乗数b×乗数A+被乗数c×乗数Bの値が格納される。Pレジスタ39の17ビットは、b×A+c×Bの乗算結果の符号ビットとして用いることができる。Pレジスタ39の18~25ビットには、被乗数b×乗数Bの値が格納される。Pレジスタ39の26ビットは、b×Bの乗算結果の符号ビットとして用いることができる。
 被乗数b,cと乗数A、Bを図示のように、Aレジスタ32、Bレジスタ31、Dレジスタ33の所定の位置に設定することで、乗算部36は、一回の乗算で、c×Aとb×A+c×B及びb×Bの3つの乗算結果を得ることができる。
 出力部4は、Pレジスタ39の0~7ビットをc×Aの演算結果として選択し、9~16ビットをb×A+c×Bの演算結果として選択し、18~25ビットをb×Bの乗算結果として選択して出力することができる。
 本実施例2の演算装置1によれば、被乗数b、bと乗数A、Bの4つの値から、3つの乗算結果を1回で得ることが可能となる。このように、本実施例2においても、前記従来例のようにひとつの乗数cに制限されることなく所望の乗数A、Bで3つの乗算結果を並列的に算出することが可能となる。
 図8は、本実施例2の乗算器3を畳み込み演算に適用した例を示す図である。図示の例では、スライディングウィンドウで画像とフィルタの乗算を行う例を示す。スライド前の画像b、cとフィルタの乗数A、Bを乗算器3-1で演算し、スライド後の画像d、eとフィルタの乗数B、Aを乗算器3-2で演算する。そして、乗算器3の後段に配置した加算器5-1、5-2、5-3、5-4でスライド前の結果と、スライド後1、スライド後2、スライド後3の結果を出力する例を示す。なお、加算器5-1~5-4は、出力部4に含まれる例を示す。
 乗算器3-1は、画像b、cを被乗数として受け付けて、フィルタA、Bを乗数として受け付けて乗算を実行する。図7で示したように乗算器3-1は、乗算結果としてc×A、b×A+c×B及びb×Bを算出する。
 乗算器3-2は、画像d、eを被乗数として受け付けて、フィルタB、Aを乗数として受け付けて乗算を実行する。乗算器3-2は、乗算結果としてd×A、d×B+e×A及びe×Bを算出する。
 乗算器3-1は、加算器5-1にc×A、b×Bを出力し、加算器5-2にb×A+c×Bを出力し、加算器5-3にc×Aを出力する。加算器5-1は、スライド前の畳み込み演算の結果(b×B、c×A)を出力する。
 乗算器3-2は、加算器5-2にd×Aを出力し、加算器5-3にd×B+e×Aを出力し、加算器5-4にd×A、e×Bを出力する。
 加算器5-2は、スライド後1の畳み込み演算の結果(b×A、c×B、d×A)を出力する。加算器5-3は、スライド後2の畳み込み演算の結果(c×A、d×B、e×A)を出力する。加算器5-4は、スライド後3の畳み込み演算の結果(d×A、e×B)を出力する。
 本実施例2では、前記実施例1と同様に、乗算器3を複数使用することで、畳み込み演算を効率よく実行することができる。そして、一つの乗算器で3つの乗算結果を並列的に算出することが可能なるので、畳み込み演算を実行する演算装置1で使用する乗算器3の数を低減でき、消費電力の削減も実現することができる。
 なお、上記実施例2では、乗数A、Bを格納するAレジスタ32とDレジスタ33の値を前置加算器34が加算してADレジスタ35に格納してから、乗算部36がBレジスタ31との乗算を行う例を示したが、これに限定されるものではない。前置加算器34を用いない場合では、受付部2がADレジスタ35に直接アクセスして乗数A、Bを上述のように格納し、被乗数b、cを格納するBレジスタ31と、乗数A、Bを格納するADレジスタ35の積を乗算部36が演算すれば良い。
 また、上記実施例2では、被乗数b、cを用いる例を示したが、前記実施例1の図3と同様に被乗数a、bをBレジスタ31に設定した場合、乗算結果は、b×A、a×A+b×B、a×Bとなる。すなわち、乗算器3は、被乗数aに対して乗数A及び乗数Bを乗ずる演算と、被乗数bに対して乗数A及び乗数Bを乗ずる演算を一括して実行することで、3つの乗算結果(b×A、a×A+b×B、a×B)を得ることができ、ひとつの乗数に制限されずに一つの乗算器で複数の乗算を並列的に実行することが可能となる。
 図9は、本発明の実施例3を示し、前記実施例1または実施例2の車載用の演算装置1を採用した車載制御装置100の一例を示すブロック図である。
 車載制御装置100には、画像を取得するカメラ110と、車両の制御対象となるアクチュエータ140が接続される。車載制御装置100は、カメラ110が取得した画像を所定の形式で出力する画像処理部120と、画像処理部120からのデータを受け付けてDNNの畳み込み演算を実施する演算装置1と、演算装置1の演算結果に基づいてアクチュエータ140を制御する駆動部130を含む。
 演算装置1は前記実施例1または前記実施例2と同様であり、DNNの畳み込み演算を実行して車両の制御を行う。演算装置1は、画像処理部120が出力したデータを被乗数として受け付けて、予め設定されたフィルタの乗数A、Bで乗算を含む演算を実施する。なお、演算装置1は、フィルタの乗数A、Bを外部から受け付けてもよい。
 アクチュエータ140は、例えば、操舵装置や制動装置あるいは駆動力制御装置を構成する。なお、駆動部130は、アクチュエータ140に代わってインバータなどの電子機器を制御しても良い。
 演算装置1は、前記実施例1または実施例2と同様に1つの乗算器3で3つの乗算を一括して実行することができる。このため、DNNの畳み込み演算のように多数の乗算を実行する場合には、演算装置1で稼働する乗算器3の数を低減でき、消費電力の削減も実現することができる。
 なお、上記実施例1、2、3では、演算装置1にFPGAを採用する例を示したが、これに限定されるものではなく、乗算器3を含むDSP(Digital Signal Processor)やASIC(Application Specific Integrated Circuit)あるいは他のプログラマブルロジックデバイスを採用することができる。
 また、上記実施例1の乗算器3は、被乗数aに対して乗数Aを乗ずる演算と、被乗数bに対して乗数A及び乗数Bを乗ずる演算を一括して実行する例を示し、上記実施例2の乗算器3は、被乗数aに対して乗数A及び乗数Bを乗ずる演算と、被乗数bに対して乗数A及び乗数Bを乗ずる演算を一括して実行する例を示したが、これに限定されるものではない。例えば、被乗数aに対して乗数A及び乗数Bを乗ずる演算と、被乗数bに対して乗数Aまたは乗数Bを乗ずる演算を一括して実行しても良い。
 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
 また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
 また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。

Claims (10)

  1.  乗数Aと、乗数Bと、被乗数a及び被乗数bを受け付ける受付部と、
     前記乗数A及び前記乗数Bを含む乗数と、前記被乗数a及び前記被乗数bを含む被乗数との乗算を実行する乗算器と、
     前記乗算器の演算結果から複数の乗算結果を出力する出力部と、を有し、
     前記乗算器は、
     前記被乗数aに対し、前記乗数A及び前記乗数Bを乗ずる演算と、前記被乗数bに対し、前記乗数Aまたは前記乗数Bを乗ずる演算を、一括で実行することを特徴とする演算装置。
  2.  請求項1に記載の演算装置であって、
     前記受付部は、
     前記乗数A及び前記乗数Bを乗算器の第1のレジスタに格納し、
     前記被乗数a及び前記被乗数bを乗算器の第2のレジスタに格納し、
     前記乗算器は、
     前記第1のレジスタと第2のレジスタを用いて、複数の乗算を一括で実行することを特徴とする演算装置。
  3.  請求項2に記載の演算装置であって、
     前記受付部は、
     前記第1のレジスタで前記乗数A又は前記乗数Bが格納されているビット以外に0を格納し、前記第2のレジスタで前記被乗数a又は前記被乗数bが格納されているビット以外に0を配置することを特徴とする演算装置。
  4.  請求項3に記載の演算装置であって、
     前記乗数A又は前記乗数Bと前記被乗数a又は前記被乗数bの長さがXビットの場合、
     前記受付部は、
     前記第1のレジスタで前記乗数Aを最下位ビットから格納し、前記乗数Bを最下位ビットから4X+2ビットの位置から格納し、前記第2のレジスタで前記被乗数bを最下位ビットから格納し、前記被乗数aを最下位ビットから2X+1ビットの位置から格納することを特徴とする演算装置。
  5.  請求項3に記載の演算装置であって、
     前記乗数A又は前記乗数Bと前記被乗数a又は前記被乗数bの長さがXビットの場合、
     前記受付部は、
     前記第1のレジスタで前記乗数Aを最下位ビットから格納し、前記乗数Bを最下位ビットから2X+1ビットの位置から格納し、
     前記受付部は、
     前記第2のレジスタで前記被乗数bを最下位ビットから格納し、前記被乗数aを最下位ビットから2X+1ビットの位置から格納することを特徴とする演算装置。
  6.  画像処理部からのデータを被乗数a及び被乗数bとして受け付け、フィルタの乗数A及び乗数Bを受け付ける受付部と、
     前記乗数A及び前記乗数Bを含む乗数と、前記被乗数a及び前記被乗数bを含む被乗数との乗算を実行する乗算器と、
     前記乗算器の演算結果から複数の乗算結果を出力する出力部と、を有し、
     前記乗算器は、
     前記被乗数aに対し、前記乗数A及び前記乗数Bを乗ずる演算と、前記被乗数bに対し、前記乗数Aまたは前記乗数Bを乗ずる演算を、一括で実行することを特徴とする車載制御装置。
  7.  請求項6に記載の車載制御装置であって、
     前記受付部は、
     前記乗数A及び前記乗数Bを乗算器の第1のレジスタに格納し、
     前記被乗数a及び前記被乗数bを乗算器の第2のレジスタに格納し、
     前記乗算器は、
     前記第1のレジスタと第2のレジスタを用いて、複数の乗算を一括で実行することを特徴とする車載制御装置。
  8.  請求項7に記載の車載制御装置であって、
     前記受付部は、
     前記第1のレジスタで前記乗数A又は前記乗数Bが格納されているビット以外に0を格納し、前記第2のレジスタで前記被乗数a又は前記被乗数bが格納されているビット以外に0を配置することを特徴とする車載制御装置。
  9.  請求項8に記載の車載制御装置であって、
     前記乗数A又は前記乗数Bと前記被乗数a又は前記被乗数bの長さがXビットの場合、
     前記受付部は、
     前記第1のレジスタで前記乗数Aを最下位ビットから格納し、前記乗数Bを最下位ビットから4X+2ビットの位置から格納し、前記第2のレジスタで前記被乗数bを最下位ビットから格納し、前記被乗数aを最下位ビットから2X+1ビットの位置から格納することを特徴とする車載制御装置。
  10.  請求項8に記載の車載制御装置であって、
     前記乗数A又は前記乗数Bと前記被乗数a又は前記被乗数bの長さがXビットの場合、
     前記受付部は、
     前記第1のレジスタで前記乗数Aを最下位ビットから格納し、前記乗数Bを最下位ビットから2X+1ビットの位置から格納し、
     前記受付部は、
     前記第2のレジスタで前記被乗数bを最下位ビットから格納し、前記被乗数aを最下位ビットから2X+1ビットの位置から格納することを特徴とする車載制御装置。
PCT/JP2018/032577 2017-10-23 2018-09-03 演算装置及び車載制御装置 WO2019082511A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE112018004631.1T DE112018004631T5 (de) 2017-10-23 2018-09-03 Arithmetikeinrichtung und an einem Fahrzeug montierte Steuereinrichtung

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017-204440 2017-10-23
JP2017204440A JP6886389B2 (ja) 2017-10-23 2017-10-23 演算装置及び車載制御装置

Publications (1)

Publication Number Publication Date
WO2019082511A1 true WO2019082511A1 (ja) 2019-05-02

Family

ID=66246381

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/032577 WO2019082511A1 (ja) 2017-10-23 2018-09-03 演算装置及び車載制御装置

Country Status (3)

Country Link
JP (1) JP6886389B2 (ja)
DE (1) DE112018004631T5 (ja)
WO (1) WO2019082511A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110262774A (zh) * 2019-05-25 2019-09-20 南京惟心光电系统有限公司 一种光电乘法器的计算方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7230744B2 (ja) * 2019-08-28 2023-03-01 株式会社デンソー 畳込み演算方法及び演算処理装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0784763A (ja) * 1993-09-09 1995-03-31 Fujitsu Ltd 乗算回路
JPH1195981A (ja) * 1997-09-18 1999-04-09 Toshiba Corp 乗算回路
JP2011008439A (ja) * 2009-06-24 2011-01-13 Ihi Corp 通路検出プログラム、通路検出装置及び方法
JP2011180966A (ja) * 2010-03-03 2011-09-15 Renesas Electronics Corp 積和演算器
JP2016045685A (ja) * 2014-08-22 2016-04-04 富士通株式会社 乗算回路及びその乗算方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003303094A (ja) 2002-04-11 2003-10-24 Toshiba Corp 乗算回路
JP6010715B1 (ja) 2016-05-13 2016-10-19 株式会社日立パワーソリューションズ マグネトロンおよびマグネトロンの共振周波数調整方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0784763A (ja) * 1993-09-09 1995-03-31 Fujitsu Ltd 乗算回路
JPH1195981A (ja) * 1997-09-18 1999-04-09 Toshiba Corp 乗算回路
JP2011008439A (ja) * 2009-06-24 2011-01-13 Ihi Corp 通路検出プログラム、通路検出装置及び方法
JP2011180966A (ja) * 2010-03-03 2011-09-15 Renesas Electronics Corp 積和演算器
JP2016045685A (ja) * 2014-08-22 2016-04-04 富士通株式会社 乗算回路及びその乗算方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110262774A (zh) * 2019-05-25 2019-09-20 南京惟心光电系统有限公司 一种光电乘法器的计算方法
CN110262774B (zh) * 2019-05-25 2023-03-24 南京惟心光电系统有限公司 一种光电乘法器的计算方法

Also Published As

Publication number Publication date
JP6886389B2 (ja) 2021-06-16
DE112018004631T5 (de) 2020-07-16
JP2019079183A (ja) 2019-05-23

Similar Documents

Publication Publication Date Title
JP7348971B2 (ja) 畳み込みニューラルネットワークハードウエア構成
US10621489B2 (en) Massively parallel neural inference computing elements
EP4066100B1 (en) Systolic array component combining multiple integer and floating-point data types
US11467806B2 (en) Systolic array including fused multiply accumulate with efficient prenormalization and extended dynamic range
CN109871936B (zh) 用于处理神经网络中的卷积运算的方法和装置
CN111465924A (zh) 用于将矩阵输入转换为矩阵处理器的向量化输入的系统和方法
KR20200081044A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
JP7414930B2 (ja) 情報処理装置、情報処理方法
JP7096828B2 (ja) 入力オペランド値を処理するための装置及び方法
EP3709225A1 (en) System and method for efficient utilization of multipliers in neural-network computations
WO2019082511A1 (ja) 演算装置及び車載制御装置
CN112528219A (zh) 存储器装置及其运算方法、计算设备
US20180088905A1 (en) Computing and summing up multiple products in a single multiplier
JPWO2007094047A1 (ja) 演算装置および演算方法
TW202319909A (zh) 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置
WO2021073918A1 (en) Multi-mode low-precision inner-product computation circuits for massively parallel neural inference engine
US9916159B2 (en) Programmable linear feedback shift register
CN113869517A (zh) 一种基于深度学习模型的推理方法
US20230161555A1 (en) System and method performing floating-point operations
US11169782B2 (en) Arithmetic logic unit, data processing system, method and module
US8924447B2 (en) Double precision approximation of a single precision operation
CN108229668B (zh) 基于深度学习的运算实现方法、装置和电子设备
CN102568481B (zh) 用于实现aqmf处理的方法、和用于实现sqmf处理的方法
US11113028B2 (en) Apparatus and method for performing an index operation
US20240211211A1 (en) Mac apparatus using floating point unit and control method thereof

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: 18870147

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 18870147

Country of ref document: EP

Kind code of ref document: A1