JP6540294B2 - 制御装置、制御方法及びプログラム - Google Patents

制御装置、制御方法及びプログラム Download PDF

Info

Publication number
JP6540294B2
JP6540294B2 JP2015137154A JP2015137154A JP6540294B2 JP 6540294 B2 JP6540294 B2 JP 6540294B2 JP 2015137154 A JP2015137154 A JP 2015137154A JP 2015137154 A JP2015137154 A JP 2015137154A JP 6540294 B2 JP6540294 B2 JP 6540294B2
Authority
JP
Japan
Prior art keywords
task
processing device
processing
priority
interrupted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015137154A
Other languages
English (en)
Other versions
JP2017021488A (ja
Inventor
デビッド タシ
デビッド タシ
敦 池
敦 池
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015137154A priority Critical patent/JP6540294B2/ja
Publication of JP2017021488A publication Critical patent/JP2017021488A/ja
Application granted granted Critical
Publication of JP6540294B2 publication Critical patent/JP6540294B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、制御装置、制御方法及びプログラムに関する。
複数のマスタデバイス、スレーブデバイス及びメモリデバイスが互いにバス制御装置を介して接続された計算機システムが知られている(特許文献1参照)。その計算機システムは、各マスタデバイスの発行する転送要求パケットの内容に基づいて、バス制御装置が各デバイス間のデータ転送を制御する。転送要求パケットは、少なくともデータ転送の優先順位を示すフィールドを含み、かつこの優先順位が各マスタデバイス又はバス制御装置におけるハードウエアにて付加される。
特開平11−96108号公報
制御装置は、複数の処理デバイスにタスクを実行させることができる。しかし、複数の処理デバイスのうちで使用されていない処理デバイスがある場合には、処理デバイスの使用率が低下し、タスクの処理速度が低下してしまう。
本発明の目的は、処理デバイスの使用率を向上させ、タスクの処理速度を向上させることができる制御装置、制御方法及びプログラムを提供することである。
制御装置は、少なくとも第1の処理デバイス及び第2の処理デバイスにタスクを実行させるための制御装置であって、前記第1の処理デバイスに実行させるためのタスクを格納する第1のタスクキューと、前記第2の処理デバイスに実行させるためのタスクを格納する第2のタスクキューと、前記第1の処理デバイスが実行中のタスクの優先度より高い優先度のタスクが前記第1のタスクキューに挿入されると、前記第1の処理デバイスが実行中のタスクを中断させ、前記第1のタスクキュー内の前記優先度が高いタスクを前記第1の処理デバイスに実行させる第1のデバイスドライバと、第1の場合には、前記中断されたタスクを前記第1の処理デバイスに実行させるために前記中断されたタスクを前記第1のタスクキューに挿入第2の場合には、前記中断されたタスクを前記第2の処理デバイスに実行させるために前記中断されたタスクを前記第2のタスクキューに挿入するスケジューラとを有する。
処理デバイスの使用率を向上させ、タスクの処理速度を向上させることができる。
図1は、本実施形態による処理システムの構成例を示す図である。 図2は、タスクディスクリプタ、プログラム、データベース、デバイスモニタ、及びn個のデバイスドライバを示す図である。 図3は、タスクスケジューラの構成例を示す概念図である。 図4は、第2のデバイスがFPGAである場合の第2のデバイスの構成例を示す図である。 図5は、データベースの構成例を示す図である。 図6は、CPUが実行するタスクスケジューラの処理を示すフローチャートである。 図7は、CPUが実行する各デバイスドライバの処理を示すフローチャートである。 図8は、CPUが実行するタスクスケジューラの処理を示すフローチャートである。
図1は、本実施形態による処理システムの構成例を示す図である。処理システムは、ホストデバイス100及びn個のデバイスDV1〜DVnを有する。ホストデバイス100は、バス101、中央処理ユニット(CPU)102、メモリ103、ハードディスク装置104、コントローラ105、及びn個のインターフェースIF1〜IFnを有する。バス101には、CPU102、メモリ103、ハードディスク装置104及びコントローラ105が接続される。n個のデバイスDV1〜DVnは、それぞれ、n個のインターフェースIF1〜IFnに接続される。メモリ103及びハードディスク装置104には、プログラムが記憶される。CPU102は、メモリ103及びハードディスク装置104に記憶されているプログラムを実行することにより、コントローラ105を制御する。コントローラ105は、n個のインターフェースIF1〜IFnを介して、n個のデバイスDV1〜DVnを制御する。具体的には、ホストデバイス100は、n個のデバイスDV1〜DVnに対して、タスクを実行させるために、タスクを出力する。第1〜第nのデバイスDV1〜DVnは、例えば、GPU(graphics processing unit)、FPGA(field programmable gate array)、DSP(digital signal processor)等であり、タスクの処理を実行する第1〜第nの処理デバイス(ハードウェアアクセラレータ)である。また、ホストデバイス100も、タスクの処理を実行可能な第n+1の処理デバイスである。
図2は、ホストデバイス100内のハードディスク装置104又はメモリ103に記憶されるタスクディスクリプタ201、プログラム202、データベース204、デバイスモニタ205、及びn個のデバイスドライバDR1〜DRnを示す図である。
タスクディスクリプタ201は、デバイスDV1〜DVnのいずれかに実行させるためのタスクである。タスクディスクリプタ201は、タスクプログラム211、プロセス優先度212、対象デバイス識別子213、所望処理時間214、元のタスク優先度215、現在のタスク優先度216、及びリルートフラグ217を有する。タスクプログラム211は、タスクの処理命令を示すプログラムである。
図3に示すように、第1のプロセス301は、第1のユーザによるタスクのグループであり、第1のプロセス301に属するタスクのプロセス優先度212(図2)は例えば「2」である。第2のプロセス302は、第2のユーザによるタスクのグループであり、第2のプロセス302に属するタスクのプロセス優先度212(図2)は例えば「1」である。すなわち、第1のプロセス301のプロセス優先度212は、第2のプロセス302のプロセス優先度212より高いので、第1のプロセス301のタスクは、第2のプロセス302のタスクに対して優先的に処理される。
図2の対象デバイス識別子213は、リルートフラグ217が「0」の場合に、デバイスDV1〜DVn及びホストデバイス100の中で、自己のタスクが処理されるデバイスの識別子である。リルートフラグ217が「1」の場合、タスクスケジューラ203は、対象デバイス識別子213を無視し、デバイスDV1〜DVn及びホストデバイス100の中で、自己のタスクが処理されるのに最適なデバイスを決定する。以下、リルートフラグ217が「1」の場合を説明する。
所望処理時間214は、自己のタスクの処理に要する所望所要時間を示す。元のタスク優先度215及び現在のタスク優先度216は、プロセス内の複数のタスクの中の自己のタスクの優先度を示す。元のタスク優先度215は、自己のタスクの優先度の初期値を示す。現在のタスク優先度216は、初期時には元のタスク優先度215と同じ優先度であり、その後に更新可能の現在の優先度である。
プログラム202、デバイスモニタ205及びデバイスドライバDR1〜DRnは、プログラムである。図1のCPU102は、プログラム202、デバイスモニタ205及びデバイスドライバDR1〜DRnの処理を実行することにより、後述の処理を実現する。
プログラム202は、例えば、OS(operating system)カーネル又はOpenCL Runtimeであり、タスクスケジューラ203を有する。タスクスケジューラ203は、プログラムであり、タスクディスクリプタ201、データベース204内のデータ、及びデバイスモニタ205の出力データを入力し、第1〜第nのデバイスドライバDR1〜DRnを介して、第1〜第nのデバイスDV1〜DVnを制御する。
第1〜第nのデバイスドライバDR1〜DRnは、それぞれ、第1〜第nのデバイスDV1〜DVnを制御するためのプログラムである。デバイスモニタ205は、第1〜第nのデバイスドライバDR1〜DRnの出力データを入力し、第1〜第nのデバイスDV1〜DVnのうちでタスクを実行中のデバイスをビジー状態としてタスクスケジューラ203に出力する。
図3は、タスクスケジューラ203の構成例を示す概念図である。第1のデバイスDV1は、例えばGPUである。第2のデバイスDV2は、例えばFPGAである。第nのデバイスDVnは、例えばFPGAである。
タスクスケジューラ203は、スケジューラ303及びタスクキューQ1〜Qnを有する。第1のタスクキューQ1は、第1のデバイスDV1に実行させるためのタスクを格納する。第1のデバイスDV1は、第1のタスクキューQ1に格納されているタスクを実行する。第2のタスクキューQ2は、第2のデバイスDV2に実行させるためのタスクを格納する。第2のデバイスDV2は、第2のタスクキューQ2に格納されているタスクを実行する。第nのタスクキューQnは、第nのデバイスDVnに実行させるためのタスクを格納する。第nのデバイスDVnは、第nのタスクキューQnに格納されているタスクを実行する。
第1のプロセス301は、第1のプロセス301に属するタスクのタスクディスクリプタ201(図2)をタスクスケジューラ202に出力する。第2のプロセス302は、第2のプロセス302に属するタスクのタスクディスクリプタ201(図2)をタスクスケジューラ202に出力する。スケジューラ303は、第1のプロセス301及び第2のプロセス302のタスクのタスクディスクリプタ201を入力し、タスクスケジューリングを行い、入力したタスクディスクリプタ201をタスクキューQ1〜Qnのうちのいずれかに挿入する。スケジューラ303は、プロセス毎のタスクディスクリプタ201を入力する。
図4は、第2のデバイスDV2がFPGAである場合の第2のデバイスDV2の構成例を示す図である。第2のデバイスDV2は、インターフェース制御部401、メモリ制御部402、メモリ403、実行パイプライン404、及び実行環境記録部405を有する。インターフェース制御部401は、デバイスドライバDR2を介して、タスクスケジューラ203に対して入出力を行う。実行パイプライン404は、m個のステージST1〜STmを有し、タスクをパイプライン実行する。メモリ403は、タスク及び実行結果等を記憶する。メモリ制御部402は、メモリ403の読み出し及び書き込みを制御する。
図2のタスクプログラム211の中には、複数のチェックポイントを組み込み可能である。例えば、タスクプログラム211のループ処理内にチェックポイントを組み込むことができる。タスクスケジューラ203は、第2のデバイスDV2がタスクプログラム211を実行中に、タスクプログラム211内のチェックポイントで、タスクプログラム211の処理を中断させ、その後に、中断させたチェックポイントからタスクプログラム211の処理を再開させることができる。
実行環境記録部405は、タスクスケジューラ203から中断信号を入力すると、パイプライン制御信号406を実行パイプライン404に出力し、各ステージST1〜STmの状態をメモリ403に記録する。そして、タスクスケジューラ203は、各ステージST1〜STmの状態及びメモリ403の状態を退避(保持)する。
その後、タスクスケジューラ203は、タスクを再開させる場合、第2のデバイスDV2に対して、退避させた各ステージST1〜STmの状態及びメモリ403の状態に戻し、中断させたチェックポイントからタスクの処理を再開させる。
なお、FPGAは、上記のように実行環境を記録する実行環境記録部405を有するが、GPU及びDSPは、実行環境を記録する実行環境記録部405を有しない。デバイスDV1〜DVnは、インターフェース制御部401、メモリ制御部402、メモリ403及び実行部を有する。
図5は、データベース204の構成例を示す図である。データベース204は、n+1個のデバイスに対して、タスクのパターン記述毎のデータを記憶する。n+1個のデバイスは、第1〜第nのデバイスDV1〜DVn及び第n+1のデバイス(ホストデバイス)100を有する。複数のタスクのパターン記述は、複数のタスクを種類を示す。
「処理時間」は、タスクの処理時間を示す。第1のパターン記述の場合、例えば、n+1個のデバイスの中で、第2のデバイスDV2の処理時間(120ms)が最も短いので、第1のパターン記述のタスクは、第2のデバイスDV2に実行させることが好ましい。
「環境セーブ」は、図4のように、実行環境を記録(セーブ)する実行環境記録部405の機能を有するか否かを示す。「処理中断可能タスク」は、実行中のタスクを中断可能なタスクであるか否かを示す。「チェックポイント組み込み」は、タスクプログラム211内にチェックポイントが組み込まれているか否かを示す。「次チェックポイントの時刻」は、タスクプログラム211内の次のチェックポイントの時刻を示し、例えば「2時5分25秒250m秒」である。
図6は、CPU102が実行するタスクスケジューラ203の処理を示すフローチャートである。ステップS601では、CPU102は、データベース204に基づいて、第1〜第nのデバイスDV1〜DVn及び第n+1のデバイス100の中で、最も適切なデバイスを抽出する。例えば、CPU102は、第1〜第nのデバイスDV1〜DVn及び第n+1のデバイス100の中で、入力したタスクディスクリプタ201内のタスクプログラム211のパターン記述の「処理時間」が最も短いデバイスを抽出する。
次に、ステップS602では、CPU102は、ステップS601で抽出したデバイスがビジー状態か否かを判定する。具体的には、CPU102は、デバイスモニタ205の処理により、抽出したデバイスがタスクを実行中である場合にはビジー状態であると判定することができる。ビジー状態でない場合には、ステップS603に進み、ビジー状態である場合には、ステップS604に進む。
ステップS603では、CPU102は、入力したタスクディスクリプタ201をそのまま、上記の抽出したデバイスに対応するタスクキューQ1〜Qnに挿入する。
ステップS604では、CPU102は、データベース204を参照し、抽出したデバイスに対し、入力したタスクディスクリプタ201にチェックポイントが組み込まれているか否かを判定する。チェックポイントが組み込まれている場合には、ステップS605に進み、チェックポイントが組み込まれていない場合には、ステップS616に進む。
ステップS605では、CPU102は、抽出したデバイスが実行中のタスクの現在のタスク優先度216と入力されたタスクの現在のタスク優先度216とを比較する。次に、ステップS606では、CPU102は、入力されたタスクの現在のタスク優先度216が、抽出したデバイスが実行中のタスクの現在のタスク優先度216より高いか否かを判定する。入力されたタスクの現在のタスク優先度216が、抽出したデバイスが実行中のタスクの現在のタスク優先度216より高い場合には、ステップS607に進み、それ以外の場合には、ステップS608に進む。
ステップS607では、CPU102は、入力したタスクディスクリプタ201をそのまま、上記の抽出したデバイスに対応するタスクキューQ1〜Qnに挿入する。
ステップS608では、CPU102は、入力されたタスクの現在のタスク優先度216が、抽出したデバイスが実行中のタスクの現在のタスク優先度216と同じ優先度であるか否かを判定する。同じである場合には、ステップS609に進み、同じでない場合には、ステップS616に進む。
ステップS609では、CPU102は、抽出したデバイスが実行中のタスクのプロセス優先度212と入力されたタスクのプロセス優先度212とを比較する。次に、ステップS610では、CPU102は、入力されたタスクのプロセス優先度212が、抽出したデバイスが実行中のタスクのプロセス優先度212より高いか否かを判定する。入力されたタスクのプロセス優先度212が、抽出したデバイスが実行中のタスクのプロセス優先度212より高い場合には、ステップS611に進み、それ以外の場合には、ステップS613に進む。
ステップS613では、CPU102は、入力されたタスクのプロセス優先度212が、抽出したデバイスが実行中のタスクのプロセス優先度212と同じ優先度であるか否かを判定する。同じである場合には、ステップS614に進み、同じでない場合には、ステップS616に進む。
ステップS614では、CPU102は、抽出したデバイスが実行中のタスクの所望処理時間214と入力されたタスクの所望処理時間214とを比較する。次に、ステップS615では、CPU102は、入力されたタスクの所望処理時間214が、抽出したデバイスが実行中のタスクの所望処理時間214より短いか否かを判定する。入力されたタスクの所望処理時間214が、抽出したデバイスが実行中のタスクの所望処理時間214より短い場合には、ステップS611に進み、それ以外の場合には、ステップS616に進む。
ステップS611では、CPU102は、入力されたタスクの現在のタスク優先度216をインクリメントする。その後、ステップS612では、CPU102は、ステップS611で更新された入力のタスクディスクリプタ201を、上記の抽出したデバイスに対応するタスクキューQ1〜Qnに挿入する。
ステップS616では、CPU102は、データベース204を参照し、入力されたタスクを抽出されたデバイスに実行させる場合に、入力されたタスクの実行が完了するまでの処理時間を予測する。ここで、抽出されたデバイスはビジー状態であるので、CPU102は、抽出されたデバイスが実行中のタスクが終了又は中断するまでの待ち時間を含む上記の処理時間を予測する。
その後、ステップS617では、CPU102は、記録された予測処理時間があるか否かを判定する。初回では、未だ記録された予測処理時間はない。記録された予測処理時間がない場合には、ステップS618に進み、記録された予測処理時間がある場合には、ステップS620に進む。
ステップS618では、CPU102は、抽出されたデバイスの識別子(ID)とステップS616で予測された処理時間を記録する。なお、この処理の後、次のステップS617の処理では、CPU102は、記録された予測処理時間があると判定する。
その後、ステップS619では、CPU102は、データベース204に基づいて、第1〜第nのデバイスDV1〜DVn及び第n+1のデバイス100の中で、次に最も適切なデバイスを抽出する。例えば、CPU102は、第1〜第nのデバイスDV1〜DVn及び第n+1のデバイス100の中で、入力したタスクディスクリプタ201内のタスクプログラム211のパターン記述の「処理時間」が、上記の抽出されたデバイスの次に短いデバイスを抽出する。その後、ステップS602に戻る。
ステップS620では、CPU102は、ステップS616で予測された新たな処理時間とステップS618で記録された処理時間とを比較する。次に、ステップS621では、CPU102は、新たな処理時間が記録された処理時間より短いか否かを判定する。新たな処理時間が記録された処理時間より短い場合には、ステップS622に進み、それ以外の場合には、ステップS623に進む。
ステップS622では、CPU102は、抽出されたデバイスの識別子(ID)とステップS616で予測された処理時間を、記録された予測処理時間として更新する。なお、この処理の後、次のステップS620の処理では、CPU102は、ステップS616で予測された処理時間とステップS622で記録された予測処理時間とを比較する。その後、ステップS623に進む。
ステップS623では、CPU102は、第1〜第nのデバイスDV1〜DVn及び第n+1のデバイス100の中で、未だ抽出されていない他のデバイスが残っているか否かを判定する。残っている場合には、ステップS624に進み、残っていない場合には、ステップS625に進む。
ステップS624では、CPU102は、データベース204に基づいて、第1〜第nのデバイスDV1〜DVn及び第n+1のデバイス100の中で、次に最も適切なデバイスを抽出する。例えば、CPU102は、第1〜第nのデバイスDV1〜DVn及び第n+1のデバイス100の中で、入力したタスクディスクリプタ201内のタスクプログラム211のパターン記述の「処理時間」が、上記の抽出されたデバイスの次に短いデバイスを抽出する。その後、ステップS602に戻る。
ステップS625では、CPU102は、入力のタスクディスクリプタ201を、記録されたデバイス識別子(ID)のデバイスに対応するタスクキューQ1〜Qnに挿入する。
図7は、CPU102が実行する各デバイスドライバDR1〜DRnの処理を示すフローチャートである。ステップS701では、CPU102は、タスクキューQ1〜Qnの中身をそれぞれ確認する。
次に、ステップS702では、CPU102は、タスクキューQ1〜Qnにタスクがあるか否かを判定する。タスクキューQ1〜Qnにタスクがある場合には、ステップS703に進み、タスクキューQ1〜Qnにタスクがない場合には、ステップS701に戻る。
ステップS703では、CPU102は、タスクキューQ1〜Qnからタスクを引き出す。その後、ステップS704では、CPU102は、引き出したタスクを、引き出したタスクキューに対応するデバイスDV1〜DVnに実行させる。
次に、ステップS705では、CPU102は、タスクを実行中のデバイスDV1〜DVnが実行中のタスクプログラム211内のチェックポイントに至ったか否かを判定する。至った場合には、ステップS706に進み、至っていない場合には、ステップS709に進む。
ステップS706では、CPU102は、デバイスDV1〜DVnがタスクの実行を終了したか否かを判定する。終了している場合には、ステップS701に戻り、終了していない場合には、ステップS707に進む。
ステップS707では、CPU102は、タスクキューQ1〜Qnに変化があったか否かを判定する。変化があった場合には、ステップS708に進み、変化がない場合には、ステップS709に進む。
ステップS708では、CPU102は、デバイスDV1〜DVnが実行中のタスクのタスク優先度216よりも、高いタスク優先度216のタスクがそのデバイスに対応するタスクキューの中にあるか否かを判定する。ある場合には、ステップS710に進み、ない場合には、ステップS709に進む。
ステップS709では、CPU102は、デバイスDV1〜DVnのタスクの実行を継続させる。その後、ステップS705に戻る。
ステップS710では、CPU102は、タスク切り替え通知をタスクスケジューラ203の処理に送信する。
次に、ステップS711では、CPU102は、ステップS708で判定されたデバイスが実行中のタスクの処理を中断させ、後述のタスク切り替え処理を行う。
次に、ステップS712では、CPU102は、上記のタスクキュー内のタスク優先度216が高いタスクを、その中断させたデバイスに実行させる。その後、ステップS705に戻る。
図8は、CPU102が実行するタスクスケジューラ203の処理を示すフローチャートであり、図7のステップS710のタスク切り替え通知を受信した場合のタスクスケジューラ203の処理を示す。
ステップS801では、CPU102は、図7のステップS710のタスク切り替え通知を受信する。その後、ステップS802では、CPU102は、図7のステップS711で中断されたタスクを再スケジューリングするため、その中断されたタスクを入力タスクとして、図6の処理を行う。
ステップS803では、CPU102は、その再スケジューリングにより決定したレジューム方法を判定する。中断されたタスクが、中断されたデバイスと同じデバイスのタスクキューに挿入された場合には、ステップS804に進む。これに対し、中断されたタスクが、中断されたデバイスと異なるデバイスのタスクキューに挿入された場合には、ステップS811に進む。
ステップS804では、CPU102は、中断されたデバイスがFPGAであるか否かを判定する。FPGAである場合には、ステップS805に進み、FPGAでない場合には、ステップS808に進む。
ステップS805では、CPU102は、データベース204の「環境セーブ」を参照し、中断されたデバイスの実行環境をセーブ可能か否かを判定する。セーブ可能である場合には、ステップS806に進み、セーブ可能でない場合には、ステップS808に進む。
ステップS806では、CPU102は、中断されたデバイス(FPGA)の実行環境(各ステージST1〜STmの状態)をメモリ103の所定アドレスにセーブする。その後、ステップS807では、CPU102は、上記のセーブした実行環境のアドレスを、中断したタスクのタスクディスクリプタ201に埋め込む。その後、ステップS808に進む。
ステップS808では、CPU102は、中断されたデバイスのメモリ403の内容をホストデバイス100のメモリ103にコピーする。その後、ステップS809では、CPU102は、中断されたタスクの現在のタスク優先度216を元のタスク優先度215の値に戻す。その後、ステップS810では、CPU102は、中断されたタスクのタスクディスクリプタ201を、中断されたデバイスに対応するタスクキューに挿入する。
その後、図7のステップS711では、CPU102は、ステップS806でセーブされた実行環境を実行パイプライン404に戻し、ステップS808でコピーされたメモリ内容をメモリ403に戻す。その後、ステップS712では、CPU102は、中断されたデバイスに対して、中断されたチェックポイントからタスクの処理を再開させる。なお、図8のステップS805において、実行環境をセーブ可能ではないと判定された場合、ステップS712では、CPU102は、中断されたデバイスに対して、タスクを最初から実行させる。
図8のステップS811では、CPU102は、中断されたデバイスのメモリ403の内容をホストデバイス100のメモリ103にコピーする。その後、ステップS812では、CPU102は、中断されたタスクが、ホストデバイス(第n+1のデバイス)100のタスクキューに挿入されたか否かを判定する。ホストデバイス100のタスクキューに挿入された場合には、ステップS813に進み、ホストデバイス100のタスクキューに挿入されていない場合には、ステップS814へ進む。
ステップS813では、CPU102は、ホストデバイス100上で、レジュームのために、中断されたタスクの実行を再開させる。
ステップS814では、CPU102は、FPGAのデバイスのタスク実行を中断させ、中断されたタスクの処理を他のFPGAのデバイスに再開させるという条件を満たすか否かを判定する。その条件を満たす場合には、ステップS815に進み、その条件を満たさない場合には、ステップS818に進む。
ステップS815では、CPU102は、データベース204の「環境セーブ」を参照し、中断されたデバイス(FPGA)の実行環境をセーブ可能か否かを判定する。セーブ可能である場合には、ステップS816に進み、セーブ可能でない場合には、ステップS818に進む。
ステップS816では、CPU102は、中断されたデバイス(FPGA)の実行環境(各ステージST1〜STmの状態)をメモリ103の所定アドレスにセーブする。その後、ステップS817では、CPU102は、上記のセーブした実行環境のアドレスを、中断したタスクのタスクディスクリプタ201に埋め込む。その後、ステップS818に進む。
ステップS818では、CPU102は、中断されたタスクの現在のタスク優先度216を元のタスク優先度215の値に戻す。その後、ステップS819では、CPU102は、中断されたタスクのタスクディスクリプタ201を、再スケジューリングされた新たな他のデバイスに対応するタスクキューに挿入する。
その後、図7のステップS711では、CPU102は、ステップS816でセーブされた実行環境を実行パイプライン404に戻し、ステップS811でコピーされたメモリ内容をメモリ403に戻す。その後、ステップS712では、CPU102は、新たな他のデバイスに対して、中断されたチェックポイントからタスクの処理を再開させる。なお、図8のステップS815において、実行環境をセーブ可能ではないと判定された場合、ステップS712では、CPU102は、中断されたデバイスに対して、タスクを最初から実行させる。
以上のように、図1の処理システムは、少なくとも第1のデバイスDV1及び第2のデバイスDV2を有する。CPU102は、図7の第1のデバイスドライバDR1の処理により、第1のデバイスDV1が実行中のタスクのタスク優先度216より高いタスク優先度216のタスクが第1のタスクキューQ1に挿入されると、第1のデバイスDV1が実行中のタスクを中断させ、第1のタスクキューQ1内の上記のタスク優先度が高いタスクを第1のデバイスDV1に実行させる。
また、CPU102は、図8のタスクスケジューラ203の処理により、中断されたタスクを第1のデバイスDV1に実行させるために中断されたタスクを第1のタスクキューQ1に挿入、又は中断されたタスクを第2のデバイスDV2に実行させるために中断されたタスクを第2のタスクキューQ2に挿入することができる。
具体的には、CPU102は、図8のタスクスケジューラ203の処理により、中断されたタスクの処理を中断されたチェックポイントから第1のデバイスDV1に再開させるために中断されたタスクを第1のタスクキューQ1に挿入、又は中断されたタスクの処理を中断されたチェックポイントから第2のデバイスDV2に再開させるために中断されたタスクを第2のタスクキューQ2に挿入する。
また、CPU102は、図8のタスクスケジューラ203の処理により、中断されたタスクの処理を中断されたチェックポイントから第1のデバイスDV1又は第2のデバイスDV2に再開させるために、中断されたタスクに対応する第1のデバイスDV1のメモリ403の状態を保持する。
また、CPU102は、図8のタスクスケジューラ203の処理により、中断されたタスクの処理を中断されたチェックポイントから第1のデバイスDV1又は第2のデバイスDV2に再開させるために、中断されたタスクに対応する第1のデバイスDV1の実行パイプライン404の各ステージST1〜STmの状態を保持する。
また、CPU102は、図6のタスクスケジューラ203の処理により、中断されたタスクを第1のデバイスDV1に実行させる場合に中断されたタスクの実行が完了するまでの処理時間、及び中断されたタスクを第2のデバイスDV2に実行させる場合に中断されたタスクの実行が完了するまでの処理時間を予測する。そして、CPU102は、第1のデバイスDV1の予測処理時間が第2のデバイスDV2の予測処理時間より短い場合には、中断されたタスクを第1のタスクキューQ1に挿入する。また、CPU102は、第2のデバイスDV2の予測処理時間が第1のデバイスDV1の予測処理時間より短い場合には、中断されたタスクを第2のタスクキューQ2に挿入する。
データベース204は、タスクのパターン記述(タスクの種類)毎に、n+1個のデバイスDV1〜DV2及び100の各々のタスク処理時間を記憶する。CPU102は、図6のタスクスケジューラ203の処理により、データベース204を参照し、入力されたタスクに対し、n+1個のデバイスDV1〜DVn及び100の各々のタスク処理時間の中で、第1のデバイスDV1のタスク処理時間が最も短く、かつ第1のデバイスDV1が他のタスクを実行中でない場合には、入力されたタスクを第1のタスクキューQ1に挿入する。
また、CPU102は、図6のタスクスケジューラ203の処理により、第1のデバイスDV1が他のタスクを実行中である場合、入力されたタスクのタスク優先度216が第1のデバイスDV1が実行中の他のタスクのタスク優先度216より高い場合には、入力されたタスクを第1のタスクキューQ1に挿入する。また、CPU102は、入力されたタスクのタスク優先度216が第1のデバイスDV1が実行中の他のタスクのタスク優先度216と同じ場合、入力されたタスクのプロセス優先度212が第1のデバイスDV1が実行中の他のタスクのプロセス優先度212より高い場合には、入力されたタスクを第1のタスクキューQ1に挿入する。
また、CPU102は、図6のタスクスケジューラ203の処理により、入力されたタスクのプロセス優先度212が第1のデバイスDV1が実行中の他のタスクのプロセス優先度212と同じ場合、入力されたタスクの所望処理時間214が第1のデバイスDV1が実行中の他のタスクの所望処理時間214より短い場合には、入力されたタスクを第1のタスクキューQ1に挿入する。
本実施形態によれば、第1〜第nのデバイスDV1〜DV1及び第n+1のデバイス100の状態を考慮した動的なタスクスケジューリングを行うことができるため、n+1個のデバイスのリソースを効率的に使用することができる。また、デバイスが実行中のタスクを中断し、優先度が高い他のタスクに切り替えて実行できるようになるため、リソースの使用率を向上させることができる。これにより、デバイスDV1〜DVnの使用率を向上させ、タスクの処理速度を向上させることができる。
本実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体及び上記のプログラム等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
100 ホストデバイス
101 バス
102 中央処理ユニット(CPU)
103 メモリ
104 ハードディスク装置
105 コントローラ
201 タスクディスクリプタ
202 プログラム
203 タスクスケジューラ
204 データベース
205 デバイスモニタ
DV1〜DVn デバイス
IF1〜IFn インターフェース
DR1〜DRn デバイスドライバ

Claims (11)

  1. 少なくとも第1の処理デバイス及び第2の処理デバイスにタスクを実行させるための制御装置であって、
    前記第1の処理デバイスに実行させるためのタスクを格納する第1のタスクキューと、
    前記第2の処理デバイスに実行させるためのタスクを格納する第2のタスクキューと、
    前記第1の処理デバイスが実行中のタスクの優先度より高い優先度のタスクが前記第1のタスクキューに挿入されると、前記第1の処理デバイスが実行中のタスクを中断させ、前記第1のタスクキュー内の前記優先度が高いタスクを前記第1の処理デバイスに実行させる第1のデバイスドライバと、
    第1の場合には、前記中断されたタスクを前記第1の処理デバイスに実行させるために前記中断されたタスクを前記第1のタスクキューに挿入第2の場合には、前記中断されたタスクを前記第2の処理デバイスに実行させるために前記中断されたタスクを前記第2のタスクキューに挿入するスケジューラと
    を有することを特徴とする制御装置。
  2. 前記スケジューラは、前記中断されたタスクを前記第1の処理デバイスに実行させる場合に前記中断されたタスクの実行が完了するまでの処理時間、及び前記中断されたタスクを前記第2の処理デバイスに実行させる場合に前記中断されたタスクの実行が完了するまでの処理時間を予測し、前記第1の処理デバイスの予測処理時間が前記第2の処理デバイスの予測処理時間より短い場合には、前記中断されたタスクを前記第1のタスクキューに挿入し、前記第2の処理デバイスの予測処理時間が前記第1の処理デバイスの予測処理時間より短い場合には、前記中断されたタスクを前記第2のタスクキューに挿入することを特徴とする請求項1記載の制御装置。
  3. 前記スケジューラは、前記中断されたタスクの処理を前記中断されたポイントから前記第1の処理デバイスに再開させるために前記中断されたタスクを前記第1のタスクキューに挿入、又は前記中断されたタスクの処理を前記中断されたポイントから前記第2の処理デバイスに再開させるために前記中断されたタスクを前記第2のタスクキューに挿入することを特徴とする請求項1又は2記載の制御装置。
  4. 前記スケジューラは、前記中断されたタスクの処理を前記中断されたポイントから前記第1の処理デバイス又は前記第2の処理デバイスに再開させるために、前記中断されたタスクに対応する前記第1の処理デバイスのメモリの状態を保持することを特徴とする請求項3記載の制御装置。
  5. 前記スケジューラは、前記中断されたタスクの処理を前記中断されたポイントから前記第1の処理デバイス又は前記第2の処理デバイスに再開させるために、前記中断されたタスクに対応する前記第1の処理デバイスの実行パイプラインの各ステージの状態を保持することを特徴とする請求項3又は4記載の制御装置。
  6. 前記制御装置は、前記第1の処理デバイス及び前記第2の処理デバイスを含む複数の処理デバイスにタスクを実行させるための制御装置であって、
    前記制御装置は、さらに、タスクの種類毎に、前記第1及び第2の処理デバイスを含む複数の処理デバイスの各々のタスク処理時間を記憶するデータベースを有し、
    前記スケジューラは、前記データベースを参照し、入力されたタスクに対し、前記複数の処理デバイスの各々のタスク処理時間の中で、前記第1の処理デバイスのタスク処理時間が最も短く、かつ前記第1の処理デバイスが他のタスクを実行中でない場合には、前記入力されたタスクを前記第1のタスクキューに挿入することを特徴とする請求項1〜5のいずれか1項に記載の制御装置。
  7. 前記スケジューラは、前記第1の処理デバイスが他のタスクを実行中である場合、前記入力されたタスクの優先度が前記第1の処理デバイスが実行中の他のタスクの優先度より高い場合には、前記入力されたタスクを前記第1のタスクキューに挿入することを特徴とする請求項6記載の制御装置。
  8. 前記スケジューラは、プロセス毎のタスクディスクリプタを入力し、
    前記タスクディスクリプタは、プロセス優先度及びタスク優先度を有し、
    前記スケジューラは、
    前記第1の処理デバイスが他のタスクを実行中である場合、
    前記入力されたタスクの前記タスク優先度が前記第1の処理デバイスが実行中の他のタスクの前記タスク優先度より高い場合には、前記入力されたタスクを前記第1のタスクキューに挿入し、
    前記入力されたタスクのタスク優先度が前記第1の処理デバイスが実行中の他のタスクのタスク優先度と同じ場合、前記入力されたタスクの前記プロセス優先度が前記第1の処理デバイスが実行中の他のタスクの前記プロセス優先度より高い場合には、前記入力されたタスクを前記第1のタスクキューに挿入することを特徴とする請求項6又は7記載の制御装置。
  9. 前記タスクディスクリプタは、タスクの所望処理時間を有し、
    前記スケジューラは、
    前記入力されたタスクの前記プロセス優先度が前記第1の処理デバイスが実行中の他のタスクの前記プロセス優先度と同じ場合、前記入力されたタスクの前記所望処理時間が前記第1の処理デバイスが実行中の他のタスクの前記所望処理時間より短い場合には、前記入力されたタスクを前記第1のタスクキューに挿入することを特徴とする請求項8記載の制御装置。
  10. 第1のデバイスドライバにより、第1の処理デバイスが実行中のタスクの優先度より高い優先度のタスクが第1のタスクキューに挿入されると、前記第1の処理デバイスが実行中のタスクを中断させ、前記優先度が高いタスクを前記第1の処理デバイスに実行させ、
    スケジューラにより、第1の場合には、前記中断されたタスクを前記第1の処理デバイスに実行させるために前記中断されたタスクを前記第1のタスクキューに挿入第2の場合には、前記中断されたタスクを第2の処理デバイスに実行させるために前記中断されたタスクを第2のタスクキューに挿入することを特徴とする制御方法。
  11. 第1の処理デバイスが実行中のタスクの優先度より高い優先度のタスクが第1のタスクキューに挿入されると、前記第1の処理デバイスが実行中のタスクを中断させ、前記優先度が高いタスクを前記第1の処理デバイスに実行させ、
    第1の場合には、前記中断されたタスクを前記第1の処理デバイスに実行させるために前記中断されたタスクを前記第1のタスクキューに挿入第2の場合には、前記中断されたタスクを第2の処理デバイスに実行させるために前記中断されたタスクを第2のタスクキューに挿入する、
    処理をコンピュータに実行させるプログラム。
JP2015137154A 2015-07-08 2015-07-08 制御装置、制御方法及びプログラム Active JP6540294B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015137154A JP6540294B2 (ja) 2015-07-08 2015-07-08 制御装置、制御方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015137154A JP6540294B2 (ja) 2015-07-08 2015-07-08 制御装置、制御方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2017021488A JP2017021488A (ja) 2017-01-26
JP6540294B2 true JP6540294B2 (ja) 2019-07-10

Family

ID=57888656

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015137154A Active JP6540294B2 (ja) 2015-07-08 2015-07-08 制御装置、制御方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6540294B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7273383B2 (ja) * 2020-03-26 2023-05-15 Kddi株式会社 スケジューリング方法、およびスケジューリング装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0644234B2 (ja) * 1987-07-17 1994-06-08 日本電気株式会社 タスク管理装置
JPH1124946A (ja) * 1997-07-04 1999-01-29 Canon Inc タスクスケジューリング装置および方法
JP5243711B2 (ja) * 2006-11-10 2013-07-24 セイコーエプソン株式会社 プロセッサ
US8739171B2 (en) * 2010-08-31 2014-05-27 International Business Machines Corporation High-throughput-computing in a hybrid computing environment
US8842122B2 (en) * 2011-12-15 2014-09-23 Qualcomm Incorporated Graphics processing unit with command processor

Also Published As

Publication number Publication date
JP2017021488A (ja) 2017-01-26

Similar Documents

Publication Publication Date Title
EP2372548B1 (en) Virtual machine monitor and scheduling method thereof
AU2014202257B2 (en) Dynamic virtual machine sizing
JP3952992B2 (ja) 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
TWI416413B (zh) Work processing device
EP2857968B1 (en) Task processor
US10248463B2 (en) Apparatus and method for managing a plurality of threads in an operating system
US10108449B2 (en) Work item management among worker threads of a computing device
JP2013519169A (ja) 割込みの仮想化
US9009716B2 (en) Creating a thread of execution in a computer processor
US20060112394A1 (en) Computer system
CN107203428B (zh) 一种基于Xen的VCPU多核实时调度算法
EP3204853B1 (en) Efficient interruption routing for a multithreaded processor
US20180203722A1 (en) Method for reducing interrupt latency in embedded systems
JP2022509170A (ja) プロセッサにおける余裕認識(laxity-aware)型動的優先度変更
EP2833264B1 (en) Virtual computer schedule method
JP4523910B2 (ja) 並列処理装置及び並列処理方法及び並列処理プログラム
JP6540294B2 (ja) 制御装置、制御方法及びプログラム
US11281487B2 (en) Managing processor overcommit for virtual machines
US11210757B2 (en) GPU packet aggregation system
JP4009809B2 (ja) 情報処理装置および方法
WO2020235088A1 (ja) 制御装置および分散処理方法
US20220237009A1 (en) Communication apparatus, communication system, notification method, and computer program product
KR102407781B1 (ko) 플립 큐 관리에 기초한 그래픽스 컨텍스트 스케줄링
JP2010186347A (ja) ジョブスケジューリングシステム、ジョブスケジューリング方法及びプログラム
US20230236901A1 (en) Safe critical section operations for virtual machines with virtual central processing unit overcommit

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190205

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190404

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190514

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190527

R150 Certificate of patent or registration of utility model

Ref document number: 6540294

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150