(57)【特許請求の範囲】
【請求項１】
コードブロックと、動的署名解析回路と、エラー軽減システムとを有するプロセッサを備え、
前記コードブロックは、デジタルロジックの一部分の動作及び前記動的署名解析回路に関連付けられ、前記プロセッサは、前記コードブロックを実行するために結合され、前記動的署名解析回路は、前記コードブロックに関連付けられた前記デジタルロジックの一部分の動作を表わす動的署名を作成するために結合され、
前記エラー軽減システムは、前記動的署名解析回路から前記動的署名を受信するために結合され、前記エラー軽減システムは、前記コードブロックのエラーフリー実行を表わす静的署名を有し、前記エラー軽減システムは、前記動的署名を前記静的署名と比較して、署名どうしが一致するかどうかに基づいて前記デジタルロジック内のエラーを検出し、前記エラー軽減システムは、署名どうしが一致しない場合に前記コードブロックの実行を再試行するために結合され、前記エラー軽減システムは、ログ情報を格納する、
自己回復システム。
【請求項２】
前記ログ情報を外部システムにアップロードするために結合されたネットワークインターフェースを更に備える、請求項１に記載の自己回復システム。
【請求項３】
前記コードブロック及び／又は前記デジタルロジックを再構成するための情報を含む更新情報を外部システムから受信するために結合されたネットワークインターフェースを更に備える、請求項１に記載の自己回復システム。
【請求項４】
前記コードブロック及び／又は前記デジタルロジックを再構成するための情報を含む更新情報をストレージデバイスから受信するために結合されたインターフェースを更に備える、請求項１に記載の自己回復システム。
【請求項５】
前記ログ情報は、検出されたエラーと、エラーを検出された前記コードブロックと、前記エラーが検出された時刻と、前記エラーが検出されたときの場所と、前記検出されたエラーのために試みられた再試行の回数と、の記述を含む、請求項１に記載の自己回復システム。
【請求項６】
前記エラー軽減システムは、前記再試行された前記コードブロックの実行についての動
的署名を前記動的署名解析回路から受信するために結合され、前記エラー軽減システムは、署名どうしが一致するかどうかを判定するために、前記再試行された実行についての前記動的署名を前記静的署名と比較し、前記エラー軽減システムは、前記署名どうしが一致するまで、又は所定回数の再試行が実行されるまで、前記コードブロックの実行を再試行し続ける、請求項１に記載の自己回復システム。
【請求項７】
前記エラー軽減システムは、前記コードブロックに関連付けられた前記デジタルロジックのための代替構成群を含み、前記エラー軽減システムは、前記代替構成群から前記代替構成の１つを実装するために結合され、前記エラー軽減システムは、前記コードブロックの実行を再試行し、この再試行実行についての動的署名を前記動的署名解析回路から受信し、署名どうしが一致するかどうかを判定するために前記動的署名を前記静的署名と比較する、請求項６に記載の自己回復システム。
【請求項８】
前記エラー軽減システムは、ルックアップテーブルを含み、前記ルックアップテーブルは、前記代替構成群から前記代替構成を実装するべき順番を順位付けした一覧表を有し、前記エラー軽減システムは、前記代替構成群から前記代替構成のどれを実装するかを判定するために、前記ルックアップテーブルにアクセスする、請求項７に記載の自己回復システム。
【請求項９】
前記代替構成は、エミュレーションソフトウェア、フィールドプログラマブルロジックアレイ、及び／又はソフトコアプロセッサを使用して実装される、請求項７に記載の自己回復システム。
【請求項１０】
前記エラー軽減システムは、前記署名どうしが一致するまで、又は前記コードブロックのための前記代替構成が全て実装されるまで、前記代替構成の実装及び前記コードブロックの再試行実行を続ける、請求項７に記載の自己回復システム。
【請求項１１】
前記ログ情報は、前記検出されたエラーと、前記エラーを検出された前記コードブロックと、前記エラーが検出された時刻と、前記エラーが検出されたときの場所と、前記検出されたエラーのために試みられた再試行の回数と、実装される前記代替構成と、前記代替構成についての結果と、記述を含む、請求項７に記載の自己回復システム。
【請求項１２】
デジタルロジックの一部分の動作に関連付けられたコードブロックを実行することと、
前記デジタルロジックの一部分の動作を表わす動的署名を作成することと、
前記動的署名を、前記コードブロックのエラーフリー実行を表わす静的署名と比較して、署名どうしが一致するかどうかに基づいて前記デジタルロジック内のエラーを検出することと、
エラーの検出を受けて前記コードブロックの実行を再試行することと、
ログ情報を格納することと、
を含む、デジタルロジック内のエラーを検出及び軽減するための方法。
【請求項１３】
前記ログ情報を中央サーバにアップロードすることを更に含む、請求項１２に記載の方法。
【請求項１４】
前記コードブロック及び／又は前記デジタルロジックを再構成するための情報を含む更新情報を中央サーバから受信することを更に含む、請求項１２に記載の方法。
【請求項１５】
前記コードブロック及び／又は前記デジタルロジックを再構成するための情報を含む更新情報をストレージデバイスから受信することを更に含む、請求項１２に記載の方法。
【請求項１６】
前記ログ情報は、前記検出されたエラーと、前記エラーを検出された前記コードブロックと、前記エラーが検出された時刻と、前記エラーが検出されたときの場所と、前記検出されたエラーのために試みられた再試行の回数と、の記述を含む、請求項１２に記載の方法。
【請求項１７】
デジタルロジックの一部分の動作に関連付けられたコードブロックを実行することと、
前記デジタルロジックの一部分の動作を表わす動的署名を作成することと、
前記動的署名を、前記コードブロックのエラーフリー実行を表わす静的署名と比較し、署名どうしが一致するかどうかに基づいて前記デジタルロジック内のエラーを検出することと、
前記コードブロックの実行を再試行することと、
前記再試行された前記コードブロックの実行についての動的署名を受信することと、
署名どうしが一致するかどうかを判定するために、前記再試行された実行についての前記動的署名を前記静的署名と比較することと、
前記署名どうしが一致するまで、又は所定回数の再試行が実行されるまで、前記コードブロックの実行を再試行し続けることと、
ログ情報を格納することと、
を含む、デジタルロジック内のエラーを検出及び軽減するための方法。
【請求項１８】
代替構成群から代替構成を実装することと、
前記実装された代替構成が前記コードブロックのエラーフリー動作をもたらすかどうかを判定するために、前記コードブロックの実行を再試行することと、
この再試行実行についての動的署名を動的署名解析回路から受信することと、
署名どうしが一致するかを判定するために、この動的署名を前記静的署名と比較することと、
を更に含む、請求項１７に記載の方法。
【請求項１９】
前記代替構成群から前記代替構成のどれを実装するかを判定するために、前記代替構成群から前記代替構成が実装される順番を順位付けした一覧表を有するルックアップテーブルにアクセスすることを更に含む、請求項１８に記載の方法。
【請求項２０】
前記代替構成は、エミュレーションソフトウェア、フィールドプログラマブルロジックアレイ、及び／又はソフトコアプロセッサを使用して実装される、請求項１８に記載の方法。
【請求項２１】
前記ログ情報は、前記検出されたエラーと、前記エラーを検出された前記コードブロックと、前記エラーが検出された時刻と、前記エラーが検出されたときの場所と、前記検出されたエラーのために試みられる再試行の回数と、実装された前記代替構成と、前記代替構成についての結果と、の記述を含む、請求項１８に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
発明は、コンピュータシステムにおけるエラー検出に関し、特に、デジタルロジックエラーを検出する、軽減する、及びデジタルロジックエラーに関する情報を格納するための自己回復機能性を有する、コンピュータシステムのためのアーキテクチャに関する。
【０００２】
現代の自動車は、多くの場合、多くの電子制御ユニット（「ＥＣＵ」）を用いるように設計されている。自動車によっては、７０を超えるＥＣＵを含むものもある。ＥＣＵは、自動車内の１つ又は２つ以上の電気システム又は電気サブシステムを制御する、プロセッサベースのシステムである。例えば、ＥＣＵは、大半の自動車の内燃機関における燃焼噴射機能及び点火時期機能を制御している。これらの機能は、自動車の動作にとって不可欠であり、これらの機能の障害は、自動車を使用する人間にとって致命的になりえるような影響を及ぼす可能性がある。
【０００３】
最近は、より小さい形状寸法のトランジスタをベースにしたプロセッサを使用するようにＥＣＵを設計する傾向がある。より小さい形状寸法のトランジスタをベースにしたプロセッサは、ＥＣＵの設計に多くの利益をもたらす。例えば、これらのプロセッサは、これまでのプロセッサよりも安価である傾向があり、したがって、より低コストでのＥＣＵの作成を可能にする。更に、これらのプロセッサは、より高価なその他のプロセッサと比べて、より高速で動作するとともに、より低い電力損失要件を有する。
【０００４】
あいにく、より小さい形状寸法のトランジスタをベースにしたプロセッサには、負の結果が伴う。１つの問題は、これらのプロセッサが一時的エラーを発生しやすいことである。一時的エラーは、プロセッサのデジタルロジックにおける短期的なエラーである。一時的エラーは、多くの場合、太陽から放射される荷電アルファ粒子によって引き起こされる。これらの粒子は、プロセッサの回路系に衝突し、プロセッサの基板を変化させる。この基板の変化の結果、プロセッサは、短期的なデジタルロジックエラーを被る。
【０００５】
より小さい形状寸法のトランジスタをベースにしたプロセッサに伴う第２の問題は、これらのプロセッサが持続的エラーを発生しやすいことである。持続的エラーは、プロセッサのデジタルロジックにおける長期的なエラーである。持続的エラーは、多くの場合、金属移動及び／又はプロセッサのデジタル回路系の過熱によって引き起こされる。
【０００６】
より小さい形状寸法のトランジスタをベースにしたプロセッサに伴う第３の問題は、トランジスタの相互コンダクタンス及び漏出などの個々のコンポーネントパラメータが温度及び時間とともに大幅に変動し、その結果、回路の耐性が下がり、動作条件が一時的及び永続的なロジックエラーをより被りやすくなることである。
【０００７】
したがって、一時的及び永続的なロジックエラーを正すための既存の方法は、ＥＣＵの設計に実装するには不完全で且つ望ましくないことがわかった。これらの方法は、全てのプロセッサ回路系の三倍化を必要とする。その結果、これらのプロセッサは、大幅に複雑化されるとともに、高価になり、したがって、ＥＣＵに実装するには非実用的である。
【発明の概要】
【０００８】
本発明は、システム内に発生するデジタルロジックエラーを検出及び軽減することができる自己回復システムによって、先行技術の欠点を克服する。システムは、また、検出されたエラーと、システムによって遂行される軽減処理と、これらの軽減処理の結果とを記述した情報のログ（「ログ情報」）を格納する。
【０００９】
自己回復システムは、システム内に発生するデジタルロジックエラーに関する詳細な情報を含むログを提供するゆえに、とりわけ有利である。この情報は、ネットワークを使用してシステムのリアルタイム更新を提供するエンジニアによってアクセス可能である。例えば、ログ情報は、無線ネットワークを使用して、システムから外部システムに通信される。１つの実施形態では、外部システムは、自己回復システムのコンポーネントである。サーバは、この情報を処理する。サーバ及び／又はエンジニアは、システムのための更新情報を作成する。更新情報は、異なるデジタルロジックエラーの今後の発生を阻止するためにシステムを再構成するための情報を含む。更新情報は、ネットワーク又はその他の通信手段を使用して、サーバからシステムに返すことができる。システムは、すると、更新情報を実装し、そうして、今後のプロセッサエラーの発生を阻止する。
【００１０】
１つの実施形態では、自己回復システムは、自己回復プロセッサを含む。自己回復プロセッサは、メモリに格納されたコードブロックと、動的署名解析回路と、エラー軽減システムとを含む。コードブロックは、プロセッサのデジタルロジックの一部分の動作に関連付けられる。１つの実施形態では、コードブロックは、プロセッサのオンチップメモリに格納される。動的署名解析回路は、コードブロックの実行を監視するために通信可能に結合される。プロセッサは、コードブロックを実行する。動的署名解析回路は、コードブロックに関連付けられたデジタルロジックの一部分の動作を表わす動的署名を作成する。
【００１１】
動的署名解析回路データは、エラー軽減システムに通信可能に結合される。エラー軽減システムは、動的署名解析回路から動的署名を受信する。エラー軽減システムは、コードブロックのエラーフリー実行を表わす静的署名を有する。エラー軽減システムは、署名どうしが一致するかどうかを判定するために、動的署名を静的署名と比較する。もし署名が一致しない場合は、コードブロックに関連付けられたデジタルロジックは、エラーを有する。エラー軽減システムは、コードブロックに通信可能に結合される。もし署名どうしが一致しない場合は、エラー軽減システムは、コードブロックの実行を再試行するために、コマンドを実行する。エラー軽減システムは、検出されたエラーと、検出されたエラーを克服するために遂行される軽減処理と、これらの軽減処理の結果とを記述したログ情報を作成及び格納する。
【００１２】
本発明は、システム内に発生するデジタルロジックエラーを検出及び軽減するための数々の方法も含む。これらの方法は、検出されたエラーと、これらのエラーを軽減するために遂行される処理と、これらの処理を遂行した結果とを記述した情報のログを作成及び格納することを含む。
【００１３】
ここで説明される特徴及び利点は、包括的ではなく、当業者にならば、図面及び説明を考慮することによって、多くの更なる特徴及び利点が明らかになる。更に、本明細書において使用される言語は、発明の内容の範囲を制限するのではなく、主として読みやすさ及び説明を目的として選択されていることを、留意されるべきである。
【００１４】
発明は、類似の要素に言及するために同様の参照符号を使用された添付の図面において、限定目的ではなく例示目的で示されている。
【図面の簡単な説明】
【００１５】
【図１Ａ】本発明にしたがって構成された、自己回復プロセッサを含む自己回復システムの各種の実施形態のブロック図である。
【図１Ｂ】本発明にしたがって構成された、自己回復プロセッサを含む自己回復システムの各種の実施形態のブロック図である。
【図１Ｃ】本発明にしたがって構成された、自己回復プロセッサを含む自己回復システムの各種の実施形態のブロック図である。
【図２】本発明にしたがって構成された自己回復プロセッサの一実施形態のブロック図である。
【図３】本発明にしたがって構成されたコードブロックのブロック図である。
【図４Ａ】本発明にしたがって構成されたエラー軽減システムの各種の実施形態のブロック図である。
【図４Ｂ】本発明にしたがって構成されたエラー軽減システムの各種の実施形態のブロック図である。
【図４Ｃ】本発明にしたがって構成されたエラー軽減システムの各種の実施形態のブロック図である。
【図４Ｄ】本発明にしたがって構成されたエラー軽減システムの各種の実施形態のブロック図である。
【図４Ｅ】本発明にしたがって構成されたエラー軽減システムの各種の実施形態のブロック図である。
【図４Ｆ】本発明にしたがって構成されたエラー軽減システムの各種の実施形態のブロック図である。
【図４Ｇ】本発明にしたがって構成されたエラー軽減システムの各種の実施形態のブロック図である。
【図４Ｈ】本発明にしたがって構成されたエラー軽減システムの各種の実施形態のブロック図である。
【図５】本発明にしたがって、コードブロックがエラーを有するかどうかを判定するための方法の流れ図である。
【図６】本発明にしたがって、デジタルロジック内に検出された一時的エラーを軽減するための方法の流れ図である。
【図７Ａ】本発明にしたがって、デジタルロジック内に検出された持続的エラーを軽減するための方法の流れ図である。
【図７Ｂ】本発明にしたがって、デジタルロジック内に検出された持続的エラーを軽減するための方法の流れ図である。
【図８Ａ】本発明にしたがって、デジタルロジックのための代替構成を最適化するための方法の流れ図である。
【図８Ｂ】本発明にしたがって、デジタルロジックのための代替構成を最適化するための方法の流れ図である。
【図８Ｃ】本発明にしたがって、デジタルロジックのための代替構成を最適化するための方法の流れ図である。
【発明を実施するための形態】
【００１６】
システム１００内に発生するデジタルロジックエラーを検出及び軽減することができる自己回復システム１００について説明される。システム１００は、また、検出されたエラーと、システムによって遂行される軽減処理と、これらの軽減処理の結果とを記述した情報のログ（「ログ情報」）を作成及び格納する。
【００１７】
以下の説明では、解説を目的として、発明の完全な理解を可能にするために多くの詳細が特定されている。しかしながら、当業者にならば明らかなように、発明は、これらの詳細を伴わずとも実践することができる。また、構造及びデバイスは、発明を不明瞭にしないために、ブロック図の形式で示されている。例えば、本発明は、以下の１つの実施形態では、制御ユニット１０５を参照にして説明されている。しかしながら、本発明は、本発明の自己回復プロセッサ１１０を使用されたあらゆるタイプのシステムに適用する。
【００１８】
本明細書において言及される「１つの実施形態」又は「一実施形態」は、その実施形態に関連して説明される特定の特徴、構造、又は特性が発明の少なくとも１つの実施形態に
含まれることを意味している。本明細書の随所に見られる「１つの実施形態では」という言い回しは、必ずしも全てが同じ実施形態に言及しているとは限らない。
【００１９】
以下に続く詳細の説明の一部は、コンピュータメモリ内の、データビットに対する動作のアルゴリズム及び記号的表現として提示される。これらのアルゴリズム的な記述及び表現は、データ処理分野の当業者が自身の作業内容を最も効果的にその他の当業者に伝えるために使用される手段である。アルゴリズムは、ここでは、そして一般的には、所望の結果をもたらす自己矛盾のない一連のステップであると考えられる。これらのステップは、物理量の物理的操作を必要とするステップである。必ずではないが、これらの量は、通常は、格納、転送、結合、比較、及びその他の操作が可能な電気信号又は磁気信号の形態をとる。これらの信号は、ときには、主に共通使用を理由として、ビット、値、要素、記号、文字、用語、数などとして言及されると好都合であることが証明されている。
【００２０】
しかしながら、これらの及び類似の用語は、全て、適切な物理量に関連付けられるものであること、及びこれらの量に適用される好都合なラベルに過ぎないことを、心に留めておくべきである。以下の議論から明らかなように、その他の形で具体的に明記されない限り、「処理する」又は「計算する」又は「算出する」又は「判定する」又は「表示する」などの用語を用いる議論は、説明全体を通して、コンピュータシステムのレジスタ及びメモリにおいて物理（電子）量として表わされるデータを操作して、コンピュータシステムのメモリ若しくはレジスタ、又はその他の同様の情報ストレージデバイス、情報伝送デバイス、若しくは情報ディスプレイデバイスにおいて物理量として同様に表わされるその他のデータに変換する、コンピュータシステム又は同様の電子計算デバイスの行為及び処理に言及していることがわかる。
【００２１】
本発明は、ここに開示される動作を実施するための装置にも関する。この装置は、所要の目的のために特別に構築されてもよいし、又はコンピュータに格納されたコンピュータプログラムによって選択的に作動若しくは再構成される汎用コンピュータを含むものであってもよい。このようなコンピュータプログラムは、フロッピディスク、光ディスク、ＣＤ−ＲＯＭ、及び光磁気ディスクを含む任意のタイプのディスク、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気カード若しくは光カード、又は電子命令を格納するのに適した任意のタイプの媒体などを非限定に含みそれぞれがコンピュータシステムバスに結合されたコンピュータ可読ストレージ媒体に、格納することができる。例えば、自己回復プロセッサ１１０は、コンピュータプログラム及び／又は様々なログ情報を格納された１つ又は２つ以上のストレージデバイス及び／又はメモリを含むコンピュータシステムに実装することができる。
【００２２】
最後に、ここで提示されるアルゴリズム及び表示は、元来どれか特定のコンピュータ又はその他の装置に関係しているものではない。ここでの教示にしたがったプログラムは、各種の汎用システムと併用することができるであろう。或いは、所要の方法ステップを実施するためには、更に専用の装置を構築すると好都合であることが証明されるであろう。これらの様々なシステムに必要とされる構造は、以下の説明から見えてくる。また、本発明は、いかなる特定のプログラミング言語にも言及することなく説明される。ここで説明される発明の教示内容の遂行には、様々なプログラミング言語が使用されてよいことがわかる。
【００２３】
システム概要
図１Ａは、自己回復システムの第１の実施形態１００Ａを示している。この実施形態のシステム１００は、自己回復プロセッサ１１０を有する制御ユニット１０５と、センサ１１５と、アクチュエータ１１７とを含む。信号線１２０は、入力信号を送信するために、センサ１１５を制御ユニット１０５に結合する。信号線１２５は、出力信号を送信するた
めに、制御ユニット１０５をアクチュエータ１１７に結合する。一部の実施形態では、センサ１１５とアクチュエータ１１７との間において、信号線１２２上をフィードバック信号が送信される。図１では、説明を簡単に且つ明瞭にするために、センサ１１５、アクチュエータ１１７、信号線１２０、信号線１２５、及び信号線１２２が１つずつだけ示されているが、当業者ならば、制御ユニット１０５に任意の数のセンサ１１５及び／又はアクチュエータ１１７が結合されてよいことがわかる。
【００２４】
制御ユニット１０５は、信号線１２０を介してセンサ１１５に通信可能に結合される。制御ユニット１０５は、信号線１２５を介してアクチュエータ１１７にも通信可能に結合される。制御ユニット１０５は、プロセッサ１１０によって下される判定に基づいて１つ又は２つ以上のアクチュエータ１１７の動作を制御する電子デバイスである。例えば、制御ユニット１０５は、自動車に実装されるエンジン制御ユニット（「ＥＣＵ」）である。制御ユニット１５０は、センサ１１５から入力信号を受信する。入力信号は、アクチュエータ１１７にとって重要な条件に関する情報を含む。制御ユニット１５０は、アクチュエータ１１７に通信される出力信号を生成する。出力信号は、アクチュエータ１１７の動作を制御する。
【００２５】
アクチュエータ１１７は、制御ユニット１０５及びセンサ１１５に通信可能に結合される。アクチュエータ１１７は、自己回復システム１００Ａ内において力を移動させる又は制御するためのデバイスである。アクチュエータ１１７は、機械的コンポーネント、電気的コンポーネント、又は機械的コンポーネントと電気的コンポーネントとの組み合わせを含む。１つの実施形態では、アクチュエータ１１７は、制御ユニット１０５によって制御される、自動車内の燃料噴射器、スパークプラグ、スロットル調整器、及び／又は１つ若しくは２つ以上の電子制御式バルブである。
【００２６】
センサ１１５は、信号線１２０を介して制御ユニット１０５に通信可能に結合される。センサ１１５は、１つ又は２つ以上のアクチュエータ１１７を監視して該情報を制御ユニット１０５に中継するように適応された電子回路である。情報は、制御ユニット１０５によってサポートされる形式にコード化される。例えば、情報は、２進コードにコード化される。センサ１１５は、アクチュエータ１１７に関する情報を集め、該情報を信号線１２０を介して制御ユニット１０５に中継する。１つの実施形態では、センサ１１５は、フィードバック線１２２を介してアクチュエータ１１７に通信可能に結合される。別の実施形態では、センサ１１５は、アクチュエータ１１７に関する情報をリアルタイムで制御ユニット１０５に中継するように構成される。
【００２７】
プロセッサ１１０は、センサ１１５及びアクチュエータ１１７に通信可能に結合される。プロセッサ１１０は、制御ユニット１０５のための処理を実施する及びアクチュエータ１１７の動作を制御する集積回路半導体チップである。プロセッサ１１０は、センサ１１５からの入力信号を受信する。１つの実施形態では、プロセッサ１１０は、入力信号を処理するためのファームウェア及び／又はデジタルロジックを含む。プロセッサ１１０は、ファームウェア及び／又はデジタルロジックを使用して、入力信号１２０及び／又はその中に含まれる情報を処理する。プロセッサ１１０は、アクチュエータ１１７の動作を制御するように適応された出力信号を生成する。プロセッサ１１０の１つの実施形態の構造及び動作は、図２を参照にして、以下で更に詳しく説明される。
【００２８】
一例では、制御ユニット１０５は、ＥＣＵであり、アクチュエータ１１７は、自動車（不図示）内の燃料噴射器である。センサ１１５は、エンジン排気内の酸素の量を監視するためのセンサである。自動車が安全に動作するためには、排気内の酸素の量が高すぎる（ゆえに、自動車に乗っている人間に対して安全性のリスクをもたらす可能性がある濃い燃料混合がエンジン内にあることが示されている）場合に、燃料噴射器によってエンジン（
不図示）に引き渡される燃料の量を減少させることが望ましい。もしエンジン排気内に危険な量の酸素がある場合は、センサ１１５は、この情報をＥＣＵに中継する。例えば制御ユニット１０５などのＥＣＵは、この情報をプロセッサ１１０によって処理する。プロセッサ１１０は、酸素と燃料との安全な混合をエンジン内に実現するために必要とされる量だけエンジン内の燃料の量を減少させるように燃料噴射器に指示する出力信号を生成する。したがって、この例では、プロセッサ１１０は、エンジン内の酸素と燃料との混合を調整するという、命を救う潜在力を持つ機能を提供する。しかしながら、もしプロセッサ１１０がセンサ１１５からの入力を処理しているときにエラーを被ると、結果として、自動車に乗っている人間にとって致命的となる可能性がある。
【００２９】
エラーは、プロセッサ１１０のデジタルロジック内におけるハードウェアエラーである。１つの実施形態では、プロセッサ１１０は、一時的エラー及び／又は持続的エラーを被る可能性がある。一時的エラーは、短期にわたって発生するデジタルロジックエラーである。一時的エラーは、太陽（またはその他の発生源）から放射されてランダムに到達する荷電粒子によって引き起こされ、プロセッサ１１０のデジタルロジックの動作に一時的に影響を及ぼす。永続的エラーは、一時的エラーでないデジタルロジックエラーである。
【００３０】
図１Ａは、センサ１１５と、アクチュエータ１１７と、それらの間のフィードバック信号との間の１対１の関係を描いている。しかしながら、当業者にならば理解されるように、実際は、センサ１１５、アクチュエータ１１７、及び／又はフィードバック信号のあらゆる組み合わせが可能である。例えば、１つの信号センサ１１５を、２つ又は３つ以上のアクチュエータ１１７に関する情報を集めるように適応させることができる。或いは、１つのアクチュエータ１１７を、２つ又は３つ以上のセンサ１１５によって監視することができる。更には、任意の数のセンサ１１５と任意の数のアクチュエータ１１７との間において、任意の数のフィードバック信号１２２が可能である。
【００３１】
次に、図１Ｂ及び図１Ｃを参照すると、自己回復システムの更に別の各実施形態１００Ｂ、１００Ｃが描かれている。より具体的には、図１Ｂ及び図１Ｃは、異なるデバイスとの通信的結合を有する制御ユニット１０５を示している。図１Ｂ及び図１Ｃに示された実施形態では、自己回復システム１００Ｂ、１００Ｃのコンポーネントの多くは、図１Ａに示された実施形態の対応コンポーネントと同じ又は類似の機能を有している。したがって、同じ又は類似の機能性を持つ同様のコンポーネントに言及するために、同様の参照番号が使用されている。例えば、図１Ａに示された実施形態のように、図１Ｂ及び図１Ｃの実施形態もまた、制御ユニット１０５、プロセッサ１１０、センサ１１５、アクチュエータ１１７、信号線１２０、信号線１２５、及び信号線１２２（随意）を含む。
【００３２】
図１Ｂは、自己回復システム１００の第２の実施形態を示している。自己回復システム１００のこの実施形態は、制御ユニット１０５、自己回復プロセッサ１１０、センサ１１５、アクチュエータ１１７、信号線１２０、信号線１２５、信号線１２２（随意）、インターフェース１２８、データ信号１２４、通信的結合１２７、ネットワーク１３０、及び外部システム１３７を含む。
【００３３】
インターフェース１３８は、通信的結合１２７を介したネットワーク１３０との通信に適応されている。１つの実施形態では、通信的結合１２７は、制御ユニット１０５をネットワーク１３０に結合する無線通信リンクである。例えば、通信的結合１２７は、インターフェース１２８をネットワーク１３０に結合する無線通信リンクであってよい。ネットワーク１３０は、自身につながれたエンティティ間における通信を可能にする。１つの実施形態では、ネットワーク１３０は、インターネットであり、標準の通信技術及び／又は通信プロトコルを使用する。したがって、ネットワーク１３０は、Ｅｔｈｅｒｎｅｔ（イーサネット，登録商標）、８０２．１１、ＷｉＭＡＸ（ワイマックス）、３Ｇ、ＤＳＬ（デジタル加入者回線）、ＡＴＭ（非同期転送モード）、ＩｎｆｉｎｉＢａｎｄ（インフィニバンド）、ＰＣＩ  Ｅｘｐｒｅｓｓアドバンストスイッチングなどの技術を使用したリンクを含むことができる。同様に、ネットワーク１３０に使用されるネットワークプロトコルは、ＭＰＬＳ（マルチプロトコルラベルスイッチング）、ＴＣＰ／ＩＰ（伝送制御プロトコル／インターネットプロトコル）、ＵＤＰ（ユーザデータグラムプロトコル）、ＨＴＴＰ（ハイパーテキストトランスポートプロトコル）、ＳＭＴＰ（簡易メール転送プロトコル）、ＦＴＰ（ファイル転送プロトコル）などを含むことができる。ネットワーク１３０を通じて交換されるデータは、ＨＴＭＬ（ハイパーテキストマーク付け言語）、ＸＭＬ（拡張可能なマーク付け言語）などを含む技術及び／又は形式を使用して表わすことができる。また、全部又は一部のリンクは、ＳＳＬ（セキュアソケットレイヤ）、ＴＬＳ（トランスポートレイヤセキュリティ）、ＶＰＮ（仮想プライベートネットワーク）、ＩＰｓｅｃ（インターネットプロトコルセキュリティ）などの従来の暗号化技術を使用して暗号化することができる。別の実施形態では、エンティティは、上述されたものに代わって又は追加で、カスタムデータ通信技術及び／又は専用データ通信技術を使用する。
【００３４】
信号線１２４は、プロセッサ１１０をインターフェース１２８に結合する。１つの実施形態では、信号線１２４は、プロセッサ１１０とインターフェース１２８との間における双方向のデータの流れを可能にする。例えば、信号線１２４及びインターフェース１２８は、プロセッサ１１０からネットワーク１３０への情報のアップロードを可能にするために連携しあう。信号線１２４及びインターフェース１２８は、また、ネットワーク１３０からプロセッサ１１０への情報のダウンロードを可能にするために連携しあう。
【００３５】
１つの実施形態では、制御ユニット１０５は、ネットワーク１３０を介して外部システム１３７に通信可能に結合されたコンピュータシステムである。外部システム１３７は、制御ユニット１０５からログ情報を受信する。ログ情報は、プロセッサ１１０によって検出されたエラーと、プロセッサ１１０によって遂行される様々な軽減処理と、及びこれらの軽減処理の結果とを記述する。外部システム１３７は、様々な制御ユニット１０５からのログ情報を格納するデータベースを含む。外部システム１３７は、更新情報を生成するために、ログ情報を処理する。更新情報は、制御ユニット１０５及び／又はプロセッサ１１０における各種エラーの発生及び／又は再発生を阻止するために制御ユニット１０５及び／又はプロセッサ１１０を再構成するように適応された情報（例えばコンピュータコード）である。１つの実施形態では、更新情報（例えばコンピュータコード）は、制御ユニット１０５及び／又はプロセッサ１１０における各種エラーの発生及び／又は再発生を阻止するために制御ユニット１０５及び／又はプロセッサ１１０のアーキテクチャを再構成するように適応された情報である。外部システム１３７は、ネットワーク１３０を介して制御ユニット１０５に更新情報を通信する。
【００３６】
図１Ｂには、１つの制御ユニット１０５及び１つの外部システム１３７のみが示されているが、実際は、２つ以上の制御ユニット１０５及び／又は２つ以上の外部システム１３７があることが可能である。したがって、特定の制御ユニット１０５は、多くの異なる外部システム１３７に通信可能に結合することができ、特定の外部システム１３７は、多くの異なる制御ユニット１０５に通信可能に結合することができる。
【００３７】
１つの実施形態では、外部システム１３７は、制御ユニット１０５との通信に適応された１つ又は２つ以上のサーバを含む。
【００３８】
図１Ｃには、ストレージデバイス１４０Ａ及び／又は光学デバイス１４０Ｂからの情報を受信するようにインターフェース１２８を適応した自己回復システムの別の実施形態１００Ｃが示されている。ストレージデバイス１４０Ａは、ハードドライブ、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、ＤＶＤ、及び／又は固体メモリデバイスな
どの、不揮発性のストレージ媒体である。光学デバイス１４０Ｂは、１本若しくは２本以上の光線（例えば赤外線通信）を介して情報を通信するように及び／又は１本若しくは２本以上の光線を介して受信された情報を不揮発性メモリに格納するように適応された任意のデバイスである。１つの実施形態では、プロセッサ１１０は、ログ情報をストレージデバイス１４０Ａ及び／又は光学デバイス１４０Ｂにアップロードする。別の実施形態では、ストレージデバイス１４０Ａ及び／又は光学デバイス１４０Ｂは、更新情報を格納し、プロセッサ１１０は、ストレージデバイス１４０Ａ及び／又は光学デバイス１４０Ｂから更新情報を受信する。
【００３９】
自己回復プロセッサ１１０
次に、図２を参照にして、自己回復プロセッサ１１０の一実施形態について説明する。１つの実施形態では、自己回復プロセッサ１１０は、様々なエラー軽減コンポーネントを含むように変更された１つ又は２つ以上のマイクロプロセッサである。１つの実施形態では、これらのエラー軽減コンポーネントは、ハードウェアとソフトウェアとの組み合わせとして実装され、それぞれ、プロセッサ１１０に含まれるオンチップストレージ内に格納される。次に、エラー軽減コンポーネントについて説明する。
【００４０】
プロセッサ１１０は、コンパイル時に、特殊なＣ言語コンパイラを使用して様々な機能ユニットに分割される。機能ユニットは、プロセッサ１１０のデジタルロジックの一部分を含む。１つの実施形態では、機能ユニットは、１つ若しくは２つ以上の算術論理演算ユニット、浮動小数点演算ユニット、及び／又は読み出しオペランド復号ユニットなど、プロセッサ１１０のために所定の機能性を提供するプロセッサ１１０のデジタルロジックの一部分である。プロセッサ１１０は、何十の又はひいては何百もの機能ユニットに分割することができる。機能ユニットの選択及び数は、プロセッサ１１０の所定の実装形態に基づいて変動する設計上の選択である。
【００４１】
機能ユニットは、少なくとも１つのコードブロック２２４と、動的署名解析回路２２６とに関連付けられる。コードブロック２２４は、プロセッサ１１０のデジタルロジックの特定の一部分の動作に関連付けられる。１つの実施形態では、コードブロック２２４は、プロセッサ１１０のデジタルロジックの１つ又は２つ以上の部分の動作に関連付けられる。１つの実施形態では、コードブロック２２４は、コンピュータ実行可能コンピュータコードの基本ブロックを含む。コンピュータコードの基本ブロックは、１つ又は２つ以上の一連の手続き命令と、分岐命令とを含む。実行されるときに、これらの命令は、コードブロック２２４の機能性を提供するために、自身に関連付けられたデジタルロジック上において動作する。
【００４２】
コードブロック２２４は、ストレージユニット２２０に格納される。１つの実施形態では、ストレージユニット２２０は、プロセッサ１１０に含まれる１つ又は２つ以上のＲＡＭ又はキャッシュなどの、プロセッサ１１０のオンチップ不揮発性ストレージの一部分である。１つの実施形態では、コードブロック２２４は、プロセッサ１１０のオンチップストレージの１つ又は２つ以上の部分に跨って格納される。別の実施形態では、コードブロック２２４は、プロセッサ１１０の外部の不揮発性メモリ（不図示）に格納される。
【００４３】
プロセッサ１１０は、コードブロック２２４を実行するために結合される。コードブロック２２４は、プロセッサ１１０によって実行されるときに動的署名解析回路２２６によって監視されるように、通信可能に結合される。コードブロック２２４は、エラー軽減システム２１５によって再実行されるように、通信可能に結合される。
【００４４】
図２には、１つのコードブロック２２４のみが示されているが、実際は、各機能ブロックは、何千の又は何百万のコードブロック２２４に関連付けることができる。ここで説明
される構造を明瞭にするために、コードブロック２２４は、後に図３を参照にして更に詳しく説明される。
【００４５】
動的署名解析回路２２６は、コードブロック２２４の実行を監視するために、通信可能に結合される。動的署名解析回路２２６は、また、信号線２１７を介してエラー軽減システム２１５に入力を送信するためにも、通信可能に結合される。動的署名解析回路２２６は、コードブロック２２４についての動的署名を作成する電子回路を含む。動的署名は、プロセッサ１１０のデジタルロジックの特定の一部分のランタイム動作を表わす署名解析波形である。例えば、各動的署名は、特定のコードブロック２２４に関連付けられたデジタルロジックの一部分の動作を表わす。動的署名解析回路２２６は、コードブロック２２４の実行についての動的署名を作成する。動的署名は、リアルタイムに又はコードブロック２２４の実行から短期間の後に作成される。動的署名解析回路２２６は、次いで、信号線２１７を介してエラー軽減システム２１５に動的署名を伝送する。
【００４６】
図２には、１つの動的署名解析回路２２６のみが示されているが、実際は、プロセッサは、何十の又はひいては何百もの動的署名解析回路２２６を有することができる。１つの実施形態では、各機能ブロックは、その機能ユニットに関連付けられた異なるコードブロック２２４の実行を監視する動的署名解析回路２２６を含む。
【００４７】
正常動作時において、プロセッサ１１０は、上述された機能性を制御ユニット１０５のために提供する様々なアルゴリズムを実行する。プロセッサ１１０と、これらのアルゴリズムとの組み合わせは、正常動作時におけるプロセッサ１１０の計算能力の百パーセントをアルゴリズムが必要としないように設計時に選択される。プロセッサ１１０は、エラー軽減システム２１５及び動的署名解析回路２２６をバックグラウンド処理として動作させるために、計算能力の余剰部分を使用する。これらのバックグラウンド処理は、プロセッサ１１０が様々なコードブロック２２４を実行することを含む。エラー軽減システム２１５及び動的署名解析回路２２６は、プロセッサ１１０のデジタルロジック上において動作するコードブロック２２４の実行を監視するために連携しあう。もしコードブロック２２４の実行によって、デジタルロジック内におけるエラーの存在が示された場合は、エラー軽減システム２１５は、ハードウェアコントローラ（図４Ａ〜４Ｈに示されている）を使用してコードブロック２２４の実行を再試行することによって、エラーを軽減しようと試みる。動的署名解析回路２２６及びコードブロック２２４は、以下で更に詳しく説明される。エラー軽減システム２１５及びハードウェアコントローラは、図４Ａ〜４Ｈを参照にして更に詳しく説明される。
【００４８】
当業者ならば、プロセッサ１１０が、図２には示されていない更なるコンポーネントを含むことがわかる。例えば、プロセッサ１１０は、ファームウェア、デジタルロジック、１つ若しくは２つ以上の算術論理演算ユニット、浮動小数点演算ユニット、読み出しオペランド復号ユニット、命令フェッチ、ネットリスト、並びにＬ２／Ｌ３キャッシュ、命令キャッシュ、データキャッシュユニット、データキャッシュユニット、及び／又はレジスタファイルを含む様々なオンチップ不揮発性ストレージユニット（ここでは、まとめて「オンチップストレージ」若しくは「オンチップ不揮発性ストレージ」と呼ばれる）を含む。
【００４９】
エラー軽減システム２１５は、信号線２１７を介して動的署名解析回路２２６に通信可能に結合される。エラー軽減システム２１５は、また、信号線２１９を介してコードブロック２２４にも通信可能に結合される。１つの実施形態では、エラー軽減システム２１５は、プロセッサ１１０のデジタルロジック内に検出されるエラーを検出及び軽減するための１つ又は２つ以上のエラー軽減処理を実行するように構成されたソフトウェア及びハードウェアである。１つの実施形態では、ソフトウェアである、エラー軽減システム２１５
のコンポーネントは、プロセッサ１１０のオンチップストレージに格納される。エラー軽減システム２１５は、また、ログ情報を作成及び格納する。エラー軽減システム２１５は、信号線２１７を介して動的署名解析回路２２６から動的署名を受信する。エラー軽減システム２１５は、コードブロック２２４に関連付けられたプロセッサ１１０のデジタルロジックの特定の一部分にエラーが存在するかどうかを判定するために、動的署名を解析する。エラーの検出を受けて、エラー軽減システム２１５は、エラーを検出されたコードブロック２２４の実行を、信号線２１９を介して再試行する。コードブロック２２４の再試行は、コードブロック２２４のエラーフリー実行（エラー無し実行）を実現するための試みである。もし最初の再試行の試みがエラーフリー実行の実現に失敗した場合は、エラー軽減システム２１５は、不完全なそのコードブロック２２４の実行を所定回数（１回又は１０回など）にわたって再試行し続ける。もしいずれかの再試行の試みによってエラーフリー実行が実現された場合は、プロセッサ１１０は、次のコードブロックに進む。もしコードブロック２２４のエラーフリー実行が所定回数の再試行の試みのうちに実現されなかった場合は、コードブロック２２４が持続的エラーを有するものと判定される。
【００５０】
１つの実施形態では、エラー軽減システム２１５は、格納された静的署名群を含む。静的署名は、コンパイル時に作成される。各静的署名は、特定のコードブロック２２４に関連付けられる。静的署名は、その特定のコードブロック２２４に関連付けられたデジタルロジックの既知のエラーフリー実行を表わす解析波形である。エラー軽減システム２１５は、動的署名解析回路２２６から受信された動的署名を、そのコードブロック２２４についての静的署名と比較する。もし動的署名が静的署名と異なる場合は、エラー軽減システム２１５は、そのコードブロック２２４に関連付けられたデジタルロジックがエラーを有するものと判定する。エラー軽減システム２１５は、すると、検出されたエラーを正すために、再試行処理を起動する。再試行処理の幾つかの実施形態が、図４Ａ〜４Ｈを参照にして、以下で更に詳しく説明される。
【００５１】
エラー軽減システム２１５は、図２では、１本の信号線２１９を介して１つのコードブロック２２４のみに結合されるものとして示されているが、実際は、エラー軽減システム２１５は、任意の本数の信号線２１９を介して任意の数のコードブロック２２４に結合することができる。同様に、エラー軽減システム２１５は、図２では、１本の信号線２１７を介して１つの動的署名解析回路２２６のみに結合されるものとして示されているが、実際は、エラー軽減システム２１５は、任意の本数の信号線２１７を介して任意の数の動的署名解析回路２２６に結合することができる。
【００５２】
コードブロック２２４
図３は、コードブロック２２４の一実施形態を示している。各コードブロック２２４は、１つ又は２つ以上の手続き命令３０５と、分岐命令３１０とを含む。手続き命令３０５は、プロセッサ１１０の１つの動作を定めたコンピュータ実行可能コードである。図３では、４つの手続き命令が示されているが、実際は、各コードブロック２２４には、何百の又は何百万の手続き命令が含まれることが可能である。１つの実施形態では、各コードブロックに、１つの手続き命令が含まれる。分岐命令３１０は、プロセッサ１１０内における制御の流れの変化を定めたコンピュータ実行可能コードである。
【００５３】
エラー軽減システム２１５
図４Ａは、エラー軽減システムの第１の実施形態２１５Ａを示している。この実施形態では、エラー軽減システム２１５Ａは、最初に適切に実行されなかったコードブロック２２４の実行を再試行することによって、プロセッサ１１０の機能ユニット内に検出された一時的エラーを軽減させるためのルーチンを実行するように構成される。
【００５４】
静的署名モジュール４０２は、各コードブロック２２４についての様々な静的署名から
なるデータ構造である。１つの実施形態では、静的署名モジュール４０２は、プロセッサ１１０のオンチップストレージに格納される。静的署名モジュール４０２は、比較モジュール４０７に通信可能に結合される。静的署名は、コンパイル時に作成される。各静的署名は、特定のコードブロック２２４に関連付けられる。各静的署名は、自身に関連付けられたコードブロック２２４の既知のエラーフリー実行を表わす。静的署名モジュール４０２は、それぞれのコードブロック２２４についての動的署名がそのコードブロックについての静的署名と一致するかどうかを判定するために、比較モジュール４０７と連携しあう。もしコードブロック２２４についての動的署名が静的署名と一致する場合は、そのコードブロック２２４は、エラーを有さない。もし動的署名が静的署名と一致しない場合は、そのコードブロック２２４は、エラーを有する。
【００５５】
ログモジュール４３７は、ログ情報を格納するためのソフトウェア及びルーチンである。ログモジュール４３７は、エラー軽減システム２１５Ａの様々なモジュールに通信可能に結合される。１つの実施形態では、ログモジュール４３７は、プロセッサのオンチップストレージに格納される。１つの実施形態では、ログ情報は、検出されたエラーと、エラーを検出されたコードブロック２２４と、エラーのために試みられる再試行の回数と、エラーのために実装される各代替構成と、これらの各代替構成の成功又は失敗との記述を含む。ログ情報は、また、エラー軽減システム２１５Ａの様々なモジュールによって下された様々な決定及び判定の記述も含む。１つの実施形態では、ログモジュール４３７は、ログ情報をハッシュ値化するためのソフトウェアを含む。ログモジュール４３７は、次いで、ハッシュ値化されたログ情報を格納する。１つの実施形態では、ログ情報は、プロセッサ１１０のオンチップストレージに跨って格納される。或いは、ログ情報は、プロセッサ１１０の外部のストレージデバイス（不図示）に格納される。例えば、制御ユニット１０５は、ログ情報を格納するためのＲＡＭを含み、ログモジュール４３７は、ログ情報を格納するために、ＲＡＭに通信可能に結合される。ログモジュール４３７は、エラー軽減システム２１５Ａの様々なモジュールの説明に続いて、以下で更に詳しく説明される。
【００５６】
１つの実施形態では、ログモジュール４３７は、クロックを含み、ログ情報は、エラー軽減システム２１５Ａによってエラーが検出された時刻の記述を含む。例えば、エラーは、エラー軽減システム２１５Ａによって２００９年７月２３日の午後４時２７分（東部標準時間）に検出され、ログモジュール４３７は、エラーが検出された時刻を記述するログ情報を「４：２７．１３５４９８  ＰＭ  ０７／２３／２００９（東部標準時間）」として記録する。したがって、ログモジュール４３７は、マイクロ秒までの分解能を有する時刻コード（例えば４：２７．１３５４９８  ＰＭ）と、日付コード（０７／２３／２００９（東部標準時間））とを含むログ情報を格納する。
【００５７】
１つの実施形態では、ログモジュール４３７は、ＧＰＳ（全地球測位システム）レシーバを含み、ログ情報は、エラー軽減システム２１５Ａによってエラーが検出されたときのシステム１１０Ａ、１１０Ｂ、又は１１０ＣのＧＰＳ位置の記述を含む。例えば、エラーがエラー軽減システム２１５Ａによって検出され、ＧＰＳレシーバは、システム１１０ＡのＧＰＳ位置が経度３７．９２６８６８、緯度１０１．５１３６７２であることを示す。したがって、ログ情報４３７は、この位置の記述を含むログ情報を格納する。
【００５８】
１つの実施形態では、ログモジュール４３７は、温度記録装置を含み、ログ情報は、エラー軽減システム２１５Ａによってエラーが検出されたときよりも前のシステム１１０Ａ、１１０Ｂ、又は１１０Ｃの毎時間の最新のピーク温度及び／又は平均温度の記述を含む。例えば、エラーがエラー軽減システム２１５Ａによって検出され、温度記録器が、エラー検出よりも前の時間間隔におけるシステム１１０Ａの温度データが（時間＝０時間、平均温度＝華氏１５２度、ピーク温度＝華氏１５９度、時間＝−２時間、平均温度＝華氏１５４度、ピーク温度＝華氏１６０度、時間＝−２４度、平均温度＝華氏１４８度、ピーク
温度＝華氏１６１度）であることを示す。したがって、ログモジュール４３７は、エラー検出よりも前のシステム温度履歴の記述を含むログ情報を格納する。
【００５９】
監視モジュール４０３は、動的署名解析回路２２６から動的署名を受信するためのソフトウェア及びルーチンである。１つの実施形態では、監視モジュール４０３は、プロセッサ１１０のオンチップストレージに格納される。監視モジュール４０３は、結合２１７を介して動的署名解析回路２２６に結合される。監視モジュール４０３は、また、ログモジュール４３７にも通信可能に結合される。１つの実施形態では、監視モジュール４０３は、署名解析回路２２６からの新しい動的署名のために、信号線２１７を繰り返しチェックする。監視モジュール４０３は、署名解析回路２２６から動的署名を受信する。監視モジュール４０３は、次いで、受信された動的解析署名を比較モジュール４０７に引き渡す。
【００６０】
比較モジュール４０７は、格納された静的署名と動的署名とを比較するためのソフトウェア及びルーチンである。１つの実施形態では、比較モジュール４０７は、プロセッサ１１０のオンチップストレージに格納される。比較モジュール４０７は、監視モジュール４０３及び静的署名モジュール４０２に通信可能に結合される。比較モジュール４０７は、また、ログモジュール４３７にも通信可能に結合される。１つの実施形態では、比較モジュール４０７は、特定のコードブロック２２４についての動的署名を監視モジュール４０３から受信する。比較モジュール４０７は、特定のコードブロック２２４についての静的署名を静的署名モジュール４０２から読み出す。比較モジュール４０７は、動的署名解析回路２２６から受信された動的署名を、静的署名モジュール４０２から受信された静的署名と比較する。比較モジュール４０７は、次いで、動的署名が静的署名と一致するかどうかを判定する。もし動的署名が静的署名と一致する場合は、プロセッサ１１０は、次のコードブロック２２４を実行し、エラーをチェックする処理は、再び開始する。もし動的署名が静的署名と異なる場合は、比較モジュール４０７は、コードブロック２２４がエラーを有するものと判定する。比較モジュール４０７は、次いで、検出されたエラーを再試行モジュール４０９に通信する。
【００６１】
次に、一時的エラー再試行処理について説明する。再試行モジュール４０９は、エラーを有するものと判定されたコードブロック２２４の実行を再試行するためのソフトウェア及びルーチンである。１つの実施形態では、再試行モジュール４０９は、プロセッサ１１０のオンチップストレージに格納される。再試行モジュール４０９は、比較モジュール４０７及びハードウェアコントローラ４１１に通信可能に結合される。再試行モジュール４０９は、また、ログモジュール４３７にも通信可能に結合される。１つの実施形態では、再試行モジュール４０９は、検出されたエラーを比較モジュール４０７から受信する。再試行モジュール４０９は、次いで、コードブロック２２４の実行を再試行するために、ハードウェアコントローラ４１１にコマンドを通信する。再試行モジュール４０９は、検出された各エラーについて所定回数にわたって各コードブロック２２４の実行を再試行するように構成される。１つの実施形態では、再試行モジュール４０９は、再試行を試みた回数を記憶し、所定回数の再試行が達成されたら一時的エラー再試行処理を終了する。
【００６２】
ハードウェアコントローラ４１１は、再試行モジュール４０９からのコマンドを受けて様々なコードブロック２２４の実行を再試行するように適応されたコントローラである。ハードウェアコントローラ４１１は、再試行モジュール４０９に通信可能に結合される。ハードウェアコントローラ４１１は、また、結合２１９を介して様々なコードブロックにも通信可能に結合される。１つの実施形態では、ハードウェアコントローラ４１１は、特定のコードブロック２２４を再実行するために、再試行モジュール４０９からコマンドを受信する。ハードウェアコントローラ４１１は、次いで、そのコードブロック２２４の実行を再試行する（「再試行実行」）。動的署名解析回路２２６Ｎは、その再試行実行についての動的署名を作成する。この署名は、監視モジュール４０３に、そして比較モジュー
ル４０７に引き渡される。比較モジュール４０７は、上述のように、再試行実行についての動的署名を静的署名と比較する。もし再試行実行についての動的署名が静的署名と一致する場合は、この特定のコードブロック２２４のための一時的エラー再試行処理は終了する。もし署名どうしが一致しない場合は、再試行モジュール４０９は、コードブロック２２４の別の再試行を実行するために、ハードウェアコントローラ４１１に別のコマンドを発行する。この処理は、コードブロック２２４がエラーフリーで実行されるまで、又は所定回数の再試行の試みが成されたものと再試行モジュール４０９が判定するまで続く。もしエラーフリー実行を伴うことなく所定回数の再試行の試みが成された場合は、再試行モジュール４０９は、プロセッサ１１０のデジタルロジックが持続的エラーを有するものと判定する。図４Ａ〜４Ｈの実施形態は、上述された一時的エラー再試行処理を遂行するように構成される。
【００６３】
留意されるべきは、一時的エラー再試行処理は、この処理の遂行がバックグラウンドで実施されるように、そして制御ユニット１０５の機能性を提供するアルゴリズムの実行に関わるプロセッサ１１０のパフォーマンスに影響を及ぼすことがないように、プロセッサ１１０によって調整されることである。更に、一部の実施形態では、プロセッサ１１０は、一時的エラー再試行処理のために様々な再試行の試みを遂行するための様々な量のプロセッサ能力を提供する。
【００６４】
ログモジュール４３７は、エラー軽減システム２１５Ａの様々なモジュールを監視し、エラーを被っているコードブロック２２４を記述したログ情報を格納する。検出された各エラーについて、ログモジュール４３７は、所定回数の再試行のうちにそのコードブロック２２４のエラーフリー実行が実現されたかどうかを判定するために、再試行モジュール４０９を監視する。もしエラーフリー実行が実現された場合は、ログモジュール４３７は、そのエラーフリー実行を実現するために必要とされた再試行の回数を記述したログ情報を格納する。１つの実施形態では、ログモジュール４３７は、様々な再試行の試みにおいて使用されるプロセッサ能力の量を記述したログ情報も記録する。この処理は繰り返され、ゆえに、ログモジュール４３７は、エラーを被っているコードブロック２２４と、これらのエラーの結果とを記述したログ情報を格納する。ログモジュール４３７は、図４Ｂ〜４Ｈを参照にして、更に詳しく説明される。
【００６５】
次に、図４Ｂ〜４Ｈを参照すると、エラー軽減システム２１５の更に別の各実施形態が示されている。より具体的には、図４Ｂ〜４Ｈは、プロセッサ１１０のデジタルロジック内の持続的エラーを軽減するために用いることができるエラー軽減システム２１５の様々なコンポーネントを示している。図４Ｂ〜４Ｈに示された実施形態では、エラー軽減システム２１５のコンポーネントの多くは、図４Ａに示された実施形態の対応コンポーネントと同じ又は類似の機能を有する。したがって、同じ又は類似の機能性を持つ同様のコンポーネントに言及するために、同様の参照番号が使用されている。例えば、図４Ａに示された実施形態のように、図４Ｂ〜４Ｈの実施形態もまた、静的署名モジュール４０２、監視モジュール４０３、比較モジュール４０７、再試行モジュール４０９、ハードウェアコントローラ４１１、及びログモジュール４３７を含む。
【００６６】
図４Ｂは、エラー軽減システムの第２の実施形態２１５Ｂを示している。この実施形態では、エラー軽減システム２１５Ｂは、静的署名モジュール４０２、監視モジュール４０３、比較モジュール４０７、再試行モジュール４０９、ハードウェアコントローラ４１１、ルックアップテーブル４１３、代替構成４１５群、戦略モジュール４１７、持続的エラーモジュール４２１、持続的エラーアセット４２２Ａ群、及びログモジュール４３７を含む。
【００６７】
代替構成４１５群は、プロセッサ１１０デジタルロジックのための様々な代替マシン構
成群である。代替構成４１５は、本来のプロセッサ１１０のハードウェア構成とは異なるプロセッサ１１０のデジタルロジック部分群に依存する。１つの実施形態では、代替構成４１５は、コンパイル時に作成される。例えば、プロセッサ１１０は、コンパイル時に、改良型Ｃコンパイラを使用して解析される。改良型コンパイラは、各コードブロック２２４の実行時にプロセッサ１１０のどのコンポーネントが使用されるかを記述したコンポーネント一覧表を生成する。コンポーネント一覧表は、次いで、プロセッサ１１０が１つ又は２つ以上の持続的エラーを伴って機能し続けることを可能にする様々な代替構成を決定するために、アルゴリズムを使用して処理される。したがって、留意されるべきは、代替構成は、プロセッサ１１０の完璧な動作を可能にするものもあるが、完璧に動作するプロセッサ１１０を作成することが必ずしも求められてはいないことである。むしろ、代替構成に求められているのは、単に、たとえプロセッサ１１０のデジタルロジック内に１つ又は２つ以上の持続的エラーが含まれる状態でもプロセッサ１１０が機能し続けることを可能にすることである。代替構成は、代替構成４１５群としてプロセッサ１１０のオンチップストレージに格納される。各コードブロック２２４のために、限られた数の代替構成４１５がある。
【００６８】
ルックアップテーブル４１３は、様々な代替構成４１５を試みるべき順番を記述した順序一覧表を含むデータ構造である。１つの実施形態では、ルックアップテーブル４１３は、プロセッサ１１０のオンチップストレージに格納される。１つの実施形態では、ルックアップテーブル４１３は、各コードブロック２２４のための限られた数の代替構成４１５を記述した各コードブロック２２４のための「最適候補一覧表」を含む。各コードブロック２２４のための代替構成４１５は、それらの構成がコードブロック２２４のエラーフリー実行を実現する可能性に基づいて、一覧表の形に順位付けされる。ルックアップテーブル４１３は、プロセッサ１１０が、そのエラーフリーハードウェアを可能な限り用いつつ最大実行速度でエラーフリーな代替構成４１５を見つけることを、有利に可能にする。
【００６９】
１つの実施形態では、ルックアップテーブル４１３は、コンパイル時に、代替構成４１５を作成するために使用されたコンポーネント一覧表に基づいて作成される。例えば、プロセッサ１１０は、コンポーネント一覧表を作成するために、コンパイル時に、改良型Ｃコンパイラを使用して解析され、コンポーネント一覧表は、ルックアップテーブル４１３を作成するために、最適化アルゴリズムによって処理される。ルックアップテーブル４１３は、様々なデータを使用して最適化される。例えば、ルックアップテーブル４１３の最適化には、プロセッサ１１０コンポーネント障害の履歴情報と、技術データに基づくプロセッサ１１０モジュール障害率の技術的推定値と、開発ソフトによって自動的に生成されるコンポーネント利用データに基づいた、ルックアップ順位付けに対する改良の取り込みとが使用される。
【００７０】
次に、持続的エラー再試行処理について説明する。持続的エラー再試行手順は、幾つかの相違点を除き、図４Ａについて上述された一時的エラー再試行手順と同様である。
【００７１】
戦略モジュール４１７もまた、再試行モジュール４０９、持続的エラーモジュール４２１、及びログモジュール４３７に通信可能に結合される。ルックアップテーブル４１３及び代替構成４１５もまた、戦略モジュール４１７に通信可能に結合される。戦略モジュール４１７は、特定のコードブロック２２４について持続的エラーが発生したときにどの代替構成４１５を実装するかを判定するためのソフトウェアおよびルーチンである。１つの実施形態では、戦略モジュール４１７は、プロセッサ１１０のオンチップストレージに格納される。１つの実施形態では、戦略モジュール４１７は、特定のコードブロック２２４が持続的エラーを有することを示す情報を、再試行モジュール４０９から受信する。この情報は、再試行モジュール４０９がエラーフリー実行を実現することなく所定回数にわたってコードブロック２２４の再試行実行を実行したことを受けて、再試行モジュール４０９から受信される。戦略モジュール４１７は、持続的エラーを有するコードブロック２２４に試みるための第１の代替構成４１５（即ち、その特定のコードブロック２２４のための最も高順位の代替構成４１５）を特定した情報を受信するために、ルックアップテーブル４１３と通信する。戦略モジュール４１７は、最も高順位の代替構成を特定した情報を、ルックアップテーブル４１３から受信する。戦略モジュール４１７は、次いで、ルックアップテーブル４１３によって特定された最も高順位の代替構成を記述した情報を読み出すために、代替構成４１５群と通信する。戦略モジュール４１７は、次いで、この情報を持続的エラーモジュール４２１に通信する。
【００７２】
持続的エラーアセット４２２Ａは、代替構成４１５を実装するために持続的エラーモジュール４２１によって用いられる様々なソフトウェアコンポーネント及び／又はハードウェアコンポーネントである。１つの実施形態では、持続的エラーアセット４２２Ａは、プロセッサ１１０のオンチップストレージに格納される。別の実施形態では、持続的エラーアセット４２２Ａは、プロセッサ１１０の外部の１つ又は２つ以上の不揮発性メモリ（不図示）に跨って格納される。持続的エラーアセット４２２Ａは、持続的エラーモジュール４２１に通信可能に結合される。図４Ｃ〜４Ｅは、それぞれ、持続的エラーアセット４２２Ａに含まれることが可能な様々な種類のソフトウェア及び／又はハードウェアを示している。したがって、持続的エラーアセットは、図４Ｃ〜４Ｅを参照にして、更に詳しく説明される。
【００７３】
持続的エラーモジュール４２１は、代替構成４１５を実装するために持続的エラーアセット４２２Ａと連携しあうソフトウェア及びルーチンである。１つの実施形態では、持続的エラーモジュール４２１は、プロセッサ１１０のオンチップストレージに格納される。持続的エラーモジュール４２１は、戦略モジュール４１７、代替構成４１５群、持続的エラーアセット４２２Ａ、及びログモジュール４３７に通信可能に結合される。１つの実施形態では、持続的エラーモジュール４２１は、最も高順位の代替構成４１５を記述した情報を戦略モジュール４１７から受信する。持続的エラーモジュール４２１は、次いで、最も高順位の代替構成４１５を実装するように持続的エラーアセット４２２Ａを構成する。持続的エラーモジュール４２１は、次いで、コードブロック２２４を再試行するときであることを示すために、再試行モジュール４０９と通信する。
【００７４】
１つの実施形態では、ハードウェアコントローラ４１１は、特定のコードブロック２２４を再実行するために、再試行モジュール４０９からコマンドを受信する。ハードウェアコントローラ４１１は、次いで、そのコードブロック２２４の実行を再試行する（「持続的エラー再試行実行」）。動的署名解析回路２２６は、持続的エラー再試行実行についての動的署名を作成する。この署名は、監視モジュール４０３に、そして比較モジュール４０７に引き渡される。比較モジュール４０７は、動的署名を静的署名と比較する。もし動的署名が静的署名と一致する場合は、持続的エラー再試行処理は終了する。もし署名どうしが一致しない場合は、再試行モジュール４０９は、再試行が失敗したことを戦略モジュール４１７に通信する。戦略モジュール４１７は、すると、第２の代替構成を実装する処理を開始する。言い換えると、エラー軽減システム２１５は、２番目に高い順位の代替構成４１５を実装し、次いで、コードブロック２２４の別の再試行を実行する。第２の代替構成を実装する処理は、第１の代替構成を実装する処理と同じである。エラー軽減システム２１５は、コードブロック２２４のための代替構成４１５が全て試行されるまで、又はプロセッサ１１０が持続的エラーを伴って動作することを可能にする代替構成４１５が見いだされるまで、即ち、コードブロック２２４がエラーフリーで実行されるまで、代替構成４１５を実装してコードブロックの再試行を実行することを続ける。
【００７５】
図４Ｂ〜４Ｈの実施形態は、それぞれ、持続的エラー再試行処理を遂行するように構成される。更に、一時的エラー再試行処理と同様に、持続的エラー再試行処理は、制御ユニ
ット１０５の機能性を提供するアルゴリズムの実行に関わるプロセッサ１１０のパフォーマンスに再試行手順の遂行が影響を及ぼすことがないように、プロセッサ１１０によって調整される。また、一時的再試行処理と同様に、一部の実施形態では、プロセッサ１１０は、様々な再試行の試みを遂行するための様々な量のプロセッサ能力を提供する。
【００７６】
持続的エラー再試行処理時において、ログモジュール４３７は、図４Ａについて上述されたのと同じログ情報のログを作成する。このログ情報に加えて、ログモジュール４３７は、更なるログ情報も格納する。１つの実施形態では、ログモジュール４３７は、どの代替構成が試行されるか、及びもしこれらの構成のいずれかがコードブロック２２４のエラーフリー実行を実現するならばそれがどの構成であるかを判定するために、戦略モジュール４１７及び比較モジュール４０７を監視する。もしコードブロックのために使用可能な代替構成４１５のいずれを使用してもエラーフリー実行が実現されない場合は、ログモジュール４３７は、試行された各種の代替構成４１５と、これらの構成によってコードブロック２２４のエラーフリー実行の実現が失敗したこととを記述したログ情報を格納する。もしエラーフリー実行が実現された場合は、ログモジュール４３７は、成功した代替構成４１５を記述したログ情報を格納する。このログ情報は、次いで、コードブロック２２４を記述した、以前のログ情報に関連付けられる。この処理は繰り返されるので、ログモジュール４３７は、エラーを被っているコードブロック２２４と、これらのエラーのために実装される代替構成と、これらのエラーの結果とを記述したログ情報を格納する。
【００７７】
次に、図４Ｃ〜４Ｅを参照すると、これらの図は、それぞれ、持続的エラー軽減アセット４２２Ａに含まれることが可能な様々な種類のソフトウェア／ハードウェアを示している。したがって、図４Ｃ〜４Ｅの目的は、このハードウェア／ソフトウェア、及び様々な代替構成４１５を実装するためにこのハードウェア／ソフトウェアが持続的エラーモジュール４２１によってそれぞれどのように用いられるかを説明することにある。
【００７８】
図４Ｃは、エラー軽減システムの第３の実施形態２１５Ｃを示している。この実施形態では、エラー軽減システム２１５Ｃは、静的署名モジュール４０２、監視モジュール４０３、比較モジュール４０７、再試行モジュール４０９、ハードウェアコントローラ４１１、ルックアップテーブル４１３、代替構成４１５群、戦略モジュール４１７、持続的エラーモジュール４２１、ログモジュール４３７、及びエミュレーションソフトウェア４２２Ｂ群を含む。したがって、この実施形態では、持続的エラー軽減アセット４２２Ａは、エミュレーションソフトウェア４２２Ｂ群である。
【００７９】
エミュレーションソフトウェア４２２Ｂは、デジタルロジックの機能を複製するように構成されたソフトウェアである。１つの実施形態では、持続的エラーモジュール４２１は、エミュレーションソフトウェア４２２Ｂと通信する。持続的エラーモジュール４２１は、次いで、所定の再試行を試みるために、最も高順位の代替構成４１５によって記述された機能性を複製するようにエミュレーションソフトウェア４２２Ｂを構成する。持続的エラーモジュール４２１は、次いで、エミュレーションソフトウェア４２２Ｂを実行する。持続的エラーモジュール４２１は、次いで、上述のように、持続的エラー再試行処理に進む。
【００８０】
図４Ｄは、エラー軽減システムの第４の実施形態２１５Ｄを示している。この実施形態では、エラー軽減システム２１５Ｄは、静的署名モジュール４０２、監視モジュール４０３、比較モジュール４０７、再試行モジュール４０９、ハードウェアコントローラ４１１、ルックアップテーブル４１３、代替構成４１５群、戦略モジュール４１７、持続的エラーモジュール４２１、ログモジュール４３７、及び格納されたフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）ユニット４２２Ｃ群を含む。したがって、この実施形態では、持続的エラー軽減アセット４２２Ａは、ＦＰＧＡユニット４２２Ｃ群である。
【００８１】
ＦＰＧＡユニット４２２Ｃは、特定の機能性を実現するためにデジタルロジックを再構成することをベースにした技法の結果である。例えばＦＰＧＡは、所定のデジタルロジックアーキテクチャ又はデジタルロジックサブアーキテクチャを実現するように再構成することができる半導体デバイスである。１つの実施形態では、持続的エラーモジュール４２１は、格納されたＦＰＧＡユニット４２２Ｃと通信する。持続的エラーモジュール４２１は、次いで、代替構成４１５によって記述された機能性を複製するようにＦＰＧＡユニット４２２Ｃを構成する。持続的エラーモジュール４２１は、次いで、構成されたＦＰＧＡ４２２Ｃユニットを、プロセッサ１１０のデジタルロジックに実装する。持続的エラーモジュール４２１は、次いで、上述のように、持続的エラー再試行処理に進む。
【００８２】
図４Ｅは、エラー軽減システムの第５の実施形態２１５Ｅを示している。この実施形態では、エラー軽減システム２１５Ｅは、静的署名モジュール４０２、監視モジュール４０３、比較モジュール４０７、再試行モジュール４０９、ハードウェアコントローラ４１１、ルックアップテーブル４１３、代替構成４１５群、戦略モジュール４１７、持続的エラーモジュール４２１、ログモジュール４３７、及びソフトコアプロセッサユニット４２２Ｄ群を含む。したがって、この実施形態では、持続的エラー軽減アセット４２２Ａは、ソフトコアプロセッサユニット４２２Ｄ群である。
【００８３】
ソフトコアプロセッサユニット４２２Ｄは、プロセッサ１１０上の様々なアーキテクチャ場所を隔てているデジタルロジックの再構成をベースにした技法の結果である。例えば、プロセッサ１１０は、ネットリストを含む。ネットリストは、プロセッサ１１０の様々なアーキテクチャ場所間におけるデジタルロジックの相互接続を記述したデータ構造である。ネットリストが、点「Ａ」を点「Ｂ」に相互接続する様々なデジタルロジックの記述を含むものと仮定する。更に、点「Ａ」を点「Ｂ」に相互接続するデジタルロジックが、格納されているどの代替構成４１５にも等しくないものと仮定する。したがって、１つの実施形態では、持続的エラーモジュール４２１は、点「Ａ」を点「Ｂ」に相互接続するデジタルロジックが特定の代替構成４１５に等しくなるようにネットリストを変更することによって、特定の代替構成４１５を実装する。持続的エラーモジュール４２１は、次いで、上述のように、持続的エラー再試行処理に進む。
【００８４】
当業者ならば、この処理が、様々なアーキテクチャ場所及び様々な代替場所について繰り返すことが可能であることがわかる。当業者ならば、また、ネットリストに基づく上記の例が、より広い観念であるソフトコアプロセッサのうちの一種の説明であることもわかる。したがって、図４Ｅの実施形態は、ネットリスト又はネットリストに等価なものを用いた実装形態に限定されないことを理解されるべきである。
【００８５】
ソフトコアプロセッサユニット４２２Ｄは、様々な時点で構成することができる。例えば、ソフトコアプロセッサユニット４２２Ｄは、エラー軽減システム２１５によってエラーが検出された後にリアルタイムに、プロセッサ１１０が最初に作動された起動時に、及び／又はプロセッサ１１０が最初に製造された製造時に構成される。
【００８６】
図４Ｆは、エラー軽減システムの第６の実施形態２１５Ｆを示している。この実施形態では、エラー軽減システム２１５Ｆは、静的署名モジュール４０２、監視モジュール４０３、比較モジュール４０７、再試行モジュール４０９、ハードウェアコントローラ４１１、ルックアップテーブル４１３、代替構成４１５群、戦略モジュール４１７、持続的エラーモジュール４２１、ログモジュール４３７、エミュレーションソフトウェア４２２Ｂ群、及び最適化モジュール４３０を含む。
【００８７】
次に、最適化処理について説明する。最適化モジュール４３０は、図４Ｃについて上述
されたエミュレータソフトウェア４２２Ｂを使用した持続的エラー再試行手順を更に進行させるためのソフトウェア及びルーチンである。１つの実施形態では、最適化モジュール４３０は、プロセッサ１１０のオンチップストレージに格納される。最適化モジュール４３０は、戦略モジュール４１７に通信可能に結合される。具体的には、最適化モジュール４３０は、コードブロック２２４のエラーフリー実行を実現する代替構成４１５が上述の持続的エラー再試行処理によって成功裏に実装された後に、戦略モジュール４１７と通信する。最適化モジュール４３０は、戦略モジュール４１７に余剰計算能力を使用させ、特定のコードブロック２２４のための最適候補一覧表に含まれる残りの各代替構成４１５のエミュレーションを続けさせる。もしこの処理によって、プロセッサ１１０のエラーフリーハードウェアをより多く用いる構成が異なる代替構成４１５によって提供されることが示された場合は、エラー軽減システム２１５は、第１の成功した代替構成４１５を、この異なる代替構成４１５で置き換える。
【００８８】
ログモジュール４３７は、上述された最適化処理を監視する。ログモジュール４３７は、最適化モジュール４３０によって実装される様々な代替構成４１５と、これらの代替構成４１５を実装した結果とを記述したログ情報を記録する。
【００８９】
図４Ｇは、エラー軽減システムの第７の実施形態２１５Ｇを示している。この実施形態では、エラー軽減システム２１５Ｇは、静的署名モジュール４０２、監視モジュール４０３、比較モジュール４０７、再試行モジュール４０９、ハードウェアコントローラ４１１、ルックアップテーブル４１３、代替構成４１５群、戦略モジュール４１７、持続的エラーモジュール４２１、ログモジュール４３７、持続的エラーアセット４２２Ａ群、及び最適化モジュール４３０（随意）を含む。
【００９０】
この実施形態では、エラー軽減システム２１５は、信号線１２４に通信可能に結合され、ログモジュール４３７は、ログ情報を外部システム１３７にアップロードするように構成される。１つの実施形態では、エラー軽減システム２１５は、図１Ｂに示されたインターフェース１２８及びネットワーク１３０を介して外部システム１３７にログ情報をアップロードする。例えば、ログモジュール４３７は、ログ情報をＸＭＬファイルの形式にし、この情報を所定間隔で外部システム１３７にアップロードすることができる。
【００９１】
当業者ならば、図１Ｃに示されたようなストレージデバイス１４０Ａ又は光学デバイス１４０Ｂを使用してログ情報をどのように外部システムに送ることができるかを理解することができる。
【００９２】
図４Ｈは、エラー軽減システムの第８の実施形態２１５Ｈを示している。この実施形態では、エラー軽減システム２１５Ｈは、静的署名モジュール４０２、監視モジュール４０３、比較モジュール４０７、再試行モジュール４０９、ハードウェアコントローラ４１１、ルックアップテーブル４１３、代替構成４１５群、戦略モジュール４１７、持続的エラーモジュール４２１、ログモジュール４３７、持続的エラーアセット４２２Ａ群、最適化モジュール４３０（随意）、及び更新モジュール４３４を含む。
【００９３】
この実施形態では、エラー軽減システム２１５Ｈは、信号線１２４に通信可能に結合され、更新モジュール４３４は、更新情報を受信するように構成される。１つの実施形態では、エラー軽減システム２１５は、図１Ｂに示されたインターフェース１２８及びネットワーク１３０を介して外部システム１３７から更新情報を受信する。
【００９４】
更新モジュール４３４は、データ信号１２４を介して更新情報を受信するように構成されたソフトウェア及びルーチンである。１つの実施形態では、更新モジュール４３４は、プロセッサ１１０のオンチップストレージに格納される。更新モジュール４３４は、エラ
ー軽減システム２１５の様々なモジュールに通信可能に結合される。更新モジュール４３４は、また、持続的エラーアセット４２２Ａ、代替構成４１５群、ルックアップテーブル４１３、及び（結合２１９を介して）様々なコードブロック２２４にも通信可能に結合される。１つの実施形態では、外部システム１３７は、エラーを被っている様々なコードブロック２２４と、これらのエラーの結果とを記述したログ情報を、様々な制御ユニット１０５から受信している。外部システム１３７は、ログ情報を集め、これらのログ情報に基づいて更新情報群を作成する。外部システム１３７は、更新情報群をデータベースに格納する。更新情報は、エラー軽減システム２１５Ｈを再構成するように適応される。
【００９５】
更新情報の１つの目標は、被るエラーが少ないような、プロセッサ１１０のデジタルロジック構成を実現することである。この再構成のもう１つの目標は、異なる制御ユニット１０５が被った過去のエラーを繰り返さないような、プロセッサ１１０のデジタルロジック構成を実現することである。例えば、更新情報は、エラー軽減システム２１５のために、ファームウェア更新及び／又はネットリスト更新を提供することができる。ファームウェア更新は、プロセッサ１１０のファームウェアを変更する情報である。例えば、ファームウェア更新は、なかでも、エラー軽減システム２１５に含まれる各種のモジュール、及び／又はプロセッサ１１０によって実行される様々なコードブロック２２４の、任意の組み合わせを再構成することができる。１つの実施形態では、ファームウェア更新は、異なる順位付けを含むようにルックアップテーブル４１３を再構成する。ネットリスト更新は、プロセッサ１１０の様々なアーキテクチャ場所間に異なる相互接続を指定するようにプロセッサ１１０のネットリスト（不図示）を変更する情報である。したがって、ネットリスト更新は、プロセッサ１１０のデジタルロジックを効果的に再構成することができる。
【００９６】
当業者ならば、図１Ｃに示されたようなストレージデバイス１４０Ａ又は光学デバイス１４０Ｂを使用して更新情報をどのようにエラー軽減システム２１５に送ることができるかを理解することができる。
【００９７】
１つの実施形態では、更新モジュール４３４は、データ信号１２４を介して更新情報を受信する。更新モジュール４３４は、情報に含まれる更新のタイプ（即ち、ファームウェア更新及び／又はネットリスト更新）を判定するために、更新情報を解析する。更新モジュール４３４は、次いで、更新を遂行するために、プロセッサ１１０の、異なるコンポーネントと通信する。例えば、もし更新情報がファームウェア更新を含む場合は、更新モジュール４３４は、ファームウェア更新に基づいてプロセッサのファームウェアを再構成する。
【００９８】
方法
図５は、プロセッサ１１０のデジタルロジック内のエラーを監視するための自己回復プロセッサ１１０の１つの実施形態のための一般的方法の流れ図である。方法は、プロセッサ１１０がコードブロック２２４を実行する（５０３）ことから開始する。動的署名解析回路２２６は、コードブロック２２４の実行についての動的署名を作成する（５０７）。動的署名解析回路２２６は、動的署名を監視モジュール４０３に転送する（５１４）。監視モジュール４０３は、結合２１７を介して動的署名回路２２６から動的署名を受信する。監視モジュール４０３は、動的署名を比較モジュール４０７に転送する（５１８）。比較モジュール４０７は、監視モジュール４０３から動的署名を受信する。比較モジュール４０７は、静的署名モジュール４０２にアクセスし、上記コードブロック２２４についての静的署名を読み出す（５２７）。比較モジュール４０７は、署名どうしが一致するかどうかを判定する（５３０）ために、動的署名を静的署名と比較する（５２７）。もし署名どうしが一致する（５３０）場合は、エラー軽減システム２１５は、エラーをチェックするために、次のコードブロック２２４に進む（５３５）。もし署名どうしが一致しない（５３０）場合は、エラー軽減システム２１５は、一時的エラー再試行処理を開始する（５
３７）。ログモジュール４３７は、上記のイベントを記述したログ情報を格納する。
【００９９】
次に、図６を参照にして、一時的エラー再試行処理の１つの実施形態のための一般的方法の流れ図について説明する。処理は、比較モジュール４０７が、検出されたエラーを再試行モジュール４０９に通信する（６０３）ときから開始する。再試行モジュール４０９は、検出されたエラーを記述した情報を、比較モジュール４０７から受信する。再試行モジュール４０９は、再試行が所定回数を超えているかどうかを判定するために、内部カウントをチェックする（６０７）。もし再試行が所定回数を超えている場合は、エラー軽減システム２１５は、持続的エラー再試行処理を開始する（６１０）。もし再試行が所定回数を超えていない場合は、再試行モジュール４０９は、ハードウェアコントローラ４１１に再試行コマンドを通信する（６１２）。ログモジュール４３７は、これらのイベントを記述したログ情報を格納する。
【０１００】
ハードウェアコントローラ４１１は、再試行コマンドを受信する。ハードウェアコントローラ４１１は、コードブロック２２４の再試行を実行する（６１６）。動的署名解析回路２２６は、コードブロック２２４の実行についての動的署名を作成する（６２０）。動的署名解析回路２２６は、動的署名を監視モジュール４０３に転送する（６２２）。監視モジュール４０３は、結合２１７を介して動的署名回路から動的署名を受信し、その動的署名を比較モジュール４０７に転送する（６２７）。比較モジュール４０３は、監視モジュール４０３から動的署名を受信し、署名どうしが一致するかどうかを判定する（６３６）ために、動的署名を静的署名と比較する（６３２）。もし署名どうしが一致しない（６３６）場合は、エラー軽減システム２１５は、ステップ６０３における一時的エラー再試行処理を再度行う。一時的エラー再試行処理の再試行は、署名どうしが一致する（６３６）か、又は所定回数の再試行が試みられたと再試行モジュール４０９が判定する（６０７）まで続く。もし署名どうしが一致する（６３６）場合は、エラー軽減システム２１５は、エラーをチェックするために、次のコードブロックに進む（６４０）。ログモジュール４３７は、上記のイベントを記述したログ情報を格納する。
【０１０１】
次に、図７Ａ及び図７Ｂを参照にして、持続的エラー再試行処理の１つの実施形態のための一般的方法の流れ図について説明する。再試行モジュール４０９は、戦略モジュール４１７に持続的エラーを通知する（７０２）。戦略モジュール４１７は、再試行モジュール４０９からエラー情報を受信する。戦略モジュール４１７は、ルックアップテーブル４１３にアクセスする（７０４）。戦略モジュール４１７は、特定のコードブロック２２４のために使用可能な代替構成４１５があるかどうかを判定する（７０７）。もし使用可能な代替構成がない場合は、持続的エラー再試行処理は停止し（７１０）、エラー軽減システム２１５は、エラーをチェックするために、次のコードブロック２２４に進む。もし使用可能な代替構成がある場合は、戦略モジュール４１７は、次に使用可能なその代替構成４１５を特定した情報を受信する（７１３）。次に使用可能な代替構成は、エラー軽減システム２１５によってまだ実装されていない最も高順位の代替構成４１５である。戦略モジュール４１７は、次いで、次に使用可能な代替構成を記述した情報を読み出す（７１７）ために、代替構成４１５群と通信する。戦略モジュール４１７は、次いで、この情報を持続的エラーモジュール４２１に通信する（７２０）。持続的エラーモジュール４２１は、次の代替構成４１５を記述した情報を、戦略モジュール４１７から受信する。持続的エラーモジュール４２１は、次いで、次に使用可能な代替構成４１５を実装する（７２９）ように持続的エラーアセット４２２Ａを構成する（７２５）。ログモジュール４３７は、上記のイベントを記述したログ情報を格納する。
【０１０２】
次に、図７Ｂを見ると、持続的エラーモジュール４２１は、コードブロック２２４を再
試行するときであることを示すために、再試行モジュール４０９と通信する（７３４）。再試行モジュール４０９は、再試行コマンドをハードウェアコントローラ４１１に通信する（７４０）。ハードウェアコントローラ４１１は、コードブロック２２４を再実行するために、再試行モジュール４０９からコマンドを受信する。ハードウェアコントローラ４１１は、そのコードブロック２２４の実行を再試行する（７４３）。動的署名解析回路２２６は、動的署名を作成する（７４７）。この署名は、監視モジュール４０３に通信される（７５２）。監視モジュール７０３は、動的署名を比較モジュール４０７に転送する（７５４）。比較モジュール４０７は、動的署名を静的署名と比較する（７５８）。もし動的署名が静的署名と一致する（７６４）場合は、エラー軽減ルーチンは、ステップ５０３に進み（７７２）、そこでは、次のコードブロック２２４のための処理が開始する。もし署名どうしが一致しない（７６４）場合は、再試行モジュール４０９は、ステップ７０４に進み、そこでは、戦略モジュール４１７は、次に使用可能な代替構成４１５を実装する処理を開始する。エラー軽減システム２１５は、コードブロック２２４のための代替構成４１５が全て試行されるまで、又はプロセッサ１１０が持続的エラーを伴って動作することを可能にする代替構成４１５が見いだされるまで、即ち、コードブロック２２４がエラーフリーで実行されるまで、この処理を続ける。
【０１０３】
次に、図８Ａ〜８Ｃを参照にして、最適化処理の１つの実施形態の一般的方法の流れ図について説明する。最適化処理は、成功した代替構成４１５が特定されたら開始する（８０２）。最適化モジュール４３０は、プロセッサ能力が使用可能かどうかを見るために、プロセッサ１１０をチェックする（８０４）。最適化モジュール４３０は、適切なプロセッサ能力が使用可能になるまでステップ８０７に進まない。適切なプロセッサ能力が使用可能になったら、最適化モジュールは、まだ試行されていない代替構成４１５がルックアップテーブル４１３に含まれるかどうかを判定する（８０７）ために、戦略モジュール４１７と通信する。もし全ての代替構成４１５が試行されている場合は、最適化処理は停止する。もしまだ試行されていない使用可能な代替構成がある場合は、最適化モジュール４３０は、余剰のプロセッサ能力を使用して、これらの使用可能な各代替構成４１５のエミュレーションを行い、より優れたパフォーマンスを実現する代替構成があるかどうかをチェックする。最適化処理のためのステップ８１０〜８６２は、ステップ７１３〜７７２の持続的エラー再試行処理について上述されたのと同じである。
【０１０４】
本発明の実施形態の以上の説明は、例示及び説明を目的として提示されたものであり、包括的であることも、開示された形態そのものに本発明を限定することも意図していない。上記の教示内容に照らして、多くの変更形態及びヴァリエーションが可能である。本発明の範囲は、この詳細な説明によってではなく、本出願の特許請求の範囲によって限定されることを意図している。当業者にならば理解されるように、本発明は、その趣旨又は基本的特性から逸脱することなくその他の特定の形態で具現化することが可能である。同様に、モジュール、ルーチン、特徴、属性、技法、及びその他の態様の、具体的な命名及び区別は、強制的でも重大でもなく、本発明又はその特徴を実現するメカニズムは、異なる呼び名、区別、及び／又は形式を有することが可能である。更に、当業者にならば明らかなように、本発明のモジュール、ルーチン、特徴、属性、技法、及びその他の態様は、ソフトウェア、ハードウェア、ファームウェア、又はこれら３つの任意の組み合わせとして実装することができる。１つの実施形態では、図４Ａ〜４Ｈに示された各種のモジュールは、プロセッサ１１０のオンチップストレージに格納されたコンピュータ実行可能コードを含む。また、本発明の、例えばモジュールを一例とするコンポーネントが、どこであれソフトウェアとして実装されたとすると、そのコンポーネントは、独立したプログラムとして、より大きなプログラムの一部として、複数の個別のプログラムとして、統計的に若しくは動的にリンクされたライブラリとして、カーネルローダブルモジュールとして、デバイスドライバとして、並びに／又はコンピュータプログラミングの分野の当業者に現在若しくは将来知られるあらゆる及び任意のその他の形で、実装することができる。また、
本発明は、いかなる特定のプログラミング言語での実装にも、又はいかなる特定のオペレーティングシステム若しくは環境のための実装にも、決して限定されない。したがって、本発明の開示内容は、添付の特許請求の範囲に定められた本発明の範囲を限定するのでなく、例示的であることを意図している。
【図１Ａ】
0005609363.tif 000002
【図１Ｂ】
0005609363.tif 000003
【図１Ｃ】
0005609363.tif 000004
【図２】
0005609363.tif 000005
【図３】
0005609363.tif 000006
【図４Ａ】
0005609363.tif 000007
【図４Ｂ】
0005609363.tif 000008
【図４Ｃ】
0005609363.tif 000009
【図４Ｄ】
0005609363.tif 000010
【図４Ｅ】
0005609363.tif 000011
【図４Ｆ】
0005609363.tif 000012
【図４Ｇ】
0005609363.tif 000013
【図４Ｈ】
0005609363.tif 000014
【図５】
0005609363.tif 000015
【図６】
0005609363.tif 000016
【図７Ａ】
0005609363.tif 000017
【図７Ｂ】
0005609363.tif 000018
【図８Ａ】
0005609363.tif 000019
【図８Ｂ】
0005609363.tif 000020
【図８Ｃ】
0005609363.tif 000021