(57)【要約】  本発明は、リアルタイムシステムで実行される複数のタスク（Ｔｐ，Ｔｃ）のための順序付け計画をオフラインで構築するための方法であって、各タスク（Ｔｐ，Ｔｃ）をフレームのシーケンスに分解する工程であって、各フレームは実行必要性（Ｂｐ（ｍ））を有する基本プロセス（Ｔｐ（ｍ））に関連づけられており、かつ当該プロセスが開始することができる開始日（Ｄｐ（ｍ））および当該プロセスが完了しなければならない終了日（Ｄｐ（ｍ＋１））すなわちデッドラインを定める工程と、それぞれの順序制約（Ｃ）をプロセス（Ｔｐ（ｍ），Ｔｃ（ｎ））対に関連づける工程と、リアルタイムシステムの実行ユニットに関連づけられた時間スケール（Ｓ）で日付を計画し、このようにしてタイムスロットのシーケンスを形成する工程と、タイムスロットのシーケンスを連続的に解析する工程と、現在のタイムスロット内の適格プロセスを特定する工程であって、プロセスは、ｉ）それが現在のタイムスロット内で実行可能である、およびｉｉ）それが順序制約を有する場合、順序制約によって参照されるプロセスも現在のタイムスロットにおいて実行可能であるか、参照されるプロセスのデッドラインが前のタイムスロットに位置している、という２つの基準を満たせば適格である工程と、リスト内で適格プロセスをデッドラインの昇順でソートする工程と、それらの順序制約に従って当該リストを修正して当該プロセスを再順序付けする工程と、適格プロセスの実行必要性を当該リストの順序で現在のタイムスロット内に分散させて順序付け計画を構築する工程とを含む方法に関する。【選択図】図３Ａ
2020537269.tif 000002
【特許請求の範囲】
【請求項１】
リアルタイムシステムで実行される複数のタスク（Ｔｐ，Ｔｃ）のための順序付け計画をオフラインで構築するための方法であって、
・各タスク（Ｔｐ，Ｔｃ）をフレームのシーケンスに分解する工程であって、各フレームは実行必要性（Ｂｐ（ｍ））を有する基本プロセス（Ｔｐ（ｍ））に関連づけられており、かつ前記プロセスが開始することができる開始日（Ｄｐ（ｍ））および前記プロセスが完了しなければならない終了日（Ｄｐ（ｍ＋１））すなわちデッドラインを定める工程と、
・それぞれの順序制約（Ｃ）をプロセス対（Ｔｐ（ｍ），Ｔｃ（ｎ））に関連づける工程と、
・前記リアルタイムシステムの実行ユニットに関連づけられた時間スケール（Ｓ）で日付を計画し、このようにしてタイムスロットのシーケンスを形成する工程と、
・前記タイムスロットのシーケンスを連続的に解析する工程と、
・現在のタイムスロット内で適格プロセスを特定する工程であって、プロセスは、
−それが前記現在のスロットにおいて実行可能である、および
−それが順序制約を有する場合、前記順序制約によって参照されるプロセスも前記現在のタイムスロットにおいて実行可能であるか、あるいは前記参照されるプロセスのデッドラインが前のタイムスロット内にある
という２つの基準を満たせば適格である工程と、
・リスト内で前記適格プロセスをデッドラインの昇順でソートする工程と、
・それらの順序制約に従って前記リストを修正して前記プロセスを再順序付けする工程と、
・前記適格プロセスの実行必要性を前記リストの順序で前記現在のタイムスロット内に分散させて前記順序付け計画を構築する工程と、
を含む、方法。
【請求項２】
そのフレームがオーバーラップしていない２つのプロセスからなる各対において順序制約を除去する最初の工程を含む、請求項１に記載の方法。
【請求項３】
前記リストを修正する工程および前記実行必要性を分散させる工程は、
・前記プロセスのリストを連続的に解析する工程と、
・前記リスト内の現在のプロセスが前記リスト内の現在のプロセスの後に配置されているプロセスを参照する順序制約を有する場合、前記参照されるプロセスを前記現在のプロセスの前に移動させることによって前記リストを修正する工程と、
・前記移動させた参照されるプロセスの位置で開始するリスト解析工程を再開する工程と、
・そうでなければ前記現在のプロセスの実行必要性を前記現在のスロット内に配置する工程と、
を含む、請求項１に記載の方法。
【請求項４】
前記実行必要性を配置する工程は、
・前記スロットがそれを収容するのに十分なスペースを有する場合には前記実行必要性を前記現在のスロット内に完全に配置する工程と、
・そうでなければ前記現在のスロットを前記実行必要性の最初の部分で埋め、かつ前記実行必要性の残りの配置をその後のスロットに延期する工程と、
を含む、請求項２に記載の方法。
【請求項５】
前記リアルタイムシステムは複数の実行ユニットを含み、前記方法は、
・前記タイムスロットのシーケンスのコピー（Ｓｐ，Ｓｃ）を各実行ユニットに関連づけて各実行ユニットのために順序付け計画を形成する工程と、
・順序制約によって結び付けられたプロセスが異なる実行ユニットで実行されるように実行ユニットにタスク（Ｔｐ，Ｔｃ）を割り当てる工程と、
・前記実行必要性を配置する工程において、
−前記実行必要性（Ｂｐ２（ｍ））を前記現在のプロセスに関連づけられた計画（Ｓｐ）の現在のスロット内に配置する工程と、
−前記参照されるプロセスに関連づけられた計画（Ｓｃ）の現在のスロット内に、２つの実行ユニット間でのデータ通信において生じる遅延および前記２つの実行ユニットのクロック間のずれを考慮に入れる同期時間（ｔｓｙｎｃ）によって増加した前記配置された実行必要性に対応する埋め込み間隔（ｔｐａｄ）を配置する工程と、
をさらに含む、請求項３に記載の方法。
【請求項６】
前記実行必要性を前記現在のスロット内に配置する工程は、前記実行必要性を前記現在のスロットに含まれているあらゆる埋め込み間隔内に配置する工程を含む、請求項５に記載の方法。
【請求項７】
リアルタイムマルチタスキングシステムにおいてタスクを実行する方法であって、
・請求項１に記載のマルチタスク順序付け計画を生成する工程と、
・リアルタイムマルチタスキングシステム実行ユニットを構成して前記順序付け計画をループで適用する工程と、
・前記リアルタイムマルチタスキングシステムの時間基準を構成して前記順序付け計画のタイムスロットの時間を計測する工程と、
・対応する実行必要性が各スロット内に分散されている順序で前記スロットの適格プロセスを連続的に実行する工程と、
・プロセス実行時間が前記対応する実行必要性に一致するかをチェックする工程と、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はハードリアルタイムマルチタスキングシステムに関し、より具体的にはそのようなシステムにおけるタスク間通信のための技術に関する。
【背景技術】
【０００２】
ハードリアルタイムシステム、すなわち動作の実行における遅延によるあらゆるデッドライン違反に耐えられないシステムでは、タスクは静的スケジューリング方法を使用して実行されることが多い。その時、静的順序付け計画はオフラインで構築されており、実行リソースを使用するための必要性の静的時間割り当てを表す。そのような手法は、例えば論文［「セーフティクリティカルリアルタイムシステムにおける適時性をモデル化および保証するための方法および技術（Ａ  Ｍｅｔｈｏｄ  ａｎｄ  ａ  Ｔｅｃｈｎｉｑｕｅ  ｔｏ  Ｍｏｄｅｌ  ａｎｄ  Ｅｎｓｕｒｅ  Ｔｉｍｅｌｉｎｅｓｓ  ｉｎ  Ｓａｆｅｔｙ  Ｃｒｉｔｉｃａｌ  Ｒｅａｌ−Ｔｉｍｅ  Ｓｙｓｔｅｍｓ）」，Ｃ．Ａｕｓｓａｇｕｅｓ，Ｖ．Ｄａｖｉｄ，第４回ＩＥＥＥ：複雑なコンピュータシステム工学に関する国際会議（Ｆｏｕｒｔｈ  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｅｎｇｉｎｅｅｒｉｎｇ  ｏｆ  Ｃｏｍｐｌｅｘ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ），１９９８］ならびに国際公開第２００６／０５０９６７号および米国特許出願公開第２０１０／０１９９２８０号に記載されている。
【０００３】
静的順序付け計画は、実行ユニットにおいてタイムシェアリングモードで実行されるいくつかの並列タスクを含んでいる場合がある。これらのタスクは互いに通信する場合もある。例えば、第１のタスクがセンサからの規則的な測定を行う一方で、第２のタスクは生成された測定値をサンプリングして制御を実行する場合がある。
【０００４】
そのような構成では、データが生成タスクによって提供される瞬間とそのデータが消費タスクによって読み込まれる瞬間との間にレイテンシが生じる可能性がある。いくつかの状況ではレイテンシは、生成されたデータを用いる制御システムの安定性または応答性に影響を与えるほど大きくなることがある。
【発明の概要】
【０００５】
リアルタイムシステムにおいて実行される複数のタスクのための順序付け計画をオフラインで構築するための方法であって、各タスクをフレームのシーケンスに分解する工程であって、各フレームは実行必要性を有する基本プロセスに関連づけられており、かつ当該プロセスを開始することができる開始日および当該プロセスを完了させなければならない終了日すなわちデッドラインを定める工程と、それぞれの順序制約をプロセス対に関連づける工程と、リアルタイムシステムの実行ユニットに関連づけられた時間スケールで日付を計画し、このようにしてタイムスロットのシーケンスを形成する工程と、タイムスロットのシーケンスを連続的に解析する工程と、現在のタイムスロット内で適格プロセスを特定する工程であって、プロセスは、ｉ）それが現在のスロットにおいて実行可能である、およびｉｉ）それが順序制約を有する場合、順序制約によって参照されるプロセスも現在のタイムスロットにおいて実行可能であるか、あるいは参照されるプロセスのデッドラインが前のタイムスロット内にある、という２つの基準を満たす場合に適格である工程と、リスト内で適格プロセスをデッドラインの昇順でソートする工程と、それらの順序制約に従って当該リストを修正して当該プロセスを再順序付けする工程と、適格プロセスの実行必要性を当該リストの順序で現在のタイムスロット内に分散させて順序付け計画を構築する工程とを含む方法が一般に提供される。
【０００６】
本方法は、そのフレームがオーバーラップしていない２つのプロセスからなる各対において順序制約を除去する最初の工程を含んでもよい。
【０００７】
当該リストを修正する工程および実行必要性を分散させる工程は、当該プロセスのリストを連続的に解析する工程と、当該リスト内の現在のプロセスが当該リスト内の現在のプロセスの後に配置されているプロセスを参照する順序制約を有する場合は、参照されるプロセスを現在のプロセスの前に移動させることによって当該リストを修正する工程と、移動させた参照されるプロセスの位置で開始するリスト解析工程を再開する工程と、そうでなければ現在のプロセスの実行必要性を現在のスロット内に配置する工程とを含んでもよい。
【０００８】
実行必要性を配置する工程は、当該スロットがそれを収容するのに十分なスペースを有する場合には実行必要性を現在のスロット内に完全に配置する工程と、そうでなければ現在のスロットを実行必要性の最初の部分で埋める工程と、実行必要性の残りの配置をその後のスロットに延期する工程とを含んでもよい。
【０００９】
リアルタイムシステムは複数の実行ユニットを含んでもよい。次いで本方法は、タイムスロットのシーケンスのコピーを各実行ユニットに関連づけて各実行ユニットのために順序付け計画を形成する工程と、順序制約によって結び付けられたプロセスが異なる実行ユニットで実行されるように実行ユニットにタスクを割り当てる工程と、実行必要性を配置する工程において、ｉ）実行必要性を現在のプロセスに関連づけられた計画の現在のスロット内に配置する工程、およびｉｉ）２つの実行ユニット間でのデータ通信において生じる遅延および２つの実行ユニットのクロック間のずれを考慮に入れる同期時間によって増加した配置された実行必要性に対応する埋め込み間隔を参照されるプロセスに関連づけられた計画の現在のスロット内に配置する工程とをさらに含んでもよい。
【００１０】
実行必要性を現在のスロット内に配置する工程は、実行必要性を現在のスロットに含まれているあらゆる埋め込み間隔内に配置することを含んでもよい。
【００１１】
リアルタイムマルチタスキングシステムにおいてタスクを実行するための方法であって、上記方法に従ってマルチタスク順序付け計画を生成する工程と、リアルタイムマルチタスキングシステム実行ユニットを構成して順序付け計画をループで適用する工程と、リアルタイムマルチタスキングシステムの時間基準を構成して順序付け計画のタイムスロットの時間を計測する工程と、対応する実行必要性が当該スロット内に分散されている順序で各スロットの適格プロセスを連続的に実行する工程と、プロセス実行時間が対応する実行必要性に一致するかをチェックする工程とを含む方法も提供することができる。
【００１２】
実施形態について添付の図面に関連する以下の非限定的な説明において詳しく説明する。
【図面の簡単な説明】
【００１３】
【図１Ａ】フレームのシーケンスと呼ばれる形式の通信することができる２つのタスクの例を示す。
【図１Ｂ】フレームのシーケンスと呼ばれる形式の通信することができる２つのタスクの例を示す。
【図２Ａ】図１Ｂのタスクから順序付け計画を構築するための２つの可能性を表す。
【図２Ｂ】図１Ｂのタスクから順序付け計画を構築するための２つの可能性を表す。
【図３Ａ】３つの通信タスクの例を表すフレームのシーケンスのグループおよび通信レイテンシを減少させるかさらには排除するための方法を用いて構築された対応する順序付け計画を示す。
【図３Ｂ】３つの通信タスクの例を表すフレームのシーケンスのグループおよび通信レイテンシを減少させるかさらには排除するための方法を用いて構築された対応する順序付け計画を示す。
【図４Ａ】２つの通信タスクの例を表す一対のフレームのシーケンスおよび通信レイテンシを減少させるための他の方法を用いて構築された対応する順序付け計画を示す。
【図４Ｂ】２つの通信タスクの例を表す一対のフレームのシーケンスおよび通信レイテンシを減少させるための他の方法を用いて構築された対応する順序付け計画を示す。
【図５Ａ】２つの通信タスクの例を表す一対のフレームのシーケンスおよび通信レイテンシを減少させるかさらには解消するための方法を用いて２つの実行ユニットのためにそれぞれ構築された２つの対応する順序付け計画を示す。
【図５Ｂ】２つの通信タスクの例を表す一対のフレームのシーケンスおよび通信レイテンシを減少させるかさらには解消するための方法を用いて２つの実行ユニットのためにそれぞれ構築された２つの対応する順序付け計画を示す。
【発明を実施するための形態】
【００１４】
図１Ａは、リアルタイムシステムにおいて並行して実行することができる、データを生成するタスクＴｐの例およびデータを消費するタスクＴｃの例を示す。各タスクは、Ｋｒｏｎｏ−Ｓａｆｅ社の米国特許出願公開第２０１７／０００４０１１号において提案されているように形式化することができる。それに応じて、各タスクはフレームの繰り返しシーケンスに分割されており、基本プロセスＴｐ（ｍ）およびＴｃ（ｎ）（ここではｍおよびｎはプロセスのシーケンス番号である）に関連づけられている。フレームの境界は、同期点またはプロセスの時間制約を形成する日付ＤｐおよびＤｃによって定められる。各プロセスは第１の同期点すなわち開始日で開始することができ、かつ遅くとも第２の同期点すなわちデッドラインで終了しなければならない。
【００１５】
同期点は実行中に、リアルタイムシステムの時間を計測する時間基準ＨｐおよびＨｃに従って選択される。それらは多くの場合、周期的であるか周期的シーケンスにグループ化されている。
【００１６】
また各プロセスは実行必要性（以後Ｂという）を有し、これは例えば最悪実行時間（またはＷＣＥＴ）である対応するフレームの長さに満たない時間間隔によって形式化される可能性がある。実行必要性は、静的順序付け計画の構築の後の段階において実装される制約に応じて、当該フレームおよび単一の断片またはいくつかの非隣接区間の中にあらゆる方法で使用される場合がある。
【００１７】
タスク間通信を確立するために、タスクＴｐの個々のプロセスはタスクＴｃのプロセスのためのデータを生成するように設計することができる。ここでは、プロセスＴｐ（ｍ）はプロセスＴｃ（ｎ）のためのデータを生成する。このデータは例えば共有メモリを介して交換される。従って、プロセスＴｐ（ｍ）の終了は通常、データを共有メモリに書き込むように設計されており、プロセスＴｃ（ｎ）の開始は共有メモリからデータを読み込むように設計されている。
【００１８】
図１Ａの例では、プロセスＴｃ（ｎ）の開始日Ｄｃ（ｎ）はプロセスＴｐ（ｍ）のデッドラインＤｐ（ｍ＋１）の後である。これは、レイテンシがＤｃ（ｎ）−Ｄｐ（ｍ＋１）よりも大きい場合にのみ、プロセスＴｃ（ｎ）は常にプロセスＴｐ（ｍ）によって生成されたデータを消費することができることを意味する。
【００１９】
図１Ｂの例では、プロセスＴｃ（ｎ）の開始日Ｄｃ（ｎ）はプロセスＴｐ（ｍ）のデッドラインＤｐ（ｍ＋１）の前である。これは、全ての場合にプロセスＴｃ（ｎ）がプロセスＴｐ（ｍ）によって生成されたデータを消費することができることを保証できるとは限らないことを意味する。さらに、プロセスＴｃ（ｎ＋１）の開始日Ｄｃ（ｎ＋１）もデッドラインＤｐ（ｍ＋１）の前である。この場合、確実にデータを消費することができる最初のプロセスはＴｃ（ｎ＋２）であり、しかもレイテンシがＤｃ（ｎ＋２）−Ｄｐ（ｍ＋１）よりも大きい場合のみである。
【００２０】
図２Ａは、図１Ｂに示すようなタスクＴｐおよびＴｃのフレームのシーケンスから開発ツールによって自動的に生成することができる静的順序付け計画区間を示す。
【００２１】
そのようなツールは、全てのタスクの同期点を時間スケールＳで計画して連続的タイムスロットのシーケンスを作り出すように設計されていてもよい。リアルタイムシステムがいくつかのプロセッサコアまたは実行ユニットを備えている場合、当該ツールは各実行ユニットのために別個の同期点計画を生成する。当該ツールはこれらのスロットを順々に処理して、可能であれば時間制約が満たされるようにプロセス必要性を分散させるが、場合によっては当該ツールは解決法を見つけることができず、これは当該開発者が例えば並列タスクの数を減らすか制約を緩めた後に新しい繰り返しを行なわなければならないことを意味する。
【００２２】
より具体的には、観察されている各タイムスロットのために、当該ツールは当該スロットにおける実行のために適格であるプロセス、すなわち観察されているタイムスロットにおいて開始または継続することができる各プロセスをリストにする。観察されているタイムスロットにおいて「継続する」ことができるプロセスは、実際には前のタイムスロットにおいて開始されたプロセスの残りである。実際には、フレームはいくつかのスロットをオーバーラップさせることができ、この場合、対応するプロセスの実行必要性はオーバーラップされているスロットにわたって断片化される場合がある。実行時間に、この断片化はオペレーティングシステムのプリエンプションによって対応するプロセスの停止および再開を引き起こし、各停止および再開はプロセス実行コンテキストを保存および復元するために固定されたオーバーヘッドを犠牲にする。この断片化は静的に達成されるので、固定されたオーバーヘッドの空きを決定することができ、時間制約との整合性をチェックする際にこれを実行必要性に追加してもよい。
【００２３】
適格プロセスのために、当該ツールは実行必要性を所与の順序、好ましくはデッドラインの昇順で当該スロット内に分散させる。同期点が周期的または調和的である場合に定期的に起こることであるが、デッドラインが同一である場合は、実行必要性を任意の順序、例えばプロセス識別子のアルファベット順で分散させてもよい。
【００２４】
図２Ａでは、スロット［Ｄｐ（ｍ），Ｄｃ（ｎ）］内の唯一の適格プロセスはＴｐ（ｍ）である。このスロットはプロセスＴｐ（ｍ）の必要性の最初の部分Ｂｐ１（ｍ）によって埋められている。次のスロット［Ｄｃ（ｎ），Ｄｃ（ｎ＋１）］では、プロセスＴｃ（ｎ）およびＴｐ（ｍ）が適格である。デッドラインの順序は、プロセスＴｃ（ｎ）の必要性Ｂｃ（ｎ）が最初に配置され、次いでプロセスＴｐ（ｍ）の必要性の残余Ｂｐ２（ｍ）が配置されていることを示している。
【００２５】
従来通りに利用可能な全てのパラメータおよび制約を用いて得ることができたこの順序付け計画は、プロセスＴｐ（ｍ）によって生成されたデータをプロセスＴｃ（ｎ）によって消費することができず、これにより消費プロセスのために図１Ａおよび図１Ｂに示されている選択に至ったことを示す。
【００２６】
対照的に、図２Ｂは図１Ｂのタスクと互換性のある順序付け計画を示し、ここではプロセスＴｃ（ｎ）はレイテンシなしにプロセスＴｐ（ｍ）によって生成されたデータを消費することができる。この例では、図示のように必要性Ｂｃ（ｎ）の前に残余Ｂｐ２（ｍ）を配置するのに十分である。
【００２７】
（なお、図示されている例はこれまでのところ、明確性のために開発された事例研究である。所与の方法によって得られた結果を所望の結果と比較する図２Ａおよび図２Ｂの事例は取るに足らないように見え得る解決法に導く。但しこれは、この解決法が実際の状況では一般的かつ自動化された方法で機能するものであり、ここでは順序付け計画は多くの並列タスクのために生成され、それらのそれぞれが多くの処理および通信相互依存性を有し得るという事実によって軽減されるに違いない）。
【００２８】
以下に、当該開発者によって選択されたプロセス間にＣで表されている順序制約を導入することによって、図２Ｂに示されている種類のゼロレイテンシ順序付け計画に向かいやすい方法論が提案されている。従って、フレーム（開始日、デッドラインおよび実行必要性）によって形式化されたプロセスは、別のプロセスを参照する順序制約によっても特徴づけることができる。
【００２９】
本方法を実際に有用なものにするために、そのような順序制約によって結び付けられた２つのプロセスのフレームはオーバーラップを有し、すなわち２つの結び付けられたプロセスが同時に実行可能な共通の時間間隔が存在する。その結果、この２つの結び付けられたプロセスは２つの別個のタスクからのものとなる（例えば、図１ＢのプロセスＴｐ（ｍ）およびＴｃ（ｎ）またはＴｃ（ｎ＋１））。そうでなければ、順序制約は時間制約によって体系的に満たされ、かつ冗長になる（例えば図１Ａの事例）。
【００３０】
このように形成された対の２つのプロセスは、相互制約、一方のための優先順位制約および他方のための劣後順位制約によって特徴づけられる。優先順位制約は対応するプロセスを参照されるプロセスの開始前に完了させる必要がある一方で、劣後順位制約は対応するプロセスを参照されるプロセスの終了後に開始させる必要がある。一実施形態によれば、同じプロセスをいくつかの順序制約に従わせることができ、これによりプロセス間の依存チェーン、一般的に言えば依存ツリーを構築することを可能にしてもよい。
【００３１】
プロセス対の劣後および優先順位制約は相互関係にあり、従って、一方はこれらの相互制約のうちの１つのみを利用して順序付け計画を構築することができる。以下の説明では、優先順位制約のみが利用されている。その結果、結び付けられたプロセスの各対において、プロセスのうちの１つのみが優先順位制約を有し、他方のプロセスは制約を有しないものとみなすことができる（同等の代替法は優先順位制約のみを利用することができるであろう）。
【００３２】
次いで、これらの新しい制約を考慮に入れるように開発ツールを設計して静的順序付け計画を構築し、全てのタスクを統合する。より具体的には、当該ツールは、フレームのシーケンスおよび優先順位制約のセットによって定義される並列タスクグループに以下の工程を実装してもよい。
【００３３】
１．タイムスロットのシーケンスを得るためにタスクの同期点に対応する日付を同じ時間スケールＳで計画する。タイムスロットのシーケンスは順序付け計画の骨格をなす。
【００３４】
２．タイムスロットを連続的に解析し、現在のタイムスロットを観察する。
【００３５】
３．現在のスロット内の適格プロセスのリスト、すなわち以下の２つの基準を満たすプロセスのセットを特定する。
【００３６】
３．１．当該プロセスは実行可能であり、すなわち現在のタイムスロットが当該プロセスの開始日と終了日との間に含まれている。
【００３７】
３．２．当該プロセスが優先順位制約Ｃを有する場合、この制約によって参照されるプロセスも実行可能であるか（例えば図１Ｂ、間隔［Ｄｃ（ｎ），Ｄｃ（ｎ＋１）］、Ｔｃ（ｎ）がＴｐ（ｍ）を参照すると仮定）、あるいは参照されるプロセスのデッドラインは前のタイムスロット内にある（図１Ａ）。
【００３８】
この基準は、現在のスロット内で利用可能にはなり得ないデータを消費するあらゆるプロセスを排除する。
【００３９】
プロセス間の依存のチェーンが実装されている一実施形態では、この基準は、依存ツリー全体に目を通してそのツリー内の全てのプロセスが実行可能であることを決定することを含んでもよい。次いで、そのツリー内のプロセスの少なくとも１つが実行可能でない場合、ツリー全体を適格プロセスから除去する。
【００４０】
４．適格プロセスをデッドラインの昇順で順序付けし、ソートされたリスト内に配置する。このリストは、対応する実行必要性が順序付け計画の現在のスロット内に配置される順序を決定するための開始点を提供する。
【００４１】
当該リストは順序制約によって結び付けられたプロセスの対を含む可能性が高く、各対のプロセスが正しい順序（生成タスク−消費タスク）で配置されることは保証されてない。以下の工程は、そのそれぞれの生成タスクプロセスの後に各消費タスクプロセスが配置されるように当該リストを再順序付けすることを目的としている。
【００４２】
５．ソートされたリストを連続的に解析し、かつ当該リストの現在のプロセスを観察する。
【００４３】
５．１．現在のプロセスが優先順位制約を有しない場合、このプロセスに対応する実行必要性を現在のスロット内に配置する。この実行必要性は前のスロットからの残余であってもよい。この残余はゼロであってもよく、これは実行必要性が前のスロット内に完全に配置されたことを意味する。実行必要性を現在のスロット内に完全に配置することができない場合、現在のスロットを実行必要性の最初の部分で埋め、かつ残りの部分を次のスロットのために取っておく。当該プロセスを工程５から繰り返す。
【００４４】
いくつかの状況では、この段階では現在のスロットの終了は現在のプロセスのデッドラインであり、かつ当該スロットは実行必要性を含むことができない可能性がある。その際、定義されているタスクは考察中のリアルタイムシステムにおいて並行して実行可能でなく、かつ当該開発者は当該タスクを再設計することを必要とする場合がある。
【００４５】
実行必要性は好ましくは、当該スロットの終了時に可能な限り多くのスペースを残すために、当該スロットの開始から隣接して配置する。
【００４６】
５．２．現在のプロセスが優先順位制約を有する場合。
【００４７】
５．２．１．参照されるプロセスが当該リスト内の現在のプロセスの前に配置されている場合、当該リストの順序は正しい。現在のプロセスの実行必要性を工程５．１と同様に配置し、かつこの手順を工程５から繰り返す。
【００４８】
状況に応じて、２つの関連するプロセスを当該リスト内の別のプロセスによって分離してもよい。この特定の事例では、通信レイテンシはゼロにはならないが、この２つのプロセスが異なるスロット内で実行可能であればそれは著しく低下する。
【００４９】
５．２．２．参照されるプロセスを当該リスト内の現在のプロセスの後に配置した場合、当該リストは参照されるプロセスを現在のプロセスの前に、好ましくは直前に移動させることによって修正してゼロレイテンシ通信を達成する。当該リスト内の同じ位置、すなわち移動させたばかりのプロセスを含む位置から再開させることにより、この手順を工程５から繰り返す。
【００５０】
依存のチェーンの場合、移動させたプロセスも優先順位制約を有する可能性があり、この場合、当該リストの新しい修正は工程５．２の再繰り返し時に行ってもよい。
【００５１】
６．次のタイムスロットのために本方法を工程２から繰り返す。
【００５２】
本方法は、冗長な順序制約、すなわち同期点の構成によって必ず尊重される順序制約を除去するための最初の工程を含んでもよい。そのような制約はオーバーラップしていないフレームを有するプロセスにおいて常に生じる。
【００５３】
本方法は、フレームの無限シーケンスに適用可能である。当然ながら実用的な事例では、各タスクはプロセスの有限シーケンス、特に繰り返しシーケンスによって定められる。次いで順序付け計画におけるいくつかのタスクの組み合わせは、当然のことながら、その期間が個々のタスクを含む繰り返しシーケンスの最も小さい共通の複数の期間である繰り返し順序付け計画を生成するが、任意の長さの繰り返し順序付け計画を生成することも可能である。どちらの場合であっても、順序付け計画の繰り返しが検出された場合には本方法を繰り返しのままにしておくことが可能である。
【００５４】
このように開発された順序付け計画を使用してリアルタイムマルチタスキングシステムを構成してタスクの実行を制約する。より具体的には、実行ユニットを無限ループで順序付け計画を適用するように構成する。このシステムの時間基準は、タイムスロットの時間を計測する同期点を生成するように構成されている。各スロットにおいて、実行ユニットは当該スロット内の実行必要性の配置に従って当該プロセスを連続的に開始する（または再開する）。監視タイマーは、対応する実行必要性を有するプロセスの実行時間の一致を制御する。
【００５５】
図３Ａは、比較的複雑な例を用いた上記方法の実装を示すために使用されている。この例では、タスクＴｐは２つの他のタスクＴｃ１およびＴｃ２によって消費されるデータを生成する。このデータは、開始日Ｄｐ（ｍ）およびデッドラインＤｐ（ｍ＋１）を有するフレームに関連づけられたプロセスＴｐ（ｍ）によって生成される。このデータは２つのタスクＴｃ１およびＴｃ２の２つのそれぞれのプロセスＴｃ１（ｎ）、Ｔｃ２（ｐ）によって消費され、これは優先順位制約Ｃ１およびＣ２によって形式化されている。またプロセスＴｃ１（ｎ）はプロセスＴｃ２（ｐ）によって生成されたデータを消費し、これは優先順位制約Ｃ３によって形式化されている。プロセスＴｃ１（ｎ）およびＴｃ２（ｐ）は同じ長さの２つのフレームに関連づけられており、かつプロセスＴｐ（ｍ）と同じデッドラインＤｃ１（ｎ＋１）、Ｄｃ２（ｐ＋１）を有する。プロセスＴｃ１（ｎ）およびＴｃ２（ｐ）の開始日Ｄｃ１（ｎ）およびＤｃ２（ｐ）は、プロセスＴｐ（ｍ）の開始日と同じ日またはそれ以前である。
【００５６】
図３Ｂは上記方法の工程の適用により得られる順序付け計画を示す。
【００５７】
工程１では、異なるタスクの日付をスケールＳで計画する。いくつかの同じ日付のうち、最初のもののみが示されている。
【００５８】
工程２の最初の繰り返しでは、スロット［Ｄｃ１（ｎ），Ｄｐ（ｍ）］を観察する。
【００５９】
工程３では、どのプロセスも適格なものとして選択されない。実際には、プロセスＴｃ１（ｎ）およびＴｃ２（ｐ）が実行可能であるが、それらは優先順位制約Ｃ１およびＣ２によって、現在のスロットにおいて実行可能でないプロセスＴｐ（ｍ）にリンクされている。図３Ｂに示すように当該スロットは空のままである。
【００６０】
工程２を繰り返してスロット［Ｄｐ（ｍ），Ｄｐ（ｍ＋１）］を観察する。
【００６１】
工程３では、これらの３つのプロセスが基準３．１によって実行可能である。それらは、実行不可能なプロセスを参照する優先順位制約を有しないため、それらも基準３．２に従って適格である。
【００６２】
工程４では、当該プロセスを昇順デッドラインによって正常にソートされたリスト内に配置する。それらのデッドラインは同日であるため、当該プロセスは任意の順序、例えばそれらの識別子のアルファベット順でソートされる。次いで当該リストは｛Ｔｃ１（ｎ），Ｔｃ２（ｐ），Ｔｐ（ｍ）｝となる。この順序は正しくなく、次の工程で訂正される。
【００６３】
工程５では、当該リスト内の最初のプロセスＴｃ１（ｎ）を検討する。このプロセスが「Ｔｐ（ｍ）の後」の優先順位制約Ｃ１を有するので、工程５．２が実行される。テスト５．２．１が失敗し、工程５．２．２が実行される。その結果、プロセスＴｐ（ｍ）はプロセスＴｃ１（ｎ）の前に移動され、リスト｛Ｔｐ（ｍ），Ｔｃ１（ｎ），Ｔｃ２（ｐ）｝が得られる。
【００６４】
工程５を再開して、プロセスＴｐ（ｍ）を現在含んでいるリスト内の同じ位置を観察する。工程５．１におけるテストは、プロセスＴｐ（ｍ）が優先順位制約を有しないので合格となる。図３Ｂに示すように、このプロセスの実行必要性Ｂｐ（ｍ）を現在のスロットの最初に完全に配置してもよい。
【００６５】
工程５を再開して、当該リスト内の次のプロセスＴｃ１（ｎ）を検討する。このプロセスは、まだ検討されていないプロセスである「Ｔｃ２（ｐ）の後である」という優先順位制約Ｃ２を有する。プロセスＴｃ２（ｐ）を工程５．２．２においてプロセスＴｃ１（ｎ）の前に移動させ、リスト｛Ｔｐ（ｍ），Ｔｃ２（ｐ），Ｔｃ１（ｎ）｝を生成する。
【００６６】
工程５を繰り返してこの修正されたリスト内のプロセスＴｃ２（ｐ）を検討する。このプロセスは工程５．２．１におけるテストに合格し、図３Ｂに示すように実行必要性Ｂｃ２（ｐ）を現在のスロット内に完全に配置してもよい。
【００６７】
プロセスＴｃ１（ｎ）のために工程５を最後にもう一度だけ繰り返す。今回は当該プロセスは工程５．２．１におけるテストに合格し、図３Ｂに示すように実行必要性Ｂｃ１（ｎ）を現在のスロット内に完全に配置してもよい。
【００６８】
本方法を図１Ｂの例に適用し、プロセスＴｃ（ｎ）がプロセスＴｐ（ｍ）によって生成されたデータを消費するように制約されていると仮定すると、図２Ｂのゼロレイテンシ順序付け計画は達成される。
【００６９】
図４Ａおよび図４Ｂは、順序制約を考慮に入れる順序付け計画を提供することができる他の技術を示す。
【００７０】
図４Ａでは、生成タスクプロセスＴｐ（ｍ）および消費タスクプロセスＴｃ（ｎ）を図３Ａの最初の２つのタスクと同じ条件で考察する。この代替法によれば、２つのプロセス間に順序制約に関連づけられた中間同期点Ｄ’を配置することが求められている。この点Ｄ’は、生成タスクプロセスのデッドラインＤｐ（ｍ＋１）および消費タスクプロセスの開始日Ｄｃ（ｎ）を置き換えるためのものである。図示のとおり、この同期点はＤｐ（ｍ）＋Ｂｐ（ｍ）からＤｃ（ｎ＋１）−Ｂｃ（ｎ）の日付範囲Ｄ’ｐｏｓｓに任意に配置することができる。
【００７１】
図４Ｂでは、同期点を時間スケールＳで計画してもよいが、消費タスクプロセスの開始日Ｄｃ（ｎ）および生成タスクプロセスのデッドラインＤｐ（ｍ＋１）を同じ中間点Ｄ’まで移動させる。次いで得られたスロットは、順序制約を今度は検討することなく通常どおりに順々に処理することができ、これにより図４Ｂに示されている順序付け計画が得られる。その変動範囲の中心に向かう点Ｄ’の位置について取り上げられている例から、プロセスＴｐ（ｍ）およびＴｃ（ｎ）間のレイテンシは低いがゼロではないことが分かる。
【００７２】
そのような順序付け計画を実行するために、リアルタイムシステムにさらなる時間基準を設けて中間同期点Ｄ’を実現することができ、これはその時に開発ツールまたは開発者によっていくつかの離散値の中から静的に選択される。しかし、そのような手順は並列タスクをスケジューリングする可能性の数を著しく減少させる恐れがある。例えば、点Ｄ’をその範囲の最初に配置するとゼロレイテンシに向かいやすいが、実行必要性Ｂｐ（ｍ）は配置のためのどんな空きももはや有しない。
【００７３】
実際には、点Ｄ’を２つの段階で一時的に使用することができる。第１の段階では、スケールＳでの同期点の計画のために、それをその変動範囲の終わりに配置する。これにより最大で可能な自由を残して実行必要性分配段階の間に実行必要性Ｂｐ（ｍ）を配置する。実行必要性Ｂｐ（ｍ）をそのスロット［Ｄｐ（ｍ），Ｄ’］内に配置した後に、点Ｄ’を当該スケールから除去し、これにより、さらなる動作のためにスロット［Ｄｐ（ｍ），Ｄ’］および［Ｄ’，Ｄｃ（ｎ＋１）］を併合させる。これは実行必要性Ｂｃ（ｎ）を配置するための自由度を増加させ、リアルタイムシステムにおいて改変された時間基準の使用をもはや必要としない。
【００７４】
この手順はその際、上記６つの工程手順に相当する。この代替法を用いた場合、ゼロレイテンシ通信を得る確率はより低くなるが、順序制約を使用しなかった場合よりもなお良くなる。
【００７５】
これまでのところ、静的順序付け計画は単一の実行ユニットまたは単一のコアプロセッサのために構築されるものとみされていた。本方法はマルチコアプロセッサまで拡張させることができる。この場合、時間スケールＳによって定められるタイムスロットのシーケンスを各実行ユニットのために複製し、各実行ユニットのために順序付け計画を構築するために全てのタスクの実行必要性を複数のシーケンスに分散させることを試みる。得られたスロットのシーケンスをそれぞれの時間基準または実行ユニットのクロックにより整列させる。明確性のために、図においてクロックは同一であるとみなす。現実には、これらのクロックは互いに対してずれる場合があり、クロック間に生じたずれを後で説明するように同期時間ｔｓｙｎｃによって考慮に入れることができる。
【００７６】
実際には、各タスクを同じ実行ユニットに静的に割り当てる。２つの相互依存的なタスクをこのように同じ実行ユニットに割り当てる場合、それらが立ち上がるにつれて上記教示が適用される。
【００７７】
但し、相互依存的なタスクはいくつかの異なる実行ユニットに割り当ててもよい。この場合、本方法は以下のように完了する。
【００７８】
実行必要性を「現在のスロット」内に配置するというあらゆる言及は、タスクに割り当てられた実行ユニットに関連づけられたシーケンスのスロットを指す。言い換えると、スケールＳ上の全てのスロットに対応する同じスロットは同時に「現在のスロット」、すなわち各実行ユニットのための１つの現在のスロットである。
【００７９】
工程３で確立されたプロセスリストは、割り当てられた実行ユニットに関わらず全てのプロセスを含む。
【００８０】
上記工程５．２．１を以下のように書き換える（角括弧［］内の部分は元の工程から追加されたものである）。
【００８１】
５．２．１．参照されるプロセスが当該リスト内の現在のプロセスに先行する場合、当該リストの順序は正しい。
【００８２】
［参照されるプロセスが異なる実行ユニットに割り当てられている場合、埋め込み間隔ｔｐａｄを現在のスロット内に配置する。この埋め込み間隔は、上記同期時間ｔｓｙｎｃによって増加した他の実行ユニットに関連づけられた現在のスロットに配置されるため、参照されるプロセスまたはその残余の実行必要性に対応する。同期時間は実行ユニット間の通信のために必要とされる時間および実行ユニットのクロック間のずれを考慮に入れる］。
【００８３】
次いで、現在のプロセスの実行必要性をあらゆる残余を有するスロット内に配置し、この手順を工程５から繰り返す。
【００８４】
図５Ａおよび図５Ｂは、このように完成させた方法工程の動機づけを例によって示す。
【００８５】
図５Ａは図１Ｂと同様であり、ここではプロセスＴｐ（ｍ）はプロセスＴｃ（ｎ）によって消費されるデータを生成する。プロセスＴｃ（ｎ）の開始日Ｄｃ（ｎ）はプロセスＴｐ（ｍ）の開始日Ｄｐ（ｍ）よりも後である。
【００８６】
図５Ｂは、タスクＴｐおよびＴｃにそれぞれ関連づけられた２つの得られた順序付け計画ＳｐおよびＳｃならびに２つの異なる実行ユニットを示す。
【００８７】
計画Ｓｐでは、プロセスＴｐ（ｍ）の実行必要性の最初の部分Ｂｐ１（ｍ）をスロット［Ｄｐ（ｍ），Ｄｃ（ｎ）］内に配置し、残余Ｂｐ２（ｍ）を次のスロット［Ｄｃ（ｎ），Ｄｃ（ｎ＋１）］の最初に配置する。
【００８８】
計画Ｓｃでは、スロット［Ｄｃ（ｎ），Ｄｃ（ｎ＋１）］は、計画Ｓｐに配置されるため、残余Ｂｐ２（ｍ）と同等の時間間隔を受け取り、次いで同期時間間隔ｔｓｙｎｃを受け取る。これらの間隔の合計は埋め込み間隔ｔｐａｄを形成する。最後に実行必要性Ｂｃ（ｎ）をこの埋め込み間隔ｔｐａｄの後に配置する。この埋め込み間隔がなければ、実行必要性Ｂｐ（ｎ）は他の実行ユニットにおけるプロセスＴｐ（ｍ）の終了前に当該スロット内に時期尚早に配置される可能性があり、これは単一の計画を有する単一の実行ユニットを用いた場合には生じない状況である。
【００８９】
次いで、工程５．１を以下のように書き換える。
【００９０】
５．１．現在のプロセスが優先順位制約を有しない場合、このプロセスに対応する実行必要性を現在のスロット内に配置する。［現在のスロットが埋め込み間隔ｔｐａｄを含む場合、これを使用して実行必要性を配置することができる］。実行必要性は前のスロットからの残余であってもよい。実行必要性を現在のスロット内に完全に配置することができない場合、現在のスロットを実行必要性の最初の部分で埋め、かつ残余を次のスロットのために取っておく。
【００９１】
従って、この工程は工程５．２．１の繰り返しによって挿入される埋め込み間隔の利点を利用する。必要であれば、現在のスロットの終了時に実行必要性を分解して埋め込み間隔および次いであらゆる残りのスペースを埋めてもよい。
【図１Ａ】
2020537269.tif 000003
【図１Ｂ】
2020537269.tif 000004
【図２Ａ】
2020537269.tif 000005
【図２Ｂ】
2020537269.tif 000006
【図３Ａ−３Ｂ】
2020537269.tif 000007
【図４Ａ】
2020537269.tif 000008
【図４Ｂ】
2020537269.tif 000009
【図５Ａ−５Ｂ】
2020537269.tif 000010
【国際調査報告】
2020537269.tif 000011
2020537269.tif 000012
2020537269.tif 000013
2020537269.tif 000014