(57)【要約】【課題】トラフィックの停滞を軽減する。【解決手段】ニューラルネットワーク装置は、複数のコアと複数のルータとを備える。複数のコアは、それぞれが、ニューラルネットワークにおける一部の構成要素の演算および処理を実行する。複数のルータは、複数のコアのそれぞれから出力されたデータを複数のコアの何れか１つのコアに転送する。複数のコアのそれぞれは、ニューラルネットワークを順方向に伝播する順方向データ、および、ニューラルネットワークを逆方向に伝播する逆方向データの少なくとも一方を出力する。複数のルータのそれぞれは、複数の部分領域の何れか１つに含まれている。複数の部分領域のそれぞれは、順方向領域または逆方向領域である。順方向領域に含まれるルータは、同一部分領域内の他のルータに対して順方向データを送信する。逆方向領域に含まれるルータは、同一部分領域内の他のルータに対して逆方向データを送信する。【選択図】図６
2020046821.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが、ニューラルネットワークにおける一部の構成要素の演算および処理を実行する複数のコアと、
前記複数のコアのそれぞれから出力されたデータを、前記ニューラルネットワークの構成に従って演算および処理がされるように前記複数のコアの何れか１つのコアに転送する複数のルータと
を備え、
前記複数のコアのそれぞれは、前記ニューラルネットワークを順方向に伝播する順方向データ、および、前記ニューラルネットワークを逆方向に伝播する逆方向データの少なくとも一方を出力し、
前記複数のルータのそれぞれは、複数の部分領域の何れか１つに含まれており、
前記複数の部分領域のそれぞれは、順方向領域または逆方向領域であり、
前記順方向領域に含まれるルータは、同一部分領域内の他のルータに対して前記順方向データを送信し、
前記逆方向領域に含まれるルータは、同一部分領域内の他のルータに対して前記逆方向データを送信する
ニューラルネットワーク装置。
【請求項２】
前記順方向領域に含まれるルータは、同一部分領域内の他のルータに対して前記逆方向データを送信せず、
前記逆方向領域に含まれるルータは、同一部分領域内の他のルータに対して前記順方向データを送信しない
請求項１に記載のニューラルネットワーク装置。
【請求項３】
前記複数のルータのそれぞれは、他の部分領域に含まれる何れかの他のルータに接続された領域外送信部および領域外受信部を有し、
前記領域外送信部は、前記順方向データおよび前記逆方向データを前記接続された他のルータに送信し、
前記領域外受信部は、前記順方向データおよび前記逆方向データを前記接続された他のルータから受信する
請求項１または２に記載のニューラルネットワーク装置。
【請求項４】
前記複数のルータのそれぞれは、同一部分領域内に含まれる何れかの他のルータに接続された領域内送信部および領域内受信部をさらに有し、
前記順方向領域に含まれるルータが有する前記領域内送信部は、前記順方向データを前記接続された他のルータに送信し、
前記順方向領域に含まれるルータが有する前記領域内受信部は、前記順方向データを前記接続された他のルータから受信する
請求項３に記載のニューラルネットワーク装置。
【請求項５】
前記逆方向領域に含まれるルータが有する前記領域内送信部は、前記逆方向データを前記接続された他のルータに送信し、
前記逆方向領域に含まれるルータが有する前記領域内受信部は、前記逆方向データを前記接続された他のルータから受信する
請求項４に記載のニューラルネットワーク装置。
【請求項６】
前記複数のルータのうちの所定のルータは、前記複数のコアのうちの何れかのコアに接続されたコア送信部およびコア受信部をさらに有し、
前記コア送信部は、前記順方向データおよび前記逆方向データを前記接続されたコアに送信し、
前記コア受信部は、前記順方向データおよび前記逆方向データを前記接続されたコアから受信する
請求項５に記載のニューラルネットワーク装置。
【請求項７】
前記複数の部分領域は、垂直方向に積層される複数の回路である
請求項６に記載のニューラルネットワーク装置。
【請求項８】
前記複数の部分領域のそれぞれは、
マトリクス状に配置されたＭ（Ｍは２以上）×Ｎ（Ｎは２以上）個のルータと、
前記Ｍ×Ｎ個のルータに一対一に対応したＭ×Ｎ個のコアと、
を含む請求項７に記載のニューラルネットワーク装置。
【請求項９】
前記複数のルータのそれぞれは、
直下の層に形成された部分領域に含まれる同一のマトリクス位置の他のルータに接続される前記領域外送信部および前記領域外受信部を含む第１組と、
直上の層に形成された部分領域に含まれる同一のマトリクス位置の他のルータに接続される前記領域外送信部および前記領域外受信部を含む第２組と、
を有する請求項８に記載のニューラルネットワーク装置。
【請求項１０】
前記複数のルータのそれぞれは、
同一部分領域内の行方向に隣接する他のルータに接続される前記領域内送信部および前記領域内受信部を含む第３組と、
同一部分領域内の前記第３組とは逆の行方向に隣接する他のルータに接続される前記領域内送信部および前記領域内受信部を含む第４組と、
同一部分領域内の列方向に隣接する他のルータに接続される前記領域内送信部および前記領域内受信部を含む第５組と、
同一部分領域内の前記第５組とは逆の列方向に隣接する他のルータに接続される前記領域内送信部および前記領域内受信部を含む第６組と、
をさらに有する
請求項９に記載のニューラルネットワーク装置。
【請求項１１】
前記複数の部分領域のそれぞれは、
Ｍ（Ｍは１以上）×Ｎ（Ｎは２以上）個のルータと、
前記Ｍ×Ｎ個のルータに一対一に対応したＭ×Ｎ個のコアと、
を含む請求項７に記載のニューラルネットワーク装置。
【請求項１２】
前記複数の部分領域は、前記順方向領域と前記逆方向領域とが交互に積層されている
請求項７から１１の何れか１項に記載のニューラルネットワーク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ニューラルネットワーク装置に関する。
【背景技術】
【０００２】
近年、ハードウェア化したニューラルネットワークを用いて、脳型プロセッサを実現する技術が提案されている。脳型プロセッサでは、内部で学習器がニューラルネットワークに誤差データを与えて、ニューラルネットワークに設定されている重み係数等を最適化する。
【０００３】
従来のニューラルネットワークは、通常の演算処理を停止した状態で学習処理を実行し、重み係数を最適化する。このため、従来のニューラルネットワークは、外部のプロセッサにより学習処理を実行させることができた。
【０００４】
しかし、脳型プロセッサを実現する場合、ニューラルネットワークは、演算処理と学習処理とを並行して実行しなければならない。従って、この場合、ニューラルネットワークは、外部装置から受信した演算対象データを順方向に伝播させる処理と、学習用の誤差データを逆方向に伝播させる処理とを並行して実行しなければならない。
【０００５】
しかし、ニューラルネットワークに対して順方向にデータを伝播させる処理と逆方向にデータを伝播させる処理とを並行に実行した場合、ニューラルネットワーク内でのトラフィックが停滞し、コストの増大および処理時間の増加を招いてしまう。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平４−１３０９６８号公報
【特許文献２】米国特許出願公開第２０１６／０３３６０６４号明細書
【特許文献３】米国特許出願公開第２０１６／０２８４４００号明細書
【特許文献４】米国特許出願公開第２０１５／００８８７９７号明細書
【０００７】
【非特許文献１】Geoffrey  W.  Burr,  “Analog  resistive  neuromorphic  hardware”,  IBM  Research  -  Almaden.,  BioComp  Summer  School,  ２０１７年６月３０日
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明が解決しようとする課題は、演算処理と学習処理とを並行に実行しつつ、内部でのトラフィックの停滞を軽減したニューラルネットワーク装置を提供することにある。
【課題を解決するための手段】
【０００９】
実施形態に係るニューラルネットワーク装置は、複数のコアと、複数のルータとを備える。前記複数のコアは、それぞれが、ニューラルネットワークにおける一部の構成要素の演算および処理を実行する。前記複数のルータは、前記複数のコアのそれぞれから出力されたデータを、前記ニューラルネットワークの構成に従って演算および処理がされるように前記複数のコアの何れか１つのコアに転送する。前記複数のコアのそれぞれは、前記ニューラルネットワークを順方向に伝播する順方向データ、および、前記ニューラルネットワークを逆方向に伝播する逆方向データの少なくとも一方を出力する。前記複数のルータのそれぞれは、複数の部分領域の何れか１つに含まれている。前記複数の部分領域のそれぞれは、順方向領域または逆方向領域である。前記順方向領域に含まれるルータは、同一部分領域内の他のルータに対して前記順方向データを送信する。前記逆方向領域に含まれるルータは、同一部分領域内の他のルータに対して前記逆方向データを送信する。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係るニューラルネットワーク装置の構成図。
【図２】通常の演算処理（順方向処理）の内容を示す図。
【図３】学習処理（逆方向処理）の内容を示す図。
【図４】データ処理部の構成を示す図。
【図５】ニューラルネットワークに含まれる構成要素とコアとの対応関係図。
【図６】データ処理部内の複数の部分領域を示す図。
【図７】複数のコアおよび複数のルータの間で送受信されるデータを示す図。
【図８】複数のコアおよび複数のルータの間で送受信されるデータを示す図。
【図９】複数の部分領域のそれぞれの種類を示す図。
【図１０】ルータの構成を示す図。
【図１１】ルーティング部の処理手順を示すフローチャートである。
【図１２】順方向領域に含まれるルータが送信するデータを示す図。
【図１３】逆方向領域に含まれるルータが送信するデータを示す図。
【図１４】順方向領域に含まれるルータから送信された逆方向データの経路図。
【図１５】逆方向領域に含まれるルータから送信された順方向データの経路図。
【図１６】データ処理部の構成の変形例を示す図。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら実施形態に係るニューラルネットワーク装置１０について説明する。実施形態に係るニューラルネットワーク装置１０は、ニューラルネットワークにおける通常のデータ処理と学習処理とを並行に実行しつつ、内部でのトラフィックの混雑を軽減することができる。
【００１２】
図１は、実施形態に係るニューラルネットワーク装置１０の構成を示す図である。ニューラルネットワーク装置１０は、データ処理部２０と、通信部２２と、学習部２４と、設定部２６とを備える。
【００１３】
データ処理部２０、通信部２２、学習部２４および設定部２６は、１つの半導体装置内に実装されてもよいし、１つの基板上に設けられた複数の半導体装置に実装されていてもよいし、複数の基板に設けられた複数の半導体装置に実装されていてもよい。また、学習部２４および設定部２６は、同一のプロセッサにより実現されてもよい。
【００１４】
ニューラルネットワーク装置１０は、外部装置から入力データを受信する。ニューラルネットワーク装置１０は、受信した入力データに対してニューラルネットワークに従った演算処理を実行する。そして、ニューラルネットワーク装置１０は、ニューラルネットワークに従った演算処理の結果である出力データを外部装置に送信する。
【００１５】
データ処理部２０は、ニューラルネットワークに基づく通常の演算処理を実行する。データ処理部２０は、例えば、ニューラルネットワークに基づく通常の演算処理として、パターン認識処理、データ解析処理および制御処理等の様々な情報処理を実行する。
【００１６】
また、データ処理部２０は、通常の演算処理と並行して、学習処理を実行する。データ処理部２０は、学習処理により、通常の演算処理をより適切に行うように、ニューラルネットワークに含まれる複数の係数（重み）を変更する。
【００１７】
通信部２２は、外部装置とデータの送受信をする。具体的には、通常の演算処理において、通信部２２は、外部装置から、演算対象となる入力データを受信する。また、通信部２２は、外部装置へ、演算結果である出力データを送信する。
【００１８】
学習部２４は、通常の演算処理においてデータ処理部２０から出力された出力データを取得する。そして、学習処理において、学習部２４は、出力データの誤差を表す誤差データを算出して、データ処理部２０に与える。
【００１９】
さらに、学習部２４は、データ処理部２０が複数の層に対して誤差データを逆方向に伝播した結果得られた情報に基づき、ニューラルネットワークに含まれる複数の係数（重み）を変更する。例えば、学習部２４は、ニューラルネットワークに含まれる複数の係数のそれぞれについて、誤差の勾配を算出する。そして、学習部２４は、誤差の勾配を例えば０とする方向に、複数の係数を変更する。
【００２０】
設定部２６は、学習部２４によりニューラルネットワークに含まれる複数の係数が変更された場合、データ処理部２０に対して、変更後の係数を設定する。
【００２１】
図２は、ニューラルネットワークにおける通常の演算処理（順方向処理）の内容を示す図である。
【００２２】
ニューラルネットワークは、複数の層を含む。複数の層のそれぞれは、受け取ったデータに対して所定の演算および処理をする。ニューラルネットワークに含まれる複数の層のそれぞれは、複数のノードを含む。１つの層に含まれるノードの数は、層毎に異なってもよい。
【００２３】
それぞれのノードには、活性化関数が設定されている。活性化関数は、層毎に異なってもよい。また、同一の層において、ノード毎に活性化関数が異なってもよい。また、それぞれのノードとノードとを結ぶリンクには、係数（重み）が設定されている。ニューラルネットワークは、ノードから次のノードへとデータを伝播する場合に、そのデータに対してリンクに設定された係数を乗じる。これらの係数は、学習処理により適切に変更される。
【００２４】
データ処理部２０は、ニューラルネットワークにおける通常の演算処理において、ニューラルネットワークにおける複数の層に対して計算データを順方向に伝播させながら演算を実行させる順方向処理を実行する。例えば、順方向処理において、データ処理部２０は、入力層に入力データを与える。続いて、順方向処理において、データ処理部２０は、それぞれの層から出力された計算データを、直後の層へと順方向に伝播させる。そして、順方向処理において、データ処理部２０は、出力層から出力された計算データを、出力データとして外部装置へと送信する。
【００２５】
ここで、本実施形態においては、ニューラルネットワークにおける通常の演算処理において、複数の層を順方向に伝播するデータを、順方向データと呼ぶ。
【００２６】
図３は、ニューラルネットワークにおける学習処理（逆方向処理）の内容を示す図である。それぞれのノードには、誤差関数が設定されている。誤差関数は、そのノードに設定されている活性化関数の導関数である。すなわち、誤差関数は、そのノードに設定されている活性化関数の微分である。
【００２７】
学習部２４は、順方向処理が終了した場合、順方向処理で出力された出力データに対する誤差を表す誤差データを算出する。続いて、逆方向処理において、データ処理部２０は、学習部２４により生成された誤差データを出力層に与える。そして、逆方向処理において、データ処理部２０は、それぞれの層から出力された複数のデータを、直前の層へと逆方向に伝播させる。
【００２８】
ここで、本実施形態においては、ニューラルネットワークにおける学習処理において、複数の層を逆方向に伝播するデータを、逆方向データと呼ぶ。
【００２９】
図４は、データ処理部２０の構成を示す図である。データ処理部２０は、複数のコア３０と、複数のルータ４０と、複数の通信路４２とを有する。
【００３０】
複数のコア３０は、それぞれが、ニューラルネットワークにおける一部の構成要素の演算および処理を実行する。複数のコア３０のそれぞれは、プロセッサであってもよいし、専用のハードウェア回路であってもよいし、デジタル回路であってもよいし、アナログ回路であってもよい。また、複数のコア３０のそれぞれは、記憶部を有し、ニューラルネットワークに含まれる係数を記憶してもよい。
【００３１】
複数のルータ４０は、複数のコア３０のそれぞれから出力されたデータを、ニューラルネットワークの構成に従って演算および処理が実行されるように、通信路４２を介して複数のコア３０の何れか１つのコア３０に転送する。
【００３２】
例えば、複数のルータ４０のそれぞれは、通信路４２の分岐点に配置される。複数のルータ４０のそれぞれは、通信路４２を介して複数の他のルータ４０と直接接続される。複数のルータ４０のそれぞれは、通信路４２を介して直接接続された他のルータ４０とデータを送受信する。
【００３３】
また、複数のルータ４０のうちの所定のルータ４０は、さらに、１または複数のコア３０と接続され、接続されたコア３０とデータを送受信してもよい。本実施形態においては、複数のコア３０は、複数のルータ４０に対して一対一に対応して設けられ、対応して設けられたルータ４０とデータを送受信する。
【００３４】
このような複数のルータ４０のそれぞれは、当該ルータ４０と接続された送信元であるルータ４０またはコア３０から受信したデータを、送信先である当該ルータ４０と接続された他のルータ４０またはコア３０へとデータを転送する。
【００３５】
図５は、ニューラルネットワークに含まれる構成要素と、その構成要素での処理を実行するコア３０との対応関係を示す図である。
【００３６】
複数のコア３０のそれぞれには、ニューラルネットワークに含まれる複数の構成要素のうちの何れかが予め割り当てられている。複数のコア３０のそれぞれは、ニューラルネットワークに含まれる複数の構成要素のうち、予め割り当てられた構成要素の演算または処理を実行する。
【００３７】
ニューラルネットワークに含まれる構成要素とは、例えば、ノードにおける活性化関数の演算および誤差関数の演算、リンクに設定された係数の乗算、および、係数が乗算されたデータの加算、外部装置からのデータの入力、外部装置へのデータの出力、誤差データの取得、および、勾配データの出力等である。ニューラルネットワークに含まれる全ての構成要素が少なくとも何れかのコア３０で実行されるように、複数のコア３０のそれぞれに構成要素が割り当てられている。
【００３８】
１つのコア３０において実行される処理は、例えば、１つのノードで実行される処理であってもよい。例えば、ある１つのコア３０は、ある層のある１つのノードにおける、リンクに設定された係数の乗算、前段の層から受け取った複数のデータの加算、活性化関数の演算または誤差関数の演算等を実行する。
【００３９】
また、１つのコア３０において実行される演算および処理は、１つのノードの一部分の演算であってもよい。例えば、ある１つのコア３０は、１つのノードにおける活性化関数の演算を実行し、他の１つのコア３０は、そのノードにおける係数の乗算および加算を実行してもよい。また、１つのコア３０において実行される演算および処理は、１つの層に含まれる複数のノードにおける全ての処理であってもよい。
【００４０】
このようにデータ処理部２０は、ニューラルネットワークに含まれる複数の構成要素の処理を複数のコア３０に分散して実行することができる。
【００４１】
図６は、複数の部分領域２８を示す図である。データ処理部２０は、複数の部分領域２８を含む。複数のコア３０および複数のルータ４０は、複数の部分領域２８の何れか１つに含まれる。
【００４２】
１つの部分領域２８は、例えば、回路内の全部または一部分の領域である。また、１つの部分領域２８は、半導体装置における、一部分の領域であってもよい。また、１つの部分領域２８は、半導体装置における、積層された複数の基板層のうちの１つであってもよい。
【００４３】
本実施形態においては、複数の部分領域２８のそれぞれは、半導体装置内の回路である。複数の部分領域２８は、半導体装置内において垂直方向に積層された層に形成されている。例えば、少なくとも上下に隣接した２つの部分領域２８は、電気的に接続可能である。なお、複数の部分領域２８は、例えば、３次元実装された複数の半導体チップであってもよし、１つのパッケージにモジュール化される複数の回路基板であってもよい。
【００４４】
本実施形態において、複数の部分領域２８のそれぞれは、Ｍ（Ｍは２以上）×Ｎ（Ｎは２以上）個のコア３０と、Ｍ×Ｎ個のルータ４０とを含む。Ｍ×Ｎ個のコア３０は、Ｍ×Ｎ個のルータ４０に対して一対一に対応して設けられる。Ｍ×Ｎ個のコア３０のそれぞれは、対応するルータ４０と接続される。
【００４５】
Ｍ×Ｎ個のルータ４０は、行方向（第１配列方向）および列方向（第２配列方向）に並べてマトリクス状に配列される。例えば、列方向は、行方向に対して直交する方向である。
【００４６】
複数の部分領域２８のそれぞれは、複数の第１通信路４２−１と、複数の第２通信路４２−２とを含む。複数の第１通信路４２−１および複数の第２通信路４２−２は、クロスバーネットワークを構成する。すなわち、複数の第１通信路４２−１は、部分領域２８内において、それぞれが列方向に直線上に延び、行方向に等間隔で配列される。複数の第２通信路４２−２は、部分領域２８内において、それぞれが行方向に直線上に延び、列方向に等間隔で配列される。そして、複数の第１通信路４２−１のそれぞれは、複数の第２通信路４２−２の全てと交差する。
【００４７】
Ｍ×Ｎ個のルータ４０は、このようなクロスバーネットワークにおける、第１通信路４２−１と第２通信路４２−２との全ての交点に設けられる。これにより、Ｍ×Ｎ個のルータ４０は、部分領域２８内において、何れかのコア３０から出力されたデータを、Ｍ×Ｎ個のコア３０の何れにも転送することができる。
【００４８】
データ処理部２０は、さらに、複数の第３通信路４２−３を含む。複数の第３通信路４２−３のそれぞれは、高さ方向に隣接する２つの部分領域２８に含まれる同一のマトリクス位置の２つのルータ４０を接続する。従って、ある部分領域２８に含まれるルータ４０は、直上および直下の他の部分領域２８に含まれる同一のマトリクス位置の他のルータ４０に、第３通信路４２−３を介して接続される。なお、最も上の部分領域２８に含まれるルータ４０は、直下の他の部分領域２８に含まれる同一のマトリクス位置の他のルータ４０にのみ接続される。また、最も下の部分領域２８に含まれるルータ４０は、直上の他の部分領域２８に含まれる同一のマトリクス位置の他のルータ４０にのみ接続される。
【００４９】
これにより、データ処理部２０に含まれる複数のルータ４０は、データ処理部２０に含まれる何れかのコア３０から出力されたデータを、データ処理部２０に含まれる複数のコア３０の何れにも転送することができる。
【００５０】
なお、本実施形態では、ＭおよびＮは、２以上としている。しかし、ＭおよびＮのうち、一方が１以上、他方が２以上であってもよい。この場合、複数の部分領域２８のそれぞれは、１行のネットワークまたは１列のネットワークとなる。
【００５１】
図７は、複数のコア３０および複数のルータ４０の間で送受信されるデータの一例を示す図である。順方向データおよび逆方向データは、例えば、実体データと、ヘッダとを含む。実体データは、ニューラルネットワークにおいて演算および処理がされる対象である。ヘッダは、パケットを目的のコア３０へと転送させるために必要な情報、および、実体データに対して演算および処理をするために必要な情報等を含む。
【００５２】
例えば、ヘッダは、ＩＤと、データ種別と、前処理アドレスと、次処理アドレスと、を含む。ＩＤは、当該実体データの元となる入力データを識別するための情報である。
【００５３】
データ種別は、実体データが、順方向に伝播される順方向データ（通常の演算処理において伝播されるデータ）であるか、逆方向に伝播される逆方向データ（学習処理において伝播されるデータ）であるかを識別する情報である。
【００５４】
前処理アドレスは、当該データを出力したコア３０を識別するアドレスである。前処理アドレスは、ニューラルネットワークにおける当該データを生成した層およびノードを識別する情報であってもよい。
【００５５】
次処理アドレスは、ニューラルネットワークにおける当該データに対して次に演算または処理をするコア３０を識別するアドレスである。次処理アドレスは、ニューラルネットワークにおける、当該データに対して演算または処理をする構成要素（層またはノード等）を識別する情報であってもよい。
【００５６】
なお、データ処理装置２０が、図６に示したようなネットワークを高さ方向に積層した構成の場合、前処理アドレスおよび次処理アドレスは、高さ方向の位置（例えば、基板層を識別する番号または部分領域２８を識別する番号）を表す高さアドレスと、ネットワーク内の位置（部分領域２８内でのマトリクス位置、または、クロスバーネットワークの交点位置）を表す平面内アドレスとを含んでもよい。
【００５７】
ヘッダは、以上のような構成に限らず、ルータ４０が、実体データをニューラルネットワークの構成に従って演算および処理が実行されるように適切なコア３０に転送することができれば、他の構成であってもよい。
【００５８】
図８は、複数のコア３０および複数のルータ４０の間で送受信されるデータを示す図である。
【００５９】
複数のコア３０のそれぞれは、ニューラルネットワークを順方向に伝播する順方向データ、および、ニューラルネットワークを逆方向に伝播する逆方向データの少なくとも一方を、当該コア３０に接続されたルータ４０に送信する。
【００６０】
複数のルータ４０のそれぞれは、コア３０または他のルータ４０からデータを受信した場合、受信したデータを解析して、自身に接続された複数のルータ４０のうち、受信したデータを次処理アドレスに示されたコア３０に転送させるために適切な１つのルータ４０を特定する。そして、複数のルータ４０のそれぞれは、特定したルータ４０に、受信したデータを送信する。また、複数のルータ４０のそれぞれは、受信したデータを解析した結果、次処理アドレスに示されたコア３０が自身に接続されたコア３０である場合、受信したデータを、自身に接続されたコア３０に送信する。
【００６１】
これにより、複数のコア３０は、例えば、図８に示すように、ある任意のコア３０から出力されたデータ（順方向データまたは逆方向データ）を、次処理アドレスに示された他のコア３０に転送することができる。
【００６２】
図９は、複数の部分領域２８のそれぞれの種類を示す図である。複数の部分領域２８のそれぞれは、順方向領域２８−Ｆまたは逆方向領域２８−Ｒの何れかに設定されている。例えば、複数の部分領域２８は、順方向領域２８−Ｆと逆方向領域２８−Ｒとが交互に積層されている。
【００６３】
順方向領域２８−Ｆに含まれるルータ４０は、同一部分領域内に含まれる他のルータ４０に対して、順方向データのみを送受信し、逆方向データを送受信しない。また、順方向領域２８−Ｆに含まれるルータ４０は、同一部分領域内に含まれる他のルータ４０に対して、逆方向データのみを送受信し、順方向データを送受信しない。
【００６４】
なお、順方向領域２８−Ｆに含まれるルータ４０と、逆方向領域２８−Ｒに含まれるルータ４０との間では、順方向データおよび逆方向データの両方が送受信される。また、全てのルータ４０は、接続されたコア３０との間では、順方向データおよび逆方向データの両方を送受信する。
【００６５】
図１０は、ルータ４０の構成を示す図である。ルータ４０は、コア送信部５４と、コア受信部５６と、領域外送信部５８と、領域外受信部６０と、領域内送信部６２と、領域内受信部６４と、ルーティング部７０とを有する。
【００６６】
コア送信部５４およびコア受信部５６は、このルータ４０に対応して設けられたコア３０に接続される。コア送信部５４は、順方向データおよび逆方向データを、接続されたコア３０に送信する。コア受信部５６は、順方向データおよび逆方向データを接続されたコア３０から受信する。
【００６７】
領域外送信部５８および領域外受信部６０は、このルータ４０が含まれる部分領域２８とは異なる他の部分領域２８に含まれる他のルータ４０に接続される。すなわち、領域外送信部５８および領域外受信部６０は、他の部分領域２８に含まれる何れかの他のルータ４０に接続される。
【００６８】
領域外送信部５８は、順方向データおよび逆方向データを接続された他のルータ４０に送信する。また、領域外受信部６０は、順方向データおよび逆方向データを接続された他のルータ４０から受信する。
【００６９】
領域内送信部６２および領域内受信部６４は、このルータ４０が含まれる部分領域２８に含まれる他のルータ４０に接続される。すなわち、領域内送信部６２および領域内受信部６４は、同一部分領域内に含まれる何れかの他のルータ４０に接続される。
【００７０】
順方向領域２８−Ｆに含まれるルータ４０が有する領域内送信部６２は、順方向データのみを、接続された他のルータ４０に送信する。つまり、順方向領域２８−Ｆに含まれるルータ４０が有する領域内送信部６２は、逆方向データを接続された他のルータ４０に送信しない。
【００７１】
また、順方向領域２８−Ｆに含まれるルータ４０が有する領域内受信部６４は、順方向データのみを、接続された他のルータ４０から受信する。つまり、順方向領域２８−Ｆに含まれるルータ４０が有する領域内受信部６４は、逆方向データを接続された他のルータ４０から受信しない。
【００７２】
また、逆方向領域２８−Ｒに含まれるルータ４０が有する領域内送信部６２は、逆方向データのみを、接続された他のルータ４０に送信する。つまり、逆方向領域２８−Ｒに含まれるルータ４０が有する領域内送信部６２は、順方向データを接続された他のルータ４０に送信しない。
【００７３】
また、逆方向領域２８−Ｒに含まれるルータ４０が有する領域内受信部６４は、逆方向データのみを、接続された他のルータ４０から受信する。つまり、逆方向領域２８−Ｒに含まれるルータ４０が有する領域内受信部６４は、順方向データを、接続された他のルータ４０から受信しない。
【００７４】
ルーティング部７０は、コア受信部５６、領域外受信部６０および領域内受信部６４が受信した順方向データまたは逆方向データを受け取る。ルーティング部７０は、受け取った順方向データまたは逆方向データを解析して、次に順方向データまたは逆方向データを受け取るべきルータ４０またはコア３０を特定する。そして、ルーティング部７０は、特定したルータ４０またはコア３０に接続された、コア送信部５４、領域外送信部５８または領域内送信部６２に、受信した順方向データまたは逆方向データを与える。
【００７５】
ここで、複数の部分領域２８が図９に示したような積層構造となっている場合、ルータ４０は、領域外送信部５８および領域外受信部６０を含む第１組８１と、領域外送信部５８および領域外受信部６０を含む第２組８２とを有する。
【００７６】
第１組８１の領域外送信部５８および領域外受信部６０は、直下の部分領域２８に含まれる同一のマトリクス位置の他のルータ４０に接続される。なお、最も下の部分領域２８に含まれる第２組８２の領域外送信部５８および領域外受信部６０は、他のルータ４０に接続されない。
【００７７】
第２組８２に含まれる領域外送信部５８および領域外受信部６０は、直上の部分領域２８に含まれる同一のマトリクス位置の他のルータ４０に接続される。なお、最も上の部分領域２８に含まれる第２組８２の領域外送信部５８および領域外受信部６０は、他のルータ４０に接続されない。
【００７８】
また、複数の部分領域２８が図９に示したような積層構造となっている場合、ルータ４０は、領域内送信部６２および領域内受信部６４を含む第３組８３と、領域内送信部６２および領域内受信部６４を含む第４組８４と、領域内送信部６２および領域内受信部６４を含む第５組８５と、領域内送信部６２および領域内受信部６４を含む第６組８６とを有する。
【００７９】
第３組８３の領域内送信部６２および領域内受信部６４は、同一部分領域内における行方向（第１配列方向）に隣接する他のルータ４０に接続される。第４組８４の領域内送信部６２および領域内受信部６４は、同一部分領域内における、第３組８３とは逆の行方向（第１配列方向）に隣接する他のルータ４０に接続される。なお、行方向の最も端のルータ４０は、第３組８３および第４組８４の一方が他のルータ４０に接続されない。
【００８０】
第５組８５の領域内送信部６２および領域内受信部６４は、同一部分領域内における列方向（第２配列方向）に隣接する他のルータ４０に接続される。第６組８６の領域内送信部６２および領域内受信部６４は、同一部分領域内における、第５組８５とは逆の列方向（第２配列方向）に隣接する他のルータ４０に接続される。なお、列方向の最も端のルータ４０は、第５組８５および第６組８６の一方が他のルータ４０に接続されない。
【００８１】
図１１は、ルーティング部７０がデータを受信した場合の処理手順を示すフローチャートである。ルーティング部７０は、コア受信部５６、領域外受信部６０および領域内受信部６４から順方向データまたは逆方向データを受け取った場合、図１１に示すような処理を実行する。
【００８２】
まず、ルーティング部７０は、受け取ったデータに示された次処理アドレスが、自身に接続されたコア３０を指しているか否かを判断する。次処理アドレスが自身に接続されたコア３０を指している場合（Ｓ１１のＹｅｓ）、ルーティング部７０は、処理をＳ１２に進める。Ｓ１２において、ルーティング部７０は、受け取った順方向データまたは逆方向データを、コア送信部５４に出力する。ルーティング部７０は、Ｓ１２を終えると、本フローを終了する。
【００８３】
次処理アドレスが自身に接続されたコア３０を指していない場合（Ｓ１１のＮｏ）、ルーティング部７０は、処理をＳ１３に進める。
【００８４】
Ｓ１３の処理は、順方向領域２８−Ｆに含まれるルータ４０が有するルーティング部７０か、逆方向領域２８−Ｒに含まれるルータ４０が有するルーティング部７０かで、内容が異なる。
【００８５】
順方向領域２８−Ｆに含まれるルータ４０が有するルーティング部７０は、Ｓ１３において、受け取ったデータが順方向データか否かを判断する。順方向領域２８−Ｆに含まれるルータ４０が有するルーティング部７０は、受け取ったデータが順方向データである場合（Ｓ１３のＹｅｓ）、処理をＳ１４に進め、受け取ったデータが順方向データではない場合（Ｓ１３のＮｏ）、処理をＳ１６に進める。
【００８６】
逆方向領域２８−Ｒに含まれるルータ４０が有するルーティング部７０は、Ｓ１３において、受け取ったデータが逆方向データか否かを判断する。逆方向領域２８−Ｒに含まれるルータ４０が有するルーティング部７０は、受け取ったデータが逆方向データである場合（Ｓ１３のＹｅｓ）、処理をＳ１４に進め、受け取ったデータが逆方向データではない場合（Ｓ１３のＮｏ）、処理をＳ１６に進める。
【００８７】
Ｓ１４において、ルーティング部７０は、受け取ったデータに示された次処理アドレスが、同一部分領域内に設けられたコア３０を指しているか否かを判断する。次処理アドレスが、同一部分領域内に設けられたコア３０を指しているか、または、転送距離を縮められる場合（Ｓ１４のＹｅｓ）、ルーティング部７０は、処理をＳ１８に進める。次処理アドレスが、同一部分領域内に設けられたコア３０を指していない場合（Ｓ１４のＮｏ）、ルーティング部７０は、処理をＳ１５に進める。
【００８８】
Ｓ１５において、ルーティング部７０は、受け取ったデータに示された次処理アドレスに含まれる平面内アドレスが、自身に接続されたコア３０の平面内アドレスと一致するかを判断する。つまり、ルーティング部７０は、次処理アドレスに示されたコア３０が、自身に接続されたコア３０と、同一のマトリクス位置（クロスバーネットワーク上の同一の交点位置）であるか否かを判断する。同一のマトリクス位置である場合には、受け取ったデータは、部分領域２８内での転送が無くても、次処理アドレスに示されたコア３０へ到達可能である。しかし、同一のマトリクス位置ではない場合には、受け取ったデータは、部分領域２８内でさらに転送されなければ、次処理アドレスに示されたコア３０へは到達できない。そこで、ルーティング部７０は、平面内アドレスが一致する場合（Ｓ１５のＹｅｓ）、処理をＳ１６に進める。ルーティング部７０は、平面内アドレスが一致しない場合（Ｓ１５のＮｏ）、処理をＳ１８に進める。
【００８９】
Ｓ１６において、ルーティング部７０は、次処理アドレスに基づき、接続されている１または複数の他の部分領域２８のうち、受け取った順方向データまたは逆方向データを、次に受信すべき部分領域２８を特定する。続いて、Ｓ１７において、ルーティング部７０は、受け取った順方向データまたは逆方向データを、特定した部分領域２８に含まれるルータ４０に接続された領域外送信部５８に出力する。ルーティング部７０は、Ｓ１７を終えると、本フローを終了する。
【００９０】
Ｓ１８において、ルーティング部７０は、次処理アドレスに基づき、同一部分領域内の隣接する複数のルータ４０のうち、受け取った順方向データまたは逆方向データを、次に受信すべきルータ４０を特定する。続いて、Ｓ１９において、ルーティング部７０は、受け取った順方向データまたは逆方向データを、特定したルータ４０に接続された領域内送信部６２に出力する。ルーティング部７０は、Ｓ１９を終えると、本フローを終了する。
【００９１】
図１２は、順方向領域２８−Ｆに含まれるルータ４０が送信するデータを示す図である。順方向領域２８−Ｆに含まれるルータ４０は、同一部分領域内に含まれる他のルータ４０に対して、順方向データを送信することができる。しかし、順方向領域２８−Ｆに含まれるルータ４０は、同一部分領域内に含まれる他のルータ４０に対して、逆方向データを送信することができない。ただし、順方向領域２８−Ｆに含まれるルータ４０は、他の部分領域２８に含まれる他のルータ４０に対しては、順方向データおよび逆方向データの両方を送信することができる。
【００９２】
図１３は、逆方向領域２８−Ｒに含まれるルータ４０が送信するデータを示す図である。逆方向領域２８−Ｒに含まれるルータ４０は、同一部分領域内に含まれる他のルータ４０に対して、逆方向データを送信することができる。しかし、逆方向領域２８−Ｒに含まれるルータ４０は、同一部分領域内に含まれる他のルータ４０に対して、順方向データを送信することができない。ただし、逆方向領域２８−Ｒに含まれるルータ４０は、他の部分領域２８に含まれる他のルータ４０に対しては、順方向データおよび逆方向データの両方を送信することができる。
【００９３】
図１４は、順方向領域２８−Ｆに含まれるルータ４０から送信された逆方向データの経路の一例を示す図である。このような構成のデータ処理部２０では、例えば、順方向領域２８−Ｆに含まれるルータ４０から、同一部分領域内に含まれる他のルータ４０へと逆方向データを転送する場合、逆方向領域２８−Ｒを経由する経路で、逆方向データが転送される。
【００９４】
図１５は、逆方向領域２８−Ｒに含まれるルータ４０から送信された順方向データの経路の一例を示す図である。このような構成のデータ処理部２０では、例えば、逆方向領域２８−Ｒに含まれるルータ４０から、同一部分領域内に含まれる他のルータ４０へと順方向データを転送する場合、順方向領域２８−Ｆを経由する経路で、順方向データが転送される。
【００９５】
図１６は、データ処理部２０の構成の変形例を示す図である。データ処理部２０は、垂直方向に積層された複数の部分領域２８を含む構成に限られない。例えば、データ処理部２０は、図１６に示すように、１枚の基板または１つの半導体層の別々の領域に形成されていてもよい。また、データ処理部２０は、複数の部分領域２８を含む基板または半導体層が、さらに積層された構成であってもよい。また、データ処理部２０は、物理的に分離した別個の基板に設けられた複数の部分領域２８を含んでもよい。
【００９６】
以上のように本実施形態に係るニューラルネットワーク装置１０は、ニューラルネットワークにおける通常の演算処理（順方向処理）において伝播される順方向データを送受信する順方向領域２８−Ｆ、および、学習処理（逆方向処理）において伝播される逆方向データを送受信する逆方向領域２８−Ｒを含む。これにより、ニューラルネットワーク装置１０は、ニューラルネットワークにおける通常のデータ処理と学習処理とを並行に実行した場合であっても、内部でのトラフィックの混雑を軽減することができる。
【００９７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９８】
１０  ニューラルネットワーク装置
２０  データ処理部
２２  通信部
２４  学習部
２６  設定部
２８  部分領域
２８−Ｆ  順方向領域
２８−Ｒ  逆方向領域
３０  コア
４０  ルータ
４２  通信路
５４  コア送信部
５６  コア受信部
５８  領域外送信部
６０  領域外受信部
６２  領域内送信部
６４  領域内受信部
７０  ルーティング部
【図１】
2020046821.tif 000003
【図２】
2020046821.tif 000004
【図３】
2020046821.tif 000005
【図４】
2020046821.tif 000006
【図５】
2020046821.tif 000007
【図６】
2020046821.tif 000008
【図７】
2020046821.tif 000009
【図８】
2020046821.tif 000010
【図９】
2020046821.tif 000011
【図１０】
2020046821.tif 000012
【図１１】
2020046821.tif 000013
【図１２】
2020046821.tif 000014
【図１３】
2020046821.tif 000015
【図１４】
2020046821.tif 000016
【図１５】
2020046821.tif 000017
【図１６】
2020046821.tif 000018