WO2022029825A1 - 演算回路及びai処理モジュール - Google Patents

演算回路及びai処理モジュール Download PDF

Info

Publication number
WO2022029825A1
WO2022029825A1 PCT/JP2020/029639 JP2020029639W WO2022029825A1 WO 2022029825 A1 WO2022029825 A1 WO 2022029825A1 JP 2020029639 W JP2020029639 W JP 2020029639W WO 2022029825 A1 WO2022029825 A1 WO 2022029825A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
calculation
processing
data
arithmetic
Prior art date
Application number
PCT/JP2020/029639
Other languages
English (en)
French (fr)
Inventor
昌一 後藤
幸嗣 小畑
勝 笹子
雅通 中川
寛之 後明
Original Assignee
パナソニックIpマネジメント株式会社
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 パナソニックIpマネジメント株式会社 filed Critical パナソニックIpマネジメント株式会社
Priority to PCT/JP2020/029639 priority Critical patent/WO2022029825A1/ja
Publication of WO2022029825A1 publication Critical patent/WO2022029825A1/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

Definitions

  • This disclosure relates to an arithmetic circuit and an AI processing module.
  • Patent Document 1 discloses a semiconductor device capable of efficiently performing a product-sum operation performed by a convolutional neural network.
  • a convolutional neural network includes a plurality of layers such as a convolutional layer and a pooling layer. For example, in the convolution layer, the convolution operation is executed, and the corresponding arithmetic processing is performed in each layer (layer).
  • the above-mentioned conventional semiconductor device requires a memory for passing data between each layer.
  • the memory capacity of the memory increases depending on the circuit scale of the arithmetic circuit that executes the arithmetic of each layer. As the memory capacity increases, the access time to the memory also increases, so it is difficult to speed up the processing.
  • the present disclosure provides an arithmetic circuit and an AI processing module capable of executing AI processing at high speed.
  • the arithmetic circuit is an arithmetic circuit that performs AI (Artificial Intelligence) processing, and the input data is sequentially read and read in a first processing unit from a first memory for storing input data.
  • the first calculation unit that performs the first calculation included in the AI processing for the data
  • the second memory for storing the calculation result data that is the result of the first calculation for the input data
  • the calculation result data is sequentially read from the memory in the second processing unit, and the read data is provided with a second calculation unit that performs the second calculation included in the AI processing, and the second calculation unit is described.
  • the second operation is started before the first operation on the input data is completed.
  • the AI processing module includes a plurality of arithmetic circuits according to the above aspect, and the plurality of arithmetic circuits are arranged in a tile shape or a layer shape.
  • AI processing can be executed at high speed.
  • FIG. 1 is a block diagram showing a configuration of an arithmetic circuit according to an embodiment.
  • FIG. 2 is a diagram showing processing of a conventional arithmetic circuit.
  • FIG. 3 is a diagram showing processing by the arithmetic circuit according to the embodiment.
  • FIG. 4 is a schematic perspective view showing the AI processing module according to the embodiment.
  • FIG. 5 is a block diagram showing a configuration of a system chip included in the AI processing module according to the embodiment.
  • FIG. 6 is a plan view showing an example of the plan layout of the arithmetic die included in the AI processing module according to the embodiment.
  • FIG. 7 is a block diagram showing a configuration of an AI processing block included in the arithmetic die according to the embodiment.
  • FIG. 8 is a block diagram showing a configuration of a calculation unit of the AI processing block according to the embodiment.
  • FIG. 9 is a plan view showing another example of the plan layout of the arithmetic die included in the AI processing module according to the
  • the arithmetic circuit is an arithmetic circuit that performs AI processing, and the input data is sequentially read from a first memory for storing input data in a first processing unit, and the read data is obtained.
  • a first calculation unit that performs the first calculation included in the AI process
  • a second memory for storing calculation result data that is the result of the first calculation for the input data, and the calculation from the second memory.
  • the result data is sequentially read in the second processing unit, and the read data is provided with a second calculation unit that performs the second calculation included in the AI processing, and the second calculation unit is the said with respect to the input data.
  • the second operation is started before the first operation is completed.
  • the second calculation is started before the first calculation for the input data is completed, so that the calculation circuit can execute the AI process at high speed. Further, since it is not necessary to store all of the calculation result data corresponding to the input data and only the data necessary for the second calculation needs to be stored in the second memory, the memory capacity of the second memory may be small. .. Therefore, since a small and high-speed accessible memory can be used as the second memory, the arithmetic circuit can execute the AI process at a higher speed.
  • At least one of the first calculation unit and the second calculation unit may include a product-sum calculation circuit that performs a convolution calculation as the first calculation or the second calculation.
  • the arithmetic circuit can execute the AI process at high speed. For example, in the case of processing a plurality of layers in a convolutional neural network, the arithmetic circuit can start processing of the next layer before the processing of one layer is completed.
  • multiplication may be performed in logarithmic representation.
  • the multiplication included in the product-sum calculation can be performed by adding the logarithmic representation, so that the product-sum calculation circuit can be realized with a simple circuit configuration.
  • the product-sum calculation circuit may perform addition after converting the multiplication result performed in logarithmic expression into a real number.
  • the second calculation unit may perform the second calculation every time the data for the second processing unit among the calculation result data is stored in the second memory.
  • the second calculation can be performed every time the data required for the second calculation is prepared, so that the memory capacity of the second memory can be further reduced.
  • the memory capacity of the second memory may be equal to or larger than the data capacity of the second processing unit and smaller than the data capacity of the calculation result data corresponding to the input data.
  • a small and high-speed accessible memory can be used as the second memory, so that the arithmetic circuit can execute the AI process at a higher speed.
  • the arithmetic circuit includes the first memory, and the memory capacity of the first memory is equal to or larger than the data capacity of the first processing unit and the data capacity of the input data. May be smaller than.
  • a small and high-speed accessible memory can be used as the first memory, so that the arithmetic circuit can execute the AI process at a higher speed.
  • the AI processing module includes a plurality of arithmetic circuits according to the above aspect, and the plurality of arithmetic circuits are arranged in a tile shape or a layer shape.
  • each figure is a schematic diagram and is not necessarily exactly illustrated. Therefore, for example, the scales and the like do not always match in each figure. Further, in each figure, substantially the same configuration is designated by the same reference numeral, and duplicate description will be omitted or simplified.
  • the terms “upper” and “lower” do not refer to the upward direction (vertically upward) and the downward direction (vertically downward) in absolute spatial recognition, but are based on the stacking order in the laminated configuration. It is used as a term defined by the relative positional relationship. Also, the terms “upper” and “lower” are used not only when the two components are spaced apart from each other and another component exists between the two components, but also when the two components are present. It also applies when the two components are placed in close contact with each other and touch each other.
  • FIG. 1 is a block diagram showing a configuration of an arithmetic circuit 1 according to the present embodiment.
  • the arithmetic circuit 1 executes AI processing.
  • AI processing is various arithmetic processing for utilizing artificial intelligence, and is used for, for example, natural language processing, voice recognition processing, image recognition processing and recommendation, and control processing of various devices.
  • AI processing includes, for example, machine learning or deep learning.
  • the AI process includes, for example, a plurality of operations performed at each layer of the convolutional neural network.
  • the plurality of operations include a convolution operation, a pooling operation, and the like.
  • the convolution operation the product-sum operation of the input data and the weighting factor is performed.
  • a product-sum operation is performed on the input data for each predetermined processing unit.
  • Input data means all the data input to one layer (calculation unit).
  • the input data is two-dimensional image data of a predetermined size.
  • the data amount of the input data is represented by the vertical ⁇ horizontal ⁇ number of channels of the image.
  • the processing unit of the product-sum operation is the number of weighting coefficients (filter size).
  • the filter size is 3 ⁇ 3 or 5 ⁇ 5.
  • the input data is data larger than the processing unit of the product-sum operation.
  • the input data may be voice data or text data.
  • the arithmetic circuit 1 includes memories 10, 30 and 50, a first arithmetic unit 20, and a second arithmetic unit 40.
  • the memory 10 is an example of a first memory for storing input data.
  • the memory 10 is, for example, a volatile memory that temporarily stores at least a part of input data.
  • the memory 10 is, for example, a line memory having a one-dimensional array such as a FIFO (First In First Out) memory, but is not limited thereto.
  • the memory 10 may be a SRAM (Static Random Access Memory).
  • the input data is sequentially stored in the memory 10 in a predetermined processing unit according to the progress of the calculation in the first calculation unit 20. That is, only a part of the input data is stored in the memory 10, and each time the first calculation unit 20 reads out, the other part of the input data is newly stored. Therefore, the memory capacity of the memory 10 may be equal to or larger than the data capacity of the processing unit of the calculation in the first calculation unit 20, and may be smaller than the data capacity of the input data.
  • the first calculation unit 20 sequentially reads the input data from the memory 10 in the first processing unit, and performs the first calculation on the read data.
  • the first calculation unit 20 is a product-sum calculation circuit that performs a convolution calculation as the first calculation.
  • the first processing unit corresponds to the filter size (the number of weighting coefficients) used in the convolution operation.
  • the filter size is 3 ⁇ 3
  • the first processing unit is also 3 ⁇ 3.
  • the data for the first processing unit read at one time is a part of the input data.
  • the first calculation unit 20 outputs the calculation result of the first calculation to the memory 30.
  • the memory 30 is an example of a second memory for storing the first calculation result data.
  • the first calculation result data is the result of the first calculation for the input data. That is, the first calculation result data is the result of the first calculation for the entire input data.
  • the result of the first operation result data is smaller than the size of the input data.
  • the padding process for preventing this decrease in size may be performed by the first calculation unit 20. In this case, the size of the first calculation result data is equal to the size of the input data.
  • the memory 30 is, for example, a volatile memory that stores at least a part of the first calculation result data.
  • the memory 30 is, for example, a line memory having a one-dimensional array such as a FIFO memory, but is not limited thereto.
  • the memory 30 may be a SRAM.
  • the first calculation result data is a predetermined processing unit according to the progress of the calculation in the first calculation unit 20 and the progress of the calculation in the second calculation unit 40. Will be memorized in order. That is, every time a part of the first calculation result data is read out by the second calculation unit 40, another part of the first calculation result data is newly stored in the memory 30. Therefore, the memory capacity of the memory 30 may be equal to or larger than the data capacity of the processing unit of the calculation in the second calculation unit 40 and smaller than the data capacity of the first calculation result data.
  • the second calculation unit 40 sequentially reads the first calculation result data from the memory 30 in the second processing unit, and performs the second calculation on the read data.
  • the second calculation unit 40 is a product-sum calculation circuit that performs a convolution calculation as the second calculation.
  • the second processing unit corresponds to the filter size used for the convolution operation. When the filter size is 3 ⁇ 3, the second processing unit is also 3 ⁇ 3.
  • the data for the second processing unit read at one time is at least a part of the first calculation result data.
  • the second calculation unit 40 outputs the calculation result of the first calculation to the memory 50.
  • the second calculation unit 40 may perform a pooling calculation as the second calculation.
  • the memory 50 is an example of a third memory for storing the second calculation result data.
  • the second operation result data is the result of the second operation with respect to the first operation result data. That is, the second calculation result data is the result of the first calculation and the second calculation for the entire input data.
  • the second calculation result data may be smaller than the size of the input data or equal to the size of the input data, like the first calculation result data.
  • the memory 50 is, for example, a volatile memory that stores at least a part of the second calculation result data.
  • the memory 50 is, for example, a line memory having a one-dimensional array such as a FIFO memory, but is not limited thereto.
  • the memory 50 may be a SRAM.
  • the arithmetic circuit 1 may be provided with three or more arithmetic units (layers), and a memory may be arranged between the arithmetic units.
  • FIG. 2 is a diagram showing processing of a conventional arithmetic circuit.
  • FIG. 3 is a diagram showing the processing of the arithmetic circuit 1 according to the present embodiment. Each figure shows a case where three input data A to C are processed in order.
  • the input data A to C are, for example, one piece of two-dimensional image data.
  • layers A to C represent operations included in AI processing, respectively.
  • layer A is an operation performed by the first calculation unit 20
  • layer B is an operation performed by the second calculation unit 40. That is, the operation of layer B is performed using the operation result data of layer A.
  • the operation of layer C is performed using the operation result data of layer B.
  • the arithmetic of each layer is sequentially performed on the input data. For example, the operation of layer A is performed in this order for each of the input data A to C.
  • a large amount of memory is required.
  • a DRAM Dynamic Random Access Memory
  • the access time is long. That is, it is difficult to speed up the calculation.
  • the arithmetic of the layer B is started before the arithmetic of the layer A with respect to the input data A is completed. That is, in the arithmetic circuit 1, a part of the input data A for which the arithmetic of the layer A has been completed is sequentially transferred to the layer B via the memory.
  • the calculation is started when the data required for the calculation is prepared. That is, in layer B, the calculation is started without waiting for the arrival of all the calculation result data of the input data A.
  • the memory capacity of the memory between the layer A and the layer B can be smaller than the conventional one.
  • the memory is a small and high-speed accessible memory such as a FIFO memory or SRAM, and is realized by an on-chip memory that can be configured on the same chip as the arithmetic circuit 1.
  • AI processing can be executed at high speed.
  • FIG. 4 is a schematic perspective view showing the AI processing module 100 according to the present embodiment.
  • the AI processing module 100 includes a system chip 101, one or more memory dies 201, and one or more arithmetic dies 301.
  • the AI processing module 100 is a semiconductor chip that executes AI processing.
  • the one or more memory dies 201 and the one or more arithmetic dies 301 are mounted on the system chip 101.
  • Each of the one or more memory dies 201 and the one or more arithmetic dies 301 is a bare chip.
  • the system chip 101 includes a memory die 200 for storing data and a calculation die 300 for performing operations included in AI processing. Therefore, the system chip 101 can independently execute the AI process. That is, the AI processing module 100 may not include either the memory die 201 or the arithmetic die 301.
  • the memory die 201 and the calculation die 301 are additionally provided to speed up the AI processing.
  • the memory dies 201 and the calculation dies 301 are provided in the required number to improve the memory capacity and the calculation capacity, respectively.
  • the plurality of memory dies 201 are stacked above the memory dies 200. As the number of memory dies 201 is increased, the memory capacity available for AI processing can be increased. The number of memory dies 201 is determined according to the memory capacity required for the AI processing module 100. The memory capacity increases in proportion to the number of memory dies.
  • the plurality of calculation dies 301 are stacked above the calculation dies 300. As the number of calculation dies 301 is increased, the calculation capacity that can be used for AI processing can be increased. The number of arithmetic dies 301 is determined according to the arithmetic capacity required for the AI processing module 100.
  • the computing power is, for example, the number of instructions that can be executed per unit time (TOPS: Tera Operations Per Second).
  • TOPS Tera Operations Per Second
  • one arithmetic die 301 has an instruction execution capability of 40 TOPS with a power consumption of 1 W.
  • the AI processing module 100 since a total of seven arithmetic dies including the arithmetic die 300 are stacked, the AI processing module 100 has an instruction execution capability of 280 TOPS with a power consumption of 7 W. In this way, the processing capacity of the AI processing module 100 increases in proportion to the number of calculation dies.
  • the memory dies and the arithmetic dies are configured so that the required number of dies can be stacked. That is, when the memory capacity is required, the required number of memory dies 201 can be stacked. If computing power is required, the required number of computing dies 301 can be stacked. When both the memory capacity and the calculation capacity are required, the required number of memory dies 201 and calculation dies 301 can be stacked. In this way, the performance of the AI processing module 100 can be easily changed to scalable. Therefore, the processing capacity of the AI processing module 100 can be easily improved.
  • FIG. 5 is a block diagram showing a configuration of a system chip 101 included in the AI processing module 100 according to the present embodiment.
  • the system chip 101 controls the entire AI processing module 100. Specifically, the system chip 101 controls a plurality of memory dies 200 and 201 and a plurality of arithmetic dies 300 and 301.
  • the system chip 101 includes a microcontroller 110, a system bus 120, an external interface 130, an image processing engine 140, a DRAM controller 150, and an AI accelerator 160.
  • the microcontroller 110 is an example of a control block that controls the entire system chip 101.
  • the microcontroller 110 transmits / receives data and information to / from each of the external interface 130, the image processing engine 140, the DRAM controller 150, and the AI accelerator 160 via the system bus 120, and executes calculations and instructions.
  • the microcontroller 110 includes a plurality of CPUs (Central Processing Units) 111 and an L2 cache 112.
  • the number of CPUs 111 included in the microcontroller 110 may be only one. Further, the microcontroller 110 does not have to include the L2 cache 112.
  • the microcontroller 110 stores data necessary for AI processing in an arbitrary memory die selected from the memory die 200 and the plurality of memory dies 201. That is, the data that can be stored in one memory die 200 or 201 can also be stored in another memory die 200 or 201.
  • the microcontroller 110 uses all the stacked memory dies 201 as an effective memory area. When the memory dies 201 are newly stacked, the microcontroller 110 can control the new memory dies 201 in the same manner as the existing memory dies 200 or 201.
  • the microcontroller 110 causes an arbitrary calculation die selected from the calculation die 300 and the plurality of calculation dies 301 to execute the calculation included in the AI process. That is, an instruction that can be executed by one arithmetic die 300 or 301 can also be executed by another arithmetic die 300 or 301.
  • the microcontroller 110 uses all the stacked arithmetic dies 301 as an effective arithmetic circuit. When the arithmetic dies 301 are newly stacked, the microcontroller 110 can control the new arithmetic dies 301 in the same manner as the existing arithmetic dies 300 or 301.
  • the system bus 120 is wiring used for transmitting and receiving data and signals.
  • a microcontroller 110, an external interface 130, an image processing engine 140, a DRAM controller 150, and an AI accelerator 160 are electrically connected to the system bus 120 and can communicate with each other.
  • the external interface 130 is an interface for transmitting / receiving data and signals to / from an external device different from the AI processing module 100.
  • the image processing engine 140 is a signal processing circuit that processes an image signal or a video signal.
  • the image processing engine 140 executes image quality adjustment processing and the like.
  • the DRAM controller 150 is a memory controller that reads and writes data to an external memory (specifically, a DRAM) different from the AI processing module 100.
  • the AI accelerator 160 is a signal processing circuit that performs AI processing at high speed. As shown in FIG. 5, the AI accelerator 160 includes an internal bus 161, a memory die 200, an arithmetic die 300, and a DSP (Digital Signal Processor) 400.
  • the AI accelerator 160 includes an internal bus 161, a memory die 200, an arithmetic die 300, and a DSP (Digital Signal Processor) 400.
  • DSP Digital Signal Processor
  • the internal bus 161 is wiring used for transmitting and receiving data and signals in the AI accelerator 160.
  • a memory die 200, an arithmetic die 300, and a DSP 400 are electrically connected to the internal bus 161 and can communicate with each other.
  • the internal bus 161 is also used for transmitting and receiving data and signals to a plurality of memory dies 201 and a plurality of arithmetic dies 301.
  • the internal bus 161 and the system bus 120 constitute a bus that electrically connects the microcontroller 110, the plurality of memory dies 200 and 201, and the plurality of arithmetic dies 300 and 301.
  • the memory die 200 is one of one or more memory dies included in the AI processing module 100. As shown in FIG. 4, a plurality of memory dies 201 are stacked above the layout pattern (first layout pattern) of the memory die 200.
  • the calculation die 300 is one of one or more calculation dies included in the AI processing module 100. As shown in FIG. 4, a plurality of calculation dies 301 are laminated on the layout pattern (second layout pattern) of the calculation die 300.
  • DSP400 is a processor that performs digital signal processing related to AI processing.
  • the configuration of the system chip 101 is not limited to the example shown in FIG.
  • the system chip 101 does not have to include the image processing engine 140.
  • the system chip 101 may be provided with a signal processing circuit or the like dedicated to predetermined processing.
  • FIG. 6 is a plan view showing an example of the plan layout of the arithmetic dies 300 and 301 included in the AI processing module 100 according to the present embodiment.
  • Each of the calculation die 300 and the plurality of calculation dies 301 has the same layout pattern. Specifically, the arithmetic die 300 and each of the plurality of arithmetic dies 301 have the same configuration, and each arithmetic capability is the same. Hereinafter, the configuration of the arithmetic die 301 will be mainly described.
  • the arithmetic die 301 has a rewritable circuit.
  • the calculation die 301 is an FPGA (Field Programmable Gate Array).
  • the arithmetic die 301 includes one or more AI processing blocks 310, one or more logic blocks 320, one or more switch blocks 330, and one or more input / output ports 340. It comprises one or more connection blocks 350 and one or more wiring 360.
  • the wiring 360 is formed on the surface or inside of the silicon substrate constituting the arithmetic die 301.
  • the layout pattern of the arithmetic die 301 is represented by the size, shape, number and arrangement of the AI processing block 310, the logic block 320, the switch block 330, the input / output port 340, the connection block 350 and the wiring 360, respectively.
  • Each of the one or more AI processing blocks 310 is an accelerator circuit for AI processing.
  • the AI processing block 310 constitutes at least a part of the arithmetic circuit 1 shown in FIG.
  • one AI processing block 310 includes a first arithmetic unit 20 and a memory 30.
  • another AI processing block 310 includes a second calculation unit 40 and a memory 50.
  • another AI processing block 310 includes a memory 10.
  • the arithmetic circuit 1 is composed of two or more AI processing blocks 310. The specific configuration of the AI processing block 310 will be described later with reference to FIG. 7.
  • Each of the one or more logic blocks 320 is an arithmetic circuit that performs a logical operation.
  • the one or more AI processing blocks 310 and the one or more logic blocks 320 are arranged side by side in a tile shape.
  • one or more AI processing blocks 310 and one or more logic blocks 320 are arranged side by side in 3 rows ⁇ 3 columns, and each block is arranged in a switch block 330 and a switch block 330. It is electrically connected by wiring 360 via the connection block 350.
  • the number of AI processing blocks 310 may be only one, and is not particularly limited.
  • Each of the one or more switch blocks 330 is a switching circuit for switching the connection relationship of two to four connection blocks 350 located next to the switch block 330.
  • Each of the one or more input / output ports 340 is a terminal for inputting / outputting data and a signal to / from the arithmetic die 301.
  • the arithmetic die 301 is connected to the arithmetic dies 300 or 301 stacked one above the other via the input / output port 340.
  • the calculation die 301 is connected to the calculation die 300, and is connected to the internal bus 161 and the system bus 120 via the calculation die 300.
  • one or more input / output ports 340 are arranged in a ring shape along the outer circumference of the arithmetic die 301, but the present invention is not limited to this.
  • one or more input / output ports 340 may be provided in the center of the arithmetic die 301.
  • connection blocks 350 is a circuit for connecting to the AI processing block 310, the logic block 320, and the switch block 330 located next to the connection block 350.
  • One or more wirings 360 are electrical wirings that connect the input / output ports 340 to the AI processing block 310, the logic block 320, and the like, and are used for transmitting and receiving data.
  • the one or more wirings 360 are provided in a grid pattern, but may be in a striped pattern.
  • the arithmetic die 301 can perform specific arithmetic processing by switching the connection relationship between the input / output port 340, the AI processing block 310, and the logical block 320 in the switch block 330 and the connection block 350. Switching between the switch block 330 and the connection block 350 is performed using, for example, configuration information (configuration data) stored in a memory (not shown).
  • the layout of the calculation dies 300 and 301 is not limited to the example shown in FIG. Specifically, the number, shape, and arrangement of the AI processing block 310, the logic block 320, and the like are not particularly limited. The same applies to the switch block 330, the input / output port 340, the connection block 350, and the wiring 360.
  • FIG. 7 is a block diagram showing a configuration of an AI processing block 310 included in the arithmetic dies 300 and 301 according to the present embodiment.
  • the AI processing block 310 shown in FIG. 7 shows an example in which, for example, when the input data is RGB image data, the input data is filtered by 3 channels.
  • the AI processing block 310 includes a plurality of arithmetic units 21 to 23, a plurality of addition units 61 to 63, a plurality of memories 31 to 33, and a weight memory 70.
  • Each of the calculation units 21 to 23 is provided with a number corresponding to the number of channels for filtering, that is, three.
  • the calculation unit 21, the addition unit 61, and the memory 31 process the R image.
  • the calculation unit 22, the addition unit 62, and the memory 32 process the G image.
  • the calculation unit 23, the addition unit 63, and the memory 33 process the B image.
  • the RGB image data which is the input data, is stored in the memories 11 to 13, respectively.
  • the R image data may be stored in the memory 11
  • the G image data may be stored in the memory 12
  • the B image data may be stored in the memory 13.
  • each of the R image data, the G image data, and the B image data may be stored in each of the memories 11 to 13.
  • the memories 11 to 13 are examples of the memories 10 shown in FIG. 1, and have the same configuration as each other.
  • the calculation units 21 to 23 are examples of the first calculation unit 20 shown in FIG. 1, and have the same configuration as each other.
  • the memories 31 to 33 are examples of the memories 30 shown in FIG. 1, and have the same configuration as each other.
  • the addition units 61 to 63 have the same configuration as each other.
  • the calculation unit 21, the addition unit 61, the memory 31, and the weight memory 70 will be described, and the description of other components will be omitted.
  • the calculation unit 21 performs a convolution calculation. Specifically, the calculation unit 21 includes a product-sum calculation circuit that performs a product-sum calculation of an input data image and a weight. The specific configuration of the calculation unit 21 will be described later with reference to FIG.
  • the addition unit 61 adds the calculation results of the three calculation units 21. Further, the addition unit 61 may perform bias addition and calculation processing of the activation function.
  • the AI processing block 310 may not include the addition unit 61.
  • the memory 31 stores the addition result by the addition unit 61.
  • the addition result stored in the memory 31 is used for the next processing in the second calculation unit 40. That is, the memory 31 performs the same function as the memory 11 for the arithmetic unit 21 included in the other AI processing block 310.
  • the memory 31 may be provided in a block or circuit other than the AI processing block 310.
  • the AI processing block 310 may include the memory 11 in place of the memory 31 or in addition to the memory 31.
  • the weight memory 70 is a memory for storing the weight used for the convolution operation.
  • the AI processing block 310 does not have to include the weight memory 70.
  • the weight memory 70 may be provided in a block or circuit other than the AI processing block 310.
  • FIG. 8 is a block diagram showing a configuration of a calculation unit 21 of the AI processing block 310 according to the present embodiment.
  • the arithmetic unit 21 includes a plurality of multiplication units 511 to 519, an addition unit 520 with real number conversion, a logarithmic conversion unit 530, and a buffer memory 540.
  • the calculation unit 21 shown in FIG. 8 is a circuit that performs a convolution calculation using a weight (filter) of 3 ⁇ 3.
  • the calculation unit 21 reads data necessary for the convolution calculation from each of the memories 11 to 13, and temporarily stores the read data in the buffer memory 540.
  • the buffer memory 540 is a memory for temporarily storing the input data stored in the memories 11 to 13.
  • the buffer memory 540 is composed of, for example, a flip-flop circuit.
  • the buffer memory 540 stores 3 ⁇ 3 input values a 1 to a 9 stored in any of the memories 11 to 13.
  • the data stored in the buffer memory 540 is updated as the operation progresses.
  • the input values a 1 to a 9 are a part of the input data and are data for the processing unit of the operation in the calculation unit 21.
  • the input values a 1 to a 9 are all pixel values included in the R image (may be a G image or a B image), and a convolution operation is performed on the R image.
  • the weight wi used for the convolution calculation of the R image and the weight wi i used for the convolution calculation of the G image or the B image may be the same value or different values.
  • Each of the multiplication units 511 to 519 multiplies the input value ai ( i is a natural number) stored in the buffer memory 540 and the weight wi stored in the weight memory 70.
  • the multiplication is represented by ai ⁇ wi .
  • the multiplication units 511 to 519 perform multiplication in a logarithmic representation. That is, by taking the logarithm of ai ⁇ wi , multiplication can be replaced with addition as shown in the following equation (1).
  • weights wi and the input values ai are stored in the weight memory 70 or the buffer memory 540 after logarithmic conversion, respectively.
  • the logarithmic conversion unit 530 converts the calculation result of the equation (2) into a logarithm.
  • the operation result converted into a logarithm is output to the addition unit 61 shown in FIG. 7 and stored in the memory 31.
  • logarithmic conversion is not performed in general image processing because an error may occur when performing logarithmic conversion and deterioration of image quality may occur.
  • AI processing it is possible to perform processing in consideration of an error such as an error diffusion method, so that logarithmic conversion can be used. Therefore, the arithmetic circuit can be simplified. By simplifying the circuit configuration, it is possible to reduce the area of the arithmetic circuit. In addition, the power consumption of the arithmetic circuit can be reduced.
  • the multiplication units 511 to 519 may perform a shift operation between the real value of the input data and the weight of the logarithmic expression instead of performing the multiplication of the input data and the weight by the addition of the logarithmic expression. ..
  • the arithmetic unit 21 does not have to include the logarithmic conversion unit 530.
  • the arithmetic unit 21 may include a normal addition unit (which does not have a real number conversion function) instead of the addition unit 520 with real number conversion.
  • the input value ai itself is stored in the buffer memory 540.
  • FIG. 9 is a plan view showing another example of the plan layout of the arithmetic dies 300 and 301 included in the AI processing module 100 according to the embodiment.
  • the AI processing block 310a includes a plurality of AI processing blocks 310 shown in FIG.
  • the AI processing block 310a may be the same as the arithmetic circuit 1 shown in FIG. 1, and includes a first arithmetic unit 20 and a second arithmetic unit 40.
  • the logic block 320a includes a plurality of logic blocks 320 shown in FIG.
  • each processing block included in the calculation dies 300 and 301 is not particularly limited.
  • the sizes of the processing blocks in a plan view may be equal to or different from each other.
  • the plurality of AI processing blocks 310a may be different in size from each other. The same applies to the logic block 320a.
  • the arithmetic circuit 1 does not have to include at least one of the memories 10 and 50.
  • at least one of the memories 10 and 50 may be a large-capacity memory provided outside the arithmetic circuit 1.
  • At least one of the memories 10 and 50 may be a DRAM.
  • the memory capacity of the memory 10 may be equal to or larger than the data capacity of the input data.
  • the memory capacity of the memory 50 may be equal to or larger than the data capacity of the calculation result data of the second calculation corresponding to the input data.
  • another processing unit may execute the processing executed by the specific processing unit. Further, the order of the plurality of processes may be changed, or the plurality of processes may be executed in parallel.
  • the present disclosure can be used as an arithmetic circuit and an AI processing module capable of executing AI processing at high speed, and can be used, for example, in various electric appliances and computer devices.
  • Arithmetic circuit 10 11, 12, 13, 30, 31, 31, 32, 33, 50 Memory 20 First arithmetic unit 21, 22, 23 Arithmetic unit 40 Second arithmetic unit 61, 62, 63 Addition unit 70 Weight memory 100 AI Processing module 101 System chip 110 Microcontroller 111 CPU 112 L2 cache 120 system bus 130 external interface 140 image processing engine 150 DRAM controller 160 AI accelerator 161 internal bus 200, 201 memory die 300, 301 arithmetic die 310, 310a AI processing block 320, 320a logical block 330 switch block 340 I / O port 350 Connection block 360 Wiring 400 DSP 511, 512, 513, 514, 515, 516, 517, 518, 589 Multiplying unit 520 Addition unit with real number conversion 530 Logarithmic conversion unit 540 Buffer memory

Landscapes

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

Abstract

AI(Artificial Inteligence)処理を行う演算回路(1)は、入力データを記憶するためのメモリ(10)から入力データの一部を第1処理単位で順次読み出し、読み出したデータに対して、AI処理に含まれる第1演算を行う第1演算部(20)と、入力データに対する第1演算の結果である演算結果データを記憶するためのメモリ(30)と、メモリ(30)から演算結果データの少なくとも一部を第2処理単位で順次読み出し、読み出したデータに対して、AI処理に含まれる第2演算を行う第2演算部(40)と、を備える。第2演算部(40)は、入力データに対する第1演算が完了する前に、第2演算を開始する。

Description

演算回路及びAI処理モジュール
 本開示は、演算回路及びAI処理モジュールに関する。
 近年、人工知能(AI)に用いられる様々な演算処理(以下、AI処理と記載する)を高速に行うことが期待されている。例えば、特許文献1には、畳み込みニューラルネットワークで行われる積和演算を効率良く行うことができる半導体装置が開示されている。畳み込みニューラルネットワークでは、畳み込み層及びプーリング層などの複数の層が含まれている。例えば、畳み込み層では畳み込み演算が実行されるといったように、各層(レイヤ)において対応する演算処理が行われる。
国際公開第2018/211349号
 上記従来の半導体装置では、各レイヤ間でデータを受け渡すためのメモリが必要である。当該メモリのメモリ容量は、各レイヤの演算を実行する演算回路の回路規模に依存して大きくなる。メモリ容量が大きくなると、メモリへのアクセス時間も長くなるので、処理の高速化が難しい。
 そこで、本開示は、AI処理を高速に実行することができる演算回路及びAI処理モジュールを提供する。
 本開示の一態様に係る演算回路は、AI(Artificial Inteligence)処理を行う演算回路であって、入力データを記憶するための第1メモリから前記入力データを第1処理単位で順次読み出し、読み出したデータに対して、前記AI処理に含まれる第1演算を行う第1演算部と、前記入力データに対する前記第1演算の結果である演算結果データを記憶するための第2メモリと、前記第2メモリから前記演算結果データを第2処理単位で順次読み出し、読み出したデータに対して、前記AI処理に含まれる第2演算を行う第2演算部と、を備え、前記第2演算部は、前記入力データに対する前記第1演算が完了する前に、前記第2演算を開始する。
 本開示の一態様に係るAI処理モジュールは、上記一態様に係る演算回路を複数備え、複数の前記演算回路は、タイル状又はレイヤ状に配置されている。
 本開示によれば、AI処理を高速に実行することができる。
図1は、実施の形態に係る演算回路の構成を示すブロック図である。 図2は、従来の演算回路の処理を示す図である。 図3は、実施の形態に係る演算回路による処理を示す図である。 図4は、実施の形態に係るAI処理モジュールを示す模式的な斜視図である。 図5は、実施の形態に係るAI処理モジュールが備えるシステムチップの構成を示すブロック図である。 図6は、実施の形態に係るAI処理モジュールが備える演算ダイの平面レイアウトの一例を示す平面図である。 図7は、実施の形態に係る演算ダイが備えるAI処理ブロックの構成を示すブロック図である。 図8は、実施の形態に係るAI処理ブロックの演算部の構成を示すブロック図である。 図9は、実施の形態に係るAI処理モジュールが備える演算ダイの平面レイアウトの別の一例を示す平面図である。
 (本開示の概要)
 本開示の一態様に係る演算回路は、AI処理を行う演算回路であって、入力データを記憶するための第1メモリから前記入力データを第1処理単位で順次読み出し、読み出したデータに対して、前記AI処理に含まれる第1演算を行う第1演算部と、前記入力データに対する前記第1演算の結果である演算結果データを記憶するための第2メモリと、前記第2メモリから前記演算結果データを第2処理単位で順次読み出し、読み出したデータに対して、前記AI処理に含まれる第2演算を行う第2演算部と、を備え、前記第2演算部は、前記入力データに対する前記第1演算が完了する前に、前記第2演算を開始する。
 これにより、入力データに対する第1演算が完了する前に第2演算が開始されるので、演算回路は、AI処理を高速に実行することができる。また、第2メモリは、入力データに対応する演算結果データの全てを記憶する必要はなく、第2演算に必要なデータのみを記憶すればよいので、第2メモリのメモリ容量が小さくてもよい。このため、第2メモリとして小型で高速アクセス可能なメモリを利用することができるので、演算回路は、AI処理をさらに高速に実行することができる。
 また、例えば、前記第1演算部及び前記第2演算部の少なくとも一方は、前記第1演算又は前記第2演算として畳み込み演算を行う積和演算回路を含んでもよい。
 これにより、一のレイヤに対して入力される入力データの全てに対する畳み込み演算が完了する前に次の演算が開始されるので、又は、前の演算が全て完了する前に次の畳み込み演算が開始されるので、演算回路は、AI処理を高速に実行することができる。例えば、演算回路は、畳み込みニューラルネットワークにおける複数のレイヤを処理する場合において、一のレイヤの処理が完了する前に次のレイヤの処理を開始することができる。
 また、例えば、前記積和演算回路は、乗算を対数表現で行ってもよい。
 これにより、積和演算に含まれる乗算を対数表現の加算によって行うことができるので、簡単な回路構成で積和演算回路を実現することができる。
 また、例えば、前記積和演算回路は、対数表現で行われた乗算結果を実数に変換した後、加算を行ってもよい。
 これにより、対数表現で行われた乗算結果を実数に変換することで、積和演算に含まれる加算をそのまま加算として行うことができる。したがって、簡単な回路構成で積和演算回路を実現することができる。
 また、例えば、前記第2演算部は、前記演算結果データのうち前記第2処理単位分のデータが前記第2メモリに記憶される度に、前記第2演算を行ってもよい。
 これにより、第2演算に必要なデータが揃う度に第2演算を行うことができるので、第2メモリのメモリ容量をさらに小さくすることができる。
 また、例えば、前記第2メモリのメモリ容量は、前記第2処理単位のデータ容量以上で、かつ、前記入力データに対応する前記演算結果データのデータ容量よりも小さくてもよい。
 これにより、第2メモリとして小型で高速アクセス可能なメモリを利用することができるので、演算回路は、AI処理をさらに高速に実行することができる。
 また、例えば、本開示の一態様に係る演算回路は、前記第1メモリを備え、前記第1メモリのメモリ容量は、前記第1処理単位のデータ容量以上で、かつ、前記入力データのデータ容量よりも小さくてもよい。
 これにより、第1メモリとして小型で高速アクセス可能なメモリを利用することができるので、演算回路は、AI処理をさらに高速に実行することができる。
 また、本開示の一態様に係るAI処理モジュールは、上記一態様に係る演算回路を複数備え、複数の前記演算回路は、タイル状又はレイヤ状に配置されている。
 これにより、上述した演算回路と同様の効果を得ることができる。
 以下では、実施の形態について、図面を参照しながら具体的に説明する。
 なお、以下で説明する実施の形態は、いずれも包括的又は具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
 また、各図は、模式図であり、必ずしも厳密に図示されたものではない。したがって、例えば、各図において縮尺などは必ずしも一致しない。また、各図において、実質的に同一の構成については同一の符号を付しており、重複する説明は省略又は簡略化する。
 また、本明細書において、「上方」及び「下方」という用語は、絶対的な空間認識における上方向(鉛直上方)及び下方向(鉛直下方)を指すものではなく、積層構成における積層順を基に相対的な位置関係により規定される用語として用いる。また、「上方」及び「下方」という用語は、2つの構成要素が互いに間隔を空けて配置されて2つの構成要素の間に別の構成要素が存在する場合のみならず、2つの構成要素が互いに密着して配置されて2つの構成要素が接する場合にも適用される。
 (実施の形態)
 [1.構成]
 まず、実施の形態に係る演算回路の構成について、図1を用いて説明する。図1は、本実施の形態に係る演算回路1の構成を示すブロック図である。
 演算回路1は、AI処理を実行する。AI処理は、人工知能を利用するための各種演算処理であり、例えば、自然言語処理、音声認識処理、画像認識処理及びレコメンデーション、並びに、各種機器の制御処理などに利用される。AI処理には、例えば機械学習又はディープラーニングなどが含まれる。
 AI処理には、例えば、畳み込みニューラルネットワークの各レイヤで行われる複数の演算が含まれる。複数の演算には、畳み込み演算及びプーリング演算などが含まれる。畳み込み演算では、入力データと重み係数との積和演算が行われる。具体的には、畳み込み演算では、入力データに対して所定の処理単位毎に積和演算が行われる。
 入力データは、一のレイヤ(演算部)に入力されるデータの全てを意味する。例えば、入力データは、所定サイズの二次元画像データである。この場合、入力データのデータ量は、画像の縦×横×チャネル数で表される。例えば、28×28サイズのRGB画像で、1画素が8ビットの場合、入力データのデータ量は、28×28×3×8ビットになる。積和演算の処理単位は、重み係数の数(フィルタサイズ)である。例えば、フィルタサイズは、3×3又は5×5などである。入力データは、積和演算の処理単位より大きいデータである。なお、入力データは、音声データ又は文章データであってもよい。
 図1に示されるように、演算回路1は、メモリ10、30及び50と、第1演算部20と、第2演算部40と、を備える。
 メモリ10は、入力データを記憶するための第1メモリの一例である。メモリ10は、例えば、入力データの少なくとも一部を一時的に記憶する揮発性メモリである。メモリ10は、例えば、FIFO(First In First Out)メモリなどの一次元配列のラインメモリであるが、これに限定されない。メモリ10は、SRAM(Static Random Access Memory)であってもよい。
 本実施の形態では、メモリ10には、第1演算部20での演算の進行具合に合わせて、入力データが所定の処理単位で順に記憶される。つまり、メモリ10には入力データの一部のみが記憶され、第1演算部20によって読み出される度に、入力データの他の一部が新たに記憶される。このため、メモリ10のメモリ容量は、第1演算部20での演算の処理単位のデータ容量以上で、かつ、入力データのデータ容量より小さくてよい。
 第1演算部20は、メモリ10から入力データを第1処理単位で順次読み出し、読み出したデータに対して第1演算を行う。具体的には、第1演算部20は、第1演算として畳み込み演算を行う積和演算回路である。この場合、第1処理単位は、畳み込み演算に用いるフィルタサイズ(重み係数の個数)に相当する。フィルタサイズが3×3の場合、第1処理単位も3×3になる。1回に読み出される第1処理単位分のデータは、入力データの一部である。第1演算部20は、第1演算の演算結果をメモリ30に出力する。
 メモリ30は、第1演算結果データを記憶するための第2メモリの一例である。第1演算結果データは、入力データに対する第1演算の結果である。つまり、第1演算結果データは、入力データ全体に対する第1演算の結果である。なお、畳み込み演算が入力データに対して行われた場合、その結果である第1演算結果データは、入力データのサイズより小さくなる。このサイズの減少を防ぐためのパディング処理が第1演算部20で行われてもよい。この場合、第1演算結果データのサイズは、入力データのサイズと等しくなる。
 メモリ30は、例えば、第1演算結果データの少なくとも一部を記憶する揮発性メモリである。メモリ30は、例えばFIFOメモリなどの一次元配列のラインメモリであるが、これに限定されない。メモリ30は、SRAMであってもよい。
 本実施の形態では、メモリ30には、第1演算部20での演算の進行具合、及び、第2演算部40での演算の進行具合に合わせて、第1演算結果データが所定の処理単位で順に記憶される。つまり、メモリ30には、第1演算結果データの一部が第2演算部40によって読み出される度に、第1演算結果データの他の一部が新たに記憶される。このため、メモリ30のメモリ容量は、第2演算部40での演算の処理単位のデータ容量以上で、かつ、第1演算結果データのデータ容量より小さくてよい。
 第2演算部40は、メモリ30から第1演算結果データを第2処理単位で順次読み出し、読み出したデータに対して第2演算を行う。具体的には、第2演算部40は、第2演算として畳み込み演算を行う積和演算回路である。この場合、第2処理単位は、畳み込み演算に用いるフィルタサイズに相当する。フィルタサイズが3×3の場合、第2処理単位も3×3になる。1回に読み出される第2処理単位分のデータは、第1演算結果データの少なくとも一部である。第2演算部40は、第1演算の演算結果をメモリ50に出力する。なお、第2演算部40は、第2演算としてプーリング演算を行ってもよい。
 メモリ50は、第2演算結果データを記憶するための第3メモリの一例である。第2演算結果データは、第1演算結果データに対する第2演算の結果である。つまり、第2演算結果データは、入力データ全体に対する第1演算及び第2演算の結果である。第2演算結果データは、第1演算結果データと同様に、入力データのサイズより小さくてもよく、入力データのサイズに等しくてもよい。
 メモリ50は、例えば、第2演算結果データの少なくとも一部を記憶する揮発性メモリである。メモリ50は、例えばFIFOメモリなどの一次元配列のラインメモリであるが、これに限定されない。メモリ50は、SRAMであってもよい。
 なお、演算回路1は、3つ以上の演算部(レイヤ)を備えていてもよく、各演算部の間にはメモリが配置されていてもよい。
 [2.効果など]
 続いて、本実施の形態に係る演算回路1の処理及び有利な効果について、図2及び図3を用いて説明する。
 図2は、従来の演算回路の処理を示す図である。図3は、本実施の形態に係る演算回路1の処理を示す図である。各図は、3つの入力データA~Cを順に処理する場合を示している。入力データA~Cは、例えばそれぞれが1枚の二次元画像データである。
 また、各図において、レイヤA~Cはそれぞれ、AI処理に含まれる演算を表している。例えば、レイヤAは、第1演算部20で行われる演算であり、レイヤBは、第2演算部40で行われる演算である。つまり、レイヤBの演算は、レイヤAの演算結果データを用いて行われる。レイヤCの演算は、レイヤBの演算結果データを用いて行われる。
 図2に示されるように、従来の演算回路では、各レイヤの演算は、入力データに対して順に行われる。例えば、レイヤAの演算は、入力データA~Cの各々に対して、この順で行われる。
 また、入力データAに着目すると、入力データAに対するレイヤAの演算が完了した後、入力データAの演算結果データに対してレイヤBの演算が行われる。このため、レイヤAからレイヤBにデータを受け渡す際に、入力データAの演算結果データに相当するメモリ容量が必要になる。
 このため、入力データのデータ量が大きくなる程、大容量のメモリが必要になる。大容量のメモリとしては、例えば、DRAM(Dynamic Random Access Memory)を利用することができる。しかしながら、DRAMは、通常、演算回路とは別のチップで構成されるので、アクセス時間が長くかかる。つまり、演算の高速化が難しい。
 これに対して、本実施の形態に係る演算回路1では、図3に示されるように、入力データAに対するレイヤAの演算が完了する前に、レイヤBの演算が開始される。つまり、演算回路1では、入力データAのうち、レイヤAの演算が終了した一部のデータが順次メモリを介してレイヤBに転送される。レイヤBでは、演算に必要なデータが揃った時点で演算が開始される。つまり、レイヤBでは、入力データAの演算結果データの全ての到着を待つことなく、演算が開始される。
 このため、レイヤAとレイヤBとの間のメモリ(例えば、図1のメモリ30)のメモリ容量は、従来よりも小さくて済む。例えば、メモリは、FIFOメモリ又はSRAMなどの小型で、かつ、高速アクセス可能なメモリであって、演算回路1と同じチップに構成可能なオンチップメモリで実現される。
 以上のように、本実施の形態に係る演算回路1によれば、AI処理を高速に実行することができる。
 [3.AI処理モジュールの構成]
 続いて、上述した演算回路1を備えるAI処理モジュールの具体的な構成について、図4を用いて説明する。図4は、本実施の形態に係るAI処理モジュール100を示す模式的な斜視図である。
 図4に示されるように、AI処理モジュール100は、システムチップ101と、1つ以上のメモリダイ201と、1つ以上の演算ダイ301とを備える。AI処理モジュール100は、AI処理を実行する半導体チップである。1つ以上のメモリダイ201及び1つ以上の演算ダイ301は、システムチップ101に実装されている。1つ以上のメモリダイ201及び1つ以上の演算ダイ301はそれぞれが、ベアチップである。
 本実施の形態では、図4に示されるように、システムチップ101は、データを記憶するメモリダイ200と、AI処理に含まれる演算を行う演算ダイ300と、を備える。このため、システムチップ101は、単独でAI処理を実行することができる。つまり、AI処理モジュール100は、メモリダイ201及び演算ダイ301のいずれも備えていなくてもよい。メモリダイ201及び演算ダイ301は、AI処理を高速化するために追加的に設けられる。メモリダイ201及び演算ダイ301はそれぞれ、メモリ容量及び演算能力を向上させるために必要な個数設けられる。
 複数のメモリダイ201は、メモリダイ200の上方に積層される。メモリダイ201の個数を増やす程、AI処理に利用可能なメモリ容量を増やすことができる。メモリダイ201の個数は、AI処理モジュール100に要求されるメモリ容量に応じて決定される。メモリ容量は、メモリダイの個数に比例して向上する。
 複数の演算ダイ301は、演算ダイ300の上方に積層される。演算ダイ301の個数を増やす程、AI処理に利用できる演算能力を増やすことができる。演算ダイ301の個数は、AI処理モジュール100に要求される演算能力に応じて決定される。
 演算能力は、例えば、単位時間当たりに実行可能な命令数(TOPS:Tera Operations Per Second)である。例えば、1つの演算ダイ301は、1Wの消費電力で40TOPSの命令実行能力を有する。図4に示される例では、演算ダイ300を含めて合計7つの演算ダイが積層されているので、AI処理モジュール100は、7Wの消費電力で280TOPSの命令実行能力を有する。このように、AI処理モジュール100の処理能力は、演算ダイの個数に比例して向上する。
 以上のように、AI処理モジュール100では、メモリダイ及び演算ダイがそれぞれ、必要に応じた個数を積層可能に構成されている。つまり、メモリ容量が必要な場合は、メモリダイ201を必要な個数積層することができる。演算能力が必要な場合は、演算ダイ301を必要な個数積層することができる。メモリ容量及び演算能力の両方が必要な場合は、メモリダイ201及び演算ダイ301をそれぞれ必要な個数積層することができる。このように、AI処理モジュール100の性能を簡単にスケーラブルに変更することができる。このため、AI処理モジュール100の処理能力を簡単に向上させることができる。
 [3-1.システムチップ]
 次に、システムチップ101の構成について、図5を用いて説明する。図5は、本実施の形態に係るAI処理モジュール100が備えるシステムチップ101の構成を示すブロック図である。
 システムチップ101は、AI処理モジュール100の全体を制御する。具体的には、システムチップ101は、複数のメモリダイ200及び201並びに複数の演算ダイ300及び301を制御する。
 図5に示されるように、システムチップ101は、マイクロコントローラ110と、システムバス120と、外部インタフェース130と、画像処理エンジン140と、DRAMコントローラ150と、AIアクセラレータ160と、を備える。
 マイクロコントローラ110は、システムチップ101全体の制御を行う制御ブロックの一例である。マイクロコントローラ110は、システムバス120を介して、外部インタフェース130、画像処理エンジン140、DRAMコントローラ150及びAIアクセラレータ160の各々との間でデータ及び情報の送受信を行い、演算及び命令を実行する。図5に示されるように、マイクロコントローラ110は、複数のCPU(Central Processing Unit)111と、L2キャッシュ112と、を備える。なお、マイクロコントローラ110が備えるCPU111の個数は、1個のみでもよい。また、マイクロコントローラ110は、L2キャッシュ112を備えていなくてもよい。
 マイクロコントローラ110は、メモリダイ200及び複数のメモリダイ201の中から選択した任意のメモリダイに、AI処理に必要なデータを記憶させる。つまり、一のメモリダイ200又は201に記憶可能なデータは、他のメモリダイ200又は201にも記憶することができる。マイクロコントローラ110は、積層された全てのメモリダイ201を有効なメモリ領域として利用する。新たにメモリダイ201が積層された場合、マイクロコントローラ110は、新たなメモリダイ201を既存のメモリダイ200又は201と同等に制御することができる。
 また、マイクロコントローラ110は、演算ダイ300及び複数の演算ダイ301の中から選択した任意の演算ダイに、AI処理に含まれる演算を実行させる。つまり、一の演算ダイ300又は301が実行可能な命令は、他の演算ダイ300又は301が実行することもできる。マイクロコントローラ110は、積層された全ての演算ダイ301を有効な演算回路として利用する。新たに演算ダイ301が積層された場合、マイクロコントローラ110は、新たな演算ダイ301を既存の演算ダイ300又は301と同等に制御することができる。
 システムバス120は、データ及び信号などの送受信に利用される配線である。システムバス120には、マイクロコントローラ110、外部インタフェース130、画像処理エンジン140、DRAMコントローラ150及びAIアクセラレータ160が電気的に接続され、互いに通信可能である。
 外部インタフェース130は、AI処理モジュール100とは異なる外部装置とのデータ及び信号の送受信を行うためのインタフェースである。
 画像処理エンジン140は、画像信号又は映像信号を処理する信号処理回路である。例えば、画像処理エンジン140は、画質調整処理などを実行する。
 DRAMコントローラ150は、AI処理モジュール100とは異なる外部メモリ(具体的には、DRAM)に対するデータの読み出し及び書き込みなどを行うメモリコントローラである。
 AIアクセラレータ160は、AI処理を高速に行う信号処理回路である。図5に示されるように、AIアクセラレータ160は、内部バス161と、メモリダイ200と、演算ダイ300と、DSP(Digital Signal Processor)400とを備える。
 内部バス161は、AIアクセラレータ160内でのデータ及び信号などの送受信に利用される配線である。内部バス161には、メモリダイ200、演算ダイ300及びDSP400が電気的に接続され、互いに通信可能である。内部バス161は、複数のメモリダイ201及び複数の演算ダイ301に対するデータ及び信号などの送受信にも利用される。内部バス161とシステムバス120とは、マイクロコントローラ110と、複数のメモリダイ200及び201並びに複数の演算ダイ300及び301とを電気的に接続するバスを構成している。
 メモリダイ200は、AI処理モジュール100が備える1以上のメモリダイの1つである。図4に示されるように、メモリダイ200が有するレイアウトパターン(第1レイアウトパターン)の上方に複数のメモリダイ201が積層されている。
 演算ダイ300は、AI処理モジュール100が備える1以上の演算ダイの1つである。図4に示されるように、演算ダイ300が有するレイアウトパターン(第2レイアウトパターン)の上方に複数の演算ダイ301が積層されている。
 DSP400は、AI処理に関わるデジタル信号処理を行うプロセッサである。
 なお、システムチップ101の構成は、図5に示される例に限定されない。例えば、システムチップ101は、画像処理エンジン140を備えなくてもよい。システムチップ101は、所定の処理に専用の信号処理回路などを備えてもよい。
 [3-2.演算ダイ]
 次に、演算ダイ300及び301の構成について、図6を用いて説明する。図6は、本実施の形態に係るAI処理モジュール100が備える演算ダイ300及び301の平面レイアウトの一例を示す平面図である。
 演算ダイ300と複数の演算ダイ301の各々とは、同じレイアウトパターンを有する。具体的には、演算ダイ300と複数の演算ダイ301の各々とは、同一の構成を有し、各々の演算能力が同じである。以下では、演算ダイ301の構成を中心に説明する。
 演算ダイ301は、書き換え可能回路を有する。具体的には、演算ダイ301は、FPGA(Field Programmable Gate Array)である。図6に示されるように、演算ダイ301は、1つ以上のAI処理ブロック310と、1つ以上の論理ブロック320と、1つ以上のスイッチブロック330と、1つ以上の入出力ポート340と、1つ以上の接続ブロック350と、1つ以上の配線360と、を備える。1つ以上のAI処理ブロック310と、1つ以上の論理ブロック320と、1つ以上のスイッチブロック330と、1つ以上の入出力ポート340と、1つ以上の接続ブロック350と、1つ以上の配線360とは、演算ダイ301を構成するシリコン基板の表面又は内部に形成されている。演算ダイ301のレイアウトパターンは、AI処理ブロック310、論理ブロック320、スイッチブロック330、入出力ポート340、接続ブロック350及び配線360の各々の大きさ、形状、個数及び配置によって表される。
 1つ以上のAI処理ブロック310はそれぞれ、AI処理用のアクセラレータ回路である。AI処理ブロック310は、図1に示される演算回路1の少なくとも一部を構成している。例えば、一のAI処理ブロック310は、第1演算部20とメモリ30とを備える。また、別の一のAI処理ブロック310は、第2演算部40とメモリ50とを備える。また、別の一のAI処理ブロック310は、メモリ10を備える。このように、演算回路1は、2つ以上のAI処理ブロック310によって構成されている。AI処理ブロック310の具体的な構成については、図7を用いて後で説明する。
 1つ以上の論理ブロック320はそれぞれ、論理演算を行う演算回路である。1つ以上のAI処理ブロック310と1つ以上の論理ブロック320とは、タイル状に並んで配置されている。例えば、図6に示される例では、1つ以上のAI処理ブロック310と1つ以上の論理ブロック320とは、3行×3列に並んで配置されており、各ブロックは、スイッチブロック330及び接続ブロック350を介して配線360によって電気的に接続されている。なお、AI処理ブロック310の個数は、1個のみでもよく、特に限定されない。
 1つ以上のスイッチブロック330はそれぞれ、スイッチブロック330の隣に位置する2つ~4つの接続ブロック350の接続関係を切り替える切替回路である。
 1つ以上の入出力ポート340はそれぞれ、演算ダイ301に対するデータ及び信号の入出力を行う端子である。演算ダイ301は、入出力ポート340を介して、上下に積層された演算ダイ300又は301と接続される。演算ダイ301は、演算ダイ300と接続されており、演算ダイ300を介して内部バス161及びシステムバス120に接続される。図6に示される例では、1つ以上の入出力ポート340が演算ダイ301の外周に沿って環状に配置されているが、これに限らない。例えば、1つ以上の入出力ポート340は、演算ダイ301の中央に設けられていてもよい。
 1つ以上の接続ブロック350はそれぞれ、接続ブロック350の隣に位置するAI処理ブロック310、論理ブロック320及びスイッチブロック330と接続するための回路である。
 1つ以上の配線360は、入出力ポート340とAI処理ブロック310及び論理ブロック320などとを接続する電気配線であり、データの送受信に用いられる。図6に示される例では、1つ以上の配線360は、格子状に設けられているが、ストライプ状であってもよい。
 演算ダイ301は、スイッチブロック330及び接続ブロック350において、入出力ポート340、AI処理ブロック310及び論理ブロック320の接続関係が切り替えられることにより、特定の演算処理を行うことができる。スイッチブロック330及び接続ブロック350の切り替えは、例えば、図示されないメモリに記憶された構成情報(コンフィギュレーションデータ)を用いて行われる。
 なお、演算ダイ300及び301のレイアウトは、図6に示される例に限定されない。具体的には、AI処理ブロック310及び論理ブロック320などの各々の個数、形状及び配置は、特に限定されない。スイッチブロック330、入出力ポート340、接続ブロック350及び配線360についても同様である。
 [3-3.AI処理ブロック]
 次に、AI処理ブロック310の具体的な構成について、図7を用いて説明する。図7は、本実施の形態に係る演算ダイ300及び301が備えるAI処理ブロック310の構成を示すブロック図である。
 図7に示されるAI処理ブロック310は、例えば、入力データがRGB画像データである場合に、入力データに対して3チャネルのフィルタ処理を行う例を示している。具体的には、図7に示されるように、AI処理ブロック310は、複数の演算部21~23と、複数の加算部61~63と、複数のメモリ31~33と、重みメモリ70と、を備える。演算部21~23の各々は、フィルタ処理のチャネル数に相当する数、すなわち、3つずつ設けられている。例えば、演算部21、加算部61及びメモリ31は、R画像の処理を行う。演算部22、加算部62及びメモリ32は、G画像の処理を行う。演算部23、加算部63及びメモリ33は、B画像の処理を行う。
 入力データであるRGB画像データは、メモリ11~13にそれぞれ記憶される。例えば、メモリ11には、R画像データが記憶されて、メモリ12には、G画像データが記憶されて、メモリ13には、B画像データが記憶されていてもよい。あるいは、メモリ11~13の各々には、R画像データ、G画像データ及びB画像データの各々が記憶されてもよい。
 メモリ11~13は、図1に示されるメモリ10の一例であり、互いに同じ構成を有する。演算部21~23は、図1に示される第1演算部20の一例であり、互いに同じ構成を有する。メモリ31~33は、図1に示されるメモリ30の一例であり、互いに同じ構成を有する。加算部61~63は、互いに同じ構成を有する。以下では、演算部21、加算部61、メモリ31及び重みメモリ70について説明し、他の構成要素の説明を省略する。
 演算部21は、畳み込み演算を行う。具体的には、演算部21は、入力データ画像と重みとの積和演算を行う積和演算回路を含む。演算部21の具体的な構成については、図8を用いて後で説明する。
 加算部61は、3つの演算部21による演算結果を加算する。また、加算部61は、バイアス加算、及び、活性化関数の計算処理を行ってもよい。なお、AI処理ブロック310は、加算部61を備えていなくてもよい。
 メモリ31は、加算部61による加算結果を記憶する。メモリ31に記憶された加算結果は、次の第2演算部40での処理に用いられる。つまり、メモリ31は、他のAI処理ブロック310に含まれる演算部21にとってのメモリ11と同じ機能を果たす。なお、メモリ31は、AI処理ブロック310以外のブロック又は回路に設けられていてもよい。あるいは、AI処理ブロック310は、メモリ31の代わりに、又は、メモリ31に加えてメモリ11を備えていてもよい。
 重みメモリ70は、畳み込み演算に用いる重みを記憶するメモリである。なお、演算部21が畳み込み演算以外の演算(例えば、プーリング演算)を行う場合、AI処理ブロック310は、重みメモリ70を備えなくてもよい。あるいは、重みメモリ70は、AI処理ブロック310以外のブロック又は回路に設けられていてもよい。
 [3-4.演算部]
 次に、図7に示される演算部21の具体的な構成について、図8を用いて説明する。図8は、本実施の形態に係るAI処理ブロック310の演算部21の構成を示すブロック図である。
 図8に示されるように、演算部21は、複数の乗算部511~519と、実数変換付き加算部520と、対数変換部530と、バッファメモリ540と、を備える。図8に示される演算部21は、3×3の重み(フィルタ)を利用した畳み込み演算を行う回路である。演算部21は、メモリ11~13の各々から、畳み込み演算に必要なデータを読み出し、読み出したデータをバッファメモリ540に一時的に記憶する。
 バッファメモリ540は、メモリ11~13に記憶された入力データを一時的に記憶するためのメモリである。バッファメモリ540は、例えばフリップフロップ回路で構成されている。バッファメモリ540には、メモリ11~13のいずれかに記憶された3×3の入力値a~aが記憶されている。バッファメモリ540に記憶されるデータは、演算の進行に合わせて更新される。入力値a~aは、入力データの一部であり、演算部21における演算の処理単位分のデータである。例えば、入力値a~aは全て、R画像(G画像又はB画像でもよい)に含まれる画素値であり、R画像に対する畳み込み演算が行われる。R画像の畳み込み演算に用いられる重みwと、G画像又はB画像の畳み込み演算に用いられる重みwとは同じ値でもよく、異なる値でもよい。
 乗算部511~519はそれぞれ、バッファメモリ540に記憶された入力値a(iは自然数)と、重みメモリ70に記憶された重みwとの乗算を行う。乗算は、a×wで表される。本実施の形態では、乗算部511~519は、乗算を対数表現で行う。つまり、a×wの対数をとることにより、以下の式(1)に示されるように、乗算を加算に置き換えることができる。
 (1) log(a×w)=log(a)+log(w
 加算に置き換えることによって、2進数での加算器を簡単に構成することができる。なお、重みw及び入力値aはそれぞれ、対数変換後の値が重みメモリ70又はバッファメモリ540に記憶される。
 実数変換付き加算部520は、乗算部511~519の乗算結果を実数に変換した後、加算を行う。つまり、実数変換付き加算部520は、式(1)の右辺の結果を実数に変換した後、i=1~9についての加算を行う。つまり、実数変換付き加算部520は、以下の式(2)を行う。
 (2) Σ(a×w
 対数変換部530は、式(2)の演算結果を対数に変換する。対数に変換された演算結果は、図7に示される加算部61に出力され、メモリ31に記憶される。
 なお、対数変換を行う際に誤差が発生して画質の劣化を発生させうるため、一般的な画像処理では対数変換は行われない。しかしながら、AI処理では、誤差拡散法などの誤差を考慮した処理を行うことができるので、対数変換を利用可能である。このため、演算回路を簡単にすることができる。回路構成の簡単化によって、演算回路の小面積化を実現することができる。また、演算回路の消費電力を低減することができる。
 なお、演算部21では、乗算部511~519は、入力データと重みとの乗算を対数表現の加算で行う代わりに、入力データの実数値と対数表現の重みとのシフト演算で行ってもよい。この場合、演算部21は、対数変換部530を備えなくてもよい。また、演算部21は、実数変換付き加算部520の代わりに、通常の(実数変換機能を有しない)加算部を備えてもよい。バッファメモリ540には、入力値aそのものが記憶される。
 [3-5.演算ダイの変形例]
 続いて、演算ダイ300及び301の変形例について説明する。1つ以上のAI処理ブロック310と1つ以上の論理ブロック320の配置は、図6に示されるようなタイル状に限定されることはなく、図9に示されるように、レイヤ状であってもよい。
 図9は、実施の形態に係るAI処理モジュール100が備える演算ダイ300及び301の平面レイアウトの別の一例を示す平面図である。
 図9に示される例では、AI処理ブロック310aは、図6に示される複数のAI処理ブロック310を含んでいる。例えば、AI処理ブロック310aは、図1に示される演算回路1と同じであってもよく、第1演算部20及び第2演算部40を含んでいる。論理ブロック320aは、図6に示される複数の論理ブロック320を含んでいる。
 演算ダイ300及び301に含まれる各処理ブロックの配置は、特に限定されない。例えば、各処理ブロックの平面視における大きさは、互いに等しくてもよく、互いに異なっていてもよい。例えば、複数のAI処理ブロック310aは、互いに大きさが異なっていてもよい。論理ブロック320aについても同様である。
 (他の実施の形態)
 以上、1つ又は複数の態様に係る演算回路及びAI処理モジュールについて、実施の形態に基づいて説明したが、本開示は、これらの実施の形態に限定されるものではない。本開示の主旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したもの、及び、異なる実施の形態における構成要素を組み合わせて構築される形態も、本開示の範囲内に含まれる。
 例えば、演算回路1は、メモリ10及び50の少なくとも一方を備えていなくてもよい。具体的には、メモリ10及び50の少なくとも一方は、演算回路1の外部に設けられた大容量のメモリであってもよい。メモリ10及び50の少なくとも一方は、DRAMであってもよい。メモリ10のメモリ容量は、入力データのデータ容量以上であってもよい。メモリ50のメモリ容量は、入力データに対応する第2演算の演算結果データのデータ容量以上であってもよい。
 また、上記の実施の形態において、特定の処理部が実行する処理を別の処理部が実行してもよい。また、複数の処理の順序が変更されてもよく、あるいは、複数の処理が並行して実行されてもよい。
 また、上記の実施の形態は、請求の範囲又はその均等の範囲において種々の変更、置き換え、付加、省略などを行うことができる。
 本開示は、AI処理を高速に実行することができる演算回路及びAI処理モジュールなどとして利用でき、例えば、各種電化製品及びコンピュータ機器などに利用することができる。
1 演算回路
10、11、12、13、30、31、32、33、50 メモリ
20 第1演算部
21、22、23 演算部
40 第2演算部
61、62、63 加算部
70 重みメモリ
100 AI処理モジュール
101 システムチップ
110 マイクロコントローラ
111 CPU
112 L2キャッシュ
120 システムバス
130 外部インタフェース
140 画像処理エンジン
150 DRAMコントローラ
160 AIアクセラレータ
161 内部バス
200、201 メモリダイ
300、301 演算ダイ
310、310a AI処理ブロック
320、320a 論理ブロック
330 スイッチブロック
340 入出力ポート
350 接続ブロック
360 配線
400 DSP
511、512、513、514、515、516、517、518、519 乗算部
520 実数変換付き加算部
530 対数変換部
540 バッファメモリ

Claims (8)

  1.  AI(Artificial Inteligence)処理を行う演算回路であって、
     入力データを記憶するための第1メモリから前記入力データを第1処理単位で順次読み出し、読み出したデータに対して、前記AI処理に含まれる第1演算を行う第1演算部と、
     前記入力データに対する前記第1演算の結果である演算結果データを記憶するための第2メモリと、
     前記第2メモリから前記演算結果データを第2処理単位で順次読み出し、読み出したデータに対して、前記AI処理に含まれる第2演算を行う第2演算部と、を備え、
     前記第2演算部は、前記入力データに対する前記第1演算が完了する前に、前記第2演算を開始する、
     演算回路。
  2.  前記第1演算部及び前記第2演算部の少なくとも一方は、前記第1演算又は前記第2演算として畳み込み演算を行う積和演算回路を含む、
     請求項1に記載の演算回路。
  3.  前記積和演算回路は、乗算を対数表現で行う、
     請求項2に記載の演算回路。
  4.  前記積和演算回路は、対数表現で行われた乗算結果を実数に変換した後、加算を行う、
     請求項3に記載の演算回路。
  5.  前記第2演算部は、前記演算結果データのうち前記第2処理単位分のデータが前記第2メモリに記憶される度に、前記第2演算を行う、
     請求項1~4のいずれか1項に記載の演算回路。
  6.  前記第2メモリのメモリ容量は、前記第2処理単位のデータ容量以上で、かつ、前記入力データに対応する前記演算結果データのデータ容量よりも小さい、
     請求項1~5のいずれか1項に記載の演算回路。
  7.  前記第1メモリを備え、
     前記第1メモリのメモリ容量は、前記第1処理単位のデータ容量以上で、かつ、前記入力データのデータ容量よりも小さい、
     請求項1~6のいずれか1項に記載の演算回路。
  8.  請求項1~7のいずれか1項に記載の演算回路を複数備え、
     複数の前記演算回路は、タイル状又はレイヤ状に配置されている、
     AI処理モジュール。
PCT/JP2020/029639 2020-08-03 2020-08-03 演算回路及びai処理モジュール WO2022029825A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/029639 WO2022029825A1 (ja) 2020-08-03 2020-08-03 演算回路及びai処理モジュール

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/029639 WO2022029825A1 (ja) 2020-08-03 2020-08-03 演算回路及びai処理モジュール

Publications (1)

Publication Number Publication Date
WO2022029825A1 true WO2022029825A1 (ja) 2022-02-10

Family

ID=80117173

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/029639 WO2022029825A1 (ja) 2020-08-03 2020-08-03 演算回路及びai処理モジュール

Country Status (1)

Country Link
WO (1) WO2022029825A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024033736A1 (ja) * 2022-08-10 2024-02-15 株式会社半導体エネルギー研究所 演算処理装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190205735A1 (en) * 2017-12-29 2019-07-04 Facebook, Inc. Lowering hardware for neural networks
US20190220734A1 (en) * 2016-10-11 2019-07-18 The Research Foundation For The State University Of New York System, Method, and Accelerator to Process Convolutional Neural Network Layers

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190220734A1 (en) * 2016-10-11 2019-07-18 The Research Foundation For The State University Of New York System, Method, and Accelerator to Process Convolutional Neural Network Layers
US20190205735A1 (en) * 2017-12-29 2019-07-04 Facebook, Inc. Lowering hardware for neural networks

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
FURUKAWA T., TOKUNAGA K., MORISHITA K., YASUI S.: "Modular network SOM (mnSOM): from vector space to function space", NEURAL NETWORKS, 2005. PROCEEDINGS. 2005 IEEE INTERNATIONAL JOINT CONF ERENCE ON MONTREAL, QUE., CANADA 31 JULY-4 AUG. 2005, PISCATAWAY, NJ, USA,IEEE, US, vol. 3, 31 July 2005 (2005-07-31) - 4 August 2005 (2005-08-04), US , pages 1581 - 1586, XP010866878, ISBN: 978-0-7803-9048-5, DOI: 10.1109/IJCNN.2005.1556114 *
HUANG, YICHAO ET AL.: "DeepFinger: A Cascade Convolutional Neuron Network Approach to Finger Key Point Detection in Egocentric Vision with Mobile Camera", PROCEEDINGS OF THE 2015 IEEE INTERNATIONAL CONFERENCE ON SYSTEMS, MAN, AND CYBERNETICS, 12 October 2015 (2015-10-12), pages 2944 - 2949, XP032847598, ISBN: 978-1-4799-8697-2, DOI: 10.1109/SMC.2015.512 *
KUDO, TAKUMI ET AL.: "Area and Energy Optimization for Bit-Serial Log-Quantized DNN Accelerator with Shared Accumulators", PROCEEDINGS OF THE 2018 IEEE 12TH INTERNATIONAL SYMPOSIUM ON EMBEDDED MULTICORE/MANY-CORE SYSTEMS-ON-CHIP (MCSOC, 14 September 2018 (2018-09-14), pages 237 - 243, XP033450115, ISBN: 978-1-5386-6689- 0, DOI: 10.1109/MCSoC2018.2018.00048 *
KURAMOCHI RYOSUKE; SADA YOUKI; SHIMODA MASAYUKI; SATO SHIMPEI; NAKAHARA HIROKI: "Many Universal Convolution Cores for Ensemble Sparse Convolutional Neural Networks", 2019 IEEE 13TH INTERNATIONAL SYMPOSIUM ON EMBEDDED MULTICORE/MANY-CORE SYSTEMS-ON-CHIP (MCSOC), IEEE, 1 October 2019 (2019-10-01), pages 93 - 100, XP033662614, DOI: 10.1109/MCSoC.2019.00021 *
KURAMOCHI, RYOSUKE ET AL.: "Many Universal Convolution Cores for Ensemble Sparse Convolutional Neural Networks", PROCEEDINGS OF THE 2019 IEEE 13TH INTERNATIONAL SYMPOSIUM ON EMBEDDED MULTICORE/MANY-CORE SYSTEMS-ON-CHIP (MCSOC, 4 October 2019 (2019-10-04), pages 93 - 100, XP033662614, ISBN: 978-1- 7281-4882-3, DOI: 10.1109/MCSoC.2019.00021 *
MORISHITA, KENJI; TOKUNAGA, NORIHIRO; YASUI, SHOZO; FURUKAWA, TETSUO: "Self-Organizing Map of 3D Objects by the Modular Network SOM (mnSOM)", IEICE TECHNICAL REPORT, vol. 104, no. 760 (NC2004-210), 23 March 2005 (2005-03-23), JP , pages 99 - 104, XP009534640, ISSN: 0913-5685 *
TAKUMI KUDO, KODAI UEYOSHI, KOTA ANDO, RYOTA UEMATSU, KAZUTOSHI HIROSE, MASAYUKI IKEBE, TETSUYA ASAI, MASATO MOTOMURA, SHINYA TAKA: "Surface Area Optimization Method for Variable Length Bit-Serial DNN Accelerator Using Logarithmic Quantization ", IEICE TECHNICAL REPORT, vol. 118, no. 63 (RECONF 2018-06), 17 May 2018 (2018-05-17), JP , pages 27 - 32, XP009534768, ISSN: 2432-6380 *
WU DUFAN, KIM KYUNGSANG, FAKHRI GEORGES EL, LI QUANZHENG: "A Cascaded Convolutional Nerual Network for X-ray Low-dose CT Image Denoising", ARXIV:1705.04267V2, 28 August 2017 (2017-08-28), XP055905418, Retrieved from the Internet <URL:https://arxiv.org/pdf/1705.04267v2.pdf> *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024033736A1 (ja) * 2022-08-10 2024-02-15 株式会社半導体エネルギー研究所 演算処理装置

Similar Documents

Publication Publication Date Title
EP3712820A1 (en) Methods and systems for implementing a convolution transpose layer of a neural network
US10394929B2 (en) Adaptive execution engine for convolution computing systems
US20210406010A1 (en) Processor and control method for processor
CN108416437B (zh) 用于乘加运算的人工神经网络的处理系统及方法
US11837503B2 (en) Scalable and flexible architectures for integrated circuit (IC) design and fabrication
US11461632B2 (en) Method and apparatus for adapting parameters of neural network
JP2021508895A (ja) ニューラルネットワークアレイの性能の改善
GB2568086A (en) Hardware implementation of convolution layer of deep neutral network
US11599367B2 (en) Method and system for compressing application data for operations on multi-core systems
WO2022029825A1 (ja) 演算回路及びai処理モジュール
US6785876B2 (en) Design method for semiconductor integrated circuit device
JP7401513B2 (ja) ハードウェアにおけるスパース行列乗算
Wang et al. Ai computing in light of 2.5 d interconnect roadmap: Big-little chiplets for in-memory acceleration
CN113656345A (zh) 一种计算器件、计算系统及计算方法
US20220269436A1 (en) Compute accelerated stacked memory
WO2021241048A1 (ja) Aiチップ
US20230376733A1 (en) Convolutional neural network accelerator hardware
TWI788257B (zh) 記憶體內計算巨集排列的方法、電腦可讀介質及電子裝置
KR20210077348A (ko) 데이터 처리 시스템 및 그 동작 방법
CN113656346B (zh) 一种三维芯片及计算系统
CN114662647A (zh) 处理用于神经网络的层的数据
Wu et al. Software-hardware co-optimization on partial-sum problem for PIM-based neural network accelerator
TWI825849B (zh) 存算一體裝置及相關的方法
EP4390711A1 (en) Performing an operation on an array of values at a processing unit
US20240069918A1 (en) Method and system for replicating core configurations

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20948370

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP