(57)【要約】      （修正有）【課題】高集積度マイクロプロセッサにおいて、ロックステップで動作できる機能を提供する。【解決手段】高完全性処理を提供する方法として、各レーン１２、１４がアプリケーションプロセッサ２０、４０を有し、それらのアプリケーションプロセッサが非ロックステップ構成において同じアプリケーションソフトウェアを実行する少なくとも２つの冗長処理レーンを有し、アドレス可能な空間へのアクセスを必要とするトランザクションを出力する高完全性処理システムにおいて、同期および完全性検査を提供する方法。【選択図】図１
2013105491.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２つの冗長処理レーンを有する高完全性処理システムにおいて同期および完全性検査を提供する方法であって、各レーンがアプリケーションプロセッサ（ＡＰ）を有し、前記ＡＰが非ロックステップ構成において同じアプリケーションソフトウェアを実行し、アドレス可能な空間へのアクセスを必要とするトランザクションを出力する、方法において、
第１のＡＰから第１のトランザクションを出力するステップと、
前記第１のトランザクションを実行する前に、第１のバッファの中に前記第１のトランザクションを記憶するステップと、
第２のＡＰから第２のトランザクションを出力するステップと、
マッチするかどうかを判定するために前記第１のトランザクションと前記第２のトランザクションを比較するステップと、
前記第１のトランザクションと前記第２のトランザクションがマッチする場合、前記第１のトランザクションと前記第２のトランザクションの処理をそれらの対応するレーンで実行するステップとを備える方法。
【請求項２】
前記第１のトランザクションと前記第２のトランザクションがマッチしない場合、エラーをメモリに記録するステップをさらに備える請求項１記載の方法。
【請求項３】
前記第１のトランザクションと前記第２のトランザクションがマッチしない場合、前記第１のバッファをフラッシュするステップをさらに備える請求項２記載の方法。
【請求項４】
前記第２のトランザクションを前記第２のＡＰに関連した第２のバッファに記憶するステップをさらに備える請求項１記載の方法。
【請求項５】
前記第２のトランザクションを前記第２のバッファに記憶する前記ステップは、前記比較の前に生じる請求項４記載の方法。
【請求項６】
前記第１のトランザクションは前記第２のバッファに記憶される請求項４記載の方法。
【請求項７】
前記第１のトランザクションは、前記第２のトランザクションを出力する前記ステップの前に前記第２のバッファに記憶される請求項６記載の方法。
【請求項８】
前記第２のトランザクションは、前記第１のバッファに記憶される請求項６記載の方法。
【請求項９】
前記第２のトランザクションは、前記比較の前に前記第１のバッファに記憶される請求項８記載の方法。
【請求項１０】
前記比較は、前記第１および第２のバッファから前記第１および第２のトランザクションをポップし、次いで前記ポップされた第１のトランザクションと第２のトランザクションを比較するステップを備える請求項８記載の方法。
【請求項１１】
前記第１のトランザクションは書き込みアクセスを備え、前記第２のトランザクションは前記書き込みアクセスと同じアドレスへの読み出しアクセスを備え、前記トランザクションは、前記第２のバッファ中の前記第１のトランザクションの後ろに記憶される請求項１０記載の方法。
【請求項１２】
前記第２のＡＰから第３のトランザクションを出力するステップをさらに備え、前記第３のトランザクションが前記第１のトランザクションと同じアドレスへの書き込みアクセスを備える場合、前記第１および第３のトランザクションは前記第１のバッファからポップされ、前記比較は、前記第１のトランザクションと前記第２のトランザクションの代わりに前記第１のトランザクションと前記第３のトランザクションとの間で行われる請求項１１記載の方法。
【請求項１３】
前記第１のＡＰに対応する第１のデータコンフォーマで前記第１のトランザクションを受け取るステップをさらに備える請求項１記載の方法。
【請求項１４】
前記第１のトランザクションをバッファに記憶するステップは、前記第１のトランザクションを前記第１のデータコンフォーマに対応する第１のトランザクションメモリに記憶することを備える請求項１３記載の方法。
【請求項１５】
前記第１のトランザクションを前記第２のＡＰのための第２のデータコンフォーマに渡し、前記第１のトランザクションを前記第２のデータコンフォーマに対応する第２のトランザクションメモリに記憶するステップをさらに備える請求項１４記載の方法。
【請求項１６】
前記第２のデータコンフォーマで前記第２のトランザクションを受け取るステップをさらに備える請求項１５記載の方法。
【請求項１７】
前記第２のトランザクションを前記第１のトランザクションメモリに渡すステップをさらに備える請求項１６記載の方法。
【請求項１８】
前記第１および第２のトランザクションメモリから前記第１および第２のトランザクションをポップし、次いで前記比較を実施するステップをさらに備える請求項１７記載の方法。
【請求項１９】
前記第１のトランザクションが書き込みアクセスを備え、前記第２のトランザクションが前記書き込みアクセスと同じアドレスへの読み出しアクセスを備える場合、前記第２のトランザクションが前記第１および第２のトランザクションメモリ中の前記第１のトランザクションの後ろに記憶される請求項１７記載の方法。
【請求項２０】
前記第２のＡＰから第３のトランザクションを出力するステップをさらに備え、前記第３のトランザクションが前記第１のトランザクションと同じアドレスへの書き込みアクセスを備える場合、前記第３のトランザクションは前記第２のデータコンフォーマによって受け取られ、前記第２のデータコンフォーマは前記第３のトランザクションを前記第２のトランザクションメモリに保存して、前記第３のトランザクションを前記第１のデータコンフォーマに渡し、前記第１のデータコンフォーマは前記第３のトランザクションを前記第１のトランザクションメモリに保存し、前記第１および第３のトランザクションは前記第１および第２のトランザクションからポップされ、前記比較は、前記第１のトランザクションと前記第２のトランザクションの代わりに、前記第１のトランザクションと前記第３のトランザクションとの間で行われる請求項１９記載の方法。
【請求項２１】
前記第１のＡＰに対応する複数のデータコンフォーマで前記第１のトランザクションを受け取るステップをさらに備える請求項１３記載の方法。
【請求項２２】
前記第２のＡＰに対応する複数のデータコンフォーマで前記第２のトランザクションを受け取るステップをさらに備え、前記第２のＡＰに対応する前記複数のデータコンフォーマが、前記第１のＡＰに対応する前記複数のデータコンフォーマと等しい請求項２１記載の方法。
【請求項２３】
前記第１のトランザクションと前記第２のトランザクションがマッチしない場合、エラーとしてフラグを付けるステップをさらに備える請求項１記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高完全性処理を提供する方法に関する。
【背景技術】
【０００２】
コンピュータ処理モジュールは、障害を検出して正確に分離すること、および誤った警報を最少にすることを確実にするために、ソースにおける高い完全性および高い可用性を提供することができる。高完全性モジュールは航空機についてはなお一層重要であり、高完全性モジュールによって障害が迅速かつ正確に検出、分離されないことから、操作困難になる場合がある。高完全性処理システムの従来設計は、モジュールにおいて２つ以上のマイクロプロセッサの間で命令レベルのロックステップ処理を実装するために高価な特注の回路を必要とする。さらに、最新のマイクロプロセッサは、構成要素の集積度が高まり、処理時間のばらつきを導入するフィーチャのために、ロックステップで動作することができない。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第７，９８７，３８５号明細書
【発明の概要】
【０００４】
一実施形態では、少なくとも２つの冗長処理レーンを有する高完全性処理システムにおいて同期および完全性検査を提供する方法であって、各レーンがアプリケーションプロセッサ（ＡＰ）を有し、前記ＡＰが非ロックステップ構成において同じアプリケーションソフトウェアを実行し、アドレス可能な空間へのアクセスを必要とするトランザクションを出力する、方法が、第１のＡＰから第１のトランザクションを出力するステップと、第１のトランザクションを実行する前に、第１のバッファに第１のトランザクションを記憶するステップと、第２のＡＰから第２のトランザクションを出力するステップと、マッチするかどうかを判定するために第１のトランザクションと第２のトランザクションを比較するステップと、第１のトランザクションと第２のトランザクションがマッチする場合、第１のトランザクションと第２のトランザクションの処理をそれらの対応するレーンで実行するステップとを含む。
【図面の簡単な説明】
【０００５】
【図１】本発明の第１の実施形態による高完全性処理システムの略図である。
【図２Ａ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の一部を概略的に示す図である。
【図２Ｂ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の一部を概略的に示す図である。
【図２Ｃ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の一部を概略的に示す図である。
【図２Ｄ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の一部を概略的に示す図である。
【図３Ａ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図３Ｂ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図３Ｃ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図３Ｄ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図４Ａ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図４Ｂ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図４Ｃ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図４Ｄ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図５Ａ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図５Ｂ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図５Ｃ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図６Ａ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図６Ｂ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図６Ｃ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図６Ｄ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図６Ｅ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図６Ｆ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図７Ａ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図７Ｂ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図７Ｃ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図７Ｄ】第２の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図８Ａ】第３の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図８Ｂ】第３の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図８Ｃ】第３の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図８Ｄ】第３の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図８Ｅ】第３の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図８Ｆ】第３の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図８Ｇ】第３の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図８Ｈ】第３の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図８Ｉ】第３の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図８Ｊ】第３の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【発明を実施するための形態】
【０００６】
ソースコンピューティングでの高完全性は現在、命令レベルのロックステップで実行する少なくとも２つの処理レーン、または少なくとも２つの処理レーンおよびモニタを必要とする。モジュールの各処理レーンで実行中のソフトウェアが、同じ入力（データ、割込み、時間など）を受け取り出力を送る前または新しい入力を受け取る前にデータ上で同じ「量」の処理を実行することができる場合、各レーンは障害を伴わずに同じ出力を作り出す。一般に、モジュールで実行中のソフトウェアが入力を受け取る場合、その入力は両方のレーンで同じものでなければならず、両方のレーンは厳密に同じ状態であるときに入力を受け取らなければならない。モジュールで実行中のソフトウェアが出力を送る場合、両方のレーンからのデータは出力される前に比較されなければならない。（状態同期が不適正であるために）出力データの比較に失敗しないようにするために、出力データの作成に関与するソフトウェアの部分は、出力が比較され、次いで送信することが可能になる前に、両方のレーンで同じ状態に達しなければならない。
【０００７】
本発明の実施形態は、プロセッサのロックステップ動作を必要とせず、異種のプロセッサを許容する同期および完全性検査の方法を提供する。図１は、本発明の第１の実施形態による、両方が互いに冗長である第１の処理レーン１２と第２の処理レーン１４とを持つ高完全性、非ロックステップ処理システム１０の非限定的な例を示す。処理システム１０はさらに多くの冗長な処理レーンを持ち得ることが企図されているが、説明を明快で簡単にするために、２つのみを示し、説明する。
【０００８】
第１の処理レーン１２と第２の処理レーン１４の両方は冗長であるので、第１の処理レーン１２の構成要素のみを説明する。第２の処理レーン１４では、２０加えた同様の数字によって同様の部分を識別した。第１の処理レーン１２の部分の説明は、第２の処理レーン１４の同様の構成要素にも適用されることは理解されよう。
【０００９】
第１の処理レーン１２は、集積されたＡＰ２２とメモリ２４とを持つ第１のＣＰＵ２０を含むことができる。高速インターフェース２６はＣＰＵ２０と動作可能に結合し、ＣＰＵ２０へのアクセスを提供する。高速インターフェース２６は、十分な帯域幅を持つ任意のインターフェースであることが企図されている。非限定的な例として、高速インターフェースはＰＣＩ  Ｅｘｐｒｅｓｓであってもよい。
【００１０】
トランザクションメモリ２８は第１の処理レーン１２に含まれ、バッファとして機能し、ＣＰＵ２０と４０の両方からのＩ／Ｏまたはアドレス可能な空間へのアクセスを記憶することができる。これは、読み出しアクセスと書き込みアクセスの両方を記憶することが含まれる。重複するトランザクションメモリ２８を示しているが、これらは冗長性を目的として第１の処理レーン１２の中に含めることができる。
【００１１】
少なくとも１つのデータコンフォーマ（ｄａｔａ  ｃｏｎｆｏｒｍｅｒ）３０を第１の処理レーン１２に含めることができ、データコンフォーマ３０は入来データと送出データとを比較してそれらが同じであることを確認することができる。複数のデータコンフォーマ３０を示しているが、第１の処理レーン１２の中では、１つのデータコンフォーマ３０のみ必要である。第１の処理レーン１２の中に複数のデータコンフォーマ３０がある場合、データコンフォーマ３０はインデックス付けされてもよい。複数のデータコンフォーマがある場合、第１の処理レーン１２と第２の処理レーン１４の両方は、同じ数のデータコンフォーマを持つ。データコンフォーマ間のインタラクションは同じ処理レーンのデータコンフォーマの中のみで生じる。Ｉ／Ｏインターフェース３２を含むことができ、Ｉ／Ｏインターフェース３２はアドレス可能な空間またはＩ／Ｏへの接続を実装することができる。
【００１２】
処理システム１０は、各ＡＰの時間および／または空間の分割された環境をサポートすることができる。そのような分割された環境で、ＡＰはプログラムＯＳの多数の区画を実行することができる。データコンフォーマまたは別個のトランザクションメモリは、各ＡＰの各区画毎に用意され、区画の切り替え時にＡＰ同士が同期するのを回避することが好ましい。さらに、ＡＰは多数のコアまたは多数のスレッドをサポートすることができる。データコンフォーマまたは別個のトランザクションメモリは、各々独立したコアまたはスレッド毎に必要となる。
【００１３】
そのような分割された環境では、共有メモリ３４を第１の処理レーン１２に含め、それをＩ／Ｏインターフェース３２に接続することができる。共有メモリ３４はエラー訂正コード（ＥＣＣ）を含んでもよい。そのような共有メモリ３４は、区画間で共有されるデータなどの高完全性を必要とするデータを記憶することができる。共有メモリ３４は必要なメモリの量に応じて、内部または外部にあると企図されている。区画タイマ３６もまた第１の処理レーン１２に含めることができ、区画タイマ３６は区画の中に残された時間を追跡することができる。任意の区画スイッチＤＭＡ３８をもまた第１の処理レーン１２に含めることができ、区画スイッチＤＭＡ３８は区画切り替えの間にデータを取得することができるので、アプリケーションのためにデータが即座に準備される。そのデータはその後、Ｉ／Ｏアクセスを待つのではなく、このデバイスから直接読み出すことができる。区画タイマ３６が期限を示すときに、ＣＰＵ２０は区画スイッチを起動することができる。
【００１４】
説明を簡潔にするために、以下の操作上の説明は第１および第２の処理レーン１２および１４に限定し、各レーンは単一のデータコンフォーマ３０および５０のみをそれぞれ持ち、かつ各レーンは非分割の環境であることとして説明する。処理システム１０は、非ロックステップ構成においてＡＰ２２および４２が同じアプリケーションソフトウェアを実行しアドレス可能な空間へのアクセスを必要とするトランザクションを出力して、同期および完全性検査を提供する方法を実行することができる。アドレス可能な空間は、非限定的な例としてＩ／Ｏ、メモリまたは他の空間を含む任意の適切な空間である。トランザクションが後続のトランザクションをすべてブロックすべきかどうか、比較が有効かどうか、および冗長なアドレス可能な空間にアクセスすべきかどうかを関連したプロセスＩＤに示すために、トランザクションとともにフラグを使用することができる。
【００１５】
一般に、書き込み動作の間、第１のトランザクションは第１のＣＰＵ２０の第１のＡＰ２２から出力され、次いで第１のトランザクションは、実行される前に第１のバッファに記憶される。第２のＣＰＵ４０の第２のＡＰ４２から第２のトランザクションが出力され、第１のトランザクションと第２のトランザクションは、マッチするかどうか判定するために比較することができる。第１のトランザクションと第２のトランザクションがマッチする場合、第１および第２のトランザクションに対応するアドレス可能な空間へのアクセスが達成される。第１のトランザクションと第２のトランザクションが比較されたときに、それらがマッチしないことが判明した場合、エラーが生じ、アドレス可能な空間へのアクセスは与えられない。そのようなエラーは記録されてもよいことが企図されている。非限定的な例として、エラーはメモリに記録されてもよい。システムの再開を促進するために、第１のトランザクションと第２のトランザクションがマッチしない場合、バッファがフラッシュされてもよいことがさらに企図されている。
【００１６】
一般に、読み取り動作の間、第１のトランザクションは第１のＣＰＵ２０の第１のＡＰ２２から出力され、重複するアドレスに継続中の書き込みがなければ、第１のトランザクションに対応するアドレス可能な空間へのアクセスが達成される。トランザクションから読み出されたデータは検証され、第１のＣＰＵに戻されて第２バッファに記憶される。第２のトランザクションが第２のＣＰＵ４０の第２のＡＰ４２から出力される場合、読み出されたトランザクションは検証され、検証されたデータは第２のＣＰＵに戻される。読み出されたデータが誤っている場合、または第１のトランザクションと第２のトランザクションとがマッチしない場合、エラーが生じ、関連したデータの有無にかかわらず、第１および第２のＣＰＵにエラーがフラグで知らされる。そのようなエラーは記録されてもよいことが企図されている。非限定的な例として、エラーはメモリに記録されてもよい。システムの再開を促進するために、第１のトランザクションと第２のトランザクションがマッチしない場合、バッファがフラッシュされてもよいことがさらに企図されている。
【００１７】
図２Ａ〜７Ｆは、処理システム１０内の同期および完全性検査を提供する方法の実施形態を示す。図２Ａ〜２Ｄは、第１および第２のバッファへ第１のトランザクションを記憶するステップを示す。この方法は、第１のＣＰＵ２０が第１のトランザクションを生成するときに開始してもよい。図２Ａには、第１のトランザクションをメモリ場所ＡまたはＡwへのトランザクション書き込みアクセスとして示す。第１のトランザクションＡwは、図２Ｂに示すように、第１の処理レーン１２の第１のデータコンフォーマ３０で受け取ることができる。次いで、図２Ｃに示すように、データコンフォーマ３０は第１のトランザクションＡwをトランザクションメモリ２８の中にプッシュし、第１のトランザクションＡwを第２の処理レーン１４の第２のデータコンフォーマ５０に渡すことができる。図２Ｄは、データコンフォーマ５０が第１のトランザクションＡwを第２のデータコンフォーマ５０に対応するトランザクションメモリ４８の中にプッシュするところを示す。図示していないが、この時点で、第２のＣＰＵ４０によって第２の書き込みトランザクションが生成されれば第２のデータコンフォーマでそれを受け取ることができる。第２の書き込みトランザクションは、第１のデータコンフォーマ３０に渡すことができる。第１のトランザクションは第１および第２のトランザクションメモリからポップされ、第１のトランザクションと第２のトランザクションがマッチするかどうかを判定するために、コンフォーマで第２の書き込みトランザクションと比較される。これらのトランザクションがマッチしない場合、書き込みは打ち切られ、エラーが記録される。これらのトランザクションがマッチする場合、データコンフォーマ３０および５０は、データを書き込むために書き込みトランザクションをＩ／Ｏインターフェース３２および５２に渡す。
【００１８】
図３Ａ〜７Ｆは、第２のトランザクションがブロックされた読み出しアクセスである代替シナリオを示す。ブロック読み出しアクセスは典型的には、そのアドレスが継続中の書き込みと重複する読み出しである。図３Ａにおいて、第１のＣＰＵ２０は、Ａrとして示す、トランザクション書き込みアクセスと同じアドレスへの読み出しアクセスである第２のトランザクションを生成する。図３Ｂに示すように、第２のトランザクションＡrは第１の処理レーン１２の第１のデータコンフォーマ３０で受け取ることができる。トランザクションメモリ２８の中に同じアドレスに対する既存の書き込みがあることから、データコンフォーマ３０は、図３Ｃに示すようにトランザクションメモリ２８の中の第１のトランザクションＡwの後ろにトランザクションＡrをプッシュする。データコンフォーマ３０はトランザクションＡrを第２のデータコンフォーマ５０に渡し、第２のデータコンフォーマ５０は次いで、図３Ｄに示すようにトランザクションメモリ４８の中の第１のトランザクションの後ろにＡrをプッシュすることができる。
【００１９】
図４Ａ〜４Ｄは、第３のトランザクションが生成され、バッファに記憶されるステップを示す。より具体的には、図４Ａは、第２のＣＰＵ４０が、第１のトランザクションまたはＡwと同じアドレスへのトランザクション書き込みアクセスとして示す第３のトランザクションを生成するステップを示す。図４Ｂに示すように、第３のトランザクションＡw’は第２のＡＰ４２から出力され、第２のデータコンフォーマ５０によって受け取られる。図４Ｃに示すように、第２のデータコンフォーマ５０は第２のトランザクションメモリ４８に第３のトランザクションＡw’を保存し、これを第１のデータコンフォーマ３０に渡す。図４Ｄに示すように、第１のデータコンフォーマ３０は第３のトランザクションＡw’を第１のトランザクションメモリ２８に保存する。
【００２０】
図５Ａ〜５Ｃは、第１のトランザクションと第３のトランザクションとを比較するステップを示す。より具体的には、図５Ａは、第１のトランザクションＡwおよび第３のトランザクションＡw’が第１のトランザクションメモリ２８および第２のトランザクションメモリ４８から、比較が行われるデータコンフォーマ３０および５０へポップされるところを示す。これらのトランザクションがマッチしない場合、書き込みは終了し、エラーが記録される。図５Ｂに示すように、これらのトランザクションがマッチする場合、データコンフォーマ３０および５０は書き込みトランザクションをＩ／Ｏインターフェース３２および５２に渡し、継続中の読み出しトランザクションをフェッチする。通常の完全性書き込みのために、書き込みトランザクションはアドレス指定されたＩ／Ｏインターフェースに渡されるのみである。図５Ｃに示すように、Ｉ／Ｏインターフェースはトランザクション書き込みＡを完了し、データコンフォーマ３０および５０はトランザクション読み出しＡをＩ／Ｏインターフェース３２および５２に渡す。通常の完全性読み出しのために、トランザクション読み出しＡはアドレス指定されたＩ／Ｏインターフェースに渡すのみである。
【００２１】
図６Ａ〜６Ｆは、読み出しデータが検証されるステップを示す。図６Ａは、Ｉ／Ｏインターフェース３２および５２がデータＡのトランザクション読み出しを完了したことを示す。図６Ｂおよび図６Ｃに示すように、Ｉ／Ｏインターフェース３２および５２は読み出しデーをデータコンフォーマ３０および５０に渡すことができる。図６Ｄに示すように、データコンフォーマ３０および５０は互いに読み出しデータを渡すことができ、図６Ｅに示す比較を実行することができる。図６Ｆに示すように、データコンフォーマ３０は読み出しデータＡを第１のＣＰＵ２０に渡すことができ、データコンフォーマ５０は後で読み出すために、トランザクションおよび読み出しデータＡを第２のＣＰＵ４０のトランザクションメモリ４８の中に保存する。比較が失敗した場合、エラーが読み出しおよびトランザクションメモリ４８の中に示され、エラーが記録される。
【００２２】
図７Ａ〜７Ｄは、Ａr’として示す第４のトランザクション読み出しアクセスが生成され、比較されるステップを示す。より具体的には、第２のＣＰＵ４０は、図７Ａで第２のトランザクションと同じアドレスへのトランザクション読み出しアクセスとして示す第４のトランザクション読み出しアクセスＡr’を生成する。図７Ｂに示すように、トランザクションＡr’は第２のＡＰ４２から出力され、第２のデータコンフォーマ５０によって受け取ることができる。データコンフォーマ５０は、トランザクションメモリ４８の中にＡからの既存の検証された読み出しがあると判定することができるので、Ａからの検証された読み出しをトランザクションメモリ４８から取得する。図７Ｄに示すように、データコンフォーマ５０は次いで読み出しデータＡをＣＰＵ４０に送る。以前にＡ＝Ａ’の比較が失敗している場合、読み出しにおいてエラーが示される。このように、データコンフォーマ３０および５０は、ＣＰＵ２０および４０のＩ／Ｏアクセスを、トランザクションバッファを使用して突合せることができる。各書き込みアクセス要求は、ＣＰＵ２０とＣＰＵ４０の両方がこのアクセス要求を受け取るまで、バッファまたはトランザクションメモリの中にとどまり、受け取った後Ｉ／Ｏアクセスが開始される。各読み出しアクセスは、最初に読み出しトランザクションを開始したＣＰＵへ直ちに読み出しデータを戻し、他方のＣＰＵが同じ読み出しトランザクションを開始するまで、検証されたデータをトランザクションメモリに記憶する。このようにして、速い方のＣＰＵが読み出しを実行するとき、遅い方のＣＰＵにとってそのデータをプリフェッチすることが不可欠である。
【００２３】
図８Ａ〜８Ｊは、ブロックされていない読み出しがある場合に、ＡＰが性能の犠牲を回避するために、継続中の書き込みおよびブロックされた読み出しトランザクションの前に読み出しを実行してもよい第３の実施形態による方法の代替部分を示す。さらに、この方法によって読み出しデータは、冗長プロセッサからの対応するトランザクションを待つのではなく、即座に利用可能となる。
【００２４】
読み出しトランザクションが生じ、トランザクションメモリの中の重複する領域への既存の書き込みがない（読み出しが任意の未処理の書き込みによって影響を受けない）場合、読み出しトランザクションは図８Ａに示すようにブロックされていない読み出しである。図８Ｂに示すように、ブロックされていない読み出しＢrは、第１の処理レーン１２の第１のデータコンフォーマ３０で受け取ることができる。図８Ｃに示すように、データコンフォーマ３０はトランザクションＢrをＩ／Ｏインターフェース３２に渡し、またトランザクションＢrを第２のデータコンフォーマ５０に渡すことができる。次いで、図８Ｄに示すように、データコンフォーマ５０はトランザクションＢrをＩ／Ｏインターフェース５２に渡すことができる。
【００２５】
図８Ｅは、Ｉ／Ｏインターフェース３２および５２が読み出しを実行するところを示しており、Ｉ／Ｏインターフェース３２および５２は、図８Ｆおよび８Ｇに示すように、読み出しデータをデータコンフォーマ３０および５０に渡すことができる。データコンフォーマ３０および５０は、図８Ｈに示すように互いに読み出しデータを渡すことができ、図８Ｉに示すように比較を実行することができる。図８Ｊに示すように、データコンフォーマ３０は読み出しデータＢを第１のＣＰＵ２０に渡し、データコンフォーマ５０は、後で読み出すためにトランザクションおよび読み出しデータＢを第２のＣＰＵ４０のトランザクションメモリに記憶する。読み出しがマッチしない場合、読み出しはエラーとしてフラグを付けられる。読み出しを供給しなかったデータコンフォーマは、それらの関連したプロセッサが読み出しを実行するまで検証された読み出しを保持する。
【００２６】
区画があり、区画の切り替えの時にバッファの中に継続中のトランザクションがある場合、継続中のトランザクションはシステムがその区画に戻るまで、そのバッファの中に残る。この場合、一組のトランザクションメモリは区画毎に維持され、データコンフォーマは区画の切り替え毎に設定された新しいトランザクションメモリに切り替わる。トランザクションの同期は区画毎通常通り機能し続け、継続中のトランザクションは元の区画に切り替わった後で完了する。トランザクションはその区画に戻るまで遅延されていたにもかかわらず、他のＣＰＵから見ると遅延は存在していない。システムは常に、少なくとも最も低速のＣＰＵと同じ速さで実行され、より低速のＣＰＵのために読み出しデータが常に準備されているために、わずかに速く実行され得る。トランザクションを次の区画に入れてトランザクションを遅延させるが望ましくない場合、区画タイマに基づいてトランザクションを終了するために十分な時間があることを確認するのはソフトウェアによる。
【００２７】
上述の実施形態は、様々な利益を実現する。たとえば、上述の実施形態では、パフォーマンスに影響を与えることなく最新のプロセッサの同期が可能になる。技術的効果は、そのような同期および完全性検査がロックステップ操作を必要とせず、処理システムが少なくとも最も低速のプロセッサと同じ速さで動作することで異種のプロセッサを許容することである。プロセッサの同期は、ソフトウェアアプリケーションに対して透過的である。同期および完全性検査は、ハードウェア、ソフトウェアのどちらにも実装することができ、実装における柔軟性を可能にする。さらに上述の方法は、多数の冗長性を持つシステムにおいて、また多数のプロセッサ／スレッド用に使用することができる。異種のプロセッサを使用することによって、顧客により高レベルの安全性と価値を提供する。他にも利益として、処理モジュールに対する安全性分析を分離することができるため、システムの安全性分析を大幅に簡略化することができ、それによってシステムコストおよび開発期間を短縮することができる。
【００２８】
本書では、最良の形態を含めて本発明を開示するために、また任意のデバイスまたはシステムを作成、使用し、組み込まれた任意の方法を実行することを含めて、当業者が誰でも本発明を実施することができるように例を使用している。本発明の特許性のある範囲は特許請求の範囲によって定義され、当業者に思い付く他の例をも含み得る。そのような他の例は、それらが特許請求の範囲の文言と異ならない構造的要素を持つ場合、またはそれらが特許請求の範囲の文言と実質的に異ならない同等の構造的要素を含む場合、特許請求の範囲内にあるものとする。
【符号の説明】
【００２９】
１０  処理システム
１２  第１の処理レーン
１４  第２の処理レーン
２０  ＣＰＵ
２２  ＡＰ
２４  メモリ
２６  高速インターフェース
２８  トランザクションメモリ
３０  データコンフォーマ
３２  Ｉ／Ｏインターフェース
３４  共有メモリ
３６  区画タイマ
３８  区画切り替えＤＭＡ
４０  ＣＰＵ
４２  ＡＰ
４８  トランザクションメモリ
５０  データコンフォーマ
５２  Ｉ／Ｏインターフェース
【図１】
2013105491.tif 000003
【図２Ａ】
2013105491.tif 000004
【図２Ｂ】
2013105491.tif 000005
【図２Ｃ】
2013105491.tif 000006
【図２Ｄ】
2013105491.tif 000007
【図３Ａ】
2013105491.tif 000008
【図３Ｂ】
2013105491.tif 000009
【図３Ｃ】
2013105491.tif 000010
【図３Ｄ】
2013105491.tif 000011
【図４Ａ】
2013105491.tif 000012
【図４Ｂ】
2013105491.tif 000013
【図４Ｃ】
2013105491.tif 000014
【図４Ｄ】
2013105491.tif 000015
【図５Ａ】
2013105491.tif 000016
【図５Ｂ】
2013105491.tif 000017
【図５Ｃ】
2013105491.tif 000018
【図６Ａ】
2013105491.tif 000019
【図６Ｂ】
2013105491.tif 000020
【図６Ｃ】
2013105491.tif 000021
【図６Ｄ】
2013105491.tif 000022
【図６Ｅ】
2013105491.tif 000023
【図６Ｆ】
2013105491.tif 000024
【図７Ａ】
2013105491.tif 000025
【図７Ｂ】
2013105491.tif 000026
【図７Ｃ】
2013105491.tif 000027
【図７Ｄ】
2013105491.tif 000028
【図８Ａ】
2013105491.tif 000029
【図８Ｂ】
2013105491.tif 000030
【図８Ｃ】
2013105491.tif 000031
【図８Ｄ】
2013105491.tif 000032
【図８Ｅ】
2013105491.tif 000033
【図８Ｆ】
2013105491.tif 000034
【図８Ｇ】
2013105491.tif 000035
【図８Ｈ】
2013105491.tif 000036
【図８Ｉ】
2013105491.tif 000037
【図８Ｊ】
2013105491.tif 000038