(57)【特許請求の範囲】
【請求項１】
プログラム及びデータを格納するメモリと該メモリからプログラム及びデータを取り出してこれを処理するプロセサとを有する中央処理装置と、上記中央処理装置の指定により処理結果を格納あるいは外部に送出する入出力装置と、上記中央処理装置と上記入出力装置にデータ信号線を介して接続される接続装置とから構成され、
上記接続装置は、上記中央処理装置から上記入出力装置へのアクセスを監視する手段と、アクセスが正常終了しない場合に上記データ信号線により上記中央処理装置にアクセス異常を報告する手段と、正常終了しないアクセスがリードアクセスである場合にはリードデータとして固定パターンのデータを上記データ信号線により上記中央処理装置に返送する手段とを具備することを特徴とする高信頼化コンピュータシステム。
【請求項２】
プログラム及びデータを格納するメモリと該メモリからプログラム及びデータを取り出してこれを処理するプロセッサとを有する中央処理装置と、上記中央処理装置の指定により処理結果を格納あるいは外部に送出する第１の入出力アダプタと、該第１の入出力アダプタと同一構成の第２の入出力アダプタと、上記中央処理装置と上記第１及び第２の入出力アダプタにデータ信号線を介して接続される接続装置と、上記第１の入出力アダプタと第２の入出力アダプタの両方に物理接続される入出力デバイスとから構成され、
上記接続装置は、上記中央処理装置から上記第１及び第２の入出力アダプタへのアクセスを監視する手段と、アクセスが正常終了しない場合に上記データ信号線により上記中央処理装置にアクセス異常を報告する手段と、正常終了しないアクセスがリードアクセスである場合にはリードデータとして固定パターンのデータを上記データ信号線により上記中央処理装置に返送する手段とを具備することを特徴とする高信頼化コンピュータシステム。
【請求項３】
プログラム及びデータを格納するメモリと該メモリからプログラム及びデータを取り出してこれを処理するプロセッサとを有する第１の中央処理装置と、該第１の中央処理装置と同一構成の第２の中央処理装置と、上記第１及び第２の中央処理装置にクロック及びリセット信号を供給するクロック手段と、上記第１及び第２の中央処理装置の指定により処理結果を格納あるいは外部に送出する第１の入出力装置と、上記第１及び第２の中央処理装置と上記第１の入出力装置にそれぞれ第１のデータ信号線を介して接続される第１の二重化接続装置と、上記第１及び第２の中央処理装置の指定により処理結果を格納あるいは外部に送出する上記第１の入出力装置と同一構成の第２の入出力装置と、上記第１及び第２の中央処理装置と上記第２の入出力装置にそれぞれ第２のデータ信号線を介して接続される第２の二重化接続装置とから構成され、
上記第１及び第２の中央処理装置は、相互に通信を行うための第１及び第２のプロセッサ間通信手段を具備し、
上記第１及び第２の二重化接続装置は、各々の中央処理装置から第１あるいは第２の入出力装置へのアクセスを監視する手段と、アクセスが正常終了しない場合に上記第１あるいは第２のデータ信号線により上記第１及び第２の中央処理装置にアクセス異常を報告する手段と、正常終了しないアクセスがリードアクセスである場合にはリードデータとして固定パターンのデータを上記第１あるいは第２のデータ信号線により上記第１及び第２の中央処理装置に返送する手段とを具備することを特徴とする高信頼化コンピュータシステム。
【請求項４】
プログラム及びデータを格納するメモリと該メモリからプログラム及びデータを取り出してこれを処理するプロセッサとを有する第１の中央処理装置と、該第１の中央処理装置と同一構成の第２の中央処理装置と、上記第１及び第２の中央処理装置にクロック及びリセット信号を供給するクロック手段と、上記第１及び第２の中央処理装置の指定により処理結果を格納あるいは外部に送出する第１の入出力アダプタと、上記第１及び第２の中央処理装置と上記第１の入出力アダプタにそれぞれ第１のデータ信号線を介して接続される第１の二重化接続装置と、上記第１及び第２の中央処理装置の指定により処理結果を格納あるいは外部に送出する上記第１の入出力アダプタと同一構成の第２の入出力アダプタと、上記第１及び第２の中央処理装置と上記第２の入出力アダプタにそれぞれ第２のデータ信号線を介して接続される第２の二重化接続装置と、上記第１の入出力アダプタと第２の入出力アダプタの両方に物理接続される入出力デバイスとから構成され、
上記第１及び第２の二重化接続装置は、各々の中央処理装置から第１あるいは第２の入出力装置へのアクセスを監視する手段と、アクセスが正常終了しない場合に上記第１あるいは第２のデータ信号線により上記第１及び第２の中央処理装置にアクセス異常を報告する手段と、正常終了しないアクセスがリードアクセスである場合にはリードデータとして固定パターンのデータを上記第１あるいは第２のデータ信号線により上記第１及び第２の中央処理装置に返送する手段とを具備することを特徴とする高信頼化コンピュータシステム。
【請求項５】
プログラム及びデータを格納するメモリと該メモリからプログラム及びデータを取り出してこれを処理するプロセッサとを有する第１の中央処理装置と、該第１の中央処理装置と同一構成の第２の中央処理装置と、上記第１及び第２の中央処理装置にクロック及びリセット信号を供給するクロック手段と、上記第１及び第２の中央処理装置の指定により処理結果を格納あるいは外部に送出する第１の入出力アダプタと、上記第１及び第２の中央処理装置と上記第１の入出力アダプタにそれぞれ第１のデータ信号線を介して接続される第１の二重化接続装置と、上記第１及び第２の中央処理装置の指定により処理結果を格納あるいは外部に送出する上記第１の入出力アダプタと同一構成の第２の入出力アダプタと、上記第１及び第２の中央処理装置と上記第２の入出力アダプタにそれぞれ第２のデータ信号線を介して接続される第２の二重化接続装置と、上記第１の入出力アダプタと第２の入出力装置の両方に物理接続される入出力デバイスとから構成され、
上記第１及び第２の中央処理装置は、相互に通信を行うための第１及び第２のプロセッサ間通信手段を具備し、
上記第１及び第２の二重化接続装置は、各々の中央処理装置から上記第１あるいは第２の入出力アダプタへのアクセスを監視する手段と、アクセスが正常終了しない場合に上記第１あるいは第２のデータ信号線により上記第１及び第２の中央処理装置にアクセス異常を報告する手段と、正常終了しないアクセスがリードアクセスである場合にはリードデータとして固定パターンのデータを上記第１あるいは第２のデータ信号線により上記第１及び第２の中央処理装置に返送する手段と、上記第１及び第２の中央処理装置からの指示により、上記第１あるいは第２の入出力アダプタと入出力デバイスとの論理接続を切り離す手段とを具備することを特徴とする高信頼化コンピュータシステム。
【請求項６】
請求項１乃至４のいずれか１項記載の高信頼化コンピュータシステムにおいて、接続装置あるいは二重化接続装置は、中央処理装置からの指示により、入出力装置あるいは入出力アダプタと入出力デバイスとの論理接続を切り離す手段を具備することを特徴とする高信頼化コンピュータシステム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は高信頼化コンピュータシステムに係り、特に中央処理装置（ＣＰＵ）と入出力装置との接続に関するものである。さらに、本発明は入出力装置側のみならず、プロセッサやメモリも含めたシステム全体を二重化した高信頼化コンピュータ（フォールトトレラントコンピュータ）の、入出力装置側の障害検知・接続制御に関するものである。
【０００２】
【従来の技術】
近年、コンピュータの利用は目覚ましく、交通管制システムや金融システムなど社会の根幹を占める分野をコンピュータが担うようになってきている。これらのコンピュータに障害が発生し動作が停止すると、社会に大きな混乱を与える。従って、コンピュータの信頼性が益々要求されてきている。
【０００３】
このようなコンピュータに対する高信頼化の要求は、特に電子制御（コントローラ）の分野で従来よりあり、これに対しては、例えば特開昭５７−２０８４７号公報に示すような多重計算機システムが提案されている。ここでは、複数のコンピュータで同一の演算を行わせて、データ出力の時点でこれらを比較し、正しいものを出力する方式が示されている。この方式は、ソフトウエアで出力のタイミングを合わせて、比較することが前提となっており、比較的小規模な制御システムならば適用可能である。しかし、大規模かつ複雑な動きをする近年のアプリケーションソフトウエアでは、データ比較のために多大な工数が必要となり適用できない。このような問題に対処するために、近年はハードウエア主体でデータ比較を行う高信頼化技術が種々提案されている。
【０００４】
コンピュータの高信頼化（フォールトトレランス：Ｆａｕｌｔ−ｔｏｌｅｒａｎｃｅ）技術に関しては、例えば特開平２−２０２６３８号公報がある。ここでは、典型的には３個の同一のＣＰＵで同じ命令ストリームを実行し、それらの多数決をとることを前提にしているが、多数決に加わっているプロセッサが独立したクロックで動作していると、プロセッサ間で同期を採るためになんらかの工夫が必要である。特開平２−２０２６３８号は、プロセッサ間で緩く同期を採る手段を提供するものである。
【０００５】
また、より高い処理性能のコンピュータへの要求に応えて、処理性能向上のために従来からマルチプロセッサ構成のコンピュータが広く用いられている。マルチプロセッサ構成のコンピュータのフォールトトレランス技術としては、例えば日経エレクトロニクス１９８３年５月９日号第１９７頁から第２０２頁に記載の、Ｐａｉｒ  ａｎｄ  ｓｐａｒｅ法と呼ばれる方式が知られている。これは、自己診断機能のあるメモリ、プロセッサなどからなる配線基板２枚を１組にして動作をする方式である。即ち、片方の配線基板上の回路でフォールトが生じた場合には、もう一方の配線基板上の回路で処理を動作を続ける方式である。この方式によれば、フォールト発生時でも動作が続けられるので、チェックポイントリスタート
（ｃｈｅｋｐｏｉｎｔ  ｒｅｓｔａｒｔ）と呼ばれるフォールト発生時点以前のチェックポイントからの処理のやりなおし動作が不要となる。
【０００６】
また、他の高信頼化技術としては、特開平１−１５４２４０号公報及び特開平１−１５４２４１号公報に記載の二重レールプロセッサがある。ここには、２つのプロセッサから伸びるデータパス（二重レール）にメモリなどの共有リソースを接続して、共有リソースの入り口で２つのデータバスからの信号を比較してエラーを検出可能な基本データ処理装置を１組（２台）準備し、そして、この１組のデータ処理装置で共有される入出力装置には、入り口に比較によるエラー検出手段を持つ、高信頼な計算機構成法が示されている。
【０００７】
また、さらに他の高信頼化技術としては、特開平４−２４１０３９号公報に記載のコンピュータシステムがある。これは、障害時の取替え単位である各々の配線基板上に構成されるプロセッサユニット（ＢＰＵ）自体にフォールトトレランス機能を持たせたものである。ＢＰＵ内で障害が発生しても、フォールトトレランス機能により次の「切りの良い時点」（以下便宜上チェックポイントと呼ぶ）まで正常動作を継続し、チェックポイントで他のＢＰＵに処理を引き継ぐものである。この場合、「切りの良い時点」（チェックポイント）は例えばタスク切替えの時点などに設定するのが適当であるとする。このように、ＢＰＵ内で障害が発生しても次のチェックポイントまで正常動作を継続させるために、ＢＰＵを構成する各要素を多重化（冗長化）し、正常な要素を組み合わせて動作を継続させる。パリティチェックなどにより障害検出が可能なキャッシュメモリなどは２重化し、正常なキャッシュメモリを選択して用いる。ＭＰＵに汎用品を用いる場合はＭＰＵにチェック機能を持たせることはできないので、ＭＰＵの出力信号を比較照合して正常異常を判断し、正常なものを選択して用いるために３重化又は４重化する。
【０００８】
このようにして、取替え単位である各々の配線基板上に構成されるＢＰＵ自体が内部で障害が発生しても次のチェックポイントまで処理を継続できるので、障害発生時のチェックポイントリスタートに備えてチェックポイント時点の状態を保存する動作による処理性能の低下が皆無となる。しかもペアとなるＢＰＵが不要であるので、別々のＢＰＵ間のクロック同期のための信号線は不要となり、クロックの高速化が可能となる。また、取替え単位を構成するＭＰＵが同一クロックで動作するので、ＭＰＵ間の同期のための特別な動作が不要となり、このための処理性能の低下がない。
【０００９】
以上の従来技術は、いづれもソフトウエア実行に必要な最小限の環境であるプロセッサとメモリを多重化し、これらの部分に障害が発生したときにはハードウエアで障害部位を切り離して、プログラムの継続を保証しようとするものである。つまりプログラムからは、プロセッサとメモリ部分の障害が全く見えない（透過）ことを実現するものであり、高信頼化システム構築のための特殊なプログラミングを軽減するための重要技術である。
【００１０】
そして、入出力装置の高信頼化に関しては、先のＰａｉｒ  ａｎｄ  ｓｐａｒｅ法と呼ばれる方式では、自己診断機能のある入出力装置からなる配線基板２枚を１組にして動作させており、片方の配線基板上の回路でフォールトが生じた場合には、もう一方の配線基板上の回路で処理を動作を続けることが可能である。この方式によれば、フォールト発生時でも動作が続けられるので入出力処理においても、チェックポイントリスタート（ｃｈｅｋｐｏｉｎｔ  ｒｅｓｔａｒｔ）と呼ばれるフォールト発生時点以前のチェックポイントからの処理のやりなおし動作が不要であるが、特別な入出力装置が必要である。
【００１１】
また、特開平１−１５４２４０号公報及び特開平１−１５４２４１号公報に記載の方式は、１組のデータ処理装置で共有される入出力装置には、入り口に比較によるエラー検出手段を持ち、故障が検出された場合には故障の特性を確認し、動作を続行できないと判断すれば該当入出力装置をシステムから切り離し、動作を続行できると判断すれば該当入出力装置を故障処理ルーチンを行うことにより該当入出力装置を故障から回復させていた。この方式でも特別な入出力装置が必要であり、入出力装置が動作を続行できないと判断された場合には該当入出力装置をシステムから切り離され、処理が続行できないという欠点があった。
【００１２】
【発明が解決しようとする課題】
上述の従来技術のものは、一般に流通している汎用プロセッサを用いて、その周辺回路に特別な工夫を行って多重化したＣＰＵを実現しており、同じ汎用プロセッサを用いた通常のデータ処理装置やワークステーションやパーソナルコンピュータと比較すると、コストの増大やハードウエア・ソフトウエアのオーバヘッドの増大が避けられないものとなっている。
【００１３】
特に近年、汎用プロセッサは急激に性能を向上させており、この高速プロセッサを用いた通常のデータ処理装置やワークステーションやパーソナルコンピュータの開発速度は早まる一方である。このことは、同じプロセッサを用いても特別な周辺回路を必要とする高信頼化計算機と通常のデータ処理装置やワークステーションやパーソナルコンピュータとの性能価格差がさらに開いていく問題が、内在することを意味する。
【００１４】
具体的には、従来のＰａｉｒ  ａｎｄ  ｓｐａｒｅ法と呼ばれる方式や、特開平１−１５４２４０号公報及び特開平１−１５４２４１号公報に示される方式は、入出力装置の高信頼化のために特別のハードウエアを開発する必要があった。しかしながら、通常のデータ処理装置やワークステーションやパーソナルコンピュータで用いられている高速プロセッサと入出力装置をそのまま組み合わせるだけでは、プロセッサや入出力装置の高信頼化は図れない。特に、問題となるのは、次の点である。
【００１５】
（１）通常のデータ処理装置やワークステーションやパーソナルコンピュータで用いられている超高速プロセッサでは、ＩＯアクセス命令によるＩＯアクセスはプログラムの命令実行に対し非同期に実行されるものがあり、ＩＯアクセスで障害が発生し障害が報告された時にはプログラムは障害の発生したＩＯアクセス命令よりもずっと先の命令を実行している。
【００１６】
（２）通常のデータ処理装置やワークステーションやパーソナルコンピュータで用いられている入出力装置は一般に二重化構成になっていない。そのため、入出力装置をデータ処理装置に２個接続し、入出力デバイスを２個の入出力装置に接続し、片方の入出力装置に障害が発生した場合にはデータ処理装置からの指示により該当入出力装置を切り離し、他方の入出力装置を使用する構成を採用できる。しかし、この場合には入出力装置自体や入出力バスに障害が発生した場合にも、障害の発生した入出力装置と入出力デバイスの接続を解除する手段が必須である。
【００１７】
本発明の目的は、一般に流通している汎用プロセッサを用いて、且つ、特殊な周辺回路を大量に用いることなく、汎用計算機と共通性が高く、汎用計算機と共同開発可能で性能価格性の高い高信頼化コンピュータシステムを実現することにある。
【００１８】
【課題を解決するための手段】
図１に、本発明にかかるコンピュータシステムの基本構成の概念図を示す。これは、ＣＰＵ系とＩＯバス系をいずれも一重構成とする最も簡単なシステム構成を示すものである。図において、１はプロセッサやメモリ及びこれらの周辺制御回路を有する中央処理装置（ＣＰＵ）である。２０は入出力バスアダプタ（ＩＯＢＡ）であり、配下に入出力バス（ＩＯバス）３０を介して、ディスク装置（ＤＫＵ）や回線プロセッサ（ＬＰ）及びその他のデバイス、さらにＬＡＮ等の他の回線網などが接続されている。このＣＰＵ１とＩＯＢＡ２０との間に、接続装置２を設置する。これが二重システムバスアダプタ（ＤＳＢＡ；Ｄｕａｌ  Ｓｙｓｔｅｍ
Ｂｕｓ  Ａｄａｐｔｅｒ）である。ただし、図１はＣＰＵ系とＩＯバス系がいずれも一重構成であるため、ＤＳＢＡは一重接続装置として動作する。
【００１９】
ＤＳＢＡ２は、ＣＰＵ１からＩＯＢＡ２０へのアクセスを監視して、該アクセスが正常終了しない場合にＣＰＵ１へアクセス異常を報告する。また、該ＤＳＢＡは、正常終了しないアクセスがリードアクセスである場合は固定パターンデータをＣＰＵ１へ返送する。ＣＰＵ１は、ＩＯリードアクセスを発行し、そのリードデータが固定パターンの場合、ＩＯ側で障害が発生したと認識する。これにより、ＣＰＵ１では、異ったデータが入力され、そのデータを用いてＣＰＵ１がメモリ等のシステムリソースを破壊するのを回避できる。
【００２０】
図２は、ＣＰＵ系は一重構成で、ＩＯバス系のみ二重構成（Ａ系、Ｂ系と称す）とした場合の本発明コンピュータシステムの概念図である。図において、ＣＰＵ１は図１の場合と同様である。２０ＡはＡ系のＩＯＢＡ（ＩＯＢＡ−Ａ）で、ＩＯバス３０Ａに接続され、２０ＢはＢ系のＩＯＢＡ（ＩＯＢＡ−Ｂ）で、ＩＯバス３０Ｂに接続される。入出力デバイス（ＤＫＵ、ＬＰなど）はＡ系とＢ系の両方のＩＯバス３０Ａ、３０Ｂに物理接続される。接続装置２はＤＳＢＡ−ＡとＤＳＢＡ−Ｂで構成し、ＤＳＢＡ−ＡはＩＯＢＡ２０Ａに、ＤＳＢＡ−ＢはＩＯＢＡ２０Ｂにそれぞれ接続する。ＣＰＵ１はＤＳＢＡ−ＡとＤＳＢＡ−Ｂの両方に接続される。なお、ＤＳＢＡを一台とし、そのＩＯバスの入出力ボートのみを２組用意して、それぞれＤＳＢＡ２０Ａ、ＤＳＢＡ２０Ｂに接続することでもよい。
【００２１】
ＤＳＢＡ（ＤＳＢＡ−Ａ  ＤＳＢＡ−Ｂ）は、ＣＰＵ１からＩＯＢＡ２０ＡあるいはＩＯＢＡ２０Ｂへのアクセスを監視して、当該アクセスが正常終了しない場合にＣＰＵ１へ当該アクセス異常を報告し、さらに、正常終了しないアクセスがリードアクセスである場合は固定パターンデータをＣＰＵ１へ返送する。ＣＰＵ１は、Ａ系あるいはＢ系のＩＯリードアクセスを発行し、そのリードデータが固定パターンの場合、該当、ＩＯバス系で障害が発生したと認識する。Ａ系あるいはＢ系のＩＯＢＡやＩＯバスで障害が発生した場合、ＤＳＢＡは、ＣＰＵ１からの指示により、該障害の発生した側のＩＯバスと入出力デバイスとの論理接続を切り離す。これにより、ＣＰＵ１は、障害の発生していない側のＩＯバスを使用して、入出力デバイスでの処理を継続できる。
【００２２】
図３は、ＣＰＵ系とＩＯバス系の両方を二重化構成（Ａ系、Ｂ系と称す）とした場合の本発明コンピュータシステムの概念図である。図において、１ＡはＡ系のＣＰＵ（ＣＰＵ−Ａ）、１ＢはＢ系のＣＰＵ（ＣＰＵ−Ｂ）である。ＣＰＵ１ＡとＣＰＵ１Ｂは、通常稼働時には同一周波数／位相のクロックに同期して同一プログラムを同一順序で実行する。ＩＯバス系は図２と同じであり、ＩＯＢＡ２０ＡとＩＯバス３０Ａの側がＡ系、ＩＯＢＡ２０ＢとＩＯバス３０Ｂの側がＢ系を構成している。接続装置２は、ＤＳＢＡｐ−ＡとＤＳＢＡｓ−Ｂが第１の組のＤＳＢＡ（第１の二重化接続装置）、ＤＳＢＡｐ−ＢとＤＳＢＡｓ−Ａが第２の組のＤＳＢＡ（第２の二重化接続装置）を構成している。ここで、ＤＳＢＡｐ−ＡとＤＳＢＡｐ−ＢをプライマリＤＳＢＡと称し、ＤＳＢＡｓ−ＡとＤＳＢＡｓ−ＢをセカンダリＤＳＢＡと称す。
【００２３】
プライマリＤＳＢＡｐ−ＡとセカンダリＤＳＢＡｓ−Ｂは、それぞれＣＰＵ１Ａと１Ｂから同時にＡ系に対するＩ／Ｏアクセスを受け取るが、プライマリＤＳＢＡｐ−ＡだけがそれをＩＯＢＡ２０Ａに伝える。また、ＩＯＢＡ２０Ａからの応答はＤＳＢＡｐ−ＡとＤＳＢＡｓ−Ｂの両方で受け取り、それぞれＣＰＵ１Ａと１Ｂに伝える。同様に、プライマリＤＳＢＡｐとセカンダリＤＳＢＡｓ−Ａでは、それぞれＣＰＵ１Ａと１Ｂから同時にＢ系に対するＩＯアクセスを受け取るが、ＤＳＢＡｐ−ＢだけがそれをＩＯＢＡ２０Ｂに伝え、該ＩＯＢＡ２０Ｂからの応答はＤＳＢＡｐ−Ｂ、ＤＳＢＡｓ−Ａの両方で受け取ってそれぞれＣＰＵ１Ａと１Ｂに伝える。
【００２４】
これは、ＣＰＵ１Ａと１Ｂの両方が正常な場合であるが、例えばＣＰＵ１Ａが故障した場合は、セカンダリＤＳＢＡｓ−Ｂが、ＣＰＵ１ＢからのＡ系に対するＩＯアクセスをＩＯＢＡ２０Ａに伝え、該ＩＯＢＡ２０Ａからの応答をＣＰＵ１Ｂに伝える。プライマリＤＳＢＡｐ−Ｂが、ＣＰＵ１ＢからのＢ系に対するＩＯアクセスをＩＯＢＡ２０Ｂに伝え、該ＩＯＢＡ２０Ｂからの応答をＣＰＵ１Ｂに伝えることは、ＣＰＵ１Ａの正常／故障にかかわらず同じである。同様にして、ＣＰＵ１Ｂが故障した場合は、ＤＳＢＡｐ−ＡとＤＳＢＡｓ−Ａが正常なＣＰＵ１ＡとＡ系、Ｂ系のＩＯバス間の通信をそれぞれ受け持つ。これにより、正常なＣＰＵによってＡ系およびＢ系の両方のＩＯアクセスの処理を継続できる。
【００２５】
接続装置２を構成するプライマリやセカンダリの各ＤＳＢＡは、図１や図２のＤＳＢＡと同様に、ＣＰＵ１Ａあるいは１ＢからのＩＯＢＡ２０Ａあるいは２０Ｂへのアクセスを監視して、当該アクセスが正常終了しない場合にＣＰＵ１Ａあるいは１Ｂへ当該アクセス異常を報告し、さらには、正常終了しないアクセスがリードアクセスである場合は固定パターンデータをＣＰＵ１Ａあるいは１Ｂへ返送する。ＣＰＵ１Ａあるいは１Ｂは、これによりＡ系あるいはＢ系で障害が発生したことを認識する。
【００２６】
例えば、Ａ系のＩＯＢＡ２０ＡやＩＯバス３０Ａで障害が発生した場合、ＣＰＵ１ＡがＤＳＢＡｐ−Ａに指示し、該ＤＳＢＡｐ−ＡがＩＯバス３０Ａとその入出力デバイスとの論理接続を切り離す。以後は、障害の発生していない側のＩＯＢＡ２０ＢとＩＯバス３０Ｂを使用して、入出力デバイスの処理を継続する。この場合、セカンダリＤＳＢＡｓ−ＡとプライマリＤＳＢＡｐ−Ｂが、それぞれＣＰＵ１Ａと１Ｂから同時にＢ系のＩＯアクセスを受け取るが、プライマリＤＳＢＡｐ−ＢだけがそれをＩＯＢＡ２０Ｂに伝え、ＩＯＢＡ２０Ｂからの応答はＤＳＢＡｐ−ＢとＤＳＢＡｓ−Ａの両方で受け取り、それぞれＣＰＵ１Ａと１Ｂに伝える。これは、ＣＰＵ１Ａと１Ｂの両方が正常な場合と同じである。
【００２７】
図３のシステム構成は、ハードウエアの１点故障に対する高信頼性を実現するために全てのハードウエアを２重化するものである。ここで、エラー検出能力を持ち、切り離しの単位となるものをブロックと呼ぶことにする。図１乃至図３に示したように、一般に３種類のブロックに分かれるが、図３の構成では、各ブロックはＡ系・Ｂ系で２重化されているので、合計６ブロックある。
【００２８】
図３の構成での故障に対する動作の上での特徴的な点は、多重化されたブロックの切り離しをハードウエアとソフトウエアで分担していることにある。つまり、ＣＰＵブロック（プロセッサ、メモリ、システムバス、ＤＳＢＡなど）は、ハードウエアで二重化接続を行い、ＩＯバスブロック（ＩＯＢＡ、ＩＯバス、ＩＯＡ、ＬＡＮＣなど）とデバイスブロック（ＤＫＵ、ＬＰ、ＬＡＮなど）は、ソフトウエアによって二重化接続を行う点である。ＣＰＵブロック内で検出されるエラーについては、ハードウエアで当該ブロックの切り離しを行い、ＩＯバスブロックおよびデバイスブロックで検出されるエラーについては、ソフトウエアで当該ブロックの切り離しを行って、残った正常系による処理を継続する。従って、入出力バスを制御するソフトウエアから見ると、独立したアドレスを持つＡ系、Ｂ系の２つの入出力バスが存在しており、どちらの入出力バスが正常かを示すフラグをメモりに持って、このフラグに従って２つの入出力バスとデバイスを組み合わせて使う事によって、ＩＯ系の１点故障に対しても連続稼働が実現できる。
【００２９】
【作用】
ＤＳＢＡがアクセスを監視する手段と、リードアクセスが正常終了しない場合に固定パターンのデータをＣＰＵに返送する手段を具備しているため、ＣＰＵはプログラムによりそのチエックを行うことによって、入出力装置側に障害が発生したときにも、入出力装置側の障害がＣＰＵに波及することを防止できる。さらに、ＤＳＢＡが入出力バス系と入出力デバイスとの論理接続を強制的に切り離す手段を有しているため、障害の発生した入出力バス系を確実に切り離すことができる。また、ＤＳＢＡをＣＰＵのような非常に高速で高度な実装技術が要求される部分に設けるのではなく、入出力装置側との低速なインタフェイス部分に設けることで、システム性能を劣化させることなく、ＣＰＵと入出力装置側を通常のデータ処理装置やワークステーションやパーソナルコンピュータと共通化出来る。
【００３０】
【実施例】
以下、本発明の実施例について詳述する。なお、以下の実施例では、図１乃至図３のうちで最も複雑である図３の完全二重化システムのケースについて示す。図１あるいは図２のケースは、基本的に図３のケースの一部構成や一部機能を省略することで実現可能である。
【００３１】
図４は、本発明の一実施例にかかる完全二重化構成の高信頼化コンピュータシステムの外観を示す。図において、（ａ）は前面、（ｂ）は裏面である。２００Ａと２００ＢはＣＰＵ−ＢＯＸであり、それぞれプロセッサやメモりを含んでいる。このＣＰＵ−ＢＯＸと並べて、それぞれＡ系とＢ系のＤＳＢＡ−ＣＡＲＤ２０１、２０１Ｂを配置する。２０２Ａと２０２ＢはＩＯＢＡ、ＩＯＡ、その他のＩＯ−ＣＡＲＤ、２０３Ａと２０３Ｂはディスク装置である。このディスク装置は、信頼性を向上させるために必要に応じてミラーディスク構成を採る事が出来る。２０４Ａと２０４Ｂは電源であり、それぞれＡ系とＢ系に電源を供給する。２０５Ａと２０５Ｂは冷却ファンであり、それぞれＡ系とＢ系の冷却を行う。
【００３２】
この様に、システムの稼働に必要なハードウエアを全て２重化する事によって、ハードウエアの一点故障が発生しても、障害モジュールを切り離すことによって連続稼働を実現できる。また、図４の様な装置実装を採る事によって、Ａ・Ｂ系を物理的に分離できるので、２重化形態が明確になり、保守作業時のヒューマンエラーを減らし、また、バックボード清掃などの重点検も可能となる。
【００３３】
図５に、図３で示したシステム構成の概念図のより詳細なブロック図を示す。図において、左半分はＡ系、右半分はＢ系であるが、これらは全く同じ構成なので、ここでは、左半分のＡ系部分を中心に説明する。
【００３４】
中央処理装置（ＣＰＵ）１Ａはプロセッサ３Ａ及び４Ａ、メモリ５Ａ、プロセッサメモリ制御ユニット６Ａ、プロセッサ間インタフェイス制御装置７Ａ、クロック回路８Ａ、システムバス９Ａからなる。プロセッサ（ＭＰＵ）３Ａ及び４Ａは全く同一のキャッシュメモリを内蔵し、通常は全く同じ動作を行う。即ち、プロセッサ自体、ここでは二重化構成をとる。メモリ（ＭＳ）５Ａは命令やデータを格納する。該メモリその容量や構成は当業者周知の様々なものが有るが、いずれの場合も本発明の実施にあたっては問題とならないので、ここでは詳しく述べない。プロセッサメモリ制御ユニット（ＰＭＣＵ）６Ａは、プロセッサ３Ａ及び４Ａとメモリ５Ａとシステムバス９Ａを接続し、主にプロセッサ３Ａまたは４Ａからのアクセスをメモリ５Ａやシステムバス９Ａに伝えたり、システムバス９Ａからのアクセスをメモリ５Ａに伝えたりする。さらに、プロセッサ３Ａと４Ａの出力信号５００と５０１を比較して、２つのプロセッサの出力不一致を調べてプロセッサ内の故障を検出する。プロセッサ間インタフェイス制御装置（ＰＸＩ）７Ａは、ＣＰＵ１ＡとＣＰＵ１Ｂ間で信号線（ＰＸＩバス）５７を介して、ＣＰＵ状態などの情報を受け渡すための制御を行う。クロック回路（ＣＬＫ）８Ａは発振器を有し、信号線５５を介してＢ系のクロック回路８Ｂと協調して、同一周波数／位相のクロックをＡ全体にクロックタイミング信号を供給する。また、クロック回路８Ａは発振器の停止検出回路を有している。
【００３５】
接続装置２は、Ａ系とＢ系のＣＰＵとＩＯＢＡを接続するＤＳ（Ｄｕａｌ  Ｓｙｓｔｅｍ）バスを制御する多重システムバスアダプタ（ＤＳＢＡ）である。本実施例では、接続装置２は４組のＤＳＢＡで構成されており、それぞれＤＳＢＡｐ１１ＡとＤＳＢＡｓ１１Ｂ、ＤＳＢＡｓ１２ＡとＤＳＢＡｐ１２Ｂ、ＤＳＢＡｐ１３ＡとＤＳＢＡｓ１３Ｂ、ＤＳＢＡｓ１４ＡとＤＳＢＡｐ１４Ｂが組となっている。ここで、ＤＳＢＡｐ１１ＡとＤＳＢＡｓ１１Ｂの組がＡ系のＩＯバスに接続され、ＤＳＢＡｐ１２ＢとＤＳＢＡｓ１２Ａの組がＢ系のＩＯバスに接続される。他の組についても同様である。各組の動作は同じなので、ここでは、ＤＳＢＡｐ１１ＡとＤＳＢＡｓ１１Ｂの組について説明する。ＤＳＢＡｐ１１ＡはプライマリＤＳＢＡと定義され、ＤＳＢＡｓ１１ＢはセカンダリＤＳＢＡと定義される。図３で説明したように、プライマリＤＳＢＡとセカンダリＤＳＢＡは、それぞれＣＰＵ１ＡとＣＰＵ１Ｂから同時にＩＯバスアクセスを受けるが、通常はプライマリＤＳＢＡだけが、ＩＯバスに対してそのＣＰＵアクセスを伝える。そして、ＤＳバスからのアクセスは、プライマリＤＳＢＡとセカンダリＤＳＢＡが同時に受けて、それぞれＣＰＵ１ＡとＣＰＵ１Ｂに同じタイミングで伝える。１６は、ＤＳバスのＡ系側１５ＡとＢ系側１５Ｂの接続／分離を行うバススイッチであり、遅延ディレイの少ないＣ−ＭＯＳプロセスで製造されたＭＯＳスイッチが好ましい。バススイッチ１６は通常ではオンラインとしておくが、これを切ることにより、Ａ系とＢ系間が論理的にも電気的にも分離できるので、オンライン動作状態での部品交換がやりやすくなる。なお、このバススイッチ１６のオン／オフはマニアル、コマンドのいずれも可能とする。１７ＡＡと１７ＡＢは入出力バスと入出力デバイスを論理的に切り離すための信号線である。
【００３６】
２０Ａと２１Ａは、ＤＳバスのＡ系側と入出力バスを接続する入出力バスアダプタ（ＩＯＢＡ）である。本実施例では、ＩＯＢＡ２０Ａには入出力バス（ＩＯバス）３０Ａが接続され、該ＩＯバス３０Ａに、それぞれ入出力アダプタ（ＩＯＡ）３１Ａ、３５Ａを介して、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｅｒｆａｃｅ）バスに代表される標準的な入出力装置バス３２Ａ、３３Ａ、３６Ａ、３７Ａが接続され、これら入出力装置バスにディスク装置３４Ａ、３４Ｂ、ラインプロセッサ（ＬＰ）３８Ａ、３８Ｂが接続されている。ディスク装置３４Ａと３４Ｂは、例えばソフトウエアでミラーディスク構成を採用することができるが、他の高信頼なディスク構成採用することでもよい。ラインプロセッサ（ＬＰ）３８Ａ、３８Ｂには所謂ラインコントローラ（ＬＣ）を介して一般通信回線が接続される。さらに、ＩＯバス３０Ａには、イーサネット（Ｅｔｈｅｒｎｅｔ）やＦＤＤＩに代表されるローカルエリアネットワーク（ＬＡＮ）を接続するローカルエリアネットワーク制御装置（ＬＡＮＣ）が接続される。なお、これらのディスク装置、ラインプロセッサ、ＬＡＮは、同様にＢ系のＩＯバス３０Ｂにも接続されている。
【００３７】
本実施例で注意すべきことは、ソフトウエアからは、ＩＯＢＡ２０Ａと２０Ｂは異なったアドレスを持ったＩＯバスプロックと認識され、また、入出力装置が、ソフトウエアからはそれぞれ異なった入出力装置と認識されることである。従って、ソフトウエアの設定だけで様々なグレードを持った高信頼計算機システムが実現できる。例えば、図５では全ての入出力バスと入出力装置を２重化した例を示しているが、システム上で重要性の少ない入出力装置を１重化することによって、システムのコストを下げるなど、柔軟な対応が可能となる。あるいは、非常に重要なデータを格納したディスク等を４重化するなどの対応も可能となる。
【００３８】
以下に、図５の実施例における主要部分の具体的構成例を示す。
〈プロセッサメモリ制御ユニット（ＰＭＣＵ）〉
図６にＰＭＣＵの具体的ブロック図を示す。ＰＭＣＵ６Ａと６Ｂは全く同じ構成であるので、ここではＣＰＵ１Ａ側のＰＭＣＵ６Ａを取り上げて説明する。ＰＭＣＵ６Ａは、大きくプロセッサインタフェイスユニット（ＰＩＵ）４０、メモリインタフェイスユニット（ＭＩＵ）４１、システムバスインタフェイスユニット（ＳＢＩＵ）４２及びプロセッサ出力比較器４４にわかれる。
【００３９】
ＰＩＵ４０は、プロセッサ３Ａと４Ａとのインタフェイスユニット（ＰＩＵ）であり、プロセッサの外部アクセスがメモリアクセスのときは、マスタプロセッサ（３Ａとする）からのメモリアドレスやデータを信号線５００を介して受信バッファ４７に取り込み、プロセッサの外部アクセスが入出力バスへのアクセス
（ＰＩＯアクセス）のときは、メモリアドレスやデータを受信バッファ４６に格納する。一方、スレーブプロセッサ（４Ａとする）からのメモリアドレスやデータは、信号線５０１介して該ＰＭＣＵ６Ａに取り込まれるが、受信バッファ４６や４７には格納されない。マスタ及びスレーブプロセッサ３Ａ、４Ａからのアドレスやデータや制御信号は、マスタプロセッサ３Ａが書き込みアクセスを出力したとき、プロセッサ出力比較器４４で比較される。そして値が不一致の時、マスタ・スレーブエラー信号４００がアサートされる。また、このＰＩＵ４０の動作中に検出されるパリティエラーや制御回路のエラーなどは、信号線４０１を介して論理和素子４３に伝えられる。
【００４０】
ＭＩＵ４１は、ＰＩＵ４０からのメモリアクセスと後述のＳＢＩＵ４２からのＤＭＡアクセスをセレクタ５０６で受け、信号線５０３を介してメモリ５Ａをアクセスし、応答をそれぞれＰＩＵ４０あるいはＳＢＩＵに返す。ＭＩＵ４１がＰＩＵ４０から受けるアクセスは、メモリリードとメモリライトである。メモリリードのときには、受信バッファ４７に格納されたリードアドレスがセレクタ５０６を介して、メモリ５Ａに伝えられる。そして、メモリ５Ａから読み出されたデータは、セレクタ５０５を介して、送信バッファ４８に格納され、マスタ・スレーブプロセッサ３Ａと４Ａに返される。メモリライトのときには、受信バッファ４７に格納されたリードアドレスとライトデータがセレクタ５０６を介して、メモリ５Ａに書き込まれる。ＭＩＵ４１がＳＢＩＵ４２から受けるアクセスは、ＤＭＡリードとＤＭＡライトである。ＤＭＡリードのときには、受信バッファ５０に格納されたリードアドレスがセレクタ５０６を介して、メモリ５Ａに伝えられる。そして、メモリ５Ａから読み出されたデータは、送信バッファ４９に格納され、システムバス９Ａを介して入出力バス側に返される。ＤＭＡライトのときには、受信バッファ５０に格納されたリードアドレスとライトデータがセレクタ５０６を介して、メモリ５Ａに書き込まれる。セレクタ５０６の制御方法は、ここでは示していないが、ＳＢＩＵ４２側を優先することが望ましい。このＭＩＵ４１の動作中に検出されるパリティエラーや制御回路のエラーなどは、信号線４０２を介して論理和素子４３に伝えられる。ＭＳアクセスモニタ４５は、メモリコピー（詳細は後述）の時に正常系のＭＩＵが行うメモリへのリード・ライトアクセスを監視して、必要に応じてアドレスとデータを取り込むものである。この取り込んだアドレスとデータは、信号線５０４を介してメモリコピーアクセスとしてシステムバス９４Ａに出力されて、組みとなっているＤＳＢＡを経由して、他系のメモリに書き込まれる。
【００４１】
ＳＢＩＵ４２は、システムバス９ＡからのＤＭＡアクセスとＰＩＵ４７からのＰＩＯアクセスを処理する。ＰＩＵ４０からのＰＩＯリードアクセスのときは、システムバス権を獲得後、受信バッファ４６に格納されたアドレスをセレクタ５０を介してシステムバス９Ａに出力する。そして、入出力デバイスなどからのリードデータは、セレクタ５０５を介して、送信バッファ４８に格納され、マスタ・スレーブプロセッサ３Ａと４Ａに返される。ＰＩＵ４０からのＰＩＯライトのときには、同様にシステムバス権を獲得後、受信バッファ４６に格納されたリードアドレスとライトデータをセレクタ５０７を介してシステムバス９Ａに出力する。システムバス９ＡからのＤＭＡリード・ライトアクセスのときの動作は、ＭＩＵ４１で述べた通りである。このＳＢＩＵ４２の動作中にパリティエラーや制御回路のエラーなどが検出されたときは、信号線４０３を介して、論理和素子４３に伝えられる。
【００４２】
論理和素子４３は、当該ＰＭＣＵ６４の動作中に何等かのエラーが検出されると、即ち、信号線４００〜４０３のいずれか一つでも“１”となると、信号線
（ＰＭＣＵ−ＥＲＲ）９５Ａをアサートして、プロセッサ間インタフェイス制御装置（ＰＸＩ）７Ａに伝える。
【００４３】
〈クロック回路（ＣＬＫ）〉
図７に両ＣＰＵ１Ａと１Ｂクロック回路８Ａ、８Ｂの内部構成例と接続関係を示す。クロック回路自体は８Ａと８Ｂとも同じなので、ここでは８Ａについて説明する。５０Ａは水晶発信器を内蔵する当業者周知のオシレータ（ＯＳＣ）であり、１０ＭＨｚなどの比較的低い周波数のクロック５０１Ａを出力する。ＯＳＣ５０Ａの周波数を低く設定することによって、図４に示したようなＡ系とＢ系のＣＰＵの間が数１０センチメートル離れる実装を行っても、安定したクロックを両方の系に供給できる。５１Ａは、自系のＯＳＣ５０Ａからのクロックと他系のＯＳＣ５０Ｂからのクロックを選択するセレクタ（ＳＥＬ）である。５２Ａは、フェーズロックループ回路（ＰＬＬ）であり、ＳＥＬ５１Ａで選択されたクロックと位相の合ったｎ倍周波数のクロック５４Ａを生成して、プロセッサや周辺回路に必要な高周波数クロックを供給する。５３Ａは、両ＯＳＣ５０Ａ、５０Ｂの停止検出回路であり、クロ粘ク５０１Ａあるいは５０１Ｂの発信停止を検出すると、制御信号５６Ａによって、セレクタ５１Ａが正常なＯＳＣの出力を選択するように制御する。ＯＳＣ５０Ａと５０Ｂは、最初に電源の入った方をクロックマスタとするマスタ・スレーブ動作を行う。例えば、Ａ系が先に立ち上がったとすれば、ＯＳＣ５０Ａがクロックマスタとなり、セレクタ５１Ａと５１Ｂは、いづれもクロック５０１Ａを選択する。そして、ＯＳＣ５０Ａが停止したときには、これを停止検出回路５１Ａと５１Ｂでそれぞれ検出して、セレクタ５１Ａ、５１Ｂがクロック５０１Ｂを選択するように動作する。この切替動作を、ＰＬＬ引き込み時間よりも小さい、例えば３００ｎｓ程度の短い時間で行うことにより、クロックが切り替わっても、両方のＰＬＬ５２Ａ、５２Ｂの出力は途切れることなくプロセッサや周辺回路にクロックを供給できる。
【００４４】
〈多重システムバスアダプタ（ＤＳＢＡ）〉
図８乃至図１４を用いて、２つのＣＰＵと１つの入出力バスを接続する接続装置すなわち多重システムバスアダプタ（ＤＳＢＡ）を説明する。
【００４５】
図８に、ＤＳＢＡによる２重化システムバス（ＤＳバス）制御まわりに焦点を当てた構成を示す。ここでは、図５の実施例においてＣＰＵ１Ａ、１ＢとＡ系の入出力バス３０Ａの接続に関与するＤＳＢＡｐ１１ＡとＤＳＢＡｓ１１Ｂの組について説明するが、他のＤＳＢＡの組の場合も同じである。ＤＳＢＡｐ１１ＡはプライマリＤＳＢＡと定義され、ＤＳＢＡｓ１１ＢはセカンダリＤＳＢＡと定義される。２つのＤＳＢＡｐ１１ＡとＤＳＢＡｓ１１Ｂは、それぞれＣＰＵ１Ａと１Ｂから同時にＩＯＤＳバスアクセスを受けるが、ＤＳＢＡｐ１１Ａだけが、ＩＯＢＡ２０Ａに対してそのＣＰＵアクセスを伝える。そして、ＩＯＢＡ２０Ａからのアクセスは、ＤＳバスを介してＤＳＢＡｐ１１ＡとＤＳＢＡｓ１１Ｂが同時に受けて、それぞれのＣＰＵ１ＡとＣＰＵ１Ｂに同じタイミングで伝える。つまり、ＤＳＢＡは、ＣＰＵからのアクセスに対してはセレクタを形成し、ＩＯバスからのアクセス（応答）に対してはディストリビュータの役割をする。
【００４６】
ところで、ＣＰＵ１ＡとＣＰＵ１Ｂは、正常時には同じ動作をしているが、何等かの障害が発生すると同期がずれてくる。この同期ずれは、２つのＣＰＵが１つのＤＳバス１５Ａにアクセスするときに顕在化する。ＤＳＢＡｐ１１ＡとＤＳＢＡｓ１１Ｂは、この同期ずれをＤＳＢＡ間インタフェイス６０を介して検出し、片系障害時に障害系ＣＰＵブロックを切り離すタイミングを生成する。図９に、ＤＳＢＡ間インタフェイス６０の信号の一例を示す。６１Ａと６１Ｂは、それぞれＣＰＵ１Ａと１Ｂからのシステムバス使用許可信号であり、６２Ａと６３Ｂは、それぞれＤＳＢＡが生成するシステムバス要求信号である。６３Ａと６３Ｂは、それぞれのＤＳＢＡ内でエラーを検出したことを示すエラー信号である。次の図１０のＤＳＢＡの具体的構成例では、ＤＳＢＡ間インタフェイス６０にパリティビットなどのエラー検出符号を付加していないが、図９に示すように、必要に応じて付加できることは明かである。
【００４７】
図１０に、ＤＳＢＡｐ１１Ａの内部構成例を示す。ＤＳＢＡはプライマリかセカンダリによって動作は異なるが、全て同じハードウエアで実現できるので、ここでは、Ａ系ＣＰＵ１Ａに接続されるプライマリＤＳＢＡｐ１１Ａを例に説明する。
【００４８】
システムバス９Ａの信号は、データ／アドレス信号７５１とリード／ライトなどの制御信号７５２を含んでいる。同様にＤＳバス１５Ａの信号は、データ／アドレス信号７５３と制御信号７５４を含んでいる。受信バッファ７３はシステムバス９Ａからのアドレスやデータを格納するバッファ、送信バッファ７４はＤＳバス１５Ａからのアドレスやデータを格納するバッファである。ＤＳＢＡが処理するアクセスは、ＣＰＵから入出力装置へのアクセス（ＰＩＯリードアクセスとＰＩＯライトアクセス）、入出力装置側からメモリへのアクセス（ＤＭＡリードアクセスとＤＭＡライトアクセス）である。ＰＩＯリードアクセスの時は、信号線７５１上のリードアドレスを受信バッファ７３に格納し、このアドレスをＤＳバス１５Ａに送出する。そして、入出力装置側から読み出されたデータは、送信バッファ７４に一旦格納された後、信号線７５１を介してＣＰＵに伝えられる。ＰＩＯライトアクセスの時には、信号線７５１上のライトアドレスとライトデータを受信バッファ７３に格納し、これをＤＳバス１５Ａに送出する。そして、このデータは、アドレスで示される入出力装置に書き込まれる。一方、ＤＭＡリードアクセスの時は、信号線７５３上のリードアドレスを送信バッファ７４に格納し、信号線７５１を介してＰＭＣＵへ伝え、ＰＭＣＵは、このアドレスを用いてメモリ（ＭＳ）をアクセスする。そして、メモリから読み出されたデータは、受信バッファ７３に一旦格納された後、ＤＳバス１５Ａを介してＤＭＡアクセス元に返される。ＤＭＡライトアクセスの時には、信号線７５３上のライトアドレスとライトデータを送信バッファ７４に格納し、システムバス９Ａに送出する。ＰＭＣＵは、このアドレスを用いてデータをメモリに書き込む。
【００４９】
送受信制御部７１は、制御信号７５２、７５４を取り込み、バッファ７３、７４を管理して、システムバス９ＡあるいはＤＳバス１５Ａへのアドレスやデータの送出を制御する部分である。この送受制御部７１は、ＤＳバス１５Ａ上のアクセスを監視し、アクセスが正常終了しない場合には割り込みトランザクションのデータパターン７７をシステムバス９Ａに送出することにより、ＣＰＵ１Ａにアクセス異常を報告する。また、その正常終了しないアクセスがリードアクセスである場合には、割り込みトランザクションのデータパターン７７をシステムバス９Ａに送出したうえで、固定パターンのデータ７８をシステムバス９Ａに送出することにより、ＣＰＵ１Ａにリターンデータとして返送する。ＣＰＵ１Ａ内のプロセッサ上で動作するプログラムは、ＩＯアクセス命令の正常終了を確認すべき場合にはＩＯリードアクセスを発行し、リードデータが固定パターンと一致するか否かを比較することにより障害の発生を認識でき、かつ、誤データが入力されて、そのデータを用いて命令実行する事による両系メモリをプログラムにより破壊することを回避できる。ちなみに、このＤＳバス１５Ａ上のアクセスの監視は、ＤＳバスのパリティエラー等のアクセス時に即座に発生するもののみならず、ＰＩＯリードのタイムアウト検出等も含む。特にＰＩＯリードのタイムアウト検出を行うことは重要である。なぜなら、入出力装置等の故障によるＩＯアクセスの異常終了に対し、ＤＳＢＡにて固定パターンのデータ７８をＣＰＵ１Ａにリターンデータとして返送することにより、システムダウンを防止しているからである。ＩＯ空間畳込み回路７６は、受信バッファ７３に格納されたＰＩＯアクセスのアドレスを当該ＤＳＢＡ配下の入出力アダプタあるいは入出力装置内のアドレスに変換する回路である。フラグ７７１は、ＩＯ空間畳込み回路７６の出力を有効とするかの選択を指示するフラグであり、ＤＳＢＡ内の制御レジスタの一つとして、該ＤＳＢＡと対になるＤＳＢＡが故障したときにソフトウエアによって設定される。
【００５０】
本実施例に於ては、２重化された入出力装置の制御をすべてソフトウエアで行う場合を中心に説明しているが、上記ＩＯ空間畳込み回路７６を用いることによって、入出力装置を切り替えてもソフトウエア（たとえばデバイスドライバなど）に対してのアドレスをかえずに済むため、２重化制御の負担を減らすことが可能になる。
【００５１】
コマンド解析／実行回路７９は、ＤＳＢＡのレジスタ空間へのＰＩＯライトとして、ＣＰＵからＤＳＢＡへ指示されるコマンドを解析し、実行する回路である。当該ＤＳＢＡｐ１１Ａの場合には、ＣＰＵ１Ａから入出力アダプタ３１Ａ、３５Ａ、３９Ａと入出力デバイスとの論理接続を切り離す指示コマンドを受領すると、コマンド解析／実行回路７９は入出力アダプタ３１Ａ、３５Ａ、３９Ａに対し、切離し信号線１７ＡＡをオンにする。ＤＳＢＡｓ１１Ｂの場合にも、ＣＰＵ１Ｂから入出力アダプタ３１Ａ、３５Ａ、３９Ａと入出力デバイスとの論理接続を切り離す指示コマンドを受領すると、切離し信号線１７ＡＢをオンにし、これを切離し信号線１７ＡＡに伝える。また、図５において、ＤＳＢＡｓ１２Ａの場合には、ＣＰＵ１Ａから入出力アダプタ３１Ｂ、３５Ｂ、３９Ｂと入出力デバイスとの論理接続を切り離す指示コマンドを受領すると、切離し信号線１７ＢＡをオンにし、これを切離し信号線１７ＢＢに伝え、入出力装置３１Ｂ、３５Ｂ、３９Ｂを切り離す。ＤＳＢＡｐ１２Ｂの場合には、ＣＰＵＢから入出力アダプタ３１Ｂ、３５Ｂ、３９Ｂと入出力デバイスとの論理接続を切り離す指示コマンドを受領すると、入出力アダプタ３１Ｂ、３５Ｂ、３９Ｂに対し、切離し信号線１７ＢＢをオンにする。この切離し制御指示のコマンドとその切離し信号線は、各入出力アダプタ毎に個別であることが望ましいが、入出力装置３１Ａ、３５Ａ、３９Ａ、および入出力アダプタ３１Ｂ、３５Ｂ、３９Ｂに対し、グルーピングされていてもかまわない。
【００５２】
なお、図５に示すように、切離し信号線１７ＡＡ、１７ＢＢは、入出力バス信号線（１５Ａ、１５Ｂ、３０Ａ、３０Ｂ等）とは別線であり、入出力アダプタ側も該切離し信号線のオンにより強制的に入出力デバイスとの論理接続を切り離す回路を含むことにより、入出力バスや入出力アダプタに障害が発生した場合、確実に入出力デバイスとの論理接続を切り離すことが可能となり、この故障の発生した入出力装置とペアの入出力アダプタと入出力デバイスを確実に接続することにより、入出力デバイスでの処理を確実に継続できる。
【００５３】
この切離し制御は、特にＦＤＤＩのＬＡＮに接続しているＬＡＮＣには重要である。ＬＡＮＣの故障時には、故障したＬＡＮＣを切り離し、ペアのＬＡＮＣを故障したＬＡＮＣと同一のＭＡＣアドレスでＦＤＤＩに加入させる。これはＭＡＣアドレスを引き継ぐことにより、通信相手からＬＡＮＣの故障による切り替えを意識させないためである。しかし、ＦＤＤＩにはＭＡＣアドレスの重複チェック機構があるため、故障したＬＡＮＣをＦＤＤＩから離脱させないと、切り替えたＬＡＮＣのＦＤＤＩへの加入が成功しない。そのため、ＬＡＮＣは切離し信号線による指示を契機にＬＡＮＣ全体をリセットし、光信号の送出を停止することにより、ＦＤＤＩから離脱する。この動作例については後述する。
【００５４】
また、ディスク装置用の入出力アダプタ、回線制御装置用の入出力アダプタに関する切離し制御では、切離し信号線による指示を契機に当該入出力アダプタ
（ＩＯＡ）をリセットすることにより、それ以降、障害の発生したＩＯＡから入出力デバイスへのアクセスを停止させて、別系に切り替えたＩＯＡからの入出力デバイスへのアクセスが妨害されことを防止する。なお、入出力デバイスによっては、この切離し信号線による指示を契機にＩＯＡをリセットするとともに、それに接続される入出力デバイスをもリセットした方が好ましいものもある。これは、各系で切離し信号線を複数本用意し、入出力デバイスに対してもリセットするか否かをプログラムにより指示できるようにすることで可能である。
【００５５】
パリティチエック（ＰＣ）７５５と７５６は、それぞれ信号線７５１と７５３上のアドレス／データをパリティチェックし、エラーを検出すると、パリティエラーとして論理和素子７６に伝える。送受信制御部７１も、エラーを検出すると、それを論理和素子７６に伝える。ＤＳＢＡ内で何等かのエラーが検出されると、論理和素子７６の出力として、ＤＳＢＡＥＲＲＯＲ６３Ａが自系と他系の切離し要求生成部７２に伝えられる。切離し要求生成部７２は、これらＤＳＢＡ内あるいはＤＳＢＡ間でエラーを検出したときに、故障ＣＰＵブロックの切離し要求信号（ＤＩＳＣＯＮＲＥＱ）６４Ａを生成して、他系のＰＸＩ（ＰＸＩ７Ｂ）に伝える。
【００５６】
出力ゲート制御回路７５は、ＤＳバス１５Ａへの出力ゲートの制御を行う回路である。図１１に出力ゲート制御回路７５の詳細を示す。通常の出力ゲート制御は、送受信制御部７１からＤＳバス１５Ａへの送信信号（ｓｅｎｄ）が出されたときに出力ゲートを開ければ良い。しかし、本実施例では、ＤＳＢＡを多重システムバスアダプタとして動作させるために、図１１に示す構成を採る。図１１において、８１、８２は論理積素子であり、８３０、８３１、８３２は否定論理素子である。信号線８４は、送受信制御部７１からＤＳバス１５Ａへの送信信号
（ｓｅｎｄ）であり、信号線６５は、自系ＣＰＵブロックが切り離されていることを示すＤＩＳＣＯＮ信号である。信号線６６は、他系ＣＰＵブロックが切り離されていることを示すＤＩＳＣＯＮ信号である。信号線６７は、セカンダリＤＳＢＡであることを示す信号である。２つのＣＰＵが正常に動作しているときには、プライマリ・セカンダリ両方のＤＳＢＡは同じ様にｓｅｎｄ信号８４をアサートとするが、プライマリ（即ち信号線６７がネゲートされている）ＤＳＢＡだけが論理積素子８１で信号線８５をイネーブルし、出力ゲートが開いて、アドレス／データ等ＤＳバスにを送出できる。また、自系ＣＰＵブロックが障害を起こして、切り離される（信号線６５がアサート）時には、信号線６５によって信号線８５がネゲートされるので、自系の出力ゲートは一切開かず、これによって自系ＣＰＵブロックがＤＳバスからの切離しを実現する。また、他系が障害を起こして、切り離される（信号線６６がアサート）時には、セカンダリＤＳＢＡであってもｓｅｎｄ信号８４に従って信号線８５がアサートし、アドレス／データ等をＤＳバス等に送出できる。
【００５７】
図１２に切離し要求生成部７２の構成例を示す。９００−１〜９００−４は論理積素子、９０１は論理和素子、９０２は排他的論理和素子、９０３は否定論理素子である。９０は１０マイクロ秒のタイマである。タイマ９０は、自／他系ＰＭＣＵからのシステムバス使用許可信号９１Ａ（６１Ａ）と９１Ｂ（６１Ｂ）の不一致が排他的論理和素子９０２で検出されて信号９１０がアサートされるか、あるいは自系ＰＭＣＵでエラーが検出されてＰＭＣＵＥＲＲ信号９５Ａがアサートされると、カウントを開始し、他系のＣＰＵブロックを切り離すＸＤＩＳＣＯＮ信号６６がアサートされると、カウントを停止してクリアするが、１０マイクロ秒経過すると、タイムアウト信号９６をアサートする。論理積素子９００ー１は、他系エラーを検出する回路である。即ち、信号６３ＡのＮＯＴ信号と信号６３Ｂを入力して、自系がエラーでなく他系がエラーの時に、他系のエラー信号９９をアサートする。これによって、論理和素子９０１から他系ＣＰＵブロックの切離し要求信号９４Ａ（６４Ａ）がアサートされる。論理積素子９００ー２、９００−３は、それぞれ同期ずれを検出する回路である。即ち、自系／他系のシステムバス要求信号９２Ａ（６２Ａ）、９２Ｂ（６２Ｂ）やシステムバス使用許可信号９１Ａ（６１Ａ）、９１Ｂ（６１Ｂ）について、他系の信号をアサートしない場合に故障と見なして、他系の同期ずれエラー信号９１１や９８をアサートする。このうち、システムバス使用許可信号に着目する同期ずれエラー信号９８については、ＣＰＵが別の原因で既に同期ずれを起こしている可能性があるので、すぐに切り離し要求信号９４Ａ（６４Ａ）をだすのは危険である。そこで、要因が判明するまでしばらくの間、論理積素子９００−４により、タイマ９０の出力９６で同期ずれエラー信号９８をマスクする。
【００５８】
図１３と図１４に、同期ずれエラーを検出してから、他系ＣＰＵブロック切り離し要求がアサートされるまでのタイムチャートを示す。
【００５９】
第１３図は、ＰＭＣＵからのバス使用許可信号が、Ａ系からは正常に出力されたが、Ｂ系から出力されなかった場合を示している。Ｂ系バス使用許可信号の欠落がＡ系のＤＳＢＡ１１Ａの切離し要求生成部７２で検出される時の動作は次の通りである。Ｂ系のＰＭＣＵからのバス使用許可信号（ＰＢＧＲＴＢ−Ｎ）は、ＤＳＢＡ１１Ｂ内でラッチされ、ＤＳＢＡ間インタフェイス信号６１ＢとしてＡ系ＤＳＢＡ１１Ａに渡される。一方、Ａ系のＤＳＢＡ１１Ａでは、Ｂ系からのバス使用許可信号とタイミングをあわせるためにＡ系のバス使用許可信号を２回ラッチして信号９１Ａを生成する。そして、信号９１Ａと９１Ｂを比較して不一致信号（ＣＭＰＥＲＲ−Ｎ）をアサートする。Ａ系バス使用許可信号についても前述と同様の動作が対称的にＤＳＢＡ１１ＡとＤＳＢＡ１１Ｂの間でおこなわれ、それぞれのＤＳＢＡで同時に不一致信号（ＣＭＰＥＲＲ−Ｎ）がアサートされる。
【００６０】
第１３図の場合は、ＰＭＣＵの信号の同期ずれであり、ＣＰＵの別の原因で同期ずれを起こしており、ＰＭＣＵから切り離し要求が出されている可能性がある。そこで、しばらく切り離しを待って、切り離しが行われなければ、ＤＳＢＡが改めて切り離し要求を出すことを示している（９４Ａ）。
【００６１】
第１４図は、同様に、ＤＳＢＡからのバス使用要求信号が、Ａ系からは正常に出力されたが、Ｂ系から出力されなかった場合を示している。ＤＳＢＡからのバス使用要求信号（ＰＢＲＥＱＢーＮ）は、ＤＳＢＡ間インタフェイス６０を介して、１サイクルかけて２つのＤＳＢＡ間で渡される（９２Ｂ）。自系のＤＳＢＡ内では、他系からのバス使用要求信号と位相をあわせるために内部でさらにラッチする（９２Ａ）。ＤＳＢＡでは、９２Ａと９２Ｂを比較して不一致信号（ＣＭＰＥＲＲ−Ｎ）をアサートし、切り離し要求信号を出す（９４Ａ）。この切り離し要求信号は、６４ＡとしてＰＸＩ７Ａに伝えられて、最終的な切り離し信号を生成する。
【００６２】
〈プロセッサ間インタフェイス制御装置（ＰＸＩ）〉
図１５に、切り離し信号（ＸＤＩＳＣＯＮ）の生成にかかわるＰＸＩの構成を示す。ＰＸＩは各系にあるが、全く同じ構成なので、ここではＡ系のＰＸＩ７Ａについて説明する。６４Ａは、自系のＤＳＢＡから出される他系ＣＰＵブロックの切り離し要求信号である（図１２）。５７は他系のＰＸＩとのインタフェイス信号であり、ＬＸＤＩＳＣＯＮＲＥＱＡーＮはＡ系からのＢ系切り離し要求、ＬＸＤＩＳＣＯＮＲＥＱＢーＮはＢ系からのＡ系切り離し要求、ＬＸＤＩＳＣＯＮＡーＮはＡ系からのＢ系切り離し指示、ＬＸＤＩＳＣＯＮＢーＮはＢ系からのＡ系切り離し指示である。６５は、ＬＸＤＩＳＣＯＮＢーＮをラッチで受けて、タイミング調整した自系ＣＰＵブロックの切り離し指示信号であり、ＤＳＢＡの出力ゲート制御回路７５が出力ゲートを閉じることによって自系をＤＳバスから切り離す（図１０）。１２１は、信号６４Ａとその他のＣＰＵブロック切り離し要求信号との論理和をとる論理和素子である。１２２は、自系のＣＰＵの状態を保持する状態レジスタである。ＣＰＵの状態としては、後述の図１７に示す６つの状態（ＮＯＮＥ、ＩＮＩＴ、ＲＥＡＤＹ、ＣＯＰＹ、ＯＮＬＮ、ＤＩＳＣＯＮ）がある。切離し判定回路１２０は、論理和素子１２１の出力の他系への切り離し要求信号１２３と他系ＰＸＩから自系への切り離し要求信号１２５及び自系ＣＰＵ状態レジスタ１２２の状態信号により、どちらの系を切り離すかを判定する。エラーは同時に２箇所で発生したり、既に片系が切り離されているときに残存系でエラーが発生する事があるため、切り離し要求を受けてそのまま切り離し指示を出すと、両系切り離しという致命的な状態になる場合がある。そこで、切離し判定回路１２０で切り離してよいか否かのネゴシエーションを行ってからＡ系からのＢ系切り離し指示ＬＸＤＩＳＣＯＮＡ１２４をアサートする。図１６に、切離し判定回路１２０の判定論理を示す。即ち、Ａ系からのＢ系切り離し指示信号ＬＸＤＩＳＣＯＮＡ１２４がアサートされるのは、自系がオンライン状態（ＯＮＬＮ）であって、自系への切り離し要求がなくかつ他系への切り離し要求が自系ＣＰＵから出されているときにのみである。
【００６３】
〈ＣＰＵ動作モード〉
図１７にＣＰＵの状態モード、図１８にその定義を示す。ＣＰＵ状態としては、６つの状態（ＮＯＮＥ、ＩＮＩＴ、ＲＥＡＤＹ、ＣＯＰＹ、ＯＮＬＮ、ＤＩＳＣＯＮ）がある。ＮＯＮＥは、未実装状態またはクロック停止であり、全く動作していない状態である。ＩＮＩＴは、ＣＰＵの初期化中であり、他系とは非同期に自ＣＰＵの初期化処理を実行している状態である。ＲＥＡＤＹは、メモリコピ−開始待ち状態である。ＣＯＰＹは、メモリコピ−中であり、他系からのメモリコピ−を受けてメモリ一致化処理を行っている状態である。メモリコピーについては後述する。ＯＮＬＮは、システムに組み込まれて正常に動作している状態である。ＤＩＳＣＯＮは、他系によって切り離し指示が出されている状態である。
【００６４】
初期復電時の状態はＮＯＮＥであり、ＣＰＵの初期化処理を行った後にＯＮＬＮ状態になる。一方、２重化同期動作状態からエラー発生によって、切り離された後再投入された場合には、ＣＰＵの初期化処理を行った後に正常系のＣＰＵからのメモリの複写開始待ち状態になる。その後、実際に正常系のＣＰＵからのメモリの複写を受けるＣＯＰＹ状態になり、複写が終了するとＯＮＬＮ状態となって２重化同期運転状態に復旧する。
【００６５】
次に、本実施例に示す高信頼化コンピュータシステムの代表的な動作例について説明する。
【００６６】
〈正常時の動作〉
（１）ＩＯバスアクセスを伴わない時
ＩＯバスアクセスを伴わずプロセッサとメモリだけでプログラム実行が行われる時には、２つのＣＰＵ１Ａ、１Ｂは、同じプログラムを同じ順序で同期しつつも独立して実行する。
【００６７】
（２）ＩＯアクセスを伴う時
図１９に、両系正常時のＩＯアクセス動作の概要を示す。図１９（ａ）に示すように、ＩＯアクセス起動時には、２つのＣＰＵから同じＩＯに対するアクセスが同時に出力される。プライマリとセカンダリのＤＳＢＡは、それぞれこれを受るが、プライマリＤＳＢＡ側のアクセスだけが入出力バスあるいは入出力アダプタに伝えられる（１４０、１４１）。ＩＯ側からの応答は、図１９（ｂ）に示すように、プライマリとセカンダリのＤＳＢＡが受けて、２つのＣＰＵ１Ａ、１Ｂに同時に同じ応答を返す（１４２、１４３）。図１９では、ＣＰＵをアクセス元としたが、入出力バスあるいは入出力デバイスがアクセス元となるＤＭＡ（ダイレクトメモリアクセス）の時は、図１９の起動と応答が逆になるだけである。つまり、同期運転をしている２つのＣＰＵと１つの入出力バス、入出力アダプタをプライマリとセカンダリＤＳＢＡで接続し、ＣＰＵからのアクセスをＤＳＢＡで選択し、入出力バスあるいは入出力アダプタ側からのアクセスを２つのＣＰＵに分配する事によって、ＩＯを伴ってもＣＰＵの２重化同期運転を続けることができる。
【００６８】
〈ＣＰＵ障害時の動作〉
障害時の動作としては、（１）エラーの検出、（２）障害ブロックの特定、（３）障害ブロックの切り離し、（４）処理の継続、などのステップが必要となる。実施例では、ＣＰＵ障害時は、これらのステップが次の通りハードウェアにより自動的に行われる。
【００６９】
（１）エラー検出
ＣＰＵブロックには図６に示したように、パリティチェックなど様々なハードウェアのエラー検出手段があるが、ＣＰＵブロック内でエラー検出した場合には、以下に述べる処理ステップはエラーの内容によらず同様である。従ってここでは、片系のメモリでパリティエラーが発生した場合を考える。
【００７０】
（２）障害ブロックの特定
エラーの発生がＰＸＩに報告され、ＰＸＩは障害ブロックを特定する。
【００７１】
（３）障害ブロックの切り離し
エラーの発生がＰＸＩに報告されるとＰＸＩは、３００ｎｓ程度の非常に短い時間でエラーが発生したＣＰＵブロックに対して切離し指示信号６５を出す（図１５）。ＤＳＢＡは、切離し指示信号６５に従って出力ゲートを閉じてＣＰＵブロックを入出力バスから切り離す（図１０）。
【００７２】
（４）処理の継続
図２０に、片系ＣＰＵ障害時のＩＯアクセス動作の概要を示す。図２０（ａ）に示すように、ＩＯアクセス起動時には、プライマリとセカンダリに関係無く正常系のＤＳＢＡのアクセスだけが入出力バスあるいは入出力アダプタに伝えられる（１４４）。ＩＯからの応答も、図２０（ｂ）に示すように、正常系のＤＳＢＡ（プライマリとセカンダリに関係無く）がこれを受けて、正常なＣＰＵにのみ応答を返す（１４５）。図２０では、ＣＰＵをアクセス元としたが、入出力バスあるいは入出力デバイスがアクセス元となるＤＭＡ（ダイレクトメモリアクセス）の時は、図２０の起動と応答が逆になるだけだある。このように、正常系のＣＰＵの処理にとって他系ＣＰＵの障害の発生は処理継続という点では透過である。
【００７３】
〈ＬＡＮＣ障害時の動作〉
障害時の動作として、（１）エラーの検出、（２）障害部位の特定、（３）障害部位の切り離し（４）処理の継続、などの各ステップが必要となる。ＬＡＮＣ障害時は、これらのステップが次のようにしてハードウェアとソフトウェアの連携により行われる。
【００７４】
（１）エラー検出
図１０で説明したように、ＤＳＢＡにてＤＳバス上のアクセスを監視し、アクセスが正常終了しない場合には割込みトランザクションのデータパターンをシステムバスに送出することにより、ＣＰＵにアクセス異常を報告する。また、その正常終了しないアクセスがリードアクセスである場合には、割込みトランザクションのデータパターンをシステムバスに送出したうえで、固定パターンのデータをＣＰＵにリターンデータとして返送する。ここでは、特に正常終了しないアクセスがリードアクセスである場合について述べる。
【００７５】
（２）障害部位の特定
割り込みトランザクションによりアクセス異常を報告されたＣＰＵ内のプロセッサ上で動作するプログラムは、割込みトランザクションの内容に従いＤＳＢＡにて検出された障害を認識し、ＤＳＢＡにて採取されている障害ログの内容により障害部位の特定を行う。たとえばＤＳバスのパリティエラー等の場合は障害部位はＤＳバスであると特定され、ＰＩＯリードのタイムアウト検出でしかもＤＳバスのアクセス時に他のエラーを検出していない場合には、ＤＳＢＡにて採取されているタイムアウト検出対象のアクセスアドレスにより、障害部位はアクセス対象の入出力装置側であるとプログラムにより特定できる。
【００７６】
（３）障害部位の切り離し
障害部位の特定を特定したＣＰＵ内のプロセッサ上で動作するプログラムは、ＤＳＢＡへのレジスタ空間へのＰＩＯライトにより、入出力アダプタと入出力デバイスとの論理接続を切り放す指示コマンドを発行することにより、障害部位を切り離す。これも図１０で述べたとおりである。なお、入出力バスが正常であり、入出力デバイスが自身のレジスタ空間に対する切り離しコマンドを受領できるレベルの障害であれば、プログラムは、入出力デバイス自身に指示コマンドを発行することにより障害部位を切り離すことも可能である。
【００７７】
（４）処理の継続
ＣＰＵ内のプロセッサ上で動作するプログラムは、障害の発生した入出力アダプタとペア関係にある入出力アダプタと入出力デバイスの論理接続を行い、未完了状態であるＩＯ処理を再起動することにより、入出力デバイスを用いた処理を継続する。この切り替えによるＦＤＤＩ−ＬＡＮでの処理の継続動作例を図２１に示す。
【００７８】
ここで、図２２に示すように、ＣＰＵ内のプロセッサ上で動作するプログラムは、処理結果の確認を行うためにＩＯアクセス命令の正常終了を確認すべき場合にはＩＯリードアクセスを発行し、リードデータが固定パターンと一致するか否かを比較することにより障害の発生を認識するためのアクセスをおこなう。このＩＯアクセス命令は、一連の入出力処理ステップの最後等にのみおこなうことにより、プログラムの処理ステップの増大を防ぐようにする。
【００７９】
また、図２３に示すように、入出力デバイス内にあるメモリのポインタ値を示すレジスタをアクセスするような場合には、リードデータが固定パターンと一致するか否かを比較し、固定パターンと一致するする場合には入出力デバイスの障害の発生を認識し、該当処理を異常終了する。なぜなら、謝ったリードデータ値を信じてＣＰＵ内のプロセッサ上で動作するプログラムが処理を続行すると、誤ったメモリアドレスをアクセスすることとなり、誤ったメモリの内容を用いて動作し続けたり、メモリの内容を破壊したり、未実装のメモリにアクセスしたりしてしまう。これは、両系のＣＰＵで同時に発生するため、システムダウンとなってしまう。そのため、上記のように、リードデータが固定パターンと一致するか否かを比較することにより、誤ったデータか否かを確認したうえでプログラムが処理を続行するようにすることにより、システムダウンを回避できる。
【００８０】
【発明の効果】
本発明によれば、中央処理装置（ＣＰＵ）のような非常に高速で高度な実装技術が要求される部分に二重化接続装置（ＤＳＢＡ）を設けるのでなく、ＣＰＵと入出力装置側との接続部分にＤＳＢＡを設けることで、通常のデータ処理装置やワークステーションやパーソナルコンピュータと共通のＣＰＵと入出力装置を使用した上で、高信頼性を実現できる。つまり、ＣＰＵだけでなく入出力装置のハードウエアに１点障害が発生しても当該障害部分を確実に切り離して、処理を続行することによりノーダウン運転を実現できる。
【図面の簡単な説明】
【図１】ＣＰＵとＩＯバス系がともに一重構成の本発明システムの基本構成を示す概念図である。
【図２】ＣＰＵが一重でＩＯバス系のみ二重化構成の本発明システムの概念図である。
【図３】ＣＰＵとＩＯバス系がともに二重化構成の本発明システムの概念図である。
【図４】本発明システムの一実施例の装置外観図である。
【図５】図３に対応する本発明システムの一実施例の概略構成図である。
【図６】図５中のプロセッサメモリユニット（ＰＭＣＵ）の具体的構成図である。
【図７】図５中のクロック回路（ＣＬＫ）の具体的構成図である。
【図８】二重化バスシステムアダプタ（ＤＳＢＡ）まわりの概略構成図である。
【図９】ＤＳＢＡ間インタフェイス信号の一覧表である。
【図１０】ＤＳＢＡの全体構成図である。
【図１１】図１０中の出力ゲート制御回路の具体的構成図である。
【図１２】図１０中の切離し要求生成回路の具体的構成図である。
【図１３】システムバス使用許可信号の同期ずれ検出時のタイムチャートである。
【図１４】システムバス要求信号の同期ずれ検出時のタイムチャートである。
【図１５】プロセッサ間インタフェイス制御装置（ＰＸＩ）の具体的構成図である。
【図１６】図１５中の切離し判定回路の判定論理を示す図である。
【図１７】ＣＰＵブロックの動作モードの遷移図である。
【図１８】図１７の各状態の定義を説明する図である。
【図１９】正常時のＩＯアクセス動作例を示す図である。
【図２０】ＣＰＵ障害時のＩＯアクセス動作例を示す図である。
【図２１】ＬＡＮＣ障害時のＬＡＮＣ切り替えによるＦＤＤＩでの処理の継続動作例を示す図である。
【図２２】入出力装置の制御に関するプログラム処理例を示す図である。
【図２３】ＩＯリードアクセスに関するプログラム処理例を示す図である。
【符号の説明】
１  ＣＰＵ
２  接続装置
３、４  プロセッサ
５  メモリ
６  プロセッサメモリ制御ユニット
７  プロセッサ間インタフェイス制御装置
９  システムバス
１１、１２、１３、１４  多重システムバスアダプタ（ＤＳＢＡ）
２０、２１  入出力バスアダプタ
３０  入出力バス
３１、３５  入出力アダプタ
３９  ＬＡＮ制御装置
【図１】
0003595033.tif 000002
【図２】
0003595033.tif 000003
【図３】
0003595033.tif 000004
【図４】
0003595033.tif 000005
【図５】
0003595033.tif 000006
【図６】
0003595033.tif 000007
【図７】
0003595033.tif 000008
【図９】
0003595033.tif 000009
【図８】
0003595033.tif 000010
【図１０】
0003595033.tif 000011
【図１１】
0003595033.tif 000012
【図１２】
0003595033.tif 000013
【図１３】
0003595033.tif 000014
【図１４】
0003595033.tif 000015
【図１５】
0003595033.tif 000016
【図１６】
0003595033.tif 000017
【図１７】
0003595033.tif 000018
【図１８】
0003595033.tif 000019
【図１９】
0003595033.tif 000020
【図２０】
0003595033.tif 000021
【図２１】
0003595033.tif 000022
【図２２】
0003595033.tif 000023
【図２３】
0003595033.tif 000024