(57)【特許請求の範囲】
【請求項１】
高い完全性を有するＮ（Ｎは２以上の整数）個の処理レーンのコンピュータ処理モジュールシステムのためのモジュールであって、
処理レーンあたり１つのホストされるアプリケーションを実行するプロセッサおよび入出力要素と、
前記Ｎ個の処理レーンのそれぞれで動作するソフトウェアにより発生される要求が前記Ｎ個の処理レーンのそれぞれによって、実際にいつ受け取られ、いつ作用されるかに関わりなく、前記要求について同一の時刻値を判定するように構成された時刻管理ユニット（ＴＭ）と、
それぞれの処理レーン内のクリティカル領域を、前記Ｎ個の処理レーンのすべてにまたがって識別し、同期化することを可能にするように構成されたクリティカル領域管理ユニット（ＣＲＭ）と、
各それぞれの処理レーンが前記Ｎ個の処理レーンの他のすべてと正確に同一の高完全性データのセットを受け取ることを保証し、受け取ることができない場合にエラー状態を出力するように構成されたデータ入力管理（ＩＭ）ユニットと、
前記それぞれの処理レーンが前記Ｎ個の処理レーンの他のすべてと正確に同一の高完全性データのセットを出力するかどうかを判定し、前記出力が同一でない場合にエラー状態を出力するように構成されたデータ出力管理（ＯＭ）ユニットと、
を含み、
前記ソフトウェアは、前記ホストされるアプリケーションと前記モジュールのソフトウェアコンポーネントである、
前記クリティカル領域は、同一の処理コンテキスト内のすべての他の実行のスレッドによってプリエンプトすることのできない、ソフトウェア内の領域である、
モジュール。
【請求項２】
前記ＣＲＭによって識別される前記クリティカル領域が、現在動作している実行のスレッドとは別々の任意の他の実行のスレッドによってプリエンプトすることができないソフトウェア内の領域に対応する、請求項１に記載のモジュール。
【請求項３】
前記ＴＭが、深さ１のバッファを含む、請求項１記載のモジュール。
【請求項４】
前記ＴＭが、深さＭのバッファを含み、Ｍが、２以上の整数である、請求項１に記載のモジュール。
【請求項５】
高完全性データと普通の完全性データとの両方が、前記Ｎ個の処理レーンを介して流れ、前記高完全性データだけが、高完全性モジュールによって操作され、
前記高完全性データ」はディアルレーン入出力インターフェイスを必要とするデータであり、前記普通の完全性データは前記ディアルレーン入出力インターフェイスを必ずしも必要としないデータである、
請求項１に記載のモジュール。
【請求項６】
前記ＴＭが、有限状態機械として実施される、請求項１に記載のモジュール。
【請求項７】
前記ＣＲＭが、有限状態機械として実施される、請求項１に記載のモジュール。
【請求項８】
高い完全性を有するＮ（２以上の整数）個の処理レーンを有するコンピュータ処理モジュールシステムのためのモジュールにおいて、
処理レーンあたり１つのホストされるアプリケーションを実行するプロセッサおよび入出力要素と、
有限状態機械として実施され、前記Ｎ個の処理レーンのそれぞれで動作するソフトウェアによって行われる要求が前記Ｎ個の処理レーンのそれぞれによって実際にいつ受け取られ、作用されるかに関わりなく、前記要求について同一の時刻値を判定するように構成された時刻管理ユニット（ＴＭ）と、
有限状態機械として実施され、それぞれの処理レーン内のクリティカル領域を前記Ｎ個の処理レーンのすべてにまたがって識別し、同期化することを可能にするように構成されたクリティカル領域管理ユニット（ＣＲＭ）と、
各それぞれの処理レーンが前記Ｎ個の処理レーンの他のすべてと正確に同一の高完全性データのセットを受け取ることを保証し、受け取ることができない場合にエラー状態を出力するように構成されたデータ入力管理（ＩＭ）ユニットと、
前記それぞれの処理レーンが前記Ｎ個の処理レーンの他のすべてと正確に同一の高完全性データのセットを出力するかどうかを判定し、前記出力が同一でない場合にエラー状態を出力するように構成されたデータ出力管理（ＯＭ）ユニットと
を含み、
高完全性データと普通の完全性データとの両方が、前記Ｎ個の処理レーンを介して流れ、前記高完全性データだけが、前記高完全性モジュールによって操作され、
前記ソフトウェアは、前記ホストされるアプリケーションと前記モジュールのソフトウェアコンポーネントであり、
前記クリティカル領域は、同一の処理コンテキスト内のすべての他の実行のスレッドによってプリエンプトすることのできない、ソフトウェア内の領域である、
モジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２００７年７月２４日に出願した米国仮出願第６０／９３５，０４４号、名称「Ｈｉｇｈ  Ｉｎｔｅｇｒｉｔｙ  ａｎｄ  Ｈｉｇｈ  Ａｖａｉｌａｂｉｌｉｔｙ  Ｃｏｍｐｕｔｅｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｍｏｄｕｌｅ  ａｎｄ  Ｍｅｔｈｏｄ」の優先権を主張するものである。
【背景技術】
【０００２】
本明細書で説明されるテクノロジは、「ホストされるアプリケーション」に最小限の設計制約を課すソースコンピューティングでの高いインテグリティ（”integrity”、以下「完全性」）と高い可用性（”availability”）を追求したコンピュータ処理モジュール（「モジュール」）に関するもので、本テクノロジーにより、「ホストされるアプリケーション」は、上記モジュール上で、ホストされるソフトウェアアプリケーション（「ホストされるアプリケーション」）が通常の普通の完全性を有するコンピュータ処理モジュール上でも動作できるようになる。
【０００３】
コンピュータ処理モジュール（「モジュール」）は、故障が正確に検出され、分離され、誤ったアラームが最小になることが保証されて初めて、ソース側における高完全性と高可用性を提供することができる。高完全性を備えた「モジュール」は、迅速かつ正確に検出も分離もされない故障が動作上の問題をもたらし得る航空機にとって、さらにより重要である。ソース側で高い完全性をもたらすようなモジュール内での正確な故障を検出し分離する能力は、時々、「故障封じ込めゾーン確立能力」と呼ばれ、「故障封じ込めゾーン」とは、フォールトをコンテインメンしたゾーン（ｆａｕｌｔ  ｃｏｎｔａｉｎｍｅｎｔ  ｚｏｎｅ、ＦＣＺ）であり、このゾーンがシステム内で確立すると、そのゾーンの外部には故障が伝搬できないようになる。また、高完全性「モジュール」では、誤ったアラームの発生確率は非常に低いことも重要である、なぜならば、そのような誤ったアラームは、実際には存在しないにも関わらずその誤報された問題を訂正するために、機能の一次的な消失やコンピュータリソースの浪費をもたらす場合があるからである。
【０００４】
ソース「モジュール」での高い完全性を得るための従来の設計は、当該「モジュール」上の複数のマイクロプロセッサ間での、命令レベルでのロック−ステップ（ｌｏｃｋ−ｓｔｅｐ）処理を実施することが必要とされ、これには高価なカスタム回路網を必要とするものである。従来の命令レベルのロック−ステップ処理手法は、「ホストされるアプリケーション」のすべてに高完全性を提供するものではあるものの、埋め込みメモリコントローラや異なるクロック回復回路を有する複数の位相ロックループ（ＰＬＬ）を必要とする入出力サポートなどを、現時点での技術的現状のマイクロプロセッサに実施するのは困難（または不可能）である場合がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】英国特許第２４２５３８０Ａ号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、「ホストされるアプリケーション」に最小限の設計制約を課し（即ち、同一の「ホストされるアプリケーション」は通常の普通の完全性を有する「モジュール」でも実行することもできる）つつも、高速マイクロプロセッサ（たとえば、統合されたプロセッサ）を利用することもできる、「モジュール」用のソース設計での高完全性に対する必要がある。
【課題を解決するための手段】
【０００７】
本発明の一態様は、高完全性を発揮するＮレーンコンピュータ処理モジュール（「モジュール」）に関する。ここで、Ｎは２以上の整数である。この「モジュール」は、処理レーンあたり１つの「ホストされるアプリケーション」要素および入出力要素と、Ｎ個の処理レーンのそれぞれで動作するソフトウェアによって行われる要求がＮ個の処理レーンのそれぞれによって実際にいつ受け取られ、作用されるかに関わりなく、要求について同等の時刻値を判定するように構成された時刻管理ユニット（ＴＭ）と、それぞれのレーン内のクリティカル領域をＮ個の処理レーンのすべてにまたがって識別し、同期化することを可能にするように構成されたクリティカル領域管理ユニット（ＣＲＭ）とを含む。
【０００８】
例示的実施形態を、下で添付図面を参照して説明するが、図面では、類似する符号が類似する要素を指す。
【図面の簡単な説明】
【０００９】
【図１】障害状態が「ホストされるアプリケーション」について排除されるような、障害が軽減されることが望まれる第１シナリオを示す図である。
【図２】障害状態が「ホストされるアプリケーション」について排除されるような、障害が軽減されることが望まれる第１シナリオを示す図である。
【図３】時刻管理（Time Management：ＴＭ）ユニット、クリティカル領域管理（Critical Region Management：ＣＲＭ）ユニット、データ入力管理（data Input Management：ＩＭ）ユニット、およびデータ出力管理（data Output Management：ＯＭ）ユニットを示す論理ブロック図である。
【図４】例示的実施形態による高完全疎同期（high integrity loosely synchronized）コンピュータ処理モジュール（「モジュール」）を示すブロック図である。
【図５】例示的実施形態による時刻管理ユニットの詳細を示すブロック図である。
【図６】例示的実施形態によるクリティカル領域管理ユニットの詳細を示すブロック図である。
【図７】例示的実施形態によるシステムおよび方法を利用することによって潜在的障害状態が排除される、第１シナリオ（図１の）を示す図である。
【図８】例示的実施形態によるシステムおよび方法を利用することによって潜在的障害状態が排除される、第２シナリオ（図２の）を示す図である。
【発明を実施するための形態】
【００１０】
次の記述では、説明において、本明細書で説明するテクノロジの完全な理解を提供するために多数の具体的な詳細を示す。しかし、例示的実施形態をこれらの具体的な詳細なしで実践できることは、当業者に明白であろう。他の場合には、例示的実施形態の説明を容易にするために、構造およびデバイスを線図の形で示す。
【００１１】
例示的実施形態を、下で図面を参照して説明する。これらの図面は、本明細書で説明するモジュール、方法、およびコンピュータプログラム製品を実施する特定の実施形態のある詳細を示す。しかし、図面を、図面に存在し得る限定を課すものと解釈してはならない。方法およびコンピュータプログラム製品を、その動作を達成するために任意の機械可読媒体上で提供することができる。実施形態を、既存のコンピュータプロセッサを使用して、この目的または別の目的のために組み込まれる特殊目的コンピュータプロセッサによって、またはハードワイヤードシステムによって実施することができる。
【００１２】
上で注記したように、本明細書で説明する実施形態は、機械実行可能命令またはデータ構造を担持するかその上に格納された機械可読媒体を含むコンピュータプログラム製品を含む。そのような機械可読媒体は、汎用のもしくは特殊目的のコンピュータまたはプロセッサを有する他の機械によってアクセスできる、任意の使用可能な媒体とすることができる。たとえば、そのような機械可読媒体は、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは、機械実行可能命令またはデータ構造の形で所望のプログラムコードを担持するか格納するのに使用でき、汎用のもしくは特殊目的のコンピュータまたはプロセッサを有する他の機械によってアクセスできる任意の他の媒体を含むことができる。情報が、ネットワークまたは別の通信接続（ハードワイヤード、無線、またはハードワイヤードもしくは無線の組合せのいずれか）を介して機械に転送されまたは供給される時に、その機械は、当然、その接続を機械可読媒体と見なす。したがって、すべてのそのような接続が、当然、機械可読媒体と呼ばれる。上の組合せも、機械可読媒体の範囲に含まれる。機械実行可能命令は、たとえば、汎用コンピュータ、特殊目的コンピュータ、または特殊目的処理機械にある機能または機能のグループを実行させる命令およびデータを含む。
【００１３】
実施形態を、たとえばネットワーク化された環境内の機械によって実行されるプログラムモジュールの形のプログラムコードなど、機械実行可能命令を含むプログラム製品によって１つの実施形態で実施できる方法ステップの全般的文脈で説明する。一般に、プログラムモジュールは、特定のタスクを実行するか特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。機械実行可能命令、関連するデータ構造、およびプログラムモジュールは、本明細書で開示される方法のステップを実行するプログラムコードの例を表す。そのような実行可能命令または関連するデータ構造の特定のシーケンスは、そのようなステップで説明される機能を実施する対応する行為の例を表す。
【００１４】
実施形態を、プロセッサを有する１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で実践することができる。論理接続は、ローカルエリアネットワーク（ＬＡＮ）および広域ネットワーク（ＷＡＮ）を含むことができ、これらは、限定ではなく例としてここで提示される。そのようなネットワーキング環境は、オフィス全体または企業全体のコンピュータネットワーク、イントラネット、およびインターネットでありふれたものであり、さまざまな異なる通信プロトコルを使用することができる。そのようなネットワークコンピューティング環境が、通常、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラマブルな消費者エレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、および類似物を含む多数のタイプのコンピュータシステム構成を含むことを、当業者は了解するであろう。
【００１５】
実施形態を、通信ネットワークを介してリンクされた（ハードワイヤードリンク、無線リンク、またはハードワイヤードリンクもしくは無線リンクの組合せのいずれかによって）ローカルおよびリモートの処理デバイスによってタスクが実行される分散コンピューティング環境で実践することもできる。分散コンピューティング環境では、プログラムモジュールを、ローカルとリモートとの両方のメモリストレージデバイスに配置することができる。
【００１６】
例示的実施形態の全体または一部を実施する例示的システムは、処理ユニット、システムメモリ、およびシステムメモリを含むさまざまなシステムコンポーネントを処理ユニットに結合するシステムバスを含むコンピュータの形の汎用コンピューティングデバイスを含むことができる。システムメモリは、読取り専用メモリ（ＲＯＭ）およびランダムアクセスメモリ（ＲＡＭ）を含むことができる。コンピュータは、磁気ハードディスクから読み取り、これに書き込む磁気ハードディスクドライブ、リムーバブル磁気ディスクから読み取るかこれに書き込む磁気ディスクドライブ、およびＣＤ−ＲＯＭまたは他の光媒体などのリムーバブル光ディスクから読み取るかこれに書き込む光ディスクドライブをも含むことができる。ドライブおよびそれに関連する機械可読媒体は、機械実行可能命令、データ構造、プログラムモジュール、および他のデータのコンピュータのための不揮発性ストレージを提供する。
【００１７】
この明細書の以下に、第１実施形態を詳細に説明するが、これは、コンピュータ処理モジュール（以下「モジュール」）からなるソースシステムでの高完全性を提供する疎同期化（高完全租同期）のための手法に対応する。
【００１８】
ソースコンピューティング（source computing）での高完全性は、現在のところ、命令レベルでのロックステップ（lockstep）方式で動作している少なくとも２つの処理レーン、すなわち１つの処理するレーンと１つのモニターするレーンとを必要とする。ソースコンピューティング「モジュール」でのデュアルレーンでの高完全性について、解決すべき問題を、有限状態機械（finite state machine）モデルになぞらえることができる。すなわち、ある「モジュール」の各処理レーンで動作するソフトウェアが、同一の入力（データ、割込み、時刻など）を受け取り、且つ、出力を送る前までに、または、新しい入力を受け取る前までに、当該データについて同一「量」の処理を実行することができる場合には、各レーンは、障害がない場合には、全く同一の出力を発生することになる。この実施形態が、主に、各処理レーンは同一のマイクロプロセッサを有する「モジュール」に関して説明されることに留意されたい。しかし、この実施形態は、Ｎ個のレーンのうちの１つまたは複数に異なるプロセッサを有する「モジュール」にもあてはまるものである。この場合には、各処理レーンは、指定された範囲（おそらくは、たとえば当該マイクロプロセッサの浮動小数点ユニットに存する相違に起因するばらつき）内での「同一」の出力を作るものと期待される。
【００１９】
有限状態機械モデルによるアナロジーの意味するところは、次のとおりである。「モジュール」上で動作するソフトウェアがある入力を受け取る時には、それらの入力は、両方のレーンで同一でなければならず、かつ、両方のレーンが、正確に同一の状態にある時にそれら入力を受け取らなければならない。入力とは、明示的に要求された入力（たとえば、ＡＲＩＮＣ６５３ポートデータ、タイムスタンプなど）、または、外部イベント（ハードウェア割込み、仮想割込みなど）に起因して受け取る入力であると考えなくてはならない。ソフトウェアに、たとえば優先順位プリエンプティブ動作などに起因して起こる、そのソフトウエアの実行（状態）のスレッドを変化させてしまう入力に、特に注意するひつようがある。ある「モジュール」上で動作するソフトウェアが出力を送る時には、その出力以前に、両方のレーンからのデータを比較しなければならない。（適切でない状態同期化が原因の）出力データの比較失敗が起こらないことを確実ならしめるために、ソフトウェアのうちで出力データの生成に責任を負うソフトウエア部分は、出力が比較できて、その後、送ることができる前に、両方のレーン間で同一の状態に達しなければならない。
【００２０】
図１および図２に示されたシナリオは、障害状態の発生が「モジュール」の設計によって排除できるように、２つの潜在的障害シナリオの例示を与える。これらの特定のシナリオが選ばれた理由は、これらの障害状態を軽減できるような「モジュール」設計なるものが、Ｎレーンの「モジュール」で動作するソフトウェアに対して、入力データの同等性についてのより一般的な設計制約に対処でき（または、対処できると期待でき）、そして、同期化を制御できることについて高い確率を有すると思われるからである。
【００２１】
ここで、２レーン高完全性「モジュール」の図１に移り、第１タイプの潜在的障害状態について説明する。この「モジュール」では、レーン１および２は疎同期化されて動作しているが、本明細書で説明するＴＭユニットおよびＣＲＭユニットは追加されていない。この場合に、疎同期化動作状態とは、レーン１が、レーン２に対して、１命令未満から任意数の命令の範囲の時間長だけ、進み或いは遅れた状態にあることを意味する。図１に示された例について、レーン１は、レーン２の「前」にある。この例で使用されるＢｏｏｌｅａｎ（ブール変数）の初期状態は、「Ｆａｌｓｅ（偽）」である。
【００２２】
ステップ１で、レーン１の処理１は、タイマ割込みが発生したときに、Ｂｏｏｌｅａｎを「Ｔｒｕｅ（真）」にセットしたばかりである。レーン２のプロセス１は、Ｂｏｏｌｅａｎを「Ｔｒｕｅ」にセットする機会をまだ有していない（従って、そのＢｏｏｌｅａｎはまだ「Ｆａｌｓｅ」である）。
【００２３】
ステップ２で、割込みが発生して、レーン１とレーン２との両方の「ホストされるアプリケーション」をして、（優先順位プリエンプションに起因して）プロセス２に切り替えさせる。
【００２４】
ステップ３は、レーン１のプロセス２およびレーン２のプロセス２が、夫々のＢｏｏｌｅａｎを読み取り、夫々のＢｏｏｌｅａｎの状態を含む出力を送出する。レーン１はＴｒｕｅを出力し、レーン２はＦａｌｓｅを出力する。
【００２５】
ステップ４で、データ出力管理（ＯＭ）ユニットが、２つのレーンの間の不一致を検出する。これは、２つの計算レーン間に正しい同期化が「モジュール」によって提供されいたならば防ぐことができたであろう（したがって、可用性も高まったであろう）タイプの障害である。
【００２６】
ここで図２に移って、第２タイプの潜在的障害状態を、２レーン高完全性「モジュール」について説明する。このシステムでは、レーン１および２は、疎同期化されているが、本明細書でこれから説明するＴＭユニットおよびＣＲＭユニットは装備されていない。この例で、疎同期化は、レーン１が、レーン２に対して、１命令未満から任意数命令までの範囲の時間長だけ、進み或いは遅れた状態にあることを意味する。図２に示された例について、レーン１は、レーン２の「前」にある。
【００２７】
ステップ１で、レーン１のプロセス１（低優先順位のバックグラウンドプロセスである）は、タイマ割込みが発生した時に、ポートＦＯＯでの出力トランザクションを完了したばかりである。レーン２のプロセス１は、同一の出力トランザクションを完了していない。
【００２８】
ステップ２で、バックグラウンドプロセス（プロセス１）は、低優先順位なので、もはや動作していない。そうではなく、高優先順位プロセス（プロセス２）が、両方のレーンで動作し、入力データを受け取り、この入力データが、プロセス１に再始動させる。したがって、レーン２のプロセス１は、その出力を送るようなことはない。
【００２９】
ステップ３で、最終的に（ある制限された時間限度以内に）データ出力管理ユニットが、レーン２がポートＦＯＯで出力しないという事実に起因して、障害を報告する。これは、２つの計算レーン間の正しい同期化が「モジュール」によって提供されていたならば防ぐことができであろう（したがって、可用性が高またであろう）タイプの障害である。
【００３０】
第１の実施形態で利用されるアーキテクチャ的手法は、「モジュール」のハードウェアコンポーネントおよびソフトウェアコンポーネントが一緒に働いて、各処理レーンのソフトウェア状態を、入出力処理が実行される前（および間）に、同期化させられていることを保証するものである。「ソフトウェア」が、「ホストされるアプリケーション」ソフトウェアと「モジュール」のソフトウェアコンポーネントとの両方を指すことに留意されたい。また、用語「同期化される」が、レーンのそれぞれが、同一セットのクリティカル領域を実行完了して、双方が同一の入力を集める同一クリティカル領域内にあること、或いは、両レーンが同一出力を送る同一クリティカル領域内にあること、を意味するものであることに留意されたい。Ｎ個のレーンのそれぞれからの入力或いは出力（Ｉ／Ｏ）の出力は比較され、そして、出力される前にこの比較に合格しなければならない。
【００３１】
上記アーキテクチャ的手法のトップレベル属性は、次のとおりである。このアーキテクチャは、仮想化（たとえば、ＡＲＩＮＣ仕様６５３によって指定される）をサポートする「モジュール」に典型的な頑健に時間的におよび／または空間的に区分された環境ならびに「モジュール」が単一の「ホストされるアプリケーション」だけをサポートする環境をサポートする。このアーキテクチャは、「モジュール」のＮ個の処理レーン上の同一のまたは異なるプロセッサ（２個以上）をサポートする。このアーキテクチャは、疎同期化され、これによって、計算状態が同期化される。このアーキテクチャは、「ホストされるアプリケーション」から可能な最大の範囲へ冗長管理（同期化および比較）を抽象化する。これは、「ホストされるアプリケーション」供給業者が、彼らのソフトウェアに従来の設計標準を使用することを可能にし（彼らは、特殊な高完全性特徴を加えることを要求されない）、彼らが通常の普通の完全性「モジュール」上で同一の「ホストされるアプリケーション」ソフトウェアを実行することを可能にする。このアーキテクチャは、高完全性および高可用性を提供するユニットを静的に構成できるように、パラメトリックである。これは、一部の「ホストされるアプリケーション」（またはこれらの「ホストされるアプリケーション」への／からのデータ）を普通の完全性として構成することを可能にする。このアーキテクチャは、故障が、誤った出力に起因する機能的ハザードを軽減するのに間に合って検出されることを保証する。
【００３２】
この手法を実施するために、第１の実施形態によるシステムおよび方法は、データ入力管理（ＩＭ）、時刻管理（ＴＭ）、クリティカル領域管理（ＣＲＭ）、およびデータ出力管理（ＯＭ）を含む機構（または要素）を提供する。図３に、これらの要素が「モジュール」と「ホストされるアプリケーション」ソフトウェアとの両方にどのように関係するかの論理ブロック図を示す。これらの要素のそれぞれを、詳細に説明する。
【００３３】
第１の実施形態の１つの可能な実施態様では、ＩＭ機構、ＴＭ機構、ＣＲＭ機構、およびＯＭ機構は、「ホストされるアプリケーション」プロセッサ要素に高速バス（たとえば、ＰＣＩ−Ｅｘｐｒｅｓｓまたはプロプライエタリバス）を介して接続された入出力要素に組み込まれる。２つの入出力要素が、高完全性要件をサポートするために使用される（その間の通信チャネルと共に）。さらに、「ホストされるアプリケーション」要素のソフトウェアは、規定された同期化ポイントでこれらの機構と相互作用する。
【００３４】
図４に、第１の実施形態の２レーン高完全性「モジュール」において、上述の機能性がどのように実施できるかのブロック図を示す。当業者であれば、第１の実施形態の他の可能な実施態様には、次の２つの例を含めて多数あることを認めるであろう：
（ｉ）各々のレーンが、非常に統合されたデュアル（二重）（またはマルチ（多重））コアマイクロプロセッサと、関連するクロック、メモリデバイス、入出力デバイスなどをそれぞれ含み、「ホストされるアプリケーション」要素３１０の機能性が、当該「モジュール」のハードウェアコンポーネントおよびソフトウェアコンポーネントを介して、１つまたは複数のマイクロプロセッサコア（および関連するクロック、メモリ、入出力デバイスなど）を利用して実施され、入出力要素３２０の機能性が、当該「モジュール」のハードウェアコンポーネントおよびソフトウェアコンポーネントを介して各レーン上の組み込まれた、１つまたは複数のマイクロプロセッサコア（および関連するメモリ、入出力デバイスなど）を利用して実施されるものであるような、これら２つの処理レーンからなる「モジュール」、
（ｉｉ）各々のレーンが、単一コアマイクロプロセッサおよび関連するクロック、メモリデバイス、入出力デバイスなどを含み、各レーンの「ホストされるアプリケーション」要素３１０および入出力要素３２０の機能性のすべてが各レーン上のマイクロプロセッサコアおよび関連するメモリ、入出力デバイスなどによって提供される「モジュール」のハードウェアコンポーネントおよびソフトウェアコンポーネントを介して実施されるという、このような２つの処理レーンからなる「モジュール」。
【００３５】
図４の例に示されているように、第１の実施形態による高完全疎同期「モジュール」３００は、２つのレーンすなわちレーン１およびレーン２を含み、これによって、第１の実施形態を、Ｎ（２以上の正の整数）レーン「モジュール」で利用できるものである。「モジュール」３００は、「ホストされるアプリケーション」要素３１０をも含み、この「ホストされるアプリケーション」要素３１０は、レーンごとのプロセッサＣＰＵ（３５０Ａ、３５０Ｂ）を有する（図４に示された例では、レーン１用の１つのプロセッサＣＰＵ（３５０Ａおよびレーン２用の１つのプロセッサＣＰＵ（３５０Ｂ）という２つのプロセッサＣＰＵがある）。各プロセッサＣＰＵ（３５０Ａ、３５０Ｂ）は、不揮発性メモリ（ＮＶＭ）３３０Ａ、３３０Ｂおよびシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）３４０Ａ、３４０Ｂへのアクセスを有し、これによって、プロセッサＣＰＵごとにクロック回路が設けられる。図４には、各プロセッサＣＰＵ（３５０Ａ、３５０Ｂ）にクロック信号を供給する１つのクロック回路３６０が示され、これによって、クロックモニタ３６５も、安定したクロック信号が常時各レーンのプロセッサＣＰＵ（３５０Ａ、３５０Ｂ）に供給されることを保証するために設けられる。当業者は、本明細書で説明される実施形態の趣旨および範囲の中に留まりながら、「ホストされるアプリケーション」要素３１０上のクロック３６０およびクロックモニタ３６５を、各レーンで動作する独立のクロックに置換でき、入出力要素３２０上のクロック３８４およびクロックモニタ３８２を、各レーンで動作する独立のクロックに置換できることを認めるであろう。
【００３６】
「ホストされるアプリケーション」要素３１０は、ＰＣＩ−Ｅバスによって、各それぞれのレーン内で入出力要素３２０に通信的に結合される。さらに、「ホストされるアプリケーション」要素３１０の各レーンは、ＰＣＩ−Ｅバスによって「ホストされるアプリケーション」要素３１０の他方のレーンに接続される。当業者は、本明細書で説明される実施形態の趣旨および範囲の中に留まりながら、他のタイプのバス、交換網、またはメモリデバイスを利用して、「ホストされるアプリケーション」要素３１０内ならびに「ホストされるアプリケーション」要素３１０と入出力要素３２０との間でそのような通信接続を提供できることを認めるであろう。
【００３７】
入出力要素３２０は、レーン１入出力プロセッサ３７０Ａおよびレーン２入出力プロセッサ３７０Ｂを含み、これによって、これらの入出力プロセッサ３７０Ａ、３７０Ｂは、ＰＣＩ−Ｅバスによって互いに通信的に接続される。当業者は、本明細書で説明される実施形態の趣旨および範囲の中に留まりながら、他のタイプのバス、交換網、またはメモリデバイスを利用して、各レーンの入出力プロセッサ３７０Ａ、３７０Ｂの間でそのような通信接続を提供できることを認めるであろう。
【００３８】
各入出力プロセッサ３７０Ａ、３７０Ｂは、データ入力管理要素（ＩＭ）、時刻管理要素（ＴＭ）、クリティカル領域管理要素（ＣＲＭ）、およびデータ出力管理要素（ＯＭ）を含む。各入出力プロセッサ３７０Ａ、３７０Ｂは、他の入出力要素３７５Ａ、３７５ＢおよびＡＲＩＮＣ  ６６４  Ｐａｒｔ  ７要素３８０Ａ、３８０Ｂをも含み、これによって、これらの要素は、航空機コンピュータ処理技術の当業者に既知であり、説明を簡潔にするためにさらには説明されない。当業者は、本明細書で説明される実施形態の趣旨および範囲の中に留まりながら、他のタイプの入出力データバス（ＡＲＩＮＣ６６４  Ｐａｒｔ  ７以外）を利用して、「モジュール」のそのような通信接続を提供できることを認めるであろう。
【００３９】
クロックユニット３８４およびクロックモニタ３８２も、マルチレーン「モジュール」の各レーン内で各入出力プロセッサ３７０Ａ、３７０Ｂに安定したクロック信号を供給するために、図４に示されている。当業者は、本明細書で説明される実施形態の趣旨および範囲の中に留まりながら、入出力要素３２０上のクロック３８４およびクロックモニタ３８２を、各レーンで動作する独立のクロックに置換できることを認めるであろう。
【００４０】
図４には、各レーンの入出力ＰＨＹユニット３８６Ａ、３８６Ｂ、各レーンのＸＦＭＲユニット３８８Ａ、３８８Ｂ、および電力信号を供給し、マルチレーン「モジュール」の各レーン内のコンポーネントの監視を実行する電源およびモニタユニット３９０も示されている。インターフェースユニット３９５は、「モジュール」３００のさまざまなコンポーネントに電力に関する信号接続（たとえば、１２Ｖ  ＤＣ、ＰＷＲ  ＥＮＢＬ）を供給する。電力を、たとえば、航空機のエンジンから（航空機エンジンがオンになっている時に）またはバッテリもしくは発電機から（航空機エンジンがオフになっている時に）インターフェースユニット３９５に（したがって、高完全性「モジュール」３００のさまざまなコンポーネントに）供給することができる。当業者は、本明細書で説明される実施形態の趣旨および範囲の中に留まりながら、電源およびモニタ３９０を独立の（レーンあたり１つ）または「モジュール」用の単一の電源およびモニタのいずれかとして実施できることを認めるであろう。
【００４１】
次では、ＩＭ機構、ＴＭ機構、ＣＲＭ機構、およびＯＭ機構の概要を提供する。
【００４２】
ＩＭは、すべての計算レーンで動作するソフトウェアが、高完全性入力データの正確に同一のセットを受け取ることを保証する。データの同一のセットを各レーンに供給できない場合には、ＩＭは、そのデータを破棄し、いずれかのレーンがそのデータを受け取るのを防ぎ、エラー状態を報告する。
【００４３】
普通の完全性と考えられる大量のデータフローがある場合がある。すなわち、デュアルレーン入出力インターフェース（およびクロスレーンデータ妥当性検査を実行するための関連するオーバーヘッド）を必要としない、「モジュール」に流れ込むまたは「モジュール」内の「ホストされるアプリケーション」から流れる大量のデータがある場合がある。第１の実施形態は、普通の完全性データフローを１つの普通の完全性ソースから両方の計算レーンに供給することを可能にする。この最適化は、普通の完全性または高完全性のいずれかとして各データフロー（たとえば、「ホストされるアプリケーション」宛のまたはこれから送られる各ＡＲＩＮＣ６６４  Ｐａｒｔ  ７仮想リンク）を指定する構成パラメータを介して実施することができる。
【００４４】
商用航空機で使用される第１の実施形態の１つの可能な実施態様では、複数のレーン上で入力データ同等性を提供する必要があるサービスの例は、ＡＲＩＮＣ６５３  Ｐａｒｔ  １入出力ＡＰＩ呼出し（たとえば、サンプリングおよびキューイングポート）、ＡＲＩＮＣ６５３  Ｐａｒｔ  ２入出力ＡＰＩ呼出し（たとえば、ファイルシステムおよびサービスアクセスポイント）、ＯＳ入出力ＡＰＩ呼出し（たとえば、ＰＯＳＩＸのプロセス間通信）、および他（たとえばプラットフォーム固有）のＡＰＩ呼出しである。
【００４５】
ＴＭは、要求が時間的にスキューを有する（計算レーンの間の疎同期に起因して）場合であっても、すべての計算レーンが同一の要求に関する同等の時刻値を受け取ることを保証する。これに関して、時刻は、その値が別の「ホストされるアプリケーション」または「モジュール」の外部のＬＲＵによって作られるのではなく、「モジュール」によって作られ／制御されるので、「ホストされるアプリケーション」への特殊なタイプの入力データである。図５に、第１の実施形態による、ＴＭ４００およびこれがレーンに送り、マルチレーン「モジュール」のレーンから受け取る信号のブロック図を示す。
【００４６】
本質的に、ＴＭは、すべての計算レーンが、他のレーンによって行われた要求に対応する同一の正確な時刻を有することを保証する。深さ１バッファ（たとえば、１つの時刻エントリだけを格納するバッファ）が、レーンが両方とも時刻に関する要求を発行した後に両方のレーンに送達される時刻の値を保持する。計算レーンが、長い時間期間の間、時刻要求を発行するために他方のレーンを「待っている」（他方のレーンでのエラーの結果としてである可能性が最も高い）場合に、そのレーンのウォッチドッグタイマ機構（図示せず）が、このエラー状態を検出し、これに応答するのに使用される。
【００４７】
第１の実施形態によるＴＭは、ハードウェア／ソフトウェア論理を介して「モジュール」内で（たとえば、ＦＰＧＡへのアクセスを制御する「モジュール」ソフトウェアと組み合わせて入出力要素上のＦＰＧＡ内で）実施することができる。効率的な同期化された時刻を提供するために、ＴＭを、「ユーザ」モードでアクセス可能にすることができる（システム呼出しが不要になるようにするために）。
【００４８】
商用航空機で使用される第１の実施形態の１つの可能な実施態様では、ＴＭは、「ホストされるアプリケーション」が、適用可能なＡＲＩＮＣ６５３  Ｐａｒｔ  １およびＰａｒｔ  ２  ＡＰＩ呼出し（たとえば、Ｇｅｔ＿Ｔｉｍｅ）、適用可能なＰＯＳＩＸ  ＡＰＩ呼出し（たとえば、Ｔｉｍｅｒｓ  ＡＰＩｓ）、および他（たとえば、プラットフォーム固有）のＡＰＩ呼出しを行う時に呼び出される。
【００４９】
ＴＭは、プラットフォームソフトウェアがシステム時刻の必要を有する時に呼び出される。図５に示されたＴＭは、時刻バッファを含む。ＴＭは、各レーンから要求された時刻信号を受け取り、時刻データを各レーンに出力する。現在時刻が、時刻ハードウェアユニットによってＴＭに供給される。
【００５０】
時刻バッファは、第１の実施形態の代替実施態様では、深さ１バッファではなく、深さＮバッファ（たとえば、Ｎ個の時刻値を格納できるバッファ）として実施することができる。これは、計算レーンの間に大量のスキュー／ドリフトの可能性があると判定される場合、および同期化ポイント（あるレーンが、他方のレーンが追い付くのを待たなければならないポイントに対応する）の個数を最小にすることが望まれる場合に、性能最適化を提供することができる。
【００５１】
図６に、第１の実施形態による、ＣＲＭ  ５００およびこれがレーンに送り、マルチレーン「モジュール」のレーンから受け取る信号のブロック図を示す。ＣＲＭは、複数のレーン内のクリティカル領域を計算レーンにまたがって識別でき、同期化できるようにする。これらのクリティカル領域は、本質的に、同一の処理コンテキスト内のすべての他の実行のスレッドによってプリエンプトすることのできない、ソフトウェア内の領域である。「ホストされるアプリケーション」および「モジュール」ソフトウェアによって生成されるある種のエポックは、すべての計算レーンにまたがって正しく同期化するためにＣＲＭと相互作用する。ＣＲＭは、すべてのレーンが同期化された形で「モジュール」ＣＲ状態に入り、出ることを保証する。
【００５２】
図６のブロック図からわかるように、ＣＲＭ論理は、２レーンモジュールについて３セットの入力イベントすなわち、クリティカル領域に入るか出るためのレーン１要求、クリティカル領域に入るか出るためのレーン２要求、および「モジュール」割込みを必要とする。各レーンは、そのレーンで動作するソフトウェアまたはそのレーンのハードウェア（たとえば、ハードウェア割込み）によってクリティカル領域に入る要求を生成することができる。各レーンは、そのレーンで動作するソフトウェアまたはそのレーンのハードウェアによってクリティカル領域から出る要求を生成することができる。２レーン「モジュール」について、ＣＲＭは、単一の出力イベントすなわち直列化されたクリティカルイベントを有する。直列化されたクリティカルイベントは、タイマ割込みおよびクリティカル領域状態変化イベントの直列化を含む。すべての計算レーンが、直列化されたクリティカルイベントに基づいて同一の状態遷移を実行する。Ｎレーン処理「モジュール」について、Ｎは２以上の整数であるが、ＣＲＭは、クリティカル領域に入るか出るためのＮ個の入力要求、「モジュール」割込み、およびＮ個すべてのレーンに出力される１つの直列化されたクリティカルイベントをサポートする。当業者には、ＣＲＭが、「モジュール」の実施態様に基づいて追加のクリティカルイベントを直列化できることが明白であろう。また、当業者には、ＣＲＭを、マルチレベルオペレーティングシステム（たとえば、ユーザモード、スーパーバイザモード）などをサポートするために複数レベルのクリティカル領域をサポートするように拡張できることが明白であろう。
【００５３】
ＣＲＭは、ハードウェア論理（たとえば、フィールドプログラマブルゲートアレイ）および／またはソフトウェア論理の組合せとして実施することができる。
【００５４】
一般に、第１の実施形態によるＣＲＭは、現在動作しているスレッド（またはプロセス）とは異なる実行のスレッドへの入力になり得るデータが操作された時に必ず（ＣＲＭは、すべての計算レーンにまたがって原子性を保証する）、データ（時刻を含む）がソフトウェアから入力または出力されつつある時に必ず、ソフトウェアがその実行のスレッドを変更することを試みる時に必ず、実行のスレッドが「モジュール」再始動を介して永続することを要求されるデータを変更しつつある時に、およびモジュール割込みを生成するイベントが発生する時に必ず、（ＣＲに入る／出る要求およびモジュール割込みを介して）呼び出される。
【００５５】
図７に、ＣＲＭが、入出力プロセッサの他の機構と協力して、図１に示されたシナリオをどのように軽減するかの例を示す。
【００５６】
図７のシステムでは、レーン１および２は、本明細書で説明するＯＭユニットおよびＣＲＭユニットの追加を含めて、疎同期化されて動作している。この場合に、疎同期化は、レーン１が、レーン２の１命令未満前または後からレーン２の任意の個数の命令だけ前または後までのどこかにある可能性があることを意味する。図７に示された例について、レーン１は、レーン２の「前」にある。
【００５７】
ステップ１では、レーン１のプロセス１が、グローバルＢｏｏｌｅａｎをＴｒｕｅにセットする前に、ＡＲＩＮＣ  ６５３  Ｌｏｃｋ−Ｐｒｅｅｍｐｔｉｏｎ  ＡＰＩを呼び出す。Ｌｏｃｋ−Ｐｒｅｅｍｐｔｉｏｎへの呼出しは、クリティカル領域（ＣＲ）に入る要求を生成する。しかし、レーン１は、レーン２もＡＲＩＮＣ  ６５３  Ｌｏｃｋ−Ｐｒｅｅｍｐｔｉｏｎ  ＡＰＩを呼び出すまで「ｌｏｃｋ−ｐｒｅｅｍｐｔｉｏｎ」状態に進むことを許可されず、レーン２のＡＲＩＮＣ  ６５３  Ｌｏｃｋ−Ｐｒｅｅｍｐｔｉｏｎ  ＡＰＩの呼出しは、クリティカル領域（ＣＲ）に入る要求を生成し、その後に、ＣＲＭは、両方のレーンに直列化されたクリティカルイベントを送る。
【００５８】
ステップ２では、タイマ割込みが発生する時に、（「モジュール」が、図６に示されているように割り込む）、ＣＲに入る要求が生成される。ＣＲＭは、タイマ割込みがいずれかのレーンのコンテキスト切替えを引き起こすことを許容することができない。というのは、各レーンがＣＲを出る要求を生成し終えるまで、ＣＲＭは、別の直列化されたクリティカルイベントを生成できないからである。
【００５９】
ステップ３では、将来のある時点に、レーン１が、プリエンプションをアンロックし、レーン２が、プリエンプションをロックし、アンロックする（これは、ＣＲを出る要求を生成する）。この時点で、両方のレーンは、グローバルデータを成功して更新済みであり、優先順位プリエンプション（両方のレーンでプロセス２を開始する）は、今や、ＣＲＭが次の直列化されたクリティカルイベントを送達することを介して発生することができる。
【００６０】
ステップ４では、両方のレーンのプロセス２が、Ｂｏｏｌｅａｎを読み取り、出力（Ｔｒｕｅ）を送る。データ出力管理（ＯＭ）ユニットは、両方のレーンの出力が等しいことを検証する。図７からわかるように、ＣＲＭは、図１に示されたシナリオを軽減する。
【００６１】
図８に、ＣＲＭが、ＯＭと協力して、図２に示されたシナリオをどのように軽減するかの例を示す。
【００６２】
図８のシステムでは、２つのプロセス（プロセス１およびプロセス２）を有する同一のソフトウェアが、疎同期化された形でレーン１とレーン２との両方で動作している。この場合に、疎同期化は、レーン１が、レーン２の１命令未満前または後からレーン２の任意の個数の命令だけ前または後までのどこかにある可能性があることを意味する。図８に示された例について、レーン１は、レーン２の「前」にある。
【００６３】
ステップ１では、レーン１のプロセス１（低優先順位バックグラウンドプロセス）が、クリティカル領域に入る要求をＣＲＭに送り、その結果、ポートＦＯＯでの出力トランザクションを開始できるようになり、ＣＲＭは、レーン１がその出力トランザクションを開始することを可能にする。レーン２のプロセス１も、クリティカル領域に入る要求をＣＲＭに送り、ポートＦＯＯでの出力トランザクションを開始済みであるが、レーン１に「遅れている」。レーン１での処理は、ＦＯＯがレーンから出力済みのポイントにあるが、ＦＯＯは、まだレーン２から出力されていない。「モジュール」へのＣＲＭの導入に起因して、ＣＲＭは、レーン２のプロセス１も同一の出力トランザクションを完了し、クリティカル領域から出ることを要求するまで、レーン１がクリティカル領域から出ることを可能にしない。
【００６４】
ステップ２では、レーン１がクリティカル領域から出るのを待っており、レーン２がまだクリティカル領域でその出力トランザクションを行っている間に、タイマ割込みが発生する。
【００６５】
ステップ３では、両方のレーンがその入出力トランザクションを完了し、クリティカル領域から出る要求を送った後に、直列化された割込みを送達することができ、両方のレーンのプロセス２が、動作を開始する。この点の後に、プロセス２は、プロセス１を（両方のレーンで）安全に再始動することができる。図８からわかるように、ＣＲＭの追加は、図２に示されたシナリオで発生する障害状態を軽減する。
【００６６】
ＯＭは、すべての計算レーンのソフトウェアから出力される高完全性データが流れることを保証する。エラーが出力データフロー内で検出される場合には、ＯＭは、データが出力されるのを防ぎ、エラー表示を提供する。
【００６７】
普通の完全性と考えられる大量のデータがある場合があることに留意されたい。すなわち、デュアルレーン入出力要素（およびクロスレーン比較を実行するための関連するオーバーヘッド）を必要としない、大量のデータ（およびソフトウェアアプリケーション全体）がある場合がある。第１の実施形態によるシステムおよび方法は、普通の完全性データを計算レーンの１つから出力することを可能にする（他の計算レーンからの出力は無視される）。第１の実施形態の１つの可能な実施態様では、構成パラメータは、特定のデータまたは「ホストされるアプリケーション」全体を普通の完全性または高完全性のいずれかとして指定する。
【００６８】
第１の実施形態による方法およびシステムは、ソースでの高完全性および可用性に関する要件をサポートする。さらに、同期化ポイントが、プラットフォームで動作しているソフトウェアの状態に抽象化されているので、第１の実施形態を、異なるプロセッサをサポートするように拡張することができる。
【００６９】
第１の実施形態の性能は、入出力プレーン上で穏当に同期化でき検証できるデータの量によって制限され得る。これが問題である場合には、普通の完全性のデータおよびソフトウェアアプリケーションと高完全性のデータおよびソフトウェアアプリケーションとの間の区別（システムでの）を利用することによって、性能を最適化することができる。
【００７０】
ＣＲＭユニット、ＴＭユニット、ＩＭユニット、およびＯＭユニットの設計および実施態様は、カスタムハードウェア機能（カスタムＦＰＧＡ、ＡＳＩＣ）あるいは現在のおよび／またはおそらくは時代遅れのマイクロプロセッサ機能の属性に頼らない。したがって、第１の実施形態に従って作られるモジュールは、次の例示的な有益な属性を示す：組込みメモリコントローラ、異なるクロック回復回路を有する複数の位相ロックループ（ＰＬＬ）などを含む技術的現状のマイクロプロセッサを利用する能力（これは、ＣＲＭ、ＴＭ、ＩＭ、およびＯＭを提供する「モジュール」のコンポーネントの大幅な再設計を必要とせずに、「モジュール」の性能をたやすく高める（マイクロプロセッサアップグレードを介して）ことを可能にする）、同期化エポックの頻度（すなわち、オーバーヘッド）は、命令レベルロックステップアーキテクチャにおいてはるかにより少ないものでなければならない。したがって、同期化機構はすべて、それにアクセスすることを必要とするソフトウェアから直接にアクセス可能でなければならない（追加のシステム呼出しは不要である）。したがって、同期化に起因する追加のオーバーヘッドは、各エポックで２〜３命令程度でなければならない。
【００７１】
第１の実施形態によるシステムおよび方法の他の利益が提供される。性能改善は、ハードウェア性能改善に直接に伴ってスケーリングされなければならない。すなわち、性能改善は、プロセッサとメモリサブシステムとの間のインターフェースに多くの制約を課す可能性がある特殊なハードウェアを必要とはしない。「ホストされるアプリケーション」全体（ＤＯ−１７８Ｂ  Ｌｅｖｅｌ  Ｂ、Ｃ、Ｄ、Ｅ）を、普通の完全性として識別され得るものにすることができる。これが行われる時には、ＩＭ要素、ＴＭ要素、ＣＲＭ要素、およびＯＭ要素は、この「ホストされるアプリケーション」に関連するすべてのデータおよび制御についてディスエーブルされ、すべてのトランザクションは、１つの計算レーン上でのみ発生し、他の計算レーンは、この時間中にアイドル状態であることができる。これは、性能のためになるだけではなく、インアクティブ計算レーンのプロセッサを普通の完全性時間ウィンドウ中に「スリープ」モードにすることができる場合に、電力消費（熱生成）の削減をももたらすことができる。
【００７２】
この第１の実施形態は、システムインテグレータが、異なる「ホストされるアプリケーション」を実行するのにインアクティブ計算レーンの空き時間を利用することによって、普通の完全性「ホストされるアプリケーション」という概念を利用することを可能にする。これは、大量の普通の完全性「ホストされるアプリケーション」を有するシステムについて性能改善をもたらすことができる。
【００７３】
第１の実施形態によるシステムおよび方法は、デュアル独立計算レーンを動作させることができることに向いており、したがって、普通の完全性モードでの「モジュール」の性能を効果的に２倍にする。
【００７４】
第１の実施形態によるシステムおよび方法は、「モジュール」上の異なる計算レーン上の異なるプロセッサをサポートする。この場合に、異なるプロセッサの浮動小数点ユニットが、異なる丸め／切捨挙動を提供することが可能である（たとえば）場合があり、これは、わずかに異なるデータが異なる計算レーンから出ることをもたらす可能性がある。したがって、近似データ比較（正確データ比較ではなくを、異なるプロセッサをサポートするために、あるクラスの出力データフローについて利用することができる。
【００７５】
ＩＭ、ＴＭ、ＣＲＭ、およびＯＭを使用する機構とのソフトウェアアプリケーション相互作用を、任意のオペレーティングシステムＡＰＩに組み込むことができる（すなわち、「特殊な」ＡＰＩは不要である）。したがって、第１の実施形態によるシステムおよび方法は、ソフトウェアアプリケーション開発者に最小限の制約だけを課すと考えられる。
【００７６】
システムインテグレータ（およびまたはツール）に対する唯一の影響は、入出力構成データがデータフローおよび「ホストされるアプリケーション」を高完全性または普通の完全性として識別するために（オプションの）属性を有することであると期待される。
【００７７】
この書かれた説明は、最良の態様を含む本発明を開示するのに、およびすべての当業者が本発明を作り、使用することを可能にするのに、例を使用する。本発明の特許可能範囲は、特許請求の範囲によって定義され、当業者が思い浮かべる他の例を含むことができる。そのような他の例は、それらが特許請求の範囲の文字どおりの言葉と異ならない構造的要素を有する場合に、またはそれらが特許請求の範囲の文字どおりの言葉からの実質のない相違を有する同等の構造的要素を含む場合に、特許請求の範囲の範囲内にあることが意図されている。
【符号の説明】
【００７８】
３００  高完全疎同期「モジュール」
３１０  「ホストされるアプリケーション」要素
３２０  入出力要素
３３０Ａ  不揮発性メモリ（ＮＶＭ）
３３０Ｂ  不揮発性メモリ（ＮＶＭ）
３４０Ａ  シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）
３４０Ｂ  シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）
３５０Ａ  プロセッサＣＰＵ
３５０Ｂ  プロセッサＣＰＵ
３６０  クロック回路
３６５  クロックモニタ
３７０Ａ  レーン１入出力プロセッサ
３７０Ｂ  レーン２入出力プロセッサ
３７５Ａ  他の入出力要素
３７５Ｂ  他の入出力要素
３８０Ａ  ＡＲＩＮＣ  ６６４  Ｐａｒｔ  ７要素
３８０Ｂ  ＡＲＩＮＣ  ６６４  Ｐａｒｔ  ７要素
３８２  クロックモニタ
３８４  クロック
３８６Ａ  入出力ＰＨＹユニット
３８６Ｂ  入出力ＰＨＹユニット
３８８Ａ  ＸＦＭＲユニット
３８８Ｂ  ＸＦＭＲユニット
３９０  電源およびモニタユニット
３９５  インターフェースユニット
５００  ＣＲＭ
【図１】
0005436422.tif 000002
【図２】
0005436422.tif 000003
【図３】
0005436422.tif 000004
【図４】
0005436422.tif 000005
【図５】
0005436422.tif 000006
【図６】
0005436422.tif 000007
【図７】
0005436422.tif 000008
【図８】
0005436422.tif 000009