(57)【特許請求の範囲】
【請求項１】
常用系の主メモリの所定領域に書き込まれるデータをリアルタイムに待機系に転送し、待機系で書き込み、常用系で故障が発生した場合に待機系に処理を切り換える二重化処理装置の二重化データ一致化方法において、
常用系の主メモリに書き込まれるデータをスヌープし、バッファに一時記憶し、スヌープを完了したスヌープデータは待機系に転送され、待機系の書き込みは常用系とは別のタイミングで行い、かつ、前記スヌープデータを待機系に転送する際に、前記バッファ側でその保留データ量が所定の第１レベルに達したとき、待機系における二重化データの書き込みを優先処理させるオーバーフローの回避制御を行なうことを特徴とする二重化データ一致化方法。
【請求項２】
請求項１において、前記回避制御は、前記保留データ量が所定の第２レベルに達したとき、常用系主メモリの前記所定領域への書き込みを抑止処理させることを特徴とする二重化データ一致化方法。
【請求項３】
請求項１または２において、前記抑止処理は、前記バッファの空きが所定量を回復するまで、ＣＰＵやＩＯコントローラによる常用系主メモリの書き込みをウェイトさせることを特徴とする二重化データ一致化方法。
【請求項４】
請求項２または３において、前記抑止処理は、前記バッファの空きが所定量を回復するまで、前記バッファ側から主メモリへの空読みを行なわせることを特徴とする二重化データ一致化方法。
【請求項５】
請求項１〜４のいずれか１項において、前記バッファのオーバーフローが発生した場合は、常用系のＣＰＵが自系のバッファ側における処理を無効化するインタラプト処理を行なうことを特徴とする二重化データ一致化方法。
【請求項６】
ＣＰＵ、主メモリ、ＩＯコントローラ及びこれらの三叉路接続を行うＣＰＵブリッジからなる二つの制御装置を系間バスで接続し、一方を常用系、他方を待機系としてＩＯ制御を行ないながら、常用系の主メモリの所定領域（共有メモリ領域）に書き込まれるデータを待機系に転送し、待機系で書き込みして一致化処理し、常用系に故障が発生した場合に待機系に制御処理を切り換える二重化制御装置において、
前記制御装置は、ＣＰＵブリッジと主メモリを接続する信号線から分岐したスヌープのための分岐信号線、常用系の場合に主メモリの前記所定領域に書き込まれるデータを前記分岐信号線を通じてスヌープし、バッファに一時記憶する多段バッファを含むバッファ制御手段と、常用系と待機系の間の送受信を行なう通信手段と、待機系の場合にスヌープを完了してから受信した前記データをＣＰＵブリッジと接続するＩＯインタフェースバスを介して自系の主メモリに常用系とは別のタイミングで書き込むインターフェース制御手段を含む二重化データ一致化装置を備え、
前記二重化データ一致化装置は、ＩＯインタフェースバスのバスアクセス権を制御するアービタを有し、
前記バッファ制御手段は、前記多段バッファのラッチ段数が所定段数に達したときにオーバーフローを予告するオーバーフロー予告機能を有し、
常用系から前記予告を受けたときに、待機系のアービタは自系のインターフェース制御手段に対し、ＩＯインターフェースバスのバスアクセス権を優先的に確保させることを特徴とする二重化制御装置。
【請求項７】
請求項６において、前記二重化データ一致化装置は、ＩＯインタフェースバスのバスアクセス権を制御するアービタとＣＰＵのアクセス要求または許可を抑止制御するアクセス制御手段を有し、
前記バッファ制御手段は、前記多段バッファのラッチ段数が高レベルの所定段数に達したときに、オーバーフローを警告するオーバーフロー予告機能を有し、
前記警告を受けたときに、常用計のアクセス制御手段は自系のＣＰＵのアクセスを抑止制御し、常用系のアービタは自系のＩＯコントローラにバスアクセス権を許可しないことを特徴とする二重化制御装置。
【請求項８】
請求項７において、ＣＰＵとバスブリッジ間におけるバス要求または許可のための信号線にスイッチ手段を設け、前記アクセス制御手段によってオン／オフすることを特徴とする二重化制御装置。
【請求項９】
請求項７または８において、前記警告を受けたときに、常用系のアービタは自系のインターフェース制御手段にＩＯインタフェースバスのバスアクセス権を優先的に獲得させ、該インターフェース制御手段から自系の主メモリに対する空読みを行なわせることを特徴とする二重化制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は二重化制御装置に関し、特に常用系と待機系の二重化データの一致化方式に関する。
【０００２】
【従来の技術】
常用系と待機系を備える二重化制御装置は、例えば、特開平２−２７７１５９号（以下、引用例１）に記載のように、Ｉ／Ｏコントローラが接続されるＩ／Ｏインタフェースバス上に情報転送用のＦＩＦＯバッファと他系への伝送制御部を持たせ、ＣＰＵから書き込みを行い、その書き込まれたアドレスとデータを他系に転送する方式が一般的である。
【０００３】
また、特開平３−１４８７３７号（以下、引用例２）に記載のように、ＣＰＵとメモリを接続する装置に、ＣＰＵからメモリへのライトをスヌープする機能を持たせて他系へ転送させる方式、特開平４−１１６７４４号（以下、引用例３）に記載のように、補助記憶装置への書き込みデータをバッファリングするバス制御装置を設ける方式などがある。
【０００４】
【発明が解決しようとする課題】
上記した従来の二重化制御構成方式には以下のような問題点がある。引用例１の方式では、ＣＰＵがＦＩＦＯバッファに書き込みを行う際に、バッファがオーバフローしないか確認しながら行っているため、ＣＰＵ負荷が増大する。また、ＦＩＦＯバッファがオーバフローしそうな時は、ＣＰＵが待たされるので実行効率が悪くなる。
【０００５】
引用例２の方式では、ＣＰＵとメモリを接続する装置にスヌープ機能をもたせる事により、ＣＰＵ負荷への影響は回避できる。しかし、メモリへのライト間隔時間が転送装置のスループットを越えないように、メモリライトのタイミングを考慮してアプリケーションプログラムを作成する必要があった。また、連続した書き込みが発生により転送用の多段バッファがオーバフローしないように、安全を見て必要以上にバッファ段数を多くしたり、転送装置のスループットを上げる必要があるため、コスト高となる。また、ＣＰＵとメモリを接続する装置として、スヌープ機能と転送機能を併せもつ専用装置が必要となり、この面からもコスト高となる。
【０００６】
引用例３の制御方式では、一般には主記憶に対し低速な補助記憶となるため、ＣＰＵの書き込みは主記憶からの転送終了通知をもって処理完了としているが、バス制御装置の使用中フラグは補助記憶へのデータ格納が終了するまでクリアされず、この間は主記憶、補助記憶へのアクセスはできない。このため、ＣＰＵは使用中フラグのクリアを確認しながら、書き込み処理を行わなければならない。
【０００７】
本発明の目的は、従来技術の問題点を克服し、アプリケーションプログラム作成でメモリコピーのタイミングを考慮する必要がなく、また、安上がりで実行効率の高い二重化データ一致化方法および二重化制御装置を提供することにある。
【０００８】
【課題を解決するための手段】
本発明は、ＣＰＵとメモリを接続する装置は、三叉路接続を行うＣＰＵブリッジなどの従来構成のままとし、Ｉ／Ｏインタフェースバス上にある他系への伝送制御部に、ＣＰＵからメモリへのライトをスヌープする機能を持たせることに着想してなされたものである。
【０００９】
上記課題を達成する本発明の二重化データ一致化方法は、常用系の主メモリの所定領域に書き込まれるデータをリアルタイムに待機系に転送し、書き込み、常用系で故障が発生した場合に待機系に処理を切り換える二重化処理装置において、前記主メモリに書き込まれるデータをスヌープしてバッファにラッチしながら待機系に転送する際に、前記バッファ側でその保留データ量に応じてオーバーフローの回避制御を行なうことを特徴とする。
【００１０】
前記回避制御は、前記保留データ量が所定の第１レベルに達したとき、待機系における二重化データの書き込みを優先処理させることを特徴とする。
【００１１】
または、前記保留データ量が所定の第２レベルに達したとき、常用系主メモリの前記所定領域への書き込みを抑止処理することを特徴とする。
【００１２】
あるいは、前記回避制御は、所定の第１レベルに達したとき待機系における二重化データの書き込みを優先処理させ、第１レベルより上の第２レベルに達したとき、常用系の主メモリへの書き込みを抑止する二段階制御を特徴とする。
【００１３】
前記抑止処理には、前記バッファの空きが所定量を回復するまで、ＣＰＵやＩＯコントローラによる常用系主メモリの書き込みをウェイトさせること、または、前記バッファ側から主メモリへの空読みを行なわせること、あるいは、前者と後者を共用することを特徴とする。
【００１４】
前記回避制御にもかかわらず、前記バッファのオーバーフローが発生した場合は、常用系のＣＰＵが自系のバッファ側における処理を無効化するインタラプト処理を行なうことを特徴とする。
【００１５】
上記一致化方法を適用する本発明の二重化制御装置は、ＣＰＵ、主メモリ、ＩＯコントローラ及びこれらの三叉路接続を行うＣＰＵブリッジからなる二つの制御装置を系間バスで接続し、一方を常用系、他方を待機系としてＩＯ制御を行ないながら、常用系の主メモリの所定領域（共有メモリ領域）に書き込まれるデータを待機系に転送し、書き込みして一致化処理し、常用系に故障が発生した場合に待機系に制御処理を切り換えるものにおいて、前記制御装置は、ＣＰＵブリッジと主メモリを接続する信号線から分岐したスヌープのための分岐信号線、常用系の場合に主メモリの前記所定領域に書き込まれるデータを前記分岐信号線を通じてラッチする多段バッファを含むバッファ制御手段と、常用系と待機系の間の送受信を行なう通信手段と、待機系の場合に受信した前記転送データをＣＰＵブリッジと接続するＩＯインタフェースバスを介して自系の主メモリに書き込むインターフェース制御手段を有する二重化データ一致化装置を備えることを特徴とする。
【００１６】
前記二重化データ一致化装置は、ＩＯインタフェースバスのバスアクセス権を制御するアービタを有し、前記バッファ制御手段は、前記多段バッファのラッチ段数が所定段数に達したときにオーバーフローを予告するオーバーフロー予告機能を有し、常用系から前記予告を受けたときに、待機系のアービタは自系のインターフェース制御手段に対し、ＩＯインタフェースバスのバスアクセス権を優先的に獲得させることを特徴とする。
【００１７】
または、前記二重化データ一致化装置は、ＩＯインタフェースバスのバスアクセス権を制御するアービタとＣＰＵのアクセス要求または許可を抑止制御するアクセス制御手段を有し、前記バッファ制御手段は、前記多段バッファのラッチ段数が高レベルの所定段数に達したときに、オーバーフローを警告するオーバーフロー予告機能を有し、前記警告を受けたときに、常用計のアクセス制御手段は自系のＣＰＵのアクセスを抑止制御し、常用系のアービタは自系のＩＯコントローラにバスアクセス権を許可しないことを特徴とする。
【００１８】
前記制御装置におけるＣＰＵとバスブリッジ間におけるバス要求または許可のための信号線にスイッチ手段を設け、前記アクセス制御手段によってオン／オフすることを特徴とする。
【００１９】
前記高レベルのラッチ段数に達して警告を受けたときに、常用系のアービタは自系のインターフェース制御手段にＩＯインタフェースバスのバスアクセス権を優先的に獲得させ、該インターフェース制御手段から自系の主メモリに対する空読みを行なわせることを特徴とする。
【００２０】
本発明によれば、ＩＯインタフェースバスと接続する二重化データ一致化装置によって、常用系における主メモリへのデータ書き込みをスヌープして転送データを取得し、ＣＰＵの処理とは分離して待機系への転送やオーバーフロー回避処理を行なうので、ＣＰＵ側で転送タイミングなどを考慮する必要が無く、アプリケーションプログラムの作成が容易になるとともに、ＣＰＵの実行効率が向上できる。
【００２１】
また、バッファのオーバーフロー回避は、ラッチ段数が低レベル（例えば１／２）のしきい値に達したときは待機系での転送データ書き込みを優先処理させ、高レベル（例えば３／４）のしきい値に達したときは常用系の書き込みを抑止する２段階で行ない、早期の前段処理では常用系の制御動作に全く影響を与えずにラッチ量を低減し、それでも書き込み処理が連続してオーバーフローが必至となると確実にオーバーフローを防止する後段処理を実行するので、二重化データ一致化処理の連続性を維持し、信頼性の高い二重化制御装置を提供できる。
【００２２】
さらに、高レベルに達したとき処理中の終了を待って書き込みを抑止するので、必要な多段バッファの段数は高レベルの段数に、１処理単位による書き込みデータ量をラッチする段数を加えて、最適な段数を決定できる。
【００２３】
【発明の実施の形態】
以下、本発明の一実施の形態を図面を参照しながら詳細に説明する。
【００２４】
図２は、一実施形態による二重化制御システムの構成図である。常用系制御装置８１と待機系制御装置８２は、系間バス５６で接続されて二重化制御装置を構成している。常用系制御装置８１は制御信号線１２により、待機系８２は制御信号線１３により、制御対象のＩＯ装置１１と接続している。
【００２５】
常用系８１及び待機系８２は対照的な構成で、通常は常用系８１で制御し、常用系８１に障害が発生した場合、待機系８２に切り換えて制御を続行する。切り換え時の処理を継続するために、待機系８２において常用系８１のデータを引き継ぐ必要がある。本構成では、常時、常用系８１から待機系８２へ系間バス５６を介してデータを転送して一致化することにより、切り換え前後の処理を継続できる。
【００２６】
常用系制御装置８１は、２台のＣＰＵＡ１及びＣＰＵＢ２、主メモリ４、ＣＰＵバスブリッジ３、ＩＯコントローラ８からなる処理系に、リクエストサプレス回路６，７と、二重化データ一致化装置５を設けた構成である。ＩＯ装置１１の制御はＩＯコントローラ８を介して接続される。
【００２７】
二重化データ一致化装置５には、どちらの系が常用系になるか待機系になるかを決める機能があり、系間バス５６を介して二重化制御装置の立上げ時に決定される。ここでは、制御装置８１が常用系として起動するものとする。常用系と待機系の切り換え時のデータ引き継ぎに備え、常用系８１の二重化データ一致化装置５から待機系８２の二重化データ一致化装置５へ、系間バス１００を介して常時、データが転送されている。
【００２８】
転送するデータは、次のようにして得られる。常用系８１の主メモリ４のアドレス範囲に於て、切り換え時に処理系が引き継ぐのに必要な情報を得る為の特別なアドレス範囲を予め決めておき、その範囲を二重化データ一致化装置５に設定する。ＣＰＵＡ１、ＣＰＵＢ２及びＩＯコントローラ８の各々は処理中に、引き継ぎに必要なデータが発生した場合、主メモリ４の特定アドレス範囲にライトする。このライト動作はＣＰＵバスブリッジ３を介して行われる。この主メモリ４へのライト動作に於て、二重化データ一致化装置５は主メモリ４への信号線３０を分岐させた信号線３０’を介してスヌープしており、主メモリ４の特定アドレス範囲へのライト動作時、そのデータをスヌープにより取り込み、多段バッファにラッチしながら待機系８２へ転送する。
【００２９】
待機系８２の二重化データ一致化装置５は、受信したデータをＩＯインタフェースバス９を介し、常用系主メモリ４と同じ特定アドレス範囲にライトを行う。このライト動作はＣＰＵバスブリッジ３を介して行われ、ＩＯコントローラ８がＩＯインタフェースバス９を介して主メモリ４にアクセスするのと同じ、通常のトランザクションである。
【００３０】
図１は、二重化制御システムにおける各系の制御装置の詳細な構成図である。制御装置の構成は常用系と待機系で同じになる。ＣＰＵバスブリッジ３と主メモリ４は、信号線３０を介して接続される。主メモリ４は、２つのＤＲＡＭモジュールによる主メモリＡ４１、主メモリＢ４２からなる。信号線３０は、２つのメモリに共通に入力するメモリアドレス３１、メモリデータ３２、ＣＡＳ３３、ＷＥ３４と、主メモリＡ４１に入力するＲＡＳＡ３５、主メモリＢ４２に入力するＲＡＳＢ３６からなる。ＣＡＳは列アドレスストローブ、ＲＡＳは行アドレスストローブである。
【００３１】
さらに、信号線３０を分岐し、二重化データ一致化装置５に入力する分岐信号線３０’を設けている。信号線３０や分岐信号線３０’がアクセス（駆動）の対象となることはない。このため、ＣＰＵバスブリッジ３は、二重化データ一致化装置５の存在を意識せずに、主メモリ４にアクセスすることができる。
【００３２】
二重化データ一致化装置５は、ＩＯインタフェースバス９に接続されるデバイスのリクエスト制御を行うアービトレーション部５１、ＣＰＵＡ１、ＣＰＵＢ２のアクセスをサプレスするアクセス制御部５２、主メモリ４の特定アドレス範囲へのライトデータを分岐信号線３０’を介して盗み読む（スヌープ）スヌープ部５３、スヌープしたデータなどを他系（自系が常用系のときは待機系）へ送信するとともに、他系（自系が常用系のときは待機系／自系が待機系のときは常用系）からの転送データなどを受信する送受信部５４、ＩＯインタフェースバス９と接続するインタフェース部５５からなる。
【００３３】
本構成に於て、ＣＰＵＡ１及びＣＰＵＢ２側からのアクセスは以下のように行なわれる。ＣＰＵＡ１が主メモリ４に対するアクセスを行う場合、バスリクエスト信号ＣＲＥＱＡ６１をアサートする。通常、リクエストサプレス回路６への制御信号線６９はアサートされており、ＣＰＵバスブリッジ３への出力信号ＣＢＲＥＱＡ６２はそのままアサートされる。このアサートに対し、ＣＰＵバスブリッジ３はＣＰＵＡ１に対しバスグラント信号ＣＢＧＮＴＡ７０をアサートし、ＣＰＵＡ１はトランザクションを開始する。
【００３４】
ＣＰＵＢ２のアクセスも同様に行われ、このバスグラント信号のアサートに於て、バスグラント信号ＣＢＧＮＴＡ７０及びＣＢＧＮＴＢ７１が同時にアサートされることはない。ＣＰＵＡ１のトランザクションがＩＯコントローラ８へのアクセス時、ＣＰＵバスブリッジ３はアービトレーション部５１に対しＩＯインタフェースバス９のバスリクエスト信号７２をアサートする。このアサートに対し、アービトレーション部５１はバスグラント信号７４をアサートし、ＣＰＵバスブリッジ３はＩＯコントローラ８へのアクセスを開始する。
【００３５】
ＩＯコントローラ８から主メモリ４へのアクセスは、ＩＯインタフェースバス９及びＣＰＵバスブリッジ３を介して行われる。ＣＰＵバスブリッジ３へのアクセス時、ＩＯコントローラ８は二重化データ一致化装置５のアービトレーション部５１に対しバスリクエスト信号７３をアサートし、アービトレーション部５１がバスグラント信号７５をアサートし、その確認後、ＩＯインタフェースバス９を介してＣＰＵバスブリッジ３へのアクセスを開始する。ＣＰＵバスブリッジ３は信号線３０を介し主メモリ４へのアクセスを行う。アービトレーション部５１はＣＰＵバスブリッジ３へのバスグラント信号７４及びＩＯコントローラ８へのバスグラント信号７５及びインタフェース制御部５５へのバスグラント信号７６への優先権を任意に設定できるように構成されている。
【００３６】
本構成においては、ＣＰＵＡ１、ＣＰＵＢ２及びＩＯコントローラ８が主メモリにライトするデータの内、待機系８２へ転送を行うデータを入力する特定アドレス範囲は、主メモリＢ４２に設定されている。スヌープ部５３は、主メモリＡ４１、主メモリＢ４２に共通に入力されるメモリアドレス３１、メモリデータ３２、ＣＡＳ３３、ＷＥ３４の他に、主メモリＢ４２のアクセスを示すＲＡＳＢ３６を入力する。そして、ＣＰＵＡ１、ＣＰＵＢ２またはＩＯコントローラ８から特定アドレス範囲、すなわち主メモリＢ４２にライトを行った場合、ＲＡＳＢ３６はアサートされ、ＲＡＳＡ３５はディアサートされる。
【００３７】
図３に、二重化制御部のスヌープ部の構成を示す。スヌープ部５３はカラムアドレスをラッチするためのメモリアドレスラッチ９５、待機系１０２に転送するカラムアドレス、ロードアドレスをラッチするためのメモリアドレス受信バッファ５８、メモリデータをラッチするためのメモリデータ受信バッファ５９、主メモリ４へのライトが特定アドレス範囲であるか判定する転送アドレス判定部９２、バッファ５８及びバッファ５９のラッチ制御と、送信時の転送制御を行うメモリ受信バッファ制御部６０からなる。
【００３８】
ＣＰＵバスブリッジ３から主メモリ４Ｂへデータライトする場合、信号線３０へのＲＡＳＢ３６、ＣＡＳ３３、ＷＥ３４の出力タイミングで、スヌープ部５３はメモリアドレス３１（ＭＥＭ＿ＡＤＤＲ）、メモリデータ３２（ＭＥＭ＿ＤＡＴＡ）をラッチする。
【００３９】
図４に、主メモリ４へのライトタイミング及びスヌープ部５３のラッチタイミングを示す。タイミングＴ１において、ＲＡＳＢ３６（ＲＡＳ＃）の立ち下がりでメモリアドレス３１（ＭＥＭ＿ＡＤＤＲ）をメモリアドレスラッチ９５にラッチする。このラッチされたアドレスはローアドレスを示す。次のＴ２タイミングにおいて、転送アドレス判定部９２はメモリアドレスラッチ９５の出力アドレス９４（ＭＥＭ＿Ｌ＿ＡＤＤＲ）が特定のアドレス範囲にあるか判定する。
【００４０】
図５は、転送アドレス判定部の構成を示す。転送アドレス判定部９２は、特定のアドレスを示すアドレスレジスタ９６及び、そのアドレス範囲の有効幅を示すアドレス範囲指定レジスタ９１、ＲＡＳＢ３６のタイミング用ＦＦ１０１、アドレス比較回路９７からなる。アドレスレジスタ９６には特定のアドレスが設定され、アドレス範囲指定レジスタ９１には特定アドレスの有効幅範囲が設定されている。
【００４１】
アドレス比較回路９７で、設定されている特定アドレス範囲とメモリアドレスラッチ９５の出力アドレス９４（ＭＥＭ＿Ｌ＿ＡＤＤＲ）の比較を行う。出力アドレス９４が特定アドレス範囲内であり且つ、ＲＡＳＢ３６のアサート時、転送アドレス判定部９２の出力信号９３（ＭＥＭＥＮ）が、タイミングＴ２の立上りにおいてアサートされる。これにより、メモリ受信バッファ制御部６０はタイミングＴ３のＣＡＳ３３の立ち下がりで且つ、ＷＥ３４がアサートされていれば、ＭＥＭ＿Ｌ＿ＡＤＤＲ９４及びメモリアドレス３１（ＭＥＭ＿ＡＤＤＲ）がメモリアドレス受信バッファ５８にラッチされる。このとき、メモリアドレス３１（ＭＥＭ＿ＡＤＤＲ）の値はカラムアドレスを示す。これと同時に、メモリデータ３２（ＭＥＭ＿ＤＡＴＡ）をメモリデータ受信バッファ５９にラッチし、スヌープを完了する。
【００４２】
なお、ＣＡＳ３３のみが連続してアサートされるページモードライトサイクルにおいても、転送アドレス判定部９２の出力信号９３（ＭＥＭＥＮ）はアサートされたままとなり、連続スヌープが可能となる。
【００４３】
ラッチされたスヌープデータは、バッファ５８、５９から内部バス６７を介して、メモリ受信バッファ制御部６０に制御されて送受信部５４に転送され、待機系１０２に送出される。バッファ制御部６０は、データ転送要求信号ＷＲＥＱ１４及びデータ転送完了信号ＷＥＮ１５でタイミングをとりながら、待機系１０２への送出を制御する。
【００４４】
送受信部５４は、自系の動作状態（常用／待機）に応じて送信又は受信を行う双方向Ｉ／Ｏバッファを有し、スヌープ部５３から内部バス６７を介して転送されるアドレス及びデータをバッファリングし、他系の送受信部５４と調歩をとりながら他系へのデータ送信を行う。また、他系の送受信部５４から受信したアドレスとデータをバッファリングしながら、内部バス９８を介してインターフェース制御部５５に転送する。
【００４５】
待機系のインターフェース制御部５５は、常用系でスヌープしたアドレスとデータを受信すると、ＩＯインタフェースバス９を介して、受信データを主メモリ４の該当アドレスに書きこむ。このために、インターフェース制御部５５は、アービトレーション部５１に対しバスリクエスト信号７７をアサートし、アービトレーション部５１がバスグラント信号７６をアサートしたのを確認して、主メモリ４の特定のアドレス範囲へ受信データのライトを行う。
【００４６】
ところで、主メモリ４の特定アドレス範囲へのライトが連続して、待機系８２への転送スループットが主メモリのライトタイミングが追いつかない場合に、ラッチされる多段バッファの段数が増加する。他系への転送間隔が主メモリライト間隔より短かければ、一時的に多段バッファに多くラッチされても、全体としてはデータは他系へ転送されていく。しかし、待機系のインタフェース制御部５５から主メモリ４へのライトに於て、ＩＯインタフェースバス９のバスアクセス権が思うように取得できない場合、あるいは特定アドレス範囲へのライトが連続して多発した場合に、多段バッファのオーバフローを引き起こすことがある。
【００４７】
本実施形態では、多段バッファがオーバフローする前に、２段階に分けてオーバーフローの回避制御を行う。第１段階の制御として、待機系８２への転送バス５６のスループットが十分にあり、待機系８２に於て受信データを主メモリ４にライトするスループットが遅い場合、アービトレーション部５１では優先して主メモリ４へのライトが行えるよう制御する。それでもオーバフローしそうな時、第２段階の制御として、常用系８１におけるＣＰＵＡ１、ＣＰＵＢ２またはＩＯコントローラ８から主メモリ４へのライトを抑止する。
【００４８】
このオーバーフロー回避制御のために、メモリ受信バッファ制御部６０は、データスヌープ時にインクリメントし、ＷＥＮ１５アサート時にデクリメントするカウンタを備え、スヌープデータ量に応じた多段バッファのラッチ段数をカウントする。
【００４９】
常用系のバッファ制御部６０はオーバフローが予測される場合、例えば、カウンタの値がバッファ５９の段数の半分に達したときは、第一段階として待機系１０２のアービトレーション部５１に対し、オーバーフローの予告信号ＢＵＦＡＤＶ９９をアサートする。ＢＵＦＡＤＶ９９を受信した待機系１０２のアービトレーション５１は、受信データを主メモリ４へライトを行うインタフェース制御部５５のバスリクエスト７７に対し、優先してバス権が得られるようにアービトレーション処理を行う。これにより、待機系１０２に於けるスループットの向上が期待でき、常用系のスヌープ部５３のメモリ受信バッファ５９のオーバフローを回避、または遅らすことができる。
【００５０】
それでも、メモリ受信バッファがオーバフローしそうな場合、例えば、カウンタの値がバッファ５９の段数の３／４に達したとき、常用系のバッファ制御部６０は第２段階の制御として、ＢＵＦＦＵＬ５７を自系のアクセス制御部５２にアサートする。アクセス制御部５２はＢＵＦＦＵＬ５７を受け取ると、リクエストサプレス回路６及び７に対し制御信号線ＢＣＮＴＡ６９、ＢＣＮＴＢ６６をディアサートする。リクエストサプレス回路６及び７はたとえＣＰＵＡ１、ＣＰＵＢ２がＣＰＵバスリクエスト信号ＣＲＥＱＡ６１、ＣＲＥＱＢ６４をアサートしていても、ＣＰＵバスブリッジ３への出力信号ＣＢＲＥＱＡ６２、ＣＢＲＥＱＢ６５をディアサートすることにより、ＣＰＵアクセスをサプレスする。なお、ＣＰＵバスリクエスト線ではなく、ＣＰＵバスグラント線７０，７１をディアサートするようにしてもよい。
【００５１】
また、アービトレーション部５１はＢＵＦＦＵＬ信号５７を受け取ると、ＣＰＵバスブリッジ３のバスリクエスト信号７２及びＩＯコントローラ８のバスリクエスト信号７３に対しグラント信号７４及び７５をアサートしないので、ＩＯコントローラ８からのアクセスが抑止される。
【００５２】
上記したように、常用系のアービトレーション部５１、アクセス制御部５２、インタフェース制御部５５の動作により、主メモリ４へのＣＰＵ１，２やＩＯコントローラ８からのアクセスがサプレスされて、メモリ受信バッファ５８，５９のラッチ段数が減少へと向かうので、オーバーフローが回避できる。なお、第二段階の制御によるサプレスは、メモリ受信バッファに余裕ができるまで、例えば、バッファ段数の二分の一が回復するまで継続される。
【００５３】
図６に、本例で付加したリクエストサプレス回路の構成を示す。同図（ａ）に示すように、リクエストサプレス回路６は、ＣＰＵＡ１のバスリクエストを入力する信号線ＣＲＥＱＡ６１、モススイッチ６８、２重化制御部５のアクセス制御部５２よりモススイッチ６８への制御信号を入力する信号線ＢＣＮＴＡ６９、モススイッチ６８からＣＰＵバスブリッジ３に対しバスリクエストを出力する信号線ＣＢＲＥＱＡ６２からなる。リクエストサプレス回路７も同様に構成されている。
【００５４】
アクセス制御部５２より制御信号ＢＣＮＴＡ６９がディアサートされた場合、モススイッチ６８はオフとなる。信号線６２は抵抗７７を介した電源Ｖｃｃにより、ハイ（Ｈ）レベルとなり、ＣＰＵバスブリッジ３に対しディアサート状態となる。なお、このリクエストサプレス回路によるリクエストサプレス期間は、従来アプリケーションが他系へのスループットを計算して作成していたウエイト期間に相当し、本回路の不可によってＣＰＵの実行効率が低下することはない。
【００５５】
同図（ｂ）は、リクエストサプレス回路６をＮＡＮＤ１０２とＩＮＶＥＲＴＥＲ１０３により論理構成した場合を示す。（ａ）の場合と同様に、制御信号線ＢＣＮＴＡ６９がアサートされているときは、ＣＰＵＡ１のバスリクエスト信号ＣＲＥＱＡ６１のアサート、ディアサートをそのままＣＢＲＥＱＡ６２に伝え、制御信号線ＢＣＮＴＡ６９がディアサートされているときは、ＣＰＵＡ１のバスリクエスト信号ＣＲＥＱＡ６１の状態に係わらずディアサート状態となる。
【００５６】
ところで、上記した第二段階制御のサプレス方式では、データ二重化に関係のないアクセスを全て抑止してしうので、ＣＰＵの使用効率からは十分とは言えない。そこで、ＣＰＵＡ１、ＣＰＵＢ２、あるいはＩＯコントローラ８からのアクセスタイプ信号を二重化データ一致化装置５に取り込み、メモリアクセスのタイプを判定し、ライトアクセスのみを抑止するようにしてもよい。さらには、主メモリ４のデータ二重化に関係のある特別なデータ範囲、上記の例では主メモリＢ４２へのライトアクセスのみを抑止するようにしてもよい。
【００５７】
本実施形態における第二段階制御のサプレス方式は、上記のＣＰＵやＩＯコントローラからのアクセス抑止ではなく、二重化データ一致化装置５から主メモリ４対してデータ二重化に影響を与えないアクセス、例えばデータ空読みを継続させる方法によってもよい。すなわち、アービトレーション部５１はＢＵＦＦＵＬ信号５７を受信すると、インタフェース制御部５５に対しグラント信号７６を優先的にアサートし、インタフェース制御部５５からメモリ４に対する空読みを行うように、ＣＰＵバスブリッジ３にリード動作を行う。これにより、主メモリ４へのアクセスパスを閉塞することになり、結果的にＣＰＵＡ１、ＣＰＵＢ２、あるいはＩＯコントローラ８からのアクセスを抑止できる。
【００５８】
あるいは、上記したＣＰＵのサプレス方式を、二重化データ一致化装置５によるデータ二重化に影響を与えないアクセスにより補完するようにしてもよい。これによれば、ＩＯインタフェース９上のデバイスがＣＰＵバスブリッジ３に対しリード又はライトのリクエストを行わない場合、ＣＰＵバスブリッジ３がＣＰＵＡ１、ＣＰＵＢ２に対してグラント信号ＣＢＧＮＴＡ７０、ＣＢＧＮＴＢ７１をアサートするように構成されている場合にも、ＣＰＵＡ１、ＣＰＵＢ２による主メモリ４へのアクセスを、確実にサプレスすることができる。
【００５９】
以上のような二段階のオーバーフロー回避制御にも係わらず、ハードウェアバグまたはソフトウェアバグによりメモリ受信バッファがオーバフローした場合、メモリ受信バッファ制御部６０はバッファオーバフロー信号ＢＵＦＯＶＦ１６をインタフェース制御部５５にアサートする。
【００６０】
図７に、インタフェース制御部のエラー要因を保持する状態レジスタの構成を示す。本実施形態のインタフェース制御部５は、ＩＯ処理状態レジスタ１８及び２重化処理状態レジスタ１９を持っている。レジスタ１８，１９の各ビットにエラー要因を保持している。ＯＲ回路２０を介してインタラプト信号ＩＮＴ１７を発生し、致命的なエラー要因に関しては、ＣＰＵによるインタラプト処理を行なうように構成している。
【００６１】
スヌープ部５３のバッファのオーバーフローで、ＢＵＦＯＶＦ１６信号が発生すると、インタフェース制御部５５は、ＢＵＦＯＶＦ１６を２重化処理状態レジスタ１９にラッチし、次のクロックタイミングでインタラプト信号１７をアサートする。このとき、エラー要因が２重化制御部５内である為、ＣＰＵが直ちに動作できるように、ＢＵＦＦＵＬ５７はディアサートされ、アクセス制御部５２は制御信号線ＢＣＮＴＡ６９及びＢＣＮＴＢ６６をアサートし、アービトレーション部５１はインタフェース制御部５５の優先アクセスによる空読みをやめ、通常のアービトレーションに復帰する。その結果、リクエストサプレス回路６，７は再びオン状態になり、ＣＢＲＥＱＡ６２をアサートする。ＣＰＵＡ１はＣＰＵバスブリッジ３からＣＢＧＮＴＡ７０がアサートされたのを確認後、インタラプト処理のトランザクションを実行する。
【００６２】
ＣＰＵＡ１はオーバーフロー発生によるインタラプト処理に移行すると、ＣＰＵバスブリッジ３にＣＲＥＱＡ６１をアサートし、バスリクエストを行う。そして、インタフェース制御部５５の２重化処理状態レジスタ１９をリードし、その要因が２重化制御部５内の致命的要因であることを確認すると、２重化制御部５の無効化処理及び原因解析処理へと移行する。このインタラプト処理によって、ＩＯ処理トランザクションが中断されることなく、ＩＯ装置１１を監視、制御するシステム動作への影響はない。
【００６３】
図８は、本実施形態の二重化制御装置の動作の一例示すタイムチャートである。ＣＰＵ１が主メモリ４の特定アドレスに連続ライトを行っている場合に、第二段階のＢＵＦＦＵＬ５７がアサートされた場合の動作例を示す。
【００６４】
Ｔ１のタイミングでＢＵＦＦＵＬ＃がアサートされたとき、リクエストサプレス回路６，７の制御信号ＢＣＮＴＡ，Ｂがディアサートされ、モススイッチ６８の出力信号ＣＢＲＥＱＡ，Ｂがディアサートされる。モススイッチを切るタイミングは、ＣＰＵ１のトランザクション状態には無関係に行われる。
【００６５】
このとき、インタフェース部５５は主メモリ４を空読みするため、ＩＯインタフェースバス９のバスリクエスト信号７７をアサートし、アービトレーション部５１からバスグラント信号７６がアサートされた後、次のＴ２のタイミングからＣＰＵバスブリッジ３に対しアクセスを行う。
【００６６】
次のＴ３のタイミングで、ＣＰＵバスブリッジ３はＩＯインタフェースバス９からの要求を受け、また、ＣＰＵＡ１及びＣＰＵＢ２からのバスリクエスト信号６２、６５がディアサートされていることから、ＣＰＵバスグラント信号ＣＢＧＮＴＡ，Ｂをディアサートする。ＣＰＵバスブリッジ３がＣＰＵＡ１に１マシンサイクル前にグラント信号ＣＢＧＮＴＡ，Ｂを与えていた場合、リクエストサプレス回路６，７が切られると、ＣＰＵＡ１は１トランザクション実行後、引き続き主メモリに対してアクセス要求の有る場合は、Ｔ５のタイミングでＣＰＵウェイトに入る。
【００６７】
その後、Ｔ８のタイミングでＢＵＦＦＵＬがディアサートされ、モススイッチ６８の制御信号ＢＣＮＴＡがアサートされ、再びモススイッチ６８の出力信号ＣＢＲＥＱＡがアサートされる。このとき、インタフェース部５５は空読みを止め、Ｔ９のタイミングでＣＰＵバスブリッジ３がＣＰＵバスグラント信号ＣＢＧＮＴＡをアサートし、Ｔ１０のタイミングで次のトランザクションを再開する。
【００６８】
このＣＰＵ動作に対して、１トランザクション実行に於ける最長バースト長を決めてき、ＢＵＦＦＵＬがアサートされた時点でのメモリ受信バッファの段数をその最長バースト以上にしておけばオーバフローすることはなく、無駄なバッファの段数を付加する必要は無くなる。すなわち、オーバフローを回避するのに必要な最小限のバッファ容量が決定できる。なお、ハードバグまたはソフトウェアバグにより、１トランザクション実行に於ける最長バースト長を守ることができずにオーバフローが発生した場合は、上述のインタラプト処理が行なわれる。
【００６９】
【発明の効果】
本発明によれば、２重化データをスヌープによって二重化制御部のバッファにラッチアップして他系へと転送するので、二重化制御におけるオーバーフローの回避制御がＣＰＵやＩＯコントローラに関係無く実行できる。このため、ＣＰＵ側でのオーバーフロー監視が必要なく、実行効率が向上できる。また、アプリケーションプログラムの作成に際して、他系へのデータ転送能力を考慮する必要がないので、プログラム作成が容易になる。
【００７０】
また、本発明によれば、オーバーフローの可能性が予想できる段階では他系での処理を促進させるようにし、オーバーフローの可能性が必至と見られる段階では、自系でのメモリライトをサプレスするようにして、一挙に抑制することなく段階的な制御によって実行効率の低下を防止している。また、サプレス制御においては、実行中のトランザクションの終了を待ってＣＰＵ（またはコントローラ）ウエイトに移行することでバッファの余裕度を決定できるようにしているので、最小限のバッファ容量で２重化制御構成が可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態による片系の制御装置の構成を示すブロック図。
【図２】一実施形態による二重化制御装置のシステム構成を示すブロック図。
【図３】二重化データ一致化装置内のスヌープ部の構成図。
【図４】主メモリライト時の動作を示すタイミングチャート。
【図５】スヌープ部の転送アドレス判定部の構成図。
【図６】リクエストサプレス回路の構成図。
【図７】インタフェース制御部における処理状態レジスタとインタラプト信号発生回路の構成図。
【図８】オーバーフローの抑制制御を含む二重化制御装置の全体動作を示すタイミングチャート。
【符号の説明】
１…ＣＰＵＡ、２…ＣＰＵＢ、３…ＣＰＵバスブリッジ、４…主メモリ、５…二重化データ一致化装置、６，７…リクエストサプレス回路、８…ＩＯコントローラ、９…ＩＯインタフェースバス、１８…ＩＯ処理状態レジスタ、１９…２重化処理状態レジスタ、２０…ＯＲ回路、３０…信号線、３０’…分岐信号線、４１…主メモリＡ、４２…主メモリＢ、５１…アービトレーション部、５２…アクセス制御部、５３…スヌープ部、５４…送受信部、５５…インタフェース制御部、５８…メモリアドレス受信バッファ、５９…メモリデータ受信バッファ、６０…メモリ受信バッファ制御部、６８…モススイッチ、９１…アドレス範囲指定レジスタ、９２…転送アドレス判定部、９５…メモリアドレスラッチ、９６…アドレスレジスタ、９７…アドレス比較回路。
【図１】
0003862777.tif 000002
【図２】
0003862777.tif 000003
【図３】
0003862777.tif 000004
【図４】
0003862777.tif 000005
【図５】
0003862777.tif 000006
【図６】
0003862777.tif 000007
【図７】
0003862777.tif 000008
【図８】
0003862777.tif 000009