(57)【特許請求の範囲】
【請求項１】
複数のタスクノードであって、各タスクノードは、再構成可能プロセッサ（ＲＰ）を用いてタスクを処理し、前記タスクが前記再構成可能プロセッサを用いて処理されていないときに非再構成可能プロセッサ（ｎｏｎ−ＲＰ）を用いて前記タスクを処理することができる、複数のタスクノードと、
前記複数のタスクノードのうち、前記タスクを処理するタスクノードを選択することができるスケジューラノードと、
を含み、
前記スケジューラノードは、
前記複数のタスクノードのそれぞれが前記ＲＰを用いて前記タスクを処理するために要するコストであるＲＰコスト及び前記複数のタスクノードのそれぞれが前記ｎｏｎ−ＲＰを用いて前記タスクを処理するために要するコストであるｎｏｎ−ＲＰコストに基づいてＲＰ利得を計算し、
前記ＲＰ利得に基づいて、前記複数のタスクノードのうち、前記タスクを処理するタスクノードを選択する、
分散処理システム。
【請求項２】
複数のタスクノードであって、各タスクノードは、再構成可能プロセッサ（ＲＰ）及び非再構成可能プロセッサ（ｎｏｎ−ＲＰ）を含む、複数のタスクノードと、
タスクに基づいて、前記再構成可能プロセッサを再構成する再構成ロジックを生成させ、前記複数のタスクノードに伝達するスケジューラノードと、
を含み、
前記スケジューラノードは、
前記複数のタスクノードのそれぞれが前記ＲＰを用いて前記タスクを処理するために要するコストであるＲＰコスト及び前記複数のタスクノードのそれぞれが前記ｎｏｎ−ＲＰを用いて前記タスクを処理するために要するコストであるｎｏｎ−ＲＰコストに基づいてＲＰ利得を計算し、
前記ＲＰ利得に基づいて、前記複数のタスクノードのうち、前記タスクを処理するタスクノードを選択する、
分散処理システム。
【請求項３】
前記スケジューラノードは、
前記ＲＰ利得の大きさ情報に基づいて、前記タスクノードを選択する、請求項２に記載の分散処理システム。
【請求項４】
複数のタスクノードであって、各タスクノードは、再構成可能プロセッサ（ＲＰ）及び非再構成可能プロセッサ（ｎｏｎ−ＲＰ）を含み、タスクを処理する複数のタスクノードと、
前記タスクに基づいて、前記タスクの少なくとも一部を処理する１つのプロセッサを前記再構成可能プロセッサ及び前記非再構成可能プロセッサのうちから選択するスケジューラノードと、
を含み、
前記スケジューラノードは、
前記複数のタスクノードのそれぞれが前記ＲＰを用いて前記タスクを処理するために要するコストであるＲＰコスト及び前記複数のタスクノードのそれぞれが前記ｎｏｎ−ＲＰを用いて前記タスクを処理するために要するコストであるｎｏｎ−ＲＰコストに基づいてＲＰ利得を計算し、
前記ＲＰ利得に基づいて、前記複数のタスクノードのうち、前記タスクを処理するタスクノードを選択する、
分散処理システム。
【請求項５】
前記タスクは、
前記非再構成可能プロセッサのためのｎｏｎ−ＲＰロジックと、
前記ｎｏｎ−ＲＰロジックと同一のタスクを処理するとき、前記ｎｏｎ−ＲＰロジックと同一の結果を生成させる前記再構成可能プロセッサのためのＲＰロジックと、
を含む請求項１、２又は４に記載の分散処理システム。
【請求項６】
前記タスクノードは、
前記スケジューラノードの要請に応じて、前記ｎｏｎ−ＲＰロジック及び前記ＲＰロジックのうちから選択されたロジックを実行する、請求項５に記載の分散処理システム。
【請求項７】
前記スケジューラノードは、前記選択されたタスクノードで前記タスクが処理される方式であるタスク処理方式を選択する、請求項１又は５に記載の分散処理システム。
【請求項８】
分散処理システムのスケジューラノードであって、
それぞれのタスクノードが再構成可能プロセッサ（ＲＰ）を用いてタスクを処理し、前記タスクが、前記再構成可能プロセッサを用いて処理されない場合には、非再構成可能プロセッサ（ｎｏｎ−ＲＰ）を用いて前記タスクを処理することができる複数のタスクノードのうちからタスクを処理するタスクノードを選択し、
複数のタスクノードのそれぞれが前記ＲＰを用いて前記タスクを処理するために要するコストであるＲＰコスト及び前記複数のタスクノードのそれぞれが前記ｎｏｎ−ＲＰを用いて前記タスクを処理するために要するコストであるｎｏｎ−ＲＰコストに基づいてＲＰ利得を計算し、
前記ＲＰ利得に基づいて、前記タスクノードを選択し及び前記タスクを処理するプロセッサを前記ＲＰ又は前記ｎｏｎ−ＲＰから選択する、
スケジューラノード。
【請求項９】
前記スケジューラノードは、前記選択されたタスクノードで前記タスクが処理される方式であるタスク処理方式を選択する、請求項８に記載のスケジューラノード。
【請求項１０】
前記スケジューラノードは、
前記ＲＰ利得の大きさ情報に基づいて、前記タスクノードを選択し、
前記ＲＰ利得の方向情報に基づいて、前記タスクを処理するプロセッサを前記ＲＰ又は前記ｎｏｎ−ＲＰからを選択する、請求項８に記載のスケジューラノード。
【請求項１１】
前記スケジューラノードは、
前記非再構成可能プロセッサのタスク処理時間及びタスク処理電力のうち少なくとも１つに基づいて、前記ｎｏｎ−ＲＰコストを計算する、請求項８に記載のスケジューラノード。
【請求項１２】
前記スケジューラノードは、
前記再構成可能プロセッサのタスク処理時間、前記再構成可能プロセッサのタスク処理待機時間、前記再構成可能プロセッサの再構成時間、前記再構成可能プロセッサの再構成待機時間、前記再構成可能プロセッサのタスク処理電力または前記再構成可能プロセッサの再構成電力、またはこれらの組合わせを用いて、前記ＲＰコストを計算する、請求項８に記載のスケジューラノード。
【請求項１３】
クライアントノードから作業処理要請を受信し、前記タスクを複数のタスクに分割し、前記タスクのそれぞれを前記タスクノードに出力する作業分割部、をさらに含む請求項８に記載のスケジューラノード。
【請求項１４】
前記スケジューラノードは、スケジュール情報をさらに出力し、
前記スケジューラノードは、前記スケジューラノードの前記スケジュール情報に基づいて、前記選択されたタスクノードにタスク実行要請を伝送する実行要請部をさらに含む、請求項８に記載のスケジューラノード。
【請求項１５】
前記スケジュール情報は、
選択されたタスクノードの識別のための情報及びそのタスクノードによって、前記タスクが実行される方式を指定するための情報を含む、請求項１４に記載のスケジューラノード。
【請求項１６】
スケジューラノードが実施する分散処理システムのスケジュール方法であって、前記スケジューラノードは、コスト計算部と、利得計算部と、方式選択部と、を有し、
前記コスト計算部が、再構成可能プロセッサ（ＲＰ）を用いてタスクを処理し、前記タスクが、前記再構成可能プロセッサを用いて処理されない場合、非再構成可能プロセッサ（ｎｏｎ−ＲＰ）を用いて前記タスクを処理することができるそれぞれのタスクノード別に、ＲＰコスト及びｎｏｎ−ＲＰコストを計算する段階と、
前記利得計算部が、複数のタスクノードのそれぞれが前記ＲＰを用いて前記タスクを処理するために要するコストであるＲＰコスト及び前記複数のタスクノードのそれぞれが前記ｎｏｎ−ＲＰを用いて前記タスクを処理するために要するコストであるｎｏｎ−ＲＰコストに基づいてＲＰ利得を計算し、前記ＲＰコスト及び前記ｎｏｎ−ＲＰコストの比較の結果に基づいて所定のＲＰ利得を計算する段階と、
前記方式選択部が、計算された前記ＲＰ利得に基づいて、前記タスクノード及びそのタスクノードで前記タスクが処理される方式であるタスク処理方式を選択する段階と、
を含む分散処理システムのスケジュール方法。
【請求項１７】
複数のタスクノードのそれぞれは、前記再構成可能プロセッサを用いてタスクの一部を処理することができる能力と、前記タスクの前記一部が、前記再構成可能プロセッサを用いて処理されない場合、前記非再構成可能プロセッサを用いて前記タスクの前記一部を処理することができる能力と、複数のタスクが、前記再構成可能プロセッサを用いて処理されない場合、前記複数のタスクを順次に、択一的に、並列的に、または同時に前記非再構成可能プロセッサを用いて処理することができる能力とを有し、
前記スケジュール方法は、
前記スケジューラノードのノード選択部が、前記複数のタスクノードから前記タスクの前記一部または前記複数のタスクを処理するタスクノードを選択する段階、
を更に含む請求項１６に記載の分散処理システムのスケジュール方法。
【請求項１８】
スケジューラノードにより実行される方法であって、
タスクを入力される段階と、
複数のタスクノードからタスクノードを選択する段階であって、前記複数のタスクノードの各々は、再構成可能プロセッサ（ＲＰ）と非再構成可能プロセッサ（ｎｏｎ−ＲＰ）とを含む、段階と、
前記タスクに基づいて、前記再構成可能プロセッサを再構成する再構成ロジック（ＲＰｌｏｇｉｃ）を生成させる段階と、
を含み、
前記タスクノードを選択する段階は、
前記複数のタスクノードのそれぞれが前記ＲＰを用いて前記タスクを処理するために要するコストであるＲＰコスト及び前記複数のタスクノードのそれぞれが前記ｎｏｎ−ＲＰを用いて前記タスクを処理するために要するコストであるｎｏｎ−ＲＰコストに基づいてＲＰ利得を計算し、
前記ＲＰ利得によって、前記タスクノードを選択する過程をさらに含む、
方法。
【請求項１９】
前記再構成ロジックを前記再構成可能プロセッサに適用して、前記再構成可能プロセッサを再構成し、前記再構成可能プロセッサを用いて、前記タスクの少なくとも一部を処理する段階、をさらに含む請求項１８に記載の方法。
【請求項２０】
前記タスクノードは、非再構成可能プロセッサ（ｎｏｎ−ＲＰ）をさらに含み、
前記タスクは、
前記非再構成可能プロセッサのためのｎｏｎ−ＲＰロジックと、
前記ｎｏｎ−ＲＰロジックと同一のタスクを処理するとき、前記ｎｏｎ−ＲＰロジックと同一の結果を生成させる前記再構成可能プロセッサのためのＲＰロジックと、
を含む請求項１８に記載の方法。
【請求項２１】
再構成可能プロセッサ（ＲＰ）及び非再構成可能プロセッサ（ｎｏｎ−ＲＰ）を含む第１タスクノードと、
再構成可能プロセッサを含み、非再構成可能プロセッサを含まない第２タスクノードと、
非再構成可能プロセッサを含み、再構成可能プロセッサを含まない第３タスクノードと、を含む複数のタスクノードと、
前記複数のタスクノードからタスクを処理するタスクノードを選択するスケジューラノードと、
を含み、
前記スケジューラノードは、
前記複数のタスクノードのそれぞれが再構成可能プロセッサを用いて前記タスクを処理するＲＰコストと、前記複数のタスクノードのそれぞれが非再構成可能プロセッサを用いて前記タスクを処理するｎｏｎ−ＲＰコストと、に基づいてＲＰ利得を計算し、
前記複数のタスクノードのそれぞれに対する計算された前記ＲＰ利得に基づいて、前記複数のタスクノードのうちから前記タスクを処理するノードを選択する、
分散処理システム。
【請求項２２】
前記第２タスクノードに関する非再構成可能プロセッサを含まない前記ｎｏｎ−ＲＰコストは、前記スケジューラノードによって設定される最大ｎｏｎ−ＲＰコストであり、
前記第３タスクノードに関する再構成可能プロセッサを含まない前記ＲＰコストは、前記スケジューラノードによって設定される最大ＲＰコストである、請求項２１に記載の分散処理システム。
【請求項２３】
前記スケジューラノードは、
計算された前記ＲＰ利得に基づいて、ＲＰ処理方法及びｎｏｎ−ＲＰ処理方法のうち、選択された前記タスクノードで前記タスクが処理される処理方法を選択する、請求項２１に記載の分散処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティング環境で作業を分配するための技術に関する。
【背景技術】
【０００２】
インターネット上のサーバを通じてデータ保存、ネットワーク、コンテンツ使用などのＩＴ関連サービスを一回に使えるクラウドコンピューティング及び互いに異なる物理的な位置に存在するコンピュータのリソースを仮想化する技術についての研究が進行しつつある。データの生産と収集とが増えることによって、データ分析アプリケーションは、クラウドコンピューティング環境で動作する主要アプリケーションになっている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明は、分散処理システム、分散処理システムのスケジューラノード及びスケジュール方法、及びそのためのプログラム生成装置を提供することである。
【課題を解決するための手段】
【０００４】
本発明の一態様で、分散処理システムは、再構成可能プロセッサ（Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ、ＲＰ）及び非再構成可能プロセッサ（Ｎｏｎ−Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ、ｎｏｎ−ＲＰ）のうち、１つの再構成可能プロセッサ（ＲＰ）を用いてタスクを処理し、前記タスクが、前記再構成可能プロセッサを用いて処理されていないときに、前記タスクを少なくとも何れか１つに基づいてタスクを処理することができる複数のタスクノードと、前記複数のタスクノードのうち、前記タスクを処理するタスクノードを選択することができるスケジューラノードと、を含む。
【０００５】
本発明の他の態様による分散処理システムは、再構成可能プロセッサ（ＲＰ）及び非再構成可能プロセッサ（ｎｏｎ−ＲＰ）を含む少なくとも１つのタスクノードと、タスクに基づいて、前記再構成可能プロセッサを再構成する再構成ロジックを生成させ、前記少なくとも１つのタスクノードに伝達するスケジューラノードと、を含む。
【０００６】
本発明のさらに他の態様による分散処理システムは、再構成可能プロセッサ（ＲＰ）及び非再構成可能プロセッサ（ｎｏｎ−ＲＰ）を含む少なくとも１つのタスクノードと、前記タスクに基づいて、前記タスクの少なくとも一部を処理する１つのプロセッサを前記再構成可能プロセッサ及び前記非再構成可能プロセッサのうちから選択するスケジューラノードと、を含む。
【０００７】
本発明のさらに他の態様によるタスクノードは、タスク及び前記タスク処理方式を受信するタスク情報受信部と、前記受信されたタスク処理方式に対応したプロセッサを駆動させる制御部と、再構成可能プロセッサ（ＲＰ）及び非再構成可能プロセッサ（ｎｏｎ−ＲＰ）と、を含むプロセッサユニットを少なくとも１つ含むが、前記タスク処理方式は、ＲＰロジックまたはｎｏｎ−ＲＰロジックであり、前記制御部は、受信されたタスク処理方式がＲＰロジックである場合には、再構成可能プロセッサを駆動させ、受信されたタスク処理方式がｎｏｎ−ＲＰロジックである場合には、非再構成可能プロセッサを駆動させる。
【０００８】
本発明のさらに他の態様による分散処理システムのスケジューラノードは、それぞれのタスクノードが再構成可能プロセッサ（ＲＰ）を用いてタスクを処理し、前記タスクが、前記再構成可能プロセッサを用いて処理されない場合には、非再構成可能プロセッサ（ｎｏｎ−ＲＰ）を用いて前記タスクを処理することができる複数のタスクノードのうちからタスクを処理するタスクノードを選択するスケジューラを含む。
【０００９】
本発明のさらに他の態様による分散処理システムのスケジュール方法は、再構成可能プロセッサ（ＲＰ）を用いてタスクを処理し、前記タスクが、前記再構成可能プロセッサを用いて処理されない場合、非再構成可能プロセッサ（ｎｏｎ−ＲＰ）を用いて前記タスクを処理することができるそれぞれのタスクノード別に、ＲＰコスト及びｎｏｎ−ＲＰコストを比較する段階と、前記比較の結果に基づいて所定のＲＰ利得を計算する段階と、計算された前記ＲＰ利得に基づいて、前記タスクノード及びそのタスクノードによって、前記タスクが処理される方式を選択する段階と、を含む。
【００１０】
本発明のさらに他の態様による再構成可能プロセッサ（ＲＰ）を含むタスクノードを活用する方法は、タスクを入力される段階と、前記タスクに基づいて、前記再構成可能プロセッサを再構成する再構成ロジック（ＲＰ  ｌｏｇｉｃ）を生成させる段階と、前記再構成ロジックを前記タスクノードに伝達する段階と、を含む。
【００１１】
本発明のさらに他の態様による再構成可能プロセッサ（ＲＰ）及び非再構成可能プロセッサ（ｎｏｎ−ＲＰ）を含むタスクノードを活用する方法は、タスクを入力される段階と、前記タスクに基づいて、前記再構成可能プロセッサ及び前記非再構成可能プロセッサのうち、前記タスクの少なくとも一部を処理する１つのプロセッサを選択する段階と、前記選択されたプロセッサを使って、前記タスクの少なくとも一部の処理を要請する段階と、を含む。
【００１２】
本発明のさらに他の態様によるプログラム生成装置は、それぞれのタスクノードが、再構成可能プロセッサ（ＲＰ）を用いてタスクを処理し、前記タスクが、前記再構成可能プロセッサを用いて処理されていない場合、非再構成可能プロセッサ（ｎｏｎ−ＲＰ）を用いて前記タスクを処理することができる複数のタスクノード及び前記複数のタスクノードのうちから前記タスクを処理するタスクノードを選択するスケジューラノードを含み、前記ｎｏｎ−ＲＰロジックと同一のタスクを処理するとき、前記ｎｏｎ−ＲＰロジックと同一の結果を生成させる前記再構成可能プロセッサのためのＲＰロジックを含む。
【００１３】
本発明のさらに他の態様による分散処理システムは、再構成可能プロセッサ（ＲＰ）及び非再構成可能プロセッサ（ｎｏｎ−ＲＰ）を含む第１タスクノードと、再構成可能プロセッサを含み、非再構成可能プロセッサを含まない第２タスクノードと、非再構成可能プロセッサを含み、再構成可能プロセッサを含まない第３タスクノードと、を含む複数のタスクノードと、前記複数のタスクノードからタスクを処理するタスクノードを選択するスケジューラノードと、を含む。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態による分散処理システムの構成を示す図である。
【図２】本発明の一実施形態によるスケジューラノードの構成を示す図である。
【図３】本発明の一実施形態によるタスク処理ノード及びタスク処理方式を選択する方法を示す図である。
【図４】本発明の一実施形態によるスケジューラの構成を示す図である。
【図５】本発明の一実施形態によるプログラムパッケージの構成を示す図である。
【図６Ａ】本発明の一実施形態によるタスクノードの構成を示す図である。
【図６Ｂ】本発明の他の実施形態によるタスクノードの構成を示す図である。
【図７】本発明の一実施形態によるプログラム生成装置を示す図である。
【図８】本発明の一実施形態による分散処理システムのスケジュール方法を示す図である。
【発明を実施するための形態】
【００１５】
以下、添付図面を参照して、本発明の実施のための具体例を詳しく説明する。
【００１６】
図１は、本発明の一実施形態による分散処理システムの構成を示す図である。図１で説明する分散処理システムは、多様な用途として使用可能である。例えば、金融、医療分野などの大容量データを処理するか、暗号化、映像処理などの特殊なデータを処理するサービスを提供するコンピューティングシステムに適用可能である。また、分散処理システムは、クラウドコンピューティングを含む多様なネットワーク環境または本技術分野の平均的な技術者に知られたその他のネットワーク環境に適用可能である。
【００１７】
分散処理システム１００は、ネットワーク１０１、及びネットワーク１０１に連結された多数のノード１０２ａ〜１０２ｃ、１０４ａ〜１０４ｄ、１０６を含む。ネットワーク１０１は、有線ネットワークまたは無線ネットワークになりうる。それぞれのノード１０２ａ〜１０２ｃ、１０４ａ〜１０４ｄ、１０６は、データを分析及び処理するコンピューティング装置になりうる。それぞれのノード１０２ａ〜１０２ｃ、１０４ａ〜１０４ｄ、１０６は、多数のクライアントノード１０２ａ、１０２ｂ、１０２ｃ、多数のタスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄ、及び少なくとも１つのスケジューラノード１０６に区分されうる。
【００１８】
それぞれのクライアントノード１０２ａ、１０２ｂ、１０２ｃは、スケジューラノード１０６に作業（ｊｏｂ）または作業のタスク（ｔａｓｋ）の処理を要請する。選択的に、それぞれのクライアントノード１０２ａ、１０２ｂ、１０２ｃは、スケジューラノード１０６にタスクの処理を要請することができる。作業は、多数のタスクからなることが一般的であるが、本説明で作業とタスクという用語は、説明の便宜上、互いに混用されて使われる。
【００１９】
それぞれのタスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄは、スケジューラノード１０６からタスクを伝達されて、これを処理した後、その処理結果をスケジューラノード１０６に返還する。スケジューラノード１０６は、返還された処理結果を整理して作業処理要請を行ったクライアントノードに伝送する。
【００２０】
それぞれのタスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄは、再構成可能プロセッサ（Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ）（以下、‘ＲＰ  ｃｏｒｅ’と称する）１２０及び非再構成可能プロセッサ（Ｎｏｎ−ＲｅｃｏｎｆｉｇｕｒａｂｌｅＰｒｏｃｅｓｓｏｒ）（以下、‘ｎｏｎ−ＲＰ  ｃｏｒｅ’と称する）１４０のうち少なくとも何れか１つに基づいてタスクを処理する。例えば、それぞれのタスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄは、スケジューラノード１０６の命令に基づいてＲＰ  ｃｏｒｅ１２０及びｎｏｎ−ＲＰ  ｃｏｒｅ１４０のうち何れか１つを活性化させれば、該活性化されたＲＰ  ｃｏｒｅ１２０またはｎｏｎ−ＲＰ  ｃｏｒｅ１４０がタスクを実行することが可能である。所定の時刻に、あらゆるタスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄがＲＰ  ｃｏｒｅ１２０を活性化しながら、如何なるタスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄもｎｏｎ−ＲＰ  ｃｏｒｅ１４０を活性化しないこともあり、または、あらゆるタスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄがｎｏｎ−ＲＰ  ｃｏｒｅ１４０を活性化しながら、如何なるタスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄもＲＰ  ｃｏｒｅ１２０を活性化しないこともあり、または、タスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄのうち、一部がＲＰ  ｃｏｒｅ１２０を活性化しながら、タスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄのうち、他の一部がｎｏｎ−ＲＰ  ｃｏｒｅ１４０を活性化することもできる。
【００２１】
ＲＰ  ｃｏｒｅ１２０としては、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）またはＣＧＡ（Ｃｏａｒｓｅ−Ｇｒａｉｎｅｄ  Ａｒｒａｙ）アーキテクチャーが利用され、ｎｏｎ−ＲＰ  ｃｏｒｅ１４０としては、汎用ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）またはＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）マシンなどが利用されうる。しかし、これは例示に過ぎず、ＲＰ  ｃｏｒｅ１２０またはｎｏｎ−ＲＰ  ｃｏｒｅ１４０として動作する装置であれば、如何なるものも使用できる。
【００２２】
それぞれのタスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄは、ＲＰ  ｃｏｒｅ１２０とｎｏｎ−ＲＰ  ｃｏｒｅ１４０とのうち少なくとも１つを含みうる。例えば、ＴＮ＃０（１０４ａ）及びＴＮ＃１（１０４ｂ）のようにＲＰｃｏｒｅ１２０とｎｏｎ−ＲＰ  ｃｏｒｅ１４０とがいずれも備えられることもあり、ＴＮ＃２（１０４ｃ）のようにＲＰ  ｃｏｒｅ１２０のみ備えられるか、ＴＮ＃ｎ（１０４ｄ）のようにｎｏｎ−ＲＰ  ｃｏｒｅ１４０のみ備えられることも可能である。しかし、テストノードのそれぞれが、ＲＰ  ｃｏｒｅとｎｏｎ−ＲＰ  ｃｏｒｅとを備えることも可能である。タスクノードに備えられたＲＰ  ｃｏｒｅやｎｏｎ−ＲＰ  ｃｏｒｅは、互いに同一でもあり、必要に応じて互いに異なることもある。
【００２３】
タスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄのそれぞれは、ＲＰ  ｃｏｒｅ１２０を用いてタスクの一部を処理することができる能力と、タスクの一部が、ＲＰ  ｃｏｒｅ１２０を用いて処理されない場合、ｎｏｎ−ＲＰ  ｃｏｒｅ１４０を用いてタスクの一部を処理することができる能力と、多数のタスクが、ＲＰ  ｃｏｒｅ１２０を用いて処理されない場合、その多数のタスクを順次に、択一的に、並列的に、または同時にｎｏｎ−ＲＰ  ｃｏｒｅ１４０を用いて処理することができる能力とを有する。
【００２４】
それぞれのタスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄは、自分の状況情報を周期的にアップデートして、スケジューラノード１０６に報告することができる。状況情報は、ＲＰ  ｃｏｒｅ１２０の占有如何及び占有予想時間、ＲＰ  ｃｏｒｅ１２０に関する再構成情報、ＲＰ  ｃｏｒｅ１２０の作業進行情報またはＲＰ  ｃｏｒｅ１２０に関するその他の情報になりうる。
【００２５】
スケジューラノード１０６は、多数のタスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄのうちからタスク、タスクの一部または多数のタスクを実行するタスク処理ノードを選択する。タスクは、クライアントノード１０２ａ、１０２ｂ、１０２ｃから受信されたタスク、またはクライアントノード１０２ａ、１０２ｂ、１０２ｃから受信された作業を分割して生成されたタスクになりうる。
【００２６】
スケジューラノード１０６は、タスク処理ノードとそのタスク処理ノードとでタスクが処理される方式を選択することができる。タスク処理方式は、ＲＰ  ｃｏｒｅ１２０に基づいてタスクが処理される方式であるＲＰ方式とｎｏｎ−ＲＰ  ｃｏｒｅ１４０に基づいてタスクが処理される方式であるｎｏｎ−ＲＰ方式とを含みうる。
【００２７】
スケジューラノード１０６は、それぞれのタスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄ別にＲＰコストとｎｏｎ−ＲＰコストとを計算することができる。ＲＰコストは、ＲＰｃｏｒｅ１２０を用いてタスクの処理に必要な時間または電力などになり、ｎｏｎ−ＲＰコストは、ｎｏｎ−ＲＰ  ｃｏｒｅ１４０を用いてタスクの処理に必要な時間または電力などになりうる。言い換えれば、ＲＰコストは、ＲＰ  ｃｏｒｅ１２０でタスクが処理されるときのコストであり、ｎｏｎ−ＲＰコストは、ｎｏｎ−ＲＰ  ｃｏｒｅ１４０でタスクが処理されるときのコストであり得る。ＲＰコストは、ＲＰ  ｃｏｒｅ１２０のタスク処理時間、タスク処理待機時間、再構成時間、再構成待機時間、タスク処理電力、ＲＰ  ｃｏｒｅ１２０の再構成電力またはこれらの結合のうち少なくとも１つに基づいて計算されうる。ＲＰ  ｃｏｒｅ１２０のタスク処理電力は、タスクを処理しながらＲＰ  ｃｏｒｅ１２０が消費する電力であり、ＲＰ  ｃｏｒｅ１２０の再構成電力は、ＲＰ  ｃｏｒｅ１２０が再構成をしながら消費する電力である。ｎｏｎ−ＲＰコストは、ｎｏｎ−ＲＰ  ｃｏｒｅ１４０のタスク処理時間、タスク処理待機時間及びタスク処理電力のうち少なくとも１つに基づいて計算されうる。ｎｏｎ−ＲＰ  ｃｏｒｅ１４０のタスク処理電力は、ｎｏｎ−ＲＰ  ｃｏｒｅ１４０がタスクを処理しながら消費する電力である。
【００２８】
スケジューラノード１０６は、それぞれのタスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄ別にＲＰ利得を計算することができる。ＲＰ利得は、ＲＰ  ｃｏｒｅを通じてタスクを処理したとき、優れた程度を意味する。例えば、スケジューラノード１０６は、ｎｏｎ−ＲＰコストからＲＰコストを差引いた値をＲＰ利得として設定することができる。
【００２９】
スケジューラノード１０６は、それぞれのタスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄ別に計算されたＲＰ利得を用いてタスクを実行するタスクノードを選択することができる。例えば、スケジューラノード１０６は、ＲＰ利得の大きさ情報に基づいてタスクノードを選択することができる。ＲＰ利得の大きさ情報は、ＲＰ利得に対する絶対値を意味する。一例として、スケジューラノード１０６は、最も大きな絶対値のＲＰ利得を有する１つのタスクノードを選択することもでき、必要に応じてＲＰ利得の絶対値が大きな複数のタスクノードを選択することもできる。
【００３０】
タスクを実行するタスクノードを選択することに追加して、スケジューラノード１０６は、計算されたＲＰ利得を用いてタスクを実行するタスクノードのタスク処理方式を選択することができる。例えば、スケジューラノード１０６は、ＲＰ利得の方向情報に基づいてタスク処理方式を選択することができる。ＲＰ利得の方向情報は、ＲＰ利得値の符号になりうる。一例として、スケジューラノード１０６は、選択されたタスクノードのＲＰ利得値が正数であれば、ＲＰ方式を選択し、負数であれば、ｎｏｎ−ＲＰ方式を選択することができる。
【００３１】
または、スケジューラノード１０６は、ＲＰコストからｎｏｎ−ＲＰコストを差引いた値に基づいてｎｏｎ−ＲＰ利得を計算し、ｎｏｎ−ＲＰ利得を用いてスケジュールノード及びタスク処理方式を選択することもできる。
【００３２】
本実施形態で、スケジューラノード１０６が、ＣＮ＃０（１０２ａ）からタスク処理要請を受信したと仮定する。スケジューラノード１０６は、タスクを処理するタスクノードを選択するために、各タスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄのＲＰ利得を計算する。ＲＰ利得は、各タスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄのＲＰコストとｎｏｎ−ＲＰコストとを通じて計算されうる。もし、計算された各タスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄのＲＰ利得が、‘＋１００’、‘＋５０’、‘＋３０’、及び‘−１０’であれば、スケジューラノード１０６は、ＲＰ利得の絶対値が最も大きなＴＮ＃０（１０４ａ）をタスクを実行するタスクノードに選択することができる。また、スケジューラノード１０６は、ＴＮ＃０（１０４ａ）のＲＰ利得が正の値を有するので、タスク処理方式でＲＰ方式を選択することができる。スケジューラノード１０６によってスケジュールされたＴＮ＃０（１０４ａ）は、ＣＮ＃０（１０２ａ）のタスクをＲＰｃｏｒｅ１２０を通じて実行し、その結果をスケジューラノード１０６に返還することができる。
【００３３】
また、最大絶対値を有するＴＮ＃０（１０４ａ）を選択する代わりに、絶対値が大きな２つのノードＴＮ＃０（１０４ａ）及びＴＮ＃１（１０４ｂ）を選択することも可能である。この場合、ＲＰ利得は正の値を有するので、タスク処理方式は、ＲＰ方式を選択し、処理するタスクは、分割されてＴＮ＃０（１０４ａ）及びＴＮ＃１（１０４ｂ）で実行可能である。
【００３４】
図２は、本発明の一実施形態によるスケジューラノードの構成を示す図である。図２を参照すると、スケジューラノード２００は、スケジューラ２０４を含む。選択的に、スケジューラノード２００は、作業分割部２０２、判断情報データベース（ＤＢ）２０６、及び実行要請部２０８をさらに含むこともある。図３のスケジューラノード２００は、図１のスケジューラノード１０６の例示である。
【００３５】
スケジューラ２０４は、タスク処理要請を受信し、該受信されたタスク処理要請に応じて、タスクを処理するタスクノードとそのタスクノードのタスク処理方式とをランタイム環境で動的に選択することができる。受信されたタスク処理要請に応じて、スケジューラ２０４は、判断情報ＤＢ２０６に基づいて、各タスクノードのＲＰ利得を計算することができる。判断情報ＤＢ２０６には、各タスクノードに関するスケジューリング政策、過去作業に対する記録、ハードウェア状態情報、作業設定情報、プログラム構成情報、データ入出力時間、消費電力及びその他の分散処理システム１００に関する情報及び既に処理されたか、現在処理されているか、今後処理されるスケジューラ２０４が、タスクノードを選択し、タスクノードの処理方法を選択する作業が保存されている。
【００３６】
一態様によって、ＲＰ利得は、次のように計算されうる。
【００３７】
【数１】
0006266221.tif 000002
式（１）で、Ｃｏｓｔ＿ｎｏｎＲＰは、ｎｏｎ−ＲＰ  ｃｏｒｅを用いてタスクを処理するときに必要な時間または電力などを表わすｎｏｎ−ＲＰコストになり、Ｃｏｓｔ＿ＲＰは、ＲＰｃｏｒｅを用いてタスクを処理するときに必要な時間または電力などを表わすＲＰコストになりうる。
【００３８】
理解を助けるために、ｎｏｎ−ＲＰコストとＲＰコストは、式（２）のような時間の関数で表すことができる。
【００３９】
【数２】
0006266221.tif 000003
式（２）で、Ｔｉｍｅ＿ＷａｉｔＦｏｒＥｘｅｃｕｔｉｏｎＷｉｔｈｏｕｔＲＰは、ｎｏｎ−ＲＰ  ｃｏｒｅのタスク実行待機時間が、Ｔｉｍｅ＿ＥｘｅｃｕｔｉｏｎＷｉｔｈｏｕｔＲＰは、ｎｏｎ−ＲＰ  ｃｏｒｅのタスク処理時間になりうる。
【００４０】
また、ＲＰコストは、式（３）のような時間の関数で表すことができる。
【００４１】
【数３】
0006266221.tif 000004
式（３）で、Ｔｉｍｅ＿ＷａｉｔＦｏｒＲＰは、ＲＰ  ｃｏｒｅの再構成待機時間を、Ｔｉｍｅ＿ＴｏＲＰは、ＲＰ  ｃｏｒｅの再構成遂行時間を、Ｔｉｍｅ＿ＷａｉｔＦｏｒＥｘｅｃｕｔｉｏｎＷｉｔｈＲＰは、ＲＰ  ｃｏｒｅのタスク実行待機時間を、Ｔｉｍｅ＿ＥｘｅｃｕｔｉｏｎＷｉｔｈＲＰは、ＲＰ  ｃｏｒｅのタスク処理時間になりうる。
【００４２】
式（２）及び式（３）では、コストとして時間を例示したが、その他にも消費電力量を追加的に考慮することもでき、応用目的によって、一部の項目に加重値を付与することもできる。また、式（２）及び式（３）は、理解を助けるための一例であって、待機時間が、処理時間と異なる個別項目に計算されたが、処理時間に含まれて計算される方式ももちろん可能である。
【００４３】
スケジューラ２０４は、式（１）ないし式（３）のように計算された各タスクノードのＲＰ利得を用いてタスクを処理するタスクノードとタスク処理方式とを選択することができる。図３を参照して具体的に説明する。
【００４４】
図３は、本発明の一実施形態によるタスク処理ノード及びタスク処理方式を選択する方法を示す図である。図３のＣａｓｅ  Ｉで、Ｎｏｄｅ＃０のＲＰ利得は、‘１００’に表示されている。これは、ｎｏｎ−ＲＰコストとＲＰコストとの差が、１００であるということを意味する。例えば、Ｎｏｄｅ＃０のｎｏｎ−ＲＰ  ｃｏｒｅを用いてタスクを処理しようとすれば、１５０秒が必要であり、Ｎｏｄｅ＃０の  ＲＰ  ｃｏｒｅを用いてタスクを処理しようとすれば、５０秒が必要であれば、Ｎｏｄｅ＃０のＲＰ利得は、１００（＝１５０−５０）に計算される。言い換えれば、これは、Ｎｏｄｅ＃０でタスクが処理されるとき、ＲＰ方式で処理されるならば、ｎｏｎ−ＲＰ方式に比べて１００の利益があるということを意味する。同様に、Ｃａｓｅ  ＩＩのＮｏｄｅ＃２の場合、‘−１００’のＲＰ利得は、タスクが処理されるとき、ＲＰ方式で処理されるならば、ｎｏｎ−ＲＰ方式に比べて１００の損害があることを意味する。逆に言えば、Ｃａｓｅ  ＩＩのＮｏｄｅ＃２の場合には、ｎｏｎ−ＲＰ方式によるタスク処理がＲＰ方式に比べて１００の利益があるということを意味する。
【００４５】
図３のＣａｓｅ  Ｉのように、各タスクノードのＲＰ利得が、１００、７０、及び５０であると仮定する。Ｃａｓｅ  Ｉで、図２のスケジューラ２０４は、ＲＰ利得の絶対値が最も大きなタスクノードであるＮｏｄｅ＃０をタスク処理ノードに選択することができる。また、選択されたＮｏｄｅ＃０のＲＰ利得が、正の値を有するので、タスク処理方式をＲＰ方式で選択することができる。
【００４６】
他の態様によって、図３のＣａｓｅ  ＩＩのように、各タスクノードのＲＰ利得が、−５０、−７０、及び−１００であると仮定する。Ｃａｓｅ  ＩＩで、図２のスケジューラ２０４は、ＲＰ利得の絶対値が最も大きなタスクノードであるＮｏｄｅ＃２をタスク処理ノードに選択することができる。また、選択されたＮｏｄｅ＃２のＲＰ利得が、負の値を有するので、タスク処理方式をｎｏｎ−ＲＰ方式で選択することができる。すなわち、Ｃａｓｅ  ＩＩは、ＲＰ方式で処理したとき、利益になるタスクノードが１つもないので、ｎｏｎ−ＲＰ方式で処理するが、ｎｏｎ−ＲＰ利得が最も大きな（すなわち、ＲＰ利得が最も小さい）Ｎｏｄｅ＃２を選択した。
【００４７】
同様に、図３のＣａｓｅ  ＩＩＩでは、図２のスケジューラ２０４がＮｏｄｅ＃０をタスク処理ノードに選択し、ＲＰ方式をタスク処理方式で選択し、図３のＣａｓｅ  ＩＶでは、図２のスケジューラ２０４がＮｏｄｅ＃２をタスク処理ノードに選択し、ＲＰ方式をタスク処理方式で選択することができる。
【００４８】
但し、図３は、理解を助けるために、最大限単純な例を表わしたものに過ぎない。したがって、その他に多様な方法でタスク処理ノード及びタスク処理方式が選択されることもある。例えば、ＲＰ利得によって所定の優先順位を付与してタスクを処理するタスクノードを複数個選択することも可能である。また、単純にＲＰ利得の符号（すなわち、負数／正数）に依存せず、設定された臨界値との比較の結果によって、タスク処理方式を選択することもできる。さらに、ＲＰ  ｃｏｒｅ及びｎｏｎ−ＲＰ  ｃｏｒｅのうち何れか１つのみ備えているタスクノードに対しては、既定のＲＰコスト及びｎｏｎ−ＲＰコストを付与することが可能であり、このようなＲＰコスト及びｎｏｎ−ＲＰコスト、コスト及び利得の計算方法、タスク処理ノード及びタスク処理方式の選択政策及びその他の関連情報が判断情報ＤＢ２０６に保存することができる。
【００４９】
再び図２で、スケジューラ２０４は、定められたタスク処理ノードの識別情報及びタスク処理方式についての情報を含むスケジュール情報を実行要請部２０８に伝達することができる。実行要請部２０８は、スケジュール情報に基づいて選択されたタスクノードにタスクの処理を要請する。一態様によって、タスク処理方式でＲＰ方式が選択されたが、該選択されたタスクノードのＲＰ  ｃｏｒｅの実行準備が完了していない場合、実行要請部２０８は、タスク処理を要請する前にＲＰ  ｃｏｒｅの再構成を要請することができる。
【００５０】
スケジューラ２０４に入力または受信されるタスクは、前処理過程を経ることもできる。例えば、クライアントノードが作業要請を伝送した場合、作業分割部２０２は、作業を多数のタスクに分割し、各タスクをリスト形式でスケジューラ２０４に伝送しうる。スケジューラ２０４は、各タスクに対するタスク処理ノードとタスク処理方式とを選択し、リスト形式でスケジュール情報を実行要請部２０８に提供することができる。
【００５１】
図４は、本発明の一実施形態によるスケジューラの構成を示す。
【００５２】
図４を参照すると、スケジューラ４００は、コスト計算部４０１、利得計算部４０２、ノード選択部４０３、及び方式選択部４０４を含みうる。図４で説明するスケジューラ４００は、図２のスケジューラ２０４の一例であり得る。
【００５３】
コスト計算部４０１は、各タスクノード別にＲＰコストとｎｏｎ−ＲＰコストとを計算することができる。ＲＰコストは、タスクノードがＲＰ  ｃｏｒｅを用いてタスクを処理するときに必要なコストになり、ｎｏｎ−ＲＰコストは、タスクノードがｎｏｎ−ＲＰ  ｃｏｒｅを用いてタスクを処理するときに必要なコストになりうる。もし、あるタスクノードにＲＰ  ｃｏｒｅ及びｎｏｎ−ＲＰ  ｃｏｒｅのうち何れか１つのみ存在する場合、存在しないｃｏｒｅのコストは、適切な値であらかじめ与えられることができる。例えば、存在しないｃｏｒｅのコストは、スケジューラが処理可能な最大値として設定することができる。ＲＰｃｏｒｅが存在しない場合、ＲＰコストが最大値として設定されれば、ＲＰｃｏｒｅが選択される可能性を排除することができる。同様に、ｎｏｎ−ＲＰ  ｃｏｒｅが存在しない場合、ｎｏｎ−ＲＰコストが最大値として設定されれば、ｎｏｎ−ＲＰ  ｃｏｒｅが選択される可能性を排除することができる。
【００５４】
利得計算部４０２は、ＲＰコストとｎｏｎ−ＲＰコストとを比較して、所定の利得を計算する。一例として、利得計算部４０２は、ｎｏｎ−ＲＰコストからＲＰコストを差引いた値をＲＰ利得として設定することができる。他の例として、利得計算部４０２は、ＲＰコストからｎｏｎ−ＲＰコストを差引いた値をｎｏｎ−ＲＰ利得として設定することができる。
【００５５】
ノード選択部４０３は、計算された利得を用いてタスクを処理するタスク処理ノードを選択する。例えば、ノード選択部４０３は、ＲＰ利得の大きさ情報を用いてタスク処理ノードを選択することができる。
【００５６】
方式選択部４０４は、計算された利得を用いてタスク処理ノードのタスク処理方式を選択する。例えば、方式選択部４０４は、ＲＰ利得の方向情報を用いてタスク処理方式を選択することができる。
【００５７】
スケジュール情報提供部４０５は、選択されたタスク処理ノード及びタスク処理方式を含むスケジュール情報を生成させる。該生成されたスケジュール情報は、実行要請部（例えば、図２の２０８）または選択されたタスク処理ノードに提供されうる。
【００５８】
図５は、本発明の一実施形態によるプログラムパッケージの構成を示す。図５を参照すると、プログラムパッケージ５００は、各タスクノードで実行されるタスクに対応し、ｎｏｎ−ＲＰロジック５１０及びＲＰロジック５２０を含みうる。前述したように、タスクは、スケジューラノードの要請に応じてタスクノードでｎｏｎ−ＲＰ方式またはＲＰ方式で処理される。ｎｏｎ−ＲＰロジック５１０は、ｎｏｎ−ＲＰ方式が選択された場合に、ｎｏｎ−ＲＰ  ｃｏｒｅが実行するプログラム部分になりうる。一例として、ｎｏｎ−ＲＰロジック５１０は、汎用ＣＰＵのためのタスクの実行コードになりうる。ＲＰロジック５２０は、ＲＰ方式が選択された場合に、ＲＰ  ｃｏｒｅが実行するプログラム部分になりうる。一例として、ＲＰロジック５２０は、再構成可能プロセッサのためのタスクの実行コードになりうる。
【００５９】
ＲＰロジック５２０は、ＲＰ  ｃｏｒｅとのインターフェースのためのロジック、ＲＰｃｏｒｅの再構成のためのロジックを含みうる。ＲＰ  ｃｏｒｅの再構成のためのロジックは、ＲＰ  ｃｏｒｅの構成情報と関連し、バイナリデータ（例えば、ビットストリーム）、構成情報を記述するメタ情報または論理言語形態で構成することができる。
【００６０】
本実施形態で、ｎｏｎ−ＲＰロジック５１０とＲＰロジック５２０は、１：１にマッピングされ、ｎｏｎ−ＲＰロジック５１０及びＲＰロジック５２０は、いずれも、ＲＰロジックが同じタスクを処理するときと同一の結果を生成させる。ＲＰロジック５２０は、所定のプログラム生成装置によって自動で生成されることもできる。動的に活用する場合、所定のプログラムは、タスクに基づいてＲＰ  ｃｏｒｅの再構成のためのロジック及びＲＰｃｏｒｅとのインターフェースのためのロジックを生成することができる。該生成されたＲＰ  ｃｏｒｅの再構成のためのロジックは、タスクノードに伝達されて、タスク遂行以前にＲＰ  ｃｏｒｅの再構成に使われる。
【００６１】
図５の実施形態で、プログラムパッケージ５００は、共通ロジック５３０をさらに含むこともある。共通ロジック５３０は、ｎｏｎ−ＲＰ方式やＲＰ方式に関係なく、共通して実行されるプログラム部分を言う。図５では、分離された個別ロジックと表現されているが、共通ロジック５３０は、ｎｏｎ−ＲＰロジック５７０またはＲＰロジック５２０の一部でもあり得る。また、ｎｏｎ−ＲＰ  ｃｏｒｅとＲＰ  ｃｏｒｅとで共通して実行される代わりに、共通ロジック５３０は、ｎｏｎ−ＲＰ  ｃｏｒｅ（例えば、汎用ＣＰＵ）でのみ実行されると見ることもできる。
【００６２】
図６Ａは、本発明の一実施形態によるタスクノードの構成を示す。図６Ａを参照すると、タスクノード６００は、ｎｏｎ−ＲＰ  ｃｏｒｅ６０２、ＲＰ  ｃｏｒｅ６０４、及び制御部６０６を含みうる。ｎｏｎ−ＲＰ  ｃｏｒｅ６０２は、例えば、汎用ＣＰＵになり、ＲＰ  ｃｏｒｅ６０４は、所定の構成情報に基づいて、そのハードウェア的構成が変更される、例えば、ＦＰＧＡまたはＣＧＡになりうる。図６Ａのタスクノード６００は、図１のタスクノード１０４ａ、１０４ｂの例示である。
【００６３】
制御部６０６は、スケジューラノード（例えば、図１の１０６）のスケジュール結果によって、ｎｏｎ−ＲＰ  ｃｏｒｅ６０２及びＲＰ  ｃｏｒｅ６０４のうち何れか１つを用いてタスクが処理されるように、ｎｏｎ−ＲＰ  ｃｏｒｅ６０２及びＲＰ  ｃｏｒｅ６０４の動作を制御する。例えば、制御部６０６が、スケジューラノード１０６からＲＰ  ｃｏｒｅ６０４によるタスク処理要請を受ければ、制御部６０６は、ＲＰ方式によってビットストリームを直ちにＲＰ  ｃｏｒｅ６０４にローディングするか、保存された再構成ロジックライブラリーからローディングするビットストリームを持って来てＲＰ  ｃｏｒｅ６０４にローディングするか、あるいはユーザのロジックをコンパイルして、ビットストリームを生成させた後、ＲＰ  ｃｏｒｅ６０４にローディングすることができる。
【００６４】
制御部６０６は、ｎｏｎ−ＲＰ  ｃｏｒｅ６０２及び／またはＲＰ  ｃｏｒｅ６０４のインターフェースの役割を担当することができる。また、ＲＰ  ｃｏｒｅ６０４で遂行中であるタスクがあるか、以前タスクに関する再構成遂行あるいは遂行予定中であるために、新規受信タスクに対してＲＰ  ｃｏｒｅ６０４を再構成しにくい場合、新規受信タスクは、所定のキューに待機し、制御部６０６が、ＲＰ  ｃｏｒｅ６０４に対するロックを獲得して、待機中である新規受信タスクを管理することも可能である。
【００６５】
図６Ｂは、本発明の他の実施形態によるタスクノードの構成を示す。図６Ｂに示すタスクノード６１０は、タスク情報受信部６２０、制御部６３０、及びプロセッサユニット６４０を含みうる。図６Ｂのタスクノード６１０は、図１のタスクノード１０４ａ、１０４ｂの例示である。
【００６６】
プロセッサユニット６４０は、再構成可能プロセッサ６４１及び非再構成可能プロセッサ６４２のうち少なくとも１つを含みうる。図６Ｂでは、理解を助けるために、再構成可能プロセッサ６４１と非再構成可能プロセッサ６４２が、いずれもプロセッサユニット６４０に含まれると説明した。しかし、再構成可能プロセッサ６４１と非再構成可能プロセッサ６４２とのうち何れか１つのみ備えられることもある。
【００６７】
タスク情報受信部６２０は、スケジューラノード（例えば、図１のスケジューラ１０６）からタスク及びタスク処理方式を受信することができる。タスク処理方式は、ＲＰロジック及びｎｏｎ−ＲＰロジックのうち何れか１つになりうる。タスク処理方式は、スケジューラノード１０６によって選択されうる。
【００６８】
制御部６３０は、受信されたタスク処理方式に対応した再構成可能プロセッサ６４１または非再構成可能プロセッサ６４２を駆動させることができる。例えば、制御部６３０は、受信されたタスク処理方式がＲＰロジックである場合には、再構成可能プロセッサ６４１を駆動させ、ｎｏｎ−ＲＰロジックである場合には、非再構成可能プロセッサ６４２を駆動させることができる。
【００６９】
図７は、本発明の一実施形態によるプログラム生成装置を示す。図７を参照すると、ユーザは、汎用ＣＰＵ用のｎｏｎ−ＲＰロジック７０１を作成することができる。該作成されたｎｏｎ−ＲＰロジック７０１は、プログラム生成装置７００に入力されうる。ｎｏｎ−ＲＰロジック７０１を受信したプログラム生成装置７００は、ｎｏｎ−ＲＰロジック７０１と同じ機能を行い、ＲＰ  ｃｏｒｅのためのＲＰロジック７０２を生成させ、ｎｏｎ−ＲＰロジック７０１とＲＰロジック７０２とを１：１にマッピングして、ｎｏｎ−ＲＰロジック７０１とＲＰロジック７００は、いずれもＲＰロジックが同一のタスクを処理するときのような結果を生成できるように、プログラムパッケージ７０３を作ることができる。プログラムパッケージ７０３は、タスクノード（例えば、図１の１０４ａ）に提供され、タスクノード１０４ａは、スケジューラノード（例えば、図１のスケジューラ１０６）の制御によって、ｎｏｎ−ＲＰロジック７０１またはＲＰロジック７０２を選択的に実行することができる。
【００７０】
プログラム生成装置７００は、図１のスケジューラノード１０６の例示である図２のスケジューラノード２００に備えられうる。例えば、クライアントノード（例えば、図１のクライアントノード１０２ａ）からスケジューラノード２００が作業要請を受信すれば、スケジューラノード２００内の作業分割部２０２は、作業を多数のタスクに分割する。プログラム生成装置７００は、分割された各タスクに対応するｎｏｎ−ＲＰロジック７０１及びＲＰロジック７０２を生成して、プログラムパッケージ７０３をスケジューラノード２００内のスケジューラ２０４に伝送することが可能である。その他にも、プログラム生成装置７００が、クライアントノード１０２ａ、１０２ｂ、１０２ｃに備えられて、スケジューラノード１０６に作業を要請するとき、ＲＰロジック７０２を共に提供することも可能である。また、プログラム生成装置７００が、タスクノードに備えられて、分割されたタスクに対するＲＰロジック７０２を生成することも可能である。
【００７１】
図７では、プログラム生成装置７００の入力としてｎｏｎ−ＲＰロジック７０１が使われることを例示したが、さらに他の追加的態様によって、ｎｏｎ−ＲＰロジック７０１とＲＰロジック７０２いずれもがプログラム生成装置７００の入力として使われる。言い換えれば、ユーザは、ｎｏｎ−ＲＰロジック７０１とＲＰロジック７０２とを作成することができる。ｎｏｎ−ＲＰロジック７０１とＲＰロジック７０２とが共にプログラム生成装置７００に入力されれば、プログラム生成装置７００は、ｎｏｎ−ＲＰロジック７０１とＲＰロジック７０２とを１：１にマッピングして、ｎｏｎ−ＲＰロジック７０１とＲＰロジック７００は、いずれもＲＰロジックが同一のタスクを処理するときのような結果を生成できるように、プログラムパッケージ７０３を作ることができる。
【００７２】
図８は、本発明の一実施形態による分散処理システムのスケジュール方法を示す。
【００７３】
図１及び図８を参照すると、作業またはタスク要請に応じてタスクノード別にＲＰ利得が計算される（８０１）。例えば、図３のように、スケジューラノード１０６が、各タスクノードのＲＰコスト及びｎｏｎ−ＲＰコストに基づいてＲＰ利得を計算することが可能である。
【００７４】
そして、ＲＰ利得によってタスク処理ノードとタスク処理方式とが選択される（８０２）。例えば、図３のように、スケジューラノード１０６が、ＲＰ利得の大きさと方向とに基づいてタスク処理ノードとタスク処理方式とを選択することができる。
【００７５】
もし、ｎｏｎ−ＲＰ方式が選択されれば、該選択されたタスク処理ノードにタスク処理を要請する（８０５）。これにより、選択されたタスク処理ノードは、ｎｏｎ−ＲＰ  ｃｏｒｅを用いてタスクを処理する。
【００７６】
もし、ＲＰ方式が選択されれば、該選択されたタスク処理ノードに必要な構成が存在するか否かを判断する（８０３）。例えば、スケジューラノード１０６が、選択されたタスク処理ノードから状態情報を受信して、これを判断することができる。必要な構成が存在しない場合、スケジューラノード１０６は、タスク処理ノードに再構成を要請し（８０４）、実行準備が完了すれば、タスク処理を要請する（８０５）。既に必要な構成が存在して実行準備が完了した状態であれば、直ちにタスク処理を要請することができる（８０５）。
【００７７】
前述したように、開示された実施形態によれば、汎用プロセッサと再構成可能プロセッサとが混合された分散処理システムを用いて作業またはタスクが処理され、また、スケジューラノードがランタイム状況でリアルタイムで最適のタスク処理ノードとタスク処理方式とを判断して作業を分配するために、その作業に最適化されたプロセッサを用いて作業を処理することができ、より効率的に資源を活用することができる。
【００７８】
前述したクライアントノード１０２ａ、１０２ｂ、１０ｃ、タスクノード１０４ａ、１０４ｂ、１０４ｃ、１０４ｄ、６００、６１０、スケジューラノード１０６、２００、ＲＰ  ｃｏｒｅ１２０、６０４、ｎｏｎ−ＲＰ  ｃｏｒｅ１４０、６０２、作業分割部２０２、スケジューラ２０４、４００、判断情報データベースＤＢ２０６、実行要請部２０８、コスト計算部４０１、利得計算部４０２、ノード選択部４０３、方式選択部４０４、スケジュール情報提供部４０５、制御部６０６、６３０、タスク情報受信部６２０、再構成可能プロセッサ６４１、非再構成可能プロセッサ６４２及びプログラム生成装置７００は、１つまたはそれ以上のハードウェア構成要素と１つまたはそれ以上のソフトウェア構成要素またはこれらの結合で具現可能である。
【００７９】
例えば、ハードウェア構成要素は、物理的に１つまたはそれ以上の動作を行う物理的装置になり、これに限定されるものではない。ハードウェア構成要素の例は、増幅器、ローパスフィルター、ハイパスフィルター、バンドパスフィルター、ＡＤコンバータ、ＤＡコンバータ及びプロセッシング装置を含む。
【００８０】
例えば、ソフトウェア構成要素は、ソフトウェアによって制御されるプロセッシング装置または１つまたはそれ以上の動作を行うインストラクションとして具現可能であるが、これに限定されるものではない。コンピュータ、コントローラ、またはその他の制御装置が、プロセッシング装置をしてソフトウェアを駆動させるか、インストラクションを実行させうる。１つのソフトウェア構成要素が、１つのプロセッシング装置に具現されることもあり、２つまたはそれ以上のソフトウェア構成要素が、１つのプロセッシング装置に具現されることもあり、１つのソフトウェア構成要素が、２つまたはそれ以上のプロセッシング装置に具現されることもあり、２つまたはそれ以上のソフトウェア構成要素が、２つまたはそれ以上のプロセッシング装置に具現されることもある。
【００８１】
プロセッシング装置は、１つまたはそれ以上の汎用または専用コンピュータ、例えば、プロセッサ、コントローラ、ＡＬＵ、デジタル信号処理器、マイクロコンピュータ、ＦＰＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ａｒｒａｙ）、ＰＬＵ（ＰｒｏｇｒａｍｍａｂｌｅＬｏｇｉｃ  Ｕｎｉｔ）、マイクロプロセッサまたはその他のソフトウェアを駆動するか、インストラクションを実行する装置を用いて具現可能である。プロセッシング装置は、運用体制（ＯＳ）を駆動することもでき、その運用体制上で行われる１つまたはそれ以上のソフトウェアアプリケーションを駆動することもできる。プロセッシング装置は、ソフトウェアを駆動するか、インストラクションを実行するときにデータをアクセス、保存、加工、処理及び生成することもできる。説明の単純化のために、“プロセッシング装置”という単数形が使われたが、本技術分野の平均的な技術者であれば、プロセッシング装置が、多数のプロセッシングエレメント及び多様な類型のプロセッシングエレメントを含みうるということを理解できる。例えば、プロセッシング装置は、１つまたはそれ以上のプロセッサを含むか、１つまたはそれ以上のプロセッサ及び１つまたはそれ以上のコントローラを含みうる。また、並列プロセッサやマルチコアプロセッサのような異なるプロセッシング構成が使われることもある。
【００８２】
ソフトウェア構成要素が動作Ａを行うようになっているプロセッシング装置は、動作Ａを行うようにプロセッサを制御するソフトウェアを実行するか、インストラクションを実行するようにプログラミングされたプロセッサを含みうる。また、ソフトウェア構成要素が動作Ａ、Ｂ及びＣを行うようになっているプロセッシング装置は、多様な構成を有し、例えば、動作Ａ、Ｂ及びＣを行うソフトウェア構成要素が具現されたプロセッサや；動作Ａを行うソフトウェア構成要素が具現された第１プロセッサ及び動作Ｂ及びＣを行うソフトウェア構成要素が具現された第２プロセッサや；動作Ａ及びＢを行うソフトウェア構成要素が具現された第１プロセッサ及び動作Ｃを行うソフトウェア構成要素が具現された第２プロセッサや；動作Ａを行うソフトウェア構成要素が具現された第１プロセッサ及び動作Ｂを行うソフトウェア構成要素が具現された第２プロセッサ及び動作Ｃを行うソフトウェア構成要素が具現された第３プロセッサや；動作Ａ、Ｂ、Ｃを行うソフトウェア構成要素が具現された第１プロセッサ及び動作Ａ、Ｂ、Ｃを行うソフトウェア構成要素が具現された第２プロセッサ及び動作Ａ、Ｂ、Ｃのうち、１つまたはそれ以上を行うソフトウェア構成要素が具現された１つまたはそれ以上のその他のプロセッサ；を含む構成を有しうる。
【００８３】
たとえ、このような例示が、動作Ａ、Ｂ、Ｃの３つの動作に関して説明されたが、動作の個数は、３つに制限されず、行わなければならないタスクや得ようとする結果を満足させる如何なる個数の動作でも可能である。
【００８４】
ソフトウェア構成要素を具現するプロセッシング装置のためのソフトウェアまたはインストラクションは、コンピュータプログラム、若干のコード、インストラクション、またはこれらの組合わせを含み、独立してまたは結合してプロセッシング装置が１つまたはそれ以上の所望の動作を行うように命令するか、プロセッシング装置を構成する。ソフトウェアまたはインストラクションは、プロセッシング装置が直接実行するコンパイラで生成した機械語や、プロセッシング装置がインタプリタを用いて実行する高級言語コードを含みうる。ソフトウェアまたはインストラクション及びこれらと関連したデータ、データファイル及びデータ構造は、永久的にまたは一時的に所定の類型の装置、構成要素、物理的装備、仮想装備、コンピュータ記録媒体、装備、プロセッシング装置に内蔵され、または、プロセッシング装置にインストラクションまたはデータを提供する信号電波が伝播されるか、プロセッシング装置によって解析されうる。
【００８５】
ソフトウェアまたはインストラクション及びこれらと関連したデータ、データファイル及びデータ構造は、またネットワークと連結されたコンピュータシステムを通じて分配されることによって、ソフトウェアまたはインストラクション及びこれらと関連したデータ、データファイル及びデータ構造が、分散方式で保存されて行われることもある。
【００８６】
例えば、ソフトウェアまたはインストラクション及びこれらと関連したデータ、データファイル及びデータ構造は、１つまたはそれ以上のコンピュータで読取り可能な非一時的な記録媒体に記録、保存または固定されうる。コンピュータで読取り可能な非一時的な記録媒体は、ソフトウェアまたはインストラクション及びこれらと関連したデータ、データファイル及びデータ構造を保存し、コンピュータシステムやプロセッシング装置によって判読されるものであれば、如何なるものでも可能である。コンピュータで読取り可能な非一時的な記録媒体の例は、ＲＯＭ、ＲＡＭ、フラッシュメモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ＋Ｒ、ＣＤ−ＲＷ、ＣＤ＋ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ、ＤＶＤ＋Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、ＤＶＤ−ＲＡＭ、ＢＤ−ＲＯＭ、ＢＤ−Ｒ、ＢＤ−Ｒ  ＬＴＨ、ＢＤ−ＲＥ、磁気テープ、フロッピー（登録商標）ディスク、光磁気データ保存装置、光学的データ保存装置、ハードディスク、ＳＳＤ、またはその他の知られているコンピュータで読取り可能な非一時的な記録媒体をいずれも含む。
【００８７】
これに開示された実施形態を具現する機能的プログラム、コード及びコードセグメントは、容易に本技術分野のプログラマーによって、実施形態に関して、これに開示された図面及び発明の詳細な説明に基づいて構築されうる。
【００８８】
多様な実施形態を説明したが、本技術分野の平均的な技術者であれば、発明の思想と範囲を外れずに、これら実施形態を多様に変形することができる。実施形態は、発明を説明するためのものであり、発明の範囲を制限しようとする目的ではない。また、それぞれの実施形態で説明された特徴は、他の実施形態の類似した特徴に適用可能である。説明された技術が、異なる順序で行われるか、説明されたシステム、構造、装置または回路内の構成要素が、異なる方式で結合されるか、他の構成要素またはその均等物に置き換えられても、適切な結果が導出されうる。したがって、本発明は、詳細な説明に開示された内容の範囲ではなく、特許請求の範囲及びその均等物の範囲と定義され、特許請求の範囲に属するあらゆる変形物とその均等物は、開示された内容に含まれると解析しなければならない。
【産業上の利用可能性】
【００８９】
本発明は、分散処理システム、分散処理システムのスケジューラノード及びスケジュール方法、及びそのためのプログラム生成装置関連の技術分野に適用可能である。
【符号の説明】
【００９０】
１００  分散処理システム
１０１  ネットワーク
１０２  クライアントノード
１０４  タスクノード
１０６  スケジューラノード
【図１】
0006266221.tif 000005
【図２】
0006266221.tif 000006
【図３】
0006266221.tif 000007
【図４】
0006266221.tif 000008
【図５】
0006266221.tif 000009
【図６Ａ】
0006266221.tif 000010
【図６Ｂ】
0006266221.tif 000011
【図７】
0006266221.tif 000012
【図８】
0006266221.tif 000013