JP4404228B2 - タスクスケジューリングシステム、方法、およびプログラム - Google Patents

タスクスケジューリングシステム、方法、およびプログラム Download PDF

Info

Publication number
JP4404228B2
JP4404228B2 JP2008036509A JP2008036509A JP4404228B2 JP 4404228 B2 JP4404228 B2 JP 4404228B2 JP 2008036509 A JP2008036509 A JP 2008036509A JP 2008036509 A JP2008036509 A JP 2008036509A JP 4404228 B2 JP4404228 B2 JP 4404228B2
Authority
JP
Japan
Prior art keywords
task
transfer
execution
time
tasks
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.)
Expired - Fee Related
Application number
JP2008036509A
Other languages
English (en)
Other versions
JP2008176804A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2008036509A priority Critical patent/JP4404228B2/ja
Publication of JP2008176804A publication Critical patent/JP2008176804A/ja
Application granted granted Critical
Publication of JP4404228B2 publication Critical patent/JP4404228B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Bus Control (AREA)

Description

本発明は、複数の演算処理装置(プロセッサ)を備えるマルチプロセッサシステムにおけるマルチタスク処理のタスクのスケジューリングをタスクの実行前に行う静的なタスクスケジューリングシステム、方法、プログラムに関する。
複数の演算処理装置を備えるマルチタスクのマルチプロセッサシステムでは、各プロセッサで実行されるタスクのタスクスケジューリングを行って各タスクの実行時刻を決定してから、各タスクを実行している静的なタスクスケジューリングシステムが用いられることがある特許文献1には、静的なタスクスケジューリングを行うタスクスケジューリングシステムが記載されている。図11は、そのタスクスケジューリングシステムの構成を示すブロック図である。図11に示すように、従来のタスクスケジューリングシステムは、プロセッサ指定タスク待ち行列513と、実行可能タスク待ち行列512と、タスク登録手段511と、タスク選択手段514とから構成されている。
プロセッサ指定タスク待ち行列513には、プロセッサが指定されたタスクが登録される。実行可能タスク待ち行列512には実行可能タスクが登録される。タスク登録手段511は、実行プロセッサの指定の有無によって、プロセッサ指定タスク待ち行列513か実行可能タスク待ち行列512かに振り分けてタスクを登録する。タスク選択手段514は、実行可能タスク待ち行列512かプロセッサ指定タスク待ち行列513かのいずれか一方の待ち行列から最も優先度の高いタスクを選択する。
このタスクスケジューリングシステムは、各タスクのブロック構造や、真データ依存、反依存、出力依存などの依存関係を示すタスクグラフ61に基づいて、タスクスケジューリングを行う。タスク登録手段511は、このタスクグラフ61を参照し、実行可能なタスクのプロセッサの指定の有無を調べ、指定がある場合には、そのタスクをプロセッサ指定タスク待ち行列513に登録し、指定がない場合には、そのタスクを実行可能タスク待ち行列512に登録する。タスク選択手段514は、プロセッサ指定タスク待ち行列513にタスクが存在する場合には、その中から最も高い優先度を持つタスクを選択し、タスクが存在しない場合には、実行可能タスク待ち行列512中から最も高い優先度を有するタスクを選択することによってタスクスケジューリングを行う。
また、マルチプロセッサシステムでは、一般的に、各プロセッサ間がバスで接続されており、各タスクの中に、バスを使用してデータ転送を行うタスクがある場合には、各タスクのバスアクセスの調停を行なう必要がある。1996年に電気学会情報処理研究会から発行された資料IP−96−24、Sep.1996には、そのようなバスアクセス調停に関する論文「無同期近細粒度並列処理におけるデータ転送順序最適化」が掲載されている。この論文に掲載されたデータ転送に関するタスクスケジューリングでは、転送タスク毎に基本ブロック終端までの最長パス長に基づいたレベルを算出し、複数のデータ転送タスクが同時に発生した場合には、最もレベルの高いデータ転送タスクを優先してスケジューリングを行い、他のデータ転送タスクをバスが開放されるまで待機させる。
特開平4−253228号公報
以上述べたように、従来のタスクスケジューリングシステムおよび方法は、以下に示す問題を有する。
(1)優先度の高いタスクであっても、そのタスクがプロセッサを指定するタスクとの依存関係があるタスクである場合には、そのプロセッサを指定するタスクが終了するまで、そのタスクを実行することができない。したがって、そのようなタスクが多い場合には、プロセッサの使用効率が低くなってしまう。
(2)複数のデータ転送タスクが同時に発生した場合には、最もレベルの高いデータ転送タスクを優先するが、そのタスクのデータ転送待ち時間のために、プロセッサの使用効率が低くなってしまう場合がある。
本発明の目的は、プロセッサの使用効率を向上させることができるタスクスケジューリングシステムおよび方法を提供することにある。
上記目的を達成するために、本発明のタスクスケジューリングシステムでは、バスで接続された複数のプロセッサを備えるマルチプロセッサシステムにおいて複数のタスクのマルチタスク処理を行う場合に、実行プロセッサが指定されているタスクを含む複数のタスクの依存関係を示すタスクグラフに基づいて、前記各タスクのタスクスケジューリングを前記各タスクの実行前に行う静的なタスクスケジューリングシステムにおいて、転送タスクと実行時刻が最も近い直接先行タスクの実行時刻と、前記転送タスクと実行時刻が最も近い直接後続タスクの実行時刻との間で、クリティカルパス値が等しい範囲を前記転送タスクの実行時刻の設定可能範囲とし、前記転送タスクの実行時刻と、前記転送タスクの実行時刻の設定可能範囲とが登録されているバス使用情報と、前記バス使用情報を参照して、複数の転送タスクの実行時刻が重複する場合には、前記設定可能範囲の中で前記各転送タスクの実行時刻を再配置するタスク再配置手段とを備えることを特徴とする。
以上述べたように、本発明のタスクスケジューリングシステムは、以下に示す効果を有する。
(1) 各プロセッサの設計開始を決定するトリガ発生プロセスを設け、そのプロセスが実行されるまでそのプロセッサ指定のタスクを配置せず、各プロセッサの最優
先タスクの設計状況によって、順方向と逆方向のタスクスケジュールを適宜行うため、実行プロセッサが指定されているタスクの待ち状態を少なくして、プロセッサの
使用効率を向上させることができる。
(2) 転送タスクの配置可能時刻をバス使用情報に記憶しておき、データ転送タスクで待ち状態が生じる場合にはそのタスクの再配置を行って、データ転送待ち状態
を短くすることができるため、プロセッサの使用効率を向上させることができる。
次に、本発明の実施形態のタスクスケジューリングシステムおよび方法を図面を参照して詳細に説明する。全図において、同一の符号がつけられている構成要素は、すべて同一のものを示す。
(第1の実施形態)
まず、本発明の第1の実施形態のタスクスケジューリングシステムおよび方法について図面を参照して詳細に説明する。図1は、本実施形態のタスクスケジューリングシステムが動作する環境の構成を示すブロック図である。図1に示すように、本実施形態のタスクスケジューリングシステム8は、3つのプロセッサPE1〜PE3から成るマルチプロセッサシステム100のタスクスケジューリングを行うためのシステムである。マルチプロセッサシステム100は、プロセッサの数が3つで、バスの本数が1本となっているが、本発明はこれらの数を限定するものではない。PE1〜3は、バス15を介して互いに接続されている。各プロセッサ間や、プロセッサと他の機器との間のデータ転送は、バス15を介して行われる。タスクスケジューリングシステム8は、タスク入力手段1からスケジューリング対象のタスクの集合を入力し、スケジューリングされた各タスクの実行時刻を実行時刻出力手段4に出力する。
また、タスクスケジューリングシステム8では、タスクスケジューリングの結果をPE1〜PE3に送信する必要があるため、タスクスケジューリングシステム8とPE1〜PE3との間は、データ通信が可能となっている。タスクスケジューリングシステム8とPE1〜PE3とは、バス結合によって接続されていてもよいし、LAN等の通信回線によって接続されていてもよい。したがって、このタスクスケジューリングシステム8は、パーソナルコンピュータ(以下、PC)によっても実現することができる。タスクスケジューリングシステム8がPCである場合には、各タスクのプログラムファイルを記憶するディスクを読み取るディスク読み取り装置等がタスク入力手段1となり、そのPCのディスプレイや印刷装置などが実行時刻出力手段4となる。
図2は、本実施形態のタスクスケジューリングシステム8の構成を示すブロック図である。図2に示すように、タスクスケジューリングシステム8は、データ処理部2とデータ記憶部3とから構成される。データ処理部2は、プログラム制御により動作し、例えば、タスクスケジューリングシステム8が前述のようにPCである場合には、PCのCPUがそのプログラムを実行することによって動作する。この場合、データ記憶部3は、PCの磁気ディスク装置等となる。
データ処理部2は、タスクグラフ生成部21と、タスク配置手段22とを備えている。また、データ記憶部3は、タスクグラフ記憶部31と、タスク配置リスト記憶部32と、バス使用情報記憶部33とを有している。
タスクグラフ生成部21は、タスク入力手段1から入力された各タスクのブロック構造や、真データ依存、反依存、出力依存などのタスク間の依存関係を調べ、その依存関係に基づいてタスクグラフを作成する。タスクグラフ生成部21によって生成されたタスクグラフは、タスクグラフ記憶部31に記憶される。このタスクグラフの一例を図3に示す。図3に示すように、グラフの節は各タスクA〜Pを示す。グラフの各辺の終点に位置するタスクは、その辺の始点に位置する全てのタスクの設計が終了しなければ実行することができない。なお、各節の()内は、そのタスクの実行プロセッサの指定を示す。
バス使用情報とは、図1に示すマルチプロセッサシステム1のバス15の使用状況を示す情報である。プロセッサPE1〜PE3は、実行するタスクが転送タスクであった場合には、バス15を介してデータ転送を行う。通常、マルチプロセッサシステムでは、複数の機器が同時に1本のバスを使用することはできないため、転送タスクのスケジューリングを行う際に、このバス15の使用状況を把握しておく必要がある。バス使用情報は、転送タスクをスケジューリングする際の有益な情報となる。
タスク配置リスト記憶部32は、配置済みのタスクの実行時刻や、実行プロセッサ情報などのタスクのスケジューリング結果、すなわちタスク配置リストを記憶しておくためのものである。タスク配置手段22は、タスクグラフ記憶部31に記録されたタスクグラフと、バス使用情報記憶部33に記憶されたバス使用情報とに基づいて各タスクの実行時刻を決定し、その実行時刻に基づいてタスク配置リストを作成してタスク配置リスト記憶部32に記憶するとともに、各タスクの実行時刻の決定によって更新されたバスの使用状況をバス使用情報記憶部33のバス使用情報に反映させる。タスク配置手段22は、トリガ発生器221と、タスク登録手段222と、順方向リスト223と、逆方向リスト224と、タスク選択手段225とを備えている。トリガ発生器221は、設計対象となるプロセッサを決定する。
タスク登録手段222は、順方向リスト223と逆方向リスト224とに、タスクを登録する。順方向リスト223は、優先度の高い順に各タスクが記述されたリストであり、逆方向リスト224は、優先度の低い順に各タスクが記述されたリストである。タスク選択手段225は、順方向リスト223か、逆方向リスト224かのいずれか一方を選択し、選択されたリストに記述される順に、スケジュール対象となったタスクの実行時刻を決定する。
次に、本実施形態のタスクスケジューリングシステムの動作について説明する。図4は、本実施形態のタスクスケジューリングシステムの動作を示すフローチャートである。まず、タスク入力手段1からタスク集合が供給されると、タスクグラフ生成部21は、前述のように、タスクグラフを生成してタスクグラフ記憶部31に記憶するとともに、各タスクの優先度を計算し、タスクグラフ記憶部31に記憶しておく(ステップA1)。各タスクの優先度は、順方向の優先度と、逆方向の優先度との両方を計算しておく。また、各タスクの優先度は、以下のようにして算出される。
まず、各タスクの順方向の優先度については、各タスクから終端のタスクに至るまでのパス長が長いタスクに高い優先度が与えられる。パス長が同じタスクが存在する場合には、直接の後続タスク数の多いタスクが優先される。さらに、各タスクの逆方向の優先度については、終端のタスクから各タスクに至るまでのパス長が長いタスクに高い優先度が与えられる。パス長の同じタスクが存在する場合には、直接の先行タスク数の少ないタスクが優先される。
ステップA1終了後、タスク配置手段22では、まずトリガ発生器221が動作する。トリガ発生器221は、タスクグラフ記憶部31に記憶されているタスクグラフに基づいて、設計対象に含めるプロセッサを決定する(ステップA2)。ステップA2において、トリガ発生器221は、まず、使用するプロセッサのうち、いずれのタスクにも指定されていないプロセッサを設計対象に含める。トリガ発生器221は、未設計のタスクがプロセッサを指定するタスクのみであって、指定されているプロセッサが設計対象に含まれていない場合には、未設計のタスクのうち、順方向の優先度が最も高いタスクが割り当てられているプロセッサを設計対象に含める。また、トリガ発生器221は、設計対象プロセッサに指定されているタスクと、設計対象になっていないプロセッサに指定されているタスクとの間にデータ転送が生じたときには、その設計対象になっていないプロセッサを設計対象に含める。
ステップA2終了後、タスク配置手段22は、設計対象となっているプロセッサを対象にし、そのプロセッサが指定されているタスクで順方向の優先度が最も高いタスクが配置済みであるか否かを判断する(ステップA3)。ステップA3において、設計対象になっている全てのプロセッサで順方向の優先度が最も高いタスクが配置済みである場合には、タスク登録手段222によって順方向リスト223を作成し(ステップA4)、タスク選択手段225によって順方向のスケジュールを行って、そのタスクの実行時刻をタスク配置リスト32に登録する(ステップA5)。
ステップA4、A5では、タスク登録手段222によって、先行タスクのスケジューリングが終了していてスケジューリングの対象、すなわち実行可能になっているタスクを算出し、順方向リスト223を作成する。ただし、設計対象となっていないプロセッサで実行が指定されているタスクからの先行タスクは未設計であってもよい。タスク配置手段22では、このリストにおいて順方向の優先度が最も高いタスクを取りだし、実行可能な時刻の最も早い時刻にタスク配置を行い、その結果をタスク選択手段225によって、タスク配置リスト32に登録する。また、タスク選択手段225は、実行時刻を決定したタスクが、バス15を使用する場合には、バス使用情報記憶部33に記憶されるバス使用情報を参照してバス15を使用する時刻をチェックしておく。
ステップA3において、設計対象になっている全てのプロセッサで順方向の優先度が最も高いタスクが配置済みでない場合には、タスク登録手段222によって逆方向リスト224を作成し(ステップA6)、タスク選択手段225によって逆方向のスケジュールを行い、そのタスクの実行時刻をタスク配置リスト32に登録する(ステップA7)。
ステップA6、A7、すなわち逆方向のタスクスケジューリング処理では、タスク登録手段222によって後続タスクの配置が終了していて、まだ設計されていないタスクについて逆方向リスト224を作成する。ただし、設計対象となっていないプロセッサに実行が指定されているタスクの後続タスクは未設計であってもよい。また、そのプロセッサで、設計を開始するきっかけとなったタスクより逆方向の優先度の低いタスクからの後続タスクは未設計でもよいものとする。
図1のタスク配置手段22では、このリストにおいて逆方向の優先度が最も低いタスクを取りだし、実行可能な時刻のうち、最も遅い時刻にタスクの実行時刻としてスケジューリングし、タスク選択手段225によってそのスケジューリング結果をタスク配置リスト32に登録する。また、このとき実行時刻を決定したタスクがバス15を使用する場合には、バス使用情報記憶部33に記憶されているバス使用情報を参照してバス15を使用する時刻をチェックしておく。
ステップA4、A5、ステップA6、A7の処理、すなわちタスクスケジュール操作を行って、あるタスクの配置を終えると、タスク配置手段22は、全てのタスクのスケジューリングが終了したか否かを調べる(ステップA8)。まだ、スケジューリングされていないタスクが存在する場合には、先ほどのタスク配置で、新たに設計対象に含まれるプロセッサが存在しないか調べるために、トリガ発生プロセス(ステップA2)に戻る。ステップA8において、全てのタスクのスケジューリングが終了していたと判断した場合には、スケジューリング結果を実行時刻出力手段4に出力して処理を終了する。
本実施形態のタスクスケジューリングシステムでは、トリガ発生プロセスを設けて、プロセッサが設計対象に含まれてから各タスクを配置し、スケジュール状況に応じて順方向と逆方向のスケジュールを適宜行っていくため、各プロセッサの使用効率を向上させることができる。
次に、図3のタスクグラフによって依存関係が示される各タスク集合のタスクスケジューリングを行った場合の本実施形態のタスクスケジューリングシステム動作について説明する。このタスクグラフでは、プロセッサPE1〜PE3が指定されており、いずれのタスクにも指定されていないプロセッサは存在しないため、図3のステップA2の処理に示すように、トリガ発生器221は、順方向の優先度が最も高いタスクAに割り当てられているPE1を設計対象に含める。そして、ステップA4、A5の処理によって、タスクAからタスクFまで順方向のタスクスケジューリングが行われる。
順方向のタスクスケジューリングでは、各タスクA〜Fの実行時刻は、最高優先度を有するタスクAの配置時刻よりも後の時刻であって、指定プロセッサの空いている最も早い時刻とする。タスクがバス15を使用する転送タスクである場合には、その転送タスクがバスを使用する時刻をバス使用情報に反映させる。また、そのタスクが、設計対象に含まれていないプロセッサを指定するタスクにデータ転送を行うタスクである場合には、その設計対象になっていないプロセッサを設計対象に含める。例えば、タスクFは、PE2を指定するタスクIに対してデータ転送を行うタスクであるため、本実施形態のタスクスケジューリングシステムは、PE2を設計対象のプロセッサに含める。これ以後、PE2を指定するタスクもスケジューリング対象に含まれるようになる。
次に、本実施形態のタスクスケジューリングシステムは、PE2が設計対象に含まれるきっかけとなったタスクIの設計を行うが、PE2が指定されている順方向の優先度が高いタスクGが配置済みでないため、以後、タスクIよりも優先度が高いタスクを対象にして、ステップA6、A7の処理によって、優先度の低いタスクから順に逆方向にタスクスケジューリングを行う。
この逆方向のタスクスケジュールでは、設計対象となっているプロセッサが指定されている後続タスクや、プロセッサの指定されていない後続タスクの設計が終了しているタスクのうち、逆方向の優先度が最も低いタスクを選択する。ただし、プロセッサが設計対象に含まれる原因となったタスク(例えば、タスクI)より低いCP(クリティカルパス)値を有する後続タスクは、前述の後続タスクには含めない。タスクの配置時刻は、タスク配置リストとバス使用情報とを参照して、プロセッサが設計対象に含まれる原因となったタスクの配置時刻より前の時刻、すなわち配置可能な時刻のうち、最も遅い時刻とする。図3のタスクグラフでは、タスクI設計後の逆方向の優先度が最も低いタスクは、タスクJであるとすると、タスク選択手段225は、タスクJをタスクIの直前に配置する。
タスクGが設計されると、設計対象となっているプロセッサ(PE1、PE2)の順方向の最高優先度タスクが設計された状態となるため、本実施形態のタスクスケジューリングシステムでは、再び順方向のタスクスケジュールを行う。タスクLの設計後には、トリガ発生器221によりPE3が設計対象に含まれるようになり、逆方向のタスクスケジュールが開始される。タスクMが設計されると、今度は再び、順方向のタスクスケジュールが行われるようになる。
本実施形態のタスクスケジューリングシステムのスケジュール結果を図5に示す。図5(a)は、本実施形態のタスクスケジューリングシステムのスケジューリング結果を示し、図5(b)は、従来のタスクスケジューリングシステムのスケジューリング結果を示す。図5に示すように、各プロセッサでは、先頭タスクが実行される時間と最後のタスクが実行される時間との間には、タスクが実行されていない時間がないのがわかる。
また、本実施形態のタスクスケジューリングシステムでは、タスク選択手段225は、バス15を用いてデータを転送する転送タスクについては、バス使用情報記憶部33に記憶されたバス使用情報を参照して、タスクの実行時刻を決定する。まず、プロセッサPE1を指定する各タスクのタスク配置リストが、図6(a)に示すようになっており、その時のバス使用情報が図6(b)に示すようになっているとして、転送タスクであるタスク4をスケジューリングする場合を考える。タスク4を時刻4に配置することを決定した後、タスク選択手段225は、タスク4を時刻4に配置した場合に、バスの使用が先に配置された他のタスクと衝突するか否かをチェックする。図6(b)に示すように、時刻4においては、タスクBがバスを使用するため、タスク4を時刻4に配置することができない。そこで、本実施形態のタスクスケジューリングシステムでは、時刻4以降の時刻のうち、バス15が他のタスクに使用されていない時刻である時刻6にタスク4を配置する。
本実施形態のタスクスケジューリングシステムを用いることによって、各プロセッサの使用効率が上がると、タスクの処理コストが低減され、周期タスクの高速処理が可能となる。図3のタスクグラフに示される各タスクの周期処理を行う場合、従来のタスクスケジューリングシステムでは、図5(b)に示すように、先頭タスクを実行してから最終タスクを実行するまでの間に、各プロセッサにおいて、タスクを実行していない時間が存在する。そのため、例えばプロセッサPE3では、全タスクを実行するのに11サイクルを要する。これに対し、本実施形態のタスクスケジューリングシステムでは、図5(a)に示すように、各プロセッサ毎の実行時間は6サイクルとなる。プロセッサの使用効率を、各プロセッサにおける先頭タスクの開始時刻から最後のタスクの終了時刻までの時間に対する、プロセッサが実際にタスクを実行している時間の割合であるとすると、図5(b)の従来のタスクスケジューリングシステムでは、プロセッサの使用効率は62%であるのに対し、図5(a)の本実施形態のタスクスケジューリングシステムでは、プロセッサの使用効率は100%となる。
(第2の実施形態)
次に、本発明の第2の実施形態のタスクスケジューリングシステムについて図面を参照して説明する。図7は、本実施形態のタスクスケジューリングシステムの構成を示すブロック図である。図7に示すように、本実施形態のタスクスケジューリングシステム9は、データ処理部2の代わりに、データ処理部5を備えている点が、図2のタスクスケジューリングシステム8と異なっている。データ処理部5は、タスクグラフ生成部21と、タスク配置手段24と、タスク再配置手段23とを備えている。タスク配置手段24は、図2のタスク配置手段22と同様に、タスクグラフ記憶部31に記憶されたタスクグラフに基づいて各タスクの実行時刻を決定してタスクスケジューリングを行い、それらのスケジューリング結果をタスク配置リストとしてタスク配置リスト記憶部32に記憶し、そのスケジューリング結果に合わせてバス使用情報記憶部34のバス使用情報を更新する。タスク再配置手段23は、タスク配置リスト記憶部32に記憶されたタスク配置リスト上のタスクの再配置を行う。
また、データ記憶部6は、タスクグラフ記憶部31と、タスク配置リスト記憶部32と、バス使用情報記憶部34とを備えている。バス使用情報記憶部34は、図2のバス使用情報記憶部33と同様に、転送タスクがバスを使用可能な時刻を記憶する。タスク配置手段24は、前述のタスクスケジューリングを行ってバス使用情報を更新する際には、そのタスクがバス15の使用が可能な配置可能時刻をすべて記憶しておく。配置可能時刻とは、そのタスクの先行タスクのうち、そのタスクと配置時刻が最も近い先行タスクが配置された時刻と、そのタスクの後続タスクのうち、そのタスクともっとも配置時刻が近い後続タスクが配置された時刻との間の時間であって、そのタスクが指定するプロセッサを指定する各タスクの中でクリティカルパス値が等しい設定可能範囲の中の時刻とする。したがって、タスクの配置可能時刻を設定するためには、そのタスクの全ての先行タスクおよび後続タスクの配置時刻が決定されている必要がある。
図8は、本実施形態のタスクスケジューリングシステムにおける配置可能時刻を示す図である。タスクグラフが図8(a)のようになっているとすると、タスクBは、タスクAとタスクDとの実行時刻の間に配置可能である。したがって、図8(b)に示すように、タスクBの配置可能時刻は時刻2、3となり、図8(c)、(d)に示すように、タスクBとタスクCとは、クリティカルパス値が同じであるため、その実行時刻を入れ替え可能となる。
タスク再配置手段23は、タスク配置手段24によって転送タスクが配置されると、そのタスクのデータ転送待ち時間を調べる。本実施形態のタスクスケジューリングシステムでは、順方向のスケジュール時にバス15が使用できないためにプロセッサが空いているのに転送タスクを早い時刻に配置できない場合や、逆方向のスケジュール時にバスが使用できないためにプロセッサが空いているのに転送タスクを遅い時刻に配置できない場合には、データ転送待ちが生じる状態であると判定する。データ転送待ち時間が生じる場合には、タスク再配置手段23は、タスク再配置処理を試みる。
タスク再配置手段23は、転送タスクを転送待ち時間が生じない時刻に仮配置する。仮配置を行う時刻は、順方向のスケジュールではプロセッサ空きが生じない最も早い時刻とし、逆方向のスケジュールではプロセッサ空きが生じない最も遅い時刻とする。
次に、タスク再配置手段23は、バス使用情報を参照して仮配置を行ったタスクとバス衝突を生じるタスクを探し出し、その転送タスクの動かせる範囲を調べる。バス衝突相手の転送タスク全ての動かせる範囲が、動かした先でバス衝突を起こさない場合には、バス衝突相手の転送タスクの実行時刻を動かした先の命令と入れかえ、仮配置を行っていた転送タスクの実行時刻をその時刻に確定する。バス衝突相手の転送タスクを他の時間に移動させることができない場合には、転送タスクの仮配置時刻を1サイクルずらす。ずらす時刻は、順方向スケジュールでは、初め仮配置を行っていた時刻より1サイクル遅い時刻とし、逆方向のスケジュールでは、初め仮配置を行っていた時刻より1サイクル早い時刻とする。
タスク再配置手段23は、転送タスクの再配置が終了すると、仮配置を行っていたタスクの実行時刻と、それとバス衝突を起こす転送タスクの再配置時刻と、再配置した転送タスクと実行時刻を入れ替えたタスクの実行時刻とをタスク配置リスト記憶部32に記憶するタスク配置リストに反映させ、さらに再配置後の転送タスクのバス使用時刻をバス使用情報記憶部32に記憶するバス使用情報に反映させる。図9は、本実施形態のタスクスケジューリングシステムにおけるタスク再配置手段23の動作を示すフローチャートである。図9に示すように、まず、タスク再配置手段23は、タスク配置手段24によって作成されタスク配置リスト記憶部32に記憶されたタスク配置リストを参照し、各タスクのうち、バス15を使用する転送タスクについて、転送待ち時間が生じているか否かを判断する(ステップC1)。転送待ち時間が生じている場合には、タスク再配置手段23は、その転送タスクを転送待ちが生じない時刻に仮配置する(ステップC2)。ステップC2後、タスク再配置手段23は、バス使用情報記憶部34に記憶されているバス使用情報を参照して、ステップC2において仮配置を行ったタスクとバス衝突を生じるタスクがあるかどうか検出し、そのタスクがあれば、そのタスクの配置可能時刻を参照して、そのタスクが再配置可能であるか否かを検出する(ステップC3)。ステップC3において、バス衝突を生じるタスクが再配置可能でない場合には、仮配置したタスクをまた別の時刻に仮配置し(ステップC4)、ステップC3に戻る。
ステップC3において、バス衝突を生じるタスクが再配置可能であった場合には、そのタスクの再配置を行い、ステップC2において行った仮配置を確定し(ステップC5)、処理を終了する。本実施形態のタスクスケジューリングシステムでは、タスク再配置手段23による再配置終了後、全てのタスクの配置が完了していない場合には、再び、タスク配置手段24によるタスクのスケジューリングを行う。
図10は、本実施形態のタスクスケジューリングシステムにおいてバス使用情報記憶部34に記憶されるバス使用情報の一例を示す図である。転送タスクは、現在、図10(a)のように配置されており、バス使用情報は、図10(b)のようになっているとする。本実施形態のタスクスケジューリングシステムでは、転送タスクの配置でデータ転送待ち状態が生じた場合には、タスクの再配置を試みるが、図10では、タスク再配置手段23が、タスク4を時刻4(4clk)に仮配置する場合を示している。タスク再配置手段23は、バス使用情報記憶部34に記憶されているバス使用情報を参照して、仮配置を行ったタスクとバス衝突を生じるタスクを検出し、その転送タスクの配置時刻の移動可能範囲、すなわち配置可能時刻を調べる。図10では、タスクBがバス衝突相手となっており、タスクBの配置可能時刻は、時刻3と時刻4となっている。したがって、本実施形態のタスクスケジューリングシステムでは、タスクBは時刻3にも配置可能なため、タスクBの配置時刻を時刻4から時刻3に入れ替える。この入れ替えにより、タスクBはバス15を時刻3で使用することとなり、タスク4が時刻4にバス15を使用することが可能となる。しかし、タスクBの配置可能時刻が時刻4以外に存在しなかった場合には、タスク再配置手段23は、タスク4の仮配置時刻を時刻5とし、時刻5で上述した処理を行う。タスク再配置手段23は、バス衝突が生じなくなるまで、この動作を繰り返す。
タスク再配置手段23は、タスクの配置が可能になった時点で、転送タスクの設計を行い、仮配置を行っていた転送タスクの実行時刻と、再配置されたタスクの実行時刻と、再配置したタスクと実行順序を入れ替えたタスクの実行時刻とを、タスク配置リスト記憶部32に記憶されているタスク配置リストに反映する。さらに、タスク再配置手段23は、再配置後の転送タスクのバス使用時刻をバス使用情報記憶部34に記憶されているバス使用情報に反映させる。上述のような、タスク入れ替えを行うことによって、時刻6に配置されていたタスク4を時刻4に配置することが可能となり、データ転送待ち時間を短くすることができる。
また、バス衝突相手のタスクの配置可能時刻が他になかった場合でも、初めに配置していた時刻にタスクを配置することが可能である。このため、本実施形態のタスクスケジューリングシステムでは、タスクのデータ転送待ち時間を、第1の実施形態のタスクスケジューリングシステムと同じか、それよりも短くすることが可能となる。
以上述べたように、本実施形態のタスクスケジューリングシステムでは、データ転送タスクを配置したときに、転送待ち時間が生じた場合には、そのタスクの再配置を行うことによって、転送待ち時間を低減することができる。
なお、タスクスケジューリングシステム8、9は、前述のように、コンピュータのメモリおよびCPU(中央演算装置)によって構成され、上記の各部の機能を実現するためのプログラムをメモリにロードして実行することによりその機能を実現させるものであってもよい。このプログラムは、磁気ディスク、半導体メモリ、CD−ROMや、その他のコンピュータ読み取り可能な記録媒体に記録されているものであってもよい。
また、本実施形態のタスクスケジューリングシステムでは、各タスクの優先度を、クリティカルパス値と、先行タスク数(順方向リスト作成時)、後続タスク数(逆方向リスト作成時)を基準として求めた。しかし、本発明は、これに限定されるものではなく、順方向リスト作成時と、逆方向リスト作成時とで、まったく同じ条件でタスクの優先度を求めてもよいし、CP法、CP/MISF法、CP/DT/MISF法など、他の方法を用いてタスクの優先度を求めてもよい。
本発明の第1の実施形態のタスクスケジューリングシステムが動作する環境の構成を示すブロック図である。 本発明の第1の実施形態のタスクスケジューリングシステムの構成を示すブロック図である。 タスクグラフの一例を示す図である。 本発明の第1の実施形態のタスクスケジューリングシステムの動作を示すフローチャートである。 本発明の第1の実施形態のタスクスケジューリングシステムのスケジュール結果を示す図である。 本発明の第1の実施形態のタスクスケジューリングシステムにおけるタスク配置リストとバス使用情報とを示す図である。 本発明の第2の実施形態のタスクスケジューリングシステムの構成を示すブロック図である。 本発明の第2の実施形態のタスクスケジューリングシステムにおける配置可能時刻を示す図である。 本発明の第2の実施形態のタスクスケジューリングシステムにおけるタスク再配置手段の動作を示すフローチャートである。 本発明の第2の実施形態のタスクスケジューリングシステムにおいてバス使用情報記憶部に記憶されるバス使用情報の一例を示す図である。 従来のタスクスケジューリングシステムの構成を示す図である。
符号の説明
1 タスク入力手段
2、5 データ処理部
3、6 データ記憶部
4 実行時刻出力手段
8、9 タスクスケジューリングシステム
15 バス
21 タスクグラフ生成部
22、24、51 タスク配置手段
23 タスク再配置手段
31 タスクグラフ記憶部
32 タスク配置リスト記憶部
33、34 バス使用情報記憶部
61 タスクグラフ
62 タスク配置リスト
63 バス使用情報
100 マルチプロセッサシステム
221 トリガ発生器
222 タスク登録手段
223 順方向リスト
224 逆方向リスト
225 タスク選択手段
511 タスク登録手段
512 実行可能タスク待ち行列
513 プロセッサ指定タスク待ち行列
514 タスク選択手段
A1〜A8、C1〜C5 ステップ

Claims (3)

  1. バスで接続された複数のプロセッサを備えるマルチプロセッサシステムにおいて複数のタスクのマルチタスク処理を行う場合に、実行プロセッサが指定されているタスクを含む複数のタスクの依存関係を示すタスクグラフに基づいて、前記各タスクのタスクスケジューリングを前記各タスクの実行前に行う静的なタスクスケジューリングシステムにおいて、
    転送タスクと実行時刻が最も近い直接先行タスクの実行時刻と、前記転送タスクと実行時刻が最も近い直接後続タスクの実行時刻との間で、クリティカルパス値が等しい範囲を前記転送タスクの実行時刻の設定可能範囲とし、前記転送タスクの実行時刻と、前記転送タスクの実行時刻の設定可能範囲とが登録されているバス使用情報と、
    前記バス使用情報を参照して、複数の転送タスクの実行時刻が重複する場合には、前記設定可能範囲の中で前記各転送タスクの実行時刻を再配置するタスク再配置手段とを備えることを特徴とするタスクスケジューリングシステム。
  2. バスで接続された複数のプロセッサを備えるマルチプロセッサシステムにおいて複数のタスクのマルチタスク処理を行う場合に、実行プロセッサが指定されているタスクを含む複数のタスクの依存関係を示すタスクグラフに基づいて、前記各タスクのタスクスケジューリングを前記各タスクの実行前に行う静的なタスクスケジューリング方法において、
    転送タスクと実行時刻が最も近い直接先行タスクの実行時刻と、前記転送タスクと実行時刻が最も近い直接後続タスクの実行時刻との間で、クリティカルパス値が等しい範囲を前記転送タスクの実行時刻の設定可能範囲とし、前記転送タスクの実行時刻と、前記転送タスクの実行時刻の設定可能範囲とをバス使用情報として登録する第1のステップと、
    前記バス使用情報を参照して、複数の転送タスクの実行時刻が重複する場合には、前記設定可能範囲の中で前記各転送タスクの実行時刻を再配置する第2のステップとを有することを特徴とするタスクスケジューリング方法。
  3. バスで接続された複数のプロセッサを備えるマルチプロセッサシステムにおいて複数のタスクのマルチタスク処理を行う場合に、実行プロセッサが指定されているタスクを含む前記各タスクの依存関係を示すタスクグラフに基づいて、前記各タスクの静的なタスクスケジューリングをコンピュータに実行させるプログラムであって、
    転送タスクと実行時刻が最も近い直接先行タスクの実行時刻と、前記転送タスクと実行時刻が最も近い直接後続タスクの実行時刻との間で、クリティカルパス値が等しい範囲を前記転送タスクの実行時刻の設定可能範囲とし、前記転送タスクの実行時刻と、前記転送タスクの実行時刻の設定可能範囲とをバス使用情報として登録し、
    前記バス使用情報を参照して、複数の転送タスクの実行時刻が重複する場合には、前記設定可能範囲の中で前記各転送タスクの実行時刻を再配置する処理をコンピュータに実行させるためのプログラム。
JP2008036509A 2008-02-18 2008-02-18 タスクスケジューリングシステム、方法、およびプログラム Expired - Fee Related JP4404228B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008036509A JP4404228B2 (ja) 2008-02-18 2008-02-18 タスクスケジューリングシステム、方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008036509A JP4404228B2 (ja) 2008-02-18 2008-02-18 タスクスケジューリングシステム、方法、およびプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2001213599A Division JP4206653B2 (ja) 2001-07-13 2001-07-13 タスクスケジューリングシステムおよび方法、プログラム

Publications (2)

Publication Number Publication Date
JP2008176804A JP2008176804A (ja) 2008-07-31
JP4404228B2 true JP4404228B2 (ja) 2010-01-27

Family

ID=39703732

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008036509A Expired - Fee Related JP4404228B2 (ja) 2008-02-18 2008-02-18 タスクスケジューリングシステム、方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP4404228B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010037177A1 (en) * 2008-10-03 2010-04-08 The University Of Sydney Scheduling an application for performance on a heterogeneous computing system
US8549536B2 (en) 2009-11-30 2013-10-01 Autonomy, Inc. Performing a workflow having a set of dependancy-related predefined activities on a plurality of task servers
JP5810918B2 (ja) * 2009-12-24 2015-11-11 日本電気株式会社 スケジューリング装置、スケジューリング方法及びプログラム
KR101383225B1 (ko) * 2012-09-03 2014-04-09 서울대학교산학협력단 하나 이상의 실행 유닛에 대한 성능 분석 방법, 성능 분석 장치 및 성능 분석 방법을 수행하는 프로그램을 기록한 컴퓨터 판독가능 기록매체
JP6975866B2 (ja) * 2018-01-29 2021-12-01 ルビクラウド テクノロジーズ インコーポレイテッド フレキシブル・パイプライン生成のための方法及びシステム

Also Published As

Publication number Publication date
JP2008176804A (ja) 2008-07-31

Similar Documents

Publication Publication Date Title
JP6897574B2 (ja) アクセラレータ制御装置、アクセラレータ制御方法およびプログラム
US8250557B2 (en) Configuring a dependency graph for dynamic by-pass instruction scheduling
JP5643190B2 (ja) 局所的集合内のタスクを汎用的集合に割り当てるための方法及びコンピュータ読取可能記録媒体
US8375390B2 (en) Scheduling method and scheduling apparatus
US7590990B2 (en) Computer system
JP4404228B2 (ja) タスクスケジューリングシステム、方法、およびプログラム
JP2009265963A (ja) 情報処理システム及びタスクの実行制御方法
KR970016979A (ko) 다중 처리 시스템에서 타스크의 큐잉 시스템 및 방법
JP2012511204A (ja) リソースを最適化するためのタスク再編成方法
JP4206653B2 (ja) タスクスケジューリングシステムおよび方法、プログラム
JP2010079622A (ja) マルチコアプロセッサシステム、および、そのタスク制御方法
JP2008065713A (ja) マルチプロセッサシステム及び割込み制御方法
CN110597606B (zh) 一种高速缓存友好的用户级线程调度方法
US8359588B2 (en) Reducing inter-task latency in a multiprocessor system
CN104094235A (zh) 多线程计算
CA2433379A1 (en) Modulo scheduling of multiple instruction chains
JP4241462B2 (ja) 制御ユニットおよびマイクロコンピュータ
JP2009151645A (ja) 並列処理装置及びプログラム並列化装置
JP2007188523A (ja) タスク実行方法およびマルチプロセッサシステム
JP5195408B2 (ja) マルチコアシステム
JP6368452B2 (ja) 非同期のデバイスによって実行されるタスクのスケジューリングの向上
JP2022079764A (ja) 同期制御システムおよび同期制御方法
US20120137300A1 (en) Information Processor and Information Processing Method
JP5540799B2 (ja) データ入出力制御方法,データ入出力制御プログラムおよびデータ入出力制御装置
JP2019204387A (ja) プログラム実行制御方法およびプログラム変換装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090218

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090409

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: 20091014

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121113

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091027

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121113

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131113

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees