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