(57)【要約】【課題】効率良くデータ転送を可能としつつ、トラフィックの停滞を軽減する。【解決手段】ニューラルネットワーク装置は、複数のコアと、複数のルータと、ツリー経路と、ショートカット経路とを備える。複数のコアは、ツリー構造における複数のリーフに対応して設けられる。複数のルータは、ツリー構造における複数のリーフを除く複数のノードに対応して設けられる。ツリー回路は、ツリー構造に沿ってデータが転送されるように複数のコアおよび複数のルータを接続する。ショートカット経路は、ツリー経路とは異なる経路でデータが転送されるように複数のルータのうちの一部を接続する。複数のルータは、複数のコアのそれぞれから出力されたデータを、ニューラルネットワークの構成に従って演算または処理がされるように、ツリー経路およびショートカット経路に含まれる複数の経路のうちの１つの経路を介して、複数のコアの何れかの送信先のコアへと送信する。【選択図】図５
2020154411.tif 000002
【特許請求の範囲】
【請求項１】
ツリー構造における複数のリーフに対応して設けられ、それぞれがニューラルネットワークの一部の構成要素の演算または処理を実行する回路である複数のコアと、
前記ツリー構造における前記複数のリーフを除く複数のノードに対応して設けられる複数のルータと、
前記ツリー構造に沿ってデータが転送されるように前記複数のコアおよび前記複数のルータを接続するツリー経路と、
前記ツリー経路とは異なる経路でデータが転送されるように前記複数のルータのうちの一部を接続するショートカット経路と、
を備え、
前記複数のルータは、前記複数のコアのそれぞれから出力されたデータを、前記ニューラルネットワークの構成に従って演算または処理がされるように、前記ツリー経路および前記ショートカット経路に含まれる複数の経路のうちの１つの経路を介して、前記複数のコアの何れかの送信先のコアへと送信する
ニューラルネットワーク装置。
【請求項２】
前記複数のルータのうち、前記ショートカット経路に接続されたルータは、
トラフィックが所定値以上混雑している場合、前記ツリー経路および前記ショートカット経路に含まれる前記複数の経路の中から、受信したデータを前記送信先のコアへと送信するための転送経路を検出し、前記受信したデータを前記転送経路に示された次のルータに送信し、
前記トラフィックが所定値以上混雑していない場合、前記受信したデータを前記ツリー経路に従って次のルータに送信する
請求項１に記載のニューラルネットワーク装置。
【請求項３】
前記複数のルータのうち、前記ショートカット経路に接続されたルータは、
受信したデータが所定の属性である場合、前記ツリー経路および前記ショートカット経路に含まれる前記複数の経路の中から、前記受信したデータを前記送信先のコアへと送信するための転送経路を検出し、前記受信したデータを前記転送経路に示された次のルータに送信し、
前記受信したデータが所定の属性でない場合、前記受信したデータを前記ツリー経路に従って次のルータに送信する
請求項１に記載のニューラルネットワーク装置。
【請求項４】
前記ショートカット経路は、前記複数のルータのうちの一部である２以上のルータをリング状に接続する経路を含む
請求項１から３の何れか１項に記載のニューラルネットワーク装置。
【請求項５】
前記ショートカット経路は、前記複数のルータのうちの一部である２以上のルータをライン状に接続する経路を含む
請求項１から４の何れか１項に記載のニューラルネットワーク装置。
【請求項６】
前記ショートカット経路は、前記ツリー構造における所定レイヤに配置された２以上のルータを接続する経路である
請求項４または５に記載のニューラルネットワーク装置。
【請求項７】
ルートノードから最も遠いリーフにおけるレイヤの数をＮとした場合、
前記ショートカット経路は、前記ルートノードから｛Ｎ／２｝、｛（Ｎ＋１）／２｝または｛（Ｎ−１）／２｝番目のレイヤに配置された２以上のルータを接続する経路である
請求項６に記載のニューラルネットワーク装置。
【請求項８】
前記ショートカット経路は、前記ツリー構造における異なる２つのレイヤに配置された２以上のルータを接続する経路を含む
請求項４または５に記載のニューラルネットワーク装置。
【請求項９】
前記ツリー構造は、複数の分割領域に分割され、
前記複数の分割領域のそれぞれに配置されたコアは、同一の分割領域に配置された他のコアへ、ルートノードを介さずにデータを送信可能であり、
前記ショートカット経路は、前記複数の分割領域のうちの異なる２以上の分割領域に配置された２以上のルータを接続する経路を含む
請求項１から８の何れか１項に記載のニューラルネットワーク装置。
【請求項１０】
複数の基板をさらに備え、
前記複数の基板は、前記ツリー構造を分割した複数の部分ツリーに一対一で対応し、
前記複数の基板のそれぞれは、対応する部分ツリーに含まれる２以上のノードおよび２以上のリーフに対応する２以上のコアおよび２以上のルータが設けられ、
前記ショートカット経路は、前記複数の基板のうちの２個の基板のそれぞれに設けられたルータ同士を接続する経路を含む
請求項１から８の何れか１項に記載のニューラルネットワーク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ニューラルネットワーク装置に関する。
【背景技術】
【０００２】
近年、ハードウェア化したニューラルネットワークを用いて、脳型プロセッサを実現する技術が提案されている。このような脳型プロセッサは、ニューラルネットワークに含まれるニューロンで演算されたデータを他のニューロンへと転送する転送経路を有する。
【０００３】
また、脳型プロセッサを実現する場合、ニューラルネットワークは、演算処理と学習処理とを並行して実行しなければならない。従って、ニューラルネットワークは、演算対象データを順方向に伝播させる処理と、学習用データを逆方向に伝播させる処理とを並行して実行しなければならない。このため、脳型プロセッサは、トラフィックの停滞を起こさないように、大量の転送経路を有さなければならない。
【０００４】
しかし、脳型プロセッサは、大量の転送経路を有した場合、消費電力が高くなり、動作効率が悪くなってしまう。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Saber  Moradi,  Ning  Qiao,  Fabio  Stefanini,  Giacomo  Indiveri，  “A  Scalable  Multicore  Architecture  With  Heterogeneous  Memory  Structures  for  Dynamic  Neuromorphic  Asynchronous  Processors  （DYNAPs）”，  IEEE  Transactions  on  Biomedical  Circuits  and  Systems  （Volume:12  ,  Issue:1  ,  Feb.2018），２０１７年１１月３日
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、効率良くデータ転送を可能としつつ、トラフィックの停滞を軽減することができるニューラルネットワーク装置を提供することにある。
【課題を解決するための手段】
【０００７】
実施形態に係るニューラルネットワーク装置は、複数のコアと、複数のルータと、ツリー経路と、ショートカット経路とを備える。前記複数のコアは、ツリー構造における複数のリーフに対応して設けられる。前記複数のコアのそれぞれは、ニューラルネットワークの一部の構成要素の演算または処理を実行する回路である。前記複数のルータは、前記ツリー構造における前記複数のリーフを除く複数のノードに対応して設けられる。前記ツリー回路は、前記ツリー構造に沿ってデータが転送されるように前記複数のコアおよび前記複数のルータを接続する。前記ショートカット経路は、前記ツリー経路とは異なる経路でデータが転送されるように前記複数のルータのうちの一部を接続する。前記複数のルータは、前記複数のコアのそれぞれから出力されたデータを、前記ニューラルネットワークの構成に従って演算または処理がされるように、前記ツリー経路および前記ショートカット経路に含まれる複数の経路のうちの１つの経路を介して、前記複数のコアの何れかの送信先のコアへと送信する。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係るニューラルネットワーク装置の構成図。
【図２】ニューラルネットワークにおける順方向処理の内容を示す図。
【図３】ニューラルネットワークにおける逆方向処理の内容を示す図。
【図４】ニューラルネットワークに含まれる構成要素とコアとの対応関係を示す図。
【図５】データ処理部の構成および接続関係を示す図。
【図６】ショートカット経路に接続されていないルータの処理を示す図。
【図７】ショートカット経路に接続されているルータの処理を示す図。
【図８】ルータをリング状に接続するショートカット経路を示す図。
【図９】ルータをライン状に接続するショートカット経路を示す図。
【図１０】所定レイヤのルータを接続するショートカット経路を示す図。
【図１１】中間位置のレイヤのルータを接続するショートカット経路を示す図。
【図１２】複数のレイヤのルータを接続するショートカット経路を示す図。
【図１３】複数のショートカット経路の第１例を示す図。
【図１４】複数のショートカット経路の第２例を示す図。
【図１５】複数のショートカット経路の第３例を示す図。
【図１６】複数のリングを合成した形状のショートカット経路を示す図。
【図１７】複数の分割領域に形成されたショートカット経路を示す図。
【図１８】複数の基板に設けられたデータ処理部の斜視図。
【図１９】複数の基板のそれぞれの平面図およびショートカット経路を示す図。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら実施形態に係るニューラルネットワーク装置１０について説明する。実施形態に係るニューラルネットワーク装置１０は、効率良くデータ転送を可能としつつ、トラフィックの停滞を軽減することができる。
【００１０】
図１は、実施形態に係るニューラルネットワーク装置１０の構成を示す図である。ニューラルネットワーク装置１０は、データ処理部２０と、通信装置２２と、学習部２４とを備える。
【００１１】
データ処理部２０、通信装置２２および学習部２４は、１つの半導体装置に実装されてもよいし、複数の半導体装置に分散して実装されていてもよい。また、学習部２４は、プロセッサにより実現されてもよい。
【００１２】
ニューラルネットワーク装置１０は、外部装置から入力データを受信する。ニューラルネットワーク装置１０は、受信した入力データに対してニューラルネットワークに従った演算処理を実行する。そして、ニューラルネットワーク装置１０は、ニューラルネットワークに従った演算処理の結果である出力データを外部装置に送信する。
【００１３】
データ処理部２０は、ニューラルネットワークに基づく通常の演算処理を実行する。データ処理部２０は、例えば、ニューラルネットワークに基づく通常の演算処理として、パターン認識処理、データ解析処理および制御処理等の様々な情報処理を実行する。
【００１４】
また、データ処理部２０は、通常の演算処理と並行して、学習処理を実行する。データ処理部２０は、学習処理により、通常の演算処理をより適切に行うように、ニューラルネットワークに含まれる複数の係数（重み）を変更する。
【００１５】
通信装置２２は、外部装置とデータを送受信する。具体的には、通常の演算処理において、通信装置２２は、外部装置から、演算対象となる入力データを受信する。また、通信装置２２は、外部装置へ、演算結果である出力データを送信する。
【００１６】
学習部２４は、通常の演算処理においてデータ処理部２０から出力された出力データを取得する。そして、学習処理において、学習部２４は、ニューラルネットワークに逆方向に伝播させる学習用データを生成して、データ処理部２０に与える。
【００１７】
図２は、ニューラルネットワークにおける通常の演算処理（順方向処理）の内容を示す図である。
【００１８】
ニューラルネットワークは、複数の層を含む。複数の層のそれぞれは、受け取ったデータに対して所定の演算または所定の処理、または、所定の演算および処理をする。ニューラルネットワークに含まれる複数の層のそれぞれは、複数の演算ユニットを含む。１つの層に含まれる演算ユニットの数は、層毎に異なってもよい。
【００１９】
それぞれの演算ユニットには、活性化関数が設定されている。活性化関数は、層毎に異なってもよい。また、同一の層において、演算ユニット毎に活性化関数が異なってもよい。また、それぞれの演算ユニットと演算ユニットとを結ぶリンクには、係数（重み）が設定されている。ニューラルネットワークは、演算ユニットから次の演算ユニットへとデータを伝播する場合に、そのデータに対してリンクに設定された係数を乗じる。これらの係数は、学習処理により適切に変更される。
【００２０】
データ処理部２０は、ニューラルネットワークにおける通常の演算処理において、ニューラルネットワークにおける複数の層に対して計算データを順方向に伝播させながら演算を実行させる順方向処理を実行する。例えば、順方向処理において、データ処理部２０は、入力層に入力データを与える。続いて、順方向処理において、データ処理部２０は、それぞれの層から出力された計算データを、直後の層へと順方向に伝播させる。そして、順方向処理において、データ処理部２０は、出力層から出力された計算データを、出力データとして外部装置へと送信する。
【００２１】
図３は、ニューラルネットワークにおける学習処理（逆方向処理）の内容を示す図である。それぞれの演算ユニットには、誤差関数が設定されている。誤差関数は、その演算ユニットに設定されている活性化関数の導関数である。すなわち、誤差関数は、その演算ユニットに設定されている活性化関数の微分である。
【００２２】
学習部２４は、順方向処理が終了した場合、学習用データを生成する。例えば、学習部２４は、順方向処理で出力された出力データに対する誤差を表す学習用データを、学習用データとして生成する。
【００２３】
続いて、逆方向処理において、データ処理部２０は、学習部２４により生成された学習用データを出力層に与える。そして、逆方向処理において、データ処理部２０は、それぞれの層から出力された複数のデータを、直前の層へと逆方向に伝播させる。
【００２４】
図４は、ニューラルネットワークに含まれる構成要素と、データ処理部２０が有する複数のコア３０との対応関係を示す図である。
【００２５】
データ処理部２０は、複数のコア３０を有する。複数のコア３０のそれぞれは、ニューラルネットワークにおける一部の構成要素の演算または処理を実行する。複数のコア３０のそれぞれは、プロセッサであってもよいし、専用のハードウェア回路であってもよいし、デジタル回路であってもよいし、アナログ回路であってもよい。また、複数のコア３０のそれぞれは、記憶部を有し、ニューラルネットワークに含まれる係数を記憶してもよい。
【００２６】
複数のコア３０のそれぞれは、ニューラルネットワークに含まれる複数の構成要素のうちの何れかが予め割り当てられている。複数のコア３０のそれぞれは、ニューラルネットワークに含まれる複数の構成要素のうち、予め割り当てられた構成要素の演算または処理を実行する。
【００２７】
ニューラルネットワークに含まれる構成要素とは、例えば、活性化関数の演算、学習時における関数演算、リンクに設定された係数の乗算、係数が乗算されたデータの加算、外部装置または前段の層からのデータの取得、外部装置または後段の層へのデータの出力、学習部２４または後段の層からの学習用データの取得、および、学習部２４または前段の層への学習用データの出力等である。ニューラルネットワークに含まれる全ての構成要素が少なくとも何れかのコア３０で実行されるように、複数のコア３０のそれぞれに構成要素が割り当てられている。
【００２８】
１つのコア３０において実行される処理は、例えば、１つの演算ユニットで実行される処理であってもよい。例えば、ある１つのコア３０は、ある層のある１つの演算ユニットにおける、リンクに設定された係数の乗算、前段の層から受け取った複数のデータの加算、活性化関数の演算または学習時の関数の演算等を実行する。
【００２９】
また、１つのコア３０において実行される演算または処理は、１つの演算ユニットの一部分の演算であってもよい。例えば、ある１つのコア３０は、１つの演算ユニットにおける活性化関数の演算を実行し、他の１つのコア３０は、その演算ユニットにおける係数の乗算および加算を実行してもよい。また、１つのコア３０において実行される演算または処理は、１つの層に含まれる複数の演算ユニットにおける全ての処理であってもよい。
【００３０】
このようなデータ処理部２０は、ニューラルネットワークに含まれる複数の構成要素の処理を複数のコア３０に分散して実行することができる。
【００３１】
図５は、データ処理部２０の構成および接続関係を示す図である。データ処理部２０は、複数のコア３０と、複数のルータ４０と、ツリー経路５０と、ショートカット経路６０とを有する。
【００３２】
複数のコア３０は、ツリー構造における複数のリーフに対応して設けられる。複数のリーフのそれぞれは、ツリー構造における下位ノードが接続されていないノードである。図中において、コア３０は、四角の記号で表している。
【００３３】
複数のルータ４０は、ツリー構造における複数のリーフを除く複数のノードに対応して設けられる。図中において、ルータ４０は、丸の記号で表している。
【００３４】
ツリー経路５０は、ツリー構造に従ってデータが転送されるように、複数のコア３０および複数のルータ４０を接続する。ツリー経路５０は、複数のツリー配線を含む。複数のツリー配線のそれぞれは、親ノードに配置されたルータ４０と、子ノードに配置されたルータ４０（またはコア３０）とを接続する。複数のツリー配線のそれぞれは、データを双方向に転送する。図中において、ツリー経路５０は、２つのルータ４０を結ぶ実線またはコア３０とルータ４０とを結ぶ実線で表している。
【００３５】
ショートカット経路６０は、ツリー経路５０とは異なる経路でデータが転送されるように、複数のルータ４０のうちの一部を接続する。ショートカット経路６０は、１以上のショートカット配線を含む。１以上のショートカット配線のそれぞれは、ツリー構造における親子関係ではない２つのルータ４０の間を接続する。複数のショートカット配線のそれぞれは、データを双方向に転送しても、一方向に転送してもよい。図中において、ツリー経路５０は、２つのルータ４０を結ぶ点線で表している。
【００３６】
ここで、複数のルータ４０のそれぞれは、ツリー配線を介して接続されたコア３０、または、ツリー配線またはショートカット配線を介して接続された他のルータ４０から、データを受信する。そして、複数のルータ４０のそれぞれは、受信したデータを、ツリー配線を介して接続されたコア３０、または、ツリー配線またはショートカット配線を介して接続された他のルータ４０に送信する。
【００３７】
このような複数のルータ４０は、複数のコア３０のそれぞれから出力されたデータをニューラルネットワークの構成に従って演算または処理がされるように、ツリー経路５０およびショートカット経路６０に含まれる複数の経路のうちの１つの経路を介して、複数のコア３０の何れかの送信先のコア３０へと送信する。これにより、データ処理部２０は、全体として、ニューラルネットワークとして機能することができる。
【００３８】
なお、ツリー構造は、どのような分岐構造であってもよく、例えば、２分木であっても、３分木であってもよい。また、ツリー構造は、複数の分岐構造が混在していてもよく、例えば２分木の部分と３分木の部分とが混在していてもよい。
【００３９】
図６は、ショートカット経路６０に接続されていないルータ４０の処理を示すフローチャートである。ショートカット経路６０に接続されていないルータ４０、つまり、ツリー経路５０のみで他のルータ４０と接続されたルータ４０は、データを受信した場合、図６に示す処理を実行する。
【００４０】
まず、Ｓ１１において、ルータ４０は、受信したデータの最終的な送信先のコア３０が、木構造における下位のノードに存在するか否かを判断する。ルータ４０は、送信先のコア３０が下位のノードに存在すると判断した場合（Ｓ１１のＹｅｓ）、処理をＳ１２に進める。ルータ４０は、送信先のコア３０が下位のノードに存在しないと判断した場合（Ｓ１１のＮｏ）、処理をＳ１３に進める。
【００４１】
Ｓ１２において、ルータ４０は、下位側（子ノード）に接続された１以上の他のルータ４０のうち、送信先のコア３０を下位に含む他のルータ４０に、受信したデータを送信する。なお、送信先のコア３０が直接接続されている場合には、ルータ４０は、受信したデータを送信先のコア３０に送信する。
【００４２】
Ｓ１３において、ルータ４０は、上位側（親ノード）の他のルータ４０に、受信したデータを送信する。ルータ４０は、Ｓ１２またはＳ１３の処理を終えると、本フローを終了する。
【００４３】
図７は、ショートカット経路６０に接続されているルータ４０の処理を示すフローチャートである。ショートカット経路６０に接続されているルータ４０、つまり、ツリー経路５０およびショートカット経路６０の両方に接続されているルータ４０は、データを受信した場合、図７に示す処理を実行する。
【００４４】
まず、Ｓ２１において、ルータ４０は、トラフィックが所定値以上混雑しているか否かを判断する。ルータ４０は、例えば、自身が内部に保留しているデータの量が、予め定められた値以上である場合、トラフィックが所定値以上混雑している判断する。また、ルータ４０は、他のルータ４０から受信した情報に基づき、トラフィックが所定値以上混雑していることを判断してもよい。
【００４５】
トラフィックが所定値以上混雑している場合（Ｓ２１のＹｅｓ）、ルータ４０は、処理をＳ２２に進める。トラフィックが所定値以上混雑していない場合（Ｓ２１のＮｏ）、ルータ４０は、処理をＳ２４に進める。
【００４６】
Ｓ２２において、ルータ４０は、ツリー経路５０およびショートカット経路６０に含まれる複数の経路のうち、受信したデータを送信先のコア３０へと送信するための転送経路を検出する。例えば、ルータ４０は、自身から送信先のコア３０までの最短転送経路を検出する。この場合、ルータ４０は、転送経路として、自身から送信先のコア３０までの間の完全な経路を検出するのではなく、少なくとも、次にデータを受け取らせるルータ４０（次のルータ４０）またはコア３０を検出すればよい。
【００４７】
続いて、Ｓ２３において、ルータ４０は、受信したデータを転送経路に示された次のルータ４０に送信する。これにより、ルータ４０は、転送経路にショートカット経路６０を含む場合、ツリー経路５０を介して送信するよりも早く、送信先のコア３０へデータを送信することができる。
【００４８】
また、Ｓ２４において、ルータ４０は、受信したデータを、ツリー経路５０に従って次のルータ４０に送信する。具体的には、Ｓ２４において、ルータ４０は、図６に示した処理と同一の処理を実行して、受信したデータを次のルータ４０に送信する。これにより、ルータ４０は、ツリー経路５０を介して確実に送信先のコア３０へデータを送信することができる。ルータ４０は、Ｓ２３またはＳ２４の処理を終えると、本フローを終了する。
【００４９】
このような処理を実行することにより、ルータ４０は、トラフィックが所定値以上混雑している場合には、受信したデータをより早く転送することができる。また、ルータ４０は、トラフィックが所定値以上混雑していない場合には、受信したデータを、簡易な処理で且つ確実に転送することができる。
【００５０】
なお、ルータ４０は、Ｓ２２において、トラフィックが所定値以上混雑しているか否かの判断処理に代えて、受信したデータが所定の属性であるか否かを判断してもよい。例えば、ルータ４０は、受信したデータのヘッダ等に含まれる識別情報を参照して、受信したデータが所定の属性であるか否かを判断する。そして、ルータ４０は、所定の属性である場合（Ｓ２２のＹｅｓ）、処理をＳ２３に進め、所定の属性でない場合（Ｓ２２のＮｏ）、処理をＳ２４に進める。
【００５１】
例えば、受信したデータがニューラルネットワークを順方向に送信されるデータである場合、ルータ４０は、受信したデータが所定の属性であるとして、処理をＳ２３に進める。また、受信したデータがニューラルネットワークを逆方向に送信されるデータである場合、ルータ４０は、受信したデータが所定の属性でないとして、処理をＳ２４に進める。
【００５２】
このような処理を実行することにより、ルータ４０は、所定の属性のデータ（例えば順方向に送信されるデータ）をより早く転送することができる。また、ルータ４０は、所定の属性でないデータ（例えば逆方向に送信されるデータ）を、簡易に且つ確実に転送することができる。
【００５３】
以上のように、本実施形態に係るニューラルネットワーク装置１０は、ツリー経路５０により効率良くデータ転送を可能としつつ、ショートカット経路６０によりトラフィックの停滞を軽減することができる。
【００５４】
図８は、２以上のルータ４０をリング状に接続するショートカット経路６０を示す図である。ショートカット経路６０は、複数のルータ４０のうちの一部である２以上のルータ４０をリング状に接続する経路を含んでもよい。リング状とは、終端が存在しない周回する経路をいう。
【００５５】
この場合、リング状の経路に接続された２以上のルータ４０は、データを双方向に巡回させるようにデータを送受信してもよいし、データを片方向に巡回させるようにデータを送受信してもよい。このようなニューラルネットワーク装置１０は、リング状に接続された２以上のルータ４０の間で、ツリー経路５０よりも早くデータを転送させることができる。
【００５６】
図９は、２以上のルータ４０をライン状に接続するショートカット経路６０を示す図である。ショートカット経路６０は、複数のルータ４０のうちの一部である２以上のルータ４０をライン状に接続する経路を含んでもよい。ライン状とは、２つの終端が存在し、周回しない経路をいう。
【００５７】
この場合、ライン状の経路に接続された２以上のルータ４０は、データを双方向に転送させるように、データを送受信する。このようなニューラルネットワーク装置１０は、ライン状に接続された２以上のルータ４０の間で、ツリー経路５０よりも早くデータを転送させることができる。
【００５８】
図１０は、所定レイヤに配置された２以上のルータ４０を接続するショートカット経路６０を示す図である。ショートカット経路６０は、ツリー構造における所定レイヤに配置された２以上のルータ４０を接続する経路であってもよい。
【００５９】
例えば、リング状のショートカット経路６０に接続された２以上のルータ４０の全ては、ツリー構造における１つのレイヤに配置される。なお、ライン状のショートカット経路６０に接続された２以上のルータ４０の全てが、１つのレイヤに配置されてもよい。このようなニューラルネットワーク装置１０は、所定レイヤに配置された２以上のルータ４０の間で、ツリー経路５０よりも早くデータを転送させることができる。
【００６０】
図１１は、ツリー経路５０により接続された複数のルータ４０、および、中間位置のレイヤに配置された２以上のルータ４０を接続するショートカット経路６０を示す図である。ショートカット経路６０は、ツリー構造におけるルートノードとリーフとの中間位置のレイヤに配置された２以上のルータ４０を接続する経路であってもよい。
【００６１】
例えば、ルートノードから最も遠いリーフにおけるレイヤの数をＮとした場合、ショートカット経路６０は、ルートノードから｛Ｎ／２｝、｛（Ｎ／２）＋１｝、｛（Ｎ＋１）／２｝または｛（Ｎ−１）／２｝番目のレイヤに配置された２以上のルータ４０を接続する経路であってもよい。
【００６２】
より具体的には、Ｎが偶数である場合、ショートカット経路６０に接続された２以上のルータ４０は、ルートノードから｛Ｎ／２｝または｛（Ｎ／２）＋１｝番目のレイヤに配置されている。また、Ｎが奇数である場合、ショートカット経路６０に接続された２以上のルータ４０は、ルートノードから｛（Ｎ＋１）／２｝または｛（Ｎ−１）／２｝番目のレイヤに配置されている。
【００６３】
図１１の例においては、Ｎ＝７である。そして、ショートカット経路６０に接続された２以上のルータ４０は、第４レイヤに配置されている。
【００６４】
このようなニューラルネットワーク装置１０は、ツリー構造における中間位置のレイヤに配置された２つのルータ４０が、直接データを送受信することができる。これにより、このようなニューラルネットワーク装置１０は、ツリー構造により転送した場合におけるデータの遅れを、効率良く短縮することができる。
【００６５】
図１２は、複数のレイヤに配置された２以上のルータ４０を接続するショートカット経路６０を示す図である。ショートカット経路６０は、ツリー構造における異なる２つのレイヤに配置された２以上のルータ４０を接続する経路を含んでもよい。例えば、リング状またはライン状のショートカット経路６０に接続された２以上のルータ４０は、ツリー構造における複数のレイヤに配置されていてもよい。
【００６６】
このようなニューラルネットワーク装置１０は、例えば、データ転送量が多い経路を、効率良くショートカットする経路を形成することができる。これにより、このようなニューラルネットワーク装置１０は、ニューラルネットワークによる演算をより高速に実行させることができる。
【００６７】
図１３は、複数のショートカット経路６０の第１例を示す図である。データ処理部２０は、複数のショートカット経路６０を有してもよい。この場合、複数のショートカット経路６０のそれぞれは、形状および接続するルータ４０の数等が異なってもよい。
【００６８】
例えば、図１３の例において、データ処理部２０は、ライン状の第１のショートカット経路６０−１と、リング状の第２のショートカット経路６０−２とを有する。なお、データ処理部２０は、３以上のショートカット経路６０を有してもよい。
【００６９】
図１４は、複数のショートカット経路６０の第２例を示す図である。第１のショートカット経路６０−１と第２のショートカット経路６０−２とは、一部に交差する部分があってもよい。
【００７０】
図１５は、複数のショートカット経路６０の第３例を示す図である。第１のショートカット経路６０−１および第２のショートカット経路６０−２は、共通のルータ４０（共通ルータ４４）に接続されてもよい。
【００７１】
図１５の例においては、共通ルータ４４は、第１のショートカット経路６０−１および第２のショートカット経路６０−２の両方が接続される。なお、共通ルータ４４は、３以上のショートカット経路６０に接続されていてもよい。
【００７２】
図１６は、複数のリングを合成した形状のショートカット経路６０を示す図である。ショートカット経路６０は、リング状およびライン状に限らず、どのような形状であってもよい。ショートカット経路６０は、例えば、図１６に示すように、複数のリングを接続した形状であってもよい。
【００７３】
図１７は、複数の分割領域８０に分割して配置された複数のルータ４０に形成されたショートカット経路６０を示す図である。例えば、ツリー構造は、複数の分割領域８０に分割される。複数の分割領域８０のそれぞれは、ツリー構造における、ルートノードより下位のノードをルートとする部分ツリーである。
【００７４】
従って、複数の分割領域８０のそれぞれに配置されたコア３０は、同一の分割領域８０に配置された他のコア３０へ、ルートノードに対応するルートルータ４６を介さずにデータを送信可能である。そして、このような場合において、ショートカット経路６０は、複数の分割領域８０のうちの異なる２以上の分割領域８０に配置された２以上のルータ４０を接続する経路を含んでもよい。
【００７５】
図１７の例においては、データ処理部２０は、それぞれがルートルータ４６に接続された、第１の分割領域８０−１と、第２の分割領域８０−２と、第３の分割領域８０−３と、第４の分割領域８０−４とを有する。第１のショートカット経路６０−１は、第１の分割領域８０−１および第２の分割領域８０−２に配置された４個のルータ４０を接続する。第２のショートカット経路６０−２は、第３の分割領域８０−３および第４の分割領域８０−４に配置された４個のルータ４０を接続する。なお、ショートカット経路６０は、３以上の分割領域８０に配置された複数のルータ４０を接続してもよい。
【００７６】
異なる２つの分割領域８０の間でツリー経路５０を介してデータを転送した場合、ルートルータ４６を経由してデータが転送されるので、データの転送時間は、長くなる。しかし、このようなニューラルネットワーク装置１０は、異なる２つの分割領域８０に含まれる２つのルータ４０間をショートカット経路６０に接続する。これにより、このようなニューラルネットワーク装置１０は、異なる２つの分割領域８０の間でのデータの転送時間を短くすることができる。
【００７７】
図１８は、複数の基板１００に設けられたデータ処理部２０の斜視図である。図１９は、複数の基板１００のそれぞれの平面図、および、複数の基板１００に形成されたショートカット経路６０を示す図である。
【００７８】
データ処理部２０は、複数の基板１００をさらに備える。複数の基板１００のそれぞれは、半導体における層であってもよい。また、複数の基板１００は、重ね合わせて接着され、全体として１つの装置となる。
【００７９】
複数の基板１００は、ツリー構造を分割した複数の部分ツリーに一対一に対応する。複数の基板１００のそれぞれは、対応する部分ツリーに含まれる２以上のノードおよび２以上のリーフに対応する、２以上のコア３０および２以上のルータ４０が設けられる。また、複数の基板１００のそれぞれは、設けられている２以上のコア３０および２以上のルータ４０をツリー構造に従って接続するツリー経路５０も含む。
【００８０】
また、複数の基板１００は、ショートカット経路６０も含む。この場合において、ショートカット経路６０は、複数の基板１００のうちの２個の基板１００のそれぞれに設けられたルータ４０同士を接続する経路を含む。
【００８１】
例えば、図１８および図１９の例においては、データ処理部２０は、第１の基板１００−１と、第２の基板１００−２とを備える。ショートカット経路６０は、第１の基板１００−１および第２の基板１００−２における基板内で２以上のルータ４０をリング状に接続する基板内配線６４を有する。
【００８２】
さらに、ショートカット経路６０は、第１の基板１００−１に設けられたルータ４０と、第２の基板１００−２に設けられたルータ４０とを接続する層間配線６６を有する。これにより、ショートカット経路６０は、第１の基板１００−１に設けられたルータ４０と、第２の基板１００−２に設けられたルータ４０とを接続することができる。
【００８３】
このようなニューラルネットワーク装置１０は、複数のコア３０を複数の基板１００に分散して設けることができる。さらに、このようなニューラルネットワーク装置１０は、ツリー経路５０を介してデータを送信すると比較的にデータの転送時間が長くなる複数の基板１００に設けられたルータ４０同士を、ショートカット経路６０により接続する。これにより、このようなニューラルネットワーク装置１０は、多くのコア３０を備えることができるとともに、全体として効率良くデータの転送をすることができる。
【００８４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８５】
１０  ニューラルネットワーク装置
２０  データ処理部
２２  通信部
２４  学習部
３０  コア
４０  ルータ
４４  共通ルータ
４６  ルートルータ
５０  ツリー経路
６０  ショートカット経路
６４  基板内配線
６６  層間配線
８０  分割領域
１００  基板
【図１】
2020154411.tif 000003
【図２】
2020154411.tif 000004
【図３】
2020154411.tif 000005
【図４】
2020154411.tif 000006
【図５】
2020154411.tif 000007
【図６】
2020154411.tif 000008
【図７】
2020154411.tif 000009
【図８】
2020154411.tif 000010
【図９】
2020154411.tif 000011
【図１０】
2020154411.tif 000012
【図１１】
2020154411.tif 000013
【図１２】
2020154411.tif 000014
【図１３】
2020154411.tif 000015
【図１４】
2020154411.tif 000016
【図１５】
2020154411.tif 000017
【図１６】
2020154411.tif 000018
【図１７】
2020154411.tif 000019
【図１８】
2020154411.tif 000020
【図１９】
2020154411.tif 000021