(57)【要約】      （修正有）【課題】複数のプロセッサエレメント（ＰＥ）を用いて並列計算をおこなう電子回路システムを提供する。【解決手段】システムは、複数のPEと、ホストコンピュータに通信可能に接続され、複数のPEのそれぞれと接続し、複数のPEをリング状に接続可能にする電子回路とを備え、電子回路は、複数のPEをリング状に接続した場合に、通信不能となった接続経路の代わりに新たな接続経路を再構成することによって、通信不能となった接続経路に係らない残りのPE間の通信を維持可能にする。【選択図】図１
2012199767.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサエレメント（PE）を用いて並列計算をおこなう電子回路システムであって、
複数のPEと、
ホストコンピュータに通信可能に接続され、前記複数のPEのそれぞれと接続し、前記複数のPEをリング状に接続可能にする電子回路とを備え、
前記電子回路は、前記複数のPEをリング状に接続した場合に、通信不能となった接続経路の代わりに新たな接続経路を再構成することによって、当該通信不能となった接続経路に係らない残りのPE間の通信を維持可能にすることを特徴とする、電子回路システム。
【請求項２】
前記電子回路は、前記複数のＰＥをリング状に通信可能にする第１のＦＰＧＡ基板であって、前記通信不能となった接続経路に係るＰＥを特定して、当該特定されたＰＥを除いた残りのＰＥ間の通信を維持可能にする第１のＦＰＧＡ基板を備える、請求項１に記載の電子回路システム。
【請求項３】
前記電子回路は、さらに、
複数の前記第１のＦＰＧＡ基板をリング状に通信可能にする第２のＦＰＧＡ基板であって、通信不能となった第１のＦＰＧＡ基板を特定して、当該通信不能な第１のＦＰＧＡ基板を除いた残りの第１のＦＰＧＡ基板間の通信を維持可能にする第２のＦＰＧＡ基板と、
前記ホストコンピュータに通信可能に接続され、複数の前記第２のＦＰＧＡ基板をリング状に通信可能にする第３のＦＰＧＡ基板であって、通信不能となった第２のＦＰＧＡ基板を特定して、当該通信不能な第２のＦＰＧＡ基板を除いた残りの第２のＦＰＧＡ基板間の通信を維持可能にする第３のＦＰＧＡ基板と、を備える請求項２に記載の電子回路システム。
【請求項４】
複数のプロセッサエレメント（ＰＥ）を用いて並列計算をおこなう電子回路システムであって、
複数のＰＥをリング状に通信可能にする第１のＦＰＧＡ基板であって、通信不能となったＰＥを特定して、当該通信不能なＰＥを除いた残りのＰＥ間の通信を維持可能にする第１のＦＰＧＡ基板と、
複数の第１のＦＰＧＡ基板をリング状に通信可能にする第２のＦＰＧＡ基板であって、通信不能となった第１のＦＰＧＡ基板を特定して、当該通信不能な第１のＦＰＧＡ基板を除いた残りの第１のＦＰＧＡ基板間の通信を維持可能にする第２のＦＰＧＡ基板と、
ホストコンピュータに通信可能に接続され、複数の第２のＦＰＧＡ基板をリング状に通信可能にする第３のＦＰＧＡ基板であって、通信不能となった第２のＦＰＧＡ基板を特定して、当該通信不能な第２のＦＰＧＡ基板を除いた残りの第２のＦＰＧＡ基板間の通信を維持可能にする第３のＦＰＧＡ基板と、を備える電子回路システム。
【請求項５】
前記第３のＦＰＧＡ基板は、ホストコンピュータからの信号を前記複数のＰＥ中の特定された少なくとも１つのＰＥへ送るべく、当該少なくとも１つのＰＥとの通信経路を確立可能な前記第２のＦＰＧＡ基板を特定し、当該第２のＦＰＧＡ基板にホストコンピュータからの信号を送り、
前記特定された第２のＦＰＧＡ基板は、前記少なくとも１つのＰＥとの通信経路を確立可能な前記第１のＦＰＧＡ基板を特定し、当該第１のＦＰＧＡ基板に受け取った前記ホストコンピュータからの信号を送り、
前記特定された第１のＦＰＧＡ基板は、前記少なくとも１つのＰＥへ受け取った前記ホストコンピュータからの信号を送ることにより、前記ホストコンピュータから前記少なくとも１つのＰＥへ至る階層状通信が可能となる、請求項３または４に記載の電子回路システム。
【請求項６】
前記ＰＥは、
メモリと該メモリに格納されたデータを用いて演算処理を行うＣＰＵとを含む演算処理回路と、
演算処理回路が出力する演算処理結果から内部通信データを作成する通信データ作成回路と、
外部から受信した外部通信データの内容に応じて、演算処理回路内のメモリに演算に必要となるデータを送り、通信データ作成回路から受信した内部通信データを外部に出力する通信処理回路と、を含む請求項１〜５のいずれかに記載の電子回路システム。
【請求項７】
前記第１のＦＰＧＡ基板、前記第２のＦＰＧＡ基板および前記第３のＦＰＧＡ基板の各々は、
外部から受信した受信データを一時的に格納する第１バッファと、
第１バッファに格納された受信データの内容に応じて、当該受信データの転送経路を決定する経路決定回路と、
経路決定回路が決定した経路へ向けて前記受信データを出力する出力回路と、を含む請求項３または４に記載の電子回路システム。
【請求項８】
前記演算処理回路は、前記通信処理回路が外部から受信した前記演算に必要となるデータを前記メモリに送り終わるまでの間、前記メモリに既に格納された他のデータを用いた演算処理を優先しておこなう、請求項６に記載の電子回路システム。
【請求項９】
前記内部通信データ、前記外部通信データ、および前記受信データは、パケットのデータ構造を有し、当該パケットの先頭に通信経路を選択するためのコード情報を含む、請求項７に記載の電子回路システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子回路システムに関し、より具体的には、複数のプロセッサエレメント（ＰＥ）を用いて並列計算をおこなう電子回路システムに関する。
【背景技術】
【０００２】
分子軌道法（MO法）を用いて計算をおこなう場合のように、大量な計算を高速に処理するために、複数の専用電子回路（専用プロセッサ）を用いた専用計算機システムが存在する。専用計算機システムでは、専用プロセッサを並列に動作（並列計算）させることによって計算時間の短縮を図る。
【０００３】
一方、人工ニューラルネットワーク（ANN）と呼ばれる機械学習の一手法で小脳をモデル化できる可能性が示唆されている。特に、小脳の中にみられるような多数の入力信号処理をモデル化するためには、大規模かつ高速に応答するANNが必要となる可能性が高い。
【０００４】
専用計算機システムにおける並列計算を用いて処理することによりその計算処理時間の短縮を図ることが可能となる。その場合、従来から専用プロセッサ間を同一の転送時間をもつ通信経路で環状に結ぶ構成（リング状通信アーキテクチャ）をもった電子回路システムがよく使われている。
【０００５】
特許文献１は、複数のマスターノードおよびスレーブノードの各々がリングインターフェースを介して併設された２つのリングの各々に接続する通信ネットワークを開示する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２００７−５２５１０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載の通信ネットワークでは、２つのリングの一方のリングにおいてスレーブノード間の通信故障が起きた場合、他方のリングを介してそのスレーブノード間の通信をおこなう。
【０００８】
しかし、特許文献１に記載の方法では、２つのリングを用意し、その各々に各ノード（専用プロセッサ）を接続させる必要が有るので、その接続構成が複雑かつ大規模になってしまう。また、そもそも１つのリングのみを有するリング状通信における通信経路の故障に対しては何らその対策を開示するものではない。
【０００９】
したがって、本発明は、複数のプロセッサエレメント（ＰＥ）を用いて並列計算をおこなう電子回路システム、より具体的には大規模なANN計算を並列計算する専用計算機システムにおいて、通信経路の故障を迅速に回避することによりその信頼性を高め、また高速な計算処理を可能にすることによりその性能を向上させることを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、複数のプロセッサエレメント（ＰＥ）を用いて並列計算をおこなう電子回路システムを提供する。その電子回路システムは、複数のPEと、ホストコンピュータに通信可能に接続され、複数のPEのそれぞれと接続し、複数のPEをリング状に接続可能にする電子回路とを備え、電子回路は、複数のPEをリング状に接続した場合に、通信不能となった接続経路の代わりに新たな接続経路を再構成することによって、通信不能となった接続経路に係らない残りのPE間の通信を維持可能にすることを特徴とする。
【００１１】
本発明によれば、複数のPEをリング状に接続可能な電子回路システムにおいて、故障や配線不良などにより通信不能となった接続経路を迂回して残りのＰＥ間のリング状通信を維持することができる。これにより、システムの信頼性が向上する。
【００１２】
本発明の一形態によると、電子回路は、複数のＰＥをリング状に通信可能にする第１のＦＰＧＡ基板であって、通信不能となった接続経路に係るＰＥを特定して、当該特定されたＰＥを除いた残りのＰＥ間の通信を維持可能にする第１のＦＰＧＡ基板を備える。
【００１３】
本発明によれば、電子回路は、さらに、複数の第１のＦＰＧＡ基板をリング状に通信可能にする第２のＦＰＧＡ基板であって、通信不能となった第１のＦＰＧＡ基板を特定して、当該通信不能な第１のＦＰＧＡ基板を除いた残りの第１のＦＰＧＡ基板間の通信を維持可能にする第２のＦＰＧＡ基板と、ホストコンピュータに通信可能に接続され、複数の第２のＦＰＧＡ基板をリング状に通信可能にする第３のＦＰＧＡ基板であって、通信不能となった第２のＦＰＧＡ基板を特定して、当該通信不能な第２のＦＰＧＡ基板を除いた残りの第２のＦＰＧＡ基板間の通信を維持可能にする第３のＦＰＧＡ基板と、を備える。
【００１４】
本発明の一形態によると、複数のプロセッサエレメント（ＰＥ）を用いて並列計算をおこなう電子回路システムを提供する。その電子回路システムは、複数のＰＥをリング状に通信可能にする第１のＦＰＧＡ基板であって、通信不能となったＰＥを特定して、当該通信不能なＰＥを除いた残りのＰＥ間の通信を維持可能にする第１のＦＰＧＡ基板と、複数の第１のＦＰＧＡ基板をリング状に通信可能にする第２のＦＰＧＡ基板であって、通信不能となった第１のＦＰＧＡ基板を特定して、当該通信不能な第１のＦＰＧＡ基板を除いた残りの第１のＦＰＧＡ基板間の通信を維持可能にする第２のＦＰＧＡ基板と、ホストコンピュータに通信可能に接続され、複数の第２のＦＰＧＡ基板をリング状に通信可能にする第３のＦＰＧＡ基板であって、通信不能となった第２のＦＰＧＡ基板を特定して、当該通信不能な第２のＦＰＧＡ基板を除いた残りの第２のＦＰＧＡ基板間の通信を維持可能にする第３のＦＰＧＡ基板と、を備える。
【００１５】
本発明の一形態によれば、階層化された通信構造をなす第１から第３のＦＰＧＡ基板を有する電子回路システムにおいて、故障や配線不良などにより通信不能となったＰＥあるいは各ＦＰＧＡ基板を迂回して他のＰＥ間およびＦＰＧＡ基板間のリング状通信を維持することができる。これにより、システムの信頼性が向上する。
【００１６】
本発明の一形態によると、第３のＦＰＧＡ基板は、ホストコンピュータに通信可能に接続され、ホストコンピュータからの信号を複数のＰＥ中の特定された少なくとも１つのＰＥへ送るべく、当該少なくとも１つのＰＥとの通信経路を確立可能な前記第２のＦＰＧＡ基板を特定し、当該第２のＦＰＧＡ基板にホストコンピュータからの信号を送り、特定された第２のＦＰＧＡ基板は、少なくとも１つのＰＥとの通信経路を確立可能な第１のＦＰＧＡ基板を特定し、当該第１のＦＰＧＡ基板に受け取ったホストコンピュータからの信号を送り、特定された第１のＦＰＧＡ基板は、少なくとも１つのＰＥへ受け取ったホストコンピュータからの信号を送ることにより、ホストコンピュータから少なくとも１つのＰＥへ至る階層状通信が可能となる。
【００１７】
本発明の一形態によれば、第３のＦＰＧＡ基板から第１のＦＰＧＡ基板へ至る経路を特定しながらホストコンピュータからの信号を少なくとも１つのＰＥへ送ることができ、これによりリング状データ通信から階層状データ通信ヘの切り替えが可能となる。また、送信先として全てのＰＥを選択することにより、全てのＰＥへ同一データを送信するブロードキャスト通信もおこなうことができる。これにより、通信の種類（形態）に応じて最適な通信経路を選択しながらその通信速度を高めることが可能となる。
【００１８】
本発明の一形態によると、ＰＥは、メモリと該メモリに格納されたデータを用いて演算処理を行うＣＰＵとを含む演算処理回路と、演算処理回路が出力する演算処理結果から内部通信データを作成する通信データ作成回路と、外部から受信した外部通信データの内容に応じて、演算処理回路内のメモリに演算に必要となるデータを送り、通信データ作成回路から受信した内部通信データを外部に出力する通信処理回路と、を含む。
【００１９】
本発明の一形態によれば、演算処理回路は、通信処理回路が内部通信データを外部に出力する間、あるいは通信データ作成回路が内部通信データを作成する間、これらのデータとは独立した他のデータの演算処理をおこなうことができ、これによりデータ通信（転送）とデータ処理を並行して進めることが可能となる。その結果、並列計算処理をより迅速におこなうことが可能となり、システム全体の性能を向上させることが可能となる。
【００２０】
本発明の一形態によると、第１のＦＰＧＡ基板、第２のＦＰＧＡ基板、および第３のＦＰＧＡ基板の各々は、外部から受信した受信データを一時的に格納する第１バッファと、第１バッファに格納された受信データの内容に応じて、当該受信データの転送経路を決定する経路決定回路と、経路決定回路が決定した経路へ向けて前記受信データを出力する出力回路と、を含む。
【００２１】
本発明の一形態によれば、経路決定回路が受信データの内容に応じて転送経路を決定しながら当該受信データを送信することができ、これによりリング状データ通信と階層状データ通信の双方を切り替えながら実施することが可能となる。
【００２２】
本発明の一形態によると、演算処理回路は、通信処理回路が外部から受信した演算に必要となるデータを前記メモリに送り終わるまでの間、メモリに既に格納された他のデータを用いた演算処理を優先しておこなう。
【００２３】
本発明の一形態によれば、通信を行っている間は通信されるデータを使わない計算を実施することにより、通信時間の影響を軽減し、もしくは無くすことができる。言い換えれば、計算時間によって通信時間を隠す効果があり、いわば通信を計算に隠蔽することが可能となる。これにより、並列計算処理をより迅速におこなうことが可能となり、システム全体の性能を向上させることが可能となる。
【００２４】
本発明の一形態によると、内部通信データ、外部通信データ、および受信データは、パケットのデータ構造を有し、当該パケットの先頭に通信経路を選択するためのコード情報を含む。
【００２５】
本発明の一形態によれば、パケットの先頭にある通信経路を選択するためのコード情報を読み取ることにより、通信経路を選択することが可能となる。
【図面の簡単な説明】
【００２６】
【図１】本発明の一実施例に従う、電子回路システムの一般的な構成を示す図である。
【図２】本発明の一実施例に従う、電子回路システムの構成を示す図である。
【図３】本発明の一実施例に従う、Ｌ０〜Ｌ２のＦＰＧＡ基板間の接続構成を示す図である。
【図４】本発明の一実施例に従う、Ｌ１のＦＰＧＡ基板での通信障害とその対応を示す図である。
【図５】本発明の一実施例に従う、Ｌ２のＦＰＧＡ基板での通信障害とその対応を示す図である。
【図６】本発明の一実施例に従う、電子回路システムでの階層状通信の様子を示す図である。
【図７】本発明の一実施例に従う、電子回路システムでのリング状通信の様子を示す図である。
【図８】本発明の一実施例に従う、ＰＥの構成を示す図である。
【図９】本発明の一実施例に従う、ＰＥの詳細な構成を示す図である。
【図１０】本発明の一実施例に従う、隣り合う２つのＰＥ間の信号の流れを示す図である。
【図１１】本発明の一実施例に従う、図１０の２つのＰＥ間での計算と通信の時間推移を示す図である。
【図１２】本発明の一実施例に従う、図１０の２つのＰＥ間での計算と通信の時間推移を示す図である。
【図１３】本発明の一実施例に従う、階層状通信用のパケットの構成を示す図である。
【図１４】本発明の一実施例に従う、リング状通信用のパケットの構成を示す図である。
【図１５】本発明の一実施例に従う、Ｌ０およびＬ１のＦＰＧＡ回路の構成を示す図である。
【図１６】本発明の一実施例に従う、Ｌ２のＦＰＧＡ回路の構成を示す図である。
【発明を実施するための形態】
【００２７】
図面を参照しながら本発明の実施の形態を説明する。図１は、本発明の電子回路システムの一般的な構成を示す図である。電子回路システム１は、符号１００〜１０３でその一部が例示される、（Ｒ＋１）個の階層Ｌ（０）〜Ｌ（Ｒ）から構成される。各階層には、上下の階層と通信を行うＦＰＧＡ（Field Programmable Gate Array）回路を備える。ＦＰＧＡは、従来からある、内部の回路構成（配線）をプログラム（変更）可能なＩＣである。階層Ｌ（ｉ）に備えられているＦＰＧＡ回路は（Ｓ_ｉ＋１）個あり、Ｌ（ｉ）−ＦＰＧＡと呼ぶ。階層の数（Ｒ＋１）は、任意に決めることができ、少なくとも１個以上の数であれば良い。また各階層のＦＰＧＡ回路の数も、任意に決めることができ、少なくとも１個以上の数であれば良い。
【００２８】
Ｌ（ｉ）−ＦＰＧＡは、上の階層のＬ（ｉ＋１）−ＦＰＧＡとの間では、図１の矢印１０５で例示する上下方向の１対の通信経路で接続する。また下の階層のＬ（ｉ―１）−ＦＰＧＡとは、図の矢印１０６で例示する複数対の通信経路を用いて接続する。この対の数が接続しているＬ（ｉ―１）−ＦＰＧＡの数と一致しており、この数は２個以上であれば良い。また、各Ｌ（ｉ）−ＦＰＧＡが接続する下の階層のＬ（ｉ―１）−ＦＰＧＡの数は固定でも良く、あるいはＬ（ｉ）−ＦＰＧＡ毎に異なっても良い。さらに、階層毎に接続する下の階層のＦＰＧＡの数が異なっていても良い。
【００２９】
最上層のＦＰＧＡであるＬ（Ｒ）−ＦＰＧＡ１００は、上の階層の通信経路を通してホストコンピュータ（以下、単に「ホスト」と呼ぶ）１０と接続する。また最下層のＦＰＧＡであるＬ（０）−ＦＰＧＡ１０３は、下の階層の通信経路を通して、図に示した複数個のＰＥ１８と接続する。Ｌ（０）−ＦＰＧＡ１０３と接続するＰＥ１８の数は、少なくとも２個以上であれば良い。
【００３０】
図１のシステムは、１枚あるいは複数枚のボードから構成される。ボードの構成としては、Ｌ（Ｒ）−ＦＰＧＡ以下のシステムを全て１枚のボードに搭載しても良く、あるいは１個のＬ（ｉ）−ＦＰＧＡ毎に異なるボードに搭載しても良い。また各階層のＬ（ｉ）−ＦＰＧＡをまとめて１枚のボードに搭載しても良く、あるいは複数階層ずつまとめて１枚のボードに搭載しても良い。またＰＥに関しても同様に、１個のＰＥを１枚のボードに搭載しても良く、あるいは複数個のＰＥを１枚のボードに搭載してもよい。このように、本発明は、図１に例示されるシステムに関して、考えられるあらゆるボードの組み合わせによって実現可能である。
【００３１】
次に、本発明の一実施形態として３階層の場合を例にとり、本発明の実施形態の詳細について説明する。なお、上述したように、本発明の階層化は３階層に限られず、１階層あるいは２階層、または４階層以上で任意に設定することができることは言うまでもない。
【００３２】
図２は、電子回路システムの構成を示す図である。電子回路システム１は、ホスト１０に対して、Ｌ２―ＦＰＧＡ基板１２、Ｌ１―ＦＰＧＡ基板１４およびＬ０―ＦＰＧＡ基板１６が階層状に接続する構成を有する。本明細書では、このＦＰＧＡ基板の階層状の接続構成を階層状ボード構成とも呼ぶ。各ＦＰＧＡ基板は、後述する図３に例示されるように、内部にＦＰＧＡ回路を含む。
【００３３】
Ｌ２―ＦＰＧＡ基板１２は、ホスト１０と直接あるいはリング状の通信網を介して相互に通信可能に接続する。１つのＬ２―ＦＰＧＡ基板１２には、Ｌ１（０）からＬ１（ｋ）までの（ｋ＋１）個（ｋは任意の整数）のＬ１のＦＰＧＡ基板１４が相互に通信可能に接続される。
【００３４】
各々のＬ１―ＦＰＧＡ基板１４には、２つのＬ０―ＦＰＧＡ基板１６が通信可能に接続される。（ｋ＋１）個のＬ１―ＦＰＧＡ基板１４に対しては、全体で（Ｍ＋１）個（Ｍ＋１＝２ｋ＋２）のＬ０―ＦＰＧＡ基板１６が相互に通信可能に接続される。各々のＬ０―ＦＰＧＡ基板１６には、２つのプロセッサエレメント（ＰＥ）１８が通信可能に接続される。（Ｍ＋１）個のＬ０―ＦＰＧＡ基板１６に対しては、全体で（Ｎ＋１）個（Ｎ＋１＝２（Ｍ＋１））のＰＥ１８が相互に通信可能に接続される。各ＰＥ１８はメモリ２０に接続する。メモリ２０はＤＲＡＭ等の記憶手段からなる。
【００３５】
図３は、本発明の一実施例に従う、Ｌ０〜Ｌ２のＦＰＧＡ基板間の接続構成、言い換えれば階層状ボード構成における接続構成を示す図である。図３の接続構成は、図２の階層状ボード構成１において、リング状通信を実現可能とするための構成である。図３（ａ）は、Ｌ２―ＦＰＧＡ基板１２と、Ｌ１―ＦＰＧＡ基板１４と、Ｌ０―ＦＰＧＡ基板１６との間の接続構成を示す図である。図３（ｂ）は、（ａ）に示される１つのＬ１―ＦＰＧＡ基板１４と４つのＬ０―ＦＰＧＡ基板１６との間の接続構成を示す図である。図３（ｃ）は、１つのＬ０―ＦＰＧＡ基板１６内の接続構成を示す図である。
【００３６】
図３（ａ）において、Ｌ２―ＦＰＧＡ基板１２は、Ｌ２―ＦＰＧＡ回路１３を内蔵する。Ｌ２―ＦＰＧＡ回路１３内では、図に示されるように、４つのＬ１―ＦＰＧＡ基板１４の入出力がリング状に接続可能にプログラム（配線）されている。図では、Ｌ１―ＦＰＧＡ基板１４の（３）番から（０）番へ向けて信号が伝搬可能になっている。Ｌ１―ＦＰＧＡ基板１４の各々には、４つのＬ０―ＦＰＧＡ基板１６が接続されている。ホスト１０は、Ｌ１―ＦＰＧＡ基板１４の（０）番に接続するＬ０―ＦＰＧＡ基板１６の左端の１つに接続し、図３（ｃ）から明らかなように、ＰＥ（０）とのみ通信可能に接続する。
【００３７】
図３（ｂ）において、（ａ）の場合と同様に、Ｌ１―ＦＰＧＡ基板１４は、Ｌ１―ＦＰＧＡ回路１５を内蔵する。Ｌ１―ＦＰＧＡ回路１５内では、図に示されるように、４つのＬ０―ＦＰＧＡ基板１６の入出力がリング状に接続可能にプログラム（配線）されている。図では、Ｌ０―ＦＰＧＡ基板１６の（３）番から（０）番へ向けて信号が伝搬可能になっている。
【００３８】
図３（ｃ）において、（ａ）と（ｂ）の場合と同様に、Ｌ０―ＦＰＧＡ基板１６は、Ｌ０―ＦＰＧＡ回路１７を内蔵する。Ｌ０―ＦＰＧＡ回路１７内では、図に示されるように、４つのＰＥ１８の入出力がリング状に接続可能にプログラム（配線）されている。図では、ＰＥ（３）番からＰＥ（０）番へ向けて信号が伝搬可能になっている。各ＰＥにはメモリ２０が通信可能に接続されている。ホスト１０は、ＰＥ（０）とのみ通信可能に接続することは既に述べた通りである。このように、図３の階層状ボード構成によって６４個（＝４ｘ４ｘ４）のＰＥをリング状に接続することが可能となる。なお、接続するＰＥの数やボードの枚数はこの例に限定されず、電子回路システムの規模に応じて任意に設定することができる。
【００３９】
次に、図４と図５を参照しながら、図３の電子回路システムにおいて、通信不能となる障害が発生した場合の対応について説明する。図４は、Ｌ０―ＦＰＧＡ基板１６とＬ１―ＦＰＧＡ基板１４との間での配線故障が発生した場合の対応を示す。図５は、Ｌ１―ＦＰＧＡ基板１４とＬ２―ＦＰＧＡ基板１２との間での配線故障が発生した場合の対応を示す。
【００４０】
図４において、Ｌ０―ＦＰＧＡ基板の（１）番から（０）番へ向かう途中の×印で示した位置Ａが配線故障箇所を示している。Ｌ０―ＦＰＧＡ基板の（１）番から（０）番へ信号伝搬が不能となっている。この場合、図４（ｂ）に示すように、Ｌ１―ＦＰＧＡ回路１５内において、基板Ｌ０―ＦＰＧＡ基板の（１）番をバイパスして、Ｌ０―ＦＰＧＡ基板の（２）番から（０）番へ向かう矢印Ｐで示される経路を作り、故障箇所Ａを通信経路から除外する。これにより、正常に動作するリング状通信経路を構成できる。具体的には、矢印Ｐで示される経路ができるように、Ｌ１―ＦＰＧＡ回路１５内の配線（接続構成）を変更する。
【００４１】
図５において、Ｌ１―ＦＰＧＡ基板の（１）番から（０）番へ向かう途中の×印で示した位置Ｂが配線故障箇所を示している。Ｌ１―ＦＰＧＡ基板の（１）番から（０）番へ信号伝搬が不能となっている。この場合、図５（ｂ）に示すように、Ｌ２―ＦＰＧＡ回路１３内において、Ｌ０―ＦＰＧＡ基板の（１）番から（３）番へ向かう矢印Ｑで示される経路を作り、故障箇所Ｂを通信経路から除外する。具体的には、矢印Ｑで示される経路ができるように、Ｌ２―ＦＰＧＡ回路１３内の配線（接続構成）を変更する。同時に、ホスト１０との接続箇所もＬ０―ＦＰＧＡ基板の（０）番から（１）番へ変更する。これにより、正常に動作するリング状通信経路を構成できる。
【００４２】
このように、本発明の階層状ボード構成によって、使用できるＰＥ数は若干減少するものの、配線故障のような基板間の通信故障が発生した場合でもＦＰＧＡ回路の配線構成を変更することにより、正常に動作するリング状通信を比較的簡単に構成することができる。
【００４３】
次に、図６と図７を参照しながら、本発明の電子回路システムにおいて、通信の種類に応じて通信経路を変更する例について説明する。最初にこの通信経路の変更が何故必要になるのかについて説明する。
【００４４】
図３に例示した本発明の階層状ボード構成を使ってリング状通信を行い、大規模ＡＮＮを実行する方法では、ＰＥ間の通信に要する時間が部分的に長くなってしまうという現象が発生する。例えば図３において、（ｃ）の一方端のＰＥ（０）から他方端のＰＥ（３）へ向かう通信は、５つのＦＰＧＡ基板（回路）を通過するため（Ｌ０−＞Ｌ１−＞Ｌ２−＞Ｌ１−＞Ｌ０）、他のＰＥ間通信よりも時間がかかってしまう。本発明では、この問題を以下に述べる通信経路の変更と、後述するＰＥ回路構成およびその動作アルゴリズムの工夫によって改善する。
【００４５】
図３に例示した階層状ボード構成では、リング状通信以外に、ホストから全てのＰＥへデータを同時に転送するブロードキャストと呼ばれる通信経路を構成することもできる。したがって、本発明では、以下に述べるように、通信の種類、すなわち階層状通信かリング状通信かで通信経路を切り替える。
【００４６】
図６と図７の構成は、基本的に図３の構成と同様であり、ホスト１０に対して、Ｌ２―ＦＰＧＡ基板１２、Ｌ１―ＦＰＧＡ基板１４およびＬ０―ＦＰＧＡ基板１６が階層状に接続する構成を有する。図３との対比では、図３の階層状ボード構成では、各層の要素を４つ集めて１つ上の階層に接続していたが、図６と図７の構成では簡略化のため、集める要素数を２としている。またホスト１０は、図３ではＰＥ１８の１つに直接接続していたが、図６と図７の構成では次に述べる階層状通信を行うため、Ｌ２―ＦＰＧＡ基板１２に接続する。
【００４７】
図６の階層状通信の経路は、ホスト１０と各ＰＥ１８の間の通信に適している。この通信経路には、各ＦＰＧＡ基板の中で実線の上向き矢印で示した上りと、破線の下向き矢印で示した下りの２つがある。このうち下りの経路では、ホスト１０から１つのＰＥ１８へデータを転送する場合と、ホストから全てのＰＥへデータを同時に転送する場合の２通りの通信が行われる。後者の通信を「ブロードキャスト」と呼ぶ。図６の階層状通信は、特にこのブロードキャストに有効である。なぜならば、上述したようにリング状通信経路を使った場合は、全てのＰＥを通過する時間を要するのに対し、図６の階層状通信経路を使ってブロードキャストを実施したときには３つの階層のＦＰＧＡ基板を通過する時間で済むからである。従って、これらの通信を行うときには、図２の電子回路システムの通信経路を図６のように切り替える。
【００４８】
一方、リング状通信を行う場合は、図７に示すように通信経路を切り替える。この場合、各ＦＰＧＡ基板内において、図３で示したように、順次隣りの要素へ信号が伝搬される。図７では、図の右から左へ向けて信号が伝搬するようにリング状通信経路が作られる。このように、本発明では通信の種類に応じて、通信経路を階層状通信の経路またはリング状通信の経路に切り替えることにより、通信時間の短縮化を実現する。そのため、本発明では、後述するように、各ＦＰＧＡ基板（回路）やＰＥが、伝搬する信号からそれぞれの通信の種類を早期に判定し、図６または図７の構成を動的に選択しながらデータを出力する。このしくみによって高速な通信経路の切り替えを可能にする。
【００４９】
次に、ＰＥ回路構成およびその動作アルゴリズムの工夫について説明する。図８はＰＥの回路構成を示す図である。図８のＰＥ１８は、プロセッサ回路３０と、通信データ処理回路３１と、通信データ生成回路３２と、外部メモリインターフェイス回路３３を含む。プロセッサ回路３０では、演算回路３５が内部データメモリ３６との間で浮動小数点表現のデータを読み書きしながら、プログラムメモリ３７に格納されたプログラムに従った特定の演算手順で演算を実行する。
【００５０】
一方、通信処理回路３１は、ＰＥ１８の中で通信の制御を担う回路であり、外部から入力される「外部通信データ」を読み出し、通信の内容に応じて外部メモリやプロセッサ回路３０中の内部データメモリ３６への読み書きを行ったり、外部メモリインターフェイス回路３３を通して、外部メモリ２０との間の読み書きを行ったり、あるいは通信データを出力する。また、通信データを生成するときは、通信処理回路３１は、通信データ生成回路３２から「内部通信データ」を読み込んで出力処理を行う。
【００５１】
図８のＰＥの回路構成において、プロセッサ回路３０は可能な限り通信には関与しないように工夫している。例えば、ある演算処理例では、プロセッサ回路３０では、演算回路３５による演算結果を内部データメモリ３６に書き込むと同時に、通信データ生成回路３２にも書き込むだけである。このデータに対する通信処理は、通信データ生成回路３２で一括して行う。通信データ生成回路３２は、演算結果が書き込まれたことを検出すると、その演算結果（データ）に通信の種類を示す信号などの制御情報を付加して「内部通信データ」を生成し、それを通信処理回路３１に出力してＰＥの外部に出力する。このように通信処理回路３１が動作している間にプロセッサ回路３０では別の計算を並行して実施できるので、効率化が図れる。
【００５２】
また、他の処理例では、別のＰＥから取得したデータを使って計算を行う。このとき、通信処理回路３１は、取得したデータを、プロセッサ回路３０を関与させることなく内部データメモリ３６への書き込みを実施する。このため、プロセッサ回路３０は、そのデータが内部データメモリ３６に書き込まれるまでの間別の計算を実行することができ、効率化が図れる。
【００５３】
図９はＰＥの回路構成の詳細図である。図９は図８をより詳細にしたものである。図９のFIFO_I、FIFO_R、Select、Master_PE、Slave_PEは、図８の通信処理回路３１を構成する。FIFO_IとFIFO_Rは、入力または出力するパケットを一時的に格納するためのFIFOと呼ばれるメモリである。Master_PEは、FIFOからパケットを受け取って、その内容を解釈して振り分ける回路である。Slave_PEは、Master_PEからパケットの転送要求を受け取って、パケットをＵＯから出力する回路である。
【００５４】
図９のRing_Outは、図８の通信データ生成回路３２と同様の機能をもち、書き込まれたデータから自動的にパケットを生成して出力する。図９のプロセッサ回路３０の内容は、図８とほぼ同じであるが、内部データメモリに対して書き込み、読み出しを行うMem_IF回路を明示している。また図８の演算回路３５はFUと表示している。
【００５５】
図８の外部メモリ２０とインタフェース回路３３は概略のみ表示していたが、図９では２個のメモリ（Mem0、Mem1）とともにインタフェース回路の接続を明示した。外部メモリは高速ダイナミックメモリインタフェースを有するDDR2 SDRAMを使用することを想定している。Mem0は、主にデータを格納し、メモリインターフェース回路DDR2_IF0はMaster_PEとの間、またはプロセッサ回路３０のData_Memoryとの間でやりとりする。またMem1は、主にプロセッサ回路３０のプログラムメモリを格納するため、メモリインターフェース回路DDR2 IF1はMaster_PEとの間のやりとり、またはプログラムメモリへの書き込みを行う。
【００５６】
通信処理回路の処理内容についてさらに説明する。FIFOは、UIから入力するパケットを格納するFIFO_Iと、Ring_Outで生成するパケットを格納するFIFO_Rの２種類がある。それぞれにパケットが入っている場合、Select回路によってそのうちの１つを選択してMaster_PEに送る。Master_PEではパケットの内容を見て、外部メモリ、内部メモリとの間の読み書きを行う。さらにパケットを出力するときには、Slave_PEへパケットを転送する。Master_PEが内部メモリとの間の読み書き機能をもっているため、FUにおける計算の効率化が可能である。
【００５７】
次に、ＰＥの動作アルゴリズムの工夫について説明する。図８、図９のプロセッサ回路の内部にあるプログラムメモリに格納する演算手順を変えることによって工夫を施す。その内容は、データを転送している間はＰＥでそのデータを使用しない演算を行っておくことにより転送待ち時間をなくす、というものである。この内容について、以下に具体的に説明する。
【００５８】
図１０は、リング状通信を行う隣り合う２つのＰＥ間の信号の流れを示す図である。PE#NからPE#（N+1）にリング状通信経路の一部である通信経路Nを通して転送を行うものとする。図１１と図１２は、図１０のPE#NとPE#（N+1）との間での計算と通信の時間推移を示す図である。図１１は、従来からの計算手順による場合の例であり、図１２は本発明の計算手順を用いた場合の例である。図１１と図１２において、ｙ１（１）、ｙ２（１）、、、ｙ５（１）はPE#Nでの演算によって生成されるデータ、ｙ６（１）、ｙ７（１）、、、ｙ１０（１）はPE#（N+1）での演算によって生成されるデータを意味するものとする。
【００５９】
図１１において、まずPE#Nにおいて計算１を行い、時刻Tgenでｙ１（１）を生成する。次にｙ１（１）を通信経路Nに送り出し、転送後時刻TarrにPE#(N+1)に到着する。一方、PE#(N+1)でも計算2と呼ぶ同様の計算を行っており、PE#Nがｙ１（１）、ｙ２（１）、、、ｙ５（１）を求めるのと同様のタイミングでｙ６（１）、ｙ７（１）、、、ｙ１０（１）を求めるものとする。またその後、ｙ１０（１）の計算が終了した時刻Tcで、PE#Nから送られてくるｙ１（１）、ｙ２（１）、、、ｙ５（１）を使った計算をすぐに開始するものとする。このとき、時刻TcでPE#(N+1)にy1(1)が到着している必要がある。ところが、通信経路Nではｙ１（１）の転送に時間がかかっているためTc＜Tarrとなり、PE#(N+1)においてTarrまでの期間は計算を全く行わない待ち時間になってしまう。
【００６０】
階層状ボード構成のように一部の通信経路に通信時間が長いものがあると、ここで説明した待ち時間の発生によって計算の効率が低下するためANN計算の性能に影響を及ぼす。この課題の対策として、PE#(N+1)での計算２の順番を変更し、ｙｋ（１）のうち転送を待つ必要がない、自ら計算して生成したデータを最初に使う。本発明では、最初にPE#(N+1)で求められたｙ６（１）、ｙ７（１）、、、ｙ１０（１）を使った計算を行い、その後ｙ１（１）、ｙ２（１）、、、ｙ５（１）などの他のＰＥで求められた値を使った計算を行う。このような計算手順に変更したときの計算と通信の時間推移を図１１に示す。
【００６１】
図１２において、PE#(N+1)での計算１によってｙ６（１）、ｙ７（１）、、、ｙ１０（１）を生成する時刻も示した。この場合、図１１にも示した時刻Tcにおいて、転送中のｙ１（１）ではなく、ｙ６（１）を使用した計算を開始する。ｙ６（１）の値は、PE#(N+1)において時刻Tgen2ですでに求められているため、この計算は即座に開始できる。その後、ｙ１０（１）を使った計算までを行った後、時刻Tc2においてデータｙ１（１）を使った計算を開始する。このとき、ｙ６（１）、ｙ７（１）、、、ｙ１０（１）を使った計算に時間がかかるようであれば、図１２のようにTc2＞Tarrとすることができるため、ｙ１（１）を使った計算はTc2ですぐに開始できる。その結果、図１１の待ち時間を入れずに同じ内容の計算を行えるため、ANNの計算時間は通信時間の影響を受けることがなくなる。また、ｙ６（１）、ｙ７（１）、、、ｙ１０（１）を使った計算が速くできて、Tc2＜Tarrとなってしまう場合には、図１１と同様待ち時間が必要になるが、この待ち時間の長さは短くてすむ。
【００６２】
このように計算の順番に工夫を施し、通信を行っている間は通信されるデータを使わない計算を実施することにより、通信時間の影響を軽減し、もしくはなくすことができる。この手法は計算時間によって通信時間を隠す効果があるので、いわば「通信を計算に隠蔽する」ことができる。
【００６３】
次に、図１３と図１４を参照しながら、本発明の通信されるデータ構造について説明する。図１３は、階層状通信用のパケットの構成を示す図である。図１４は、リング状通信用のパケットの構成を示す図である。
【００６４】
図１３の階層状通信用のパケットの構成において、パケットは複数個の32ビットのデータから構成される。通信を行うときは左から順番に32ビットデータが通信路に送られる。図１３でStartと示したデータは、スタートパケットと呼ばれる通信の開始を示すコードで、固定値0x5555AAAAである。これはFPGA回路などの回路がパケット処理の開始を認識するためのものである。この機能に加えて、スタートパケットは、通信経路を選択するための情報としても使用する。またHeaderと示したデータはヘッダパケットと呼ばれ、読み出しまたは書き込みなどのコマンドを示すCmd、データ長を示すLength、データのソースとなるデバイスIdを示すSource ID、データのターゲットとなるデバイスを示すTarget IDなどのパケットの制御情報を表すフィールドを含んでいる。他に、同図に示したように、ソースアドレス（Source Ad）、ターゲットアドレス（Target Ad）、およびデータを格納するパケット（Data）も含んでいる。これらの情報によって、データ送付元、および送付先が指定できる。
【００６５】
次に、図１３のパケット構成を用いて図６に例示されるような階層状通信を行う場合の通信内容について説明する。通信を行うときには、まず要求の内容に応じて、ホスト１０が図１３の(a)または(c)で示すリクエストパケットを送り出し、ＰＥ１８に届ける。その後、ＰＥ１８は、前述のヘッダパケットに含まれるコマンドに従って読み出しまたは書き込み操作を行った後、図１３の(b)または(d)で示すアクノリッジパケットをホスト１０に返す。このときホスト１０からの書き込みの場合はリクエストパケットに、読み出しの場合はアクノリッジパケットに、それぞれデータが付加される。また途中のＬ２、Ｌ１、Ｌ０のＦＰＧＡ基板１２、１４、１６は、上位階層からの入力端子、あるいは下位階層からの入力端子を通して、リクエストパケットやアクノリッジパケットを入力し、それに含まれるヘッダパケットのTarget IDで指定される送り先に届くように通信経路を選択する。そして、下位階層への出力端子、あるいは上位階層への出力端へ振り分けてパケットをそのまま出力する。
【００６６】
例えば図６の外付けメモリ２０からデータを読み出すときは、ホスト１０は、図１３(a)に示した読み出しリクエストパケットを出力し、下りの経路を通して各ＦＰＧＡ基板において経路を選択しながらパケットを振り分ける。次にＰＥ１８は、図１３の(b)に示した読み出しアクノリッジパケットの最後に読み出したデータを付加して出力し、上りの経路を通してホスト１０に送る。また、ホスト１０から全てのＰＥにデータをブロードキャストするときは、図１３(c)に示す書き込みリクエストパケットを通してデータを送り出す。このとき、ヘッダ部のTarget IDに、ブロードキャストであることを示すIDを設定する。次に、Ｌ０、Ｌ１、Ｌ２のＦＰＧＡ基板１２、１４、１６は、上位階層から来るパケットのヘッダ部のTarget IDがブロードキャストを示していることを判別して、全ての下り出力に同時に同じパケットを送出する。このようにして、最終的に全てのＰＥ１８に同時にパケットが渡され、各ＦＰＧＡ基板（回路）はローカルメモリへデータを書き込む。
【００６７】
図１４のリング状通信用のパケットの構成は、図１３に示した階層状通信用パケットと比較して、通信の開始を示すスタートパケットが異なる。図１３のスタートパケットは、固定値0x5555AAAAであるが、図１４のスタートパケット（Start2）はこれとは異なる固定値とし、通信の内容（形態）に応じて、例えば0x5578AAE0、0x5578AAE1のような値をとる。このスタートパケットは、通信経路の選択などにも使用する。またスタートパケット以外の構成は、図１３の(b)や(c)とほぼ同じ構成である。図７で例示されるリング状通信を行うときは必ず通信の起点となるＰＥが存在する。その起点となるＰＥは、リング状通信のヘッダパケットのSource IDに自らのＰＥ情報を入れた上で、リング状通信経路を通して図１３に示したパケットを送り出す。このパケットは次のＰＥが受け取り、適切な処理を行う。
【００６８】
次に、図１５と図１６を参照しながら、本発明のＬ０〜Ｌ２のＦＰＧＡ回路の構成について説明する。図１５は、Ｌ０およびＬ１のＦＰＧＡ回路１５、１７の構成を示す図である。図１６は、Ｌ２のＦＰＧＡ回路１３の構成を示す図である。
【００６９】
図１５において、FIFO_UI、FIFO_DIL、FIFO_DIRと記した回路は、図９の場合と同様に、入力するパケットを一時的に格納するためのFIFOと呼ばれるメモリである。パケットが例えば複数個の32ビットデータから構成されている場合、これらのFIFOは32ビットデータを順番に格納し、格納した順番に出力する。また、Master_UI、Master_DIL、Master_DIRとした回路は、それぞれFIFOからパケットを受け取って、その内容を解釈して振り分ける回路である。さらに、Slave_UO、Slave_DOR、Slave_DIRと記した回路は、それぞれMasterからパケットの転送要求を受け取って、複数個のMasterからの要求の調停を行って、順番にパケットを出力する回路である。
【００７０】
図６に例示したような階層状通信を行うときには、MasterからSlaveへの矢印上でHierと示した経路で転送要求を行い、リング状通信を行うときはRingと示した経路で転送を行う。以下に、Master_UIを例にとってMasterの動作を説明する。パケットのスタートコードが0x5555AAAAであるときは階層状通信と判定する。そして、続くヘッダパケットの値に応じて、パケット送付先のアドレスやデータのサイズ、読み出しか書き込みか、という情報を読み取り、経路の選択や送るパケットの構成などの制御を行う。パケットの送付先が単一のＰＥである場合は、接続先のSlaveに応じてSlave_DOLまたはSlave_DORを選択してパケットを送る。またブロードキャストである場合は、Slave_DOLとSlave_DORの両方に、同時にパケットを送る。またパケットのスタートコードが例えば上述した0x5578AAE0または0x5578AAE1になっているときにはリング状通信と判定し、無条件でSlave_DORにパケットを送る。このようにパケットのスタートコードによって経路を選択するため、リアルタイムで通信経路の切り替えが可能である。
【００７１】
次に、Slave_DOLを例にとってSlaveの動作を説明する。Ｌ０またはＬ１のＦＰＧＡ回路１５、１７に対して、DIRからリング状通信のパケットを入力すると同時に、UIから階層状通信を通したブロードキャストの要求を入力する、という状況が発生する可能性がある。この場合は、Slave_DOLは、調停を実施して２つのパケットの処理の順序を決定し、その順序に従って処理してDOLから出力する。
【００７２】
図１６において、Ｌ２のＦＰＧＡ回路１３は、図１５のＬ０およびＬ１のＦＰＧＡ回路１５、１７と同様に、FIFO、Master、Slaveの各回路で構成されている。これらの回路の動作内容は図１５の対応する回路とほぼ同様である。すなわち、Master_UI、Master_DIk（k=0〜7）とした回路は、それぞれFIFOからパケットを受け取って、その内容を解釈して振り分ける回路である。Slave_UO、Slave_DOk（k=0〜7）と記した回路は、それぞれMasterからパケットの転送要求を受け取って、複数個のMasterからの要求の調停を行ってパケットを出力する回路である。そして、階層状通信を行うときには、MasterからSlaveへの矢印上でHierと示した経路で転送要求を行い、リング状通信を行うときはRingと示した経路で転送を行う。
【００７３】
以上、本発明の実施の形態について説明したが、本発明はこのような実施形態に限定されることはなく、本発明の趣旨を逸脱しない範囲において改変して用いることができる。
【符号の説明】
【００７４】
１０  ホストコンピュータ、
１２  Ｌ２のＦＰＧＡ基板、
１３  Ｌ２のＦＰＧＡ回路、
１４  Ｌ１のＦＰＧＡ基板、
１５  Ｌ１のＦＰＧＡ回路、
１６  Ｌ０のＦＰＧＡ基板、
１７  Ｌ０のＦＰＧＡ回路、
１８  プロセッサエレメント（ＰＥ）、
２０  メモリ、
３０  プロセッサ回路
【図１】
2012199767.tif 000003
【図２】
2012199767.tif 000004
【図３】
2012199767.tif 000005
【図４】
2012199767.tif 000006
【図５】
2012199767.tif 000007
【図６】
2012199767.tif 000008
【図７】
2012199767.tif 000009
【図８】
2012199767.tif 000010
【図９】
2012199767.tif 000011
【図１０】
2012199767.tif 000012
【図１３】
2012199767.tif 000013
【図１４】
2012199767.tif 000014
【図１５】
2012199767.tif 000015
【図１６】
2012199767.tif 000016
【図１１】
2012199767.tif 000017
【図１２】
2012199767.tif 000018