(57)【特許請求の範囲】
【請求項１】
チェックポイント・ロールバック方式の高信頼化機構を有する電子計算機において、
同一のアドレス空間を構成する第１および第２の記憶セル群と、
前記第１および第２の記憶セル群が接続されるバッファと、
前記バッファにデータを読み出す記憶セル群を前記第１および第２の記憶セル群の中から選択する第１の選択手段と、
前記バッファのデータを書き込む記憶セル群を前記第１および第２の記憶セル群の中から選択する第２の選択手段と、
を有するデータ記憶素子と、
通常動作時、前記第１の記憶セル群のデータを前記バッファを介して同第１の記憶セル群のみに書き戻すと共に、前記第２の記憶セル群のデータを前記バッファを介して同第２の記憶セル群のみに書き戻すデータ保護手段と、
チェックポイント時、前記第１の記憶セル群のデータを前記バッファを介して同第１の記憶セル群および第２の記憶セル群に同時に書き戻すデータ複製手段と、
ロールバック時、前記第２の記憶セル群のデータを前記バッファを介して同第２の記憶セル群および第１の記憶セル群に同時に書き戻すデータ復元手段と、
を具備することを特徴とする電子計算機。
【請求項２】
前記データ記憶素子の前記バッファは、データ保護のために前記第１または第２の記憶セル群のデータを書き戻すためのセンスアンプであることを特徴とする請求項１記載の電子計算機。
【請求項３】
前記データ記憶素子の前記第１の記憶セル群が通常用のプライマリセルであり、前記データ記憶素子の前記第２の記憶セル群がバックアップ用のセカンダリセルであることを特徴とする請求項１記載の電子計算機。
【請求項４】
前記データ記憶素子は、リフレッシュ時に、前記第１および第２の記憶セル群の中のいずれか一方のデータを前記バッファを介して前記第１および第２の記憶セル群双方に同時に書き戻す手段を備えたＤＲＡＭであることを特徴とする請求項１記載の電子計算機。
【請求項５】
前記データ記憶素子の前記第１の記憶セル群および前記第２の記憶セル群の少なくとも一方は不揮発性素子であることを特徴とする請求項１記載の電子計算機。
【請求項６】
前記データ記憶素子は、前記第１および第２の記憶セル群に、エラーチェックのための冗長ビットが設けられ、この冗長ビットを用いてエラー検出またはエラー訂正を行なう手段を具備することを特徴とする請求項１記載の電子計算機。
【請求項７】
前記データ記憶素子は、エラー情報を記憶する手段を具備することを特徴とする請求項６記載の電子計算機。
【請求項８】
前記データ記憶素子は、エラー検出またはエラー訂正をするか否かを指定する手段を具備することを特徴とする請求項６記載の電子計算機。
【請求項９】
前記データ記憶素子は、各記憶セルの参照履歴を示す手段を前記第１および第２の記憶セル群の中の少なくとも一方に対応させて設けたことを特徴とする請求項１記載の電子計算機。
【請求項１０】
前記データ複製手段は、参照履歴のあるデータのみを書き戻しの対象とすることを特徴とする請求項９記載の電子計算機。
【請求項１１】
チェックポイント・ロールバック方式の高信頼化機構を有する電子計算機において、
同一のアドレス空間を構成する第１および第２の記憶セル群と、
入力に前記第１の記憶セル群が接続され、出力に前記第１および第２の記憶セル群が接続される、前記第１の記憶セル群から読み出されたデータを格納する第１のバッファと、
入力に前記第２の記憶セル群が接続され、出力に前記第１および第２の記憶セル群が接続される、前記第２の記憶セル群から読み出されたデータを格納する第２のバッファと、
前記第１のバッファのデータを書き込む記憶セル群を前記第１および第２の記憶セル群の中から選択する第１の選択手段と、
前記第２のバッファのデータを書き込む記憶セル群を前記第１および第２の記憶セル群の中から選択する第２の選択手段と、
を有するデータ記憶素子と、
通常動作時、前記第１の記憶セル群のデータを前記第１のバッファを介して同第１の記憶セル群のみに書き戻すと共に、前記第２の記憶セル群のデータを前記第２のバッファを介して同第２の記憶セル群のみに書き戻すデータ保護手段と、
チェックポイント時、前記第１の記憶セル群のデータを前記第１のバッファを介して同第１の記憶セル群および第２の記憶セル群に同時に書き戻すデータ複製手段と、
ロールバック時、前記第２の記憶セル群のデータを前記第２のバッファを介して同第２の記憶セル群および第１の記憶セル群に同時に書き戻すデータ復元手段と、
を具備することを特徴とする電子計算機。
【請求項１２】
前記データ記憶素子の前記第１のバッファは、データ保護のために前記第１の記憶セル群のデータを書き戻すためのセンスアンプであり、前記データ記憶素子の前記第２のバッファは、データ保護のために前記第２の記憶セル群のデータを書き戻すためのセンスアンプであることを特徴とする請求項１１記載の電子計算機。
【請求項１３】
前記データ記憶素子の前記第１の記憶セル群は、通常用のプライマリセルであり、前記データ記憶素子の前記第２の記憶セル群は、バックアップ用のセカンダリセルであることを特徴とする請求項１１記載の電子計算機。
【請求項１４】
前記データ記憶素子は、リフレッシュ時に、前記第１および第２の記憶セル群の中のいずれか一方のデータを前記第１または第２のバッファを介して前記第１および第２の記憶セル群双方に同時に書き戻す手段を備えたＤＲＡＭであることを特徴とする請求項１１記載の電子計算機。
【請求項１５】
前記データ記憶素子の前記第１および第２の記憶セル群の中の少なくとも一方は不揮発性素子であることを特徴とする請求項１１記載の電子計算機。
【請求項１６】
前記データ記憶素子は、前記第１および第２の記憶セル群に、エラーチェックのための冗長ビットが設けられ、この冗長ビットを用いてエラー検出またはエラー訂正を行なう手段を具備することを特徴とする請求項１１記載の電子計算機。
【請求項１７】
前記データ記憶素子は、エラー情報を記憶する手段を具備することを特徴とする請求項１６記載の電子計算機。
【請求項１８】
前記データ記憶素子は、エラー検出またはエラー訂正をするか否かを指定する手段を具備することを特徴とする請求項１６記載の電子計算機。
【請求項１９】
前記データ記憶素子は、各記憶セルの参照履歴を示す手段を前記第１および第２の記憶セル群の中の少なくとも一方に対応させて設けたことを特徴とする請求項１１記載の電子計算機。
【請求項２０】
前記データ複製手段は、参照履歴のあるデータのみを書き戻しの対象とすることを特徴とする請求項１９記載の電子計算機。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、チェックポイント・ロールバック方式の高信頼性機構によるチェックポイント処理やロールバック処理のオーバーヘッドを大幅に小さくする電子計算機に関する。
【０００２】
【従来の技術】
近年、様々な分野で業務処理の電子化が図られており、コンピュータの信頼性や耐障害性に対する要求は日々高まる一方である。そして、この耐障害性を実現するコンピュータとして、いわゆるフォールトトレラント型コンピュータが存在する。
【０００３】
このフォールトトレラント型コンピュータでは、ハードウェアを多重化し、演算結果を比較して信頼性を向上させる多重化方式と、定期的にチェックポイントとよばれる安定した状態を取り、障害が発生したらチェックポイント状態まで計算機の状態を戻すことによって正しい演算結果を得るチェックポイント・ロールバック方式との２つの方式がよく知られている。
【０００４】
このうち、多重化方式は、たとえば「ノンストップコンピュータのしくみがわかる本」（麹町ＦＴＣ研究会編、工業調査会：１９９２）に記載のタンデム社ＮｏｎＳｔｏｐ  Ｃｙｃｌｏｎｅシリーズ、ストラタス社  ＸＡシリーズ等に代表されるように、疎結合または密結合のマルチプロセッサによる高信頼性コンピュータで広く実用化されている。
【０００５】
一方、チェックポイント・ロールバック方式は、たとえば特開平９−６７３１号公報に記載のメモリ状態復元装置や特開平５−６３０８号公報に記載のキャッシュコントローラ並びにフォールト・トレラント・コンピュータおよびそのデータ転送方式で示される高信頼性コンピュータシステムの構築方式である。
【０００６】
【発明が解決しようとする課題】
しかしながら、多重化方式によるフォールトトレラント型コンピュータは、プロセッサ等のリソースが複数必要であるためにコストが高くなり、また、チェックポイント・ロールバック方式によるフォールトトレラント型コンピュータは、チェックポイントを採るためのオーバーヘッドが大きく、多重化方式に比べると高性能を得にくいといった問題があった。
【０００７】
この発明は、このような実情を考慮してなされたものであり、チェックポイント・ロールバック方式の高信頼性機構によるチェックポイント処理やロールバック処理のオーバーヘッドを大幅に小さくする電子計算機を提供することを目的とする。
【０００８】
【課題を解決するための手段】
前述した目的を達成するために、この発明の電子計算機は、チェックポイント・ロールバック方式の高信頼化機構を有する電子計算機において、  同一のアドレス空間を構成する第１および第２の記憶セル群と、前記第１および第２の記憶セル群が接続されるバッファと、前記バッファにデータを読み出す記憶セル群を前記第１および第２の記憶セル群の中から選択する第１の選択手段と、前記バッファのデータを書き込む記憶セル群を前記第１および第２の記憶セル群の中から選択する第２の選択手段と、を有するデータ記憶素子と、通常動作時、前記第１の記憶セル群のデータを前記バッファを介して同第１の記憶セル群のみに書き戻すと共に、前記第２の記憶セル群のデータを前記バッファを介して同第２の記憶セル群のみに書き戻すデータ保護手段と、チェックポイント時、前記第１の記憶セル群のデータを前記バッファを介して同第１の記憶セル群および第２の記憶セル群に同時に書き戻すデータ複製手段と、ロールバック時、前記第２の記憶セル群のデータを前記バッファを介して同第２の記憶セル群および第１の記憶セル群に同時に書き戻すデータ復元手段と、を具備することを特徴とする。
【０００９】
また、この発明の電子計算機は、チェックポイント・ロールバック方式の高信頼化機構を有する電子計算機において、同一のアドレス空間を構成する第１および第２の記憶セル群と、入力に前記第１の記憶セル群が接続され、出力に前記第１および第２の記憶セル群が接続される、前記第１の記憶セル群から読み出されたデータを格納する第１のバッファと、入力に前記第２の記憶セル群が接続され、出力に前記第１および第２の記憶セル群が接続される、前記第２の記憶セル群から読み出されたデータを格納する第２のバッファと、前記第１のバッファのデータを書き込む記憶セル群を前記第１および第２の記憶セル群の中から選択する第１の選択手段と、前記第２のバッファのデータを書き込む記憶セル群を前記第１および第２の記憶セル群の中から選択する第２の選択手段と、を有するデータ記憶素子と、通常動作時、前記第１の記憶セル群のデータを前記第１のバッファを介して同第１の記憶セル群のみに書き戻すと共に、前記第２の記憶セル群のデータを前記第２のバッファを介して同第２の記憶セル群のみに書き戻すデータ保護手段と、チェックポイント時、前記第１の記憶セル群のデータを前記第１のバッファを介して同第１の記憶セル群および第２の記憶セル群に同時に書き戻すデータ複製手段と、ロールバック時、前記第２の記憶セル群のデータを前記第２のバッファを介して同第２の記憶セル群および第１の記憶セル群に同時に書き戻すデータ復元手段と、を具備することを特徴とする。
【００１８】
【発明の実施の形態】
以下、図面を参照してこの発明の実施形態を説明する。
【００１９】
（第１実施形態）
まず、この発明の第１実施形態を説明する。
【００２０】
図１は、この発明の第１実施形態に係るチェックポイント・ロールバック方式のフォールト・トレラント・コンピュータの概略構成を示す図である。
【００２１】
図１に示すように、この第１実施形態のフォールト・トレラント・コンピュータには、システムバスＡが敷設されており、このシステムバスＡには、複数のＣＰＵ１とメモリコントローラ２とが接続されている。また、このメモリコントローラ２には、システムメモリ３が接続されている。
【００２２】
ＣＰＵ１は、密結合対系型マルチプロセッサ（ＳＭＰ）を構成している。すべてのＣＰＵ１はチェックポイントで同期をとり、内部情報をシステムメモリ３の予め定められた領域に書き込んでいる。さらに、ＣＰＵ１のキャッシュメモリのダーティ領域をシステムメモリ３に書き込み、システムの安定した状態（チェックポイント取得状態）をシステムメモリ３に作る。
【００２３】
チェックポイント取得状態が確定すると、システムメモリ３のプライマリ領域をセカンダリ領域にコピーするコマンドをメモリコントローラ２に送り、コピーが終了したことを確認すると再び通常動作状態に戻る。
【００２４】
メモリコントローラ２は、システムメモリ３を駆動制御するものであり、ＣＰＵ１からの指示にしたがって、システムメモリ３からのデータの読み出しやシステムメモリ３へのデータの書き込みを実行する。また、このメモリコントローラ２は、たとえばＤＲＡＭにおけるリフレッシュ動作など、システムメモリ３に格納されたデータの保護も実行制御する。
【００２５】
システムメモリ３は、複数のＣＰＵ１から共有される、このフォールト・トレラント・コンピュータの主記憶となるメモリデバイスであり、ＣＰＵ１によって実行制御されるプログラムや処理データを格納する。なお、このフォールト・トレラント・コンピュータでは、このシステムメモリ３をＤＲＡＭにより構成している。
【００２６】
そして、この発明は、このシステムメモリ３を構成するデータ記憶素子（ここではＤＲＡＭ）が、同一のアドレス空間を構成する記憶セル群をデータ記憶素子内部に複数組備えることで、このデータ記憶素子内にプライマリメモリ３ａとセカンダリメモリ３ｂの２つの記憶領域をもつことを可能とし、その結果、共有リソースであるシステムバスＡを用いることなく、チェックポイント処理やロールバック処理を行なえるようにしたことにより、これらのオーバヘッドを大幅に小さくした点を特徴としている。
【００２７】
そのために、このフォールト・トレラント・コンピュータでは、システムメモリ３を構成するＤＲＡＭに、リフレッシュ時に読み出しを行なうメモリセル（プライマリまたはセカンダリ）を指定する機能と、リフレッシュによる書き戻しを読み出し元のセルのみに行なうか、または、両方のセルに対して行なうかを指定する機能とを付加する。
【００２８】
図２は、このシステムメモリ３を構成するＤＲＡＭの２つのメモリセルおよびセンスアンプとその動作とを模式的に示したものである。なお、この図２には示していないが、リフレッシュ時にセンスアンプ３０に読み込むメモリセルの指定は、ＤＲＡＭの外部ピンで行なう。この外部ピンは、ＤＲＡＭの行アドレス選択用ピンと同等の機能をもつ。便宜上、このピンを「センスアンプ・リード・セレクタ・ピン」と呼ぶことにする。また、リフレッシュによる書き戻しを読み込んだセル側だけに行なうか、または、（プライマリとセカンダリの）両方のセルに対して行なうかを指定するためのピンも別に設けるものとする。便宜上、このピンを「センスアンプ・ライト・セレクタ・ピン」と呼ぶことにする。そして、ここでは簡単のため、「センスアンプ・ライト・セレクタ・ピン」は、各メモリセルに対して１ビットずつ割り当てられているものとする。
【００２９】
このＤＲＡＭでは、１つのセンスアンプ３０に２つのＤＲＡＭセル（１０，２０）が接続されており、通常はプライマリ側のメモリセル１０に対してデータをリード／ライトする。通常のリード時には、「センスアンプ・リード・セレクタ・ピン」は、プライマリ・セル１０側を選択している。また、通常のライト時には、「センスアンプ・ライト・セレクタ・ピン」は、プライマリ側だけに書き込むようにセットされている。
【００３０】
まず、このＤＲＡＭの通常動作について説明する。
【００３１】
このＤＲＡＭが通常のＤＲＡＭと異なる点は、リフレッシュ時のデータ更新動作にある。図３にプライマリ側のリフレッシュ動作を示し、図４に、セカンダリ側のリフレッシュ動作を示す。
【００３２】
リフレッシュ周期がチェックポイントよりも前に来た場合、ＤＲＡＭは、標準的なＤＲＡＭと同様の方法でリフレッシュを行なう。即ち、プライマリ側１０のリフレッシュとセカンダリ側２０のリフレッシュとを独立して行ない、書き戻しは読み出した側のセルに対してのみ行なう。
【００３３】
図３に示したプライマリ側セル１０のリフレッシュ時には、「センスアンプ・リード・セレクタ・ピン」によりセンスアンプ３０にプライマリ・セル１０側のデータを読み込み、「センスアンプ・ライト・セレクタ・ピン」はセンスアンプ３０の内容をプライマリ側だけに書き込むようにそれぞれセットされている。
【００３４】
一方、図４に示したセカンダリ側セル２０のリフレッシュ時には、「センスアンプ・リード・セレクタ・ピン」はセカンダリ・セル２０側を読み込み、「センスアンプ・ライト・セレクタ・ピン」はセカンダリ側セル２０にだけに書き込むようにそれぞれセットされている。
【００３５】
行アドレスは、通常のＣＡＳ  ｂｅｆｏｒｅ  ＲＡＳリフレッシュと同様にＤＲＡＭ内部で生成され、プライマリ側行アドレス（ＰＲｎ）とセカンダリ側行アドレス（ＳＲｎ）とに同じ値が供給される。
【００３６】
次に、このＤＲＡＭのチェックポイント動作について説明する。
【００３７】
図５にチェックポイント時のＤＲＡＭのリフレッシュ動作を示す。このＤＲＡＭでは、チェックポイント時にプライマリ側１０のデータをセンスアンプ３０に読み出し、プライマリ側１０とセカンダリ側２０との両方にデータを書き込むリフレッシュ動作を行なう。これにより、リフレッシュ動作にチェックポイント動作を隠蔽できるので、チェックポイント処理のオーバーヘッドを低減することができる。
【００３８】
図５に示したプライマリ側セル１０の内容をセカンダリ側セルにコピーするチェックポイント時のリフレッシュでは、「センスアンプ・リード・セレクタ・ピン」はプライマリ・セル１０側を、「センスアンプ・ライト・セレクタ・ピン」はプライマリ側セル１０とセカンダリ側セル２０との両方に書き込むようにそれぞれセットされている。また、行アドレスは、通常のＣＡＳ  ｂｅｆｏｒｅ  ＲＡＳリフレッシュと同様にＤＲＡＭ内部で生成され、プライマリ側行アドレス（ＰＲｎ）とセカンダリ側行アドレス（ＳＲｎ）とに同じ値が供給される。
【００３９】
次に、このＤＲＡＭのロールバック動作について説明する。
【００４０】
図６にロールバック時のＤＲＡＭのリフレッシュ動作を示す。この場合、セカンダリ側のセル２０からセンスアンプ３０にデータを読み出し、セカンダリ側２０とプライマリ側１０との両方にデータを書き戻すリフレッシュ動作をさせる。この動作により、メモリは、前のチェックポイント状態に迅速に戻ることができる。
【００４１】
図６に示したセカンダリ側セル２０の内容をプライマリ側セル１０にコピーするロールバック処理のリフレッシュでは、「センスアンプ・リード・セレクタ・ピン」はセカンダリ側セル２０側を、「センスアンプ・ライト・セレクタ・ピン」はプライマリ側セル１０とセカンダリ側セル２０との両方に書き込むようにそれぞれセットされている。また、行アドレスは、通常のＣＡＳ  ｂｅｆｏｒｅ  ＲＡＳリフレッシュと同様にＤＲＡＭ内部で生成され、プライマリ側行アドレス（ＰＲｎ）とセカンダリ側行アドレス（ＳＲｎ）とに同じ値が供給される。
【００４２】
以上の各リフレッシュ動作における動作を図７に示す。図７において、「センスアンプ・ライト・セレクタ・ピン」は、“（プライマリ側セルの選択、セカンダリ側セルの選択）”の形式で記載し、“１”のときアクティブ、“０”のときインアクティブとする。
【００４３】
また、図８に一般的な計算機のリフレッシュのタイミングを、図９にこの第１実施形態のＤＲＡＭを適用したフォールド・トレラント・コンピュータのリフレッシュのタイミングを示す。これらの図では、リフレッシュタイミングを簡易的に縦線で示している。
【００４４】
一般的な計算機では、ＤＲＡＭの規定により各行アドレスが６４ｍｓに１回以上の頻度でアクセスしなくてはならない。このため、普通はメモリコントローラが１５ｕｓに１回程度の頻度でリフレッシュ割り込みを入れ、ＤＲＡＭのリフレッシュを等間隔で実行する（図８）。
【００４５】
一方、チェックポイントロールバック方式の計算機では、チェックポイントを約１０ｍｓに１回の割合でとる。すなわち、チェックポイント間隔とリフレッシュ間隔とがほぼ同等であるので、この第１実施形態のＤＲＡＭでは、リフレッシュは原則として図９（ａ）に示すようにチェックポイント処理時に行なう。これにより、通常動作時にはリフレッシュによる割り込みが発生せず、メモリアクセスを高速に実行できる。
【００４６】
ただし、図９（ｂ）に示すようにチェックポイント間隔が規定のリフレッシュ間隔より長くなってしまう場合には、一般の計算機の記憶装置と同様にリフレッシュ割り込みを入れてリフレッシュを実行する。このため、たとえば規定のリフレッシュ周期６４ｍｓの３／４である４８ｍｓを越えると通常のリフレッシュ周期１５ｕｓの４倍の頻度、すなわち３．７５ｕｓに１回の割合でリフレッシュ割り込みをいれてリフレッシュ動作を行ない、ＤＲＡＭのデータを保証する。チェックポイントが４８ｍｓ以上６４ｍｓ未満で採られる場合には、チェックポイント処理に入る。一方、チェックポイントが６４ｍｓ以内で採られない場合には、リフレッシュ割り込み用の４８ｍｓカウンタをリセットして次のチェックポイント割り込みがリフレッシュ割り込みを越えないかをチェックする。
【００４７】
ここで、このＤＲＡＭのリフレッシュ方式の選択手順を図１０のフローチャートを参照しながら説明する。
【００４８】
まず、ロールバックの実行かどうかを調べ（ステップＡ１）、ロールバックの実行であれば（ステップＡ１のＹＥＳ）、セカンダリセルの内容をプライマリセルにコピーするリフレッシュ方式を選択する（ステップＡ２）。ロールバックの実行でなければ（ステップＡ１のＮＯ）、続いて、チェックポイントの採取かどうかを調べ（ステップＡ３）、チェックポイントの採取であれば（ステップＡ３のＹＥＳ）、プライマリセルの内容をセカンダリセルにコピーするリフレッシュ方式を選択する（ステップＡ４）。
【００４９】
また、チェックポイントの採取でなければ（ステップＡ３のＮＯ）、リフレッシュ規定時間内かどうかを調べ（ステップＡ５）、リフレッシュ規定時間内でなければ（ステップＡ５のＮＯ）、さらに、リフレッシュが完了しているかどうかを調べる（ステップＡ６）。そして、すでにリフレッシュが完了していれば（ステップＡ６のＹＥＳ）、リフレッシュタイマを“０”にリセットし（ステップＡ７）、一方、リフレッシュが完了していなければ（ステップＡ６のＮＯ）、通常のリフレッシュ方式を選択する（ステップＡ８）。
【００５０】
このように、このフォールト・トレラント・コンピュータでは、システムメモリ３を構成するＤＲＡＭが同一のアドレス空間を表すプライマリメモリ３ａとセカンダリメモリ３ｂの２つの記憶領域を構成するため、共有リソースであるシステムバスＡを用いることなく、チェックポイント処理やロールバック処理を行なうことを可能とし、これらのオーバヘッドを大幅に小さくする。
【００５１】
（第２実施形態）
次に、この発明の第２実施形態を説明する。
【００５２】
この第２実施形態のフォールト・トレラント・コンピュータの特徴は、前述の第１実施形態のフォールト・トレラント・コンピュータのＤＲＡＭにエラー検出／訂正回路（単一誤り訂正二重誤り検出方式ＥＣＣ）と、エラー検出／訂正イネーブルレジスタと、エラー通知部（エラーフラグ、エラーアドレスレジスタ）とを付加した点にある。
【００５３】
エラー検出／訂正回路は、ここでは、単一誤り訂正二重誤り検出方式ＥＣＣ（ＳＥＣ−ＤＳＤ  ＥＣＣ）とする。ＤＲＡＭの列アドレス（Ｃｏｌｕｍｎ  Ａｄｄｒｅｓｓ）は、１Ｇビット（＝２０30ビット）程度のＤＲＡＭで√２０30＝２15ビット程度あるので、６４（＝２6 ）ビット程度のメモリバスより効率よくチェックビットを作ることができる。実際、理論上は２6 ビットのデータに対するチェックビットは８ビット必要で、全データの１２％を占めるのに対し、２15ビットのデータに対するチェックビットは１７ビットであり、全データの０．５％にすぎない（「誤り符号化技術の要点」４章コンピュータへの応用，今井秀樹監修，日本工業技術センター参照）。
【００５４】
エラー検出／訂正イネーブルレジスタは、たとえば２ビットで構成し、ビット０を“１”にするとＥＣＣによるエラー検出を行ない、“０”にするとエラー検出を行なわない。また、ビット１を“１”にするとＥＣＣによる単一誤り訂正を行ない、“０”にすると誤り訂正を行なわない。
【００５５】
エラー通知部は、エラー発生の有無、エラーが訂正可能であったか否か、エラー発生の行アドレス（Ｒｏｗ  Ａｄｄｒｅｓｓ）を保持する。
【００５６】
この第２実施形態のＤＲＡＭは、データをセンスアンプからメモリセルに書き戻すときにＥＣＣチェックビットを生成してメモリセルに書き込み、データをメモリセルからセンスアンプに読み込むときにはＥＣＣチェックを行なう。このとき、エラー検出／訂正イネーブルレジスタにしたがって、エラー検出や訂正を行なう。すなわち、エラー検出がイネーブルであれば、エラー発生時にエラーフラグを“１”にセットし、エラーアドレスレジスタにエラーアドレスを保存し、エラー検出がディセーブルであれば、エラー発生時にもエラーフラグ、エラーアドレスレジスタを更新しない。なお、通常の高信頼性計算機のＥＣＣで行なわれているように、２重ビット誤り検出レジスタがセットされていれば、単一ビット誤り訂正時にエラーフラグやエラーアドレスレジスタを更新しないようにしてもよい。
【００５７】
チェックポイント処理またはロールバック処理のリフレッシュ動作において単一誤りを検出した場合は、誤りを訂正した後に両方のメモリセルに書き込む。また、２重誤りを検出した場合は、読み出した側のセルにのみデータを書き戻し、反対側のセルにはデータを書き戻さない。なお、エラー検出／訂正イネーブルレジスタは無くても構わない。
【００５８】
図１１にエラーチェックビットを持つ場合のＤＲＡＭの構成を示す。なお、図１１では省略したが、行アドレス（ＰＲｎ）のデータ１００とチェックビット１１０とをセンスアンプ３０に読み出すときに、ＥＣＣチェック回路を通してエラーチェックを行なう。単一ビット誤りが発生していれば、そのビットを反転させてセンスアンプ３０に書き込む。センスアンプからプライマリ１０側の行アドレス（ＰＲｎ）のメモリセルおよびセカンダリ２０側の行アドレス（ＳＲｎ）のメモリセルに書き込むときには、センスアンプ３０のデータ部１００からチェックビット１１０を生成して書き込む。すなわち、エラー情報を残さなければセンスアンプ３０にチェックビット１１０は必要ない。データ部１００からチェックビット１１０を生成するのは、外部からメモリへの書き込みが発生した場合に新しいデータ１００をもとにチェックビット１１０を生成しなおす必要があるためである。
【００５９】
（第３実施形態）
次に、この発明の第３実施形態を説明する。
【００６０】
この第３実施形態のフォールト・トレラント・コンピュータの特徴は、前述の第１実施形態のフォールト・トレラント・コンピュータのＤＲＡＭの各行アドレスに更新ビットを設けた点にあり、チェックポイント時に、この更新ビットの立っているＤＲＡＭアドレスのみをリフレッシュすることでチェックポイント処理を高速化する。
【００６１】
図１２に更新ビットをもつ場合のＤＲＡＭの構成を示す。
【００６２】
よく知られているように、計算機のメモリでは、短い時間にアクセスされるメモリアドレスは小さな領域に集中する参照の局所性がある。したがって、ＤＲＡＭのアドレスを行アドレスが連続になるように実アドレスにマッピングすると、短い時間の間に参照される行アドレスは小さな領域に集中する。よって、更新ビット（または更新管理テーブル：Ｍｏｄｉｆｉｅｄ  Ｂｌｏｃｋ  Ｔａｂｌｅ）１２０を設け、必要な部分のみ前述のリフレッシュ動作による状態更新を行なえば、極めて短い時間にチェックポイント処理を行なうことが可能となる。
【００６３】
（第４実施形態）
次に、この発明の第４実施形態を説明する。
【００６４】
この第４実施形態のフォールト・トレラント・コンピュータの特徴は、前述の第３実施形態のフォールト・トレラント・コンピュータのＤＲＡＭがもつ更新ビットをＤＲＡＭの外部に設けた点にある。ここでいうＤＲＡＭの外部とは、メモリコントローラ内部であっても良いし、メモリコントローラとは独立していてもよい。また、更新ビットはメモリに対する書き込みが発生した場合にセットされるので、メモリ素子の外部に置くこともできる。この場合、管理方法選択の自由度が大きくなるので、たとえば前述の特開平９−６７３１号公報に記載のメモリ状態復元装置等に適用すると、小さなオーバーヘッドで信頼性の高い計算機を実現することができる。
【００６５】
（第５実施形態）
次に、この発明の第５実施形態を説明する。
【００６６】
この第５実施形態のフォールト・トレラント・コンピュータの特徴は、前述の第２の実施形態のフォールト・トレラント・コンピュータのＤＲＡＭの各行アドレスにリフレッシュ完了フラグを設けた点にある。図１３にリフレッシュ完了フラグをもつ場合のＤＲＡＭの構成を示す。
【００６７】
通常のリフレッシュ動作、チェックポイント処理またはロールバック処理によるリフレッシュ、または、通常のリード／ライトアクセスがあれば、このリフレッシュ完了フラグ１３０をセットする。そして、すべてのリフレッシュ完了フラグがセットされたときに、リフレッシュ完了フラグ１３０をリセットする。
【００６８】
リフレッシュ完了フラグ１３０が立っている行アドレスに関しては、ＣＡＳ  Ｂｅｆｏｒｅ  ＲＡＳリフレッシュをしないようにすることで、リフレッシュ効率を高くすることができる。
【００６９】
（第６実施形態）
次に、この発明の第６実施形態を説明する。
【００７０】
この第６実施形態のフォールト・トレラント・コンピュータの特徴は、前述の第３実施形態のフォールト・トレラント・コンピュータのＤＲＡＭのセンスアンプを２組設けた点にある。
【００７１】
図１４にセンスアンプを２組設けた場合のＤＲＡＭの構成を示す。
【００７２】
１組のセンスアンプ３１ａの入力は、プライマリセル１０に、もう１組のセンスアンプ３１ｂの入力は、セカンダリセル２０にそれぞれ固定する。よって、第１実施形態で述べた「センスアンプ・リード・セレクタ・ピン」は必要ない。その代わりに、後述するような、メモリセルに書き戻すデータを保持するセンスアンプを指定するための手段を設ける。
【００７３】
プライマリメモリ１０に対する通常のリード／ライトアクセスでは、プライマリ側のセンスアンプ３１ａを用い、一方、セカンダリメモリ２０に対する通常のリード／ライトアクセスでは、セカンダリ側のセンスアンプ３１ｂを用いる。
【００７４】
まず、このＤＲＡＭの通常動作について説明する。
【００７５】
図１４には通常のＤＲＡＭのリフレッシュ動作が示されている。通常のリフレッシュでは、行アドレス（ＰＲｎ）にあるプライマリメモリ１０のデータは、プライマリセンスアンプ３１ａに読み出され、プライマリメモリ１０に書き戻される。同時に対応する行アドレス（ＳＲｎ）にあるセカンダリメモリ２０のデータがセカンダリセンスアンプ３１ｂに読み出され、セカンダリメモリ２０に書き戻される。簡単のため、デフォルトのセンスアンプを使用することを示す「ノーマル・リフレッシュ・ピン」を設けることにする。
【００７６】
「ノーマル・リフレッシュ・ピン」がアクティブのとき、「センスアンプ・ライト・セレクタ・ピン」がアクティブであるメモリセル群にデフォルトのセンスアンプのデータを書き込む。デフォルトのセンスアンプとは、プライマリメモリ１０はプライマリ側のセンスアンプ３１ａ、セカンダリメモリ２０はセカンダリ側のセンスアンプ３１ｂとする。「ノーマル・リフレッシュ・ピン」がアクティブでないとき、どちら側のセンスアンプの値をメモリセルに書き戻すかを決める手段が必要である。今回の場合、プライマリ、セカンダリの２つのメモリセル群しかないので、１ビットあれば十分である。これを「ライトバック・センスアンプ・セレクタ・ピン」と呼ぶことにする。
【００７７】
「ノーマル・リフレッシュ・ピン」がアクティブでないときに、「ライトバック・センスアンプ・セレクタ・ピン」が“プライマリ”であれば、プライマリ・センスアンプ３１ａの内容を、「センスアンプ・ライト・セレクタ・ピン」がアクティブであるメモリセルに書き込むものとする。
【００７８】
なお、このＤＲＡＭの構成においては、メモリセルが２組しかなく、“センスアンプ・ライトセレクタ・ピン”の設定は自明なので、“センスアンプ・ライト・セレクタ・ピン”を設けなくとも構わない。
【００７９】
次に、このＤＲＡＭのチェックポイント動作について説明する。
【００８０】
図１５にチェックポイント時のＤＲＡＭのリフレッシュ動作を示す。チェックポイント処理時には、キャッシュフラッシュを行ない、プロセッサのレジスタ等の情報をプライマリメモリに書き込んで退避した後で、更新ビット１３０の立っているプライマリメモリ１０の行アドレス（ＰＲｎ）のデータをプライマリセンスアンプ３１ａに読み出す。同時に対応する行アドレス（ＳＲｎ）にあるセカンダリメモリ２０のデータが、セカンダリセンスアンプ３１ｂに読み出される。書き込み時には、プライマリセンスアンプ３１ａの内容をプライマリメモリ１０の行アドレス（ＰＲｎ）のセル群だけでなく、セカンダリメモリ２０の対応する行アドレス（ＳＲｎ）のセル群にも書き込む。そして、セカンダリセンスアンプ３１ｂの内容は捨てられる。このために、「ノーマル・リフレッシュ・ピン」をインアクティブにし、「ライトバック・センスアンプ・セレクタ・ピン」を“プライマリ”にする。これにより、プライマリメモリ１０の更新された行アドレス（ＰＲｎ）のデータは、セカンダリメモリ２０の対応する行アドレス（ＳＲｎ）のメモリセルにコピーされる。
【００８１】
次に、このＤＲＡＭのロールバック動作について説明する。
【００８２】
障害発生時には、更新ビット１３０の立っているプライマリメモリ１０の行アドレス（ＰＲｎ）のデータをプライマリセンスアンプ３１ａに読み出す。同時に対応する行アドレス（ＳＲｎ）にあるセカンダリメモリ２０のデータが、セカンダリセンスアンプ３２に読み込まれる。書き込み時には、セカンダリセンスアンプ３１ｂの内容をセカンダリメモリ２０の行アドレス（ＳＲｎ）のセル群だけでなく、プライマリメモリ１０の対応する行アドレス（ＰＲｎ）のセル群にも書き込まれる。そして、プライマリセンスアンプ３１の内容は捨てられる。このために、「ノーマル・リフレッシュ・ピン」をインアクティブにし、「ライトバック・センスアンプ・セレクタ・ピン」を“セカンダリ”にする。これにより、セカンダリメモリ１０の更新された行アドレス（ＳＲｎ）のデータは、プライマリメモリ１０の対応する行アドレス（ＰＲｎ）のメモリセルにコピーされる。
【００８３】
なお、障害発生時には、更新ビット１３０を無視してすべての行アドレスに対してリフレッシュ動作を行なって、セカンダリメモリの内容をプライマリメモリにコピーしても良い。
【００８４】
以上の各リフレッシュ動作における動作を図１６に示す。図１６において、「センスアンプ・ライト・セレクタ・ピン」は、“（プライマリ側セルの選択、セカンダリ側のセルの選択）”の形式で記載し、“１”のときアクティブ、“０”のときインアクティブとする。
【００８５】
なお、前述の第１乃至第６実施形態のフォールト・トレラント・コンピュータでは、ＤＲＡＭのリフレッシュを用いてチェックポイント処理やロールバック処理を行なう例を示したが、データ記憶素子はＤＲＡＭに限られない。たとえばＤＲＡＭの替わりにＳＲＡＭを用いても良いし、プライマリ側をＤＲＡＭ、セカンダリ側をフラッシュメモリのような不揮発性メモリを用いてもよい。
【００８６】
特に、セカンダリ側に不揮発性素子を使用すると、高信頼性計算機のみならずに一般の計算機に使用してレジューム機能を実現する手段として用いても有効である。また、主記憶でなくディスクキャッシュに用いて高信頼性を図ることもできるようになる。
【００８７】
さらに、システム・オン・チップ技術により、プロセッサとメモリとを同一ＬＳＩチップ上に搭載する場合には、メモリ制御回路にこの発明を適用することも可能である。
【００８８】
【発明の効果】
以上詳述したように、この発明によれば、同一のアドレス空間を構成する記憶セル群を複数組設けることにより、単一のデータ記憶素子内にプライマリの記憶領域とセカンダリの記憶領域との２つの記憶領域をもつことを可能としたことから、共有リソースである外部バスを用いることなく、チェックポイント処理をプライマリとして用いる記憶セル群のデータをセカンダリとして用いる記憶セル群にコピーすることにより実行し、また、ロールバック処理をセカンダリとして用いる記憶セル群のデータをプライマリとして用いる記憶セル群にコピーすることにより実行することができるため、チェックポイント処理およびロールバック処理のオーバヘッドを大幅に小さくすることを可能とする。
【図面の簡単な説明】
【図１】この発明の第１実施形態に係るチェックポイント・ロールバック方式のフォールト・トレラント・コンピュータの概略構成を示す図。
【図２】同第１実施形態のシステムメモリ３を構成するＤＲＡＭの２つのメモリセルおよびセンスアンプとその動作とを模式的に示した図。
【図３】同第１実施形態のＤＲＡＭのプライマリ側のリフレッシュ動作を示す図。
【図４】同第１実施形態のＤＲＡＭのセカンダリ側のリフレッシュ動作を示す図。
【図５】同第１実施形態におけるチェックポイント時のＤＲＡＭのリフレッシュ動作を示す図。
【図６】同第１実施形態におけるロールバック時のＤＲＡＭのリフレッシュ動作を示す図。
【図７】同第１実施形態の各リフレッシュ動作における動作を示す図。
【図８】一般的な計算機のリフレッシュのタイミングを示す図。
【図９】同第１実施形態のＤＲＡＭを適用したフォールド・トレラント・コンピュータのリフレッシュのタイミングを示す図。
【図１０】同第１実施形態におけるＤＲＡＭのリフレッシュ方式の選択手順を説明するためのフローチャート。
【図１１】同第２実施形態のエラーチェックビットを持つ場合のＤＲＡＭの構成を示す図。
【図１２】同第３実施形態の更新ビットをもつ場合のＤＲＡＭの構成を示す図。
【図１３】同第５実施形態のリフレッシュ完了フラグをもつ場合のＤＲＡＭの構成を示す図。
【図１４】同第６実施形態のセンスアンプを２組設けた場合のＤＲＡＭの構成および通常のＤＲＡＭのリフレッシュ動作を示す図。
【図１５】同第６実施形態におけるチェックポイント時のＤＲＡＭのリフレッシュ動作を示す図。
【図１６】同第６実施形態の各リフレッシュ動作における動作を示す図。
【符号の説明】
１…ＣＰＵ
２…メモリコントローラ
３…システムメモリ（ＤＲＡＭ）
１０…プライマリセル
２０…セカンダリセル
３０…センスアンプ
３１ａ…プライマリセンスアンプ
３１ｂ…セカンダリセンスアンプ
１００…データ本体
１１０…チェックビット
１２０…更新ビット
１３０…リフレッシュ完了フラグ
【図１】
0004146045.tif 000002
【図２】
0004146045.tif 000003
【図３】
0004146045.tif 000004
【図４】
0004146045.tif 000005
【図５】
0004146045.tif 000006
【図６】
0004146045.tif 000007
【図７】
0004146045.tif 000008
【図８】
0004146045.tif 000009
【図９】
0004146045.tif 000010
【図１０】
0004146045.tif 000011
【図１１】
0004146045.tif 000012
【図１２】
0004146045.tif 000013
【図１３】
0004146045.tif 000014
【図１４】
0004146045.tif 000015
【図１５】
0004146045.tif 000016
【図１６】
0004146045.tif 000017