高完全性処理を提供する方法
【課題】高集積度マイクロプロセッサにおいて、ロックステップで動作できる機能を提供する。
【解決手段】高完全性処理を提供する方法として、各レーン12、14がアプリケーションプロセッサ20、40を有し、それらのアプリケーションプロセッサが非ロックステップ構成において同じアプリケーションソフトウェアを実行する少なくとも2つの冗長処理レーンを有し、アドレス可能な空間へのアクセスを必要とするトランザクションを出力する高完全性処理システムにおいて、同期および完全性検査を提供する方法。
【解決手段】高完全性処理を提供する方法として、各レーン12、14がアプリケーションプロセッサ20、40を有し、それらのアプリケーションプロセッサが非ロックステップ構成において同じアプリケーションソフトウェアを実行する少なくとも2つの冗長処理レーンを有し、アドレス可能な空間へのアクセスを必要とするトランザクションを出力する高完全性処理システムにおいて、同期および完全性検査を提供する方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、高完全性処理を提供する方法に関する。
【背景技術】
【0002】
コンピュータ処理モジュールは、障害を検出して正確に分離すること、および誤った警報を最少にすることを確実にするために、ソースにおける高い完全性および高い可用性を提供することができる。高完全性モジュールは航空機についてはなお一層重要であり、高完全性モジュールによって障害が迅速かつ正確に検出、分離されないことから、操作困難になる場合がある。高完全性処理システムの従来設計は、モジュールにおいて2つ以上のマイクロプロセッサの間で命令レベルのロックステップ処理を実装するために高価な特注の回路を必要とする。さらに、最新のマイクロプロセッサは、構成要素の集積度が高まり、処理時間のばらつきを導入するフィーチャのために、ロックステップで動作することができない。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第7,987,385号明細書
【発明の概要】
【0004】
一実施形態では、少なくとも2つの冗長処理レーンを有する高完全性処理システムにおいて同期および完全性検査を提供する方法であって、各レーンがアプリケーションプロセッサ(AP)を有し、前記APが非ロックステップ構成において同じアプリケーションソフトウェアを実行し、アドレス可能な空間へのアクセスを必要とするトランザクションを出力する、方法が、第1のAPから第1のトランザクションを出力するステップと、第1のトランザクションを実行する前に、第1のバッファに第1のトランザクションを記憶するステップと、第2のAPから第2のトランザクションを出力するステップと、マッチするかどうかを判定するために第1のトランザクションと第2のトランザクションを比較するステップと、第1のトランザクションと第2のトランザクションがマッチする場合、第1のトランザクションと第2のトランザクションの処理をそれらの対応するレーンで実行するステップとを含む。
【図面の簡単な説明】
【0005】
【図1】本発明の第1の実施形態による高完全性処理システムの略図である。
【図2A】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の一部を概略的に示す図である。
【図2B】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の一部を概略的に示す図である。
【図2C】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の一部を概略的に示す図である。
【図2D】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の一部を概略的に示す図である。
【図3A】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図3B】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図3C】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図3D】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図4A】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図4B】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図4C】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図4D】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図5A】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図5B】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図5C】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図6A】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図6B】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図6C】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図6D】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図6E】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図6F】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図7A】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図7B】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図7C】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図7D】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8A】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8B】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8C】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8D】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8E】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8F】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8G】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8H】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8I】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8J】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【発明を実施するための形態】
【0006】
ソースコンピューティングでの高完全性は現在、命令レベルのロックステップで実行する少なくとも2つの処理レーン、または少なくとも2つの処理レーンおよびモニタを必要とする。モジュールの各処理レーンで実行中のソフトウェアが、同じ入力(データ、割込み、時間など)を受け取り出力を送る前または新しい入力を受け取る前にデータ上で同じ「量」の処理を実行することができる場合、各レーンは障害を伴わずに同じ出力を作り出す。一般に、モジュールで実行中のソフトウェアが入力を受け取る場合、その入力は両方のレーンで同じものでなければならず、両方のレーンは厳密に同じ状態であるときに入力を受け取らなければならない。モジュールで実行中のソフトウェアが出力を送る場合、両方のレーンからのデータは出力される前に比較されなければならない。(状態同期が不適正であるために)出力データの比較に失敗しないようにするために、出力データの作成に関与するソフトウェアの部分は、出力が比較され、次いで送信することが可能になる前に、両方のレーンで同じ状態に達しなければならない。
【0007】
本発明の実施形態は、プロセッサのロックステップ動作を必要とせず、異種のプロセッサを許容する同期および完全性検査の方法を提供する。図1は、本発明の第1の実施形態による、両方が互いに冗長である第1の処理レーン12と第2の処理レーン14とを持つ高完全性、非ロックステップ処理システム10の非限定的な例を示す。処理システム10はさらに多くの冗長な処理レーンを持ち得ることが企図されているが、説明を明快で簡単にするために、2つのみを示し、説明する。
【0008】
第1の処理レーン12と第2の処理レーン14の両方は冗長であるので、第1の処理レーン12の構成要素のみを説明する。第2の処理レーン14では、20加えた同様の数字によって同様の部分を識別した。第1の処理レーン12の部分の説明は、第2の処理レーン14の同様の構成要素にも適用されることは理解されよう。
【0009】
第1の処理レーン12は、集積されたAP22とメモリ24とを持つ第1のCPU20を含むことができる。高速インターフェース26はCPU20と動作可能に結合し、CPU20へのアクセスを提供する。高速インターフェース26は、十分な帯域幅を持つ任意のインターフェースであることが企図されている。非限定的な例として、高速インターフェースはPCI Expressであってもよい。
【0010】
トランザクションメモリ28は第1の処理レーン12に含まれ、バッファとして機能し、CPU20と40の両方からのI/Oまたはアドレス可能な空間へのアクセスを記憶することができる。これは、読み出しアクセスと書き込みアクセスの両方を記憶することが含まれる。重複するトランザクションメモリ28を示しているが、これらは冗長性を目的として第1の処理レーン12の中に含めることができる。
【0011】
少なくとも1つのデータコンフォーマ(data conformer)30を第1の処理レーン12に含めることができ、データコンフォーマ30は入来データと送出データとを比較してそれらが同じであることを確認することができる。複数のデータコンフォーマ30を示しているが、第1の処理レーン12の中では、1つのデータコンフォーマ30のみ必要である。第1の処理レーン12の中に複数のデータコンフォーマ30がある場合、データコンフォーマ30はインデックス付けされてもよい。複数のデータコンフォーマがある場合、第1の処理レーン12と第2の処理レーン14の両方は、同じ数のデータコンフォーマを持つ。データコンフォーマ間のインタラクションは同じ処理レーンのデータコンフォーマの中のみで生じる。I/Oインターフェース32を含むことができ、I/Oインターフェース32はアドレス可能な空間またはI/Oへの接続を実装することができる。
【0012】
処理システム10は、各APの時間および/または空間の分割された環境をサポートすることができる。そのような分割された環境で、APはプログラムOSの多数の区画を実行することができる。データコンフォーマまたは別個のトランザクションメモリは、各APの各区画毎に用意され、区画の切り替え時にAP同士が同期するのを回避することが好ましい。さらに、APは多数のコアまたは多数のスレッドをサポートすることができる。データコンフォーマまたは別個のトランザクションメモリは、各々独立したコアまたはスレッド毎に必要となる。
【0013】
そのような分割された環境では、共有メモリ34を第1の処理レーン12に含め、それをI/Oインターフェース32に接続することができる。共有メモリ34はエラー訂正コード(ECC)を含んでもよい。そのような共有メモリ34は、区画間で共有されるデータなどの高完全性を必要とするデータを記憶することができる。共有メモリ34は必要なメモリの量に応じて、内部または外部にあると企図されている。区画タイマ36もまた第1の処理レーン12に含めることができ、区画タイマ36は区画の中に残された時間を追跡することができる。任意の区画スイッチDMA38をもまた第1の処理レーン12に含めることができ、区画スイッチDMA38は区画切り替えの間にデータを取得することができるので、アプリケーションのためにデータが即座に準備される。そのデータはその後、I/Oアクセスを待つのではなく、このデバイスから直接読み出すことができる。区画タイマ36が期限を示すときに、CPU20は区画スイッチを起動することができる。
【0014】
説明を簡潔にするために、以下の操作上の説明は第1および第2の処理レーン12および14に限定し、各レーンは単一のデータコンフォーマ30および50のみをそれぞれ持ち、かつ各レーンは非分割の環境であることとして説明する。処理システム10は、非ロックステップ構成においてAP22および42が同じアプリケーションソフトウェアを実行しアドレス可能な空間へのアクセスを必要とするトランザクションを出力して、同期および完全性検査を提供する方法を実行することができる。アドレス可能な空間は、非限定的な例としてI/O、メモリまたは他の空間を含む任意の適切な空間である。トランザクションが後続のトランザクションをすべてブロックすべきかどうか、比較が有効かどうか、および冗長なアドレス可能な空間にアクセスすべきかどうかを関連したプロセスIDに示すために、トランザクションとともにフラグを使用することができる。
【0015】
一般に、書き込み動作の間、第1のトランザクションは第1のCPU20の第1のAP22から出力され、次いで第1のトランザクションは、実行される前に第1のバッファに記憶される。第2のCPU40の第2のAP42から第2のトランザクションが出力され、第1のトランザクションと第2のトランザクションは、マッチするかどうか判定するために比較することができる。第1のトランザクションと第2のトランザクションがマッチする場合、第1および第2のトランザクションに対応するアドレス可能な空間へのアクセスが達成される。第1のトランザクションと第2のトランザクションが比較されたときに、それらがマッチしないことが判明した場合、エラーが生じ、アドレス可能な空間へのアクセスは与えられない。そのようなエラーは記録されてもよいことが企図されている。非限定的な例として、エラーはメモリに記録されてもよい。システムの再開を促進するために、第1のトランザクションと第2のトランザクションがマッチしない場合、バッファがフラッシュされてもよいことがさらに企図されている。
【0016】
一般に、読み取り動作の間、第1のトランザクションは第1のCPU20の第1のAP22から出力され、重複するアドレスに継続中の書き込みがなければ、第1のトランザクションに対応するアドレス可能な空間へのアクセスが達成される。トランザクションから読み出されたデータは検証され、第1のCPUに戻されて第2バッファに記憶される。第2のトランザクションが第2のCPU40の第2のAP42から出力される場合、読み出されたトランザクションは検証され、検証されたデータは第2のCPUに戻される。読み出されたデータが誤っている場合、または第1のトランザクションと第2のトランザクションとがマッチしない場合、エラーが生じ、関連したデータの有無にかかわらず、第1および第2のCPUにエラーがフラグで知らされる。そのようなエラーは記録されてもよいことが企図されている。非限定的な例として、エラーはメモリに記録されてもよい。システムの再開を促進するために、第1のトランザクションと第2のトランザクションがマッチしない場合、バッファがフラッシュされてもよいことがさらに企図されている。
【0017】
図2A〜7Fは、処理システム10内の同期および完全性検査を提供する方法の実施形態を示す。図2A〜2Dは、第1および第2のバッファへ第1のトランザクションを記憶するステップを示す。この方法は、第1のCPU20が第1のトランザクションを生成するときに開始してもよい。図2Aには、第1のトランザクションをメモリ場所AまたはAwへのトランザクション書き込みアクセスとして示す。第1のトランザクションAwは、図2Bに示すように、第1の処理レーン12の第1のデータコンフォーマ30で受け取ることができる。次いで、図2Cに示すように、データコンフォーマ30は第1のトランザクションAwをトランザクションメモリ28の中にプッシュし、第1のトランザクションAwを第2の処理レーン14の第2のデータコンフォーマ50に渡すことができる。図2Dは、データコンフォーマ50が第1のトランザクションAwを第2のデータコンフォーマ50に対応するトランザクションメモリ48の中にプッシュするところを示す。図示していないが、この時点で、第2のCPU40によって第2の書き込みトランザクションが生成されれば第2のデータコンフォーマでそれを受け取ることができる。第2の書き込みトランザクションは、第1のデータコンフォーマ30に渡すことができる。第1のトランザクションは第1および第2のトランザクションメモリからポップされ、第1のトランザクションと第2のトランザクションがマッチするかどうかを判定するために、コンフォーマで第2の書き込みトランザクションと比較される。これらのトランザクションがマッチしない場合、書き込みは打ち切られ、エラーが記録される。これらのトランザクションがマッチする場合、データコンフォーマ30および50は、データを書き込むために書き込みトランザクションをI/Oインターフェース32および52に渡す。
【0018】
図3A〜7Fは、第2のトランザクションがブロックされた読み出しアクセスである代替シナリオを示す。ブロック読み出しアクセスは典型的には、そのアドレスが継続中の書き込みと重複する読み出しである。図3Aにおいて、第1のCPU20は、Arとして示す、トランザクション書き込みアクセスと同じアドレスへの読み出しアクセスである第2のトランザクションを生成する。図3Bに示すように、第2のトランザクションArは第1の処理レーン12の第1のデータコンフォーマ30で受け取ることができる。トランザクションメモリ28の中に同じアドレスに対する既存の書き込みがあることから、データコンフォーマ30は、図3Cに示すようにトランザクションメモリ28の中の第1のトランザクションAwの後ろにトランザクションArをプッシュする。データコンフォーマ30はトランザクションArを第2のデータコンフォーマ50に渡し、第2のデータコンフォーマ50は次いで、図3Dに示すようにトランザクションメモリ48の中の第1のトランザクションの後ろにArをプッシュすることができる。
【0019】
図4A〜4Dは、第3のトランザクションが生成され、バッファに記憶されるステップを示す。より具体的には、図4Aは、第2のCPU40が、第1のトランザクションまたはAwと同じアドレスへのトランザクション書き込みアクセスとして示す第3のトランザクションを生成するステップを示す。図4Bに示すように、第3のトランザクションAw’は第2のAP42から出力され、第2のデータコンフォーマ50によって受け取られる。図4Cに示すように、第2のデータコンフォーマ50は第2のトランザクションメモリ48に第3のトランザクションAw’を保存し、これを第1のデータコンフォーマ30に渡す。図4Dに示すように、第1のデータコンフォーマ30は第3のトランザクションAw’を第1のトランザクションメモリ28に保存する。
【0020】
図5A〜5Cは、第1のトランザクションと第3のトランザクションとを比較するステップを示す。より具体的には、図5Aは、第1のトランザクションAwおよび第3のトランザクションAw’が第1のトランザクションメモリ28および第2のトランザクションメモリ48から、比較が行われるデータコンフォーマ30および50へポップされるところを示す。これらのトランザクションがマッチしない場合、書き込みは終了し、エラーが記録される。図5Bに示すように、これらのトランザクションがマッチする場合、データコンフォーマ30および50は書き込みトランザクションをI/Oインターフェース32および52に渡し、継続中の読み出しトランザクションをフェッチする。通常の完全性書き込みのために、書き込みトランザクションはアドレス指定されたI/Oインターフェースに渡されるのみである。図5Cに示すように、I/Oインターフェースはトランザクション書き込みAを完了し、データコンフォーマ30および50はトランザクション読み出しAをI/Oインターフェース32および52に渡す。通常の完全性読み出しのために、トランザクション読み出しAはアドレス指定されたI/Oインターフェースに渡すのみである。
【0021】
図6A〜6Fは、読み出しデータが検証されるステップを示す。図6Aは、I/Oインターフェース32および52がデータAのトランザクション読み出しを完了したことを示す。図6Bおよび図6Cに示すように、I/Oインターフェース32および52は読み出しデーをデータコンフォーマ30および50に渡すことができる。図6Dに示すように、データコンフォーマ30および50は互いに読み出しデータを渡すことができ、図6Eに示す比較を実行することができる。図6Fに示すように、データコンフォーマ30は読み出しデータAを第1のCPU20に渡すことができ、データコンフォーマ50は後で読み出すために、トランザクションおよび読み出しデータAを第2のCPU40のトランザクションメモリ48の中に保存する。比較が失敗した場合、エラーが読み出しおよびトランザクションメモリ48の中に示され、エラーが記録される。
【0022】
図7A〜7Dは、Ar’として示す第4のトランザクション読み出しアクセスが生成され、比較されるステップを示す。より具体的には、第2のCPU40は、図7Aで第2のトランザクションと同じアドレスへのトランザクション読み出しアクセスとして示す第4のトランザクション読み出しアクセスAr’を生成する。図7Bに示すように、トランザクションAr’は第2のAP42から出力され、第2のデータコンフォーマ50によって受け取ることができる。データコンフォーマ50は、トランザクションメモリ48の中にAからの既存の検証された読み出しがあると判定することができるので、Aからの検証された読み出しをトランザクションメモリ48から取得する。図7Dに示すように、データコンフォーマ50は次いで読み出しデータAをCPU40に送る。以前にA=A’の比較が失敗している場合、読み出しにおいてエラーが示される。このように、データコンフォーマ30および50は、CPU20および40のI/Oアクセスを、トランザクションバッファを使用して突合せることができる。各書き込みアクセス要求は、CPU20とCPU40の両方がこのアクセス要求を受け取るまで、バッファまたはトランザクションメモリの中にとどまり、受け取った後I/Oアクセスが開始される。各読み出しアクセスは、最初に読み出しトランザクションを開始したCPUへ直ちに読み出しデータを戻し、他方のCPUが同じ読み出しトランザクションを開始するまで、検証されたデータをトランザクションメモリに記憶する。このようにして、速い方のCPUが読み出しを実行するとき、遅い方のCPUにとってそのデータをプリフェッチすることが不可欠である。
【0023】
図8A〜8Jは、ブロックされていない読み出しがある場合に、APが性能の犠牲を回避するために、継続中の書き込みおよびブロックされた読み出しトランザクションの前に読み出しを実行してもよい第3の実施形態による方法の代替部分を示す。さらに、この方法によって読み出しデータは、冗長プロセッサからの対応するトランザクションを待つのではなく、即座に利用可能となる。
【0024】
読み出しトランザクションが生じ、トランザクションメモリの中の重複する領域への既存の書き込みがない(読み出しが任意の未処理の書き込みによって影響を受けない)場合、読み出しトランザクションは図8Aに示すようにブロックされていない読み出しである。図8Bに示すように、ブロックされていない読み出しBrは、第1の処理レーン12の第1のデータコンフォーマ30で受け取ることができる。図8Cに示すように、データコンフォーマ30はトランザクションBrをI/Oインターフェース32に渡し、またトランザクションBrを第2のデータコンフォーマ50に渡すことができる。次いで、図8Dに示すように、データコンフォーマ50はトランザクションBrをI/Oインターフェース52に渡すことができる。
【0025】
図8Eは、I/Oインターフェース32および52が読み出しを実行するところを示しており、I/Oインターフェース32および52は、図8Fおよび8Gに示すように、読み出しデータをデータコンフォーマ30および50に渡すことができる。データコンフォーマ30および50は、図8Hに示すように互いに読み出しデータを渡すことができ、図8Iに示すように比較を実行することができる。図8Jに示すように、データコンフォーマ30は読み出しデータBを第1のCPU20に渡し、データコンフォーマ50は、後で読み出すためにトランザクションおよび読み出しデータBを第2のCPU40のトランザクションメモリに記憶する。読み出しがマッチしない場合、読み出しはエラーとしてフラグを付けられる。読み出しを供給しなかったデータコンフォーマは、それらの関連したプロセッサが読み出しを実行するまで検証された読み出しを保持する。
【0026】
区画があり、区画の切り替えの時にバッファの中に継続中のトランザクションがある場合、継続中のトランザクションはシステムがその区画に戻るまで、そのバッファの中に残る。この場合、一組のトランザクションメモリは区画毎に維持され、データコンフォーマは区画の切り替え毎に設定された新しいトランザクションメモリに切り替わる。トランザクションの同期は区画毎通常通り機能し続け、継続中のトランザクションは元の区画に切り替わった後で完了する。トランザクションはその区画に戻るまで遅延されていたにもかかわらず、他のCPUから見ると遅延は存在していない。システムは常に、少なくとも最も低速のCPUと同じ速さで実行され、より低速のCPUのために読み出しデータが常に準備されているために、わずかに速く実行され得る。トランザクションを次の区画に入れてトランザクションを遅延させるが望ましくない場合、区画タイマに基づいてトランザクションを終了するために十分な時間があることを確認するのはソフトウェアによる。
【0027】
上述の実施形態は、様々な利益を実現する。たとえば、上述の実施形態では、パフォーマンスに影響を与えることなく最新のプロセッサの同期が可能になる。技術的効果は、そのような同期および完全性検査がロックステップ操作を必要とせず、処理システムが少なくとも最も低速のプロセッサと同じ速さで動作することで異種のプロセッサを許容することである。プロセッサの同期は、ソフトウェアアプリケーションに対して透過的である。同期および完全性検査は、ハードウェア、ソフトウェアのどちらにも実装することができ、実装における柔軟性を可能にする。さらに上述の方法は、多数の冗長性を持つシステムにおいて、また多数のプロセッサ/スレッド用に使用することができる。異種のプロセッサを使用することによって、顧客により高レベルの安全性と価値を提供する。他にも利益として、処理モジュールに対する安全性分析を分離することができるため、システムの安全性分析を大幅に簡略化することができ、それによってシステムコストおよび開発期間を短縮することができる。
【0028】
本書では、最良の形態を含めて本発明を開示するために、また任意のデバイスまたはシステムを作成、使用し、組み込まれた任意の方法を実行することを含めて、当業者が誰でも本発明を実施することができるように例を使用している。本発明の特許性のある範囲は特許請求の範囲によって定義され、当業者に思い付く他の例をも含み得る。そのような他の例は、それらが特許請求の範囲の文言と異ならない構造的要素を持つ場合、またはそれらが特許請求の範囲の文言と実質的に異ならない同等の構造的要素を含む場合、特許請求の範囲内にあるものとする。
【符号の説明】
【0029】
10 処理システム
12 第1の処理レーン
14 第2の処理レーン
20 CPU
22 AP
24 メモリ
26 高速インターフェース
28 トランザクションメモリ
30 データコンフォーマ
32 I/Oインターフェース
34 共有メモリ
36 区画タイマ
38 区画切り替えDMA
40 CPU
42 AP
48 トランザクションメモリ
50 データコンフォーマ
52 I/Oインターフェース
【技術分野】
【0001】
本発明は、高完全性処理を提供する方法に関する。
【背景技術】
【0002】
コンピュータ処理モジュールは、障害を検出して正確に分離すること、および誤った警報を最少にすることを確実にするために、ソースにおける高い完全性および高い可用性を提供することができる。高完全性モジュールは航空機についてはなお一層重要であり、高完全性モジュールによって障害が迅速かつ正確に検出、分離されないことから、操作困難になる場合がある。高完全性処理システムの従来設計は、モジュールにおいて2つ以上のマイクロプロセッサの間で命令レベルのロックステップ処理を実装するために高価な特注の回路を必要とする。さらに、最新のマイクロプロセッサは、構成要素の集積度が高まり、処理時間のばらつきを導入するフィーチャのために、ロックステップで動作することができない。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第7,987,385号明細書
【発明の概要】
【0004】
一実施形態では、少なくとも2つの冗長処理レーンを有する高完全性処理システムにおいて同期および完全性検査を提供する方法であって、各レーンがアプリケーションプロセッサ(AP)を有し、前記APが非ロックステップ構成において同じアプリケーションソフトウェアを実行し、アドレス可能な空間へのアクセスを必要とするトランザクションを出力する、方法が、第1のAPから第1のトランザクションを出力するステップと、第1のトランザクションを実行する前に、第1のバッファに第1のトランザクションを記憶するステップと、第2のAPから第2のトランザクションを出力するステップと、マッチするかどうかを判定するために第1のトランザクションと第2のトランザクションを比較するステップと、第1のトランザクションと第2のトランザクションがマッチする場合、第1のトランザクションと第2のトランザクションの処理をそれらの対応するレーンで実行するステップとを含む。
【図面の簡単な説明】
【0005】
【図1】本発明の第1の実施形態による高完全性処理システムの略図である。
【図2A】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の一部を概略的に示す図である。
【図2B】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の一部を概略的に示す図である。
【図2C】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の一部を概略的に示す図である。
【図2D】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の一部を概略的に示す図である。
【図3A】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図3B】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図3C】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図3D】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図4A】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図4B】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図4C】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図4D】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図5A】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図5B】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図5C】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図6A】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図6B】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図6C】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図6D】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図6E】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図6F】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図7A】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図7B】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図7C】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図7D】第2の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8A】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8B】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8C】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8D】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8E】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8F】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8G】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8H】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8I】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【図8J】第3の実施形態による高完全性処理システムにおいて同期および完全性検査を提供する方法の別の部分を概略的に示す図である。
【発明を実施するための形態】
【0006】
ソースコンピューティングでの高完全性は現在、命令レベルのロックステップで実行する少なくとも2つの処理レーン、または少なくとも2つの処理レーンおよびモニタを必要とする。モジュールの各処理レーンで実行中のソフトウェアが、同じ入力(データ、割込み、時間など)を受け取り出力を送る前または新しい入力を受け取る前にデータ上で同じ「量」の処理を実行することができる場合、各レーンは障害を伴わずに同じ出力を作り出す。一般に、モジュールで実行中のソフトウェアが入力を受け取る場合、その入力は両方のレーンで同じものでなければならず、両方のレーンは厳密に同じ状態であるときに入力を受け取らなければならない。モジュールで実行中のソフトウェアが出力を送る場合、両方のレーンからのデータは出力される前に比較されなければならない。(状態同期が不適正であるために)出力データの比較に失敗しないようにするために、出力データの作成に関与するソフトウェアの部分は、出力が比較され、次いで送信することが可能になる前に、両方のレーンで同じ状態に達しなければならない。
【0007】
本発明の実施形態は、プロセッサのロックステップ動作を必要とせず、異種のプロセッサを許容する同期および完全性検査の方法を提供する。図1は、本発明の第1の実施形態による、両方が互いに冗長である第1の処理レーン12と第2の処理レーン14とを持つ高完全性、非ロックステップ処理システム10の非限定的な例を示す。処理システム10はさらに多くの冗長な処理レーンを持ち得ることが企図されているが、説明を明快で簡単にするために、2つのみを示し、説明する。
【0008】
第1の処理レーン12と第2の処理レーン14の両方は冗長であるので、第1の処理レーン12の構成要素のみを説明する。第2の処理レーン14では、20加えた同様の数字によって同様の部分を識別した。第1の処理レーン12の部分の説明は、第2の処理レーン14の同様の構成要素にも適用されることは理解されよう。
【0009】
第1の処理レーン12は、集積されたAP22とメモリ24とを持つ第1のCPU20を含むことができる。高速インターフェース26はCPU20と動作可能に結合し、CPU20へのアクセスを提供する。高速インターフェース26は、十分な帯域幅を持つ任意のインターフェースであることが企図されている。非限定的な例として、高速インターフェースはPCI Expressであってもよい。
【0010】
トランザクションメモリ28は第1の処理レーン12に含まれ、バッファとして機能し、CPU20と40の両方からのI/Oまたはアドレス可能な空間へのアクセスを記憶することができる。これは、読み出しアクセスと書き込みアクセスの両方を記憶することが含まれる。重複するトランザクションメモリ28を示しているが、これらは冗長性を目的として第1の処理レーン12の中に含めることができる。
【0011】
少なくとも1つのデータコンフォーマ(data conformer)30を第1の処理レーン12に含めることができ、データコンフォーマ30は入来データと送出データとを比較してそれらが同じであることを確認することができる。複数のデータコンフォーマ30を示しているが、第1の処理レーン12の中では、1つのデータコンフォーマ30のみ必要である。第1の処理レーン12の中に複数のデータコンフォーマ30がある場合、データコンフォーマ30はインデックス付けされてもよい。複数のデータコンフォーマがある場合、第1の処理レーン12と第2の処理レーン14の両方は、同じ数のデータコンフォーマを持つ。データコンフォーマ間のインタラクションは同じ処理レーンのデータコンフォーマの中のみで生じる。I/Oインターフェース32を含むことができ、I/Oインターフェース32はアドレス可能な空間またはI/Oへの接続を実装することができる。
【0012】
処理システム10は、各APの時間および/または空間の分割された環境をサポートすることができる。そのような分割された環境で、APはプログラムOSの多数の区画を実行することができる。データコンフォーマまたは別個のトランザクションメモリは、各APの各区画毎に用意され、区画の切り替え時にAP同士が同期するのを回避することが好ましい。さらに、APは多数のコアまたは多数のスレッドをサポートすることができる。データコンフォーマまたは別個のトランザクションメモリは、各々独立したコアまたはスレッド毎に必要となる。
【0013】
そのような分割された環境では、共有メモリ34を第1の処理レーン12に含め、それをI/Oインターフェース32に接続することができる。共有メモリ34はエラー訂正コード(ECC)を含んでもよい。そのような共有メモリ34は、区画間で共有されるデータなどの高完全性を必要とするデータを記憶することができる。共有メモリ34は必要なメモリの量に応じて、内部または外部にあると企図されている。区画タイマ36もまた第1の処理レーン12に含めることができ、区画タイマ36は区画の中に残された時間を追跡することができる。任意の区画スイッチDMA38をもまた第1の処理レーン12に含めることができ、区画スイッチDMA38は区画切り替えの間にデータを取得することができるので、アプリケーションのためにデータが即座に準備される。そのデータはその後、I/Oアクセスを待つのではなく、このデバイスから直接読み出すことができる。区画タイマ36が期限を示すときに、CPU20は区画スイッチを起動することができる。
【0014】
説明を簡潔にするために、以下の操作上の説明は第1および第2の処理レーン12および14に限定し、各レーンは単一のデータコンフォーマ30および50のみをそれぞれ持ち、かつ各レーンは非分割の環境であることとして説明する。処理システム10は、非ロックステップ構成においてAP22および42が同じアプリケーションソフトウェアを実行しアドレス可能な空間へのアクセスを必要とするトランザクションを出力して、同期および完全性検査を提供する方法を実行することができる。アドレス可能な空間は、非限定的な例としてI/O、メモリまたは他の空間を含む任意の適切な空間である。トランザクションが後続のトランザクションをすべてブロックすべきかどうか、比較が有効かどうか、および冗長なアドレス可能な空間にアクセスすべきかどうかを関連したプロセスIDに示すために、トランザクションとともにフラグを使用することができる。
【0015】
一般に、書き込み動作の間、第1のトランザクションは第1のCPU20の第1のAP22から出力され、次いで第1のトランザクションは、実行される前に第1のバッファに記憶される。第2のCPU40の第2のAP42から第2のトランザクションが出力され、第1のトランザクションと第2のトランザクションは、マッチするかどうか判定するために比較することができる。第1のトランザクションと第2のトランザクションがマッチする場合、第1および第2のトランザクションに対応するアドレス可能な空間へのアクセスが達成される。第1のトランザクションと第2のトランザクションが比較されたときに、それらがマッチしないことが判明した場合、エラーが生じ、アドレス可能な空間へのアクセスは与えられない。そのようなエラーは記録されてもよいことが企図されている。非限定的な例として、エラーはメモリに記録されてもよい。システムの再開を促進するために、第1のトランザクションと第2のトランザクションがマッチしない場合、バッファがフラッシュされてもよいことがさらに企図されている。
【0016】
一般に、読み取り動作の間、第1のトランザクションは第1のCPU20の第1のAP22から出力され、重複するアドレスに継続中の書き込みがなければ、第1のトランザクションに対応するアドレス可能な空間へのアクセスが達成される。トランザクションから読み出されたデータは検証され、第1のCPUに戻されて第2バッファに記憶される。第2のトランザクションが第2のCPU40の第2のAP42から出力される場合、読み出されたトランザクションは検証され、検証されたデータは第2のCPUに戻される。読み出されたデータが誤っている場合、または第1のトランザクションと第2のトランザクションとがマッチしない場合、エラーが生じ、関連したデータの有無にかかわらず、第1および第2のCPUにエラーがフラグで知らされる。そのようなエラーは記録されてもよいことが企図されている。非限定的な例として、エラーはメモリに記録されてもよい。システムの再開を促進するために、第1のトランザクションと第2のトランザクションがマッチしない場合、バッファがフラッシュされてもよいことがさらに企図されている。
【0017】
図2A〜7Fは、処理システム10内の同期および完全性検査を提供する方法の実施形態を示す。図2A〜2Dは、第1および第2のバッファへ第1のトランザクションを記憶するステップを示す。この方法は、第1のCPU20が第1のトランザクションを生成するときに開始してもよい。図2Aには、第1のトランザクションをメモリ場所AまたはAwへのトランザクション書き込みアクセスとして示す。第1のトランザクションAwは、図2Bに示すように、第1の処理レーン12の第1のデータコンフォーマ30で受け取ることができる。次いで、図2Cに示すように、データコンフォーマ30は第1のトランザクションAwをトランザクションメモリ28の中にプッシュし、第1のトランザクションAwを第2の処理レーン14の第2のデータコンフォーマ50に渡すことができる。図2Dは、データコンフォーマ50が第1のトランザクションAwを第2のデータコンフォーマ50に対応するトランザクションメモリ48の中にプッシュするところを示す。図示していないが、この時点で、第2のCPU40によって第2の書き込みトランザクションが生成されれば第2のデータコンフォーマでそれを受け取ることができる。第2の書き込みトランザクションは、第1のデータコンフォーマ30に渡すことができる。第1のトランザクションは第1および第2のトランザクションメモリからポップされ、第1のトランザクションと第2のトランザクションがマッチするかどうかを判定するために、コンフォーマで第2の書き込みトランザクションと比較される。これらのトランザクションがマッチしない場合、書き込みは打ち切られ、エラーが記録される。これらのトランザクションがマッチする場合、データコンフォーマ30および50は、データを書き込むために書き込みトランザクションをI/Oインターフェース32および52に渡す。
【0018】
図3A〜7Fは、第2のトランザクションがブロックされた読み出しアクセスである代替シナリオを示す。ブロック読み出しアクセスは典型的には、そのアドレスが継続中の書き込みと重複する読み出しである。図3Aにおいて、第1のCPU20は、Arとして示す、トランザクション書き込みアクセスと同じアドレスへの読み出しアクセスである第2のトランザクションを生成する。図3Bに示すように、第2のトランザクションArは第1の処理レーン12の第1のデータコンフォーマ30で受け取ることができる。トランザクションメモリ28の中に同じアドレスに対する既存の書き込みがあることから、データコンフォーマ30は、図3Cに示すようにトランザクションメモリ28の中の第1のトランザクションAwの後ろにトランザクションArをプッシュする。データコンフォーマ30はトランザクションArを第2のデータコンフォーマ50に渡し、第2のデータコンフォーマ50は次いで、図3Dに示すようにトランザクションメモリ48の中の第1のトランザクションの後ろにArをプッシュすることができる。
【0019】
図4A〜4Dは、第3のトランザクションが生成され、バッファに記憶されるステップを示す。より具体的には、図4Aは、第2のCPU40が、第1のトランザクションまたはAwと同じアドレスへのトランザクション書き込みアクセスとして示す第3のトランザクションを生成するステップを示す。図4Bに示すように、第3のトランザクションAw’は第2のAP42から出力され、第2のデータコンフォーマ50によって受け取られる。図4Cに示すように、第2のデータコンフォーマ50は第2のトランザクションメモリ48に第3のトランザクションAw’を保存し、これを第1のデータコンフォーマ30に渡す。図4Dに示すように、第1のデータコンフォーマ30は第3のトランザクションAw’を第1のトランザクションメモリ28に保存する。
【0020】
図5A〜5Cは、第1のトランザクションと第3のトランザクションとを比較するステップを示す。より具体的には、図5Aは、第1のトランザクションAwおよび第3のトランザクションAw’が第1のトランザクションメモリ28および第2のトランザクションメモリ48から、比較が行われるデータコンフォーマ30および50へポップされるところを示す。これらのトランザクションがマッチしない場合、書き込みは終了し、エラーが記録される。図5Bに示すように、これらのトランザクションがマッチする場合、データコンフォーマ30および50は書き込みトランザクションをI/Oインターフェース32および52に渡し、継続中の読み出しトランザクションをフェッチする。通常の完全性書き込みのために、書き込みトランザクションはアドレス指定されたI/Oインターフェースに渡されるのみである。図5Cに示すように、I/Oインターフェースはトランザクション書き込みAを完了し、データコンフォーマ30および50はトランザクション読み出しAをI/Oインターフェース32および52に渡す。通常の完全性読み出しのために、トランザクション読み出しAはアドレス指定されたI/Oインターフェースに渡すのみである。
【0021】
図6A〜6Fは、読み出しデータが検証されるステップを示す。図6Aは、I/Oインターフェース32および52がデータAのトランザクション読み出しを完了したことを示す。図6Bおよび図6Cに示すように、I/Oインターフェース32および52は読み出しデーをデータコンフォーマ30および50に渡すことができる。図6Dに示すように、データコンフォーマ30および50は互いに読み出しデータを渡すことができ、図6Eに示す比較を実行することができる。図6Fに示すように、データコンフォーマ30は読み出しデータAを第1のCPU20に渡すことができ、データコンフォーマ50は後で読み出すために、トランザクションおよび読み出しデータAを第2のCPU40のトランザクションメモリ48の中に保存する。比較が失敗した場合、エラーが読み出しおよびトランザクションメモリ48の中に示され、エラーが記録される。
【0022】
図7A〜7Dは、Ar’として示す第4のトランザクション読み出しアクセスが生成され、比較されるステップを示す。より具体的には、第2のCPU40は、図7Aで第2のトランザクションと同じアドレスへのトランザクション読み出しアクセスとして示す第4のトランザクション読み出しアクセスAr’を生成する。図7Bに示すように、トランザクションAr’は第2のAP42から出力され、第2のデータコンフォーマ50によって受け取ることができる。データコンフォーマ50は、トランザクションメモリ48の中にAからの既存の検証された読み出しがあると判定することができるので、Aからの検証された読み出しをトランザクションメモリ48から取得する。図7Dに示すように、データコンフォーマ50は次いで読み出しデータAをCPU40に送る。以前にA=A’の比較が失敗している場合、読み出しにおいてエラーが示される。このように、データコンフォーマ30および50は、CPU20および40のI/Oアクセスを、トランザクションバッファを使用して突合せることができる。各書き込みアクセス要求は、CPU20とCPU40の両方がこのアクセス要求を受け取るまで、バッファまたはトランザクションメモリの中にとどまり、受け取った後I/Oアクセスが開始される。各読み出しアクセスは、最初に読み出しトランザクションを開始したCPUへ直ちに読み出しデータを戻し、他方のCPUが同じ読み出しトランザクションを開始するまで、検証されたデータをトランザクションメモリに記憶する。このようにして、速い方のCPUが読み出しを実行するとき、遅い方のCPUにとってそのデータをプリフェッチすることが不可欠である。
【0023】
図8A〜8Jは、ブロックされていない読み出しがある場合に、APが性能の犠牲を回避するために、継続中の書き込みおよびブロックされた読み出しトランザクションの前に読み出しを実行してもよい第3の実施形態による方法の代替部分を示す。さらに、この方法によって読み出しデータは、冗長プロセッサからの対応するトランザクションを待つのではなく、即座に利用可能となる。
【0024】
読み出しトランザクションが生じ、トランザクションメモリの中の重複する領域への既存の書き込みがない(読み出しが任意の未処理の書き込みによって影響を受けない)場合、読み出しトランザクションは図8Aに示すようにブロックされていない読み出しである。図8Bに示すように、ブロックされていない読み出しBrは、第1の処理レーン12の第1のデータコンフォーマ30で受け取ることができる。図8Cに示すように、データコンフォーマ30はトランザクションBrをI/Oインターフェース32に渡し、またトランザクションBrを第2のデータコンフォーマ50に渡すことができる。次いで、図8Dに示すように、データコンフォーマ50はトランザクションBrをI/Oインターフェース52に渡すことができる。
【0025】
図8Eは、I/Oインターフェース32および52が読み出しを実行するところを示しており、I/Oインターフェース32および52は、図8Fおよび8Gに示すように、読み出しデータをデータコンフォーマ30および50に渡すことができる。データコンフォーマ30および50は、図8Hに示すように互いに読み出しデータを渡すことができ、図8Iに示すように比較を実行することができる。図8Jに示すように、データコンフォーマ30は読み出しデータBを第1のCPU20に渡し、データコンフォーマ50は、後で読み出すためにトランザクションおよび読み出しデータBを第2のCPU40のトランザクションメモリに記憶する。読み出しがマッチしない場合、読み出しはエラーとしてフラグを付けられる。読み出しを供給しなかったデータコンフォーマは、それらの関連したプロセッサが読み出しを実行するまで検証された読み出しを保持する。
【0026】
区画があり、区画の切り替えの時にバッファの中に継続中のトランザクションがある場合、継続中のトランザクションはシステムがその区画に戻るまで、そのバッファの中に残る。この場合、一組のトランザクションメモリは区画毎に維持され、データコンフォーマは区画の切り替え毎に設定された新しいトランザクションメモリに切り替わる。トランザクションの同期は区画毎通常通り機能し続け、継続中のトランザクションは元の区画に切り替わった後で完了する。トランザクションはその区画に戻るまで遅延されていたにもかかわらず、他のCPUから見ると遅延は存在していない。システムは常に、少なくとも最も低速のCPUと同じ速さで実行され、より低速のCPUのために読み出しデータが常に準備されているために、わずかに速く実行され得る。トランザクションを次の区画に入れてトランザクションを遅延させるが望ましくない場合、区画タイマに基づいてトランザクションを終了するために十分な時間があることを確認するのはソフトウェアによる。
【0027】
上述の実施形態は、様々な利益を実現する。たとえば、上述の実施形態では、パフォーマンスに影響を与えることなく最新のプロセッサの同期が可能になる。技術的効果は、そのような同期および完全性検査がロックステップ操作を必要とせず、処理システムが少なくとも最も低速のプロセッサと同じ速さで動作することで異種のプロセッサを許容することである。プロセッサの同期は、ソフトウェアアプリケーションに対して透過的である。同期および完全性検査は、ハードウェア、ソフトウェアのどちらにも実装することができ、実装における柔軟性を可能にする。さらに上述の方法は、多数の冗長性を持つシステムにおいて、また多数のプロセッサ/スレッド用に使用することができる。異種のプロセッサを使用することによって、顧客により高レベルの安全性と価値を提供する。他にも利益として、処理モジュールに対する安全性分析を分離することができるため、システムの安全性分析を大幅に簡略化することができ、それによってシステムコストおよび開発期間を短縮することができる。
【0028】
本書では、最良の形態を含めて本発明を開示するために、また任意のデバイスまたはシステムを作成、使用し、組み込まれた任意の方法を実行することを含めて、当業者が誰でも本発明を実施することができるように例を使用している。本発明の特許性のある範囲は特許請求の範囲によって定義され、当業者に思い付く他の例をも含み得る。そのような他の例は、それらが特許請求の範囲の文言と異ならない構造的要素を持つ場合、またはそれらが特許請求の範囲の文言と実質的に異ならない同等の構造的要素を含む場合、特許請求の範囲内にあるものとする。
【符号の説明】
【0029】
10 処理システム
12 第1の処理レーン
14 第2の処理レーン
20 CPU
22 AP
24 メモリ
26 高速インターフェース
28 トランザクションメモリ
30 データコンフォーマ
32 I/Oインターフェース
34 共有メモリ
36 区画タイマ
38 区画切り替えDMA
40 CPU
42 AP
48 トランザクションメモリ
50 データコンフォーマ
52 I/Oインターフェース
【特許請求の範囲】
【請求項1】
少なくとも2つの冗長処理レーンを有する高完全性処理システムにおいて同期および完全性検査を提供する方法であって、各レーンがアプリケーションプロセッサ(AP)を有し、前記APが非ロックステップ構成において同じアプリケーションソフトウェアを実行し、アドレス可能な空間へのアクセスを必要とするトランザクションを出力する、方法において、
第1のAPから第1のトランザクションを出力するステップと、
前記第1のトランザクションを実行する前に、第1のバッファの中に前記第1のトランザクションを記憶するステップと、
第2のAPから第2のトランザクションを出力するステップと、
マッチするかどうかを判定するために前記第1のトランザクションと前記第2のトランザクションを比較するステップと、
前記第1のトランザクションと前記第2のトランザクションがマッチする場合、前記第1のトランザクションと前記第2のトランザクションの処理をそれらの対応するレーンで実行するステップとを備える方法。
【請求項2】
前記第1のトランザクションと前記第2のトランザクションがマッチしない場合、エラーをメモリに記録するステップをさらに備える請求項1記載の方法。
【請求項3】
前記第1のトランザクションと前記第2のトランザクションがマッチしない場合、前記第1のバッファをフラッシュするステップをさらに備える請求項2記載の方法。
【請求項4】
前記第2のトランザクションを前記第2のAPに関連した第2のバッファに記憶するステップをさらに備える請求項1記載の方法。
【請求項5】
前記第2のトランザクションを前記第2のバッファに記憶する前記ステップは、前記比較の前に生じる請求項4記載の方法。
【請求項6】
前記第1のトランザクションは前記第2のバッファに記憶される請求項4記載の方法。
【請求項7】
前記第1のトランザクションは、前記第2のトランザクションを出力する前記ステップの前に前記第2のバッファに記憶される請求項6記載の方法。
【請求項8】
前記第2のトランザクションは、前記第1のバッファに記憶される請求項6記載の方法。
【請求項9】
前記第2のトランザクションは、前記比較の前に前記第1のバッファに記憶される請求項8記載の方法。
【請求項10】
前記比較は、前記第1および第2のバッファから前記第1および第2のトランザクションをポップし、次いで前記ポップされた第1のトランザクションと第2のトランザクションを比較するステップを備える請求項8記載の方法。
【請求項11】
前記第1のトランザクションは書き込みアクセスを備え、前記第2のトランザクションは前記書き込みアクセスと同じアドレスへの読み出しアクセスを備え、前記トランザクションは、前記第2のバッファ中の前記第1のトランザクションの後ろに記憶される請求項10記載の方法。
【請求項12】
前記第2のAPから第3のトランザクションを出力するステップをさらに備え、前記第3のトランザクションが前記第1のトランザクションと同じアドレスへの書き込みアクセスを備える場合、前記第1および第3のトランザクションは前記第1のバッファからポップされ、前記比較は、前記第1のトランザクションと前記第2のトランザクションの代わりに前記第1のトランザクションと前記第3のトランザクションとの間で行われる請求項11記載の方法。
【請求項13】
前記第1のAPに対応する第1のデータコンフォーマで前記第1のトランザクションを受け取るステップをさらに備える請求項1記載の方法。
【請求項14】
前記第1のトランザクションをバッファに記憶するステップは、前記第1のトランザクションを前記第1のデータコンフォーマに対応する第1のトランザクションメモリに記憶することを備える請求項13記載の方法。
【請求項15】
前記第1のトランザクションを前記第2のAPのための第2のデータコンフォーマに渡し、前記第1のトランザクションを前記第2のデータコンフォーマに対応する第2のトランザクションメモリに記憶するステップをさらに備える請求項14記載の方法。
【請求項16】
前記第2のデータコンフォーマで前記第2のトランザクションを受け取るステップをさらに備える請求項15記載の方法。
【請求項17】
前記第2のトランザクションを前記第1のトランザクションメモリに渡すステップをさらに備える請求項16記載の方法。
【請求項18】
前記第1および第2のトランザクションメモリから前記第1および第2のトランザクションをポップし、次いで前記比較を実施するステップをさらに備える請求項17記載の方法。
【請求項19】
前記第1のトランザクションが書き込みアクセスを備え、前記第2のトランザクションが前記書き込みアクセスと同じアドレスへの読み出しアクセスを備える場合、前記第2のトランザクションが前記第1および第2のトランザクションメモリ中の前記第1のトランザクションの後ろに記憶される請求項17記載の方法。
【請求項20】
前記第2のAPから第3のトランザクションを出力するステップをさらに備え、前記第3のトランザクションが前記第1のトランザクションと同じアドレスへの書き込みアクセスを備える場合、前記第3のトランザクションは前記第2のデータコンフォーマによって受け取られ、前記第2のデータコンフォーマは前記第3のトランザクションを前記第2のトランザクションメモリに保存して、前記第3のトランザクションを前記第1のデータコンフォーマに渡し、前記第1のデータコンフォーマは前記第3のトランザクションを前記第1のトランザクションメモリに保存し、前記第1および第3のトランザクションは前記第1および第2のトランザクションからポップされ、前記比較は、前記第1のトランザクションと前記第2のトランザクションの代わりに、前記第1のトランザクションと前記第3のトランザクションとの間で行われる請求項19記載の方法。
【請求項21】
前記第1のAPに対応する複数のデータコンフォーマで前記第1のトランザクションを受け取るステップをさらに備える請求項13記載の方法。
【請求項22】
前記第2のAPに対応する複数のデータコンフォーマで前記第2のトランザクションを受け取るステップをさらに備え、前記第2のAPに対応する前記複数のデータコンフォーマが、前記第1のAPに対応する前記複数のデータコンフォーマと等しい請求項21記載の方法。
【請求項23】
前記第1のトランザクションと前記第2のトランザクションがマッチしない場合、エラーとしてフラグを付けるステップをさらに備える請求項1記載の方法。
【請求項1】
少なくとも2つの冗長処理レーンを有する高完全性処理システムにおいて同期および完全性検査を提供する方法であって、各レーンがアプリケーションプロセッサ(AP)を有し、前記APが非ロックステップ構成において同じアプリケーションソフトウェアを実行し、アドレス可能な空間へのアクセスを必要とするトランザクションを出力する、方法において、
第1のAPから第1のトランザクションを出力するステップと、
前記第1のトランザクションを実行する前に、第1のバッファの中に前記第1のトランザクションを記憶するステップと、
第2のAPから第2のトランザクションを出力するステップと、
マッチするかどうかを判定するために前記第1のトランザクションと前記第2のトランザクションを比較するステップと、
前記第1のトランザクションと前記第2のトランザクションがマッチする場合、前記第1のトランザクションと前記第2のトランザクションの処理をそれらの対応するレーンで実行するステップとを備える方法。
【請求項2】
前記第1のトランザクションと前記第2のトランザクションがマッチしない場合、エラーをメモリに記録するステップをさらに備える請求項1記載の方法。
【請求項3】
前記第1のトランザクションと前記第2のトランザクションがマッチしない場合、前記第1のバッファをフラッシュするステップをさらに備える請求項2記載の方法。
【請求項4】
前記第2のトランザクションを前記第2のAPに関連した第2のバッファに記憶するステップをさらに備える請求項1記載の方法。
【請求項5】
前記第2のトランザクションを前記第2のバッファに記憶する前記ステップは、前記比較の前に生じる請求項4記載の方法。
【請求項6】
前記第1のトランザクションは前記第2のバッファに記憶される請求項4記載の方法。
【請求項7】
前記第1のトランザクションは、前記第2のトランザクションを出力する前記ステップの前に前記第2のバッファに記憶される請求項6記載の方法。
【請求項8】
前記第2のトランザクションは、前記第1のバッファに記憶される請求項6記載の方法。
【請求項9】
前記第2のトランザクションは、前記比較の前に前記第1のバッファに記憶される請求項8記載の方法。
【請求項10】
前記比較は、前記第1および第2のバッファから前記第1および第2のトランザクションをポップし、次いで前記ポップされた第1のトランザクションと第2のトランザクションを比較するステップを備える請求項8記載の方法。
【請求項11】
前記第1のトランザクションは書き込みアクセスを備え、前記第2のトランザクションは前記書き込みアクセスと同じアドレスへの読み出しアクセスを備え、前記トランザクションは、前記第2のバッファ中の前記第1のトランザクションの後ろに記憶される請求項10記載の方法。
【請求項12】
前記第2のAPから第3のトランザクションを出力するステップをさらに備え、前記第3のトランザクションが前記第1のトランザクションと同じアドレスへの書き込みアクセスを備える場合、前記第1および第3のトランザクションは前記第1のバッファからポップされ、前記比較は、前記第1のトランザクションと前記第2のトランザクションの代わりに前記第1のトランザクションと前記第3のトランザクションとの間で行われる請求項11記載の方法。
【請求項13】
前記第1のAPに対応する第1のデータコンフォーマで前記第1のトランザクションを受け取るステップをさらに備える請求項1記載の方法。
【請求項14】
前記第1のトランザクションをバッファに記憶するステップは、前記第1のトランザクションを前記第1のデータコンフォーマに対応する第1のトランザクションメモリに記憶することを備える請求項13記載の方法。
【請求項15】
前記第1のトランザクションを前記第2のAPのための第2のデータコンフォーマに渡し、前記第1のトランザクションを前記第2のデータコンフォーマに対応する第2のトランザクションメモリに記憶するステップをさらに備える請求項14記載の方法。
【請求項16】
前記第2のデータコンフォーマで前記第2のトランザクションを受け取るステップをさらに備える請求項15記載の方法。
【請求項17】
前記第2のトランザクションを前記第1のトランザクションメモリに渡すステップをさらに備える請求項16記載の方法。
【請求項18】
前記第1および第2のトランザクションメモリから前記第1および第2のトランザクションをポップし、次いで前記比較を実施するステップをさらに備える請求項17記載の方法。
【請求項19】
前記第1のトランザクションが書き込みアクセスを備え、前記第2のトランザクションが前記書き込みアクセスと同じアドレスへの読み出しアクセスを備える場合、前記第2のトランザクションが前記第1および第2のトランザクションメモリ中の前記第1のトランザクションの後ろに記憶される請求項17記載の方法。
【請求項20】
前記第2のAPから第3のトランザクションを出力するステップをさらに備え、前記第3のトランザクションが前記第1のトランザクションと同じアドレスへの書き込みアクセスを備える場合、前記第3のトランザクションは前記第2のデータコンフォーマによって受け取られ、前記第2のデータコンフォーマは前記第3のトランザクションを前記第2のトランザクションメモリに保存して、前記第3のトランザクションを前記第1のデータコンフォーマに渡し、前記第1のデータコンフォーマは前記第3のトランザクションを前記第1のトランザクションメモリに保存し、前記第1および第3のトランザクションは前記第1および第2のトランザクションからポップされ、前記比較は、前記第1のトランザクションと前記第2のトランザクションの代わりに、前記第1のトランザクションと前記第3のトランザクションとの間で行われる請求項19記載の方法。
【請求項21】
前記第1のAPに対応する複数のデータコンフォーマで前記第1のトランザクションを受け取るステップをさらに備える請求項13記載の方法。
【請求項22】
前記第2のAPに対応する複数のデータコンフォーマで前記第2のトランザクションを受け取るステップをさらに備え、前記第2のAPに対応する前記複数のデータコンフォーマが、前記第1のAPに対応する前記複数のデータコンフォーマと等しい請求項21記載の方法。
【請求項23】
前記第1のトランザクションと前記第2のトランザクションがマッチしない場合、エラーとしてフラグを付けるステップをさらに備える請求項1記載の方法。
【図1】
【図2A】
【図2B】
【図2C】
【図2D】
【図3A】
【図3B】
【図3C】
【図3D】
【図4A】
【図4B】
【図4C】
【図4D】
【図5A】
【図5B】
【図5C】
【図6A】
【図6B】
【図6C】
【図6D】
【図6E】
【図6F】
【図7A】
【図7B】
【図7C】
【図7D】
【図8A】
【図8B】
【図8C】
【図8D】
【図8E】
【図8F】
【図8G】
【図8H】
【図8I】
【図8J】
【図2A】
【図2B】
【図2C】
【図2D】
【図3A】
【図3B】
【図3C】
【図3D】
【図4A】
【図4B】
【図4C】
【図4D】
【図5A】
【図5B】
【図5C】
【図6A】
【図6B】
【図6C】
【図6D】
【図6E】
【図6F】
【図7A】
【図7B】
【図7C】
【図7D】
【図8A】
【図8B】
【図8C】
【図8D】
【図8E】
【図8F】
【図8G】
【図8H】
【図8I】
【図8J】
【公開番号】特開2013−105491(P2013−105491A)
【公開日】平成25年5月30日(2013.5.30)
【国際特許分類】
【出願番号】特願2012−244960(P2012−244960)
【出願日】平成24年11月7日(2012.11.7)
【出願人】(506388923)ジーイー・アビエイション・システムズ・エルエルシー (46)
【Fターム(参考)】
【公開日】平成25年5月30日(2013.5.30)
【国際特許分類】
【出願日】平成24年11月7日(2012.11.7)
【出願人】(506388923)ジーイー・アビエイション・システムズ・エルエルシー (46)
【Fターム(参考)】
[ Back to top ]