(57)【要約】      （修正有）【課題】各演算ブロックによる外部メモリへのアクセス回数を削減して、畳込み演算処理をより効率的に行うことができるデータ処理装置を提供する。【解決手段】演算処理装置１０において、複数の演算ブロック１１は、階層的に接続された複数の処理層に対応してそれぞれ畳込み演算を実行する。ＲＤ中継部１２は、基準ＥＮ生成部及びＥＮ生成部で、外部メモリ１８より読出されたシリアルデータにおいて、対応する演算ブロック１１が処理対象とするデータを示すＥＮ信号を周期的に出力する。さらに、ＲＤ中継部１２は、外部メモリ１８より読出されたデータ又は自身よりも上位側に位置するＲＤ中継部１２より出力されたデータがシリアルに入力されると、ＥＮ信号に基づいて取込んだデータを一定の処理単位毎に纏める前処理を行い、対応するデータ保持部１４又は自身よりも下位側に位置するＲＤ中継部１２に出力する。【選択図】図５
2018116419.tif 000002
【特許請求の範囲】
【請求項１】
階層的に接続された複数の処理層に対応して、それぞれ畳込み演算を実行する複数の演算ブロック（１１）と、
前記複数の演算ブロックとそれぞれ対をなして配置され、前記複数の演算ブロックに入力されるデータ,及び前記複数の演算ブロックが出力するデータを保持する複数のデータ保持部（１４）と、
外部メモリ（１８）と前記複数のデータ保持部との間に配置され、入力されるデータを中継して、前記複数のデータ保持部に出力する複数の読出し中継部（１２，１２Ｐ，１２Ａ）と、
前記複数の演算ブロックと前記複数のデータ保持部との間に配置され、前記複数の演算ブロックが出力するデータを中継して、前記複数のデータ保持部に出力する複数の書込み中継部（１３）と、
前記外部メモリより読出されたシリアルデータにおいて、対応する演算ブロックが処理対象とするデータを示す有効信号を周期的に出力する信号出力部（１２ｅ，１５ｃ，４１ｃ）とを備え、
前記読出し中継部は、前記外部メモリより読出されたデータ，又は自身よりも上位側に位置する読出し中継部より出力されたデータがシリアルに入力されると、前記有効信号に基づいて取込んだデータを一定の処理単位毎に纏める前処理を行い、対応するデータ保持部又は自身よりも下位側に位置する読出し中継部に出力するデータ処理装置。
【請求項２】
前記読出し中継部（１２Ｐ）は、対応する演算ブロックが処理単位とするデータ列の両端に位置するデータを複数ビット連続して出力するパディング処理を行い、
前記信号出力部（４１ｃ）は、前記有効信号がアクティブとなる期間を、処理対象とするデータが出力される期間に応じて可変設定する請求項１記載のデータ処理装置。
【請求項３】
前記複数の演算ブロックとそれぞれ対をなして配置され、前記複数の演算ブロックが外部メモリから読込むデータをパラレル／シリアル変換すると、当該シリアルデータにおいて対応する演算ブロックが処理対象とするデータを示す基準有効信号を周期的に出力する複数のインタフェース部（１５，４１）を備え、
前記信号出力部は、前記インタフェース部に配置され、基準有効信号を発生する基準信号発生部（１５ｃ，４１ｃ）と、
前記読出し中継部に配置され、前記基準有効信号又は自身よりも上位側に位置する読出し中継部より入力された有効信号を、自身よりも下位側に位置する読出し中継部に対し、クロック同期により出力する信号中継部（１２ｅ）とを備える請求項１又は２記載のデータ処理装置。
【請求項４】
請求項１から３の何れか一項に記載のデータ処理装置を備えて構成されるニューラルネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、畳込み演算を行うデータ処理装置、及び前記装置により実現されるニューラルネットワークシステムに関する。
【背景技術】
【０００２】
従来より、複数の処理層が階層的に接続されたニューラルネットワークによる演算を実行する演算処理装置が考えられている。特に画像認識を行う演算処理装置においては、いわゆる畳み込みニューラルネットワーク（ＣＮＮ：Convolutional Neural Network）が中核的な存在となっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５１８４８２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、この種の演算処理装置においては、演算処理層の階層数の増加や演算処理の複雑化に対応するために、複数の演算ブロックと複数のメモリを搭載し、例えば１つの演算ブロックに対し複数のメモリを接続し、また、１つのメモリに対し複数の演算ブロックを接続することが考えられている。この構成によれば、１つの演算ブロックが複数のメモリにデータを書き込むことができ、また、１つのメモリから複数の演算ブロックにデータを読み込ませることができるので、演算処理層の階層数の増加や演算処理の複雑化に対応して演算処理を効率的に行うことができる。しかし、複数の演算ブロックと複数のメモリとを接続する配線が複雑化し、これに伴う処理速度の低下や、演算処理装置の大型化が懸念される。
【０００５】
出願人は、上記の問題を解決するものとして、特願２０１６−３１９４９号を出願している。しかしながら、上記出願の構成においても、異なる観点から以下の問題があった。処理対象となる画像データは外部メモリに格納されているが、その画像データについて演算ブロックが最終的な畳込み演算を行うには、その演算の対象となる画像データを準備するための「前処理」が必要となっている。したがって、演算ブロックは、「前処理」を行うため外部メモリに複数回アクセスする必要があり、連続的に畳込み演算を行うことができず、演算処理速度が低下することが問題となる。
【０００６】
本発明は上記事情に鑑みてなされたものであり、その目的は、各演算ブロックによる外部メモリへのアクセス回数を削減して、畳込み演算処理をより効率的に行うことができるデータ処理装置、及び前記装置により実現されるニューラルネットワークシステムを提供することにある。
【課題を解決するための手段】
【０００７】
請求項１記載のデータ処理装置によれば、複数の演算ブロックは、階層的に接続された複数の処理層に対応してそれぞれ畳込み演算を実行する。複数のデータ保持部は、複数の演算ブロックとそれぞれ対をなして配置され、各演算ブロックに入力されるデータ,及び各演算ブロックが出力するデータを保持する。読出し中継部は、外部メモリと各データ保持部との間に配置され、入力されるデータを中継して、各データ保持部に出力する。
【０００８】
複数の書込み中継部は、各演算ブロックと各データ保持部との間に配置され、各演算ブロックが出力するデータを中継して、対応するデータ保持部に出力する。信号出力部は、外部メモリより読出されたシリアルデータにおいて、対応する演算ブロックが処理対象とするデータを示す有効信号を周期的に出力する。
【０００９】
読出し中継部は、外部メモリより読出されたデータ，又は自身よりも上位側に位置する読出し中継部より出力されたデータがシリアルに入力されると、有効信号に基づいて取込んだデータを一定の処理単位毎に纏める前処理を行い、対応するデータ保持部又は自身よりも下位側に位置する読出し中継部に出力する。
【００１０】
このように読出し中継部が、有効信号に基づいて取込んだデータを一定の処理単位毎に纏める前処理を実行することで、各演算ブロックが前処理を行う場合よりも外部メモリに対するアクセス回数を削減できる。そして、各演算ブロックは、データ保持部を介して入力されるデータに対し、畳込み演算を一括して行うことが可能になる。したがって、畳込み演算をより高速に実行できる。
【図面の簡単な説明】
【００１１】
【図１】畳み込みニューラルネットワークの構成例を概念的に示す図
【図２】中間層における演算処理の流れを視覚的に示す図（その１）
【図３】中間層における演算処理の流れを視覚的に示す図（その２）
【図４】特徴量抽出処理に用いられる一般的な演算式および関数を示す図
【図５】本実施形態に係るデータ処理装置の構成例を概略的に示すブロック図
【図６】演算ブロックの構成例を概略的に示すブロック図
【図７】データ処理の流れを説明する図
【図８】先行出願に開示されている、対応する処理装置の構成例を概略的に示すブロック図
【図９】データ処理の流れを説明する図
【図１０】インタフェースおよびデータ保持部の構成を示す機能ブロック図
【図１１】基準ＥＮ生成部の構成を示す機能ブロック図
【図１２】ＲＤ中継部の構成を示す機能ブロック図
【図１３】ＥＮ生成部の動作を示すタイミングチャート
【図１４】ＥＮ生成部の構成を示す機能ブロック図
【図１５】前処理の一例を説明する図
【図１６】ＷＲ中継部側のデータ保持部の構成を示す機能ブロック図
【図１７】外部メモリにおける画像データの配置例を示す図
【図１８】ＲＤ中継部より出力されるシリアルデータを示すタイミングチャート
【図１９】４ピクセルに対応して、ＲＤ中継部より出力されるシリアルデータを示すタイミングチャート
【図２０】データ処理装置の全体に亘る処理を示すタイミングチャート（その１）
【図２１】データ処理装置の全体に亘る処理を示すタイミングチャート（その２）
【図２２】図２０及び図２１で実行される前処理の内容を示す図
【図２３】データ処理装置により実現されるニューラルネットワークにより、画像データを処理するイメージを示す図
【図２４】第２実施形態であり、ＲＤ中継部より出力されるシリアルデータを示すタイミングチャート
【図２５】パディングを説明する図（その１）
【図２６】パディングを説明する図（その２）
【図２７】基準ＥＮ生成部の構成を示す機能ブロック図
【図２８】第３実施形態であり、外部メモリにおけるデータの配置例を示す図
【図２９】演算ブロックの一部の構成例を概略的に示すブロック図
【図３０】第４実施形態であり、ＥＮ生成部の構成を示す機能ブロック図
【発明を実施するための形態】
【００１２】
（ニューラルネットワーク）
図１には、詳しくは後述するデータ処理装置１０に適用されるニューラルネットワーク、この場合、畳み込みニューラルネットワークの構成を概念的に示している。畳み込みニューラルネットワークＮは、入力データである画像データＤ１から所定の形状やパターンを認識する画像認識技術に応用されるものであり、中間層Ｎａと全結合層Ｎｂとを有する。中間層Ｎａは、複数の特徴量抽出処理層Ｎａ１，Ｎａ２…が階層的に接続された構成である。各特徴量抽出処理層Ｎａ１，Ｎａ２…は、それぞれ畳み込み層Ｃおよびプーリング層Ｐを備える。
【００１３】
次に、中間層Ｎａにおける処理の流れについて説明する。図２に例示するように、第１層目の特徴量抽出処理層Ｎａ１では、演算処理装置は、入力される画像データＤ１を例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して周知の特徴量抽出処理を施すことにより入力画像に含まれる複数の特徴量を抽出する。なお、第１層目の特徴量抽出処理層Ｎａ１では、例えば水平方向に延びる線状の特徴量や斜め方向に延びる線状の特徴量などといった比較的シンプルな単独の特徴量を抽出する。このとき、演算処理装置は、入力画像に含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成する。
【００１４】
第２層目の特徴量抽出処理層Ｎａ２では、演算処理装置は、前階層の特徴量抽出処理層Ｎａ１から入力される入力データを例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して周知の特徴量抽出処理を施すことにより入力画像に含まれる複数の特徴量を抽出する。なお、第２層目の特徴量抽出処理層Ｎａ２では、第１層目の特徴量抽出処理層Ｎａ１で抽出された複数の特徴量の空間的な位置関係などを考慮しながら統合させることで、より高次元の複合的な特徴量を抽出する。このとき、演算処理装置は、入力画像に含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成する。
【００１５】
第３層目の特徴量抽出処理層Ｎａ３では、演算処理装置は、前階層の特徴量抽出処理層Ｎａ２から入力される入力データを例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して周知の特徴量抽出処理を施すことにより入力画像に含まれる複数の特徴量を抽出する。なお、第３層目の特徴量抽出処理層Ｎａ３では、第２層目の特徴量抽出処理層Ｎａ２で抽出された複数の特徴量の空間的な位置関係などを考慮しながら統合させることで、より高次元の複合的な特徴量を抽出する。このとき、演算処理装置は、入力画像に含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成する。このように、複数の特徴量抽出処理層による特徴量の抽出処理を繰り返すことで、演算処理装置は、画像データＤ１に含まれる検出対象物体の画像認識を行う。
【００１６】
演算処理装置は、中間層Ｎａにおいて複数の特徴量抽出処理層Ｎａ１，Ｎａ２，Ｎａ３…による処理を繰り返すことで入力画像データＤ１に含まれる種々の特徴量を高次元で抽出していく。そして、演算処理装置は、中間層Ｎａの処理により得られた結果を中間演算結果データとして全結合層Ｎｂに出力する。
【００１７】
全結合層Ｎｂは、中間層Ｎａから得られる複数の中間演算結果データを結合して最終的な演算結果データを出力する。即ち、全結合層Ｎｂは、中間層Ｎａから得られる複数の中間演算結果データを結合し、さらに、その結合結果に対して重み係数を異ならせながら積和演算を行うことにより、最終的な演算結果データ、即ち、入力データである画像データＤ１に含まれる検出対象物を認識した画像データを出力する。このとき、積和演算による演算結果の値が大きい部分が検出対象物の一部または全部として認識される。
【００１８】
次に、演算処理装置による特徴量抽出処理の流れについて説明する。図３に例示するように、演算処理装置は、前階層の特徴量抽出処理層から入力される入力データＤｎを所定サイズ、この場合、図にてハッチングで示す３×３画素ごとのフィルタサイズにより走査する。なお、画素サイズは３×３画素に限ることなく、例えば５×５画素など適宜変更することができる。
【００１９】
そして、演算処理装置は、走査したデータに対して、それぞれ周知の畳み込み演算を行う。そして、演算処理装置は、畳み込み演算後のデータに対して周知の活性化処理を行い、畳み込み層Ｃの出力とする。そして、演算処理装置は、畳み込み層Ｃの出力データＣｎに対して、所定サイズ、この場合、２×２画素ごとに周知のプーリング処理を行い、プーリング層Ｐの出力とする。そして、演算処理装置は、プーリング層Ｐの出力データＰｎを次の階層の特徴量抽出処理層に出力する。なお、画素サイズは、２×２画素に限られず適宜変更することができる。
【００２０】
図４には、畳み込み演算処理に用いられる畳み込み関数、活性化処理に用いられる関数、プーリング処理に用いられる関数の一般的な例を示している。即ち、畳み込み関数Ｙｉｊは、直前の層の出力Ｘｉｊに学習により得られる重み係数Ｗｐ，ｑを乗算した値を累積する関数となっている。なお、「Ｎ」は１サイクルの畳み込み演算処理により処理される画素サイズを示す。即ち、例えば１演算サイクルの画素サイズが「３×３」画素である場合、Ｎの値は「２」である。
【００２１】
また、畳み込み関数Ｙｉｊは、累積値に所定のバイアス値を加算する関数としてもよい。また、畳み込み関数は、全結合処理にも対応し得る積和演算が可能な関数であれば、種々の関数を採用することができる。また、活性化処理には、周知のロジスティックジグモイド関数やＲｅＬＵ関数（Rectified Linear Units）などが用いられる。また、プーリング処理には、入力されるデータの最大値を出力する周知の最大プーリング関数や、入力されるデータの平均値を出力する周知の平均プーリング関数などが用いられる。
【００２２】
上述した畳み込みニューラルネットワークＮによれば、コンボルーション層Ｃによる処理及びプーリング層Ｐによる処理が繰り返されることにより、より高次元の特徴量の抽出が可能となる。次に、この畳み込みニューラルネットワークＮを適用した演算処理装置に係る実施形態について説明する。
【００２３】
（第１実施形態）
図５に例示するデータ処理装置１０は、複数の演算ブロック１１、複数の中継部１２及び１３、複数のデータ保持部１４、複数のインタフェース部１５などを備える。データ処理装置１０は、１つの演算ブロック１１、ＲＤ中継部１２及びＷＲ中継部１３、１つのデータ保持部１４により１つの演算処理ユニット１６を構成している。そして、データ処理装置１０は、複数の演算処理ユニット１６を列状に配列した構成となっている。なお、説明の便宜上、図の下側を上位側、図の上側を下位側と定義する。また、演算処理ユニット１６は、それぞれインタフェース部１５を介してインターコネクト部１７に接続されている。インターコネクト部１７は、データ処理装置１０の外部に設けられた外部メモリ１８に接続されている。
【００２４】
図６に例示するように、演算ブロック１１は、それぞれ、畳み込み演算処理部１１ａ、累積処理部１１ｂ、活性化処理部１１ｃ、プーリング処理部１１ｄなどを備えている。これらの処理部は、例えば回路などのハードウェアにより構成してもよいし、ソフトウェアにより構成してもよいし、ハードウェアとソフトウェアの組み合わせにより構成してもよい。畳み込み演算処理部１１ａは、前階層から入力される入力データに対して周知の畳み込み演算処理を実行して、その処理結果データを累積処理部１１ｂに出力する。
【００２５】
累積処理部１１ｂは、例えば加算器などで構成されている。累積処理部１１ｂは、上位側の演算ブロック１１の累積処理部１１ｂからデータが入力される場合には、そのデータを、自身と同じ演算ブロック１１の畳み込み演算処理部１１ａから入力されるデータに加算する。これにより、複数の演算ブロック１１は、それぞれの演算ブロック１１の畳み込み演算処理部１１ａによる演算結果データを、上位側から下位側に向かって順次累積することが可能となっている。
【００２６】
累積処理部１１ｂは、上位側の演算ブロック１１からデータが入力されない場合には、自身と同じ演算ブロック１１の畳み込み演算処理部１１ａから入力されるデータを活性化処理部１１ｃに出力する。また、累積処理部１１ｂは、下位側の演算ブロック１１からデータが入力される場合には、自身と同じ演算ブロック１１の畳み込み演算処理部１１ａから入力されるデータに下位側の演算ブロック１１から入力されるデータを加算した累積データを活性化処理部１１ｃに出力する。
【００２７】
活性化処理部１１ｃは、累積処理部１１ｂから入力されるデータに対して周知の活性化処理を実行して、その処理結果データをプーリング処理部１１ｄに出力する。プーリング処理部１１ｄは、活性化処理部１１ｃによる処理結果データに対して周知のプーリング処理を実行して、その処理結果データを出力する。
【００２８】
ＲＤ中継部１２は、インタフェース部１５又は自身より上位側のＲＤ中継部１２を介して入力されるデータを中継し、データ保持部１４に出力する。データ保持部１４は、保持しているデータを自身と同じ演算処理ユニット１６の演算ブロック１１に出力する。
【００２９】
ＷＲ中継部１３は、自身と同じ演算処理ユニット１６の演算ブロック１１から入力されるデータ，又は自身よりも下位側のＷＲ中継部１３から入力されるデータのうち何れか一方を選択し、その選択したデータを中継して自身と同じ演算処理ユニット１６のデータ保持部１４に出力する。
【００３０】
データ保持部１４は、いわゆる内部メモリとして機能するもので、現階層における演算処理時に入力される入力データ、つまり演算結果データ，及び次階層における演算処理時に出力する出力データを一時的に保持する。データ保持部１４は、それぞれ２つのバッファ１４ａ，１４ｂを備える。また、データ保持部１４は、それぞれ図示しないスイッチング機能部を備える。スイッチング機能部は、バッファ１４ａ，１４ｂを、演算ブロック１１へのデータ出力用および演算ブロック１１からのデータ入力用に切り換える機能を有する。
【００３１】
即ち、スイッチング機能部は、例えば、バッファ１４ａをデータ出力用として機能させる場合には、バッファ１４ｂをデータ入力用として機能させるように切り換える。また、スイッチング機能部は、バッファ１４ａをデータ入力用として機能させる場合には、バッファ１４ｂをデータ出力用として機能させるように切り換える。
【００３２】
データ保持部１４は、現階層における演算処理時に入力される入力データ、つまり演算結果データを、データ入力用に切り換えられているバッファ１４ａ又はバッファ１４ｂに保持する。そして、データ保持部１４は、次回層の演算処理時には、現階層の演算処理時においてデータ入力用に切り換えられていたバッファ１４ａ又はバッファ１４ｂをデータ出力用に切り換え、そのバッファに保持されているデータを、演算ブロック１１に出力する。これにより、データ保持部１４は、現階層の演算処理時における演算結果データを外部メモリ１８に退避させなくとも、データ処理装置１０内部において、現階層の演算結果データを次階層に送ることができる。
【００３３】
外部メモリ１８は、例えばＤｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ−ＳＤＲＡＭなどで構成される大規模記憶媒体であり、入力画像データＤ１や、演算ブロック１１による演算結果データなどを記憶可能である。外部メモリ１８は、この場合、インターコネクト部１７を介して複数のインタフェース部１５、換言すれば複数の演算処理ユニット１６に接続されている。インターコネクト部１７は、外部メモリ１８から読み出されるデータを各演算処理ユニット１６に振り分ける機能を有する。また、インターコネクト部１７は、各演算処理ユニット１６から外部メモリ１８に書き出されるデータを外部メモリ１８に集約する機能を有する。
【００３４】
データ処理装置１０は、さらに、冗長データ保持部１９を備える。冗長データ保持部１９は、データ保持部１４と同様に２つのバッファ１９ａ，１９ｂを備える。これらバッファ１９ａ,１９ｂの機能は、上述したバッファ１４ａ，１４ｂと同様である。冗長データ保持部１９は、最も上位側のＷＲ中継部１３が出力するデータを、最も上位側のデータ保持部１４と冗長に保持する。そして、最も上位側の演算ブロック１１は、冗長データ保持部１９に保持されているデータを、自身が生成する演算結果データに加算する。
【００３５】
ここで、図８は、前述した本出願人による先行出願；特願２０１６−３１９４９号の図５相当図である。この構成では、図３に示したように３×３の畳込み演算を実行する前に、図９に示すように外部メモリ１８に対するアクセスを４回行い、１×１の畳込み演算及びサブサンプリングを行うことで演算ブロック１１が演算を実行する際の処理単位に纏める「前処理」を行った後、演算ブロック１１が３×３の畳込み演算を実行することになる。
【００３６】
これに対して、本実施形態のデータ処理装置１０では、ＲＤ中継部１２が上記の「前処理」を行うように構成している点が特徴である。
尚、上記先行出願では、図７〜図１０において「累積」，「非累積：パラレル」，「分散」，「非分散：パラレル」の４つの動作例が示されているが、本実施形態のデータ処理装置１０においてもこれらの動作は同様に可能である。
【００３７】
図１０に示すように、インタフェース部１５は、外部バスＩＦ１５ａ及びパラシリ変換１５ｂ及び基準ＥＮ生成部１５ｃを備えている。尚、図１０は、一例としてＡＸＩ（Advanced eXtensible Interface）に準拠したインタフェースを示している。パラシリ変換部１５ｂは、ＦＩＦＯ２１及びパラシリ変換コントローラ２２を備えている。パラシリ変換コントローラ２２は、外部バスＩＦ１５ａが備えるインタフェースコントローラ２３により制御され、ＦＩＦＯ２１は、パラシリ変換コントローラ２２により制御される。また、コントローラ２２及び２３には、システム全体を制御する図示しない上位のコントローラより、例えば外部メモリアドレスやデータサイズ等を設定するための制御値が入力される。
【００３８】
外部バスＩＦ１５ａを介して入力されるパラレルデータ；ｒｄａｔａは、ＦＩＦＯ２１によりシリアルに変換され、ｏｕｔ＿ｄａｔａとしてＲＤ中継部１２に出力される。また、パラシリ変換コントローラ２２は、基準ＥＮ生成１５ｃに対し、有効信号である基準ＥＮ信号を生成させるための制御信号ｄａｔａ＿ｅｎａｂｌｅを出力する。
【００３９】
図１１に示すように、基準ＥＮ生成部１５ｃは、比較ロジック部２４，フリップフロップ２５，ＡＮＤゲート２６，カウンタ２７，比較ロジック部２８及びＡＮＤゲート２９を備えている。比較ロジック部２４の入力端子ｉｎ１には、スキップするピクセル数を与える信号ｐｉｘｅｌ＿ｓｋｉｐが外部より入力される。また、同入力端子ｉｎ０には、カウンタ２７の出力端子ｏｕｔが接続されている。比較ロジック部２４は、入力端子ｉｎ０，ｉｎ１の値が一致すると、出力端子ｏｕｔに「１」を出力する。
【００４０】
比較ロジック部２４の出力端子ｏｕｔは、ＡＮＤゲート２６の入力端子の一方に接続されており、同入力端子の他方には、フリップフロップ２５を介して制御信号ｄａｔａ＿ｅｎａｂｌｅが与えられる。ＡＮＤゲート２６の出力端子は、カウンタ２７の入力端子ｒｅｓｅｔに接続されており、同入力端子ｕｐはフリップフロップ２５の出力端子に接続されている。カウンタ２７は、ＡＮＤゲート２６の出力端子がハイレベルになるとリセットされ、入力端子ｕｐに入力される信号の立上りエッジでアップカウントを行う。
【００４１】
カウンタ２７の出力端子ｏｕｔは、比較ロジック部２８の入力端子ｉｎに接続されている。比較ロジック部２８は、入力端子ｉｎの値が「０」であれば、出力端子ｏｕｔに「１」を出力する。比較ロジック部２８の出力端子ｏｕｔは、ＡＮＤゲート２９の入力端子の一方に接続されており、同入力端子の他方には、制御信号ｄａｔａ＿ｅｎａｂｌｅが与えられる。そして、ＡＮＤゲート２９の出力が、基準ＥＮ信号；ｇｅｎ＿ｅｎａｂｌｅとなる。基準ＥＮ生成部１５ｃは、信号出力部及び基準信号発生部に相当する。
【００４２】
図１２に示すように、ＲＤ中継部１２は、マルチプレクサ１２ａ及び１２ｂ，フリップフロップ１２ｃ〜１２ｄ及びＥＮ生成部１２ｅを備えている。マルチプレクサ１２ａは、ＲＤ中継部１２を介して入力されるデータである例えばｉｄａｔ０と、自身より１段上流側のＲＤ中継部１２より入力されるデータｏｄａｔ−１とを選択して、データｏｄａｔ０を出力する。マルチプレクサ１２ｂは、ＲＤ中継部１２を介して入力される基準ＥＮ信号例えばｉｅｎ０と、１段上流側のＲＤ中継部１２より入力される基準ＥＮ信号ｏｅｎ−１とを選択して、基準ＥＮ信号ｏｅｎ０として出力する。マルチプレクサ１２ａ及び１２ｂにおける入力選択は、図示しない制御部によって行われる。
【００４３】
データｏｄａｔ０は、フリップフロップ１２ｃにおいてクロック同期されてから、下位側のＲＤ中継部１２に入力される。基準ＥＮ信号ｏｅｎ０は、フリップフロップ１２ｅ及び１２ｄにおいて２段階でクロック同期されてから、前記ＲＤ中継部１２に入力される。
【００４４】
図１３に示すように、ＥＮ信号は、入力された信号レベルがハイからローに変化すると、その直後から、その直前にハイレベルを示した期間と同じ期間だけハイレベルを示すようにＥＮ生成部１２ｅにより出力される。但し、本実施形態では、ＥＮ信号がハイレベルを示す期間は全て１クロック周期であり、ＥＮ信号がハイレベルを示す期間が異なるケースについては第２実施形態にて説明する。ＥＮ生成部１２ｅは、信号出力部及び信号中継部に相当する。
【００４５】
図１４に示すように、ＥＮ生成部１２ｅは、カウンタ３０，比較ロジック部３１，ＡＮＤゲート３２及びＮＯＴゲート３３を備えている。カウンタ３０の入力端子ｕｐには、マルチプレクサ１２ｂを介してＥＮ信号，ここではｉｎ＿ｅｎａｂｌｅが入力される。カウンタ３０は、上記信号の立上りエッジでアップカウントを行う。カウンタ３０の入力端子ｄｏｗｎは、ＡＮＤゲート３２の出力端子に接続されている。カウンタ３０は、ＡＮＤゲート３２が出力する信号の立上りエッジでダウンカウントを行う。
【００４６】
カウンタ３０の出力端子ｏｕｔは、比較ロジック部３１の入力端子ｉｎに接続されている。比較ロジック部３１は、入力端子ｉｎの値が「０」でなければ、出力端子ｏｕｔに「１」を出力する。比較ロジック部３１出力端子ｏｕｔは、ＡＮＤゲート３２の入力端子の一方に接続されており、同入力端子の他方には、ＥＮ信号ｉｎ＿ｅｎａｂｌｅがＮＯＴゲート３３を介して与えられる。そして、ＡＮＤゲート３２の出力端子は、次段のフリップフロップ１２ｄの入力端子に接続される。
【００４７】
ＲＤ中継部１２にデータが、例えば図１５に示すように、Ｐ０，０，Ｐ１，０，Ｐ２，０，Ｐ３，０，Ｐ４，０，…Ｐ０，１，Ｐ１，１，Ｐ２，１，Ｐ３，１，Ｐ４，１，…とシリアルに入力された際に、信号ｐｉｘｅｌ＿ｓｋｉｐの値が「１」であれば、ＲＤ中継部１２がＥＮ信号ｉｎ＿ｅｎａｂｌｅに応じて出力するデータは、Ｐ０，０，Ｐ２，０，Ｐ４，０，Ｐ６，０，…Ｐ０，２，Ｐ２，２，Ｐ４，２，Ｐ６，２，…となる。これが「前処理」に相当する。
【００４８】
再び図１０を参照する。データ保持部１４は、ＲＤ中継部１２を介して入力されるデータをバッファ１４ａに転送するためのシリパラ変換・アドレス生成部１４ｃを備えている。シリパラ変換・アドレス生成部１４ｃは、ＦＩＦＯ３４及びシリパラ変換コントローラ３５を備えている。ＦＩＦＯ３４は、シリパラ変換コントローラ３５により制御される。このコントローラ３５にも、前述した上位のコントローラより、同様の制御値が入力される。
【００４９】
ＲＤ中継部１２を介して入力されるシリアルデータ；ｏｕｔ＿ｄａｔａは、ＦＩＦＯ３４によりパラレルに変換され、ｂｕｆｄａｔａとしてバッファ１４ａに出力される。また、シリパラ変換コントローラ３５は、バッファ１４ａに対し、アドレスｂｕｆａｄｄｒ及びイネーブル信号ｂｕｆｅｎを出力する。
【００５０】
図１６に示すように、ＷＲ中継部１３側に対応するデータ保持部１４は、バッファ１４ｂの前段にアドレス生成部１４ｄが配置される構成となる。この部分は、先行出願と同様である。
【００５１】
次に、本実施形態の作用について説明する。図１７に示すように、外部メモリ１８に配置されているビットマップとしての画像データは、「ＲＧＢ」の三原色のピクセル毎にまとまって格納されている。これに対して、演算ブロック１１が行う畳込み演算処理であるフィルタ処理は、それぞれの色毎に行われる。
【００５２】
そこで本実施形態では、ＲＤ中継部１２が図１８に示すように前処理を行うようにした。尚、図１８では、複数の演算ブロック１１に対応しているものを、上位側から下位側に、それぞれＰＥ０，ＰＥ１，ＰＥ２で示している。説明を簡単にするため、外部メモリ１８から読み出されるパラレルデータのサイズは４ビットであるとする。すると、例えばＰＥ０によって最初に読み出されるデータは「ＲＧＢＲ」となり、順次「ＧＢＲＧ」，「ＢＲＧＢ」，「ＲＧＢＲ」と変化する。シリアルに変換されたデータは、「ＲＧＢ」の繰り返しとなる。
【００５３】
これに対して、信号ｐｉｘｅｌ＿ｓｋｉｐの値を「２」とすることで、ＰＥ０には「Ｒ」のみ，ＰＥ１は「Ｇ」のみ，ＰＥ２は「Ｂ」のみのデータが、それぞれに対応するＲＤ中継部１２によりピックアップされて読み込まれるようになる。
【００５４】
また図１９は、４ピクセルの画像データに対応した場合を示す。この時は、信号ｐｉｘｅｌ＿ｓｋｉｐの値を「３」とする。これにより、
ＰＥ０：データ０ｘ０，４，８，ｃ
ＰＥ１：データ０ｘ１，５，９，ｄ
ＰＥ２：データ０ｘ２，６，ａ，ｅ
ＰＥ３：データ０ｘ３，７，ｂ，ｆ
のみが、それぞれに対応するＲＤ中継部１２によりピックアップされて読み込まれるようになる。
【００５５】
図２０に示すタイミングチャートは、図１５に示した前処理に対応する。ＰＥ０が外部メモリ１８に対し、アドレスＰ０，０〜Ｐ３，０，Ｐ４，０，〜Ｐ７，０，Ｐ０，２〜Ｐ3，2，Ｐ4，２〜Ｐ7，２を順次出力してアクセスした場合、対応するインタフェースコントローラ２３は、インターコネクト部１７に、上記アドレスの出力期間に合わせて信号ａｒｖａｌｉｄを出力する。すると、インターコネクト部１７は、信号ａｒｖａｌｉｄの最初の立ち上がりに応答して信号ｒａｒｅａｄｙをハイレベルにする。そして、外部メモリ１８から、パラレルデータＰ０，０〜Ｐ３，０，Ｐ４，０，〜Ｐ７，０，Ｐ０，２〜Ｐ3，2，Ｐ4，２〜Ｐ7，２が順次読み込まれ、インターコネクト部１７は、データの入力期間に合せて信号ｒｖａｌｉｄをハイレベルにする。
【００５６】
また、パラシリ変換コントローラ２３は、外部メモリ１８に、最初のアクセスアドレスＰ０，０〜Ｐ３，０が出力されると、インターコネクト部１７に出力する信号ｒｒｅａｄｙをハイレベルにし、最初のデータＰ０，０〜Ｐ３，０が読み込まれると同信号をローレベルにする。その後、データＰ４，０，〜Ｐ７，０，Ｐ０，２〜Ｐ3，2，Ｐ4，２〜Ｐ7，２が順次読み込まれると、各データの読み込みが完了するタイミングに合わせて信号ｒｒｅａｄｙをハイレベルにする。
【００５７】
パラシリ変換コントローラ２３は、最初のデータＰ０，０〜Ｐ３，０の読み込みが完了すると、基準ＥＮ生成部１５ｃに出力する基準ＥＮ信号ｄａｔａ＿ｅｎａｂｌｅをハイレベルにする。それに合わせて、基準ＥＮ生成部１５ｃは、パラシリ変換コントローラ２３に出力する信号ａｄｄｒ＿ｉｎｃをハイレベルにする。
【００５８】
基準ＥＮ生成部１５ｃは、基準ＥＮ信号ｄａｔａ＿ｅｎａｂｌｅをハイレベルになった時点からＥＮ信号ｏｅｎ０を１クロックだけハイレベルにし、以降は信号ｐｉｘｅｌ＿ｓｋｉｐの値「１」に応じて１クロック措きにＥＮ信号をハイレベルにする。すると、データＰ０，０，Ｐ１，０，Ｐ２，０，Ｐ３，０，Ｐ４，０，…Ｐ０，１，Ｐ１，１，Ｐ２，１，Ｐ３，１，Ｐ４，１，…がシリアルに入力された際に、ＰＥ０に対しては図１５に示したケースと同様に、データＰ０，０，Ｐ２，０，Ｐ４，０，Ｐ６，０，Ｐ０，２，Ｐ２，２，Ｐ４，２，Ｐ６，２が前処理でピックアップされて入力される。
【００５９】
１段下位側となるＰＥ１については、シリアルデータが１クロック遅れでＲＤ中継部１２に入力され、ＥＮ信号ｏｅｎ１は、ＥＮ信号ｏｅｎ０を２クロック遅延させたものとなる。その結果、ＰＥ１に対しては、データＰ１，０，Ｐ３，０，Ｐ５，０，Ｐ７，０，…Ｐ１，２，Ｐ３，２，Ｐ５，２，Ｐ７，２が前処理でピックアップされて入力される。
【００６０】
図２１に示すＰＥ２，ＰＥ３の処理は、ＰＥ０，ＰＥ１の処理と並列に実行される。したがって、これらの処理は、図２０のタイミングチャートを、外部メモリ１８に対するアドレスＰ０，１〜Ｐ３，１，Ｐ４，１，〜Ｐ７，１，Ｐ０，３〜Ｐ3，３，Ｐ4，３〜Ｐ7，３にシフトしたものとなる。これにより、ＰＥ２には、Ｐ０，１，Ｐ２，１，Ｐ４，１，Ｐ６，１，Ｐ０，３，Ｐ２，３，Ｐ4，３〜Ｐ６，３が前処理でピックアップされる。また、ＰＥ３には、Ｐ１，１，Ｐ３，１，Ｐ５，１，Ｐ７，１，Ｐ１，３，Ｐ３，３，Ｐ５，３〜Ｐ７，３が前処理でピックアップされる。
【００６１】
これにより、各演算ブロックＰＥ０〜ＰＥ３で処理されるデータは図２２に示すようになり、各演算ブロックＰＥ０〜ＰＥ３は、対応するデータ保持部１４を介して入力された画像データについて、そのまま畳込み演算を実行できる。そして、例えば図２３に示すように、路上を人が歩行している画像に対応するデータが外部メモリ１８に格納されており、１層目の演算が、異なる４領域をそれぞれ畳込んだものである場合、最終的な処理結果，つまり「人」の画像のみを抽出して認識する処理を、各層において各ピクセル１回の読出しで実行できる。
【００６２】
以上のように本実施形態によれば、複数の演算ブロック１１は、階層的に接続された複数の処理層に対応してそれぞれ畳込み演算を実行する。複数のデータ保持部１４は、複数の演算ブロック１１とそれぞれ対をなして配置され、各演算ブロック１１に入力されるデータ,及び各演算ブロック１１が出力するデータを保持する。ＲＤ中継部１２は、外部メモリ１８と各データ保持部１４との間に配置され、入力されるデータを中継して、各データ保持部１４に出力する。
【００６３】
複数のＷＲ中継部１３は、各演算ブロック１１と各データ保持部１４との間に配置され、各演算ブロック１１が出力するデータを中継して、対応するデータ保持部１４に出力する。基準ＥＮ生成１５ｃ，ＥＮ生成部１２ｅは、外部メモリ１８より読出されたシリアルデータにおいて、対応する演算ブロック１１が処理対象とするデータを示すＥＮ信号を周期的に出力する。
【００６４】
ＲＤ中継部１２は、外部メモリ１８より読出されたデータ，又は自身よりも上位側に位置するＲＤ中継部１２より出力されたデータがシリアルに入力されると、ＥＮ信号に基づいて取込んだデータを一定の処理単位毎に纏める前処理を行い、対応するデータ保持部１４又は自身よりも下位側に位置するＲＤ中継部１２に出力する。
【００６５】
このようにＲＤ中継部１２が前処理を実行することで、各演算ブロック１１が前処理を行う場合よりも外部メモリ１８に対するアクセス回数を削減できる。そして、各演算ブロック１１は、データ保持部１４を介して入力されるデータに対し、畳込み演算を一括して行うことが可能になる。したがって、畳込み演算をより高速に実行できる。
【００６６】
また、複数の演算ブロック１１が外部メモリ１８から読込むデータをパラレル／シリアル変換するインタフェース部１５を備え、シリアルデータにおいて対応する演算ブロック１１が処理対象とするデータを示す基準ＥＮ信号を周期的に出力する基準ＥＮ生成１５ｃを、インタフェース部１５に配置する。
【００６７】
そして、ＲＤ中継部１２に、基準ＥＮ信号又は自身よりも上位側に位置するＲＤ中継部１２より入力されたＥＮ信号を、自身よりも下位側に位置するＲＤ中継部１２に対し、クロック同期により出力するＥＮ生成部１２ｅを配置した。このように構成すれば、各演算ブロック１１に対するＥＮ信号を、基準ＥＮ信号を中継させることで順次生成することができる。
【００６８】
更に、データ処理装置１０によりニューラルネットワークシステムを構成したので、例えば画像データを高速に処理して、その画像中の特定の部分を認識する等のアプリケーションに有効に適用できる。
【００６９】
（第２実施形態）
以下、第１実施形態と同一部分には同一符号を付して説明を省略し、異なる部分について説明する。第２実施形態はデータ処理装置を、畳込み処理後の画像サイズが変わらないように、画像データにパディングを行う場合に対応させたものである。例えば図２４に示すように、先頭の４ビットのピクセルをそれぞれ２回読出し、それに合わせてＥＮ信号は２ビット幅で生成出力する。これにより、図示しないＲＤ中継部１２Ｐが、図２５に示すように、５ビットの通常画素Ｄの両端に、１ビットのパディング画素Ｐをそれぞれ追加する。
【００７０】
尚、パディング画素を例えばデータ「０」に固定して、つまりＰ＝０として所謂ゼロパディングを行っても良いし、同じ通常画素Ｄを複数回読み出すことで、つまりＰ＝Ｄとしてパディングする所謂近傍拡張を行っても良い。
【００７１】
また、図２６は異なる例であるが、データＰ０，０〜Ｐ7，３に対し、信号ｐｉｘｅｌ＿ｓｋｉｐの値「１」で近傍拡張によりパディングし、前処理を行った場合である。
図２７に示す基準ＥＮ生成部４１ｃは、図２４に示すタイミングチャートに対応する基準ＥＮ信号を生成するもので、第１実施形態の構成に、加算器４２〜４４，乗算器４５，カウンタ４６，比較ロジック部４７〜５０，ＮＯＲゲート５１及びＯＲゲート５２を加えている。
【００７２】
信号ｐｉｘｅｌ＿ｓｋｉｐ，信号ｐａｄ＿ｓｉｚｅは、それぞれ加算器４２，４３により「１」が加算されて乗算器４５に入力される。信号ｐａｄ＿ｓｉｚｅは、比較ロジック部５０の入力端子ｉｎ０にも入力される。信号ｄａｔａ＿ｅｎａｂｌｅは、カウンタ４６の入力端子ｕｐにも与えられている。信号ｉｎ＿ｉｍａｇｅ＿ｗｉｄｔｈは、それぞれ加算器４４により乗算器４５の乗算結果と加算され、比較ロジック部４９の入力端子ｉｎ１に入力される。
【００７３】
加算器４３の加算結果は、比較ロジック部４７の入力端子ｉｎ１にも入力される。カウンタ４６の出力端子ｏｕｔは、比較ロジック部４７，４９の入力端子ｉｎ０，比較ロジック部４８の入力端子ｉｎ１に接続されている。比較ロジック部４７は、入力端子ｉｎ０の値を入力端子ｉｎ１の値で割った剰余を出力端子ｏｕｔに出力する。その出力結果は、比較ロジック部５０の入力端子ｉｎ１にも入力される。
【００７４】
比較ロジック部４８，４９は、入力端子ｉｎ０の値が入力端子ｉｎ１の値よりも大きい場合に出力端子ｏｕｔに「１」を出力する。比較ロジック部４８，４９の出力端子ｏｕｔは、それぞれＮＯＲゲート５１の入力端子に接続されている。比較ロジック部５０は、入力端子ｉｎ０の値が入力端子ｉｎ１の値よりも小さい場合に出力端子ｏｕｔに「１」を出力する。その出力結果は、ＯＲゲート５２の入力端子の一方に入力される。ＯＲゲート５２の入力端子の他方は、ＮＯＲゲート５１の出力端子に接続されている。そして、ＮＯＲゲート５１の出力端子は、フリップフロップ２５の入力端子に接続されている。
【００７５】
信号ｐａｄ＿ｓｉｚｅの値はパディングデータの個別サイズを示し、信号ｉｎ＿ｉｍａｇｅ＿ｗｉｄｔｈの値はパディングデータの全体サイズを示す。図２４に示す例では、
ｉｎ＿ｉｍａｇｅ＿ｗｉｄｔｈ＝８
ｐｉｘｅｌ＿ｓｋｉｐ＝３
ｐａｄ＿ｓｉｚｅ＝１
となる。
【００７６】
以上のように第２実施形態によれば、ＲＤ読出し中継部１２Ｐは、対応する演算ブロック１１が処理単位とするデータ列の両端に位置するデータを複数ビット連続して出力するパディング処理を行い、基準ＥＮ生成部４１ｃは、基準ＥＮ信号がアクティブとなる期間を、処理対象とするデータが出力される期間に応じて可変設定する。このように構成すれば、ＲＤ読出し中継部１２Ｐは、基準ＥＮ信号又はＥＮ信号に従ってパディング処理を行うことが可能になる。
【００７７】
（第３実施形態）
第３実施形態は、外部メモリ１８における画像データの配置が、図２８に示すように、
アドレス０：データＡ〜Ｄの繰り返し
アドレス１：データＥ〜Ｈの繰り返し
アドレス２：データＩ〜Ｌの繰り返し
アドレス３：データＭ〜Ｐの繰り返し
アドレス４：データＡ〜Ｄの繰り返し
…
アドレス７：データＭ〜Ｐの繰り返し
となるように配置されているものとする。このような画像データの処理効率を高めるようにデータ処理装置５１を構成する。
【００７８】
図２９に示すように、１６個の演算処理ユニット１６（Ａ）〜１６（Ｐ）及び対応するインタフェース部１５（Ａ）〜１５（Ｐ）を、並列に設ける。ＲＤ中継部１２（Ｄ）と１２（Ｅ）との間，１２（Ｈ）と１２（Ｉ）との間，１２（Ｌ）と１２（Ｍ）との間は接続せず、４分割した演算処理ユニット１６により、それぞれデータを４ビットずつ処理する。演算処理ユニット１６（Ａ）〜１６（Ｄ）は、アドレス０の次はアドレス４にアクセスする。
【００７９】
このように構成すれば、４分割した演算処理ユニット１６が、それぞれアドレス０，１，２，３に１回アクセスするだけで、畳込みの処理対象となるデータを各データ保存部１４に保存することができる。
【００８０】
（第４実施形態）
図３０に示す第４実施形態のＲＤ中継部１２Ａは、第１実施形態のＲＤ中継部１２におけるＥＮ生成部１２ｅをフリップフロップに置き換えたものである。第１実施形態のようにパディングを行わず、ＥＮ信号のハイレベル期間が全て等しくなる場合には、フリップフロップ１２ｅによりクロック同期をとって中継するのみで必要十分である。したがって、ＲＤ中継部１２Ａがより簡単に構成できる。
【００８１】
(その他の実施形態)
畳込み演算の処理対象は、画像データに限ることはない。
データ処理装置によって、必ずしもニューラルネットワークを構成する必要は無い。
本開示は、実施例に準拠して記述されたが、本開示は当該実施例や構造に限定されるものではないと理解される。本開示は、様々な変形例や均等範囲内の変形をも包含する。加えて、様々な組み合わせや形態、さらには、それらに一要素のみ、それ以上、あるいはそれ以下、を含む他の組み合わせや形態をも、本開示の範疇や思想範囲に入るものである。
【符号の説明】
【００８２】
図面中、１０は演算処理装置、１１は演算ブロック、１２はＲＤ中継部、１３はＷＲ中継部、１４はデータ保持部、１８は外部メモリを示す。
【図１】
2018116419.tif 000003
【図２】
2018116419.tif 000004
【図３】
2018116419.tif 000005
【図４】
2018116419.tif 000006
【図５】
2018116419.tif 000007
【図６】
2018116419.tif 000008
【図７】
2018116419.tif 000009
【図８】
2018116419.tif 000010
【図９】
2018116419.tif 000011
【図１０】
2018116419.tif 000012
【図１１】
2018116419.tif 000013
【図１２】
2018116419.tif 000014
【図１３】
2018116419.tif 000015
【図１４】
2018116419.tif 000016
【図１５】
2018116419.tif 000017
【図１６】
2018116419.tif 000018
【図１７】
2018116419.tif 000019
【図１８】
2018116419.tif 000020
【図１９】
2018116419.tif 000021
【図２０】
2018116419.tif 000022
【図２１】
2018116419.tif 000023
【図２２】
2018116419.tif 000024
【図２３】
2018116419.tif 000025
【図２４】
2018116419.tif 000026
【図２５】
2018116419.tif 000027
【図２６】
2018116419.tif 000028
【図２７】
2018116419.tif 000029
【図２８】
2018116419.tif 000030
【図２９】
2018116419.tif 000031
【図３０】
2018116419.tif 000032