(57)【特許請求の範囲】
【請求項１】
データフローを実現するための処理をそれぞれ割り当て可能な複数の構成要素を有する再構成デバイスのために、データフローについて前記複数の構成要素へ処理を割り当てるための設定情報を定める装置であって、
複数のデータフローのそれぞれを前記複数の構成要素によって実現するための設定値を含む設定情報と、前記複数の構成要素の構成情報とを入力する入力手段と、
前記設定情報と前記構成情報とに基づいて、処理を割り当て済みである第１および第２のデータフローの間に処理を割り当て済みではない第３のデータフローを挿入する場合に、前記第１のデータフローから前記第３のデータフローへ前記再構成デバイスを再構成するのに要する構成要素の設定変更数と、前記第３のデータフローから前記第２のデータフローへ前記再構成デバイスを再構成するのに要する構成要素の設定変更数との合計数を取得する取得手段と、
前記合計数が小さくなるように、前記第３のデータフローについて前記複数の構成要素へ処理を割り当てる制御手段と、
を備え、
前記設定変更数は、各構成要素内のコンフィギュレーションメモリの各アドレスに対する前記設定値の変更の有無に基づく値であることを特徴とする装置。
【請求項２】
前記入力手段は、前記複数のデータフローの実行順序をさらに入力することを特徴とする請求項１に記載の装置。
【請求項３】
前記制御手段は、
前記実行順序に基づいて、前記第３のデータフローに対して前記構成要素のそれぞれに処理を割り当てる割当候補を決定する候補決定手段と、
前記設定情報と前記構成情報とに基づいて、前記割当候補ごとに前記設定変更数を算出する変更数算出手段と、
前記設定変更数が小さくなるように前記構成要素への処理の割り当てを決定する決定手段と、
を備えることを特徴とする請求項２に記載の装置。
【請求項４】
前記決定手段は、
前記構成情報に基づいて前記割当候補が前記構成要素に割当可能であるか否かを判定する判定手段と、
前記判定手段により割当可能でないと判定された場合、ペナルティ値を決定するペナルティ値決定手段と、
前記設定変更数と前記ペナルティ値とに基づいて割り当てを決定するための評価値を算出する評価値算出手段と、
前記評価値が閾値以下であるか否かを判定する評価値判定手段と、を備え、
前記決定手段は、前記評価値が閾値以下であると判定された場合に、前記割当候補を前記構成要素への処理の割り当てとして決定することを特徴とする請求項３に記載の装置。
【請求項５】
データフローを実現するための処理をそれぞれ割り当て可能な複数の構成要素を有する再構成デバイスのために、データフローについて前記複数の構成要素へ処理を割り当てるための設定情報を定める装置であって、
処理を割り当て済みである第１および第２のデータフローの間に、処理を割り当て済みではない第３のデータフローを挿入する場合、前記第１のデータフローから前記第３のデータフローへの構成要素の設定変更数と、前記第３のデータフローから前記第２のデータフローへの構成要素の設定変更数とに基づいて、前記第３のデータフローについて前記複数の構成要素へ処理を割り当てる制御手段を備え、
前記設定変更数は、各構成要素内のコンフィギュレーションメモリの各アドレスに対する設定値の変更の有無に基づく値であることを特徴とする装置。
【請求項６】
データフローを実現するための処理をそれぞれ割り当て可能な複数の構成要素を有する再構成デバイスのために、データフローについて前記複数の構成要素に処理を割り当てるための設定情報を定める装置であって、入力手段と取得手段と制御手段を備える前記装置における処理方法であって、
前記入力手段が、複数のデータフローのそれぞれを前記複数の構成要素によって実現するための設定値を含む設定情報と、前記複数の構成要素の構成情報とを入力する入力工程と、
前記取得手段が、前記設定情報と前記構成情報とに基づいて、処理を割り当て済みである第１および第２のデータフローの間に処理を割り当て済みではない第３のデータフローを挿入する場合に、前記第１のデータフローから前記第３のデータフローへ前記再構成デバイスを再構成するのに要する構成要素の設定変更数と、前記第３のデータフローから前記第２のデータフローへ前記再構成デバイスを再構成するのに要する構成要素の設定変更数との合計数を取得する取得工程と、
前記制御手段が、前記合計数が小さくなるように、前記第３のデータフローについて前記複数の構成要素へ処理を割り当てる制御工程と、
を備えることを特徴とする処理方法。
【請求項７】
データフローを実現するための処理をそれぞれ割り当て可能な複数の構成要素を有する再構成デバイスのために、データフローについて前記複数の構成要素に処理を割り当てるための設定情報を定める装置における処理方法であって、
制御手段が、処理を割り当て済みである第１および第２のデータフローの間に、処理を割り当て済みではない第３のデータフローを挿入する場合、前記第１のデータフローから前記第３のデータフローへの構成要素の設定変更数と、前記第３のデータフローから前記第２のデータフローへの構成要素の設定変更数とに基づいて、前記第３のデータフローについて前記複数の構成要素へ処理を割り当てる制御工程を有し、
前記設定変更数は、各構成要素内のコンフィギュレーションメモリの各アドレスに対する設定値の変更の有無に基づく値であることを特徴とする処理方法。
【請求項８】
請求項６又は７に記載の処理方法の各工程をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置制御方法、およびプログラムに関し、特に回路構成を変更することができる情報処理装置、情報処理装置の制御方法、およびプログラムに関する。
【背景技術】
【０００２】
従来から製造後のＬＳＩ回路装置であっても内部の回路構成を変更することにより、回路が行う処理内容を変更することが可能な再構成デバイスが提案されている。製造後のＬＳＩ回路装置であっても処理を変更することが可能であるため、仕様変更などに伴うＬＳＩの作り直しを行わなくて済む。製造コストを抑えることが可能な点や開発期間が短縮可能な点で、現在様々な分野において再構成デバイスが使用されている。
【０００３】
再構成デバイスの構成として、多数のＬＵＴ（Ｌｏｏｋ−Ｕｐ−Ｔａｂｌｅ）を搭載したタイプや多数のプロセッシングエレメント（ＰＥ）を搭載したタイプが代表的である。また各々のエレメントにはマルチプレクサなどのスイッチングエレメントが接続されている。ここではＬＵＴやプロセッシングエレメント、スイッチングエレメントなどの各構成要素を動作させるための設定情報を総称して「回路構成情報」と称する。回路構成情報の生成方法としては様々な方法があるが、一般に（１）テクノロジーマッピングと呼ばれる論理的な処理の割り当て工程、（２）各構成要素への物理的な配置工程、（３）各構成要素の経路決定工程、に分けられ、各工程が順番に行われることが多い。上記三つの工程を経て最終的に回路構成情報が生成される。
【０００４】
（１）論理的な処理の割り当て工程では、処理を構成要素に割り当てることを行う。具体的には、各処理を物理的な構成要素を特定せずに論理的な構成要素に割り当てる。順序変更の指標としては、回路面積、動作速度、消費電力を用いることが一般的である。（２）配置工程では、再構成デバイス内のどの構成要素でどの処理を行うかの物理的な割り当てを決定する。データの入出力関係にある処理が配置されているプロセッシングエレメント間の距離によって、データ通信に係るスイッチングエレメント数が異なるため、遅延時間（最大動作周波数）が大きく変化する。そのため、通常は入出力関係のある処理はできる限り近い距離のプロセッシングエレメントに配置させることが遅延時間を短縮する上で重要となる。（３）経路決定工程では、データ通信の入出力関係にあるプロセッシングエレメント間のデータ通信のため、スイッチングエレメントによる経路を決定する。配置工程と比べ具体的な経路を決定するため、プロセッシングエレメント間の遅延時間を短縮した経路を決定することが重要となってくる。
【０００５】
近年、集積度の向上に伴い、再構成デバイスにおいて実行可能な処理の規模は増えている。しかし、最近ではそれにも増して、処理自体への要求が複雑化・高度化しており、一つの再構成デバイスで全ての処理を一度に行うことは難しい場合がある。これに対して、一つの再構成デバイスにおいて時分割で処理を順々に行う方法がある。より具体的にはまず所望の処理を分割し、分割した処理に対応した回路構成情報を生成する。その後、回路構成情報に基づいた再構成デバイスの回路構成の変更、処理を順々に行っていく。これにより、一つの再構成デバイスで大きな規模の処理を行うことが可能となる。しかしながら、毎回全ての回路構成を変更させていては全体の処理時間が長くなってしまい、速度性能が低下してしまう。また処理分割数が多い場合も同様に、処理速度の低下を生じさせてしまう。
【０００６】
この問題を解決するための方法として、マルチコンテキスト型の再構成デバイスがある。コンテキストとは、回路構成情報のことであり、マルチコンテキスト型の再構成デバイスとは、複数の回路構成情報を格納するメモリを再構成デバイス内に搭載したものである。回路構成を変更する場合には、そのメモリを切り替えてデバイスを再構成することが可能であり、高速に切り換え可能であるため、回路の再構成時間を大幅に短縮することが可能である。しかし、追加で回路構成情報用のメモリを搭載する必要があるため、回路規模が増大するという問題がある。
【０００７】
これに対し特許文献１では、再構成時間を短縮する方法としてスケルトン回路技術に基づいた手法が提案されている。この手法では、先行ベース回路と呼ばれる回路構成情報を、予め再構成デバイスに構成しておく。ここで先行ベース回路とは複数の回路構成情報において全てに共通する共通回路部分と、複数個の回路で互いに共通せず、かつ、再構成デバイス上で回路構成情報を共有しない非排他的独立回路部分と、からなる回路構成情報のことである。再構成デバイス上において回路の差分のみを部分的に再構成することにより、処理に必要な回路を構成するようにする。この方法によれば、マルチコンテキスト型に比べ、追加で構成用のメモリを必要としないため回路規模が増大はしない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許０３５５８１１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、一般に再構成デバイスでは様々なアプリケーションを実行する可能性があり、アプリケーションによっては共通部分が少なくなる。また、再構成すべき回路構成情報の数もアプリケーションによって異なる。特許文献１で述べられている先行ベース回路において、共通部分が少ないもしくは、回路構成情報の数が多く再構成デバイスの回路規模を大幅に超えてしまう場合には回路構成を変更するための期間を効率的に削減することが難しいという課題がある。
【００１０】
上記の課題に鑑み、本発明は、回路構成変更の順序を考慮することで、回路規模を増やすことなく回路変更に要する時間を効率的に短縮することを目的とする。
【課題を解決するための手段】
【００１１】
上記の目的を達成する本発明に係る装置は、
データフローを実現するための処理をそれぞれ割り当て可能な複数の構成要素を有する再構成デバイスのために、データフローについて前記複数の構成要素へ処理を割り当てるための設定情報を定める装置であって、
複数のデータフローのそれぞれを前記複数の構成要素によって実現するための設定値を含む設定情報と、前記複数の構成要素の構成情報とを入力する入力手段と、
前記設定情報と前記構成情報とに基づいて、処理を割り当て済みである第１および第２のデータフローの間に処理を割り当て済みではない第３のデータフローを挿入する場合に、前記第１のデータフローから前記第３のデータフローへ前記再構成デバイスを再構成するのに要する構成要素の設定変更数と、前記第３のデータフローから前記第２のデータフローへ前記再構成デバイスを再構成するのに要する構成要素の設定変更数との合計数を取得する取得手段と、
前記合計数が小さくなるように、前記第３のデータフローについて前記複数の構成要素へ処理を割り当てる制御手段と、
を備え、
前記設定変更数は、各構成要素内のコンフィギュレーションメモリの各アドレスに対する前記設定値の変更の有無に基づく値であることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、再構成に必要な設定数を減らすように回路構成情報を作成することにより、回路規模を増やすことなく再構成デバイスの再構成に要する時間を短縮することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】再構成デバイスを含む処理装置の構成例を示す図。
【図２】再構成デバイスの構成例を示す図。
【図３】再構成デバイスのエレメント間のデータ通信の手順例を示す図。
【図４】プロセッシングエレメントの構成例を示す図。
【図５】コンフィギュレーションコマンドのフォーマット例を示す図。
【図６】プロセッシングエレメントのコンフィギュレーションメモリに格納される設定の概要例を示す図。
【図７】設定を読み書きする処理の手順を示すフローチャート。
【図８】スイッチングエレメントの構成例を示す図。
【図９】スイッチングエレメントのコンフィギュレーションメモリに格納される設定の概要例を示す図。
【図１０】複数のデータフローを順次実行するタイムチャート。
【図１１】処理割り当ての概要例を示す図。
【図１２】第１実施形態に係るデータフローの処理割り当てを行うための概要例の図。
【図１３】第１実施形態に係る処理割り当てを行うための処理の手順を示すフローチャート。
【図１４】第２実施形態に係るデータフローの処理割り当てを行うための概要例を示す図。
【図１５】第３実施形態に係るデータフローの処理割り当てを行うための概要例を示す図。
【図１６】第４実施形態に係るデータフローの処理割り当てを行うための概要例を示す図。
【発明を実施するための形態】
【００１４】
（第１実施形態）
図１を参照して、データフローを実現するための部分処理をそれぞれ割当可能な複数の構成要素を備える情報処理装置として機能する、再構成デバイスを有するシステムの全体構成の一例を示す。ここで、データフローとは、１つ以上の処理を有する一連の処理を示すものとし、パイプライン処理もその１つである。外部メモリ１０１は、内部に回路構成情報１０６を保持している。回路構成情報１０６は再構成デバイス１０５を構成する要素を制御して動作させる設定情報である。コンフィギュレーションコントローラ１０２は、上記外部メモリ１０１から結線１０４を通じ回路構成情報１０６を取得する。取得した回路構成情報１０６は結線１０３を通じて再構成デバイス１０５へ送られる。ここで再構成デバイス１０５の例としてプロセッシングエレメントアレイとしている。
【００１５】
また以下では具体的にプロセッシングエレメントアレイ内の説明をするが、本発明は下記の各プロセッシングエレメントの構成や経路構成に限定されるものではない。
【００１６】
図２は、本実施形態における再構成デバイス１０５であるプロセッシングエレメントアレイの概要を示す。
【００１７】
再構成デバイス１０５には、８入力８出力の入出力処理部であるスイッチングエレメント２０１が二次元格子状に配置され、演算処理部である４入力４出力のプロセッシングエレメント２０２が、スイッチングエレメント２０１により形成される格子内に配置されている。スイッチングエレメント２０１ａ〜スイッチングエレメント２０１ｉの８入力８出力は、１入力１出力を一組としてそれぞれ図面上部を北方向として東西南北（右左下上）方向の、他の４つのスイッチングエレメント２０１と、結線２０３ａおよび結線２０３ｂを介して夫々接続されている。さらに、北東、南東、南西、北西方向の、それぞれ別の４つのプロセッシングエレメント２０２と結線２０４ａおよび結線２０４ｂを介して双方向に接続されている。またスイッチングエレメント２０１ａ〜スイッチングエレメント２０１ｉおよびプロセッシングエレメント２０２ａ〜プロセッシングエレメント２０２ｄは結線２０５により一方向に数珠繋ぎに接続されている。
【００１８】
結線２０３ａ、結線２０３ｂおよび結線２０４ａ、結線２０４ｂはスイッチングエレメント２０１やプロセッシングエレメント２０２の間で処理対象データを通信するための結線である。結線２０５は、スイッチングエレメント２０１やプロセッシングエレメント２０２に設定を供給するための結線である。上述の設定によって、スイッチングエレメント２０１においては処理対象データの入出力先が決定され、プロセッシングエレメント２０２においては処理対象データの入出力先や処理内容が決定される。なお、図２の各結線２０３ａ、結線２０３ｂ、結線２０４ａ、結線２０４ｂ、結線２０５の矢印の方向はデータの流れる方向を示している。またスイッチングエレメント２０１ａ〜スイッチングエレメント２０１ｉはそれぞれ同じ構成を有し、プロセッシングエレメント２０２ａ〜プロセッシングエレメント２０２ｄはそれぞれ同じ構成を有する。
【００１９】
ここで、図３を参照して、各結線２０３ａ、結線２０３ｂ、結線２０４ａ、結線２０４ｂ、結線２０５の通信プロトコルの一例として、Ｖａｌｉｄ信号とＲｅａｄｙ信号による２線ハンドシェークを説明する。図３では、送信側であるモジュールＡ３０１と受信側であるモジュールＢ３０２との間が、データ信号線３０３、Ｖａｌｉｄ信号線３０４およびＲｅａｄｙ信号線３０５により接続されている。Ｖａｌｉｄ信号はＶａｌｉｄ信号線３０４を通じて伝達される信号であり、送信側が受信側に対して送信可能状態であることを示す信号である。Ｒｅａｄｙ信号は、Ｒｅａｄｙ信号線３０５を通じて伝達される信号であり、受信側が送信側に対しデータ受信可能状態であることを示す信号である。本プロトコルではモジュールＡ３０１からのＶａｌｉｄ信号線３０４とモジュールＢ３０２のＲｅａｄｙ信号線３０５とが両方有効となるクロック立ち上がりのタイミングでデータ信号線３０３のデータがモジュールＡ３０１からモジュールＢ３０２へと送信される。図３に示される波形中ではタイミング３０６ａでデータＡが、タイミング３０６ｂでデータＢが、タイミング３０６ｃでデータＣが、タイミング３０６ｄでデータＤが、それぞれモジュールＡ３０１からモジュールＢ３０２へと転送されている。
【００２０】
次に、図４を参照して、プロセッシングエレメント２０２の構成を説明する。プロセッシングエレメント２０２は、コンフィギュレーションユニット４０１と、インプットユニット４０２と、コンピュテーショナルユニット４０３と、アウトプットユニット４０４と、テンポラリーバッファ４０５とを備える。コンフィギュレーションユニット４０１は、プロセッシングエレメント２０２の動作内容を決定するための設定の管理を行う。インプットユニット４０２は、コンフィギュレーションユニット４０１の設定に基づき、入力処理を行う。コンピュテーショナルユニット４０３は、コンフィギュレーションユニット４０１の設定に基づき、演算処理を行う。また、コンピュテーショナルユニット４０３は、再度コンピュテーショナルユニット４０３に入力するためテンポラリーバッファ４０５に処理された結果を保持することが可能である。アウトプットユニット４０４は、コンフィギュレーションユニット４０１の設定に基づき、出力処理を行う。
【００２１】
プロセッシングエレメント２０２の動作をより具体的に説明する。インプットユニット４０２は、コンフィギュレーションユニット４０１から、入力先を決定するための設定情報を、結線４０６を通じて取得する。取得した設定情報にはどの入力ポートを介して外部接続されているモジュールと通信を行うかが指定されている。その設定情報に基づいて、結線２０４ａ−ｎｅ、結線２０４ａ−ｓｅ、結線２０４ａ−ｓｗ、結線２０４ａ−ｎｗ、を通じて処理対象であるデータを取得する。ここで結線２０４ａ−ｎｅは北東に配置されたスイッチングエレメントと接続されている。また、結線２０４ａ−ｓｅは南東に配置されたスイッチングエレメントと接続されている。結線２０４ａ−ｓｗは南西に配置されたスイッチングエレメントと接続されている。結線２０４ａ−ｎｗは北西に配置されたスイッチングエレメントと接続されている。各結線を通じて取得したデータは、結線４０９を通してコンピュテーショナルユニット４０３に送られる。
【００２２】
コンピュテーショナルユニット４０３は、コンフィギュレーションユニット４０１から、処理内容を決定するための設定情報を、結線４０７を通じて取得する。取得した設定情報に基づいてインプットユニット４０２から送られてくるデータを取得し、処理を行う。処理したデータは結線４１０を通じてアウトプットユニット４０４に送られる。コンピュテーショナルユニット４０３は、少なくとも一つの演算器を保持している。演算器は例えば、加減算器、比較器、乗算器、除算器、論理演算器、などの演算器、または、これらの組合せからなる演算器、さらにはこれらと他の演算器の組合せからなる演算器などである。以下では具体的な例として、コンピュテーショナルユニット４０３では、積和演算処理または比較演算処理を行うことが可能であり、一度の演算でどちらか一方を選択的に行うことができるものとして説明する。積和演算では、ａ・ｂ＋ｃ・ｄといった処理を行い、比較演算では、もしａ＞ｂならばｃを出力、そうでなければｄを出力するといった処理を行う。また、コンピュテーショナルユニット４０３は、一度の入力に対して、演算器を繰り返し使用することが可能な構成となっている。繰り返して使用する場合は一旦演算器で使用された処理結果を、結線４１２を通して、テンポラリーバッファ４０５に保存し、その後、結線４１１を通して、再度コンピュテーショナルユニット４０３に入力する。再度入力されたデータに対して、新たに演算器にて処理を行う。後で詳細を述べるが、設定情報には、演算の種類や繰り返し処理、またそれぞれの処理で必要な変数ａ、ｂ、ｃ、ｄはどの値を参照するか、また固定値ならばその値を指定することなどの情報が含まれる。
【００２３】
アウトプットユニット４０４は、処理したデータの出力先を示す設定情報を、結線４０８を通じて取得する。取得した設定情報には、どの出力ポートを介してスイッチングエレメントと通信を行うかが指定されており、その設定情報に基づいて、結線２０４ｂ−ｎｅ、結線２０４ｂ−ｓｅ、結線２０４ｂ−ｓｗ、結線２０４ｂ−ｎｗ、を通じてスイッチングエレメントへ出力する。ここで結線２０４ｂ−ｎｅは北東に配置されたスイッチングエレメントと接続されている。また、結線２０４ｂ−ｓｅは南東に配置されたスイッチングエレメントと接続されている。結線２０４ｂ−ｓｗは南西に配置されたスイッチングエレメントと接続されている。結線２０４ｂ−ｎｗは北西に配置されたスイッチングエレメントと接続されている。
【００２４】
次にコンフィギュレーションユニット４０１の動作について説明する。コンフィギュレーションユニット４０１は、プロセッシングエレメント２０２毎にユニークなＩＤを保持している。コンフィギュレーションユニットは、入力側の結線２０５より送られてくる設定情報を取得し、コンフィギュレーションユニット内で処理し、出力側の結線２０５を通して設定情報を出力する。コンフィギュレーションユニット４０１は、自らのＩＤに対応する設定情報を格納するためのコンフィギュレーションメモリ４１３を有している。
【００２５】
図５を参照して、コンフィギュレーションユニット４０１に対して送受信される、設定のためのコンフィギュレーションコマンド５０１を説明する。コンフィギュレーションコマンド５０１は、リード／ライトモード５０２、ＩＤ５０３、コンフィギュレーションアドレス５０４、設定値５０５を備える。リード／ライトモード５０２は、コンフィギュレーションコマンド５０１の読み書きの処理を決定する信号である。ＩＤ５０３は、処理対象のプロセッシングエレメント２０２を決める信号である。コンフィギュレーションアドレス５０４は、コンフィギュレーションユニット４０１中の設定が保持されているメモリ内の番地を指定する信号である。設定値５０５は、実際の設定値を表す信号である。図５においてビット幅を示すＭ、Ｎ、Ｏ、Ｐは実際に構成するアーキテクチャによって決められる値である。
【００２６】
以下では上述した構成に基づく設定に関して、図６を参照してより具体的に説明する。図６において、アドレス６０１は、コンフィギュレーションメモリ４１３のアドレスを示しており、図５のコンフィギュレーションアドレス５０４により指定されるアドレスに相当する。設定値６０２は、実際の設定値を示しており、図５の設定値５０５に相当する。本実施形態ではこれら一つ一つを設定情報と読んでいるが、本発明は上述の単位に限るものではない。図６はインプットユニット４０２、コンピュテーショナルユニット４０３、アウトプットユニット４０４に関する設定情報がコンフィギュレーションメモリ４１３に保持されている例を示している。
【００２７】
アドレス０ｘ００００＿００００で示した入力選択値は、インプットユニット４０２における入力先を決定するための設定値であり、当該値に応じて所定の入力先が決まる。アドレス０ｘ００００＿０００４で示した繰り返し数は、コンピュテーショナルユニット４０３における演算の繰り返し回数を決定するための設定値であり、当該値に応じて演算の繰り返し回数が決まる。本実施形態では４回までの演算を想定している。アドレス０ｘ００００＿０００８で示した動作設定は、１度目の演算で行う、演算の種類を決定するための設定値であり、当該値に応じて積和演算か比較演算かが決まる。アドレス０ｘ００００＿０００ｃで示した可変設定は、１度目の演算で、変数ａの値の参照先を決めるための設定値である。参照先としては、入力ポートからの入力値、コンフィギュレーションメモリ４１３に保持されている固定値、以前の計算結果が保持されているテンポラリーバッファ４０５の値がある。この値に応じて、上記いずれかの値がこの変数ａに入力される。またアドレス０ｘ００００＿０００ｃと同様に、アドレス０ｘ００００＿００１０、アドレス０ｘ００００＿００１４、アドレス０ｘ００００＿００１８で示した可変設定はそれぞれ、１度目の演算における変数ｂ、ｃ、ｄの値の参照先を決めるための設定値である。
【００２８】
次にアドレス０ｘ００００＿００１ｃで示したパラメータは、１度目の演算においてアドレス０ｘ００００＿０００ｃで指定された参照先が固定値の場合の、変数ａのための固定値である。アドレス０ｘ００００＿００１ｃと同様にアドレス０ｘ００００＿００２０、アドレス０ｘ００００＿００２４、アドレス０ｘ００００＿００２８で示した固定値は、それぞれ１度目の演算で変数ｂ、ｃ、ｄで使用される場合の値である。
【００２９】
続くアドレス０ｘ００００＿００２ｃ（不図示）からアドレス０ｘ００００＿００９４までは、上記アドレス０ｘ００００＿０００８〜アドレス０ｘ００００＿００２８で示した１度目の演算に係る設定と同様にそれぞれ、２度目、３度目、４度目の設定値を示している。最後にアドレス０ｘ００００＿００９８で示した出力選択値は、アウトプットユニット４０４における出力先を決定するための設定値であり、当該値に応じて所定の出力先が決まる。
【００３０】
次に図７のフローチャートを参照して、コンフィギュレーションユニット４０１で行われる処理の手順を説明する。
【００３１】
Ｓ７０１において、コンフィギュレーションユニット４０１は、コンフィギュレーションコマンド５０１を取得する。すなわち、コンフィギュレーションユニット４０１へコンフィギュレーションコマンド５０１が入力される。
【００３２】
Ｓ７０２において、取得されたコンフィギュレーションコマンド５０１により指定されたＩＤ５０３が、コンフィギュレーションユニット４０１の持つ自身のＩＤと一致するかどうかを判定する。ＩＤ５０３が自身のＩＤと一致すると判定された場合（Ｓ７０２；ＹＥＳ）、ステップＳ７０３へ進む。一方、ＩＤ５０３が自身のＩＤと一致しないと判定された場合（Ｓ７０２；ＮＯ）、ステップＳ７１１へ進む。
【００３３】
Ｓ７０３において、コンフィギュレーションユニット４０１は、リード／ライトモード５０２の値がリードモードを示すかどうかを判定する。リード／ライトモード５０２の値がリードモードを示すと判定された場合（Ｓ７０３；ＹＥＳ）、Ｓ７０４へ進む。一方、リード／ライトモード５０２の値がリードモードを示さないと判定された場合（Ｓ７０３；ＮＯ）、Ｓ７０７へ進む。
【００３４】
Ｓ７０４において、コンフィギュレーションユニット４０１は、コンフィギュレーションメモリ４１３からコンフィギュレーションアドレス５０４により指定されたデータを読み出す。
【００３５】
Ｓ７０５において、コンフィギュレーションユニット４０１は、Ｓ７０１で取得されたコンフィギュレーションコマンド５０１の設定値５０５へ、Ｓ７０４で読み出されたデータを書き込む。
【００３６】
Ｓ７０６において、コンフィギュレーションユニット４０１は、そのコンフィギュレーションコマンド５０１を出力する。その後、処理を終了する。
【００３７】
Ｓ７０７において、コンフィギュレーションユニット４０１は、リード／ライトモード５０２の値がライトモードを示すかどうかを判定する。リード／ライトモード５０２の値がライトモードを示すと判定された場合（Ｓ７０７；ＹＥＳ）、Ｓ７０８へ進む。一方、リード／ライトモード５０２の値がライトモードを示さないと判定された場合（Ｓ７０７；ＮＯ）、Ｓ７１１へ進む。
【００３８】
Ｓ７０８において、コンフィギュレーションユニット４０１は、Ｓ７０１で取得されたコンフィギュレーションコマンド５０１の設定値５０５を、コンフィギュレーションアドレス５０４で指定されたコンフィギュレーションメモリ４１３に書き込む。
【００３９】
Ｓ７０９において、コンフィギュレーションユニット４０１は、Ｓ７０１で取得されたコンフィギュレーションコマンド５０１の値を変更せずにそのまま保持する。
【００４０】
Ｓ７１０において、コンフィギュレーションユニット４０１は、コンフィギュレーションコマンド５０１の値を変更せずにそのまま出力する。その後、処理を終了する。
【００４１】
Ｓ７１１において、コンフィギュレーションユニット４０１は、Ｓ７０１で取得されたコンフィギュレーションコマンド５０１の値を変更せずにそのまま保持する。
【００４２】
Ｓ７１２において、コンフィギュレーションユニット４０１は、コンフィギュレーションコマンド５０１の値を変更せずにそのまま出力する。その後、処理を終了する。
【００４３】
図７のフローにおいては、一度のコンフィギュレーションコマンド５０１で一つの設定値５０５を変更するため、順次コンフィギュレーションコマンド５０１を送信し、必要な設定値を全て変更することにより所望の処理を実現する。つまり、この設定数が処理内容の切り替え時間を決めていることとなる。
【００４４】
次に図８を参照して、スイッチングエレメント２０１の構成を説明する。スイッチングエレメント２０１は、コンフィギュレーションユニット８０１と、クロスバースイッチ８０２とを備える。コンフィギュレーションユニット８０１は、データを転送する接続先を決定するための設定値を管理する。クロスバースイッチ８０２は、コンフィギュレーションユニット８０１の設定に基づき一対一に入出力を接続する。プロセッシングエレメント２０２のコンフィギュレーションユニット４０１と同様に、コンフィギュレーションユニット８０１は、スイッチングエレメント２０１毎にユニークなＩＤを保持している。コンフィギュレーションユニットは入力側の結線２０５より送られてくる設定値を取得し、コンフィギュレーションユニット内で処理を行い、出力側の結線２０５を通して設定値を出力する。コンフィギュレーションユニット８０１は、取得された設定情報をコンフィギュレーションメモリ８０４に保持している。コンフィギュレーションユニット８０１のコンフィギュレーションコマンドおよびその処理フローは、図５に示したフォーマット、および図７に示した処理フローと同様である。クロスバースイッチ８０２は、コンフィギュレーションユニット８０１から、データの入出力先を決定する設定情報を、結線８０３を通じて取得する。スイッチングエレメント２０１は、取得された設定値に基づき結線２０３ａ−ｗ、結線２０３ａ−ｓ、結線２０３ｂ−ｅ、結線２０３ｂ−ｎ、結線２０４ｂ−ｎｅ、結線２０４ｂ−ｓｅ、結線２０４ｂ−ｓｗ、結線２０４ｂ−ｎｗの少なくとも何れかを通じてデータを取得する。取得されたデータは、接続されている結線２０３ａ−ｅ、結線２０３ａ−ｎ、結線２０３ｂ−ｗ、結線２０３ｂ−ｓ、結線２０４ａ−ｎｅ、結線２０４ａ−ｓｅ、結線２０４ａ−ｓｗ、結線２０４ａ−ｎｗの少なくとも何れかを通じて渡す。
【００４５】
ここで結線２０３ａ−ｗ、結線２０３ａ−ｓはそれぞれ西、南に配置されたスイッチングエレメントと接続されていることを意味する。結線２０３ｂ−ｅ、結線２０３ｂ−ｎはそれぞれ東、北に配置されたスイッチングエレメントと接続されていることを意味している。
【００４６】
また、結線２０３ａ−ｅ、結線２０３ａ−ｎはそれぞれ東、北に配置されたスイッチングエレメントと接続されていることを意味する。結線２０３ｂ−ｗ、結線２０３ｂ−ｓはそれぞれ西、南に配置されたスイッチングエレメントと接続されていることを意味している。結線２０４ａ−ｎｅ、結線２０４ａ−ｓｅ、結線２０４ａ−ｓｗ、結線２０４ａ−ｎｗはそれぞれ北東、南東、南西、北西に配置されたスイッチングエレメントと接続されていることを意味している。結線２０４ｂ−ｎｅ、結線２０４ｂ−ｓｅ、結線２０４ｂ−ｓｗ、結線２０４ｂ−ｎｗはそれぞれ北東、南東、南西、北西に配置されたスイッチングエレメントと接続されていることを意味している。
【００４７】
図９を参照して、コンフィギュレーションメモリ８０４に保持されている、スイッチングエレメント２０１におけるクロスバースイッチ８０２の入出力の接続に関する設定例を説明する。アドレス９０１はメモリのアドレスを示しており、図５のコンフィギュレーションアドレス５０４で指定されるアドレスに相当する。コネクション設定９０２は、図５の設定値５０５を示している。アドレス０ｘ００００＿００００で示したコネクション設定９０２は、結線２０３ａ−ｗからの入力を、結線２０３ａ−ｅ、結線２０３ａ−ｎ、結線２０３ｂ−ｗ、結線２０３ｂ−ｓ、結線２０４ａ−ｎｅ、結線２０４ａ−ｓｅ、結線２０４ａ−ｓｗ、結線２０４ａ−ｎｗのいずれに出力するかを決定するための設定値である。
【００４８】
続く、アドレス０ｘ００００＿０００４で示したコネクション設定９０２は、結線２０３ａ−ｓからの入力を、アドレス０ｘ００００＿００００で示したコネクション設定９０２と同様にどの結線に出力するかを決定する設定値である。アドレス０ｘ００００＿０００８で示したコネクション設定９０２は、結線２０３ｂ−ｅからの入力をアドレス０ｘ００００＿００００で示したコネクション設定９０２と同様にどの結線に出力するかを決定する設定値である。アドレス０ｘ００００＿０００ｃで示したコネクション設定９０２は、結線２０３ｂ−ｎからの入力を、アドレス０ｘ００００＿００００で示したコネクション設定９０２と同様にどの結線に出力するかを決定する設定値である。アドレス０ｘ００００＿００１０で示したコネクション設定９０２は、結線２０４ｂ−ｎｅからの入力を、アドレス０ｘ００００＿００００で示したコネクション設定９０２と同様にどの結線に出力するかを決定する設定値である。アドレス０ｘ００００_００１４で示したコネクション設定は、結線２０４ｂ−ｓｅからの入力を、アドレス０ｘ００００＿００００で示したコネクション設定９０２と同様にどの結線に出力するかを決定する設定値である。アドレス０ｘ００００＿００１８で示したコネクション設定９０２は、結線２０４ｂ−ｓｗからの入力を、アドレス０ｘ００００＿００００で示したコネクション設定９０２と同様にどの結線に出力するかを決定する設定値である。アドレス０ｘ００００＿００１ｃで示したコネクション設定９０２は、結線２０４ｂ−ｎｗからの入力を、アドレス０ｘ００００＿００００で示したコネクション設定９０２と同様にどの結線に出力するかを決定する設定値である。
【００４９】
図１０を参照して、上述した再構成デバイスの構成を複数種類変更して所望の処理を実現するためのタイムチャートの一例を説明する。図１０は、同一の再構成デバイスにおいて複数の異なるデータフローＡ〜Ｚを順に実行しているタイムチャートを示している。本実施形態で扱うデータフローとは、再構成デバイスへ一度に処理を割り当て可能な単位で構成されたデータフローのことである。各データフローを処理するための設定は予め生成しておく。再構成デバイスに対して予め生成された設定に基づき再構成デバイスを再構成し、その構成のもとで処理をするという一連の処理が、所望の実行順序で順々に行われる。
【００５０】
以下ではデータフローＡ（第２のデータフロー）を処理割り当て済みとし、データフローＢ（第１のデータフロー）を処理割り当て対象として説明する。具体的には、処理割り当て済みのデータフローＡを実行するための設定値を参照し、データフローＢの処理割り当てを決定する。データフローＡの処理割り当てを参照しデータフローＢの処理割り当てを決定した後、次はデータフローＢを処理割り当て済みとし、データフローＣを処理割り当て対象とする。具体的にはデータフローＢの処理割り当てを決定した時と同様に、処理割り当て済みのデータフローＢを実行するための設定値を参照し、データフローＣの処理割り当てを決定する。上記の手順を順々に繰り返すことでＡからＺまでのデータフローの処理割り当てを行うことが可能となる。なお、第１のデータフローと第２のデータフローとの両方が処理割り当て対象であってもよい。その場合は、一括して割当を行うことになるが、そのような場合については第２実施形態で後述する。
【００５１】
次に、再構成デバイスのプロセッシングエレメントへのデータフローの処理割り当てについて説明する。ここで、データフローのプロセッシングエレメントへの処理割り当てとは、データフローの各処理をプロセッシングエレメントに論理的に割り当てる方法である。より具体的には、図１１に示すように、データフローの各ノードに対応する処理内容をどのプロセッシングエレメントにおいて、どの順序で行うかを決めることである。図１１（ａ）はあるデータフローＡを表し、図１１（ｂ）は処理割り当て例を表し、図１１（ｃ）は処理割り当てに基づく、図６で示した設定を表す。前述の通り、本実施形態で示すプロセッシングエレメントが有する機能としては、繰り返し処理数や、各処理回数目での処理内容やその際に必要となる固定値を想定しており、実際にはこの設定を決めることになる。なお、本実施形態では最大の繰り返し処理回数は４回という想定である。
【００５２】
データフローＡの処理は、Ａ０、Ａ１、…Ａ１３までの各処理が図１１（ａ）に示すような流れで行われる。このデータフローＡに対して、図１１（ｂ）で表すように、グループ１１０１ａ〜グループ１１０４ａでくくったグループごとに、異なるプロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４に対して処理を順序付けて割り当てる。グループ１１０１ａ〜グループ１１０４ａに基づき、それぞれプロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４に対する設定１１０１ｂ〜設定１１０４ｂを決定する（図１１（ｃ））。本発明は、図１０で示したように同一の再構成デバイスにおいて処理内容(データフロー)が切り替わる際に必要となる、図１１で示したような設定数の削減を目的とした処理割り当て方法を提供する。ここで図１２を参照して、再構成デバイスにおける処理がデータフローＡからデータフローＢへ変更される際に各プロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４の設定変更について説明する。
【００５３】
データフローＡの設定１２０４の処理は、タイムチャートの処理Ａ１２０１に相当し、既に処理割り当て済みであるものとする。データフローＢの設定１２０５の処理は、タイムチャートの処理Ｂ１２０３に相当し、処理割り当て対象のデータフローとする。データフローＡの設定１２０４とデータフローＢの設定１２０５のそれぞれの処理が割り当てられるプロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４は、それぞれ論理的に同一のプロセッシングエレメントを意味している。設定１１０１ｂ〜設定１１０４ｂは、それぞれデータフローＡの処理時のプロセッシングエレメント２０２―１〜プロセッシングエレメント２０２−４に関する設定である。そして、設定１２０６〜設定１２０９は、それぞれデータフローＢの処理時のプロセッシングエレメント２０２―１〜プロセッシングエレメント２０２−４に関する設定である。プロセッシングエレメント２０２−１では、タイムチャートのデータフローＡからデータフローＢへの設定変更期間１２０２において設定１１０１ｂから設定１２０６へと設定変更１２１０が行われる。プロセッシングエレメント２０２−２では、タイムチャートのデータフローＡからデータフローＢへの設定変更期間１２０２において設定１１０２ｂから設定１２０７へと設定変更１２１１が行われる。プロセッシングエレメント２０２−３では、タイムチャートのデータフローＡからデータフローＢへの設定変更期間１２０２において設定１１０３ｂから設定１２０８へと設定変更１２１２が行われる。プロセッシングエレメント２０２−４では、タイムチャートのデータフローＡからデータフローＢへの設定変更期間１２０２において設定１１０４ｂから設定１２０９へと設定変更１２１３が行われる。
【００５４】
本実施形態ではデータフローＢの処理割り当てに際し、まず各プロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４における処理割り当て済みのデータフローＡを参照する。その上で上記設定変更１２１０、設定変更１２１１、設定変更１２１２、設定変更１２１３を行う際に必要な設定変更数を少なくすることを目的としてデータフローＢの処理割り当てを行う。
【００５５】
以下、図１３のフローチャートを参照して、本発明を実施する処理の手順を説明する。本実施形態では、シミュレーテッドアニーリングに基づく処理割り当て方法の例を示すが、本発明は上記手法のみに限定されるものではなく、遺伝的アルゴリズムなどのさまざまな近似解法や数値最適化法に基づいてもよい。
【００５６】
まず、図１２において、図１３のフローチャートの説明に必要な要素について言及する。各データフローを示すインデックスをｉ、プロセッシングエレメントのインデックスをｊ、図６のアドレス６０１に相当するプロセッシングエレメント内で保持しているメモリのコンフィギュレーションアドレスをｋとする。上記より各メモリ内の設定値はｕｉ,ｊ,ｋと表すことができる。ここで処理割り当て済みのデータフローをｉ０、処理割り当て対象のデータフローをｉ１とする。
【００５７】
Ｓ１３０１において、複数のデータフローとその実行順序関係(ｉの順序)を入力する。既に処理割り当て済みのデータフローに関しては、その設定値ｕｉ,ｊ,ｋも入力する。本実施形態ではデータフロー１２０４は既に処理割り当て済みであり、データフロー１２０４に関する各プロセッシングエレメントの各メモリ内の設定値は固定値として与えられる。そしてデータフロー１２０５は処理割り当て対象である。
【００５８】
次に、Ｓ１３０２において、ハードウェア制約条件と要求仕様とを入力する（制約入力処理）。ここでハードウェア制約条件とは、再構成デバイス内のプロセッシングエレメントの個数やプロセッシングエレメントで処理可能な繰り返し処理回数、演算器の種類などハードウェア構成上の制約となりうる構成情報である。また要求仕様とは、プロセッシングエレメントの使用個数や繰り返し処理の回数の制限、使用可能な演算器の種類などハードウェア使用上で制限すべき項目である。さらに処理の入出力の順序関係に矛盾がないか、デッドロックがないか、なども本制約に関する。また、既に処理割り当て済みのデータフローに関しては処理割り当てを変更しないという制約も含む。ただし、本発明は上述の制約のみに限られるものではない。
【００５９】
続いてＳ１３０３において、処理割り当て対象となるデータフローの処理割り当てを行う（割当候補決定処理）。初期処理割り当てにおいては、ランダムに割り当てる、ないしはデータフローの深さ方向順に処理を割り当てる方法があるが、これらの方法に限られるものではない。初期割り当てでない場合は、例えばランダムに二つの配置を選出し交換するように、シミュレーテッドアニーリングに基づき処理割り当てを変更する。本実施形態では、処理割り当て対象のデータフロー１２０５に関して初期処理割り当て、ないしは処理割り当て変更を行う。処理割り当て済みのデータフローに関しては、制約に基づき処理割り当ての変更は行わない。
【００６０】
Ｓ１３０４において、処理割り当て結果がＳ１３０２で入力された要求仕様を満たしているか判断する。
【００６１】
以下の式に示すように、制約を満たしていれば、ペナルティ変数ｐ０を０とし、制約を満たしていない、すなわち違反があればペナルティ変数ｐ０をペナルティ値Ｃｐ０とする（ペナルティ値決定処理）。
【００６２】
【数１】
0005798378.tif 000002
【００６３】
ここで本実施形態では、違反があった場合に一律Ｃｐ０を定数値として扱っているが、違反項目に応じた変数値としてもよい（）。
【００６４】
Ｓ１３０５において、処理割り当て結果がＳ１３０２で入力されたハードウェア制約条件を満たしているかを判断する。
【００６５】
以下の式に示すように、制約を満たしていれば、ペナルティ変数ｐ１を0とし、違反している場合はペナルティ変数ｐ１をペナルティ値Ｃｐ１とする（ペナルティ値決定処理）。
【００６６】
【数２】
0005798378.tif 000003
【００６７】
ここで本実施形態では、違反があった場合に一律Ｃｐ１を定数値として扱っているが、違反項目に応じた変数値としてもよい。
【００６８】
次にＳ１３０６において、対象となるデータフロー変更期間における設定変更数の算出を行い、評価値を計算する（設定変更数算出処理、評価値算出処理）。なお、設定変更数のみに着目して、設定変更数が少なくなるような処理の割当を決定する構成であってもよい。図１２の例で説明すると設定変更１２１０、設定変更１２１１、設定変更１２１２、設定変更１２１３の際に変更の必要がある設定数である。より具体的には、処理割り当て済みのデータフローｉ０における、設定値ｕｉ０,ｊ,ｋと、処理割り当て対象のデータフローｉ１における、同じアドレスの設定値ｕｉ１,ｊ,ｋとが一致していなければαｐ１を設定変更数に加える。一方、値が一致していれば何も加えない。上述の計算を全てのプロセッシングエレメントｊの全てのメモリｋに関して行う。以上で説明した設定変更数ｓは以下の式で表すことできる。
【００６９】
【数３】
0005798378.tif 000004
【００７０】
ここでαｐ１は通常１であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重みづけることも可能としている。図７で示した通り、一度のコンフィギュレーションコマンドで一つの設定値を変更することができることから、この数が少なくなれば、処理内容の切り替え時間を削減することが可能となる。
【００７１】
本ステップで評価値Ｅを算出する際の式は上述の式より、以下のように定義する。
【００７２】
【数４】
0005798378.tif 000005
【００７３】
つまり、要求仕様とハードウェア制約条件を満たしつつ、再構成に必要な設定変更数が少なくなるほど評価値Ｅは小さくなる。
【００７４】
最後にＳ１３０７において、シミュレーテッドアニーリングに基づき評価値Ｅが目標値を達成したか否かを判断する。評価値Ｅが目標値を達成したと判断された場合（Ｓ１３０７；ＹＥＳ）、処理を終了する。一方、評価値Ｅが目標値を達成していないと判断された場合（Ｓ１３０７；ＮＯ）、Ｓ１３０３へ戻る。ここで、目標値とは、例えば予定された計算時間に達する際の値であってもよい。評価値Ｅが目標値を達成したとは、例えば、評価値が閾値以下である場合である（評価値判定処理）。
【００７５】
一般的な再構成デバイスにおけるデータフローのプロセッシングエレメントへの処理割り当て方法では設定変更数を意識しないため、データフローの処理変更で全ての設定を変更する必要が生じる。
【００７６】
本実施形態によれば、データフローの処理順に注目し、最小単位である設定レベルでの変更合計数を少なくすることにより、設定変更数削減を効果的に行うことが可能となる。
【００７７】
（第２実施形態）
図１４（ａ）および（ｂ）を参照して、本実施形態に係る処理のタイムチャートおよび、処理割り当ての概要を示す。本実施形態では、再構成デバイスの設定を変更することにより複数のデータフローの処理を行う際に、各データフローの処理内容自体は決まっているが、そのデータフローの実行順序が不定で、状況や入力データなどに応じて変更する場合の処理割り当てに関する実施形態である。具体的には図１４（ａ）では、再構成デバイスで行う処理として、タイムチャート１４０１で示すようにその実行順序が結果や状態などに応じて変わるなど、一定でない場合を想定している。
【００７８】
タイムチャート１４０１における処理１４０２ではデータフローＡに関する処理が行われ、処理１４０４、処理１４０８ではデータフローＣに関する処理が行われ、処理１４０６ではデータフローＢに関する処理が行われる。設定１４０３ではデータフローＡからデータフローＣへの設定変更が行われる。設定１４０５ではデータフローＣからデータフローＢへの設定変更が行われる。設定１４０７ではデータフローＢからデータフローＣへの設定変更が行われる。本実施形態では、データフローＡ、データフローＢ、データフローＣの実行順序が一定でないため、それぞれのデータフロー間の全ての設定変更を考慮して処理割り当てを行う必要がある。また、データフローＡ、データフローＢ、データフローＣは全て処理割り当て対象とする。
【００７９】
データフローＡの設定１４０９、データフローＢの設定１４１０、データフローＣの設定１４１１は、それぞれデータフローＡ、データフローＢ、データフローＣにおけるプロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４の設定例を示している。これら全てのデータフローＡ、データフローＢ、データフローＣの処理割り当てを一度に一括して行う。データフローＡの設定１４０９、データフローＢの設定１４１０、データフローＣの設定１４１１は第１実施形態の図６で示した設定と同様であるである。本実施形態では、データフローＡおよびデータフローＢの間、データフローＢおよびデータフローＣの間、データフローＣおよびデータフローＡの間において、プロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４でデータフローの変更に必要な設定変更数の合計数に注目する。この合計数を評価値Ｅとして算出することで再構成デバイスの再構成時の設定変更数の削減を行う。
【００８０】
なおデータフローＡおよびデータフローＢの間でのプロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４の設定変更は、それぞれ設定変更１４１２、設定変更１４１５、設定変更１４１８、設定変更１４２１で表している。またデータフローＢおよびデータフローＣの間でのプロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４の設定変更は、それぞれ設定変更１４１３、設定変更１４１６、設定変更１４１９、設定変更１４２２で表している。データフローＣおよびデータフローＡの間でのプロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４の設定変更は、設定変更１４１４、設定変更１４１７、設定変更１４２０、設定変更１４２３で表している。
【００８１】
本実施形態と第１実施形態との違いは、同時に複数のデータフローの処理割り当てを行う点にある。以下、図１３のフローチャートに示される処理との差異点を説明する。
【００８２】
Ｓ１３０１において、複数のデータフローを入力すると同時に、実行順序が任意であることを入力する。
【００８３】
Ｓ１３０３において、処理割り当て対象であるデータフローＡ１４０９、データフローＢ１４１０、データフローＣ１４１１の全てに対して処理割り当てを行う。
【００８４】
Ｓ１３０６において、本実施形態で使用する設定変更数ｓは、第１実施形態の設定変更数に対して以下の違いがある。
【００８５】
処理割り当て対象のデータフローｉ０における、設定値ｕｉ０,ｊ,ｋと、処理割り当て対象のデータフローｉ１における、同じアドレスの設定値ｕｉ１,ｊ,ｋの値が一致していなければα２を設定変更数ｓに加える。また、処理割り当て対象のデータフローｉ１における、設定値ｕｉ１,ｊ,ｋと、処理割り当て対象のデータフローｉ２における、同じアドレスの設定値ｕｉ２,ｊ,ｋの値が一致していなければβ２を設定変更数ｓに加える。さらに、処理割り当て対象のデータフローｉ２における、設定値ｕｉ２,ｊ,ｋと、処理割り当て対象のデータフローｉ０における、同じアドレスの設定値ｕｉ０,ｊ,ｋの値が一致していなければγ２を設定変更数ｓに加える。上述以外で、設定値が一致していれば何も加えない。上述の計算を全てのプロセッシングエレメントｊの全てのメモリｋに関して行う。
【００８６】
【数５】
0005798378.tif 000006
【００８７】
ここでｉ０はデータフローＡ１４０９、ｉ１はデータフローＢ１４１０、ｉ２はデータフローＣ１４１１を示しており、上記式で示す値が小さくなるように、これらの設定値ｕｉ０,ｊ,ｋ、ｕｉ１,ｊ,ｋ、ｕｉ２,ｊ,ｋを決める。またα２、β２、γ２は通常それぞれ１であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重みづけることも可能としている。
【００８８】
本実施形態によれば、全てのデータフロー間を考慮することで、処理の実行順序が不定な場合であっても平均して設定変更数削減効果が得られる。
【００８９】
（第３実施形態）
図１５（ａ）および（ｂ）を参照して、本実施形態に係る処理のタイムチャートおよび、処理割り当ての概要を説明する。本実施形態では、既に複数のデータフローの実行順序およびそれぞれの処理割り当ても決まっている場合を想定している。本実施形態は、上述の実行順序における任意のデータフローの処理の間に、処理の挿入前後の処理割り当ては変えずに、新たなデータフローに対応した処理を挿入するための処理割り当てに関する。
【００９０】
図１５のタイムチャート１５０１は、再構成デバイスで行う実行順序が既に決められ、その処理割り当ても決められているタイムチャートである。タイムチャート１５０１ではデータフローＡの処理１５０３の後、データフローＡの設定からデータフローＣの設定へと設定を変更する設定１５０４で示される期間を経てデータフローＣの処理１５０５を行っている。このタイムチャート１５０１のデータフローＡとデータフローＣとの間に新たにデータフローＢを挿入したタイムチャートが、タイムチャート１５０２である。データフローＡの処理１５０３の後にデータフローＡの設定からデータフローＢの設定へと設定を変更する設定１５０６で示される期間を経て、新たに挿入したデータフローＢの処理１５０７が行われる。その後、データフローＢの設定からデータフローＣの設定へと設定を変更する設定１５０８で示される期間を経て、データフローＢの処理１５０５が行われる。この際データフローＡおよびデータフローＡＣの処理割り当ては変更せずにデータフローＢの処理割り当てを決定するため、データフローＢを挿入する挿入先順序の前後の順序における、既に処理割り当て済みのデータフロー間の設定変更量を考慮する。
【００９１】
設定１５０９、設定１５１０、設定１５１１は、それぞれデータフローＡ、データフローＢ、データフローＣにおけるプロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４の設定を示している。本実施形態ではデータフローＡおよびデータフローＣは処理割り当て済みであり、データフローＢの処理割り当てを行う。設定１５０９、設定１５１０、設定１５１１は第１実施形態と同様に、図６で示した設定である。
【００９２】
本実施形態では、データフローＡからデータフローＢへ、およびデータフローＢからデータフローＣへの設定変更に関して、プロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４の設定変更に必要な設定変更数の合計数に注目する。この合計数を第１実施形態の図１３におけるＳ１３０８で示す評価値Ｅとして算出し、当該評価値に基づいて再構成デバイスの再構成時の設定変更数の削減を行う。
【００９３】
なおデータフローＡおよびデータフローＢの間での、プロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４の設定変更は、それぞれ設定変更１５１２、設定変更１５１４、設定変更１５１６、設定変更１５１８で表している。またデータフローＢおよびデータフローＣの間での、プロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４の設定変更は、設定変更１５１３、設定変更１５１５、設定変更１５１７、設定変更１５１９で表している。
【００９４】
本実施形態と第１実施形態との違いは、一つのデータフローの処理割り当てに際し、他の複数の処理割り当て済みのデータフローを同時に参照する点である。以下、図１３のフローチャートに示される処理との差異点を説明する。
【００９５】
図１３のＳ１３０３で行う処理割り当ては、処理割り当て対象であるデータフローＡ１５１０である。データフローＡ１５０９、データフローＣ１５１１は処理割り当て済みであり、処理割り当て変更は行わない。
【００９６】
図１３のＳ１３０６で使用する設定変更数ｓとして、第１実施形態に対して以下の違いがある。
【００９７】
処理割り当て済みのデータフローｉ０における、設定値ｕｉ０,ｊ,ｋと、処理割り当て対象のデータフローｉ１における、同じアドレスの設定値ｕｉ１,ｊ,ｋの値が一致していなければα３を設定変更数に加える。また、処理割り当て対象のデータフローｉ１における、設定値ｕｉ１,ｊ,ｋと、処理割り当て済みのデータフローｉ２における、同じアドレスの設定値ｕｉ２,ｊ,ｋの値が一致していなければβ３を設定変更数に加える。上述の値が一致していれば何も加えない。上述の計算を全てのプロセッシングエレメントｊの全てのメモリｋに関して行う。以上で説明した設定変更数ｓは以下の式で表すことできる。
【００９８】
【数６】
0005798378.tif 000007
【００９９】
ここでｉ０はデータフローＡ１５０９、ｉ１はデータフローＢ１５１０、ｉ２はデータフローＣ１５１１を示している。これらの設定値の内、ｕｉ０,ｊ,ｋ、ｕｉ２,ｊ,ｋは既に処理割り当て済みで、上記式で示す値が少なくなるようにｕｉ１,ｊ,ｋを決めることとなる。またα３、β３は通常それぞれ１であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重み付けることも可能としている。
【０１００】
本実施形態によれば、新たにデータフロー挿入する場合に、挿入前後のデータフローとの間での設定変更数を削減できる。
【０１０１】
（第４実施形態）
図１６（ａ）および（ｂ）を参照して、本実施形態に係る処理のタイムチャートおよび、処理割り当ての概要を説明する。本実施形態では、ある基準となるデータフローの処理後、その結果に応じて次に行われるデータフローが異なる場合の処理割り当てに関する実施形態である。
【０１０２】
図１６（ａ）のタイムチャート１６０１は、基準となるデータフローＸの処理を、処理１６０２で示される期間に行った後、その結果に応じて、データフローＸからデータフローＡ、データフローＢまたはデータフローＣへの設定変更を、設定１６０３で示される期間に行う。設定完了後、データフローＡ、データフローＢまたはデータフローＣの処理が、処理Ａまたは処理Ｂまたは処理Ｃ１６０４で示される期間に行われ、再度基準となるデータフローＸの処理を行うために、設定１６０５で示される期間にデータフローＡ、データフローＢまたはデータフローＣからデータフローＸへと設定変更を行う。上記実行順序が繰り返されるが、データフローＡ、データフローＢまたはデータフローＣの何れが行われるかはデータフローＸの処理結果に応じて変わるものとする。
【０１０３】
設定１６０６、設定１６０７、設定１６０８、設定１６０９はそれぞれデータフローＸ、データフローＡ、データフローＢ、データフローＣにおけるプロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４の設定を示している。本実施形態では、データフローＸ、データフローＡ、データフローＢ、データフローＣの全てのデータフローに対して処理割り当てを行う。設定１６０６、設定１６０７、設定１６０８、設定１６０９は、第１実施形態と同様に、図６で示した設定である。処理割り当てに際して、データフローＸおよびデータフローＡの間、データフローＸおよびデータフローＢの間、データフローＸおよびデータフローＣの間でのプロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４でデータフロー変更に必要な設定変更数の合計数に注目している。上記合計数が第１実施形態の図１３のＳ１３０４で示す評価値Ｅとして算出して、当該評価値Ｅに基づいて再構成デバイスの再構成時の設定変更数の削減を行う。
【０１０４】
なおデータフローＸおよびデータフローＡの間でのプロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４の設定変更は、それぞれ設定変更１６１０、設定変更１６１３、設定変更１６１６、設定変更１６１９で表している。
【０１０５】
なおデータフローＸおよびデータフローＢの間でのプロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４の設定変更は、それぞれ設定変更１６１１、設定変更１６１４、設定変更１６１７、設定変更１６２０で表している。
【０１０６】
データフローＸおよびデータフローＣの間でのプロセッシングエレメント２０２−１〜プロセッシングエレメント２０２−４の設定変更は、それぞれ設定変更１６１２、設定変更１６１５、設定変更１６１８、設定変更１６２１で表している。
【０１０７】
本実施形態と第１実施形態との違いは、実行順序に分岐があり、分岐先と分岐元との間のデータフローに対して処理割り当てを行う点にある。以下、図１３のフローチャートに示される処理との差異点を説明する。
【０１０８】
図１３のＳ１３０１では、複数のデータフローを入力すると同時に、部分的に任意の実行順序を入力する。
【０１０９】
図１３のＳ１３０３で行う処理割り当ては、処理割り当て対象であるデータフローＸ１６０６、データフロー１６０７Ａ、データフローＢ１６０８、データフローＣ１６０９の全てに対して処理割り当てを行う。本実施形態では、全てのデータフローを処理割り当て対象として扱う例を示しているが、それに限定されるものではない。本実施形態はデータフローの実行順序に注目したものであり、少なくとも一つのデータフローが、既に処理割り当て済みの場合には、それ以外のデータフローの処理割り当てを行うこととなる。
【０１１０】
図１３のＳ１３０６で使用する設定変更数ｓとして、第１実施形態に対して以下の違いがある。
【０１１１】
処理割り当て対象のデータフローｉ０における、設定値ｕｉ０,ｊ,ｋと、処理割り当て対象のデータフローｉ１における、同じアドレスの設定値ｕｉ１,ｊ,ｋの値が一致していなければα４を設定変更数に加える。また、処理割り当て対象のデータフローｉ０における、設定値ｕｉ０,ｊ,ｋと、処理割り当て対象のデータフローｉ２における、同じアドレスの設定値ｕｉ２,ｊ,ｋの値が一致していなければβ４を設定変更数に加える。さらに、処理割り当て対象のデータフローｉ０における、設定値ｕｉ０,ｊ,ｋと、処理割り当て対象のデータフローｉ３における、同じアドレスの設定値ｕｉ３,ｊ,ｋの値が一致していなければγ４を設定変更数に加える。上述以外で、設定値が一致している場合は何も加えない。上述の計算を全てのプロセッシングエレメントｊの全てのメモリｋに関して行う。
【０１１２】
【数７】
0005798378.tif 000008
【０１１３】
ここでｉ０はデータフローＸ１６０６、ｉ１はデータフローＡ１６０７、ｉ２はデータフローＢ１６０８、ｉ３はデータフローＣ１６０９、をそれぞれ示している。上記式で示す値が少なくなるようにｕｉ０,ｊ,ｋ、ｕｉ１,ｊ,ｋ、ｕｉ２,ｊ,ｋ、ｕｉ３,ｊ,ｋを決める。またα４、β４、γ４は通常それぞれ１であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重み付けることも可能としている。
【０１１４】
本実施形態によれば、複数のデータフローを順々に行う上で、その実行順序に分岐がある場合でも、分岐元となるデータフローと分岐先となる複数の他のデータフローを考慮することで、設定変更数を削減することができる。
【０１１５】
（第５実施形態）
上記の各実施形態では、ユースケース別に各々の経路設定方法について述べたが、本発明はこれらの方法の組み合わせでも良い。
【０１１６】
また、再構成デバイスの構成要素としてプロセッシングエレメントを説明したが、これに限るものではなく、ＬＵＴや、それとの組み合わせでも良い。また、設定は、上記の各実施形態で示した設定に限るものではなく、ＬＵＴベースの再構成デバイスで使用される設定でも良い。
【０１１７】
また、上記の各実施形態では入力するデータフロー全てに対して処理割り当て対象としたが、処理割り当て範囲を指定することで、データフローの一部のみに対して処理割り当てを行っても良い。
【０１１８】
また、上記の各実施形態ではプロセッシングエレメント数はデータフロー間で同じとしているが、処理を割り当てるプロセッシングエレメント数が異なっても良い。
【０１１９】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005798378.tif 000009
【図２】
0005798378.tif 000010
【図３】
0005798378.tif 000011
【図４】
0005798378.tif 000012
【図５】
0005798378.tif 000013
【図６】
0005798378.tif 000014
【図７】
0005798378.tif 000015
【図８】
0005798378.tif 000016
【図９】
0005798378.tif 000017
【図１０】
0005798378.tif 000018
【図１１】
0005798378.tif 000019
【図１２】
0005798378.tif 000020
【図１３】
0005798378.tif 000021
【図１４】
0005798378.tif 000022
【図１５】
0005798378.tif 000023
【図１６】
0005798378.tif 000024