(57)【要約】【課題】複数の演算ユニット間の配線を簡易にすることを可能とする並列演算装置および並列演算方法を提供する。【解決手段】並列演算装置が、予め定められた順序でデイジーチェーン制御バスを介してデイジーチェーンされている複数のユニットと、複数のユニットの内のいずれか１つが出力する出力値がユニット出力バスを介して入力され、該入力された出力値を複数のユニットのそれぞれにユニット入力バスを介して入力値として出力する増幅器と、を有する。このユニットは、ユニット出力バスを介して入力される増幅器からの入力値に基づいて、ユニット毎に予め定められた演算方法により演算し、また、トークンが前のユニットからデイジーチェーン制御バスを介して入力されたことに応じて、トークンを次のユニットにデイジーチェーン制御バスを介して出力すると共に、演算した結果を出力値として増幅器にユニット出力バスを介して出力する。【選択図】図１
2008299381.tif 000002
【特許請求の範囲】
【請求項１】
並列演算装置が、
予め定められた順序でデイジーチェーン制御バスを介してデイジーチェーンされている複数のユニットと、
前記複数のユニットの内のいずれか１つが出力する出力値がユニット出力バスを介して入力され、該入力された出力値を前記複数のユニットのそれぞれにユニット入力バスを介して入力値として出力する中継部と、
を有し、
前記ユニットが、
前記デイジーチェーン制御バスを介してデイジーチェーンされている順序が１つ前のユニットからのトークンを入力するトークン入力部と、
前記トークン入力部にトークンが入力されたことに応じて、前記トークンを前記デイジーチェーンされている順序が１つ後のユニットへ前記デイジーチェーン制御バスを介して出力するトークン出力部と、
前記ユニット出力バスを介して前記中継部からの入力値を入力するデータ入力部と、
前記データ入力部に入力された入力値に基づいて、前記ユニット毎に予め定められた演算方法により演算するユニット演算部と、
前記トークン入力部にトークンが入力されたことに応じて、前記ユニット演算部が演算した結果である演算結果を前記出力値として、前記中継部に前記ユニット出力バスを介して出力するデータ出力部と、
を有することを特徴とする並列演算装置。
【請求項２】
前記ユニットが、前記演算結果が記憶されるユニット出力記憶部を有し、
前記ユニット演算部が、前記演算結果を前記ユニット出力記憶部に記憶させ、
前記データ出力部が、前記トークン入力部にトークンが入力されたことに応じて、前記演算結果を前記ユニット出力記憶部から読み出し、該読み出した演算結果を前記出力値として前記中継部に前記ユニット出力バスを介して出力する、
ことを特徴とする請求項１に記載の並列演算装置。
【請求項３】
前記並列演算装置が階層型ニューラルネットワークを演算する並列演算装置である場合には、
前記ユニット演算部が、
前記階層型ニューラルネットワークの階層のうち、出力する層を識別する層情報が記憶されている層情報記憶部と、
前記ユニットの出力関数と前記層情報とが関連付けて予め記憶されている関数記憶部と、
前記層情報で識別される前記出力層のユニットからの出力値に乗ずる予め定められた結合荷重と、前記層情報とが関連付けて記憶されている重み記憶部と、
前記出力ユニットからの入力値と結合荷重とを乗じた積和計算一次値情報が記憶される積和計算一次値記憶部と、
前記層情報記憶部から読み出した層情報に該当する結合荷重を前記重み記憶部から読み出し、該読み出した結合荷重と、前記データ入力部に入力された入力値とを乗算し、該乗算した値を前記積和計算一次値記憶部に記憶されている積和計算一次値情報に加算して記憶させる積和計算一次値算出部と、
前記積和計算一次値記憶部から積和計算一次値情報を読み出し、前記層情報記憶部から読み出した層情報に該当する出力関数を前記関数記憶部から読み出し、該読み出した出力関数に前記読み出した積和計算一次値情報を代入することにより出力値を算出し、該算出した出力値を前記ユニット出力記憶部に記憶させるユニット出力算出部と、
を有することを特徴とする請求項２に記載の並列演算装置。
【請求項４】
前記ユニット演算部が、前記出力層に属しているユニットのうち、いずれのユニットが出力ユニットとして出力しているかを示すユニット識別情報が記憶されているユニット識別情報記憶部、を有し、
前記重み記憶部には、前記層情報と前記ユニット識別情報とで識別される前記出力層のユニットからの出力値に乗ずる予め定められた結合荷重と、前記層情報と前記ユニット識別情報とが、関連付けて記憶されており、
前記積和計算一次値算出部が、前記ユニット識別情報記憶部から読み出したユニット識別情報と前記層情報記憶部から読み出した層情報とに該当する結合荷重を前記重み記憶部から読み出し、該読み出した結合荷重と、前記データ入力部に入力された入力値とを乗算し、該乗算した値を前記積和計算一次値記憶部に記憶されている積和計算一次値情報に加算して記憶させる、
ことを特徴とする請求項３に記載の並列演算装置。
【請求項５】
前記ユニット演算部が、
前記データ入力部に入力値が入力される毎に、前記ユニット識別情報記憶部に記憶されているユニット識別情報の値をインクリメントするカウンタと、
前記層情報と前記層情報で識別される階層に属する階層型ニューラルネットワークのユニット数とが関連付けて予め記憶されているユニット数記憶部と、
前記層情報記憶部から層情報を読み出し、該読み出した層情報に該当するユニット数を前記ユニット数記憶部から読み出し、前記ユニット識別情報記憶部からユニット識別情報を読み出し、該読み出したユニット識別情報の値と前記読み出したユニット数とを比較し、該比較した結果が一致した場合に、該読み出したユニット識別情報の値と前記読み出したユニット数とが一致したことを示す比較一致信号を出力するユニット数比較部と、
を有し、
前記ユニット出力算出部が、前記ユニット数比較部から比較一致信号を入力されたことに応じて、前記積和計算一次値算出部から積和計算一次値情報を読み出し、前記層情報記憶部から読み出した層情報に該当する出力関数を前記関数記憶部から読み出し、該読み出した出力関数に前記読み出した積和計算一次値情報を代入することにより出力値を算出し、該算出した出力値を前記ユニット出力記憶部に記憶させる、
ことを特徴とする請求項４に記載の並列演算装置。
【請求項６】
前記ユニット数比較部が、前記比較した結果が一致した場合に、前記ユニット識別情報記憶部に記憶されているユニット識別情報の値をリセットする、ことを特徴とする請求項５に記載の並列演算装置。
【請求項７】
前記ユニット演算部が、前記ユニット数比較部から比較一致信号を入力されたことに応じて、前記層情報記憶部に記憶されている層情報の値をインクリメントする層情報算出部、を有することを特徴とする請求項５または請求項６に記載の並列演算装置。
【請求項８】
前記ユニット演算部が、前記データ出力部が前記出力値を出力済みであるか否かを示すデータ出力フラグが記憶されているデータ出力フラグ記憶部を有し、
前記データ出力部が、前記トークン入力部にトークンが入力されたことに応じて、前記データ出力フラグ記憶部のデータ出力フラグを出力済みとして設定し、
前記トークン出力部が、前記データ入力部に入力値が入力されたことに応じて、前記データ出力フラグ記憶部からデータ出力フラグを読み出し、該読み出したデータ出力フラグが出力済みである場合には、前記トークンを出力する、
ことを特徴とする請求項３から請求項７に記載の並列演算装置。
【請求項９】
前記トークン出力部が、前記トークンを出力すると共に、前記データ出力フラグ記憶部のデータ出力フラグを未出力として設定する、ことを特徴とする請求項８に記載の並列演算装置。
【請求項１０】
前記ユニット出力算出部が、前記積和計算一次値算出部から積和計算一次値情報を読み出した後、前記積和計算一次値算出部に記憶されている積和計算一次値情報の値を０にリセットする、ことを特徴とする請求項３から請求項９に記載の並列演算装置。
【請求項１１】
前記並列演算装置が自己組織化マップを演算する並列演算装置である場合には、前記複数のユニットのそれぞれが、ネットワーク座標により識別される座標で予め識別されており、
前記ユニット演算部が、
前記ユニットのネットワーク座標であるユニットネットワーク座標が予め記憶されているユニットネットワーク座標記憶部と、
入力されたネットワーク座標である入力ネットワーク座標が記憶されている入力ネットワーク座標記憶部と、
前記ユニットの結合重みベクトルが記憶されている重み記憶部と、
ノルムを記憶するユニットノルム記憶部と、
入力されたノルムを記憶する入力ノルム記憶部と、
前記データ入力部に入力された入力値が入力データベクトルである場合には、該入力された入力データベクトルと、前記重み記憶部から読み出した結合重みベクトルとのノルムを算出し、該算出したノルムをユニットノルムとして前記ユニットノルム記憶部に記憶させるノルム算出部と、
前記データ入力部に入力された入力値が、ネットワーク座標とノルムとの組みである場合には、該入力されたネットワーク座標を入力ネットワーク座標として前記入力ネットワーク座標記憶部に記憶させると共に、該入力されたノルムを入力ノルムとして前記入力ノルム記憶部に記憶させる入力ノルム部と、
前記トークン入力部を介してトークンが入力されたことに応じて、前記ユニットノルム記憶部から読み出したユニットノルムと、前記入力ユニットノルム記憶部から読み出した入力ノルムとを比較するノルム比較部と、
前記ノルム比較部の比較した結果が、前記読み出したユニットノルムが前記入力ノルムより小さい場合には、前記ユニットノルム記憶部から読み出したユニットノルムと前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標とを組みとして前記データ出力部を介して出力し、前記読み出したユニットノルムが前記入力ノルム以上である場合には、前記入力ノルム記憶部から読み出した入力ノルムと前記入力ネットワーク座標記憶部から読み出した入力ネットワーク座標とを組みとして前記データ出力部を介して出力する選択出力部と、
を有することを特徴とする請求項１または請求項２に記載の並列演算装置。
【請求項１２】
前記ユニット演算部が、
前記データ入力部に入力された入力値が、ネットワーク座標と近傍判定を実行することを示す識別情報である近傍判定識別情報との組みである場合には、前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標が、前記入力されたネットワーク座標である入力ネットワーク座標の近傍にあるか否かを判定する近傍判定部と、
前記近傍判定部の判定した結果が近傍である場合には、前記重み記憶部に記憶されている結合重みベクトルを更新する重み更新部と、
を有することを特徴とする請求項１０または請求項１１に記載の並列演算装置。
【請求項１３】
前記ユニット演算部が、
入力された入力データベクトルが記憶される入力データ記憶部と、
学習速度を決める係数である学習速度係数が予め記憶されている学習速度記憶部と、
前記データ入力部に入力された入力値が入力データベクトルである場合には、該入力された入力データベクトルを前記入力データ記憶部に記憶させるデータ抽出部と、
を有し、
前記重み更新部が、前記入力データ記憶部から読み出した入力データベクトルと前記重み記憶部から読み出した結合重みベクトルとの差に、前記学習速度記憶部から読み出した学習速度係数を乗じた値を、前記重み記憶部に記憶されている結合重みベクトルに加算することにより、前記重み記憶部に記憶されている結合重みベクトルを更新する、
ことを特徴とする請求項１２に記載の並列演算装置。
【請求項１４】
前記学習速度記憶部には、学習した回数を示す学習ステップ数と、前記学習速度係数とが予め関連付けて記憶されており、
前記ユニット演算部が、前記ユニットに入力データベクトルが入力される毎に、前記ユニットに前記入力データベクトルが入力された回数であるステップ数をカウントアップするカウンタを有し、
前記重み更新部が、前記カウンタから読み出したステップ数が、前記学習ステップ数に該当する学習速度係数を前記学習速度記憶部から読み出し、該読み出した学習速度係数に基づいて前記重み記憶部に記憶されている結合重みベクトルを更新する、
ことを特徴とする請求項１２または請求項１３に記載の並列演算装置。
【請求項１５】
前記ユニット演算部が、前記ネットワーク座標の間の距離が近傍であるか否かを判定する基準である基準距離が予め記憶されている距離記憶部を有し、
前記近傍判定部が、前記データ入力部に入力された入力値が、ネットワーク座標と近傍判定を実行することを示す識別情報である近傍判定識別情報との組みである場合には、前記距離記憶部から基準距離を読み出し、前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標と前記入力されたネットワーク座標である入力ネットワーク座標との間の距離が、前記読み出した基準距離以下であるか否かを判定することにより、前記ユニットネットワーク座標が前記入力ネットワーク座標の近傍にあるか否かを判定する、
ことを特徴とする請求項１２から請求項１４に記載の並列演算装置。
【請求項１６】
前記距離記憶部には、前記学習ステップ数と前記基準距離とが予め関連付けて記憶されており、
前記近傍判定部が、
前記カウンタから読み出したステップ数が、前記学習ステップ数に該当する基準距離を前記学習速度記憶部から読み出し、該読み出した基準距離に基づいて前記ユニットネットワーク座標が前記入力ネットワーク座標の近傍にあるか否かを判定する、
ことを特徴とする請求項１５に記載の並列演算装置。
【請求項１７】
前記トークン入力部にトークンが入力されたことに応じて、前記トークン出力部がトークンを出力することを特徴とする請求項１１から請求項１６に記載の並列演算装置。
【請求項１８】
前記ユニット演算部が、
前記トークン出力部がトークンを出力済みであるか否かを示すトークン出力フラグが記憶されているトークン出力フラグ記憶部と、
前記トークン入力部にトークンが入力されたことに応じて、前記トークン出力フラグ記憶部からトークン出力フラグを読み出し、該読み出したトークン出力フラグがトークンを未出力である場合に、前記入力されたトークンを前記ノルム比較部に出力すると共に、前記入力されたトークンを前記トークン出力部を介して出力するトークン出力フラグ判定部と、
を有することを特徴とする請求項１１から請求項１７に記載の並列演算装置。
【請求項１９】
前記トークン出力部が、
前記ユニットノルム記憶部から読み出したユニットノルムと前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標とを組みとして前記データ出力部を介して前記選択出力部が出力したことに応じて、または、前記入力ノルム記憶部から読み出した入力ノルムと前記入力ネットワーク座標記憶部から読み出した入力ネットワーク座標とを組みとして前記データ出力部を介して前記選択出力部が出力したことに応じて、前記トークンを出力する、
ことを特徴とする請求項１１から請求項１８に記載の並列演算装置。
【請求項２０】
前記トークン出力部が、
前記トークンを出力した後に、前記トークン出力フラグ記憶部に記憶されているトークン出力フラグを出力済みに更新する、
ことを特徴とする請求項１１から請求項１９に記載の並列演算装置。
【請求項２１】
前記予め定められた順序の１つ飛ばしの順序である第１の冗長順序で、前記複数のユニットのうちの半数のユニットが、第１の冗長デイジーチェーン制御バスによりデイジーチェーンされており、
前記第１の冗長デイジーチェーン制御バスによりデイジーチェーンされているユニットが、
前記トークン入力部にトークンが入力されたことに応じて、前記トークンを前記冗長順序で１つ後のユニットへ前記第１の冗長デイジーチェーン制御バスを介して出力する冗長トークン出力部と、
前記トークン出力部と前記冗長トークン出力部とのうち、いずれを選択するかを示すトークン出力選択情報が記憶されているトークン選択情報記憶部と、
前記トークン入力部にトークンが入力されたことに応じて、前記トークン選択情報記憶部から読み出したトークン出力選択情報に基づいて、前記トークン出力部と前記冗長トークン出力部とのうちいずれか一方を選択し、該選択したトークン出力部または冗長トークン出力部を介してトークンを出力するトークン出力部選択部と、
を有することを特徴とする請求項１から請求項１９に記載の並列演算装置。
【請求項２２】
前記ユニットが、
前記冗長デイジーチェーン制御バスを介してデイジーチェーンされている冗長順序が１つ前のユニットからのトークンを入力する冗長トークン入力部を有し、
前記トークン出力部が、
前記トークン入力部または前記冗長トークン入力部にトークンが入力されたことに応じて、前記トークンを出力する、
ことを特徴とする請求項２１に記載の並列演算装置。
【請求項２３】
前記予め定められた順序の１つ飛ばしの順序で、前記第１の冗長デイジーチェーン制御バスによりデイジーチェーンされていない前記複数のうちの残りの半数のユニットが、第２の冗長デイジーチェーン制御バスによりデイジーチェーンされており、
前記第２の冗長デイジーチェーン制御バスによりデイジーチェーンされているユニットが、前記第２の冗長デイジーチェーン制御バスを前記第１の冗長デイジーチェーン制御バスとして、前記冗長トークン出力部とトークン選択情報記憶部とトークン出力部選択部とを有している、
ことを特徴する請求項２１または請求項２２に記載の並列演算装置。
【請求項２４】
前記第２の冗長デイジーチェーン制御バスによりデイジーチェーンされているユニットが、前記第２の冗長デイジーチェーン制御バスを前記第１の冗長デイジーチェーン制御バスとして、前記冗長トークン入力部を有している、
ことを特徴する請求項２１から請求項２３に記載の並列演算装置。
【請求項２５】
予め定められた順序でデイジーチェーン制御バスを介してデイジーチェーンされている複数のユニットと、前記複数のユニットの内のいずれか１つが出力する出力値がユニット出力バスを介して入力され、該入力された出力値を前記複数のユニットのそれぞれにユニット入力バスを介して入力値として出力する中継部と、を有する並列演算装置のユニットにおいて用いられる並列演算方法であって、
前記ユニットが、
前記デイジーチェーン制御バスを介してデイジーチェーンされている順序が１つ前のユニットからのトークンを入力し、
前記トークンが入力されたことに応じて、前記トークンを前記デイジーチェーンされている順序が１つ後のユニットへ前記デイジーチェーン制御バスを介して出力し、
前記ユニット出力バスを介して前記中継部からの入力値を入力し、
前記入力された入力値に基づいて、前記ユニット毎に予め定められた演算方法により演算し、
前記トークンが入力されたことに応じて、前記演算した結果である演算結果を前記出力値として、前記中継部に前記ユニット出力バスを介して出力する、
ことを特徴とする並列演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算ユニットを有する並列演算装置に関し、特に、複数の演算ユニット間の接続を簡易にすることを可能とする並列演算装置に関する。
【背景技術】
【０００２】
並列演算の１つとして、ニューラルネットワークが知られている。このニューラルネットワークは、脳機能に見られるいくつかの特性を表現することを目指した数学モデルである。このニューラルネットワークによる処理は、入力されたデータの情報量を削減することが可能であるため、画像や統計など多次元量のデータでかつ線形分離不可能な問題に対して、比較的小さい計算量で良好な解を得られることが多い。そのためニューラルネットワークは、パターン認識やデータマイニングをはじめ、さまざまな分野において応用されている。
【０００３】
ここで、大規模なニューラルネットワークを実現しようとすると、その計算量が膨大となるため、現実的な時間での処理が難しくなる。これを解決する方法として、（１）単体プロセッサ自体のコンピューティングパワーを上げる方法、（２）プロセッサを複数用いる並列コンピューティングの手法を用いる方法、（３）機能をＬＳＩ等によりハードウェアにより実装する方法、等が考えられる。上記（１）と（２）との方法は、プロセッサの能力を上げることで膨大な計算量に対処しようとするものであり、プログラムを変更することで様々なニューラルネットワークのアルゴリズムに対応することができる。
【０００４】
ここで（１）の方法においては、従来、単体プロセッサのクロック周波数を高速化すること、いわゆるムーアの法則により、単体プロセッサ自体のコンピューティングパワーを上げてきていた。しかし、近年、クロック周波数の高速化は発熱量を増加させ、また、微細加工寸法が物理的限界に達しつつあることからムーアの法則が破綻しつつあり、単体プロセッサ自体のコンピューティングパワーを上げることが難しくなってきている。そのため、（１）の方法から（２）の方法へと、プロセッサのコンピューティングパワーを上げる方法の開発がシフトしてきており、コンピューティングパワーを上げるという高性能化と、発熱を抑えることの両立をより進めるために、より大きなキャッシュと複数の計算コアを持つことに焦点が当てられている。また、このプロセッサの開発は、低いクロック周波数で動作し、低電力化で動作するようにも、進められている。
【０００５】
しかし、（２）の方法においては、膨大なプロセッサを効率的に動作させる方法、つまり並列度を上げることと、複数のプロセッサ間の膨大なデータ通信を可能とするネットワークの構成が難しいことが本質的な問題としてある。そのため、（２）の方法である、プロセッサを複数用いる並列コンピューティングの手法を用いる方法により、大規模なニューラルネットワークの並列演算効率を上げることは、難しい。
【０００６】
一方、（３）の方法であるハードウェア化に関しては、ハードウェアで実現可能なニューラルネットワークのアルゴリズムに制限があるが、特定な用途に対しては（１）または（２）の方法に比べ、低周波数での場合でも、桁違いな演算速度の性能を発揮することが可能である。このような、並列演算をハードウェア化する技術として、特許文献１および特許文献２が知られている。
【特許文献１】特開平６−１９５４５４号公報
【特許文献２】特開平２００６−３９７９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、（３）の方法であるハードウェア化に関しての特許文献１および特許文献２の従来技術においては、配線の問題があり、配線のために回路規模が膨大となり、または、回路間の配線が出来ないという問題がある。例えば、多層型のニューラルネットワークにおいては、出力層のあるノードからの出力を、入力層の全てのノードの入力に入力することが必要となり、各層のノード数が増大すると、その配線量が急激に増大してしまう。
【０００８】
また、例えば、実際の脳のニューラルネットワークの場合、ニューロンは３次元空間に配置され配線されているのに対し、ＬＳＩのようなハードウェアによる構成では構成要素の配置は２次元が基本であるため、配線の問題を本質的には解決できない。積層構造などで構成要素を３次元化しようとしても配線の問題は残るので、応用は限られた配線（近傍のみとの結合）で事足りるような用途に限定される。
【０００９】
また、このような複数の演算ユニット間の配線の問題は、ニューラルネットワークに限られるものではなく、全ての演算ユニットの出力を、全ての演算ユニットに入力することが計算上必要な場合に、問題となる。例えば、ニューラルネットワーク以外にも、自己組織化マップ、重力多体問題、電荷を持った多体粒子のシミュレーション、などがある。
【００１０】
本発明は、このような事情に鑑みてなされたもので、その目的の一つは、複数の演算ユニット間の配線を簡易にすることを可能とする並列演算装置および並列演算方法を提供することにある。
【課題を解決するための手段】
【００１１】
この発明は上述した課題を解決するためになされたもので、並列演算装置が、予め定められた順序でデイジーチェーン制御バスを介してデイジーチェーンされている複数のユニットと、前記複数のユニットの内のいずれか１つが出力する出力値がユニット出力バスを介して入力され、該入力された出力値を前記複数のユニットのそれぞれにユニット入力バスを介して入力値として出力する中継部と、を有し、前記ユニットが、前記デイジーチェーン制御バスを介してデイジーチェーンされている順序が１つ前のユニットからのトークンを入力するトークン入力部と、前記トークン入力部にトークンが入力されたことに応じて、前記トークンを前記デイジーチェーンされている順序が１つ後のユニットへ前記デイジーチェーン制御バスを介して出力するトークン出力部と、前記ユニット出力バスを介して前記中継部からの入力値を入力するデータ入力部と、前記データ入力部に入力された入力値に基づいて、前記ユニット毎に予め定められた演算方法により演算するユニット演算部と、前記トークン入力部にトークンが入力されたことに応じて、前記ユニット演算部が演算した結果である演算結果を前記出力値として、前記中継部に前記ユニット出力バスを介して出力するデータ出力部と、を有することを特徴とする並列演算装置である。
【００１２】
この発明によれば、並列演算装置の複数の演算ユニット間の接続を簡易にすることが出来るという効果を奏する。また、複数のユニットが並列に演算をするため、高速に演算することが出来るという効果を奏する。
【００１３】
また、この発明は、前記ユニットが、前記演算結果が記憶されるユニット出力記憶部を有し、前記ユニット演算部が、前記演算結果を前記ユニット出力記憶部に記憶させ、前記データ出力部が、前記トークン入力部にトークンが入力されたことに応じて、前記演算結果を前記ユニット出力記憶部から読み出し、該読み出した演算結果を前記出力値として前記中継部に前記ユニット出力バスを介して出力する、ことを特徴とする並列演算装置である。
【００１４】
この発明によれば、並列演算装置のユニットが、演算結果を記憶しておき、トークン入力部にトークンが入力されたことに応じて、適切なタイミングで、演算結果を出力することが出来るという効果を奏する。
【００１５】
また、この発明は、前記並列演算装置が階層型ニューラルネットワークを演算する並列演算装置である場合には、前記ユニット演算部が、前記階層型ニューラルネットワークの階層のうち、出力する層を識別する層情報が記憶されている層情報記憶部と、前記ユニットの出力関数と前記層情報とが関連付けて予め記憶されている関数記憶部と、前記層情報で識別される前記出力層のユニットからの出力値に乗ずる予め定められた結合荷重と、前記層情報とが関連付けて記憶されている重み記憶部と、前記出力ユニットからの入力値と結合荷重とを乗じた積和計算一次値情報が記憶される積和計算一次値記憶部と、前記層情報記憶部から読み出した層情報に該当する結合荷重を前記重み記憶部から読み出し、該読み出した結合荷重と、前記データ入力部に入力された入力値とを乗算し、該乗算した値を前記積和計算一次値記憶部に記憶されている積和計算一次値情報に加算して記憶させる積和計算一次値算出部と、前記積和計算一次値記憶部から積和計算一次値情報を読み出し、前記層情報記憶部から読み出した層情報に該当する出力関数を前記関数記憶部から読み出し、該読み出した出力関数に前記読み出した積和計算一次値情報を代入することにより出力値を算出し、該算出した出力値を前記ユニット出力記憶部に記憶させるユニット出力算出部と、を有することを特徴とする並列演算装置である。
【００１６】
この発明によれば、複数の演算ユニット間の接続を簡易にした並列演算装置により、階層型ニューラルネットワークの演算が出来るという効果を奏する。また、複数の演算ユニット間の接続が簡易であるために、階層型ニューラルネットにおいて、各層のノードであるユニットの数が多い場合においても、配線の問題が生じにくいという効果を奏する。
【００１７】
また、この発明は、前記ユニット演算部が、前記出力層に属しているユニットのうち、いずれのユニットが出力ユニットとして出力しているかを示すユニット識別情報が記憶されているユニット識別情報記憶部、を有し、前記重み記憶部には、前記層情報と前記ユニット識別情報とで識別される前記出力層のユニットからの出力値に乗ずる予め定められた結合荷重と、前記層情報と前記ユニット識別情報とが、関連付けて記憶されており、前記積和計算一次値算出部が、前記ユニット識別情報記憶部から読み出したユニット識別情報と前記層情報記憶部から読み出した層情報とに該当する結合荷重を前記重み記憶部から読み出し、該読み出した結合荷重と、前記データ入力部に入力された入力値とを乗算し、該乗算した値を前記積和計算一次値記憶部に記憶されている積和計算一次値情報に加算して記憶させる、ことを特徴とする並列演算装置である。
【００１８】
この発明によれば、各層の各ノードからの出力に応じて、結合荷重を乗算して、階層型ニューラルネットを演算することが出来るという効果を奏する。
【００１９】
また、この発明は、前記ユニット演算部が、前記データ入力部に入力値が入力される毎に、前記ユニット識別情報記憶部に記憶されているユニット識別情報の値をインクリメントするカウンタと、前記層情報と前記層情報で識別される階層に属する階層型ニューラルネットワークのユニット数とが関連付けて予め記憶されているユニット数記憶部と、前記層情報記憶部から層情報を読み出し、該読み出した層情報に該当するユニット数を前記ユニット数記憶部から読み出し、前記ユニット識別情報記憶部からユニット識別情報を読み出し、該読み出したユニット識別情報の値と前記読み出したユニット数とを比較し、該比較した結果が一致した場合に、該読み出したユニット識別情報の値と前記読み出したユニット数とが一致したことを示す比較一致信号を出力するユニット数比較部と、を有し、前記ユニット出力算出部が、前記ユニット数比較部から比較一致信号を入力されたことに応じて、前記積和計算一次値算出部から積和計算一次値情報を読み出し、前記層情報記憶部から読み出した層情報に該当する出力関数を前記関数記憶部から読み出し、該読み出した出力関数に前記読み出した積和計算一次値情報を代入することにより出力値を算出し、該算出した出力値を前記ユニット出力記憶部に記憶させる、ことを特徴とする並列演算装置である。
【００２０】
この発明によれば、各ユニットが、出力をする層の全てのノードであるユニットが、出力を完了したか否かを検出することが出来るという効果を奏する。
【００２１】
また、この発明は、前記ユニット数比較部が、前記比較した結果が一致した場合に、前記ユニット識別情報記憶部に記憶されているユニット識別情報の値をリセットする、ことを特徴とする並列演算装置である。
【００２２】
この発明によれば、各ユニットが、ある層の演算が終了した後に、次の層の演算をすることが出来るという効果を奏する。
【００２３】
また、この発明は、前記ユニット演算部が、前記ユニット数比較部から比較一致信号を入力されたことに応じて、前記層情報記憶部に記憶されている層情報の値をインクリメントする層情報算出部、を有することを特徴とする並列演算装置である。
【００２４】
この発明によれば、各ユニットが、ある層の演算が終了した後に、次の層の層情報を、ユニット自体が算出して求めることが出来るという効果を奏する。
【００２５】
また、この発明は、前記ユニット演算部が、前記データ出力部が前記出力値を出力済みであるか否かを示すデータ出力フラグが記憶されているデータ出力フラグ記憶部を有し、前記データ出力部が、前記トークン入力部にトークンが入力されたことに応じて、前記データ出力フラグ記憶部のデータ出力フラグを出力済みとして設定し、前記トークン出力部が、前記データ入力部に入力値が入力されたことに応じて、前記データ出力フラグ記憶部からデータ出力フラグを読み出し、該読み出したデータ出力フラグが出力済みである場合には、前記トークンを出力する、ことを特徴とする並列演算装置である。
【００２６】
この発明によれば、各ユニットが、階層型ニューラルネットワークの場合に合わせたタイミングで、トークンを出力することが出来るという効果を奏する。
【００２７】
また、この発明は、前記トークン出力部が、前記トークンを出力すると共に、前記データ出力フラグ記憶部のデータ出力フラグを未出力として設定する、ことを特徴とする並列演算装置である。
【００２８】
この発明によれば、各ユニットが、次の階層においても、階層型ニューラルネットワークの場合に合わせタイミングで、トークンを出力することが出来るという効果を奏する。
【００２９】
また、この発明は、前記ユニット出力算出部が、前記積和計算一次値算出部から積和計算一次値情報を読み出した後、前記積和計算一次値算出部に記憶されている積和計算一次値情報の値を０にリセットする、ことを特徴とする並列演算装置である。
【００３０】
この発明によれば、各ユニットが、ある層の演算が終了した後に、次の層の演算をすることが出来るという効果を奏する。
【００３１】
また、この発明は、前記並列演算装置が自己組織化マップを演算する並列演算装置である場合には、前記複数のユニットのそれぞれが、ネットワーク座標により識別される座標で予め識別されており、前記ユニット演算部が、前記ユニットのネットワーク座標であるユニットネットワーク座標が予め記憶されているユニットネットワーク座標記憶部と、入力されたネットワーク座標である入力ネットワーク座標が記憶されている入力ネットワーク座標記憶部と、前記ユニットの結合重みベクトルが記憶されている重み記憶部と、ノルムを記憶するユニットノルム記憶部と、入力されたノルムを記憶する入力ノルム記憶部と、前記データ入力部に入力された入力値が入力データベクトルである場合には、該入力された入力データベクトルと、前記重み記憶部から読み出した結合重みベクトルとのノルムを算出し、該算出したノルムをユニットノルムとして前記ユニットノルム記憶部に記憶させるノルム算出部と、前記データ入力部に入力された入力値が、ネットワーク座標とノルムとの組みである場合には、該入力されたネットワーク座標を入力ネットワーク座標として前記入力ネットワーク座標記憶部に記憶させると共に、該入力されたノルムを入力ノルムとして前記入力ノルム記憶部に記憶させる入力ノルム部と、前記トークン入力部を介してトークンが入力されたことに応じて、前記ユニットノルム記憶部から読み出したユニットノルムと、前記入力ユニットノルム記憶部から読み出した入力ノルムとを比較するノルム比較部と、前記ノルム比較部の比較した結果が、前記読み出したユニットノルムが前記入力ノルムより小さい場合には、前記ユニットノルム記憶部から読み出したユニットノルムと前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標とを組みとして前記データ出力部を介して出力し、前記読み出したユニットノルムが前記入力ノルム以上である場合には、前記入力ノルム記憶部から読み出した入力ノルムと前記入力ネットワーク座標記憶部から読み出した入力ネットワーク座標とを組みとして前記データ出力部を介して出力する選択出力部と、を有することを特徴とする並列演算装置である。
【００３２】
この発明によれば、複数の演算ユニット間の接続を簡易にした並列演算装置により、自己組織化マップの演算が出来るという効果を奏する。また、複数の演算ユニット間の接続が簡易であるために、自己組織化マップにおいて、各層のユニットの数が多い場合においても、配線の問題が生じにくいという効果を奏する。
【００３３】
また、この発明は、前記ユニット演算部が、前記データ入力部に入力された入力値が、ネットワーク座標と近傍判定を実行することを示す識別情報である近傍判定識別情報との組みである場合には、前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標が、前記入力されたネットワーク座標である入力ネットワーク座標の近傍にあるか否かを判定する近傍判定部と、前記近傍判定部の判定した結果が近傍である場合には、前記重み記憶部に記憶されている結合重みベクトルを更新する重み更新部と、を有することを特徴とする並列演算装置である。
【００３４】
この発明によれば、各ユニットが、結合重みベクトルを更新することにより、学習することが出来るという効果を奏する。
【００３５】
また、この発明は、前記ユニット演算部が、入力された入力データベクトルが記憶される入力データ記憶部と、学習速度を決める係数である学習速度係数が予め記憶されている学習速度記憶部と、前記データ入力部に入力された入力値が入力データベクトルである場合には、該入力された入力データベクトルを前記入力データ記憶部に記憶させるデータ抽出部と、を有し、前記重み更新部が、前記入力データ記憶部から読み出した入力データベクトルと前記重み記憶部から読み出した結合重みベクトルとの差に、前記学習速度記憶部から読み出した学習速度係数を乗じた値を、前記重み記憶部に記憶されている結合重みベクトルに加算することにより、前記重み記憶部に記憶されている結合重みベクトルを更新する、ことを特徴とする並列演算装置である。
【００３６】
この発明によれば、各ユニットが、結合重みベクトルを学習速度に応じて更新することにより、学習することが出来るという効果を奏する。
【００３７】
また、この発明は、前記学習速度記憶部には、学習した回数を示す学習ステップ数と、前記学習速度係数とが予め関連付けて記憶されており、前記ユニット演算部が、前記ユニットに入力データベクトルが入力される毎に、前記ユニットに前記入力データベクトルが入力された回数であるステップ数をカウントアップするカウンタを有し、前記重み更新部が、前記カウンタから読み出したステップ数が、前記学習ステップ数に該当する学習速度係数を前記学習速度記憶部から読み出し、該読み出した学習速度係数に基づいて前記重み記憶部に記憶されている結合重みベクトルを更新する、ことを特徴とする並列演算装置である。
【００３８】
この発明によれば、各ユニットが、学習ステップ数に応じた学習速度で、学習することが出来るという効果を奏する。
【００３９】
また、この発明は、前記ユニット演算部が、前記ネットワーク座標の間の距離が近傍であるか否かを判定する基準である基準距離が予め記憶されている距離記憶部を有し、前記近傍判定部が、前記データ入力部に入力された入力値が、ネットワーク座標と近傍判定を実行することを示す識別情報である近傍判定識別情報との組みである場合には、前記距離記憶部から基準距離を読み出し、前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標と前記入力されたネットワーク座標である入力ネットワーク座標との間の距離が、前記読み出した基準距離以下であるか否かを判定することにより、前記ユニットネットワーク座標が前記入力ネットワーク座標の近傍にあるか否かを判定する、ことを特徴とする並列演算装置である。
【００４０】
この発明によれば、各ユニットが、基準距離に基づいて、勝者ユニットの近傍であるか否かを判定することが出来るという効果を奏する。
【００４１】
また、この発明は、前記距離記憶部には、前記学習ステップ数と前記基準距離とが予め関連付けて記憶されており、前記近傍判定部が、前記カウンタから読み出したステップ数が、前記学習ステップ数に該当する基準距離を前記学習速度記憶部から読み出し、該読み出した基準距離に基づいて前記ユニットネットワーク座標が前記入力ネットワーク座標の近傍にあるか否かを判定する、ことを特徴とする並列演算装置である。
【００４２】
この発明によれば、各ユニットが、学習ステップ数に応じた基準距離に基づいて、勝者ユニットの近傍であるか否かを判定することが出来るという効果を奏する。
【００４３】
また、この発明は、前記トークン入力部にトークンが入力されたことに応じて、前記トークン出力部がトークンを出力することを特徴とする並列演算装置である。
【００４４】
この発明によれば、各ユニットが、トークンを次のユニットに渡すことにより、勝者ユニットを順次決定することが出来るという効果を奏する。
【００４５】
また、この発明は、前記ユニット演算部が、前記トークン出力部がトークンを出力済みであるか否かを示すトークン出力フラグが記憶されているトークン出力フラグ記憶部と、前記トークン入力部にトークンが入力されたことに応じて、前記トークン出力フラグ記憶部からトークン出力フラグを読み出し、該読み出したトークン出力フラグがトークンを未出力である場合に、前記入力されたトークンを前記ノルム比較部に出力すると共に、前記入力されたトークンを前記トークン出力部を介して出力するトークン出力フラグ判定部と、を有することを特徴とする並列演算装置である。
【００４６】
この発明によれば、勝者ユニットを決定する時に、各ユニットが、１度のみ勝者ユニットを決めるトーナメントに参加し、トーナメントに複数回参加しないようにすることが出来るという効果を奏する。
【００４７】
また、この発明は、前記トークン出力部が、前記ユニットノルム記憶部から読み出したユニットノルムと前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標とを組みとして前記データ出力部を介して前記選択出力部が出力したことに応じて、または、前記入力ノルム記憶部から読み出した入力ノルムと前記入力ネットワーク座標記憶部から読み出した入力ネットワーク座標とを組みとして前記データ出力部を介して前記選択出力部が出力したことに応じて、前記トークンを出力する、ことを特徴とする並列演算装置である。
【００４８】
この発明によれば、各ユニットが、自己組織化マップに適したタイミングで、トークンを出力することが出来るという効果を奏する。
【００４９】
また、この発明は、前記トークン出力部が、前記トークンを出力した後に、前記トークン出力フラグ記憶部に記憶されているトークン出力フラグを出力済みに更新する、ことを特徴とする並列演算装置である。
【００５０】
この発明によれば、各ユニットが、トークンまたは出力値を複数回出力することを防止することが出来るという効果を奏する。
【００５１】
また、この発明は、前記予め定められた順序の１つ飛ばしの順序である第１の冗長順序で、前記複数のユニットのうちの半数のユニットが、第１の冗長デイジーチェーン制御バスによりデイジーチェーンされており、前記第１の冗長デイジーチェーン制御バスによりデイジーチェーンされているユニットが、前記トークン入力部にトークンが入力されたことに応じて、前記トークンを前記冗長順序で１つ後のユニットへ前記第１の冗長デイジーチェーン制御バスを介して出力する冗長トークン出力部と、前記トークン出力部と前記冗長トークン出力部とのうち、いずれを選択するかを示すトークン出力選択情報が記憶されているトークン選択情報記憶部と、前記トークン入力部にトークンが入力されたことに応じて、前記トークン選択情報記憶部から読み出したトークン出力選択情報に基づいて、前記トークン出力部と前記冗長トークン出力部とのうちいずれか一方を選択し、該選択したトークン出力部または冗長トークン出力部を介してトークンを出力するトークン出力部選択部と、を有することを特徴とする並列演算装置である。
【００５２】
この発明によれば、冗長デイジーチェーン制御バスにより、デイジーチェーン制御バスの一部または一部のユニットに欠陥が生じた場合においても、並列演算装置が、問題なく動作することが出来るという効果を奏する。
【００５３】
また、この発明は、前記ユニットが、前記冗長デイジーチェーン制御バスを介してデイジーチェーンされている冗長順序が１つ前のユニットからのトークンを入力する冗長トークン入力部を有し、前記トークン出力部が、前記トークン入力部または前記冗長トークン入力部にトークンが入力されたことに応じて、前記トークンを出力する、ことを特徴とする並列演算装置である。
【００５４】
この発明によれば、冗長デイジーチェーン制御バスにより、デイジーチェーン制御バスの一部または一部のユニットに欠陥が生じた場合においても、各ユニットが、問題なく動作することが出来るという効果を奏する。
【００５５】
また、この発明は、前記予め定められた順序の１つ飛ばしの順序で、前記第１の冗長デイジーチェーン制御バスによりデイジーチェーンされていない前記複数のうちの残りの半数のユニットが、第２の冗長デイジーチェーン制御バスによりデイジーチェーンされており、前記第２の冗長デイジーチェーン制御バスによりデイジーチェーンされているユニットが、前記第２の冗長デイジーチェーン制御バスを前記第１の冗長デイジーチェーン制御バスとして、前記冗長トークン出力部とトークン選択情報記憶部とトークン出力部選択部とを有している、ことを特徴する並列演算装置である。
【００５６】
この発明によれば、冗長デイジーチェーン制御バスにより、デイジーチェーン制御バスの一部または一部のユニットに欠陥が生じた場合においても、各ユニットが、問題なく動作することが出来るという効果を奏する。
【００５７】
また、この発明は、前記第２の冗長デイジーチェーン制御バスによりデイジーチェーンされているユニットが、前記第２の冗長デイジーチェーン制御バスを前記第１の冗長デイジーチェーン制御バスとして、前記冗長トークン入力部を有している、ことを特徴する並列演算装置である。
【００５８】
この発明によれば、冗長デイジーチェーン制御バスにより、デイジーチェーン制御バスの一部または一部のユニットに欠陥が生じた場合においても、各ユニットが、問題なく動作することが出来るという効果を奏する。
【００５９】
また、この発明は、予め定められた順序でデイジーチェーン制御バスを介してデイジーチェーンされている複数のユニットと、前記複数のユニットの内のいずれか１つが出力する出力値がユニット出力バスを介して入力され、該入力された出力値を前記複数のユニットのそれぞれにユニット入力バスを介して入力値として出力する中継部と、を有する並列演算装置のユニットにおいて用いられる並列演算方法であって、前記ユニットが、前記デイジーチェーン制御バスを介してデイジーチェーンされている順序が１つ前のユニットからのトークンを入力し、前記トークンが入力されたことに応じて、前記トークンを前記デイジーチェーンされている順序が１つ後のユニットへ前記デイジーチェーン制御バスを介して出力し、前記ユニット出力バスを介して前記中継部からの入力値を入力し、前記入力された入力値に基づいて、前記ユニット毎に予め定められた演算方法により演算し、前記トークンが入力されたことに応じて、前記演算した結果である演算結果を前記出力値として、前記中継部に前記ユニット出力バスを介して出力する、ことを特徴とする並列演算方法である。
【発明を実施するための最良の形態】
【００６０】
＜基本構成＞
以下、図面を参照して、本発明の実施の形態について説明する。図１は、この発明の一実施形態による並列演算装置の構成を示す概略ブロック図である。ここでは、ユニットＵ１からＵ１０の、ユニットの個数が１０である場合について説明する。なお、このユニットの詳細については、後述する。
【００６１】
複数のユニットＵ１からＵ１０は、予め定められた順序であるデイジーチェーン順序で、デイジーチェーン制御バス１を介してデイジーチェーンされている。ここでは、このデイジーチェーン順序は、ユニットＵ１、ユニットＵ２、ユニットＵ３、・・・ユニットＵ１０の順と、予め定められているものとして説明する。また、デイジーチェーン制御バス１は、デイジーチェーン順序で隣接するユニット同士を接続している。例えば、デイジーチェーン制御バス１は、ユニットＵ１とユニットＵ２、ユニットＵ２とユニットＵ３、・・・ユニットＵ１０とユニットＵ１、を接続している。また、このデイジーチェーン制御バス１は、ユニットＵ１からＵ１０をデイジーチェーン順序で循環的に接続している。そのため、ユニットＵ１０とユニットＵ１とも、デイジーチェーン制御バス１を介して接続されている。
【００６２】
ユニットＵ１からＵ１０のそれぞれのユニットは、トークンをデイジーチェーン順序で、デイジーチェーン制御バス１を介してユニット間で送受信している。このトークンは、デイジーチェーンされたユニットＵ１からＵ１０の、いずれかの１つのユニットが有しており、このトークンを有しているユニットが、出力ユニットとなることを示す信号である。ユニットは、トークンを有しているユニットのみが出力ユニットとなり、また、全てのユニットが入力ユニットとなる。
【００６３】
この各ユニットは、ユニット出力バス２を介して入力される増幅器４からの入力値に基づいて、ユニット毎に予め定められた演算方法により演算する。また、各ユニットは、トークンがデイジーチェーン順序で前のユニットからデイジーチェーン制御バス１を介して入力されたことに応じて、トークンをデイジーチェーン順序で次のユニットにデイジーチェーン制御バス１を介して出力すると共に、演算した結果を出力値として増幅器４にユニット出力バス２を介して出力する。
【００６４】
増幅器（中継器）４は、複数のユニットＵ１からＵ１０の内のいずれか１つが出力する出力値がユニット出力バス２を介して入力され、入力された出力値を複数のユニットＵ１からＵ１０のそれぞれに、ユニット入力バス３を介して入力値として出力する。また、増幅器４は、入力された出力値の信号を、電気的に増幅して、入力値として出力する。
【００６５】
また、ユニット出力バス２の一端が、並列演算装置の出力端子Ｐ１に接続されている。また、増幅器４の入力端子に、並列演算装置の入力端子Ｐ２に接続されている。また、ユニットＵ１は、トリガ入力線５を介して、トリガ入力端子Ｐ３と、接続されている。また、出力端子Ｐ１、入力端子Ｐ２、トリガ入力端子Ｐ３は、並列演算装置の外部にある制御装置に接続されている。制御装置は、出力端子Ｐ１、入力端子Ｐ２、トリガ入力端子Ｐ３を介して、並列演算装置にデータを入力し、並列演算装置から演算結果を取得し、また、並列演算装置を制御する。
【００６６】
次に、図２を用いて、各ユニットの構成について説明する。なお、ユニットＵ１からＵ１０は同一の構成を有するため、ここでは、ユニットＵ２の構成のみについて説明する。ユニットＵ２は、トークン入力部１２と、トークン出力部１３と、データ入力部１１と、データ出力部１４と、ユニット演算部１５と、ユニット出力記憶部１６と、を有する。
【００６７】
トークン入力部１２は、デイジーチェーン制御バス１を介してデイジーチェーンされている順序が１つ前のユニットからのトークンを入力する。例えば、ユニットＵ２のトークン入力部１２は、デイジーチェーン制御バス１を介してデイジーチェーンされている順序が１つ前のユニットであるユニットＵ１からのトークンを入力する。なお、ユニットＵ１のトークン入力部１２は、ユニットＵ１０からのトークンがトークンデイジーチェーン制御バス１を介して入力されるだけでなく、制御装置からのトークンがトリガ入力端子Ｐ３とトリガ入力線５とを介して入力される。
【００６８】
トークン出力部１３は、トークン入力部にトークンが入力されたことに応じて、トークンをデイジーチェーンされている順序が１つ後のユニットへデイジーチェーン制御バス１を介して出力する。例えば、ユニットＵ２のトークン出力部１３は、デイジーチェーン制御バス１を介してデイジーチェーンされている順序が１つ後のユニットであるユニットＵ３へトークンを出力する。
【００６９】
データ入力部１１は、ユニット出力バス２を介して増幅器４からの入力値を入力する。ユニット出力記憶部１６は、ユニット演算部１５が演算した結果でる演算結果が記憶される。ユニット演算部１５は、データ入力部１１に入力された入力値に基づいて、ユニット毎に予め定められた演算方法により演算する。また、ユニット演算部１５は、演算した結果である演算結果を、ユニット出力記憶部１６に記憶させる。
【００７０】
データ出力部１４は、トークン入力部１２にトークンが入力されたことに応じて、ユニット演算部１５が演算した結果である演算結果を出力値として、増幅器４にユニット出力バス２を介して出力する。また、データ出力部１４は、トークン入力部１２にトークンが入力されたことに応じて、ユニット出力記憶部１６から演算結果を読み出し、読み出した演算結果を出力値として、増幅器４にユニット出力バス２を介して出力する。
【００７１】
なお、後述するように、並列演算装置が、トリガであるトークンをユニットＵ１にトリガ入力端子Ｐ３を介して入力し、ユニットＵ１から順にトークンがユニット間で順次渡されていくことにより、並列演算装置の各ユニットでの処理が実行される。この並列演算装置の動作については、次に説明する並列演算装置を階層型ニューラルネットワークに適応した場合を例にして説明する。
【００７２】
＜第１の実施形態＞
＜階層型ニューラルネットワークに適応した場合のユニットの構成＞
次に、並列演算装置を、階層型ニューラルネットワークに適応した場合の構成について説明する。階層型ニューラルネットワークにおいても並列演算装置全体の構成は、図１の並列演算装置の構成と同一であり、ユニットの構成のみが異なる。従って、図３を用いて、階層型ニューラルネットワークに適応した場合のユニットの構成を説明する。
【００７３】
ユニットは、データ入力部１０１と、トークン入力部１０２と、トークン出力部１０３と、データ出力部１０４とを有する。また、ユニットは、重み記憶部１３０と、層情報記憶部１３３と、ユニット数記憶部１３４と、積和計算一次値記憶部１３１と、関数記憶部１３２と、ユニット出力記憶部１３５と、データ出力フラグ記憶部１３６と、ユニット識別情報記憶部１３７とを有する。また、ユニットは、カウンタ１１４と、積和計算一次値算出部１１１と、層情報算出部１１３と、ユニット出力算出部１１２とを有する。
【００７４】
ここで、図３のデータ入力部１０１、トークン入力部１０２、トークン出力部１０３、データ出力部１０４は、図２のデータ入力部１１、トークン入力部１２、トークン出力部１３、データ出力部１４に、それぞれ対応する。また、図３のユニット出力記憶部１３５が、図２のユニット出力記憶部１６に対応する。これらの図２と図３とにおいて対応する構成について、共通の機能については、その説明を省略する。
【００７５】
また、図３の重み記憶部１３０と、層情報記憶部１３３と、ユニット数記憶部１３４と、積和計算一次値記憶部１３１と、関数記憶部１３２と、データ出力フラグ記憶部１３６と、ユニット識別情報記憶部１３７と、カウンタ１１４と、積和計算一次値算出部１１１と、層情報算出部１１３と、ユニット出力算出部１１２とが、図２のユニット演算部１５に対応する。
【００７６】
層情報記憶部１３３には、階層型ニューラルネットワークの階層のうち、アクティブな層（出力層）を識別する層情報が記憶されている。ユニット識別情報記憶部１３７には、アクティブな層に属しているユニットのうち、いずれのユニットが出力しているかを示すユニット識別情報が記憶されている。関数記憶部１３２には、ユニットの出力関数と層情報とが関連付けて予め記憶されている。この出力関数とは、例えば、シグモイド関数、ステップ関数、区分線形関数などの、予め定められた関数である。
【００７７】
重み記憶部１３０には、層情報で識別されるアクティブな層のユニットからの出力値に乗ずる予め定められた結合荷重と、層情報とが関連付けて記憶されている。また、重み記憶部１３０には、層情報とユニット識別情報とで識別される層のユニットからの出力値に乗ずる予め定められた結合荷重と、層情報とユニット識別情報とが、関連付けて記憶されている。
【００７８】
ユニット数記憶部１３４には、層情報と層情報で識別される階層に属する階層型ニューラルネットワークのユニット数とが関連付けて予め記憶されている。積和計算一次値記憶部１３１には、前段ユニットに相当するユニットからの入力値と結合荷重とを乗じた積和計算一次値情報が記憶される。データ出力フラグ記憶部１３６には、データ出力部１０４が出力値を出力済みであるか否かを示すデータ出力フラグが記憶されている。カウンタ１１４は、データ入力部１０１に入力値が入力される毎に、ユニット識別情報記憶部１３７に記憶されているユニット識別情報の値をインクリメントする。
【００７９】
ユニット数比較部１１５は、層情報記憶部１３３から層情報を読み出し、読み出した層情報に該当するユニット数をユニット数記憶部１３４から読み出し、ユニット識別情報記憶部１３７からユニット識別情報を読み出し、読み出したユニット識別情報の値と読み出したユニット数とを比較し、比較した結果が一致した場合に、読み出したユニット識別情報の値と読み出したユニット数とが一致したことを示す比較一致信号を出力する。また、ユニット数比較部１１５は、読み出したユニット識別情報の値と読み出したユニット数とを比較し、比較した結果が一致した場合に、ユニット識別情報記憶部１３７に記憶されているユニット識別情報の値をリセットする。
【００８０】
積和計算一次値算出部１１１は、層情報記憶部１３３から読み出した層情報に該当する結合荷重を重み記憶部１３０から読み出し、読み出した結合荷重と、データ入力部１０１に入力された入力値とを乗算し、乗算した値を積和計算一次値記憶部１３１に記憶されている積和計算一次値情報に加算して記憶させる。
【００８１】
また、積和計算一次値算出部１１１は、ユニット識別情報記憶部１３７から読み出したユニット識別情報と層情報記憶部１３３から読み出した層情報とに該当する結合荷重を重み記憶部１３０から読み出し、読み出した結合荷重と、データ入力部１０１に入力された入力値とを乗算し、乗算した値を積和計算一次値記憶部１３１に記憶されている積和計算一次値情報に加算して記憶させる。
【００８２】
ユニット出力算出部１１２は、積和計算一次値記憶部１３１から積和計算一次値情報を読み出し、層情報記憶部１３３から読み出した層情報に該当する出力関数を関数記憶部１３２から読み出し、読み出した出力関数に読み出した積和計算一次値情報を代入することにより出力値を算出し、算出した出力値をユニット出力記憶部１３５に記憶させる。
【００８３】
また、ユニット出力算出部１１２は、ユニット数比較部１１５から比較一致信号を入力されたことに応じて、積和計算一次値記憶部１３１から積和計算一次値情報を読み出し、層情報記憶部１３３から読み出した層情報に該当する出力関数を関数記憶部１３２から読み出し、読み出した出力関数に読み出した積和計算一次値情報を代入することにより出力値を算出し、算出した出力値をユニット出力記憶部１３５に記憶させる。
また、ユニット出力算出部１１２は、積和計算一次値記憶部１３１から積和計算一次値情報を読み出した後、積和計算一次値記憶部１３１に記憶されている積和計算一次値情報の値を０にリセットする。
【００８４】
層情報算出部１１３は、ユニット数比較部１１５から比較一致信号を入力されたことに応じて、層情報記憶部１３３に記憶されている層情報の値をインクリメントする。データ出力部１０４は、トークン入力部１０２にトークンが入力されたことに応じて、データ出力フラグ記憶部１３６のデータ出力フラグを出力済みに設定する。
【００８５】
トークン出力部１０３は、データ入力部１０１に入力値が入力されたことに応じて、データ出力フラグ記憶部１３６からデータ出力フラグを読み出し、該読み出したデータ出力フラグが出力済みに設定されている場合には、トークンを出力する（トークン出力手順）。また、トークン出力部１０３は、トークンを出力すると共に、データ出力フラグ記憶部１３６のデータ出力フラグを未出力に設定する。
【００８６】
なお、トークン出力部１０３は、データ入力部１０１に入力値が入力されたことに応じて、データ出力フラグ記憶部１３６からデータ出力フラグを読み出し、読み出したデータ出力フラグが出力済みに設定されている場合には、トークンを出力するという上記トークン出力手順の代わりに、積和計算一次値算出部１１１にデータ入力部１０１からの入力値が入力されたことに応じて、データ出力フラグ記憶部１３６からデータ出力フラグを読み出し、該読み出したデータ出力フラグが出力済みに設定されている場合には、トークンを出力してもよい。
【００８７】
＜階層型ニューラルネットワークに適応した場合のユニットの動作＞
次に、図４と図５とを用いて、図３の階層型ニューラルネットワークに適応した場合のユニットの動作について説明する。まず、図４を用いて、ユニットに入力値が入力された場合の動作について説明する。
【００８８】
まず、データ入力部１０１に、増幅器４からユニット入力バス３を介して入力値が入力される（ステップＳ１００）。次に、ステップＳ１００で、データ入力部１０１に入力値が入力されたことに応じて、カウンタ１１４がユニット識別情報記憶部１３７に記憶されているユニット識別情報の値を、１つインクリメントする（ステップＳ１０１）。
【００８９】
また、ステップＳ１００で、データ入力部１０１に入力値が入力されたことに応じて、積和計算一次値算出部１１１が、ユニット識別情報記憶部１３７から読み出したユニット識別情報と層情報記憶部１３３から読み出した層情報とに該当する結合荷重を重み記憶部１３０から読み出し、読み出した結合荷重と、データ入力部１０１に入力された入力値とを乗算し、乗算した値を積和計算一次値記憶部１３１に記憶されている積和計算一次値情報に加算して記憶させる。
【００９０】
次に、ユニット数比較部１１５が、層情報記憶部１３３から層情報を読み出し、読み出した層情報に該当するユニット数をユニット数記憶部１３４から読み出し、ユニット識別情報記憶部１３７からユニット識別情報を読み出し、読み出したユニット識別情報の値と読み出したユニット数とを比較し、比較した結果が一致した場合に、読み出したユニット識別情報の値と読み出したユニット数とが一致したことを示す比較一致信号を出力する（ステップＳ１０３）。また、このユニット数比較部１１５が、読み出したユニット識別情報の値と読み出したユニット数とを比較し、比較した結果が一致した場合に、ユニット識別情報記憶部１３７に記憶されているユニット識別情報の値をリセットする。
【００９１】
次に、ステップＳ１０３にて比較した結果が一致した場合には、層情報算出部１１３が、ユニット数比較部１１５から比較一致信号を入力されたことに応じて、層情報記憶部１３３に記憶されている層情報の値をインクリメントする（ステップＳ１０４）。
【００９２】
次に、ステップＳ１０３にて比較した結果が一致した場合には、ユニット出力算出部１１２は、ユニット数比較部１１５から比較一致信号を入力されたことに応じて、積和計算一次値記憶部１３１から積和計算一次値情報を読み出し、層情報記憶部１３３から読み出した層情報に該当する出力関数を関数記憶部１３２から読み出し、読み出した出力関数に読み出した積和計算一次値情報を代入することにより出力値を算出し、算出した出力値をユニット出力記憶部１３５に記憶させる（ステップＳ１０５）。次に、このユニット出力算出部１１２は、積和計算一次値記憶部１３１から積和計算一次値情報を読み出した後、積和計算一次値記憶部１３１に記憶されている積和計算一次値情報の値を０にリセットする。
【００９３】
次に、または、ステップＳ１０３にて比較した結果が不一致であった場合には、トークン出力部１０３が、ステップＳ１００にてデータ入力部１０１に入力値が入力されたことに応じて、データ出力フラグ記憶部１３６からデータ出力フラグを読み出し、該読み出したデータ出力フラグが出力済みであるか否かを検出し（ステップＳ１０６）、データ出力フラグが出力済みに設定されている場合には、トークンを出力する（ステップＳ１０７）。
【００９４】
また、トークン出力部１０３は、ステップＳ１０７にてトークンを出力すると共に、データ出力フラグ記憶部１３６のデータ出力フラグを未出力に設定し（ステップＳ１０８）、処理を終了する。一方、ステップＳ１０６にてデータ出力フラグが未出力に設定されている場合には、トークン出力部１０３は、処理を終了する。
【００９５】
次に、図５を用いて、ユニットにトークンが入力された場合の動作について説明する。まず、トークン入力部１０２に、デイジーチェーン制御バス１を介してデイジーチェーンされている順序が１つ前のユニットからのトークンが入力される（ステップＳ２００）。
【００９６】
次に、データ出力部１０４は、トークン入力部１０２にトークンが入力されたことに応じて、ユニット出力記憶部１３５から出力値（演算結果）を読み出し、読み出した出力値（演算結果）を出力値として、増幅器４にユニット出力バス２を介して出力する（ステップＳ２０１）。次に、データ出力部１０４は、トークン入力部１０２にトークンが入力されたことに応じて、データ出力フラグ記憶部１３６のデータ出力フラグを出力済みに設定して（ステップＳ２０２）、処理を終了する。
【００９７】
＜階層型ニューラルネットワークの全体の構成＞
次に、本実施形態による階層型ニューラルネットワークの全体の構成について、説明する。
ここでは、図６に示すように、階層型ニューラルネットワークとして、入力層Ｌ１、隠れ層Ｌ２、出力層Ｌ３の３層がある場合について説明する。各層は、層情報により識別されており、また、階層の層情報は、階層の順に層情報が１つずつ大きくなるようにして、識別されている。例えば、入力層Ｌ１の層情報が１、隠れ層Ｌ２の層情報が２、出力層Ｌ３の層情報が３として識別されている。
【００９８】
また、入力層Ｌ１には、Ｐ１０１、Ｐ１０２、Ｐ１０３の３個のノードがあり、隠れ層Ｌ２には、Ｐ２０１、Ｐ２０２、Ｐ２０３、Ｐ２０４、Ｐ２０５、Ｐ２０６、Ｐ２０７、Ｐ２０８、Ｐ２０９、Ｐ２１０の１０個のノードがあり、出力層Ｌ３には、Ｐ３０１、Ｐ３０２、Ｐ３０３の３個のノードがある場合について説明する。入力層Ｌ１の各ノードの出力は、隠れ層Ｌ２の各ノードの入力に入力され、また、隠れ層Ｌ２の各ノードの出力は、出力層Ｌ３の各ノードの入力に入力されている。
【００９９】
各層において、各ノードはユニット識別情報により識別されており、各ノードのユニット識別情報は、予め定められたノードの配置順に、ユニット識別情報が１つずつ大きくなるようにして設定されている。例えば、Ｐ１０１はユニット識別情報が１であり、Ｐ１０２はユニット識別情報が２であり、Ｐ１０３はユニット識別情報が３である。
【０１００】
本実施の形態においては、それぞれのユニットが、隠れ層Ｌ２、出力層Ｌ３のノードとして機能する。なお、この例においては、ユニットＵ１からユニットＵ３は、隠れ層Ｌ２、出力層Ｌ３のノードとして機能し、ユニットＵ４からユニットＵ１０は、隠れ層Ｌ２のノードとして機能する。ここで、制御装置が入力層Ｌ１として出力値を、増幅器４とユニット出力バス２とを介して、隠れ層Ｌ２としての各ユニットに、順次出力する。そのために、ここでは、各ユニットは、隠れ層Ｌ２と出力層Ｌ３として機能する。
例えば、ユニットＵ１は、隠れ層Ｌ２のノードＰ２０１と出力層Ｌ３のノードＰ３０１として機能する。また、ユニットＵ３は、隠れ層Ｌ２のノードＰ２０３と出力層Ｌ３のノードＰ３０３として機能する。また、ユニットＵ４は、隠れ層Ｌ２のノードＰ２０４として機能する。
【０１０１】
ここで、あるユニットに値が入力された際、入力層Ｌ１、隠れ層Ｌ２、出力層Ｌ３のいずれの層からの入力であるかは、各ユニットにおいて、ユニットが有する層情報記憶部１３３に記憶してある層情報により判定される。
【０１０２】
＜階層型ニューラルネットワークの全体の動作＞
次に、本実施形態による階層型ニューラルネットワークの、一例としての、全体の動作について説明する。ここでは、各ユニットが、出力層Ｌ３のノードとして機能し、トークンを入力されたいずれか１つのユニットが隠れ層Ｌ２のアクティブなノードとして機能する場合について説明する。この場合、各ユニットが出力層Ｌ３のノードとして機能し、アクティブな層が隠れ層Ｌ２であるため、各ユニットの層情報記憶部１３３には層情報の値として２が記憶されている。
【０１０３】
まず、ノードＰ２０１であるユニットＵ１が、トークンが制御装置から入力されることにより、ユニット出力記憶部１３５から出力値を読み出し、出力値を出力すると共に、データ出力フラグ記憶部１３６のデータ出力フラグを出力済みとして設定する（手順Ａ１００）。次に、ノードＰ２０１からの出力値が、ユニット出力バス２と増幅器４とユニット入力バス３とを介して、ユニットＵ１からＵ１０の各ユニットのデータ入力部１０１に入力される。
【０１０４】
次に、ユニットＵ１からＵ１０の各ユニットは、ユニットＵ１からの入力値に基づいて、積和計算一次値算出部１１１が、ユニット識別情報記憶部１３７から読み出したユニット識別情報と層情報記憶部１３３から読み出した層情報とに該当する結合荷重を重み記憶部１３０から読み出し、読み出した結合荷重と、データ入力部１０１に入力された入力値とを乗算し、乗算した値を積和計算一次値記憶部１３１に記憶されている積和計算一次値情報に加算して記憶させる（手順Ａ１０１）。
ここで、各ユニットの積和計算一次値算出部１１１が、ユニット識別情報記憶部１３７から読み出したユニット識別情報と層情報記憶部１３３から読み出した層情報とに該当する結合荷重を重み記憶部１３０から読み出すことにより、各ユニットは、層情報に基づいて出力層Ｌ３のノードとして機能し、また、層情報に基づいて、アクティブなユニットの属する層が隠れ層Ｌ２であると識別し、更に、ユニット識別情報に基づいてアクティブとなる隠れ層Ｌ２での各ノードを識別し、この隠れ層Ｌ２のアクティブとなるノードに対応する結合荷重を、このアクティブとなった隠れ層Ｌ２のノードからの出力値に乗ずることが可能となる。
【０１０５】
ここで、ユニットＵ１のデータ出力フラグ記憶部１３６のデータ出力フラグは、出力済みとして設定されてあるため、ユニットＵ１のトークン出力部１０３は、データ入力部１０１に入力値が入力されたことに応じて、トークンを出力すると共に、データ出力フラグ記憶部１３６のデータ出力フラグを未出力として設定する（手順Ａ１０２）。
【０１０６】
次に、ユニットＵ１から出力されたトークンは、デイジーチェーン制御バス１を介して、デイジーチェーンされている順序が１つ後のユニットであるユニットＵ２のトークン入力部１２に入力される（手順Ａ１０３）。
【０１０７】
ユニットＵ２はトークン入力部１２にトークンが入力されたことに応じて、上記に説明した手順Ａ１００でノードＰ１０１であるユニットＵ１が、トークンが入力された場合と同様に、ユニット出力記憶部１３５から出力値を読み出し、出力値を出力すると共に、データ出力フラグ記憶部１３６のデータ出力フラグを出力済みとして設定する（手順Ａ１０４）。
【０１０８】
以降、同様に、手順Ａ１０１から手順Ａ１０３を繰り返し、隠れ層Ｌ２のノードＰ２１０であるユニットＵ１０が、出力値を出力すると共に、データ出力フラグ記憶部１３６のデータ出力フラグを出力済みとして設定する。
【０１０９】
次に、出力層Ｌ３のノードＰ３０１からＰ３０３に該当するユニットＵ１からＵ３の各ユニットは、手順Ａ１０１と同様に、ユニットＵ１０からの入力値に基づいて、各ユニットの積和計算一次値算出部１１１が、ユニット識別情報記憶部１３７から読み出したユニット識別情報と層情報記憶部１３３から読み出した層情報とに該当する結合荷重を重み記憶部１３０から読み出し、読み出した結合荷重と、データ入力部１０１に入力された入力値とを乗算し、乗算した値を積和計算一次値記憶部１３１に記憶されている積和計算一次値情報に加算して記憶させる（手順Ａ１０５）。
【０１１０】
ここで、ユニットＵ１０からの入力値が、各ユニットのデータ入力部１０１に入力されたことに応じて、各ユニットのカウンタ１１４は、ユニット識別情報記憶部１３７に記憶されているユニット識別情報の値をインクリメントし、ユニット識別情報の値は３となる（手順Ａ１０６）。
なお、各ユニットのユニット数記憶部１３４には、層情報と層情報で識別される階層に属する階層型ニューラルネットワークのユニット数とが関連付けて予め記憶されている。例えば、図６の階層型ニューラルネットワークの場合には、入力層Ｌ１の層情報である値１と、階層型ニューラルネットワークのユニット数、つまり、入力層Ｌ１のノード数である３とが、関連付けて予め記憶されている。また、例えば、図６の階層型ニューラルネットワークの場合には、隠れ層Ｌ２の層情報である値２と、階層型ニューラルネットワークのユニット数、つまり、隠れ層Ｌ２のノード数である１０とが、関連付けて予め記憶されている。
【０１１１】
次に、各ユニットのユニット数比較部１１５は、層情報記憶部１３３から層情報を読み出し、読み出した層情報に該当するユニット数をユニット数記憶部１３４から読み出し、ユニット識別情報記憶部１３７からユニット識別情報を読み出し、読み出したユニット識別情報の値と読み出したユニット数とを比較し、比較した結果が一致するために、読み出したユニット識別情報の値と読み出したユニット数とが一致したことを示す比較一致信号を出力すると共に、ユニット識別情報記憶部１３７に記憶されているユニット識別情報の値をリセットする（手順Ａ１０７）。
【０１１２】
次に、各ユニットのユニット出力算出部１１２は、ユニット数比較部１１５から比較一致信号を入力されたことに応じて、積和計算一次値記憶部１３１から積和計算一次値情報を読み出し、層情報記憶部１３３から読み出した層情報に該当する出力関数を関数記憶部１３２から読み出し、読み出した出力関数に読み出した積和計算一次値情報を代入することにより出力値を算出し、算出した出力値をユニット出力記憶部１３５に記憶させる（手順Ａ１０８）。
【０１１３】
ここで、各ユニットのユニット出力算出部１１２は、層情報記憶部１３３から読み出した層情報に該当する出力関数を関数記憶部１３２から読み出すため、出力層Ｌ３に該当するユニット毎の出力関数により、ユニットの出力値を算出することが可能となる。また、各ユニットのユニット出力記憶部１３５に出力層Ｌ３のノードとして算出した出力値が記憶されるため、各ユニットはトークンが入力された場合に、各ユニットは出力層Ｌ３のアクティブなノードとして、出力値を出力することが可能となる。
【０１１４】
また、各ユニットの層情報算出部１１３が、ユニット数比較部１１５から比較一致信号を入力されたことに応じて、層情報記憶部１３３に記憶されている層情報の値をインクリメントして、層情報の値を３とする。そのために、各ユニットは、以降、トークンが入力されたいずれか１つのユニットが、出力層Ｌ３のアクティブなノードとして出力値を出力する。
【０１１５】
なお、上記において、出力層Ｌ３でユニットＵ３からユニットＵ４にトークンが出力され、次に、トークンを入力されたユニットＵ４が出力層Ｌ３のノードとして出力値を出力するが、この例における階層型ニューラルネットワークにおいて、出力層Ｌ３のノードとしてユニットＵ４に相当するノードは無いため、ユニットＵ４は、出力層Ｌ３のノードとして出力値を出力しないことが望ましい。または、ユニットＵ４は、出力層Ｌ３のノードとしては、出力値の値を０として出力してもよい。または、各ユニットにおいて、出力層Ｌ３としてのユニットＵ４からの出力値に乗じる結合荷重を０として、重み記憶部１３０に予め記憶しておいてもよい。
【０１１６】
このようにユニットＵ４の出力値、または、ユニットＵ４からの出力値を受けた各ユニットの結合荷重を、予め階層型ニューラルネットワークの各層のノードの個数に合わせて設定しておくことにより、ユニットに対して、ある層でそのユニットに対応するノードが無い場合においても、本実施形態の並列演算装置は階層型ニューラルネットワークとして問題なく動作することが可能である。
【０１１７】
以上説明したように、本実施形態を階層型ニューラルネットワークに適応した場合には、一度に発火すうニューロンの個数を１つに限定したことにより、つまり、出力層において出力値を出力するノードを、トークンが入力された１つのユニットに限定することにより、ユニット間の配線が増大することを減じる効果を奏する。
また、１つの出力層のノードであるユニットからの出力値が、ユニット入力バス３を介して、１度に全ての入力層となるノードであるユニットに分配して入力されるため、分配に要する時間を減じる効果を奏する。また、複数のユニットが、並列にユニット内演算を演算するため、全体としての演算が高速になるという効果を奏する。
【０１１８】
例えば、階層型ニューラルネットワークを演算した場合、従来型のプロセッサを用いた場合には、その計算時間は概算として、計算時間＝（シナプス数×１回の演算に要するステップ数÷クロック周波数）として算出されるのに対して、本実形態による並列演算装置を用いた場合には、計算時間＝（ニューロン数×１ニューロンの発火周期）により算出される。ここで、シナプス数は、ニューロン数の２乗に比例するため、本実形態による並列演算装置を用いた階層型ニューラルネットワークの計算時間は、従来型のプロセッサを用いた場合に比較して、計算時間を大幅に減ずることが可能となる。
【０１１９】
また、各ユニットが、階層型ニューラルネットワークの層を変更し、かつ、入力側の層のノードと出力側の層のノードとして機能するため、少ないユニット数で多層のノードの演算を実行することが可能となる効果を奏する。
【０１２０】
なお、上記に説明した第１の実施形態においては、制御装置が入力層Ｌ１として出力値を順次出力し、そのために、各ユニットは隠れ層Ｌ２と出力層Ｌ３のノードとして機能するとして説明したが、各ユニットは、入力層Ｌ１のノードとして機能するようにしてもよい。例えば、制御装置が入力層Ｌ１のノードに対応する出力値を順次出力し、ユニットが入力層Ｌ１のノードとして、制御装置からの出力値をユニット出力記憶部１３５に順次記憶する。次に、トークンが入力されたユニットが、入力層Ｌ１のアクティブなユニットとして出力値を出力する。このようにして、各ユニットは、入力層Ｌ１と、隠れ層Ｌ２と、出力層Ｌ３とのユニットとして機能することも可能である。
【０１２１】
なお、上記の第１の実施形態においては、階層型ニューラルネットワークとして、入力層Ｌ１、隠れ層Ｌ２、出力層Ｌ３の３層がある場合について説明したが、本実施形態は、階層型ニューラルネットワークの階層は３層に限られるものではなく、任意の階層に適応可能である。
【０１２２】
＜第２の実施形態＞
＜自己組織化マップに適応した場合のユニットの構成＞
次に、本実施形態の並列演算装置を、自己組織化マップに適応した場合について説明する。自己組織化マップは、次のような処理を実行することにより、多変量からなるデータの統計的性質を学習し、 類似したデータが近接するように配列し、また、データの視覚化することを可能とするものである。
【０１２３】
各ユニットは、ユニットの結合重みベクトルを有している。まず、各ユニットに入力データベクトルが入力され、各ユニットは入力された入力データベクトルと結合重みベクトルの差であるノルムを算出する（手順Ａ２００）。次に、最もノルムの小さい出力ユニットを勝者ユニットとして選択する（手順Ａ２０１）。次に、選択した勝者ユニットとその近傍のユニットが、より入力データベクトルに近づくように結合重みベクトルの値を予め定められた関数により変更して、学習を行う（手順Ａ２０３）。この、手順Ａ２００から手順Ａ２０３を繰り返す。
【０１２４】
本実施形態の並列演算装置を自己組織化マップに適応する場合、各ユニットに入力されるデータは、上記の手順Ａ２００と、手順Ａ２０１と、手順Ａ２０２とで異なるため、実施形態においては、ユニットに入力するデータに、上記の手順Ａ２００と、手順Ａ２０１と、手順Ａ２０２とを識別する識別情報を組とすることにより、識別する。
【０１２５】
図９（ａ）に示すように、ユニット入力バス３からの入力値は、ノルム部とデータ部とを有する。また、図９（ｂ）に示すように、ノルム部の値が−２である場合、入力値のノルム部は「データ部の値が入力ベクトルである」ことを示す識別子であり、そのデータ部は入力ベクトルである。また、図９（ｃ）に示すように、ノルム部の値が−１である場合、ノルム部は「近傍判定識別情報」であり、そのデータ部は、ネットワーク座標である。また、図９（ｄ）に示すように、ノルム部の値が零または正の値である場合、ノルム部の値はノルムであり、また、データ部は、ネットワーク座標である。これらの詳細については、後述する。
【０１２６】
次に、図７と図８とを用いて、自己組織化マップに適応した場合の並列演算装置のユニットの構成について説明する。ここで、複数のユニットのそれぞれは、ネットワーク座標により識別される座標で予め識別されている。なお、各ユニットは、同一の構成を有しているので、１つのユニットのみについて説明する。
【０１２７】
この図７または図８のユニットの構成において、データ入力部２０１はデータ入力部１１に対応し、データ出力部２０４はデータ出力部１４に対応し、トークン入力部２０２はトークン入力部１２に対応と、トークン出力部２０３はトークン出力部１３に対応する。また、ユニットノルム記憶部２３６と、入力ノルム記憶部２３７と、ユニットネットワーク座標記憶部２３４と、入力ネットワーク座標記憶部２３３とは、ユニット出力記憶部１６に対応する。また、他の構成は、ユニット演算部１５に対応する。
【０１２８】
ユニットネットワーク座標記憶部２３４には、ユニットのネットワーク座標であるユニットネットワーク座標が予め記憶されている。入力ネットワーク座標記憶部２３３には、入力されたネットワーク座標である入力ネットワーク座標が記憶される。重み記憶部２３１には、ユニットの結合重みベクトルが予め記憶されている。入力データ記憶部２３０には、入力された入力データベクトルが記憶される。ユニットノルム記憶部２３６には、ユニットのノルムが記憶される。入力ノルム記憶部２３７には、入力されたノルムが記憶される。
【０１２９】
学習速度記憶部２３５には、学習速度を決める係数である学習速度係数が予め記憶されている。また、学習速度記憶部２３５には、学習した回数を示す学習ステップ数と、前記学習速度係数とが予め関連付けて記憶されている。距離記憶部２３２には、ネットワーク座標の間の距離が近傍であるか否かを判定する基準である基準距離が予め記憶されている。また、距離記憶部２３２には、学習ステップ数と基準距離とが予め関連付けて記憶されている。
【０１３０】
データ入力判定部２２２は、データ入力部２０１に入力された入力値が入力データベクトルであるか否かを判定し、入力データベクトルである場合には、データ抽出部２１０に入力値である入力データベクトルを出力し、入力データベクトルでない場合には、ネットワーク座標抽出部２１１とノルム抽出部２１２とに入力値を出力する。
このデータ入力判定部２２２は、入力値のノルムの値が、入力値が入力データベクトルであることを示す値である−２であるか否かを判定することにより、データ入力部２０１に入力された入力値が入力データベクトルであるか否かを判定する。
【０１３１】
データ抽出部２１０は、データ入力部２０１に入力された入力値が入力データベクトルである場合には、入力された入力データベクトルを入力データ記憶部２３０に記憶させる。また、データ抽出部２１０は、入力された入力データベクトルを、ノルム算出部２１４に出力する。また、データ抽出部２１０は、入力データベクトルが入力される毎に、カウンタ２１３がカウントアップ信号を出力する。
【０１３２】
カウンタ２１３は、ユニットに入力データベクトルが入力される毎に、ユニットに入力データベクトルが入力された回数であるステップ数をカウントアップする。また、カウンタ２１３は、データ抽出部２１０からカウントアップ信号を入力される毎に、ステップ数をカウントアップする。
【０１３３】
ノルム算出部２１４は、データ入力部２０１に入力された入力値が入力データベクトルである場合には、入力された入力データベクトルと、重み記憶部２３１から読み出した結合重みベクトルとのノルムを算出し、算出したノルムをユニットノルムとしてユニットノルム記憶部２３６に記憶させる。
【０１３４】
入力ノルム部２５０は、データ入力部２０１に入力された入力値が、ネットワーク座標とノルムとの組みである場合には、入力されたネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部２３３に記憶させると共に、入力されたノルムを入力ノルムとして入力ノルム記憶部２３７に記憶させる。この入力ノルム部２５０は、ネットワーク座標抽出部２１１と、ノルム抽出部２１２と、入力ノルム判定部２１８とから構成されている。
【０１３５】
ネットワーク座標抽出部２１１は、入力された入力値から、ネットワーク座標を抽出し、抽出したネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部２３３に記憶させる。ノルム抽出部２１２は、入力された入力値から、ノルムを抽出し、抽出したノルムを入力ノルム判定部２１８に出力する。
【０１３６】
入力ノルム判定部２１８は、ノルム抽出部２１２から入力されたノルムの値により、入力されたノルムが、ノルムであるのか、または、ネットワーク座標と近傍判定を実行することを示す識別情報である近傍判定識別情報であるのかを判定し、ノルムである場合には、入力されたノルムを入力ノルムとして入力ノルム記憶部２３７に記憶させる。逆に、入力されたノルムが近傍判定識別情報である場合には、入力ノルム判定部２１８は、近傍判定部２１５に、近傍判定識別情報を出力する。
例えば、この入力ノルム判定部２１８は、ノルム抽出部２１２から入力されたノルムの値が−１である場合には、入力されたノルムが近傍判定識別情報であるとして判定し、ノルム抽出部２１２から入力されたノルムの値が−１でない場合には、ノルムとして判定する。
【０１３７】
ノルム比較部２１７は、トークン入力部２０２を介してトークンが入力されたことに応じて、ユニットノルム記憶部２３６から読み出したユニットノルムと、入力ノルム記憶部２３７から読み出した入力ノルムとを比較する。
【０１３８】
選択出力部２５１は、ノルム比較部２１７の比較した結果が、読み出したユニットノルムが入力ノルムより小さい場合には、ユニットノルム記憶部２３６から読み出したユニットノルムとユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標とを組みとして、データ出力部２０４を介して出力し、読み出したユニットノルムが入力ノルム以上である場合には、入力ノルム記憶部２３７から読み出した入力ノルムと入力ネットワーク座標記憶部２３３から読み出した入力ネットワーク座標とを組みとして、データ出力部２０４を介して出力する。この選択出力部２５１は、ネットワーク座標選択部２１９と、ノルム選択部２２０と、データ合成出力部２２１とから構成されている。
【０１３９】
ノルム選択部２２０は、ノルム比較部２１７の比較した結果が、読み出したユニットノルムが入力ノルムより小さい場合には、ユニットノルム記憶部２３６からユニットノルムを読み出し、読み出したユニットノルムをデータ合成出力部２２１に出力する。また、ネットワーク座標選択部２１９は、ノルム比較部２１７の比較した結果が、読み出したユニットノルムが入力ノルム以上である場合には入力ノルム記憶部２３７から入力ノルムを読み出し、読み出した入力ノルムをデータ合成出力部２２１に出力する。
【０１４０】
ネットワーク座標選択部２１９は、ノルム比較部２１７の比較した結果が、読み出したユニットノルムが入力ノルムより小さい場合には、ユニットネットワーク座標記憶部２３４からユニットネットワーク座標を読み出し、読み出したユニットネットワーク座標をデータ合成出力部２２１に出力する。また、ネットワーク座標選択部２１９は、ノルム比較部２１７の比較した結果が、読み出したユニットノルムが入力ノルム以上である場合には、入力ネットワーク座標記憶部２３３から入力ネットワーク座標を読み出し、読み出した入力ネットワーク座標をデータ合成出力部２２１に出力する。
【０１４１】
データ合成出力部２２１は、ノルム選択部２２０から入力されたユニットノルムまたは入力ノルムであるノルムと、ネットワーク座標選択部２１９から入力されたユニットネットワーク座標または入力ネットワーク座標であるネットワーク座標とを組みとして合成し、組として合成したノルムとネットワーク座標とを、データ出力部２０４を介して出力する。
【０１４２】
近傍判定部２１５は、データ入力部２０１に入力された入力値が、ネットワーク座標と近傍判定を実行することを示す識別情報である近傍判定識別情報との組みである場合には、ユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標が、入力されたネットワーク座標である入力ネットワーク座標の近傍にあるか否かを判定する。
【０１４３】
また、近傍判定部２１５は、近傍判定識別情報が入力ノルム部２５０または入力ノルム判定部２１８から入力されたことに応じて、ユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標が、入力されたネットワーク座標である入力ネットワーク座標の近傍にあるか否かを判定する。
【０１４４】
また、近傍判定部２１５は、データ入力部２０１に入力された入力値が、ネットワーク座標と近傍判定を実行することを示す識別情報である近傍判定識別情報との組みである場合には、距離記憶部２３２から基準距離を読み出し、ユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標と入力されたネットワーク座標である入力ネットワーク座標との間の距離が、読み出した基準距離以下であるか否かを判定することにより、ユニットネットワーク座標が入力ネットワーク座標の近傍にあるか否かを判定する。
【０１４５】
また、近傍判定部２１５は、カウンタ２１３から読み出したステップ数に一致する学習ステップ数に関連付けられている基準距離を距離記憶部２３２から読み出し、該読み出した基準距離に基づいて前記ユニットネットワーク座標が前記入力ネットワーク座標の近傍にあるか否かを判定する。
【０１４６】
重み更新部２１６は、近傍判定部２１５の判定した結果が近傍である場合には、重み記憶部２３１に記憶されている結合重みベクトルの値を更新する。また、重み更新部２１６は、入力データ記憶部２３０から読み出した入力データベクトルと重み記憶部２３１から読み出した結合重みベクトルとの差を算出し、算出した差に、学習速度記憶部２３５から読み出した学習速度係数を乗じた値を、重み記憶部２３１に記憶されている結合重みベクトルに加算することにより、重み記憶部２３１に記憶されている結合重みベクトルの値を更新する。
【０１４７】
また、重み更新部２１６は、カウンタ２１３から読み出したステップ数と一致する学習ステップ数に関連付けられている学習速度係数を学習速度記憶部２３５から読み出し、読み出した学習速度係数に基づいて重み記憶部２３１に記憶されている結合重みベクトルの値を更新する。
【０１４８】
トークン出力フラグ記憶部２３８には、トークン出力部２０３がトークンを出力済みであるか否かを示すトークン出力フラグが記憶されている。トークン出力フラグ判定部２２３は、トークン入力部２０２にトークンが入力されたことに応じて、トークン出力フラグ記憶部２３８からトークン出力フラグを読み出し、読み出したトークン出力フラグがトークンを未出力である場合に、入力されたトークンをノルム比較部２１７に出力すると共に、入力されたトークンを、トークン出力部２０３を介して出力する。
【０１４９】
トークン出力部２０３は、トークン入力部２０２にトークンが入力されたことに応じて、トークンを出力する。また、トークン出力部２０３は、データ合成出力部２２１または選択出力部２５１が、ユニットノルム記憶部２３６から読み出したユニットノルムとユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標とを組みとしてデータ出力部２０４を介して出力したことに応じて、または、入力ノルム記憶部２３７から読み出した入力ノルムと入力ネットワーク座標記憶部２３３から読み出した入力ネットワーク座標とを組みとしてデータ出力部２０４を介して出力したことに応じて、トークンを出力する。また、トークン出力部２０３は、トークンを出力した後に、トークン出力フラグ記憶部２３８に記憶されているトークン出力フラグを出力済みに更新する。
【０１５０】
＜自己組織化マップに適応した場合のユニットの動作＞
次に、図１０と図１１とを用いて、自己組織化マップに適応した場合の並列演算装置のユニットの動作について説明する。最初に、図１０を用いて、ユニットのデータ入力部に入力値が入力された場合の動作について説明する。
【０１５１】
まず、データ入力部２０１に入力値であるデータが入力される（ステップＳ４００）。次に、データ入力判定部２２２は、入力値のノルムの値が、入力値が入力データベクトルであることを示す値である−２であるか否かを判定することにより、データ入力部２０１に入力された入力値が入力データベクトルであるか否かを判定する（ステップＳ４０１）。
【０１５２】
次に、ステップＳ４０１の判定結果が、ノルムの値が−２であり、入力データベクトルである場合には、データ抽出部２１０が、入力された入力データベクトルを入力データ記憶部２３０に記憶させる（ステップＳ４０２）と共に、カウントアップ信号をカウンタ２１３に出力する。次に、カウンタ２１３は、データ抽出部２１０からカウントアップ信号を入力されたことに応じて、ステップ数をカウントアップする（ステップＳ４０３）。
【０１５３】
次に、ノルム算出部２１４は、データ抽出部２１０を介して入力された入力データベクトルと、重み記憶部２３１から読み出した結合重みベクトルとのノルムを算出し、算出したノルムをユニットノルムとしてユニットノルム記憶部２３６に記憶させ（ステップＳ４０４）、処理を終了する。
【０１５４】
一方、ステップＳ４０１の判定結果が、ノルムの値が−２ではなく、入力データベクトルではない場合には、ネットワーク座標抽出部２１１が、入力された入力値から、ネットワーク座標を抽出し、抽出したネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部２３３に記憶させる（ステップＳ４０５）と共に、ノルム抽出部２１２は、入力された入力値から、ノルムを抽出し、抽出したノルムを入力ノルム判定部２１８に出力する。
【０１５５】
次に、入力ノルム判定部２１８は、ノルム抽出部２１２から入力されたノルムの値が−１であるか否かを判定し（ステップＳ４０６）、判定結果が、ノルム抽出部２１２から入力されたノルムの値が−１でない場合には、ノルムとして判定し、入力されたノルムを入力ノルムとして入力ノルム記憶部２３７に記憶させ（ステップＳ４０７）、処理を終了する。
【０１５６】
一方、ステップＳ４０６の判定結果が、ノルム抽出部２１２から入力されたノルムの値が−１である場合には、入力ノルム判定部２１８は、入力されたノルムが近傍判定識別情報であるとして判定し、近傍判定部２１５に、近傍判定識別情報を出力する。次に、近傍判定部２１５は、近傍判定識別情報が入力ノルム判定部２１８から入力されたことに応じて、ユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標が、入力されたネットワーク座標である入力ネットワーク座標の近傍にあるか否かを判定する（ステップＳ４０８）。
【０１５７】
ステップＳ４０８の判定結果が、近傍である場合には、重み更新部２１６が、重み記憶部２３１に記憶されている結合重みベクトルの値を更新して（ステップＳ４０９）、処理を終了する。一方、ステップＳ４０８の判定結果が、近傍でない場合には、処理を終了する。
【０１５８】
次に、図１１を用いて、ユニットのトークン入力部にトークンが入力された場合の動作について説明する。まず、トークン入力部２０２に、トークンが入力される（ステップＳ５００）。次に、トークン出力フラグ判定部２２３が、トークン入力部２０２にトークンが入力されたことに応じて、トークン出力フラグ記憶部２３８からトークン出力フラグを読み出し、読み出したトークン出力フラグがトークンを未出力であるか否かを判定し（ステップＳ５０１）、読み出したトークン出力フラグがトークンを未出力である場合には、入力されたトークンをノルム比較部２１７に出力すると共に、入力されたトークンを、トークン出力部２０３を介して出力する。
【０１５９】
次に、ノルム比較部２１７は、トークン入力部２０２を介してトークンが入力されたことに応じて、ユニットノルム記憶部２３６から読み出したユニットノルムと、入力ノルム記憶部２３７から読み出した入力ノルムとを比較する（ステップＳ５０２）。
【０１６０】
ノルム比較部２１７の比較した結果が、読み出したユニットノルムが入力ノルムより小さい場合には、ノルム選択部２２０が、ユニットノルム記憶部２３６からユニットノルムを読み出し、読み出したユニットノルムをデータ合成出力部２２１に出力する（ステップＳ５０３）と共に、ネットワーク座標選択部２１９が、ユニットネットワーク座標記憶部２３４からユニットネットワーク座標を読み出し、読み出したユニットネットワーク座標をデータ合成出力部２２１に出力する（ステップＳ５０４）。
【０１６１】
次に、データ合成出力部２２１が、ノルム選択部２２０から入力されたユニットノルムと、ネットワーク座標選択部２１９から入力されたユニットネットワーク座標とを組みとして合成し、組として合成したユニットノルムとユニットネットワーク座標とを、データ出力部２０４を介して出力する（ステップＳ５０５）。
【０１６２】
一方、ステップＳ５０２でノルム比較部２１７が比較した結果が、読み出したユニットノルムが入力ノルム以上である場合には、ノルム選択部２２０が、入力ノルム記憶部２３７から入力ノルムを読み出し、読み出した入力ノルムをデータ合成出力部２２１に出力する（ステップＳ５０８）と共に、ネットワーク座標選択部２１９が、入力ネットワーク座標記憶部２３３から入力ネットワーク座標を読み出し、読み出した入力ネットワーク座標をデータ合成出力部２２１に出力する（ステップＳ５０９）。
【０１６３】
次に、データ合成出力部２２１は、ノルム選択部２２０から入力された入力ノルムと、ネットワーク座標選択部２１９から入力された入力ネットワーク座標とを組みとして合成し、組として合成した入力ノルムと入力ネットワーク座標とを、データ出力部２０４を介して出力する（ステップＳ５１０）。
【０１６４】
次に、トークン出力部２０３が、ステップＳ５０５にて、データ合成出力部２２１が、ユニットノルム記憶部２３６から読み出したユニットノルムとユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標とを組みとしてデータ出力部２０４を介して出力したことに応じて、または、ステップＳ５１０にて、入力ノルム記憶部２３７から読み出した入力ノルムと入力ネットワーク座標記憶部２３３から読み出した入力ネットワーク座標とを組みとしてデータ出力部２０４を介して出力したことに応じて、トークンを出力する（ステップＳ５０６）。
【０１６５】
次に、トークン出力部２０３は、トークンを出力した後に、トークン出力フラグ記憶部２３８に記憶されているトークン出力フラグを出力済みに更新し（ステップＳ５０７）、処理を終了する。
【０１６６】
＜自己組織化マップに適応した場合の並列演算装置全体の動作＞
次に、自己組織化マップに適応した場合の並列演算装置全体の動作について説明する。まず、制御装置は、入力ベクトルと、値を−２としたノルムとを組みとした入力値を、全てのユニットに、ユニット入力バス３を介して、入力する（手順Ａ３００）。
【０１６７】
次に、入力ベクトルを入力された各ユニットのノルム算出部２１４は、入力された入力ベクトルと、ユニットが有する結合重みベクトルとのノルムを算出し、算出したノルムを、ユニットノルム記憶部２３６に記憶させる（手順Ａ３０１）。
【０１６８】
次に、制御装置は、ユニットＵ１に、トークンを入力する（手順Ａ３０２）。次に、ユニットＵ１のノルム比較部２１７は、ユニットＵ１のトークン入力部２０２を介してトークンが入力されたことに応じて、ユニットノルム記憶部２３６から読み出したユニットノルムと、入力ノルム記憶部２３７から読み出した入力ノルムとを比較する（手順Ａ３０３）。
【０１６９】
ここで、ユニットＵ１の入力ノルム記憶部２３７には、ユニットＵ１が手順Ａ３０１で算出したノルムに比較して、十分に大きな値のノルムが予め記憶されているものとして説明する。
【０１７０】
ここでは、ユニットノルム記憶部２３６から読み出したユニットノルムの方が、入力ノルム記憶部２３７から読み出した入力ノルムより小さいため、ユニットＵ１の選択出力部２５１は、ユニットノルム記憶部２３６から読み出したユニットノルムとユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標とを組みとして、データ出力部２０４を介して出力する（手順Ａ３０４）。
【０１７１】
次に、ユニットＵ１のデータ出力部２０４が出力したノルムとネットワーク座標とが組として、ユニット出力バス２と増幅器４とユニット入力バス３とを介して、各ユニットのデータ入力部２０１に入力される（手順Ａ３０５）。
【０１７２】
次に、各ユニットの入力ノルム部２５０は、データ入力部２０１に入力された入力値のノルムの値が−１でないため、入力されたネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部２３３に記憶させると共に、入力されたノルムを入力ノルムとして入力ノルム記憶部２３７に記憶させる（手順Ａ３０６）。ここで、入力ネットワーク座標記憶部２３３に記憶されるネットワーク座標と、入力ノルム記憶部２３７に記憶されるノルムは、ユニットＵ１の、ネットワーク座標とノルムである。
【０１７３】
次に、ユニットＵ１のトークン出力部２０３は、ユニットＵ１のデータ合成出力部２２１または選択出力部２５１が、ユニットノルム記憶部２３６から読み出したユニットノルムとユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標とを組みとしてデータ出力部２０４を介して出力したことに応じて、トークンを、デイジーチェーン制御バス１を介してユニットＵ２に出力する（手順Ａ３０７）。
【０１７４】
次に、手順Ａ３０３のユニットＵ１と同様に、ユニットＵ２のノルム比較部２１７は、ユニットＵ２のトークン入力部２０２を介してユニットＵ１からのトークンが入力されたことに応じて、ユニットノルム記憶部２３６から読み出したユニットノルムと、入力ノルム記憶部２３７から読み出した入力ノルムとを比較する（手順Ａ３０８）。
【０１７５】
ここで、入力ノルム記憶部２３７に記憶される入力ノルムは、ユニットＵ１のノルムであり、また、ユニットノルム記憶部２３６から読み出したユニットノルムは、ユニットＵ２のノルムであるため、このユニットＵ２のノルム比較部２１７は、ユニットＵ２のノルムと、ユニットＵ１のノルムとを比較することになる。以降、ユニットＵ２のノルム比較部２１７の比較結果に基づいて、手順Ａ３０４から手順Ａ３０６の処理が、同様に実行される（手順Ａ３０９）。
【０１７６】
従って、トークンがユニットＵ２に入力されることにより、ユニットＵ１とユニットＵ２とのノルムが比較され、ノルムが小さい方のユニットが勝者ユニットとして選択され、勝者ユニットのノルムとユニットネットワーク座標とが、全てのユニットの入力ノルム記憶部２３７と入力ネットワーク座標記憶部２３３とに記憶される（手順Ａ３１０）。
【０１７７】
次に、手順Ａ３０７と同様に、ユニットＵ２からユニットＵ３にトークンが送信されることにより、次に、ユニットＵ３が、手順Ａ３０３から手順Ａ３０７とを実行することにより、ユニットＵ１とユニットＵ２との勝者ユニットのノルムと、ユニットＵ３のノルムとが比較され、ユニットＵ１からユニットＵ３までのユニットの中からの勝者ユニットが選択される（手順Ａ３１１）。
【０１７８】
以降、トークンがデイジーチェーン順序でユニットに渡されていく毎に、トークンが入力されたユニットの中での勝者ユニットが選択される（手順Ａ３１２）。その後、デイジーチェーン順序で最後のユニットであるユニットＵ１０にトークンが入力されると、ユニットＵ１０のデータ出力部２０４が、ユニットＵ１からユニットＵ１０の中の勝者ユニットのノルムとネットワーク座標とを出力する（手順Ａ３１３）。
【０１７９】
制御装置は、ユニットＵ１０のデータ出力部２０４が出力するノルムとネットワーク座標とを、勝者ユニットのノルムとネットワーク座標として受信する（手順Ａ３１４）。これにより、制御装置は、入力ベクトルに対しての、勝者ユニットのノルムとネットワーク座標とを、受信することが出来る。
【０１８０】
次に、制御装置は、ユニットＵ１０のデータ出力部２０４から受信したネットワーク座標と、値を−１としたノルムとを組みとした入力値を、全てのユニットに、ユニット入力バス３を介して、入力する（手順Ａ３１５）。
【０１８１】
次に、ネットワーク座標と値を−１としたノルムとを組みとした入力値を入力された各ユニットは、各ユニットのネットワーク座標抽出部２１１が、入力された入力値から、ネットワーク座標を抽出し、抽出したネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部２３３に記憶させる（手順Ａ３１６）と共に、各ユニットの入力ノルム判定部２１８が、ノルム抽出部２１２から入力されたノルムの値が−１であるため、入力されたノルムが近傍判定識別情報であるとして判定し、近傍判定部２１５に、近傍判定識別情報を出力する（手順Ａ３１７）。
【０１８２】
次に、各ユニットの近傍判定部２１５が、近傍判定識別情報が入力ノルム部２５０または入力ノルム判定部２１８から入力されたことに応じて、ユニットネットワーク座標記憶部２３４から読み出したユニットネットワーク座標が、入力ネットワーク座標記憶部２３３から読み出した入力ネットワーク座標の近傍にあるか否かを判定する（手順Ａ３１８）。
【０１８３】
次に、各ユニットの重み更新部２１６は、そのユニットの近傍判定部２１５の判定した結果が近傍である場合には、そのユニットの重み記憶部２３１に記憶されている結合重みベクトルの値を更新する（手順Ａ３１９）。これにより、勝者ユニットのネットワーク座標の近傍であるユニットの結合重みベクトルが、更新され、学習が実行される。
【０１８４】
以上に説明した自己組織化マップに適応した場合の並列演算装置においては、ユニット入力バス３に全てのユニットが接続されているため、制御装置が入力ベクトルをユニット入力バス３に１度出力するだけで、全てのユニットに入力ベクトルを入力することができる。また、各ユニットが、入力された入力ベクトルに対して、並列にノルムを算出することができるため、ユニット全体で、短時間でノルムを算出することができる。
【０１８５】
また、ユニット入力バス３に全てのユニットが接続されているため、制御装置が勝者ユニットのネットワーク座標をユニット入力バス３に１度出力するだけで、全てのユニットに勝者ユニットのネットワーク座標を入力することができる。また、各ユニットが、入力された勝者ユニットのネットワーク座標の近傍にあるか否かを並列に判定し、学習するため、ユニット全体で、短時間で学習することができる。
【０１８６】
また、デイジーチェーン制御バス１を介してトークンをユニット間で渡していくことにより、デイジーチェーン順序で順に勝者ユニットを決定することができる。つまり、勝者ユニットの決定が、デイジーチェーン制御バス１という、簡易な配線で可能となる。
【０１８７】
＜冗長性を持たせた並列演算装置＞
次に、図１２を用いて、デイジーチェーン制御バス１に冗長性をもたせた場合の並列演算装置の構成を説明する。
各ユニットは、予め定められた順序であるデイジーチェーン順序において、１つ飛ばしの順序である第１の冗長順序で、複数のユニットのうちの半数のユニットが、第１の冗長デイジーチェーン制御バス６によりデイジーチェーンされている。例えば、ユニットＵ１とユニットＵ３とユニットＵ５とユニットＵ７とユニットＵ９とが、第１の冗長デイジーチェーン制御バス６により、デイジーチェーンされている。
【０１８８】
また、予め定められた順序であるデイジーチェーン順序において、１つ飛ばしの順序で、上記の第１の冗長デイジーチェーン制御バス６によりデイジーチェーンされていない複数のうちの残りの半数のユニットが、第２の冗長デイジーチェーン制御バス７によりデイジーチェーンされている。例えば、ユニットＵ２とユニットＵ４とユニットＵ６とユニットＵ８とユニットＵ１０とが、第２の冗長デイジーチェーン制御バス７により、デイジーチェーンされている。
【０１８９】
次に、図１３を用いて、第１の冗長デイジーチェーン制御バス６によりデイジーチェーンされているユニットの構成について説明する。つまり、例えば、ユニットＵ１とユニットＵ３とユニットＵ５とユニットＵ７とユニットＵ９の構成について説明する。なお、冗長性について変更される構成のみについて説明するため、図２のユニットの構成において、変更される構成のみについて説明する。
【０１９０】
図１３において、図１３（ａ）と（ｃ）とには、変更される前の図２で示されたユニットの構成が示してある。並列演算装置が冗長性を有するようにすることにより、図１３（ａ）のユニットの構成が、図１３（ｂ）の構成に変更される。また、図１３（ｃ）のユニットの構成が、図１３（ｄ）のユニットの構成に変更される。
【０１９１】
図１３（ｂ）に示すようにユニットは、トークン出力部Ａ１３＿１と、トークン出力部Ｂ１３＿２と、トークン出力部選択部１７と、トークン選択情報記憶部１８とを有する。ここで、トークン出力部Ａ１３＿１は、図２のトークン出力部１３に対応する。
【０１９２】
トークン出力部Ｂ１３＿２（冗長トークン出力部）は、トークン入力部１２にトークンが入力されたことに応じて、トークンを冗長順序で１つ後のユニットへ第１の冗長デイジーチェーン制御バス６を介して出力する。トークン選択情報記憶部１８には、トークン出力部Ａ１３＿１とトークン出力部Ｂ１３＿２とのうち、いずれを選択するかを示すトークン出力選択情報が記憶されている。
【０１９３】
トークン出力部選択部１７は、トークン入力部１２にトークンが入力されたことに応じて、トークン選択情報記憶部１８から読み出したトークン出力選択情報に基づいて、トークン出力部Ａ１３＿１とトークン出力部Ｂ１３＿２とのうちいずれか一方を選択し、選択したトークン出力部Ａ１３＿１またはトークン出力部Ｂ１３＿２を介してトークンを出力する。
【０１９４】
また、図１３（ｄ）に示すように、ユニットは、トークン入力部Ａ１２＿１と、トークン入力部Ｂ１２＿２（冗長トークン入力部）とを有する。ここで、トークン入力部Ａ１２＿１は、図２のトークン入力部１２に対応する。
【０１９５】
トークン入力部Ｂ１２＿２は、第１の冗長デイジーチェーン制御バス６を介してデイジーチェーンされている冗長順序が１つ前のユニットからのトークンを入力する。
また、トークン出力部１３は、トークン入力部Ａ１２＿１またはトークン入力部Ｂ１２＿２にトークンが入力されたことに応じて、トークンを出力する。
【０１９６】
また、第１の冗長デイジーチェーン制御バス６によりデイジーチェーンされているユニットと同様に、第２の冗長デイジーチェーン制御バス７によりデイジーチェーンされているユニットも、第２の冗長デイジーチェーン制御バス７を第１の冗長デイジーチェーン制御バス６として、トークン入力部Ｂ１２＿２（冗長トークン出力部）とトークン選択情報記憶部１８とトークン出力部選択部１７とトークン入力部Ｂ１２＿２（冗長トークン入力部）を有している。
【０１９７】
なお、ここでは、トークン選択情報記憶部１８には、トークン出力部Ａ１３＿１とトークン出力部Ｂ１３＿２とのうち、いずれを選択するかを示すトークン出力選択情報が記憶されているもとして説明したが、このトークン出力選択情報は、例えば、デイジーチェーン順序で次のユニットに欠陥があるか否かを示す情報であってもよい。
【０１９８】
トークン出力選択情報が、デイジーチェーン順序で次のユニットに欠陥があるか否かを示す情報である場合、トークン出力部選択部１７は、トークン選択情報記憶部１８から読み出したトークン出力選択情報に基づいて、デイジーチェーン順序で次のユニットに欠陥がない場合には、トークン出力部Ａ１３＿１を選択してトークンを出力し、逆に欠陥がある場合には、トークン出力部Ｂ１３＿２を選択してトークンを出力する。
【０１９９】
＜欠陥チェックの方法＞
次に、欠陥チェックの方法について説明する。ここでは、並列演算装置が、階層型ニューラルネットワークの場合について説明する。まず、ニューラルネットワークの並列演算装置が、結合係数がすべて同じで、中間層無しの入力層と出力層との２層である階層型ニューラルネットワークとして演算を実行し、制御装置が、演算結果の出力値を得る。制御装置は、出力値を判定し、正常な場合は処理を修了する。制御装置は、出力値を判定し、異常があることを検出した場合には、異常ユニットの前段ユニットのトークン選択情報記憶部１８に対し、欠陥情報を書き込む。
【０２００】
次に、制御装置の、正常な場合と異常な場合の、判定方法とその処理について、詳細に説明する。まず、制御装置は、全てのユニットから、すべて同じ出力を得る場合に、正常として判定する。次に、制御装置は、ユニットからの出力が途中で止まる、または、ユニットからの出力値が予想された値と異なる部分がある場合に、異常として判定する。この場合、制御装置は、異常として検出したユニットである異常ユニットの、デイジーチェーン順序で１つ前となる前段ユニットのトークン選択情報記憶部１８に、欠陥情報を書き込み、もう一度欠陥チェックを実行し、判定結果が正常となるまで欠陥チェックを実行する。このとき、欠陥が原因で電気的に切り離す必要が生じる場合に備え、ユニットの入出力部にハイインピーダンススイッチを設け、回路を電気的に切り離す機構を備えても良い。
【０２０１】
以上のように、並列演算装置が、第１の冗長デイジーチェーン制御バス６と、第２の冗長デイジーチェーン制御バス７とにより冗長性を有するようにすることにより、デイジーチェーン制御バス１またはいずれかのユニットに欠陥が生じた場合においても、並列演算装置は問題なく動作することが可能となる。
【０２０２】
なお、ここでは、冗長配線が、デイジーチェーン順序において１つ飛ばしの第１の冗長デイジーチェーン制御バス６と第２の冗長デイジーチェーン制御バス７との場合について説明したが、更に、デイジーチェーン順序において２つ飛ばしの冗長デイジーチェーン制御バスなどを追加することも可能である。
【０２０３】
なお、上記実施形態の図２、図３、図７および図８で示した構成である記憶部のそれぞれは、ハードディスク装置や光磁気ディスク装置、フラッシュメモリ等の不揮発性のメモリや、ＣＲ−ＲＯＭ等の読み出しのみが可能な記憶媒体、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような揮発性のメモリ、あるいはこれらの組み合わせにより構成されるものとする。
なお、図２のユニット算出部は、専用のハードウェアにより実現されるものであってもよく、また、メモリおよびマイクロプロセッサにより実現させるものであってもよい。
【０２０４】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【０２０５】
【図１】この発明の一実施形態による並列演算装置の構成を示すブロック図である。
【図２】この発明の一実施形態による並列演算装置のユニットの構成を示すブロック図である。
【図３】階層型ニューラルネットワークにおける図２のユニットの構成を示すブロック図である。
【図４】図３のユニットの動作を示す第１のフローチャート図である。
【図５】図３のユニットの動作を示す第２のフローチャート図である。
【図６】ニューラルネットワークを説明する説明図である。
【図７】自己組織化マップにおける図２のユニットの構成を示す第１のブロック図である。
【図８】自己組織化マップにおける図２のユニットの構成を示す第２のブロック図である。
【図９】自己組織化マップにおけるデータ構造を示す説明図である。
【図１０】図７および図８のユニットの動作を示す第１のフローチャート図である。
【図１１】図７および図８のユニットの動作を示す第２のフローチャート図である。
【図１２】冗長回路を有した並列演算装置の構成を示すブロック図である。
【図１３】図１２のユニットの構成を示すブロック図である。
【符号の説明】
【０２０６】
１  デイジーチェーン制御バス
２  ユニット出力バス
３  ユニット入力バス
４  増幅器
５  トリガ入力線
６  第１の冗長デイジーチェーン制御バス
７  第２の冗長デイジーチェーン制御バス
１１、１０１、２０１  データ入力部
１２、１０２、２０２  トークン入力部
１３、１０３、２０３  トークン出力部
１４、１０４、２０４  データ出力部
１６  ユニット出力記憶部
１７  トークン出力部選択部
１８  トークン選択情報記憶部
１１１  積和計算一次値算出部
１１２  ユニット出力算出部
１１３  層情報算出部
１１４  カウンタ
１３０、２３１  重み記憶部
１３１  積和計算一次値記憶部
１３２  関数記憶部
１３３  層情報記憶部
１３４  ユニット数記憶部
１３５  ユニット出力記憶部
１３６  データ出力フラグ記憶部
１３７  ユニット識別情報記憶部
２１０  データ抽出部
２１１  ネットワーク座標抽出部
２１２  ノルム抽出部
２１３  カウンタ
２１４  ノルム算出部
２１５  近傍判定部
２１６  重み更新部
２１７  ノルム比較部
２１８  入力ノルム判定部
２１９  ネットワーク座標選択部
２２０  ノルム選択部
２２１  データ合成出力部
２２２  データ入力判定部
２２３  トークン出力フラグ判定部
２３０  入力データ記憶部
２３２  距離記憶部
２３３  入力ネットワーク座標記憶部
２３４  ユニットネットワーク座標記憶部
２３５  学習速度記憶部
２３６  ユニットノルム記憶部
２３７  入力ノルム記憶部
２３８  トークン出力フラグ記憶部
２５０  入力ノルム部
２５１  選択出力部
Ｌ１  入力層
Ｌ２  隠れ層
Ｌ３  出力層
Ｐ１  出力端子
Ｐ２  入力端子
Ｐ３  トリガ入力端子
Ｕ１、Ｕ２、Ｕ３、Ｕ４、Ｕ５、Ｕ６、Ｕ７、Ｕ８、Ｕ９、Ｕ１０  ユニット
【図１】
2008299381.tif 000003
【図２】
2008299381.tif 000004
【図３】
2008299381.tif 000005
【図４】
2008299381.tif 000006
【図５】
2008299381.tif 000007
【図６】
2008299381.tif 000008
【図７】
2008299381.tif 000009
【図８】
2008299381.tif 000010
【図９】
2008299381.tif 000011
【図１０】
2008299381.tif 000012
【図１１】
2008299381.tif 000013
【図１２】
2008299381.tif 000014
【図１３】
2008299381.tif 000015