IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ クロノ−セーフの特許一覧

特許7266590リアルタイムタスク間の低レイテンシ通信を保証する順序付け計画を実行するための方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-20
(45)【発行日】2023-04-28
(54)【発明の名称】リアルタイムタスク間の低レイテンシ通信を保証する順序付け計画を実行するための方法
(51)【国際特許分類】
   G06F 9/48 20060101AFI20230421BHJP
【FI】
G06F9/48 300F
【請求項の数】 7
(21)【出願番号】P 2020521334
(86)(22)【出願日】2018-10-08
(65)【公表番号】
(43)【公表日】2020-12-17
(86)【国際出願番号】 FR2018052476
(87)【国際公開番号】W WO2019073156
(87)【国際公開日】2019-04-18
【審査請求日】2021-09-24
(31)【優先権主張番号】1759487
(32)【優先日】2017-10-10
(33)【優先権主張国・地域又は機関】FR
(73)【特許権者】
【識別番号】520126000
【氏名又は名称】クロノ-セーフ
(74)【代理人】
【識別番号】100114775
【弁理士】
【氏名又は名称】高岡 亮一
(74)【代理人】
【識別番号】100121511
【弁理士】
【氏名又は名称】小田 直
(74)【代理人】
【識別番号】100202751
【弁理士】
【氏名又は名称】岩堀 明代
(74)【代理人】
【識別番号】100208580
【弁理士】
【氏名又は名称】三好 玲奈
(74)【代理人】
【識別番号】100191086
【弁理士】
【氏名又は名称】高橋 香元
(72)【発明者】
【氏名】バーボット,エイドリアン
(72)【発明者】
【氏名】デイビッド,ヴィンセント
(72)【発明者】
【氏名】オハヨン,エマニュエル
【審査官】坂庭 剛史
(56)【参考文献】
【文献】特表2017-503251(JP,A)
【文献】特開2005-100264(JP,A)
【文献】特開平08-055036(JP,A)
【文献】国際公開第2016/046931(WO,A1)
【文献】特開2006-268754(JP,A)
【文献】特開2002-099432(JP,A)
【文献】特開平10-171667(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
リアルタイムシステムで実行される複数のタスク(Tp,Tc)のための順序付け計画をオフラインで構築するための方法であって、前記方法は、
・各タスク(Tp,Tc)をフレームのシーケンスに分解する工程であって、各フレームは実行必要性(Bp(m))を有する基本プロセス(Tp(m))に関連づけられており、かつ前記プロセスが開始することができる開始日(Dp(m))および前記プロセスが完了しなければならない終了日(Dp(m+1))すなわちデッドラインを定める工程と、
・それぞれの順序制約(C)をプロセス対(Tp(m),Tc(n))に関連づける工程と、
タイムスロットのシーケンスを形成するように、前記リアルタイムシステムの実行ユニットに関連づけられた時間スケール(S)で日付を計画する工程であって、前記日付は、前記リアルタイムシステムの同期点に対応し、各タイムスロットは、ある同期点とその直後の同期点との間の時間間隔に対応する工程と、
・前記タイムスロットのシーケンスを連続的に解析する工程と、
・現在のタイムスロット内で適格プロセスを特定する工程であって、プロセスは、
-それが前記現在のスロットにおいて実行可能である、および
-それが順序制約を有する場合、前記順序制約によって参照されるプロセスも前記現在のタイムスロットにおいて実行可能であるか、あるいは前記参照されるプロセスのデッドラインが前のタイムスロット内にある
という2つの基準を満たせば適格である工程と、
・リスト内で前記適格プロセスをデッドラインの昇順でソートする工程と、
・それらの順序制約に従って前記リストを修正して前記プロセスを再順序付けする工程と、
・前記適格プロセスの実行必要性を前記リストの順序で前記現在のタイムスロット内に分散させて前記順序付け計画を構築する工程と、
を含む、方法。
【請求項2】
そのフレームがオーバーラップしていない2つのプロセスからなる各対において順序制約を除去する最初の工程を含む、請求項1に記載の方法。
【請求項3】
前記リストを修正する工程および前記実行必要性を分散させる工程は、
・前記プロセスのリストを連続的に解析する工程と、
・前記リスト内の現在のプロセスが前記リスト内の現在のプロセスの後に配置されているプロセスを参照する順序制約を有する場合、前記参照されるプロセスを前記現在のプロセスの前に移動させることによって前記リストを修正する工程と、
・前記移動させた参照されるプロセスの位置で開始するリスト解析工程を再開する工程と、
・そうでなければ前記現在のプロセスの実行必要性を前記現在のスロット内に配置する工程と、
を含む、請求項1に記載の方法。
【請求項4】
前記実行必要性を配置する工程は、
・前記スロットがそれを収容するのに十分なスペースを有する場合には前記実行必要性を前記現在のスロット内に完全に配置する工程と、
・そうでなければ前記現在のスロットを前記実行必要性の最初の部分で埋め、かつ前記実行必要性の残りの配置をその後のスロットに延期する工程と、
を含む、請求項2に記載の方法。
【請求項5】
前記リアルタイムシステムは複数の実行ユニットを含み、前記方法は、
・前記タイムスロットのシーケンスのコピー(Sp,Sc)を各実行ユニットに関連づけて各実行ユニットのために順序付け計画を形成する工程と、
・順序制約によって結び付けられたプロセスが異なる実行ユニットで実行されるように実行ユニットにタスク(Tp,Tc)を割り当てる工程と、
・前記実行必要性を配置する工程において、
-前記実行必要性(Bp2(m))を前記現在のプロセスに関連づけられた計画(Sp)の現在のスロット内に配置する工程と、
-前記参照されるプロセスに関連づけられた計画(Sc)の現在のスロット内に、2つの実行ユニット間でのデータ通信において生じる遅延および前記2つの実行ユニットのクロック間のずれを考慮に入れる同期時間(tsync)によって増加した前記配置された実行必要性に対応する埋め込み間隔(tpad)を配置する工程と、
をさらに含む、請求項3に記載の方法。
【請求項6】
前記実行必要性を前記現在のスロット内に配置する工程は、前記実行必要性を前記現在のスロットに含まれているあらゆる埋め込み間隔内に配置する工程を含む、請求項5に記載の方法。
【請求項7】
リアルタイムマルチタスキングシステムにおいてタスクを実行する方法であって、
・請求項1に記載のマルチタスク順序付け計画を生成する工程と、
・リアルタイムマルチタスキングシステム実行ユニットを構成して前記順序付け計画をループで適用する工程と、
・前記リアルタイムマルチタスキングシステムの時間基準を構成して前記順序付け計画のタイムスロットの時間を計測する工程と、
・対応する実行必要性が各スロット内に分散されている順序で前記スロットの適格プロセスを連続的に実行する工程と、
・プロセス実行時間が前記対応する実行必要性に一致するかをチェックする工程と、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はハードリアルタイムマルチタスキングシステムに関し、より具体的にはそのようなシステムにおけるタスク間通信のための技術に関する。
【背景技術】
【0002】
ハードリアルタイムシステム、すなわち動作の実行における遅延によるあらゆるデッドライン違反に耐えられないシステムでは、タスクは静的スケジューリング方法を使用して実行されることが多い。その時、静的順序付け計画はオフラインで構築されており、実行リソースを使用するための必要性の静的時間割り当てを表す。そのような手法は、例えば論文[「セーフティクリティカルリアルタイムシステムにおける適時性をモデル化および保証するための方法および技術(A Method and a Technique to Model and Ensure Timeliness in Safety Critical Real-Time Systems)」,C.Aussagues,V.David,第4回IEEE:複雑なコンピュータシステム工学に関する国際会議(Fourth IEEE International Conference on Engineering of Complex Computer Systems),1998]ならびに国際公開第2006/050967号および米国特許出願公開第2010/0199280号に記載されている。
【0003】
静的順序付け計画は、実行ユニットにおいてタイムシェアリングモードで実行されるいくつかの並列タスクを含んでいる場合がある。これらのタスクは互いに通信する場合もある。例えば、第1のタスクがセンサからの規則的な測定を行う一方で、第2のタスクは生成された測定値をサンプリングして制御を実行する場合がある。
【0004】
そのような構成では、データが生成タスクによって提供される瞬間とそのデータが消費タスクによって読み込まれる瞬間との間にレイテンシが生じる可能性がある。いくつかの状況ではレイテンシは、生成されたデータを用いる制御システムの安定性または応答性に影響を与えるほど大きくなることがある。
【発明の概要】
【0005】
リアルタイムシステムにおいて実行される複数のタスクのための順序付け計画をオフラインで構築するための方法であって、各タスクをフレームのシーケンスに分解する工程であって、各フレームは実行必要性を有する基本プロセスに関連づけられており、かつ当該プロセスを開始することができる開始日および当該プロセスを完了させなければならない終了日すなわちデッドラインを定める工程と、それぞれの順序制約をプロセス対に関連づける工程と、リアルタイムシステムの実行ユニットに関連づけられた時間スケールで日付を計画し、このようにしてタイムスロットのシーケンスを形成する工程と、タイムスロットのシーケンスを連続的に解析する工程と、現在のタイムスロット内で適格プロセスを特定する工程であって、プロセスは、i)それが現在のスロットにおいて実行可能である、およびii)それが順序制約を有する場合、順序制約によって参照されるプロセスも現在のタイムスロットにおいて実行可能であるか、あるいは参照されるプロセスのデッドラインが前のタイムスロット内にある、という2つの基準を満たす場合に適格である工程と、リスト内で適格プロセスをデッドラインの昇順でソートする工程と、それらの順序制約に従って当該リストを修正して当該プロセスを再順序付けする工程と、適格プロセスの実行必要性を当該リストの順序で現在のタイムスロット内に分散させて順序付け計画を構築する工程とを含む方法が一般に提供される。
【0006】
本方法は、そのフレームがオーバーラップしていない2つのプロセスからなる各対において順序制約を除去する最初の工程を含んでもよい。
【0007】
当該リストを修正する工程および実行必要性を分散させる工程は、当該プロセスのリストを連続的に解析する工程と、当該リスト内の現在のプロセスが当該リスト内の現在のプロセスの後に配置されているプロセスを参照する順序制約を有する場合は、参照されるプロセスを現在のプロセスの前に移動させることによって当該リストを修正する工程と、移動させた参照されるプロセスの位置で開始するリスト解析工程を再開する工程と、そうでなければ現在のプロセスの実行必要性を現在のスロット内に配置する工程とを含んでもよい。
【0008】
実行必要性を配置する工程は、当該スロットがそれを収容するのに十分なスペースを有する場合には実行必要性を現在のスロット内に完全に配置する工程と、そうでなければ現在のスロットを実行必要性の最初の部分で埋める工程と、実行必要性の残りの配置をその後のスロットに延期する工程とを含んでもよい。
【0009】
リアルタイムシステムは複数の実行ユニットを含んでもよい。次いで本方法は、タイムスロットのシーケンスのコピーを各実行ユニットに関連づけて各実行ユニットのために順序付け計画を形成する工程と、順序制約によって結び付けられたプロセスが異なる実行ユニットで実行されるように実行ユニットにタスクを割り当てる工程と、実行必要性を配置する工程において、i)実行必要性を現在のプロセスに関連づけられた計画の現在のスロット内に配置する工程、およびii)2つの実行ユニット間でのデータ通信において生じる遅延および2つの実行ユニットのクロック間のずれを考慮に入れる同期時間によって増加した配置された実行必要性に対応する埋め込み間隔を参照されるプロセスに関連づけられた計画の現在のスロット内に配置する工程とをさらに含んでもよい。
【0010】
実行必要性を現在のスロット内に配置する工程は、実行必要性を現在のスロットに含まれているあらゆる埋め込み間隔内に配置することを含んでもよい。
【0011】
リアルタイムマルチタスキングシステムにおいてタスクを実行するための方法であって、上記方法に従ってマルチタスク順序付け計画を生成する工程と、リアルタイムマルチタスキングシステム実行ユニットを構成して順序付け計画をループで適用する工程と、リアルタイムマルチタスキングシステムの時間基準を構成して順序付け計画のタイムスロットの時間を計測する工程と、対応する実行必要性が当該スロット内に分散されている順序で各スロットの適格プロセスを連続的に実行する工程と、プロセス実行時間が対応する実行必要性に一致するかをチェックする工程とを含む方法も提供することができる。
【0012】
実施形態について添付の図面に関連する以下の非限定的な説明において詳しく説明する。
【図面の簡単な説明】
【0013】
図1A】フレームのシーケンスと呼ばれる形式の通信することができる2つのタスクの例を示す。
図1B】フレームのシーケンスと呼ばれる形式の通信することができる2つのタスクの例を示す。
図2A図1Bのタスクから順序付け計画を構築するための2つの可能性を表す。
図2B図1Bのタスクから順序付け計画を構築するための2つの可能性を表す。
図3A】3つの通信タスクの例を表すフレームのシーケンスのグループおよび通信レイテンシを減少させるかさらには排除するための方法を用いて構築された対応する順序付け計画を示す。
図3B】3つの通信タスクの例を表すフレームのシーケンスのグループおよび通信レイテンシを減少させるかさらには排除するための方法を用いて構築された対応する順序付け計画を示す。
図4A】2つの通信タスクの例を表す一対のフレームのシーケンスおよび通信レイテンシを減少させるための他の方法を用いて構築された対応する順序付け計画を示す。
図4B】2つの通信タスクの例を表す一対のフレームのシーケンスおよび通信レイテンシを減少させるための他の方法を用いて構築された対応する順序付け計画を示す。
図5A】2つの通信タスクの例を表す一対のフレームのシーケンスおよび通信レイテンシを減少させるかさらには解消するための方法を用いて2つの実行ユニットのためにそれぞれ構築された2つの対応する順序付け計画を示す。
図5B】2つの通信タスクの例を表す一対のフレームのシーケンスおよび通信レイテンシを減少させるかさらには解消するための方法を用いて2つの実行ユニットのためにそれぞれ構築された2つの対応する順序付け計画を示す。
【発明を実施するための形態】
【0014】
図1Aは、リアルタイムシステムにおいて並行して実行することができる、データを生成するタスクTpの例およびデータを消費するタスクTcの例を示す。各タスクは、Krono-Safe社の米国特許出願公開第2017/0004011号において提案されているように形式化することができる。それに応じて、各タスクはフレームの繰り返しシーケンスに分割されており、基本プロセスTp(m)およびTc(n)(ここではmおよびnはプロセスのシーケンス番号である)に関連づけられている。フレームの境界は、同期点またはプロセスの時間制約を形成する日付DpおよびDcによって定められる。各プロセスは第1の同期点すなわち開始日で開始することができ、かつ遅くとも第2の同期点すなわちデッドラインで終了しなければならない。
【0015】
同期点は実行中に、リアルタイムシステムの時間を計測する時間基準HpおよびHcに従って選択される。それらは多くの場合、周期的であるか周期的シーケンスにグループ化されている。
【0016】
また各プロセスは実行必要性(以後Bという)を有し、これは例えば最悪実行時間(またはWCET)である対応するフレームの長さに満たない時間間隔によって形式化される可能性がある。実行必要性は、静的順序付け計画の構築の後の段階において実装される制約に応じて、当該フレームおよび単一の断片またはいくつかの非隣接区間の中にあらゆる方法で使用される場合がある。
【0017】
タスク間通信を確立するために、タスクTpの個々のプロセスはタスクTcのプロセスのためのデータを生成するように設計することができる。ここでは、プロセスTp(m)はプロセスTc(n)のためのデータを生成する。このデータは例えば共有メモリを介して交換される。従って、プロセスTp(m)の終了は通常、データを共有メモリに書き込むように設計されており、プロセスTc(n)の開始は共有メモリからデータを読み込むように設計されている。
【0018】
図1Aの例では、プロセスTc(n)の開始日Dc(n)はプロセスTp(m)のデッドラインDp(m+1)の後である。これは、レイテンシがDc(n)-Dp(m+1)よりも大きい場合にのみ、プロセスTc(n)は常にプロセスTp(m)によって生成されたデータを消費することができることを意味する。
【0019】
図1Bの例では、プロセスTc(n)の開始日Dc(n)はプロセスTp(m)のデッドラインDp(m+1)の前である。これは、全ての場合にプロセスTc(n)がプロセスTp(m)によって生成されたデータを消費することができることを保証できるとは限らないことを意味する。さらに、プロセスTc(n+1)の開始日Dc(n+1)もデッドラインDp(m+1)の前である。この場合、確実にデータを消費することができる最初のプロセスはTc(n+2)であり、しかもレイテンシがDc(n+2)-Dp(m+1)よりも大きい場合のみである。
【0020】
図2Aは、図1Bに示すようなタスクTpおよびTcのフレームのシーケンスから開発ツールによって自動的に生成することができる静的順序付け計画区間を示す。
【0021】
そのようなツールは、全てのタスクの同期点を時間スケールSで計画して連続的タイムスロットのシーケンスを作り出すように設計されていてもよい。リアルタイムシステムがいくつかのプロセッサコアまたは実行ユニットを備えている場合、当該ツールは各実行ユニットのために別個の同期点計画を生成する。当該ツールはこれらのスロットを順々に処理して、可能であれば時間制約が満たされるようにプロセス必要性を分散させるが、場合によっては当該ツールは解決法を見つけることができず、これは当該開発者が例えば並列タスクの数を減らすか制約を緩めた後に新しい繰り返しを行なわなければならないことを意味する。
【0022】
より具体的には、観察されている各タイムスロットのために、当該ツールは当該スロットにおける実行のために適格であるプロセス、すなわち観察されているタイムスロットにおいて開始または継続することができる各プロセスをリストにする。観察されているタイムスロットにおいて「継続する」ことができるプロセスは、実際には前のタイムスロットにおいて開始されたプロセスの残りである。実際には、フレームはいくつかのスロットをオーバーラップさせることができ、この場合、対応するプロセスの実行必要性はオーバーラップされているスロットにわたって断片化される場合がある。実行時間に、この断片化はオペレーティングシステムのプリエンプションによって対応するプロセスの停止および再開を引き起こし、各停止および再開はプロセス実行コンテキストを保存および復元するために固定されたオーバーヘッドを犠牲にする。この断片化は静的に達成されるので、固定されたオーバーヘッドの空きを決定することができ、時間制約との整合性をチェックする際にこれを実行必要性に追加してもよい。
【0023】
適格プロセスのために、当該ツールは実行必要性を所与の順序、好ましくはデッドラインの昇順で当該スロット内に分散させる。同期点が周期的または調和的である場合に定期的に起こることであるが、デッドラインが同一である場合は、実行必要性を任意の順序、例えばプロセス識別子のアルファベット順で分散させてもよい。
【0024】
図2Aでは、スロット[Dp(m),Dc(n)]内の唯一の適格プロセスはTp(m)である。このスロットはプロセスTp(m)の必要性の最初の部分Bp1(m)によって埋められている。次のスロット[Dc(n),Dc(n+1)]では、プロセスTc(n)およびTp(m)が適格である。デッドラインの順序は、プロセスTc(n)の必要性Bc(n)が最初に配置され、次いでプロセスTp(m)の必要性の残余Bp2(m)が配置されていることを示している。
【0025】
従来通りに利用可能な全てのパラメータおよび制約を用いて得ることができたこの順序付け計画は、プロセスTp(m)によって生成されたデータをプロセスTc(n)によって消費することができず、これにより消費プロセスのために図1Aおよび図1Bに示されている選択に至ったことを示す。
【0026】
対照的に、図2B図1Bのタスクと互換性のある順序付け計画を示し、ここではプロセスTc(n)はレイテンシなしにプロセスTp(m)によって生成されたデータを消費することができる。この例では、図示のように必要性Bc(n)の前に残余Bp2(m)を配置するのに十分である。
【0027】
(なお、図示されている例はこれまでのところ、明確性のために開発された事例研究である。所与の方法によって得られた結果を所望の結果と比較する図2Aおよび図2Bの事例は取るに足らないように見え得る解決法に導く。但しこれは、この解決法が実際の状況では一般的かつ自動化された方法で機能するものであり、ここでは順序付け計画は多くの並列タスクのために生成され、それらのそれぞれが多くの処理および通信相互依存性を有し得るという事実によって軽減されるに違いない)。
【0028】
以下に、当該開発者によって選択されたプロセス間にCで表されている順序制約を導入することによって、図2Bに示されている種類のゼロレイテンシ順序付け計画に向かいやすい方法論が提案されている。従って、フレーム(開始日、デッドラインおよび実行必要性)によって形式化されたプロセスは、別のプロセスを参照する順序制約によっても特徴づけることができる。
【0029】
本方法を実際に有用なものにするために、そのような順序制約によって結び付けられた2つのプロセスのフレームはオーバーラップを有し、すなわち2つの結び付けられたプロセスが同時に実行可能な共通の時間間隔が存在する。その結果、この2つの結び付けられたプロセスは2つの別個のタスクからのものとなる(例えば、図1BのプロセスTp(m)およびTc(n)またはTc(n+1))。そうでなければ、順序制約は時間制約によって体系的に満たされ、かつ冗長になる(例えば図1Aの事例)。
【0030】
このように形成された対の2つのプロセスは、相互制約、一方のための優先順位制約および他方のための劣後順位制約によって特徴づけられる。優先順位制約は対応するプロセスを参照されるプロセスの開始前に完了させる必要がある一方で、劣後順位制約は対応するプロセスを参照されるプロセスの終了後に開始させる必要がある。一実施形態によれば、同じプロセスをいくつかの順序制約に従わせることができ、これによりプロセス間の依存チェーン、一般的に言えば依存ツリーを構築することを可能にしてもよい。
【0031】
プロセス対の劣後および優先順位制約は相互関係にあり、従って、一方はこれらの相互制約のうちの1つのみを利用して順序付け計画を構築することができる。以下の説明では、優先順位制約のみが利用されている。その結果、結び付けられたプロセスの各対において、プロセスのうちの1つのみが優先順位制約を有し、他方のプロセスは制約を有しないものとみなすことができる(同等の代替法は優先順位制約のみを利用することができるであろう)。
【0032】
次いで、これらの新しい制約を考慮に入れるように開発ツールを設計して静的順序付け計画を構築し、全てのタスクを統合する。より具体的には、当該ツールは、フレームのシーケンスおよび優先順位制約のセットによって定義される並列タスクグループに以下の工程を実装してもよい。
【0033】
1.タイムスロットのシーケンスを得るためにタスクの同期点に対応する日付を同じ時間スケールSで計画する。タイムスロットのシーケンスは順序付け計画の骨格をなす。
【0034】
2.タイムスロットを連続的に解析し、現在のタイムスロットを観察する。
【0035】
3.現在のスロット内の適格プロセスのリスト、すなわち以下の2つの基準を満たすプロセスのセットを特定する。
【0036】
3.1.当該プロセスは実行可能であり、すなわち現在のタイムスロットが当該プロセスの開始日と終了日との間に含まれている。
【0037】
3.2.当該プロセスが優先順位制約Cを有する場合、この制約によって参照されるプロセスも実行可能であるか(例えば図1B、間隔[Dc(n),Dc(n+1)]、Tc(n)がTp(m)を参照すると仮定)、あるいは参照されるプロセスのデッドラインは前のタイムスロット内にある(図1A)。
【0038】
この基準は、現在のスロット内で利用可能にはなり得ないデータを消費するあらゆるプロセスを排除する。
【0039】
プロセス間の依存のチェーンが実装されている一実施形態では、この基準は、依存ツリー全体に目を通してそのツリー内の全てのプロセスが実行可能であることを決定することを含んでもよい。次いで、そのツリー内のプロセスの少なくとも1つが実行可能でない場合、ツリー全体を適格プロセスから除去する。
【0040】
4.適格プロセスをデッドラインの昇順で順序付けし、ソートされたリスト内に配置する。このリストは、対応する実行必要性が順序付け計画の現在のスロット内に配置される順序を決定するための開始点を提供する。
【0041】
当該リストは順序制約によって結び付けられたプロセスの対を含む可能性が高く、各対のプロセスが正しい順序(生成タスク-消費タスク)で配置されることは保証されてない。以下の工程は、そのそれぞれの生成タスクプロセスの後に各消費タスクプロセスが配置されるように当該リストを再順序付けすることを目的としている。
【0042】
5.ソートされたリストを連続的に解析し、かつ当該リストの現在のプロセスを観察する。
【0043】
5.1.現在のプロセスが優先順位制約を有しない場合、このプロセスに対応する実行必要性を現在のスロット内に配置する。この実行必要性は前のスロットからの残余であってもよい。この残余はゼロであってもよく、これは実行必要性が前のスロット内に完全に配置されたことを意味する。実行必要性を現在のスロット内に完全に配置することができない場合、現在のスロットを実行必要性の最初の部分で埋め、かつ残りの部分を次のスロットのために取っておく。当該プロセスを工程5から繰り返す。
【0044】
いくつかの状況では、この段階では現在のスロットの終了は現在のプロセスのデッドラインであり、かつ当該スロットは実行必要性を含むことができない可能性がある。その際、定義されているタスクは考察中のリアルタイムシステムにおいて並行して実行可能でなく、かつ当該開発者は当該タスクを再設計することを必要とする場合がある。
【0045】
実行必要性は好ましくは、当該スロットの終了時に可能な限り多くのスペースを残すために、当該スロットの開始から隣接して配置する。
【0046】
5.2.現在のプロセスが優先順位制約を有する場合。
【0047】
5.2.1.参照されるプロセスが当該リスト内の現在のプロセスの前に配置されている場合、当該リストの順序は正しい。現在のプロセスの実行必要性を工程5.1と同様に配置し、かつこの手順を工程5から繰り返す。
【0048】
状況に応じて、2つの関連するプロセスを当該リスト内の別のプロセスによって分離してもよい。この特定の事例では、通信レイテンシはゼロにはならないが、この2つのプロセスが異なるスロット内で実行可能であればそれは著しく低下する。
【0049】
5.2.2.参照されるプロセスを当該リスト内の現在のプロセスの後に配置した場合、当該リストは参照されるプロセスを現在のプロセスの前に、好ましくは直前に移動させることによって修正してゼロレイテンシ通信を達成する。当該リスト内の同じ位置、すなわち移動させたばかりのプロセスを含む位置から再開させることにより、この手順を工程5から繰り返す。
【0050】
依存のチェーンの場合、移動させたプロセスも優先順位制約を有する可能性があり、この場合、当該リストの新しい修正は工程5.2の再繰り返し時に行ってもよい。
【0051】
6.次のタイムスロットのために本方法を工程2から繰り返す。
【0052】
本方法は、冗長な順序制約、すなわち同期点の構成によって必ず尊重される順序制約を除去するための最初の工程を含んでもよい。そのような制約はオーバーラップしていないフレームを有するプロセスにおいて常に生じる。
【0053】
本方法は、フレームの無限シーケンスに適用可能である。当然ながら実用的な事例では、各タスクはプロセスの有限シーケンス、特に繰り返しシーケンスによって定められる。次いで順序付け計画におけるいくつかのタスクの組み合わせは、当然のことながら、その期間が個々のタスクを含む繰り返しシーケンスの最も小さい共通の複数の期間である繰り返し順序付け計画を生成するが、任意の長さの繰り返し順序付け計画を生成することも可能である。どちらの場合であっても、順序付け計画の繰り返しが検出された場合には本方法を繰り返しのままにしておくことが可能である。
【0054】
このように開発された順序付け計画を使用してリアルタイムマルチタスキングシステムを構成してタスクの実行を制約する。より具体的には、実行ユニットを無限ループで順序付け計画を適用するように構成する。このシステムの時間基準は、タイムスロットの時間を計測する同期点を生成するように構成されている。各スロットにおいて、実行ユニットは当該スロット内の実行必要性の配置に従って当該プロセスを連続的に開始する(または再開する)。監視タイマーは、対応する実行必要性を有するプロセスの実行時間の一致を制御する。
【0055】
図3Aは、比較的複雑な例を用いた上記方法の実装を示すために使用されている。この例では、タスクTpは2つの他のタスクTc1およびTc2によって消費されるデータを生成する。このデータは、開始日Dp(m)およびデッドラインDp(m+1)を有するフレームに関連づけられたプロセスTp(m)によって生成される。このデータは2つのタスクTc1およびTc2の2つのそれぞれのプロセスTc1(n)、Tc2(p)によって消費され、これは優先順位制約C1およびC2によって形式化されている。またプロセスTc1(n)はプロセスTc2(p)によって生成されたデータを消費し、これは優先順位制約C3によって形式化されている。プロセスTc1(n)およびTc2(p)は同じ長さの2つのフレームに関連づけられており、かつプロセスTp(m)と同じデッドラインDc1(n+1)、Dc2(p+1)を有する。プロセスTc1(n)およびTc2(p)の開始日Dc1(n)およびDc2(p)は、プロセスTp(m)の開始日と同じ日またはそれ以前である。
【0056】
図3Bは上記方法の工程の適用により得られる順序付け計画を示す。
【0057】
工程1では、異なるタスクの日付をスケールSで計画する。いくつかの同じ日付のうち、最初のもののみが示されている。
【0058】
工程2の最初の繰り返しでは、スロット[Dc1(n),Dp(m)]を観察する。
【0059】
工程3では、どのプロセスも適格なものとして選択されない。実際には、プロセスTc1(n)およびTc2(p)が実行可能であるが、それらは優先順位制約C1およびC2によって、現在のスロットにおいて実行可能でないプロセスTp(m)にリンクされている。図3Bに示すように当該スロットは空のままである。
【0060】
工程2を繰り返してスロット[Dp(m),Dp(m+1)]を観察する。
【0061】
工程3では、これらの3つのプロセスが基準3.1によって実行可能である。それらは、実行不可能なプロセスを参照する優先順位制約を有しないため、それらも基準3.2に従って適格である。
【0062】
工程4では、当該プロセスを昇順デッドラインによって正常にソートされたリスト内に配置する。それらのデッドラインは同日であるため、当該プロセスは任意の順序、例えばそれらの識別子のアルファベット順でソートされる。次いで当該リストは{Tc1(n),Tc2(p),Tp(m)}となる。この順序は正しくなく、次の工程で訂正される。
【0063】
工程5では、当該リスト内の最初のプロセスTc1(n)を検討する。このプロセスが「Tp(m)の後」の優先順位制約C1を有するので、工程5.2が実行される。テスト5.2.1が失敗し、工程5.2.2が実行される。その結果、プロセスTp(m)はプロセスTc1(n)の前に移動され、リスト{Tp(m),Tc1(n),Tc2(p)}が得られる。
【0064】
工程5を再開して、プロセスTp(m)を現在含んでいるリスト内の同じ位置を観察する。工程5.1におけるテストは、プロセスTp(m)が優先順位制約を有しないので合格となる。図3Bに示すように、このプロセスの実行必要性Bp(m)を現在のスロットの最初に完全に配置してもよい。
【0065】
工程5を再開して、当該リスト内の次のプロセスTc1(n)を検討する。このプロセスは、まだ検討されていないプロセスである「Tc2(p)の後である」という優先順位制約C2を有する。プロセスTc2(p)を工程5.2.2においてプロセスTc1(n)の前に移動させ、リスト{Tp(m),Tc2(p),Tc1(n)}を生成する。
【0066】
工程5を繰り返してこの修正されたリスト内のプロセスTc2(p)を検討する。このプロセスは工程5.2.1におけるテストに合格し、図3Bに示すように実行必要性Bc2(p)を現在のスロット内に完全に配置してもよい。
【0067】
プロセスTc1(n)のために工程5を最後にもう一度だけ繰り返す。今回は当該プロセスは工程5.2.1におけるテストに合格し、図3Bに示すように実行必要性Bc1(n)を現在のスロット内に完全に配置してもよい。
【0068】
本方法を図1Bの例に適用し、プロセスTc(n)がプロセスTp(m)によって生成されたデータを消費するように制約されていると仮定すると、図2Bのゼロレイテンシ順序付け計画は達成される。
【0069】
図4Aおよび図4Bは、順序制約を考慮に入れる順序付け計画を提供することができる他の技術を示す。
【0070】
図4Aでは、生成タスクプロセスTp(m)および消費タスクプロセスTc(n)を図3Aの最初の2つのタスクと同じ条件で考察する。この代替法によれば、2つのプロセス間に順序制約に関連づけられた中間同期点D’を配置することが求められている。この点D’は、生成タスクプロセスのデッドラインDp(m+1)および消費タスクプロセスの開始日Dc(n)を置き換えるためのものである。図示のとおり、この同期点はDp(m)+Bp(m)からDc(n+1)-Bc(n)の日付範囲D’possに任意に配置することができる。
【0071】
図4Bでは、同期点を時間スケールSで計画してもよいが、消費タスクプロセスの開始日Dc(n)および生成タスクプロセスのデッドラインDp(m+1)を同じ中間点D’まで移動させる。次いで得られたスロットは、順序制約を今度は検討することなく通常どおりに順々に処理することができ、これにより図4Bに示されている順序付け計画が得られる。その変動範囲の中心に向かう点D’の位置について取り上げられている例から、プロセスTp(m)およびTc(n)間のレイテンシは低いがゼロではないことが分かる。
【0072】
そのような順序付け計画を実行するために、リアルタイムシステムにさらなる時間基準を設けて中間同期点D’を実現することができ、これはその時に開発ツールまたは開発者によっていくつかの離散値の中から静的に選択される。しかし、そのような手順は並列タスクをスケジューリングする可能性の数を著しく減少させる恐れがある。例えば、点D’をその範囲の最初に配置するとゼロレイテンシに向かいやすいが、実行必要性Bp(m)は配置のためのどんな空きももはや有しない。
【0073】
実際には、点D’を2つの段階で一時的に使用することができる。第1の段階では、スケールSでの同期点の計画のために、それをその変動範囲の終わりに配置する。これにより最大で可能な自由を残して実行必要性分配段階の間に実行必要性Bp(m)を配置する。実行必要性Bp(m)をそのスロット[Dp(m),D’]内に配置した後に、点D’を当該スケールから除去し、これにより、さらなる動作のためにスロット[Dp(m),D’]および[D’,Dc(n+1)]を併合させる。これは実行必要性Bc(n)を配置するための自由度を増加させ、リアルタイムシステムにおいて改変された時間基準の使用をもはや必要としない。
【0074】
この手順はその際、上記6つの工程手順に相当する。この代替法を用いた場合、ゼロレイテンシ通信を得る確率はより低くなるが、順序制約を使用しなかった場合よりもなお良くなる。
【0075】
これまでのところ、静的順序付け計画は単一の実行ユニットまたは単一のコアプロセッサのために構築されるものとみされていた。本方法はマルチコアプロセッサまで拡張させることができる。この場合、時間スケールSによって定められるタイムスロットのシーケンスを各実行ユニットのために複製し、各実行ユニットのために順序付け計画を構築するために全てのタスクの実行必要性を複数のシーケンスに分散させることを試みる。得られたスロットのシーケンスをそれぞれの時間基準または実行ユニットのクロックにより整列させる。明確性のために、図においてクロックは同一であるとみなす。現実には、これらのクロックは互いに対してずれる場合があり、クロック間に生じたずれを後で説明するように同期時間tsyncによって考慮に入れることができる。
【0076】
実際には、各タスクを同じ実行ユニットに静的に割り当てる。2つの相互依存的なタスクをこのように同じ実行ユニットに割り当てる場合、それらが立ち上がるにつれて上記教示が適用される。
【0077】
但し、相互依存的なタスクはいくつかの異なる実行ユニットに割り当ててもよい。この場合、本方法は以下のように完了する。
【0078】
実行必要性を「現在のスロット」内に配置するというあらゆる言及は、タスクに割り当てられた実行ユニットに関連づけられたシーケンスのスロットを指す。言い換えると、スケールS上の全てのスロットに対応する同じスロットは同時に「現在のスロット」、すなわち各実行ユニットのための1つの現在のスロットである。
【0079】
工程3で確立されたプロセスリストは、割り当てられた実行ユニットに関わらず全てのプロセスを含む。
【0080】
上記工程5.2.1を以下のように書き換える(角括弧[]内の部分は元の工程から追加されたものである)。
【0081】
5.2.1.参照されるプロセスが当該リスト内の現在のプロセスに先行する場合、当該リストの順序は正しい。
【0082】
[参照されるプロセスが異なる実行ユニットに割り当てられている場合、埋め込み間隔tpadを現在のスロット内に配置する。この埋め込み間隔は、上記同期時間tsyncによって増加した他の実行ユニットに関連づけられた現在のスロットに配置されるため、参照されるプロセスまたはその残余の実行必要性に対応する。同期時間は実行ユニット間の通信のために必要とされる時間および実行ユニットのクロック間のずれを考慮に入れる]。
【0083】
次いで、現在のプロセスの実行必要性をあらゆる残余を有するスロット内に配置し、この手順を工程5から繰り返す。
【0084】
図5Aおよび図5Bは、このように完成させた方法工程の動機づけを例によって示す。
【0085】
図5A図1Bと同様であり、ここではプロセスTp(m)はプロセスTc(n)によって消費されるデータを生成する。プロセスTc(n)の開始日Dc(n)はプロセスTp(m)の開始日Dp(m)よりも後である。
【0086】
図5Bは、タスクTpおよびTcにそれぞれ関連づけられた2つの得られた順序付け計画SpおよびScならびに2つの異なる実行ユニットを示す。
【0087】
計画Spでは、プロセスTp(m)の実行必要性の最初の部分Bp1(m)をスロット[Dp(m),Dc(n)]内に配置し、残余Bp2(m)を次のスロット[Dc(n),Dc(n+1)]の最初に配置する。
【0088】
計画Scでは、スロット[Dc(n),Dc(n+1)]は、計画Spに配置されるため、残余Bp2(m)と同等の時間間隔を受け取り、次いで同期時間間隔tsyncを受け取る。これらの間隔の合計は埋め込み間隔tpadを形成する。最後に実行必要性Bc(n)をこの埋め込み間隔tpadの後に配置する。この埋め込み間隔がなければ、実行必要性Bp(n)は他の実行ユニットにおけるプロセスTp(m)の終了前に当該スロット内に時期尚早に配置される可能性があり、これは単一の計画を有する単一の実行ユニットを用いた場合には生じない状況である。
【0089】
次いで、工程5.1を以下のように書き換える。
【0090】
5.1.現在のプロセスが優先順位制約を有しない場合、このプロセスに対応する実行必要性を現在のスロット内に配置する。[現在のスロットが埋め込み間隔tpadを含む場合、これを使用して実行必要性を配置することができる]。実行必要性は前のスロットからの残余であってもよい。実行必要性を現在のスロット内に完全に配置することができない場合、現在のスロットを実行必要性の最初の部分で埋め、かつ残余を次のスロットのために取っておく。
【0091】
従って、この工程は工程5.2.1の繰り返しによって挿入される埋め込み間隔の利点を利用する。必要であれば、現在のスロットの終了時に実行必要性を分解して埋め込み間隔および次いであらゆる残りのスペースを埋めてもよい。
図1A
図1B
図2A
図2B
図3A-3B】
図4A
図4B
図5A-5B】