(57)【要約】計算装置上、特にマイクロプロセッサ上でコンピュータプログラムを処理する方法であって、その場合にコンピュータプログラムが複数のプログラムオブジェクトを有し、かつ、計算装置上でコンピュータプログラムを処理中にエラーが検出され、プログラムオブジェクトが少なくとも２つのクラスに分割される。エラーが検出されると、第１クラスのプログラムオブジェクトが繰返され、かつ、既に処理中である第１クラスのプログラムオブジェクトでエラーが検出されると、第１クラスのプログラムオブジェクトが、第２クラスのプログラムオブジェクトの代りに新たに開始される。【選択図】図３
2008518293.tif 000002
【特許請求の範囲】
【請求項１】
計算装置（２０）上、特にマイクロプロセッサ（２２）上でコンピュータプログラム（２３）を処理する方法であって、前記コンピュータプログラム（２３）が複数のプログラムオブジェクトを有し、かつ、前記計算装置（２０）上で前記コンピュータプログラム（２３）を処理中にエラーが検出される、前記方法において、
前記プログラムオブジェクトが少なくとも２つのクラスに分割されており、エラーが検出されると、第１クラスのプログラムオブジェクトが繰返され、かつ、既に処理中である第１クラスのプログラムオブジェクトでエラーが検出されると、前記第１クラスのプログラムオブジェクトが、第２クラスのプログラムオブジェクトの代りに新たに開始されることを特徴とする、計算装置上でコンピュータプログラムを処理する方法。
【請求項２】
前記エラーの検出が、新たに開始されるクラスでのみ実行されることを特徴とする、請求項１に記載の方法。
【請求項３】
スケジューリング期間内に全てのプログラムオブジェクト用の総計算時間が設定されており、かつ、エラーを伴わない場合には、エラーが検出されると新たに開始される前記プログラムオブジェクトが、スケジューリング期間内の前記総計算時間の最大５０％を占めるように、前記総計算時間が分割されることを特徴とする、請求項１に記載の方法。
【請求項４】
異なるクラスの前記プログラムオブジェクトが交互に処理されることを特徴とする、請求項１に記載の方法。
【請求項５】
エラーを伴う前記第１クラスのプログラムオブジェクトが、直後の前記第２クラスのプログラムオブジェクトの代りに処理されることを特徴とする、請求項１および４に記載の方法。
【請求項６】
前記プログラムオブジェクトが前記コンピュータプログラム（２３）のタスクとして形成されており、前記エラーが検出されると、少なくとも１つのタスクが新たに実行されることを特徴とする、請求項１に記載の方法。
【請求項７】
前記エラーが検出された時点で実行されていたプログラムオブジェクトが、新たに実行されることを特徴とする、請求項１または６に記載の方法。
【請求項８】
前記プログラムオブジェクトの処理中、特に前記プログラムオブジェクトの処理の開始時に、前記プログラムオブジェクトの少なくとも１つの規定された状態が形成され、記憶されることを特徴とする、請求項１に記載の方法。
【請求項９】
前記方法が車両で、特に車両制御装置で使用されることを特徴とする、請求項１に記載の方法。
【請求項１０】
前記コンピュータプログラム（２３）の処理中、前記プログラムオブジェクトの実行前に、前記プログラムオブジェクトの処理に必要とされる変量の値が記憶される（２）ことを特徴とする、請求項１に記載の方法。
【請求項１１】
一周期で周期的に処理すべきコンピュータプログラム（２３）において、所定のプログラムオブジェクト上でエラーが検出されると、前記コンピュータプログラム（２３）の前記周期内で予め設定可能なチェックポイントにジャンプバックされることを特徴とする、請求項１に記載の方法。
【請求項１２】
計算装置（２０）上、特にマイクロプロセッサ（２２）上で実行可能なオペレーティングシステム（２５）において、
前記オペレーティングシステム（２５）が、請求項１〜１１のいずれか１項に記載の方法を実施するようにプログラミングされており、かつ、前記計算装置（２０）上で実行されると、本発明に基づく方法を実施することを特徴とする、オペレーティングシステム。
【請求項１３】
複数のプログラムオブジェクトを有するコンピュータプログラム（２３）を処理する計算装置（２０）であって、前記計算装置（２０）上で前記コンピュータプログラム（２３）の処理中にエラーを検出するエラー検出機構を有する、前記計算装置において、
前記計算装置（２０）は、エラー処理機構を有しており、前記エラー検出機構によってエラーが検出されると、既に処理中である少なくとも１つのプログラムオブジェクトが新たに開始されるように促し、前記プログラムオブジェクトが少なくとも２つのクラスに分割されており、第１クラスのプログラムオブジェクトでエラーが検出されると、前記第１クラスのプログラムオブジェクトが、第２クラスのプログラムオブジェクトの代りに新たに開始されることを特徴とする、コンピュータプログラムを処理する計算装置。
【請求項１４】
エラーが検出されると、前記少なくとも１つのプログラムオブジェクトを新たに開始させるトリガーロジックを、前記エラー処理機構が備えることを特徴とする、請求項１３に記載の計算装置。
【請求項１５】
前記計算装置（２０）上で、リアルタイムオペレーティングシステム（２５）が実行されることを特徴とする、請求項１３に記載の計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算装置上、特にマイクロプロセッサ上でコンピュータプログラムを処理する方法に関する。コンピュータプログラムは、複数のプログラムオブジェクトを有する。本方法においては、計算装置上でコンピュータプログラムを処理中にエラーが検出される。
【０００２】
本発明は、さらに、計算装置上、特にマイクロプロセッサ上で実行可能なオペレーティングシステムに関する。
【０００３】
そして、本発明は、複数のプログラムオブジェクトを有するコンピュータプログラムを処理する計算装置にも関する。計算装置は、計算装置上でコンピュータプログラムを処理中にエラーを検出するエラー検出機構を備える。
【背景技術】
【０００４】
計算装置上でコンピュータプログラムを処理する際には、いわゆる過渡的エラーが発生しうる。半導体モジュール（いわゆるチップ）上の構造がますます小さくなる一方で、信号のクロック速度がますます大きく、信号の電圧がますます低くなるので、過渡的エラーがますます頻繁に発生する。過渡的エラーは、恒久的エラーと異なり、一時的にのみ発生し、通常ある程度の時間が経てば自ずと消滅する。過渡的エラーでは、幾つかのビットがエラーとなるのみで、計算装置自体が恒久的に損傷することはない。過渡的エラーは、例えば電磁的な影響、アルファ粒子または中性子のような種々の原因に起因しうる。
【０００５】
通信システムでは、今日既に、エラー処理の重点が過渡的エラーに置かれている。通信システム（例えばコントローラエリアネットワーク：ＣＡＮ）では、エラーが検出されると、エラーを伴って伝達されたデータを新たに送信することが知られている。さらに、通信システムでエラーカウンタを使用することが知られており、エラーカウンタは、エラーが検出されるとインクリメントされ、正しく送信されるとデクリメントされて、所定値を上回ると直ぐにデータの送信を阻止する。
【発明の開示】
【０００６】
しかし、コンピュータプログラムを処理する計算装置では、基本的に恒久的エラーのみを対象としてエラー処理が行われる。過渡的エラーの考慮は、エラーカウンタのインクリメントと、場合によってはデクリメントに限定される。エラーカウンタの値がメモリに記憶され、オフラインで、すなわち、例えば車両制御装置として形成される計算装置では修理工場で待機中に、診断情報またはエラー情報として読出される。この場合に初めて、エラーに応じた対応がなされうる。
【０００７】
すなわち、エラーカウンタを用いたエラー処理は、特に安全上重要なシステムに要求される短いエラー許容時間内にエラー処理を許容しない一方で、エラー許容時間内にコンピュータプログラムを再び規定通りに処理するような、構造的なエラー処理をも許容しない。代替的に、従来技術におけるコンピュータプログラムは、エラーカウンタが所定の値を上回ると、非常走行オペレーションに切替えられる。これは、コンピュータプログラムのエラーを伴う部分の代りに、他の部分が処理されて、その方法で求められた代替値が後続する他の処理に使用されることを意味する。代替値は、例えば、他の変量を用いて生成されうる。代替的に、コンピュータプログラムのエラーを伴う部分によって計算された結果を誤りとして棄却して、他の計算用には非常走行オペレーション用に設けられた標準値を使用しうる。よって、計算装置上で実行されるコンピュータプログラムの過渡的エラーを処理する既知の方法は、大抵のエラーの過渡的な性質を系統的かつ構造的に取扱うことを許容しない。
【０００８】
従来技術として、さらに、計算装置上でコンピュータプログラムを処理する際に発生した過渡的エラーを、計算装置の完全に新たな開始によって除去することが知られている。この解決策も、実際には満足できるものではない。というのは、コンピュータプログラムのある処理より従前の過程（Verlauf）で得られた変量が失われてしまい、新たな開始の間に計算装置が所定の機能を満たせないからである。これは、特に安全上重要なシステムでは受け容れられない。
【０００９】
そして、計算装置上で処理されるコンピュータプログラムの過渡的エラーに対するエラー処理として、コンピュータプログラムを数クロックのみ後退させて、コンピュータプログラムの個々の機械命令を繰返すことも知られている。この方法は、マイクロロールバックとも称される。この既知の方法では、オブジェクトのためにのみマシンレベル（Maschineneben；クロック、機械命令）にジャンプバック（zurueckgesprungen）される。これは、マシンレベル上でそれに応じたハードウェア支援を必要とし、計算装置の側における多大な労力をもたらす。この既知の方法は、純粋なソフトウェアによっては実施不能である。
【００１０】
従来技術として既知のエラー処理機構は、計算装置上でコンピュータプログラムを処理する際に発生する過渡的エラーに適切な方法で対応できない。
【００１１】
しかし、過渡的エラーは、まさに将来の技術において非常に頻繁となる。よって、過渡的エラーが例えばデュアルコア機構を介して検出されると、正しい結果を識別するためには、エラー位置測定の問題に対処することが常に課題として残される。これは、過渡的エラーが計算機の新たな開始を必ずしももたらさないようにするほど多くなる。エラー位置測定は、説明したように典型的に比較的複雑な方法を介してのみ達成される。
【００１２】
本発明の課題は、計算機システム上でコンピュータプログラムを処理中に過渡的エラーが発生すると、そのエラーを可能な限り短いエラー許容時間内で、計算機システムの完全な機能能力および機能安全性が再び回復されるように構造的に処理することにある。
【００１３】
本課題を解決するために、前述した種類の方法に基づいてエラーが検出されると、既に処理中である少なくとも１つのプログラムオブジェクトが規定の状態に移行されて、その状態から新たに開始されることが提案される。
【００１４】
無論、さらにシステムレベル（Systemebene）上で、この種のタスク繰返しの概念をどのように合理的に利用するかという問題が生ずる。通常、エラーを伴う任意のタスクを単純に再び計算できるということにはならない。というのは、付加的に必要となる計算時間とそのために使用される時点もまた、システム上の観点から別途に計画されるからである。プロセッサの稼働が既にほぼ１００％であれば（通常の場合にそうであるように）、この種の計画されていない負荷増（タスク繰返しのような）によってシステムに過負荷が生じて、それが典型的に失敗（zusammenbruch）をもたらしうる。これは、時間制御されるシステムを考えれば（このシステムは、少なくとも部分的に実行されることが明らかである。）、より明らかである。このシステムにおいて、デッドライン違反は、大抵の他のハードなリアルタイム概念と同様に許容されえない。
【００１５】
結果として、すなわちシステム上の観点から、潜在的なタスク繰返しによって生じうる負荷増を計画に組込む必要がある。タスク繰返しが必要とする計算時間を各タスクの後に確保すれば、もちろん機能しうるが、エラー処理を伴わないシステム（１００％）に比して、付加的なパフォーマンスの代償を払う必要がある。これは、コスト上の観点から受け容れられない。
【００１６】
よって、本発明の課題は、さらに、タスクの二重の計算を常に計画に組込まない（よって、恒久的かつ非常に大きなオーバーヘッドを発生させることなしに）と同時に、時間制御されるアプローチとどのように結合するかという問題を解決する、最適なシステム戦略を提供することにある。
【００１７】
（発明の利点）
よって、本発明に基づくシステム戦略の枠内で、最小のパフォーマンスオーバーヘッド、または特にオーバーヘッドなしに、タスク繰返しの概念を組込むことを許容する、方法、オペレーティングシステムおよび計算装置が提案される。この場合、この種のシステム戦略は、後述する特に１つまたは複数のプログラムオブジェクトとして称される、タスク、課題、プログラムまたはプログラムの一部をスケジューリングする方法の周辺条件となる。
【００１８】
新たに開始されるプログラムオブジェクトは、エラーが検出された際に完全に処理されている必要はない。本発明の主旨において、エラー検出の時点までに完全に処理されていないが、既に処理が開始されているプログラムオブジェクトもまた、エラーが発生した際に新たに開始されうる。すなわち、本発明によれば、過渡的エラーまたは恒久的エラーが発生した際には、少なくとも１つのオペレーティングシステムのオブジェクトが新たに実行される。マイクロロールバックの利点は、特にプログラムオブジェクトの繰返しを非常に僅かなハードウェア支援によって実現しうることにある。プログラムオブジェクトの新たな実行に必要とされる情報（例えばプログラムオブジェクトの入力変量）を記憶可能なように、たかだか付加的なメモリ領域が必要とされるのみである。本発明に基づく方法の本質的な管理（Verwaltung）は、計算装置のオペレーティングシステムによって実施されうる。すなわち、本発明に基づく方法は、付加的なハードウェアを必要とせずに、従来の商業用プロセッサによって実現可能である。もちろん、本発明に基づく方法をハードウェア支援によって実現することも可能である。
【００１９】
よって、エラーを伴うタスク、すなわちエラーを伴う課題、またはエラーを伴うプログラムもしくはプログラム部分もしくはプログラムオブジェクト、あるいは少なくともオペレーティングシステムオブジェクトを再び計算することは、従来技術と比してより望ましいものである。本来のエラーが過渡的なものであった場合には、新たに計算された２つの出力が同一であり、よって、エラーは、消滅して新たな計算によって処理される。
【００２０】
よって望ましくは、計算装置上、特にマイクロプロセッサ上でコンピュータを処理する方法が示され、その場合にコンピュータプログラムが複数のプログラムオブジェクトを有し、かつ、計算装置上でコンピュータプログラムを処理中にエラーが検出され、その場合にプログラムオブジェクトが少なくとも２つのクラスに分割されている。この場合にエラーが検出されると、第１クラスのプログラムオブジェクトが繰返され、かつ、既に処理中である第１クラスのプログラムオブジェクトでエラーが検出されると、第１クラスのプログラムオブジェクトが、第２クラスのプログラムオブジェクトの代りに新たに開始される。
【００２１】
この場合にエラーの検出が、新たに開始されるクラスでのみ実行される。
【００２２】
望ましくは、スケジューリング期間（Durchlauf）内に全てのプログラムオブジェクト用の総計算時間が設定されており、かつ、エラーを伴わない場合にはエラーが検出されると新たに開始されるプログラムオブジェクトが、スケジューリング期間内の総計算時間の最大５０％を占めるように、総計算時間が分割される。この場合に異なるクラスのプログラムオブジェクトが交互に処理されて、エラーを伴う第１クラスのプログラムオブジェクトが、直後の第２クラスのプログラムオブジェクトの代りに処理され、または新たに開始される。
【００２３】
エラー検出自体は、任意の方法に従って行われうる。コンピュータプログラムの処理中にエラーを検出しうる（いわゆるconcurrent checking）種類のエラー検出機構の使用が考えられうる。例えばデュアルコアアーキテクチャでは、完全な計算機コアが二重に形成される。計算機コアがロックステップモードで駆動されると、２つの計算機コアが同一の結果を提供するか否かが命令毎に比較されうる。この場合に結果の相違は、確実にエラーを推定させる。すなわち、エラー検出機構は、プログラムオブジェクトを処理中にリアルタイムでエラーを検出する。プロセッサアーキテクチャで一貫して使用されるエラー検出コード、または計算装置の二重化された部分コンポーネントについても、同様である。これら全てのエラー検出機構の共通点は、過渡的エラーを非常に迅速に検出し、エラーが検出されるとエラー信号を供給することにある。
【００２４】
この種のエラー信号は、プログラムオブジェクトを繰返すエラー処理機構が供給しうる。新たな実行に際して同一のエラーが再び発生した場合には、恒久的エラーが推定可能であり、またはエラーカウンタがインクリメントされ、その場合にエラーカウンタが所定値を上回る場合に初めて、恒久的エラーが推定される。一方、プログラムオブジェクトの新たな実行に際して、もはやエラーが発生しない場合には、エラーが過渡的エラーであったとみなしうる。プログラムオブジェクトがエラーを伴わずに新たに実行される間に、コンピュータプログラムは、規定に基づく機能のために再び準備される。すなわち、非常に短い時間の後には、再び可用性（Verfuegbarkeit）が得られる。よって、少なくとも１つのプログラムオブジェクトの繰返しは、過渡的エラーを処理する良好な手段となる。
【００２５】
本発明の望ましい展開によれば、プログラムオブジェクトがコンピュータプログラムのランタイムオブジェクトとして形成されており（以下では、特にタスクと称する。）、エラーの検出に際して、少なくとも１つのタスクが新たに実行されることが提案される。タスクは、特にオペレーティングシステム水準上の典型的なオブジェクトである。タスク繰返しは、望ましくは純粋にソフトウェア的に制御されて、最小限の労力で実現されうる。
【００２６】
本発明の望ましい実施形態によれば、エラーが検出された時点で実行されていたプログラムオブジェクトが新たに開始されることが提案される。代替的または付加的に、エラーが検出された時点で既に完全に処理されていたプログラムオブジェクトが、開始されて新たに処理されることも可能である。
【００２７】
プログラムオブジェクトの処理中、特にプログラムオブジェクトの処理の開始時に、プログラムオブジェクトの少なくとも１つの規定された状態が形成され、記憶されることが提案される。これは、例えば、プログラムオブジェクトの状態として重要な全ての変量の値が記憶されることによって行われうる。
【００２８】
さらに、エラー検出のために、複数のプログラムオブジェクトを伴うコンピュータプログラムが処理される計算装置に対して、冗長に作動する他の計算装置が使用されることが提案される。もちろん、エラー検出のために、１つ以上の冗長な計算装置も使用されうる。
【００２９】
望ましくは、本発明に基づく方法が車両で、特に車両制御装置で、コンピュータプログラムの処理に際して不可避な過渡的エラーにもかかわらず、コンピュータプログラムの確実かつ信頼できる処理を保証するために使用される。これは、特に、車両の安全上重要な適用では、開ループおよび／または閉ループ制御プログラム（Steuer- und/oder Regelungsprogrammen）を処理するために重要となる。
【００３０】
さらに、少なくとも１つのプログラムオブジェクトを新たに実行された際に同一のエラーが新たに発生した場合には、恒久的エラーが推定されることが提案される。また、プログラムオブジェクトが予め設定可能な回数で繰返された後でもまだエラーが発生すれば、恒久的エラーが初めて推定されることも考えられうる。すなわち、この場合、プログラムオブジェクトが３回またはさらに繰返された後に初めてエラーが消滅しても、まだ過渡的エラーとして推定される。本発明のこの展開によって、重要なプログラムオブジェクトが例えば２回のみならず３回繰返されうる。
【００３１】
本発明の他の望ましい展開によれば、少なくとも１つのプログラムオブジェクトの繰返回数が、予め設定可能な値に制限されることが提案される。これによって、恒久的エラーに際して、同一のプログラムオブジェクトが任意に何度も繰返されることが回避される。少なくとも１つのプログラムオブジェクトの繰返回数を制限することは、例えば、カウンタを用いて、または制限時間を介して行いうる。さらに、タスクに依存する繰返回数の設定によって、重要性の高いタスクを重要性の低いタスクより頻繁に繰返し、よって重要性の高いタスクには、過渡的エラーを伴わない誤りのない実行の可能性が、より頻繁に、またはより長期に与えられうる一方で、重要性の低いタスクでは、恒久的エラーがより迅速に推定され、他のシステム応答が導入される。
【００３２】
本発明の他の望ましい実施形態によれば、少なくとも１つのプログラムオブジェクトの繰返回数が、予め設定可能な値に動的に制限されることが提案される。望ましくは、少なくとも１つのプログラムオブジェクトの繰返回数が、スケジューリング上で残されている空き時間（Restzeit）に応じて予め設定可能な値に動的に制限される。このようにして、例えば、第１および第２のタスクをスケジューリング（duerchlaufen）しうる一方で、第３のタスクを複数回繰返しうる。
【００３３】
本発明に基づく方法を実現するために、コンピュータプログラムの処理中、プログラムオブジェクトの実行前に、プログラムオブジェクトの処理に必要とされる値またはプログラムオブジェクトの状態を規定する変量が記憶されることが提案される。すなわち、本実施形態によれば、全てのプログラムオブジェクトの変量が記憶される。
【００３４】
代替的に、一周期で周期的に処理すべきコンピュータプログラムにおいて、所定のプログラムオブジェクト上でエラーが検出されると、コンピュータプログラムの周期内で予め設定可能なチェックポイント（Ruecksprungpunkt）にジャンプバックされることが提案される。すなわち、本実施形態によれば、エラーに際して、周期内の同一箇所に常にジャンプされる。この場合に望ましくは、コンピュータプログラムの処理中、チェックポイントでのプログラムオブジェクトの実行前にのみ、プログラムオブジェクトの状態として重要とされる全ての変量の値が記憶される。すなわち、サイクル毎または周期毎に１回だけ、チェックポイントにおけるプログラムオブジェクトの重要とされる変量の値のみが記憶される必要がある。これによって、記憶に要する時間およびメモリ領域が節約されうる。
【００３５】
そして、エラー検出後のプログラムオブジェクトの新たな実行に際して、記憶された入力変量が読出されて、新に実行すべきプログラムオブジェクトに入力変量として提供される。
【００３６】
本発明の他の実施形態として、１つのプログラムオブジェクトに複数のチェックポイントが設定されることが提案される。エラーの発生に際して、プログラムオブジェクトの全体ではなく、一部のみが新たに処理される必要がある。エラーが発生すると、プログラムオブジェクトの処理にエラーを伴わなかった、先行のチェックポイントに単純にジャンプされる。例えばｎ番目のチェックポイントまでプログラムオブジェクトの処理にエラーを伴わなかった際には、ｎ番目のチェックポイントと（ｎ＋１）番目のチェックポイントとの間でエラーが発生すれば、ｎ番目のチェックポイントにジャンプバックされうる。そして、プログラムオブジェクトは、ｎ番目のチェックポイントから新たに処理される。よって、時間の節約が可能となる。望ましくは、プログラムオブジェクトの処理中に各チェックポイントを超えれば、少なくとも１つの規定された状態が形成されて記憶される。
【００３７】
本発明に基づく方法をオペレーティングシステムの形式で実現することが特に重要である。この場合にオペレーティングシステムは、計算装置上、特にマイクロプロセッサ上で実行可能であり、計算装置上で実行されると、本発明に基づく方法を実施するようにプログラミングされる。すなわち、この場合に本発明がオペレーティングシステムによって実現されるので、オペレーティングシステムは、オペレーティングシステムの実施に適した方法と同様に本発明を表すものである。オペレーティングシステムは、望ましくはメモリ素子上に格納されており、処理のために計算装置に読出される。メモリ素子としては、特に任意のデータ媒体、または、例えばランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）もしくはフラッシュメモリのような、電気的なメモリ媒体が使用されうる。
【００３８】
本発明の課題に係る他の解決策としては、前述した種類の計算装置に基づいて、計算装置がエラー処理機構を有しており、エラー処理機構は、エラー検出機構によってエラーが検出されると、少なくとも１つのプログラムオブジェクトの新たな実行を促すことが提案される。
【００３９】
本発明の望ましい展開によれば、エラーが検出されると、少なくとも１つのプログラムオブジェクトを新たに開始させるトリガーロジック（Triggerlogik）を、エラー処理機構が備えることが提案される。
【００４０】
望ましい実施形態によれば、計算装置上でリアルタイムオペレーティングシステム、例えばＯＳＥＫｔｉｍｅが実行されることが提案される。そして、計算装置がマイクロプロセッサを備えることが提案される。
【００４１】
本発明の他の特徴、適用可能性および利点は、図面に示される本発明の実施例に関する以下の説明から明らかにされる。この場合、記載または図示される全ての特徴は、それ自体または任意の組合せにおいて、特許請求項に係る要約またはその帰属に関係なく、かつ、明細書中の表現または図面中の表示に関係なく、本発明の対象を形成する。
【００４２】
（実施例）
本発明は、計算装置上、特にマイクロプロセッサ上でコンピュータプログラムを処理する方法に関する。コンピュータプログラムは、望ましくはタスクとして形成される複数のプログラムオブジェクトを有する。本方法においては、計算装置上でコンピュータプログラムを処理中にエラーが検出される。検出されたエラーは、過渡的（すなわち一時的）または恒久的なものでありうる。
【００４３】
計算装置上でコンピュータプログラムを処理する際には、過渡的なエラーが発生しうる。計算装置の半導体モジュール（いわゆるチップ）上の構造がますます小さくなる一方で、信号のクロック速度がますます大きく、信号の電圧がますます低くなるので、計算装置上でコンピュータプログラムを処理する際には、過渡的エラーがますます頻繁に発生する。恒久的エラーと異なり、過渡的エラーは、一時的にのみ発生し、通常ある程度の時間が経てば自ずと消滅する。過渡的エラーでは、幾つかのビットがエラーとなるのみで、計算装置自体が恒久的に損傷することはない。過渡的エラーは、例えば電磁的な影響、アルファ粒子または中性子のような種々の原因に起因しうる。
【００４４】
過渡的エラーがほとんど予測不能に発生し、よって再現不能であるという事実に基づいて、従来技術として既知の計算装置では、基本的に恒久的エラーのみを対象としてエラー処理が行われる。過渡的エラーの考慮は、エラーカウンタのインクリメント、場合によってはデクリメントに限定される。エラーカウンタの値がメモリに記憶され、オフラインで、すなわち修理工場で待機中に、診断情報またはエラー情報として読出される。この場合に初めて、エラーに応じた対応がなされうる。すなわち、既知のエラー処理は、特に安全上重要なシステムに要求される短いエラー許容時間内にエラー処理を許容しない一方で、エラー許容時間内にコンピュータプログラムを再び規定通りに処理して計算装置が所定の課題を遂行可能となるような、構造的なエラー処理をも許容しない。
【００４５】
これとは異なり、本発明に基づく方法は、大抵のエラーの過渡的な性質を系統的かつ構造的に取扱うことで、計算装置上で実行されるコンピュータプログラムの過渡的エラーの処理を許容する。ランタイムオブジェクト、いわゆるタスクの例における、本発明に基づく方法のフローチャートが図１に示される。他のタスクの存在は、根本的なシーケンスに影響を与えず、すなわち考慮から省かれる。すなわち、図１に示すようなシーケンスでタスクが処理されれば、本発明に基づいて複数のタスクも処理されうる。並列処理するエラー検出機構（いわゆるconcurrent checking）が特に効果的である。しかし、これは、フローチャート内でそのように表示不能であるので、適切な箇所に直列モジュールとして挿入される。
【００４６】
本発明に基づく方法が機能ブロック１で開始される。機能ブロック１において、計算装置上でタスクの処理が開始される（すなわち、タスクが呼出される。）。機能ブロック２において、チェックポイントが形成される。この目的のために、新たな開始用に規定された状態に移行させ、タスクを再び開始させるために十分な、確実で重要なタスク入力変量が計算装置のメモリ素子に記憶される。望ましくはタスクの全ての入力変量が記憶される。そして、機能ブロック３において、タスクがさらに処理される。処理は、他のチェックポイントまで、またはタスクの最後まで行いうる。その後、エラー検出機構が実行される。エラー検出は、任意の方法に従って行いうる。エラーがコンピュータプログラムの処理中に検出される（いわゆるConcurrent checking）。すなわち、例えば、いわゆるデュアルコアアーキテクチャでは、完全な計算機コアが二重に形成される。計算機コアがいわゆるロックステップモードで駆動されると、２つの計算機コアが同一の結果を提供するか否かが命令毎に比較されうる。この場合に結果の相違は、確実にエラーを推定させる。すなわち、この種のエラー検出機構は、タスクを処理する際にリアルタイムでエラーを検出する。プロセッサアーキテクチャで一貫して使用されるエラー検出コード、または計算装置の二重化された部分コンポーネントについても、同様である。望ましくは、過渡的エラーを非常に迅速に検出し、エラーが検出されるとエラー信号を供給する、この種のエラー検出機構が使用される。
【００４７】
判断ブロック４において、エラー、すなわち過渡的エラーまたは恒久的エラーが検出されるか否かが調べられる。エラーが検出された場合には、他の判断ブロック７に分岐し、エラーカウンタロジックの現在値が調べられる。エラーカウンタが予め設定可能なカウンタ状態をまだ下回らない場合（エラーカウンタがデクリメントされる際）、または上回らない場合（エラーカウンタがインクリメントされる際）には、処理中にエラーが発生したタスク、またはエラー発生前に処理された所定数のタスクを再び実行しうる。タスク処理の新たな開始が可能である場合には、機能ブロック８に分岐され、エラーカウンタロジックのステータスは、「他のエラーが発生している」という情報で更新（デクリメントまたはインクリメント）される。そして、機能ブロック５に分岐されて、機能ブロック２において記憶された変量が読込まれて、規定された状態を形成させるタスクが処理を開始する。そして、機能ブロック３に分岐されて、繰返されるべきタスクが部分的に、すなわち例えば既に処理されたチェックポイントから、または全体的に、すなわち最初から再び開始されて、再び処理される。
【００４８】
判断ブロック４において、機能ブロック３でタスクを処理中にエラーが発生していないことが明らかにされた場合には、機能ブロック９に分岐されて、エラーカウンタロジックのステータスは、「エラーが検出されていない」という情報で更新される。そして、判断ブロック１１に分岐されて、コンピュータプログラムが最後まで処理されているか否かが調べられる。最後まで処理されている場合には、機能ブロック６でコンピュータプログラムの最後に分岐される。最後まで処理されていない場合には、機能ブロック１２に分岐されて、現在のタスクステータスに応じて他のチェックポイントが形成されて、タスクを再び開始させるために十分な、確実で重要なタスク入力変量が規定されて記憶される。そして、機能ブロック３に再び分岐されて、繰返されるべきタスクが新たに開始されて、部分的または全体的に再び処理される。
【００４９】
判断ブロック７において、エラーカウンタロジックの状態に基づいて、タスクを新たに処理するための他の試みがもはや不能であることが明らかにされた場合には、機能ブロック１０に分岐される。判断ブロック７において、タスク用のエラーカウンタロジックの値が、タスクに依存する繰返回数よりも大きいか否かが調べられる。タスクに依存する繰返回数は、異なるタスクに対して同一、または各タスクに対して個々に設定されうる。このような方法で、例えば特に重要なタスクは、恒久的エラーが報告される前にまず数回繰返されうる。タスクに依存する繰返回数が１として予め設定されると、恒久的エラーが検出される前にタスクが１回のみ繰返される。タスクに依存する繰返回数が２または３に予め設定されると、恒久的エラーが検出される前にタスクが２回または３回繰返される。すなわち、この場合にタスクは、過渡的エラーがもはや発生しなくなるまでに、より長い時間を有し、もしくはより多くのスケジューリング期間（Durchlaufe）が提供される。機能ブロック１０において、恒久的エラーが検出されて、それに応じた措置が導入される。措置は、例えば、コンピュータプログラムを非常走行オペレーションに移行させ、またはとりあえず措置を講じずにコンピュータプログラムの実行を終了することでもありうる。
【００５０】
本発明に基づく方法は、図１に示すとともに前述で説明した、全ての機能ブロックおよび判断ブロックを必ずしも有する必要はない。すなわち、例えば、エラーカウンタロジックに関するブロック７〜９を省略しうる。エラーが検出されると、新たに開始されて実行されるべき１つまたは複数のタスクは、エラーがもはや発生しなくなるまで繰返される。恒久的エラーが検出されないので、機能ブロック１０も省略しうる。代替的に、タスクに依存する繰返回数が１として予め設定されうるので、エラーカウンタを更新する機能ブロック８および９を省略しうる。そして、唯一のチェックポイントを伴う唯一のタスクのみが実行される場合には、ブロック１１および１２も省略しうる。
【００５１】
図２には、コンピュータプログラムを処理する、本発明に基づく計算装置が、望ましい実施形態に基づいて示される。計算装置は、全体が参照符号２０で示される。計算装置は、メモリ素子２１を有しており、そのメモリ素子が例えば電子メモリ、特にフラッシュメモリとして形成される。さらに、計算装置２０は、マイクロプロセッサ２２を有しており、その上でコンピュータプログラムを処理しうる。コンピュータプログラムは、電子メモリ媒体２１に格納され、参照符号２３で示される。マイクロプロセッサ２２上でコンピュータプログラムを処理するために、コンピュータプログラムが全体的または部分的に、例えば命令単位で、データ接続２４を介してマイクロプロセッサ２２に伝送される。データ接続２４は、１つもしくは複数のデータ線、またはデータ伝送用のバスシステムとして形成されうる。メモリ媒体２１上には、さらにオペレーティングシステムが格納されており、オペレーティングシステムは、計算装置２０の起動に際して、少なくとも部分的にメモリ２１からマイクロプロセッサ２２に伝送されて処理される。オペレーティングシステムが参照符号２５で示される。オペレーティングシステムは、マイクロプロセッサ２２上のコンピュータプログラム２３の処理と、計算装置２０に接続された周辺装置とを制御し、管理するという課題を有する。本発明に基づくオペレーティングシステム２５は、特別な方法で形成されているので、本発明に基づく方法を実施するようにプログラミングされており、かつ、マイクロプロセッサ２２上で実行されると、本発明に基づく方法を実施する。特にオペレーティングシステム２５は、マイクロプロセッサ２２上でコンピュータプログラムを処理中に発生したエラーを検出する、エラー検出機構へのアクセスを有する。さらに、オペレーティングシステム２５は、エラー処理機構を有しており、それは、エラーが検出されると、コンピュータプログラム２３の少なくとも１つのプログラムオブジェクト（タスク）の新たな実行を促す。
【００５２】
よって、本発明に基づくシステム戦略の枠内で、最少のパフォーマンスオーバーヘッド、または特にオーバーヘッドなしに、タスク繰返しという概念を組込むことを許容する、方法、オペレーティングシステムおよび計算装置が提案される。
【００５３】
この場合には異なる各前提において、パフォーマンスオーバーヘッドとそれに伴うコストを最小化する、システム戦略が基礎となる。この場合には一般に、特にすでに説明された、タスクの実行中にエラーを検出しうる、エラー検出機構の提供が前提とされる（例えば、冗長な処理を伴うデュアルコア機構）。さらに、ここでは特に、過渡的エラーについて詳細に説明する。恒久的エラーの検出には、拡張、例えば既に説明したようなエラーカウンタが必要となる。
【００５４】
図３で説明するように、タスク繰返しを組込む本発明に基づく戦略では、幾つかの前提に注意が必要である。
【００５５】
タスクの少なくとも２つのクラス（例えばクリティカルなタスクおよび非クリティカルなタスク）が区別される。この場合には既に、エラー検出機構が全クラスのタスクを対象として使用されず、および／または、タスク繰返しが全クラスのタスクに対して実行されない。
【００５６】
図３の例において、タスクの２つのクラスが区別されており、一方のクラスでのみタスク繰返しが実行され、および／または、一方のクラスでのみエラー検出機構が開始される。クリティカルなタスクと非クリティカルなタスクとに区別する際には、クリティカルなタスクのエラーのみが本発明に基づいて検出され、特にエラー検出機構が第１クラスに対してのみ使用される。この場合にクリティカルなタスクとは、システムの全体機能または根本的な機能性のために正確な処理が必要とされており、その機能を得るために遅くとも所定の時点までに行われる必要があるタスクである。非クリティカルなタスクとは、システムの全体機能または根本的な機能に関係しない、または本質的に制限されないタスクである。この場合に特にシステムにおいては、安全上でクリティカルな機能と非クリティカルな機能とに区別される。
【００５７】
非クリティカルな第２クラスのタスクの過渡的エラーは、無視されうる。さらに説明したように、第２クラスのタスクが「スケジューリングされる」必要もない、すなわち、タスク処理中で第２クラスのタスクが呼出されなくても、システム上の観点からは重要な結果をもたらさない、と言える。さらに、クリティカルな第１クラスのタスクの総ランタイム（Laufzeit）は、望ましくは、スケジューリング期間またはタスク処理サイクルの総計算時間のうち、システムで前提とされる所定の時間（例えば５０％）より多くを要求しない。この場合にクリティカルなタスクと非クリティカルなタスクとに二分割する際には、クリティカルなタスクに全体として総計算時間の最大５０％が割当てられるので、全てのクリティカルなタスクがエラーを伴う最悪の場合においても、それらを新たに開始させ、または計算させうる。
【００５８】
この場合、図３に示すシステムアプローチが可能であって、異なるクラスのタスクは、タスクＴ１（クラス１）の「後続オペレーション」であるＳ１（クラス２）がタイムスケジュール内で少なくともＴ１のＷＣＥＴ（worst case execution time）と同程度の多くの時間を有するように、交替する。
【００５９】
この場合に基本的な考え方は、Ｔ１で過渡的エラーが発生すると、Ｓ１の代りにＴ１が再び計算される、ということである。よって、Ｔ１のエラーがＴ２の計算前に除去されることが保証される。よって、エラー認識とエラー処理（エラー許容特性を維持した上で、非常に蓋然性の高い回復を含む）とが、１つのタスクの計算時間内で行われる。
【００６０】
図３では、さらに、クラス１のタスクＴ１、Ｔ２およびＴ３と、クラス２のタスクＳ１、Ｓ２およびＳ３との間で区別される。実行にエラーを伴わない場合として、図３ａにはタスク順序Ｔ１、Ｓ１、Ｔ２、Ｓ２、Ｔ３、Ｓ３が例示される。Ｔ１中に過渡的エラーが発生すると、図３ｂに示すように、Ｓ１でＴ１が再び計算されてＴ２、Ｓ２、Ｔ３、Ｓ３が後続するので、過渡的エラーが訂正される。
【００６１】
本システムアプローチが、図１および２の形態に応じて該当する装置によって実施されるので、開示に関しては、各実施形態を本発明に基づく他の各実施形態と組合せうることは明らかである。
【００６２】
よって、本発明によれば、過渡的エラーに関して最適なＦＯ特性（FO: Fail Operation(al), Fault Operation(al)）が、特に非常に短い回復時間で達成され、それがまたＦＯ特性自体の回復を達成しうる。本アプローチは、時間制御されるシステムで非常に好適に利用可能であり、かつそれに対して最適化可能である。
【図面の簡単な説明】
【００６３】
【図１】本発明に基づく方法を、望ましい実施形態に基づいて示すフローチャートである。
【図２】本発明に基づく計算装置を、望ましい実施形態に基づいて図式的に示す図である。
【図３ａ】タスク繰返しを組込む、本発明に基づくアプローチを示す図である。
【図３ｂ】タスク繰返しを組込む、本発明に基づくアプローチを示す図である。
【符号の説明】
【００６４】
Ｔ１、Ｔ２、Ｔ３    第１クラスのタスク
Ｓ１、Ｓ２、Ｓ３    第２クラスのタスク
【図１】
2008518293.tif 000003
【図２】
2008518293.tif 000004
【図３ａ】
2008518293.tif 000005
【図３ｂ】
2008518293.tif 000006
【国際調査報告】
2008518293.tif 000007
2008518293.tif 000008
2008518293.tif 000009
2008518293.tif 000010
2008518293.tif 000011
2008518293.tif 000012