(57)【特許請求の範囲】
【請求項１】
主データバス（１０）と複数のプロセッサモジュール（２０，２２，２４）とを備えるフォールトトレラント・コンピュータシステムであって、
前記各プロセッサモジュールが、中央処理装置（３８）と、ローカルデータバス（２８，３０）と、前記各ローカルデータバス（２８，３０）を前記主データバス（１０）に相互接続するデータ転送インタフェース（３４）とをそれぞれ有し、前記各データ転送インタフェースがコンパレータ手段（１０６）を有し、前記各コンパレータ手段が、前記各ローカルデータバス（２８）に存在するデータを前記主データバス（１０）に存在するデータと比較し、かつ不一致を検出すると、前記プロセッサモジュール（２０，２２，２４）を制御するために、前記不一致を示す信号を供給するように構成され、
前記システムが更に、前記中央処理装置（３８）への命令を記憶する主プログラムメモリと主読出し書き込み用データメモリとを備え、かつ、前記複数のプロセッサモジュール（２０，２２，２４）が互いに同期して動作し、かつ選択されたいずれか１つの前記プロセッサモジュールが前記主データバス（１０）との間でデータを転送するマスタとして機能するように構成され、
前記主プログラムメモリが、前記各プロセッサモジュール毎に１つずつ設けた複数のプログラムメモリ（４２）からなり、前記各プログラムメモリ（４２）が同一の命令を保持し、かつそれぞれの前記プロセッサモジュールの前記ローカルデータバス（２８，３０）とそれぞれ直接接続されており、かつ、前記主読出し書き込み用データメモリが、前記各プロセッサモジュール毎に１つずつ設けた複数の主メモリ（４０）からなり、前記主メモリ（４０）が通常は同一のデータを保持し、かつそれぞれの前記プロセッサモジュールの前記ローカルデータバス（２８，３０）とそれぞれ直接接続されていることを特徴とするフォールトトレラント・コンピュータシステム。
【請求項２】
前記各プロセッサモジュール（２０，２２，２４）が、該プロセッサモジュールの前記ローカルデータバスに接続された第１の複数のハードウェア要素を更に有し、前記コンパレータ手段（１０６）が、前記主データバス（１０）上のデータを前記ローカルデータバス上のデータと比較し、かつそれに応答して複数の状態出力信号を生成することを特徴とする請求項１に記載のフォールトトレラント・コンピュータシステム。
【請求項３】
前記各プロセッサモジュールが、前記データ転送インタフェース（３４）の一部分であるパリティ検査回路（１０８）を有し、前記パリティ検査回路（１０８）が、前記主データバス（１０）のデータ線を監視し、かつそれに応答してパリティ出力信号（１４２）を生成し、前記パリティ出力信号（１４２）が、前記コンパレータ手段（１０６）への入力信号として使用されることを特徴とする請求項２に記載のフォールトトレラント・コンピュータシステム。
【請求項４】
前記各プロセッサモジュールの前記ローカルデータバスが、前記中央処理装置（３８）が接続された専用データバス（２８）と、第２のバスインタフェース（３２）を介して前記専用データバス（２８）に接続された共用データバス（３０）とを有し、第２の複数のハードウェア要素が前記専用データバスに接続され、かつ、制御論理回路（３６）が、前記データ転送インタフェースである第１のバスインタフェース（３４）と前記第２のバスインタフェース（３２）とに接続されてそれらを制御し、前記制御論理回路（３６）が、他の全ての前記プロセッサモジュールから前記状態出力信号を入力信号として受け取りかつそれに応答して制御論理出力信号を生成し、前記制御論理出力信号が、故障が生じているかどうかを前記プロセッサモジュールに示すことを特徴とする請求項３に記載のフォールトトレラント・コンピュータシステム。
【請求項５】
前記各中央処理装置（３８）が、６８０４０集積回路からなることを特徴とする請求項４に記載のフォールトトレラント・コンピュータシステム。
【請求項６】
前記第１の複数のハードウェア要素が、読出し書き込み用メモリ（４６）と、非同期レシーバ／トランスミッタ回路（４８）と、タイマ回路（５０）と、複数の制御・状態レジスタ（５２）と、別の読出し書き込み用メモリ（５４）とからなることを特徴とする請求項２乃至５のいずれかに記載のフォールトトレラント・コンピュータシステム。
【請求項７】
前記第２の複数のハードウェア要素が、前記主メモリである主読出し書き込み用メモリ（４０）と、前記プログラムメモリである読出し専用メモリ（４２）と、更に別の読出し書き込み用メモリ（４４）とからなることを特徴とする請求項４乃至６のいずれかに記載のフォールトトレラント・コンピュータシステム。
【請求項８】
前記更に別の読出し書き込み用メモリ（４４）が、データが書き込まれている前記主読出し書き込み用メモリ（４０）内の記憶場所に対応する情報を記憶するように構成され、前記更に別の読出し書き込み用メモリ（４４）によって、ある１つのプロセッサモジュールから別のプロセッサモジュールへのデータの複写が容易であることを特徴とする請求項７に記載のフォールトトレラント・コンピュータシステム。
【請求項９】
前記別の読出し書き込み用メモリ（５４）が、欠陥を有する又は存在しないコンピュータサブシステムを有する前記主データバス（１０）のインタフェーススロット（１８）に対応する情報を記憶するように構成されていることを特徴とする請求項６に記載のフォールトトレラント・コンピュータシステム。
【請求項１０】
前記非同期レシーバ／トランスミッタ回路が、ＲＳ−２３２インタフェースを提供する２６９２集積回路（４８）からなることを特徴とする請求項６に記載のフォールトトレラント・コンピュータシステム。
【請求項１１】
前記タイマ回路（５０）が９５１３集積回路からなることを特徴とする請求項６に記載のフォールトトレラント・コンピュータシステム。
【請求項１２】
前記主データバス（１０）が、前記システムのデータハンドリングハードウェア手段からマスタとして機能する前記プロセッサモジュールへデータ転送応答信号を搬送するための線（７０）を有し、前記プロセッサモジュールがデータ転送の試みを、（ａ）データ転送応答信号を受け取ったとき、又は（ｂ）事前設定された時間間隔内にデータ転送応答信号を受け取らなかった場合、又は（ｃ）該プロセッサモジュールの関連するメモリが、前記データ転送の試みに関与する前記データハンドリングハードウェア手段に関して事前設定された故障の表示を有する場合に、終了するように構成されていることを特徴とする請求項１に記載のフォールトトレラント・コンピュータシステム。
【請求項１３】
前記各プロセッサモジュールが、前記プロセッサモジュールとそれに関連する主メモリ（４０）との間で動作するアドレス変換手段（３９）と、前記アドレス変換手段（３９）により供給される変換後のアドレスに基づいて前記主メモリ（４０）への書き込みアクセスを記録する読出し書き込み用メモリ（４４）とを有することを特徴とする請求項１に記載のフォールトトレラント・コンピュータシステム。
【請求項１４】
前記システムが、ある１つの前記プロセッサモジュールの主メモリ（４０）の内容を第２のプロセッサモジュールの前記主メモリ（４０）に複写するように構成され、前記ある１つのプロセッサモジュールが、複写処理の実行中に、前記ある１つのプロセッサモジュールの主メモリ（４０）への全ての書き込みアクセスを記録する読出し書込み用メモリ（４４）を有し、かつ前記システムが更に、前記主メモリ（４０）の、前記読出し書き込み用メモリ（４４）が書き込みアクセスを記録しているアドレスからデータを複写するように構成されていることを特徴とする請求項１に記載のフォールトトレラント・コンピュータシステム。
【請求項１５】
前記システムが、前記プロセッサモジュールを同時にリセット状態へとトリガするのに先立って、前記各プロセッサモジュールがその主メモリ（４０）にそのハードウェアの複数のクロック駆動される要素の状態又は内容を記録するように構成され、前記各プロセッサモジュールがリセット時に、その主メモリから前記クロック駆動される要素の状態又は内容を復元するように構成されていることを特徴とする請求項１に記載のフォールトトレラント・コンピュータシステム。
【請求項１６】
前記システムが更に、クロック信号発生源（１００）と、前記クロック発生源を前記プロセッサモジュールに接続するクロック信号線（１８４，１８６，１８８）と、前記各プロセッサモジュールを他の前記プロセッサモジュールに接続する制御線（１７８，１８０，１８２）とを備え、前記各プロセッサモジュールが、電源を投入したしたとき、該プロセッサモジュールのクロック信号線が、該クロック信号線に前記プロセッサモジュールによって印加されるクロック信号を有するように、該プロセッサモジュールの前記制御線に信号を印加することを特徴とする請求項１に記載のフォールトトレラント・コンピュータシステム。
【請求項１７】
２本の論理線（２６６，２６８）が前記複数のプロセッサモジュールを相互接続し、マスタとして機能する前記プロセッサモジュールが前記論理線に論理信号を印加して、他の全ての前記プロセッサモジュールがマスタとして機能することを防止するように構成されていることを特徴とする請求項１に記載のフォールトトレラント・コンピュータシステム。
【請求項１８】
全ての前記プロセッサモジュール（２０，２２，２４）に影響を与える故障状態の場合に、前記各プロセッサモジュールが、該プロセッサモジュールが故障を有する確率を計算する自己査定を実行し、かつその確率に従って待ち時間を計算し、その待ち時間の終了時に、該プロセッサモジュールがマスタの役割を引き受けることを試みるように構成されていることを特徴とする請求項１に記載のフォールトトレラント・コンピュータシステム。
【請求項１９】
前記各プロセッサモジュール（２０，２２，２４）が、ホスト装置により取り外し可能に収容され、前記プロセッサモジュールが、前記ホスト装置に取り付けられたとき、前記ホスト装置の電力線と結合される電気的コネクタ（３０２，３０４）を有し、前記ホスト装置が更に、前記プロセッサモジュールを所定位置に固定しかつ前記プロセッサモジュールへの電力制御を可能にする状態へと操作可能な機械的固定手段（３１８，３２０）を有することを特徴とする請求項１に記載のフォールトトレラント・コンピュータシステム。
【発明の詳細な説明】
技術分野
本発明は、フォールトトレラント（故障許容）コンピュータシステムに関する。
背景技術
システムの信頼性への従来のアプローチは、設計手法の改善、厳しい品質制御、及び外部環境からの影響（例えば、硬化、放射線の遮蔽）からシステム構成要素を防護するための様々な手法を介して故障の発生を防止することを試みている。フォールトトレランス法は、システムの故障が発生すると仮定し、かつかかる故障の存在下で動作し続けるシステムの設計を試みる。別言すれば、フォールトトレラント・システムは、システムの故障を生じることなくその内部構造又は外部環境の好ましくない変化を許容するように設計される。この目的を達成するために、フォールトトレラント・システムには、様々な案が使用されている。一旦故障が検出されると、構造上及び情報の冗長度を様々に組み合わせることによって、これを（例えば、システムエレメントのレプリカ作成を介して）マスクし、又はこれを（例えば、動的システム再構成又は他の何らかの回復処理によって）修正することを可能にする。このようなフォールトトレランス技術に従来の故障防止技術を結合させることによって、システム全体の信頼性をより大幅に向上させることが実現可能である。
発明の開示
本発明によれば、ハードウェアの故障の影響を減少させたフォールトトレラント・コンピュータアーキテクチャが提供される。このアーキテクチャは、従来のコンピュータサブシステムを相互接続するための複数のインタフェーススロットを有する主データバスを使用する。このようなサブシステムには、磁気ディスクサブシステム及びシリアル通信サブシステムを含むことができる。サブシステムの数及び種類は相当に変化させることができるが、本発明を構成する発明要素を包含する中央プロセッササブシステムは常に含まれる。
前記中央プロセッササブシステムは、並行に概ね同期化して動作する複数の中央処理モジュールを使用する。前記中央処理モジュールの中の１個がマスタ中央処理モジュールとして動作し、主データバスからデータを読み出しかつデータを書き込むことができる唯一のモジュールとなる。前記マスタ中央処理モジュールは、前記中央処理モジュールの中から最初に任意に選択される。
各中央処理モジュールは、ハードウェアの故障を示す不一致があるかどうかを決定するために、該モジュールが前記主データバス上のデータを各モジュール内の副バス上のデータと比較し得るようにする手段を備える。このような不一致が検出された場合には、各モジュールは、特定のモジュールが故障のソースである確率を反映する状態出力を発生する。前記主データバスとは別個の同期バスによって前記中央処理モジュールが相互接続され、かつ各モジュールから他の全中央処理モジュールに前記状態出力が送られる。
より詳細に言えば、各中央処理モジュールは、第１のバスインタフェースを介して主データバスに接続された共用データバスからなる。読出し書込み用メモリ、非同期レシーバ／トランスミッタ回路、タイマ回路、複数の制御・状態レジスタ、並びに欠陥のあるコンピュータサブシステム又は存在しないコンピュータサブシステムがある主データバスインタフェーススロットに対応してデータを記憶することを目的とする専用読出し書込み用メモリを含む多数のハードウェア要素が前記共用データバスに接続されている。
各モジュールは更に、前記主データバスのデータを前記共用データバスのデータと比較してそれに応じた状態出力を発生することを目的とする、前記第１バスインタフェースの部分であるコンパレータ回路からなる。また、パリティ検査回路が前記第１バスインタフェースの一部分をなし、前記主データバスのデータ線を監視して、前記コンパレータ回路への入力として使用されるパリティ出力を発生する。
専用データバスが第２のバスインタフェースを介して前記共用データバスに接続されている。また、前記専用データバスは、読出し書込み用メモリ、読出し専用メモリ及び「ダーティ」メモリを含む複数のハードウェア要素に接続されている。前記「ダーティ」メモリの目的は、情報が書込まれている読出し書込み用メモリ内の記憶場所に対応してデータを記憶することにある。後述するように、これによってある中央処理モジュールから別の中央処理モジュールへのデータの複製が容易になる。また、前記専用データバスに接続されかつ各中央処理モジュールの動作を制御する中央処理装置（ＣＰＵ）があり、他の中央処理モジュールの中央処理装置と概ね同期して動作する。
最後に、各中央処理モジュールは、前記第１及び第２バスインタフェースに接続されかつこれらを制御する制御論理回路を備える。前記制御論理回路は、その入力として各中央処理モジュールの前記コンパレータ回路によって生成された前記状態出力を受け取る。前記回路は、これらの制御信号及び以下に詳細に説明する他の制御信号を用いて、前記中央処理装置に故障が発生しているかどうかを示す制御論理信号を生成する。故障が検出された場合には、各モジュールは、故障の位置を識別し、故障中のモジュール又はサブシステムを使用不能状態にし、かつ前記故障が検出されたときに実行されていた命令に復帰させるルーチンを実行する。
本発明は、その第１の側面によれば、主データバスと、関連する読出し書き込み用メモリをそれぞれ有する複数のプロセッサ手段とからなり、前記各プロセッサ手段が、ローカルデータバスと、前記ローカルデータバスを前記主データバスに相互接続するデータ転送インタフェースとを有し、前記データ転送インタフェースが、前記主データバスに存在するデータ及び／又はアドレスを、前記各ローカルデータバスに存在するデータ及び／又はアドレスと比較するように構成され、かつ更に比較した前記データ及び／又はアドレスに何らかの不整合が検出されると、前記全プロセッサ手段に割込み信号を印加するように構成されたコンパレータ手段からなることを特徴とするフォールトトレラント・コンピュータシステムを提供する。
本発明の第２の側面によれば、関連するメモリを有する処理手段と、前記処理手段に少なくとも１つのデータ処理ハードウェア手段を相互接続するためのデータバスとからなり、前記データバスが、前記データ処理ハードウェア手段から前記処理手段にデータ転送応答信号を搬送するための線を有し、前記処理手段が、（ａ）データ転送応答信号の受信時、又は（ｂ）所定の時間間隔内にデータ転送応答信号を受信しない場合、又は（ｃ）前記関連するメモリが前記データ転送の試みに関係する前記ハードウェア手段に関して所定の表示を含む場合に、データ転送の試みを終了させるように構成されたコンピュータシステムが提供される。このシステムでは、前記所定の時間間隔を或る決められた時間の間隔とし、又は２つの所定の事象の間隔（時間的に変化することがある）とすることができる。
本発明の第３の側面によれば、関連するメモリを有するプロセッサ手段と、前記プロセッサ手段と前記メモリとの間で動作するアドレス変換手段と、前記アドレス変換手段によって供給される変換されたアドレスに基づいて主メモリに書込みアクセスを記録する書込み記録用メモリとからなるコンピュータシステムが提供される。
本発明の第４の側面によれば、関連するデータメモリをそれぞれ有する複数のプロセッサ手段からなるコンピュータシステムであって、第１のプロセッサ手段の前記データメモリの内容を第２のプロセッサ手段の前記データメモリに複製するように構成され、前記第２のプロセッサ手段が、複写処理が行われている際にそのデータメモリにあらゆる書込みアクセスを記録する書込み記録用メモリを有し、更に、それについて前記書込み記録用メモリが書込みアクセスを記録した前記データメモリのアドレスからデータを複写するように構成されているコンピュータシステムが提供される。
本発明の第５の側面によれば、関連するメモリをそれぞれ有する複数のプロセッサ手段からなり、前記各プロセッサ手段がそのメモリ内に、そのハードウェアの複数のクロック駆動型要素の内容又は状態を記録した後に、前記処理手段を同時にトリガしてリセット状態にするように構成され、前記各プロセッサ手段が、リセット時にそのメモリから前記要素の状態又は内容を復元するように構成されたコンピュータシステムが提供される。
本発明の第６の側面によれば、それぞれクロック信号を必要とする複数のサブシステムと、クロック信号供給源と、前記クロック信号供給源をある前記サブシステム１２に又は前記各サブシステムにそれぞれ接続する単一のクロック信号線又は複数のクロック信号線と、ある１つのサブシステムを前記サブシステムに又は他の前記各サブシステムにそれぞれ接続する単一の制御線又は複数の制御線とからなり、前記サブシステム又は他の前記各サブシステムが、電源を投入（パワーアップ）されると、その制御線に信号を印加することによって、そのクロック信号線に前記ある１つのサブシステムによってクロック信号が印加されるようにした電子システムが提供される。
本発明の第７の側面によれば、共通のデータバスに相互接続された複数のプロセッサ手段と、前記複数のプロセッサ手段を相互接続する２本の論理線とからなり、いずれか１つの前記プロセッサ手段がマスタプロセッサとして動作することができ、その場合に他のいずれの前記プロセッサ手段もマスタとして動作しないように前記論理線に論理信号を印加するように構成されたコンピュータシステムが提供される。
本発明の第８の側面によれば、共通のデータバスに相互接続された複数のプロセッサ手段と、前記複数のプロセッサ手段を相互接続する少なくとも１本の線とからなり、いずれか１つの前記プロセッサ手段が、マスタプロセッサとして動作することができ、その場合に他の前記プロセッサ手段をパワーダウンさせる信号を前記線に印加し得るように構成されたコンピュータシステムが提供される。
本発明の第９の側面によれば、共通のデータバスに相互接続された複数のプロセッサ手段からなるコンピュータシステムであって、いずれか１つの前記プロセッサ手段がマスタプロセッサとして動作することができ、その場合に前記プロセッサ手段又は他の前記各プロセッサ手段がチェッカとして動作するように構成され、更に前記全プロセッサ手段に影響を与えるエラー状態の場合には、前記各プロセッサ手段が、それが故障を有する確率を決定するべく自己評価を実行し、かつその確率によって時間遅れを計算し、その時間遅れの終了時に該プロセッサ手段がマスタの役割を引き受けようとするように構成されたコンピュータシステムが提供される。
本発明の第１０の側面によれば、少なくとも１個の取外し可能なモジュールを備え、前記モジュールが、電気又は電子回路と、該回路のための電源制御装置と、前記モジュールが組付けられた時にその電源線と適合するコネクタとからなり、更に前記モジュールを所定位置にロックしかつ前記電源制御装置を使用可能にする状態に操作可能な機械式ロック手段を備える電気装置又は電子装置が提供される。
【図面の簡単な説明】
以下に、本発明について添付図面を参照しつつその単なる例示として実施例を用いて詳細に説明する。
第１図は、本発明によるコンピュータシステムを部分的に示すブロック図である。
第２図は、第１図の一部分を構成する中央プロセッサモジュールを示すより詳細なブロック図である。
第３図は、第２図のプロセッサモジュールの一部分を構成するバスインタフェースの動作を示すより詳細なブロック図である。
第４図は、第３図に示すバスインタフェースの動作を示す状態遷移図である。
第５図は、前記バスインタフェースの異なる動作モードを示す第３図と同様の図である。
第６図は、第３図及び第５図のバスインタフェースの動作の「スレーブ」モードを示すブロック図である。
第７図は、第２図の前記中央プロセッサモジュールの一部分を形成するタイムアウト回路及び専用（特定目的）メモリを示すブロック図である。
第８図は、第２図の中央プロセッサモジュールのクロック発信回路を示すブロック図である。
第９図は、前記中央プロセッサモジュールのクロック発信回路を相互接続する同期バスに使用されるプリント回路のレイアウトを示す図である。
第１０図は、第２図の中央プロセッサモジュールの一部分を形成するエラー検出回路を示すブロック図である。
第１１図は、第２図の中央プロセッサモジュールの一部分を形成するマスタ・アービトレイション（ａｒｂｉｔｒａｔｉｏｎ）回路を示すブロック図である。
第１２図は、第２図の中央プロセッサモジュールに具現化された電力分配回路を示すブロック図である。
第１３図は、第２図の中央プロセッサモジュールの物理的構成、及び特に２個のインタロックスイッチを示す斜視図である。
第１４図は、第１３図に示すインタロックスイッチの一方に関連する機構を示す縦断面図である。
第１５図は、第２図の中央プロセッサモジュールの一部分を形成する別の専用（特定目的）メモリを示すブロック図である。
第１６図は、ソフトウェアの制御下で前記中央プロセッサモジュールのリセットを可能にする回路を示すブロック図である。
第１７図は、第１６図の回路の動作を示す状態遷移図である。
発明を実施するための最良の形態
第１図に示されるコンピュータシステムは、データ転送バス１０によって相互接続された３つのサブシステムからなる。これら３つのサブシステムは、中央プロセッササブシステム１２、データを記憶するための磁気ディスクサブシステム１４、及びシリアル通信サブシステム１６である。この構成が単なる例示に過ぎないことは容易に理解される。中央プロセッササブシステム１２はいずれの場合にも存在しなければならないが、他のサブシステムの数及び種類は相当に変化させることができる。各サブシステム（プロセッササブシステム１２を除く）とデータ転送バス１０との間の接続は、前記データ転送バス上の「スロット」を介して行なわれる。バス１０は全部で８個のスロット（第１図に於ける符号１８）を有し、従ってプロセッササブシステム１２に加えて８個までサブシステムを接続することができる。
スロット１８を介して接続されている前記サブシステムは、それらがデータ転送バス１０に適正にインタフェースしていることを条件として、全く従来のものであってよい。このため、ディスクサブシステム１４及び通信サブシステム１６については詳細な説明を省略する。
第１図に示すように、中央プロセッササブシステム１２は３つの別個の中央プロセッサモジュール２０、２２、２４からなる。以後、本明細書に於いてこれらのプロセッサモジュールを「ｃｐｕセット」と称することにする。データ転送バス１０によってｃｐｕセット２０、２２、２４間の主要な相互接続が得られるが、これら３つのｃｐｕセットを相互接続する同期バス２６が更に存在する。同期バス２６は、プロセッササブシステム１２の外部にあるコンピュータのいずれの部分とも接続されていない。
第２図は、ｃｐｕセット２０、２２又は２４（３個とも全て同一）の中の１つを詳細に示すブロック図である。前記ｃｐｕセット内には、専用バス２８と共用バス３０との２つのデータ転送バスが存在する。これらのバスの双方にバスインタフェース３２が接続され、それによって前記両バス間のデータ転送が可能である。別のバスインタフェース３４が共用バス３０及び前記コンピュータの主データ転送バス１０の双方に接続されている。制御論理回路ブロック３６がバスインタフェース３２、３４双方に接続されて、これらインタフェースの動作を制御する。一般的に言って、専用バス／共用バス・アーキテクチャを用いることは、コンピュータの中央プロセッサ部分の設計に於いて通常行なわれているが、バスインタフェース３４の詳細な構造及び動作が新規である。これらを詳細に説明するためには、前記コンピュータの正常な動作時にｃｐｕセット２０、２２、２４が共働して動作する仕組みについて事前に説明する必要がある。
前記各ｃｐｕセットは、専用バス２８に直接接続された中央処理装置３８（以下、ＣＰＵ３８と称する）を有する。本実施例では、前記ＣＰＵが１個のモトローラ（Ｍｏｔｏｒｏｌａ）製６８０４０集積回路であるが、他の型式のＣＰＵを同様に使用することができる。専用バス２８に接続されている他のハードウェア要素には、専用読出し書込み用メモリ４０、読出し専用メモリ（ＰＲＯＭ）４２、及び特定目的（専用）読出し書込み用メモリ４４が含まれる。ＣＰＵ３８と各メモリ４０、４２、４４間の全てのデータ転用は、常に専用バス２８に制限される。読出し書込み用メモリ４０及び読出し専用メモリ４２は、従来のものであるから詳細な説明は省略する。本明細書の後の部分に於いて、特定目的メモリ４４の構成及び使用について詳細に説明する。このメモリ４４は、「ダーティ」メモリと称されるが、その理由は後の説明から明らかになる。
３個のｃｐｕセット２０、２２、２４を使用することによって、「三重モジュール冗長度」即ちＴＭＲが得られる。別言すれば、いずれかの前記ｃｐｕセットに発生した欠陥は、前記３個のｃｐｕセットの行動を比較することによって検出することができる。正常な動作時には、３個全てのｃｐｕセット２０、２２、２４が全く同じメモリ内容を（そのメモリ４０、４２、４４内に）有し、かつ互いに正確に同期してそれらのメモリから同じ命令を実行することになる。これらの命令によって要求されるデータ転送のみがＣＰＵ３８と（前記データ転送を実行するＣＰＵ３８と同じｃｐｕセットの）メモリ４０、４２、４４間に於いて行なわれる場合、ｃｐｕセット間に主データ転送バス１０を介しての対話はない。
これは、ＣＰＵ３８によって実行される命令が、バスインタフェース３４ではなくバスインタフェース３２を介して行なわれるデータ転送、別言すればＣＰＵ３８と共用バス３０に接続されたいずれかのハードウェア要素との間のデータ転送を必要とする場合にも同じである。第２図が示すように、各ｃｐｕセット２０、２２、２４は、その共用バス３０に接続された次の５つのハードウェア要素を有する。即ち、共用読出し書込み用メモリ４６、ＲＳ−２３２インタフェースを提供してコンピュータ端末が前記ｃｐｕセットに直接接続できるようにする（２６９２集積回路からなる）非同期レシーバ−トランスミッタ回路４８と、（９５１３集積回路からなる）タイマ回路５０と、（後で詳細に説明する）一群の制御・状態レジスタ５２と、（同様に後で詳細に説明する）特定目的読出し書込み用メモリ５４（このメモリ５４は、後の説明から明らかになるように、「スロット応答メモリ」と称される）とである。メモリ４０、４２、４４の場合と同様に、共用バス３０に接続された前記全ハードウェア要素は、前記コンピュータの正常動作時には、３個全てのｃｐｕセット２０、２２、２４について全く同じ状態を有する。
ＣＰＵ３８によって実行される他の全ての命令には、直列をなすバスインタフェース３２、３４の双方が関連する。例えばこのような命令は、ＣＰＵ３８がデータをディスクサブシステム１４へに対して又はそれから転送しようとすることを要求する。制御論理回路ブロック３６は、２つの信号線を有し、その状態は前記データ転送の試みに於いてバスインタフェース３４の行動を制御する際に特に重要である。これらは「ｍａｓｔｅｒ」、（マスタ）線５６と「ｅ＿ｓｔａｔｅ」信号線５８とである。いずれの時点に於いても、各ｃｐｕセット２０、２２、２４は、以下の表に示すように、そのｃｐｕセットの２つの信号線５６、５８に於ける論理レベルによって定義される３つの状態のいずれかである。
0003713554.tif 000002
前記コンピュータの正常動作時には、３つのｃｐｕセット２０、２２、２４のいずれか１つが、信号線５６、５８に於ける論理レベルによって定義されるような「マスタ」状態にあり、他の２つが「チェッカ」状態にある。いずれの前記ｃｐｕセットも、故障が発生しない限り、「エラー」状態にならない。
あるｃｐｕセットが前記「マスタ」状態にあり、かつそのＣＰＵ３８が、（例えば）ディスクサブシステム１４へのまたはそれからのデータ転送を必要とする命令に直面した場合、そのｃｐｕセットのバスインタフェース３４は、アドレス信号及び制御信号を概ね従来の手法で主データ転送バス１０に駆動して前記データ転送を実行する。このデータ転送が行なわれている間、前記プロセッササブシステムの他の２つのｃｐｕセット（双方とも「チェッカ」状態にあると仮定する）は、その専用バス及び共用バス２８に於ける信号が、前記「マスタ」ｃｐｕセットの対応する前記バスに於ける信号と全く同じでなければならない。しかし、前記「チェッカ」ｃｐｕセットのバスインタフェース３４は、前記アドレス信号及び制御信号を主データ転送バス１０に通過させない。代わりに、各ｃｐｕセットのバスインタフェース３４は、単に（そのｃｐｕセットの）共用バス３０に於ける信号を前記主データ転送バスに於ける信号と比較するだけである。全く同様の検査処理が、前記「マスタ」ｃｐｕセットによって実行される。これらの比較によって全く差が検出されない場合には、中央プロセッササブシステム１２は健全であるとみなされ、前記コンピュータの動作が正常に続けられる。差が検出された場合に起こることについては後述する。しかしながら、ここで言えることは、そのような差の結果の１つが、前記ｃｐｕセットに於ける「ｅ＿ｓｔａｔｅ」信号線５８が論理「１」レベルに変わる、即ち３個全てのｃｐｕセットが（今のところ）「エラー」状態にあることを意味する。
あるｃｐｕセットが「エラー」状態にある場合、その制御論理３６によってそのＣＰＵ３８は、そのバスインタフェース３４を介してデータ転送を全く実行することができない。しかしながら、「エラー」状態にあるｃｐｕセットのバスインタフェース３４は、主データ転送バス１０に於ける「スレーブ」デバイスとして動作することができる。別言すれば、「マスタ」状態にある別のｃｐｕセットが、「エラー」状態にあるｃｐｕセットの共用バス３０に接続されたいずれかのハードウェア要素に対して又はそれからデータを転送することができる。
上述の説明は、３つのｃｐｕセット２０、２２、２４間に於ける共働関係をまとめたものに過ぎない。多くの重要な部分については、第３図乃至第６図に関連して以下に詳細に説明する。これらの図面には（第４図の状態遷移図を除く）、制御論理ブロック３６（各ｃｐｕセットの一部分を形成する）が記載されている。この論理ブロックは、前記ｃｐｕセットの他の多くの部分の動作を調整する任務を有する。前記論理ブロックは、主としてプログラム可能な論理アレー（ＰＡＬ）からなり、その行動は、入力信号及び出力信号間の関係を定義する一組の論理式によって極めて容易に説明される。前記ｃｐｕセットの各部分に関する以下の説明は、明確に該ｃｐｕセットの関部分に関連する前記入力信号及び出力信号について言及している。本明細書の最後の部分には、論理方程式の完全なリストが記載されており、論理ブロック３６の行動の完全な定義が得られる。
第３図は、ｃｐｕセット２０、２２又は２４が、「マスタ」状態にある場合の、そのｃｐｕセットのバスインタフェース３４の行動を示している。第３図に示されるように、前記主データ転送バスは、一群のアドレス線６０と、一群のデータ線６２と、一群の制御線、即ち書込み（ＷＲＩＴＥ）線６４、データストローブ（ＤＳ）線６６、アドレスストローブ（ＡＳ）線６８、非同期転送応答（ＡＣＫ）線７０、及び同期転送応答（ＴＡ）線７２とを有する。バスインタフェース３４は、その出力がそれぞれ前記アドレス線、ＷＲＩＴＥ線、ＤＳ線及びＡＳ線に接続されたバッファ７４、７６、７８、８０を備える。バッファ７４、７６の入力が、共用バス３０の対応する信号線に接続されているのに対し、バッファ７８、８０の入力は、論理ブロック３６からの２本の出力信号線８２、８４に接続されている。前記論理方程式では、信号線８２、８４に於ける信号がそれぞれ「ｔｂ＿ｄｓ」及び「ｔｂ＿ａｓ」である。また、バッファ７４、７６、７８、８０は全て、論理ブロック３６から別の出力信号線８６に接続された「イネーブル」入力を有する。前記論理方程式では、信号線８６に於ける信号が「ｔｏ＿ｂｕｓｅ＿ａ」である。この信号は、「マスタ」状態にあるｃｐｕセットがバスインタフェース３４の使用を必要とする命令を実行する毎に表明される。これらの命令を認識するために、前記ｃｐｕセットは、専用バス２８に接続された専用アドレスデコーダ８８を備える。前記専用バスに於けるアドレスが、主データ転送バス１０へのアクセスのために割り当てられた所定の範囲内に入っている場合には、前記デコーダは常に、論理ブロック３６の入力に接続された信号線９０に於ける出力信号を活動化する。論理ブロック３６に関する前記論理方程式では、この信号は「ｂｕｓ」である。
また、バスインタフェース３４は、前記主データ転送バスのデータ線６２と共用バス３０の対応する線とを相互接続する１組の双方向性バッファ９２を備える。バッファ９２は、データ転送の各方向毎に１つずつ、２つの「イネーブル」入力を有する。これら２つの入力は、論理ブロック３６からの別の２つの出力信号線９４、９６に接続されている。前記論理方程式では、信号線９４に於ける信号（共用データバス３０から主データ転送バス１０へのデータ転送を可能にする）は「ｔｏ＿ｂｕｓｅ＿ｄ」であり、信号線９６に於ける信号（逆方向へのデータ転送を可能にする）は「ｆｒｏｍ＿ｂｕｓｅ＿ｄ」である。一方（かつ一方のみ）の信号線９４、９６が、信号線９０に於ける前記「ｂｕｓ」信号が活動状態になる場合に表明される。
制御論理３６に組込まれた制御方程式によって、「書込み」命令に於ける主データ転送バス１０へのデータ転送及び「読出し」命令に於ける共用バス３０へのデータ転送が、ある特別な場合を除いて可能になる。この特別な場合とは、ｃｐｕセットのＣＰＵ３８が、その共用バス３０に接続されたハードウェア要素に対してアクセスする際に、そのアクセスのために使用するアドレスによって次の２つのいずれかの方法を取り得るために生じる。即ち、
（ｉ）信号線９０に於ける前記信号「ｂｕｓ」を活動化せず、従ってバスインタフェース３４に関係しない純粋な内部アクセス、又は
（ｉｉ）バスインタフェース３４を通じての自己参照アクセス、即ち前記アクセスのために使用されるアドレスが、信号線９０に於ける前記「ｂｕｓ」信号を活動状態にさせる範囲内にあることを意味する。
（ｉｉ）の場合には、信号線９４（「ｔｏ＿ｂｕｓｅ＿ｄ」に関する）が、データ転送の方向が「読出し」又は「書込み」であるかどうかに拘らず、常に活動状態になる。これは、いずれの転送方向の場合にも、データのソース（ＣＰＵ３８又は共用バス３０に接続されたいずれかのハードウェア要素）がバスインタフェース３４の共用バス側にあるからである。
このことは、信号線９４を活動化させることによって、制御論理３６は、転送させるデータが確実に主データ転送バス１０のデータ線６２に出現するようにすることを意味する。これによって、次に前記「チェッカ」ｃｐｕセットはこのデータにアクセスできるようになる。「書込み」データ転送の場合には、このデータに関して「チェッカ」ｃｐｕセットが行なうべきことは、これをそれ自身の共用バス３０に於けるデータと比較することだけである。しかしながら、「読出し」データ転送の場合には、「チェッカ」ｃｐｕセットは実際に前記データを読み込まなければならない。別言すれば、全ｃｐｕセット（「エラー」状態にあるものを除く）は同じデータを読込むことになり、従ってそれらの内部状態は完全に歩調が合った状態である。
主データバス１０に於けるデータ転送は、ＤＳ線６６及びＡＳ線６８に於ける活動レベルによって知らされる。前記データ転送が正常に進行していると仮定すれば、スロット１８に接続されたいずれかの前記サブシステム（又はいずれかのｃｐｕセット２０、２２、２４）が、非同期転送応答（ＡＣＫ）線７０を活動化させることによって、前記データ転送の完了を知らせる。各ｃｐｕセットでは、信号線７０が、クロック発信回路１００から到来するクロック信号に接続されたクロック入力を有するＤ型フリップフロップ９８のＤ（データ）入力に接続されている。クロック回路１００は、前記ｃｐｕセットに於いて生成させる全てのクロック信号に応答するようになっており、かつ（前記コンピュータが正常に動作している間）３つ全部のｃｐｕセット２０、２２、２４に於けるクロック回路１００が正確に同期して稼動する。フリップフロップ９８のＱ出力は、バッファ１０２の入力に接続されており、その出力は同期転送応答（ＴＡ）線７２に接続されている。また、バッファ１０２は、「マスタ」線５６に接続された「イネーブル」入力を有し、それによって前記「マスタ」ｃｐｕセットのみがＴＡ線７２を駆動するようになっている。ＴＡ線７２は、バッファ１０２及び主データ転送バス１０に加えて制御論理３６の入力に接続されている。前記制御論理を定義する方程式では、前記ＴＡ線からの信号は「ｒｓｂ＿ｔａ」である。同様に前記データ転送が正常に進行していると仮定すれば、前記ＴＡ線からの信号の効果は、制御論理３６をしてＣＰＵ３８に接続された出力線１０４を活動化させることによって、前記データ転送を終了させることである。出力線１０４は、前記論理方程式に於ける「ｕ＿ｔａ」項に対応し、ＣＰＵ３８の「転送応答」ピン（ＣＰＵ３８のピンの名称は、該ＣＰＵがモトローラ製６８０４０であることを前提としている）に接続されている。
前記転送応答信号を同期化させるためにフリップフロップ９８を用いる理由は、信号線７０に於ける非同期信号が前記ｃｐｕセットに於ける事象に関連して任意の時点で状態を変化させ得るからであり、それによって、この信号が１個以上の前記ｃｐｕセットの行動に影響を直接与え得る場合には、前記ｃｐｕセットの動作が継続して完全に歩調を合わせた状態にあることを保証できなくなるからである。この点を説明するために、非同期信号が前記全てのｃｐｕセットによって同時にサンプリングされる場合を考える。前記信号がサンプリングされた正にその時点で状態を変化させるようになっている場合、それはある１個のｃｐｕセットには論理「１」として表れるが、他のｃｐｕセットには論理「０」として表れ、このためにｃｐｕセットの歩調が合わなくなる。他方、フリップフロップ９８によって供給される同期信号ＴＡは、「マスタ」ｃｐｕセットに於けるクロック信号に関連してある時点でのみ状態を変化させることができる。前記「チェッカ」ｃｐｕセットに於けるクロック信号が前記「マスタ」ｃｐｕセットに於ける信号と正確に同期して稼動し、従っていずれの前記ｃｐｕセットも実際に前記信号を刻時（サンプリング）していない時点で信号ＴＡの活動化が生じることを保証することは不可能である。前記信号の次の刻時は、該信号が実際に変化していない間に起こることを保証できるだけであり、それによって全ｃｐｕセットが同じ論理レベルで刻時し、かつ完全に同期してその命令を実行し続ける。
バスインタフェース３４が関連するデータ転送の際に生じる前記事象について上述した説明は、異常な行動が全く生じないことを前提としている。しかしながら、このようなデータ転送の際には、前記「マスタ」ｃｐｕセットが主データ転送バス１０に於ける情報の妥当性を監視する。この監視を実行するために必要なハードウェアが第３図に示されている。これには、コンパレータ回路１０６及びパリティ検査回路１０８が含まれる。
コンパレータ回路１０６は、データ転送を試みる際に別個の２段階の検査を実行する。これら各段階の検査は論理回路ブロック３６の部分の行動を示した状態遷移図である第４図に関連して詳細に説明することができる。（制御論理３６を定義する前記論理方程式では、対応する方程式が７つの状態Ｓ０〜Ｓ６の定義であり、かつこれらの状態定義の一部となる論理項が前記論理式によって定義されている。）
第４図の状態図では、状態Ｓ０が、バスインタフェース３４を介してデータ転送が行なわれていない場合の関連する論理項の状態を定義する「アイドル」状態である。バスインタフェース３４が関連する全てのデータ転送は、アドレスデコーダ８８からの信号「ｂｕｓ」によって開始される。同時に、また信号「ｂｕｓ」が、上述したように前記バスインタフェースのアドレスバッファ７４及びデータバッファ９２を使用可能な状態にする。このとき、コンパレータ回路１０６による第１段階の検査が行なわれる。但し、制御論理３６は信号「ｔｂ＿ａｓ」及び「ｔｂ＿ｄｓ」をまだ活動化していない。
コンパレータ回路１０６は、４つの入力線群を有する。これらの中の２つの入力線群１１０、１１２が、共用バス３２及び主データ転送バス１０のアドレス線にそれぞれ接続されているのに対し、他の２つの入力線群１１４、１１６は同様に前記両バスのデータ線に接続されている。コンパレータ回路１０６内には、２個の別個のコンパレータ（添付図面には明確に図示されていない）があり、一方のコンパレータは信号線１１０、１１２の信号を比較し、かつ他方のコンパレータは信号線１１４、１１６の信号を比較する。また、前記コンパレータは、共用バス３０の前記「書込み」線に接続されかつ前記「ｔｂ＿ａｓ」アドレスストローブ信号（制御論理３６からの出力）に接続された別の２本の入力線１１８、１２０を有する。コンパレータ回路１０６内では、信号線１１８、１２０及び前記２個のコンパレータからの出力が組合せ論理（第３図には明確に図示されていない）によって一緒にゲートされており、主データ転送バス１０の状態が共用バス３０の状態と一致するとコンパレータ１０６が考えるかどうかを示す信号を供給する３本の出力線１２２、１２４、１２６に出力を供給するようになっている。これら３個の出力信号は論理的に同一であり、同期バス２６を介して３つのｃｐｕセット２０、２２、２４に分配される。第３図は、この信号の分配を示している。同図に示されるように、各ｃｐｕセットは、前記同期バスに接続された３本の入力信号線１２８、１３０、１３２を有する。前記同期バスに於ける相互接続によって、これらの信号線は、確実に前記３個のｃｐｕセットの異なるもののコンパレータ回路１０６の出力にそれぞれ接続されることになる。信号線１２８、１３０、１３２は、制御論理ブロック３６の入力に接続されている。前記論理方程式では、これら信号線に於ける信号は「ｂｕｓ＿ｏｋ０」、「ｂｕｓ＿ｏｋ１」、及び「ｂｕｓ＿ｏｋ２」である。
コンパレータ回路１０６による第１段階の検査は次のようにして行なわれる。コンパレータ回路１０６は、前記「ｔｂ＿ａｓ」信号（信号線８４、１２０を介して制御論理３６から受信する）がまだ活動状態でないという事実から、これが第１段階の検査であることを識別する。その入力線１１０、１１２を介して前記２本のバスのアドレス線から受取る信号を比較する。また、共用バス３０の前記「書込み」線が「書込み」サイクルを示している場合には、前記コンパレータはその入力線１１４、１１６を介して前記バスのデータ線から受取る信号を比較する。この比較（または「書込み」サイクルの場合にはこれらの比較）によって不一致が示されない場合には、前記コンパレータはその３本の出力信号線１２２、１２４、１２６のそれぞれに「ｂｕｓ＿ｏｋ」信号を生成する。
前記データ転送が正常に進行するためには、「マスタ」ｃｐｕセットに於ける制御論理ブロック３６が、それ自身のコンパレータ回路１０６から、及びそれが前記「チェッカ」状態にあると考える他の２つのｃｐｕセットのいずれか（前記「チェッカ」状態にあるｃｐｕセットの行動については後述する）から「ｂｕｓ＿ｏｋ」信号を受信しなければならない。「エラー」状態にあると考えるｃｐｕセットからの全ての「ｂｕｓ＿ｏｋ」信号は無視される。前記論理方程式に関して言えば、この「エラー」状態にあるｃｐｕセットからの信号のマスキングは、論理項「ａｏｋ」を定義する方程式によって示されている。前記３個の「ｂｕｓ＿ｏｋ」信号と同様に、この論理項は、制御及び状態レジスタ５２（共用バス３０に接続されている）からの３本の信号線１３４、１３６、１３８を介して制御論理３６が受け取る３つの信号「ｓｉｇｎｉｆ０」、「ｓｉｇｎｉｆ１」、「ｓｉｇｎｉｆ２」に依存する。前記コンピュータが正常に動作している限り、３本の全信号線１３４、１３６、１３８は、３つの全ｃｐｕセットが有効な「ｂｕｓ＿ｏｋ」信号を供給できるとこのｃｐｕセットが考えていることを示す論理「１」レベルを搬送する。しかし、前記「マスタ」ｃｐｕセットがその考えを変更すべきである場合には、制御・状態レジスタ５２にデータを書込むことによって、信号線１３４、１３６、１３８のいずれか１つ又は複数の線に於ける信号を変更する（ソフトウェアの制御下に於いて）ことができる。
前記「マスタ」ｃｐｕセットが、現時点で有効であると思われる全ｃｐｕセットからの「ｂｕｓ＿ｏｋ」信号を受取ると仮定すれば、前記論理方程式に於ける前記「ａｏｋ」項は活動状態になる。制御論理ブロック３６が、現在第４図の状態遷移図に於ける状態Ｓ２に到達していることが想起される。この状態から、活動状態にある「ａｏｋ」信号によって状態を状態Ｓ３に変更することができ、その状態では、制御論理ブロック３６の出力線８２、８４（論理項「ｔｂ＿ｄｓ」及び「ｔｂ＿ａｓ」に対応する）が活動状態になる。これら活動状態の信号はバッファ７８、８０を介して伝搬して主データ転送バス１０のデータストローブ線６６及びアドレスストローブ線６８に到達し、それによってこのバスに於けるデータ転送を開始させる。
１個（又は複数）の期待された「ｂｕｓ＿ｏｋ」信号が活動状態になり損ねた別の場合には、論理項「ａｏｋ」が非活動状態のままであり、かつ代わりに制御論理ブロック３６が状態Ｓ２から状態Ｓ５に変化する。状態Ｓ５の定義は、論理項「ｂ＿ｄｔｅａ」がこの状態に於いて真になることを示しており、この項が次に論理項「ｕ＿ｔｅａ」に影響を与える。制御論理ブロック３６は、前記「ｕ＿ｔｅａ」項に直接依存する出力線１４０を有する。この出力線１４０は、ＣＰＵ３８の「転送エラー応答」ピン（同様に、このピンの名称はＣＰＵ３８がモトローラ製６８０４０であることを前提としている）に接続されている。ＣＰＵ３８は、現在のデータ転送サイクルを中止し、かつその制御ソフトウェアに於ける例外ハンドラ・ルーチンに入ることによって、このピンに於ける活動レベルに対して応答する。
また、前記論理項「ｂ＿ｄｔｅａ」は、「ｅ＿ｓｔａｔｅ」出力信号線５８が活動状態になるようにし、前記ｃｐｕセットをその「エラー」状態にすることによって、前記コンピュータが一時的に「マスタ」ｃｐｕセットが無い状態になる。前記コンピュータの全ｃｐｕセット（既に「エラー」状態にあるものを除く）が「エラー」状態となり、その例外ハンドラ・ルーチンを実行する。この例外ハンドラ・ルーチンによって実行される動作は、３つの「ｂｕｓ＿ｏｋ」信号のいずれの信号が活動状態になり損ねたかを識別できるものでなければならず、かつこの情報及び他の情報から、いずれかの前記ｃｐｕセットを「マスタ」状態に戻すものでなければならない。この変更をソフトウェアの制御下で行なわれるようにするハードウェアについては後述する。前記ソフトウェア例外ハンドラの他の部分は、前記「ｂ＿ｄｔｅａ」信号が活動状態になったときに試みた前記データ転送が、２度目の試みで確実に首尾よく完了し得るようにするために必要な動作に関連する。例えば、必要とされる１つの動作は、制御・状態レジスタ５２に書込みを行なって前記「ｓｉｇｎｉｆ」信号を変更することである。
前記例外ハンドラの実行が完了すると、前記「マスタ」ｃｐｕセット（先にマスタであったものと同じｃｐｕセットである必要はない）が、前記「ｂ＿ｄｔｅａ」信号が活動状態になったときに実行されている命令と同じ命令の実行に戻る。前記例外ハンドラ・ソフトウェアにより行なわれる動作のために、この命令が２度目の試みに於いて首尾よく実行されることを期待できる。別言すれば、前記例外処理によって生じる僅かな遅れは別として、前記ソフトウェア（これがシステムソフトウェア又はアプリケーションソフトウェアを実行するものであろうと）は、前記ハードウェアが何らかの問題を生じているという事実に拘らず、割込みなしに稼動すると思われる。
再び第４図のコンパレータ回路１０６及び状態遷移図について説明すると、制御論理３６が首尾よく状態Ｓ３に到達する場合には、信号線７２に於けるＴＡ信号が活動状態になるのを待つことになる。この信号は、データ転送に関する前記ｃｐｕセットの要求（前記アドレスストローブ信号及びデータストローブ信号によって示される）が確認されていることを示す。この確認は、主データ転送バス１０のアドレス線６０に於けるアドレス情報によって、サブシステム１４又は１６（又はｃｐｕセット２０、２２又は２４）のいずれかから到来する。この確認が受信されると、制御論理３６は状態Ｓ３からＳ４に変化し、前記コンパレータ回路による第２段階の検査が以下のように行なわれる。
制御論理３６が状態Ｓ４にある場合、論理項「ｂ＿ｄｔａ」が活動状態になる。「書込み」サイクルの場合には、これによって無条件に論理項「ｕ＿ｔａ」が活動状態にされ、従ってＣＰＵ３８に接続された信号線１０４が活動状態になって、前記データ転送を正常に終了させる。「読出し」サイクルの場合には、前記「ｂｕｓ＿ｏｋ」信号（入力信号線１２８、１３０、１３２に於いてコンパレータ回路１０６から受信）が全て活動状態にある（「エラー」状態にあると思われるｃｐｕセットは別として）ことを前提として、論理項「ｂ＿ｄｔａ」によって同様に論理項「ｕ＿ｔａ」が活動状態にされる。そうでない場合には、論理項「ｕ＿ｔｅａ」は、論理項「ｕ＿ｔａ」に先立って活動状態になり、それによってＣＰＵ３８の「転送エラー応答」ピンへの信号線１４０が活動状態になり、かつコンパレータ回路１０６によって実行される第１段階の前記検査に関して上述したように、例外処理を開始させる。
「読出し」データ転送サイクルの第２段階では、コンパレータ回路１０６の前記コンパレータによる検査が全く実行されず、前記データの一貫性に関する検査が、その出力が線１４２によってコンパレータ回路１０６に接続されているパリティ検査回路１０８によって実行される。コンパレータ回路１０６の出力線１２２、１２４、１２６に於ける前記「ｂｕｓ＿ｏｋ」信号は、パリティエラーが検出されない場合にのみ活動化される。従って、パリティエラーがいずれかの前記「マスタ」及び「チェッカ」ｃｐｕセットについて生じた場合には、上述したように例外処理が開始される。
これから明らかなように、スロット１８に接続された全ての前記サブシステムは、パリティ発生回路を備えていなければならず、それによって（ハードウェアの問題が全く存在しない場合には）「読出し」データ転送の際にバス１０のデータ線６２にパリティエラーが起こらないことになる。
論理制御ブロック３６は、主データ転送バス１０が関与するデータ転送の際に状態Ｓ４に到達した後、自動的に「アイドル」状態Ｓ０に戻り、それによって前記バスのデータストローブ線６６及びアドレスストローブ線６８の双方をその非活動状態に戻す。
バス１０が関連するデータ転送が終了できる更に２つの方法がある。これらについては後述する。
本明細書の次の部分は、前記「チェッカ」状態にあるｃｐｕセットの行動に関するものである。第５図は、第３図と類似しているが、「チェッカ」ｃｐｕセットについて活動状態にあるバスインタフェース３４の部分のみを示している。このようなｃｐｕセットの行動は、多くの点で前記「マスタ」ｃｐｕセットの行動に類似しており、従って以下の説明では、最初に「マスタ」の行動と「チェッカ」の行動との差を集中的に説明する。「マスタ」及び「チェッカ」ｃｐｕセットのＣＰＵ３８が正確に同期して全く同じ命令を実行することになる点を忘れてはならない。
「マスタ」ｃｐｕセットと「チェッカ」ｃｐｕセットとの行動の第１の差は、線８６に於ける信号（前記論理方程式に於ける項「ｔｏ＿ｂｕｓｅ＿ａ」を表す）が、「チェッカ」ｃｐｕセットに於いて決して活動状態にならないことである。これは、「チェッカ」ｃｐｕセットが主データ転送バス１０のアドレス線６０、ＷＲＩＴＥ線６４、ＤＳ線６６、ＡＳ線６８を決して駆動しようとしないことを意味する。しかしながら、前記「マスタ」ｃｐｕセット及び「チェッカ」ｃｐｕセットが正確に同期して動作すべきであることから、前記「マスタ」ｃｐｕセットがこれらの線に対して駆動する条件は、各「チェッカ」ｃｐｕセットの共用バス３０の対応する線に於ける条件と正確に整合するべきである。この整合は、コンパレータ回路１０６によって検査される。前記コンパレータ回路の動作は、「チェッカ」ｃｐｕセットに於いて「マスタ」ｃｐｕセットに於ける場合と全く同じである。「チェッカ」ｃｐｕセットのコンパレータ回路１０６によって不整合が検出された場合には、前記「マスタ」ｃｐｕセットについて上述したと全く同じ事象のシーケンスが起こる。
「マスタ」ｃｐｕセットと「チェッカ」ｃｐｕセットとの行動に於ける第２の差は、線９４に於ける信号（前記論理方程式に於ける項「ｔｏ＿ｂｕｓｅ＿ｄ」を表す）が、「書込み」サイクルが実行されているときに「チェッカ」ｃｐｕセットに於いて活動状態にならない。別言すれば、前記「チェッカ」ｃｐｕセットは、主データ転送バス１０に於いてデータ線６２を駆動しないが、アドレス線６０に関して、コンパレータ回路１０６が、バス１０の前記データ線に対して駆動する条件を前記「チェッカ」ｃｐｕセットの共用バス３０の前記データ線への条件と比較する。同様に、不整合から生じる事象のシーケンスは、前記「マスタ」ｃｐｕセットについて上述したものと全く同じである。
「チェッカ」ｃｐｕセットが「読出し」データ転送をしようとする場合、２本の信号線９４、９６の行動（前記論理方程式に於ける項「ｔｏ＿ｂｕｓｅ＿ｄ」及び「ｆｒｏｍ＿ｂｕｓｅ＿ｄ」に対応する）は、前記「マスタ」ｃｐｕセットについて上述した行動から変化しない。これによって、（ハードウェアの故障が存在しない場合）同じデータが主データ転送バス１０のデータ線６２と全ての「マスタ」ｃｐｕセット及び「チェッカ」ｃｐｕセットの共用バス３０のデータ線とに確実に存在することになる。これら全てのｃｐｕセットについて同じデータが使用可能であることは、それらの読出し書込み用メモリ４０（及びその状態が到来するデータに依存する前記ｃｐｕセットの他の部分）の内容が全く同じままであって、ｃｐｕセットの動作を確実に同期した状態で継続させるために必要である。
大抵の「読出し」データ転送に関して、信号線９６（論理項「ｆｒｏｍ＿ｂｕｓｅ＿ｄ」に対応）は、各「チェッカ」ｃｐｕセットについて活動状態になり、それによって双方向性データバッファ９２が主データ転送バス１０からデータをｃｐｕセットの共用バス３０に転送できるようになる。しかしながら、前記「マスタ」ｃｐｕセットによって前記主データ転送バスに配置されたアドレスが、ＣＰＵ３８がいずれかの前記「チェッカ」ｃｐｕセットからのデータを読込むことを望んでいることを示す場合には、信号線９４（論理項「ｔｏ＿ｂｕｓｅ＿ｄ」に対応）が、代わりに活動化されることになる（しかし、前記データを供給しなければならない当該「チェッカ」ｃｐｕセットについてのみである）。この種のデータ転送は、前記「マスタ」ｃｐｕセットの動作に関して上述した自己参照アクセスに類似しているが、前記データのソースが前記「マスタ」ｃｐｕセットにあるのではなく前記「チェッカ」ｃｐｕセットにある点で異なる。
主データ転送バス１０が関連する全ての「読出し」データ転送の際に、各「チェッカ」ｃｐｕセットのコンパレータ回路１０６及びパリティ検査回路１０８は、前記「マスタ」ｃｐｕセットについて上述したと全く同じようにして動作する。別言すれば、前記コンピュータの全ての「マスタ」ｃｐｕセット及び「チェッカ」ｃｐｕセットは、パリティエラーを生じることなくデータを受信しなければならない。そうでない場合には、パリティエラーを検出する前記ｃｐｕセットは線１２２、１２４、１２６に於けるその「ｂｕｓ＿ｏｋ」信号を活動化せず、かつ全ての「マスタ」及び「チェッカ」ｃｐｕセットが同時に「エラー」状態に変化しかつ例外処理を開始する。
上述したように、「エラー」状態にあるｃｐｕセットは、主データ転送バス１０を通じてデータ転送を全く実行することができないが、前記「マスタ」ｃｐｕセットによって実行されるデータ転送に於いて「スレーブ」として参加することができる。第６図は、前記「エラー」状態にある前記ｃｐｕセットについて、かかるデータ転送の際に活動状態にあるバスインタフェース３４の部分を示している。第６図に示されるいくつかの部分は、先に説明した前記自己参照データ転送についても関連している。
各ｃｐｕセットのバスインタフェース３４は、主データ転送バス１０のアドレス線６０に接続されたアドレスデコーダ１４４を備える。前記デコーダは、制御論理ブロック３６の入力に接続された出力信号線１４６を有する。この信号線の信号は、前記論理方程式に於いて「ａｄｄｒｅｓｓ＿ｍａｔｃｈ」として表され、データ転送の際に前記「マスタ」ｃｐｕセットによって前記バス１０に配置されたアドレスが、このデータ転送を、デコーダ１４４を含む前記ｃｐｕセットへの又はそれからの転送として識別する。デコーダ１４４によって線１４６に生成される前記信号は、前記デコーダを含む前記ｃｐｕセットが「マスタ」、「チェッカ」又は「エラー」状態のいずれであっても、この意味を有する。
また、バスインタフェース３４は、１群のアドレスバッファ１４８を備え、その入力は前記主データ転送バスのアドレス線６０に接続され、かつその出力は前記ｃｐｕセットの共用バス３０に接続されている（別言すれば、これらのバッファは、前記「マスタ」ｃｐｕセットの動作を示す第３図に表されるアドレスバッファ７４と逆方向に動作する）。また、バッファ１４８は、信号線１５０を介して制御論理ブロック３６の出力に接続された「イネーブル」入力を有する。この線は、前記論理方程式に於ける項「ｆｒｏｍ＿ｂｕｓｅ＿ａ」に対応する。ｃｐｕセットが前記「エラー」状態にありかつ「スレーブ」としてデータ転送に参加する場合、前記制御論理は信号線１５０を活動化してバッファ１４８を使用可能にし、それによって主データ転送バス１０のアドレス情報が共用バス３０に於いて使用可能となり、共用バス３０に接続された様々な項目のいずれが前記データ転送に参加すべきかを識別する。
制御論理ブロック３６の動作を記述した前記論理方程式に関して、デコーダ１４４からの信号「ａｄｄｒｅｓｓ＿ｍａｔｃｈ」の効果は、項「ｂｕｓ＿ａｃｃｅｓｓ」及び「ｂｕｓ＿ｒｅｐｌｙ」が真になるようにすることである。「エラー」状態にあるｃｐｕセットの場合、項「ｂｕｓ＿ｏｗｎｅｒ」も同様に真になる。この項及び項「ｕ＿ｏｗｎｅｒ」を定義する前記論理方程式によって、ＣＰＵ３８（真である「ｕ＿ｏｗｎｅｒ」項によって示される）に対して又はバスインタフェース３４（真である「ｂｕｓ＿ｏｗｎｅｒ」項によって示される）に対して共用バス３０の所有を割り当てる仲裁（ａｒｂｉｔｒａｔｉｏｎ）機構が完全に定義される。
「エラー」状態にあるｃｐｕセットの場合には、先に説明したばかりの変化が制御論理３６の４本の出力信号線を介してバスインタフェース３４に影響を与えることになる。これらの中の３本の信号線は線１５０、９４、９６（論理項「ｆｒｏｍ＿ｂｕｓｅ＿ａ」、「ｔｏ＿ｂｕｓｅ＿ｄ」及び「ｆｒｏｍ＿ｂｕｓｅ＿ｄ」を表す）である。これらの線の第１のものによって、上述したようにアドレスバッファ１４８が制御される。第２及び第３の線９４、９６は、双方向性データバッファ９２を制御する。これら２本の線のいずれかが、主データ転送バス１０のＷＲＩＴＥ線６４から制御論理３６によって受信される信号「ｒｂｕｓ＿ｗｒｉｔｅ」によって活動状態にされる。前記「ｂｕｓ＿ｏｗｎｅｒ」項及び「ｂｕｓ＿ｒｅｐｌｙ」項に於ける変化によって影響を受ける制御論理３６からの残りの出力信号線は、バッファ１５４を介して主データ転送バス１０の非同期転送応答線７０（ＡＣＫ）に接続された線１５２である。線１５２の信号出力は、前記論理方程式に於ける項「ｔｂｕｓ＿ｔａ」を表す。活動状態になるデコーダ１４４からの出力線１４６によって開始されるいずれのデータ転送の場合にも、項「ｔｂｕｓ＿ｔａ」の活動化は、共用バス３０及び該バスに接続された前記ハードウェア要素に関連する制御論理ブロック１５６が前記データ転送を完了し得ることを知らせるまで、生じない。より詳細に言えば、論理ブロック１５６は、論理ブロック３６の入力に接続された出力信号線１５８を有する。制御論理１５６は、前記転送が完了し得るようになるとすぐに、この線１５８に於ける信号を活動化させ、この信号は入力項「ｐ＿ｔａ」として制御論理３６によって受信される。項「ｔｂｕｓ＿ｔａ」の前記論理方程式を参照すると、この項の活動化は前記入力「ｐ＿ｔａ」が真になるまで起こらないことを示している。
また、注意すべきことは、バスインタフェース３４が共用バス３０を所有する（「エラー」状態にあるｃｐｕセットが「スレーブ」としてデータ転送に参加する場合）場合のみ、入力「ｐ＿ｔａ」が項「ｔｂｕｓ＿ｔａ」を活動化させる。その代わりに、ＣＰＵ３８が共用バス３０を所有する場合には、入力「ｐ＿ｔａ」によって制御論理３６からの「ｕ＿ｔａ」出力が活動化されることによって、この場合、転送応答信号が信号線１０４のＣＰＵ３８に送られる。
上述したように、データ転送を終了させる方法が、上述したシーケンスに加えて更に２つある。これらのデータ転送を終了させるための別の方法の第１のものは、前記「マスタ」ｃｐｕセットによって転送応答信号が受信されない場合に生じるタイムアウトである。このタイムアウトを実現するために、及び第７図に関して、各ｃｐｕセット２０、２２、２４は、クロック入力線１６２、リセット入力線１６４、及びタイムアウト出力線１６６を有するタイマ回路１６０を備える。クロック入力線１６２は、一定のクロック信号（一般に、１マイクロ秒の周期で）受信するためのクロック回路１００に接続されている。リセット入力線１６４は、制御論理ブロック３６の出力に接続されている。この出力は、論理的に逆転しているが、論理項「ｒｅａｌ＿ｔｉｐ」に対応しており、それによってタイマ回路１６０は、ＣＰＵ３８がデータ転送の最中でない場合にはリセット状態に戻される。タイマ回路１６０のタイムアウト出力線１６６は、入力論理項「ｔｉｍｅｏｕｔ＿ｔｅａ」として制御論理ブロック３６に接続されている。前記論理方程式を参照することによって、この入力項が、活動状態になる場合には、前記「ｕ＿ｔｅａ」項を活動化させることを示している。
タイマ回路１６０は、通常１２８マイクロ秒のタイムアウト周期を有する。ＣＰＵ３８によって実行される全ての正常なデータ転送がこれよりも大幅に少ない時間で完了するようになり、従ってタイマ回路１６０は通常決してその出力線１６６を活動化させることはない。しかしながら、ＣＰＵ３８がたまたまミッシング（ｍｉｓｓｉｎｇ）である又は欠陥を有するようなディスクサブシステム１４のようなサブシステムにアクセスしようとした場合、主データ転送バス１０に於いて転送応答信号を全く受け取らないことになり、かつ制御論理ブロック３６は状態Ｓ３のままであることになる。この条件は、タイマ回路１６０が時間切れとなり、かつその出力信号線１６６を活動化させるまで持続されることになる。この信号が前記制御論理によって、ＣＰＵ３８の前記「転送エラー応答」ピンに印加される前記「ｕ＿ｔｅａ」信号に変換されるので、前記データ転送は中止され、かつ制御は、コンパレータ回路１０６の動作に関して上述したと同じソフトウェア例外ハンドラに移される。
タイマ回路１６０は、原則として従来のものであるが、前記ｃｐｕセットのハードウェアの他の部分と同じクロック回路１００から刻時されてデジタルタイマとして実施される点に注意すべきである。これは、３つのｃｐｕセット２０、２２、２４に於けるタイマ１６０が確実に互いに厳格に歩調を合わせた状態に維持されるために必要である。
前記ソフトウェア例外ハンドラの詳細な部分が、前記ｃｐｕセットに於いて使用されるＣＰＵの種類に大いに依存することは明らかである。ＣＰＵ３８がモトローラ製６８０４０である本実施例では、前記例外ハンドラが、ＲＴＥ命令（例外からの復帰）をもって終了することは殆ど確実である。この命令の効果は、前記ＣＰＵの内部状態を、最初に前記データ転送が試みられる前の状態に復元し、かつ前記データ転送を再施行することである。試みたデータ転送がミッシングである又は欠陥のあるサブシステムへの又はそれからのものである場合には、これは、第２の転送が第１のものと異なるように行動させる別の動作が行なわれない場合には、再試行が無限に連続して行なわれることになる。「スロット応答メモリ」５４（前記ｃｐｕセットの共用バス３０を介してアクセス可能）は、ＣＰＵ３８が前記無限に連続する再試行から逃れることができるようにするためのハードウェア回路の一部分である。
「スロット応答メモリ」５４に関連するハードウェアには、共用バス３０に接続されている８本のアドレス入力線１６８が含まれるが、これらのアドレス線は、前記「スロット応答メモリ」自体に直接接続されていない。その代わりに、これらは、その出力がメモリ５４の４個のアドレス入力に接続された４ビットマルチプレクサ１７０の入力に接続されている。また、マルチプレクサ１７０は、アドレスデコーダ１４４の出力に接続された「選択」入力線１７２を有する。線１７２の効果は、スロット応答メモリ５４への又はそれからの全ての「正常な」データ転送の際に、メモリ５４に印加される４ビットアドレスが共用バスの４本の最下位のアドレス線から導出されることによって、メモリ５４は１６の連続するアドレスを有効に占有する。それ以外では、メモリ５４に印加される前記アドレスが、８個のスロット１８及び３個のｃｐｕセット２０、２２、２４のいずれが主データ転送バス１０に於ける転送の際にアクセスされているかを一意的に識別するのに十分な共用バス３０の４つの上位アドレス線から導出される。メモリ５４のデータ入力／出力ピン（このメモリのデータ長は１ビットのみである）は、共用バス３０に直接接続されていないが、その代わりに、データがメモリ５４から読出されている際にのみ使用可能となる双方向性バッファ１７４を介して接続されている。この構成は、メモリ５４の前記入出力ピンが、データが該メモリに書込まれている場合を除いて常に出力に於いて使用可能であることから必要である。この入出力ピンは、信号線１７６を介して制御論理ブロック３６に接続されている。これは、前記論理方程式では「ｇｉｖｅ＿ｔａ」として示されている。
制御論理３６に於けるこの信号の効果は以下の通りである。ＣＰＵ３８が、主データ転送バス１０が関連するデータ転送（スロット１８のいずれか又は他の前記ｃｐｕセットのいずれかへ又はそれらから）を試みる場合、スロット応答メモリ５４に印加されるアドレスは、どのスロット又はｃｐｕセットがアクセスされているかを識別する。このアドレスに応答して線１７６に表れるデータが「０」である場合には、制御論理３６の前記論理方程式に於ける論理項「ｇｉｖｅ＿ｔａ」は偽となり、前記データ転送は上述したと全く同様に進行して、バス１０に於ける転送応答信号又はタイマ回路１６０からのタイムアウト信号によって終了する。しかしながら、線１７６に表れる前記データが「１」である場合には、制御論理３６が異なる行動を呈する。即ち、第４図の状態遷移図に於ける状態Ｓ２に到達すると、前記「ｔｂ＿ａｓ」項及び「ｔｂ＿ｄｓ」項が主データ転送バス１０に於けるデータ転送を開始させるように全く活動化されていないにも拘らず、次に「ｂ＿ｄｔａ」項が活動化される状態Ｓ６に移ることになる。前記「ｂ＿ｄｔａ」項を活動化させることによって、例外処理が全く開始されないと言う意味で正常にデータ転送が終了する。しかしながら、前記ソフトウェアは、「読出し」転送に有効なデータが存在しないことを検出することができる。
「スロット応答メモリ」５４の通常の使用法は次の通りである。前記コンピュータの正常動作時には、正しく機能しているサブシステムを含むスロットに対応するメモリ５４の全ての位置が、「０」のデータを含み、かつメモリ５４が主データ転送バス１０に於けるデータ転送に支障を生じることはない。しかしながら、いずれかの前記サブシステムが欠陥を有するようになる、または前記コンピュータから取り外された場合には、そのサブシステムにアクセスしようとする次の試みは、タイマ回路１６０がタイムアウトを生成し、それに続いて前記例外ハンドラが実行される結果になる。前記例外ハンドラによって行なわれる動作の１つは、前記スロット応答メモリの対応する位置にあるデータを「１」に変更し、それによって前記欠陥のあるサブシステム又は不存在のサブシステムにアクセスしようとする後の全ての試みが、タイムアウトなしに、かつ例外処理なしに、前記データ転送の試みを人為的に終了させるようにすることである。
本明細書の説明から明らかなように、タイマ回路１６０によって終了されるデータ転送の試みは、通常のデータ転送よりも非常に長い時間継続する。前記コンピュータが正常に動作している間は、これは、全てのデータ転送が正常に終了することになるので、全く取るに足らないことである。しかし、前記コンピュータのいずれかのサブシステムが存在ぜず又は欠陥を有する場合には、そのサブシステムに対して又はそれからデータを転送しようと繰り返し試みることは、タイムアウトを繰り返すことにより生じる遅延のために、前記コンピュータの性能に重大な衝撃を与え得る。一般原則として、この遅延を、前記例外ハンドラがソフトウェアのフラグ（ｆｌａｇ）を設定して、サブシステムが存在しない又は欠陥を有することを示すソフトウェア技術によって最小にすることは可能であり、前記サブシステム（特に、該サブシステムのデバイスドライバ）にアクセスする前記ソフトウェアの他の全ての部分は、認め得る大きさの全てのデータ転送の間、相当頻繁な間隔でこのフラグの状態を検査しなければならない。（小規模なデータ転送は、その結果生じる遅延がひどいものではないことから、おそらくこの検査なしに進めることができるが、性能の低下を示すことにはなる。）このソフトウェアフラグを用いることは、標準的なデバイスドライバを前記システムソフトウェアに組み込むことを困難にするので、特に好ましい案ではない。他方、「スロット応答メモリ」５４を用いることによって、デバイスドライバは、長く連続するタイムアウトの虞れを生じることなく、かつ前記転送の最中に特別の検査を行なうことを必要とせずに、サブシステムへの又はそれからの大規模なデータ転送を試みることが可能になる。前記データ転送が完了した後、「スロット応答メモリ」５４は前記転送が成功したかどうかを示す簡単な検査を行なう。
（３個のｃｐｕセット２０、２２、２４のそれぞれについて１個の）クロック回路１００は、それぞれそのｃｐｕセットの他の部分から要求される全てのタイミング信号を供給する。これら３つのクロック回路１００は、前記３つのｃｐｕセットに於けるタイミング信号が正確に歩調を合わせた状態にあるように、同期バス２６によって相互接続されている。クロック回路１００及び同期バス２６の構成及び動作について、第８図及び第９図に関連して以下に詳細に説明する。
同期バス２６は、既に説明した９本の線（「ｂｕｓ＿ｏｋ」信号を搬送する）に加えて、クロック回路１００に接続された６本の線を有する。３本の線１７８、１８０、１８２は、各ｃｐｕセット２０、２２、２４がパワーオンされたか即ち電源が入ったかどうかを示す信号を搬送する。３本の線１８４、１８６、１８８は、（少なくとも正常動作時に）前記各ｃｐｕセットによってそれぞれ使用するために、同一のクロック信号を搬送する。線１７８は、線１８４と対をなすものとみなすことができるが、これらは共にｃｐｕセット２０に緊密に関連している（一方が前記ｃｐｕセットのパワーオン状態を示すのに対し、他方が該ｃｐｕセットにクロック信号を供給する）からである。同様に、線１８０は線１８６と対をなし、かつ線１８２は線１８８と対をなす。
線１７８を例にとると、プルアップレジスタ１９０（同期バス２６の一部分を構成する）を介して＋５ボルト電源線１９２に接続されている。また、トランジスタ１９４（ｃｐｕセット２０の一部分を構成する）を介して０ボルト（接地）線１９６に接続されている。ｃｐｕセット２０の正常動作時には、トランジスタ１９４によって大地への低抵抗経路が提供され、それによって線１７８が論理「０」レベルとなる。しかしながら、ｃｐｕセットが前記コンピュータシステムから取り外された場合、又はｃｐｕセットが、その動作に必要な電源をもはや受け取らないことを意味する何らかの故障を生じている場合には、トランジスタ１９４によって低抵抗接地経路が提供されることはなくなり、線１７８はレジスタ１９０によって論理「１」レベルに引き上げられることになる。同様にして、線１８０及び１８２は、同期バス２６のレジスタ１９８、２００に、及びｃｐｕセット２２、２４のトランジスタ２０２、２０４にそれぞれ接続されることによって、これら各線に於ける論理「０」レベルが、対応するｃｐｕセット２２又は２４が依然として存在しかつ前記システム内に於いて電源が供給されていることを示す。
上述したように、前記コンピュータの正常動作時には、３つのｃｐｕセット２０、２２、２４が正確に同期して稼動することになる。この同期状態は、前記同期バスの３つの線１８４、１８６、１８８によって維持される。これら３本の線は、３つのｃｐｕセット２０、２２、２４によってそれぞれ使用するために通常同一のクロック信号を搬送する。
各ｃｐｕセットは、線１８４、１８６、１８８を駆動するために、その信号入力が全て水晶制御発信器２０８の出力に接続された３つのクロックバッファ２０６を有する。また、各クロックバッファ２０６は、３個の２入力ＡＮＤゲート２１０の中の１個の出力に接続されたイネーブル入力を有する。これら各ＡＮＤゲートの１個の入力は（論理的に逆転して）前記同期バスのいずれかの線１７８、１８０、１８２に接続され、他方の入力は信号線２１２を介して「マスタ」信号線５６（制御論理ブロック３６のいずれかの出力）に接続されている。これは、いずれのクロックバッファ２０６についても使用可能な状態にするためには、次の条件を双方とも満足しなければならないことを意味する。
（ｉ）現在「マスタ」ｃｐｕセットであるｃｐｕセット２０、２２又は２４に前記クロックバッファがなければならないこと（これによって、異なるｃｐｕセット上の２個のクロックバッファが同時に同じクロック線１８４、１８６、１８８を駆動しようとする可能性が完全に排除される）、及び
（ｉｉ）線１７８、１８０、１８２のいずれの線であっても、前記クロックバッファによって駆動されている前記クロック線と対になるものは、前記クロック線からクロック信号を受信するｃｐｕセットが存在しかつパワーアップされていることを示す論理「０」レベルでなければならないこと。
この構成によって、前記クロック線は駆動されているが、該クロック線からクロック信号を受信する回路には電源が入っていないような事態が回避される。これは、受信回路がその電源の入っていない状態では低いインピーダンスを示し、かつその結果生じる、クロックバッファ２０６によって前記回路を介して駆動される電流が、ダメージを生じさせる程度に大きくなることから、好ましい事態ではない。
第８図に示されるクロック回路は、３つの前記ｃｐｕセットによって受信されるクロック信号間に生じる虞れがあるスキューの量を最小にするように設計されている。これは、過度のスキューは、コンパレータ回路１０６が前記ｃｐｕセットの動作間の不整合を知らせる結果になるので必要である。前記クロック回路に関連して、前記スキューを最小にするのに役立ついくつかの設計上の特徴がある。これらの特徴に関する以下の説明では、異なる生産バッチから様々なｃｐｕセットモジュール２０、２２、２４が製造されることを忘れてはならない。これは、異なる信号伝搬経路にある類似の構成要素は、その特性を正確に整合させるために、同じ生産バッチから製造されることを条件とするがスキューを最小にするための考えられる設計技術の１つであることから、関連がある。本実施例の場合には、この技術は、整合すべき構成要素が全て同じｃｐｕセットモジュールにあるような場合にのみ適用される。
前記クロック信号間のスキューを最小にするのに役立つ設計上の特徴は次の通りである。
第１に、同期バス２６に到達する前に別個にバッファリングされる前記３つのクロック信号が通るステージ（段）の数を最小（即ち、バッファ２０６によって供給される１段のバッファリング）に維持する。
第２に、クロックバッファ２０６への信号入力が、その共通の信号ソース（発信器２０８）に分岐線２１４によって接続され、その３本の分岐が、前記発信器から前記クロックバッファまで測定して実質的に等しい長さである。
第３に、クロックバッファ２０６が全て同じ型式のものであり、かついずれのｃｐｕセットに於いても３個全てのバッファ２０６が同じ生産バッチから作られている。
第４に、クロックバッファ２０６の出力が、その長さ（前記バッファ出力から前記ｃｐｕセットと同期バスとの間のインタフェースまでを測定）が概ね等しい３本の線２１６によって同期バス２６の線１８４、１８６、１８８に接続されている。
第５に、同期バス２６の線１８４、１８６、１８８は、線２１６がクロック信号を同期バス２６に注入する位置から、前記信号が前記同期バスから前記ｃｐｕセットに戻る位置までを測定した長さができる限り等しくされている。この長さが等しいことは、第８図に図示されている。また、前記同期バスがプリント回路基板上でどのように実現されるかが示す第９図にも図示されている。
第８図及び第９図に示すように、前記同期バスの各クロック線１８４、１８６、１８８は、クロック信号がクロックバッファ２０６によって注入される３つの位置を有するが、上述した前記回路によって、いずれの時点に於いても、実際には前記「マスタ」ｃｐｕセットのみがこれらの線にクロック信号を注入することが保証される。前記クロック信号が注入される３つの位置は、前記線の長さ方向に沿って全て同じ位置である。注入された前記クロック信号は、前記同期バスに沿って両方向に伝搬する。
クロック線１８４、１８６、１８８の（第８図及び第９図に於ける）左側の端部は、前記同期バスの一部分を構成し、かつ前記クロック線とバス２６の０ボルト（接地）線２２１との間に直列に接続されたレジスタ２１８及びコンデンサ２２０からなる終了ネットワークにそれぞれ接続されている。レジスタ２１８の値は、クロック線１８４、１８６、１８８の特性インピーダンスに整合するように選択され、それによって、前記注入位置から左方へ伝搬する前記クロック信号は、前記注入点から反射されない。（これは、前記３個のｃｐｕセットのいずれがクロック信号を注入しているかに拘らず、又は前記コンピュータに於ける他の２つのｃｐｕセットの存在又は不存在に拘らず、同じである。）
分岐線２１６は、線１８４、１８６、１８８に於ける前記クロック信号の反射のない伝搬を妨害する虞れがある。従って、分岐線２１６はこの妨害を最小にするように短く維持される。
第８図及び第９図の右側部分には、前記同期バスの３本のクロック線１８４、１８６、１８８がループされ、かつそれぞれその関連するｃｐｕセットのクロック入力線２２２に接続されている様子が示されている。前記クロック線のこれらループ部分は、考えられる最も短い経路を通ってクロック入力線２２２に到達するようになっていない。その代わりに、これらは、前記注入位置から、前記信号が前記３個のｃｐｕセットのクロック入力線２２２に送られる位置まで、前記クロック信号が横断する線路長が等しいように設計されている。左側のｃｐｕセット２０のクロック信号を搬送する線１８４については、左側のｃｐｕセット２４によって駆動され得る前記注入位置からｃｐｕセット２０に幾分直接的にループして戻るようになっている。中間のｃｐｕセット２２のクロック線を搬送する線１８６は、左側の前記注入点から前記中間のｃｐｕセットまでの線路長を人為的に長くする手段として、ヘアピンループ２２４を有する。また、線１８８は、前記右側の注入位置と右側のｃｐｕセット２４のクロック入力線２２２との間に更に長いループ２２６を有する。
これらの線の長さを等しくすることによって、前記注入点から右側に伝搬する前記クロック信号が、その各ｃｐｕセット２０、２２、２４のクロック入力線２２２に全く同じ伝搬速度で到達するという効果がある。
各ｃｐｕセットでは、クロック入力線２２２が、該線２２２と０ボルト（接地）線１９６との間に直列に接続されたレジスタ２２８及びコンデンサ２３０からなる終了ネットワークに接続されている。レジスタ２１８の場合と同様に、レジスタ２２８の値は、反射の発生を防止するべく、前記線の特性インピーダンスに整合している。
また、クロック入力線２２２は、バッファリングなしに、フェーズロックドループ（ＰＬＬ）回路２３４（本実施例では、この回路はモトローラ製ＭＣ８８９１５集積回路を用いて実現される）の基準信号入力に接続されている。また、前記ＰＬＬ回路は、第２の基準信号入力と、前記２個の参照信号のいずれを聞くべきかを示す「選択」入力とを有する。第２の基準信号入力は、水晶制御発信器２０８の前記出力を搬送する線２１４に接続され、ＰＬＬ回路２３４の前記「選択」入力は、線２３６によって制御論理ブロック３６の出力に接続されている。この出力は、前記論理方程式に於ける項「ｕｓｅ＿ｂａｃｋｐｌａｎｅ＿ｃｌｏｃｋ」に対応する。
同期バス２６とＰＬＬ回路２３４の基準信号入力との間にバッファリングを全く設けない理由は、このようなバッファリングを設けた場合、バッファ構成要素が略確実に異なる生産バッチから製造され、従って伝搬遅れが様々になる（例外的に厳格に指定した特性を有する構成要素が使用されない限り）からである。また、ＰＬＬ回路２３４によって潜在的なクロックスキューの原因が持ち込まれるが、これらの構成要素によるスキューは元来小さいものである。
同期バス２６とＰＬＬ回路２３４との間にバッファリングが存在しないことによって、パワーダウン即ち電源が入っていないｃｐｕセットに通じる線を駆動している全てのクロックバッファ２０６を不能状態にすることが必要な理由が説明される。ＭＣ８８９１５からなる前記ＰＬＬ回路では、電源の入っていないときに駆動されることは許容されない。（バッファリングを行なうことが許されているような場合には、電源を落とした際に駆動されることを許容し得るようなバッファリング構成要素を選択することが可能である。そして、前記「マスタ」ｃｐｕセットの３個全部の前記クロックバッファを永久的に使用可能な状態にすることが可能である。）
前記コンピュータの正常動作時には、前記論理方程式に於ける項「ｕｓｅ＿ｂａｃｋｐｌａｎｅ＿ｃｌｏｃｋ」が、前記３個のｃｐｕセットのそれぞれに於いて真になり、同期バス２６からその基準信号として受信する前記クロック信号をＰＬＬ回路２３４に使用させる。各ＰＬＬ２３４は、そのｃｐｕセットの他の部分が必要とする全クロック信号を（直接的に又は間接的に）供給する。一般に上述した様々な特徴を組み合わせることによって、前記３個のｃｐｕセットの前記ＰＬＬは、１ナノ秒より相当良好な同期状態を維持することができる。
前記「マスタ」ｃｐｕセットの発信器２０８からＰＬＬ２３４までの伝搬遅れは、３個のｃｐｕセット２０、２２、２４のいずれが前記「マスタ」ｃｐｕセットであるかによって変化することに注意すべきであるが、これは、発信器２０８の位相が、前記ｃｐｕセットの他の全ての部分の動作と直接関連していないことから、重要ではない。
各ＰＬＬ２３４は、前記ＰＬＬの内部発信器が前記ＰＬＬへの基準信号入力と位相同期しているかどうかを示す出力信号を供給する（正常動作時には、「選択」線２３６の信号「ｕｓｅ＿ｂａｃｋｐｌａｎｅ＿ｃｌｏｃｋ」が真であることから、これは同期バス２６からのクロック入力線２２２に於ける基準信号となる）。この出力信号は、線２３８によって制御論理ブロック３６に接続される。これは、前記論理方程式では、入力項「ｕｎｌｏｃｋｅｄ」として表現される。これは、前記コンピュータの正常動作時には「偽」のままである。しかしながら、同期バス２６が何らかのハードウェア故障によって影響を受け、それによってＰＬＬ２３４が位相同期状態を維持することができない（例えば、線２２２に於ける基準信号が完全に消滅するため）場合には、線２３８に於ける「ｕｎｌｏｃｋｅｄ」信号が真になる。前記論理方程式に関して言えば、この変更の効果は、（ｉ）線２３６に於ける信号「ｕｓｅ＿ｂａｃｋｐｌａｎｅ＿ｃｌｏｃｋ」を偽にし、それによって今後はＰＬＬ２３４がその基準信号を前記ｃｐｕセットの発信器２０８から直接受け取ること、及び（ｉｉ）線５８の「ｅ＿ｓｔａｔｅ」信号が真になり、それによって前記ｃｐｕセットが「エラー」状態になること、であることがわかる。前記「エラー」状態への変化は、ＣＰＵ３８による命令実行のシーケンスに直ちに割込みを生じさせるものではないが、「エラー」状態への前記変化の後に主データ転送バス１０に於けるデータ転送を実行しようとする最初の試みは失敗することになる。これは、論理項「ａｏｋ」が偽のままであり、それによってＣＰＵ３８が、正にコンパレータ回路１０６が不整合を検出したかのように、転送エラー応答信号を受け取るからである。より詳細に言えば、この時点で制御論理ブロック３６に生じる事象は次の通りである。前記「ｅ＿ｓｔａｔｅ」信号が現在は真であるので、論理項「ｇｏｏｄｃｙｃｌｅ」は決して真になることができない。そして、これによって前記「ａｏｋ」項が真になることが直接的に防止される。
プロセッササブシステム１２内の問題を検出することができる、更に別の機構がある。この機構を実現するハードウェアが第１０図に詳細に記載されている。同図に示すように、同期バス２６は各ｃｐｕセット２０、２２、２４によってそれぞれ生成される「ｓｉｇｎａｔｕｒｅ」信号を搬送する別の３本の線２４０、２４２、２４４を有する。より詳細に言えば、各ｃｐｕセットは、そのＤ（データ）入力が線２４８によってＣＰＵ３８のＴＳ（転送開始）ピンに接続されたＤ型フリップフロップ２４６を備える。フリップフロップ２４６のクロック入力は、線２５０によってクロック回路１００に接続され、それによって前記フリップフロップは、前記ｃｐｕセットの回路の他の部分に同期してクロックされる。（前記３個の異なるｃｐｕセットの）３個のフリップフロップ２４６のＱ出力は、線２５２を介して前記同期バスの３本の「シグネチャ（ｓｉｇｎａｔｕｒｅ）」線２４０、２４２、２４４に接続されている。
各ＣＰＵ３８の転送開始ピンは、該ＣＰＵによって実行される各データ転送について１個のパルスを生成する。従って、３個のＣＰＵが完全に同期して同一行動（正常動作時）を実行することから、３本のシグネチャ線２４０、２４２、２４４に於けるパルスが全く同時に発生する。
各ｃｐｕセットでは、３本のサイン線２４０、２４２、２４４が、バッファ２５４を介して制御論理ブロック３６の３個の入力に接続されている。これら３本の線に於ける信号は、前記論理方程式に於いて、それぞれ「ｂｒ＿ｓｉｇｎ０」、「ｂｒ＿ｓｉｇｎ１」、及び「ｂｒ＿ｓｉｇｎ２」として表される。前記方程式が示すように、制御論理３６は、これら３個の信号の同期化バージョン（それぞれ「ｄｂｒ＿ｓｉｇｎ０」、「ｄｂｒ＿ｓｉｇｎ１」及び「ｄｂｒ＿ｓｉｇｎ２」）を生成し、「ｓｉｇｎｉｆ０」、「ｓｉｇｎｉｆ１」及び「ｓｉｇｎｉｆ２」各信号（問題を生じていると考えられるｃｐｕセットから到来する「ｂｕｓ＿ｏｋ」信号のマスキングに関連して上述した）をもって論理的にＡＮＤされる。前記「ｓｉｇｎｉｆ」信号によってマスクされないこれらの「ｄｂｒ＿ｓｉｇｎ」信号は、「ｅ＿ｓｔａｔｅ」出力線５８を定義する方程式に於いて比較され、それによってこれら信号間のあらゆる差が、前記ｃｐｕセットを「エラー」状態に変化させることになる。この変化の効果は、ＰＬＬ２３４に影響を与えるクロック故障の結果としてｃｐｕセットを「エラー」状態に変化させる上述した場合と類似している。命令実行は短い時間の間継続されるが、主データ転送バス１０に於けるデータ転送を実行しようとする全ての試みは、「転送エラー応答」信号がＣＰＵ３８に戻ることになり、従って実行が前記ソフトウェア例外ハンドラに渡される。
上述した説明の大部分はコンピュータの「正常」動作（別言すれば、１個のｃｐｕセットが「マスタ」状態でかつ他の２個のｃｐｕセットが「チェッカ」状態で動作する）である場合、及び全く異常な状態が生じていないことを検査する監視機構に関するものである。上述した部分では、異常な状態が検出され、かつそれによってＣＰＵ３８を（「転送エラー応答」信号の結果として）前記ソフトウェア例外ハンドラに入らせた後に生じる事象について詳細な説明はなされていない。
多くの動作が前記例外ハンドラ内で発生する。これらの全てが上述したハードウェアの特徴に関連するものではないが、それは（「ｕ＿ｔｅａ」について前記論理方程式により示されるように）、「転送エラー応答」信号が前記ｃｐｕセットハードウェアの他の部分から発信することが可能だからである。前記例外ハンドラによって行なわれる動作の１つは、制御・状態レジスタ５２を介して「ｅ＿ｓｔａｔｅ」線５８の状態を読出すことである。この線が活動状態でない場合には、上述したいずれの特別なハードウェアの機能によっても例外が生じておらず、従来の方法で処理することができる。
「ｅ＿ｓｔａｔｅ」線５８が活動状態にある場合には、これは、前記ハードウェアが上述したいずれかの型の問題、即ち（ｉ）いずれかのコンパレータ回路１０６に於いて前記コンパレータにより検出される不整合、又は（ｉｉ）いずれかのパリティチェッカ１０８によって検出されるパリティエラー、又は（ｉｉｉ）クロック回路１００からの「ｕｎｌｏｃｋｅｄ」信号を活動状態になるようにするクロック故障、又は（ｉｖ）「シグネチャ」線２４０、２４２、２４４間に於ける不整合を検出したことを示している。これらのいずれの場合にも、前記３個のｃｐｕセットに於ける命令実行は既に歩調が合わなくなっており、前記ｃｐｕセットが別々の時点で前記例外ハンドラに入る可能性がある。従って、これらのいずれの場合にも、前記例外ハンドラが行なう最初の動作は、「ソフトウェアの同期化」である。この同期化を実行するために、前記「マスタ」ｃｐｕセットは、まず３個全てのｃｐｕセットが確実に前記例外ハンドラに入るのに十分な遅延時間を待って、同期バス２６に於ける信号線３６４を活動化させる。（線３６４及びその関連するハードウェアについては、第１６図に関連して後述する。後の説明から明らかになるように、線３６４は、前記「ソフトウェアの同期化」とは明確に区別される別の機能を有する。）各「チェッカ」ｃｐｕセットは、前記例外ハンドラに入り、かつその「ｅ＿ｓｔａｔｅ」線５８が活動状態にあることを決定した後、線３６４に活動レベルを検出するまで待機する。
線３６４を活動化させ（「マスタ」ｃｐｕセットの場合）、又は線３６４に活動レベルを検出した（「チェッカ」ｃｐｕセットの場合）後、前記ｃｐｕセットは前記例外ハンドラの次のステージに進む。このステージでは、各ｃｐｕセットが、該ｃｐｕセットによる、ハードウェア故障が生じかつそれによって例外が生じている確率の自己評価を表す数を計算する。この評価は、主として読出し書込み用メモリ４０、制御・状態レジスタ５２、及び自己検査ルーチンの実行から読出すことによって得られた情報に基づく。注意すべきことは、３個全てのｃｐｕセットが同じ例外ハンドラコードを実行しているにも拘らず、これらがもはや全く同期して稼動することは期待できないこと、前記自己検査の結果及び故障のあるｃｐｕセットに於ける状態情報が他の２個のｃｐｕセットに於ける対応する情報と異なることから、各ｃｐｕセットが前記コードについて異なる経路をとる可能性があることである。
この計算を実行した後に、各ｃｐｕセットのＣＰＵ３８は、その計算した数に比例する時間で待機する。そして、他の２個のｃｐｕセットのいずれが「マスタ」状態にあるように思われるかを（「マスタ不存在」以外の論理条件が線２６６、２６８に存在するかどうかを決定することによって）検査する。そうでない場合には、これは、前記ｃｐｕセットが３個の中で最初にその計算した待ち時間が終了すること、従ってハードウェア故障を生じている虞れが最も少ないことを示唆する。この場合には、前記ｃｐｕセットがその制御・状態レジスタ５２に書込みを行なって前記「ｓｉｇｎｉｆ」信号を変化させ、それによって他の２個のｃｐｕセットから到来する「ｄｕｓ＿ｏｋ」信号及び「ｂｒ＿ｓｉｇｎ」信号がもはや制御論理ブロック３６の論理方程式に於いて有効であるとみなされなくなる。そして、それ自身を「マスタ」状態に変化させる。最後に、他の２個のｃｐｕセットの読出し書込みメモリ４６に「マジックナンバ」を書込み、それが「マスタ」ｃｐｕセットとして良好に動作していることを示し、かつ前記例外ハンドラから例外が生じたときに実行されていたコード（システムソフトウェア又はアプリケーションプログラムを作動させる）に戻る。
他方、ＣＰＵ３８が、その計算した待ち時間の終了時に、別のｃｐｕセットが既に「マスタ」状態になっているように思われることを見つけた場合には、最初に、この別のｃｐｕセットが、おそらくその計算した待ち時間がより短いものであったために、前記例外ハンドラの後のステージに進んでいると仮定する。この場合、待ち時間の長いｃｐｕセット（依然として「エラー」状態にある）は、前記「マスタ」ｃｐｕセットが既にその読出し書込み用メモリ４６に前記「マジックナンバ」を書込んでいると考える。各「エラー」ｃｐｕセットは、既に「マスタ」ｃｐｕセットが存在することを見つけた後、この「マジックナンバ」の存在を検査する。前記マジックナンバが存在する場合には、前記「マスタ」ｃｐｕセットは正しく機能しているものとみなされ、かつ他のｃｐｕセットは単に前記「マスタ」ｃｐｕセットが更に何らかの動作（前記例外ハンドラ以外）を行なうまで待って、少なくともいずれかの前記ｃｐｕセットが前記「チェッカ」状態に戻るようにする。
他方、「エラー」状態にあるいずれかの前記ｃｐｕセットが、「マスタ」ｃｐｕセットが存在するように思われるにも拘らず、その読出し書込み用メモリ４６内に前記マジックナンバを見つけることができない場合には、前記「マスタ」ｃｐｕセットが正しく機能していないとみなす。そして、約１００ミリ秒間待って、依然としてそのメモリ４６内にマジックナンバが見つからず、かつこの待ち時間を妨害するものがない場合には、このｃｐｕセット（マジックナンバを見つけることができなかったもの）は、「マスタ」状態に変化しようとする。しかし、ハードウェアの設計によって常に唯１個のｃｐｕセットのみしか「マスタ」になることができないので、まず、正しく機能していない前記ｃｐｕセットが「マスタ」として行動することを止めさせなければならない。これは、コンピュータの他のｃｐｕセットの両方の電源を落とすことによって行なわれ、それによって「マスタ」ｃｐｕセットになるためのハードウェア上の障害がなくなる。この後、「マスタ」状態に変化し、かつその後の行動は、その計算した待ち時間が最初に終了した第１のｃｐｕセットであった場合と全く同じである。
この例外ハンドラを実現できるためにｃｐｕセット２０、２２、２４に於いて必要なハードウェアの特徴について、以下に第１１図及び第１２図を参照しつつ説明する。
前記ｃｐｕセットが前記例外ハンドラに入る別の理由は、主データ転送バス１０のスロット１８に接続された他のサブシステムの一方が欠陥を有するようになっていること、又は取り外されていることである。これは、そのサブシステムへの又はそれからの全てのデータ転送の試みが、上述したようにタイマ回路１６０からのタイムアウト信号によって終了する結果となる。前記ｃｐｕセットは「エラー」状態に変化しない。この状態では、前記例外ハンドラによって行なわれる主要な動作は、スロット応答メモリ５４にデータ「１」を、前記ｃｐｕセットがアクセスしようとしている前記サブシステムに対応する位置に書込むことである。そして、制御が前記例外ハンドラから、欠陥のある又は存在しないサブシステムにアクセスしようとしていたコードに戻される。前記ｃｐｕセットが「エラー」状態に変わる際に呼び出されている前記例外ハンドラの部分との対話はない。
前記ｃｐｕセットが「エラー」状態に変化する（恐らくはハードウェアの問題のために）ような場合には、前記例外ハンドラがプロセッササブシステム１２を、いずれかの前記ｃｐｕセットが「マスタ」状態にあり、かつ他のｃｐｕセットが「エラー」状態又は電源を落とした状態を維持するようにする。ハードウェアの問題は唯１つの前記ｃｐｕセットに影響を与えると考えることができるので、前記システムのソフトウェアは、欠陥のない、マスタでないｃｐｕセットを「チェッカ」状態に戻すようにするべきである。この処理は、「ｃｐｕセットのリインテグレーション（再統合）」と称される。前記ｃｐｕセットがもはや同期して稼動していないことから、それらのメモリの内容（及び前記ハードウェアの他の部分の状態）は、ｃｐｕセットが異なれば異なることになる。これは、前記メモリの内容が、前記「マスタ」ｃｐｕセットから再統合されている前記ｃｐｕセットに複写されなければならないことを意味する。この複写の大部分は、前記コンピュータのオペレーティングシステムの制御下で稼動するアプリケーションプログラムによって行なうことができる。このアプリケーションプログラムが大部分の前記メモリの内容を複写したとき、前記オペレーティングシステムは一時的に中断され、残りのメモリの内容が複写される。前記ｃｐｕセットのクロック回路１００は、同期状態に戻される（その前に、再統合されている前記ｃｐｕセットは、同期バス２６の前記クロック信号とは無関係に稼動していた）。また、前記「マスタ」ｃｐｕセットのハードウェアの他の全ての部分の状態は、この状態のメモリイメージに変換され、かつこのメモリイメージは、前記「マスタ」ｃｐｕセット及び再統合されている前記ｃｐｕセット双方に於いて、メモリ内に配置される。最後に、「マスタ」ｃｐｕセットによって「リセット」信号が同期して３個全てのｃｐｕセット２０、２２、２４のＣＰＵ３８（及び他のハードウェア）に印加される。前記リセット信号は、ＣＰＵ３８をそのＰＲＯＭメモリ４２からのコードを実行するように変化させる。このコードは、前記ハードウェア状態のメモリイメージを用いて、前記ハードウェア（このようなメモリイメージを有する全てのｃｐｕセットに於ける）を、以前に前記「マスタ」ｃｐｕセットに存在した状態に戻し、かつその場合に制御が前記オペレーティングシステムに、その動作が中断された位置で戻される。
また同じｃｐｕセット再統合の処理を用いて、故障のあるｃｐｕセットが代わりのｃｐｕセットに置き換えられた後に、その新しいｃｐｕセットを他の２個のｃｐｕセットと同期させる。
前記例外ハンドラコード内で行なわれる動作に関して、このｃｐｕセットの再統合を支援するために多くのハードウェアの特徴が要求される。これらの特徴については、第１５図乃至第１７図を参照して以下に説明する。
第１１図は、常に唯１個のｃｐｕセットのみが「マスタ」状態になり得るようにし、かつソフトウェアの制御下でｃｐｕセットが「マスタ」になり得るようにすることを目的とするハードウェアの部分を示している。
第１１図に示されるように、各ｃｐｕセットは、そのＱ出力がバッファ２５８を介して前記ｃｐｕセットの「マスタ」線５６に接続されたＤ型フリップフロップ２５６を有する。別言すれば、フリップフロップ２５６からの出力は、前記ｃｐｕセットが「マスタ」状態にあるかどうかを示している。また、この出力は、（線２６０を介して）制御論理ブロック３６の入力（前記論理方程式では「ｉ＿ａｍ＿ｍａｓｔｅｒ」として表される）に、制御・状態レジスタ５２（ＣＰＵ３８が前記「マスタ」線が活動状態にあるかどうかを読出すことができるようにする）に、及び２個の３状態バッファ２６２、２６４の「イネーブル」入力に接続されている。これらバッファのデータ入力は、論理「１」レベル（＋５ボルト供給線２３２）と論理「０」レベル（０ボルト（接地）線１９６）とにそれぞれ接続され、それによってこれらは、前記ｃｐｕセットが「マスタ」状態にある（バッファが使用可能である）際に前記バッファ出力に表れる論理レベルである。前記ｃｐｕセットが「マスタ」状態でない場合には、前記バッファはその高インピーダンス状態にある。
各ｃｐｕセットの２個のバッファ２６２、２６４の出力は、それぞれ同期バス２６の２本の線２６６、２６８に接続されている。「マスタ」状態にあるｃｐｕセットがないときにこれらの線に表れる論理レベルを定義するために、同期バス２６は更に、線２６８と＋５ボルト線１９２との間に接続されたプルアップ抵抗２７０と、線２６６と０ボルト（接地）線２２１との間に接続されたプルダウン抵抗２７２とを有する。別言すれば、これらの線に於ける論理レベルは、いずれかの前記ｃｐｕセットのバッファ２６２、２６４が使用可能な状態であるときに表現されるものと逆になっている。
それぞれにバイナリ（２進）信号を搬送する２本の線２６、２６８を用いることによって、可能性として４つの信号の組合せが得られる。これらの組合せの２つだけが有効である。論理レベル「０」／「１」は、「マスタｃｐｕセットが存在しない」ことを示し、論理レベル「１」／「０」は、「マスタｃｐｕセットが存在する」ことを示す。「０」／「０」又は「１」／「１」のいずれかの信号の組合せが表れる場合には、これは何らかのハードウェアの故障が生じていることを示す。例えば線２６６と２６８との間に於ける短絡回路である。
前記同期バスの２本の線２６６、２６８は、ｃｐｕセット２０、２２、２４のそれぞれに於いて、制御論理ブロック３０の２個の入力に接続されている。これらの線の信号は、前記論理方程式に於いてそれぞれ「ｒｂ＿ｔｉａｍ＿ｈ」及び「ｒｂ＿ｔｉａｍ＿ｌ」として表される。制御論理３６は、フリップフロップ２５６のＤ（データ）入力に接続された線２７４に出力信号を生成する。前記論理方程式では、この信号は、少なくとも一方の線２６６、２６８に於ける条件が、これらの線を駆動する「マスタ」ｃｐｕセットが現在存在しないことを示す場合には、真になる論理項「ｏｋ＿ｔｂｍ」に対応する。また、前記項「ｏｋ＿ｔｂｍ」は、偽である信号「ｉ＿ａｍ＿ｍａｓｔｅｒ」（フリップフロップ２５６から直接受信）と、線２７６を介して制御・状態レジスタ５２から受信される入力信号「ｉｗｔｂｍ」とに依存する。制御・状態レジスタ５２からの別の出力が、線２７８を介してフリップフロップ２５６の前記クロック入力に接続されており、従って、ｃｐｕセットのＣＰＵ３８がマスタになるために実行しなければならない動作は次の通りである。即ち、第１に、制御・状態レジスタ５２に書込みを行なって、線２７６に於ける信号「ｉｗｔｂｍ」を活動状態にし、かつ次に、再び前記レジスタに書込みを行なって、前記フリップフロップのクロック入力に変化を生じさせる。少なくとも一方の線２６６又は２６８が、この変化の時点で「マスタ」ｃｐｕセットが存在しないことを示す場合には、前記フリップフロップのＤ入力（信号「ｏｋ＿ｔｂｍ」）が活動状態になり、かつ前記フリップフロップが状態を変化させて、前記ｃｐｕセットを「マスタ」状態にする。これは、即座にバッファ２６２、２６４を使用可能な状態にする効果を有し、それによって同期バス２６の線２６６及び２６８が状態を変化させ、かつ他のｃｐｕセットがマスタになることができなくなる。
上述した説明では、前記「ｅ＿ｓｔａｔｅ」信号の否定が、ｃｐｕセットを「エラー」状態から「マスタ」又は「チェッカ」状態に変化させる際に必要なステップであるにも拘らず、記載されていないことが分かる。この否定を達成するのに必要な唯一のハードウェアは、制御論理ブロック３６の入力を制御・状態レジスタ５２に接続する線２８０である。前記論理方程式では、この線は論理項「ｓｙｎｃ」に対応する。「ｅ＿ｓｔａｔｅ」に関する論理方程式を参照することによって、「ｅ＿ｓｔａｔｅ」が、一旦表明されると、「ｓｙｎｃ」が表明されるまで活動状態にあることを示している。このとき、他にエラー状態がないと仮定すると、「ｅ＿ｓｔａｔｅ」は偽になる。ｃｐｕセット再統合処理時には、制御・状態レジスタ５２に書込みを行なって「ｓｙｎｃ」を活動化する動作が、ＣＰＵ３８（前記「マスタ」及び新しい「チェッカ」の双方に於ける）がリセットされた後に行なわれる。別言すれば、前記動作は、前記ｃｐｕセットの読出し専用メモリ４２内の硬度の制御下で、両方のｃｐｕセットについて同時に行なわれる。
第１２図は、前記プロセッササブシステム内に於ける電源供給回路のいくつかの側面を示すブロック図である。これらの回路は、ｃｐｕセットが、前記コンピュータの他の部分をパワーダウンさせることなく前記コンピュータから取り外したり、その所定位置に挿入することができるように設計されている。また、これらによっていずれかのｃｐｕセットは、他のｃｐｕセットの一方によって実行されるソフトウェアコマンドの結果として、電源が投入されたり切断されたりすることができる。この対話を可能にするために、前記３個のｃｐｕセットは、２線式「保全バス」２８２によって相互接続されている。バス２８２は、Ｉ2Ｃバスとして実現され、そのためのインタフェース装置は市販されているので、詳細な説明は省略する。
電力は、２本の２８ボルト電力供給線２８４、２８６を介して３個のｃｐｕセット２０、２２、２４（及び前記コンピュータの他のサブシステム）に分配される。２本の線を用いることによって冗長度が得られる。各ｃｐｕセットでは、２本の線２８４、２８６から受け取る電力が、２個のダイオード２８８によって１つに共通化され、かつ該ｃｐｕセット内の単一の電力線２９０によって分配される。電力線２８４、２８６と電力線２９０との間にはスイッチング素子が存在しないので、その電力線２８４、２８６が既に通電されているコンピュータにｃｐｕセットが挿入されると、電力線２９０は即座に同様に通電された状態になる。
線２９０は、前記ｃｐｕの３つの項目に接続されている。即ち、リセット制御回路２９２と、２８ボルトの電力供給を降下させて＋５ボルトの出力を提供する３端子レギュレータ２９４と、２本の制御信号線２９８及び３００の双方に於いて活動状態の「イネーブル」信号によって使用可能な状態にされた場合にのみ、＋５ボルト出力を供給するＤＣ−ＤＣ変換回路２９６である。後述するような理由によって、前記ｃｐｕセットが最初に前記コンピュータ内に挿入されたときに、線２９８には活動状態の信号が存在しないことになり、そのためにＤＣ−ＤＣ変換器２９６は使用禁止状態のままで、電力供給線２９０に全く負荷を課すことはない。レギュレータ２９４の＋５ボルト出力は、直列をなす２個のスイッチ３０２、３０４を介して＋５ボルト分配線３０６に接続されている。スイッチ３０２、３０４は、前記ｃｐｕセットが前記システムに挿入される際に両方のスイッチ３０２、３０４が必ず開路状態であるようにする機械式のインタロックシステム（第１３図及び第１４図に関連して後述する）の一部分を形成する。これは、挿入直後に、レギュレータ２９４によって電力線２９０に課される唯一の負荷が、その静止電流（一般に５ミリアンペア）であることを意味する。リセット制御回路２９２は、１ミリアンペア以下の負荷となるＴＬ７７０５集積回路からなる。従って、前記ｃｐｕセットの挿入時に於ける電力供給線２９０への全負荷は極めて小さいものであるので、前記ｃｐｕセットの挿入によって問題を生じることはなく、電力供給線２８４、２８６は通電される。
前記ｃｐｕセットがコンピュータ内部に挿入された後、２個のインタロックスイッチ３０２、３０４を閉じることができる。この動作によって、リセット制御回路２９２の「センス（ｓｅｎｓｅ）」入力に接続された＋５ボルト電力供給線３０６を通電する。この回路の出力は、ＤＣ−ＤＣ変換器２９６を使用状態又は使用禁止状態にする制御信号線２９８に接続されている。リセット制御回路２９２の前記「センス」入力に電圧が存在しない限り、この回路は線２９８をその非活動レベルに維持することによって、（上述したように）ＤＣ−ＤＣ変換器２９６は前記ｃｐｕセットの挿入直後に使用禁止になる。２個のスイッチ３０２、３０４が閉じると、リセット制御回路２９２はある遅延時間の間線２９８を非活動レベルに維持し、かつその後に活動レベルに変化させることによって、（他の制御線３００が活動レベルにされることを条件として）ＤＣ−ＤＣ変換器２９６が使用可能になる。
また、＋５ボルト供給線３０６によって、保全バス２８２に接続されているインタフェース回路のいくつかに電力が供給される。特に、ＰＣＦ８５７４集積回路からなる保全バス「スレーブ」インタフェース３０８に電力を供給する。このインタフェース３０８の１個の出力は、ＤＣ−ＤＣ変換器２９６の制御線３００に接続されている。前記ＰＣＦ８５７４デバイスの特徴は、その出力線が電源投入時に「活動」状態になり、従ってＤＣ−ＤＣ変換器２９６が、リセット制御回路２９２によって与えらる遅延時間が終了するとすぐに使用可能になる。変換器２９６の前記＋５ボルト出力は、前記ｃｐｕセットに於ける他の全ての論理に供給するように接続され、従って前記ｃｐｕセットは完全に電源が入る。
ｃｐｕセットを前記コンピュータから取り外した場合、これはＤＣ−ＤＣ変換器２９６が再び使用不能になる結果となる。この場合に発生する事象のシーケンスは、最初にスイッチ３０２、３０４が開く（前記ｃｐｕセットの取り外しは、これらのスイッチが閉じている場合には物理的に不可能である）。これによって、リセット制御回路２９２の前記「センス」入力からの＋５ボルトの供給が無くなる。この入力に於ける前記電圧が４．７ボルト以下に落ちるとすぐに、回路２９２は線２９８の信号を非活動化し、それによってコンバータ２９６は使用不能になる。この場合、電力供給線２９０への負荷が前記ｃｐｕセットの挿入時と同じ低い値に減少しているので、前記ｃｐｕセットを取り外すことは安全である。
また、前記ｃｐｕセットは、保全バス２８２と、前記ｃｐｕセットの専用バス２８の双方に接続された保全バス「マスタ」インタフェース３１０を有する。このＰＣＣ８５８４集積回路を用いて実現されるマスタインタフェースによって、前記ｃｐｕセットのＣＰＵ３８が信号を保全バス２８２に配置することができるようにするチャネルが提供され、他のｃｐｕセット（又はそれ自身さえ）に電源を投入したり落としたりする。
第１３図及び第１４図は、いずれかのｃｐｕセット２０、２２、２４の機械的構成を示している。特にこれらの図面は、いずれかのインタロックスイッチ３０２、３０４の機械的な構成を詳細に示している。
前記ｃｐｕセットは、前記２個のインタロックスイッチを除いて該ｃｐｕセットの全ての電子技術が実装されたプリント回路基板３１２からなる。コネクタ３１４が基板３１２の後端に装着されて、前記ｃｐｕセットと前記各種バス（主データ転送バス１０、同期バス２６、及び保全バス２８２）との間の接続を確立しているのに対し、前記ｃｐｕセットの前端には、前部バー３１６が取り付けられている。前部バー３１６の目的の１つは、前記ｃｐｕセットをコンピュータ内の所定位置に保持することである。このために、２個のインジェクタレバー３１８及びイジェクタレバー３２０が前記前部バーに、それぞれその上端及び下端近傍に枢着されている。これらレバーのそれぞれと前部バー３１６との間は、第１４図に示されるねじ３２２によって回転接続されている。また、第１４図は、プリント回路基板３１２の上端のためのチャネル形状をなすガイド３２８の前端を支持するバー３２４からなる前記コンピュータの固定構造の一部分を示している。同様のバー及びガイド（第１４図には図示せず）によって基板３１２の下端が支持される。
前記ｃｐｕセットがコンピュータ内の所定位置にあるとき、各レバー３１８、３２０は、第１４図に示されるような位置にある。同図が示すように、前記インジェクタレバー及びイジェクタレバーは、それぞれ端部３３２に、インジェクタジョー３３４、イジェクタジョー３３６、及び両ジョー３３４、３３６間ののど部３３８を有する。固定バー３２４の外形の一部分がのど部３３８内に位置することによって、前記ｃｐｕセットのコンピュータからの取り外しは、バー３２４の後面に当接するインジェクタジョー３３４によって防止される。また、前記各レバーは、そのジョー３３４、３３６から遠い方の端部にハンドル部３３９を有し、それによって前部バー３１６に向けて又は遠ざかる向きに手で回転させることができる。この回転によって、イジェクタジョー３３６がバー３２４の前面と接触し、それによって前記ｃｐｕセットがガイド３２８内を前方へ移動し、コネクタ３１４が解除されて前記ｃｐｕセットを取り外すことができる。
ｃｐｕセットのコンピュータへの挿入は、レバー３１８、３２０を逆方向に回転させることによって行なわれ、それによって前記レバーのインジェクタジョーがバー３２４の後面に当接し、それによって前記ｃｐｕセットを所定位置に押し込み、このような動作が行なわれる場合に正しくコネクタ３１４を係合させる。
レバー３１８及び３２０が、前記ｃｐｕセットをその所定位置にしっかりと維持する第１４図に示す位置から不注意に動くことがないように、前記各レバーは、脱落防止した蝶ねじ３４０を有し、かつ前部バー３１６は、前記レバーが第１４図の位置にあるときに蝶ねじ３４０と整合する位置にある２個のねじ孔３４２を有する。前記レバーをこの位置に回転させた後、前記蝶ねじのねじ付き端部を孔３４２内に係合させ、かつ前記蝶ねじを締め付けることによって、レバー３１８、３２０が所定位置に固定される。
また、第１４図に示すように、それぞれプランジャ−アクション方式の常時開放型マイクロスイッチである２個のインタロックスイッチ３０２、３０４が、前部バー３１６の後部に、ねじ孔３４２の背後に取り付けられている。蝶ねじ３４０の長さは、これらの蝶ねじを完全に締め付けたときに、そのねじ付き端部が２個のインタロックスイッチ３０２、３０４のプランジャに接触し、それによってそれらをその閉鎖位置に動かし、かつ第１２図に関連して上述したように前記ｃｐｕセットに電源が入るように選択される。
第１５図は、ｃｐｕセットの再統合の際に行なわれるメモリ内容の複写を補助するという特定の目的を有する「ダーティ」メモリ４４を詳細に示している。上述したように、この複写処理の大部分は、前記コンピュータのオペレーティングシステムが依然として実行されている状態で行なわれる。これは、読出し書込み用メモリ４０（複写されるデータのソース）内の記憶位置の内容が、再統合されている前記ｃｐｕセットに複写された後に、前記オペレーティングシステムによって、又は該オペレーティングシステムの制御下で実行される他のプログラムによって変形されることを意味する。このような記憶場所は、前記オペレーティングシステムによって「ダティにされた」即ち「汚されている」と称され、その内容が、先に複写された前記ｃｐｕセットに於ける対応する記憶場所ともはや整合しないことを意味する。前記記憶場所を再び「クリーン（清浄）」にするために、その新たな内容を、再統合されているｃｐｕセットに複写しなければならない。
ダーティメモリ４４の目的は、メモリ４０のどの領域が「ダーティ」でありかつどの領域が「クリーン」であるかを記憶することである。ダーティメモリ４４は１ビット長メモリであり、このメモリ内の各ビット位置には、読出し書込み用メモリ４０内の連続する一群の記憶場所の状態（「ダーティ」又は「クリーン」）が記憶される。これには、読出し書込み用メモリ４０への全ての「書き込み」データ転送が、自動的にダーティメモリ４４内の対応するビットが「ダーティ」状態に設定される結果となることが必要である。ダーティメモリ４４は、プロセッサ３８とメモリ４０との間で動作する通常のアドレス変換器３９によって供給される変換されたアドレスに基づいて、メモリ４０への書込みアクセスを記録する（前記プロセッサの一部分を構成することがある）。
ダーティメモリ４４は、読出し書込み用メモリ４０に接続されたアドレス線の最上位１６に接続された一群の１６本のアドレス線３３４を有する（これらは専用バス２８のアドレス線である）。別言すれば、読出し書込み用メモリ４０は、６５，５３６の「ページ」に分割されたとみなすことができ、これらのいずれかのページへのアクセスは、ダーティメモリ４４のアドレス線３４４にアドレスが明確に表れる結果となる。また、前記ダーティメモリは、データ線３４６、「選択」線３４８、及び「書込みイネーブル」線３５０を有する。データ線３４６は双方向性バッファ３５２を介して専用バス２８に接続されている。このバッファは、その２つの伝送方向に「イネーブル」入力３５４、３５６を有する。また、データ線３４６と＋５ボルト線２３２との間にプルアップ抵抗３５８が接続され、それによってバッファ３５２又はダーティメモリ４４のいずれもが線３４６を駆動しない場合に、この線が論理「１」レベルになる。このような状況は、読出し書込み用メモリ４０へのデータ転送の際に生じる。
「選択」、「書込みイネーブル」、及び「バッファイネーブル」線３４８、３５０、３５４、３５６は、全て制御論理ブロック３６からの出力に接続されている。前記論理方程式に於ける対応する項は、「ｄｉｒｔｙ＿ｃｓ」、「ｄｉｒｔｙ＿ｗｅ」、「ｄｉｒｔｙ＿ｂｗｅ」、及び「ｄｉｒｔｙ＿ｏｅ」である。これら各項は、線３６０を介してアドレスデコーダ８８から到来し、ダーティメモリ４４への「正常な」アクセスを知らせる制御論理３６への「ｐ＿ｄｉｒｐｙ」入力に依存する。しかし、更に、前記「ｄｉｒｔｙ＿ｃｓ」項及び「ｄｉｒｔｙ＿ｗｅ」項は、読出し書込み用メモリ４０への書込みデータ転送の際に活動状態になる（アドレスデコーダ８８からの線３６２に於ける信号「ｄｒａｍ」、及びＣＰＵ３８からの信号「ｕ＿ｔｓ」及び「ｕ＿ｗｒｉｔｅ」とによって示される）。このような書込みデータ転送の際に前記「ｄｉｒｔｙ＿ｂｗｅ」項が活動状態でないため、データ線３４６は論理「１」になり、かつこのレベルは、ダーティメモリ４４内に読出し書込み用メモリ４０のアクセスされているアドレスに対応する位置に書込まれる。
ダーティメモリ４４によって供給される前記情報によって、ｃｐｕセットの再統合の際に前記メモリの内容を複写するために対話方法を用いることができる。この方法には次のステップが含まれる。まず、前記ダーティメモリの全ビットを「１」に設定する。次にこのメモリの中を走査し、かつ「１」であるビット毎に前記ビットを代わりに「０」に設定し、かつ再統合されている前記ｃｐｕセットに読出し書き込み用メモリ４０の対応するページを複写する。次に、この走査を繰り返すことによって、新たに汚れた全てのページの新しい内容を複写する。（複写された後に、ページが再び汚れた状態になる確率は、前記コンピュータがマルチタスキング・オペレーティングシステムを有し、かつこの対話式複写方法は、前記コンピュータによって実行されている多数のタスクの中の単に１つに過ぎず、該コンピュータの処理能力をインタリービング式に共用しているので、複写した後にページが再び汚れた状態になる虞れが生じる。）このようにしてダーティメモリ４４の走査を何度か繰り返した後、汚れたページの数が相当小さくなり、かつ前記オペレーティングシステムが一時的に中断されて、前記ｃｐｕセットの再統合の残りのステージが実行される。
これら再統合の残りのステージは、次のようにまとめられる。
前記ｃｐｕセットのハードウェアの幾つか又は全部の状態のメモリイメージ（読出し書込み用メモリ４０内）メモリイメージを生成する。例えば、一般にレシーバ／トランスミッタ４８、タイマ５０、制御レジスタ５２、及び制御論理３６のレジスタの内容を記録することが必要になる。
「ダーティ」メモリ４４によって汚れていると示されるメモリ４０の全てのページを前記新しいｃｐｕセットに複写する。この複写は常に、先のステップによってメモリイメージが生成されたばかりのページを含むことになる。
ここで、前記マスタｃｐｕセットが全ｃｐｕセット（それ自身を含む）を完全に同期してリセットされる。これによって、前記ｃｐｕセットの全ハードウェアが、全ｃｐｕセット（リセット後にソフトウェアによって初期状態にされ得るハードウェアの部分があれば、それを除く）について同一である周知の状態になる。
前記リセット後に（全ｃｐｕセットに同期して）実行されるソフトウェアの中に、前記セットのハードウェア状態のメモリイメージを含むメモリ４０の部分を読出し、かつこのメモリイメージを用いて前記ハードウェアを、前記オペレーティングシステムが中断された時にあった状態に戻すルーチンがある。
最後に、前記オペレーティングシステムは、前記マスタｃｐｕセットが、前記システムが中断した時と全く同じ状態で、かつ新たに再統合されたｃｐｕセットが前記マスタと完全に同期して稼動しつつ、オペレーションを再開できるようになる。
上述した各ステップの中で、第３のステップ（前記ｃｐｕセットへの同期リセット処理）には、前記ｃｐｕセットが特別のハードウェアの特徴を有することを必要とする。これらの特徴は第１６図に示されている。このハードウェアは、同期バス２６に線３６４を有する。各ｃｐｕセットに於いて、線３６４はバッファ３６６の入力、及びその「イネーブル」入力が「マスタ」線５６に接続された３状態バッファ３６８の出力の双方に接続されており、それによって前記「マスタ」ｃｐｕセットのみが線３６４を駆動することができる。前記「マスタ」ｃｐｕセットによる線３６４の活動化は、実際に前記ｃｐｕセットのリセット処理をトリガする事象である。しかし、ｃｐｕセットのハードウェアのリセットは、それ自身をリセットすることによって線３６４の信号に応答するため、ハードウェアコマンドによって「武装」（ａｒｍｅｄ）されていなければならない。
同期バス２６の線３６４の駆動に関連する前記ハードウェアの部分は、制御・状態レジスタ５２の出力からＤ型フリップフロップ３７２のＤ（データ）に入力に接続された線３７０である。このフリップフロップは、そのクロック入力が、クロック回路１００からクロック信号を搬送する線３７４に接続され、それによって前記フリップフロップは前記ｃｐｕセットに於ける他の事象と同期して状態を変化させる。前記フリップフロップのＱ出力が線３７６を介してバッファ３６８のデータに入力に送られることによって、線３６４を活動化させるのに必要なことは、制御・状態レジスタ５２への書き込みだけである。
線３６４に応答するハードウェアには、その出力が別のＤ型フリップフロップ３７８のＤ入力に接続されたバッファ３６６が含まれる。このフリップフロップも同様に線３７４からクロック信号を受け取る。このフリップフロップからのＱ出力は、線３８０によって制御論理ブロック３６に接続されている。前記論理方程式に於ける対応する項は、「ｓｂ＿ｓｒ」である。この項は、論理項「ｓｙｎｃ＿ａｒｍ」と共に（前記制御・状態レジスタから線３８４を介して制御論理３６が受け取る信号に対応する）、出力論理項「ｓｙｎｃｒｅｓｅｔ」を制御する。制御論理３６からの対応する出力は、ｃｐｕセットの再統合を実現するのにリセットを必要する前記ｃｐｕセットの全部分に接続された線３８２に現れる。論理項「ｓｂ＿ｓｒ」、「ｓｙｎｃ＿ａｒｍ」及び「ｓｙｎｃｒｅｓｅｔ」間の関係は、第１７図の状態遷移図によって示されている。前記ｃｐｕセットの正常動作時には、制御論理３６が状態Ｓ６５になる。ここで、両論理項「ｓｂ＿ｓｒ」及び「ｓｙｎｃ＿ａｒｍ」が活動状態になる場合には、前記論理が、「ｓｙｎｃｒｅｓｅｔ」信号が活動状態になる状態Ｓ０に変化する。次に前記論理は、制御論理３６から受け取る各クロックパルス毎に１ステップずつ、状態Ｓ１からＳ６４へ順に進む。前記「ｓｙｎｃｒｅｓｅｔ」項は、状態Ｓ６３を含めて状態Ｓ６３まで活動状態のままであるが、前記論理が状態Ｓ６４に到達すると、前記「ｓｙｎｃｒｅｓｅｔ」項は非活動化され、かつ前記ｃｐｕセットのハードウェアの他の部分がリセットから抜け出ることによって、ＣＰＵ３８が読出し専用メモリ４２からのコードを実行し始める。制御論理３６は、ＣＰＵ３８によって実行される最初の動作の１つとなる、前記「ｓｙｎｃ＿ａｒｍ」項が否定されるまで、状態Ｓ６４のままである。この後、制御論理３６は状態Ｓ６５に戻る。
「ｓｙｎｃ＿ａｒｍ」信号の目的は、同期バス２６に於ける線３６４の故障によって不注意にｃｐｕセット２０、２２、２４のリセットを生じさせないようにすることである。このような不注意なリセットが可能な場合には、線３６４は好ましくない故障の位置を１つ示すことになる。
0003713554.tif 000003
0003713554.tif 000004
0003713554.tif 000005
0003713554.tif 000006
【図１】
0003713554.tif 000007
【図２】
0003713554.tif 000008
【図３】
0003713554.tif 000009
0003713554.tif 000010
【図４】
0003713554.tif 000011
【図５】
0003713554.tif 000012
0003713554.tif 000013
【図６】
0003713554.tif 000014
【図７】
0003713554.tif 000015
【図８】
0003713554.tif 000016
0003713554.tif 000017
【図９】
0003713554.tif 000018
【図１０】
0003713554.tif 000019
【図１１】
0003713554.tif 000020
【図１２】
0003713554.tif 000021
【図１３】
0003713554.tif 000022
【図１４】
0003713554.tif 000023
【図１５】
0003713554.tif 000024
【図１６】
0003713554.tif 000025
【図１７】
0003713554.tif 000026