(57)【特許請求の範囲】
【請求項１】
中央演算処理装置コア（５１）を有する中央演算処理装置（５０）と、システムバス（５３）と、インタフェース（６１）及び周辺機器（６２）を含む１つ又は複数の機能部分（６１、６２）と、前記中央演算処理装置（５０）の動作の妥当性確認を実行するように構成された欠陥処理装置（１１）とを備えている信頼性のあるマイクロコントローラであって、
前記欠陥処理装置（１１）は、前記中央演算処理装置コア（５１）とは異なるものであって、前記中央演算処理装置コア（５１）の外部にあり、
前記欠陥処理装置（１１）は、システムランタイム中の動作の少なくとも一部をオンラインで実行する少なくとも１つのモジュール（２２、２３、２４）を有していて、該モジュールは前記中央演算処理装置コア（５１）の動作の妥当性確認を実行して該マイクロコントローラの動作の信頼性を実現するように構成され、前記中央演算処理装置コア（５１）の動作の妥当性確認は、
−  データのシャドウデータ化、
−  コード及びフローの認証信号、
−  データ処理の妥当性チェック、
−  アドレスの妥当性チェック、
−  ＡＬＵの同時インテグリティチェック、及び
−  同時モード/割込チェック
からなる一組の欠陥保護技術群のうちの１つ又は複数のものを用いて実行され、
前記欠陥処理装置（１１）は、前記中央演算処理装置コア（５１）とのコアインタフェースモジュールを備えていて、該コアインタフェースモジュールは、前記中央演算処理装置のＡＬＵ書込ポートへのアクセスを可能にすることにより、又は埋込トレースモジュールインタフェースにより、前記欠陥処理装置（１１）と中央演算処理装置コア・埋込トレースモジュールインタフェースとのインタフェースをとり、
前記コアインタフェースモジュールは、前記中央演算処理装置コア（５１）のレジスタバンクおよびＡＬＵ／ＭＡＣの拡張された可視性を生じさせるようになっていて、前記中央演算処理装置コア（５１）は、メモリとレジスタとの間のデータ転送の可視性と、前記中央演算処理装置コア（５１）のＡＬＵの書込ポートへのアクセスの可視性とを生じさせ、
前記少なくとも１つのモジュールは、前記コアインタフェースモジュールから得られる前記可視性を用いて、前記中央演算処理装置コア（５１）のレジスタバンクのコピーを作成するためのシャドウレジスタモジュールを含み、
前記欠陥処理装置（１１）は、シャドウレジスタのより少ない数のビットを有するコード化されたコピーと協働し、前記中央演算処理装置コア（５１）のＡＬＵ／ＭＡＣの結果を同時にチェックする、前記中央演算処理装置コア（５１）のＡＬＵ／ＭＡＣの縮小バージョンを含み、
前記欠陥処理装置（１１）は、該マイクロコントローラ（１０）の前記機能部分（６１、６２）の動作の妥当性確認を実行するよう構成された１つ又は複数の追加のモジュール（２１）を含んでいることを特徴とするマイクロコントローラ。
【請求項２】
前記少なくとも１つのモジュールは、前記ＡＬＵ書込ポートを介して前記インタフェースモジュールにより、前記中央演算処理装置コア（５１）のレジスタバンクのコピーを作成するシャドウレジスタモジュールを備えていて、
前記欠陥処理装置（１１）は、前記中央演算処理装置コア（５１）のＡＬＵ／ＭＡＣの縮小バージョンを備えていることを特徴とする請求項１に記載のマイクロコントローラ。
【請求項３】
該マイクロコントローラは、動作の少なくとも一部をオンラインで実行するシステムモジュール（２１）を備えていて、
前記システムモジュール（２１）は、該マイクロコントローラ（１０）の前記機能部分（６１、６２）の動作の妥当性確認を実行するように構成され、
かつ、前記システムモジュール（２１）は、前記欠陥処理装置（１１）の他の内部モジュールを管理するグローバルスーパーバイザモジュールを備えていることを特徴とする請求項１に記載のマイクロコントローラ。
【請求項４】
前記システムモジュール（２１）は、第２の欠陥処理装置（５１１）又は外部監視装置と情報を交換するように構成された欠陥認識加速器インタフェース装置を備えていることを特徴とする請求項３に記載のマイクロコントローラ。
【請求項５】
前記欠陥認識加速器インタフェース装置は、欠陥認識加速器と前記中央演算処理装置コア・埋込トレースモジュールインタフェースとのインタフェースをとる埋込トレースモジュール（ＥＴＭ）インタフェースを備えていることを特徴とする請求項４に記載のマイクロコントローラ。
【請求項６】
前記中央演算処理装置コア（５１）の動作の妥当性確認を実行する前記少なくとも１つのモジュール（２２、２３、２４）は、前記欠陥保護技術を実行するように構成されたメイン保護モジュール（２２）を備えていることを特徴とする請求項５に記載のマイクロコントローラ。
【請求項７】
前記メイン保護モジュール（２２）は、
−  アプリケーションにより用いられる重要な変数のコピーを作成するように構成されたシャドウ変数モジュール、
−  所与の変数のための妥当性の値をチェックするように構成された妥当性変数モジュール、
−  コード認証信号に基づいて、ＣＰＵプログラムフロー内の欠陥を検出するように構成されたコード・フロー認証信号モジュール、
−  システムを安全状態に導くように構成された安全状態モジュール、
−  ＣＰＵレジスタセットのコピーを作成するように構成されたシャドウレジスタモジュール、
−  所与のアドレスに対する妥当性の値をチェックするように構成された妥当性ロード／ストア装置モジュール、
−  種々のタスクによりなされる、妥当性メモリアクセスをチェックする、マルチプロセスアプリケーションのためのタスクスーパバイザモジュール、
−  メモリ内の不完全な変数／レジスタ中の値を回復することにより欠陥修正を実行するように構成されたデータ再試行モジュール、及び
−  ＣＰＵの状態及びプログラムカウンタを回復することにより欠陥修正を実行するように構成されたプログラム再試行モジュール、
からなる一組のモジュール群のうちの１つ又は複数のものを備えていることを特徴とする請求項６に記載のマイクロコントローラ。
【請求項８】
前記中央演算処理装置コア（５１）の動作の妥当性確認を実行する前記少なくとも１つのモジュール（２２、２３、２４）は、前記中央演算処理装置コア（５１）及び前記システムバス（５３）とデータを交換するように構成されたＣＰＵインタフェースモジュール（２４）を備えていることを特徴とする請求項１〜７のいずれか１つに記載のマイクロコントローラ。
【請求項９】
前記ＣＰＵインタフェースモジュール（２４）は、前記欠陥処理装置（１１）と中央演算処理装置コア（５１）の整数コアの間のインタフェースを備えていて、該インタフェースは、拡張されたハードウェア可視性を確実化するために、前記整数コアとの専用バス接続を実行することを特徴とする請求項８に記載のマイクロコントローラ。
【請求項１０】
前記中央演算処理装置コア（５１）の動作の妥当性確認を実行する前記少なくとも１つのモジュール（２２、２３、２４）は、前記欠陥認識加速器／ＣＰＵインタフェースモジュール（２４）から到着したデータを処理するように構成され、前記メイン保護モジュールとデータを交換するＣＰＵモジュール（２３）を備えていて、
前記ＣＰＵモジュール（２３）は、
−  メモリマップの構成(アクセス許可、整列アクセス及び非整列アクセス等)と割り込み要求とを考慮して、発せられた割り込み及び例外が有効であってサーブされたか否かを同時にチェックするように構成されたＥＸＣ／ＩＮＴスーパバイザモジュール、
−  フラグ及びＣＰＵモード信号が有効であるか否かを同時にチェックするように構成されたモード/フラグスーパバイザモジュール、
−  ＣＰＵコアＡＬＵ／ＭＡＣの動作を同時にチェックするように構成されたＡＬＵ／ＭＡＣスーパバイザモジュール
−  ＣＰＵコア又はその一部分のＢＩＳＴを始動するように構成されたＢＩＳＴスーパバイザモジュール、及び
−  前記ＣＰＵにより実行されたコードの直近部分を格納し、現在のプログラムフローと比較して差異を検出し、キャッシュのソートを実現するように構成されたインストラクション予測モジュール
からなる一組のモジュール群のうちの１つ又は複数のものを備えていることを特徴とする請求項８又は９に記載のマイクロコントローラ。
【請求項１１】
二重冗長性システムを実現するために、前記中央演算処理装置コア（５１）と、動作の妥当性確認を実行するように構成された前記欠陥処理装置（１１）とが、第２の処理ユニット（５１１）と該第２の処理ユニット（５１１）の動作の妥当性確認を実行するように構成された第２の欠陥処理装置（５１１）とに接続されていることを特徴とする請求項１に記載のマイクロコントローラ。
【請求項１２】
欠陥認識周辺機器（１２、１３、１４、１５、１６）がメモリモジュール（１２）を備えていることを特徴とする請求項１〜１１のいずれか１つに記載のマイクロコントローラ。
【請求項１３】
欠陥認識周辺機器（１２、１３、１４、１５、１６）が欠陥許容メモリインタフェース（１３）を備えていることを特徴とする請求項１〜１０のいずれか１つに記載のマイクロコントローラ。
【請求項１４】
欠陥認識周辺機器（１２、１３、１４、１５、１６）が、該マイクロコントローラ（１０）のシステムバスを監視するバスインタフェースコントローラ（１４）を備えていることを特徴とする請求項１〜１３のいずれか１つに記載のマイクロコントローラ。
【請求項１５】
欠陥認識周辺機器（１２、１３、１４、１５、１６）が、アプリケーション特定周辺機器（５５）に関連付けられた簡素化されたプロセッサ（１６）を備えていることを特徴とする請求項１〜１４のいずれか１つに記載のマイクロコントローラ。
【請求項１６】
該マイクロコントローラの動作時に、前記欠陥処理装置（１１）が、オンライン欠陥許容動作を実行することを特徴とする、請求項１〜１５のいずれか１つに記載のマイクロコントローラにおける欠陥を検出する方法であって、
欠陥が検出されたときに欠陥アラーム及び欠陥イベントを生成することを特徴とする方法。
【請求項１７】
前記オンラインの欠陥許容動作が、
−  データのシャドウデータ化、
−  コード及びフローの認証信号、
−  データ処理の妥当性チェック、
−  アドレスの妥当性チェック、
−  ＡＬＵの同時インテグリティチェック、及び
−  同時モード/割込チェック
からなる一組の欠陥保護技術群のうちの１つ又は複数のものを実行することを特徴とする請求項１６に記載の方法。
【請求項１８】
コンピュータのメモリに直接ロードすることができるコンピュータプログラムであって、
該コンピュータプログラムがコンピュータ内で実行されているときに、請求項１６又は１７に記載の方法を実行するソフトウェアコード部分を備えていることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコントローラユニット（マイクロコントローラ）の信頼性を実現する技術に関するものであり、特に自動車システムにおいて起こり得る使用に留意して開発されたものである。
【背景技術】
【０００２】
このようなマイクロコントローラが使用される典型的なものは、アンチブロッキングシステム（ＡＢＳ）、トルクコントロールシステム（ＴＣＳ）及び自動操縦安定制御（ＴＳＣ）である。しかしながら、このことは、エックス・バイ・ワイヤ（x-by-wire）、インフォテインメント（infotainment）、生物医学アプリケーション、及び通信などを含む広範で様々なアプリケーションに対しても実際上適用可能な本発明の範囲を制限する意味で解釈されることにはならない。
【０００３】
以下の記述における「マイクロコントローラ」という用語は、広い意味、すなわち、アナログ・ディジタル並びにディジタル・アナログ変換器、ＣＰＵ、及びＣＰＵ周辺機器、メモリ、システムバス、内部又は外部センサ、及び／又はトランスデューサ、制御装置、計測装置、及び出力装置を含むシステム・オン・チップ（ＳＯＣを意図するものである。
【０００４】
また、本発明は、信頼性のあるマイクロコントローラの設計のための技術、及び対応するコンピュータプログラム（プログラム製品）に関連している。
【０００５】
近年、効率、安全性、性能、及び快適さのみならず、情報及びエンターテインメント性を向上させるマイクロエレクトロニックシステムの車両での実現が、かなり進展してきている。
【０００６】
こうしたマイクロエレクトロニックシステムは中央演算処理装置に基づくもので、欠陥検出手段が提供された強健なネットワークを用いて相互接続されている。こうした強健なネットワークにより、ワイヤリングルーム（wiring loom）製造に用いられる、何千もの高価で信頼性の低いワイヤ及びコネクタの必要性が排除されている。
【０００７】
もちろん、故障が致命的事故につながるので、こうしたシステムは信頼度が高くなければならない。しかしながら、車は、温度が広範囲に変化し、及び土、塩のスプレー、ほこり、腐食性流体、強い振動並びに突発的な衝撃、電気的な雑音、電磁波干渉にさらされる好ましくない環境にある。さらに、こうしたマイクロエレクトロニックシステムは、バッテリーを消費しないように駐車した際に、電力消費量がほぼゼロを示す必要がある。
【０００８】
これらの要件は、最も極端な状態でのシステムの振舞いが予測可能、及びフェールセイフであるように、ほぼ完全なシステムモデリング及び検証の要件と組み合わされなければならない。
【０００９】
結果として、自動車分野での複雑なシステム・オン・チップ（System-On-Chip）の使用は、消費者及び通信のアプリケーションと比べて、制限されている。
【００１０】
したがって、より短時間かつ最高の信頼度で、システム設計者による、さらに複雑なＥＣＵ（Embedded Computational Unit：埋込計算装置）の設計を補助することができる、設計プラットホームを持つことの重要性は明らかである。一般に、設計プラットホームに対する最重要要件は、以下の能力である：
‐  ハードウェア及びソフトウェアの標準化（standardization）を可能にする；
‐  顧客の要求に順応性がある；
‐  良好に規定されたフローで、クリーンコード及びスクリプト（clean codes & script）を生成する；
‐  オペレーティングシステムと容易にリンク可能である；
‐  サブブロック及びカスタムブロックの簡単な検証が可能である；
‐  アップグレードが可能である。
【００１１】
また、特に自動車アプリケーションに対しては、以下のことが重要である：
‐  迅速で簡単な方法によるスケーラビリティ（scalability）；
‐  詳細な検証を提供し、さらに検証のカスタマイズを可能にする；
‐  前段階(設計及び検証の双方)での欠陥に対して強健であり、欠陥注入（fault injection）を可能にする。
【００１２】
ここで、以下の記述のより良い理解を可能にするため、欠陥に対する強健さに関係した若干の定義を述べておく。
【００１３】
システムの加えられたサービスが、指定されたサービスから逸脱していることを一般に「故障」と呼ぶ。故障を導きやすいシステム部分状態の部分を「エラー」と呼ぶ。エラーの現象論的原因を「欠陥」と呼ぶ。「システムの信頼性」は、サービスを信頼することに正当性がある、加えられたサービスの品質と定義される。
【００１４】
信頼性は、以下の３つの量の測定に基づいて評価される：
‐  信頼性：１つの設備、又は構成要素が、規定時間及び指定環境条件下で、その意図された機能を満足に実行するという、ＭＴＴＦ（Mean Time To Failure：故障への平均時間）で定量化される確率；
‐  利用可能性：システムが、いかなる所与の時間でも正しく機能しているという、ＭＴＴＲ／ＭＴＴＦ（Mean Time To Repair：修復への平均時間)で定量化された確率；
‐  安全性：結果として（少なくとも）特定レベル、又は損失（すなわち、事故）となる、所望されない、及び計画にない出来事からの自由度。
【００１５】
信頼できるシステムを実現するために、以下の方法が、別々に、又は一緒に使用可能である：
‐  設計により、欠陥の回避を提供する欠陥回避；
‐  検証により、存在する欠陥の減少を提供する欠陥除去。この方法において、欠陥注入技術は基本的である；
‐  欠陥許容性、欠陥が存在しているにもかかわらず、正しい動作を提供する技術；
‐  評価により、欠陥の存在、及び生成、及び結果の推定を提供し、さらに欠陥の発生を停止させる先制ステップをとる欠陥予測又は欠陥回避。
【００１６】
以上の定義から、欠陥許容性それ自体が複合システムの信頼性の必要性を解決しないことは注意に値しない。例えば、欠陥許容性システムがフェールセイフとなることはない。したがって、以下では、その構成要素サブシステム又は部品に欠陥が存在している場合であれ、たとえシステム性能が減少しても、又は他の方法で欠陥が直るまで（ただし、常に安全な方法で）変更を加えても、機能し続けるシステムの能力と定義される、強健さの概念について論及することにする。欠陥に対して強健なシステムは、内部構造又は外部環境に変化があってもその機能を保つことになる。
【００１７】
従来技術から知られている解決法は、製造技術を強固にすることにより、放射に誘発されたソフトエラーの傾向を減少させること、又は冗長性の導入を提供することである：例えば、多数決原理を伴う三重フリップフロップ構造を実装することによる（Ｎモジュール冗長性）ゲートレベルで；又は、例えば、プロセッサの論理演算装置に若干のコード化導入することによるＣＰＵレベルで；又は、例えば、監視を伴うステップで実行される、複数のプロセッサを用いることによるマイクロコントローラレベルで；又は、例えば、複数のソフトウェアスレッド、又は上述の技術の全ての混合を用いることによるソフトウェアレベルで。
【００１８】
ゲートレベルでの技術強化及び冗長性は、領域、及び性能オーバーヘッド、及びＣＰＵ再設計時間などにより非常に高価である。
【００１９】
ＣＰＵレベルでの冗長性は、領域オーバーヘッドではさほど高価ではないが、ＣＰＵの再設計が必要である。
【００２０】
Ｎモジュール冗長性(Ｎ＝２、が最も使用されている、すなわち二重冗長性)を用い、又は動的冗長性を伴う、マイクロコントローラレベルでの冗長性は、最も使われている技術である。第１中央演算処理装置、及び第１処理装置と結合された第２処理装置を含む、二重冗長性マイクロコントローラ装置は、特許文献１から知られている。機能的比較モジュールは、第１出力が第２出力にマッチしない場合、欠陥を検出するために、第１処理装置の第１出力と第2処理装置の第２出力を比較するよう、第１処理装置及び第２処理装置に結合されている。機能的比較は、出力の認証信号の分析により実行される。認証信号は、ＣＰＵの内容の限られた可視性だけが利用可能となるよう、アイドルサイクルで計算されるか、又はテストシーケンスの結果として得られるか、又はＣＰＵ自体の外部アドレスとデータバスとに基づいて決定される。これは、欠陥カバー及びメモリ占有の観点から効率が悪い認証信号、及びエラー検出のより大きな待ち時間を頻繁にもたらしてしまう。
【００２１】
特許文献２で述べられているように、二重冗長性技術は、もちろん回路サイズ（少なくとも２倍）の大きな増加、及び生産コストのさらに大きな増加を含む。さらに性能は、より遅いクロック、増加されたゲートカウント、及び冗長性ソフトウェア含有の必要性により影響を受ける。
【００２２】
動的冗長性の技術もまた、プロセッサ、及び、プロセッサの不完全な振舞いを特定可能な欠陥検知器を必要とするのみであることが知られている。こうした技術は、コンピュータ資源のより高度な利用を許容してはいるが、良好な欠陥のカバーを達成するのに必要な計算処理が膨大となり、待ち時間をより長くしてしまう。この場合、最も一般的な解決策は、監視、又は、簡単な一貫性チェックのみを計算して、データ及びアドレスバスをモニターする、非常に簡単な欠陥検知器から成る。他の既知の解決策では、簡単な外部のコントローラと相互作用して、ＣＰＵ自体は信頼性問題の一部を扱うに留まることである：特許文献３では、マイクロコンピュータ及びモニタモジュールが開示されている。モニタモジュールは、マイクロコンピュータのシーケンス制御を実行する、ゲートアレイとして構成されているのが好ましい。モニタモジュールは、この処理結果の比較から、マイクロコンピュータの正しい、又は欠陥のある動作を決定する。
【００２３】
また、例えば、ソフトウェアレベルのみでの冗長性を導入した特許文献４の解決策が知られている。
【先行技術文献】
【特許文献】
【００２４】
【特許文献１】米国特許出願第2002/00777882号
【特許文献２】ドイツ特許出願第DE 19933086A1号明細書
【特許文献３】米国特許第5,436,837号明細書
【特許文献４】米国特許第5,880,568号明細書
【発明の概要】
【発明が解決しようとする課題】
【００２５】
しかしながら、こうした解決策は、欠陥検出タスクにより、マイクロプロセッサ性能に大きな影響を与えることになる。
【００２６】
したがって、本発明の目的は、コンピュータ資源及び回路サイズを最適化し、完全な信頼性を実現したマイクロコントローラを提供することである。
【課題を解決するための手段】
【００２７】
本発明によると、この目的は、請求項で詳述されている特徴を有する信頼性マイクロコントローラにより達成される。本発明はまた、信頼性マイクロコントローラを設計するための対応する方法のみならず、ディジタルコンピュータのメモリへ直接ロード可能で、製品がコンピュータで実行される際に本発明の方法を実行するソフトウェアコード部分を含む、コンピュータプログラム製品に関連している。
【００２８】
本発明に従う解決策は、実質的に、中央演算処理装置の動作を有効にする欠陥許容性処理装置を含むマイクロコントローラを提供する。欠陥許容性処理装置はまた、適切なインタフェース、及び欠陥許容性ハードウェアブロックを通して、チップ上に分配する欠陥許容性検出方法を実装する。また、欠陥許容性処理装置、インタフェース、及びハードウェアブロックを含むシステムの設計方法も提供されている。
【発明の効果】
【００２９】
従来技術の構成と比較すると、提案された解決策は、チップ上に要する領域オーバーヘッドを減少させ、中央演算処理装置内の欠陥の低い待ち時間制御を可能にし、さらにシステム・オン・チップ及びユーザの必要性に従って、完全かつ柔軟にカスタマイズ可能である。
【図面の簡単な説明】
【００３０】
【図１】本発明のマイクロコントローラのブロック図である。
【図２】図１のマイクロコントローラの細部のブロック図である。
【図３】本発明のマイクロコントローラの、更なる実施例を表すブロック図である。
【図４】ハードウェア検証構成要素に関連する、図１のマイクロコントローラの詳細を示す図である。
【図５】図４に示すハードウェア検証構成要素の更なる詳細を示す図である。
【図６】図１のマイクロコントローラの設計手順に関係するブロックを示すブロック図である。
【図７】図６の設計手順で用いられる欠陥注入手順を表すブロック図を示す。
【発明を実施するための形態】
【００３１】
本願明細書に説明されているマイクロコントローラの基礎となる基本的なアイデアは、欠陥に対する強健なシステムを有するよう、実行時間及びコードディメンション（code dimensions）において妥協することなく、許容し得るハードウェアオーバーヘッド（hardware overhead）で、チップ上の複雑なＣＰＵベースシステムの欠陥許容性を達成するために、ソフトウェアにより、ハードウェア冗長性が実行され、制御され、及び構成されることである。
【００３２】
本発明に従うマイクロコントローラは、特定の問題を監視すること、及び中央欠陥許容性プロセッサと通信することを要求される適切な回路を通して、モニターされるシステムのあらゆる部分に配分された欠陥許容性技術を実行する。しかも、その回路は、中央演算処理装置とは異なって外部にあり、換言すれば、それは二重中央演算処理装置ではなく、前記中央演算処理装置のコンピュータ資源の外部に、自律的コンピュータ資源を有している。こうした中央欠陥許容性プロセッサは、すべての周辺機器を調整し、システムの欠陥履歴の動向を保持する。
【００３３】
図１には、マイクロコントローラ１０のハードウェアアーキテクチャーを表すブロック図が示されている。
【００３４】
こうしたマイクロコントローラ１０は、基本的に、コプロセッサ５２に関連づけられた中央演算処理装置コア５１を含む、例えばＡＲＭプロセッサのようなＲＩＳＣ装置となり得るプロセッサ５０（中央演算処理装置）を含んでいる。プロセッサ５０はまた、データ記憶モジュール６４、インストラクションキャッシュメモリ６５、及びＡＭＢＡ（アドバンストマイクロコントローラバスアーキテクチャー（Advanced Microcontroller Bus Architecture）バスインタフェース）インタフェース６６を含んでいる。ＣＰＵシステムバス５３は、プロセッサ５０とインターフェースモジュール６１とを接続するために提供されており、モジュール６１は、とりわけ、汎用Ｉ／Ｏインターフェース、シリアルパラレルインターフェース、リアルタイムクロック、ＵＡＲＴ、タイマ、及び監視装置を含んでいる。これらのインタフェースは、参照番号６９によりまとめて示されている。
【００３５】
また、ＣＰＵシステムバス５３に接続した、ベクトル割り込みコントローラ６８も示されている。
【００３６】
こうしたＣＰＵバスシステム５３により、１組の周辺機器６２と通信することも可能になる。こうした１組の周辺機器６２には、アプリケーション特有周辺機器５５、アナログインタフェース５６、バスインタフェース５７、ダイレクトメモリアクセス（ＤＭＡ）モジュール５８、外部バスインタフェース５９、埋込メモリ６０が含まれている。インタフェースモジュール６１及び周辺機器６２の組はまた、その異なる装置を相互接続する適当な周辺バス６３を含んでいる。
【００３７】
上述の全ての構成要素は、マイクロコントローラアーキテクチャーにおける典型的なものであり、それの機能及び使用は、マイクロコントローラ設計の当業者によく知られているのであるため、詳細な説明はしない。
【００３８】
本発明に従うと、マイクロコントローラ１０は、欠陥認識加速器１１、すなわち、主な欠陥マネージャとして動作するプロセッサをさらに含んでいる。また、以下では、簡潔さのために、欠陥認識加速器（Fault-Recognition Accelerator）１１を、時折、その頭文字のＦＲＡＣとして言及することもある。こうした欠陥認識加速器１１は、異なる欠陥検出技術及び欠陥許容性技術を実装させる、多数のユーザ構成可能なモジュールにより構成されている。欠陥認識加速器１１、及び関連モジュール、及び周辺機器は、図１では、より容易に識別できるよう破線で示されている。
【００３９】
欠陥認識加速器１１はプロセッサ５０内に配置され、中央演算処理装置コア５１と通信する。欠陥認識加速器１１は、専用メモリ又は専用ポートを備えたＣＰＵメモリの一部でもよいプロセッサ５０内に配置された、欠陥認識メモリ１２と関連して動作する。欠陥認識メモリ１２は、欠陥認識加速器１１がその機能を実行するために必要とするコード、履歴トラック、及び他のデータなどのデータを格納する。
【００４０】
以下の記述部分でさらに詳述されているように、欠陥認識加速器１１は、システム全体及び他の欠陥許容性周辺機器を、システムバス５３及び他の専用信号を通して専門的に調査する別モジュールを含んでいる。欠陥認識加速器１１はまた、スタートアップ、及び周期的システム内蔵テストを導く。欠陥認識加速器１１は、システムレベルでの迅速な診断及び保守を可能にするよう、プロセッサコア５１、システムのＪＴＡＧポートの双方、のみならず直接バスインターフェイスを通してアクセス可能である。
【００４１】
完全な信頼性を達成するために、欠陥認識加速器１１は、中央演算処理装置コア５１の欠陥、又は欠陥認識加速器１１自身の欠陥に起因して、欠陥アラーム、及び、例外（exception）、プログラム再試行又はシステム停止などのイベント（events）を発生可能である。欠陥認識加速器１１は、常に、問題に反応して、危険なシステム状態を回避可能でなければならない。
【００４２】
また、欠陥許容メモリインタフェース１３は、プロセッサ５０内に含まれるデータメモリ６４、キャッシュメモリ６５、さらに周辺機器６２のセットに含まれる埋込メモリ６０及びＤＭＡモジュール５８などのメモリと接続するために、マイクロコントローラ１０上に提供される。欠陥許容メモリインターフェース１３は、異なるメモリ欠陥検出を実行する様々なユーザ構成可能なモジュール、及びエラー訂正コード（ECC: Error Correction Code）、ビルトインセルフリペア（Built-in Self Repair（BISR））などの欠陥許容性技術により構成される。
【００４３】
こうした周辺バス６３、又はＣＰＵシステムバス５３、又はＣＡＮバスなどの他の外部バスといったバスの保護のために、欠陥許容バスインタフェースコントローラ１４が提供される。
【００４４】
図１に見られるように、マイクロコントローラ１０の異なるモジュール及び装置と関連付けられた、ハードウェア検証構成要素１５（hVC: hardware Verification Component）も提供されている。したがって、図示されている実施例では、ハードウェア検証構成要素１５は、インタフェースモジュール６１、アナログインタフェース５６、及びバスインタフェース５７と関連付けられている。ハードウェア検証構成要素１５は、以下の図４及び図５に関して詳細に述べられている、検証プラットホームのシステムレベル検証要件、及び、対応する設計並びに検証手順から直接得られる、欠陥検出及び欠陥許容性技術を実行可能な、様々なユーザ構成可能なモジュールを含んでいる。
【００４５】
マイクロコントローラ１０はまた、アプリケーションの特定安全要件に対する特殊なプロセッサであるアプリケーション特定周辺装置５５に関連付けられた、リモート欠陥認識加速器１６を含んでいる。
【００４６】
欠陥認識加速器１１のハードウェアアーキテクチャーは、図２に示されている。欠陥認識加速器１１は、欠陥認識加速器１１に対する初期化／構成ブートルーチンを作成し、ＣＰＵコア５１と欠陥認識加速器１１自体との間の相互作用を容易にするよう、ユーザコードに挿入されるランタイム（実行時間）設定を抽出するソフトウェア処理である、欠陥認識コンパイラ１１１に関連付けられている。さらに、領域オーバーヘッドが問題となる場合、又はＣＰＵコア５１が適切な方法で欠陥認識加速器１１と接続できない場合、欠陥認識コンパイラ１１１はまた、同じ欠陥検出及び欠陥許容性機能を提供する欠陥認識加速器１１のモジュールと同様に、ユーザコードへ様々なソフトウェアモジュールを挿入可能である。
【００４７】
欠陥認識コンパイラに関連する欠陥認識加速器１１は、純粋な「回路指向」欠陥保護機構、すなわち、保護は、まずシステムの一部、及びアプリケーションに関連するデータの部分に適用される、の代わりに、混合された「データ及び回路指向」を利用する。この関連部分は、図６を参照して詳細に述べられる、システム・オン・チップの設計途中に、ユーザ自身、及び、図７を参照して詳細に述べられる、コード分析に対する若干の技術を通して、欠陥認識コンパイラ１１１の双方により特定される。
【００４８】
したがって、欠陥保護は、欠陥認識加速器１１内のハードウェア、及び欠陥認識コンパイラ１１１内のソフトウェアの双方に実装される技術の組み合わせにより得られる。
【００４９】
図２では、欠陥認識加速器１１及び欠陥認識コンパイラ１１１のための、こうしたモジュールが示されている。
【００５０】
したがって、欠陥認識加速器１１は、以下を含む：
‐  欠陥認識メモリ１２、バスインターフェースコントローラ１４、欠陥許容メモリインターフェース１３、ハードウェア検証構成要素１５などの欠陥認識周辺機器との相互作用、及び、参照番号７０でまとめて示される、クロック及び電源などの、基本システム構成要素との相互作用が必要なモジュールである、システムモジュール２１。さらに、システムモジュール２１は、欠陥認識加速器１１及びログラム監視装置の他の全ての内部モジュールの管理に必要な、基本モジュールを含んでいる。システムモジュール２１は、設計に関する限りＣＰＵ独立（CPU independent）と見なすことができる；しかしながら、これらはシステム構造全体に依存している；
‐  変数妥当性／デルタ値、コード＆フローの認証信号などの、メイン欠陥保護技術の実行に必要なモジュールである、メイン保護モジュール２２。これらのモジュールはＣＰＵ独立と見なすことができる；
‐  欠陥認識加速器／ＣＰＵインタフェースモジュール２４からのデータを処理し、メイン保護モジュールとデータ交換をするのに必要なモジュールである、ＣＰＵ総称モジュール２３。ＣＰＵ総称モジュール２３は、僅かにＣＰＵ依存（CPU dependent）である。すなわち、基本的アルゴリズムはＣＰＵ独立であるが、データの処理方法はＣＰＵファミリと交換可能である。
‐  ＣＰＵコア５１及びＣＰＵシステムバス５３とのデータ交換に必要なモジュールである、欠陥認識加速器／ＣＰＵインタフェースモジュール２４。モジュール２４は、ＣＰＵ依存である。
【００５１】
図２にはまた、異なるソフトウェアモジュールを含む、以下のように組織化された、欠陥認識加速器コンパイラ１１１が示されている：
‐  欠陥認識加速器１１の全ての基本機能を初期化し、オペラティブシステム１１６又はユーザーアプリケーションコード１１７により、独自にその周辺機器を初期化するのに必要なモジュールである、初期化モジュール１１２；
‐  オペラティブシステムとの相互作用に必要なモジュールである、オペラティブシステム相互作用モジュール１１３；
‐  例えば、オペラティブシステム１１６及びユーザーアプリケーションコード１１７に基づくランタイム認証信号など、欠陥認識加速器１１を構成するのに必要なモジュールである、アプリケーションコンフィグレーションモジュール１１４；
‐  欠陥検出及び保護技術を可能にするために必要なインストラクションを、アプリケーションコード１１７内へ挿入するのに必要なモジュールである、ランタイムモジュール１１５。以下の記述部分でより詳細に述べられているように、大部分のランタイムモジュール１１５は、欠陥認識加速器１１内に含まれるハードウェアモジュールに対応するものである。すなわち、例えば、領域オーバーヘッド規制、又は欠陥認識加速器／ＣＰＵインタフェースモジュール２４のインタフェース能力に起因して、対応する機能が、対応するハードウェアモジュールで実行されない場合に限り必要なものである。
【００５２】
欠陥認識加速器１１は、ＣＰＵコア５１の欠陥を検出するために、他のＦＲＡＣ周辺機器と連携して、マイクロコントローラの作動中、異なる時間に３つの主な異なる種類のタスクを実行する：
‐  パワーオン時のマイクロコントローラ欠陥予測：パワーオン後、欠陥認識加速器１１により実行される、一連のＢＩＳＴテスト又はＢＩＳＴ。こうしたＢＩＳＴは、欠陥認識加速器１１内で実行される自己矛盾のないソフトウェア、又は、そこに備えられた１つの専用ハードウェアであり、これらは、テスト中の機能性の最大割合をカバーするか、又は実際のアプリケーションに必要な、中心となる機能性のみをカバーするよう、焦点を合わせられる。欠陥認識加速器１１により実行されるＢＩＳＴ系列は、実質的に、欠陥認識加速器１１のＲＡＭ上の、パワーオン後に、その埋込欠陥許容メモリインタフェース１３を通して実行されるビルトイン自己テストを含んでいる。その後、欠陥認識加速器１１上のビルトイン自己テストが実行される。続いて、妥当性確認がＣＰＵコア５１上を通過し、ＣＰＵ  ＲＡＭビルトイン自己テストは欠陥許容メモリインタフェース１３を通して実行される。その後、ＣＰＵコア５１上のビルトイン自己テストが実行される。続いて、欠陥許容性周辺機器が、専用ハードウェア検証構成要素１５を通して有効にされる。その後、ＢＩＳＴ動作は、専用の欠陥許容性バスインタフェース１４を通して、バスインタフェース上で実行される。最終的に、上記の全てのステップを有効にパスした場合、「システムＯｋ」状態に達するよう、外部ＢＩＳＴ動作が立ち上げられる；
‐  マイクロコントローラオンライン欠陥予測：これは、すでに述べたＢＩＳＴの、システムランタイム中に実行される部分集合である。マイクロコントローラオンライン自己テストは、２つの方法で実行される：
‐  アイドルタイム中に、現状をセーブするシステムの残りにより、テストされるブロック（例えば、ＣＰＵ、又はＲＡＭ、又は周辺機器の１つ）を隔離することにより、さらに、対応するＢＩＳＴを実行し、そして最終的に初期状態を回復することにより；
‐  通常の動作中に、欠陥認識コンパイラが挿入可能（例えば、ループの間に）となり、現在使われていないＣＰＵの一部分内の並列能動テストを行うために、エキストラダミーがコード化される；
‐  オンライン欠陥許容性：これは、通常の動作中に欠陥を検出し、欠陥が発見された場合、データのシャドウデータ化、コード及びフローの認証信号、データ処理妥当性チェック、アドレスの妥当性チェック、ＡＬＵ同時保全性チェック、及び同時モード／割込チェックを含む一組の技術である。
【００５３】
以下では、オンライン欠陥許容性を実行する技術が、詳細に述べられている。
【００５４】
マイクロコントローラ内のどこにあろうとも、変数及びＣＰＵレジスタの双方に適用される際に、提案されたマイクロコントローラの動作に関連するデータのシャドウデータ化手順が実行される。
【００５５】
こうしたＡＲＭプロセッサであるＲＩＳＣプロセッサは、レジスタ動作に強固に基づいており、つまり、各データ転送がＣＰＵ内部レジスタの１つを通して実行される。プロセッサ５０のこうした欠陥を処理するために、欠陥認識加速器１１の一組のレジスタは、プロセッサ５０レジスタのシャドウコピーとして用いられ、これらのレジスタの拡張視程が、最初のものの実行に必要な拡張コア視程が利用可能でない場合、モジュール２１−２４を説明する際に詳細に述べられる、欠陥認識加速器・コアインタフェースと呼ばれるハードウェアＦＲＡＣモジュール又は欠陥認識加速器・コアソフトウェアインタフェースのいずれかを用いて得られる。
【００５６】
特に、こうした欠陥認識加速器・コアインタフェースを通して、欠陥認識加速器１１がプロセッサレジスターのうちの１つでの書込動作を検出する度に、それは書き込まれた値を対応するシャドウレジスタ内へコピーする。これはまた、欠陥予測のためにも実行される：ＣＰＵデータは、定期的に、欠陥認識加速器１１内に格納された、そのシャドウコピーと比較される。
【００５７】
メモリ内の欠陥、及び、いかなるＥＣＣ／ＢＩＳＲも使用していないデータ／インストラクションキャッシュに関して、欠陥認識加速器コンパイラ１１１は、ソースコードを分析し、各変数に対して、変数の寿命及び他の変数への機能的依存を考慮する信頼性ウエイトを計算する。このフェーズで実行される評価により、最も信頼性のある重要な変数のリストが特定される。その後、最も重要な変数の管理のために、欠陥認識加速器１１が構成され、それらの変数のマイクロコントローラ内での寿命を通して、変数を追い、そのシャドウを作成することになる。もちろん、ユーザも、どの変数を保護するかを選択可能である。
【００５８】
提案されたマイクロコントローラで実行される他の重要な技術は、プログラム及びフローサインオンラインモニターである。コード欠陥に対する強健さの実行のために、欠陥認識加速器１１は、プロセッサをオーバーローディングすることなく、ＣＰＵコア５１上で実行するコードのランタイムの認証信号を発生させ、計算された認証信号をコンパイル時に生成されたものと比較してチェックをする。欠陥認識加速器コンパイラ１１１を通して、欠陥認識加速器１１は、制御フロー、及び／又はデータ処理の認証信号のいずれかを扱うよう構成可能である。コンパイル処理中の制御フローの認証信号のために、ターゲットアセンブリコードは、無分岐ブロックに分割される。無分岐ブロックは、ジャンプを含まない１組の連続インストラクションである。この点で、欠陥認識加速器コンパイラ１１１は、異なるセクションにより構成された認証信号を計算する：
‐  ブロックの認証信号、すなわち、各無分岐ブロック内に含まれている全てのオペレーションコード（op-code）の認証信号。この認証信号は、自己矛盾のない非オーバーラッピングコードを用いてブロック内に含まれているインストラクションの動作コードをコード化することにより、コンパイラによって計算される；
‐  制御フロー正規表現。コンパイル時間中、制御フローグラフが計算され、したがって、以前のブロックを尊重する許可された経路についての情報は、各認証信号に含まれている。
【００５９】
実行時間に、欠陥認識加速器１１は、コード実行フローをモニターする。これは特に、リアルタイムで、無分岐ブロックの認証信号を計算し、及びチェックし、リアルタイムで実行されたプログラムフローをレファレンスと比較し、コンパイラ１１１により欠陥認識メモリ１２又は埋込ユーザコードのいずれかに格納される。このアプローチにより、そのハードウェア位置（メモリ、又はＣＰＵ）に拘わらず、コード欠陥をカバー可能となる。エラーの場合には、欠陥認識加速器１１は（可能ならば）欠陥の修復を試み、最後の無欠陥ブロックから実行フローを再開（再試行）する。したがって、各ブロックの始めに、欠陥認識加速器１１の視点から、欠陥認識加速器は、開始認証信号を認識し、この認証信号をランタイムコンピューティングに対する内部レジスタ内に格納する。ブロックの終端では、欠陥認識加速器１１は、(その認証信号を通して）ブランチインストラクション又は新しいブロックの開始かのいずれかを認識する。いずれの場合にも、ランタイムに生成された認証信号は、予想された結果と比較される。分岐が起こると、欠陥認識加速器は、次の動作が、対応するブロックに関連する許容認証信号のうちの１つであると認識する。したがって、エラーの場合には、異なる動作の実行が可能である：エラーをオペレーティングシステムに通知し、プログラムを再開し、以前のチェックポイントブロックへジャンプする。
【００６０】
提案されたマイクロコントローラ内の欠陥認識加速器１１は、データ処理妥当性チェック手順も実行する。以前のコード及びフローの認証信号機構により、コード欠陥の有効範囲が許容される：これは、オペレーションコードを認証信号シードとして用いることに起因し、非常に広い有効範囲でコード実行フローの任意の相違を引き起こす、誤翻訳データ、誤計算、一時的又は永久的欠陥を捕らえる。しかしながら、このエラー検出機構は、プロセッサで実行されているアプリケーションの重要な変数に保護を加えることにより、さらに強化することが可能である。シャドウデータ化されるメモリ変数を個別化するために欠陥認識加速器コンパイラ１１１により用いられる、同一信頼性ウエイト技術で、アプリケーションコードの最重要変数（プラス、ユーザにより選択されたもの）が以下のいずれかと選択可能及び結合可能となる：
‐  ランタイム実行中に欠陥認識加速器１１によりチェックされる、妥当性絶対値（すなわち、最大及び最小許容値）；
‐  同一変数上の以前の動作に関して評価される、妥当性デルタ値。こうした方法で、ＡＬＵ又はＭＡＣにより実行される、各単一動作の結果は、許容値の組に対してランタイムチェックされ、エラーの場合は、動作が繰り返され、又は実行が停止され得る；
‐  これらの変数を読込／書込可能な、妥当性文脈値、すなわち、タイムフレーム及び処理／タスク。
【００６１】
同一データ処理妥当性チェックは、ＣＰＵコア外にある変数、及び外界と交換される信号のための、ハードウェア検証構成要素１５により実行される。
【００６２】
他の重要な実行手順は、アドレス妥当性チェックである。各データ転送中に、欠陥認識加速器１１は、レジスタからメモリへの可視データ転送に基づく所与のアドレスのための、妥当性値（妥当性絶対値、デルタ値、及び文脈値）をチェックする。不一致が検出された場合、例外が発生する。これはまた、マルチプロセスアプリケーションで実行される：再びレジスタからメモリへの可視データ転送に基づき、欠陥認識加速器１１は、特に仮想アドレシングが使用されていない場合、様々なタスクによりメモリアクセス上でチェックを実行することができる。より詳細には、あるタスクが、非共有の、又は他のタスク領域へのアクセスを実行する場合に、例外が発生する。
【００６３】
また、ＡＬＵ同時保全チェック手順も提案されている。ＲＩＳＣ  ＣＰＵ内の他方のきわめて重要なブロックは、整数コア、特に、多くの場合積和演算（MAC: Multiply-and-Accumulate）装置を含む演算装置（ALU: Arithmetic Logic Unit）である。欠陥認識加速器１１は、ＡＬＵ／ＭＡＣ自身の完全なコピーを有することなく、ＣＰＵコアＡＬＵ／ＭＡＣの結果を同時にチェックするために、シャドウデータ化されたレジスタのコード化されたコピー（すなわち、より少ないビット数を伴う)で作動するＡＬＵ／ＭＡＣCの縮小バージョンを含んでいる。これを行うために、ＡＬＵ／ＭＡＣコア経路の拡張視程は、第１のものの実行を要する拡張コア視程が利用可能ではない場合、欠陥認識加速器・コアインタフェース（後に詳述）と呼ばれるハードウェアＦＲＡＣモジュール、又は欠陥認識加速器・コアソフトウェアインタフェース（後に詳述）のいずれかを用いて取得される。
【００６４】
提案されたマイクロコントローラでは、コード化は、合計、減算、及び乗算などの基本数学オペレータ、さらに、現代のＲＩＳＣプロセッサで実行されるような、回転、シフト、及び同様の論理動作のいずれかを維持するような方法で実行される。
【００６５】
同時モード／割込チェック手順も実装されている。通常の動作中、欠陥認識加速器１１は、フラグとＣＰＵモード信号を検査して、シャドウレジスタコンテンツに基づき、適切なモードが設定されているか否かを判断する。不一致が検出されると、例外が発生する。割込と共に、すなわち、許容されない際、又は正反対である際に割込が発生した場合、同一のチェックが実行される。
【００６６】
欠陥認識加速器１１及び関連する欠陥認識コンパイラ１１１に基づく同一回路アーキテクチャーが、例えば、図３に表示されるように、二重冗長性アーキテクチャーとして、標準的解決に同じ方法で適用可能であることは注目に値する。こうしたアーキテクチャーでは、欠陥認識加速器１１と関連して動作する中央プロセッサ５１は、それぞれの第２欠陥認識加速器５１１と関連して動作する、第２プロセッサ５５１と結合される。２つの欠陥認識加速器１１、５１１は、後に説明される欠陥認識加速器モジュール２１のうちの１つを用いて相互作用している。２つの欠陥認識加速器１１、５１１により取られた決定に基づき、現在処理装置のどれが選ばれているかを選択する比較装置５０１も含まれている。
【００６７】
以下には、欠陥認識加速器１１の一部となり得るモジュールが詳述されている。システムモジュール２１は、以下を含む：
‐  例えば、図３のＢＩＳＴ系列のスケジューリングなど、全ての欠陥認識加速器１１作動に対するメインコントローラ及びスケジューラである、グローバルスーパーバイザモジュール。それはまた、ＣＰＵシステムバス５３を通して、オペレラティブシステム及びユーザーアプリケーションコードと共有される、全ての欠陥認識加速器状況及び構成情報を含んでいる；
‐  プログラム監視モジュールは、ユーザによりソフトウェアアプリケーションに挿入されたイベントにより、さらに欠陥認識加速器コンパイラ１１１自身により自動的に挿入されたタイムウインドウイベントによりトリガ（起動）される、監視装置によって構成されている。欠陥認識加速器コンパイラ１１１により挿入されたイベントのために、タイムアウトイベントは、予想されるタイミングリミット（上及び下）を考慮に入れて計算される。タイムアウトイベントは、グローバルスーパーバイザモジュールのための、及び、以下に説明される安全状態モジュールへの、このモジュールの例外を発生させる；
‐  例えば、ハードウェア検証構成要素１５のインタフェースなど、欠陥認識加速器１１の周辺機器の全てのインタフェースを管理するモジュールである、欠陥認識加速器・周辺機器マネージャモジュール。ＣＰＵコア５１内でエラーが検出された場合には、周辺機器はコンパイル時に構成された安全状態に置かれることができ、また、周辺機器内でエラーが検出された場合には、グローバルスーパーバイザモジュール及び安全状態モジュールに報告される；
‐  追加システム欠陥検出が要件であるとき、又は多欠陥認識加速器アーキテクチャーが実行される場合に必要なモジュールである、ＦＲＡＣからＦＲＡＣへのモジュール。こうしたモジュールは、欠陥認識加速器が損なわれた場合の追加的保護を得るために、実質的に、内部欠陥認識加速器１１を、外部欠陥認識加速器（図３におけるように、階層的な欠陥強健システム、又は二重冗長性システム）又は外部監視装置と接続するブロックを含んでいる；
‐  デバッグ目的のために、ＪＴＡＧ又はＩＳ０９１４１インタフェースを通して、欠陥認識加速器１１から外界への全てのデータ転送を管理する、デバッグ・イフマネージャモジュール（Debug-If Manager Module）。
‐  欠陥認識加速器１１と欠陥認識メモリ１２との間の、全ての相互作用メモリを管理する、欠陥認識加速器・メモリマネージャモジュール；
‐  独立クロックソースにより与えられるクロック監視装置を含む、クロックスーパバイザモジュール。一例として、このモジュールは、欠陥認識アクセラレータ１１の内部又は外部にあってもよい遅いクロック振動子の、１周期内に含まれるシステムクロック数を数えることにより実行可能であり、さらに、監視装置は、一定のタイムウインドウの間のメインクロックの劣化、すなわち、クロックが所定の安全レベルより速いか、又は遅いかを検出可能である。タイムアウトイベントは、グローバルスーパーバイザモジュールに対するこのモジュールの例外を発生させ、遅いクロックは、フェールセイフ状態へシステムを駆動する安全状態モジュールの時間を計るのに使用される；
‐  外部パワーサプライレベル検出器、及びグローバルスーパーバイザモジュールから、共に安全なパワーアップ又はパワーダウンの必要性を指定する信号を受信する、スケジューラにより構成されたモジュールである、パワースーパバイザモジュール。使用可能になると、これは安全状態モジュールを始動させ、その後、システムのリセット及びクロックをスイッチオン（パワーアップ：power-up）し、又はスイッチオフ（パワーダウン：power-down）する安全な手順を提供する。スイッチオフの間も、このモジュールは、外部第2電源装置を作動させることが可能である。
【００６８】
メイン防護モジュール２２は、以下を含む：
‐  アプリケーションにより用いられる重要な変数のコピーを作り、レジスタからメモリへの、又はメモリからレジスタへの、可視データ転送（ロード／ストアインストラクション：Load/Store instruction）に基づき、こうした変数をアップデートする、シャドウ変数モジュール。シャドウ変数モジュールは、レジスタ転送へのメモリの不一致を検出する。不一致が検出されると、グローバルスーパーバイザモジュール、安全状態モジュール、及びハードウェア又はソフトウェアのいずれかのデータ再試行モジュールに対する例外が発生する。シャドウ変数モジュールは、保護される変数を選択するソフトウェアを通して構成可能である；
‐  レジスタからメモリへの、又はメモリからレジスタへの、可視データ転送（ロード／ストアインストラクション）に基づき、所与の変数（妥当性絶対値、デルタ値、及び文脈値）に対する妥当性値をチェックするモジュールである、妥当性変数モジュール。不一致が検出されると、グローバルスーパーバイザモジュール、及び安全状態モジュールに対する例外が発生する。妥当性可変モジュールは、保護される変数を選択し、妥当性値を評価するソフトウェアを通して構成可能である；
‐  欠陥認識加速器コンパイラ１１１により、コンパイル時に計算されたコード及びフロー認証信号に基づき、欠陥認識メモリ１２に格納されるか、又はユーザコードメモリ内に埋め込まれ、さらに、ランタイムインストラクションコードを用いてそれらのモジュール自体によりランタイムに計算されたコード及びフロー認証信号に基づくモジュールである、コード＆フロー認証信号モジュール。このモジュールは、ＣＰＵプログラムフローにおける欠陥を検出可能である。さらにモジュールは、それらがＣＰＵコア５１にロードされる際、インラインリテラル内の欠陥を検出可能である。不一致が検出されると、グローバルスーパーバイザモジュール、安全状態モジュール、及びプログラム再試行モジュールに対する例外が発生する；
‐  ソフトウェア信号により、又はグローバルスーパーバイザモジュールにより、又は上述の他のモジュールによりトリガーされると、システムを安全な状態に導く、すなわち、変数に安全な値を代入し、ＣＯＵ５１を止め、及び欠陥認識加速器１１のすべての周辺機器を安全な状態に置く信号を、欠陥認識加速器・周辺機器マネージャモジュールに送ることによる手順を開始することができる、安全状態モジュール。これはコンパイル時に構成される；
‐  ＣＰＵのレジスタバンクのコピーを作成し、及びメモリからレジスタへの可視データ転送（ロード／ストアインストラクション）に基づいて、さらに、欠陥認識加速器・コアインタフェースモジュールから利用可能な、ＡＬＵ書込ポートへのアクセスに基づいてそれをアップデートする、シャドウレジスタモジュール。その後、シャドウレジスタモジュールは、メモリ転送への最終レジスタを内部コピーのコンテンツと比較して不一致を検出する。内部結果とＡＬＵ書込ポート上の１つとの間に不一致が検出されると、グローバルスーパーバイザモジュール、安全状態モジュール、及びデータ再試行に対する例外が発生する。このモジュールは、保護されるレジスタを選択するソフトウェアにより構成可能である；
‐  レジスタからメモリへの可視データ転送（ロード／ストアインストラクション）に基づく、デルタ値、空間並びに時間文脈値に対する妥当性値をチェックするモジュールである、妥当性ロードストア装置（ＬＳＵ）モジュール。不一致が検出されると、グローバルスーパーバイザモジュール、及び安全状態モジュールに対する例外が発生する。このモジュールは、保護されるアドレスを選択し、妥当性値を評価するソフトウェアで構成可能である；
‐  マルチプロセスアプリケーションで用いられる、タスクスーパバイザモジュール。メモリ可視データ転送（ロード／ストアインストラクション）へのレジスタに基づき、これは、様々なタスク、特に仮想アドレシングが用いられていないときに、メモリアクセス上でのチェックを実行する。より詳細には、タスクが、非共有へのアクセス、又はグローバルスーパーバイザモジュール、安全状態モジュール及びプログラム再試行モジュールのために生成された他のものに対して実行する場合；
‐  欠陥検出以外に欠陥修正も必要であるときに用いられる、データ再試行モジュール。これは、シャドウ変数モジュール、又はシャドウレジスタモジュール、又は妥当性変数モジュールの結果に基づき、ＣＰＵポートを用いて、又はデータ再試行ソフトウェアモジュールと相互作用することにより、メモリ内の不完全な変数／レジスタの値を回復可能である；
‐  欠陥検出以外に欠陥修正も必要であるときに用いられる、プログラム再試行モジュール。これは、コード＆フロー認証信号モジュールの結果に基づき、ＣＰＵポートを用いて、又はプログラム再試行モジュールと相互作用することにより、ＣＰＵ状態及びプログラムカウンタを回復可能である。
【００６９】
欠陥認識加速器ＣＰＵ総称モジュール２３は、以下を含む：
‐  欠陥認識加速器１１とコプロセッサ５２との間のインタフェースから、又は欠陥認識加速器ＥＴＭ（Embedded Trace Module：埋込トレースモジュール）インタフェースから読み込まれたオペレーションコードを解読し、さらに他のモジュールへ解読された制御信号を提供する一般モジュールである、オペレーションコード解読モジュール；
‐  発せられた割り込み及び例外が有効でサーブされる場合、メモリマップ構成（アクセス許可、整列、及び非整列アクセスなど）及び割り込み要求を考慮して、絶え間なくチェックするモジュールである、Ｅｘｃ／Ｉｎｔスーパバイザモジュール。さらに、これは、例外の発生を考慮すべき場合（例えば、特権領域へユーザがアクセスしたことに起因）に発生しなかったことを検出する。欠陥が検出されると、グローバルスーパーバイザモジュール、及び安全状態モジュールに対する例外が発生する；
‐  シャドウレジスタモジュール、及び欠陥認識加速器ソフトウェアレジスタシャドウ化モジュールに基づき、及びＣＰＵから来る信号に基づき、フラグ及びＣＰＵモードを検査する、モード／フラグスーパバイザモジュール。不一致が検出されると、欠陥認識加速器グローバルスーパーバイザ、及び欠陥認識加速器安全状態モジュールに対する例外が発生する；
‐  他のモジュールによりチェックされるのではなく、装置間の欠陥を検出するために、ＣＰＵメモリ境界を伴うロードストア装置（ＬＳＵ）により生成されたアドレス、データ、及び制御信号を絶え間なく比較する、バウンダリスーパーバイザモジュール。不一致が検出されると、グローバルスーパーバイザモジュール、及び安全状態モジュールに対する例外が発生する；
‐  コード化された値（例えば、モジュール-3番号で動作する）上で実行される、最重要ＡＬＵ／ＭＡＣ動作を含むＣＰＵ整数コアの縮小コピーを作成する、ＡＬＵ／ＭＡＣスーパバイザモジュール。これは、シャドウレジスタモジュールへのアクセスを有し、さらに、欠陥認識加速器・コアインタフェースを通して取得された、コアのＡＬＵ書込ポート上で検出された結果をチェックする。内部結果とＡＬＵ書込ポート上の１つとの間に不一致が検出されると、グローバルスーパーバイザモジュール、及び安全状態モジュールに対する例外が発生する。この縮小モジュールに実装されていない動作で、欠陥検出が必要となる場合は、それらの動作は、欠陥認識加速器コンパイラ１１１による安全なインストラクション内で分解可能である；
‐  シャドウレジスタモジュールに基づき、ＣＰＵレジスタからコプロセッサへと転送されるデータが有効か否かをチェックする、コプロセッサスーパバイザモジュール。不一致が検出されると、グローバルスーパーバイザモジュール、及び安全状態モジュールに対する例外が発生する；
‐  ソフトウェア信号により、又はグローバルスーパーバイザモジュールにより、又はパワースーパバイザモジュールによりトリガーされると、ＣＰＵコア５１、又はその一部分のＢＩＳＴ（ビルトイン自己テスト）を始動可能な、ＢＩＳＴスーパバイザモジュール。不一致が検出されると、グローバルスーパーバイザモジュール、及び安全状態モジュールに対する例外が発生する；
‐  ＣＰＵコア５１により実行されたコードの直近部分を格納するキャッシュのソートを実行し、現在のプログラムフローと比較し、違いを検出する高度なモジュールである、インストラクション予測モジュール。不一致が検出されると、グローバルスーパーバイザモジュール、安全状態モジュール、プログラム再試行モジュール（ハードウェア又はソフトウェア）に対する例外が発生する。
【００７０】
欠陥認識加速器ＣＰＵ特殊モジュール２４は、以下を含む：
‐  欠陥認識加速器１１をＣＰＵ割り込み線へ接続する、欠陥認識加速器・ＩＮＴモジュール；
‐  欠陥認識加速器・ＣＯＰＲＯＣインタフェースモジュールは、欠陥認識加速器をＣＰＵコプロセッサ５２インタフェースへ接続する；
‐  欠陥認識加速器をＣＰＵコアＥＴＭインタフェースへ接続する、欠陥認識加速器・埋込トレースモジュール（ＥＴＭ）インタフェース；
‐  欠陥認識加速器１１をＣＰＵバス５３、６３及びインストラクションキャッシュメモリ、ＡＭＢＡバスなどのインタフェース信号に接続する、欠陥認識加速器・バウンダリーインタフェース；
‐  拡張ハードウェア視程（レジスタシャドウ化などのためのＡＬＵ書込ポートの視程など）を提供するために、欠陥認識加速器をＣＰＵ整数コアに接続する、欠陥認識加速器・コアインタフェース。
【００７１】
欠陥認識加速器コンパイラ１１１に関して、初期設定ソフトウェアモジュール１１２は、欠陥認識加速器１１のシステムに対する初期化に必要なコードを含んでいる。
【００７２】
オペラティブシステムとの相互作用に必要な、オペラティブシステム相互作用ソフトウェアモジュール１１３は、ランタイム、動的処理ＩＤで画像がマップされるアドレスなど、若干のオペレーティングシステムランタイム設定を備えた、欠陥認識加速器１１の構成に必要なコードを含む、オペラティブシステムドライバソフトウェアモジュールを含んでいる。さらに、モジュールは、他の統計値と同様に、欠陥認識加速器の欠陥状態を読み込むオペレーティングシステムがおそらく必要とする、若干のコードを含んでいる。この相互作用は、欠陥認識加速器状態情報をオペラティブシステムへ解放する。
【００７３】
欠陥認識加速器１１の構成に必要なアプリケーションコンフィグレーションソフトウェアモジュール１１４は、以下を含む：
‐  オペラティブシステム及びアプリケーションユーザーコードを伴う、欠陥認識加速器１１の構成に必要なコードを含む、ベースコンフィグレーションソフトウェアモジュール；
‐  コンパイル時に欠陥認識加速器コンパイラ１１１により計算される、コード＆フローの認証信号を伴う欠陥認識加速器の構成に必要なコードを含む、認証信号コンフィグレーションソフトウェアモジュール。
【００７４】
最終的に、すでに言及したように、ランタイムモジュール１１５は、その大部分が、すでに説明した欠陥認識加速器１１ハードウェアモジュールのハードウェアモジュールに対応するものであり、換言すれば、対応するハードウェアモジュール内で対応する機能が実現されない場合にのみ必要である。ランタイムモジュール１１５は、以下を含む：
‐  ハードウェアＥｘｃ／Ｉｎｔスーパバイザモジュールに対するソフトウェア対応物である、ＥＸＣ／ＩＮＴスーパバイザソフトウェアモジュール；
‐  プロセッサ構成（ブロック設定、メモリマッピングなど）を検査する必要があるコードを含む、ＣＰＵスーパバイザソフトウェアモジュール。欠陥が検出される場合、モジュールは、プログラム再試行モジュールとして、プログラムフローを回復可能である；
‐  タスクスーパバイザモジュールに対するソフトウェア対応物である、タスクスーパバイザソフトウェアモジュール；
‐  欠陥認識加速器・コアソフトウェアインタフェースは、欠陥認識加速器・コアインタフェースをハードウェアレベルで行うことの、ソフトウェアレベルでの模擬となるコードにより構成される。特に、必要ならば、内部コアレジスタのコピーが、欠陥認識加速器１１内に作成される；
‐  ハードウェアコプロセッサスーパバイザモジュールに対するソフトウェア対応物である、コプロセッサスーパバイザソフトウェア。
‐  ハードウェアＢＩＳＴスーパバイザモジュールに対するソフトウェア対応物である、ＢＩＳＴスーパバイザソフトウェアモジュール；
‐  ハードウェアデータ再試行モジュールに対するソフトウェア対応物である、データ再試行ソフトウェアモジュール；
‐  ハードウェアプログラム再試行モジュールに対するソフトウェア対応物である、プログラム再試行ソフトウェアモジュール。
【００７５】
欠陥認識加速器 11の周辺機器に関して、欠陥許容メモリインターフェース１３は以下を含む：
‐  外部メモリをラップし、オンラインビルトイン自己テストを、さらに、必要ならばオンラインビルトイン自己修復を実行するために、そのコンテンツをコード化する、欠陥認識装置Ｆ−ＲＡＭモジュール；
‐  外部メモリをラップし、オンラインビルトイン自己テストを、さらに、必要ならばオンラインビルトイン自己修復を実行するために、そのコンテンツをコード化する、欠陥認識装置Ｆ−ＲＯＭモジュール；
‐  アドレス及びデータ欠陥をチェックするために、外部メモリＤＭＡコントローラをラップするブロックを含む、欠陥確認Ｆ−ＤＭＡモジュール。
【００７６】
バスインタフェースコントローラ１４は、以下を含む：
‐  バスシステム５３のように、メインＡＨＢ（Advanced High-performance：高度な高性能バス）バス上で伝送されるデータをチェックするために、冗長コード化されたＡＨＢバスを用いる、ＡＨＢモジュール；
‐  周辺バス６３のように、メインＡＰＢ（Advanced Peripheral Bus：高度な周辺バス）バス上で伝送されるデータをチェックするために、冗長コード化されたＡＰＢバスを用いる、ＡＰＢモジュール；
‐  ＣＡＮバスモジュールに対する特殊レベルの欠陥検出の及び修正を実行するＣＡＮモジュール。
【００７７】
上述のように、ハードウェア検査構成要素15は、配分される欠陥許容性技術を、残りのインタフェース及びマイクロコントローラ１０のセンサへ適用するために用いられる。
【００７８】
ハードウェア検査構成要素１５は、図６及び図７を参照して説明される設計法でいられる、スペックマンエリート（SpecMan Elite）ｅ−検査構成要素（eVC: e-Verification Component）の基本的監視機能のハードウェア実現として考慮可能である。
【００７９】
ハードウェア検査構成要素１５は、モニターされるモジュール関数の逆関数とみなすことができる。図４は、共にシステムバス５３に接続され、直接第１出力に接続される、一般的な周辺機器ＰＨＹに関連づけられるハードウェア検査構成要素１５の例を示している。
【００８０】
周辺機器ＰＨＹは、３つの出力信号を生成する：クロックＣ、及び２つの出力Ａ、Ｂ。周辺機器ＰＨＹでの主な規制は、Ａの変化からの３サイクル後に、出力Ｂが変化してはならない。この条件をチェックする「ｅ」言語要素は以下の通りである：
＜式＞  Expect @A_rise ＝＞｛[1..3]；@B:rise｝else PHY_error
【００８１】
このようにして、現在周辺機器ＰＨＹの出力ポートを駆動しているソフトウェア又はハードウェアの修正と関わりなく、妥当でない状況下でエラーが発生し得る。その後エラーは、欠陥認識加速器１１により集められ、管理される。
【００８２】
この種類の「ｅ」言語要素は、監視装置及び比較装置を備えた、ハードウェア検査構成要素１５のハードウェア内に容易に実装できる。周辺機器ＰＨＹの他側は、代わりにシステム検査手順により検査される。
【００８３】
ハードウェア検査構成要素１５の複雑さは、検査される信号の複雑さにより、容易に増大されてしまうのは明白である。しかしながら、また、妥当でない出力構成のランタイム検査を可能にすることにより、ハードウェア検査構成要素１５を利用する手順がシステムの信頼性を増加し得ることもまた明白である。さらに、ハードウェア検査構成要素１５は、システム検査に使用されるｅＶＣ構成要素から始め、監視装置、状態マシン、サンプラなどのライブラリを用いて、自動的に生成可能である。ｅＶＣ及びハードウェア検査構成要素１５の同一検査手順への統合は、プラットホーム環境での標準化された設計のための強力なツールとなり得るものである。
【００８４】
ハードウェア検査構成要素１５には、適当なｈＶＣ設計キット、すなわち、以下を用いることにより、ハードウェア検査構成要素内のｅ−言語検査規制を翻訳するソフトウェアツールが供給されている：
‐  図５を参照して詳述されている、１組のｈＶＣ基本モジュール；
‐  ＰＷＭ、タイマなどの標準ブロックに対する、プレコンパイルハードウェア検査構成要素のｈＶＣライブラリ。
【００８５】
図５に示されるように、欠陥認識加速器１１は、モジュール２１に属する欠陥認識周辺機器マネージャモジュールを通して、アクチュエータ６０６をモニターする基本ハードウェア検査構成要素１５、及びセンサ６０７をモニターするハードウェア検査構成要素１５'と通信する。
【００８６】
ハードウェア検査構成要素15は、以下を含む：
‐  所与のインタフェースに対してハードウェア検査ブロック１５のハードウェア検査チェック装置を埋め込む、ハードウェア検査チェック装置モジュール６０４；
‐  所与のインタフェースに対してハードウェア検査構成要素１５のハードウェア検査ＢＩＳＴ装置を埋め込む、ハードウェア検査ＢＩＳＴモジュール６０５；
‐  欠陥認識加速器１１とハードウェア検査構成要素１５とを安全に接続し、コンフィグレーション値を受け取り、欠陥認識加速器１１へ実行／非実行信号を供給し、欠陥認識加速器１１からのコマンドを受け取り、欠陥認識周辺機器マネージャモジュールと相互作用する、ハードウェア検査インタフェースモジュール６０１；
‐  ハードウェア検査構成要素１５全体のマネージャであり、必要ならば制御されたインタフェースを安全な状態に置く働きをする、ハードウェア検査マネージャモジュール６０２；
‐  例えば、中央演算処理装置５１信号、及びハードウェア検査構成要素１５信号などの、システム信号間で選択するために用いられる安全なマルチプレクサー構造である、ハードウェア検査・ＭＵＸモジュール６０３；
‐  コンパイル時又は設計時に、例えば、インタフェースなどに対する選択／命令妥当性・デルタ・文脈チェックをするなど、ハードウェア検査構成要素１５のモジュールを構成するために必要な全機能を実行する、ハードウェア検査コンフィグレーションソフトウェアモジュール。このモジュールは、すでに欠陥認識コンパイラ１１１に対して説明した、初期化ソフトウェアモジュールの一部である。
【００８７】
図５から分かるように、センサ６０７のためのハードウェア検査構成要素１５'は、ハードウェア検査ＢＩＳＴモジュール６０５を必要としない。
【００８８】
上述のように、欠陥認識アクセラレータ１１及びその周辺機器を含むマイクロコントローラ１０は、所望のシステム信頼性を実現させるために、欠陥回避技術及び欠陥排除技術を適用可能な設計手順を用いることにより設計される。こうした設計手順は、機能検査のみならず、同一の設計検査フロー内に統合される設計レベルにおける、欠陥モデル化、欠陥注入、及び欠陥予測を含んでいる。
【００８９】
提案された設計手順は、指定された振舞いに対するシステムの欠陥許容性をテストする、すなわち、設計されたシステムの欠陥に対する強健さを確認し、及び推定するために、設計内に欠陥を注入する、欠陥注入法を含んでいる。
【００９０】
提案された欠陥注入法と関連して、ここでは、ベリシティスペックマンエリート（Verisity Specman Elite）ツールに基づくｅ−欠陥と呼ばれる手順について説明する。こうした手順は、装置レベル（すなわち、ＲＴＬ又はゲートレベル）及びシステムレベルの双方における、全ての欠陥についてテスト可能である。
【００９１】
要約すると、提案された、マイクロコントローラに基づく埋込計算装置（ＥＣＵ）の設計及び検査手順は、主に以下の構成となっている：
‐  プラットホーム構成要素のための１組のｅＶＣ構成要素。これらの構成ブロックを用いて、システムレベル態様を検査するために、より複雑なｅＶＣが構成可能である；
‐  ＣＰＵ検査手順。これは主に、ユーザ規制及び有効範囲分析装置からのフィードバックの双方に基づく、コーナーケースインストラクション系列を生成する、規制駆動テストジェネレータにより構成される；
‐  スペックマンエリート（SpecMan Elite）の能力を用いて実行される欠陥注入装置；
‐  典型的なシステム状況、特に、マルチプロセッサＣＡＮ／ＴＴＰP装置、欠陥モデルなどのような自動車のシステム状況のデータベース。
【００９２】
こうした設計手順は、自動車システムのための設計フローと容易に統合可能であり、結果として図6で表わされるようなフローをもたらす。ここで：
‐  ステップ３０１は、仕様を考慮することを表す；
‐  ステップ３０２は、システム定義を表す；
‐  ステップ３０３は、システム分割及びシミュレーションを表す；
‐  ステップ３０４は、欠陥許容性システム定義を表す；
‐  ステップ３０５は、ＥＣＵ設計を表す；
‐  ステップ３０６は、ＥＣＵ検査を表す：
‐  ステップ３０７は、欠陥注入を伴うシステム検査を表す；
‐  ステップ３０８は、最終的な実装を表す。
【００９３】
最高水準でのシステム定義３０２、システム分割、及びシミュレーション３０３は、シミュリンク／マットラボ（SimuLink/Matlab）環境で実行されるが、ＥＣＵ設計３０５、ＥＣＵ検査３０６、及びシステムシミュレーション／欠陥注入３０７ステップは、提案された設計及び検査手順において実行される。特に、以下のステップは本発明に関連する：
‐  欠陥許容性システム定義３０４：このステップは、ＲＴＯＳ（リアルタイムオペレーティングシステム）、及び、ソフトウェアフェーリャーモード（Software Failure Modes）及びエフェクツアナリシス（Effects Analysis）などのような、標準ハザードアナリシス（Hazard Analysis）技術を用いて、シミュリンク（SimuLink）環境で始動するシステムレベルの双方で実行可能である。その後、例えば、フェールサイレント又はフェールセイフの振舞いの定義などのような基本的ニーズが定義されると、これらの選択は、例えば、各システム構成要素のための欠陥認識加速器１１ハードウェア／ソフトウェア統合のレベル、欠陥認識加速器メモリ１２の大きさなどを定義することにより、設計手順内のＥＣＵ設計レベルで実行可能である。
‐  ＥＣＵ設計３０５及び検査３０６：システム分割及び欠陥許容性技術の定義の後、ｅＶＣ及び欠陥注入と共に、各ブロックを設計並びに検査可能である；
‐  欠陥注入を伴うシステム検査３０７：完成したシステムは欠陥に対して検査可能であり、さらに欠陥許容性選択をシステムレベルで有効にすることができる。
【００９４】
設計手順のモジュール化度、さらに、欠陥許容性戦略をシステム仕様と一緒に検査する可能性の双方が、欠陥回避及び欠陥除去時間の劇的な削減により設計時間を大幅に短縮することは注意に値する。
【００９５】
ここで、欠陥注入ステップ３０６、３０７の実行手順を説明する。こうした手順は、商標つきの高レベル「ｅ」言語で書かれた、上述の再使用可能なｅ−検査構成要素ｅＶＣを提供する検査技術である、ベリシティー（Verisity）社製のスペックマンエリート（SpecMan Elite）検査ツールに基づく。ｅＶＣｓは、その内部に検査刺激及び予想された結果を組み込む。この検査技術の利点は、ｅＶＣｓの携帯性及び再使用可能性である。
【００９６】
図７は、テスト中のシステム４１０が、普通のSpecMan Elite検査ツールを動作させるｅＶＣデータベース４１２から、及びｅ−欠陥注入装置４００から入力データとして受け取る、一般的テストベンチ４１１を通してテストされる、前記検査ツールを概略的に表わしている。こうしたｅ−欠陥注入装置４００は、欠陥データベース４０６を含んでいる。こうした欠陥データベース４０６は、追加欠陥パッケージ４０５で拡張され、又は欠陥モデル化装置４０によりユーザによってカスタマイズされる。ｅ−欠陥注入装置４００は、テスト中のシステム４１０内へ注入される欠陥を選択及び圧縮可能な欠陥リスト生成装置４０７、高度な欠陥注入アルゴリズムを備える欠陥注入装置エンジン４０２、及び欠陥感度測定用試験台４１１へ標準テストパターンを提供するテスト生成装置４０３、及び欠陥効果上に統計を有するための詳細な欠陥分析装置４０１をさらに含んでいる。ＩＥＣ６１５０８チェック装置４０８は、電子装置の安全性の重要な設計に対して規範的なＩＥＣ６１５０８とコンプライアンスを検査するために、出力４１３上で実行される。
【００９７】
欠陥データベース４０６は、以下の基本欠陥モデルを含んでいる：
‐  固着、開放ライン、不確定、不足、ブリッジング、グリッチ、及びビットフリップなどの、基本「ビットレベル（bit-level）」モデル；
‐  基本メモリ欠陥モデル（ＳＲＡＭ、ＲＯＭなど)；
‐  クロック／電力線での欠陥；
‐  可変欠陥、ブランチ／ケース条件変異体など、より高レベルの抽出（例えば、純粋な振舞い）における、拡張「ビットレベル」欠陥モデル。
【００９８】
加えて、特別な欠陥パッケージ４０５は、高度な放射影響欠陥モデル（ＳＥＵパッケージ）、バスプロトコルに対する典型的欠陥モデル（ＣＡＮ、ＯＣＰ、ＡＭＢＡ欠陥を伴うＢＵＳパッケージ）、ディジタル規格における欠陥（ＡＰＢ／ＡＨＢスレーブを伴うＣＰＵパッケージ）、高度なメモリ構成（Ｆｌａｓｈ、Ｄ−ＲＡＭを伴うＭＥＭパッケージ）、ＡＲＭプロセッサのための欠陥モデルを伴うＡＲＭパッケージ（すなわち、対応するマイクロコードの改良を通してインストタクションに欠陥を挿入するモデルを伴うなどにより実現される。
【００９９】
特注の欠陥モデルを追加するために、欠陥モデル化装置４０４も提供されている。モデルは、完全に構成可能であり、メインパラメータは、欠陥に対する物理的パラメタ（形状、持続時間、振幅、基数など）、欠陥頻度、欠陥確率分布である。
【０１００】
欠陥リスト生成装置４０７は、欠陥リストを生成し、それを静的及び動的崩壊アルゴリズムに基づいて崩壊させ、シミュレーション時間を減少させるために含まれている、プリプロセッサである。ユーザはまた、欠陥リスト生成のために注入されて、冗長性規制を加えるためにシステムの部品を制御することができる。
【０１０１】
テスト生成装置４０３は、装置指向欠陥注入のための作業負荷を生成可能であり、又は、より一般的には、任務作業負荷ではカバーされない被テスト装置部分をカバーする、任務指向欠陥注入の欠陥有効範囲を増加させることが可能である。
【０１０２】
欠陥注入装置エンジン４０２は、システムに欠陥を注入するアルゴリズムを実現する、ｅ−言語で書かれているエンジンである。ユーザは、例えば、ランダム選択、擬似ランダム、確定的欠陥注入などにより、欠陥注入を制御可能である。
【０１０３】
欠陥シミュレーションの結果は、基本比較規則（サンプルポイント、ＩＯ値などでの装置状態など）、及びユーザ定義の比較規則を用いて、欠陥分析装置４０１により分析される。欠陥分析装置４０１は、実行されたシミュレーションについての情報を格納する収集装置モジュールを含んでいる。この情報は、例えば、注入された欠陥のいくつが良好に許容されたか、及びいくつがエラーを発生させたかなど、グラフィカルな方法で組織化され、さらに、各グラフ表示は欠陥タイプ、システムブロックなどのためにプロットされる。結果は感度、ＦＩＴレート、伝播／検出／回復待ち時間で測定される。
【０１０４】
最終的に、ＩＥＣ６１５０８チェック装置４０８は、ＩＥＣ６１５０８ノルム（バス、ＣＰＵ、クロックなどに対する欠陥など）により定義される標準欠陥の注入を可能とするために含まれる。そして、欠陥の分析が、ＩＥＣ６１０５８安全統合レベル要件を達成する。
【０１０５】
本願明細書で開示された装置により、既知の解決策より顕著な利点を得ることが可能となる。
【０１０６】
欠陥に対して強健なシステムを設計するために、ソフトウェアにより制御され、及び構成されるハードウェア冗長性を実装し、ハードウェアならびにソフトウェアのアプローチを混合して用いることにより、実行時間、及びコードの大きさにおける妥協のない、許容し得るハードウェアオーバーヘッドを伴う、複雑なCPUベースのシステム・オン・チップ欠陥許容性が実現可能となる。
【０１０７】
本発明に従うマイクロコントローラは、有利にも完全に構成可能な非対称冗長性に基づいており、二重又は多重冗長性と比べ、領域オーバーヘッドを著しく減少させる。その限られた領域オーバーヘッドにより、こうしたマイクロコントローラは、最高度の強健さを有し、回復不能な内部故障の確率が無視し得るものとなるよう、ゲートレベル欠陥許容性技術（装置状態での三重モジュール式冗長性フリップフロップなど）で構築可能である。
【０１０８】
これは、本質的に、欠陥許容性技術及び関連回路がマイクロコントローラの全ての部分に配分され、特定の問題を監視し、さらに、全ての周辺機器を調整しシステムの欠陥履歴の動向をおさえている中央耐欠陥プロセッサと通信する、配分された欠陥許容性アプローチである。中央欠陥許容性プロセッサとＣＰＵとの厳密な相互作用により、システムはまた、待ち時間の短い、すなわち、エラー伝播を回避するよう、さらに早期の安全システム回復が可能となるよう、欠陥がすぐさま捕獲される、欠陥検出システムでもある。最終的に、システムは、カスタマイズされ、及びカスタマイズが可能である：その厳密なハードウェア・ソフトウェア相互作用により、必要とするのと同程度の欠陥許容性を含む、アプリケーションコードの部分、又は変数の組、又は保護される周辺機器を構成するために、アプリケーション及びオペラティブシステム設計者に、多くの可能性を与えることになる。
【０１０９】
本発明の基本原理に反しない限り、詳細及び実施例は、単なる例として述べられてきた、そして、請求項により定義された事柄に関して、本発明の範囲から逸脱することなく、変更可能、それもかなり変更可能である。
【０１１０】
本願明細書で開示される装置の主要な応用分野は、自動車のアプリケーションのためのマイクロコントローラ、又はシステム・オン・チップであるが、本発明の範囲が、中央演算処理装置、及びシステムバス、及び、インタフェース並びに前記中央演算処理装置の操作の妥当性確認の実行に適当な、更なる欠陥処理装置が提供される周辺機器を含んだ1つ以上の機能的部分を備えた、マイクロコントローラを含む全てのシステム内での信頼性の実現にまで拡張されることは明白である。
【０１１１】
例えば、安全アプリケーションに関しては、本発明は、安全クリティカルシステム（自動車、航空宇宙、及び生物医学など）に適切であるのみならず、高速通信又は高度マルチメディアシステムなどの信頼性又は可用性のクリティカルシステムにおいても適切である。
【０１１２】
システムが強健であるべき欠陥については、本発明は、特定種類の欠陥に制限されることはない。本発明は以下のいずれをも処理するものである：
‐  機械的欠陥、すなわち、システム内に電子欠陥を引き起こすとすぐに、劣化（摩耗、疲労、腐食）、又はショック（破砕、締めつけ、オーバーロード）に起因する；
‐  電子欠陥、すなわち、それらが欠陥検出機構により検出されるとすぐに、さらに、設計上の欠陥に関係して、それらがアプリケーションコードに関して、妥当でない実行フロー、及び／又は妥当でない動作コード処理、及び／又は重要な変数の非妥当性値を引き起こすとすぐに、製造欠陥の待ち時間（回路の被蓋部での固着）、又は動作環境（放射、雑音、熱、ＥＳＤ、エレクトロマイグレーション）に起因する；
‐  ソフトウェア欠陥（コンパイラ内のものを含む）、すなわち、アプリケーションコードに関して、非妥当性実行フロー、及び／又は非妥当性動作コード処理、及び／又は重要な変数の非妥当性値を引き起こす場合には、設計上の欠陥、又は「コードロット」(例えば、ランタイム欠陥の蓄積)。ソフトウェア欠陥も検出され、それらが周辺機器において妥当でない変換を引き起こす場合。
【０１１３】
さらに、本発明は、永久的な欠陥のみならず、一時的又は間欠的な欠陥も検出可能である。一時的欠陥に関しては、現代のＤＳＭ技術において、一時的欠陥（多くの場合、ソフトエラーと呼ばれる）が非常に頻繁に起こる場合があるため、注意に値する。ソフトエラーレート（ＳＥＲ）は、伝統的に、核及びスペース共同体に関係していたが、それはますます消費者や通信製品の半導体会社並びに設計者を悩ませている。
【０１１４】
１．  中央演算処理装置（５０、５１）と、システムバス（５３）並びにインタフェース（６１）及び周辺機器（６２）を含む1つ以上の機能部分（６１、６２）と、前記中央演算処理装置（５０、５１）の動作のバリデーションの実行に適した更なる欠陥処理装置（１１）と、を含む信頼性マイクロコントローラであって、
前記更なる欠陥処理装置（１１）は、前記中央演算処理装置（５１）に関して異なり、外部にあり、
前記更なる欠陥処理装置（１１）は、少なくとも部分的にオンラインで動作し、前記中央演算処理装置（５１）の動作のバリデーションを実行するよう構成された、少なくとも１つのモジュール（２２、２３、２４）を含み、さらに、
少なくとも部分的にオンラインで作動し、前記マイクロコントローラ（１０）の他の前記機能部分（６１、６２）の動作のバリデーションを実行するよう構成された、１つ以上のモジュール（２１）を含んでいる、
ことを特徴とする信頼性マイクロコントローラ。
２．  前記他の機能部分（６１、６２）の動作のバリデーションを実行するのに適した前記１つ以上のモジュール（２１）が、前記更なる欠陥処理装置（１１）に関連付けられた欠陥認識周辺機器（１２、１３、１４、１５、１６）と相互作用するのに適し、ベーシックシステム構成要素（７０）と相互作用するのに適し、更なる欠陥処理装置（１１）の他の内部モジュールを管理するのに適した、システムモジュール（２１）を含むことを特徴とする、１．のマイクロコントローラ。
３．  前記システムモジュール（２１）が、前記更なる欠陥処理装置（１１）の他の内部モジュールを管理するグローバルスーパーバイザモジュールを含むことを特徴とする、２．のマイクロコントローラ。
４．  前記システムモジュール（２１）が、第２欠陥処理装置（５１１）又は外部監視装置と情報を交換するのに適当なＦＲＡＣからＦＲＡＣへのインタフェース装置を含むことを特徴とする、３．のマイクロコントローラ。
５．  前記更なる欠陥処理装置（１１）が、以下の欠陥保護技術の１つ以上を用いることにより、記中央演算処理装置（５１）の操作のバリデーションを実行していることを特徴とする、１．から４．のいずれかのマイクロコントローラ：
‐  データのシャドウ化;
‐  コード及びフローサイン；
‐  データ処理リーガリティチェック；
‐  アドレッシングリーガリティチェック；
‐  ＡＬＵ同時リーガリティチェッキング；
‐  同時モード／割り込みチェック。
６．  前記中央演算処理装置（５１）の動作のバリデーションを実行する、前記少なくともモジュール（２２、２３、２４）が、前記欠陥保護技術を実行するのに適したメイン保護モジュール（２２）を含むことを特徴とする、１．から５．のいずれかのマイクロコントローラ。
７．  メイン保護モジュール（２２）が、以下のモジュールうちの１つ以上を含むという特徴を有する、６．のマイクロコントローラ：
‐  アプリケーションにより用いられる重要な変数のコピーを作成するのに適したシャドウ変数モジュール；
‐  所与の変数に対するリーガル値をチェックするのに適したリーガル変数モジュール；
‐  コードサインに基づくＣＰＵプログラムフロー内の欠陥検出に適したコードアンドフローサインモジュール；
‐  システムを安全状態へ導くのに適した安全状態モジュール；
‐  ＣＰＵレジスタセットのコピーを作成するのに適したシャドウレジスタモジュール；
‐  所与のアドレスに対するリーガル値をチェックするのに適したリーガルロード／ストア装置モジュール；
‐  様々なタスクによりなされる、リーガルメモリアクセスをチェックする、マルチプロセスアプリケーションに適したタスクスーパバイザモジュール；
‐  メモリ内の不完全な変数/レジスタの値を回復することにより欠陥修正を実行するのに適したデータ再試行モジュール；
‐  ＣＰＵ状態及びプログラムカウンタを回復することにより、欠陥修正を実行するのに適したプログ再試行モジュール。
８．  前記中央演算処理装置（５１）の動作のバリデーションを実行する、前記少なくともモジュール（２２、２３、２４）が、中央演算処理装置（５１）及びシステムバス（５３）とのデータ交換に適したＣＰＵインタフェースモジュール（２４）を含むことを特徴とする、１．から７．のいずれかのマイクロコントローラ。
９．  前記ＣＰＵインタフェースモジュール（２４）が、前記更なる欠陥処理装置（１１）と中央演算処理装置（５１）整数コアとの間のインタフェースを含み、拡張ハードウェア視程を確実なものにするために、前記インタフェースが前記整数コアへの専用バス接続を実行することを特徴とする、８．のマイクロコントローラ。
１０．  前記中央演算処理装置（５１）の動作のバリデーションを実行する、前記少なくともモジュール（２２、２３、２４）が、欠陥認識加速器／ＣＰＵインタフェースモジュール（２４）からのデータを処理し、メイン保護モジュールとデータ交換をするのに適したＣＰＵモジュール（２３）を含み、さらに、前記ＣＰＵモジュール（２３）が、以下のモジュールのうちの１つ以上を含むことを特徴とする、８．又は９．のマイクロコントローラ：
‐  発せられた割り込み及び例外が有効でサーブされる場合、メモリマップ構成（アクセス許可、整列、及び非整列アクセスなど）及び割り込み要求を考慮して、同時にチェックするのに適した、ＥＸＣ／ＩＮＴスーパバイザモジュール；
‐  フラグ及びＣＰＵモード信号が有効か否かを同時にチェックするのに適した、モード／フラグスーパバイザモジュール；
‐  ＣＰＵコアＡＬＵ／ＭＡＣの動作を同時にチェックするのに適したＡＬＵ／ＭＡＣスーパバイザモジュール；
‐  ＣＰＵコア又はその一部分のＢＩＳＴを始動するのに適したＢＩＳＴスーパバイザモジュール；
‐  現在のプログラムフローと比較して、違いを検出し、ＣＰＵにより実行されたコードの直近部分を格納するキャッシュのソートを実現するのに適したインストラクション予測モジュール。
１１．  動作のバリデーションを実行するのに適した、前記中央演算処理装置（５１）及び前記更なる欠陥処理装置（１１）が、第2処理装置（５５１）及び、二重冗長性システムを実現するために、第２処理装置（５５１）の動作のバリデーションを実行するのに適したそれぞれの第2欠陥処理装置（５１１）に接続されていることを特徴とする、１０．のマイクロコントローラ。
１２．  前記欠陥認識周辺機器（１２、１３、１４、１５、１６）が、メモリモジュール（１２）を含むことを特徴とする、１．から１１．のいずれかのマイクロコントローラ。
１３．  前記欠陥認識周辺機器（１２、１３、１４、１５、１６）が、欠陥許容性メモリインタフェース（１３）を含むことを特徴とする、１．から１２．のいずれかのマイクロコントローラ。
１４．  ハードウェア検査構成要素（１５）が、前記１つ以上のモジュール（２１）の制御下での動作のバリデーションを実行する前記マイクロコントローラの、前記他の機能的な部分（６１、６２）と関連付けられていることを特徴とする、請求項１．から１３．のいずれかのマイクロコントローラ。
１５．  前記ハードウェア検査構成要素（１５）が、設計検査に用いられるコード（ｅＶＣ）の、ハードウェア翻訳として取得されることを特徴とする、１４．のマイクロコントローラ。
１６．  前記ハードウェア検査構成要素（１５）が、前記ハードウェア翻訳を実行する、以下の基本的ハードウェア検査モジュールのうちの１つ以上を含むことを特徴とする、１５．のマイクロコントローラ：
‐  ハードウェア検査チェックのためのモジュール（６０４）；
‐  ハードウェア検査ＢＩＳＴのためのモジュール（６０５）；
‐  インタフェースのハードウェア検査のためのモジュール（６０１）；
‐  ハードウェア検査管理のためのモジュール（６０２）；
‐  システム信号とハードウェア検査構成要素（１５）信号との間の選択のためのマルチプレクサー構造（６０３）;
‐  ソフトウェアの構成のためのモジュール。
１７．  前記基本的ハードウェア検査モジュールが、コンパイル手順（１１１）の初期化モジュール（１１２）に含まれる、ハードウェア検査コンフィグレーションソフトウェアモジュールを通して構成されることを特徴とする、１６．のマイクロコントローラ。
１８．  前記欠陥認識周辺機器（１２、１３、１４、１５、１６）が、前記マイクロコントローラ（１０）のシステムバス（５３）をモニターする、バスインタフェースコントローラ（１４）をさらに含むことを特徴とする、１．から１７．のいずれかのマイクロコントローラ。
１９．  前記欠陥認識周辺機器（１２、１３、１４、１５、１６）が、アプリケーション特定周辺機器（５５）と関連付けられた簡易型プロセッサ（１６）をさらに含むという特徴を有する、１．から１８．のいずれかのマイクロコントローラ。
２０．  少なくとも以下の動作のうちの１つを実行する、コンパイル手順（１１１）を実装することを特徴とする、１．から１９．のいずれかのマイクロコントローラ：
‐  更なる欠陥処理装置（１１）の基本機能の初期化（１１２）；
‐  オペラティブシステムとの相互作用（１１３）；
‐  オペラティブシステム（１１６）及びユーザアプリケーションコード（１１７）に関する、更なる欠陥処理装置（１１）のアプリケーション構成（１１４）；
‐  欠陥検出及び保護技術を可能にするための、ランタイムモジュールのユーザアプリケーションコード（１１７）への挿入（１１５）。
２１．  ランタイムモジュールのアプリケーションコード（１１７）への前記挿入（１１５）が、直接、ＣＰＵレジスタ及びＡＬＵ視程、及び／又は、タスク及び例外の監督、及び／又は、ＢＩＳＴテストを実行することを特徴とする、９．及び２０．のいずれかのマイクロコントローラ。
２２．  前記処理装置（１１）が、前記マイクロコントローラ活動中に、欠陥が検出された場合、欠陥アラーム及び欠陥イベントを発生させるのに適した、オンライン欠陥許容性動作を実行することを特徴とする、１．から２１．のいずれかのマイクロコントローラにおける欠陥検出方法。
２３．  前記オンライン欠陥許容性動作が、以下の欠陥保護技術のうちの1つ以上を実行することを特徴とする、２２．の方法：
‐  データのシャドウ化;
‐  コードアンドフローサイン；
‐  データ処理リーガリティチェック；
‐  アドレッシングリーガリティチェック；
‐  ＡＬＵ同時インテグリティチェッキング；
‐  同時モード／割り込みチェック。
２４．  前記欠陥処理装置（１１）が、前記マイクロコントローラ活動中、異なる時間に以下の動作も実行することを特徴とする、２２．又は２３．の方法：
‐  パワーオン動作時のマイクロコントローラ欠陥予測；
‐  マイクロコントローラオンライン欠陥予測動作。
２５．  パワーオン動作での前記マイクロコントローラ欠陥予測が、パワーオンで実行される、一連のＢＩＳＴテスト又はＢＩＳＴｓを実行することを特徴とする、２４．の方法：
２６．  前記マイクロコントローラオンライン欠陥予測動作が、システムランタイム中に実行される前記一連のＢＩＳＴテスト又はＢＩＳＴｓを実行することを特徴とする、２４．4の方法。
２７．  以下の動作を含むことを特徴とする、マイクロコントローラに対する耐欠陥システムの設計方法：
‐  ソフトウェア検査構成要素（ｅＶＣ）を用いて機能的検査を実行すること（３０６）；
‐  中央演算処理装置（５１）検査手順を実行すること；
‐  欠陥注入手順を実行すること（３０７）；
‐  最終的実装を実行すること（３０８）。
２８．  典型的なシステム状況のデータベースを提供する動作をさらに含むことを特徴とする、２７．の方法。
２９．  マイクロコントローラインタフェースに対する、前記ソフトウェア検査構成要素（ｅＶＣ）が、前記最終的な実装ステップ（３０８）中に、ハードウェア検査構成要素（１５）内で、ｈＶＣ設計キットにより自動的に翻訳されることを特徴とする、２７．の方法。
３０．  前記欠陥注入手順（３０７）が、以下のモジュール内の１つ以上と関連付けられた、ｅ−欠陥フェーズ（４００）動作を含むことを特徴とする、２７．の方法：
‐  基本欠陥モデルの組み合わせを含む欠陥データベースモジュール（４０６）；
‐  高度な放射影響欠陥モデルの組み合わせを含む欠陥パッケージモジュール（４０５）；
‐  カスタム欠陥モデル（４０４）を加えるのに適した欠陥モデル化装置モジュール；
‐  注入される欠陥を選択し、及び圧縮する、欠陥リスト生成装置モジュール（４０７）；
‐  注入手順を提供する、欠陥注入装置エンジンモジュール（４０２）；
‐  テストパターンを提供する、テストジェネレータ（４０３）；
‐  欠陥効果上の統計を提供する、欠陥分析装置モジュール（４０１）；
‐  電子装置の安全性の重要な設計に対する規範性とコンプライアンスを検査する、チェック装置モジュール（４０８）。
３１．  コンピュータのメモリ内に直接ロード可能で、製品がコンピュータ上で実行される際、２７．から３０．のいずれかの方法を実行するソフトウェアコード部分を含んでいるコンピュータプログラム製品。
【符号の説明】
【０１１５】
１０  マイクロコントローラ
１１  欠陥処理装置
１２，１３，１４，１５，１６  欠陥認識周辺機器
２１，２２，２３，２４  モジュール
５０，５１  中央演算処理装置
５３  システムバス
５５  アプリケーション特定周辺機器
６１  インタフェース
６２  周辺機器
７０  ベーシックシステム構成要素
１１２  初期化モジュール
１１６  オペラティブシステム
１１７  ユーザアプリケーションコード
４０１，４０２，４０４〜４０８  モジュール
４０３  テストジェネレータ
５１１  第２欠陥処理装置
５５１  第２処理装置
６０１〜６０５  モジュール
【図１】
0005631848.tif 000002
【図２】
0005631848.tif 000003
【図３】
0005631848.tif 000004
【図４】
0005631848.tif 000005
【図５】
0005631848.tif 000006
【図６】
0005631848.tif 000007
【図７】
0005631848.tif 000008