JP6945987B2 - Arithmetic circuit, its control method and program - Google Patents
Arithmetic circuit, its control method and program Download PDFInfo
- Publication number
- JP6945987B2 JP6945987B2 JP2016211898A JP2016211898A JP6945987B2 JP 6945987 B2 JP6945987 B2 JP 6945987B2 JP 2016211898 A JP2016211898 A JP 2016211898A JP 2016211898 A JP2016211898 A JP 2016211898A JP 6945987 B2 JP6945987 B2 JP 6945987B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- reference data
- calculation
- coefficient data
- coefficient
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
- Image Processing (AREA)
Description
本発明は、パターン認識等に使用される演算回路、その制御方法及びプログラムに関するものである。 The present invention relates to an arithmetic circuit used for pattern recognition and the like, a control method thereof, and a program.
パターン認識装置などの画像処理装置にニューラルネットワークの手法が広く応用されている。ニューラルネットワークの中でも、Convolutional Neural Networks(以下CNNと略記する)と呼ばれる演算手法が認識対象の変動に対して頑健なパターン認識を可能にする手法として注目されている。例えば、非特許文献1では、コンボリューショナルニューラルネットワーク(CNN)の様々な応用例・実装例が開示されている。CNN処理は、認識対象の信号や実現する認識機能等に応じて様々なネットワークの構成が提案されている。ここで、コンボリューショナルニューラルネットワークの構成は、階層の数やその階層内の特徴面の数等、コンボリューション演算の結合関係で表現される構成を示す。 The neural network method is widely applied to image processing devices such as pattern recognition devices. Among neural networks, a calculation method called Convolutional Neural Networks (hereinafter abbreviated as CNN) is attracting attention as a method that enables robust pattern recognition with respect to fluctuations in the recognition target. For example, Non-Patent Document 1 discloses various application examples and implementation examples of a convolutional neural network (CNN). For CNN processing, various network configurations have been proposed according to the signal to be recognized, the recognition function to be realized, and the like. Here, the configuration of the convolutional neural network shows a configuration expressed by the connection relationship of the convolution operation, such as the number of layers and the number of feature faces in the layer.
図15は簡単なCNN処理の例を示すネットワーク構成図である。入力層1501は、画像データに対してCNN処理を行う場合、ラスタスキャンされた所定サイズの画像データに相当する。特徴面1503a〜1503cは第1階層1508の特徴面を示す。特徴面とは、所定の特徴抽出演算(コンボリューション演算及び非線形処理)の処理結果に相当するデータ面である。特徴面は上位階層で所定の対象を認識するための特徴抽出結果に相当すし、ラスタスキャンされた画像データに対する処理結果であるため、処理結果も面で表す。
FIG. 15 is a network configuration diagram showing an example of a simple CNN process. The
特徴面1503a〜1503cは、入力層1501に対応するコンボリューション演算及び非線形処理により算出されるものである。例えば、特徴面1503aは、模式的に示す2次元のフィルタカーネル15021aのコンボリューション演算と演算結果の非線形変換により算出する。
The
例えば、フィルタカーネル(フィルタ係数マトリクス)サイズがcolumnSize×rowSizeであるコンボリューション演算は以下に示すような積和演算により処理する。 For example, the convolution operation in which the filter kernel (filter coefficient matrix) size is volumeSize × lowSize is processed by the product-sum operation as shown below.
ここで、「input(x,y)」は座標(x、y)での参照画素値を示し、「output(x,y)」は座標(x、y)での演算結果を示す。また、「weight(column,row)」は座標(x+column、y+row)での重み係数を示し、「columnSize」及び「rowSize」はコンボリューションカーネルサイズを示す。
Here, "input (x, y)" indicates a reference pixel value in coordinates (x, y), and "output (x, y)" indicates a calculation result in coordinates (x, y). Further, "weight (column, low)" indicates a weighting coefficient in coordinates (x + volume, y + low), and "columnSize" and "lowSize" indicate a convolution kernel size.
CNN処理では複数のフィルタカーネルを画素単位で走査しながら積和演算を繰り返し、最終的な積和結果を非線形変換することで特徴面を算出する。なお、特徴面1503aは前階層の一つの画像データから算出されるので、結合数が1である。特徴面1503aを算出するためのフィルタカーネル15021aは1つである。ここで、フィルタカーネル15021b、フィルタカーネル15021cはそれぞれ特徴面1503b、1503cを算出する際に使用されるフィルタカーネルである。また、フィルタカーネルは、フィルタ又はカーネルと略称することがある。
In the CNN process, the product-sum operation is repeated while scanning a plurality of filter kernels on a pixel-by-pixel basis, and the final product-sum result is non-linearly converted to calculate the characteristic surface. Since the
図16はCNN処理における特徴面1505aを算出す場合の例を説明する図である。特徴面1505aは前階層1508の3つの特徴面1503a〜cから算出され、特徴面1503a〜cと結合している。特徴面1505aのデータを算出する場合、まず、特徴面1503aに対しては模式的に示すカーネル15041aを用いたフィルタ演算(コンボリューション演算)を行い、その結果を累積加算器1601に保持する。同様に、特徴面1503b、1503cに対してはそれぞれカーネル15042a、15043aのコンボリューション演算を行い、その結果を累積加算器1601に累積加算する。3種類のカーネルを用いたコンボリューション演算の終了後、ロジスティック関数や双曲正接関数(tanh関数)を利用した非線形変換処理1602を行う。
FIG. 16 is a diagram illustrating an example in the case of calculating the
以上の処理を画像全体に対して1画素ずつ走査しながら処理することで、特徴面1505aを算出する。同様に、特徴面1505bは前階層1508の3つの特徴面に対してカーネル15041b、カーネル15042b及びカーネル15043bで示す3つのコンボリューション演算を用いて算出する。更に、特徴面1507は前階層1509の特徴面1505a〜bのそれぞれに対してカーネル15061及びカーネル15062で示す2つのコンボリューション演算を用いて算出する。
The
なお、各コンボリューション係数はパーセプトロン学習やバックプロパゲーション学習等の一般的な手法を用いて予め学習により決定されているものとする。例えば、物体の検出やパターン認識等においては、10×10以上の大きなサイズのコンボリューションカーネルを使用することがある。 It is assumed that each convolution coefficient is determined in advance by learning using a general method such as perceptron learning or backpropagation learning. For example, in object detection, pattern recognition, etc., a large size convolution kernel of 10 × 10 or more may be used.
このように、CNN処理では多数の大きなカーネルサイズのコンボリューション演算を繰り返すため、膨大な回数の積和演算が必要となる。共通のハードウェアで様々な認識タスクに対応するためには、多様なネットワークを高い並列度で効率的に処理することが求められる。 As described above, since a large number of large kernel-sized convolutional operations are repeated in the CNN process, a huge number of product-sum operations are required. In order to support various recognition tasks with common hardware, it is required to efficiently process various networks with a high degree of parallelism.
特許文献1では積和演算器を複数用意し、複数の受容野位置(算出する特徴面の画素位置)に対応するコンボリューション演算を並列に処理することで高速化する装置が提案されている。また、特許文献2ではコンボリューションカーネルに対して演算器を割り付ける構成のCNN処理装置が提案されている。
Patent Document 1 proposes a device for increasing the speed by preparing a plurality of multiply-accumulate arithmetic units and processing convolution operations corresponding to a plurality of receptive field positions (pixel positions of feature planes to be calculated) in parallel. Further,
しかしながら、特許文献1では、算出する一つの特徴面に着目して、複数の受容野を並列に処理するが、コンボリューションのカーネルサイズや処理対象の領域等によっては、効率的に並列処理できない場合がある。例えば、カーネルサイズが小さい場合、積和演算器に入力するデータの転送時間がボトルネックとなり、積和演算の処理効率が低下する場合がある。 However, in Patent Document 1, a plurality of receptive fields are processed in parallel by paying attention to one characteristic aspect to be calculated, but when the parallel processing cannot be performed efficiently depending on the kernel size of the convolution, the area to be processed, and the like. There is. For example, when the kernel size is small, the transfer time of the data input to the product-sum calculation unit becomes a bottleneck, and the processing efficiency of the product-sum calculation may decrease.
本発明は上記の課題に鑑みてなされたものであり、保持部に保持された一部の参照データと異なるフィルタとのフィルタ演算を順次に行うことによって、積和演算の処理効率の低下を避ける演算回路を提供することを目的とする。また、その演算回路の制御方法及びプログラムを提供することを目的とする。 The present invention has been made in view of the above problems, and avoids a decrease in processing efficiency of the product-sum operation by sequentially performing filter operations on a part of the reference data held in the holding unit and a different filter. It is an object of the present invention to provide an arithmetic circuit. Another object of the present invention is to provide a control method and a program of the arithmetic circuit.
上記課題を解決するために、本発明によれば、フィルタ演算の参照データと係数データとを記憶する記憶装置と接続し、1つの参照特徴面に対するフィルタ演算により複数の算出特徴面を算出する演算回路に、前記参照データと前記係数データとの前記フィルタ演算を実行する少なくとも一つの演算器と、前記記憶装置から転送された複数の参照データを保持する参照データ保持手段と、前記記憶装置から転送された複数の係数データを保持する係数データ保持手段と、前記少なくとも一つの演算器のそれぞれに、前記参照データ保持手段に保持された前記複数の参照データのうち1つの参照データと、前記係数データ保持手段に保持された前記複数の係数データのうち1つの係数データとの演算を、同一の1つの参照データとそれぞれ異なる1つの係数データとの演算を順次実行させるようにして実行させ、複数の算出特徴面の算出を、算出対象となる算出特徴面の領域中の所定の大きさの部分領域ごとに算出特徴面を順次切り替えながら実行させる制御手段と、を有する。 In order to solve the above problems, according to the present invention, an operation of connecting to a storage device that stores reference data and coefficient data of a filter operation and calculating a plurality of calculated feature surfaces by a filter operation on one reference feature surface. In the circuit, at least one arithmetic unit that executes the filter calculation of the reference data and the coefficient data, a reference data holding means that holds a plurality of reference data transferred from the storage device, and transfer from the storage device. and coefficient data holding means for holding a plurality of coefficient data, the each of the at least one computing unit, and one reference data among said plurality of reference data held in the reference data holding means, said coefficient data the operation of a single coefficient data of the plurality of coefficient data stored in the storage means, to execute the operation with each of the same one reference data different one coefficient data so as to sequentially execute a plurality of It has a control means for executing the calculation of the calculated feature plane while sequentially switching the calculated feature plane for each partial region of a predetermined size in the region of the calculated feature plane to be calculated.
本発明により、保持部に保持された一部の参照データと異なるフィルタとのフィルタ演算を順次に行うことによって、積和演算の処理効率の低下を避けることができる。 According to the present invention, it is possible to avoid a decrease in the processing efficiency of the product-sum calculation by sequentially performing the filter calculation with a filter different from a part of the reference data held in the holding unit.
(第1の実施形態)
まず、本発明の第1の実施形態について説明する。図1は本発明の第1の実施形態に係る演算回路の構成を説明する図である。
(First Embodiment)
First, the first embodiment of the present invention will be described. FIG. 1 is a diagram illustrating a configuration of an arithmetic circuit according to a first embodiment of the present invention.
図1の説明に先立ち、本実施形態の演算回路が行う各種の演算処理の一例として、この演算回路によるコンボリューション演算の基本的な考え方を、図3を用いて説明する。図3は、コンボリューション演算によって参照特徴面302から特徴面306を算出する一例である。ここでは特徴面306の垂直方向に連続する3つの位置の特徴面データ305を並列に算出する場合の概念を説明する。なお、なお、基本的な考え方は、特徴面306の水平方向に連続する位置を並列に算出する場合についても同様である。コンボリューションカーネル(フィルタカーネル)のサイズは説明のため3行1列の係数とする。特徴面306のデータ305を並列に算出するのに必要な参照データが参照特徴面302のデータ301である。
Prior to the description of FIG. 1, as an example of various arithmetic processes performed by the arithmetic circuit of the present embodiment, the basic concept of convolution arithmetic by this arithmetic circuit will be described with reference to FIG. FIG. 3 is an example of calculating the
図3のシフトレジスタ303及びシフトレジスタ307は、それぞれ参照データ301及びコンボリューションカーネルの係数データを保持する。シフトレジスタ303は複数の積和演算器304に異なる参照位置のデータを並列に供給し、シフトレジスタ307は複数の積和演算器304に共通の係数データを順次供給する。シフトレジスタ303及びシフトレジスタ307は図示しないクロックに同期して順次動作し、その出力を並列積和演算器304で並列に演算する。ここで、算出する特徴面のデータo1に着目すると、1クロック目でo1=i1×w1が算出され、2クロック目でo1=o1+i2×w2、3クロック目o1=o1+i3×w3が演算さる。結果として3クロックで所望のコンボリューション結果(i1×w1+i2×w2+i3×w3)が得られる。コンボリューションカーネルが2次元の場合、参照データと係数データを変えながら上記処理を列単位に繰り返して累積することで2次元のコンボリューション演算が実現する。
The
この様に算出特徴面306を基準にしてコンボリューション演算を行うことでフィルタカーネルのサイズに応じたクロック数で積和演算器304の並列度に対応する位置の特徴面306のデータを並列に算出することができる。
By performing the convolution calculation with reference to the
本実施形態はこの様な算出する特徴面を基準とした並列コンボリューション演算手法を例として説明する。本実施形態の演算手法は、フィルタカーネルのサイズ及び積和演算器304の並列度に因果関係がないという特徴を有している。つまり、コンボリューション演算を様々な並列度で処理することができる。
In this embodiment, a parallel convolution calculation method based on such a characteristic surface to be calculated will be described as an example. The calculation method of the present embodiment has a feature that there is no causal relationship between the size of the filter kernel and the degree of parallelism of the product-
図1に示す演算回路は図10に示す画像処理装置における演算回路1002に相当する部分である。図1に示す演算回路は図15に示す様な複数のデータ群の階層的な結合関係に従って、下位の階層から特徴面を順次算出していく。RAM101は、演算対象となる前階層のデータや演算結果のデータを格納するメモリ。RAM101は図10のRAM101と同一である。
The arithmetic circuit shown in FIG. 1 is a portion corresponding to the
制御部102は、データ転送に関する制御・特徴面の処理順等に関する制御を司る。図4は制御部102のより詳細な構成を説明する図である。シーケンス制御部1201は、レジスタ群1202に設定された情報に従って、図1の動作を制御する各種制御信号1204を入出力する。同様に、シーケンス制御部1201はメモリ制御部1205を制御するための制御信号1206を出力する。シーケンス制御部1201はバイナリカウンタやジョンソンカウンタ等からなるシーケンサにより構成される。レジスタ群1202は、複数のレジスタセットからなり、例えば参照する特徴面や算出する特徴面に関する情報、カーネルに関する情報、特徴面の処理順等関する情報等を記録する。レジスタ群1202は、ブリッジ1004及び画像バス1003を介してCPU1007から予め所定の値が書き込まれる。
The
参照データシフトレジスタ106は並列積和演算器107に参照データを供給するデータ供給部である。参照データシフトレジスタ106は、参照データバッファ105にバッファリングされた参照データ(コンボリューション演算に必要な前階層の特徴面データ)を所定のタイミングで並列積和演算器107に並列に供給する。係数データシフトレジスタ104は並列積和演算器107に係数データを供給するデータ供給部であり、コンボリューション演算に必要なパラメータデータ(重み係数)を並列積和演算器107に順次に供給する。
The reference
並列積和演算器107は、m個(mは1以上)の積和演算器を内蔵するものとする。並列積和演算器107は同一のクロックで並列に動作する。図6は並列積和演算器107の概略構成を示す図である。データ6011〜601mは参照データシフトレジスタ106の出力データであり、各乗算器6031〜603mへ供給される異なる参照データである。データ602は係数データシフトレジスタ104の出力データであり、各乗算器6031〜603mへ共通に供給されるデータである。累積加算器6041〜604mは、コンボリューションカーネル演算期間中乗算結果を累積する。クリア信号605は、所定のコンボリューション演算単位が終了すると累積加算器6041〜604mの内蔵ラッチをクリアするために使用される。ラッチイネーブル信号(Latch Enable信号)606は、当該信号で累積加算値を更新する。Latch Enable信号には図示しないクロック信号に同期した信号が接続されるものとする。
The parallel product-
係数データ保持部1031〜103nは、RAM101に格納されている係数データ(パラメータデータ)から、演算処理に必要な係数データを一時的に格納する。係数データ保持部1031〜103nは、キャッシュやプリフェッチバッファにより構成される。係数データ保持部1031〜103nは、n個(nは1以上)の保持部を有し、n種類のコンボリューションカーネルに対応する重み係数を保持する。本実施形態では、係数データはRAM101に格納されているものとするが、RAM101に限定せず、他の記憶部や記憶装置に格納してもよい。例えば、図示しないROM等に係数データが格納されている構成でもよい。演算結果取り出し部として、結果シフトレジスタ108はコンボリューション演算の終了毎に演算結果を取り出す。
The coefficient
本実施形態では、係数データバッファ1031〜103nに複数種類のコンボリューションカーネルを格納し、順次切り替えて並列積和演算器107に供給することで、同じ参照データに対して異なるコンボリューション演算を処理する。即ち、異なる特徴面のデータを順に算出する。
In the present embodiment, a plurality of types of convolution kernels are stored in the
非線形変換処理部109は、結果シフトレジスタ108から出力されるデータに対してシグモイド関数等の非線形変換処理を行う。非線形変換処理部109の出力結果は制御部102を介してRAM101に格納され、次の階層の参照データとしてRAM101に保持される。RAM101に格納された前階層の演算結果である特徴面を参照することで多階層のネットワークを順次処理することができる。
The non-linear
係数データシフトレジスタ104、参照データシフトレジスタ106及び結果シフトレジスタ108はデータロード機能付のシフトレジスタである。参照データバッファ105及び係数データバッファ1031〜103nは、それぞれ参照データシフトレジスタ106及び係数データシフトレジスタ104と同じビット幅の複数のレジスタで構成される。結果シフトレジスタ108は、並列積和演算器107の累積加算器出力の有効ビットと同じビット数の複数のレジスタで構成される。図7にこれらのシフトレジスタの構成例を示す。
The coefficient
図7はレジスタ個数が4の場合の例を説明する。多ビットのフリップフロップ701a〜dは、CLOCK信号に同期して所定bitのデータをラッチする。セレクタ702a〜cは、選択信号(Load信号)が0の場合OUTx(x:0〜2)が選択され、1の場合INx(x:1〜3)が選択される。即ち、Load信号に応じてシフト動作とロード動作が選択される。Enalbe信号はデータ遷移のイネーブル信号であり、1である場合は、CLOCK信号の立ち上がりでデータをラッチし、0である場合は、ラッチしたデータをそのまま保持する(状態遷移しない)。
FIG. 7 describes an example when the number of registers is 4. The multi-bit flip-flops 701a to 701 latch the data of a predetermined bit in synchronization with the CLOCK signal. For the
図1におけるLoad2/Load4/Load5信号はそれぞれ係数データシフトレジスタ104、参照データシフトレジスタ106、結果シフトレジスタ108のLoad信号である。図1におけるEnable1/Enable2/Enable3信号はそれぞれ係数データシフトレジスタ104、参照データシフトレジスタ106、結果シフトレジスタ108のEnable信号である。係数データシフトレジスタ104は初期データのロード後、水平方向のコンボリューションカーネルサイズと同じクロック数シフト動作を実行する。シフト動作に応じて、並列積和演算器107に対して重み係数データを順次供給する。シフトレジスタ405a,bのそれぞれの図7におけるOUTn信号が全ての並列積和演算器107に共通に接続される。
The Load2 / Load4 / Load5 signals in FIG. 1 are the Load signals of the coefficient
同様に、参照データシフトレジスタ106は参照データバッファ105から初期データがロードされる。以後水平方向のコンボリューションカーネルサイズと同じクロック数シフト動作を実行し、並列積和演算器107に対して複数の参照データ(図7 OUT1〜OUTn信号)を同時に供給する。
Similarly, the reference
係数データシフトレジスタ104と参照データシフトレジスタ106は同期して動作する。係数データシフトレジスタ104及び参照データシフトレジスタ106から供給されるデータに従って、並列積和演算器107が積和演算を実行する。ここで得られた累積和は、対象特徴面に対応する全コンボリューションカーネルの演算終了後、結果シフトレジスタ108にロードされ、所定のタイミングで非線形変換処理部109に送られる。並列積和演算器107は、図6に示すようにそれぞれ同一クロックで動作する同一の回路がm個並んでいるものとする。結果シフトレジスタ108はm個の積和演算出力を保持することが可能なフリップフロップで構成する。
The coefficient
並列積和演算器107の出力は所定の有効ビットのみ結果シフトレジスタ108に接続する。非線形変換処理部109はルックアップテーブル等により構成することができる。ここで変換処理されたデータはRAM101の所定アドレスに格納される。ここでの格納アドレスも制御部102に従って制御される。
The output of the parallel multiply-accumulate
図5は本実施形態の演算回路による並列処理の具体例を模式的に説明する図である。図5の参照データ面802及び算出データ面804は、それぞれラスタスキャンされたデータ座標を用いて表す。参照データ面802は、各データ(模式的に示す最小一升)がラスタスキャン順でRAM101に格納された前階層の演算結果(input(x,y)、x:水平方向位置、y:垂直方向位置)を示すものであるとする。算出データ面804は、各データがラスタスキャンされた演算結果(output(x,y)、x:水平方向位置、y:垂直方向位置)を示すものとする。
FIG. 5 is a diagram schematically illustrating a specific example of parallel processing by the arithmetic circuit of the present embodiment. The reference data surface 802 and the calculated data surface 804 of FIG. 5 are represented using raster-scanned data coordinates, respectively. On the
算出範囲803は並列積和演算器107(m=4の場合)で並列に演算して得られるデータの位置を示し、参照範囲801がコンボリューション演算のカーネルサイズが3×3である場合の算出範囲803に対する参照データの範囲である。制御部は参照範囲801内の各ラインのデータを順に参照データレジスタバッファに転送し、並列積和演算器は参照データのシフト動作に伴ってコンボリューション演算を実現する。
The
ここで、コンボリューション演算処理の基本的な動作について説明する。本実施形態によるコンボリューション演算は、算出特徴面の水平方向に連続するm画素位置のデータを並列に算出するものである。係数データバッファ1031〜103nのそれぞれは少なくともコンボリューションカーネルの水平方向のサイズより多いレジスタで構成される。例えば重み係数が8ビットで表されるデータの場合、8ビット幅の複数のレジスタで構成される。例えば、水平方向のコンボリューションカーネルサイズが「11」の場合、当該レジスタの数は「11」とする。 Here, the basic operation of the convolution arithmetic processing will be described. The convolution calculation according to the present embodiment calculates the data of the m pixel positions continuous in the horizontal direction of the calculation feature plane in parallel. Each of the coefficient data buffers 1031-103n consists of at least more registers than the horizontal size of the convolution kernel. For example, in the case of data in which the weighting coefficient is represented by 8 bits, it is composed of a plurality of registers having a width of 8 bits. For example, when the horizontal convolution kernel size is "11", the number of the registers is "11".
実際には、想定する最大コンボリューションサイズのレジスタ数で構成する。制御部102は、積和演算処理に必要な複数種類の係数を当該レジスタに予めロードし、算出特徴面毎に選択して利用する。参照データバッファ105はRAM101に格納された参照データの一部を一時的に保持するために使用される。
Actually, it is composed of the number of registers of the assumed maximum convolution size. The
参照データが8ビットで表されるデータの場合、参照データバッファ105は8ビット幅の複数のレジスタで構成される。参照データバッファ105は所定数以上の個数のレジスタで構成される。この所定数は、並列に処理する複数の演算器のそれぞれが一単位のコンボリューション演算を実行するために必要な参照データの数である。この所定数は、例えば、(「並列に処理する演算器の数」+「並列処理する方向と同じ方向のコンボリューションカーネルサイズ」−1)×「並列処理する方向と直行する方向のコンボリューションカーネルサイズ」によって計算される。
When the reference data is data represented by 8 bits, the
さらに、ここでは、参照データの読み出しとコンボリューション演算をパイプライン動作させるために、参照データバッファは上記サイズの2倍のレジスタからなるダブルバッファで構成されてよい。参照データバッファは制御部102の制御に従って参照データシフトレジスタ106にロードする複数のデータを並列に出力する。
Further, here, in order to pipeline the reading of the reference data and the convolution operation, the reference data buffer may be composed of a double buffer composed of registers having twice the above size. The reference data buffer outputs a plurality of data to be loaded into the reference
図2は図1の演算回路の動作モードを概念的に説明する図である。 FIG. 2 is a diagram conceptually explaining the operation mode of the arithmetic circuit of FIG.
図2(A)は1対1の結合関係のネットワークを4並列で動作する積和演算器202を用いて算出する場合の例を示している。ここでは算出する特徴面206の4画素位置203のコンボリューション演算を並列に処理する。積和演算器202はコンボリューション演算の内容によって定まる必要な参照データ201を、データバッファ205を介して参照しながら並列処理単位でラスタ―スキャン順に演算を進める。
FIG. 2A shows an example of calculating a network having a one-to-one coupling relationship using a multiply-accumulate
図2(B)は1対2の結合関係のネットワークを図2(A)で示す構成の演算処理装置で処理する場合の例を示している。4並列の積和演算器202を用いて特徴面208、209を順に処理する。特徴面208では算出領域207、210の順に算出する。即ち、並列処理単位で面順次処理により特徴面208、209を順次算出する。この場合、特徴面208と209が参照する参照データは共通であるが、特徴面を面順次で順に処理するため、特徴面208,209の処理毎に同じ参照データ201がデータバッファ205に転送されることになる。
FIG. 2B shows an example in which a network having a one-to-two coupling relationship is processed by the arithmetic processing unit having the configuration shown in FIG. 2A. The feature planes 208 and 209 are processed in order using the four-parallel multiply-accumulate
図2(C)は4並列の積和演算器202を用いて異なる特徴面208、209を並列処理単位で順次算出する。つまり、算出領域207、211、210、212の順に処理する。この場合、例えば、2つの特徴面208、209の算出領域207,211の演算時に必要となる参照特徴面204上の参照データ201はデータバッファ205に保持され、再利用される。一般的に、参照特徴面は低速な大容量なメモリに格納され、データバッファ205は高速・小容量なメモリやレジスタ等で構成される。図2(C)に示すように複数の特徴面を跨いで並列処理単位で順に処理する場合、データバッファ205を介して特徴面208と209の対象領域算出時のデータを共用する事ができる。このため、図2(B)に示すように面順次で処理する場合に比べて参照データのデータバッファ205への転送数を半減させることができる。参照データの読み出し転送速度を考慮しない場合、図2(B)と図2(C)の処理時間を同等とみなすことができるが、転送速度が遅い場合、図2(B)はデータ転送時間が処理時間を律し、図2(C)に比べて処理時間が増加する場合がある。これは、演算器の並列度が高く、コンボリューションカーネルのサイズが小さい場合に顕著になる。
In FIG. 2C,
この例で示すように、CNNネットワークの構成や動作条件に応じて図2(A)と図2(C)に示すように処理順を切り替えることで並列演算器の数に応じた最良の性能を引き出すことができる。 As shown in this example, the best performance according to the number of parallel computing units can be obtained by switching the processing order as shown in FIGS. 2 (A) and 2 (C) according to the configuration and operating conditions of the CNN network. Can be pulled out.
本実施形態では、CNNネットワークの構成や動作条件に応じて演算回路の処理順を最適化し、適切な動作モードを選択することを提案する。 In the present embodiment, it is proposed to optimize the processing order of the arithmetic circuit according to the configuration of the CNN network and the operating conditions, and select an appropriate operating mode.
次に、図8及び図9を用いて本実施形態の演算回路の動作モードをより詳細に説明する。図8は、図2(A)に示すように、各特徴面を面順次で順次に演算する場合のタイムチャート概要を示す。図9は、図2(C)に示すように、2つの特徴面をコンボリューション演算単位で切り替えながら演算する場合のタイムチャート概要を示す。図8及び図9は、演算処理の処理順が異なる動作モードのタイムチャートである。動作モードは制御部102内のレジスタ群1202の設定で変更可能である。
Next, the operation mode of the arithmetic circuit of the present embodiment will be described in more detail with reference to FIGS. 8 and 9. As shown in FIG. 2A, FIG. 8 shows an outline of a time chart in the case where each feature plane is sequentially calculated in a plane sequence. As shown in FIG. 2C, FIG. 9 shows an outline of a time chart in a case where two characteristic planes are switched in convolution calculation units for calculation. 8 and 9 are time charts of operation modes in which the processing order of arithmetic processing is different. The operation mode can be changed by setting the
まず、図8を用いて、一つの特徴面を並列処理単位でラスタスキャン処理する場合の例(図2Aの処理に相当する)を説明するで。なお、図8に示す信号は全て図示しないクロック信号に基づいて同期動作する。図8は特徴面処理開始時の一部のタイミングを示す。図8はカーネルサイズが5×5の場合である。 First, with reference to FIG. 8, an example (corresponding to the processing of FIG. 2A) in which one characteristic surface is subjected to raster scan processing in parallel processing units will be described. All the signals shown in FIG. 8 perform a synchronous operation based on a clock signal (not shown). FIG. 8 shows a part of the timing at the start of the feature surface processing. FIG. 8 shows a case where the kernel size is 5 × 5.
係数データバッファ1031〜103nには、特徴面の演算処理開始前に、必要な係数データがロードされているものとする。sel信号は係数データバッファ1031〜103nの出力を選択する信号であり、複数のコンボリューションカーネルに対応する係数から所望の係数を選択するために使用する。ここでは、一つの特徴面を演算処理する動作中では、sel信号は常に0である。
It is assumed that necessary coefficient data is loaded in the
また、参照データバッファ105には、カーネル垂直方向演算区間1である区間402では、演算処理するために必要な参照データが全てロードされているものとする。
Further, it is assumed that the
制御部102は、まず、次のカーネル垂直方向演算区間2である区間403で必要な参照データのロードを開始するためにLoad3信号を有効化する。ここで、Load3信号は信号レベル1の場合が有効化された状態であるものとする。なお、カーネル垂直方向区間1に必要な参照データは既に参照データバッファ105に格納済みであるとする。ここでは、参照データバッファはダブルバッファで構成されているとし、データの参照とデータのロードを同時に処理可能である。
The
制御部102は、Load3信号の有効化と同時にRAM101から参照データを取り出し、参照データバッファ105にセットする。セットするデータの数はコンボリューションカーネルの大きさ及び並列度から決定する。例えば、コンボリューション演算のカーネルサイズが5×5である場合、演算器の並列度を20とすると、20+5−1=24個のデータをセットする。*CLR信号は、並列積和演算器107の累積加算器6041〜604mを初期化するための信号であり、当該信号が0である場合、累積加算器に内蔵するレジスタは0に初期化される。
The
制御部102は、新たな特徴面位置のコンボリューション演算開始前に*CLR信号を0にする。参照データバッファ105はダブルバッファ構成であるため、カーネル垂直方向演算区間1(区間402)で使用するデータを出力すると共に、カーネル垂直方向演算区間2(区間403)で使用するためのデータを格納する。以後、参照データバッファ105は図示しないトグル信号に従ってダブルバッファとしてデータの読み出し、書き出しが制御される。
The
Load2信号は係数データシフトレジスタ104の初期化を指示するための信号である。当該信号が1でかつEnable1信号が有効(信号レベル1)の場合、係数データバッファ1031に保持する複数の重み係数データが係数データシフトレジスタ104に一括ロードされる。
The Load2 signal is a signal for instructing the initialization of the coefficient
Enable1信号はシフトレジスタのデータ遷移を制御する信号である。演算器の動作中は、Enable1信号は常に1に設定されているため、Load2信号が1の場合、クロック信号に応じての出力をラッチし、Load2信号が0の場合、クロック信号に応じてシフト処理を継続する。 The Enable1 signal is a signal that controls the data transition of the shift register. Since the Enable1 signal is always set to 1 during the operation of the arithmetic unit, when the Load2 signal is 1, the output is latched according to the clock signal, and when the Load2 signal is 0, the output is shifted according to the clock signal. Continue processing.
制御部102のシーケンス制御部1201は、コンボリューションカーネルの水平方向サイズに応じたクロック数をカウントするとLoad2信号を有効化し、シフト動作を停止させる。同時に、シーケンス制御部1201は、係数データバッファ1031に保持する重み係数データを係数データシフトレジスタ104に一括ロードする。
The
即ち、コンボリューションカーネルの水平方向単位で重み係数を一括ロードし、ロードした係数を動作クロックに応じてシフトアウトする。ここで、図8の場合Sel信号は常に0x00であり、係数データバッファ1031〜1031nは特定のカーネルの係数を順次に出力する。つまり、同じカーネルで一つの特徴面を算出する。
That is, the weighting coefficients are collectively loaded in the horizontal unit of the convolution kernel, and the loaded coefficients are shifted out according to the operating clock. Here, in the case of FIG. 8, the Ser signal is always 0x00, and the
Load4信号は、参照データシフトレジスタ106の初期化を指示するための信号である。当該信号が1でかつEnable2信号が有効(信号レベル1)の場合、参照データバッファ105に保持する参照データが参照データシフトレジスタ106に一括ロードされる。参照データバッファ105に格納されているデータは、図示しないタイミング信号に従って水平方向の処理単位で必要な参照データを出力する。参照データバッファ105が出力するデータはカーネル水平方向演算区間(区間401)毎に対応する異なる参照データを出力する。
The Load4 signal is a signal for instructing the initialization of the reference
なお、Enable2信号はシフトレジスタのデータ遷移を制御する信号であるが、動作中は常に1に設定されている。従って、Load4信号が1の場合、クロック信号に応じて参照データバッファ105の出力をラッチし、Load4信号が0である場合、クロック信号に応じてシフト処理を継続する。
The Enable2 signal is a signal that controls the data transition of the shift register, but is always set to 1 during operation. Therefore, when the Load4 signal is 1, the output of the
制御部102のシーケンス制御部1201は、コンボリューションカーネルの水平方向サイズに応じたクロック数をカウントするとLoad4信号を有効化し、シフト動作を停止させると同時に参照データバッファ105に保持する参照データを一括ロードする。
The
即ち、コンボリューションカーネルの1列単位で必要な参照データを一括ロードし、ロードした参照データを動作クロックに応じてシフトする。以上、制御部102はLoad4信号をLoad2信号と同一タイミングで制御する。
That is, the necessary reference data is collectively loaded in units of one column of the convolution kernel, and the loaded reference data is shifted according to the operating clock. As described above, the
並列積和演算器107は、クロックに同期して積和演算を継続しているため、シフトレジスタ104及び106のシフト動作に従って算出する特徴面の複数の点に対して同時にコンボリューションカーネルサイズに応じた積和演算処理を実行する。
Since the parallel multiply-accumulate
具体的には、シフトレジスタ104とシフトレジスタ106のシフト動作期間(図8中のカーネル水平方向演算区間401)中にコンボリューションカーネルの1列分の積和演算がなされることになる。
Specifically, during the shift operation period of the
当該列単位の演算を重み係数及び参照データを入替ながら水平方向に繰り返すことで並列度の数に応じた二次元のコンボリューション演算結果が算出される(図8のカーネル垂直方向演算区間1(区間402))。 By repeating the operation for each column in the horizontal direction while exchanging the weighting coefficient and the reference data, the two-dimensional convolution operation result corresponding to the number of parallelisms is calculated (the kernel vertical operation section 1 (section) in FIG. 8). 402)).
このように、制御部102はカーネルサイズ及び並列度に応じて各信号を制御することで、積和演算処理と積和演算処理に必要なデータ(参照データ)のRAM101からの供給を並行に実行させる。
In this way, the
Load5信号は並列積和演算器の結果を結果シフトレジスタ108に並列にロードするための信号であり、制御部102は対象となる特徴面の並列処理単位の積和演算が終了するとLoad5信号及びEnable3信号に1を出力する。結果シフトレジスタ108はLoad5信号が1でEnable3信号が1の場合、並列積和演算器107の出力を一括ロードする。制御部102はシフトレジスタ104及び105のシフト動作中にEnable3の信号を有効化し、結果シフトレジスタ108に保持する演算結果をシフトアウトする。シフトアウトした演算結果は非線形変換処理部109で変換処理された後、制御部102により、レジスタ群1202に記された演算結果格納先ポインタ等の情報に従ってRAM101の所定のアドレスに格納される。
The Load5 signal is a signal for loading the result of the parallel product-sum calculator in parallel to the
本実施形態の演算回路では、RAM101に対する参照データの読み出し、演算結果の書き出しを積和演算処理期間に並行処理することで、高速に処理することができる。但し、並列度とコンボリューションカーネルの関係によっては、RAM101へのアクセスを積和演算期間中に完全にパイプライン化できない場合もある。例えば、並列度が高くかつコンボリューションカーネルが小さい場合は、Load3による参照データの転送が間に合わない場合がある。その場合、制御部102はRAM101へアクセス完了を優先し、Enable1/Enable2/Enable3信号及び累積加算器のLatch Enable信号を制御することで積和演算処理の開始を遅延させる。
In the arithmetic circuit of the present embodiment, reading of reference data to the
図9は2つの特徴面を並列演算単位で順に処理する場合のタイムチャートである。つまり、図2(C)に対応する。 FIG. 9 is a time chart in which two feature planes are sequentially processed in parallel arithmetic units. That is, it corresponds to FIG. 2 (C).
ここでは図8との違いのみについて説明する。図9はSel信号とLoad3信号が図8と異なる。図9は2つの特徴面をカーネル演算単位で切り替えながら処理する場合の例を示している。特徴面の処理開始に先立ち、制御部102は係数データバッファ1031及び係数データバッファ1032にそれぞれ特徴面の演算に必要な重み係数を格納する。また、参照データバッファ105にはカーネル垂直方向演算区間1(区間502)及びカーネル垂直方向演算区間2(区間503)で共通に使用する参照データが既にロードされているものとする。
Here, only the difference from FIG. 8 will be described. In FIG. 9, the Ser signal and the Load3 signal are different from those in FIG. FIG. 9 shows an example in which processing is performed while switching between the two characteristic surfaces in kernel operation units. Prior to the start of processing of the feature surface, the
カーネル垂直方向演算区間1(区間502)ではsel=0x00で選択される係数データを用いて並列積和演算器107でコンボリューション演算実行される。一方カーネル垂直方向演算区間2(区間503)ではsel=0x01で選択される係数データを用いてコンボリューション演算が実行される。この2つの区間では、参照データバッファ105に格納済みの共通の参照データが参照され、参照データバッファ105が出力する参照データは図8の場合と同様に図示しないタイミング信号に従って水平方向の処理単位で必要な参照データを出力する。その際、カーネル垂直方向演算区間1(区間502)とカーネル垂直方向演算区間2(区間503)では水平方向の処理単位で同じ参照データが繰り返し出力する。このため、カーネル垂直方向演算区間3(区間504)と非図示のカーネル垂直方向演算区間4で共通に使用する参照データのロードに許される時間は区間505となり、図8のケース(区間405に対応)に対して2倍の時間となる。
In the kernel vertical calculation section 1 (section 502), the convolution calculation is executed by the parallel multiply-accumulate
図9の動作では参照データを共有し、係数データを入れ替えて順次処理することで図2(c)の特徴面208における算出領域207及び特徴面209における算出領域211のデータを順次に算出する。更に、カーネル垂直方向演算区間3(区間504)では再び係数を入れ替えて特徴面208の算出領域210のデータを算出する。この様に参照データを再利用しながら、係数を入れ替えることで算出する特徴面の処理順を制御する。
In the operation of FIG. 9, the reference data is shared, the coefficient data is exchanged, and the data of the
図8と比べて明らかな様に、図9の場合、2つのカーネル垂直方向演算区間(区間502、区間503)で参照データを共有することで、参照データバッファへのデータ転送回数(=転送レート)を半減することが可能になる。これにより、参照データの転送に時間を要する場合、或いはカーネルサイズが小さく、カーネル演算区間が短い場合に、データ転送が処理時間を律するケースを低減することができる。
As is clear from FIG. 8, in the case of FIG. 9, by sharing the reference data between the two kernel vertical calculation sections (
例えば、並列積和演算器107の並列度を20、カーネルサイズを5とし、並列演算器は1サイクルで一つの重み係数に対する積和演算を完了するものとする。また重み係数が1バイトであり、データ転送サイクルが4バイト/サイクルであるとすると、一つのコンボリューション処理あたりの処理サイクルは図8の動作モードでは以下の様になる。
For example, it is assumed that the parallel degree of the parallel product-
並列演算処理単位の処理サイクルは5×5=25サイクルである。 The processing cycle of the parallel computing unit is 5 × 5 = 25 cycles.
並列演算処理単位の演算に必要な参照データの転送に要する処理サイクルは(20+5−1)×5/4=30サイクル。 Parallel computing The processing cycle required to transfer reference data required for processing unit operations is (20 + 5-1) x 5/4 = 30 cycles.
この場合、データ転送が処理時間を律することになり、並列演算器の性能を十分活かしていない。 In this case, the data transfer controls the processing time, and the performance of the parallel computing unit is not fully utilized.
一方、図9の動作モードでは、参照データを共有しているので、その処理サイクルは以下のようになる。 On the other hand, in the operation mode of FIG. 9, since the reference data is shared, the processing cycle is as follows.
二つの並列演算処理単位の処理サイクル25×2=50サイクルである。 The processing cycle of two parallel arithmetic processing units is 25 × 2 = 50 cycles.
並列演算処理単位の演算に必要な参照データの転送に要する処理サイクルは30サイクルとなり演算処理が処理時間を律し、並列演算器の性能を活かしていることになる。 The processing cycle required for transferring the reference data required for the operation of the parallel arithmetic processing unit is 30 cycles, and the arithmetic processing regulates the processing time, and the performance of the parallel arithmetic unit is utilized.
図10は本実施形態の演算回路1002を具備した画像処理装置の構成を示すものである。この画像処理装置は、入力画像データからパターン認識処理によって特定の物体を検出する機能を有する。図10の画像入力モジュール1000は、光学系、CCD又はCMOSセンサー等の光電変換デバイス及びセンサーを制御するドライバー回路/ADコンバーター/各種画像補正を司る信号処理回路/フレームバッファ等により構成される。
FIG. 10 shows the configuration of an image processing apparatus including the
RAM(Random Access Memory)101は、演算回路1002の演算作業バッファとして使用されるメモリである。RAM101にはCNNの特徴面に相当するデータが記憶される。
The RAM (Random Access Memory) 101 is a memory used as a calculation work buffer of the
DMAC(Direct Memory Access Controller)1006は、画像バス1003上の各処理部とCPUバス1010間のデータ転送を司る。ブリッジ1004は、画像バス1003とCPUバス1010のブリッジ機能を提供する。
The DMAC (Direct Memory Access Controller) 1006 controls data transfer between each processing unit on the
前処理モジュール1005は、CNN処理によるパターン認識処理を効果的に行うための各種前処理を行う。前処理モジュール1005は、色変換処理/コントラスト補正処理等の画像データ変換処理を処理するハードウェアである。
The
CPU1007は、制御プログラムを実行することによって、装置全体の動作を制御するものである。ROM(Read Only Memory)1008は、CPU1007の動作を規定する命令やパラメータデータを格納する。RAM1009はCPU1007の動作に必要なメモリである。CPU1007はブリッジ1004を介して画像バス1003上のRAM101にアクセスすることも可能である。
The
図11は本実施形態の画像処理装置の動作を説明するフローチャートである。以下、フローチャートは、CPU1007が制御プログラムを実行することにより実現されるものとする。ステップS1101では認識処理の開始に先立ち、CPU1007が各種初期化処理を実行する。CPU1007は、演算回路の動作に必要な重み係数をROM1008からRAM101に転送すると共に、演算回路1002の動作、即ちCNNのネットワーク構成を定義する為の各種レジスタ設定を行う。具体的には、CPU1007は、演算回路1002の制御部102に存在する複数のレジスタに所定の値を設定する。同様に、CPU1007は、前処理モジュール1005等のレジスタに対しても動作に必要な値を書き込む。
FIG. 11 is a flowchart illustrating the operation of the image processing apparatus of the present embodiment. Hereinafter, it is assumed that the flowchart is realized by the
次に、ステップS1102で各特徴面を算出する際の処理順を決定する。 Next, in step S1102, the processing order for calculating each feature plane is determined.
図8と図9等で説明したように、CNNのネットワーク構造やRAM101から演算器に対するデータ転送性能、並列に動作する演算器の数等の条件に従って特徴面の処理順を決定する。例えば、下位階層の特徴面に対して複数の特徴面を算出する場合、転送サイクルと演算サイクルに基づいて処理順を決定する。転送サイクルは複数の算出特徴面の位置を並列に処理するコンボリューション演算に必要な参照データの読み出しに必要なサイクル(転送時間)であり、演算サイクルはコンボリューション演算に要する処理サイクルである。転送サイクルと演算サイクルに基づいて、処理順を決定する。
As described with reference to FIGS. 8 and 9, the processing order of the feature planes is determined according to conditions such as the network structure of the CNN, the data transfer performance from the
即ち、ステップS1102で、動作条件に基づいて各特徴面を面順次で特徴面毎に順次処理するか、或いは特徴面を跨いで演算器の処理単位で順次処理するかを決定する。 That is, in step S1102, it is determined whether to sequentially process each feature surface for each feature surface in a surface sequence based on the operating conditions, or to sequentially process each feature surface in a processing unit of an arithmetic unit across the feature surfaces.
ステップS1101の初期化処理及びステップS1102の処理順決定が終了した後に、一連の物体認識動作が開始する。 After the initialization process of step S1101 and the process order determination of step S1102 are completed, a series of object recognition operations are started.
まず、ステップS1103では画像入力モジュール1000が、画像センサーの出力する信号をディジタルデータに変換し、フレーム単位で図示しない(画像入力部1000に内蔵する)フレームバッファに格納する。
First, in step S1103, the
フレームバッファへの格納が完了すると、ステップS1104では、所定の信号に基づいて、前処理モジュール1005が画像変換処理を開始する。前処理モジュール1005は、前記フレームバッファ上の画像データから輝度データを抽出し、コントラスト補正処理を行う。
When the storage in the frame buffer is completed, in step S1104, the
輝度データの抽出は一般的な線形変換処理によりRGB画像データから輝度データを生成する。コントラスト補正の手法も一般的に知られているコントラスト補正処理を適用してコントラストを強調する。前処理モジュール1005は、コントラスト補正処理後の輝度データを検出用画像としてRAM101に格納する。
The luminance data is extracted by generating the luminance data from the RGB image data by a general linear conversion process. The contrast correction method also applies a generally known contrast correction process to enhance the contrast. The
1フレームの画像データに対して前処理が完了すると、前処理モジュール1005は図示しない完了信号を有効にする。ステップS1105では、演算回路1002は当該完了信号に基づいて演算回路1002を起動し、CNNに基づく物体の検出処理を開始する。ステップS1106では、最終層の特徴面の算出が終了すると演算回路1002はCPU1007に対して完了割り込みを発生する。ステップS1107では、CPU1007は演算回路1002の処理終了割り込を受信すると、最終層の特徴面を解析し、画像中の物体の位置や属性を判定する。ステップS1107の解析処理が完了すると、ステップS1108では、次のフレームの画像に対する処理を継続する。
When the preprocessing for one frame of image data is completed, the
以上、本実施形態では、並列積和演算器107に供給する参照データと係数データを動作条件に応じて制御することで処理する特徴面の順番をコンボリューションカーネル単位で変える。これにより、参照データの再利用性を高め、メモリアクセスボトルネックを解消することができる。
As described above, in the present embodiment, the order of the feature planes to be processed by controlling the reference data and the coefficient data supplied to the parallel multiply-accumulate
本実施形態によれば、CNNネットワークの構成や参照データの転送サイクル及び演算サイクルに基づいて特徴面の処理順を制御することで、簡単な制御で、様々なネットワークを効率的に処理することができる。 According to the present embodiment, by controlling the processing order of the feature planes based on the configuration of the CNN network, the transfer cycle of the reference data, and the calculation cycle, it is possible to efficiently process various networks with simple control. can.
なお、本実施形態では2つ特徴面を跨ぐ処理順で処理する場合について説明したが、これに限るわけではなく、更に多くの特徴面を切り替えながら処理する構成でも良い。 In the present embodiment, the case where the processing is performed in the processing order straddling the two characteristic surfaces has been described, but the present invention is not limited to this, and a configuration in which processing is performed while switching more characteristic surfaces may be used.
また、本実施形態では係数データバッファを複数有する構成の例を示した。この場合、係数データのロード時間の影響を低減することができるが、この限りではない。 Further, in the present embodiment, an example of a configuration having a plurality of coefficient data buffers is shown. In this case, the influence of the load time of the coefficient data can be reduced, but this is not the case.
また、本実施形態では並列演算器で2次元のコンボリューション演算を処理する場合について説明したが、コンボリューション演算に限るわけではない。実施形態では2次元の画像データに対するCNN処理の例を説明したが、音声データ等の1次元データや時間方向の変化も含めた3次元データに対するCNN処理に適用することも可能である。 Further, in the present embodiment, the case where the two-dimensional convolution operation is processed by the parallel arithmetic unit has been described, but the present invention is not limited to the convolution operation. In the embodiment, an example of CNN processing for two-dimensional image data has been described, but it can also be applied to CNN processing for one-dimensional data such as audio data and three-dimensional data including changes in the time direction.
また、本実施形態ではCNN処理の場合について説明したがこれに限るわけではなく、Restricted Boltzmann MachinesやRecursive Neural Network等他の階層的な処理に適用可能である。 Further, in the present embodiment, the case of CNN processing has been described, but the present invention is not limited to this, and can be applied to other hierarchical processing such as Restricted Boltzmann Machines and Recurrent Neural Network.
また、本実施形態では図5に示すように、水平方向に並ぶ複数の特徴面のデータを並列に処理する場合について説明したが、これに限るわけでなく、垂直方向に連続する特徴面データを並列に処理する構成にしても良い。 Further, in the present embodiment, as shown in FIG. 5, a case where data of a plurality of feature planes arranged in the horizontal direction is processed in parallel has been described, but the present invention is not limited to this, and feature plane data continuous in the vertical direction is used. It may be configured to process in parallel.
また、本実施形態では、複数の積和演算器が並列に処理することについて説明したが、これに限るわけでなく、一つの積和演算器を用いて特徴面データを算出する構成にしても良い。 Further, in the present embodiment, it has been described that a plurality of multiply-accumulate calculators process in parallel, but the present invention is not limited to this, and the feature plane data may be calculated using one product-sum calculator. good.
(第2の実施形態)
実施形態1ではコンボリューションカーネル単位で処理する特徴面を切り替えながら処理する構成について説明したが、本実施形態では積和演算単位で処理する特徴面を切り替えながら処理する構成について説明する。
(Second Embodiment)
In the first embodiment, the configuration for processing while switching the feature planes to be processed in the convolution kernel unit has been described, but in the present embodiment, the configuration for processing while switching the feature planes to be processed in the multiply-accumulate operation unit will be described.
図13は本実施形態の演算回路の構成を示す図である。ここでは第1の実施形態との違いのみについて説明する。図13は図1の構成に対して積和ステート保持部110が新たに追加されている。積和ステート保持部110は、積和演算のステートを保持する機能を有する。図14は積和ステート保持部110を含む並列積和演算器107の構成と動作を説明する図である。
FIG. 13 is a diagram showing the configuration of the arithmetic circuit of the present embodiment. Here, only the difference from the first embodiment will be described. In FIG. 13, a product-sum
図14(A)に示すように3つの特徴面1405〜1407を演算処理単位で順に処理する場合について説明する。フィルタカーネル1402〜1404はそれぞれ特徴面1405〜1407を算出する際に必要となるコンボリューションカーネルマトリクスである。
As shown in FIG. 14A, a case where the three
図14(B)は係数データシフトレジスタ1408、参照データシフトレジスタ1409、並列積和演算器1410、積和ステート保持部110の例を説明する図である。係数データシフトレジスタ1408は、図1の係数データシフトレジスタ104と同様に、重み係数を積和演算器1410に順に供給する。参照データシフトレジスタ1409は、図1の参照データシフトレジスタ106と同様に、参照データを積和演算器1410に供給する。積和演算器1410は、ここでは並列積和演算器の中の一つの積和演算器を示している。積和演算器1410は乗算器と加算器からなる。積和ステート保持部1101411は、複数の積和ステート保持部の中の一つの積和ステート保持部を示している。累積和シフトレジスタ1412は、3つのシフトレジスタからなる。セレクタ―1413は、累積和シフトレジスタ1412の出力のいずれかを選択する。
FIG. 14B is a diagram illustrating an example of a coefficient
図14(C)は、図14(B)に示す構成の動作を説明する図である。ここでは3つの特徴面1405〜1407を積和演算単位に順に処理する場合について説明する。係数データシフトレジスタ1408には係数データ1402〜1404が係数毎にインターリーブした順番で格納する。ここではカーネルサイズが3×3のフィルタカーネルについて説明する。データ列A1〜A3、データ列B1〜B3及びデータ列C1〜C3はそれぞれフィルタカーネル1402〜1404の一つのデータ列であるとする。この場合、セレクタ1413は、累積和シフトレジスタ1412のMA3出力をフィードバックするように設定する。
FIG. 14C is a diagram illustrating the operation of the configuration shown in FIG. 14B. Here, a case where the three
係数データシフトレジスタの出力1414は、異なるカーネルの係数がインターリーブされた順番で順に出力する。第1の実施形態ではSel信号を制御して演算に使用するカーネルの係数を選択する必要があるが、本実施形態の場合は、その必用はない。係数データバッファ1031〜103nに係数データを格納する際に異なるカーネルの係数データをインターリーブした順番で格納するだけで良い。制御部102は、係数データバッファ1031への係数データ格納時に、係数データをインターリーブした状態で格納しておく。
The
参照データシフトレジスタの出力1415は、参照データを順にシフト出力する。ここでは、参照データシフトレジスタのシフトクロックは、係数データシフトレジスタのシフトクロックの1/3となる。最初の3クロックで参照データD1に対する3つの異なるフィルタカーネルの積和演算を処理し、乗算器出力1406は、累積加算出力1417と同じである。その次に、順次に累積和シフトレジスタの出力1418〜1420が図14(C)のように変化する。累積和シフトレジスタ1412のMA3を積和演算器1410に帰還することで3つのステートの積和演算結果を保持することが可能になる。図14(C)において点線で示す矢印はコンボリューションカーネル1402に対する積和演算の状態を示すものである。累積和シフトレジスタ1412を介した積和演算ループにより、9サイクル後に累積和シフトレジスタ1412の出力にコンボリューション演算結果が出力されている(出力1420)。同様に、コンボリューションカーネル1403、1404に対するコンボリューション演算結果が累積和シフトレジスタ1412の出力として順次に出力する。
The
図12は本実施形態の動作タイミング例を示す図である。基本的な動作は第1の実施形態と同じである。本実形態ではLaod3信号の有効期間で、並列度水平方向とカーネルサイズに応じたデータをRAM101から読み出す。また、カーネル水平方向演算区間で3つの異なる特徴面の行単位の積和演算を算出し、カーネル垂直方向演算区間で3つの特徴面のコンボリューション演算を実行する。演算結果は非線形変換処理部109を通して、3つの特徴面の結果がインターリーブされた順番で出力される。
FIG. 12 is a diagram showing an example of operation timing of the present embodiment. The basic operation is the same as that of the first embodiment. In this actual embodiment, data corresponding to the horizontal direction of parallelism and the kernel size is read from the
このように本実施形態では、積和演算単位で異なるコンボリューション演算を順次処理する。このため、参照データを積和演算単位で共有し、再利用することができる。即ち、3つの特徴面を算出するに際してRAM101から係数データシフトレジスタに転送する参照データの回数は1回で良い。従って、第1の実施形態の場合と同様にRAM101から係数データバッファ1031〜nへのデータ転送が処理時間を律する可能性を低減することができる。
As described above, in the present embodiment, different convolution operations are sequentially processed in the product-sum operation unit. Therefore, the reference data can be shared and reused in the product-sum operation unit. That is, the number of reference data to be transferred from the
また、第1の実施形態ではコンボリューションカーネル演算単位で特徴面を跨いで処理するため、参照データバッファに格納する参照データとして、カーネル演算に必要なサイズの参照データが必要になる。一方、本実施形態では、積和演算単位で特徴面を跨いで処理するため、積和演算単位に必要なサイズの参照データでよい。即ち、「並列に処理する演算器の数」+「並列処理する方向と同じ方向のコンボリューションカーネルサイズ」−1だけで良い。 Further, in the first embodiment, since the convolution kernel operation unit is processed across the feature planes, the reference data of the size required for the kernel operation is required as the reference data to be stored in the reference data buffer. On the other hand, in the present embodiment, since the processing is performed across the feature planes in the product-sum calculation unit, the reference data of the size required for the product-sum calculation unit may be used. That is, only "the number of arithmetic units to be processed in parallel" + "convolution kernel size in the same direction as the direction of parallel processing" -1 is sufficient.
更に、本実施形態では、特徴面を跨いで処理する特徴面の数を変更する場合、係数データシフトレジスタ1408に設定するデータとセレクタ1413の設定及び参照データシフトレジスタ1409のシフトクロックを修正するだけで良い。例えば、2つの特徴面を積和演算単位で跨いで処理する場合、係数データシフトレジスタには係数データAn1402とBn1403をインターリーブして格納する。参照データシフトレジスタのシフトクロックは1/2倍とし、累積和シフトレジスタ1412のMA2出力を積和演算器1410の加算器に帰還するように設定する。このように簡単な構成の追加で特徴面の処理順に関する自由度を高めることができる。
Further, in the present embodiment, when changing the number of feature planes to be processed across the feature planes, only the data set in the coefficient
第2の実施形態では算出る特徴面の数が1〜3の場合に処理順を制御する場合について説明したがこれに限るわけではない。累積和シフトレジスタ1412の数を増やすことでより多くの算出特徴面に対して処理順を制御することができる。 In the second embodiment, the case where the processing order is controlled when the number of feature planes to be calculated is 1 to 3 has been described, but the present invention is not limited to this. By increasing the number of cumulative sum shift registers 1412, the processing order can be controlled for more calculated feature planes.
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
(Other embodiments)
The present invention supplies a program that realizes one or more functions of the above-described embodiment to a system or device via a network or storage medium, and one or more processors in the computer of the system or device reads and executes the program. It can also be realized by the processing to be performed. It can also be realized by a circuit (for example, ASIC) that realizes one or more functions.
101 RAM
102 制御部
103 係数データバッファ
104 係数データシフトレジスタ
105 参照データバッファ
106 参照データシフトレジスタ
107 並列積和演算器
108 結果シフトレジスタ
109 非線形変換処理部
101 RAM
102 Control unit 103 Coefficient data buffer 104 Coefficient data shift
Claims (16)
前記参照データと前記係数データとの前記フィルタ演算を実行する少なくとも一つの演算器と、
前記記憶装置から転送された複数の参照データを保持する参照データ保持手段と、
前記記憶装置から転送された複数の係数データを保持する係数データ保持手段と、
前記少なくとも一つの演算器のそれぞれに、前記参照データ保持手段に保持された前記複数の参照データのうち1つの参照データと、前記係数データ保持手段に保持された前記複数の係数データのうち1つの係数データとの演算を、同一の1つの参照データとそれぞれ異なる1つの係数データとの演算を順次実行させるようにして実行させ、複数の算出特徴面の算出を、算出対象となる算出特徴面の領域中の所定の大きさの部分領域ごとに算出特徴面を順次切り替えながら実行させる制御手段と、
を有することを特徴とする演算回路。 It is an arithmetic circuit that connects to a storage device that stores reference data and coefficient data of filter calculation and calculates a plurality of calculated feature planes by filter calculation for one reference feature plane.
At least one arithmetic unit that executes the filter operation of the reference data and the coefficient data, and
A reference data holding means for holding a plurality of reference data transferred from the storage device, and
A coefficient data holding means for holding a plurality of coefficient data transferred from the storage device, and
In each of the at least one arithmetic unit , one of the reference data of the plurality of reference data held by the reference data holding means and one of the plurality of coefficient data held by the coefficient data holding means . The calculation with the coefficient data is executed so as to sequentially execute the calculation with one reference data of the same and one coefficient data different from each other, and the calculation of a plurality of calculation feature planes is performed on the calculation feature plane to be calculated. A control means for executing while sequentially switching the calculated feature planes for each partial region of a predetermined size in the region.
An arithmetic circuit characterized by having.
前記係数データ保持手段から係数データをロードし、前記演算器に供給する係数データ供給手段と、をさらに有し、
前記制御手段は、前記参照データ供給手段から1つの前記演算器に同一の1つの参照データを供給させている間に、前記係数データ供給手段から当該1つの前記演算器にそれぞれ異なる複数の係数データを1つずつ供給させることを特徴とする請求項1に記載の演算回路。 A reference data supply means that loads reference data from the reference data holding means and supplies the reference data to the arithmetic unit.
It further has a coefficient data supply means for loading coefficient data from the coefficient data holding means and supplying the coefficient data to the arithmetic unit.
Wherein, while is supplied with the same one reference data to one of said arithmetic unit from the reference data supply means, said coefficient data supplying means different plurality of coefficient data to the one of the arithmetic units from The arithmetic circuit according to claim 1, wherein the arithmetic circuits are supplied one by one.
前記参照データと前記係数データとの前記フィルタ演算を実行する少なくとも一つの演算器と、
前記記憶装置から転送された複数の参照データを保持する参照データ保持手段と、
前記記憶装置から転送された複数の係数データを保持する係数データ保持手段と、
前記参照データ保持手段から参照データをロードし、ロードされた該参照データを前記演算器に供給する参照データ供給手段と、
前記係数データ保持手段から前記複数の係数データをロードし、ロードされた該係数データを前記演算器に供給する係数データ供給手段と、
前記少なくとも一つの演算器のそれぞれに、前記参照データ供給手段から供給された前記複数の参照データのうち1つの参照データと、前記係数データ供給手段から供給された前記複数の係数データのうち1つの係数データとの演算を、同一の1つの参照データとそれぞれ異なる1つの係数データとの演算を順次実行させるようにして実行させ、複数の算出特徴面の算出を、算出対象となる算出特徴面の領域中の所定の大きさの部分領域ごとに算出特徴面を順次切り替えながら実行させる制御手段と、
を有することを特徴とする演算回路。 It is an arithmetic circuit that connects to a storage device that stores reference data and coefficient data of filter calculation and calculates a plurality of calculated feature planes by filter calculation for one reference feature plane.
At least one arithmetic unit that executes the filter operation of the reference data and the coefficient data, and
A reference data holding means for holding a plurality of reference data transferred from the storage device, and
A coefficient data holding means for holding a plurality of coefficient data transferred from the storage device, and
A reference data supply means that loads reference data from the reference data holding means and supplies the loaded reference data to the arithmetic unit.
A coefficient data supply means that loads the plurality of coefficient data from the coefficient data holding means and supplies the loaded coefficient data to the arithmetic unit.
One of the reference data of the plurality of reference data supplied from the reference data supply means and one of the plurality of coefficient data supplied from the coefficient data supply means to each of the at least one arithmetic unit . The calculation with the coefficient data is executed so as to sequentially execute the calculation with one reference data of the same and one coefficient data different from each other, and the calculation of a plurality of calculation feature planes is performed on the calculation feature plane to be calculated. A control means for executing while sequentially switching the calculated feature planes for each partial region of a predetermined size in the region.
An arithmetic circuit characterized by having.
少なくとも一つの演算器が、前記フィルタ演算の参照データと前記フィルタ演算の係数データとの前記フィルタ演算を実行する演算工程と、
参照データ保持手段が、前記記憶装置から転送された所定数の参照データを保持する参照データ保持工程と、
係数データ保持手段が、前記記憶装置から転送された第1フィルタの係数データ及び第2フィルタの係数データを保持する係数データ保持工程と、
制御手段が、前記少なくとも一つの演算器のそれぞれに、前記参照データ保持手段に保持された前記複数の参照データのうち1つの参照データと、前記係数データ保持手段に保持された前記複数の係数データのうち1つの係数データとの演算を、同一の1つの参照データとそれぞれ異なる1つの係数データとの演算を順次実行させるようにして実行させ、複数の算出特徴面の算出を、算出対象となる算出特徴面の領域中の所定の大きさの部分領域ごとに算出特徴面を順次切り替えながら実行させる制御工程と、
を有することを特徴とする方法。 It is a control method of an arithmetic circuit that connects to a storage device that stores reference data and coefficient data of a filter calculation and calculates a plurality of calculated feature planes by a filter calculation for one reference feature plane.
A calculation step in which at least one arithmetic unit executes the filter operation of the reference data of the filter operation and the coefficient data of the filter operation.
A reference data holding step in which the reference data holding means holds a predetermined number of reference data transferred from the storage device, and
A coefficient data holding step in which the coefficient data holding means holds the coefficient data of the first filter and the coefficient data of the second filter transferred from the storage device, and
Control means, wherein at least each one of the computing units, and one reference data among said plurality of reference data held in the reference data holding means, the coefficient of the plurality of coefficient data stored in the data storing means the operation of a single coefficient data, a manner is performed as to successively perform the operation between each the same one reference data different one coefficient data, the calculation of the plurality of calculated feature plane, the calculation target of the A control process in which the calculated feature planes are sequentially switched and executed for each partial region of a predetermined size in the region of the calculated feature planes.
A method characterized by having.
少なくとも一つの演算器に、前記フィルタ演算の参照データと前記フィルタ演算の係数データとの前記フィルタ演算を実行させる演算ステップと、
参照データ保持手段に、前記記憶装置から転送された所定数の参照データを保持させる参照データ保持ステップと、
係数データ保持手段に、前記記憶装置から転送された第1フィルタの係数データ及び第2フィルタの係数データを保持する係数データ保持ステップと、
前記少なくとも一つの演算器のそれぞれに、前記参照データ保持手段に保持された前記複数の参照データのうち1つの参照データと、前記係数データ保持手段に保持された前記複数の係数データのうち1つの係数データとの演算を、同一の1つの参照データとそれぞれ異なる1つの係数データとの演算を順次実行させるようにして実行させ、複数の算出特徴面の算出を、算出対象となる算出特徴面の領域中の所定の大きさの部分領域ごとに算出特徴面を順次切り替えながら実行させる制御ステップと、
をコンピュータに実行させることを特徴とするプログラム。 It is a control program of an arithmetic circuit that connects to a storage device that stores reference data and coefficient data of filter calculation and calculates a plurality of calculated feature planes by filter calculation for one reference feature plane.
An operation step of causing at least one arithmetic unit to execute the filter operation of the reference data of the filter operation and the coefficient data of the filter operation.
A reference data holding step of causing the reference data holding means to hold a predetermined number of reference data transferred from the storage device, and a reference data holding step.
A coefficient data holding step for holding the coefficient data of the first filter and the coefficient data of the second filter transferred from the storage device in the coefficient data holding means, and a coefficient data holding step.
In each of the at least one arithmetic unit , one of the reference data of the plurality of reference data held by the reference data holding means and one of the plurality of coefficient data held by the coefficient data holding means . The calculation with the coefficient data is executed so as to sequentially execute the calculation with one reference data of the same and one coefficient data different from each other, and the calculation of a plurality of calculation feature planes is performed on the calculation feature plane to be calculated. A control step to execute while sequentially switching the calculated feature planes for each partial region of a predetermined size in the region, and
A program characterized by having a computer execute.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2016211898A JP6945987B2 (en) | 2016-10-28 | 2016-10-28 | Arithmetic circuit, its control method and program |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2016211898A JP6945987B2 (en) | 2016-10-28 | 2016-10-28 | Arithmetic circuit, its control method and program |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2018073103A JP2018073103A (en) | 2018-05-10 |
| JP6945987B2 true JP6945987B2 (en) | 2021-10-06 |
Family
ID=62114212
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2016211898A Active JP6945987B2 (en) | 2016-10-28 | 2016-10-28 | Arithmetic circuit, its control method and program |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP6945987B2 (en) |
Families Citing this family (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP7079483B2 (en) * | 2018-06-18 | 2022-06-02 | 国立研究開発法人産業技術総合研究所 | Information processing methods, systems and programs |
| US11429850B2 (en) * | 2018-07-19 | 2022-08-30 | Xilinx, Inc. | Performing consecutive mac operations on a set of data using different kernels in a MAC circuit |
| FR3085517B1 (en) * | 2018-08-31 | 2020-11-13 | Commissariat Energie Atomique | CALCULATOR ARCHITECTURE OF A CONVOLUTION LAYER IN A CONVOLUTIONAL NEURON NETWORK |
| WO2020047750A1 (en) * | 2018-09-04 | 2020-03-12 | 深圳先进技术研究院 | Arrhythmia detection method and apparatus, electronic device, and computer storage medium |
| CN109460813B (en) * | 2018-09-10 | 2022-02-15 | 中国科学院深圳先进技术研究院 | Acceleration method, device, device and storage medium for computing convolutional neural network |
| WO2020051751A1 (en) * | 2018-09-10 | 2020-03-19 | 中国科学院深圳先进技术研究院 | Convolution neural network computing acceleration method and apparatus, device, and storage medium |
| JP7227769B2 (en) * | 2019-01-10 | 2023-02-22 | キヤノン株式会社 | Information processing device and memory control method |
| CN110276345B (en) * | 2019-06-05 | 2021-09-17 | 北京字节跳动网络技术有限公司 | Convolutional neural network model training method and device and computer readable storage medium |
| JP7358312B2 (en) * | 2020-08-25 | 2023-10-10 | 株式会社東芝 | Memory and neural network devices |
| CN112766467B (en) * | 2021-04-06 | 2021-08-20 | 深圳市一心视觉科技有限公司 | Image identification method based on convolution neural network model |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2001298734A (en) * | 2000-04-11 | 2001-10-26 | Matsushita Electric Ind Co Ltd | Video signal encoding method and apparatus, and computer-readable recording medium recording video signal encoding program |
| JP5376920B2 (en) * | 2008-12-04 | 2013-12-25 | キヤノン株式会社 | Convolution operation circuit, hierarchical convolution operation circuit, and object recognition device |
-
2016
- 2016-10-28 JP JP2016211898A patent/JP6945987B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| JP2018073103A (en) | 2018-05-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP6945987B2 (en) | Arithmetic circuit, its control method and program | |
| JP6945986B2 (en) | Arithmetic circuit, its control method and program | |
| US9135553B2 (en) | Convolution operation circuit and object recognition apparatus | |
| US10210419B2 (en) | Convolution operation apparatus | |
| US12190226B2 (en) | Method for accelerating operations and accelerator apparatus | |
| US11467969B2 (en) | Accelerator comprising input and output controllers for feeding back intermediate data between processing elements via cache module | |
| JP6800656B2 (en) | Arithmetic circuit, its control method and program | |
| JP2018147182A (en) | Arithmetic processing device and control method thereof | |
| CN112005251B (en) | Processing device | |
| JP2015210709A (en) | Arithmetic processing unit | |
| US11775809B2 (en) | Image processing apparatus, imaging apparatus, image processing method, non-transitory computer-readable storage medium | |
| TWI417798B (en) | High - speed reverse transfer neural network system with elastic structure and learning function | |
| WO2022110386A1 (en) | Data processing method and artificial intelligence processor | |
| JP6532334B2 (en) | Parallel computing device, image processing device and parallel computing method | |
| JP7410961B2 (en) | arithmetic processing unit | |
| JP7299770B2 (en) | Arithmetic processing device and arithmetic processing method | |
| JP2021012596A (en) | Calculation processing device and calculation processing method | |
| CN110087088B (en) | Data storage method based on motion estimation, terminal equipment and storage medium | |
| JP2018136703A (en) | Image recognizing device | |
| JP6319420B2 (en) | Information processing apparatus, digital camera and processor | |
| WO2019031282A1 (en) | Discrimination arithmetic device, discrimination arithmetic method and program | |
| JP2020140625A (en) | Image processing device and image processing method |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20191011 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200929 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20201027 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20201225 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210601 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210729 |
|
| 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: 20210817 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210915 |
|
| R151 | Written notification of patent or utility model registration |
Ref document number: 6945987 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |