JP6631262B2 - 演算処理装置 - Google Patents

演算処理装置 Download PDF

Info

Publication number
JP6631262B2
JP6631262B2 JP2016005236A JP2016005236A JP6631262B2 JP 6631262 B2 JP6631262 B2 JP 6631262B2 JP 2016005236 A JP2016005236 A JP 2016005236A JP 2016005236 A JP2016005236 A JP 2016005236A JP 6631262 B2 JP6631262 B2 JP 6631262B2
Authority
JP
Japan
Prior art keywords
data
arithmetic
arithmetic processing
unit
external memory
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
JP2016005236A
Other languages
English (en)
Other versions
JP2017126203A (ja
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.)
Denso Corp
Original Assignee
Denso Corp
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 Denso Corp filed Critical Denso Corp
Priority to JP2016005236A priority Critical patent/JP6631262B2/ja
Publication of JP2017126203A publication Critical patent/JP2017126203A/ja
Application granted granted Critical
Publication of JP6631262B2 publication Critical patent/JP6631262B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)

Description

本発明は、演算処理装置に関する。
従来より、複数の処理層が階層的に接続されたニューラルネットワークによる演算を実行する演算処理装置が考えられている。特に画像認識を行う演算処理装置においては、いわゆる畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)が中核的な存在となっている。
特許第5184824号公報
この種の演算処理装置において、前階層から演算部に入力される入力データは、外部メモリからバッファを介して先入先出方式により読み出される。また、次階層に出力する出力データは、外部メモリにバッファを介して先入先出方式により書き出される。即ち、従来の演算処理装置では、全ての入力データを外部メモリから読み出し、また、全ての出力データを外部メモリに書き出すため、演算処理の遅延を招いてしまう。
そこで、本発明は、階層的に接続された複数の処理層による演算を実行する演算処理装置において、外部メモリに書き出すデータ量および外部メモリから読み出すデータ量を低減し、演算処理の遅延を抑えることを目的とする。
本発明に係る演算処理装置は、階層的に接続された複数の処理層による演算を実行する演算処理装置であり、前記演算を行う演算部と、前記演算部による演算結果データを格納する外部メモリと、前記演算部から前記外部メモリに書き出すデータ、および、前記外部メモリから前記演算部に読み出すデータを一時的に保持するバッファバッファと、を備える。バッファは、データ保持領域およびリングバッファ領域を有する。バッファは、前記演算部から前記外部メモリにデータを書き出す場合には、当該データの一部を前記データ保持領域に保持し、前記データ保持領域に保持しなかった残りのデータを、前記リングバッファ領域を介して先入先出方式により前記外部メモリに書き出す。また、バッファは、前記外部メモリから前記演算部にデータを読み出す場合には、前記データ保持領域に保持されているデータを前記演算部に読み出し、前記データ保持領域に保持されていない残りのデータを、前記リングバッファ領域を介して先入先出方式により前記演算部に読み出す。
本発明に係る演算処理装置は、前階層から入力される入力データの一部および次階層に出力する出力データの一部を外部メモリではなく、バッファ内部のデータ保持領域に保持する。従って、外部メモリに書き出すデータ量および外部メモリから読み出すデータ量を低減することができ、演算処理の遅延を抑えることができる。
畳み込みニューラルネットワークの構成例を概念的に示す図 中間層における演算処理の流れを視覚的に示す図(その1) 中間層における演算処理の流れを視覚的に示す図(その2) 特徴量抽出処理に用いられる一般的な演算式および関数を示す図 本実施形態に係る演算処理装置の構成例を概略的に示すブロック図 バッファの構成例を概略的に示す図(その1) バッファの構成例を概略的に示す図(その2) 演算処理装置の動作例を示す図(その1) 演算処理装置の動作例を示す図(その2) 演算処理装置の動作例を示す図(その3) 演算処理装置の動作例を示す図(その4) 演算処理装置の動作例を示す図(その5) 演算処理装置によるデータ書き出し処理の一例を示すフローチャート 演算処理装置によるデータ書き出し処理の一例を視覚的に示す図 演算処理装置によるデータ読み出し処理の一例を示すフローチャート 演算処理装置によるデータ読み出し処理の一例を視覚的に示す図 従来技術における読み出しデータ量の変化の一例を示す図 本実施形態における読み出しデータ量の変化の一例を示す図 第2実施形態に係るものであり、異なる階層の演算処理におけるバッファの構成例を示す図 第3実施形態に係るものであり、データ書き出し処理時におけるバッファの構成例を示す図 第3実施形態に係るものであり、データ読み出し処理時におけるバッファの構成例を示す図 第4実施形態に係るものであり、データ書き出し処理時におけるバッファの構成例を示す図 第4実施形態に係るものであり、データ読み出し処理時におけるバッファの構成例を示す図 第5実施形態に係るものであり、演算処理装置の動作例を概略的に示す図 第5実施形態における読み出しデータ量の変化の一例を示す図 第6実施形態に係るバッファの構成例を概略的に示す図
以下、演算処理装置の複数の実施形態について図面を参照しながら説明する。なお、各実施形態において実質的に同一の要素には同一の符号を付し、説明を省略する。
(ニューラルネットワーク)
図1には、詳しくは後述する演算処理装置10に適用されるニューラルネットワーク、この場合、畳み込みニューラルネットワークの構成を概念的に示している。畳み込みニューラルネットワークNは、入力データである画像データD1から所定の形状やパターンを認識する画像認識技術に応用されるものであり、中間層Naと全結合層Nbとを有する。中間層Naは、複数の特徴量抽出処理層Na1,Na2・・・が階層的に接続された構成である。各特徴量抽出処理層Na1,Na2・・・は、それぞれ畳み込み層Cおよびプーリング層Pを備える。
次に、中間層Naにおける処理の流れについて説明する。図2に例示するように、第1層目の特徴量抽出処理層Na1では、演算処理装置は、入力される画像データD1を例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して周知の特徴量抽出処理を施すことにより入力画像に含まれる複数の特徴量を抽出する。なお、第1層目の特徴量抽出処理層Na1では、例えば水平方向に延びる線状の特徴量や斜め方向に延びる線状の特徴量などといった比較的シンプルな単独の特徴量を抽出する。このとき、演算処理装置は、入力画像に含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成する。
第2層目の特徴量抽出処理層Na2では、演算処理装置は、前階層の特徴量抽出処理層Na1から入力される入力データを例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して周知の特徴量抽出処理を施すことにより入力画像に含まれる複数の特徴量を抽出する。なお、第2層目の特徴量抽出処理層Na2では、第1層目の特徴量抽出処理層Na1で抽出された複数の特徴量の空間的な位置関係などを考慮しながら統合させることで、より高次元の複合的な特徴量を抽出する。このとき、演算処理装置は、入力画像に含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成する。
第3層目の特徴量抽出処理層Na3では、演算処理装置は、前階層の特徴量抽出処理層Na2から入力される入力データを例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して周知の特徴量抽出処理を施すことにより入力画像に含まれる複数の特徴量を抽出する。なお、第3層目の特徴量抽出処理層Na3では、第2層目の特徴量抽出処理層Na2で抽出された複数の特徴量の空間的な位置関係などを考慮しながら統合させることで、より高次元の複合的な特徴量を抽出する。このとき、演算処理装置は、入力画像に含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成する。このように、複数の特徴量抽出処理層による特徴量の抽出処理を繰り返すことで、演算処理装置は、画像データD1に含まれる検出対象物体の画像認識を行う。
演算処理装置は、中間層Naにおいて複数の特徴量抽出処理層Na1,Na2,Na3・・・による処理を繰り返すことで入力画像データD1に含まれる種々の特徴量を高次元で抽出していく。そして、演算処理装置は、中間層Naの処理により得られた結果を中間演算結果データとして全結合層Nbに出力する。
全結合層Nbは、中間層Naから得られる複数の中間演算結果データを結合して最終的な演算結果データを出力する。即ち、全結合層Nbは、中間層Naから得られる複数の中間演算結果データを結合し、さらに、その結合結果に対して重み係数を異ならせながら積和演算を行うことにより、最終的な演算結果データ、即ち、入力データである画像データD1に含まれる検出対象物を認識した画像データを出力する。このとき、積和演算による演算結果の値が大きい部分が検出対象物の一部または全部として認識される。
次に、演算処理装置による特徴量抽出処理の流れについて説明する。図3に例示するように、演算処理装置は、前階層の特徴量抽出処理層から入力される入力データDnを所定サイズ、この場合、図にてハッチングで示す3×3画素ごとのフィルタサイズにより走査する。なお、画素サイズは、3×3画素に限られず、例えば5×5画素など適宜変更することができる。
そして、演算処理装置は、走査したデータに対して、それぞれ周知の畳み込み演算を行う。そして、演算処理装置は、畳み込み演算後のデータに対して周知の活性化処理を行い、畳み込み層Cの出力とする。そして、演算処理装置は、畳み込み層Cの出力データCnに対して、所定サイズ、この場合、2×2画素ごとに周知のプーリング処理を行い、プーリング層Pの出力とする。そして、演算処理装置は、プーリング層Pの出力データPnを次の階層の特徴量抽出処理層に出力する。なお、画素サイズは、2×2画素に限られず適宜変更することができる。
図4には、畳み込み演算処理に用いられる畳み込み関数、活性化処理に用いられる関数、プーリング処理に用いられる関数の一般的な例を示している。即ち、畳み込み関数Yijは、直前の層の出力Xijに学習により得られる重み係数Wp,qを乗算した値を累積する関数となっている。なお、「N」は1サイクルの畳み込み演算処理により処理される画素サイズを示す。即ち、例えば1演算サイクルの画素サイズが「3×3」画素である場合、Nの値は「2」である。また、畳み込み関数Yijは、累積値に所定のバイアス値を加算する関数としてもよい。また、畳み込み関数は、全結合処理にも対応し得る積和演算が可能な関数であれば、種々の関数を採用することができる。また、活性化処理には、周知のロジスティックジグモイド関数やReLU関数(Rectified Linear Units)などが用いられる。また、プーリング処理には、入力されるデータの最大値を出力する周知の最大プーリング関数や、入力されるデータの平均値を出力する周知の平均プーリング関数などが用いられる。
上述した畳み込みニューラルネットワークNによれば、コンボルーション層Cによる処理およびプーリング層Pによる処理が繰り返されることにより、より高次元の特徴量の抽出が可能となる。次に、この畳み込みニューラルネットワークNを適用した演算処理装置に係る実施形態について説明する。
(第1実施形態)
図5に例示する演算処理装置10は、演算部11、バッファ12、外部メモリ13などを備える。演算部11は、この場合、複数の演算ブロック11aを備える。演算ブロック11aは、それぞれ、図示しない畳み込み演算処理部、活性化処理部、プーリング処理部などを備えている。畳み込み演算処理部は、前階層から入力される入力データに対して周知の畳み込み演算処理を実行して、その処理結果データを活性化処理部に出力する。活性化処理部は、畳み込み演算処理部による処理結果データに対して周知の活性化処理を実行して、その処理結果データをプーリング処理部に出力する。プーリング処理部は、活性化処理部による処理結果データに対して周知のプーリング処理を実行して、その処理結果データを出力する。
演算部11は、演算ブロック11aにより、前階層から入力される入力データから特徴量を抽出する処理を行って次階層に出力データを出力する。なお、演算部11は、ソフトウェアにより構成してもよいし、ハードウェアにより構成してもよいし、ソフトウェアとハードウェアの組み合わせにより実現してもよい。また、演算部11は、1つの演算ブロック11aを備える構成としてもよい。
バッファ12は、上述した演算部11による演算処理において、前階層から入力される入力データおよび次階層に出力する出力データを一時的に保持するものである。この場合、演算処理装置10は、演算ブロック11aに対応して複数のバッファ12を備えている。バッファ12は、それぞれ、2つのバッファ機能部12a,12bと、2つのスイッチング機能部14を備える。スイッチング機能部14は、バッファ機能部12a,12bを、演算部11へのデータ読み出し用および演算部11からのデータ書き出し用に切り換える機能を有する。即ち、スイッチング機能部14は、例えば、バッファ機能部12aをデータ読み出し用として機能させる場合にはバッファ機能部12bをデータ書き出し用として機能させるように切り換える。また、スイッチング機能部14は、バッファ機能部12aをデータ書き出し用として機能させる場合にはバッファ機能部12bをデータ読み出し用として機能させるように切り換える。
図6に例示するように、バッファ12は、バッファ機能部12a,12bを、それぞれ1つのバッファ領域で構成し、その1つのバッファ領域をデータ保持領域R1とリングバッファ領域R2に分ける構成としてもよい。この場合、バッファ領域とデータ保持領域は連続している。また、図7に例示するように、バッファ12は、バッファ機能部12a,12bを、それぞれ2つのバッファ領域で構成し、一方のバッファ領域をデータ保持領域R1、他方のバッファ領域をリングバッファ領域R2とすることで、データ保持領域R1とリングバッファ領域R2を物理的に分割した構成としてもよい。
外部メモリ13は、例えば、Double−Data−Rate−SDRAMなどで構成される記憶媒体であり、入力画像データD1や、演算部11による演算結果データなどを記憶する。外部メモリ13は、この場合、インターコネクト部15を介して複数のバッファ12に接続されている。インターコネクト部15は、外部メモリ13から演算部11に読み出されるデータを各バッファ12に振り分ける。また、インターコネクト部15は、演算部11から外部メモリ13に複数のバッファ12を介して書き出されるデータを集約する。なお、演算処理装置10が備えるバッファ12が1つである場合は、インターコネクト部15は省略することができる。
演算処理装置10には、外部メモリ13に書き出すデータ量および外部メモリ13から読み出すデータ量を低減して演算処理の遅延を抑えるための工夫が施されている。即ち、図8に例示するように、演算処理装置10は、外部メモリ13に格納されている入力画像データD1を走査して読み込む。このとき、演算処理装置10は、バッファ機能部12a,12bのうち何れか一方、この場合、バッファ機能部12aをデータ読み出し用に切り換え、他方、この場合、バッファ機能部12bをデータ書き出し用に切り換えているものとする。そして、演算処理装置10は、データ読み出し用のバッファ機能部12aのリングバッファ領域R2を介して、入力画像データD1、つまり、入力画像データD1を所定サイズごとに捜査したデータd1[1],d1[2],d1[3],・・・,d1[n]を先入先出方式により演算部11に読み出す。
また、図9に例示するように、演算処理装置10は、演算部11により入力画像データd1[1],d1[2],d1[3],・・・,d1[n]に対し演算処理を実行し、演算結果データd2[1],d2[2],d2[3],・・・,d2[n]を出力する。このとき、演算処理装置10は、出力データd2[1],d2[2],d2[3],・・・,d2[n]の一部を、データ書き出し用のバッファ機能部12bのデータ保持領域R1に格納する。この場合、演算処理装置10は、複数の出力データd2[1],d2[2],d2[3],・・・,d2[n]のうち先頭の出力データd2[1]〜d2[10]をバッファ機能部12bのデータ保持領域R1に格納する。そして、演算処理装置10は、バッファ機能部12bのデータ保持領域R1に保持されていない残りの出力データd2[11],d2[12],d2[13],・・・,d2[n]を、バッファ機能部12bのリングバッファ領域R2を介して先入先出方式により外部メモリ13に書き出す。外部メモリ13に書き出された出力データd2[11],d2[12],d2[13],・・・,d2[n]は、次階層の演算、つまり、入力画像データD2から特徴量を抽出するための入力データとして用いられる。なお、図8に例示したデータ読み出し処理と図9に例示したデータ書き出し処理は、この場合、並列的に行われる。
次に、図10に例示するように、演算処理装置10は、入力画像データD2からの特徴量抽出処理に用いられる入力データd2[1],d2[2],d2[3],・・・,d2[n]を読み出す処理に移行する。このとき、演算処理装置10は、まず、前階層の処理においてデータ書き出し用であったバッファ機能部12bをデータ読み出し用に切り換え、前階層の処理においてデータ読み出し用であったバッファ機能部12aをデータ書き出し用に切り換える。そして、演算処理装置10は、バッファ機能部12bのデータ保持領域R1に格納されているデータd2[1]〜d2[10]を演算部11に読み出す。そして、演算処理装置10は、残りのデータd2[11],d2[12],d2[13],・・・,d2[n]を、バッファ機能部12bのリングバッファ領域R2を介して先入先出方式により演算部11に読み出す。これにより、演算部11には、入力画像データD2からの特徴量抽出処理に必要な全ての入力データd2[1]〜d2[n]が読み込まれる。
また、図11に例示するように、演算処理装置10は、演算部11により入力画像データd2[1],d2[2],d2[3],・・・,d2[n]に対し演算処理を実行し、演算結果データd3[1],d3[2],d3[3],・・・,d3[n]を出力する。このとき、演算処理装置10は、出力データd3[1],d3[2],d3[3],・・・,d3[n]の一部を、データ書き出し用のバッファ機能部12aのデータ保持領域R1に格納する。この場合、演算処理装置10は、複数の出力データd3[1],d3[2],d3[3],・・・,d3[n]のうち先頭の出力データd3[1]〜d3[10]をバッファ機能部12aのデータ保持領域R1に格納する。そして、演算処理装置10は、バッファ機能部12aのデータ保持領域R1に保持されていない残りの出力データd3[11],d3[12],d3[13],・・・,d3[n]を、バッファ機能部12aのリングバッファ保持領域R2を介して先入先出方式により外部メモリ13に書き出す。外部メモリ13に書き出された出力データd3[11],d3[12],d3[13],・・・,d3[n]は、次階層の演算、つまり、入力画像データD3から特徴量を抽出するための入力データとして用いられる。なお、図10に例示したデータ読み出し処理と図11に例示したデータ書き出し処理は、この場合、並列的に行われる。
次に、図12に例示するように、演算処理装置10は、入力画像データD3からの特徴量抽出処理に用いられる入力データd3[1],d3[2],d3[3],・・・,d3[n]を読み出す処理に移行する。このとき、演算処理装置10は、まず、前階層の処理においてデータ書き出し用であったバッファ機能部12aをデータ読み出し用に切り換え、前階層の処理においてデータ読み出し用であったバッファ機能部12bをデータ書き出し用に切り換える。そして、演算処理装置10は、バッファ機能部12aのデータ保持領域R1に格納されているデータd3[1]〜d3[10]を演算部11に読み出す。そして、演算処理装置10は、残りのデータd3[11],d3[12],d3[13],・・・,d3[n]を、バッファ機能部12aのリングバッファ領域R2を介して先入先出方式により演算部11に読み出す。これにより、演算部11には、入力画像データD3からの特徴量抽出処理に必要な全てのデータd3[1]〜d3[n]が読み込まれる。以降、演算処理装置10は、上述した処理を繰り返し実行していく。
以上の通り、演算処理装置10は、次階層に出力する出力データを外部メモリ13に書き出す場合には、その出力データの一部をデータ保持領域に保持し、残りの出力データを外部メモリ13に書き出す。そして、演算処理装置10は、前階層から入力される入力データを外部メモリ13から読み出す場合には、データ保持領域に保持されている入力データの一部を演算部11に読み出し、残りの入力データを外部メモリ13から読み出して演算部11に送る。
次に、演算処理装置10の動作例について説明する。
(データの書き出し処理)
図13に例示するように、演算処理装置10は、データ保持領域に全ての書き出しデータ、つまり、演算部11が出力する全てのデータを保持可能であるか否かを判断する(A1)。演算処理装置10は、演算部11が出力する全てのデータをデータ保持領域に保持可能である場合(A1:YES)には、演算部11が出力するデータをデータ保持領域に順次格納していき(A2)、全てのデータをデータ保持領域に格納すると(A3:YES)、この処理を終了する。
一方、演算処理装置10は、演算部11が出力する全てのデータをデータ保持領域に保持できない場合(A1:NO)には、バッファ12にデータ保持領域が存在するか否かを確認する(A4)。演算処理装置10は、データ保持領域が存在する場合(A4:YES)には、演算部11が出力するデータをデータ保持領域に順次格納していく(A5)。そして、演算処理装置10は、データ保持領域に余裕が無くなると(A6:NO)、その後は、演算部11が出力するデータをリングバッファ領域に順次格納していく(A7)。なお、演算処理装置10は、バッファ12にデータ保持領域が存在しない場合(A4:NO)にも、演算部11が出力するデータをリングバッファ領域に順次格納していく(A7)。
また、演算処理装置10は、演算部11が出力するデータをリングバッファ領域に格納していく処理と並行して、リングバッファ領域に格納したデータを外部メモリ13に順次書き出していく処理も実行する(A7)。即ち、演算処理装置10は、リングバッファ領域に一時的に保持したデータを先入先出方式により外部メモリ13に順次書き出していく。そして、演算処理装置10は、演算部11が出力する全てのデータを外部メモリ13に書き出すと(A8:YES)、この処理を終了する。なお、ステップA8における「全ての出力データ」は、演算部11が出力するデータの一部をデータ保持領域に保持する場合は当該データ保持領域に保持していない全てのデータを意味し、演算部11が出力するデータの一部をデータ保持領域に保持しない場合は演算部11が出力する全ての出力データを意味する。
図14に例示するように、上述のデータの書き出し処理によれば、演算部11が出力するデータは、まず、データ保持領域に格納される。そして、データ保持領域に余裕が無くなると、その後、演算部11が出力するデータは、リングバッファ領域を介して先入先出方式により外部メモリ13に書き出されていく。
(データの読み出し処理)
図15に例示するように、演算処理装置10は、外部メモリ13からデータの読み出しが必要であるか否かを確認する(B1)。即ち、特徴量の抽出処理に必要な全てのデータがデータ保持領域に格納されているのであれば、外部メモリ13からのデータの読み出しは不要である。よって、演算処理装置10は、特徴量の抽出処理に必要な全てのデータがデータ保持領域に格納されているか否かを確認し、外部メモリ13からのデータの読み出しの要否を判断する。演算処理装置10は、外部メモリ13からのデータの読み出しが不要である場合(B1:NO)には、データ保持領域からデータを順次読み出していき(B2)、データ保持領域に保持されている全てのデータを読み出すと(B3:YES)、この処理を終了する。
一方、演算処理装置10は、外部メモリ13からのデータの読み出しが必要である場合(B1:YES)には、データ保持領域にデータが格納されているか否かを確認する(B4)。演算処理装置10は、データ保持領域にデータが格納されている場合(B4:YES)には、データ保持領域からデータを順次読み出していく(B5)。そして、演算処理装置10は、データ保持領域に格納されている全てのデータを読み出すと(B6:YES)、外部メモリ13からのデータの読み出しを開始し、読み出したデータをリングバッファ領域に順次格納していく(B7)。なお、演算処理装置10は、データ保持領域にデータが格納されていない場合(B4:NO)にも、外部メモリ13からのデータの読み出しを開始し、読み出したデータをリングバッファ領域に順次格納していく(B7)。
また、演算処理装置10は、外部メモリ13から読み出したデータをリングバッファ領域に格納していく処理と並行して、リングバッファ領域に格納したデータを演算部11に順次読み出していく処理も実行する(B7)。即ち、演算処理装置10は、外部メモリ13から読み出してリングバッファ領域に一時的に保持したデータを先入先出方式により演算部11に順次読み出していく。そして、演算処理装置10は、特徴量の抽出処理に必要な全てのデータを演算部11に読み出すと(B8:YES)、この処理を終了する。なお、ステップB8における「全ての出力データ」は、特徴量の抽出処理に必要なデータの一部がデータ保持領域に保持されている場合は当該データ保持領域に保持されていない全てのデータを意味し、特徴量の抽出処理に必要なデータの一部がデータ保持領域に保持されていない場合は外部メモリ13から読み出す全てのデータを意味する。
図16に例示するように、上述のデータの読み出し処理によれば、まず、データ保持領域に保持されているデータが演算部11に順次読み出される。そして、データ保持領域に保持されている全てのデータの読み出しが完了すると、その後、外部メモリ13から読み出されたデータがリングバッファ領域を介して先入先出方式により演算部11に読み出されていく。
本実施形態に係る演算処理装置10は、演算部11が出力するデータを外部メモリ13に書き出す場合には、当該データの一部をデータ保持領域に保持する。そして、演算処理装置10は、データ保持領域に保持しなかった残りのデータを先入先出方式により外部メモリ13に書き出す。また、演算処理装置10は、外部メモリ13から演算部11にデータを読み出す場合には、データ保持領域に保持されているデータ、つまり、特徴量の抽出処理に必要なデータの一部を演算部11に読み出す。そして、演算処理装置10は、データ保持領域に保持されていない残りのデータを外部メモリ13から読み出して先入先出方式により演算部11に読み出す。
即ち、演算処理装置10によれば、前階層から入力される入力データの一部および次階層に出力する出力データの一部を外部メモリ13ではなく、バッファ12内部のデータ保持領域に保持するようにした。従って、全ての入力データを外部メモリから読み出し、また、全ての出力データを外部メモリに書き出す従来技術に比べ、外部メモリ13に書き出すデータ量および外部メモリ13から読み出すデータ量を低減することができ、演算処理の遅延を抑えることができる。
即ち、図17に例示する従来技術における読み出しデータのデータ量の変化と図18に例示する本実施形態における読み出しデータのデータ量の変化とを比較すると、第1層目の処理では、時刻T0から、外部メモリからバッファへのデータの読み出しが開始される。そして、時刻T1において、バッファに読み出されたデータ総量が演算処理を実行可能な閾値量L1を超えると、バッファから演算部へのデータの転送が開始される。なお、バッファから演算部へのデータの転送が行われている間も、外部メモリからバッファへのデータの読み出しは継続される。また、入力画像データに対する水平方向への走査が完了すると、不要となったラインのデータは順次消去される。外部メモリからバッファへのデータの読み出し量よりも順次消去されるデータ量が多い場合、バッファに格納されているデータ総量が閾値量L1よりも少なくなり、この場合、演算部11の演算処理が停止する。よって、時刻T1から第1層目の処理の完了時刻である時刻T2においては、演算部11による演算処理が間欠的に行われることとなる。
そして、第2層目の演算処理では、図17に例示する従来技術と図18に例示する本実施形態とで動作が異なってくる。即ち、従来技術では、特徴量の抽出処理に必要な全てのデータを外部メモリから読み出すことから、バッファに読み出されたデータ総量が演算処理を実行可能な閾値量L2を超えるまで、つまり、時刻T3〜T4の間は、演算部11による演算処理を実行することができない。一方、本実施形態では、特徴量の抽出処理に必要な一部のデータを外部メモリ13ではなくバッファ12から読み出すことから、バッファ12に読み出されたデータ総量が閾値量L2を超えるまでの時間を短縮することができる。即ち、本実施形態によれば、第2層目以降の各処理層の特に初期において、外部メモリ13から読み出すデータ量を低減することができ、演算処理の遅延を抑えることができる。
(第2実施形態)
図19に例示するように、本実施形態では、バッファ12は、複数の処理層ごとに、データ保持領域とリングバッファ領域との境界アドレスを変更可能に構成されている。この構成によれば、次階層の演算処理において、前階層の演算処理時よりもリングバッファ領域を大きくすることができる。入力画像データに対する水平方向の1ライン目から4ライン目のデータをデータ保持領域に保持するようにした場合、次階層の演算処理において1ライン目から4ライン目のデータを保持するのに必要なデータ保持領域は、前階層の演算処理において1ライン目から4ライン目のデータを保持するのに必要なデータ保持領域よりも小さくなる。前階層の演算処理におけるプーリング処理によりデータ量が減少するからである。よって、処理層ごとに境界アドレスを調整することで、各処理層において必要な大きさのデータ保持領域を形成し、残りのバッファ資源をリングバッファ領域に割り当てることができ、限りのあるバッファ資源を有効に活用することができる。
なお、バッファ12の各アドレスのデータサイズDは、入力画像データの横幅Wを基準として決めるとよい。即ち、プーリング処理によりデータ量は概ね1/2ほどとなる。そのため、次階層の演算処理において、データ保持領域やリングバッファ領域のデータサイズDを1/2にしても、必要なライン数のデータ、この場合、1ライン目から4ライン目のデータを十分に格納することができる。また、データ保持領域の深さLを1/2にしても、必要なライン数のデータを十分に格納することができる。そして、前階層の半分のサイズのデータ保持領域により次階層の演算処理の初期に必要なデータを保持することができ、メモリ資源を有効に活用することができる。必要なライン数は、演算処理においてフィルタを走査するのに最低限必要なライン数であり、具体的には、演算処理におけるフィルタサイズに依存する。例えば、フィルタサイズを3×3画素、マージンを1とした場合、必要なライン数はフィルタサイズ「3」+マージン「1」により「4」ラインとなる。なお、マージンは、例えば演算処理システムにおける読み出し処理の遅延などを考慮して適宜変更して設定することができる。
(第3実施形態)
本実施形態は、データの読み出し処理時において、データ保持領域からデータを読み出した後に、空になったデータ保持領域をリングバッファ領域として用いる実施形態である。即ち、図20には、演算部11からのデータの書き出し処理時におけるバッファ12の構成例を示している。このデータ書き出し処理時において、リングバッファ領域は「0x0000」〜「0x0007」、データ保持領域は「0x0008」〜「0x000F」に設定されている。そして、状態1では、書き込みアドレスWaの初期値がデータ保持領域の先頭アドレス「0x0008」に設定され、データの書き込みが開始される。そして、状態2に示すように、データが書き込まれるたびに書き込みアドレスWaが増加され、データがデータ保持領域に順次書き込まれていく。そして、状態3に示すように、書き込みアドレスWaがデータ保持領域の最終アドレス「0x000F」まで移行すると、状態4に示すように、書き込みアドレスWaがリングバッファ領域の先頭アドレス「0x0000」に移行する。そして、データが書き込まれるたびに書き込みアドレスWaが増加され、データがリングバッファ領域に順次書き込まれていく。そして、状態5に示すように、読み出しアドレスRaが設定され、データが外部メモリ13に読み出されるたびに読み出しアドレスRaが増加される。これにより、リングバッファ領域において、書き込みアドレスWaに演算部11からのデータが書き込まれるとともに読み出しアドレスRaから外部メモリ13にデータが読み出される。これにより、いわゆる先入先出方式によりリングバッファ領域のデータが外部メモリ13に順次読み出されていく。なお、データ保持領域の各アドレスには、それぞれ1回だけデータが書き込まれる。
図21には、演算部11へのデータの読み出し処理時におけるバッファ12の構成例を示している。このデータ読み出し処理時において、リングバッファ領域は「0x0000〜0x000F」に設定されている。即ち、前階層においてデータ保持領域として機能した領域も含めバッファ12の全体がリングバッファ領域として設定されている。そして、状態1では、読み出しアドレスRaの初期値が、前階層においてデータ保持領域の先頭アドレスであった「0X0008」に設定され、データの読み出しが開始される。そして、状態2に示すように、データが読み出されるたびに読み出しアドレスRaが増加され、データが演算部11に順次読み出されていく。そして、状態3に示すように、前階層においてデータ保持領域の最終アドレスであった「0x000F」のデータの読み出しが行われる前に、リングバッファ領域の先頭アドレス「0X0000」から外部メモリ13からのデータの書き込みが行われる。そして、データが書き込まれるたびに書き込みアドレスWaが増加され、データがリングバッファ領域に順次書き込まれていく。そして、状態4に示すように、「0x000F」のデータの読み出しが完了すると、読み出しアドレスRaがリングバッファ領域の先頭アドレス「0x0000」に移行する。そして、データが読み出されるたびに読み出しアドレスRaが増加され、データがリングバッファ領域から順次読み出されていく。そして、状態5に示すように、リングバッファ領域において、書き込みアドレスWaに外部メモリ13からデータが書き込まれるとともに読み出しアドレスRaから演算部11にデータが順次読み出される。これにより、いわゆる先入先出方式によりリングバッファ領域のデータが演算部11に読み出されていく。
以上の通り、本実施形態によれば、データの読み出し処理時において空になったデータ保持領域もリングバッファ領域として用いることで、限りあるメモリ資源を有効に活用することができる。
(第4実施形態)
本実施形態は、各処理層における演算処理により生成される複数の特徴マップにそれぞれ対応付けてデータ保持領域を分ける実施形態である。即ち、図22に例示するように、演算部11からのデータの書き出し処理時において、データ保持領域には、演算部11が出力するデータが特徴マップごとに格納されていく。即ち、特徴マップM[0]のデータは、データ保持領域の先頭アドレスに格納され、以降、特徴マップM[1],M[2]のデータが順次格納されていき、特徴マップM[3]のデータがデータ保持領域の最終アドレスに格納される。なお、データ保持領域に格納できない特徴マップM[4]以降のデータが存在する場合には、リングバッファ領域を介して先入先出方式により外部メモリ13に書き出す。
一方、演算部11へのデータの読み出し処理時においては、図23に例示するように、データ保持領域の先頭アドレスから特徴マップM[0],M[1],M[2],M[3]のデータを順次読み出していく。そして、データ保持領域のデータを全て読み出すと、リングバッファ領域を介して外部メモリ13から残りの特徴マップデータを順次読み出していく。なお、この場合も、空になったデータ保持領域は、リングバッファ領域として利用するように構成するとよい。
本実施形態によれば、各処理層における演算処理により複数の特徴マップが生成される場合であっても、外部メモリ13に書き出すデータ量および外部メモリ13から読み出すデータ量を低減することができ、演算処理の遅延を抑えることができる。
(第5実施形態)
図24に例示するように、演算処理装置10は、前階層の演算処理が完了する前に、次階層の演算処理に必要なデータを外部メモリ13から演算部11に読み出す処理を開始する。本実施形態によれば、図25に例示するように、次階層の演算処理の初期において、演算部11に読み込まれるデータ量を十分に確保することができる。よって、データ量の不足による演算処理の停止を回避することができ、特に時刻T3以降に示すように、演算処理を停止させることなく連続的に行うことができる。よって、演算処理時間の短縮を図ることができる。
(第6実施形態)
図26に例示するように、バッファ12において、リングバッファ領域のアドレス数は、8個、つまり、2の3乗個で設定されている。この領域構成において、リングバッファ領域の最終アドレス「0x0007」つまり2進数で表現すると「0111」と、リングバッファ領域を越えた最初のアドレス「0x0008」つまり2進数で表現すると「1000」との論理積を計算することにより、リングバッファ領域の先頭アドレスを特定してみる。即ち、「0111」と「1000」との論理積を計算すると「0000」つまり16進数で表現すると「0x0000」が得られる。本実施形態によれば、リングバッファ領域のアドレス数は2のN乗で設定されているので、2進数の論理積演算によりリングバッファ領域の先頭アドレスを容易に特定することができる。そのため、例えばアドレス「0x0006」,「0x0007」,「0x0008」のデータを読み込む場合には、これらのアドレスをそれぞれ「0111」でマスクすることにより、「0x0006」,「0x0007」,「0x0000」を得ることができ、「0x0008」のデータをリングバッファ領域の「0x0000」から読み出せばよいことを容易に求めることができる。よって、データを読み込む際に読み出しアドレスがリングバッファ領域を越えたか否かの判断などを不要とすることができ、処理の簡素化を図ることができる。また、2進数の論理積演算を実行する回路は比較的簡素であり、回路構成の複雑化を回避することができる。なお、Nは0以上の整数である。
(その他の実施形態)
本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の実施形態に適用可能である。
例えば、データ保持領域には、演算部11から出力するデータの先頭ではなく、途中や末尾のデータを保持するようにしてもよい。また、データ保持領域に保持するデータ数量は、適宜変更して実施することができる。なお、データ保持領域に保持するデータ数量を多くするほど、演算処理の遅延を一層抑えることができる。
図面中、10は演算処理装置、11は演算部、12はバッファ、13は外部メモリを示す。

Claims (6)

  1. 階層的に接続された複数の処理層による演算を実行する演算処理装置(10)であって、
    前記演算を行う演算部(11)と、
    前記演算部による演算結果データを格納する外部メモリ(13)と、
    前記演算部から前記外部メモリに書き出すデータ、および、前記外部メモリから前記演算部に読み出すデータを一時的に保持するバッファ(12)と、
    を備え、
    前記バッファは、データ保持領域およびリングバッファ領域を有し、
    前記演算部から前記外部メモリにデータを書き出す場合には、当該データの一部を前記データ保持領域に保持し、前記データ保持領域に保持しなかった残りのデータを、前記リングバッファ領域を介して先入先出方式により前記外部メモリに書き出し、
    前記外部メモリから前記演算部にデータを読み出す場合には、前記データ保持領域に保持されているデータを前記演算部に読み出し、前記データ保持領域に保持されていない残りのデータを、前記リングバッファ領域を介して先入先出方式により前記演算部に読み出す演算処理装置。
  2. 前記バッファは、前記処理層ごとに、前記データ保持領域と前記リングバッファ領域との境界を変更可能である請求項1に記載の演算処理装置。
  3. 前記演算部は、入力されるデータに含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成し、
    前記データ保持領域は、複数の前記特徴マップにそれぞれ対応する複数の領域に分けられている請求項1または2に記載の演算処理装置。
  4. 前階層の演算処理が完了する前に、次階層の演算処理に必要なデータを前記外部メモリから前記演算部に読み出す処理を開始する請求項1から3の何れか1項に記載の演算処理装置。
  5. 前記リングバッファ領域のアドレス数は2のN乗(Nは0以上の整数)で設定されている請求項1から4の何れか1項に記載の演算処理装置。
  6. 前記演算部は、複数の前記処理層が階層的に接続されたニューラルネットワークによる演算を行う請求項1から5の何れか1項に記載の演算処理装置。
JP2016005236A 2016-01-14 2016-01-14 演算処理装置 Active JP6631262B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016005236A JP6631262B2 (ja) 2016-01-14 2016-01-14 演算処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016005236A JP6631262B2 (ja) 2016-01-14 2016-01-14 演算処理装置

Publications (2)

Publication Number Publication Date
JP2017126203A JP2017126203A (ja) 2017-07-20
JP6631262B2 true JP6631262B2 (ja) 2020-01-15

Family

ID=59364526

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016005236A Active JP6631262B2 (ja) 2016-01-14 2016-01-14 演算処理装置

Country Status (1)

Country Link
JP (1) JP6631262B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6906622B2 (ja) * 2017-10-18 2021-07-21 三菱電機株式会社 演算回路および演算方法
JP2019207458A (ja) 2018-05-28 2019-12-05 ルネサスエレクトロニクス株式会社 半導体装置及びメモリアクセス設定方法
JP6970827B2 (ja) * 2018-06-25 2021-11-24 オリンパス株式会社 演算処理装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330761A (ja) * 1999-05-18 2000-11-30 Canon Inc リングバッファ制御装置およびリングバッファ制御方法
JP2005101795A (ja) * 2003-09-24 2005-04-14 Matsushita Electric Ind Co Ltd 画像縮小方法
TWI237806B (en) * 2004-11-03 2005-08-11 Sunplus Technology Co Ltd Audio decoding system with ring buffer and method thereof
JP2008102694A (ja) * 2006-10-18 2008-05-01 Futaba Corp 出力表示機器
JP5184824B2 (ja) * 2007-06-15 2013-04-17 キヤノン株式会社 演算処理装置及び方法

Also Published As

Publication number Publication date
JP2017126203A (ja) 2017-07-20

Similar Documents

Publication Publication Date Title
JP6645252B2 (ja) 演算処理装置
US20180253641A1 (en) Arithmetic processing apparatus and control method therefor
US8391306B2 (en) Calculation processing apparatus and method
JP5101993B2 (ja) 情報処理装置および情報処理方法
JP6631262B2 (ja) 演算処理装置
EP2165311A1 (en) Information processing method and apparatus, program, and storage medium
CN109886395B (zh) 一种面向多核图像处理卷积神经网络的数据读取方法
US7467361B2 (en) Pipeline high-level synthesis system and method
JP6414458B2 (ja) 演算処理装置
JPS63316566A (ja) 画像入力装置
US10225425B2 (en) Information processing apparatus and method for controlling the same
JP5602532B2 (ja) 画像処理装置および画像処理方法
WO2020073801A1 (zh) 一种3d图像处理中数据读写方法及系统、存储介质及终端
JP2020042774A (ja) 人工知能推論演算装置
JP6195342B2 (ja) 情報処理装置およびメモリアクセス制御方法
JP5738618B2 (ja) データ処理装置
US7180519B2 (en) Image processing apparatus and image process method
US9818045B2 (en) Apparatus and method for detecting a feature in an image
US20180167643A1 (en) Encoding device, encoding method, decoding device, decoding method, and generation method
JP3519205B2 (ja) Dmaコントローラ
JP2018116419A (ja) データ処理装置及びニューラルネットワークシステム
US6271851B1 (en) Z-buffer pre-test for 3D graphic performance enhancement
JP5097788B2 (ja) データ処理装置およびデータ処理プログラム
JP2017192045A (ja) 画像処理装置
CN111506518B (zh) 一种数据存储控制方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181203

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191016

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191125

R151 Written notification of patent or utility model registration

Ref document number: 6631262

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250