(57)【要約】【課題】複数のユニットを有し、自己組織化マップを演算する並列演算装置において、ノルムが最小となるユニットを高速に選択する並列演算装置を提供する。【解決手段】自己組織化マップを演算する並列演算装置が、予め定められた識別情報であるユニットネットワーク座標によりそれぞれが識別される複数のユニットと、複数のユニットの中のいずれか１つのユニットが出力する出力値がユニット出力バスを介して入力されたことに応じて、該入力された入力値と複数のユニットの中から選択したいずれか１つのユニットを選択する識別情報である選択ユニットネットワーク座標とを含む制御データを、複数のユニットのそれぞれにユニット入力バスを介して出力する分配制御部と、を有し、複数のユニットの中からノルムが最小となるユニットを選択する場合に、トーナメント方式によりノルムが最小となるユニットを選択する。【選択図】図３１
2009075765.tif 000002
【特許請求の範囲】
【請求項１】
自己組織化マップを演算する並列演算装置が、
予め定められた識別情報であるユニットネットワーク座標によりそれぞれが識別される複数のユニットと、
前記複数のユニットの中のいずれか１つのユニットが出力する出力値がユニット出力バスを介して入力されたことに応じて、該入力された入力値と前記複数のユニットの中から選択したいずれか１つのユニットを選択する識別情報である選択ユニットネットワーク座標とを含む制御データを、前記複数のユニットのそれぞれにユニット入力バスを介して出力する分配制御部と、
を有し、
前記複数のユニットのそれぞれは、
前記分配制御部から入力された制御データに基づいて自ユニットが算出したノルムを記憶するユニットノルム記憶部と、
自ユニットの前記ユニットネットワーク座標を記憶するユニットネットワーク座標記憶部と、
を有し、
前記複数のユニットは、
前記複数のユニットがそれぞれ算出したノルムの中から、最小となるノルムを選択するための比較を開始するユニットとして、予め定められた複数のユニットである葉ユニットと、
前記ユニットのそれぞれが算出したノルムの中から選択された最小となるノルムと、該ノルムを有するユニットのユニットネットワーク座標とを前記分配制御部に出力するユニットとして予め定められた１つの根ユニットと、
前記葉ユニットと前記根ユニットとを接続する予め定められた複数のユニットである幹ユニットと、
に予め分類され、
前記葉ユニットと前記幹ユニットと前記根ユニットとは、前記葉ユニットから前記根ユニットに前記ノルムの比較結果が、予め定められた順序で並列に送信できるように、該順序で隣接するユニット同士がノルム比較バスを介して接続されており、かつ、前記根ユニットは前記分配制御部に前記ノルム比較バスを介して接続されており、
前記幹ユニットまたは根ユニットは、
自ユニットに入力されたノルムと自ユニットのユニットノルム記憶部に記憶されたノルムとにおいて最小であるノルムと、該ノルムを有するユニットを識別するユニットネットワーク座標とを関連付けて勝者ノルム情報として記憶する勝者ノルム情報記憶部と、
前記順序で前記葉ユニットに近い方のユニットであり隣接するユニットである前段ユニットから、ノルムとユニットネットワーク座標とを関連付けてノルム情報として前記ノルム比較バスを介して入力するノルム情報入力部と、
前記ノルム情報入力部に前記ノルム情報が入力されたことに応じて、前記ノルム情報入力部に入力されたノルムと、自ユニットの前記勝者ノルム情報記憶部または自ユニットの前記ユニットノルム記憶部から読み出したノルムとを比較し、最小となるノルムと該ノルムと関連付けられたユニットネットワーク座標とを関連付けて前記勝者ノルム情報として前記勝者ノルム情報記憶部に設定して記憶する勝者ノルム情報設定部と、
前記勝者ノルム情報記憶部から読み出した勝者ノルム情報を、前記順序で前記根ユニットに近い方のユニットであり隣接するユニットである後段ユニットへ前記ノルム比較バスを介して出力するノルム情報出力部と、
を有することを特徴とする並列演算装置。
【請求項２】
前記幹ユニットまたは前記根ユニットには、複数の前記幹ユニットまたは複数の前記葉ユニットが前記前段ユニットとして予め接続されており、
前記幹ユニットまたは前記根ユニットのそれぞれは、
自ユニットに接続される前記前段ユニットの総数である前段接続数が予め記憶されている前段接続数記憶部と、
前記ノルム情報入力部にノルムとユニットネットワーク座標とが入力される毎に、入力回数をカウントアップして記憶する入力回数記憶部と、
前記前段接続数記憶部から読み出した前段接続数と、前記入力回数記憶部から読み出した入力回数とを比較する前段接続数比較部と、
を有しており、
前記ノルム情報出力部が、
前記接続数比較部の比較結果が、前段接続数と前記入力回数とが一致した場合に、前記勝者ノルム情報記憶部から読み出した勝者ノルム情報を出力する、
ことを特徴とする請求項１に記載の並列演算装置。
【請求項３】
前記幹ユニットまたは前記根ユニットのそれぞれが、
前記ノルムと前記ユニットネットワーク座標とを、自ユニットの前段ユニットから入力可能であるか否かを示すユニットビジーフラグ情報を記憶するユニットビジーフラグ記憶部を有しており、
前記ユニットのそれぞれが、
自ユニットの後段ユニットが有する前記ユニットビジーフラグ記憶部から出力されたユニットビジーフラグ情報に基づいて、該後段ユニットに前記ノルムと前記ユニットネットワーク座標とを出力するか否かを判定するビジーフラグ判定部を有し、
前記自ユニットの前記ノルム情報出力部が、
前記自ユニットのビジーフラグ判定部の判定結果に基づいて、前記勝者ノルム情報記憶部から読み出した勝者ノルム情報を出力する、
ことを特徴とする請求項１から請求項２に記載の並列演算装置。
【請求項４】
前記ノルム情報入力部が、
前記ノルム情報が入力されたことに応じて、前記ユニットビジーフラグ記憶部に記憶されているユニットビジーフラグ情報を自ユニットの前段ユニットから入力可能でないことを示すように設定し、
前記接続数比較部が、
前記比較結果が前段接続数と前記入力回数とが一致しない場合に、前記ユニットビジーフラグ記憶部に記憶されているユニットビジーフラグ情報を自ユニットの前段ユニットから入力可能であることを示すように設定する、
ことを特徴とする請求項３に記載の並列演算装置。
【請求項５】
前記幹ユニットまたは前記根ユニットのそれぞれが、
前記複数のユニットがそれぞれ算出したノルムの中から最小となるノルムを選択するための比較を開始することを示す信号を前記分配制御部から入力されたことに応じて、前記ユニットビジーフラグ記憶部に記憶されているユニットビジーフラグ情報を自ユニットの前段ユニットから入力可能であることを示すように設定するユニット制御部を有し、
前記接続数比較部が、
前記比較結果が前段接続数と前記入力回数とが一致した場合に、前記ユニットビジーフラグ記憶部に記憶されているユニットビジーフラグ情報を自ユニットの前段ユニットから入力可能でないことを示すように設定する、
ことを特徴とする請求項３または請求項４に記載の並列演算装置。
【請求項６】
前記葉ユニットが、
前記複数のユニットがそれぞれ算出したノルムの中から最小となるノルムを選択するための比較を開始することを示す信号を前記分配制御部から入力されたことに応じて、自ユニットの前記ユニットノルム記憶部から読み出したノルムと自ユニットの前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標とを出力するノルム情報出力部とを、前記自ユニットが接続される後段ユニットへ前記ノルム比較バスを介して出力する葉ノルム情報出力部、
を有することを特徴とする請求項１に記載の並列演算装置。
【請求項７】
自己組織化マップを演算する並列演算装置が、
予め定められた識別情報であるユニットネットワーク座標によりそれぞれが識別される複数のユニットと、
前記複数のユニットの中のいずれか１つのユニットが出力する出力値がユニット出力バスを介して入力されたことに応じて、該入力された入力値と前記複数のユニットの中から選択したいずれか１つのユニットを選択する識別情報である選択ユニットネットワーク座標とを含む制御データを、前記複数のユニットのそれぞれにユニット入力バスを介して出力する分配制御部と、
を有し、
前記複数のユニットのそれぞれは、
前記分配制御部から入力された制御データに基づいて自ユニットが算出したノルムを記憶するユニットノルム記憶部と、
自ユニットの前記ユニットネットワーク座標を記憶するユニットネットワーク座標記憶部と、
を有し、
前記複数のユニットは、
前記複数のユニットがそれぞれ算出したノルムの中から、最小となるノルムを選択するための比較を開始するユニットとして、予め定められた複数のユニットである葉ユニットと、
前記ユニットのそれぞれが算出したノルムの中から選択された最小となるノルムと、該ノルムを有するユニットのユニットネットワーク座標とを前記分配制御部に出力するユニットとして予め定められた１つの根ユニットと、
前記葉ユニットと前記根ユニットとを接続する予め定められた複数のユニットである幹ユニットと、
に予め分類され、
前記葉ユニットと前記幹ユニットと前記根ユニットとは、前記葉ユニットから前記根ユニットに前記ノルムの比較結果が、予め定められた順序で並列に送信できるように、該順序で隣接するユニット同士がノルム比較バスを介して接続されており、かつ、前記根ユニットは前記分配制御部に前記ノルム比較バスを介して接続されている並列演算装置で用いられる並列演算であって、
前記幹ユニットまたは根ユニットは、
前記順序で前記葉ユニットに近い方のユニットであり隣接するユニットである前段ユニットから、ノルムとユニットネットワーク座標とを関連付けてノルム情報として前記ノルム比較バスを介して入力するノルム情報入力手順と、
前記ノルム情報入力手順で前記ノルム情報が入力されたことに応じて、前記ノルム情報入力手順で入力されたノルムと、自ユニットに入力されたノルムと自ユニットのユニットノルム記憶部に記憶されたノルムとにおいて最小であるノルムと該ノルムを有するユニットを識別するユニットネットワーク座標とを関連付けて勝者ノルム情報として記憶する勝者ノルム情報記憶部、または、自ユニットの前記ユニットノルム記憶部から読み出したノルムと、を比較し、最小となるノルムと該ノルムと関連付けられたユニットネットワーク座標とを関連付けて前記勝者ノルム情報として前記勝者ノルム情報記憶部に設定して記憶する勝者ノルム情報設定手順と、
前記勝者ノルム情報記憶部から読み出した勝者ノルム情報を、前記順序で前記根ユニットに近い方のユニットであり隣接するユニットである後段ユニットへ前記ノルム比較バスを介して出力するノルム情報出力手順と、
を有することを特徴とする並列演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算ユニットを有する並列演算装置に関し、特に、複数の演算ユニット間の接続を簡易にすることを可能とする並列演算装置に関する。
【背景技術】
【０００２】
並列演算が性能を発揮するアプリケーションの１つとして、ニューラルネットワークが知られている。このニューラルネットワークは、脳機能に見られるいくつかの特性を表現することを目指した数学モデルである。このニューラルネットワークによる処理は、入力されたデータの情報量を削減することが可能であるため、画像や統計など多次元量のデータでかつ線形分離不可能な問題に対して、比較的小さい計算量で良好な解を得られることが多い。そのためニューラルネットワークは、パターン認識やデータマイニングをはじめ、さまざまな分野において応用されている。
【０００３】
ここで、大規模なニューラルネットワークを実現しようとすると、その計算量が膨大となるため、現実的な時間での処理が難しくなる。これを解決する方法として、（１）単体プロセッサ自体のコンピューティングパワーを上げる方法、（２）プロセッサを複数用いる並列コンピューティングの手法を用いる方法、（３）機能をＬＳＩ等によりハードウェアにより実装する方法、等が考えられる。上記（１）と（２）との方法は、プロセッサの能力を上げることで膨大な計算量に対処しようとするものであり、プログラムを変更することで様々なニューラルネットワークのアルゴリズムに対応することができる。
【０００４】
ここで（１）の方法においては、従来、単体プロセッサのクロック周波数を高速化することで単体プロセッサ自体のコンピューティングパワーを上げてきていた。しかし、近年、クロック周波数の高速化は発熱量を増加させ、また、微細加工寸法が物理的限界に達しつつあることからムーアの法則が破綻しつつあり、単体プロセッサ自体のコンピューティングパワーを上げることが難しくなってきている。そのため、（１）の方法から（２）の方法へと、プロセッサのコンピューティングパワーを上げる方法の開発がシフトしてきており、コンピューティングパワーを上げるという高性能化と、発熱を抑えることの両立をより進めるために、より大きなキャッシュと複数の計算コアを持つことに焦点が当てられている。また、このプロセッサの開発は、低いクロック周波数で動作し、低電力化で動作するようにも、進められている。
【０００５】
しかし、（２）の方法においては、膨大なプロセッサを効率的に動作させる方法、つまり並列度を上げることと、複数のプロセッサ間の膨大なデータ通信を可能とするネットワークの構成が難しいことが本質的な問題としてある。そのため、（２）の方法である、プロセッサを複数用いる並列コンピューティングの手法を用いる方法により、大規模なニューラルネットワークの並列演算効率を上げることは、難しい。
【０００６】
一方、（３）の方法であるハードウェア化に関しては、ハードウェアで実現可能なニューラルネットワークのアルゴリズムに制限があるが、特定な用途に対しては（１）または（２）の方法に比べ、低周波数での場合でも、桁違いな演算速度の性能を発揮することが可能である。このような、並列演算をハードウェア化する技術として、特許文献１および特許文献２が知られている。
【特許文献１】特開平６−１９５４５４号公報
【特許文献２】特開平２００６−３９７９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、（３）の方法であるハードウェア化に関しての特許文献１および特許文献２の従来技術においては、配線の問題があり、配線のために回路規模が膨大となり、または、回路間の配線が出来ないという問題がある。例えば、多層型のニューラルネットワークにおいては、出力層のあるノードからの出力を、入力層の全てのノードの入力に入力することが必要となり、各層のノード数が増大すると、その配線量が急激に増大してしまう。
【０００８】
また、例えば、実際の脳のニューラルネットワークの場合、ニューロンは３次元空間に配置され配線されているのに対し、ＬＳＩのようなハードウェアによる構成では構成要素の配置は２次元が基本であるため、配線の問題を本質的には解決できない。積層構造などで構成要素を３次元化しようとしても配線の問題は残るので、応用は限られた配線（近傍のみとの結合）で事足りるような用途に限定される。
【０００９】
また、このような複数の演算ユニット間の配線の問題は、ニューラルネットワークに限られるものではなく、演算ユニットの出力を、一度に複数の演算ユニットに入力することが計算上必要な場合に、問題となる。階層型ニューラルネットワークや自己組織化マップのような一般のニューラルネットワーク以外にも、例えば、重力多体問題、電荷を持った多体粒子のシミュレーション、信号のフィルタリング、などがある。
【００１０】
本発明は、このような事情に鑑みてなされたもので、その目的の一つは、複数の演算ユニット間の配線を簡易にすることを可能とする並列演算装置および並列演算方法を提供することにある。
【課題を解決するための手段】
【００１１】
この発明は上述した課題を解決するためになされたもので、自己組織化マップを演算する並列演算装置が、予め定められた識別情報であるユニットネットワーク座標によりそれぞれが識別される複数のユニットと、前記複数のユニットの中のいずれか１つのユニットが出力する出力値がユニット出力バスを介して入力されたことに応じて、該入力された入力値と前記複数のユニットの中から選択したいずれか１つのユニットを選択する識別情報である選択ユニットネットワーク座標とを含む制御データを、前記複数のユニットのそれぞれにユニット入力バスを介して出力する分配制御部と、を有し、前記複数のユニットのそれぞれは、前記分配制御部から入力された制御データに基づいて自ユニットが算出したノルムを記憶するユニットノルム記憶部と、自ユニットの前記ユニットネットワーク座標を記憶するユニットネットワーク座標記憶部と、を有し、前記複数のユニットは、前記複数のユニットがそれぞれ算出したノルムの中から、最小となるノルムを選択するための比較を開始するユニットとして、予め定められた複数のユニットである葉ユニットと、前記ユニットのそれぞれが算出したノルムの中から選択された最小となるノルムと、該ノルムを有するユニットのユニットネットワーク座標とを前記分配制御部に出力するユニットとして予め定められた１つの根ユニットと、前記葉ユニットと前記根ユニットとを接続する予め定められた複数のユニットである幹ユニットと、に予め分類され、前記葉ユニットと前記幹ユニットと前記根ユニットとは、前記葉ユニットから前記根ユニットに前記ノルムの比較結果が、予め定められた順序で並列に送信できるように、該順序で隣接するユニット同士がノルム比較バスを介して接続されており、かつ、前記根ユニットは前記分配制御部に前記ノルム比較バスを介して接続されており、前記幹ユニットまたは根ユニットは、自ユニットに入力されたノルムと自ユニットのユニットノルム記憶部に記憶されたノルムとにおいて最小であるノルムと、該ノルムを有するユニットを識別するユニットネットワーク座標とを関連付けて勝者ノルム情報として記憶する勝者ノルム情報記憶部と、前記順序で前記葉ユニットに近い方のユニットであり隣接するユニットである前段ユニットから、ノルムとユニットネットワーク座標とを関連付けてノルム情報として前記ノルム比較バスを介して入力するノルム情報入力部と、前記ノルム情報入力部に前記ノルム情報が入力されたことに応じて、前記ノルム情報入力部に入力されたノルムと、自ユニットの前記勝者ノルム情報記憶部または自ユニットの前記ユニットノルム記憶部から読み出したノルムとを比較し、最小となるノルムと該ノルムと関連付けられたユニットネットワーク座標とを関連付けて前記勝者ノルム情報として前記勝者ノルム情報記憶部に設定して記憶する勝者ノルム情報設定部と、前記勝者ノルム情報記憶部から読み出した勝者ノルム情報を、前記順序で前記根ユニットに近い方のユニットであり隣接するユニットである後段ユニットへ前記ノルム比較バスを介して出力するノルム情報出力部と、を有することを特徴とする並列演算装置である。
【００１２】
この発明によれば、葉ユニットと幹ユニットと根ユニットとは、葉ユニットから根ユニットにノルムの比較結果が、予め定められた順序で並列に送信できるように、該順序で隣接するユニット同士がノルム比較バスを介して接続されていて、このノルム比較バスして、順にノルムを比較し、並列で比較が実行されるために、各ユニットが算出したノルムの中らから最小となるノルムを選択する場合に、１つずつ順にノルムの比較を実行する場合に比較して、高速にノルムの比較を実行することが出来るという効果を奏する。
【００１３】
また、この発明は、前記幹ユニットまたは前記根ユニットには、複数の前記幹ユニットまたは複数の前記葉ユニットが前記前段ユニットとして予め接続されており、前記幹ユニットまたは前記根ユニットのそれぞれは、自ユニットに接続される前記前段ユニットの総数である前段接続数が予め記憶されている前段接続数記憶部と、前記ノルム情報入力部にノルムとユニットネットワーク座標とが入力される毎に、入力回数をカウントアップして記憶する入力回数記憶部と、前記前段接続数記憶部から読み出した前段接続数と、前記入力回数記憶部から読み出した入力回数とを比較する前段接続数比較部と、を有しており、前記ノルム情報出力部が、前記接続数比較部の比較結果が、前段接続数と前記入力回数とが一致した場合に、前記勝者ノルム情報記憶部から読み出した勝者ノルム情報を出力する、ことを特徴とする並列演算装置である。
【００１４】
この発明によれば、幹ユニットまたは根ユニットが、ノルムとユニットネットワーク座標とが入力された入力回数と、自ユニットに接続される前記前段ユニットの総数とを比較し、前段接続数と入力回数とが一致した場合に、前記勝者ノルム情報記憶部から読み出した勝者ノルム情報を出力することにより、比較の順序において、幹ユニットまたは根ユニットが、複数の前段ユニットからノルムを入力することが可能となり、この入力された全てのノルムの中から最小となるノルムを選択した後に、選択したノルムを後段ユニットに出力することが出来という効果を奏する。
【００１５】
また、この発明は、前記幹ユニットまたは前記根ユニットのそれぞれが、前記ノルムと前記ユニットネットワーク座標とを、自ユニットの前段ユニットから入力可能であるか否かを示すユニットビジーフラグ情報を記憶するユニットビジーフラグ記憶部を有しており、前記ユニットのそれぞれが、自ユニットの後段ユニットが有する前記ユニットビジーフラグ記憶部から出力されたユニットビジーフラグ情報に基づいて、該後段ユニットに前記ノルムと前記ユニットネットワーク座標とを出力するか否かを判定するビジーフラグ判定部を有し、前記自ユニットの前記ノルム情報出力部が、前記自ユニットのビジーフラグ判定部の判定結果に基づいて、前記勝者ノルム情報記憶部から読み出した勝者ノルム情報を出力する、ことを特徴とする並列演算装置である。
【００１６】
この発明によれば、ユニットビジーフラグ情報に基づいて、後段ユニットにノルムとユニットネットワーク座標とを出力するか否かを判定するビジーフラグ判定部を有し、この判定結果に基づいて、ノルム情報を出力することにより、後段ユニットが受信可能な場合にのみノルム情報を出力することになるため、後段ユニットが、確実にノルム情報を受信することが出来るという効果を奏する。
【００１７】
また、この発明は、前記ノルム情報入力部が、前記ノルム情報が入力されたことに応じて、前記ユニットビジーフラグ記憶部に記憶されているユニットビジーフラグ情報を自ユニットの前段ユニットから入力可能でないことを示すように設定し、前記接続数比較部が、前記比較結果が前段接続数と前記入力回数とが一致しない場合に、前記ユニットビジーフラグ記憶部に記憶されているユニットビジーフラグ情報を自ユニットの前段ユニットから入力可能であることを示すように設定する、ことを特徴とする並列演算装置である。
【００１８】
この発明によれば、自ユニットが、自ユニットの前段ユニットから入力可能でないことを示すように、また、自ユニットの前段ユニットから入力可能であることを示すように、ユニットビジーフラグ記憶部に記憶されているユニットビジーフラグ情報を適切に設定することにより、自ユニットが、前段ユニットから出力されたノルム情報を受信できないことがなく、かつ、前段ユニットから出力されたノルム情報を確実に受信することが出来るという効果を奏する。
【００１９】
また、この発明は、前記幹ユニットまたは前記根ユニットのそれぞれが、前記複数のユニットがそれぞれ算出したノルムの中から最小となるノルムを選択するための比較を開始することを示す信号を前記分配制御部から入力されたことに応じて、前記ユニットビジーフラグ記憶部に記憶されているユニットビジーフラグ情報を自ユニットの前段ユニットから入力可能であることを示すように設定するユニット制御部を有し、前記接続数比較部が、前記比較結果が前段接続数と前記入力回数とが一致した場合に、前記ユニットビジーフラグ記憶部に記憶されているユニットビジーフラグ情報を自ユニットの前段ユニットから入力可能でないことを示すように設定する、ことを特徴とする並列演算装置である。
【００２０】
この発明によれば、幹ユニットまたは根ユニットのそれぞれが、複数のユニットがそれぞれ算出したノルムの中から最小となるノルムを選択するための比較を開始することを示す信号を前記分配制御部から入力されたことに応じて、また、前段接続数と入力回数とが一致した場合に応じて、ユニットビジーフラグ情報を適切に設定するために、自ユニットが、前段ユニットから出力されたノルム情報を受信できないことがなく、かつ、前段ユニットから出力されたノルム情報を確実に受信することが出来るという効果を奏する。
【００２１】
また、この発明は、前記葉ユニットが、前記複数のユニットがそれぞれ算出したノルムの中から最小となるノルムを選択するための比較を開始することを示す信号を前記分配制御部から入力されたことに応じて、自ユニットの前記ユニットノルム記憶部から読み出したノルムと自ユニットの前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標とを出力するノルム情報出力部とを、前記自ユニットが接続される後段ユニットへ前記ノルム比較バスを介して出力する葉ノルム情報出力部、を有することを特徴とする並列演算装置である。
【００２２】
この発明によれば、複数の葉ユニットのそれぞれが、複数のユニットがそれぞれ算出したノルムの中から最小となるノルムを選択するための比較を開始することを示す信号を前記分配制御部から入力されることにより、自ユニットのノルムとユニットネットワーク座標とを後段ユニットへ出力することにより、予め定められた順序で並列にノルムの比較が実行されることとなり、そのため、複数のユニットがそれぞれ算出したノルムの中から最小となるノルムを、１つずつ比較する場合と比較して、高速に選択することが出来るという効果を奏する。
【００２３】
また、この発明は、自己組織化マップを演算する並列演算装置が、予め定められた識別情報であるユニットネットワーク座標によりそれぞれが識別される複数のユニットと、前記複数のユニットの中のいずれか１つのユニットが出力する出力値がユニット出力バスを介して入力されたことに応じて、該入力された入力値と前記複数のユニットの中から選択したいずれか１つのユニットを選択する識別情報である選択ユニットネットワーク座標とを含む制御データを、前記複数のユニットのそれぞれにユニット入力バスを介して出力する分配制御部と、を有し、前記複数のユニットのそれぞれは、前記分配制御部から入力された制御データに基づいて自ユニットが算出したノルムを記憶するユニットノルム記憶部と、自ユニットの前記ユニットネットワーク座標を記憶するユニットネットワーク座標記憶部と、を有し、前記複数のユニットは、前記複数のユニットがそれぞれ算出したノルムの中から、最小となるノルムを選択するための比較を開始するユニットとして、予め定められた複数のユニットである葉ユニットと、前記ユニットのそれぞれが算出したノルムの中から選択された最小となるノルムと、該ノルムを有するユニットのユニットネットワーク座標とを前記分配制御部に出力するユニットとして予め定められた１つの根ユニットと、前記葉ユニットと前記根ユニットとを接続する予め定められた複数のユニットである幹ユニットと、に予め分類され、前記葉ユニットと前記幹ユニットと前記根ユニットとは、前記葉ユニットから前記根ユニットに前記ノルムの比較結果が、予め定められた順序で並列に送信できるように、該順序で隣接するユニット同士がノルム比較バスを介して接続されており、かつ、前記根ユニットは前記分配制御部に前記ノルム比較バスを介して接続されている並列演算装置で用いられる並列演算であって、前記幹ユニットまたは根ユニットは、前記順序で前記葉ユニットに近い方のユニットであり隣接するユニットである前段ユニットから、ノルムとユニットネットワーク座標とを関連付けてノルム情報として前記ノルム比較バスを介して入力するノルム情報入力手順と、前記ノルム情報入力手順で前記ノルム情報が入力されたことに応じて、前記ノルム情報入力手順で入力されたノルムと、自ユニットに入力されたノルムと自ユニットのユニットノルム記憶部に記憶されたノルムとにおいて最小であるノルムと該ノルムを有するユニットを識別するユニットネットワーク座標とを関連付けて勝者ノルム情報として記憶する勝者ノルム情報記憶部、または、自ユニットの前記ユニットノルム記憶部から読み出したノルムと、を比較し、最小となるノルムと該ノルムと関連付けられたユニットネットワーク座標とを関連付けて前記勝者ノルム情報として前記勝者ノルム情報記憶部に設定して記憶する勝者ノルム情報設定手順と、前記勝者ノルム情報記憶部から読み出した勝者ノルム情報を、前記順序で前記根ユニットに近い方のユニットであり隣接するユニットである後段ユニットへ前記ノルム比較バスを介して出力するノルム情報出力手順と、を有することを特徴とする並列演算方法である。
【発明を実施するための最良の形態】
【００２４】
＜第１の基本構成＞
以下、図面を参照して、本発明の実施の形態について説明する。図１は、この発明の一実施形態による並列演算装置の構成（第１の基本構成）を示す概略ブロック図である。ここでは、ユニットＵ１からＵ１０の、ユニットの個数が１０である場合について説明する。なお、このユニットの詳細については、後述する。
【００２５】
複数のユニットＵ１からＵ１０は、予め定められた順序であるデイジーチェーン順序で、デイジーチェーン制御バス１を介してデイジーチェーンされている。ここでは、このデイジーチェーン順序は、ユニットＵ１、ユニットＵ２、ユニットＵ３、・・・ユニットＵ１０の順と、予め定められているものとして説明する。また、デイジーチェーン制御バス１は、デイジーチェーン順序で隣接するユニット同士を接続している。例えば、デイジーチェーン制御バス１は、ユニットＵ１とユニットＵ２、ユニットＵ２とユニットＵ３、・・・ユニットＵ１０とユニットＵ１、を接続している。また、このデイジーチェーン制御バス１は、ユニットＵ１からＵ１０をデイジーチェーン順序で循環的に接続している。そのため、ユニットＵ１０とユニットＵ１とも、デイジーチェーン制御バス１を介して接続されている。
【００２６】
ユニットＵ１からＵ１０のそれぞれのユニットは、トークンをデイジーチェーン順序で、デイジーチェーン制御バス１を介してユニット間で送受信している。このトークンは、デイジーチェーンされたユニットＵ１からＵ１０の、いずれかの１つのユニットが有しており、このトークンを有しているユニットが、出力ユニットとなることを示す信号である。ユニットは、トークンを有しているユニットのみが出力ユニットとなり、また、全てのユニットが入力ユニットとなる。
【００２７】
この各ユニットは、ユニット出力バス２を介して入力される増幅器４からの入力値に基づいて、ユニット毎に予め定められた演算方法により演算する。また、各ユニットは、トークンがデイジーチェーン順序で前のユニットからデイジーチェーン制御バス１を介して入力されたことに応じて、トークンをデイジーチェーン順序で次のユニットにデイジーチェーン制御バス１を介して出力すると共に、演算した結果を出力値として増幅器４にユニット出力バス２を介して出力する。
【００２８】
増幅器（中継器）４は、複数のユニットＵ１からＵ１０の内のいずれか１つが出力する出力値がユニット出力バス２を介して入力され、入力された出力値を複数のユニットＵ１からＵ１０のそれぞれに、ユニット入力バス３を介して入力値として出力する。また、増幅器４は、入力された出力値の信号を、電気的に増幅して、入力値として出力する。
【００２９】
また、ユニット出力バス２の一端が、並列演算装置の出力端子Ｐ１に接続されている。また、増幅器４の入力端子に、並列演算装置の入力端子Ｐ２に接続されている。また、ユニットＵ１は、トリガ入力線５を介して、トリガ入力端子Ｐ３と、接続されている。また、出力端子Ｐ１、入力端子Ｐ２、トリガ入力端子Ｐ３は、並列演算装置の外部にある制御装置に接続されている。制御装置は、出力端子Ｐ１、入力端子Ｐ２、トリガ入力端子Ｐ３を介して、並列演算装置にデータを入力し、並列演算装置から演算結果を取得し、また、並列演算装置を制御する。
【００３０】
次に、図２を用いて、各ユニットの構成について説明する。なお、ユニットＵ１からＵ１０は同一の構成を有するため、ここでは、ユニットＵ２の構成のみについて説明する。ユニットＵ２は、トークン入力部１２と、トークン出力部１３と、データ入力部１１と、データ出力部１４と、ユニット演算部１５と、ユニット出力記憶部１６と、を有する。
【００３１】
トークン入力部１２は、デイジーチェーン制御バス１を介してデイジーチェーンされている順序が１つ前のユニットからのトークンを入力する。例えば、ユニットＵ２のトークン入力部１２は、デイジーチェーン制御バス１を介してデイジーチェーンされている順序が１つ前のユニットであるユニットＵ１からのトークンを入力する。なお、ユニットＵ１のトークン入力部１２は、ユニットＵ１０からのトークンがトークンデイジーチェーン制御バス１を介して入力されるだけでなく、制御装置からのトークンがトリガ入力端子Ｐ３とトリガ入力線５とを介して入力される。
【００３２】
トークン出力部１３は、トークン入力部にトークンが入力されたことに応じて、トークンをデイジーチェーンされている順序が１つ後のユニットへデイジーチェーン制御バス１を介して出力する。例えば、ユニットＵ２のトークン出力部１３は、デイジーチェーン制御バス１を介してデイジーチェーンされている順序が１つ後のユニットであるユニットＵ３へトークンを出力する。
【００３３】
データ入力部１１は、ユニット出力バス２を介して増幅器４からの入力値を入力する。ユニット出力記憶部１６は、ユニット演算部１５が演算した結果である演算結果が記憶される。ユニット演算部１５は、データ入力部１１に入力された入力値に基づいて、ユニット毎に予め定められた演算方法により演算する。また、ユニット演算部１５は、演算した結果である演算結果を、ユニット出力記憶部１６に記憶させる。
【００３４】
データ出力部１４は、トークン入力部１２にトークンが入力されたことに応じて、ユニット演算部１５が演算した結果である演算結果を出力値として、増幅器４にユニット出力バス２を介して出力する。また、データ出力部１４は、トークン入力部１２にトークンが入力されたことに応じて、ユニット出力記憶部１６から演算結果を読み出し、読み出した演算結果を出力値として、増幅器４にユニット出力バス２を介して出力する。
【００３５】
なお、後述するように、並列演算装置が、トリガであるトークンをユニットＵ１にトリガ入力端子Ｐ３を介して入力し、ユニットＵ１から順にトークンがユニット間で順次渡されていくことにより、並列演算装置の各ユニットでの処理が実行される。この並列演算装置の動作については、次に説明する並列演算装置を階層型ニューラルネットワークに適応した場合を例にして説明する。
【００３６】
＜第１の実施形態＞
＜階層型ニューラルネットワークに適応した場合のユニットの構成＞
次に、並列演算装置を、階層型ニューラルネットワークに適応した場合の構成について説明する。階層型ニューラルネットワークにおいても並列演算装置全体の構成は、図１の並列演算装置の構成と同一であり、ユニットの構成のみが異なる。従って、図３を用いて、階層型ニューラルネットワークに適応した場合のユニットの構成を説明する。
【００３７】
ユニットは、データ入力部１０１と、トークン入力部１０２と、トークン出力部１０３と、データ出力部１０４とを有する。また、ユニットは、重み記憶部１３０と、層情報記憶部１３３と、ユニット数記憶部１３４と、積和計算一次値記憶部１３１と、関数記憶部１３２と、ユニット出力記憶部１３５と、データ出力フラグ記憶部１３６と、ユニット識別情報記憶部１３７とを有する。また、ユニットは、カウンタ１１４と、積和計算一次値算出部１１１と、層情報算出部１１３と、ユニット出力算出部１１２とを有する。
【００３８】
ここで、図３のデータ入力部１０１、トークン入力部１０２、トークン出力部１０３、データ出力部１０４は、図２のデータ入力部１１、トークン入力部１２、トークン出力部１３、データ出力部１４に、それぞれ対応する。また、図３のユニット出力記憶部１３５が、図２のユニット出力記憶部１６に対応する。これらの図２と図３とにおいて対応する構成について、共通の機能については、その説明を省略する。
【００３９】
また、図３の重み記憶部１３０と、層情報記憶部１３３と、ユニット数記憶部１３４と、積和計算一次値記憶部１３１と、関数記憶部１３２と、データ出力フラグ記憶部１３６と、ユニット識別情報記憶部１３７と、カウンタ１１４と、積和計算一次値算出部１１１と、層情報算出部１１３と、ユニット出力算出部１１２とが、図２のユニット演算部１５に対応する。
【００４０】
層情報記憶部１３３には、階層型ニューラルネットワークの階層のうち、アクティブな層（出力層）を識別する層情報が記憶されている。ユニット識別情報記憶部１３７には、アクティブな層に属しているユニットのうち、いずれのユニットが出力しているかを示すユニット識別情報が記憶されている。関数記憶部１３２には、ユニットの出力関数と層情報とが関連付けて予め記憶されている。この出力関数とは、例えば、シグモイド関数、ステップ関数、区分線形関数などの、予め定められた関数である。
【００４１】
重み記憶部１３０には、層情報で識別されるアクティブな層のユニットからの出力値に乗ずる予め定められた結合荷重と、層情報とが関連付けて記憶されている。また、重み記憶部１３０には、層情報とユニット識別情報とで識別される層のユニットからの出力値に乗ずる予め定められた結合荷重と、層情報とユニット識別情報とが、関連付けて記憶されている。
【００４２】
ユニット数記憶部１３４には、層情報と層情報で識別される階層に属する階層型ニューラルネットワークのユニット数とが関連付けて予め記憶されている。積和計算一次値記憶部１３１には、前段ユニットに相当するユニットからの入力値と結合荷重とを乗じた積和計算一次値情報が記憶される。データ出力フラグ記憶部１３６には、データ出力部１０４が出力値を出力済みであるか否かを示すデータ出力フラグが記憶されている。カウンタ１１４は、データ入力部１０１に入力値が入力される毎に、ユニット識別情報記憶部１３７に記憶されているユニット識別情報の値をインクリメントする。
【００４３】
ユニット数比較部１１５は、層情報記憶部１３３から層情報を読み出し、読み出した層情報に該当するユニット数をユニット数記憶部１３４から読み出し、ユニット識別情報記憶部１３７からユニット識別情報を読み出し、読み出したユニット識別情報の値と読み出したユニット数とを比較し、比較した結果が一致した場合に、読み出したユニット識別情報の値と読み出したユニット数とが一致したことを示す比較一致信号を出力する。また、ユニット数比較部１１５は、読み出したユニット識別情報の値と読み出したユニット数とを比較し、比較した結果が一致した場合に、ユニット識別情報記憶部１３７に記憶されているユニット識別情報の値をリセットする。
【００４４】
積和計算一次値算出部１１１は、層情報記憶部１３３から読み出した層情報に該当する結合荷重を重み記憶部１３０から読み出し、読み出した結合荷重と、データ入力部１０１に入力された入力値とを乗算し、乗算した値を積和計算一次値記憶部１３１に記憶されている積和計算一次値情報に加算して記憶させる。
【００４５】
また、積和計算一次値算出部１１１は、ユニット識別情報記憶部１３７から読み出したユニット識別情報と層情報記憶部１３３から読み出した層情報とに該当する結合荷重を重み記憶部１３０から読み出し、読み出した結合荷重と、データ入力部１０１に入力された入力値とを乗算し、乗算した値を積和計算一次値記憶部１３１に記憶されている積和計算一次値情報に加算して記憶させる。
【００４６】
ユニット出力算出部１１２は、積和計算一次値記憶部１３１から積和計算一次値情報を読み出し、層情報記憶部１３３から読み出した層情報に該当する出力関数を関数記憶部１３２から読み出し、読み出した出力関数に読み出した積和計算一次値情報を代入することにより出力値を算出し、算出した出力値をユニット出力記憶部１３５に記憶させる。
【００４７】
また、ユニット出力算出部１１２は、ユニット数比較部１１５から比較一致信号を入力されたことに応じて、積和計算一次値記憶部１３１から積和計算一次値情報を読み出し、層情報記憶部１３３から読み出した層情報に該当する出力関数を関数記憶部１３２から読み出し、読み出した出力関数に読み出した積和計算一次値情報を代入することにより出力値を算出し、算出した出力値をユニット出力記憶部１３５に記憶させる。
また、ユニット出力算出部１１２は、積和計算一次値記憶部１３１から積和計算一次値情報を読み出した後、積和計算一次値記憶部１３１に記憶されている積和計算一次値情報の値を０にリセットする。
【００４８】
層情報算出部１１３は、ユニット数比較部１１５から比較一致信号を入力されたことに応じて、層情報記憶部１３３に記憶されている層情報の値をインクリメントする。データ出力部１０４は、トークン入力部１０２にトークンが入力されたことに応じて、データ出力フラグ記憶部１３６のデータ出力フラグを出力済みに設定する。
【００４９】
トークン出力部１０３は、データ入力部１０１に入力値が入力されたことに応じて、データ出力フラグ記憶部１３６からデータ出力フラグを読み出し、該読み出したデータ出力フラグが出力済みに設定されている場合には、トークンを出力する（トークン出力手順）。また、トークン出力部１０３は、トークンを出力すると共に、データ出力フラグ記憶部１３６のデータ出力フラグを未出力に設定する。
【００５０】
なお、トークン出力部１０３は、データ入力部１０１に入力値が入力されたことに応じて、データ出力フラグ記憶部１３６からデータ出力フラグを読み出し、読み出したデータ出力フラグが出力済みに設定されている場合には、トークンを出力するという上記トークン出力手順の代わりに、積和計算一次値算出部１１１にデータ入力部１０１からの入力値が入力されたことに応じて、データ出力フラグ記憶部１３６からデータ出力フラグを読み出し、該読み出したデータ出力フラグが出力済みに設定されている場合には、トークンを出力してもよい。
【００５１】
＜階層型ニューラルネットワークに適応した場合のユニットの動作＞
次に、図４と図５とを用いて、図３の階層型ニューラルネットワークに適応した場合のユニットの動作について説明する。まず、図４を用いて、ユニットに入力値が入力された場合の動作について説明する。
【００５２】
まず、データ入力部１０１に、増幅器４からユニット入力バス３を介して入力値が入力される（ステップＳ１００）。次に、ステップＳ１００で、データ入力部１０１に入力値が入力されたことに応じて、カウンタ１１４がユニット識別情報記憶部１３７に記憶されているユニット識別情報の値を、１つインクリメントする（ステップＳ１０１）。
【００５３】
また、ステップＳ１００で、データ入力部１０１に入力値が入力されたことに応じて、積和計算一次値算出部１１１が、ユニット識別情報記憶部１３７から読み出したユニット識別情報と層情報記憶部１３３から読み出した層情報とに該当する結合荷重を重み記憶部１３０から読み出し、読み出した結合荷重と、データ入力部１０１に入力された入力値とを乗算し、乗算した値を積和計算一次値記憶部１３１に記憶されている積和計算一次値情報に加算して記憶させる。
【００５４】
次に、ユニット数比較部１１５が、層情報記憶部１３３から層情報を読み出し、読み出した層情報に該当するユニット数をユニット数記憶部１３４から読み出し、ユニット識別情報記憶部１３７からユニット識別情報を読み出し、読み出したユニット識別情報の値と読み出したユニット数とを比較し、比較した結果が一致した場合に、読み出したユニット識別情報の値と読み出したユニット数とが一致したことを示す比較一致信号を出力する（ステップＳ１０３）。また、このユニット数比較部１１５が、読み出したユニット識別情報の値と読み出したユニット数とを比較し、比較した結果が一致した場合に、ユニット識別情報記憶部１３７に記憶されているユニット識別情報の値をリセットする。
【００５５】
次に、ステップＳ１０３にて比較した結果が一致した場合には、層情報算出部１１３が、ユニット数比較部１１５から比較一致信号を入力されたことに応じて、層情報記憶部１３３に記憶されている層情報の値をインクリメントする（ステップＳ１０４）。
【００５６】
次に、ステップＳ１０３にて比較した結果が一致した場合には、ユニット出力算出部１１２は、ユニット数比較部１１５から比較一致信号を入力されたことに応じて、積和計算一次値記憶部１３１から積和計算一次値情報を読み出し、層情報記憶部１３３から読み出した層情報に該当する出力関数を関数記憶部１３２から読み出し、読み出した出力関数に読み出した積和計算一次値情報を代入することにより出力値を算出し、算出した出力値をユニット出力記憶部１３５に記憶させる（ステップＳ１０５）。次に、このユニット出力算出部１１２は、積和計算一次値記憶部１３１から積和計算一次値情報を読み出した後、積和計算一次値記憶部１３１に記憶されている積和計算一次値情報の値を０にリセットする。
【００５７】
次に、または、ステップＳ１０３にて比較した結果が不一致であった場合には、トークン出力部１０３が、ステップＳ１００にてデータ入力部１０１に入力値が入力されたことに応じて、データ出力フラグ記憶部１３６からデータ出力フラグを読み出し、該読み出したデータ出力フラグが出力済みであるか否かを検出し（ステップＳ１０６）、データ出力フラグが出力済みに設定されている場合には、トークンを出力する（ステップＳ１０７）。
【００５８】
また、トークン出力部１０３は、ステップＳ１０７にてトークンを出力すると共に、データ出力フラグ記憶部１３６のデータ出力フラグを未出力に設定し（ステップＳ１０８）、処理を終了する。一方、ステップＳ１０６にてデータ出力フラグが未出力に設定されている場合には、トークン出力部１０３は、処理を終了する。
【００５９】
次に、図５を用いて、ユニットにトークンが入力された場合の動作について説明する。まず、トークン入力部１０２に、デイジーチェーン制御バス１を介してデイジーチェーンされている順序が１つ前のユニットからのトークンが入力される（ステップＳ２００）。
【００６０】
次に、データ出力部１０４は、トークン入力部１０２にトークンが入力されたことに応じて、ユニット出力記憶部１３５から出力値（演算結果）を読み出し、読み出した出力値（演算結果）を出力値として、増幅器４にユニット出力バス２を介して出力する（ステップＳ２０１）。次に、データ出力部１０４は、トークン入力部１０２にトークンが入力されたことに応じて、データ出力フラグ記憶部１３６のデータ出力フラグを出力済みに設定して（ステップＳ２０２）、処理を終了する。
【００６１】
＜階層型ニューラルネットワークの全体の構成＞
次に、本実施形態による階層型ニューラルネットワークの全体の構成について、説明する。
ここでは、図６に示すように、階層型ニューラルネットワークとして、入力層Ｌ１、隠れ層Ｌ２、出力層Ｌ３の３層がある場合について説明する。各層は、層情報により識別されており、また、階層の層情報は、階層の順に層情報が１つずつ大きくなるようにして、識別されている。例えば、入力層Ｌ１の層情報が１、隠れ層Ｌ２の層情報が２、出力層Ｌ３の層情報が３として識別されている。
【００６２】
また、入力層Ｌ１には、Ｐ１０１、Ｐ１０２、Ｐ１０３の３個のノードがあり、隠れ層Ｌ２には、Ｐ２０１、Ｐ２０２、Ｐ２０３、Ｐ２０４、Ｐ２０５、Ｐ２０６、Ｐ２０７、Ｐ２０８、Ｐ２０９、Ｐ２１０の１０個のノードがあり、出力層Ｌ３には、Ｐ３０１、Ｐ３０２、Ｐ３０３の３個のノードがある場合について説明する。入力層Ｌ１の各ノードの出力は、隠れ層Ｌ２の各ノードの入力に入力され、また、隠れ層Ｌ２の各ノードの出力は、出力層Ｌ３の各ノードの入力に入力されている。
【００６３】
各層において、各ノードはユニット識別情報により識別されており、各ノードのユニット識別情報は、予め定められたノードの配置順に、ユニット識別情報が１つずつ大きくなるようにして設定されている。例えば、Ｐ１０１はユニット識別情報が１であり、Ｐ１０２はユニット識別情報が２であり、Ｐ１０３はユニット識別情報が３である。
【００６４】
本実施の形態においては、それぞれのユニットが、隠れ層Ｌ２、出力層Ｌ３のノードとして機能する。なお、この例においては、ユニットＵ１からユニットＵ３は、隠れ層Ｌ２、出力層Ｌ３のノードとして機能し、ユニットＵ４からユニットＵ１０は、隠れ層Ｌ２のノードとして機能する。ここで、制御装置が入力層Ｌ１として出力値を、増幅器４とユニット出力バス２とを介して、隠れ層Ｌ２としての各ユニットに、順次出力する。そのために、ここでは、各ユニットは、隠れ層Ｌ２と出力層Ｌ３として機能する。
例えば、ユニットＵ１は、隠れ層Ｌ２のノードＰ２０１と出力層Ｌ３のノードＰ３０１として機能する。また、ユニットＵ３は、隠れ層Ｌ２のノードＰ２０３と出力層Ｌ３のノードＰ３０３として機能する。また、ユニットＵ４は、隠れ層Ｌ２のノードＰ２０４として機能する。
【００６５】
ここで、あるユニットに値が入力された際、入力層Ｌ１、隠れ層Ｌ２、出力層Ｌ３のいずれの層からの入力であるかは、各ユニットにおいて、ユニットが有する層情報記憶部１３３に記憶してある層情報により判定される。
【００６６】
＜階層型ニューラルネットワークの全体の動作＞
次に、本実施形態による階層型ニューラルネットワークの、一例としての、全体の動作について説明する。ここでは、各ユニットが、出力層Ｌ３のノードとして機能し、トークンを入力されたいずれか１つのユニットが隠れ層Ｌ２のアクティブなノードとして機能する場合について説明する。この場合、各ユニットが出力層Ｌ３のノードとして機能し、アクティブな層が隠れ層Ｌ２であるため、各ユニットの層情報記憶部１３３には層情報の値として２が記憶されている。
【００６７】
まず、ノードＰ２０１であるユニットＵ１が、トークンが制御装置から入力されることにより、ユニット出力記憶部１３５から出力値を読み出し、出力値を出力すると共に、データ出力フラグ記憶部１３６のデータ出力フラグを出力済みとして設定する（手順Ａ１００）。次に、ノードＰ２０１からの出力値が、ユニット出力バス２と増幅器４とユニット入力バス３とを介して、ユニットＵ１からＵ１０の各ユニットのデータ入力部１０１に入力される。
【００６８】
次に、ユニットＵ１からＵ１０の各ユニットは、ユニットＵ１からの入力値に基づいて、積和計算一次値算出部１１１が、ユニット識別情報記憶部１３７から読み出したユニット識別情報と層情報記憶部１３３から読み出した層情報とに該当する結合荷重を重み記憶部１３０から読み出し、読み出した結合荷重と、データ入力部１０１に入力された入力値とを乗算し、乗算した値を積和計算一次値記憶部１３１に記憶されている積和計算一次値情報に加算して記憶させる（手順Ａ１０１）。
ここで、各ユニットの積和計算一次値算出部１１１が、ユニット識別情報記憶部１３７から読み出したユニット識別情報と層情報記憶部１３３から読み出した層情報とに該当する結合荷重を重み記憶部１３０から読み出すことにより、各ユニットは、層情報に基づいて出力層Ｌ３のノードとして機能し、また、層情報に基づいて、アクティブなユニットの属する層が隠れ層Ｌ２であると識別し、更に、ユニット識別情報に基づいてアクティブとなる隠れ層Ｌ２での各ノードを識別し、この隠れ層Ｌ２のアクティブとなるノードに対応する結合荷重を、このアクティブとなった隠れ層Ｌ２のノードからの出力値に乗ずることが可能となる。
【００６９】
ここで、ユニットＵ１のデータ出力フラグ記憶部１３６のデータ出力フラグは、出力済みとして設定されてあるため、ユニットＵ１のトークン出力部１０３は、データ入力部１０１に入力値が入力されたことに応じて、トークンを出力すると共に、データ出力フラグ記憶部１３６のデータ出力フラグを未出力として設定する（手順Ａ１０２）。
【００７０】
次に、ユニットＵ１から出力されたトークンは、デイジーチェーン制御バス１を介して、デイジーチェーンされている順序が１つ後のユニットであるユニットＵ２のトークン入力部１２に入力される（手順Ａ１０３）。
【００７１】
ユニットＵ２はトークン入力部１２にトークンが入力されたことに応じて、上記に説明した手順Ａ１００でノードＰ１０１であるユニットＵ１が、トークンが入力された場合と同様に、ユニット出力記憶部１３５から出力値を読み出し、出力値を出力すると共に、データ出力フラグ記憶部１３６のデータ出力フラグを出力済みとして設定する（手順Ａ１０４）。
【００７２】
以降、同様に、手順Ａ１０１から手順Ａ１０３を繰り返し、隠れ層Ｌ２のノードＰ２１０であるユニットＵ１０が、出力値を出力すると共に、データ出力フラグ記憶部１３６のデータ出力フラグを出力済みとして設定する。
【００７３】
次に、出力層Ｌ３のノードＰ３０１からＰ３０３に該当するユニットＵ１からＵ３の各ユニットは、手順Ａ１０１と同様に、ユニットＵ１０からの入力値に基づいて、各ユニットの積和計算一次値算出部１１１が、ユニット識別情報記憶部１３７から読み出したユニット識別情報と層情報記憶部１３３から読み出した層情報とに該当する結合荷重を重み記憶部１３０から読み出し、読み出した結合荷重と、データ入力部１０１に入力された入力値とを乗算し、乗算した値を積和計算一次値記憶部１３１に記憶されている積和計算一次値情報に加算して記憶させる（手順Ａ１０５）。
【００７４】
ここで、ユニットＵ１０からの入力値が、各ユニットのデータ入力部１０１に入力されたことに応じて、各ユニットのカウンタ１１４は、ユニット識別情報記憶部１３７に記憶されているユニット識別情報の値をインクリメントし、ユニット識別情報の値は３となる（手順Ａ１０６）。
なお、各ユニットのユニット数記憶部１３４には、層情報と層情報で識別される階層に属する階層型ニューラルネットワークのユニット数とが関連付けて予め記憶されている。例えば、図６の階層型ニューラルネットワークの場合には、入力層Ｌ１の層情報である値１と、階層型ニューラルネットワークのユニット数、つまり、入力層Ｌ１のノード数である３とが、関連付けて予め記憶されている。また、例えば、図６の階層型ニューラルネットワークの場合には、隠れ層Ｌ２の層情報である値２と、階層型ニューラルネットワークのユニット数、つまり、隠れ層Ｌ２のノード数である１０とが、関連付けて予め記憶されている。
【００７５】
次に、各ユニットのユニット数比較部１１５は、層情報記憶部１３３から層情報を読み出し、読み出した層情報に該当するユニット数をユニット数記憶部１３４から読み出し、ユニット識別情報記憶部１３７からユニット識別情報を読み出し、読み出したユニット識別情報の値と読み出したユニット数とを比較し、比較した結果が一致するために、読み出したユニット識別情報の値と読み出したユニット数とが一致したことを示す比較一致信号を出力すると共に、ユニット識別情報記憶部１３７に記憶されているユニット識別情報の値をリセットする（手順Ａ１０７）。
【００７６】
次に、各ユニットのユニット出力算出部１１２は、ユニット数比較部１１５から比較一致信号を入力されたことに応じて、積和計算一次値記憶部１３１から積和計算一次値情報を読み出し、層情報記憶部１３３から読み出した層情報に該当する出力関数を関数記憶部１３２から読み出し、読み出した出力関数に読み出した積和計算一次値情報を代入することにより出力値を算出し、算出した出力値をユニット出力記憶部１３５に記憶させる（手順Ａ１０８）。
【００７７】
ここで、各ユニットのユニット出力算出部１１２は、層情報記憶部１３３から読み出した層情報に該当する出力関数を関数記憶部１３２から読み出すため、出力層Ｌ３に該当するユニット毎の出力関数により、ユニットの出力値を算出することが可能となる。また、各ユニットのユニット出力記憶部１３５に出力層Ｌ３のノードとして算出した出力値が記憶されるため、各ユニットはトークンが入力された場合に、各ユニットは出力層Ｌ３のアクティブなノードとして、出力値を出力することが可能となる。
【００７８】
また、各ユニットの層情報算出部１１３が、ユニット数比較部１１５から比較一致信号を入力されたことに応じて、層情報記憶部１３３に記憶されている層情報の値をインクリメントして、層情報の値を３とする。そのために、各ユニットは、以降、トークンが入力されたいずれか１つのユニットが、出力層Ｌ３のアクティブなノードとして出力値を出力する。
【００７９】
なお、上記において、出力層Ｌ３でユニットＵ３からユニットＵ４にトークンが出力され、次に、トークンを入力されたユニットＵ４が出力層Ｌ３のノードとして出力値を出力するが、この例における階層型ニューラルネットワークにおいて、出力層Ｌ３のノードとしてユニットＵ４に相当するノードは無いため、ユニットＵ４は、出力層Ｌ３のノードとして出力値を出力しないことが望ましい。または、ユニットＵ４は、出力層Ｌ３のノードとしては、出力値の値を０として出力してもよい。または、各ユニットにおいて、出力層Ｌ３としてのユニットＵ４からの出力値に乗じる結合荷重を０として、重み記憶部１３０に予め記憶しておいてもよい。
【００８０】
このようにユニットＵ４の出力値、または、ユニットＵ４からの出力値を受けた各ユニットの結合荷重を、予め階層型ニューラルネットワークの各層のノードの個数に合わせて設定しておくことにより、ユニットに対して、ある層でそのユニットに対応するノードが無い場合においても、本実施形態の並列演算装置は階層型ニューラルネットワークとして問題なく動作することが可能である。
【００８１】
以上説明したように、本実施形態を階層型ニューラルネットワークに適応した場合には、一度に発火すうニューロンの個数を１つに限定したことにより、つまり、出力層において出力値を出力するノードを、トークンが入力された１つのユニットに限定することにより、ユニット間の配線が増大することを減じる効果を奏する。
また、１つの出力層のノードであるユニットからの出力値が、ユニット入力バス３を介して、１度に全ての入力層となるノードであるユニットに分配して入力されるため、分配に要する時間を減じる効果を奏する。また、複数のユニットが、並列にユニット内演算を演算するため、全体としての演算が高速になるという効果を奏する。
【００８２】
例えば、階層型ニューラルネットワークを演算した場合、従来型のプロセッサを用いた場合には、その計算時間は概算として、計算時間＝（シナプス数×１回の演算に要するステップ数÷クロック周波数）として算出されるのに対して、本実形態による並列演算装置を用いた場合には、計算時間＝（ニューロン数×１ニューロンの発火周期）により算出される。ここで、シナプス数は、ニューロン数の２乗に比例するため、本実形態による並列演算装置を用いた階層型ニューラルネットワークの計算時間は、従来型のプロセッサを用いた場合に比較して、計算時間を大幅に減ずることが可能となる。
【００８３】
また、各ユニットが、階層型ニューラルネットワークの層を変更し、かつ、入力側の層のノードと出力側の層のノードとして機能するため、少ないユニット数で多層のノードの演算を実行することが可能となる効果を奏する。
【００８４】
なお、上記に説明した第１の実施形態においては、制御装置が入力層Ｌ１として出力値を順次出力し、そのために、各ユニットは隠れ層Ｌ２と出力層Ｌ３のノードとして機能するとして説明したが、各ユニットは、入力層Ｌ１のノードとして機能するようにしてもよい。例えば、制御装置が入力層Ｌ１のノードに対応する出力値を順次出力し、ユニットが入力層Ｌ１のノードとして、制御装置からの出力値をユニット出力記憶部１３５に順次記憶する。次に、トークンが入力されたユニットが、入力層Ｌ１のアクティブなユニットとして出力値を出力する。このようにして、各ユニットは、入力層Ｌ１と、隠れ層Ｌ２と、出力層Ｌ３とのユニットとして機能することも可能である。
【００８５】
なお、上記の第１の実施形態においては、階層型ニューラルネットワークとして、入力層Ｌ１、隠れ層Ｌ２、出力層Ｌ３の３層がある場合について説明したが、本実施形態は、階層型ニューラルネットワークの階層は３層に限られるものではなく、任意の階層に適応可能である。
【００８６】
＜第２の実施形態＞
＜自己組織化マップに適応した場合のユニットの構成＞
次に、本実施形態の並列演算装置を、自己組織化マップに適応した場合について説明する。自己組織化マップは、次のような処理を実行することにより、多変量からなるデータの統計的性質を学習し、類似したデータが近接するように配列し、また、データの視覚化を可能とするものである。
【００８７】
各ユニットは、ユニットの結合重みベクトルを有している。まず、各ユニットに入力データベクトルが入力され、各ユニットは入力された入力データベクトルと結合重みベクトルの差であるノルムを算出する（手順Ａ２００）。次に、最もノルムの小さい出力ユニットを勝者ユニットとして選択する（手順Ａ２０１）。次に、選択した勝者ユニットとその近傍のユニットが、より入力データベクトルに近づくように結合重みベクトルの値を予め定められた関数により変更して、学習を行う（手順Ａ２０３）。この、手順Ａ２００から手順Ａ２０３を繰り返す。
【００８８】
本実施形態の並列演算装置を自己組織化マップに適応する場合、各ユニットに入力されるデータは、上記の手順Ａ２００と、手順Ａ２０１と、手順Ａ２０２とで異なるため、実施形態においては、ユニットに入力するデータに、上記の手順Ａ２００と、手順Ａ２０１と、手順Ａ２０２とを識別する識別情報を組とすることにより、識別する。
【００８９】
図９（ａ）に示すように、ユニット入力バス３からの入力値は、ノルム部とデータ部とを有する。また、図９（ｂ）に示すように、ノルム部の値が−２である場合、入力値のノルム部は「データ部の値が入力ベクトルである」ことを示す識別子であり、そのデータ部は入力ベクトルである。また、図９（ｃ）に示すように、ノルム部の値が−１である場合、ノルム部は「近傍判定識別情報」であり、そのデータ部は、ネットワーク座標である。また、図９（ｄ）に示すように、ノルム部の値が零または正の値である場合、ノルム部の値はノルムであり、また、データ部は、ネットワーク座標である。これらの詳細については、後述する。
【００９０】
次に、図７と図８とを用いて、自己組織化マップに適応した場合の並列演算装置のユニットの構成について説明する。ここで、複数のユニットのそれぞれは、ネットワーク座標により識別される座標で予め識別されている。なお、各ユニットは、第１の実施形態と同様に、同一の構成を有しているので、ここでは１つのユニットの構成のみについて説明する。
【００９１】
この図７または図８のユニットの構成において、データ入力部２０１はデータ入力部１１に対応し、データ出力部２０４はデータ出力部１４に対応し、トークン入力部２０２はトークン入力部１２に対応と、トークン出力部２０３はトークン出力部１３に対応する。また、ユニットノルム記憶部２３６と、入力ノルム記憶部２３７と、ユニットネットワーク座標記憶部２３４と、入力ネットワーク座標記憶部２３３とは、ユニット出力記憶部１６に対応する。また、他の構成は、ユニット演算部１５に対応する。
【００９２】
ユニットネットワーク座標記憶部２３４には、ユニットのネットワーク座標であるユニットネットワーク座標が予め記憶されている。入力ネットワーク座標記憶部２３３には、入力されたネットワーク座標である入力ネットワーク座標が記憶される。重み記憶部２３１には、ユニットの結合重みベクトルが予め記憶されている。入力データ記憶部２３０には、入力された入力データベクトルが記憶される。ユニットノルム記憶部２３６には、ユニットのノルムが記憶される。入力ノルム記憶部２３７には、入力されたノルムが記憶される。
【００９３】
学習速度記憶部２３５には、学習速度を決める係数である学習速度係数が予め記憶されている。また、学習速度記憶部２３５には、学習した回数を示す学習ステップ数と、前記学習速度係数とが予め関連付けて記憶されている。距離記憶部２３２には、ネットワーク座標の間の距離が近傍であるか否かを判定する基準である基準距離が予め記憶されている。また、距離記憶部２３２には、学習ステップ数と基準距離とが予め関連付けて記憶されている。
【００９４】
データ入力判定部２２２は、データ入力部２０１に入力された入力値が入力データベクトルであるか否かを判定し、入力データベクトルである場合には、データ抽出部２１０に入力値である入力データベクトルを出力し、入力データベクトルでない場合には、ネットワーク座標抽出部２１１とノルム抽出部２１２とに入力値を出力する。
このデータ入力判定部２２２は、入力値のノルムの値が、入力値が入力データベクトルであることを示す値である−２であるか否かを判定することにより、データ入力部２０１に入力された入力値が入力データベクトルであるか否かを判定する。
【００９５】
データ抽出部２１０は、データ入力部２０１に入力された入力値が入力データベクトルである場合には、入力された入力データベクトルを入力データ記憶部２３０に記憶させる。また、データ抽出部２１０は、入力された入力データベクトルを、ノルム算出部２１４に出力する。また、データ抽出部２１０は、入力データベクトルが入力される毎に、カウンタ２１３がカウントアップ信号を出力する。
【００９６】
カウンタ２１３は、ユニットに入力データベクトルが入力される毎に、ユニットに入力データベクトルが入力された回数であるステップ数をカウントアップする。また、カウンタ２１３は、データ抽出部２１０からカウントアップ信号を入力される毎に、ステップ数をカウントアップする。
【００９７】
ノルム算出部２１４は、データ入力部２０１に入力された入力値が入力データベクトルである場合には、入力された入力データベクトルと、重み記憶部２３１から読み出した結合重みベクトルとのノルムを算出し、算出したノルムをユニットノルムとしてユニットノルム記憶部２３６に記憶させる。
【００９８】
入力ノルム部２５０は、データ入力部２０１に入力された入力値が、ネットワーク座標とノルムとの組みである場合には、入力されたネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部２３３に記憶させると共に、入力されたノルムを入力ノルムとして入力ノルム記憶部２３７に記憶させる。この入力ノルム部２５０は、ネットワーク座標抽出部２１１と、ノルム抽出部２１２と、入力ノルム判定部２１８とから構成されている。
【００９９】
ネットワーク座標抽出部２１１は、入力された入力値から、ネットワーク座標を抽出し、抽出したネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部２３３に記憶させる。ノルム抽出部２１２は、入力された入力値から、ノルムを抽出し、抽出したノルムを入力ノルム判定部２１８に出力する。
【０１００】
入力ノルム判定部２１８は、ノルム抽出部２１２から入力されたノルムの値により、入力されたノルムが、ノルムであるのか、または、ネットワーク座標と近傍判定を実行することを示す識別情報である近傍判定識別情報であるのかを判定し、ノルムである場合には、入力されたノルムを入力ノルムとして入力ノルム記憶部２３７に記憶させる。逆に、入力されたノルムが近傍判定識別情報である場合には、入力ノルム判定部２１８は、近傍判定部２１５に、近傍判定識別情報を出力する。
例えば、この入力ノルム判定部２１８は、ノルム抽出部２１２から入力されたノルムの値が−１である場合には、入力されたノルムが近傍判定識別情報であるとして判定し、ノルム抽出部２１２から入力されたノルムの値が−１でない場合には、ノルムとして判定する。
【０１０１】
ノルム比較部２１７は、トークン入力部２０２を介してトークンが入力されたことに応じて、ユニットノルム記憶部２３６から読み出したユニットノルムと、入力ノルム記憶部２３７から読み出した入力ノルムとを比較する。
【０１０２】
選択出力部２５１は、ノルム比較部２１７の比較した結果が、読み出したユニットノルムが入力ノルムより小さい場合には、ユニットノルム記憶部２３６から読み出したユニットノルムとユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標とを組みとして、データ出力部２０４を介して出力し、読み出したユニットノルムが入力ノルム以上である場合には、入力ノルム記憶部２３７から読み出した入力ノルムと入力ネットワーク座標記憶部２３３から読み出した入力ネットワーク座標とを組みとして、データ出力部２０４を介して出力する。この選択出力部２５１は、ネットワーク座標選択部２１９と、ノルム選択部２２０と、データ合成出力部２２１とから構成されている。
【０１０３】
ノルム選択部２２０は、ノルム比較部２１７の比較した結果が、読み出したユニットノルムが入力ノルムより小さい場合には、ユニットノルム記憶部２３６からユニットノルムを読み出し、読み出したユニットノルムをデータ合成出力部２２１に出力する。また、ネットワーク座標選択部２１９は、ノルム比較部２１７の比較した結果が、読み出したユニットノルムが入力ノルム以上である場合には入力ノルム記憶部２３７から入力ノルムを読み出し、読み出した入力ノルムをデータ合成出力部２２１に出力する。
【０１０４】
ネットワーク座標選択部２１９は、ノルム比較部２１７の比較した結果が、読み出したユニットノルムが入力ノルムより小さい場合には、ユニットネットワーク座標記憶部２３４からユニットネットワーク座標を読み出し、読み出したユニットネットワーク座標をデータ合成出力部２２１に出力する。また、ネットワーク座標選択部２１９は、ノルム比較部２１７の比較した結果が、読み出したユニットノルムが入力ノルム以上である場合には、入力ネットワーク座標記憶部２３３から入力ネットワーク座標を読み出し、読み出した入力ネットワーク座標をデータ合成出力部２２１に出力する。
【０１０５】
データ合成出力部２２１は、ノルム選択部２２０から入力されたユニットノルムまたは入力ノルムであるノルムと、ネットワーク座標選択部２１９から入力されたユニットネットワーク座標または入力ネットワーク座標であるネットワーク座標とを組みとして合成し、組として合成したノルムとネットワーク座標とを、データ出力部２０４を介して出力する。
【０１０６】
近傍判定部２１５は、データ入力部２０１に入力された入力値が、ネットワーク座標と近傍判定を実行することを示す識別情報である近傍判定識別情報との組みである場合には、ユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標が、入力されたネットワーク座標である入力ネットワーク座標の近傍にあるか否かを判定する。
【０１０７】
また、近傍判定部２１５は、近傍判定識別情報が入力ノルム部２５０または入力ノルム判定部２１８から入力されたことに応じて、ユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標が、入力されたネットワーク座標である入力ネットワーク座標の近傍にあるか否かを判定する。
【０１０８】
また、近傍判定部２１５は、データ入力部２０１に入力された入力値が、ネットワーク座標と近傍判定を実行することを示す識別情報である近傍判定識別情報との組みである場合には、距離記憶部２３２から基準距離を読み出し、ユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標と入力されたネットワーク座標である入力ネットワーク座標との間の距離が、読み出した基準距離以下であるか否かを判定することにより、ユニットネットワーク座標が入力ネットワーク座標の近傍にあるか否かを判定する。
【０１０９】
また、近傍判定部２１５は、カウンタ２１３から読み出したステップ数に一致する学習ステップ数に関連付けられている基準距離を距離記憶部２３２から読み出し、該読み出した基準距離に基づいて前記ユニットネットワーク座標が前記入力ネットワーク座標の近傍にあるか否かを判定する。
【０１１０】
重み更新部２１６は、近傍判定部２１５の判定した結果が近傍である場合には、重み記憶部２３１に記憶されている結合重みベクトルの値を更新する。また、重み更新部２１６は、入力データ記憶部２３０から読み出した入力データベクトルと重み記憶部２３１から読み出した結合重みベクトルとの差を算出し、算出した差に、学習速度記憶部２３５から読み出した学習速度係数を乗じた値を、重み記憶部２３１に記憶されている結合重みベクトルに加算することにより、重み記憶部２３１に記憶されている結合重みベクトルの値を更新する。
【０１１１】
また、重み更新部２１６は、カウンタ２１３から読み出したステップ数と一致する学習ステップ数に関連付けられている学習速度係数を学習速度記憶部２３５から読み出し、読み出した学習速度係数に基づいて重み記憶部２３１に記憶されている結合重みベクトルの値を更新する。
【０１１２】
トークン出力フラグ記憶部２３８には、トークン出力部２０３がトークンを出力済みであるか否かを示すトークン出力フラグが記憶されている。トークン出力フラグ判定部２２３は、トークン入力部２０２にトークンが入力されたことに応じて、トークン出力フラグ記憶部２３８からトークン出力フラグを読み出し、読み出したトークン出力フラグがトークンを未出力である場合に、入力されたトークンをノルム比較部２１７に出力すると共に、入力されたトークンを、トークン出力部２０３を介して出力する。
【０１１３】
トークン出力部２０３は、トークン入力部２０２にトークンが入力されたことに応じて、トークンを出力する。また、トークン出力部２０３は、データ合成出力部２２１または選択出力部２５１が、ユニットノルム記憶部２３６から読み出したユニットノルムとユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標とを組みとしてデータ出力部２０４を介して出力したことに応じて、または、入力ノルム記憶部２３７から読み出した入力ノルムと入力ネットワーク座標記憶部２３３から読み出した入力ネットワーク座標とを組みとしてデータ出力部２０４を介して出力したことに応じて、トークンを出力する。また、トークン出力部２０３は、トークンを出力した後に、トークン出力フラグ記憶部２３８に記憶されているトークン出力フラグを出力済みに更新する。
【０１１４】
＜自己組織化マップに適応した場合のユニットの動作＞
次に、図１０と図１１とを用いて、自己組織化マップに適応した場合の並列演算装置のユニットの動作について説明する。最初に、図１０を用いて、ユニットのデータ入力部に入力値が入力された場合の動作について説明する。
【０１１５】
まず、データ入力部２０１に入力値であるデータが入力される（ステップＳ４００）。次に、データ入力判定部２２２は、入力値のノルムの値が、入力値が入力データベクトルであることを示す値である−２であるか否かを判定することにより、データ入力部２０１に入力された入力値が入力データベクトルであるか否かを判定する（ステップＳ４０１）。
【０１１６】
次に、ステップＳ４０１の判定結果が、ノルムの値が−２であり、入力データベクトルである場合には、データ抽出部２１０が、入力された入力データベクトルを入力データ記憶部２３０に記憶させる（ステップＳ４０２）と共に、カウントアップ信号をカウンタ２１３に出力する。次に、カウンタ２１３は、データ抽出部２１０からカウントアップ信号を入力されたことに応じて、ステップ数をカウントアップする（ステップＳ４０３）。
【０１１７】
次に、ノルム算出部２１４は、データ抽出部２１０を介して入力された入力データベクトルと、重み記憶部２３１から読み出した結合重みベクトルとのノルムを算出し、算出したノルムをユニットノルムとしてユニットノルム記憶部２３６に記憶させ（ステップＳ４０４）、処理を終了する。
【０１１８】
一方、ステップＳ４０１の判定結果が、ノルムの値が−２ではなく、入力データベクトルではない場合には、ネットワーク座標抽出部２１１が、入力された入力値から、ネットワーク座標を抽出し、抽出したネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部２３３に記憶させる（ステップＳ４０５）と共に、ノルム抽出部２１２は、入力された入力値から、ノルムを抽出し、抽出したノルムを入力ノルム判定部２１８に出力する。
【０１１９】
次に、入力ノルム判定部２１８は、ノルム抽出部２１２から入力されたノルムの値が−１であるか否かを判定し（ステップＳ４０６）、判定結果が、ノルム抽出部２１２から入力されたノルムの値が−１でない場合には、ノルムとして判定し、入力されたノルムを入力ノルムとして入力ノルム記憶部２３７に記憶させ（ステップＳ４０７）、処理を終了する。
【０１２０】
一方、ステップＳ４０６の判定結果が、ノルム抽出部２１２から入力されたノルムの値が−１である場合には、入力ノルム判定部２１８は、入力されたノルムが近傍判定識別情報であるとして判定し、近傍判定部２１５に、近傍判定識別情報を出力する。次に、近傍判定部２１５は、近傍判定識別情報が入力ノルム判定部２１８から入力されたことに応じて、ユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標が、入力されたネットワーク座標である入力ネットワーク座標の近傍にあるか否かを判定する（ステップＳ４０８）。
【０１２１】
ステップＳ４０８の判定結果が、近傍である場合には、重み更新部２１６が、重み記憶部２３１に記憶されている結合重みベクトルの値を更新して（ステップＳ４０９）、処理を終了する。一方、ステップＳ４０８の判定結果が、近傍でない場合には、処理を終了する。
【０１２２】
次に、図１１を用いて、ユニットのトークン入力部にトークンが入力された場合の動作について説明する。まず、トークン入力部２０２に、トークンが入力される（ステップＳ５００）。次に、トークン出力フラグ判定部２２３が、トークン入力部２０２にトークンが入力されたことに応じて、トークン出力フラグ記憶部２３８からトークン出力フラグを読み出し、読み出したトークン出力フラグがトークンを未出力であるか否かを判定し（ステップＳ５０１）、読み出したトークン出力フラグがトークンを未出力である場合には、入力されたトークンをノルム比較部２１７に出力すると共に、入力されたトークンを、トークン出力部２０３を介して出力する。
【０１２３】
次に、ノルム比較部２１７は、トークン入力部２０２を介してトークンが入力されたことに応じて、ユニットノルム記憶部２３６から読み出したユニットノルムと、入力ノルム記憶部２３７から読み出した入力ノルムとを比較する（ステップＳ５０２）。
【０１２４】
ノルム比較部２１７の比較した結果が、読み出したユニットノルムが入力ノルムより小さい場合には、ノルム選択部２２０が、ユニットノルム記憶部２３６からユニットノルムを読み出し、読み出したユニットノルムをデータ合成出力部２２１に出力する（ステップＳ５０３）と共に、ネットワーク座標選択部２１９が、ユニットネットワーク座標記憶部２３４からユニットネットワーク座標を読み出し、読み出したユニットネットワーク座標をデータ合成出力部２２１に出力する（ステップＳ５０４）。
【０１２５】
次に、データ合成出力部２２１が、ノルム選択部２２０から入力されたユニットノルムと、ネットワーク座標選択部２１９から入力されたユニットネットワーク座標とを組みとして合成し、組として合成したユニットノルムとユニットネットワーク座標とを、データ出力部２０４を介して出力する（ステップＳ５０５）。
【０１２６】
一方、ステップＳ５０２でノルム比較部２１７が比較した結果が、読み出したユニットノルムが入力ノルム以上である場合には、ノルム選択部２２０が、入力ノルム記憶部２３７から入力ノルムを読み出し、読み出した入力ノルムをデータ合成出力部２２１に出力する（ステップＳ５０８）と共に、ネットワーク座標選択部２１９が、入力ネットワーク座標記憶部２３３から入力ネットワーク座標を読み出し、読み出した入力ネットワーク座標をデータ合成出力部２２１に出力する（ステップＳ５０９）。
【０１２７】
次に、データ合成出力部２２１は、ノルム選択部２２０から入力された入力ノルムと、ネットワーク座標選択部２１９から入力された入力ネットワーク座標とを組みとして合成し、組として合成した入力ノルムと入力ネットワーク座標とを、データ出力部２０４を介して出力する（ステップＳ５１０）。
【０１２８】
次に、トークン出力部２０３が、ステップＳ５０５にて、データ合成出力部２２１が、ユニットノルム記憶部２３６から読み出したユニットノルムとユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標とを組みとしてデータ出力部２０４を介して出力したことに応じて、または、ステップＳ５１０にて、入力ノルム記憶部２３７から読み出した入力ノルムと入力ネットワーク座標記憶部２３３から読み出した入力ネットワーク座標とを組みとしてデータ出力部２０４を介して出力したことに応じて、トークンを出力する（ステップＳ５０６）。
【０１２９】
次に、トークン出力部２０３は、トークンを出力した後に、トークン出力フラグ記憶部２３８に記憶されているトークン出力フラグを出力済みに更新し（ステップＳ５０７）、処理を終了する。
【０１３０】
＜自己組織化マップに適応した場合の並列演算装置全体の動作＞
次に、自己組織化マップに適応した場合の並列演算装置全体の動作について説明する。まず、制御装置は、入力ベクトルと、値を−２としたノルムとを組みとした入力値を、全てのユニットに、ユニット入力バス３を介して、入力する（手順Ａ３００）。
【０１３１】
次に、入力ベクトルを入力された各ユニットのノルム算出部２１４は、入力された入力ベクトルと、ユニットが有する結合重みベクトルとのノルムを算出し、算出したノルムを、ユニットノルム記憶部２３６に記憶させる（手順Ａ３０１）。
【０１３２】
次に、制御装置は、ユニットＵ１に、トークンを入力する（手順Ａ３０２）。次に、ユニットＵ１のノルム比較部２１７は、ユニットＵ１のトークン入力部２０２を介してトークンが入力されたことに応じて、ユニットノルム記憶部２３６から読み出したユニットノルムと、入力ノルム記憶部２３７から読み出した入力ノルムとを比較する（手順Ａ３０３）。
【０１３３】
ここで、ユニットＵ１の入力ノルム記憶部２３７には、ユニットＵ１が手順Ａ３０１で算出したノルムに比較して、十分に大きな値のノルムが予め記憶されているものとして説明する。
【０１３４】
ここでは、ユニットノルム記憶部２３６から読み出したユニットノルムの方が、入力ノルム記憶部２３７から読み出した入力ノルムより小さいため、ユニットＵ１の選択出力部２５１は、ユニットノルム記憶部２３６から読み出したユニットノルムとユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標とを組みとして、データ出力部２０４を介して出力する（手順Ａ３０４）。
【０１３５】
次に、ユニットＵ１のデータ出力部２０４が出力したノルムとネットワーク座標とが組として、ユニット出力バス２と増幅器４とユニット入力バス３とを介して、各ユニットのデータ入力部２０１に入力される（手順Ａ３０５）。
【０１３６】
次に、各ユニットの入力ノルム部２５０は、データ入力部２０１に入力された入力値のノルムの値が−１でないため、入力されたネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部２３３に記憶させると共に、入力されたノルムを入力ノルムとして入力ノルム記憶部２３７に記憶させる（手順Ａ３０６）。ここで、入力ネットワーク座標記憶部２３３に記憶されるネットワーク座標と、入力ノルム記憶部２３７に記憶されるノルムは、ユニットＵ１の、ネットワーク座標とノルムである。
【０１３７】
次に、ユニットＵ１のトークン出力部２０３は、ユニットＵ１のデータ合成出力部２２１または選択出力部２５１が、ユニットノルム記憶部２３６から読み出したユニットノルムとユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標とを組みとしてデータ出力部２０４を介して出力したことに応じて、トークンを、デイジーチェーン制御バス１を介してユニットＵ２に出力する（手順Ａ３０７）。
【０１３８】
次に、手順Ａ３０３のユニットＵ１と同様に、ユニットＵ２のノルム比較部２１７は、ユニットＵ２のトークン入力部２０２を介してユニットＵ１からのトークンが入力されたことに応じて、ユニットノルム記憶部２３６から読み出したユニットノルムと、入力ノルム記憶部２３７から読み出した入力ノルムとを比較する（手順Ａ３０８）。
【０１３９】
ここで、入力ノルム記憶部２３７に記憶される入力ノルムは、ユニットＵ１のノルムであり、また、ユニットノルム記憶部２３６から読み出したユニットノルムは、ユニットＵ２のノルムであるため、このユニットＵ２のノルム比較部２１７は、ユニットＵ２のノルムと、ユニットＵ１のノルムとを比較することになる。以降、ユニットＵ２のノルム比較部２１７の比較結果に基づいて、手順Ａ３０４から手順Ａ３０６の処理が、同様に実行される（手順Ａ３０９）。
【０１４０】
従って、トークンがユニットＵ２に入力されることにより、ユニットＵ１とユニットＵ２とのノルムが比較され、ノルムが小さい方のユニットが勝者ユニットとして選択され、勝者ユニットのノルムとユニットネットワーク座標とが、全てのユニットの入力ノルム記憶部２３７と入力ネットワーク座標記憶部２３３とに記憶される（手順Ａ３１０）。
【０１４１】
次に、手順Ａ３０７と同様に、ユニットＵ２からユニットＵ３にトークンが送信されることにより、次に、ユニットＵ３が、手順Ａ３０３から手順Ａ３０７とを実行することにより、ユニットＵ１とユニットＵ２との勝者ユニットのノルムと、ユニットＵ３のノルムとが比較され、ユニットＵ１からユニットＵ３までのユニットの中からの勝者ユニットが選択される（手順Ａ３１１）。
【０１４２】
以降、トークンがデイジーチェーン順序でユニットに渡されていく毎に、トークンが入力されたユニットの中での勝者ユニットが選択される（手順Ａ３１２）。その後、デイジーチェーン順序で最後のユニットであるユニットＵ１０にトークンが入力されると、ユニットＵ１０のデータ出力部２０４が、ユニットＵ１からユニットＵ１０の中の勝者ユニットのノルムとネットワーク座標とを出力する（手順Ａ３１３）。
【０１４３】
制御装置は、ユニットＵ１０のデータ出力部２０４が出力するノルムとネットワーク座標とを、勝者ユニットのノルムとネットワーク座標として受信する（手順Ａ３１４）。これにより、制御装置は、入力ベクトルに対しての、勝者ユニットのノルムとネットワーク座標とを、受信することが出来る。
【０１４４】
次に、制御装置は、ユニットＵ１０のデータ出力部２０４から受信したネットワーク座標と、値を−１としたノルムとを組みとした入力値を、全てのユニットに、ユニット入力バス３を介して、入力する（手順Ａ３１５）。
【０１４５】
次に、ネットワーク座標と値を−１としたノルムとを組みとした入力値を入力された各ユニットは、各ユニットのネットワーク座標抽出部２１１が、入力された入力値から、ネットワーク座標を抽出し、抽出したネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部２３３に記憶させる（手順Ａ３１６）と共に、各ユニットの入力ノルム判定部２１８が、ノルム抽出部２１２から入力されたノルムの値が−１であるため、入力されたノルムが近傍判定識別情報であるとして判定し、近傍判定部２１５に、近傍判定識別情報を出力する（手順Ａ３１７）。
【０１４６】
次に、各ユニットの近傍判定部２１５が、近傍判定識別情報が入力ノルム部２５０または入力ノルム判定部２１８から入力されたことに応じて、ユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標が、入力ネットワーク座標記憶部２３３から読み出した入力ネットワーク座標の近傍にあるか否かを判定する（手順Ａ３１８）。
【０１４７】
次に、各ユニットの重み更新部２１６は、そのユニットの近傍判定部２１５の判定した結果が近傍である場合には、そのユニットの重み記憶部２３１に記憶されている結合重みベクトルの値を更新する（手順Ａ３１９）。これにより、勝者ユニットのネットワーク座標の近傍であるユニットの結合重みベクトルが、更新され、学習が実行される。
【０１４８】
以上に説明した自己組織化マップに適応した場合の並列演算装置においては、ユニット入力バス３に全てのユニットが接続されているため、制御装置が入力ベクトルをユニット入力バス３に１度出力するだけで、全てのユニットに入力ベクトルを入力することができる。また、各ユニットが、入力された入力ベクトルに対して、並列にノルムを算出することができるため、ユニット全体で、短時間でノルムを算出することができる。
【０１４９】
また、ユニット入力バス３に全てのユニットが接続されているため、制御装置が勝者ユニットのネットワーク座標をユニット入力バス３に１度出力するだけで、全てのユニットに勝者ユニットのネットワーク座標を入力することができる。また、各ユニットが、入力された勝者ユニットのネットワーク座標の近傍にあるか否かを並列に判定し、学習するため、ユニット全体で、短時間で学習することができる。
【０１５０】
また、デイジーチェーン制御バス１を介してトークンをユニット間で渡していくことにより、デイジーチェーン順序で順に勝者ユニットを決定することができる。つまり、勝者ユニットの決定が、デイジーチェーン制御バス１という、簡易な配線で可能となる。
【０１５１】
＜冗長性を持たせた並列演算装置＞
次に、図１２を用いて、デイジーチェーン制御バス１に冗長性をもたせた場合の並列演算装置の構成を説明する。
各ユニットは、予め定められた順序であるデイジーチェーン順序において、１つ飛ばしの順序である第１の冗長順序で、複数のユニットのうちの半数のユニットが、第１の冗長デイジーチェーン制御バス６によりデイジーチェーンされている。例えば、ユニットＵ１とユニットＵ３とユニットＵ５とユニットＵ７とユニットＵ９とが、第１の冗長デイジーチェーン制御バス６により、デイジーチェーンされている。
【０１５２】
また、予め定められた順序であるデイジーチェーン順序において、１つ飛ばしの順序で、上記の第１の冗長デイジーチェーン制御バス６によりデイジーチェーンされていない複数のうちの残りの半数のユニットが、第２の冗長デイジーチェーン制御バス７によりデイジーチェーンされている。例えば、ユニットＵ２とユニットＵ４とユニットＵ６とユニットＵ８とユニットＵ１０とが、第２の冗長デイジーチェーン制御バス７により、デイジーチェーンされている。
【０１５３】
次に、図１３を用いて、第１の冗長デイジーチェーン制御バス６によりデイジーチェーンされているユニットの構成について説明する。つまり、例えば、ユニットＵ１とユニットＵ３とユニットＵ５とユニットＵ７とユニットＵ９の構成について説明する。なお、冗長性について変更される構成のみについて説明するため、図２のユニットの構成において、変更される構成のみについて説明する。
【０１５４】
図１３において、図１３（ａ）と（ｃ）とには、変更される前の図２で示されたユニットの構成が示してある。並列演算装置が冗長性を有するようにすることにより、図１３（ａ）のユニットの構成が、図１３（ｂ）の構成に変更される。また、図１３（ｃ）のユニットの構成が、図１３（ｄ）のユニットの構成に変更される。
【０１５５】
図１３（ｂ）に示すようにユニットは、トークン出力部Ａ１３＿１と、トークン出力部Ｂ１３＿２と、トークン出力部選択部１７と、トークン選択情報記憶部１８とを有する。ここで、トークン出力部Ａ１３＿１は、図２のトークン出力部１３に対応する。
【０１５６】
トークン出力部Ｂ１３＿２（冗長トークン出力部）は、トークン入力部１２にトークンが入力されたことに応じて、トークンを冗長順序で１つ後のユニットへ第１の冗長デイジーチェーン制御バス６を介して出力する。トークン選択情報記憶部１８には、トークン出力部Ａ１３＿１とトークン出力部Ｂ１３＿２とのうち、いずれを選択するかを示すトークン出力選択情報が記憶されている。
【０１５７】
トークン出力部選択部１７は、トークン入力部１２にトークンが入力されたことに応じて、トークン選択情報記憶部１８から読み出したトークン出力選択情報に基づいて、トークン出力部Ａ１３＿１とトークン出力部Ｂ１３＿２とのうちいずれか一方を選択し、選択したトークン出力部Ａ１３＿１またはトークン出力部Ｂ１３＿２を介してトークンを出力する。
【０１５８】
また、図１３（ｄ）に示すように、ユニットは、トークン入力部Ａ１２＿１と、トークン入力部Ｂ１２＿２（冗長トークン入力部）とを有する。ここで、トークン入力部Ａ１２＿１は、図２のトークン入力部１２に対応する。
【０１５９】
トークン入力部Ｂ１２＿２は、第１の冗長デイジーチェーン制御バス６を介してデイジーチェーンされている冗長順序が１つ前のユニットからのトークンを入力する。
また、トークン出力部１３は、トークン入力部Ａ１２＿１またはトークン入力部Ｂ１２＿２にトークンが入力されたことに応じて、トークンを出力する。
【０１６０】
また、第１の冗長デイジーチェーン制御バス６によりデイジーチェーンされているユニットと同様に、第２の冗長デイジーチェーン制御バス７によりデイジーチェーンされているユニットも、第２の冗長デイジーチェーン制御バス７を第１の冗長デイジーチェーン制御バス６として、トークン入力部Ｂ１２＿２（冗長トークン出力部）とトークン選択情報記憶部１８とトークン出力部選択部１７とトークン入力部Ｂ１２＿２（冗長トークン入力部）を有している。
【０１６１】
なお、ここでは、トークン選択情報記憶部１８には、トークン出力部Ａ１３＿１とトークン出力部Ｂ１３＿２とのうち、いずれを選択するかを示すトークン出力選択情報が記憶されているもとして説明したが、このトークン出力選択情報は、例えば、デイジーチェーン順序で次のユニットに欠陥があるか否かを示す情報であってもよい。
【０１６２】
トークン出力選択情報が、デイジーチェーン順序で次のユニットに欠陥があるか否かを示す情報である場合、トークン出力部選択部１７は、トークン選択情報記憶部１８から読み出したトークン出力選択情報に基づいて、デイジーチェーン順序で次のユニットに欠陥がない場合には、トークン出力部Ａ１３＿１を選択してトークンを出力し、逆に欠陥がある場合には、トークン出力部Ｂ１３＿２を選択してトークンを出力する。
【０１６３】
＜欠陥チェックの方法＞
次に、欠陥チェックの方法について説明する。ここでは、並列演算装置が、階層型ニューラルネットワークの場合について説明する。まず、ニューラルネットワークの並列演算装置が、結合係数がすべて同じで、中間層無しの入力層と出力層との２層である階層型ニューラルネットワークとして演算を実行し、制御装置が、演算結果の出力値を得る。制御装置は、出力値を判定し、正常な場合は処理を修了する。制御装置は、出力値を判定し、異常があることを検出した場合には、異常ユニットの前段ユニットのトークン選択情報記憶部１８に対し、欠陥情報を書き込む。
【０１６４】
次に、制御装置の、正常な場合と異常な場合の、判定方法とその処理について、詳細に説明する。まず、制御装置は、全てのユニットから、すべて同じ出力を得る場合に、正常として判定する。次に、制御装置は、ユニットからの出力が途中で止まる、または、ユニットからの出力値が予想された値と異なる部分がある場合に、異常として判定する。この場合、制御装置は、異常として検出したユニットである異常ユニットの、デイジーチェーン順序で１つ前となる前段ユニットのトークン選択情報記憶部１８に、欠陥情報を書き込み、もう一度欠陥チェックを実行し、判定結果が正常となるまで欠陥チェックを実行する。このとき、欠陥が原因で電気的に切り離す必要が生じる場合に備え、ユニットの入出力部にハイインピーダンススイッチを設け、回路を電気的に切り離す機構を備えても良い。
【０１６５】
以上のように、並列演算装置が、第１の冗長デイジーチェーン制御バス６と、第２の冗長デイジーチェーン制御バス７とにより冗長性を有するようにすることにより、デイジーチェーン制御バス１またはいずれかのユニットに欠陥が生じた場合においても、並列演算装置は問題なく動作することが可能となる。
【０１６６】
なお、ここでは、冗長配線が、デイジーチェーン順序において１つ飛ばしの第１の冗長デイジーチェーン制御バス６と第２の冗長デイジーチェーン制御バス７との場合について説明したが、更に、デイジーチェーン順序において２つ飛ばしの冗長デイジーチェーン制御バスなどを追加することも可能である。
【０１６７】
＜第２の基本構成＞
次に、この発明の一実施形態による並列演算装置の第２の基本構成を、図１４の概略ブロック図を用いて説明する。図１４の概略ブロック図において、図１の第１の基本構成と同一の構成には同一の符号を付けて、その説明を省略する。ここでは、ユニットＡＵ１からＡＵ１０の、ユニットの個数が１０である場合について説明する。このユニットの詳細については、後述する。
【０１６８】
並列演算装置は、第２の基本構成においては、予め定められた識別番号である固有ユニット番号で識別される複数のユニット（ＡＵ１〜ＡＵ１０）と、この複数のユニットの中のいずれか１つのユニットが出力する出力値がユニット出力バス２を介して入力されたことに応じて、該入力された入力値と複数のユニットの中から選択したいずれか１つのユニットを識別する識別番号である選択ユニット番号とを含む制御データを、複数のユニットのそれぞれにユニット入力バス３を介して出力する分配制御部８と、を有する。なお、この制御データには、入力値と、選択ユニット番号と、ユニットの演算方法または制御方法を選択するための制御コードとを含む。
【０１６９】
次に、図１５を用いて、各ユニットの構成について説明する。なお、ユニットＡＵ１からＡＵ１０は同一の構成を有するため、ここでは、ユニットＡＵ１の構成のみについて説明する。ユニットＡＵ１は、データ入力部１１Ａと、データ出力部１４Ａと、ユニット演算部１５Ａと、ユニット出力記憶部１６Ａと、制御コード抽出部１７Ａと、入力値抽出部１８Ａと、ユニット番号抽出部１９Ａと、ユニット番号一致判定部２０Ａと、固有ユニット番号記憶部２１Ａと、を有する。
【０１７０】
固有ユニット番号記憶部２１Ａには、それぞれのユニットを識別するための識別番号である固有ユニット番号が予め記憶されている。ユニット出力記憶部１６Ａには、ユニット演算部１５Ａが演算した結果である演算結果が記憶される。データ入力部１１Ａは、ユニット入力バス３を介して分配制御部８からの制御データを入力する。入力値抽出部１８Ａは、データ入力部１１Ａに入力された制御データから入力値を抽出する。選択ユニット番号抽出部１９Ａは、データ入力部１１Ａに入力された制御データから選択ユニット番号を抽出する。制御コード抽出部１７Ａは、データ入力部１１Ａに入力された制御データから制御コードを抽出する。
【０１７１】
ユニット番号一致判定部２０Ａは、データ入力部１１Ａに入力された制御データに含まれる出力ユニット番号と、固有ユニット番号とが一致するか否かを判定する。このユニット番号一致判定部２０Ａは、選択ユニット番号抽出部１９Ａが抽出した選択ユニット番号と、固有ユニット番号記憶部２１Ａから読み出した固有ユニット番号とが一致するか否かを判定する。
【０１７２】
ユニット演算部１５Ａは、データ入力部１１Ａに入力された制御データに含まれる入力値に基づいて、ユニット毎に予め定められた演算方法により演算する。このユニット演算部１５Ａは、入力値抽出部１８Ａが抽出した入力値に基づいて、ユニット毎に予め定められた演算方法により演算する。また、このユニット演算部１５Ａは、予め定められた演算方法から、制御コード抽出部１７Ａが抽出した制御コードに基づいて、演算方法を選択し、該選択した演算方法により演算する。また、ユニット演算部１５Ａは、演算した結果である演算結果をユニット出力記憶部１６Ａに記憶させる。
【０１７３】
データ出力部１４Ａは、ユニット番号一致判定部２０Ａが判定した結果が一致である場合には、ユニット演算部１５Ａが演算した結果である演算結果を出力値として、分配制御部８にユニット出力バス２を介して出力する。また、データ出力部１４Ａは、ユニット番号一致判定部２０Ａが判定した結果が一致である場合には、演算結果をユニット出力記憶部１６Ａから読み出し、該読み出した演算結果を出力値として分配制御部８にユニット出力バス２を介して出力する。
【０１７４】
次に、図１６を用いて、分配制御部８の構成を説明する。分配制御部８は、ユニット出力値入力部３１と、制御データ生成部３２と、制御データ出力部３３と、処理手順記憶部３４と、を有する。ユニット出力値入力部３１は、ユニット出力バス２を介して複数のユニットの中のいずれか１つのユニットが出力する出力値を入力する。制御データ生成部３２は、ユニット出力値入力部３１に入力された出力値に基づいて、予め定められた処理手順により制御データを生成する。制御データ出力部３３は、制御データ生成部３２が生成した制御データを複数のユニットのそれぞれにユニット入力バス３を介して出力する。なお、この制御データ出力部３３は、出力する制御データを、電気的に増幅する増幅器を、その内部に有していてもよい。
【０１７５】
また、処理手順記憶部３４には、演算を実行する処理手順が予め記憶されている。制御データ生成部３２は、処理手順を処理手順記憶部３４から順に読み出すことにより、また、必要であれば読み出した処理手順にユニット出力値入力部３１に入力された出力値を挿入することにより、予め定められた処理手順により制御データを生成する。
【０１７６】
ここで、分配制御部８の制御データ生成部３２は、ユニット出力値入力部３１に出力値が入力されたことに応じて、または、制御データ出力部３３が制御データを出力してから予め定められた一定時間の経過後に、制御データを生成する。そのため、分配制御部８、より詳しくは、分配制御部８の制御データ出力部３３は、ユニット出力値入力部３１に出力値が入力されたことに応じて、または、制御データ出力部３３が制御データを出力してから予め定められた一定時間の経過後に、制御データを出力する。
【０１７７】
また、分配制御部８は、入力端子Ｐ２を介して外部から初期値などのデータである入力値を入力され、入力された入力値を各ユニットにユニット入力バス３を介して設定することにより、各ユニットを用いた並列演算を実行する。また、分配制御部８は、各ユニットが演算した演算結果を、各ユニットからユニット出力バス２を介して入力され、該入力された演算結果を外部に出力端子Ｐ１を介して出力する。なお、ここでいう外部とは、並列演算装置の外部にある制御装置やコンピュータである。
【０１７８】
図１４から図１６を用いて説明した並列演算装置の第２の基本構成においては、分配制御部８が制御データにより各ユニットを制御するために、図１に示す並列演算装置の第１の基本構成と比較して、各ユニットでの処理が簡易となり、また、各ユニット間をデイジーチェーン順序で接続していたデイジーチェーン制御バス１が不要となる効果を奏する。
【０１７９】
＜第３の実施形態＞
＜階層型ニューラルネットワークに適応した場合のユニットの構成＞
次に、第２の基本構成による並列演算装置を、階層型ニューラルネットワークに適応した場合の構成について説明する。階層型ニューラルネットワークにおいても並列演算装置全体の構成は、図１４の並列演算装置の構成と同一であり、ユニットの構成のみが異なる。従って、図１７を用いて、階層型ニューラルネットワークに適応した場合のユニットの構成のみについて説明する。
【０１８０】
ユニットは、データ入力部１０１Ａと、データ出力部１０４Ａと、重み記憶部１３０と、積和計算一次値記憶部１３１と、層情報記憶部１３３と、関数記憶部１３２と、ユニット出力記憶部１３５Ａと、前段ユニット出力記憶部１３８Ｂと、前段ユニット番号記憶部１３９Ｂと、選択ユニット番号記憶部１４１Ｂと、固有ユニット番号記憶部１４０Ｂと、を有する。また、ユニットは、積和計算一次値算出部１１１Ａと、ユニット出力算出部１１２Ａと、比較部１１５Ｂと、ユニット制御部１１６Ｂと、ファンクション番号抽出部１５０Ｂと、ファンクション番号記憶部１５１Ｂと、オペランド抽出部１５２Ｂと、汎用バッファー記憶部１５３Ｂと、を有する。
【０１８１】
ここで、図１７のデータ入力部１０１Ａ、データ出力部１０４Ａ、ユニット出力記憶部１３５Ａは、図１５のデータ入力部１１Ａ、データ出力部１４Ａ、ユニット出力記憶部１６Ａに、それぞれ対応する。また、図１７の固有ユニット番号記憶部１４０Ｂ、比較部１１５Ａが、図１５の固有ユニット番号記憶部２１Ａ、ユニット番号一致判定部２０Ａに、それぞれ対応する。これらの図１７と図１５とにおいて対応する構成について、共通の機能については、その説明を省略する。
【０１８２】
また、図１７のファンクション番号抽出部１５０Ｂとファンクション番号記憶部１５１Ｂとが図１５の制御コード抽出部１７Ａに対応する。また、図１７のオペランド抽出部１５２Ｂと汎用バッファー記憶部１５３Ｂとが、図１５の入力値抽出部１８Ａまたは選択ユニット番号抽出部１９Ａに対応する。
【０１８３】
また、図１７の重み記憶部１３０と、層情報記憶部１３３と、積和計算一次値記憶部１３１と、関数記憶部１３２と、積和計算一次値算出部１１１Ａと、ユニット出力算出部１１２Ａと、前段ユニット番号記憶部１３９Ｂとが、図１５のユニット演算部１５Ａに対応する。
【０１８４】
また、図１７の構成において、図３の第１の基本構成における階層型ニューラルネットワークに適応した場合の並列演算装置のユニットの構成と同様の構成には、同一の符号、または、同一の符号に符号Ａを付した符号を付け、その説明を省略する。
【０１８５】
＜第３の実施形態におけるユニットの各構成の説明＞
ファンクション番号記憶部１５１Ｂには、制御データに含まれる制御コード（ファンクション番号）が記憶される。汎用バッファー記憶部１５３Ｂには、制御データに含まれる制御コードＡ（ファンクション番号）以外の情報、例えば、後述する選択ユニット番号Ｂ、出力値Ｃ、配信層情報Ｄ、または、配信ユニット識別情報Ｅが記憶される。以降において、制御データに含まれる制御コードＡ（ファンクション番号）以外の情報、例えば、後述する選択ユニット番号Ｂ、出力値Ｃ、配信層情報Ｄ、または、配信ユニット識別情報Ｅを汎用データとして説明する。この制御データの詳細については、図１８を用いて後述する。
【０１８６】
ファンクション番号抽出部１５０Ｂは、データ入力部１０１Ａに入力された制御データに含まれる制御コードを抽出し、抽出した制御コードをファンクション番号記憶部１５１Ｂに記憶させる。オペランド抽出部１５２Ｂは、データ入力部１０１Ａに入力された制御データに含まれる汎用データを抽出し、抽出した汎用データを汎用バッファー記憶部１５３Ｂに記憶させる。
【０１８７】
ユニット制御部１１６Ｂは、データ入力部１０１Ａに入力された制御データと比較部１１５Ｂが判定した結果とに基づいて、処理を実行する、または、予め定められた処理部の中から選択的に処理を実行させる。このデータ入力部１０１Ａに入力された制御データとは、ファンクション番号記憶部１５１Ｂから読み出した制御コードと、汎用バッファー記憶部１５３Ｂから読み出した汎用データとである。
【０１８８】
この前記ユニット制御部１１６Ｂは、データ入力部１０１Ａに入力された制御データに含まれる制御コードが、積和計算一次値を初期化することを示す場合には、積和計算一次値記憶部１３１に記憶されている積和計算一次値情報の値を０に初期化する。
【０１８９】
またユニット制御部１１６Ｂは、データ入力部１０１Ａに入力された制御データに含まれる制御コードが、積和計算一次値を算出し加算格納することを示し、該制御データが出力値と該出力値を出力しているユニットのユニット識別情報である配信ユニット識別情報とを含む場合には、配信ユニット識別情報を前段ユニット出力記憶部１３８Ｂに記憶し、出力値に基づいて積和計算一次値算出部１１１Ａを用いて処理を選択的に実行する。
【０１９０】
また、ユニット制御部１１６Ｂは、データ入力部１０１Ａに入力された制御データに含まれる制御コードがユニット出力演算を実行することを示す場合には、ユニット出力算出部１１２Ａを用いて処理を選択的に実行する。
【０１９１】
また、ユニット制御部１１６Ｂは、データ入力部１０１Ａに入力された制御データに含まれる制御コードがアクティブなユニットとして出力値を出力することを示し、該制御データが選択ユニット番号を含む場合であり、かつ、比較部１１５Ｂ（ユニット番号一致判定部）が判定した結果が一致である場合には、データ出力部１０４Ａの処理を用いて処理を選択的に実行し、演算結果をユニット出力記憶部１３５Ａから読み出し、該読み出した演算結果を出力値として分配制御部８にデータ出力部１０４Ａとユニット出力バス２とを介して出力する。
【０１９２】
なお、ユニット出力記憶部１３５Ａに層情報と演算結果とが関連付けて記憶されている場合においては、ユニット制御部１１６Ｂは、データ入力部１０１Ａに入力された制御データに含まれる制御コードがアクティブなユニットとして出力値を出力することを示し、該制御データが選択ユニット番号を含む場合であり、かつ、比較部１１５Ｂが判定した結果が一致である場合には、データ出力部１０４Ａの処理を選択的に実行し、層情報記憶部１３３から読み出した層情報に該当する演算結果をユニット出力記憶部１３５Ａから読み出し、該読み出した演算結果を出力値として分配制御部８にデータ出力部１０４Ａとユニット出力バス２とを介して出力する。
【０１９３】
また、ユニット制御部１１６Ｂは、データ入力部１０１Ａに入力された制御データが配信層情報を含む場合には、データ入力部１０１Ａに入力された制御データに含められた配信層情報を層情報記憶部１３３に記憶する。
詳細には、ユニット制御部１１６Ｂは、データ入力部１０１Ａに入力された制御データが配信層情報を含む場合には、データ入力部１０１Ａに入力された制御データから配信層情報を抽出し、抽出した配信層情報を層情報記憶部１３３に記憶する。また、このユニット制御部１１６Ｂは、汎用バッファー記憶部１５３Ｂから配信層情報を読み出すことにより、データ入力部１０１Ａに入力された制御データから配信層情報を抽出する。
【０１９４】
またユニット制御部１１６Ｂは、出力値を出力しているユニットのユニット識別情報である配信ユニット識別情報を、データ入力部１０１Ａに入力された制御データが含む場合には、データ入力部１０１Ａに入力された制御データに含められた配信ユニット識別情報を前段ユニット出力記憶部１３８Ｂに記憶する。
詳細には、ユニット制御部１１６Ｂは、出力値を出力しているユニットのユニット識別情報である配信ユニット識別情報を、データ入力部１０１Ａに入力された制御データが含む場合には、データ入力部１０１Ａに入力された制御データから配信ユニット識別情報を抽出し、抽出した配信ユニット識別情報をユニット番号記憶部１３９Ｂに記憶する。また、このユニット制御部１１６Ｂは、汎用バッファー記憶部１５３Ｂから配信ユニット識別情報を読み出すことにより、データ入力部１０１Ａに入力された制御データから配信ユニット識別情報を抽出する。
【０１９５】
積和計算一次値算出部１１１Ａは、ユニット制御部１１６Ｂの選択に応じて、層情報記憶部１３３から読み出した層情報に該当する結合荷重を重み記憶部１３０から読み出し、該読み出した結合荷重と、データ入力部１０１Ａに入力された入力値とを乗算し、該乗算した値を積和計算一次値記憶部１３１に記憶されている積和計算一次値情報に加算して記憶させる。
【０１９６】
また、積和計算一次値算出部１１１Ａは、ユニット制御部１１６Ｂの選択に応じて、前段ユニット出力記憶部１３８Ｂから読み出したユニット識別情報と層情報記憶部１３３から読み出した層情報とに該当する結合荷重を重み記憶部１３０から読み出し、該読み出した結合荷重と、データ入力部１０１Ａに入力された入力値とを乗算し、該乗算した値を前記積和計算一次値記憶部１３１に記憶されている積和計算一次値情報に加算して記憶させる。
【０１９７】
ユニット出力算出部１１２Ａは、ユニット制御部１１６Ｂの選択に応じて、積和計算一次値記憶部１３１から積和計算一次値情報を読み出し、層情報記憶部１３３から読み出した層情報に該当する出力関数を関数記憶部１３２から読み出し、該読み出した出力関数に読み出した積和計算一次値情報を代入することにより出力値を算出し、該算出した出力値をユニット出力記憶部１３５Ａに記憶させる。また、ユニット出力算出部１１２Ａは、この算出した出力値をユニット出力記憶部１３５Ａに記憶させるときに、層情報記憶部１３３から読み出した層情報と関連付けて、この算出した出力値を前記ユニット出力記憶部１３５Ａに記憶させる。
【０１９８】
＜第３の実施形態における制御データのプロトコル＞
次に、図１８を用いて、一例としての制御データのプロトコルについて説明する。この制御データは、制御コードＡと、選択ユニット番号Ｂと、出力値Ｃとを含み、更に、配信層情報Ｄと、配信ユニット識別情報Ｅと、を含む。この配信層情報Ｄとは、出力値Ｃを出力しているユニットの層情報であり、また、配信ユニット識別情報Ｅとは、出力値Ｃを出力しているユニットのユニット識別情報である。この制御コードのプロトコルは、制御コードの値により、次に示すように予め定められている。
【０１９９】
＜選択処理０＞
制御データに含まれる制御コードＡの値が“０”であり、“積和計算一次値を初期化する”ことを示す制御コードである場合には、この制御データは、他の情報（汎用データ）を含んでいない。この制御コードＡの値が“０”である制御データを受信した全てのユニットは、積和計算一次値算出部１１１Ａに記憶されている積和計算一次値の値を０に初期化する。
【０２００】
＜選択処理１＞
また、制御データに含まれる制御コードＡの値が“１”であり、“積和計算一次値を算出し加算格納する”ことを示す制御コードである場合には、この制御データは、出力値Ｃと、配信層情報Ｄと、配信ユニット識別情報Ｅと、を含む。この制御コードＡの値が１である制御データを受信した全てのユニットは、層情報ｌを配信層情報Ｄとし、ユニット識別情報ｉを配信ユニット識別情報Ｅとし、入力値の値を出力値Ｃとして、積和計算一次値を算出する。
【０２０１】
＜選択処理２＞
また、制御データに含まれる制御コードＡの値が“２”であり、“ユニット出力演算を実行する”ことを示す制御コードである場合には、この制御データは、配信層情報Ｄを含む。この制御コードＡの値が“２”である制御データを受信した全てのユニットは、層情報ｌを配信層情報Ｄとして、ユニット出力演算を実行し、実行した演算結果を出力値として層情報ｌと関連付けてユニット出力記憶部１３５Ａに格納する。
【０２０２】
＜選択処理３＞
また、制御データに含まれる制御コードＡの値が“３”であり、“アクティブなユニットとして出力値を出力する”ことを示す制御コードである場合には、制御データは、選択ユニット番号Ｂと配信層情報Ｄとを含む。この制御コードＡの値が“３”である制御データを受信した全てのユニットは、受信した制御データに含まれる選択ユニット番号Ｂが、自身のユニットが有する固有ユニット番号Ｉと一致するか否かを判定し、判定した結果が一致する場合には、層情報ｌを配信層情報Ｄの値とし、この層情報ｌに該当するユニット出力記憶部１３５Ａから読み出した出力値を出力する。
【０２０３】
この図１８の制御データのプロトコルに基づいて、分配制御部９は、積和計算一次値を初期化することを示す制御コード、出力値と配信ユニット識別情報とを含み、積和計算一次値を算出し加算格納することを示す制御コード、ユニット出力演算を実行することを示す制御コード、アクティブなユニットとして出力値を出力することを示す制御コード、または、前記配信層情報を含む制御データを、階層型ニューラルネットワークの階層数と該階層のノード数とに合わせて予め定められた順序で出力する。
【０２０４】
＜第３の実施形態におけるユニットの動作＞
次に、図１９を用いて、図１８で説明した制御データのプロトコルを受信した場合の、ユニットの動作、特に、ユニットのユニット制御部１１６の動作について説明する。
まず、ユニットは、データ入力部１０１Ａに制御データが入力されたことに応じて、処理を開始する（ステップＳ１９０１）。次に、ファンクション番号抽出部１５０Ｂが、データ入力部１０１Ａに入力された制御データから、制御コードを抽出し、抽出した制御コードをファンクション番号記憶部１５１Ｂに記憶させる。
【０２０５】
また、オペランド抽出部１５２Ｂが、データ入力部１０１Ａに入力された制御データから、オペランドである制御コード以外の情報、例えば、選択ユニット番号Ｂと、出力値Ｃと、配信層情報Ｄと、配信ユニット識別情報Ｅとを抽出し、抽出したオペランドを汎用バッファー記憶部１５３Ｂに記憶させる。
【０２０６】
次に、ユニット制御部１１６Ｂが、ファンクション番号抽出部１５０Ｂが制御コードを抽出したことに応じて、ファンクション番号記憶部１５１Ｂから読み出した制御コードの値に基づいて、以降に説明するステップＳ１９０２からステップＳ１９０８により、ユニットにおける処理を選択的に実行する。
【０２０７】
まず、ユニット制御部１１６Ｂは、読み出した制御コードＡの値が“０”であるか否かを判定する（ステップＳ１９０２）。ステップＳ１９０２の判定結果が、読み出した制御コードＡの値が“０”である場合には、ユニット制御部１１６Ｂは、上記に説明した選択処理０を実行し（ステップＳ１９０３）、処理を終了する。
【０２０８】
一方、ステップＳ１９０２の判定結果が、読み出した制御コードＡの値が“０”でない場合には、ユニット制御部１１６Ｂは、読み出した制御コードＡの値が“１”であるか否かを判定する（ステップＳ１９０４）。ステップＳ１９０４の判定結果が、読み出した制御コードＡの値が“１”である場合には、ユニット制御部１１６Ｂは、上記に説明した選択処理１を実行し（ステップＳ１９０５）、処理を終了する。
【０２０９】
一方、ステップＳ１９０４の判定結果が、読み出した制御コードＡの値が“１”でない場合には、ユニット制御部１１６Ｂは、読み出した制御コードＡの値が“２”であるか否かを判定する（ステップＳ１９０５）。ステップＳ１９０５の判定結果が、読み出した制御コードＡの値が“２”である場合には、ユニット制御部１１６Ｂは、上記に説明した選択処理２を実行し（ステップＳ１９０６）、処理を終了する。
【０２１０】
一方、ステップＳ１９０５の判定結果が、読み出した制御コードＡの値が“２”でない場合には、つまり、読み出した制御コードＡの値が“３”である場合には、比較部１１５Ｂが、選択ユニット番号記憶部１４１Ｂから読み出した選択ユニット番号と固有ユニット番号記憶部１４０Ｂから読み出した固有ユニット番号とが一致するか否かを判定する（ステップＳ１９０７）。ステップＳ１９０７の判定結果が、選択ユニット番号と固有ユニット番号とが一致する場合には、ユニット制御部１１６Ｂは、上記に説明した選択処理３を実行し（ステップＳ１９０８）、処理を終了する。一方、ステップＳ１９０７の判定結果が、選択ユニット番号と固有ユニット番号とが一致しない場合には、処理を終了する。
【０２１１】
＜第３の実施形態における分配制御部８の動作＞
次に、図２０と図２１とを用いて、第２の基本構成による並列演算装置を階層型ニューラルネットワークに適応した場合の分配制御部８の動作について説明する。なお、分配制御部８が出力した制御データに含まれる制御コードの値に応じた各ユニットの動作については、図１７から図１９を用いて既に説明したので、ここでは、分配制御部８の動作のみについて説明する。なお、ここでも図６の階層型ニューラルネットワークに、第２の基本構成による並列演算装置を適応した場合について説明する。
【０２１２】
まず、図２０（ａ）を用いて、階層型ニューラルネットワークに適応した場合における、分配制御部８の動作概要について説明する。まず、各ユニットの初期設定（初期化）をする（ステップＳ２００１）。次に、外部から入力端子Ｐ２を介して入力層Ｌ１のノード用の入力データ（パターン入力）である入力の指示を受けて、受けた入力を、中間層（隠れ層）Ｌ２のノードとしての各ユニットに、分配制御部８が入力層Ｌ１として、分配することにより、各ユニットを用いて中間層Ｌ２の積和計算を並列に実行する（ステップＳ２００２）。このステップＳ２００２では、分配制御部８が入力層Ｌ１のノードとして、中間層Ｌ２のノードとなる各ユニットに出力値を出力している。
【０２１３】
次に、階層型ニューラルネットワークの全ての中間層（層情報カウンタ変数ｌ＝２、・・・Ｌ＋１）について、中間層積和計算（ステップＳ２００４）の処理を繰り返す（ステップＬ２００２からステップＬ２００５の層ループ処理）。ここで、Ｌは、中間層の総数（中間層総数）の値であり、図６の３階層である階層型ニューラルネットワークにおいては、この中間層総数Ｌの値は１である。このステップＳ２００４の中間層積和計算は、後に図２１（ａ）を用いて詳述する。
【０２１４】
このステップＬ２００２からステップＬ２００５の層ループ処理により、階層型ニューラルネットワークの中間層のノードとしての処理が階層型ニューラルネットワークの層において、入力層Ｌ１から出力層Ｌ３の方向に順に実行され、最終的には、各ユニットには出力層Ｌ３としての演算結果の値が記憶される。なお、このステップＬ２００２からステップＬ２００５のループにおいては、いずれか１つのユニットは、出力をする層としてのアクティブなユニットとして機能し、全てのユニットは入力を受ける層のノードとして機能する。
【０２１５】
次に、出力層Ｌ３のノードとしてのユニットに出力値を、ユニット識別情報で識別されるユニットの順に出力させる（ステップＳ２００６）ことにより、階層型ニューラルネットワークの出力層Ｌ３に属するノードとなる全てのユニットからの演算結果を順に受信する。また、この順に受信した演算結果を、入力されたパターン入力に対しての階層型ニューラルネットワーク演算装置の演算結果として、出力端子Ｐ１を介して外部に順に出力する。
【０２１６】
以上のステップＳ２００１からステップＳ２００６の処理により、この並列演算装置は、外部から入力された入力データ（パターン入力）である入力に応じて、階層型ニューラルネットワークの演算を複数のユニットを用いて並列に実行し、この実行した演算結果を、外部に出力することができる。
【０２１７】
次に、図２０（ｂ）、図２０（ｃ）、図２１（ａ）、および、図２１（ｂ）を用いて、図２０（ａ）の各処理について詳細に説明する。なお、ここでは、図２０（ｂ）、図２０（ｃ）、図２１（ａ）、および、図２１（ｂ）の処理を、図２０（ａ）の各処理についての関数またはサブルーチンとして説明する。
【０２１８】
最初に、図２０（ｂ）を用いて、図２０（ａ）のステップＳ２００１の処理を詳細に説明する。まず、制御コードＡの値を“０”とした制御データを出力し（ステップＳ２００１１）、次に、処理を戻す。
【０２１９】
次に、図２０（ｃ）を用いて、図２０（ａ）のステップＳ２００２の処理を詳細に説明する。まず、カウンタ変数ｉの値を０から、１、２、・・・Ｎ（１）まで順次増加させながら、次のステップＳ２００２２とステップＳ２００２３との処理を繰り返す（ステップＬ２００２１とステップＬ２００２４の入力ループ）。このＮ（１）は、層識別情報の値が１である層のノード数の値、つまり、入力層Ｌ１のノード数の値である。例えば、図６の階層型ニューラルネットワークにおいては、この入力層Ｌ１のノード数の値は３である。
【０２２０】
このステップＳ２００２２では、パターン入力ｘｉ（ｌ）を外部から入力する。次に、このステップＳ２００２３では、制御コードＡの値を“１”とし、出力値Ｃの値をステップＳ２００２２で外部から入力されたパターン入力ｘｉ（１）とし、配信層情報Ｄの値をカウンタ変数ｉとし、配信ユニット識別情報Ｅの値を１とした制御データを、各ユニットに出力する。
次に、制御コードＡの値を“２”とし、配信層情報Ｄの値を１とした制御データを、各ユニットに出力し（ステップＳ２００２５）、処理を戻す。
【０２２１】
次に、図２１（ａ）を用いて、図２０（ａ）のステップＳ２００４の処理を詳細に説明する。まず、カウンタ変数ｉの値を０から、１、２、・・・Ｎ（ｌ）まで順次増加させながら、次のステップＳ２００４２からステップＳ２００４４の処理を繰り返す（ステップＬ２００４１とステップＬ２００４５の入力ループ）。このＮ（ｌ）は、層識別情報の値が層情報カウンタ変数ｌである層のノード数の値である。
【０２２２】
このステップＳ２００４２では、制御コードＡの値を“３”とし、選択ユニット番号Ｂをカウンタ変数ｉとし、配信層情報Ｄを層情報カウンタ変数ｌとした制御データを、各ユニットに出力する。また、このステップＳ２００４３では、ステップＳ２００４２で出力した選択ユニット番号Ｂであるカウンタ変数ｉと固有ユニット番号とが一致したユニットから出力された出力値ｘｉ（ｌ）を入力する。また、このステップＳ２００４４では、制御コードＡの値を“２”とし、出力値ＣをステップＳ２００４３でユニットから入力された出力値ｘｉ（ｌ）とし、配信層情報Ｄをカウンタ変数ｉとし、配信ユニット識別情報Ｅを層情報カウンタ変数ｌとした制御データを、各ユニットに出力する。
次に、制御コードＡの値を“２”とし、配信層情報Ｄを層情報カウンタ変数ｌとした制御データを、各ユニットに出力し（ステップＳ２００４６）、処理を戻す。
【０２２３】
次に、図２１（ｂ）を用いて、図２０（ａ）のステップＳ２００６の処理を詳細に説明する。まず、カウンタ変数ｉの値を０から、１、２、・・・Ｎ（Ｌ＋２）まで順次増加させながら、次のステップＳ２００６２からステップＳ２００６４の処理を繰り返し（ステップＬ２００６１とステップＬ２００６５の出力ループ）、処理を戻す。このＮ（Ｌ＋２）は、層識別情報の値が（中間層総数Ｌ＋２）である層のノード数の値であり、つまり、出力層Ｌ３のノードの数である。例えば、図６の階層型ニューラルネットワークにおいては、この出力層Ｌ３のノード数の値は３である。
【０２２４】
このステップＳ２００６２では、制御コードＡの値を“３”とし、選択ユニット番号Ｂをカウンタ変数ｉとし、配信層情報Ｄを（中間層総数Ｌ＋２）とした制御データを、各ユニットに出力する。また、このステップＳ２００６３では、ステップＳ２００６２で出力した選択ユニット番号Ｂであるカウンタ変数ｉと固有ユニット番号とが一致したユニットから出力された出力値ｘｉ（Ｌ＋２）を入力する。また、このステップＳ２００６４では、ステップＳ２００６３でユニットから入力された出力値ｘｉ（Ｌ＋２）を、出力端子Ｐ１を介して外部に出力する。
【０２２５】
以上の処理により、この第３の実施形態による階層型ニューラルネットワークに適応した場合の並列演算装置は、第１の実施形態による階層型ニューラルネットワークに適応した場合の並列演算装置と同様に、階層型ニューラルネットワークを実行することができ、また、第１の実施形態による階層型ニューラルネットワークと同様の効果を奏することが可能である。
【０２２６】
＜第４の実施形態＞
＜自己組織化マップに適応した場合のユニットの構成＞
次に、第２の基本構成による並列演算装置を、自己組織化マップに適応した場合の構成について説明する。自己組織化マップにおいても並列演算装置全体の構成は、図１４の並列演算装置の構成と同一であり、ユニットの構成のみが異なる。従って、図２２を用いて、自己組織化マップに適応した場合のユニットの構成のみについて説明する。
【０２２７】
ここで、第１の基本構成における自己組織化マップの並列演算装置においては、最小のノルムを有するユニットの決定は、各ユニットがノルムを算出し、次に、ユニット間でノルムの大小を順に比較していた。これに対して、この第２の基本構成における自己組織化マップの並列演算装置においては、各ユニットがノルムを算出した後に、分配制御部８の制御に基づいて、各ユニットが算出したノルムを順に分配制御部８にユニット出力バス２を介して出力する。次に、分配制御部８が、入力されたノルムの中から最小となるノルムを選択することにより、最小のノルムを有するユニットを決定する。
【０２２８】
また、第１の基本構成における自己組織化マップの並列演算装置においては、各ユニットが、学習回数に関連付けて学習速度と近傍距離とを予め内部の記憶部（学習速度記憶部と近傍距離記憶部）に記憶していた。これに対して第２の基本構成における自己組織化マップの並列演算装置においては、分配制御部８が、内部に有する学習速度記憶部と近傍距離記憶部とに、学習回数に関連付けて学習速度と近傍距離とを記憶する。また、各ユニットは、１つの値の学習速度と近傍距離とを内部の記憶部（学習速度記憶部と近傍距離記憶部）に記憶する。また、分配制御部８が、学習回数に応じて、学習速度記憶部と近傍距離記憶部とを各ユニットに制御データに含めて配信し、各ユニットが、内部の記憶部（学習速度記憶部と近傍距離記憶部）の学習速度記憶部と近傍距離記憶部とを、分配制御部８から受信した制御データに含まれている学習速度記憶部と近傍距離記憶部とに更新する。
【０２２９】
以上のように、分配制御部８が、学習回数に応じて、学習速度記憶部と近傍距離記憶部とを各ユニットに制御データに含めて配信するようにすることにより、全てのユニットが学習回数に関連付けて学習速度と近傍距離とを予め内部の記憶部しておく必要がなくなるという効果を奏する。また、例えば、学習速度と近傍距離との変化の度合いを学習回数に応じて早くするまたは遅くするなどの、学習回数に関連付いた学習速度と近傍距離との変化の仕方を変更する場合には、学習回数と関連付けて学習速度記憶部と近傍距離記憶部とを記憶している分配制御部８内部の記憶部の情報のみを変更するのみでよく、変更が簡易となる効果を奏する。
【０２３０】
また、自己組織化マップに適応した場合のユニットは、第２の実施形態と同様に、ネットワーク座標により識別される座標で予め識別されている。そこで、第４の実施形態においては、固有ユニット番号をネットワーク座標として説明する。なお、各ユニットは、第２の実施形態または第３の実施形態と同様に、同一の構成を有しているので、ここでは図２２を用いて１つのユニットの構成のみについて説明する。
【０２３１】
ユニットは、データ入力部２０１Ａと、データ出力部２０４Ａと、距離記憶部２３２Ａと、重み記憶部２３１Ａと、ノルム算出部２１４Ａと、近傍判定部２１５Ａと、重み更新部２１６Ａと、ユニットネットワーク座標記憶部２３４Ａと、入力ネットワーク座標記憶部２３３Ａと、学習速度記憶部２３５Ａと、ユニットノルム記憶部２３６Ａと、入力データ記憶部２３０Ａと、実数ベクトル次元数記憶部２４２Ｂと、比較部２１５Ｂと、ユニット制御部２１６Ｂと、ファンクション番号抽出部２５０Ｂと、ファンクション番号記憶部２５１Ｂと、オペランド抽出部２５２Ｂと、汎用バッファー記憶部２５３Ｂと、を有する。
【０２３２】
ここで、図２２のデータ入力部２０１Ａ、データ出力部２０４Ａ、ユニットノルム記憶部２３６Ａと重み記憶部２３１Ａは、図１５のデータ入力部１１Ａ、データ出力部１４Ａ、ユニット出力記憶部１６Ａに、それぞれ対応する。また、図２２のユニットネットワーク座標記憶部２３４Ａ、比較部２１５Ｂが、図１５の固有ユニット番号記憶部２１Ａ、ユニット番号一致判定部２０Ａに、それぞれ対応する。これらの図２２と図１５とにおいて対応する構成について、共通の機能については、その説明を省略する。
【０２３３】
また、図２２のファンクション番号抽出部２５０Ｂとファンクション番号記憶部２５１Ｂとが図１５の制御コード抽出部１７Ａに対応する。また、図２２のオペランド抽出部２５２Ｂと汎用バッファー記憶部２５３Ｂとが、図１５の入力値抽出部１８Ａまたは選択ユニット番号抽出部１９Ａに対応する。
【０２３４】
また、図２２の構成において、図７と図８との第１の基本構成における自己組織化マップに適応した場合の並列演算装置のユニットの構成と同様の構成には、同一の符号、または、同一の符号に符号Ａを付した符号を付け、その説明を省略する。
【０２３５】
＜第４の実施形態におけるユニットの各構成の説明＞
ファンクション番号記憶部２５１Ｂには、制御データに含まれる制御コード（ファンクション番号）が記憶される。汎用バッファー記憶部２５３Ｂには、制御データに含まれる制御コードＡ（ファンクション番号）以外の情報、例えば、後述する入力ネットワーク座標Ｂ、入力学習速度Ｃ、入力近傍距離Ｄ、入力重みＷ、入力次元数Ｎ、または、入力値Ｘが記憶される。
【０２３６】
以降において、制御データに含まれる制御コードＡ（ファンクション番号）以外の情報、例えば、後述する入力ネットワーク座標Ｂ、入力学習速度Ｃ、入力近傍距離Ｄ、入力重みＷ、入力次元数Ｎ、または、入力値Ｘを汎用データとして説明する。この制御データの詳細については、図２３を用いて後述する。
【０２３７】
ファンクション番号抽出部２５０Ｂは、データ入力部２０１Ａに入力された制御データに含まれる制御コードを抽出し、抽出した制御コードをファンクション番号記憶部２５１Ｂに記憶させる。オペランド抽出部２５２Ｂは、データ入力部２０１Ａに入力された制御データに含まれる汎用データを抽出し、抽出した汎用データを汎用バッファー記憶部２５３Ｂに記憶させる。
【０２３８】
ユニット制御部２１６Ｂは、データ入力部２０１Ａに入力された制御データと比較部２１５Ｂが判定した結果とに基づいて、処理を実行する、または、予め定められた処理部の中から選択的に処理を実行させる。このデータ入力部２０１Ａに入力された制御データとは、ファンクション番号記憶部２５１Ｂから読み出した制御コードと、汎用バッファー記憶部２５３Ｂから読み出した汎用データとである。
【０２３９】
また、図２２の距離記憶部２３２Ａと、ノルム算出部２１４Ａと、近傍判定部２１５Ａと、重み更新部２１６Ａと、入力ネットワーク座標記憶部２３３Ａと、学習速度記憶部２３５Ａと、入力データ記憶部２３０Ａと、実数ベクトル次元数記憶部２４２Ｂと、ユニット制御部２１６Ｂとが、図１５のユニット演算部１５Ａに対応する。なお、図２２の重み記憶部２３１Ａは、図１５のユニット演算部１５Ａとユニット出力記憶部１６Ａとに対応する。
【０２４０】
また、ユニット制御部２１６Ｂの詳細と他の構成とについては、次に図２３を用いて、一例としての制御データのプロトコルの説明とともに説明する。
【０２４１】
＜第４の実施形態における制御データのプロトコル＞
次に、図２３を用いて、一例としての制御データのプロトコルについて説明する。この制御データは、制御コードＡと、入力ネットワーク座標Ｂと、入力学習速度Ｃと、入力近傍距離Ｄと、入力結合重みベクトルＷ（Ｗ１、Ｗ２、・・・）と、入力次元数Ｎと、入力ベクトルＸ（Ｘ１、Ｘ２、・・・）と、を含む。この制御コードのプロトコルは、制御コードの値により、次に示すように予め定められている。
【０２４２】
＜選択処理４＞
制御データに含まれる制御コードＡの値が“４”であり、“重みを設定する”ことを示す場合には、この制御データは、入力ネットワーク座標Ｂと入力結合重みベクトルＷ（Ｗ１、Ｗ２、・・・）とを含んでいる。この制御コードＡの値が“４”であり、“重みを設定する”ことを示す制御データを受信した全てのユニットは、ユニットのユニット制御部２１６Ｂが、入力ネットワーク座標記憶部２３３Ａに記憶されている入力ネットワーク座標の値を、受信した制御データに含まれる入力ネットワーク座標Ｂに更新するとともに、比較部２１５Ｂが、該更新した入力ネットワーク座標とユニットネットワーク座標記憶部２３４Ａから読み出したユニットネットワーク座標とが一致するか否かを判定する。次に、比較部２１５Ｂの判定結果が一致する場合には、ユニット制御部２１６Ｂが、重み記憶部２３１Ａに記憶されている結合重みベクトルを、受信した制御データに含まれる入力結合重みベクトルＷ（Ｗ１、Ｗ２、・・・）に更新する。
【０２４３】
＜選択処理５＞
制御データに含まれる制御コードＡの値が“５”であり、“学習速度と近傍距離とを設定する”ことを示す場合には、この制御データは、入力学習速度Ｃと、入力近傍距離Ｄと、を含んでいる。この制御コードＡの値が“５”であり、“学習速度と近傍距離とを設定する”ことを示す制御データを受信した全てのユニットは、ユニットのユニット制御部２１６Ｂが、学習速度記憶部２３５Ａに記憶されている学習速度を受信した制御データに含まれる入力学習速度Ｃに更新するとともに、距離記憶部２３２Ａに記憶されている基準距離を受信した制御データに含まれる入力近傍距離Ｄに更新する。
【０２４４】
＜選択処理６＞
制御データに含まれる制御コードＡの値が“６”であり、“実数ベクトルの次元数を設定する”こと示す場合には、この制御データは、入力次元数Ｎを含んでいる。この制御コードＡの値が“６”であり、“実数ベクトルの次元数を設定する”ことを示す制御データを受信した全てのユニットは、ユニットのユニット制御部２１６Ｂが、実数ベクトル次元数記憶部２４２Ｂに記憶されている次元数を受信した制御データに含まれる入力次元数Ｎに更新する。
【０２４５】
＜選択処理７＞
制御データに含まれる制御コードＡの値が“７”であり、“ノルムを算出する”ことを示す場合には、この制御データは、入力ベクトルＸ（Ｘ１、Ｘ２、・・・）を含んでいる。この制御コードＡの値が“７”であり、“ノルムを算出する”ことを示す制御データを受信した全てのユニットは、ユニットのユニット制御部２１６Ｂが、入力データ記憶部２３０Ａに記憶されている入力データベクトルを入力ベクトルＸ（Ｘ１、Ｘ２、・・・）に更新する。次に、ノルム算出部２１４Ａが、該更新した入力ベクトルＸ（Ｘ１、Ｘ２、・・・）と、重み記憶部２３１Ａから読み出した結合重みベクトルとのノルムを算出し、該算出したノルムをユニットノルムとしてユニットノルム記憶部２３６Ａに記憶させる。
【０２４６】
＜選択処理８＞
制御データに含まれる制御コードＡの値が“８”であり、“ノルムを出力する”ことを示す場合には、この制御データは、入力ネットワーク座標Ｂを含んでいる。この制御コードＡの値が“８”であり、“ノルムを出力する”ことを示す制御データを受信した全てのユニットは、ユニットのユニット制御部２１６Ｂが、入力ネットワーク座標記憶部２３３Ａに記憶されている入力ネットワーク座標の値を、受信した制御データに含まれる入力ネットワーク座標Ｂに更新するとともに、比較部２１５Ｂが、該更新した入力ネットワーク座標とユニットネットワーク座標記憶部２３４Ａから読み出したユニットネットワーク座標とが一致するか否かを判定する。次に、比較部２１５Ｂの判定結果が一致する場合には、ユニット制御部２１６Ｂが、ユニットノルム記憶部２３６Ａから読み出したユニットノルムを、データ出力部２０４Ａとユニット出力バス２とを介して分配制御部８に出力する。
【０２４７】
＜選択処理９＞
制御データに含まれる制御コードＡの値が“９”であり、“学習する”ことを示す場合には、この制御データは、入力ネットワーク座標Ｂを含んでいる。この制御コードＡの値が“９”であり、“学習する”ことを示す制御データを受信した全てのユニットは、ユニット制御部２１６Ｂが、入力ネットワーク座標記憶部２３３Ａに記憶されている入力ネットワーク座標を、制御データに含まれていた入力ネットワーク座標Ｂに更新する。次に、ユニットの近傍判定部２１５Ａが、ユニットネットワーク座標記憶部２３４Ａから読み出したユニットネットワーク座標と入力ネットワーク座標記憶部２３３Ａから読み出した入力ネットワーク座標との間の距離を算出し、該算出した距離が、距離記憶部２３２Ａから読み出した距離以下であるか否かを判定することにより、ユニットネットワーク座標記憶部２３４Ａから読み出したユニットネットワーク座標が、入力ネットワーク座標記憶部２３３Ａから読み出した入力ネットワーク座標の近傍にあるか否かを判定する。次に、近傍判定部２１５Ａの判定した結果が近傍である場合には、重み更新部２１６Ａが、入力データ記憶部２３０Ａから読み出した入力データベクトルと重み記憶部２３１Ａから読み出した結合重みベクトルとの差を算出し、該算出した差に学習速度記憶部２３５Ａから読み出した学習速度係数を乗じた値を、重み記憶部２３１Ａに記憶されている結合重みベクトルに加算し、重み記憶部２３１Ａに記憶されている結合重みベクトルを更新することにより、学習する。
【０２４８】
＜選択処理１０＞
制御データに含まれる制御コードＡの値が“１０”であり、“学習結果を出力する”ことを示す場合には、この制御データは、入力ネットワーク座標Ｂを含んでいる。この制御コードＡの値が“１０”であり、“学習結果を出力する”ことを示す制御データを受信した全てのユニットは、ユニットのユニット制御部２１６Ｂが、入力ネットワーク座標記憶部２３３Ａに記憶されている入力ネットワーク座標の値を、受信した制御データに含まれる入力ネットワーク座標Ｂに更新するとともに、比較部２１５Ｂが、該更新した入力ネットワーク座標とユニットネットワーク座標記憶部２３４Ａから読み出したユニットネットワーク座標とが一致するか否かを判定する。次に、比較部２１５Ｂの判定結果が一致する場合には、ユニット制御部２１６Ｂが、重み記憶部２３１Ａから読み出した結合重みベクトルを、データ出力部２０４Ａとユニット出力バス２とを介して分配制御部８に出力する。
【０２４９】
＜第４の実施形態におけるユニットの動作＞
次に、図２４を用いて、図２３で説明した制御データのプロトコルを受信した場合の、ユニットの動作、特に、ユニットのユニット制御部２１６Ｂの動作について説明する。なお、説明の簡略のために、以降においては制御コードＡの値を用いて説明する。この制御コードＡの値の意味は、上記に図２３の説明と同様である。
【０２５０】
まず、ユニットは、データ入力部２０１Ａに制御データが入力されたことに応じて、処理を開始する（ステップＳ２４０１）。次に、ファンクション番号抽出部２５０Ｂが、データ入力部２０１Ａに入力された制御データから、制御コードを抽出し、抽出した制御コードをファンクション番号記憶部２５１Ｂに記憶させる。
【０２５１】
また、オペランド抽出部２５２Ｂが、データ入力部２０１Ａに入力された制御データから、オペランドである制御コード以外の情報を汎用バッファー記憶部２５３Ｂに記憶させる。
【０２５２】
次に、ユニット制御部２１６Ｂが、ファンクション番号抽出部２５０Ｂが制御コードを抽出したことに応じて、ファンクション番号記憶部２５１Ｂから読み出した制御コードの値に基づいて、以降に説明するステップＳ２４０２からステップＳ２４１２により、ユニットにおける処理を選択的に実行する（ステップＳ２４０２）。
【０２５３】
ステップＳ２４０２で、読み出した制御コードの値が“４”である場合には、比較部２１５Ｂが、ユニットネットワーク座標記憶部２３４Ａから読み出したユニットネットワーク座標と入力ネットワーク座標記憶部２３３Ａから読み出した入力ネットワーク座標とが一致するか否かを判定する（ステップＳ２４０３）。ステップＳ２４０３の判定結果が、選択ユニット番号と固有ユニット番号とが一致する場合には、ユニット制御部２１６Ｂは、上記に説明した選択処理４を実行し（ステップＳ２４０４）、処理を終了する。一方、ステップ２４０３の判定結果が、選択ユニット番号と固有ユニット番号とが一致しない場合には、処理を終了する。
【０２５４】
一方、ステップＳ２４０２で、読み出した制御コードの値が“５”である場合には、ユニット制御部２１６Ｂは、上記に説明した選択処理５を実行し（ステップＳ２４０５）、処理を終了する。一方、ステップＳ２４０２で、読み出した制御コードの値が“６”である場合には、ユニット制御部２１６Ｂは、上記に説明した選択処理６を実行し（ステップＳ２４０６）、処理を終了する。一方、ステップＳ２４０３で、読み出した制御コードの値が“７”である場合には、ユニット制御部２１６Ｂは、上記に説明した選択処理７を実行し（ステップＳ２４０７）、処理を終了する。
【０２５５】
一方、ステップＳ２４０２で、読み出した制御コードの値が“８”である場合には、比較部２１５Ｂが、ユニットネットワーク座標記憶部２３４Ａから読み出したユニットネットワーク座標と入力ネットワーク座標記憶部２３３Ａから読み出した入力ネットワーク座標とが一致するか否かを判定する（ステップＳ２４０８）。ステップＳ２４０８の判定結果が、選択ユニット番号と固有ユニット番号とが一致する場合には、ユニット制御部２１６Ｂは、上記に説明した選択処理８を実行し（ステップＳ２４０９）、処理を終了する。一方、ステップ２４０８の判定結果が、選択ユニット番号と固有ユニット番号とが一致しない場合には、処理を終了する。
【０２５６】
一方、ステップＳ２４０２で、読み出した制御コードの値が“９”である場合には、ユニット制御部２１６Ｂは、上記に説明した選択処理９を実行し（ステップＳ２４１０）、処理を終了する。
【０２５７】
一方、ステップＳ２４０２で、読み出した制御コードの値が“１０”である場合には、比較部２１５Ｂが、ユニットネットワーク座標記憶部２３４Ａから読み出したユニットネットワーク座標と入力ネットワーク座標記憶部２３３Ａから読み出した入力ネットワーク座標とが一致するか否かを判定する（ステップＳ２４１１）。ステップＳ２４１１の判定結果が、選択ユニット番号と固有ユニット番号とが一致する場合には、ユニット制御部２１６Ｂは、上記に説明した選択処理１０を実行し（ステップＳ２４１２）、処理を終了する。一方、ステップ２４１１の判定結果が、選択ユニット番号と固有ユニット番号とが一致しない場合には、処理を終了する。
【０２５８】
上記に図２４を用いて説明したように、各ユニットは、ユニットのユニット制御部２１６Ｂにより、入力された入力データに含まれる制御コードの値に基づいて、選択的に予め定められた処理を実行する。
【０２５９】
＜第４の実施形態における分配制御部８の動作＞
次に、図２５と図２６とを用いて、第２の基本構成による並列演算装置を自己組織化マップに適応した場合の、並列演算装置の動作について説明する。なお、並列演算装置は分配制御部８と複数のユニットを有するが、分配制御部８が出力した制御データに含まれる制御コードの値に応じた各ユニットの動作については、図２２から図２４を用いて既に説明したので、ここでは、分配制御部８の動作のみについて説明する。
【０２６０】
まず、図２５（ａ）を用いて、自己組織化マップに適応した場合における並列演算装置の分配制御部８の動作について説明する。まず、各ユニットの初期設定をする（ステップＳ２５０１）。この初期設定については、後に図２５（ｂ）を用いて詳述する。
【０２６１】
次に、学習回数変数ｔ＝０、１、２、・・・・Ｔについて、競合学習（ステップＳ２５０３）を繰り返す（ステップＬ２５０２からステップＬ２５０４の学習ループ処理）。ここで、このＴは、競合学習の学習回数である。また、このステップＳ２５０２の競合学習については、後に図２６（a）を用いて詳述する。
【０２６２】
次に、学習した結果を出力する（ステップＳ２５０５）。この出力については、後に図２６（ｃ）を用いて詳述する。
【０２６３】
次に、図２５（ｂ）と、図２６（ａ）から図２６（ｃ）とを用いて、図２５（ａ）の各処理について詳細に説明する。なお、ここでは、図２５（ｂ）と、図２６（ａ）から図２６（ｃ）との処理を、図２０（ａ）の各処理についての関数またはサブルーチンとして説明する。
【０２６４】
最初に、図２５（ｂ）を用いて、図２５（ａ）のステップＳ２５０１の初期設定の処理について説明する。まず、パターン入力ｎを外部から入力する（ステップＳ２５０１０１）。次に、制御コードＡの値を“６”、出力値Ｄの値を入力されたパターン入力ｎとした制御データを、各ユニットに出力する（ステップＳ２５０１０２）。
【０２６５】
次に、ユニットループ変数ｊ＝１、２、・・・Ｎで示されるユニットの順に、次のステップＬ２５０１０４からステップＬ２５０１０６の次元ループとＳ２５０１０７との処理を繰り返す（ステップＬ２５０１０３からステップＬ２５０１０８のユニットループ）。ここで、Ｎは、ユニットの総数の値である。
【０２６６】
このステップＬ２５０１０４からステップＬ２５０１０６の次元ループでは、入力ベクトル次元数ｉ＝１、２、・・・ｎで示される入力ベクトルの次元数の順に、次のステップＳ２５０１０５の処理を繰り返す。このステップＳ２５０１０５では、外部から入力パターンｗｊｉを入力する。ここで、ｎは、入力ベクトルの次元数である。
【０２６７】
また、このステップＳ２５０１０７の処理では、制御コードＡの値を“４”、入力ネットワーク座標Ｂの値をユニットループ変数ｊ、出力値Ｃ（Ｃ１、Ｃ２、・・・Ｃｎ）を入力パターンｗｊｉ（ｗｊ１、ｗｊ２、・・・ｗｊｎ）とした制御データを、各ユニットに出力する。
【０２６８】
上記のステップＬ２５０１０３からステップＬ２５０１０８の処理により、各ユニットに対して、それぞれのユニット内の重み記憶部２３１Ａの結合重みベクトルを初期設定する。
【０２６９】
次に、学習回数変数ｔ＝０、１、２、・・・Ｔについて、ステップＳ２５０１１０の処理を繰り返す（ステップＬ２５０１０９からステップＬ２５０１１１の入力ループ）。このステップＳ２５０１１０では、外部から学習速度η（ｔ）と近傍距離ｄ（ｔ）とを入力し、学習回数変数ｔと関連付けて入力した学習速度η（ｔ）を内部の学習速度記憶部に記憶するとともに、学習回数変数ｔと関連付けて入力した近傍距離ｄ（ｔ）を内部の近傍距離記憶部に記憶する。
次に、後に図２６（ｂ）を用いて説明する最小ノルム判定に用いるダミー変数であるノルム最小値ｄｍｉｎの値を−１に設定し（ステップＳ２５０１１２）、処理を戻す。
【０２７０】
次に、図２６（ａ）を用いて、図２５（ａ）のステップＳ２５０３の競合学習の処理について説明する。まず、制御コードＡの値を“５”、入力学習速度Ｃを内部の学習速度記憶部から読み出した学習速度η（ｔ）、入力近傍距離Ｄを内部の近傍距離記憶部から読み出した近傍距離ｄ（ｔ）とした制御データを各ユニットに出力する（ステップＳ２５０３０１）。
【０２７１】
次に、次元ループ変数ｉ＝１、２、・・・ｎについて、次のステップＳ２５０３０３の処理を繰り返す（ステップＬ２５０３０２からステップＬ２５０３０４の次元ループ）。このステップＳ２５０３０３では、外部からパターン入力ｘｉを入力する。
【０２７２】
次に、制御コードＡの値を“７”、入力ベクトルＣ（Ｃ１、Ｃ２、・・・Ｃｎ）をステップＬ２５０３０２からステップＬ２５０３０４で外部から入力したパターン入力ｘ（ｘ１、ｘ２、・・・ｘｎ）とした制御データを各ユニットに出力する（ステップＳ２５０３０５）。
【０２７３】
次に、ユニットループ数変ｊ＝１、２、・・・Ｎについて、次のステップＳ２５０３０７とステップＳ２５０３０８とステップＳ２５０３０９との処理を繰り返す（ステップＬ２５０３０６からステップＬ２５０３１０のユニットループ）。このステップＳ２５０３０７では、制御コードＡの値を“８”、入力ネットワーク座標Ｂの値をユニットループ変数ｊ、とした制御データを各ユニットに出力する。また、このステップＳ２５０３０８では、ステップＳ２５０３０７で制御コードＡの値を“８”、入力ネットワーク座標Ｂの値をユニットループ数変ｊ、とした制御データに対して、ユニットネットワーク座標が入力ネットワーク座標Ｂであるユニットループ数変ｊに一致するユニットからのノルムの出力を、ノルムｄｎとして入力する。
【０２７４】
また、このステップＳ２５０３０９では、ステップＳ２５０３０８で入力したノルムｄｎに基づいて、最小ノルム判定の処理を実行する。このステップＳ２５０３０９における最小ノルム判定の処理については、後に、図２６（ｂ）を用いて詳細に説明する。
【０２７５】
上記のステップＬ２５０３０６からステップＬ２５０３１０の処理により、各ユニットで算出されたノルムを全てのユニットから順に入力し、ステップＳ２５０３０９の処理にて入力したノルムを順に比較することにより、全てのユニットからのノルムの出力の中から最小となるノルムと、該最小となるノルムを出力したユニットを識別する識別情報であるユニットネットワーク座標をノルム最小ユニットネットワーク座標ｊｍｉｎとして選択する。
【０２７６】
次に、制御コードＡの値を“９”、入力ネットワーク座標Ｂの値をノルム最小ユニットネットワーク座標ｊｍｉｎ、とした制御データを各ユニットに出力する。これにより、各ユニットは、入力されたノルム最小ユニットネットワーク座標ｊｍｉｎに基づいて、近傍となるユニットが学習をする。
【０２７７】
次に、図２６（ｂ）を用いて、図２６（ａ）のステップＳ２５０３０９の最小ノルム判定の処理について説明する。
まず、ステップＳ２５０３０８で入力したノルムｄｎがノルム最小値ｄｍｉｎより小さいか否か、または、ノルム最小値ｄｍｉｎの値が−1であるか否かを判定する（ステップＳ２５０３０９１）。ステップＳ２５０３０９１で判定した結果が、入力したノルムｄｎがノルム最小値ｄｍｉｎより小さい場合、または、ノルム最小値ｄｍｉｎの値が−1である場合には、ノルム最小値ｄｍｉｎを入力したノルムｄｎとするともに、ノルム最小ユニットネットワーク座標ｊｍｉｎをユニットループ変数ｊとし（ステップＳ２５０３０９２）、処理を戻す。
【０２７８】
一方、ステップＳ２５０３０９１で判定した結果が、入力したノルムｄｎがノルム最小値ｄｍｉｎより小さくない場合であって、かつ、ノルム最小値ｄｍｉｎの値が−1でない場合には、処理を戻す。
【０２７９】
次に、図２６（ｃ）を用いて、図２５（ａ）のステップＳ２５０５の出力の処理について説明する。まず、ユニットループ変数ｊ＝０、１、２、・・・Ｎについて、次のステップＳ２５０５０２の処理とステップＬ２５０５０３からステップＬ２５０５０６の次元ループの処理とを繰り返す（ステップＬ２５０５０１からステップＬ２５０５０７のユニットループ）。
【０２８０】
このステップＳ２５０５０２では、制御コードＡの値を“１０”、入力ネットワーク座標Ｂの値をユニットループ変数ｊ、とした制御データを各ユニットに出力する。
【０２８１】
また、このステップＬ２５０５０３からステップＬ２５０５０６の次元ループの処理では、次元ループ変数ｉ＝１、２、・・・ｎについて、次のステップＳ２５０５０４とステップＳ２５０５０５との処理を繰り返す。このステップＳ２５０５０４では、ステップＳ２５０５０２で出力した制御データに応じたユニットからの出力である結合重みベクトルを、結合重みベクトルｗｊｉとして入力する。次に、このステップＳ２５０５０５では、ステップＳ２５０５０４でユニットから入力した結合重みベクトルｗｊｉを外部に出力する。
【０２８２】
以上の、ステップＬ２５０５０１からステップＬ２５０５０７の処理により、まず、各ユニットから順に結合重みベクトルを出力させ（ステップＳ２５０５０２）、次に、ステップＳ２５０５０２に応じて各ユニットが順に出力した結合重みベクトルを順に入力する（ステップＳ２５０５０４）。次に、ステップＳ２５０５０４で各ユニットから順に入力した結合重みベクトルを、順に外部に自己組織化マップの演算結果として出力する（ステップＳ２５０５０５）。
【０２８３】
以上の図２２から図２６を用いて説明した第２の基本構成による自己組織化マップに適応した場合の並列演算装置は、第１の基本構成による自己組織化マップに適応した場合の並列演算装置と同様に、自己組織化マップの演算を実行し、実行した結果を外部に出力することが可能である。
【０２８４】
また、第２の基本構成による自己組織化マップに適応した場合の並列演算装置は、第１の基本構成による自己組織化マップに適応した場合の並列演算装置と比較して、その構成が簡易であるという効果がある。また、入力ベクトルの次元数や学習速度や近傍距離の変更など、自己組織化マップにおける様々な変数の値の設計変更が容易であるという効果がある。
【０２８５】
＜分離構成＞
次に、図２７を用いて、図１４の第２の基本構成による並列演算装置において、各ユニットと分配制御装置８とを、分離構成とした場合の並列演算装置の構成について説明する。
【０２８６】
この図２７の並列演算装置は、図１４の並列演算装置に対して、互いに接続可能な接続部９Ａと接続部９Ｂとを有する。この接続部９Ａと接続部９Ｂとを介して、ユニットＡＵ１からユニットＡＵ１０の全てのユニットと分配制御装置８とは、ユニット出力バス２とユニット入力バス３とにより接続される。例えば、この接続部９Ａと接続部９Ｂとは、互いに嵌合する部材であることが望ましい。
【０２８７】
また、図２７に示すように、互いに接続可能な接続部９Ａと接続部９Ｂとにより、ユニットＡＵ１からユニットＡＵ１０の全てのユニットと接続部９Ｂとを１つの装置（装置Ｂ）とし、分配制御装置８と接続部９Ａとを１つの装置（装置Ａ）とする。
【０２８８】
この場合、例えば、この接続部９Ａと接続部９Ｂとは、ＵＳＢ（Universal Serial Bus）（登録商標）コネクタのメスとオスとし、また、装置ＢをＵＳＢ機器とし、装置Ａをパーソナルコンピュータとしてもよい。以上のように、ユニットと分配制御装置８とを別の装置として構成し、分配制御装置８をパーソナルコンピュータとすることにより、並列演算装置全体の構成がより簡易となり、安価に製造可能となる。
【０２８９】
また、分配制御装置８をパーソナルコンピュータとすることにより、予め定められた制御の手順などを、コンピュータプログラミングすることにより、より簡易に制御の手順が作成可能となる。また、分配制御装置８であるパーソナルコンピュータは、入力手段としてのキーボードや、表示手段または出力手段としてのモニタも有しているため、よりユーザが簡易に並列演算装置を用いることが可能となる。
【０２９０】
なお、接続部９Ａと接続部９ＢとはＵＳＢコネクタに限られるものではなく、他の規格のコネクタでもよいし、または、通信ネットワークのコネクタであってもよい。通信ネットワークのコネクタの場合には、ユニットＡＵ１からユニットＡＵ１０と配制御装置８との間の接続は、接続部９Ａと接続部９Ｂとを介した通信プロトコルを用いた通信接続であってもよいし、接続部９Ａと接続部９Ｂとが、通信プロトコルを制御するようにしてもよい。
【０２９１】
また、装置Ｂを拡張基盤装置として構成し、この拡張基盤装置を、パーソナルコンピュータである分配制御装置８の拡張スロットに接続するようにしてもよい。例えば、拡張基盤装置として構成された装置Ｂが、例えば、ＰＣＩ（Peripheral Component Interconnect）規格またはＰＣＩ−Ｅｘｐｒｅｓｓ規格のバスに準じたボードであってもよい。また、この場合には、装置Ａであるパーソナルコンピュータは、接続部９Ａとして、例えば、ＰＣＩ規格またはＰＣＩ−Ｅｘｐｒｅｓｓ規格に準じた拡張スロットを有するようにしてもよい。
【０２９２】
＜第５の実施形態：ユニット間のノルムの比較を高速にする実施形態＞
＜トーナメント方式の原理＞
次に、第５の実施形態として、第２または第４の実施形態における自己組織化マップに適応した並列演算装置において、ユニット間のノルムの比較を高速にする実施形態について説明する。
【０２９３】
第２の実施形態における自己組織化マップに適応した並列演算装置においては、予め定められた順序で、ユニットがトークンとともにノルムを出力し、ノルムを入力したユニットが、入力したノルムとそのユニットが算出したノルムとを比較し、小さい方のノルムを出力する。これを、全てのユニットの間で順に繰り返すことにより、全てのユニットで最小となるノルムを算出していた。そのため、ユニットの数がＮ個（ここで、Ｎは任意の自然数）の場合、ノルムの比較には、（Ｎ−１）回の比較が必要であり、また、（Ｎ−１）回の比較をする時間が必要であった。
【０２９４】
また、第４の実施形態における自己組織化マップに適応した並列演算装置においては、各ユニットが算出したノルムを順に出力し、分配制御装置部が、入力されたノルムを順に比較し、最小のノルムを選択した。この場合、ユニットがノルムを分配制御装置部に順に出力するために、ユニットの数がＮ個の場合、全てのユニットがノルムを出力するには（Ｎ−１）回の出力が必要であり、また、（Ｎ−１）回の出力をする時間が必要であった。また、分配制御装置部における比較においても、分配制御装置部に入力されたユニットを順に比較するため、（Ｎ−１）回の比較が必要であり、また、（Ｎ−１）回の比較をする時間が必要であった。
【０２９５】
第５の実施形態における自己組織化マップに適応した並列演算装置においては、各ユニットが算出したノルムで、最小となるノルムを選択する場合、トーナメント方式を用いることにより、ノルムを比較する時間を、Ｎ回の比較をする時間より低減する。
【０２９６】
ここで、トーナメント方式とは、例えば、図２８に示すように、例えば、ＡとＢとＣとＤとの４つのユニットがある場合、ユニットＡとユニットＢとのノルムを比較するとともに、並列して、ユニットＣとユニットＤとのノルムを比較する。次に、ユニットＡとユニットＢとでノルムが小さかったユニットと、ユニットＣとユニットＤとでノルムが小さかったユニットとで、ノルムを比較する。
【０２９７】
これにより、図２８に示す４個のユニットの場合には、この４個（＝Ｎ）のユニットに対して、第２の実施形態または第４の実施形態のように順に１つずつ比較していく方式では、３回（Ｎ−１）の比較時間が必要であったのに対して、２回の比較時間で、最小となるユニットを選択することが可能となる。
【０２９８】
一般には、図２８に示すように、２個ずつのユニットのノルムを並列に比較するトーナメント方式の場合には、その比較に要する時間はｌｏｇ２（Ｎ）回となり、第２の実施形態または第４の実施形態のように順に１つずつ順にユニットのノルムを比較していく方式の場合に要する（Ｎ−１）回の時間に対して、比較に要する時間を大幅に低減することができる。なお、ユニットの個数Ｎが増大するに従い、トーナメント方式による比較に要する時間はより低減される。例えば、５１２個のユニットの場合には、第２の実施形態または第４の実施形態のように順に１つずつ順にユニットのノルムを比較していく方式では、５１１回の比較時間を要するのに対して、トーナメント方式による比較に要する時間は８回の比較時間を要するのみでよい。
【０２９９】
＜ユニットの配置の第１例＞
次に、図２９を用いて、ユニットを２次元平面に配置した場合に、上記に説明したトーナメント方式により、最小となるユニットを選択する方法について説明する。
ここでは、図２９に示すように、横軸であるＸ軸方向に、ユニットのＸ軸座標が１から１２であり、縦軸であるＹ軸方向に、ユニットのＹ軸座標が１から９の、１０８（＝１２×９）個のユニットが平面上に配置されている場合について説明する。
【０３００】
ここで、図２９を用いた説明においては、ユニットの表記を簡単にするために、座標を用いてユニットを標記することとし、Ｘ軸の座標がｍでありＹ軸の座標がｎであるユニットＵを、Ｕ（ｍ，ｎ）として表記することにする。例えば、Ｘ軸の座標が５でありＹ軸の座標が３であるユニットＵを、Ｕ（５，３）として表記する。
【０３０１】
また、図２９においては、図中の矢印の順に、ユニット同士のノルムを比較していく。例えば、まず、Ｕ（１，１）が算出したノルムを、Ｕ（１，１）がＵ（１，２）に出力する。次に、Ｕ（１，１）からノルムが入力されたことに応じて、Ｕ（１，２）が、Ｕ（１，２）が算出したノルムと、Ｕ（１，１）から入力したノルムとを比較し、小さい方のノルムを選択する。次に、Ｕ（１，２）が、選択した小さい方のノルムを、Ｕ（１，３）に出力する。
【０３０２】
ここで、Ｕ（１，１）が図中の矢印に従って自ユニットが算出したノルムをＵ（１，２）に出力するのと並列して、Ｕ（２，１）が図中の矢印に従って自ユニットが算出したノルムをＵ（２，２）に出力する。また、Ｕ（１，１）とＵ（２，１）とに並列して、Ｕ（３，１）、Ｕ（４，１）、Ｕ（５，１）なども、並列して、矢印に従ってそれぞれの自ユニットが算出したノルムを出力する
【０３０３】
次に、Ｕ（１，２）が、Ｕ（１，１）からのノルムの入力に応じて、入力されたノルムと自ユニットが算出したノルムとを比較する。また、Ｕ（１，２）が比較しているのと並列して、Ｕ（２，２）も、Ｕ（２，１）からのノルムの入力に応じて、入力されたノルムと自ユニットが算出したノルムとを比較する。また、Ｕ（１，２）とＵ（２，２）とにおける比較に並列して、Ｕ（３，２）、Ｕ（４，２）、Ｕ（５，２）なども、それぞれのユニットが、入力されたノルムと自ユニットが算出したノルムとを比較する。
【０３０４】
図２９のユニットにおいては、矢印に従った順序で、Ｕ（７，６）とＵ（７，８）とから、Ｕ（７，５）に入力される。次に、Ｕ（７，５）で、Ｕ（７，６）とＵ（７，８）とから入力されたノルムと、Ｕ（７，５）が算出したノルムとの中から最小となるノルムと、該ノルムを有するユニット識別情報とを選択する。
以上より、全てのユニットの中で、最小となるノルムの値と、該最小となるノルムを有するユニットとを選択可能となる。
【０３０５】
この図２９においては、矢印に従って、各ノルムが自ユニットに入力されたノルムと自ユニットが算出したノルムとを比較するため、最長となる比較の回数は、例えば、Ｕ（１，１）を比較の開始として、Ｕ（１，２）、Ｕ（１，３）、Ｕ（１，４）、Ｕ（１，５）、Ｕ（５，２）、Ｕ（５，３）、Ｕ（５，４）Ｕ（５，５）、Ｕ（６，４）、Ｕ（６，５）、Ｕ（７，５）の順の１１回分の比較となる。ここで、この各ノルムの比較が並列に実行されるために、この図２９においては、全ノルムにおいて、最小のノルムの比較は、１１回分の比較ですむことになる。よって、比較が並列に実行されるために、非常に少ない回数の比較により、最小のノルムを選択可能となる。
【０３０６】
ここで、図２９に示されるように、複数のユニットは、葉ユニットと、根ユニットと、幹ユニットとに予め分類されている。この葉ユニットとは、複数のユニットがそれぞれ算出したノルムの中から、最小となるノルムを選択するための比較を開始するユニットとして、予め定められた複数のユニットである。また、根ユニットとは、ユニットのそれぞれが算出したノルムの中から選択された最小となるノルムと、該ノルムを有するユニットのユニットネットワーク座標とを分配制御部に出力するユニットとして予め定められた１つのユニットである。また、幹ユニットとは、葉ユニットと根ユニットとを接続する予め定められた複数のユニットである。
【０３０７】
図２９においては、Ｕ（１，１）、Ｕ（２，１）などの葉ユニットは、色が濃くしてある。また、結果を出力するユニットである根ユニットは、図２９ではＵ（７，５）の１つのユニットであり、このユニットも図２９においては色を濃くしてある。また、幹ユニットは、他のユニットであり、図２９では白塗りのユニットとしてある。
【０３０８】
なお、図２９では、葉ユニットが、ほぼ同時のタイミングでユニットの開始のためのノルムを出力し始めた場合、全ての幹ユニット、および、根ユニットには、ほぼ同時となるタイミングでは、１つのユニットのみからノルムが入力されるような順序となるように、矢印に示すような順序が予め定められている。
【０３０９】
例えば、Ｕ（２，５）には、Ｕ（１，５）とＵ（２，４）とからノルムが入力されるが、Ｕ（２，５）にＵ（１，５）からノルムが入力されるタイミングと、Ｕ（２，５）にＵ（２，４）からノルムが入力されるタイミングとは、異なるタイミングとなるように予め設定されている。例えば、Ｕ（１，１）およびＵ（２，１）が、ほぼ同時にノルムを出力してから、Ｕ（１，５）は約４ステップ時間でＵ（２，５）にノルムを出力し、Ｕ（２，４）は約３ステップ時間でＵ（２，５）にノルムを出力する。なお、ここでいうステップ時間とは、あるユニットにノルムが入力されてから、そのユニットが比較した最小となるノルムを出力するまでに要する時間のことである。
【０３１０】
図２９においては、以上のように、幹ユニットまたは根ユニットにおいては、接続されているユニットから、ほぼ同時にノルムが入力されることがないように、予め接続されている。
【０３１１】
＜第５の実施形態における並列演算装置の全体構成＞
次に、図３０と図３１とを用いて、第５の実施形態による並列演算装置の全体構成について説明する。図３０または図３１に示すように、ここでは、ユニットＡＵ１からＡＵ１６の１６個のユニットある場合について説明する。この第５の実施形態による並列演算装置は、図３０の構成に加えて、更に図３１の構成を有する。
【０３１２】
また、以降においては、第５の実施形態による並列演算装置は、図１４から図１６、および、図２２の構成図を用いて説明した第２の基本構成による並列演算装置を自己組織化マップに適応した場合の並列演算装置の構成に対して、上記に説明したトーナメント方式による比較を実行する構成を追加するものとして説明する。また、第５の実施形態による並列演算装置の構成またはその構成の動作において、第２の基本構成による並列演算装置を自己組織化マップに適応した場合の並列演算装置の構成またはその構成の動作は同一なので、その説明を省略する。また、図３０または図３１において、図１４と構成と同一の構成には同一の符号を付けて、その説明を省略する。
【０３１３】
まず、図３０に示すように、図３０の第５の実施形態による自己組織化マップを演算する並列演算装置は、予め定められた識別情報であるユニットネットワーク座標によりそれぞれが識別される複数のユニット（ＡＵ１からＡＵ１６）と、複数のユニットの中のいずれか１つのユニットが出力する出力値がユニット出力バス２を介して入力されたことに応じて、該入力された入力値と複数のユニットの中から選択したいずれか１つのユニットを選択する識別情報である選択ユニットネットワーク座標とを含む制御データを、複数のユニットのそれぞれにユニット入力バス３を介して出力する分配制御部８と、を有する。この図３０の第５の実施形態による並列演算装置の構成は、図１４の並列演算装置の構成と同様である。
【０３１４】
次に、図３１に示すように、第５の実施形態による自己組織化マップを演算する並列演算装置においては、複数のユニットＡＵ１からＡＵ１６とＡＵ１からＡＵ１６とは、図３０の構成に加えて更に、ノルム比較バス４１とユニットビジーフラグバス４２とを介して予め定められた順序で接続されている。図３１においては、ＡＵ１とＡＵ２とＡＵ３とＡＵ５とが葉ユニットである。また、ＡＵ５から１２、および、ＡＵ１４からＡＵ１６が、幹ユニットである。また、ＡＵ１３が、根ユニットである。この葉ユニットと幹ユニットと根ユニットとは、葉ユニットから根ユニットにノルムの比較結果が、予め定められた順序で送信できるように、該順序で隣接するユニット同士がノルム比較バス４１を介して接続されており、かつ、根ユニット（ＡＵ１３）は分配制御部８にノルム比較バス４１を介して接続されている。
【０３１５】
この順序は、図３１では、葉ユニットから根ユニットまでの順序として、ＡＵ１、ＡＵ５、ＡＵ９、ＡＵ１３の順序で予め定められた第１の順序と、ＡＵ２、ＡＵ６、ＡＵ１０、ＡＵ１４の順序で予め定められた第２の順序と、ＡＵ３、ＡＵ７、ＡＵ１１、ＡＵ１５、ＡＵ１４、ＡＵ１３の順序で予め定められた第３の順序と、ＡＵ４、ＡＵ８、ＡＵ１２、ＡＵ１６、ＡＵ１５、ＡＵ１４、ＡＵ１３の順序で予め定められた第４の順序とがある。
この予め定められた第１の順序、第２の順序、第３の順序、および、第４の順序で、隣接するユニット同士はノルム比較バス４１を介して接続されているとともに、ユニットビジーフラグバス４２を介して接続されている。
【０３１６】
また、図３１では、ＡＵ１とＡＵ２とＡＵ３とＡＵ５とが葉ユニットと、分配制御部８とが、ノルム比較開始信号線４０で接続されている。例えば、分配制御部８が、ノルムの比較を開始することを示す信号を、ノルム比較開始信号線４０を介して、ＡＵ１とＡＵ２とＡＵ３とＡＵ５とである葉ユニットに出力することにより、葉ユニットを開始ユニットとして、第１の順序、第２の順序、第３の順序、および、第４の順序で、ノルムの比較が並列に実行される。そして、各順序の比較結果が、根ユニットであるＡＵ１３に入力され、根ユニットが、全てのユニットのうち、最小となるノルムと該ノルムを有するユニットのユニットネットワーク座標とを選択し、選択したノルムとユニットネットワーク座標とを分配制御部８にノルム比較バス４１を介して出力する。
【０３１７】
なお、上記においては、ＡＵ１とＡＵ２とＡＵ３とＡＵ５とである葉ユニットと、分配制御部８とが、ノルム比較開始信号線４０で接続されており、ノルムの比較を開始することを示す信号を、分配制御部８が葉ユニットへノルム比較開始信号線４０を介して出力するとして説明した。しかし、後述する実施形態においては、ノルム比較開始信号線４０を用いるのではなく、後述する図３２のプロトコル表に示すように、制御コードＡの値が“１１”であり、“複数のユニットがそれぞれ算出したノルムの中から最小となるノルムを選択するための比較を開始する”ことを示す制御データを、分配制御部８が葉ユニットへユニット入力バス３を介して出力する。なお、分配制御部８は、制御コードＡの値が“１１”であり、“複数のユニットがそれぞれ算出したノルムの中から最小となるノルムを選択するための比較を開始する”ことを示す制御データを、葉ユニットのみではなく全てのユニットへ、ユニット入力バス３を介して出力する。
【０３１８】
なお、図３１においては、並列なノルムの比較順序の原理を説明するために、比較の順序が簡易な接続を用いているが、実際の接続においては、図２９に示すように、根ユニットは、ユニット全体に対して、ほぼ中央となる位置にあり、複数の葉ユニットは、ユニット全体に対して、ほぼ外周となる位置にあることが望ましい。根ユニットはユニット全体に対してほぼ中央となる位置にあり、複数の葉ユニットはユニット全体に対してほぼ外周となる位置にあることにより、葉ユニットから根ユニットまでの根ユニットの数、つまり、ノルムの比較の回数を低減することが可能なため、より高速にノルムの比較が出来るという効果を奏する。
【０３１９】
＜第５の実施形態におけるユニットの構成の概要＞
次に、上記において、図３０と図３１とを用いて説明した第５の実施形態におけるユニットの構成の概要について説明する。
まず、図２２を用いて説明したように、複数のユニットのそれぞれは、分配制御部８から入力された制御データに基づいて自ユニットが算出したノルムを記憶するユニットノルム記憶部２３６Ａと、自ユニットのユニットネットワーク座標を記憶するユニットネットワーク座標記憶部２３４Ａと、を有している。
【０３２０】
また、葉ユニットが葉ノルム情報出力部を有する。この葉ノルム情報出力部は、複数のユニットがそれぞれ算出したノルムの中から最小となるノルムを選択するための比較を開始することを示す信号を分配制御部８から入力されたことに応じて、自ユニットのユニットノルム記憶部２３６Ａから読み出したノルムと自ユニットのユニットネットワーク座標記憶部２３４Ａから読み出したユニットネットワーク座標とを、自ユニットが接続される後段ユニットへノルム比較バス４１を介して出力する。
【０３２１】
また、幹ユニットまたは根ユニットは、勝者ノルム情報記憶部と、ノルム情報入力部と、勝者ノルム情報設定部と、ノルム情報出力部とを有する。
勝者ノルム情報記憶部は、自ユニットに入力されたノルムと自ユニットのユニットノルム記憶部に記憶されたノルムとにおいて最小であるノルムと、該ノルムを有するユニットを識別するユニットネットワーク座標とを関連付けて勝者ノルム情報として記憶する。
ノルム情報入力部は、ノルムを比較する順序において葉ユニットに近い方のユニットであり隣接するユニットである前段ユニットから、ノルムとユニットネットワーク座標とを関連付けてノルム情報としてノルム比較バスを介して入力する。
【０３２２】
勝者ノルム情報設定部は、ノルム情報入力部にノルム情報が入力されたことに応じて、ノルム情報入力部に入力されたノルムと、自ユニットの勝者ノルム情報記憶部または自ユニットのユニットノルム記憶部から読み出したノルムとを比較し、最小となるノルムと該ノルムと関連付けられたユニットネットワーク座標とを関連付けて勝者ノルム情報として勝者ノルム情報記憶部に設定して記憶する。
ノルム情報出力部は、勝者ノルム情報記憶部から読み出した勝者ノルム情報を、ノルムを比較する順序で根ユニットに近い方のユニットであり隣接するユニットである後段ユニットへノルム比較バスを介して出力する。
【０３２３】
また、幹ユニットまたは根ユニットには、複数の幹ユニットまたは複数の葉ユニットが前段ユニットとして予め接続されており、幹ユニットまたは根ユニットのそれぞれは、前段接続数記憶部と、入力回数記憶部と、前段接続数比較部とを有する。
前段接続数記憶部には、自ユニットに接続される前段ユニットの総数である前段接続数が予め記憶されている。入力回数記憶部には、ノルム情報入力部にノルムとユニットネットワーク座標とが入力される毎に、入力回数をカウントアップして記憶する。前段接続数比較部は、前段接続数記憶部から読み出した前段接続数と、入力回数記憶部から読み出した入力回数とを比較する。
また、ノルム情報出力部が、接続数比較部の比較結果が、前段接続数と入力回数とが一致した場合に、勝者ノルム情報記憶部から読み出した勝者ノルム情報を出力する。
【０３２４】
また、幹ユニットまたは根ユニットのそれぞれが、ノルムとユニットネットワーク座標とを、自ユニットの前段ユニットから入力可能であるか否かを示すユニットビジーフラグ情報を記憶するユニットビジーフラグ記憶部を有している。また、ユニットのそれぞれが、自ユニットの後段ユニットが有するユニットビジーフラグ記憶部から出力されたユニットビジーフラグ情報に基づいて、該後段ユニットにノルムとユニットネットワーク座標とを出力するか否かを判定するビジーフラグ判定部を有する。また、自ユニットのノルム情報出力部は、自ユニットのビジーフラグ判定部の判定結果に基づいて、勝者ノルム情報記憶部から読み出した勝者ノルム情報を出力する。
【０３２５】
また、ノルム情報入力部は、ノルム情報が入力されたことに応じて、ユニットビジーフラグ記憶部に記憶されているユニットビジーフラグ情報を自ユニットの前段ユニットから入力可能でないことを示すように設定する。また、接続数比較部は、比較結果が前段接続数と入力回数とが一致しない場合に、ユニットビジーフラグ記憶部に記憶されているユニットビジーフラグ情報を自ユニットの前段ユニットから入力可能であることを示すように設定する。
【０３２６】
また、幹ユニットまたは根ユニットのそれぞれが、ユニット制御部を有する。このユニット制御部は、複数のユニットがそれぞれ算出したノルムの中から最小となるノルムを選択するための比較を開始することを示す信号を分配制御部から入力されたことに応じて、ユニットビジーフラグ記憶部に記憶されているユニットビジーフラグ情報を自ユニットの前段ユニットから入力可能であることを示すように設定する。
また、接続数比較部は、比較結果が前段接続数と入力回数とが一致した場合に、ユニットビジーフラグ記憶部に記憶されているユニットビジーフラグ情報を自ユニットの前段ユニットから入力可能でないことを示すように設定する。
【０３２７】
＜第５の実施形態における制御データのプロトコル＞
次に、図３２を用いて、第５の実施形態における制御データの一例としてのプロトコルについて説明する。なお、図３２に示す制御データのプロトコルは、図２３に示した制御データのプロトコルにおいて、制御コードＡの値が“１１”が追加されている。制御コードＡの値が４から１０の制御データのプロトコルについては、図３２に示す制御データのプロトコルと図２３に示す制御データのプロトコルとは同様であるため、その説明を省略する。
【０３２８】
＜選択処理１１＞
制御データに含まれる制御コードＡの値が“１１”であり、“勝者ユニット決定アルゴリズムの開始の合図”、つまり、“複数のユニットがそれぞれ算出したノルムの中から最小となるノルムを選択するための比較を開始する”ことを示す場合には、この制御データは、この制御コードＡの値が“１１”の制御コードＡのみを含んでいる。この制御コードＡの値が“１１”であり、“複数のユニットがそれぞれ算出したノルムの中から最小となるノルムを選択するための比較を開始する”ことを示す制御データを受信したユニットにおいて、葉ユニット（開始ユニット）は、後段ユニットに自ユニットノルムと自ユニットネットワーク座標とを出力して渡す。また、それ以外のユニットである根ユニットと幹ユニットとは、前段からの入力と比較して、決定された勝者ユニットノルムとそのユニットネット座標とを後段へ出力して渡す。
【０３２９】
この制御コードＡの値が“１１”であり、“複数のユニットがそれぞれ算出したノルムの中から最小となるノルムを選択するための比較を開始する”ことを示す制御データを受信したユニットにおいて、葉ユニット、および、根ユニットと幹ユニットとの構成とその動作については、図３３から図３６を用いて後述する。
【０３３０】
＜葉ユニットの構成＞
次に、図３３を用いて、第５の実施形態における葉ユニットの構成について説明する。なお、第５の実施形態における葉ユニットは、図２２の第４の実施形態におけるユニットの構成を全て有している。ここでは、図２２の第４の実施形態におけるユニットの構成に対して、追加された第５の実施形態における葉ユニットの構成について説明する。なお、図３３の第５の実施形態におけるユニットの構成において、図２２の第４の実施形態におけるユニットの構成と同一の構成については、同一の符号を付けその説明を省略する。
【０３３１】
葉ユニットは、ユニット制御部２１６Ｂと、ビジーフラグ判定部２６１と、ノルム情報出力部２６２と、を有する。なお、他の構成については、その説明を省略する。なお、図３３において、ビジーフラグ記憶部２６０は、後段ユニットが有する構成である。
【０３３２】
なお、この葉ユニットの構成は、上記の「第５の実施形態におけるユニットの構成の概要」において説明した構成において、以下の構成同士が、それぞれ対応する。まず、ノルム情報出力部２６２が、葉ノルム情報出力部に対応する。また、ユニット制御部２１６Ｂがユニット制御部に対応する。また、ビジーフラグ判定部２６１がビジーフラグ判定部に対応する。
【０３３３】
次に、各構成について説明する。ユニット制御部２１６Ｂは、制御コードの値が“１１”の制御コードを受信した場合には、制御コードの値が“１１”の処理を実行することを示す信号をビジーフラグ判定部２６１に出力する。
【０３３４】
ビジーフラグ判定部２６１は、制御コードの値が“１１”の処理を実行することを示す信号をユニット制御部２１６Ｂから入力されたことに応じて、後段ユニットのビジーフラグ記憶部２６０からユニットビジーフラグバス４２を介してビジーフラグを後段ビジーフラグとして読み出して判定し、判定した結果をノルム情報出力部２６２に出力する。
【０３３５】
ノルム情報出力部２６２は、ビジーフラグ判定部２６１から入力された判定結果が、後段ビジーフラグが立っていないことを示す場合には、ユニットノルム記憶部２３６Ａから読み出したユニットノルムと、ユニットネットワーク座標記憶部２３４Ａから読み出したユニットネットワーク座標とを、ノルム情報として後段ユニットにノルム比較バス４１を介して出力する。
【０３３６】
＜幹ユニットまたは根ユニットの構成＞
次に、図３４を用いて、第５の実施形態における幹ユニットまたは根ユニットの構成について説明する。なお、図３３を用いて説明した第５の実施形態における葉ユニットの構成の説明と同様に、図２２の第４の実施形態におけるユニットの構成に対して、変更または追加される構成についてのみ説明する。また、図３４の第５の実施形態におけるユニットの構成において、図２２の第４の実施形態におけるユニットの構成と同一の構成については、同一の符号を付けその説明を省略する。
【０３３７】
幹ユニットまたは根ユニットは、ビジーフラグ記憶部２６０と、ビジーフラグ判定部２６１と、ノルム情報出力部２６２と、ノルム情報入力部２６３と、入力ノルム抽出部２７０と、入力ノルム記憶部２７１と、入力ネットワーク座標抽出部２７２と、入力ネットワーク座標記憶部２７３と、勝者ノルム判定部２７４と、勝者ノルム・勝者ネットワーク座標セット部２７５と、勝者ノルム記憶部２７６と、勝者ネットワーク座標記憶部２７７と、前段接続数比較部２７８と、前段接続数記憶部２７９と、前段接続数カウンタ部２８０と、前段接続数カウンタリセット部２８１と、ユニットビジーフラグセット部２８２と、を有する。
【０３３８】
なお、この幹ユニットまたは根ユニットの構成は、上記の「第５の実施形態におけるユニットの構成の概要」において説明した構成において、以下の構成同士が、それぞれ対応する。まず、ビジーフラグ記憶部２６０がユニットビジーフラグ記憶部に対応する。また、ビジーフラグ判定部２６１がビジーフラグ判定部に対応する。また、ノルム情報出力部２６２がノルム情報出力部に対応する。また、ノルム情報入力部２６３がノルム情報入力部に対応する。また、入力ノルム抽出部２７０と入力ノルム記憶部２７１と入力ネットワーク座標抽出部２７２と入力ネットワーク座標記憶部２７３と勝者ノルム判定部２７４と勝者ノルム・勝者ネットワーク座標セット部２７５とが、勝者ノルム情報設定部に対応する。また、勝者ノルム記憶部２７６と勝者ネットワーク座標記憶部２７７とが、勝者ノルム情報記憶部に対応する。また、前段接続数比較部２７８と前段接続数カウンタリセット部２８１とユニットビジーフラグセット部２８２とが、前段接続数比較部に対応する。また、前段接続数記憶部２７９が前段接続数記憶部に対応する。また、前段接続数カウンタ部２８０が入力回数記憶部に対応する。
【０３３９】
次に、各構成について説明する。ユニット制御部２１６Ｂは、制御コードの値が“１１”の制御コードを受信した場合には、制御コードの値が“１１”の処理を実行することを示す信号を勝者ノルム・ネットワーク座標初期セット部２８４に出力する。また、ユニット制御部２１６Ｂは、制御コードの値が“１１”の制御コードを受信した場合には、ユニットビジーフラグ記憶部２６０のビジーフラグをリセットする。
【０３４０】
勝者ノルム・ネットワーク座標初期セット部２８４は、制御コードの値が“１１”の処理を実行することを示す信号をユニット制御部２１６Ｂから受信したことに応じて、ユニットノルム記憶部２３６Ａから読み出したユニットノルムを勝者ノルムとして勝者ノルム記憶部２７６に記憶してセットするとともに、ユニットネットワーク座標記憶部２３４Ａから読み出したユニットネットワーク座標を勝者ネットワーク座標として勝者ネットワーク座標記憶部２７７に記憶してセットする。
【０３４１】
ノルム情報入力部２６３は、ノルム情報が前段ユニットからノルム比較バス４１を介して入力されたことに応じて、ユニットビジーフラグ記憶部２６０のビジーフラグをセットし、前段接続数カウンタ部２８０に記憶されている前段接続数カウンタの値（ｔ）をカウントアップし、また、入力したノルム情報を入力ノルム抽出部２７０と入力ネットワーク座標抽出部２７２とに出力する。
【０３４２】
入力ノルム抽出部２７０は、ノルム情報がノルム情報入力部２６３から入力されたことに応じて、入力されたノルム情報からノルムを抽出し、該抽出したノルムを入力ノルムとして入力ノルム記憶部２７１に記憶する。入力ネットワーク座標抽出部２７２は、ノルム情報がノルム情報入力部２６３から入力されたことに応じて、入力されたノルム情報からネットワーク座標を抽出し、該抽出したネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部２７３に記憶する。
【０３４３】
勝者ノルム判定部２７４は、抽出したノルムを入力ノルム抽出部２７０が入力ノルム記憶部２７１に記憶したことに応じて、入力ノルム記憶部２７１から読み出した入力ノルムと、勝者ノルム記憶部２７６から読み出した勝者ノルムとを比較し、比較した結果を勝者情報として、勝者ノルム・勝者ネットワーク座標セット部２７５に出力する。
【０３４４】
勝者ノルム・勝者ネットワーク座標セット部２７５は、勝者ノルム判定部２７４から入力した勝者情報が、入力ノルムが勝者ノルムより小さいことを示す場合には、入力ノルム記憶部２７１から読み出した入力ノルムを勝者ノルムとして勝者ノルム記憶部２７６に記憶してセットするとともに、入力ネットワーク座標記憶部２７３から読み出した入力ネットワーク座標を勝者ネットワーク座標として勝者ネットワーク座標記憶部２７７に記憶してセットする。
【０３４５】
また、勝者ノルム・勝者ネットワーク座標セット部２７５は、勝者ノルム判定部２７４から入力した勝者情報による勝者ノルム・勝者ネットワーク座標セット部２７５の処理が終了したことに応じて、勝者ノルム判定部２７４から入力した勝者情報による勝者ノルム・勝者ネットワーク座標セット部２７５の処理が終了したことを示す信号を前段接続数比較部２７８に出力する。
【０３４６】
前段接続数記憶部２７９には、自ユニットが接続される前段ユニットの総数である前段接続数の値（ｉｎ）が、予め記憶されている。前段接続数比較部２７８は、勝者ノルム判定部２７４から入力した勝者情報による勝者ノルム・勝者ネットワーク座標セット部２７５の処理が終了したことを示す信号を入力することに応じて、前段接続数カウンタ部から読み出した前段接続数カウンタの値（ｔ）と、前段接続数記憶部２７９から読み出した前段接続数の値（ｉｎ）とを、比較する。また、前段接続数比較部２７８は、比較した結果が、前段接続数カウンタの値（ｔ）と前段接続数の値（ｉｎ）とが一致しない場合には、ユニットビジーフラグ記憶部２６０のビジーフラグをリセットする。
【０３４７】
前段接続数カウンタリセット部２８１は、前段接続数比較部２７８の比較した結果が、前段接続数カウンタの値（ｔ）と前段接続数の値（ｉｎ）とが一致することに応じて、前段接続数カウンタ部２８０に記憶されている前段接続数カウンタの値（ｔ）を０にリセットする。ユニットビジーフラグセット部２８２は、前段接続数カウンタリセット部２８１が前段接続数カウンタ部２８０に記憶されている前段接続数カウンタの値（ｔ）を０にリセットしたことに応じて、ユニットビジーフラグ記憶部２６０のユニットビジーフラグをセットする。
【０３４８】
ビジーフラグ判定部２６１は、ユニットビジーフラグセット部２８２がユニットビジーフラグ記憶部２６０のユニットビジーフラグをセットしたことに応じて、後段ユニットのビジーフラグ記憶部２６０からユニットビジーフラグバス４２を介してビジーフラグを後段ビジーフラグとして読み出して判定することにより、後段ビジーフラグが立っているか否かを判定し、判定結果をノルム情報出力部２６２に出力する。
【０３４９】
ノルム情報出力部２６２は、ビジーフラグ判定部２６１から入力した判定結果が、後段ビジーフラグが立っていないことを示すことに応じて、勝者ノルム記憶部２７６から読み出した勝者ノルムと、勝者ネットワーク座標記憶部２７７から読み出した勝者ネットワーク座標とを、ノルム情報として後段ユニットにノルム比較バス４１を介して出力する。また、ノルム情報出力部２６２は、ビジーフラグ判定部２６１から入力した判定結果が、後段ビジーフラグが立っていないことを示すことに応じて、勝者ノルム記憶部２７６に予め定められた負値の値であるノルムを記憶することによりリセットするとともに、勝者ネットワーク座標記憶部２７７に記憶されている勝者ネットワーク座標をリセットする。
【０３５０】
＜第５の実施形態におけるユニットの動作＞
次に、図３５を用いて、図３２で説明した制御データのプロトコルを受信した場合の、ユニットの動作、特に、ユニットのユニット制御部２１６Ｂの動作について説明する。なお、説明の簡略のために、以降においては制御コードＡの値を用いて説明する。
【０３５１】
なお、この図３５の第５の実施形態におけるユニット制御部２１６Ｂの動作において、図２４の第４の実施形態におけるユニット制御部２１６Ｂの動作と同一の動作については、同一のステップ番号を付け、その説明を省略する。ここでは、図３５の第５の実施形態におけるユニット制御部２１６Ｂの動作において、図２４の第４の実施形態におけるユニット制御部２１６Ｂの動作と異なる動作についてのみ説明する。
【０３５２】
ステップＳ２４０２で、読み出した制御コードの値が“１１”である場合には、ユニット制御部２１６Ｂは、上記に説明した選択処理１１を実行し（ステップＳ２４１３）、処理を終了する。つまり、図３５の第５の実施形態におけるユニット制御部２１６Ｂの動作には、図２４の第４の実施形態におけるユニット制御部２１６Ｂの動作に対して、ステップＳ２４０２の次に、読み出した制御コードの値が“１１”である場合の動作であるステップＳ２４１３が追加されている点が異なる。
【０３５３】
次に、図３６を用いて第５の実施形態におけるユニットの動作について説明する。なお、葉ユニットと、幹ユニットまたは根ユニットとでは、図３３と図３４とを用いて示したように、ユニットの構成が異なるので、葉ユニットと、幹ユニットまたは根ユニットとに分けて、ユニットの動作について説明する。
【０３５４】
＜葉ユニットの動作＞
まず、図３６（ａ）を用いて、葉ユニットの動作を説明する。
ユニット制御部２１６Ｂが、制御コードの値が“１１”の処理を実行することを判定した場合には、まず、ビジーフラグ判定部２６１が、後段ユニットのビジーフラグ記憶部２６０からユニットビジーフラグバス４２を介してビジーフラグを後段ビジーフラグとして読み出して判定することにより、後段ビジーフラグが立っているか否かを判定する（ステップＳ３６０１）。ステップＳ３６０１の判定結果が、後段ビジーフラグが立っている場合には、後段ビジーフラグが立つまでステップＳ３６０１からの処理を繰り返す。
【０３５５】
一方、ステップＳ３６０１の判定結果が、後段ビジーフラグが立っていない場合には、ノルム情報出力部２６２が、ユニットノルム記憶部２３６Ａから読み出したユニットノルムと、ユニットネットワーク座標記憶部２３４Ａから読み出したユニットネットワーク座標とを、ノルム情報として後段ユニットにノルム比較バス４１を介して出力し（ステップＳ３６１０２）、処理を戻す。
【０３５６】
＜幹ユニットまたは根ユニットの動作＞
次に、図３６（ｂ）を用いて、幹ユニットまたは根ユニットの動作を説明する。
ユニット制御部２１６Ｂが、制御コードの値が“１１”の処理を実行することを判定した場合には、ユニット制御部２１６Ｂが、ユニットビジーフラグ記憶部２６０のビジーフラグをリセットする。次に、制御コードの値が“１１”の処理を実行することを判定したことに応じて、勝者ノルム・ネットワーク座標初期セット部２８４が、ユニットノルム記憶部２３６Ａから読み出したユニットノルムを勝者ノルムとして勝者ノルム記憶部２７６に記憶してセットするとともに、ユニットネットワーク座標記憶部２３４Ａから読み出したユニットネットワーク座標を勝者ネットワーク座標として勝者ネットワーク座標記憶部２７７に記憶してセットする（ステップＳ３６２０１）。その後、ノルム情報入力部２６３が、ノルム情報が前段ユニットから入力されるのを待機する。
【０３５７】
次に、ノルム情報入力部２６３に、ノルム情報が前段ユニットからノルム比較バス４１を介して入力したことに応じて（ステップＳ３６２０２）、ノルム情報入力部２６３が、ユニットビジーフラグ記憶部２６０のビジーフラグをセットする。また、ノルム情報入力部２６３が、前段接続数カウンタ部２８０に記憶されている前段接続数カウンタの値（ｔ）をカウントアップする（ステップＳ３６２０３）とともに、ノルム情報入力部２６３が、入力したノルム情報を入力ノルム抽出部２７０と入力ネットワーク座標抽出部２７２に出力する。
【０３５８】
次に、ノルム情報が入力された入力ノルム抽出部２７０が、入力されたノルム情報からノルムを抽出し、該抽出したノルムを入力ノルムとして入力ノルム記憶部２７１に記憶する。また、ノルム情報が入力された入力ネットワーク座標抽出部２７２が、入力されたノルム情報からネットワーク座標を抽出し、該抽出したネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部２７３に記憶する。
【０３５９】
次に、入力ノルム抽出部２７０が抽出したノルムを入力ノルム記憶部２７１に記憶したことに応じて、勝者ノルム判定部２７４が、入力ノルム記憶部２７１から読み出した入力ノルムと、勝者ノルム記憶部２７６から読み出した勝者ノルムとを、比較する（ステップＳ３６２０４）。
【０３６０】
ステップＳ３６２０４で比較した結果が、入力ノルムが勝者ノルムより小さい場合には、勝者ノルム・勝者ネットワーク座標セット部２７５が、入力ノルム記憶部２７１から読み出した入力ノルムを勝者ノルムとして勝者ノルム記憶部２７６に記憶してセットするとともに、入力ネットワーク座標記憶部２７３から読み出した入力ネットワーク座標を勝者ネットワーク座標として勝者ネットワーク座標記憶部２７７に記憶してセットする（ステップＳ３６２０５）。
【０３６１】
一方、ステップＳ３６２０４で比較した結果が、入力ノルムが勝者ノルムより小さくない場合には、または、ステップＳ３６２０５の次には、つまり、勝者ノルム判定部２７４から入力した比較結果である勝者情報を入力したことによる処理を勝者ノルム・勝者ネットワーク座標セット部２７５が実行したことに応じて、前段接続数比較部２７８が、前段接続数カウンタ部から読み出した前段接続数カウンタの値（ｔ）と、前段接続数記憶部２７９から読み出した前段接続数の値（ｉｎ）とを、比較する（ステップＳ３６２０６）。
【０３６２】
ステップＳ３６２０６で比較した結果が、前段接続数カウンタの値（ｔ）と前段接続数の値（ｉｎ）とが一致しない場合には、前段接続数比較部２７８が、ユニットビジーフラグ記憶部２６０のビジーフラグをリセットし、ステップＳ３６２０２からの処理を繰り返させる。一方、ステップＳ３６２０６で比較した結果が、前段接続数カウンタの値（ｔ）と前段接続数の値（ｉｎ）とが一致する場合には、前段接続数カウンタリセット部２８１が、前段接続数カウンタ部２８０に記憶されている前段接続数カウンタの値（ｔ）を０にリセットする（ステップＳ３６２０７）。
【０３６３】
次に、ユニットビジーフラグセット部２８２が、ユニットビジーフラグ記憶部２６０のユニットビジーフラグをセットする。次に、ビジーフラグ判定部２６１が、後段ユニットのビジーフラグ記憶部２６０からユニットビジーフラグバス４２を介してビジーフラグを後段ビジーフラグとして読み出して判定することにより、後段ビジーフラグが立っているか否かを判定する（ステップＳ３６２０１）。ステップＳ３６２０８の判定結果が、後段ビジーフラグが立っている場合には、後段ビジーフラグが立つまで、ステップＳ３６２０８からの処理を繰り返す。
【０３６４】
一方、ステップＳ３６２０８の判定結果が、後段ビジーフラグが立っていない場合には、ノルム情報出力部２６２が、勝者ノルム記憶部２７６から読み出した勝者ノルムと、勝者ネットワーク座標記憶部２７７から読み出した勝者ネットワーク座標とを、ノルム情報として後段ユニットにノルム比較バス４１を介して出力し（ステップＳ３６２０９）、処理を戻す。また、ステップＳ３６２０８の判定結果が、後段ビジーフラグが立っていない場合には、ノルム情報出力部２６２が、勝者ノルム記憶部２７６に予め定められた負値の値であるノルムを記憶することによりリセットするとともに、勝者ネットワーク座標記憶部２７７に記憶されている勝者ネットワーク座標をリセットする。
【０３６５】
＜第５の実施形態における並列演算装置の動作（分配制御部８の動作）＞
次に、図３７を用いて、第５の実施形態における並列演算装置の動作、つまり、第２の基本構成による並列演算装置を自己組織化マップに適応した場合の並列演算装置の動作について説明する。なお、ここでは、図２２から図２６を用いて説明した第４の実施形態における並列演算装置の動作について、追加または変更される部分のみについて説明する。
【０３６６】
図２６の分配制御部８の動作から図３７の分配制御部８の動作について、変更される動作のステップは、図２６（ａ）を用いて説明した競合学習の処理であり、より詳細には、図２６の分配制御部８のステップＳ２５０３０６からステップＳ２５０３１０が、図３７の分配制御部８のステップＳ２５０３１２からステップＳ２５０３１３に、変更される。
【０３６７】
このステップＳ２５０３１２で、分配制御部８は、制御コードＡの値を“１１”とした制御データを各ユニットに出力する。次に、ステップＳ２５０３１３で、分配制御部８は、根ユニットがノルム比較バス４１を介して出力したノルム情報に含まれるユニットネットワーク座標を、ノルム最小ユニットネットワーク座標ｊｍｉｎとして入力する。
【０３６８】
第４の実施形態による分配制御部８は、ステップＳ２５０３０６からステップＳ２５０３１０により、分配制御部８が、全てのユニットから順にノルムを入力して、分配制御部８が、入力された全てのユニットの中からノルムが最小となるノルムのユニットネットワーク座標を選択していたのに対して、第５の実施形態による分配制御部８は、制御コードＡの値を“１１”とした制御データを各ユニットに出力し、根ユニットから出力されるユニットネットワーク座標を入力するだけでよい。
従って、第４の実施形態による分配制御部８での処理に対して第５の実施形態による分配制御部８での処理は簡易となるとともに、ノルムの比較が各ユニットにより並列的に実行されるために、比較が早くなるという効果を奏する。
【０３６９】
＜ユニットの配置の第２例＞
次に、図３８を用いて、ユニットを２次元平面に配置した場合に、上記に説明したトーナメント方式により、最小となるユニットを選択する方法の第２例目について説明する。この図３８において、根ユニットはＵ（７，５）であり、葉ユニットは、色を付けてあるユニットであり、幹ユニットは無地のユニットであり、また、比較の順序は、図中の矢印に沿って順に実行される。図３８におけるユニットにおけるノルムの比較は、図２９におけるユニットにおけるノルムの比較と、ほぼ同様である。
【０３７０】
ただし、図２９を用いて説明したユニットの配置と比較の順序においては、１つのユニットに対して、ほぼ同時となるタイミングではノルムが入力されないように、比較の順序が予め設定されていた。これに対して、図３８に例示するユニットの配置と比較の順序においては、１つのユニットに対して、ほぼ同時のタイミングで、ノルムが入力されるユニットもあるようにして、比較の順序が予め設定されている。
【０３７１】
一般に、１つのユニットに対して、ほぼ同時のタイミングでノルムが入力されることも可能とすることにより、比較の順序の回数が少なくなるような順序を設定することが可能となるために、ユニット全体でノルムを比較するのに要する時間を短縮することが可能である。
【０３７２】
＜ユニットの構成の変更点＞
ほぼ同時のタイミングでノルムが入力されることも可能とするために、図３３から図３７を用いて説明した葉ユニット、または、幹ユニットと根ユニットにおいて、ユニットの構成において変更される構成と、その動作についてのみ説明する。
まず、葉ユニットの構成においては、変更点はなく、同一である。また、葉ユニットの動作は、図３９（ａ）に示すように、図３６（ａ）と同一である。
【０３７３】
次に、幹ユニットまたは根ユニットにおいては、入力されるノルム情報を、前段接続数カウンタの値（ｔ）と関連付けて記憶しておき、前段接続数カウンタの値（ｔ）に基いて、順に読み出して比較することにより、ほぼ同時のタイミングでノルムが入力されることも可能とする。
【０３７４】
幹ユニットまたは根ユニットの構成において、変更がある構成のみについて説明する。入力ノルム抽出部２７０は、ノルム情報がノルム情報入力部２６３から入力されたことに応じて、入力されたノルム情報からノルムを抽出し、該抽出したノルムを入力ノルムとして、前段接続数カウンタ部２８０から読み出した前段接続数カウンタの値（ｔ）と関連付けて、入力ノルム記憶部２７１に記憶する。
【０３７５】
入力ネットワーク座標抽出部２７２は、ノルム情報がノルム情報入力部２６３から入力されたことに応じて、入力されたノルム情報からネットワーク座標を抽出し、該抽出したネットワーク座標を、前段接続数カウンタ部２８０から読み出した前段接続数カウンタの値（ｔ）と関連付けて、入力ネットワーク座標として入力ネットワーク座標記憶部２７３に記憶する。
【０３７６】
勝者ノルム判定部２７４は、抽出したノルムを入力ノルム抽出部２７０が入力ノルム記憶部２７１に記憶したことに応じて、または、前段接続数比較部２７８の比較した結果が、前段接続数カウンタの値（ｔ）と前段接続数の値（ｉｎ）とが一致しないことに応じて、前段接続数カウンタ部２８０から読み出した前段接続数カウンタの値（ｔ）に該当する入力ノルムを入力ノルム記憶部２７１から読み出し、該読み出した入力ノルムと、勝者ノルム記憶部２７６から読み出した勝者ノルムとを比較し、比較した結果を勝者情報として、勝者ノルム・勝者ネットワーク座標セット部２７５に出力する。
【０３７７】
＜幹ユニットまたは根ユニットの動作の変更点＞
次に、図３９（ｂ）を用いて、幹ユニットまたは根ユニットの動作を説明する。なお、図３６（ｂ）のステップＳ３６２０１からステップＳ３６２０９と、図３９（ｂ）のステップＳ３９２０１からステップＳ３９２０９とが、それぞれ対応する。ここでは、図３６（ｂ）のステップの処理と、図３９（ｂ）のステップの処理とにおいて、異なる処理を中心に説明する。
【０３７８】
ユニット制御部２１６Ｂが、制御コードの値が“１１”の処理を実行することを判定した場合には、ユニット制御部２１６Ｂが、ユニットビジーフラグ記憶部２６０のビジーフラグをリセットする。次に、制御コードの値が“１１”の処理を実行することを判定したことに応じて、勝者ノルム・ネットワーク座標初期セット部２８４が、ユニットノルム記憶部２３６Ａから読み出したユニットノルムを勝者ノルムとして勝者ノルム記憶部２７６に記憶してセットするとともに、ユニットネットワーク座標記憶部２３４Ａから読み出したユニットネットワーク座標を勝者ネットワーク座標として勝者ネットワーク座標記憶部２７７に記憶してセットする（ステップＳ３９２０１）。その後、ノルム情報入力部２６３が、ノルム情報が前段ユニットから入力されるのを待機する。
【０３７９】
次に、ノルム情報入力部２６３に、ノルム情報が前段ユニットからノルム比較バス４１を介して入力したことに応じて（ステップＳ３９２０２）、ノルム情報入力部２６３が、ユニットビジーフラグ記憶部２６０のビジーフラグをセットする。また、ノルム情報入力部２６３が、前段接続数カウンタ部２８０に記憶されている前段接続数カウンタの値（ｔ）をカウントアップする（ステップＳ３９２０３）とともに、ノルム情報入力部２６３が、入力したノルム情報を入力ノルム抽出部２７０と入力ネットワーク座標抽出部２７２に出力する。
【０３８０】
次に、ノルム情報が入力された入力ノルム抽出部２７０が、入力されたノルム情報からノルムを抽出し、該抽出したノルムを入力ノルムとして、前段接続数カウンタ部２８０から読み出した前段接続数カウンタの値（ｔ）と関連付けて、入力ノルム記憶部２７１に記憶する。また、ノルム情報が入力された入力ネットワーク座標抽出部２７２が、入力されたノルム情報からネットワーク座標を抽出し、該抽出したネットワーク座標を入力ネットワーク座標として、前段接続数カウンタ部２８０から読み出した前段接続数カウンタの値（ｔ）と関連付けて、入力ネットワーク座標記憶部２７３に記憶する。
【０３８１】
次に、入力ノルム抽出部２７０が抽出したノルムを入力ノルム記憶部２７１に記憶したことに応じて、勝者ノルム判定部２７４が、前段接続数カウンタ部２８０から読み出した前段接続数カウンタの値（ｔ）に該当する入力ノルムを入力ノルム記憶部２７１から読み出し、該読み出した入力ノルムと、勝者ノルム記憶部２７６から読み出した勝者ノルムとを、比較する（ステップＳ３９２０４）。
【０３８２】
ステップＳ３９２０４で比較した結果が、入力ノルムが勝者ノルムより小さい場合には、勝者ノルム・勝者ネットワーク座標セット部２７５が、入力ノルム記憶部２７１から読み出した入力ノルムを勝者ノルムとして勝者ノルム記憶部２７６に記憶してセットするとともに、入力ネットワーク座標記憶部２７３から読み出した入力ネットワーク座標を勝者ネットワーク座標として勝者ネットワーク座標記憶部２７７に記憶してセットする（ステップＳ３９２０５）。
【０３８３】
一方、ステップＳ３９２０４で比較した結果が、入力ノルムが勝者ノルムより小さくない場合には、または、ステップＳ３９２０５の次には、つまり、勝者ノルム判定部２７４から入力した比較結果である勝者情報を入力したことによる処理を勝者ノルム・勝者ネットワーク座標セット部２７５が実行したことに応じて、前段接続数比較部２７８が、前段接続数カウンタ部から読み出した前段接続数カウンタの値（ｔ）と、前段接続数記憶部２７９から読み出した前段接続数の値（ｉｎ）とを、比較する（ステップＳ３９２０６）。
【０３８４】
ステップＳ３９２０６で比較した結果が、前段接続数カウンタの値（ｔ）と前段接続数の値（ｉｎ）とが一致しない場合には、前段接続数比較部２７８が、ユニットビジーフラグ記憶部２６０のビジーフラグをリセットし、ステップＳ３９２０３からの処理を繰り返させる。一方、ステップＳ３９２０６で比較した結果が、前段接続数カウンタの値（ｔ）と前段接続数の値（ｉｎ）とが一致する場合には、前段接続数カウンタリセット部２８１が、前段接続数カウンタ部２８０に記憶されている前段接続数カウンタの値（ｔ）を０にリセットする（ステップＳ３９２０７）。
【０３８５】
以降の処理においては、図３６（ｂ）のステップの処理と、図３９（ｂ）のステップの処理とは、同一であるため、その説明を省略する。
【０３８６】
なお、上記実施形態の各図で示した構成である記憶部のそれぞれは、ハードディスク装置や光磁気ディスク装置、フラッシュメモリ等の不揮発性のメモリや、ＣＲ−ＲＯＭ等の読み出しのみが可能な記憶媒体、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような揮発性のメモリ、あるいはこれらの組み合わせにより構成されるものとする。
なお、図２の図１５のユニット算出部、または、図１６の分配制御部８は、専用のハードウェアにより実現されるものであってもよく、また、メモリおよびマイクロプロセッサにより実現させるものであってもよい。
【０３８７】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【０３８８】
【図１】この発明の一実施形態による並列演算装置の構成を示すブロック図である。
【図２】この発明の一実施形態による並列演算装置のユニットの構成を示すブロック図である。
【図３】階層型ニューラルネットワークにおける図２のユニットの構成を示すブロック図である。
【図４】図３のユニットの動作を示す第１のフローチャート図である。
【図５】図３のユニットの動作を示す第２のフローチャート図である。
【図６】ニューラルネットワークを説明する説明図である。
【図７】自己組織化マップにおける図２のユニットの構成を示す第１のブロック図である。
【図８】自己組織化マップにおける図２のユニットの構成を示す第２のブロック図である。
【図９】自己組織化マップにおけるデータ構造を示す説明図である。
【図１０】図７および図８のユニットの動作を示す第１のフローチャート図である。
【図１１】図７および図８のユニットの動作を示す第２のフローチャート図である。
【図１２】冗長回路を有した並列演算装置の構成を示すブロック図である。
【図１３】図１２のユニットの構成を示すブロック図である。
【図１４】第２の基本構成による並列演算装置の構成を示すブロック図である。
【図１５】図１４のユニットの構成を示すブロック図である。
【図１６】図１４の分配制御部８の構成を示すブロック図である。
【図１７】階層型ニューラルネットワークにおける図１４のユニットの構成を示すブロック図である。
【図１８】図１４の階層型ニューラルネットワークにおけるプロトコル表である。
【図１９】図１４の各ユニットの動作を説明するフローチャートである。
【図２０】図１４の分配制御部８の動作を説明するフローチャートその１である。
【図２１】図１４の分配制御部８の動作を説明するフローチャートその２である。
【図２２】自己組織化マップにおける図１４のユニットの構成を示すブロック図である。
【図２３】図２２の自己組織化マップにおけるプロトコル表である。
【図２４】図２２の各ユニットの動作を説明するフローチャートである。
【図２５】図２２の分配制御部８の動作を説明するフローチャートその１である。
【図２６】図２２の分配制御部８の動作を説明するフローチャートその２である。
【図２７】図１４の並列演算装置を分離構成とした場合の並列演算装置の構成を示すブロック図である。
【図２８】トーナメント方式の説明図である。
【図２９】ノルムの比較において、ユニットにノルムの同時入力のない場合の比較順序を説明する一例としての比較順序図である。
【図３０】トーナメント方式を用いた場合のユニットの接続図その１である。
【図３１】トーナメント方式を用いた場合のユニットの接続図その２である。
【図３２】第５の実施形態による自己組織化マップにおけるプロトコル表である。
【図３３】第５の実施形態による葉ユニットの構成を示すブロック図である。
【図３４】第５の実施形態による幹ユニットまたは根ユニットの構成を示すブロック図である。
【図３５】第５の実施形態による各ユニットの動作を説明するフローチャートである。
【図３６】第５の実施形態によるユニットの動作を説明するフローチャートである。
【図３７】第５の実施形態による分配制御部８の動作を説明するフローチャートである。
【図３８】ノルムの比較において、ユニットにノルムの同時入力のある場合の比較順序を説明する一例としての比較順序図である。
【図３９】ユニットにノルムの同時入力のある場合における、第５の実施形態によるユニットの動作を説明するフローチャートである。
【符号の説明】
【０３８９】
１  デイジーチェーン制御バス
２  ユニット出力バス
３  ユニット入力バス
４  増幅器
５  トリガ入力線
６  第１の冗長デイジーチェーン制御バス
７  第２の冗長デイジーチェーン制御バス
１１、１０１、２０１、１１Ａ、１０１Ａ、２０１Ａ  データ入力部
１２、Ａ１２、Ｂ１２、１０２、２０２  トークン入力部
１３、Ａ１３、Ｂ１３、１０３、２０３  トークン出力部
１４、１０４、２０４、１４Ａ、１０４Ａ、２０４Ａ  データ出力部
１６、１６Ａ  ユニット出力記憶部
１７  トークン出力部選択部
１８  トークン選択情報記憶部
３３  制御データ出力部
１０１Ａ、２０１Ａ  データ入力部
１０４Ａ、２０４Ａ  データ出力部
１５０Ｂ、２５０Ｂ  ファンクション番号抽出部
１５１Ｂ、２５１Ｂ  ファンクション番号記憶部
１５２Ｂ、２５２Ｂ  オペランド抽出部
１５３Ｂ、２５３Ｂ  汎用バッファー記憶部
１１１、１１１Ａ  積和計算一次値算出部
１１２、１１２Ａ  ユニット出力算出部
１１３  層情報算出部
１１４  カウンタ
１３０、２３１、２３１Ａ  重み記憶部
１３１  積和計算一次値記憶部
１３２  関数記憶部
１３３  層情報記憶部
１３４  ユニット数記憶部
１３５、１３５Ａ  ユニット出力記憶部
１３６  データ出力フラグ記憶部
１３７  ユニット識別情報記憶部
１３８Ｂ  前段ユニット出力記憶部
２１０  データ抽出部
２１１  ネットワーク座標抽出部
２１２  ノルム抽出部
２１３  カウンタ
２１４、２１４Ａ  ノルム算出部
２１５、２１５Ａ  近傍判定部
２１６、２１６Ａ  重み更新部
２１７  ノルム比較部
２１８  入力ノルム判定部
２１９  ネットワーク座標選択部
２２０  ノルム選択部
２２１  データ合成出力部
２２２  データ入力判定部
２２３  トークン出力フラグ判定部
２３０、２３０Ａ  入力データ記憶部
２３２、２３２Ａ  距離記憶部
２３３、２３３Ａ  入力ネットワーク座標記憶部
２３４、２３４Ａ  ユニットネットワーク座標記憶部
２３５、２３５Ａ  学習速度記憶部
２３６、２３６Ａ  ユニットノルム記憶部
２３７  入力ノルム記憶部
２３８  トークン出力フラグ記憶部
２５０  入力ノルム部
２５１  選択出力部
２６０  ビジーフラグ記憶部
２６１  ビジーフラグ判定部
２６２  ノルム情報出力部
２６３  ノルム情報入力部
２７０  入力ノルム抽出部
２７１  入力ノルム記憶部
２７２  入力ネットワーク座標抽出部
２７３  入力ネットワーク座標記憶部
２７４  勝者ノルム判定部
２７５  勝者ノルム・勝者ネットワーク座標セット部
２７６  勝者ノルム記憶部
２７７  勝者ネットワーク座標記憶部
２７８  前段接続数比較部
２７９  前段接続数記憶部
２８０  前段接続数カウンタ部
２８１  前段接続数カウンタリセット部
２８２  ユニットビジーフラグセット部
Ｌ１  入力層
Ｌ２  隠れ層
Ｌ３  出力層
Ｐ１  出力端子
Ｐ２  入力端子
Ｐ３  トリガ入力端子
Ｕ１、Ｕ２、Ｕ３、Ｕ４、Ｕ５、Ｕ６、Ｕ７、Ｕ８、Ｕ９、Ｕ１０、ＡＵ１、ＡＵ２、ＡＵ３、ＡＵ４、ＡＵ５、ＡＵ６、ＡＵ７、ＡＵ８、ＡＵ９、ＡＵ１０  ユニット
【図１】
2009075765.tif 000003
【図２】
2009075765.tif 000004
【図３】
2009075765.tif 000005
【図４】
2009075765.tif 000006
【図５】
2009075765.tif 000007
【図６】
2009075765.tif 000008
【図７】
2009075765.tif 000009
【図８】
2009075765.tif 000010
【図９】
2009075765.tif 000011
【図１０】
2009075765.tif 000012
【図１１】
2009075765.tif 000013
【図１２】
2009075765.tif 000014
【図１３】
2009075765.tif 000015
【図１４】
2009075765.tif 000016
【図１５】
2009075765.tif 000017
【図１６】
2009075765.tif 000018
【図１７】
2009075765.tif 000019
【図１８】
2009075765.tif 000020
【図１９】
2009075765.tif 000021
【図２０】
2009075765.tif 000022
【図２１】
2009075765.tif 000023
【図２２】
2009075765.tif 000024
【図２３】
2009075765.tif 000025
【図２４】
2009075765.tif 000026
【図２５】
2009075765.tif 000027
【図２６】
2009075765.tif 000028
【図２７】
2009075765.tif 000029
【図２８】
2009075765.tif 000030
【図２９】
2009075765.tif 000031
【図３０】
2009075765.tif 000032
【図３１】
2009075765.tif 000033
【図３２】
2009075765.tif 000034
【図３３】
2009075765.tif 000035
【図３４】
2009075765.tif 000036
【図３５】
2009075765.tif 000037
【図３６】
2009075765.tif 000038
【図３７】
2009075765.tif 000039
【図３８】
2009075765.tif 000040
【図３９】
2009075765.tif 000041