JP7462140B2 - Neural network circuit and neural network operation method - Google Patents

Neural network circuit and neural network operation method Download PDF

Info

Publication number
JP7462140B2
JP7462140B2 JP2019196326A JP2019196326A JP7462140B2 JP 7462140 B2 JP7462140 B2 JP 7462140B2 JP 2019196326 A JP2019196326 A JP 2019196326A JP 2019196326 A JP2019196326 A JP 2019196326A JP 7462140 B2 JP7462140 B2 JP 7462140B2
Authority
JP
Japan
Prior art keywords
data
unit
activation
layer
neural network
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2019196326A
Other languages
Japanese (ja)
Other versions
JP2021071772A (en
Inventor
太樹 尼崎
康宏 中原
純太郎 千竈
全広 飯田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kumamoto University NUC
Original Assignee
Kumamoto University NUC
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 Kumamoto University NUC filed Critical Kumamoto University NUC
Priority to JP2019196326A priority Critical patent/JP7462140B2/en
Publication of JP2021071772A publication Critical patent/JP2021071772A/en
Application granted granted Critical
Publication of JP7462140B2 publication Critical patent/JP7462140B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明はニューラルネットワーク回路及びニューラルネットワーク演算方法に関する。 The present invention relates to a neural network circuit and a neural network calculation method.

近年、複数のコンピュータで集めたデータを1つのコンピュータに集約し処理するこれまでのクラウドコンピューティングではなく、ユーザに近いコンピュータ(以下「エッジコンピュータ」という。)で処理をさせるエッジコンピューティングに注目が集まっている。さらに、近年の畳み込みニューラルネットワークの技術の進歩に伴い、エッジコンピュータで畳み込みニューラルネットワークを行わせることが提案されている。 In recent years, attention has been focused on edge computing, which processes data on computers closer to users (hereafter referred to as "edge computers"), rather than the conventional cloud computing, which consolidates data collected by multiple computers and processes it on a single computer. Furthermore, with recent advances in convolutional neural network technology, it has been proposed to run convolutional neural networks on edge computers.

特開2018-142049号公報JP 2018-142049 A 特開2018-160086号公報JP 2018-160086 A 特開2018-116469号公報JP 2018-116469 A 特開2017-21483号公報JP 2017-21483 A 特開2019-57072号公報JP 2019-57072 A

しかしながら、エッジコンピュータは畳み込みニューラルネットワークを実行するには十分な性能でない場合が多い。例えば、エッジコンピュータでは、畳み込みニューラルネットワークの実行に当たりメモリへのアクセスの回数が多くなり、演算速度が遅いという問題がある。 However, edge computers often do not have sufficient performance to run convolutional neural networks. For example, edge computers have the problem that they require a large number of memory accesses to run convolutional neural networks, resulting in slow calculation speeds.

上記事情に鑑み、本発明は、畳み込みニューラルネットワークにおける演算速度を向上させる技術を提供することを目的としている。 In view of the above, the present invention aims to provide a technology for improving the calculation speed in convolutional neural networks.

本発明の一態様は、畳み込みニューラルネットワークであって全結合層と複数の畳み込み層とを有する畳み込みニューラルネットワークにおける畳み込み層又は全結合層の処理を実行するニューラルネットワーク回路であって、各層に入力されるデータであってテンソルで表されるデータの各要素の値であるアクチベーションデータを記憶する第1記憶部と、前記畳み込み層又は前記全結合層で実行される処理のための重みデータを記憶する第2記憶部と、所定のタイミングで前記第1記憶部から1つの前記アクチベーションデータを読み出し、読み出した前記アクチベーションデータと前記重みデータのうちの重みデータに関する所定の条件を満たす1つの前記重みデータとの積の項の値である項値を取得する複数の演算部と、を備え、前記演算部が読み出した前記アクチベーションデータは、前記演算部が前記項値を演算した後に予め対応付けられた他の前記演算部に出力される、ニューラルネットワーク回路である。 One aspect of the present invention is a neural network circuit that executes processing of a convolutional layer or a fully connected layer in a convolutional neural network having a fully connected layer and multiple convolutional layers, the neural network circuit comprising: a first storage unit that stores activation data, which is the value of each element of data input to each layer and expressed as a tensor; a second storage unit that stores weight data for processing executed in the convolutional layer or the fully connected layer; and multiple calculation units that read one of the activation data from the first storage unit at a predetermined timing and obtain a term value that is the value of a term of the product of the read activation data and one of the weight data that satisfies a predetermined condition related to the weight data among the weight data, and the activation data read by the calculation unit is output to another of the calculation units that is previously associated with the activation data after the calculation unit calculates the term value.

本発明の一態様は、上記のニューラルネットワーク回路であって、前記畳み込み層の処理は畳み込み積分であって、前記畳み込み積分の実行時の前記重みデータは、前記畳み込み積分を実行するためのフィルタの各値であるフィルタ係数である。 One aspect of the present invention is the above-mentioned neural network circuit, in which the processing of the convolution layer is a convolution integral, and the weight data when the convolution integral is performed are filter coefficients, which are the values of a filter for performing the convolution integral.

本発明の一態様は、上記のニューラルネットワーク回路であって、前記全結合層の処理の実行時の前記重みデータは、前記全結合層の処理に用いられる重み係数である。 One aspect of the present invention is the above-mentioned neural network circuit, in which the weight data when the processing of the fully connected layer is executed is a weight coefficient used in the processing of the fully connected layer.

本発明の一態様は、畳み込みニューラルネットワークであって全結合層と複数の畳み込み層とを有する畳み込みニューラルネットワークにおける畳み込み層又は全結合層の処理を実行するニューラルネットワーク回路であって、各層に入力されるデータであってテンソルで表されるデータの各要素の値であるアクチベーションデータを記憶する第1記憶部と、前記畳み込み層又は前記全結合層で実行される処理のための重みデータを記憶する第2記憶部と、所定のタイミングで前記第1記憶部から1つの前記アクチベーションデータを読み出し、読み出した前記アクチベーションデータと前記重みデータのうちの重みデータに関する所定の条件を満たす1つの前記重みデータとの積の項の値である項値を取得する複数の演算部と、を備え、前記演算部が読み出した前記アクチベーションデータは、前記演算部が前記項値を演算した後に予め対応付けられた他の前記演算部に出力されるニューラルネットワーク回路が実行するニューラルネットワーク演算方法であって、前記演算部が、所定のタイミングで前記第1記憶部から1つの前記アクチベーションデータを読み出し、読み出した前記アクチベーションデータと前記重みデータのうちの重みデータに関する所定の条件を満たす1つの前記重みデータとの積の項の値である項値を取得する取得ステップと、前記演算部が読み出した前記アクチベーションデータが、前記演算部が前記項値を演算した後に予め対応付けられた他の前記演算部に出力される出力ステップと、を有するニューラルネットワーク演算方法である。 One aspect of the present invention is a neural network circuit that executes processing of a convolutional layer or a fully connected layer in a convolutional neural network having a fully connected layer and multiple convolutional layers, the neural network circuit comprising: a first storage unit that stores activation data, which is the value of each element of data that is input to each layer and is expressed as a tensor; a second storage unit that stores weight data for processing executed in the convolutional layer or the fully connected layer; and multiple calculation units that read out one of the activation data from the first storage unit at a predetermined timing and obtain a term value that is the value of a term of the product of the read out activation data and one of the weight data that satisfies a predetermined condition related to the weight data. The activation data read by the calculation unit is output to another calculation unit associated with the activation data after the calculation unit calculates the term value. The neural network calculation method includes an acquisition step in which the calculation unit reads one of the activation data from the first storage unit at a predetermined timing and acquires a term value that is the value of a term of a product of the read activation data and one of the weight data that satisfies a predetermined condition related to the weight data, and an output step in which the activation data read by the calculation unit is output to the other calculation unit associated with the activation data after the calculation unit calculates the term value.

本発明により、畳み込みニューラルネットワークにおける演算速度を向上させることができる。 This invention makes it possible to improve the calculation speed in convolutional neural networks.

実施形態のニューラルネットワーク回路1の機能構成図の一例を示す図。FIG. 2 is a diagram showing an example of a functional configuration diagram of the neural network circuit 1 according to the embodiment. 実施形態の単位処理部100における情報の流れの一例を説明する説明図。FIG. 4 is an explanatory diagram illustrating an example of an information flow in a unit processing unit 100 of the embodiment. 実施形態の単位処理部100間の情報の流れの一例を説明する説明図。FIG. 4 is an explanatory diagram illustrating an example of an information flow between unit processing sections 100 of the embodiment. 実施形態の単位処理部100間のコンフィギュレーションデータの流れの一例を説明する説明図。FIG. 4 is an explanatory diagram illustrating an example of a flow of configuration data between unit processing units 100 of the embodiment. 実施形態の積和演算部102における処理の流れの一例を説明する説明図。FIG. 4 is an explanatory diagram illustrating an example of a processing flow in a product-sum calculation unit 102 according to the embodiment. 実施形態のニューラルネットワーク回路1が実行する畳み込み処理を説明する第1の説明図。FIG. 2 is a first explanatory diagram illustrating a convolution process executed by the neural network circuit 1 according to the embodiment. 実施形態のニューラルネットワーク回路1が実行する畳み込み演算を説明する第2の説明図。FIG. 2 is a second explanatory diagram illustrating the convolution operation executed by the neural network circuit 1 according to the embodiment. 実施形態の第1バッファ記憶部11から各単位処理部100へ出力される情報の流れを説明する図。5 is a diagram for explaining the flow of information output from a first buffer memory unit 11 to each unit processing unit 100 in the embodiment. 実施形態の第2バッファ記憶部12から各単位処理部100へ出力される情報の流れを説明する図。5 is a diagram for explaining the flow of information output from the second buffer memory unit 12 to each unit processing unit 100 in the embodiment. FIG. 実施形態の単位処理部100から第1バッファ記憶部11へ出力される情報の流れを説明する図。5 is a diagram for explaining the flow of information output from the unit processing unit 100 to a first buffer memory unit 11 in the embodiment. 実施形態の単位処理部100から第2バッファ記憶部12へ出力される情報の流れを説明する図。5 is a diagram for explaining the flow of information output from the unit processing unit 100 to a second buffer memory unit 12 in the embodiment. FIG. 実施形態の第1バッファ記憶部11から主演算部10へ出力される情報の出力先を説明する図。5A and 5B are diagrams for explaining destinations of information output from a first buffer memory unit 11 to a main processing unit 10 according to an embodiment. 実施形態の主演算部10から第1バッファ記憶部11へ出力される情報の出力元を説明する図。4 is a diagram for explaining the source of information output from the main processing unit 10 to a first buffer memory unit 11 according to the embodiment. FIG. 実施形態における畳み込み処理の1番目の処理を説明する説明図。FIG. 4 is an explanatory diagram for explaining a first process of the convolution process in the embodiment. 実施形態における畳み込み処理の2番目の処理を説明する説明図。FIG. 11 is an explanatory diagram for explaining a second process of the convolution process in the embodiment. 実施形態における畳み込み処理の3番目の処理を説明する説明図。FIG. 11 is an explanatory diagram for explaining a third process of the convolution process in the embodiment. 実施形態における畳み込み処理の4番目の処理を説明する説明図。FIG. 11 is an explanatory diagram for explaining a fourth process of the convolution process in the embodiment. 実施形態における畳み込み処理の5番目の処理を説明する説明図。FIG. 11 is an explanatory diagram for explaining a fifth process of the convolution process in the embodiment. 実施形態における畳み込み処理の6番目の処理を説明する説明図。FIG. 11 is an explanatory diagram for explaining a sixth process of the convolution process in the embodiment. 実施形態における畳み込み処理の7番目の処理を説明する説明図。FIG. 11 is an explanatory diagram for explaining a seventh process of the convolution process in the embodiment. 実施形態における畳み込み処理の流れの一例を説明するフローチャート。11 is a flowchart illustrating an example of the flow of a convolution process according to the embodiment. 実施形態における全結合処理の概要を説明する説明図。FIG. 4 is an explanatory diagram illustrating an overview of a full join process according to an embodiment. 実施形態の全結合処理の実行時の単位処理部100間のデータの流れの一例を説明する第1の説明図。FIG. 4 is a first explanatory diagram illustrating an example of a data flow between the unit processing units 100 when the all-join process of the embodiment is executed. 実施形態の全結合処理の実行時の単位処理部100間のデータの流れの一例を説明する第2の説明図。FIG. 11 is a second explanatory diagram illustrating an example of the data flow between the unit processing units 100 when the all-join process of the embodiment is executed. 実施形態における全結合処理の1番目の処理の一例を説明する説明図。FIG. 11 is an explanatory diagram illustrating an example of a first process of a full joining process according to the embodiment. 実施形態における全結合処理の2番目の処理の一例を説明する第1の説明図。FIG. 11 is a first explanatory diagram illustrating an example of a second process of the full joining process according to the embodiment. 実施形態における全結合処理の2番目の処理の一例を説明する第2の説明図。FIG. 11 is a second explanatory diagram illustrating an example of the second process of the full joining process in the embodiment. 実施形態における全結合処理の3番目の処理の一例を説明する説明図。FIG. 11 is an explanatory diagram illustrating an example of a third process of the full joining process according to the embodiment. 実施形態における全結合処理の4番目の処理の一例を説明する説明図。FIG. 11 is an explanatory diagram illustrating an example of a fourth process of the full joining process according to the embodiment. 実施形態における全結合処理の5番目の処理の一例を説明する説明図。FIG. 11 is an explanatory diagram illustrating an example of a fifth process of the full joining process according to the embodiment. 実施形態における全結合処理の6番目の処理の一例を説明する説明図。FIG. 11 is an explanatory diagram illustrating an example of a sixth process of the full joining process according to the embodiment. 実施形態における全結合処理の流れの一例を示すフローチャート。11 is a flowchart showing an example of the flow of a full join process in the embodiment.

以下、実施形態のニューラルネットワーク回路及びニューラルネットワーク演算方法を、図面を参照して説明する。なお、以下の説明において接続とは電気的な接続を意味する。また、以下の説明においては、同一の回路とは、回路素子間の相対的な位置が同一であることを意味する。相対的な位置とは、基準となる回路素子から見た他の回路素子の位置を意味する。同一の回路とは、回路素子間の接続関係が同一であることは必ずしも意味しない。 The neural network circuit and neural network calculation method of the embodiment will be described below with reference to the drawings. In the following description, connection means electrical connection. In the following description, the same circuit means that the relative positions between circuit elements are the same. Relative position means the position of another circuit element as viewed from a reference circuit element. The same circuit does not necessarily mean that the connection relationships between circuit elements are the same.

図1は、実施形態のニューラルネットワーク回路1の機能構成図の一例を示す図である。ニューラルネットワーク回路1は、自装置に接続された第1外部メモリ91、第2外部メモリ92及び制御用外部メモリ93から全結合層を有する畳み込みニューラルネットワークによる処理の対象のデータを取得する。第1外部メモリ91及び第2外部メモリ92は、半導体記憶装置などの記憶装置を用いて構成される。第1外部メモリ91及び第2外部メモリ92は、例えば、DRAM(Dynamic Random Access Memory)である。制御用外部メモリ93は、半導体記憶装置などの記憶装置を用いて構成される。制御用外部メモリ93は、例えば、フラッシュメモリである。 FIG. 1 is a diagram showing an example of a functional configuration diagram of a neural network circuit 1 according to an embodiment. The neural network circuit 1 acquires data to be processed by a convolutional neural network having a fully connected layer from a first external memory 91, a second external memory 92, and a control external memory 93 connected to the neural network circuit 1. The first external memory 91 and the second external memory 92 are configured using a storage device such as a semiconductor storage device. The first external memory 91 and the second external memory 92 are, for example, a DRAM (Dynamic Random Access Memory). The control external memory 93 is configured using a storage device such as a semiconductor storage device. The control external memory 93 is, for example, a flash memory.

ニューラルネットワーク回路1は、取得したデータに基づいて畳み込みニューラルネットワークの各畳み込み層の畳み込み積分を実行する。また、ニューラルネットワーク回路1は、取得したデータに基づいて、全結合層を有する畳み込みニューラルネットワークの全結合層における処理を実行する。全結合層における処理は、具体的には積和演算である。 The neural network circuit 1 executes convolution integrals in each convolution layer of the convolution neural network based on the acquired data. The neural network circuit 1 also executes processing in the fully connected layer of the convolution neural network, which has a fully connected layer, based on the acquired data. Specifically, the processing in the fully connected layer is a product-sum operation.

ニューラルネットワーク回路1は、第1バッファ記憶部11、第2バッファ記憶部12、制御用バッファ記憶部13、制御部14及び主演算部10を備える。 The neural network circuit 1 includes a first buffer memory unit 11, a second buffer memory unit 12, a control buffer memory unit 13, a control unit 14, and a main calculation unit 10.

第1バッファ記憶部11は、半導体記憶装置などの記憶装置のうち一時的記録媒体を用いて構成される。第1バッファ記憶部11は、第1外部メモリ91、主演算部10及び制御部14に接続される。第1バッファ記憶部11は、第1外部メモリ91が出力したデータを一時的に記憶する。第1バッファ記憶部11は、主演算部10が出力したデータを一時的に記憶する。第1バッファ記憶部11は、制御部14によって制御されて動作する。第1バッファ記憶部11は、記憶したデータを所定のタイミングで主演算部10又は第1外部メモリ91に出力する。 The first buffer memory unit 11 is constructed using a temporary recording medium from among memory devices such as semiconductor memory devices. The first buffer memory unit 11 is connected to the first external memory 91, the main calculation unit 10, and the control unit 14. The first buffer memory unit 11 temporarily stores data output by the first external memory 91. The first buffer memory unit 11 temporarily stores data output by the main calculation unit 10. The first buffer memory unit 11 operates under the control of the control unit 14. The first buffer memory unit 11 outputs the stored data to the main calculation unit 10 or the first external memory 91 at a predetermined timing.

第1バッファ記憶部11は、例えば、アクチベーションデータを記憶する。アクチベーションデータは、畳み込みニューラルネットワークの各層に入力されるデータであってテンソルで表されるデータ(以下「層入力データ」という。)の各要素の値である。層入力データは、0階のテンソル(すなわちスカラー)で表されてもよいし、1階のテンソル(すなわちベクトル)で表されてもよいし、2階以上のテンソルで表されてもよい。層入力データは、例えばチャネル数がv1であって各チャネルのデータはv2行v3列の行列で表される場合、3階のテンソルで表されるデータである。 The first buffer memory unit 11 stores, for example, activation data. The activation data is the value of each element of data (hereinafter referred to as "layer input data") that is input to each layer of a convolutional neural network and is expressed as a tensor. The layer input data may be expressed as a 0th-order tensor (i.e., a scalar), a 1st-order tensor (i.e., a vector), or a 2nd-order or higher-order tensor. For example, when the number of channels is v1 and the data of each channel is expressed as a matrix with v2 rows and v3 columns, the layer input data is data expressed as a 3rd-order tensor.

第1バッファ記憶部11は、例えば、コンフィギュレーションデータを記憶する。コンフィギュレーションデータは、詳細を後述する主演算部10が備える複数の単位処理部100間の接続関係を示すデータである。単位処理部100は、1つの他の単位処理部100に接続されてもよいし、複数の他の単位処理部100に接続されてもよい。 The first buffer memory unit 11 stores, for example, configuration data. The configuration data is data that indicates the connection relationships between multiple unit processing units 100 provided in the main processing unit 10, the details of which will be described later. A unit processing unit 100 may be connected to one other unit processing unit 100, or may be connected to multiple other unit processing units 100.

第2バッファ記憶部12は、半導体記憶装置などの記憶装置のうち一時的記録媒体を用いて構成される。第2バッファ記憶部12は、第2外部メモリ92、主演算部10及び制御部14に接続される。第2バッファ記憶部12は、第2外部メモリ92が出力したデータを一時的に記憶する。第2バッファ記憶部12は、制御部14によって制御されて動作する。 The second buffer memory unit 12 is configured using a temporary recording medium from among memory devices such as semiconductor memory devices. The second buffer memory unit 12 is connected to the second external memory 92, the main processing unit 10, and the control unit 14. The second buffer memory unit 12 temporarily stores data output by the second external memory 92. The second buffer memory unit 12 operates under the control of the control unit 14.

第2バッファ記憶部12は、記憶したデータを所定のタイミングで主演算部10に出力する。第2バッファ記憶部12は、例えば、畳み込みを実行するための各層の1又は複数のフィルタ(以下「畳み込みフィルタ」という。)の各要素の値(以下「フィルタ係数」という。)を記憶する。また、第2バッファ記憶部12は、例えば、全結合層の処理における重み(以下「全結合係数」という。)を記憶する。 The second buffer memory unit 12 outputs the stored data to the main calculation unit 10 at a predetermined timing. The second buffer memory unit 12 stores, for example, the values of each element (hereinafter referred to as "filter coefficients") of one or more filters (hereinafter referred to as "convolution filters") in each layer for performing convolution. The second buffer memory unit 12 also stores, for example, the weights (hereinafter referred to as "fully connected coefficients") in the processing of the fully connected layer.

制御用バッファ記憶部13は、半導体記憶装置などの記憶装置のうち一時的記録媒体を用いて構成される。制御用バッファ記憶部13は、制御用外部メモリ93及び制御部14に接続される。制御用バッファ記憶部13は、制御用外部メモリ93が出力したデータを一時的に記憶する。制御用バッファ記憶部13は、記憶したデータを所定のタイミングで制御部14に出力する。制御用バッファ記憶部13は、例えば、マイクロコード等の制御命令を記憶する。 The control buffer memory unit 13 is configured using a temporary recording medium from among memory devices such as semiconductor memory devices. The control buffer memory unit 13 is connected to the control external memory 93 and the control unit 14. The control buffer memory unit 13 temporarily stores data output by the control external memory 93. The control buffer memory unit 13 outputs the stored data to the control unit 14 at a predetermined timing. The control buffer memory unit 13 stores control commands such as microcode, for example.

制御部14は、ニューラルネットワーク回路1が備える各機能部の動作を制御する。具体的には、バスで接続されたCPU(Central Processing Unit)等のプロセッサとメモリとを備え、プログラムを実行する。制御部14は、プログラムの実行によってニューラルネットワーク回路1が備える各機能部の動作を制御する。制御部14は、例えば、第1バッファ記憶部11と第2バッファ記憶部12と主演算部10の動作とを制御することで、後述する畳み込み処理の実行を制御する。制御部14は、例えば、第1バッファ記憶部11と第2バッファ記憶部12と主演算部10の動作とを制御することで、後述する全結合処理の実行を制御する。制御部14は、例えば、コンフィギュレーションデータを第1バッファ記憶部11から主演算部10に入力させるタイミングを制御する。制御部14は、例えば、第1バッファ記憶部11から主演算部10に入力させるコンフィギュレーションデータを入力させるタイミングに合わせて選択する機能を有する。制御部14は、例えば、コンフィギュレーションデータに基づいて接続先を変更する後述する接続部101の動作を制御する。 The control unit 14 controls the operation of each functional unit included in the neural network circuit 1. Specifically, the control unit 14 includes a processor such as a CPU (Central Processing Unit) and a memory connected by a bus, and executes a program. The control unit 14 controls the operation of each functional unit included in the neural network circuit 1 by executing the program. For example, the control unit 14 controls the operation of the first buffer memory unit 11, the second buffer memory unit 12, and the main calculation unit 10 to control the execution of a convolution process described later. For example, the control unit 14 controls the operation of the first buffer memory unit 11, the second buffer memory unit 12, and the main calculation unit 10 to control the execution of a full connection process described later. For example, the control unit 14 controls the timing of inputting configuration data from the first buffer memory unit 11 to the main calculation unit 10. For example, the control unit 14 has a function of selecting the configuration data to be input from the first buffer memory unit 11 to the main calculation unit 10 according to the timing of input. For example, the control unit 14 controls the operation of a connection unit 101 described later that changes the connection destination based on the configuration data.

主演算部10は、畳み込みニューラルネットワークの各畳み込み層の畳み込み積分を実行する。また、主演算部10は、全結合層を有する畳み込みニューラルネットワークの全結合層における処理を実行する。 The main calculation unit 10 executes the convolution integral of each convolution layer of the convolutional neural network. The main calculation unit 10 also executes processing in the fully connected layer of the convolutional neural network that has a fully connected layer.

主演算部10は、格子状に複数個配置された単位処理部100を備える。単位処理部100は、接続部101と積和演算部102とを備える。接続部101は、積和演算部102を予め対応付けられた他の単位処理部100と、第1バッファ記憶部11と、第2バッファ記憶部12とに接続するためのインタフェースである。接続部101の予め対応付けられた他の単位処理部100は、コンフィギュレーションデータが示す他の単位処理部100である。 The main processing unit 10 has a plurality of unit processing units 100 arranged in a lattice pattern. Each unit processing unit 100 has a connection unit 101 and a product-sum calculation unit 102. The connection unit 101 is an interface for connecting the product-sum calculation unit 102 to other unit processing units 100 that are associated in advance, the first buffer memory unit 11, and the second buffer memory unit 12. The other unit processing units 100 that are associated in advance with the connection unit 101 are other unit processing units 100 indicated by the configuration data.

接続部101は、所定のタイミングで、コンフィギュレーションデータに基づいて接続先の単位処理部100を変更する。より具体的には、接続部101は、所定のタイミングで、コンフィギュレーションデータが示す接続先に接続するように配線を変更する。配線の変更方法は、FPGA(field-programmable gate array)と同様である。FPGAと同様の方法とは、具体的には、コンフィグレーションメモリに対して外部よりコンフィグレーションデータをダウンロードする方法である。所定のタイミングは、例えば、ニューラルネットワーク回路1の動作開始時である。所定のタイミングは、例えば、畳み込みニューラルネットワークの各畳み込み層の処理が終了した後であって全結合層による処理が開始される前のタイミングであってもよい。 The connection unit 101 changes the destination unit processing unit 100 based on the configuration data at a predetermined timing. More specifically, the connection unit 101 changes the wiring so as to connect to the destination indicated by the configuration data at a predetermined timing. The method of changing the wiring is similar to that of an FPGA (field-programmable gate array). Specifically, the method similar to that of an FPGA is a method of downloading configuration data from the outside to the configuration memory. The predetermined timing is, for example, the start of operation of the neural network circuit 1. The predetermined timing may be, for example, a timing after the processing of each convolution layer of the convolutional neural network is completed and before the processing by the fully connected layer is started.

積和演算部102は、積和演算を実行する。積和演算部102は、積和演算の実行結果に基づいて活性を取得する。積和演算部102は、取得した活性を予め定められた所定の活性化関数に入力し活性化関数による演算の結果(以下「活性結果」という。)を取得する。活性化関数は、ステップ関数であってもよいし、シグモイド関数であってもよいし、ReLU関数であってもよいし、恒等関数であってもよいし、ソフトマックス関数であってもよい。活性結果は、例えば、次段の層にアクチベーションデータとして入力される。 The product-sum calculation unit 102 executes a product-sum calculation. The product-sum calculation unit 102 acquires activation based on the result of the product-sum calculation. The product-sum calculation unit 102 inputs the acquired activation to a predetermined activation function and acquires the result of the calculation using the activation function (hereinafter referred to as the "activation result"). The activation function may be a step function, a sigmoid function, a ReLU function, an identity function, or a softmax function. The activation result is input to the next layer, for example, as activation data.

各単位処理部100は単位処理部100ごとの専用の導線によって接続部101を介して第1バッファ記憶部11に接続される。また、各単位処理部100は単位処理部100ごとの専用の導線によって接続部101を介して第2バッファ記憶部12に接続される。専用とは、第1バッファ記憶部11又は第2バッファ記憶部12と他の単位処理部100との間の情報の送受信には使用されないことを意味する。 Each unit processing unit 100 is connected to the first buffer memory unit 11 via the connection unit 101 by a conductor dedicated to each unit processing unit 100. Also, each unit processing unit 100 is connected to the second buffer memory unit 12 via the connection unit 101 by a conductor dedicated to each unit processing unit 100. "Dedicated" means that it is not used to send or receive information between the first buffer memory unit 11 or the second buffer memory unit 12 and other unit processing units 100.

図2は、実施形態の単位処理部100における情報の流れの一例を説明する説明図である。接続部101は、入力制御回路111、重み制御回路112及び出力制御回路113を備える。積和演算部102は、積和演算回路201及び活性化回路202を備える。 FIG. 2 is an explanatory diagram illustrating an example of the flow of information in the unit processing unit 100 of the embodiment. The connection unit 101 includes an input control circuit 111, a weight control circuit 112, and an output control circuit 113. The product-sum calculation unit 102 includes a product-sum calculation circuit 201 and an activation circuit 202.

入力制御回路111は、第1バッファ記憶部11からコンフィギュレーションデータを取得する。入力制御回路111は、取得したコンフィギュレーションデータに基づき、取得したコンフィギュレーションデータが示す接続先に接続される。入力制御回路111は、第1バッファ記憶部11が出力したアクチベーションデータを取得する。入力制御回路111は、接続先の単位処理部100が出力したアクチベーションデータを取得する。 The input control circuit 111 acquires configuration data from the first buffer memory unit 11. Based on the acquired configuration data, the input control circuit 111 connects to the connection destination indicated by the acquired configuration data. The input control circuit 111 acquires the activation data output by the first buffer memory unit 11. The input control circuit 111 acquires the activation data output by the connected unit processing unit 100.

入力制御回路111は、接続先の単位処理部100にアクチベーションデータを出力する。入力制御回路111は、接続先の単位処理部100にコンフィギュレーションデータを出力する。接続先の単位処理部100は、コンフィギュレーションデータに基づき接続されたコンフィギュレーションデータが示す接続先である。入力制御回路111は、レジスタ114を備える。レジスタ114は、取得したコンフィギュレーションデータ及びアクチベーションデータを記憶する。 The input control circuit 111 outputs activation data to the connected unit processing unit 100. The input control circuit 111 outputs configuration data to the connected unit processing unit 100. The connected unit processing unit 100 is the connection destination indicated by the configuration data connected based on the configuration data. The input control circuit 111 includes a register 114. The register 114 stores the acquired configuration data and activation data.

重み制御回路112は、第2バッファ記憶部12からフィルタ係数及び全結合係数を取得する。重み制御回路112は、レジスタ115を備える。レジスタ115は、取得したフィルタ係数及び全結合係数を記憶する。 The weight control circuit 112 acquires the filter coefficients and all the coupling coefficients from the second buffer memory unit 12. The weight control circuit 112 includes a register 115. The register 115 stores the acquired filter coefficients and all the coupling coefficients.

出力制御回路113は、積和演算部102に接続される。出力制御回路113は、積和演算部102の演算結果である活性結果を取得する。出力制御回路113は、第1バッファ記憶部11へ活性結果を出力する。出力制御回路113は、レジスタ116を備える。レジスタ116は、取得した活性結果を記憶する。出力制御回路113は、活性結果を入力制御回路111に入力するための導線(以下「フィードバック導線118」という。)を備える。フィードバック導線118は、単位処理部100が外部メモリを介さずに活性結果を自身にフィードバックする場合に使用される。より詳しくは、単位処理部100が外部メモリを介さずに活性結果を自身にフィードバックする場合に、制御部14の制御によって、出力制御回路1が出力した活性結果がフィードバック導線118を介して入力制御回路111に入力される。 The output control circuit 113 is connected to the sum-of-products calculation unit 102. The output control circuit 113 acquires the activation result, which is the calculation result of the sum-of-products calculation unit 102. The output control circuit 113 outputs the activation result to the first buffer memory unit 11. The output control circuit 113 includes a register 116. The register 116 stores the acquired activation result. The output control circuit 113 includes a conductor (hereinafter referred to as the "feedback conductor 118") for inputting the activation result to the input control circuit 111. The feedback conductor 118 is used when the unit processing unit 100 feeds back the activation result to itself without going through an external memory. More specifically, when the unit processing unit 100 feeds back the activation result to itself without going through an external memory, the activation result output by the output control circuit 1 is input to the input control circuit 111 via the feedback conductor 118 under the control of the control unit 14.

積和演算回路201は、入力制御回路111、重み制御回路112及び活性化回路202に接続される回路である。積和演算回路201は、入力制御回路111を介して、第1バッファ記憶部11又は接続先の他の単位処理部100からアクチベーションデータを取得する。積和演算回路201は、重み制御回路112を介して第2バッファ記憶部12からフィルタ係数又は全結合係数を取得する。積和演算回路201は取得したアクチベーションデータと、フィルタ係数又は全結合係数とに基づいて積和演算を実行し活性を取得する。積和演算回路201は、レジスタ117を備える。レジスタ117は、積和演算の演算途中の結果である中間値を記憶する。レジスタ117は、活性を記憶してもよい。積和演算回路201は取得した活性を活性化回路202に出力する。 The sum-of-products calculation circuit 201 is a circuit connected to the input control circuit 111, the weight control circuit 112, and the activation circuit 202. The sum-of-products calculation circuit 201 acquires activation data from the first buffer memory unit 11 or another connected unit processing unit 100 via the input control circuit 111. The sum-of-products calculation circuit 201 acquires filter coefficients or full coupling coefficients from the second buffer memory unit 12 via the weight control circuit 112. The sum-of-products calculation circuit 201 executes sum-of-products calculation based on the acquired activation data and the filter coefficients or full coupling coefficients to acquire activity. The sum-of-products calculation circuit 201 includes a register 117. The register 117 stores intermediate values that are the results of the sum-of-products calculation. The register 117 may store activity. The sum-of-products calculation circuit 201 outputs the acquired activity to the activation circuit 202.

活性化回路202は、積和演算回路201の出力(すなわち活性)を取得する。活性化回路202は、取得した活性を予め定められた所定の活性化関数に入力する。活性化回路202は、活性化関数による演算の結果である活性結果を取得する。活性化回路202は、取得した活性結果を出力制御回路113に出力する。 The activation circuit 202 acquires the output (i.e., activity) of the product-sum calculation circuit 201. The activation circuit 202 inputs the acquired activity to a predetermined activation function. The activation circuit 202 acquires an activity result that is the result of the calculation using the activation function. The activation circuit 202 outputs the acquired activity result to the output control circuit 113.

図3は、実施形態の単位処理部100間の情報の流れの一例を説明する説明図である。
図3は、単位処理部100間の情報の流れを説明するための具体例として、単位処理部100-1、100-2、100-3、100-4及び100-5の5つの単位処理部100の間の情報の流れを示す。単位処理部100-1は、単位処理部100-2、100-3、100-4及び100-5の4つの他の単位処理部100に接続される。単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-2に情報を出力する。情報は、例えば、アクチベーションデータである。単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-2から情報を取得する。
FIG. 3 is an explanatory diagram illustrating an example of the flow of information between the unit processing units 100 of the embodiment.
3 shows the flow of information between five unit processing units 100, 100-1, 100-2, 100-3, 100-4, and 100-5, as a specific example for explaining the flow of information between the unit processing units 100. The unit processing unit 100-1 is connected to four other unit processing units 100, 100-2, 100-3, 100-4, and 100-5. The unit processing unit 100-1 outputs information to the unit processing unit 100-2, which is one of the other unit processing units 100 to which it is connected. The information is, for example, activation data. The unit processing unit 100-1 acquires information from the unit processing unit 100-2, which is one of the other unit processing units 100 to which it is connected.

単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-3に情報を出力する。単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-3から情報を取得する。単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-4に情報を出力する。単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-4から情報を取得する。単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-5に情報を出力する。単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-5から情報を取得する。 The unit processing unit 100-1 outputs information to the unit processing unit 100-3, which is one of the other unit processing units 100 to which it is connected. The unit processing unit 100-1 acquires information from the unit processing unit 100-3, which is one of the other unit processing units 100 to which it is connected. The unit processing unit 100-1 outputs information to the unit processing unit 100-4, which is one of the other unit processing units 100 to which it is connected. The unit processing unit 100-1 acquires information from the unit processing unit 100-4, which is one of the other unit processing units 100 to which it is connected. The unit processing unit 100-1 outputs information to the unit processing unit 100-5, which is one of the other unit processing units 100 to which it is connected. The unit processing unit 100-1 acquires information from the unit processing unit 100-5, which is one of the other unit processing units 100 to which it is connected.

図4は、実施形態の単位処理部100間のコンフィギュレーションデータの流れの一例を説明する説明図である。
単位処理部100に入力されたコンフィギュレーションデータはレジスタ114に記憶される。レジスタ114に記憶されたコンフィギュレーションデータに基づいて単位処理部100は、コンフィギュレーションデータが示す他の単位処理部100に接続される。コンフィギュレーションデータは、接続先の他の単位処理部100に出力される。
FIG. 4 is an explanatory diagram illustrating an example of the flow of configuration data between the unit processing units 100 of the embodiment.
The configuration data input to the unit processing unit 100 is stored in the register 114. Based on the configuration data stored in the register 114, the unit processing unit 100 is connected to another unit processing unit 100 indicated by the configuration data. The configuration data is output to the other unit processing unit 100 as the connection destination.

図5は、実施形態の積和演算部102における処理の流れの一例を説明する説明図である。
積和演算部102では、積和演算が実行される。図5においてxはアクチベーションデータを表し、wはフィルタ係数又は全結合係数を表す。積和演算の中間値は、レジスタ117に記憶される。積和演算の結果である活性(図5におけるu)は活性化関数に入力される。図5においてzは、活性uに対応する活性結果を表す。以下、説明の簡単のため、活性化関数は値が1の恒等関数であって活性結果zと活性uとが同一である場合を例にニューラルネットワーク回路1を説明する。
FIG. 5 is an explanatory diagram illustrating an example of a processing flow in the product-sum calculation unit 102 according to the embodiment.
The product-sum operation unit 102 executes the product-sum operation. In Fig. 5, x represents activation data, and w represents a filter coefficient or a full connection coefficient. The intermediate value of the product-sum operation is stored in the register 117. The activation (u in Fig. 5) which is the result of the product-sum operation is input to the activation function. In Fig. 5, z represents the activation result corresponding to the activation u. For simplicity of explanation, the neural network circuit 1 will be explained below taking as an example a case where the activation function is an identity function with a value of 1, and the activation result z is the same as the activation u.

<畳み込み層における畳み込み積分の処理>
主演算部10が実行する畳み込み層の畳み込み積分の処理(以下「畳み込み処理」という。)について図6~図21を用いて説明する。
<Processing of convolution integrals in the convolution layer>
The convolution integral process of the convolution layer (hereinafter referred to as "convolution process") executed by the main calculation unit 10 will be described with reference to Figs. 6 to 21.

図6は、実施形態のニューラルネットワーク回路1が実行する畳み込み処理を説明する第1の説明図である。
図6では、説明の簡単のため、I行J列の2階のテンソルで表される層入力データD101の各要素のうちi行j列の要素の値x(i、j)から(i+2)行(j+2)列の要素の値x(i+2、j+2)までの9つの要素を用いて畳み込み処理を説明する。Iは1以上の整数であり、Jは1以上の整数である。iは0以上(I-1)以下の整数であり、jは0以上(J-1)以下の整数である。層入力データD101のチャネル数は1である。以下、アクチベーションデータx(A、B)のAを、アクチベーションデータxの2指標表示の第1指標という。以下、アクチベーションデータx(A、B)のBを、アクチベーションデータxの2指標表示の第2指標という。なお、アクチベーションデータxの2指標表示とは、アクチベーションデータxが2つの指標によって他のアクチベーションデータxと区別される値であることを意味する。なお、以下、説明の中で、上述したA、B以外にもC、D、Eの記号が使われるが、C、D、EもまたA、Bと同様に1つのものを他のものと区別するための指標を示す記号である。
FIG. 6 is a first explanatory diagram illustrating the convolution process executed by the neural network circuit 1 of the embodiment.
In FIG. 6, for the sake of simplicity, the convolution process is described using nine elements from the value x(i, j) of the element in row i and column j to the value x(i+2, j+2) of the element in row (j+2) and column (j+2) of the layer input data D101 represented by a second-order tensor with row I and column J. I is an integer of 1 or more, and J is an integer of 1 or more. i is an integer of 0 or more (I-1) and j is an integer of 0 or more (J-1). The number of channels of the layer input data D101 is 1. Hereinafter, A of the activation data x(A,B) is referred to as the first index of the two-index display of the activation data x. Hereinafter, B of the activation data x(A,B) is referred to as the second index of the two-index display of the activation data x. The two-index display of the activation data x means that the activation data x is a value that is distinguished from other activation data x by two indexes. In the following explanation, in addition to the above-mentioned A and B, the symbols C, D, and E will also be used. Like A and B, C, D, and E are also symbols that indicate indicators for distinguishing one thing from another.

上述したように、畳み込みフィルタは、各層において必ずしも1つではなく複数存在してもよい。図6では、複数存在する畳み込みフィルタのうちの1つとして畳み込みフィルタF101を畳み込みフィルタの具体例として示す。畳み込みフィルタF101は、2行2列であり4つのフィルタ係数を有する畳み込みフィルタである。具体的には、畳み込みフィルタF101はw(0、0)、w(0、1)、w(1、0)及びw(1、1)の4つのフィルタ係数を有する。以下、説明の簡単のため、畳み込みフィルタが2階のテンソルで表される場合であって、特に正方行列で表される場合を例にニューラルネットワーク回路1を説明する。フィルタ係数w(A、B)は、フィルタ係数wが畳み込みフィルタにおけるA行B列目の要素の値であることを示す。以下、フィルタ係数w(A、B)のAを、フィルタ係数wの2指標表示の第1指標という。以下、フィルタ係数w(A、B)のBを、フィルタ係数wの2指標表示の第2指標という。 As described above, each layer may have more than one convolution filter. In FIG. 6, the convolution filter F101 is shown as a specific example of one of the multiple convolution filters. The convolution filter F101 is a convolution filter with two rows and two columns and four filter coefficients. Specifically, the convolution filter F101 has four filter coefficients: w(0,0), w(0,1), w(1,0), and w(1,1). For ease of explanation, the neural network circuit 1 will be described below using an example in which the convolution filter is expressed as a second-order tensor, particularly as a square matrix. The filter coefficient w(A,B) indicates that the filter coefficient w is the value of the element in the Ath row and Bth column of the convolution filter. Hereinafter, the A of the filter coefficient w(A,B) will be referred to as the first index of the two-index display of the filter coefficient w. Hereinafter, the B of the filter coefficient w(A,B) will be referred to as the second index of the two-index display of the filter coefficient w.

図6(a)は、層入力データD101と畳み込みフィルタF101との畳み込み積分の実行によって、2行2列の特徴マップが取得されることを示す。特徴マップの各要素の値が活性である。具体的には、図6(a)は、層入力データD101と畳み込みフィルタF101との畳み込み積分の結果、活性u(i、j)、活性u(i、j+1)、活性u(i+1、j)、活性u(i+1、j+1)を有する特徴マップが算出されることを示す。以下、活性u(A、B)のAを活性uの2指標表示の第1指標という。以下、活性u(A、B)のBを活性uの2指標表示の第2指標という。なお、活性uの2指標表示とは、活性uが2つの指標によって他の活性uと区別される値であることを意味する。 Figure 6(a) shows that a feature map with two rows and two columns is obtained by performing a convolution integral between the layer input data D101 and the convolution filter F101. The value of each element of the feature map is an activity. Specifically, Figure 6(a) shows that a feature map having activation u(i, j), activation u(i, j+1), activation u(i+1, j), and activation u(i+1, j+1) is calculated as a result of the convolution integral between the layer input data D101 and the convolution filter F101. Hereinafter, A in activation u(A, B) is referred to as the first index of the two-index display of activation u. Hereinafter, B in activation u(A, B) is referred to as the second index of the two-index display of activation u. Note that the two-index display of activation u means that the activation u is a value that is distinguished from other activation u by two indexes.

活性u(i、j)は具体的には、以下の式(1)で表される。 Specifically, activity u(i, j) is expressed by the following formula (1):

Figure 0007462140000001
Figure 0007462140000001

式(1)におけるPとQとの定義を説明する。畳み込みフィルタがP行Q列のテンソルである場合、pは、0以上P未満の整数である。なお、畳み込みフィルタがP行Q列のテンソルである場合、qは、0以上Q未満の整数である。例えば、畳み込みフィルタが2行2列のテンソルである場合、それぞれ0又は1の値である。 The definitions of P and Q in formula (1) are explained below. When the convolution filter is a tensor with P rows and Q columns, p is an integer greater than or equal to 0 and less than P. Note that when the convolution filter is a tensor with P rows and Q columns, q is an integer greater than or equal to 0 and less than Q. For example, when the convolution filter is a tensor with 2 rows and 2 columns, q is a value of 0 or 1, respectively.

第nの畳み込み層(以下「第n畳み込み層」という。)における処理によって取得された特徴マップは、次段(すなわち、第(n+1)の畳み込み層)の層入力データとして次段の畳み込み層に入力される。nは畳み込みニューラルネットワークの各層を区別するための番号であって畳み込みニューラルネットワークにおいて処理が実行されるタイミングが早い層であるほど値が小さな番号である。nは0以上(N-1)以下の整数であって、Nは2以上の整数である。以下、nを層番号という。例えば、第n畳み込み層の次に処理が実行される層は第(n+1)畳み込み層である。次段の層が全結合層である場合には、特徴マップは、全結合層の層入力データとして全結合層に入力される。 The feature map obtained by processing in the nth convolutional layer (hereinafter referred to as the "nth convolutional layer") is input to the next convolutional layer as layer input data for the next stage (i.e., the (n+1)th convolutional layer). n is a number for distinguishing between layers of a convolutional neural network, and the earlier the layer in the convolutional neural network is processed, the smaller the number is. n is an integer between 0 and (N-1), and N is an integer greater than or equal to 2. Hereinafter, n is referred to as the layer number. For example, the layer that is processed next after the nth convolutional layer is the (n+1)th convolutional layer. If the next layer is a fully connected layer, the feature map is input to the fully connected layer as layer input data for the fully connected layer.

図6(b)は、特徴マップの1つの要素の値である活性u(i、j)を算出する処理の流れの一例を、活性u(i、j)を算出する積和演算の各項の計算において用いられる層入力データD101の要素を示しながら説明する。畳み込みフィルタF101は2行2列のテンソルであるため、活性u(i、j)は第1項から第4項までの4つの項の和で表される。図6(b)では、まず第1項が計算され、次に第2項が計算され、次に第3項が計算され、最後に第4項が計算される場合を例に活性u(i、j)を算出する処理を説明する。 Figure 6(b) illustrates an example of the process flow for calculating activation u(i,j), which is the value of one element of a feature map, while showing the elements of the layer input data D101 used in the calculation of each term of the product-sum operation that calculates activation u(i,j). Since the convolution filter F101 is a tensor with 2 rows and 2 columns, activation u(i,j) is expressed as the sum of four terms, from the first term to the fourth term. In Figure 6(b), the process for calculating activation u(i,j) is explained using an example in which the first term is calculated first, then the second term, then the third term, and finally the fourth term.

図6(b)は、第1項の計算には、層入力データD101のアクチベーションデータのうちアクチベーションデータx(i、j)、アクチベーションデータx(i、j+1)、アクチベーションデータx(i+1、j)及びアクチベーションデータx(i+1、j+1)の4つが用いられることを示す。図6(b)は、第2項の計算には、層入力データD101のアクチベーションデータのうちアクチベーションデータx(i、j+1)、アクチベーションデータx(i、j+2)、アクチベーションデータx(i+1、j+1)及びアクチベーションデータx(i+1、j+2)の4つが用いられることを示す。図6(b)は、第3項の計算には、層入力データD101のアクチベーションデータのうちアクチベーションデータx(i+1、j)、アクチベーションデータx(i+1、j+1)、アクチベーションデータx(i+2、j)及びアクチベーションデータx(i+2、j+1)の4つが用いられることを示す。図6(b)は、第4項の計算には、層入力データD101のアクチベーションデータのうちアクチベーションデータx(i+1、j+1)、アクチベーションデータx(i+1、j+2)、アクチベーションデータx(i+2、j+1)及びアクチベーションデータx(i+2、j+2)の4つが用いられることを示す。 Figure 6(b) shows that the calculation of the first term uses four activation data from the layer input data D101: activation data x(i, j), activation data x(i, j+1), activation data x(i+1, j), and activation data x(i+1, j+1). Figure 6(b) shows that the calculation of the second term uses four activation data from the layer input data D101: activation data x(i, j+1), activation data x(i, j+2), activation data x(i+1, j+1), and activation data x(i+1, j+2). FIG. 6(b) shows that the calculation of the third term uses four activation data from the layer input data D101: activation data x(i+1, j), activation data x(i+1, j+1), activation data x(i+2, j), and activation data x(i+2, j+1). FIG. 6(b) shows that the calculation of the fourth term uses four activation data from the layer input data D101: activation data x(i+1, j+1), activation data x(i+1, j+2), activation data x(i+2, j+1), and activation data x(i+2, j+2).

なお、図6(b)は説明の簡単のため、第1項、第2項、第3項、第4項の順に計算されることを示すが、計算は必ずしも第1項、第2項、第3項、第4項の順に実行される必要は無い。計算は、例えば、第1項、第3項、第2項、第4項の順に実行されてもよい。 For ease of explanation, FIG. 6(b) shows that the calculations are performed in the order of the first term, the second term, the third term, and the fourth term, but the calculations do not necessarily have to be performed in the order of the first term, the second term, the third term, and the fourth term. The calculations may be performed in the order of the first term, the third term, the second term, and the fourth term, for example.

図7は、実施形態のニューラルネットワーク回路1が実行する畳み込み演算を説明する第2の説明図である。
図7は、第n畳み込み層への層入力データがチャネル数3であり各チャネルのデータが4行4列の行列で表されるデータである場合を例に畳み込み演算を説明する。図7において第n畳み込み層への層入力データは、チャネル数が3であり各チャネルのデータが4行4列の行列で表されるデータであるため、3階のテンソルで表されるデータである。以下、層入力データのチャネル数(以下「入力チャネル数」という。)を、NumCHinの記号で表す。以下、特徴マップのチャネル数(以下「出力チャネル数」という。)を、NumCHoutの記号で表す。出力チャネル数NumCHoutは、畳み込みフィルタの数に等しい。
FIG. 7 is a second explanatory diagram illustrating the convolution operation executed by the neural network circuit 1 of the embodiment.
FIG. 7 illustrates a convolution operation using an example in which the layer input data to the nth convolution layer has three channels and the data of each channel is represented by a matrix of four rows and four columns. In FIG. 7, the layer input data to the nth convolution layer has three channels and the data of each channel is represented by a matrix of four rows and four columns, so the data is represented by a third-order tensor. Hereinafter, the number of channels of the layer input data (hereinafter referred to as the "number of input channels") is represented by the symbol NumCH in . Hereinafter, the number of channels of the feature map (hereinafter referred to as the "number of output channels") is represented by the symbol NumCH out . The number of output channels NumCH out is equal to the number of convolution filters.

図7は、2つの畳み込みフィルタがそれぞれ層入力データのチャネルごとに適用されることを示す。 Figure 7 shows that two convolution filters are applied, one for each channel of the layer input data.

図7は、層入力データに対してフィルタ1及びフィルタ2の2つの3行3列の畳み込みフィルタが適用された場合に、特徴マップは、出力チャネル数NumCHoutが2であって各チャネルのデータが2行2列の行列で表されるデータであることを示す。 FIG. 7 shows that when two convolution filters, Filter 1 and Filter 2, each having 3 rows and 3 columns, are applied to the layer input data, the feature map has an output channel number NumCH out of 2 and data for each channel is represented by a matrix having 2 rows and 2 columns.

ニューラルネットワーク回路1では、複数の畳み込みフィルタがそれぞれ層入力データのチャネルごとに適用されるため、ニューラルネットワーク回路1で算出される活性uは以下の式(2)で表される。 In the neural network circuit 1, multiple convolution filters are applied to each channel of the layer input data, so the activation u calculated by the neural network circuit 1 is expressed by the following equation (2).

Figure 0007462140000002
Figure 0007462140000002

式(2)におけるCHout及びCHinと、x、u及びwの各指標とについて説明する。 The following describes CH out and CH in , and the indices x, u, and w in formula (2).

式(2)に示すChoutは、特徴マップの各チャネルをそれぞれ区別するための値である。例えば、Chout=Vは(Vは非負の整数)、特徴マップが備える複数のチャネルのうち第V番目のチャネルを表す。以下、CHoutを出力チャネル番号という。 Ch out in formula (2) is a value for distinguishing each channel of the feature map. For example, Ch out =V (V is a non-negative integer) represents the Vth channel among the multiple channels included in the feature map. Hereinafter, CH out will be referred to as the output channel number.

式(2)に示すChinは、層入力データの各チャネルをそれぞれ区別するための値である。例えば、Chin=Vは、層入力データが備える複数のチャネルのうち第V番目のチャネルを表す(Vは非負の整数)。以下、CHin(すなわちV)を入力チャネル番号という。 Ch in in formula (2) is a value for distinguishing each channel of the layer input data. For example, Ch in = V represents the Vth channel (V is a non-negative integer) among the multiple channels included in the layer input data. Hereinafter, Ch in (i.e., V) is referred to as the input channel number.

式(2)におけるアクチベーションデータxは4つの指標によって他のアクチベーションデータxと区別されている。具体的には、アクチベーションデータxはx(A、B、C、D)と表されることで他のアクチベーションデータと区別されている。アクチベーションデータx(A、B、C、D)は、アクチベーションデータxが、層番号Aの層に入力される層入力データの要素の値であって、入力チャネル番号BのデータのうちC行D列の要素の値であることを示す。すなわち、アクチベーションデータxの4指標表示の第1指標Aは、アクチベーションデータxを有する層入力データの入力先の層番号nを表す。アクチベーションデータxの4指標表示の第2指標Bは、入力チャネル番号Chinを表す。また、アクチベーションデータxの4指標表示の第3指標C及び第4指標Dは、アクチベーションデータxが2階のテンソルのC行D列に位置する要素の値であることを示す。なお、前述したアクチベーションデータx(A、B)は、入力チャネル数と出力チャネル数とが1の場合におけるアクチベーションデータx(A、B、C、D)を表す。なお、アクチベーションデータxの4指標表示とは、アクチベーションデータxが4つの指標によって他のアクチベーションデータxと区別される値であることを意味する。 The activation data x in formula (2) is distinguished from other activation data x by four indices. Specifically, the activation data x is distinguished from other activation data by being represented as x(A, B, C, D). The activation data x(A, B, C, D) indicates that the activation data x is the value of an element of the layer input data input to the layer with layer number A, and is the value of the element in row C and column D of the data of the input channel number B. That is, the first index A of the four-indicator display of the activation data x represents the layer number n of the input destination of the layer input data having the activation data x. The second index B of the four-indicator display of the activation data x represents the input channel number Ch in . In addition, the third index C and the fourth index D of the four-indicator display of the activation data x indicate that the activation data x is the value of the element located in row C and column D of the second-order tensor. The above-mentioned activation data x (A, B) represents the activation data x (A, B, C, D) when the number of input channels and the number of output channels are 1. The four-index representation of the activation data x means that the activation data x is a value that can be distinguished from other activation data x by four indexes.

活性u(A、B、C、D)は、活性uが、層番号Aの層における演算の結果であって、特徴マップにおける出力チャネル番号BのデータのうちのC行D列の要素の値であることを示す。すなわち、活性uの4指標表示の第1指標Aは、活性uを出力する演算が実行された層の層番号nを表す。活性uの4指標表示の第2指標Bは、出力チャネル番号Choutを表す。また、活性uの4指標表示の第3指標C及び第4指標Dは、活性uが2階のテンソルのC行D列に位置する要素の値として、第1バッファ記憶部11に記憶される値であることを示す。なお、前述した活性u(A、B)は、入力チャネル数と出力チャネル数とが1の場合における活性u(A、B、C、D)を表す。なお、活性uの2指標表示とは、活性uが4つの指標によって他の活性uと区別される値であることを意味する。 The activation u (A, B, C, D) indicates that the activation u is the result of an operation in a layer with layer number A, and is the value of an element in row C and column D of the data of output channel number B in the feature map. That is, the first index A of the four-index display of the activation u represents the layer number n of the layer in which the operation to output the activation u was executed. The second index B of the four-index display of the activation u represents the output channel number Ch out . In addition, the third index C and the fourth index D of the four-index display of the activation u indicate that the activation u is a value stored in the first buffer memory unit 11 as the value of an element located in row C and column D of a second-order tensor. Note that the above-mentioned activation u (A, B) represents the activation u (A, B, C, D) when the number of input channels and the number of output channels are 1. Note that the two-index display of the activation u means that the activation u is a value that is distinguished from other activation u by four indexes.

w(A、B、C、D、E)は、フィルタ係数を表す。フィルタ係数wの5指標表示の第1指標Aは、畳み込み積分の演算が実行される層番号nを表す。フィルタ係数wの5指標表示の第2指標Bは、畳み込み積分の実行時にフィルタ係数wに掛け算されるアクチベーションデータxが属する入力チャネル番号Chinを表す。フィルタ係数wの5指標表示の第3指標Cは、畳み込み積分の実行結果である特徴マップにおける出力チャネル番号CHoutを表す。フィルタ係数wの5指標表示の第4指標D及び第5指標Eは、フィルタ係数wが畳み込みフィルタを表す2階のテンソルのD行E列に位置する要素の値であることを示す。なお、フィルタ係数wの5指標表示とは、フィルタ係数wが5つの指標によって他のフィルタ係数wと区別される値であることを意味する。 w (A, B, C, D, E) represents a filter coefficient. The first index A of the five-index display of the filter coefficient w represents the layer number n where the convolution integral operation is performed. The second index B of the five-index display of the filter coefficient w represents the input channel number Ch in to which the activation data x to be multiplied by the filter coefficient w when the convolution integral is performed belongs. The third index C of the five-index display of the filter coefficient w represents the output channel number CH out in the feature map which is the result of the convolution integral. The fourth index D and the fifth index E of the five-index display of the filter coefficient w indicate that the filter coefficient w is the value of the element located in the D row and E column of the second-order tensor representing the convolution filter. The five-index display of the filter coefficient w means that the filter coefficient w is a value that is distinguished from other filter coefficients w by five indexes.

b(n、CHout)は、バイアスである。バイアスb(n、CHout)は、層番号uの層における演算に用いられるバイアスであって、出力チャネル番号CHoutの活性uを算出する演算に用いられるバイアスであることを示す。なお、バイアスbは0であってもよく、畳み込み処理においては、0である。そこで、以下、説明の簡単のため、バイアスbが0である場合を例にニューラルネットワーク回路1における畳み込み処理を説明する。 b(n, CH out ) is a bias. The bias b(n, CH out ) is a bias used in the calculation in the layer with layer number u, and indicates that it is a bias used in the calculation to calculate the activity u of the output channel number CH out . Note that the bias b may be 0, and is 0 in the convolution process. Therefore, for simplicity of explanation, the convolution process in the neural network circuit 1 will be explained below using the case where the bias b is 0 as an example.

図8は、実施形態の第1バッファ記憶部11から各単位処理部100へ出力される情報の流れを説明する図である。 Figure 8 is a diagram illustrating the flow of information output from the first buffer memory unit 11 to each unit processing unit 100 in the embodiment.

図8は、単位処理部100_0_0から単位処理部100_(R_1)_(S_1)までの(R×S)個(RはCHin以上の整数。SはJ以上の整数)の単位処理部100を示す。Rは、入力チャネル数NumCHinの数に同一であることが望ましい。Sは、層入力データの列の数Jに同一であることが望ましい。以下、説明の簡単のため、単位処理部100_(r_1)_(s_1)をPB(r-1、s-1)という。なお、rは0以上(R-1)以下の整数であり、sは0以上(S-1)以下の整数である。以下、PB(A、B)のAをPBの第1指標という。PB(A、B)のBをPBの第2指標という。PBの第1指標は、格子状に配置された単位処理部100が属する列を示す。PBの第2指標は、格子状に配置された単位処理部100が属する行を示す。PBの第2指標が同じでありPBの第1指標の差が1である2つの単位処理部100は、互いに隣接する。PBの第1指標が同じでありPBの第2指標の差が1である2つの単位処理部100は、互いに隣接する。 FIG. 8 shows (R×S) (R is an integer equal to or greater than CH in , and S is an integer equal to or greater than J) unit processing units 100 from unit processing unit 100_0_0 to unit processing unit 100_(R_1)_(S_1). R is preferably equal to the number of input channels NumCH in . S is preferably equal to the number of columns J of the layer input data. Hereinafter, for ease of explanation, unit processing unit 100_(r_1)_(s_1) will be referred to as PB(r-1, s-1). Note that r is an integer equal to or greater than 0 (R-1), and s is an integer equal to or greater than 0 (S-1). Hereinafter, A in PB(A,B) will be referred to as the first index of PB. B in PB(A,B) will be referred to as the second index of PB. The first index of PB indicates the column to which the unit processing units 100 arranged in a lattice pattern belong. The second index of PB indicates the row to which the unit processing units 100 arranged in a lattice pattern belong. Two unit processing units 100 having the same PB second index and a difference between their PB first indexes of 1 are adjacent to each other. Two unit processing units 100 having the same PB first index and a difference between their PB second indexes of 1 are adjacent to each other.

第1バッファ記憶部11は、各単位処理部100に情報を直接送信可能である。直接送信可能とは、単位処理部100を介して他の単位処理部100に情報を送信する必要はない、ことを意味する。 The first buffer memory unit 11 can transmit information directly to each unit processing unit 100. Direct transmission means that there is no need to transmit information to other unit processing units 100 via the unit processing unit 100.

図9は、実施形態の第2バッファ記憶部12から各単位処理部100へ出力される情報の流れを説明する図である。
第2バッファ記憶部12は、各単位処理部100に情報を直接送信可能である。
FIG. 9 is a diagram illustrating the flow of information output from the second buffer memory unit 12 to each unit processing unit 100 in the embodiment.
The second buffer memory unit 12 is capable of directly transmitting information to each unit processing unit 100 .

図10は、実施形態の単位処理部100から第1バッファ記憶部11へ出力される情報の流れを説明する図である。
第1バッファ記憶部11は、各単位処理部100から情報を直接受信可能である。直接受信可能とは、単位処理部100を介して他の単位処理部100が送信した情報を受信する必要はない、ことを意味する。
FIG. 10 is a diagram illustrating the flow of information output from the unit processing unit 100 to the first buffer memory unit 11 in the embodiment.
The first buffer memory unit 11 can directly receive information from each unit processing unit 100. Being directly receivable means that it is not necessary to receive information transmitted by another unit processing unit 100 via the unit processing unit 100.

図11は、実施形態の単位処理部100から第2バッファ記憶部12へ出力される情報の流れを説明する図である。
単位処理部100は、予め定められた他の単位処理部100に情報を送信可能である。予め定められた他の単位処理部100とは、コンフィギュレーションデータが示す接続先の単位処理部100である。
FIG. 11 is a diagram illustrating the flow of information output from the unit processing unit 100 to the second buffer memory unit 12 in the embodiment.
The processing unit 100 is capable of transmitting information to another predetermined processing unit 100. The other predetermined processing unit 100 is a connection destination processing unit 100 indicated by the configuration data.

図11は、PB(0、0)からPB(1、0)への情報の送信が可能であることを示す。図11は、PB(1、0)からPB(2、0)への情報の送信が可能であることを示す。図11は、PB(S-1、0)からPB(0、0)への情報の送信が可能であることを示す。このように、PBの第1指標が(S-1)である単位処理部100以外の各単位処理部100は、畳み込み演算において、PBの第2指標が同一であり第1指標が1だけ増加する単位処理部100に情報を送信可能である。PBの第1指標が(S-1)である単位処理部100は、PBの第2指標が同一でありPBの第1指標が0である単位処理部100に情報を送信可能である。 Figure 11 shows that information can be transmitted from PB(0,0) to PB(1,0). Figure 11 shows that information can be transmitted from PB(1,0) to PB(2,0). Figure 11 shows that information can be transmitted from PB(S-1,0) to PB(0,0). In this way, each unit processing unit 100 other than the unit processing unit 100 whose PB first index is (S-1) can transmit information to the unit processing unit 100 whose PB second index is the same and whose first index increases by 1 in the convolution operation. The unit processing unit 100 whose PB first index is (S-1) can transmit information to the unit processing unit 100 whose PB second index is the same and whose PB first index is 0.

図12は、実施形態の第1バッファ記憶部11から主演算部10へ出力される情報の出力先を説明する図である。以下、説明の簡単のため、層入力データは入力チャネル数NumChinが64のデータであって各チャネルが有するデータが64行64列の2階のテンソルで表されるデータである場合を例にニューラルネットワーク回路1を説明する。ただし、以下の説明は、入力チャネル数が64でなくてもよい。また、各チャネルが有するデータも2階のテンソルで表されるデータであれば64行64列でなくてもよい。また、各チャネルが有するデータは、2階のテンソルで表されるデータであれば正方行列でなくてもよい。 12 is a diagram for explaining the output destination of information output from the first buffer memory unit 11 to the main calculation unit 10 in the embodiment. In the following, for the sake of simplicity, the neural network circuit 1 will be explained using an example in which the layer input data is data with an input channel number NumCh in of 64, and the data possessed by each channel is data expressed by a second-order tensor with 64 rows and 64 columns. However, in the following explanation, the number of input channels does not have to be 64. Furthermore, the data possessed by each channel does not have to be 64 rows and 64 columns as long as it is data expressed by a second-order tensor. Furthermore, the data possessed by each channel does not have to be a square matrix as long as it is data expressed by a second-order tensor.

図12は、層入力データは入力チャネル番号が0から63までの64チャネルのデータであることを示す。また、図12は、第1バッファ記憶部11に記憶された各チャネルのデータが、行数が0行目から63行目までの64であって列数が0列目から63列目までの64である64行64列のテンソルで表されるデータであることを示す。 Figure 12 shows that the layer input data is data for 64 channels with input channel numbers from 0 to 63. Figure 12 also shows that the data for each channel stored in the first buffer memory unit 11 is data represented as a 64-row, 64-column tensor, with 64 rows from row 0 to row 63 and 64 columns from column 0 to column 63.

図12は、層入力データの各チャネルの0行目のデータが主演算部10へ出力されることを示す。主演算部10の単位処理部100には、単位処理部100にひとつのアクチベーションデータが入力されることを示す。例えば、PB(0、0)には、入力チャネル番号が0のデータのうち0行0列目のアクチベーションデータx(0、0、0、0)が入力される。 Figure 12 shows that the data in the 0th row of each channel of the layer input data is output to the main calculation unit 10. It shows that one activation data is input to the unit processing unit 100 of the main calculation unit 10. For example, activation data x(0,0,0,0) in the 0th row and 0th column of the data with input channel number 0 is input to PB(0,0).

図12は、主演算部10には、以下の第1アクチベーションデータ入力規則及び第2アクチベーションデータ入力規則にしたがって、層入力データが入力されることを示す。第1アクチベーションデータ入力規則は、PBの第1指標が同じ単位処理部100には入力チャネル番号が同じアクチベーションデータxが入力される、という規則である。第2アクチベーションデータ入力規則は、PBの第2指標が同じ単位処理部100には、第2指標が異なり第3指標が同じアクチベーションデータxが入力される、という規則である。 Figure 12 shows that layer input data is input to the main calculation unit 10 according to the following first activation data input rule and second activation data input rule. The first activation data input rule is a rule that activation data x with the same input channel number is input to unit processing units 100 with the same PB first index. The second activation data input rule is a rule that activation data x with different second indexes and the same third index are input to unit processing units 100 with the same PB second index.

図13は、実施形態の主演算部10から第1バッファ記憶部11へ出力される情報の出力元を説明する図である。
以下、説明の簡単のため、特徴マップは出力チャネル数NumChoutが64であって、各チャネルが有するデータが64行64列の2階のテンソルで表されるデータである場合を例にニューラルネットワーク回路1を説明する。ただし、以下の説明は、出力チャネル数が64でなくてもよい。また、各チャネルが有するデータも2階のテンソルで表されるデータであれば64行64列でなくてもよい。また、各チャネルが有するデータは、2階のテンソルで表されるデータであれば正方行列でなくてもよい。
FIG. 13 is a diagram for explaining the source of information output from the main processing unit 10 to the first buffer memory unit 11 in the embodiment.
For ease of explanation, the neural network circuit 1 will be described below using as an example a case where the feature map has an output channel number NumCh out of 64, and the data held by each channel is data expressed by a second-order tensor with 64 rows and 64 columns. However, in the following explanation, the number of output channels does not have to be 64. Furthermore, the data held by each channel does not have to be 64 rows and 64 columns as long as it is data expressed by a second-order tensor. Furthermore, the data held by each channel does not have to be a square matrix as long as it is data expressed by a second-order tensor.

図13は、主演算部10の各単位処理部100の演算の結果である活性u(すなわち活性結果z)が、特徴マップにおける各チャネルの0行目の各要素の値として第1バッファ記憶部11に記憶されることを示す。例えば、PB(0、0)による演算の結果であるu(0、0、0、0)は、特徴マップにおける出力チャネル番号が0の0行0列目の要素の値として、第1バッファ記憶部11に記憶されることを示す。 Figure 13 shows that the activation u (i.e., activation result z) that is the result of the calculation of each unit processing unit 100 of the main calculation unit 10 is stored in the first buffer memory unit 11 as the value of each element in the 0th row of each channel in the feature map. For example, u(0,0,0,0), which is the result of the calculation by PB(0,0), is stored in the first buffer memory unit 11 as the value of the element in the 0th row and 0th column of the output channel number 0 in the feature map.

図13は、PBの第1指標が同じ単位処理部100が算出した活性uは、特徴マップの各要素のうち出力チャネル番号が同じ要素の値として第1バッファ記憶部11に記憶されることを示す。図13は、PBの第2指標が同じ単位処理部100が算出した活性uは、特徴マップの各要素のうち出力チャネル番号Choutが異なり入力チャネル番号Chinが同じである要素の値として第1バッファ記憶部11に記憶されることを示す。 Fig. 13 shows that the activity u calculated by the unit processing units 100 having the same first index of PB is stored in the first buffer storage unit 11 as the value of an element having the same output channel number among the elements of the feature map. Fig. 13 shows that the activity u calculated by the unit processing units 100 having the same second index of PB is stored in the first buffer storage unit 11 as the value of an element having a different output channel number Ch out but the same input channel number Ch in among the elements of the feature map.

図14~図20を用いて、畳み込み処理の流れの一例を説明する。畳み込み処理では、まず、層入力データの各チャネルのデータの1行目のデータが主演算部10に入力される。次に、畳み込みフィルタのフィルタ係数のうちの予め定められた1つのフィルタ係数(以下「初期フィルタ係数」という。)について後述する畳み込み処理の2番目~6番目までの処理が実行される。次に、フィルタ係数に対して予め定められた所定の順番にしたがい、畳み込みフィルタの他のフィルタ係数について、フィルタ係数ごとに2番目から6番目までの処理が実行される。以下、層入力データの各チャネルのデータの2行目のデータが主演算部10に入力され、各フィルタ係数について2番目~6番目の処理が実行される。以下同様にして、以下、層入力データの各チャネルのデータの最後の行(例えば64行目)まで同様の処理が実行される。 An example of the flow of the convolution process will be described with reference to Figures 14 to 20. In the convolution process, first, the data of the first row of data of each channel of the layer input data is input to the main calculation unit 10. Next, the second to sixth processes of the convolution process described below are performed on a predetermined filter coefficient (hereinafter referred to as the "initial filter coefficient") among the filter coefficients of the convolution filter. Next, the second to sixth processes are performed for each of the other filter coefficients of the convolution filter according to a predetermined order for the filter coefficients. Thereafter, the data of the second row of data of each channel of the layer input data is input to the main calculation unit 10, and the second to sixth processes are performed for each filter coefficient. In the same manner, the same processes are performed until the last row (for example, the 64th row) of data of each channel of the layer input data.

以下、畳み込みフィルタがw11、w12、w21、w22の4のフィルタ係数を有する場合を例に畳み込み処理の流れの一例を説明する。また、以下、初期フィルタ係数がw11である場合を例に畳み込み処理の流れの一例を説明する。以下、説明の簡単のため図14~図18では、層入力データの各チャネルのデータの1行目のデータが主演算部10に入力された場合であってフィルタ係数がw11である場合を例に畳み込み処理の流れの一例を説明する。そして図19では、2番目~6番目の処理が実行されるフィルタ係数がw11からw12に変更される際の、主演算部10中のデータの変化を説明する。図20は、層入力データの各チャネルのデータの他の行のデータについて畳み込み処理を実行する場合に、主演算部10に入力されるデータを説明する。 Hereinafter, an example of the flow of the convolution process will be described using an example in which the convolution filter has four filter coefficients, w11 , w12 , w21 , and w22 . Also, an example of the flow of the convolution process will be described using an example in which the initial filter coefficient is w11 . For the sake of simplicity, in the following, in Figs. 14 to 18, an example of the flow of the convolution process will be described using an example in which the data in the first row of data in each channel of the layer input data is input to the main arithmetic unit 10 and the filter coefficient is w11 . Then, in Fig. 19, a change in data in the main arithmetic unit 10 when the filter coefficient for executing the second to sixth processes is changed from w11 to w12 will be described. Fig. 20 describes data input to the main arithmetic unit 10 when convolution processes are executed for data in other rows of data in each channel of the layer input data.

図14は、実施形態における畳み込み処理の1番目の処理を説明する説明図である。図14は、畳み込み処理の1番目の処理では、第1アクチベーションデータ入力規則及び第2アクチベーションデータ入力規則にしたがって主演算部10に層入力データが入力されることを示す。 Figure 14 is an explanatory diagram explaining the first process of the convolution process in the embodiment. Figure 14 shows that in the first process of the convolution process, layer input data is input to the main calculation unit 10 according to the first activation data input rule and the second activation data input rule.

図15は、実施形態における畳み込み処理の2番目の処理を説明する説明図である。2番目の処理は1番目の処理の次に実行される。 Figure 15 is an explanatory diagram illustrating the second process of the convolution process in the embodiment. The second process is executed after the first process.

図15において、wABは、5指標表示の第4指標がAで5指標表示の第5指標がBのフィルタ係数wを表す。例えば、w12は、5指標表示の第4指標が1で5指標表示の第5指標が2のフィルタ係数wを表す。畳み込み処理の2番目の処理においては、5指標表示の第4指標及び第5指標が1のフィルタ係数wが主演算部10に入力される。 15 , w AB represents a filter coefficient w whose fourth index in the five-index display is A and whose fifth index in the five-index display is B. For example, w 12 represents a filter coefficient w whose fourth index in the five-index display is 1 and whose fifth index in the five-index display is 2. In the second process of the convolution process, the filter coefficient w whose fourth index and fifth index in the five-index display are 1 are input to the main calculation unit 10.

図15は、畳み込み処理の2番目の処理では、第2バッファ記憶部12が記憶する畳み込みフィルタのフィルタ係数がフィルタ入力規則にしたがって主演算部10に入力されることを示す。フィルタ入力規則は、以下の規則条件1を満たす単位処理部100に規則条件2を満たすフィルタ係数wが入力されるという規則である。規則条件1は、フィルタ係数wの5指標表示の第1指標が表す層番号と同じ層番号を4指標表示の第1指標が表す単位処理部100であるという条件を含む。規則条件1は、フィルタ係数wの5指標表示の第2指標が表す入力チャネル番号と同じ入力チャネル番号を4指標表示の第2指標が表すアクチベーションデータxが入力されている単位処理部100である、という条件を含む。規則条件2は、規則条件1を満たす単位処理部100に入力されているアクチベーションデータxの4指標表示の第1指標が表す層番号と同じ層番号を5指標表示の第1指標が表すフィルタ係数wである、という条件を含む。規則条件2は、条件1を満たす単位処理部100に入力されているアクチベーションデータxの4指標表示の第2指標が表す入力チャネル番号と同じ入力チャネル番号を5指標表示の第2指標が表すフィルタ係数wである、という条件を含む。 Figure 15 shows that in the second process of the convolution process, the filter coefficients of the convolution filter stored in the second buffer memory unit 12 are input to the main calculation unit 10 according to the filter input rule. The filter input rule is a rule that a filter coefficient w that satisfies rule condition 2 is input to a unit processing unit 100 that satisfies the following rule condition 1. Rule condition 1 includes a condition that the unit processing unit 100 is represented by a first index of a four-index display that represents the same layer number as the layer number represented by the first index of a five-index display of the filter coefficient w. Rule condition 1 includes a condition that the unit processing unit 100 is a unit into which activation data x is input, the second index of a four-index display that represents the same input channel number as the input channel number represented by the second index of a five-index display of the filter coefficient w. Rule condition 2 includes a condition that the filter coefficient w is represented by a first index of a five-index display that represents the same layer number as the layer number represented by the first index of a four-index display of the activation data x input to the unit processing unit 100 that satisfies rule condition 1. Rule condition 2 includes the condition that the filter coefficient w represented by the second index of the five-index display has the same input channel number as the input channel number represented by the second index of the four-index display of the activation data x input to the unit processing unit 100 that satisfies condition 1.

畳み込み処理の2番目の処理では、各単位処理部100に入力されたフィルタ係数w11と、畳み込み処理の1番目の処理で各単位処理部100に入力されたアクチベーションデータxとの積を算出する処理が各単位処理部100において実行される。 In the second step of the convolution process, each unit processing unit 100 executes a process of calculating the product of the filter coefficient w11 input to each unit processing unit 100 and the activation data x input to each unit processing unit 100 in the first step of the convolution process.

図16は、実施形態における畳み込み処理の3番目の処理を説明する説明図である。3番目の処理は2番目の処理の次に実行される。
畳み込み処理の3番目の処理においては、各単位処理部100が接続先の単位処理部100に、直前の処理で用いたアクチベーションデータxを出力する。例えば、図16は、PB(63、0)が畳み込み処理の2番目の処理で用いたアクチベーションデータx(0、63、0、0)をPB(0、0)に出力することを示す。すなわち、PB(0、0)には、アクチベーションデータx(0、63、0、0)が入力される。
16 is an explanatory diagram illustrating the third process of the convolution process in the embodiment. The third process is executed after the second process.
In the third process of the convolution process, each unit processing unit 100 outputs the activation data x used in the immediately preceding process to the connected unit processing unit 100. For example, Fig. 16 shows that PB (63, 0) outputs the activation data x (0, 63, 0, 0) used in the second process of the convolution process to PB (0, 0). That is, the activation data x (0, 63, 0, 0) is input to PB (0, 0).

図17は、実施形態における畳み込み処理の4番目の処理を説明する説明図である。4番目の処理は3番目の処理の次に実行される。畳み込み処理の4番目の処理においては、フィルタ入力規則にしたがって主演算部10にフィルタ係数wが入力される。 Figure 17 is an explanatory diagram explaining the fourth process of the convolution process in the embodiment. The fourth process is executed after the third process. In the fourth process of the convolution process, the filter coefficient w is input to the main calculation unit 10 according to the filter input rule.

図18は、実施形態における畳み込み処理の5番目の処理を説明する説明図である。5番目の処理は4番目の処理の次に実行される。
畳み込み処理の5番目の処理においては、各単位処理部100が接続先の単位処理部100に、直前の処理で用いたアクチベーションデータxを出力する。例えば、図18は、PB(63、0)が畳み込み処理の4番目の処理で用いたアクチベーションデータx(0、62、0、0)をPB(0、0)に出力することを示す。すなわち、PB(0、0)には、アクチベーションデータx(0、62、0、0)が入力される。
18 is an explanatory diagram illustrating the fifth process of the convolution process in the embodiment. The fifth process is executed after the fourth process.
In the fifth process of the convolution process, each unit processing unit 100 outputs the activation data x used in the immediately preceding process to the connected unit processing unit 100. For example, FIG. 18 shows that PB(63,0) outputs the activation data x(0,62,0,0) used in the fourth process of the convolution process to PB(0,0). That is, the activation data x(0,62,0,0) is input to PB(0,0).

図19は、実施形態における畳み込み処理の6番目の処理を説明する説明図である。6番目の処理は5番目の処理の次に実行される。
畳み込み処理の6番目の処理においては、各PBは、PBの第2指標がひとつ大きな値であり第1指標が同じ接続先のPBからアクチベーションデータxが入力される。図14と図19とを比較すると、図19で各PBが記憶するアクチベーションデータxが図14で各PBが記憶するアクチベーションデータxに比べて、4指標表示の第4指標の値が1だけ異なっている。
19 is an explanatory diagram illustrating the sixth process of the convolution process in the embodiment. The sixth process is executed after the fifth process.
In the sixth process of the convolution process, each PB receives activation data x from a connected PB whose second index is one value larger than the first index. Comparing Fig. 14 with Fig. 19, the activation data x stored in each PB in Fig. 19 differs by one in the value of the fourth index of the four-index display from the activation data x stored in each PB in Fig. 14.

畳み込み処理の6番目の処理の実行後、次のフィルタ係数について2番目~6番目の処理が実行される。次のフィルタ係数とは、例えばw11のフィルタ係数について2番目~6番目の処理が実行された次であればw12のフィルタ係数である。このようにして、層入力データの各チャネルの1行目のデータに対し畳み込みフィルタが備える全てのフィルタ係数について2番目~6番目の処理が実行される。次に、図20に示す処理が実行される。 After the sixth process of the convolution process is executed, the second to sixth processes are executed for the next filter coefficient. For example, if the next filter coefficient is the w12 filter coefficient after the second to sixth processes are executed for the w11 filter coefficient, the second to sixth processes are executed for all filter coefficients of the convolution filter for the first row data of each channel of the layer input data. Next, the process shown in FIG. 20 is executed.

図20は、実施形態における畳み込み処理の7番目の処理を説明する説明図である。
図20は、層入力データの各チャネルの2行目のデータが主演算部10に入力されることを示す。7番目の処理の実行後、畳み込みフィルタが備える全てのフィルタ係数について2番目~6番目の処理が実行される。次に、層入力データの各チャネルの次の行のデータが主演算部10に入力される。次の行とは、例えば、直前の行が2行目であれば3行目である。次の行とは、例えば、直前の行がi行目であれば(i+1)行目である。
FIG. 20 is an explanatory diagram illustrating the seventh process of the convolution process in the embodiment.
20 shows that the second row of data for each channel of the layer input data is input to the main calculation unit 10. After the seventh process is executed, the second to sixth processes are executed for all filter coefficients of the convolution filter. Next, the next row of data for each channel of the layer input data is input to the main calculation unit 10. For example, if the previous row is the second row, the next row is the third row. For example, if the previous row is the i-th row, the next row is the (i+1)-th row.

図21は、実施形態における畳み込み処理の流れの一例を説明するフローチャートである。図21において、副畳み込み処理とは、畳み込み処理の2番目から6番目の処理を全てのフィルタ係数について実行する処理である。 Figure 21 is a flowchart illustrating an example of the flow of convolution processing in an embodiment. In Figure 21, the sub-convolution processing is processing in which the second to sixth processes of the convolution processing are performed for all filter coefficients.

畳み込み処理が開始される(ステップS101)。主演算部10に層入力データの各チャネルの1行目のアクチベーションデータxが第1バッファ記憶部11から入力される(ステップS102)。副畳み込み処理の実行が開始される(ステップS103)。副畳み込み処理において、まず、畳み込み処理の2番目の処理が実行される(ステップS104)。次に、畳み込み処理の3番目の処理が実行される(ステップS105)。次に、畳み込み処理の4番目の処理が実行される(ステップS106)。次に、畳み込み処理の5番目の処理が実行される(ステップS107)。次に、畳み込み処理の6番目の処理が実行される(ステップS108)。全てのフィルタ係数についてステップS104~ステップS108の処理が実行されると、ステップS102で入力されたアクチベーションデータxに対する副畳み込み処理が終了する(ステップS109)。層入力データの全ての行のアクチベーションデータxに対して副畳み込み処理が実行されたか否かが判定される(ステップS110)。ステップS110の判定は例えば制御部14によって判定される。副畳み込み処理が実行されていない行が有る場合(ステップS110:YES)、主演算部10に、層入力データの各チャネルの未だ副畳み込み処理が実行されていない行のアクチベーションデータxが第1バッファ記憶部11から入力される(ステップS111)。未だ副畳み込み処理が実行されていない行が複数ある場合、予め定められた処理の順番でアクチベーションデータxが入力される。予め定められた所定の順番は、例えば、行の番号が小さい順番である。次に、ステップS103の処理に戻り、ステップS109までの処理が実行され、ステップS110の判定が行われる。一方、副畳み込み処理が実行されていない行が無い場合(ステップS110:NO)、畳み込み処理が終了する(ステップS112)。 The convolution process is started (step S101). The activation data x of the first row of each channel of the layer input data is input to the main calculation unit 10 from the first buffer memory unit 11 (step S102). The execution of the sub-convolution process is started (step S103). In the sub-convolution process, the second process of the convolution process is executed first (step S104). Next, the third process of the convolution process is executed (step S105). Next, the fourth process of the convolution process is executed (step S106). Next, the fifth process of the convolution process is executed (step S107). Next, the sixth process of the convolution process is executed (step S108). When the processes of steps S104 to S108 are executed for all filter coefficients, the sub-convolution process for the activation data x input in step S102 is completed (step S109). It is determined whether or not the sub-convolution process has been performed on the activation data x of all rows of the layer input data (step S110). The determination in step S110 is made, for example, by the control unit 14. If there are rows on which the sub-convolution process has not been performed (step S110: YES), the activation data x of the rows on which the sub-convolution process has not yet been performed in each channel of the layer input data is input from the first buffer memory unit 11 to the main calculation unit 10 (step S111). If there are multiple rows on which the sub-convolution process has not yet been performed, the activation data x is input in a predetermined processing order. The predetermined order is, for example, in order of the smallest row number. Next, the process returns to step S103, the process up to step S109 is performed, and the determination in step S110 is made. On the other hand, if there are no rows on which the sub-convolution process has not yet been performed (step S110: NO), the convolution process ends (step S112).

このように構成された実施形態のニューラルネットワーク回路1は、畳み込み層の処理において、第1バッファ記憶部11及び第2バッファ記憶部12から主演算部10に入力されたデータが、単位処理部100から他の単位処理部100に出力される。このため、主演算部10が第1バッファ記憶部11及び第2バッファ記憶部12からデータを読み出す機会が少ない。このことは、ニューラルネットワーク回路1が、第1外部メモリ91及び第2外部メモリ92からデータを読み出す機会が少ないことを意味する。そのため、このように構成されたニューラルネットワーク回路1は、畳み込み層の処理において、畳み込みニューラルネットワークにおける演算速度を向上させることができる。また、第1外部メモリ91及び第2外部メモリ92からデータを読み出す機会が少ないため、ニューラルネットワーク回路1は、消費電力の少ない回路である。 In the neural network circuit 1 of the embodiment configured in this manner, in the processing of the convolutional layer, data input from the first buffer memory unit 11 and the second buffer memory unit 12 to the main processing unit 10 is output from the unit processing unit 100 to another unit processing unit 100. Therefore, the main processing unit 10 has few opportunities to read data from the first buffer memory unit 11 and the second buffer memory unit 12. This means that the neural network circuit 1 has few opportunities to read data from the first external memory 91 and the second external memory 92. Therefore, the neural network circuit 1 configured in this manner can improve the calculation speed in the convolutional neural network in the processing of the convolutional layer. In addition, since there are few opportunities to read data from the first external memory 91 and the second external memory 92, the neural network circuit 1 is a circuit with low power consumption.

<全結合層における処理>
主演算部10が実行する全結合層における処理(以下「全結合処理」という。)について図22~図32を用いて説明する。全結合層における処理の説明においては、記号wは、フィルタ係数ではなく全結合係数を表す。
<Processing in the fully connected layer>
The processing in the fully connected layer (hereinafter referred to as "fully connected processing") executed by the main processing unit 10 will be described with reference to Fig. 22 to Fig. 32. In the description of the processing in the fully connected layer, the symbol w represents a fully connected coefficient rather than a filter coefficient.

図22は、実施形態における全結合処理の概要を説明する説明図である。
図22におけるx、x、x及びxはアクチベーションデータを表す。図22におけるw00、w01、w02及びw03は全結合係数を表す。図22におけるu、u、u及びuは、活性を表す。
FIG. 22 is an explanatory diagram for explaining an overview of the full join process in the embodiment.
In Fig. 22, x0 , x1 , x2 , and x3 represent activation data. In Fig. 22, w00 , w01 , w02 , and w03 represent total coupling coefficients. In Fig. 22, u0 , u1 , u2 , and u3 represent activity.

全結合処理では、x、x、x及びxのそれぞれについて予め定められた全結合係数が乗算される。図22において、全結合係数wABは、活性uを算出する演算においてアクチベーションデータxに対して乗算される値であることを示す。すなわち、全結合係数wは2つの指標によって他の全結合係数と区別される値であって、全結合係数wABの第1指標Aは活性uの算出に用いられる値であることを表す。また、全結合係数wABの第2指標Bは乗算先のアクチベーションデータxを表す。全結合処理では、乗算後の値の和を1つの活性として出力する。例えば、図22の例では、xとw00との積と、xとw01との積と、xとw02との積と、xとw03との積との和が活性uとして出力される。他の活性uについても同様であり、図22の例で算出される活性uを数式で表せば、以下の式(3)~式(5)で表される。 In the total coupling process, x 0 , x 1 , x 2 and x 3 are multiplied by a total coupling coefficient determined in advance. In FIG. 22, the total coupling coefficient w AB indicates a value multiplied by the activation data x B in the calculation to calculate the activation u A. That is, the total coupling coefficient w is a value that is distinguished from other total coupling coefficients by two indices, and the first index A of the total coupling coefficient w AB indicates that it is a value used to calculate the activation u A. In addition, the second index B of the total coupling coefficient w AB indicates the activation data x B to be multiplied. In the total coupling process, the sum of the values after multiplication is output as one activation. For example, in the example of FIG. 22, the sum of the product of x 0 and w 00 , the product of x 1 and w 01 , the product of x 2 and w 02 , and the product of x 3 and w 03 is output as the activation u 0 . The same is true for the other activities u. If the activity u calculated in the example of FIG. 22 is expressed by a formula, it can be expressed by the following formulas (3) to (5).

Figure 0007462140000003
Figure 0007462140000003

Figure 0007462140000004
Figure 0007462140000004

Figure 0007462140000005
Figure 0007462140000005

このように、全結合処理においては、複数の活性uが算出される。そこで、全結合処理の実行のため、制御用バッファ記憶部13は、予め、各活性uについて全結合層の処理において活性uを算出するために用いられる単位処理部100を示す情報(以下「全結合対応情報」という。)が記憶されている。 In this way, in the fully connected process, a plurality of activations uA are calculated. Therefore, in order to execute the fully connected process, the control buffer storage unit 13 stores in advance information indicating the unit processing unit 100 used to calculate the activation uA in the process of the fully connected layer for each activation uA (hereinafter referred to as "fully connected corresponding information").

図23は、実施形態の全結合処理の実行時の単位処理部100間のデータの流れの一例を説明する第1の説明図である。
図23は、単位処理部100には、コンフィギュレーションデータによって接続先として示された他の単位処理部100からデータが入力されることを示す。図23の例では、例えば、PB(1、1)には、PB(0、1)、PB(1、0)、PB(1、2)及びPB(2、1)からデータが入力される。
FIG. 23 is a first explanatory diagram illustrating an example of the flow of data between the unit processing units 100 when the all-join process of the embodiment is executed.
Fig. 23 shows that data is input to the unit processing unit 100 from other unit processing units 100 that are designated as connection destinations by the configuration data. In the example of Fig. 23, for example, data is input to PB(1,1) from PB(0,1), PB(1,0), PB(1,2), and PB(2,1).

図24は、実施形態の全結合処理の実行時の単位処理部100間のデータの流れの一例を説明する第2の説明図である。
図24は、単位処理部100には、コンフィギュレーションデータによって接続先として示された他の単位処理部100にデータが出力されることを示す。図24の例では、例えば、PB(1、1)から、PB(0、1)、PB(1、0)、PB(1、2)及びPB(2、1)にデータが出力される。
FIG. 24 is a second explanatory diagram illustrating an example of the flow of data between the unit processing units 100 when the all-join process of the embodiment is executed.
Fig. 24 shows that data is output from the unit processing unit 100 to another unit processing unit 100 that is specified as a connection destination by the configuration data. In the example of Fig. 24, for example, data is output from PB(1,1) to PB(0,1), PB(1,0), PB(1,2) and PB(2,1).

図25~図31を用いて、全結合処理の流れの一例を説明する。全結合処理は、後述する1番目の処理から6番目までの処理を含む。全結合処理では、後述する1番目から6番目までの処理の実行後、4番目の処理から6番目の処理が所定の終了条件を満たすまで繰り返される。所定の終了条件は、例えば、全結合係数の全てが活性uの算出に用いられた、という条件である。 An example of the flow of the full connection process will be described using Figures 25 to 31. The full connection process includes the first to sixth processes described below. In the full connection process, after the first to sixth processes described below are executed, the fourth to sixth processes are repeated until a specific end condition is met. The specific end condition is, for example, that all of the connection coefficients have been used to calculate the activity u.

図25は、実施形態における全結合処理の1番目の処理の一例を説明する説明図である。全結合処理の1番目の処理では、予め対応付けられた単位処理部100に第1バッファ記憶部11からアクチベーションデータxが入力される。全結合処理におけるアクチベーションデータは、例えば、畳み込み処理によって算出された活性である。 Figure 25 is an explanatory diagram illustrating an example of the first process of the full connection process in an embodiment. In the first process of the full connection process, activation data x is input from the first buffer memory unit 11 to a unit processing unit 100 that is associated in advance. The activation data in the full connection process is, for example, activity calculated by a convolution process.

図25の例は、PB(0、0)にアクチベーションデータxが入力されていることを示す。図25の例は、PB(0、1)にアクチベーションデータxが入力されていることを示す。図25の例は、PB(1、0)にアクチベーションデータxが入力されていることを示す。図25の例は、PB(1、1)にアクチベーションデータxが入力されていることを示す。すなわち、図25の例は、式(5)の計算におけるアクチベーションデータx、x、x、xが主演算部10に読み出されていることを示す。すなわち、図25の例では、以下の式(7)における点線で囲まれた値が単位処理部100に読み出されていることを示す。 The example of FIG. 25 indicates that activation data x0 is input to PB(0,0). The example of FIG. 25 indicates that activation data x1 is input to PB(0,1). The example of FIG. 25 indicates that activation data x2 is input to PB(1,0). The example of FIG. 25 indicates that activation data x3 is input to PB(1,1). That is, the example of FIG. 25 indicates that activation data x0 , x1 , x2 , and x3 in the calculation of formula (5) are read out to the main calculation unit 10. That is, the example of FIG. 25 indicates that the value surrounded by the dotted line in the following formula (7) is read out to the unit processing unit 100.

Figure 0007462140000006
Figure 0007462140000006

図26及び図27は、全結合処理の2番目の処理を説明する説明図である。
図26は、実施形態における全結合処理の2番目の処理の一例を説明する第1の説明図である。2番目の処理は1番目の処理の次に実行される。全結合処理の2番目の処理では、全結合係数入力第1規則にしたがって第2バッファ記憶部12が記憶する全結合係数が主演算部10に入力される。全結合係数入力第1規則は、以下の規則条件3を満たす単位処理部100に以下の規則条件4及び規則条件5を満たす全結合係数wが入力されるという規則である。規則条件3は、入力予定の全結合係数wABの第2指標が示すアクチベーションデータxが1番目の処理によって入力された単位処理部100である、という条件である。規則条件4は、入力先の単位処理部100には第2指標が示すアクチベーションデータxが1番目の処理によって入力済みである、という条件である。規則条件5は、入力先の単位処理部100は、第1指標が示す活性uを算出するための単位処理部100であることが全結合対応情報によって示されている、という条件である。
26 and 27 are diagrams illustrating the second step of the full join process.
FIG. 26 is a first explanatory diagram for explaining an example of the second process of the full-bonding process in the embodiment. The second process is executed after the first process. In the second process of the full-bonding process, all the bond coefficients stored in the second buffer storage unit 12 are input to the main calculation unit 10 according to the first rule for inputting all bond coefficients. The first rule for inputting all bond coefficients is a rule that all bond coefficients w that satisfy the following rule conditions 4 and 5 are input to the unit processing unit 100 that satisfies the following rule condition 3. Rule condition 3 is a condition that the activation data x B indicated by the second index of the total bond coefficients w AB to be input is the unit processing unit 100 input by the first process. Rule condition 4 is a condition that the activation data x B indicated by the second index has already been input by the first process to the unit processing unit 100 of the input destination. Rule condition 5 is a condition that the full-bond correspondence information indicates that the unit processing unit 100 of the input destination is the unit processing unit 100 for calculating the activation u A indicated by the first index.

図26は、第2バッファ記憶部12から全結合係数が主演算部10に入力されることを示す。具体的には、図26は、全結合係数w00がPB(0、0)に入力され、全結合係数w22がPB(1、0)に入力されることを示す。すなわち、図26の例では、以下の式(7)における点線で囲まれた値が対応する単位処理部100に読み出されていることを示す。 Fig. 26 shows that all coupling coefficients are input from the second buffer storage unit 12 to the main calculation unit 10. Specifically, Fig. 26 shows that all coupling coefficients w00 are input to PB(0,0), and all coupling coefficients w22 are input to PB(1,0). That is, the example of Fig. 26 shows that the values surrounded by dotted lines in the following formula (7) are read out to the corresponding unit processing unit 100.

Figure 0007462140000007
Figure 0007462140000007

図27は、実施形態における全結合処理の2番目の処理の一例を説明する第2の説明図である。
図27は、第2バッファ記憶部12から全結合係数が主演算部10に入力されることを示す。具体的には、図27は、全結合係数w11がPB(0、1)に入力され、全結合係数w33がPB(1、1)に入力されることを示す。すなわち、図27の例では、以下の式(8)における点線で囲まれた値が対応する単位処理部100に読み出されていることを示す。
FIG. 27 is a second explanatory diagram illustrating an example of the second process of the full join process in the embodiment.
Fig. 27 shows that all coupling coefficients are input from the second buffer memory unit 12 to the main calculation unit 10. Specifically, Fig. 27 shows that all coupling coefficients w11 are input to PB(0,1), and all coupling coefficients w33 are input to PB(1,1). That is, the example of Fig. 27 shows that the values surrounded by dotted lines in the following formula (8) are read out to the corresponding unit processing unit 100.

Figure 0007462140000008
Figure 0007462140000008

図28は、実施形態における全結合処理の3番目の処理の一例を説明する説明図である。3番目の処理は2番目の処理の次に実行される。
全結合処理の3番目の処理においては、全結合処理の1番目の処理と2番目の処理とで各単位処理部100に入力された値の積が各単位処理部100で計算される。すなわち、図25~図27の例では、以下の式(9)における点線で囲まれた項の値が算出される。算出された値(以下「全結合積結果」という。)は、各単位処理部100が備えるレジスタ117に記憶される。
28 is a diagram illustrating an example of the third process of the full join process according to the embodiment. The third process is executed after the second process.
In the third process of the full connection process, the product of the values input to each unit processing unit 100 in the first and second processes of the full connection process is calculated in each unit processing unit 100. That is, in the example of Fig. 25 to Fig. 27, the value of the term surrounded by the dotted line in the following equation (9) is calculated. The calculated value (hereinafter referred to as the "full connection product result") is stored in the register 117 provided in each unit processing unit 100.

Figure 0007462140000009
Figure 0007462140000009

図29は、実施形態における全結合処理の4番目の処理の一例を説明する説明図である。4番目の処理は3番目の処理の次、又は、後述する6番目の処理の次に実行される。
全結合処理の4番目の処理では、各単位処理部100が接続先の単位処理部100に、直前の処理で用いたアクチベーションデータxを出力する。例えば、図29は、PB(1、0)が全結合処理の3番目の処理で用いたアクチベーションデータxをPB(0、0)に出力することを示す。すなわち、PB(0、0)には、アクチベーションデータxが入力される。より具体的には、図29の例では、全結合処理の4番目の処理により、以下の式(10)における点線で囲まれた項の値が対応する単位処理部100に入力される。
29 is a diagram illustrating an example of the fourth process of the full join process in the embodiment. The fourth process is executed after the third process or after the sixth process described below.
In the fourth process of the full connection process, each unit processing unit 100 outputs the activation data x used in the immediately preceding process to the connected unit processing unit 100. For example, FIG. 29 shows that PB(1,0) outputs the activation data x2 used in the third process of the full connection process to PB(0,0). That is, the activation data x2 is input to PB(0,0). More specifically, in the example of FIG. 29, the value of the term surrounded by the dotted line in the following formula (10) is input to the corresponding unit processing unit 100 by the fourth process of the full connection process.

Figure 0007462140000010
Figure 0007462140000010

図30は、実施形態における全結合処理の5番目の処理の一例を説明する説明図である。5番目の処理は4番目の処理の次に実行される。
全結合処理の5番目の処理においては、全結合係数入力第2規則にしたがって第2バッファ記憶部12が記憶する全結合係数が主演算部10に入力される。全結合係数入力第2規則は、以下の規則条件6を満たす単位処理部100に以下の規則条件7及び規則条件8を満たす全結合係数wが入力されるという規則である。規則条件6は、全結合処理の直前の処理(すなわち全結合処理の4番目の処理)において全結合係数wABの第2指標が示すアクチベーションデータxが入力された単位処理部100である、という条件を含む。規則条件7は、規則条件3を満たす単位処理部100に入力されているアクチベーションデータxを第2指標が示す全結合係数である、という条件を含む。規則条件8は、第1指標が示す活性uが、全結合処理の2番目の処理において規則条件3を満たす単位処理部100に入力された全結合係数の第1指標が示す活性uである、という条件を含む。
30 is a diagram illustrating an example of the fifth process of the all-join process according to the embodiment. The fifth process is executed after the fourth process.
In the fifth process of the full coupling process, all coupling coefficients stored in the second buffer memory unit 12 are input to the main calculation unit 10 according to the second rule for inputting all coupling coefficients. The second rule for inputting all coupling coefficients is a rule that all coupling coefficients w that satisfy the following rule conditions 7 and 8 are input to the unit processing unit 100 that satisfies the following rule condition 6. Rule condition 6 includes a condition that the unit processing unit 100 is the unit to which the activation data x B indicated by the second index of the all coupling coefficients w AB was input in the process immediately before the full coupling process (i.e., the fourth process of the full coupling process). Rule condition 7 includes a condition that the activation data x B input to the unit processing unit 100 that satisfies rule condition 3 is the all coupling coefficient indicated by the second index. Rule condition 8 includes a condition that the activation u A indicated by the first index is the activation u A indicated by the first index of the all coupling coefficients input to the unit processing unit 100 that satisfies rule condition 3 in the second process of the full coupling process.

例えば、図30の例では、PB(0、0)には全結合係数w02が入力される。例えば、図30の例では、PB(0、1)には全結合係数w10が入力される。例えば、図30の例では、PB(1、0)には全結合係数w23が入力される。例えば、図30の例では、PB(1、1)には全結合係数w31が入力される。より具体的には、図30の例では、全結合処理の5番目の処理により、以下の式(11)における点線で囲まれた項の値が対応する単位処理部100に入力される。 For example, in the example of FIG. 30, a total coupling coefficient w 02 is input to PB(0,0). For example, in the example of FIG. 30, a total coupling coefficient w 10 is input to PB(0,1). For example, in the example of FIG. 30, a total coupling coefficient w 23 is input to PB(1,0). For example, in the example of FIG. 30, a total coupling coefficient w 31 is input to PB(1,1). More specifically, in the example of FIG. 30, the value of the term surrounded by a dotted line in the following formula (11) is input to the corresponding unit processing unit 100 by the fifth process of the total coupling process.

Figure 0007462140000011
Figure 0007462140000011

図31は、実施形態における全結合処理の6番目の処理の一例を説明する説明図である。6番目の処理は5番目の処理の次に実行される。
全結合処理の6番目の処理においては、全結合処理の4番目の処理で入力されたアクチベーションデータと全結合処理の5番目の処理で入力された全結合係数との積が計算される。算出された値は、全結合積結果としてレジスタ117に記憶される。例えば、図31の例では、以下の式(12)における点線で囲まれた項の値が算出される。
31 is a diagram illustrating an example of the sixth process of the full join process according to the embodiment. The sixth process is executed after the fifth process.
In the sixth process of the full connection process, the product of the activation data input in the fourth process of the full connection process and the full connection coefficients input in the fifth process of the full connection process is calculated. The calculated value is stored in the register 117 as the full connection product result. For example, in the example of FIG. 31, the value of the term surrounded by the dotted line in the following formula (12) is calculated.

Figure 0007462140000012
Figure 0007462140000012

図32は、実施形態における全結合処理の流れの一例を示すフローチャートである。
全結合処理が開始される(ステップS201)。全結合処理の1番目の処理が実行される(ステップS202)。次に、全結合処理の2番目の処理が実行される(ステップS203)。次に、全結合処理の3番目の処理が実行される(ステップS204)。次に、全結合処理の4番目の処理が実行される(ステップS205)。次に、全結合処理の5番目の処理が実行される(ステップS206)。次に、全結合処理の6番目の処理が実行される(ステップS207)。全結合係数の全てが活性uの算出に用いられたか否かが判定される(ステップS208)。ステップS208の判定は例えば制御部14によって判定される。活性uの算出に用いられていない全結合係数が有る場合(ステップS208:YES)、ステップS205の処理が実行される。一方、活性uの算出に用いられていない全結合係数が無い場合(ステップS208:NO)、各単位処理部100は、ステップS201以降に各単位処理部100がレジスタ117に記憶した全結合積結果の和を算出する(ステップS209)。算出された和が、活性uである。ステップS209の次に、全結合処理が終了する(ステップS210)。
FIG. 32 is a flowchart showing an example of the flow of the all-join process in the embodiment.
The full-combination process is started (step S201). The first process of the full-combination process is executed (step S202). Next, the second process of the full-combination process is executed (step S203). Next, the third process of the full-combination process is executed (step S204). Next, the fourth process of the full-combination process is executed (step S205). Next, the fifth process of the full-combination process is executed (step S206). Next, the sixth process of the full-combination process is executed (step S207). It is determined whether all of the coupling coefficients have been used in the calculation of the activity u (step S208). The determination in step S208 is made by, for example, the control unit 14. If there are any coupling coefficients that have not been used in the calculation of the activity u (step S208: YES), the process in step S205 is executed. On the other hand, if there are no all coupling coefficients that have not been used in the calculation of the activation u (step S208: NO), each processing unit 100 calculates the sum of all coupling product results that each processing unit 100 has stored in the register 117 after step S201 (step S209). The calculated sum is the activation u. After step S209, the all coupling process ends (step S210).

このように構成された実施形態のニューラルネットワーク回路1は、全結合層の処理において、第1バッファ記憶部11及び第2バッファ記憶部12から主演算部10に入力されたデータが、単位処理部100から他の単位処理部100に出力される。このため、主演算部10が第1バッファ記憶部11及び第2バッファ記憶部12からデータを読み出す機会が少ない。このことは、ニューラルネットワーク回路1が、第1外部メモリ91及び第2外部メモリ92からデータを読み出す機会が少ないことを意味する。そのため、このように構成されたニューラルネットワーク回路1は、全結合層の処理において、畳み込みニューラルネットワークにおける演算速度を向上させることができる。また、第1外部メモリ91及び第2外部メモリ92からデータを読み出す機会が少ないため、ニューラルネットワーク回路1は、消費電力の少ない回路である。 In the neural network circuit 1 of the embodiment configured in this manner, in the processing of the fully connected layer, data input from the first buffer memory unit 11 and the second buffer memory unit 12 to the main processing unit 10 is output from the unit processing unit 100 to another unit processing unit 100. Therefore, the main processing unit 10 has few opportunities to read data from the first buffer memory unit 11 and the second buffer memory unit 12. This means that the neural network circuit 1 has few opportunities to read data from the first external memory 91 and the second external memory 92. Therefore, the neural network circuit 1 configured in this manner can improve the calculation speed in the convolutional neural network in the processing of the fully connected layer. In addition, since there are few opportunities to read data from the first external memory 91 and the second external memory 92, the neural network circuit 1 is a circuit with low power consumption.

また、このように構成された実施形態のニューラルネットワーク回路1は、制御部14の制御によりコンフィギュレーションデータに基づいて単位処理部100間の接続関係を変更することができる。そのため、ニューラルネットワーク回路1は同一の回路で、畳み込み層の処理と全結合層の処理とを実行することができる汎用性の高い回路である。 In addition, the neural network circuit 1 of the embodiment configured in this manner can change the connection relationships between the unit processing units 100 based on the configuration data under the control of the control unit 14. Therefore, the neural network circuit 1 is a highly versatile circuit that can execute both the processing of the convolution layer and the processing of the fully connected layer with the same circuit.

(変形例)
なお、主演算部10において単位処理部100は、必ずしも格子状に2次元的に配置されている必要は無い。複数の単位処理部100は、コンフィギュレーションデータが示す接続関係で他の単位処理部100に接続可能な位置に配置されればどのように配置されてもよい。例えば、単位処理部100は、3次元的に配置されていてもよい。例えば、各単位処理部100は、立方格子の各頂点に位置してもよい。
(Modification)
In the main processing unit 10, the unit processing units 100 do not necessarily need to be arranged two-dimensionally in a lattice pattern. The multiple unit processing units 100 may be arranged in any manner as long as they are arranged at positions where they can be connected to other unit processing units 100 in accordance with the connection relationship indicated by the configuration data. For example, the unit processing units 100 may be arranged three-dimensionally. For example, each unit processing unit 100 may be located at each vertex of a cubic lattice.

なお、第1バッファ記憶部11は、第1記憶部の一例である。なお、第2バッファ記憶部12は、第2記憶部の一例である。なお、単位処理部100は演算部の一例である。なお、フィルタ係数及び全結合係数は重みデータの一例である。なお、アクチベーションデータとフィルタ係数との積と、アクチベーションデータと全結合係数との積とは、項値の一例である。なお、図15及び図17における各フィルタ係数と、図26~図31における各全結合係数とは、重みデータに関する所定の条件を満たす1つの前記重みデータの一例である。なお、規則条件1、規則条件2、規則条件4、規則条件5、規則条件7及び規則条件8は、重みデータに関する所定の条件の一例である。 The first buffer memory unit 11 is an example of a first memory unit. The second buffer memory unit 12 is an example of a second memory unit. The unit processing unit 100 is an example of a calculation unit. The filter coefficients and the total coupling coefficients are examples of weight data. The product of the activation data and the filter coefficients and the product of the activation data and the total coupling coefficients are examples of term values. Each filter coefficient in FIG. 15 and FIG. 17 and each total coupling coefficient in FIG. 26 to FIG. 31 are examples of one piece of weight data that satisfies a predetermined condition related to the weight data. Rule condition 1, rule condition 2, rule condition 4, rule condition 5, rule condition 7, and rule condition 8 are examples of a predetermined condition related to the weight data.

以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。 The above describes an embodiment of the present invention in detail with reference to the drawings, but the specific configuration is not limited to this embodiment, and includes designs that do not deviate from the gist of the present invention.

1…ニューラルネットワーク回路、 10…主演算部、 11…第1バッファ記憶部、 12…第2バッファ記憶部、 13…制御用バッファ記憶部、 14…制御部、 100…単位処理部、 101…接続部、 102…積和演算部、 111…入力制御回路、 112…重み制御回路、 113…出力制御回路、 114、115、116、117…レジスタ、 118…フィードバック導線、 201…積和演算回路、 202…活性化回路 1...Neural network circuit, 10...Main calculation unit, 11...First buffer memory unit, 12...Second buffer memory unit, 13...Control buffer memory unit, 14...Control unit, 100...Unit processing unit, 101...Connection unit, 102...Product-sum calculation unit, 111...Input control circuit, 112...Weight control circuit, 113...Output control circuit, 114, 115, 116, 117...Register, 118...Feedback conductor, 201...Product-sum calculation circuit, 202...Activation circuit

Claims (4)

畳み込みニューラルネットワークであって全結合層と複数の畳み込み層とを有する畳み込みニューラルネットワークにおける畳み込み層又は全結合層の処理を実行するニューラルネットワーク回路であって、
各層に入力されるデータであってテンソルで表されるデータの各要素の値であるアクチベーションデータを記憶する第1記憶部と、
前記畳み込み層又は前記全結合層で実行される処理のための重みデータを記憶する第2記憶部と、
所定のタイミングで前記第1記憶部から1つの前記アクチベーションデータを読み出し、読み出した前記アクチベーションデータと前記重みデータのうちの重みデータに関する所定の条件を満たす1つの前記重みデータとの積の項の値である項値を取得する複数の演算部と、
を備え、
前記演算部が読み出した前記アクチベーションデータは、前記演算部が前記項値を演算した後に予め対応付けられた他の前記演算部に出力され、
前記演算部は前記畳み込み層の処理と前記全結合層の処理とで共通に用いられる、
ニューラルネットワーク回路。
A neural network circuit for executing processing of a convolutional layer or a fully connected layer in a convolutional neural network having a fully connected layer and a plurality of convolutional layers, comprising:
A first storage unit that stores activation data, which is data input to each layer and is represented by a tensor, and is a value of each element of the data;
A second storage unit that stores weight data for processing executed in the convolution layer or the fully connected layer;
A plurality of calculation units that read out one of the activation data from the first storage unit at a predetermined timing, and obtain a term value that is a value of a term of a product of the read out activation data and one of the weight data that satisfies a predetermined condition related to the weight data;
Equipped with
The activation data read by the calculation unit is output to another calculation unit associated with the activation data after the calculation unit calculates the term value ,
The calculation unit is used in common for the processing of the convolution layer and the processing of the fully connected layer.
Neural network circuit.
前記畳み込み層の処理は畳み込み積分であって、
前記畳み込み積分の実行時の前記重みデータは、前記畳み込み積分を実行するためのフィルタの各値であるフィルタ係数である、
請求項1に記載のニューラルネットワーク回路。
The process of the convolution layer is a convolution integral,
The weight data when performing the convolution integral is a filter coefficient, which is each value of a filter for performing the convolution integral.
2. The neural network circuit of claim 1.
前記全結合層の処理の実行時の前記重みデータは、前記全結合層の処理に用いられる重み係数である、
請求項1に記載のニューラルネットワーク回路。
The weight data at the time of execution of the processing of the fully connected layer is a weight coefficient used in the processing of the fully connected layer.
2. The neural network circuit of claim 1.
畳み込みニューラルネットワークであって全結合層と複数の畳み込み層とを有する畳み込みニューラルネットワークにおける畳み込み層又は全結合層の処理を実行するニューラルネットワーク回路であって、各層に入力されるデータであってテンソルで表されるデータの各要素の値であるアクチベーションデータを記憶する第1記憶部と、前記畳み込み層又は前記全結合層で実行される処理のための重みデータを記憶する第2記憶部と、所定のタイミングで前記第1記憶部から1つの前記アクチベーションデータを読み出し、読み出した前記アクチベーションデータと前記重みデータのうちの重みデータに関する所定の条件を満たす1つの前記重みデータとの積の項の値である項値を取得する複数の演算部と、を備え、前記演算部が読み出した前記アクチベーションデータは、前記演算部が前記項値を演算した後に予め対応付けられた他の前記演算部に出力され、前記演算部は前記畳み込み層の処理と前記全結合層の処理とで共通に用いられるニューラルネットワーク回路が実行するニューラルネットワーク演算方法であって、
前記演算部が、所定のタイミングで前記第1記憶部から1つの前記アクチベーションデータを読み出し、読み出した前記アクチベーションデータと前記重みデータのうちの重みデータに関する所定の条件を満たす1つの前記重みデータとの積の項の値である項値を取得する取得ステップと、
前記演算部が読み出した前記アクチベーションデータが、前記演算部が前記項値を演算した後に予め対応付けられた他の前記演算部に出力される出力ステップと、
を有するニューラルネットワーク演算方法。
A neural network circuit for executing processing of a convolutional layer or a fully connected layer in a convolutional neural network having a fully connected layer and a plurality of convolutional layers, the neural network circuit comprising: a first storage unit for storing activation data, which is a value of each element of data represented by a tensor and input to each layer; a second storage unit for storing weight data for processing executed in the convolutional layer or the fully connected layer; and a plurality of arithmetic units for reading one of the activation data from the first storage unit at a predetermined timing and acquiring a term value, which is a term value of a product of the read activation data and one of the weight data that satisfies a predetermined condition related to the weight data, the activation data read by the arithmetic unit is output to another of the arithmetic units associated in advance after the arithmetic unit calculates the term value , the arithmetic unit being used in common for processing of the convolutional layer and processing of the fully connected layer, the neural network arithmetic unit comprising:
An acquisition step in which the calculation unit reads out one of the activation data from the first storage unit at a predetermined timing, and acquires a term value that is a value of a term of a product of the read out activation data and one of the weight data that satisfies a predetermined condition related to the weight data;
an output step in which the activation data read by the calculation unit is output to another calculation unit associated with the activation data after the calculation unit calculates the term value;
The neural network operation method includes:
JP2019196326A 2019-10-29 2019-10-29 Neural network circuit and neural network operation method Active JP7462140B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019196326A JP7462140B2 (en) 2019-10-29 2019-10-29 Neural network circuit and neural network operation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019196326A JP7462140B2 (en) 2019-10-29 2019-10-29 Neural network circuit and neural network operation method

Publications (2)

Publication Number Publication Date
JP2021071772A JP2021071772A (en) 2021-05-06
JP7462140B2 true JP7462140B2 (en) 2024-04-05

Family

ID=75713091

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019196326A Active JP7462140B2 (en) 2019-10-29 2019-10-29 Neural network circuit and neural network operation method

Country Status (1)

Country Link
JP (1) JP7462140B2 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180032859A1 (en) 2016-07-27 2018-02-01 Samsung Electronics Co., Ltd. Accelerator in convolutional neural network and method for operating the same
US20180121377A1 (en) 2016-10-27 2018-05-03 Google Inc. Exploiting input data sparsity in neural network compute units
US20180129936A1 (en) 2016-11-10 2018-05-10 Google Inc. Performing kernel striding in hardware
US20180197068A1 (en) 2016-10-27 2018-07-12 Google Llc Neural network instruction set architecture

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180032859A1 (en) 2016-07-27 2018-02-01 Samsung Electronics Co., Ltd. Accelerator in convolutional neural network and method for operating the same
US20180121377A1 (en) 2016-10-27 2018-05-03 Google Inc. Exploiting input data sparsity in neural network compute units
US20180197068A1 (en) 2016-10-27 2018-07-12 Google Llc Neural network instruction set architecture
US20180129936A1 (en) 2016-11-10 2018-05-10 Google Inc. Performing kernel striding in hardware

Also Published As

Publication number Publication date
JP2021071772A (en) 2021-05-06

Similar Documents

Publication Publication Date Title
US11868426B2 (en) Hardware implementation of convolutional layer of deep neural network
CN107169560B (en) Self-adaptive reconfigurable deep convolutional neural network computing method and device
CN109165732B (en) Neural network processing device and method for executing vector multiply-add instruction
EP3480742A1 (en) Activation functions for deep neural networks
WO2018113597A1 (en) Multiplication and addition device for matrices, neural network computing device, and method
KR20170007151A (en) Method and apparatus for executing artificial neural networks
US20190236449A1 (en) End-to-End Data Format Selection for Hardware Implementation of Deep Neural Networks
US20210390381A1 (en) Hardware architecture for processing data in neural network
WO2019088072A1 (en) Information processing device, information processing method, and program
Li et al. Siphon extraction for deadlock control in flexible manufacturing systems by using Petri nets
CN114503126A (en) Matrix operation circuit, device and method
US20170168775A1 (en) Methods and Apparatuses for Performing Multiplication
JP7462140B2 (en) Neural network circuit and neural network operation method
CN113052299B (en) Neural network memory computing device based on lower communication bound and acceleration method
Ahn A new condition for the elimination of overflow oscillations in direct form digital filters
CN109902821B (en) Data processing method and device and related components
Saadaoui et al. A new method for the computation of all stabilizing controllers of a given order
Lutovac et al. Symbolic analysis and design of control systems using Mathematica
Jafarzadeh Numerical solution for fuzzy Fredholm integral equations with upper-bound on error by splines interpolation
CN114237548B (en) Method and system for complex point multiplication operation based on nonvolatile memory array
JP7042870B2 (en) Methods, devices, devices and computer-readable storage media performed by computing devices
Glavelis et al. Improving a primal–dual simplex-type algorithm using interior point methods
KR102392977B1 (en) Method and apparatus for reducing storage space of parameter table, device, and computer-readable storage medium
Ahn et al. A quadratically convergent algorithm for first passage time distributions in the Markov-modulated Brownian motion
CN117063182A (en) Data processing method and device

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200806

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221025

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231024

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240304