JP7267819B2 - 並列タスクスケジューリング方法 - Google Patents

並列タスクスケジューリング方法 Download PDF

Info

Publication number
JP7267819B2
JP7267819B2 JP2019075277A JP2019075277A JP7267819B2 JP 7267819 B2 JP7267819 B2 JP 7267819B2 JP 2019075277 A JP2019075277 A JP 2019075277A JP 2019075277 A JP2019075277 A JP 2019075277A JP 7267819 B2 JP7267819 B2 JP 7267819B2
Authority
JP
Japan
Prior art keywords
task
tasks
group
task group
time
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
JP2019075277A
Other languages
English (en)
Other versions
JP2020173622A (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.)
Hitachi Industry and Control Solutions Co Ltd
Original Assignee
Hitachi Industry and Control Solutions Co 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 Hitachi Industry and Control Solutions Co Ltd filed Critical Hitachi Industry and Control Solutions Co Ltd
Priority to JP2019075277A priority Critical patent/JP7267819B2/ja
Publication of JP2020173622A publication Critical patent/JP2020173622A/ja
Application granted granted Critical
Publication of JP7267819B2 publication Critical patent/JP7267819B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、マルチコア組み込みシステムにおける制御ソフトウェアの並列タスクスケジューリング技術に関する。
近年、マイクロプロセッサやマイクロコントローラでは、消費電力と発熱量の問題から、クロック周波数の上昇ではなく、並列処理によって性能向上が達成されるようになった。サーバー、パーソナルコンピュータ、スマートフォンでも、複数のプロセッサコアを搭載したマルチコア/メニーコアのLSIが普及している。車載組込みシステムにおいても、マルチコアのマイクロコントローラが普及し始めている。
マルチコアの能力を引き出すためには、並列タスクスケジューリングが重要となる。リアルタイムシステムにはイベントタスクと周期タスクがあり、周期タスクは複数の異なる周期を持つ場合がある。また、制御依存やデータ依存といった依存関係があるタスクには実行の順番が決まっている。このように、イベント、複数の異なる周期、依存関係を考慮して、タスクをどのコアに割り当て、スケジューリングするかを決定しなくてはならない。それぞれのタスクの実行時間制約を保証しつつ、タスク全体の処理を最適化できる手法が必要である。
並列タスクスケジューリングの従来技術として次のようなものがある。特許文献1には、プログラムを逐次処理するものと並列処理するものに分類し、逐次処理するプログラムをスケジューリングした後、並列処理するプログラムを不均一となるようにスケジューリングする方法が示されている。逐次処理プログラムをスケジューリングした後、各コアにプログラムが割り当てられていない時間、すなわち並列処理するプログラムを割り当てることのできる時間は、コアごとに不均一になる可能性がある。そこで、並列処理するプログラムを各コアに割り当てることのできる時間に応じて不均一に割り当てるというものである。
特開2016-218503号公報
従来技術は並列処理するプログラムを不均一に割り当てることによって、各コアに割り当てるプログラムの処理量を平均化することができる。しかしながら、イベント、複数の異なる周期、依存関係を考慮してタスクスケジューリングを行うことについては言及されていない。
本発明は上記課題を鑑みて考案したものであり、その目的は、イベント、複数の異なる周期、依存関係を考慮してタスクを複数のコアに最適に割り当てることのできる並列タスクスケジューリングを提供することにある。
本発明のタスクスケジューリング方法は、制御ソフトウェアの仕様書とそのプログラムを参照して、依存関係の強いタスクをグループとしてまとめ、複数のタスクグループ情報を生成する手順と、タスクグループ情報を参照して、タスクグループに含まれるタスクの依存関係を表したタスクグラフを作成する手順と、制御ソフトウェアの仕様書とそのプログラムを参照して、タスクグループ間時間制約を作成する手順と、タスクグラフと前記タスクグループ間時間制約を参照して、全体タスクグラフを作成する手順と、全体タスクグラフを参照して、タスクの優先度を定義した優先度テーブルを作成する手順と、優先度テーブルを参照してタスクをマルチコアに割り当てる手順と、を有する。
さらに、本発明のタスクスケジューリング方法は、制御ソフトウェアの仕様書とそのプログラムを入力して、依存関係の強いタスクをグループとしてまとめ、複数のタスクグループ情報を生成する手段と、タスクグループ情報を入力して、タスクグループに含まれるタスクの依存関係を表したタスクグラフを作成する手段と、制御ソフトウェアの仕様書とそのプログラムを入力して、タスクグループ間時間制約を作成する手段と、タスクグラフとタスクグループ間時間制約を入力して、全体タスクグラフを作成する手段と、全体タスクグラフを入力して、タスクの優先度を定義した優先度テーブルを作成する手段と、優先度テーブルを入力してタスクをマルチコアに割り当てる手段を有する。
本発明によれば、タスク全体をタスクグループ情報とタスクグループ間時間制約の形で表現するので、依存関係のある部分がタスクグループの内部と、タスクグループ間の限られたパスに限定されるため、タスクの優先度を決定するのが容易になり、その結果、タスクのコア割り当てを最適に行えるようになる。
また、本発明によれば、タスク全体をタスクグループ情報とタスクグループ間時間制約の形で表現するので、タスクグループ間時間制約の変更への対応が容易になる。
本発明の実施例の並列タスクスケジューリング方法である。 タスクグループ情報の例である。 タスクグラフの例である。 優先度テーブルの例である。 タスクスケジューリングの例である。 3つのタスクグループA、B、Cのタスクグラフと優先度テーブルの例である。 タスクグループ間時間制約の第1の例である。 図6のタスクグラフと図7のタスクグループ間時間制約から作成した全体タスクグラフである。 図8の全体タスクグラフから作成した優先度テーブルである。 図9の優先度テーブルに基づいてタスクをコアに割り当てたスケジューリング結果である。 タスクグループ間時間制約の第2の例である。 図6のタスクグラフと図11のタスクグループ間時間制約から作成した全体タスクグラフである。 図12の全体タスクグラフから作成した優先度テーブルである。 図13の優先度テーブルに基づいてタスクをコアに割り当てたスケジューリング結果である。 タスクグループ間時間制約の第3の例である。 図6のタスクグラフと図15のタスクグループ間時間制約から作成した全体タスクグラフである。 図16の全体タスクグラフから作成した優先度テーブルである。 図17の優先度テーブルに基づいてタスクをコアに割り当てたスケジューリング結果である。 図6の3つのタスクグループA、B、Cが異なる周期を持つ場合のタスクグループ情報の例である。 図19のタスクグループA、B、Cの実行時間の関係を表す図である。 図19のタスクグループA、B、Cのコア割り当ての手順を表すフローチャートである。 図19のタスクグループA、B、Cにおけるタスクの処理時間とクリティカルパスを表すテーブルである。 図19のタスクグループA、B、Cを、図21のフローチャートと図22のテーブルに基づいてコアに割り当てを行ったスケジューリング結果である。 イベントであるタスクグループDのタスクグループ情報である。 図6の2つのタスクグループA、Bと図11のタスクグループ間時間制約と図24のタスクグループDから作成した全体タスクグラフである。 図25の全体タスクグラフから作成した優先度テーブルである。 図26の優先度テーブルに基づいてタスクをコアに割り当てたスケジューリング結果である。
図1は本発明の実施例の並列タスクスケジューリング方法である。
10は制御ソフトウェアの仕様書であり、11はそのプログラムである。タスクグループ情報作成12は、制御ソフトウェアの仕様書10とそのプログラム11を入力して、依存関係の強いタスクをグループとしてまとめ、複数のタスクグループ情報を生成する。ここでは、3つのタスクグループ情報A(13-A)、B(13-B)、C(13-C)を生成するものとする。タスクグループ情報作成12は、制御ソフトウェアの開発者などが人手で行うか、ツールを開発して自動化することも考えられる。タスクグループ情報の説明は後で行う。
タスクグラフ作成14は、タスクグループ情報A(13-A)を入力して、タスクグループAに含まれるタスクの依存関係を表したタスクグラフA(15-A)を作成する。タスクグラフ作成14はまた、タスクグループ情報B(13-B)を入力して、タスクグループBに含まれるタスクの依存関係を表したタスクグラフB(15-B)を作成する。タスクグラフ作成14はさらに、タスクグループ情報C(13-C)を入力して、タスクグループCに含まれるタスクの依存関係を表したタスクグラフC(15-C)を作成する。タスクグラフ作成14は、制御ソフトウェアの開発者などが人手で行うか、ツールを開発して自動化することも考えられる。タスクグラフの説明は後で行う。
タスクグループ間時間制約作成16は、制御ソフトウェアの仕様書10とそのプログラム11を入力して、タスクグループ間時間制約17を作成する。タスクグループ間時間制約作成16は、制御ソフトウェアの開発者などが人手で行うか、ツールを開発して自動化することも考えられる。
全体タスクグラフ作成18は、タスクグラフA(15-A)、タスクグラフB(15-B)、タスクグラフC(15-C)とタスクグループ間時間制約17を入力して、全体タスクグラフ19を作成する。全体タスクグラフ作成18は、制御ソフトウェアの開発者などが人手で行うか、ツールを開発して自動化することも考えられる。全体タスクグラフの説明は後で行う。
優先度テーブル作成20は、全体タスクグラフ19を入力して、優先度テーブル21を作成する。優先度テーブル作成20は、制御ソフトウェアの開発者などが人手で行うか、ツールを開発して自動化することも考えられる。優先度テーブルの説明は後で行う。
コア割り当て22は、優先度テーブル21を入力して、タスクをマルチコアに割り当てるスケジューリングを行う。ここでは2つのコアを使い、コア0スケジューリング(23-0)とコア1スケジューリング(23-1)を生成するものとする。スケジューリングの説明は後で行う。
図2はタスクグループ情報の例である。タスクグループ名はTであり、そのタスク数は7である。種類は少なくとも周期タスクとイベントの二種類があり、タスクグループTの種類は周期タスクである。また、タスクグループTの周期は10である。周期の時間単位は実際のタスクグループの周期に則した値であっても良いし、そうでなくても良い。ただし、後で説明する処理時間と同じにする必要がある。
タスク名は、タスクグループTに含まれる7つのタスクの名称である。ここではタスクグループ名のTの後に、数字の0から連続する7つの正の整数を付加している。処理時間はそのタスクを処理するのに必要な時間である。
開始タスクT0は7つのタスクの中で、処理の開始を意味するタスクである。ただし、開始タスクT0には処理の実体はなく、そのため開始タスクT0の処理時間は0となっている。
終了タスクT6は7つのタスクの中で、処理の終了を意味するタスクである。ただし、終了タスクT6には処理の実体はなく、そのため終了タスクT6の処理時間は0となっている。
先行タスク数は7つのタスクについて、そのタスクの直前に処理が行われるタスクの数を意味する。タスクT0は開始タスクであるためその先行タスク数は0である。タスクT1からタスクT4までは先行タスク数が1であり、タスクT5は2、タスクT6は3である。
先行タスクは7つのタスクについてその直前に処理が行われるタスクのタスク名を意味する。タスクT1からタスクT3までは、その先行タスクがT0であり、タスクT4はその先行タスクがタスクT1、タスクT5はその先行タスクがタスクT1とタスクT3、終了タスクT6の先行タスクは、タスクT2、T4とT5である。
図3はタスクグラフの例である。図2のタスクグループ情報に基づいて作成したものである。図3において符号30のついた円は開始タスクT0を表す。他の円も同様に、円の中にかかれたタスク名のタスクを表す。タスクT0(30)の左にある符号31のついた0はタスクT0(30)の処理時間を表す。他の円の左にある数も同様に、それらの右にあるタスクの処理時間を表す。タスクT0(30)からタスクT2(33)に向かっている矢印(32)は、タスクの依存関係を表す。矢印の元にあるタスクの処理が終了しないと矢印の先にあるタスクは処理を開始できないことを意味する。
図4は優先度テーブルの例である。図3のタスクグラフに基づいて作成したものである。優先度テーブルは、処理実体のあるタスクT1からT5までについて作成する。処理時間にはそれぞれのタスクの処理時間が入力されている。クリティカルパスは、そのタスクから終了タスクT6までの経路のうちで、処理時間の合計が最も大きくなるものの値を意味する。例えば、タスクT1のパスは、T1→T4→T6という処理時間の合計が4のパスと、T1→T5→T6という処理時間の合計が3のパスの2つが存在する。この2つのパスのうち、T1→T4→T6のパスの処理時間が最も大きくなるため、その時間4がタスクT1のクリティカルパスとなる。他のタスクについても同様にしてクリティカルパスを得ることができる。優先度はタスクの実行順番を意味する。ここでは、優先度はタスクのクリティカルパスの大きい順番になっている。タスクT2とタスクT3はクリティカルパスが同じであるため、それらの優先度はタスク名に付けられている数の小さい順番にしている。
図5はタスクスケジューリングの例である。図4の優先度テーブルに基づいて作成したものである。ここではP1とP2という2つのコアにタスクを割り当てる例を示している。空きのあるコアに優先度の高い順番にタスクを割り当てる。まず時間0では、タスクT1をコアP1に割り当て、タスクT2をコアP2に割り当てる。次に時間2では、コアP1に割り当てていたタスクT1の処理が終了したため、タスクT3をコアP1に割り当てる。次に時間3では、コアP2に割り当てていたタスクT2の処理が終了したため、タスクT4をコアP2に割り当てる。次に時間4では、コアP1に割り当てていたタスクT3の処理が終了したため、タスクT5をコアP1に割り当てる。そして時間5で、コアP1に割り当てていたタスクT5の処理が終了し、コアP2に割り当てていたタスクT4の処理が終了する。
図6は3つのタスクグループA、B、Cのタスクグラフと優先度テーブルの例である。タスクグループAは6つのタスクを含み、タスクグループBは7つのタスクを含み、タスクグループCは7つのタスクを含む。
図7はタスクグループ間時間制約の第1の例である。ここで、タスクグループ間時間制約数が0とは、タスクグループ間に時間制約が無いことを意味する。すなわち、タスクグループA、B、Cの間には依存関係が無いことになる。
図8は図6のタスクグラフと図7のタスクグループ間時間制約から作成した全体タスクグラフである。タスクグループA、B、Cの間には依存関係が無いため、3つのタスクグラフは完全に独立している。
図9は図8の全体タスクグラフから作成した優先度テーブルである。ここで処理時間とクリティカルパスの値は、図6の優先度テーブルに書かれた値と同じである。優先度はタスクグループA、B、Cのタスクをまとめて、クリティカルパスの大きい順番になっている。クリティカルパスが同じ場合は、クリティカルパス表の左から右に優先度を付けている。
図10は図9の優先度テーブルに基づいてタスクをコアに割り当てたスケジューリング結果である。タスクグループA、B、Cの間には依存関係が無いため、時間0から時間13の間に、各タスクグループのタスクが交互に割り当てられている様子が分かる。
図11はタスクグループ間時間制約の第2の例である。ここで、タスクグループ間時間制約数が2とは、タスクグループ間に時間制約が2つあることを意味する。
時間制約1の先行タスクと時間制約1の後続タスクは、1つ目の時間制約における依存関係のあるタスクを意味し、先行タスクは先に処理されるタスク、後続タスクは後に処理されるタスクを意味する。ここでは、タスクグループAのタスクA5が処理を終了した後、タスクグループBのタスクB0が処理を開始できることを意味する。
時間制約2の先行タスクと時間制約2の後続タスクは、2つ目の時間制約における依存関係のあるタスクを意味し、先行タスクは先に処理されるタスク、後続タスクは後に処理されるタスクを意味する。ここでは、タスクグループBのタスクB6が処理を終了した後、タスクグループCのタスクC0が処理を開始できることを意味する。
図12は図6のタスクグラフと図11のタスクグループ間時間制約から作成した全体タスクグラフである。タスクグループAとタスクグループBの間には、タスクA5が終了した後にタスクB0を開始できるという時間制約がある。またタスクグループBとタスクグループCの間には、タスクB6が終了した後にタスクC0を開始できるという時間制約がある。タスクグループBのタスクB6の先には、タスクグループCのタスクC0のパスがある。そこで、タスクB6からタスクC0への矢印の元にタスクC0のクリティカルパス(40-B)を表記する。同様に、タスクグループAのタスクA5の先には、タスクグループBのタスクB0のパスがある。そこで、タスクA5からタスクB0への矢印の元にタスクB0のクリティカルパス(40-A)を表記する。
図13は図12の全体タスクグラフから作成した優先度テーブルである。ここで処理時間の値は、図6の優先度テーブルに書かれた値と同じである。クリティカルパスの値は、図12の全体タスクグラフに基づいて作成し直している。すなわち、タスクA1からA4までは、元のクリティカルパスに対して9大きい値となっており、これは図12の符号40-Aが付けられた値である。タスクB1からB5までは、元のクリティカルパスに対して5大きい値となっており、これは図12の符号40-Bが付けられた値である。タスクC1からC5までは、元のクリティカルパスと同じ値である。優先度はタスクグループA、B、Cのタスクをまとめて、クリティカルパスの大きい順番になっている。クリティカルパスが同じ場合は、クリティカルパス表の左から右に優先度を付けている。
図14は図13の優先度テーブルに基づいてタスクをコアに割り当てたスケジューリング結果である。タスクグループA、B、Cの間には依存関係があり、タスクグループAの処理が終了した後にタスクグループBの処理を開始し、タスクグループBの処理が終了した後にタスクグループCの処理を開始する。時間0から時間14の間に、各タスクグループA、B、Cの順番にタスクが割り当てられている様子が分かる。
図15はタスクグループ間時間制約の第3の例である。ここで、タスクグループ間時間制約数は2つある。時間制約1の先行タスクと時間制約1の後続タスクの情報から、タスクグループAのタスクA4が処理を終了した後、タスクグループBのタスクB3が処理を開始できることを意味する。また、時間制約2の先行タスクと時間制約2の後続タスクの情報から、タスクグループBのタスクB5が処理を終了した後、タスクグループCのタスクC0が処理を開始できることを意味する。
図16は図6のタスクグラフと図15のタスクグループ間時間制約から作成した全体タスクグラフである。タスクグループAとタスクグループBの間には、タスクA4が終了した後にタスクB3を開始できるという時間制約がある。またタスクグループBとタスクグループCの間には、タスクB5が終了した後にタスクC0を開始できるという時間制約がある。タスクグループBのタスクB5の先には、タスクグループCのタスクC0のパスがある。そこで、タスクB5からタスクC0への矢印の元にタスクC0のクリティカルパス(41-B)を表記する。同様に、タスクグループAのタスクA4の先には、タスクグループBのタスクB3のパスがある。そこで、タスクA4からタスクB3への矢印の元にタスクB3のクリティカルパス(41-A)を表記する。
図17は図16の全体タスクグラフから作成した優先度テーブルである。ここで処理時間の値は、図6の優先度テーブルに書かれた値と同じである。クリティカルパスの値は、図16の全体タスクグラフに基づいて作成し直している。すなわち、タスクA1、A2、A4は、元のクリティカルパスに対して4大きい値となっており、これは図16の符号41-Aが付けられた値である。タスクB1、B2、B5は、元のクリティカルパスに対して5大きい値となっており、これは図16の符号41-Bが付けられた値である。その他のタスクは、元のクリティカルパスと同じ値である。優先度はタスクグループA、B、Cのタスクをまとめて、クリティカルパスの大きい順番になっている。クリティカルパスが同じ場合は、クリティカルパス表の左から右に優先度を付けている。
図18は図17の優先度テーブルに基づいてタスクをコアに割り当てたスケジューリング結果である。タスクグループA、B、Cの間には依存関係があり、タスクグループAのタスクA4処理が終了した後にタスクグループBのタスクB3の処理を開始し、タスクグループBのタスクB5の処理が終了した後にタスクグループCの処理を開始する。時間0から時間13の間に、上記タスクグループ間時間制約を満たしつつ、各タスクグループのタスクが交互に割り当てられている様子が分かる。
図19は図6の3つのタスクグループA、B、Cが異なる周期を持つ場合のタスクグループ情報の例である。タスクグループAの周期は8、タスクグループBの周期は16、タスクグループCの周期は32である。
図20は図19のタスクグループA、B、Cの実行時間の関係を表す図である。時間0から32の間に、タスクグループA(50-A)を4回、タスクグループB(50-B)を2回、タスクグループC(50-C)を1回実行する。タスクグループAは、各周期において時間8以内に処理を終了させる必要がある。タスクグループBは、各周期において時間16以内に処理を終了させる必要がある。タスクグループCは、各周期において時間32以内に処理を終了させる必要がある。すなわち、周期のより短いタスクを優先して実行し、周期の短いタスクの実行が終わったら次に周期の短いタスクを実行する。
図21は図19のタスクグループA、B、Cのコア割り当ての手順を表すフローチャートである。まず、ステップ60でタスクグループAをコアに割り当てる。これは1周期目の処理である。タスクグループAのコア割り当てが終わったら、ステップ61で残り時間にタスクグループBをコアに割り当てる。これは1周期目の処理である。
次にステップ62でタスクグループAをコアに割り当てる。これは2周期目の処理である。タスクグループAのコア割り当てが終わったら、ステップ63で残り時間にタスクグループBをコアに割り当てる。これはタスクグループBの1周期目の処理である。タスクグループBのコア割り当てが終わったら、ステップ64で残り時間にタスクグループCをコアに割り当てる。
次にステップ65でタスクグループAをコアに割り当てる。これは3周期目の処理である。タスクグループAのコア割り当てが終わったら、ステップ66で残り時間にタスクグループBをコアに割り当てる。これはタスクグループBの2周期目の処理である。
次にステップ67でタスクグループAをコアに割り当てる。これは4周期目の処理である。タスクグループAのコア割り当てが終わったら、ステップ68で残り時間にタスクグループBをコアに割り当てる。これはタスクグループBの2周期目の処理である。タスクグループBのコア割り当てが終わったら、ステップ69で残り時間にタスクグループCをコアに割り当てる。
図22は図19のタスクグループA、B、Cにおけるタスクの処理時間とクリティカルパスを表すテーブルである。
図23は図19のタスクグループA、B、Cを、図21のフローチャートと図22のテーブルに基づいてコアに割り当てを行ったスケジューリング結果である。(1)はタスクグループAの1周期目のスケジューリングである。タスクA1、A2、A4をコアに割り当てた後、時間3でタスクA3をコアP1に割り当てると、タスクグループAのコア割り当ては終了する。そこで、次に周期の短いタスクグループBのコア割り当てを行う。タスクB1、B3、B2をコアに割り当てると、次にコアが空く時間が8になり、それはタスクグループAの次の周期の開始時間になる。そこで、タスクグループBのコア割り当てはここで中断となる。
(2)はタスクグループAの2周期目のスケジューリングである。タスクA1、A2、A4をコアに割り当てた後、時間11でタスクA3をコアP1に割り当てると、タスクグループAのコア割り当ては終了する。そこで、中断していたタスクグループBのコア割り当てを再開する。タスクB5をコアP1に割り当てると、タスクグループBのコア割り当ては終了する。そこでタスクグループCのコア割り当てを行う。タスクC2、C1、C4、C3をコアに割り当てると、次にコアが空く時間が16になり、それはタスクグループAの次の周期の開始時間になる。そこで、タスクグループCのコア割り当てはここで中断となる。
(3)はタスクグループAの3周期目のスケジューリングである。タスクA1、A2、A4をコアに割り当てた後、時間19でタスクA3をコアP1に割り当てると、タスクグループAのコア割り当ては終了する。そこで、次に周期の短いタスクグループBのコア割り当てを行う。タスクB1、B3、B2をコアに割り当てると、次にコアが空く時間が24になり、それはタスクグループAの次の周期の開始時間になる。そこで、タスクグループBのコア割り当てはここで中断となる。
(4)はタスクグループAの4周期目のスケジューリングである。タスクA1、A2、A4をコアに割り当てた後、時間27でタスクA3をコアP1に割り当てると、タスクグループAのコア割り当ては終了する。そこで、中断していたタスクグループBのコア割り当てを再開する。タスクB5をコアP1に割り当てると、タスクグループBのコア割り当ては終了する。そこで中断していたタスクグループCのコア割り当てを行う。タスクC5をコアP2に割り当てると、タスクグループCのコア割り当ては終了する。以上で、タスクグループA、B、Cのスケジューリングは終了する。
図24はイベントであるタスクグループDのタスクグループ情報である。タスクグループ名はDであり、そのタスク数は3である。タスクグループDの種類はイベントである。また、タスクグループDの周期は4である。これは、イベントであるタスクグループDの発生頻度が最も多い場合の値としている。
タスク名は、タスクグループDに含まれる3つのタスクの名称である。ここではタスクグループ名のDの後に、数字の0から連続する3つの正の整数を付加している。処理時間はそのタスクを処理するのに必要な時間である。
開始タスクはD0、終了タスクはD2である。先行タスク数は、タスクD0が0、タスクD1とタスクD2が1である。先行タスクはタスクD1の先行タスクがD0、タスクD2の先行タスクがD1である。
図25は図6の2つのタスクグループA、Bと図11のタスクグループ間時間制約と図24のタスクグループDから作成した全体タスクグラフである。タスクグループAとBの間には依存関係が無いため、2つのタスクグラフは完全に独立している。また、タスクグループAとBの周期は16であるとする。イベントDは周期が4であるため、タスクグループAとBの処理に対して4回発生することになる。イベントDのタスクグラフは、処理時間が1のタスクD1が4つ(70、71、72、73)である。
図26は図25の全体タスクグラフから作成した優先度テーブルである。ここでタスクグループAとBについては、処理時間とクリティカルパスの値は、図6の優先度テーブルに書かれた値と同じである。イベントDについては、4回発生するタスクD1をD1-1、D1-2、D1-3、D1-4と表している。タスクD1のクリティカルパスは、次のようにして計算した。タスクグループAとBのうち最も大きいクリティカルパス5をタスクD1-1のクリティカルパスの値とする。そして、それを発生回数4で割った値1.25をタスクD1のクリティカルパスの減少値とする。タスクD1-2のクリティカルパスの値はタスクD1-1のクリティカルパスの値5から減少値1.25を引いた3.75とする。同様にして、タスクD1-3とD1-4のクリティカルパスの値はそれぞれ2.5、1.25となる。優先度はタスクグループA、BとイベントDのタスクをまとめて、クリティカルパスの大きい順番になっている。クリティカルパスが同じ場合は、クリティカルパス表の左から右に優先度を付けている。
図27は図26の優先度テーブルに基づいてタスクをコアに割り当てたスケジューリング結果である。タスクグループAとBの間には依存関係が無いため、時間0から時間11の間にそれぞれのタスクが交互に割り当てられている様子が分かる。また、4回のイベントD1-1、D1-2、D1-3、D1-4が、時間0から時間11の間に分散して割り当てられている様子が分かる
10 仕様書
11 プログラム
12 タスクグループ情報作成
13-A、13-B、13-C タスクグループ情報
14 タスクグラフ作成
15-A、15-B、15-C タスクグラフ
16 タスクグループ間時間制約作成
17 タスクグループ間時間制約
18 全体タスクグラフ作成
19 全体タスクグラフ
20 優先度テーブル作成
21 優先度テーブル
22 コア割り当て
23-0、23-1 コアスケジューリング
30 タスクT0
31 タスクの処理時間
32 タスクの依存関係
33 タスクT2
40-A タスクB0のクリティカルパス
40-B タスクC0のクリティカルパス
41-A タスクB3のクリティカルパス
41-B タスクC0のクリティカルパス
50-A タスクグループAの実行
50-B タスクグループBの実行
50-C タスクグループCの実行
60~69 タスクグループA、B、Cのコア割り当ての手順
70、71、72、73 タスクD1

Claims (6)

  1. 複数のタスクからなる制御ソフトウェアをマルチコアにスケジューリングする方法であって、
    制御ソフトウェアの仕様書とそのプログラムを参照して、依存関係の強いタスクをグループとしてまとめ、複数のタスクグループ情報を生成する手順と、
    前記タスクグループ情報を参照して、タスクグループに含まれるタスクの依存関係を表したタスクグラフを作成する手順と、
    前記制御ソフトウェアの仕様書とそのプログラムを参照して、タスクグループ間時間制約を作成する手順と、
    前記タスクグラフと前記タスクグループ間時間制約を参照して、全体タスクグラフを作成する手順と、
    前記全体タスクグラフを参照して、タスクの優先度を定義した優先度テーブルを作成する手順と、
    前記優先度テーブルを参照してタスクをマルチコアに割り当てる手順と、を有し、
    前記タスクグループ情報は、タスクのグループ名、タスクの数、周期タスクかイベントかを示すタスクの種類、周期、タスクグループに含まれるタスクのタスク名、タスクグループに含まれるタスクの処理時間、各タスクについてその直前に処理が行われるタスク名を先行タスクとして定義することを特長とする並列タスクスケジューリング方法。
  2. 複数のタスクからなる制御ソフトウェアをマルチコアにスケジューリングする方法であって、
    制御ソフトウェアの仕様書とそのプログラムを入力して、依存関係の強いタスクをグループとしてまとめ、複数のタスクグループ情報を生成する手段と、
    前記タスクグループ情報を入力して、タスクグループに含まれるタスクの依存関係を表したタスクグラフを作成する手段と、
    前記制御ソフトウェアの仕様書とそのプログラムを入力して、タスクグループ間時間制約を作成する手段と、
    前記タスクグラフと前記タスクグループ間時間制約を入力して、全体タスクグラフを作成する手段と、
    前記全体タスクグラフを入力して、タスクの優先度を定義した優先度テーブルを作成する手段と、
    前記優先度テーブルを入力してタスクをマルチコアに割り当てる手段と、を有し、
    前記タスクグループ情報は、タスクのグループ名、タスクの数、周期タスクかイベントかを示すタスクの種類、周期、タスクグループに含まれるタスクのタスク名、タスクグループに含まれるタスクの処理時間、各タスクについてその直前に処理が行われるタスク名を先行タスクとして定義することを特長とする並列タスクスケジューリングシステム。
  3. 請求項1に記載の並列タスクスケジューリング方法において、
    前記タスクグループ間時間制約は、異なるタスクグループ間で時間制約のある2つにタスクについて、先に処理するタスクを先行タスクとし、後で処理するタスクを後続タスクとして定義することを特長とする並列タスクスケジューリング方法。
  4. 請求項2に記載の並列タスクスケジューリングシステムにおいて、
    前記タスクグループ間時間制約は、異なるタスクグループ間で時間制約のある2つにタスクについて、先に処理するタスクを先行タスクとし、後で処理するタスクを後続タスクとして定義することを特長とする並列タスクスケジューリングシステム。
  5. 請求項1に記載の並列タスクスケジューリング方法において、
    前記タスクグループ情報は、タスクグループごとに整数倍の異なる周期を定義でき、
    前記タスクをコアに割り当てる手順は、周期の短いタスクグループのタスクを優先してコアに割り当て、そのタスクグループのコア割り当てが終了し、周期内に時間が残っている場合には次に周期の短いタスクグループのタスクを割り当てることを特長とする並列タスクスケジューリング方法。
  6. 請求項2に記載の並列タスクスケジューリングシステムにおいて、
    前記タスクグループ情報は、タスクグループごとに整数倍の異なる周期を定義でき、
    前記タスクをコアに割り当てる手段は、周期の短いタスクグループのタスクを優先してコアに割り当て、そのタスクグループのコア割り当てが終了し、周期内に時間が残っている場合には次に周期の短いタスクグループのタスクを割り当てることを特長とする並列タスクスケジューリングシステム。
JP2019075277A 2019-04-11 2019-04-11 並列タスクスケジューリング方法 Active JP7267819B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019075277A JP7267819B2 (ja) 2019-04-11 2019-04-11 並列タスクスケジューリング方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019075277A JP7267819B2 (ja) 2019-04-11 2019-04-11 並列タスクスケジューリング方法

Publications (2)

Publication Number Publication Date
JP2020173622A JP2020173622A (ja) 2020-10-22
JP7267819B2 true JP7267819B2 (ja) 2023-05-02

Family

ID=72831385

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019075277A Active JP7267819B2 (ja) 2019-04-11 2019-04-11 並列タスクスケジューリング方法

Country Status (1)

Country Link
JP (1) JP7267819B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113641476B (zh) * 2021-08-16 2023-07-14 腾讯科技(深圳)有限公司 一种任务调度方法、游戏引擎、设备及存储介质
KR102411681B1 (ko) * 2021-12-24 2022-06-22 주식회사 모빌린트 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011170879A (ja) 2004-03-08 2011-09-01 Ab Initio Technology Llc 依存性グラフのパラメータのスコーピング
JP2014182606A (ja) 2013-03-19 2014-09-29 Denso Corp 演算装置およびプログラム
JP2015225396A (ja) 2014-05-26 2015-12-14 日立オートモティブシステムズ株式会社 車両制御装置
JP2018534675A (ja) 2015-10-16 2018-11-22 クアルコム,インコーポレイテッド 再マッピング同期によるタスクサブグラフの加速化

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675786A (ja) * 1992-08-26 1994-03-18 Hitachi Ltd タスクスケジュリング方法
JPH0916527A (ja) * 1995-06-30 1997-01-17 Nippon Telegr & Teleph Corp <Ntt> 大規模分散情報処理方法及びシステム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011170879A (ja) 2004-03-08 2011-09-01 Ab Initio Technology Llc 依存性グラフのパラメータのスコーピング
JP2014182606A (ja) 2013-03-19 2014-09-29 Denso Corp 演算装置およびプログラム
JP2015225396A (ja) 2014-05-26 2015-12-14 日立オートモティブシステムズ株式会社 車両制御装置
JP2018534675A (ja) 2015-10-16 2018-11-22 クアルコム,インコーポレイテッド 再マッピング同期によるタスクサブグラフの加速化

Also Published As

Publication number Publication date
JP2020173622A (ja) 2020-10-22

Similar Documents

Publication Publication Date Title
EP2728473B1 (en) Systems and methods for instruction entity allocation and scheduling on multi-processors
US8020161B2 (en) Method and system for the dynamic scheduling of a stream of computing jobs based on priority and trigger threshold
US8607240B2 (en) Integration of dissimilar job types into an earliest deadline first (EDF) schedule
EP2624135B1 (en) Systems and methods for task grouping on multi-processors
JP2012511204A (ja) リソースを最適化するためのタスク再編成方法
Liu et al. Bursty-interference analysis techniques for analyzing complex real-time task models
Huang et al. PASS: Priority assignment of real-time tasks with dynamic suspending behavior under fixed-priority scheduling
JP7267819B2 (ja) 並列タスクスケジューリング方法
JP7461947B2 (ja) プロセッサにおける余裕認識(laxity-aware)型動的優先度変更
Liu et al. Elastic job bundling: An adaptive resource request strategy for large-scale parallel applications
Wang et al. Global fixed priority scheduling with preemption threshold: Schedulability analysis and stack size minimization
Xu et al. Semi-partitioned model for dual-core mixed criticality system
JP2020095441A (ja) 演算制御装置
Bertout et al. Minimizing a real-time task set through task clustering
Sun et al. Real-time scheduling and analysis of synchronous openmp task systems with tied tasks
Wasly et al. Bundled scheduling of parallel real-time tasks
CN110088730B (zh) 任务处理方法、装置、介质及其设备
Thekkilakattil et al. Multiprocessor fixed priority scheduling with limited preemptions
KR20130022707A (ko) 위상 정렬 및 잉여 시간을 기반으로 하는 주기 및 비주기 실시간 태스크 스케줄링 알고리즘
Schorr Adaptive real-time scheduling and resource management on multicore architectures
Rivera-Verduzco et al. Best-case response times of real-time tasks under fixed-priority scheduling with preemption thresholds
Thai et al. Minimising the execution of unknown Bag-of-Task jobs with deadlines on the Cloud
WO2018198745A1 (ja) 計算資源管理装置、計算資源管理方法、及びコンピュータ読み取り可能な記録媒体
Jiang et al. Scheduling parallel real-time tasks on virtual processors
Qamhieh et al. An experimental analysis of DAG scheduling methods in hard real-time multiprocessor systems

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190412

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20211026

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20211109

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230105

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230420

R150 Certificate of patent or registration of utility model

Ref document number: 7267819

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150