(57)【特許請求の範囲】
【請求項１】
リアルタイム通信システムと複数の計算ノードを備えた分散型リアルタイムシステムにおいて周期的タスクの間で適時にデータを引き渡す方法であって、
各計算ノードにおけるローカルのリアルタイムクロックは、該分散型リアルタイムシステムの時間基準としてのグローバル時間と同期し、
新しいサイクルiを開始するためのすべての周期的なトリガ信号zibは、グローバル時間の進行に同期して各計算ノードで導出され、
これらの周期的なトリガ信号は、タスクを起動し、
タスクは、リアルタイム通信システムによって書き込みが行われるローカルな入力メモリ領域から、他のタスクの出力データを読み出し、
タスクは、サイクル終了前におけるそれぞれの所定の完了時刻zifに、リアルタイム通信システムに割り当てられたローカルな出力メモリ領域に現サイクルの結果データを書き込み、
タイム・トリガ型リアルタイム通信システムのスケジュールは、ローカルな出力メモリ領域に存在するタスクの結果データを期間[zif, zi+1b]に該結果データを必要とするタスクのローカルな入力メモリ領域に転送し、
結果として、次のサイクルの開始時に、これらの結果データは、これらの結果データを必要とするタスクのローカルな入力メモリ領域で利用可能となり、
タスクは、開始後に経時インデックスをゼロに設定し、通信システムに割り当てられた出力メモリ領域に対して、結果データに加えて、経時インデックスの現在値を書き込み、
サイクルiの終了前における所定の完了時刻zifに現サイクルの結果データを提供できないタスクは、経時インデックスを１だけ増やし、次サイクルの完了時刻zi+1fに出力メモリ領域に結果データを出力する、
ことを特徴とするデータ引き渡し方法。
【請求項２】
センサシステムにアクセス可能なすべてのタスクは、新しいサイクルの開始と同時にセンサデータを読み出す、
ことを特徴とする請求項１に記載のデータ引き渡し方法。
【請求項３】
タスクの完了時刻は、ばらついている、
ことを特徴とする請求項１または２に記載のデータ引き渡し方法。
【請求項４】
該方法は、最大の処理コストを有するタスクに、最も遅い完了時刻と、これに伴う最長の処理時間を割り当てる、
ことを特徴とする請求項１ないし３のいずれか１項に記載のデータ引き渡し方法。
【請求項５】
すべてのタイム・トリガ型イベントは、まばらなイベント（sparse event）である、
ことを特徴とする請求項１ないし４のいずれか１項に記載のデータ引き渡し方法。
【請求項６】
前記グローバル時間は、外部の時間基準と同期している、
ことを特徴とする請求項１ないし５のいずれか１項に記載のデータ引き渡し方法。
【請求項７】
１または２以上のタスクのハードウェア割り当てが変更された場合、システム領域で決定された協働するタスクの時間的な処理シーケンスとタスクソフトウェアは変更されない、
ことを特徴とする請求項１ないし６のいずれか１項に記載のデータ引き渡し方法。
【請求項８】
１つのタスクの複数のコピーが異なる計算ノードで同時に実行される、
ことを特徴とする請求項１ないし７のいずれか１項に記載のデータ引き渡し方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リアルタイム通信システムと複数の計算ノードを備えた分散リアルタイムシステムにおいて周期的タスクの間で適時にデータを引き渡す方法に関し、各計算ノードにおけるローカルのリアルタイムクロック（Echtzeituhr）は、グローバル時間（globalen Zeit）と同期している。
【０００２】
さらに、本発明はリアルタイム通信システムと複数の計算ノードを備えた分散型リアルタイムシステムに関し、かかる方法を実行するために、各計算ノードにおけるローカルなリアルタイムクロックはグローバル時間と同期している。
【０００３】
本発明は、コンピュータ技術の分野に属する。本発明は、分散型リアルタイムシステムにおいて、多数の並列処理タスクを所定の時間で処理することを実現可能とする革新的な方法を記載している。
【背景技術】
【０００４】
多くのリアルタイムアプリケーションにおいて、与えられたタスクは複数のタスクに分割されている。タスクの下で、プログラム制御されるとともにカプセル化された計算プロセスの解釈が行われ、計算プロセスは与えられた入力データおよびタスクが保持する内部状態データから、所望の出力データおよび新しいバージョンの内部状態データを算出する。使用可能な計算ノードの能力に応じて、１つの計算ノード上で１または複数のタスク（マルチタスキング、multi-tasking）が同時に実行される。マルチタスキングシステムにおいて、仲介ソフトウェア（ミドルウェア、middleware）および計算ノードの基盤となるオペレーティングシステムの使命は、タスクの処理に必要とされるリソースを用意すること、通信チャネルを管理すること、および、権限のない他のタスクのアクセス（呼び出し）からタスクを保護することである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第８４５３１５１号明細書（Manczak. Method and system for coordinating hypervisor scheduling. Granted May 28, 2013）
【特許文献２】米国特許出願公開第２００８／０２７３５２７号明細書（Short.  Distributed System.   Published November 6, 2008）
【非特許文献】
【０００６】
【非特許文献１】Kopetz, H. Real-Time Systems, Design Principles for Distributed Embedded Applications. Springer Verlag. 2011.
【非特許文献２】SAE Standard von TTEthernet. URL: http://standards.sae.org/as6802
【発明の概要】
【発明が解決しようとする課題】
【０００７】
与えられたタスクのシステム領域（Systemebene）で決定されたロジックは、タスクを実行するための詳細なシーケンス（順序）を予め決定する。リアルタイムシステムにおいて、システムの応答時間を最小限にするには、タスク処理の論理的なシーケンス（順序）のみならず、タスクの精密なスケジューリングが非常に重要である。
【０００８】
例えば、自動車の自動制御のためのシステムにおいて、異なるセンサシステム（例えば、光学カメラ、レーザ、レーダ）によって自動車の周囲で移動するもの（例えば、歩行者）を観察する場合、この時点における一貫した周囲のイメージを形成可能とするため、センサデータを取得する異なるタスクが同時に周囲を観察することを保証する必要がある。この同時性は、センサシステムにアクセス可能なすべてのタスクが新しいサイクルの開始直後にセンサデータを読み取ることができる場合に達成される。なぜなら、すべてのタスクは新しいサイクルを同時に開始することができるからである。
【０００９】
本発明の課題は、周期的タイム・トリガ型の（zeitgesteuert）分散リアルタイムシステムにおいてタスクと通信を同期可能とし、システムの最適な応答時間を確保することにある。
【課題を解決するための手段】
【００１０】
本発明の第１の態様によると、リアルタイム通信システムと複数の計算ノードを備えた分散型リアルタイムシステムにおいて周期的タスクの間で適時にデータを引き渡す方法であって、各計算ノードにおけるローカルのリアルタイムクロックは、グローバル時間と同期し、新しいサイクルiを開始するためのすべての周期的なトリガ信号zibは、グローバル時間の進行に同期して各計算ノードで導出され、これらの周期的なトリガ信号は、タスクを起動し、タスクは、リアルタイム通信システムによって書き込みが行われるローカルな入力メモリ領域から、他のタスクの出力データを読み出し、タスクは、サイクル終了前におけるそれぞれの所定の（a priori bestimmt）完了時刻zifに、リアルタイム通信システムに割り当てられたローカルな出力メモリ領域に現サイクルの結果データを書き込み、タイム・トリガ型リアルタイム通信システムに対するスケジュールは、ローカルな出力メモリ領域に存在するタスクの結果データが期間[zif, zi+1b]に該結果データを必要とするタスクのローカルな入力メモリ領域に転送されるように構成され、結果として、次のサイクルの開始時に、これらの結果データは、これらの結果データを必要とするタスクのローカルな入力メモリ領域で利用可能となり、タスクは、開始後に経時インデックスをゼロに設定し、通信システムに割り当てられた出力メモリ領域に対して、結果データに加えて、経時インデックスの現在値を書き込み、サイクルiの終了前における所定の完了時刻zifに現サイクルの結果データを提供できないタスクは、経時インデックスを１だけ増やし、次サイクルの完了時刻zi+1fに出力メモリ領域に結果データを出力する、データ引き渡し方法が提供される。
【図面の簡単な説明】
【００１１】
【図１】マルチタスク計算ノードの一構成を示す図である。
【図２】３つの計算ノードを備えた一分散リアルタイムシステムを示す図である。
【図３】タスクによる処理の時間経過を示す図である。
【発明を実施するための形態】
【００１２】
タイム・トリガ型リアルタイムシステムにおいて、異なる計算ノードで実行されるタスク間の同期は、グローバル時間基準（Zeitbasis）を介して達成される。この目的のため、時間は、システム全体で同期した複数のサイクルに分割される。
【００１３】
本発明によると、グローバル時間の進行により決定されるサイクルの開始時に、例えば、サイクルziの時刻zibに、すべての分散型センサからのセンサデータが受信される。センサに割り当てられたタスクは、センサデータの前処理を行い、通常、現サイクルの終了前、例えば、サイクルiの完了時刻zifに、タイム・トリガ型通信システムが、前処理の結果をタスクの出力メモリ領域において利用できるようにする。タイム・トリガ型通信システムは、次のサイクルの開始前の期間[zif, zi+1b]に、さらなる処理のために前処理結果を必要とするタスクの入力メモリ領域に、当該前処理結果を転送する。これにより、次のサイクルの開始時、すなわち時刻zi+1bに、必要とされるすべての結果データは、後続のタスクの指定された入力メモリ領域において、さらなる処理のために使用可能となる。
【００１４】
調査した特許文献１、２には、本明細書に開示される革新的技術を先に採り扱った方法は見出されていない。
【００１５】
以下に、単独で、または、任意の組み合わせとして実現可能な、本発明に係る方法または本発明に係るリアルタイムシステムの有利な実施形態を記載する。
【００１６】
タスクは、開始後に経時インデックス（Alterungsindex）をゼロに設定し、通信システムに割り当てられた出力メモリ領域に対して、結果データに加えて、経時インデックスの現在値を書き込む。タスクの処理時間はデータに依存するため、タスクの処理において遅延が生じたかどうかを示す経時インデックスがタスクの結果に付与される。タスクのスケジューリングとタイム・トリガ型通信を、タスク内部の処理のロジックから分離することにより、既存の分散ハードウェアアーキテクチャにタスクを柔軟に割り当てることが可能となる。
【００１７】
サイクルiの終了前における所定の完了時刻zifに現サイクルの結果データを提供できないタスクは、経時インデックスを１だけ増やし、次サイクルの完了時刻zi+1fに出力メモリ領域に結果データを出力する。
【００１８】
センサシステムにアクセス可能なすべてのタスクは、新しいサイクルの開始と同時にセンサデータを読み出す。
【００１９】
タスクの完了時刻は、ばらついている（gestaffelt）。
【００２０】
最大の処理コストを有するタスクには、最も遅い完了時刻と、これに伴う最長の処理時間が割り当てられる。
【００２１】
すべてのタイム・トリガ型イベントは、まばらなイベントである（sparse event）。
【００２２】
内部のグローバル時間は、外部の時間基準と同期している。
【００２３】
１または２以上のタスクのハードウェア割り当てが変更された場合、協働するタスクに対するシステム領域で決定された時間的な処理シーケンス（処理順序）と、タスクソフトウェアは変更されない。
【００２４】
１つのタスクの複数のコピーが異なる計算ノードで同時に実行される。
【実施例】
【００２５】
以下の図面に基づいて、本発明について詳細に論ずる。
【００２６】
以下の具体例は、新規な方法の多くの可能な実施例のうちの１つを示す。
【００２７】
図１は、３つのタスク１１０、１２０、１３０が割り当てられた物理的な計算ノード１０１を示す。これらの３つのタスクは、ミドルウェアとオペレーティングシステム１０６によって管理される。計算ノード１０１のハードウェアは、センサ・バス１０２を介して入力センサ１０３およびアクチュエータ１０４に接続され、通信チャネル１０５を介してタイム・トリガ型メッセージ分配部２０３（図２参照）に接続されている。
【００２８】
各タスクは、３つのメモリ領域を備えている。タスク１１０は、入力メモリ領域１１１、内部状態メモリ１１２、および、出力メモリ領域１１３を備えている。タスク１１０の入力メモリ１１１は、リアルタイム通信システムの出力メモリでもある。タイム・トリガ型状態データが伝送されることから、リアルタイム通信システムにおいてキュー管理（Warteschlangenverwaltung）は必要とされない。新しいバージョンの状態メッセージは、それぞれ、入力メモリ領域１１１に存在する古いバージョンを上書きする（非特許文献１、９１頁）。内部状態メモリ１１２は、タスク１１０の直前のサイクルから次のサイクルに受け渡されるデータのそれぞれを保持する。状態メモリ１１２は、サイクルの開始直後に読み出され、次サイクルの開始直前に新しい値で上書きされる。サイクルiの終了前の完了時刻zifに上書きされる出力メモリ領域１１３は、サイクルiにおけるタスク１１０の結果を含む。期間[zif, zi+1b]において、リアルタイム通信システムは、結果メッセージを用いて、結果（データ）を出力メモリ領域１１３から、次のサイクルで当該データを必要とするタスクの入力メモリに転送する。
【００２９】
タスク１２０および１３０も、タスク１１０と同様に、３つのメモリ領域を備えている。
【００３０】
図２には、３つの計算ノード２０１−２０３とメッセージ分配部２１０を有する分散リアルタイムシステムを示す。メッセージ分配部２１０、および、コントローラ、特に計算ノードにおける通信コントローラ、ならびに、メッセージ分配部２１０と計算ノードまたは計算ノードのコントローラとの間の接続は、リアルタイム通信システムを構成する。図１に対応して構成された３つの計算ノード２０１−２０３は、状態メッセージを介して通信する。状態メッセージは、タイム・トリガ型メッセージ分配部２１０によって所定の時刻に中継される。TTEthernet（非特許文献２）は、かかるタイム・トリガ型通信システムの一例である。
【００３１】
図３は、連続するサイクルの時間経過を示す。横軸３０１には、グローバル時間の進行が示されている。時刻zi-1b, zib, zi+1b, zi+2bに、グローバル時間によって、分散リアルタイムシステムのすべての計算ノードにおいて新しいサイクルに対するトリガ信号が生成され、かかるトリガ信号によってタスクが開始される。
【００３２】
アクション（Aktion）の同時性は、内部グローバル時間を介して達成される。グローバルクロック同期の精度（precision）は、内部グローバル時間の粒度（Granularitat, granularity）を規定し、これによって、まばらな（疎の）イベント（sparse event）間の最小（時間）間隔を決定する（非特許文献１、６４頁）。有利には、サイクルの開始またはメッセージの送信等のすべてのタイム・トリガ型アクションは、まばらなイベント（sparse event）である。分散システムにおいて、すべてのタイム・トリガ型アクションがまばらなイベントである場合に限り、システム全体におけるイベントの同時性が一意に決まる。
【００３３】
グローバル時間は、外部の時間基準（例えば、ＧＰＳ（Global Positioning System）時間）と同期させることができる。ＧＰＳは、100ナノ秒（nsec）よりも優れた時間精度（accuracy）を可能とする。複数の自律（自動、autonom）システムがそれらの内部グローバル時間をＧＰＳ時間と同期させた場合、自律システムのシステム境界をまたがるデータ取得の同時性が実現される。
【００３４】
本発明によると、完了時刻zifの後、直ちにメッセージ転送を開始できるように、タイム・トリガ型通信のスケジュールはタスク処理の完了時刻zifと同期させる必要がある。
【００３５】
すべてのタスクのすべてのサイクルは同時に開始するものの、タスクの完了時刻は同時刻とはならず、タスクごとに個別に決まる。タスクの完了時刻がばらつくことにより、通信システムは競合することなく送信側から受信側に順次メッセージを転送することができる。好ましくは、最大の計算コストを有するタスクには、最長の処理時間[zib, zif]が割り当てられる。
【００３６】
以下の例は、実施例におけるパラメータの典型的な大小関係を示す。
・計算ノードの数：１０
・計算ノード当たりの平均タスク数：５
・タスク数：５０
・TTEthernet通信システムの帯域幅：1ギガビット／秒（Gbit/sec）
・クロック同期の精度：100ナノ秒（nsec）
・１サイクル期間：10ミリ秒（msec）
・結果メッセージの平均バイト数：1000バイト（Bytes）
・結果メッセージの転送期間：10マイクロ秒（μsec）
・タスクの最短処理時間：9500マイクロ秒（μsec）
・タスクの最長処理時間：9990マイクロ秒（μsec）
【００３７】
タスク（例えばタスク１１０）の処理時間が入力データの複雑さに依存する場合、タスク１１０は予定した完了時刻zifにサイクルiの処理をまだ完了していない場合が起こり得る。この場合、好ましくは、状態セマンティックス（Zustadssemantik）に応じて、サイクルi - 1の（古い）出力データを出力メモリ領域１１３に保持し続ける。タスク１１０は、次サイクルi + 1において処理を継続し、完了時刻zi+1fに結果を出力メモリ領域１１３に書き込む。
【００３８】
出力メモリ領域１１３には、好ましくは、経時インデックスに対するデータフィールドが設けられる。経時インデックスは、メモリ領域から入力データが読み出された後、ゼロ（Null）に設定される。タスク１１０がサイクル終了前の所定の完了時刻zifに現サイクルの結果データを用意することができない場合、遅延したタスクは経時インデックスを１だけ増加させる。サイクルiの結果データは、次のサイクルの完了時刻zi+1fに出力メモリ領域１１３に出力される。経時インデックスは結果データとともに結果メッセージ内で転送されるため、時間的に後続のタスクは、過去のタスク１１０において遅延が生じたことを確認するとともに、さらなる処理においてかかる遅延を考慮することができる。
【００３９】
システム領域で決定されたタスクの時間的な実行シーケンスは、計算ノードがマルチタスクをサポートするとともにタイム・トリガ型の通信システムを介して通信を行う分散リアルタイムシステムにおいて、様々なハードウェア割り当てによって実現することが可能である。ここで、ハードウェア割り当ては、計算ノード、すなわちハードウェアへのタスクの割り当てとして理解される。観測されたリソース要求に応じて、タスクが予定した完了時刻zifを頻繁に超過する過負荷の計算ノードから他の余力のある計算ノードへと、タスクを割り当てることができる。このために、タスクの起動とタイム・トリガ型通信のスケジュールを再構成する必要がある。一方、タスクそのものを変更する必要はない。タスクソフトウェアをハードウェア割り当てから厳密に分離し、タスクの起動とタイム・トリガ型通信をスケジューリングすることによって、柔軟性が高まるとともに、システム構成を新たな要求に迅速に適応させることが可能となる。
【００４０】
提案されたアーキテクチャでは、信頼性向上のため、１つのタスクの複数のコピーを並列に実行することも可能である。フェイルサイレント（fail-silent）なフェイルモデルに由来する場合、このようにして、コピーの１つが中止しても、並列に動作するタスクのコピーによって隠ぺいすることが可能である。
なお、特許請求の範囲に付記した図面参照符号は、図示した形態に限定することを意図するものではなく、専ら理解を助けるためのものである。
また、本発明において、さらに以下の形態が可能である。
［形態１］
リアルタイム通信システムと複数の計算ノードを備えた分散型リアルタイムシステムにおいて周期的タスクの間で適時にデータを引き渡す方法であって、
各計算ノードにおけるローカルのリアルタイムクロックは、グローバル時間と同期し、
新しいサイクルiを開始するためのすべての周期的なトリガ信号zibは、グローバル時間の進行に同期して各計算ノードで導出され、
これらの周期的なトリガ信号は、タスクを起動し、
タスクは、リアルタイム通信システムによって書き込みが行われるローカルな入力メモリ領域から、他のタスクの出力データを読み出し、
タスクは、サイクル終了前におけるそれぞれの所定の完了時刻zifに、リアルタイム通信システムに割り当てられたローカルな出力メモリ領域に現サイクルの結果データを書き込み、
タイム・トリガ型リアルタイム通信システムに対するスケジュールは、ローカルな出力メモリ領域に存在するタスクの結果データが期間[zif, zi+1b]に該結果データを必要とするタスクのローカルな入力メモリ領域に転送されるように構成され、
結果として、次のサイクルの開始時に、これらの結果データは、これらの結果データを必要とするタスクのローカルな入力メモリ領域で利用可能となる、
ことを特徴とするデータ引き渡し方法。
［形態２］
タスクは、開始後に経時インデックスをゼロに設定し、通信システムに割り当てられた出力メモリ領域に対して、結果データに加えて、経時インデックスの現在値を書き込む、
ことを特徴とする形態１に記載のデータ引き渡し方法。
［形態３］
サイクルiの終了前における所定の完了時刻zifに現サイクルの結果データを提供できないタスクは、経時インデックスを１だけ増やし、次サイクルの完了時刻zi+1fに出力メモリ領域に結果データを出力する、
ことを特徴とする形態１または２に記載のデータ引き渡し方法。
［形態４］
センサシステムにアクセス可能なすべてのタスクは、新しいサイクルの開始と同時にセンサデータを読み出す、
ことを特徴とする形態１ないし３のいずれか一に記載のデータ引き渡し方法。
［形態５］
タスクの完了時刻は、ばらついている、
ことを特徴とする形態１ないし４のいずれか一に記載のデータ引き渡し方法。
［形態６］
最大の処理コストを有するタスクには、最も遅い完了時刻と、これに伴う最長の処理時間が割り当てられる、
ことを特徴とする形態１ないし５のいずれか一に記載のデータ引き渡し方法。
［形態７］
すべてのタイム・トリガ型イベントは、まばらなイベント（sparse event）である、
ことを特徴とする形態１ないし６のいずれか一に記載のデータ引き渡し方法。
［形態８］
内部のグローバル時間は、外部の時間基準と同期している、
ことを特徴とする形態１ないし７のいずれか一に記載のデータ引き渡し方法。
［形態９］
１または２以上のタスクのハードウェア割り当てが変更された場合、システム領域で決定された協働するタスクの時間的な処理シーケンスとタスクソフトウェアは変更されない、
ことを特徴とする形態１ないし８のいずれか一に記載のデータ引き渡し方法。
［形態１０］
１つのタスクの複数のコピーが異なる計算ノードで同時に実行される、
ことを特徴とする形態１ないし９のいずれか一に記載のデータ引き渡し方法。
［形態１１］
リアルタイム通信システムおよび複数の計算ノードを備えた分散型リアルタイムシステムであって、
形態１ないし１０のいずれか一に記載の方法を実行するために、各計算ノードにおけるローカルなリアルタイムクロックはグローバル時間と同期している、
ことを特徴とする分散型リアルタイムシステム。
［形態１２］
１または２以上のタスクのハードウェア割り当てが変更された場合、協働するタスクに対するシステム領域で決定された時間的な処理シーケンスと、タスクソフトウェアは変更されない、
ことを特徴とする形態１１に記載のリアルタイムシステム。
［形態１３］
１つのタスクの複数のコピーが異なる計算ノードで同時に実行される、
ことを特徴とする形態１１または１２に記載のリアルタイムシステム。
【符号の説明】
【００４１】
１０１、２０１−２０３    計算ノード
１０２    センサ・バス
１０３    入力センサ
１０４    アクチュエータ
１０５    通信チャネル
１０６    オペレーティングシステム（ＯＳ：Operating System）
１１０、１２０、１３０    タスク
１１１    入力メモリ領域
１１２    内部状態メモリ
１１３    出力メモリ領域
２１０    メッセージ分配部
３０１    横軸
【図１】
0006359098.tif 000002
【図２】
0006359098.tif 000003
【図３】
0006359098.tif 000004