JP4182486B2 - フォールト・トレラント・コンピュータ・リセット方法及びそのシステム - Google Patents

フォールト・トレラント・コンピュータ・リセット方法及びそのシステム Download PDF

Info

Publication number
JP4182486B2
JP4182486B2 JP2004367749A JP2004367749A JP4182486B2 JP 4182486 B2 JP4182486 B2 JP 4182486B2 JP 2004367749 A JP2004367749 A JP 2004367749A JP 2004367749 A JP2004367749 A JP 2004367749A JP 4182486 B2 JP4182486 B2 JP 4182486B2
Authority
JP
Japan
Prior art keywords
module
reset
command
cpu
request signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004367749A
Other languages
English (en)
Other versions
JP2006172391A (ja
Inventor
晋樹 阿部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2004367749A priority Critical patent/JP4182486B2/ja
Priority to US11/304,575 priority patent/US8041995B2/en
Priority to CA002530555A priority patent/CA2530555A1/en
Priority to EP05027796A priority patent/EP1672504A3/en
Priority to AU2005246936A priority patent/AU2005246936A1/en
Priority to CNA2005101369122A priority patent/CN1794135A/zh
Publication of JP2006172391A publication Critical patent/JP2006172391A/ja
Application granted granted Critical
Publication of JP4182486B2 publication Critical patent/JP4182486B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1679Temporal synchronisation or re-synchronisation of redundant processing components at clock signal level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • G06F11/1645Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components and the comparison itself uses redundant hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、複数のモジュールを備えるフォールト・トレラント・コンピュータをリセットするためのフォールト・トレラント・コンピュータ・リセット方法及びフォールト・トレラント・コンピュータ・リセット・システムに関する。
高度な信頼性を提供するコンピュータとして、フォールト・トレラント・コンピュータがある。フォールト・トレラント・コンピュータは、システムを構成するハードウェア・モジュールを二重化、または多重化し、各々全てのモジュールを同期動作させ、たとえある部位で故障が発生したとしても、該モジュールを切り離し、正常なモジュールで処理を続行することにより、耐故障性を向上させたコンピュータである。
フォールト・トレラント・コンピュータの基本構成は、CPUやメモリ、I/O・デバイスといった二重化、三重化されるハードウェア・モジュールと、これらモジュールと接続され、同期動作処理、故障時の切り替え制御などを行うフォールト・トレラント制御部(以下、「FT制御部」という。)からなる。一例としてCPU、メモリ、I/O・デバイスを二重化したシステムを図1に示す。この図ではCPU(群)901とメイン・メモリ902が一つのCPU・サブシステム903−1を構成し、これと全く同じ構成の、もう一つのCPU・サブシステム903−2により二重化されている。同様に、同一構成のI/O・デバイス(群)も二重化されI/O・サブシステム904を構成する。FT制御部はそれらの中心に位置し、各々のモジュール(CPU・サブシステム903−1、903−2、I/O・サブシステム904)を制御し、CPU・サブシステム903−1、903−2の両系同期動作の維持、故障の検出と、故障モジュールの切り離し制御を行う。
一般的に、フォールト・トレラント・コンピュータは各モジュールをハードウェアで二重化制御する部分と、ソフトウェアで二重化制御する部分とに分かれる。
例えば、CPU及びメモリといった、CPU・サブシステムはそれ自身ソフトウェアが動作する基盤であり、これらはハードウェアで二重化制御する必要がある。このためCPU・サブシステム内でエラーが発生した場合、ハードウェア(FT制御部)が該当CPU及びメモリをシステムから切り離し、正常動作しているCPU及びメモリに影響を及ぼさないように制御を行う。
図1では2個のCPU・サブシステム903−1、903−2が存在するが、故障した側はFT制御部で論理的に切り離され、1個のCPU・サブシステム903−1(又は903−2)とI/O・サブシステム904で動作を継続する。
一方、I/O・デバイスの故障の場合、それを検出したFT制御部が、I/O・デバイスを制御しているソフトウェア(以下、「I/O・デバイス・ドライバ」という。)に対し、エラー通知を行うことで、I/O・デバイスの切り替えをソフトウェアで行うことが可能である。この場合、I/O・デバイス・ドライバは故障したI/O・デバイスの使用を中止し、代わって二重化されている別のI/O・デバイスを使用することになる。
これらはI/O・サブシステム904内での、使用I/O・デバイス905の切り替えとなる。
フォールト・トレラント・コンピュータのCPU・サブシステム903−1、903−2は、全く同一のクロックで動作する必要があり、また、CPUの動作を開始するためのリセット解除のタイミングの同一性を図ることも重要である。
従来の手法、例えば特許文献1「コンピュータシステムの再同期リセット処理方法」では、双方のプロセッサに接続されている系間同期部が同時にCPUへリセットを発行することが記載されている。
特開平9−128258号公報 特開平7−073059号公報
特許文献1に記載されているシステムでは一つの系間制御部がリセットを発行するため、複数のCPUへ同時にリセットを発行することは容易であるが、これにより系間同期部が1つしかないため、これが故障した場合、システムが起動しなく恐れがある。特に系間制御部を二重化した場合については触れられていないため、どのようにCPUへ同時にリセットを発行するのかも触れられてはいない。
またその他の文献においても複数のCPUへの同期リセット制御に関して詳細に触れたものは少ない。その理由として、CPUの同期手法はリセットが起点ではなく、例えば、特許文献2のように、割り込みの同期性を起点に求めているからである。例えば従来多く用いられる方法としては、CPU上で動作するオペレーティングシステムやシステム・ソフトがあるチェック・ポイントで停止し、同期制御部から入力されるインターラプトなどを契機に同期動作を開始するというものがある。
しかしこの方法は、CPUの内部状態を完璧に把握し、チェック・ポイントで停止した時点でCPUの内部状態が全く同一であることを保証しなければならない。さもなければ、例え同時に割り込みがCPUに印加されたとしても、膨大なCPUの内部論理が全く同じ状態で保たれているとは限らず、その後の動作の同期性は保証しきれない。
つまり、オペレーティングシステムやシステム・ソフトウェアにより、CPUが割り込み待ちのためのループ処理を行っている場合においても、外部から見ればCPU停止状態であっても、依然としてCPUはオペレーティングシステム及びシステム・ソフトウェアのループ命令の処理、インターラプト待ちのためのシステム・バス監視などなど、多くの論理が動作しているからである。また、CPU内部では、高速化のために予測処理を行うが、各CPU毎に予測内容が異なることも生じうる。更に、メインメモリのリフレッシュのタイミング或いはリフレッシュアドレスがCPUサブシステム間で異なるだけでも、各CPU毎に内部の状態が異なる場合も生じうる。
旧式のCPUでは割り込みを起点とした同期方法は有効かもしれないが、近年のCPUの内部論理は巨大化、複雑化を増しており、一旦動作を開始したCPUがソフトウェアによって全く同一の状態に遷移させることは事実上不可能となっている。従ってこの問題を解決するには、CPU内部の全論理をリセットする、リセット信号を完全に同期化してCPUへ入力する以外に方法はない。
そこで、本発明は、フォールト・トレラント・コンピュータをモジュール間で完全に同期してリセットすることを可能とするフォールト・トレラント・コンピュータ・リセット方法及びフォールト・トレラント・コンピュータ・リセット・システムを提供することを目的とする。
本発明の第1の観点によれば、複数のモジュールを備えるフォールト・トレラント・コンピュータをリセットするための方法であって、何れか1つのモジュールでリセット要求信号を生成するステップと、前記リセット要求信号を第1のリセット要求信号と第2の要求リセット信号に分岐させるステップと、前記第2のリセット要求信号を他のモジュールに伝達するステップと、前記第2のリセット要求信号を他のモジュールに伝達するのに要する時間だけ、前記第1のリセット要求信号を前記1つのモジュール内で遅延させるステップと、前記1つのモジュール内で遅延された前記第1のリセット要求信号を基に生成された第1のCPUリセット信号で前記1つのモジュールに含まれる少なくとも1つのCPUをリセットするステップと、前記他のモジュールに伝達された前記第2のリセット要求信号を基に生成された第2のCPUリセット信号で前記他のモジュールに含まれる少なくとも1つのCPUをリセットするステップと、を備えることを特徴とする方法が提供される。
上記の方法において、前記1つのモジュールにおいて、ロック・コマンドを生成するステップと、前記ロック・コマンドを前記1つのモジュールのI/O・インターフェース・ブリッジに伝達するステップと、前記ロック・コマンドを前記他のモジュールのI/O・インターフェース・ブリッジに伝達するステップと、前記ロック・コマンドを受けた前記1つのモジュールのI/O・インターフェース・ブリッジにおいて、インバウンド・リクエストをロックすると共に、前記ロック・コマンドを受ける前の全てのノン・ポスティド・アウトバウンド・リクエストに対応するノン・ポスティド・アウトバウンド・リクエスト・コンプリーションの返信が完了したならば、第1のロック・コンプリーションを生成するステップと、前記ロック・コマンドを受けた前記他のモジュールのI/O・インターフェース・ブリッジにおいて、インバウンド・リクエストをロックすると共に、前記ロック・コマンドを受ける前の全てのノン・ポスティド・アウトバウンド・リクエストに対応するノン・ポスティド・アウトバウンド・リクエスト・コンプリーションの返信が完了したならば、第2のロック・コンプリーションを生成するステップと、を更に備え、前記1つのモジュールのI/O・インターフェース・ブリッジにおいて前記第1のロック・コンプリーションが生成され、且つ、前記他のモジュールのI/O・インターフェース・ブリッジにおいて前記第2のロック・コンプリーションが生成されたならば、前記リセット要求信号を生成するようにしてもよい。
上記の方法において、前記1つのモジュール内で遅延された前記第1のリセット要求信号を基に生成されたリフレッシュ・コマンド及びリフレッシュ・カウンタ・リセット信号で、前記1つのモジュールのメイン・メモリをリフレッシュするステップと、
前記他のモジュールに伝達された前記第2のリセット要求信号を基に生成されたリフレッシュ・コマンド及びリフレッシュ・カウンタ・リセット信号で、前記他のモジュールのメイン・メモリをリフレッシュするステップと、を更に備えるようにしてもよい。
上記の方法において、前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドと前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドとが一致するか否かを判断するステップと、両コマンドが一致しない場合に、前記1つのモジュールに含まれる前記少なくとも1つのCPU及び前記他のモジュールに含まれる前記少なくとも1つのCPUを再度リセットするステップと、を更に備えるようにしてもよい。
上記の方法において、前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドを前記1つのモジュールに伝達するステップと、前記コマンドを前記他のモジュールから前記1つのモジュールに伝達するのに要する時間だけ、前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドを遅延させるステップと、を更に備え、前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドと前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドとが一致するか否かを判断するステップでは、前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドであって遅延されたものと前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドであって伝達されたものとが一致するか否かを判断するようにしてもよい。
本発明の第2の観点によれば、複数のモジュールを備えるフォールト・トレラント・コンピュータをリセットするためのシステムであって、何れか1つのモジュールでリセット要求信号を生成する手段と、前記リセット要求信号を第1のリセット要求信号と第2のリセット要求信号に分岐させる手段と、前記第2のリセット要求信号を他のモジュールに伝達する手段と、前記第2のリセット要求信号を他のモジュールに伝達するのに要する時間だけ、前記第1のリセット要求信号を前記1つのモジュール内で遅延させる手段と、前記1つのモジュール内で遅延された前記第1のリセット要求信号を基に生成された第1のCPUリセット信号で前記1つのモジュールに含まれる少なくとも1つのCPUをリセットする手段と、前記他のモジュールに伝達された前記第2のリセット要求信号を基に生成された第2のCPUリセット信号で前記他のモジュールに含まれる少なくとも1つのCPUをリセットする手段と、を備えることを特徴とするシステムが提供される。
上記のシステムにおいて、前記1つのモジュールにおいて、ロック・コマンドを生成する手段と、前記ロック・コマンドを前記1つのモジュールのI/O・インターフェース・ブリッジに伝達する手段と、前記ロック・コマンドを前記他のモジュールのI/O・インターフェース・ブリッジに伝達する手段と、前記ロック・コマンドを受けた前記1つのモジュールのI/O・インターフェース・ブリッジにおいて、インバウンド・リクエストをロックすると共に、前記ロック・コマンドを受ける前の全てのノン・ポスティド・アウトバウンド・リクエストに対応するノン・ポスティド・アウトバウンド・リクエスト・コンプリーションの返信が完了したならば、第1のロック・コンプリーションを生成する手段と、前記ロック・コマンドを受けた前記他のモジュールのI/O・インターフェース・ブリッジにおいて、インバウンド・リクエストをロックすると共に、前記ロック・コマンドを受ける前の全てのノン・ポスティド・アウトバウンド・リクエストに対応するノン・ポスティド・アウトバウンド・リクエスト・コンプリーションの返信が完了したならば、第2のロック・コンプリーションを生成する手段と、を更に備え、前記1つのモジュールのI/O・インターフェース・ブリッジにおいて前記第1のロック・コンプリーションが生成され、且つ、前記他のモジュールのI/O・インターフェース・ブリッジにおいて前記第2のロック・コンプリーションが生成されたならば、前記リセット要求信号を生成するようにしてもよい。
上記のシステムにおいて、前記1つのモジュール内で遅延された前記第1のリセット要求信号を基に生成されたリフレッシュ・コマンド及びリフレッシュ・カウンタ・リセット信号で、前記1つのモジュールのメイン・メモリをリフレッシュする手段と、前記他のモジュールに伝達された前記第2のリセット要求信号を基に生成されたリフレッシュ・コマンド及びリフレッシュ・カウンタ・リセット信号で、前記他のモジュールのメイン・メモリをリフレッシュする手段と、を更に備えるようにしてもよい。
上記のシステムにおいて、前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドと前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドとが一致するか否かを判断する手段と、両コマンドが一致しない場合に、前記1つのモジュールに含まれる前記少なくとも1つのCPU及び前記他のモジュールに含まれる前記少なくとも1つのCPUを再度リセットする手段と、を更に備えるようにしてもよい。
上記のシステムにおいて、前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドを前記1つのモジュールに伝達する手段と、前記コマンドを前記他のモジュールから前記1つのモジュールに伝達するのに要する時間だけ、前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドを遅延させる手段と、を更に備え、前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドと前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドとが一致するか否かを判断する手段は、前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドであって遅延されたものと前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドであって伝達されたものとが一致するか否かを判断するようにしてもよい。
本発明の第3の観点によれば、複数のモジュールを備えるフォールト・トレラント・コンピュータで利用されるフォールト・トレラント・制御装置であって、リセット要求信号を生成するリセット要求信号生成手段と、前記リセット要求信号を第1のリセット要求信号と第2のリセット要求信号に分岐させる分岐手段と、前記第2のリセット要求信号を当該装置が含まれるモジュール以外のモジュールに含まれるフォールト・トレラント・制御装置に向けて伝達する伝達手段と、前記第2のリセット要求信号を当該装置が含まれるモジュール以外のモジュールに含まれるフォールト・トレラント・制御装置に伝達するのに要する時間だけ、前記第1のリセット要求信号を遅延させる第1遅延手段と、遅延された前記第1のリセット要求信号を基に生成された第1のCPUリセット信号で当該装置が含まれるモジュールに含まれる少なくとも1つのCPUをリセットするCPUリセット手段と、を備えることを特徴とする装置が提供される。
上記の装置において、ロック・コマンドを生成するロック・コマンド生成手段と、前記ロック・コマンドを当該装置に含まれるI/O・インターフェース・ブリッジに伝達する第1ロック・コマンド・伝達手段と、前記ロック・コマンドを当該装置が含まれるモジュール以外のモジュールに含まれるフォールト・トレラント・制御装置に含まれるI/O・インターフェース・ブリッジに向けて伝達する第2ロック・コマンド・伝達手段と、前記ロック・コマンドを受けた、当該装置に含まれるI/O・インターフェース・ブリッジにおいて、インバウンド・リクエストをロックすると共に、前記ロック・コマンドを受ける前の全てのノン・ポスティド・アウトバウンド・リクエストに対応するノン・ポスティド・アウトバウンド・リクエスト・コンプリーションの返信が完了したならば、第1のロック・コンプリーションを生成するロック・コンプリーション生成手段と、を更に備え、当該装置に含まれる前記I/O・インターフェース・ブリッジにおいて前記第1のロック・コンプリーションが生成され、且つ、当該装置が含まれるモジュール以外のモジュールに含まれる前記フォールト・トレラント・制御装置に含まれるI/O・インターフェース・ブリッジにおいて前記第1のロック・コンプリーションと同様な第2のロック・コンプリーションが生成されたならば、前記リセット要求信号生成手段は、前記リセット要求信号を生成するようにしてもよい。
上記の装置において、前記第1遅延手段で遅延された前記第1のリセット要求信号を基に生成されたリフレッシュ・コマンド及びリフレッシュ・カウンタ・リセット信号で、当該装置が含まれるモジュールに含まれるメイン・メモリをリフレッシュするリフレッシュ手段を更に備えるようにしてもよい。
上記の装置において、当該装置が含まれるモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドと当該装置が含まれるモジュール以外のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドとが一致するか否かを判断する一致判断手段と、両コマンドが一致しない場合に、当該装置が含まれるモジュールに含まれる前記少なくとも1つのCPUを再度リセットする再リセット手段と、を更に備えるようにしてもよい。
上記の装置において、前記コマンドを当該装置が含まれるモジュール以外のモジュールから当該装置が含まれるモジュールに伝達するのに要する時間だけ、当該装置が含まれるモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドを遅延させる第2遅延手段を更に備え、前記一致判断手段は、当該装置が含まれるモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドであって前記第2遅延手段により遅延されたものと当該装置が含まれるモジュール以外のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドであって伝達されたものとが一致するか否かを判断するようにしてもよい。
本発明によれば、第2のリセット要求信号を他のモジュールに伝達するのに要する時間だけ、第1のリセット要求信号を1つのモジュール内で遅延させるので、1つのモジュールに含まれる少なくとも1つのCPUを他のモジュールに含まれる少なくとも1つのCPUと同時にリセットすることが可能となる。
以下、図面を参照して本発明を実施するための最良の形態について詳細に説明する。
本発明のCPUリセット方法及びCPUリセットシステムは、フォールト・トレラント・コンピュータ・システムにおいて、多重化されたCPU・サブシステムのリセット信号を完全に同期してCPUへ入力することにより各系のCPUの同期動作を保証するものである。また、近年のCPUのリセットはクロックと同期しない非同期リセットを採用しているものが多く、場合によっては、クロック・ベースで同期的にリセットを入力したとしても、CPUの完全同期に至らない場合がある。この場合に備え、リセット解除後近傍のCPUからのリクエストを監視し、タイミングにずれを検出した場合は、直ちに再度リセットを入力し、同期性を高める機構を持つ。
さらにこれらリセット制御装置はCPU・サブシステム毎に存在しており、対故障性を強めた構成とすることが可能となっている。
図2に本発明の実施形態によるフォールト・トレラント・コンピュータ・リセット方法及びフォールト・トレラント・コンピュータ・リセットシステムを実現するフォールト・トレラント・コンピュータの基本構成図を示す。
図2のフォールト・トレラント・コンピュータは二重化システムであり、便宜的にプライマリ/セカンダリと区分けして呼ぶ。装置としては、故障個所の交換を可能とするため、プライマリ/セカンダリは別々のボードで構成される。
CPU・サブシステム121はCPU群(CPU101−1及びCPU101−2を含む)、メイン・メモリ102−1、102−2、FT制御部103−1、103−2のうちのリセット制御部を含む上半分の部分を備え、プライマリ/セカンダリでクロックも含め完全に同期して動作する。FT制御部103は、インテル(登録商標)・アーキテクチャでいうノース・ブリッジの機能部にフォールト・トレラント・コンピュータ・システムを実現するための機能部を追加したものである。
I/O・サブシステム122もプライマリ/セカンダリに分かれるが、両者は同じ構成を有する。また、I/O・サブシステム122は、I/O・デバイス群からなる。図2には、プライマリ側のI/O・デバイス群がI/O・デバイス105−1−1、105−1−2を備え、セカンダリ側のI/O・デバイス群がI/O・デバイス105−2−1、105−2−2を備える例を示している。各I/O・デバイスは同期動作はしておらず、両I/O・デバイス群とも故障の際は、ソフトウェアによって使用デバイスが切り替えられる。
FT制御部103−1とFT制御部103−2との間には、I/O・FT−リンク111−1、111−2が張られている。I/O・FT−リンク111−1は、主に、プライマリ側のCPUサブシステムからセカンダリ側のI/O・デバイスにアクセスするためのものであり、I/O・FT−リンク111−2は、主に、セカンダリ側のCPUサブシステムからプライマリ側のI/O・デバイスにアクセスするためのものであるが、これらは、他の用途にも用いられる。
これにより、FT制御部#1(103−1)から配下のI/O・デバイス#1a、b(105−1−1、105−1−2)に対するアクセスのみフォワードされ、両系のI/O・アクセスの同期チェックもI/O・コンパレータ208−1(図4参照)にフォワードされるI/O・アクセスの範囲に限られる。同様にFT制御部#2(103−2)はI/O・コンパレータ208−2配下のI/O・デバイス#2a、b(105−2−1、105−2−2)に対するアクセスの同期チェックを受け持つことになる。
したがって、本システムではI/O・アクセスの同期チェックはプライマリ系、セカンダリ系の間で分散的に行われることになる。
図3は、図2のシステムでの一方のCPUからの観点で、システムを図式化したものである。CPU・サブシステムは二重化されているが、I/O・サブシステムは各デバイスごとにソフトウェアで二重化されるため、図のような構成として見える
FT制御部103−1にはI/O・インターフェース・ブリッジ210−1が内蔵されており、FT制御部103−2にはI/O・インターフェース・ブリッジ210−2が内蔵されている。プライマリ系のCPU101−1は、セカンダリ系のI/O・インターフェース・ブリッジ210−2には、I/O・FT・リンク111−1を介してアクセスし、セカンダリ系のCPU101−2は、プライマリ系のI/O・インターフェース・ブリッジ210−1には、I/O・FT・リンク111−2を介してアクセスする。
図4はFT制御部103−1、103−2内の詳細図である。図4を参照して、プライマリ系を基準として説明を行うが、各部のサフィックス「−1」を「−2」に変更し、各部のサフィックス「−2」を「−1」に変更することにより、セカンダリ系を基準とした場合の説明とすることができる。
システム・バス・コントローラ201−1はシステム・バス202−1を介してCPU101−1からのリクエストに関連した制御を行う。受信したリクエストはルータ203−1へ送られる。また、I/O・デバイス105−1からのインバウンド・リクエスト(inbound request)や、アウトバウンド・リクエスト(outbound request)に対するコンプリーションはルータ203−1から受け付け、CPU101−1へ返す。ここで、一般的にCPUからI/O・デバイスへ向かうリクエストをアウトバウンド・リクエストと呼び、I/O・デバイスからCPU/メモリへ向かうリクエストをインバウンド・リクエストと呼ぶ。リード等のノン・ポスティド(non-posted)系リクエストに対し、その結果としてデータなどを伴う返事をコンプリーションと呼び、アウトバウンド・リクエストに対するコンプリーションをアウトバウンド・リクエスト・コンプリーション、インバウンド・リクエストに対するコンプリーションをインバウンド・リクエスト・コンプリーションと呼ぶことにする。
リセット・コントローラ204−1はルータ203−1からの指示で、CPU101−1へのリセット信号の供給を行う他、メモリ・コントローラ205−1に対する同期リセット指示を行う。
メモリ・コントローラ205−1はルータ203−1からルーティングされたメモリ・リクエストを基に、メイン・メモリ102−1に対するリクエストの発行を含むDRAM制御を行う。また、リセット・コントローラ204−1からの同期リセット指示により、即時DRAMリフレッシュと、リフレッシュ・カウンタのクリアを行う。
同期コマンド・ジェネレータ206−1はFT制御部103−1の内部のI/O・デバイスであり、CPU101−1からの指示により、特殊なコマンドをインバウンド・リクエストとして発行する。
同期コマンド・ジェネレータ206−1は、CPUの同期リセット・コマンドの発行も行う。
ルータ203−1はFT制御部103−1の内部を通過するリクエスト及びコンプリーションのルーティングを行う。各リクエスタからリクエストを受け取ると、そのリクエストに記述されているアドレスからルーティング先を決定し、決定されたルーティング先にそのリクエストを渡す処理を行う。
ルーティング先としては、メイン・メモリ102−1、CPU101−1、ローカル(自FT制御部103−1内の)I/O・インターフェース・ブリッジ207−1、リモート(反対側のFT制御部103−2内の)I/O・インターフェース・ブリッジ207−2、同期コマンド・ジェネレータ206−1、リセット・コントローラ204−1がある。
リクエスト及びコンプリーションは同期化しやすいようにアドレス/コマンド/データを一まとめにし、パケット化されてFT制御部103−1の内部及びI/O・FT−リンク111−1の内部を経由する。以後、リクエスト及びコンプリーションを単純にパケットと呼ぶ。
ルータ203−1は全て共通したフォーマットのパケットを受け付ける仕組みとなっており、各リクエスト又はコンプリーションのパケット化はシステム・バス・コントローラ201−1、メモリ・コントローラ205−1、I/O・インターフェース・ブリッジ207−1、同期コマンド・ジェネレータ206−1、LOB/RIB・I/O・FT−リンク・コントローラ208−1、LOB/RIB・I/O・FT−リンク・コントローラ209−1等のコントローラで行われる。なお、ここで、LOBは、ローカル・アウトバウンド・リクエストの略称であり、RIBは、リモート・インバウンド・リクエストの略称である。
アウトバウンド・リクエストがローカル・I/O・インターフェース・ブリッジ207−1へルーティングされる場合、ルータ203−1は自I/O・コンパレータ208−1へリクエストをルーティングする。
アウトバウンド・リクエストがリモート・I/O・インターフェース・ブリッジ207−2へルーティングされる場合、LOB/RIB・I/O・FT−リンク・コントローラ209−1へリクエストが渡され、さらにリモート側のROB/LIB・I/O・FT−リンク・コントローラ210−2を経由してリモート・I/O・インターフェース・ブリッジ207−2へリクエストが渡る。
各I/O・デバイス105−1からのインバウンド・リクエストはI/O・インターフェース・ブリッジ207−1及びLIB/ROB・I/O・FT−リンク・コントローラ210−1を経由してローカル・ルータ203−1、リモート・ルータ203−2又はその双方へ渡される。
なお、ローカル・ルータ203−1及びリモート・ルータ203−2へのルーティングはプライマリ系及びセカンダリ系が同期状態か非同期状態かにより異なる。
図5はLIB/ROB・I/O・FT−リンク・コントローラ210−1の内部の詳細図である。LIB/ROB・I/O・FT−リンク・コントローラ210−2は、LIB/ROB・I/O・FT−リンク・コントローラ210−1と同様なものであるが、ここでは、LIB/ROB・I/O・FT−リンク・コントローラ210−1を例に取り説明する。
リモート側から受信したパケットはFT−リンク・入力・コントローラ221で受信されデコーダ222でリクエスト/コンプリーション判断のためにデコードされる。
リモート側から受信したパケットは、アウトバウンド・リクエスト又はインバウンド・リクエスト・コンプリーションと判断された場合、I/O・コンパレータ208−1に渡され、最終的にはI/O・インターフェース・ブリッジ207−1を経由して各I/O・デバイス105−1にフォワードされる。
また、リモート側から受信したパケットは、インバウンド・リクエスト又はアウトバウンド・リクエスト・コンプリーションと判断された場合、ルータ203に渡され、最終的には、CPU・サブシステム121内のデバイスである、CPU101−1、メイン・メモリ102−1、リセット・コントローラ204−1の何れかにフォワードされる。
内部からのインバウンド・リクエストまたはアウトバウンド・リクエスト・コンプリーションのルーティングは3通りが考えられる。
(1)プライマリ系とセカンダリ系が完全同期しており、インバウンド・リクエストまたはアウトバウンド・リクエスト・コンプリーションを両方のCPU・サブシステムにフォワードする。
(2)プライマリ系とセカンダリ系は同期しておらず、自FT制御部103−1に接続されるCPU・サブシステムがアクティブ側であり、他FT制御部103−2に接続されるCPU・サブシステムがスタンバイ側であり、ローカルのI/O・インターフェース・ブリッジ207−1及びリモートのI/O・インターフェース・ブリッジ207−2からのリクエスト又はコンプリーションは自CPU・サブシステムのみにフォワードする。
(3)プライマリ系とセカンダリ系は同期しておらず、自FT制御部103−1に接続されるCPU・サブシステムがスタンバイ側であり、他FT制御部103−2に接続されるCPU・サブシステムがアクティブ側であり、ローカルのI/O・インターフェース・ブリッジ207−1及びリモートのI/O・インターフェース・ブリッジ207−2からのリクエスト又はコンプリーションはリモート側のCPU・サブシステムのみにフォワードする。
これらの状態は、アクティブ/スタンバイ・レジスタ223と同期/非同期・状態・レジスタ224に設定される。
両系が完全状態の(1)の場合は、I/O・デバイス105−2からのリクエスト又はコンプリーションは、アービタ225を通過後、ディレイ・コントローラ226とFT−リンク・出力・コントローラ227の双方に渡される。結果的に、I/O・デバイス105−2からのリクエスト又はコンプリーションは双方のFT制御部103−1、103−2のルータ203−1、203−2に渡される。但し、フォールト・トレラント・コンピュータゆえ、ルータ203−1、203−2を含むCPU・サブシステムは完全に同期しており、I/O・デバイス105−2からのリクエスト又はコンプリーションも完全同期してルータ203−1、203−2に渡る必要がある。
他系へのパケットのフォワードはI/O・FT−リンク111−2を介するため、ある程度のタイムラグが発生する。このために、自系のルータ203−1へパケットが渡る場合は、ディレイ・コントローラ226を介することになる。このタイムラグのことをフライト・タイムという。
LIB/ROB・I/O・FT−リンク・コントローラ209は、LIB/ROB・I/O・FT−リンク・コントローラ210の構成要素のうち、FT−リンク・入力・コントローラ221とFT−リンク・出力・コントローラ227のみを含む。
図6はディレイ・コントローラの詳細図である。
アービタ225を通過したリクエスト及びコンプリーションのパケットは毎クロックごとにシフトするFIFO構成のシフトレジスタ231に格納される。
スイッチ233は、シフトレジスタ231の複数のノードのうちのI/O・FT−リンク・フライト・タイム・レジスタ232に格納されたフライト・タイムに対応したノードからのリクエスト又はコンプリーションを選択して、ルータ203−1へ渡す。
つまり、ルータ203−1へ渡されるリクエスト又はコンプリーションは、I/O・FT−リンク111−2を介してルータ203−2へ渡されるリクエスト又はコンプリーションと同一の時間(フライト・タイム)だけ遅延される。
なお、フライト・タイムは、実装に依存するが、例えば、工場出荷時に、実装状態でフライト・タイムを測定し、測定されたフライト・タイムを所定の領域(EEPROM等)に格納しておき、システム起動時にI/O・FT−リンク・フライト・タイム・レジスタ232に設定される。
以上の機能により、同期状態では、インバウンド・リクエスト又はアウトバウンド・リクエスト・コンプリーションのパケットが完全に同一タイミングでルータ203−1、203−2に渡ることになる。
仮にフライト・タイムが4Tだった場合のパケットのタイミング・チャートを図7に示す。なお、ローカル・FT−リンク・出力・コントローラ227から出力されたパケットは、リモート・FT−リンク・入力・コントローラ222で、クロックと同期するので、フライト・タイムは、クロック周期Tの整数倍である。
プライマリ系とセカンダリ系が非同期状態であり、プライマリ系がアクティブである(2)の場合、図5の符号228に示す通り、パケットはアービタ225から直接ルータ203へフォワードされ、FT−リンク・出力・コントローラ227には渡されない。
逆に、プライマリ系とセカンダリ系が非同期状態であり、セカンダリ系がアクティブである(3)の場合、自系のCPU・サブシステムはスタンバイ状態としてシステムから切り離された状態であるため、FT−リンク・出力・コントローラ227のみにパケットをフォワードする。
図4に示すCPU・コンパレータ212−1、212−2はお互いのCPU・サブシステム間をCPU・FT−リンク213で接続し、CPUの発行するリクエスト情報をお互いに送受信し、同期性をチェックする部分である。図8にその詳細を示す。
CPUコンパレータ212は、I/O・FT−リンクの同期性を維持するディレイ・コントローラ(シフトレジスタ231、I/O・FT−リンク・フライト・タイム・レジスタ232及びスイッチ233を備える。)と同様な、ディレイコントローラ(シフトレジスタ241、CPU・FT−リンク・フライト・タイム・レジスタ242及びスイッチ243を備える。)を備える。自系のCPU101−1のコマンドは、1クロックごとにシフトを行うFIFO構成のシフトレジスタ241に積まれ、CPU・FT−リンク・フライト・タイム・レジスタ242に設定されたタイミングでシフトレジスタ241からスイッチ243により取り出され、チェッカ244に渡される。
なお、このフライト・タイムも、実装に依存するが、例えば、工場出荷時に、実装状態でフライト・タイムを測定し、測定されたフライト・タイムを所定の領域(EEPROM等)に格納しておき、システム起動時にCPU・FT−リンク・フライト・タイム・レジスタ242に設定される。
チェッカ244はCPU・FT−リンク213を経由してリモート系のCPUコマンドも受け取っている。チェッカ244は、プライマリ系とセカンダリ系で、同一タイミングで同一のCPUコマンドが発行されたかを監視する。
この機能は主に、CPU・リセット解除直後のCPUの同期性を確認するために使用され、リセット解除によるCPUの同期化が失敗したことがチェッカ244により確認された場合は、失敗の旨を直ちにローカルのリセット・コントローラ204へ通知し、再度CPUをリセットするよう促す。
I/O・インターフェース・ブリッジ207−1は、パケットを下位のI/O・インターフェースにフォワードする機能、または下位のI/O・デバイス105−1からのリクエスト又はコンプリーションをパケット化してLIB/ROB・I/O・FT−リンク・コントローラ210−1へフォワードする機能を持つ。
両系をCPU101−1、101−2のリセットで同期化する場合、I/O・デバイス105−1−1、105−1−2、105−2−1、105−2−2を一旦停止させる必要がある。
例えば、CPU101−1、101−2のリセット中にI/O・デバイス105−1−1からのインターラプトやDMAが発生した場合、CPU101−1、101−2はそれらに対応できないからである。但し、停止時間は短く抑える必要がある。長時間に渡るシステムの停止は、サービスの停止を意味し、ユーザーに不利益を与えるからである。
CPU101−1、101−2に対してはシステム・マネジメント・インターラプト・ハンドラ(SMI・ハンドラ)など、オペレーティングシステムより上位に位置する、システム・ソフトウェアを呼び出し、オペレーティングシステムを一時的に停止させることが可能である。また、同期処理のための制御も割込コントローラ221―1、211−2が発生するSMIで呼び出されるシステム・ソフトウェアで行われる。
しかし、各I/O・デバイス105の素性を知らぬシステム・ソフトウェアは、I/O・デバイス105を制御することは出来ないため、I/O・デバイス105は停止させることはできない。
一般的にI/O・デバイス105の制御はオペレーティングシステムのインターフェースを介して各I/O・デバイス105毎に存在するI/O・デバイス・ドライバによって行われる。従ってI/O・デバイス105を停止させるためには、各I/O・デバイス105のドライバを呼び出し、逐一デバイスが停止するよう要請を出す必要がある。
また、同期完了後には再度同様に各I/O・デバイス105のドライバを呼び出して、デバイスの運用を開始する必要がある。
これは結果的に同期化のために、全てのサービスを止めることに等しく、長時間に渡りシステムが止まることを意味する。
これを避けるために、本システムではI/O・インターフェース・ブリッジ207に対し、ロック機能を持たせる。
I/O・インターフェース・ブリッジ207は各I/O・デバイス105に対して発行したノン・ポスティド・アウトバウンド・リクエスト(コンプリーションを必要とするリクエスト)を全て記憶し、コンプリーションが返り、それをパケット化して、LOB/RIB・I/O・FT−リンク・コントローラ210へ渡した時点で該当リクエストのクリアを行う。
アウトバウンド・リクエストとしてシステム・ソフトウェア実行中のCPU101からロックパケットを受信すると、I/O・インターフェース・ブリッジ207は全ての仕掛中のノン・ポスティド・リクエストが無くなった時点で、一切のインバウンド・リクエストを遮断し、ロック・コンプリーションをルータ203へ返す。
つまり、I/O・インターフェース・ブリッジ207がロックパケットを受信した後は、ロック・コンプリーションがI/Oインターフェース・ブリッジ207から送られる最後のインバウンドのパケットとなる。
これにより、I/O・インターフェース・ブリッジ207からのパケットは全て遮断され、結果的にI/O・デバイス105が一時停止した状態となる。
また、同期化後にはBIOSを実行中のCPU101からアンロック・コマンドを発行することにより、ロック状態が解除される。
これにより各I/O・デバイス105を停止処理させるわけではなく、リセット同期をしている期間だけI/O・インターフェースに蓋をするため、デバイス・ドライバを呼び出しての停止、起動を行う場合に比べ、大幅に時間を短縮することが可能となる。
図2のシステムにおいて、両系は非同期状態であり、プライマリ側がアクティブとなっており、オペレーティングシステムによるサービスが稼動している状態であると仮定する。またセカンダリ側はスタンバイであり、故障によるボードの交換などにより、CPU101−2によるサービスが停止している状態と仮定する。
なお、既にI/O・FT−リンク111−1、111−2は既に稼動状態であり、アクティブ側からはスタンバイ側のI/O・デバイス105−2は利用できる状態となっていると仮定する。
この場合、同期/非同期・状態・レジスタ224は非同期を示す設定になっており、また、プライマリ側のアクティブ/スタンバイ・レジスタ223はアクティブに、セカンダリ側のアクティブ/スタンバイ・レジスタ223はスタンバイとなっている。
従って、セカンダリ側のスタンバイ状態のCPU・サブシステムのルータ203−2にはアクティブ側から一切のパケットが到達せず、また、ルータ203−2もスタンバイ側からのアウトバウンド・リクエストの一切を遮断するため、論理的に切り離された状態となっている。
この状態からプライマリ系及びセカンダリ系を同期動作させるための動作手順を図9乃至図11を参照して以下に示す。
スタンバイ側の同期化を行うため、オペレーティングシステムより上位のインターラプト(例えば,SMI)でシステム・ソフトウェア(例えば、SMIハンドラ)がコールされる。この時点でオペレーティングシステムの動作は一旦中断される。
システム・ソフトウェアを実行しているCPU101−1は、ルータ203−1に対し、ロック・コマンドの発行を要請する(図9の1)。
ルータ203−1は、ローカル/リモート双方のI/O・インターフェース・ブリッジ207−1、207−2に対し、ロック・コマンドを発行する(図9の2)。
これを受け取ったI/O・インターフェース・ブリッジ207−1、207−2は(図9の3)、仕掛中の全てのノン・ポスティド・アウトバウンド・リクエストに対するノン・ポスティド・アウトバウンド・リクエスト・コンプリーションを返すと同時に、I/O・デバイス105−1、105−2からの全てのインバウンド・リクエストをロックする。そして、I/O・インターフェース・ブリッジ207−1、207−2は、最後のノン・ポスティド・アウトバウンド・リクエスト・コンプリーションを返したならば、ロック・コンプリーションを返す(図10の4)。
ルータ203−1は、両方のI/O・インターフェース・ブリッジ207−1、207−2からロック・コンプリーションが返されたことを確認し(図10の5)、CPU101−1への通知を行う(図10の6)。
CPU101−1への通知方法としては、ロック・コンプリーションの返却状況を示すルータ203−1内のレジスタをシステム・ソフトウェアを実行しているCPU101−1がポーリングすることで行われる。
なお、本実施形態では詳述しないが、アクティブ側のメイン・メモリ102−1の内容はFT制御部103−1の内部のDMA・エンジンによりスタンバイ側のメイン・メモリ102−1にコピーされ続けており、これはオペレーティング・システム動作中にバックグラウンドで行われる。
さらに、同期処理のためのシステム・ソフトウェアが起動してから、I/O・インターフェース・ブリッジ207−1、207−2のロックによるI/O・デバイス105−1、105−2からメイン・メモリ102−1へのDMAが停止するまでの間は、DMAによりアクティブ側のメモリ102−1に書き込まれた内容は、スタンバイ側のメモリ102−2へもフォワードされており、自動的に同一性を保つ機構が備わっている。
つまり、ルータ203−1が、両方のI/O・インターフェース・ブリッジ207−1、207−2からロック・コンプリーションが返されたことを確認し(図10の5)、CPU101−1への通知を行う時点では、両FT制御部103−1、103−2に接続されるメイン・メモリ102−1、102−2は全く同一の状態である。
次に、システム・ソフトウェアを実行しているCPU101−1は、同期・コマンド・ジェネレータ206−1に対し、同期・CPU・リセット・コマンドの発行を要請する。これは同期・コマンド・ジェネレータ206−1の制御レジスタへのライトで行われる(図11の7)。
同期・コマンド・ジェネレータ206−1は、同期・CPU・リセット・コマンドのパケットをLIB/ROB・I/O・FT−リンク・コントローラ210−1へ通知する(図11の8)。
LIB/ROB・I/O・FT−リンク・コントローラ210−1は同期・CPU・リセット・コマンドを受け取ると、自動的に同期/非同期・状態・レジスタ224を同期状態に切り替える。
これにより、プライマリ系とセカンダリ系は同期動作中と見なされ、同期・CPU・リセット・コマンドはディレイ・コントローラ226と、I/O・FT−リンク・出力・コントローラ227にフォワードされる(図11の9)。
アクティブ側はディレイ・コントローラ226を通り、スタンバイ側はI/O・FT−リンク111−2を通過するため、ルータ203−1、203−2には同時に同期・CPU・リセット・コマンドが到達する(図11の10)。
さらにルータ203−1、203−2は、それぞれ、同期・CPU・リセット・コマンドをリセット・コントローラ204−1、204−2へフォワードする(図11)の11)。リセット・コントローラ204−1、204−2は、それぞれ、CPU101−1、101−2に対して、一定期間リセットをアサートする(図11の12)。ルータ203−1、203−2より上の部分は完全に同期して動作しているため、同時にCPU・リセットが掛けられることになる。
また、リセット・コントローラ204−1、204−2は、それぞれ、メモリ・コントローラ205−1、205−2に対して、同期・リセット・パルスを送る。
図12のタイミング・チャートで示す通り、同期・リセット・パルスを受け取ったメモリ・コントローラ205−1、205−2は、それぞれ、メイン・メモリ102−1、102−2であるDRAMに対し、リフレッシュ・コマンドを発行すると共に、DRAM・リフレッシュ・カウンタをリセットする(図11の13)。DRAM・リフレッシュ・カウンタをリセットするためには、DRAM・リフレッシュ・カウンタ・リセット信号をメモリ・コントローラ205−1、205−2から、それぞれ、メインメモリ102−1、102−2に対して与える。
これにより、双方のCPU・サブシステムで非同期に動作するものは無くなり、完全なロックステップの同期状態となる。
CPU101−1、101−2のリセットが解除されると、CPU・コンパレータ212−1、212−2が動作しだし、双方のCPU101−1、101−2のリクエストの発行タイミングを監視する(図11の14)。
CPU・コンパレータ212−1、212−2を用いた再リセットの機能は、前述のとおり、CPU101−1、101−2のリセットは非同期リセットであることが多く、クロックに同期したリセットパルスをCPU101−1、101−2に与えても、CPU101−1、101−2が相互に同期しない場合を考慮しての機能である。
図13で示す通り、リセット解除後近傍のリクエストがタイミングずれを起こした場合は、CPU・コンパレータ212−1、212−2の双方が同時にエラーを検出することになる。CPU・コンパレータ212−1、212−2は、それぞれ、エラーを直ちにリセット・コントローラ204−1、204−2へ通知する。これにより、図11の12で示す箇所から上述した同期・CPU・リセットのシーケンスが再起動される。
なお、CPU・コンパレータ・チェックによるCPU101−1、101−2の再同期リセットは、メイン・メモリ・アクセス前のBIOSによるROM・フェッチ段階に限って高速に再同期化を行うための機能である。
無事に同期化が行われると、CPU101−1、101−2のリセット・ベクトルで示されるアドレスにあるBIOSのROM・フェッチが継続される。BIOSを実行しているCPU101−1、101−2は、それぞれ、CPU・コンパレータ・チェックの結果が肯定的であり、再同期化処理が成功したことを知ると、I/O・インターフェース・ブリッジ207−1、207−2のロックを解除するために、ルータ203−1、203−2に対し、アンロック・コマンドの発行を要請する。これはルータ203−1、203−2内の制御レジスタへのライトで行われる。
アンロック・コマンドを受け取ったI/O・インターフェース・ブリッジ207−1、207−2は、ロック状態を解除する。これによりI/O・デバイス105−1、105−2が再度動作しだすことになる。
また、BIOSは自らSMIによりシステム・ソフトウェアを呼び出し、オペレーティングシステム停止前に復帰するためのコンテキスト復帰を行った後、SMIから戻る形で、停止前に復帰して同期化処理を完了する。
フォールト・トレラント・コンピュータの基本構成を示すブロック図である。 本発明の実施形態によるフォールト・トレラント・コンピュータの構成を示すブロック図である。 図2に示すフォールト・トレラント・コンピュータを一方のCPUからの観点で描いたブロック図である。 図2に示すフォールト・トレラント制御部の構成等を示すブロック図である。 図4に示すLOB/RIB・I/O・FT−リンク・コントローラの構成を示すブロック図である。 図5に示すディレイ・コントローラの構成を示すブロック図である。 本発明の実施形態により、ローカル・ルータ及びリモート・ルータに同時にコマンドパケットが到着する様子を示すタイミング図である。 図4に示すCPUコンパレータの構成を示すブロック図である。 本発明の実施形態によるCPUリセット方法を説明するための第1の図である。 本発明の実施形態によるCPUリセット方法を説明するための第2の図である。 本発明の実施形態によるCPUリセット方法を説明するための第3の図である。 本発明の実施形態によるCPUリセット方法によりDRAMをリセットする様子を示すタイミング図である。 本発明の実施形態により、CPUコンパレータにより非同期が検出し、CPUを再リセットする様子を示すタイミング図である。
符号の説明
121 CPUサブシステム
122 I/Oサブシステム
101−1、101−2 CPU
102−1、102−2 メイン・メモリ
103−1、103−2 フォールト・トレラント制御部(FT制御部)
104−1、104−2 サウス・ブリッジ
105−1−1、105−1−2、105−2−1、105−2−2
201−1、201−2 システム・バス・コントローラ
202−1、202−2 システム・バス
203−1、203−2 ルータ
204−1、204−2 リセット・コントローラ
205−1、205−2 メモリ・コントローラ
206−1、206−2 同期・コマンド・ジェネレータ
207−1、207−2 I/O・インターフェース・ブリッジ
208−1、208−2 I/O・コンパレータ
209−1、209−2 LOB/RIB・I/O・FT−リンク・コントローラ
210−1、210−2 LOB/RIB・I/O・FT−リンク・コントローラ
211−1、211−2 割込コントローラ

Claims (15)

  1. 複数のモジュールを備えるフォールト・トレラント・コンピュータをリセットするための方法であって、
    何れか1つのモジュールでリセット要求信号を生成するステップと、
    前記リセット要求信号を第1のリセット要求信号と第2の要求リセット信号に分岐させるステップと、
    前記第2のリセット要求信号を他のモジュールに伝達するステップと、
    前記第2のリセット要求信号を他のモジュールに伝達するのに要する時間だけ、前記第1のリセット要求信号を前記1つのモジュール内で遅延させるステップと、
    前記1つのモジュール内で遅延された前記第1のリセット要求信号を基に生成された第1のCPUリセット信号で前記1つのモジュールに含まれる少なくとも1つのCPUをリセットするステップと、
    前記他のモジュールに伝達された前記第2のリセット要求信号を基に生成された第2のCPUリセット信号で前記他のモジュールに含まれる少なくとも1つのCPUをリセットするステップと、
    を備えることを特徴とする方法。
  2. 請求項1に記載の方法において、
    前記1つのモジュールにおいて、ロック・コマンドを生成するステップと、
    前記ロック・コマンドを前記1つのモジュールのI/O・インターフェース・ブリッジに伝達するステップと、
    前記ロック・コマンドを前記他のモジュールのI/O・インターフェース・ブリッジに伝達するステップと、
    前記ロック・コマンドを受けた前記1つのモジュールのI/O・インターフェース・ブリッジにおいて、インバウンド・リクエストをロックすると共に、前記ロック・コマンドを受ける前の全てのノン・ポスティド・アウトバウンド・リクエストに対応するノン・ポスティド・アウトバウンド・リクエスト・コンプリーションの返信が完了したならば、第1のロック・コンプリーションを生成するステップと、
    前記ロック・コマンドを受けた前記他のモジュールのI/O・インターフェース・ブリッジにおいて、インバウンド・リクエストをロックすると共に、前記ロック・コマンドを受ける前の全てのノン・ポスティド・アウトバウンド・リクエストに対応するノン・ポスティド・アウトバウンド・リクエスト・コンプリーションの返信が完了したならば、第2のロック・コンプリーションを生成するステップと、
    を更に備え、
    前記1つのモジュールのI/O・インターフェース・ブリッジにおいて前記第1のロック・コンプリーションが生成され、且つ、前記他のモジュールのI/O・インターフェース・ブリッジにおいて前記第2のロック・コンプリーションが生成されたならば、前記リセット要求信号を生成することを特徴とする方法。
  3. 請求項1に記載の方法において、
    前記1つのモジュール内で遅延された前記第1のリセット要求信号を基に生成されたリフレッシュ・コマンド及びリフレッシュ・カウンタ・リセット信号で、前記1つのモジュールのメイン・メモリをリフレッシュするステップと、
    前記他のモジュールに伝達された前記第2のリセット要求信号を基に生成されたリフレッシュ・コマンド及びリフレッシュ・カウンタ・リセット信号で、前記他のモジュールのメイン・メモリをリフレッシュするステップと、
    を更に備えることを特徴とする方法。
  4. 請求項1に記載の方法において、
    前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドと前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドとが一致するか否かを判断するステップと、
    両コマンドが一致しない場合に、前記1つのモジュールに含まれる前記少なくとも1つのCPU及び前記他のモジュールに含まれる前記少なくとも1つのCPUを再度リセットするステップと、
    を更に備えることを特徴とする方法。
  5. 請求項4に記載の方法において、
    前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドを前記1つのモジュールに伝達するステップと、
    前記コマンドを前記他のモジュールから前記1つのモジュールに伝達するのに要する時間だけ、前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドを遅延させるステップと、
    を更に備え、
    前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドと前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドとが一致するか否かを判断するステップでは、前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドであって遅延されたものと前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドであって伝達されたものとが一致するか否かを判断することを特徴とする方法。
  6. 複数のモジュールを備えるフォールト・トレラント・コンピュータをリセットするためのシステムであって、
    何れか1つのモジュールでリセット要求信号を生成する手段と、
    前記リセット要求信号を第1のリセット要求信号と第2のリセット要求信号に分岐させる手段と、
    前記第2のリセット要求信号を他のモジュールに伝達する手段と、
    前記第2のリセット要求信号を他のモジュールに伝達するのに要する時間だけ、前記第1のリセット要求信号を前記1つのモジュール内で遅延させる手段と、
    前記1つのモジュール内で遅延された前記第1のリセット要求信号を基に生成された第1のCPUリセット信号で前記1つのモジュールに含まれる少なくとも1つのCPUをリセットする手段と、
    前記他のモジュールに伝達された前記第2のリセット要求信号を基に生成された第2のCPUリセット信号で前記他のモジュールに含まれる少なくとも1つのCPUをリセットする手段と、
    を備えることを特徴とするシステム。
  7. 請求項6に記載のシステムにおいて、
    前記1つのモジュールにおいて、ロック・コマンドを生成する手段と、
    前記ロック・コマンドを前記1つのモジュールのI/O・インターフェース・ブリッジに伝達する手段と、
    前記ロック・コマンドを前記他のモジュールのI/O・インターフェース・ブリッジに伝達する手段と、
    前記ロック・コマンドを受けた前記1つのモジュールのI/O・インターフェース・ブリッジにおいて、インバウンド・リクエストをロックすると共に、前記ロック・コマンドを受ける前の全てのノン・ポスティド・アウトバウンド・リクエストに対応するノン・ポスティド・アウトバウンド・リクエスト・コンプリーションの返信が完了したならば、第1のロック・コンプリーションを生成する手段と、
    前記ロック・コマンドを受けた前記他のモジュールのI/O・インターフェース・ブリッジにおいて、インバウンド・リクエストをロックすると共に、前記ロック・コマンドを受ける前の全てのノン・ポスティド・アウトバウンド・リクエストに対応するノン・ポスティド・アウトバウンド・リクエスト・コンプリーションの返信が完了したならば、第2のロック・コンプリーションを生成する手段と、
    を更に備え、
    前記1つのモジュールのI/O・インターフェース・ブリッジにおいて前記第1のロック・コンプリーションが生成され、且つ、前記他のモジュールのI/O・インターフェース・ブリッジにおいて前記第2のロック・コンプリーションが生成されたならば、前記リセット要求信号を生成することを特徴とするシステム。
  8. 請求項6に記載のシステムにおいて、
    前記1つのモジュール内で遅延された前記第1のリセット要求信号を基に生成されたリフレッシュ・コマンド及びリフレッシュ・カウンタ・リセット信号で、前記1つのモジュールのメイン・メモリをリフレッシュする手段と、
    前記他のモジュールに伝達された前記第2のリセット要求信号を基に生成されたリフレッシュ・コマンド及びリフレッシュ・カウンタ・リセット信号で、前記他のモジュールのメイン・メモリをリフレッシュする手段と、
    を更に備えることを特徴とするシステム。
  9. 請求項6に記載のシステムにおいて、
    前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドと前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドとが一致するか否かを判断する手段と、
    両コマンドが一致しない場合に、前記1つのモジュールに含まれる前記少なくとも1つのCPU及び前記他のモジュールに含まれる前記少なくとも1つのCPUを再度リセットする手段と、
    を更に備えることを特徴とするシステム。
  10. 請求項9に記載のシステムにおいて、
    前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドを前記1つのモジュールに伝達する手段と、
    前記コマンドを前記他のモジュールから前記1つのモジュールに伝達するのに要する時間だけ、前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドを遅延させる手段と、
    を更に備え、
    前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドと前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドとが一致するか否かを判断する手段は、前記1つのモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドであって遅延されたものと前記他のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドであって伝達されたものとが一致するか否かを判断することを特徴とするシステム。
  11. 複数のモジュールを備えるフォールト・トレラント・コンピュータで利用されるフォールト・トレラント・制御装置であって、
    リセット要求信号を生成するリセット要求信号生成手段と、
    前記リセット要求信号を第1のリセット要求信号と第2のリセット要求信号に分岐させる分岐手段と、
    前記第2のリセット要求信号を当該装置が含まれるモジュール以外のモジュールに含まれるフォールト・トレラント・制御装置に向けて伝達する伝達手段と、
    前記第2のリセット要求信号を当該装置が含まれるモジュール以外のモジュールに含まれるフォールト・トレラント・制御装置に伝達するのに要する時間だけ、前記第1のリセット要求信号を遅延させる第1遅延手段と、
    遅延された前記第1のリセット要求信号を基に生成された第1のCPUリセット信号で当該装置が含まれるモジュールに含まれる少なくとも1つのCPUをリセットするCPUリセット手段と、
    を備えることを特徴とする装置。
  12. 請求項11に記載の装置において、
    ロック・コマンドを生成するロック・コマンド生成手段と、
    前記ロック・コマンドを当該装置に含まれるI/O・インターフェース・ブリッジに伝達する第1ロック・コマンド・伝達手段と、
    前記ロック・コマンドを当該装置が含まれるモジュール以外のモジュールに含まれるフォールト・トレラント・制御装置に含まれるI/O・インターフェース・ブリッジに向けて伝達する第2ロック・コマンド・伝達手段と、
    前記ロック・コマンドを受けた、当該装置に含まれるI/O・インターフェース・ブリッジにおいて、インバウンド・リクエストをロックすると共に、前記ロック・コマンドを受ける前の全てのノン・ポスティド・アウトバウンド・リクエストに対応するノン・ポスティド・アウトバウンド・リクエスト・コンプリーションの返信が完了したならば、第1のロック・コンプリーションを生成するロック・コンプリーション生成手段と、
    を更に備え、
    当該装置に含まれる前記I/O・インターフェース・ブリッジにおいて前記第1のロック・コンプリーションが生成され、且つ、当該装置が含まれるモジュール以外のモジュールに含まれる前記フォールト・トレラント・制御装置に含まれるI/O・インターフェース・ブリッジにおいて前記第1のロック・コンプリーションと同様な第2のロック・コンプリーションが生成されたならば、前記リセット要求信号生成手段は、前記リセット要求信号を生成することを特徴とする装置。
  13. 請求項11に記載の装置において、
    前記第1遅延手段で遅延された前記第1のリセット要求信号を基に生成されたリフレッシュ・コマンド及びリフレッシュ・カウンタ・リセット信号で、当該装置が含まれるモジュールに含まれるメイン・メモリをリフレッシュするリフレッシュ手段を更に備えることを特徴とする装置。
  14. 請求項11に記載の装置において、
    当該装置が含まれるモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドと当該装置が含まれるモジュール以外のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドとが一致するか否かを判断する一致判断手段と、
    両コマンドが一致しない場合に、当該装置が含まれるモジュールに含まれる前記少なくとも1つのCPUを再度リセットする再リセット手段と、
    を更に備えることを特徴とする装置。
  15. 請求項14に記載の装置において、
    前記コマンドを当該装置が含まれるモジュール以外のモジュールから当該装置が含まれるモジュールに伝達するのに要する時間だけ、当該装置が含まれるモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドを遅延させる第2遅延手段を更に備え、
    前記一致判断手段は、当該装置が含まれるモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドであって前記第2遅延手段により遅延されたものと当該装置が含まれるモジュール以外のモジュールに含まれる前記少なくとも1つのリセットされたCPUが発行するコマンドであって伝達されたものとが一致するか否かを判断することを特徴とする装置。
JP2004367749A 2004-12-20 2004-12-20 フォールト・トレラント・コンピュータ・リセット方法及びそのシステム Expired - Fee Related JP4182486B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2004367749A JP4182486B2 (ja) 2004-12-20 2004-12-20 フォールト・トレラント・コンピュータ・リセット方法及びそのシステム
US11/304,575 US8041995B2 (en) 2004-12-20 2005-12-16 Method and system for resetting fault tolerant computer system
CA002530555A CA2530555A1 (en) 2004-12-20 2005-12-16 Method and system for resetting fault tolerant computer system
EP05027796A EP1672504A3 (en) 2004-12-20 2005-12-19 Method and system for resetting fault tolerant computer system
AU2005246936A AU2005246936A1 (en) 2004-12-20 2005-12-19 Method and system for resetting fault tolerant computer system
CNA2005101369122A CN1794135A (zh) 2004-12-20 2005-12-20 容错计算机复位方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004367749A JP4182486B2 (ja) 2004-12-20 2004-12-20 フォールト・トレラント・コンピュータ・リセット方法及びそのシステム

Publications (2)

Publication Number Publication Date
JP2006172391A JP2006172391A (ja) 2006-06-29
JP4182486B2 true JP4182486B2 (ja) 2008-11-19

Family

ID=36018232

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004367749A Expired - Fee Related JP4182486B2 (ja) 2004-12-20 2004-12-20 フォールト・トレラント・コンピュータ・リセット方法及びそのシステム

Country Status (6)

Country Link
US (1) US8041995B2 (ja)
EP (1) EP1672504A3 (ja)
JP (1) JP4182486B2 (ja)
CN (1) CN1794135A (ja)
AU (1) AU2005246936A1 (ja)
CA (1) CA2530555A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5444624B2 (ja) * 2008-03-04 2014-03-19 日本電気株式会社 検査システム、検査用バックプレーン、検査方法及び製造方法
JP5380884B2 (ja) * 2008-04-04 2014-01-08 日本電気株式会社 データ処理装置及び同期方法
JP5509637B2 (ja) * 2009-03-18 2014-06-04 日本電気株式会社 フォールトトレラントシステム
US8984318B2 (en) * 2011-01-03 2015-03-17 Ca, Inc. System and method to avoid resynchronization when protecting multiple servers
JP2015153075A (ja) * 2014-02-13 2015-08-24 富士通株式会社 伝送装置および制御ユニット
CN105388886B (zh) * 2015-11-20 2017-12-29 康泰医学系统(秦皇岛)股份有限公司 一种仪器单片机工作监测电路及方法
US20180275731A1 (en) * 2017-03-21 2018-09-27 Hewlett Packard Enterprise Development Lp Processor reset vectors
US10908998B2 (en) 2017-08-08 2021-02-02 Toshiba Memory Corporation Managing function level reset in an IO virtualization-enabled storage device
CN113821469B (zh) * 2021-09-23 2024-09-10 深圳市元征科技股份有限公司 多处理器的同步方法、装置、终端设备及存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4803682A (en) * 1985-03-04 1989-02-07 Sanyo Electric Co., Ltd. Resetting system
AU625293B2 (en) * 1988-12-09 1992-07-09 Tandem Computers Incorporated Synchronization of fault-tolerant computer system having multiple processors
US5251227A (en) * 1989-08-01 1993-10-05 Digital Equipment Corporation Targeted resets in a data processor including a trace memory to store transactions
US5537655A (en) * 1992-09-28 1996-07-16 The Boeing Company Synchronized fault tolerant reset
JPH0773059A (ja) 1993-03-02 1995-03-17 Tandem Comput Inc フォールトトレラント型コンピュータシステム
US5377205A (en) * 1993-04-15 1994-12-27 The Boeing Company Fault tolerant clock with synchronized reset
JP3132744B2 (ja) * 1995-05-24 2001-02-05 株式会社日立製作所 二重化cpu保守交換時の動作一致検証方式
JPH09128258A (ja) 1995-10-27 1997-05-16 Hitachi Ltd コンピュータシステムの再同期リセット処理方法
US6141769A (en) * 1996-05-16 2000-10-31 Resilience Corporation Triple modular redundant computer system and associated method
US5991518A (en) * 1997-01-28 1999-11-23 Tandem Computers Incorporated Method and apparatus for split-brain avoidance in a multi-processor system
DE19832060C2 (de) * 1998-07-16 2000-07-06 Siemens Ag Doppelbare Prozessoreinrichtung
US6393582B1 (en) * 1998-12-10 2002-05-21 Compaq Computer Corporation Error self-checking and recovery using lock-step processor pair architecture
US6480966B1 (en) * 1999-12-07 2002-11-12 International Business Machines Corporation Performance monitor synchronization in a multiprocessor system
US6874102B2 (en) * 2001-03-05 2005-03-29 Stratus Technologies Bermuda Ltd. Coordinated recalibration of high bandwidth memories in a multiprocessor computer
JP2004046599A (ja) * 2002-07-12 2004-02-12 Nec Corp フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
US7111196B2 (en) * 2003-05-12 2006-09-19 International Business Machines Corporation System and method for providing processor recovery in a multi-core system
US7251748B2 (en) * 2003-09-12 2007-07-31 Sun Microsystems, Inc. System and method for determining a global ordering of events using timestamps

Also Published As

Publication number Publication date
AU2005246936A1 (en) 2006-07-06
US20060150024A1 (en) 2006-07-06
CA2530555A1 (en) 2006-06-20
US8041995B2 (en) 2011-10-18
CN1794135A (zh) 2006-06-28
EP1672504A3 (en) 2010-03-24
JP2006172391A (ja) 2006-06-29
EP1672504A2 (en) 2006-06-21

Similar Documents

Publication Publication Date Title
US7441150B2 (en) Fault tolerant computer system and interrupt control method for the same
JP5585332B2 (ja) 耐故障システム、マスタft制御lsi、スレーブft制御lsiおよび耐故障制御方法
EP1672504A2 (en) Method and system for resetting fault tolerant computer system
US7487377B2 (en) Method and apparatus for fault tolerant time synchronization mechanism in a scaleable multi-processor computer
JP5459807B2 (ja) マルチプロセッサデータ処理システムにおけるデバッグシグナリング
US7539897B2 (en) Fault tolerant system and controller, access control method, and control program used in the fault tolerant system
US20060149903A1 (en) Fault tolerant computer system and a synchronization method for the same
JP5013309B2 (ja) フォールトトレラントコンピュータ、そのトランザクション同期制御方法
JP2006178636A (ja) フォールトトレラントコンピュータ、およびその制御方法
US7852235B1 (en) High integrity computing via input synchronization systems and methods
JP2005293315A (ja) データミラー型クラスタシステム及びデータミラー型クラスタシステムの同期制御方法
JP5287974B2 (ja) 演算処理システム、再同期方法、およびファームプログラム
KR100583214B1 (ko) 정보 처리 장치
KR20080016438A (ko) 데이터 처리 장치, 모드 관리 장치 및 모드 관리 방법
JP2004110803A (ja) フォールトトレラントコンピュータ、そのトランザクション同期制御方法及びプログラム
JP2009098988A (ja) フォルトトレラントコンピュータシステム
JPWO2009025104A1 (ja) 情報処理装置及び情報処理方法
KR100205031B1 (ko) 이중화 제어시스템의 동기제어 장치
KR100198416B1 (ko) 이중화 제어시스템에서의 동기제어를 위한 동기신호 감시회로
JP4117685B2 (ja) フォルトトレラント・コンピュータとそのバス選択制御方法
JPH08190494A (ja) 二重化処理装置を有する高信頼化コンピュータ
JPH08272637A (ja) 2重化システム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080515

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080519

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080718

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080808

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080821

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110912

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120912

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130912

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees