(57)【特許請求の範囲】
【請求項１】
階層的に接続された複数の処理層による演算を実行する演算処理装置（１０）であって、
前記演算を実行する複数の演算ブロック（１１）と、
複数の前記演算ブロックとそれぞれ対をなす複数のデータ保持部（１４）と、
複数の前記演算ブロックとそれぞれ対をなす複数のデータ出力部（１３）と、
を備え、
複数の前記演算ブロック、複数の前記データ保持部、複数の前記データ出力部は、それぞれ下位側から上位側に向かって列状に配列されており、
最も下位側の前記データ出力部が出力するデータを保持する冗長データ保持部（１９）をさらに備え、
複数の前記演算ブロックは、下位側から上位側に向かって演算結果データを順次累積し、
前記データ出力部は、対をなす前記演算ブロックが生成する演算結果データを対をなす前記データ保持部に出力、または、累積された演算結果データを対をなす前記データ保持部および当該データ保持部よりも下位側の前記データ保持部に出力し、
最も下位側の前記演算ブロックは、前記冗長データ保持部に保持されているデータを演算結果データに加算する演算処理装置。
【請求項２】
複数の前記データ保持部が直接アクセス可能な外部メモリ（１８）をさらに備える請求項１に記載の演算処理装置。
【請求項３】
前記演算ブロックは、入力されるデータに含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成し、
前記外部メモリは、前記データ保持部がアクセスするアドレスを、次の式［１］または式［２］により決定する請求項２に記載の演算処理装置。
Ａ［ｎ］＝ａ［ｎ］＋ｍ×ｄ・・・・・［１］
Ａ［ｎ］＝ａ［０］＋ｍ×ｄ・・・・・［２］
ｎ：データ保持部の番号
Ａ［ｎ］：ｎ番目のデータ保持部がアクセスするアドレス
ａ［ｎ］：ｎ番目のデータ保持部のオフセットアドレス
ｍ：演算ブロックが生成する特徴マップの番号
ｄ：演算ブロックが生成する特徴マップのデータサイズ
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置に関する。
【背景技術】
【０００２】
従来より、複数の処理層が階層的に接続されたニューラルネットワークによる演算を実行する演算処理装置が考えられている。特に画像認識を行う演算処理装置においては、いわゆる畳み込みニューラルネットワーク（ＣＮＮ：Convolutional Neural Network）が中核的な存在となっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５１８４８２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、この種の演算処理装置においては、演算処理層の階層数の増加や演算処理の複雑化に対応するために、複数の演算ブロックと複数のメモリを搭載し、例えば１つの演算ブロックに対し複数のメモリを接続し、また、１つのメモリに対し複数の演算ブロックを接続することが考えられている。この構成によれば、１つの演算ブロックが複数のメモリにデータを書き込むことができ、また、１つのメモリから複数の演算ブロックにデータを読み込ませることができるので、演算処理層の階層数の増加や演算処理の複雑化に対応して演算処理を効率的に行うことができる。しかし、複数の演算ブロックと複数のメモリとを接続する配線が複雑化し、これに伴う処理速度の低下や、演算処理装置の大型化が懸念される。
【０００５】
そこで、本発明は、複数の演算ブロックと複数のメモリを搭載することにより演算処理の効率化を図るようにした演算処理装置において、複数の演算ブロックと複数のメモリとを接続する配線の複雑化を抑えることができ、処理速度の低下や装置の大型化を回避することができる構成を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る演算処理装置は、階層的に接続された複数の処理層による演算を実行する演算処理装置であって、前記演算を実行する複数の演算ブロックと、複数の前記演算ブロックとそれぞれ対をなす複数のデータ保持部と、複数の前記演算ブロックとそれぞれ対をなす複数のデータ出力部と、を備える。複数の前記演算ブロック、複数の前記データ保持部、複数の前記データ出力部は、それぞれ下位側から上位側に向かって列状に配列されている。複数の前記演算ブロックは、下位側から上位側に向かって演算結果データを順次累積する。前記データ出力部は、対をなす前記演算ブロックが生成する演算結果データを対をなす前記データ保持部に出力、または、累積された演算結果データを対をなす前記データ保持部および当該データ保持部よりも下位側の前記データ保持部に出力する。
【０００７】
また、本発明に係る演算処理装置は、階層的に接続された複数の処理層による演算を実行する演算処理装置であって、前記演算を実行する複数の演算ブロックと、複数の前記演算ブロックとそれぞれ対をなす複数のデータ保持部と、複数の前記演算ブロックとそれぞれ対をなす複数のデータ出力部と、を備える。複数の前記演算ブロック、複数の前記データ保持部、複数の前記データ出力部は、それぞれ下位側から上位側に向かって列状に配列されている。前記データ出力部は、対をなす前記データ保持部が保持しているデータを対をなす前記演算ブロックに出力、または、対をなす前記データ保持部が保持しているデータを対をなす前記演算ブロックおよび当該演算ブロックよりも上位側の前記演算ブロックに出力する。
【０００８】
本発明に係る演算処理装置によれば、データ出力部による選択処理により、１つの演算ブロックの演算結果データを複数のデータ保持部に書き込むことが可能である。また、本発明に係る演算処理装置によれば、データ出力部による選択処理により、１つのデータ保持部が保持しているデータを複数の演算ブロックに分配することが可能である。この構成によれば、複数の演算ブロックと複数のデータ保持部とを接続する配線の複雑化を抑えつつも、複数の演算ブロックと複数のデータ保持部との間でデータの読み書きを効率的に行うことができ、処理速度の低下や装置の大型化を回避することができる。
【図面の簡単な説明】
【０００９】
【図１】畳み込みニューラルネットワークの構成例を概念的に示す図
【図２】中間層における演算処理の流れを視覚的に示す図（その１）
【図３】中間層における演算処理の流れを視覚的に示す図（その２）
【図４】特徴量抽出処理に用いられる一般的な演算式および関数を示す図
【図５】本実施形態に係る演算処理装置の構成例を概略的に示すブロック図
【図６】演算ブロックの構成例を概略的に示すブロック図
【図７】演算処理装置の動作例を概略的に示すブロック図（その１）
【図８】演算処理装置の動作例を概略的に示すブロック図（その２）
【図９】演算処理装置の動作例を概略的に示すブロック図（その３）
【図１０】演算処理装置の動作例を概略的に示すブロック図（その４）
【図１１】データ保持部がアクセスする外部メモリのアドレスの決定例を示す図（その１）
【図１２】データ保持部がアクセスする外部メモリのアドレスの決定例を示す図（その２）
【発明を実施するための形態】
【００１０】
以下、演算処理装置の一実施形態について図面を参照しながら説明する。
（ニューラルネットワーク）
図１には、詳しくは後述する演算処理装置１０に適用されるニューラルネットワーク、この場合、畳み込みニューラルネットワークの構成を概念的に示している。畳み込みニューラルネットワークＮは、入力データである画像データＤ１から所定の形状やパターンを認識する画像認識技術に応用されるものであり、中間層Ｎａと全結合層Ｎｂとを有する。中間層Ｎａは、複数の特徴量抽出処理層Ｎａ１，Ｎａ２・・・が階層的に接続された構成である。各特徴量抽出処理層Ｎａ１，Ｎａ２・・・は、それぞれ畳み込み層Ｃおよびプーリング層Ｐを備える。
【００１１】
次に、中間層Ｎａにおける処理の流れについて説明する。図２に例示するように、第１層目の特徴量抽出処理層Ｎａ１では、演算処理装置は、入力される画像データＤ１を例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して周知の特徴量抽出処理を施すことにより入力画像に含まれる複数の特徴量を抽出する。なお、第１層目の特徴量抽出処理層Ｎａ１では、例えば水平方向に延びる線状の特徴量や斜め方向に延びる線状の特徴量などといった比較的シンプルな単独の特徴量を抽出する。このとき、演算処理装置は、入力画像に含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成する。
【００１２】
第２層目の特徴量抽出処理層Ｎａ２では、演算処理装置は、前階層の特徴量抽出処理層Ｎａ１から入力される入力データを例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して周知の特徴量抽出処理を施すことにより入力画像に含まれる複数の特徴量を抽出する。なお、第２層目の特徴量抽出処理層Ｎａ２では、第１層目の特徴量抽出処理層Ｎａ１で抽出された複数の特徴量の空間的な位置関係などを考慮しながら統合させることで、より高次元の複合的な特徴量を抽出する。このとき、演算処理装置は、入力画像に含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成する。
【００１３】
第３層目の特徴量抽出処理層Ｎａ３では、演算処理装置は、前階層の特徴量抽出処理層Ｎａ２から入力される入力データを例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して周知の特徴量抽出処理を施すことにより入力画像に含まれる複数の特徴量を抽出する。なお、第３層目の特徴量抽出処理層Ｎａ３では、第２層目の特徴量抽出処理層Ｎａ２で抽出された複数の特徴量の空間的な位置関係などを考慮しながら統合させることで、より高次元の複合的な特徴量を抽出する。このとき、演算処理装置は、入力画像に含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成する。このように、複数の特徴量抽出処理層による特徴量の抽出処理を繰り返すことで、演算処理装置は、画像データＤ１に含まれる検出対象物体の画像認識を行う。
【００１４】
演算処理装置は、中間層Ｎａにおいて複数の特徴量抽出処理層Ｎａ１，Ｎａ２，Ｎａ３・・・による処理を繰り返すことで入力画像データＤ１に含まれる種々の特徴量を高次元で抽出していく。そして、演算処理装置は、中間層Ｎａの処理により得られた結果を中間演算結果データとして全結合層Ｎｂに出力する。
【００１５】
全結合層Ｎｂは、中間層Ｎａから得られる複数の中間演算結果データを結合して最終的な演算結果データを出力する。即ち、全結合層Ｎｂは、中間層Ｎａから得られる複数の中間演算結果データを結合し、さらに、その結合結果に対して重み係数を異ならせながら積和演算を行うことにより、最終的な演算結果データ、即ち、入力データである画像データＤ１に含まれる検出対象物を認識した画像データを出力する。このとき、積和演算による演算結果の値が大きい部分が検出対象物の一部または全部として認識される。
【００１６】
次に、演算処理装置による特徴量抽出処理の流れについて説明する。図３に例示するように、演算処理装置は、前階層の特徴量抽出処理層から入力される入力データＤｎを所定サイズ、この場合、図にてハッチングで示す３×３画素ごとのフィルタサイズにより走査する。なお、画素サイズは、３×３画素に限られず、例えば５×５画素など適宜変更することができる。
【００１７】
そして、演算処理装置は、走査したデータに対して、それぞれ周知の畳み込み演算を行う。そして、演算処理装置は、畳み込み演算後のデータに対して周知の活性化処理を行い、畳み込み層Ｃの出力とする。そして、演算処理装置は、畳み込み層Ｃの出力データＣｎに対して、所定サイズ、この場合、２×２画素ごとに周知のプーリング処理を行い、プーリング層Ｐの出力とする。そして、演算処理装置は、プーリング層Ｐの出力データＰｎを次の階層の特徴量抽出処理層に出力する。なお、画素サイズは、２×２画素に限られず適宜変更することができる。
【００１８】
図４には、畳み込み演算処理に用いられる畳み込み関数、活性化処理に用いられる関数、プーリング処理に用いられる関数の一般的な例を示している。即ち、畳み込み関数Ｙｉｊは、直前の層の出力Ｘｉｊに学習により得られる重み係数Ｗｐ，ｑを乗算した値を累積する関数となっている。なお、「Ｎ」は１サイクルの畳み込み演算処理により処理される画素サイズを示す。即ち、例えば１演算サイクルの画素サイズが「３×３」画素である場合、Ｎの値は「２」である。また、畳み込み関数Ｙｉｊは、累積値に所定のバイアス値を加算する関数としてもよい。また、畳み込み関数は、全結合処理にも対応し得る積和演算が可能な関数であれば、種々の関数を採用することができる。また、活性化処理には、周知のロジスティックジグモイド関数やＲｅＬＵ関数（Rectified Linear Units）などが用いられる。また、プーリング処理には、入力されるデータの最大値を出力する周知の最大プーリング関数や、入力されるデータの平均値を出力する周知の平均プーリング関数などが用いられる。
【００１９】
上述した畳み込みニューラルネットワークＮによれば、コンボルーション層Ｃによる処理およびプーリング層Ｐによる処理が繰り返されることにより、より高次元の特徴量の抽出が可能となる。次に、この畳み込みニューラルネットワークＮを適用した演算処理装置に係る実施形態について説明する。
【００２０】
（一実施形態）
図５に例示する演算処理装置１０は、複数の演算ブロック１１、複数の中継部１２，１３、複数のデータ保持部１４、複数のインタフェース１５などを備える。演算処理装置１０は、１つの演算ブロック１１、２つの中継部１２，１３、１つのデータ保持部１４により１つの演算処理ユニット１６を構成している。そして、演算処理装置１０は、複数の演算処理ユニット１６を下流側から上流側に向けて列状に配列した構成となっている。なお、説明の便宜上、図の下側を下流側、図の上側を上流側と定義する。また、演算処理ユニット１６は、それぞれインタフェース１５を介してインターコネクト部１７に接続されている。インターコネクト部１７は、演算処理装置１０の外部に設けられた外部メモリ１８に接続されている。
【００２１】
図６に例示するように、演算ブロック１１は、それぞれ、畳み込み演算処理部１１ａ、累積処理部１１ｂ、活性化処理部１１ｃ、プーリング処理部１１ｄなどを備えている。これらの処理部は、例えば回路などのハードウェアにより構成してもよいし、ソフトウェアにより構成してもよいし、ハードウェアとソフトウェアの組み合わせにより構成してもよい。畳み込み演算処理部１１ａは、前階層から入力される入力データに対して周知の畳み込み演算処理を実行して、その処理結果データを累積処理部１１ｂに出力する。
【００２２】
累積処理部１１ｂは、例えば加算器などで構成されている。累積処理部１１ｂは、下位側の演算ブロック１１の累積処理部１１ｂからデータが入力される場合には、そのデータを、自身と同じ演算ブロック１１の畳み込み演算処理部１１ａから入力されるデータに加算する。これにより、複数の演算ブロック１１は、それぞれの演算ブロック１１の畳み込み演算処理部１１ａによる演算結果データを、下位側から上位側に向かって順次累積することが可能となっている。
【００２３】
累積処理部１１ｂは、下位側の演算ブロック１１からデータが入力されない場合には、自身と同じ演算ブロック１１の畳み込み演算処理部１１ａから入力されるデータを活性化処理部１１ｃに出力する。また、累積処理部１１ｂは、下位側の演算ブロック１１からデータが入力される場合には、自身と同じ演算ブロック１１の畳み込み演算処理部１１ａから入力されるデータに下位側の演算ブロック１１から入力されるデータを加算した累積データを活性化処理部１１ｃに出力する。
【００２４】
活性化処理部１１ｃは、累積処理部１１ｂから入力されるデータに対して周知の活性化処理を実行して、その処理結果データをプーリング処理部１１ｄに出力する。プーリング処理部１１ｄは、活性化処理部１１ｃによる処理結果データに対して周知のプーリング処理を実行して、その処理結果データを出力する。
【００２５】
中継部１２は、データ保持部１４から演算ブロック１１にデータを出力するためのデータ出力部の一例であり、図示しないマルチプレクサ回路やフリップフロップ回路などを備えている。中継部１２は、自身と同じ演算処理ユニット１６のデータ保持部１４から入力されるデータを、自身と同じ演算処理ユニット１６の演算ブロック１１に出力することが可能である。また、中継部１２は、自身と同じ演算処理ユニット１６のデータ保持部１４から入力されるデータ、および、自身よりも下位側の中継部１２から入力されるデータのうち何れか一方を選択し、その選択したデータを、自身と同じ演算処理ユニット１６の演算ブロック１１に出力することが可能である。
【００２６】
中継部１３は、演算ブロック１１からデータ保持部１４にデータを出力するためのデータ出力部の一例であり、図示しないマルチプレクサ回路やフリップフロップ回路などを備えている。中継部１３は、自身と同じ演算処理ユニット１６の演算ブロック１１から入力されるデータを、自身と同じ演算処理ユニット１６のデータ保持部１４に出力することが可能である。また、中継部１３は、自身と同じ演算処理ユニット１６の演算ブロック１１から入力されるデータ、および、自身よりも上位側の中継部１３から入力されるデータのうち何れか一方を選択し、その選択したデータを、自身と同じ演算処理ユニット１６のデータ保持部１４に出力することが可能である。
【００２７】
データ保持部１４は、いわゆる内部メモリとして機能するものであり、現階層における演算処理時に入力される入力データ、つまり演算結果データ、および、次階層における演算処理時に出力する出力データを一時的に保持するものである。データ保持部１４は、それぞれ２つのバッファ１４ａ，１４ｂを備える。また、データ保持部１４は、それぞれ図示しないスイッチング機能部を備える。スイッチング機能部は、バッファ１４ａ，１４ｂを、演算ブロック１１へのデータ出力用および演算ブロック１１からのデータ入力用に切り換える機能を有する。
【００２８】
即ち、スイッチング機能部は、例えば、バッファ１４ａをデータ出力用として機能させる場合にはバッファ１４ｂをデータ入力用として機能させるように切り換える。また、スイッチング機能部は、バッファ１４ａをデータ入力用として機能させる場合にはバッファ１４ｂをデータ出力用として機能させるように切り換える。
【００２９】
データ保持部１４は、現階層における演算処理時に入力される入力データ、つまり演算結果データを、データ入力用に切り換えられているバッファ１４ａあるいはバッファ１４ｂに保持する。そして、データ保持部１４は、次回層の演算処理時には、現階層の演算処理時においてデータ入力用に切り換えられていたバッファ１４ａあるいはバッファ１４ｂをデータ出力用に切り換え、そのバッファに保持されているデータを、演算ブロック１１に出力する。これにより、データ保持部１４は、現階層の演算処理時における演算結果データを外部メモリ１８に退避させなくとも、演算処理装置１０内部において、現階層の演算結果データを次階層に送ることができる。
【００３０】
外部メモリ１８は、例えばＤｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ−ＳＤＲＡＭなどで構成される大規模記憶媒体であり、入力画像データＤ１や、演算ブロック１１による演算結果データなどを記憶可能である。外部メモリ１８は、この場合、インターコネクト部１７を介して複数のインタフェース１５、換言すれば複数の演算処理ユニット１６に接続されている。インターコネクト部１７は、外部メモリ１８から読み出されるデータを各演算処理ユニット１６に振り分ける機能を有する。また、インターコネクト部１７は、各演算処理ユニット１６から外部メモリ１８に書き出されるデータを外部メモリ１８に集約する機能を有する。
【００３１】
演算処理装置１０は、さらに、冗長データ保持部１９を備える。冗長データ保持部１９は、データ保持部１４と同様に２つのバッファ１９ａ，１９ｂを備える。これらバッファ１９ａ,１９ｂの機能は、上述したバッファ１４ａ，１４ｂと同様である。冗長データ保持部１９は、最も下位側の中継部１３が出力するデータを、最も下位側のデータ保持部１４と冗長に保持する。そして、最も下位側の演算ブロック１１は、冗長データ保持部１４に保持されているデータを、自身が生成する演算結果データに加算することが可能となっている。
【００３２】
次に、演算処理装置１０の動作例について説明する。即ち、図７に例示するように、複数の演算ブロック１１による演算結果データを累積して処理する場合には、矢印Ａ１で示すように、最も上位側の中継部１３は、自身と同じ演算処理ユニット１６の演算ブロック１１から入力されるデータ、つまり累積データを選択して、自身と同じ演算処理ユニット１６のデータ保持部１４に出力する。また、最上位の中継部１３を除く他の中継部１３は、自身よりも上位側の中継部１３から入力されるデータ、つまり累積データを選択して、自身と同じ演算処理ユニット１６のデータ保持部１４に出力する。
【００３３】
また、図８に例示するように、複数の演算ブロック１１による演算結果データを累積せずにパラレルに処理する場合には、矢印Ａ２で示すように、中継部１３は、それぞれ、自身と同じ演算処理ユニット１６の演算ブロック１１から入力されるデータを選択して、自身と同じ演算処理ユニット１６のデータ保持部１４に出力する。
【００３４】
また、図９に例示するように、１つのデータを複数の演算ブロック１１により分散して処理する場合には、矢印Ａ３で示すように、最も下位側の中継部１２は、自身と同じ演算処理ユニット１６のデータ保持部１４から入力されるデータを選択して、自身と同じ演算処理ユニット１６の演算ブロック１１に出力する。また、最下位の中継部１２を除く他の中継部１２は、自身よりも下位側の中継部１２から入力されるデータを選択して、自身と同じ演算処理ユニット１６の演算ブロック１１に出力する。
【００３５】
また、図１０に例示するように、複数の演算ブロック１１により処理を分散せずにパラレルに処理する場合には、矢印Ａ４で示すように、中継部１２は、それぞれ、自身と同じ演算処理ユニット１６のデータ保持部１４から入力されるデータを選択して、自身と同じ演算処理ユニット１６の演算ブロック１１に出力する。
【００３６】
演算処理装置１０によれば、１つの演算ブロック１１、２つの中継部１２，１３、１つのデータ保持部１４により１つの演算処理ユニット１６を構成している。そして、中継部１３は、同じ演算処理ユニット１６において対をなす演算ブロック１１が生成する演算結果データを、同じ演算処理ユニット１６において対をなすデータ保持部１４に出力することが可能である。また、中継部１３は、複数の演算ブロック１１により累積された演算結果データを、同じ演算処理ユニット１６において対をなすデータ保持部１４および当該データ保持部１４よりも下位側のデータ保持部１４に出力することが可能である。
【００３７】
また、演算処理装置１０によれば、中継部１２は、同じ演算処理ユニット１６において対をなすデータ保持部１４が保持しているデータを、同じ演算処理ユニット１６において対をなす演算ブロック１１に出力することが可能である。また、中継部１２は、同じ演算処理ユニット１６において対をなすデータ保持部１４が保持しているデータを、同じ演算処理ユニット１６において対をなす演算ブロック１１および当該演算ブロック１１よりも上位側の演算ブロック１１に出力することが可能である。
【００３８】
即ち、演算処理装置１０によれば、中継部１３による選択処理により、１つの演算ブロック１１の演算結果データを複数のデータ保持部１４に書き込むことが可能である。また、演算処理装置１０によれば、中継部１２による選択処理により、１つのデータ保持部１４が保持しているデータを複数の演算ブロック１１に分配することが可能である。この構成によれば、複数の演算ブロック１１と複数のデータ保持部１４とを接続する配線の複雑化を抑えつつも、複数の演算ブロック１１と複数のデータ保持部１４との間でデータの読み書きを効率的に行うことができ、処理速度の低下や装置の大型化を回避することができる。
【００３９】
また、演算処理装置１０によれば、冗長データ保持部１９は、最も下位側の中継部１３が出力するデータを、最も下位側のデータ保持部１４と冗長的に保持する。即ち、冗長データ保持部１９は、最も下位側のデータ保持部１４と同じデータを保持する。そして、最も下位側の演算ブロック１１は、冗長データ保持部１９に保持されているデータを読み込んで自身の演算結果データに加算することが可能である。
【００４０】
この構成によれば、例えば、ある処理階層において演算するデータの数が演算ブロック１１の数を超えていて、１度の演算サイクルで全てのデータに対し演算を行えない場合に、まず、演算ブロック１１の数分のデータに対して演算処理を行い、その演算結果を冗長データ保持部１９に保持しておく。そして、演算ブロック１１の数分の次のデータに対して演算処理を行う場合に、冗長データ保持部１９に保持されているデータを読み出して累積加算することができる。従って、演算ブロック１１の数以上のデータ、つまり特徴マップデータを処理する場合であっても、演算ブロック１１の数分ずつに分割して得られた演算処理結果を順次累積加算していくことで、全てのデータに対するトータルの演算処理結果を得ることができる。
【００４１】
また、演算処理装置１０によれば、複数のデータ保持部１４が直接アクセス可能な外部メモリ１８を備える。この構成によれば、格納するデータサイズがバッファ１４ａ，１４ｂの容量を超えている場合に、そのデータを外部メモリ１８に退避させることができ、大規模なデータサイズのデータに対する演算処理に対応することができる。
【００４２】
さらに、演算処理装置１０は、データ保持部１４と外部メモリ１８とのアクセス方式としてＤＭＡ方式（Direct Memory Access）を採用している。そのため、データ保持部１４と外部メモリ１８との間のデータの書き込み処理および読み出し処理を高速で行うことができる。
【００４３】
このとき、外部メモリ１８は、データ保持部１４がアクセスするアドレスを次の式［１］または式［２］により決定するように構成するとよい。
Ａ［ｎ］＝ａ［ｎ］＋ｍ×ｄ・・・・・［１］
Ａ［ｎ］＝ａ［０］＋ｍ×ｄ・・・・・［２］
ｎ：データ保持部の番号
Ａ［ｎ］：ｎ番目のデータ保持部がアクセスするアドレス
ａ［ｎ］：ｎ番目のデータ保持部のオフセットアドレス
ｍ：演算ブロックが生成する特徴マップの番号
ｄ：演算ブロックが生成する特徴マップのデータサイズ
【００４４】
式［１］によりアドレスを決定する場合、図１１に例示するように、例えば１番目、つまり最上位のデータ保持部１４がアクセスするアドレスＡ［１］は、１番目のデータ保持部１４のオフセットアドレスａ［１］を「１０００」、演算ブロック１１が生成する特徴マップの番号を「１」、演算ブロック１１が生成する特徴マップ１のデータサイズを「３００」バイトとすると、
Ａ［１］＝「１０００」＋「１」×「３００」
＝１３００
となる。
【００４５】
また、例えば２番目、つまり最上位から２番目のデータ保持部１４がアクセスするアドレスＡ［２］は、２番目のデータ保持部１４のオフセットアドレスａ［２］を「２０００」、演算ブロック１１が生成する特徴マップの番号を「１」、演算ブロック１１が生成する特徴マップ１のデータサイズを「３００」バイトとすると、
Ａ［２］＝「２０００」＋「１」×「３００」
＝２３００
となる。
【００４６】
即ち、式［１］によりアドレスを決定する場合、複数のデータ保持部１４は、それぞれに割り当てられたアドレスにアクセスすることとなる。換言すれば、外部メモリ１８のメモリ領域を複数のデータ保持部１４により分割して利用する形態となる。
【００４７】
また、式［２］によりアドレスを決定する場合、図１２に例示するように、例えば１番目、つまり最上位のデータ保持部１４がアクセスするアドレスＡ［１］は、予め設定されているａ［０］を「１０００」、演算ブロック１１が生成する特徴マップの番号を「１」、演算ブロック１１が生成する特徴マップ１のデータサイズを「３００」バイトとすると、
Ａ［１］＝「１０００」＋「１」×「３００」
＝１３００
となる。
【００４８】
また、例えば２番目、つまり最上位から２番目のデータ保持部１４がアクセスするアドレスＡ［２］も、ａ［０］を「１０００」、演算ブロック１１が生成する特徴マップの番号を「１」、演算ブロック１１が生成する特徴マップ１のデータサイズを「３００」バイトとして、
Ａ［２］＝「１０００」＋「１」×「３００」
＝１３００
となる。
【００４９】
即ち、式［２］によりアドレスを決定する場合、全てのデータ保持部１４が同じアドレス「１３００」にアクセスすることとなる。換言すれば、外部メモリ１８のメモリ領域を複数のデータ保持部１４により共有する形態となる。
なお、本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の実施形態に適用可能である。
【符号の説明】
【００５０】
図面中、１０は演算処理装置、１１は演算ブロック、１２は中継部（データ出力部）、１３は中継部（データ出力部）、１４はデータ保持部、１８は外部メモリ、１９は冗長データ保持部を示す。
【図１】
0006645252.tif 000002
【図２】
0006645252.tif 000003
【図３】
0006645252.tif 000004
【図４】
0006645252.tif 000005
【図５】
0006645252.tif 000006
【図６】
0006645252.tif 000007
【図７】
0006645252.tif 000008
【図８】
0006645252.tif 000009
【図９】
0006645252.tif 000010
【図１０】
0006645252.tif 000011
【図１１】
0006645252.tif 000012
【図１２】
0006645252.tif 000013