(57)【特許請求の範囲】
【請求項１】
複数の演算器と、
前記複数の演算器の間を接続するネットワークと、
前記複数の演算器に応じて前記ネットワーク内に複数設けられ、前記演算器と前記ネットワークとを接続するか否かを制御するセレクタと、
前記演算器による演算に使用されるデータと演算を指定するデータとを格納する前記演算器にそれぞれ接続された第１のローカルメモリと、
前記セレクタによる接続を指定するデータを格納する前記セレクタにそれぞれ接続された第２のローカルメモリと、
前記複数の演算器に接続され、前記演算器のそれぞれに対して、実行すべき演算の切替を指示する演算制御装置と、を備え、
前記演算制御装置は、前記それぞれの演算器の演算が終了したときに次に実行すべき演算をそれぞれの演算器に設定する切替タイミングを格納する手段と、
前記切替タイミングの前に、前記次に実行すべき演算を設定するデータを該当する演算器に、前記データの入力が抑止されたディスエーブル状態で設定するとともに、
前記切替タイミングにおいて前記該当する演算器に対して前記切替データの入力が抑止されたディスエーブル状態を解除してイネーブル状態にする切替手段とを有し、回路構成を動的に切り替える並列処理装置。
【請求項２】
複数の演算器と、
前記複数の演算器の間を接続するネットワークと、
前記複数の演算器に応じて前記ネットワーク内に複数備えられ、前記演算器からの出力を前記ネットワークに出力するか否かを制御するセレクタと、
前記演算器による演算に使用されるデータと演算を指定するデータとを格納し、並列処理が可能な所定の処理の実行に使用される所定の数の前記演算器ごとに接続された第３のローカルメモリと、
前記セレクタによる接続を指定するデータを格納し、前記所定の数の前記演算器に関する接続情報を格納した第４のローカルメモリと、
前記複数の演算器に接続され、前記演算器のそれぞれに対して、実行すべき演算の切替を指示する演算制御装置と、を備え、
前記演算制御装置は、前記それぞれの演算器の演算が終了したときに次に実行すべき演算をそれぞれの演算器に設定する切替タイミングを格納する手段と、
前記切替タイミングの前に、前記次に実行すべき演算を設定するデータを該当する演算器に、前記データの入力が抑止されたディスエーブル状態で設定するとともに、
前記切替タイミングにおいて前記該当する演算器に対して前記切替データの入力が抑止されたディスエーブル状態を解除してイネーブル状態にする切替手段とを有し、回路構成を動的に切り替える並列処理装置。
【請求項３】
前記演算器は、自演算器及び他の演算器で実行される演算を前記第１のローカルメモリに格納されたデータに基づいて切り替える請求項１に記載の回路構成を動的に切り替える並列処理装置。
【請求項４】
前記セレクタは、自セレクタの接続状態を前記第２のローカルメモリに格納されたデータに基づいて切り替える請求項１又は３に記載の回路構成を動的に切り替える並列処理装置。
【請求項５】
前記複数のセレクタに接続され、前記セレクタのそれぞれに対して接続の切替を指示する接続制御装置を更に備える請求項１又は２に記載の回路構成を動的に切り替える並列処理装置。
【請求項６】
前記演算器のそれぞれに対して実行する演算の切替は、前記演算制御装置に格納され、第１の演算器と前記第１の演算器の演算が終了したときに演算を切り替えるべき第２の演算器及びその切替タイミングを保持したテーブルに基づいて実行する請求項１または２に記載の回路構成を動的に切り替える並列処理装置。
【請求項７】
前記セレクタのそれぞれに対する接続の切替は、前記接続制御装置に格納され、第１のセレクタと前記第１のセレクタの接続が終了したときに接続を切り替えるべき第２のセレクタ及びその切替タイミングを保持したテーブルに基づいて実行する請求項５に記載の回路構成を動的に切り替える並列処理装置。
【請求項８】
一つの前記演算器を通じて、前記一つの前記演算器に接続された前記第１のローカルメモリを書き換える一方、一つの前記セレクタを通じて、前記一つの前記セレクタに接続された前記第２のローカルメモリを書き換える請求項１〜７のいずれか１項に記載の回路構成を動的に切り替える並列処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路構成を動的に切り替える並列処理装置に関する。
【背景技術】
【０００２】
リコンフィギャラブル回路は、複数の演算器（プロセッサエレメント、ＰＥ（Processor Element）ともいう）及び遅延調整を実行する回路（ネットワーク）を含み、半導体（
例えば、ＬＳＩ）に実装される。この回路は、演算器のそれぞれを接続し、並列処理を実行する。また、この回路は、回路を一括で制御するコンフィギュレーションデータによって、その回路構成、すなわち、それぞれの演算器が実行する演算の種類と演算器間の接続とを設定する。この回路は、このコンフィギュレーションデータを格納するコンフィギュレーションメモリを備える。この回路は、回路の再構成を要するとき、要求される回路を指定するコンフィギュレーションデータをコンフィギュレーションメモリからロードする。この回路は、ロードされたデータに基づいて、複数の演算器が実行するそれぞれの演算の種類及び演算器間の接続を設定する。また、この回路は、コンフィギュレーションメモリからロードされたデータに基づいて回路を再構成することにより、動的に回路構成を切り替える。ここで、「動的に回路構成を切り替える」とは、回路による演算対象のデータの処理中に、回路を再構成することである。
【０００３】
本発明に係る先行技術文献としては、次に示すものがある。
【特許文献１】特開平１−３２０５６４号公報
【特許文献２】特開平５−３２４６９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
図２０は、従来技術によるリコンフィギャラブル回路１の構成例を示している。このリコンフィギャラブル回路１は、複数のＰＥ２と、コンフィギュレーションメモリ３と、複数のＰＥ２及びコンフィギュレーションメモリ３を接続するネットワーク４とを有している。
【０００５】
リコンフィギャラブル回路１は、回路を動作させる際、コンフィギュレーションメモリ３に格納されたコンフィギュレーションデータを使用する。リコンフィギャラブル回路１は、このデータに基づいて、複数のＰＥ２が実行するそれぞれの演算の種類及びネットワーク４内を接続するセレクタによる接続を構成する。
【０００６】
リコンフィギャラブル回路１は、回路の動作中、コンフィギュレーションメモリ３に格納されたコンフィギュレーションデータを使用する。リコンフィギャラブル回路１は、このデータに基づいて、複数のＰＥ２が実行するそれぞれの演算の種類及びネットワーク４内の接続を指示するセレクタによる接続を動的に切り替える。図２０で示されたような従来技術によるリコンフィギャラブル回路には、以下に示す４つの問題がある。
【０００７】
第１に、リコンフィギャラブル回路１は、回路の動作のために、複数のＰＥ２が実行するそれぞれの演算の種類とネットワーク４内を接続するセレクタによる接続とを構成する。したがって、リコンフィギャラブル回路１は、回路の動作のために、回路全体の構成を指定するコンフィギュレーションデータを、予めコンフィギュレーションメモリ３からＰＥ２及びネットワーク４内のセレクタにロードする。リコンフィギャラブル回路１は、ロードされたデータに基づいて、回路全体に対して、複数のＰＥ２が実行するそれぞれの演算の種類とネットワーク４内を接続するセレクタによる接続とを設定する。このため、リ
コンフィギャラブル回路１は、回路構成に時間を要するといった問題があった。
【０００８】
第２に、リコンフィギャラブル回路１において、一つのＰＥ２が実行する演算の種類（例えば、算術演算）を切り替える場合を説明する。また、この場合は、リコンフィギャラブル回路１において、ネットワーク４内を接続するセレクタによる接続の設定を切り替える場合も含む。これらの切替においても、リコンフィギャラブル回路１は、回路構成の切替を実行する度に、コンフィギュレーションメモリ３から回路全体の構成を指定するコンフィギュレーションデータをロードする。リコンフィギャラブル回路１は、ロードされたデータに基づいて、ＰＥ２が実行する演算の種類やネットワーク４内を接続するセレクタによる接続の設定を再構成する。リコンフィギャラブル回路１は、このような手順で回路を再構成するので、回路の再構成のために時間を要する。また、リコンフィギャラブル回路１は、回路を再構成する時間、演算対象のデータを処理できないといった問題があった。
【０００９】
図２１は、リコンフィギャラブル回路１が、複数のＰＥ２のうちの一つが実行する演算の種類を切り替える動作を示している。切替前のＰＥ２（ＰＥ２Ａ）は加算（ＡＤＤ）を実行する。また、切替後のＰＥ２（ＰＥ２Ｂ）は減算（ＳＵＢ）を実行する。リコンフィギャラブル回路１は、複数のＰＥ２のうちの一つが実行する演算の種類を（例えば、ＡＤＤからＳＵＢに）切り替える場合にも、コンフィギュレーションメモリ３から回路全体の構成を指定するコンフィギュレーションデータをロードする。リコンフィギャラブル回路１は、ロードされたデータに基づいて、ＰＥ２が実行する演算の種類やネットワーク４内を接続するセレクタによる接続を再構成する。
【００１０】
図２２では、リコンフィギャラブル回路１の構成が、この回路によるデータの処理の途中で一度切り替えられた後、再びデータを処理する動作を示すパイプラインが示されている。リコンフィギャラブル回路１は、この回路構成を切り替えるために、コンフィギュレーションメモリ３に格納された回路全体を指定するコンフィギュレーションデータをロードし、回路を再構成する。したがって、図２２に示すように、この回路の再構成（リコンフィグ）の間、リコンフィギャラブル回路１は、演算対象のデータを処理しない。このため、この回路の再構成の間、リコンフィギャラブル回路１にデータを処理しないクロックが発生する。特に、パイプラインが構成された回路では、パイプラインの各ステージが並列動作をするまでに、ステージの数に相当するサイクルを要する。したがって、回路全体を再構成したのでは、パイプラインの効率（各ステージが並列動作する期間の割合）が低下する。
【００１１】
第３に、回路全体を指定するコンフィギュレーションデータは、コンフィギュレーションメモリ３に格納されている。このコンフィギュレーションデータは比較的データサイズが大きい。したがって、演算対象のデータの処理において、リコンフィギャラブル回路１が複数の回路構成を要するとき、コンフィギュレーションメモリ３は非常に大きな記憶容量を持つ必要があるといった問題があった。また、コンフィギュレーションメモリ３が大きな記憶容量を持ち、サイズが大きなデータを格納すると、リコンフィギャラブル回路１は、格納されたデータにアクセスするために時間を要するといった問題があった。
【００１２】
第３の問題と類似の問題として、リコンフィギャラブル回路１が、この回路を実装しているＬＳＩの外部メモリ（図示せず）からコンフィギュレーションメモリ３にコンフィギュレーションデータをロードする場合を考える。この場合、一つ一つの回路構成に使用されるコンフィギュレーションデータのデータサイズが比較的大きいので、データのロードに非常に長い時間を要するといった問題があった。
【００１３】
例えば、リコンフィギャラブル回路１を実装しているＬＳＩが、３２ビット単位でアク
セス可能な外部メモリ（図示せず）及び３２ビット単位でアクセス可能な内部メモリ（コンフィギュレーションメモリ３）を使用している状況を考える。この状況で、ＬＳＩの外部メモリから全部で１０００ビットの大きさのデータをロードする場合を考える。この場合、リコンフィギャラブル回路１は、コンフィギュレーションメモリ３に対して、１サイクル（クロック）で３２ビットの大きさのデータを書き込むと仮定する。したがって、リコンフィギャラブル回路１は、データの書き込みが終了するまでに、少なくとも１０００／３２サイクル、すなわち、およそ３２サイクルの書き込み時間を要する。
【００１４】
本願は上記のような従来技術の問題点に鑑みてなされたものである。すなわち、本発明の目的は、より高速の並列処理をより小さな容量の記憶媒体で実現する、回路構成を動的に切り替える並列処理装置を提供することである。
【課題を解決するための手段】
【００１５】
上記課題を解決するために、本発明は以下の構成を採用した。
【００１６】
（１）すなわち、本発明による回路構成を動的に切り替える並列処理装置は、複数の演算器と、前記複数の演算器の間を接続するネットワークと、前記複数の演算器に応じて前記ネットワーク内に複数設けられ、前記演算器と前記ネットワークとを接続するか否かを制御するセレクタと、前記演算器による演算に使用されるデータと演算を指定するデータとを格納する前記演算器にそれぞれ接続された第１のローカルメモリと、前記セレクタによる接続を指定するデータを格納する前記セレクタにそれぞれ接続された第２のローカルメモリとを備える。
【００１７】
この構成によると、この並列処理装置は、複数の演算器と、複数の演算器の間を接続するネットワークと、複数の演算器に応じてネットワーク内に複数設けられ、演算器と前記ネットワークとを接続するか否かを制御するセレクタと、演算器による演算に使用されるデータと演算を指定するデータとを格納する演算器にそれぞれ接続された第１のローカルメモリと、セレクタによる接続を指定するデータを格納するセレクタにそれぞれ接続された第２のローカルメモリとを備える。このことにより、この回路構成を動的に切り替える並列処理装置は、第１のローカルメモリ及び第２のローカルメモリに格納されたデータに基づいた演算処理を実行できる。
【００１８】
（２）また、本発明による回路構成を動的に切り替える並列処理装置は、複数の演算器と、前記複数の演算器の間を接続するネットワークと、前記複数の演算器に応じて前記ネットワーク内に複数備えられ、前記演算器からの出力を前記ネットワークに出力するか否かを制御するセレクタと、前記演算器による演算に使用されるデータと演算を指定するデータとを格納し、並列処理が可能な所定の処理の実行に使用される所定の数の前記演算器ごとに接続された第３のローカルメモリと、前記セレクタによる接続を指定するデータを格納し、前記所定の数の前記演算器に関する接続情報を格納した第４のローカルメモリとを備えてもよい。
【００１９】
この構成によると、この並列処理装置は、複数の演算器と、複数の演算器の間を接続するネットワークと、複数の演算器に応じてネットワーク内に複数備えられ、演算器からの出力をネットワークに出力するか否かを制御するセレクタと、演算器による演算に使用されるデータと演算を指定するデータとを格納し、並列処理が可能な所定の処理の実行に使用される所定の数の演算器ごとに接続された第３のローカルメモリと、セレクタによる接続を指定するデータを格納し、所定の数の前記演算器に関する接続情報を格納した第４のローカルメモリとを備える。このことにより、この回路構成を動的に切り替える並列処理装置は、第３のローカルメモリ及び第４のローカルメモリに格納されたデータに基づいた演算処理を実行できる。
【００２０】
（３）また、本発明による回路構成を動的に切り替える並列処理装置に係る演算器は、自演算器及び他の演算器で実行される演算を第１のローカルメモリに格納されたデータに基づいて切り替えてもよい。
【００２１】
この構成によると、この演算器は、自演算器及び他の演算器で実行される演算を第１のローカルメモリに格納されたデータに基づいて切り替える。このことにより、この演算器は、第１のローカルメモリに格納されたデータに基づいて、自律的に回路構成を切り替えることができる。
【００２２】
（４）また、本発明による回路構成を動的に切り替える並列処理装置に係るセレクタは、自セレクタの接続状態を第２のローカルメモリに格納されたデータに基づいて切り替えてもよい。
【００２３】
この構成によると、このセレクタは、自セレクタの接続状態を第２のローカルメモリに格納されたデータに基づいて切り替える。このことにより、このセレクタは、第２のローカルメモリに格納されたデータに基づいて、自律的に回路構成を切り替えることができる。
【００２４】
（５）また、本発明による回路構成を動的に切り替える並列処理装置は、複数の演算器に接続され、演算器のそれぞれに対して、実行すべき演算の切替を指示する演算制御装置を更に備えてもよい。
【００２５】
この構成によると、この並列処理装置は、実行すべき演算の切替を指示する演算制御装置によって、複数の演算器に接続された演算器のそれぞれに対して、実行すべき演算の切替を指示することができる。
【００２６】
（６）また、本発明による回路構成を動的に切り替える並列処理装置は、複数のセレクタに接続され、前記セレクタのそれぞれに対して接続の切替を指示する接続制御装置を更に備えてもよい。
【００２７】
この構成によると、この並列処理装置は、セレクタのそれぞれに対して接続の切替を指示する接続制御装置によって、セレクタのそれぞれの切替を指示することができる。
【００２８】
（７）また、本発明による回路構成を動的に切り替える並列処理装置に係る演算器において、演算器のそれぞれに対して実行する演算の切替は、演算制御装置に格納され、第１の演算器と前記第１の演算器の演算が終了したときに演算を切り替えるべき第２の演算器及びその切替タイミングを保持したテーブルに基づいて実行してもよい。
【００２９】
この構成によると、この並列処理装置は、演算器のそれぞれに対して実行する演算の切替を、前記演算制御装置に格納され、第１の演算器と前記第１の演算器の演算が終了したときに演算を切り替えるべき第２の演算器及びその切替タイミングを保持したテーブルに基づいて実行する。このことにより、この並列処理装置は、切り替えるべき演算器とその切替タイミングとを使用して、演算器の切替を実行できる。
【００３０】
（８）また、本発明による回路構成を動的に切り替える並列処理装置に係るセレクタにおいて、セレクタのそれぞれに対する接続の切替は、接続制御装置に格納され、第１のセレクタと第１のセレクタの接続が終了したときに接続を切り替えるべき第２のセレクタ及びその切替タイミングを保持したテーブルに基づいて実行してもよい。
【００３１】
この構成によると、この並列処理装置は、セレクタのそれぞれに対する接続の切替を、接続制御装置に格納され、第１のセレクタと第１のセレクタの接続が終了したときに接続を切り替えるべき第２のセレクタ及びその切替タイミングを保持したテーブルに基づいて実行できる。
【００３２】
（９）また、本発明による回路構成を動的に切り替える並列処理装置は、一つの演算器を通じて、一つの演算器に接続された第１のローカルメモリを書き換える一方、一つのセレクタを通じて、一つのセレクタに接続された第２のローカルメモリを書き換えてもよい。
【００３３】
この構成によると、この並列処理装置は、一つの演算器を通じて、一つの演算器に接続された第１のローカルメモリを書き換える一方、一つのセレクタを通じて、一つのセレクタに接続された第２のローカルメモリを書き換える。このことにより、この並列処理装置は、個々のローカルメモリを書き換えることができる。
【００３４】
（１０）また、本発明による回路構成を動的に切り替える並列処理装置に係る演算制御装置は、それぞれの演算器の演算が終了したときに次に実行すべき演算をそれぞれの演算器に設定する切替タイミングを格納する手段と、切替タイミングの前に、次に実行すべき演算を設定するデータを該当する演算器に、データの入力が抑止されたディスエーブル状態で設定するとともに、切替タイミングにおいて該当する演算器に対して切替データの入力が抑止されたディスエーブル状態を解除してイネーブル状態にする切替手段とを備えてもよい。
【００３５】
この構成によると、この演算制御装置は、それぞれの演算器の演算が終了したときに次に実行すべき演算をそれぞれの演算器に設定する切替タイミングを格納し、切替タイミングの前に、次に実行すべき演算を設定するデータを該当する演算器に、データの入力が抑止されたディスエーブル状態で設定するとともに、切替タイミングにおいて該当する演算器に対して切替データの入力が抑止されたディスエーブル状態を解除してイネーブル状態にすることができる。
【００３６】
また、本発明は、上記の回路構成を動的に切り替える並列処理装置において、上記の処理を実行する並列処理方法であってもよい。
【発明の効果】
【００３７】
本発明によれば、より高速の並列処理をより小さな容量の記憶媒体で実現する、回路構成を動作中に切り替える並列処理技術を提供することができる。
【発明を実施するための最良の形態】
【００３８】
以下、図面を参照して、本発明の実施形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００３９】
《実施形態》
以下、本発明の実施形態の並列処理装置を図１−図１７の図面に基づいて説明する。図１は、本発明によるリコンフィギャラブル回路の構成例を示している。このリコンフィギャラブル回路５（本発明の「回路構成を動的に切り替える並列処理装置」に相当）は、複数のＰＥ６（本発明の「演算器」に相当）と、ＰＥ６のそれぞれに接続されたコンフィギュレーションメモリ７（本発明の「第１のローカルメモリ」に相当）と、複数のＰＥ６間を接続するネットワーク８と、ネットワーク８に接続された複数のコンフィギュレーションメモリ９（本発明の「第２のローカルメモリ」に相当）とを有している。ここで、ＰＥ６とコンフィギュレーションメモリ７とコンフィギュレーションメモリ９とは、それぞれ
、一対一で対応する関係にある。
【００４０】
ＰＥ６は、コンフィギュレーションメモリ７に格納されたコンフィギュレーションデータ及び命令に基いて演算を実行する。その場合、ＰＥ６は、コンフィギュレーションメモリ７に格納されたデータを処理する。
【００４１】
さらに、ＰＥ６は、この回路の外部からのデータを処理してもよい。ＰＥ６は、算術演算、論理演算、カウンタ、データの読み出し、又は遅延調整を実行する。また、ＰＥ６は、算術演算、論理演算、カウンタ、又はデータの読み出しを実行する一方で、遅延調整を実行してもよい。
【００４２】
ＰＥ６が実行する演算の種類が切り替えられる際、ＰＥ６は、クロックの立ち上がりで、ライトイネーブル（Write Enable）信号を受信する。ライトイネーブル信号は、ＰＥ６が次に実行する演算の種類に演算の種類を切り替える通知に使用される信号である。ＰＥ６は、ライトイネーブル信号を受信すると、クロックの立ち上がりで、実行する演算の種類を切り替える。ＰＥ６は、実行する演算を切り替えた後、コンフィギュレーションメモリ７に格納されたデータを処理する。ＰＥ６は、実行する演算の種類を切り替えた後、プログラムカウンタの値を一つ増やす。ＰＥ６は、ＰＥ６による演算が終了する際、終了信号を発信してもよい。
【００４３】
また、ＰＥ６は、コンフィギュレーションメモリ７に格納されたデータ及び命令に基いて、自律的に自ＰＥ６を切り替えてもよい。ＰＥ６は、コンフィギュレーションメモリ７に格納されたデータ及び命令に基いて、他のＰＥ６に実行する演算の種類を切り替える切替指示を送信してもよい。また、ＰＥ６は、全ＰＥ６を制御する制御装置（図６Ａを用いて後述するシーケンスコントロール部１２）からの指令によって、コンフィギュレーションメモリ７を書き換えてもよい。この場合、ＰＥ６は、シーケンスコントロール部１２（図６Ａ参照）からのライトイネーブル信号の受信をきっかけにして、実行する演算の種類を切り替える。
【００４４】
コンフィギュレーションメモリ７は、ＰＥ６が処理する演算対象のデータを格納する。さらに、コンフィギュレーションメモリ７は、ＰＥ６が実行する演算が終了するタイミングの情報を格納してもよい。また、コンフィギュレーションメモリ７は、ＰＥ６が自ＰＥ６又は他のＰＥ６に対して切替を指示するためのデータ及び命令を格納してもよい。コンフィギュレーションメモリ７は、リコンフィギャラブル回路５の外に接続された装置（図示せず）からの指示によって書き換えられてもよい。
【００４５】
図２は、ネットワーク８の構成をより詳細に示している。図２に示すように、ネットワーク８の内部にセレクタ１０（本発明の「セレクタ」に相当）及びセレクタ１０に接続されたコンフィギュレーションメモリ１１が備えられている。図２では、セレクタ１０は、ＰＥ６に対して二つずつ接続されている。図２は、ネットワーク８の構成をより詳細に示すため、図１で示されたコンフィギュレーションメモリ９を２つのセレクタ１０に備えられたコンフィギュレーションメモリ１１として、二つに分けて示している。
【００４６】
セレクタ１０は、内部に複数のスイッチを有している。リコンフィギャラブル回路５の場合、ＰＥ６が２４個ある。したがって、セレクタ１０内のスイッチは、全ＰＥ６からの出力を調整するとすると、２４個のスイッチを有する。図２では、セレクタ１０には、それぞれ、６つの通信回線からの信号が入力されている。したがって、図２に示すセレクタ１０は、内部に６つのスイッチを有している。セレクタ１０は、セレクタ１０内部の複数のスイッチのうちの一つをオンにし、その他のスイッチはオフにする。セレクタ１０内の信号は、スイッチがオンと指定された通信回線から入力される。セレクタ１０は、複数の
入力信号の一つを選択し、所定の出力先へ出力する。セレクタ１０による信号の出力先の調整をセレクタ１０による接続ともいう。したがって、セレクタ１０による接続の切替とは、セレクタ１０内のスイッチの切替である。スイッチの切替は、クロックの立ち上がりで実行される。セレクタ１０は、スイッチの切替後、データ通信を実行する。
【００４７】
セレクタ１０は、コンフィギュレーションメモリ１１に格納されたデータ、又は、データ及び命令に基づいて、ＰＥ６に対して、信号の出力を制御する。セレクタ１０は、コンフィギュレーションメモリ１１に格納されたデータ及び命令に基いて、自セレクタ１０又は他セレクタ１０による接続を切り替えてもよい。セレクタ１０は、ＰＥ６から指令によって、セレクタ１０に接続されたコンフィギュレーションメモリ１１に格納されたデータを書き換えてもよい。また、セレクタ１０は、セレクタ１０の全てを一括で制御する制御装置（図６Ａを用いて後述するシーケンスコントロール部１２）からの指令によって、コンフィギュレーションメモリ１１を書き換えてもよい。
【００４８】
コンフィギュレーションメモリ１１は、セレクタ１０を経由して、書き換えられてもよい。コンフィギュレーションメモリ１１は、ＰＥ６からの指令によって、書き換えられてもよい。コンフィギュレーションメモリ１１は、リコンフィギャラブル回路５の外に接続された装置（図示せず）からの指示によって書き換えられてもよい。
【００４９】
次に、図３に基づいて、ＰＥ６が実行する演算の種類及びセレクタ１０による接続の切替について説明する。ＰＥ６内のフリップフロップ回路１０３−１〜１０３−ｎ、ＰＥ６内の制御装置１０４、及び、セレクタ１０内のフリップフロップ回路１００−１〜１００−ｎは、同じタイミングのクロック（ＣＬＫ）によって同期がとられている。
【００５０】
フリップフロップ回路１００は、コンフィギュレーションメモリ９からのデータを格納する。フリップフロップ回路１００は、格納したデータをセレクタ回路のセレクト信号として選択素子１０１に入力する。
【００５１】
選択素子１０１は、フリップフロップ回路１００−１〜１００−ｎを備える命令保持装置１０８から出力されたデータに基づいて、データの入力先を決定する。ＰＥ６に出力されるデータは、選択素子１０１の選択によって調整される。
【００５２】
命令保持装置１０２には、コンフィギュレーションメモリ７に格納された指令データ１０７が入力される。命令保持装置１０２は、フリップフロップ回路１０３−１〜１０３−ｎに入力されたデータを格納する。
【００５３】
フリップフロップ回路１０３−１〜１０３−ｎは入力されたデータを格納する。フリップフロップ回路１０３−１〜１０３−ｎは、入力されたデータ（演算指令）を演算装置１０６に出力する。
【００５４】
制御装置１０４は、セレクタ１０からＰＥ６が実行する演算の種類の切替の指令を受けると、遅延制御装置１０５を通じて演算装置に実行を指示する。制御装置１０４は、遅延制御装置１０５を通じて、データの送受信の指示を実行する。制御装置１０４には、クロック（ＣＬＫ）のタイミングが通知されている。制御装置１０４は、通知されたクロックのタイミングに合わせてデータを制御する。
【００５５】
遅延制御装置１０５は、制御装置１０４からの指令を所定の遅延時間遅延させて、演算装置１０６に伝達する。遅延制御装置１０５がリコンフィギャラブル回路５内でそれぞれ動作することによって、リコンフィギャラブル回路５内の遅延制御が実行される。また、リコンフィギャラブル回路５内の遅延制御のために、演算装置１０６が、遅延制御装置１
０５による遅延制御に加えて、遅延制御を実行してもよい。
【００５６】
コンフィギュレーションメモリ７に格納された指令データ１０７は、ＰＥ６が実行する演算の種類を切替える指令を含むデータである。演算対象データは選択素子１０１により選択されたデータである。
【００５７】
図３に基づいて、セレクタ１０による接続の切替を説明する。セレクタ１０は、セレクタ１０による接続の切替の指示を受信する（図３にて矢印２０１で図示）と、コンフィギュレーションメモリ９から、次の接続に関するデータを読み出す（図３にてConfigとして図示）。セレクタ１０は、読み出されたデータに基づいて、接続を切り替える。このようにして、セレクタ１０による接続は切り替えられる。この切替は、クロックの立ち上がりで実行される。制御装置１０４によるデータ送受信の指示は、遅延制御装置１０５を通る。このため、セレクタ１０によってネットワークの接続が切り替えられた後、遅延制御装置１０５による遅延時間遅延して、データの送受信が実行される。
【００５８】
演算装置１０６は、遅延制御装置１０５から演算実行の指令を受ける。演算装置１０６は、この演算実行の指令に基づいて演算を実行する。  演算装置１０６は、フリップフロップ回路１０３−１〜１０３−ｎに入力されたデータ（演算指令）に基づいて、演算対象データを演算処理する。
【００５９】
図３に基づいて、ＰＥ６が実行する演算の種類の切替を説明する。ＰＥ６は、実行する演算の種類の切替の指示を受信する（図３に矢印２００で図示）と、コンフィギュレーションメモリ７に格納された指令データ１０７から、実行中の演算の種類の次の演算の種類を指定するデータを読み出す。論理回路１０９は演算切替指示（ライトイネーブル信号）が入力された際、次に実行する演算の種類を指定するデータ（Config）を命令保持装置１０２に出力する。命令保持装置１０２は、入力された次に実行する演算の種類を指定するデータで、命令保持装置１０２に保持された命令を書き換える。このようにして、ＰＥ６は、コンフィギュレーションメモリ７から読み出されたデータに基づいて、実行する演算の種類をディスエーブル状態で切り替える。ＰＥ６が実行する演算の種類を切り替えた後、ＰＥ６は、ディスエーブル状態を解除してイネーブル状態にする。その後のクロック（ＣＬＫ）の立ち上がりエッジでコンフィギュレーションメモリ７のデータがフリップフロップ回路１０３−１〜１０３−ｎに書き込まれる。ＰＥ６は、その後、遅延制御装置１０５によって遅延制御された演算処理対象のデータを演算処理する。
【００６０】
このように、演算切替指示２００は、次に実行する演算に切り替えることを示す。このため、演算切替指示２００は、例えば、切替指示を示す「１」という１ビットの情報でよい。一方、様々な演算の種類を指定する情報は、多くの情報量を必要とする。ＰＥ６は、１ビットで示された演算切替指示を受信した後、ＰＥ６に接続されたコンフィギュレーションメモリ７から演算の種類を指定する指令データ１０７をロードする。このことにより、リコンフィギャラブル回路５は、演算の種類を指定する多くの情報量をネットワーク８を通じてロードするよりも、ＰＥ６が実行する演算の切替に要する時間を短縮する。また、リコンフィギャラブル回路５は、セレクタ１０の接続の切替についても同様に、１ビットで示された接続切替指示２０１に応じて、コンフィギュレーションメモリ９から接続の切替の情報をセレクタ１０にロードすることにより、セレクタ１０による接続の切替の時間を短縮する。
【００６１】
以下では、まず、ＰＥ６、セレクタ１０、または、ＰＥ６及びセレクタ１０による自律的な制御について説明する。次に、ＰＥ６の全体の動作、セレクタ１０の全体の動作、又は、ＰＥ６の全体の動作及びセレクタ１０の全体の動作を一括で制御するシーケンスコントロール部によるリコンフィギャラブル回路５の制御について説明する。
【００６２】
［プロセッサエレメント、セレクタ、又は、プロセッサエレメント及びセレクタによる回路の自律的な制御について］
以下に、図２−図４，図５Ａ，及び，図５Ｂに基づいて、ＰＥ６、セレクタ１０、または、ＰＥ６及びセレクタ１０によるリコンフィギャラブル回路５の自律的な制御について説明する。
【００６３】
＜プロセッサエレメントが実行する演算の切替例＞
図４に基づいて、リコンフィギャラブル回路５が、複数のＰＥ６のうちの一つが実行する演算を加算（ＡＤＤとして表示）から減算（ＳＵＢとして表示）に切り替える例を説明する。従来技術によるリコンフィギャラブル回路の構成の切替については、図２１に基づいて説明している。図に示された例では、ＰＥ６は、ＰＥ６に接続されたコンフィギュレーションメモリ７に格納されたデータ及び命令に基づいて、自律的に自ＰＥ６又は他ＰＥ６が実行する演算を切り替える。
【００６４】
ここで、「自律的」とは、自ＰＥ６又は他のＰＥ６が実行する演算の種類をＰＥ６によって切り替えることである。また、この「自律的」には、自セレクタ１０又は他のセレクタ１０による接続をセレクタ１０よって切り替えることを含んでもよい。また、この「自律的」には、ＰＥ６がセレクタ１０を切り替えることを含んでもよい。
【００６５】
図４に示される例では、ＰＥ６が、所定のクロックの間、コンフィギュレーションメモリ７に格納されたデータ及び命令に基づいて、加算を実行した後、実行する演算を減算に切り替える。ＰＥ６は、演算の切替後、減算の演算を実行する。ＰＥ６は、ＰＥ６に接続されたコンフィギュレーションメモリ７に格納され、実行する演算の種類を指定するデータに基づいて切替を実行する。したがって、コンフィギュレーションメモリ７は比較的小さなメモリで良いので、ＰＥ６は、高速でコンフィギュレーションメモリ７にアクセスし、データをロードする。したがって、ＰＥ６は、クロックの立ち上がりで実行する演算を切り替えることができる。このため、ＰＥ６は、演算対象のデータを１クロック無駄にすることなく処理できる。
【００６６】
図４に示すように、一つのＰＥ６が実行する演算を加算から減算に切り替える場合を説明する。ＰＥ６が加算と減算との２種類の構成を持つとする。この場合、コンフィギュレーションデータに含まれ、ＰＥ６が実行する演算の種類を指定するデータは、１ビットで表現することができる。すなわち、加算を０として表すとすると、減算を１として表すことができる。
【００６７】
このようなデータを使用する際に必要となるデータの大きさを、従来技術によるリコンフィギャラブル回路１と本実施形態によるリコンフィギャラブル回路５とで比較する。まず、従来技術のリコンフィギャラブル回路１において、コンフィギュレーションメモリ３に格納され、回路の切替前のＰＥ２に指定されるデータは、加算と減算とを１ビットで表すとすると、プロセッサエレメントが２４個あるために、２４ビットで表される。また、回路の切替後、ＰＥ２が実行する演算の種類の指定に必要なデータも、同様に、２４ビットで表される。したがって、コンフィギュレーションメモリ３に格納され、ＰＥ２が実行する演算の種類の指定に使用されるデータの大きさとして、４８ビットが必要である。このようにして、従来のリコンフィギャラブル回路１の場合、演算の種類を切り替えるべきＰＥ２の数と無関係に各ＰＥ２を切り替えるためのデータが入力されていた。
【００６８】
次に、本実施形態のリコンフィギャラブル回路５において、ＰＥ６が実行する演算の種類の切り替えに必要なビットの大きさを説明する。コンフィギュレーションデータに含まれ、ＰＥ６が実行する演算の種類を指定するデータは、ＰＥ６のそれぞれに接続されたコ
ンフィギュレーションメモリ７にそれぞれ格納される。加算と減算とは１ビットで表現できるので、ＰＥ６は、コンフィギュレーションメモリ７に格納された１ビット単位のデータに基づいてＰＥ６が実行する演算の種類を切り替えることができる。
【００６９】
リコンフィギャラブル回路５は２４個のＰＥ６を有している。リコンフィギャラブル回路５は、２４ビットの大きさのデータで、回路の切替前にＰＥ６が実行する演算の種類を指定できる。図４に示す場合には、切り替えが必要なＰＥ６は一つである。したがって、１ビットの大きさのデータで、ＰＥ６が実行する演算の種類を切り替えることができる。このように、リコンフィギャラブル回路５において、切り替えに必要なデータの大きさは切り替えるＰＥ６の数に応じて決まる。切り替えるＰＥ６の最大数が２４であるので、リコンフィギャラブル回路５が回路の切替に必要とするデータの大きさは、従来技術によるリコンフィギャラブル回路１において必要とされるデータの大きさよりも小さい。
【００７０】
このように、リコンフィギャラブル回路５は、従来技術によるリコンフィギャラブル回路に比べて、小さいサイズのデータで、同等の並列処理を実施できる。したがって、リコンフィギャラブル回路５は、従来のリコンフィギャラブル回路と比較して、小さな容量のメモリの実装で、同等の並列処理を実施できる。
【００７１】
＜ネットワーク内の接続の切替例＞
図２に基づいて、リコンフィギャラブル回路５がネットワーク８内の接続を切り替える際の回路の動作例を示す。セレクタ１０は、セレクタ１０に接続されたコンフィギュレーションメモリ１１に格納されたデータ及び命令に基づいて、セレクタ１０による接続を切り替える。例として、ＰＥ６ＣがＰＥ６Ｄに対して、ＰＥ６Ｃの演算結果を含む信号をネットワーク８を介して送信している場合を考える。更に、リコンフィギャラブル回路５が、ＰＥ６ＣからＰＥ６Ｄへの信号の送信をＰＣ６ＣからＰＥ６Ｅへの信号の送信に、信号の出力先を切り替える場合を考える。この場合、ＰＥ６Ｃからの信号を、セレクタ１０Ａがコンフィギュレーションメモリ１１Ａに格納されたデータ及び命令に基づいて、ＰＥ６Ｄに送信しないよう制御する。また、ＰＥ６Ｃからの信号を、セレクタ１０Ｂが、コンフィギュレーションメモリ１１Ｂに格納されたデータ及び命令に基づいて、ＰＥ６Ｄに送信しないよう制御する。
【００７２】
一方で、ＰＥ６Ｃからの信号を、セレクタ１０Ｃが、コンフィギュレーションメモリ１１Ｃに格納されたデータ及び命令に基づいて、ＰＥ６Ｅに送信するよう制御する。また、ＰＥ６Ｃからの信号を、セレクタ１０Ｄが、コンフィギュレーションメモリ１１Ｄに格納されたデータ及び命令に基づいて、ＰＥ６Ｅに送信するよう制御する。
【００７３】
このように、ＰＥ６Ｃからの信号を、セレクタ１０Ａ〜１０Ｄがコンフィギュレーションメモリ１１Ａ〜１１Ｄに格納されたデータ及び命令に基づいて、それぞれ制御することにより、ネットワーク８内の接続が切り替えられる。セレクタ１０が、セレクタ１０に接続されたコンフィギュレーションメモリ１１に格納されたデータに基づいて切替を実行する。したがって、セレクタ１０は、セレクタ１０に接続されたコンフィギュレーションメモリ１１にアクセスするので、高速にデータにアクセスできる。したがって、セレクタ１０は、クロックの立ち上がりで、このような接続の切り替えを実行できる。
【００７４】
また、リコンフィギャラブル回路５は、従来技術のように、回路全体の構成を指定するコンフィギュレーションデータによってネットワーク８を再構成しない。このため、リコンフィギャラブル回路５は、従来技術によるリコンフィギャラブル回路１と比較すると、データをロードして回路を再構成する時間を短縮できる。
【００７５】
セレクタ１０の内部に６個のスイッチがあるとすると、一つ一つのスイッチを指定する
ために、６ビットの大きさのデータが必要である。リコンフィギャラブル回路５は、４８個のセレクタ１０を備えている。したがって、回路の切替前に回路の接続を指定するためのデータとして、２８８ビットの大きさのデータが必要である。切り替えるべきセレクタ数と無関係に各セレクタのデータを設定する必要があった。
【００７６】
セレクタ１０の一つが接続を切り替えることを考える。本実施形態のリコンフィギャラブル回路５では、セレクタの一つの接続を指定するデータがあればよいので、６ビット単位の大きさのデータでセレクタ１０による接続を切り替えることができる。このように、リコンフィギャラブル回路５において、接続の切替に必要なデータの大きさは、セレクタ１０の内部の演算を切り替えるべきスイッチの数に応じて決まる。セレクタ１０の内部に６個のスイッチがあるとすると、従来技術によるリコンフィギャラブル回路１で必要とされるデータの大きさは２８８ビット単位なので、リコンフィギャラブル回路５が必要とするデータの大きさよりも小さい。
【００７７】
このように、リコンフィギャラブル回路５は、従来技術によるリコンフィギャラブル回路に比べて、小さいサイズのデータで、同等の並列処理を実施できる。したがって、リコンフィギャラブル回路５は、従来のリコンフィギャラブル回路と比較して、小さな容量のメモリの実装で、同等の並列処理を実施できる。
【００７８】
＜プロセッサエレメントが実行する演算及びネットワーク内の接続の切替例＞
図５Ａ及び図５Ｂは、リコンフィギャラブル回路５が有する複数のＰＥ６のうちの一つが他のＰＥ６のうちの一つに演算の切り替えを指示する動作を示している。図５Ａでは、ＰＥ６ＦがＰＥ６Ｇに切替指示を出す動作が回路構成図を用いて示されている。
【００７９】
図５Ｂでは、ＰＥ６Ｇが実行する演算の種類の切替動作が、クロック、ライトイネーブル信号、ＰＥ６Ｇのコンフィギュレーション、及び、ＰＥ６Ｇのコンフィギュレーションで使用されるデータを用いて示されている。
【００８０】
まず、図５Ａでは、ＰＥ６Ｆが、ＰＥ６Ｇが実行する演算の種類の切替に際して、ＰＥ６Ｇが実行する演算の種類の次の種類を指定するライトイネーブル信号をＰＥ６Ｇに送信し、切替を指示する動作が示されている。ＰＥ６Ｆが送信したライトイネーブル信号は、ネットワーク８を通じて、ＰＥ６Ｇに送られる。ＰＥ６Ｇは、ライトイネーブル信号を受信すると、論理回路１０９を通じて、クロックの立ち上がりの部分で、ＰＥ６Ｇが実行する演算の種類を切り替える。このようにして、ＰＥ６Ｇが実行する演算の種類が切り替えられる。ＰＥ６Ｇは、切り替えられた演算の種類によって、演算対象のデータを処理する。
【００８１】
このように、ＰＥ６Ｆは、ＰＥ６Ｇに実行する演算の種類の切替の指示を送信する。そして、ＰＥ６Ｇは、送信された指示に基づいて、実行する演算の種類の切り替えを実行する。したがって、この指示の通信に時間を要するので、この回路は１クロック後から動作を再開する。
【００８２】
図５Ｂでは、切替前のＰＥ６Ｇの構成（実行する演算の種類）がConfig0、切替後のＰ
Ｅ６Ｇの構成がConfig1として示されている。また、図５Ｂでは、Config0の回路構成で使用される（処理される）データがD0-0、D0-1、及びD0-2として、Config1の回路構成で使
用されるデータがD1-0、D1-1、D1-2、…、として示されている。これらのデータは、コンフィギュレーションメモリ７又はネットワーク８からＰＥ６Ｇに入力されるデータである。
【００８３】
また、ＰＥ６の一つがセレクタ１０の一つに対して、セレクタ１０による接続の切替を
指示してもよい。
【００８４】
［全プロセッサエレメント、全セレクタ、又は、全プロセッサエレメント及び全セレクタを制御するシーケンスコントロール部による制御について］
図２−図４，図５Ａ及び図５Ｂでは、プロセッサエレメント６、セレクタ１０、又は、プロセッサエレメント６及びセレクタ１０によるリコンフィギャラブル回路５の自律的な制御について説明した。以下では、図６Ａ，図６Ｂ，図７−図１７に基づいて、全プロセッサエレメント６、全セレクタ１０、又は、全プロセッサエレメント６及び全セレクタ１０を一括で制御するシーケンスコントロール部１２がさらに付加された場合のシーケンスコントロール部１２の動作について説明する。
【００８５】
図６Ａでは、リコンフィギャラブル回路５に全ＰＥ６及び全セレクタ１０を一括で制御するシーケンスコントロール部１２がさらに含まれている場合が示されている。シーケンスコントロール部１２は、全ＰＥ６及び全セレクタ１０に直接的に接続されている（図示せず）。シーケンスコントロール部１２は、ＰＥ６、セレクタ１０、又は、ＰＥ６及びセレクタ１０に対して回路構成の切替を指示する。図６Ａでは、シーケンスコントロール部１２が、ＰＥ６Ｈに対して、実行する演算の種類を切り替える動作が示されている。
【００８６】
図６Ｂでは、シーケンスコントロール部１２によるＰＥ６Ｈが実行する演算の種類の切替動作が、クロック、ライトイネーブル信号、ＰＥ６Ｈのコンフィギュレーション、及び、ＰＥ６Ｈのコンフィギュレーションで使用されるデータを用いて示されている。
【００８７】
＜プロセッサエレメントが実行する演算の切替例＞
図６Ａでは、シーケンスコントロール部１２（本発明の「演算制御装置」に相当）がＰＥ６Ｈに演算の種類の切替を指示する動作が示されている。シーケンスコントロール部１２は、ＰＥ６Ｈが実行する演算の種類の切替に際して、ＰＥ６Ｈに対してライトイネーブル（Write Enable）信号を送信することによって切替を指示する。
【００８８】
シーケンスコントロール部１２には、回路構成の切り替えのタイミング、切替を実行するＰＥ６、及び、切替を実行するセレクタ１０の情報等が指定されている。シーケンスコントロール部１２は、これらの指定を格納するハードディスク等の記憶媒体（図示せず）を備えている。この指定は、ユーザによって入力されたプログラム等による指令をシーケンスコントロール部１２を実装するＬＳＩに含まれる回路等がプログラム解析等することによって実行される。
【００８９】
シーケンスコントロール部１２は、このＬＳＩ内部で使用されているクロックに基づく切替タイミングよりも先に、ＰＥ６Ｈによる演算の切替の指示をライトイネーブル信号の送信によって実行する。このように、シーケンスコントロール部１２が切替タイミングよりも先に切替指示を送信することにより、シーケンスコントロール部１２とリコンフィギャラブル回路５との間の通信にかかる時間を抑えることができる。
【００９０】
また、ＰＥ６Ｈは、実行する演算の種類をクロックの立ち上がりで切り替える。ＰＥ６Ｈは、実行する演算の種類を切り替えた後、所定の遅延時間遅れて、演算対象のデータを処理する。ＰＥ６Ｈは、演算対象のデータを処理後、プログラムカウンタの値を一つ増やす。このようにして、ＰＥ６Ｈは、演算対象のデータを１クロック無駄にすることなく処理できる。
【００９１】
図６Ｂでは、切替前のＰＥ６Ｈの構成（実行する演算の種類）がConfig2、切り替え後
のＰＥ６Ｈの構成がConfig3として示されている。また、図６Ｂでは、Config2の構成で使用される（処理される）データがD0-0、D0-1、及びD0-2として、Config3の構成で使用さ
れるデータがD1-0、D1-1、D1-2、…、として示されている。これらのデータは、コンフィギュレーションメモリ７又はネットワーク８からＰＥ６Ｈに入力されるデータである。
【００９２】
図７は、図６Ａで示されたシーケンスコントロール部１２によって、リコンフィギャラブル回路５の構成が切り替えられる（リコンフィグされる）際のパイプラインを示している。シーケンスコントロール部１２は、ＰＥ６のそれぞれを１クロック無駄にせずに切り替える。したがって、図７で示すように、シーケンスコントロール部１２が１クロック無駄にせずにリコンフィギャラブル回路５の構成を切り替える。したがって、図７に示すように、このパイプラインでは、演算対象のデータを処理しないクロックが発生しない。
【００９３】
また、図６Ａで示されたシーケンスコントロール部１２（本発明の「接続制御装置」に相当）が、セレクタ１０に対して、セレクタ１０による接続の切替を指示することにより、ネットワーク８内の接続（セレクタ１０による接続）を切替えることができる。この場合についても、上記で説明されたＰＥ６が実行する演算の種類の切替の場合と同様に、演算対象のデータの処理に、１クロックも無駄にせずにネットワーク８内の接続（セレクタ１０による接続）を切り替えることができる。
【００９４】
＜プロセッサエレメントが実行する演算及びネットワーク内の接続の切替例＞
次に、図８−図１３に基づいて、シーケンスコントロール部１２が、ＰＥ６が実行する演算の種類及びセレクタ１０による接続を切り替えるよう指示する動作を説明する。
【００９５】
図８は、シーケンスコントロール部１２が、ＰＥ６Ｉに実行する演算の種類の切替を指示する（３０１）一方、ネットワーク８内の接続の切替（セレクタ１０による接続の切替）を指示する（３００）動作を示している。シーケンスコントロール部１２は、全ＰＥ６（すなわち、図８では、２４個のＰＥ６）及び全セレクタ１０（すなわち、図８では、図２に基づいて、４８個のセレクタ１０）に直接的に接続されている（図示せず）。
【００９６】
シーケンスコントロール部１２は、ＰＥ６に対して、ＰＥ６が実行する演算の種類の切替を指示する一方、セレクタ１０に対して、セレクタ１０による接続の切替を指示する。シーケンスコントロール部１２は、これらの指定を格納するハードディスク等の記憶媒体（図示せず）を備えている。シーケンスコントロール部１２には、演算の種類の切り替えのタイミング、切替を実行するＰＥ６、及び切替を実行するセレクタ１０の情報等が指定されている。この指定は、シーケンスコントロール部１２を実装するＬＳＩで実行される解析プログラム（例えば、コンパイラ）等がユーザによって入力されたプログラム等を解析することによって実行される。
【００９７】
シーケンスコントロール部１２は、このＬＳＩ内部で使用されているクロックに基づく切替タイミングよりも先にＰＥ６Ｉによる演算の切り替えを指示する一方で、コンフィギュレーションメモリ９に接続されたセレクタ１０による接続の切替をライトイネーブル信号によって指示する。セレクタ１０は、ライトイネーブル信号が入力されると、セレクタ１０に接続されたコンフィギュレーションメモリ９から、セレクタ１０による次の接続のデータ（Config）をロードする。セレクタ１０は、ロードされたデータに基づいて、接続を切り替える。
【００９８】
このように、シーケンスコントロール部１２が切替タイミングよりも先に切替指示を送信することにより、シーケンスコントロール部１２とリコンフィギャラブル回路５との間の通信にかかる時間を抑えることができる。
【００９９】
また、ＰＥ６Ｉは、実行する演算の種類をクロックの立ち上がりで切り替える。ＰＥ６Ｉは、実行する演算の種類をシーケンスコントロール部１２からのライトイネーブル信号
に応じて切り替えた後、所定の遅延時間遅れて、演算対象のデータを処理する。ＰＥ６Ｉは、演算対象のデータを処理後、プログラムカウンタの値を一つ増やす。このようにして、ＰＥ６Ｉは、演算対象のデータを１クロック無駄にすることなく処理できる。ＰＥ６Ｉは、実行する演算を終了すると、終了信号をシーケンスコントロール部１２に送信する（３０２）。
【０１００】
セレクタ１０は、接続の切替の指示を受信すると、クロックの立ち上がりで、接続を切替える。セレクタ１０は、接続の切替後、データ通信を実行する。したがって、セレクタ１０は、１クロックの無駄もなく、接続の切替を実行できる。
【０１０１】
リコンフィギャラブル回路５は、このように、切り替えられたＰＥ６及び切り替えられたセレクタ１０に基づいて、動作する。このようにして、リコンフィギャラブル回路５は、ＰＥ６が実行する演算の種類、及び、セレクタ１０による接続を切り替える。以下、図９−１２に基づいて、シーケンスコントロール部１２が実行する処理をより詳しく説明する。
【０１０２】
まず、複数のＰＥ６に対してそれぞれ固有の記号を付け、複数のＰＥ６をそれぞれ区別する。例として、図８に示されたＰＥ６の一番上の段のＰＥ６を左から順に、「ＰＥ１」、「ＰＥ２」、…、「ＰＥ６」とする。図８に示されたＰＥ６の二番目に上の段のＰＥ６を左から順に、「ＰＥ７」、「ＰＥ８」、…、「ＰＥ１２」とする。このようにして、複数のＰＥ６のそれぞれを区別する。また、「ＰＥ１」に対して信号を出力する二つのセレクタ１０を「ＮＷ１」とする。「ＰＥ２」に対して信号を出力する二つのセレクタ１０を「ＮＷ２」とする。このように、ＰＥ６に信号を出力する二つのセレクタ１０を、「ＮＷ１」、「ＮＷ２」、「ＮＷ３」、…、のように記号付けして、セレクタ１０を区別する。
【０１０３】
図９は、シーケンスコントロール部１２がリコンフィギャラブル回路５に切替を指示する例を示している。この例では、「ＰＥ０」による演算が終了した際、「ＰＥ０」からシーケンスコントロール部１２に、「ＰＥ０」による演算が終了したことを示す終了信号が送信される（Ｓ１）。シーケンスコントロール部１２には、「ＰＥ０」が演算を終了することが予め指定されている。したがって、シーケンスコントロール部１２は、「ＰＥ０」からの終了信号を受信する前に、「ＰＥ１」及び「ＮＷ１」に対して、切替を指示する信号を送信する。このことにより、切替は１クロックの無駄もなく実行される。「ＰＥ１」は、シーケンスコントロール部１２から「ＰＥ１」の切替を指示する信号を受信すると、その信号に含まれる命令に基づいて、「ＰＥ１」を切り替える。「ＮＷ１」は、シーケンスコントロール部１２から「ＮＷ１」の切替を指示する信号を受信すると、その信号に含まれる指示に基づいて、「ＮＷ１」を切り替える。
【０１０４】
次に、「ＰＥ１」による演算が終了した際、「ＰＥ１」からシーケンスコントロール部１２に、「ＰＥ１」による終了信号が送信される（Ｓ２）。シーケンスコントロール部１２には、「ＰＥ１」が演算を終了することが予め指定されている。したがって、シーケンスコントロール部１２は、「ＰＥ１」からの終了信号を受信する前に、「ＰＥ１」及び「ＮＷ１」に対して、切替を指示する信号を送信する。このことにより、切替は１クロックの無駄もなく実行される。「ＰＥ１」は、シーケンスコントロール部１２から「ＰＥ３」の切替を指示する信号を受信すると、その信号に含まれる命令に基づいて、「ＰＥ３」を切り替える。「ＮＷ３」は、シーケンスコントロール部１２から「ＮＷ３」の切替を指示する信号を受信すると、その信号に含まれる指示に基づいて、「ＮＷ３」を切り替える。
【０１０５】
このようにして、シーケンスコントロール部１２は、ステップＳ１〜Ｓ５までの処理を指示する。そして、シーケンスコントロール部１２よる指示によって、「ＰＥ１」〜「ＰＥ４」は実行する演算を、「ＮＷ１」〜「ＮＷ４」は接続をそれぞれ切り替える。
【０１０６】
図１０には、図９に示されたシーケンスコントロール部１２による処理の実行に使用されるシーケンステーブル１３の例が示されている。シーケンスコントロール部１２は、シーケンステーブル１３をシーケンスコントロール部１２に格納している。シーケンスコントロール部１２は、シーケンステーブル１３に基づいて、ＰＥ６が実行する演算及びネットワーク８内の接続の切替を指示する。シーケンステーブル１３には、「ＰＥ０」による演算が終了する前に、「ＰＥ１」及び「ＮＷ１」を切り替えるよう指令が示されている。シーケンステーブル１３には、「ＰＥ１」による演算が終了する前に、「ＰＥ３」及び「ＮＷ３」を切り替えるよう指令が示されている。シーケンステーブル１３には、「ＰＥ２」による演算が終了する前に、「ＰＥ４」及び「ＮＷ４」を切り替えるよう指令が示されている。シーケンステーブル１３には、「ＰＥ３」による演算が終了する前に、「ＰＥ２」及び「ＮＷ２」を切り替えるよう指令が示されている。このシーケンステーブル１３により、シーケンスコントロール部１２は、図９で示された処理を実行する。
【０１０７】
また、シーケンスコントロール部１２は、ＰＥ６が実行する演算の種類の切替のみを指示するシーケンステーブルを格納してもよい。また、シーケンスコントロール部１２は、セレクタ１０による接続のみを指示するシーケンステーブルを格納してもよい。
【０１０８】
図２３は、「ＰＥ０」〜「ＰＥｎ」において、ＰＥ６が演算の終了までに実行する演算の回数とＰＣ値の値との関係を示す切替タイミング指示テーブル３６の例である。切替指示テーブル３６は、シーケンスコントロール部１２に格納されている。
【０１０９】
切替タイミング指示テーブル３６では、例えば、ＰＥ０は、ＰＣ値が０の場合、演算を５回実行することが示されている。切替タイミング指示テーブル３６では、例えば、ＰＥ０は、ＰＣ値が１の場合、演算を１回実行することが示されている。
【０１１０】
このように、シーケンスコントロール部１２は、切替タイミング指示テーブル３６から、ＰＥ６のそれぞれが実行する演算の回数を知ることができる。このため、シーケンスコントロール部１２は、それぞれのＰＥ６が演算の実行を終了する前に、実行する演算の種類の切替指示を準備し、実行できる。このようにシーケンスコントロール部１２が動作するので、ＰＥ６は、ＰＥ６が実行する演算の種類の切替指示を通信による遅延なく受信できる。したがって、リコンフィギャラブル回路５は、切替に要する時間を短縮できる。
【０１１１】
図１１は、図９で示されたシーケンスコントロール部１２による指示に対するＰＥ６による処理とＰＥ６による終了信号の送信とクロック（ＣＬＫ）との関係を示している。ここで、図１１では、ＰＥ６が実行する演算の種類を示す指標として、プログラムカウンタの値（ＰＣ値）が示されている。図１１では、ＰＣ値は、複数のＰＥ６のそれぞれに対して、最初、０の値が与えられている。そして、ＰＣ値は、ＰＥ６が実行する演算の種類が切り替えられるたびに、値が１ずつ増えるよう設定されている。図１１は、クロックに応じて連続的にＰＥ６のＰＣ値が変化する例である。
【０１１２】
図１１では、図９で示された処理ステップとの対応を示すために、ステップＳ１〜Ｓ５までの記号が図中に付加されている。また、図１１には、シーケンスコントロール部１２による処理の順番を示すための矢印が付加されている。シーケンスコントロール部１２は、この矢印が示す順にＰＥ６の切替を指示する。
【０１１３】
図１１に示されるように、「ＰＥ０」は、「ＰＥ０」による演算が終了すると、ＰＣ値を一つ増やすと共に、シーケンスコントロール部１２に終了信号を送信する。ＰＣ値は、ＰＥ６が実行する演算の種類の切替を示すために使用される。シーケンスコントロール部１２は、「ＰＥ０」からの終了信号を受信する前に、シーケンステーブル１３に基づいて
、「ＰＥ１」に演算の切り替え指示を送る。「ＰＥ１」は、演算の切り替え指示に基づいて演算を切り替える。「ＰＥ１」は、「ＰＥ１」による演算が終了すると、ＰＣ値を一つ増やすと共に、シーケンスコントロール部１２に終了信号を送信する。このようにして、ステップＳ１〜Ｓ５までの処理が、シーケンスコントロール部１２によって指示される。
【０１１４】
図１２は、「ＰＥ０」〜「ＰＥｎ」までのｎ＋１個のＰＥ６がある場合の切替テーブルの例を示している。図１０で示されたシーケンステーブル１３は、シーケンスコントロール部１２が一つのＰＥ６が実行する演算及びＰＥ６に接続するネットワーク８内の接続の切替を指示するためのテーブルである。
【０１１５】
図１２で示される切替テーブル１４は、シーケンスコントロール部１２が、所定のＰＥ６が演算を終了する前に、複数のＰＥ６に対して切り替え指示を出すために使用される。シーケンスコントロール部１２は、シーケンスコントロール部１２に切替テーブル１４を格納している。例えば、シーケンスコントロール部１２は、切替テーブル１４に基づいて、「ＰＥ０」による演算が終了する前に、「ＰＥ１」、「ＰＥ５」、「ＰＥ７」、及び「ＰＥ１５」に対して実行する演算を切り替えるよう指示する。また、シーケンスコントロール部１２は、切替テーブル１４に基づいて、「ＰＥ１」による演算が終了する前に、「ＰＥ３」、「ＰＥ４」、「ＰＥ９」、及び「ＰＥ２０」による演算を切り替えるよう指示する。このようにして、シーケンスコントロール部１２は、複数のＰＥ６のうちの一つの演算が終了する前に、他の４つのＰＥ６に対して切り替えを指示する。このようにして、シーケンスコントロール部１２は、一つのＰＥ６による演算の終了に際して、複数の演算の切替を実行させることができる。
【０１１６】
図１３は、ＰＥ６において、ＰＣ値を保持する回路を示すブロック図である。また、図１３は、ＰＥ６が保持するＰＣ値をシーケンスコントロール部１２に送信するシステムをも示している。このブロック図では、複数のＡＮＤ回路１５、ＡＮＤ回路１５に接続された複数の加算器（ＡＤＤ）１６、加算器１６に接続されたバススイッチ１７、バススイッチ１７内で動作してバススイッチ１７からの出力を調整するセレクタ１８、バススイッチ１７に接続され、入力された値を保持するフリップフロップ回路１９、及びフリップフロップ回路１９に接続された出力ポート２０が示されている。出力ポート２０は、シーケンスコントロール部１２に接続される（図示せず）。また、このブロック図では、１つのＡＮＤ回路１５と２つの加算器１６とが、一つのＰＥ６に備えられている。
【０１１７】
ＡＮＤ回路１５には、終了信号が入力されたことを示す信号として１を示す信号、又は、終了信号が入力されていないことを示す信号として０を示す信号が入力される。また、ＡＮＤ回路１５には、ＰＥ６が動作していることを示す信号として１を示す信号、又は、ＰＥ６が動作をしていないことを示す信号として０を示す信号が入力される。
【０１１８】
ＡＮＤ回路１５から出力された信号は、加算器１６に入力される。加算器１６は、入力された信号が示す数値と加算器１６が保持している数値とを加算し、加算された数値を示す信号をバススイッチ１７に送信する。
【０１１９】
バススイッチ１７は、セレクタ１８を通じて、「ＰＥ０」〜「ＰＥｎ」からの入力信号を「ＰＥ０」〜「ＰＥｎ」に応じた出力ポートに送信するよう信号を処理してから出力する。フリップフロップ回路１９は、バススイッチ１７からの信号を保持し、保持している信号を出力ポート２０に出力する。このようにして、出力ポート２０には、「ＰＥ０」〜「ＰＥｎ」までのＰＣ値がそれぞれ入力される。出力ポート２０は、入力された信号をシーケンスコントロール部１２に出力する。このようにして、「ＰＥ０」〜「ＰＥｎ」によって出力されたＰＣ値は、シーケンスコントロール部１２に入力される。
【０１２０】
＜演算の実行例＞
次に、図１４−図１７に基づいて、リコンフィギャラブル回路５による演算の実行例を説明する。この処理では、例として、リコンフィギャラブル回路５は、３×３のピクセル、すなわち、９ピクセルからなる画像の平均の色を示す数値を計算する。リコンフィギャラブル回路５は、それらのピクセルの色を示す値に画像フィルタ係数をそれぞれ重み付けし、重み付けされた値の合計値を出力する。この合計値がこの画像の色の平均の色を示す。
【０１２１】
図１４に示される行列Ｘの各行列要素は、それぞれのピクセルの色を示す数値であり、例えば、０〜２５５までの値のうちの一つを持つ。このデータを画像データとする。図１４では、行列要素として、ｘ００，ｘ１０，ｘ２０，ｘ０１，ｘ１１，ｘ２１，ｘ０２，ｘ１２，ｘ２２が示されている。リコンフィギャラブル回路５は、例えば、行列要素ｘ００を、画像の左上のピクセルの画像データとして、ラインバッファに格納する。また、リコンフィギャラブル回路５は、例えば、ｘ０２を、画像の左下のピクセルの画像データとして、ラインバッファに格納する。このようにして、リコンフィギャラブル回路５は、ラインバッファに画像データを格納する。
【０１２２】
図１５は、画像フィルタ係数を示している。図１５では、画像フィルタとして、ａ００，ａ１０，ａ２０，ａ０１，ａ１１，ａ２１，ａ０２，ａ１２，ａ２２が示されている。リコンフィギャラブル回路５は、例えば、画像フィルタａ００を、３×３の画像の左上のピクセルに対する画像フィルタとして、コンフィギュレーションメモリ７に格納する。また、リコンフィギャラブル回路５は、例えば、画像フィルタａ０２を、３×３の画像の左下のピクセルに対する画像フィルタとして、コンフィギュレーションメモリ７に格納する。
【０１２３】
図１６は、ＰＥ６による読み出し制御対象の画像フィルタ係数のデータ構成例を示している。演算対象のデータの処理の際、ＰＥ６は、コンフィギュレーションメモリ７に格納されたデータを読み出す。この読み出し制御を実行するＰＥ６を「ＲＡＭ」として表す。この処理では、読み出し制御を実行するＰＥ６を「ＲＡＭ０」〜「ＲＡＭ２」とする３つのＰＥ６が使用される。
【０１２４】
また、「ＲＡＭ０」に接続されたコンフィギュレーションメモリ７には、画像フィルタ係数ａ００，ａ０１，ａ０２が格納されている。「ＲＡＭ０」は、コンフィギュレーションメモリ７に格納された画像フィルター係数をａ００，ａ０１，ａ０２の順で読み出す。「ＲＡＭ１」に接続されたコンフィギュレーションメモリ７には、画像フィルタ係数ａ１０，ａ１１，ａ１２が格納されている。「ＲＡＭ１」は、コンフィギュレーションメモリ７に格納された画像フィルター係数をａ１０，ａ１１，ａ１２の順で読み出す。「ＲＡＭ２」に接続されたコンフィギュレーションメモリ７には、画像フィルタ係数ａ２０，ａ２１，ａ２２が格納されている。「ＲＡＭ２」は、コンフィギュレーションメモリ７に格納された画像フィルター係数をａ２０，ａ２１，ａ２２の順で読み出す。
【０１２５】
この演算の実行例では、リコンフィギャラブル回路５は、次の式（１）を計算する。
【０１２６】
【数１】
0004646840.tif 000002
図１７は、リコンフィギャラブル回路５が式（１）を計算する際の演算実行例を示している。まず、この演算の指令がＣＮＴ（カウンタ）２２に入力される。ＣＮＴ２２は、「
ＲＡＭ０」を示すＲＡＭ２３Ａ、「ＲＡＭ１」を示すＲＡＭ２３Ｂ、「ＲＡＭ２」を示すＲＡＭ２３Ｃのそれぞれに対して演算の実行を指令する。ＲＡＭ２３Ａは、コンフィギュレーションメモリ７から画像フィルタ係数ａ００を読み出す。ＲＡＭ２３Ａは、読み出された画像フィルタ係数ａ００をＭＡＣ２４Ａに送信する。ＲＡＭ２３Ｂは、コンフィギュレーションメモリ７から画像フィルタ係数ａ１０を読み出す。ＲＡＭ２３Ｂは、読み出された画像フィルタ係数ａ１０をＭＡＣ２４Ｂに送信する。ＲＡＭ２３Ｃは、コンフィギュレーションメモリ７から画像フィルタ係数ａ２０を読み出す。ＲＡＭ２３Ｃは、読み出された画像フィルタ係数ａ２０をＭＡＣ２４Ｃに送信する。
【０１２７】
一方、ＭＡＣ２４Ａには、リコンフィギャラブル回路５の外からの画像データｘ００が入力される。ＭＡＣ２４Ｂには、リコンフィギャラブル回路５の外からの画像データｘ１０が入力される。ＭＡＣ２４Ｃには、リコンフィギャラブル回路５の外からの画像データｘ２０が入力される。
【０１２８】
ＭＡＣ２４Ａは、入力された画像データｘ００と画像フィルタ係数ａ００とを乗算し、乗算された結果を含む信号をＡＤＤ２５Ａに送信する。すなわち、ｘ００×ａ００の計算結果を含む信号がＡＤＤ２５Ａに送信される。ＭＡＣ２４Ｂは、入力された画像データｘ１０と画像フィルタ係数ａ１０とを乗算し、乗算された結果を含む信号をＡＤＤ２５Ａに送信する。すなわち、ｘ１０×ａ１０の計算結果を含む信号がＡＤＤ２５Ａに送信される。ＭＡＣ２４Ｃは、入力された画像データｘ２０と画像フィルタ係数ａ２０とを乗算し、乗算された結果を含む信号をＡＤＤ２５Ｂに送信する。すなわち、ｘ２０×ａ２０の計算結果がＡＤＤ２５Ｂに送信される。
【０１２９】
ＡＤＤ２５Ａは、ＭＡＣ２４Ａから受信されたＭＡＣ２４Ａによる演算結果とＭＡＣ２４Ｂから受信されたＭＡＣ２４Ｂによる演算結果とを加算し、加算された結果を含む信号をＡＤＤ２５Ｂに送信する。すなわち、ｘ００×ａ００＋ｘ１０×ａ１０の計算結果を含む信号がＡＤＤ２５Ｂに送信される。ＡＤＤ２５Ｂは、ＡＤＤ２５Ａから受信されたＡＤＤ２５Ａによる演算結果とＭＡＣ２４Ｃから受信されたＭＡＣ２４Ｃによる演算結果とを加算する。すなわち、ｘ００×ａ００＋ｘ１０×ａ１０＋ｘ２０×ａ２０の計算が実行される。
【０１３０】
このようにして、リコンフィギャラブル回路５は、式（１）に含まれるｘ００×ａ００＋ｘ１０×ａ１０＋ｘ２０×ａ２０の計算を実行する。リコンフィギャラブル回路５が、以上の処理を繰り返すことにより、式（１）の計算が実行される。
【０１３１】
＜変形例１＞
図１８は、本発明の実施形態のリコンフィギャラブル回路の第１の変形例を示している。リコンフィギャラブル回路２６は、回路２６Ａ〜２６Ｄ及び回路２６Ａ〜２６Ｄを接続するネットワーク２９を有している。回路２６Ａは、複数のＰＥ２７Ａ、複数のＰＥ２７Ａの全てに接続されたコンフィギュレーションメモリ２８Ａ、及び、複数のＰＥ２７Ａに接続されたネットワーク２９内のコンフィギュレーションメモリ３０Ａを有している。回路２６Ｂは、複数のＰＥ２７Ｂ、複数のＰＥ２７Ｂの全てに接続されたコンフィギュレーションメモリ２８Ｂ、及び、複数のＰＥ２７Ｂに接続されたネットワーク２９内のコンフィギュレーションメモリ３０Ｂを有している。回路２６Ｃは、複数のＰＥ２７Ｃ、複数のＰＥ２７Ｃの全てに接続されたコンフィギュレーションメモリ２８Ｃ、及び、複数のＰＥ２７Ｃに接続されたネットワーク２９内のコンフィギュレーションメモリ３０Ｃを有している。回路２６Ｄは、複数のＰＥ２７Ｄ、複数のＰＥ２７Ｄの全てに接続されたコンフィギュレーションメモリ２８Ｄ、及び、複数のＰＥ２７Ｄに接続されたネットワーク２９内のコンフィギュレーションメモリ３０Ｄを有している。
【０１３２】
回路２６Ａ〜２６Ｄは、それぞれが１つのパイプラインとして示される処理結果を出力する。例えば、回路２６Ａは、図１８の右の図のＡ１という処理結果を出力する。また、回路２６Ａは、回路の再構成の結果、Ａ０という処理結果を出力する。回路２６Ｂは、図１８の右の図のＢ１という処理結果を出力する。また、回路２６Ｂは、回路の再構成の結果、Ｂ０という処理結果を出力する。回路２６Ｃは、図１８の右の図のＣ１という処理結果を出力する。回路２６Ｃは、回路の再構成の結果、Ｃ０という処理結果を出力する。回路２６Ｄは、図１８の右の図のＤ１という処理結果を出力する。回路２６Ｄは、回路の再構成の結果、Ｄ０という処理結果を出力する。
【０１３３】
演算を実行するパイプライン（演算制御フロー）の段数が予めわかっている場合、リコンフィギャラブル回路２６は、パイプラインのステージ単位で回路構成を持つことで、コンフィギュレーションメモリ２８Ａ〜２８Ｄ，３０Ａ〜３０Ｄを有効に使用できる。すなわち、ＰＥ２７Ａ〜２７Ｄは、本実施形態と同様に、高速でコンフィギュレーションメモリ２８Ａ〜２８Ｄ，３０Ａ〜３０Ｄとアクセスできる。また、ＰＥ２７Ａ〜２７Ｄが実行する演算及びネットワーク２９内の接続に関しても、本実施形態と同様に、高速で切り替えることができる。また、ＰＥ２７Ａ〜２７Ｄやネットワーク９内の接続の自律的な制御に関しても有効である。
【０１３４】
また、本実施形態のように、ＰＥ２７Ａ〜２７Ｄが実施する演算及びネットワーク９内の接続を制御するシーケンスコントロール部（図示せず）がさらに付加された場合を考える。この場合、シーケンスコントロール部は、本実施形態のように、ＰＥ２７Ａ〜２７Ｄ及びネットワーク９内の接続を１クロックの無駄もなく切り替える。
【０１３５】
このように、回路２６Ａ〜２６Ｄは、コンフィギュレーションメモリ２８Ａ〜２８Ｄ，３０Ａ〜３０Ｄの中に、まとめて回路構成のデータを持てる。したがって、回路２６Ａ〜２６Ｄは、コンフィギュレーション２８Ａ〜２８Ｄ，３０Ａ〜３０Ｄに共通する制御項目をまとめることができる。このため、リコンフィギャラブル回路２６は、リコンフィギャラブル回路５と比べて、リソースを節約できる。
【０１３６】
＜変形例２＞
図１９は、本発明の実施形態のリコンフィギャラブル回路の第２の変形例を示している。リコンフィギャラブル回路３１は、複数のＰＥ３２、ＰＥ３２に接続されたＰＥ３２に関するコンフィギュレーションメモリ３３、ＰＥ３２に接続されたネットワーク３４に関するコンフィギュレーションメモリ３５、及び、それらを接続するネットワーク３４を有している。
【０１３７】
リコンフィギャラブル回路３１は、本実施形態で示されたリコンフィギャラブル回路５と、ネットワーク３４の接続に関するコンフィギュレーションメモリ３５がＰＥ３２に接続されている点が異なっている。
【０１３８】
ＰＥ３２に応じたネットワーク３４内のセレクタは、該ＰＥ３２に接続されたコンフィギュレーションメモリ３５に格納された命令及びデータに基づいて、該ＰＥ３２への信号の出力を制御する。このようにして、本実施形態のように、ネットワークの接続に関するコンフィギュレーションメモリ３５がネットワーク３４内に接続されず、ＰＥ３２に接続されてもよい。
【０１３９】
このように、ネットワーク３４に関するコンフィギュレーションメモリ３５がＰＥ３２に接続されている場合でも、ＰＥ３２が実行する演算の自律的な切替、ネットワーク３４内の接続の自律的な切替、及び、シーケンスコントロール部による制御により、本実施形態で示された効果と同様の効果を得ることができる。
【図面の簡単な説明】
【０１４０】
【図１】本発明の実施形態のリコンフィギャラブル回路の基本構成図である。
【図２】本発明の実施形態に係るネットワークの基本構成図である。
【図３】本発明の実施形態に係るプロセッサエレメント及びセレクタの基本構成図である。
【図４】プロセッサエレメントが実行する演算の第１の切替例を示す図である。
【図５Ａ】プロセッサエレメントが実行する演算の第２の切替例を示す第１の図である。
【図５Ｂ】プロセッサエレメントが実行する演算の第２の切替例を示す第２の図である。
【図６Ａ】プロセッサエレメントが実行する演算の第３の切替例を示す第１の図である。
【図６Ｂ】プロセッサエレメントが実行する演算の第３の切替例を示す第２の図である。
【図７】本実施形態によるリコンフィギャラブル回路の実施によって示されるパイプラインの例を示す図である。
【図８】プロセッサエレメントが実行する演算及びネットワーク内の接続の切替例を示す図である。
【図９】シーケンスコントロール部が実行する処理例を示す図である。
【図１０】シーケンステーブルの例を示す図である。
【図１１】ＰＣ値が増える動作を示す図である。
【図１２】切替テーブルの例を示す図である。
【図１３】ＰＣ値をシーケンスコントロール部に送信するシステムを示す基本構成図である。
【図１４】ラインバッファの例を示す図である。
【図１５】画像フィルタ係数の例を示す図である。
【図１６】コンフィギュレーションメモリに格納された画像フィルタ係数の例を示す図である。
【図１７】リコンフィギャラブル回路による演算の実行例を示す図である。
【図１８】本実施形態の第１の変形例のリコンフィギャラブル回路を示す図である。
【図１９】本実施形態の第２の変形例のリコンフィギャラブル回路を示す図である。
【図２０】従来技術のリコンフィギャラブル回路を示す図である。
【図２１】従来技術によるプロセッサエレメントが実行する演算の切替例を示す図である。
【図２２】従来技術によるリコンフィギャラブル回路の実施によって示されるパイプラインの例を示す図である。
【図２３】切替タイミング指示テーブルの例を示す図である。
【符号の説明】
【０１４１】
１  従来技術によるリコンフィギャラブル回路
２  プロセッサエレメント（ＰＥ）
３  コンフィギュレーションメモリ
４  ネットワーク
５  本実施形態によるリコンフィギャラブル回路
６  プロセッサエレメント（ＰＥ）
７  コンフィギュレーションメモリ
８  ネットワーク
９  ネットワークに関するコンフィギュレーションメモリ
１０，１０Ａ〜１０Ｄ  セレクタ
１１，１１Ａ〜１１Ｄ  ネットワークに関するコンフィギュレーションメモリ  
１２  シーケンスコントロール部（ＳＣ  ＵＮＩＴ）
１３  シーケンステーブル
１４  切り替えテーブル
１５  ＡＮＤ回路
１６  加算器（ＡＤＤ）
１７  バススイッチ
１８  セレクタ
１９  フリップフロップ回路
２０  出力ポート
２１Ａ〜２１Ｃ  テーブル  
２２  コントロール（ＣＮＴ）
２３Ａ〜２３Ｃ  ＲＡＭ
２４Ａ〜２４Ｃ  ＭＡＣ
２５Ａ，２５Ｂ  ＡＤＤ
２６  リコンフィギャラブル回路
２６Ａ〜２６Ｄ  回路
２７Ａ〜２７Ｄ  プロセッサエレメント（ＰＥ）
２８Ａ〜２８Ｄ  コンフィギュレーションメモリ
２９  ネットワーク
３０Ａ〜３０Ｄ  コンフィギュレーションメモリ
３１  リコンフィギャラブル回路
３２  プロセッサエレメント（ＰＥ）
３３  プロセッサエレメントに関するコンフィギュレーションメモリ
３４  ネットワーク
３５  ネットワークに関するコンフィギュレーションメモリ
３６  切替タイミング指示テーブル
１００−１〜１００−ｎ  フリップフロップ回路
１０１  選択素子
１０２  命令保持装置
１０３−１〜１０３−ｎ  フリップフロップ回路
１０４  制御装置
１０５  遅延制御装置
１０６  演算装置
１０７  指令データ
１０８  命令保持装置
１０９  論理回路
２００  矢印
２０１  矢印
３００  矢印
３０１  矢印
３０２  矢印
【図１】
0004646840.tif 000003
【図２】
0004646840.tif 000004
【図３】
0004646840.tif 000005
【図４】
0004646840.tif 000006
【図５Ａ】
0004646840.tif 000007
【図５Ｂ】
0004646840.tif 000008
【図６Ａ】
0004646840.tif 000009
【図６Ｂ】
0004646840.tif 000010
【図７】
0004646840.tif 000011
【図８】
0004646840.tif 000012
【図９】
0004646840.tif 000013
【図１０】
0004646840.tif 000014
【図１１】
0004646840.tif 000015
【図１２】
0004646840.tif 000016
【図１３】
0004646840.tif 000017
【図１４】
0004646840.tif 000018
【図１５】
0004646840.tif 000019
【図１６】
0004646840.tif 000020
【図１７】
0004646840.tif 000021
【図１８】
0004646840.tif 000022
【図１９】
0004646840.tif 000023
【図２０】
0004646840.tif 000024
【図２１】
0004646840.tif 000025
【図２２】
0004646840.tif 000026
【図２３】
0004646840.tif 000027