(57)【要約】冗長なシステムに対しては、ロックステップ動作モードで動作する同じに構成されたプロセッサボードが多重に設けられる。ロックステップシステムを実現するための基本的な前提は、ボードに含まれるすべてのコンポーネント、すなわちＣＰＵ，チップセット、メインメモリなどの確定的な特性である。ここで確定的な特性とは、これらのコンポーネントにより、エラーがなければ、これらのコンポーネントが同じ時点に同じ刺激を受ける場合、同じ時点に同じ結果が得られるということである。さらに確定的な特性は、クロック同期化されたインタフェースを使用することを前提としている。非同期のインタフェースはシステムにおいて多くの場合、ある程度の時間的な不正確さを発生させ、これにより、このシステムのクロック同期された全体特性を保持することができない。しかしながらそれにもかかわらずロックステップ動作を実行できるようにするため、本発明では、同じ命令列を処理しかつ同期または非同期にクロック供給される同じまたは異なる冗長の処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化する方法が設けられ、ここでこれは公知のソフトウェアによる解決手段とは異なり、ハードウェアで実現される。本発明によれば、処理ユニット（ＰＲＯ０，ＰＲＯ１）の外部に向かって作用するトランザクションを使用して、上記の処理ユニット（ＰＲＯ０，ＰＲＯ１）に割り当てられた素子（ＥＱ０，ＥＱ１）により、これらの処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化する。ここでこの同期化は、すべての処理ユニットの命令実行が目下のトランザクションに到達するまで、割り当てられた素子により処理ユニットをそれぞれ遅延することによって行われる。
2006512634.tif 000002
【特許請求の範囲】
【請求項１】
同じ命令列を処理しかつ同期または非同期にクロック制御される、同じまたは相異なる冗長の処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化する方法において、
該処理ユニット（ＰＲＯ０，ＰＲＯ１）に割り当てられた素子（ＥＱ１，ＥＱ２）によって、該処理ユニット（ＰＲＯ０，ＰＲＯ１）の外部に向かって作用するトランザクションを使用して処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化し、
ここですべての処理ユニットの命令実行が目下のトランザクションに到達するまで、前記処理ユニットを前記の割り当てられた素子によってそれぞれ待ち状態に移行させることによって当該の同期化を行うことを特徴とする、
同期または非同期にクロック制御される処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化する方法。
【請求項２】
前記の素子（ＥＱ０，ＥＱ１）により、接続線路（Ｌ０，Ｌ１）を介して前記のトランザクションを特徴付けるパラメタを伝送して、処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化する、
請求項１に記載の方法。
【請求項３】
読み出しトランザクションをつぎのように実行する、すなわち、
読み出すべきデータが到来するまで、処理ユニットに割り当てられた前記素子によって当該処理ユニットを待ち状態に維持し、
また当該読み出しトランザクションの１つまたは複数のパラメタを、前記トランザクションターゲット（Ｉ／Ｏ０，Ｉ／Ｏ１，ＭＥＭ０，ＭＥＭ１，ＲＥＧ０，ＲＥＧ１，ＣＭＥＭ）に最も直接的に接続されている素子に送信し、
ここで当該のトランザクションターゲットに最も直接的に接続されている素子により、別の素子の１つまたは複数のパラメタならびにローカルに形成される１つまたは複数のパラメタを受信して比較し、
一致した場合には前記の読み出しトランザクションを実行し、読み出したデータをすべての素子に分配し、これに基づき、すべての素子により、上記の読み出したデータを割り当てられた処理ユニットに転送し、命令実行を継続させる、
請求項２に記載の方法。
【請求項４】
規則的または要求に応じてメインメモリ（ＭＥＭ０，ＭＥＭ１）からデータ領域を読み出してパラメタを比較することにより、データ比較を行ってデータの完全性をチェックし、
ここで当該の比較を選択した素子またはすべての素子によって行う、
請求項３に記載の方法。
【請求項５】
書き込みトランザクションをつぎのように実行する、すなわち、
書き込み過程が終了するまで処理ユニットに割り当てられた素子により、当該処理ユニットを待ち状態に維持し、
また当該書き込みトランザクションの１つまたは複数のパラメタを、トランザクションターゲット（Ｉ／Ｏ０，Ｉ／Ｏ１，ＭＥＭ０，ＭＥＭ１，ＲＥＧ０，ＲＥＧ１，ＣＭＥＭ）に最も直接的に接続されている素子に送信し、
ここで当該のトランザクションターゲットに最も直接的に接続されている素子により、別の素子の１つまたは複数のパラメタならびにローカルに形成される１つまたは複数のパラメタを受信して比較し、
一致した場合には書き込みトランザクションを実行し、書き込み過程を行ったことをすべての素子に知らせ、これに基づき、すべての素子により、割り当てられた処理ユニットの命令実行の継続させることによって実行する、
請求項２に記載の方法。
【請求項６】
外部イベントをつぎのように処理する、すなわち、
当該外部イベントを一時記憶し、
当該の記憶した外部イベントを処理ユニットの専用の動作モードにて呼び出して、処理ユニットの少なくとも１つずつの実行ユニットによって処理し、
ここで当該処理ユニットは、命令によってあらかじめ設定可能なまたは固定的にあらかじめ設定される条件を満たしながらこの動作モードに入り、
すべての処理ユニットが上記の専用の動作モードを終了してしまうまで、命令実行の継続を素子（ＥＱ０，ＥＱ１）によって遅延することによって処理する、
請求項２に記載の方法。
【請求項７】
前記の処理ユニットの比較器素子（Ｋ）により、カウンタ素子（ＣＩＣ）とレジスタ素子（ＭＩＲ）との一致が得られた場合に前記の専用の動作モードへの切り換えを行い、
ここでレジスタ素子（ＭＩＲ）の内容は、命令によってあらかじめ設定可能であり、またすべての処理ユニット（ＰＲＯ０，ＰＲＯ１）に対して同じであり、
また前記カウンタ素子（ＣＩＣ）は、前記の専用の動作モードに最後に切り換わって以来、前記実行ユニットによって実行された命令の数を含む、
請求項６に記載の方法。
【請求項８】
前記の処理ユニットに供給される外部イベントによってイベント処理ルーチンを起動し、
該イベント処理ルーチンをイベントベクトルの読み出しトランザクションによって開始し、
ここで当該の読み出しトランザクションをつぎのように実行する、すなわち、
読み出すべきデータが到来するまで、１処理ユニットに割り当てられる前記素子によって当該処理ユニットを待ち状態に維持し、
また読み出しトランザクションの１つまたは複数のパラメタを、トランザクションターゲット（Ｉ／Ｏ０，Ｉ／Ｏ１，ＭＥＭ０，ＭＥＭ１，ＲＥＧ０，ＲＥＧ１，ＣＭＥＭ）に最も直接的に接続されている素子に送信し、
ここで当該のトランザクションターゲットに最も直接的に接続されている素子により、別の素子の１つまたは複数のパラメタならびにローカルに形成される１つまたは複数のパラメタを受信して比較し、
一致した場合には読み出しトランザクションを実行し、読み出したデータをすべての素子に分配し、これに基づき、すべての素子が、前記の読み出したデータを、割り当てられた処理ユニットに転送し、命令実行を継続するようにする、
請求項６または７に記載の方法。
【請求項９】
前記のメモリから入力／出力素子（Ｉ／Ｏ０，Ｉ／Ｏ１）にデータ伝送するためにダイレクトメモリアクセスを行い、
ここで１処理ユニットによって生成される指示をレジスタに書き込むことによって入力／出力素子に渡すことにより、前記ダイレクトメモリアクセスを起動する、
請求項１または２に記載の方法。
【請求項１０】
入力／出力素子（Ｉ／Ｏ０，Ｉ／Ｏ１）からメモリへのデータの転送を行うためにダイレクトメモリアクセスを行い、ここで、
−  第１ステップにて前記入力／出力素子によって形成されるディスクリプタを、前記メモリに格納し、また前記処理ユニットによりポーリング方式で読み出し、
−  第２ステップにて１素子（ＥＱ０，ＥＱ１）のレジスタを処理ユニットによって読み出し、これにより、入力／出力素子によるメモリへの書き込みトランザクションがもはや許容されないようにし、
−  第３ステップにて最終的に入力／出力素子によって送信される書き込みトランザクションを素子（ＥＱ０，ＥＱ１）によってすべての処理ユニットのメモリに書き込み、
−  第４ステップにてダイレクトメモリアクセスの終了を示す値を有するメモリのメモリ箇所をすべての処理ユニットによって読み出し、
−  第５ステップにて前記レジスタを改めて読み出すか、または別のレジスタを読み出すないしはこれに書き込んで、Ｉ／Ｏユニットによるメインメモリへの書き込みアクセスを再度可能にすることによって前記ダイレクトメモリアクセスを行う、
請求項１または２に記載の方法。
【請求項１１】
入力／出力素子（Ｉ／Ｏ０，Ｉ／Ｏ１）とメモリとの間でデータを伝送するためにダイレクトメモリアクセスを行い、ここで
−  第１ステップにて１素子（ＥＱ０，ＥＱ１）のレジスタを処理ユニットにより読み出し、これにより、入力／出力素子によるメモリへの読み出しトランザクションはもはや許容されないようにし、
−  第２ステップにて前記処理ユニットによって形成されるディスクリプタを前記メモリに格納し、ここで該ディスクリプタは、１つまたは複数の入力／出力素子（Ｉ／Ｏ０，Ｉ／Ｏ１）によってポーリング方式で読み出し可能であり、
−  第３ステップにて前記レジスタを新たに読み出すか、別のレジスタを読み出すないしはこれに書き込んで、Ｉ／Ｏユニットによるメインメモリへの読み出しアクセスを再度可能にし、
−  第４ステップにてダイレクトメモリアクセスの開始を示す値を有するメモリのメモリ箇所を１つまたは複数の入力／出力素子（Ｉ／Ｏ０，Ｉ／Ｏ１）によって読み出すことによって前記のダイレクトメモリアクセスを行う、
請求項１または２に記載の方法。
【請求項１２】
前記のトランザクションターゲットに最も直接的に接続されている素子により、別の素子のパラメタと、ローカルに形成されるパラメタとが異なっていることが確認された場合、エラー処理を開始する、
請求項３または７に記載の方法。
【請求項１３】
前記エラー処理により、実行すべきトランザクションをストップさせ、
エラーを有するユニットの検出、その切り離しおよび／または同期を再形成するルーチンをスタートさせる、
請求項１２に記載の方法。
【請求項１４】
Ｎ個の処理ユニットが設けられている場合、前記エラー処理にてＮのうちのＮ−Ｍ（Ｍ＜Ｎ）の多数決判定を行い、
他とは異なる処理ユニットをイナクティブにする、
請求項１２に記載の方法。
【請求項１５】
個々の処理ユニットの故障識別をつぎのように行う、すなわち、
任意のトランザクションに対し、処理ユニットの素子において１つまたは複数のパラメタが最も早く利用可能になった時点からはじめて、到来しないパラメタまたはあらかじめ設定可能な時間が経過後にはじめて到来するパラメタを拒否することによって行ない、
ここで処理ユニットに対して、前記の到来しないパラメタまたはあらかじめ設定可能な時間の経過後にはじめて到来するパラメタによってエラー処理を開始する、
請求項２から１４までのいずれか１項に記載の方法。
【請求項１６】
前記の素子（ＥＱ０，ＥＱ１）により、以下のトランザクション、すなわち、
−  各処理ユニット（ＰＲＯ０，ＰＲＯ１）に割り当てられたローカルメモリ（ＭＥＭ０，ＭＥＭ１）に関する一時記憶できないメモリトランザクション、および／または
−  入力／出力素子（Ｉ／Ｏ０，Ｉ／Ｏ１）への入力／出力トランザクション、および／または
−  外部レジスタ（ＲＥＧ０，ＲＥＧ１）へのメモリマップド入力／出力トランザクション、および／または
−  処理ユニット（ＰＲＯ０，ＰＲＯ１）の共通メモリ（ＣＭＥＭ）に関する一時記憶できないメモリトランザクションを使用して、処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化する、
請求項１から１５までのいずれか１項に記載の方法。
【請求項１７】
前記の素子（ＥＱ０，ＥＱ１）により、接続線路（Ｌ０，Ｌ１）を介して、トランザクションの以下のパラメタ、すなわち、
−  入力／出力アドレス、および／または
−  メモリアドレス、および／または
−  転送すべきデータ、および／または
−  トランザクションの種類、および／または
−  前記の入力／出力アドレスおよび／またはメモリアドレスおよび／または転送すべきデータおよび／またはトランザクションの種類から形成されるシグネチャを伝送して前記の処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化する、
請求項１から１６までのいずれか１項に記載の方法。
【請求項１８】
冗長なデータ処理システムの同期または非同期にクロック制御される処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化する装置において、
−  同じ命令列を処理する少なくとも２つの処理ユニット（ＰＲＯ０，ＰＲＯ１）と、
−  データを記憶および／または交換するために前記処理ユニットにそれぞれ排他的に割り当てられる周辺装置（ＭＥＭ０，ＭＥＭ１）と、
−  データを記憶および／または交換するためにすべての処理ユニットによって共通に利用可能な周辺装置（Ｉ／Ｏ０，Ｉ／Ｏ１，ＲＥＧ０，ＲＥＧ１，ＣＭＥＭ）と、
−  上記の処理ユニットに割り当てられた素子（ＥＱ０，ＥＱ１）とを有しており、
ここで該素子（ＥＱ０，ＥＱ１）は、トランザクションを監視する手段と、すべての処理ユニットが才人のトランザクションに到達するまで前記の割り当てられた処理ユニットの待ち状態をトリガする手段と、これらのトランザクションのパラメタを別の素子に伝達するための手段（Ｌ０，Ｌ１）とを有することを特徴とする、
同期または非同期にクロック制御される処理ユニットを同期化する装置。
【請求項１９】
前記の各処理ユニットは、
−  少なくとも１つの実行ユニット（ＥＵ）と、
−  専用の動作モードに最後に切り換わってから、前記実行ユニットによって実行された命令をカウントするための少なくとも１つのカウンタ素子（ＣＩＣ）と、
−  内容が命令によってあらかじめ設定できるまたは固定的にあらかじめ設定される少なくとも１つのレジスタ素子（ＭＩＲ）と、
−  前記のカウンタ素子（ＣＩＣ）とレジスタ素子（ＭＩＲ）との一致に応答して前記実行ユニット（ＥＵ）を専用の動作モードに切り換えるための少なくとも１つの比較器素子（Ｋ）とを有しており、
ここで前記の専用の動作モードでは、一時記憶され、プロセッサ素子に供給すべきであり、またプロセッサ素子に影響を与える外部イベントがこのプロセッサ素子によって呼び出される、
請求項１８に記載の装置。
【請求項２０】
前記素子（ＥＱ０，ＥＱ１）は、以下のトランザクション、すなわち、
−  各処理ユニット（ＰＲＯ０，ＰＲＯ１）に割り当てられたローカルメモリ（ＭＥＭ０，ＭＥＭ１）のうちの１つに関する一時記憶できないメモリトランザクション、および／または
−  入力／出力素子（Ｉ／Ｏ０，Ｉ／Ｏ１）への入力／出力トランザクション、および／または
−  外部レジスタ（ＲＥＧ０，ＲＥＧ１）へのメモリマップド入／出力トランザクション、および／または
−  処理ユニット（ＰＲＯ０，ＰＲＯ１）の共通メモリ（ＣＭＥＭ）に関する一時記憶できないメモリトランザクションに基づいて処理ユニットを同期化する手段を有する、
請求項１８または１９に記載の装置。
【請求項２１】
前記素子は、トランザクションを表す以下のパラメタ、すなわち
−  入力／出力アドレスおよび／または
−  メモリアドレスおよび／または
−  転送すべきデータおよび／または
−  トランザクションの種類および／または
−  上記の入力／出力アドレスおよび／またはメモリアドレスおよび／または転送すべきデータおよび／またはトランザクションの種類から形成されるシグネチャを形成する手段を有する、
請求項１８から２０までのいずれか１項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
通信システム、データセンサおよび別の利便性の高いシステムにおいて多くの場合、所要の計算能力を得るために数百までものいわゆるプロセッサボードが使用されている。このようなプロセッサボードは、通例、プロセッサないしはＣＰＵ（Central Procesing Unit）、チップセット、メインメモリおよび周辺素子から構成される。
【０００２】
年当たりに典型的なプロセッサボードのハードウェア欠陥が発生する確率のパーセンテージは１桁である。１つのシステムにまとめられるプロセッサボードの数は極めて多いため、１年という時間では任意のハードウェアコンポーネントが故障する確率は極めて高くなる。ここでこのような個別の故障は、適切な予防処置を講じない場合には、システム全体の故障を発生させることがある。
【０００３】
例えば通信システムにおいて、データセンタにおいてもますます、高いシステム利用可能度が要求されるようになっている。これは例えばパーセントで示されるか、または年当たりの最大許容故障時間で示される。通例の要求は、例えば、９９．９９９％を上回る利用可能度ないしは１年当たりに高々数分の利用不可能度である。通例、ハードウェアが故障した場合のプロセッサボートの交換およびサービスの再形成には数十分から数時間の範囲の時間が必要であるため、ハードウェアが故障した場合に対し、システムレベルで相応の予防処置を講じて、上記のシステム利用可能度についての要求を満たせるようにしなければならないのである。
【０００４】
システム利用可能度に対するこのように高い要求を維持するための公知の解決手段は、冗長なシステムコンポーネントを設けることである。公知の方法は、２つの主要なグループ、すなわちソフトウェアベースの方法と、ハードウェアベースの方法にわけられる。
【０００５】
ソフトウェアベースの方法では通例、ミドルウェアが使用される。しかしながらソフトウェアベースの解決手段はフレキシブルでないことが判明している。それはこのようなシステムでは上記の固有の冗長方式用に開発された（アプリケーション）ソフトウェアしか使用できないからである。このことにより、使用可能な（アプリケーション）ソフトウェアの幅が大きく制限される。さらにソフトウェア冗長原理用のアプリケーションソフトウェアの開発は実践的に極めてコストがかかり、ここでこの開発には付加的に複雑なテスト方法が必要なのである。
【０００６】
ハードウェアベースの方法の基本思想は、冗長性をハードウェアレベルでカプセル化して、これがソフトウェアにトランスペアレントであるようにすることに基づいている。ハードウェアそれ自体によって管理される冗長性の重要な利点は、アプリケーションソフトウェアがこの冗長性原理によって損なわれず、ひいてはほとんどの場合に任意のソフトウェアを使用できることである。
【０００７】
冗長性がソフトウェアにトランスペアレントであるハードウェアエラートレランスシステムに対して実践的に多く見受けられる原理は、いわゆるロックステップ（Lockstep）原理である。ロックステップとは、同じに構成されたハードウェア、例えば、２つのボードが同様にクロック同期で作動されることである。ハードウェアメカニズムによって保証されるのは、この冗長のハードウェアが所定の時点で同一の入力刺激を受け、これによって同じ結果が得られなければならないということである。冗長なコンポーネントの結果は比較され、互いに異なる場合にはエラーが確認され、適切な処置が行われる（操作員への警告、安全のための部分的または完全な遮断、システムリスタート）。
【０００８】
ロックステップシステムを実現するための基本的な前提は、ボードに含まれる全コンポーネント、すなわちＣＰＵ，チップセット、メインメモリその他のクロック的に確定した特性（taktweise deterministische Verhalten）である。ここでクロック的に確定した特性とは、エラーがない場合、これらのコンポーネントが同じクロック時点に同じ刺激を受けると、これらのコンポーネントにより、同じクロック時点に同じ結果が得られるということである。さらにクロック的に確定した特性は、クロック同期されたインタフェースの使用を前提とする。非同期のインタフェースは、多くの場合、システムにおいてある程度の時間の不正確さを発生させ、これにより、このシステムのクロック同期されたすべての特性を維持することはできなくなってしまうのである。
【０００９】
しかしながら性能を高める際にはまさにチップセットおよびＣＰＵに対し、非同期のインタフェースは技術的に有利なのであり、これにより、ロックステップ方式によるクロック同期された動作は不可能になるのである。さらに今日のＣＰＵでは、クロック同期された動作を不可能にするメカニズムがますます使用されている。これは例えば、外部からは見えない内部的な補正手段、例えば、キャッシュメモリへのアクセス時の命令処理のわずかな遅延に結び付きうる内部的に補正可能なエラーの補正、または命令の推測的な実行などである。別の例は、ＣＰＵ内部のクロックフリーの実行ユニットが将来的にはますます実現されるようになることである。これにより、速度および損失出力の点から多くの利点が得られるが、ＣＰＵのクロック同期ないしは確定的な動作は阻止される。
【００１０】
米国特許明細書第5,226,152号から冗長なプロセッサに対する機能的なロックステップ装置が公知である。ここではすべてのプロセッサは、共通の周辺装置へのプロセッサのアクセスおよび冗長なプロセッサの機能的なロックステップ動作を可能にするロジックに接続されている。ここでこのロジックはプロセッサのウェイト信号を利用している。
【００１１】
しかしながら冒頭に述べたプロセッサボードに目をやると、ただ１つの中央ロジックしか有しないこの装置により、多くの欠点が発生する。この欠点は、プロセッサボートの他に所定数のプロセッサボード毎に、周辺装置アクセスの同期化を制御するロジックボードが設けられていることによるものである。しかしながらこの場合にこのロジックボードそのものも監視しなければならず、これによって複雑な監視メカニズムに結び付いてしまっているのである。
【００１２】
言い換えると、米国特許明細書第5,226,152号による装置は、複数のプロセッサを有する単一プリント基板システムに対して機能的なロックステップを設けるのには有利であると思われるのであるが、冒頭に述べた形式の複数の同じプロセッサボートを有するシステムにこの装置は不適切なのである。
【００１３】
したがって本発明の課題は、ロックステップ方式の利点が維持されかつ技術的な発展が考慮される方法を提供することである。
【００１４】
この課題は、請求項１の特徴部分に記載された同期または非同期にクロック制御される処理ユニットを同期化する方法によって、また請求項１３の特徴部分に記載された同期または非同期にクロック制御される処理ユニットを同期化する回路装置によって解決される。
【００１５】
有利な実施形態は従属請求項に記載されている。
【００１６】
本発明により、同じ命令列を処理しかつ同期または非同期にクロック制御される、同じまたは相異なる冗長の処理ユニットＰＲＯ０，ＰＲＯ１を同期化する方法が得られ、これによれば、処理ユニットＰＲＯ０，ＰＲＯ１の外部に作用するトランザクションが、これらの処理ユニットＰＲＯ０，ＰＲＯ１に割り当てられた素子ＥＱ０，ＥＱ１によって使用されて処理ユニットＰＲＯ０，ＰＲＯ１が同期化される。ここでこれは上記の処理ユニットが上記の割り当てられた素子によってそれぞれ遅延され、これによって調整されることによって行われる。ここでこの調整はすべての処理ユニットの命令実行が目下のトランザクションに到達するまで行われる。
【００１７】
ここでは以下のトランザクションを使用して同期化することができる。すなわち、
−  各処理ユニットＰＲ０，ＰＲ１に割り当てられたローカルメモリＭＥＭ０，ＭＥＭ１に関する一時記憶できないメモリトランザクション、および／または
−  入力／出力素子Ｉ／Ｏ０，Ｉ／Ｏ１への入力／出力トランザクション、および／または
−  外部レジスタＲＥＧ０，ＲＥＧ１へのメモリマップド入力／出力トランザクション、および／または
−  処理ユニットＰＲ０，ＰＲ１の共通メモリＣＭＥＭに関する一時記憶できないメモリトランザクションを使用して同期化することができる。
【００１８】
ここで読み出しトランザクションはつぎのように実行することができる。すなわち読み出すべきデータが到来するまで、処理ユニットに割り当てられた上記素子によってこの処理ユニットを待ち状態に維持し、またこの読み出しトランザクションの１つまたは複数のパラメタを、上記のトランザクションターゲットＩ／Ｏ０，Ｉ／Ｏ１，ＭＥＭ０，ＭＥＭ１，ＲＥＧ０，ＲＥＧ１，ＣＭＥＭに最も直接的に接続されている素子に送信することによって実行することできるのである。ここでこのトランザクションターゲットに最も直接的に接続されているこの素子により、別の素子の１つまたは複数のパラメタならびにローカルに形成される１つまたは複数のパラメタを受信して比較し、一致した場合には上記の読み出しトランザクションを実行し、読み出したデータをすべての素子に分配する。これに基づき、すべての素子より、上記の読み出したデータを割り当てられた処理ユニットに転送し、また命令実行を継続できるようにする。
【００１９】
書き込みトランザクションはつぎのように実行することができる。すなわち、書き込み過程が終了するまで処理ユニットに割り当てられた素子により、この処理ユニットを待ち状態に維持することができ、またこの書き込みトランザクションの１つまたは複数のパラメタを、トランザクションターゲットＩ／Ｏ０，Ｉ／Ｏ１，ＭＥＭ０，ＭＥＭ１，ＲＥＧ０，ＲＥＧ１，ＣＭＥＭに最も直接的に接続されている素子に送信することによって実行することできるのである。ここでこのトランザクションターゲットに最も直接的に接続されている素子により、別の素子の１つまたは複数のパラメタならびにローカルに形成される１つまたは複数のパラメタを受信して比較し、一致した場合には書き込みトランザクションを実行し、書き込み過程を行ったことをすべての素子に知らせる。これに基づき、すべての素子により、割り当てられた処理ユニットの命令実行を継続できるようにする。
【００２０】
有利にも外部イベント、例えば割り込みを、本発明の同期化方法と関連してトランザクションに基づき処理することができる。ここでこれができるのは、外部イベントの処理が、メモリ箇所またはレジスタの値、例えば割り込みベクトルの読み出しによって開始され、さらにすべての処理ユニットが、命令実行の同じ箇所において上記の外部イベントを提示されていることが保証される場合である。イベント処理を開始する読み出しトランザクションは、上記のように例えば、割り込みアクノリッジサイクルによって実行される。
【００２１】
外部イベントを同期化するための有利な方法は、欧州特許明細書第02020602号に記載されており、ここでは外部イベントが一時記憶される。この記憶した外部イベントは、処理ユニットの専用の動作モードで呼び出されて、処理ユニットの少なくとも１つずつの実行ユニットによって処理される。ここで処理ユニットは、命令によってあらかじめ設定可能なまたは固定的にあらかじめ設定される条件を満たしながらこの動作モードに入り、すべての処理ユニットが上記の専用の動作モードを終了してしまうまで、命令実行の継続を素子ＥＱ０，ＥＱ１によって遅延する。
【００２２】
上記の専用の動作モードへの切り換えは、例えば、処理ユニットの比較器素子Ｋによって、カウンタ素子ＣＩＣとレジスタ素子ＭＩＲとの一致が得られた場合に行われ、ここでレジスタ素子ＭＩＲの内容は命令によってあらかじめ設定可能であり、またすべての処理ユニットＰＲＯ０，ＰＲＯ１に対して同じである。またカウンタ素子ＣＩＣは、この専用の動作モードに最後に切り換わって以来、実行ユニットによって実行された命令の数を含む。
【００２３】
エラー処理は、トランザクションターゲットに最も直接的に接続されている素子が、別の素子のパラメタと、ローカルに形成される１つまたは複数のパラメタとが異なることを確認した場合に開始される。ここでこのエラー処理は、実行すべきトランザクションをストップし、診断、エラーの切り離しおよび場合によって同期の再形成のためのルーチンをスタートさせることができる。Ｎ個（例えばＮ＝３）処理ユニットが設けられている場合、Ｎのうちの（Ｎ−１）の多数決または一般的にＮのうちの（Ｎ−Ｍ）の多数決判定を行われ、他とは異なる１つまたは複数の処理ユニットをイナクティブにすることができる。
【００２４】
さらに個々の処理ユニットの故障識別を行うことできる。これは、任意のトランザクションに対し、処理ユニットの素子において１つまたは複数のパラメタが最も早く利用可能になった時点からはじめて、到来しないパラメタまたはあらかじめ設定可能な時間が経過後にはじめて到来するパラメタが拒否されることによって行われ、ここで処理ユニットに対して、上記の到来しないパラメタまたはあらかじめ設定可能な時間の経過後にはじめて到来するパラメタにより、エラー処理が開始される。
【００２５】
さらに本発明は冗長なデータ処理システムの同期または非同期にクロック制御される処理ユニットＰＲＯ０，ＰＲＯ１を同期化する装置に関しており、ここでこの装置は以下を有する。すなわち、
−  同じ命令列を処理する少なくとも２つの処理ユニットＰＲＯ０，ＰＲＯ１と、
−  データを記憶および／または交換するために上記の処理ユニットにそれぞれ排他的に割り当てられる周辺装置ＭＥＭ０，ＭＥＭ１と、
−  データを記憶および／または交換するためにすべての処理ユニットによって共通に利用可能な周辺装置Ｉ／Ｏ０，Ｉ／Ｏ１，ＲＥＧ０，ＲＥＧ１，ＣＭＥＭと、
−  上記の処理ユニットに割り当てられた素子ＥＱ０，ＥＱ１を有しており、ここでこれらの素子ＥＱ０，ＥＱ１は、トランザクションを監視する手段と、すべての処理ユニットが目下のトランザクションに到達するまで上記の割り当てられた処理ユニットを停止する手段と、これらのトランザクションのパラメタを別の素子に伝達するための手段Ｌ０，Ｌ１とを有する。
【００２６】
ここで素子ＥＱ０，ＥＱ１は、例えば以下のトランザクションに基づいて処理ユニットを同期化する手段を有する。すなわち、
−  各処理ユニットＰＲＯ０，ＰＲＯ１に割り当てられたローカルメモリＭＥＭ０，ＭＥＭ１のうちの１つに関する一時記憶できないメモリトランザクション、および／または
−  入力／出力素子Ｉ／Ｏ０，Ｉ／Ｏ１への入力／出力トランザクション、および／または
−  外部レジスタＲＥＧ０，ＲＥＧ１へのメモリマップド入／出力トランザクション、および／または
−  処理ユニットＰＲＯ０，ＰＲＯ１の共通メモリＣＭＥＭに関する一時記憶できないメモリトランザクションに基づいて、処理ユニットを同期化する手段を有するのである。
【００２７】
ここで上記の素子は有利には、トランザクションを表す以下のパラメタを形成する手段を有する。すなわち、
−  入力／出力アドレス、および／または
−  メモリアドレス、および／または
−  転送すべきデータ、および／または
−  トランザクションの種類、および／または
−  上記の入力／出力アドレスおよび／またはメモリアドレスおよび／または転送すべきデータおよび／またはトランザクションの種類から形成されるシグネチャを形成する手段を有する。
【００２８】
外部イベント、例えば割り込みを処理するために上記の処理ユニットは有利には以下を有する。すなわち、
−  少なくとも１つの実行ユニットＥＵと、
−  専用の動作モードに最後に切り換わってから、この実行ユニットによって実行された命令をカウントするための少なくとも１つのカウンタ素子ＣＩＣと、
−  内容が命令によってあらかじめ設定できるまたは固定的にあらかじめ設定される少なくとも１つのレジスタ素子ＭＩＲと、
−  上記のカウンタ素子ＣＩＣとレジスタ素子ＭＩＲとの一致に応答して上記の実行ユニットＥＵを専用の動作モードに切り換えるための少なくとも１つの比較器素子Ｋとを有しており、ここでこの専用の動作モードにおいて、一時記憶され、プロセッサ素子に供給すべきであり、またプロセッサ素子に影響を与える外部イベントがこのプロセッサ素子によって呼び出される。
【００２９】
ここで一時記憶される外部イベントの呼び出しは有利にはソフトウェア、ファームウェア、マイクロコードまたはハードウェアによって行われる。
【００３０】
本発明の実質的な利点は、ハードウェアエラートレーラントなプラットホームにおける任意の新しいソフトウェアまたは既存のソフトウェアを使用できることであり、このプラットホームでは本発明をサポートする処理ユニットを使用することができ、その際にＣＰＵのクロック同期的に確定的な動作方法が要求されることがない。
【００３１】
別の利点は、
−  例えば、ＣＰＵ，ノースブリッジおよびローカルメモリから構成される互いに冗長な処理ユニットを固定の位相で結合して動作させる必要はない。
−  ＣＰＵは同じである必要はない。これにより、殊に、冗長なシステム内で相異なるＣＰＵステッピングを同時に使用することができ、また異なるクロック周波数で動作させることができる。
−  ＣＰＵは、命令の推測的な実行に関して互いに異なる動作をすることができる。
−  例えばデータを改ざんするα粒子が発生したことによる補正に起因して、同じＣＰＵにおいてＣＰＵ内部の実行時間が異なっても、同期化イベントがわずかに異なる時点に達するだけである。
【００３２】
クロック同期的に確定的な動作を保証する際の上記の問題は、将来のＣＰＵの時間的な曖昧さに起因して、命令実行を時間的に正確に相関付けることができなくなってしまう。ＣＰＵは、通例のアプリケーションにおいて外部イベント、例えば周辺装置によって生成される割り込み、または１装置によってメインメモリに書き込まれたデータに応動しなければならないため、保証しなければならないのは、ＣＰＵが命令実行の同じ箇所においてこれらのイベントについて知らされることである。なぜならばそうでなければこのイベントの評価により、冗長な複数のＣＰＵが別個のプログラムの流れに進んでしまい得るからである。
【００３３】
本発明により、プログラムの流れに関連する外部イベント、例えば、割り込みまたは外部の装置によって形成されるデータは、冗長のＣＰＵに命令実行の同じ箇所において提示され、これによってロックステップ動作方式をエミュレートすることができる。
【００３４】
さらに命令実行の同じ箇所において提示される、冗長なＣＰＵの出力イベントが比較され、ひいては結果が確認される。同期化およびプロセッサ周辺装置からのデータの分配をソフトウェアベースの手法によって実行する公知の方法とは異なり、本発明ではこれをハードウェアによって実現する。ここでの決定的な利点は、ソフトウェアベースの方法と比べて性能に与える影響が何倍も少ないことである。さらに上記の方法は、アプリケーションおよびオペレーションシステムソフトウェアに対してトランスペアレントである。すなわち、既存のアプリケーションおよびオペレーションシステムソフトウェアを変更なしに引き続き使用できるのである。
【００３５】
以下では本発明の実施例を４つの図に関連して詳しく説明する。
【００３６】
図１は、割り当てられた周辺装置を有する２つの処理ユニットおよびトランザクションの同期化を概略的に示しており、
図２は、周辺装置のトランザクションに基づき、２つの素子によって同期化される２つの処理ユニットを概略的に示しており、
図３は、有利な処理ユニットの概略構造をさらに詳細に示しており、
図４は、別個にクロック制御される２つの処理ユニットの命令処理および本発明によるそれらの同期化の時間線図を示している。
【００３７】
図１には２つの処理ユニットＰＲＯ０，ＰＲＯ１が概略的に示されており、外部に作用するそれらのトランザクションが同期化される。例示的には以下のコンポーネントに対するトランザクション、すなわちローカルメモリＭＥＭ０，ＭＥＭ１，レジスタＲＥＧ０，ＲＥＧ１および入力／出力素子ないしはＩ／Ｏ素子Ｉ／Ｏ０，Ｉ／Ｏ１に対するトランザクションが示されている。ここでは第１の処理ユニットＰＲＯ０には第１のコンポーネントＭＥＭ０，ＲＥＧ０およびＩ／Ｏ０が割り当てられており、これに対して第２の処理ユニットＰＲＯ１には第２のコンポーネントＭＥＭ１，ＲＥＧ１およびＩ／Ｏ１が割り当てられている。相応の破線の接続線によって示したようにこれらの処理ユニットはそれぞれの別の処理ユニットのＲＥＧｎおよびＩ／Ｏｍにアクセスできるのに対して、ローカルメモリＭＥＭｋには対応する処理ユニットＰＲＯｋだけがアクセスできる。
【００３８】
さらに例示的に上記の処理ユニットが共通にアクセスするコンポーネントが示されており、ここでこれは共通メモリＣＭＥＭであり、上記のレジスタおよびＩ／Ｏ素子とは異なり、この共通メモリはどの処理ユニットにも割り当てられていない。
【００３９】
図２にも２つの処理ユニットと、例示的に図１のレジスタならびにＩ／Ｏ素子とが示されている。これらは従来のように相応のインタフェースまたはインフェース素子を介して直接接続されているのではなく、イーコライザ素子ＥＱ０，ＥＱ１によって接続されている。処理ユニットＰＲＯ０のすべてのアクセスは、イーコライザＥＱ０によって受信され、処理され、相応に転送される。同様に処理ユニットＰＲＯ０にはすべての外部データおよびイベントが提示される。これに類似して処理ユニットＰＲＯ１には等価のイーコライザ素子ＥＱ１が割り当てられている。
【００４０】
イーコライザＥＱ０，ＥＱ１は情報を交換し、またこのために有利には高速で直接的な接続線路Ｌ０，Ｌ１を有する。この接続線路は、図示のように、論理的および／または物理的に第１の接続線路Ｌ０：ＥＱ０−＞ＥＱ１および第２の接続線路Ｌ１：ＥＱ１−＞ＥＱ０に分けることができる。
【００４１】
図２において破線で示したように本発明では、それぞれ処理ユニットＰＲＯ，イーコライザＥＱおよび周辺装置ＲＥＧ，Ｉ／Ｏから構成される別のユニットを接続して、相応に多重の冗長性を有するシステムを構築することができる。このようなユニットをさらに１つ付け加えることによって３重の冗長性を有するシステムが得られ、これだけですでにエラー処理を２〜３重の判定によって行うことができる。
【００４２】
図３には本発明の詳しい実現が、従来のプロセッサ／周辺装置アーキテクチャに関連して示されている。ここでこの実現の特徴は、メインプロセッサＣＰＵがノースブリッジインタフェースユニットＮＢを介してサウスブリッジインタフェースユニットＳＢに結合されている点であり、ここでノースブリッジは、例えば、ローカルメモリＭＥＭ０とのインタフェースも有するのに対して、サウスブリッジは、例えば割り込みコントローラおよび別のＩ／Ｏ機能を含んでいる。
【００４３】
図３に例示的に示したように処理ユニットＰＲＯ０は、ＣＰＵ，ノースブリッジおよびローカルメモリから構成することができる。このＣＰＵは殊に有利な実施形態において、簡単のためにキャッシュメモリおよび実行ユニットＥＵだけを示した従来のユニットの他に、レジスタＭＴＲ，カウンタＣＩＣおよび比較器ないしはコンパレータＫを含むことができる。これらは、割り込みおよび例外処理などの外部イベントを、命令実行の所定の箇所においてのみ実行ユニットに転送し、またその他では命令列の処理の中断のない流れを保証するために使用される。
【００４４】
本発明のイーコライザ素子ＥＱ０は有利にはノースブリッジとサウスブリッジとの間に配置される。それはノースブリッジとサウスブリッジとの間のインタフェースには必要なすべての信号線路があり、これにより、処理ユニットＰＲＯ０と隣の処理ユニット（図示せず）との同期化が達成されるまで、イーコライザは命令列の処理を停止することができるからである。イーコライザＥＱ０と、隣の処理ユニットのイーコライザとを接続するための接続線路Ｌ０，Ｌ１は単に示されているだけである。
【００４５】
図３に示した論理的なグルーピングは、必ずしも個々のコンポーネントの実際の物理的なグルーピングに相応していない。例えば、ノースブリッジはＣＰＵに組み込むことができ、またはイーコライザはノースブリッジまたはサウスブリッジに組み込むことができ、またはノースブリッジと一緒にＣＰＵに組み込むことができる。
【００４６】
図４は、２つの処理ユニットの命令実行の同期化を時間流れ図でグラフィック表示している。図４に示した例では同じ命令列を２つのＣＰＵ，ＣＰＵ０およびＣＰＵ１によって処理しており、ここでＣＰＵ０はＣＰＵ１よりも短いクロックレートで作動されている。これにより、ＣＰＵ１は、ＣＰＵ０よりも早い時点で各命令に到達する。ここで前提としているのは、最初に、すなわちmov r1, r2を処理する際に、全レジスタと、ＣＰＵに割り当てられたメモリとが同期化されていたことである。
【００４７】
同期していないこの命令処理は、例えばＩ／Ｏ素子または共通のメモリへのアクセスによってＣＰＵが外部の世界と対話していない限りは許容される。しかしながら図４の例におけるＩ／Ｏレジスタ0x87654321の読み出しのようなトランザクションに対して、これらのトランザクションは２つのＣＰＵに対して同時にまた殊に同じ結果で行われなければならない。これは以下に示すようにイーコライザによって達成される。同時にこれらのイーコライザはこのようなトランザクション点において、これらのＣＰＵの同期化が再形成されるようにする。
【００４８】
ロックステップ動作方式に依拠して、本発明の方法を以下ではエミュレートされたロックステップと称する。エミュレートされたロックステップの実現は、少なくとも２つの処理ユニットＰＲＯ０およびＰＲＯ１で行われ、これらは、ＣＰＵ，メモリならびにメモリ駆動制御部（標準チップセットのノースブリッジ）から構成することができる。これらの処理ユニットは同じに構成されているが、しかしながら異なるＣＰＵまたは１ＣＰＵの異なるステッピングを有することが可能であり、また同じ状態で、すなわち同じメモリ内容およびＣＰＵレジスタ内容でスタートされる。共通または同期化されたクロックを介する結合は本発明では不要である。
【００４９】
ＣＰＵにより、マシン命令実行の枠内でメモリサイクル、例えば書き込みサイクル、読み出しサイクルおよび場合によってはＩ／Ｏサイクルが開始される。場合によってはＣＰＵ間のデータ交換を伴ってこれらのＣＰＵを同期化するため、以下の条件を満たすサイクルはすべて有利である。すなわち、
（ａ）  これらのサイクルは命令確定的（instruktionsdeterministisch）である。すなわち、これらのサイクルは、すべてのＣＰＵによって、同じプログラム箇所において同じ順番で同じに定められており、また
（ｂ）  これらのサイクルはＣＰＵにより、つねに外部に向かって定められている。すなわち、これらのサイクルは、プロセッサの外側からつねに見ることができ、また読み取ることができる。例えば、プロセッサ内部のキャッシュサイクルは不適切である。
【００５０】
例えばつぎのメモリサイクルはこれらの境界条件を満たしている。
−  自分のメモリＭＥＭ０，ＭＥＭ１に一時記憶できない、ないしはキャッシュできないメモリサイクル、
−  Ｉ／Ｏサイクル、
−  例えば外部レジスタＲＥＧ０，ＲＥＧ１へのメモリマップ形ないしはメモリマップドＩ／Ｏサイクル、
−  共通の外部メモリＣＭＥＭに一時記憶できずまたキャッシュできないメモリサイクル
は上記の境界条件を満たしている。
【００５１】
種々異なる外部レジスタ、例えば、タイマないしは刻時装置、カウンタないしは計数器、および／または割り込みロジック、ならびに外部世界へのＩ／Ｏユニット、例えばEthernetコントローラまたはSCSIコントローラは、通常、ＣＰＵと通信を行う。ＣＰＵとＩ／Ｏユニットとの間にはＣＰＵ毎に１つずつのイーコライザが非同期または同期のインタフェースを介して接続されており、このイーコライザによって、上記のエミュレートされたロックステップ動作を実現する。イーコライザＥＱ０とＥＱ１との間では非同期または同期のポイントツーポイント接続線路Ｌ０，Ｌ１が必要であり、これによってデータ、アドレスまたはシグネチャを交換することができる。非同期のインタフェースにおいては伝送エラーの場合、伝送の繰り返しを行うことができる。
【００５２】
Ｉ／Ｏユニットまたはレジスタへの読み出しまたは書き込みアクセスは、メモリマップ形ないしはメモリマップドＩ／ＯまたはダイレクトＩ／Ｏで行われる。すべてＩ／Ｏユニットは見え、別個のメモリアドレスを介してアクセスすることができる。これに対してレジスタはマスタ−マスタまたはマスタ−スレーブ構成において切り換えることができる。マスタ−マスタ構成では、それぞれ割り当てられた処理ユニットのレジスタは、読み出しまたは書き込みでアクセスされる。このような動作方式の前提は、レジスタが処理ユニットのアクセス時に同じ状態を有しており、これによってユニットの並列的な動作が保証されることである。
【００５３】
マスタ−スレーブ構成ではすべてのユニットによってマスタユニットのレジスタは読み出されるだけであり、またマスタユニットのレジスタはマスタユニットだけによって書き込まれる。例えば、現在の時刻を読み出すため、すべてのユニットにより、マスタユニットのＴｏＤ（Time-of-Day-Counter）が使用され、これによってＴｏＤカウンタを読み出す際にてすべてのユニットに正確に同じ時刻が供給されることを保証する。すなわち、１処理ユニットに割り当てられたレジスタだけがアクセスされるのである。この場合、例えば別のユニットで発生する割り込みのようなイベントは、マスタユニットに通知しなければならない。これらのレジスタへの書き込みアクセスは、すべてのユニットにおいて行われるか、ないしはメインメモリのシャドーレジスタに格納して、エラー時に正しいデータで、新しいマスタユニットによって処理できるようにしなければならない。これはソフトウェアまたはハードウェアによって制御することができる。
【００５４】
以下では個々のトランザクションおよびこのトランザクションに基づいて行われる同期化過程について詳しく説明する。
【００５５】
読み出しトランザクション
処理ユニットＰＲＯのＣＰＵの読み出し命令は、Ｉ／Ｏユニットからデータを読み出す。このような読み出し命令は図４に示されている。ここでこれは、例えば命令load r1, [0x87654321]である。この命令はすべてのＣＰＵにより、命令実行の同じ箇所で生成され、所定のＩ／Ｏユニット、例えばＩ／Ｏ０またはマスタレジスタに宛てに行われる。しかしながら読み出し命令の時点は、ＣＰＵで異なっていてよい。図４ではＣＰＵ０は上記の読み出し命令にＣＰＵ１よりも遅く到達する。
【００５６】
ＣＰＵによって形成されるＩ／Ｏアドレスないしはメモリアドレスおよびトランザクションの属性、例えば、メモリリードまたはＩ／Ｏリードまたはデータ長、またはアドレスおよび属性から形成されるシグネチャは、ＣＰＵに直接接続されているイーコライザによりって、別のすべてのイーコライザに送信される。アドレッシングされたＩ／Ｏリソースに接続されているイーコライザが、読み出し要求がすべてのＣＰＵによって生成されたことを識別してはじめて、実際の読み出しアクセスが実行される。読み出されたデータは、マスタ−スレーブ構成ではすべてのイーコライザに分配され、これらのイーコライザはその後、それぞれ接続されたＣＰＵの読み出し命令を完了する。ここでこれはこれらのイーコライザによって、ＣＰＵにデータを転送されることによって行われる。データは、別の時点にＣＰＵに到着することができるが、これによって別のプログラムの実行が妨げられてはならない。
【００５７】
イーコライザにおいてシグネチャないしはＩ／Ｏアドレスが異なる場合、読み出しアクセスは実行されずにエラー割り込み、例えばＣＰＵに対してノンマスカラブル割り込みＮＭＩエラー割り込みが生成されるか、または、例えば３つのＣＰＵが設けられている構成の場合では３つのうちの２つの多数決が行われる。エラーを有するユニットは切り離されて診断される。
【００５８】
個々のユニットの故障を識別するため、読み出しアクセスを時間的に監視する。すなわち、すべてのＣＰＵのリード命令は、あらかじめ設定可能な所定の時間内に生成されなければならないのである。これらの命令の間の時間を上回った場合、タイムアウトが生成され、故障したユニットは切り離されて診断される。
【００５９】
読み出しアクセスは、その発生の順序で処理される。追い越しは行わない。
【００６０】
書き込みトランザクション
書き込み命令により、Ｉ／Ｏユニットまたはメモリユニットにデータが書き込まれる。この命令はすべてのＣＰＵによって命令実行の同じ箇所で生成され、例えば、所定のＩ／Ｏユニット、例えばＩ／Ｏ０に宛てに行われる。しかしながら書き込み命令の時点はＣＰＵで異なっていてよい。
【００６１】
例えば、ＣＰＵによって形成されるＩ／Ｏアドレス、データおよび属性またはここから計算されるシグネチャは、直接に接続されたイーコライザから別のすべてのイーコライザに送信される。書き込み要求がすべてのＣＰＵによって生成され、このイーコライザによって確認されてはじめて実際の書き込みアクセスが実行される。
【００６２】
あるイーコライザにおいてＩ／Ｏアドレス、データおよび／または属性ないしはシグネチャが異なる場合、書き込みアクセスは実行されずにエラー割り込み、例えばＣＰＵに対するノンマスカラブル割り込みＮＭＩが生成されるか、または例えば３つのＣＰＵが設けられている構成の場合では３つのうちの２つの多数決が行われる。エラーを有するユニットは切り離されて診断される。
【００６３】
個々のユニットの故障を識別するため、書き込みアクセスを時間的に監視する。すなわち、すべてのＣＰＵのライト命令は、あらかじめ設定可能な所定の時間内に生成されなければならないのである。これらの命令の間の時間を上回った場合、タイムアウトが生成され、故障したユニットは切り離されて診断される。
【００６４】
書き込みアクセスは、その発生の順序で処理される。追い越しは行わない。しかしながら複数の書き込みサイクルをＣＰＵによって形成すること（いわゆるポステッドライト Posted Write）は可能である。このような多重の書き込みトランザクションを処理するため、相応に設計されたファーストインファーストアウトメモリ（図示せず）を設けることができる。
【００６５】
割り込み
プログラムの流れに影響を及ぼす外部イベントはＣＰＵに直接供給されるのではなく、有利に構成されたハードウェアによってまずバッファリングされる。ここでこのハードウェアは、ＣＰＵの外部にある素子のコンポーネントまたはＣＰＵそのもののコンポーネントでもよい。このＣＰＵは、このＣＰＵが完全に実行したインストラクションまたは機械命令をカウントするカウンタＣＩＣ（Completed Instruction Counter）を含む。このＣＰＵはさらにレジスタＭＩＲ（Maximum Instruction Register）を含んでおり、これは、エミュレートされたロックステップ動作をサポートするソフトウェア（ＥＬＳＯ）によって書き込まれる。
【００６６】
さらにこのＣＰＵはコンパレータまたは比較器Ｋを有しており、この比較器は、実行した命令の数、すなわちカウンタＣＩＣと、レジスタＭＩＲとを比較して、等しい場合には例えば割り込み要求を生成する。ここでこの割り込み要求は、レジスタＭＩＲによってあらかじめ設定された命令の数にしたがって命令の実行を中断し、このＣＰＵを別の動作モードに切り換える。この動作モードでは、例えば有利なマイクロコードが実行されるか、または割り込みサービスルーチンに分岐するか、またはハードウェア信号によりこの同期化点に到達したことが示される。つぎにこの動作モードにおいて冗長なＣＰＵに外部イベントがつぎのように提示される。すなわち、この動作モードを離れた後、すべてのＣＰＵがこのイベントを同等に評価することでき、ひいては結果的に同じ命令を実行することができるように提示されるのである。
【００６７】
例えば、このＣＰＵは、レジスタＭＩＲによってあらかじめ設定した機械命令の数に達した後、割り込みサービスルーチンに分岐し、ここでは上記のハードウェアによりＣＰＵから遠ざけられている割り込み信号の状態が問い合わされる。ここでこれは、場合によってはこの問い合わせをわずかに遅い時点に行う冗長なＣＰＵが同じ情報を受け取るように行われる。この問い合わせは、例えば割り込みレジスタへの読み出しアクセスである。この読み出しアクセスは上記のように行われ、これによって保証されるのは、すべてのＣＰＵが同じ割り込みベクトルを読み出し、同じアクションを開始することである。
【００６８】
専用の動作モードを離れる前にカウンタＣＩＣはリセットされる。引き続き、ジャンプしてつぎのようなプログラム箇所に戻る。すなわち、レジスタＭＩＲによってあらかじめ設定されたカウンタ値ＣＩＣに到達したことにより、中断が発生したプログラム箇所に戻るのである。その後、このＣＰＵは、レジスタＭＩＲによってあらかじめ設定した数の機械命令を再び実行し、カウンタＣＩＣがレジスタ値ＭＩＲに達した場合にモードを切り換え、これによって外部イベントの受け取りを可能にする。
【００６９】
例えば、上記のエミュレートされたロックステップ動作をサポートするソフトウェアＥＬＳＯは、レジスタＭＩＲを値10,000に設定することができる。５ＧＨｚのクロック周波数で動作し、また平均して１クロック（１クロックの長さ：１／２００ｐｓ）当たり１機械命令を実行するＣＰＵは、命令の実行において２μｓ後に中断され、外部イベントとの同期化が可能になる。
【００７０】
ダイレクトメモリアクセスＤＭＡ
ＤＭＡ（Direct Memory Access）トランザクションでは、Ｉ／Ｏユニットは、メインメモリに直接、読み出しおよび書き込みアクセスすることができる。Ｉ／ＯユニットおよびＣＰＵによるアクセスの時間的な関係は指示されない。ＤＭＡ転送中にＣＰＵが同じメモリ領域にアクセスすると、処理ユニットはそれらの擬似同期的（pseudosynchron）な動作を失ってしまうことになりかねない。それはこれらの処理ユニットのメインメモリは、アクセスの時点でもはや必ずしも同じではないからである。
【００７１】
したがってＤＭＡ転送に対して保証しなければならないのは、すべてのＣＰＵにおいて命令実行の同じ箇所に到着する通知をＣＰＵに送信することである。以下ではこのために複数の解決手段を示す。
−  例えば、ＤＭＡ転送の終了後、Ｉ／Ｏユニットが割り込みを生成することによって上記の通知を行うことができる。ここでこの割り込みは、転送が終了しまた転送されたメモリ領域が再び開放されたことをＣＰＵに知らせる。この割り込みの結果として、割り込み状態がソースにより、すなわちＩ／Ｏユニットにより読み出される。２つのユニットのＩ／Ｏバス、例えばＰＣＩバスを介するこの読み出しにより、強制的にトランザクションがシリアライズされて、これらのＩ／Ｏユニットによって生成されるデータは、すべての処理ユニットのメインメモリにおいて順序が保証されて配置される。
【００７２】
−  別の実施形態では、処理ユニットのＣＰＵによって生成される指示をＩ／Ｏユニットに渡す際にＣＰＵにより、レジスタへの書き込みが行われ、これによってＤＭＡ転送が起動される。択一的にはＣＰＵによっても、またＩ／Ｏユニットによっても同時に利用することのできるスクリプトまたはリストを、Ｉ／Ｏユニットにおけるローカルメモリとして配置することができる。この場合に発生し得るＣＰＵによるアクセスは、メモリマップドリードまたはライト命令と同様に行われ、すべてのＣＰＵが同じデータで動作することが保証される。
【００７３】
逆に１つまたは複数のＩ／Ｏユニットによって生成される、ＣＰＵに対する指示のディスクリプタが、処理ユニットＰＲＯのメインメモリにあるべきであり、またＣＰＵによってポーリング方式で読み出される場合、これらのＣＰＵにより、いわゆるＩ／Ｏロックアウトレジスタが読み出される。したがってイーコライザにより、少なくともＩ／Ｏユニットの書き込みトランザクションは処理ユニットＰＲＯのローカルメインメモリにはもはや送信されなくなり、また最終的にＩ／Ｏユニットによって送信される書き込みトランザクションは、イーコライザにより、すべての処理ユニットのローカルメモリに書き込まれる。これはしばしば「フラッシュ 洗い流す（to flush）」と称される。これにより、Ｉ／Ｏユニットによって生成される書き込みトランザクションに関して、すべての処理ユニットのメインメモリにおいて内容が同じであることが保証される。引き続きメインメモリのメモリ位置がすべてのＣＰＵによって読み出され、これらの値は、例えば、Ｉ／Ｏ指示の終了を示す。その後、Ｉ／Ｏロックアウトレジスタが新たに読み出されるかまたは書き込まれるか、またはＩ／Ｏ開放レジスタ（free register）が読み出されるかまたは書き込まれて、Ｉ／Ｏユニットによるメインメモリへの書き込みアクセスが再び可能にされる。
【００７４】
−  別の実施形態では、１つまたは複数のＣＰＵによって生成される、Ｉ／Ｏユニットに対する指示のディスクリプタがＰＲＯのメインメモリにあるべきであり、またここからポーリング方式で読み出される場合、つぎの方法を適用することができる。すなわち、ＣＰＵにより、いわゆるＩ／Ｏロックアウトレジスタを読み出すのである。これにしたがい、イーコライザにより、少なくとも、Ｉ／Ｏユニットの読み出しトランザクションが処理ユニットのメインメモリに送信されなくなる。つぎにすべてのＣＰＵのメインメモリにおけるメモリ位置は、Ｉ／Ｏ指示に対するトリガないしは起動側を表す値で書き込まれる。その後、Ｉ／Ｏロックアウトレジスタは新たに読み出されるか、または書き込まれるか、またはＩ／Ｏ解放レジスタが読み出されるか、または書き込まれて、Ｉ／Ｏユニットによるメインメモリへの読み出しアクセスが再び可能にされる。
【００７５】
データ比較
Ｉ／Ｏユニットによってメインメモリから読み出されるすべてのデータは、すべてのイーコライザにより、接続された処理ユニットのメインメモリから全体でまたはシグネチャとして読み出され、要求側のＩ／Ｏユニットに接続されているイーコライザに送信され、このイーコライザによって比較される。択一的には別のイーコライザによって同様に比較を行うことができる。同じ場合、データはＩ／Ｏユニットに転送される。違いが識別される場合、場合によっては、例えば３つのうちの２つの多数決が行われ、エラーを有するユニットは切り離されて診断される。
【００７６】
処理ユニットのＣＰＵによって生成されるすべてのデータは全体でまたはシグネチャとして、ターゲットＩ／Ｏユニットに接続されているイーコライザに送信され、このイーコライザによって比較される。択一的には別のユニットによって同様に比較を行うことができる。同じ場合、データはＩ／Ｏユニットに転送される。違いが発生した場合、場合によっては、例えば３つのうちの２つの多数決が行われ、エラーを有するユニットは切り離されて診断される。
【００７７】
例えば、読み出しコマンド、アドレスおよび属性によって特徴付けられ、処理ユニットのＣＰＵによって生成されるすべての読み出し要求は、全体でまたはシグネチャとして、ソースに接続されたイーコライザに送信され、またこのイーコライザによって比較される。択一的には別のユニットによって同様に比較を行うこともできる。同じ場合、読み出しトランザクションが実行され、読み出されたデータはすべてのイーコライザに送信される。違いが発生した場合、場合によっては、例えば３つのうちの２つの多数決が行われ、エラーを有するユニットは切り離されて診断される。
【００７８】
エミュレートされたロックステップでは、ローカルメインメモリＭＥＭについてのＣＰＵの読み出しおよび書き込みトランザクションは比較されない。それは、例えば、ＣＰＵの相異なる推測的なアクセスまたは相異なるキャッシュ方式に起因して、これらが全く相違することがあるからである。相異なる処理ユニットＰＲＯのメモリ領域の内容が等しいことをチェックするため、例えばルーティニングソフトウェア（Routining-Software）によるチェックをつぎのような時点に開始しなければならない。すなわちエラーのない状態でメモリ内容には矛盾がなく、またチェックの持続時間中に矛盾がない状態を保ったままであることを保証できる時点に開始しなければならないのである。メモリチェックそれ自体はソフトウェアによって行うことができる。すなわち、ソフトウェア／ＣＰＵによって例えばメモリ領域を読み出し、チェックサムを形成し、別の処理ユニットから求めたチェックサムと比較するのである。しかしながらメモリチェックはハードウェアによって行うこともでき、これは例えばイーコライザに配置されている装置によって、接続された処理ユニットのメモリを読み出し、チェックサムを形成して互いに比較するのである。
【００７９】
共有メモリを有するマルチプロセッサアーキテクチャ
上記のエミュレートされたロックステップ動作は、１共通メモリ（shared memory）ＣＭＥＭへの複数の処理ユニットのメモリアクセスを同期化して、上記のようなデータ比較を行うのにも有利である。ここで前提とされるのは、これらのトランザクションが、冒頭に述べた境界条件、すなわち、例えばキャッシュできないメモリトトランザクションを満たすことである。
【００８０】
これにより、１実施形態において可能になるのは、マルチプロセッサ構成を定義することであり、ここでこれは（ローカルメモリを有する）複数のプロセッサユニットからなり、これらのプロセッサはすべて共通メモリＣＭＥＭにアクセスすることができる。この際に各プロセッサユニットは、冗長性の理由からまたエラー識別のために２倍になっている。すなわち１プロセッサユニットは、同じ２つの処理ユニットＰＲ０（図示せず）からなり、ここでこれらは上に説明したようにすべてのタスクを並列に実行し、また例えば、共通のメモリへのアクセスの際に同期化され、その際にデータ比較を行うのである。
【図面の簡単な説明】
【００８１】
【図１】割り当てられた周辺装置を有する２つの処理ユニットおよびトランザクションの同期化の概略図である。
【図２】周辺装置のトランザクションに基づき、２つの素子によって同期化される２つの処理ユニットの概略図である。
【図３】有利な処理ユニットの概略構造をさらに詳細に示す図である。
【図４】別個にクロック制御される２つの処理ユニットの命令処理および本発明によるそれらの同期化を示す時間線図である。
【図１】
2006512634.tif 000003
【図２】
2006512634.tif 000004
【図３】
2006512634.tif 000005
【図４】
2006512634.tif 000006
【手続補正書】
【提出日】平成16年12月16日(2004.12.16)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
言い換えると、米国特許明細書第5,226,152号による装置は、複数のプロセッサを有する単一プリント基板システムに対して機能的なロックステップを設けるのには有利であると思われるのであるが、冒頭に述べた形式の複数の同じプロセッサボートを有するシステムにこの装置は不適切なのである。
さらに米国特許明細書第5,353,436号から冗長なプロセッサに対する機能的なロックステップ装置が公知であり、ここでは各プロセッサに同期ロジック回路と、プロセッサイベントを計数するためのカウンタ素子と、比較回路とが割り当てられており、これらによって、プロセッサが同期化され、冗長なプロセッサの機能的なロックステップ動作が可能になる。ここで上記のロジック回路も同様にプロセッサのウェイト信号を利用している。
上記の比較回路は互いに結合されている。割り込みが発生した際には比較器回路は、ローカルのイベントカウンタの値と、この装置の別のイベントカウンタの値とをそれぞれ比較し、ローカルの同期ロジック回路に、ローカルのイベントカウンタ値と、この装置の別のイベントカウンタとの関係をそれぞれシグナリングする。
言い換えると、同期ロジック回路の間で、個々のプロセッサの目下のプログラム処理状態を特徴付けるパラメタが交換されるのである。しかしながらここでは、同期化をトリガするプロセッサトランザクションが個々のプロセッサ間で等しいことをチェックすることはできない。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
したがって本発明の課題は、機能的なロックステップ方式を可能にし、また同時に冗長なプロセッサの同期化に利用されるプロセッサトランザクションが等しいことをチェックしかつ妥当性を検証することのできる方法および装置を提供することである。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
この課題は、請求項１の特徴部分に記載された同期または非同期にクロック制御される処理ユニットを同期化する方法によって、また請求項１７の特徴部分に記載された同期または非同期にクロック制御される処理ユニットを同期化する回路装置によって解決される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
本発明により、同じ命令列を処理しかつ同期または非同期にクロック制御される、同じまたは相異なる冗長の処理ユニットＰＲＯ０，ＰＲＯ１を同期化する方法が得られ、これによれば、処理ユニットＰＲＯ０，ＰＲＯ１の外部に作用するトランザクションが、これらの処理ユニットＰＲＯ０，ＰＲＯ１に割り当てられた素子ＥＱ０，ＥＱ１によって使用されて処理ユニットＰＲＯ０，ＰＲＯ１が同期化される。ここでこれは上記の処理ユニットが上記の割り当てられた素子によってそれぞれ遅延され、これによって調整されることによって行われる。ここでこの調整はすべての処理ユニットの命令実行が目下のトランザクションに到達するまで行われる。ここでは素子ＥＱ０，ＥＱ１により、トランザクションを特徴付けるパラメタが接続線路Ｌ０，Ｌ１を介して伝送されて処理ユニットＰＲＯ０，ＰＲＯ１が同期化される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００２５
【補正方法】変更
【補正の内容】
【００２５】
さらに本発明は冗長なデータ処理システムの同期または非同期にクロック制御される処理ユニットＰＲＯ０，ＰＲＯ１を同期化する装置に関しており、ここでこの装置は以下を有する。すなわち、
−  同じ命令列を処理する少なくとも２つの処理ユニットＰＲＯ０，ＰＲＯ１と、
−  データを記憶および／または交換するために上記の処理ユニットにそれぞれ排他的に割り当てられる周辺装置ＭＥＭ０，ＭＥＭ１と、
−  データを記憶および／または交換するためにすべての処理ユニットによって共通に利用可能な周辺装置Ｉ／Ｏ０，Ｉ／Ｏ１，ＲＥＧ０，ＲＥＧ１，ＣＭＥＭと、
−  上記の処理ユニットに割り当てられた素子ＥＱ０，ＥＱ１を有しており、ここでこれらの素子ＥＱ０，ＥＱ１は、トランザクションを監視する手段と、すべての処理ユニットが目下のトランザクションに到達するまで上記の割り当てられた処理ユニットを停止する手段と、これらのトランザクションを特徴付けるパラメタを別の素子に伝達するための手段Ｌ０，Ｌ１とを有する。
【手続補正６】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
同じ命令列を処理しかつ同期または非同期にクロック制御される、同じまたは相異なる冗長の処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化する方法であって、
該処理ユニット（ＰＲＯ０，ＰＲＯ１）に割り当てられた素子（ＥＱ１，ＥＱ２）によって、該処理ユニット（ＰＲＯ０，ＰＲＯ１）の外部に向かって作用するトランザクションを使用して処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化し、
ここですべての処理ユニットの命令実行が目下のトランザクションに到達するまで、前記処理ユニットを前記の割り当てられた素子によってそれぞれ待ち状態に移行させることによって当該の同期化を行う同期化方法において、
前記の素子（ＥＱ０，ＥＱ１）により、接続線路（Ｌ０，Ｌ１）を介して前記のトランザクションを特徴付けるパラメタを伝送して処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化することを特徴とする、
同期または非同期にクロック制御される処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化する方法。
【請求項２】
読み出しトランザクションをつぎのように実行する、すなわち、
読み出すべきデータが到来するまで、処理ユニットに割り当てられた前記素子によって当該処理ユニットを待ち状態に維持し、
また当該読み出しトランザクションの１つまたは複数のパラメタを、前記トランザクションターゲット（Ｉ／Ｏ０，Ｉ／Ｏ１，ＭＥＭ０，ＭＥＭ１，ＲＥＧ０，ＲＥＧ１，ＣＭＥＭ）に最も直接的に接続されている素子に送信し、
ここで当該のトランザクションターゲットに最も直接的に接続されている素子により、別の素子の１つまたは複数のパラメタならびにローカルに形成される１つまたは複数のパラメタを受信して比較し、
一致した場合には前記の読み出しトランザクションを実行し、読み出したデータをすべての素子に分配し、これに基づき、すべての素子により、上記の読み出したデータを割り当てられた処理ユニットに転送し、命令実行を継続させる、
請求項１に記載の方法。
【請求項３】
規則的または要求に応じてメインメモリ（ＭＥＭ０，ＭＥＭ１）からデータ領域を読み出してパラメタを比較することにより、データ比較を行ってデータの完全性をチェックし、
ここで当該の比較を選択した素子またはすべての素子によって行う、
請求項２に記載の方法。
【請求項４】
書き込みトランザクションをつぎのように実行する、すなわち、
書き込み過程が終了するまで処理ユニットに割り当てられた素子により、当該処理ユニットを待ち状態に維持し、
また当該書き込みトランザクションの１つまたは複数のパラメタを、トランザクションターゲット（Ｉ／Ｏ０，Ｉ／Ｏ１，ＭＥＭ０，ＭＥＭ１，ＲＥＧ０，ＲＥＧ１，ＣＭＥＭ）に最も直接的に接続されている素子に送信し、
ここで当該のトランザクションターゲットに最も直接的に接続されている素子により、別の素子の１つまたは複数のパラメタならびにローカルに形成される１つまたは複数のパラメタを受信して比較し、
一致した場合には書き込みトランザクションを実行し、書き込み過程を行ったことをすべての素子に知らせ、これに基づき、すべての素子により、割り当てられた処理ユニットの命令実行の継続させることによって実行する、
請求項１に記載の方法。
【請求項５】
外部イベントをつぎのように処理する、すなわち、
当該外部イベントを一時記憶し、
当該の記憶した外部イベントを処理ユニットの専用の動作モードにて呼び出して、処理ユニットの少なくとも１つずつの実行ユニットによって処理し、
ここで当該処理ユニットは、命令によってあらかじめ設定可能なまたは固定的にあらかじめ設定される条件を満たしながらこの動作モードに入り、
すべての処理ユニットが上記の専用の動作モードを終了してしまうまで、命令実行の継続を素子（ＥＱ０，ＥＱ１）によって遅延することによって処理する、
請求項１に記載の方法。
【請求項６】
前記の処理ユニットの比較器素子（Ｋ）により、カウンタ素子（ＣＩＣ）とレジスタ素子（ＭＩＲ）との一致が得られた場合に前記の専用の動作モードへの切り換えを行い、
ここでレジスタ素子（ＭＩＲ）の内容は、命令によってあらかじめ設定可能であり、またすべての処理ユニット（ＰＲＯ０，ＰＲＯ１）に対して同じであり、
また前記カウンタ素子（ＣＩＣ）は、前記の専用の動作モードに最後に切り換わって以来、前記実行ユニットによって実行された命令の数を含む、
請求項５に記載の方法。
【請求項７】
前記の処理ユニットに供給される外部イベントによってイベント処理ルーチンを起動し、
該イベント処理ルーチンをイベントベクトルの読み出しトランザクションによって開始し、
ここで当該の読み出しトランザクションをつぎのように実行する、すなわち、
読み出すべきデータが到来するまで、１処理ユニットに割り当てられる前記素子によって当該処理ユニットを待ち状態に維持し、
また読み出しトランザクションの１つまたは複数のパラメタを、トランザクションターゲット（Ｉ／Ｏ０，Ｉ／Ｏ１，ＭＥＭ０，ＭＥＭ１，ＲＥＧ０，ＲＥＧ１，ＣＭＥＭ）に最も直接的に接続されている素子に送信し、
ここで当該のトランザクションターゲットに最も直接的に接続されている素子により、別の素子の１つまたは複数のパラメタならびにローカルに形成される１つまたは複数のパラメタを受信して比較し、
一致した場合には読み出しトランザクションを実行し、読み出したデータをすべての素子に分配し、これに基づき、すべての素子が、前記の読み出したデータを、割り当てられた処理ユニットに転送し、命令実行を継続するようにする、
請求項５または６に記載の方法。
【請求項８】
前記のメモリから入力／出力素子（Ｉ／Ｏ０，Ｉ／Ｏ１）にデータ伝送するためにダイレクトメモリアクセスを行い、
ここで１処理ユニットによって生成される指示をレジスタに書き込むことによって入力／出力素子に渡すことにより、前記ダイレクトメモリアクセスを起動する、
請求項１または２に記載の方法。
【請求項９】
入力／出力素子（Ｉ／Ｏ０，Ｉ／Ｏ１）からメモリへのデータの転送を行うためにダイレクトメモリアクセスを行い、ここで、
−  第１ステップにて前記入力／出力素子によって形成されるディスクリプタを、前記メモリに格納し、また前記処理ユニットによりポーリング方式で読み出し、
−  第２ステップにて１素子（ＥＱ０，ＥＱ１）のレジスタを処理ユニットによって読み出し、これにより、入力／出力素子によるメモリへの書き込みトランザクションがもはや許容されないようにし、
−  第３ステップにて最終的に入力／出力素子によって送信される書き込みトランザクションを素子（ＥＱ０，ＥＱ１）によってすべての処理ユニットのメモリに書き込み、
−  第４ステップにてダイレクトメモリアクセスの終了を示す値を有するメモリのメモリ箇所をすべての処理ユニットによって読み出し、
−  第５ステップにて前記レジスタを改めて読み出すか、または別のレジスタを読み出すないしはこれに書き込んで、Ｉ／Ｏユニットによるメインメモリへの書き込みアクセスを再度可能にすることによって前記ダイレクトメモリアクセスを行う、
請求項１に記載の方法。
【請求項１０】
入力／出力素子（Ｉ／Ｏ０，Ｉ／Ｏ１）とメモリとの間でデータを伝送するためにダイレクトメモリアクセスを行い、ここで
−  第１ステップにて１素子（ＥＱ０，ＥＱ１）のレジスタを処理ユニットにより読み出し、これにより、入力／出力素子によるメモリへの読み出しトランザクションはもはや許容されないようにし、
−  第２ステップにて前記処理ユニットによって形成されるディスクリプタを前記メモリに格納し、ここで該ディスクリプタは、１つまたは複数の入力／出力素子（Ｉ／Ｏ０，Ｉ／Ｏ１）によってポーリング方式で読み出し可能であり、
−  第３ステップにて前記レジスタを新たに読み出すか、別のレジスタを読み出すないしはこれに書き込んで、Ｉ／Ｏユニットによるメインメモリへの読み出しアクセスを再度可能にし、
−  第４ステップにてダイレクトメモリアクセスの開始を示す値を有するメモリのメモリ箇所を１つまたは複数の入力／出力素子（Ｉ／Ｏ０，Ｉ／Ｏ１）によって読み出すことによって前記のダイレクトメモリアクセスを行う、
請求項１に記載の方法。
【請求項１１】
前記のトランザクションターゲットに最も直接的に接続されている素子により、別の素子のパラメタと、ローカルに形成されるパラメタとが異なっていることが確認された場合、エラー処理を開始する、
請求項２から６までのいずれか１項に記載の方法。
【請求項１２】
前記エラー処理により、実行すべきトランザクションをストップさせ、
エラーを有するユニットの検出、その切り離しおよび／または同期を再形成するルーチンをスタートさせる、
請求項１１に記載の方法。
【請求項１３】
Ｎ個の処理ユニットが設けられている場合、前記エラー処理にてＮのうちのＮ−Ｍ（Ｍ＜Ｎ）の多数決判定を行い、
他とは異なる処理ユニットをイナクティブにする、
請求項１１に記載の方法。
【請求項１４】
個々の処理ユニットの故障識別をつぎのように行う、すなわち、
任意のトランザクションに対し、処理ユニットの素子において１つまたは複数のパラメタが最も早く利用可能になった時点からはじめて、到来しないパラメタまたはあらかじめ設定可能な時間が経過後にはじめて到来するパラメタを拒否することによって行ない、
ここで処理ユニットに対して、前記の到来しないパラメタまたはあらかじめ設定可能な時間の経過後にはじめて到来するパラメタによってエラー処理を開始する、
請求項１から１３までのいずれか１項に記載の方法。
【請求項１５】
前記の素子（ＥＱ０，ＥＱ１）により、以下のトランザクション、すなわち、
−  各処理ユニット（ＰＲＯ０，ＰＲＯ１）に割り当てられたローカルメモリ（ＭＥＭ０，ＭＥＭ１）に関する一時記憶できないメモリトランザクション、および／または
−  入力／出力素子（Ｉ／Ｏ０，Ｉ／Ｏ１）への入力／出力トランザクション、および／または
−  外部レジスタ（ＲＥＧ０，ＲＥＧ１）へのメモリマップド入力／出力トランザクション、および／または
−  処理ユニット（ＰＲＯ０，ＰＲＯ１）の共通メモリ（ＣＭＥＭ）に関する一時記憶できないメモリトランザクションを使用して、処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化する、
請求項１から１４までのいずれか１項に記載の方法。
【請求項１６】
前記の素子（ＥＱ０，ＥＱ１）により、接続線路（Ｌ０，Ｌ１）を介して、トランザクションの以下のパラメタ、すなわち、
−  入力／出力アドレス、および／または
−  メモリアドレス、および／または
−  転送すべきデータ、および／または
−  トランザクションの種類、および／または
−  前記の入力／出力アドレスおよび／またはメモリアドレスおよび／または転送すべきデータおよび／またはトランザクションの種類から形成されるシグネチャを伝送して前記の処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化する、
請求項１から１５までのいずれか１項に記載の方法。
【請求項１７】
冗長なデータ処理システムの同期または非同期にクロック制御される処理ユニット（ＰＲＯ０，ＰＲＯ１）を同期化する装置において、
−  同じ命令列を処理する少なくとも２つの処理ユニット（ＰＲＯ０，ＰＲＯ１）と、
−  データを記憶および／または交換するために前記処理ユニットにそれぞれ排他的に割り当てられる周辺装置（ＭＥＭ０，ＭＥＭ１）と、
−  データを記憶および／または交換するためにすべての処理ユニットによって共通に利用可能な周辺装置（Ｉ／Ｏ０，Ｉ／Ｏ１，ＲＥＧ０，ＲＥＧ１，ＣＭＥＭ）と、
−  上記の処理ユニットに割り当てられた素子（ＥＱ０，ＥＱ１）とを有しており、
ここで該素子（ＥＱ０，ＥＱ１）は、トランザクションを監視する手段と、すべての処理ユニットが才人のトランザクションに到達するまで前記の割り当てられた処理ユニットの待ち状態をトリガする手段と、当該のトランザクションを特徴付けるパラメタを別の素子に伝達するための手段（Ｌ０，Ｌ１）とを有することを特徴とする、
同期または非同期にクロック制御される処理ユニットを同期化する装置。
【請求項１８】
前記の各処理ユニットは、
−  少なくとも１つの実行ユニット（ＥＵ）と、
−  専用の動作モードに最後に切り換わってから、前記実行ユニットによって実行された命令をカウントするための少なくとも１つのカウンタ素子（ＣＩＣ）と、
−  内容が命令によってあらかじめ設定できるまたは固定的にあらかじめ設定される少なくとも１つのレジスタ素子（ＭＩＲ）と、
−  前記のカウンタ素子（ＣＩＣ）とレジスタ素子（ＭＩＲ）との一致に応答して前記実行ユニット（ＥＵ）を専用の動作モードに切り換えるための少なくとも１つの比較器素子（Ｋ）とを有しており、
ここで前記の専用の動作モードでは、一時記憶され、プロセッサ素子に供給すべきであり、またプロセッサ素子に影響を与える外部イベントがこのプロセッサ素子によって呼び出される、
請求項１７に記載の装置。
【請求項１９】
前記素子（ＥＱ０，ＥＱ１）は、以下のトランザクション、すなわち、
−  各処理ユニット（ＰＲＯ０，ＰＲＯ１）に割り当てられたローカルメモリ（ＭＥＭ０，ＭＥＭ１）のうちの１つに関する一時記憶できないメモリトランザクション、および／または
−  入力／出力素子（Ｉ／Ｏ０，Ｉ／Ｏ１）への入力／出力トランザクション、および／または
−  外部レジスタ（ＲＥＧ０，ＲＥＧ１）へのメモリマップド入／出力トランザクション、および／または
−  処理ユニット（ＰＲＯ０，ＰＲＯ１）の共通メモリ（ＣＭＥＭ）に関する一時記憶できないメモリトランザクションに基づいて処理ユニットを同期化する手段を有する、
請求項１７または１８に記載の装置。
【請求項２０】
前記素子は、トランザクションを表す以下のパラメタ、すなわち
−  入力／出力アドレスおよび／または
−  メモリアドレスおよび／または
−  転送すべきデータおよび／または
−  トランザクションの種類および／または
−  上記の入力／出力アドレスおよび／またはメモリアドレスおよび／または転送すべきデータおよび／またはトランザクションの種類から形成されるシグネチャを形成する手段を有する、
請求項１７から１９までのいずれか１項に記載の装置。
【国際調査報告】
2006512634.tif 000007
2006512634.tif 000008
2006512634.tif 000009
2006512634.tif 000010
2006512634.tif 000011
2006512634.tif 000012