(57)【要約】【課題】ロックステップ方式の情報処理装置におけるいずれかの系にメモリエラーが発生した場合にも、ロックステップを外すことなく安定して動作する。【解決手段】プロセッサと、誤り検出・訂正機能を有するメモリとが含まれる複数系のＣＰＵモジュールがクロック同期して同一の処理を行うロックステップ方式の情報処理装置の、ＣＰＵモジュールが、自系のメモリから誤りが検出された場合に生成される第１の訂正情報を記憶し、生成された第１の訂正情報を他系のＣＰＵモジュールに送信し、他系のＣＰＵモジュールのメモリが誤りを検出した場合に送信される第２の訂正情報を受信し、他系のＣＰＵモジュールから第２の訂正情報を受信した遅延に応じて、記憶部に記憶されている第１の訂正情報を読み出し、第２の訂正情報と第１の訂正情報とを同期してエラー訂正処理を行う。【選択図】図１
2012073828.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、誤り検出・訂正機能を有するメモリとが含まれる複数系のＣＰＵモジュールがクロック同期して同一の処理を行うロックステップ方式の情報処理装置であって、
前記ＣＰＵモジュールは、
自系のメモリから誤りが検出された場合に生成される第１の訂正情報を記憶する記憶部と、
生成された前記第１の訂正情報を他系の前記ＣＰＵモジュールに送信する送信部と、
他系のＣＰＵモジュールのメモリが誤りを検出した場合に送信される第２の訂正情報を受信する受信部と、
前記他系のＣＰＵモジュールから前記第２の訂正情報を受信した遅延に応じて、前記記憶部に記憶されている前記第１の訂正情報を読み出し、前記第２の訂正情報と前記第１の訂正情報とを同期してエラー訂正処理を行う訂正同期部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記訂正同期部は、
前記他系のＣＰＵモジュールから前記第２の訂正情報が送信されてから、当該第２の訂正情報を自系の前記受信部が受信するまでの遅延クロック数を予め記憶し、前記記憶部に前記第１の訂正情報が記憶されてから、前記遅延クロック数分のクロック数が経過した際に、前記記憶部から前記第１の訂正情報を読み出して前記エラー訂正処理を行う
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記訂正同期部は、
前記遅延クロック数の入力を受付け、入力された遅延クロック数に応じて前記エラー訂正処理を行う
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
プロセッサと、誤り検出・訂正機能を有するメモリとが含まれる複数系のＣＰＵモジュールがクロック同期して同一の処理を行うロックステップ方式の情報処理装置の情報処理方法であって、
前記ＣＰＵモジュールが、
自系のメモリから誤りが検出された場合に生成される第１の訂正情報を記憶するステップと、
生成された前記第１の訂正情報を他系の前記ＣＰＵモジュールに送信するステップと、
他系のＣＰＵモジュールのメモリが誤りを検出した場合に送信される第２の訂正情報を受信するステップと、
前記他系のＣＰＵモジュールから前記第２の訂正情報を受信した遅延に応じて、前記記憶部に記憶されている前記第１の訂正情報を読み出し、前記第２の訂正情報と前記第１の訂正情報とを同期してエラー訂正処理を行うステップと、
を備えることを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多重化したコンピュータシステムにおいてメモリの誤り検出・訂正を行う技術に関する。
【背景技術】
【０００２】
プロセッサとメモリとを多重化して、複数系のコンピュータを並列して動作させるロックステップ方式のフォールトトレラントサーバ（ＦＴサーバ）のようなコンピュータ装置が利用されている（例えば、特許文献１）。
このような高可用性を求められるコンピュータ装置には、ＤＩＭＭ（Dual Inline Memory Module）やメモリコントローラによるメモリのＥＣＣ（Error-Correcting Code）１ビットエラー検出・訂正機能が搭載されたものがある。ソフトウェアによってこのような機能を有効にする事で、メモリアクセスにおいてＥＣＣ１ビットエラーを検出した場合、ハードウェアにおいて自動的に訂正する事が可能である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−９８９８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ロックステップ方式のＦＴサーバは、複数系のＣＰＵ（Central Processing Unit）モジュール（ＣＰＵ／メモリ／ノースブリッジにより構成される部分）が同一のクロックに同期して完全に同一の動作をする必要があり、片方の系のＣＰＵモジュールでハードウェアによるメモリのＥＣＣ１ビットエラー訂正機能が動作すると、各ＣＰＵモジュールの動作に差分が発生しロックステップが外れてしまう。このため従来のＦＴサーバでは、メモリのＥＣＣ１ビットエラーが検出された場合、エラーが発生したＣＰＵモジュールを一旦切離し、初期化した後で再度組み込んで二重化させるという処理を行っていた。このとき、エラーが発生したＣＰＵモジュールが切離されている間には二重化が解除されるため、ＦＴサーバとして求められる可用性が損なわれ、さらにハードウェアの故障が発生した際にシステムダウンとなるリスクが高くなっている場合があった。このような場合にも、ロックステップを外すことなく安定して動作することが望ましい。
【０００５】
本発明は、このような状況に鑑みてなされたもので、ロックステップ方式の情報処理装置におけるいずれかの系にメモリエラーが発生した場合にも、ロックステップを外すことなく安定して動作する情報処理装置、情報処理方法を提供する。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、本発明は、プロセッサと、誤り検出・訂正機能を有するメモリとが含まれる複数系のＣＰＵモジュールがクロック同期して同一の処理を行うロックステップ方式の情報処理装置であって、ＣＰＵモジュールは、自系のメモリから誤りが検出された場合に生成される第１の訂正情報を記憶する記憶部と、生成された第１の訂正情報を他系のＣＰＵモジュールに送信する送信部と、他系のＣＰＵモジュールのメモリが誤りを検出した場合に送信される第２の訂正情報を受信する受信部と、他系のＣＰＵモジュールから第２の訂正情報を受信した遅延に応じて、記憶部に記憶されている第１の訂正情報を読み出し、第２の訂正情報と第１の訂正情報とを同期してエラー訂正処理を行う訂正同期部と、を備えることを特徴とする。
【０００７】
また、本発明は、プロセッサと、誤り検出・訂正機能を有するメモリとが含まれる複数系のＣＰＵモジュールがクロック同期して同一の処理を行うロックステップ方式の情報処理装置の情報処理方法であって、ＣＰＵモジュールが、自系のメモリから誤りが検出された場合に生成される第１の訂正情報を記憶するステップと、生成された第１の訂正情報を他系のＣＰＵモジュールに送信するステップと、他系のＣＰＵモジュールのメモリが誤りを検出した場合に送信される第２の訂正情報を受信するステップと、他系のＣＰＵモジュールから第２の訂正情報を受信した遅延に応じて、記憶部に記憶されている第１の訂正情報を読み出し、第２の訂正情報と第１の訂正情報とを同期してエラー訂正処理を行うステップと、を備えることを特徴とする。
【発明の効果】
【０００８】
以上説明したように、本発明によれば、プロセッサと、誤り検出・訂正機能を有するメモリとが含まれる複数系のＣＰＵモジュールがクロック同期して同一の処理を行うロックステップ方式の情報処理装置の、ＣＰＵモジュールが、自系のメモリから誤りが検出された場合に生成される第１の訂正情報を記憶し、生成された第１の訂正情報を他系のＣＰＵモジュールに送信し、他系のＣＰＵモジュールのメモリが誤りを検出した場合に送信される第２の訂正情報を受信し、他系のＣＰＵモジュールから第２の訂正情報を受信した遅延に応じて、記憶部に記憶されている第１の訂正情報を読み出し、第２の訂正情報と第１の訂正情報とを同期してエラー訂正処理を行うようにしたので、ロックステップ方式の情報処理装置におけるいずれかの系のメモリに誤りが検出された場合にも、ロックステップを外すことなく安定して動作する情報処理装置、情報処理方法を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態による情報処理装置の構成を示すブロック図である。
【図２】本発明の一実施形態による訂正同期部とその周辺の構成を示すブロック図である。
【図３】本発明の一実施形態による情報処理装置の動作例を示すタイミングチャートである。
【図４】本発明の一実施形態による情報処理装置の動作例を示すタイミングチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の一実施形態について、図面を参照して説明する。
図１は、本発明による情報処理装置１００の構成を示すブロック図である。情報処理装置１００は、ＣＰＵクロックを同期させてハードウェアを二重化（ロックステップ）する方式のフォールトトレラント（ＦＴ）サーバである。情報処理装置１００は、ＣＰＵモジュール１−０およびＩＯモジュール５−０と、ＣＰＵモジュール１−１およびＩＯモジュール５−１とを備えている。ここでは、ＣＰＵモジュールとＩＯモジュールにより構成されるサーバを１セットとし、２セットのサーバを互いのＦＴ制御部で接続して１台のサーバ装置として機能する。このような２セットのサーバが、情報処理装置１００が備えるクロックが生成する同一のクロック信号に同期して同じタイミングで同じ動作（ロックステップ動作）をすることで、１箇所のハードウェア故障が発生しても２セットのモジュールのうち故障が発生していない他系のモジュールで動作を継続することで、システムダウンを回避することが可能である。ここで、ＣＰＵモジュール１−０が備える各部とＣＰＵモジュール１−１が備える各部、ＩＯモジュール５−０が備える各部とＩＯモジュール５−１が備える各部はそれぞれ同様の構成であるため、ＣＰＵモジュール１−０およびＩＯモジュール５−０を例として詳細に説明する。
【００１１】
ＣＰＵモジュール１−０は、プロセッサ２−０と、ノースブリッジ３−０と、メモリ４−０とを備えている。
ノースブリッジ３−０は、マザーボード上に設置され、コンピュータ内部の情報流通を制御するＬＳＩ（Large Scale Integration）チップであり、ルータ３０−０と、書き込みバッファ３１−０と、ＥＣＣ発生部３２−０と、メモリ制御部３３−０と、ＥＣＣ訂正部３４−０と、読み込みバッファ３５−０と、訂正同期部３６−０と、エラー訂正バッファ３７−０とを備えている。
【００１２】
ルータ３０−０は、プロセッサ２−０からのアクセスと、ＩＯモジュール５−０からのアクセスと、メモリ４−０からのアクセスとを調停する。
書き込みバッファ３１−０は、ルータ３０−０から出力されるメモリ４−０へのライトデータを一時的に記憶する。
ＥＣＣ発生部３２−０は、書き込みバッファ３１−０に記憶された、メモリ４−０へのライトデータに基づくＥＣＣビットを発生させ、ライトデータに付加する。
メモリ制御部３３−０は、メモリ４−０に対するアクセスを調停する。
【００１３】
ＥＣＣ訂正部３４−０は、メモリ４−０から読み出したリードデータのＥＣＣをチェックして、エラーが発生した場合にデータを訂正する。具体的には、ＥＣＣ訂正部３４−０は、メモリ４−０からのリード時にエラーを検出し、ＥＣＣ１ビットエラーが発生していた場合は、訂正後のリードデータを読み込みバッファ３５−０に出力すると同時に、ＥＣＣ１ビットエラー信号と、リードアドレスと、リードデータと、ＥＣＣビットとのデータを、訂正同期部３６−０に出力する。また、ＥＣＣ訂正部３４−０は、ＥＣＣ１ビットエラー信号を、他系の訂訂正同期部３６−１に出力する。
【００１４】
読み込みバッファ３５−０は、メモリ４−０から読み出したリードデータを一時的に記憶し、ルータ３０−０に出力する。
訂正同期部３６−０は、ＥＣＣ訂正部３４−０から出力される、メモリ４−０からのリード時のＥＣＣ１ビットエラー信号、リードアドレス、リードデータ、ＥＣＣビットに加え、他系のＥＣＣ訂正部３４−１から伝達されたＥＣＣ１ビットエラー信号を入力し、両系同じタイミングでＥＣＣ１ビットエラー訂正のアクセスを発生させる。
エラー訂正バッファ３７−０は、メモリ４−０に対するＥＣＣ１ビットエラー訂正アクセスを一時的に記憶する。
【００１５】
ＩＯモジュール５−０は、プロセッサ２−０上で動作するソフトウェアによってＩＯ機能が二重化制御され、他系のＩＯモジュール５−１においてハードウェア故障が発生した場合、ソフトウェアによってフェイルオ−バ−を行って正常なＩＯモジュールのみで動作できる様にすることで、システムダウンすることなく動作を継続させる。ＩＯモジュール５−０は、ＦＴ制御部５０−０と、ＩＯ部５１−０とを備えている。
【００１６】
ＦＴ制御部５０−０は、ＣＰＵモジュール１−０と他系のＣＰＵモジュール１−１とから出されるＩＯアクセスを比較してロックステップ動作が行われているかどうかを判断する。また、ＦＴ制御部５０−０は、ＩＯ部５１−０からのアクセスを同じタイミングでＣＰＵモジュール１−０とＣＰＵモジュール１−１とに行う様に制御する。
ＩＯ部５１−０は、ストレージやネットワーク等の一般的なコンピュータシステムの各種ＩＯ機能を実行する。
【００１７】
図２は、本実施形態による情報処理装置１００のＣＰＵモジュール１−０が有する訂正同期部３６−０の内部構成と、その周辺のブロックとの接続構成を示すブロック図である。上述したように、訂正同期部３６−１の内部構成および接続構成は、訂正同期部３６−０と同様である。
【００１８】
訂正同期部３６−０は、他系のＣＰＵモジュール１−１から訂正情報を受信した遅延に応じて、自系のＣＰＵモジュール１−０において生成された訂正情報を読み出し、ＣＰＵモジュール１−１の訂正情報とＣＰＵモジュール１−０の訂正情報とを同期してエラー訂正処理を行う。訂正同期部３６−０は、訂正同期バッファ３６０−０と、書き込みポインタ３６１−０と、読み込みポインタ３６２−０と、ＯＲ回路３６３−０とを備えている。
【００１９】
訂正同期バッファ３６０−０は、アドレスを指定して複数のデータを記憶するメモリであり、自系のメモリであるメモリ４−０から誤りが検出された場合に生成される訂正情報を記憶する。また、訂正同期バッファ３６０−０は、書き込みポインタ３６１−０によって示されるアドレスに入力信号の値を書込み、読み込みポインタ３６２−０によって示されるアドレスの値を読出して出力する。
ここで、書き込みポインタ３６１−０および読み込みポインタ３６２−０は、訂正同期バッファ３６０−０のアドレスを示す０から最大値までの値を出力し、リセット時に任意の値に設定されてリセット解除されるとクロック毎に１が加算されるカウンタである。値が訂正同期バッファ３６０−０のアドレスの最大値になった次のクロックで０に戻る。
【００２０】
ここで、訂正同期バッファ３６０−０に記憶されるデータは、ＥＣＣ訂正部３４−０から出力されるメモリ４−０のリードアクセスのアドレス（ｒ−ａｄｄｒｅｓｓ−０）と、リードされたデータ（ｒ−ｄａｔａ−０）と、リードされたＥＣＣビット（ｒ−ｅｃｃ−０）と、リードした値がＥＣＣエラーかどうかを示す信号（ｒ−ｅｒｒｏｒ−０）とである。ｒ−ｅｒｒｏｒ−０信号は、訂正同期バッファ３６０−０を通してｅｒｒｏｒ−０信号として出力され、ＣＰＵモジュール１−１内のＥＣＣ訂正部３４−１で生成されて伝達されてきた他系のメモリリードでＥＣＣ１ビットエラーが発生したかどうかを示す信号（ｒ−ｅｒｒｏｒ−１．ｘ）とＯＲ回路３６３−０でＯＲ演算され、両系のどちらかでメモリのＥＣＣ１ビットエラーが発生したことを示す信号（ｒｗ−ｅｒｒｏｒ−０）としてエラー訂正バッファ３７−０に入力される。訂正同期バッファ３６０−０から出力されたｒｗ−ａｄｄｒｅｓｓ−０信号、ｒｗ−ｄａｔａ−０信号、ｒｗ−ｅｃｃ−０信号は、そのままエラー訂正バッファ３７−０に入力され、エラー訂正バッファ３７−０はｒｗ−ｅｒｒｏｒ−０信号がハイレベルの時にｒｗ−ａｄｄｒｅｓｓ−０信号、ｒｗ−ｄａｔａ−０信号、ｒｗ−ｅｃｃ−０信号を有効値として取り込む。
【００２１】
ここで、訂正同期部３６−０に入力される他系のメモリのＥＣＣ１ビットエラーを示すｒ−ｅｒｒｏｒ−１．ｘ信号は、ＣＰＵモジュール１−０とＣＰＵモジュール１−１との間を跨いで伝達されるため、ＥＣＣ訂正部３４−１の出力から訂正同期部３６−０までの間に複数個のフリップフロップ（Ｆ／Ｆ）を介して入力される。これにより、エラーが検出されてから複数（ｘ）回のクロックの期間遅延したタイミングで入力される。一方、訂正同期部３６−０に入力される自系のメモリのＥＣＣ１ビットエラーを示すｒ−ｅｒｒｏｒ−０信号は、同じＣＰＵモジュールのノースブリッジ３−０内で伝達する信号のため間にＦ／Ｆが入らず、ＥＣＣ訂正部３４−０の出力がそのまま入力される。そこで、訂正同期部３６−０内の訂正同バッファ３６０−０を通してｒ−ｅｒｒｏｒ−１．ｘ信号と同じクロック回数の期間遅延したタイミングの信号であるｅｒｒｏｒ−０信号としてＯＲ回路３６３−０に入力される。
【００２２】
次に、図面を参照して、このような情報処理装置１００の動作例を説明する。
図３は、本実施形態による情報処理装置１００の動作の一例を示すタイミングチャートである。この例では、訂正同期バッファ３６０−０、訂正同期バッファ３６０−１の最大アドレスが７である。ここでは、他系のＥＣＣ訂正部３４−１から訂訂正同期部３６−０へのＥＣＣエラー信号を３つのＦ／Ｆを通して入力する例で、外部から入力される不論理の！ｒｅｓｅｔ信号がローレベルの時に書き込みポインタが３になり、読み込みポインタが０になる設定となっている。ｔ１−ｔ２のタイミングの間で！ｒｅｓｅｔ信号がハイレベルになると、ｔ２のタイミング以降のクロック信号の立ち上がりで書き込みポインタと読み込みポインタは１ずつカウントアップし、７の次は０に戻る。
【００２３】
この例では、ｔ４のタイミングからＥＣＣ訂正部３４−０（ＥＣＣ訂正部３４−０）よりメモリのリードアドレス／データ／ＥＣＣの有効出力が開始され、ｔ１５のタイミングで最後のリードアドレス／データ／ＥＣＣ信号が出力された後、ｔ１６以降はリードアドレス／データ／ＥＣＣ信号の有効出力が行われない。ｔ４のタイミングでリードアドレス／データ／ＥＣＣの値ｄ１が出力され、ｔ５のタイミングでリードアドレス／データ／ＥＣＣの値ｄ２が出力され、以下同様にデータが出力され、ｔ１５のタイミングでリードアドレス／データ／ＥＣＣの値ｄ１２が出力される。
【００２４】
この時、ＥＣＣ訂正部３４−０はｄ２、ｄ６、ｄ７のデータにＥＣＣ１ビットエラーを検出し、ｄ２、ｄ６、ｄ７の出力と同じタイミングでｒ−ｅｒｒｏｒ−０信号がハイレベルとなり、ＥＣＣ訂正部３４−１ではｄ３、ｄ１０でＥＣＣ１ビットエラーを検出してｄ３、ｄ１０の出力と同じタイミングでｒ−ｅｒｒｏｒ−１信号がハイレベルとなる例である。また、ＥＣＣ訂正部３４−０およびＥＣＣ訂正部３４−１においてＥＣＣ１ビットエラーが検出されなかった場合と、有効なリードアドレス／データ／ＥＣＣの値が出力されていない場合は、ｒ−ｅｒｒｏｒ−０信号とｒ−ｅｒｒｏｒ−１信号は共にローレベルとなる。
【００２５】
訂正同期バッファ３６０−０への入力信号であるＥＣＣ訂正部３４−０から出力されたリードアドレス／データ／ＥＣＣの値とＥＣＣ１ビットエラーを検出した事を示すｒ−ｅｒｒｏｒ−０信号とは、！ｒｅｓｅｔ信号がハイレベルの時にクロック信号の立ち上がりのタイミングで書き込みポインタ３６１−０によって示されるアドレスに記憶される。書き込みポインタ３６１−０が１周して以前出力したアドレスと同じになると、そのアドレスに以前書き込まれた値は上書きされる。図３の例では、ｔ５のタイミングで書き込みポインタ３６１−０が示すアドレス６の位置にＥＣＣ訂正部３４−０から出力される最初の有効なリードアドレス／データ／ＥＣＣの値ｄ１が記憶され、ｔ６のタイミングでアドレス７の位置にリードアドレス／データ／ＥＣＣの値ｄ２とＥＣＣ１ビットエラーを検出した事を示すｒ−ｅｒｒｏｒ−０のハイレベルの値が記憶され、ｔ１０、ｔ１１のタイミングでアドレス３、４の位置にｄ６、ｄ７およびｒ−ｅｒｒｏｒ−０のハイレベルの値が記憶される。
【００２６】
訂正同期バッファ３６０−０からは、読み込みポインタ３６２−０で示されるアドレスに記憶されたメモリのリードアドレス／データ／ＥＣＣの値およびＥＣＣ１ビットエラーが検出された事を示すｅｒｒｏｒ−０信号の値が読出されて出力される。図３の例では、ｔ７のタイミングで読み込みポインタ３６２−０が６となり、その後アドレス６に記憶された最初の有効なリードアドレス／データ／ＥＣＣの値ｄ１が出力される。ｔ８のタイミングの後ではリードアドレス／データ／ＥＣＣの値ｄ２とＥＣＣ１ビットエラーが検出された事を示すｅｒｒｏｒ−０のハイレベルの値が出力され、ｔ１２、ｔ１３のタイミングの後ではｄ６、ｄ７およびｅｒｒｏｒ−０のハイレベルの値が出力される。
【００２７】
一方、ＥＣＣ訂正部３４−１で検出されたｄ３、ｄ１０のＥＣＣエラーによって、ｔ６、ｔ１３のタイミングでｒ−ｅｒｒｏｒ−１信号がハイレベルになり、３つのＦ／Ｆによってｒ−ｅｒｒｏｒ−１．１信号、ｒ−ｅｒｒｏｒ−１．２信号, ｒ−ｅｒｒｏｒ−１．３信号として伝達され、訂正同期部３６−０に入力される。訂正同期部３６−０の中では、ｒ−ｅｒｒｏｒ−１．３信号がハイレベルとなるｔ９、ｔ１６のタイミングで訂正同期バッファ３６０−０からはｄ３、ｄ１０が出力され、他系のＥＣＣ訂正部３４−１がＥＣＣ１ビットエラーを検出したデータに一致する。
【００２８】
ｒ−ｅｒｒｏｒ−１．３信号とｅｒｒｏｒ−０信号はＯＲ回路３６３−０でＯＲ演算され、ＥＣＣ訂正部３４−０とＥＣＣ訂正部３４−１との両方のＥＣＣ１ビットエラー検出を含んだｒｗ−ｅｒｒｏｒ−０信号としてエラー訂正バッファ３７−０に入力され、クロック信号の立ち上がり時にｒｗ−ｅｒｒｏｒ−０信号がハイレベルになっているｔ９、ｔ１０、ｔ１３、ｔ１４、ｔ１７のタイミングで、ｒｗ−ａｄｄｒｅｓｓ−０信号、ｒｗ−ｄａｔａ−０信号、ｒｗ−ｅｃｃ−０信号の値ｄ２、ｄ３、ｄ６、ｄ７、ｄ１０がエラー訂正バッファ３７−０に取り込まれる。
【００２９】
ＣＰＵモジュール１−１内の訂訂正同期部３６−１では、逆に、ｒ−ｅｒｒｏｒ−０信号が３つのＦ／Ｆによって３クロックの期間遅延されてｒ−ｅｒｒｏｒ−０．３として訂訂正同期部３６−１に入力され、ｒ−ｅｒｒｏｒ−１信号とＥＣＣ訂正部３４−１から出力されたリードアドレス／データ／ＥＣＣの値が訂正同期バッファ３６０−１を通って３クロックの期間遅延され、ｒ−ｅｒｒｏｒ−０．３信号とｅｒｒｏｒ−１信号がＯＲ演算されたｒｗ−ｅｒｒｏｒ−１信号がｒｗ−ｅｒｒｏｒ−０信号と同じタイミングで動作して、ｒｗ−ａｄｄｒｅｓｓ−１信号、ｒｗ−ｄａｔａ−１信号、ｒｗ−ｅｃｃ−１信号の値ｄ２、ｄ３、ｄ６、ｄ７、ｄ１０がエラー訂正バッファ３７−１に取り込まれる。
【００３０】
以上の動作によって、どちらか一方のモジュールでＥＣＣエラーを検出しても、訂正処理を行うためのアクセスが両系同時にエラー訂正バッファ３７−０、エラー訂正バッファ３７−１に取り込まれるため、ＣＰＵモジュールがロックステップ動作を保ったままＥＣＣ１ビットエラー訂正を行うことができる。
【００３１】
図４は、本発明の他の実施形態による動作の一例を示すタイミングチャートである。この例は図３の例に比べて、他系のＥＣＣ訂正部３４−０から訂正同期部３６−０へのＥＣＣエラー信号を５つのＦ／Ｆを通して入力する事が異なっており、例えばノースブリッジの外やＣＰＵモジュール間でやり取りする信号の遅延調整のためにさらにＦ／Ｆを２つ追加することを想定した動作の例である。情報処理装置１００の構成は上記と同様である。
【００３２】
この例の場合、図３に対して、！ｒｅｓｅｔ信号がローレベルの時に書き込みポインタが５になる設定となっており、ＥＣＣ訂正部３４−０から出力された有効な値ｄ１はｔ５のタイミングで訂正同期バッファ３６０−０のアドレス０の位置に書き込まれ、以降アドレスがカウントアップされながらｔ１６のタイミングまでクロック毎に有効な値が書き込まれる。読み込みポインタは！ｒｅｓｅｔ信号がローレベルの時に図３の例と同様に０になる設定であるが、値ｄ１が出力されるのはｔ９のタイミングであり図３の例に対して２クロックの期間遅くなる。以降、ｄ２、ｄ３、・・・、ｄ１２およびメモリのＥＣＣ１ビットエラーを検出した事を示すｅｒｒｏｒ−０信号も同様に図３の例に比べて２クロック遅いタイミングで出力される。
【００３３】
また、他系のＥＣＣ訂正部３４−１から出力されたメモリのＥＣＣ１ビットエラーを検出したかどうかを示すｒ−ｅｒｒｏｒ−１信号は、５つのＦ／Ｆによってｒ−ｅｒｒｏｒ−１．１信号、ｒ−ｅｒｒｏｒ−１．２信号、ｒ−ｅｒｒｏｒ−１．３信号、ｒ−ｅｒｒｏｒ−１．４信号、ｒ−ｅｒｒｏｒ−１．５信号として伝達されるため、ｅｒｒｏｒ−０信号と同様に図３の例に比べて２クロック遅いタイミングで訂正同期部３６−０に入力される。
【００３４】
自系／他系共に２クロック遅いタイミングとなるが、どちらか一方のモジュールでＥＣＣエラーを検出しても、訂正処理を行うためのアクセスが両系同時にエラー訂正バッファ３７−０とエラー訂正バッファ３７−１とに取り込まれ、ＣＰＵモジュールがロックステップ動作を保ったままＥＣＣ１ビットエラー訂正を行うことができる。この様にして、ノースブリッジ外部で他系のＥＣＣ１ビットエラーを検出したかどうかを示す信号のタイミングが変化しても、ノースブリッジ内部の論理は！ｒｅｓｅｔ信号がローレベルの時の書き込みポインタ／読み込みポインタの設定値を変えるだけで対応が可能となる。すなわち、情報処理装置１００には、このようなポインタの設定値の入力を受付け、入力された設定値を自身の記憶領域に記憶し、この設定値を遅延クロック数としてエラー訂正処理を行うことができる。
【００３５】
以上説明したように、本実施形態の情報処理装置１００は、メモリアクセスにおいて片系でＥＣＣ１ビットエラーが発生しても、ロックステップを外すことなくエラー訂正できる事を特徴としている。すなわち、複数系の各ＣＰＵモジュールにあるノースブリッジ内に、メモリのＥＣＣ１ビットエラーを検出した事を示す信号と訂正に必要な情報を一時的に記憶するＥＣＣ訂正同期部（訂正同期部３６−０、訂正同期部３６−１）を設け、ＥＣＣ訂正同期部にＦＴサーバにおける他系のＥＣＣ１ビットエラーを検出したことを示す信号を入力して、両系のどちらかでメモリのＥＣＣ１ビットエラーが発生した場合、両系のタイミングを合わせてＥＣＣ１ビットエラー訂正のためのメモリ書込み処理を行うことで、ロックステップを維持したままメモリのＥＣＣ１ビットエラーの訂正を行うものである。
【００３６】
これによれば、情報処理動作を二重化した状態のままＥＣＣ１ビットエラー訂正が可能になるため、ＥＣＣ１ビットエラーが発生してもシステムの可用性を維持する事が可能となり、従来のＦＴサーバに対して可用性を高める事ができる。
また、本発明による構成によって、ノースブリッジの外部端子やＣＰＵモジュール間に追加する信号はＥＣＣ１ビットエラーを示す信号の入力／出力各１本の計２本のみであり、必要となるコストを抑えて上記効果を得ることができる。
なお、本実施形態の情報処理装置１００は、高可用性を求められる領域においてクロック同期させてプロセッサやメモリを二重化する装置に適用できるため、ＦＴサーバだけでなく他のコンピュータ装置やネットワーク機器、組込み向け装置等の、高可用性を求められる情報処理装置に適用できる。
【００３７】
以上、本発明の実施形態について説明した。本実施形態による各機能部は、専用の回路、ハードウェア（例えば、ワイヤードロジック等）により実現されるが、メモリおよびＣＰＵ（中央処理装置）により構成され、各部の機能を実現するためのプログラムをメモリからロードして実行することによりその機能を実現させるものであってもよい。また、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりその機能を実現させるものであってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００３８】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００３９】
１−０  ＣＰＵモジュール１−０
１−１  ＣＰＵモジュール１−１
２−０  プロセッサ２−０
２−１  プロセッサ２−１
３−０  ノースブリッジ３−０
３−１  ノースブリッジ３−１
４−０  メモリ４−０
４−１  メモリ４−１
５−０  ＩＯモジュール５−０
５−１  ＩＯモジュール５−１
３０−０  ルータ３０−０
３０−１  ルータ３０−１
３１−０  書き込みバッファ３１−０
３１−１  書き込みバッファ３１−１
３２−０  ＥＣＣ発生部３２−０
３２−１  ＥＣＣ発生部３２−１
３３−０  メモリ制御部３３−０
３３−１  メモリ制御部３３−１
３４−０  ＥＣＣ訂正部３４−０
３４−１  ＥＣＣ訂正部３４−１
３５−０  読み込みバッファ３５−０
３５−１  読み込みバッファ３５−１
３６−０  訂正同期部３６−０
３６−１  訂正同期部３６−１
３７−０  エラー訂正バッファ３７−０
３７−１  エラー訂正バッファ３７−１
５０−０  ＦＴ制御部５０−０
５０−１  ＦＴ制御部５０−１
５１−０  ＩＯ部５１−０
５１−１  ＩＯ部５１−１
１００  情報処理装置１００
３６０−０  訂正同期バッファ３６０−０
３６０−１  訂正同期バッファ３６０−１
３６１−０  書き込みポインタ３６１−０
３６１−１  書き込みポインタ３６１−１
３６２−０  読み込みポインタ３６２−０
３６２−１  読み込みポインタ３６２−１
３６３−０  ＯＲ回路３６３−０
３６３−１  ＯＲ回路３６３−１
【図１】
2012073828.tif 000003
【図２】
2012073828.tif 000004
【図３】
2012073828.tif 000005
【図４】
2012073828.tif 000006