(57)【特許請求の範囲】
【請求項１】
マルチタスクコンピュータ（ＲＴＳ）上でリアルタイムアプリケーションのタスクを実行するための方法であって、各タスク（Ａ、Ｂ）が少なくとも１つの処理動作（Ｔｉ）を備え、前記方法は、
前記アプリケーションのタスクの処理動作の実行とそれぞれ関連付けられる時間ウィンドウを定義するステップと、
時間ウィンドウを有する各処理動作に、時間割当量（Ｑｉ）及び時間マージン（Ｍｉ）を割り当てるステップであって、前記時間割当量及び前記時間マージンによって前記処理動作に割り当てられる時間が、前記処理動作と関連付けられる時間ウィンドウの持続時間より短いステップと、
前記マルチタスクコンピュータによる前記アプリケーションの実行中に、前記処理動作に割り当てられる時間ウィンドウの開始時に各処理動作を活性化するステップと、
前記処理動作の内の１つの時間割当量の満了時に、前記処理動作の実行が完了していない場合、前記処理動作のためのエラーモードを活性化するステップと、
前記エラーモードが前記処理動作の内の１つに対してアクティブである場合、前記処理動作に割り当てられる時間マージン（Ｍｉ）の満了を監視しつつ、前記時間割当量及び前記時間マージンによって前記処理動作に割り当てられる残り時間中に、前記処理動作に割り当てられる時間割当量（Ｑｉ）の満了時にその実行が完了していない処理動作（Ｔｉ）の実行を続行するステップと、
前記処理動作に割り当てられる時間マージンの満了時に、前記処理動作の実行が完了していない場合、前記処理動作の実行を終了し、時間割当量超過エラー処理動作を実行するステップと、
を含む、方法。
【請求項２】
前記アプリケーションの他のタスクを処理するためのいくつかの時間ウィンドウ上に延在する時間ウィンドウと関連付けられる処理動作を動作断片に分割するステップであって、これによって各時間ウィンドウが処理動作又は動作断片と独占的に関連付けられるステップと、
分割された処理動作のそれぞれのすべての動作断片の時間割当量の総計が、前記分割された処理動作の時間割当量（ＱＡ２）に等しくなるように、前記動作断片（ＴＡ２１、ＴＡ２２）のそれぞれに時間割当量（ＱＡ２１、ＱＡ２２）を割り当てるステップであって、前記分割された処理動作（ＴＡ２）に割り当てられる時間マージン（ＭＡ２２）が、前記分割された処理動作の最後の動作断片（ＴＡ２２）と関連付けられるステップと、
各動作断片（ＴＡ２１、ＴＡ２２）と、それが前記分割された処理動作（ＴＡ２）の最後の動作断片であるのかどうかを示す状態変数（ＬＦ）を関連付けるステップであって、前記動作断片と関連付けられる状態変数が、前記動作断片が前記分割された処理動作（ＴＡ２）の最後の動作断片ではないことを示す場合、前記エラーモードが前記分割された処理動作の動作断片（ＴＡ２１）の内の１つの時間割当量（ＱＡ２１）の満了時に活性化されないステップと、
を含む、請求項１に記載の方法。
【請求項３】
時間割当量（Ｑｉ）と関連付けられる処理動作（Ｔｉ）のそれぞれの時間マージン（Ｍｉ）が、前記処理動作の時間割当量に倍率（Ｋｘ）を適用することによって計算され、前記倍率は時間割当量と関連付けられるすべての処理動作に対して同一である、請求項１乃至２の何れか一項に記載の方法。
【請求項４】
前記倍率（Ｋｘ）は、前記アプリケーションのタスクを、前記処理動作に対して指定された時間要件に従って、前記処理動作と関連付けられる時間ウィンドウに従って、及び前記マルチタスクコンピュータ（ＲＴＳ）の特徴に従ってスケジューリングすることができるように決定される、請求項３に記載の方法。
【請求項５】
前記処理動作は、第１の時間基準によって計時されるプロセッサ（ＰＲＣ）によって実行され、前記処理動作（Ｔｉ）と関連付けられる時間ウィンドウが前記第１の時間基準と比較して定期的ではない第２の時間基準で定義され、前記第２の時間基準の時間単位が前記第１の時間基準の最小値を有し、前記倍率（Ｋｘ）が前記最小値に従って定義される、請求項３又は４に記載の方法。
【請求項６】
各処理動作（Ｔｉ）が、それが前記処理動作を実行するプロセッサ（ＰＣ）に関して入力／出力を実行するかどうかを示す状態変数（ＩＯ）と関連付けられ、前記処理動作の内の１つが、前記処理動作がいかなる入力／出力も実行しないことを示す状態変数と関連付けられる場合、前記処理動作の実行が、以前の処理動作の実行が終了するとすぐに、前記処理動作の時間ウィンドウの開始を待機することなく起動される、請求項１乃至５の何れか一項に記載の方法。
【請求項７】
いくつかのタスクを備えるリアルタイムアプリケーションを実行するマルチタスクコンピュータ（ＲＴＳ）を備えるリアルタイムマルチタスクシステムであって、各タスク（Ａ、Ｂ）が少なくとも１つの処理動作（Ｔｉ）を備え、前記システムは、
前記アプリケーションのタスクの処理動作のセットの実行とそれぞれ関連付けられる時間ウィンドウを記憶するステップと、
時間ウィンドウを有する各処理動作について、時間割当量（Ｑｉ）及び時間マージン（Ｍｉ）を記憶するステップであって、前記時間割当量及び前記時間マージンによって前記処理動作に割り当てられる処理時間が、前記処理動作の時間ウィンドウの持続時間よりも短いステップと、
前記処理動作に割り当てられる時間ウィンドウの開始時に、前記アプリケーションの処理動作のそれぞれを実行し、前記処理動作の内の１つの時間割当量の満了時に、前記処理動作の実行が完了していない場合、前記処理動作のためのエラーモードを活性化するステップと、
前記エラーモードが前記処理動作の内の１つに対してアクティブである場合、前記処理動作に割り当てられる時間マージン（Ｍｉ）の満了を監視しつつ、前記時間割当量及び前記時間マージンによって前記処理動作に割り当てられる残り時間中に、その時間割当量（Ｑｉ）の満了時にその実行が完了していない処理動作（Ｔｉ）の実行を続行するステップと、
前記時間マージンの満了時に、前記処理動作の実行が完了していない場合、前記処理動作の実行を終了し、時間割当量超過エラー処理動作を実行するステップと、
を行うように構成される、システム。
【請求項８】
前記システムが、
時間ウィンドウと関連付けられる処理動作の内のいくつかが動作断片に分割されることを指定する情報を記憶するステップと、
各動作断片について、前記動作断片の実行のための時間ウィンドウ及び時間割当量を記憶するステップと、
各分割された処理動作の最後の動作断片について、前記最後の動作断片と関連付けられる時間マージンとして、前記分割された処理動作（Ａ２）と関連付けられる時間マージン（ＭＡ２２）を記憶するステップと、
各動作断片（ＴＡ２１、ＴＡ２２）について、前記動作断片が分割された処理動作（ＴＡ２）の最後の動作断片であるかどうかを示す状態変数（ＬＦ）を記憶するステップと、
を行うように構成され、
前記システムが、前記アプリケーションの実行中、前記動作断片と関連付けられる状態変数が、前記動作断片が前記分割された処理動作（ＴＡ２）の最後の動作断片ではないことを示す場合、前記動作断片（ＴＡ２１）の割当量（ＱＡ２１）の満了時に前記エラーモードを活性化しないように構成される、請求項７に記載のシステム。
【請求項９】
前記システムが、時間割当量（Ｑｉ）と関連付けられる処理動作（Ｔｉ）のそれぞれの時間マージン（Ｍｉ）を、前記処理動作の時間割当量に倍率（Ｋｘ）を適用することによって決定するステップを行うように構成され、前記倍率が時間割当量と関連付けられるすべての処理動作にとって同一である、請求項７乃至８の何れか一項に記載のシステム。
【請求項１０】
前記システムが、前記処理動作を実行するために第１の時間基準によって計時され、前記第１の時間基準に比較して定期的ではない第２の時間基準を受け取るプロセッサ（ＰＲＣ）を備え、前記システムが記第２の時間基準で前記処理動作（Ｔｉ）と関連付けられる時間ウィンドウを決定するように構成され、前記第２の時間基準の時間単位が前記第１の時間基準の最小値を有し、前記倍率（Ｋｘ）が前記最小値に従って定義される、請求項９に記載のシステム。
【請求項１１】
前記システムが、
各処理動作（Ｔｉ）について、前記処理動作が、前記処理動作を実行する前記システムのプロセッサ（ＰＲＣ）に関して入力／出力を実行するかどうかを示す状態変数（ＩＯ）を記憶するステップと、
前記処理動作の内の１つが、前記処理動作がいかなる入力／出力も実行しないことを示す状態変数と関連付けられる場合、以前の処理動作の実行が終了するとすぐに、前記処理動作の時間ウィンドウの開始を待機することなく前記処理動作の実行を起動するステップと、
を行うように構成される、請求項７乃至１０の何れか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同じ時間基準により計時される時間非依存のタスクのセットを含み、実行時間制約が既知であるリアルタイムマルチタスクシステムに関する。本発明は、特にその実装において高レベルの性能を必要とするリアルタイムシステム、及びシステムのタスクごとに割り当てられる実行ハードウェアリソースの使用に関して高い保証レベルが必要とされる重大なシステムに関する。
【背景技術】
【０００２】
本発明は、特に、輸送（自動車、鉄道、船舶、及び飛行機）、産業用自動機械、エネルギー、及び通信ネットワークにおいてのようにリソースの制御された割当てが重要である他のシステムの分野において使用されるシステム等のコマンドシステム及び制御システムに適用する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
重大なリアルタイムシステムでは、タスクは、プロセッサ等の実行リソースを使用するための時間割当量の静的な時間割当てを実行するために、多くの場合静的なスケジューリング法に従って実行される。これは、タスク間のタスクの時間非依存性を、リソースの使用、特にプロセッサの使用に関して証明できるようにする。この簡略且つ広く受け入られている展望は、特に文書［３］、［４］、［７］、［８］で扱われるタスク間の通信の問題を考慮に入れていない。ただし、この展望は、キャッシュメモリを含む今日のプロセッサでの実装の問題を提起する。実際、これらのキャッシュメモリの中身は、アクセスされるタスク及びデータの実行の履歴全体に依存する。ここで、これらのメモリの状態は、インタリーブされるタスクの処理動作の実行時間に影響する。これらの条件下では、処理動作の実行時間（ＷＣＥＴ−最悪実行時間‐文書［５］を参照）の絶対的な上限を保証するのは困難である。したがって、これらの上限を計算する正式な方法により、実験結果に比較してこれらの上限が潜在的に著しく過大評価されることになる。
【０００４】
さらに、特定のリアルタイムマルチタスクシステムでは、タスクが互いに干渉しないこと、つまりタスクを実行できないこと、又はタスクの実行が別のタスクに割り当てられている時間中に終了できないことを保証することが必要である。タスク間での係る非干渉の探求は、特定の分野で、キャッシュメモリを非活性化すること、又は以前の処理動作の実行とは無関係である状態（空）を有するように処理動作に割り当てられている各時間ウィンドウの開始時にそのコンテンツ全体を取り除いてキャッシュメモリを空にすることにつながる。ただし、キャッシュメモリを空にするこの動作は、マルチタスクシステムの性能を大幅に不利にする。さらに、処理動作は、いくつかの場合、いくつかの時間ウィンドウに分割されてよく、そのことが処理動作の実行中に数回キャッシュメモリを空にすることを必要とする。
【０００５】
これらの異なる理由から、リアルタイムシステムの設計者は係るシステムを大幅に特大にせざるを得ない。実際的な観点から、この手法をあまり不利にしないために、プロセッサの時間割当ては「理論上の」ＷＣＥＴより短い実行時間要件に基づいて実行され、特定の誤り率の許容につながる。この手法の主要な欠点は、処理動作の実行時間の分散の法則を特徴付ける任意のモデルが存在しないことにあり、真に割り当てられた時間割当量に関して誤り率を評価できるようにする。特に、許容できる誤り率が非常に低くなくてはならず、したがって非常に珍しいイベントから生じるとき、少なすぎる実験サンプルに基づいたこの手法を用いて、これらのシステムが決定論的な挙動を有することを証明することは可能ではない。したがって、係るシステムのロバスト性を改善するために、１つの周知の方法は、実行時間割当量に対して係るエラーのエラー回復処置を実施して、残余誤差のケースをきわめて低い数に削減することを必要とする。
【０００６】
特大化のこの重要な問題を克服するためには、未使用の時間（平均実行時間と割り当てられた時間割当量の差異）を、優先順位がないバックグラウンドタスク（文書［２］、［７］、［８］を参照）として実行される非リアルタイムタスク及び重大ではないタスクに動的に再割当てすることによって使用することが一般的であることに留意されたい。ただし、この解決策は同じ目的を達成せず、重大なリアルタイムタスクに何も貢献しない。
【０００７】
同様に、重大なリアルタイムタスクの実行中に出現することが可能な他のタイプのエラーの場合、実行中の他のタスクと干渉せずに、係る決定論的リアルタイムエラー処理機構を有することは有益である。これにより、タスク実行フローでの不連続性がないエラー回復が可能になり、適切な時間制約による適切な処置の実施が保証される。これらの問題は、非同期システムで、つまり、実行時間制約なしに既知の解決策を有する。ただし、これらの解決策はリアルタイム性能保証を提供せず、これらの解決策は、言うまでもなく操作機能不良が起きた場合も含んだ、処理動作間の非干渉が求められる重大なタスクの事情に適応していない。
【０００８】
したがって、タスクが実行されているマルチタスクシステムの効率的且つ確実な使用を保証する一方で、同じ時間基準によって計時されるタスクのセットを含んだアプリケーションを生成できることが望ましい。さらに、エラー処理に十分な時間を割り当てることができ、これによってエラー処理を、他のタスクとの干渉するリスクなしに重大なリアルタイムシステムの制約と互換性がある決定論的な時間内に実行できることが望ましいことがある。また、熱調節、エネルギー消費を最小限に抑えること、又は重大ではないタスクの分散された若しくは共有された実行等の異なる最適化のために未使用の割り当てられた時間を使用することが望ましいことがある。さらに、マルチタスクシステムによって実行されるアプリケーションのタスクの処理の正しい順序制御を保証することができ、この順序制御が正しいことを正式に立証できることが望ましいことがある。
【課題を解決するための手段】
【０００９】
いくつかの実施形態は、マルチタスクコンピュータで、各タスクが少なくとも１つの処理動作を含んだリアルタイムアプリケーションのタスクを実行するための方法に関し、方法は、それぞれがアプリケーションのタスクの処理動作の実行と関連付けられた時間ウィンドウを定義するステップと、時間ウィンドウを有する処理動作ごとに時間割当量及び時間マージンを割り当てるステップであって、時間割当量及び時間マージンによって処理動作に割り当てられる時間が処理動作と関連付けられる時間ウィンドウの持続時間よりも短い割り当てるステップと、マルチタスクシステムによるアプリケーションの実行中に、各処理動作が関連付けられる時間ウィンドウの開始時に各処理動作を活性化するステップと、処理動作の内の１つの時間割当量の満了時に、処理動作の実行が完了していない場合エラーモードを活性化するステップと、及びエラーモードが処理動作の内の１つに対してアクティブである場合、時間割当量及び時間マージンによって処理動作に割り当てられる残り時間の間に処理動作のためのエラー処理手順をエラーモードで実行するステップとを含む。
【００１０】
一実施形態に従って、方法は、エラーモードが処理動作の内の１つに対してアクティブである場合、処理動作に割り当てられた時間マージンの満了を監視しつつ、処理動作に割り当てられる時間割当量の満了時に実行が完了していない処理動作の実行を続行するステップと、処理動作に割り当てられる時間マージンの満了時に、処理動作の実行が完了していない場合、処理動作の実行を終了し、時間割当量超過エラー処理動作を実行するステップとを含む。
【００１１】
一実施形態に従って、方法は、アプリケーションの他のタスクを処理するためのいくつかの時間ウィンドウ上に延在する時間ウィンドウと関連付けられる処理動作を細分化し、これによって各時間ウィンドウが処理動作又は処理動作断片と独占的に関連付けられるステップと、細分化された処理動作のすべての断片の時間割当量の総計が細分化された処理動作の時間割当量に等しくなるように処理動作断片のそれぞれに時間割当量を割り当てるステップであって、細分化された処理動作と関連付けられる時間マージンが細分化された処理動作の最後の断片と関連付けられる割り当てるステップと、各処理動作断片と、それが細分化された処理動作の最後の断片であるかどうかを示す状態変数を関連付けるステップであって、処理動作断片と関連付けられる状態変数が、処理動作断片が細分化される処理動作の最後の断片ではないことを示す場合、エラーモードが処理動作断片の割当て量の満了時に活性化されない、関連付けるステップとを含む。
【００１２】
一実施形態に従って、時間割当量と関連付けられる処理動作のそれぞれのマージンが、処理動作の時間割当量に倍率を適用することによって計算され、倍率は時間割当量と関連付けられるすべての処理動作に対して同一である。
【００１３】
一実施形態によると、倍率は、アプリケーションのタスクを、処理動作の時間要件に従って、処理動作に関連付けられる時間ウィンドウに従って、及びコンピュータの特徴に従ってスケジューリングできるように決定される。
【００１４】
一実施形態に従って、処理動作は、第１の時間基準によって計時されるプロセッサによって実行され、処理動作と関連付けられる時間ウィンドウが第１の時間基準と比較して定期的ではない第２の時間基準で定義され、第２の時間基準の時間単位は第１の時間基準の最小値を有し、倍率は最小値に従って定義される。
【００１５】
一実施形態に従って、各処理動作は、それが処理動作を実行するプロセッサに関して入力／出力を実行するのかどうかを示す状態変数と関連付けられ、処理動作の内の１つが、処理動作が入力／出力も実行しないことを示す状態変数と関連付けられる場合、処理動作の実行は、以前の処理動作の実行が終了するとすぐに、処理動作の時間ウィンドウの開始を待機することなく起動される。
【００１６】
また、いくつかの実施形態は、各タスクが少なくとも１つの処理動作を含んだいくつかのタスクを含んだリアルタイムアプリケーションを実行するマルチタスクコンピュータを含んだリアルタイムマルチタスクシステムにも関し、システムは、それぞれがアプリケーションのタスクの処理動作のセットの実行と関連付けられる時間ウィンドウを記憶するように構成され、時間割当量及び時間マージンによって処理動作に割り当てられる時間が処理動作の時間ウィンドウの持続時間よりも短い、時間ウィンドウを有する処理動作ごとに、時間割当量及び時間マージンを記憶するように構成され、アプリケーションの処理動作を実行するように構成され、処理動作の内の１つの時間割当量の満了時に、処理動作の実行が完了していない場合エラーモードを活性化するように構成され、エラーモードが処理動作の内の１つに対してアクティブである場合に、時間割当量及び時間マージンによって処理動作に割り当てられる残り時間中にエラーモードで処理動作のエラー処理手順を実行するように構成される。
【００１７】
一実施形態によると、システムは、エラーモードが処理動作の内の１つに対してアクティブである場合、処理動作に割り当てられる時間マージンの満了を監視しつつ、実行がその時間割当量の満了時に完了していない処理動作の実行を続行するように構成され、時間マージンの満了時に、処理動作の実行が完了していない場合、処理動作の実行を終了し、時間割当量超過エラー処理動作を実行するように構成される。
【００１８】
一実施形態に従って、システムは、時間ウィンドウと関連付けられた処理動作のいくつかが細分化される事実を記憶するように構成され、処理動作断片の実行のために処理動作断片ごとに時間ウィンドウ及び時間割当量を記憶するように構成され、関連付けられた時間マージンとして細分化された各処理動作の最後の断片のために、細分化された処理動作と関連付けられた時間マージンを記憶するように構成され、各処理動作断片に、断片が細分化された処理動作の最後の断片であるかどうかを示す状態変数を記憶するように構成され、アプリケーションの実行中に、処理動作断片と関連付けられた状態変数が、処理動作断片が細分化された処理動作の最後の断片ではないことを示す場合に、処理動作断片の割当量の満了時にエラーモードを活性化しないように構成される。
【００１９】
一実施形態に従って、システムは、処理動作の時間割当量に倍率を適用することによって時間割当量と関連付けられた処理動作のそれぞれのマージンを決定するように構成され、倍率は時間割当量と関連付けられたすべての処理動作に対して同一である。
【００２０】
一実施形態に従って、システムは、処理動作を実行するために第１の時間基準によって計時され、第１の時間基準に比較して定期的ではない第２の時間基準を受け取るプロセッサを含み、システムは、第２の時間基準で処理動作と関連付けられる時間ウィンドウを決定するように構成され、第２の時間基準の時間単位は第１の時間基準の最小値を有し、倍率が最小値に従って定義される。
【００２１】
一実施形態に従って、システムは、処理動作ごとに、処理動作が、処理動作を実行するシステムのプロセッサに関して入力／出力を実行するかどうかを示す状態変数を記憶するように構成され、処理動作の内の１つが処理動作が入力／出力も実行しないことを示す状態変数と関連付けられる場合、以前の処理動作の実行が終了するとすぐに、処理動作の時間ウィンドウの開始を待機することなく処理動作の実行を起動するように構成される。
【００２２】
本発明の実施形態のいくつかの例は、添付図面に関してであるが、これに限定されることなく説明される。
【図面の簡単な説明】
【００２３】
【図１】マルチタスクコンピュータを概略で示す図である。
【図２Ａ】２つのタスクのタイミング図である。
【図２Ｂ】２つのタスクのタイミング図である。
【図３】図２Ａ、図２Ｂの２つのタスクのスケジュール計画を、タイミング図の形式でを示す図である。
【図４】一実施形態に係るロード計画をタイミング図の形式で概略で示す図である。
【図５】別の実施形態に係るロード計画をタイミング図の形式で概略で示す図である。
【図６Ａ】多様な実施形態に係る、リアルタイムコンピュータのリアルタイムコアによって実行されるステップを示す図である。
【図６Ｂ】多様な実施形態に係る、リアルタイムコンピュータのリアルタイムコアによって実行されるステップを示す図である。
【図７】多様な実施形態に係る、リアルタイムコンピュータのリアルタイムコアによって実行されるステップを示す図である。
【図８】多様な実施形態に係る、リアルタイムコンピュータのリアルタイムコアによって実行されるステップを示す図である。
【発明を実施するための形態】
【００２４】
図１は、１台又は複数のプロセッサＰＲＣ、クロック回路ＣＬＫ、１つ又は複数の不揮発性メモリＮＶＭ（書換可能又は不可）、（例えば、ＲＡＭ―ランダムアクセスメモリ―型の）１つ又は複数の揮発性メモリＶＭ、並びに周辺装置（不図示）を制御する及び／又は係る装置から信号を受信するように構成される１つ又は複数のインタフェース回路ＰＨＣを含んだマルチタスクコンピュータＲＴＳを示す。プロセッサＰＲＣは、アドレス及びデータバスＳＢを通して回路ＣＬＫ、ＮＶＭ、ＶＭ、及びＶＭに結合される。また、クロック回路ＣＬＫは、プロセッサＰＲＣの割込み入力に接続され、所与のプログラム可能な持続時間が経過すると割込みをトリガする。このために、プロセッサＰＲＣは、バスＳＢを通して持続時間の値を送信し、回路ＣＬＫを活性化してよい。
【００２５】
メモリＮＶＭは、マルチタスクアプリケーションのタスクプログラム、及びアプリケーションに関するデータを記憶する。メモリＶＭは、アプリケーションの実行で使用される変数データを記憶する。実行されるプログラムが、マルチタスクアプリケーション起動時にコンピュータに送信される場合、メモリＮＶＭは省略されてよいことに留意されたい。
【００２６】
プロセッサＰＲＣは、それぞれ、１つ又は複数のコア又は処理装置を含んでよい１台又は複数のマイクロプロセッサ又はマイクロコントローラを含んでよい。プロセッサＰＲＣは、ＡＳＩＣ（特定用途向け集積回路）又はＦＰＧＡ（フィールドプログラマブルゲートアレイ）タイプの１つ又は複数の回路から構成されてもよい、又は１つ又は複数の回路を含んでもよい。プロセッサＰＲＣは、タスクスケジューリング計画を実装するための機能、タスク実行コンテキストを管理するための機能、及び１つ又は複数のウォッチドッグを管理して処理動作の実行時間を監視するための機能等、リアルタイムマルチタスクアプリケーションの実行に必要な機能を特に含むリアルタイムコアを実行する。
【００２７】
重大なリアルタイムアプリケーションの場合、特にコンピュータの能力の点で、実行媒体（コンピュータＲＴＳ）がアプリケーションのすべてのタスクの最悪実行時間要件を満たすほど十分であることを証明することが必要になることがある。タスクをスケジューリングするために使用される手法が何であっても、この証明は、負荷方程式（文書［１］、［２］、［３］を参照）のシステムの正式な検証によって提供できる。ここで提示される方法は、スケジューリング法の、及び検証される負荷方程式の関連するシステムの選択とは無関係である。例によって方法を示すために、一般的な表示が使用される（例えば、文書［３］を参照すること）。
【００２８】
図２Ａは、時間基準ｔでのタイミング図、繰り返し実行される３つの処理動作ＴＡ１、ＴＡ２、及びＴＡ３に分類できる周期的なタスクＡを示す。処理動作ＴＡ１は、最も早期の開始時間ｔ＝０及び最も遅い終了時間ｔ＝１によって定められる、［０，１［と示される時間ウィンドウ上で実行される。時間ウィンドウ［０，１［は、このようにして１つの時間単位の持続時間を有する。処理動作ＴＡ２は、時間ｔ＝１と時間ｔ＝５の間の４時間単位続行する時間ウィンドウ［１，５［上で実行される。処理動作ＴＡ３は、時間ｔ＝５とｔ＝６との間の１時間単位続行する時間ウィンドウ［５，６［で実行される。これらの時間ウィンドウ［０，１［、［１，５［、［５，６［のそれぞれでの処理動作ＴＡ１、ＴＡ２、ＴＡ３のそれぞれの実行時間要件はＱＡ１、ＱＡ２、及びＱＡ３と示され、これらの要件はターゲットマルチタスクコンピュータの容量に従って定義される。
【００２９】
図２Ｂは、タイミング図において、同じ時間基準ｔで、時間ｔ＝０とｔ＝３との間の３時間単位続行する時間ウィンドウ［０，３［で、繰り返し実行される１つの処理動作ＴＢだけを含む周期タスクＢを示す。時間ウィンドウ［０，３［での処理動作ＴＢの実行時間要件はＱＢと示される。
【００３０】
タスクＡ及びＢのスケジューリング計画を構築するために、タスクの処理動作は、各処理動作の要件が満たされるようにそのそれぞれの時間ウィンドウ上で分散される。これがいくつかのより短い時間ウィンドウ上での特定の処理動作の細分化につながり、これによって考慮される各時間ウィンドウで、この時間ウィンドウと関連付けられる処理動作及び／又は処理動作断片を各タスクの時間制約を尊重しながらも完全に実行できる。言い換えると、処理動作は、考慮されるすべての時間ウィンドウが隣接し（あるウィンドウの終了が別のウィンドウの開始に相当する）、且つ（２つのウィンドウに共通な領域がない）互いに素となるように細分化される。この結果、アプリケーションのすべてのタスクをスケジューリングできるように満たさなければならない処理動作断片に関する条件が生じる。
【００３１】
図３は、タスクＡ及びタスクＢのスケジューリング計画を示す。処理動作ＴＡ２は、２つの部分ＴＡ２１及びＴＡ２２に細分化されて、処理動作ＴＢを再活性化するための時間ウィンドウの開始に相当し、処理動作ＴＡ２の時間ウィンドウの間に発生するタスクＢの時間ｔ＝３を考慮に入れる。同様に、タスクＢの処理動作ＴＢは、時間ウィンドウ［０，３［上で２つの部分ＴＢ１１及びＴＢ１２に細分化されて、処理動作ＴＢの時間ウィンドウの間で発生するタスクＡの処理動作ＴＡ２の時間ウィンドウ［１，５［の開始時間ｔ＝１を考慮に入れる。また、時間ウィンドウ［３，６［と関連付けられる処理動作ＴＢの発生は、２つの部分ＴＢ２１及びＴＢ２２に細分化されて、この時間が処理動作ＴＢのこの発生の時間ウィンドウ中に発生するという事実のために、タスクＡの処理動作ＴＡ３の時間ウィンドウの開始時間ｔ＝５を考慮に入れる。処理動作ＴＢの２つの発生のこれらの異なる細分化は、タスクＡ及びタスクＢの反復スケジューリング計画を構築するために必要である。ともに取られるタスクＡ、タスクＢの反復シーケンスの持続時間は、各タスクの反復シーケンスの持続時間の最小公倍数（ＬＣＭ）に等しい。図３の例では、タスクＢが３時間単位の持続時間を有する時間ウィンドウに関連付けられるのに対し、タスクＡは、６時間単位の持続時間を有する時間ウィンドウと関連付けられる。タスクＡ、タスクＢの反復シーケンスの持続時間は、６及び３のＬＣＭ、つまりタスクＢの２つの発生に相当する６時間単位に等しい。処理動作ＴＡ１及び処理動作断片ＴＢ１１が時間ウィンドウ［０，１［の間に実行されなければならないことが、この細分化の結果から生じる。処理動作断片ＴＡ２１及びＴＢ１２は、時間ウィンドウ［１，３［中に実行されなければならない。処理動作断片ＴＡ２２及びＴＢ２１は、時間ウィンドウ［３，５［の間に実行されなければならない。処理動作ＴＡ３及び処理動作断片ＴＢ２２は、時間ウィンドウ［５，６［の間に実行されなければならない。
【００３２】
さらに、処理動作断片ＴＡ２１及びＴＡ２２の実行時間要件はそれぞれＱＡ２１及びＱＡ２２と示される。同様に、処理動作断片ＴＢ１１、ＴＢ１２、ＴＢ２１，及びＴＢ２２の実行時間要件は、それぞれＱＢ１１、ＱＢ１２、ＱＢ２１、及びＱＢ２２と示される。図３に示される各時間ウィンドウでは、検証される負荷方程式（又は不等式）は、タスクＡ及びタスクＢをスケジューリングできるように定義できる。この方程式は、同じ時間ウィンドウの処理動作又は処理動作断片の要件の和が時間ウィンドウの時間単位での持続時間より少ないことを指定する。従って、以下の負荷連立方程式が図３から生じる。
QA1 + QB11 ≦ 1  (E1)
QA21 + QB12 ≦ 2 (E2)
QA22 + QB21 ≦ 2 (E3)
QA3 + QB22 ≦ 1 (E4)
この連立方程式は、文書［１］及び［３］に提示されるアルゴリズム等の特定のスケジューリングアルゴリズムにとって必要且つ十分な条件を定義する。この連立方程式は、マルチタスクコンピュータのサイジングが正しいことを証明するために使用される。ＲＭＳスケジューリングアルゴリズム（レートモノトニックスケジューリング−文書［１］、［２］を参照）の場合、この方式はすべてのケースで十分な条件を定義せず、この条件は文書［１］に示される公式に従って補正されなければならないことが留意されるものとする。ただし、この補正は決して提示される方法を変更しない。断片の要件ＱＡ２１、ＱＡ２２、ＱＢ１１、ＱＢ１２、ＱＢ２１、ＱＢ２２がどのように計算されているのかは、スケジューリング理論によって定義され、本発明とは関係していない。詳細については、例えば文書［３］が参照されてよい。
【００３３】
一実施形態に従って、新しい負荷連立方程式が、不等号記号の左部分に１より大きい倍率Ｋを導入することによって以前に定義された負荷連立方程式から導出される。図３の例では、新しい負荷連立方程式が、以下のように連立方程式（Ｅ１）〜（Ｅ４）から導出される。
K・ (QA1 + QB11) ≦ 1    (E1’)
K・(QA21 + QB12) ≦ 2   (E2’)
K・(QA22 + QB21) ≦ 2   (E3’)
K・(QA3 + QB22) ≦ 1    (E4’)
因数Ｋの値に従って、この新しい連立方程式は解を有することもれば、有さないこともある。したがって、タスクの計算時間要件の最大倍率Ｋｘが定義され、これによって（例えば、コンピュータＲＴＳ等、所与のコンピュータによって実行される）リアルタイムアプリケーションをスケジューリングできる。つまり、新しい連立方程式（Ｅ１’）〜（Ｅ４’）は解を有する。
【００３４】
（所与の方式によって実行される）リアルタイムアプリケーションをスケジューリングできることを保証しつつ、初期の負荷連続方程式（Ｅ１’）〜（Ｅ４’）から、それぞれの要件を因数Ｋｘで乗算された同じ要件で置換できる。したがって、図３の例では、拡張された要件Ｋｘ・ＱＡ１及びＫｘ・ＱＢ１１を第１の時間ウィンドウ［０，１［でスケジューリングすることができ、拡張された要件Ｋｘ・ＱＡ２１及びＫｘＱＢ１２を第２の時間ウィンドウ［１，３［でスケジューリングできる等であることが保証される。
【００３５】
使用される例を超えて、因数Ｋｘによる要件の乗算は、適用されるスケジューリング法によってどのような連立方程式が得られるのかに関わりなく適用可能である（特に、文書［１］、［２］、［３］を参照すること）。重大なリアルタイムアプリケーションの場合、マージンは、通常、アプリケーションが実行されなければならないマルチタスクコンピュータの要件及び性能に関して保持されることにも留意されたい。因数Ｋｘはこのようにして、コンピュータの計算時間リソースの例えば１００％が使用されるように計算時間マージンから求められてよい。例えば、２０％のマージンは５／４に等しい因数Ｋｘの値に一致し、５０％マージンは２に等しい因数Ｋｘの値に一致する。また、測定可能な量に適用される正式な基準を規定する因数Ｋｘの定義と異なり、マージンの概念が多くの場合不十分に形式化されることにも留意されたい。したがって、計算時間要件を因数Ｋｘで乗算することは、つねに平均値ではなく、すべての処理動作について計算される少なくともマージンをつねに有する最悪の事態の保証を提供する。
【００３６】
図３に提示される例では、因数Ｋｘを定義した結果、少なくとも１つの時間ウィンドウ（この場合ｋｘ・Ｑ＝時間ウィンドウの時間単位での持続時間であり、Ｑは時間ウィンドウと関連付けられる処理動作の要件である）で最大負荷に達するが、要件の値に応じてそれらのそれぞれでは必ずしも達しない。
【００３７】
結果として、（１より大きい）因数Ｋｘで処理動作の実際の要件を乗算すると、各処理動作Ｔｉの実際の実行時間要件Ｑｉが（Ｋｘ−１）・Ｑｉに等しい実行時間マージンＭｉを加算することによって拡張されるタスクスケジューリング計画を入手できる。また、タスクスケジューリング計画は、最大負荷に達していない残りの時間ウィンドウに相当する遊休時間を含んでよい。
【００３８】
タスクスケジューリング計画を構築するために、実際の実行時間要件の値は既知でなければならず、処理動作は時間ウィンドウに割り当てられなければならない。処理動作の実際の要件、及びこれらの処理動作の時間ウィンドウへの割当ては、因数Ｋｘの値を求めることを可能にする。次に、選択されたスケジューリング方法が適用されてよい。したがって、図３から、例えば、第１の時間ウィンドウ及び第２の時間ウィンドウ［０，１［及び［０，１［で最大負荷に達すると想定すると、以下の連立方程式が得られる。
Kx・(QA1 + QB11) = 1     (E1")
Kx・(QA21 + QB12) = 2   (E2")
Kx・(QA22 + QB21) ≦ 2  (E3")
Kx・(QA3 + QB22) ≦ 1   (E4")
【００３９】
連立方程式（Ｅ１’’）〜（Ｅ４’’）の検証は、図４に示される負荷計画に繋がる。図４は、時間ウィンドウ［ｉ，ｉ＋１［（ｉ＝０、１、２、３、４、及び５の場合）が示されるタイミング図の形式で負荷計画を示し、実際の要件ＱＡ１、ＱＡ２１、ＱＳ２２、ＱＡ３、ＱＢは、時間軸ｔに沿った斜影線が付けられた領域により示され、関連付けられた実行時間マージンＭＡ１、ＭＡ２１、ＭＡ２２、ＭＡ３、ＭＢが、時間軸ｔの上方の斜線部によって、及び時間軸ｔの下方の斜線部によって示され、最大負荷に達しない時間ウィンドウの遊休時間ＮＡ１、ＮＡ２が示される。この負荷計画では、各時間ウィンドウは単一処理動作又は処理動作断片と関連付けられる。時間ウィンドウの時間単位での持続時間を考えると、特定の処理動作断片の要件は定義されてよい。したがって、処理動作ＴＢの２つの発生の要件ＱＢ１２及びＱＢ２２はＱＢに設定されてよい。結果は、要件ＱＢ１２及びＱＢ２２が０に設定されることである。
【００４０】
処理動作ＴＢが異なる持続時間の２つのはっきりと異なる時間ウィンドウと関連付けられることが、図４の負荷計画で分かる。実際に、負荷計画は、一方は時間ウィンドウ［１，２［に割り当てられ、他方は時間ウィンドウ［３２，５［に割り当てられる処理動作ＴＢの２つの発生を含む。
【００４１】
図４の負荷計画は、それぞれが処理動作要件、処理マージン、又は遊休時間タイプとなってよい時間スロットに分けられる。したがって、連続要件ＱＡ１、ＱＢ、ＱＡ２１、ＱＡ２２、ＱＢ、及びＱＡ３はそれぞれ時間スロット［０，０１［、［１，１１［、［２，２１［、［３，３２［、［３３，４２［、及び［５，５１［と関連付けられる。連続マージンＭＡ１、ＭＢ、ＭＡ２１、ＭＡ２２、ＭＢ、ＭＡ３はそれぞれ時間スロット［０１，１［、［１１，２［、［２１，３［、［３２，３３［、［４１，４２［、及び［５１，５２［と関連付けられる。遊休時間ＮＡ１、ＮＡ２はそれぞれ時間スロット［４２，５［、及び［５２，６［と関連付けられる。
【００４２】
マルチタスクコンピュータ負荷の観点から、図４の負荷計画は方程式（Ｅ１’’）〜（Ｅ４’’）と一貫しているが、特定の処理動作が細分化されるので、要件と関連付けられる実行時間マージンも細分化されてよいことを示すことができる。したがって、上記の例では、要件ＱＡ２は、２つの異なる部分ＱＡ２１及びＱＡ２２に細分化されているように見える。同は関連付けられたマージンＭＡ２１、ＭＡ２２に当てはまる。この細分化は、時間ウィンドウの再定義を生じさせることがある。実際、処理動作断片ＴＡ２２の拡張された要件Ｋｘ．ＱＡ２２と処理動作ＴＢの第２の発生の要件ＱＢとの間の遷移は、図４に［３２］と示される時間ウィンドウ制限のこの時点での存在を暗示する。したがって、処理動作ＴＡ２２は時間ウィンドウ［３１，３２［と関連付けられる。さらに、処理動作ＴＢの第２の発生の要件ＱＢは、時間［４］前後に拡張するので、この時間はもはや時間ウィンドウ制限に一致しない。処理動作ＴＢの第２の発生は、このようにして時間ウィンドウ［３２，５［と関連付けられる。
【００４３】
処理動作に割り当てられるマージンを最適に使用できるようにする静的スケジューリング計画を提供するため、特にエラー、及び特に予想される実行時間要件を超過するエラーを処理するために、負荷計画は図５に示されるように配置し直されてよい。図４の負荷計画と比較すると、図５の負荷計画は、要件ＱＡ２１及びＱＡ２２と関連付けられた実行時間マージンＭＡ２１及びＭＡ２２をともにグループ化することによって修正される。このために、断片ＴＡ２１と関連付けられたマージンＭＡ２１は、マージンＭＡ２２の直前に移動され、これらの２つのマージンはマージされて（Ｋｘ−１）・ＱＡ２に等しいマージンＭＡ２を形成する。図５の例では、処理動作ＴＡ２の要件ＱＡ２１及びＱＡ２２も、要件が隣接しているので、マージンＭＡ２１を移動後マージできるだろう。処理動作断片の要件をグループ化する可能性が、リアルタイムアプリケーソンが概して２つ以上のタスクを有するという事実のために頻繁ではないことが留意される。また、要件及びマージンのグループ化は、問題の時間ウィンドウの再定義につながる。一方、時間ウィンドウによって定義される処理動作の期日を尊重することは、当初、後者に割り当てられる。実際には、要件ＱＡ２１及びＱＡ２のグループ化のために、時間［３］はもはや時間ウィンドウ制限に一致しない。また、時間［３２］はもはや要件の最後又はマージンの開始時に一致しないので、このグループ化は処理動作ＴＡ２に要件ＱＡ２時間［３１］の最後を再割当てすることにつながる。処理動作ＴＡ２にここで割り当てられる時間ウィンドウ［２，３３［は、この処理動作に当初割り当てられるウィンドウ［１，５［に含まれることに留意されたい。グループ化は、したがって時間［２］と［３３］との間の時間スロットの再定義につながる。したがって、図５の例では、処理動作ＴＡ２の要件ＱＡ２はスロット［２，３１［に関連付けられ、この処理動作のマージンＭＡ２はスロット［３１，３３［と関連付けられる。
【００４４】
したがって、同じ時間基準によって計時されるタスクのセットのために、エラーの場合にエラーの処理に割り当てられる時間が（他の処理動作に割り当てられる時間に超過せずに）保証され、リアルタイムアプリケーションを実行するマルチタスクコンピュータから構成される重大なリアルタイムシステムの制約と互換性のある決定論的時間でエラー処理動作を可能にすることを保証するタスクスケジューリング計画を構築することが可能である。処理動作の実行時間の変動のためにマルチタスクコンピュータをサイジングする上でのエラーが発生した場合、この方法は、残余誤差のケースを極端に少ない数まで、他のタスクの実行と干渉することなく、可能な限り削減することによってリアルタイムマルチタスクシステムのロバスト性を改善できるようにする。したがって、この方法は、リアルタイムアプリケーションのタスクのスケジューリングに対するモジュラー式の複合的な手法を可能にし、このことがコンピュータ全体のサイジングを確証するために必要とされる試験を削減する。この方法は、すべてのタスク間で時間非依存が必要とされる（非干渉）重大なリアルタイムシステムを作り出し、係るシステムの認証を容易にすることを可能にする。また、この方法は、実行プロセッサの特大化を縮小できるようにし、このことは相対的に低い処理能力を有する埋め込み型コンピュータにとって重要な優位点である。
【００４５】
一般的なケースでは、時間スロットは図４及び図５においてのように必ずしもスケジューリングされていないことが留意される。実際に、各処理動作Ｔ１にとって、要件Ｑｉ、マージンＭＡｉ、及びおそらく遊休時間ＮＡのスロットの順序が満たされる場合、スケジューリング計画の異なる処理動作に割り当てられる時間スロットは、どのような方法でもネスト化されてよい。したがって、異なる処理動作のいくつかの割当量タイプの時間スロットは隣接してよい。同様に、異なる処理動作のいくつかのマージンタイプの時間スロットは隣接してよい。各処理動作の割当量及びマージン時間スロットが処理動作に当初割り当てられる時間ウィンドウに含まれることは単に重要である。
【００４６】
また、図４及び図５によって示される実施形態は、プロセッサＰＲＣの実行を停止することなく期間の長さを制限できるようにし、このことが（信頼性及び耐用年数に関する利点を有する）プロセッサの温度上昇を制限できる。また、プロセッサが重大なタスクに属するあらゆる処理動作を実行しない期間は、低い待ち時間での入力／終了の管理等、非常に頻繁に繰返し起こる要件を有する重大ではないタスクを実行するために使用されてもよい。
【００４７】
一般に、割り当てられる要件との準拠は、処理動作又は処理動作断片の要件の値に従って設定できる、処理動作又は処理動作断片に割り当てられる時間割当量を定義する時間遅延のある処理動作又は処理動作断片が開始されるときに有効にされるウォッチドッグによって制御される。したがって、以下では、処理動作に割り当てられる実行時間割当量は、以前に定められた要件に等しい。処理動作又は処理動作断片が完了していない場合、ウッチドッグは時間遅延の最後にトリガされる。
【００４８】
図６Ａ、図６Ｂは、コンピュータＲＴＳのリアルタイムコアによって実行されるステップＳ１からＳ６及びＳ１０からＳ１４を示す。図６ＡのステップＳ１からＳ６は、ウォッチドッグＷＤをスケジューリング計画の各時間スロットの最後におそらくトリガできるようにウォッチドッグＷＤを活性化するために恒久的に実行される。図６ＢのステップＳ１０からＳ１４は、ウォッチドッグＷＤがトリガされるときに実行される。以下、用語「処理動作」は、処理動作又は処理動作断片を分け隔てなく意味する。図６Ａ、図６Ｂのステップの内のいくつかを実行するために、コンピュータＲＴＳのリアルタイムコアは、リアルアイムアプリケーションのタスクの処理動作のスケジューリング計画から又は負荷計画から生成される表を有する。これらの表は、アプリケーションの処理動作のリスト、及び処理動作のそれぞれに割り当てられる時間スロットを定義するパラメータのリストを特に含んでよい。アプリケーションの処理動作のリストでは、各処理動作Ｔｉは、時間割当量Ｑｉタイプ及び時間マージンＭｉタイプの１つ又は複数の時間スロットと関連付けられてよい。時間スロットのリストでは、各スロットは処理動作又は処理動作断片と、タイプ（割当量、マージン、又は遊休時間）と、並びに時間スロットの持続時間と、及び／又は時間スロットの開始時間及び終了時間と関連付けられる。
【００４９】
図６Ａでは、ステップＳ１はｔ＜ｊ＞と示される時間スロットの開始時に実行される。プロセッサＰＲＣは時間スロットのリストにアクセスして、ウォッチドッグＷＤを活性化するために必要なパラメータを決定し、これによって後者は時間スロットｔ＜ｊ＞の最後にトリガされ、ウォッチドッグを活性化する。ステップＳ２では、プロセッサＰＲＣは時間スロットｔ＜ｊ＞のタイプを決定する。時間スロットｔ＜ｊ＞は割当量Ｑタイプである場合、プロセッサＰＲＣはステップＳ３で時間スロットと関連付けられた処理動作Ｔ［ｔ＜ｊ＞］を起動する。時間スロットｔ＜ｊ＞がマージンＭタイプの場合、プロセッサＰＲＣはステップＳ４を実行する。ステップＳ４では、プロセッサＰＲＣは処理動作Ｔ［ｔ＜ｊ＞］と関連付けられるエラーインジケータＥＲ（Ｔ［ｔ＜ｊ＞］）を試験する。このエラーインジケータＥＲ（Ｔ［ｔ＜ｊ＞］）が、処理動作Ｔ［ｔ＜ｊ＞］が割当量超過エラーとなっていることを示す場合、プロセッサＰＲＣはステップＳ５で処理動作Ｔ［ｔ＜ｊ＞］の実行を続行する。ステップＳ３、Ｓ５の実行後、及び処理動作Ｔ［ｔ＜ｊ＞］が割当量超過エラーになっていない場合、プロセッサＰＲＣはカウンタｊを増分するためにステップＳ６を実行し、それによって次の時間スロットＴ［ｔ＜ｊ＞］の処理動作に移動することが可能である。
【００５０】
時間スロットｔ＜ｊ＞のために活性化されたウォッチドッグＷＤがトリガされるときに（割当量又はマージン超過の場合に）実行される図６ＢのステップＳ１０で、プロセッサＰＲＣは、時間スロットｔ＜ｊ＞のタイプ（Ｑ／Ｍ／ＮＡ）を試験することによって、ウォッチドッグのトリガが処理動作の時間割当量又は時間マージンの満了に起因するかどうかを判断する。ウォッチドッグＷＤのトリガが時間割当量の満了に起因する場合、ステップＳ１１が実行される。このトリガが時間マージンの満了に起因する場合、ステップＳ１２からＳ１４が実行される。
【００５１】
ステップＳ１１で、処理動作Ｔ［ｔ＜ｊ＞］に割り当てられる時間割当量は、処理動作の実行の終わり前に満了する。次いで、プロセッサは、例えば処理動作Ｔ［ｔ＜ｊ＞］のためにエラーインジケータＥＲを活性化することによってエラーモードに入る。ステップＳ１２で、処理動作Ｔ［ｔ＜ｊ＞］に割り当てられる時間マージンは、処理動作の実行が完了せずに満了した。プロセッサは次いで処理動作Ｔ［ｔ＜ｊ＞］の実行を停止する。ステップＳ１３で、プロセッサＰＲＣは時間割当量超過エラーが処理動作Ｔ［ｔ＜ｊ＞］のために検出された事実を記憶してよい。ステップ１４で、プロセッサＰＲＣはリアルタイムコアに設けられるような一般エラー処理動作を実行してよい。この一般エラー処理動作は、処理動作間の非干渉の規則を尊重するために、次の時間ウィンドウを、従って次の処理動作に割り当てられる時間を侵害することがないように十分に短い。それは、再び処理動作間の不干渉の規則を尊重するために、処理動作に割り当てられる以後の時間ウィンドウ中に、アプリケーションに特有の、又は割当量超過している処理動作Ｔ［ｔ＜ｊ＞］に特有のエラー処理動作を実行するために提供されてもよい。
【００５２】
時間割当量超過エラーの場合には処理動作の実行を続行することが、リアルタイムアプリケーションの簡略な設計選択肢から生じることに留意されたい。いくつかの場合、時間割当量超過エラーの処理動作を恒久的に停止する、及びエラー処理動作の時間マージンよりも短い実行時間を要する、タスクの又はリアルタイムシステムの劣化した動作のために提供される代替の処理動作を実行する等、上述されたエラーとは異なるこのエラーを処理する他のモードを実装するために準備がなされてよい。
【００５３】
細分化された処理動作の実行の場合、ウォッチドッグが、第１の断片又は中間断片に割り当てられる割当量の最後が、ウォッチドッグが、処理動作の最後の断片の要件の終了を示すケースと区別されなければならないことを示すケース。第１のケースでは、ウォッチドッグは、細分化された処理動作の実行中、時間ウィンドウの変化時のある処理動作から別の処理動作への変化を単に示すだけである。第２のケースでは、ウォッチドッグが、細分化された処理動作の割当量が完全に使用されていること、したがって異常を示す。
【００５４】
一実施形態に従って、細分化された処理動作がスケジューリング計画に留まるとき、状態変数は各処理動作又は処理動作断片と関連付けられて、それが細分化された処理動作の第１の断片であるのか、それとも中間断片であるのか、又は後者が細分化されていない処理動作であるのか、それとも細分化された処理動作の最後の断片であるのかを示す。この状態変数は処理動作断片が第１の断片又は中間断片である場合に処理動作断片にマージンを割り当てないために、及び処理動作断片の時間割当量の満了時にエラーを生じさせないために使用される。この状態変数は、例えばリアルタイムアプリケーションの実行可能コードの生成時に各処理動作又は断片のために自動的に生成され、アプリケーションの負荷計画を定義する表の中に挿入されてよい。
【００５５】
この状態変数は、例えば図７に示されるように使用されてよい。したがって、図７は図６ＢのステップＳ１０からＳ１４を示し、追加のステップＳ１５はステップＳ１０とＳ１１の間に差し込まれる。ステップＳ１５は、このようにして、ウォッチドッグＷＤが処理動作Ｔ［ｔ＜ｊ＞］の時間割当量の満了時にトリガされるときに実行される。ステップＳ１５で、プロセッサＰＲＣは、処理動作Ｔ［ｔ＜ｊ＞］が細分化された処理動作の第１の断片又は中間断片のどちらかであるのか、それとも完全な処理動作（細分化されていない）又は細分化された処理動作の最後のフラグメントであるのかどうかを示す状態変数ＬＦ（Ｔ［ｔ＜ｊ＞］）を試験する。変数ＬＦ（Ｔ［ｔ＜ｊ＞］）が、実行中の処理動作Ｔ［ｔ＜ｊ＞］が細分化された処理動作の完全な処理動作又は最後の断片であることを示す場合、上述されたステップＳ１１は、エラーモードを活性化するために実行する。それ以外の場合、エラーモードは活性化されない。
【００５６】
細分化された処理動作の第１の断片又は中間断片に時間マージンが割り当てられないので、細分化された処理動作に割り当てられる時間マージン全体は細分化された処理動作の最後の断片に割り当てられることに留意されたい。
【００５７】
一実施形態に従って、状態変数は、各処理動作又は処理動作断片に関連付けられて、処理動作断片がプロセッサＰＲＣに関して入力及び／又は終了を実行するかどうかを示す。入力／出力は、例えば、メモリＶＭ又はＮＶＭでのリアルタイムアプリケーションのグローバル変数への書込みアクセスもしくは読取りアクセス、又は回路ＰＨＣを介してプロセッサＰＲＣと周辺装置との間の信号もしくはデータの転送を意味する。この状態変数は、それが関連付けられている時間ウィンドウの開始を待機することなく、あらゆる入力及び／又は終了を実行しない処理動作を期待するために使用される。この状態変数は、例えば、リアルタイムアプリケーションの実行可能なコードを生成するときに処理動作又は処理動作断片ごとに自動的に生成され、アプリケーションの負荷計画及びスケジューリング計画を定義する表に挿入されてよい。
【００５８】
状態変数は、例えば、図８に示されるように使用されてよい。図８は図６ＡのステップＳ１からＳ６、及びステップＳ６とＳ１との間に差し込まれる２つの追加ステップＳ８及びＳ９を示す。ステップＳ８では、プロセッサＰＲＣは処理動作Ｎｘｔ（Ｔ）と関連付けられる次の時間スロットを決定し、この時間スロットが割当量Ｑタイプである場合、プロセッサは負荷計画で次の処理動作Ｎｘｔ（Ｔ）の入力／終了の存在を示す状態変数を試験する。変数ＩＯ（Ｎｘｔ．（Ｔ））が、処理動作Ｎｘｔ．（Ｔ）が入力／終了を実行しないことを示す場合、プロセッサＰＲＣはステップＳ９を実行して、ステップＳ８で決定される時間スロットについてステップＳ１−Ｓ２−Ｓ３で処理動作Ｎｘｔ．（Ｔ）の実行を起動する。それ以外の場合、ステップＳ１は、ちょうど処理された時間ウィンドウに続く時間ウィンドウｔ＜ｊ＋１＞について実行される。当然、図７及び図８のステップが、両方の状態変数ＬＦ及びＩＯを実装するために組み合わせて実行されてよいことは言うまでもない。
【００５９】
この配置は、このようにして、順序制御計画で計画される処理動作を動的に予想できるようにし、したがって関連付けられた未使用のマージンを、予想できない入力／終了を実行する処理動作又は処理動作断片と関連付けられる時間ウィンドウに延期できるようにし、その結果、未使用のマージン及びあらゆる遊休時間がともにグループ化される。この配置は、システムの決定論的な挙動、及び前述の動作保証に異議を唱えない。マージン及び／又は遊休時間のグループかは、重大ではない又はリアルタイムではないタスクを含むことがあり、したがって割込みがほとんどなく、したがって実行コンテキスト切替えがほとんどなく実行できる二次的な活動の実装を可能にする優位点を提供する。結果は性能における、したがってプロセッサの平均温度での利益を生じさせる。プロセッサがグループ化されるマージンの間にスタンバイモードにされる場合、プロセッサはより長い時間スタンバイモードにすることができ、その結果、温度は低下し、このスタンバイモードの持続時間から生じるエネルギー消費が低下する。このマージンのグループ化は、プロセッサスタンバイ機構の活性化の数の削減も可能にする。さらに、処理動作を予測する可能性が、リアルタイムシステムをよりよくサイジングできるようにし、したがってより高い全体的な性能を取得できるようにする。これらの優位点がリアルタイムシステムの操作信頼性に影響を及ぼすことなく得られることに留意されたい。
【００６０】
大部分のリアルタイムシステムでは、処理動作の実行時間を制御するために時間測定、及び時間制約（時間ウィンドウへの時間の分解）を記述するために使用される時間測定は、例えば回路ＣＬＫ等、クロック回路から生じる同じソースに基づく。ただし、この条件は必要ではない。実際、いくつかのリアルタイムシステムは（クロック信号に関係しない）定期的ではない外部イベントによって時間ウィンドウを区切るために計時されてよい。例えば、これらの外部イベントは、可変速度で運転するクランクシャフトの角位置のような移動物体の位置、又は厳密には期間が一定ではない交流電気信号の位相に関係してよい。
【００６１】
従来の方式では、定期的ではない時間基準を使用しなければならないことは、タスクの順序制御を容易に構築できるようにせず、このことが動的なスケジューリングアルゴリズムの使用につながる。それどころか、上記に提示された方法を用いると、まったく同じように進めることが可能である。時間制約、したがって処理動作の順序制御が例えば角位置測定信号等、定期的ではない第２の信号によって定義される異なる時間基準で表されるのに対し、時間要件及び時間割当量は依然として第１のクロック信号によって定義されるプロセッサの実行時間単位で表される。ただし、アプリケーションをスケジューリングできるように、２つの信号の間には関係があり、それにより第１のクロック信号で測定される第２の信号の時間単位の最小期間を決定することが可能である。この場合、因数Ｋｘの値は、この最小値に従って依然として決定され得る。結果として、因数Ｋｘで要件を乗算することによって要件マージンを定義することも可能である。
【００６２】
一実施形態に従って、因数Ｋｘは第１のクロック信号で測定される第２の信号によって定義される時間単位の最小期間に従って計算される値に設定される。結果として、遊休時間が変わり、第２の信号によって定められる時間単位がその最小値から離れるとき特に増加するのに対し、マージンのそれぞれの持続時間は一定である。
【００６３】
性能及び信頼性に関して上述される特徴及び優位点と同じ特徴及び優位点は、このようにして、定期的ではない時間基準の速度変動に関わりなく維持され、それに基づいて実行時間制約（つまり、時間ウィンドウ）が定義される。
【００６４】
本発明が多様な代替実施形態及び多様な用途を可能とすることが当業者によって理解される。特に、本発明は、時間割当量超過している処理動作の実行を続行するために時間マージンを使用することに制限されていない。実際、例えば、処理動作に特有のエラー処理動作を実行する等、他のエラー処理動作が提供されてよい。
【００６５】
さらに、リアルタイムアプリケーションの処理動作に割り当てられる時間マージンは、これらの処理動作に割り当てられる時間割当量に必ずしも比例していない。時間マージンのそれぞれの持続時間を計算するための他のモードが使用されてよい。時間割当量及び割り当てられたマージン、並びにアプリケーションに割り当てられる計算時間リソースを考えると、リアルタイムアプリケーションをスケジューリングできることは単に重要にすぎない。したがって、各処理動作に割り当てられるマージンは、処理動作に従って明確に定義されてよい。
引用文書
［１］「Ｓｃｈｅｄｕｌｉｎｇ  Ａｌｇｏｒｉｔｈｍｓ  ｆｏｒ  Ｍｕｌｔｉｐｒｏｇｒａｍｍｉｎｇ  ｉｎ  ａ  Ｈａｒｄ  Ｒｅａｌ−Ｔｉｍｅ  Ｅｎｖｉｒｏｎｍｅｎｔ」、Ｃ．Ｌ．Ｌｉｕ、Ｊ．Ｗ．Ｌａｙｌａｎｄ、米国計算機学会誌、第２０巻、第１号、１９７３年１月、４６〜６１ページ
［２］「Ｆｏｕｎｄａｔｉｏｎｓ  ｏｆ  Ｒｅａｌ−Ｔｉｍｅ  Ｃｏｍｐｕｔｉｎｇ：  Ｓｃｈｅｄｕｌｉｎｇ  ａｎｄ  Ｒｅｓｏｕｒｃｅ  Ｍａｎａｇｅｍｅｎｔ」、Ａｎｄｒｅ  Ｍ．Ｖａｎ  Ｔｉｌｂｏｒｇ、Ｇａｒｙ  Ｍ．Ｋｏｏｂ編集、１９９１年、クルーヴァーアカデミックパブリッシャーズ
［３］「Ａ  Ｍｅｔｈｏｄ  ａｎｄ  ａ  Ｔｅｃｈｎｉｑｕｅ  ｔｏ  Ｍｏｄｅｌ  ａｎｄ  Ｅｎｓｕｒｅ  Ｔｉｍｅｌｉｎｅｓｓ  ｉｎ  Ｓａｆｅｔｙ  Ｃｒｉｔｉｃａｌ  Ｒｅａｌ−Ｔｉｍｅ  Ｓｙｓｔｅｍｓ」、Ｃ．Ａｕｓｓａｇｕｔｅｓ、Ｖ．Ｄａｖｉｄ、第４回ＩＥＥＥ複雑なコンピュータシステムのエンジニアリングに関する国際会議、１９９８年
［４］特許出願第ＷＯ／２００２／０３９２７７号又は米国／第２００４／００７８５４７号
［５］「Ｔｈｅ  Ｗｏｒｓｔ−Ｃａｓｅ  Ｅｘｅｃｕｔｉｏｎ  Ｔｉｍｅ  Ｐｒｏｂｌｅｍ  −  Ｏｖｅｒｖｉｅｗ  ｏｆ  Ｍｅｔｈｏｄｓ  ａｎｄ  Ｓｕｒｖｅｙ  ｏｆ  Ｔｏｏｌｓ」、Ｒ．Ｗｉｌｈｅｌｍ、Ｊ．Ｅｎｇｂｌｏｍ、Ａ．Ｅｒｍｅｄａｈｉ、Ｎ．Ｈｏｌｓｔｉ、Ｓ．Ｔｈｅｓｉｎｇ、Ｄ．Ｗｈａｌｌｅｙ、Ｇ．Ｂｅｒｎａｔ、Ｃ．Ｆｅｒｄｉｎａｎｄ、Ｒ．Ｈｅｃｋｍａｎｎ、Ｔ．Ｍｉｔｒａ、Ｆ．Ｍｕｅｌｌｅｒ、Ｉ．Ｐｕａｕｔ、Ｐ．Ｐｕｓｃｈｎｅｒ、Ｊ．Ｓｔａｓｃｈｕｌａｔ、Ｐ．Ｓｔｅｎｓｔｒｏｍ、ＡＣＭ埋込計算システムに関する議事録（ＴＥＣＳ）、２００７
［６］”Ｇｉｏｔｔｏ：Ａ  Ｔｉｍｅ−Ｔｒｉｇｇｅｒｅｄ  Ｌａｎｇｕａｇｅ  ｆｏｒ  Ｅｍｂｅｄｄｅｄ  Ｐｒｏｇｒａｍｍｉｎｇ」、Ｔ．Ａ．Ｈｅｎｚｉｎｇｅｒ、Ｂ．Ｈｏｒｏｗｉｔｚ、Ｃ．Ｍ．Ｋｉｒｓｃｈ、ＥＭＳＯＦＴ  ２００１年、１６６〜１８４ページ、２００１年、シュプリンガーフェアラーク
［７］特許出願第ＷＯ／２００６／０５０９６７号
［８］特許出願米国／第２０１０／０１９９２８０号
【図１】
0006424208.tif 000002
【図２Ａ】
0006424208.tif 000003
【図２Ｂ】
0006424208.tif 000004
【図３】
0006424208.tif 000005
【図４】
0006424208.tif 000006
【図５】
0006424208.tif 000007
【図６Ａ】
0006424208.tif 000008
【図６Ｂ】
0006424208.tif 000009
【図７】
0006424208.tif 000010
【図８】
0006424208.tif 000011