(57)【要約】【課題】計算機の高信頼性化、システム動作中におけるエラー修復及び修理交換の容易化。【解決手段】処理装置１とシステムバス制御装置３をＣＰＵバスで接続し、システムバス制御装置３とメモリ装置４を二重化し、これらを一対のシステムバス１３にそれぞれ接続し、システムバス制御装置３及びメモリ装置４の内部に各々のバスのエラーを検出するためのエラー検出回路６、８０、８５と、バスの出力内容を比較する比較回路５１、１０４、１０５と、バス切換え回路７、８２、８３と、モード設定回路１００、１０１、１０２とを設け、エラー検出回路の出力を一対の装置間で交換し、相手側からのエラー検出回路の検出結果とモード設定回路の設定内容によって、バス切換え回路の制御を行う。【選択図】　　　　図２０
2004005627.tif 000002
【特許請求の範囲】
【請求項１】
各種の処理を行う処理装置と、この処理装置にＣＰＵバスを介して接続された一対のシステムバス制御装置と、この一対のシステムバス制御装置にそれぞれ接続された一対のシステムバスと、それぞれがこの一対のシステムバスの両方に接続された一対のメモリ装置Ａ及びＢと、を含み、処理装置における書込み動作時には、システムバス制御装置は一対のメモリ装置に同時に処理装置からのデータを書き込み、処理装置における読出し動作時には、いずれか一方のシステムバス制御装置が対応するメモリ装置から読み出したデータを処理装置に送出する二重化メモリシステムにおいて、
メモリ装置Ａ及びＢはそれぞれ、
メモリに対する書き込みを許可する書込み許可フラグと、
メモリからの読み出しを許可する読出し許可フラグと、
現アドレスに対するアクセスの対象を判別するアドレス判別回路と、
を有し、
アドレス判別回路による判別結果と書込み許可フラグ及び読出し許可フラグの組合せに応じてデータの書込みまたは読出しを行うことを特徴とする二重化メモリシステム。
【請求項２】
請求項１に記載の二重化メモリシステムにおいて、
該システムは、
前記書込み許可フラグ及び読出し許可フラグの組合せに従って前記の各メモリ装置の状態を定義する状態定義手段と、
処理装置による設定に従い、各メモリ装置を状態定義手段において定義された各状態間で遷移させる状態遷移手段と、
を備えたことを特徴とする二重化メモリシステム。
【請求項３】
請求項１に記載の二重化メモリシステムにおいて、
前記メモリ装置Ａ及びＢはそれぞれ、
メモリ装置Ａとメモリ装置Ｂがともにアクセス対象となる共通アクセス空間を指定する共通アクセス空間指定レジスタと、
メモリ装置Ａまたはメモリ装置Ｂのいずれか一方がアクセス対象となる個別アクセス空間を指定する個別空間アクセス指定レジスタと、
を備えたことを特徴とする二重化メモリシステム。
【請求項４】
請求項３に記載の二重化メモリシステムにおいて、
該システムは、
メモリ装置Ａとメモリ装置Ｂの共通アクセス空間指定レジスタの値を同じアドレスに設定する設定手段と、
メモリ装置Ａの個別空間指定レジスタの値とメモリ装置Ｂの個別空間指定レジスタの値を異なったアドレスに設定する第二の設定手段と、
これらの設定手段によって設定されたアドレスを任意のタイミングで再設定する第三の設定手段と、
を備え、
メモリ装置を追加することなく使用可能なメモリ容量の倍増を可能とすることを特徴とする二重化メモリシステム。
【請求項５】
請求項１に記載の二重化メモリシステムにおいて、
該システムは、
各メモリ装置の任意領域に擬似的なエラーを注入するエラー注入手段と、
エラーの注入された領域をアクセスしてエラーの状態を検査するエラー状態検査手段と、
を有し、
システム各部の機能確認を可能とすることを特徴とする二重化メモリシステム。
【請求項６】
請求項５に記載の二重化メモリシステムにおいて、
該システムは、
前記エラー注入手段によってエラーが注入される領域のアドレス及び注入されるデータの値を両メモリ装置で異なる値に設定する注入値設定手段、
を有することを特徴とする二重化メモリシステム。
【請求項７】
請求項１に記載の二重化メモリシステムにおいて、
前記各メモリ装置は、
システムバスのアドレスエラーを検出するシステムアドレスエラー検出手段と、
システムアドレスエラー検出手段の検出結果を他方のメモリ装置に通知するエラーアドレス信号線と、
他方のメモリ装置から通知されるエラーアドレス信号線の状態に従い、他方のメモリ装置でエラーが発生した際、自装置でエラーのないアドレスを記憶するエラーアドレス記憶手段と、
自装置でアドレスエラーが検出された際、自装置のメモリへの書込みを禁止する書込み禁止手段と、
を備えたことを特徴とする二重化メモリシステム。
【請求項８】
請求項７に記載の二重化メモリシステムにおいて、
該システムは、
前記システムアドレスエラー検出手段における検出結果に従って割込み信号を生成するシステムアドレスエラー割込み生成手段と、
システムアドレスエラー割込みが発生したときに前記エラーアドレス記憶手段に格納されたアドレスをもとにエラー修復を行うエラー修復手段と、
を備えたことを特徴とする二重化メモリシステム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、高信頼計算機におけるメモリ装置、特に二重化メモリシステムの構成方法、診断方法、及び障害監視方法に関するものである。
【０００２】
【従来の技術】
フォールトトレラント計算機の分野において、計算機の信頼性を高める最も一般的な技術の１つに、処理装置（ＣＰＵ）あるいは記憶装置など、信頼性上クリティカルな論理回路を多重化する方式がある。通常、記憶装置の多重化は二重化が基本で、二重化された記憶装置の一方を常用側、他方を待機側として構成する。この場合、書込み時は両方に同じデータを書き込んで一貫性を保ち、読出し時には常用側のデータのみを出力させるが、仮に常用側から読み出したデータにエラーが発生すれば、データ転送主体が待機側に切り換わり、こちらが正しいデータを出力することでシステムの動作継続が可能となる。
【０００３】
ところが従来の技術は、ほとんどがメモリ装置のみの二重化にとどまり、制御部や接続されるシステムバスの二重化による高信頼化手法は確立されていない。従って、故障した記憶装置を切り離して診断する手段、システム動作中の修理交換（活線交換）、記憶装置を接続するシステムバスが故障した時の対処は、いずれも不十分であった。
【０００４】
二重化記憶装置の切り換え技術として、特開昭５９−１７７９６号公報、特開平０１−７０８４７号公報、特公昭６０−３２２５号公報、特開昭６３−２７３９５０号公報、特開昭６０−２３８９５７号公報、特開昭５７−１０９１９５号公報、特開平４−２３３０５２号公報に記載されている方式では、記憶装置の接続されるバスが二重化されておらず、またほとんどの方式において、制御部の二重化がなされていなかった。さらに記憶装置にエラーが発生した場合、読出し時なら切り換えや修復によって正しいデータが保証されるものの、書込み時については配慮が不足し、リトライ動作等による性能の低下、処理装置側回路の複雑化を招いていた。さらに、故障したメモリの診断時に正常なメモリに影響を与えない考慮、故障した制御部やメモリ装置をシステムの動作中に修理交換する手段、入出力制御装置が記憶装置をアクセスする時の信頼性考慮等も十分とはいえず、システム全体の信頼性向上に改善の余地が残るものであった。
【０００５】
【発明が解決しようとする課題】
前述のごとく従来の技術にはいくつかの課題があり、これを解決するためには、すべての構成要素を二重化する方法が考えられる。これは単に構成要素を二組用意すれば実現できるものではなく、システムとして常に正しい連続動作を確保するために、以下の諸点に配慮しなければならない。
【０００６】
課題１、二重化されたシステムバスの切り換えを高速に、しかもエラーが発生したときにもシステムバスのタイミングを変えることなく、正常なデータを保証すること。
【０００７】
課題２、二重化されている装置中の任意の装置の一方が実装されていなくても正常動作が可能で、相手側が実装されているかどうかを知るための特別な信号線を不要にすること。
【０００８】
課題３、エラー発生時の故障箇所の特定及び診断を、正常な部分に影響を与えないで実施すること。
【０００９】
課題４、書込み時にデータパリティエラーが発生した時でも、二重化動作が継続できる手段を簡単に提供すること。
【００１０】
課題５、システムバスを二重化したときのエラーチェックが十分に行われるようにすること。
【００１１】
課題６、二重化されたメモリ装置の一方に修復不可能なエラーが発生した時、システムを停止しないで修理交換ができ、二重化動作を再開できること。
【００１２】
課題７、二重化メモリ装置として使用しない時に、簡単にメモリ容量を増やせること。
【００１３】
課題８、故障した入出力制御装置を診断する時にメモリにデータを書き込むことによって、復旧が不可能となるようなメモリ破壊を招かないこと。
【００１４】
課題９、二重化されたシステムバスに接続するための特別な入出力制御装置を設計しなくても、信頼性を低下させることなく二重化メモリシステムに接続可能とすること。
【００１５】
目的
この発明は以上の課題を解決するためになされたもので、信頼性の高い二重化メモリシステムを提供することを目的とする。
【００１６】
【課題を解決するための手段】
上記課題を解決するために本発明は、各種の処理を行う処理装置と、この処理装置にＣＰＵバスを介して接続された一対のシステムバス制御装置と、この一対のシステムバス制御装置にそれぞれ接続された一対のシステムバスと、それぞれがこの一対のシステムバスの両方に接続された一対のメモリ装置Ａ及びＢと、を含み、処理装置における書込み動作時には、システムバス制御装置は一対のメモリ装置に同時に処理装置からのデータを書き込み、処理装置における読出し動作時には、いずれか一方のシステムバス制御装置が対応するメモリ装置から読み出したデータを処理装置に送出する二重化メモリシステムにおいて、一対のメモリ装置Ａ及びＢがそれぞれ、メモリに対する書き込みを許可する書込み許可フラグと、メモリからの読み出しを許可する読出し許可フラグと、現アドレスに対するアクセスの対象を判別するアドレス判別回路とを有するものである。
【００１７】
また本発明は、前記書込み許可フラグ及び読出し許可フラグの組合せに従って前記の各メモリ装置の状態を定義する状態定義手段と、処理装置による設定に従い、各メモリ装置を状態定義手段において定義された各状態間で遷移させる状態遷移手段とを有するものである。
【００１８】
また本発明は、前記メモリ装置Ａ及びＢがそれぞれ、メモリ装置Ａとメモリ装置Ｂがともにアクセス対象となる共通アクセス空間を指定する共通アクセス空間指定レジスタと、メモリ装置Ａまたはメモリ装置Ｂのいずれか一方がアクセス対象となる個別アクセス空間を指定する個別空間アクセス指定レジスタとを有するものである。
【００１９】
また本発明は、メモリ装置Ａとメモリ装置Ｂの共通アクセス空間指定レジスタの値を同じアドレスに設定する設定手段と、メモリ装置Ａの個別空間指定レジスタの値とメモリ装置Ｂの個別空間指定レジスタの値を異なったアドレスに設定する第二の設定手段と、これらの設定手段によって設定されたアドレスを任意のタイミングで再設定する第三の設定手段とを有するものである。
【００２０】
また本発明は、各メモリ装置の任意領域に擬似的なエラーを注入するエラー注入手段と、エラーの注入された領域をアクセスしてエラーの状態を検査するエラー状態検査手段とを有するものである。
【００２１】
また本発明は、前記エラー注入手段によってエラーが注入される領域のアドレス及び注入されるデータの値を両メモリ装置で異なる値に設定する注入値設定手段を有するものである。
【００２２】
また本発明は、前記各メモリ装置がシステムバスのアドレスエラーを検出するシステムアドレスエラー検出手段と、システムアドレスエラー検出手段の検出結果を他方のメモリ装置に通知するエラーアドレス信号線と、他方のメモリ装置から通知されるエラーアドレス信号線の状態に従い、他方のメモリ装置でエラーが発生した際、自装置でエラーのないアドレスを記憶するエラーアドレス記憶手段と、自装置でアドレスエラーが検出された際、自装置のメモリへの書込みを禁止する書込み禁止手段とを有するものである。
【００２３】
また本発明は、前記システムアドレスエラー検出手段における検出結果に従って割込み信号を生成するシステムアドレスエラー割込み生成手段と、システムアドレスエラー割込みが発生したときに前記エラーアドレス記憶手段に格納されたアドレスをもとにエラー修復を行うエラー修復手段とを有するものである。
【００２４】
【作用】
上記構成による本発明によれば、メモリ装置Ａ及びＢの書込み許可フラグがメモリに対する書き込みを許可し、読出し許可フラグがメモリからの読み出しを許可し、アドレス判別回路が現アドレスに対するアクセスの対象を判別する結果、この判別回路における判別結果と前記２つのフラグの組合せによってデータの書込みまたは読出しが行われる。
【００２５】
また本発明によれば、状態定義手段が前記書込み許可フラグ及び読出し許可フラグの組合せに従って前記の各メモリ装置の状態を定義し、状態遷移手段が処理装置による設定に従い、各メモリ装置を状態定義手段において定義された各状態間で遷移させる。
【００２６】
また本発明によれば、前記メモリ装置Ａ及びＢの共通アクセス空間指定レジスタがメモリ装置Ａとメモリ装置Ｂがともにアクセス対象となる共通アクセス空間を指定し、個別空間アクセス指定レジスタがメモリ装置Ａまたはメモリ装置Ｂのいずれか一方がアクセス対象となる個別アクセス空間を指定する。
【００２７】
また本発明によれば、設定手段がメモリ装置Ａとメモリ装置Ｂの共通アクセス空間指定レジスタの値を同じアドレスに設定し、第二の設定手段が前記設定手段によって設定されたメモリ装置Ａの個別空間指定レジスタの値とメモリ装置Ｂの個別空間指定レジスタの値を異なったアドレスに設定し、第三の設定手段が前記２つ設定手段によって設定されたアドレスを任意のタイミングで再設定する。
【００２８】
また本発明によれば、エラー注入手段が各メモリ装置の任意領域に擬似的なエラーを注入し、エラー状態検査手段がエラーの注入された領域をアクセスしてエラーの状態を検査するため、システム各部機能の動作確認を可能とする。
【００２９】
また本発明によれば、注入値設定手段が前記エラー注入手段によってエラーの注入される領域のアドレス及び注入されるデータの値を両メモリ装置で異なる値に設定する。
【００３０】
また本発明によれば、前記各メモリ装置のシステムアドレスエラー検出手段がシステムバスのアドレスエラーを検出し、エラーアドレス信号線がその検出結果を他方のメモリ装置に通知し、該他方のメモリ装置のエラーアドレス記憶手段が前記エラーアドレス信号線の状態に従って自装置でエラーのないアドレスを記憶するとともに、各システムバス制御装置の禁止手段によって、各装置でアドレスエラーが検出された際、自装置のメモリへの書込みが禁止される。
【００３１】
また本発明によれば、システムアドレスエラー割込み生成手段が前記システムアドレスエラー検出手段における検出結果に従って割込み信号を生成し、エラー修復手段がこの割込み信号に従って前記エラーアドレス記憶手段に格納されたアドレスをもとにエラー修復を行う。
【００３２】
【実施例】
実施例１．
図１は、本発明の第１実施例に係る二重化メモリシステムである。図１において、１は処理装置（ＣＰＵ）、２は処理装置１が診断等の特殊処理をするためのプログラムが格納されている制御ＲＯＭ、３は処理装置１とシステムバスのやりとりを制御するためのシステムバス制御装置、４はメモリ装置、５はシステムバス制御装置３に内蔵され、通常動作時にメモリ装置から読み出したデータを処理装置１に対して送出すべきシステムバス制御装置を決定するためのマスタ決定回路、６はシステムバス制御装置３に内蔵され、メモリ装置４からの読出しデータのエラーを検出するためのエラー検出回路、７はマスタ決定回路及びエラー検出回路６の指示に従い処理装置に読出しデータを出力するかどうかを決定するＣＰＵバス切換え回路である。処理装置１とシステムバス制御装置３はデータ信号８、低レベル割込み信号９、高レベル割込み信号１０、アドレス信号１１で構成されるＣＰＵバスで接続され、システムバス制御装置３及びメモリ装置４は二重化されており各々３ａ、３ｂ、４ａ、４ｂで示されている。二重化されたシステムバス制御装置は、ＣＰＵバス切換え信号線１２ａ及び１２ｂで接続され、メモリ装置４ａはシステムバスＡ１３ａを介してシステムバス制御装置３ａに、メモリ装置４ｂはシステムバスＢ１３ｂを介してシステムバス制御装置３ｂに接続されている。
【００３３】
二重化部分は上記のようにＡ系統とＢ系統に分類されているが、以下の説明においては両側を区別する場合は構成要素番号に各々添え字ａあるいはｂを付けて示し、区別しない場合は添え字を付けないで表す。
【００３４】
図２は、図１中のシステムバス制御装置３に内蔵されるエラー検出回路６及びＣＰＵバス切換え回路７の詳細構成を示す。図中１３−１はメモリ装置から読み出されてシステムバス上に送出されたデータ信号で、データ部３２ビットとパリティ部４ビットから構成される。１４はデータ信号１３−１をクロック信号１５でラッチしたデータ信号１６を出力するデータラッチ回路、１７はデータ信号１６をクロック信号１５でラッチしたデータ信号１８を出力するデータラッチ回路、１９はデータ信号１６のパリティチェックを行うエラー検出回路、１２はエラー検出回路１９の出力でエラー検出時に“１”となるエラー信号線であってＣＰＵバス切換え信号線として使用され、２０はエラー検出回路１９の出力でエラー未検出時“１”となる正常信号線、２１はエラー未検出時にＣＰＵバスに読出しデータを送出すべきシステムバス制御装置を選択するマスタモード入力信号線、２２はメモリ装置から有効なデータが送出されていることを示すデータ有効信号線、２３はマスタモード入力信号線２１、データ有効信号線２２、エラー信号線１２及び正常信号線２０の状態をＡＮＤゲート２４、２５及びＯＲゲート２６によって条件出力された信号をラッチする、ＣＰＵバス選択ラッチである。２９はＣＰＵバス選択ラッチ２３の出力信号３３とデータ出力タイミングクロック信号３０の条件によりゲート信号３２を生成するためのＡＮＤゲート、３１はゲート信号３２が“１”の時にデータ信号１８をＣＰＵバスのデータ信号８として出力し、ゲート信号３２が“０”の時にはデータ信号８を高インピーダンス状態におく３ステートバッファ、３４は他方のシステムバス制御装置からのＣＰＵバス切換え信号１２をプルアップするプルアップ抵抗である。また３５はＣＰＵバス切換え信号線１２ａあるいは１２ｂのいずれか一方が“１”のときに低レベルの割込み信号９を生成するＥＸＯＲゲート、３６はＣＰＵバス切換え信号線１２ａ及び１２ｂの両方が“１”のときに高レベルの割込み信号１０を生成するＡＮＤゲートである。ＥＸＯＲゲート３５及びＡＮＤゲート３６により、処理装置に対する２種類の割込み信号が生成される。エラーの発生状況とＣＰＵバス切換え信号線１２、割込み信号線９及び１０の関係を図３に示す。
【００３５】
図４は、図２のエラー検出回路及びＣＰＵバス切換え回路の動作を示すタイミング図で、各々の入出力信号を対応して示してある。図中でＴ０１ないしＴ１４はクロック信号１５を基準としたクロックサイクルを示す。
【００３６】
図５は、データ信号１８がゲート信号３２のタイミングによってデータ信号８としてドライブされる様子を示す。
【００３７】
図６は、図１のシステムバス制御装置３内部のマスタ決定回路５の詳細を示す。図中、３７はモードを記憶するフリップフロップで、出力信号線４１を出力する。３８はマスタを変更するマスタ変更信号線、３９及び４０は負論理のＡＮＤゲート、４２は電源投入時にフリップフロップ３７を初期状態にする負論理のリセット信号線である。図２にマスタ決定回路を組み込む場合、出力信号４１がマスタモード入力線２１の代わりに接続される。
【００３８】
図７は、図６のマスタ決定回路の動作を示すタイミング図である。
【００３９】
以上のように構成される二重化メモリシステムの概略動作について、図１を用いて説明する。処理装置１は電源投入後のイニシャル処理において、制御ＲＯＭ２に格納されているプログラムを実行し、システムバス１３に接続されているメモリ装置４を診断した後、ディスク制御装置（図示せず）等の入出力制御装置を介してＯＳなどのプログラムをメモリ装置４に読み込み、以後システムが正常に動作する間、メモリ装置４に格納されたプログラムを実行する。システムにエラーが検出されると割込み信号９あるいは１０が処理装置１に対して出力され、処理装置１が制御ＲＯＭ２の所定エラー処理プログラムを実行し、エラー処理完了後メモリ装置４に格納されたプログラム実行を再開する。
【００４０】
プログラム実行に伴って処理装置１がメモリ装置４にアクセスする際、書込み動作であれば、二重化されたシステムバス制御装置３ａ及び３ｂを介して両側のメモリ装置４ａ及び４ｂに同時に書き込みが行われる。読出し動作時は、システムバス制御装置３ａ、３ｂがともにメモリ装置に対して読み出しを指示し、メモリ装置４ａ及び４ｂから同時に読み出しがなされ、システムバスＡ１３ａ及び１３ｂを介してシステムバス制御装置３ａ及び３ｂに読出しデータを送出する。システムバス制御装置３の内部にはマスタ決定回路５が内蔵されており、エラー検出回路６がメモリ装置から送られてきたデータにエラーの無いことを示せば、マスタに設定された側がＣＰＵバスデータ８に読出しデータを送出する。エラーが検出された場合には、検出した側のシステムバス制御装置が相手側に対してＣＰＵバス切換え信号線１２を出力し、ＣＰＵバス切換え回路７によって正常な側のシステムバス制御装置がＣＰＵバスデータ８に読出しデータを送出する。
【００４１】
次にエラー検出回路６とＣＰＵバス切換え回路７の詳細動作について、図２を用いて説明する。
【００４２】
図２においてシステムバス制御装置にはマスタモード入力信号線２１があり、いま仮にシステムバス制御装置３ａではマスタモード入力信号線２１ａが“１”に、システムバス制御装置３ｂでは“０”に外部接続されているものとする。この場合、システムバス制御装置３ａがマスタ、システムバス制御装置３ｂがスレーブとして動作する。メモリ装置から読み出されたデータは、データ有効信号線２２とともにシステムバスのデータ信号線１３−１としてシステムバス制御装置３に入力され、システムクロック信号１５によってデータラッチ回路１４にラッチされ、データラッチ回路１４の出力信号線１６はパリティ検出等のエラー検出回路１９に入力されるとともに、データラッチ回路１７に供給される。前述のデータ信号線１３−１は、データ部３２ビットとパリティ部４ビットで構成され、データが正常な場合、エラー検出回路１９は正常信号線２０を“１”、ＣＰＵバス切換え信号線１２を“０”、エラーが検出された場合は両信号ともその逆の論理で出力する。
【００４３】
いまデータが正常であるとすれば、マスタ側のシステムバス制御装置３ａにおいて正常信号線２０ａは“１”であり、ＡＮＤゲート２４ａを経由してＯＲゲート２６ａの出力が“１”になる。システムクロック信号線１５ａのタイミングでＣＰＵバス選択ラッチ２３ａは“１”にセットされ、ＡＮＤゲート２９ａによってデータ出力タイミングクロック信号３０ａが“１”の期間に限ってＣＰＵデータバスの３ステートバッファ３１ａのゲート信号３２ａが“１”となり、データラッチ回路１７ａの出力信号線１８ａの内容がＣＰＵバスにデータ信号線８として出力される。
【００４４】
一方、データにエラーが検出された場合は、正常信号線２０ａが“０”になり、ゲート信号３２ａが“０”となる結果、システムバス制御装置３ａがＣＰＵバスにデータを出力することはない。
【００４５】
つぎにスレーブ側の動作を説明する。
【００４６】
データにエラーが検出されない場合、スレーブ側のシステムバス制御装置３ｂにおいて正常信号線２０ｂは“１”であるが、マスタモード入力信号線２１ｂが“０”のためＡＮＤゲート２４ｂは“０”となり、しかもマスタ側のシステムバス制御装置３ａからのＣＰＵバス切換え信号線１２ａも“０”であるため、ＯＲゲート２６ｂの出力も“０”となる。その結果、ＣＰＵデータバスの３ステートバッファ３１ｂのゲート信号３２ｂが“０”になり、システムバス制御装置３ｂはＣＰＵバスにデータを出力しない。ここで仮に、マスタ側のシステムバス制御装置３ａでエラーが検出されると、ＣＰＵバス切換え信号線１２ａが“１”となってＡＮＤゲート２５ｂ及びＯＲゲート２６ｂの出力が“１”となり、マスタ側のシステムバス制御装置３ａに代ってスレーブ側のシステムバス制御装置３ｂがＣＰＵバスにデータ信号線８を出力する。このためメモリ装置のみならず、システムバスレベルでの二重化が可能となる。
【００４７】
次に処理装置１に対する割込み信号線９及び１０の生成について、図３を用いて説明する。
【００４８】
ＥＸＯＲゲート３５及びＡＮＤゲート３６は、ＣＰＵバス切換え信号１２ａ及び１２ｂの組合せによって割込み信号線９及び１０の状態を決定する。メモリ装置４からの読出しデータが両側とも正常な場合、割込み信号線９、１０ともインアクティブになる。どちらか一方でエラーが検出されるとＥＸＯＲゲート３５によって低レベルの割込み信号線９がアクティブになり、両側でエラーが検出されるとＡＮＤゲート３６によって高レベルの割込み信号線１０がアクティブになる。
【００４９】
これら二種類の割込みによる処理装置１の動作について説明する。
【００５０】
低レベルの割込みは、エラーの検出にも拘らず処理装置１に正しいデータが送らた、いわゆる軽障害の発生を示す。処理装置１はそのまま通常のプログラムを実行し、プログラムの切れ目（通常はタスクスイッチのタイミング）でエラー処理を行う。一方、高レベルの割込みは、処理装置１に正しいデータが送られなかった重障害を示し、処理装置１が直ちにエラー処理を行うべき場合に使用する。
【００５１】
図２中のプルアップ抵抗３４の役割について説明する。この抵抗は修理交換によって一方のシステムバス制御装置、例えばマスタ側のシステムバス制御装置３ａを取り外した際に意味を持つ。このときエラー検出回路１９ａの出力信号がドライブされなくなるので、システムバス制御装置３ｂに内蔵されるプルアップ抵抗３４ｂがＣＰＵバス切換え信号線１２ａを“１”にレベル固定する。これはマスタ側のシステムバス制御装置３ａがデータエラーを検出した状態と同じであり、結果としてスレーブ側のシステムバス制御装置３ｂがデータを送出する。
【００５２】
以上説明したシステムバス制御装置３のエラー検出回路６及びＣＰＵバス切換え回路７の動作を、連続する８ワードデータの読み出し中にエラーが検出された場合を例に、図４を用いて説明する。
【００５３】
図において白丸数字のデータはメモリ装置４ａから読み出されたデータ、黒丸数字のデータはメモリ装置４ｂから読み出されたデータを示し、Ｔ０１ないしＴ１４のタイミングに従い、システムクロック信号線１５によって、システムバス制御装置内部はクロック同期で動作する。図はマスタ側のシステムバス制御装置３ａで３ワード目、スレーブ側のシステムバス制御装置３ｂでは５ワード目にエラーが検出された時の、ＣＰＵバス切換え信号線１２、ゲート信号３２、ＣＰＵデータバス信号８、低レベル割込み信号線９の様子を示す。図におけるタイミングには、ラッチやゲートによる信号の遅れが考慮され、例えばデータラッチ１４の出力信号線１６はシステムクロック１５の上昇エッジより若干遅れて出力されおり、より現実的なタイミングを示すものである。
【００５４】
１及び２ワード目はデータのエラーが検出されず、マスタ側のシステムバス制御装置３ａのゲート信号３２ａが“１”となり、ＣＰＵデータバス８にはＴ０３及びＴ０４のタイミングでシステムバス制御装置３ａのデータ、すなわちメモリ装置４ａからの読出しデータが出力される。
【００５５】
３ワード目でエラーが検出されると、Ｔ０４のタイミングでエラーを検出し、ＣＰＵバス切換え信号線１２ａが“１”になり、Ｔ０５のタイミングではスレーブ側のシステムバス制御装置３ｂのデータ、すなわちメモリ装置４ｂからの読出しデータが出力され、同時に低レベルの割込み信号９が出力される。
【００５６】
４ワード目では両側で正常なデータが検出されるので、ＣＰＵバスの切り換えは発生せず、デフォルト的に設定されたマスタ側のデータがＴ０６のタイミングで出力される。
【００５７】
５ワード目のデータは、スレーブ側でエラーが検出されるがマスタ側は正常であり、ＣＰＵバスの切り換えは発生せず、そのままマスタ側のデータがＴ０７のタイミングで出力される。
【００５８】
図４に示す通り、マスタ側でエラーが検出されない限り、常にマスタ側に接続されているメモリ装置の読出しデータが処理装置１に出力され、エラーが検出されたときに限ってスレーブ側に接続されたメモリ装置の読出しデータが処理装置１に出力される。従って、切り換えが発生しても、処理装置には正常なデータが同一タイミングで供給されることになる。
【００５９】
また図４に例示するごとく、３ステートバッファのゲート信号線３２は、転送サイクルのうち一部分しか“１”の状態にされていない。全期間“１”にすると、ＣＰＵバス切り換え時に素子の遅延によって、短時間であるが両側の３ステートバッファの出力が衝突しうるためである。図５に示すように、データはドライブの終了後も配線の浮遊容量によってデータバス上に一定期間保持されるため、設計上必要なドライブ時間を決めることができる。
【００６０】
なお、図２ではマスタモード切換え信号線を直接システムバス制御装置３のマスタ切り換えとして使用したが、図６に示すマスタ決定回路を付加することにより、処理装置１によってマスタモードを切り換えることができる。マスタ切換え回路の動作を図６ないし図７を使用して説明する。
【００６１】
図７において、電源投入時にはタイミングＴ２０でリセット信号線４２によって、マスタフリップフロップ３７がマスタモード切換え信号線２１の状態に従ってセット／リセットされ、システムバス制御装置３ａのマスタモード出力信号線４１ａは“１”に、システムバス制御装置３ｂのマスタモード出力信号線４１ｂは“０”に設定される。処理装置１からのマスタ切換え信号線３８によりＴ２１で各々のマスタフリップフロップ３７は同期して反転し、システムバス制御装置３ａのマスタモード出力信号線４１ａは“０”に、システムバス制御装置３ｂのマスタモード出力信号線４１ｂは“１”に設定される。このマスタモード出力信号線４１を図２のマスタモード入力信号線２１として使用することにより、システムバス制御装置３のモードを切り換えることが可能になる。
【００６２】
実施例２．
図８は本発明の第２実施例に係る二重化メモリシステムで、第１実施例にＣＰＵデータバスのチェック機能を追加し、さらに信頼性を高めたものである。
【００６３】
図８において５０はＣＰＵバスデータ８をシステムバス制御装置内部に取り込むためのデータレシーバ回路、５１はデータラッチ回路１７の出力信号線１８とデータレシーバ回路５０の出力信号線５５を比較するデータ比較回路、５３はデータ比較回路５１の比較結果が不一致のときに“１”を出力する出力信号線、５４は３ステートバッファである。
【００６４】
図９は、データ読み出しがシステムバス制御装置３ａの側から行われたとして、図８の回路のある部分が故障した時に各々のデータ比較回路５１の信号線、ＣＰＵバスデータ８の正常性、及び高レベルの割込み信号線１０の関係を示す図である。
【００６５】
図１０は本発明の第２実施例の変型で、各々のデータ比較回路５１の出力信号線５３をそのままシステムバス制御装置の外部に出力し、ＡＮＤ回路５６とＥＸＯＲ回路５７で低レベルの割込み信号９及び高レベルの割込み信号１０を生成するように構成したものであり、同様に図１１は図１０の回路のある部分が故障した時に各々のデータ比較回路５１の出力信号線と、ＣＰＵバスデータ８の正常性と、低レベルの割込み信号９と高レベルの割込み信号線１０の関係を示す図である。図１１においても、データ読み出しはシステムバス制御装置３ａの側から行われたものとしている。
【００６６】
以上のように構成されるシステムバス制御装置のＣＰＵデータバスの比較動作について図８を用いて説明する。
【００６７】
二重化メモリ装置から読み出されたデータは一旦データラッチ１７にラッチされ、比較回路５１と３ステートバッファで構成されるドライバ回路３１に供給され、マスタ側のシステムバス制御装置３ａは実施例１の動作に従ってドライバ回路３１ａを介してデータをＣＰＵバスに出力する。またＣＰＵバスのデータ信号８はレシーバ回路５０を通して両側のシステムバス制御装置３内部に取り込まれ、比較回路５１に入力される。比較回路５１ではデータラッチ１７の出力とレシーバ回路５０の出力を比較し、一致なら“０”、不一致なら比較エラー信号線５３を出力する。ところでマスタ側のシステムバス制御装置３ａのマスタモード出力信号線４１ａは“１”に設定されているので、３ステートバッファ５４ａのイネーブル信号は、ＮＯＴ回路５２ａにより反転され“０”が与えられるため、エラー信号線５３ａは外部に出力されない。一方、スレーブ側のシステムバス制御装置３ｂのマスタモード出力信号線４１ｂは“０”に設定されているので、３ステートバッファ５４ｂのイネーブル信号は、ＮＯＴ回路５２ｂにより反転され“１”が与えられるため、エラー信号線５３ｂは３ステートバッファ５４ｂを介して出力され、高レベルの割込み信号線１０として処理装置１に通知される。
【００６８】
次に、図９を用いてデータ転送経路の途中が故障した時の比較エラー信号線５３、ＣＰＵデータバス８の正当性、及び割込み信号線１０の関係を説明する。この例では故障箇所として、データラッチ１７、比較回路５１、ドライバ回路３１、及びレシーバ回路５０が各々故障した時を示しており、全てが正常な場合は当然のことながらＣＰＵデータバスには正しいデターが出力されており、割込みも発生しない。データラッチ１７ａあるいはドライバ回路３１ａが故障すると間違ったデータがＣＰＵデータバスに出力され、これがスレーブ側の比較回路でエラー検出されて高レベルの割込みが発生し、読出しデータのエラーを処理装置１に知らせる。処理装置１は制御ＲＯＭ２に格納されたエラー解析処理を実行することにより、例えばマスタ切換え信号線３８を出力し、システムバス制御装置３ａから３ｂに変更して再度メモリ装置からデータを読み出し、正常であればデータラッチ１７ａあるいはドライバ回路３１ａの故障を検出できる。以降、システムバス制御装置３ｂがマスタ側として動作することになる。
【００６９】
マスタ側のレシーバ回路５０ａあるいは比較回路５１ａが故障した時は、比較エラー信号線５３ａは内部的には出力されるが、割込み信号線１０が出力されず、動作に影響しない。このとき、ＣＰＵデータバス８には正常なデータが出力されるため、問題はない。一方、スレーブ側のレシーバ回路５０ｂ、比較回路５１ｂまたはデータラッチ１７ｂのいずれかが故障したとき、マスタ側から正しいデータがＣＰＵデータバスに出力されるにも拘らず、比較エラー信号線５３ｂが“１”となって高レベル割込み信号線１０が出力される。このときにも処理装置１がマスタ切換え信号線を出力するためシステムバス制御装置３ｂ側にマスタが切り換わるが、このスレーブ側の故障による不要な切換えを防ぐためには、以下の方法を用いればよい。すなわち、システムバス制御装置内のエラー信号線５３の状態をステータスレジスタ（図示せず）に記憶させ、処理装置１が制御ＲＯＭ２に格納されたエラー処理を実行する時に、このステータスレジスタの内容を調べる。この際、マスタ側でエラーが発生していない場合はマスタ切換えを行なわないように制御すればよい。
【００７０】
なお図９では、データ読み出しがシステムバス制御装置３ａの側から行われたと想定とするため、比較エラー信号線５３ｂと高レベルの割込み信号線１０の論理は常に一致する。これは図８において、比較エラー信号線５３ｂが高レベルの割込み信号線１０として出力されるためである。このことは図９で＃Ｂ＿　ＥＲＲＯＲとＨＩＮＴＲの欄の論理が一致することによって示されている。
【００７１】
次に、比較エラー信号線５３を両側のシステムバス制御装置３から出力し、これらの組合せで２種類の異なるレベルの割込みを発生させる例を、図１０ないし図１１で説明する。図１０と前述の図８との相違は、比較回路５１の出力を両側外部に出力し、これらをＡＮＤゲート及びＥＸＯＲゲートによって処理装置１に対する割込み信号として生成する点にある。
【００７２】
図１１によるドライバ回路３１ａが故障した時には、両側の比較エラー信号線５３が“１”となり高レベルの割込み信号線１０が出力され、それ以外の部分の故障では低レベルの割込み信号線９が出力される。ＣＰＵデータバスに出力されるデータの正常性判断という意味では、データラッチ１７ａの故障の場合も高レベルの割込み信号線１０が出力されるべきだが、これは実施例１のようにデータラッチ１７の出力にもパリティ検査回路を付加し、スレーブ側からデータを切り換えて出力することで解決を図るものとする。これらの結果、ＣＰＵデータバスに出力されているデータが正常な限りは低レベルの割込み信号、異常な場合に限って高レベルの割込み信号を出力することができる。
【００７３】
実施例３．
図１２は、本発明の第３実施例に係る二重化メモリシステムである。図において６０は、システムバス制御装置３に内蔵されるＣＰＵデータバス側のドライバ／レシーバ、６１はシステムバス側のドライバ／レシーバ、６２はメモリ装置４に内蔵されるドライバ／レシーバ、６３は処理装置１に内蔵されるパリティ生成回路、６４はシステムバス制御装置３に内蔵されるＣＰＵデータバス側のパリティ検査回路、６５はシステムバス制御装置３に内蔵されるシステムバス側のパリティ検査回路、６６はメモリ装置４に内蔵されるパリティ検査回路、６７ないし６９は各々パリティ検査回路６４ないし６６の結果を格納するステータスレジスタ、７０はシステムバス制御装置内部バス、７１はメモリ、７２はメモリ装置４の内部バスである。
【００７４】
図１３は、図１２のシステムにおけるメモリへの書込み動作時のエラー解析を、同様に図１４はメモリから読出し動作時のエラー解析を示す図であり、ステータスレジスタで○印はエラー未検出を、×印はエラー検出を示す。
【００７５】
以上のように構成される二重化メモリシステムの動作を、図１２を用いて説明する。まず処理装置１がメモリ装置４にデータを書き込む時は、処理装置内部に、例えばパリティコード等のエラー検査コードを生成し、これをＣＰＵデータバス８に出力する。システムバス制御装置３は処理装置１が出力したパリティ付きデータをレシーバ回路６０で受け取り、このデータのパリティチェックをパリティ検査回路６４で行い、結果をステータスレジスタ６７に格納し、レシーバ６０で受け取ったデータは内部バス７０を通ってシステムバス側のドライバ回路６１に供給され、システムバス１３に出力される。ドライバ回路の直前にはパリティ検査回路６５があり、チェック結果は同様にステータスレジスタ６８に格納される。さらにメモリ装置４は、システムバス１３からのデータをレシーバ回路６２を介して受け取り、パリティ検査回路６６によるパリティチェックをなし、結果をステータスレジスタ６９に格納し、同時にメモリ７１にはメモリ装置内のデータバス７２の内容をそのままデータ部とチェックコード部として書き込む。書込み時のデータ経路のどこかでエラーが検出されると処理装置１に対して割込みが発生し（割込み信号線は図示せず）、処理装置１は制御ＲＯＭ２に格納されているエラー解析プログラムを実行し、故障箇所を特定する。
【００７６】
次に書込み時のエラー検出結果が格納されているステータスレジスタ６４ないし６６の内容と、故障の解析例を図１３により説明する。故障の発生確率は回路規模に基づき、メモリが１万分の１、バスが１０万分の１、パリティ生成／検査回路及びドライバ／レジーバが１００万分の１と想定し、例えばメモリとパリティ検査回路の２重故障は１万×１００万＝１００億分の１と仮定する。図１３は、考えられる故障原因のうち故障の発生確率が最も大きい組合せを原因と推定して作成されている。故障はステータスレジスタの組合せにより８種類が考えられ、ケース１はエラーが発生していない状態である。ケース２はシステムバス制御装置の内部バス７０までは正常なため、システムバス１３、ドライバ回路６１、メモリ装置のレシーバ回路６２、またはパリティ検査回路６６いずれかの故障が考えられるが、故障の発生確率を比較して、システムバス１３の故障と推定される。ケース３では経路途中のパリティ検査回路６５だけがエラーを検出しているため、このパリティ検査回路６５のみの故障と推定する。このケースでは、パリティ検査回路６４及び６６が故障で、６５のみが正しい事態もありうるが、ケース２同様、故障の発生確率から判断する。以下のケースも同様に考えればよい。
【００７７】
続いてメモリ装置４からの読出し時の動作を図１２を用いて説明する。メモリ７１にはデータ部とエラーチェックコード部が格納されており、読み出されたパリティ付きのデータは、パリティ検査回路６６でパリティチェックされて結果がステータスレジスタ６９に格納され、続いてドライバ回路６２を介してシステムバス１３に出力され、システムバス制御装置３がレシーバ回路６１を通してこれを受け取り、パリティ検査回路６５によるパリティチェックの結果をステータスレジスタ６８に格納する。さらにＣＰＵバスのドライバ回路６０直前のパリティ検査回路６４によるパリティチェックの結果がステータスレジスタ６７に格納される。システムバス制御装置３では、データにパリティエラーが検出されると、実施例１の動作に従いエラーを検出していない側のシステムバス制御装置が処理装置１に対してデータを送出する。
【００７８】
読出し時のエラー検出結果が格納されているステータスレジスタ６４ないし６６の内容と、故障の解析例を図１４により説明する。図１４においても、考えられる故障箇所の組合せのうち、最も確率の高いものを原因としている。ケース８はメモリ７１からの読み出し直後からエラーが検出されているので、メモリ７１の故障または書込み時のデータ経路でのエラーが考えられるが、確率を比較して、前者の故障と判定する。ケース７ではメモリから読み出した時点では正しく、その後エラーが検出されているのでシステムバス１３の故障、ケース６ではパリティ検査回路６５及びメモリ７１の故障と考えられる。以下のケースも同様に考えればよい。
【００７９】
実施例４．
図１５は、本実施例の第４の実施例に係る二重化メモリシステムである。図において８０は、システムバス制御装置３の内部にあってシステムバスに送出するデータのエラーを検出するエラー検出回路、８１はエラー検出回路８０の結果を相手側のシステムバス制御装置に伝えるシステムバス切換え信号線、８２は相手からのシステムバス切換え信号線８１と内部のエラー検出回路８０の結果によって動作する、システムバスを切り換えるためのシステムバス切換え回路、８５はメモリ装置４の内部にあってメモリ７１から読み出したデータのエラーを検出するエラー検出回路、８４はエラー検出回路８５の結果を相手側のメモリ装置に伝えるメモリエラー検出信号線、８３は相手からのメモリエラー検出信号線８４と内部のエラー検出回路８５の結果によって動作する、システムバスを切り換えるためのシステムバス切換え回路である。
【００８０】
図１６は、図１５中のシステムバス切換え回路８２及びエラー検出回路８０における出力データ切り換えの概念を示す図で、図において９４はシステムバス制御装置内部のデータバス７０の内容を記憶するデータラッチ、９０はシステムバスＡにデータを送出するシステムバスＡ用３ステートバッファ、９１はシステムバスＢにデータを送出するシステムバスＢ用３ステートバッファ、８６はシステムバスＡ用３ステートバッファ９０の出力許可信号を生成するＡＮＤゲート、８７はシステムバスＢ用３ステートバッファ９１の出力許可信号を生成するＡＮＤゲート、９５は３ステートバッファ９０及び９１双方の出力許可信号を生成するＡＮＤゲート、９２はシステムバス切換え信号線８１ａ及び８１ｂの組合せにより低レベルの割込みを発生させるＥＸＯＲゲート、同様に９３は高レベルの割込みを発生させるＡＮＤゲートである。
【００８１】
また図１７は、図１５中のシステムバス切換え回路８３及びエラー検出回路８５における入力データ切り換えの概念を示す図で、図において９８はシステムバスＡ１３ａからデータをメモリ装置４に取り込むレシーバ回路、９９はシステムバスＢ１３ｂからデータをメモリ装置４に取り込むレシーバ回路で、各々入力データ信号７６及び７７を出力する。８３は入力データ信号のパリティチェック等を行うエラー検出回路、７３はエラー検出回路の結果により正しいデータを選択してメモリの内部バス７２に出力する選択回路である。ＮＯＴゲート７４の出力信号である入力切換え信号７８が“１”のときは入力データ線７６を選択し、ＡＮＤゲート７５の出力信号である入力切換え信号線７９が“１”のときは入力データ線７７を選択するように構成されている。
【００８２】
図１８は、処理装置１からメモリ装置４への書込み時にデータバスの途中が故障した時のシステムバス切換え回路８２及び８５によるバスの切り換えの様子を示す図で、（Ａ）は全て正常な状態、（Ｂ）はＣＰＵバス切換え回路７ａ内部のレシーバが故障した状態、（Ｃ）はシステムバスＡ１３ａが故障した状態、（Ｄ）はシステムバス切換え回路８２ｂのドライバが故障した状態でのデータの流れを示している。図中破線で示されているデータの流れは各々の３ステートバッファが閉じた状態で、実際のデータは出力されない。
【００８３】
同様に図１９は、処理装置１がメモリ装置４からの読出し時にデータバスの途中が故障した時のＣＰＵバス切換え回路７、システムバス切換え回路８２及び８５によるバスの切り換えの様子を示す図で、（Ａ）は全て正常な状態、（Ｂ）はシステムバス切換え回路８２ａ内部のレシーバが故障した状態、（Ｃ）はシステムバスＡ１３ａが故障した状態、（Ｄ）はメモリ装置４に内蔵されているメモリ７１ａが故障した状態でのデータの流れを示している。
【００８４】
以上のように構成される二重化メモリシステムの概略動作について、図１５を用いて説明する。処理装置１がメモリ装置４に書き込みを行う時、処理装置１からの書込みデータは、ＣＰＵデータバス８として二重化されたシステムバス制御装置３の各々に供給され、システムバス制御装置はシステムバス１３に書込みデータを送出する直前にエラー検査回路８０でデータのパリティチェックを行い、その結果をシステムバス切換え信号線８１として相互に交換しており、エラーが検出されない時、マスタ側のシステムバス制御装置３ａはシステムバスＡ１３ａに、スレーブ側のシステムバス制御装置３ｂはシステムバスＢ１３ｂに、各々データを出力する。エラーが検出されると、前述のシステムバス切換え信号線８１が“１”になり、システムバス切換え回路８２によってエラーを検出した側のシステムバス１３への出力を停止し、代わって相手側のシステムバス制御装置が両側のシステムバスに書込みデータを出力する。またメモリ装置４ではシステムバスに出力されている書込みデータを両側のシステムバス１３から取り込み、エラー検出回路８５でパリティチェックを行い、エラーの発生していないシステムバスのデータをメモリ７１に書き込む。
【００８５】
また、メモリ装置４からの読出し時には、二重化されたメモリ７１から読み出されたデータについて、内部のエラー検出回路８５でパリティチェックを行い、その結果をメモリエラー信号線８４として出力して相互通知しており、エラーがなければメモリ装置４ａはシステムバスＡ１３ａに、メモリ装置４ｂはシステムバスＢ１３ｂにデータを送出し、エラーが発生すると、発生した側のメモリ装置はシステムバス切換え回路８３によりシステムバスへのデータ出力が停止され、相手側のメモリ装置が両側のシステムバスに読出しデータを出力する。またシステムバス制御装置３は両側のシステムバスからデータを取り込み、エラー検出回路６でパリティチェックを行い、その結果をＣＰＵバス切換え信号線として出力して相互通知しており、エラーがなければマスタ側のシステムバス制御装置３ａがＣＰＵデータバス８に読出しデータを出力し、エラーが検出されると検出した側のシステムバス制御装置はＣＰＵバス切換え回路７によりデータ出力が停止され、相手側のシステムバス制御装置が代わって出力する。
【００８６】
まず、処理装置１からメモリ装置４にデータを書き込む時の詳細動作を、図１６により説明する。処理装置からの書込みデータは内部バス７０を通ってデータラッチ９４にラッチされるとともに、エラー検出回路８０によりパリティチェックが行われる。データラッチ９４の出力信号は３ステートバッファで構成される出力バッファ９０と９１に供給されており、３ステートバッファのゲート信号はマスタモード入力信号線２１とシステムバス切換え信号線８１ａ及び８１ｂとデータ出力タイミングクロック信号３０により制御されている。エラー検出回路８０ａ及び８０ｂでエラーが検出されていない時は、マスタ側のシステムバス制御装置３ａでＡＮＤゲート８６ａの出力が“１”、ＡＮＤゲート８７ａ及び９５ａの出力が“０”になっており、ＯＲゲート９６ａの出力信号が“１”、ＯＲゲート９７ａの出力が“０”になり、出力バッファ９０ａ経由でシステムバスＡ１３ａにデータを出力する。一方スレーブ側のシステムバス制御装置３ｂではＡＮＤゲート８６ｂ及び９５ｂの出力が“０”、ＡＮＤゲート８７ｂの出力が“１”になっており、ＯＲゲート９７ｂの出力が“１”、ＯＲゲート９６ｂの出力が“０”になり、出力バッファ９１ｂ経由でシステムバスＢ１３ｂにデータを出力する。
【００８７】
ところで、システムバス制御装置３ａでデータのエラーが検出され、エラー検出回路８０ａの出力８１ａが“１”になると、ＡＮＤゲート８６ａの出力は“０”となり出力バッファ９０ａの出力は停止され、一方システムバス制御装置３ｂは相手からのシステムバス切換え信号線８１ａが“１”になることで、ＡＮＤゲート９５ｂの出力が“１”になり、出力バッファ９０ｂの出力も許可状態になり、システムバスＡ１３ａ及び１３ｂの両側にデータを出力する。
【００８８】
さらに、メモリ装置４では図１７に示したように、両側のシステムバスのデータをレシーバ回路９８及び９９により内部に取り込み、エラー検出回路８３でパリティチェックを行っており、エラーが検出されない場合はエラー検出回路８３−１の出力は“０”、入力データ切換え信号線７８が“１”になり、システムバスＡ１３ａのデータを内部バス７２に選択出力する。一方システムバスＡ１３ａの故障が発生するとエラー検出回路８３−１の出力が“１”、入力データ切換え信号線７８が“０”、入力データ切換え信号線７９が“１”になることにより、システムバスＢ１３ｂのデータを内部バス７２に選択出力する。
【００８９】
ところで、エラー検出回路８３−１及び８３−２の両方でエラーが検出されると（例えばシステムバス１３ａが故障し、更にマスタ側のレシーバ回路９９ａが故障した場合）、入力データ切換え信号線７８及び７９の双方が“０”となり、選択回路７３ａはいずれのシステムバスも選択できない状態になる。このときメモリ７１ａに不正なデータ（これはエラーとして検出することができない）が書込まれため、読み出し時に不正なデータが処理装置１に送出される事態が発生しうる。これを回避するには以下の方法によればよい。つまり、いずれのシステムバスも選択できない時、メモリの内部バス７２ａにエラーとなるデータ（例えば偶数パリティの場合は全て“１”のデータ、奇数パリティの場合は全て“０”のデータ）を生成するように選択回路７３を構成し、強制的にエラーデータをメモリに書き込む。この結果、読み出し時には実施例１の動作によりスレーブ側のシステムバス制御装置３ｂが正しい読み出しデータを処理装置１に送出することができる。
【００９０】
再び図１５で説明する。処理装置１がメモリ装置４からデータを読み出す時の動作は、メモリ装置内部にもシステムバス制御装置３における図１６と同様な回路が組み込まれており、メモリから読み出されたデータにエラーがなければ、メモリ装置４ａはシステムバスＡ１３ａに読出しデータを出力し、メモリ装置４ｂはシステムバスＢ１３ｂに読出しデータを出力する。一方、メモリ装置４ｂに内蔵されるメモリ７１ｂの読出しデータにエラーが検出されると、メモリ装置４ｂの出力バッファのデータ出力は停止され、メモリエラー検出信号線８４ｂが相手側のメモリ装置４ａに出力され、この信号によりメモリ装置４ａが両側のシステムバスにデータを出力する。またシステムバス制御装置３の内部にはメモリ装置４と同様な入力データ選択回路があり、通常はシステムバスＡ１３ａからの読出しデータを内部バスに出力しているが、システムバスＡ１３ａ側でエラーが検出されると、システムバスＢ１３ｂの読出しデータを内部バスに出力する。
【００９１】
以上のように二重化されたメモリシステムにおいて、構成要素の一部が故障した場合のデータ切り換えの様子を、書込み動作時について図１８により説明する。
【００９２】
（Ａ）全て正常な状態では、処理装置１からの書込みデータは、システムバス制御装置３ａからシステムバスＡ１３ａ、システムバス制御装置３ｂからシステムバスＢ１３ｂに出力され、メモリ装置４はシステムバスＡ１３ａのデータを書込みデータとして選択し、メモリ７１に書き込む。
【００９３】
（Ｂ）ＣＰＵバス切換え回路７ａ内部のレシーバが故障した状態では、システムバス制御装置３ａからシステムバス切換え信号線８１ａが出力され、システムバス制御装置３ａの出力バッファが閉じて、代わりにシステムバス制御装置４ｂが両側のシステムバスにデータを出力し、メモリ装置４はシステムバスＡ１３ａのデータを書込みデータとして選択し、メモリ７１に書き込む。
【００９４】
（Ｃ）システムバスＡ１３ａが故障した状態では、メモリ装置４はシステムバスＢ１３ｂのデータを書込みデータとして選択し、メモリ７１に書き込む。
【００９５】
（Ｄ）システムバス切換え回路８２ｂのドライバが故障した状態では、システムバスＢ１３ｂには正しいデータが出力されていないが、メモリ装置４はシステムバスＡ１３ａのデータを書き込むので影響はない。
【００９６】
読出し動作時について、図１９により説明する。
【００９７】
（Ａ）全て正常な状態では、メモリ７１から読み出されたデータは、メモリ装置４ａからシステムバスＡ１３ａに、メモリ装置４ｂからシステムバスＢ１３ｂに出力され、システムバス制御装置３ａがＣＰＵバスに読出しデータを送出する。
【００９８】
（Ｂ）システムバス切換え回路８２ａ内部のレシーバが故障した状態では、システムバス制御装置３ａのエラー検出回路でエラーが検出され、ＣＰＵバス切換え信号線１２ａが出力され、この信号線によってシステムバス制御装置３ｂがＣＰＵバスにデータを出力する。
【００９９】
（Ｃ）システムバスＡ１３ａが故障した状態では、システムバス制御装置内でシステムバスＡ１３ａのエラーが検出され、システムバスＢ１３ｂの読出しデータを入力データとして使用し、システムバス制御装置３ａがＣＰＵバスにデータを送出する。
【０１００】
（Ｄ）メモリ装置４に内蔵されているメモリ７１ａが故障した状態では、メモリ装置４ａ内部のエラー検出回路によりエラーが検出され、メモリエラー検出信号線８４ａを出力し、この信号によりメモリ装置４ｂが両側のシステムバスに読出しデータを送出し、システムバス制御装置３ａがＣＰＵバスにデータを送出する。
【０１０１】
実施例５．
図２０は、本発明の第５実施例に係る二重化メモリシステムである。図において、１００はシステムバス制御装置３に内蔵されＣＰＵバスのモードを設定するモード設定回路、１０１はシステムバスのモードを設定するモード設定回路、１０２はメモリ装置４に内蔵されてシステムバスのモードを設定するモード設定回路、１０４はシステムバス制御装置３に内蔵されて二重化されたシステムバスのデータを比較する比較回路、１０５はメモリ装置４に内蔵されて二重化されたシステムバスのデータを比較する比較回路である。
【０１０２】
図２１はシステムバス制御装置３内部にあってＣＰＵバスの制御を行う回路の概念を示した図であり、モード設定回路１００、データラッチ１７、比較回路５１、ドライバ３１及びレシーバ５０で構成され、モード決定回路から出力されるＡバス許可信号線１０６により、ＣＰＵバスのデータ出力を制御する。
【０１０３】
図２２は同様に、システムバス制御装置３内部にあってシステムバスの制御を行う回路の概念を示した図であり、システムバスＡはＡバス許可信号線１０６により、システムバスＢはＢバス許可信号線１０７により、システムバスのデータ出力を制御する。
【０１０４】
図２３は、図２０におけるモード設定回路１０１の詳細を示す図（１００、１０２も同様）である。図において、１２０はモード設定データ信号線、１２１はマスタモード入力線２１に従ってモード設定データ信号を選択するためのセレクタ回路、１２２はセレクタ回路１２１の出力信号線、１２３はＡバスのモードを記憶するモードラッチ、１２５はＢバスのモードを記憶するモードラッチで、モード設定信号線１０３によりセレクタ回路の出力信号線１２２の内容を記憶し、各々のモード出力信号線１２４、１２６は後段のＡＮＤゲートとＯＲゲートの組合せにより、最終的な出力信号である、Ａバス許可信号１０６及びＢバス許可信号１０７を出力する。
【０１０５】
図２４は、図２３におけるモード設定回路の動作シーケンスを示す図で、Ｔ１００はリセットタイミング、Ｔ１０１及びＴ１０４はモード設定タイミング、Ｔ１０２はシステムバス制御装置３ａ側でエラーを検出したタイミング、Ｔ１０３はエラーが回復したタイミングを示している。
【０１０６】
また図２５は、実際の運用時のメモリ装置４の動作とモードの関係を示したもので、（Ａ）は全体の流れ、（Ｂ）は診断動作（処理１４２）の詳細を示しており、図２４との関係は、電源投入処理１４０がＴ１００に、モード変更処理１４３がＴ１０１に、故障発生１４５がＴ１０２に、モード変更処理１４６がＴ１０４に、各々対応する。
【０１０７】
以上のように構成される二重化メモリシステムの概略動作について、図２０を用いて説明する。モード設定回路１００ないし１０２には独立してモードＡ、Ｂ、Ｃ、Ｄの４種類のモードが設定できるようになっており、モード設定回路１００はシステムバス制御装置３がＣＰＵデータバス８に読出しデータを出力する制御を、モード設定回路１０１はシステムバス制御装置３がシステムバスに書込みデータを出力する制御を、モード設定回路１０２はメモリ装置４がシステムバスに読出しデータを出力する制御を行う。システムバス制御装置３によるＣＰＵデータバスへのデータの出力制御は、モード設定回路１００の状態、システムバス制御装置３の内部にあるエラー検出回路６によるエラー検出の状況、相手からのＣＰＵバス切換え信号線１２によって制御される。システムバス制御装置３によるシステムバスへのデータの出力制御は、モード設定回路１０１の状態、システムバス制御装置３の内部にあるエラー検出回路８０によるエラー検出の状況、相手からのシステムバス切換え信号線８１により制御される。またメモリ装置４によるシステムバスへのデータの出力制御は、モード設定回路１０２の状態、メモリ装置４の内部にあるエラー検出回路８５によるエラー検出の状況、相手からのシステムバス切換え信号線８４によって制御される。
【０１０８】
また各々のバスの出力回路には、バスの内容を比較し、その結果を外部に出力して割込み信号線を生成するための比較回路があり、ＣＰＵバス側では出力の直前のデータと、出力されたデータを再度入力して比較しており、システムバス側では２つのシステムバスの内容を比較している。
【０１０９】
次にシステムバス制御装置３のＣＰＵバス側の詳細動作について、図２１を参照して説明する。通常の動作ではモード設定回路１００ａはモードＡに、モード設定回路１００ｂはモードＢに設定されており、メモリ装置から読み出されたデータはシステムバス制御装置３の内部バス７０を介してデータラッチ１７にラッチされるとともに、エラー検出回路６でパリティチェックが行われる。モードＡのシステムバス制御装置３ａでは、エラー検出回路６ａでエラーが検出されていなければモード設定回路１００ａの出力１０６ａが“１”になり、読出しデータはドライバ回路３１ａからＣＰＵデータバス８に出力される。エラーが検出されるとモード設定回路１００ａの出力１０６ａが“０”になってデータの出力を停止するとともに、ＣＰＵバス切換え信号線１２ａに“１”が出力される。
【０１１０】
モードＢのシステムバス制御装置３ｂでは、相手からのＣＰＵバス切換え信号線１２ａが“０”であればモード設定回路１００ｂの出力１０６ｂが“０”になってＣＰＵデータバスにはデータを出力しないが、エラー検出回路６ｂでエラーが検出されていない時に、相手からのＣＰＵバス切換え信号線１２ａが“１”になると、モード設定回路１００ｂの出力１０６ｂが“１”になり、読出しデータをＣＰＵデータバス８に出力する。またシステムの電源投入時には、両側のモード設定回路１００ともモードＤに設定され、モード設定回路１００の出力１０６は常に“０”となり、このシステムバス制御装置がＣＰＵデータバスに読出しデータを出力することはない。（ここで注意すべきは、ＣＰＵバスはシステムバスのように二重化されていないため、モードＡ、Ｂのシステムバス制御装置の一方に限ってＣＰＵデータバスに出力が許可されることである。このため、モードＡ、Ｂは後述するシステムバスの制御におけるそれらと意味が異なる。同じ理由から、ＣＰＵバスの制御ではモードＣが使用されることはない。）
【０１１１】
モードＡのシステムバス制御装置３ａはさらに、自分の出力データをレシーバ回路５０ａを介して入力し、この入力信号線５５ａとデータラッチ１７ａの出力信号線１８ａを比較しており、モードＢのシステムバス制御装置３ｂは、相手の出力データをレシーバ回路５０ｂを介して入力し、この入力信号線５５ｂとデータラッチ１７ｂの出力信号線１８ｂを比較している。比較結果が異なっていると比較エラー信号線５３が“１”になり、この信号をモードＢのシステムバス制御装置３ｂが３ステートバッファ５４ｂを介して外部に出力し、高レベルの割込み信号線１０として処理装置１に通知され、処理装置は前述の図９のようなエラー解析を行う。
【０１１２】
システムバス制御装置３によるシステムバスへの出力制御はメモリ装置と同等なので、次にメモリ装置４によるシステムバスへの出力制御について、図２２を参照して説明する。通常の動作モードでは、モード設定回路１０２ａはモードＡに、モード設定回路１０２ｂはモードＢに設定されており、メモリから読み出されたデータはメモリ装置の内部バス７２を介してデータラッチ９４にラッチされるとともに、エラー検出回路８５でパリティチェックが行われる。モードＡのメモリ装置４ａでは、エラー検出回路８５ａでエラーが検出されなければモード設定回路１０２ａの出力１０６ａが“１”、１０７ａは“０”になり、読出しデータはドライバ回路９０ａからシステムバスＡ１３ａに出力される。エラーが検出されるとモード設定回路１０２ａの出力１０６ａ及び１０７ａはともに“０”となり、データの出力を停止するとともに、システムバス切換え信号線８４ａが“１”に出力される。またエラーが検出されていない時に、相手からのシステムバス切換え信号線８４ｂが“１”になると、モード設定回路１０２ａの出力１０６ａ及び１０７ａはともに“１”となり、読出しデータはドライバ回路９０ａ及び９１ａから両方のシステムバスＡ１３ａ及び１３ｂに出力される。
【０１１３】
一方、モードＢのメモリ装置４ｂでは、エラー検出回路８５ｂでエラーが検出されない場合、モード設定回路１０２ｂの出力１０６ｂが“０”、１０７ｂが“１”になり、読出しデータがドライバ回路９０ｂからシステムバスＢ１３ｂに出力される。エラーが検出されるとモード設定回路１０２ｂの出力１０６ｂ及び１０７ｂはともに“０”となり、データの出力を停止するとともに、システムバス切換え信号線８４ｂが”１”に出力される。またエラーが検出されていない時に、相手からのシステムバス切換え信号線８４ａが“１”になると、モード設定回路１０２ｂの出力１０６ｂ及び１０７ｂはともに“１”になり、読出しデータはドライバ回路９０ｂ及び９１ｂから両方のシステムバスＡ１３ａ及び１３ｂに
出力される。
【０１１４】
さらに両側のメモリ装置４は、二重化されたシステムバスのデータをレシーバ回路１０８及び１０９を介して入力し、比較回路１０５で比較しており、比較結果は内部のエラー検出回路８５のエラー出力信号（システムバス切換え信号線８４）とＯＲゲートで処理されて外部に出力され、ＡＮＤゲート９３とＥＸＯＲゲート９２で条件がとられて、処理装置１に対する異なったレベルの割込み信号を生成する。処理装置１はこの割込みを受けると、前述の図１１に示すようなエラー解析処理を行う。
【０１１５】
モード設定回路の構成と動作について、システムバス制御装置３に内蔵されるモード設定回路１０１の場合を例に、図２３及び図２４を用いて説明する。まず電源投入時にはＴ１００のタイミングでリセット信号線４２が“０”になり、モードラッチ１２３及び１２５はリセットされて出力が“０”になり、モード設定回路１０１ａ及び１０１ｂは、ともにモードＤ（初期モード）に設定される。モードＤではＡＮＤゲート１２７、１２９及び１３４の出力は“０”になるためバス許可信号線１０６及び１０７はともに“０”が出力される。
【０１１６】
次に処理装置が図２４におけるＴ１０１のタイミングで、データ信号１２０−１ないし１２０−４に、設定すべきモードに対応したデータ“１００１”を置いてモード設定信号線１０３を出力すると、セレクタ回路１２１はマスタモード入力線２１の状態に従って、入力データ１２０のうち、２本を選択する。ここでシステムバス制御装置３ａのマスタモード入力線２１ａは“１”であるため、セレクタ回路の出力信号１２２−１ａには入力データ１２０−１が、セレクタ回路の出力信号１２２−２ａには入力データ１２０−３が出力され、一方システムバス制御装置３ｂのマスタモード入力線２１ｂは“０”であるため、セレクタ回路の出力信号１２２−１ｂには入力データ１２０−２が、セレクタ回路の出力信号１２２−２ｂには入力データ１２０−４が出力され、モード設定回路１０１ａはモードＡに、モード設定回路１０１ｂはモードＢに設定される。逆にいえば、モードＡとはモード出力信号１２４ａが“１”、モード出力信号１２６ａが“０”となってバス許可信号線１０６ａに“１”、１０７ａに“０”が出力されるモードと定義できる。同様にモードＢではモード出力信号１２４ｂが“０”、モード出力信号１２６ｂが“１”になり、バス許可信号線１０６ｂには“０”、１０７ｂには“１”が出力される。
【０１１７】
ところで図２４のＴ１０２からＴ１０３のタイミング、つまりシステムバス制御装置３ａがモードＡでシステムバス制御装置３ｂがモードＢにある状態で、システムバス制御装置３ａ側のエラー検出回路８０ａがエラーを検出すると、内部のエラー信号線８１ａが“１”になり、ＡＮＤゲート１２７ａ、１２９ａ、１３４ａが“０”、Ａバス許可信号線１０６ａ及びＢバス許可信号線１０７ａがともに“０”となる。一方システムバス制御装置３ｂではシステムバス切換え信号線８１ａ（内部のエラー信号８１ａと論理的に同一）が“１”になるため、ＡＮＤゲート１３４ｂの出力が“１”となり、ＯＲゲート１３２ｂ及び１３３ｂの出力であるＡバス許可信号線１０６ａ及びＢバス許可信号線１０７ａがともに“１”となる。
【０１１８】
さらに処理装置が図２４におけるＴ１０４のタイミングで、データ信号１２０−１ないし１２０−４に設定すべきモードに対応したデータ“０１０１”を置いてモード設定信号線１０３を出力すると、システムバス制御装置３ａ内のモードラッチ１２３ａ及び１２５ａはともに“０”となってモード設定回路１０１ａはモードＤに戻り、バス許可信号線１０６ａ及び１０７ａは両側“０”になる。一方、システムバス制御装置３ｂ内のモードラッチ１２３ｂ及び１２５ｂはともに“１”となってモード設定回路１０１ａはモードＣに設定され、バス許可信号線１０６ｂ及び１０７ｂはともに“１”となる。
【０１１９】
以上説明した二重化メモリシステムにおいてモード設定回路を使用すると、診断、交換、復旧等の処理を容易に行うことができる。メモリ装置４においてこの機能を使用した例を、図２５（Ｂ）を用いて説明する。
【０１２０】
二重化されたメモリ装置は各々Ａ系統とＢ系統で示されており、各々同期してモード設定を変化させながら処理をしている。まず処理１４０で両側のメモリ装置に電源が投入され、リセット時の処理１４１によって両側がモードＤに設定され、いずれのメモリもデータを出力しない状態となる。
【０１２１】
次に処理１４２における書き込み、読み出し、比較チェックによるメモリの初期診断を図２５で説明する。メモリを診断するためには、二重化されたメモリ装置から独立して書込みデータを読み出す必要があるので、まず処理１４２−１ａでＡ系統のメモリ装置をモードＣに、処理１４２−１ｂでＢ系統のメモリ装置をモードＤに設定し、読出しデータがＡ系統のメモリからのみ出力される状態にし、処理１４２−２ａでメモリ装置に対して書き込み、読み出し、比較を行う。このため、Ａ系統のメモリ装置が診断されることになる。この時、Ｂ系統のメモリ装置にもデータは書き込まれるが、Ａ系統の診断結果には影響しない。次に処理１４２−３でＡ系統のメモリ装置をモードＤに、Ｂ系統のメモリ装置をモードＣに設定して、処理１４２−４ｂでＢ系統のメモリ装置を試験することができる。
【０１２２】
処理１４２によるメモリ装置の初期診断が完了すると、処理１４３でＡ系統のメモリ装置をモードＡに、Ｂ系統のメモリ装置をモードＢに設定することにより通常動作処理１４４を行い、すなわちシステムバスＡ１３ａにはＡ系統のメモリ装置が読出しデータを送出し、システムバスＢ１３ｂにはＢ系統のメモリ装置が読出しデータを送出し、どちらかでエラーが検出されると反対側が両方のシステムバスにデータを送出する、二重化メモリ動作となる。故障１４５ａによってＡ系統のメモリ装置が故障すると、Ｂ系統のメモリ装置が正しいデータで応答しつつ、処理装置１は割込みをもとに故障解析を行い、修理交換が必要と判定されると、処理１４６でＡ系統のメモリ装置をモードＤに、Ｂ系統のメモリ装置をモードＣに設定することにより、Ａ系統のメモリ装置はシステムバスから切り離された状態となる。この後もＢ系統のメモリ装置が両側のシステムバスに読出しデータを送出するので、Ａ系統の修理交換処理１４７ａを実施することができる。
【０１２３】
交換処理によって新しいメモリ装置をＡ系統に挿入すると、Ａ系統のメモリ装置はリセット処理によりモードＤになり、その後処理１５０により正常なＢ系統のメモリ装置からデータを読み出し、新しいＡ系統のメモリ装置へ書き込むコピー動作を行う。コピーが完了すると、処理１５１でＡ系統のメモリ装置をモードＡに、Ｂ系統のメモリ装置をモードＢに設定し、通常の二重化メモリ動作に復旧することができる。
【０１２４】
実施例６．
図２６は、本発明の第６実施例に係る二重化メモリシステムである。図において１７０は、メモリ装置４に内蔵され、メモリの書き込み及び読み出しを制御するための許可フラグ、１７１はメモリのアクセスタイミングを生成する制御回路、１７２はメモリ装置に対するアクセスアドレスを判定するアドレス判別回路、１７３はメモリ７１に強制的にエラーを書き込むためのエラー注入回路、１７７は二重化されたシステムバスの両方に接続される入出力制御装置である。
【０１２５】
図２７はメモリ装置４の内部の構成を示す図で、許可フラグ１７０、アドレス判別回路１７２、ドライバ２２０、レシーバ２２１、パリティ生成回路２３９、及びメモリ７１で構成される。図において許可フラグは読出し許可フラグ１７０−１、書込み許可フラグ１７０−２、パリティ生成許可フラグ１７０−３で構成され、これらの出力の組合せでメモリへの書き込み、読み出し、パリティの生成を制御する。
【０１２６】
図２８は図２７中のアドレス判別回路の詳細を示すもので、共通空間指定レジスタ２３１、個別空間指定レジスタ２３２、Ｉ／Ｏアドレス判別回路２３０、比較回路２３３及び２３４、ＡＮＤゲート２３７で構成され、出力信号として共通空間書込み信号線２１０、個別空間書込み信号線２１１、共通空間読出し信号線２１２、個別空間読出し信号線２１３を生成する。
【０１２７】
図２９はシステムバスをアクセスする際のアドレス空間の区分を示す図で、２００はメモリ空間全体を、２０１はＩ／Ｏ空間全体を示しており（Ａ）は二重化動作時の割付を、（Ｂ）は一重化時の割付を示している。メモリ空間はさらに、共通アクセス空間２０２と個別アクセス空間２０３に分けられている。
【０１２８】
図３０は、図２６中のメモリ装置が許可フラグ１７０によって状態遷移をする様子を示した図であり、許可フラグの組合せにより、切離し動作状態１８１、正常動作状態１８３、修復動作状態１８４及び保護動作状態１８５に定義され、エラーの発生あるいは許可フラグ書換えによって各状態間を遷移する。切り離し動作状態１８１は書き込み、読み出しとも不可、正常動作状態１８３は書き込み、読み出しとも可、修復動作状態１８４は書き込みのみ可、保護動作状態１８５は読み出しのみ可の状態である。
【０１２９】
図３１はエラー注入回路１７３と個別空間アクセスにより、メモリ７１ａ及び７１ｂの診断用領域に異なったデータ及びエラー状態を注入し、それを共通空間アクセスによって読み出した時のデータを示すものである。
【０１３０】
図３２は、メモリ装置４の内部にアドレスエラー検出回路１７６を設け、その出力を互いのメモリで交換し、相手側でエラーが検出されれば、エラーアドレスレジスタに正しいアドレスを記憶させる構成の概念図で、図３３に詳細を示す。
【０１３１】
以上のように構成される二重化メモリシステムの概略動作について、図２６を用いて説明する。
【０１３２】
メモリ装置４内部の許可フラグ１７０は、読出し許可フラグと書込み許可フラグ及びパリティ生成許可フラグの３ビットで構成され、アドレス判別回路１７２は共通アクセス空間と個別アクセス空間の判別を行う。処理装置１から共通アクセス空間を使用する書込み動作を行うとき、書込み許可フラグが“１”であれば、パリティ生成許可フラグの状態に無関係にパリティ生成を行なってメモリ７１に書き込みを行い、書込み許可フラグが“０”であれば書き込みを行わない。また処理装置１から個別アクセス空間を使用する書込み動作を行う時は、書込み許可フラグの状態に無関係にメモリ装置７１に書き込みを行うが、パリティ生成許可フラグが“０”であればパリティ生成を行わないでメモリ装置７１に書き込みを行う。
【０１３３】
次に処理装置１から共通アクセス空間を使用する読出しを行う時は、読出し許可フラグが“１”であれば読み出しを行ない、読出し許可フラグが“０”であれば読み出しを行なわない。また処理装置１から個別アクセス空間を使用する読み出しを行なう時は、読出し許可フラグの状態に無関係に読み出しを行なう。
【０１３４】
入出力制御装置１７７は両方のシステムバスに接続されており、システムバスの切換え回路は実施例５におけるシステムバス制御装置と同様に構成され、メモリ装置４からの読出しデータを取り込むときには、エラーの発生していない側のシステムバスのデータを使用する。
【０１３５】
次に許可フラグ１７０、アドレス判別回路１７２、エラー注入回路１７３の回路構成と動作について、図２７及び図２８を用いて説明する。許可フラグ１７０は読出し許可フラグ１７０−１、書込み許可フラグ１７０−２、パリティ生成許可フラグ１７０−３で構成され、アドレス判別回路１７２から出力される許可フラグ設定信号線２２５に従い、システムバスから入力したデータ信号線２２４−１ないし２２４−３の内容をラッチする。初期状態ではリセット信号４２により全てのフラグは“０”に初期化される。読出しデータをシステムバスに出力するためのゲート信号２２２は、読出し許可フラグの出力である読出し許可信号線２１４と、アドレス判別回路１７２の出力である共通空間読出し信号２１２と、個別空間読出し信号２１３により決定される。まず、個別空間に対する読み出しでは個別空間読出し信号２１３が“１”になるので、ＯＲゲート２１９の機能により、読出し許可信号線２１４の状態と無関係にドライバ回路２２０のゲート信号２２２が“１”になり、システムバスにメモリ７１からの読出しデータを出力する。一方共通空間に対する読み出しにおいては、共通情報読出し信号２１２が“１”になっても、ＡＮＤゲート２１８により読出し許可信号線２１４が“１”でないとシステムバスに読出しデータが出力されない。
【０１３６】
また個別空間に対する書き込みにおいては、個別空間書込み信号２１１が“１”になるので、ＯＲゲート２１７の機能により、書込み許可信号線２１５の状態と無関係にメモリ書込み信号線１６２が“１”になり、メモリ７１にデータが書き込まれる。一方、共通空間に対する書き込みにおいては、共通空間書込み信号線２１０が“１”になっても、ＡＮＤゲート２１６の存在により、書込み許可信号線２１５が“１”でないとメモリ書込み信号線１６２は“１”にならず、メモリ７１への書き込みは行われない。ところで、パリティ生成回路２３９にはパリティ生成許可信号線１６３の制御によってパリティ生成を制御する機能があり、パリティ生成許可信号線１６３が“１”の時はパリティデータが正常に生成され、“０”のときはエラーとなるように生成されるものとする。従って共通空間に対する書き込みでは、共通空間書込み信号線２１０が“１”になるので常に正しいパリティ生成が行なわれるが、個別アクセス空間時にはパリティ許可フラグ信号線３３８が“１”に設定されている場合に限って、正しいパリティが生成される。個別空間の書込み動作でこの機能を使用すると、メモリ７１にパリティエラーになるデータを意図的に書き込む操作、すなわちエラー注入が可能となる。
【０１３７】
更に、前述のアドレス判別回路１７２は図２８のように構成され、Ｉ／Ｏアドレス判別回路２３０は、メモリ装置に対してレジスタアクセス等のために設けられた固有のアドレスをデコードする。ここでシステムバスのアドレス信号線１３−２、マスタモード入力線２１、システムバスの書込み信号線１３−４の条件をとり、共通空間指定レジスタ設定信号線２３５、個別空間指定レジスタ設定信号線２３６、及び許可フラグ設定信号線２２５を出力する。共通空間レジスタは、設定信号線２３５によってシステムバスのデータ信号線の値をラッチし、個別空間レジスタ２３２は、設定信号線２３６によってシステムバスのデータ信号線の値をラッチする。処理装置１からメモリ空間のアクセスがされると、システムバス上のアドレス信号線１３−２と共通空間指定レジスタに設定されている内容を比較回路２３３で比較し、一致すれば共通情報アクセス信号２２８が“１”になり、この際書込み信号線１３−４が“１”の場合はＡＮＤゲート２３７−３によって共通空間書込み信号線２１０が“１”に、読出し信号線１３−３が“１”の場合はＡＮＤゲート２３７−４によって共通空間読出し信号線２１２が“１”になる。同様に、個別空間指定レジスタの設定内容を比較回路２３４で比較し、一致すると個別信号アクセス信号２２９が“１”になって個別空間書込み信号２１１、または個別空間読出し信号線２１３が“１”になる。
【０１３８】
以上のように動作するアドレス判別回路１７２の機能を使用して、メモリ装置４のアドレス空間を割り付ける例を、図２９によって説明する。（図２９において、２００ないし２０７で示される実体は、各々幅をもったメモリ領域である。）図２９（Ａ）は二重化メモリとして動作する時の設定例で、まずメモリ４ａに対し、前述の共通空間レジスタ２３１ａに共通アクセスメモリＡ／Ｂ空間のアドレス２０２−１を設定し、個別空間レジスタ２３２ａに個別アクセスメモリＡ空間のアドレス２０３−１を設定する。次にメモリ装置４ｂに対しては共通空間レジスタ２３１ｂに共通アクセスメモリＡ／Ｂ空間のアドレス２０２−１を設定し、個別空間レジスタ２３２ｂに個別アクセスメモリＢ空間のアドレス２０３−２を設定する。この設定により共通空間２０２−１に対するアクセスにおいては、メモリ装置４ａとメモリ装置４ｂの両方が対象になり、個別アクセス空間２０３−１に対するアクセスにおいてはメモリ装置４ａのみ、個別空間２０３−２に対するアクセスにおいてはメモリ装置４ｂのみが対象となって、二重化メモリとしての動作が可能になる。
【０１３９】
また、図２９（Ｂ）に示すように、メモリ装置４ａに対しては共通空間レジスタ２３１ａを共通空間アクセスメモリＡ空間のアドレス２０２−３に、メモリ装置４ｂに対しては共通空間レジスタ２３１ｂを共通空間アクセスメモリＢ空間のアドレス２０２−４に設定すると、共通アドレス空間２０２−３に対するアクセスではメモリ装置４ａが、共通アドレス空間２０２−４に対するアクセスではメモリ装置４ｂが有効になり、全体としては二重化メモリ動作に比べて２倍のメモリ容量を提供できる。
【０１４０】
次に前述した許可フラグ１７０と、共通及び個別空間のアクセス機能を使用して、電源の投入から通常動作、さらに故障メモリの修復及び修理交換の様子を、読出し許可フラグと書込み許可フラグの組合せで定義される状態遷移とともに、図３０で説明する。まず状態定義として、正常動作状態１８３は読出し許可フラグ及び書込み許可フラグが“１”、修復動作状態１８４は読出し許可フラグが“０”で書込み許可フラグが“１”、保護動作状態１８５は読出し許可フラグが“１”で書込み許可フラグが“０”、切り離し動作状態１８１は読出し許可フラグ及び書込み許可フラグが“０”の状態とし、さらにシステムの電源が未投入、またはメモリ装置がシステムから取外されている状態１８０を補足的に定義する。
【０１４１】
まずシステムの電源が投入されると、状態１８０から遷移１８６により、切離し状態１８１に移行する。この状態でそれぞれのメモリ装置に対して個別空間アクセスを使用してメモリ７１に対する書き込み、読み出し、比較チェック等のメモリ診断１８８を行ない、正常であれば電源投入時診断完了の移行１８９により正常動作状態１８３に移行する。状態１８３ではメモリ装置は二重化動作を行ない、エラー未発生時、及び単一のデータパリティエラーが発生した場合にも状態１８３にとどまる。データパリティーエラーが重複して発生すると、故障診断のために移行１９１によってメモリ装置を切離し状態１８１に移行させるが、エラーの発生していない側のメモリ装置は正常動作状態１８３にとどまる。
【０１４２】
正常なメモリ装置が状態１８３、故障したメモリ装置が切離し状態１８１にある場合、故障したメモリ装置に対しては診断処理１８８によって修復可否を調べるが、一方処理装置１による診断動作中、入出力制御装置１７７によるメモリ装置へのアクセスは共通空間に対して実施されるので、正常なメモリ装置が応答して正常動作が保証される。診断の結果修復不可能と判断されれば、保守員により新しいメモリ装置との交換が行なわれ、新しいメモリ装置は挿入によってまず切り離し動作状態１８１に移行し、診断にかけられる。ところで一旦切離し状態１８１に移行すると、正常なメモリ装置との内容の相違が発生するので、このままでは正常動作状態１８３に移行することができない。そこで診断終了時の移行１９６によって修復動作状態１８４に移行する。修復動作状態１８４では正常なメモリ装置から共通空間でデータを読み出し、共通空間アクセスによる書き込みで正常なメモリ装置と修復対象のメモリ装置の両方にデータを書き込む。全領域のコピー処理１９４が完了すると、修復完了の移行１９３により、再度両方のメモリ装置が正常動作状態１８３になって二重化メモリ動作に復旧する。この間、入出力制御装置１７７によるメモリ装置へのアクセスは共通空間に対して実施されるので、書込み動作は両方のメモリ装置に対して行われ、読出し動作は状態１８３にある正常なメモリ装置が応答して正常動作が保証される。
【０１４３】
また正常動作状態１８３でアドレスパリティエラーが発生すると、エラーの発生したメモリ装置のデータ中、当該アドレスのメモリ内容が信頼できないため、直ちに読出し許可フラグを“０”にして読み出しを禁止し、修復動作状態１８４に移行させる。アドレスパリティエラーが発生した後の修復動作状態１８４でもエラーの発生したメモリ装置に対する書き込みは続行されるので、処理装置１による修復処理開始までの間、正しいメモリ装置との内容の相違はアドレスエラーの発生した箇所のみとなる。そこで必要な修復処理を施した後、正常動作状態１８３に戻すことができる。
【０１４４】
保護動作状態１８５の使用方法について説明する。保護動作状態へは処理装置１からのモード切り換え処理１９７により移行する。例えばシステムバス１３に接続されている入出力制御装置１７７の故障を診断する場合、この装置がメモリ装置に正しい書き込みを実行するとは限らず、メモリ装置に対する書き込みを伴う診断を不用意に実行させれば、メモリ７１の内容を破壊しうる。そこで二重化されたメモリ装置のうち一方を保護動作状態１８５にしてメモリの内容の破壊を防止した後診断を実行し、診断完了後保護動作状態１８５のメモリ装置から正常動作状態１８３のメモリ装置に内容をコピーすることとする。その結果、たとえ入出力制御装置が不正な書込み動作を行っても、正常なメモリに修復可能である。仮に入出力制御装置が正常に動作すれば、書込みデータは書込み許可フラグが“１”のままの通常動作状態１８３のメモリ装置に書き込まれるので、この内容を確認することで入出力制御装置の動作が診断できる。
【０１４５】
次に、図２６におけるエラー注入回路を使用したエラーの注入状態と、この機能を利用した診断方法について、図２７ないし図３１を用いて説明する。図３１における領域７１−１は通常領域でプログラムやデータが格納され、領域７１−２ないし７１−５が診断領域として使用される。まずメモリ装置４ａのパリティ許可フラグを“１”に設定し、メモリ装置４ａの個別空間アクセスにより領域７１−２ａにデータ“８８８８”を、領域７１−４ａにデータ“ＡＡＡＡ”を書き込むことにより、正常なデータが生成される。次にメモリ装置４ａのパリティ許可フラグを“０”に設定し、メモリ装置４ａの個別空間アクセスにより領域７１−３ａにデータ“９９９９”を、領域７１−５ａにデータ“ＢＢＢＢ”を書き込むことにより、パリティエラーを含んだデータが生成される。同様にしてメモリ装置４ｂに対しては、領域７１−２ｂ及び７１−３ｂにデータ“ＣＣＣＣ”及び“ＤＤＤＤ”の正常データを、領域７１−４ｂ及び７１−５ｂにはデータ“ＥＥＥＥ”及び“ＦＦＦＦ”のパリティエラーを含んだデータを書き込む。
【０１４６】
以上のように、診断領域に正常データとパリティエラーを含むデータを書き込んだ状態で、タイマ等の機能により処理装置１が一定時間ごとに診断領域の読み出しを行なうことで、メモリにエラーが発生した場合は正常な側のメモリの内容を出力し、また両方のメモリでエラーが検出されたら高レベル割り込みが発生する機能（実施例４における動作）を診断できる。すなわち機能が正常ならば、領域７１−２の読み出しではメモリ７１ａが応答しデータ“８８８８”が、領域７１−３の読み出しではメモリ７１ａがエラーなのでメモリ７１ｂの正常データ“ＤＤＤＤ”が、領域７１−５の読み出しでは両方のメモリがエラーなので高レベルの割り込みが発生する。またメモリ装置４ａ内のエラー検出手段８５ａが正常の動作していない場合、領域７１−３の読み出しでエラーデータの“９９９９”が読み出され、故障箇所の判別が可能となる。
【０１４７】
次に、アドレスエラーの検出について、図３２を用いて概略説明をする。処理装置１からメモリ装置４がアクセスされる際、メモリのアドレス信号のパリティチェックをアドレスエラー検出回路１７６で行ない、この結果を相手側のメモリ装置にアドレスエラー検出信号線１７５として出力するとともに、エラーが検出された側は内部の読出し許可フラグを“０”にして読み出しを禁止する。一方相手のアドレスエラー信号線１７５の変化を検出したメモリ装置は、そのアドレスをエラーアドレスレジスタ１７４に記憶させ、割り込みによってアドレスエラーの発生を知った処理装置１が制御用ＲＯＭ２に格納されている故障解析復旧プログラムを実行し、エラーの発生したメモリアドレスを、正常な側のメモリ装置内のエラーアドレスレジスタ１７４から読み出す。このアドレスの示すメモリの内容を読み出して再度書き込むことにより、エラーの発生したメモリの内容が正常なデータに復旧する。
【０１４８】
上記の動作のうち、アドレスエラー検出とエラーアドレスレジスタの詳細について、図３３を用いて説明する。アドレスエラー検出回路１７６ａはシステムバス上のアドレス信号線１３−２ａのパリティチェックを行なっており、エラーを検出するとアドレスエラー信号線１７５ａを“１”に出力する。この信号は内部では読出し許可フラグ１７０−１ａを“０”にリセットするとともに、ＡＮＤゲート２１６により書込み信号線１６２を“０”にして、誤ったアドレスへの書き込みを禁止する。一方、相手側のメモリ装置４ｂでアドレスエラーが検出された場合には、相手からのアドレスエラー信号線１７５ｂが“１”になり、この時のアドレス信号線１３−２ａの内容がエラーアドレスレジスタ１７４ａに記憶される。また読出し時にアドレスエラーが発生した場合は、図１５におけるメモリ誤り検出信号線８４に相当する信号を出力すれば、エラーの発生していないメモリ装置が読出しデータを出力してくれるので、正常な読出しデータを保証できる。しかもアドレスエラーの発生したメモリ装置は、エラーの発生した部分のみが書き変わっていないに過ぎず、容易に修復できる。アドレスエラーが発生したときの割り込み信号は、ＥＸＯＲゲート９２とＡＮＤゲート９３によってアドレスエラー検出信号線１７５ａと１７５ｂの条件で生成される。いずれか一方のメモリ装置でアドレスエラーが発生した場合はＥＸＯＲゲート９２の出力が“１”になり、低レベルの割り込み信号９が出力され、両方のメモリ装置でアドレスエラーが発生した場合はＡＮＤゲート９３の出力が“１”になり、高レベルの割り込み信号１０が出力される。低レベルの割り込みは、エラーの発生したアクセスアドレスが正常なメモリ装置内のアドレスエラーレジスタに記憶されていて修復処理可能であることを示し、高レベルの割り込みはエラーのあったアクセスアドレスが特定できないために修復処理が不可能なことを示す。
【０１４９】
実施例７．
図３４は、本発明の第７実施例に係る二重化メモリシステムのメモリ装置内部のデータエラーの検出を示す図である。図において、２４０はアドレスを入力するためのレシーバ、２４１は予め発生するエラー回数の上限値を設定するためのエラー上限値レジスタ、２４４はエラー上限値レジスタ２４１に値を書込むためのエラー上限値レジスタ設定信号線、２４５はエラー検出回路、２４７はエラー検出回路２４５の出力であるエラー検出信号２４６によってインクリメントされ、外部からのエラー訂正信号線２５６によってデクリメントされるエラー累積カウンタ、２４９はエラー上限値レジスタ２４１とエラー累積カウンタ２４７の出力を比較し、比較結果に従い２種類の割り込み信号線を出力するための比較回路、２５２はエラーが発生したアドレスを格納するための複数のエラーアドレスレジスタ、２５７はエラーアドレスレジスタの書込み信号２５８を生成する書込み制御回路、２５４はメモリまたはエラーアドレスレジスタ２５２に格納されたデータを選択して出力するセレクタ、２５９はセレクタ２５４の出力信号２５５を選択するための信号で“０”のときはメモリの読み出しデータ２３３を“１”のときはエラーアドレスレジスタ２５２−１を“２”のときはエラーアドレスレジスタ２５２−２の内容を選択出力するための制御を行なうセレクタ切換え信号である。なおエラー上限値レジスタ設定信号線２４４、エラー訂正信号線２５６、セレクタ切換え信号２５９は例えば前述の実施例６における図３３のアドレス判別回路１７２により処理装置がアクセスするアドレスをデコートして生成される。
【０１５０】
以上のように構成されるエラー検出の動作について、図３４を用いて説明する。まず電源投入時には、エラー累積カウンタ２４７は“０”に初期化され、続いて処理装置からメモリ装置に内蔵されるエラー上限値レジスタ２４１に、エラー上限値レジスタ設定信号線２４４によってエラーアドレスレジスタの個数と同じ値（実施例では“２”）を設定する。この後通常のメモリアクセス動作を行うと、セレクタ切換え信号２５９には“０”が出力されており、メモリ７１からの読み出しデータ２２３はエラー検出回路２４５によりパリティチェックが行われ、エラーが発生していなければセレクタ２５４及びドライバ回路２２０を経由してシステムバス１３−１に出力される。エラーが検出されるとエラー検出信号線２４６が“１”になり、エラー累積カウンタ２４７の内容がインクリメントされる。比較回路２４９では前述のエラー上限値レジスタ２４１に設定されている内容と、エラー累積カウンタ２４７の内容が比較され、エラー累積カウンタの値がエラー上限値レジスタ２４１の数値を越えていなければ低レベルの割込み信号線９を“１”に、越えれば高レベルの割込み信号線１０を“１”にする。
【０１５１】
ところで、書込み制御回路２５７はエラー検出信号線２４６が“１”になったときに、エラー累積カウンタの出力信号２４８の内容により、アドレス信号２５１の内容をどのエラーアドレスレジスタに書込むかを切換える動作を行なう。つまり初期状態ではエラー累積カウンタ２４７の内容は“０”であるので書込み信号線２５８−１が出力されることにより、エラーアドレスレジスタ２５２−１にエラーアドレスが書込まれ、２回目のエラー発生時にはエラー累積カウンタ２４７の内容は“１”になっているので書込み信号線２５８−２が出力されることにより、エラーアドレスレジスタ２５２−２にエラーアドレスが書込まれる。このようにしてエラーが発生したアドレスはエラーアドレスレジスタ２５２に順次記憶されており、処理装置は低レベルの割り込みを受けると障害回復処理によりエラーアドレスレジスタ２５２−１のアクセスを行なうと、セレクタ切換え信号２５９は“１”になりエラーアドレスレジスタ２５２−１の内容がセレクタ２５４、データドライバ２２０を経由してシステムバスに出力される。処理装置はこのようにしてエラーの発生したアドレスを知ることができ、このアドレスで示されるメモリのデータを読み出して同じアドレスに書込むことによりパリティエラーの発生したメモリの内容を修復する。この後処理装置はエラー訂正信号線２５６によりエラー累積カウンタ２４７の内容をデクリメントする。ところで処理装置が低レベルの割込みを受け付けるまでの間でもメモリ装置のアクセスは実行されており、別のアドレスでパリティエラーが発生すると、エラーアドレスレジスタの個数以下のエラーなら、発生したアドレスを記憶することができる。エラーアドレスレジスタの個数を越えてエラーが発生した場合は、前述の比較回路２４９の高レベルの割り込み信号線が“１”になって修復不可能な重障害の発生が処理装置に通知され、実施例５に記載したモード設定回路等の機能を利用して、該当するメモリ装置を切り離す。
【０１５２】
実施例８．
図３５は、本発明の第８実施例に係る二重化メモリシステムであり、二重化バス変換アダプタ２６１を介して一重のバスしか持たない通常の入出力制御装置２６０を接続した様子を示す図である。図３６及び図３７に二重化バス変換アダプタ２６１の詳細構成を示す。
【０１５３】
図３６において、２６３はアドレス信号のドライバ／レシーバ回路、２６４はデータ信号のドライバ／レシーバ回路、２６９は通常の入出力制御装置２６０がシステムバスに対してアクセスする時のアドレスパリティを生成するパリティ生成回路、同様に２７１はデータのパリティを生成するパリティ発生回路、２７０はシステムバスから通常の入出力制御装置をアクセスする時に、二重化されたアドレスバスのパリティを検査し、正しい方のアドレスを選択するためのパリティ検査選択回路、同様に２７２はデータを選択するためのパリティ検査選択回路である。
【０１５４】
また図３７において、２７６は通常の入出力制御装置２６０がアクセスして良いアドレス領域を設定するためのアドレス領域レジスタ、２７８は通常の入出力制御装置２６０がシステムバスに出力しようとしているアドレスと、アドレス領域レジスタ２７６の内容を比較し、その結果によりシステムバスのドライバのゲートを制御する比較回路である。
【０１５５】
上記のように構成される二重化メモリシステムの入出力制御装置に関する動作概要を、図３５を用いて説明する。入出力制御装置１７７は二重化メモリシステム対応に設計されたものであり、両側のシステムバスに対するアクセスが可能になっている。一方、通常の入出力制御装置２６０は二重化メモリシステムを意識していない既存のもので、それ自身は１つのシステムバスへの接続のみが可能なため、これを二重化バス変換アダプタ２６１によって二重化するとともに、エラーチェックコードの生成、アドレスのチェック等を行い、信頼性を向上させている。
【０１５６】
次に、二重化バス変換アダプタ２６１の詳細動作を、図３６を用いて説明する。通常の入出力制御装置２６０は、共にパリティコードを持たないアドレス信号線２６２−２とデータ信号線２６２−１によって二重化バス変換アダプタ２６１と接続されており、入出力制御装置がシステムバス経由でメモリ装置１にアクセスする場合は、アドレス信号線２６２−２にパリティ生成回路２６９でパリティコードが付加されてアドレス信号線２６５となり、ドライバ回路２６３−１を介して両側のシステムバスにアドレス信号線１３−２ａと１３−２ｂとして出力される。またデータ信号線２６２−１にはパリティ生成回路２７１でパリティコードが付加され、データ信号線２６７となり、ドライバ回路３６４−１を介して両側のシステムバスにアドレス信号線１３−１ａと１３−１ｂとして出力される。
【０１５７】
一方、二重化されたシステムバスから入出力制御装置がアクセスされる場合は、システムバスのアドレス信号線１３−２ａ及び１３−２ｂはレシーバ回路２６３−２で入力され、パリティ検査選択回路２７０によるパリティチェックの結果、エラーの発生していない側のアドレス信号２６６が選択され、通常の入出力制御装置２６０に対するアドレス信号線２６２−２として出力される。同様にシステムバスのデータ信号線１３−１ａ及び１３−１ｂはレシーバ回路２６４−２で入力され、パリティ検査選択回路２７２によるパリティチエックの結果、エラーの発生していない側のデータ信号２６８が選択され、通常入出力制御装置２６０に対するデータ信号線２６２−２として出力される。
【０１５８】
パリティ検査選択回路２７０で両側のアドレス信号線でエラーが検出され、正しいアドレスが選択できないときは、アドレスエラー信号線２７４が、またパリティ検査選択回路２７２によって両側のデータ信号線でエラーが検出され、正しいデータが選択できないときにはデータエラー信号線２７５が、各々出力され、ＯＲゲート２７３により低レベルの割込み信号が出力される。この時、通常の入出力制御装置２６０に対する書込み、読出し信号線（図示せず）は出力されなので、入出力制御装置は動作を開始せず、処理装置１のソフトウェアによるリトライ処理を行う。
【０１５９】
次に、図３７を用いて、入出力制御装置２６０のアクセスに制限を設ける動作を説明する。アドレス領域レジスタ２７６は入出力制御装置２６０がアクセス可能なメモリアドレスの範囲を指定するためのもので、処理装置１は入出力制御装置２６０に対する入出力動作の起動に先立ち、アドレス領域レジスタ設定信号２８２により、データ信号線２６２−１の内容をアドレス領域レジスタ２７６に設定する。入出力制御装置２６０が起動されてメモリへの転送が発生すると、入出力制御装置２６０はアドレス信号線２６２−２にアクセスするメモリアドレスを出力する。この時比較回路２７８は前述のアドレス領域レジスタ２７６に設定された範囲内にあるかどうかを判定し、範囲内であればドライバ出力許可信号線２７９を“１”にしてシステムバスへのアクセスを許可し、範囲外であればドライバ出力許可信号線２７９を“０”にしてシステムバスへのアクセスを禁止する。またＯＲゲート２８１により範囲外のアドレスがアクセスされた時には、低レベルの割込み信号線９を“１”にして処理装置に知らせる。
【０１６０】
なお上記実施例では、メモリ装置のデータチェックコードとしてパリティデータによって説明したが、これはパリティデータでなくＥＣＣコードであっても同様に実現できる。
【０１６１】
【発明の効果】
以上詳細に説明したように、本発明によれば、メモリ装置Ａ及びＢが独立して書込み許可フラグ、読出し許可フラグを持ち、かつアドレス判別回路が現アドレスに対するアクセスの対象を判別する結果、各メモリ装置はアクセスが自装置に及ぶ場合を適切に判定することができ、診断等の処理が容易になる。
【０１６２】
また本発明によれば、状態定義手段が前記書込み許可フラグ、読出し許可フラグの組合せに従って各メモリ装置の状態を定義し、状態遷移手段が処理装置による設定に従って各メモリ装置を各状態間で遷移させるため、各メモリ装置の初期設定、エラー発生時の切換え等を適切に行うことができる。
【０１６３】
また本発明によれば、メモリ装置Ａ及びＢの共通アクセス空間指定レジスタがメモリ装置Ａとメモリ装置Ｂがともにアクセス対象となる共通アクセス空間を指定し、個別空間アクセス指定レジスタがメモリ装置Ａまたはメモリ装置Ｂのいずれか一方がアクセス対象となる個別アクセス空間を指定する結果、的確なメモリの状態管理が可能となる。さらに入出力制御装置故障時の診断時に保護動作状態を使用すれば、入出力制御装置の誤動作によるメモリ破壊を防止できる。
【０１６４】
また本発明によれば、設定手段、第二の設定手段、第三の設定手段によって各メモリ装置の共通アクセス空間指定レジスタおよび個別空間指定レジスタの値を適宜設定するため、二重化動作だけでなく、二重化動作を必要としない場合（高信頼性がさほど要求されない場合）にあっては、各メモリ装置を別々に使用することによって使用可能なメモリ容量の倍増を可能とする。
【０１６５】
また本発明によれば、エラー注入手段が各メモリ装置の任意領域に擬似的なエラーを注入するため、装置の切換えを強制的に発生させることができ、またエラーの注入された領域を適宜アクセスすることによってエラー検出回路、バス切換え回路及び割込み生成回路の動作を確認することができるため、信頼性が向上する。
【０１６６】
また本発明によれば、注入値設定手段が前記エラー注入手段によってエラーの注入される領域のアドレス及び注入されるデータの値を両メモリ装置で異なる値に設定するため、エラーが強制的に発生させられたメモリ装置の識別が可能となり、装置の診断が容易になる。
【０１６７】
また本発明によれば、前記のメモリ装置の一方ががシステムバスのアドレスエラーを検出したとき、他方のメモリ装置が自装置でエラーのないアドレスを記憶するため、後の修復処理において、修復すべきアドレスを特定することができる。さらに、アドレスエラーが検出されたメモリ装置において、自メモリへの書込みが禁止されるため、誤って指定されたアドレスのデータが破壊される事態を回避することができる。
【０１６８】
また本発明によれば、システムアドレスエラー割込み生成手段がシステムアドレスエラー検出手段における検出結果に従って割込み信号を生成するため、エラー修復手段がこの割込み信号に従って前記エラーアドレス記憶手段に格納されたアドレスをもとにエラー修復を行うことができる。
【図面の簡単な説明】
【図１】本発明の第１実施例に係る二重化メモリシステムの全体構成を示すブロック図である。
【図２】図１中のエラー検出回路６及びＣＰＵバス切換え回路７の構成を示す図である。
【図３】図１中、エラー発生状況とＣＰＵバス切換え信号線１２、割込み信号線９、１０の相関を示す図である。
【図４】図２の回路の動作を示すタイミング図である。
【図５】図２の回路中、データ信号１８とゲート信号３２のタイミングを示す図である。
【図６】図１中のマスタ決定回路５の詳細を示す図である。
【図７】図６のマスタ決定回路５の動作を示すタイミング図である。
【図８】本発明の第２実施例に係る二重化メモリシステムのシステムバス制御回路を示す図である。
【図９】図８中の回路の一部分が故障した時の動作を示す図である。
【図１０】本発明の第２実施例に係るシステムバス制御回路の変型例である。
【図１１】図１０中の回路の一部分が故障した時の動作を示す図である。
【図１２】本発明の第３実施例に係る二重化メモリシステムのエラー検出回路とステータスレジスタの配置を示す図である。
【図１３】図１２における二重化メモリシステムのメモリ書込み時の故障箇所判定の方法を示す図である。
【図１４】図１２における二重化メモリシステムのメモリ読出し時の故障箇所判定の方法を示す図である。
【図１５】本発明の第４実施例に係る二重化メモリシステムの全体構成を示すブロック図である。
【図１６】図１５中のシステムバス制御装置３に内蔵されるシステムバス切換え回路８２のシステムバス１３への出力切り換え部分を示す図である。
【図１７】図１５中のメモリ装置４に内蔵されるシステムバス切換え回路８３のシステムバス１３からの入力切換え部分を示す図である。
【図１８】図１５中の二重化メモリシステムにおける処理装置がメモリ装置へ書込みを行う際のデータバスの切り換えを示した図である。
【図１９】図１５中の二重化メモリシステムにおける処理装置がメモリ装置からの読出しを行う際のデータバスの切り換えを示した図である。
【図２０】本発明の第５実施例に係る二重化メモリシステムの全体構成を示すブロック図である。
【図２１】図２０中のシステムバス制御装置３のＣＰＵバス周辺の構成図である。
【図２２】図２０中のシステムバス制御装置３のシステムバス周辺の構成図である。
【図２３】図２０中のシステムバス制御装置３に内蔵されるモード設定回路１００の詳細図である。
【図２４】図２３の回路の動作を示すタイミング図である。
【図２５】図２０中のメモリ装置におけるモードの遷移を示す図である。
【図２６】本発明の第６実施例に係る二重化メモリシステムの全体構成を示すブロック図である。
【図２７】図２６中のメモリ装置４の内部構成を示す図である。
【図２８】図２６中のアドレス判別回路１７２の詳細を示す図である。
【図２９】メモリ装置４のアドレス空間の割付を示す図である。
【図３０】許可フラグの組合せによるメモリ装置４の状態遷移を示す図である。
【図３１】図２６中のエラー注入回路１７３によるメモリ内部のエラー注入状態を示す図である。
【図３２】本発明の第６実施例にアドレスエラー検出機能を付加した二重化メモリシステムの全体構成を示すブロック図である。
【図３３】図３２中のメモリ装置４の内部構成を示す図である。
【図３４】本発明の第７実施例に係るデータエラー検出の方式を示す図である。
【図３５】本発明の第８実施例に係る二重化バス変換アダプタ２６１を含んだ二重化メモリシステムの全体構成を示すブロック図である。
【図３６】図３５中の二重化バス変換アダプタ２６１の内部構造を示す図である。
【図３７】図３６においてアドレス領域レジスタ２７６を付加した二重化バス変換アダプタ２６１を示す図である。
【符号の説明】
１　処理装置（ＣＰＵ）、２　制御ＲＯＭ、３　システムバス制御装置、４　メモリ装置、５　マスタ決定回路、６　エラー検出回路、７　ＣＰＵバス切替え回路、８　ＣＰＵデータバス、９　低レベルの割込み、１０　高レベルの割込み、１１　ＣＰＵアドレスバス、１２　ＣＰＵバス切替え信号線、１３　システムバス、１９　エラー検出回路、２０　正常信号線、２１　マスタモード入力信号線、３０　データ出力タイミングクロック信号、３１　３ステートバッファ、３４　プルアップ抵抗、３５　ＥＸＯＲゲート、３６　ＡＮＤゲート、３８　マスタ切替え信号線、４１　マスタモードの出力信号線、４２　リセット信号線、５１　データ比較回路、５３　比較エラー信号線、６０〜６２　ドライバ／レシーバ、６３　パリティ生成回路、６４〜６６　パリティ検査回路、６７〜６９　ステータスレジスタ、７０　システムバス制御装置内部バス、７１　メモリ、７２メモリ装置内部バス、７３　選択回路、７８　入力データ切替え信号線、８０，８５　エラー検出回路、８１　システムバス切替え信号線、８２，８３　システムバス切替え回路、８４　メモリエラー検出信号線、１００〜１０２　モード設定回路、１０３　モード設定信号線、１０４，１０５　比較回路、１０６　Ａバス許可信号線、１０７　Ｂバス許可信号線、１１３　比較エラー信号線、１２０　モード設定データ信号線、１２１　セレクタ回路、１２３，１２５　モードラッチ、１４０　電源投入処理、１４１，１４６，１４８　モードＤ状態、１４２　診断処理、１４３，１５１　モードＡ状態、１４４，１５２　通常動作、１４５　故障発生、１４７　修理交換処理、１４９　診断処理、１５０　メモリコピー処理、１５３，１６１　モードＢ状態、１５６　モードＣ状態、１５７　通常動作、１６２　メモリ書き込み信号、１６３　パリティ生成許可信号線、１７０　パリティ許可フラグ、１７２　アドレス判別回路、１７３　エラー注入回路、１７４　エラーアドレスレジスタ、１７５　エラーアドレス信号線、１７６　アドレスエラー検出回路、１７７　入出力制御装置、１８０　電源遮断状態、１８１　切離し動作状態、１８３　正常動作状態、１８４　修復動作状態、１８５保護動作状態、１８６　カード挿入／電源投入操作、１８７　カード取外し／電源遮断操作、１８８　メモリ診断動作、１８９　電源投入時診断完了、１９０エラー無し／単一データエラー動作、１９１　重複データエラー発生、１９２アドレスエラー発生、１９３　修復完了、１９４　メモリコピー動作、１９５修復不可能エラー発生、１９６　診断終了、１９７　保護モード切替え、２００　メモリ空間、２０１　Ｉ／Ｏ空間、２０２　共通アクセス空間、２０３　個別アクセス空間、２０６　Ｉ／Ｏ空間Ａ、２０７　Ｉ／Ｏ空間Ｂ、２０８　メモリ空間Ａ、２０９　メモリ空間Ｂ、２１０　共通空間書き込み、２１１　個別空間書き込み、２１２　共通空間読み出し、２１３　個別空間読み出し、２１４　読み出し許可信号線、２１５　書き込み許可信号線、２２２　ドライバゲート信号線、２２３　メモリ読み出しデータ信号線、２２５　フラグ書き込み信号線、２２６　メモリ書き込みデータ信号線、２２８　共通空間アクセス信号、２２９個別空間アクセス信号、２３０　Ｉ／Ｏアドレス判定回路、２３１　共通空間指定レジスタ、２３２　個別空間指定レジスタ、２３３，２３４　比較回路、２３５　共通空間指定レジスタ設定信号線、２３６　個別空間指定レジスタ信号線、２３９　パリティ生成回路、２４０　アドレスレシーバ、２４１　エラー上限値レジスタ、２４４　エラー上限値レジスタ設定信号線、２４５　エラー検出回路、２４６　エラー検出信号線、２４７　エラー累積カウンタ、２４８　累積カウンタ出力信号線、２４９　比較回路、２５１　入力アドレス信号線、２５３　エラーアドレス出力信号線、２５４　セレクタ回路、２５６　エラー訂正信号線、２６０　入出力制御装置、２６１　二重化バス変換アダプタ、２６２　変換バス信号線、２６３　アドレスドライバ／レシーバ回路、２６４　データドライバ／レシーバ回路、２６５　アドレス信号線、２６６　アドレス入力信号線、２６７　データ信号線、２６８　データ入力信号線、２６９　アドレスパリティ生成回路、２７０　アドレスパリティ生成／選択回路、２７１　データパリティ生成回路、２７２　データパリティ生成回路／選択回路、２７４　アドレスエラー信号線、２７５　データエラー信号線、２７６　アドレス領域レジスタ、２７７　アドレス領域信号線、２７８　比較回路、２７９　ドライバ出力許可信号線、２８２　アドレス領域レジスタ設定信号線。
【図１】
2004005627.tif 000003
【図２】
2004005627.tif 000004
【図３】
2004005627.tif 000005
【図４】
2004005627.tif 000006
【図５】
2004005627.tif 000007
【図６】
2004005627.tif 000008
【図７】
2004005627.tif 000009
【図８】
2004005627.tif 000010
【図９】
2004005627.tif 000011
【図１０】
2004005627.tif 000012
【図１１】
2004005627.tif 000013
【図１２】
2004005627.tif 000014
【図１３】
2004005627.tif 000015
【図１４】
2004005627.tif 000016
【図１５】
2004005627.tif 000017
【図１６】
2004005627.tif 000018
【図１７】
2004005627.tif 000019
【図１８】
2004005627.tif 000020
【図１９】
2004005627.tif 000021
【図２０】
2004005627.tif 000022
【図２１】
2004005627.tif 000023
【図２２】
2004005627.tif 000024
【図２３】
2004005627.tif 000025
【図２４】
2004005627.tif 000026
【図２５】
2004005627.tif 000027
【図２６】
2004005627.tif 000028
【図２７】
2004005627.tif 000029
【図２８】
2004005627.tif 000030
【図２９】
2004005627.tif 000031
【図３０】
2004005627.tif 000032
【図３１】
2004005627.tif 000033
【図３２】
2004005627.tif 000034
【図３３】
2004005627.tif 000035
【図３４】
2004005627.tif 000036
【図３５】
2004005627.tif 000037
【図３６】
2004005627.tif 000038
【図３７】
2004005627.tif 000039