WO2020194594A1 - ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 - Google Patents

ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 Download PDF

Info

Publication number
WO2020194594A1
WO2020194594A1 PCT/JP2019/013327 JP2019013327W WO2020194594A1 WO 2020194594 A1 WO2020194594 A1 WO 2020194594A1 JP 2019013327 W JP2019013327 W JP 2019013327W WO 2020194594 A1 WO2020194594 A1 WO 2020194594A1
Authority
WO
WIPO (PCT)
Prior art keywords
product
sum
arithmetic
arithmetic processing
neural network
Prior art date
Application number
PCT/JP2019/013327
Other languages
English (en)
French (fr)
Inventor
慶太 須田
Original Assignee
Tdk株式会社
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 Tdk株式会社 filed Critical Tdk株式会社
Priority to PCT/JP2019/013327 priority Critical patent/WO2020194594A1/ja
Priority to US16/819,303 priority patent/US11681498B2/en
Publication of WO2020194594A1 publication Critical patent/WO2020194594A1/ja
Priority to US18/199,426 priority patent/US20230351150A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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
    • 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 a neural network arithmetic processing apparatus and a neural network arithmetic processing method, and more particularly to a neural network arithmetic processing apparatus that digitally performs a product-sum operation of a neural network.
  • Neural networks have been put to practical use in advanced information identification and classification technologies, including deep learning, in a wide range of fields such as finance, marketing, authentication, and security.
  • a huge amount of product-sum calculation is required due to higher functionality and the like, so it is important to speed up and improve the efficiency of the product-sum calculation.
  • Neural networks generally have higher performance as the number of layers of the neural network increases. However, as the number of layers increases, the circuit scale increases, the amount of calculation increases, and a large amount of calculation time is required. Therefore, it is necessary to configure the device while considering both the improvement of the calculation function and the performance.
  • Patent Document 1 which includes a matrix arithmetic unit to which the above is added and an auxiliary arithmetic unit that can operate in parallel with the matrix arithmetic unit and performs calculations other than matrix calculation (Patent Document 1).
  • the matrix calculation assigned to each processor element can be performed efficiently and flexibly, and a huge amount of calculation can be performed at high speed by performing the calculation in parallel by an auxiliary arithmetic unit separately provided with a calculation other than the matrix calculation. It is said that it can be processed.
  • the arithmetic processing can be completed in 3 clocks shorter than 9 clocks, but the circuit must be able to read and write multiple data at the same time, and is the same as the number in parallel.
  • the circuit scale increases because a number of arithmetic units are required.
  • the arithmetic processing can be completed in a time shorter than 9 clocks because the series of operations are sequentially performed at the timing delayed by 3 clocks by using the registers between the layers. Since it can be executed by one arithmetic unit, an increase in the circuit scale can be suppressed. However, in order to realize further speedup, it is necessary to carefully design the time, which is complicated. In addition, since an enormous amount of calculation is performed in an actual neural network calculation, it is necessary to efficiently combine parallelization and pipeline formation, and design the circuit so as to realize high-speed calculation while suppressing the circuit scale. However, it is not enough because it is limited to efficiency improvement within the layer.
  • An object of the present invention is a neural network operation capable of realizing further speedup and efficiency of the product-sum operation, suppressing an increase in the circuit scale, and further performing the product-sum operation with a simple design. It is an object of the present invention to provide a processing apparatus and a neural network arithmetic processing method.
  • the present invention provides the following means.
  • the first product-sum calculation unit is A first memory that stores multiple first input variables, A second memory that stores a plurality of first weight data, and One or more first multipliers that calculate a plurality of products of the first input variable and the first weight data, and One or more first adders that calculate a plurality of sums of the products multiplied by the first or more first multipliers, and It has one or more first output units that output a plurality of the sums added by the one or more first adders to the register as a plurality of second input variables.
  • the second product-sum calculator is A third memory that stores a plurality of second weight data, and One or more second multipliers that calculate a plurality of products of the second weight data and the second input variable held in the register, and One or more second adders that calculate a plurality of sums of the products multiplied by the first or more second multipliers, and It has one or more second output units that output a plurality of the sums added by the one or more second adders as a plurality of output values.
  • Neural network arithmetic processing unit is A third memory that stores a plurality of second weight data, and One or more second multipliers that calculate a plurality of products of the second weight data and the second input variable held in the register, and One or more second adders that calculate a plurality of sums of the products multiplied by the first or more second multipliers, and It has one or more second output units that output a plurality of the sums added by the one or more second adders as a plurality of output values.
  • the number of operations constituting the arithmetic processing P1 executed by the first multiply-accumulate arithmetic unit 10 is (n + 1) (n is an integer of 0 or more), and the arithmetic is executed by the second product-sum arithmetic unit.
  • the number of operations constituting the process P2 is (q + 1) (q is an integer of 0 or more)
  • the parallel number L1 of the arithmetic processing P1 executed by the first multiply-accumulate arithmetic unit is a divisor of the arithmetic number (n + 1), and is the parallel number of the arithmetic processing P2 executed by the second product-sum arithmetic unit.
  • Both the number of pipelines C1 constituting the arithmetic processing P1 and the number of pipelines C2 constituting the arithmetic processing P2 are the greatest common divisors of the arithmetic number (n + 1) and the arithmetic operation number (q + 1).
  • the neural network arithmetic processing unit according to the above [3].
  • each of the second memory and the third memory is a ring buffer memory.
  • One or more activation functions calculated by using an activation function between the first product-sum calculation unit and the register and at least one of the register and the second product-sum calculation unit.
  • the first multiplier of one or more is a plurality of first multipliers.
  • the neural network arithmetic processing unit according to any one of [2] to [7] above, wherein the one or more first adders are a plurality of first adders.
  • the one or more second product-sum calculation units are a plurality of the second product-sum calculation units.
  • the neural network arithmetic processing unit according to any one of the above [2] to [8], wherein the plurality of the second product-sum arithmetic units operate in parallel with the one or more first product-sum arithmetic units.
  • the one or more first product-sum calculation units are a plurality of the first product-sum calculation units.
  • the neural network arithmetic processing unit according to any one of the above [2] to [8], wherein the plurality of first product-sum arithmetic units operate in parallel with the one or more second product-sum arithmetic units.
  • the one or more first product-sum calculation units are a plurality of the first product-sum calculation units.
  • the one or more second product-sum calculation units are a plurality of the second product-sum calculation units.
  • the neural network arithmetic processing unit according to any one of [2] to [8], wherein the plurality of first product-sum arithmetic units operate in parallel with the plurality of second product-sum arithmetic units.
  • a neural network arithmetic processing method in which at least a part of the arithmetic processing executed in the second arithmetic step is executed in parallel with the arithmetic processing executed in the first arithmetic step.
  • a processing device and a neural network arithmetic processing method can be provided.
  • FIG. 1 is a schematic diagram schematically showing an example of the configuration of the neural network arithmetic processing apparatus according to the embodiment of the present invention.
  • FIG. 2A is a schematic diagram showing an example of the configuration of a neural network to which the neural network arithmetic processing apparatus of FIG. 1 is applied, and FIG. 2B is a first product-sum operation of FIG. 2A.
  • FIG. 2C is the figure which shows the operation of the 2nd product sum arithmetic unit of FIG. 2A.
  • FIG. 3A is a diagram showing a signal flow in the first stage in the neural network of FIG. 2, and FIG. 3B is an operation of the first multiply-accumulate calculator in the flow of FIG. 3A.
  • FIG. 3 (c) is a diagram showing the operation of the second multiply-accumulate calculator in the flow of FIG. 3 (a).
  • FIG. 4A is a diagram showing a signal flow in the second stage in the neural network of FIG. 2
  • FIG. 4B is an operation of the first product-sum calculator in the flow of FIG. 4A.
  • 4 (c) is a diagram showing the operation of the second multiply-accumulate calculator in the flow of FIG. 4 (a).
  • 5 (a) is a diagram showing a signal flow in the third stage in the neural network of FIG. 2
  • FIG. 3 (b) is an operation of the first product-sum calculator in the flow of FIG. 3 (a).
  • 3 (c) is a diagram showing the operation of the second multiply-accumulate calculator in the flow of FIG. 3 (a).
  • FIG. 6A is a diagram showing a signal flow in the fourth stage in the neural network of FIG. 2, and FIG. 6B is an operation of the first product-sum calculator in the flow of FIG. 6A.
  • 6 (c) is a diagram showing the operation of the second multiply-accumulate calculator in the flow of FIG. 6 (a).
  • FIG. 7 (a) is a diagram showing a signal flow in the fifth stage in the neural network of FIG. 2, and FIG. 7 (b) is an operation of the first product-sum calculator in the flow of FIG. 7 (a).
  • 7 (c) is a diagram showing the operation of the second multiply-accumulate calculator in the flow of FIG. 7 (a).
  • FIG. 8 is a diagram showing an example of a time chart of the arithmetic processing executed by the first multiply-accumulate arithmetic unit and the arithmetic processing executed by the second product-sum arithmetic unit in FIG.
  • FIG. 9 shows an example of the number of parallels and pipelines of arithmetic processing executed by the first multiply-accumulate arithmetic unit and the number of parallels and pipelines of arithmetic processing executed by the second product-sum arithmetic unit in FIG. 9 (b) is a schematic diagram showing a modified example of a time chart of the arithmetic processing of the first multiply-accumulate calculator and the arithmetic processing of the second product-sum calculator in FIG. 9 (a). .. FIG.
  • FIG. 10 is a schematic diagram schematically showing a modified example of the configuration of the neural network arithmetic processing apparatus of FIG.
  • FIG. 11 is a flowchart showing an example of a neural network calculation processing method executed by the neural network calculation processing device of FIG.
  • FIG. 12 is a schematic diagram schematically showing another modification of the configuration of the neural network arithmetic processing apparatus of FIG. 1.
  • FIG. 13 is a schematic diagram schematically showing a modified example of the configuration of the first product-sum calculation unit and the second product-sum calculation unit in FIG.
  • FIG. 14 is a schematic diagram schematically showing a modified example of the configuration of the neural network arithmetic processing apparatus of FIG.
  • FIG. 1 is a schematic diagram schematically showing an example of the configuration of the neural network arithmetic processing apparatus according to the embodiment of the present invention.
  • the neural network arithmetic processing unit 1 includes a first multiply-accumulate arithmetic unit 10, a register 20 connected to the first product-sum arithmetic unit 10, and a second product-sum operation connected to the register 20. It is equipped with a vessel 30.
  • the first product-sum calculator 10 includes a first memory 11 that stores a plurality of first input variables, a second memory 12 that stores a plurality of first weight data, the first input variable, and the first weight data.
  • the first multiplier 13 that calculates a plurality of products of the above
  • the first adder 14 that calculates the sum of a plurality of products multiplied by the first multiplier 13, and the above sum added by the first adder 14. It has a first output unit 15 that outputs a plurality of the above to the register 20 as a plurality of second input variables.
  • the first product-sum calculation unit 10 constitutes a digital product-sum calculation circuit.
  • the first memory 11 stores a plurality of first input variables x 0 , x 1 , x 2 , ... X n (n is an integer of 0 or more), and a plurality of first products are calculated by the first product-sum calculator 10.
  • the input variables x 0 , x 1 , x 2 , ... x n are read out.
  • the first memory 11 stores, for example, a plurality of first input variables x 0 , x 1 , x 2 , ... X n as a matrix A (n-dimensional column vector) of (n + 1) rows and 1 column.
  • the first memory 11 may be composed of a ring buffer memory.
  • the first multiply-accumulate arithmetic unit 10 can be easily configured by configuring the first memory 11 with a ring buffer memory. Further, the first memory 11 can be configured to write and store data other than the first input variable.
  • the second memory 12 stores a plurality of first weight data ⁇ 00 , ⁇ 01 , ⁇ 02 , ... ⁇ mn (m is an integer of 0 or more), and the first product-sum arithmetic unit 10 stores a plurality of first weight data.
  • the weight data ⁇ 00 , ⁇ 01 , ⁇ 02 , ... ⁇ mn are read out.
  • the second memory 12, for example, stores a plurality of first weight data as a matrix B of (m + 1) rows (n + 1) columns. Further, the second memory 12 can be configured to write and store data other than the first weight data.
  • the second memory 12 may be composed of a ring buffer memory. Since the memory for storing the first weight data does not require random accessibility, the first product-sum calculator 10 can be easily configured by configuring the second memory 12 with a ring buffer memory.
  • the first multiply-accumulate calculator 10 includes a first memory 11 and a second memory 12, but the present invention is not limited to this, and the first memory 11 and the second memory 12 are replaced with the above-mentioned plurality. It may include one memory for storing the first input variable and the plurality of first weight data. By sharing one memory, an increase in circuit scale can be suppressed.
  • the first multiplier 13 includes x i of the first input variables x 0 , x 1 , x 2 , ... x n , and ⁇ of the first weight data ⁇ 00 , ⁇ 01 , ⁇ 02 , ... ⁇ mn. Taking jk as an input, the product of these ⁇ jk x i is output.
  • the first multiplier 13 is composed of a digital multiplier.
  • the first adder 14 a plurality of product omega jk x i multiplied by the first multiplier 13 as inputs, the sum ⁇ jk x i of the plurality of product omega jk x i second input variable i 0, i 1 , i 2, ... i m ( m is an integer of 0 or more) is output as.
  • the first adder 14 is composed of a digital adder.
  • the operation of the first multiplier 13 and the first adder 14 can be represented by, for example, the product BA of the matrix B in the (m + 1) row (n + 1) column and the matrix A in the (n + 1) row 1 column.
  • a plurality of output from the first adder 14 the second input variable i 0, i 1, i 2, is ... i m, expressed as a matrix C of (m + 1) rows and one column.
  • the register 20 holds a plurality of the sums output from the first output unit 15 of the first product-sum arithmetic unit 10 as a plurality of second input variables. Further, the register 20 outputs the plurality of second input variables to the second multiply-accumulate calculator 30.
  • the second product-sum calculator 30 includes an input unit 31 into which the plurality of second input variables output from the register 20 are input, a third memory 32 storing a plurality of second weight data, and second weight data.
  • the second adders 34-1 and 34-2 that calculate the plurality of sums of the above and the plurality of the sums added by the second adders 34-1 and 34-2, respectively, are output as a plurality of output values. It has two output units 35-1, 35-2.
  • the second product-sum calculation unit 30 constitutes a digital product-sum calculation circuit like the first product-sum calculation unit 10.
  • the third memory 32 stores a plurality of second weight data w 00 , w 01 , w 02 , ... w pq (both p and q are integers of 0 or more), and a plurality of them are stored by the second multiply-accumulate calculator 30. Second weight data w 00 , w 01 , w 02 , ... w pq is read.
  • the third memory 32 may be composed of a ring buffer memory. Since the memory for storing the second weight data does not require random accessibility, the second multiply-accumulate calculator 30 can be easily configured by configuring the third memory 32 with a ring buffer memory.
  • Second multiplier 33-1 a plurality of second input variable i 0, i 1, i 2 , ... i and i i of m, second weight data w 00, w 01, w 02 , ... w pq Of these, w jk is used as an input, and the product w jk i i is output.
  • the second multiplier 33-1 is composed of a digital multiplier. Since the second multiplier 33-2 has the same configuration as the second multiplier 33-1, the description thereof will be omitted. In the present embodiment, the second multiply-accumulate unit 30 has two second multipliers 33-1 and 33-2, but is not limited to this, and has one second multiplier. May be good.
  • the second adder 34-1 a plurality of products w jk i i multiplied by the second multiplier 33-1 as an input, a plurality of products w jk i i sum? W jk i i a plurality of output values y of Output as 0 , y 1 , y 2 , ... y p .
  • a p m-1
  • q m
  • a plurality of products w jk i i sum? W jk i i a plurality of output values y 0 of, y 1, y 2, ... y m-1 (m is It is output as an integer greater than or equal to 0).
  • the second adder 34-1 is composed of a digital adder. Since the second adder 34-2 has the same configuration as the second adder 34-1, the description thereof will be omitted. In the present embodiment, the second multiply-accumulate unit 30 has two second adders 34-1 and 34-2, but is not limited to this, and has one second adder. May be good.
  • the second output unit 35-1 outputs a plurality of output values y 0 , y 1 , y 2 , ... y p to the outside. Since the second output unit 35-2 has the same configuration as the second output unit 35-1, the description thereof will be omitted. In the present embodiment, the second multiply-accumulate unit 30 has two second output units 35-1, 35-2, but is not limited to this, and has one second output unit. May be good.
  • the second adder 34- The plurality of output values y 0 , y 1 , y 2 , ... y m-1 output from 1,34-2 are represented as a matrix E of m rows and 1 column.
  • the second multiply-accumulate unit 30 includes two second multipliers 33-1 and 33-2, a second adder 34-1 and 34-2, and two second output units 35-1, It has 35-2, but is not limited to this, and may have one second multiplier, one second adder, and one second output unit.
  • FIG. 2A is a schematic diagram showing an example of the configuration of the neural network 40 to which the neural network arithmetic processing apparatus 1 of FIG. 1 is applied.
  • the neural network 40 is a first product that performs operations between the input layer 41, the hidden layer 42 (also referred to as an intermediate layer), the output layer 43, and the input layer 41 and the hidden layer 42. It includes a sum calculator 10 and a second product sum calculator 30 that performs calculations between the hidden layer 42 and the output layer 43.
  • the input layer 41 includes, for example, five nodes 41A, 41B, 41C, 41D, 41E.
  • Five first input variables x 0 , x 1 , x 2 , x 3 , x 4 are given to the five nodes 41A, 41B, 41C, 41D, and 41E of the input layer 41, respectively.
  • the hidden layer 42 includes, for example, four nodes 42A, 42B, 42C, 42D.
  • the four nodes 42A, 42B, 42C, and 42D of the hidden layer 42 are given four second input variables i 0 , i 1 , i 2 , and i 3 , respectively.
  • the four second input variables i 0 , i 1 , i 2 , and i 3 are represented by a matrix C of 4 rows and 1 column, and 20 first weight data ⁇ 00. It is calculated by the product BA of the 4 rows and 5 columns matrix B representing ⁇ ⁇ 34 and the 5 rows and 1 column matrix A representing the five first input variables x 0 to x 4 .
  • the hidden layer 42 is composed of a single layer, but the present invention is not limited to this, and the hidden layer 42 may be composed of a plurality of layers.
  • the output layer 43 includes, for example, three nodes 43A, 43B, 43C.
  • three output values y 0 , y 1 , and y 2 are given to the three nodes 43A, 43B, and 43C of the output layer 43, respectively.
  • the three output values y 0 , y 1 , and y 2 are represented by a matrix E of 3 rows and 1 column, and represent 12 second weight data w 00 to w 23 . It is calculated by the product DC of the matrix D of 3 rows and 4 columns and the matrix C of 4 rows and 1 column representing the four second input variables i 0 to i 3 .
  • the second multiply-accumulate calculator 30 is at least a part of the arithmetic processing executed by the second multipliers 33-1 and 33-2 and the second adders 34-1 and 34-2. Is executed in parallel with the arithmetic processing executed by the first multiplier 13 and the first adder 14 of the first product-sum arithmetic unit 10.
  • the first multiply-accumulate calculator 10 has five first weight data ⁇ 00 to ⁇ 04 and 5 in the hidden layer 42.
  • the second input variable i 0 is calculated from the first input variables x 0 to x 4 .
  • the first multiply-accumulate calculator 10 has five first weight data ⁇ 10 to ⁇ 14 and five first inputs in the hidden layer 42.
  • the second input variable i 1 is calculated from the variables x 0 to x 4 , and as shown in FIG.
  • the second multiply-accumulate calculator 30 has four second weight data w 00 , w 10 , From w 20 and the second input variable i 0 , the products w 00 i 0, w 10 i 0 , and w 20 i 0 are calculated.
  • the first multiply-accumulate calculator 10 has five first weight data ⁇ 20 to ⁇ 24 and five first input variables in the hidden layer 42.
  • the second input variable i 2 is calculated from x 0 to x 4
  • the second multiply-accumulate calculator 30 has four second weight data w 01 , w 11 , w. From 21 and the second input variable i 1 , the products w 01 i 1, w 11 i 1 , and w 21 i 1 are calculated.
  • the first multiply-accumulate calculator 10 has five first weight data ⁇ 30 to ⁇ 34 and five first weight data in the hidden layer 42. to calculate from the input variables x 0 ⁇ x 4 second input variable i 3, as shown in FIG. 6 (c), the second sum-of-products arithmetic unit 30, four second weight data w 02, w 12 , W 22 and the second input variable i 2 , the products w 02 i 2, w 12 i 2 , and w 22 i 2 are calculated.
  • the second multiply-accumulate calculator 30 is derived from the four second weight data w 03 , w 13 , w 23 and the second input variable i 3. , These products w 03 i 3, w 13 i 3 , and w 23 i 3 are calculated. As a result, three output values y 0 , y 1 , and y 2 are obtained.
  • the arithmetic processing of the first multiply-accumulate arithmetic unit 10 and the arithmetic processing of the second product-sum arithmetic unit 30 proceed at the same time, so that the second input variable i 0 to the first product-sum arithmetic unit 10 output value y 0 ⁇ y 2 from the processing is started for i 3 is shortened the time to be obtained.
  • the second product-sum calculator 30 executes the arithmetic processing of the output values y 0 to y 2 after the arithmetic processing of the second input variables i 0 to i 3 is completed in the first product-sum calculator 10.
  • the time required for arithmetic processing is greatly reduced.
  • FIG. 8 is a diagram showing an example of a time chart of the arithmetic processing executed by the first product-sum arithmetic unit 10 and the arithmetic processing executed by the second product-sum arithmetic unit 30 in FIG.
  • the arithmetic processing executed by the first multiply-accumulate arithmetic unit 10 is divided into the first stage to the (m + 1) stage, and a plurality of arithmetic processings P1A (1), P1A (2), ... P1A are performed in each stage. It is assumed that (n + 1) (n is an integer of 0 or more) is executed.
  • the arithmetic processing executed by the second multiply-accumulate arithmetic unit 30 is divided into the first stage to the first (p + 1) stage, and a plurality of arithmetic processings P2A (1), P2A (2), ... P2A (q + 1) are performed in each stage. It is assumed that (q is an integer greater than or equal to 0) is executed.
  • the arithmetic processing P2A (1) executed by the second multiply-accumulate arithmetic unit 30 is in parallel with the processing time T1A (2) of the arithmetic processing P1A (2) executed by the first product-sum arithmetic unit 10. Will be executed.
  • the arithmetic processing P2A (2) executed by the second product-sum arithmetic unit 30 is executed in parallel with the arithmetic processing P1A (3) executed by the first product-sum arithmetic unit 10.
  • the arithmetic processing P2A (i) executed by the second multiply-accumulate arithmetic unit 30 is executed in parallel with the arithmetic processing P1A (i + 1) executed by the first product-sum arithmetic unit 10.
  • the arithmetic processing P2A (i) executed by the second multiply-accumulate arithmetic unit 30 is started at the same time as the arithmetic processing P1A (i + 1) executed by the first product-sum arithmetic unit 10. Further, the time T2A (i) required for the arithmetic processing P2A executed by the second multiply-accumulate arithmetic unit 30 is shorter than the time T1A (i + 1) required for the arithmetic processing P1A executed by the first product-sum arithmetic unit 10. Therefore, the arithmetic processing P2A (i) executed by the second multiply-accumulate arithmetic unit 30 ends before the arithmetic processing P1A (i + 1) executed by the first product-sum arithmetic unit 10 ends.
  • the entire processing time T2A (i) of the arithmetic processing P2A (i) executed by the second multiply-accumulate arithmetic unit 30 is the arithmetic processing P1A (calculated by the first product-sum arithmetic unit 10). It overlaps with a part of the processing time T1A (i + 1) of i + 1).
  • the arithmetic processing P2A (i) executed by the second multiply-accumulate arithmetic unit 30 may overlap with at least a part of the arithmetic processing P1A (i + 1) executed by the first product-sum arithmetic unit 10. Further, the arithmetic processing P2A (i) executed by the second multiply-accumulate arithmetic unit 30 does not have to be started at the same time as the arithmetic processing P1A (i + 1) executed by the first product-sum arithmetic unit 10, and the arithmetic processing P1A It may be started before (i + 1) is started, or it may be started after the arithmetic processing P1A (i + 1) is started.
  • FIG. 9A shows an example of the number of parallels and the number of pipelines of the arithmetic processing P1 executed by the first product-sum arithmetic unit 10 in FIG. 2 and the arithmetic processing P2 executed by the second product-sum arithmetic unit 30. It is a schematic diagram which shows an example of the number of parallels and the number of pipelines.
  • FIG. 9B is a diagram showing a modified example of the time chart of the arithmetic processing P1 of the first product-sum arithmetic unit 10 and the arithmetic processing P2 of the second product-sum arithmetic unit 30 in FIG. 9A.
  • the number of operations constituting the arithmetic processing P1B executed by the first product-sum arithmetic unit 10 is (n + 1) (n is an integer of 0 or more), and the second product-sum arithmetic unit
  • the number of operations constituting the arithmetic processing P2B executed by 30 is (q + 1) (q is an integer of 0 or more)
  • the parallel number L1 of the arithmetic processing P1B executed by the first product-sum arithmetic unit 10 is an arithmetic operation.
  • the parallel number L2 of the arithmetic processing P2B executed by the second product-sum arithmetic unit 30 is preferably a divisor of the arithmetic number (q + 1).
  • the parallel number L1 of the arithmetic processing P1B is set to 49 and the parallel number L2 of the arithmetic processing P2B is set to 16. can do.
  • both the number of pipelines C1 constituting the arithmetic processing P1B and the number of pipelines C2 constituting the arithmetic processing P2B are It is preferably the greatest common divisor of the number of operations (n + 1) and the number of operations (q + 1).
  • the timing at which the arithmetic processing P2B (i) executed by the second product-sum arithmetic unit 30 ends is the same as the timing at which the arithmetic processing P1B (i + 1) executed by the first product-sum arithmetic unit 10 ends. It is preferable to adjust as such.
  • the processing time T2B (1) of the arithmetic processing P2B (1) can be set to be the same as the processing time T1B (2) of the arithmetic processing P1B (2).
  • the processing time T2B (i) of the arithmetic processing P2B (i) can be set to be the same as the processing time T1B (i + 1) of the arithmetic processing P1B (i + 1).
  • the efficiency of the arithmetic processing P1B executed by the first product-sum arithmetic unit 10 and the arithmetic processing P2B executed by the second product-sum arithmetic unit 30 can be maximized, and the increase in the circuit scale is further suppressed.
  • the neural network arithmetic processing apparatus 1 calculates a plurality of products ⁇ jk x i of the first input variable x i and the first weight data ⁇ jk, and at the same time, the product ⁇ jk x i calculates a plurality of sums Shigumaomega jk x i (first calculation step), a plurality of the sum Shigumaomega jk x i calculated at the first calculation step, a plurality of second input variable i 0, i 1 , i 2, is held as ... i m (holding step).
  • a plurality of sums ⁇ w jk i i calculated in the second calculation step are output as a plurality of output values y 0 , y 1 , y 2 , ... y p (second output step). Then, at least a part of the arithmetic processing executed in the second arithmetic process is executed in parallel with the arithmetic processing executed in the first arithmetic process.
  • FIG. 10 is a schematic diagram schematically showing a modified example of the configuration of the neural network arithmetic processing device 1 of FIG. This modification is different from the above embodiment in that the control signal transmission unit is provided in both the first product-sum calculation unit and the second product-sum calculation unit.
  • the same configurations as those in the above embodiment are designated by the same reference numerals as those in the above embodiment, the description thereof will be omitted, and the different parts will be described below.
  • the first product-sum calculator 10 transmits the first control signal S1 to the second product-sum calculator 30 and receives the second control signal S2 from the second product-sum calculator 30.
  • a first signal transmission / reception unit 16 for transmitting the third control signal S3 and a signal transmission unit 17 for transmitting the third control signal S3 to the register 20 are further provided.
  • the second product-sum calculation unit 30 transmits the second control signal S2 to the second product-sum calculation unit 30, and also receives the first control signal S1 from the first product-sum calculation unit 10. Is further equipped.
  • the first signal transmission / reception unit 16 sends a second control signal S1 for notifying that the arithmetic processing of the first product-sum arithmetic unit 10 is completed when the arithmetic processing of the first product-sum arithmetic unit 10 is completed. It is transmitted to the product-sum calculator 30.
  • the signal transmission unit 17 transmits to the register 20 the first control signal S3 notifying that the arithmetic processing of the first product-sum arithmetic unit 10 is completed. To do.
  • the first product-sum calculator 10 has a first signal transmission / reception unit 16 and a signal transmission unit 17, but the present invention is not limited to this, and the first control signal S1 is the second product-sum calculator 30. It may have one signal transmission / reception unit that receives the second control signal S2 from the second multiply-accumulate calculator 30 and transmits the third control signal S3 to the register 20.
  • the second signal transmission / reception unit 36 sends a first control signal S2 for notifying that the arithmetic processing of the second product-sum arithmetic unit 30 is completed when the arithmetic processing of the second product-sum arithmetic unit 30 is completed. It is transmitted to the product-sum calculator 10.
  • FIG. 11 is a flowchart showing an example of a neural network arithmetic processing method executed by the neural network arithmetic processing unit 1 of FIG.
  • the neural network arithmetic processing unit 1 sets the second control signal S2 to 1
  • the second product-sum arithmetic unit 30 transmits the second control signal S2 to the first product-sum arithmetic unit 10.
  • the neural network arithmetic processing device 1 sets the first control signal S1 to 0 and sets the third control signal S3 to 0 (step S2).
  • the first sum-of-products arithmetic unit 10 executes the above-described processing P1A (1) (step S3), and calculates the sum ⁇ 0k x i of the plurality of product omega 0k x i as second input variable i 0 Then, the arithmetic processing P1A (1) ends (step S4).
  • the neural network arithmetic processing device 1 sets the third control signal S3 to 1, and the first product-sum arithmetic unit 10 transmits the third control signal S3 to the second product-sum arithmetic unit 30 (step S5). ..
  • the first product-sum arithmetic unit 10 transmits the second input variable i 0 obtained by the arithmetic processing P1A (1) to the register 20 via the first output unit 15.
  • the neural network arithmetic processing unit 1 holds the arithmetic result (second input variable i 0 ) output from the first output unit 15 of the first product-sum arithmetic unit 10 in the register 20 (step S6).
  • the neural network arithmetic processing device 1 sets the first control signal S1 to 1, and the first product-sum arithmetic unit 10 transmits the first control signal S1 to the second product-sum arithmetic unit 30 (step S7). ). After that, the neural network arithmetic processing device 1 determines whether or not the second control signal S2 is set to 1 (step S8), and when the second control signal S2 is set to 1, steps S2 and The process proceeds to step S9.
  • the neural network arithmetic processing device 1 sets the first control signal S1 to 0, sets the third control signal S3 to 0 (step S2), and further sets the second control signal S2 to 0 (step S2). Step S9).
  • the first product-sum arithmetic unit 10 executes the above-described arithmetic processing P1A (2) (step S3), and calculates the sum ⁇ 1k x i of the plurality of products x i ⁇ 1k as the second input variable i 1. To do.
  • the second product-sum arithmetic unit 30 executes the above-mentioned arithmetic processing P2A (1) in parallel with the above-mentioned arithmetic processing of the first product-sum arithmetic unit 10 (step S10), and the products w j0 i 0 , w.
  • a plurality of j0 i 2 , w j0 i 3 , ... w p0 i 0 are calculated, and the arithmetic processing P2A (1) ends (step S11).
  • the neural network arithmetic processing unit 1 sets the second control signal S2 to 1, and the second product-sum arithmetic unit 30 transmits the second control signal S2 to the first product-sum arithmetic unit 10 (step S12). ..
  • the neural network processing unit 1 repeats the above processing, the first sum-of-products arithmetic unit 10 sequentially, a second input variable i 2, i 3, i 4, calculates a ... i m, the second product OR calculator 30 is also in parallel with the processing of the first sum-of-products arithmetic unit 10 sequentially product w j1 i 1, w j2 i 2, w j3 i 3, ... calculates a plurality of w pq i m.
  • the second input variable i m When the calculation of the second input variable i m is completed, a plurality of products w 0k i i the sum?
  • the product-sum calculation can be performed by performing parallel calculation over two layers, the hidden layer 42 and the output layer 43, using the first control signal S1, the second control signal S2, and the third control signal. It is possible to realize high speed and high efficiency, suppress an increase in circuit scale, and perform product-sum calculation with a simple design.
  • FIG. 12 is a schematic diagram schematically showing another modification of the configuration of the neural network arithmetic processing apparatus 1 of FIG.
  • the neural network arithmetic processing unit 1 further includes an activation function arithmetic processing unit 50 that performs an operation using an activation function between the register 20 and the second product-sum arithmetic unit 30. May be good.
  • Activation function processing unit 50 for example, a second input variable i 2, i 3, i 4 , ... a i m as inputs, the calculation result of the activation function f (i), the second sum-of-products arithmetic unit 30 Output to.
  • the activation function f (i) is, for example, a logistic sigmoid function, a hyperbolic rectifier function, a ReLU function, or an identity function.
  • the neural network arithmetic processing unit 1 may include an activation function arithmetic processing unit between the first product-sum arithmetic unit 10 and the register 20.
  • the activation function calculation processing unit may be provided both between the first product-sum calculation unit 10 and the register and between the register 20 and the second product-sum calculation unit 30.
  • the activation function arithmetic processing unit 50 can execute the highly accurate arithmetic processing by calculating the activation function f (i) using the second input variable i i .
  • FIG. 13 is a schematic diagram schematically showing a modified example of the configuration of the first product-sum calculation unit 10 and the second product-sum calculation unit 30 in FIG.
  • the first product-sum calculator 10 includes the first multipliers 13-1 and 13-2 that calculate a plurality of products of the first input variable and the first weight data, and two first multipliers. 1
  • the first adders 14-1 and 14-2 for calculating a plurality of sums of products multiplied by the multipliers 13-1 and 13-2 may be provided.
  • the first multiply-accumulate unit 10 since the first multiply-accumulate unit 10 includes a plurality of first multipliers, it is possible to increase the number of routes to which the first memory 11 or the second memory 12 and the first multiplier are connected. it can. Further, the amount of data for reading the first input variable from the first memory 11 at one time can be increased, and the amount of data for reading the first weight data from the second memory 12 at one time can be increased. Therefore, the arithmetic processing can be executed more efficiently.
  • FIG. 14 is a schematic diagram schematically showing a modified example of the configuration of the neural network arithmetic processing apparatus 1 of FIG.
  • the neural network arithmetic processing unit 1 has registers 20 connected to the first multiply-accumulate arithmetic units 10-1 and 10-2 and the first product-sum arithmetic units 10-1 and 10-2, respectively.
  • -1,20-2 and second multiply-accumulate arithmetic units 30-1 and 30-2 connected to registers 20-1 and 20-2 may be provided.
  • the first multiply-accumulate calculator 10-1 includes a first memory 11-1, a second memory 12-1, a first multiplier 13-1, 13-2, a first adder 14-1, 14-2, and a first. It includes one output unit 15-1, a first signal transmission / reception unit 16-1, and a signal transmission unit 17-1.
  • the first product-sum calculator 10-2 includes a first memory 11-2, a second memory 12-2, a first multiplier 13-3, 13-4, and a first adder 14-3, 14-4. , A first output unit 15-2, a first signal transmission / reception unit 16-2, and a signal transmission unit 17-2.
  • the second multiply-accumulate calculator 30-1 includes an input unit 31-1, a third memory 32-1, a second multiplier 33-1, 33-2, a second adder 34-1, 34-2, and a second. It includes output units 35-1, 35-2 and a second signal transmission / reception unit 36-1.
  • the second multiply-accumulate unit 30-2 includes an input unit 31-2, a third memory 32-2, a second multiplier 33-3, 33-4, and a second adder 34-3, 34-4.
  • a second output unit 35-3, 35-4 and a second signal transmission / reception unit 36-2 are provided.
  • the neural network arithmetic processing unit 1 has a control signal between the first product-sum arithmetic unit 10-1 and the register 20-1 and between the first product-sum arithmetic unit 10-2 and the register 20-2.
  • a repeater 60 can be further provided.
  • the control signal repeater 60 receives, for example, the first control signal S1 transmitted from the first product-sum calculator 10-1, and the first control signal S1 is sent to the second product-sum calculator 30-1, Send to either or both of 30-2.
  • the control signal repeater 60 receives the first control signal S1 transmitted from the first product-sum calculator 10-2, and also receives the first control signal S1 from the second product-sum calculator 30-1, Send to either or both of 30-2.
  • control signal repeater 60 receives, for example, the second control signal S2 transmitted from the second product-sum calculator 30-1, and the second control signal S2 is sent to the first product-sum calculator 10-. Send to either or both of 1,10-2. Further, the control signal repeater 60 receives the second control signal S2 transmitted from the second product-sum calculator 30-2, and also receives the second control signal S2 from the first product-sum calculator 10-1, Send to either or both of 10-2.
  • control signal repeater 60 receives, for example, the third control signal S3 transmitted from the first product-sum calculator 10-1 and / or the first product-sum calculator 10-2, and the third control.
  • the signal S3 is transmitted to register 20-1 and / or register 20-2.
  • the neural network arithmetic processing unit 1 since the neural network arithmetic processing unit 1 includes a plurality of first product-sum arithmetic units, a plurality of registers, and a plurality of second product-sum arithmetic units, the arithmetic processing can be executed more efficiently. Can be done.
  • a program for realizing the functions of each device is recorded on a computer-readable recording medium (storage medium), and the recording medium is used. Processing may be performed by loading the recorded program into a computer system and executing it.
  • the term "computer system” as used herein may include hardware such as an operating system (OS: Operating System) or peripheral devices.
  • the "computer-readable recording medium” includes a flexible disk, a magneto-optical disk, a ROM (Read Only Memory), a writable non-volatile memory such as a flash memory, and a portable medium such as a DVD (Digital Versaille Disc).
  • a storage device such as a hard disk built into a computer system.
  • the recording medium may be, for example, a recording medium for temporarily recording data.
  • the "computer-readable recording medium” is a volatile memory (for example, DRAM (for example, DRAM) inside a computer system that serves as a server or client when a program is transmitted via a network such as the Internet or a communication line such as a telephone line. It also includes those that hold the program for a certain period of time, such as Dynamic Random Access Memory)). Further, the above program may be transmitted from a computer system in which this program is stored in a storage device or the like to another computer system via a transmission medium or by a transmission wave in the transmission medium.
  • DRAM for example, DRAM
  • the "transmission medium” for transmitting a program refers to a medium having a function of transmitting information, such as a network (communication network) such as the Internet or a communication line (communication line) such as a telephone line.
  • the above program may be for realizing a part of the above-mentioned functions.
  • the above program may be a so-called difference file (difference program) that can realize the above-mentioned functions in combination with a program already recorded in the computer system.
  • a processor such as a CPU (Central Processing Unit) reads and executes a program stored in a memory.
  • CPU Central Processing Unit
  • Neural network arithmetic processing device 10 1st multiplier arithmetic unit 10-1 1st multiplier sum arithmetic unit 10-2 1st multiplier sum arithmetic unit 11 1st memory 11-1 1st memory 11-2 1st memory 12 2nd Memory 12-1 Second memory 12-2 Second memory 13 First multiplier 13-1 First multiplier 13-2 First multiplier 13-3 First multiplier 13-4 First multiplier 14 First addition Instrument 14-1 First multiplier 14-2 First multiplier 14-3 First multiplier 14-4 First multiplier 15 First output unit 15-1 First output unit 15-2 First output unit 16 First 1 Signal transmission / reception unit 16-1 First signal transmission / reception unit 16-2 First signal transmission / reception unit 17 Signal transmission unit 17-1 Signal transmission unit 17-2 Signal transmission unit 20 Register 20-1 Register 20-2 Register 30 Second product Sum calculator 30-1 Second multiplier Sum calculator 30-2 Second multiplier Sum calculator 31 Input unit 31-1 Input unit 31-2 Input unit 32 Third memory 32-1 Third memory 32-2 Third memory 33-1 2nd multiplier 33-2 2nd multiplier 33-3 2nd multiplier 33-4

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

積和演算の更なる高速化、効率化を実現することができ、且つ回路規模の増大を抑制し、更には簡便な設計で積和演算を行うことができるニューラルネットワーク演算処理装置を提供する。 ニューラルネットワーク演算処理装置(1)は、第1積和演算器(10)と、第1積和演算器(10)に接続されたレジスタ(20)と、レジスタ(20)に接続された第2積和演算器(30)とを備える。第1積和演算器(10)は、第1メモリ(11)、第2メモリ(12)、第1乗算器(13)、第1加算器(14)及び第1出力部(15)を有する。第2積和演算器(30)は、入力部(31)、第3メモリ(32)、第2乗算器(33-1),(33-2)、第2加算器(34-1),(34-2)及び第2出力部(35-1),(35-2)を有する。

Description

ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法
 本発明は、ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法に関し、特に、ニューラルネットワークの積和演算をデジタルで行うニューラルネットワーク演算処理装置に関する。
 ニューラルネットワークは、金融、マーケティング、認証、セキュリティなどの広い分野で、深層学習をはじめ、高度な情報の識別技術、分類技術に実用化されている。上記のような技術では、高機能化等に伴い、膨大な量の積和演算が必要であることから、積和演算の高速化、効率化が重要となっている。
 ニューラルネットワークは、一般的にニューラルネットの層数が多くなるほど高性能になる。しかし、層数が多くなると、回路規模が増大するほか、演算量も増大し、多くの演算時間が必要になる。よって、演算機能の向上と性能の双方を考慮しながらデバイスを構成する必要がある。
 従来、乗算器、加算器、メモリ、レジスタなどの相互の結合の切り換えをセレクタによって実行し、かつ複数のプロセッサエレメント(PE)を2次元的に配列してその各列と各行にメモリと加算器を付加した行列演算装置と、該行列演算装置とは並列に動作可能であり、行列計算以外の計算を行う補助演算装置とを備えたニューロプロセッサが提案されている(特許文献1)。本構成では、各プロセッサエレメントに割り当てられた行列計算を効率良く柔軟に行うことができ、また、行列計算以外の計算を別に備えた補助演算装置によって並列に行うことにより、膨大な演算を高速に処理できるとされている。
特開平05-346914号公報
 しかしながら、上記のような技術では、一つの層内では演算処理を並列化することで高速な演算が可能であるものの、演算機能を次段でも適用すると、ニューラルネットワーク全体としては非効率であり、積和演算の高速化、効率化が十分とは言えない。
 一般に、積和演算の高速化、効率化を実現するための方法として、一つの層内で演算処理を並列化したり、パイプライン化する方法がある。また、層数が何層になるかはどのようなものを処理対象とするかに因って変化するため、汎用性等の観点から、演算機能は1層で完結し、当該演算機能を次段でも適用する方法が多い。
 例えば、簡易的な演算処理として、2つの変数の読み出し、該2つの変数の和算、及び和算の値のメモリへの書き込みの一連の動作を、3回繰り返して行うことを想定する。通常の演算の場合、関数の入力が3クロック毎に読み出され、和算の値がその2サイクル後に出力されるため、演算処理全体に掛かる時間は、3クロック×3(回)=9クロックとなる。
 この演算処理を並列化した場合、9クロックより短い3クロックで演算処理を完了することができるが、複数のデータを同時に読み出し及び書き込みできる回路としなければならず、また、並列化した数と同じ数の演算器が必要になるため、回路規模が増大する。
 また、上記演算処理をパイプライン化した場合、層間のレジスタを用いて3クロック遅れたタイミングで順次上記一連の動作を行うため、9クロックよりも短い時間で演算処理を完了することができ、また、1つの演算器で実行できるので回路規模の増大を抑制できる。しかし、更なる高速化を実現するためには時間的な綿密な設計が必要となり、煩雑である。また、実際のニューラルネットワークの演算では、膨大な演算を行うため、並列化やパイプライン化を効率よく組み合わせ、回路規模を抑えつつ、高速な演算を実現するように回路を設計する必要があるが、層内での効率化だけに留まっており、十分とは言えない。
 本発明の目的は、積和演算の更なる高速化、効率化を実現することができ、且つ回路規模の増大を抑制し、更には簡便な設計で積和演算を行うことができるニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法を提供することにある。
 上記目的を達成するために、本発明は以下の手段を提供する。
[1]1以上の第1積和演算器と、
 前記1以上の第1積和演算器に接続された1以上のレジスタと、
 前記1以上のレジスタに接続された1以上の第2積和演算器と、を備え、
 前記第1積和演算器は、
 複数の第1入力変数を格納した第1メモリと、
 複数の第1重みデータを格納した第2メモリと、
 前記第1入力変数と前記第1重みデータとの積の複数を演算する1以上の第1乗算器と、
 前記1以上の第1乗算器で乗算された前記積の複数の和を演算する1以上の第1加算器と、
 前記1以上の第1加算器で加算された前記和の複数を、複数の第2入力変数として前記レジスタに出力する1以上の第1出力部と、を有し、
 前記第2積和演算器は、
 複数の第2重みデータを格納した第3メモリと、
 前記第2重みデータと前記レジスタに保持された前記第2入力変数との積の複数を演算する1以上の第2乗算器と、
 前記1以上の第2乗算器で乗算された前記積の複数の和を演算する1以上の第2加算器と、
 前記1以上の第2加算器で加算された前記和の複数を、複数の出力値として出力する1以上の第2出力部と、を有する、
 ニューラルネットワーク演算処理装置。
[2]前記第2積和演算器で実行される演算処理の少なくとも一部を、前記第1積和演算器で実行される演算処理と並列に実行する、請求項1に記載のニューラルネットワーク演算処理装置。
[3]前記第1積和演算器10で実行される演算処理P1を構成する演算数が(n+1)(nは0以上の整数)であり、前記第2積和演算器で実行される演算処理P2を構成する演算数が(q+1)(qは0以上の整数)である場合、
 前記第1積和演算器で実行される前記演算処理P1の並列数L1は、演算数(n+1)の約数であり、前記第2積和演算器で実行される前記演算処理P2の並列数L2は、演算数(q+1)の約数である、請求項2に記載のニューラルネットワーク演算処理装置。
[4]前記演算処理P1を構成するパイプライン数C1及び前記演算処理P2を構成するパイプライン数C2の双方が、前記演算数(n+1)と前記演算数(q+1)の最大公約数である、上記[3]に記載のニューラルネットワーク演算処理装置。
[5]前記第2積和演算器で実行される演算処理が終了するタイミングが、前記第1積和演算器の演算処理が終了するタイミングと同じである、上記[3]又は[4]に記載のニューラルネットワーク演算処理装置。
[6]前記第2メモリ及び前記第3メモリの各々が、リングバッファメモリである、上記[1]に記載のニューラルネットワーク演算処理装置。
[7]前記第1積和演算器と前記レジスタとの間と、前記レジスタと前記第2積和演算器との間の少なくとも一方に、活性化関数を用いて演算する1以上の活性化関数演算処理部を更に備える、上記[1]に記載のニューラルネットワーク演算処理装置。
[8]前記1以上の第1乗算器は、複数の第1乗算器であり、
 前記1以上の第1加算器は、複数の第1加算器である、上記[2]~[7]のいずれかに記載のニューラルネットワーク演算処理装置。
[9]前記1以上の第2積和演算器は、複数の前記第2積和演算器であり、
 前記複数の前記第2積和演算器が、前記1以上の第1積和演算器と並列に動作する、上記[2]~[8]のいずれかに記載のニューラルネットワーク演算処理装置。
[10]前記1以上の第1積和演算器は、複数の前記第1積和演算器であり、
 前記複数の前記第1積和演算器が、前記1以上の第2積和演算器と並列に動作する、上記[2]~[8]のいずれかに記載のニューラルネットワーク演算処理装置。
[11]前記1以上の第1積和演算器は、複数の前記第1積和演算器であり、
前記1以上の第2積和演算器は、複数の前記第2積和演算器であり、
 前記複数の前記第1積和演算器が、前記複数の第2積和演算器と並列に動作する、上記[2]~[8]のいずれかに記載のニューラルネットワーク演算処理装置。
[12]第1入力変数と第1重みデータとの積の複数を演算すると共に、前記積の複数の和を演算する第1演算工程と、
 前記第1演算工程で演算された前記和の複数を、複数の第2入力変数として保持する保持工程と、
 第2重みデータと前記第2入力変数との積の複数を演算すると共に、前記積の複数の和を演算する第2演算工程と、
 前記第2演算工程で演算された前記和の複数を、複数の出力値として出力する第2出力工程と、を有し、
 前記第2演算工程で実行される演算処理の少なくとも一部を、前記第1演算工程で実行される演算処理と並列して実行する、ニューラルネットワーク演算処理方法。
 本発明によれば、積和演算の更なる高速化、効率化を実現することができ、且つ回路規模の増大を抑制し、更には簡便な設計で積和演算を行うことができるニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法を提供することができる。
図1は、本発明の実施形態に係るニューラルネットワーク演算処理装置の構成の一例を概略的に示す模式図である。 図2(a)は、図1のニューラルネットワーク演算処理装置が適用されるニューラルネットワークの構成の一例を示す模式図であり、図2(b)は、図2(a)の第1積和演算器の演算を示す図、図2(c)は、図2(a)の第2積和演算器の演算を示す図である。 図3(a)は、図2のニューラルネットワークにおける第一段階での信号のフローを示す図であり、図3(b)は、図3(a)のフローにおける第1積和演算器の演算を示す図、図3(c)は、図3(a)のフローにおける第2積和演算器の演算を示す図である。 図4(a)は、図2のニューラルネットワークにおける第二段階での信号のフローを示す図であり、図4(b)は、図4(a)のフローにおける第1積和演算器の演算を示す図、図4(c)は、図4(a)のフローにおける第2積和演算器の演算を示す図である。 図5(a)は、図2のニューラルネットワークにおける第三段階での信号のフローを示す図であり、図3(b)は、図3(a)のフローにおける第1積和演算器の演算を示す図、図3(c)は、図3(a)のフローにおける第2積和演算器の演算を示す図である。 図6(a)は、図2のニューラルネットワークにおける第四段階での信号のフローを示す図であり、図6(b)は、図6(a)のフローにおける第1積和演算器の演算を示す図、図6(c)は、図6(a)のフローにおける第2積和演算器の演算を示す図である。 図7(a)は、図2のニューラルネットワークにおける第五段階での信号のフローを示す図であり、図7(b)は、図7(a)のフローにおける第1積和演算器の演算を示す図、図7(c)は、図7(a)のフローにおける第2積和演算器の演算を示す図である。 図8は、図2における第1積和演算器で実行される演算処理と、第2積和演算器で実行される演算処理のタイムチャートの一例を示す図である。 図9は、図2における第1積和演算器で実行される演算処理の並列数及びパイプライン数と、第2積和演算器で実行される演算処理の並列数及びパイプライン数の一例を示す模式図であり、図9(b)は、図9(a)における第1積和演算器の演算処理と、第2積和演算器の演算処理のタイムチャートの変形例を示す図である。 図10は、図1のニューラルネットワーク演算処理装置の構成の変形例を概略的に示す模式図である。 図11は、図10のニューラルネットワーク演算処理装置で実行されるニューラルネットワーク演算処理方法の一例を示すフローチャートである。 図12は、図1のニューラルネットワーク演算処理装置の構成の他の変形例を概略的に示す模式図である。 図13は、図10における第1積和演算器及び第2積和演算器の構成の変形例を概略的に示す模式図である。 図14は、図10のニューラルネットワーク演算処理装置の構成の変形例を概略的に示す模式図である。
 以下、本発明の実施形態について、図面を参照して詳細に説明する。
[ニューラルネットワーク演算処理装置の構成]
 図1は、本発明の実施形態に係るニューラルネットワーク演算処理装置の構成の一例を概略的に示す模式図である。
 図1に示すように、ニューラルネットワーク演算処理装置1は、第1積和演算器10と、第1積和演算器10に接続されたレジスタ20と、レジスタ20に接続された第2積和演算器30とを備える。
 第1積和演算器10は、複数の第1入力変数を格納した第1メモリ11と、複数の第1重みデータを格納した第2メモリ12と、上記第1入力変数と上記第1重みデータとの積の複数を演算する第1乗算器13と、第1乗算器13で乗算された積の複数の和を演算する第1加算器14と、第1加算器14で加算された上記和の複数を、複数の第2入力変数としてレジスタ20に出力する第1出力部15とを有する。本実施形態では、第1積和演算器10は、デジタル積和演算回路を構成している。
 第1メモリ11は、複数の第1入力変数x,x,x,…x(nは0以上の整数)を格納しており、第1積和演算器10によって複数の第1入力変数x,x,x,…xが読み出される。第1メモリ11は、例えば、複数の第1入力変数x,x,x,…xを(n+1)行1列の行列A(n次元の列ベクトル)として格納している。第1メモリ11は、リングバッファメモリで構成されてもよい。第1入力変数を格納するメモリはランダムアクセス性を要しないため、第1メモリ11をリングバッファメモリで構成することで、第1積和演算器10を簡便な構成とすることができる。また、第1メモリ11は、第1入力変数以外の他のデータを書き込んで格納するように構成することができる。
 第2メモリ12は、複数の第1重みデータω00,ω01,ω02,…ωmn(mは0以上の整数)を格納しており、第1積和演算器10によって複数の第1重みデータω00,ω01,ω02,…ωmnが読み出される。第2メモリ12は、例えば複数の第1重みデータを(m+1)行(n+1)列の行列Bとして格納している。また、第2メモリ12は、第1重みデータ以外の他のデータを書き込んで格納するように構成することができる。
 第2メモリ12は、リングバッファメモリで構成されてもよい。第1重みデータを格納するメモリはランダムアクセス性を要しないため、第2メモリ12をリングバッファメモリで構成することで、第1積和演算器10を簡便な構成とすることができる。
 本実施形態では、第1積和演算器10は、第1メモリ11及び第2メモリ12を備えているが、これに限られず、第1メモリ11及び第2メモリ12に代えて、上記複数の第1入力変数及び上記複数の第1重みデータを格納する一のメモリを備えてもよい。一のメモリを共有化することで、回路規模の増大を抑制できる。
 第1乗算器13は、第1入力変数x,x,x,…xのうちのxと、第1重みデータω00,ω01,ω02,…ωmnのうちのωjkを入力として、これらの積ωjkを出力する。第1乗算器13は、デジタル乗算器で構成されている。
 第1加算器14は、第1乗算器13で乗算された積ωjkの複数を入力として、複数の積ωjkの和Σωjkを第2入力変数i,i,i,…i(mは0以上の整数)として出力する。第1加算器14は、デジタル加算器で構成されている。
 上記第1乗算器13及び第1加算器14の演算は、例えば(m+1)行(n+1)列の行列Bと、(n+1)行1列の行列Aとの積BAで表すことができる。この場合、第1加算器14から出力される複数の第2入力変数i,i,i,…iは、(m+1)行1列の行列Cとして表される。
 レジスタ20は、第1積和演算器10の第1出力部15から出力された上記和の複数を、複数の第2入力変数として保持する。また、レジスタ20は、上記複数の第2入力変数を、第2積和演算器30に出力する。
 第2積和演算器30は、レジスタ20から出力された上記複数の第2入力変数が入力される入力部31と、複数の第2重みデータを格納した第3メモリ32と、第2重みデータとレジスタ20に保持された上記第2入力変数との積の複数を演算する第2乗算器33-1,33-2と、第2乗算器33-1,33-2でそれぞれ乗算された積の複数の和を演算する第2加算器34-1,34-2と、第2加算器34-1,34-2でそれぞれ加算された前記和の複数を、複数の出力値として出力する第2出力部35-1,35-2とを有する。本実施形態では、第2積和演算器30は、第1積和演算器10と同様、デジタル積和演算回路を構成している。
 第3メモリ32は、複数の第2重みデータw00,w01,w02,…wpq(p、qは共に0以上の整数)を格納しており、第2積和演算器30によって複数の第2重みデータw00,w01,w02,…wpqが読み出される。第3メモリ32は、例えば複数の第2重みデータを(p+1)行(q+1)列の行列Dとして格納している。一例としては、p=m-1、q+1=m+1、すなわちq=mとして、複数の第2重みデータが(p+1)行(m+1)列の行列Dとして格納される。
 第3メモリ32は、リングバッファメモリで構成されてもよい。第2重みデータを格納するメモリはランダムアクセス性を要しないため、第3メモリ32をリングバッファメモリで構成することで、第2積和演算器30を簡便な構成とすることができる。
 第2乗算器33-1は、複数の第2入力変数i,i,i,…iのうちのiと、第2重みデータw00,w01,w02,…wpqのうちのwjkを入力として、これらの積wjkを出力する。第2乗算器33-1は、デジタル乗算器で構成されている。第2乗算器33-2も、第2乗算器33-1と同様の構成であるので、その説明を省略する。本実施形態では、第2積和演算器30は、2つの第2乗算器33-1,33-2を有しているが、これに限られず、一の第2乗算器を有していてもよい。
 第2加算器34-1は、第2乗算器33-1で乗算された積wjkの複数を入力として、複数の積wjkの和Σwjkを複数の出力値y,y,y,…yとして出力する。一例としては、p=m-1、q=mとして、複数の積wjkの和Σwjkが複数の出力値y,y,y,…ym-1(mは0以上の整数)として出力される。第2加算器34-1は、デジタル加算器で構成されている。第2加算器34-2も、第2加算器34-1と同様の構成であるので、その説明を省略する。本実施形態では、第2積和演算器30は、2つの第2加算器34-1,34-2を有しているが、これに限られず、一の第2加算器を有していてもよい。
 第2出力部35-1は、複数の出力値y,y,y,…yを外部に出力する。第2出力部35-2は、第2出力部35-1と同様の構成であるので、その説明を省略する。本実施形態では、第2積和演算器30は、2つの第2出力部35-1,35-2を有しているが、これに限られず、一の第2出力部を有していてもよい。
 第2乗算器33-1,33-2及び第2加算器34-1,34-2の演算は、例えば(p+1)行(q+1)列の行列Dと、(m+1)行1列の行列Cとの積DCで表すことができる。一例としては、p+1=m、q+1=m+1として、m行(m+1)列の行列Dと、(m+1)行1列の行列Cとの積DCで表され、この場合、第2加算器34-1,34-2から出力される複数の出力値y,y,y,…ym-1は、m行1列の行列Eとして表される。
 本実施形態では、第2積和演算器30は、2つの第2乗算器33-1,33-2、第2加算器34-1,34-2及び2つの第2出力部35-1,35-2を有しているが、これに限られず、一の第2乗算器、一の第2加算器及び一の第2出力部を有していてもよい。
 図2(a)は、図1のニューラルネットワーク演算処理装置1が適用されるニューラルネットワーク40の構成の一例を示す模式図である。
 図2に示すように、ニューラルネットワーク40は、入力層41と、隠れ層42(中間層ともいう)と、出力層43と、入力層41と隠れ層42との間の演算を行う第1積和演算器10と、隠れ層42と出力層43との間の演算を行なう第2積和演算器30とを備えている。
 入力層41は、例えば5つのノード41A,41B,41C,41D,41Eを備えている。入力層41の5つのノード41A,41B,41C,41D,41Eに、それぞれ5個の第1入力変数x,x,x,x,xが与えられる。
 隠れ層42は、例えば4つのノード42A,42B,42C,42Dを備えている。図2の例では、隠れ層42の4つのノード42A,42B,42C,42Dに、それぞれ4個の第2入力変数i,i,i,iが与えられる。4個の第2入力変数i,i,i,iは、図2(b)に示すように、4行1列の行列Cで表され、20個の第1重みデータω00~ω34を表す4行5列の行列Bと、5個の第1入力変数x~xを表す5行1列の行列Aとの積BAによって算出される。本実施形態では、隠れ層42は単層で構成されるが、これに限られず、複数層で構成されてもよい。
 出力層43は、例えば3つのノード43A,43B,43Cを備えている。
図2の例では、出力層43の3つのノード43A,43B,43Cに、それぞれ3個の出力値y,y,yが与えられる。3個の出力値y,y,yは、図2(c)に示すように、3行1列の行列Eで表され、12個の第2重みデータw00~w23を表す3行4列の行列Dと、4個の第2入力変数i~iを表す4行1列の行列Cとの積DCによって算出される。
 図2のニューラルネットワーク40において、第2積和演算器30は、第2乗算器33-1,33-2及び第2加算器34-1,34-2で実行される演算処理の少なくとも一部を、第1積和演算器10の第1乗算器13及び第1加算器14で実行される演算処理と並列に実行する。
 具体的には、先ず、図3(a)及び図3(b)に示すように、第1積和演算器10が、隠れ層42において5個の第1重みデータω00~ω04と5個の第1入力変数x~xから第2入力変数iを算出する。
 次に、図4(a)及び図4(b)に示すように、第1積和演算器10が隠れ層42において5個の第1重みデータω10~ω14と5個の第1入力変数x~xから第2入力変数iを算出すると共に、図4(c)に示すように、第2積和演算器30が、4個の第2重みデータw00,w10,w20と第2入力変数iから、これらの積w000、10、w20を算出する。
 次いで、図5(a)及び図5(b)に示すように、第1積和演算器10が隠れ層42において5個の第1重みデータω20~ω24と5個の第1入力変数x~xから第2入力変数iを算出すると共に、図5(c)に示すように、第2積和演算器30が、4個の第2重みデータw01,w11,w21と第2入力変数iから、これらの積w011、11、w21を算出する。
 同様にして、図6(a)及び図6(b)に示すように、第1積和演算器10が隠れ層42において5個の第1重みデータω30~ω34と5個の第1入力変数x~xから第2入力変数iを算出すると共に、図6(c)に示すように、第2積和演算器30が、4個の第2重みデータw02,w12,w22と第2入力変数iから、これらの積w022、12、w22を算出する。
 そして、図7(a)及び図7(b)に示すように、第2積和演算器30は、4個の第2重みデータw03,w13,w23と第2入力変数iから、これらの積w033、13、w23を算出する。これにより、3個の出力値y,y,yが得られる。このように第1積和演算器10の演算処理と、第2積和演算器30の演算処理とが同時期に進行することで、第1積和演算器10における第2入力変数i~iの演算処理が開始してから出力値y~yが得られるまでの時間が短縮される。特に、第1積和演算器10において第2入力変数i~iの演算処理が終了した後に第2積和演算器30において出力値y~yの演算処理を実行する場合と比較して、演算処理に掛かる時間が大幅に短縮される。
 図8は、図2における第1積和演算器10で実行される演算処理と、第2積和演算器30で実行される演算処理のタイムチャートの一例を示す図である。
 図8において、第1積和演算器10で実行される演算処理を、第一段階から第(m+1)段階に分け、各段階で複数の演算処理P1A(1)、P1A(2),…P1A(n+1)(nは0以上の整数)が実行される場合を想定する。また、第2積和演算器30で実行される演算処理を第一段階から第(p+1)段階に分け、各段階で複数の演算処理P2A(1)、P2A(2),…P2A(q+1)(qは0以上の整数)が実行されることを想定する。このとき、第2積和演算器30で実行される演算処理P2A(1)は、第1積和演算器10で実行される演算処理P1A(2)の処理時間T1A(2)と並列して実行される。また、第2積和演算器30で実行される演算処理P2A(2)は、第1積和演算器10で実行される演算処理P1A(3)と並列して実行される。以後同様にして、第2積和演算器30で実行される演算処理P2A(i)は、第1積和演算器10で実行される演算処理P1A(i+1)と並行して実行される。
 本実施形態では、第2積和演算器30で実行される演算処理P2A(i)は、第1積和演算器10で実行される演算処理P1A(i+1)と同時に開始される。また、第2積和演算器30で実行される演算処理P2Aに掛かる時間T2A(i)が、第1積和演算器10で実行される演算処理P1Aに掛かる時間T1A(i+1)よりも短い。よって、第2積和演算器30で実行される演算処理P2A(i)は、第1積和演算器10で実行される演算処理P1A(i+1)が終了する前に終了する。
 また、本実施形態では、第2積和演算器30で実行される演算処理P2A(i)の処理時間T2A(i)の全体が、第1積和演算器10で実行される演算処理P1A(i+1)の処理時間T1A(i+1)の一部と重複する。これにより、第1積和演算器10における演算処理P1A(1),P1A(2),…P1A(n+1)の全てが終了した後に第2積和演算器30における演算処理P2A(1),P2A(2),…P2A(q+1)を実行する場合と比較して、演算処理P2A(1),P2A(2),…P2A(q+1)に掛かる総処理時間の総和ΣT2A(i)の分、処理時間が短縮される。
 第2積和演算器30で実行される演算処理P2A(i)は、第1積和演算器10で実行される演算処理P1A(i+1)の少なくとも一部と重複していればよい。また、第2積和演算器30で実行される演算処理P2A(i)は、第1積和演算器10で実行される演算処理P1A(i+1)と同時に開始されなくてもよく、演算処理P1A(i+1)が開始する前に開始してもよいし、演算処理P1A(i+1)が開始した後に開始してもよい。
 図9(a)は、図2における第1積和演算器10で実行される演算処理P1の並列数及びパイプライン数の一例と、第2積和演算器30で実行される演算処理P2の並列数及びパイプライン数の一例を示す模式図である。図9(b)は、図9(a)における第1積和演算器10の演算処理P1と、第2積和演算器30の演算処理P2のタイムチャートの変形例を示す図である。
 図9(a)に示すように、第1積和演算器10で実行される演算処理P1Bを構成する演算数が(n+1)(nは0以上の整数)であり、第2積和演算器30で実行される演算処理P2Bを構成する演算数が(q+1)(qは0以上の整数)である場合、第1積和演算器10で実行される演算処理P1Bの並列数L1は、演算数(n+1)の約数であり、第2積和演算器30で実行される演算処理P2Bの並列数L2は、演算数(q+1)の約数であるのが好ましい。例えば、演算処理P1Bの演算数が(n+1)=784、演算処理P2Bの演算数(q+1)=256の場合、演算処理P1Bの並列数L1を49、演算処理P2Bの並列数L2を16に設定することができる。
 また、演算処理P1Bの演算数が(n+1)、演算処理P2Bの演算数(q+1)の場合、演算処理P1Bを構成するパイプライン数C1及び演算処理P2Bを構成するパイプライン数C2の双方が、演算数(n+1)と演算数(q+1)の最大公約数であることが好ましい。一例として、演算処理P1Bの演算数が(n+1)=784、演算処理P2Bの演算数(q+1)=256の場合、演算処理P1Bのパイプライン数C1及び演算処理P2Bのパイプライン数C2の双方を、784と256の最大公約数である16に設定することができる。
 これにより、第1積和演算器10で実行される演算処理P1B及び第2積和演算器30で実行される演算処理P2Bの効率が良くなり、回路規模の増大が抑制される。
 また、第2積和演算器30で実行される演算処理P2B(i)が終了するタイミングが、第1積和演算器10で実行される演算処理P1B(i+1)が終了するタイミングと同じであるように調節することが好ましい。例えば、図9(b)に示すように、演算処理P2B(1)の処理時間T2B(1)を、演算処理P1B(2)の処理時間T1B(2)と同じに設定することができる。同様にして、演算処理P2B(i)の処理時間T2B(i)を、演算処理P1B(i+1)の処理時間T1B(i+1)と同じに設定することができる。これにより、第1積和演算器10で実行される演算処理P1B及び第2積和演算器30で実行される演算処理P2Bの効率を最も良くすることができ、回路規模の増大が更に抑制される。
 上述したように、本実施形態によれば、ニューラルネットワーク演算処理装置1が、第1入力変数xと第1重みデータωjkとの積ωjkの複数を演算すると共に、積ωjkの複数の和Σωjkを演算し(第1演算工程)、上記第1演算工程で演算された上記和Σωjkの複数を、複数の第2入力変数i,i,i,…iとして保持する(保持工程)。また、第2重みデータωjkと第2入力変数iとの積wjkの複数を演算すると共に、積wjkの複数の和Σwjkを演算し(第2演算工程)、上記第2演算工程で演算された和Σwjkの複数を、複数の出力値y,y,y,…yとして出力する(第2出力工程)。そして、上記第2演算工程で実行される演算処理の少なくとも一部を、上記第1演算工程で実行される演算処理と並列して実行する。このように、第1積和演算器10及び第2積和演算器30の双方を用いて、隠れ層42と出力層43の2層に亘る並列計算を行うことで、積和演算の更なる高速化、効率化を実現することができ、且つ回路規模の増大を抑制し、更には簡便な設計で積和演算を行うことができる。
 図10は、図1のニューラルネットワーク演算処理装置1の構成の変形例を概略的に示す模式図である。本変形例では、第1積和演算器及び第2積和演算器の双方に制御信号送信部が設けられている点で、上記実施形態と異なる。上記実施形態と同様の構成については、上記実施形態と同一の符号を付してその説明を省略し、異なる部分を以下に説明する。
 図10に示すように、第1積和演算器10は、第1制御信号S1を第2積和演算器30に送信すると共に、第2積和演算器30からの第2制御信号S2を受信する第1信号送受信部16と、第3制御信号S3をレジスタ20に送信する信号送信部17とを更に備えている。第2積和演算器30は、第2制御信号S2を第2積和演算器30に送信すると共に、第1積和演算器10からの第1制御信号S1を受信する第2信号送受信部36を更に備えている。
 第1信号送受信部16は、第1積和演算器10の演算処理が終了したときに、第1積和演算器10の演算処理が終了したことを通知する第1制御信号S1を、第2積和演算器30に送信する。信号送信部17は、第1積和演算器10の演算処理が終了したときに、第1積和演算器10の演算処理が終了したことを通知する第1制御信号S3を、レジスタ20に送信する。本変形例では、第1積和演算器10は、第1信号送受信部16及び信号送信部17を有しているが、これに限られず、第1制御信号S1を第2積和演算器30に送信すると共に、第2積和演算器30からの第2制御信号S2を受信し、且つ第3制御信号S3をレジスタ20に送信する一の信号送受信部を有していてもよい。
 第2信号送受信部36は、第2積和演算器30の演算処理が終了したときに、第2積和演算器30の演算処理が終了したことを通知する第2制御信号S2を、第1積和演算器10に送信する。
 図11は、図10のニューラルネットワーク演算処理装置1で実行されるニューラルネットワーク演算処理方法の一例を示すフローチャートである。
 図11おいて、先ず、ニューラルネットワーク演算処理装置1は、第2制御信号S2を1に設定し、第2積和演算器30は、第2制御信号S2を第1積和演算器10に送信する(ステップS1)。次に、ニューラルネットワーク演算処理装置1は、第1制御信号S1を0に設定すると共に、第3制御信号S3を0に設定する(ステップS2)。次いで、第1積和演算器10は、上述した演算処理P1A(1)を実行して(ステップS3)、複数の積ω0kの和Σω0kを第2入力変数iとして算出し、演算処理P1A(1)が終了する(ステップS4)。
 その後、ニューラルネットワーク演算処理装置1は、第3制御信号S3を1に設定し、第1積和演算器10は、第3制御信号S3を第2積和演算器30に送信する(ステップS5)。その後、第1積和演算器10は、演算処理P1A(1)によって得られた第2入力変数iを、第1出力部15を介してレジスタ20に送信する。ニューラルネットワーク演算処理装置1は、第1積和演算器10の第1出力部15から出力された演算結果(第2入力変数i)を、レジスタ20に保持する(ステップS6)。
 次に、ニューラルネットワーク演算処理装置1は、第1制御信号S1を1に設定し、第1積和演算器10は、第1制御信号S1を第2積和演算器30に送信する(ステップS7)。その後、ニューラルネットワーク演算処理装置1は、第2制御信号S2が1に設定されているか否かを判定し(ステップS8)、第2制御信号S2が1に設定されているときに、ステップS2及びステップS9に進む。
 次いで、ニューラルネットワーク演算処理装置1は、第1制御信号S1を0に設定すると共に、第3制御信号S3を0に設定し(ステップS2)、更に、第2制御信号S2を0に設定する(ステップS9)。このとき、第1積和演算器10は、上述した演算処理P1A(2)を実行し(ステップS3)、複数の積xω1kの和Σω1kを第2入力変数iとして算出する。また、第2積和演算器30は、第1積和演算器10の上記演算処理と並列に、上述した演算処理P2A(1)を実行して(ステップS10)、積wj0、wj0、wj0、…wp0の複数を算出し、演算処理P2A(1)が終了する(ステップS11)。その後、ニューラルネットワーク演算処理装置1は、第2制御信号S2を1に設定し、第2積和演算器30は、第2制御信号S2を第1積和演算器10に送信する(ステップS12)。
 以後、ニューラルネットワーク演算処理装置1は上記の処理を繰り返し、第1積和演算器10は、順次、第2入力変数i,i,i,…iを算出すると共に、第2積和演算器30も、第1積和演算器10の上記演算処理と並列に、順次積wj1、wj2、wj3、…wpqの複数を算出する。そして、第2入力変数iの算出が完了すると、複数の積w0kの和Σw0kを、出力値yとして第2出力部35-1及び/又は第2出力部35-2を介して外部に出力する。また、同様にして、複数の積i1kの和Σw1k、複数の積w2kの和Σw2k、…複数の積wpkの和Σwpkを、それぞれ出力値y,y,…yとして、第2出力部35-1及び/又は第2出力部35-2を介して外部に出力する。
 本変形例によっても、第1制御信号S1、第2制御信号S2及び第3制御信号を用いて、隠れ層42と出力層43の2層に亘る並列計算を行うことで、積和演算の更なる高速化、効率化を実現することができ、且つ回路規模の増大を抑制し、更には簡便な設計で積和演算を行うことができる。
 図12は、図1のニューラルネットワーク演算処理装置1の構成の他の変形例を概略的に示す模式図である。
 図12に示すように、ニューラルネットワーク演算処理装置1は、レジスタ20と第2積和演算器30との間に、活性化関数を用いて演算する活性化関数演算処理部50を更に備えていてもよい。活性化関数演算処理部50は、例えば、第2入力変数i,i,i,…iを入力として、活性化関数f(i)の算出結果を、第2積和演算器30に出力する。本実施形態では、活性化関数f(i)は、例えば、ロジスティック・シグモイド関数、双曲線正接関数、ReLU関数あるいは恒等関数である。
 ニューラルネットワーク演算処理装置1は、第1積和演算器10とレジスタ20との間に活性化関数演算処理部を備えていてもよい。あるいは、第1積和演算器10とレジスタとの間と、レジスタ20と第2積和演算器30との間の両方に、活性化関数演算処理部を備えていてもよい。
 このように、活性化関数演算処理部50によって、第2入力変数iを用いて活性化関数f(i)を算出することで、高精度な演算処理を実行することができる。
 図13は、図10における第1積和演算器10及び第2積和演算器30の構成の変形例を概略的に示す模式図である。上記実施形態と同様の構成については、上記実施形態と同一の符号を付してその説明を省略し、異なる部分を以下に説明する。
 図13に示すように、第1積和演算器10は、上記第1入力変数と第1重みデータとの積の複数を演算する第1乗算器13-1,13-2と、2つの第1乗算器13-1,13-2で乗算された積の複数の和を演算する第1加算器14-1,14-2を備えていてもよい。
 本変形例によれば、第1積和演算器10が複数の第1乗算器を備えるので、第1メモリ11や第2メモリ12と第1乗算器とが接続される経路数を増やすことができる。また、第1メモリ11から上記第1入力変数を一度に読み出すデータ量を増大させることができると共に、第2メモリ12から上記第1重みデータを一度に読み出すデータ量を増大させることができる。したがって、演算処理を更に効率良く実行することができる。
 図14は、図10のニューラルネットワーク演算処理装置1の構成の変形例を概略的に示す模式図である。上記実施形態と同様の構成については、上記実施形態と同一の符号を付してその説明を省略し、異なる部分を以下に説明する。
 図14に示すように、ニューラルネットワーク演算処理装置1は、第1積和演算器10-1,10-2と、第1積和演算器10-1,10-2にそれぞれ接続されたレジスタ20-1,20-2と、レジスタ20-1,20-2に接続された第2積和演算器30-1,30-2とを備えていてもよい。
 第1積和演算器10-1は、第1メモリ11-1、第2メモリ12-1、第1乗算器13-1,13-2、第1加算器14-1,14-2、第1出力部15-1、第1信号送受信部16-1及び信号送信部17-1を備える。また、第1積和演算器10-2は、第1メモリ11-2、第2メモリ12-2、第1乗算器13-3,13-4、第1加算器14-3,14-4、第1出力部15-2、第1信号送受信部16-2及び信号送信部17-2を備える。
 第2積和演算器30-1は、入力部31-1、第3メモリ32-1、第2乗算器33-1,33-2、第2加算器34-1,34-2、第2出力部35-1,35-2及び第2信号送受信部36-1を備える。また、第2積和演算器30-2は、入力部31-2、第3メモリ32-2、第2乗算器33-3,33-4、第2加算器34-3,34-4、第2出力部35-3,35-4及び第2信号送受信部36-2を備える。
 また、ニューラルネットワーク演算処理装置1は、第1積和演算器10-1とレジスタ20-1との間、及び第1積和演算器10-2とレジスタ20-2との間に、制御信号中継器60を更に備えることができる。制御信号中継器60は、例えば、第1積和演算器10-1から送信された第1制御信号S1を受信すると共に、当該第1制御信号S1を、第2積和演算器30-1,30-2のいずれか又は双方に送信する。更に、制御信号中継器60は、第1積和演算器10-2から送信された第1制御信号S1を受信すると共に、当該第1制御信号S1を、第2積和演算器30-1,30-2のいずれか又は双方に送信する。
 また、制御信号中継器60は、例えば、第2積和演算器30-1から送信された第2制御信号S2を受信すると共に、当該第2制御信号S2を、第1積和演算器10-1,10-2のいずれか又は双方に送信する。更に、制御信号中継器60は、第2積和演算器30-2から送信された第2制御信号S2を受信すると共に、当該第2制御信号S2を、第1積和演算器10-1,10-2のいずれか又は双方に送信する。
 更に、制御信号中継器60は、例えば、第1積和演算器10-1及び/又は第1積和演算器10-2から送信された第3制御信号S3を受信すると共に、当該第3制御信号S3を、レジスタ20-1及び/又はレジスタ20-2に送信する。
 本変形例によれば、ニューラルネットワーク演算処理装置1が、複数の第1積和演算器と、複数のレジスタ及び複数の第2積和演算器を備えるので、演算処理を更に効率良く実行することができる。
 以上、本発明の実施形態について詳述したが、本発明は上記実施形態に限定されるものではなく、特許請求の範囲内に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
 例えば、以上に示した実施形態に係る各装置(例えば、ニューラルネットワーク演算処理装置1)の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体(記憶媒体)に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、処理を行ってもよい。
 なお、ここでいう「コンピュータシステム」とは、オペレーティング・システム(OS:Operating System)あるいは周辺機器等のハードウェアを含むものであってもよい。
 また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM(Read Only Memory)、フラッシュメモリ等の書き込み可能な不揮発性メモリ、DVD(Digital Versatile Disc)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また、記録媒体としては、例えば、一時的にデータを記録する記録媒体であってもよい。
 さらに、「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークあるいは電話回線等の通信回線を介してプログラムが送信された場合のサーバあるいはクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。
 また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)あるいは電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
 また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
 コンピュータでは、例えば、CPU(Central Processing Unit)などのプロセッサがメモリに記憶されたプログラムを読み出して実行する。
1 ニューラルネットワーク演算処理装置
10 第1積和演算器
10-1 第1積和演算器
10-2 第1積和演算器
11 第1メモリ
11-1 第1メモリ
11-2 第1メモリ
12 第2メモリ
12-1 第2メモリ
12-2 第2メモリ
13 第1乗算器
13-1 第1乗算器
13-2 第1乗算器
13-3 第1乗算器
13-4 第1乗算器
14 第1加算器
14-1 第1加算器
14-2 第1加算器
14-3 第1加算器
14-4 第1加算器
15 第1出力部
15-1 第1出力部
15-2 第1出力部
16 第1信号送受信部
16-1 第1信号送受信部
16-2 第1信号送受信部
17 信号送信部
17-1 信号送信部
17-2 信号送信部
20 レジスタ
20-1 レジスタ
20-2 レジスタ
30 第2積和演算器
30-1 第2積和演算器
30-2 第2積和演算器
31 入力部
31-1 入力部
31-2 入力部
32 第3メモリ
32-1 第3メモリ
32-2 第3メモリ
33-1 第2乗算器
33-2 第2乗算器
33-3 第2乗算器
33-4 第2乗算器
34-1 第2加算器
34-2 第2加算器
34-3 第2加算器
34-4 第2加算器
35-1 第2出力部
35-2 第2出力部
35-3 第2出力部
35-4 第2出力部
36 第2信号送受信部
36-1 第2信号送受信部
36-2 第2信号送受信部
40 ニューラルネットワーク
41 入力層
41A ノード
41B ノード
41C ノード
41D ノード
41E ノード
42 隠れ層
42A ノード
42B ノード
42C ノード
42D ノード
43 出力層
43A ノード
43B ノード
43C ノード
50 活性化関数演算処理部
60 制御信号中継器

Claims (12)

  1.  1以上の第1積和演算器と、
     前記1以上の第1積和演算器に接続された1以上のレジスタと、
     前記1以上のレジスタに接続された1以上の第2積和演算器と、を備え、
     前記第1積和演算器は、
     複数の第1入力変数を格納した第1メモリと、
     複数の第1重みデータを格納した第2メモリと、
     前記第1入力変数と前記第1重みデータとの積の複数を演算する1以上の第1乗算器と、
     前記1以上の第1乗算器で乗算された前記積の複数の和を演算する1以上の第1加算器と、
     前記1以上の第1加算器で加算された前記和の複数を、複数の第2入力変数として前記レジスタに出力する1以上の第1出力部と、を有し、
     前記第2積和演算器は、
     複数の第2重みデータを格納した第3メモリと、
     前記第2重みデータと前記レジスタに保持された前記第2入力変数との積の複数を演算する1以上の第2乗算器と、
     前記1以上の第2乗算器で乗算された前記積の複数の和を演算する1以上の第2加算器と、
     前記1以上の第2加算器で加算された前記和の複数を、複数の出力値として出力する1以上の第2出力部と、を有する、
     ニューラルネットワーク演算処理装置。
  2.  前記第2積和演算器で実行される演算処理の少なくとも一部を、前記第1積和演算器で実行される演算処理と並列に実行する、請求項1に記載のニューラルネットワーク演算処理装置。
  3.  前記第1積和演算器10で実行される演算処理P1を構成する演算数が(n+1)(nは0以上の整数)であり、前記第2積和演算器で実行される演算処理P2を構成する演算数が(q+1)(qは0以上の整数)である場合、
     前記第1積和演算器で実行される前記演算処理P1の並列数L1は、演算数(n+1)の約数であり、前記第2積和演算器で実行される前記演算処理P2の並列数L2は、演算数(q+1)の約数である、請求項2に記載のニューラルネットワーク演算処理装置。
  4.  前記演算処理P1を構成するパイプライン数C1及び前記演算処理P2を構成するパイプライン数C2の双方が、前記演算数(n+1)と前記演算数(q+1)の最大公約数である、請求項3に記載のニューラルネットワーク演算処理装置。
  5.  前記第2積和演算器で実行される演算処理が終了するタイミングが、前記第1積和演算器の演算処理が終了するタイミングと同じである、請求項3又は4に記載のニューラルネットワーク演算処理装置。
  6.  前記第2メモリ及び前記第3メモリの各々が、リングバッファメモリである、請求項1に記載のニューラルネットワーク演算処理装置。
  7.  前記第1積和演算器と前記レジスタとの間と、前記レジスタと前記第2積和演算器との間の少なくとも一方に、活性化関数を用いて演算する1以上の活性化関数演算処理部を更に備える、請求項1に記載のニューラルネットワーク演算処理装置。
  8.  前記1以上の第1乗算器は、複数の第1乗算器であり、
     前記1以上の第1加算器は、複数の第1加算器である、請求項2~7のいずれか1項に記載のニューラルネットワーク演算処理装置。
  9.  前記1以上の第2積和演算器は、複数の前記第2積和演算器であり、
     前記複数の前記第2積和演算器が、前記1以上の第1積和演算器と並列に動作する、請求項2~8のいずれか1項に記載のニューラルネットワーク演算処理装置。
  10.  前記1以上の第1積和演算器は、複数の前記第1積和演算器であり、
     前記複数の前記第1積和演算器が、前記1以上の第2積和演算器と並列に動作する、請求項2~8のいずれか1項に記載のニューラルネットワーク演算処理装置。
  11.  前記1以上の第1積和演算器は、複数の前記第1積和演算器であり、
    前記1以上の第2積和演算器は、複数の前記第2積和演算器であり、
     前記複数の前記第1積和演算器が、前記複数の第2積和演算器と並列に動作する、請求項2~8のいずれか1項に記載のニューラルネットワーク演算処理装置。
  12.  第1入力変数と第1重みデータとの積の複数を演算すると共に、前記積の複数の和を演算する第1演算工程と、
     前記第1演算工程で演算された前記和の複数を、複数の第2入力変数として保持する保持工程と、
     第2重みデータと前記第2入力変数との積の複数を演算すると共に、前記積の複数の和を演算する第2演算工程と、
     前記第2演算工程で演算された前記和の複数を、複数の出力値として出力する第2出力工程と、を有し、
     前記第2演算工程で実行される演算処理の少なくとも一部を、前記第1演算工程で実行される演算処理と並列して実行する、ニューラルネットワーク演算処理方法。
PCT/JP2019/013327 2019-03-27 2019-03-27 ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 WO2020194594A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2019/013327 WO2020194594A1 (ja) 2019-03-27 2019-03-27 ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法
US16/819,303 US11681498B2 (en) 2019-03-27 2020-03-16 Neural network arithmetic processing device and neural network arithmetic processing method
US18/199,426 US20230351150A1 (en) 2019-03-27 2023-05-19 Neural network arithmetic processing device and neural network arithmetic processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/013327 WO2020194594A1 (ja) 2019-03-27 2019-03-27 ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法

Publications (1)

Publication Number Publication Date
WO2020194594A1 true WO2020194594A1 (ja) 2020-10-01

Family

ID=72609694

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/013327 WO2020194594A1 (ja) 2019-03-27 2019-03-27 ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法

Country Status (2)

Country Link
US (1) US11681498B2 (ja)
WO (1) WO2020194594A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110083448B (zh) * 2018-01-25 2023-08-18 腾讯科技(深圳)有限公司 一种计算资源调整方法、装置以及相关设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10187648A (ja) * 1996-12-19 1998-07-21 Nec Corp ニューラルユニット演算方式およびその装置
JP2001067338A (ja) * 1999-08-30 2001-03-16 Mitsubishi Precision Co Ltd 高速たたみ込み演算方式とその演算器および高速補間方式と高速補間器
JP2002215386A (ja) * 2001-01-19 2002-08-02 Toshiba Corp 剰余演算装置、剰余演算方法、および、べき乗剰余演算方法
JP2017079017A (ja) * 2015-10-21 2017-04-27 キヤノン株式会社 畳み込み演算装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5216751A (en) * 1990-10-22 1993-06-01 Motorola, Inc. Digital processing element in an artificial neural network
JPH05346914A (ja) 1992-06-16 1993-12-27 Matsushita Electron Corp ニューロプロセッサ
JP3693367B2 (ja) * 1994-07-28 2005-09-07 富士通株式会社 積和演算器
JP5231949B2 (ja) 2008-11-12 2013-07-10 株式会社東芝 半導体装置、および、半導体装置によるデータ処理方法
CN112602054A (zh) * 2018-08-31 2021-04-02 弗莱克斯-罗技克斯技术公司 乘法器累加器电路、用于乘法累加的逻辑瓦片架构和包括逻辑瓦片阵列的ic

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10187648A (ja) * 1996-12-19 1998-07-21 Nec Corp ニューラルユニット演算方式およびその装置
JP2001067338A (ja) * 1999-08-30 2001-03-16 Mitsubishi Precision Co Ltd 高速たたみ込み演算方式とその演算器および高速補間方式と高速補間器
JP2002215386A (ja) * 2001-01-19 2002-08-02 Toshiba Corp 剰余演算装置、剰余演算方法、および、べき乗剰余演算方法
JP2017079017A (ja) * 2015-10-21 2017-04-27 キヤノン株式会社 畳み込み演算装置

Also Published As

Publication number Publication date
US11681498B2 (en) 2023-06-20
US20200349419A1 (en) 2020-11-05

Similar Documents

Publication Publication Date Title
JP6977239B2 (ja) 行列乗算器
US10534607B2 (en) Accessing data in multi-dimensional tensors using adders
EP3579150B1 (en) Operation apparatus and method for a neural network
US7814297B2 (en) Algebraic single instruction multiple data processing
EP3602280B1 (en) Accessing prologue and epilogue data
US5600843A (en) Ring systolic array system for synchronously performing matrix/neuron computation using data transferred through cyclic shift register connected in cascade of trays
US5187801A (en) Massively-parallel computer system for generating paths in a binomial lattice
US20040122887A1 (en) Efficient multiplication of small matrices using SIMD registers
US11017290B2 (en) Signal processing module, especially for a neural network and a neuronal circuit
WO2023065983A1 (zh) 计算装置、神经网络处理设备、芯片及处理数据的方法
WO2020194594A1 (ja) ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法
KR102553775B1 (ko) 연산 결과를 증명 및 검증하는 페어링 기반 영지식 증명 프로토콜 시스템
JP7435602B2 (ja) 演算装置および演算システム
CN112966729A (zh) 一种数据处理方法、装置、计算机设备及存储介质
JP2021060955A (ja) ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法
JP7038608B2 (ja) 半導体装置
US20230351150A1 (en) Neural network arithmetic processing device and neural network arithmetic processing method
JP7401513B2 (ja) ハードウェアにおけるスパース行列乗算
JP7251354B2 (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
CN111985628A (zh) 计算装置及包括所述计算装置的神经网络处理器
WO2024024755A1 (ja) 演算処理装置
US11379557B2 (en) Device and method for flexibly summing matrix values
JP3708072B2 (ja) 半導体演算装置
Sizonenko et al. Software implementation of parallel matrix computations for linear recurrent sequence and numerical methods for estimating its efficiency
CN106921395A (zh) Ldpc编码方法及其装置

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19921707

Country of ref document: EP

Kind code of ref document: A1