(57)【要約】【課題】  ＬＳＩチップに内蔵するメモリ回路ブロックのメモリサイズを超える２次元データに対する演算処理を効率的に実行可能な技術を提供する。【解決手段】  ２次元の対象データと２次元のカーネルとの畳み込み演算を行うＬＳＩチップであって、前記対象データを保持する対象データメモリ１０と、前記カーネルを保持するカーネルメモリ１１と、前記対象データと、前記カーネルと、に基づいて畳み込み演算処理を行う演算回路１６と、前記対象データを外部のＬＳＩチップと入出力する入出力配線と、を備え、前記演算回路１６は、前記演算回路における演算において必要な対象データであって、当該ＬＳＩチップに備えられた前記対象データメモリ１０に存在しないデータは、前記入出力配線を介して、前記外部のＬＳＩチップに備えられた前記対象データメモリから入力することを特徴とする。【選択図】  図４
2007206887.tif 000002
【特許請求の範囲】
【請求項１】
２次元の対象データと２次元のカーネルとの畳み込み演算を行うＬＳＩチップであって、
前記対象データを保持する対象データメモリと、
前記カーネルを保持するカーネルメモリと、
前記対象データと、前記カーネルと、に基づいて畳み込み演算処理を行う演算回路と、
前記対象データを外部のＬＳＩチップと入出力する入出力配線と、
を備え、
前記演算回路は、前記演算回路における演算において必要な対象データであって、当該ＬＳＩチップに備えられた前記対象データメモリに存在しないデータは、前記入出力配線を介して、前記外部のＬＳＩチップに備えられた前記対象データメモリから入力する
ことを特徴とするＬＳＩチップ。
【請求項２】
前記演算回路における前記演算処理は並列に実行される
ことを特徴とする請求項１に記載のＬＳＩチップ。
【請求項３】
前記演算回路は、アナログ回路又はデジタル回路であることを特徴とする
請求項１又は２に記載のＬＳＩチップ。
【請求項４】
更に、
前記外部のＬＳＩチップとの前記入出力配線における接続を切り替えるスイッチ回路
を備えることを特徴とする請求項１乃至３のいずれか１項に記載のＬＳＩチップ。
【請求項５】
更に、
前記外部のＬＳＩチップとの前記入出力配線における接続を切り替えるセレクタ
を備えることを特徴とする請求項１乃至３のいずれか１項に記載のＬＳＩチップ。
【請求項６】
複数のＬＳＩチップを接続してなり、２次元の対象データと２次元のカーネルとの畳み込み演算を行う、演算処理システムであって、
前記ＬＳＩチップのそれぞれは、
前記対象データを保持する対象データメモリと、
前記カーネルを保持するカーネルメモリと、
前記対象データと、前記カーネルと、に基づいて畳み込み演算処理を行う演算回路と、
前記対象データを隣接する前記ＬＳＩチップと入出力する入出力配線と、
を備え、
前記対象データは隣接する複数の前記ＬＳＩチップのそれぞれに備えられた前記対象データメモリに分散して保持され、
前記演算回路は、該演算回路における演算において必要な対象データであって、当該演算回路を備える前記ＬＳＩチップに備えられた前記対象データメモリに存在しないデータは、前記入出力配線を介して、隣接する前記ＬＳＩチップに備えられた前記対象データメモリから入力する
ことを特徴とする演算処理システム。
【請求項７】
前記ＬＳＩチップは１列に配置される
ことを特徴とする請求項６に記載の演算処理システム。
【請求項８】
前記ＬＳＩチップは行列形式に配置される
ことを特徴とする請求項６に記載の演算処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＬＳＩチップ及び演算処理システムに関する。
【背景技術】
【０００２】
従来より、演算回路が実装された基板を複数接続することで、階層的な演算処理を実行する演算処理システムが知られている（特許文献１）。このような演算処理システムについて、図２３を参照して説明する。図２３は、演算回路が実装された複数の基板を接続してなる演算処理システムの構成例を模式的に示した図である。
【０００３】
図２３においては、演算回路に相当する複数個の学習機能付き神経細胞模倣素子２０が、階層型網状に接続して設けられている。さらに、これらの神経細胞模倣素子２０を制御する制御手段を備えた演算処理システムにおいて、神経細胞模倣素子２０は、層Ａ2、Ａ3毎に設けられた基板５５a、５５b上に分割して搭載されている。このような構成により、ニューロコンピュータシステムとしての演算処理システムが構築されている。
【０００４】
また、画像データ等の２次元的に分布するデータに対して、２次元的に分布する重みを有するカーネルとの畳込み演算を実行するＬＳＩ（large-scale integration）チップが知られている（非特許文献１）。このようなＬＳＩチップの処理フローについて、図２４を参照して説明する。図２４は、２次元データに対して畳み込み演算を実行するＬＳＩチップにおける、データの流れを模式的に示した図である。
【０００５】
画像データとカーネルデータは、それぞれＳＲＡＭ（Image SRAMとKernel SRAM）に記憶される。画像データは、シフトレジスタ（ＳＲ）、デジタル/ＰＷＭ変換器（Ｄ／Ｐ）を経てＰＷＭ積和演算回路（ＰＷＭ−ＭＡＣ）に入力される。カーネルデータは、ＳＲ、Ｄ／Ｐ、ＰＷＭ/アナログ変換器（Ｐ／Ａ）を経てＰＷＭ−ＭＡＣに入力される。ただし、ＳＲはＳＲＡＭが出力するシリアルデータをパラレルデータに変換する。また、Ｄ／ＰとＰ／Ａはそれぞれ、デジタル信号をＰＷＭ信号、ＰＷＭ信号をアナログ電圧に変換する。ＰＷＭ−ＭＡＣは畳込み演算処理を並列に行なう。なお、ＰＷＭはpulse-width modulation（パルス幅変調）の略称である。
【０００６】
ＰＷＭ−ＭＡＣの出力は、ＰＷＭ/デジタル変換器（Ｐ／Ｄ）を経てデジタル累算器（ＡＣＣ）によって累算される。累算結果はマルチプレクサ（ＭＵＸ）を経てルックアップテーブル（ＬＵＴ）により非線形変換され、再びImage SRAMに記憶される。以上の処理を繰り返すことにより、画像データから特徴の検出を行う。
【特許文献１】特開平５−２３３５８２号公報
【非特許文献１】K.Korekado et al., “An Image Filtering Processor for Face/Object Recognition Using Merged/Mixed Analog-Digital Architecture”, in 2005 Symposium on VLSI Circuits, Digest of Technical papers, pp. 220-223, Kyoto, Japan, June 2005.
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に開示された演算処理システムにおいては、異なる基板の神経細胞模倣素子間における全ての接続について配線を実装する必要があるため、接続する素子の数が増えた場合、その配線を全て実装することが困難になる。特に、画像データのように２次元的に分布するデータに対して２次元的な重み分布を有するカーネルとの畳み込み演算を実行する場合、多数の素子を複雑に接続する必要があるため、神経細胞模倣素子同士の全ての接続を実装することは困難である。
【０００８】
また非特許文献１に開示されたＬＳＩチップにおいては、当該ＬＳＩチップに含まれるImage SRAMのメモリサイズを越えるサイズの２次元データに対して、演算処理を実行することが困難である。
【０００９】
本発明は上記問題に鑑みなされたものであり、ＬＳＩチップに内蔵するメモリ回路ブロックのメモリサイズを超える２次元データに対する演算処理を効率的に実行可能な技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明によるＬＳＩチップは以下の構成を備える。即ち、
２次元の対象データと２次元のカーネルとの畳み込み演算を行うＬＳＩチップであって、
前記対象データを保持する対象データメモリと、
前記カーネルを保持するカーネルメモリと、
前記対象データと、前記カーネルと、に基づいて畳み込み演算処理を行う演算回路と、
前記対象データを外部のＬＳＩチップと入出力する入出力配線と、
を備え、
前記演算回路は、前記演算回路における演算において必要な対象データであって、当該ＬＳＩチップに備えられた前記対象データメモリに存在しないデータは、前記入出力配線を介して、前記外部のＬＳＩチップに備えられた前記対象データメモリから入力する。
【００１１】
また、本発明による演算処理システムは以下の構成を備える。即ち、
複数のＬＳＩチップを接続してなり、２次元の対象データと２次元のカーネルとの畳み込み演算を行う、演算処理システムであって、
前記ＬＳＩチップのそれぞれは、
前記対象データを保持する対象データメモリと、
前記カーネルを保持するカーネルメモリと、
前記対象データと、前記カーネルと、に基づいて畳み込み演算処理を行う演算回路と、
前記対象データを隣接する前記ＬＳＩチップと入出力する入出力配線と、
を備え、
前記対象データは隣接する複数の前記ＬＳＩチップのそれぞれに備えられた前記対象データメモリに分散して保持され、
前記演算回路は、該演算回路における演算において必要な対象データであって、当該演算回路を備える前記ＬＳＩチップに備えられた前記対象データメモリに存在しないデータは、前記入出力配線を介して、隣接する前記ＬＳＩチップに備えられた前記対象データメモリから入力する。
【発明の効果】
【００１２】
本発明によれば、ＬＳＩチップに内蔵するメモリ回路ブロックのメモリサイズを超える２次元データに対する演算処理を効率的に実行可能な技術を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、添付図面を参照して本発明に係る実施の形態を詳細に説明する。ただし、この実施の形態に記載されている構成要素はあくまでも例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。
【００１４】
＜＜第１実施形態＞＞
（演算処理システム）
図１は、本実施形態に係る演算処理システムを模式的に示した図である。図１に示すように演算処理システムは、４個のＬＳＩチップ１〜４が１列に配置されて構成される。なお、ＬＳＩチップの個数は、演算処理対象のデータサイズに応じて変更することが可能であり、本実施形態においては一例として４個のケースを示している。またそれぞれのＬＳＩチップは、隣接するＬＳＩチップとデータを入力及び出力する配線５によって接続されている。ここで、本実施形態においては、それぞれのチップ間で入力及び出力されるデータ幅を６ビットとしてるが、その他のデータ幅を有するものであっても良い。その場合は、データ幅に応じて配線の本数が変わる。なお図１では、６bitの配線及びＬＳＩチップのピンを１本の配線及びピンで略記している。また図１においては、前述した入力及び出力用の配線５以外の配線は、本実施形態の説明に必要でないため、記載していない。
【００１５】
（演算処理例）
次に、前記の演算処理システムで実現する演算処理の一例について、図２を参照して説明する。図２は、階層型コンボリューショナル・ニューラルネットワークを用いて顔の位置検出を行う処理を模式的に示した図である。
【００１６】
図２に示すように、本実施形態における演算処理は、初段層８に画像データ７を入力し、所定の２次元的に分布する重みを有するカーネル６との畳込み演算を階層的に繰り返し実行する。階層１〜６においては、初段層に対して実行した畳込み演算の演算結果群に対して、初段層と同様にカーネル６との畳込み演算を実行する。この場合、ある階層に含まれる一つの演算素子で実行される演算は、前段出力値をｏ、カーネルの重みをｗとした場合、以下の式（１）で表される。
ｕ＝Σｗ・ｏ   ・・・（１）
階層的に畳込み演算を行う際に、それぞれの階層で算出された演算結果は、次段の畳込み演算に対する入力値となる。また各層においては、畳込み演算結果として、複数の異なる演算結果群を算出する場合もある。この場合の複数の異なる演算結果は、図２に示すように、複数の異なる特徴の検出結果に相当する。これはカーネルの重み分布を変更することによって実現される。また図２に示すように、畳込み演算は前段層の複数の演算結果群を入力値とする場合もある。
【００１７】
本実施形態における演算処理は、２次元的にデータが分布する自然画像から特徴を検出する手法として知られている、階層型コンボリューショナル・ニューラルネットワークを用いて顔の位置検出を行う場合を想定するが、これに限られない。即ち、２次元的に分布するデータと、所定の２次元的に分布する重みを有するカーネルとの畳込み演算を実行するものであれば、その他のアルゴリズムを実行するものであっても良い。
【００１８】
（ＬＳＩチップの回路構成）
続いて、前記の演算処理システムを構成するＬＳＩチップ１〜４の回路構成について、図３を参照して説明する。図３は、ＬＳＩチップの回路構成を模式的に示したブロック図である。図３に示すように、本実施形態におけるＬＳＩチップは以下の回路ブロックを有する。
・メモリ回路ブロック（ＭＥＭ）１０。
・カーネルデータメモリ回路ブロック（ＫＭＥＭ）１１。
・レジスタ（ＲＥＧ）１２,１４。
・デジタル‐ＰＷＭ変換回路ブロック（Ｄ／Ｐ）１３,１５。
・ＰＷＭ‐アナログ変換回路（Ｐ／Ａ）１７。
・演算回路ブロック（ＰＷＭ−ＭＡＣ）１６。
・累算回路ブロック（ＡＣＣ）１９。
・ＰＷＭ‐デジタル変換回路ブロック（Ｐ／Ｄ）１８。
・マルチプレクサ（ＭＵＸ）２０。
・ルックアップテーブル（ＬＵＴ）２１。
なお、図３中では、配線は省略している。
【００１９】
（処理の流れ）
続いて、前記の各回路ブロックが実行する処理の流れについて、図４を参照して説明する。図４は、回路ブロック間のデータの流れを模式的に示したブロック図である。
【００２０】
画像データまたは前段層の演算結果は、メモリ回路ブロック（ＭＥＭ）１０に記憶される。また、カーネルの重みに関するデータは、カーネルデータメモリ回路ブロック（ＫＭＥＭ）１１に記憶される。
【００２１】
カーネルデータメモリ回路ブロック（ＫＭＥＭ）１１に保持されたカーネルの重みに関するデータは、レジスタ（ＲＥＧ）１２に入力され、パラレルデータに変換される。続いて、５１個のデジタル‐ＰＷＭ変換回路ブロック（Ｄ／Ｐ）１３によってＰＷＭ信号に変換される。ＰＷＭ信号はＰＷＭ‐アナログ変換ブロック（Ｐ／Ａ）１７によってアナログ信号に変換され、さらに演算回路ブロック（ＰＷＭ−ＭＡＣ）１６に入力される。
【００２２】
また、メモリ回路ブロック（ＭＥＭ）１０に保持されている画像データまたは前段層による演算結果のデータは、レジスタ（ＲＥＧ）１４、デジタル‐ＰＷＭ変換回路ブロック（Ｄ／Ｐ）１５を経て、演算回路ブロック（ＰＷＭ−ＭＡＣ）１６に入力される。この時、メモリ回路ブロック（ＭＥＭ）１０から出力された画像データまたは前段層による演算結果のデータは、隣接するＬＳＩチップに対しても出力される。またレジスタ（ＲＥＧ）１４には、図４に示すように、隣接したＬＳＩチップから出力された画像データまたは前段層による演算結果のデータが入力される。なお、隣接するＬＳＩチップとのデータの入出力に係る処理、及びレジスタ（ＲＥＧ）１４へのデータの入力に係る処理に関しては、後で詳細な説明を行う。
【００２３】
なお、レジスタ（ＲＥＧ）１４は、メモリ回路ブロック（ＭＥＭ）１０が出力するシリアルデータをパラレルデータに変換する。デジタル‐ＰＷＭ変換回路ブロック（Ｄ／Ｐ）１３,１５とＰＷＭ‐アナログ変換回路ブロック（Ｐ／Ａ）１７は、それぞれデジタル信号をＰＷＭ信号に、ＰＷＭ信号をアナログ電圧に変換する。演算回路ブロック（ＰＷＭ−ＭＡＣ）１６は、入力されたカーネルの重みに関するデータと、画像データまたは前段層の演算結果に対して、畳込み演算処理を並列に実行する。
【００２４】
演算回路ブロック１６の出力結果はＰＷＭ信号として出力され、ＰＷＭ‐デジタル変換回路ブロック（Ｐ／Ｄ）１８によってデジタル信号化された後、累算回路ブロック（ＡＣＣ）１９によって累算される。累算結果はマルチプレクサ（ＭＵＸ）２０を経てルックアップテーブル（ＬＵＴ）２１により非線形変換され、再びメモリ回路ブロック（ＭＥＭ）１０に保持される。
【００２５】
以上の処理を特徴数回及び階層数回繰り返すことにより、階層型コンボリューショナル・ニューラルネットワークの演算処理が実現される。
【００２６】
（回路ブロック）
続いて、前述したＬＳＩチップを構成する回路ブロックの中で、演算回路ブロック（ＰＷＭ−ＭＡＣ）１６の詳細な回路構成について、図５を参照して説明を行う。図５は、演算回路ブロック１６の回路構成を示した図である。
【００２７】
本実施形態における演算回路ブロック１６中の演算回路２５（図中網掛部）は、演算回路１個につきそれぞれ５１個のスイッチド電流源（ＳＣＳ）２３と１個の積分容量（Ｃ）２４を有している（紙面の都合上、図５には５個のＳＣＳ２３のみ記載している）。演算回路ブロック１６は、８０個の演算回路２５から構成され、１つのメモリ回路ブロック（ＭＥＭ）１０の１列のメモリセルの個数と一致する（紙面の都合上、図５には３個の演算回路のみ記載している）。演算回路ブロック１６中の複数の演算回路２５は、図５に示すように、入力画像データ又は前段層の演算結果に相当するＰＷＭ信号ＰＩiとカーネルの重みデータに相当するアナログ電圧ＶＷjを共有する。ただし、ｉ＝１,・・・,１３０、ｊ＝１,・・・,５１である。また、ＰＷＭ信号ＰＩiはＤ／Ｐ１５を介してレジスタ（ＲＥＧ）１４から入力され、アナログ電圧ＶＷjはＤ／Ｐ１２、Ｐ／Ａ１７を介してレジスタ（ＲＥＧ）１２から入力される。
【００２８】
なお、本実施形態では、１個のＬＳＩにおいて、サイズが５１×５１のカーネルを用いて畳み込み演算を行い、サイズが８０×８０の出力を得ることが可能な構成について例示的に説明する。従って、５１×５１のカーネルを用いた畳み込み演算により８０×８０の出力を得るために、１個のＬＳＩにおける２次元入力データのサイズは１３０×１３０となる（ただし、８０＋５１−１＝１３０）。また、メモリ回路ブロック（ＭＥＭ）１０は８０×８０のメモリセルから構成される。
【００２９】
この場合、演算回路２５は以下の手順で動作する。
（１）スイッチド電流源（ＳＣＳ）２３に入力ＰＷＭ信号ＰＩを入力する。
（２）ＰＷＭ信号を積分容量（Ｃ）２４の電荷に変換することで、アナログ電圧ＶＷjによる重み付け加算を行う。
（３）積分容量（Ｃ）２４の両端に掛かる電圧Ｖkを線形なランプ信号Ｖrefと比較することでＰＷＭ信号ＰＯkに変換する。
即ち、以下の式が成り立つ。
ＰＯ1＝ＰＩ1・ＶＷ1＋・・・＋ＰＩ51・ＶＷ51。
・・・・
ＰＯ80＝ＰＩ80・ＶＷ1＋・・・＋ＰＩ130・ＶＷ51。
【００３０】
なお、積分容量（Ｃ）２４の電荷は、演算開始前にＲＳＴにＨｉｇｈ信号を入力することによりリセットされる。
【００３１】
次に、本実施形態におけるＬＳＩチップを構成するその他の回路ブロックについて説明する。
【００３２】
ＰＷＭ‐アナログ変換回路（Ｐ／Ａ）１７は、ＰＷＭ信号に変換されたカーネルの重みデータをさらにアナログ電圧ＶＷjに変換し、当該変換されたアナログ電圧ＶＷjを演算回路ブロック１６に対して出力する。なお、ＰＷＭ‐アナログ変換回路（Ｐ／Ａ）１７は、１個のスイッチド電流源と積分容量、及びソースフォロアバッファから構成され、スイッチド電流源はＰＷＭ信号を積分容量の電荷に変換し、ソースフォロアバッファは、積分容量の電圧を出力する。
【００３３】
また、メモリ回路ブロック（ＭＥＭ）１０、カーネルデータメモリ回路ブロック（ＫＭＥＭ）１１は、本実施形態の場合ＳＲＡＭから構成される。ＲＥＧ１２，１４、Ｄ／Ｐ１３，１５、ＡＣＣ１９、Ｐ／Ｄ１８、ＭＵＸ２０、及び、ＬＵＴ２１に関しては、デジタル回路であり、前述した機能を有するものであればどのような回路構成であっても構わないため、詳細な説明を省略する。
【００３４】
（畳み込み演算）
演算回路ブロック１６において実行される畳み込み演算の実行フローについて、図６を参照して説明する。図６は、演算回路ブロック１６による畳込み演算の様子を模式的に示した図である。
【００３５】
上記のように、本実施形態において１個のＬＳＩチップが演算対象とする最大画像サイズは、１３０×１３０画素である（ただし、後述するように、１３０×１３０画素の全てが当該ＬＳＩのメモリに保持されているわけではない）。また、カーネルの１辺の最大画素サイズは、１個の演算回路中のスイッチド電流源（ＳＣＳ）２３の数に等しく５１である。
【００３６】
このような状況において、画像データもしくは前段層の１つの特徴の演算結果の１行に属する１３０画素は、８０個の演算回路２５に同時に入力される。言い換えると、８０個の演算回路２５のそれぞれは、演算対象の２次元データの１行に属する１３０画素のうち演算に必要な５１個のデータを、Ｄ／Ｐ１５を介してＲＥＧ１４から取得する。そして、演算回路２５のそれぞれは、入力されたデータとカーネルの１行分の重みデータとの畳込み演算を並列に実行する。この演算（並列演算）をカーネル５１行分の計算のために５１回繰り返し、さらに前記演算をカーネルの正と負の値に分割して実行するために２回繰り返す。従って、メモリ回路ブロック１０の１行のメモリセルの個数８０個分の演算結果を確定するために、演算回路ブロック１６は、５１×２回の前記並列演算を実行する。さらに、８０行全ての演算結果を確定するために、前記５１×２回の演算を８０回実行する。
【００３７】
（並列演算）
上記のように、５１×５１のカーネルに基づいて畳み込み演算により８０×８０のデータを取得するためには、１３０×１３０の２次元データが入力される必要がある。しかし、メモリ回路ブロック（ＭＥＭ）１０のサイズは８０×８０である。このため、図６のように、演算回路２５に入力される演算対象の１３０画素のデータのうち、８０×８０の画素サイズを超える部分（図中斜線部）のデータは、演算を実行するＬＳＩチップ内には保持されていないことになる。そこで、本実施形態に係る構成においては、ＬＳＩチップを並列に接続し、隣接するＬＳＩチップから処理に必要な画素データを取得し、当該画素データを用いて２次元データの畳み込み演算を行う。以下、複数のＬＳＩチップによる並列演算について、上記のＬＳＩチップを４つ一列に接続して画像サイズが３２０×２４０画素に対して演算を行う場合を例示的に取り上げて説明する。
【００３８】
図７は、４つのＬＳＩチップ１〜４を用いて３２０×２４０の２次元データに対してカーネルとの畳み込み演算を行う様子を模式的に示した図である。図７において、７１１〜７１４は、一列に接続された４つのＬＳＩチップ１〜４による演算対象の領域をそれぞれ示している。ＬＳＩチップ１〜４は、それぞれの演算領域７１１〜７１４における対応する位置のデータについて、他のＬＳＩチップによる演算と同期して畳み込み演算を行う。
【００３９】
７０１〜７０４は、ＬＳＩチップ１〜４のカーネル、即ち、ＬＳＩチップ１〜４が演算を実行するために必要な２次元データの範囲をそれぞれ示している。図７に示すように、１つのメモリ回路ブロック１０のサイズ（８０×８０）よりも大きいサイズの画像を演算対象とする場合に、カーネルが、隣接するＬＳＩチップのメモリ回路ブロック１０に保持する画像データまたは演算結果の領域にはみ出してしまう。なお図７では、はみ出し部を斜線で表示している。
【００４０】
本実施形態に係る構成においては、はみ出し部に含まれる画像データを用いて演算を行うために、ＬＳＩチップ１〜４を隣接させて接続する。そしてさらに隣接するＬＳＩチップ１〜４間で、内蔵メモリに保持していない演算対象データ（カーネルがはみ出している部分のデータ）をお互いに入出力しあって補完するものである。
【００４１】
次に、それぞれのＬＳＩチップ１〜４の演算処理において、カーネルが、隣接するＬＳＩチップ１〜４が保持するデータ領域にはみ出した場合の、隣接するチップ間でデータを入出力する様子について、図８を参照して説明する。図８は、各チップのメモリ回路ブロック１０に保持された画像データまたは前段層の演算結果から、演算対象となるデータを読み出し、隣接するチップのレジスタに入出力する際の入力行のメモリ読み出し順序、及びデータの流れを模式的に示した図である。なお図８には、各ＬＳＩチップ１〜４内のメモリ回路ブロック１０中の、演算対象としている８０×８０の領域のみが示されている。また、後段層における演算の算出位置がターゲット行として重ねて表示されている。
【００４２】
図８において、カーネルがはみ出した場合を演算するために、はみ出している部分の入力行のデータ（図中黒色部）を隣接するＬＳＩチップから取り込んでいることが分かる。例えば、ＬＳＩチップ１は、８０１の位置における演算を行うために、８１１のデータをＬＳＩチップ２から取り込んでいる。この時のメモリ読み出し順序、及びレジスタにデータを入力する際のデータの流れを以下で詳しく説明する。
【００４３】
本実施形態においては、一つのメモリ回路ブロックの左側から一つずつデータを読み出していくため（図中の入力行）、まず図８の（ａ）に示すように、メモリ回路の左側に保持されているデータが、左側に隣接するＬＳＩチップに受け渡される。例えば、８１１のデータがＬＳＩチップ１に受け渡される。つまり（ａ）のデータのやり取りは、各ＬＳＩチップにおけるカーネルのはみ出しが、カーネルの右側に発生している場合に相当する。ここで、受け渡されたデータは、後段層のターゲット行の演算に使用される。なお図８では省略されているが、この際前記の受け渡されたデータは、このデータを保持しているメモリ回路ブロック１０を有するＬＳＩチップ自体のレジスタ１４にも入力されている。
【００４４】
その後、メモリ回路ブロック１０からのデータの読み出しが右側に移動していくと、カーネルのはみ出しは発生しなくなり、各ＬＳＩチップに内蔵されたメモリ回路ブロック１０からのデータのみがレジスタ１４に入力される。
【００４５】
そして、さらにメモリ回路からのデータの読み出しが右側に移動していくと、今度は各ＬＳＩチップにおけるカーネルのはみ出しが、カーネルの左側に発生するようになる。このため、図８（ｂ）に示すように、メモリ回路の右側に保持されているデータが、右側に隣接するＬＳＩチップに受け渡される。例えば、８１２のデータがＬＳＩチップ２に受け渡される。ここで、受け渡されたデータは、後段層のターゲット行の演算に使用される。なお図８では省略されているが、この際前記の受け渡されたデータは、このデータを保持しているメモリ回路ブロック１０を有するＬＳＩチップ自体のレジスタ１４にも入力されている。
【００４６】
上記のように、本実施形態に係る構成においては、４個のＬＳＩチップのそれぞれのレジスタ（ＲＥＧ）１４には、各ＬＳＩチップにおける演算に必要なデータ（１３０個）が正しく入力され、保持される。このため、本実施形態に係る構成においては、各ＬＳＩチップのメモリに格納可能なサイズよりも大きいサイズの２次元データについて演算を行うことができる。更に、各ＬＳＩチップ１〜４のメモリ読み出し位置は、４個のＬＳＩチップで全て共通なため、読み出し時の制御が容易である。また、各ＬＳＩチップ１〜４で演算対象とするカーネルの重みデータも各ＬＳＩチップ１〜４で共通であるため、制御が容易である。
【００４７】
（データの入出力）
続いて、再度図４を参照して、隣接するＬＳＩチップとのデータの入出力方法について説明を行う。図４に示したように、隣接したＬＳＩチップとのデータの入出力は、左側のＬＳＩチップから右側のＬＳＩチップへデータが入力される場合と、右側のチップから左側のチップへデータが入力される場合の２種類のケースがある。そこで本実施形態においては、データの入出力の左右方向を切り替えるために、トライステートバッファ２６を使用している。二つのトライステートバッファ２６は、逆相の制御信号で制御することにより、データの出力方向を左側と右側で切り替えることが可能である。
【００４８】
また、図９に示すブロック図のようにトライステートバッファ２７を用いることにより、ＬＳＩチップからデータを入・出力する配線を共用することが可能となる。図９は、隣接するＬＳＩチップからデータを入出力するための配線が共用された構成を例示的に示した図である。
【００４９】
この場合、左側のＬＳＩチップからの出力を取り込むときには、右側のＬＳＩチップにデータを出力するように配線を切り替え、右側のＬＳＩチップから出力を取り込むときには、左側のＬＳＩチップにデータを出力するように配線を切り替える。この手法を用いた場合、隣接するＬＳＩチップ間の配線は、図１０に示すように、６ビットの配線２８の１組のみとなり、配線数を削減することができる。
【００５０】
なお、隣接したＬＳＩチップ間で以上説明したようにデータを入出力できるものであれば、配線構造及びバッファ回路等の構成はその他のものを使用しても構わない。また、入出力の配線は、チップ内部で共有または分配しても、チップ外部で共有または分配してもどちらでも構わない。図１０では、チップ内部で配線を共有した場合が示されている。
【００５１】
上記のように、本実施形態においては、演算対象である２次元の対象データと２次元のカーネルとの畳み込み演算を行うＬＳＩチップが開示されている。このＬＳＩチップは、対象データを保持するＭＥＭ１０（対象データメモリ）、カーネルを保持するＫＭＥＭ１１（カーネルメモリ）、ＰＷＭ−ＭＡＣ１６（演算回路）、対象データを外部のＬＳＩチップと入出力する入出力配線と、を備える。ただし、ＰＷＭ−ＭＡＣ１６は、対象データとカーネルとに基づいて畳み込み演算処理を行う。また、ＰＷＭ−ＭＡＣ１６は、当該演算回路における演算において必要な対象データであって、当該ＬＳＩチップに備えられたＭＥＭ１０に存在しないものは、入出力配線を介して、外部のＬＳＩチップに備えられたＭＥＭ１０から入力する。
【００５２】
このため、本実施形態に係る構成によれば、ＬＳＩチップに内蔵するメモリ回路ブロックのメモリサイズを超える２次元データに対する演算処理を効率的に実行することが可能である。大きなサイズの２次元データ（画等データなど）に対して演算処理を行う際に、配線数を過剰に増大させること無く演算処理を実行することが可能となる。また、複数の同一のＬＳＩチップを接続することで演算処理システムを構築することにより、１個のＬＳＩチップの面積を縮小することができ、製造時の歩留まりを高くすることが可能となる。また、接続するＬＳＩチップの個数を変えることで、ＬＳＩチップの回路構成を変更することなく、様々なサイズの演算対象データに対して畳み込み演算を実行することが可能となる。
【００５３】
また、演算回路における演算処理は並列に実行されるため、２次元データについて効率的に演算処理を実行することができる。また、本実施形態に係る構成においては、ＬＳＩチップが一列に配置されて構成されているため、小さな回路規模で様々なサイズの２次元データについて畳み込み演算を実行することができる。
【００５４】
なお、回路ブロックやその構成要素の説明において示した個数、画像サイズ等は本実施形態を説明するために例示したものであり、これに限られないことは明らかである。
【００５５】
＜＜第２実施形態＞＞
第１実施形態に係る構成においては、演算回路ブロック１６がアナログ回路で構成されていた。本実施形態では、演算回路ブロックをデジタル回路で構成した場合について説明する。本実施形態に係る構成は、演算回路ブロックのデジタル回路化に伴う変更以外は、全て第１実施形態と同様である。このため、本実施形態においては、第１実施形態と異なる部分についてのみ説明を行い、それ以外は第１実施形態と同様であるため説明を省略する。
【００５６】
（ＬＳＩチップの回路構成）
図１１は、本実施形態における演算処理システムを構成するＬＳＩチップの回路構成を模式的に示したブロック図である。図１１に示すように、本実施形態におけるＬＳＩチップは以下の回路ブロックを有する。
・メモリ回路ブロック（ＭＥＭ）１０。
・カーネルデータメモリ回路ブロック（ＫＭＥＭ）１１。
・レジスタ（ＲＥＧ）１２,１４。
・デジタル演算回路ブロック（Ｄ−ＭＡＣ）２９。
・累算回路ブロック（ＡＣＣ）１９。
・マルチプレクサ（ＭＵＸ）２０。
・ルックアップテーブル（ＬＵＴ）２１。
なお、図１１では、配線は省略している。
【００５７】
（処理の流れ）
続いて、前記の各回路ブロックが実行する処理の流れについて、図１２を参照して説明する。図１２は、回路ブロック間のデータの流れを模式的に示したブロック図である。
【００５８】
画像データまたは前段層の演算結果は、メモリ回路ブロック（ＭＥＭ）１０に記憶される。また、カーネルの重みに関するデータは、カーネルデータメモリ回路ブロック（ＫＭＥＭ）１１に記憶される。
【００５９】
カーネルデータメモリ回路ブロック（ＫＭＥＭ）１１に保持されたカーネルの重みに関するデータは、レジスタ（ＲＥＧ）１２に入力されてパラレルデータに変換され、さらに演算回路ブロック（Ｄ−ＭＡＣ）２９に入力される。画像データまたは前段層の演算結果は、レジスタ（ＲＥＧ）１４を経て、演算回路ブロック（Ｄ−ＭＡＣ）２９に入力される。この時、メモリ回路ブロック（ＭＥＭ）１０から出力された画像データまたは前段層の演算結果のデータは、同時に隣接するＬＳＩチップに対しても出力される。またレジスタ（ＲＥＧ）１４には、図１２に示すように、隣接したＬＳＩチップから出力された画像データまたは前段層の演算結果のデータが入力される。ここでレジスタ（ＲＥＧ）１４は、メモリ回路ブロック（ＭＥＭ）１０が出力するシリアルデータをパラレルデータに変換する。
【００６０】
演算回路ブロック（Ｄ−ＭＡＣ）２９はデジタル乗算回路から構成され、入力されたカーネルの重みに関するデータと、画像データまたは前段層の演算結果に対して、畳込み演算処理を並列に実行する。演算回路ブロック（Ｄ−ＭＡＣ）２９の出力結果は、累算回路ブロック（ＡＣＣ）１９によって累算される。累算結果はマルチプレクサ（ＭＵＸ）２０を経てルックアップテーブル（ＬＵＴ）２１により非線形変換され、再びメモリ回路ブロック（ＭＥＭ）１０に記憶される。
【００６１】
以上の処理を特徴数回及び階層数回繰り返すことにより、階層型コンボリューショナル・ニューラルネットワークの演算処理が実現される。
【００６２】
（演算回路ブロック）
続いて、前述したＬＳＩチップを構成する回路ブロックの中で、演算回路ブロック（Ｄ−ＭＡＣ）２９の詳細な回路構成について、図１３を参照して説明を行う。図１３は、演算回路ブロック２９の回路構成を示した図である。
【００６３】
本実施形態における演算回路ブロック（Ｄ−ＭＡＣ）２９中の１個の演算回路３１は５１個のデジタル乗算回路（ＭＵＬ）３０を有しており、それぞれの乗算回路３０は、後段の累算回路ブロック（ＡＣＣ）１９に接続している。ただし、図５には、紙面の都合上、５個のＭＵＬ３０のみ記載している。演算回路ブロック（Ｄ−ＭＡＣ）２９は、８０個の演算回路３１から構成され、１つのメモリ回路ブロックの１列のメモリセルの個数と一致する（図５には、紙面の都合上、３個の演算回路のみ記載している）。演算回路ブロック２９中の複数の演算回路３１は、図１３に示すように、入力される２次元データに相当するデジタル信号ＤＩiとカーネルの重みデータに相当するデジタル電圧ＤＷjを共有する。ただし、ｉ＝１,・・・,１３０、ｊ＝１,・・・,５１である。また、入力デジタル信号ＤＩiはレジスタ（ＲＥＧ）１４から入力され、デジタル電圧ＤＷjはレジスタ（ＲＥＧ）１２から入力される。
【００６４】
なお、本実施形態においても、１個のＬＳＩにおいて、サイズが５１×５１のカーネルを用いて畳み込み演算を行い、サイズが８０×８０の出力を得ることが可能な構成について例示的に説明する。このため、第１実施形態と同様に、５１×５１のカーネルを用いた畳み込み演算により８０×８０の出力を得るために、１個のＬＳＩにおける２次元入力データのサイズは１３０×１３０となる。また、メモリ回路ブロック（ＭＥＭ）１０は８０×８０のメモリセルから構成される。
【００６５】
この場合、演算回路２９及び後段に接続する累算回路１９は以下の手順で動作する。
（１）乗算回路（ＭＵＬ）３０にデジタル信号ＤＩ及びＤＷを入力する。
（２）乗算回路（ＭＵＬ）３０より、ＤＩとＤＷの乗算結果が出力され、累算回路ブロック（ＡＣＣ）１９に入力される。
（３）累算回路ブロック（ＡＣＣ）１９は、最大５１個の乗算回路（ＭＵＬ）３０からの入力を累算する。
【００６６】
以上のように、本実施形態における構成によれば、第１実施形態における演算回路が実行する演算をデジタル的に実行することができる。なお、本実施形態における演算処理システムは、前述した演算回路ブロックのデジタル回路化に伴う変更以外、全て第１実施形態に係る構成と同様である。従って、ＬＳＩチップを１列に接続して、演算対象となるデータを入出力する方法等に関しては、第１実施形態と同様であるため、説明を省略する。また、隣接したＬＳＩチップとのデータの入出力方法は、第１実施形態と同様に、入力配線と出力配線を共有したものであっても構わない。また、同様の機能を実現できるものであれば、その他の回路構成を用いても構わない。
【００６７】
また上記の説明では、累算回路は５１個の演算回路の乗算結果（５１個）を並列に累算する例を示したがこれに限られない。例えば、図１４に示すように、５１個の乗算回路がＢＵＳにより累算回路ブロックと接続され、パイプライン処理により、５１個の乗算結果をシリアルに累算する構成であっても良い。また、それ以外の構成であっても、同様の演算を実現できるデジタル回路であれば、演算回路ブロックはどのような構成をとっても構わない。
【００６８】
＜＜第３実施形態＞＞
第１、第２実施形態に係る構成においては、ＬＳＩチップが一列に接続されていた。本実施形態においては、複数のＬＳＩチップを平面的に配置、接続することで、更に高速な演算処理を実行可能な構成について説明する。
【００６９】
（演算処理システム）
図１５は、本実施形態に係る演算処理システムを模式的に示した図である。図１５に示すように演算処理システムは、１２個のＬＳＩチップ０１〜１２が３行４列に配置されて構成される。なお、ＬＳＩチップの個数は、演算処理対象のデータサイズに応じて変更することが可能であり、本実施形態においては１２個のケースを示している。またそれぞれのＬＳＩチップは、隣接するＬＳＩチップとデータを入力及び出力する配線５によって接続されている。ここで、本実施形態においては、それぞれのチップ間で入力及び出力されるデータサイズを６ビットとしてるが、その他のデータサイズを有するものであっても良い。その場合は、データサイズに応じて配線の本数が変わる。また図１５においては、前述した入力及び出力用の配線以外の配線は、本実施形態の説明に必要でないため、記載していない。
【００７０】
なお、本実施形態における演算処理システムで実現する演算処理は、第１実施形態と同様に、初段層に画像データを入力し、所定の２次元的に分布する重みを有するカーネルとの畳込み演算を階層的に繰り返し実行するものである。従って、演算処理の詳細は第１実施形態と同様であるため、説明を省略する。
【００７１】
（ＬＳＩチップの回路構成）
続いて図１６に、前記の演算処理システムを構成するＬＳＩチップ０１〜１２の回路構成について、図１６を参照して説明する。図１６は、ＬＳＩチップの回路構成を模式的に示したブロック図である。
【００７２】
図１６に示すように、本実施形態におけるＬＳＩチップは以下の回路ブロックを有する。
・メモリ回路ブロック（ＭＥＭ）１０。
・カーネルデータメモリ回路ブロック（ＫＭＥＭ）１１。
・レジスタ（ＲＥＧ）１２,１４。
・デジタル‐ＰＷＭ変換回路ブロック（Ｄ／Ｐ）１３,１５。
・ＰＷＭ‐アナログ変換回路（Ｐ／Ａ）１７。
・演算回路ブロック（ＰＷＭ−ＭＡＣ）１６。
・累算回路ブロック（ＡＣＣ）１９。
・ＰＷＭ‐デジタル変換回路ブロック（Ｐ／Ｄ）１８。
・マルチプレクサ（ＭＵＸ）２０。
・ルックアップテーブル（ＬＵＴ）２１。
・セレクタ（ＳＥＬ）３２。
なお、前記の各回路ブロックの構成、及び処理の流れは、後述するように、本実施形態ではセレクタ３２を介して隣接するチップとデータの入出力をすることを除いて第１実施形態と同様であるため、説明を省略する。また、ＬＳＩチップの演算回路ブロックによる畳込み演算の実行フローに関しても第１実施形態の場合と同様であるため、説明を省略する。
【００７３】
（並列演算）
図１７は、１２個のＬＳＩチップ０１〜１２を用いて３２０×２４０の２次元データに対してカーネルとの畳み込み演算を行う様子を模式的に示した図である。図１５、図１７に示すように本実施形態においては、第１実施形態でＬＳＩチップ４個を１列に並べたものをさらに３行配置することで、第１実施形態で逐次処理によって演算を実行した縦方向の演算ステップを１/３の演算ステップで実行することができる。なお、ＬＳＩチップ０１〜１２は、それぞれの演算領域における対応する位置のデータについて、他のＬＳＩチップによる演算と同期して畳み込み演算を行う。
【００７４】
本実施形態においては、図１７に示すよう３２０×２４０画素の画像データに対して、３行４列に並べたＬＳＩチップを演算処理システムとして構成している。このため、カーネルが、４個のＬＳＩチップがメモリ回路に保持している画素のデータ領域に重なるケースが生じる。そこで、本実施形態に係る構成においては、隣接するＬＳＩチップ間で、内蔵メモリに保持していない演算対象データ（カーネルがはみ出している部分のデータ）をお互いに入出力しあって補完する。なお隣接するＬＳＩチップとは、本実施形態の場合、斜め方向に並ぶチップ対も含む。
【００７５】
以下、それぞれのＬＳＩチップの演算処理において、カーネルが、隣接するＬＳＩチップが保持するデータ領域にはみ出した場合の、隣接するチップ間でのデータの入出力の状況を詳しく説明する。本実施形態においては、カーネルが各チップ内のメモリ回路からはみ出すケースとして、以下の３通りがあり得る。
（１）左又は右にはみ出すケース
（２）左又は右、及び、下又は左下又は右下にはみ出すケース
（３）左又は右、及び、上又は左上又は右上にはみ出すケース
これらのうち、（１）のケースは、左右に隣接したＬＳＩチップ間でのみデータを入出力し合うものであり、従って、各ＬＳＩチップ間のデータの流れは第１実施形態と同様である。このため、説明を省略する。
【００７６】
続いて（２）（３）のケースについて、図１８,１９を用いて説明を行う。なお、（２）（３）におけるカーネルが左・右にはみ出した場合の処理は、（１）のケースと同様に、左右に隣接したＬＳＩチップ間でのみデータを入出力し合うものであり、各ＬＳＩチップ間のデータの流れは第１実施形態と同様である。このため、本実施形態においては詳細な説明を省略する。
【００７７】
図１８,１９は、各チップのメモリ回路ブロックに保持した画像データまたは前段層の演算結果から、演算対象となるデータを読み出し、隣接するチップのレジスタに入出力する際の入力行のメモリ読み出し順序、及びデータの流れを示した図である。ただし、図１８は上記の（２）のケース、図１９は上記の（３）のケースに係る図である。なお、図１８,１９には、各ＬＳＩチップ内のメモリ回路ブロック中の、演算対象としている８０×８０の領域のみが示されている。また、後段層における演算の算出位置をターゲット行として重ねて表示されている。
【００７８】
（２）においては、一つのメモリブロックの左側から一つずつデータを読み出していく（図１８中の入力行）ため、まず図１８の（ａ）に示すように、メモリ回路の左上側に保持されているデータが、左上側及び上側に隣接するＬＳＩチップに受け渡される。例えば、１８０１の位置における演算を行うために、１８１１のデータがＬＳＩチップ０１に受け渡され、例えば、１８０２の位置における演算を行うために、１８１１のデータがＬＳＩチップ０２に受け渡されている。ここで、受け渡されたデータは、後段層のターゲット行の演算に使用される。すなわち（ａ）のデータのやり取りは、各ＬＳＩチップにおけるカーネルのはみ出しが、カーネルの右下側及び下側に発生している場合に相当する。なお図１８では省略されているが、この際前記の受け渡されたデータは、このデータを保持しているメモリ回路ブロック（ＭＥＭ）１０を有するＬＳＩチップ自体のレジスタ（ＲＥＧ）１４にも入力されている。
【００７９】
次に、図１８の（ｂ）に示すように、メモリ回路からのデータの読み出しが右側に移動していくと（図１８中の入力行）、メモリ回路の中央上側に保持されているデータが、上側に隣接するＬＳＩチップに受け渡される。例えば、１８０３の位置における演算を行うために、１８１２のデータがＬＳＩチップ０２に受け渡されている。ここで、受け渡されたデータは、後段層のターゲット行の演算に使用される。すなわち（ｂ）のデータのやり取りは、各ＬＳＩチップにおけるカーネルのはみ出しが、カーネルの下側に発生している場合に相当する。なお図１８では省略されているが、この際前記の受け渡されたデータは、このデータを保持しているメモリ回路ブロック（ＭＥＭ）１０を有するＬＳＩチップ自体のレジスタ（ＲＥＧ）１４にも入力されている。
【００８０】
そして、さらにメモリ回路からのデータの読み出しが右側に移動していくと（図１８中の入力行）、今度は各ＬＳＩチップにおけるカーネルのはみ出しが、カーネルの左下側及び下側に発生する。このため、図１８（ｃ）に示すように、メモリ回路の右上側に保持されているデータが、右上側及び上側に隣接するＬＳＩチップに受け渡される。例えば、１８０４の位置における演算を行うために、１８１３のデータがＬＳＩチップ０１に受け渡され、例えば、１８０５の位置における演算を行うために、１８１３のデータがＬＳＩチップ０２に受け渡されている。ここで、受け渡されたデータは、後段層のターゲット行の演算に使用される。なお図１８では省略されているが、この際前記の受け渡されたデータは、このデータを保持しているメモリ回路ブロック（ＭＥＭ）１０を有するＬＳＩチップ自体のレジスタ（ＲＥＧ）１４にも入力されている。
【００８１】
続いて（３）のケースについて、図１９を用いて説明を行う。（３）においては、一つのメモリブロックの左側から一つずつデータを読み出していくため（図１９中の入力行）、まず図１９の（ａ）に示すように、メモリ回路の左下側に保持されているデータが、左下側及び下側に隣接するＬＳＩチップに受け渡される。例えば、１９０１の位置における演算を行うために、１９１１のデータがＬＳＩチップ０５に受け渡され、例えば、１９０２の位置における演算を行うために、１９１１のデータがＬＳＩチップ０６に受け渡されている。ここで、受け渡されたデータは、後段層のターゲット行の演算に使用される。すなわち（ａ）のデータのやり取りは、各ＬＳＩチップにおけるカーネルのはみ出しが、カーネルの右上側及び上側に発生している場合に相当する。なお図１９では省略されているが、この際前記の受け渡されたデータは、このデータを保持しているメモリ回路ブロック（ＭＥＭ）１０を有するＬＳＩチップ自体のレジスタ（ＲＥＧ）１４にも入力されている。
【００８２】
次に、図１９の（ｂ）に示すように、メモリ回路からのデータの読み出しが右側に移動していくと（図中の入力行）、メモリ回路の中央上側に保持されているデータが、下側に隣接するＬＳＩチップに受け渡される。例えば、１９０３の位置における演算を行うために、１９１２のデータがＬＳＩチップ０６に受け渡されている。ここで、受け渡されたデータは、後段層のターゲット行の演算に使用される。すなわち（ｂ）のデータのやり取りは、各ＬＳＩチップにおけるカーネルのはみ出しが、カーネルの上側に発生している場合に相当する。なお図１９では省略されているが、この際前記の受け渡されたデータは、このデータを保持しているメモリ回路ブロック（ＭＥＭ）１０を有するＬＳＩチップ自体のレジスタ（ＲＥＧ）１４にも入力されている。
【００８３】
そして、さらにメモリ回路からのデータの読み出しが右側に移動していくと（図中の入力行）、今度は各ＬＳＩチップにおけるカーネルのはみ出しが、カーネルの左上側及び上側に発生する。このため、図１９の（ｃ）に示すように、メモリ回路の右下側に保持されているデータが、右下側及び下側に隣接するＬＳＩチップに受け渡される。例えば、１９０４の位置における演算を行うために、１９１３のデータがＬＳＩチップ０５に受け渡され、例えば、１９０５の位置における演算を行うために、１９１３のデータがＬＳＩチップ０６に受け渡されている。ここで、受け渡されたデータは、後段層のターゲット行の演算に使用される。なお図１９では省略されているが、この際前記の受け渡されたデータは、このデータを保持しているメモリ回路ブロック（ＭＥＭ）１０を有するＬＳＩチップ自体のレジスタ（ＲＥＧ）１４にも入力されている。
【００８４】
なお、以上の説明は、隣接するＬＳＩチップが８個存在するケースに関するものであり、隣接するＬＳＩチップが８個未満の場合は、前述したデータのやり取りは発生しない場合がある。ただしその場合は、単に入出力配線に隣接ＬＳＩチップが接続されないに過ぎず、特別の回路構成や制御を必要とするものでは無い。
【００８５】
このようにして、１２個のＬＳＩチップのそれぞれのシフトレジスタには、演算対象となるデータ１３０個が正しく入力され、保持される。この場合、各ＬＳＩチップのメモリ読み出し位置は、１２個のＬＳＩチップで全て共通なため、読み出し時の制御が簡易になる。また、各ＬＳＩチップで演算対象とするカーネルの重みデータも共通であるため、制御が簡易になる。
【００８６】
続いて図２０に、隣接するＬＳＩチップとのデータの流れを加えたブロック図を示す。図２０に示したように、各ＬＳＩチップは、セレクタ３２を介して、最大８個の隣接するＬＳＩチップと接続されている。すなわち、隣接するチップ間で前述したようにデータを入出力する際に、セレクタを切り替えることで、適切な隣接チップへデータを出力し、かつ適切な隣接チップからの入力を受けるものである。なお、隣接したＬＳＩチップ間で以上説明したようにデータを入出力できるものであれば、配線構造及びセレクタ等の構成はその他のものを使用しても構わない。
【００８７】
以上説明したように、本実施形態のようにＬＳＩチップを行列状に接続して並列動作させることにより、大きなサイズの画像をより高速に演算処理することが可能となる。また、接続するＬＳＩチップの個数を変えることで、ＬＳＩチップの回路構成を変更することなく、様々なサイズの演算対象データに対して畳み込み演算を実行することが可能となる。
【００８８】
＜＜第４実施形態＞＞
第３実施形態に係る構成においては、演算回路ブロック１６がアナログ回路で構成されていた。本実施形態では、演算回路ブロックをデジタル回路で構成した場合について説明する。本実施形態に係る構成は、演算回路ブロックのデジタル回路化に伴う変更以外は、全て第３実施形態と同様である。このため、本実施形態においては、第３実施形態と異なる部分についてのみ説明を行い、それ以外は第３実施形態と同様であるため説明を省略する。
【００８９】
（ＬＳＩチップの回路構成）
図２１は、本実施形態における演算処理システムを構成するＬＳＩチップの回路構成を模式的に示したブロック図である。図２１に示すように、本実施形態におけるＬＳＩチップは以下の回路ブロックを有する。
・メモリ回路ブロック（ＭＥＭ）１０。
・カーネルデータメモリ回路ブロック（ＫＭＥＭ）１１。
・レジスタ（ＲＥＧ）１２,１４。
・デジタル演算回路ブロック（Ｄ−ＭＡＣ）２９。
・セレクタ（ＳＥＬ）３２。
・累算回路ブロック（ＡＣＣ）１９。
・マルチプレクサ（ＭＵＸ）２０。
・ルックアップテーブル（ＬＵＴ）２１。
なお、図２１では、配線は省略している。
【００９０】
（処理の流れ）
続いて、前記の各回路ブロックが実行する処理の流れについて、図２２を参照して説明する。図２２は、回路ブロック間のデータの流れを模式的に示したブロック図である。
【００９１】
画像データまたは前段層の演算結果は、メモリ回路ブロック（ＭＥＭ）１０に記憶される。また、カーネルの重みに関するデータは、カーネルデータメモリ回路ブロック（ＫＭＥＭ）１１に記憶される。
【００９２】
カーネルデータメモリ回路ブロック（ＫＭＥＭ）１１に保持されたカーネルの重みに関するデジタルデータは、レジスタ（ＲＥＧ）１２に入力されてパラレルデータに変換され、さらに演算回路ブロック（Ｄ−ＭＡＣ）２９に入力される。画像データまたは前段層の演算結果は、レジスタ（ＲＥＧ）１４を経て、演算回路ブロック（Ｄ−ＭＡＣ）２９に入力される。この時、メモリ回路ブロック（ＭＥＭ）１０から出力された画像データまたは前段層の演算結果のデータは、同時にセレクタ（ＳＥＬ）３２を介して、隣接する適切なＬＳＩチップに対して出力される。またレジスタ（ＲＥＧ）１４には、図２２に示すように、隣接したＬＳＩチップから出力された画像データまたは前段層の演算結果のデータが入力される。ここでレジスタ（ＲＥＧ）１４は、メモリ回路ブロック（ＭＥＭ）１０が出力するシリアルデータをパラレルデータに変換する。
【００９３】
演算回路ブロック（Ｄ−ＭＡＣ）２９はデジタル乗算回路（ＭＵＬ）３０から構成され、入力されたカーネルの重みに関するデータと、画像データまたは前段層の演算結果に対して、畳込み演算処理を並列に実行する。演算回路の出力結果は、累算回路ブロック（ＡＣＣ）１９によって累算される。累算結果はマルチプレクサ（ＭＵＸ）２０を経てルックアップテーブル（ＬＵＴ）２１により非線形変換され、再びメモリ回路ブロック（ＭＥＭ）１０に記憶される。
【００９４】
以上の処理を特徴数回及び階層数回繰り返すことにより、階層型コンボリューショナル・ニューラルネットワークの演算処理が実現される。
【００９５】
以上のように、本実施形態における構成によれば、第３実施形態における演算回路が実行する演算をデジタル的に実行することができる。なお、前述したＬＳＩチップを構成する回路ブロックの中で、演算回路ブロック（Ｄ−ＭＡＣ）２９の詳細な回路構成は、第２実施形態で説明したものと同一であるため、詳しい説明を省略する。この時、本実施形態における演算処理システムは、前述した演算回路ブロックのデジタル回路化に伴う変更以外、全て第３実施形態と同様である。従って、ＬＳＩチップを行列状に接続して、演算対象となるデータを入出力する方法等に関しては、第３実施形態と同様として説明を省略する。
【図面の簡単な説明】
【００９６】
【図１】演算処理システムを模式的に示した図である。
【図２】階層型コンボリューショナル・ニューラルネットワークを用いて顔の位置検出を行う処理を模式的に示した図である。
【図３】ＬＳＩチップの回路構成を模式的に示したブロック図である。
【図４】回路ブロック間のデータの流れを模式的に示したブロック図である。
【図５】演算回路ブロックの回路構成を示した図である。
【図６】演算回路ブロックによる畳込み演算の様子を模式的に示した図である。
【図７】４つのＬＳＩチップを用いて２次元データに対してカーネルとの畳み込み演算を行う様子を模式的に示した図である。
【図８】隣接するＬＳＩチップのメモリ回路ブロックから演算対象となるデータを読み出す際の、メモリ読み出し順序、データの流れを模式的に示した図である。
【図９】隣接するＬＳＩチップとの入出力配線が共用された構成を例示的に示した図である。
【図１０】チップ内部で配線が共有した構成を例示的に示した図である。
【図１１】ＬＳＩチップの回路構成を模式的に示したブロック図である。
【図１２】回路ブロック間のデータの流れを模式的に示したブロック図である。
【図１３】演算回路ブロックの回路構成を示した図である。
【図１４】演算回路ブロックの回路構成を示した図である。
【図１５】演算処理システムを模式的に示した図である。
【図１６】ＬＳＩチップの回路構成を模式的に示したブロック図である。
【図１７】１２個のＬＳＩチップを用いて２次元データに対してカーネルとの畳み込み演算を行う様子を模式的に示した図である。
【図１８】隣接するＬＳＩチップのメモリ回路ブロックから演算対象となるデータを読み出す際の、メモリ読み出し順序、データの流れを模式的に示した図である。
【図１９】隣接するＬＳＩチップのメモリ回路ブロックから演算対象となるデータを読み出す際の、メモリ読み出し順序、データの流れを模式的に示した図である。
【図２０】回路ブロック間のデータの流れを模式的に示したブロック図である。
【図２１】演算処理システムを構成するＬＳＩチップの回路構成を模式的に示したブロック図である。
【図２２】回路ブロック間のデータの流れを模式的に示したブロック図である。
【図２３】演算回路が実装された複数の基板を接続してなる演算処理システムの構成例を模式的に示した図である。
【図２４】２次元データに対して畳み込み演算を実行するＬＳＩチップにおける、データの流れを模式的に示した図である。
【図１】
2007206887.tif 000003
【図２】
2007206887.tif 000004
【図３】
2007206887.tif 000005
【図４】
2007206887.tif 000006
【図５】
2007206887.tif 000007
【図６】
2007206887.tif 000008
【図７】
2007206887.tif 000009
【図８】
2007206887.tif 000010
【図９】
2007206887.tif 000011
【図１０】
2007206887.tif 000012
【図１１】
2007206887.tif 000013
【図１２】
2007206887.tif 000014
【図１３】
2007206887.tif 000015
【図１４】
2007206887.tif 000016
【図１５】
2007206887.tif 000017
【図１６】
2007206887.tif 000018
【図１７】
2007206887.tif 000019
【図１８】
2007206887.tif 000020
【図１９】
2007206887.tif 000021
【図２０】
2007206887.tif 000022
【図２１】
2007206887.tif 000023
【図２２】
2007206887.tif 000024
【図２３】
2007206887.tif 000025
【図２４】
2007206887.tif 000026