(57)【要約】【課題】小規模で所望の演算処理を実現することのできる演算処理装置を提供する。【解決手段】演算処理装置は、同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行する第１演算部と、前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割するデータ分割部と、を備える。【選択図】図９
2020123125.tif 000002
【特許請求の範囲】
【請求項１】
同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行する第１演算部と、
前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割するデータ分割部と、
を備える演算処理装置。
【請求項２】
前記第１最大チャネル数以下に分割されたデータについて、前記第１演算部に前記畳み込み演算を実行させる第１演算制御部、
を備える請求項１に記載の演算処理装置。
【請求項３】
前記第１演算制御部は、
前記第１最大チャネル数以下に分割されたデータについての前記畳み込み演算の結果を加算する演算を前記第１演算部に実行させる、
請求項２に記載の演算処理装置。
【請求項４】
同時に実行可能な畳み込み演算の第２最大チャネル数以下のデータについて前記畳み込み演算を実行する第２演算部であって、入力されるデータのチャネル数が前記第２最大チャネル数を超える場合、前記データ分割部によって前記第２最大チャネル数以下に分割されたデータのうちの一部または全部について、前記畳み込み演算を実行する第２演算部、
を備える請求項１から請求項３の何れか一項に記載の演算処理装置。
【請求項５】
前記第２最大チャネル数以下に分割されたデータについて、前記第２演算部に前記畳み込み演算を実行させる第２演算制御部、
請求項４に記載の演算処理装置。
【請求項６】
前記第２演算制御部は、
前記第２最大チャネル数以下に分割されたデータについての前記畳み込み演算の結果を加算する演算を前記第２演算部に実行させる、
請求項５に記載の演算処理装置。
【請求項７】
前記第１演算部は、ハードウェアによって構成される、
請求項１から請求項６の何れか一項に記載の演算処理装置。
【請求項８】
前記ハードウェアは、
ＡＳＩＣ、ＦＰＧＡ、ＰＬＡまたはＰＬＤである、
請求項７に記載の演算処理装置。
【請求項９】
同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行することと、
前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割することと、
を含む演算処理方法。
【請求項１０】
同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行する第１演算部、及び、前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割するデータ分割部のそれぞれをハードウェアとして構成させるコンフィグレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、演算処理方法及びコンフィグレーションプログラムに関する。
【背景技術】
【０００２】
ＡＩ（Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ）の進歩に伴い、そのＡＩを実現するための畳み込み演算を実行する演算装置の高性能化が求められている。
特許文献１には、関連する技術として、畳み込みニューラルネットワークによる演算を実行する装置に関する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−０９９７０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、演算装置の高性能化の１つとして演算装置の小型化があり、所望の演算を実行できかつ小型な演算装置が求められている。
【０００５】
本発明の各態様は、上記の課題を解決することのできる演算処理装置、演算処理方法及びコンフィグレーションプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明の一態様によれば、演算処理装置は、同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行する第１演算部と、前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割するデータ分割部と、を備える。
【０００７】
上記目的を達成するために、本発明の別の態様によれば、演算処理方法は、同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行することと、前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割することと、を含む。
【０００８】
上記目的を達成するために、本発明の別の態様によれば、コンフィグレーションプログラムは、同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行する第１演算部、及び、前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割するデータ分割部のそれぞれをハードウェアとして構成させる。
【発明の効果】
【０００９】
本発明の各態様によれば、小規模で所望の演算処理を実現することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１実施形態による演算処理装置の構成を示す図である。
【図２】本発明の第１実施形態による演算部の構成を示す図である。
【図３】本発明の第１実施形態によるシーケンサの構成を示す図である。
【図４】本発明の第１実施形態におけるデータの分割を説明するための図である。
【図５】本発明の第１実施形態による演算処理装置の処理フローを示す図である。
【図６】本発明の第１実施形態による演算処理装置の動作を数値例を用いて説明するための図である。
【図７】本発明の第２実施形態による演算部の構成を示す図である。
【図８】本発明の第２実施形態による演算処理装置の動作を説明するための図である。
【図９】本発明の実施形態による最小構成の演算処理装置を示す図である。
【図１０】本発明の別の実施形態による演算処理装置の構成を示す図である。
【図１１】少なくとも１つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら実施形態について詳しく説明する。
＜第１実施形態＞
本発明の第１実施形態による演算処理装置１は、複数チャネルのデータを分割し、分割したデータについて畳み込み演算を行う装置である。演算処理装置１は、例えば、ニューラルネットワークである。演算処理装置１は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＰＬＡ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ａｒｒａｙ）、ＰＬＤ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）などのハードウェアによって構成される。
【００１２】
演算処理装置１は、図１に示すように、演算部１０、シーケンサ２０、記憶部３０を備える。
演算部１０は、畳み込み演算を実行する。演算部１０は、図２に示すように、第１演算部１０１を備える。
【００１３】
第１演算部１０１は、同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて畳み込み演算を実行する。例えば、第１演算部１０１は、積和演算を行う演算部を含み、その演算部を用いて畳み込み演算を実行する。
また、第１演算部１０１は、第１最大チャネル数以下のデータについて実行された畳み込み演算の結果を加算する演算部を含み、その演算部を用いて畳み込み演算の結果の総和を演算する。
【００１４】
シーケンサ２０は、演算部１０が行う演算を制御する。演算処理装置１が行う処理の内容は設計段階ですでに決定されている。そのため、設計段階で決定されている処理を演算部１０に実行させるように、シーケンサ２０は設計される。シーケンサ２０は、図３に示すように、データ分割部２０１、演算制御部２０２（第１演算制御部の一例）を備える。
【００１５】
データ分割部２０１は、第１演算部１０１に入力される畳み込み演算の対象であるデータが第１最大チャネル数を超える場合、畳み込み演算の対象であるデータを第１最大チャネル数以下のデータに分割する。
例えば、第１演算部１０１に入力されるデータがＸ列×Ｙ行×２Ｃチャネルであるものとする（なお、Ｘは列の個数を表す数、Ｙは行の個数を表す数、２Ｃはチャネル数である）。また、第１演算部１０１の同時に処理できる第１最大チャネル数がＣ（２Ｃの半分）であるものとする。この場合、データ分割部２０１は、図４の（Ａ）の部分に示すように、第１演算部１０１に入力されるデータを、１からＣまでのチャネルに対応するＸ列×Ｙ行×Ｃチャネルのデータと、（Ｃ＋１）から２Ｃまでのチャネルに対応するＸ列×Ｙ行×Ｃチャネルのデータの２つに分割する。
【００１６】
また、例えば、第１演算部１０１に入力されるデータがＸ列×Ｙ行×（２Ｃ−１）チャネルであるものとする。また、第１演算部１０１の同時に処理できる第１最大チャネル数がＣであるものとする。この場合、データ分割部２０１は、図４の（Ｂ）の部分に示すように、第１演算部１０１に入力されるデータを、１からＣまでのチャネルに対応するＸ列×Ｙ行×Ｃチャネルのデータと、（Ｃ＋１）から（２Ｃ−１）までのチャネルに対応するＸ列×Ｙ行×（Ｃ−１）チャネルのデータの２つに分割する。
【００１７】
演算制御部２０２は、データ分割部２０１によって第１最大チャネル数以下に分割されたデータについて、第１演算部１０１に畳み込み演算を実行させる。
例えば、演算制御部２０２は、第１最大チャネル数以下に分割されたデータと、予め用意されているフィルタのデータとを第１演算部１０１に入力する。演算制御部２０２は、第１演算部１０１に、入力されたそれらのデータについて積和演算させることで、分割されたデータそれぞれについての畳み込み演算が実現される。
【００１８】
また、演算制御部２０２は、第１演算部１０１に、畳み込み演算の結果の総和を演算させる。演算制御部２０２が、第１演算部１０１に、畳み込み演算の結果のすべてを加算させることで、分割されたデータ全体についての畳み込み演算の結果を演算することができる。
【００１９】
記憶部３０は、演算処理装置１が行う処理に必要な種々の情報を記憶する。例えば、記憶部３０は、第１演算部１０１が畳み込み演算を実行するときに使用するファイルのデータを記憶する。
【００２０】
次に、演算処理装置１の動作について説明する。
ここでは、設計段階で第１演算部１０１に入力されるデータを第１最大チャネル数以下に分割することが決定されたものとする。また、ここでは、演算処理装置１が分割前のデータ全体についての畳み込み演算の結果を得る動作について、図５に示す処理フローを用いて説明する。
なお、以下の説明において、演算処理装置１の動作が煩雑になるのを防ぐために、シーケンサ２０による制御を省略し、第１演算部１０１が自立して動作しているように表現する場合がある。しかしながら、そのような場合であっても、実際には第１演算部１０１は、設計段階で決定されている処理を行うようにシーケンサ２０によって制御されている。
【００２１】
データ分割部２０１は、第１演算部１０１に入力される畳み込み演算の対象である第１最大チャネル数を超えるデータを第１最大チャネル数以下のデータに分割する（ステップＳ１）。データ分割部２０１は、分割したデータを記憶部３０に書き込む。
【００２２】
演算制御部２０２は、データ分割部２０１によって第１最大チャネル数以下に分割されたデータについて、第１演算部１０１に畳み込み演算を実行させる（ステップＳ２）。
具体的には、演算制御部２０２は、第１最大チャネル数以下に分割されたデータと、予め用意されているフィルタのデータとを第１演算部１０１に入力する。第１演算部１０１は、入力されたそれらのデータについて積和演算を実行する。これにより、分割されたデータそれぞれについての畳み込み演算が実現される。
【００２３】
演算制御部２０２は、第１演算部１０１に、畳み込み演算の結果の総和を演算させる（ステップＳ３）。第１演算部１０１は、畳み込み演算の結果のすべてを加算する。これにより、分割されたデータ全体についての畳み込み演算の結果を演算することができる。
【００２４】
（演算処理装置の動作の具体例）
演算処理装置１が行う処理の内容は設計段階で決定される。また、第１演算部１０１が同時に演算できるデータのチャネル数や各演算において対象とするデータのチャネル数などは、設計段階ですでに決定される。そのため、ここでは、第１演算部１０１が同時に演算できるデータのチャネル数や各演算において対象とするデータのチャネル数などについて、具体的な数値を挙げて演算処理装置１の動作の具体例示す。なお、ここで示す数値は一例であり、本発明の第１実施形態による演算処理装置１をこの数値のものに限定するものではない。
【００２５】
ここでは、演算処理装置１は、３つの層（第１層、第２層、第３層）のそれぞれに対応する畳み込み演算を行い、演算処理装置１に入力されるデータを４つに分類するものとする。また、第１層については３チャネルのデータについての畳み込み演算、第２層については１６チャネルのデータについての畳み込み演算、第３層については６４チャネルのデータについての畳み込み演算が、それぞれ実行されるものとする。また、第１演算部１０１は、積和演算を行う演算部を３２個、加算を行う演算部を１個備えるものとする。
【００２６】
なお、第１層については３チャネルのデータについて畳み込み演算を行うことにより、第２層について行う１６チャネルの畳み込み演算の入力データを生成する。そのため、第１層について行う畳み込み演算に用いるフィルタとしては、３×１６＝４８種類のフィルタのデータが予め用意されて記憶部３０に書き込まれる。
【００２７】
また、第２層については１６チャネルのデータについて畳み込み演算を行うことにより、第３層について行う６４チャネルの畳み込み演算の入力データを生成する。そのため、第２層について行う畳み込み演算に用いるフィルタとしては、１６×６４＝１０２４種類のフィルタのデータが予め用意されて記憶部３０に書き込まれる。
【００２８】
また、第３層については６４チャネルのデータについて畳み込み演算を行うことにより、演算処理装置１に入力されるデータを４つに分類する。そのため、第３層について行う畳み込み演算に用いるフィルタとしては、６４×４＝２５６種類のフィルタのデータが予め用意されて記憶部３０に書き込まれる。
【００２９】
図６は、演算処理装置１が行う処理におけるデータの流れの概要を示した図である。図６において、第１演算部１０１は、ＭＵＬＡＤＤ×３２で示されている。なお、ＭＵＬＡＤＤは、１チャネルのデータについて積和演算を実行する演算部である。入力１は、３チャネルのデータの畳み込みを行うときに、第１演算部１０１に入力されるデータである。また、入力２は、１６チャネルのデータの畳み込みを行うときに、第１演算部１０１に入力されるデータである。また、６４チャネルのデータの畳み込みを行うときに、第１演算部１０１に入力されるデータである。
【００３０】
まず、第１層について第１演算部１０１が行う処理を考える。ここで、３２個のＭＵＬＡＤＤのそれぞれは、ＭＵＬＡＤＤ１〜３２のそれぞれに対応するものとする。
ＭＵＬＡＤＤ１は、３チャネルのデータのうちの１つとそのチャネルに対応するフィルタのデータを入力する。また、ＭＵＬＡＤＤ２は、３チャネルのデータのうちの別の１つとそのチャネルに対応するフィルタのデータを入力する。また、ＭＵＬＡＤＤ３は、３チャネルのデータのうちの残りの１つとそのチャネルに対応するフィルタのデータを入力する。ＭＵＬＡＤＤ４〜３２は、出力がゼロになるダミーデータが入力される。そして、ＭＵＬＡＤＤ１〜３２全体として１つの演算結果を出力する。
ＭＵＬＡＤＤ１〜３２は、これと同様の演算を残りのフィルタのデータについても実行する。すなわち、ＭＵＬＡＤＤ１〜３２は、４８種類のフィルタのデータを用いて１６チャネルのデータを出力する。これら１６チャネルの出力データが図６における出力１である。
【００３１】
次に、第２層について第１演算部１０１が行う処理を考える。
第１演算部１０１には、出力１のデータそのものが入力される。すなわち、入力２は、出力１と同一である。
ＭＵＬＡＤＤ１は、１６チャネルのデータのうちの１つとそのチャネルに対応するフィルタのデータを入力する。また、ＭＵＬＡＤＤ２は、１６チャネルのデータのうちの別の１つとそのチャネルに対応するフィルタのデータを入力する。同様に、ＭＵＬＡＤＤ３〜１６のそれぞれは、１６チャネルのデータのうちのそれぞれ別の１つとそのチャネルに対応するフィルタのデータを入力する。また、ＭＵＬＡＤＤ１７〜３２は、出力がゼロになるダミーデータが入力される。そして、ＭＵＬＡＤＤ１〜３２全体として１つの演算結果を出力する。
ＭＵＬＡＤＤ１〜３２は、これと同様の演算を残りのフィルタのデータについても実行する。すなわち、ＭＵＬＡＤＤ１〜３２は、１０２４種類のフィルタのデータを用いて６４チャネルのデータを出力する。これら６４チャネルの出力データが図６における出力２である。
【００３２】
次に、第３層について第１演算部１０１が行う処理を考える。
第１演算部１０１には、出力２のデータそのものが入力される。すなわち、入力３は、出力２と同一である。ただし、出力２（すなわち、入力３）は、６４チャネルのデータである。そのため、データ分割部２０１は、６４チャネルのデータを３２チャネルのデータである入力Ａと入力Ｂとに分割する。
【００３３】
そして、ＭＵＬＡＤＤ１〜３２には、分割された入力Ａと入力Ｂのうち、まず、入力Ａが入力される。
ＭＵＬＡＤＤ１は、入力された３２チャネルの入力Ａのデータのうちの１つとそのチャネルに対応するフィルタのデータを入力する。また、ＭＵＬＡＤＤ２は、３２チャネルの入力Ａのデータのうちの別の１つとそのチャネルに対応するフィルタのデータを入力する。同様に、ＭＵＬＡＤＤ３〜３２のそれぞれは、３２チャネルの入力Ａのデータのうちのそれぞれ別の１つとそのチャネルに対応するフィルタのデータを入力する。そして、ＭＵＬＡＤＤ１〜３２全体として１つの演算結果を出力する。
ＭＵＬＡＤＤ１〜３２は、これと同様の演算を残りのフィルタのデータについても実行する。すなわち、ＭＵＬＡＤＤ１〜３２は、２５６種類のフィルタのデータを用いて４種類のデータ１Ａ、２Ａ、３Ａ、４Ａを出力する。これら４種類の出力データが図６における出力Ａである。
【００３４】
次に、ＭＵＬＡＤＤ１〜３２には、分割された入力Ａと入力Ｂのうち、入力Ｂが入力される。
ＭＵＬＡＤＤ１は、入力Ｂについても、入力Ａと同様の処理を行う。すなわち、ＭＵＬＡＤＤ１は、入力された３２チャネルの入力Ｂのデータのうちの１つとそのチャネルに対応するフィルタのデータを入力する。また、ＭＵＬＡＤＤ２は、３２チャネルの入力Ｂのデータのうちの別の１つとそのチャネルに対応するフィルタのデータを入力する。同様に、ＭＵＬＡＤＤ３〜３２のそれぞれは、３２チャネルの入力Ｂのデータのうちのそれぞれ別の１つとそのチャネルに対応するフィルタのデータを入力する。そして、ＭＵＬＡＤＤ１〜３２全体として１つの演算結果を出力する。
ＭＵＬＡＤＤ１〜３２は、これと同様の演算を残りのフィルタのデータについても実行する。すなわち、ＭＵＬＡＤＤ１〜３２は、２５６種類のフィルタのデータを用いて、１Ａ、２Ａ、３Ａ、４Ａのそれぞれに対応する４種類のデータ１Ｂ、２Ｂ、３Ｂ、４Ｂを出力する。これら４種類の出力データが図６における出力Ｂである。
そして、第１演算部１０１は、１Ａと１Ｂの加算、２Ａと２Ｂの加算、３Ａと３Ｂの加算、４Ａと４Ｂの加算のそれぞれを演算して、４つの演算結果を示す出力３を出力する。これら４つの演算結果が４つの分類に対応する。そのため、演算処理装置１は、出力３を出力することにより、演算処理装置１に入力されるデータを４つに分類したことになる。
【００３５】
以上、本発明の第１実施形態による演算処理装置１について説明した。演算処理装置１において、第１演算部１０１は、同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて畳み込み演算を実行する。データ分割部２０１は、畳み込み演算の対象であるデータが第１最大チャネル数を超える場合、畳み込み演算の対象であるデータを第１最大チャネル数以下のデータに分割する。
このように、複数チャネルの入力データをチャネルについて分割し、データが小さくなった分割後の複数の入力データについて畳み込み演算を行う。そうすることで、本発明の第１実施形態による演算処理装置１は、入力データ全体について同時に畳み込み演算を行う演算部を有する演算処理装置に比べて、（特に、第１演算部１０１の）規模を小さくすることができる。
【００３６】
＜第２実施形態＞
本発明の第２実施形態による演算処理装置１は、複数チャネルのデータを分割し、分割したデータについて畳み込み演算を行う装置である。本発明の第２実施形態による演算処理装置１は、本発明の第１実施形態による演算処理装置１と同様に、ＡＳＩＣ、ＦＰＧＡ、ＰＬＡ、ＰＬＤなどのハードウェアによって構成される。ただし、本発明の第１実施形態による演算処理装置１では、第１演算部１０１が実行した演算結果を、第１演算部１０１自身の入力とした。しかしながら、本発明の第２実施形態による演算処理装置１は、第１演算部１０１に加えてさらに第２演算部１０２を備える。そして、この場合、シーケンサ２０の演算制御部２０２（第１演算制御部の一例、第２演算制御部の一例）は、第１演算部１０１が実行した演算結果を新たな入力データとして、第２演算部１０２に畳み込み演算を実行させるものである。
【００３７】
演算処理装置１は、本発明の第１実施形態による演算処理装置１と同様に、演算部１０、シーケンサ２０、記憶部３０を備える。
演算部１０は、図７に示すように、第１演算部１０１、第２演算部１０２を備える。
【００３８】
第２演算部１０２は、同時に実行可能な畳み込み演算の第２最大チャネル数以下のデータについて畳み込み演算を実行する。
また、データ分割部２０１は、第２演算部１０２に入力されるチャネル数が第２最大チャネル数を超える場合、データを第２最大チャネル数以下のデータに分割する。そして、第２演算部１０２は、第２最大チャネル数以下に分割された複数データのうちの一部または全部について、畳み込み演算を実行する。
【００３９】
演算制御部２０２は、第２演算部１０２に入力されるチャネル数が第２最大チャネル数を超える場合、データ分割部２０１に、データを第２最大チャネル数以下のデータに分割させる。また、演算制御部２０２は、第２最大チャネル数以下に分割された複数データのうちの一部または全部について、第２演算部１０２に畳み込み演算を実行させる。
また、演算制御部２０２は、第２最大チャネル数以下に分割された複数データについての畳み込み演算の結果を加算する演算を第２演算部１０２に実行させる。
【００４０】
以下、第２演算部１０２が第２最大チャネル数以下に分割された複数データのうちの一部または全部について畳み込み演算を実行する、演算処理装置１の動作の具体例について説明する。
【００４１】
（演算処理装置の動作の具体例）
一例として、第１層については３チャネルのデータについての畳み込み演算、第２層については１６チャネルのデータについての畳み込み演算、第３層については３２チャネルのデータについての畳み込み演算が、それぞれ実行される場合を考える。
なお、この演算を、本発明の第１の実施形態による演算処理装置１のように、１つのＭＵＬＡＤＤ、例えば、ＭＵＬＡＤＤ１〜３２から成る１つのＭＵＬＡＤＤ×３２によって実行する場合、図８の（Ａ）の部分に示すように、入力データを入力するごとに実行する第１層及び第２層についての演算において未使用のＭＵＬＡＤＤが多く無駄な演算部が多くなる。
そこで、ＭＵＬＡＤＤ１〜１６から成るＭＵＬＡＤＤ×１６Ａと、ＭＵＬＡＤＤ１７〜３２から成るＭＵＬＡＤＤ×１６Ｂとによって、１つのＭＵＬＡＤＤ×３２と同様の入力についての演算を実行する場合を考える。
ここで、第１演算部１０１がＭＵＬＡＤＤ×１６Ａであり、第２演算部１０２がＭＵＬＡＤＤ×１６Ｂであるものとする。そして、ＭＵＬＡＤＤ×１６Ａが実行した演算結果を新たな入力データとして、ＭＵＬＡＤＤ×１６Ｂに入力したとする。この場合、ＭＵＬＡＤＤ×１６ＡとＭＵＬＡＤＤ×１６Ｂとを用いて、演算のタイミングを考慮することで、図８の（Ｂ）の部分に示すように、パイプライン方式のように、異なる処理を同時に実行することができる。
つまり、シーケンサ２０の演算制御部２０２は、第１演算部１０１が実行した演算結果を新たな入力データとして、第２演算部１０２に畳み込み演算を実行させることによって、効率的に演算を実行することができる。
【００４２】
以上、本発明の第２実施形態による演算処理装置１について説明した。演算処理装置１において、第２演算部１０２は、同時に実行可能な畳み込み演算の第２最大チャネル数以下のデータについて畳み込み演算を実行する。また、第２演算部１０２は、入力されるデータのチャネル数が第２最大チャネル数を超える場合、データ分割部２０１によって第２最大チャネル数以下に分割された複数データのうちの一部または全部について、畳み込み演算を実行する。また、演算制御部２０２は、第２最大チャネル数以下に分割された複数データについて、第２演算部１０２に畳み込み演算を実行させる。また、演算制御部２０２は、第２最大チャネル数以下に分割された複数データについての畳み込み演算の結果を加算する演算を第２演算部１０２に実行させる。
このように、第２演算部１０２は、第２最大チャネル数以下に分割された複数データのうちの一部または全部について、畳み込み演算を実行する。そうすることで、本発明の第２実施形態による演算処理装置１は、１つの演算部（例えば、第１演算部１０１）のみが演算を実行し、その演算の演算結果を新たな入力として再度同一の１つの演算部のみで演算を実行する場合に比べて、演算の効率を向上させることができる。
【００４３】
本発明の実施形態による最小構成の演算処理装置１について説明する。
本発明の実施形態による最小構成の演算処理装置１は、図９に示すように、第１演算部１０１、データ分割部２０１を備える。
第１演算部１０１は、同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて畳み込み演算を実行する。
データ分割部２０１は、畳み込み演算の対象であるデータが第１最大チャネル数を超える場合、畳み込み演算の対象であるデータを第１最大チャネル数以下のデータに分割する。
このように、複数チャネルの入力データをチャネルについて分割し、データが小さくなった分割後の複数の入力データについて畳み込み演算を行う。そうすることで、本発明の実施形態による演算処理装置１は、入力データ全体について同時に畳み込み演算を行う演算部を有する演算処理装置に比べて、（特に、第１演算部１０１の）規模を小さくすることができる。
【００４４】
なお、本発明の別の実施形態では、シーケンサ２０は、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）技術を用いて記憶部３０にアクセスするものであってもよい。
【００４５】
なお、本発明の別の実施形態では、演算処理装置１は、図１０に示すように、コンピュータ５を備えるものであってもよい。この場合、コンピュータ５が、演算部１０やシーケンサ２０の代わりに、一部の処理を実行するものであってもよい。
例えば、コンピュータ５は、本発明の第１実施形態において分割された入力Ａと入力Ｂのそれぞれについての演算結果どうしを加算する演算を、第１演算部１０１の代わりに演算するものであってもよい。
【００４６】
なお、本発明の実施形態における処理は、適切な処理が行われる範囲において、処理の順番が入れ替わってもよい。
【００４７】
本発明の実施形態における記憶部３０、その他の記憶装置のそれぞれは、適切な情報の送受信が行われる範囲においてどこに備えられていてもよい。また、本発明の実施形態における記憶部３０、その他の記憶装置のそれぞれは、適切な情報の送受信が行われる範囲において複数存在しデータを分散して記憶していてもよい。
【００４８】
本発明の実施形態について説明したが、上述の演算処理装置１、その他の制御装置は内部に、コンピュータシステムを有していてもよい。そして、上述した処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。コンピュータの具体例を以下に示す。
図１１は、少なくとも１つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
コンピュータ５は、図１１に示すように、ＣＰＵ６、メインメモリ７、ストレージ８、インターフェース９を備える。
例えば、上述の演算処理装置１、その他の制御装置のそれぞれは、コンピュータ５に実装される。そして、上述した各処理部の動作は、プログラムの形式でストレージ８に記憶されている。ＣＰＵ６は、プログラムをストレージ８から読み出してメインメモリ７に展開し、当該プログラムに従って上記処理を実行する。また、ＣＰＵ６は、プログラムに従って、上述した各記憶部に対応する記憶領域をメインメモリ７に確保する。
【００４９】
ストレージ８の例としては、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ−ＲＯＭ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、半導体メモリ等が挙げられる。ストレージ８は、コンピュータ５のバスに直接接続された内部メディアであってもよいし、インターフェース９または通信回線を介してコンピュータ５に接続される外部メディアであってもよい。また、このプログラムが通信回線によってコンピュータ５に配信される場合、配信を受けたコンピュータ５が当該プログラムをメインメモリ７に展開し、上記処理を実行してもよい。少なくとも１つの実施形態において、ストレージ８は、一時的でない有形の記憶媒体である。
【００５０】
また、上記プログラムは、前述した機能の一部を実現してもよい。さらに、上記プログラムは、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるファイル、いわゆる差分ファイル（差分プログラム）であってもよい。
【００５１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例であり、発明の範囲を限定しない。これらの実施形態は、発明の要旨を逸脱しない範囲で、種々の追加、省略、置き換え、変更を行ってよい。
【００５２】
上記の本発明の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限らない。
【００５３】
（付記１）
同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行する第１演算部と、
前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割するデータ分割部と、
を備える演算処理装置。
【００５４】
（付記２）
前記第１最大チャネル数以下に分割されたデータについて、前記第１演算部に前記畳み込み演算を実行させる第１演算制御部、
を備える付記１に記載の演算処理装置。
【００５５】
（付記３）
前記第１演算制御部は、
前記第１最大チャネル数以下に分割されたデータについての前記畳み込み演算の結果を加算する演算を前記第１演算部に実行させる、
付記２に記載の演算処理装置。
【００５６】
（付記４）
同時に実行可能な畳み込み演算の第２最大チャネル数以下のデータについて前記畳み込み演算を実行する第２演算部であって、入力されるデータのチャネル数が前記第２最大チャネル数を超える場合、前記データ分割部によって前記第２最大チャネル数以下に分割されたデータのうちの一部または全部について、前記畳み込み演算を実行する第２演算部、
を備える付記１から付記３の何れか一に記載の演算処理装置。
【００５７】
（付記５）
前記第２最大チャネル数以下に分割されたデータについて、前記第２演算部に前記畳み込み演算を実行させる第２演算制御部、
付記４に記載の演算処理装置。
【００５８】
（付記６）
前記第２演算制御部は、
前記第２最大チャネル数以下に分割されたデータについての前記畳み込み演算の結果を加算する演算を前記第２演算部に実行させる、
付記５に記載の演算処理装置。
【００５９】
（付記７）
前記第１演算部は、ハードウェアによって構成される、
付記１から付記６の何れか一に記載の演算処理装置。
【００６０】
（付記８）
前記ハードウェアは、
ＡＳＩＣ、ＦＰＧＡ、ＰＬＡまたはＰＬＤである、
付記７に記載の演算処理装置。
【００６１】
（付記９）
同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行することと、
前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割することと、
を含む演算処理方法。
【００６２】
（付記１０）
同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行する第１演算部、及び、前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割するデータ分割部のそれぞれをハードウェアとして構成させるコンフィグレーションプログラム。
【００６３】
（付記１１）
コンピュータに、
同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行すること、及び、前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割すること、のうちの少なくとも１つ
を実行させるプログラム。
【符号の説明】
【００６４】
１・・・演算処理装置
５・・・コンピュータ
６・・・ＣＰＵ
７・・・メインメモリ
８・・・ストレージ
９・・・インターフェース
１０・・・演算部
２０・・・シーケンサ
３０・・・記憶部
１０１・・・第１演算部
１０２・・・第２演算部
２０１・・・データ分割部
２０２・・・演算制御部
【図１】
2020123125.tif 000003
【図２】
2020123125.tif 000004
【図３】
2020123125.tif 000005
【図４】
2020123125.tif 000006
【図５】
2020123125.tif 000007
【図６】
2020123125.tif 000008
【図７】
2020123125.tif 000009
【図８】
2020123125.tif 000010
【図９】
2020123125.tif 000011
【図１０】
2020123125.tif 000012
【図１１】
2020123125.tif 000013
【手続補正書】
【提出日】令和2年4月3日(2020.4.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行する第１演算部と、
前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割するデータ分割部と、
同時に実行可能な畳み込み演算の最大チャネル数が前記第１最大チャネル数以上である第２演算部であって、前記第１演算部が前記分割されたデータの１つについて畳み込み演算を実行した結果を入力し、前記分割されたデータの１つとは別の１つについて前記第１演算部が畳み込み演算を実行する期間に、前記入力について畳み込み演算を実行する第２演算部と、
を備える演算処理装置。
【請求項２】
前記第１最大チャネル数以下に分割されたデータについて、前記第１演算部に前記畳み込み演算を実行させる第１演算制御部、
を備える請求項１に記載の演算処理装置。
【請求項３】
前記第１演算制御部は、
前記第１最大チャネル数以下に分割されたデータについての前記畳み込み演算の結果を加算する演算を前記第１演算部に実行させる、
請求項２に記載の演算処理装置。
【請求項４】
前記入力についての畳み込み演算を前記第２演算部に実行させる第２演算制御部、
を備える請求項１から請求項３の何れか一項に記載の演算処理装置。
【請求項５】
前記第１演算部は、ハードウェアによって構成される、
請求項１から請求項４の何れか一項に記載の演算処理装置。
【請求項６】
前記ハードウェアは、
ＡＳＩＣ、ＦＰＧＡ、ＰＬＡまたはＰＬＤである、
請求項５に記載の演算処理装置。
【請求項７】
第１演算部は、同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行し、
データ分割部は、前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割し、
同時に実行可能な畳み込み演算の最大チャネル数が前記第１最大チャネル数以上である第２演算部は、前記第１演算部が前記分割されたデータの１つについて畳み込み演算を実行した結果を入力し、前記分割されたデータの１つとは別の１つについて前記第１演算部が畳み込み演算を実行する期間に、前記入力について畳み込み演算を実行する、
演算処理装置による演算処理方法。
【請求項８】
同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行する第１演算部、前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割するデータ分割部、及び、同時に実行可能な畳み込み演算の最大チャネル数が前記第１最大チャネル数以上である第２演算部であって、前記第１演算部が前記分割されたデータの１つについて畳み込み演算を実行した結果を入力し、前記分割されたデータの１つとは別の１つについて前記第１演算部が畳み込み演算を実行する期間に、前記入力について畳み込み演算を実行する第２演算部のそれぞれをハードウェアとして構成させるコンフィグレーションの処理をコンピュータに実行させるためのプログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、演算処理装置、演算処理方法及びプログラムに関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
本発明の各態様は、上記の課題を解決することのできる演算処理装置、演算処理方法及びプログラムを提供することを目的としている。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
上記目的を達成するために、本発明の一態様によれば、演算処理装置は、同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行する第１演算部と、前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割するデータ分割部と、同時に実行可能な畳み込み演算の最大チャネル数が前記第１最大チャネル数以上である第２演算部であって、前記第１演算部が前記分割されたデータの１つについて畳み込み演算を実行した結果を入力し、前記分割されたデータの１つとは別の１つについて前記第１演算部が畳み込み演算を実行する期間に、前記入力について畳み込み演算を実行する第２演算部と、を備える。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
上記目的を達成するために、本発明の別の態様によれば、演算処理装置による演算処理方法は、第１演算部が、同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行し、データ分割部が、前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割し、同時に実行可能な畳み込み演算の最大チャネル数が前記第１最大チャネル数以上である第２演算部が、前記第１演算部が前記分割されたデータの１つについて畳み込み演算を実行した結果を入力し、前記分割されたデータの１つとは別の１つについて前記第１演算部が畳み込み演算を実行する期間に、前記入力について畳み込み演算を実行する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
上記目的を達成するために、本発明の別の態様によれば、コンフィグレーションの処理をコンピュータに実行させるためのプログラムは、同時に実行可能な畳み込み演算の第１最大チャネル数以下のデータについて前記畳み込み演算を実行する第１演算部、前記畳み込み演算の対象であるデータが前記第１最大チャネル数を超える場合、前記畳み込み演算の対象であるデータを前記第１最大チャネル数以下のデータに分割するデータ分割部、及び、同時に実行可能な畳み込み演算の最大チャネル数が前記第１最大チャネル数以上である第２演算部であって、前記第１演算部が前記分割されたデータの１つについて畳み込み演算を実行した結果を入力し、前記分割されたデータの１つとは別の１つについて前記第１演算部が畳み込み演算を実行する期間に、前記入力について畳み込み演算を実行する第２演算部のそれぞれをハードウェアとして構成させる。