(57)【要約】【課題】各タスクの依存関係による待ち時間やデータ転送待ち時間を短くすることによって、プロセッサ使用効率を向上させる。【解決手段】タスク配置手段２２は、タスクグラフ生成部２１によって作成されたタスクグラフ３１に基づいてスケジュールを行う。タスク配置手段２２は、各プロセッサの設計開始をトリガ発生器２２１によって設計開始されたプロセッサで実行指定されている各プロセッサの最優先度タスクが、配置済みならば順方向のタスクスケジュールを行い、未配置であるならば逆方向のタスクスケジュールを行うことによって、各プロセッサの先頭タスクと最終タスクとの間隔を短くする。さらに、タスク配置時には、バス使用情報３４に転送タスクの設定可能範囲を記述しておき、データ転送待ち時間が生じた場合には、タスク再配置手段２３によって配置済みタスクの再配置を行うことによって、データ転送待ち時間を短くする。【選択図】図１
2008176804.tif 000002
【特許請求の範囲】
【請求項１】
バスで接続された複数のプロセッサを備えるマルチプロセッサシステムにおいて複数のタスクのマルチタスク処理を行う場合に、実行プロセッサが指定されているタスクを含む複数のタスクの依存関係を示すタスクグラフに基づいて、前記各タスクのタスクスケジューリングを前記各タスクの実行前に行う静的なタスクスケジューリングシステムにおいて、
転送タスクの実行時刻と、該実行時刻を変化させても他の転送タスクの実行時刻が変化しない前記転送タスクの実行時刻の設定可能範囲とが登録されているバス使用情報と、
前記バス使用情報を参照して、複数の転送タスクの実行時刻が重複する場合には、前記設定可能範囲の中で前記各転送タスクの実行時刻を再配置するタスク再配置手段とを備えることを特徴とするタスクスケジューリングシステム。
【請求項２】
前記転送タスクと実行時刻が最も近い直接先行タスクの実行時刻と、前記転送タスクと実行時刻が最も近い直接後続タスクの実行時刻との間で、クリティカルパス値が等しい範囲を前記設定可能範囲とする請求項１記載のタスクスケジューリングシステム。
【請求項３】
バスで接続された複数のプロセッサを備えるマルチプロセッサシステムにおいて複数のタスクのマルチタスク処理を行う場合に、実行プロセッサが指定されているタスクを含む複数のタスクの依存関係を示すタスクグラフに基づいて、前記各タスクのタスクスケジューリングを前記各タスクの実行前に行う静的なタスクスケジューリング方法において、
転送タスクの実行時刻と、該実行時刻を変化させても他の転送タスクの実行時刻が変化しない前記転送タスクの実行時刻の設定可能範囲とをバス使用情報として登録する第１のステップと、
前記バス使用情報を参照して、複数の転送タスクの実行時刻が重複する場合には、前記設定可能範囲の中で前記各転送タスクの実行時刻を再配置する第２のステップとを有することを特徴とするタスクスケジューリング方法。
【請求項４】
前記転送タスクと実行時刻が最も近い直接先行タスクの実行時刻と、前記転送タスクと実行時刻が最も近い直接後続タスクの実行時刻との間で、クリティカルパス値が等しい範囲を前記設定可能範囲とする請求項３記載のタスクスケジューリング方法。
【請求項５】
バスで接続された複数のプロセッサを備えるマルチプロセッサシステムにおいて複数のタスクのマルチタスク処理を行う場合に、実行プロセッサが指定されているタスクを含む前記各タスクの依存関係を示すタスクグラフに基づいて、前記各タスクの静的なタスクスケジューリングをコンピュータに実行させるプログラムであって、
転送タスクの実行時刻と、該実行時刻を変化させても他の転送タスクの実行時刻が変化しない前記転送タスクの実行時刻の設定可能範囲とをバス使用情報として登録し、
前記バス使用情報を参照して、複数の転送タスクの実行時刻が重複する場合には、前記設定可能範囲の中で前記各転送タスクの実行時刻を再配置する処理をコンピュータに実行させるためのプログラム。
【請求項６】
前記転送タスクと実行時刻が最も近い直接先行タスクの実行時刻と、前記転送タスクと実行時刻が最も近い直接後続タスクの実行時刻との間で、クリティカルパス値が等しい範囲を前記設定可能範囲とする請求項５記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算処理装置（プロセッサ）を備えるマルチプロセッサシステムにおけるマルチタスク処理のタスクのスケジューリングをタスクの実行前に行う静的なタスクスケジューリングシステム、方法、プログラムに関する。
【背景技術】
【０００２】
複数の演算処理装置を備えるマルチタスクのマルチプロセッサシステムでは、各プロセッサで実行されるタスクのタスクスケジューリングを行って各タスクの実行時刻を決定してから、各タスクを実行している静的なタスクスケジューリングシステムが用いられることがある特許文献１には、静的なタスクスケジューリングを行うタスクスケジューリングシステムが記載されている。図１１は、そのタスクスケジューリングシステムの構成を示すブロック図である。図１１に示すように、従来のタスクスケジューリングシステムは、プロセッサ指定タスク待ち行列５１３と、実行可能タスク待ち行列５１２と、タスク登録手段５１１と、タスク選択手段５１４とから構成されている。
【０００３】
プロセッサ指定タスク待ち行列５１３には、プロセッサが指定されたタスクが登録される。実行可能タスク待ち行列５１２には実行可能タスクが登録される。タスク登録手段５１１は、実行プロセッサの指定の有無によって、プロセッサ指定タスク待ち行列５１３か実行可能タスク待ち行列５１２かに振り分けてタスクを登録する。タスク選択手段５１４は、実行可能タスク待ち行列５１２かプロセッサ指定タスク待ち行列５１３かのいずれか一方の待ち行列から最も優先度の高いタスクを選択する。
【０００４】
このタスクスケジューリングシステムは、各タスクのブロック構造や、真データ依存、反依存、出力依存などの依存関係を示すタスクグラフ６１に基づいて、タスクスケジューリングを行う。タスク登録手段５１１は、このタスクグラフ６１を参照し、実行可能なタスクのプロセッサの指定の有無を調べ、指定がある場合には、そのタスクをプロセッサ指定タスク待ち行列５１３に登録し、指定がない場合には、そのタスクを実行可能タスク待ち行列５１２に登録する。タスク選択手段５１４は、プロセッサ指定タスク待ち行列５１３にタスクが存在する場合には、その中から最も高い優先度を持つタスクを選択し、タスクが存在しない場合には、実行可能タスク待ち行列５１２中から最も高い優先度を有するタスクを選択することによってタスクスケジューリングを行う。
【０００５】
また、マルチプロセッサシステムでは、一般的に、各プロセッサ間がバスで接続されており、各タスクの中に、バスを使用してデータ転送を行うタスクがある場合には、各タスクのバスアクセスの調停を行なう必要がある。１９９６年に電気学会情報処理研究会から発行された資料ＩＰ−９６−２４、Ｓｅｐ．１９９６には、そのようなバスアクセス調停に関する論文「無同期近細粒度並列処理におけるデータ転送順序最適化」が掲載されている。この論文に掲載されたデータ転送に関するタスクスケジューリングでは、転送タスク毎に基本ブロック終端までの最長パス長に基づいたレベルを算出し、複数のデータ転送タスクが同時に発生した場合には、最もレベルの高いデータ転送タスクを優先してスケジューリングを行い、他のデータ転送タスクをバスが開放されるまで待機させる。
【特許文献１】特開平４−２５３２２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
以上述べたように、従来のタスクスケジューリングシステムおよび方法は、以下に示す問題を有する。
【０００７】
（１）優先度の高いタスクであっても、そのタスクがプロセッサを指定するタスクとの依存関係があるタスクである場合には、そのプロセッサを指定するタスクが終了するまで、そのタスクを実行することができない。したがって、そのようなタスクが多い場合には、プロセッサの使用効率が低くなってしまう。
【０００８】
（２）複数のデータ転送タスクが同時に発生した場合には、最もレベルの高いデータ転送タスクを優先するが、そのタスクのデータ転送待ち時間のために、プロセッサの使用効率が低くなってしまう場合がある。
【０００９】
本発明の目的は、プロセッサの使用効率を向上させることができるタスクスケジューリングシステムおよび方法を提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明のタスクスケジューリングシステムでは、バスで接続された複数のプロセッサを備えるマルチプロセッサシステムにおいて複数のタスクのマルチタスク処理を行う場合に、実行プロセッサが指定されているタスクを含む複数のタスクの依存関係を示すタスクグラフに基づいて、前記各タスクのタスクスケジューリングを前記各タスクの実行前に行う静的なタスクスケジューリングシステムにおいて、転送タスクの実行時刻と、該実行時刻を変化させても他の転送タスクの実行時刻が変化しない前記転送タスクの実行時刻の設定可能範囲とが登録されているバス使用情報と、前記バス使用情報を参照して、複数の転送タスクの実行時刻が重複する場合には、前記設定可能範囲の中で前記各転送タスクの実行時刻を再配置するタスク再配置手段とを備えることを特徴とする。
【発明の効果】
【００１１】
以上述べたように、本発明のタスクスケジューリングシステムは、以下に示す効果を有する。
【００１２】
（１）  各プロセッサの設計開始を決定するトリガ発生プロセスを設け、そのプロセスが実行されるまでそのプロセッサ指定のタスクを配置せず、各プロセッサの最優
先タスクの設計状況によって、順方向と逆方向のタスクスケジュールを適宜行うため、実行プロセッサが指定されているタスクの待ち状態を少なくして、プロセッサの
使用効率を向上させることができる。
【００１３】
（２）  転送タスクの配置可能時刻をバス使用情報に記憶しておき、データ転送タスクで待ち状態が生じる場合にはそのタスクの再配置を行って、データ転送待ち状態
を短くすることができるため、プロセッサの使用効率を向上させることができる。
【発明を実施するための最良の形態】
【００１４】
次に、本発明の実施形態のタスクスケジューリングシステムおよび方法を図面を参照して詳細に説明する。全図において、同一の符号がつけられている構成要素は、すべて同一のものを示す。
【００１５】
（第１の実施形態）
まず、本発明の第１の実施形態のタスクスケジューリングシステムおよび方法について図面を参照して詳細に説明する。図１は、本実施形態のタスクスケジューリングシステムが動作する環境の構成を示すブロック図である。図１に示すように、本実施形態のタスクスケジューリングシステム８は、３つのプロセッサＰＥ１〜ＰＥ３から成るマルチプロセッサシステム１００のタスクスケジューリングを行うためのシステムである。マルチプロセッサシステム１００は、プロセッサの数が３つで、バスの本数が１本となっているが、本発明はこれらの数を限定するものではない。ＰＥ１〜３は、バス１５を介して互いに接続されている。各プロセッサ間や、プロセッサと他の機器との間のデータ転送は、バス１５を介して行われる。タスクスケジューリングシステム８は、タスク入力手段１からスケジューリング対象のタスクの集合を入力し、スケジューリングされた各タスクの実行時刻を実行時刻出力手段４に出力する。
【００１６】
また、タスクスケジューリングシステム８では、タスクスケジューリングの結果をＰＥ１〜ＰＥ３に送信する必要があるため、タスクスケジューリングシステム８とＰＥ１〜ＰＥ３との間は、データ通信が可能となっている。タスクスケジューリングシステム８とＰＥ１〜ＰＥ３とは、バス結合によって接続されていてもよいし、ＬＡＮ等の通信回線によって接続されていてもよい。したがって、このタスクスケジューリングシステム８は、パーソナルコンピュータ（以下、ＰＣ）によっても実現することができる。タスクスケジューリングシステム８がＰＣである場合には、各タスクのプログラムファイルを記憶するディスクを読み取るディスク読み取り装置等がタスク入力手段１となり、そのＰＣのディスプレイや印刷装置などが実行時刻出力手段４となる。
【００１７】
図２は、本実施形態のタスクスケジューリングシステム８の構成を示すブロック図である。図２に示すように、タスクスケジューリングシステム８は、データ処理部２とデータ記憶部３とから構成される。データ処理部２は、プログラム制御により動作し、例えば、タスクスケジューリングシステム８が前述のようにＰＣである場合には、ＰＣのＣＰＵがそのプログラムを実行することによって動作する。この場合、データ記憶部３は、ＰＣの磁気ディスク装置等となる。
【００１８】
データ処理部２は、タスクグラフ生成部２１と、タスク配置手段２２とを備えている。また、データ記憶部３は、タスクグラフ記憶部３１と、タスク配置リスト記憶部３２と、バス使用情報記憶部３３とを有している。
【００１９】
タスクグラフ生成部２１は、タスク入力手段１から入力された各タスクのブロック構造や、真データ依存、反依存、出力依存などのタスク間の依存関係を調べ、その依存関係に基づいてタスクグラフを作成する。タスクグラフ生成部２１によって生成されたタスクグラフは、タスクグラフ記憶部３１に記憶される。このタスクグラフの一例を図３に示す。図３に示すように、グラフの節は各タスクＡ〜Ｐを示す。グラフの各辺の終点に位置するタスクは、その辺の始点に位置する全てのタスクの設計が終了しなければ実行することができない。なお、各節の（）内は、そのタスクの実行プロセッサの指定を示す。
【００２０】
バス使用情報とは、図１に示すマルチプロセッサシステム１のバス１５の使用状況を示す情報である。プロセッサＰＥ１〜ＰＥ３は、実行するタスクが転送タスクであった場合には、バス１５を介してデータ転送を行う。通常、マルチプロセッサシステムでは、複数の機器が同時に１本のバスを使用することはできないため、転送タスクのスケジューリングを行う際に、このバス１５の使用状況を把握しておく必要がある。バス使用情報は、転送タスクをスケジューリングする際の有益な情報となる。
【００２１】
タスク配置リスト記憶部３２は、配置済みのタスクの実行時刻や、実行プロセッサ情報などのタスクのスケジューリング結果、すなわちタスク配置リストを記憶しておくためのものである。タスク配置手段２２は、タスクグラフ記憶部３１に記録されたタスクグラフと、バス使用情報記憶部３３に記憶されたバス使用情報とに基づいて各タスクの実行時刻を決定し、その実行時刻に基づいてタスク配置リストを作成してタスク配置リスト記憶部３２に記憶するとともに、各タスクの実行時刻の決定によって更新されたバスの使用状況をバス使用情報記憶部３３のバス使用情報に反映させる。タスク配置手段２２は、トリガ発生器２２１と、タスク登録手段２２２と、順方向リスト２２３と、逆方向リスト２２４と、タスク選択手段２２５とを備えている。トリガ発生器２２１は、設計対象となるプロセッサを決定する。
【００２２】
タスク登録手段２２２は、順方向リスト２２３と逆方向リスト２２４とに、タスクを登録する。順方向リスト２２３は、優先度の高い順に各タスクが記述されたリストであり、逆方向リスト２２４は、優先度の低い順に各タスクが記述されたリストである。タスク選択手段２２５は、順方向リスト２２３か、逆方向リスト２２４かのいずれか一方を選択し、選択されたリストに記述される順に、スケジュール対象となったタスクの実行時刻を決定する。
【００２３】
次に、本実施形態のタスクスケジューリングシステムの動作について説明する。図４は、本実施形態のタスクスケジューリングシステムの動作を示すフローチャートである。まず、タスク入力手段１からタスク集合が供給されると、タスクグラフ生成部２１は、前述のように、タスクグラフを生成してタスクグラフ記憶部３１に記憶するとともに、各タスクの優先度を計算し、タスクグラフ記憶部３１に記憶しておく（ステップＡ１）。各タスクの優先度は、順方向の優先度と、逆方向の優先度との両方を計算しておく。また、各タスクの優先度は、以下のようにして算出される。
【００２４】
まず、各タスクの順方向の優先度については、各タスクから終端のタスクに至るまでのパス長が長いタスクに高い優先度が与えられる。パス長が同じタスクが存在する場合には、直接の後続タスク数の多いタスクが優先される。さらに、各タスクの逆方向の優先度については、終端のタスクから各タスクに至るまでのパス長が長いタスクに高い優先度が与えられる。パス長の同じタスクが存在する場合には、直接の先行タスク数の少ないタスクが優先される。
【００２５】
ステップＡ１終了後、タスク配置手段２２では、まずトリガ発生器２２１が動作する。トリガ発生器２２１は、タスクグラフ記憶部３１に記憶されているタスクグラフに基づいて、設計対象に含めるプロセッサを決定する（ステップＡ２）。ステップＡ２において、トリガ発生器２２１は、まず、使用するプロセッサのうち、いずれのタスクにも指定されていないプロセッサを設計対象に含める。トリガ発生器２２１は、未設計のタスクがプロセッサを指定するタスクのみであって、指定されているプロセッサが設計対象に含まれていない場合には、未設計のタスクのうち、順方向の優先度が最も高いタスクが割り当てられているプロセッサを設計対象に含める。また、トリガ発生器２２１は、設計対象プロセッサに指定されているタスクと、設計対象になっていないプロセッサに指定されているタスクとの間にデータ転送が生じたときには、その設計対象になっていないプロセッサを設計対象に含める。
【００２６】
ステップＡ２終了後、タスク配置手段２２は、設計対象となっているプロセッサを対象にし、そのプロセッサが指定されているタスクで順方向の優先度が最も高いタスクが配置済みであるか否かを判断する（ステップＡ３）。ステップＡ３において、設計対象になっている全てのプロセッサで順方向の優先度が最も高いタスクが配置済みである場合には、タスク登録手段２２２によって順方向リスト２２３を作成し（ステップＡ４）、タスク選択手段２２５によって順方向のスケジュールを行って、そのタスクの実行時刻をタスク配置リスト３２に登録する（ステップＡ５）。
【００２７】
ステップＡ４、Ａ５では、タスク登録手段２２２によって、先行タスクのスケジューリングが終了していてスケジューリングの対象、すなわち実行可能になっているタスクを算出し、順方向リスト２２３を作成する。ただし、設計対象となっていないプロセッサで実行が指定されているタスクからの先行タスクは未設計であってもよい。タスク配置手段２２では、このリストにおいて順方向の優先度が最も高いタスクを取りだし、実行可能な時刻の最も早い時刻にタスク配置を行い、その結果をタスク選択手段２２５によって、タスク配置リスト３２に登録する。また、タスク選択手段２２５は、実行時刻を決定したタスクが、バス１５を使用する場合には、バス使用情報記憶部３３に記憶されるバス使用情報を参照してバス１５を使用する時刻をチェックしておく。
【００２８】
ステップＡ３において、設計対象になっている全てのプロセッサで順方向の優先度が最も高いタスクが配置済みでない場合には、タスク登録手段２２２によって逆方向リスト２２４を作成し（ステップＡ６）、タスク選択手段２２５によって逆方向のスケジュールを行い、そのタスクの実行時刻をタスク配置リスト３２に登録する（ステップＡ７）。
【００２９】
ステップＡ６、Ａ７、すなわち逆方向のタスクスケジューリング処理では、タスク登録手段２２２によって後続タスクの配置が終了していて、まだ設計されていないタスクについて逆方向リスト２２４を作成する。ただし、設計対象となっていないプロセッサに実行が指定されているタスクの後続タスクは未設計であってもよい。また、そのプロセッサで、設計を開始するきっかけとなったタスクより逆方向の優先度の低いタスクからの後続タスクは未設計でもよいものとする。
【００３０】
図１のタスク配置手段２２では、このリストにおいて逆方向の優先度が最も低いタスクを取りだし、実行可能な時刻のうち、最も遅い時刻にタスクの実行時刻としてスケジューリングし、タスク選択手段２２５によってそのスケジューリング結果をタスク配置リスト３２に登録する。また、このとき実行時刻を決定したタスクがバス１５を使用する場合には、バス使用情報記憶部３３に記憶されているバス使用情報を参照してバス１５を使用する時刻をチェックしておく。
【００３１】
ステップＡ４、Ａ５、ステップＡ６、Ａ７の処理、すなわちタスクスケジュール操作を行って、あるタスクの配置を終えると、タスク配置手段２２は、全てのタスクのスケジューリングが終了したか否かを調べる（ステップＡ８）。まだ、スケジューリングされていないタスクが存在する場合には、先ほどのタスク配置で、新たに設計対象に含まれるプロセッサが存在しないか調べるために、トリガ発生プロセス（ステップＡ２）に戻る。ステップＡ８において、全てのタスクのスケジューリングが終了していたと判断した場合には、スケジューリング結果を実行時刻出力手段４に出力して処理を終了する。
【００３２】
本実施形態のタスクスケジューリングシステムでは、トリガ発生プロセスを設けて、プロセッサが設計対象に含まれてから各タスクを配置し、スケジュール状況に応じて順方向と逆方向のスケジュールを適宜行っていくため、各プロセッサの使用効率を向上させることができる。
【００３３】
次に、図３のタスクグラフによって依存関係が示される各タスク集合のタスクスケジューリングを行った場合の本実施形態のタスクスケジューリングシステム動作について説明する。このタスクグラフでは、プロセッサＰＥ１〜ＰＥ３が指定されており、いずれのタスクにも指定されていないプロセッサは存在しないため、図３のステップＡ２の処理に示すように、トリガ発生器２２１は、順方向の優先度が最も高いタスクＡに割り当てられているＰＥ１を設計対象に含める。そして、ステップＡ４、Ａ５の処理によって、タスクＡからタスクＦまで順方向のタスクスケジューリングが行われる。
【００３４】
順方向のタスクスケジューリングでは、各タスクＡ〜Ｆの実行時刻は、最高優先度を有するタスクＡの配置時刻よりも後の時刻であって、指定プロセッサの空いている最も早い時刻とする。タスクがバス１５を使用する転送タスクである場合には、その転送タスクがバスを使用する時刻をバス使用情報に反映させる。また、そのタスクが、設計対象に含まれていないプロセッサを指定するタスクにデータ転送を行うタスクである場合には、その設計対象になっていないプロセッサを設計対象に含める。例えば、タスクＦは、ＰＥ２を指定するタスクＩに対してデータ転送を行うタスクであるため、本実施形態のタスクスケジューリングシステムは、ＰＥ２を設計対象のプロセッサに含める。これ以後、ＰＥ２を指定するタスクもスケジューリング対象に含まれるようになる。
【００３５】
次に、本実施形態のタスクスケジューリングシステムは、ＰＥ２が設計対象に含まれるきっかけとなったタスクＩの設計を行うが、ＰＥ２が指定されている順方向の優先度が高いタスクＧが配置済みでないため、以後、タスクＩよりも優先度が高いタスクを対象にして、ステップＡ６、Ａ７の処理によって、優先度の低いタスクから順に逆方向にタスクスケジューリングを行う。
【００３６】
この逆方向のタスクスケジュールでは、設計対象となっているプロセッサが指定されている後続タスクや、プロセッサの指定されていない後続タスクの設計が終了しているタスクのうち、逆方向の優先度が最も低いタスクを選択する。ただし、プロセッサが設計対象に含まれる原因となったタスク（例えば、タスクＩ）より低いＣＰ（クリティカルパス）値を有する後続タスクは、前述の後続タスクには含めない。タスクの配置時刻は、タスク配置リストとバス使用情報とを参照して、プロセッサが設計対象に含まれる原因となったタスクの配置時刻より前の時刻、すなわち配置可能な時刻のうち、最も遅い時刻とする。図３のタスクグラフでは、タスクＩ設計後の逆方向の優先度が最も低いタスクは、タスクＪであるとすると、タスク選択手段２２５は、タスクＪをタスクＩの直前に配置する。
【００３７】
タスクＧが設計されると、設計対象となっているプロセッサ（ＰＥ１、ＰＥ２）の順方向の最高優先度タスクが設計された状態となるため、本実施形態のタスクスケジューリングシステムでは、再び順方向のタスクスケジュールを行う。タスクＬの設計後には、トリガ発生器２２１によりＰＥ３が設計対象に含まれるようになり、逆方向のタスクスケジュールが開始される。タスクＭが設計されると、今度は再び、順方向のタスクスケジュールが行われるようになる。
【００３８】
本実施形態のタスクスケジューリングシステムのスケジュール結果を図５に示す。図５（ａ）は、本実施形態のタスクスケジューリングシステムのスケジューリング結果を示し、図５（ｂ）は、従来のタスクスケジューリングシステムのスケジューリング結果を示す。図５に示すように、各プロセッサでは、先頭タスクが実行される時間と最後のタスクが実行される時間との間には、タスクが実行されていない時間がないのがわかる。
【００３９】
また、本実施形態のタスクスケジューリングシステムでは、タスク選択手段２２５は、バス１５を用いてデータを転送する転送タスクについては、バス使用情報記憶部３３に記憶されたバス使用情報を参照して、タスクの実行時刻を決定する。まず、プロセッサＰＥ１を指定する各タスクのタスク配置リストが、図６（ａ）に示すようになっており、その時のバス使用情報が図６（ｂ）に示すようになっているとして、転送タスクであるタスク４をスケジューリングする場合を考える。タスク４を時刻４に配置することを決定した後、タスク選択手段２２５は、タスク４を時刻４に配置した場合に、バスの使用が先に配置された他のタスクと衝突するか否かをチェックする。図６（ｂ）に示すように、時刻４においては、タスクＢがバスを使用するため、タスク４を時刻４に配置することができない。そこで、本実施形態のタスクスケジューリングシステムでは、時刻４以降の時刻のうち、バス１５が他のタスクに使用されていない時刻である時刻６にタスク４を配置する。
【００４０】
本実施形態のタスクスケジューリングシステムを用いることによって、各プロセッサの使用効率が上がると、タスクの処理コストが低減され、周期タスクの高速処理が可能となる。図３のタスクグラフに示される各タスクの周期処理を行う場合、従来のタスクスケジューリングシステムでは、図５（ｂ）に示すように、先頭タスクを実行してから最終タスクを実行するまでの間に、各プロセッサにおいて、タスクを実行していない時間が存在する。そのため、例えばプロセッサＰＥ３では、全タスクを実行するのに１１サイクルを要する。これに対し、本実施形態のタスクスケジューリングシステムでは、図５（ａ）に示すように、各プロセッサ毎の実行時間は６サイクルとなる。プロセッサの使用効率を、各プロセッサにおける先頭タスクの開始時刻から最後のタスクの終了時刻までの時間に対する、プロセッサが実際にタスクを実行している時間の割合であるとすると、図５（ｂ）の従来のタスクスケジューリングシステムでは、プロセッサの使用効率は６２％であるのに対し、図５（ａ）の本実施形態のタスクスケジューリングシステムでは、プロセッサの使用効率は１００％となる。
【００４１】
（第２の実施形態）
次に、本発明の第２の実施形態のタスクスケジューリングシステムについて図面を参照して説明する。図７は、本実施形態のタスクスケジューリングシステムの構成を示すブロック図である。図７に示すように、本実施形態のタスクスケジューリングシステム９は、データ処理部２の代わりに、データ処理部５を備えている点が、図２のタスクスケジューリングシステム８と異なっている。データ処理部５は、タスクグラフ生成部２１と、タスク配置手段２４と、タスク再配置手段２３とを備えている。タスク配置手段２４は、図２のタスク配置手段２２と同様に、タスクグラフ記憶部３１に記憶されたタスクグラフに基づいて各タスクの実行時刻を決定してタスクスケジューリングを行い、それらのスケジューリング結果をタスク配置リストとしてタスク配置リスト記憶部３２に記憶し、そのスケジューリング結果に合わせてバス使用情報記憶部３４のバス使用情報を更新する。タスク再配置手段２３は、タスク配置リスト記憶部３２に記憶されたタスク配置リスト上のタスクの再配置を行う。
【００４２】
また、データ記憶部６は、タスクグラフ記憶部３１と、タスク配置リスト記憶部３２と、バス使用情報記憶部３４とを備えている。バス使用情報記憶部３４は、図２のバス使用情報記憶部３３と同様に、転送タスクがバスを使用可能な時刻を記憶する。タスク配置手段２４は、前述のタスクスケジューリングを行ってバス使用情報を更新する際には、そのタスクがバス１５の使用が可能な配置可能時刻をすべて記憶しておく。配置可能時刻とは、そのタスクの先行タスクのうち、そのタスクと配置時刻が最も近い先行タスクが配置された時刻と、そのタスクの後続タスクのうち、そのタスクともっとも配置時刻が近い後続タスクが配置された時刻との間の時間であって、そのタスクが指定するプロセッサを指定する各タスクの中でクリティカルパス値が等しい設定可能範囲の中の時刻とする。したがって、タスクの配置可能時刻を設定するためには、そのタスクの全ての先行タスクおよび後続タスクの配置時刻が決定されている必要がある。
【００４３】
図８は、本実施形態のタスクスケジューリングシステムにおける配置可能時刻を示す図である。タスクグラフが図８（ａ）のようになっているとすると、タスクＢは、タスクＡとタスクＤとの実行時刻の間に配置可能である。したがって、図８（ｂ）に示すように、タスクＢの配置可能時刻は時刻２、３となり、図８（ｃ）、（ｄ）に示すように、タスクＢとタスクＣとは、クリティカルパス値が同じであるため、その実行時刻を入れ替え可能となる。
【００４４】
タスク再配置手段２３は、タスク配置手段２４によって転送タスクが配置されると、そのタスクのデータ転送待ち時間を調べる。本実施形態のタスクスケジューリングシステムでは、順方向のスケジュール時にバス１５が使用できないためにプロセッサが空いているのに転送タスクを早い時刻に配置できない場合や、逆方向のスケジュール時にバスが使用できないためにプロセッサが空いているのに転送タスクを遅い時刻に配置できない場合には、データ転送待ちが生じる状態であると判定する。データ転送待ち時間が生じる場合には、タスク再配置手段２３は、タスク再配置処理を試みる。
【００４５】
タスク再配置手段２３は、転送タスクを転送待ち時間が生じない時刻に仮配置する。仮配置を行う時刻は、順方向のスケジュールではプロセッサ空きが生じない最も早い時刻とし、逆方向のスケジュールではプロセッサ空きが生じない最も遅い時刻とする。
【００４６】
次に、タスク再配置手段２３は、バス使用情報を参照して仮配置を行ったタスクとバス衝突を生じるタスクを探し出し、その転送タスクの動かせる範囲を調べる。バス衝突相手の転送タスク全ての動かせる範囲が、動かした先でバス衝突を起こさない場合には、バス衝突相手の転送タスクの実行時刻を動かした先の命令と入れかえ、仮配置を行っていた転送タスクの実行時刻をその時刻に確定する。バス衝突相手の転送タスクを他の時間に移動させることができない場合には、転送タスクの仮配置時刻を１サイクルずらす。ずらす時刻は、順方向スケジュールでは、初め仮配置を行っていた時刻より１サイクル遅い時刻とし、逆方向のスケジュールでは、初め仮配置を行っていた時刻より１サイクル早い時刻とする。
【００４７】
タスク再配置手段２３は、転送タスクの再配置が終了すると、仮配置を行っていたタスクの実行時刻と、それとバス衝突を起こす転送タスクの再配置時刻と、再配置した転送タスクと実行時刻を入れ替えたタスクの実行時刻とをタスク配置リスト記憶部３２に記憶するタスク配置リストに反映させ、さらに再配置後の転送タスクのバス使用時刻をバス使用情報記憶部３２に記憶するバス使用情報に反映させる。図９は、本実施形態のタスクスケジューリングシステムにおけるタスク再配置手段２３の動作を示すフローチャートである。図９に示すように、まず、タスク再配置手段２３は、タスク配置手段２４によって作成されタスク配置リスト記憶部３２に記憶されたタスク配置リストを参照し、各タスクのうち、バス１５を使用する転送タスクについて、転送待ち時間が生じているか否かを判断する（ステップＣ１）。転送待ち時間が生じている場合には、タスク再配置手段２３は、その転送タスクを転送待ちが生じない時刻に仮配置する（ステップＣ２）。ステップＣ２後、タスク再配置手段２３は、バス使用情報記憶部３４に記憶されているバス使用情報を参照して、ステップＣ２において仮配置を行ったタスクとバス衝突を生じるタスクがあるかどうか検出し、そのタスクがあれば、そのタスクの配置可能時刻を参照して、そのタスクが再配置可能であるか否かを検出する（ステップＣ３）。ステップＣ３において、バス衝突を生じるタスクが再配置可能でない場合には、仮配置したタスクをまた別の時刻に仮配置し（ステップＣ４）、ステップＣ３に戻る。
【００４８】
ステップＣ３において、バス衝突を生じるタスクが再配置可能であった場合には、そのタスクの再配置を行い、ステップＣ２において行った仮配置を確定し（ステップＣ５）、処理を終了する。本実施形態のタスクスケジューリングシステムでは、タスク再配置手段２３による再配置終了後、全てのタスクの配置が完了していない場合には、再び、タスク配置手段２４によるタスクのスケジューリングを行う。
【００４９】
図１０は、本実施形態のタスクスケジューリングシステムにおいてバス使用情報記憶部３４に記憶されるバス使用情報の一例を示す図である。転送タスクは、現在、図１０（ａ）のように配置されており、バス使用情報は、図１０（ｂ）のようになっているとする。本実施形態のタスクスケジューリングシステムでは、転送タスクの配置でデータ転送待ち状態が生じた場合には、タスクの再配置を試みるが、図１０では、タスク再配置手段２３が、タスク４を時刻４（４ｃｌｋ）に仮配置する場合を示している。タスク再配置手段２３は、バス使用情報記憶部３４に記憶されているバス使用情報を参照して、仮配置を行ったタスクとバス衝突を生じるタスクを検出し、その転送タスクの配置時刻の移動可能範囲、すなわち配置可能時刻を調べる。図１０では、タスクＢがバス衝突相手となっており、タスクＢの配置可能時刻は、時刻３と時刻４となっている。したがって、本実施形態のタスクスケジューリングシステムでは、タスクＢは時刻３にも配置可能なため、タスクＢの配置時刻を時刻４から時刻３に入れ替える。この入れ替えにより、タスクＢはバス１５を時刻３で使用することとなり、タスク４が時刻４にバス１５を使用することが可能となる。しかし、タスクＢの配置可能時刻が時刻４以外に存在しなかった場合には、タスク再配置手段２３は、タスク４の仮配置時刻を時刻５とし、時刻５で上述した処理を行う。タスク再配置手段２３は、バス衝突が生じなくなるまで、この動作を繰り返す。
【００５０】
タスク再配置手段２３は、タスクの配置が可能になった時点で、転送タスクの設計を行い、仮配置を行っていた転送タスクの実行時刻と、再配置されたタスクの実行時刻と、再配置したタスクと実行順序を入れ替えたタスクの実行時刻とを、タスク配置リスト記憶部３２に記憶されているタスク配置リストに反映する。さらに、タスク再配置手段２３は、再配置後の転送タスクのバス使用時刻をバス使用情報記憶部３４に記憶されているバス使用情報に反映させる。上述のような、タスク入れ替えを行うことによって、時刻６に配置されていたタスク４を時刻４に配置することが可能となり、データ転送待ち時間を短くすることができる。
【００５１】
また、バス衝突相手のタスクの配置可能時刻が他になかった場合でも、初めに配置していた時刻にタスクを配置することが可能である。このため、本実施形態のタスクスケジューリングシステムでは、タスクのデータ転送待ち時間を、第１の実施形態のタスクスケジューリングシステムと同じか、それよりも短くすることが可能となる。
【００５２】
以上述べたように、本実施形態のタスクスケジューリングシステムでは、データ転送タスクを配置したときに、転送待ち時間が生じた場合には、そのタスクの再配置を行うことによって、転送待ち時間を低減することができる。
【００５３】
なお、タスクスケジューリングシステム８、９は、前述のように、コンピュータのメモリおよびＣＰＵ（中央演算装置）によって構成され、上記の各部の機能を実現するためのプログラムをメモリにロードして実行することによりその機能を実現させるものであってもよい。このプログラムは、磁気ディスク、半導体メモリ、ＣＤ−ＲＯＭや、その他のコンピュータ読み取り可能な記録媒体に記録されているものであってもよい。
【００５４】
また、本実施形態のタスクスケジューリングシステムでは、各タスクの優先度を、クリティカルパス値と、先行タスク数（順方向リスト作成時）、後続タスク数（逆方向リスト作成時）を基準として求めた。しかし、本発明は、これに限定されるものではなく、順方向リスト作成時と、逆方向リスト作成時とで、まったく同じ条件でタスクの優先度を求めてもよいし、ＣＰ法、ＣＰ／ＭＩＳＦ法、ＣＰ／ＤＴ／ＭＩＳＦ法など、他の方法を用いてタスクの優先度を求めてもよい。
【図面の簡単な説明】
【００５５】
【図１】本発明の第１の実施形態のタスクスケジューリングシステムが動作する環境の構成を示すブロック図である。
【図２】本発明の第１の実施形態のタスクスケジューリングシステムの構成を示すブロック図である。
【図３】タスクグラフの一例を示す図である。
【図４】本発明の第１の実施形態のタスクスケジューリングシステムの動作を示すフローチャートである。
【図５】本発明の第１の実施形態のタスクスケジューリングシステムのスケジュール結果を示す図である。
【図６】本発明の第１の実施形態のタスクスケジューリングシステムにおけるタスク配置リストとバス使用情報とを示す図である。
【図７】本発明の第２の実施形態のタスクスケジューリングシステムの構成を示すブロック図である。
【図８】本発明の第２の実施形態のタスクスケジューリングシステムにおける配置可能時刻を示す図である。
【図９】本発明の第２の実施形態のタスクスケジューリングシステムにおけるタスク再配置手段の動作を示すフローチャートである。
【図１０】本発明の第２の実施形態のタスクスケジューリングシステムにおいてバス使用情報記憶部に記憶されるバス使用情報の一例を示す図である。
【図１１】従来のタスクスケジューリングシステムの構成を示す図である。
【符号の説明】
【００５６】
１  タスク入力手段
２、５  データ処理部
３、６  データ記憶部
４  実行時刻出力手段
８、９  タスクスケジューリングシステム
１５  バス
２１ タスクグラフ生成部
２２、２４、５１  タスク配置手段
２３  タスク再配置手段
３１  タスクグラフ記憶部
３２  タスク配置リスト記憶部
３３、３４  バス使用情報記憶部
６１  タスクグラフ
６２  タスク配置リスト
６３  バス使用情報
１００  マルチプロセッサシステム
２２１  トリガ発生器
２２２  タスク登録手段
２２３  順方向リスト
２２４  逆方向リスト
２２５  タスク選択手段
５１１  タスク登録手段
５１２  実行可能タスク待ち行列
５１３  プロセッサ指定タスク待ち行列
５１４  タスク選択手段
Ａ１〜Ａ８、Ｃ１〜Ｃ５  ステップ
【図１】
2008176804.tif 000003
【図２】
2008176804.tif 000004
【図３】
2008176804.tif 000005
【図４】
2008176804.tif 000006
【図５】
2008176804.tif 000007
【図６】
2008176804.tif 000008
【図７】
2008176804.tif 000009
【図８】
2008176804.tif 000010
【図９】
2008176804.tif 000011
【図１０】
2008176804.tif 000012
【図１１】
2008176804.tif 000013