WO2018189620A1 - ニューラルネットワーク回路 - Google Patents

ニューラルネットワーク回路 Download PDF

Info

Publication number
WO2018189620A1
WO2018189620A1 PCT/IB2018/052250 IB2018052250W WO2018189620A1 WO 2018189620 A1 WO2018189620 A1 WO 2018189620A1 IB 2018052250 W IB2018052250 W IB 2018052250W WO 2018189620 A1 WO2018189620 A1 WO 2018189620A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
circuit
arithmetic
arithmetic circuit
column
Prior art date
Application number
PCT/IB2018/052250
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/604,363 priority Critical patent/US11568223B2/en
Priority to JP2019512042A priority patent/JP7173709B2/ja
Publication of WO2018189620A1 publication Critical patent/WO2018189620A1/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
    • 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
    • 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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
    • G06N3/065Analogue means

Definitions

  • One embodiment of the present invention relates to a neural network circuit.
  • a Neumann computer is known as a basic computer configuration.
  • information processing sequential processing method
  • a stored program method that is, by sequentially executing instructions (programs) and data stored in a memory.
  • an artificial neural network hereinafter referred to as a neural network
  • a neural network which is an approach that imitates an information processing method of a biological neural network, has attracted attention.
  • Neural network is composed of multiple layers such as input layer, intermediate layer and output layer.
  • the input layer, the intermediate layer, and the output layer each have a plurality of neurons.
  • Data obtained by the processing is output from the input layer to the intermediate layer and from the intermediate layer to the output layer.
  • a neural network data is input in parallel to a plurality of neurons in an input layer, and information processing (parallel processing method) is performed by processing the data in the order of an intermediate layer and an output layer.
  • Neural network information processing can realize neuron functions by software processing using a Neumann computer.
  • the processor executes the processing in a plurality of neurons in a time-sharing manner, and the parallel processing method becomes difficult. Therefore, a configuration has been proposed in which neurons are configured using hardware to form an integrated circuit (neural network circuit) (see, for example, Patent Document 1).
  • product-sum operations occupy most of the operations. Therefore, in order to eliminate the increase in circuit scale in the neural network circuit, it is important how efficiently the product-sum operation is performed. In addition, it is important to use circuit resources effectively by adopting a configuration in which product-sum operations of different processes are performed using the same circuit.
  • An object of one embodiment of the present invention is to provide a neural network circuit having a novel structure. Another object of one embodiment of the present invention is to provide a novel neural network circuit that can suppress an increase in circuit scale. Another object of one embodiment of the present invention is to provide a novel neural network circuit that can perform product-sum operations of different processes using the same circuit.
  • One embodiment of the present invention includes first to third arithmetic circuits, and each of the first to third arithmetic circuits includes a first register, a memory, a multiplier circuit, and an adder circuit,
  • the register has a function of holding input data
  • the memory has a function of storing weight data
  • the memory has a function of outputting different weight data according to switching of input context signals
  • the multiplication circuit included in the first arithmetic circuit has a function of outputting multiplication data corresponding to the product of the weight data and the input data
  • the addition circuit included in the first arithmetic circuit outputs the first addition data.
  • the first addition data is data corresponding to the sum of the multiplication data and the second addition data output from the addition circuit included in the second arithmetic circuit.
  • the first addition data is The adder circuit included in the third arithmetic circuit
  • a neural network circuit is a data output.
  • a programmable switch element is provided between first to third arithmetic circuits, and the programmable switch element switches electrical connection between the first to third arithmetic circuits by switching context signals.
  • a functional neural network circuit is preferred.
  • the memory preferably includes a transistor, and the transistor is preferably a neural network circuit that includes an oxide semiconductor in a channel formation region.
  • the first to third addition data is preferably a neural network circuit that is data used for convolution operation processing or full-join operation processing.
  • the first arithmetic circuit preferably includes a second register, and the second register is preferably a neural network circuit having a function of holding first addition data or multiplication data.
  • the neural network circuit of one embodiment of the present invention is preferably a neural network circuit having a circuit that performs activation function processing and a circuit that performs pooling calculation processing.
  • One embodiment of the present invention includes first to third arithmetic circuits, and the first arithmetic circuit includes a first register, a first memory, a first multiplier circuit, and a first adder circuit.
  • the second arithmetic circuit includes a second register, a second memory, a second multiplier circuit, and a second adder circuit
  • the third arithmetic circuit includes a third register, a third register.
  • the first to third registers each have a function of holding first to third input data
  • each of the first to third registers includes a memory, a third multiplication circuit, and a third addition circuit.
  • Each of the memories has a function of storing weight data, and each of the first to third memories has a function of outputting different first to third weight data in accordance with the switching of the context signal input thereto.
  • the first multiplication circuit according to a product of the first weight data and the first input data.
  • the second multiplication circuit has a function of outputting the first multiplication data, and the second multiplication circuit has a function of outputting the second multiplication data corresponding to the product of the second weight data and the second input data.
  • the third multiplication circuit has a function of outputting third multiplication data corresponding to the product of the third weight data and the third input data, and the first addition circuit outputs the first addition data.
  • the second adder circuit has a function of outputting the second added data
  • the third adder circuit has a function of outputting the third added data
  • the second adder circuit has a function of outputting the second added data.
  • the addition data is data corresponding to the sum of the second multiplication data and the first addition data
  • the first addition data is data including the first multiplication data and the third addition data.
  • a programmable switch element is provided between first to third arithmetic circuits, and the programmable switch element switches electrical connection between the first to third arithmetic circuits by switching context signals.
  • a functional neural network circuit is preferred.
  • each of the first to third memories includes a transistor, and the transistor is preferably a neural network circuit that includes an oxide semiconductor in a channel formation region.
  • the first to third addition data is preferably a neural network circuit that is data used for convolution operation processing or full-join operation processing.
  • the first arithmetic circuit includes a fourth register
  • the second arithmetic circuit includes a fifth register
  • the third arithmetic circuit includes a sixth register.
  • the fourth register has a function of holding the first addition data or the first multiplication data
  • the fifth register has a function of holding the second addition data or the second multiplication data.
  • the sixth register is preferably a neural network circuit having a function of holding the third addition data or the third multiplication data.
  • the neural network circuit of one embodiment of the present invention is preferably a neural network circuit having a circuit that performs activation function processing and a circuit that performs pooling calculation processing.
  • One embodiment of the present invention can provide a neural network circuit having a novel configuration.
  • a novel neural network circuit that can suppress an increase in circuit scale can be provided.
  • a novel neural network circuit which can perform product-sum operations of different processes using the same circuit can be provided.
  • the block diagram for demonstrating a neural network circuit The block diagram for demonstrating a neural network circuit.
  • the block diagram for demonstrating a neural network circuit The block diagram for demonstrating a neural network circuit.
  • the block diagram for demonstrating a neural network circuit The block diagram for demonstrating a neural network circuit.
  • the block diagram for demonstrating a neural network circuit The block diagram for demonstrating a neural network circuit.
  • the block diagram for demonstrating a neural network circuit The block diagram for demonstrating a neural network circuit.
  • the block diagram for demonstrating a neural network circuit The block diagram for demonstrating a neural network circuit.
  • the block diagram for demonstrating a neural network circuit The block diagram for demonstrating a neural network circuit.
  • the block diagram for demonstrating a neural network circuit The block diagram for demonstrating a neural network circuit.
  • the block diagram for demonstrating a neural network circuit The block diagram for demonstrating a neural network circuit.
  • the block diagram for demonstrating a neural network circuit The block diagram for demonstrating a neural network circuit.
  • the block diagram for demonstrating a neural network circuit The block diagram for demonstrating a neural network circuit.
  • the block diagram for demonstrating a neural network circuit The block diagram for demonstrating a neural network circuit.
  • the block diagram for demonstrating a neural network circuit The block diagram for demonstrating a neural network circuit.
  • the block diagram for demonstrating a neural network circuit The block diagram for demonstrating a neural network circuit.
  • the block diagram for demonstrating a neural network circuit The perspective schematic diagram which shows the structural example of IC incorporating a neural network system.
  • C A circuit diagram showing a configuration example of a memory cell.
  • the functional block diagram which shows the structural example of NOSRAM.
  • AE A circuit diagram showing a configuration example of a memory cell.
  • the ordinal numbers “first”, “second”, and “third” are attached to avoid confusion between the constituent elements. Therefore, the number of components is not limited. Further, the order of the components is not limited. Further, for example, a component referred to as “first” in one embodiment of the present specification or the like is a component referred to as “second” in another embodiment or in the claims. It is also possible. In addition, for example, the constituent elements referred to as “first” in one embodiment of the present specification and the like may be omitted in other embodiments or in the claims.
  • neural network refers to all models that imitate the neural network of a living organism, determine the connection strength between neurons by learning, and have problem solving ability.
  • the neural network has an input layer, an intermediate layer (also referred to as a hidden layer), and an output layer.
  • a neural network having two or more intermediate layers is called a deep neural network. Learning by a deep neural network is called “deep learning”.
  • a circuit capable of executing a neural network by hardware is called a neural network circuit.
  • determining the connection strength (also referred to as a weighting factor) between neurons from existing information may be referred to as “learning”.
  • the construction of a neural network using the connection strength obtained by learning and deriving a new conclusion therefrom may be referred to as “inference”.
  • the neural network circuit that is one embodiment of the present invention can efficiently perform a product-sum operation. Therefore, application to a convolutional neural network with a high frequency of product-sum operations is very effective.
  • the product-sum operation is an operation of adding and adding data obtained by multiplication.
  • FIG. 1 is a block diagram of a data processing circuit 10 having a neural network circuit.
  • the data processing circuit 10 includes an interface 11, a clock generation circuit 12, a master controller 13, a data driver 14, a word driver 15, and a neural network circuit 20.
  • the neural network circuit 20 includes a memory controller 21, a memory 22, an arithmetic unit 23, a data input / output circuit 24, and an arithmetic unit 30.
  • the calculation unit 30 includes a register circuit 31 and a product-sum calculation circuit 40.
  • the product-sum operation circuit 40 includes a plurality of operation circuits 50 and an adder circuit 41.
  • a programmable switch element (PSE) for switching electrical connection between the arithmetic circuits is provided between the arithmetic circuits.
  • the master controller 13 has a function of receiving the control signal control signal from the outside of the data processing circuit 10 and controlling the entire data processing circuit 10. Specifically, operation control of the data driver 14 and the word driver 15, control of the memory controller 21, control of context switching in the neural network circuit 20, and the like are performed.
  • the clock generation circuit 12 generates a clock signal used for circuit operation of the master controller 13 and the like based on the reference clock signal clk received by the interface 11.
  • the interface 11 has a function of receiving the reference clock signal clk and the data signal data from the outside of the data processing circuit 10.
  • the interface 11 has a function of converting a signal suitable for transmission / reception.
  • an interface such as LVDS (Low Voltage Differential Signaling) or MIPI (Mobile Industry Processor Interface) can be used.
  • the data driver 14 has a function of generating a data signal for writing into the memory of the arithmetic circuit 50.
  • the word driver 15 has a function of generating a control signal (for example, a word signal) for writing data into the memory of the arithmetic circuit 50.
  • the product-sum operation circuit 40 is a circuit that performs product-sum operation.
  • the product-sum operation circuit 40 can switch between a plurality of types of operation processing under the control of the master controller 13. Therefore, while using the same circuit resource, it is possible to select and calculate the optimum arithmetic processing according to the input data.
  • the switching of arithmetic processing in the product-sum arithmetic circuit 40 will be described in detail with reference to FIGS.
  • the data signal data input via the interface 11 is held in the register circuit 31.
  • Data stored in the register circuit 31 can be stored in the memory 22 at a desired timing.
  • Data obtained during calculation in the neural network circuit 20 can be stored in the memory 22.
  • the memory 22 may be an SRAM (Static Random Access Memory).
  • the data stored in the register circuit 31 can be used for calculation by the neural network circuit 20 at a desired timing.
  • the data stored in the register circuit 31 can be subjected to desired processing by the arithmetic unit 23 at desired timing.
  • the arithmetic unit 23 is a circuit that performs pooling arithmetic processing and arithmetic operation using an activation function when performing arithmetic processing using a convolutional neural network.
  • an activation function for example, a sigmoid function, a normalized linear unit (ReLU), a hyperbolic tangent (tanh) function, or a step function can be applied.
  • the data input / output circuit 24 is a circuit that outputs the calculation result obtained by the calculation in the data processing circuit 10 to the outside of the data processing circuit 10 as data out.
  • Each of the plurality of arithmetic circuits 50 included in the product-sum arithmetic circuit 40 includes a register circuit that holds input data.
  • Each of the plurality of arithmetic circuits has a memory for storing weight data corresponding to the coupling strength (also referred to as a weight coefficient). The weight data can be switched according to a context signal for switching the context. The memory storing the weight data can output the corresponding weight data by decoding the context signal.
  • Each of the plurality of operation circuits 50 included in the product-sum operation circuit 40 includes a multiplication circuit that generates multiplication data corresponding to the product of the weight data and the input data. Multiplication data is obtained in the multiplication circuit.
  • Each of the plurality of arithmetic circuits 50 included in the product-sum arithmetic circuit 40 includes an adder circuit.
  • the adder circuit can obtain added data by adding the multiplication data obtained by the multiplication circuit to the data obtained by another arithmetic circuit 50.
  • Each of the plurality of arithmetic circuits 50 included in the product-sum arithmetic circuit 40 has a register for holding multiplication data and addition data. The data held in the register is output to another arithmetic circuit 50 at a predetermined timing.
  • the product-sum operation circuit 40 executes the product of different weighting factors and input data for each operation circuit 50 by switching the input / output of data between the above-described operation circuits, and obtained by another operation circuit 50.
  • the sum-of-products operation can be executed by adding the addition data and the previously obtained multiplication data.
  • a large number of product-sum operations can be efficiently performed by arranging a plurality of arithmetic circuits 50 in series and shifting the obtained data one after another.
  • the product-sum operation circuit 40 having the operation circuit 50 simultaneously processes the multiplication data and the addition data between the operation circuits 50 in the input data held in the plurality of operation circuits 50 as in the pipeline processing of the processor,
  • the product-sum operation can be executed by shifting the multiplication data and the addition data among the plurality of arithmetic circuits 50. Therefore, when performing arithmetic processing by product-sum operation with limited hardware, it is possible to efficiently execute massively parallel data processing with less circuit resources.
  • FIG. 2A is a block diagram for illustrating an example of the arithmetic circuit 50 included in the product-sum arithmetic circuit 40.
  • the arithmetic circuit includes an input register 51, a memory 52, a multiplier circuit 53, an adder circuit 54, an output register 55A, and an output register 55B.
  • the input signal sin is input to the input register 51.
  • the input register 51 outputs an output signal sout.
  • the input register 51 outputs the input data sdata to the multiplication circuit 53.
  • the memory 52 receives the context signal context.
  • the memory 52 has a data set corresponding to the context.
  • the data set is data corresponding to a plurality of weight data used for product-sum operation processing.
  • the memory outputs one weight data as the weight data cmout from the plurality of weight data corresponding to the context according to the context signal.
  • the plurality of weight data stored in the memory 52 is effective when calculating while changing the context, for example, when the number of filters used in the convolution calculation process is large. By performing the operation while changing the context, it is possible to perform multiplication under various conditions using one multiplication circuit.
  • the multiplication circuit 53 generates multiplication data mout by multiplying the input data sdata and the weight data cmout.
  • the multiplication data mout is output to the addition circuit 54.
  • the multiplication data mout held in the output register 55A is output as an output signal out1 to another arithmetic circuit 50.
  • the multiplication data mout is output via the output register 55A, and the multiplication data mout can be transmitted to another arithmetic circuit 50 at the next timing after the multiplication. Further, it is possible to prevent the calculation result from being erroneous due to the signal delay.
  • the output signal out1 is input as input addition data ain by another arithmetic circuit 50.
  • Signal input / output switching can be realized by arranging programmable switch elements between the arithmetic circuits 50. By controlling the programmable switch element, a desired wiring can be connected and a signal can be input / output between arithmetic circuits at a desired timing.
  • the addition circuit 54 generates addition data aout by adding the multiplication data mout to the input addition data ain.
  • the addition data aout is output to the output register 55B.
  • the addition data aout held in the output register 55B is output to another arithmetic circuit 50 as the output signal out2. With the configuration in which the addition data aout is output via the output register 55B, it is possible to prevent an error in the calculation result due to signal delay.
  • the output signal out2 is input as input addition data ain by another arithmetic circuit 50.
  • Signal input / output switching can be realized by arranging programmable switch elements between the arithmetic circuits 50. By controlling the programmable switch element, a desired wiring can be connected and a signal can be input / output between arithmetic circuits at a desired timing.
  • the memory 52 is a non-volatile memory.
  • an OS memory using a transistor (OS transistor) having an oxide semiconductor (OS) in a channel formation region is effective.
  • OS memory examples include DOSRAM and NOSRAM.
  • DOSRAM (registered trademark) is an abbreviation for “Dynamic Oxide Semiconductor RAM” and refers to a RAM having 1T (transistor) 1C (capacitance) type memory cells.
  • DOSRAM is a memory that utilizes the low off-state current of an OS transistor.
  • DOSRAM is a DRAM formed using an OS transistor.
  • the DOSRAM includes a memory cell including an OS transistor and a reading circuit unit including a Si transistor. Since the memory cell and the read circuit portion can be provided in different stacked layers, DOSRAM can reduce the entire circuit area. The details of DOSRAM will be described in Embodiment 3 to be described later.
  • the number of input data and the number of filters may exceed 1000.
  • the SRAM has a limited bus width and circuit area, and has a small storage capacity. Therefore, the input data must be stored in small portions. Since DOSRAM can be stacked even with a limited circuit area, memory cells can be arranged in a highly integrated manner.
  • NOSRAM Nonvolatile Oxide Semiconductor RAM
  • 2T type, 3T type a gain cell type
  • NOSRAM is a memory that utilizes the low off-state current of the OS transistor.
  • NOSRAM is a memory using an OS transistor. NOSRAM consumes less power when writing data than other non-volatile memories such as flash memory, ReRAM (Resistive Random Access Memory), and MRAM (Magnetic Responsive Random Access Memory). Further, unlike the flash memory and the ReRAM, the element is not deteriorated when data is written, and the number of times data can be written is not limited. Further, unlike the flash memory and the ReRAM, there is no problem of cell-to-cell variation due to deterioration of the element. Further, unlike a two-terminal memory such as a flash memory or a ReRAM, a circuit for writing and reading is not complicated. Details of NOSRAM will be described in Embodiment 3 described later.
  • NOSRAM can hold multi-value data of 2 bits or more in addition to 1-bit binary data. NOSRAM can reduce the memory cell area per bit by holding multilevel data. Moreover, NOSRAM can hold analog data in addition to digital data. Since NOSRAM can hold analog data as it is, no D / A conversion circuit or A / D conversion circuit is required. Therefore, NOSRAM can reduce the area of the peripheral circuit.
  • the arithmetic circuit 50 is not limited to the configuration shown in FIG. A configuration shown in FIG.
  • the arithmetic circuit 50 illustrated in FIG. 2B integrates the output registers 55A and 55B in the configuration of FIG.
  • a switching circuit 56 also referred to as a multiplexer
  • the addition data aout or the multiplication data mout can be switched and output as the output signal out.
  • FIG. 3A illustrates the block diagram of the arithmetic circuit 50 described in FIGS. 2A and 2B in more detail.
  • the arithmetic circuit 50 shown in FIG. 3A shows a switching circuit 56A, a memory circuit 57A, a switching circuit 56B, and a memory circuit 57B in addition to the configuration described in FIGS. 2A and 2B.
  • the switching circuit 56A is a circuit for controlling whether the input signal sin is output as the multiplication circuit 53 as the input data sdata or whether the data held in the input register 51 is output.
  • the memory circuit 57A has a function of switching electrical connection in the switching circuit 56A in response to switching of the context signal context.
  • the switching circuit 56B is a circuit for controlling whether to output the multiplication data mout, the addition data aout, or the input addition data ain as the output signal out1 or out2.
  • the memory circuit 57B has a function of switching the electrical connection in the switching circuit 56B in accordance with the switching of the context signal context.
  • 3A shows a set signal set and a reset signal reset that control the input register 51, the output register 55A, and the output register 55B. Since the multiplication data mout or the addition data aout or the like can be output at a predetermined timing in accordance with the control by the set signal set and the reset signal reset, it is possible to prevent the calculation result from being erroneous due to the signal delay. .
  • FIG. 3A also shows configuration data configuration data and word signal word for controlling writing of weight data held in the memory 52.
  • the weight data set for each arithmetic circuit 50 can be individually rewritten.
  • FIG. 3B illustrates the block diagram of the arithmetic circuit 50 described in FIG. 3A in more detail.
  • a power switch (PS) 58 and a memory circuit 57C are illustrated in addition to the structure described in FIG.
  • the memory circuit 57C can switch the power switch 58 on or off in accordance with the switching of the context signal context.
  • FIG. 4 shows a configuration example of the memory circuit 57A.
  • the memory circuit 57A includes memory cells 96_0 and 96_1 and transistors 97_0, 97_1, and 98. Configuration data, switching signals context_A0 and context_A1, and signals wordA0, wordB0, wordA1 and wordB1 are input to the memory circuit 57A.
  • Each of the memory cells 96_0 and 96_1 includes two memory circuits functioning as NOSRAMs.
  • the signal wordA0 is set to “H”
  • the signals wordB0, wordA1, and wordB1 are set to “L”.
  • the signal wordB0 is set to “H”
  • the signals wordA0, wordA1, and wordB1 are set to “L”.
  • the transistor 98 While the control signal is output to the switching circuit 56A, the transistor 98 is in the off state.
  • One of the transistors 97_0 and 97_1 is turned on by the switching signals context_A0 and context_A1. For example, when the transistor 97_0 is turned on, a logic control signal corresponding to the data held in the memory cell 96_0 is output to the switching circuit 56A.
  • the memory circuits 57B and 57C have the same circuit configuration as the memory circuit 57A.
  • FIG. 5A in order to clearly indicate that the multiplication data mout illustrated in the block diagram of the arithmetic circuit 50 described in FIG. 2 is data obtained by multiplication of the input data sdata and the weight data cmout, “sdata * Cmout ".
  • the addition data aout illustrated in the block diagram of the arithmetic circuit 50 described in FIG. 2 is data obtained by adding the multiplication data mout to the input addition data ain. , “Ain + (sdata * cmout)”.
  • FIG. 5B shows symbols when the arithmetic circuit 50 is abbreviated and illustrated.
  • an arrow directed to the arithmetic circuit 50 represents data input to the arithmetic circuit 50, that is, input signal sin (or input data sdata) and input addition data ain.
  • the arrow pointing backward from the arithmetic circuit 50 indicates data output from the arithmetic circuit 50, that is, output signals out1 and out2 (or may be multiplication data mout and addition data aout), It represents the output signal sout.
  • FIG. 5B The notation in FIG. 5B will be described in more detail with reference to FIGS.
  • FIG. 6A is a diagram showing a case where a plurality of arithmetic circuits 50_1 to 50_n (n is a natural number of 2 or more) illustrated as symbols in FIG. 5B are arranged in the horizontal direction (also referred to as row direction).
  • FIG. 6B is a simplified configuration of the switching circuits 55A and 55B and the output registers 55A and 55B of the arithmetic circuit 50 illustrated in FIG. 3A when arranged as in FIG. 6A. It is a figure demonstrated using a thing.
  • FIGS. 6A and 6B illustrate operations in the case where the generation of multiplication data and the generation of addition data are processed in parallel in the plurality of arithmetic circuits 50_1 to 50_n.
  • data input / output between the arithmetic circuits is represented by arrows in FIG.
  • arithmetic circuit 50_1 and the arithmetic circuit 50_2 output data output from the arithmetic circuit 50_1 is input as input addition data of the arithmetic circuit 50_2.
  • output data output from the arithmetic circuit 50_2 is input as input addition data of the arithmetic circuit 50_3.
  • output data output from the arithmetic circuit 50_n is input as input addition data of the arithmetic circuit 50_1. That is, a plurality of arithmetic circuits 50_1 to 50_n perform arithmetic processing for generating multiplication data of different input data and different weight data for each arithmetic circuit and adding the multiplication data to input addition data input from the preceding arithmetic circuit. Can be processed in parallel.
  • FIG. 7A is a diagram illustrating a case where a plurality of arithmetic circuits 50_1 to 50_3 illustrated as symbols in FIG. 5B are arranged in the vertical direction (also referred to as column direction).
  • FIG. 7B shows a simplified arrangement of the switching circuits 55A and 55B and the output registers 55A and 55B of the arithmetic circuit 50 shown in FIG. 3A in the case of the arrangement shown in FIG. 7A. It is a figure demonstrated using a thing.
  • FIGS. 7A and 7B illustrate operations in the case where input data is written to the input register circuit of each of the arithmetic circuits 50_1 to 50_3 through another arithmetic circuit.
  • data inputted / outputted between the arithmetic circuits is shown as an arrow in FIG.
  • the output signal sout output from the arithmetic circuit 50_1 is input as the input signal sin of the arithmetic circuit 50_2.
  • the output signal sout output from the arithmetic circuit 50_2 is input as the input signal sin of the arithmetic circuit 50_3. That is, a signal can be input to an arithmetic circuit electrically connected through the arithmetic circuit.
  • FIG. 8A is a diagram illustrating a case where a plurality of arithmetic circuits 50_1 to 50_3 illustrated as symbols in FIG. 5B are arranged in a vertical direction (also referred to as a column direction), as in FIG. 7A. is there.
  • 8B is a simplified configuration of the switching circuits 55A and 55B and the output registers 55A and 55B of the arithmetic circuit 50 illustrated in FIG. 3A in the case of the arrangement shown in FIG. 8A. It is a figure demonstrated using a thing.
  • FIGS. 8A and 8B show the output of the product-sum operation data to the adder circuit 41 by the generation of the multiplication data and the addition data shown in FIGS. 7A and 7B. The operation in the case of performing through the arithmetic circuit is shown.
  • data input / output between arithmetic circuits is represented by arrows in FIG.
  • the output signals out1 and out2 output from the arithmetic circuit 50_1 are input to the arithmetic circuit 50_2 without passing through the adder circuit 54 by switching the switching circuit 56. It is input as the addition data signal ain.
  • the output signals out1 and out2 output from the arithmetic circuit 50_2 are switched as the input addition data signal ain of the arithmetic circuit 50_3 without passing through the addition circuit 54 by switching the switching circuit 56. Entered. That is, a signal can be transferred to an arithmetic circuit electrically connected through the arithmetic circuit.
  • the operation of the neural network circuit will be described with reference to FIGS. Specifically, the operation of the neural network circuit when performing the arithmetic processing of the convolutional neural network, particularly the product-sum operation processing between the arithmetic circuits will be described in detail.
  • FIG. 9A shows the flow of arithmetic processing of the convolutional neural network.
  • FIG. 9A illustrates an input layer 61, an intermediate layer 62 (also referred to as a hidden layer), and an output layer 63.
  • an input data input process 70 shown as Input in the figure
  • the intermediate layer 62 convolution calculation processes 72, 73, and 75 (shown as Conv in the figure) and a plurality of pooling calculation processes 74 and 76 (shown as Pool. In the figure) are illustrated.
  • a full coupling calculation process 77 (shown as Full in the figure) is illustrated.
  • the flow of arithmetic processing in the input layer 61, the intermediate layer 62, and the output layer 63 is an example, and other arithmetic processing such as softmax arithmetic may be performed in the arithmetic processing of an actual convolution neural network.
  • FIG. 9B visualizes and illustrates the arithmetic processing performed when the convolutional neural network illustrated in FIG. 9A is performed using the data processing circuit 10 of FIG.
  • the input data 71 is subjected to product-sum operation with the filter 82 and convolved (convolution arithmetic processing 72).
  • the input data 71 is illustrated as an example of data in which 20 (vertical direction) ⁇ 20 (horizontal direction) and channel direction (depth direction) is 1.
  • the calculation processing performed using the data processing circuit 10 of FIG. 1 is a data set in which a correct answer label is given to MNIST (Mixed National Institute of Standards and Technology database: handwritten numbers “0 to 9”) as input data 71 ) Is assumed to be a convolutional neural network (CNN).
  • symbol 81 represents a product-sum operation, here a product-sum operation of input data 71 and filter 82.
  • the filter 82 for performing the convolution operation processing 72 is composed of nine 3 ⁇ 3 filters (illustrated as 3 ⁇ 3 Fil. 9 in the figure), and the stride is 1. Zero padding is not performed.
  • the data obtained by performing the product-sum operation on the input data 71 and the filter 82 is processed by the ReLU in the operation unit 23 outside the product-sum operation circuit 40 to obtain data 84.
  • the data 84 becomes 18 ⁇ 18 9-channel data by the convolution operation processing 72.
  • symbol 83 represents processing by a normalized linear function (Rectified Linear Unit) which is an activation function, here, processing by ReLU is performed on data obtained by product-sum operation.
  • the data 84 is subjected to a product-sum operation with the filter 85 to perform a convolution operation process 73.
  • the filter 85 for performing the convolution operation process 73 is composed of 3 ⁇ 3 81 filters (shown as 3 ⁇ 3 Fil. 81 in the figure).
  • Data obtained by performing the product-sum operation on the data 84 and the filter 82 is processed by the ReLU in the operation unit 23 outside the product-sum operation circuit 40 to obtain data 86.
  • the data 86 becomes 16 ⁇ 16 9-channel data by the convolution operation processing 73.
  • the data 86 is subjected to pooling calculation processing 74 in the calculation unit 23 outside the product-sum calculation circuit 40.
  • max pooling is performed as an example.
  • the pooling calculation process 74 is performed using a 2 ⁇ 2 size filter.
  • the data that has been subjected to the pooling calculation processing is referred to as data 87.
  • the data 87 becomes 8 ⁇ 8 9-channel data by the pooling calculation processing 74.
  • the data 87 is subjected to a product-sum operation with the filter 88 and a convolution operation process 75 is performed.
  • the filter 88 for performing the convolution operation processing 75 is composed of 3 ⁇ 3 81 filters (shown as 3 ⁇ 3 Fil. 81 in the figure). Since the filter 88 has nine types of filters for each input channel, a total of 81 different filters are provided.
  • Data obtained by performing the product-sum operation on the data 87 and the filter 88 is processed by the ReLU in the operation unit 23 outside the product-sum operation circuit 40 to obtain data 89.
  • the data 89 becomes 6 ⁇ 6 9-channel data by the convolution operation processing 75.
  • the data 89 is subjected to pooling calculation processing 76 in the calculation unit 23 outside the product-sum calculation circuit 40.
  • max pooling is performed as an example.
  • the pooling calculation process 76 is performed with a 2 ⁇ 2 size filter.
  • the data that has been subjected to the pooling calculation processing is referred to as data 90.
  • Data 90 becomes 3 ⁇ 3, 9-channel data, and 81 data by pooling calculation processing 76.
  • the data 90 is subjected to a sum-of-products operation with the weight parameter 91 to perform a full join operation processing 77.
  • the data that has undergone all-join calculation processing 77 is referred to as data 92.
  • the data 92 becomes 10 pieces of data by the all-join calculation processing 77.
  • FIG. 10A shows the product-sum operation circuit 40 also shown in FIG.
  • arithmetic circuits 50 necessary for performing the convolution arithmetic processing 72, 73, and 75 are illustrated in a matrix.
  • FIG. 10A also shows the adder circuit 41.
  • FIG. 10B illustrates the programmable switch element PSE between the arithmetic circuits 50.
  • the programmable switch element PSE may be configured by combining a configuration memory and a switch.
  • As the configuration memory a memory using an SRAM or an OS transistor can be used.
  • a programmable switch element using an OS transistor is advantageous in terms of integration because elements such as transistors can be stacked.
  • FIG. 11A the convolution operation processing 72 described in FIG. 9B is extracted.
  • FIG. 11B is a diagram in which the input data 71 is visualized.
  • D 11 to D 1k are illustrated as data in the row direction (horizontal direction), and D 11 to D k1 are illustrated as data in the column direction (vertical direction).
  • 11 data surrounded by (B) medium thick line D 11 to D 33 i.e., nine of D 11, D 12, D 13 , D 21, D 22, D 23, D 31, D 32, D 33 is Data representing a product-sum operation with a 3 ⁇ 3 filter is shown.
  • the input data 71 shown in FIG. 11B is not limited to the input data 71, and the data obtained by performing the convolution operation processing on the input data such as the data 84, 86, 87, and 89 described with reference to FIG. It can be illustrated as well. Therefore, the data 84, 86, 87 and 89 may be referred to as input data.
  • FIG. 11C is a diagram in which a filter used in the filter 82 is visualized.
  • the nine channels can be represented by filters 82_1 to 82_9 (F1 to F9), which are 3 ⁇ 3 filters as shown in FIG.
  • the filter 82_1 has 3 ⁇ 3 weight data.
  • the weight data w 1 to w 9 are illustrated.
  • filter 82 Note that not only the filter 82 but also other filters such as filters 85, 88, and 91 described with reference to FIG. It can be illustrated as well.
  • the convolution calculation processing 72 is performed using a 9 ⁇ 9 calculation circuit 50 in the product-sum calculation circuit 40 shown in FIG. 10A as shown in FIG.
  • the arithmetic circuits 50 are arranged vertically and horizontally, and the row direction and the column direction are also illustrated.
  • the row direction is a shift direction of image data that is input data.
  • the column direction is a direction of shift of multiplying data obtained by multiplication of input data and weight data (multiple data shift).
  • the weighting data w 1 to w 9 of the filter F1, that is, the filter 82_1 are set for each column in the arithmetic circuit 50 in the first row in the row direction.
  • the weight data is set in order such as w 1 in the arithmetic circuit 50 in the first row and first column, w 2 in the arithmetic circuit 50 in the first row and second column, and w 3 in the arithmetic circuit 50 in the first row and third column.
  • the setting can be performed by context switching by a context signal.
  • the filter F2 is set in the arithmetic circuit 50 in the second row in the row direction.
  • the weight data of the filters F3 to F9 are set in the arithmetic circuits 50 in the third to ninth rows in the row direction.
  • the context “1” is set to the above weight data set.
  • D 11 ⁇ W 1 which is a multiplication result is generated. It is sequentially shifted in the column direction. Further, the first row and first column of the input data D 11 shifts in the row direction at the next timing. Then, similarly to the first row, the multiplication data is shifted in the column direction.
  • the weight data of the filter F2, that is, the filter 82_2 is set in the arithmetic circuit 50 in the second row, and the weight data of the filter F2 and the multiplied data of the input data are shifted in the column direction.
  • the input data is also shifted from the second row onward, and the multiplication data of the set filters F3 to F9, that is, the weight data of the filters 82_3 to 82_9, and the input data is generated and shifted in the column direction.
  • the arithmetic circuit 50 in the ninth column of the first to ninth rows obtains output data corresponding to the product-sum operation of any one of the filters (F1 to F9) and the input data.
  • the terminals in the ninth column of the first to ninth rows are illustrated as out1 to out9.
  • FIG. 12A can be summarized as shown in FIG. 12B.
  • the context signal context is 1 in order to fix in the context.
  • Filter A product-sum operation (In ⁇ F1) with F1 is obtained at out1.
  • 3 ⁇ 3 input data D 11 to D 33 data surrounded by a thick line in FIG. 11B
  • filters F 2 to F 9 are used in the arithmetic circuit 50 in the first column and the ninth column.
  • Input data 71 is inputted to the row direction data D 12 to D 14, the input data D 22 to D 24, and the input data D 22 to D 24 (i.e., D 12, D 13, D 14, D 22, D 23, By shifting as 9 of D 24 , D 32 , D 33 , and D 34 ), the multiplication data with the filters F 1 to F 9 can be obtained between all the coordinates of the input data 71.
  • FIG. 13A is a diagram visualizing the input data held in the arithmetic circuit 50 at time T0.
  • the arrow in the row direction represents the shift direction of the input data.
  • the arrow in the column direction represents the shift direction of the multiplication data.
  • “BL” in the drawing represents the arithmetic circuit 50 in the shift direction of the input data of the arithmetic circuit to which the input data is input.
  • an arithmetic circuit 50 shown as a blank is an arithmetic circuit 50 that has no shift of input data from the arithmetic circuit 50 in the preceding row, and is an arithmetic circuit 50 capable of power gating.
  • D 11 is input as input data to the first row and first column of the arithmetic circuit 50.
  • the arithmetic circuit 50 in the first row and first column generates multiplication data with the weight data w 1 held by context switching.
  • FIG. 13B is a diagram visualizing the input data held in the arithmetic circuit 50 at time T1.
  • 1 row and first column of the input data D 11 is inputted to the arithmetic circuit 50 of the second row and first column is shifted.
  • the input data D 12 is inputted to the first row and first column and first row second column arithmetic circuit 50.
  • generates a multiplication data the weight data w 2 held by multiplying data, the input data D 12 and context switching between the weight data w 1 held by the input data D 12 and context switching.
  • Generating multiplication data with the weight data of the input data D 11 and the filter F2 are carried out simultaneously.
  • FIG. 14A is a diagram visualizing the input data held in the arithmetic circuit 50 at time T2.
  • 2 row and first column of the input data D 11 is inputted to the arithmetic circuit 50 of the third row first column is shifted.
  • the first row and first column, first row and second column, and 1 row and third column input data D 13 to the arithmetic circuit 50 is input.
  • the product data of the weight data w 1 held by the input data D 13 and context switching, the multiplier data, and the input data D 13 and context switching between the weight data w 2 held by the input data D 13 and context switching Multiplication data with the weight data w 3 held is generated.
  • Generating multiplication data with the weight data of the input data D 11 and the filter F3 simultaneously generating multiplication data with the weight data of the input data D 12 and the filter F2 are carried out. Note at time T2, the first row third column of the arithmetic circuit 50, the sum data generated at time T2, adding the multiplication data of the input data D 13 and the weight data w 3 obtained is added at time T2 Data shifts in the column direction.
  • FIG. 14B is a diagram visualizing the input data held in the arithmetic circuit 50 at time T3.
  • the input data D 11 of three rows and one column is input to the arithmetic circuit 50 is shifted 4 row and first column.
  • the inputted respectively second row and first column of the input data D 12, and the second row and second column of the input data D 12 is shifted to the third row first column arithmetic circuit 50,3 row and second column of the arithmetic circuit 50
  • the first row and first column of D 13, first row second column of the input data D 13, and 1 row and third column of the input data D 13 is shifted second row and first column of the arithmetic circuit 50, 2 rows and 2 columns
  • the data is input to the second arithmetic circuit 50 in the second row and the third column.
  • input data D 14 as input data is input to the arithmetic circuit 50 in the first row, first column, first row, second column, and first row and third column
  • D 21 is input to the arithmetic circuit 50 in the first row and fourth column.
  • Retention and multiplication data with the weight data w 1 held by the input data D 14 and context switching, the multiplier data, the input data D 14 and context switching between the weight data w 2 held by the input data D 14 and context switching Product data with the weight data w 3 to be generated and data with the input data D 21 and the weight data w 4 held by context switching are generated.
  • the state of time T8 shown in FIG. 15A is obtained by shifting the input data and shifting the data obtained by adding the multiplication data and the addition data.
  • multiplication data and addition data can be efficiently generated in each arithmetic circuit, and product-sum operation can be performed efficiently. Therefore, as the input data and weight data increase in the neural network circuit, an increase in circuit scale becomes a problem, but this problem can be solved. That is, the product resources can be effectively used because circuit-sum operations of different processes can be performed using the same circuit.
  • FIGS. 16 to 21 illustrate operations when performing the convolution operation processes 73 and 75 by the product-sum operation circuit 40 shown in FIG. 10A using the data shown in FIGS. 11B and 11C. It is a figure for doing.
  • 16A and 16B are obtained by extracting the convolution calculation processes 73 and 75 described in FIG. 9B.
  • the convolution calculation processes 73 and 75 are performed using the 9 ⁇ 9 calculation circuit 50 in the product-sum calculation circuit 40 shown in FIG. 16C, the arithmetic circuits 50 are arranged vertically and horizontally as in FIG. 12A, and the row direction and the column direction are illustrated.
  • the column direction is a shift (MAC data shift) direction of product-sum operation data obtained from input data (corresponding to data 84 or 87) and weight data (weight data included in the filter 85 or filter 88).
  • input data D 11 (hereinafter abbreviated as D 11 ) is input to the arithmetic circuit 50 in the first column, and input data is input to the arithmetic circuit 50 in the second column as D 12.
  • D 11 input data
  • D 11 to D 33 are set in each column as shown in FIG.
  • the arithmetic circuit 50 performs product-sum arithmetic processing in each input channel in the row direction. Accordingly, the first row is data corresponding to the input channel 1, the second row is data corresponding to the input channel 2, and the ninth row is data corresponding to the input channel 9.
  • the arithmetic circuit 50 in the first row in the row direction includes nine types of filters F10 to F18 (hereinafter abbreviated as F10 to F18) for calculating the input channel 1. Is set for each column. Multiplication data is obtained by multiplying a set of contexts, that is, a set of filters, and D 11 to D 33 set in advance, and the multiplication result is output to the arithmetic circuit 50 of the next column as addition data, and product-sum operation is performed. Is configured to execute.
  • the F10 weight data is stored in the first row and first column arithmetic circuit 50
  • the F11 weight data is stored in the first row and second column arithmetic circuit 50
  • the F12 weight data is stored in the first row and third column arithmetic circuit 50.
  • Set the weight data to.
  • the filter corresponding to the arithmetic circuit 50 is shifted in the column direction.
  • the filter corresponding to the arithmetic circuit 50 in the ninth column returns to the first column.
  • the F18 weight data is stored in the first row and first column arithmetic circuit 50
  • the F10 weight data is stored in the first row and second column arithmetic circuit 50
  • the F11 weight data is stored in the first row and third column arithmetic circuit 50.
  • the set weight data can be switched to the weight data of another filter by context switching.
  • the arithmetic circuit 50 in the second and subsequent rows also sets weight data according to the filter.
  • F19 weight data is applied to the arithmetic circuit 50 in the second row and first column
  • F20 weight data is input to the arithmetic circuit 50 in the second row and second column
  • F21 weight data is input to the arithmetic circuit 50 in the second row and third column.
  • Set the weight data to.
  • the filter corresponding to the arithmetic circuit 50 is shifted in the column direction.
  • the filter corresponding to the arithmetic circuit 50 in the ninth column returns to the first column.
  • the F27 weight data is stored in the second row and first column arithmetic circuit 50
  • the F19 weight data is stored in the second row and second column arithmetic circuit 50
  • the F20 weight data is stored in the second row and third column arithmetic circuit 50.
  • the set weight data can be switched to the weight data of another filter by context switching. Context switching is performed until the filter is shifted once for nine operation circuits. That is, switching from context 2 to context 10 is performed.
  • the product-sum operation data obtained by shifting the product-sum operation result is read to the adder circuit 41.
  • the adder circuit 41 adds the product-sum operation data in the same column.
  • the obtained data is processed by the ReLU in the operation unit 23 outside the product-sum operation circuit 40, and the data obtained by the convolution operation processing corresponds to the data.
  • FIG. 16C When performing a convolution calculation process 73 and 75, for performing the product-sum operation of the different filter and D 11 to D 33, switches the context signal context to 2 to 10. After D 11 to D 33 are set in the arithmetic circuit 50 at time T write 1 , the context signal is switched from 2 to 10 at time T 10 to T 18. After the product-sum operation of the 3 ⁇ 3 input data D 11 to D 33 and the nine filters is obtained by the arithmetic circuit 50 in each row and column, it is read out to the adder circuit 41 at time T read1 to perform the convolution arithmetic processing. obtaining went data (CH1-9 D 11 -D 33). Then, D 12 to D 34 are set as the next input data in each arithmetic circuit 50 (time T write2 ), the contexts 2 to 10 are switched, and the product-sum operation is executed in each row.
  • FIG. 17A is a diagram visualizing the input data held in the arithmetic circuit 50 at time T write1 .
  • D 11 to D 33 are set in each column.
  • a set of weight data is written in the memory 52 in the arithmetic circuit 50.
  • the set of weight data is switched in response to context switching.
  • FIG. 17B is a diagram visualizing the input data held in the arithmetic circuit 50 at time T10.
  • a filter for multiplication as context “2” is set in the arithmetic circuit 50 as shown in FIG.
  • the arrow in the column direction represents the shift direction of the multiplication data or the addition data obtained by adding the addition data of the previous column to the multiplication data.
  • “F10” or the like added between the arithmetic circuits 50 in the same row is a filter for performing a product-sum operation with the filter F10. The data obtained by the operation is added as the addition data to the operation circuit 50 in the data shift direction by adding the addition data in the preceding column.
  • description focuses on the operation of the arithmetic circuit 50 in the first row, the arithmetic circuit 50 of the first column D 11 was retained, it performs calculation of the filter F10.
  • the obtained data is output to the arithmetic circuit 50 in the second column.
  • the arithmetic circuit 50 in the second column of D 12 was retained, performs calculation of the filter F11.
  • the obtained data is output to the arithmetic circuit 50 in the third column.
  • the arithmetic circuits 50 in the third column to the eighth column also perform operations with the filters F12 to F17, respectively, and output the obtained data to the arithmetic circuit 50.
  • the arithmetic circuit 50 in the ninth column holding D 33 performs an operation with the filter F18.
  • the obtained data is output to the arithmetic circuit 50 in the first column.
  • the input data held in the second and subsequent rows and the filter are calculated and output to the calculation circuit 50.
  • FIG. 18A is a diagram visualizing input data held in the arithmetic circuit 50 at time T11.
  • the context signal is switched to set the filter for multiplication as the context “3” in the arithmetic circuit 50 as shown in FIG.
  • description focuses on the operation of the arithmetic circuit 50 in the first row, the arithmetic circuit 50 of the first column D 11 was retained, it performs calculation of the filter F18.
  • the obtained data is added to the data output from the arithmetic circuit 50 in the ninth column and output to the arithmetic circuit 50 in the second column.
  • the arithmetic circuit 50 in the second column of D 12 was retained, performs calculation of the filter F10.
  • the obtained data is added to the data output from the arithmetic circuit 50 in the first column and output to the arithmetic circuit 50 in the third column.
  • the arithmetic circuits 50 in the third column to the eighth column also perform operations with the filters F11 to F16, respectively, and output the obtained data to the arithmetic circuit 50.
  • the arithmetic circuit 50 in the ninth column holding D 33 performs an operation with the filter F17.
  • the obtained data is added to the data output from the arithmetic circuit 50 in the eighth column and output to the arithmetic circuit 50 in the first column.
  • the data held in the second and subsequent rows and the filter are calculated and output to the calculation circuit 50.
  • weight data to be multiplied by the following arithmetic circuit 50 is set as the context “3 to 9”, and the held input data and the filter are calculated. And output to the arithmetic circuit 50.
  • FIG. 18B is a diagram visualizing the input data held in the arithmetic circuit 50 at time T18.
  • a filter for multiplication in the arithmetic circuit 50 described below is set as shown in FIG. 18B as the context “10”.
  • description focuses on the operation of the arithmetic circuit 50 in the first row, the arithmetic circuit 50 of the first column D 11 was retained, it performs calculation of the filter F11.
  • the obtained data is added to the data output from the arithmetic circuit 50 in the ninth column and output to the arithmetic circuit 50 in the second column.
  • the data output to the arithmetic circuit 50 in the second column is data of product-sum operation obtained by adding the data multiplied by the arithmetic circuits 50 in the first column and the third to ninth columns.
  • the arithmetic circuit 50 in the second column of D 12 was retained, performs calculation of the filter F12.
  • the obtained data is added to the data output from the arithmetic circuit 50 in the first column and output to the arithmetic circuit 50 in the third column.
  • the data output to the arithmetic circuit 50 in the third column is the product-sum operation obtained by adding the data multiplied by the arithmetic circuits 50 in the first, second, and fourth to ninth columns. It is data.
  • the arithmetic circuits 50 in the third column to the eighth column also perform operations with the filters F13 to F18, respectively, and output the obtained data to the arithmetic circuit 50.
  • the arithmetic circuit 50 of the ninth column to D 33 performs an operation of the filter F10.
  • the obtained data is added to the data output from the arithmetic circuit 50 in the eighth column and output to the arithmetic circuit 50 in the first column.
  • the data output to the arithmetic circuit 50 in the first column is data of the product-sum operation obtained by adding the data multiplied by the arithmetic circuits 50 in the second to ninth columns.
  • the product-sum operation of the input data and the filter held in the second and subsequent rows is performed and output to the arithmetic circuit 50. That is, in the state at time T18, each arithmetic circuit 50 holds data obtained by product-sum operation between D 11 to D 33 and a plurality of filters in each row.
  • FIG. 19A is a diagram visualizing the operation at time Tread1 .
  • the arrow in the row direction represents the data shift direction by the product-sum operation obtained in T10 to T18.
  • data by product-sum operation held in the first to ninth rows is sequentially shifted to the addition circuit 41, and the sum of the obtained data is obtained for each column.
  • Data obtained by the adder circuit 41 is obtained by performing convolution operation processing on D 11 to D 33 by performing processing by ReLU in the operation unit 23 outside the product-sum operation circuit 40.
  • FIG. 19B is a diagram visualizing the input data held in the arithmetic circuit 50 at time Twrite2.
  • D 12 to D 34 are set in each column.
  • FIG. 20 is a diagram visualizing the input data held in the arithmetic circuit 50 at time T19.
  • a filter for multiplication in the arithmetic circuit 50 described below is set as shown in FIG. 20 as context “2”.
  • description focuses on the operation of the arithmetic circuit 50 in the first row, the arithmetic circuit 50 of the first column D 12 was retained, it performs calculation of the filter F10. The obtained data is output to the arithmetic circuit 50 in the second column.
  • the arithmetic circuit 50 in the second column of D 13 is held performs an operation of the filter F11.
  • the obtained data is output to the arithmetic circuit 50 in the third column.
  • the arithmetic circuits 50 in the third column to the eighth column also perform operations with the filters F12 to F17, respectively, and output the obtained data to the arithmetic circuit 50.
  • the arithmetic circuit 50 in the ninth column holding D 34 performs an operation with the filter F18.
  • the obtained data is output to the arithmetic circuit 50 in the first column.
  • the input data held in the second and subsequent rows and the filter are calculated and output to the calculation circuit 50.
  • filters (W 11 , W 12 , W 13 , W 14 ), (W 21 , W 22 , W 23 , W 24 ) having four different types of weight data, (W 31 , W 32 , W 33 , W 34 ), (W 41 , W 42 , W 43 , W 44 ) and product-sum operation of input data (I 1 , I 2 , I 3 , I 4 ) are performed.
  • the case will be described.
  • the product-sum operation can be performed in parallel while looping data obtained by a plurality of arithmetic circuits.
  • Equation (1) The product-sum operation (convolution operation) using a plurality of filters can be represented by a matrix-vector product as illustrated in Equation (1).
  • a 4 ⁇ 4 matrix composed of W corresponds to weight data (elements in each row correspond to components of each filter).
  • a 1 ⁇ 4 matrix composed of I corresponds to input data.
  • a 1 ⁇ 4 matrix composed of Y corresponds to data obtained by a product-sum operation.
  • the matrix-vector product of Equation (1) can be illustrated as shown in FIG. 21A when applied to an arithmetic model that performs a product-sum operation using the arithmetic circuit 50 described above. That is, the input data I 1 to I 4 are held as the input data 93 of each arithmetic circuit 50_A. Further, the filters (W 11 , W 12 , W 13 , W 14 ), (W 21 , W 22 , W 23 , W 24 ), (W 31 , W 32 , W 33 , W 34 ), (W 41 , W 42).
  • each arithmetic circuit 50A is written in the memory of each arithmetic circuit 50A, and can be used as different weight data 94_1 to 94_4 to generate multiplication data according to context switching. In the following description, it is assumed that the calculation process proceeds every clock (1 clk).
  • arbitrary weight data from the set of weight data is set by context switching. Specifically, the underlined weight data (W 11 , W 22 , W 33 , W 44 ) illustrated in FIG. 21B is set, and the input data (I 1 ) held in each arithmetic circuit 50_A is set. , I 2 , I 3 , I 4 ). Each arithmetic circuit 50_A, generates a multiplied data of the input data 93 and weight data 94_1 (W 11 ⁇ I 1, W 22 ⁇ I 2, W 33 ⁇ I 3, W 44 ⁇ I 4).
  • FIG. 21C which is 1 clk after the state of FIG. 21B, it is set by context weight data different from that in FIG. Specifically, the underlined weight data (W 41 , W 12 , W 23 , W 34 ) illustrated in FIG. 21C is set, and the input data (I 1 ) held in each arithmetic circuit 50_A. , I 2 , I 3 , I 4 ). Each arithmetic circuit 50_A generates multiplication data (W 41 ⁇ I 1 , W 12 ⁇ I 2 , W 23 ⁇ I 3 , W 34 ⁇ I 4 ) of the input data 93 and the weight data 94_2.
  • the weight data is set by context weight data different from that in FIG. Specifically, the underlined weight data (W 31 , W 42 , W 13 , W 24 ) illustrated in FIG. 21D is set, and the input data (I 1 ) held in each arithmetic circuit 50_A is set. , I 2 , I 3 , I 4 ).
  • each arithmetic circuit 50_A generates multiplication data (W 31 ⁇ I 1 , W 42 ⁇ I 2 , W 13 ⁇ I 3 , W 24 ⁇ I 4 ) of the input data 93 and the weight data 94_3.
  • each arithmetic circuit 90_A the multiplication data (W 41 ⁇ I 1 , W 12 ⁇ I 2 , W 23 ⁇ I 3 , W 34 ⁇ I 4 ) is added to the addition data (W 11 ⁇ I 1 , W 22 ⁇ I 2 , W 33 ⁇ I 3 , W 44 ⁇ I 4 ) added to the product-sum operation data (W 12 ⁇ I 2 + W 11 ⁇ I 1 , W 23 ⁇ I 3 + W 22 ⁇ I 2 , W 34 ⁇ I 4 + W 33 ⁇ I 3 , W 41 ⁇ I 1 + W 44 ⁇ I 4 ) are output to the next column arithmetic circuit 50_A as addition data for the next column.
  • FIG. 21E which is 1 clk after the state of FIG. 21D, it is set by context weight data different from that in FIG. Specifically, the underlined weight data (W 21 , W 32 , W 43 , W 14 ) illustrated in FIG. 21E is set, and the input data (I 1 ) held in each arithmetic circuit 50_A. , I 2 , I 3 , I 4 ).
  • each arithmetic circuit 50_A generates multiplication data (W 21 ⁇ I 1 , W 32 ⁇ I 2 , W 43 ⁇ I 3 , W 14 ⁇ I 4 ) of the input data 93 and the weight data 94_4.
  • each arithmetic circuit 90_A the multiplication data (W 31 ⁇ I 1 , W 42 ⁇ I 2 , W 13 ⁇ I 3 , W 24 ⁇ I 4 ) is added to the addition data (W 12 ⁇ I 2 + W 11 ⁇ I 1 , W 23 ⁇ I 3 + W 22 ⁇ I 2 , W 34 ⁇ I 4 + W 33 ⁇ I 3 , W 41 ⁇ I 1 + W 44 ⁇ I 4 ) (W 13 ⁇ I 3 + W 12 ⁇ I 2 + W 11 ⁇ I 1, W 24 ⁇ I 4 + W 23 ⁇ I 3 + W 22 ⁇ I 2, W 31 ⁇ I 1 + W 34 ⁇ I 4 + W 33 ⁇ I 3, W 42 ⁇ I 2 + W 41 ⁇ I 1 + W 44 ⁇ I 4 ) is output to the next row arithmetic circuit 50_A as the addition data of the next row.
  • each arithmetic circuit 90_A adds data (W 13 ⁇ I 3 + W 12 ⁇ I 2 + W 11 ⁇ I) output in FIG. 21 (E).
  • W 24 ⁇ I 4 + W 23 ⁇ I 3 + W 22 ⁇ I 2 , W 31 ⁇ I 1 + W 34 ⁇ I 4 + W 33 ⁇ I 3 , W 42 ⁇ I 2 + W 41 ⁇ I 1 + W 44 ⁇ I 4 )
  • the product-sum operation data is obtained by adding the multiplication data (W 31 ⁇ I 1 , W 42 ⁇ I 2 , W 13 ⁇ I 3 , W 24 ⁇ I 4 ). As shown in FIG.
  • product-sum operation data 95_2 (W 21 ⁇ I 1 + W 24 ⁇ I 4 + W 23 ⁇ I 3 + W 22 ⁇ I 2, W 31 ⁇ I 1)
  • product sum operation data 95_3 (W 32 ⁇ I 2 + W 31 ⁇ I 1 + W 34 ⁇ I 4 + W 33 ⁇ I 3)
  • multiply-accumulate data 95_4 (W 43 ⁇ I 3 + W 42 ⁇ I 2 + W 41 ⁇ I 1 + W 44 I 4 )
  • product-sum operation data 95_1 (W 14 ⁇ I 4 + W 13 ⁇ I 3 + W 12 ⁇ I 2 + W 11 ⁇ I 1 )
  • the obtained product-sum operation data corresponds to Y (Y 1 to Y 4 ) represented by a matrix-vector product.
  • FIG. 22 to FIG. 26 are for explaining the operation when the full combination calculation processing 77 by the product-sum calculation circuit 40 shown in FIG. 10 is performed using the data shown in FIGS. 11B and 11C.
  • FIG. 22 to FIG. 26 are for explaining the operation when the full combination calculation processing 77 by the product-sum calculation circuit 40 shown in FIG. 10 is performed using the data shown in FIGS. 11B and 11C.
  • FIG. 22 to FIG. 26 are for explaining the operation when the full combination calculation processing 77 by the product-sum calculation circuit 40 shown in FIG. 10 is performed using the data shown in FIGS. 11B and 11C.
  • FIG. 22 (A) is an extraction of the full join calculation process 77 described in FIG. 9 (B).
  • FIG. 22B is a diagram for explaining a convolution operation process in which 81 data of the data 90 is the number of labels to be determined, in this case, the data 92 is 10 channels in the all-join operation process 77. is there.
  • FIG. 22 (B) for one label of data 92, a product-sum operation with a weight parameter is performed on each of 81 data, and a calculation process of adding the obtained values is performed. It is shown.
  • the filter is not used in the all-join calculation process, since the all-join calculation process is performed using the circuit resources of the convolution calculation process described above, the calculation is performed with a circuit scale similar to the convolution calculation process. Therefore, it is effective to divide 81 input data into 9 pieces and perform product-sum operation.
  • the product-sum operation is performed for each of the nine input data.
  • the input data numbers 1 to 9 (the numbers assigned to the data 90 in FIG.
  • a weight parameter group used for a product-sum operation performed with 1 (number assigned to data 92 in FIG. 22B) is referred to as F91.
  • F91 weight parameter group used for a product-sum operation performed between nine data of input data numbers 1 to 9 and output data numbers 2 to 10 (numbers attached to data 92 in FIG. 22B).
  • the weight parameter groups are referred to as F92 to F100, respectively.
  • nine data from input data numbers 10 to 18 (numbers assigned to data 90 in FIG. 22B) and output data numbers 1 to 10 (data in FIG. 22B) F101 to F110, F111 to F120, F121 to F130, F131 to F140, F141 to F150, F151 to F160, and F161 to F170, respectively. , F171 to F180.
  • FIG. 22A and 22B is performed using the 9 ⁇ 10 arithmetic circuit 50 in the product-sum arithmetic circuit 40 shown in FIG.
  • FIG. 23A 9 ⁇ 10 arithmetic circuits 50 are arranged vertically and horizontally, and the row direction and the column direction are illustrated.
  • the column direction is the shift (MAC data shift) direction of the product-sum operation data obtained from the input data and the weight data.
  • the adder circuit 41 is shown.
  • the weight data groups F171 to F180 are set for each column in the arithmetic circuit 50 in the first row in the row direction.
  • the weight data groups F161 to F170 are set for each column in the arithmetic circuit 50 in the second row in the row direction.
  • the weight data groups F161 to F170 are set for each column.
  • the arithmetic circuit 50 in the tenth column gives no data as a blank data and no filter.
  • F91 to F180 indicate nine weight data groups (for example, ⁇ F91, F101, (abbreviated), F171>, ⁇ F92, F102, (omitted), F172 ⁇ , ⁇ F100, F110, (omitted), F180>) are required.
  • a sum-of-products operation is performed using a plurality of weight data groups, and a total join operation process is performed by adding data obtained later. With a small number of arithmetic circuits, massively parallel all-join arithmetic processing can be performed efficiently.
  • F171 weight data is applied to the arithmetic circuit 50 in the first row and first column
  • F172 weight data is input to the arithmetic circuit 50 in the first row and second column
  • F173 weight data is input to the arithmetic circuit 50 in the first row and third column.
  • the weight data group is set as follows.
  • the arithmetic circuit 50 in the first row and the ninth column sets a weight data group like the weight data of F179, and the data and the weight data group are not set in the first row and the tenth column, but the F180 is associated.
  • the weight data group corresponding to the arithmetic circuit 50 is shifted in the column direction.
  • the weight data group corresponding to the arithmetic circuit 50 in the tenth column returns to the first column.
  • the F180 weight data is applied to the arithmetic circuit 50 in the first row and the first column
  • the F171 weight data is input to the arithmetic circuit 50 in the second row and the second column
  • the F172 weight data is input to the arithmetic circuit 50 in the first row and the third column.
  • the weight data group is set as follows. A weight data group is set in the arithmetic circuit 50 in the first row and the ninth column like the weight data of F178, and no data and weight data group are set in the first row and the tenth column, but F179 is made to correspond.
  • the set weight data can be switched to weight data of another weight data group by context switching.
  • the context switching is performed until the weight data group shifts once for 10 columns of arithmetic circuits. That is, the context is sequentially switched from the context “11” to “20”.
  • the product-sum operation data obtained by shifting the operation result data is read to the addition circuit 41.
  • the adder circuit 41 adds the product-sum operation data in the same column.
  • the obtained data corresponds to the data after the total join calculation process.
  • FIG. 23A The above-described operation of FIG. 23A can be summarized as shown in FIG.
  • the context signal context changes the context from “11” to “20” in order to execute a product-sum operation on 81 pieces of data “1” to “81” and different weight data groups. Switch in order. After data “1” to “81” are set in the arithmetic circuit 50 at time T write3 , the context is sequentially switched from context “11” to “20” at times T20 to T29. After product-sum operations of 81 pieces of data “1” to “81” and nine weight data groups are obtained by the respective arithmetic circuits 50, they are read out to the adder circuit 41 at time Tread2 to perform product-sum operation processing. Data (CH10 1 ⁇ 1) is obtained.
  • FIG. 24A is a diagram visualizing input data held in the arithmetic circuit 50 at time T write3 .
  • 81 pieces of data “1” to “81” are set in the arithmetic circuit 50 of each row and column.
  • “0” is illustrated as empty data.
  • a set of weight data is written in the memory 52 in the arithmetic circuit 50.
  • the set of weight data is switched in response to context switching.
  • FIG. 24B is a diagram visualizing data held in the arithmetic circuit 50 at time T20.
  • the weight data group to be multiplied by the arithmetic circuit 50 described below is set as illustrated in FIG.
  • the arrow in the column direction represents the shift direction of the multiplication data or the addition data obtained by adding the addition data of the previous column to the multiplication data.
  • “F171” or the like added between the arithmetic circuits 50 in the same row is a weight data group for performing a product-sum operation with F171.
  • the data obtained by the operation is added as the addition data to the operation circuit 50 in the data shift direction by adding the addition data in the preceding column.
  • the arithmetic circuit 50 in the first column holding the data “73” performs an operation with F171.
  • the obtained data is added to the data output from the arithmetic circuit 50 in the 10th column (in this case, 0) and output to the arithmetic circuit 50 in the second column.
  • the arithmetic circuit 50 in the second column holding the data “74” performs an operation with F172.
  • the obtained data is added to the data output from the arithmetic circuit 50 in the first column and output to the arithmetic circuit 50 in the third column.
  • the arithmetic circuits 50 in the third column to the eighth column also perform operations on the data and F173 to F178, respectively, and output the obtained data to the arithmetic circuit 50.
  • the arithmetic circuit 50 in the ninth column holding the data “81” performs an operation with F179.
  • the obtained data is added to the data output from the arithmetic circuit 50 in the eighth column and output to the arithmetic circuit 50 in the tenth column.
  • the arithmetic circuit 50 in the tenth column which does not hold data, is empty data and cannot obtain multiplication data. That is, the addition data output from the arithmetic circuit 50 in the tenth column remains the addition data output from the arithmetic circuit 50 in the ninth column.
  • FIG. 25A is a diagram visualizing the input data held in the arithmetic circuit 50 at time T21.
  • a weight data group to be multiplied by the following arithmetic circuit 50 is set as context “12” as shown in FIG.
  • the arithmetic circuit 50 in the first column holding the data “73” performs an operation with F180.
  • the obtained data is added to the data output from the arithmetic circuit 50 in the 10th column (in this case, 0) and output to the arithmetic circuit 50 in the second column.
  • the arithmetic circuit 50 in the second column holding the data “74” performs an operation with F171.
  • the obtained data is added to the data output from the arithmetic circuit 50 in the first column (in this case, the data “73” and the multiplication data of F171 performed at time T21) and output to the arithmetic circuit 50 in the third column. .
  • the arithmetic circuits 50 in the third column to the eighth column also perform operations on the data and F172 to F177, respectively, and output the obtained data to the arithmetic circuit 50.
  • the arithmetic circuit 50 in the ninth column holding the data “81” performs an operation with F178.
  • the obtained data is added to the data output from the arithmetic circuit 50 in the eighth column (in this case, the data “80” multiplied by F178 at time T21) and output to the arithmetic circuit 50 in the tenth column.
  • the arithmetic circuit 50 in the tenth column which does not hold data, is empty data and cannot obtain multiplication data. That is, the data output from the arithmetic circuit 50 in the tenth column remains the data output from the arithmetic circuit 50 in the ninth column (in this case, the data “81” multiplied by F179 at time T21). .
  • weight data to be multiplied by the arithmetic circuit 50 described below is set as contexts “13” to “19”, and the held data and the weight data group are set. An operation is performed and output to the operation circuit 50 is performed.
  • FIG. 25 (B) is a diagram visualizing the input data held in the arithmetic circuit 50 at time T29.
  • a weight data group to be multiplied by the following arithmetic circuit 50 is set as context “20” as shown in FIG.
  • the arithmetic circuit 50 in the first column holding the data “73” performs an operation with F172.
  • the obtained data is added to the data output from the arithmetic circuit 50 in the tenth column (in this case, the product-sum operation of the combination of the data “74” to “81” and F171, F173 to F180) and the second column
  • the result is output to the arithmetic circuit 50.
  • the arithmetic circuit 50 in the second column holding the data “74” performs an operation with F173.
  • the obtained data is output from the arithmetic circuit 50 in the first column (in this case, product-sum operation of combinations of data “73”, data “75” to “81” and F171, F172, F174 to F180) And output to the arithmetic circuit 50 in the third column.
  • the arithmetic circuits 50 in the third column to the eighth column also perform operations on the data and F174 to F178, respectively, and output the obtained data to the arithmetic circuit 50.
  • the arithmetic circuit 50 in the ninth column holding the data “81” performs an operation with F180.
  • the obtained data is added to the data output from the operation circuit 50 in the eighth column (in this case, the product-sum operation of combinations of data “73” to “80” and F171 to F179), and the operation in the tenth column Output to the circuit 50.
  • the arithmetic circuit 50 in the tenth column which does not hold data, is empty data and cannot obtain multiplication data. That is, the data output from the arithmetic circuit 50 in the 10th column is the sum-of-products operation of the data output from the arithmetic circuit 50 in the 9th column (in this case, combinations of data “73” to “81” and F171 to F179). ).
  • the arithmetic circuits 50 in the second row through the ninth column also perform arithmetic operations with F91 through F170, respectively, and output the obtained data to the arithmetic circuit 50. That is, each arithmetic circuit 50 in the state at time T29 holds the result of the product-sum operation of the data held in each row and the weight data group obtained by switching the context signal by holding in each row. become.
  • FIG. 26 is a diagram visualizing the operation at time Tread2 .
  • the arrow in the row direction represents the data shift direction by the product-sum operation obtained in T20 to T29.
  • the data by the product-sum operation held in the first to ninth rows is sequentially shifted to the addition circuit 41, and the sum of the obtained data is obtained for each column.
  • the obtained data is processed by the ReLU in the arithmetic unit 23 outside the product-sum arithmetic circuit 40 to obtain fully coupled data.
  • the operation data is switched according to the configuration of the input data, the configuration of the filter and the weight data group, etc., so that multiplication data and addition data are efficiently generated in each arithmetic circuit.
  • the product-sum operation can be performed efficiently. Therefore, as the input data and weight data increase in the neural network circuit, an increase in circuit scale becomes a problem, but this problem can be solved. That is, the product resources can be effectively used because circuit-sum operations of different processes can be performed using the same circuit.
  • Embodiment 2 shows an example of an IC (neural network system IC) in which the neural network circuit shown in the above embodiment is incorporated.
  • the neural network circuit shown in the above embodiment can be integrated on a single die, an arithmetic circuit 50 having a multiplication circuit and an addition circuit made of Si transistors, a memory circuit using OS transistors.
  • FIG. 27 shows an example of an IC incorporating a neural network circuit.
  • a neural network system IC 7000 shown in FIG. 27 includes a lead 7001 and a circuit unit 7003.
  • the circuit portion 7003 is provided with the various circuits described in the above embodiment in one die.
  • the circuit portion 7003 has a stacked structure, and is roughly divided into a Si transistor layer 7031, a wiring layer 7032, and an OS transistor layer 7033. Since the OS transistor layer 7033 can be stacked on the Si transistor layer 7031, the neural network system IC7000 can be easily downsized.
  • QFP Quad Flat Package
  • the arithmetic circuit 50 including Si transistors and the memory circuit including an OS transistor can all be formed in the Si transistor layer 7031, the wiring layer 7032, and the OS transistor layer 7033. That is, the elements constituting the neural network circuit can be formed by the same manufacturing process. Therefore, the IC shown in this embodiment mode does not require an increase in manufacturing process even if the number of constituent elements is increased, and the neural network circuit can be incorporated at low cost.
  • DOSRAM 1400 With reference to FIGS. 28A to 28C, the DOSRAM will be described.
  • the DOSRAM 1400 illustrated in FIG. 28A includes a controller 1405, a row circuit 1410, a column circuit 1415, and an MC-SA array 1420.
  • the row circuit 1410 includes a decoder 1411, a word line driver 1412, a column selector 1413, and a sense amplifier driver 1414.
  • the column circuit 1415 includes a global sense amplifier array 1416 and an input / output circuit 1417.
  • the global sense amplifier array 1416 has a plurality of global sense amplifiers 1447.
  • the MC-SA array 1420 includes a memory cell array 1422, a sense amplifier array 1423, and global bit lines GBLL and GBLR.
  • the MC-SA array 1420 has a stacked structure in which the memory cell array 1422 is stacked on the sense amplifier array 1423.
  • Global bit lines GBLL and GBLR are stacked on the memory cell array 1422.
  • a hierarchical bit line structure in which a local bit line and a global bit line are hierarchized is adopted as the bit line structure.
  • the memory cell array 1422 has N (N is an integer of 2 or more) local memory cell arrays 1425 ⁇ 0> -425 ⁇ N-1>.
  • the local memory cell array 1425 includes a plurality of memory cells 1445, a plurality of word lines WL, and a plurality of bit lines BLL and BLR.
  • the structure of the local memory cell array 1425 is an open bit line type, but may be a folded bit line type.
  • a memory cell 1445 illustrated in FIG. 28A includes an OS transistor MO45 and a capacitor C45.
  • the OS transistor MO45 has a function of controlling charging / discharging of the capacitor C45.
  • the gate of the OS transistor MO45 is electrically connected to the word line, the back gate is electrically connected to the wiring BGL, the first terminal is electrically connected to the bit line BLL or BLR, and the second terminal is the capacitor C45. Is electrically connected to the first terminal.
  • a second terminal of the capacitor C45 is electrically connected to the wiring PCL.
  • the wirings CSL and BGL are power supply lines for supplying a voltage.
  • the threshold voltage of the OS transistor MO45 can be changed by the voltage of the wiring BGL.
  • the voltage at the terminal B2 may be a fixed voltage (for example, a negative constant voltage), or the voltage at the terminal B2 may be changed according to the operation of the DOSRAM 1400.
  • the back gate of the OS transistor MO45 may be electrically connected to the gate, source, or drain of the OS transistor MO45. Alternatively, the OS transistor MO45 may not have a back gate.
  • the sense amplifier array 1423 includes N local sense amplifier arrays 1426 ⁇ 0> -426 ⁇ N-1>.
  • the local sense amplifier array 1426 includes one switch array 1444 and a plurality of sense amplifiers 1446.
  • a bit line pair is electrically connected to the sense amplifier 1446.
  • the sense amplifier 1446 has a function of precharging the bit line pair, a function of amplifying the voltage difference between the bit line pair, and a function of holding this voltage difference.
  • the switch array 1444 has a function of selecting a bit line pair and bringing the selected bit line pair and the global bit line pair into a conductive state.
  • bit line pair refers to two bit lines that are simultaneously compared by the sense amplifier.
  • a global bit line pair refers to two global bit lines that are simultaneously compared by a global sense amplifier.
  • a bit line pair can be called a pair of bit lines, and a global bit line pair can be called a pair of global bit lines.
  • bit line BLL and the bit line BLR form one bit line pair.
  • Global bit line GBLL and global bit line GBLR form a pair of global bit lines.
  • bit line pair (BLL, BLR) and the global bit line pair (GBLL, GBLR) are also represented.
  • the controller 1405 has a function of controlling the overall operation of the DOSRAM 1400.
  • the controller 1405 performs a logical operation on a command signal input from the outside to determine an operation mode, and a function to generate control signals for the row circuit 1410 and the column circuit 1415 so that the determined operation mode is executed.
  • the row circuit 1410 has a function of driving the MC-SA array 1420.
  • the decoder 1411 has a function of decoding an address signal.
  • the word line driver 1412 generates a selection signal for selecting the word line WL of the access target row.
  • the column selector 1413 and the sense amplifier driver 1414 are circuits for driving the sense amplifier array 1423.
  • the column selector 1413 has a function of generating a selection signal for selecting the bit line of the access target column.
  • the switch array 1444 of each local sense amplifier array 1426 is controlled by a selection signal from the column selector 1413.
  • the plurality of local sense amplifier arrays 1426 are independently driven by the control signal of the sense amplifier driver 1414.
  • the column circuit 1415 has a function of controlling input of the data signal WDA [31: 0] and a function of controlling output of the data signal RDA [31: 0].
  • the data signal WDA [31: 0] is a write data signal
  • the data signal RDA [31: 0] is a read data signal.
  • the global sense amplifier 1447 is electrically connected to a global bit line pair (GBLL, GBLR).
  • the global sense amplifier 1447 has a function of amplifying a voltage difference between the global bit line pair (GBLL, GBLR) and a function of holding this voltage difference.
  • Data input / output to / from the global bit line pair (GBLL, GBLR) is performed by an input / output circuit 1417.
  • Data is written to the global bit line pair by the input / output circuit 1417.
  • Data of the global bit line pair is held by the global sense amplifier array 1416.
  • the data of the global bit line pair is written to the bit line pair of the target column by the switch array 1444 of the local sense amplifier array 1426 specified by the address.
  • the local sense amplifier array 1426 amplifies and holds the written data.
  • the row circuit 1410 selects the word line WL of the target row, and the data held in the local sense amplifier array 1426 is written into the memory cell 1445 of the selected row.
  • One row of the local memory cell array 1425 is designated by the address signal.
  • the word line WL in the target row is selected, and the data in the memory cell 1445 is written to the bit line.
  • the local sense amplifier array 1426 detects and holds the voltage difference between the bit line pairs in each column as data.
  • the switch array 1444 writes the data in the column specified by the address among the data held in the local sense amplifier array 1426 to the global bit line pair.
  • the global sense amplifier array 1416 detects and holds data of the global bit line pair. Data held in the global sense amplifier array 1416 is output to the input / output circuit 1417. This completes the read operation.
  • the DOSRAM 1400 In order to rewrite data by charging / discharging the capacitive element C45, the DOSRAM 1400 has no limitation on the number of rewrites in principle, and can write and read data with low energy. Further, since the circuit configuration of the memory cell 1445 is simple, the capacity can be easily increased. Therefore, the DOSRAM 1400 is suitable for a memory device that rewrites a large amount of data at a high frequency, for example, a frame memory used for image processing.
  • the OS transistor MO45 is an OS transistor. Since the OS transistor has an extremely small off-state current, it is possible to suppress charge leakage from the capacitor C45. Therefore, since the DOSRAM 1400 has a much longer retention time than the DRAM, the refresh rate frequency can be reduced. Therefore, the DOSRAM 1400 can reduce the power required for the fresh operation.
  • the bit line can be shortened to the same length as the local sense amplifier array 1426. By shortening the bit line, the bit line capacitance can be reduced and the storage capacity of the memory cell 1445 can be reduced. Further, by providing the switch array 1444 in the local sense amplifier array 1426, the number of long bit lines can be reduced. For the above reasons, the load that is driven when the DOSRAM 1400 is accessed is reduced.
  • the power consumption of the neural network system can be reduced by using the DOSRAM 1400 for the memory 52 described in the above embodiment.
  • NOSRAM ⁇ NOSRAM >> The NOSRAM will be described with reference to FIGS. 29 and 30.
  • FIG. Here, a multi-level NOSRAM that stores multi-level data in one memory cell will be described.
  • the NOSRAM 1600 shown in FIG. 29 includes a memory cell array 1610, a controller 1640, a row driver 1650, a column driver 1660, and an output driver 1670.
  • the memory cell array 1610 includes a plurality of memory cells 1611, a plurality of word lines WWL and RWL, a bit line BL, and a source line SL.
  • the word line WWL is a write word line
  • the word line RWL is a read word line.
  • one memory cell 1611 stores 3-bit (eight values) data.
  • the controller 1640 comprehensively controls the entire NOSRAM 1600, and writes data WDA [31: 0] and reads data RDA [31: 0].
  • the controller 1640 processes command signals from the outside (for example, a chip enable signal, a write enable signal, etc.), and generates control signals for the row driver 1650, the column driver 1660, and the output driver 1670.
  • the row driver 1650 has a function of selecting a row to be accessed.
  • the row driver 1650 includes a row decoder 1651 and a word line driver 1652.
  • the column driver 1660 drives the source line SL and the bit line BL.
  • the column driver 1660 includes a column decoder 1661, a write driver 1662, and a DAC (digital-analog conversion circuit) 1663.
  • the DAC 1663 converts 3-bit digital data into analog voltage.
  • the DAC 1663 converts 32-bit data WDA [31: 0] into an analog voltage every 3 bits.
  • the write driver 1662 has a function of precharging the source line SL, a function of electrically floating the source line SL, a function of selecting the source line SL, and a write voltage generated by the DAC 1663 to the selected source line SL.
  • the output driver 1670 includes a selector 1671, an ADC (analog-digital conversion circuit) 1672, and an output buffer 1673.
  • the selector 1671 selects the source line SL to be accessed and transmits the voltage of the selected source line SL to the ADC 1672.
  • the ADC 1672 has a function of converting an analog voltage into 3-bit digital data. The voltage of the source line SL is converted into 3-bit data in the ADC 1672, and the output buffer 1673 holds data output from the ADC 1672.
  • FIG. 30A is a circuit diagram illustrating a structural example of the memory cell 1611.
  • the memory cell 1611 is a 2T type gain cell, and the memory cell 161 is electrically connected to the word lines WWL and RWL, the bit line BL, the source line SL, and the wiring BGL.
  • the memory cell 1611 includes a node SN, an OS transistor MO61, a transistor MP61, and a capacitor C61.
  • the OS transistor MO61 is a write transistor.
  • the transistor MP61 is a read transistor, and is composed of, for example, a p-channel Si transistor.
  • the capacitive element C61 is a holding capacitor for holding the voltage of the node SN.
  • the node SN is a data holding node and corresponds to the gate of the transistor MP61 here.
  • the NOSRAM 1600 can hold data for a long time.
  • bit line is a common bit line for writing and reading.
  • a writing bit line WBL and a reading bit line RBL may be provided. Good.
  • FIG. 30C to FIG. 30E show another configuration example of the memory cell.
  • FIGS. 30C to 30E show an example in which a write bit line and a read bit line are provided. As shown in FIG. 30A, bit lines shared by writing and reading are shown. May be provided.
  • a memory cell 1612 shown in FIG. 30C is a modified example of the memory cell 1611 in which the read transistor is changed to an n-channel transistor (MN61).
  • the transistor MN61 may be an OS transistor or a Si transistor.
  • the OS transistor MO61 may be an OS transistor without a back gate.
  • the memory cell 1613 shown in FIG. 30D is a 3T gain cell, and is electrically connected to the word lines WWL and RWL, the bit lines WBL and RBL, the source line SL, and the wirings BGL and PCL.
  • the memory cell 1613 includes a node SN, an OS transistor MO62, a transistor MP62, a transistor MP63, and a capacitor C62.
  • the OS transistor MO62 is a write transistor.
  • the transistor MP62 is a read transistor, and the transistor MP63 is a selection transistor.
  • a memory cell 1614 shown in FIG. 30E is a modified example of the memory cell 1613, in which a read transistor and a selection transistor are changed to n-channel transistors (MN62, MN63).
  • the transistors MN62 and MN63 may be OS transistors or Si transistors.
  • the OS transistor provided in the memory cells 1611 to 1614 may be a transistor without a back gate or a transistor with a back gate.
  • the NOSRAM 1600 Since data is rewritten by charging / discharging the capacitive element C61, the NOSRAM 1600 has no limitation on the number of rewrites in principle, and can write and read data with low energy. Further, since the data can be held for a long time, the refresh frequency can be reduced. Therefore, the DOSRAM 1400 is suitable for a memory device that rewrites a large amount of data at a high frequency, for example, a frame memory used for image processing.
  • the power consumption of the neural network circuit can be reduced.
  • each embodiment can be combined with the structure described in any of the other embodiments as appropriate, for one embodiment of the present invention.
  • any of the structure examples can be combined with each other as appropriate.
  • the content (may be a part of content) described in one embodiment is different from the content (may be a part of content) described in the embodiment and / or one or more Application, combination, replacement, or the like can be performed on the content described in another embodiment (or part of the content).
  • a drawing (or a part thereof) described in one embodiment may be another part of the drawing, another drawing (may be a part) described in the embodiment, and / or one or more. More diagrams can be formed by combining the diagrams (may be a part) described in another embodiment.
  • the constituent elements are classified by function and shown as independent blocks.
  • it is difficult to separate the components for each function and there may be a case where a plurality of functions are involved in one circuit or a case where one function is involved over a plurality of circuits. Therefore, the blocks in the block diagram are not limited to the components described in the specification, and can be appropriately rephrased depending on the situation.
  • the size, the layer thickness, or the region is shown in an arbitrary size for convenience of explanation. Therefore, it is not necessarily limited to the scale. Note that the drawings are schematically shown for the sake of clarity, and are not limited to the shapes or values shown in the drawings. For example, variation in signal, voltage, or current due to noise, variation in signal, voltage, or current due to timing shift can be included.
  • one of a source and a drain is referred to as “one of a source and a drain” (or a first electrode or a first terminal), and the source and the drain The other is referred to as “the other of the source and the drain” (or the second electrode or the second terminal).
  • the source and drain of a transistor vary depending on the structure or operating conditions of the transistor.
  • the names of the source and the drain of the transistor can be appropriately rephrased depending on the situation, such as a source (drain) terminal or a source (drain) electrode.
  • Electrode and “wiring” do not functionally limit these components.
  • an “electrode” may be used as part of a “wiring” and vice versa.
  • the terms “electrode” and “wiring” include a case where a plurality of “electrodes” and “wirings” are integrally formed.
  • the voltage is a potential difference from a reference potential.
  • the reference potential is a ground voltage (ground voltage)
  • the voltage can be rephrased as a potential.
  • the ground potential does not necessarily mean 0V. Note that the potential is relative, and the potential applied to the wiring or the like may be changed depending on the reference potential.
  • conductive layer may be changed to the term “conductive film”.
  • insulating film may be changed to the term “insulating layer” in some cases.
  • a switch refers to a switch that is in a conductive state (on state) or a non-conductive state (off state) and has a function of controlling whether or not to pass a current.
  • the switch refers to a switch having a function of selecting and switching a current flow path.
  • an electrical switch or a mechanical switch can be used. That is, the switch is not limited to a specific one as long as it can control the current.
  • Examples of electrical switches include transistors (eg, bipolar transistors, MOS transistors, etc.), diodes (eg, PN diodes, PIN diodes, Schottky diodes, MIM (Metal Insulator Metal) diodes, MIS (Metal Insulator Semiconductor) diodes. , Diode-connected transistors, etc.), or a logic circuit combining these.
  • transistors eg, bipolar transistors, MOS transistors, etc.
  • diodes eg, PN diodes, PIN diodes, Schottky diodes, MIM (Metal Insulator Metal) diodes, MIS (Metal Insulator Semiconductor) diodes. , Diode-connected transistors, etc.
  • diodes eg, PN diodes, PIN diodes, Schottky diodes, MIM (Metal Insulator Metal) diodes, MIS (Metal Insulator Semiconductor) diodes. , Dio
  • the “conducting state” of the transistor means a state in which the source and drain of the transistor can be regarded as being electrically short-circuited.
  • the “non-conducting state” of a transistor refers to a state where the source and drain of the transistor can be regarded as being electrically cut off.
  • the polarity (conductivity type) of the transistor is not particularly limited.
  • a mechanical switch is a switch using MEMS (micro electro mechanical system) technology such as a digital micromirror device (DMD).
  • MEMS micro electro mechanical system
  • DMD digital micromirror device
  • the switch has an electrode that can be moved mechanically, and operates by controlling conduction and non-conduction by moving the electrode.
  • the channel length means, for example, in a top view of a transistor, a region where a semiconductor (or a portion where a current flows in the semiconductor when the transistor is on) and a gate overlap with each other, or a channel is formed. This is the distance between the source and drain in the region.
  • the channel width refers to, for example, a source in a region where a semiconductor (or a portion where a current flows in the semiconductor when the transistor is on) and a gate electrode overlap, or a region where a channel is formed And the length of the part where the drain faces.
  • a and B are connected includes not only those in which A and B are directly connected, but also those that are electrically connected.
  • a and B are electrically connected.

Landscapes

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

Abstract

要約書 新規な構成のニューラルネットワーク回路を提供すること。 レジスタ、メモリ、乗算回路および加算回路を有する複数の演算回路を複数設ける。メモリは、コンテキスト 信号の切り替えに応じて異なる重みデータを出力する。乗算回路は、重みデータと、レジスタに保持される 入力データと、の乗算データとを出力する。加算回路は、別の演算回路における加算回路で得られた積和 演算で得られるデータに、得られた乗算データを加算することで積和演算を行う。得られた積和演算のデー タは、別の演算回路における加算回路に出力することで、異なる重みデータおよび入力データの積和演算 を行う構成とする。

Description

ニューラルネットワーク回路
 本発明の一態様は、ニューラルネットワーク回路に関する。
 コンピュータの処理能力は、素子の微細化の進化に伴い、近年目覚ましく向上している。コンピュータの基本構成としてノイマン型コンピュータが知られている。ノイマン型コンピュータではストアドプログラム方式、つまりメモリに記憶した命令(プログラム)およびデータを順に実行すること、で情報処理(逐次処理方式)を行う。しかしながら命令の実行による情報処理では、人間精神と同じレベルで学習や推論をすることが難しい。そのため、生体の神経回路網の情報処理方式を見倣ったアプローチである人工ニューラルネットワーク(以下ニューラルネットワークという)が注目されている。
 ニューラルネットワークは入力層、中間層、出力層といった複数の層によって構成される。入力層、中間層、出力層は、それぞれの層で複数のニューロンをもつ。入力層から中間層、および中間層から出力層へは、処理によって得られるデータが出力される。ニューラルネットワークでは、入力層にある複数のニューロンに対してデータを並列で入力し、中間層、出力層の順にデータを処理することで情報処理(並列処理方式)を行う。ニューラルネットワークの情報処理はノイマン型コンピュータを用いるソフトウェア処理にてニューロンの機能を実現できる。しかし入力されるデータ数が増加するにしたがって、複数のニューロンにおける処理をプロセッサが時分割で実行することになり、並列処理方式が難しくなる。そのため、ハードウェアを用いてニューロンを構成し集積回路(ニューラルネットワーク回路)化する構成が提案されている(例えば特許文献1を参照)。
特開2016−219011号公報
 ニューラルネットワーク回路を用いて畳み込みニューラルネットワークのようなデータ処理を行う場合、認識精度を高めるために中間層の層数を増やす、所謂ディープラーニングが有効である。しかしながら深い中間層をハードウェアで構成する場合、回路規模が大きくなるといった虞がある。また回路規模が大きくなると、消費電力が増大する虞がある。
 ニューラルネットワークでは、積和演算が演算の大部分を占める。従ってニューラルネットワーク回路において回路規模の大型化を解消するためには、積和演算を如何に効率よく行うかが重要となる。また同じ回路を用いて異なる処理の積和演算を行う構成とすることで、回路リソースの有効活用を行うかが重要となる。
 本発明の一態様は、新規な構成のニューラルネットワーク回路を提供することを課題の一とする。または本発明の一態様は、回路規模の増大を抑制できる、新規なニューラルネットワーク回路を提供することを課題の一とする。または本発明の一態様は、同じ回路を用いて異なる処理の積和演算を行うことができる、新規なニューラルネットワーク回路を提供することを課題の一とする。
 なお、これらの課題の記載は、他の課題の存在を妨げるものではない。なお、本発明の一態様は、これらの課題の全てを解決する必要はないものとする。なお、これら以外の課題は、明細書、図面、請求項などの記載から、自ずと明らかとなるものであり、明細書、図面、請求項などの記載から、これら以外の課題を抽出することが可能である。
 本発明の一態様は、第1乃至第3の演算回路を有し、第1乃至第3の演算回路はそれぞれ、第1のレジスタ、メモリ、乗算回路、および加算回路を有し、第1のレジスタは、入力データを保持する機能を有し、メモリは、重みデータを記憶する機能を有し、メモリは、入力されるコンテキスト信号の切り替えに応じて異なる重みデータを出力する機能を有し、第1の演算回路が有する乗算回路は、重みデータと入力データとの積に応じた乗算データを出力する機能を有し、第1の演算回路が有する加算回路は、第1の加算データを出力する機能を有し、第1の加算データは、乗算データと、第2の演算回路が有する加算回路が出力する第2の加算データとの和に応じたデータであり、第1の加算データは、第3の演算回路が有する加算回路に出力されるデータであるニューラルネットワーク回路である。
 本発明の一態様において、第1乃至第3の演算回路間にプログラマブルスイッチエレメントを有し、プログラマブルスイッチエレメントは、コンテキスト信号の切り替えによって第1乃至第3の演算回路間の電気的な接続を切り替える機能を有するニューラルネットワーク回路が好ましい。
 本発明の一態様において、メモリはトランジスタを有し、トランジスタは、チャネル形成領域に酸化物半導体を有するトランジスタであるニューラルネットワーク回路が好ましい。
 本発明の一態様において、第1乃至第3の加算データは、畳み込み演算処理または全結合演算処理に用いられるデータであるニューラルネットワーク回路が好ましい。
 本発明の一態様において、第1の演算回路は、第2のレジスタを有し、第2のレジスタは、第1の加算データまたは乗算データを保持する機能を有するニューラルネットワーク回路が好ましい。
 本発明の一態様のニューラルネットワーク回路は、活性化関数処理を行う回路、およびプーリング演算処理を行う回路を有するニューラルネットワーク回路が好ましい。
 本発明の一態様は、第1乃至第3の演算回路を有し、第1の演算回路は、第1のレジスタ、第1のメモリ、第1の乗算回路、および第1の加算回路を有し、第2の演算回路は、第2のレジスタ、第2のメモリ、第2の乗算回路、および第2の加算回路を有し、第3の演算回路は、第3のレジスタ、第3のメモリ、第3の乗算回路、および第3の加算回路を有し、第1乃至第3のレジスタは、それぞれに第1乃至第3の入力データを保持する機能を有し、第1乃至第3のメモリは、それぞれ重みデータを記憶する機能を有し、第1乃至第3のメモリは、それぞれに入力されるコンテキスト信号の切り替えに応じて異なる第1乃至第3の重みデータを出力する機能を有し、第1の乗算回路は、第1の重みデータと第1の入力データとの積に応じた第1の乗算データを出力する機能を有し、第2の乗算回路は、第2の重みデータと第2の入力データとの積に応じた第2の乗算データを出力する機能を有し、第3の乗算回路は、第3の重みデータと第3の入力データとの積に応じた第3の乗算データを出力する機能を有し、第1の加算回路は、第1の加算データを出力する機能を有し、第2の加算回路は、第2の加算データを出力する機能を有し、第3の加算回路は、第3の加算データを出力する機能を有し、第2の加算データは、第2の乗算データと、第1の加算データとの和に応じたデータであり、第1の加算データは、第1の乗算データと、第3の加算データを含むデータであるニューラルネットワーク回路である。
 本発明の一態様において、第1乃至第3の演算回路間にプログラマブルスイッチエレメントを有し、プログラマブルスイッチエレメントは、コンテキスト信号の切り替えによって第1乃至第3の演算回路間の電気的な接続を切り替える機能を有するニューラルネットワーク回路が好ましい。
 本発明の一態様において、第1乃至第3のメモリはそれぞれトランジスタを有し、トランジスタは、チャネル形成領域に酸化物半導体を有するトランジスタであるニューラルネットワーク回路が好ましい。
 本発明の一態様において、第1乃至第3の加算データは、畳み込み演算処理または全結合演算処理に用いられるデータであるニューラルネットワーク回路が好ましい。
 本発明の一態様において、第1の演算回路は、第4のレジスタを有し、第2の演算回路は、第5のレジスタを有し、第3の演算回路は、第6のレジスタを有し、第4のレジスタは、第1の加算データまたは第1の乗算データを保持する機能を有し、第5のレジスタは、第2の加算データまたは第2の乗算データを保持する機能を有し、第6のレジスタは、第3の加算データまたは第3の乗算データを保持する機能を有するニューラルネットワーク回路が好ましい。
 本発明の一態様のニューラルネットワーク回路は、活性化関数処理を行う回路、およびプーリング演算処理を行う回路を有するニューラルネットワーク回路が好ましい。
 なおその他の本発明の一態様については、以下で述べる実施の形態における説明、および図面に記載されている。
 本発明の一態様は、新規な構成のニューラルネットワーク回路を提供することができる。または本発明の一態様は、回路規模の増大を抑制できる、新規なニューラルネットワーク回路を提供することができる。または本発明の一態様は、同じ回路を用いて異なる処理の積和演算を行うことができる、新規なニューラルネットワーク回路を提供することができる。
 なお、これらの効果の記載は、他の効果の存在を妨げるものではない。なお、本発明の一態様は、これらの効果の全てを有する必要はない。なお、これら以外の効果は、明細書、図面、請求項などの記載から、自ずと明らかとなるものであり、明細書、図面、請求項などの記載から、これら以外の効果を抽出することが可能である。
ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワーク回路を説明するためのブロック図。 ニューラルネットワークシステムを組み込んだICの構成例を示す斜視模式図。 A:DOSRAMの構成例を示す機能ブロック図。B:メモリセルアレイの構成例を示す図。C:メモリセルの構成例を示す回路図。 NOSRAMの構成例を示す機能ブロック図。 A−E:メモリセルの構成例を示す回路図。
 以下、実施の形態について図面を参照しながら説明する。但し、実施の形態は多くの異なる態様で実施することが可能であり、趣旨およびその範囲から逸脱することなくその形態および詳細を様々に変更し得ることは当業者であれば容易に理解される。従って、本発明は、以下の実施の形態の記載内容に限定して解釈されるものではない。
 なお本明細書等において、「第1」、「第2」、「第3」という序数詞は、構成要素の混同を避けるために付したものである。従って、構成要素の数を限定するものではない。また、構成要素の順序を限定するものではない。また例えば、本明細書等の実施の形態の一において「第1」に言及された構成要素が、他の実施の形態、あるいは特許請求の範囲において「第2」に言及された構成要素とすることもありうる。また例えば、本明細書等の実施の形態の一において「第1」に言及された構成要素を、他の実施の形態、あるいは特許請求の範囲において省略することもありうる。
 なお図面において、同一の要素または同様な機能を有する要素、同一の材質の要素、あるいは同時に形成される要素等には同一の符号を付す場合があり、その繰り返しの説明は省略する場合がある。
 なお、本明細書においてニューラルネットワークとは、生物の神経回路網を模し、学習によってニューロンどうしの結合強度を決定し、問題解決能力を持たせるモデル全般を指す。ニューラルネットワークは入力層、中間層(隠れ層ともいう)、出力層を有する。ニューラルネットワークのうち、2層以上の中間層を有するものをディープニューラルネットワークと呼称する。ディープニューラルネットワークによる学習を「ディープラーニング」と呼称する。またニューラルネットワークをハードウェアで実行可能な回路をニューラルネットワーク回路という。
 また、本明細書において、ニューラルネットワークについて述べる際に、既にある情報からニューロンとニューロンの結合強度(重み係数とも言う)を決定することを「学習」と呼ぶ場合がある。
 また、本明細書において、学習によって得られた結合強度を用いてニューラルネットワークを構成し、そこから新たな結論を導くことを「推論」と呼ぶ場合がある。
(実施の形態1)
 本実施の形態では、ニューラルネットワークの機能をハードウェアで実現可能なニューラルネットワーク回路の構成について説明する。本発明の一態様であるニューラルネットワーク回路は、積和演算を効率よく行うことができる。そのため、積和演算の頻度が高い畳み込みニューラルネットワークへの応用が非常に有効である。以下、具体的な構成例を示して説明する。なお積和演算は、乗算によって得られたデータ同士を加算して足し合わせる演算である。
 図1は、ニューラルネットワーク回路を備えたデータ処理回路10のブロック図である。データ処理回路10は、インターフェース11、クロック生成回路12、マスターコントローラ13、データドライバ14、ワードドライバ15およびニューラルネットワーク回路20を有する。
 ニューラルネットワーク回路20は、メモリコントローラ21、メモリ22、演算ユニット23、データ入出力回路24、および演算部30を有する。
 演算部30は、レジスタ回路31および積和演算回路40を有する。積和演算回路40は、複数の演算回路50、および加算回路41を有する。なお図1では図示しないが、複数の演算回路間には、当該演算回路間の電気的な接続を切り替えるためのプログラマブルスイッチエレメント(PSE)が設けられる。
 マスターコントローラ13は、データ処理回路10の外部より制御信号control signalを受信し、データ処理回路10の全体を制御する機能を有する。具体的には、データドライバ14およびワードドライバ15の動作制御、メモリコントローラ21の制御、ニューラルネットワーク回路20におけるコンテキスト切り替え等の制御を行う。
 クロック生成回路12は、インターフェース11で受信した基準クロック信号clkをもとに、マスターコントローラ13等の回路動作に用いるクロック信号を生成する。
 インターフェース11は、データ処理回路10の外部から、基準クロック信号clk、データ信号dataを受信する機能を有する。インターフェース11は、送受信に即した信号を変換する機能を有する。インターフェース11としては、LVDS(Low Voltage Differential Signaling)、MIPI(Mobile Industry Processor Interface)などのインターフェースを用いることができる。
 データドライバ14は、演算回路50のメモリに書き込むためのデータ信号を生成する機能を有する。ワードドライバ15は、演算回路50のメモリにデータを書き込むための制御信号(例えばワード信号)を生成する機能を有する。
 積和演算回路40は、積和演算を行う回路である。また、積和演算回路40はマスターコントローラ13の制御により複数種類の演算処理を切り替えることができる。そのため同じ回路リソースを用いながらも、入力データに応じた最適な演算処理を選択して演算することができる。積和演算回路40における演算処理の切り替えについては、図9乃至図26で詳細に説明する。
 インターフェース11を介して入力されたデータ信号dataは、レジスタ回路31で保持される。レジスタ回路31に格納されたデータは、所望のタイミングにて、メモリ22に保存することができる。ニューラルネットワーク回路20における演算途中で得られたデータは、メモリ22に保存することができる。メモリ22は、一例として、SRAM(Static Random Access Memory)を用いることができる。
 レジスタ回路31に格納されたデータは、所望のタイミングにて、ニューラルネットワーク回路20で演算に用いることができる。またレジスタ回路31に格納されたデータは、所望のタイミングにて、演算ユニット23にて、所望の処理を行うことができる。演算ユニット23は、畳み込みニューラルネットワークによる演算処理を行う場合、プーリング演算処理および活性化関数による演算を行う回路である。活性化関数には、例えばシグモイド(sigmoid)関数や、正規化線形関数(Rectified Linear Unit、以下、ReLU)、ハイパボリックタンジェント(tanh)関数、ステップ関数を適用することができる。
 データ入出力回路24は、データ処理回路10での演算によって得られた演算結果をデータ処理回路10の外部にデータoutとして出力する回路である。
 ニューラルネットワーク回路20が有する積和演算回路40の機能について説明する。
 積和演算回路40が有する複数の演算回路50はそれぞれ、入力されるデータを保持するレジスタ回路を有する。また複数の演算回路はそれぞれ、結合強度(重み係数とも言う)に相当する重みデータを記憶するメモリを有する。重みデータは、コンテキストを切り替えるためのコンテキスト信号に応じて切り替えることができる。重みデータを記憶するメモリは、コンテキスト信号をデコードすることで対応する重みデータを出力することができる。積和演算回路40が有する複数の演算回路50はそれぞれ、重みデータと、入力データの積に応じた乗算データを生成する乗算回路を有する。乗算回路では乗算データが得られる。積和演算回路40が有する複数の演算回路50はそれぞれ、加算回路を有する。加算回路は、別の演算回路50で得られたデータに乗算回路で得られた乗算データを加算することで加算データを得ることができる。積和演算回路40が有する複数の演算回路50はそれぞれ、乗算データ、加算データを保持するためのレジスタを有する。当該レジスタに保持されたデータは、所定のタイミングで別の演算回路50に出力される。
 積和演算回路40は、上述した演算回路間でのデータの入出力を切り替えることで、演算回路50毎に異なる重み係数と入力データの積を実行させるとともに、別の演算回路50で得られた加算データと、先に得られた乗算データとを足し合わせることで、積和演算を実行させることができる。そして演算回路50を複数直列に配置し、得られるデータを次々にシフトさせることで膨大な数の積和演算を効率よく行うことができる。演算回路50を有する積和演算回路40では、複数の演算回路50に保持された入力データにおいて、乗算データと加算データを、プロセッサのパイプライン処理のように演算回路50間で同時に処理するとともに、複数の演算回路50間で乗算データおよび加算データをシフトさせることで積和演算を実行することができる。そのため、限られたハードウェアで積和演算による演算処理を行う際、少ない回路リソースで超並列のデータ処理を効率よく実行することができる。
 図2(A)は、積和演算回路40が有する演算回路50の一例を示すためのブロック図である。演算回路は、一例として、入力レジスタ51、メモリ52、乗算回路53、加算回路54、出力レジスタ55Aおよび出力レジスタ55Bを有する。
 入力レジスタ51には、入力信号sinが入力される。入力レジスタ51は、出力信号soutを出力する。入力レジスタ51は、乗算回路53に入力データsdataを出力する。
 メモリ52は、コンテキスト信号contextが入力される。メモリ52は、コンテキストに応じたデータセットを有する。データセットは、積和演算処理に用いる複数の重みデータに相当するデータである。メモリは、コンテキスト信号に応じてコンテキストに応じた複数の重みデータの中から一つの重みデータを重みデータcmoutとして出力する。メモリ52に格納した複数の重みデータは、例えば、畳み込み演算処理で用いるフィルタ数が多い場合などコンテキストを変更しながら演算する際に有効である。コンテキストを変更しながら演算することで、1つの乗算回路を使って様々な条件での乗算を行うことができる。
 乗算回路53は、入力データsdataと重みデータcmoutとの乗算によって乗算データmoutを生成する。乗算データmoutは、加算回路54に出力される。出力レジスタ55Aに保持された乗算データmoutは、別の演算回路50に出力信号out1として出力される。出力レジスタ55Aを介して乗算データmoutを出力する構成とし、乗算を行った次のタイミングで、別の演算回路50に乗算データmoutを送信できる。また、信号の遅延によって演算結果に誤りがあることを防ぐことができる。
 出力信号out1は、別の演算回路50で入力加算データainとして入力される。信号の入出力の切り替えは、演算回路50間にプログラマブルスイッチエレメントを配置することによって実現可能である。当該プログラマブルスイッチエレメントを制御することにより、所望のタイミングにて、所望の配線を接続し、演算回路間の信号の入出力を行うことができる。
 加算回路54は、入力加算データainに乗算データmoutを加算することによって加算データaoutを生成する。加算データaoutは、出力レジスタ55Bに出力される。出力レジスタ55Bに保持された加算データaoutは、別の演算回路50に出力信号out2として出力される。出力レジスタ55Bを介して加算データaoutを出力する構成とすることで、信号の遅延によって演算結果に誤りがあることを防ぐことができる。
 出力信号out2は、別の演算回路50で入力加算データainとして入力される。信号の入出力の切り替えは、演算回路50間にプログラマブルスイッチエレメントを配置することによって実現可能である。当該プログラマブルスイッチエレメントを制御することにより、所望のタイミングにて、所望の配線を接続し、演算回路間の信号の入出力を行うことができる。
 メモリ52は不揮発性メモリを用いる。メモリ52としては、酸化物半導体(Oxide Semiconductor:OS)をチャネル形成領域に有するトランジスタ(OSトランジスタ)を用いたOSメモリが有効である。OSメモリの一例としては、DOSRAMおよびNOSRAMがある。メモリ52を演算回路50毎に設けることで、積和演算回路40外部に設ける場合と比べて、より高速且つ低消費電力に上記重みデータへのアクセス(読み出しおよび書き込み)をすることができる。
 なお、DOSRAM(登録商標)とは、「Dynamic Oxide Semiconductor RAM」の略称であり、1T(トランジスタ)1C(容量)型のメモリセルを有するRAMを指す。DOSRAMは、OSトランジスタのオフ電流が低いことを利用したメモリである。DOSRAMは、OSトランジスタを用いて形成されたDRAMである。DOSRAMは、OSトランジスタを含むメモリセルと、Siトランジスタを含む読み出し回路部を有する。上記メモリセルと読み出し回路部は、積層された異なる層に設けることができるため、DOSRAMは、全体の回路面積を小さくすることができる。なお、DOSRAMの詳細は後述する実施の形態3で説明を行う。
 ニューラルネットワークを用いた大規模並列計算は、入力データ数およびフィルタ数が1000を超えることがある。上記入力データをSRAMに格納する場合、SRAMはバス幅や回路面積に制限があり、記憶容量が小さいため、上記入力データを小分けにして格納せざるを得ない。DOSRAMは、限られた回路面積でも積層することが可能であるため、メモリセルを高集積に配置することが可能である。
 また、NOSRAM(登録商標)とは「Nonvolatile Oxide Semiconductor RAM」の略称であり、ゲインセル型(2T型、3T型)のメモリセルを有するRAMを指す。NOSRAMは、OSトランジスタのオフ電流が低いことを利用したメモリである。
 NOSRAMはOSトランジスタを用いたメモリである。NOSRAMは、フラッシュメモリや、ReRAM(Resistive Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)などの他の不揮発性メモリと比べて、データを書き込む際の消費電力が小さい。また、フラッシュメモリやReRAMのように、データを書き込む際に素子が劣化することもなく、データの書き込み可能回数に制限が無い。また、フラッシュメモリやReRAMのように、素子が劣化することに伴うセル間のばらつきの問題もない。また、フラッシュメモリやReRAMのような2端子のメモリとは異なり、書き込みおよび読み出しのための回路が複雑にならない。なお、NOSRAMの詳細は後述する実施の形態3で説明を行う。
 また、NOSRAMは、1ビットの2値データの他に、2ビット以上の多値データを保持することができる。NOSRAMは多値データを保持することで、1ビット当たりのメモリセル面積を小さくすることができる。また、NOSRAMは、デジタルデータの他にアナログデータを保持することができる。NOSRAMは、アナログデータのまま保持することができるため、D/A変換回路やA/D変換回路が不要である。そのため、NOSRAMは周辺回路の面積を小さくすることができる。
 なお演算回路50は、図2(A)の構成に限らない。図2(B)の構成とすることもできる。図2(B)に図示する演算回路50は、図2(A)の構成において出力レジスタ55A、55Bを統合して出力レジスタ55としている。また、出力レジスタ55と、乗算回路53および加算回路54との間に、切り替え回路56(マルチプレクサともいう)を有する。図2(B)の構成とすることで、加算データaoutまたは乗算データmoutを切り替えて、出力信号outとして出力することができる。
 図3(A)では、図2(A)、(B)で説明した演算回路50のブロック図についてさらに詳細に図示する。図3(A)に示す演算回路50では、図2(A)、(B)で説明した構成に加えて、切り替え回路56A、メモリ回路57A、切り替え回路56Bおよびメモリ回路57Bを図示している。
 切り替え回路56Aは、入力データsdataとして、入力信号sinをそのまま乗算回路53として出力するか、入力レジスタ51に保持されたデータを出力するかを制御するための回路である。メモリ回路57Aは、コンテキスト信号contextの切り替えに応じて、切り替え回路56A内の電気的な接続を切り替える機能を有する。また切り替え回路56Bは、出力信号out1またはout2として、乗算データmout、加算データaout、あるいは入力加算データainを出力するかを制御するための回路である。メモリ回路57Bは、コンテキスト信号contextの切り替えに応じて、切り替え回路56B内の電気的な接続を切り替える機能を有する。
 図3(A)では、入力レジスタ51、出力レジスタ55A、および出力レジスタ55Bを制御するセット信号setおよびリセット信号resetを図示している。セット信号setおよびリセット信号resetによる制御に応じて乗算データmoutまたは加算データaoutなどを所定のタイミングで出力する構成とするができるため、信号の遅延によって演算結果に誤りがあることを防ぐことができる。
 また図3(A)では、メモリ52に保持する重みデータの書き込みを制御するコンフィギュレーションデータconfiguration dataおよびワード信号wordを図示している。コンフィギュレーションデータconfiguration dataおよびワード信号wordを演算回路50毎に別々に制御することで、演算回路50ごとに設定した重みデータを個別に書き換え可能な構成とすることができる。
 図3(B)では、図3(A)で説明した演算回路50のブロック図についてさらに詳細に図示する。図3(B)に示す演算回路50では、図3(A)で説明した構成に加えて、パワースイッチ(PS)58、メモリ回路57Cを図示している。メモリ回路57Cはコンテキスト信号contextの切り替えに応じて、パワースイッチ58のオンまたはオフを切り替えることができる。演算処理に使用しない演算回路50でのパワースイッチ58をオフにできる構成とすることで、多数の演算回路50のうち、使用しない演算回路50に関しては、リーク電流による消費電力を削減することができる。
図4にメモリ回路57Aの構成例を示す。メモリ回路57Aは、メモリセル96_0、96_1、トランジスタ97_0、97_1、98を有する。メモリ回路57Aには、コンフィギュレーションデータ、切替え信号context_A0、context_A1、信号wordA0、wordB0、wordA1、wordB1が入力される。
メモリセル96_0、96_1は、それぞれ、NOSRAMとして機能する2個のメモリ回路で構成される。メモリセル96_0にコンフィギュレーションデータ“1”を書き込む場合は、信号wordA0を“H”にし、信号wordB0、wordA1およびwordB1を“L”にする。メモリセル96_1にコンフィギュレーションデータ“0”を書き込む場合は、信号wordB0を“H”にし、信号wordA0、wordA1、wordB1を“L”にする。
切り替え回路56Aへ制御信号を出力する間は、トランジスタ98はオフ状態である。切替え信号context_A0、context_A1により、トランジスタ97_0、97_1の何れか一方がオン状態になる。例えば、トランジスタ97_0がオンになると、メモリセル96_0の保持データに応じた論理の制御信号が、切り替え回路56Aに出力される。
メモリ回路57B、57Cは、メモリ回路57Aと同じ回路構成をもつ。
 また図5(A)では、図2で説明した演算回路50のブロック図において図示した乗算データmoutを入力データsdataと重みデータcmoutとの乗算で得られるデータであることを明示するため、「sdata*cmout」として図示している。同様に、図5(A)では、図2で説明した演算回路50のブロック図において図示した加算データaoutを入力加算データainに乗算データmoutを加算して得られるデータであることを明示するため、「ain+(sdata*cmout)」として図示している。
 また図5(B)には、演算回路50を略記して図示する場合のシンボルを図示している。図5(B)に図示するように演算回路50に向いた矢印は演算回路50に入力されるデータ、つまり入力信号sin(または入力データsdataでもよい)、入力加算データainを表している。また、図5(B)に図示するように演算回路50から逆に向いた矢印は演算回路50から出力されるデータ、つまり出力信号out1、out2(または乗算データmout、加算データaoutでもよい)、出力信号soutを表している。
 図5(B)での表記について図6乃至図8を用いてさらに詳細に説明する。
 図6(A)は、図5(B)のシンボルとして図示した演算回路50_1乃至50_n(nは2以上の自然数)を水平方向(行方向ともいう)に複数配置する場合を示す図である。また図6(B)は、図6(A)のように配置する場合を、図3(A)に図示した演算回路50の切り替え回路55A、55Bおよび出力レジスタ55A、55Bの構成を簡略化したものを用いて説明する図である。図6(A)、(B)で示す図は、乗算データの生成、および加算データの生成を、複数の演算回路50_1乃至50_n内で並列に処理する場合の動作を表している。
 具体的には演算回路間を入出力されるデータを図6(B)の矢印のように表している。隣接する演算回路、例えば演算回路50_1と演算回路50_2との間では、演算回路50_1が出力する出力データは、演算回路50_2の入力加算データとして入力される。また演算回路50_2と演算回路50_3との間では、演算回路50_2が出力する出力データは、演算回路50_3の入力加算データとして入力される。また演算回路50_1と演算回路50_nとの間では、演算回路50_nが出力する出力データは、演算回路50_1の入力加算データとして入力される。つまり演算回路毎に異なる入力データと異なる重みデータとの乗算データを生成するとともに、前段の演算回路より入力される入力加算データに当該乗算データを加える演算処理を、複数の演算回路50_1乃至50_nで並列に処理することができる。
 また図7(A)は、図5(B)のシンボルとして図示した演算回路50_1乃至50_3を垂直方向(列方向ともいう)に複数配置する場合を示す図である。また図7(B)は、図7(A)のように配置する場合を、図3(A)に図示した演算回路50の切り替え回路55A、55Bおよび出力レジスタ55A、55Bの構成を簡略化したものを用いて説明する図である。図7(A)、(B)で示す図は、各演算回路50_1乃至50_3の入力レジスタ回路への入力データの書き込みを、他の演算回路を介して行う場合の動作を表している。
 具体的には演算回路間を入出力されるデータを図7(B)の矢印のように表している。隣接する演算回路、例えば演算回路50_1と演算回路50_2との間では、演算回路50_1が出力する出力信号soutは、演算回路50_2の入力信号sinとして入力される。また演算回路50_2と演算回路50_3との間では、演算回路50_2が出力する出力信号soutは、演算回路50_3の入力信号sinとして入力される。つまり演算回路を介して電気的に接続された演算回路に信号を入力することができる。
 また図8(A)は、図7(A)と同様に、図5(B)のシンボルとして図示した演算回路50_1乃至50_3を垂直方向(列方向ともいう)に複数配置する場合を示す図である。また図8(B)は、図8(A)のように配置する場合を、図3(A)に図示した演算回路50の切り替え回路55A、55Bおよび出力レジスタ55A、55Bの構成を簡略化したものを用いて説明する図である。図8(A)、(B)で示す図は、図7(A)、(B)で図示した乗算データの生成および加算データの生成による積和演算データの加算回路41への出力を、他の演算回路を介して行う場合の動作を表している。
 具体的には演算回路間を入出力されるデータを図8(B)の矢印のように表している。隣接する演算回路、例えば演算回路50_1と演算回路50_2との間では、演算回路50_1が出力する出力信号out1、out2は、切り替え回路56の切り替えによって加算回路54を介することなく、演算回路50_2の入力加算データ信号ainとして入力される。また演算回路50_2と演算回路50_3との間では、演算回路50_2が出力する出力信号out1、out2は、切り替え回路56の切り替えによって加算回路54を介することなく、演算回路50_3の入力加算データ信号ainとして入力される。つまり演算回路を介して電気的に接続された演算回路に信号を転送することができる。
 次いで図9乃至図26では、上記ニューラルネットワーク回路の動作を説明する。具体的には、畳み込みニューラルネットワークの演算処理を行う際のニューラルネットワーク回路の動作、特に演算回路間での積和演算処理について詳述する。
 まず以下の動作の説明で行う畳み込みニューラルネットワークの演算処理の流れについて説明する。図9(A)には、畳み込みニューラルネットワークの演算処理の流れを示す。
 図9(A)では、入力層61、中間層62(隠れ層ともいう)、出力層63を図示している。入力層61では、入力データの入力処理70(図中、Inputと図示)を図示している。中間層62では、畳み込み演算処理72、73、75(図中、Convと図示)、複数のプーリング演算処理74、76(図中、Pool.と図示)を図示している。出力層63では、全結合演算処理77(図中、Fullと図示)を図示している。入力層61、中間層62、出力層63における演算処理の流れは一例であり、実際の畳み込みニューラルネットワークの演算処理では、ソフトマックス演算などの他の演算処理を行うことがあり得る。
 図9(A)に図示する畳み込みニューラルネットワークを、図1のデータ処理回路10を用いて行う際の演算処理について図9(B)に可視化して図示する。
 図9(B)に図示するように、図1のデータ処理回路10を用いて行う演算処理は、まず入力データ71をフィルタ82と積和演算して畳み込む(畳み込み演算処理72)を行う。
 なお入力データ71は、20(縦方向)×20(横方向)でチャンネル方向(奥行き方向)が1のデータを一例として図示している。図1のデータ処理回路10を用いて行う際の演算処理は、入力データ71としてMNIST(Mixed National Institute of Standards and Technology database:手書きの数字「0乃至9」に正解ラベルが与えられているデータセット)を用いて行う、畳み込みニューラルネットワーク(CNN)を想定している。なお図中、シンボル81は積和演算、ここでは入力データ71とフィルタ82との積和演算を表している。また畳み込み演算処理72を行うためのフィルタ82は、3×3の9つのフィルタ(図中、3×3 Fil.9と図示)で構成され、ストライドは1とする。また、ゼロパディングは行わない。
 入力データ71とフィルタ82との積和演算を行ったデータは、積和演算回路40の外部にある演算ユニット23にて、ReLUによる処理を行うことでデータ84を得る。データ84は、畳み込み演算処理72によって、18×18で9チャンネルのデータとなる。なお図中、シンボル83は活性化関数である正規化線形関数(Rectified Linear Unit)による処理、ここでは積和演算によって得られたデータに対してReLUによる処理を行うことを表している。
 データ84は、フィルタ85と積和演算して畳み込み演算処理73を行う。畳み込み演算処理73を行うためのフィルタ85は、3×3の81のフィルタ(図中、3×3 Fil.81と図示)で構成される。データ84とフィルタ82との積和演算を行ったデータは、積和演算回路40の外部にある演算ユニット23にて、ReLUによる処理を行うことでデータ86を得る。データ86は、畳み込み演算処理73によって、16×16で9チャンネルのデータとなる。
 データ86は、積和演算回路40の外部にある演算ユニット23にて、プーリング演算処理74を行う。プーリング演算処理74では、一例としてmax poolingを行う。プーリング演算処理74は、2×2のサイズのフィルタで行う。プーリング演算処理されたデータをデータ87とする。データ87は、プーリング演算処理74によって、8×8で9チャンネルのデータとなる。
 データ87は、フィルタ88と積和演算して畳み込み演算処理75を行う。畳み込み演算処理75を行うためのフィルタ88は、3×3の81のフィルタ(図中、3×3 Fil.81と図示)で構成される。フィルタ88は入力の各チャンネルに対して、それぞれ9種類のフィルタを有するため、合計81の異なるフィルタとなる。データ87とフィルタ88との積和演算を行ったデータは、積和演算回路40の外部にある演算ユニット23にて、ReLUによる処理を行うことでデータ89を得る。データ89は、畳み込み演算処理75によって、6×6で9チャンネルのデータとなる。
 データ89は、積和演算回路40の外部にある演算ユニット23にて、プーリング演算処理76を行う。プーリング演算処理76では、一例としてmax poolingを行う。プーリング演算処理76は、2×2のサイズのフィルタで行う。プーリング演算処理されたデータをデータ90とする。データ90は、プーリング演算処理76によって、3×3で9チャンネルのデータ、81個のデータとなる。
 データ90は、重みパラメータ91と積和演算して全結合演算処理77を行う。全結合演算処理77を行うための重みパラメータ91は、入力数が81個、出力数は10個であることから、810種類ある。全結合演算処理77したデータをデータ92とする。データ92は、全結合演算処理77によって、10個のデータとなる。
 次いで図10乃至図26を用いて、図1で示した、積和演算回路40を有するデータ処理回路10が図9(B)に図示する演算処理を行う際の動作について説明する。
 図10(A)は、図1でも示した、積和演算回路40を図示している。図10(A)では、畳み込み演算処理72、73および75を行う際に必要な演算回路50をマトリクス状に図示している。また図10(A)は、加算回路41を併せて図示している。
 なお演算回路50間の電気的な接続は、上述したようにプログラマブルスイッチエレメントによって切り替えることができる。図10(B)には、演算回路50間のプログラマブルスイッチエレメントPSEについて図示している。プログラマブルスイッチエレメントPSEは、コンフィギュレーションメモリおよびスイッチを組み合わせて構成すればよい。コンフィギュレーションメモリは、SRAMあるいはOSトランジスタを用いたメモリを用いることができる。OSトランジスタを用いたプログラマブルスイッチエレメントは、トランジスタ等の素子を積層して設けることができるため、集積化の点で有利である。
 次いで図11(A)では、図9(B)で説明した畳み込み演算処理72を抜き出したものである。
 図11(B)は、入力データ71を可視化した図である。D11乃至D1kを行方向(横方向)のデータ、D11乃至Dk1を列方向(縦方向)のデータとして図示している。図11(B)中太線で囲ったデータD11乃至D33(つまり、D11,D12,D13,D21,D22,D23,D31,D32,D33の9つ)は、3×3のフィルタとの間で積和演算を行うデータを表している。
 なお入力データ71に限らず、図9(B)で説明したデータ84、86、87および89等の入力データに畳み込み演算処理を行い得られるデータについても、図11(B)に表す入力データ71と同様に図示することができる。そのためデータ84、86、87および89を、入力データという場合もある。
 また図11(C)は、フィルタ82で用いられるフィルタを可視化した図である。9つのチャンネルは、図11(C)のように3×3のフィルタである、フィルタ82_1乃至82_9(F1乃至F9)で表すことができる。例えばフィルタ82_1は、3×3で重みデータを有する。図11(C)では重みデータw乃至wを図示している。
 なおフィルタ82に限らず、図9(B)で説明したフィルタ85、88および91等のその他の畳み込み演算処理および全結合演算処理等に用いられるフィルタについても、図11(C)に表すフィルタ82と同様に図示することができる。
 図12乃至図15は、図10(A)で示した積和演算回路40による、図11(B)、(C)に示す入力データ71およびフィルタ82を用いた畳み込み演算処理72を行う際の動作を説明するための図である。
 畳み込み演算処理72は、図12(A)に図示するように、図10(A)で示した積和演算回路40における9×9の演算回路50を用いて行う。図12(A)では、演算回路50を縦横に配置するとともに、行(row)方向および列(column)方向を併せて図示している。行方向は、入力データである画像データのシフト(pixel data shift)方向となる。また列方向は、入力データと重みデータとの乗算で得られる乗算データのシフト(multiply data shift)方向となる。
 また図12(A)において、行方向の1行目の演算回路50には、それぞれフィルタF1、つまりフィルタ82_1の重みデータw乃至wを列毎にセットする。例えば1行1列目の演算回路50にw、1行2列目の演算回路50にw、1行3列目の演算回路50にwのように順に重みデータをセットする。セットは、コンテキスト信号によるコンテキストの切り替えで行うことができる。
 次いで、行方向の2行目の演算回路50には、フィルタF2をセットする。同様に行方向の3乃至9行目の演算回路50には、フィルタF3乃至F9の重みデータをセットする。
 コンテキスト「1」で上記の重みデータのセットとなるようにする。1行1列の演算回路50にて、乗算結果であるD11×Wができる。それを順に列方向にシフトしていく。また、1行1列目の入力データD11は、次のタイミングで行方向にシフトさせる。そして1行目と同様に列方向に乗算データをシフトさせる。2行目の演算回路50にはフィルタF2、つまりフィルタ82_2の重みデータがセットされており、フィルタF2の各重みデータと入力データの乗算データが列方向にシフトするようになる。
 2行目以降にも入力データがシフトし、セットされたフィルタF3乃至F9、つまりフィルタ82_3乃至82_9の重みデータと入力データとの乗算データを生成し、列方向にシフトするようにする。1乃至9行目の9列目の演算回路50は、各フィルタ(F1乃至F9)のいずれか一つと入力データの積和演算に相当する出力データが得られる。1乃至9行目の9列目の端子は、out1乃至out9として図示している。
 図12(A)の動作をまとめると、図12(B)のように表すことができる。畳み込み演算処理72を行う際、コンテキストで固定するため、コンテキスト信号contextは1である。時刻T0から開始して、時刻T8以降において、1行目の9列目の演算回路50で3×3の入力データD11乃至D33(図11(B)中太線で囲ったデータ)とフィルタF1との積和演算(In×F1)がout1で得られる。行方向にデータをシフトさせるため、1行目の9列目の演算回路50で3×3の入力データD11乃至D33(図11(B)中太線で囲ったデータ)とフィルタF2乃至F9のいずれか1つとの積和演算がout2乃至out9も得られる。入力データ71は、行方向に入力データD12乃至D14、入力データD22乃至D24、および入力データD22乃至D24(つまり、D12,D13,D14,D22,D23,D24,D32,D33,D34の9つ)としてシフトさせることで、フィルタF1乃至F9との乗算データを入力データ71の全座標との間で得ることができる。
 より具体的な例について図13乃至図15で説明する。
 図13(A)は時刻T0での演算回路50に保持された入力データを可視化した図である。行方向の矢印は、入力データのシフト方向を表している。列方向の矢印は、乗算データのシフト方向を表している。なお図中に付した「BL」は、入力データが入力された演算回路の入力データのシフト方向にある演算回路50を表している。なお図中、空白として図示している演算回路50は、前行の演算回路50からの入力データのシフトがない演算回路50であり、パワーゲーティング可能な演算回路50である。図13(A)に示すように時刻T0では、1行1列目の演算回路50に入力データであるD11が入力される。そして1行1列目の演算回路50では、コンテキスト切り替えによって保持される重みデータwとの乗算データを生成する。
 図13(B)は時刻T1での演算回路50に保持された入力データを可視化した図である。図13(A)に示すように時刻T1では、1行1列目の入力データD11がシフトして2行1列目の演算回路50に入力される。また1行1列目および1行2列目の演算回路50に入力データD12が入力される。そして入力データD12とコンテキスト切り替えによって保持される重みデータwとの乗算データ、入力データD12とコンテキスト切り替えによって保持される重みデータwとの乗算データ、を生成する。同時に入力データD11とフィルタF2の重みデータとの乗算データの生成が行われる。なお時刻T1において、1行2列目の演算回路50では、時刻T0で生成された入力データD11と重みデータwとの乗算データに、時刻T1で得られた入力データD12と重みデータwとの乗算データが加算された加算データが列方向にシフトする。
 図14(A)は時刻T2での演算回路50に保持された入力データを可視化した図である。図14(A)に示すように時刻T2では、2行1列目の入力データD11がシフトして3行1列目の演算回路50に入力される。また1行1列目の入力データD12、および1行2列目の入力データD12がシフトして2行1列目の演算回路50、2行2列目の演算回路50にそれぞれ入力される。また1行1列目、1行2列目、および1行3列目の演算回路50に入力データD13が入力される。そして入力データD13とコンテキスト切り替えによって保持される重みデータwとの乗算データ、入力データD13とコンテキスト切り替えによって保持される重みデータwとの乗算データ、および入力データD13とコンテキスト切り替えによって保持される重みデータwとの乗算データ、を生成する。同時に入力データD11とフィルタF3の重みデータとの乗算データの生成、入力データD12とフィルタF2の重みデータとの乗算データの生成が行われる。なお時刻T2において、1行3列目の演算回路50では、時刻T2で生成された加算データに、時刻T2で得られた入力データD13と重みデータwとの乗算データが加算された加算データが列方向にシフトする。
 図14(B)は時刻T3での演算回路50に保持された入力データを可視化した図である。図14(B)に示すように時刻T3では、3行1列目の入力データD11がシフトして4行1列目の演算回路50に入力される。また2行1列目の入力データD12、および2行2列目の入力データD12がシフトして3行1列目の演算回路50、3行2列目の演算回路50にそれぞれ入力される。また1行1列目のD13、1行2列目の入力データD13、および1行3列目の入力データD13がシフトして2行1列目の演算回路50、2行2列目の演算回路50、2行3列目の演算回路50にそれぞれ入力される。また1行1列目、1行2列目、および1行3列目の演算回路50に入力データである入力データD14が、1行4列目の演算回路50にD21が入力される。そして入力データD14とコンテキスト切り替えによって保持される重みデータwとの乗算データ、入力データD14とコンテキスト切り替えによって保持される重みデータwとの乗算データ、入力データD14とコンテキスト切り替えによって保持される重みデータwとの乗算データ、および入力データD21とコンテキスト切り替えによって保持される重みデータwとの乗算データを生成する。同時に入力データD11とフィルタF4の重みデータとの乗算データの生成、入力データD12とフィルタF3の重みデータとの乗算データ、および入力データD13とフィルタF2の重みデータとの乗算データの生成が行われる。なお時刻T3において、1行4列目の演算回路50では、時刻T3で生成された加算データに、時刻T3で得られた入力データD21とwとの乗算データが加算された加算データが列方向にシフトする。
 時刻T4乃至T7においても入力データのシフトおよび乗算データと加算データとを加算したデータのシフトによって図15(A)に図示する時刻T8の状態となる。
 図15(A)に示す時刻T8では、入力データD11が9行1列目までシフトし、1行9列目に入力データD33が入力され、重みデータwとの乗算データが生成されるともに、1行8列目で生成された積和演算結果である加算データと加算して得られる加算データを生成する。この加算データは、out1から出力される。この加算データは、3×3の入力データD11乃至D33と、フィルタF1の重みデータw乃至wの積和演算、すなわちD11・w+(略)+D33・wである。この演算結果は、図11(B)の太線で囲った入力データと、フィルタF1との積和演算の一部に相当する。
 図15(B)に示す時刻T9では、入力データD12が9行1列目までシフトし、2行9列目に入力データD33が入力され、重みデータwとの乗算データが生成されるともに、1行8列目で生成された積和演算結果である加算データと加算して得られる加算データを生成する。この加算データは、out2から出力される。この加算データは、入力データD11乃至D33とフィルタF2の重みデータの積和演算である。この演算結果は、図11(B)の太線で囲った入力データと、フィルタF2との積和演算に相当する。
 本実施の形態のニューラルネットワーク回路の構成では、各演算回路において乗算データおよび加算データを効率よく生成し、積和演算を効率よく行うことができる。そのため、ニューラルネットワーク回路において入力データおよび重みデータ等の増大に伴って、回路規模の大型化が問題となるが、この問題を解消することができる。つまり、同じ回路を用いて異なる処理の積和演算を行う構成とすることができるため、回路リソースの有効活用を図ることができる。
 図16乃至図21は、図11(B)、(C)に示す各データを用いて図10(A)で示した積和演算回路40による畳み込み演算処理73、75を行う際の動作を説明するための図である。
 図16(A)、(B)は、図9(B)で説明した畳み込み演算処理73、75を抜き出したものである。畳み込み演算処理73、75は、図10で示した積和演算回路40における9×9の演算回路50を用いて行う。図16(C)では、図12(A)と同様に演算回路50を縦横に配置するとともに、行(row)方向および列(column)方向を図示している。列方向は、入力データ(データ84または87に相当)と重みデータ(フィルタ85またはフィルタ88が有する重みデータ)とによって得られる積和演算データのシフト(MAC data shift)方向となる。
 図16(C)において、1列目の演算回路50には入力データD11(以下、D11のように略記)、2列目の演算回路50にはD12といったように入力データを列毎にセットする。この入力データのセットは、1行目からデータをシフトさせて全行に書き込んでセットしておく。その結果図16(C)に図示するように各列にD11乃至D33がセットされる。ただし、演算回路50は、行方向で各入力チャンネルにおける積和演算処理を行うとする。従って、1行目は入力チャンネル1に対応するデータ、2行目は入力チャンネル2に対応するデータとし、9行目は入力チャンネル9に対応するデータとする。また図16(C)において、行方向の1行目の演算回路50には、入力チャンネル1に対して演算するための9種類のフィルタF10乃至F18(以下、F10乃至F18のように略記))の重みデータを列毎にセットする。コンテキストのセット、つまりフィルタのセットと、先にセットされたD11乃至D33との乗算によって乗算データを得て、乗算結果を次列の演算回路50に加算データとして出力して、積和演算を実行する構成とする。例えばコンテキスト2で1行1列目の演算回路50にF10の重みデータ、1行2列目の演算回路50にF11の重みデータ、1行3列目の演算回路50にF12の重みデータのように重みデータをセットする。コンテキスト3以降は演算回路50に対応するフィルタを列方向にシフトさせる。9列目の演算回路50に対応していたフィルタは、1列目に戻る。例えばコンテキスト3で1行1列目の演算回路50にF18の重みデータ、1行2列目の演算回路50にF10の重みデータ、1行3列目の演算回路50にF11の重みデータのように重みデータをセットする。セットした重みデータは、コンテキストの切り替えで別のフィルタの重みデータに切り替えることができる。
 同時に2行目以降の演算回路50でも、フィルタに応じた重みデータをセットする。例えばコンテキスト2で2行1列目の演算回路50にF19の重みデータ、2行2列目の演算回路50にF20の重みデータ、2行3列目の演算回路50にF21の重みデータのように重みデータをセットする。コンテキスト3以降は演算回路50に対応するフィルタを列方向にシフトさせる。9列目の演算回路50に対応していたフィルタは、1列目に戻る。例えばコンテキスト3で2行1列目の演算回路50にF27の重みデータ、2行2列目の演算回路50にF19の重みデータ、2行3列目の演算回路50にF20の重みデータのように重みデータをセットする。セットした重みデータは、コンテキストの切り替えで別のフィルタの重みデータに切り替えることができる。コンテキストの切り替えが、フィルタのシフトを演算回路9列分を一巡りするまで行う。つまりコンテキスト2からコンテキスト10まで切り替える。
 積和演算結果のシフトによって得られた積和演算データは、加算回路41に読み出される。加算回路41では、同じ列での積和演算データを足しあわせる。そして得られるデータを、積和演算回路40の外部にある演算ユニット23にて、ReLUによる処理を行うことで得られるデータが畳み込み演算処理後のデータに相当する。
 上述した図16(C)の動作をまとめると、図16(D)のように表すことができる。畳み込み演算処理73、75を行う際、D11乃至D33と異なるフィルタとの積和演算を実行するため、コンテキスト信号contextを2乃至10に切り替える。時刻Twrite1でD11乃至D33を演算回路50にセットした後、時刻T10乃至T18でコンテキスト信号を2乃至10を切り替える。3×3の入力データであるD11乃至D33と9つのフィルタとの積和演算が各行各列の演算回路50で得られた後、時刻Tread1で加算回路41に読み出し、畳み込み演算処理を行ったデータ(CH1−9 D11−D33)を得る。そして各演算回路50に次の入力データとしてD12乃至D34をセットし(時刻Twrite2)、コンテキスト2乃至10を切り替えて各行において積和演算を実行する。
 より具体的な例について図17乃至図20で説明する。
 図17(A)は時刻Twrite1での演算回路50に保持された入力データを可視化した図である。
 図17(A)に図示するように、各列にD11乃至D33をセットする。なお演算回路50内のメモリ52には、重みデータのセットが書き込まれている。重みデータのセットは、コンテキストの切り替えに対応して切り替えられる。
 図17(B)は時刻T10での演算回路50に保持された入力データを可視化した図である。
 時刻T10では、コンテキスト信号の切り替えにより、コンテキスト「2」として、乗算するためのフィルタを図17(B)に図示するよう演算回路50にセットする。図17(B)において列方向の矢印は、乗算データ、あるいは乗算データに前列の加算データを加算した加算データのシフト方向を表している。同じ行にある演算回路50間に付した「F10」等は、フィルタF10との積和演算するためのフィルタである。演算で得られるデータは、前列の加算データを加算して、データのシフト方向にある演算回路50に加算データとして出力される。
 例えば1行目の演算回路50での動作に着目して説明すると、D11が保持された1列目の演算回路50は、フィルタF10との演算を行う。得られたデータを2列目の演算回路50に出力する。同時に、D12が保持された2列目の演算回路50は、フィルタF11との演算を行う。得られたデータを3列目の演算回路50に出力する。3列目乃至8列目の演算回路50においても、それぞれフィルタF12乃至F17との演算を行い、得られたデータを演算回路50に出力する。同時に、D33が保持された9列目の演算回路50は、フィルタF18との演算を行う。得られたデータを1列目の演算回路50に出力する。2行目以降も保持している入力データとフィルタとの演算を行い、演算回路50に出力する。
 図18(A)は時刻T11での演算回路50に保持された入力データを可視化した図である。
 時刻T11では、コンテキスト信号の切り替えにより、コンテキスト「3」として、乗算するためのフィルタを図18(A)に図示するように演算回路50にセットする。例えば1行目の演算回路50での動作に着目して説明すると、D11が保持された1列目の演算回路50は、フィルタF18との演算を行う。得られたデータを9列目の演算回路50から出力されたデータに加算して2列目の演算回路50に出力する。同時に、D12が保持された2列目の演算回路50は、フィルタF10との演算を行う。得られたデータを1列目の演算回路50から出力されたデータに加算して3列目の演算回路50に出力する。3列目乃至8列目の演算回路50においても、それぞれフィルタF11乃至F16との演算を行い、得られたデータを演算回路50に出力する。同時に、D33が保持された9列目の演算回路50は、フィルタF17との演算を行う。得られたデータを8列目の演算回路50から出力されたデータに加算して1列目の演算回路50に出力する。2行目以降も保持しているデータとフィルタとの演算を行い、演算回路50に出力する。時刻T12乃至時刻T17においても、コンテキスト信号の切り替えにより、コンテキスト「3乃至9」として、下記演算回路50で乗算するための重みデータをセットし、保持している入力データとフィルタとの演算を行い、演算回路50に出力することを行う。
 図18(B)は時刻T18での演算回路50に保持された入力データを可視化した図である。
 時刻T18では、コンテキスト信号の切り替えにより、コンテキスト「10」として、下記演算回路50で乗算するためのフィルタを図18(B)に図示するようにセットする。例えば1行目の演算回路50での動作に着目して説明すると、D11が保持された1列目の演算回路50は、フィルタF11との演算を行う。得られたデータを9列目の演算回路50から出力されたデータに加算して2列目の演算回路50に出力する。ここで2列目の演算回路50に出力されるデータは、1列目、および3乃至9列目の演算回路50で乗算されたデータを加算して得られた積和演算のデータである。同時に、D12が保持された2列目の演算回路50は、フィルタF12との演算を行う。得られたデータを1列目の演算回路50から出力されたデータに加算して3列目の演算回路50に出力する。ここで3列目の演算回路50に出力されるデータは、1列目、2列目、および4乃至9列目の演算回路50で乗算されたデータを加算して得られた積和演算のデータである。3列目乃至8列目の演算回路50においても、それぞれフィルタF13乃至F18との演算を行い、得られたデータを演算回路50に出力する。同時に、D33が保持された9列目の演算回路50は、フィルタF10との演算を行う。得られたデータを8列目の演算回路50から出力されたデータに加算して1列目の演算回路50に出力する。ここで1列目の演算回路50に出力されるデータは、2乃至9列目の演算回路50で乗算されたデータを加算して得られた積和演算のデータである。2行目以降も保持している入力データとフィルタとの積和演算を行い、演算回路50に出力する。つまり時刻T18の状態で各演算回路50には、D11乃至D33と各行の複数のフィルタとの積和演算によるデータが保持されていることになる。
 図19(A)は時刻Tread1での動作を可視化した図である。
 行方向の矢印は、T10乃至T18で得られた積和演算によるデータのシフト方向を表している。図19(A)に示すように時刻Tread1では、1乃至9行目に保持された積和演算によるデータを順に加算回路41にシフトさせて、得られたデータの和を列毎に得る。加算回路41で得られたデータは、積和演算回路40の外部にある演算ユニット23にて、ReLUによる処理を行うことでD11乃至D33に畳み込み演算処理を行ったデータを得る。
 図19(B)は時刻Twrite2での演算回路50に保持された入力データを可視化した図である。
 図19(B)に図示するように、各列にD12乃至D34をセットする。
 図20は時刻T19での演算回路50に保持された入力データを可視化した図である。
 時刻T19では、コンテキスト信号の切り替えにより、コンテキスト「2」として、下記演算回路50で乗算するためのフィルタを図20に図示するようにセットする。例えば1行目の演算回路50での動作に着目して説明すると、D12が保持された1列目の演算回路50は、フィルタF10との演算を行う。得られたデータを2列目の演算回路50に出力する。同時に、D13が保持された2列目の演算回路50は、フィルタF11との演算を行う。得られたデータを3列目の演算回路50に出力する。3列目乃至8列目の演算回路50においても、それぞれフィルタF12乃至F17との演算を行い、得られたデータを演算回路50に出力する。同時に、D34が保持された9列目の演算回路50は、フィルタF18との演算を行う。得られたデータを1列目の演算回路50に出力する。2行目以降も保持している入力データとフィルタとの演算を行い、演算回路50に出力する。
 以降演算回路50に保持する入力データ、コンテキストを切り替えて乗算データを加算していき、畳み込み演算処理に応じた演算を実行する。
 本実施の形態のニューラルネットワーク回路の構成では、各演算回路において乗算データおよび加算データを効率よく生成し、コンテキストの切り替えと組み合わせることで、異なるフィルタを用いた演算処理に基づく積和演算を効率よく行うことができる。そのため、ニューラルネットワーク回路において入力データおよび重みデータ等の増大に伴って、回路規模の大型化が問題となるが、この問題を解消することができる。つまり、同じ回路を用いて異なる処理の積和演算を行う構成とすることができるため、回路リソースの有効活用を図ることができる。
 ここで図16乃至図20で図示して説明した積和演算の演算モデルについて、図21(A)乃至(F)を用いて説明する。
 図21(A)乃至(F)の説明では、異なる4種類の重みデータを有するフィルタ(W11,W12,W13,W14)、(W21,W22,W23,W24)、(W31,W32,W33,W34)、(W41,W42,W43,W44)と、入力データ(I,I,I,I)の積和演算を行う場合について説明する。上記図16乃至図20で説明した演算処理の手法を用いることで、複数の演算回路で得られたデータをループさせながら積和演算を並行して進めることが可能である。
 複数のフィルタによる積和演算(畳み込み演算)は、式(1)に図示するように、行列−ベクトル積で表すことができる。
Figure JPOXMLDOC01-appb-I000001
 Wで構成される4×4の行列は、重みデータ(各行の要素が各フィルタの成分に相当)に相当する。Iで構成される1×4の行列は、入力データに相当する。Y(Y乃至Y)で構成される1×4の行列は、積和演算によって得られるデータに相当する。
 式(1)の行列−ベクトル積は、上述した演算回路50を用いて積和演算を行う演算モデルに当てはめると、図21(A)のように図示することができる。つまり入力データI乃至Iは、各演算回路50_Aの入力データ93として保持される。またフィルタ(W11,W12,W13,W14)、(W21,W22,W23,W24)、(W31,W32,W33,W34)、(W41,W42,W43,W44)の重みデータは、各演算回路50Aのメモリに書き込まれ、コンテキストの切り替えに応じて、異なる重みデータ94_1乃至94_4として用いて乗算データの生成を行うことができる。以下、1クロック(1clk)ごとに演算処理が進むものとして説明する。
 演算回路50_Aに入力データを書き込んで1clk後、重みデータのセットから任意の重みデータがコンテキストの切り替えによって設定される。具体的には、図21(B)に図示する下線を付した重みデータ(W11,W22,W33,W44)が設定され、各演算回路50_Aでは保持している入力データ(I,I,I,I)との乗算データを生成する。各演算回路50_Aでは、入力データ93と重みデータ94_1との乗算データ(W11・I,W22・I,W33・I,W44・I)を生成する。
 次いで図21(B)の状態から1clk後の図21(C)では、図21(B)とは異なるコンテキストの重みデータによって設定される。具体的には、図21(C)に図示する下線を付した重みデータ(W41,W12,W23,W34)が設定され、各演算回路50_Aでは保持している入力データ(I,I,I,I)との乗算データを生成する。各演算回路50_Aでは、入力データ93と重みデータ94_2との乗算データ(W41・I,W12・I,W23・I,W34・I)を生成する。さらに、各演算回路90_Aでは、図21(B)の状態で生成した乗算データ(W11・I,W22・I,W33・I,W44・I)を次列の加算データとして次列の演算回路50_Aに出力する。
 次いで図21(C)の状態から1clk後の図21(D)では、図21(C)とは異なるコンテキストの重みデータによって設定される。具体的には、図21(D)に図示する下線を付した重みデータ(W31,W42,W13,W24)が設定され、各演算回路50_Aでは保持している入力データ(I,I,I,I)との乗算データを生成する。例えば、各演算回路50_Aでは、入力データ93と重みデータ94_3との乗算データ(W31・I,W42・I,W13・I,W24・I)を生成する。さらに、各演算回路90_Aでは、乗算データ(W41・I,W12・I,W23・I,W34・I)を、図21(C)で出力された加算データ(W11・I,W22・I,W33・I,W44・I)に加算した積和演算データ(W12・I+W11・I,W23・I+W22・I,W34・I+W33・I,W41・I+W44・I)を次列の加算データとして次列の演算回路50_Aに出力する。
 次いで図21(D)の状態から1clk後の図21(E)では、図21(D)とは異なるコンテキストの重みデータによって設定される。具体的には、図21(E)に図示する下線を付した重みデータ(W21,W32,W43,W14)が設定され、各演算回路50_Aでは保持している入力データ(I,I,I,I)との乗算データを生成する。例えば、各演算回路50_Aでは、入力データ93と重みデータ94_4との乗算データ(W21・I,W32・I,W43・I,W14・I)を生成する。さらに、各演算回路90_Aでは、乗算データ(W31・I,W42・I,W13・I,W24・I)を、図21(D)で出力された加算データ(W12・I+W11・I,W23・I+W22・I,W34・I+W33・I,W41・I+W44・I)に加算した積和演算データ(W13・I+W12・I+W11・I,W24・I+W23・I+W22・I,W31・I+W34・I+W33・I,W42・I+W41・I+W44・I)を次列の加算データとして次列の演算回路50_Aに出力する。
 次いで図21(D)の状態から1clk後の図21(E)において各演算回路90_Aでは、図21(E)で出力された加算データ(W13・I+W12・I+W11・I,W24・I+W23・I+W22・I,W31・I+W34・I+W33・I,W42・I+W41・I+W44・I)に乗算データ(W31・I,W42・I,W13・I,W24・I)を加算した積和演算データが得られる。図21(F)に示すように、各演算回路では、積和演算データ95_2(W21・I+W24・I+W23・I+W22・I,W31・I)、積和演算データ95_3(W32・I+W31・I+W34・I+W33・I)、積和演算データ95_4(W43・I+W42・I+W41・I+W44・I)、積和演算データ95_1(W14・I+W13・I+W12・I+W11・I)を得ることができる。得られた積和演算データは、行列−ベクトル積で表したY(Y乃至Y)に相当する。
 図21(A)乃至(F)の構成では、演算途中で外部メモリへのデータアクセスが必要なく、また、全ての演算回路でデータの受け渡しを並列に行いながら積和演算データを効率よく得ることができる。そのため、ニューラルネットワーク回路において入力データおよび重みデータ等の増大に伴って、回路規模の大型化が問題となるが、この問題を解消することができる。
 次いで図22乃至図26は、図11(B)、(C)に示す各データを用いて図10で示した積和演算回路40による全結合演算処理77を行う際の動作を説明するための図である。
 図22(A)は、図9(B)で説明した全結合演算処理77を抜き出したものである。また図22(B)では、全結合演算処理77ではデータ90の81個のデータが、判定するラベルの数、ここではチャンネル数が10のデータ92となる畳み込み演算処理を説明するための図である。
 図22(B)では、データ92の一つのラベルに対して、81個のデータのそれぞれに対して重みパラメータとの積和演算を行い、さらに得られた値を足し合わせる演算処理を行う様子を図示している。全結合演算処理では、フィルタを用いないが、前述した畳み込み演算処理の回路リソースを利用して全結合演算処理を行うため、畳み込み演算処理と類似の回路規模にて演算を行う。従って、81個の入力データを9個ずつに分割し積和演算を行うことが有効である。また、9個の入力データ毎に積和演算を行うが、入力データの番号1乃至9(図22(B)中、データ90に付した番号)までの9個のデータと、出力データの番号1(図22(B)中、データ92に付した番号)との間で行われる積和演算に用いる重みパラメータ群をF91と呼ぶ。また、入力データの番号1乃至9までの9個のデータと、出力データの番号2乃至10(図22(B)中、データ92に付した番号)との間で行われる積和演算に用いる重みパラメータ群をそれぞれ、F92乃至F100と呼ぶ。同様にして、入力データの番号10乃至18(図22(B)中、データ90に付した番号)までの9個のデータと、出力データの番号1乃至10(図22(B)中、データ92に付した番号)との間で行われる積和演算に用いる重みパラメータ群をそれぞれ、F101乃至F110、F111乃至F120、F121乃至F130、F131乃至F140、F141乃至F150、F151乃至F160、F161乃至F170、F171乃至F180とする。
 図22(A)、(B)に示す全結合演算処理77は、図10で示した積和演算回路40における9×10の演算回路50を用いて行う。図23(A)では、9×10の演算回路50を縦横に配置するとともに、行(row)方向および列(column)方向を図示している。列方向は、入力データと重みデータとによって得られる積和演算データのシフト(MAC data shift)方向となる。また図23(A)では、加算回路41を図示している。
 図23(A)において、各演算回路50には、データ90の81個のデータを別々にセットする。つまり図23(A)において、9行目の各列の演算回路50にはデータ「1」乃至「9」、8行目の各列の演算回路50には「10」乃至「18」といったようにデータをセットする。各行の10列目の演算回路50にはデータをセットしない(「0」をセットするでもよい)。つまり、乗算データがゼロで、入力される加算データへの加算分もゼロである。
 また図23(A)において、行方向の1行目の演算回路50には、それぞれF171乃至F180の重みデータ群を列毎にセットする。同様に図23(A)において、行方向の2行目の演算回路50には、それぞれF161乃至F170の重みデータ群を列毎にセットする。3行目以降の演算回路50においても、それぞれF161乃至F170の重みデータ群を列毎にセットする。10列目の演算回路50は、ブランクデータとしてデータ、フィルタともにデータを与えない。
 なおF91乃至F180は、図22(B)に図示するように、全結合演算処理を行う際に1つのチャンネルにつき9つの重みデータ群(例えば、<F91、F101、(略)、F171>、<F92、F102、(略)、F172<、<F100、F110、(略)、F180>)が必要になる。図23(A)の構成では、複数の重みデータ群を用いて積和演算を行い、あとで得られたデータを加算することで全結合演算処理を行う構成とする。少ない演算回路数で、超並列の全結合演算処理を効率よく行うことができる。
 例えばコンテキスト「11」で1行1列目の演算回路50にF171の重みデータ、1行2列目の演算回路50にF172の重みデータ、1行3列目の演算回路50にF173の重みデータのように重みデータ群をセットする。1行9列目の演算回路50にはF179の重みデータのように重みデータ群をセットし、1行10列目にはデータおよび重みデータ群をセットしないが、F180を対応させておく。コンテキスト「12」以降は演算回路50に対応する重みデータ群を列方向にシフトさせる。10列目の演算回路50に対応していた重みデータ群は、1列目に戻る。例えばコンテキスト「12」で1行1列目の演算回路50にF180の重みデータ、1行2列目の演算回路50にF171の重みデータ、1行3列目の演算回路50にF172の重みデータのように重みデータ群をセットする。1行9列目の演算回路50にはF178の重みデータのように重みデータ群をセットし、1行10列目にはデータおよび重みデータ群をセットしないが、F179を対応させておく。
 セットした重みデータは、コンテキストの切り替えで別の重みデータ群の重みデータに切り替えることができる。コンテキストの切り替えは、演算回路10列分を重みデータ群のシフトが一巡りするまで行う。つまりコンテキストをコンテキスト「11」から「20」に順に切り替える。
 演算結果のデータをシフトすることによって得られた積和演算データは、加算回路41に読み出される。加算回路41では、同じ列での積和演算データを足しあわせる。そして得られるデータが全結合演算処理後のデータに相当する。
 上述した図23(A)の動作をまとめると、図23(B)のように表すことができる。
 全結合演算処理77を行う際、81個のデータ「1」乃至「81」と異なる重みデータ群との積和演算を実行するため、コンテキスト信号contextはコンテキストをコンテキスト「11」から「20」に順に切り替える。時刻Twrite3でデータ「1」乃至「81」を演算回路50にセットした後、時刻T20乃至T29でコンテキストをコンテキスト「11」から「20」に順に切り替える。81個のデータ「1」乃至「81」と9つの重みデータ群との積和演算がそれぞれの演算回路50で得られた後、時刻Tread2で加算回路41に読み出し、積和演算処理を行ったデータ(CH10 1×1)を得る。
 より具体的な例について図24乃至図26で説明する。
 図24(A)は時刻Twrite3での演算回路50に保持された入力データを可視化した図である。図24(A)に図示するように、各行各列の演算回路50に81個のデータ「1」乃至「81」をセットする。各行10列目の演算回路50には、空のデータとして「0」を図示している。なお演算回路50内のメモリ52には、重みデータのセットが書き込まれている。重みデータのセットは、コンテキストの切り替えに対応して切り替えられる。
 図24(B)は時刻T20での演算回路50に保持されたデータを可視化した図である。時刻T20では、コンテキスト信号の切り替えにより、コンテキスト「11」として、下記演算回路50で乗算するための重みデータ群を図24(B)に図示するようにセットする。列方向の矢印は、乗算データ、あるいは乗算データに前列の加算データを加算した加算データのシフト方向を表している。同じ行にある演算回路50間に付した「F171」等は、F171との積和演算するための重みデータ群である。演算で得られるデータは、前列の加算データを加算して、データのシフト方向にある演算回路50に加算データとして出力される。
 例えば1行目の演算回路50での動作に着目して説明すると、データ「73」が保持された1列目の演算回路50は、F171との演算を行う。得られたデータを10列目の演算回路50から出力されたデータ(この場合0)に加算して2列目の演算回路50に出力する。同時に、データ「74」が保持された2列目の演算回路50は、F172との演算を行う。得られたデータを1列目の演算回路50から出力されたデータに加算して3列目の演算回路50に出力する。3列目乃至8列目の演算回路50においても、それぞれデータとF173乃至F178との演算を行い、得られたデータを演算回路50に出力する。同時に、データ「81」が保持された9列目の演算回路50は、F179との演算を行う。得られたデータを8列目の演算回路50から出力されたデータに加算して10列目の演算回路50に出力する。同時に、データが保持されていない10列目の演算回路50は、空のデータであるため乗算データが得られない。つまり10列目の演算回路50から出力される加算データは、9列目の演算回路50から出力された加算データのままとなる。
 図25(A)は時刻T21での演算回路50に保持された入力データを可視化した図である。時刻T21では、コンテキスト信号の切り替えにより、コンテキスト「12」として、下記演算回路50で乗算するための重みデータ群を図25(A)に図示するようにセットする。
 例えば1行目の演算回路50での動作に着目して説明すると、データ「73」が保持された1列目の演算回路50は、F180との演算を行う。得られたデータを10列目の演算回路50から出力されたデータ(この場合0)に加算して2列目の演算回路50に出力する。同時に、データ「74」が保持された2列目の演算回路50は、F171との演算を行う。得られたデータを1列目の演算回路50から出力されたデータ(この場合、時刻T21で行ったデータ「73」とF171の乗算データ)に加算して3列目の演算回路50に出力する。3列目乃至8列目の演算回路50においても、それぞれデータとF172乃至F177との演算を行い、得られたデータを演算回路50に出力する。同時に、データ「81」が保持された9列目の演算回路50は、F178との演算を行う。得られたデータを8列目の演算回路50から出力されたデータ(この場合、時刻T21で行ったデータ「80」とF178の乗算データ)に加算して10列目の演算回路50に出力する。同時に、データが保持されていない10列目の演算回路50は、空のデータであるため乗算データが得られない。つまり10列目の演算回路50から出力されるデータは、9列目の演算回路50から出力されたデータ(この場合、時刻T21で行ったデータ「81」とF179の乗算データ)のままとなる。
 時刻T22乃至時刻T28においても、コンテキスト信号の切り替えにより、コンテキスト「13」乃至「19」として、下記演算回路50で乗算するための重みデータをセットし、保持しているデータと重みデータ群との演算を行い、演算回路50に出力することを行う。
 図25(B)は時刻T29での演算回路50に保持された入力データを可視化した図である。時刻T29では、コンテキスト信号の切り替えにより、コンテキスト「20」として、下記演算回路50で乗算するための重みデータ群を図25(B)に図示するようにセットする。
 例えば1行目の演算回路50での動作に着目して説明すると、データ「73」が保持された1列目の演算回路50は、F172との演算を行う。得られたデータを10列目の演算回路50から出力されたデータ(この場合データ「74」乃至「81」とF171、F173乃至F180との組み合わせの積和演算)に加算して2列目の演算回路50に出力する。同時に、データ「74」が保持された2列目の演算回路50は、F173との演算を行う。得られたデータを1列目の演算回路50から出力されたデータ(この場合、データ「73」、データ「75」乃至「81」とF171、F172、F174乃至F180との組み合わせの積和演算)に加算して3列目の演算回路50に出力する。3列目乃至8列目の演算回路50においても、それぞれデータと、F174乃至F178との演算を行い、得られたデータを演算回路50に出力する。同時に、データ「81」が保持された9列目の演算回路50は、F180との演算を行う。得られたデータを8列目の演算回路50から出力されたデータ(この場合、データ「73」乃至「80」とF171乃至F179との組み合わせの積和演算)に加算して10列目の演算回路50に出力する。同時に、データが保持されていない10列目の演算回路50は、空のデータであるため乗算データが得られない。つまり10列目の演算回路50から出力されるデータは、9列目の演算回路50から出力されたデータ(この場合、データ「73」乃至「81」とF171乃至F179との組み合わせの積和演算)のままとなる。
 2行目乃至9列目の演算回路50においても、それぞれF91乃至F170との演算を行い、得られたデータを演算回路50に出力する。つまり時刻T29の状態で各演算回路50には、各行に保持したデータと、各行に保持してコンテキスト信号を切り替えることで得られた重みデータ群との積和演算の結果が保持されていることになる。
 図26は時刻Tread2での動作を可視化した図である。行方向の矢印は、T20乃至T29で得られた積和演算によるデータのシフト方向を表している。図26に示すように時刻Tread2では、1乃至9行目に保持された積和演算によるデータを順に加算回路41にシフトさせて、得られたデータの和を列毎に得る。得られたデータは積和演算回路40の外部にある演算ユニット23にて、ReLUによる処理を行うことで全結合したデータを得る。
 本実施の形態のニューラルネットワーク回路の構成では、入力されるデータの構成、およびフィルタおよび重みデータ群の構成等に応じて動作を切り替えることで、各演算回路において乗算データおよび加算データを効率よく生成し、積和演算を効率よく行うことができる。そのため、ニューラルネットワーク回路において入力データおよび重みデータ等の増大に伴って、回路規模の大型化が問題となるが、この問題を解消することができる。つまり、同じ回路を用いて異なる処理の積和演算を行う構成とすることができるため、回路リソースの有効活用を図ることができる。
(実施の形態2)
 本実施の形態は、上記実施の形態に示すニューラルネットワーク回路が組み込まれたIC(ニューラルネットワークシステムIC)の一例を示す。
 上記実施の形態に示すニューラルネットワーク回路は、Siトランジスタでなる乗算回路および加算回路を有する演算回路50と、OSトランジスタを用いたメモリ回路と、1のダイに集積することができる。
 図27に、ニューラルネットワーク回路を組み込んだICの一例を示す。図27に示すニューラルネットワークシステムIC7000は、リード7001及び回路部7003を有する。回路部7003には、上記実施の形態で示した各種の回路が1のダイに設けられている。回路部7003は積層構造をもち、Siトランジスタ層7031、配線層7032、OSトランジスタ層7033に大別される。OSトランジスタ層7033をSiトランジスタ層7031に積層して設けることができるため、ニューラルネットワークシステムIC7000の小型化が容易である。
 図27では、ニューラルネットワークシステムIC7000のパッケージにQFP(Quad Flat Package)を適用しているが、パッケージの態様はこれに限定されない。
 Siトランジスタでなる演算回路50と、OSトランジスタを有するメモリ回路は、全て、Siトランジスタ層7031、配線層7032およびOSトランジスタ層7033に形成することができる。すなわち、上記ニューラルネットワーク回路を構成する素子は、同一の製造プロセスで形成することが可能である。そのため、本実施の形態に示すICは、構成する素子が増えても製造プロセスを増やす必要がなく、上記ニューラルネットワーク回路を低コストで組み込むことができる。
(実施の形態3)
 本実施の形態では、上記実施の形態に示すニューラルネットワーク回路のメモリ回路に搭載可能なOSメモリについて説明する。本実施の形態では、OSメモリの一例として、DOSRAMおよびNOSRAMについて説明する。
<<DOSRAM1400>>
 図28(A)−図28(C)を参照して、DOSRAMについて説明する。
 図28(A)に示すDOSRAM1400は、コントローラ1405、行回路1410、列回路1415、MC−SAアレイ1420を有する。行回路1410はデコーダ1411、ワード線ドライバ1412、列セレクタ1413、センスアンプドライバ1414を有する。列回路1415はグローバルセンスアンプアレイ1416、入出力回路1417を有する。グローバルセンスアンプアレイ1416は複数のグローバルセンスアンプ1447を有する。MC−SAアレイ1420はメモリセルアレイ1422、センスアンプアレイ1423、グローバルビット線GBLL、GBLRを有する。
<MC−SAアレイ1420>
 MC−SAアレイ1420は、メモリセルアレイ1422をセンスアンプアレイ1423上に積層した積層構造をもつ。グローバルビット線GBLL、GBLRはメモリセルアレイ1422上に積層されている。DOSRAM1400では、ビット線の構造に、ローカルビット線とグローバルビット線とで階層化された階層ビット線構造が採用されている。
 メモリセルアレイ1422は、N個(Nは2以上の整数)のローカルメモリセルアレイ1425<0>−425<N−1>を有する。図28(B)に示すように、ローカルメモリセルアレイ1425は、複数のメモリセル1445、複数のワード線WL、複数のビット線BLL、BLRを有する。図28(B)の例では、ローカルメモリセルアレイ1425の構造はオープンビット線型であるが、フォールデッドビット線型であってもよい。
 図28(A)に示すメモリセル1445は、OSトランジスタMO45、容量素子C45を有する。OSトランジスタMO45は容量素子C45の充放電を制御する機能をもつ。OSトランジスタMO45のゲートはワード線に電気的に接続され、バックゲートは配線BGLに電気的に接続され、第1端子はビット線BLLまたはBLRに電気的に接続され、第2端子は容量素子C45の第1端子に電気的に接続されている。容量素子C45の第2端子は配線PCLに電気的に接続されている。配線CSL、BGLは電圧を供給するための電源線である。
 配線BGLの電圧によって、OSトランジスタMO45の閾値電圧を変更することができる。例えば、端子B2の電圧は固定電圧(例えば、負の定電圧)であってもよいし、DOSRAM1400の動作に応じて、端子B2の電圧を変化させてもよい。
 OSトランジスタMO45のバックゲートをOSトランジスタMO45のゲート、ソース、またはドレインに電気的に接続してもよい。あるいは、OSトランジスタMO45にバックゲートを設けなくてもよい。
 センスアンプアレイ1423は、N個のローカルセンスアンプアレイ1426<0>−426<N−1>を有する。ローカルセンスアンプアレイ1426は、1のスイッチアレイ1444、複数のセンスアンプ1446を有する。センスアンプ1446には、ビット線対が電気的に接続されている。センスアンプ1446は、ビット線対をプリチャージする機能、ビット線対の電圧差を増幅する機能、この電圧差を保持する機能を有する。スイッチアレイ1444は、ビット線対を選択し、選択したビット線対とグローバルビット線対と間を導通状態にする機能を有する。
 ここで、ビット線対とは、センスアンプによって、同時に比較される2本のビット線のことをいう。グローバルビット線対とは、グローバルセンスアンプによって、同時に比較される2本のグローバルビット線のことをいう。ビット線対を一対のビット線と呼ぶことができ、グローバルビット線対を一対のグローバルビット線と呼ぶことができる。ここでは、ビット線BLLとビット線BLRが1組のビット線対を成す。グローバルビット線GBLLとグローバルビット線GBLRとが1組のグローバルビット線対をなす。以下、ビット線対(BLL,BLR)、グローバルビット線対(GBLL,GBLR)とも表す。
<コントローラ1405>
 コントローラ1405は、DOSRAM1400の動作全般を制御する機能を有する。コントローラ1405は、外部からの入力されるコマンド信号を論理演算して、動作モードを決定する機能、決定した動作モードが実行されるように、行回路1410および列回路1415の制御信号を生成する機能、外部から入力されるアドレス信号を保持する機能、内部アドレス信号を生成する機能を有する。
<行回路1410>
 行回路1410は、MC−SAアレイ1420を駆動する機能を有する。デコーダ1411はアドレス信号をデコードする機能を有する。ワード線ドライバ1412は、アクセス対象行のワード線WLを選択する選択信号を生成する。
 列セレクタ1413、センスアンプドライバ1414はセンスアンプアレイ1423を駆動するための回路である。列セレクタ1413は、アクセス対象列のビット線を選択するための選択信号を生成する機能をもつ。列セレクタ1413の選択信号によって、各ローカルセンスアンプアレイ1426のスイッチアレイ1444が制御される。センスアンプドライバ1414の制御信号によって、複数のローカルセンスアンプアレイ1426は独立して駆動される。
<列回路1415>
 列回路1415は、データ信号WDA[31:0]の入力を制御する機能、データ信号RDA[31:0]の出力を制御する機能を有する。データ信号WDA[31:0]は書き込みデータ信号であり、データ信号RDA[31:0]は読み出しデータ信号である。
 グローバルセンスアンプ1447はグローバルビット線対(GBLL,GBLR)に電気的に接続されている。グローバルセンスアンプ1447はグローバルビット線対(GBLL,GBLR)間の電圧差を増幅する機能、この電圧差を保持する機能を有する。グローバルビット線対(GBLL,GBLR)へのデータの書き込み、および読み出しは、入出力回路1417によって行われる。
 DOSRAM1400の書き込み動作の概要を説明する。入出力回路1417によって、データがグローバルビット線対に書き込まれる。グローバルビット線対のデータは、グローバルセンスアンプアレイ1416によって保持される。アドレスが指定するローカルセンスアンプアレイ1426のスイッチアレイ1444によって、グローバルビット線対のデータが、対象列のビット線対に書き込まれる。ローカルセンスアンプアレイ1426は、書き込まれたデータを増幅し、保持する。指定されたローカルメモリセルアレイ1425において、行回路1410によって、対象行のワード線WLが選択され、選択行のメモリセル1445にローカルセンスアンプアレイ1426の保持データが書き込まれる。
 DOSRAM1400の読み出し動作の概要を説明する。アドレス信号によって、ローカルメモリセルアレイ1425の1行が指定される。指定されたローカルメモリセルアレイ1425において、対象行のワード線WLが選択状態となり、メモリセル1445のデータがビット線に書き込まれる。ローカルセンスアンプアレイ1426によって、各列のビット線対の電圧差がデータとして検出され、かつ保持される。スイッチアレイ1444によって、ローカルセンスアンプアレイ1426の保持データの内、アドレスが指定する列のデータが、グローバルビット線対に書き込まれる。グローバルセンスアンプアレイ1416は、グローバルビット線対のデータを検出し、保持する。グローバルセンスアンプアレイ1416の保持データは入出力回路1417に出力される。以上で、読み出し動作が完了する。
 容量素子C45の充放電によってデータを書き換えるため、DOSRAM1400は原理的には書き換え回数に制約はなく、かつ、低エネルギーで、データの書き込みおよび読み出しが可能である。また、メモリセル1445の回路構成が単純であるため、大容量化が容易である。よって、DOSRAM1400は大容量のデータを高頻度で書き換えるメモリ装置、例えば、画像処理に利用されるフレームメモリに好適である。
 OSトランジスタMO45はOSトランジスタである。OSトランジスタはオフ電流が極めて小さいため、容量素子C45から電荷がリークすることを抑えることができるので、DOSRAM1400は保持時間がDRAMに比べて非常に長いため、リフレッシュレート頻度を低減できる。従って、DOSRAM1400はフレッシュ動作に要する電力を削減できる。
 MC−SAアレイ1420が積層構造であることよって、ローカルセンスアンプアレイ1426の長さと同程度の長さにビット線を短くすることができる。ビット線を短くすることで、ビット線容量が小さくなり、メモリセル1445の保持容量を低減することができる。また、ローカルセンスアンプアレイ1426にスイッチアレイ1444を設けることで、長いビット線の本数を減らすことができる。以上の理由から、DOSRAM1400のアクセス時に駆動する負荷が低減される。
 以上のことから、DOSRAM1400を上記実施の形態に示すメモリ52に用いることで、ニューラルネットワークシステムの消費電力を低減することができる。
<<NOSRAM>>
 図29および図30を参照してNOSRAMについて説明する。ここでは、1のメモリセルで多値データを記憶する多値NOSRAMについて説明する。
 図29に示すNOSRAM1600は、メモリセルアレイ1610、コントローラ1640、行ドライバ1650、列ドライバ1660、出力ドライバ1670を有する。
 メモリセルアレイ1610は複数のメモリセル1611、複数のワード線WWL、RWL、ビット線BL、ソース線SLを有する。ワード線WWLは書き込みワード線であり、ワード線RWLは読み出しワード線である。NOSRAM1600では、1のメモリセル1611で3ビット(8値)のデータを記憶する。
 コントローラ1640は、NOSRAM1600全体を統括的に制御し、データWDA[31:0]の書き込み、データRDA[31:0]の読み出しを行う。コントローラ1640は、外部からのコマンド信号(例えば、チップイネーブル信号、書き込みイネーブル信号など)を処理して、行ドライバ1650、列ドライバ1660および出力ドライバ1670の制御信号を生成する。
 行ドライバ1650は、アクセスする行を選択する機能を有する。行ドライバ1650は、行デコーダ1651、およびワード線ドライバ1652を有する。
 列ドライバ1660は、ソース線SLおよびビット線BLを駆動する。列ドライバ1660は、列デコーダ1661、書き込みドライバ1662、DAC(デジタル−アナログ変換回路)1663を有する。
 DAC1663は3ビットのデジタルデータをアナログ電圧に変換する。DAC1663は32ビットのデータWDA[31:0]を3ビットごとに、アナログ電圧に変換する。
 書き込みドライバ1662は、ソース線SLをプリチャージする機能、ソース線SLを電気的に浮遊状態にする機能、ソース線SLを選択する機能、選択されたソース線SLにDAC1663で生成した書き込み電圧を入力する機能、ビット線BLをプリチャージする機能、ビット線BLを電気的に浮遊状態にする機能等を有する。
 出力ドライバ1670は、セレクタ1671、ADC(アナログ−デジタル変換回路)1672、出力バッファ1673を有する。セレクタ1671は、アクセスするソース線SLを選択し、選択されたソース線SLの電圧をADC1672に送信する。ADC1672は、アナログ電圧を3ビットのデジタルデータに変換する機能を持つ。ソース線SLの電圧はADC1672において、3ビットのデータに変換され、出力バッファ1673はADC1672から出力されるデータを保持する。
<メモリセル>
 図30(A)はメモリセル1611の構成例を示す回路図である。メモリセル1611は2T型のゲインセルであり、メモリセル161はワード線WWL、RWL、ビット線BL、ソース線SL、配線BGLに電気的に接続されている。メモリセル1611は、ノードSN、OSトランジスタMO61、トランジスタMP61、容量素子C61を有する。OSトランジスタMO61は書き込みトランジスタである。トランジスタMP61は読み出しトランジスタであり、例えばpチャネル型Siトランジスタで構成される。容量素子C61はノードSNの電圧を保持するための保持容量である。ノードSNはデータの保持ノードであり、ここではトランジスタMP61のゲートに相当する。
 メモリセル1611の書き込みトランジスタがOSトランジスタMO61で構成されているため、NOSRAM1600は長時間データを保持することが可能である。
 図30(A)の例では、ビット線は、書き込みと読み出しで共通のビット線であるが、図30(B)に示すように、書き込みビット線WBLと、読み出しビット線RBLとを設けてもよい。
 図30(C)−図30(E)にメモリセルの他の構成例を示す。図30(C)−図30(E)には、書き込み用ビット線と読み出し用ビット線を設けた例を示しているが、図30(A)のように書き込みと読み出しで共有されるビット線を設けてもよい。
 図30(C)に示すメモリセル1612は、メモリセル1611の変形例であり、読み出しトランジスタをnチャネル型トランジスタ(MN61)に変更したものである。トランジスタMN61はOSトランジスタであってもよいし、Siトランジスタであってもよい。
 メモリセル1611、1612において、OSトランジスタMO61はバックゲートの無いOSトランジスタであってもよい。
 図30(D)に示すメモリセル1613は、3T型ゲインセルであり、ワード線WWL、RWL、ビット線WBL、RBL、ソース線SL、配線BGL、PCLに電気的に接続されている。メモリセル1613は、ノードSN、OSトランジスタMO62、トランジスタMP62、トランジスタMP63、容量素子C62を有する。OSトランジスタMO62は書き込みトランジスタである。トランジスタMP62は読み出しトランジスタであり、トランジスタMP63は選択トランジスタである。
 図30(E)に示すメモリセル1614は、メモリセル1613の変形例であり、読み出しトランジスタおよび選択トランジスタをnチャネル型トランジスタ(MN62、MN63)に変更したものである。トランジスタMN62、MN63はOSトランジスタであってもよいし、Siトランジスタであってもよい。
 メモリセル1611−1614に設けられるOSトランジスタは、バックゲートの無いトランジスタでもよいし、バックゲートが有るトランジスタであってもよい。
 容量素子C61の充放電によってデータを書き換えるため、NOSRAM1600は原理的には書き換え回数に制約はなく、かつ、低エネルギーで、データの書き込みおよび読み出しが可能である。また、長時間データを保持することが可能であるので、リフレッシュ頻度を低減できる。よって、DOSRAM1400は大容量のデータを高頻度で書き換えるメモリ装置、例えば、画像処理に利用されるフレームメモリに好適である。
 NOSRAM1600を上記実施の形態に示すメモリ52に用いることで、ニューラルネットワーク回路の消費電力を低減することができる。
(本明細書等の記載に関する付記)
 以上の実施の形態、及び実施の形態における各構成の説明について、以下に付記する。
 各実施の形態に示す構成は、他の実施の形態に示す構成と適宜組み合わせて、本発明の一態様とすることができる。また、1つの実施の形態の中に、複数の構成例が示される場合は、互いに構成例を適宜組み合わせることが可能である。
 なお、ある一つの実施の形態の中で述べる内容(一部の内容でもよい)は、その実施の形態で述べる別の内容(一部の内容でもよい)、及び/又は、一つ若しくは複数の別の実施の形態で述べる内容(一部の内容でもよい)に対して、適用、組み合わせ、又は置き換えなどを行うことが出来る。
 なお、実施の形態の中で述べる内容とは、各々の実施の形態において、様々な図を用いて述べる内容、又は明細書に記載される文章を用いて述べる内容のことである。
 なお、ある一つの実施の形態において述べる図(一部でもよい)は、その図の別の部分、その実施の形態において述べる別の図(一部でもよい)、及び/又は、一つ若しくは複数の別の実施の形態において述べる図(一部でもよい)に対して、組み合わせることにより、さらに多くの図を構成させることが出来る。
 また本明細書等において、ブロック図では、構成要素を機能毎に分類し、互いに独立したブロックとして示している。しかしながら実際の回路等においては、構成要素を機能毎に切り分けることが難しく、一つの回路に複数の機能が係わる場合や、複数の回路にわたって一つの機能が関わる場合があり得る。そのため、ブロック図のブロックは、明細書で説明した構成要素に限定されず、状況に応じて適切に言い換えることができる。
 また、図面において、大きさ、層の厚さ、又は領域は、説明の便宜上任意の大きさに示したものである。よって、必ずしもそのスケールに限定されない。なお図面は明確性を期すために模式的に示したものであり、図面に示す形状又は値などに限定されない。例えば、ノイズによる信号、電圧、若しくは電流のばらつき、又は、タイミングのずれによる信号、電圧、若しくは電流のばらつきなどを含むことが可能である。
 本明細書等において、トランジスタの接続関係を説明する際、ソースとドレインとの一方を、「ソース又はドレインの一方」(又は第1電極、又は第1端子)と表記し、ソースとドレインとの他方を「ソース又はドレインの他方」(又は第2電極、又は第2端子)と表記している。これは、トランジスタのソースとドレインは、トランジスタの構造又は動作条件等によって変わるためである。なおトランジスタのソースとドレインの呼称については、ソース(ドレイン)端子や、ソース(ドレイン)電極等、状況に応じて適切に言い換えることができる。
 また、本明細書等において「電極」や「配線」の用語は、これらの構成要素を機能的に限定するものではない。例えば、「電極」は「配線」の一部として用いられることがあり、その逆もまた同様である。さらに、「電極」や「配線」の用語は、複数の「電極」や「配線」が一体となって形成されている場合なども含む。
 また、本明細書等において、電圧と電位は、適宜言い換えることができる。電圧は、基準となる電位からの電位差のことであり、例えば基準となる電位をグラウンド電圧(接地電圧)とすると、電圧を電位に言い換えることができる。グラウンド電位は必ずしも0Vを意味するとは限らない。なお電位は相対的なものであり、基準となる電位によっては、配線等に与える電位を変化させる場合がある。
 なお本明細書等において、「膜」、「層」などの語句は、場合によっては、または、状況に応じて、互いに入れ替えることが可能である。例えば、「導電層」という用語を、「導電膜」という用語に変更することが可能な場合がある。または、例えば、「絶縁膜」という用語を、「絶縁層」という用語に変更することが可能な場合がある。
 本明細書等において、スイッチとは、導通状態(オン状態)、または、非導通状態(オフ状態)になり、電流を流すか流さないかを制御する機能を有するものをいう。または、スイッチとは、電流を流す経路を選択して切り替える機能を有するものをいう。
 一例としては、電気的スイッチ又は機械的なスイッチなどを用いることができる。つまり、スイッチは、電流を制御できるものであればよく、特定のものに限定されない。
 電気的なスイッチの一例としては、トランジスタ(例えば、バイポーラトランジスタ、MOSトランジスタなど)、ダイオード(例えば、PNダイオード、PINダイオード、ショットキーダイオード、MIM(Metal Insulator Metal)ダイオード、MIS(Metal Insulator Semiconductor)ダイオード、ダイオード接続のトランジスタなど)、又はこれらを組み合わせた論理回路などがある。
 なお、スイッチとしてトランジスタを用いる場合、トランジスタの「導通状態」とは、トランジスタのソースとドレインが電気的に短絡されているとみなせる状態をいう。また、トランジスタの「非導通状態」とは、トランジスタのソースとドレインが電気的に遮断されているとみなせる状態をいう。なおトランジスタを単なるスイッチとして動作させる場合には、トランジスタの極性(導電型)は特に限定されない。
 機械的なスイッチの一例としては、デジタルマイクロミラーデバイス(DMD)のように、MEMS(マイクロ・エレクトロ・メカニカル・システム)技術を用いたスイッチがある。そのスイッチは、機械的に動かすことが可能な電極を有し、その電極が動くことによって、導通と非導通とを制御して動作する。
 本明細書等において、チャネル長とは、例えば、トランジスタの上面図において、半導体(またはトランジスタがオン状態のときに半導体の中で電流の流れる部分)とゲートとが重なる領域、またはチャネルが形成される領域における、ソースとドレインとの間の距離をいう。
 本明細書等において、チャネル幅とは、例えば、半導体(またはトランジスタがオン状態のときに半導体の中で電流の流れる部分)とゲート電極とが重なる領域、またはチャネルが形成される領域における、ソースとドレインとが向かい合っている部分の長さをいう。
 本明細書等において、AとBとが接続されている、とは、AとBとが直接接続されているものの他、電気的に接続されているものを含むものとする。ここで、AとBとが電気的に接続されているとは、AとBとの間で、何らかの電気的作用を有する対象物が存在するとき、AとBとの電気信号の授受を可能とするものをいう。
 C45 容量素子
C61 容量素子
C62 容量素子
MN61 トランジスタ
MN62 トランジスタ
MO45 OSトランジスタ
MO61 OSトランジスタ
MO62 OSトランジスタ
MP61 トランジスタ
MP62 トランジスタ
MP63 トランジスタ
T0 時刻
T1 時刻
T2 時刻
T3 時刻
T4 時刻
T7 時刻
T8 時刻
T10 時刻
T11 時刻
T12 時刻
T17 時刻
T18 時刻
T19 時刻
T20 時刻
T21 時刻
T22 時刻
T28 時刻
T29 時刻
write2 時刻
10 データ処理回路
11 インターフェース
12 クロック生成回路
13 マスターコントローラ
14 データドライバ
15 ワードドライバ
20 ニューラルネットワーク回路
21 メモリコントローラ
22 メモリ
23 演算ユニット
24 データ入出力回路
30 演算部
31 レジスタ回路
40 積和演算回路
41 加算回路
50 演算回路
50_A 演算回路
50_n 演算回路
50_1 演算回路
50_2 演算回路
50_3 演算回路
50A 演算回路
51 入力レジスタ
52 メモリ
53 乗算回路
54 加算回路
55A 出力レジスタ
55B 出力レジスタ
56A 切り替え回路
56B 切り替え回路
57A メモリ素子
57B メモリ素子
57C メモリ素子
58 パワースイッチ
61 入力層
62 中間層
63 出力層
70 入力処理
71 入力データ
72 演算処理
73 演算処理
74 プーリング演算処理
75 演算処理
76 プーリング演算処理
77 全結合演算処理
81 フィルタ
82 フィルタ
82_1 フィルタ
82_2 フィルタ
82_3 フィルタ
82_9 フィルタ
83 シンボル
84 データ
85 フィルタ
86 データ
87 データ
88 フィルタ
89 データ
90 データ
90_A 演算回路
91 フィルタ
92 データ
93 入力データ
94_1 データ
94_2 データ
94_3 データ
94_4 データ
95_1 積和演算データ
95_2 積和演算データ
95_3 積和演算データ
95_4 積和演算データ
96 メモリセル
97 トランジスタ
98 トランジスタ
161 メモリセル
1400 DOSRAM
1405 コントローラ
1410 行回路
1411 デコーダ
1412 ワード線ドライバ
1413 列セレクタ
1414 センスアンプドライバ
1415 列回路
1416 グローバルセンスアンプアレイ
1417 入出力回路
1420 MC−SAアレイ
1422 メモリセルアレイ
1423 センスアンプアレイ
1425 ローカルメモリセルアレイ
1426 ローカルセンスアンプアレイ
1444 スイッチアレイ
1445 メモリセル
1446 センスアンプ
1447 グローバルセンスアンプ
1600 NOSRAM
1610 メモリセルアレイ
1611 メモリセル
1611−1614 メモリセル
1612 メモリセル
1613 メモリセル
1614 メモリセル
1640 コントローラ
1650 行ドライバ
1651 行デコーダ
1652 ワード線ドライバ
1660 列ドライバ
1661 列デコーダ
1662 ドライバ
1663 DAC
1670 出力ドライバ
1671 セレクタ
1672 ADC
1673 出力バッファ
7000 ニューラルネットワークシステムIC
7001 リード
7003 回路部
7031 Siトランジスタ層
7032 配線層
7033 OSトランジスタ層

Claims (12)

  1.  第1乃至第3の演算回路を有し、
     前記第1乃至第3の演算回路はそれぞれ、第1のレジスタ、メモリ、乗算回路、および加算回路を有し、
     前記第1のレジスタは、入力データを保持する機能を有し、
     前記メモリは、重みデータを記憶する機能を有し、
     前記メモリは、入力されるコンテキスト信号の切り替えに応じて異なる重みデータを出力する機能を有し、
     前記第1の演算回路が有する乗算回路は、前記重みデータと前記入力データとの積に応じた乗算データを出力する機能を有し、
     前記第1の演算回路が有する加算回路は、第1の加算データを出力する機能を有し、
     前記第1の加算データは、前記乗算データと、前記第2の演算回路が有する加算回路が出力する第2の加算データとの和に応じたデータであり、
     前記第1の加算データは、前記第3の演算回路が有する加算回路に出力されるデータである、ことを特徴とするニューラルネットワーク回路。
  2.  請求項1において、
     前記第1の演算回路と前記第2の演算回路との間、および前記第2の演算回路と前記第3の演算回路との間にプログラマブルスイッチエレメントを有し、
     前記プログラマブルスイッチエレメントは、前記コンテキスト信号の切り替えによって前記第1乃至第3の演算回路間の電気的な接続を切り替える機能を有することを特徴とするニューラルネットワーク回路。
  3.  請求項1において、
     前記メモリはトランジスタを有し、
     前記トランジスタは、チャネル形成領域に酸化物半導体を有するトランジスタであることを特徴とするニューラルネットワーク回路。
  4.  請求項1において、
     前記第1乃至第3の加算データは、畳み込み演算処理または全結合演算処理に用いられるデータであることを特徴とするニューラルネットワーク回路。
  5.  請求項1において、
     前記第1の演算回路は、第2のレジスタを有し、
     前記第2のレジスタは、前記第1の加算データまたは前記乗算データを保持する機能を有することを特徴とするニューラルネットワーク回路。
  6.  請求項1に記載の前記ニューラルネットワーク回路は、
     活性化関数処理を行う回路、およびプーリング演算処理を行う回路を有することを特徴とするニューラルネットワーク回路。
  7.  第1乃至第3の演算回路を有し、
     前記第1の演算回路は、第1のレジスタ、第1のメモリ、第1の乗算回路、および第1の加算回路を有し、
     前記第2の演算回路は、第2のレジスタ、第2のメモリ、第2の乗算回路、および第2の加算回路を有し、
     前記第3の演算回路は、第3のレジスタ、第3のメモリ、第3の乗算回路、および第3の加算回路を有し、
     前記第1乃至第3のレジスタは、それぞれに第1乃至第3の入力データを保持する機能を有し、
     前記第1乃至第3のメモリは、それぞれ重みデータを記憶する機能を有し、
     前記第1乃至第3のメモリは、それぞれに入力されるコンテキスト信号の切り替えに応じて異なる第1乃至第3の重みデータを出力する機能を有し、
     前記第1の乗算回路は、前記第1の重みデータと前記第1の入力データとの積に応じた第1の乗算データを出力する機能を有し、
     前記第2の乗算回路は、前記第2の重みデータと前記第2の入力データとの積に応じた第2の乗算データを出力する機能を有し、
     前記第3の乗算回路は、前記第3の重みデータと前記第3の入力データとの積に応じた第3の乗算データを出力する機能を有し、
     前記第1の加算回路は、第1の加算データを出力する機能を有し、
     前記第2の加算回路は、第2の加算データを出力する機能を有し、
     前記第3の加算回路は、第3の加算データを出力する機能を有し、
     前記第2の加算データは、前記第2の乗算データと、前記第1の加算データとの和に応じたデータであり、
     前記第1の加算データは、前記第1の乗算データと、前記第3の加算データを含むデータであることを特徴とするニューラルネットワーク回路。
  8.  請求項7において、
     前記第1乃至第3の演算回路間にプログラマブルスイッチエレメントを有し、
     前記プログラマブルスイッチエレメントは、前記コンテキスト信号の切り替えによって前記第1乃至第3の演算回路間の電気的な接続を切り替える機能を有することを特徴とするニューラルネットワーク回路。
  9.  請求項7において、
     前記第1乃至第3のメモリはそれぞれトランジスタを有し、
     前記トランジスタは、チャネル形成領域に酸化物半導体を有するトランジスタであることを特徴とするニューラルネットワーク回路。
  10.  請求項7において、
     前記第1乃至第3の加算データは、畳み込み演算処理または全結合演算処理に用いられるデータであることを特徴とするニューラルネットワーク回路。
  11.  請求項7において、
     前記第1の演算回路は、第4のレジスタを有し、
     前記第2の演算回路は、第5のレジスタを有し、
     前記第3の演算回路は、第6のレジスタを有し、
     前記第4のレジスタは、前記第1の加算データまたは前記第1の乗算データを保持する機能を有し、
     前記第5のレジスタは、前記第2の加算データまたは前記第2の乗算データを保持する機能を有し、
     前記第6のレジスタは、前記第3の加算データまたは前記第3の乗算データを保持する機能を有することを特徴とするニューラルネットワーク回路。
  12.  請求項7に記載の前記ニューラルネットワーク回路は、
     活性化関数処理を行う回路、およびプーリング演算処理を行う回路を有することを特徴とするニューラルネットワーク回路。
PCT/IB2018/052250 2017-04-14 2018-04-02 ニューラルネットワーク回路 WO2018189620A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/604,363 US11568223B2 (en) 2017-04-14 2018-04-02 Neural network circuit
JP2019512042A JP7173709B2 (ja) 2017-04-14 2018-04-02 ニューラルネットワーク回路

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017-080355 2017-04-14
JP2017080355 2017-04-14

Publications (1)

Publication Number Publication Date
WO2018189620A1 true WO2018189620A1 (ja) 2018-10-18

Family

ID=63793227

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2018/052250 WO2018189620A1 (ja) 2017-04-14 2018-04-02 ニューラルネットワーク回路

Country Status (3)

Country Link
US (1) US11568223B2 (ja)
JP (1) JP7173709B2 (ja)
WO (1) WO2018189620A1 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200048750A (ko) * 2018-10-30 2020-05-08 성균관대학교산학협력단 머신러닝 가속기 및 그의 행렬 연산 방법
CN111353122A (zh) * 2018-12-24 2020-06-30 旺宏电子股份有限公司 可做内乘积运算的存储器储存装置及其操作方法
CN111581141A (zh) * 2019-02-19 2020-08-25 旺宏电子股份有限公司 存储器装置及其操作方法
CN112114775A (zh) * 2019-06-21 2020-12-22 旺宏电子股份有限公司 立体存储器阵列装置与乘积累加方法
CN112115078A (zh) * 2019-06-19 2020-12-22 铠侠股份有限公司 存储系统、存储控制器及半导体存储装置
WO2021009586A1 (ja) * 2019-07-12 2021-01-21 株式会社半導体エネルギー研究所 積和演算回路と記憶装置を有する半導体装置、電子部品、および電子機器
WO2021079235A1 (ja) * 2019-10-25 2021-04-29 株式会社半導体エネルギー研究所 演算回路、半導体装置、及び電子機器
WO2021165779A1 (ja) * 2020-02-21 2021-08-26 株式会社半導体エネルギー研究所 半導体装置
WO2022265044A1 (ja) * 2021-06-18 2022-12-22 国立大学法人東北大学 演算処理装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020165685A1 (ja) 2019-02-15 2020-08-20 株式会社半導体エネルギー研究所 半導体装置、及び電子機器
JP7027371B2 (ja) * 2019-06-03 2022-03-01 株式会社東芝 ニューラルネットワークの演算装置、ニューラルネットワーク、ニューラルネットワークの制御方法
US11521658B2 (en) * 2019-06-25 2022-12-06 Sandisk Technologies Llc Binary weighted voltage encoding scheme for supporting multi-bit input precision
CN111627479B (zh) * 2020-05-29 2022-05-27 北京大学 编码型闪存装置、系统和编码方法
CN112181895B (zh) * 2020-09-02 2023-06-06 上海交通大学 可重构架构、加速器、电路部署和计算数据流方法
CN114330694A (zh) * 2021-12-31 2022-04-12 上海集成电路装备材料产业创新中心有限公司 实现卷积运算的电路及其方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0652132A (ja) * 1992-07-28 1994-02-25 Mitsubishi Electric Corp 並列演算半導体集積回路装置およびそれを用いたシステム
JPH06274459A (ja) * 1993-03-17 1994-09-30 Hitachi Ltd 半導体集積回路装置
JP2010134697A (ja) * 2008-12-04 2010-06-17 Canon Inc コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
JP2016219011A (ja) * 2015-05-21 2016-12-22 株式会社半導体エネルギー研究所 電子装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10331997B2 (en) 2014-05-07 2019-06-25 Seagate Technology Llc Adaptive configuration of a neural network device
US10489116B1 (en) * 2014-07-09 2019-11-26 Altera Corporation Programmable integrated circuits with multiplexer and register pipelining circuitry
US10228911B2 (en) * 2015-10-08 2019-03-12 Via Alliance Semiconductor Co., Ltd. Apparatus employing user-specified binary point fixed point arithmetic
US10528321B2 (en) * 2016-12-07 2020-01-07 Microsoft Technology Licensing, Llc Block floating point for neural network implementations
JP6794854B2 (ja) * 2017-02-02 2020-12-02 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10175944B2 (en) * 2017-04-12 2019-01-08 Intel Corporation Mixed-precision floating-point arithmetic circuitry in specialized processing blocks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0652132A (ja) * 1992-07-28 1994-02-25 Mitsubishi Electric Corp 並列演算半導体集積回路装置およびそれを用いたシステム
JPH06274459A (ja) * 1993-03-17 1994-09-30 Hitachi Ltd 半導体集積回路装置
JP2010134697A (ja) * 2008-12-04 2010-06-17 Canon Inc コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
JP2016219011A (ja) * 2015-05-21 2016-12-22 株式会社半導体エネルギー研究所 電子装置

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200048750A (ko) * 2018-10-30 2020-05-08 성균관대학교산학협력단 머신러닝 가속기 및 그의 행렬 연산 방법
KR102191428B1 (ko) 2018-10-30 2020-12-15 성균관대학교산학협력단 머신러닝 가속기 및 그의 행렬 연산 방법
CN111353122A (zh) * 2018-12-24 2020-06-30 旺宏电子股份有限公司 可做内乘积运算的存储器储存装置及其操作方法
CN111353122B (zh) * 2018-12-24 2023-04-07 旺宏电子股份有限公司 可做内乘积运算的存储器储存装置及其操作方法
CN111581141A (zh) * 2019-02-19 2020-08-25 旺宏电子股份有限公司 存储器装置及其操作方法
TWI768277B (zh) * 2019-06-19 2022-06-21 日商鎧俠股份有限公司 記憶體系統、記憶體控制器及非揮發性半導體記憶體
CN112115078A (zh) * 2019-06-19 2020-12-22 铠侠股份有限公司 存储系统、存储控制器及半导体存储装置
CN112115078B (zh) * 2019-06-19 2024-04-05 铠侠股份有限公司 存储系统、存储控制器及半导体存储装置
CN112114775A (zh) * 2019-06-21 2020-12-22 旺宏电子股份有限公司 立体存储器阵列装置与乘积累加方法
CN112114775B (zh) * 2019-06-21 2024-04-09 旺宏电子股份有限公司 立体存储器阵列装置与乘积累加方法
WO2021009586A1 (ja) * 2019-07-12 2021-01-21 株式会社半導体エネルギー研究所 積和演算回路と記憶装置を有する半導体装置、電子部品、および電子機器
WO2021079235A1 (ja) * 2019-10-25 2021-04-29 株式会社半導体エネルギー研究所 演算回路、半導体装置、及び電子機器
WO2021165779A1 (ja) * 2020-02-21 2021-08-26 株式会社半導体エネルギー研究所 半導体装置
WO2022265044A1 (ja) * 2021-06-18 2022-12-22 国立大学法人東北大学 演算処理装置

Also Published As

Publication number Publication date
US11568223B2 (en) 2023-01-31
US20200160158A1 (en) 2020-05-21
JP7173709B2 (ja) 2022-11-16
JPWO2018189620A1 (ja) 2020-02-27

Similar Documents

Publication Publication Date Title
WO2018189620A1 (ja) ニューラルネットワーク回路
US11061646B2 (en) Compute in memory circuits with multi-Vdd arrays and/or analog multipliers
US10748603B2 (en) In-memory multiply and accumulate with global charge-sharing
US20230039948A1 (en) Methods for reading data from a storage buffer including delaying activation of a column select
CN110875076A (zh) 具有自旋轨道转矩设备的内容可寻址存储器
US10956813B2 (en) Compute-in-memory circuit having a multi-level read wire with isolated voltage distributions
CN111652363A (zh) 存算一体电路
KR102182217B1 (ko) 디램 기반 프로세싱 유닛
CN113467751B (zh) 一种基于磁性随机存储器的模拟域存内计算阵列结构
KR20210059815A (ko) 메모리 기반의 뉴로모픽 장치
CN110729011B (zh) 用于类神经网路的存储器内运算装置
Zhang et al. The application of non-volatile look-up-table operations based on multilevel-cell of resistance switching random access memory
CN116126779A (zh) 一种9t存算电路、乘累加运算电路、存内运算电路及芯片
JP2018129046A (ja) Aiシステム
US20170169869A1 (en) Nonvolatile random access memory including control circuit configured to receive commands at high and low edges of one clock cycle
CN108154227B (zh) 一种使用模拟计算的神经网络芯片
CN108154226B (zh) 一种使用模拟计算的神经网络芯片
Lalchhandama et al. In-memory computing on resistive ram systems using majority operation
JP2007213747A (ja) 強誘電体キャパシタを用いた演算処理回路および演算方法
US20210158870A1 (en) Dynamic digital perceptron
KR102555621B1 (ko) 메모리 내의 컴퓨팅 회로 및 방법
CN114974337A (zh) 一种基于自旋磁随机存储器的时间域存内计算电路
Dhakad et al. In-Memory Computing with 6T SRAM for Multi-operator Logic Design
CN113724764B (zh) 基于非易失存储器的乘法装置
JP2023153736A (ja) メモリシステム及びメモリシステムの操作方法

Legal Events

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

Ref document number: 18783888

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2019512042

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18783888

Country of ref document: EP

Kind code of ref document: A1