(57)【要約】【課題】  マイクロプロセッサのロックステップを実施する技法を提供する。【解決手段】  第１の出力信号を生成する第１のマイクロプロセッサコア（１０２ａ）と、第２の出力信号を生成する第２のマイクロプロセッサコア（１０２ｂ）と、第１の入出力ポート（１１２）を有するスイッチングファブリック（１０８）と、該スイッチングファブリック（１０８）の前記第１の入出力ポート（１１２）と、前記第１および第２のマイクロプロセッサコア（１０２ａ〜１０２ｂ）との間に接続されて、前記第１の出力信号が前記第２の出力信号と異なるかどうかを検出するロックステップ論理回路（１０６）と、を備えるデバイス（１０４）とする。【選択図】          図１Ａ
2005302020.tif 000002
【特許請求の範囲】
【請求項１】
デバイス（１０４）であって、
第１の出力信号を生成する第１のマイクロプロセッサコア（１０２ａ）と、
第２の出力信号を生成する第２のマイクロプロセッサコア（１０２ｂ）と、
第１の入出力ポート（１１２）を有するスイッチングファブリック（１０８）と、
該スイッチングファブリック（１０８）の前記第１の入出力ポート（１１２）と、前記第１および第２のマイクロプロセッサコア（１０２ａ〜１０２ｂ）との間に接続されて、前記第１の出力信号が前記第２の出力信号と異なるかどうかを検出するロックステップ論理回路（１０６）と、
を備えるデバイス。
【請求項２】
デバイス（１０４）であって、前記スイッチングファブリック（１０８）は複数の入出力ポート（１１２、１２６ａ〜１２６ｂ）を備え、前記第１の入出力ポート（１１２）は前記複数の入出力ポート（１１２、１２６ａ〜１２６ｂ）のうちの１つを備え、前記第１の入出力ポート（１１２）は、前記複数の入出力ポートのうちの少なくとも１つの他の入出力ポート（１２６ａ）が動作する周波数と異なる周波数で動作する、請求項１に記載のデバイス。
【請求項３】
方法（２００）であって、
（Ａ）ロックステップ動作モード（２０４）において、
（１）第１のマイクロプロセッサコアから第１の出力信号を受信する（２０６）ステップと、
（２）第２のマイクロプロセッサコアから第２の出力信号を受信する（２０６）ステップと、
（３）前記第１の出力信号が前記第２の出力信号と異なるかどうかを判断する（２１０）ステップと、
（４）前記第１の出力信号が前記第２の出力信号と異ならないと判断されると、前記第１の出力信号をスイッチングファブリックの第１の入出力ポートへ送信する（２１２）ステップと、
を実行するステップ、を含む方法。
【請求項４】
方法（２００）であって、前記スイッチングファブリックは複数の入出力ポートを備え、前記第１の入出力ポートは前記複数の入出力ポートのうちの１つを備え、前記第１の入出力ポートは、前記複数の入出力ポートのうちの少なくとも１つの他の入出力ポートが動作する周波数と異なる周波数で動作する、請求項３に記載の方法。
【請求項５】
デバイス（１０６）であって、
第１のマイクロプロセッサコア（１０２ａ）から第１の出力信号を受信する第１の入力端子（３０２）と、
第２のマイクロプロセッサコア（１０２ｂ）から第２の出力信号を受信する第２の入力端子（３０２）と、
前記第１の出力信号を前記第２の出力信号と比較する比較器（３０６）と、
該比較器（３０６）が前記第１の出力信号を前記第２の出力信号と比較した後に、前記第１および第２の出力信号の少なくとも１つを出力として提供する出力手段（３１２、３１８ａ〜３１８ｂ）と、
を備えるデバイス。
【請求項６】
デバイス（１０６）であって、
第１のマイクロプロセッサコアから第１の出力信号を受信する第１の入力端子（３０２）と、
第２のマイクロプロセッサコアから第２の出力信号を受信する第２の入力端子（３０２）と、
前記第１の出力信号を前記第２の出力信号と比較するＸＯＲゲート（３０６）と、
該ＸＯＲゲート（３０６）が前記第１の出力信号を前記第２の出力信号と比較した後、前記第１の出力信号が前記第２の出力信号と等しい場合にのみ、該第１および第２の出力信号の少なくとも１つを出力として提供する出力手段（３１２、３１８ａ〜３１８ｂ）と、
を備えるデバイス。
【請求項７】
デバイス（４０４）であって、
第１の入出力ポート（４１２ａ）および第２の入出力ポート（４１２ｂ）を有するスイッチングファブリック（４０８）と、
前記第１の入出力ポート（４１２ａ）に接続された第１のマイクロプロセッサコア（４０２ａ）と、
前記第２の入出力ポート（４１２ｂ）に接続された第２のマイクロプロセッサコア（４０２ｂ）と、
該第１および第２のマイクロプロセッサコア（４０２ａ〜４０２ｂ）に接続されて、前記第１の出力信号が前記第２の出力信号と異なるかどうかを検出するロックステップ論理回路（４０６）と、
を備えるデバイス。
【請求項８】
デバイス（４０４）であって、
前記第１のマイクロプロセッサコア（４０２ａ）から第１の出力信号を受信する手段（４３６）と、
前記第１のマイクロプロセッサコア（４０２ａ）を通じて前記第１の入出力ポート（４１２ａ）へ前記第１の出力信号を送信する手段（４３８ａ）と、
をさらに備える、請求項７に記載のデバイス。
【請求項９】
デバイス（４０４）であって、
前記第１のマイクロプロセッサコア（４０２ａ）から第１の出力信号を受信する手段（４３６）と、
前記第２のマイクロプロセッサコア（４０２ｂ）を通じて前記第２の入出力ポート（４１２ｂ）へ前記第１の出力信号を送信する手段（４３８ｂ）と、
をさらに備える、請求項７に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサの設計に関し、特に、マイクロプロセッサのロックステップを実施する技法に関する。
【０００２】
［関連出願の相互参照］
本件出願は、「ロックステップエラー信号の送信（Lockstep Error Signaling）」という発明の名称の米国特許出願第１０／８１８，９９３号に関連する。
【背景技術】
【０００３】
マイクロプロセッサ等のシリコンベースのデバイスに当たる宇宙線またはアルファ粒子は、デバイス内の任意のノードに、予測できない方法で状態変化を起こさせる可能性があり、それによって、「ソフトエラー」と呼ばれるものを引き起こす可能性がある。マイクロプロセッサおよび他のシリコンベースのデバイスは、サイズが小さくなるにつれて、ますますソフトエラーの影響を受けやすくなってきている。ソフトエラーは、本質的には一時的なものであり、検出されないまま、かつ／または、訂正されないまま放置された場合に、デバイスを誤動作させることもあるし、させないこともある。検出されず訂正されないソフトエラーによって、例えば、メモリ位置は正しくない値を含むことがあり、この正しくない値によって、ひいては、マイクロプロセッサは、正しくない命令を実行したり、正しくないデータに作用したりすることがある。
【０００４】
これまで、ソフトエラーに対する１つの対応は、可能ならば、マイクロプロセッサにハードウェアを追加して、ソフトエラーを検出し、それらソフトエラーを訂正することであった。このような検出および訂正を行うのに、パリティチェック機能をプロセッサキャッシュに追加する等のさまざまな技法が使用されてきた。しかしながら、このような技法は、メモリアレイのソフトエラーの検出および訂正が最も得意であるが、マイクロプロセッサ内の任意の制御論理回路、実行データパス、またはラッチのソフトエラーの検出および訂正にはあまり適していない。さらに、このような技法を実施する回路機構を追加することは、マイクロプロセッサの製造規模および製造コストを大幅に増大させる可能性がある。
【０００５】
任意の制御論理回路および関連した実行データパスを保護するのに使用されてきた１つの技法は、２つまたは３つ以上のプロセッサで同じ命令ストリームを並列に実行することである。このようなプロセッサは、命令ストリームの２つのコピーを「ロックステップで」実行すると言われ、したがって、「ロックステッププロセッサ」と呼ばれる。マイクロプロセッサが正しく（すなわち、ソフトエラーがない状態で）動作している時、ロックステッププロセッサのすべては、同じ命令ストリームを実行しているので、同じ結果を得るべきである。しかしながら、或るプロセッサにソフトエラーが持ち込まれると、そのプロセッサが生成する結果は、それ以外のプロセッサ（または複数のプロセッサ）が生成する結果と異なることがある。したがって、このようなシステムは、各命令または各１組の命令がロックステップで実行された後に、ロックステッププロセッサが生成した結果を比較することによってソフトエラーの検出を試みる。これらプロセッサのいずれか１つが生成した結果が、それ以外のプロセッサが生成した結果と異なる場合、障害が発生し、他の訂正動作が行われる。ロックステッププロセッサは冗長な命令ストリームを実行するので、ロックステップシステムは、「機能冗長チェック（functional redundancy check）」を実行すると言われる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ロックステップを実施する際の１つの難しさは、互いに正確に同位相で、かつ、複数のマイクロプロセッサに正確に同じ周波数を分配するクロック信号を供給することが困難となる可能性があるということである。その結果、ロックステッププロセッサは、たとえその他の点では正しく機能していても、タイミングの差が原因でロックステップから脱落する可能性がある。非同期インタフェースを使用するより高性能な設計では、２つの異なるソケットの２つの異なるプロセッサを同じクロックサイクルに維持することは、さらに困難となる可能性がある。
【０００７】
多くの既存のプロセッサのような初期のプロセッサは、単一のプロセッサコアしか含んでいなかった。これに対して、「マルチコア」プロセッサは、単一のチップに１つまたは２つ以上のプロセッサコアを含むことができる。マルチコアプロセッサは、あたかも複数のプロセッサであるかのように動作する。複数のプロセッサコアのそれぞれは、基本的に、独立に動作することができる一方、キャッシュやシステムインタフェース等の一定の共通資源を共有する。したがって、マルチコアプロセッサは、処理効率を向上させる別の機会を提供する。既存のシステムの中には、単一のマイクロプロセッサ内の複数のコアが、互いにロックステップで動作できるものがある。
【０００８】
複数のマイクロプロセッサコアがロックステップで動作することを可能にする既存のシステムでは、マイクロプロセッサは、通常、単一のシステムバスに接続され、そのシステムバスの一部は、マイクロプロセッサの２つまたは３つ以上のロックステップコアによって共有される。このようなシステムでは、１つのコアしかバスの共有部分に一時にアクセスできないので、このようなシステムは、通常、複数のコア間の裁定を行って、現在の「バスマスタ」コアからシステムバスへデータを多重化する回路機構を含む。このような設計では、ロックステップ回路機構は、通常、これら裁定ポイントおよび多重化ポイントで実施される。ロックステップ回路機構をこのように実施することは、特に、バスアーキテクチャおよびプロトコルの要件がロックステップチェックの実行時間をほとんど残していないおそれがあるので、非常に困難となる可能性がある。さらに、このようなシステムでは、バスからのすべてのデータは、ロックステップコアに送信される前に複製される。
【課題を解決するための手段】
【０００９】
本発明の１つの態様において、第１の出力信号を生成する第１のマイクロプロセッサコアと、第２の出力信号を生成する第２のマイクロプロセッサコアと、第１の入出力ポートを有するスイッチングファブリックと、スイッチングファブリックの第１の入出力ポートと、第１および第２のマイクロプロセッサコアとの間に接続されて、第１の出力信号が第２の出力信号と異なるかどうかを検出するロックステップ論理回路と、を備えるデバイスが提供される。
【００１０】
本発明の様々な態様および実施形態における他の特徴および利点は、以下の説明および特許請求の範囲から明らかとなる。
【発明を実施するための最良の形態】
【００１１】
図１Ａを参照して、本発明の一実施の形態に従ってロックステップで複数のマイクロプロセッサコア１０２ａ〜１０２ｂを動作させるシステム１００のブロック図が示されている。コア１０２ａ〜１０２ｂは、マイクロプロセッサ１０４のコンポーネントであり、マイクロプロセッサ１０４は、別のコア（図を簡単にするために図１Ａには図示せず）を有することができる。
【００１２】
コア１０２ａ〜１０２ｂは、オンチップクロスバー１０８のポート１２６ａ〜１２６ｂにそれぞれ接続される。より具体的には、コア１０２ａは、ポート１２６ａへライン１１４ａでデータ／制御信号を出力し、ポート１２６ａからライン１１８ａでデータ信号を受信する。同様に、コア１０２ｂは、ポート１２６ｂへライン１１４ｂでデータ／制御信号を出力し、ポート１２６ｂからライン１１８ｂでデータ信号を受信する。
【００１３】
また、システム１００は、ロックステップ論理回路１０６も含み、ロックステップ論理回路１０６は、クロスバーポート１１２に接続される。ロックステップ論理回路１０６は、コア１０２ａ〜１０２ｂのデータ／制御ライン１１４ａ〜１１４ｂおよびデータライン１１８ａ〜１１８ｂに接続される。これらのラインを通じて、ロックステップ論理回路１０６は、コア１０２ａ〜１０２ｂへ信号を送信することができ、コア１０２ａ〜１０２ｂから信号を受信することができる。
【００１４】
システム１００は、ロックステップモードで動作することもできるし、非ロックステップモードで動作することもできる。図１Ｂを参照して、ロックステップモードまたは非ロックステップモードのいずれかで動作する本発明の一実施の形態のシステム１００が実行する方法１５０のフローチャートが示されている。ロックステップ論理回路１０６は、ロックステップ論理回路１０６がロックステップモードで動作するかどうかを示すロックステップイネーブル信号をライン１３０で受信する（ステップ１５２）。ロックステップイネーブルライン１３０は、構成管理回路機構に接続することもできるし、ロックステップ論理回路１０６がロックステップモードで動作するかどうかを制御する他の任意の回路機構にも接続することができる。
【００１５】
ロックステップ論理回路１０６がロックステップモードで動作することをロックステップイネーブル信号が示す場合には（ステップ１５４）、ロックステップ論理回路クロスバーポート１１２が有効にされ（ステップ１５６）、コアクロスバーポート１２６ａ〜１２６ｂが無効にされ（ステップ１５８）、ロックステップ論理回路１０６がロックステップモードで動作する（ステップ１６０）。ロックステップ論理回路１０６がロックステップモードで動作するのに使用できる技法は、図２Ａ〜図２Ｃについて以下でさらに詳細に説明する。マイクロプロセッサ１０４は、当業者に既知の技法を使用してポート１１２および１２６ａ〜１２６ｂを有効／無効にする回路機構を含むことができる。
【００１６】
ロックステップ論理回路１０６が非ロックステップモードで動作することをロックステップイネーブル信号が示す場合には（ステップ１５４）、ロックステップ論理回路クロスバーポート１１２が無効にされ（ステップ１６２）、コアクロスバーポート１２６ａ〜１２６ｂが有効にされ（ステップ１６４）、ロックステップ論理回路１０６が非ロックステップモードで動作する（ステップ１６６）。非ロックステップモードの場合、ロックステップ論理回路１０６は、コア１０２ａ〜１０２ｂの出力に対してロックステップエラーチェックを実行せず、ロックステップ論理回路１０６は、コア１０２ａ〜１０２ｂへそれぞれライン１１８ａ〜１１８ｂで信号を送信しない。したがって、ロックステップ論理回路１０６が非ロックステップモードで動作する場合（ステップ１６６）、コア１０２ａ〜１０２ｂは、ロックステップ論理回路１０６による介入なしに、自身の各クロスバーポート１２６ａ〜１２６ｂを通じて独立に通信する。
【００１７】
図２Ａを参照して、本発明の一実施の形態に従ってロックステップモードでロックステップ論理回路１０６が実行する方法２００のフローチャートが示されている。図２Ｂを参照して、ロックステップ論理回路１０６がロックステップモードで動作している時の本発明の一実施の形態におけるコア１０２ａ〜１０２ｂの一方または双方が実行できる方法２５０のフローチャートが示されている。上述したように、方法２００および２５０は、方法１５０（図１Ｂ）のステップ１６０を実施することができる。
【００１８】
ロックステップ論理回路１０６は、コア１０２ａ〜１０２ｂの一方を「マスタコア」として選択し、他方のコアを「スレーブコア」として選択する（ステップ２０２）。コア１０２ａ〜１０２ｂのいずれもマスタコアまたはスレーブコアとして選択することができる。別法では、マスタ／スレーブの選択は、外部の論理回路（チップ上のヒューズやチップの外部信号等）によって行うこともできる。ロックステップ論理回路１０６は、ロックステップモードに入る（図２Ａ、ステップ２０４）。ロックステップ論理回路１０６が行う次の動作は、ロックステップ論理回路１０６が次に受信する入力に依存する。
【００１９】
例えば、図２Ｂを参照して、コア１０２ａ〜１０２ｂのそれぞれは、コアの命令ストリームの次の命令をフェッチし（ステップ２５２）、その命令を実行し（ステップ２５４）、その結果データおよび／または制御信号があれば、それをロックステップ論理回路１０６へ送信する（ステップ２５６）。図２Ａを参照して、ロックステップ論理回路１０６がこのようなデータ／制御信号をライン１１４ａ〜１１４ｂで受信すると（ステップ２０６）、ロックステップ論理回路１０６は、このような出力を互いに比較し合う（ステップ２０８）。双方のコア１０２ａ〜１０２ｂの出力が同じである場合（ステップ２１０）、ロックステップ論理回路１０６は、クロスバー１０８のポート１１２へマスタコアの出力を提供する（ステップ２１２）。クロスバー１０８は、次に、当業者に既知の技法を使用して、マスタコアの出力を、複数のリンク１１０ａ〜１１０ｆの１つを介してメモリコントローラや別のプロセッサコア（図示せず）等のターゲットコンポーネントへ送信する。
【００２０】
ロックステップ論理回路１０６がロックステップモードにある間に、データストリームがリンク１１０ａ〜１１０ｆの１つからポート１１２で受信されると、ロックステップ論理回路１０６は、ポート１１２からそのデータストリームを受信し（ステップ２１４）、そのデータストリームを複製し（ステップ２１６）、データライン１１８ａ〜１１８ｂを介してそのデータストリームの双方のコピーをコア１０２ａ〜１０２ｂに送信する（ステップ２１８）。図２Ｂを参照して、コア１０２ａ〜１０２ｂは、ロックステップ論理回路１０６からそのデータを受信し（ステップ２６２）、それを処理する（ステップ２６４）。ロックステップ論理回路１０６がロックステップモードで動作している時に、コア１０２ａ〜１０２ｂのそれぞれは、他方のコアとロックステップでステップ２６４を実行する。
【００２１】
今説明した例では、ロックステップ論理回路１０６が、コア１０２ａ〜１０２ｂによって実行されたあらゆる命令により生成された出力を受信するが、これは、単なる一例にすぎず、本発明を限定するものではないことに留意されたい。例えば、図１Ａに示す例では、ロックステップ論理回路１０６は、コア１０２ａ〜１０２ｂがライン１１４ａ〜１１４ｂで送信した信号を処理するだけであるので、ライン１１４ａ〜１１４ｂの信号をコア１０２ａ〜１０２ｂに生成させない命令については、その出力を比較しない。コアが専らマイクロプロセッサ１０４内のデータ（レジスタまたはオンチップキャッシュに記憶されたデータ等）を使用して実行できる命令等の一定の命令は、オフチップ処理用に、どのデータおよび／または制御信号もライン１１４ａ〜１１４ｂで送信するようにコアに要求しないことがある。したがって、このような命令は、ロックステップ論理回路１０６によって比較される信号を生成することなく実行することができる。しかしながら、コア１０２ａ〜１０２ｂは、オフチップデータ（オフチップキャッシュに記憶されたデータ等）なしに命令の実行を完了できない場合には、ロックステップ論理回路１０６によって比較されるメッセージ（通常、ロード命令またはストア命令を含む）をライン１１４ａ〜１１４ｂで送信することができる。
【００２２】
ロックステップ論理回路１０６は、必要に応じて、コア１０２ａ〜１０２ｂへおよびコア１０２ａ〜１０２ｂからデータをトランスペアレントに送信するので、ポート１１２を通じてコア１０２ａ〜１０２ｂと通信するデバイスは、あたかも単一のプロセッサまたはプロセッサコアと通信しているのと同じように、ポート１１２を通じて単一のデータストリームを送受信しさえすればよいことが理解されるべきである。したがって、今説明した技法を使用して、ロックステップ論理回路１０６は、コア１０２ａ〜１０２ｂがポート１１２に接続された単一のデバイスに見えるようにしつつロックステップチェックを実行する。
【００２３】
ソフトエラーまたは他のエラーがコア１０２ａ〜１０２ｂの一方で発生すると、コア１０２ａ〜１０２ｂの（ライン１１４ａ〜１１４ｂの）出力は互いに異なることがある。ロックステップ論理回路１０６は、ライン１１４ａ〜１１４ｂのコア出力が互いに異なると判断すると（ステップ２１０）、ロックステップモードを終了し、本明細書では「ロックステップエラーモード」と呼ばれるモードに入る（ステップ２２６）。ロックステップエラーモードの間のロックステップ論理回路１０６のオペレーションは、図２Ｃについて以下でより詳細に説明する。
【００２４】
本発明の一実施の形態では、コア１０２ａ〜１０２ｂのそれぞれは、それ自身のエラーチェック回路機構を含む。このエラーチェック回路機構は、コア１０２ａ〜１０２ｂのそれぞれの内部のソフトエラーおよび／または他のエラーの発生をチェックする。このようなエラーチェック回路機構の例は当業者に既知である。
【００２５】
コア１０２ａ〜１０２ｂの一方のエラーチェック回路機構が内部エラーを検出すると、そのコアは、マシンチェックアーキテクチャ（ＭＣＡ）ライン１１６ａ〜１１６ｂの対応するラインでエラー信号を送信することができる（図２Ｂ、ステップ２６０）。このようなエラー信号の受信に応答して（図２Ａ、ステップ２２０）、ロックステップ論理回路１０６は、本明細書では「非保護モード」と呼ばれるモードに入る（ステップ２２２）。簡単に言えば、非保護モードにある時、ロックステップ論理回路１０６は、ロックステップチェックの実行を停止し、エラーを信号で伝えるコアが生成した出力を無視し、他方のコアに、クロスバーポート１１２と双方向で通信することを可能にする。ロックステップ論理回路１０６は、エラーのクリアを試み、エラーを生成したコアを通常の動作モードに戻すように試みる。成功すると、ロックステップ論理回路１０６はロックステップモードに戻る。
【００２６】
より具体的には、非保護モードにある時、ロックステップ論理回路１０６は、エラーを信号で伝えたコアをスレーブコアとして選択し（ステップ２２４）、他方のコアをマスタコアとして選択する（ステップ２２５）。
【００２７】
本発明の一実施の形態では、ロックステップ論理回路１０６は、非保護モードにある時、コア１０２ａ〜１０２ｂの（ライン１１４ａ〜１１４ｂ）の出力に対してロックステップエラーチェックを実行しない。逆に、ロックステップ論理回路１０６は、クロスバーポート１１２またはマスタコアからのデータを待機する待機状態２２７に入る。ロックステップ論理回路１０６は、マスタコアのすべての出力をクロスバーポート１１２へ送信し（ステップ２２８〜２３０）、クロスバーポート１１２で受信したすべての入力をマスタコアへ送信し、スレーブコアには送信しない（ステップ２３２〜２３４）。
【００２８】
ロックステップ論理回路１０６は、非保護モードにある時、ＭＣＡライン１２０ａ〜１２０ｂの対応するラインで「復旧開始」信号をスレーブコアへ送信する（ステップ２３６）。スレーブコアは、「復旧開始」信号の受信に応答して（図２Ｂ、ステップ２６６）、自身のリセットを試みること等によって、直面したエラーからの復旧を試みる（ステップ２６８）。図２Ａ〜図２Ｂに示す例では、スレーブコアは、復旧に成功し、ＭＣＡライン１１６ａ〜１１６ｂの対応するラインで「復旧成功」信号をロックステップ論理回路１０６へ送信する（図２Ｂ、ステップ２７０）ものと仮定する。スレーブコアからの「復旧成功」信号の受信に応答して（図２Ａ、ステップ２３８）、ロックステップ論理回路１０６は、ロックステップモードに再び入る（ステップ２０４）。ステップ２３６〜２３８は、ステップ２２７〜２３４と並行して実行できること、および、非保護モードが存在することによって、ステップ２２７〜２３４のループが終了することに留意されたい。
【００２９】
図２Ａ〜図２Ｂに示す例では、ロックステップ論理回路１０６は、エラー信号を受信したコアのみのリセットを試みるが、別法では、ロックステップ論理回路１０６は、これらコアの一方からエラー信号を受信すると、双方のコア１０２ａ〜１０２ｂのリセットを試みることもできる。さらに、ロックステップ論理回路１０６は、コアの一方からエラー信号を受信すると、双方のコア１０２ａ〜１０２ｂがロックステップで命令を実行する動作モードにさらに戻るように試みて、ロックステップ論理回路１０６自身をリセットすることもできる。
【００３０】
図２Ｃを参照して、本発明の一実施の形態に従って、ロックステップエラーの検出に応答して（図２Ａ、ステップ２２６）ロックステップ論理回路１０６が実行する方法２８０のフローチャートが示されている。通常、コア１０２ａ〜１０２ｂのいずれがロックステップの不一致の原因であったかを決定することは不可能であるので、ロックステップエラーからの復旧は困難になる可能性がある。しかしながら、或る先のチェックポイントに戻ることを試みることや双方のコア１０２ａ〜１０２ｂおよびロックステップ論理回路１０６をリセットすること等、このようなエラーからの復旧を試みるさまざまな技法は、当業者に既知である。ロックステップ論理回路１０６は、このような復旧の実行を試みることができる（ステップ２８２）。復旧の試みが成功すると（ステップ２８４）、ロックステップ論理回路１０６はロックステップモードに再び入る（図２Ａ、ステップ２０４）。復旧の試みが失敗すると、ロックステップ論理回路１０６は、致命的システムエラーを信号で伝える（ステップ２８８）。このようなエラーは、通常、マイクロプロセッサ１０４全体またはコンピュータシステム１００全体のリセットを必要とする。別法では、ロックステップ論理回路１０６は、ロックステップエラーモードに入ると、復旧を試みることなく、致命的システムエラーを単に信号で伝えることだけを行うこともできる。
【００３１】
図３を参照して、ロックステップ論理回路１０６が、本発明の一実施の形態に従ってより詳細に示されている。上述したように、ロックステップ論理回路１０６は、コア１０２ａ〜１０２ｂからそれぞれライン１１４ａ〜１１４ｂでデータ／制御信号を受信する（図２Ａ、ステップ２０６）。ライン１１４ａ〜１１４ｂの信号は、クロックライン１２４ａ〜１２４ｂでそれぞれコア１０２ａ〜１０２ｂに提供されるクロック信号間の相違が原因で、互いにわずかに同期していないことがある。したがって、ロックステップ論理回路１０６はシンクロナイザ３０２を含む。このシンクロナイザ３０２は、入力端子として、コア１０２ａ〜１０２ｂの双方のデータ／制御出力をライン１１４ａ〜１１４ｂで受信し、ライン１２４ａ〜１２４ｂでコアクロック信号を受信する。シンクロナイザ３０２は、当業者に既知の技法を使用して、同期したデータ／制御信号をライン３０４ａ〜３０４ｂに生成する。
【００３２】
また、ロックステップ論理回路１０６は排他的ＯＲ（ＸＯＲ）ゲート３０６も含む。このＸＯＲゲート３０６は、入力端子として、同期したデータ／制御信号を（ライン３０４ａ〜３０４ｂで）受信し、これらの信号に対して論理ＸＯＲオペレーションを実行して、「ロックステップ不一致」信号をライン３０８に生成する（図２Ａ、ステップ２０８〜２１０）。ロックステップ不一致信号は、ライン３０４ａ〜３０４ｂの同期したデータ／制御信号が互いに等しくない時にのみアサートされ、それによって、ソフトエラーまたは他のエラーがコア１０２ａ〜１０２ｂの一方に発生したことを示す。
【００３３】
ライン３０４ａ〜３０４ｂの同期したデータ／制御信号は、マルチプレクサ３１２にデータ入力として提供されることに留意されたい。マルチプレクサ３１２の出力３１６は、ステージングレジスタ（staging register）３１８ａ〜３１８ｂを通じてクロスバーポート１１２に接続される。「マスタコア選択」信号が、ライン３１４で、マルチプレクサ３１２の選択入力端子に提供され、それによって、クロスバーポート１１２への出力用に、ライン３０４ａ〜３０４ｂの一方のデータ／制御信号が選択される。
【００３４】
本発明の一実施の形態では、マスタコア選択信号は、エラー検出／制御エンジン３１０によって生成される。エラー検出／制御エンジン３１０は、例えば、ＲＯＭまたは他の回路機構の有限状態マシンとして実施することができる。エラー検出／制御エンジン３１０は、入力端子として、（１）ライン３０８のロックステップ不一致信号、および、（２）ライン３３０ａ〜３３０ｂのＭＣＡ信号を受信する。ライン３３０ａ〜３３０ｂのＭＣＡ信号は、ライン１１６ａ〜１１６ｂのＭＣＡ信号を同期させたものであり、ライン１２４ａ〜１２４ｂのコアクロック信号によってクロック制御されるシンクロナイザ３２４により生成される。
【００３５】
エンジン３１０は、ライン３３０ａ〜３３０ｂのＭＣＡ信号を参照することによって、エラーがいつコア１０２ａ〜１０２ｂに発生したかを検出することができる。エラー検出／制御エンジン３１０がこのようなエラーを検出すると、エンジン３１０は、上述したように、非保護モードに入る（図２Ａ、ステップ２２２）。エンジン３１０は、マルチプレクサ３１２の出力端子として、マスタコアが出力したデータ／制御信号を選択するライン３１４の選択信号を出力する。それによって、マルチプレクサ３１２は、マスタコアが出力したデータ／制御信号を、ステージングレジスタ３１８ａ〜３１８ｂを通じてクロスバーポート１１２へ送信する（図２Ａ、ステップ２１２）。
【００３６】
エンジン３１０は、ロックステップモードにある時に、「比較イネーブル」信号をライン３２２にアサートする。比較イネーブル信号およびライン３０８のロックステップ不一致信号の双方は、ＡＮＤゲート３３８に入力として提供される。したがって、エンジン３１０がロックステップモードにあり、かつ、ロックステップエラーが発生した時、ＡＮＤゲート３３８の出力はハイである。ＡＮＤゲート３３８の出力は、第２のステージングレジスタ３１８ｂのリセット入力端子に入力として提供され、それによって、ロックステップエラーが発生した時に、ステージングレジスタ３１８ｂの出力を抑止する。これによって、ロックステップエラーが発生した時に、コア１０２ａ〜１０２ｂのいずれかの出力がクロスバーポート１１２に送信されることが防止される。
【００３７】
ステージングレジスタ３１８ａ〜３１８ｂの目的は、マルチプレクサ３１２の出力がクロスバーポート１１２に提供される前の遅延を提供することである。このような遅延は、ロックステップエラーが発生した場合に、（ＡＮＤゲート３３８によって出力される）抑止信号が生成され、それによって、マルチプレクサ３１２の出力がクロスバーポート１１２へ送信されるのを防止する時間を提供する。ステージングレジスタ３１８ａ〜３１８ｂは、別法では、従来の先入れ先出し（ＦＩＦＯ）タイプのキューまたは適切な遅延を導入する他の任意のメカニズムを使用して実施することもできる。
【００３８】
エンジン３１０は、非保護モードにある時（図２Ａ、ステップ２２２）、ライン３２２の比較イネーブル信号をディアサートし、ＭＣＡライン１２０ａ〜１２０ｂの対応するラインで復旧開始信号をスレーブコアへ送信する（図２Ａ、ステップ２３６）。エンジン３１０がＭＣＡ信号をライン３３２ａ〜３３２ｂに生成すること、および、シンクロナイザ３２４がこれらの信号を同期させて、ライン１２０ａ〜１２０ｂにＭＣＡ信号を生成することに留意されたい。エンジン３１０は、その後、ライン１２０ａ〜１２０ｂの対応するラインでスレーブコアから復旧成功信号を受信すると（図２Ａ、ステップ２３８）、上述したように、ロックステップモードに再び入ることができ（図２Ａ、ステップ２０４）、ライン３２２に比較イネーブル信号を再アサートすることができる。
【００３９】
ロックステップ論理回路１０６がポート１１２からデータを受信すると（図２Ａ、ステップ２１４）、それらデータは、ライン３２６でシンクロナイザ３２８へ送信される。シンクロナイザ３２８は、ライン１２４ａ〜１２４ｂでコアクロック信号を受信し、ライン３０４ａ〜３０４ｂにそれぞれ信号を生成する。これらの信号は、ロックステップ論理回路１０６自体のクロック信号（図示せず）と同期される。シンクロナイザ３２８は、ライン３２６のデータストリームを複製し（ステップ２１６）、複製されて同期されたデータストリームをデータライン１１８ａ〜１１８ｂでそれぞれコア１０２ａ〜１０２ｂに提供する（ステップ２１８）。図３に示す実施の形態では、ロックステップ論理回路１０６がロックステップモードで動作していようが、非保護モードで動作していようが、クロスバーポート１１２から受信したデータは、双方のコア１０２ａ〜１０２ｂに提供されることに留意されたい。別法では、ロックステップ論理回路１０６は、非保護モードで動作している時に、ライン３２６のデータをマスタコアにのみ提供するように構成することもできる（図２Ａ、ステップ２３２〜２３４）。
【００４０】
図１Ａおよび図３に示す実施の形態では、ロックステップ論理回路１０６はクロスバーポート１１２に接続される。しかしながら、ロックステップ論理回路１０６をクロスバーポート１１２に直接接続する必要はない。逆に、図４Ａを参照して、ロックステップ論理回路４０６がコア４０２ａ〜４０２ｂを通じて間接的にクロスバーポート４１２ａ〜４１２ｂに接続される本発明の一実施の形態によるマイクロプロセッサ４０４が示されている。次に、より詳細に説明するように、ロックステップ論理回路４０６は、コア４０２ａ〜４０２ｂを通じて間接的に、ロックステップ論理回路１０６がポート１１２を通じて直接実行するのと同じまたは類似の機能を実行することができる。図４Ａには図示されないコア４０２ａ〜４０２ｂの特徴およびロックステップ論理回路４０６の特徴は、それぞれ、対応するコア１０２ａ〜１０２ｂの特徴およびロックステップ論理回路１０６の特徴（図１Ａおよび図３）と同じように実施することができる。
【００４１】
図４Ａに示す実施の形態は、コア４０２ａ〜４０２ｂがすでにクロスバーポート４１２ａ〜４１２ｂにそれぞれ接続されている既存の設計にロックステップ論理回路４０６を追加するのに特に役立つことができる。ロックステップ論理回路４０６は、コア４０２ａ〜４０２ｂをポート４１２ａ〜４１２ｂから切り離す必要なく、かつ、クロスバーポートを追加してロックステップ論理回路４０６に割り当てる必要なく、図４Ａに示すように、このような設計に挿入することができる。
【００４２】
コア４０２ａ〜４０２ｂは、ライン４１４ａ〜４１４ｂでそれぞれポート４１２ａ〜４１２ｂにデータ／制御信号を送信する送信論理回路４３０ａ〜４３０ｂを含む。また、コア４０２ａ〜４０２ｂは、ライン４１８ａ〜４１８ｂでそれぞれポート４１２ａ〜４１２ｂからデータ信号を受信する受信論理回路４３２ａ〜４３２ｂも含む。送信論理回路４３０ａ〜４３０ｂおよび受信論理回路４３２ａ〜４３２ｂを実施する技法は、当業者に既知である。
【００４３】
まず、ロックステップ論理回路４０６が非ロックステップモードにある時のマイクロプロセッサ４０４のオペレーションについて考察する。非ロックステップモードでは、コア４０２ａ〜４０２ｂが自身の各ポート４１２ａ〜４１２ｂと独立に通信し、ロックステップ論理回路４０６は、コア４０２ａ〜４０２ｂの出力に対してロックステップチェックを実行しないことを思い出されたい。まず、送信論理回路４３０ａ〜４３０ｂによるデータの送信について考えると、コア４０２ａ〜４０２ｂは、マルチプレクサ４３４ａ〜４３４ｂを含み、マルチプレクサ４３４ａ〜４３４ｂは、それぞれ送信論理回路４３０ａ〜４３０ｂに接続されていることに留意されたい。ロックステップ論理回路４０６が非ロックステップモードにある時、送信論理回路４３０ａ〜４３０ｂの（ライン４４６ａ〜４４６ｂの）出力は、それぞれライン４１４ａ〜４１４ｂを通過する。この結果は、ロックステップ論理回路４０６が、ライン４４０ａ〜４４０ｂでそれぞれマルチプレクサ４３４ａ〜４３４ｂへ選択信号を送信し、マルチプレクサ４３４ａ〜４３４ｂが、それぞれライン４１４ａ〜４１４ｂの出力として、送信論理回路４３０ａ〜４３０ｂの（ライン４４６ａ〜４４６ｂの）出力を選択することによって達成される。
【００４４】
次に、ロックステップ論理回路４０６が非ロックステップモードにある時のコア４０２ａ〜４０２ｂによるデータの受信について考えると、コア４０２ａ〜４０２ｂは、マルチプレクサ４４２ａ〜４４２ｂも含み、マルチプレクサ４４２ａ〜４４２ｂは、それぞれ受信論理回路４３２ａ〜４３２ｂに接続されることに留意されたい。ロックステップ論理回路４０６が非ロックステップモードにある時、ライン４１８ａ〜４１８ｂで受信したデータは、それぞれ、シンクロナイザ４５０ａ〜４５０ｂを通過して受信論理回路４３２ａ〜４３２ｂに渡る。この結果は、ロックステップ論理回路４０６が、ライン４４４ａ〜４４４ｂでそれぞれマルチプレクサ４４２ａ〜４４２ｂへ選択信号を送信し、マルチプレクサ４４２ａ〜４４２ｂが、それぞれ受信論理回路４３２ａ〜４３２ｂの出力として、入力データライン４１８ａ〜４１８ｂの信号を選択することによって達成される。
【００４５】
次に、ロックステップ論理回路４０６がロックステップモードにある時のシステム４００のオペレーションについて考察する。このモードでは、ロックステップ論理回路４０６は、マスタコアとしてコア４０２ａ〜４０２ｂの一方を選択し、「マスタポート」、すなわちデータを送受信する際に通るクロスバーポートとしてポート４１２ａ〜４１２ｂの一方を選択する。ロックステップ論理回路４０６は、マスタコアの出力がクロスバー４０８の選択されたマスタポートへ送信されるようにコア４０２ａ〜４０２ｂを制御する。入力データが、選択されたマスタポートで受信されると、ロックステップ論理回路４０６は、受信したデータを複製し、複製したデータが双方のコア４０２ａ〜４０２ｂへ送信されるようにコア４０２ａ〜４０２ｂを制御する。
【００４６】
より具体的に、まず、ロックステップ論理回路４０６がロックステップモードにある時のコア４０２ａ〜４０２ｂによるデータの送信について考察する。例示のため、ロックステップ論理回路４０６がコア４０２ａをマスタコアとして選択し、ポート４１２ａをマスタポートとして選択するものと仮定する。（マスタ）コア４０２ａの送信論理回路４３０ａがライン４４６ａで出力信号を送信すると、この信号は、入力端子４３６ａにおいてロックステップ論理回路４０６により受信される。ロックステップ論理回路４０６は、ライン４４８ａでマルチプレクサ４３４ａへ出力４３８ａの信号を再送信し、マルチプレクサ４３４ａによるライン４１４ａの出力としてライン４４８ａの信号を選択する選択信号をライン４４０ａで送信する。それによって、ロックステップ論理回路４０６は、選択されたマスタコア４０２ａが、選択されたマスタポート４１２ａへ出力を送信できるようにする。
【００４７】
同じ状況下において、ロックステップ論理回路４０６は、（スレーブ）コア４０２ｂからの出力を入力端子４３６ｂで受信する。ロックステップ論理回路４０６は、図１Ａについて上述したように、双方のコア４０２ａ〜４０２ｂから受信した出力を比較することができる。しかしながら、コア４０２ｂはスレーブコアであるので、ロックステップ論理回路４０６は、スレーブコア４０２ｂの出力を再送信する必要はない。この場合、出力はポート４１２ｂに提供されない。それによって、選択されたマスタポート４１２ａは、ロックステップ論理回路１０６がクロスバーポート１１２に直接接続される図１Ａに示す構成と機能的に等価なように、ロックステップ論理回路４０６の単一の出力ポートとして動作する。
【００４８】
次に、コア４０２ｂがマスタコアとして選択され、ポート４１２ａがマスタポートとして選択される場合を考察する。（マスタ）コア４０２ｂの送信論理回路４３０ｂがライン４４６ｂで出力信号を送信すると、その信号は、入力端子４３６ｂにおいてロックステップ論理回路４０６により受信される。ロックステップ論理回路４０６は、ライン４４８ａでマルチプレクサ４３４ａへ出力４３８ａの信号を再送信し、マルチプレクサ４３４ａによるライン４１４ａで出力としてライン４４８ａの信号を選択する選択信号をライン４４０ａで送信する。それによって、ロックステップ論理回路４０６は、選択されたマスタポート４１２ａへ出力を送信する際に通る仲介者として（スレーブ）コア４０２ａを使用することにより、選択されたマスタコア４０２ｂが、選択されたマスタポート４１２ａへ出力を送信できるようにする。
【００４９】
ポート４１２ａ〜４１２ｂのいずれかがマスタポートとして選択されると共に、コア４０２ａ〜４０２ｂのいずれかがマスタコアとして選択されると、選択されたマスタコアから選択されたマスタポートに出力を提供するのに同様の技法を使用できることが、上記説明から明らかなはずである。ロックステップ論理回路４０６がポート４１２ａをマスタポートとして常に選択するように実施される場合にライン４４８ｂを省略できるので、ライン４４８ｂは破線として示されることに留意されたい。このような実施の形態では、ロックステップ論理回路４０６は、依然として、コア４０２ａ〜４０２ｂのいずれかをマスタコアとして選択することができる。
【００５０】
ロックステップモードにある間、ロックステップ論理回路４０６は、コア４０２ａ〜４０２ｂのいずれかをマスタコアとして任意に選択できることに留意されたい。さらに、ロックステップ論理回路４０６は、マスタコアの出力を複製でき、必要に応じて、複製した出力を双方のポート４１２ａ〜４１２ｂにおいて（マルチプレクサ４３４ａ〜４３４ｂを通じて）提供できる。
【００５１】
次に、ロックステップ論理回路４０６がロックステップモードにある時のクロスバー４０８からのコア４０２ａ〜４０２ｂによるデータの受信を考察する。ロックステップ論理回路４０６は、ロックステップモードにある時、選択されたマスタポートで受信したデータを複製し、双方のコア４０２ａ〜４０２ｂに複製したデータを提供する。例示のため、ロックステップ論理回路４０６がコア４０２ａをマスタコアとして選択し、ポート４１２ａをマスタポートとして選択するものと仮定する。したがって、ポート４１２ａを通じた送信に応答して他のコンポーネント（図示せず）が送信するデータも、同じポート４１２ａを通じて受信される。
【００５２】
ロックステップ論理回路４０６は、以下のように、ポート４１２ａで受信した入力信号を双方のコア４０２ａ〜４０２ｂへ複製する。ライン４４１ａでコア４０２ｂに同じ信号を提供するのに、入力ライン４１８ａが（シンクロナイザ４５０ａの前後のいずれかで）分割されることに留意されたい。ロックステップ論理回路４０６は、ライン４４４ｂの選択信号をマルチプレクサ４４２ｂに提供し、マルチプレクサ４４２ｂは、受信論理回路４３２ｂへの出力としてライン４４１ａを選択する。それによって、受信論理回路４３２ｂは、（マスタ）ポート４１２ａからライン４１８ａで受信される信号を受信する。
【００５３】
コア４０２ａは遅延回路４４９ａを含み、遅延回路４４９ａは入力ライン４１８ａおよびマルチプレクサ４４２ａの中央データ入力端子に接続されることに留意されたい。ロックステップ論理回路４０６は、ライン４４４ａの選択信号をマルチプレクサ４４２ａに提供し、マルチプレクサ４４２ａは、受信論理回路４３２ａへの出力として遅延回路４４９ａの出力を選択する。遅延回路４４９ａは、ライン４４１ａでコア４０２ｂへ入力信号を送信することによって受ける遅延と等しくするための遅延を導入する。それによって、受信論理回路４３２ａおよび４３２ｂは、ライン４１８ａで受信した入力信号を同時またはほぼ同時に受信する。
【００５４】
クロスバーポート４１２ｂがマスタポートとして選択される場合に、クロスバーポート４１２ｂから受信した入力を複製し、複製した入力を双方のコア４０２ａ〜４０２ｂに提供するのに同様の技法を使用できることが理解されるべきである。より具体的に、ロックステップ論理回路４０６は、マルチプレクサ４４２ａへライン４４４ａの選択信号を供給でき、マルチプレクサ４４２ａは、受信論理回路４３２ａへの出力としてライン４４１ｂの信号を選択する。さらに、ロックステップ論理回路４０６は、ライン４４４ｂの選択信号をマルチプレクサ４４２ｂに供給でき、マルチプレクサ４４２ｂは、受信論理回路４３２ｂへの出力として（ポート４１２ｂに接続された）遅延回路４４９ｂの出力を選択する。それによって、受信論理回路４３２ａおよび４３２ｂは、ライン４１８ｂで受信した入力信号を同時またはほぼ同時に受信する。
【００５５】
最後に、ロックステップ論理回路が非保護モード（図２Ａ、ステップ２２２〜２３８）で動作している時のシステム４００のオペレーションについて考察する。ロックステップ論理回路４０６は、非保護モードにある時、例えば、マスタコアからマスタクロスバーポートへ出力を提供し、選択されたクロスバーポートからコア４０２ａ〜４０２ｂの双方へ入力を提供することによって、ロックステップモードと同じように動作することができる。オプションとして、ロックステップ論理回路４０６は、マスタクロスバーポートからマスタコアへのみ入力を提供することができ（図２Ａ、ステップ２３４）、それによって、入力データをスレーブコアへ複製する必要が回避される。
【００５６】
図４Ｂを参照して、マルチプレクサ４３４ａに代わるものとしてコア４０２ａに使用できる回路部の概略図が示されている。図４Ａに示す実施の形態では、コア４０２ａがロックステップ論理回路４０６の入力端子４３６ａへ送信するデータのすべては、ロックステップ論理回路４０６がライン４４８ａでコアへ返信できることを思い出されたい。次に、より詳細に説明するように、図４Ｂに示す実施の形態では、ロックステップ論理回路４０６は、元のビット数よりも少ないビット数をコア４０２ａに返信し、それによって、その回路の書き込みが簡単化される。同じ回路部を他方のコア４０２ｂに実施して、さらに利点を得ることができる。
【００５７】
送信論理回路４３０ａは、ｎビット出力をライン４４６ａで送信する。ｎビット出力の全体が、ライン４５２でロックステップ論理回路入力端子４３６ａへ送信される。一方、コア４０２ａ内では、ｎビット出力は、ライン４５４のｍビット信号（ここで、ｍ＜ｎ）と、ライン４５６の（ｎ−ｍ）ビット信号とに分割される。ライン４５４のｍビット信号は、マイクロプロセッサで一般に使用される「有効（valid）」ビット、「有害（poison）」ビット、および「ウィルス（viral）」ビット等の一定の重要な制御ビットを含むことができる。上記で参照した「Lockstep Error Signaling」という発明の名称の特許出願でより詳細に説明されているように、このようなビットの１つまたは２つ以上を設定して、ロックステップエラーまたは他のエラーが発生していることを信号で伝えることができる。しかしながら、ｍビット信号は、ロックステップ論理回路４０６がエラーを信号で伝えたり、他の機能を実行したりするためにその値を変更できる任意の個数のビットを含むことができることに留意されたい。ライン４５６の（ｎ−ｍ）ビット信号は、ライン４４６ａの元のｎビット信号からの残りのビットを含むことができる。
【００５８】
まず、ロックステップ論理回路４０６が非ロックステップモードで動作する時の図４Ｂに示す回路部のオペレーションを考察する。ロックステップ論理回路４０６は、非ロックステップモードにある時、ロックステップ選択ライン４４０ａで０値を送信し、この０値は、マルチプレクサ４６０および４６２に入力として提供される。これに応答して、マルチプレクサ４６０は、ライン４６４の出力として、ライン４５６の（ｎ−ｍ）ビット信号を選択し、マルチプレクサ４６２は、ライン４６６の出力としてライン４５４のｍビット信号を選択する。ライン４６４および４６６の信号は、ライン４１４ａで元のｎビット信号に組み合わされ、次に、クロスバーポート４１２ａに供給される。要約すると、非ロックステップモードでは、送信論理回路４３０ａが出力したｎビット信号は、クロスバーポート４１２ａに提供される。
【００５９】
次に、ロックステップ論理回路４０６がロックステップモードで動作し、したがって、ロックステップ選択ライン４４０ａに値１を出力する時の図４Ｂに示す回路部のオペレーションを考察する。ロックステップ論理回路４０６は、ｍビット信号をライン４７２に出力する。このｍビット信号は、ライン４５４のｍビット信号と同じビットフィールド（例えば、有効、有害、およびウィルス）を含む。一方、コア４０２ｂがマスタコアである場合に、ライン４７２のｍビット信号はコア４０２ｂから得られていることがあるので、ライン４５４および４７２のｍビット信号の値は異なることがある。上記に参照した「Lockstep Error Signaling」という発明の名称の特許出願でより詳細に説明されているように、ライン４５４および４７２のｍビット信号の値も、例えば、ロックステップ論理回路４０６がロックステップエラーを検出してそのエラーをライン４７２のｍビット信号で伝えた場合に異なることがある。ライン４４０ａの１の値の選択信号の受信に応答して、マルチプレクサ４６２は、ライン４７２からのｍビット信号をライン４６６に出力する。
【００６０】
ライン４５６の（ｎ−ｍ）ビット信号は、遅延回路４５８（１つまたは２つ以上のステージングラッチ等）に提供され、遅延回路４５８は、その信号を遅延させたものをマルチプレクサ４６０に提供する。遅延回路４５８によって導入される遅延は、（ロックステップ論理回路４０６によって導入される）ライン４５４および４７４のｍビット信号間の遅延とほぼ等しくなるように較正される。ライン４４０ａの１の値の選択信号の受信に応答して、マルチプレクサ４６０は、遅延した（ｎ−ｍ）ビット信号をライン４６４に出力する。ライン４６４および４６６の信号は、ライン４１４ａでｎビット信号に組み合わされ、次に、クロスバーポート４１２ａに提供される。要約すると、ロックステップモードでは、送信論理回路４３０ａが出力したｎビット信号の一部は、遅延されてクロスバーポート４１２ａに提供される一方、クロスバーポート４１２ａに提供されるこの信号の残りの部分は、ロックステップ論理回路４０６から得られる。それによって、ロックステップ論理回路４０６がｎビット信号全体をコア４０２ａへ送信する必要はなくなり、対応する配線も同様である。
【００６１】
上述したように、エラー検出／制御エンジン３１０（図３）は、有限状態マシンを実施することができる。図５を参照して、本発明の一実施の形態によるエンジン３１０のオペレーションを示す有限状態マシン図が示されている。図５において、円は、有限状態マシンの状態を表し、対応する状態名でラベル付けされている一方、アークは、状態間の遷移を表し、対応する状態遷移をトリガする入力でラベル付けされている。図５に示す状態マシンを実施できる図１Ａ、図３、および図４に示す実施の形態のコンポーネントについて図５を説明することにする。以下の説明は、ロックステップ論理回路１０６およびロックステップ論理回路４０６の双方に言及することができ、同様に、コア１０２ａ〜１０２ｂおよびコア４０２ａ〜４０２ｂに言及することができるが、当業者には、以下の説明で説明する組み合わせた特徴を有するロックステップ論理回路およびコアをどのように実施するかが理解されよう。
【００６２】
【表１】
2005302020.tif 000003
【００６３】
表１は、図５に示す状態のそれぞれにおけるロックステップ論理回路４０６の出力を示している。表１の左端の列は、図５に示す状態を列挙している。各状態に対応する行は、（１）エンジン３１０が、その状態にある間にロックステップチェックを実行するかどうか、および、（２）その状態にある間に、どの信号がエンジン３１０によって出力されるか、を示している。表１の各行について、対応する状態の説明と共により詳細に説明することにする。
【００６４】
図３を参照して、リセットライン１２８は、エンジン３１０のリセット入力端子に接続されることに留意されたい。リセットライン１２８のアサートによって、エンジンはリセット状態５０２に入る。エンジン３１０は、リセットライン１２８がアサートされている限り、リセット状態５０２に留まる（アーク５０４）。リセットライン１２８は、従来のリセット回路機構（図示せず）またはエンジン３１０をリセットする他の任意のコンポーネントに接続することができる。表１に「リセット」とラベル付けされた行に示すように、リセット状態５０２にある間、エンジン３１０は、（「ロックステップチェック有効」とラベル付けされた列に０によって示すように）ロックステップチェックを実行しない。
【００６５】
「コア０へのロックステップエラー」および「コア１へのロックステップエラー」とラベル付けされた列は、エンジン３１０がＭＣＡライン１２０ａ〜１２０ｂでそれぞれコア１０２ａ〜１０２ｂへロックステップエラーを信号で伝えるかどうかを示す。表１に「リセット」とラベル付けされた行に示すように、リセット状態５０２にある間、エンジン３１０は、コア１０２ａ〜１０２ｂのいずれかへロックステップエラーを信号で伝えない。
【００６６】
次に、表１の「コア０」とラベル付けされた列について考察する。この列は、「マルチプレクサ選択１」および「マルチプレクサ選択２」とラベル付けされた２つの部分列を含む。これらの部分列は、ロックステップ論理回路４０６がライン４４０ａおよび４４４ａでそれぞれマルチプレクサ４３４ａおよび４４２ａへ送信するマルチプレクサ選択信号に対応する。表１に「リセット」とラベル付けされた行に示すように、リセット状態５０２にある間、エンジン３１０は、双方のライン４４０ａおよび４４４ａに０を出力し、それによって、送信論理回路４３０ａの出力を受信ポート４１２ａへ通し、受信論理回路４３２ａにポート４１２ａからの入力を受信させる。同様に、（表１の「コア１」列によって示す）コア４０２ｂについても、リセット状態５０２にある間、エンジン３１０は、双方のライン４４０ｂおよび４４４ｂに０を出力し、それによって、送信論理回路４３０ｂの出力を受信ポート４１２ｂへ通し、受信論理回路４３２ｂにポート４１２ｂからの入力を受信させる。
【００６７】
図３を再び参照して、ロックステップイネーブルライン１３０がエンジン３１０のロックステップイネーブル入力端子に接続されることを思い出されたい。リセットライン１２８がディアサートされた時にロックステップイネーブルライン１３０をディアサートすることによって、エンジン３１０は、非ロックステップモード状態５０８に入り（アーク５０６）、非ロックステップモード状態５０８において、エンジン３１０は、上述したように非ロックステップモードで動作する。リセットライン１２８がアサートされると、エンジン３１０はリセット状態５０２に戻る（アーク５１２）。
【００６８】
表１の「非ロックステップモード」とラベル付けされた行を参照すると、非ロックステップモード状態５０８にある間、エンジン３１０は、（１）ロックステップチェックを実行せず、（２）コア４０２ａ〜４０２ｂのいずれにもロックステップエラー信号を送信せず、（３）マルチプレクサ４４２ａ〜４４２ｂおよび４３４ａ〜４３４ｂへの選択入力のすべてにおいて０の選択値を送信する。
【００６９】
リセットライン１２８がディアサートされた時にロックステップイネーブルライン１３０をアサートすることによって、エンジン３１０は、ロックステップモード状態５１６に入り（アーク５１４）、ロックステップモード状態において、エンジン３１０は、上述したようにロックステップモードで動作する。表１の「ロックステップモード」とラベル付けされた行を参照すると、ロックステップモード状態５１６にある間、エンジン３１０は、（１）ロックステップチェックを実行し、（２）コア４０２ａ〜４０２ｂのいずれにもロックステップエラー信号を送信せず、（３）マルチプレクサ４３４ａおよび４４２ａへ１の選択値を送信し、（４）マルチプレクサ４４２ｂへ２の選択値を送信する。これらの特定の値は、例示のために、コア０（例えば、コア４０２ａ）がロックステップモードでマスタコアであると仮定したものである。
【００７０】
次に、表１に示すように、ロックステップモードでロックステップ論理回路４０６が送信したマルチプレクサ選択値のそれぞれについて考察する。まず、「マルチプレクサ選択１」列を考えると、１の値がライン４４０ａで送信されることによって、マルチプレクサ４３４ａは、その出力として、ロックステップ論理回路４０６がライン４４８ａで送信した信号を選択する。この信号は、どちらのコアが、現在、マスタコアとして選択されていても、そのコアからの出力となる。１の値がライン４４４ａで送信されることによって、マルチプレクサ４４２ａはその中央の入力端子を選択する。この中央の入力端子は、クロスバーポート４１２ａからの入力を遅延させたものを受信するものである。表１の「コア１」列の「マルチプレクサ選択１」部分列の「Ｘ」は、ロックステップ論理回路４０６が選択ライン４４０ｂに任意の値を出力できることを示す。その理由は、図４Ａに示す例では、ロックステップ論理回路４０６がポート４１２ａを通じて通信するからである。
【００７１】
次に、表１の「ロックステップモード」行の「マルチプレクサ選択２」列を考えると、１の値がライン４４４ａで送信されることによって、マルチプレクサ４４２ａは、その中央の入力端子を選択する。この中央の入力端子は、ポート４１２ａからの入力を遅延させたものを受信するものである。２の値をライン４４４ｂで送信することによって、マルチプレクサ４４２ｂは、その左端の入力端子を選択する。この左端の入力端子は、ポート４１２ａからの入力を受信するものである。
【００７２】
リセットライン１２８もロックステップ不一致ライン３０８もアサートされていない間、エンジン３１０がロックステップモード状態５１６にあり、かつ、エンジンがコア４０２ｂから（ライン１１６ｂで）エラー信号を受信すると、エンジン３１０は、「Ｃ０のみ」と呼ばれるエラー状態５２４に入る（アーク５２２）。その理由は、この状態５２４では、エンジン３１０が、コア４０２ａ（コア０）をマスタコアとして選択し、専らコア４０２ａを通じて入力および出力を送信するからである。
【００７３】
表１の「Ｃ０のみ」とラベル付けされた行を参照して、「Ｃ０のみ」状態５２４にある間、エンジン３１０は、（１）ロックステップチェックを実行せず、（２）ロックステップエラー信号をコア４０２ａ〜４０２ｂのいずれにも送信せず、（３）マルチプレクサ４３４ａおよび４４２ａへ１の選択値を送信する。「Ｃ０のみ」状態５２４は、図２Ａのステップ２２２〜２３８について上述した「非保護モード」を実施する状態の一例である。これらのマルチプレクサの選択値によって、コア４０２ａはクロスバーポート４１２ａと双方向で通信できることが、上記説明から理解されるべきである。表１の「Ｃ０のみ」列の「コア１」列の「Ｘ」値は、ロックステップ論理回路４０６が選択ライン４４０ｂおよび４４４ｂに任意の値を出力できることを示す。その理由は、「Ｃ０のみ」状態５２４にある間、ロックステップ論理回路４０６が専らコア４０２ａとのみ通信するからである。
【００７４】
エンジン３１０は、リセットライン１２８がアサートされない限り、「Ｃ０のみ」状態５２４に留まる（アーク５２６）。エンジン３１０が「Ｃ０のみ」状態５２４にある間、リセットライン１２８がアサートされると、エンジン３１０はリセット状態５０２に戻る。
【００７５】
リセットライン１２８もロックステップ不一致ライン３０８もアサートされていない間、エンジン３１０がロックステップモード状態５１６にあり、かつ、エンジンがコア４０２ａから（ライン１１６ａで）エラー信号を受信すると、エンジン３１０は、「Ｃ１のみ」と呼ばれるエラー状態５３２に入る（アーク５３０）。その理由は、この状態５３２では、エンジン３１０が、コア４０２ｂ（コア１）をマスタコアとして選択し、専らコア４０２ｂを通じて入力および出力を送信するからである。「Ｃ１のみ」状態５３２は、図２Ａのステップ２２２〜２３８について上述した「非保護モード」を実施する状態の別の例である。
【００７６】
表１の「Ｃ１のみ」とラベル付けされた行を参照して、「Ｃ１のみ」状態５３２にある間、エンジン３１０は、（１）ロックステップチェックを実行せず、（２）ロックステップエラー信号をコア４０２ａ〜４０２ｂのいずれにも送信せず、（３）マルチプレクサ４３４ｂおよび４４２ｂへ１の選択値を送信し、（４）マルチプレクサ４４２ｂへ２の選択値を送信する。
【００７７】
これらのマルチプレクサの選択値によって、コア４０２ｂはクロスバーポート４１２ａと双方向で通信することができる。より具体的に、送信論理回路４３０ｂの出力について考察する。この出力は、ロックステップ論理回路４０６の入力端子４３６ｂで受信される。ロックステップ論理回路４０６は、出力４３８ａにおいてこの信号をマルチプレクサ４３４ａへ再送信する。１の選択値がロックステップ論理回路によってライン４４０ａで送信されることによって、マルチプレクサ４３４ａは、送信論理回路４３０ｂの出力をポート４１２ａへ送信する。次に、受信論理回路４３２ｂへの入力経路について考察する。２の選択値がロックステップ論理回路４０６によってライン４４４ｂで送信されることによって、マルチプレクサ４４２ｂはその左端の入力端子を選択する。この左端の入力端子はポート４１２ａに接続されたものである。それによって、受信論理回路４３２ｂは、ポート４１２ａからの入力を受信する。
【００７８】
エンジン３１０は、リセットライン１２８がアサートされない限り、「Ｃ１のみ」状態５３２に留まる（アーク５３４）。エンジン３１０が「Ｃ１のみ」状態５３２にある間に、リセットライン１２８がアサートされると、エンジン３１０はリセット状態５０２に戻る。
【００７９】
エンジン３１０がロックステップモード状態５１６にある間に、ロックステップ不一致ライン３０８がアサートされ（ロックステップエラーを示す）、かつ、リセットライン１２８がアサートされない場合、エンジン３１０はロックステップエラー状態５４０に入る（アーク５３８）。表１の「ロックステップエラー」とラベル付けされた行を参照して、この状態５４０にある間、エンジン３１０は、（１）ロックステップチェックを実行せず、（２）ロックステップエラー信号をコア４０２ａ〜４０２ｂの双方へ送信し、（３）マルチプレクサ４３４ｂおよび４４２ｂへ１の選択値を送信する。エラー信号をコア４０２ａ〜４０２ｂへ送信することによって、コア４０２ａ〜４０２ｂは、自身のリセットまたは他の適切な動作を試みること、および、これらの特定の選択値をマルチプレクサ４４２ａ〜４４２ｂおよび４３４ａ〜４３４ｂへ送信することによって、コア４０２ａは、「Ｃ０のみ」状態５２４と同じようにポート４１２ａと双方向で通信できることが、上記説明から理解されるべきである。
【００８０】
エンジン３１０は、リセットライン１２８がアサートされない限り、「ロックステップエラー」状態５４０に留まる（アーク５４２）。エンジン３１０が「ロックステップエラー」状態５４０にある間、リセットライン１２８がアサートされると、エンジン３１０はリセット状態５０２に戻る。
【００８１】
本発明の利点の中には以下の１つまたは２つ以上がある。本明細書に開示した技法は、非同期ポイントツーポイントリンクを有するクロスバーと共に使用することができ、それによって、バスベースのアーキテクチャによってロックステップ回路機構に通常課される厳しいタイミング要件を順守する必要を回避することができる。特に、ＸＯＲゲート３０６および／またはエラー制御／検出エンジン３１０は、従来の共有バスが許容しないポート１１２を介した通信に遅延を導入することができる。その結果、共有バスと共に使用することを目的としたロックステップ論理回路よりも高速、容易、かつ安価にロックステップ論理回路１０６を実施することができる。
【００８２】
通常、クロスバーに関連してタイミング要件が緩和されることのさらなる利点は、任意のクロックサイクル数の間、コア１０２ａ〜１０２ｂからのデータを（例えば、ラッチ３１８ａ〜３１８ｂを使用して）ロックステップ論理回路１０６の内部にラッチできるということである。このようなデータのラッチは、ロックステップ論理回路１０６がロックステップモードで動作する時に小さな遅延を導入するが、このような遅延によって、エンジン３１０をより単純に実施できる。それによって、全体の設計コストを削減することができる。
【００８３】
さらに、共有システムバスは、通常、数百個に及ぶことが多い多数の外部ピンを有し、これらのピンにコンポーネント（ロックステップ回路機構等）を接続しなければならない。このような回路機構の配線の設計および実施は、多くの時間を要し、多大の費用を要する可能性がある。これに対して、クロスバーポート１１２は、相対的に少ないビット数（例えば、データ用に３２ビット、制御用に１０ビット）を有することができ、それによって、ロックステップ論理回路１０６をポート１１２に接続する配線の設計および実施が簡単化される。
【００８４】
さらに、図４Ａに示す実施の形態によって、クロスバーポートを追加してロックステップ論理回路４０６に割り当てることなく、ロックステップ論理回路４０６を提供することができる。このような実施の形態では、ロックステップモードにある間、ロックステップ論理回路４０６は、コア４０２ａ〜４０２ｂの一方に接続された既存のポートを通じてクロスバー４０８と通信する。ロックステップ論理回路４０６が非ロックステップモードにある時、コア４０２ａ〜４０２ｂは、ロックステップ論理回路４０６による干渉なしに、コア４０２ａ〜４０２ｂのそれぞれのクロスバーポート４１２ａ〜４１２ｂと直接通信を継続することができる。その結果、クロスバーポートをロックステップ論理回路４０６に個別に割り当てる必要なく、クロスバーポートのすべてをマイクロプロセッサコアに割り当てることができる。
【００８５】
さらに、図４Ｂに示す実施の形態は、コア４０２ａ〜４０２ｂが出力した信号のサブセットのみをロックステップ論理回路４０６に提供するのに使用できる技法の一例を実証する。このような技法によって、コア４０２ａ〜４０２ｂをロックステップ論理回路４０６に接続するのに必要な配線量が削減され、それによって、ロックステップ論理回路４０６をサポートするのに必要な配線が簡単化される。したがって、このような技法によって、より小さな面積で、かつ、より低コストで本発明の実施の形態を実施することができる。
【００８６】
上記では、本発明を特定の実施の形態の点から説明してきたが、上記実施の形態は、単なる例示として提供され、本発明の範囲を制限するものでもなければ、画定するものでもないことが理解されるべきである。他のさまざまな実施の形態も特許請求の範囲内に含まれる。他のさまざまな実施の形態には、次のものが含まれるが、これらに限定されるものではない。例えば、本明細書で説明した要素およびコンポーネントをさらに別のコンポーネントに分割することもできるし、結合して、同じ機能を実行する少ない個数のコンポーネントを形成することもできる。
【００８７】
図１Ａには６つのリンク１１０ａ〜１１０ｆが示されるが、クロスバー１０８は任意の個数のリンクを有することができる。リンク１１０ａ〜１１０ｆは、コア１０２ａ〜１０２ｂに対して非同期とすることができる。すなわち、リンク１１０ａ〜１１０ｆおよびコア１０２ａ〜１０２ｂは、互いに対して異なるクロック周波数で動作することができる。さらに、リンク１１０ａ〜１１０ｆも互いに対して非同期とすることができる。図１Ａのロックステップ論理回路１０６およびクロスバー１０８は、コア１０２ａ〜１０２ｂと同じチップ上に存在するが、これは本発明の要件ではない。
【００８８】
ＸＯＲゲート３０６は、図３に示す実施の形態では、コア１０２ａ〜１０２ｂの出力を比較するのに使用されるが、ＸＯＲゲート３０６は比較器の単なる一例にすぎない。より一般的には、任意の比較機能を実施する任意のコンポーネントを、コア１０２ａ〜１０２ｂの出力を比較するのに使用することができる。
【００８９】
図１Ａにはクロスバー１０８を示すが、このクロスバーはスイッチングファブリック（システムファブリックとも呼ばれる）の単なる一例にすぎない。スイッチングファブリックは、複数の入力ポートおよび複数の出力ポートを含み、かつ、入出力ポート対間で任意のポイントツーポイントリンクを作成できるものである。クロスバーポート以外のスイッチングファブリックを本発明の実施の形態と共に使用することもできる。
【００９０】
本明細書で図示した実施の形態のさまざまな接続（ライン１１４ａ〜１１４ｂ、１１６ａ〜１１６ｂ、および１１８ａ〜１１８ｂ等）は、上記では、個別のラインとして説明することができるが、このような各接続は、関連した信号を運ぶのに必要かまたは望ましい場合には、任意の個数のラインを含むことができる。さらに、このような接続は、任意の通信プロトコルを使用して、信号をシリアルに伝送することもできるし、パラレルに伝送することもできる。
【００９１】
ロックステップ論理回路１０６は、カスタム設計されたアナログ回路機構もしくはデジタル回路機構、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コンピュータハードウェア、コンピュータソフトウェア、もしくはコンピュータファームウェア、またはそれらの任意の組み合わせで実施することができる。
【図面の簡単な説明】
【００９２】
【図１Ａ】本発明の一実施の形態に従ってロックステップで複数のマイクロプロセッサコアを動作させるシステムのブロック図である。
【図１Ｂ】本発明の一実施の形態に従ってロックステップモードまたは非ロックステップモードのいずれかで動作する図１Ａのシステムが実行する方法のフローチャートである。
【図２Ａ】本発明の一実施の形態において図１Ａのロックステップ論理回路が実行する方法のフローチャートである。
【図２Ｂ】本発明の一実施の形態においてロックステップマイクロプロセッサコアが実行する方法のフローチャートである。
【図２Ｃ】本発明の一実施の形態に従ってロックステップエラーモードで図１Ａのロックステップ論理回路が実行する方法のフローチャートである。
【図３】本発明の一実施の形態による図１Ａのロックステップ論理回路を示すブロック図である。
【図４Ａ】本発明の一実施の形態によるロックステップ回路機構の概略図である。
【図４Ｂ】図４Ａに示すコア回路機構の代替的な実施の形態の概略図である。
【図５】本発明の一実施の形態による図３のエラー検出／制御エンジンのオペレーションを示す有限状態マシン図である。
【符号の説明】
【００９３】
１００  システム
１０２ａ、１０２ｂ  コア
１０４  マイクロプロセッサ
１０６  ロックステップ論理回路
１０８  クロスバー
１１０ａ〜１１０ｆ  リンク
１１２  ポート（クロスバーポート）
１１４ａ、１１４ｂ  ライン（データ／制御ライン）
１１６ａ、１１６ｂ  ライン（ＭＣＡライン）
１１８ａ、１１８ｂ  ライン（データライン）
１２０ａ、１２０ｂ  ライン（ＭＣＡライン）
１２４ａ、１２４ｂ  ライン（クロックライン）
１２６ａ、１２６ｂ  ポート（コアクロスバーポート）
１２８  リセットライン
１３０  ロックステップイネーブルライン
３０２、３２４、３２８  シンクロナイザ
３０４ａ、３０４ｂ  ライン
３０６  ＸＯＲゲート
３０８  ライン（ロックステップ不一致ライン）
３１０  エンジン（エラー検出／制御エンジン）
３１２  マルチプレクサ
３１４  ライン
３１６  出力
３１８ａ、３１８ｂ  ステージングレジスタ
３２２  ライン
３２６  ライン
３３０ａ、３３０ｂ  ライン
３３２ａ、３３２ｂ  ライン
３３８  ＡＮＤゲート
４０２ａ、４０２ｂ  コア
４０４  マイクロプロセッサ
４０６  ロックステップ論理回路
４０８  クロスバー
４１２ａ、４１２ｂ  ポート（クロスバーポート）
４１４ａ、４１４ｂ  ライン
４１８ａ、４１８ｂ  ライン（入力データライン）
４３０ａ、４３０ｂ  送信論理回路
４３２ａ、４３２ｂ  受信論理回路
４３４ａ、４３４ｂ  マルチプレクサ
４３６ａ、４３６ｂ  入力端子
４３８ａ、４３８ｂ  出力
４４０ａ、４４０ｂ  ライン（ロックステップ選択ライン）
４４１ａ、４４１ｂ  ライン
４４２ａ、４４２ｂ  マルチプレクサ
４４４ａ、４４４ｂ  ライン
４４６ａ、４４６ｂ  ライン
４４８ａ、４４８ｂ  ライン
４４９ａ、４４９ｂ  遅延回路
４５０ａ、４５０ｂ  シンクロナイザ
４５２  ライン
４５４  ライン
４５６  ライン
４５８  遅延回路
４６０  マルチプレクサ
４６２  マルチプレクサ
４６４  ライン
４６６  ライン
４７２  ライン
【図１Ａ】
2005302020.tif 000004
【図１Ｂ】
2005302020.tif 000005
【図２Ａ】
2005302020.tif 000006
【図２Ｂ】
2005302020.tif 000007
【図２Ｃ】
2005302020.tif 000008
【図３】
2005302020.tif 000009
【図４Ａ】
2005302020.tif 000010
【図４Ｂ】
2005302020.tif 000011
【図５】
2005302020.tif 000012