WO2017203975A1 - 演算処理装置、及び、演算処理方法 - Google Patents

演算処理装置、及び、演算処理方法 Download PDF

Info

Publication number
WO2017203975A1
WO2017203975A1 PCT/JP2017/017616 JP2017017616W WO2017203975A1 WO 2017203975 A1 WO2017203975 A1 WO 2017203975A1 JP 2017017616 W JP2017017616 W JP 2017017616W WO 2017203975 A1 WO2017203975 A1 WO 2017203975A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
unit
arithmetic processing
bits
neural network
Prior art date
Application number
PCT/JP2017/017616
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 US16/088,979 priority Critical patent/US10817773B2/en
Priority to CN201780024236.0A priority patent/CN109074516B/zh
Publication of WO2017203975A1 publication Critical patent/WO2017203975A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/183Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/187Voting techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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

Definitions

  • the present technology relates to an arithmetic processing device and an arithmetic processing method, and in particular, arithmetic processing capable of reducing circuit area while reducing power consumption when performing more reliable neural network arithmetic.
  • the present invention relates to an apparatus and an arithmetic processing method.
  • Patent Document 1 is known.
  • the present technology has been made in view of such a situation, and is intended to reduce a circuit area while reducing power consumption when performing a more reliable operation of a neural network. .
  • An arithmetic processing apparatus includes an arithmetic processing unit that performs an arithmetic operation on a neural network, and in the arithmetic operation of the neural network, a weighting factor used for the arithmetic operation and a specific bit of a part of input data This is an arithmetic processing unit that performs redundancy so that redundancy is greater than the remaining bits other than the remaining bits.
  • the arithmetic processing device may be an independent device or a block that performs arithmetic processing of the arithmetic processing device.
  • An arithmetic processing method according to one aspect of the present technology is an arithmetic processing method corresponding to the arithmetic processing device according to one aspect of the present technology described above.
  • arithmetic of a neural network is performed.
  • the weighting coefficient used for the calculation and some specific bits of the input data are made redundant so as to have more redundancy than the remaining bits other than the specific bits.
  • TMR Triple Modular Redundancy
  • the triple majority system is a redundant configuration method in which modules (units) are tripled for the purpose of improving the reliability of the system.
  • Fig. 1 shows a configuration example of a triple majority system.
  • a unit (UNIT0) 90-1, a unit (UNIT1) 90-2, and a unit (UNIT2) 90-3 are provided as three units having the same function.
  • Each unit performs processing on the same input and outputs the processing result to a majority voter (VOTER) 100.
  • VOTER majority voter
  • the majority decision device 100 selects a processing result in which two or more coincide with each other by performing a majority decision on the three processing results input from the units 90-1 to 90-3, and uses the result as an output result. Output. This makes it possible to mask a failure that has occurred in a single circuit.
  • m faults can be masked.
  • m is an integer of 1 or more.
  • m + 1 or more failures cannot be masked, since the failure can be detected, it is possible not to use the output result when the failure is detected.
  • FIG. 2 is a diagram illustrating a configuration example of the logic circuit of the majority voter used in the present technology.
  • the majority unit 100 includes an AND gate 101-1, an AND gate 101-2, an AND gate 101-3, and an OR gate 102.
  • the majority unit 100 receives input data in_0 [n], input data in_1 [n], and input data in_2 [n] from three units having the same function provided in the preceding stage. Note that n is an integer equal to or greater than 1, and the majority unit 100 simultaneously processes data having the same number n.
  • the input data in_0 [n] and the input data in_1 [n] are input to the AND gate 101-1.
  • the AND gate 101-1 calculates the logical product of the two input data, and outputs the data obtained as a result (for example, data indicating the minimum value of the two inputs) to the OR gate 102.
  • the AND gate 101-2 calculates the logical product of the input data in_0 [n] and the input data in_2 [n], and outputs the resulting data to the OR gate 102.
  • the AND gate 101-3 calculates the logical product of the input data in_1 [n] and the input data in_2 [n] and outputs the data obtained as a result to the OR gate 102.
  • the data from the AND gates 101-1 to 101-3 is input to the OR gate 102.
  • the OR gate 102 calculates the logical sum of the input data and outputs the output data out [n] obtained as a result (for example, data indicating the maximum value of three inputs) to the subsequent stage.
  • the majority decision device 100 logical operations are performed by the AND gates 101-1 to 101-3 and the OR gate 102, and three input data (in_0 [n], in_1 [n], in_2 [n] ]), Input data that matches two or more (data indicating a majority value) is selected and output as output data (out [n]). Thereby, it is possible to mask a failure occurring in a single circuit.
  • a plurality of majority decision units 100 may be provided to multiplex the majority decision units 100. That is, when a single majority voter 100 is provided, the majority voter 100 may become a single point of failure. Therefore, by providing a plurality of majority voters 100, a failure can be more reliably masked. To be able to.
  • FIG. 3 shows an example in which the majority decision units 100-1 to 100-7 are provided and the majority decision unit 100 is duplicated.
  • FIG. 4 is a diagram showing an example of calculation in the case where the higher-order bit is not made redundant with 1's complement multiplication data.
  • X and Y data are used in the operation of the neural network.
  • X can be input data and Y can be a weighting factor.
  • Y can be a weighting factor.
  • X [14: 0] which is 15-bit data
  • Y [14: 0] which is 15-bit data
  • X [15] and Y [15] which are 1-bit data, represent the most significant 1 bit indicating a positive / negative sign.
  • the multiplier 111 multiplies the upper bits of X [14: 0] and Y [14: 0] to obtain 12-bit X [14: 9] ⁇ Y [14: 9]. Then, by combining 18 bits (18′b0) of all 0s with the lower bits of the operation result obtained by the multiplier 111, 30-bit data (X [14: 9] ⁇ Y [14: 9] and 18'b0).
  • X [8: 0] ⁇ Y [14: 9] is obtained by multiplying the lower bits of X [14: 0] and the upper bits of Y [14: 0].
  • the multiplier 113 multiplies the lower bits of Y [14: 0] and the upper bits of X [14: 0] to obtain Y [8: 0] ⁇ X [14: 9]. .
  • the adder 114 adds the operation result obtained by the multiplier 112 and the operation result obtained by the multiplier 113, so that X [8: 0] ⁇ Y [14: 9] + Y [8: 0] ⁇ X [14: 9] is obtained. Also, by combining the 16 bits of data obtained here with 9 bits (9'b0) of all 0s into the lower bits, 25 bits of data (X [8: 0], Y [14: 9] + Y [8: 0] ⁇ X [14: 9] and 9′b0).
  • the multiplier 115 multiplies the lower bits of X [14: 0] and Y [14: 0] to obtain X [8: 0] ⁇ Y [8: 0] as 18-bit data. .
  • the logical arithmetic unit 121 calculates an exclusive OR (EXOR) of X [15] and Y [15] that are the most significant bits, thereby obtaining 1-bit data.
  • EXOR exclusive OR
  • Z [31] indicating the positive / negative sign is obtained.
  • Expression (1) represents a product-sum operation performed by the multiplier 111 to the adder 116 in FIG.
  • Equation (2) represents a logical operation performed by the logical operation unit 121 of FIG.
  • Equation (1) “•” means multiplication, and “ ⁇ ” represents power.
  • expression (2) “exor” means exclusive OR (EXOR).
  • the input data (X) and the weight coefficient (Y) are subjected to a product-sum operation, and the resulting data (Z) is output.
  • FIG. 5 is a diagram illustrating an example of calculation in the case where redundancy of upper bits is performed with 1's complement multiplication data.
  • the majority unit 100A has the configuration shown in FIG. 5, in addition to the configuration of FIG. 4, in addition to the multiplier 111, the multiplier 112, the multiplier 113, the adder 114, the multiplier 115, and the adder 116, the multiplier 131, the addition An adder 132, a multiplier 133, an adder 134, and a majority voter (VOTER) 100A are additionally provided.
  • the majority unit 100A has the configuration shown in FIG.
  • a logical operation unit 141 in addition to the logical operation unit 121, a logical operation unit 141, a logical operation unit 142, and a majority unit (VOTER) 100B are additionally provided as compared with the configuration of FIG.
  • the majority machine 100B has the configuration shown in FIG.
  • X and Y data are used in the operation of the neural network.
  • X is input data
  • Y is , A weighting factor.
  • the multiplier 111 to the adder 116 allow X [14: 0] (upper bits: X [14: 9], lower bits: X [8: 0]) and Y [ 14: 0] (upper bits: Y [14: 9], lower bits: Y [8: 0]) is performed to obtain 31-bit data.
  • This 31-bit data is input to the majority voter 100A.
  • the multiplier 131 multiplies the redundant upper bits X [14: 9] and Y [14: 9] to obtain X [14: 9] ⁇ Y [14: 9]. It is done. Further, by combining 18 bits (18′b0) of all 0s with the lower bits of the operation result obtained by the multiplier 131, 30-bit data (X [14: 9] ⁇ Y [14: 9] and 18'b0).
  • the adder 132 30-bit data obtained by the operation of the multiplier 131, 25-bit data obtained by the operation of the multipliers 112 to 114, and 18-bit data obtained by the operation of the multiplier 115 Data is added.
  • the 31-bit data obtained as a result is input to the majority voter 100A.
  • the multiplier 133 multiplies X [14: 9] and Y [14: 9], which are other redundant upper bits, to obtain X [14: 9] ⁇ Y [14: 9] is obtained. Further, by combining 18 bits (18′b0) of all 0s with the lower bits of the operation result obtained by the multiplier 133, 30-bit data (X [14: 9] ⁇ Y [14: 9] and 18'b0).
  • the adder 134 30-bit data obtained by the operation of the multiplier 133, 25-bit data obtained by the operation of the multipliers 112 to 114, and 18-bit data obtained by the operation of the multiplier 115 are obtained. Data is added. The 31-bit data obtained as a result is input to the majority voter 100A.
  • the majority unit 100A receives 31-bit data obtained by the operation of the adder 116, 31-bit data obtained by the operation of the adder 132, and 31-bit data obtained by the operation of the adder 134. .
  • the majority decision device 100A performs majority decision to select data that matches two or more of the three input data, and 31-bit data (Z [30: 0]) obtained as a result Is output.
  • the logical arithmetic unit 121 calculates the exclusive OR (EXOR) of the most significant bits X [15] and Y [15], thereby obtaining one bit. Data is obtained. This 1-bit data is input to the majority voter 100B.
  • EXOR exclusive OR
  • the logical operation unit 141 calculates the exclusive OR of the redundant most significant bits X [15] and Y [15], and the 1-bit data obtained as a result is the majority unit 100B. Is input.
  • the logical operator 142 calculates an exclusive OR of X [15] and Y [15] which are the other most significant bits made redundant, and the 1-bit data obtained as a result is obtained. , And input to the majority unit 100B.
  • the majority decision unit 100B has 1-bit data obtained by the operation of the logical operation unit 121, 1-bit data obtained by the operation of the logical operation unit 141, and 1-bit data obtained by the operation of the logical operation unit 142. Entered.
  • the majority decision device 100B performs majority decision to select data in which two or more of the inputted three data are coincident, and 1-bit Z [31] indicating the positive / negative sign obtained as a result is obtained. Is output.
  • the calculation of the neural network calculates the product sum of the input data (X) and the weighting coefficient (Y).
  • the data (Z) obtained as a result of the operation is output via the majority decision unit 100.
  • the upper bits are made redundant, a more reliable operation can be performed.
  • the reason is that the upper bit is selected as the specific bit to be made redundant, but the upper bit is compared with other bits such as the lower bit, This is because there is a high possibility that it is an important bit, and there is a possibility that it is a bit indicating a positive or negative sign.
  • bit to be made redundant has been described as the upper bit here, it is not limited to the upper bit, and may be another bit as long as it is an important bit. Further, it is only necessary that more important bits are made redundant than other bits, and other bits other than important bits may be made redundant.
  • the number of bits targeted for redundancy is also arbitrary.
  • the order of bit strings may be rearranged to make predetermined bits redundant. For example, the order of the bit strings may be rearranged to make the lower bits redundant.
  • FIG. 6 is a diagram showing an example in which the higher-order bits are made redundant with the one's complement multiplication data, and the majority decision unit is multiplexed (redundant).
  • the multiplier 111, the multiplier 112, the multiplier 113, the adder 114, the multiplier 115, the multiplier 131, the adder 132, the multiplier 133, and the addition are compared with the configuration of FIG. 5.
  • a majority unit (VOTER) 100A-2 and a majority unit (VOTER) 100A-3 are additionally provided.
  • the majority units 100A-1 to 100A-3 have the configuration shown in FIG. That is, in the configuration of FIG. 6, as shown in FIG. 3, the majority unit 100 is multiplexed.
  • the majority decision unit (VOTER) is compared with the configuration of FIG. 100B-2 and a majority voter (VOTER) 100B-3 are additionally provided.
  • the majority units 100B-1 to 100B-3 have the configuration shown in FIG.
  • X and Y data are used in the operation of the neural network.
  • X is input data.
  • Y can be weighting factors.
  • the majority decision operation is performed by the majority decision device 100A-1 based on the data input from the adder 116, the adder 132, and the adder 134, and the resulting 31 bits are obtained.
  • Z [30: 0] is output.
  • the data calculated by the adder 116, the adder 132, and the adder 134 are input to the majority unit 100A-2.
  • the majority decision unit 100A-2 performs majority decision to select data that matches two or more of the three input data and outputs 13-bit Z [30:18] obtained as a result To do.
  • the majority unit 100A-3 receives the data calculated by the adder 116, the adder 132, and the adder 134, performs a majority operation using the input data, and obtains the result 13 Bits Z [30:18] are output.
  • a majority decision operation is performed by the majority decision unit 100B-1 based on 1-bit data input from the logical calculation unit 121, the logical calculation unit 141, and the logical calculation unit 142.
  • 1-bit Z [31] indicating the sign is obtained.
  • 1-bit data calculated by each of the logical operation unit 121, the logical operation unit 141, and the logical operation unit 142 is input to the majority unit 100B-2.
  • the majority decision device 100B-2 performs majority decision operation to select data that matches two or more of the three input data, and 1-bit Z [31] indicating the positive / negative sign obtained as a result Is output.
  • the calculation of the neural network As described above, for example, when the upper bits of the input data (X) and the weighting coefficient (Y) are made redundant, and further, the majority unit 100 is multiplexed (redundant), the calculation of the neural network: The input data (X) and the weighting coefficient (Y) are subjected to a product-sum operation, and the resulting data (Z) is output via the majority ruler 100, but the upper bits and the number multiplier 100 are made redundant. Therefore, more reliable calculation can be performed.
  • FIG. 7 is a diagram showing an example of calculation in the case where redundancy of upper bits is performed with data of two's complement cumulative addition.
  • the converter 151 includes, as 1's complement data, Z [30:18], which is the upper bits of Z [30: 0], Z [17: 0], which is the lower bits, and a positive / negative sign.
  • Z [31] is input as the most significant bit indicating.
  • the converter 151 converts the input 1's complement data into 2's complement data, and outputs the converted data to the adder 152.
  • the adder 152 adds (cumulative addition) the two's complement data converted by the converter 151 and the two's complement data from the subsequent stage, and obtains the two's complement cumulative data obtained as a result. Outputs AC [31: 0] (combination of AC [31:18] and AC [17: 0]). The two's complement cumulative addition data (AC [31: 0]) thus obtained is input to the majority unit 100.
  • the converter 153 includes Z [17: 0], which is the lower bits of Z [30: 0], in addition to the redundant Z [30:18] and Z [31]. Entered.
  • the converter 153 converts the input 1's complement data into 2's complement data and outputs the converted data to the adder 154.
  • the adder 154 adds (accumulates) the two's complement data converted by the converter 153 and the data (combination of AC [31:18] and AC [17: 0]) from the subsequent stage, The resulting two's complement cumulative addition data (AC [31:18]) is output.
  • the two's complement cumulative addition data (AC) obtained from the data (AC [31:18]) obtained by the operation of the adder 154 and the data (AC [17: 0]) obtained by the operation of the adder 152 AC [31: 0]) obtained by combining [31:18] and AC [17: 0] is input to the majority unit 100.
  • the converter 155 includes Z [17: 0] which is the lower bits of Z [30: 0]. ] Is entered.
  • the converter 155 converts the input 1's complement data into 2's complement data, and outputs the converted data to the adder 156.
  • the adder 156 adds (cumulative addition) the 2's complement data converted by the converter 155 and the data from the subsequent stage (combination of AC [31:18] and AC [17: 0]), The resulting two's complement cumulative addition data (AC [31:18]) is output. Then, the two's complement cumulative addition data (AC) obtained from the data (AC [31:18]) obtained by the calculation of the adder 156 and the data (AC [17: 0]) obtained by the calculation of the adder 152 AC [31: 0]) obtained by combining [31:18] and AC [17: 0] is input to the majority unit 100.
  • the majority unit 100 includes 32-bit data obtained by the cumulative addition of the adder 152, 32-bit data obtained by the cumulative addition of the adder 154, and 32-bit data obtained by the cumulative addition of the adder 156. Entered.
  • the majority decision unit 100 performs majority decision to select data that matches two or more of the three input data, and obtains 32-bit data (AC [31: 0]) obtained as a result. Is output.
  • FIG. 8 is a diagram illustrating a configuration example of an arithmetic processing device to which the present technology is applied.
  • the arithmetic processing device 10 is a device capable of performing neural network operations on input data.
  • the arithmetic processing device 10 is, for example, an imaging device having an imaging function, an information processing device such as a personal computer or a server, or an electronic device such as an FPGA (Field Programmable Gate Array).
  • an arithmetic processing unit 10 includes an image acquisition unit 11, an error correction unit 12, a memory controller 13, an external DRAM (Dynamic Random Access Memory) 14, a data buffer memory 15, an error correction unit 16, and an image recognition neural network processing unit. 17, a coefficient memory 18, an error correction unit 19, and a processor 20.
  • the image acquisition unit 11, the error correction unit 12, the data buffer memory 15, the coefficient memory 18, and the processor 20 are respectively connected to a triple bus 31.
  • the error correction unit 12, the error correction unit 16, and the error correction unit 19 are each tripled.
  • the image acquisition unit 11 acquires image data such as a captured image obtained by imaging a subject from an external device, for example.
  • the image data acquired by the image acquisition unit 11 is supplied to the error correction unit 12 or the data buffer memory 15 via the triple bus 21.
  • the error correction unit 12 is supplied with the image data acquired by the image acquisition unit 11 via the triple bus 21.
  • the target image data the same data of all bits
  • three image data obtained as a result are supplied to the error correction unit 12 via the triple bus 21.
  • the error correction unit 12 performs a majority decision operation on the three image data from the image acquisition unit 11 by a majority decision unit, and selects two or more matching image data.
  • the majority voter used here is the same as the majority voter 100 of FIG. 2 described above. Then, the error correction unit 12 performs an error correction coding process on the image data (all bits thereof) that has been made one by the majority operation.
  • this error correction code for example, a Hamming code or a Reed-Solomon code can be used.
  • Image data that has been subjected to error correction coding by the error correction unit 12 is supplied to the memory controller 13.
  • the memory controller 13 writes the image data from the error correction unit 12 in the external DRAM 14.
  • image data is stored in the external DRAM 14.
  • the memory controller 13 reads the image data from the external DRAM 14 and supplies it to the error correction unit 12.
  • all bits of data processed by the memory controller 13 are made redundant.
  • the error correction unit 12 performs error correction decoding processing on the image data supplied from the memory controller 13 (error corrected encoded image data). Then, the error correction unit 12 duplicates the error correction-decoded image data (the same data in all bits), and outputs three image data obtained thereby via the triple bus 21.
  • the image data acquired by the image acquisition unit 11 is supplied to the data buffer memory 15 via the triple bus 21.
  • the data buffer memory 15 buffers the image data from the image acquisition unit 11 and supplies it to the error correction unit 16. However, it is assumed that the upper bits of the image data processed in the data buffer memory 15 are made redundant (triple).
  • the error correction unit 16 performs an error correction encoding process on the image data (the upper bits) from the data buffer memory 15.
  • this error correction code for example, a Hamming code or a Reed-Solomon code can be used.
  • the image data error-corrected and encoded by the error correction unit 16 is supplied to the image recognition neural network processing unit 17.
  • the weight coefficient is supplied to the coefficient memory 18 from, for example, the processor 20 or an external device via the triple bus 21.
  • the coefficient memory 18 stores the weight coefficient.
  • the upper bits are made redundant (triple).
  • the weighting coefficient stored in the coefficient memory 18 is supplied to the error correction unit 19.
  • the error correction unit 19 performs an error correction encoding process on the weight coefficient (the upper bits) from the coefficient memory 18.
  • this error correction code for example, a Hamming code or a Reed-Solomon code can be used.
  • the weighting coefficient subjected to error correction coding by the error correction unit 19 is supplied to the image recognition neural network processing unit 17.
  • the image recognition neural network processing unit 17 is supplied with the image data from the error correction unit 16 and the weight coefficient from the error correction unit 19.
  • the image recognition neural network processing unit 17 performs a neural network operation for image recognition using image data as input data and a weighting coefficient.
  • the image data (X) read from the data buffer memory 15 and the weight coefficient (Y) read from the coefficient memory 18 are all made redundant (triple) because only the upper bid is made redundant. As described above, it is possible to perform more reliable calculation while reducing power consumption and reducing the circuit area compared to the case where the bit of the bit is made redundant. .
  • the error correction unit 16 performs error correction decoding processing on the data from the image recognition neural network processing unit 17 (error correction encoded data) (the upper bits thereof).
  • the error correction unit 16 supplies the data subjected to error correction decoding to the data buffer memory 15. Then, the data buffer memory 15 outputs the data of the neural network calculation result supplied from the error correction unit 16 via the triple bus 21.
  • the data to be subjected to the neural network calculation by the image recognition neural network processing unit 17 is the image data acquired by the image acquisition unit 11.
  • the data is read from the external DRAM 14, for example.
  • Other data such as image data may be the target of the operation of the neural network.
  • the processor 20 performs predetermined arithmetic processing and control processing. However, all bits of data processed by the processor 20 are made redundant. For example, the processor 20 controls the operation of each unit of the arithmetic processing device 10.
  • the arithmetic processing unit 10 is configured as described above.
  • FIG. 9 is a diagram illustrating a conceptual configuration example of a convolutional neural network (CNN).
  • the convolutional neural network in FIG. 9 includes three layers: a first layer 301 with a feature number of 3, a second layer 302 with a feature number of 2, and a third layer 303 with a feature number of 1.
  • the image I is, for example, raster-scanned image data and corresponds to input data of a convolutional neural network.
  • feature planes F1-1 to F1-3 indicate the feature planes of the first layer 301.
  • the feature plane is an image data plane showing a processing result obtained by performing a calculation while scanning data of the previous layer with a predetermined feature extraction filter (for example, a convolution filter). Since this feature plane is a detection result for the raster-scanned image data, the detection result is represented by a plane.
  • a predetermined feature extraction filter for example, a convolution filter
  • the feature planes F1-1 to F1-3 are generated by nonlinearly transforming the calculation results of the two-dimensional convolution filters 311-1 to 311-3 for the image I.
  • An image area A in the image I indicates a reference image area necessary for the convolution calculation of the convolution filters 311-1 to 311-3.
  • the convolution filters 311-1 to 311-3 are convolution kernels having different coefficients. Also, the size of the convolution kernel varies depending on the feature plane.
  • a feature plane is generated by performing a product-sum operation while scanning a plurality of filter kernels in units of pixels and nonlinearly transforming a final product-sum result. For example, when the feature plane F1-1 is calculated in the first layer 301, the number of connections with the previous layer is 1, so that the convolution filter 311-1 is one filter kernel.
  • the feature plane F2-1 and the feature plane F2-2 are calculated in the second hierarchy 302, since the number of connections with the previous hierarchy (the feature plane) is 3, each of the convolution filters The calculation results of 312-1 to 312-3 and the calculation results of the convolution filters 312-4 to 312-6 are cumulatively added. That is, for example, the feature plane F2-1 can be obtained by accumulating the outputs of the convolution filters 312-1 to 312-3 and finally performing nonlinear conversion.
  • the convolution filters 312-1 to 312-6 are all convolution kernels having different filter coefficients. Further, the convolution filters 312-1 to 312-3 and the convolution filters 312-4 to 312-6 have different kernel sizes.
  • the basic configuration of the cumulative addition and nonlinear transformation processing of each convolution filter 312 is the same as the configuration of a general neuron.
  • the neuron includes a multiplier that multiplies input data (in_1 to in_n) and a weighting coefficient (w_1 to w_n), a cumulative adder that cumulatively adds operation results from a plurality of multipliers, and a cumulative adder.
  • a non-linear conversion unit that non-linearly converts and outputs the calculation result from
  • the filter coefficients of the convolution kernel correspond to the weight coefficients w_1 to w_n.
  • a plurality of previous levels such as the feature plane F2-1 and the feature plane F2-2 in the second hierarchy 302 and the feature plane F3 in the third hierarchy 303.
  • a plurality of The calculation result of the convolution kernel is accumulated by the cumulative adder.
  • the number of connections corresponds to the number of feature planes of the convolution kernel size ⁇ the previous hierarchy.
  • the convolutional neural network shows superior performance in many tasks in the field of image recognition by hierarchically combining the results for each feature extraction while retaining the results in units of image planes. .
  • a convolutional neural network if input data and filter coefficients (weight coefficients) are made redundant (for example, triple), the reliability of data can be improved. However, a large number of arithmetic units are included in the convolution filter. Therefore, costs such as power consumption and circuit area become very large. On the other hand, in the convolutional neural network, if this technology is applied to make only the more important specific bits (for example, upper bits) redundant among all the bits, it will consume more than if all the bits are made redundant. The circuit area can be reduced while reducing power.
  • FIG. 10 is a diagram illustrating a configuration example of a convolution operation unit that performs an operation of a convolutional neural network (CNN).
  • CNN convolutional neural network
  • a systolic array 400A and a systolic array 400B have a configuration in which a plurality of arithmetic units having the same configuration are connected to each other. Each arithmetic unit is arranged in three stages from the input side to which data from the previous layer is input toward the output side to output the convolution calculation result data.
  • the systolic array 400A has four calculation lines each consisting of a three-stage calculator.
  • two calculation lines that is, a calculation line composed of the arithmetic units 412-1 to 412-3 and a calculation line composed of the arithmetic units 423-1 to 423-3. Is shown.
  • Flip-flop circuits 411-1 to 411-3 are provided in the operation line composed of the arithmetic units 412-1 to 412-3.
  • the weighting factors (W) are input to the computing units 412-1 to 412-3, respectively.
  • flip-flop circuits 421-1 to 421-3 are provided in the operation line composed of the arithmetic units 423-1 to 423-3.
  • the weighting factor (W) is input to each of the computing units 423-1 to 423-3.
  • the remaining two calculation lines are not shown, but are configured in the same manner as the calculation lines shown in FIG.
  • the systolic array 400A convolution operations are performed in parallel by sequentially transferring the operation results of the operation units of each stage to the output-side operation unit for each operation cycle in each of the four operation lines. I try to do it.
  • the calculation result data obtained by each calculation line is added by the adders 401-1 to 401-4 and output as convolution calculation result data.
  • the systolic array 400B has four calculation lines each consisting of a three-stage calculator. In the example of FIG. 10, one calculation line among the four calculation lines, that is, a calculation line including the calculators 422-1 to 422-3 is shown.
  • Flip-flop circuits 421-1 to 421-3 are provided in the operation line composed of the arithmetic units 422-1 to 422-3. Also, the weighting factor (W) is input to each of the computing units 422-1 to 422-3. Although the remaining three calculation lines are not shown, they are configured in the same manner as the calculation lines shown in FIG.
  • the convolution operations are performed in parallel by sequentially transferring the operation results of the operation units of each stage to the output-side operation unit for each operation cycle in each of the four operation lines. I try to do it.
  • the calculation result data obtained by each calculation line is added by the adders 402-1 to 402-4, and is output as convolution calculation result data.
  • the comparator 403 receives convolution operation result data from the systolic array 400A and convolution operation result data from the systolic array 400B. The comparator 403 compares the two input data, and outputs the data having the larger value as the maximum convolution calculation result data.
  • the configuration example of the convolution operation unit has been shown.
  • the operation units constituting each operation line of the systolic array are composed of operation units such as an adder and a multiplier, and a large number of operations are performed. Since all the bits of the input data and the weighting factor (W) are made redundant, costs such as power consumption and circuit area become very large.
  • W weighting factor
  • this type of convolution operation unit if this technology is applied to make only a more important specific bit (for example, upper bit) redundant among all bits, all bits are made redundant. In comparison, the circuit area can be reduced while reducing power consumption.
  • FIG. 11A shows an example of a fixed-point format.
  • “s” is a sign portion that represents a positive or negative sign with 1 bit. For example, when the value of “s” is “0”, the sign is positive, and when the value is “1”, the sign is negative.
  • “M” is a numerical value part. For example, when a decimal point is fixed to the least significant bit, it is an integer part.
  • B in FIG. 11 shows an example of a floating point format.
  • s is a sign part and represents a positive / negative sign with 1 bit.
  • E is an exponent part and represents a power part in the floating point.
  • M is a mantissa part, and is a part that becomes a valid character when expressing an exponent part. For example, in the case of A ⁇ 10B, A is a mantissa part.
  • the floating point format by specifying the mantissa part and the exponent part, numerical values can be expressed in a wider range than in the fixed point format.
  • the floating-point format for example, a floating-point number defined by IEEE754 (IEEE floating-point arithmetic standard) can be adopted.
  • the circuit area can be reduced while reducing power consumption compared to the case where all bits are made redundant.
  • the upper bits are tripled and the lower bits are also duplicated, and when a hardware error is detected by a majority operation by the majority unit 100, a spare arithmetic unit prepared in advance is switched. To do. As a result, it is possible to continue normal operation with the spare computing unit.
  • the FPGA Field Programmable Gate Array
  • a hardware error is detected by a majority decision operation by the majority decision unit 100
  • a logic that has not failed is detected.
  • the FPGA can continue to operate normally.
  • the autonomous type automatic driving device has a function to determine the operation autonomously based on the information obtained by the image recognition processing using the calculation of the neural network, for example, as described above.
  • the configuration of the present technology can also be applied to a calculation unit that performs calculation of the neural network. Even under such special circumstances, it is possible to perform more reliable neural network operations while reducing power consumption and circuit area.
  • a circuit that is multiplexed (redundant) and a majority operation is performed by the majority controller 100 can mask a failure that has occurred in a single circuit.
  • a failure occurring in a single circuit can be masked, so that it can be said that the yield is improved. That is, the configuration of the present technology can be used as a measure for improving yield if the hardware error is a single failure.
  • the image recognition neural network processing unit 17 performs a neural network operation using the image data acquired by the image acquisition unit 11.
  • the image data used in the network operation can be any type of image data, such as image data output from an image sensor or image data in a predetermined file format. Moreover, not only image data but also data of any format such as audio data and text data can be targeted.
  • triple has been basically described as an example.
  • multiplexing redundancy
  • other forms of multiplexing redundancy
  • such as increasing the multiplicity can be adopted.
  • the series of processes described above can be executed by hardware or software.
  • a program constituting the software is installed in the computer.
  • the computer includes, for example, a general-purpose personal computer capable of executing various functions by installing a computer incorporated in dedicated hardware and various programs.
  • FIG. 12 is a block diagram showing an example of the hardware configuration of a computer that executes the above-described series of processing by a program.
  • a CPU Central Processing Unit
  • ROM Read Only Memory
  • RAM Random Access Memory
  • An input / output interface 1005 is further connected to the bus 1004.
  • An input unit 1006, an output unit 1007, a recording unit 1008, a communication unit 1009, and a drive 1010 are connected to the input / output interface 1005.
  • the input unit 1006 includes a keyboard, a mouse, a microphone, and the like.
  • the output unit 1007 includes a display, a speaker, and the like.
  • the recording unit 1008 includes a hard disk, a nonvolatile memory, and the like.
  • the communication unit 1009 includes a network interface or the like.
  • the drive 1010 drives a removable recording medium 1011 such as a magnetic disk, an optical disk, a magneto-optical disk, or a semiconductor memory.
  • the CPU 1001 loads, for example, the program stored in the recording unit 1008 to the RAM 1003 via the input / output interface 1005 and the bus 1004 and executes the program. A series of processing is performed.
  • the program executed by the computer 1000 can be provided by being recorded on a removable recording medium 1011 as a package medium, for example.
  • the program can be provided via a wired or wireless transmission medium such as a local area network, the Internet, or digital satellite broadcasting.
  • the program can be installed in the recording unit 1008 via the input / output interface 1005 by attaching the removable recording medium 1011 to the drive 1010.
  • the program can be received by the communication unit 1009 via a wired or wireless transmission medium and installed in the recording unit 1008.
  • the program can be installed in the ROM 1002 or the recording unit 1008 in advance.
  • the program executed by the computer 1000 may be a program that is processed in time series in the order described in this specification, or a necessary timing such as when a call is made in parallel. It may be a program in which processing is performed.
  • the program may be processed by one computer, or may be processed in a distributed manner by a plurality of computers. Furthermore, the program may be transferred to a remote computer and executed.
  • the system means a set of a plurality of components (devices, modules (parts), etc.), and it does not matter whether all the components are in the same housing. Accordingly, a plurality of devices housed in separate housings and connected via a network and a single device housing a plurality of modules in one housing are all systems. .
  • the embodiments of the present technology are not limited to the above-described embodiments, and various modifications can be made without departing from the gist of the present technology.
  • the present technology can take a configuration of cloud computing in which one function is shared by a plurality of devices via a network and jointly processed.
  • the present technology can take the following configurations.
  • the error correction unit is A first error correction unit provided between the arithmetic processing unit and the first memory unit;
  • the arithmetic processing unit includes: An arithmetic unit for performing a product-sum operation on the weighting factor and the input data;
  • the arithmetic processing apparatus according to any one of (1) to (8), further comprising: a majority voter that performs majority computation on data obtained from the computing unit and outputs data obtained as a result.
  • an arithmetic processing method of an arithmetic processing device including an arithmetic processing unit that performs an arithmetic operation of a neural network
  • the arithmetic processing unit is In the calculation of the neural network, the weighting coefficient used for the calculation and some specific bits of the input data are processed so that the redundancy is higher than the remaining bits other than the specific bits.
  • An arithmetic processing method including steps.
  • 10 arithmetic processing units 11 image acquisition unit, 12 error correction unit, 13 memory controller, 14 external DRAM, 15 data buffer memory, 16 error correction unit, 17 image recognition neural network processing unit, 18 coefficient memory, 19 error correction unit, 20 processors, 21 triple bus, 100, 100A, 100A-1 to 100A-3, 100B, 100B-1 to 100B-3 voting machine, 111 multiplier, 112 multiplier, 113 multiplier, 114 adder, 115 Multiplier, 116 adder, 121 logic operator, 131 multiplier, 132 adder, 133 multiplier, 134 adder, 141 logic operator, 142 logic operator, 151 converter, 152 adder, 153 converter, 154 adder, 155 converter, 156 adder, 1000 computers, 1001 CPU

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • Neurology (AREA)
  • Hardware Redundancy (AREA)

Abstract

本技術は、より信頼性の高いニューラルネットワークの演算を行うに際し、消費電力を低減しつつ、回路面積を削減することができるようにする演算処理装置、及び、演算処理方法に関する。 演算処理装置は、ニューラルネットワークの演算において、当該演算に用いる重み係数と入力データの一部の特定のビットを、特定のビット以外の残りのビットよりも冗長性が多くなるように冗長化することで、より信頼性の高いニューラルネットワークの演算を行うに際し、消費電力を低減しつつ、回路面積を削減することができる。本技術は、例えば、ニューラルネットワークの演算を行う演算処理装置に適用することができる。

Description

演算処理装置、及び、演算処理方法
 本技術は、演算処理装置、及び、演算処理方法に関し、特に、より信頼性の高いニューラルネットワークの演算を行うに際し、消費電力を低減しつつ、回路面積を削減することができるようにした演算処理装置、及び、演算処理方法に関する。
 近年、ニューラルネットワークに関する研究や開発が盛んに行われている。ニューラルネットワークに関する技術としては、例えば、特許文献1が知られている。
特開2015-210709号公報
 ところで、ニューラルネットワークの演算を行う演算処理装置では、その演算の信頼性を高めることが求められるが、多くの演算器が用いられているため、単純に多重化した場合には、消費電力と回路面積が大きくなってしまう。そのため、より信頼性の高いニューラルネットワークの演算を行うに際し、消費電力を低減しつつ、回路面積を削減できるようにすることが望まれていた。
 本技術はこのような状況に鑑みてなされたものであり、より信頼性の高いニューラルネットワークの演算を行うに際し、消費電力を低減しつつ、回路面積を削減することができるようにするものである。
 本技術の一側面の演算処理装置は、ニューラルネットワークの演算を行う演算処理部を備え、前記ニューラルネットワークの演算において、当該演算に用いる重み係数と入力データの一部の特定のビットを、前記特定のビット以外の残りのビットよりも冗長性が多くなるように冗長化する演算処理装置である。
 演算処理装置は、独立した装置であってもよいし、演算処理装置の演算処理を行うブロックであってもよい。本技術の一側面の演算処理方法は、上述した本技術の一側面の演算処理装置に対応する演算処理方法である。
 本技術の一側面の演算処理装置及び演算処理方法においては、ニューラルネットワークの演算が行われる。そして、前記ニューラルネットワークの演算において、当該演算に用いる重み係数と入力データの一部の特定のビットが、前記特定のビット以外の残りのビットよりも冗長性が多くなるように冗長化される。
 本技術の一側面によれば、より信頼性の高いニューラルネットワークの演算を行うに際し、消費電力を低減しつつ、回路面積を削減することができる。
 なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
3重系多数決システムの構成例を示す図である。 多数決器の論理回路の構成例を示す図である。 複数の多数決器を設けた場合の構成例を示す図である。 1の補数の乗算のデータで、上位ビットの冗長化を行わない場合の演算の例を示す図である。 1の補数の乗算のデータで、上位ビットの冗長化を行う場合の演算の例を示す図である。 1の補数の乗算のデータで、上位ビットの冗長化を行い、さらに多数決器の冗長化を行う場合の例を示す図である。 2の補数の累加算のデータで、上位ビットの冗長化を行う場合の演算の例を示す図である。 本技術を適用した演算処理装置の構成例を示す図である。 畳み込みニューラルネットワークの概念的な構成例を示す図である。 畳み込み演算部の構成例を示す図である。 固定小数点形式と浮動小数点形式を説明する図である。 コンピュータの構成例を示す図である。
 以下、図面を参照しながら本技術の実施の形態について説明する。なお、説明は以下の順序で行うものとする。
1.本技術の概要
2.ニューラルネットワークの演算例
3.システムの構成
4.変形例
5.コンピュータの構成
<1.本技術の概要>
 放射線などによる単一の回路に発生した故障をマスクするための技術として、3重系多数決システム(TMR:Triple Modular Redundancy)が用いられることが多い。3重系多数決システムとは、システムの信頼性の向上を目的として、モジュール(ユニット)を3重化する冗長構成方式である。
 この3重系多数決システムにおいては、同一の機能のユニットを3つ搭載し、それらの処理結果を、多数決素子(VOTER)に通すことで、処理結果のうち、2つ以上が一致しているものが選択されるようにする。これにより、単一の回路に発生した故障がマスクされ、外部からは故障がないように見える。
 図1には、3重系多数決システムの構成例を示している。図1においては、同一の機能を有する3つのユニットとして、ユニット(UNIT0)90-1、ユニット(UNIT1)90-2、及びユニット(UNIT2)90-3が設けられている。各ユニットは、同一の入力に対して処理を行い、その処理結果を、多数決器(VOTER)100に出力する。
 多数決器100は、ユニット90-1乃至90-3から入力される3つの処理結果に対し、多数決演算を行うことで、2つ以上が一致している処理結果を選択し、それを出力結果として出力する。これにより、単一の回路に発生した故障をマスクすることが可能となる。
 なお、ここでは、3重系多数決システムを一例に説明したが、一般的には、2m+1重化の多数決システムでは、m個の故障をマスクすることが可能となる。ここで、mは、1以上の整数である。また、m+1個以上の故障をマスクすることはできないが、故障の検知はできるため、故障を検知した場合には出力結果を使用しないようにすることも可能である。
 ところで、ニューラルネットワークの演算を行う演算処理装置においても、その演算の信頼性を高めることが求められている。しかしながら、ニューラルネットワークの演算においても同様に、全ビットに対し、3重系多数決システムを適用すると、その回路面積や消費電力が大きくなってしまう。例えば、全ビットを多重化すると、その多重度に比例して増加して、回路面積や消費電力が3倍以上となることが想定される。
 また、ニューラルネットワークの演算を行う演算処理装置では、加算器や乗算器等の演算器が多く用いられるため、単純な多重化は、コストとして無視することはできない。そのため、より信頼性の高いニューラルネットワークの演算を行うに際し、消費電力を低減しつつ、回路面積を削減できるようにすることが望まれていた。
 そこで、本技術では、ニューラルネットワークの演算において、データの全ビットのうちの一部の特定のビットを、当該特定のビット以外の残りのビットよりも冗長性が多くなるように冗長化することで、より信頼性の高いニューラルネットワークの演算を行うに際し、消費電力を低減しつつ、回路面積を削減することができるようにする。
(多数決器の構成例)
 図2は、本技術で用いられる多数決器の論理回路の構成例を示す図である。
 図2において、多数決器100は、ANDゲート101-1、ANDゲート101-2、ANDゲート101-3、及びORゲート102から構成される。多数決器100には、その前段に設けられる、同一の機能を有する3つのユニットから、入力データin_0[n],入力データin_1[n],入力データin_2[n]がそれぞれ入力される。なお、nは、1以上の整数であって、多数決器100では、同一の番号nとなるデータが同時に処理される。
 ANDゲート101-1には、入力データin_0[n]と入力データin_1[n]が入力される。ANDゲート101-1は、2つの入力データの論理積を演算し、その結果得られるデータ(例えば2つの入力の最小値を示すデータ)を、ORゲート102に出力する。
 同様にして、ANDゲート101-2は、入力データin_0[n]と入力データin_2[n]の論理積を演算し、その結果得られるデータを、ORゲート102に出力する。また、ANDゲート101-3は、入力データin_1[n]と入力データin_2[n]の論理積を演算し、その結果得られるデータを、ORゲート102に出力する。
 ORゲート102には、ANDゲート101-1乃至101-3からのデータが入力される。ORゲート102は、入力されるデータの論理和を演算し、その結果得られる出力データout[n](例えば3つの入力の最大値を示すデータ)を、後段に出力する。
 以上のように、多数決器100においては、ANDゲート101-1乃至101-3とORゲート102によって、論理演算が行われ、3つの入力データ(in_0[n],in_1[n],in_2[n])のうち、2つ以上が一致している入力データ(多数派の値を示すデータ)が選択され、出力データ(out[n])として、出力される。これにより、単一の回路に発生した故障をマスクすることができる。
 また、図3に示すように、多数決器100を複数設けて、多数決器100を多重化するようにしてもよい。すなわち、単一の多数決器100を設けた場合には、多数決器100が単一の障害点になる恐れがあるため、複数の多数決器100を設けることで、より確実に、故障をマスクすることができるようにしている。図3には、多数決器100-1乃至100-7を設けて、多数決器100を7重にした例示している。
<2.ニューラルネットワークの演算例>
 次に、図4乃至図7を参照して、本技術を適用したニューラルネットワークの演算方法の例について説明する。なお、ここでは、比較のため、図4を参照して、特定のビット(上位ビット)を冗長化していない場合について説明してから、図5乃至図7を参照して、特定のビット(上位ビット)を冗長化した場合について説明する。
(上位ビットの冗長化を行わない場合の例)
 図4は、1の補数の乗算のデータで、上位ビットの冗長化を行わない場合の演算の例を示す図である。
 図4においては、X,Yのデータが、ニューラルネットワークの演算で用いられるが、例えば、これらのデータのうち、Xを、入力データとし、Yを、重み係数とすることができる。なお、ここでは、入力データ(X)と重み係数(Y)のデータ形式が、固定小数点の形式となる場合を例に説明する。このデータ形式については、後述する図5乃至図7においても同様とする。
 ここで、15ビットのデータであるX[14:0]は、上位6ビットのX[14:9]と、下位9ビットのX[8:0]により表すことができる。また、15ビットのデータであるY[14:0]は、上位6ビットのY[14:9]と、下位9ビットのY[8:0]により表すことができる。さらに、1ビットのデータであるX[15]とY[15]は、正負符号を示す最上位の1ビットを表している。
 乗算器111において、X[14:0]とY[14:0]の上位ビット同士を乗算することで、12ビットのX[14:9]・Y[14:9]が得られる。そして、乗算器111で得られる演算結果に対し、その下位ビットに、すべて0の18ビット(18'b0)を結合することで、30ビットのデータ(X[14:9]・Y[14:9]と、18'b0との結合)が得られる。
 乗算器112において、X[14:0]の下位ビットと、Y[14:0]の上位ビットとを乗算することで、X[8:0]・Y[14:9]が得られる。また、乗算器113において、Y[14:0]の下位ビットと、X[14:0]の上位ビットとを乗算することで、Y[8:0]・X[14:9]が得られる。
 そして、加算器114において、乗算器112で得られる演算結果と、乗算器113で得られる演算結果とを加算することで、X[8:0]・Y[14:9] + Y[8:0]・X[14:9]が得られる。また、ここで得られる16ビットのデータに対し、その下位ビットに、すべて0の9ビット(9'b0)を結合することで、25ビットのデータ(X[8:0]・Y[14:9] + Y[8:0]・X[14:9]と、9'b0との結合)が得られる。
 乗算器115において、X[14:0]とY[14:0]の下位ビット同士を乗算することで、18ビットのデータとして、X[8:0]・Y[8:0]が得られる。
 加算器116においては、乗算器111の演算で得られる30ビットのデータと、乗算器112乃至加算器114の演算で得られる25ビットのデータと、乗算器115の演算で得られる18ビットのデータとが加算される。その結果、31ビットのデータとして、Z[30:0]が得られる。
 また、図4においては、論理演算器121において、最上位ビット同士であるX[15]とY[15]との排他的論理和(EXOR)が演算されることで、1ビットのデータとして、正負符号を示すZ[31]が得られる。
 ここで、上述した演算の関係を数式で表せば、下記の式(1)と式(2)により表すことができる。ただし、式(1)は、図4の乗算器111乃至加算器116で行われる積和演算を表している。また、式(2)は、図4の論理演算器121で行われる論理演算を表している。
 Z[30:0] = X[14:0]・Y[14:0]
         = (X[14:9]・2^9 + X[8:0]) (Y[14:9]・2^9 + Y[8:0])
         = X[14:9]・Y[14:9]・2^18 + (X[8:0]・Y[14:9]+ Y[8:0]・X[14:9])・2^9 + X[8:0]・Y[8:0]   ・・・(1)
 X[31] exor Y[31]   ・・・(2)
 ただし、式(1)において、「・」は、乗算を意味し、「^」は、べき乗を表している。また、式(2)において、「exor」は、排他的論理和(EXOR)を意味している。
 以上のように、ニューラルネットワークの演算では、例えば、入力データ(X)と重み係数(Y)とが積和演算され、その結果得られるデータ(Z)が出力されることになる。
(上位ビットの冗長化を行う場合の例)
 図5は、1の補数の乗算のデータで、上位ビットの冗長化を行う場合の演算の例を示す図である。
 ただし、図5の構成において、図4の構成と同様の箇所には、同一の符号が付してあり、その説明は適宜省略するものとする。なお、図5の構成において、図4の構成に対し、追加された部分については、太線で表している。
 すなわち、図5の構成においては、図4の構成と比べて、乗算器111、乗算器112、乗算器113、加算器114、乗算器115、及び加算器116のほかに、乗算器131、加算器132、乗算器133、加算器134、及び多数決器(VOTER)100Aが追加で設けられている。なお、多数決器100Aは、図2に示した構成を有している。
 また、図5の構成においては、図4の構成と比べて、論理演算器121のほかに、論理演算器141、論理演算器142、及び多数決器(VOTER)100Bが追加で設けられている。なお、多数決器100Bは、図2に示した構成を有している。
 また、図5の構成においては、図4の構成と同様に、X,Yのデータが、ニューラルネットワークの演算で用いられるが、例えば、これらのデータのうち、Xを、入力データとし、Yを、重み係数とすることができる。
 ここで、図5においては、15ビットのデータであるX[14:0]の上位ビットが冗長化されるため、上位ビットであるX[14:9]が3つ入力される。同様に、15ビットのデータであるY[14:0]の上位ビットが冗長化されるため、上位ビットであるY[14:9]が3つ入力される。また、最上位ビットを表すX[15]とY[15]についても冗長化され、X[15]とY[15]がそれぞれ3つずつ入力される。
 図5においては、上述したように、乗算器111乃至加算器116によって、X[14:0](上位ビット:X[14:9]、下位ビット:X[8:0])と、Y[14:0](上位ビット:Y[14:9]、下位ビット:Y[8:0])に対する演算が行われることで、31ビットのデータが得られる。この31ビットのデータは、多数決器100Aに入力される。
 また、乗算器131において、冗長化された上位ビット同士であるX[14:9]とY[14:9]を乗算することで、X[14:9]・Y[14:9]が得られる。また、乗算器131で得られる演算結果に対し、その下位ビットに、すべて0の18ビット(18'b0)を結合することで、30ビットのデータ(X[14:9]・Y[14:9]と、18'b0との結合)が得られる。
 そして、加算器132において、乗算器131の演算で得られる30ビットのデータと、乗算器112乃至加算器114の演算で得られる25ビットのデータと、乗算器115の演算で得られる18ビットのデータとが加算される。その結果得られる、31ビットのデータは、多数決器100Aに入力される。
 同様にして、乗算器133において、冗長化された他の上位ビット同士であるX[14:9]とY[14:9]を乗算することで、X[14:9]・Y[14:9]が得られる。また、乗算器133で得られる演算結果に対し、その下位ビットに、すべて0の18ビット(18'b0)を結合することで、30ビットのデータ(X[14:9]・Y[14:9]と、18'b0との結合)が得られる。
 そして、加算器134において、乗算器133の演算で得られる30ビットのデータと、乗算器112乃至加算器114の演算で得られる25ビットのデータと、乗算器115の演算で得られる18ビットのデータとが加算される。その結果得られる、31ビットのデータは、多数決器100Aに入力される。
 多数決器100Aには、加算器116の演算で得られる31ビットのデータと、加算器132の演算で得られる31ビットのデータと、加算器134の演算で得られる31ビットのデータが入力される。多数決器100Aは、多数決演算を行うことで、入力された3つのデータのうち、2つ以上が一致しているデータを選択し、その結果得られる31ビットのデータ(Z[30:0])を出力する。
 図5においては、上述したように、論理演算器121によって、最上位ビット同士であるX[15]とY[15]との排他的論理和(EXOR)が演算されることで、1ビットのデータが得られる。この1ビットのデータは、多数決器100Bに入力される。
 また、論理演算器141において、冗長化された最上位ビット同士であるX[15]とY[15]との排他的論理和が演算され、その結果得られる1ビットのデータが、多数決器100Bに入力される。同様にして、論理演算器142において、冗長化された他の最上位ビット同士であるX[15]とY[15]との排他的論理和が演算され、その結果得られる1ビットのデータが、多数決器100Bに入力される。
 多数決器100Bには、論理演算器121の演算で得られる1ビットのデータと、論理演算器141の演算で得られる1ビットのデータと、論理演算器142の演算で得られる1ビットのデータが入力される。多数決器100Bは、多数決演算を行うことで、入力された3つのデータのうち、2つ以上が一致しているデータを選択し、その結果得られる、正負符号を示す1ビットのZ[31]を出力する。
 以上のように、例えば、入力データ(X)と重み係数(Y)の上位ビットの冗長化を行った場合、ニューラルネットワークの演算では、入力データ(X)と重み係数(Y)とが積和演算され、その結果得られるデータ(Z)が、多数決器100を介して出力されるが、上位ビットが冗長化されているため、より信頼性の高い演算を行うことができる。
 また、ニューラルネットワークの演算では、加算器や乗算器等の演算器が多く用いられるため、単純な多重化を適用すると、消費電力や回路面積等のコストが非常に大きなものとなるが、図5に示した演算の例では、全ビットのうち上位ビットのみを冗長化しているため、全てのビットを冗長化した場合と比べて、消費電力を低減しつつ、回路面積を削減することができる。
 ここで、本技術の発明者によるシミュレーションによれば、例えば、16ビットのうち、上位の5ビットを3重に冗長化することで、全部のビットを3重に冗長化した場合と比べて、回路面積を約半分の大きさに抑えることができるという結果が得られた。また、この結果を数式で表せば、下記の式(3)のように表すことができる。
 (16 + 2 × 5) / (16 × 3) = 0.54    ・・・(3)
 なお、図5に示した演算の例において、冗長化の対象となる特定のビットとして、上位ビットを選択している理由であるが、上位ビットは、下位ビット等の他のビットと比べて、重要なビットである可能性が高いことや、正負の符号を示しているビットである可能性があること、などによるものである。
 すなわち、冗長化の対象となるビットは、ここでは、上位ビットとして説明したが、上位ビットに限らず、重要なビットであれば、他のビットでもよい。また、より重要なビットが、それ以外の他のビットよりも冗長化されていればよく、重要なビット以外の他のビットが冗長化されていてもよい。冗長化の対象のビット数も任意である。また、ビット列の順番を並び代えて、所定のビットを、冗長化してもよい。例えば、ビット列の順番を並び代えて、下位のビットを冗長化するようにしてもよい。
(多数決器を多重化した場合の例)
 図6は、1の補数の乗算のデータで、上位ビットの冗長化を行い、さらに多数決器の多重化(冗長化)を行う場合の例を示す図である。
 ただし、図6の構成において、図4及び図5の構成と同様の箇所には、同一の符号が付してあり、その説明は適宜省略するものとする。なお、図6の構成において、図5の構成に対し、追加された部分については、太線で表している。
 すなわち、図6の構成においては、図5の構成と比べて、乗算器111、乗算器112、乗算器113、加算器114、乗算器115、乗算器131、加算器132、乗算器133、加算器134、及び多数決器100A(100A-1)のほかに、多数決器(VOTER)100A-2及び多数決器(VOTER)100A-3が追加で設けられている。なお、多数決器100A-1乃至100A-3は、図2に示した構成を有している。すなわち、図6の構成では、図3に示したように、多数決器100が多重化されている。
 また、図6の構成においては、図5の構成と比べて、論理演算器121、論理演算器141、論理演算器142、及び多数決器100B(100B-1)のほかに、多数決器(VOTER)100B-2及び多数決器(VOTER)100B-3が追加で設けられている。なお、多数決器100B-1乃至100B-3は、図2に示した構成を有している。
 また、図6の構成においては、図4及び図5の構成と同様に、X,Yのデータが、ニューラルネットワークの演算で用いられるが、例えば、これらのデータのうち、Xを、入力データとし、Yを、重み係数とすることができる。
 図6においては、上述したように、多数決器100A-1によって、加算器116、加算器132、及び加算器134から入力されたデータに基づいて、多数決演算が行われ、その結果得られる31ビットのZ[30:0]が出力される。
 また、多数決器100A-2には、加算器116、加算器132、及び加算器134のそれぞれで演算されたデータが入力される。多数決器100A-2は、多数決演算を行うことで、入力された3つのデータのうち、2つ以上一致しているデータを選択し、その結果得られる13ビットのZ[30:18]を出力する。
 同様にして、多数決器100A-3では、加算器116、加算器132、及び加算器134のそれぞれで演算されたデータが入力され、入力されたデータによる多数決演算が行われ、その結果得られる13ビットのZ[30:18]が出力される。
 図6においては、上述したように、多数決器100B-1によって、論理演算器121、論理演算器141、及び論理演算器142から入力された1ビットのデータに基づいて、多数決演算が行われ、その結果得られる正負符号を示す1ビットのZ[31]が出力される。
 また、多数決器100B-2には、論理演算器121、論理演算器141、及び論理演算器142のそれぞれで演算された1ビットのデータが入力される。多数決器100B-2は、多数決演算を行うことで、入力された3つのデータのうち、2つ以上一致しているデータを選択し、その結果得られる正負符号を示す1ビットのZ[31]を出力する。
 同様にして、多数決器100B-3では、論理演算器121、論理演算器141、及び論理演算器142のそれぞれで演算された1ビットのデータが入力され、入力されたデータによる多数決演算が行われ、その結果得られる正負符号を示す1ビットのZ[31]が出力される。
 以上のように、例えば、入力データ(X)と重み係数(Y)の上位ビットの冗長化を行い、さらに、多数決器100の多重化(冗長化)を行った場合、ニューラルネットワークの演算では、入力データ(X)と重み係数(Y)とが積和演算され、その結果得られるデータ(Z)が、多数決器100を介して出力されるが、上位ビットと多数化器100が冗長化されているため、より信頼性の高い演算を行うことができる。
 また、ニューラルネットワークの演算では、加算器や乗算器等の演算器が多く用いられるため、単純な多重化を適用すると、消費電力や回路面積等のコストが非常に大きなものとなるが、図6に示した演算の例では、全ビットのうち上位ビットのみを冗長化しているため、全てのビットを冗長化した場合と比べて、消費電力を低減しつつ、回路面積を削減することができる。
(2の補数の累加算のデータで、上位ビットの冗長化を行う場合の例)
 図7は、2の補数の累加算のデータで、上位ビットの冗長化を行う場合の演算の例を示す図である。
 ここで、図7においては、31ビットのデータであるZ[30:0]の上位ビットが冗長化されるため、3つのZ[30:18]がそれぞれ入力される。同様に、最上位の1ビットのデータであるZ[31]についても冗長化され、3つのZ[31]がそれぞれ入力される。
 図7において、変換器151には、1の補数のデータとして、Z[30:0]の上位ビットであるZ[30:18]と、下位ビットであるZ[17:0]と、正負符号を示す最上位ビットとしてのZ[31]が入力される。変換器151は、入力された1の補数のデータを、2の補数のデータへ変換し、加算器152に出力する。
 加算器152は、変換器151により変換された2の補数のデータと、後段からの2の補数のデータとを加算(累加算)し、その結果得られる2の補数の累加算のデータとして、AC[31:0](AC[31:18]とAC[17:0]との結合)を出力する。これにより得られる2の補数の累加算のデータ(AC[31:0])は、多数決器100に入力される。
 変換器153には、1の補数のデータとして、冗長化されたZ[30:18]とZ[31]のほかに、Z[30:0]の下位ビットであるZ[17:0]が入力される。変換器153は、入力された1の補数のデータを、2の補数のデータに変換し、加算器154に出力する。
 加算器154は、変換器153により変換された2の補数のデータと、後段からのデータ(AC[31:18]とAC[17:0]との結合)とを加算(累加算)し、その結果得られる2の補数の累加算のデータ(AC[31:18])を出力する。そして、加算器154の演算で得られるデータ(AC[31:18])と、加算器152の演算で得られるデータ(AC[17:0])から得られる2の補数の累加算データ(AC[31:18]とAC[17:0]とを結合したAC[31:0])が、多数決器100に入力される。
 変換器155には、1の補数のデータとして、冗長化された他のZ[30:18]とZ[31]のほかに、Z[30:0]の下位ビットであるZ[17:0]が入力される。変換器155は、入力された1の補数のデータを、2の補数のデータに変換し、加算器156に出力する。
 加算器156は、変換器155により変換された2の補数のデータと、後段からのデータ(AC[31:18]とAC[17:0]との結合)とを加算(累加算)し、その結果得られる2の補数の累加算のデータ(AC[31:18])を出力する。そして、加算器156の演算で得られるデータ(AC[31:18])と、加算器152の演算で得られるデータ(AC[17:0])から得られる2の補数の累加算データ(AC[31:18]とAC[17:0]とを結合したAC[31:0])が、多数決器100に入力される。
 多数決器100には、加算器152の累加算で得られる32ビットのデータと、加算器154の累加算で得られる32ビットのデータと、加算器156の累加算で得られる32ビットのデータが入力される。多数決器100は、多数決演算を行うことで、入力された3つのデータのうち、2つ以上が一致しているデータを選択し、その結果得られる32ビットのデータ(AC[31:0])を出力する。
 以上のように、2の補数の累加算のデータ(AC)の上位ビットの冗長化を行った場合、ニューラルネットワークの演算では、2の補数の累加算が行われ、その結果得られるデータ(AC)が、多数決器100を介して出力されるが、上位ビットが冗長化されているため、より信頼性の高い演算を行うことができる。
 また、ニューラルネットワークの演算では、加算器等の演算器が多く用いられるため、単純な多重化を適用すると、消費電力や回路面積等のコストが非常に大きなものとなるが、図7に示した演算の例では、全ビットのうち上位ビットのみを冗長化しているため、全てのビットを冗長化した場合と比べて、消費電力を低減しつつ、回路面積を削減することができる。
 なお、図7に示した演算の例では、1の補数のデータを2の補数のデータに変換してから処理しているため、上述した1の補数のデータの演算を行う場合のように、正負の符号を考慮する必要はない。また、上述したニューラルネットワークの演算では、1の補数のデータと2の補数のデータに対する演算を一例に説明したが、他の形式のデータに対しても同様に処理することができる。
<3.システムの構成>
(演算処理装置の構成例)
 図8は、本技術を適用した演算処理装置の構成例を示す図である。
 演算処理装置10は、入力されたデータに対し、ニューラルネットワークの演算を行うことが可能な機器である。演算処理装置10は、例えば、撮像機能を備える撮像装置や、パーソナルコンピュータやサーバ等の情報処理装置、FPGA(Field Programmable Gate Array)などの電子機器である。
 図8において、演算処理装置10は、画像取得部11、誤り訂正部12、メモリコントローラ13、外部DRAM(Dynamic Random Access Memory)14、データバッファメモリ15、誤り訂正部16、画像認識ニューラルネットワーク処理部17、係数メモリ18、誤り訂正部19、及びプロセッサ20から構成される。
 また、画像取得部11と、誤り訂正部12と、データバッファメモリ15と、係数メモリ18と、プロセッサ20は、3重化された3重化バス21にそれぞれ接続されている。なお、演算処理装置10において、誤り訂正部12、誤り訂正部16、及び誤り訂正部19は、それぞれ3重化されている。
 画像取得部11は、例えば、外部の装置などから、被写体を撮像して得られる撮像画像等の画像データを取得する。画像取得部11により取得された画像データは、3重化バス21を介して、誤り訂正部12、又は、データバッファメモリ15に供給される。
 誤り訂正部12には、3重化バス21を介して、画像取得部11により取得された画像データが供給される。なお、ここでは、対象の画像データ(全ビット同じデータ)を複製することで、その結果得られる3つの画像データが、3重化バス21を介して、誤り訂正部12に供給されることになる。
 誤り訂正部12は、画像取得部11からの3つの画像データに対し、多数決器により多数決演算を行うことで、2つ以上が一致している画像データを選択する。なお、ここで用いられる多数決器は、上述した図2の多数決器100と同様である。そして、誤り訂正部12は、多数決演算により1つとされた画像データ(の全ビット)に対し、誤り訂正符号化の処理を施す。この誤り訂正符号としては、例えば、ハミング符号やリードソロモン符号などを用いることができる。
 誤り訂正部12により誤り訂正符号化された画像データは、メモリコントローラ13に供給される。メモリコントローラ13は、誤り訂正部12からの画像データを、外部DRAM14に書き込む。これにより、外部DRAM14には、画像データが記憶されることになる。一方で、外部DRAM14に記憶された画像データを読み出す場合、メモリコントローラ13は、外部DRAM14から画像データを読み出し、誤り訂正部12に供給する。ただし、メモリコントローラ13で処理されるデータは、全ビットが冗長化されている。
 誤り訂正部12は、メモリコントローラ13から供給される画像データ(誤り訂正符号化された画像データ)に対し、誤り訂正復号の処理を施す。そして、誤り訂正部12は、誤り訂正復号された画像データ(全ビット同じデータ)を複製することで、それにより得られる3つの画像データを、3重化バス21を介して出力する。
 データバッファメモリ15には、3重化バス21を介して、画像取得部11により取得された画像データが供給される。データバッファメモリ15は、画像取得部11からの画像データをバッファリングし、誤り訂正部16に供給する。ただし、データバッファメモリ15で処理される画像データは、上位ビットが冗長化(3重化)されているものとする。
 誤り訂正部16は、データバッファメモリ15からの画像データ(の上位ビット)に対し、誤り訂正符号化の処理を施す。この誤り訂正符号としては、例えば、ハミング符号やリードソロモン符号などを用いることができる。誤り訂正部16により誤り訂正符号化された画像データは、画像認識ニューラルネットワーク処理部17に供給される。
 係数メモリ18には、3重化バス21を介して、例えばプロセッサ20や外部の装置などから、重み係数が供給される。これにより、係数メモリ18には、重み係数が記憶される。ただし、係数メモリ18に記憶される重み係数(のデータ)は、上位ビットが冗長化(3重化)されているものとする。係数メモリ18に記憶された重み係数は、誤り訂正部19に供給される。
 誤り訂正部19は、係数メモリ18からの重み係数(の上位ビット)に対し、誤り訂正符号化の処理を施す。この誤り訂正符号としては、例えば、ハミング符号やリードソロモン符号などを用いることができる。誤り訂正部19により誤り訂正符号化された重み係数は、画像認識ニューラルネットワーク処理部17に供給される。
 画像認識ニューラルネットワーク処理部17には、誤り訂正部16からの画像データと、誤り訂正部19からの重み係数が供給される。画像認識ニューラルネットワーク処理部17は、入力データとしての画像データと、重み係数を用い、画像認識のためのニューラルネットワークの演算を行う。
 このニューラルネットワークの演算としては、例えば、上述した図5乃至図7に示した演算が行われる。すなわち、図5等のX,Yのデータのうち、X(入力データ)が、データバッファメモリ15から読み出された画像データに相当し、Y(重み係数)が、係数メモリ18から読み出された重み係数に相当することになる。そして、例えば、画像データ(X)と重み係数(Y)とを積和演算や累加算して得られるデータ(Z,AC)が、誤り訂正部16に供給される。
 なお、データバッファメモリ15から読み出された画像データ(X)と、係数メモリ18から読み出された重み係数(Y)は、上位ビッドのみが冗長化(3重化)されているので、全てのビットを冗長化した場合と比べて、消費電力を低減し、かつ、回路面積を削減しながらも、より信頼性の高い演算を行うことが可能になることは、先に述べた通りである。
 誤り訂正部16は、画像認識ニューラルネットワーク処理部17からのデータ(誤り訂正符号化されたデータ)(の上位ビット)に対し、誤り訂正復号の処理を施す。誤り訂正部16は、誤り訂正復号されたデータを、データバッファメモリ15に供給する。そして、データバッファメモリ15は、誤り訂正部16から供給される、ニューラルネットワーク演算結果のデータを、3重化バス21を介して出力する。
 なお、ここでは、画像認識ニューラルネットワーク処理部17によるニューラルネットワークの演算の対象となるデータが、画像取得部11により取得される画像データであると説明したが、例えば、外部DRAM14から読み出された画像データなど、他のデータが、ニューラルネットワークの演算の対象となるようにしてもよい。
 プロセッサ20は、所定の演算処理や制御処理を行う。ただし、プロセッサ20により処理されるデータは、全ビットが冗長化されている。例えば、プロセッサ20は、演算処理装置10の各部の動作を制御する。
 演算処理装置10は、以上のように構成される。
(ニューラルネットワークの演算例)
 次に、図9乃至図10を参照して、画像認識ニューラルネットワーク処理部17(図8)により演算されるニューラルネットワークの構成例について説明する。
(畳み込みニューラルネットワークの構成例)
 図9は、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)の概念的な構成例を示す図である。
 図9の畳み込みニューラルネットワークは、特徴数が3となる第1階層301、特徴数が2となる第2階層302、及び特徴数が1となる第3階層303の3階層で構成される。
 ここで、画像Iは、例えば、ラスタスキャンされた画像データであって、畳み込みニューラルネットワークの入力データに相当する。また、特徴面F1-1乃至F1-3は、第1階層301の特徴面を示している。
 なお、特徴面とは、所定の特徴抽出フィルタ(例えばコンボリューションフィルタ)で、前の階層のデータを走査しながら演算することで得られた処理結果を示す画像データ面である。この特徴面は、ラスタスキャンされた画像データに対する検出結果であるため、当該検出結果は、面で表される。
 特徴面F1-1乃至F1-3は、画像Iに対する、2次元のコンボリューションフィルタ311-1乃至311-3の演算結果を、非線形変換することで、生成される。なお、画像I内の画像領域Aは、コンボリューションフィルタ311-1乃至311-3のコンボリューション演算に必要な参照画像領域を示している。
 コンボリューションフィルタ311-1乃至311-3は、それぞれ異なる係数のコンボリューションカーネルである。また、特徴面によって、コンボリューションカーネルのサイズも異なっている。
 畳み込みニューラルネットワークでは、複数のフィルタカーネルを画素単位で走査しながら、積和演算を繰り返して、最終的な積和結果を非線形変換することで、特徴面が生成される。例えば、第1階層301において、特徴面F1-1を算出する場合、前の階層との結合数が1であるため、フィルタカーネルは、コンボリューションフィルタ311-1が1つとされる。
 一方で、第2階層302において、特徴面F2-1と特徴面F2-2を算出する場合には、前の階層(の特徴面)との結合数が3であるため、それぞれ、コンボリューションフィルタ312-1乃至312-3の演算結果と、コンボリューションフィルタ312-4乃至312-6の演算結果が累積加算される。すなわち、例えば、特徴面F2-1は、コンボリューションフィルタ312-1乃至312-3の出力を累積加算して、最後に非線形変換することで得られる。
 ここで、コンボリューションフィルタ312-1乃至312-6は、いずれも異なるフィルタ係数のコンボリューションカーネルである。また、コンボリューションフィルタ312-1乃至312-3と、コンボリューションフィルタ312-4乃至312-6とは、異なるカーネルサイズを有している。
 さらに、各コンボリューションフィルタ312の累積加算と非線形変換処理の基本的な構成は、一般的なニューロンの構成と同様である。ここで、例えば、ニューロンは、入力データ(in_1乃至in_n)と重み係数(w_1乃至w_n)とを乗じる乗算器と、複数の乗算器からの演算結果を累積加算する累積加算器と、累積加算器からの演算結果を非線形変換して出力する非線形変換部とから構成される。
 すなわち、コンボリューションカーネルのフィルタ係数が、重み係数w_1乃至w_nに相当している。第2階層302における特徴面F2-1及び特徴面F2-2や、第3階層303における特徴面F3のように、複数の前の階層(の特徴面)と結合される場合には、複数のコンボリューションカーネルの演算結果は、累積加算器により蓄積されることになる。すなわち、結合数は、コンボリューションカーネルサイズ×前の階層の特徴面数に相当している。
 このように、畳み込みニューラルネットワークにおいては、特徴抽出ごとに、画像面単位で結果を保持しながら、階層的に結合することで、画像認識の分野において、多くのタスクで優れた性能を示している。
 また、畳み込みニューラルネットワークにおいて、入力データやフィルタ係数(重み係数)を冗長化(例えば3重化)すれば、データの信頼性を向上させることはできるが、コンボリューションフィルタ内に、多数の演算器が用いられるため、消費電力や回路面積等のコストが非常に大きなものとなる。一方で、畳み込みニューラルネットワークにおいて、本技術を適用して、全ビットのうち、より重要な特定のビット(例えば上位ビット)のみを冗長化すれば、全ビットを冗長化した場合と比べて、消費電力を低減しつつ、回路面積を削減することができる。
(畳み込みニューラルネットワークの構成例)
 図10は、畳み込みニューラルネットワーク(CNN)の演算を行う畳み込み演算部の構成例を示す図である。
 図10の畳み込み演算部400は、シストリックアレイ400Aとシストリックアレイ400Bを備えている。図10において、シストリックアレイ400Aと、シストリックアレイ400Bとは、同一の構成からなる複数の演算器を相互に接続した構成からなる。各演算器は、前の階層からのデータが入力される入力側から、畳み込み演算結果データを出力する出力側に向かって3段に配置されている。
 シストリックアレイ400Aは、それぞれ3段の演算器からなる4本の演算ラインを有している。図10の例では、4本の演算ラインのうち、2本の演算ライン、すなわち、演算器412-1乃至412-3からなる演算ラインと、演算器423-1乃至423-3からなる演算ラインを示している。
 演算器412-1乃至412-3からなる演算ラインには、フリップフロップ回路411-1乃至411-3が設けられる。また、演算器412-1乃至412-3には、重み係数(W)がそれぞれ入力される。同様に、演算器423-1乃至423-3からなる演算ラインには、フリップフロップ回路421-1乃至421-3が設けられる。また、演算器423-1乃至423-3には、重み係数(W)がそれぞれ入力される。なお、残りの2本の演算ラインについては、図示していないが、図10に示した演算ラインと同様に構成される。
 このように、シストリックアレイ400Aでは、4本の演算ラインのそれぞれで、各段の演算器による演算結果を演算サイクルごとに出力側の演算器に順次転送していくことで、畳み込み演算を並列的に行うようにしている。そして、シストリックアレイ400Aでは、各演算ラインにより得られる演算結果のデータを、加算器401-1乃至401-4により加算して、畳み込み演算結果のデータとして出力する。
 シストリックアレイ400Bは、それぞれ3段の演算器からなる4本の演算ラインを有している。図10の例では、4本の演算ラインのうち、1本の演算ライン、すなわち、演算器422-1乃至422-3からなる演算ラインを示している。
 演算器422-1乃至422-3からなる演算ラインには、フリップフロップ回路421-1乃至421-3が設けられる。また、演算器422-1乃至422-3には、重み係数(W)がそれぞれ入力される。なお、残りの3本の演算ラインについては、図示していないが、図10に示した演算ラインと同様に構成される。
 このように、シストリックアレイ400Bでは、4本の演算ラインのそれぞれで、各段の演算器による演算結果を演算サイクルごとに出力側の演算器に順次転送していくことで、畳み込み演算を並列的に行うようにしている。そして、シストリックアレイ400Bでは、各演算ラインにより得られる演算結果のデータを、加算器402-1乃至402-4により加算して、畳み込み演算結果のデータとして出力する。
 比較器403には、シストリックアレイ400Aからの畳み込み演算結果のデータと、シストリックアレイ400Bからの畳み込み演算結果のデータが入力される。比較器403は、2つの入力データを比較し、その値が大きい方のデータを、最大畳み込み演算結果データとして出力する。
 以上、畳み込み演算部の構成例を示したが、この畳み込み演算部においては、シストリックアレイの各演算ラインを構成する演算器が、加算器や乗算器等の演算器から構成され、多数の演算器が用いられているため、入力データや重み係数(W)の全ビットを冗長化すると、消費電力や回路面積等のコストが非常に大きなものとなる。一方で、この種の畳み込み演算部においても、本技術を適用して、全ビットのうち、より重要な特定のビット(例えば上位ビット)のみを冗長化すれば、全ビットを冗長化した場合と比べて、消費電力を低減しつつ、回路面積を削減することができる。
<4.変形例>
(小数点の形式)
 上述した説明では、画像認識ニューラルネットワーク処理部17(図8)による、ニューラルネットワークの演算として、入力データと重み係数のデータ形式が、固定小数点の形式となる場合を説明したが、入力データと重み係数のデータ形式は、固定小数点の形式に限らず、浮動小数点の形式であってもよい。
 ここで、図11を参照して、固定小数点形式と浮動小数点形式について説明する。図11のAは、固定小数点形式のフォーマットの例を示している。図11のAにおいて、「s」は、1ビットで正負の符号を表す符号部である。例えば、「s」の値が、"0"の場合には、符号が正であることを表し、"1"の場合には、符号が負であることを表す。「m」は、数値部であり、例えば最下位ビットに小数点を固定した場合には、整数部となる。
 すなわち、固定小数点形式では、小数点の位置が決まっているため、浮動小数点形式に比べて表現できる値の範囲は狭いが、高速に演算できるなどのメリットがある。
 一方で、図11のBは、浮動小数点形式のフォーマットの例を示している。図11のBにおいて、「s」は、符号部であり、1ビットで正負の符号を表す。「e」は、指数部であり、浮動小数点の中の累乗の部分を表す。「m」は、仮数部であり、指数部を表記する際の有効文字となる部分である。例えば、A×10Bの場合、Aが仮数部となる。
 すなわち、浮動小数点形式では、仮数部と指数部を規定することで、固定小数点形式に比べて、広い範囲で数値を表現することができる。なお、浮動小数点形式としては、例えば、IEEE754(IEEE 浮動小数点数演算標準)で規定されている浮動小数点数を採用することができる。
 本技術では、入力データと重み係数のデータ形式が、浮動小数点の形式であっても、固定小数点の形式の場合と同様に、より重要なビット(例えば上位ビット)を、冗長化(例えば3重化)することになるので、全ビットを冗長化した場合と比べて、消費電力を低減しつつ、回路面積を削減することができる。
(多数決演算の他の例)
 上述した説明では、多数決器100による多数決演算の対象のデータとして、異なる演算器を経由して入力される3つのデータ(入力データや重み係数)を説明したが、多数決演算の対象のデータとしては、他のデータを用いることができる。例えば、演算時間はかかるものの、同じ演算を3回繰り返して行い、その結果得られる3つのデータを用いて多数決演算を行うことができる。
 ただし、上記の演算を繰り返す際には、データの入れ方を変えることで、異なる演算器や経路を通って演算が行われるようにするのが望ましい。また、繰り返しの演算に際し、その後に行われる多数決演算のために保存するのは、上位ビットなどの重要なビットとすることで、余分なリソースの消費を抑制することができる。
(故障の検知に利用)
 上述した説明では、回路を冗長化して、多数決器100による多数決演算を行うことで、単一の回路に発生した故障をマスクすることができると説明したが、多数決演算により、故障の検知が行われるようにしてもよい。すなわち、この場合、本技術の構成が、予備回路に切り替えるための故障検出機能として用いられることになる。
 例えば、上位ビットを3重化するとともに、下位ビットも2重化して、多数決器100による多数決演算により、ハードウェアのエラーを検知したときには、あらかじめ用意しておいた予備の演算器に切り替えるようにする。その結果、予備の演算器で、正常な動作を継続することが可能となる。
 また、例えば、上述した本技術の構成を、FPGA(Field Programmable Gate Array)に適用している場合に、多数決器100による多数決演算によって、ハードウェアのエラーが検知されたときには、故障していない論理セルが使用されるように構成し直すことで、FPGAは、正常な動作を継続することが可能となる。
(放射線作業環境への応用)
 放射線作業環境において、自律型の自動運転装置が、ニューラルネットワークの演算を用いた画像認識処理で得られた情報に基づいて、例えば自律的に動作を決定するような機能を有する場合に、上述した本技術の構成を、当該ニューラルネットワークの演算を行う演算部に適用することもできる。このような特殊な状況下においても、消費電力を低減しつつ、回路面積を削減しながらも、より信頼性の高いニューラルネットワークの演算を行うことができる。
(演算用LSIの歩留まり改善)
 上述したように、回路を多重化(冗長化)して、多数決器100による多数決演算を行うことで、単一の回路に発生した故障をマスクすることができるが、このことを歩留まりの側面から捉えれば、例えば、上述した本技術の構成を適用したニューラルネットワーク演算用LSIでは、単一の回路に発生した故障をマスクすることができるため、歩留まりが改善しているとも言える。つまり、本技術の構成は、ハードウェアエラーが単一の故障であれば、歩留まり改善の施策として用いることができる。
(その他の変形例)
 上述した説明では、演算処理装置10(図8)において、画像認識ニューラルネットワーク処理部17によって、画像取得部11により取得された画像データを用いたニューラルネットワークの演算が行われると説明したが、ニューラルネットワークの演算で用いられる画像データは、例えば、イメージセンサから出力される画像データや、所定のファイル形式の画像データなど、あらゆる形式の画像データを対象とすることができる。また、画像データに限らず、例えば音声データやテキストデータなど、あらゆる形式のデータを対象とすることができる。
 また、上述した説明では、多重化(冗長化)の例として、基本的に3重化を例に挙げて説明したが、多重化(冗長化)できるのであれば、3重化に限らず、例えば、より多重度を上げるなど、他の多重化(冗長化)の形態を採用することもできる。
<5.コンピュータの構成>
 上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウェアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
 図12は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
 コンピュータ1000において、CPU(Central Processing Unit)1001,ROM(Read Only Memory)1002,RAM(Random Access Memory)1003は、バス1004により相互に接続されている。バス1004には、さらに、入出力インターフェース1005が接続されている。入出力インターフェース1005には、入力部1006、出力部1007、記録部1008、通信部1009、及びドライブ1010が接続されている。
 入力部1006は、キーボード、マウス、マイクロフォンなどよりなる。出力部1007は、ディスプレイ、スピーカなどよりなる。記録部1008は、ハードディスクや不揮発性のメモリなどよりなる。通信部1009は、ネットワークインターフェースなどよりなる。ドライブ1010は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブル記録媒体1011を駆動する。
 以上のように構成されるコンピュータ1000では、CPU1001が、例えば、記録部1008に記憶されているプログラムを、入出力インターフェース1005及びバス1004を介して、RAM1003にロードして実行することにより、上述した一連の処理が行われる。
 コンピュータ1000(CPU1001)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブル記録媒体1011に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線又は無線の伝送媒体を介して提供することができる。
 コンピュータ1000では、プログラムは、リムーバブル記録媒体1011をドライブ1010に装着することにより、入出力インターフェース1005を介して、記録部1008にインストールすることができる。また、プログラムは、有線又は無線の伝送媒体を介して、通信部1009で受信し、記録部1008にインストールすることができる。その他、プログラムは、ROM1002や記録部1008に、あらかじめインストールしておくことができる。
 なお、コンピュータ1000が実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
 また、プログラムは、1のコンピュータにより処理されるものであってもよいし、複数のコンピュータによって分散処理されるものであってもよい。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであってもよい。
 さらに、本明細書において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、すべての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれも、システムである。
 なお、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。例えば、本技術は、1つの機能を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
 また、本技術は、以下のような構成をとることができる。
(1)
 ニューラルネットワークの演算を行う演算処理部を備え、
 前記ニューラルネットワークの演算において、当該演算に用いる重み係数と入力データの一部の特定のビットを、前記特定のビット以外の残りのビットよりも冗長性が多くなるように冗長化する
 演算処理装置。
(2)
 前記ニューラルネットワークの演算において、前記重み係数と前記入力データのビットのうち、前記特定のビットのみを冗長化する
 (1)に記載の演算処理装置。
(3)
 前記ニューラルネットワークの演算において、前記重み係数と前記入力データのビットのうち、上位ビットのみを冗長化する
 (2)に記載の演算処理装置。
(4)
 前記重み係数と前記入力データのデータ形式は、固定小数点の形式である
 (1)乃至(3)のいずれかに記載の演算処理装置。
(5)
 前記重み係数と前記入力データのデータ形式は、浮動小数点の形式である
 (1)乃至(3)のいずれかに記載の演算処理装置。
(6)
 前記重み係数と前記入力データの一部の特定のビットに対し、誤り訂正符号への符号化又は復号を行う誤り訂正部をさらに備える
 (1)乃至(5)のいずれかに記載の演算処理装置。
(7)
 前記演算処理部により処理されるデータを記憶する第1のメモリ部と、
 前記重み係数を記憶する第2のメモリ部と
 をさらに備え、
 前記誤り訂正部は、
  前記演算処理部と前記第1のメモリ部との間に設けられる第1の誤り訂正部と、
  前記演算処理部と前記第2のメモリ部との間に設けられる第2の誤り訂正部と
 からなる
 (6)に記載の演算処理装置。
(8)
 前記誤り訂正部は、多重化されている
 (6)又は(7)に記載の演算処理装置。
(9)
 前記演算処理部は、
  前記重み係数と前記入力データの積和演算を行う演算器と、
  前記演算器から得られるデータに対し多数決演算を行い、その結果得られるデータを出力する多数決器と
 を有する
 (1)乃至(8)のいずれかに記載の演算処理装置。
(10)
 前記演算器と前記多数決器は、多重化されている
 (9)に記載の演算処理装置。
(11)
 ニューラルネットワークの演算を行う演算処理部を備える演算処理装置の演算処理方法において、
 前記演算処理部が、
  前記ニューラルネットワークの演算において、当該演算に用いる重み係数と入力データの一部の特定のビットを、前記特定のビット以外の残りのビットよりも冗長性が多くなるように冗長化されたデータを処理する
 ステップを含む演算処理方法。
 10 演算処理装置, 11 画像取得部, 12 誤り訂正部, 13 メモリコントローラ, 14 外部DRAM, 15 データバッファメモリ, 16 誤り訂正部, 17 画像認識ニューラルネットワーク処理部, 18 係数メモリ, 19 誤り訂正部, 20 プロセッサ, 21 3重化バス, 100,100A,100A-1乃至100A-3,100B,100B-1乃至100B-3 多数決器, 111 乗算器, 112 乗算器, 113 乗算器, 114 加算器, 115 乗算器, 116 加算器, 121 論理演算器, 131 乗算器, 132 加算器, 133 乗算器, 134 加算器, 141 論理演算器, 142 論理演算器, 151 変換器, 152 加算器, 153 変換器, 154 加算器, 155 変換器, 156 加算器, 1000 コンピュータ, 1001 CPU

Claims (11)

  1.  ニューラルネットワークの演算を行う演算処理部を備え、
     前記ニューラルネットワークの演算において、当該演算に用いる重み係数と入力データの一部の特定のビットを、前記特定のビット以外の残りのビットよりも冗長性が多くなるように冗長化する
     演算処理装置。
  2.  前記ニューラルネットワークの演算において、前記重み係数と前記入力データのビットのうち、前記特定のビットのみを冗長化する
     請求項1に記載の演算処理装置。
  3.  前記ニューラルネットワークの演算において、前記重み係数と前記入力データのビットのうち、上位ビットのみを冗長化する
     請求項2に記載の演算処理装置。
  4.  前記重み係数と前記入力データのデータ形式は、固定小数点の形式である
     請求項3に記載の演算処理装置。
  5.  前記重み係数と前記入力データのデータ形式は、浮動小数点の形式である
     請求項3に記載の演算処理装置。
  6.  前記重み係数と前記入力データの一部の特定のビットに対し、誤り訂正符号への符号化又は復号を行う誤り訂正部をさらに備える
     請求項1に記載の演算処理装置。
  7.  前記演算処理部により処理されるデータを記憶する第1のメモリ部と、
     前記重み係数を記憶する第2のメモリ部と
     をさらに備え、
     前記誤り訂正部は、
      前記演算処理部と前記第1のメモリ部との間に設けられる第1の誤り訂正部と、
      前記演算処理部と前記第2のメモリ部との間に設けられる第2の誤り訂正部と
     からなる
     請求項6に記載の演算処理装置。
  8.  前記誤り訂正部は、多重化されている
     請求項6に記載の演算処理装置。
  9.  前記演算処理部は、
      前記重み係数と前記入力データの積和演算を行う演算器と、
      前記演算器から得られるデータに対し多数決演算を行い、その結果得られるデータを出力する多数決器と
     を有する
     請求項1に記載の演算処理装置。
  10.  前記演算器と前記多数決器は、多重化されている
     請求項9に記載の演算処理装置。
  11.  ニューラルネットワークの演算を行う演算処理部を備える演算処理装置の演算処理方法において、
     前記演算処理部が、
      前記ニューラルネットワークの演算において、当該演算に用いる重み係数と入力データの一部の特定のビットを、前記特定のビット以外の残りのビットよりも冗長性が多くなるように冗長化されたデータを処理する
     ステップを含む演算処理方法。
PCT/JP2017/017616 2016-05-24 2017-05-10 演算処理装置、及び、演算処理方法 WO2017203975A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/088,979 US10817773B2 (en) 2016-05-24 2017-05-10 Arithmetic processing device and arithmetic processing method
CN201780024236.0A CN109074516B (zh) 2016-05-24 2017-05-10 计算处理装置和计算处理方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016-103002 2016-05-24
JP2016103002A JP2017211735A (ja) 2016-05-24 2016-05-24 演算処理装置、及び、演算処理方法

Publications (1)

Publication Number Publication Date
WO2017203975A1 true WO2017203975A1 (ja) 2017-11-30

Family

ID=60412185

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/017616 WO2017203975A1 (ja) 2016-05-24 2017-05-10 演算処理装置、及び、演算処理方法

Country Status (4)

Country Link
US (1) US10817773B2 (ja)
JP (1) JP2017211735A (ja)
CN (1) CN109074516B (ja)
WO (1) WO2017203975A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020013226A1 (ja) * 2018-07-11 2020-01-16 ソニー株式会社 信号処理回路、信号処理装置及び信号処理方法
US12031846B2 (en) 2019-06-26 2024-07-09 Infineon Technologies Ag Generation of an output signal value from sensor signal values of at least three redundant sensors

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180073118A (ko) * 2016-12-22 2018-07-02 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
US11055613B2 (en) * 2016-12-28 2021-07-06 Intel Corporation Method and apparatus for a binary neural network mapping scheme utilizing a gate array architecture
US11599795B2 (en) * 2017-11-08 2023-03-07 International Business Machines Corporation Reducing the cost of n modular redundancy for neural networks
KR102463532B1 (ko) * 2018-01-16 2022-11-08 한국전자통신연구원 신경망 컴퓨팅 장치 및 그것의 동작 방법
JP6977864B2 (ja) 2018-03-02 2021-12-08 日本電気株式会社 推論装置、畳み込み演算実行方法及びプログラム
KR102590505B1 (ko) * 2018-04-09 2023-10-19 한국전자통신연구원 방사선원을 포함하는 스파이크 뉴럴 네트워크 회로
WO2020188755A1 (ja) * 2019-03-19 2020-09-24 Tdk株式会社 積和演算器、論理演算デバイス、ニューロモーフィックデバイス及び積和演算方法
KR20210100277A (ko) 2020-02-06 2021-08-17 삼성전자주식회사 전력 최적화 스케쥴러의 동작 방법 및 전력 최적화 스케쥴러를 포함하는 컴퓨팅 장치
JP2023009676A (ja) * 2021-07-07 2023-01-20 キヤノン株式会社 演算処理装置およびその制御方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08249302A (ja) * 1995-03-08 1996-09-27 Nec Corp 回帰形ニューラル回路網における耐障害決定性有限状態オートマトンを実現する方法および該回路網における耐障害決定性有限状態オートマトン

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3568181B2 (ja) * 1997-06-23 2004-09-22 株式会社東芝 ニューラルネット分析装置、記憶媒体
CN101477172B (zh) * 2009-02-18 2010-12-01 湖南大学 一种基于神经网络的模拟电路故障诊断方法
CN101819253B (zh) * 2010-04-20 2013-10-23 湖南大学 一种基于概率神经网络的容差电路故障诊断方法
CN103778467A (zh) * 2014-01-16 2014-05-07 天津大学 一种选择电力系统暂态稳定评估输入特征量的方法
JP6314628B2 (ja) 2014-04-28 2018-04-25 株式会社デンソー 演算処理装置
JP2019057249A (ja) * 2017-09-22 2019-04-11 富士通株式会社 演算処理装置および演算処理方法
GB2568086B (en) * 2017-11-03 2020-05-27 Imagination Tech Ltd Hardware implementation of convolution layer of deep neutral network
US10678508B2 (en) * 2018-03-23 2020-06-09 Amazon Technologies, Inc. Accelerated quantized multiply-and-add operations

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08249302A (ja) * 1995-03-08 1996-09-27 Nec Corp 回帰形ニューラル回路網における耐障害決定性有限状態オートマトンを実現する方法および該回路網における耐障害決定性有限状態オートマトン

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TERUYASU TSUZUKI ET AL.: "A learning algorithm for fault-tolerant neural networks using maximum-error prediction", IEICE TECHNICAL REPORT, vol. 98, no. 235, 6 August 1998 (1998-08-06) *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020013226A1 (ja) * 2018-07-11 2020-01-16 ソニー株式会社 信号処理回路、信号処理装置及び信号処理方法
CN112334905A (zh) * 2018-07-11 2021-02-05 索尼公司 信号处理电路、信号处理装置和信号处理方法
US12001810B2 (en) 2018-07-11 2024-06-04 Sony Corporation Signal processing circuit, signal processing device, and signal processing method to suppress power consumption
US12031846B2 (en) 2019-06-26 2024-07-09 Infineon Technologies Ag Generation of an output signal value from sensor signal values of at least three redundant sensors

Also Published As

Publication number Publication date
JP2017211735A (ja) 2017-11-30
CN109074516B (zh) 2023-09-19
US10817773B2 (en) 2020-10-27
US20190130245A1 (en) 2019-05-02
CN109074516A (zh) 2018-12-21

Similar Documents

Publication Publication Date Title
WO2017203975A1 (ja) 演算処理装置、及び、演算処理方法
US11531541B2 (en) Processing apparatus and processing method
CN112860475B (zh) 基于rs纠删码的校验块恢复方法、装置、系统及介质
JP4290202B2 (ja) ブース乗算の装置および方法
US8131794B2 (en) RAID system and Galois field product computation method
US11226791B2 (en) Arithmetic processing device and method of controlling arithmetic processing device that enables suppression of size of device
US10140090B2 (en) Computing and summing up multiple products in a single multiplier
US11243743B2 (en) Optimization of neural networks using hardware calculation efficiency and adjustment factors
CN111258633B (zh) 乘法器、数据处理方法、芯片及电子设备
WO2023124371A1 (zh) 数据处理装置、方法、芯片、计算机设备及存储介质
Wong et al. Low bitwidth CNN accelerator on FPGA using Winograd and block floating point arithmetic
CN110515586B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111897513A (zh) 一种基于反向极性技术的乘法器及其代码生成方法
US7330867B2 (en) Method and device for floating-point multiplication, and corresponding computer-program product
CN110378478B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110378477B (zh) 乘法器、数据处理方法、芯片及电子设备
CN114296648B (zh) 分布式云存储数据的维护方法、装置、设备和可读介质
CN113031911A (zh) 乘法器、数据处理方法、装置及芯片
CN111258546B (zh) 乘法器、数据处理方法、芯片及电子设备
CN210006082U (zh) 乘法器、装置、神经网络芯片及电子设备
US20240069868A1 (en) Mac operator related to correcting a computational error
Swarna et al. Design of fault tolerant multiplier using self checking adder and gdi technique
CN111258545A (zh) 乘法器、数据处理方法、芯片及电子设备
CN209879492U (zh) 乘法器、机器学习运算装置及组合处理装置
US20240220202A1 (en) Multi-Modal Systolic Array For Matrix Multiplication

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201780024236.0

Country of ref document: CN

NENP Non-entry into the national phase

Ref country code: DE

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

Ref document number: 17802570

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 17802570

Country of ref document: EP

Kind code of ref document: A1