(57)【要約】再構成可能ハードウェアのプログラムを書換えながら大規模な処理を実行する場合のプログラム書換え時間を削減する。大規模な処理を小さな処理単位に分割して処理する場合、処理内容が動的に変化しても柔軟にプログラム書換え、実行をスケジュール管理し効率的な処理を可能とする。スケジュール部４５は複数タスク単位で、再構成可能ハードウェア部３０へのプログラムロードと実行を制御しプログラムロード時間を削減する。ジョブ管理部４４はジョブ情報格納部４３に格納された複数のタスクから構成される複数のジョブ情報を参照しジョブの実行状況に応じて、タスクの実行を管理するにより効率的な処理を実現する。【特許請求の範囲】
【請求項１】
実行すべきタスクの処理内容に応じた１つ以上のプログラムをロード可能で、ロードされた１つ以上の前記プログラムのうち同時に１つ以上のプログラムを実行可能な再構成可能ハードウェア部と、
前記再構成可能ハードウェア部での処理の対象となる入出力データを格納する入出力データ格納部と、
前記再構成可能ハードウェア部へのプログラムのロードとプログラムの実行を制御するための制御部とを備え、
前記制御部が、
前記再構成可能ハードウェア部にロードするための複数のプログラムを格納するプログラム格納部と、
同一のプログラムで実行可能な複数のタスクを示すタスク情報が、前記プログラム格納部に格納された各プログラム毎に格納されているタスク情報格納部と、
複数のタスクから構成される一まとまりの処理単位であるジョブを構成する各タスク間の依存関係を示すジョブ情報を格納するジョブ情報格納部と、
前記ジョブ情報に応じて実行可能なタスクを選択して、選択したタスクのタスク情報を前記タスク情報格納部に格納し、タスクの実行の進捗に応じて前記ジョブ情報を更新するジョブ管理部と、
前記タスク情報格納部から、前記プログラムで実行可能な１つ以上のタスクを選択し、前記プログラム格納部から選択されたタスクの実行に必要なプログラムを選択し、選択したプログラムの前記再構成可能ハードウェア部へのロードとそのスケジュール管理、及び前記再構成可能ハードウェア部における前記タスクの実行制御とそのスケジュール管理とを行ない、前記タスクの実行の進捗状況を前記ジョブ管理部に通知するスケジュール部と、から構成される情報処理装置。
【請求項２】
前記ジョブ管理部は、前記ジョブ情報格納部に格納されているジョブ情報により示される各タスク間の依存関係を守りながら、次に実行すべきタスクを選択する請求項１に記載の情報処理装置。
【請求項３】
前記タスク情報には、
前記タスクの入力データを指定する１個以上の入力データからなる入力データセットと、
前記タスクの出力結果の格納領域を指定する１個以上の出力データからなる出力データセットと、
前記タスクの実行に必要な前記プログラムを識別するためのプログラム識別子と、前記再構成可能ハードウェア部における前記タスクの実行に必要な所要処理時間と、
前記タスクの処理を完了しなければならない時刻を現すデッドラインとが含まれる請求項１に記載の情報処理装置。
【請求項４】
前記タスク情報格納部は、前記複数のプログラムのそれぞれに応じた複数のタスクキューから構成され、前記タスクキューには対応する前記プログラムで処理可能な複数の前記タスクを格納し、
前記スケジュール部は、タスクキュー単位で前記再構成可能ハードウェア部への前記プログラムのロードとそのスケジュール管理、及び前記再構成可能ハードウェア部での前記複数のタスクの実行制御とそのスケジュール管理とを行なう請求項１に記載の情報処理装置。
【請求項５】
前記タスクキューは、
複数の前記タスク情報を格納するタスク情報バッファと、
前記プログラム識別子と、
前記タスク情報バッファに格納されている複数のタスク情報の処理に必要なタスクキュー所要処理時間と、
前記タスク情報バッファに格納されている複数のタスクの処理を完了しなければならないタスクキューデッドラインとを保持し、
前記スケジュール部は、前記タスクキュー処理所要時間、及び、前記タスクキューデッドラインに基づきタスクキュー単位で前記再構成可能ハードウェア部へのプログラムのロードとそのスケジュール管理、及び前記再構成可能ハードウェア部での複数のタスクの実行制御とそのスケジュール管理とを行う請求項４記載の情報処理装置。
【請求項６】
前記再構成可能ハードウェア部は、
前記プログラムのロード、実行制御、前記タスク情報の入力、前記入力データセットの入力、前記出力データセットへの出力を制御する入出力制御部と、
前記プログラムと前記タスク情報に応じて前記タスクの処理を実行する１つ以上の処理部と、
から構成されている請求項１に記載の情報処理装置。
【請求項７】
前記処理部が、
前記プログラムを格納するプログラムメモリと、
前記プログラムメモリにロードされたプログラムに応じてハードウェア構成を変更可能な再構成部と、から構成された請求項６記載の情報処理装置。
【請求項８】
前記処理部が、
複数の前記プログラムを格納する複数のプログラムメモリと、
前記複数のプログラムメモリから１つを選択するプログラム選択部と、
選択された前記プログラムメモリに格納されたプログラムに応じてハードウェア構成を変更可能な再構成部と、
選択された１つの前記プログラムメモリによる前記再構成部での実行と同時に、他の前記プログラムメモリへプログラムをロードする手段と、から構成された請求項６記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多様な処理を少ないハードウェア資源で効率的に処理することのできる再構成可能ハードウェアを用いた情報処理装置に関する。
【背景技術】
【０００２】
ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）等に代表される再構成可能ハードウェアを用いた情報処理装置では、ＣＰＵやＤＳＰ等のプロセッサ処理に比べて高速な処理が可能である。また処理内容に応じて再構成可能ハードウェアのプログラムを順次に書き換えることのできるプログラマブルデバイスを用いることにより少ないハードウェア資源で多様な処理を実行することが可能である。このような再構成可能なハードウェアを用いた情報処理装置では、プログラムの書き換えは、処理の進捗に応じて必要になった時点で行われていた。また、予め処理全体を静的に解析した情報に基づいて書き換えが行われていた（例えば、特開平１０−２５６３８３号公報参照）。
【発明の開示】
【０００３】
しかし、このような従来の情報処理装置では下記のような問題点を有していた。
【０００４】
先ず、第１の問題点は、再構成可能ハードウェアのプログラムを処理すべきタスク毎に変更する場合、一般的にプログラムロードに要する時間がタスクの処理に要する時間に比べて無視できない程度に大きいことである。通信、ネットワーク処理、メディア等の処理では一連の入力データに対して、幾つかの処理を次々に行なってゆく。例えばＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）のエンコーダでは、色変換、サンプリング、ＤＣＴ（Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）変換、量子化、エントロピー符号化という一連の処理（タスクと呼ぶ）を行なう必要がある。これらの一連のタスクで構成される一まとまりの処理（この場合はＪＰＥＧエンコーダ）をジョブと呼ぶ。これらの処理を再構成可能ハードウェアで実行する場合は、従来技術では、ジョブをあらかじめ幾つかのタスクに分割し、それぞれタスクに応じて再構成可能ハードウェア用のプログラムを用意し、タスクの切替えに応じて再構成可能ハードウェアへプログラムをロードしていた。
【０００５】
しかし、一般に再構成可能ハードウェアへのプログラムのロードは、外部の記憶媒体に格納されているプログラムを再構成可能ハードウェアに転送することにより行なわれる。このため、再構成可能ハードウェアへのプログラムのロードは、ＣＰＵやＤＳＰ等のプロセッサに比べて長時間を要する。従って、個々のタスクの処理に比べて、プログラムロード時間の方が長い場合は、プログラムロード時間でシステムの性能が制限されるため、多くの場合には実用的ではなかった。
【０００６】
あらかじめ複数のプログラムを格納可能で、短時間で処理を切替えることのできる再構成可能ハードウェアもあるが、格納可能なプログラムの数に制限があり、その制限を越えた場合は、外部の記憶媒体からプログラムを転送をすることが必要となるため、同様の問題が生ずる。
【０００７】
第２の問題点は、処理すべきジョブがあらかじめ定まっていない場合は、静的なタスクのスケジュール方式では効率的な処理が困難または不可能なことである。あらかじめ処理全体を解析することにより、処理すべきタスクやタスク間の依存関係、実行順序等のジョブ構造が静的に分かっている場合は、ジョブの処理の進捗に応じてタスクの実行をスケジュール管理することが可能である。しかし、例えば、ネットワーク処理のように、到着データに応じてそのデータに施す処理（ジョブの構造）が異なる場合は、静的なスケジュールでは対応できない。到着データに応じて動的にジョブを生成し、実行可能なタスクを選択、実行し、タスクの実行に応じてジョブの進捗を管理する必要がある。
【０００８】
整理すると、従来の情報処理装置では下記のような２つの問題点があった。
（１）再構成可能ハードウェアのプログラムを処理すべきタスク毎に変更する場合、一般的にプログラムロードに要する時間がタスクの処理に要する時間に比べて無視できない程度に大きい。
（２）処理すべきジョブがあらかじめ定まっていない場合は、静的なタスクのスケジュール方式では効率的な処理が困難、または不可能である。
【０００９】
本発明の目的は、再構成可能ハードウェアを用いた情報処理装置において、再構成可能ハードウェアのプログラムを処理に応じてロードする場合の、プログラムロード時間のオーバーヘッドを小さくし、限られたハードウェア規模の再構成可能ハードウェアにおいても大規模な処理を効率的に処理できるシステムを提供することにある。
【００１０】
本発明の他の目的は、再構成可能ハードウェアを用いた情報処理装置において、プログラムロードや実行等のスケジュールをあらかじめ静的に決めることができない場合にも処理の進捗管理を動的に行なうことにより、効率的に処理できるシステムを提供することにある。
【００１１】
上記目的を達成するために、本発明の情報処理装置は、再構成可能ハードウェア部と入出力データ格納部と制御部とを備えている。
【００１２】
再構成可能ハードウェア部は、実行すべきタスクの処理内容に応じた１つ以上のプログラムをロード可能で、ロードされた１つ以上のプログラムのうち同時に１つ以上のプログラムを実行可能である。入出力データ格納部は、再構成可能ハードウェア部での処理の対象となる入出力データを格納する。制御部は、再構成可能ハードウェア部へのプログラムのロードとプログラムの実行を制御する。
【００１３】
そして、制御部はプログラム格納部とタスク情報格納部とジョブ情報格納部とジョブ管理部とスケジュール部とから構成されている。
【００１４】
プログラム格納部は、再構成可能ハードウェア部にロードするための複数のプログラムを格納する。
【００１５】
タスク情報格納部は、同一のプログラムで実行可能な複数のタスクを示すタスク情報が、プログラム格納部に格納された各プログラム毎に格納されている。
【００１６】
ジョブ情報格納部は、複数のタスクから構成される一まとまりの処理単位であるジョブを構成する各タスク間の依存関係を示すジョブ情報を格納する。
【００１７】
ジョブ管理部は、ジョブ情報に応じて実行可能なタスクを選択して、選択したタスクのタスク情報をタスク情報格納部に格納し、タスクの実行の進捗に応じてジョブ情報を更新する。
【００１８】
スケジュール部は、タスク情報格納部から、プログラムで実行可能な１つ以上のタスクを選択し、プログラム格納部から、選択されたタスクの実行に必要なプログラムを選択する。そして、スケジュール部は、選択したプログラムの再構成可能ハードウェア部へのロードとそのスケジュール管理、及び再構成可能ハードウェア部におけるタスクの実行制御とそのスケジュール管理とを行なう。更に、スケジュール部は、タスクの実行の進捗状況をジョブ管理部に通知する。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施形態の情報処理装置の構成を示すブロック図である。
【図２】図１のタスク情報格納部４２に格納されるタスク情報６０の構成例を示す図である。
【図３Ａ】図１のタスク情報格納部４２においてプログラム２０毎に複数のタスク情報を管理する様子を示す図である。
【図３Ｂ】タスクキュー７０の構成例を示す図である。
【図４】図１のジョブ情報格納部４３に格納される１つのジョブ情報５０の構成例を示す図である。
【図５】図１の再構成可能ハードウェア部３０の構成例を示す図である。
【図６】図５の処理部３２の別の構成例を示す図である。
【図７】図１のジョブ管理部４４の動作例を示すフローチャートである。
【図８】図１のスケジュール部４５の動作例を示すフローチャートである。
【図９】本発明の第２の実施形態の情報処理装置の構成を示すブロック図である。
【発明を実施するための最良の形態】
【００２０】
次に、本発明の実施の形態について図面を参照して詳細に説明する。【００２１】
（第１の実施形態）
図１に、本発明の第１の実施形態の情報処理装置の構成例を示す。本実施形態の情報処理装置１０は、図１に示されるように、再構成可能ハードウェア部３０と、入出力データ格納部１１０と、制御部４０とから構成されている。【００２２】
また、制御部４０は、プログラム格納部４１と、タスク情報格納部４２と、ジョブ情報格納部４３と、ジョブ管理部４４と、スケジュール部４５とから構成される。【００２３】
再構成可能ハードウェア部３０は、１つ以上のプログラム２０をロード可能で、ロードされたプログラム２０に応じてハードウェア構成を変更し、所定の処理を実行する。また、再構成可能ハードウェア部３０は、同時に１つ以上のプログラム２０を実行可能である。１つのプログラム２０のロードと１つのプログラム２０の実行で十分な場合は、再構成可能ハードウェア部３０はＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いて実現可能である。【００２４】
入出力データ格納部１１０は、再構成可能ハードウェア部３０での処理の対象となる入出力データを格納する。【００２５】
プログラム格納部４１は、再構成可能ハードウェア部３０にロードする複数のプログラム２０を格納する。格納されたプログラム２０はプログラム識別子等により一意に識別される。【００２６】
タスク情報格納部４２は、同一のプログラムで実行可能な複数のタスクを示すタスク情報が、プログラム格納部４１に格納された各プログラム２０毎に格納されている。また、タスク情報６０には、タスクを再構成可能ハードウェア部３０で実行するために必要な情報が保持されている。【００２７】
次に、図１のタスク情報格納部４２に格納されるタスク情報６０の構成例を図２に示す。タスク情報６０は、図２に示されるように、入力データセット６１と、出力データセット６３と、プログラム識別子６５と、所要処理時間６６と、デッドライン６７とから構成されている。【００２８】
プログラム識別子６５は、タスクを実行するときに再構成可能ハードウェア部３０にロードすべきプログラム２０を識別するための識別子である。【００２９】
入力データセット６１は、タスク処理の対象となる１個以上の入力データ６２から構成される。それぞれの入力データ６２は実際のデータであってもよいし、または、入出力データ格納部１１０に格納されている入出力データ領域を識別するアドレス等のポインタ情報であってもよい。【００３０】
出力データセット６３は、タスク処理の結果の出力を格納する１個以上の出力データ６４からなる。出力データ６４はタスク情報６０内にデータ領域として確保しておいてもよいし、入出力データ格納部１１０のデータを格納すべき入出力データ領域を識別するアドレス等のポインタ情報であってもよい。【００３１】
所要処理時間６６は、このタスク情報６０で指定されるタスクを再構成可能ハードウェア部３０で実行するときに必要な処理時間の見積り値である。また、デッドライン６７は、タスクの実行を完了すべき期限の時刻を格納する。【００３２】
次に、図１のタスク情報格納部４２においてプログラム２０毎に複数のタスク情報６０を管理するためのタスクキュー７０の構成例を図３Ａおよび図３Ｂに示す。【００３３】
タスク情報格納部４２には、図３Ａに示されるように、図１に示したプログラム格納部４１に格納されているプログラム２０毎にタスクキュー７０が格納される。【００３４】
そして、タスクキュー７０は、図３Ｂに示されるように、タスクバッファ７１と、プログラム識別子７２と、タスクキュー所要処理時間７３と、タスクキューデッドライン７４とから構成されている。【００３５】
タスクバッファ７１は、タスクキュー７０に含まれる複数のタスクのタスク情報６０を格納している。【００３６】
プログラム識別子７２は、このタスクバッファ７１に格納されているタスク情報６０の指定するタスクの実行のために再構成可能ハードウェア部３０にロードしなければならないプログラム２０の識別子を格納する。【００３７】
タスクキュー所要処理時間７３は、このタスクキュー７０のタスクバッファ７１に格納されている全てのタスク情報６０の指定するタスクの実行に必要な所要時間を格納する。例えば、タスクキュー所要処理時間７３は、タスクバッファ７１に格納されている全てのタスク情報６０の所要処理時間６６の合計の値を格納する。【００３８】
タスクキューデッドライン７４は、このタスクキュー７０のタスクバッファ７１に格納されている全てのタスク情報６０の指定するタスクの実行を完了すべき期限の時刻を格納する。例えば、タスクキューデッドライン７４は、タスクバッファ７１に格納されている全てのタスク情報６０のデッドライン６７の中で最小の値を格納する。【００３９】
図１に示したスケジュール部４５は、タスク情報格納部４２に格納されている複数のタスク情報６０を参照しながら、再構成可能ハードウェア部３０へのプログラム２０のロード及び実行を管理する。具体的には、スケジュール部４５は、タスク情報格納部４２から同一のプログラムで実行可能な複数のタスクを選択し、必要なプログラムをプログラム格納部４１から選択して、再構成可能ハードウェア部３０へのプログラムのロードと、複数タスクの実行を制御する。【００４０】
つまり、スケジュール部４５は、タスク情報格納部４２に格納されている複数のタスク情報６０を参照しつつ、次にどのプログラム２０をロードし、どのタスクを実行するかを決定する。【００４１】
タスク情報格納部４２が、例えば、図３で示したようにプログラム２０毎の複数のタスクキュー７０でタスク情報６０を管理している場合の動作を説明する。スケジュール部４５は現在時刻と各タスクキュー７０のタスクキュー所要処理時間７３を加算して、現在時刻にタスクキュー７０に含まれるタスクの処理を開始した場合の予定終了時刻を計算する。スケジュール部４５は、タスクキュー７０のタスクキューデッドライン７４とこの予定終了時刻との差を計算し、差が一番小さいタスクキュー７０の緊急度が一番高いと判断する。スケジュール部４５はこのようにして緊急度の高いタスクキュー７０を選択し、そのタスクキュー７０に含まれる複数のタスクを実行するために必要なプログラム２０を再構成可能ハードウェア部３０にロードした後、再構成可能ハードウェア部３０においてタスクの実行を行なう。【００４２】
以上により再構成可能ハードウェア部３０への１回のプログラムロードに対して複数のタスクを実行するため相対的にプログラムロードの時間を削減することができる。また、本実施形態の情報処理装置１０によれば、プログラムロード回数を減らしつつ、緊急度の高い複数タスクを優先的に実行することも可能で、実時間性の高い処理にも適用することができる。【００４３】
図１においてジョブ情報格納部４３は、複数のジョブ情報５０を格納する。大規模な処理は、現実のハードウェア量の制限等で、再構成可能ハードウェア部３０で１つのタスクとしては実行できない場合がある。このような場合は処理全体を複数の小さなタスクに分割して、それぞれのタスクを再構成可能ハードウェア部３０で順次処理することが行われる。大規模な処理を分割して複数のタスクとして構成した処理単位をジョブと呼ぶ。ジョブは複数のタスクから構成されるが、それぞれのタスクは独立ではなく、依存関係を持っている。そのため、各タスクの実行はこの依存関係を守りながら行なう必要がある。依存関係には、あるタスクの出力を別のタスクの入力として使うというデータ依存と、あるタスクの実行が完了してから別のタスクの実行をしなければならないというような制御依存の２種類がある。このようなジョブを構成する各タスク間の依存関係を示す情報がジョブ情報５０である。【００４４】
次に、図１のジョブ情報格納部４３に格納される１つのジョブ情報５０の構成例を図４に示す。このジョブ情報５０には、ジョブを構成する複数のタスク情報６０とその依存関係６８がグラフとして格納される。各タスク情報６０には依存数カウンタ６９が付加されている。依存数カウンタ６９はジョブの生成時に初期値が設定される。例えば、タスク６０が他の２つのタスク６０の完了に依存している場合は、依存数カウンタ６９の初期値は２が設定される。あるタスク６０の実行が完了するとタスク依存関係６８を辿り、その先にあるタスク情報６０に付加されている依存数カウンタ６９を１だけ減ずる。依存数カウンタ６９の値が０になったタスク情報６０が実行可能タスクである。依存関係６８にはデータ依存、制御依存があるが、依存数カウンタ６９で統一的に管理することが可能である。【００４５】
図１においてジョブ管理部４４は、ジョブ情報格納部４３に格納されている複数のジョブ情報５０を参照しつつ、実行可能となったタスクのタスク情報６０を選択する。具体的には、ジョブ管理部４４は、複数のジョブ内のタスクの実行状況に応じて、次に実行すべきタスクを選択して、選択したタスクのタスク情報をタスク情報格納部４２に格納し、またタスクの実行の進捗に応じてジョブ情報を更新、管理する。【００４６】
図４に示したようなジョブ情報５０の構成例の場合、ジョブ管理部４４は依存カウンタ６９の値が０となっているタスク情報６０を選択し、タスク情報格納部４２に格納する。選択したタスク情報６０のタスク情報格納部４３への格納は、ジョブ管理部４４が直接行なってもよいし、または、スケジュール部４５へ選択したタスク情報６０を通知し、スケジュール部４５を介して行なってもよい。【００４７】
タスク情報格納部４２が、図３Ａに示されるように、プログラム２０毎のタスクキュー７０で構成されている場合は、ジョブ管理部４４は、選択したタスク情報６０のプログラム識別子６５に従い、同じプログラム識別子７２を持つタスクキュー７０のタスクバッファ７１にタスク情報６０を格納する。タスク情報格納部４２に格納されたタスク情報６０はスケジュール部４５によりプログラムロード、実行がスケジュール管理され再構成可能ハードウェア部３０で実行される。実行が完了したタスクのタスク情報６０はスケジュール部４５からジョブ管理部４４に通知される。ジョブ管理部４４は、スケジュール部４５からの完了通知に基づきジョブ情報５０を変更する。ジョブ情報５０の中で、実行が完了したタスクのタスク情報６０から依存関係６８を辿り、完了したタスクに依存していたタスクのタスク情報６０の依存数カウンタ６９を減ずる。完了したタスクのタスク情報６０がジョブ情報格納部４３に格納されている複数のジョブ情報５０のどのタスク情報６０と対応するかは、タスク識別子等の情報を用いて管理することができる。【００４８】
以上により、異なる構造のジョブが複数存在し、それらが動的に生成されるような場合にもジョブを構成するタスクの依存関係を守りつつ処理が可能となる。【００４９】
図１の再構成可能ハードウェア部３０の構成例を図５に示す。再構成可能ハードウェア部３０は、図５に示されるように、入出力制御部３１と、１つ以上の処理部３２とから構成される。処理部３２は、それぞれ、再構成部３３とプログラムメモリ３５とから構成される。プログラムメモリ３５にロードされたプログラム２０の内容に応じて再構成部３２のハードウェア構成が変更され所定の処理が行なわれる。入出力部３１は外部とのインタフェースのためのもので、入出力部３１を介して再構成可能ハードウェア部３０の外部からプログラムメモリ３５へのプログラム２０のロード、処理部３２での処理の実行を制御できる。【００５０】
入出力制御部３１はタスク情報６０を受けとりその情報に応じて入出力データ格納部１１０に格納されている入力データを処理部３２に供給し、処理部３２での処理の結果を出力データとして入出力データ格納部１１０へ出力する。処理部３２が複数ある場合は、１つ以上の処理部３２でプログラム２０の実行をしつつ、実行中でない他の処理部３２にプログラム２０のロードをすることができる。このように再構成可能ハードウェア部３０として複数のプログラム２０をロード可能で、プログラム２０の実行と、プログラム２０のロードを同時に行なえる場合は、あるプログラム２０で実行可能な複数のタスクを実行しつつ、別のプログラム２０のロードが可能なため、プログラムロード時間を完全に隠蔽することも可能である。【００５１】
次に、図５の処理部３２の別の構成例を図６に示す。この場合処理部３２は、図６に示されるように、再構成部３３と、複数のプログラムメモリ３５と、プログラム選択部３４とから構成される。プログラム選択部３４は複数のプログラムメモリ３５から１つを選択し、そのプログラム２０に応じて再構成部３３のハードウェア構成が変更される。プログラム選択部３４によるプログラムメモリ３５の選択はプログラムメモリ３５へのプログラムのロードに比べて短時間に行なうことができる。あらかじめプログラムメモリ３５に必要なプログラム２０を全てロードしておけば、その後はプログラムロードのオーバーヘッドなしにプログラム２０の切替が可能である。また、あるプログラムメモリ３５が選択されて再構成部３３で実行されている時、選択されていない他のプログラムメモリ３５へプログラムロードすることが可能である。従って、複数のプログラムメモリ３５よりも多くのプログラム２０をロードしなければならないような場合でも、プログラムロード時間を隠蔽することが可能である。【００５２】
次に、本実施形態の情報処理装置の動作について図面を参照して詳細に説明する。【００５３】
先ず、図１に示したジョブ管理部４４の動作例を図７のフローチャートに示す。ジョブ管理部４４は外部からのデータの到着に応じてあらかじめ指定された処理をそのデータに施し、その結果を出力するものとする。またジョブ管理部４４は外部からのデータの到着とスケジュール部４５からのタスク実行完了通知という２つのイベントを受け取るものとする。【００５４】
ジョブ管理部４４はまずイベントの到着を待つ（ステップＪ１０）。イベントが外部からのデータの到着の場合（ステップＪ２０）、ジョブ管理部４４は、そのデータの処理に必要なジョブ情報５０を新たに生成してジョブ情報格納部４３に格納する（ステップＪ４０）。【００５５】
次に、ジョブ管理部４４は、そのジョブを構成するタスクの実行に必要なプログラム２０をスケジュール部４５に通知することにより、プログラム格納部４１に必要なプログラム２０を格納する（ステップＪ５０）。以上でジョブを構成するタスクの実行に必要な準備ができる。ジョブ管理部４４は、ジョブ情報格納部４３に格納されている複数のジョブ情報５０を参照し、タスク情報６０の依存カウントが０になっているタスク情報６０を選択し、スケジュール部４５に通知する（ステップＪ６０）。これにより選択されたタスク情報６０がタスク情報格納部４２に格納される。【００５６】
イベントがスケジュール部４５からのタスク実行完了通知の場合は（ステップＪ３０）、ジョブ管理部４４は、実行が完了したタスクのタスク情報６０に応じて、対応するジョブ情報５０を更新する（ステップＪ７０）。ジョブ情報５０の更新により、新たに実行可能となるタスクが生成される可能性があるので、ジョブ管理部４４は、実行可能なタスクを選択しスケジュール部４５に通知する（ステップＪ６０）。【００５７】
以上のジョブ管理部４４の動作例では、ジョブは、それぞれ再構成可能ハードウェア部３０で単独に実行できるタスクという単位に分割され、タスク間の依存関係をタスクの実行の進捗に応じて動的に管理しているので、データの到着に応じて動的に複数のジョブが生成されるような処理であっても再構成可能ハードウェア部３０による効率的な処理が可能となる。【００５８】
次に、図１のスケジュール部４５の動作例を図８のフローチャートに示す。スケジュール部４５は、ジョブ管理部４４からのプログラム登録の通知（図７のステップＪ５０）、タスク登録の通知（図７のステップＪ６０）、及び再構成可能ハードウェア部３０からのタスク実行完了通知というイベントを受け取るものとする。スケジュール部４５は動作を行なうにあたって、再構成可能ハードウェア部３０の動作状態を確認することができるものとする。これは再構成可能ハードウェア部３０に動作状態を示すレジスタを設けることや、または、スケジュール部４５自体に、再構成可能ハードウェア３０への実行制御状態を示す状態変数を設け、再構成可能ハードウェア部３０への制御、再構成可能ハードウェア部３０からの状態の通知に応じて状態変数を変更することにより可能である。【００５９】
スケジュール部４５はプログラム２０のロードや、実行をタスクキュー７０単位に行なう。タスクキュー７０はスケジュール部４５の管理のもと、幾つかの状態を遷移する。主要な状態は、再構成可能ハードウェア部３０での実行に必要なプログラムのロードを待っているプログラムロード待ち状態、再構成可能ハードウェア部３０での実行を待っている実行待ち状態である。【００６０】
スケジュール部４５はまずイベントの到着を待つ（ステップＳ１０）。次に、イベントがジョブ管理部４４からのプログラム登録の通知の場合（ステップＳ２０）、スケジュール部４５は、指定されたプログラム２０をプログラム格納部４１に格納し、そのプログラム２０を管理するためのプログラム識別子を生成する（ステップＳ６０）。次に、スケジュール部４５は、登録したプログラム２０で実行可能なタスク情報６０を管理するためのタスクキュー７０をタスク情報格納部４２に生成し、ステップＳ６０で生成されたプログラム識別子で一意に識別できるようにする（ステップＳ７０）。【００６１】
イベントがジョブ管理部４４からのタスク登録の通知の場合（ステップＳ３０）、スケジュール部４５は、指定されたタスク情報６０のプログラム識別子６５を参照しタスク情報格納部４１の対応するタスクキュー７０にそのタスク情報６０を格納する。スケジュール部４５は、タスク情報６０の格納に応じてタスクキュー７０のタスクキュー所要処理時間７３、タスクキューデッドライン７４等タスクキュー７０の状態も更新する（ステップＳ８０）。【００６２】
以上によりタスク情報格納部４２のタスクキュー７０の状態が変化する。このため、スケジュール部４５は、各タスクキュー７０のタスクキュー所要処理時間７３、タスクキューデッドライン７４等のタスクキュー７０の状態の値を比較し、緊急度の高いタスクキュー７０を選択する（ステップＳ９０）。次に、スケジュール部４５は、再構成可能ハードウェア部３０の動作状況を確認し（ステップＳ１００）、もしプログラムロードが可能な状態であれば、選択したタスクキュー７０の実行に必要なプログラム２０のロードを再構成可能ハードウェア部３０に指示し、選択したタスクキュー７０はプログラムロードを待っている状態を現すプログラムロード待の状態にする（ステップＳ１１０）。次に、スケジュール部４５は、再構成可能ハードウェア部３０の動作状態を確認し（ステップＳ１２０）、タスクの実行が可能な状態であれば、実行待ち状態となっているタスクキュー７０の実行を再構成可能ハードウェア部３０に指示する。再構成可能ハードウェア部３０で同時に複数の実行が可能な場合でかつ、実行待ちのタスクキュー７０も複数ある場合は、複数のタスクキュー７０の実行を指示することでより効率的な実行が行なえる（ステップＳ１３０）。ステップＳ９０、Ｓ１００、Ｓ１１０、Ｓ１２０、Ｓ１３０がスケジュール部４５によるスケジューリングの主要部分である。【００６３】
イベントが再構成可能ハードウェア部３０からのタスク実行完了の通知の場合（ステップＳ４０）、スケジュール部４５は、終了したタスクのタスク情報６０をジョブ管理部４４に通知する。再構成可能ハードウェア部３０からのタスク実行完了の通知が、タスクキュー７０単位の場合は、スケジュール部４５は、ジョブ管理部４４への通知をタスクキュー７０単位で行なうことも可能である（ステップＳ１４０）。タスクキュー７０の実行が完了することにより、再構成可能ハードウェア部３０の状態、タスクキュー７０の状態が変化する、このためスケジュール部４５は、スケジューリングの主要部分のステップＳ９０、Ｓ１００、Ｓ１１０、Ｓ１２０、Ｓ１３０の動作を行なう。【００６４】
イベントが再構成可能ハードウェア部３０からのプログラムロード完了の通知の場合（ステップＳ５０）、スケジュール部４５は、プログラムロードが完了したプログラム２０に対応するタスクキュー７０の状態をプログラムロード待ちから実行待ちに変更する（ステップＳ１５０）。そして、スケジュール部４５は、再構成可能ハードウェア部３０の状態、タスクキュー７０の状態が変化しているのでスケジューリングの主要部分のステップＳ９０、Ｓ１００、Ｓ１１０、Ｓ１２０、Ｓ１３０の動作を行なう。【００６５】
以上のスケジュール部４５の動作例では、同じプログラム２０で実行可能な複数のタスクをタスクキュー７０という単位で管理することにより、プログラムロードに要する時間を、タスクの実行に要する時間に比べて相対的に小さくしているため再構成可能ハードウェア部３０で複数のプログラムを実行する場合のプログラムロード時間のオーバーヘッドを削減できる。また再構成可能ハードウェア部３０が図５、図６のようにプログラム２０の実行とプログラム２０のロードが同時にできる場合には、プログラムロードを他のプログラム２０と並列に行なえるためプログラムロードのオーバーヘッドを実質的に無くすことも可能となる。【００６６】
本実施形態の情報処理装置１０では、同一のプログラムで処理可能な複数のタスクをまとめて再構成可能ハードウェア部３０で実行することにより、プログラムロードに要する時間を実行時間に比べて相対的に小さくできる。そのため、再構成可能ハードウェア部３０を用いた情報処理装置１０において、再構成可能ハードウェア部３０のプログラムを処理に応じてロードする場合の、プログラムロード時間のオーバーヘッドを小さくし、限られたハードウェア規模の再構成可能ハードウェア部においても大規模な処理を効率的に処理できる。【００６７】
さらに、本実施形態の情報処理装置１０では、処理全体を複数のタスクからなるジョブという構造で管理し、ジョブ内のタスクの実行状況に応じて、次に実行すべきタスクを動的に選択し、タスクの実行と、タスクの実行に必要なプログラムロードのスケジュール管理を動的に行うことができる。そのため、再構成可能ハードウェア部３０を用いた情報処理装置１０において、プログラムロードや実行等のスケジュールをあらかじめ静的に決めることができない場合にも処理の進捗管理を動的に行なうことにより、効率的に処理できる。【００６８】
そして、本実施形態の情報処理装置によれば、再構成可能ハードウェア部３０のプログラムロードに要する時間を実質上なくすことができるので、外部からのデータの到着に応じて、必要な処理が変わり、また処理結果の送出に時間制限があるような通信、ネットワーク処理、マルチメディア処理等の効率化を図る用途に適用することができる。【００６９】
（第２の実施形態）
次に、本発明の第２の実施形態の情報処理装置について説明する。【００７０】
本発明の第２の実施形態として、その基本的構成は上記で説明した第１の実施形態と同様であるが、ジョブ管理部４４、スケジュール部４５をプロセッサ８０上で実行するソフトウェアとして実現した構成を図９に示す。この構成の場合は、ジョブ情報格納部４３、タスク情報格納部４２、プログラム格納部４１、入出力データ格納部１１０はそれぞれメモリ１００上の領域として実現できる。プロセッサ８０、再構成可能ハードウェア部３０及び、メモリ１００は通信路９０を介して情報のやりとりや制御が可能である。例えば再構成可能ハードウェア部３０からのイベントの通知はプロセッサ８０への割り込みとして実現できる。ジョブ管理部４４やスケジュール部４５は１つのプログラムとして実現しても良いし、マルチスレッド等の並列プログラムとして実現してもよい。
【図１】
2007029421.tif 000002
【図２】
2007029421.tif 000003
【図３Ａ】
2007029421.tif 000004
【図３Ｂ】
2007029421.tif 000005
【図４】
2007029421.tif 000006
【図５】
2007029421.tif 000007
【図６】
2007029421.tif 000008
【図７】
2007029421.tif 000009
【図８】
2007029421.tif 000010
【図９】
2007029421.tif 000011
【国際調査報告】
2007029421.tif 000012
2007029421.tif 000013
2007029421.tif 000014
2007029421.tif 000015