(57)【特許請求の範囲】
【請求項１】
コンピュータのタスクを実現する回路を動的に再構成可能な再構成可能回路を制御するプロセッサであって、
複数のタスクを実現する回路をそれぞれ前記再構成可能回路に再構成する際に、前記再構成にかかるパラメータに基づいて、前記複数のタスクのタイムシェアリングの割り当て時間又は前記複数のタスクの優先処理順位を決定する決定部を有し、
前記再構成にかかるパラメータは、前記複数のタスクをそれぞれ実現する回路の前記再構成可能回路内の使用面積であることを特徴とするプロセッサ。
【請求項２】
コンピュータのタスクを実現する回路を動的に再構成可能な再構成可能回路を制御するプロセッサであって、
複数のタスクを実現する回路をそれぞれ前記再構成可能回路に再構成する際に、前記再構成にかかるパラメータに基づいて、前記複数のタスクのタイムシェアリングの割り当て時間又は前記複数のタスクの優先処理順位を決定する決定部を有し、
前記再構成可能回路は、回路を再構成可能な複数のブロックを有し、
前記再構成にかかるパラメータは、前記複数のタスクをそれぞれ実現する回路の前記再構成可能回路内の使用ブロック数であることを特徴とするプロセッサ。
【請求項３】
コンピュータのタスクを実現する回路を動的に再構成可能な再構成可能回路を制御するプロセッサであって、
複数のタスクを実現する回路をそれぞれ前記再構成可能回路に再構成する際に、前記再構成可能回路内の前記複数のタスクをそれぞれ実現する回路から入出力インターフェース回路又はメモリコントローラまでの通信距離に基づいて、前記複数のタスクのタイムシェアリングの割り当て時間又は前記複数のタスクの優先処理順位を決定する決定部を有することを特徴とするプロセッサ。
【請求項４】
コンピュータのタスクを実現する回路を動的に再構成可能な再構成可能回路を制御するプロセッサであって、
複数のタスクを実現する回路をそれぞれ前記再構成可能回路に再構成する際に、前記複数のタスクをそれぞれ実現する回路が使用するリソースの種類毎の数の総和に前記リソースの種類毎の重みを乗算した結果の加算結果に基づいて、前記複数のタスクのタイムシェアリングの割り当て時間又は前記複数のタスクの優先処理順位を決定する決定部を有することを特徴とするプロセッサ。
【請求項５】
さらに、待機しているタスクが使用するリソースの種類の重みが大きくなるように変更する処理をコンピュータに実行させる請求項４に記載のプロセッサ。
【請求項６】
プロセッサのタスクを実現する回路を動的に再構成可能な再構成可能回路を制御する制御方法であって、
前記プロセッサにより、複数のタスクを実現する回路をそれぞれ前記再構成可能回路に再構成する際に、前記複数のタスクをそれぞれ実現する回路の前記再構成可能回路内の使用面積に基づいて、前記複数のタスクのタイムシェアリングの割り当て時間又は前記複数のタスクの優先処理順位を決定する、
ことを特徴とする再構成可能回路の制御方法。
【請求項７】
プロセッサのタスクを実現する回路を動的に再構成可能な再構成可能回路を制御するプログラムであって、
複数のタスクを実現する回路をそれぞれ前記再構成可能回路に再構成する際に、前記複数のタスクをそれぞれ実現する回路の前記再構成可能回路内の使用面積に基づいて、前記複数のタスクのタイムシェアリングの割り当て時間又は前記複数のタスクの優先処理順位を決定する処理をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ、再構成可能回路の制御方法及びプログラムに関する。
【背景技術】
【０００２】
再構成デバイスとコンフィグレーションコードメモリと再構成デバイスコントローラとを有する情報処理装置が知られている（特許文献１参照）。再構成デバイスは、コンフィグレーションコードにしたがって所望のタスクを実行するための回路を変更可能に実現する。コンフィグレーションコードメモリには、再構成デバイスで実行するタスク毎に、それぞれ異なる特徴を持つ複数の回路を実現するためのコンフィグレーションコードが格納される。再構成デバイスコントローラは、異なる特徴を持つ複数の回路のなかからシステムの動作状態に応じて再構成デバイスに実行させる適切な回路を選択する、再構成デバイスに対するコンフィグレーションコードのロードを制御する。
【０００３】
また、再構成可能処理装置と監視手段と再構成手段とを有するデータ処理装置が知られている（特許文献２参照）。再構成可能処理装置は、互いにデータを別入力してデータ処理を行う複数のデータ処理部が論理仕様の再構成によって設けられる。監視手段は、データ処理部におけるデータ処理の終了を監視する。再構成手段は、監視手段の監視結果に基づいて、データ処理中のデータ処理部の論理仕様は再構成せず、処理を終了した１又は２以上のデータ処理部の論理仕様を再構成して、次のデータ処理を行う１又は２以上の新たなデータ処理部を設ける。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１７９３５８号公報
【特許文献２】特開２００９−１２９１６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
再構成可能回路に十分な空き領域がない場合には、再構成可能回路に新たな回路を再構成することができない。その場合、十分な空き領域ができるまで、次の処理が待たされ、再構成可能回路の使用効率が低下してしまう場合がある。
【０００６】
１つの側面では、本発明の目的は、再構成可能回路の使用効率を向上させることができるプロセッサ、再構成可能回路の制御方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００７】
プロセッサは、コンピュータのタスクを実現する回路を動的に再構成可能な再構成可能回路を制御するプロセッサであって、複数のタスクを実現する回路をそれぞれ前記再構成可能回路に再構成する際に、前記再構成にかかるパラメータに基づいて、前記複数のタスクのタイムシェアリングの割り当て時間又は前記複数のタスクの優先処理順位を決定する決定部を有し、前記再構成にかかるパラメータは、前記複数のタスクをそれぞれ実現する回路の前記再構成可能回路内の使用面積である。
【発明の効果】
【０００８】
再構成可能回路の使用効率を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】図１（Ａ）〜（Ｃ）は、第１の実施形態による処理装置の構成例を示す図である。
【図２】図２（Ａ）は再構成可能回路の構成例を示す図であり、図２（Ｂ）は再構成可能回路のレイアウト例を示す図である。
【図３】図３は、メインメモリの一部の構成例を示す図である。
【図４】図４は、プロセッサが実行するアプリケーションの開始処理を示すフローチャートである。
【図５】図５は、プロセッサが行うタスク優先度の計算処理を示すフローチャートである。
【図６】図６（Ａ）は図５のステップＳ５０４の処理の詳細を示すフローチャートであり、図６（Ｂ）は使用状況テーブルの例を示す図である。
【図７】図７（Ａ）は第２の実施形態によるプロセッサの処理を示すフローチャートであり、図７（Ｂ）は使用状況テーブルの例を示す図である。
【図８】図８（Ａ）は第３の実施形態によるプロセッサの処理を示すフローチャートであり、図８（Ｂ）は使用状況テーブルの例を示す図であり、図８（Ｃ）は重みを示す図である。
【図９】図９は、第４の実施形態によるプロセッサの処理を示すフローチャートである。
【発明を実施するための形態】
【００１０】
（第１の実施形態）
図１（Ａ）は、第１の実施形態による処理装置１００の構成例を示す図である。処理装置１００は、例えばサーバ装置であり、プロセッサ１０１と、入出力（Ｉ／Ｏ）ブリッジ回路１０２と、メモリインターフェース回路１０３と、メインメモリ１０４と、再構成可能回路（リコンフィギュラブル回路）１０５とを有する。再構成可能回路１０５は、入出力インターフェース回路１１１と、メモリコントローラ１１２と、回路を動的に再構成可能な複数のブロック１１３とを有する。
【００１１】
メインメモリ１０４は、例えばＤＤＲ（Double-Data-Rate）規格のＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）である。メインメモリ１０４は、プログラム及びデータを記憶し、メモリインターフェース１０３を介してプロセッサ１０１及びメモリコントローラ１１２に接続される。入出力インターフェース回路１１１は、例えばＰＣＩｅ回路である。プロセッサ１０１は、入出力ブリッジ回路１０２を介して、入出力インターフェース回路１１１に接続される。
【００１２】
プロセッサ１０１は、例えば中央処理ユニット（ＣＰＵ）等のコンピュータであり、メインメモリ１０４内のプログラムを実行することにより、タスクを実行する。入出力ブリッジ回路１０２は、プロセッサ１０１と再構成可能回路１０５との間の接続を制御する。再構成可能回路１０５は、例えばＦＰＧＡ（field-programmable gate array）であり、プロセッサ１０１のタスクを実現する回路を動的に再構成可能である。なお、再構成可能回路１０５は、ＦＰＧＡ以外の再構成可能回路でもよい。プロセッサ１０１は、タスクの処理速度を高速化するため、再構成可能回路１０５内の回路をアクセラレータとして使用する。再構成可能回路１０５内の回路は、ハードウェアであるため、プロセッサ１０１のプログラム処理に比べて、高速処理が可能である。
【００１３】
メインメモリ１０４には、図１（Ｂ）のアプリケーション１２１及び図１（Ｃ）のオペレーティングシステム（ＯＳ）／ドライバ１２２が記憶されている。アプリケーション１２１及びＯＳ／ドライバ１２２は、プロセッサ１０１が実行するプログラムである。プロセッサ１０１は、ＯＳ／ドライバ１２２及びアプリケーション１２１をメインメモリ１０４から読み出して実行する。具体的には、プロセッサ１０１は、アプリケーション１２１を実行することにより、例えば、タスクＡ、タスクＢ及びタスクＣを実現する回路をそれぞれ再構成可能回路１０５内のブロック１１３に再構成する。また、プロセッサ１０１は、ＯＳ／ドライバ１２２を実行することにより、タスクスケジュールテーブル１２３及び使用状況テーブル１２４を管理する。
【００１４】
使用状況テーブル１２４は、ブロックＩＤと使用タスクとの対応関係を示す。ブロックＩＤは、再構成可能回路１０５内の複数のブロック１１３の各々の識別番号である。使用タスクは、各ブロックＩＤが示すブロック１１３を使用しているタスクを示す。例えば、ブロックＩＤが「０」及び「１」のブロック１１３は、タスクＡにより使用されている。また、ブロックＩＤが「２」のブロック１１３は、空きであり、いずれのタスクにも使用されていない。また、ブロックＩＤが「３」のブロック１１３は、タスクＢにより使用されている。
【００１５】
タスクスケジュールテーブル１２３は、タスクと固定優先度１３１と変動優先度１３２とリソース優先度１３３との関係を示す。例えば、タスクＡは、固定優先度１３１が「１０」であり、変動優先度１３２が「８」であり、リソース優先度１３３が「８」である。タスクＢは、固定優先度１３１が「１５」であり、変動優先度１３２が「６」であり、リソース優先度１３３が「２」である。タスクＣは、固定優先度１３１が「１０」であり、変動優先度１３２が「４」であり、リソース優先度１３３が「１」である。プロセッサ１０１は、使用状況テーブル１２４を参照し、各タスクが使用するブロック１１３の数に応じて、タスクスケジュールテーブル１２３のリソース優先度１３３を決定する。
【００１６】
例えば、プロセッサ１０１は、タスクＡを実現する回路を再構成可能回路１０５に再構成するために８個のブロック１１３を使用した場合には、タスクスケジュールテーブル１２３のタスクＡのリソース優先度１３３を「８」に設定する。また、プロセッサ１０１は、タスクＢを実現する回路を再構成可能回路１０５に再構成するために２個のブロック１１３を使用した場合には、タスクスケジュールテーブル１２３のタスクＢのリソース優先度１３３を「２」に設定する。また、プロセッサ１０１は、タスクＣを実現する回路を再構成可能回路１０５に再構成するために１個のブロック１１３を使用した場合には、タスクスケジュールテーブル１２３のタスクＣのリソース優先度１３３を「１」に設定する。
【００１７】
図２（Ａ）は再構成可能回路１０５の構成例を示す図であり、図２（Ｂ）は再構成可能回路１０５のレイアウト例を示す図である。入出力インターフェース回路１１１は、複数のブロック１１３に接続され、各タスクに応じた命令等を入出力する。メモリコントローラ１１２は、複数のブロック１１３に接続され、メインメモリ１０４に対してデータを入出力する。複数のブロック１１３の各々は、タスクに応じた回路を再構成可能であり、例えば、メモリ２０１、デジタルシグナルプロセッサ（ＤＳＰ）２０２及びロジック回路２０３を再構成することができる。
【００１８】
図３は、メインメモリ１０４の一部の構成例を示す図である。メインメモリ１０４は、アクティブポインタ３０１、エクスパイアポインタ３０２と、アクティブキュー３０３と、エクスパイアキュー３０４と、待ちキュー３００を記憶する。アクティブポインタ３０１は、アクティブキュー３０３の先頭アドレスを示す。エクスパイアポインタ３０２は、エクスパイアキュー３０４の先頭アドレスを示す。プロセッサ１０１は、アクティブポインタ３０１を参照することによりアクティブキュー３０３にアクセスし、エクスパイアポインタ３０２を参照することによりエクスパイアキュー３０４にアクセスする。
【００１９】
以下、プロセッサ１０１が実行するＯＳ／ドライバ１２２の処理を説明する。プロセッサ１０１は、アプリケーション１２１を実行することにより、複数のタスクを待ちキュー３００に格納する。そして、プロセッサ１０１は、再構成可能回路１０５内に十分なブロック１１３の空きがある場合には、待ちキュー３００内のタスクを実現する回路を再構成可能回路１０５内のブロック１１３に再構成し、待ちキュー３００内のその再構成したタスクをアクティブキュー３０３に移動させる。次に、プロセッサ１０１は、アクティブキュー３０３内の複数のタスクに対して、固定優先度１３１と変動優先度１３２とリソース優先度１３３の合計値に応じた優先処理順位の順番で、固定優先度１３１とリソース優先度１３３の合計値に応じた割り当て時間で、タイムシェアリング処理を行う。固定優先度１３１は、各タスクに指定される固定値である。変動優先度１３２は、各タスクの待ち時間が長くなるほど大きくなる変動値である。プロセッサ１０１は、図１（Ｃ）のタスクスケジュールテーブル１２３の複数のタスクの中で、固定優先度１３１と変動優先度１３２とリソース優先度１３３の合計値が大きい方から順番の優先処理順位で、タスクを実現するブロック１１３の回路の動作開始を指示する。
【００２０】
例えば、図１（Ｃ）のタスクスケジュールテーブル１２３の場合、優先処理順位は、タスクＡが第１位、タスクＢが第２位、タスクＣが第３位である。割り当て時間は、タスクＡが１番目に長く、タスクＢが２番目に長く、タスクＣが３番目に長い。
【００２１】
まず、プロセッサ１０１は、優先処理順位が第１位であるタスクＡのブロック１１３の回路を、タスクＡの割り当て時間だけ動作させ、その動作が終了すると、アクティブキュー３０３内のタスクＡをエクスパイアキュー３０４に移動させる。次に、プロセッサ１０１は、優先処理順位が第２位であるタスクＢのブロック１１３の回路を、タスクＢの割り当て時間だけ動作させ、その動作が終了すると、アクティブキュー３０３内のタスクＢをエクスパイアキュー３０４に移動させる。次に、プロセッサ１０１は、優先処理順位が第３位であるタスクＣのブロック１１３の回路を、タスクＣの割り当て時間だけ動作させ、その動作が終了すると、アクティブキュー３０３内のタスクＣをエクスパイアキュー３０４に移動させる。
【００２２】
次に、プロセッサ１０１は、アクティブキュー３０３が空になると、エクスパイアキュー３０４内のすべてのタスクＡ、タスクＢ及びタスクＣをアクティブキュー３０３に移動させる。その後、上記と同様に、プロセッサ１０１は、優先処理順位が第１位であるタスクＡのブロック１１３の回路を、タスクＡの割り当て時間だけ動作させ、その動作が終了すると、アクティブキュー３０３内のタスクＡをエクスパイアキュー３０４に移動させる。次に、プロセッサ１０１は、優先処理順位が第２位であるタスクＢのブロック１１３の回路を、タスクＢの割り当て時間だけ動作させ、その動作が終了すると、アクティブキュー３０３内のタスクＢをエクスパイアキュー３０４に移動させる。次に、プロセッサ１０１は、優先処理順位が第３位であるタスクＣのブロック１１３の回路を、タスクＣの割り当て時間だけ動作させ、その動作が終了すると、アクティブキュー３０３内のタスクＣをエクスパイアキュー３０４に移動させる。上記の処理を繰り返すことにより、プロセッサ１０１は、複数のタスクＡ、タスクＢ及びタスクＣのタイムシェアリング処理を行う。各タスクの処理が完了すると、各タスクはアクティブキュー３０３及びエクスパイアキュー３０４から削除される。
【００２３】
リソース優先度１３３は、各タスクが使用するブロック１１３の数が多いほど、大きくなる。すなわち、リソース優先度１３３は、各タスクが使用するブロック１１３の合計面積が大きいほど、大きくなる。各タスクの優先処理順位は、各タスクのリソース優先度１３３が大きいほど優先される。各タスクの割り当て時間は、各タスクのリソース優先度１３３が大きいほど長くなる。したがって、複数のタスクの中で、使用するブロック１１３の数が多いタスクほど、又は、使用するブロック１１３の合計面積が大きいタスクほど、そのタスクが使用するブロック１１３の動作を早期に終了させ、その大面積の使用ブロック１１３を空き状態にすることができる。これにより、次のタスクの待機時間を短縮し、再構成可能回路１０５の使用効率を向上させることができる。
【００２４】
図４は、プロセッサ１０１が実行するアプリケーション１２１の開始処理を示すフローチャートである。以下、再構成可能回路１０５の制御方法を説明する。ステップＳ４０１では、プロセッサ１０１は、アプリケーション１２１によるタスクが再構成可能回路１０５をアクセラレータとして使用するか否かを判定する。そして、プロセッサ１０１は、再構成可能回路１０５を使用する場合には、ステップＳ４０２に処理を進め、再構成可能回路１０５を使用しない場合には、処理を終了する。
【００２５】
ステップＳ４０２では、プロセッサ１０１は、待ちキュー３００内のタスクを実現する回路を再構成可能回路１０５内のブロック１１３に再構成するために十分なブロック１１３の空きがあるか否かを判定する。そして、プロセッサ１０１は、その十分なブロック１１３の空きができるまで待機し、その十分なブロック１１３の空きができた場合には、ステップＳ４０３に処理を進める。
【００２６】
ステップＳ４０３では、プロセッサ１０１は、待ちキュー３００内のタスクを実現する回路を再構成可能回路１０５内のブロック１１３に再構成するように制御する。そして、プロセッサ１０１は、待ちキュー３００内のタスクをアクティブキュー３０３に移動する。
【００２７】
次に、ステップＳ４０４では、プロセッサ１０１は、上記の再構成に応じて、図１（Ｃ）の使用状況テーブル１２４を更新する。具体的には、プロセッサ１０１は、使用状況テーブル１２４に、各ブロックＩＤのブロック１１３を使用しているタスクを記録する。
【００２８】
図５は、プロセッサ１０１が行うタスク優先度の計算処理を示すフローチャートである。各タスクのタスク優先度の初期値は０である。ステップＳ５０１では、プロセッサ１０１は、各タスクに指定される固定優先度１３１をタスクスケジュールテーブル１２３に記録し、各タスクのタスク優先度に対して、各タスクの固定優先度１３１をそれぞれ加算する。
【００２９】
次に、ステップＳ５０２では、プロセッサ１０１は、各タスクの待ち時間に応じた各タスクの変動優先度１３２をタスクスケジュールテーブル１２３に記録し、各タスクのタスク優先度に対して、各タスクの変動優先度１３２をそれぞれ加算する。
【００３０】
次に、ステップＳ５０３では、プロセッサ１０１は、各タスクが再構成可能回路１０５をアクセラレータとして使用するか否かを判定する。そして、プロセッサ１０１は、再構成可能回路１０５を使用する場合には、ステップＳ５０４に処理を進め、再構成可能回路１０５を使用しない場合には、ステップＳ５０５に処理を進める。
【００３１】
ステップＳ５０４では、プロセッサ１０１は、使用状況テーブル１２４を基に、各タスクのリソース優先度１３３をタスクスケジュールテーブル１２３に記録し、各タスクのタスク優先度に対して、各タスクのリソース優先度１３３をそれぞれ加算する。例えば、プロセッサ１０１は、使用状況テーブル１２４を参照し、各タスクが使用するブロック１１３の数に応じて、各タスクのリソース優先度１３３をタスクスケジュールテーブル１２３に記録する。このステップＳ５０４の詳細は、後に図６（Ａ）を参照しながら説明する。その後、プロセッサ１０１は、ステップＳ５０５に処理を進める。
【００３２】
ステップＳ５０５では、プロセッサ１０１は、決定部の処理により、各タスクのタスク優先度に応じて、各タスクの優先処理順位を決定する。各タスクのタスク優先度が大きいほど、各タスクの優先処理順位が早くなる。また、プロセッサ１０１は、決定部の処理により、各タスクの固定優先度１３１及びリソース優先度１３３の合計値に応じて、各タスクのタイムシェアリングの割り当て時間を決定する。各タスクの固定優先度１３１及びリソース優先度１３３の合計値が大きいほど、各タスクのタイムシェアリングの割り当て時間が長くなる。
【００３３】
その後、プロセッサ１０１は、アクティブキュー３０３内の複数のタスクに対して、その決定した優先処理順位の順番で、その決定した割り当て時間で、タイムシェアリング処理を行う。
【００３４】
図６（Ａ）は、図５のステップＳ５０４の処理の詳細を示すフローチャートである。図６（Ｂ）は、図４のステップＳ４０４で、プロセッサ１０１が更新した使用状況テーブル１２４の例を示す図である。使用状況テーブル１２４は、各ブロックＩＤのブロック１１３を使用しているタスクを示す。
【００３５】
ステップＳ６０１では、プロセッサ１０１は、使用状況テーブル１２４を参照し、各タスクが使用しているブロック１１３の数をカウントする。次に、ステップＳ６０２では、プロセッサ１０１は、上記の各タスクの使用ブロック数に対して補正係数を乗算することにより、各タスクのリソース優先度１３３を算出する。上記の補正係数は、固定優先度１３１及び変動優先度１３２に対するリソース優先度１３３の重み係数である。次に、ステップＳ６０３では、プロセッサ１０１は、各タスクのタスク優先度に対して、各タスクのリソース優先度１３３を加算する。
【００３６】
なお、プロセッサ１０１は、上記の優先処理順位なしで、各タスクの割り当て時間で、複数のタスクをタイムシェアリング処理してもよい。また、プロセッサ１０１は、タイムシェアリング処理に限定されず、タイムシェアリングの割り当て時間なしで、上記の優先処理順位の順番で、複数のタスクを実行してもよい。
【００３７】
以上のように、プロセッサ１０１は、プロセッサ１０１のタスクを実現する回路を動的に再構成可能な再構成可能回路１０５を制御する。また、プロセッサ１０１は、複数のタスクを実現する回路をそれぞれ再構成可能回路１０５に再構成する際に、複数のタスクをそれぞれ実現する回路の再構成可能回路１０５にかかるコストに基づいて、複数のタスクのタイムシェアリングの割り当て時間又は複数のタスクの優先処理順位を決定する。上記の再構成可能回路１０５にかかるコストは、複数のタスクをそれぞれ実現する回路の再構成可能回路１０５内のブロック１１３の使用面積、又は複数のタスクをそれぞれ実現する回路の再構成可能回路１０５内の使用するブロック１１３の数である。本実施形態によれば、コストが高い回路の動作を早期に終了させることができるので、次のタスクの待機時間を短縮し、再構成可能回路１０５の使用効率を向上させることができる。
【００３８】
（第２の実施形態）
図７（Ａ）は、第２の実施形態によるプロセッサ１０１の処理を示すフローチャートであり、図５のステップＳ５０４の処理の詳細を示すフローチャートである。以下、第２の実施形態が第１の実施形態と異なる点を説明する。図７（Ｂ）は、図４のステップＳ４０４で、プロセッサ１０１が更新した使用状況テーブル１２４の例を示す図である。使用状況テーブル１２４は、各ブロックＩＤのブロック１１３を使用しているタスクと、各ブロックＩＤのブロック１１３の重みを示す。各ブロックＩＤのブロック１１３の重みは、再構成可能回路１０５内のブロック１１３の位置に応じて決まる。例えば、各ブロック１１３は、入出力インターフェース回路１１１に対して、通信距離が短いほど通信時間が短い。したがって、各ブロック１１３の重みは、各ブロック１１３から入出力インターフェース回路１１１までの通信距離が短いほど、大きくなる。また、各ブロック１１３の重みは、各ブロック１１３からメモリコントローラ１１２までの通信距離が短いほど、大きくしてもよい。
【００３９】
ステップＳ７０１では、プロセッサ１０１は、使用状況テーブル１２４を参照し、各タスクが使用しているブロック１１３の重みを読み出す。次に、ステップＳ７０２では、プロセッサ１０１は、上記の各タスクが使用しているブロック１１３の重みの総和に対して補正係数を乗算することにより、各タスクのリソース優先度１３３を算出する。次に、ステップＳ７０３では、プロセッサ１０１は、各タスクのタスク優先度に対して、各タスクのリソース優先度１３３を加算する。
【００４０】
以上のように、プロセッサ１０１は、プロセッサ１０１のタスクを実現する回路を動的に再構成可能な再構成可能回路１０５を制御する。また、プロセッサ１０１は、複数のタスクを実現する回路をそれぞれ再構成可能回路１０５に再構成する際に、複数のタスクをそれぞれ実現する回路の再構成可能回路１０５にかかるコストに基づいて、複数のタスクのタイムシェアリングの割り当て時間又は複数のタスクの優先処理順位を決定する。上記の再構成可能回路１０５にかかるコストは、複数のタスクをそれぞれ実現する回路の再構成可能回路１０５内の位置である。本実施形態によれば、コストが高い回路の動作を早期に終了させることができるので、次のタスクの待機時間を短縮し、再構成可能回路１０５の使用効率を向上させることができる。
【００４１】
（第３の実施形態）
図８（Ａ）は、第３の実施形態によるプロセッサ１０１の処理を示すフローチャートであり、図５のステップＳ５０４の処理の詳細を示すフローチャートである。以下、第３の実施形態が第１の実施形態と異なる点を説明する。図２（Ａ）のように、各ブロック１１３は、リソースとして、メモリ２０１とＤＳＰ２０２とロジック回路２０３を有する。図８（Ｂ）は、図４のステップＳ４０４で、プロセッサ１０１が更新した使用状況テーブル１２４の例を示す図である。使用状況テーブル１２４は、各ブロックＩＤのブロック１１３を使用しているタスクと、各ブロックＩＤのブロック１１３内のロジック回路２０３の数、メモリ２０１の数、及びＤＳＰ２０２の数を示す。複数のブロック１１３は、それぞれ、ロジック回路２０３の数、メモリ２０１の数、及びＤＳＰ２０２の数が異なる。メインメモリ１０４は、図８（Ｃ）に示すように、ロジック回路２０３の重みｗ１、メモリ２０１の重みｗ２、及びＤＳＰ２０２の重みｗ３を記憶する。このように、本実施形態では、ブロック１１３が保有するリソースに重みを付与し、動作を早期に終了させたいリソースの重みを大きくする。
【００４２】
ステップＳ８０１では、プロセッサ１０１は、使用状況テーブル１２４を参照し、各タスクが使用しているブロック１１３のリソース数を読み出す。具体的には、プロセッサ１０１は、タスク毎に、各タスクが使用しているブロック１１３のロジック回路２０３の数の総和と、メモリ２０１の数の総和と、ＤＳＰ２０２の数の総和を読み出す。次に、ステップＳ８０２では、プロセッサ１０１は、タスク毎に、上記の各タスクが使用しているブロック１１３のロジック回路２０３の数の総和にロジック回路２０３の重みｗ１を乗算し、上記の各タスクが使用しているブロック１１３のメモリ２０１の数の総和にメモリ２０１の重みｗ２を乗算し、上記の各タスクが使用しているブロック１１３のＤＳＰ２０２の数の総和にＤＳＰ２０２の重みｗ３を乗算し、それらの乗算結果を加算する。そして、プロセッサ１０１は、タスク毎に、その加算結果に対して補正係数を乗算することにより、各タスクのリソース優先度１３３を算出する。次に、ステップＳ８０３では、プロセッサ１０１は、各タスクのタスク優先度に対して、各タスクのリソース優先度１３３を加算する。
【００４３】
以上のように、プロセッサ１０１は、プロセッサ１０１のタスクを実現する回路を動的に再構成可能な再構成可能回路１０５を制御する。また、プロセッサ１０１は、複数のタスクを実現する回路をそれぞれ再構成可能回路１０５に再構成する際に、複数のタスクをそれぞれ実現する回路の再構成可能回路１０５にかかるコストに基づいて、複数のタスクのタイムシェアリングの割り当て時間又は複数のタスクの優先処理順位を決定する。上記の再構成可能回路１０５にかかるコストは、複数のタスクをそれぞれ実現する回路が使用するリソースの種類である。本実施形態によれば、コストが高い回路の動作を早期に終了させることができるので、次のタスクの待機時間を短縮し、再構成可能回路１０５の使用効率を向上させることができる。
【００４４】
（第４の実施形態）
図９は、第４の実施形態によるプロセッサ１０１の処理を示すフローチャートである。図９のフローチャートは、図４のフローチャートに対して、ステップＳ９０３及びＳ９０５の処理を追加したものである。以下、第４の実施形態が第２及び第３の実施形態と異なる点を説明する。本実施形態では、再構成可能回路１０５にブロック１１３の空きがないために待ちキュー３００で待機しているタスクがある場合、その待機しているタスクが使用したいリソースの重みが大きくなるように、重みを動的に変更する。
【００４５】
ステップＳ９０１では、プロセッサ１０１は、アプリケーション１２１によるタスクが再構成可能回路１０５をアクセラレータとして使用するか否かを判定する。そして、プロセッサ１０１は、再構成可能回路１０５を使用する場合には、ステップＳ９０２に処理を進め、再構成可能回路１０５を使用しない場合には、処理を終了する。
【００４６】
ステップＳ９０２では、プロセッサ１０１は、待ちキュー３００内のタスクを実現する回路を再構成可能回路１０５内のブロック１１３に再構成するために十分なブロック１１３の空きがあるか否かを判定する。そして、プロセッサ１０１は、その十分なブロック１１３の空きがない場合には、ステップＳ９０３に処理を進め、その十分なブロック１１３の空きがある場合には、ステップＳ９０４に処理を進める。
【００４７】
ステップＳ９０３では、プロセッサ１０１は、待ちキュー３００で待機しているタスクが使用したいリソースの重みを変更する。例えば、待機しているタスクがメモリを使用するタスクであり、再構成可能回路１０５内に十分なメモリ２０１の空きがない場合には、プロセッサ１０１は、図８（Ｃ）のメモリの重みｗ２が大きくなるように変更する。また、待機しているタスクが入出力インターフェース回路１１１の通信量が多いタスクである場合には、プロセッサ１０１は、入出力インターフェース回路１１１に近いブロック１１３の重みが大きくなるように、図７（Ｂ）の重みを変更する。また、また、待機しているタスクがメモリコントローラ１１２によるアクセス数が多いタスクである場合には、プロセッサ１０１は、メモリコントローラ１１２に近いブロック１１３の重みが大きくなるように、図７（Ｂ）の重みを変更する。なお、プロセッサ１０１は、エクスパイアキュー３０４で待機しているタスクが使用したいリソースの重みを変更してもよい。
【００４８】
その後、プロセッサ１０１は、ステップＳ９０２に処理を戻す。上記のように、リソースの重みを変更することにより、待機しているタスクが必要とするリソースの処理を早期に終了させ、そのリソースを空き状態にすることができるので、タスクの待機時間を短縮することができる。
【００４９】
ステップＳ９０４では、プロセッサ１０１は、待ちキュー３００内のタスクを実現する回路を再構成可能回路１０５内のブロック１１３に再構成するように制御する。そして、プロセッサ１０１は、待ちキュー３００内のタスクをアクティブキュー３０３に移動する。
【００５０】
次に、ステップＳ９０５では、プロセッサ１０１は、ステップＳ９０３で変更したリソースの重みを元の値に戻す。
【００５１】
次に、ステップＳ９０６では、プロセッサ１０１は、上記の再構成に応じて、使用状況テーブル１２４を更新する。具体的には、プロセッサ１０１は、使用状況テーブル１２４に、各ブロックＩＤのブロック１１３を使用しているタスクを記録する。
【００５２】
以上のように、本実施形態によれば、プロセッサ１０１は、待機しているタスクに応じて、再構成可能回路１０５にかかるコストの重みを動的に変化させる。これにより、待機しているタスクが必要とするリソースの処理を早期に終了させ、そのタスクの待機時間を短縮させることができる。
【００５３】
本実施形態は、プロセッサ（コンピュータ）１０１がプログラムを実行することによって実現することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体及び上記のプログラム等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００５４】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００５５】
１００  処理装置
１０１  プロセッサ
１０２  入出力ブリッジ回路
１０３  メモリインターフェース回路
１０４  メインメモリ
１０５  再構成可能回路
１１１  入出力インターフェース回路
１１２  メモリコントローラ
１１３  ブロック
【図１】
0006669961.tif 000002
【図２】
0006669961.tif 000003
【図３】
0006669961.tif 000004
【図４】
0006669961.tif 000005
【図５】
0006669961.tif 000006
【図６】
0006669961.tif 000007
【図７】
0006669961.tif 000008
【図８】
0006669961.tif 000009
【図９】
0006669961.tif 000010