(57)【要約】      （修正有）【課題】プロセッサユニットを同期させるための方法を提供する。【解決手段】コンピュータシステム１１０において、外部同期装置１２２が、同期システムと通信する第１のプロセッサユニット１３２と第２のプロセッサユニット１３４との間に望ましくない量のスキュー１３６が存在するか否かを判定するために通信する。第１のプロセッサユニットと第２のプロセッサユニットとの間に望ましくない量のスキューが存在するときに、第１のプロセッサユニットに、必要とされる結果を生成することなしに選択的に動作１３８を実行させて、望ましくない量のスキューを低減させる。第１のプロセッサユニットと第２のプロセッサユニットによって生成された対応メッセージについて完全性チェックが実行される高完全性モード１０６に対して、第１のプロセッサユニットと第２のプロセッサユニットが互いに関連付けられている。【選択図】図１
2019125350.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ同期システム（１２７）であって、
第１のプロセッサユニット（１３２）で実行される内部同期装置（１３０）であって、外部同期装置（１２２）と通信して、前記外部同期装置（１２２）と通信する前記第１のプロセッサユニット（１３２）と第２のプロセッサユニット（１３４）との間に望ましくない量のスキュー（１３６）が存在するか否かを判定し、前記第１のプロセッサユニット（１３２）と前記第２のプロセッサユニット（１３４）との間に前記望ましくない量のスキュー（１３６）が存在するときに、前記第１のプロセッサ（１３２）に、必要とされる結果を生成することなしに選択的に動作（１３８）を実行させて、前記望ましくない量のスキュー（１３６）を低減させるように構成されている、内部同期装置（１３０）を備え、前記第１のプロセッサユニット（１３２）と前記第２のプロセッサユニット（１３４）によって生成された対応メッセージについて完全性チェックが実行される高完全性モード（１０６）に対して、前記第１のプロセッサユニット（１３２）と前記第２のプロセッサユニット（１３４）が互いに関連付けられている、プロセッサ同期システム（１２７）。
【請求項２】
前記外部同期装置（１２２）が、前記第１のプロセッサユニット（１３２）と前記第２のプロセッサユニット（１３４）との間の前記望ましくない量のスキュー（１３６）についての情報を記憶する、請求項１に記載のプロセッサ同期システム（１２７）。
【請求項３】
前記外部同期装置（１２２）が、前記望ましくない量のスキュー（１３６）についての情報をレジスタ（１５６）内に記憶し、前記プロセッサ同期システム（１２７）と通信する前記第１のプロセッサユニット（１３２）と前記第２のプロセッサユニット（１３４）との間に前記望ましくない量のスキュー（１３６）が存在するか否かを判定するために、前記プロセッサ同期システム（１２７）が前記外部同期装置（１２２）と通信するにあたって、前記内部同期装置（１３０）が、前記外部同期装置（１２２）内の前記第１のプロセッサユニット（１３２）のための第１のレジスタ（１５８）に書き、前記外部同期装置（１２２）内の前記第２のプロセッサユニット（１３４）のための第２のレジスタ（１６０）を読むように構成され、前記第１のレジスタ（１５８）の値を前記第２のレジスタ（１６０）の値と比較して、前記第１のプロセッサユニット（１３２）と前記第２のプロセッサユニット（１３４）が指示命令を同期して処理するように調節される時を決定する、請求項１又は２に記載のプロセッサ同期システム（１２７）。
【請求項４】
前記外部同期装置（１２２）が、前記第１のプロセッサユニット（１３２）のための第１のクロック（１６２）と前記第２のプロセッサユニット（１３４）のための第２のクロック（１６４）を含み、前記第１のクロック（１６２）と前記第２のクロック（１６４）が、前記第１のプロセッサユニット（１３２）と前記第２のプロセッサユニット（１３４）が指示命令を同期して処理するように調節するために使用される、請求項１から３のいずれか一項に記載のプロセッサ同期システム（１２７）。
【請求項５】
前記第１のプロセッサユニット（１３２）が主要なプロセッサユニットであり、前記第２のプロセッサユニット（１３４）が遅いプロセッサユニットであり、差異レジスタが前記主要なプロセッサユニットにゼロ値を返し、前記差異レジスタが前記遅いプロセッサユニットに前記望ましくない量のスキュー（１３６）の値を返す、請求項１から４のいずれか一項に記載のプロセッサ同期システム（１２７）。
【請求項６】
前記第１のプロセッサユニット（１３２）内の前記内部同期装置（１３０）が、前記第１のプロセッサユニット（１３２）が前記第２のプロセッサユニット（１３４）よりも遅いことを検出したときに、前記動作（１３８）が前記第１のプロセッサユニット（１３２）から予めスケジューリングされた遊休時間を除去し、前記第１のプロセッサユニット（１３２）と前記第２のプロセッサユニット（１３４）との間の前記望ましくない量のスキュー（１３６）が低減される、請求項１から５のいずれか一項に記載のプロセッサ同期システム（１２７）。
【請求項７】
予めスケジューリングされた遊休時間を除去した後で、前記第１のプロセッサユニット（１３２）と前記第２のプロセッサユニット（１３４）との間に未だ前記望ましくない量のスキュー（１３６）が存在するならば、更なる予めスケジューリングされた遊休時間を除去するように、前記内部同期装置（１３０）が構成されている、請求項１から６のいずれか一項に記載のプロセッサ同期システム（１２７）。
【請求項８】
プロセッサユニットを同期させるための方法であって、
外部同期装置（１２２）と通信して、同期システムと通信する第１のプロセッサユニット（１３２）と第２のプロセッサユニット（１３４）との間に望ましくない量のスキュー（１３６）が存在するか否かを判定すること、及び
前記第１のプロセッサユニット（１３２）と前記第２のプロセッサユニット（１３４）との間に前記望ましくない量のスキュー（１３６）が存在するときに、前記第１のプロセッサユニット（１３２）に、必要とされる結果を生成することなしに選択的に動作（１３８）を実行させて、前記望ましくない量のスキュー（１３６）を低減させることを含み、
前記第１のプロセッサユニット（１３２）と前記第２のプロセッサユニット（１３４）によって生成された対応メッセージについて完全性チェックが実行される高完全性モード（１０６）に対して、前記第１のプロセッサユニット（１３２）と前記第２のプロセッサユニット（１３４）が互いに関連付けられている、方法。
【請求項９】
前記第１のプロセッサユニットと前記第２のプロセッサユニットとの間の前記望ましくない量のスキューについての情報を前記外部同期装置内に記憶することを更に含む、請求項８に記載の方法。
【請求項１０】
前記外部同期装置が前記望ましくない量のスキューについての情報をレジスタ内に記憶し、前記同期システムと通信して、前記同期システムと通信する前記第１のプロセッサユニットと前記第２のプロセッサユニットとの間に前記望ましくない量のスキューが存在するか否かを判定することが、
前記同期システム内の前記第１のプロセッサユニットのための第１のレジスタに書くこと、
前記同期システム内の前記第２のプロセッサユニットのための第２のレジスタを読むこと、及び
前記第１のレジスタの値を前記第２のレジスタの値と比較して、前記第１のプロセッサユニットと前記第２のプロセッサユニットが指示命令を同期して処理するように調節される時を決定することを含む、請求項８又は９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、広くは、改良されたコンピュータシステムに関し、特に、コンピュータシステム内のプロセッサユニットのデータフローを管理するための方法及び装置に関する。
【背景技術】
【０００２】
航空機は、種々の航空機システムの信頼性、完全性、又は信頼性及び完全性を高めるために多くの冗長な構成要素を有する。例えば、システムの信頼性を高めるため、システムの完全性を高めるため、又はシステムの信頼性及び完全性を高めるために、構成要素が二重になっている場合がある。この冗長性は、システム性能を高めるために二重システムの形態を採り得る。例えば、航空機内のコンピュータシステムは、ハードウェアの冗長性に加えて情報の冗長性を含み得る。情報における誤りは、ソフトウェアの問題、放熱、又は他の原因などの様々な原因を介して生じ得る。
【０００３】
情報の完全性は、航空機内のコンピュータで実行される誤差検出及び補正プロセスを使用して取得され得る。完全性は冗長性も含み得る。冗長性によって、データの複数のコピーを取得するために、種々のコンピュータ又はプロセッサユニットで同じ動作を複数回実行すること及び同じアプリケーションを実行することが使用され得る。データのこれらのコピーは、それらのコピーが互いに一致しているか否かを判定するためにチェックされ得る。
【０００４】
ある解決策は、データの冗長なコピーを比較するために受信機に依拠し、一方で他の解決策は、データソースでの完全性を生成する。後者において、現在の解決策は、単一のコアプロセッサユニットを２つ以上の平行レーンへと配置する。これらのプロセッサユニットによって生成されたメッセージについて、データバスのロックステップチェッキングが実行される。これらの種類のプロセスは、外部チップ、プロセッサアーキテクチャの修正、又はそれらの何らかの組み合わせを使用して実行される。これらの種類の解決策は、特定の種類のプロセッサに対してカスタマイズされる。結果として、他の種類のプロセッサが使用されるときに、これらの解決策は、メモリバスアーキテクチャ、利用可能な比較ポイント、又は他の特性などのそれらのプロセッサの特性によって、上手く機能しない場合がある。
【０００５】
したがって、少なくとも上述の問題点のうちの幾つかと、起こり得る他の問題点を考慮した方法及び装置を有することが望ましいであろう。例えば、プロセッサユニットを使用してデータを処理するための所望の効率を取得する一方で、単一コアを有するプロセッサユニットを使用するとき又はマルチプルコアを使用するときに、データ完全性を実現するという技術的問題を克服する方法及び装置を有することが望ましいだろう。
【発明の概要】
【０００６】
本開示の一実施形態は、第１のプロセッサユニットで実行される内部同期装置を備えたプロセッサ同期システムを提供する。内部同期装置は、外部同期装置と通信し、外部同期装置と通信する第１のプロセッサユニットと第２のプロセッサユニットとの間に、望ましくない量のスキューが存在するか否かを判定する。内部同期装置は、必要とされる結果を生成することなしに、第１のプロセッサユニットに選択的に動作を実行させる。それによって、第１のプロセッサユニットと第２のプロセッサユニットとの間に望ましくない量のスキューが存在するときに、望ましくないスキューの量を低減させる。第１のプロセッサユニットと第２のプロセッサユニットによって生成された対応メッセージについて完全性チェックが実行される高完全性モードに対して、第１のプロセッサユニットと第２のプロセッサユニットが互いに関連付けられている。
【０００７】
本開示の別の一実施形態は、プロセッサユニットを同期させるための方法を提供する。外部同期装置が、同期システムと通信する第１のプロセッサユニットと第２のプロセッサユニットとの間に望ましくない量のスキューが存在するか否かを判定するように通信する。第１のプロセッサユニットが、必要とされる結果を生成することなしに、選択的に動作を実行するように指示される。それによって、第１のプロセッサユニットと第２のプロセッサユニットとの間に望ましくない量のスキューが存在するときに、望ましくないスキューの量が低減される。第１のプロセッサユニットと第２のプロセッサユニットによって生成された対応メッセージについて完全性チェックが実行される高完全性モードに対して、第１のプロセッサユニットと第２のプロセッサユニットが互いに関連付けられている。
【０００８】
特徴及び機能は、本開示の様々な実施形態において単独で実現することが可能であるか、又は以下の説明及び図面を参照して更なる詳細が理解され得る、更に別の実施形態において組み合わされることが可能である。
【０００９】
例示的な実施形態の特性と考えられる新規な特徴は、付随する特許請求の範囲に明記される。しかし、例示的な実施形態並びに好ましい使用モード、さらなる目的及びそれらの特徴は、添付図面を参照しつつ本開示の例示的な実施形態に関する以下の詳細な説明を読むことによって、最もよく理解されるであろう。
【図面の簡単な説明】
【００１０】
【図１】例示的な一実施形態による、データ処理環境のブロック図である。
【図２】例示的な一実施形態による、混合完全性データ処理システムの図である。
【図３】例示的な一実施形態による、複数のプロセッサのデータ転送を管理するためのプロセスのフローチャートの図である。
【図４】例示的な一実施形態による、同期プロセッサのためのプロセスのフローチャートの図である。
【図５】例示的な一実施形態による、同期プロセッサユニットのためのプロセスのフローチャートの図である。
【図６】例示的な一実施形態による、同期プロセッサユニットのためのプロセスのフローチャートの図である。
【図７】例示的な一実施形態による、プロセッサユニットからのメッセージの送信を同期させるためのプロセスのフローチャートの図である。
【図８】例示的な一実施形態による、メッセージを送信するためのプロセスのフローチャートの図である。
【図９】例示的な一実施形態による、メッセージを送信するためのプロセスのフローチャートの図である。
【図１０】例示的な一実施形態による、メッセージを受信するためのプロセスのフローチャートの図である。
【図１１】例示的な一実施形態による、メッセージを受信するためのプロセスのフローチャートの図である。
【図１２】例示的な一実施形態による、メッセージを受信するためのプロセスのフローチャートの図である。
【図１３】例示的な一実施形態による、メッセージを受信するためのプロセスのフローチャートの図である。
【図１４】例示的な一実施形態による、データ処理システムのブロック図である。
【図１５】例示的な一実施形態による、航空機製造及び保守方法のブロック図である。
【図１６】例示的な一実施形態が実装され得る航空機のブロック図である。
【発明を実施するための形態】
【００１１】
例示的な実施形態は、１以上の種々の検討事項を認識し考慮する。例えば、例示的な実施形態は、１以上の冗長なアプリケーションを実行するプロセッサユニットの任意のペア又はグルーピングを使用するときに、データ出力の完全性を高めることが望ましいと認識し考慮する。例示的な実施形態は、データの完全性を高めるための動作の１つのモードが、動作の標準完全性モードと称されるデータの通常の処理と比較して、動作の高完全性モードであることを認識し考慮する。
【００１２】
したがって、例示的な実施形態は、データを管理するための方法、装置、及びシステムを提供する。例示的な一実施例では、メッセージ管理システムが完全性マネージャーを備える。完全性マネージャーは、混合完全性モードを有し、混合完全性モードのうちの選択されたモードに基づいて、プロセッサユニットと外部ノードとの間のメッセージの交換を管理するように構成されている。完全性マネージャーは、プロセッサユニット及び外部ノードと通信するハードウェ内に位置付けられ、プロセッサユニットからの冗長に計算された出力が高完全性モードにおいて一致することをチェックする。
【００１３】
別の例示的な一実施例では、プロセッサ同期システムが、第１のプロセッサユニットで実行される内部同期装置を備える。内部同期装置は、外部同期装置と通信し、外部同期装置と通信する第１のプロセッサユニットと第２のプロセッサユニットとの間に、望ましくない量のスキューが存在するか否かを判定する。内部同期装置は、必要とされる結果を生成することなしに、第１のプロセッサユニットに選択的に動作を実行させるように構成されている。それによって、第１のプロセッサユニットと第２のプロセッサユニットとの間に望ましくない量のスキューが存在するときに、スキューの量を低減させることができる。
【００１４】
次に、図面、特に、図１を参照すると、例示的な一実施形態によるデータ処理環境のブロック図が描かれている。データ処理環境１００は、プロセッサユニット１０２が、混合完全性モード１０４で管理され得る環境である。この実施例では、プロセッサユニット１０２が、マルチコアプロセッサユニット、単一コアプロセッサユニット、同種マルチコアプロセッサユニット、異種マルチコアプロセッサユニット、グラフィックスプロセッサユニット、汎用プロセッサユニット、又は他の何らかの適切な種類のプロセッサユニット、のうちの少なくとも１つから選択される。
【００１５】
例示的な一実施例では、プロセッサユニット１０２が、同種又は異種であり得る。プロセッサユニット１０２が同種であるときに、それらのプロセッサユニットは、同じ指示命令セット、デザイン、モデル、部品番号、又はプロセッサユニット１０２の種類を規定する他のパラメータ、のうちの少なくとも１つを有し得る。
【００１６】
この例示的な実施例では、混合完全性モード１０４が、高完全性モード１０６と標準完全性モード１０８を含む。プロセッサユニット１０２のためのレーンの間のメッセージ比較又はメッセージ同期のうちの少なくとも一方が、高完全性モード１０６で実行される。例示的な一実施例では、レーンが処理ユニットである。
【００１７】
高完全性モード１０６にあるときに、完全性マネージャー１２０は、プロセッサユニット１０２のうちの複数のプロセッサユニットからの冗長に計算された出力が一致することをチェックする。例示的な一実施例において、一致は、複数のプロセッサユニットから送信されたデータが同じであることを意味する。完全性マネージャー１２０は、複数のプロセッサユニットから同じデータが送信されていることを保証するためにチェックする。
【００１８】
例えば、高完全性モード１０６で動作している２つのプロセッサユニットは、同じアプリケーションを実行することができ、同じ機能を実行し又は同じデータ処理を実行するように指示命令されている。高完全性モード１０６では、完全性マネージャー１２０が、プロセッサユニット１０２のうちの２つのプロセッサユニットによって生成された出力が同じであることを保証するためにチェックする。
【００１９】
描かれているように、プロセッサユニット１０２は、コンピュータシステム１１０内に位置付けられている。描かれているように、コンピュータシステム１１０は、物理的なハードウェアシステムであり、１以上のデータ処理システムを含む。２つ以上のデータ処理システムが存在しているときに、プロセッサユニットは、単一のデータ処理システム内に位置付けられ得るか、又はデータ処理システムのうちの２つ以上の中に位置付けられ得る。更に、２つ以上のデータ処理システムが存在するときに、これらのデータ処理システムは、通信媒体を使用して互いと通信する。通信媒体は、ネットワークであってもよい。データ処理システムは、コンピュータ、サーバコンピュータ、タブレット、又は他の何らかの適切なデータ処理システム、のうちの少なくとも１つから選択されてよい。
【００２０】
この例示的な実施例では、データマネージャー１１２が、プロセッサユニット１０２ためのデータ１１４の処理又はデータ１１４の交換のうちの少なくとも一方を管理する。本明細書で使用される場合、列挙されたアイテムと共に使用される「〜のうちの少なくとも１つ」という表現は、列挙されたアイテムのうちの１以上の種々の組み合わせが使用されてもよく、且つ列挙された各アイテムのうちの１つだけが必要とされてもよいということを意味する。換言すると、「〜のうちの少なくとも１つ」とは、アイテムの任意の組み合わせ、及び幾つかのアイテムが、列挙された中から使用され得ることを意味するが、列挙されたアイテムの全てが必要となる訳ではないことを意味する。アイテムとは、特定の対象物、物品、又はカテゴリであってよい。
【００２１】
例えば、限定するものではないが、「アイテムＡ、アイテムＢ、及びアイテムＣのうちの少なくとも１つ」は、アイテムＡ、アイテムＡ及びアイテムＢ、若しくはアイテムＢを含むことができる。この例はまた、アイテムＡ、アイテムＢ、及びアイテムＣ、若しくはアイテムＢ及びアイテムＣも含むことができる。言うまでもなく、これらのアイテムのいずれかの組み合わせが存在し得る。幾つかの実施例では、「〜のうちの少なくとも１つ」は、限定しないが例として、「２個のアイテムＡ、１個のアイテムＢ、及び１０個のアイテムＣ」、「４個のアイテムＢ及び７個のアイテムＣ」、又は他の好適な組み合わせであってよい。
【００２２】
描かれているように、データマネージャー１１２は、コンピュータシステム１１０内に位置付けられている。データマネージャー１１２は、コンピュータシステム１１０内でプロセッサユニット１０２と同じ又は異なるデータ処理システムに位置付けられ得る。
【００２３】
描かれているように、データマネージャー１１２は、プロセッサユニット１０２によるデータ１１４の処理を管理する。例えば、プロセッサユニット１０２が高完全性モード１０６で動作するときに、データマネージャー１１２は、データ１１４を処理するためにプロセッサユニット１０２のタイミングを調節することができる。タイミングのこの調節は、プロセッサユニット１０２によるデータ１１４の処理において、データ１１４を同期されたやり方で同時に処理させる。言い換えると、プロセッサユニット１０２は、実質的に同じ時間に結果を生成するためにデータ１１４を処理するように同じアプリケーションを実行する。これらの結果は、データ１１４を処理することから生成された結果の完全性を判断するためにこれらの結果が比較され得る、プロセッサユニット１０２のうちの２つ以上によって生成され得る。
【００２４】
描かれているように、プロセッサユニット１０２のうちの２つ以上は、プロセッサユニット１０２のうちの他のプロセッサユニットが標準完全性モード１０８で動作することができる間に、高完全性モード１０６で動作することができる。言い換えると、データマネージャー１１２は、同時に混合完全性モード１０４のうちの異なるモードで処理及びデータを管理することができる。混合完全性モード１０４は、プロセッサユニット１０２のうちの一部が、プロセッサユニット１０２のうちの他のプロセッサユニットが標準完全性モード１０８で動作することができる間に、高完全性モード１０６で動作することができることを意味する。混合完全性モード１０４は、プロセッサユニット１０２の全部が、高完全性モード１０６で又は標準完全性モード１０８で動作することができることも意味する。
【００２５】
他の例示的な実施例では、データマネージャー１１２が、外部ノード１１６とのデータ１１４の交換を管理することができる。高完全性モード１０６で動作しているときに、データマネージャー１１２は、データ１１４を包含する転送メッセージ１１８の受信又は送信のうちの少なくとも一方のタイミングを調節することができる。例えば、データマネージャー１１２は、プロセッサユニット１０２のうちの２つ以上によるメッセージの受信を管理することができる。それによって、プロセッサユニット１０２のうちのこれらのプロセッサユニットは、実質的に同時に、実質的に同じ順序で、又はそれらの何らかの組み合わせで、転送メッセージ１１８内の同じメッセージを受信する。
【００２６】
プロセッサユニット１０２ためのデータマネージャー１１２のうちの少なくとも１つの範囲内の幾つかの異なる機能を使用して、これらの及び他の機能が実行され得る。例えば、データマネージャー１１２内の完全性マネージャー１２０、データマネージャー１１２内の外部同期装置１２２、又はプロセッサユニット１０２内の内部同期装置１２４のうちの１以上、のうちの少なくとも１つを使用して、それらの機能が実行され得る。
【００２７】
例示的な一実施例では、メッセージ管理システム１２５が、完全性マネージャー１２０を使用して設けられ得る。この例示的な実施例では、完全性マネージャー１２０が、混合完全性モード１０４を有する。描かれているように、完全性マネージャー１２０は、混合完全性モード１０４のうちの選択されたモード１２８に基づいて、プロセッサユニット１０２と外部ノード１１６との間の転送メッセージ１１８の交換を管理するように構成されている。この例示的な実施例では、完全性マネージャー１２０が、プロセッサユニット１０２及び外部ノード１１６と通信するハードウェア内に位置付けられている。
【００２８】
描かれているように、外部ノード１１６は、コンピュータシステム１１０の外側に位置付けられている。他の実施例では、外部ノード１１６が、コンピュータシステム１１０の内側に位置付けられ得る。外部ノード１１６は、幾つかの異なる形態を採り得る。例えば、外部ノード１１６は、プロセッサユニット１０２と通信する外部プロセッサ、組込型コンピュータ、デスクトップコンピュータ、ネットワークデバイス、ネットワークスイッチ、及び他の何らかの適切な種類の外部デバイス、を含む群から選択され得る。
【００２９】
例示的な一実施例では、プロセッサユニット１０２の第１の部分が高完全性で動作し、プロセッサユニット１０２の第２の部分が標準完全性で動作する。完全性マネージャー１２０は、選択されたモード１２８である高完全性モード１０６でプロセッサユニット１０２の第１の部分のための転送メッセージ１１８を管理し、選択されたモード１２８である標準完全性モード１０８でプロセッサユニット１０２の第２の部分のための転送メッセージ１１８を管理するように構成されている。転送メッセージ１１８は、プロセッサユニット１０２に又はプロセッサユニット１０２から送信され得るメッセージである。
【００３０】
描かれているように、完全性マネージャー１２０は、高完全性モード１０６と標準完全性モード１０８で同時に動作するプロセッサユニット１０２を管理するように構成されている。この種類の動作は、プロセッサユニット１０２が高完全性モード１０６又は標準完全性モード１０８のうちの少なくとも一方で動作する、混合完全性モード１０４を支援することを可能にする。言い換えると、プロセッサユニット１０２は、これらのモードの一方又は両方で同時に動作し得る。
【００３１】
この例示的な実施例では、完全性マネージャー１２０が、混合完全性モード１０４のうちの選択されたモード１２８が高完全性モード１０６であるときに、プロセッサユニット１０２のために転送メッセージ１１８を受信すること又はプロセッサユニット１０２のために転送メッセージ１１８を送信することのうちの少なくとも一方を同期させるように構成されている。
【００３２】
例えば、第１プロセッサユニット１３２と第２のプロセッサユニット１３４が高完全性で動作するときに、完全性マネージャー１２０は、外部ノード１１６からの転送メッセージ１１８内で受信された外部メッセージ１４０を第１のプロセッサユニット１３２のための第１の待ち行列１４２内に置き、外部メッセージ１４０のコピー１４４を第２のプロセッサユニット１３４のための第２の待ち行列１４６内に置くように構成されている。完全性マネージャー１２０は、第１の待ち行列１４２と第２の待ち行列１４６を制御する。それによって、平行レーンの一貫性が存在するように同じ深度まで、第１のプロセッサユニット１３２が第１の待ち行列１４２から読むと共に、第２のプロセッサユニット１３４が第２の待ち行列１４６から読む。例示的な一実施例では、待ち行列内のメッセージの量が深度である。
【００３３】
例示的な一実施例では、待ち行列を管理することに加えて、完全性マネージャー１２０が、第１のプロセッサユニット１３２から受信された受信メッセージ１５０を、第２のプロセッサユニット１３４から受信された対応メッセージ１５４内の対応メッセージ１５２と比較する。受信メッセージ１５０と対応メッセージ１５２が一致したときに、完全性マネージャー１２０は、受信メッセージ１５０を外部ノード１１６に送信する。
【００３４】
完全性マネージャー１２０によって行われる比較は、幾つかの異なるやり方で実行され得る。例えば、比較は、ビット単位の比較又は周期的冗長チェックのうちの少なくとも一方を使用して行われ得る。この実施例では、受信メッセージ１５０と対応メッセージ１５２との間に一致が存在しないならば、又は対応メッセージ１５２が選択された期間内に受信されないならば、それは望ましくない量のスキューが存在することを示し、完全性マネージャー１２０は受信メッセージ１５０を捨てる。この実施例では、一致が存在しないときに、対応メッセージ１５２が捨てられる。
【００３５】
更に、完全性マネージャー１２０が正確なチェックであるビット単位の比較を使用してメッセージ比較するときに、メッセージを完全性マネージャー１２０に送信する前に、値の精度を低減させるようなデータ値をプロセッサユニット１０２の各々が切り捨てることができる。例えば、メッセージ内の値が６４ビットであるならば、切り捨てが使用されないならば全ての６４ビットがチェックされる。ある場合では、ビット単位の比較を使用してデータを処理するときに、異なるレーン内で動作するプロセッサユニット１０２の間で望ましくない結果が生じ得る。結果として、プロセッサユニット１０２は、精度のレベルを低減させるような１以上のビットを切り捨てることができる。したがって、プロセッサユニット１０２が高完全性モード１０６にあるときに、ビットを切り捨てて、プロセッサユニット１０２によって可変レベルの精度を実現することができる。
【００３６】
別の例示的な一実施例では、外部同期装置１２２と通信する内部同期装置１２４を利用する、プロセッサ同期システム１２７が設けられ得る。描かれているように、内部同期装置１２４のうちの内部同期装置１３０は、プロセッサユニット１０２のうちの第１のプロセッサユニット１３２で実行される。内部同期装置１３０は、データマネージャー１１２内の外部同期装置１２２と通信して、外部同期装置１２２と通信する第１のプロセッサユニット１３２と第２のプロセッサユニット１３４との間に望ましくない量のスキュー１３６が存在するか否かを判定するように構成されている。例示的な一実施例において、スキューは、信号が２つ以上のプロセッサユニットから受信される時間の差である。スキューは、プロセッサユニットの間のクロックスキュー及び他の要因によって引き起こされ得る。
【００３７】
内部同期装置１３０は、必要とされる結果を生成することなしに、第１のプロセッサユニット１３２に選択的に動作１３８を実行させるように構成されている。それによって、第１のプロセッサユニット１３２と第２のプロセッサユニット１３４との間に望ましくない量のスキュー１３６が存在するときに、スキュー１３６の量を低減させることができる。
【００３８】
プロセッサユニット１０２によって処理におけるタイミングを調節するためにスキュー１３６を低減させる例示的な一実施例では、動作１３８が、第１のプロセッサユニット１３２から予めスケジューリングされた遊休時間１６６を除去し、第１のプロセッサユニット１３２と第２のプロセッサユニット１３４との間のスキュー１３６の量を低減させる。遅いプロセッサ（lagging processor）から予めスケジューリングされた遊休時間を除去することは、そのプロセッサユニットが、指示命令を処理することに関する時間にスキップすることをもたらす。内部同期装置１３０は、予めスケジューリングされた遊休時間１６６を除去した後で、第１のプロセッサユニット１３２と第２のプロセッサユニット１３４との間で未だ望ましくない量のスキュー１３６が存在するならば、更なる予めスケジューリングされた遊休時間１６８を除去するように構成されている。
【００３９】
更に別の例示的な一実施例では、第１のプロセッサユニット１３２が、主要なプロセッサユニット（leading processor unit）であり、第２のプロセッサユニット１３４が、遅いプロセッサユニット（lagging processor unit）であり、動作は、第１のプロセッサユニット１３２に遊休時間を追加させて、第２のプロセッサユニット１３４である遅いプロセッサユニットが調節されたタイミングを有し得るように、第１のプロセッサユニット１３２にアイドリングさせる。このやり方では、２つのプロセッサユニットのタイミングが、同期された処理のために調節され得る。
【００４０】
描かれているように、第１のプロセッサユニット１３２と第２のプロセッサユニット１３４は、第１のプロセッサユニット１３２と第２のプロセッサユニット１３４によって生成された転送メッセージ１１８のうちの対応メッセージ１５４について完全性チェックが実行される高完全性モード１０６に対して、互いに関連付けられている。
【００４１】
外部同期装置１２２は、第１のプロセッサユニット１３２と第２のプロセッサユニット１３４との間のスキュー１３６の量についての情報を記憶することができる。この情報は、外部同期装置１２２内のレジスタ１５６又は他の記憶機構の中に記憶され得る。例えば、その情報は、レジスタ１５６内に設定されるフラグ又はビットの群であり得る。本明細書で使用される場合、アイテムに関連して「〜の群」を用いた場合には、１以上のアイテムを意味する。例えば、「ビットの群」は、１以上のビットである。
【００４２】
外部同期装置１２２は、スキュー１３６の量についての情報をレジスタ１５６内に記憶する。内部同期装置１３０は、外部同期装置１２２内の第１のプロセッサユニット１３２のための第１のレジスタ１５８に書き、外部同期装置１２２内の第２のプロセッサユニット１３４のための第２のレジスタ１６０を読むように構成され、第１のレジスタ１５８の値を第２のレジスタ１６０の値と比較して、第１のプロセッサユニット１３２と第２のプロセッサユニット１３４が、同期して指示命令を処理するようにタイミングが調節される時を決定する。
【００４３】
別の例示的な一実施例では、外部同期装置１２２が、第１のプロセッサユニット１３２のための第１のクロック１６２、及び第２のプロセッサユニット１３４のための第２のクロック１６４を含む。第１のクロック１６２と第２のクロック１６４は、第１のプロセッサユニット１３２と第２のプロセッサユニット１３４が、同期して指示命令を処理するようにタイミングを調節するために使用される。
【００４４】
完全性マネージャー１２０、外部同期装置１２２、又は内部同期装置１２４のうちの少なくとも１つは、ソフトウェア、ハードウェア、ファームウェア、又はそれらの組み合わせの中に実装され得る。ソフトウェアが用いられるときに、完全性マネージャー１２０、外部同期装置１２２、又は内部同期装置１２４のうちの少なくとも１つによって実行される動作は、プロセッサユニットなどのハードウェアで実行されるように構成されたプログラムコードとして実装され得る。ファームウェアが使用されるときに、完全性マネージャー１２０、外部同期装置１２２、又は内部同期装置１２４のうちの少なくとも１つによって実行される動作は、プロセッサユニットで実行されるよう、プログラムコード及びデータとして実装され、固定記憶装置内に記憶され得る。ハードウェアが採用されるときに、ハードウェアは、完全性マネージャー１２０、外部同期装置１２２、又は内部同期装置１２４のうちの少なくとも１つにおいて動作を実行するように動作する回路を含み得る。
【００４５】
例示的な実施例において、ハードウェアは、回路システム、集積回路、特定用途向け集積回路（ASIC）、プログラマブル論理デバイス、又は、幾つかの動作を実行するよう構成された何らかの他の適切な種類のハードウェア、のうちの少なくとも１つから選択された形態を採り得る。プログラマブル論理デバイスを用いる場合、該デバイスは、幾つかの動作を実行するように構成されてよい。該デバイスは、幾つかの動作を実行するよう、後で再構成されてもよく、または恒久的に構成されてもよい。プログラマブル論理デバイスは、例えば、プログラマブル論理アレイ、プログラマブルアレイ論理、フィールドプログラマブル論理アレイ、フィールドプログラマブルゲートアレイ、及び他の適切なハードウェアデバイスを含む。加えて、これらのプロセスは、無機構成要素に組み込まれた有機構成要素に実装されていてもよいし、全てが人間以外の有機構成要素でから成っていてもよい。例えば、これらのプロセスは、有機半導体の回路として実装されていてよい。
【００４６】
例えば、完全性マネージャー１２０は、単一の論理デバイスとして又は複数の異なる種類の論理デバイスとしてハードウェア内に実装され得る。異なる種類の論理デバイスは、共通モード故障などの潜在的な問題を低減させるように選択され得る。例えば、第１の論理デバイスは、フィールドプログラマブルゲートアレイであり、一方、第２の論理デバイスは、特定用途向け集積回路（ASIC）であり得る。更に、２つ以上の論理デバイスが使用されるときに、各論理デバイスは、そこを通ってメッセージが特定のプロセッサユニットのために処理されるところのレーンを有する。論理デバイスは、論理デバイスが時間において調節され得るように接続（connection）を有し得る。
【００４７】
例示的な一実施例では、プロセッサユニットを使用してデータを処理するための冗長性における所望の効率を取得することによって技術的問題を克服する、１以上の技術的解決策が存在する。結果として、１以上の技術的解決策が、プロセッサユニットによってデータを処理する効率を高める技術的効果を提供し得る。例えば、１以上の技術的解決策は、データを処理することにおけるタイミングを調節すること、又は、高完全性モードで動作しているプロセッサユニットによってメッセージを処理すること、のうちの少なくとも一方を可能にし得る。
【００４８】
結果として、コンピュータシステム１１０は、専用コンピュータシステムとして動作する。コンピュータシステム１１０内のデータマネージャー１１２又は内部同期装置１２４のうちの少なくとも一方は、データ１１４の処理中に存在するべき混合完全性モード１０４を可能にするやり方で、データ１１４の処理を管理することを可能にする。特に、データマネージャー１１２又は内部同期装置１２４のうちの少なくとも一方は、データマネージャー１１２、内部同期装置１２４、又はそれらの両方を有さない現在利用可能な汎用コンピュータシステムと比較して、コンピュータシステム１１０を専用コンピュータシステムに変換する。
【００４９】
図１のデータ処理環境の図は、例示的な一実施形態が実装され得るやり方に対して物理的又は構造的な限定を課すことを意図するものではない。示されている構成要素に加えて又は代えて、他の構成要素が使用されてもよい。幾つかの構成要素は不要であってよい。更に、一部の機能構成要素を図示するために、ブロックが提示されている。例示的な実施形態で実施されるときに、これらのブロックのうちの１つ以上が、結合されても、分割されても、結合且つ分割されて異なるブロックになってもよい。
【００５０】
例えば、データ処理環境１００は、外部ノード１１６のみを伴って示されている。別の例示的な一実施例では、１以上の外部ノードが、外部ノード１１６に加えて又は外部ノード１１６の代わりに存在する。
【００５１】
例示的な一実施例は、航空機に関して説明されているが、他の例示的な実施例は他の用途に応用されてもよい。例えば、例示的な一実施例は、医療撮像、会計、天気予報、又は他の適切な用途において使用されるために実装され得る。
【００５２】
更なる別の一実施例として、２つのプロセッサユニットが、プロセッサユニット１０２内で表された。プロセッサユニット１０２のうちの１以上が、第１のプロセッサユニット１３２と第２のプロセッサユニット１３４に加えて、又はそれらの代わりに存在し得る。
【００５３】
例えば、第３のプロセッサユニットが、プロセッサユニット１０２内に存在し得る。内部同期装置１３０は、外部同期装置１２２と通信して、外部同期装置と通信する第１のプロセッサユニット１３２、第２のプロセッサユニット１３４、及び第３のプロセッサユニットの間に、望ましくない量のスキュー１３６が存在するか否かを判定し、必要とされる結果を生成することなしに、第１のプロセッサユニット１３２に選択的に動作１３８を実行させるように構成されている。それによって、望ましくない量のスキュー１３６が存在するときに、第１のプロセッサユニット１３２、第２のプロセッサユニット１３４、及び第３のプロセッサユニットの間のスキュー１３６の量が低減される。
【００５４】
例えば、混合完全性モード１０４に対して、２つの完全性モードが示されている。他の例示的な実施例では、他の幾つかの完全性モードが存在し得る。例えば、３つの完全性モード、５つの完全性モード、又は幾つかの他の数の完全性モードが利用され得る。例えば、これらの更なる完全性モードは、異なる数の比較を使用する。例えば、３つの完全性モードでは、アプリケーションが、プロセッサユニット１０２のうちの３つの異なるプロセッサユニットで実行され、同じデータを処理し得る。３つのプロセッサユニットで実行されているアプリケーションからの出力は、データマネージャー１１２内の完全性マネージャー１２０によって比較され且つ投票される。投票において、３つのプロセッサユニットからの出力が比較される。その出力値に対する大多数が特定される。大多数は、３つの出力値うちの２つ又は３つの出力値のうちの３つが同じであるということであり得る。この出力値は、使用される値である。少数派の出力値は捨てられる。
【００５５】
次に図２を参照すると、例示的な一実施形態による混合完全性データ処理システムの図が描かれている。この例示的な実施例では、混合完全性データ処理システム２００が、図１のデータマネージャー１１２の制御の下で、図１のプロセッサユニット１０２を使用して実装され得る。
【００５６】
この例示的な実施例では、プロセッサユニット２０２とプロセッサユニット２０４が、マルチコアプロセッサである。描かれているように、プロセッサユニット２０２は、コア２０６とコア２０８を含む。プロセッサユニット２０４は、コア２１０とコア２１２を含む。描かれているように、これらの異なるコアは、タイムスライス２１４、タイムスライス２１６、及びタイムスライス２１８などの、タイムスライス中にアプリケーションを実行させる。
【００５７】
この例示的な実施例では、プロセッサユニット２０２内のコア２０６が、タイムスライス２１４中にアプリケーション１ ２２０を、タイムスライス２１６中にアプリケーション４２２２を、タイムスライス２１８中にアプリケーション１２２０を実行させる。プロセッサユニット２０２内のコア２０８が、タイムスライス２１４中にアプリケーション２２２４を、タイムスライス２１６中にアプリケーション５２２６を、タイムスライス２１８中にアプリケーション６２２８を実行させる。
【００５８】
描かれているように、プロセッサユニット２０４内のコア２１０が、タイムスライス２１４中にアプリケーション１ ２２０を、タイムスライス２１６中にアプリケーション４２２２を、タイムスライス２１８中にアプリケーション１２２０を実行させる。プロセッサユニット２０４内のコア２１２が、タイムスライス２１４中にアプリケーション３２３０を、タイムスライス２１６中にアプリケーション５２２６を、タイムスライス２１８中にアプリケーション３２３０を実行させる。
【００５９】
アプリケーション１ ２２０は、高完全性モードを使用して、プロセッサユニット２０２内のコア２０６、及びプロセッサユニット２０４内のコア２１０によって実行される。同様のやり方で、アプリケーション４２２２も、コア２０６及びコア２１０によって高完全性で実行される。プロセッサユニット２０２内のコア２０８及びプロセッサユニット２０４内のコア２１２は、両方とも、高完全性モードでアプリケーション５２２６を実行させる。アプリケーション２２２４、アプリケーション３２３０、アプリケーション４２２２、及びアプリケーション６２２８は、プロセッサユニット２０４内のコア２１０及びプロセッサユニット２０２内のコア２０８によって、標準完全性で実行される。データの処理又はメッセージの交換のうちの少なくとも一方は、図１のデータマネージャー１１２によって管理されて、この実施例での混合完全性モードを提供する。ある実施例では、プロセスが、コアのためのモードに適用されて、より高いレベルの粒度（granularity）を実現し得る。
【００６０】
混合完全性データ処理システム２００の図は、図１のデータ１１４の混合完全性処理に対して、如何にして図１のプロセッサユニット１０２が実装され得るかの、例示的な一実施態様として提供されている。この図は、他の例示的な実施例が実装され得るやり方を限定することを意図していない。例えば、他の数のプロセッサユニットが、他の例示的な実施例において実装され得る。
【００６１】
次に図３を参照すると、例示的な一実施形態による、複数のプロセッサのデータ転送を管理するためのプロセスのフローチャートの図が描かれている。この図で示されているプロセスは、図１の完全性マネージャー１２０内に実装され得る。
【００６２】
該プロセスは、プロセッサユニットと外部ノードとの間で交換されるメッセージを、プロセッサユニット及び外部ノードと通信するハードウェア内に位置付けられた完全性マネージャー内で受信し、高完全性モードが選択されたときにプロセッサユニットからの冗長に計算された出力が一致することをチェックすることによって開始する（動作３００）。該プロセスは、混合完全性モードのうちの選択されたモードに基づいて、プロセッサユニットによる外部ノードとのメッセージの交換を管理する（動作３０２）。該プロセスは、その後、終了する。
【００６３】
次に図４を参照すると、例示的な一実施形態による、プロセッサユニットを同期させるためのプロセスのフローチャートの図が描かれている。図４で示されているプロセスは、図１の内部同期装置１３０内に実装され得る。
【００６４】
該プロセスは、外部同期装置と通信して、同期システムと通信する第１のプロセッサユニットと第２のプロセッサユニットとの間に望ましくない量のスキューが存在するか否かを判定することによって開始する（動作４００）。該プロセスは、必要とされる結果を生成することなしに、第１のプロセッサユニットに選択的に動作を実行させる。それによって、第１のプロセッサユニットと第２のプロセッサユニットとの間に望ましくない量のスキューが存在するときに、スキューの量を低減させることができる（動作４０２）。該プロセスは、その後、終了する。例示的な一実施例では、第１のプロセッサユニットと第２のプロセッサユニットによって生成された対応メッセージについて完全性チェックが実行される高完全性モードに対して、第１のプロセッサユニットと第２のプロセッサユニットが互いに関連付けられているときに、このプロセスが使用され得る。
【００６５】
次に図５を参照すると、例示的な一実施形態による、プロセッサユニットを同期させるためのプロセスのフローチャートの図が描かれている。図５で描かれているプロセスは、図１のデータ処理環境１００において実施することができる。このプロセスは、図１のプロセッサユニット１０２のうちのプロセッサユニット内に実装され得る。特に、該プロセスは、図１の第１のプロセッサユニット１３２で実行される内部同期装置１３０などの内部同期装置内に実装され得る。
【００６６】
該プロセスは、内部同期装置のプロセッサユニットが、外部同期装置内の共通レジスタの中へ論理１を書き込むことによって開始する（動作５００）。共通レジスタは、データを処理するためにプロセッサユニットのタイミングを互いに調節することを可能にするプロセッサユニットによってアクセスされ得る。該プロセッサユニットは、特定のクロック速度で実行されるように設計され得る。しかし、プロセッサユニットの実際の物理的な実施態様は、仕様からわずかに変動し得る。このレジスタは、実行中にタイミングプロセッサを調節するために使用され得る。それによって、タイミングプロセッサは、同期したやり方でできる限り同時に近い状態で指示命令を実行することができる。
【００６７】
該プロセスは、外部同期装置内の共通ステータスレジスタを読む（動作５０２）。共通ステータスレジスタから読まれた値が論理１であるか否かに関して判定が行われる（動作５０４）。共通ステータスレジスタは、プロセッサユニットの間で共有される。単純なステータスレジスタは、２つ以上のプロセッサユニットによって見ることはできない。
【００６８】
値が論理１ならば、プロセッサは処理を開始する（動作５０６）。該プロセスは、その後、終了する。例示的な一実施例では、処理が、アプリケーションの初期化、アプリケーションの開始、アプリケーションの実行の継続、又は他の何らかの適切な動作を含み得る。再び動作５０４を参照すると、値が論理１でないならば、該プロセスは動作５０２に戻る。
【００６９】
次に図６を参照すると、例示的な一実施形態による、プロセッサユニットを同期させるためのプロセスのフローチャートの図が描かれている。該フローチャートは、図１の第１のプロセッサユニット１３２で実行される内部同期装置１３０などの、第１のプロセッサユニットで実行される内部同期装置によって実行される動作を示している。該プロセスは、２つ以上のプロセッサユニットによって実行されて、プロセッサユニットによる指示命令の処理を同期させることができる。
【００７０】
この実施例では、プロセッサユニットの各々が、経過した時間を測定するクロックを有する。このクロックは、プロセスが活動的にタスクに取り組んでいる時間を測定する中央処理装置とは異なり、リアルタイムを測定するデジタルクロックであり得る。
【００７１】
描かれているように、クロックは、プロセッサユニットによって読まれる外部クロックであり得る。例えば、クロックは、外部同期装置内に位置付けられ得る。クロックは、プロセッササイクルよりもむしろ、日、時間、分、及び秒に関する時系列的な時間を測定する。
【００７２】
該プロセスは、第１のプロセッサユニット内の内部同期装置が、外部同期装置内のクロックを読むことによって開始する（動作６００）。クロックは、第１のプロセッサユニットのためのものであり、同じアプリケーション又は指示命令の組を実行している任意の他のプロセッサユニットのためのクロックと同期される。
【００７３】
差異レジスタから読まれた値が閾値より大きいか否かに関して判定が行われる（動作６０２）。差異レジスタは、クロックの現在の時間と、差異レジスタがプロセッサユニット内の内部同期装置によって読まれた時間と、の間の差異を表す値を記憶する。この例示的な実施例では、差異レジスタが外部同期装置内に位置付けられている。
【００７４】
外部同期装置は、２つのプロセッサユニットが差異レジスタを読む時間における差異を表す値を用いて差異レジスタを設定する。描かれているように、主要なプロセッサユニットは、ゼロの値を取得することとなる。遅いプロセッサユニットは、実際のスキュー時間を見る。例えば、遅いプロセッサユニットは、主要なプロセッサユニットが差異レジスタを読む時間と、遅いプロセッサユニットが差異レジスタを読む時間と、の間の差異である数値を取得することとなる。
【００７５】
描かれているように、閾値は、幾つかの異なる要因に基づいて選択され得る。例えば、２つの処理ユニットの間で許容されるスキューの量が、閾値を設定するために使用され得る。差異レジスタの値が閾値より大きいならば、同期装置は、第２のプロセッサユニットに任意の結果を取得することなしに動作を実行させる（動作６０４）。
【００７６】
この例示的な実施例では、動作が、遅いプロセッサユニットの速度を上げるために実行される。例えば、遅いプロセッサユニットから予めスケジューリングされた遊休時間が除去され得る。代替的に、主要なプロセッサユニットは、遅いプロセッサユニットが追いつくことを可能にするためにアイドリングし得る。例えば、２つのプロセッサユニットが同じデータを使用して同じプログラムを実行しているときに、結果を取得するためにデータを処理することを含まない動作を実行することは、必要とされる結果を生成しない動作であると考えられる。
【００７７】
別の実施例では、動作６０４のうちの動作が、予備のパーティション又は予めスケジューリングされた遊休時間を除去することであり得る。言い換えると、予備のパーティションを除去することは、プロセッサユニットに、このプロセッサユニットと同期されている別のプロセッサユニットで対応するアプリケーションによって実行されないアクションを実行させる。該プロセスは、その後、動作６０２に戻る。
【００７８】
動作６０２で、差異レジスタの値が閾値よりも大きくないならば、該プロセスも動作６０２に戻る。この場合、第１のプロセッサユニットは第２のプロセッサユニットと同期されるか、又は第１のプロセッサユニットが第２のプロセッサユニットよりも遅い。
【００７９】
次に図７を参照すると、例示的な一実施形態による、プロセッサユニットからのメッセージの送信を同期させるためのプロセスのフローチャートの図が描かれている。図７で示されているプロセスは、図１の第１のプロセッサユニット１３２で実行されている内部同期装置１３０などの内部同期装置によって使用されて、完全性マネージャー１２０内の待ち行列に入れられているメッセージに基づいて、メッセージの送信を管理する。言い換えると、該プロセスは、待ち行列の空の部分が所定の閾値まで低減されるまで、メッセージが待ち行列内に集められることを可能にする。
【００８０】
該プロセスは、外部同期装置内の待ち行列深度レジスタを読むことによって開始する（動作７００）。待ち行列深度レジスタは、幾つのメッセージが待ち行列内にあるかを示す待ち行列深度を含む。待ち行列は、２つのプロセッサユニットによって送信されているメッセージを一致させるために使用され得る。
【００８１】
外部同期装置内の待ち行列がｎ個のメッセージのための余地を有するか否かに関して判定が行われ得る（動作７０２）。動作７０２では、ｎ個のメッセージが、予め規定された数のメッセージである。一実施例では、待ち行列が１０個のメッセージを保持することができ、各時間毎にプロセッサユニットは３つのメッセージを書くことができる。待ち行列深度が９であるならば、待ち行列内に更に３つのメッセージを書くためには不十分な余地しか存在しない。
【００８２】
待ち行列がｎ個のメッセージのための余地を有さないならば、該プロセスは、遊休時間を追加し、その後、主要なプロセッサユニットに戻る（動作７０４）。該プロセスは、その後、動作７００に戻る。このプロセスは、待ち行列に３つのメッセージを書くための余地が利用可能になるまで繰り返される。結果として、待ち行列がｎ個のメッセージのための余地を有さないならば、プロセッサユニットは待ち行列内にメッセージを置かない。
【００８３】
そうでない場合、待ち行列がｎ個のメッセージのための余地を有するならば、プロセッサユニット内の内部同期装置は、外部同期装置内の待ち行列にメッセージを書く（動作７０６）。その後、該プロセスは終了する。該プロセスは、送信するための更なるメッセージが存在するときに再開され得る。
【００８４】
結果として、完全性マネージャーは、第１の待ち行列と第２の待ち行列を制御することができる。それによって、第１のプロセッサユニットは第１の待ち行列から読み、第２のプロセッサユニットは第２の待ち行列から読み、それらの両方が、平行レーンの一貫性を維持するように同じ待ち行列深度まで実行される。メッセージを書くことが内部同期装置によって実行されるように示されているが、この動作は、ｎ個のメッセージが書かれ得る時間を示す内部同期装置を有するプロセッサユニット内の別の構成要素によって実行されてもよい。
【００８５】
図８を参照すると、例示的な一実施形態による、メッセージを送信するためのプロセスのフローチャートの図が描かれている。このプロセスは、図１の完全性マネージャー１２０内に実装されて、図１のプロセッサユニット１０２からの冗長に生成された送信メッセージのタイミングを調節し且つ完全性を確実にすることができる。この実施例では、識別子に基づいて、各メッセージが、待ち行列内の特定の場所に置かれる。この識別子は、メッセージのヘッダー内にあり得る。
【００８６】
該プロセスは、第１のプロセッサユニットからメッセージを受信することによって開始する（動作８００）。該プロセスは、メッセージが高完全性メッセージであるか否かを判定する（動作８０２）。この判定は、幾つかの異なるやり方で行われ得る。例えば、ヘッダーは、メッセージが高完全性メッセージであるか否かに関する表示を含み得る。別の例示的な一実施例では、メッセージが高完全性メッセージであるか否かを判定するために、構成ファイル、レジスタ、又は他の何らかの種類のインジケータがチェックされ得る。
【００８７】
メッセージが高完全性メッセージであるならば、該プロセスはメッセージを記憶する（動作８０４）。動作８０４では、メッセージが、様々な種類の記憶デバイス内に記憶され得る。例えば、幾つかの異なる種類のデバイスを使用して実装され得る待ち行列内にメッセージが記憶される。例えば、待ち行列は、バッファー、ポートアレイ、又は他の何らかの適切な種類のデバイスを使用して実装され得る。描かれているように、ポートアレイは、メッセージが特定の場所であるよりもむしろ種々の場所に位置付けられ得るバッファーのダイナセット（dynamic set）である。ポートアレイでは、完全性マネージャーが、処理のためにメッセージをペアにするように種々のプロセッサユニットのためのバッファーを検索する。言い換えると、比較されるべきメッセージは、バッファーのダイナセット内の同じ序列にはないかもしれない。
【００８８】
該プロセスは、第２のプロセッサユニットから対応メッセージを受信するために待つ（動作８０６）。第２のメッセージが受信されたか又はタイムアウトが生じたかに関して判定が行われる（動作８０８）。タイムアウトが生じたならば、メッセージは捨てられ（動作８１０）、エラーが表示される（動作８１２）。該プロセスは、その後、終了する。
【００８９】
動作８０８を再び参照すると、第２のメッセージが受信されたならば、該プロセスは、２つのメッセージの間の比較を実行する（動作８１４）。その比較は、幾つかの異なるやり方で実行され得る。例えば、ビット単位の比較、周期的冗長チェックシグネチャーを比較すること、及び他の技術が使用され得る。
【００９０】
２つのメッセージが一致するか否かに関して判定が行われる（動作８１６）。２つのメッセージが一致するならば、該プロセスはメッセージを送信する（動作８１８）。この例示的な実施例では、メッセージがネットワークに送信される。該プロセスは、その後、終了する。
【００９１】
そうでない場合、該プロセスは、両方のメッセージを捨てる（動作８２０）。動作８２０では、一致が存在しないのでメッセージが捨てられる。その後、上述のように該プロセスは動作８１２に進む。動作８０２を再び参照すると、メッセージが高完全性を有さいないならば、上述のように該プロセスは動作８１８に進む。
【００９２】
次に図９を参照すると、例示的な一実施形態による、メッセージを送信するためのプロセスのフローチャートの図が描かれている。このプロセスは、図１の完全性マネージャー１２０内に実装されて、冗長に生成された送信メッセージのタイミングを調節し且つ完全性を確実にすることができる。
【００９３】
該プロセスは、プロセッサユニットからメッセージを受信することによって開始する（動作９００）。メッセージが高完全性メッセージであるか否かに関して判定が行われる（動作９０２）。メッセージが高完全性メッセージであるならば、該プロセスは、プロセッサユニットのためのレーン内の待ち行列の中へメッセージを置く（動作９０４）。描かれているように、待ち行列は、先入れ先出し（FIFO）待ち行列であり、バッファーとして実装され得る。
【００９４】
別のプロセッサのためのレーン内の待ち行列が１以上のメッセージを有するか否かに関して判定が行われる（動作９０６）。他のプロセッサのレーン内の待ち行列が、１以上のメッセージを有さいないならば、該プロセスは、タイムアウトチェックを実行する（動作９０８）。タイムアウトが生じたならば、該プロセスは動作９０６に戻る。
【００９５】
他の待ち行列が１以上のメッセージを有するならば、該プロセスは、待ち行列内の２つのヘッドメッセージの間のビット単位の比較を実行する（動作９１０）。この例示的な実施例では、ヘッドメッセージが、待ち行列から引き出される次のメッセージである。
【００９６】
２つのメッセージが一致するか否かに関して判定が行われる（動作９１２）。２つのメッセージが一致するならば、該プロセスはメッセージを送信する（動作９１４）。この例示的な実施例では、メッセージがネットワークに送信される。該プロセスは、その後、終了する。そうでない場合、該プロセスは、両方のメッセージを捨て、エラーが表示される（動作９１６）。
【００９７】
動作９０２を再び参照すると、メッセージが高完全性メッセージでないならば、該プロセスは動作９１４に進む。動作９０８に戻って参照すると、タイムアウトが生じたならば、該プロセスは動作９１６に進む。
【００９８】
図１０では、例示的な一実施形態による、メッセージを受信するためのプロセスのフローチャートの図が描かれている。このプロセスは、完全性マネージャー内に実装され得る。このプロセスは、メッセージを引き出すことを示している。
【００９９】
該プロセスは、メッセージの到着を検出することによって開始する（動作１０００）。該プロセスは、待ち行列の後ろにメッセージを置く（動作１００２）。その後、該プロセスは、待ち行列深度カウンターをインクリメントし（動作１００４）、該プロセスはその後終了する。この例示的な実施例では、待ち行列深度カウンターが、如何にしてメッセージが読まれ得るかを示すために使用され得る。完全性マネージャーは、この待ち行列深度カウンターを使用して、メッセージが同じ順序で読まれることを確実にすることができる。
【０１００】
次に図１１を参照すると、例示的な一実施形態による、メッセージを受信するためのプロセスのフローチャートの図が描かれている。この例示的な実施例では、該プロセスが、図１の完全性マネージャー１２０内に実装され得る。このプロセスは、待ち行列からメッセージを引き出すことを示している。
【０１０１】
該プロセスは、第１のプロセッサユニットのための第１の待ち行列に対する読みリクエストを受信することによって開始する（動作１１００）。第２のプロセッサユニットのための第２の待ち行列が、第２のプロセッサユニットによって既に読まれたか否かに関して判定が行われる（動作１１０２）。第２の待ち行列が既に読まれたならば、該プロセスは、第２のプロセッサユニットによって読まれた第２の待ち行列内の第２の待ち行列深度値を選択する（動作１１０４）。
【０１０２】
完全性マネージャーなしに、各プロセッサユニットは、通常、メッセージを読むことにおいて使用されるそれ自身の待ち行列深度カウンターを使用する。例示的な一実施例では、完全性マネージャーが、特定の待ち行列深度カウンターから待ち行列深度値を選択して、両方のプロセッサユニットに同じ数のメッセージを読ませる。
【０１０３】
該プロセスは、選択された待ち行列深度値を第１のプロセッサユニットに送信する（動作１１０６）。動作１１０６は、第１のプロセッサユニットが、待ち行列深度値に基づいて示されたメッセージの数を読むことを可能にする。該プロセスは、読まれたメッセージの数によって、待ち行列深度カウンター内の待ち行列深度値をデクリメントする（動作１１０８）。動作１１０８では、待ち行列深度カウンターが、第１のプロセッサユニットのための第１の待ち行列深度カウンター又は第２のプロセッサユニットのための第２の待ち行列深度値であり得る。デクリメントされる待ち行列深度カウンターは、どの待ち行列深度値が第１のプロセッサユニットに提供されたかに基づく。該プロセスは、その後、終了する。この例示的な実施例において、選択された待ち行列深度カウンターからの特定の待ち行列深度値の選択は、両方のプロセッサユニットがメッセージを読むために同じ待ち行列深度値を使用するように行われる。
【０１０４】
動作１１０２を再び参照すると、第２のプロセッサのための第２の待ち行列が既に読まれていないならば、該プロセスは、第２の待ち行列深度カウンター内の第２の待ち行列深度値が、第１の待ち行列深度カウンター内の第１の待ち行列深度値より大きいか否かを判定する（動作１１１０）。第２の待ち行列深度値が第１の待ち行列深度値より大きいならば、該プロセスは、メッセージを読むために第１の待ち行列深度値を使用する（動作１１１２）。該プロセスは、その後、動作１１０６に戻る。そうでない場合、該プロセスは、メッセージを読むために第２の待ち行列深度値を使用し（動作１１１４）、動作１１０６に進む。
【０１０５】
次に図１２を参照すると、例示的な一実施形態による、メッセージを受信するためのプロセスのフローチャートの図が描かれている。この例示的な実施例では、該プロセスが、図１の完全性マネージャー１２０内に実装され得る。このプロセスは、メッセージを押し出すことを示している。
【０１０６】
該プロセスは、メッセージの到着を検出することによって開始する（動作１２００）。該プロセスは、プロセッサユニットのためのメモリの中へメッセージを押し出す（動作１２０２）。その後、該プロセスは、待ち行列深度をインクリメントし（動作１２０４）、該プロセスはその後終了する。
【０１０７】
次に図１３を参照すると、例示的な一実施形態による、メッセージを受信するためのプロセスのフローチャートの図が描かれている。この例示的な実施例では、該プロセスが、図１の完全性マネージャー１２０内に実装され得る。このプロセスは、メッセージを押し出すことを示している。このプロセスは、プロセッサユニット内のメモリから読むべきメッセージをプロセッサユニットに伝えるために使用され得る。
【０１０８】
該プロセスは、第１のプロセッサユニットからメッセージを読むためのリクエストを受信することによって開始する（動作１３００）。第２のプロセッサユニットのための第２の待ち行列が既に読まれたか否かに関して判定が行われる（動作１３０２）。待ち行列が既に読まれたならば、該プロセスは、第２のプロセッサユニットのための待ち行列に対する第２の読みポインターを提供する（動作１３０４）。この例示的な実施例では、読みポインターが、如何にしてメッセージが待ち行列から読まれ得るかを指摘する。例えば、読みポインターは、プロセッサユニットによって待ち行列内で読まれ得る最後のメッセージを指し得る。言い換えると、読みポインターは、待ち行列深度値に類似した待ち行列深度を示すことができる。
【０１０９】
プロセッサユニットは、その内部メモリから読みポインターまでの幾つかのメッセージを読む（動作１３０６）。一実施例では、メッセージが、完全性マネージャーによって押し出される。完全性マネージャーは、読まれたメッセージの数によって押し出しカウンターをデクリメントする（動作１３０８）。該プロセスは、その後、終了する。完全性マネージャーが新しいメッセージを受信したときに、完全性マネージャーは、新しいメッセージをプロセッサユニット内のメモリの中へ押し出し、押し出しカウントを更新する。読みカウントは、プロセッサユニットがどれだけの数の押し出されたメッセージを読むことが許容されるかである。したがって、Ｘ個のメッセージが押し出され、プロセッサユニットがＹ個のメッセージを読むことを許容されるならば、Ｘ−Ｙ個のメッセージがプロセッサのメモリ内に残される。押し出しカウントは、幾つの読まれていないメッセージがメモリ内に残されているかを示すために、Ｙ個だけデクリメントされる。
【０１１０】
動作１３０２を再び参照すると、第２のプロセッサユニットのための第２の待ち行列が既に読まれていないならば、該プロセスは、第２のプロセッサユニットのための押し出しカウンターが、第１のレーンのための押し出しカウンターより大きいか否かを判定する（動作１３１０）。第２の待ち行列深度のための押し出しカウンターが、第１のレーンのための第１の押し出しカウンターより大きいならば、該プロセスは、第１の押し出しカウンターの値を、メッセージを読むための読みポイントとして使用する（動作１３１２）。該プロセスは、その後、動作１３０６に戻る。そうでない場合、該プロセスは、第２のレーンのための押し出しカウンターを読みポインターとして使用する（動作１３１４）。該プロセスは、その後、動作１３０６に戻る。
【０１１１】
図示した種々の実施形態におけるフローチャート及びブロック図は、例示的な一実施形態における、装置及び方法の幾つかの可能な実施態様の構造、機能、及び動作を示している。これに関し、フローチャート又はブロック図内の各ブロックは、モジュール、セグメント、機能、又は動作若しくはステップの一部分、のうちの少なくとも１つを表わし得る。例えば、１以上のブロックは、プログラムコード、ハードウェア、又はプログラムコードとハードウェアの組合せとして実装されてよい。ハードウェア内に実装されたときに、ハードウェアは、例えば、フローチャート又はブロック図の１以上の動作を実行するように製造又は構成された、集積回路の形態を採り得る。プログラムコードとハードウェアの組み合わせとして実装されたときに、この実装態様は、ファームウェアの形態を採り得る。フローチャート又はブロック図の各ブロックは、種々の動作を実行する専用ハードウェアシステム、又は専用ハードウェアと専用ハードウェアによって実行されるプログラムコードとの組み合わせを使用して実装され得る。
【０１１２】
例示的な一実施形態の幾つかの代替的な実施態様では、ブロック内に記載された１以上の機能は、図中に記載された順序を逸脱して出現し得る。例えば、場合によっては、連続して示される２つのブロックがほぼ同時に実施されること、又は時には含まれる機能に応じてブロックが逆順に実施されることもあり得る。また、フローチャート又はブロック図に示されているブロックに加えて、他のブロックが追加されることもある。例えば、図１２のプロセスは、メッセージを読むことに関して説明されている。このプロセスは、メッセージを書くこと又は送信することのためにも使用され得る。
【０１１３】
次に図１４を参照すると、例示的な一実施形態による、データ処理システムのブロック図が描かれている。図１のコンピュータシステム１１０及び外部ノード１１６を実施するために、データ処理システム１４００が使用され得る。この例示的な実施例では、データ処理システム１４００が、通信フレームワーク１４０２を含み、これにより、プロセッサユニット１４０４、メモリ１４０６、固定記憶装置１４０８、通信ユニット１４１０、入／出力（Ｉ／Ｏ）ユニット１４１２、及びディスプレイ１４１４の間で通信が行われる。この実施例では、通信フレームワーク１４０２が、バスシステムの形態を採り得る。
【０１１４】
プロセッサユニット１４０４は、メモリ１４０６に読み込まれ得るソフトウェアのための指示命令を実行する役割を果たす。プロセッサユニット１４０４は、特定の実装態様に応じて、任意の数のプロセッサであるか、マルチプロセッサコアであるか、又は他の何らかの種類のプロセッサであってよい。
【０１１５】
メモリ１４０６及び固定記憶装置１４０８は、記憶デバイス１４１６の実施例である。記憶デバイスは、例えば、限定するものではないが、データ、機能的な形態のプログラムコードなどの情報、又は他の適切な情報のうちの少なくとも１つを一時的に及び／若しくは永続的に記憶できる、任意のハードウェアである。記憶デバイス１４１６は、これらの例示的な実施例では、コンピュータ可読記憶デバイスとも称され得る。これらの実施例で、メモリ１４０６は、例えばランダムアクセスメモリ、又は任意の他の適切な揮発性或いは不揮発性の記憶デバイスであってもよい。固定記憶装置１４０８は、特定の実施態様に応じて様々な形態を採り得る。
【０１１６】
例えば、固定記憶装置１４０８は、１以上の構成要素又はデバイスを包含し得る。例えば、固定記憶装置１４０８は、ハードドライブ、ソリッドステートハードドライブ、フラッシュメモリ、書換え型光学ディスク、書換え可能磁気テープ、又は上述の何らかの組み合わせであってもよい。固定記憶装置１４０８によって使用される媒体も、着脱可能であってよい。例えば、着脱可能ハードドライブが、固定記憶装置１４０８のために使用され得る。
【０１１７】
これらの例示的な実施例では、通信ユニット１４１０が、他のデータ処理システム又は装置との通信を提供する。これらの例示的な実施例では、通信ユニット１４１０はネットワークインタフェースカードである。
【０１１８】
入／出力ユニット１４１２は、データ処理システム１４００に接続され得る他の装置との間のデータの入出力を可能にする。例えば、入／出力ユニット１４１２は、キーボード、マウス、または他の何らかの適切な入力装置のうちの少なくとも１つを通じて、ユーザ入力のための接続を提供し得る。更に、入／出力ユニット１４１２は、プリンタに出力を送信し得る。ディスプレイ１４１４は、ユーザに情報を表示するための仕組みを提供する。
【０１１９】
オペレーティングシステム、アプリケーション、又はプログラムのうちの少なくとも１つに対する指示は、通信フレームワーク１４０２を介してプロセッサユニット１４０４と通信する記憶デバイス１４１６内に位置していてもよい。種々の実施形態のプロセスは、メモリ１４０６などのメモリの中に含まれ得るコンピュータによって実行される指示を使用して、プロセッサユニット１４０４によって実行され得る。
【０１２０】
これらの指示命令は、プロセッサユニット１４０４内のプロセッサによって読み取られ実行され得る、プログラムコード、コンピュータ使用可能プログラムコード、又はコンピュータ可読プログラムコードと称される。種々の実施形態のプログラムコードは、メモリ１４０６又は固定記憶装置１４０８といった、種々の物理的記憶媒体又はコンピュータ可読記憶媒体上で具現化され得る。
【０１２１】
プログラムコード１４１８は、選択的に着脱可能であるコンピュータ可読媒体１４２０に機能的形態で置かれ、プロセッサユニット１４０４によって実行するためにデータ処理システム１４００に読み込ませたり、転送したりしてもよい。プログラムコード１４１８とコンピュータ可読媒体１４２０は、これらの実施例では、コンピュータプログラム製品１４２２を形成する。この例示的な一実施例では、コンピュータ可読媒体１４２０は、コンピュータ可読記憶媒体１４２４であってよい。これらの例示的な実施例では、コンピュータ可読記憶媒体１４２４は、プログラムコード１４１８を伝搬または伝送する媒体というよりは、むしろプログラムコード１４１８を記憶するために使用される、物理的記憶装置又は有形記憶装置である。
【０１２２】
代替的に、プログラムコード１４１８は、コンピュータ可読信号媒体を使用して、データ処理システム１４００に伝送され得る。コンピュータ可読信号媒体は、例えば、プログラムコード１４１８を含む伝播データ信号であり得る。例えば、コンピュータ可読信号媒体は、電磁信号、光信号、又は他の任意の適切な種類の信号のうちの少なくとも１つであってもよい。これらの信号は、無線通信リンク、光ファイバケーブル、同軸ケーブル、電線、又は他の任意の好適な種類の通信リンクといった少なくとも１つの通信リンクを介して伝送され得る。
【０１２３】
データ処理システム１４００に関して例示されている種々の構成要素は、種々の実施形態が実装され得るやり方に構造的な限定をもたらすことを意図するものではない。種々の例示の実施形態は、データ処理システム１４００に対して図解されている構成要素に対して追加的又は代替的な構成要素を含むデータ処理システム内で実行され得る。図１４に示す他の構成要素は、図示の実施例と異なることがある。種々の実施形態は、プログラムコード１４１８を実行可能な任意のハードウェアデバイス又はシステムを使用して実行され得る。
【０１２４】
本開示の例示的な実施形態は、図１５に示した航空機の製造及び保守方法１５００、並びに図１６に示した航空機１６００に関連して説明され得る。先ず図１５を参照するに、例示的な一実施形態による航空機の製造及び保守方法のブロック図が示されている。製造前の段階では、航空機の製造及び保守方法１５００は、図１６の航空機１６００の仕様及び設計１５０２、並びに材料の調達１５０４を含む。
【０１２５】
製造段階では、航空機１６００の、構成要素及びサブアセンブリの製造１５０６とシステムインテグレーション１５０８とが行われる。その後、航空機１６００は、認可及び納品１５１０を経て、運航１５１２に供され得る。顧客による運航１５１２中、航空機１６００には、定期的な整備及び保守１５１４（改造、再構成、改修、及びその他の整備又は保守を含み得る）が予定される。
【０１２６】
航空機の製造及び保守方法１５００の各プロセスは、システムインテグレータ、第三者、事業者、又はこれらの幾つかの組み合わせによって、実施又は実行され得る。これらの実施例では、事業者は顧客であってよい。この明細書において、システムインテグレータは、任意の数の航空機製造業者及び主要システム下請業者を含みうるが、それらに限定されるわけではなく、第三者は、任意の数のベンダー、下請業者、及び供給業者を含みうるが、それらに限定されるわけではなく、オペレータは、航空会社、リース会社、軍事団体、サービス機関等であり得る。
【０１２７】
次に図１６を参照すると、例示的な実施形態が実行され得る航空機のブロック図が示されている。この例では、航空機１６００は、図１５の航空機の製造及び保守方法１５００によって製造され、且つ、複数のシステム１６０４と内装１６０６とを有する機体１６０２を含み得る。システム１６０４の実施例には、１以上の複数の推進システム１６０８、電気システム１６１０、油圧システム１６１２、環境システム１６１４、及びコンピュータシステム１６１６が含まれる。任意の数の他のシステムが含まれていてもよい。航空宇宙産業の例が示されているが、種々の例示的な実施形態が、自動車産業といった他の産業にも適用され得る。本明細書で具現化されている装置及び方法は、図１５の航空機の製造及び保守方法１５００のうちの少なくとも１つの段階において採用され得る。
【０１２８】
１つの例示的な実施例では、図１５の構成要素及びサブアセンブリの製造１５０６で製造される構成要素又はサブアセンブリは、図１５で航空機１６００の運航１５１２中に製造される構成要素又はサブアセンブリと同様の方法で作製又は製造される。更に別の実施例では、１以上の複数の装置の実施形態、方法の実施形態、又はこれらの組み合わせを、図１５の構成要素及びサブアセンブリの製造１５０６並びにシステムインテグレーション１５０８などの製造段階で利用することができる。１以上の装置の実施形態、方法の実施形態、又はこれらの組み合わせを、航空機１６００が図１５における運航１５１２、整備及び保守１５１４の間、又はその両方の間に利用することができる。
【０１２９】
例えば、図１のデータマネージャー１１２などのデータマネージャー又は内部同期装置１２４などの１以上の内部同期装置のうちの少なくとも１つが、航空機１６００内のコンピュータシステム１６１６内に実装され得る。これらの構成要素の使用は、混合完全性モードでのデータの処理を可能にし得る。種々の構成要素が、現在のコンピュータシステムと比較してより効率的なやり方で、データの処理を同期させること、メッセージの交換、又はそれらの何らかの組み合わせを可能にし得る。
【０１３０】
幾つかの異なる例示的な実施形態を使用する実施態様は、航空機１６００の組み立てを大幅に効率化すること、航空機１６００のコストを削減すること、又は航空機１６００の組み立てを大幅に効率化することと航空機１６００のコストを削減することの両方が可能になる。データを処理することにおける効率を高めることは、航空機１６００内で必要とされるコンピュータのサイズ又は数のうちの少なくとも一方を低減させ得る。この高められた効率は、航空機内で現在使用されているデータ処理システムの処理能力を高め、したがって、整備及び改修の量を低減させることができる。
【０１３１】
したがって、１以上の例示的な実施例は、航空機又は別の適切なプラットフォームなどの、プラットフォーム内のプロセッサシステムによってデータを共通処理するコストを低減させるために使用され得る。例えば、別の種類のプラットフォームは、転送式プラットフォーム、固定式プラットフォーム、陸上構造物、水上構造物、及び宇宙構造物であってもよい。より詳細には、プラットフォームは、水上艦、戦車、人員運搬機、列車、宇宙船、宇宙ステーション、衛星、潜水艦、自動車、発電所、橋、ダム、家屋、製造施設、建造物、及び他の適切なプラットフォームであり得る。
【０１３２】
プロセッサユニットを使用してデータを処理するための冗長性における所望の効率を取得することによって技術的問題を克服する、１以上の技術的解決策が存在する。結果として、１以上の技術的解決策は、プロセッサユニットによってデータを処理することにおける効率を高めることができる。例えば、１以上の技術的解決策は、データを処理することにおけるタイミングを調節すること、又は、高完全性モードで動作しているプロセッサユニットによってメッセージを処理すること、のうちの少なくとも一方を可能にし得る。結果として、プロセッサユニットは、高完全性モード、標準完全性モード、又はそれらの何らかの組み合わせを使用して、個別に又は実質的に同時に、データを処理することができる。
【０１３３】
種々の例示的な実施形態の説明は、例示及び説明を目的として提示されており、網羅的であること、又は開示された形態の実施形態に限定することは意図されていない。動作又は工程を実施する構成要素が、種々の実施例によって説明される。一実施例においては、構成要素は、記載された動作や工程を実施するように構成され得る。例えば、この構成要素は、実施例において構成要素によって実施されると説明されている動作又は工程を実施する能力をこの構成要素に提供する構造向けの構成又は設計を有し得る。
【０１３４】
更に、本開示は以下の条項による実施形態を含む。
条項１
第１のプロセッサユニットで実行される内部同期装置であって、外部同期装置と通信して、前記外部同期装置と通信する前記第１のプロセッサユニットと第２のプロセッサユニットとの間に望ましくない量のスキューが存在するか否かを判定し、前記第１のプロセッサユニットと前記第２のプロセッサユニットとの間に前記望ましくない量のスキューが存在するときに、前記第１のプロセッサに、必要とされる結果を生成することなしに選択的に動作を実行させて、前記望ましくない量のスキューが低減させるように構成されている、内部同期装置を備え、前記第１のプロセッサユニットと前記第２のプロセッサユニットによって生成された対応メッセージについて完全性チェックが実行される高完全性モードに対して、前記第１のプロセッサユニットと前記第２のプロセッサユニットが互いに関連付けられている、プロセッサ同期システム。
条項２
前記第１のプロセッサユニットと前記第２のプロセッサユニットが同じ種類である、条項１に記載のプロセッサ同期システム。
条項３
前記第１のプロセッサユニットと前記第２のプロセッサユニットが異なる種類である、条項１に記載のプロセッサ同期システム。
条項４
前記外部同期装置が、前記第１のプロセッサユニットと前記第２のプロセッサユニットとの間の前記望ましくない量のスキューについての情報を記憶する、条項１に記載のプロセッサ同期システム。
条項５
前記外部同期装置が、前記望ましくない量のスキューについての前記情報をレジスタ内に記憶し、前記プロセッサ同期システムと通信する前記第１のプロセッサユニットと前記第２のプロセッサユニットとの間に前記望ましくない量のスキューが存在するか否かを判定するために、前記プロセッサ同期システムが前記外部同期装置と通信するにあたって、前記内部同期装置が、前記外部同期装置内の前記第１のプロセッサユニットのための第１のレジスタに書き、前記外部同期装置内の前記第２のプロセッサユニットのための第２のレジスタを読むように構成され、前記第１のレジスタの値を前記第２のレジスタの値と比較して、前記第１のプロセッサユニットと前記第２のプロセッサユニットが指示命令を同期して処理するように調節される時を決定する、条項４に記載のプロセッサ同期システム。
条項６
前記外部同期装置が、前記第１のプロセッサユニットのための第１のクロックと前記第２のプロセッサユニットのための第２のクロックを含み、前記第１のクロックと前記第２のクロックが、前記第１のプロセッサユニットと前記第２のプロセッサユニットが指示命令を同期して処理するように調節するために使用される、条項１に記載のプロセッサ同期システム。
条項７
前記第１のプロセッサユニットが主要なプロセッサユニットであり、前記第２のプロセッサユニットが遅いプロセッサユニットであり、差異レジスタが前記主要なプロセッサユニットにゼロ値を返し、前記差異レジスタが前記遅いプロセッサユニットに前記望ましくない量のスキューの値を返す、条項６に記載のプロセッサ同期システム。
条項８
前記第１のプロセッサユニット内の前記内部同期装置が、前記第１のプロセッサユニットが前記第２のプロセッサユニットよりも遅いことを検出したときに、前記動作が前記第１のプロセッサユニットから予めスケジューリングされた遊休時間を除去し、前記第１のプロセッサユニットと前記第２のプロセッサユニットとの間の前記望ましくない量のスキューが低減される、条項１に記載のプロセッサ同期システム。
条項９
前記予めスケジューリングされた遊休時間を除去した後で、前記第１のプロセッサユニットと前記第２のプロセッサユニットとの間に未だ前記望ましくない量のスキューが存在するならば、更なる予めスケジューリングされた遊休時間を除去するように、前記内部同期装置が構成されている、条項８に記載のプロセッサ同期システム。
条項１０
前記第１のプロセッサユニットが主要なプロセッサユニットであり、前記第２のプロセッサユニットが遅いプロセッサユニットであり、前記動作が前記第１のプロセッサユニットに予めスケジューリングされた遊休時間を追加させ、前記第１のプロセッサユニットをより遅く動作させる、条項１に記載のプロセッサ同期システム。
条項１１
第３のプロセッサユニットであって、前記内部同期装置が前記外部同期装置と通信して、前記外部同期装置と通信する前記第１のプロセッサユニット、前記第２のプロセッサユニット、及び前記第３のプロセッサユニットの間に望ましくない量のスキューが存在するか否かを判定し、前記第１のプロセッサユニット、前記第２のプロセッサユニット、及び前記第３のプロセッサユニットの間に前記望ましくない量のスキューが存在するときに、前記第１のプロセッサユニットに、前記必要とされる結果を生成することなしに選択的に前記動作を実行させて、前記望ましくない量のスキューを低減させるように構成されている、第３のプロセッサユニットを更に備える、条項１にプロセッサ同期システム。
条項１２
前記第１のプロセッサユニットと前記第２のプロセッサユニットが、各々、マルチコアプロセッサユニット、単一コアプロセッサユニット、同種マルチコアプロセッサユニット、異種マルチコアプロセッサユニット、グラフィックスプロセッサユニット、汎用プロセッサユニット、のうちの少なくとも１つを含む群から選択される、条項１に記載のプロセッサ同期システム。
条項１３
前記内部同期装置が、前記第１のプロセッサユニットで実行されるソフトウェア又はハードウェアのうちの少なくとも一方を備える、条項１に記載のプロセッサ同期システム。
条項１４
プロセッサユニットを同期させるための方法であって、
外部同期装置と通信して、同期システムと通信する第１のプロセッサユニットと第２のプロセッサユニットとの間に望ましくない量のスキューが存在するか否かを判定すること、及び
前記第１のプロセッサユニットと前記第２のプロセッサユニットとの間に前記望ましくない量のスキューが存在するときに、前記第１のプロセッサユニットに、必要とされる結果を生成することなしに選択的に動作を実行させて、前記望ましくない量のスキューを低減させることを含み、
前記第１のプロセッサユニットと前記第２のプロセッサユニットによって生成された対応メッセージについて完全性チェックが実行される高完全性モードに対して、前記第１のプロセッサユニットと前記第２のプロセッサユニットが互いに関連付けられている、方法。
条項１５
前記第１のプロセッサユニットと前記第２のプロセッサユニットが同じ種類である、条項１４に記載の方法。
条項１６
前記第１のプロセッサユニットと前記第２のプロセッサユニットが異なる種類である、条項１４に記載の方法。
条項１７
前記第１のプロセッサユニットと前記第２のプロセッサユニットとの間の前記望ましくない量のスキューについての情報を前記外部同期装置内に記憶することを更に含む、条項１４に記載の方法。
条項１８
前記外部同期装置が前記望ましくない量のスキューについての情報をレジスタ内に記憶し、前記同期システムと通信して、前記同期システムと通信する前記第１のプロセッサユニットと前記第２のプロセッサユニットとの間に前記望ましくない量のスキューが存在するか否かを判定することが、
前記同期システム内の前記第１のプロセッサユニットのための第１のレジスタに書くこと、
前記同期システム内の前記第２のプロセッサユニットのための第２のレジスタを読むこと、及び
前記第１のレジスタの値を前記第２のレジスタの値と比較して、前記第１のプロセッサユニットと前記第２のプロセッサユニットが指示命令を同期して処理するように調節される時を決定することを含む、条項１７に記載の方法。
条項１９
前記外部同期装置が、前記第１のプロセッサユニットのための第１のクロックと前記第２のプロセッサユニットのための第２のクロックを含み、前記外部同期装置が、前記第２のプロセッサユニットのための前記第２のクロックのためのレジスタを読む、条項１４に記載の方法。
条項２０
幾つかの支持命令が、前記第１のプロセッサユニットから予めスケジューリングされた遊休時間を除去し、前記第１のプロセッサユニットと前記第２のプロセッサユニットとの間の前記望ましくない量のスキューが低減される、条項１４に記載の方法。
条項２１
前記予めスケジューリングされた遊休時間を除去した後で、前記第１のプロセッサユニットと前記第２のプロセッサユニットとの間に未だ前記望ましくない量のスキューが存在するならば、更なる予めスケジューリングされた遊休時間を除去することを更に含む、条項２０に記載の方法。
条項２２
前記第１のプロセッサユニットが主要なプロセッサユニットであり、前記第２のプロセッサユニットが遅いプロセッサユニットであり、幾つかの指示命令が、前記第１のプロセッサユニットにアイドリングさせる、条項１４に記載の方法。
条項２３
第３のプロセッサユニットが存在し、前記方法が、
前記外部同期装置と通信して、前記同期システムと通信する前記第１のプロセッサユニット、前記第２のプロセッサユニット、及び前記第３のプロセッサユニットの間に前記望ましくない量のスキューが存在するか否かを判定すること、及び
前記第１のプロセッサユニット、前記第２のプロセッサユニット、及び前記第３のプロセッサユニットの間に前記望ましくない量のスキューが存在するときに、前記第１のプロセッサユニットに、前記必要とされる結果を生成することなしに選択的に動作を実行させ、前記望ましくない量のスキューを低減させることを含み、
前記第１のプロセッサユニット、前記第２のプロセッサユニット、及び前記第３のプロセッサユニットによって生成された対応メッセージについて完全性チェックが実行される高完全性モードに対して、前記第１のプロセッサユニット、前記第２のプロセッサユニット、及び前記第３のプロセッサユニットが互いに関連付けられている、条項１４に記載の方法。
条項２４
前記第１のプロセッサユニットと前記第２のプロセッサユニットが、各々、マルチコアプロセッサユニット、単一コアプロセッサユニット、同種マルチコアプロセッサユニット、異種マルチコアプロセッサユニット、グラフィックスプロセッサユニット、汎用プロセッサユニット、のうちの少なくとも１つを含む群から選択される、条項１４に記載の方法。
条項２５
【０１３５】
当業者には、多くの修正例及び変形例が明らかであろう。更に、種々の例示的な実施形態によって、他の好ましい実施形態と比較して異なる特徴が提供され得る。例えば、例示的な実施形態が混合完全性モードに関連して説明された。例示的な実施形態は、ロックステップを実行するプロセッサ、又は他の種類の処理同期若しくはメッセージ交換のうちの少なくとも一方が設計される環境に適用可能である。選択された１以上の実施形態は、実施形態の原理、実際の用途を最もよく説明するため、及び他の当業者に対し、様々な実施形態の開示内容と、考慮される特定の用途に適した様々な修正との理解を促すために選択及び記述されている。
【図１】
2019125350.tif 000003
【図２】
2019125350.tif 000004
【図３】
2019125350.tif 000005
【図４】
2019125350.tif 000006
【図５】
2019125350.tif 000007
【図６】
2019125350.tif 000008
【図７】
2019125350.tif 000009
【図８】
2019125350.tif 000010
【図９】
2019125350.tif 000011
【図１０】
2019125350.tif 000012
【図１１】
2019125350.tif 000013
【図１２】
2019125350.tif 000014
【図１３】
2019125350.tif 000015
【図１４】
2019125350.tif 000016
【図１５】
2019125350.tif 000017
【図１６】
2019125350.tif 000018
【外国語明細書】
2019125350000001.pdf
2019125350000002.pdf
2019125350000003.pdf
2019125350000004.pdf