JP3788822B2 - コンピュータシステムおよびそのシステムにおける障害回復方法 - Google Patents
コンピュータシステムおよびそのシステムにおける障害回復方法 Download PDFInfo
- Publication number
- JP3788822B2 JP3788822B2 JP15124996A JP15124996A JP3788822B2 JP 3788822 B2 JP3788822 B2 JP 3788822B2 JP 15124996 A JP15124996 A JP 15124996A JP 15124996 A JP15124996 A JP 15124996A JP 3788822 B2 JP3788822 B2 JP 3788822B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- main memory
- redundant code
- bus
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
この発明はコンピュータシステムおよびその障害回復方法に関し、特にメインメモリの固定故障に起因する障害を回復できるように改良されたコンピュータシステムおよびその障害回復方法に関する。
【0002】
【従来の技術】
一般に、コンピュータシステムにおいては、メモリ故障に対する信頼性を高めるために、パリティ付きのメモリが採用されている。パリティ付きメモリを有するメモリサブシステムでは、データ読み出し時にそのデータのチェックサムが算出され、そのチェックサムとパリティビットとの比較によってメモリエラーの検出が行われる。これにより、誤ったメモリデータの使用を未然に防止することができる。
【0003】
ところが、パリティだけでは、メモリデータのどのビットに誤りがあるかを特定することはできないので、エラー訂正を行うことはできない。
これに対し、SEC−DED符号などの冗長コードを用いたメモリサブシステムを用いた場合には、1ビットの誤り訂正と、2ビットの誤り検出が可能となる。すなわち、恒久的にデータが1ビット誤っても、これを自動的に訂正して処理を継続できる。したがって、高信頼性が必要とされるコンピュータシステムでは、パリティ付きメモリよりも、SEC−DED符号などの冗長コードを用いたメモリサブシステムを採用することが望ましい。
【0004】
しかし、パリティ付きメモリを採用した既存のコンピュータシステムにSEC−DED符号などの冗長コードを用いたメモリサブシステムを導入する場合には、既存のパリティ付きメモリをそのまま使用することはできないので、大容量のメインメモリをSEC−DED符号に対応するように新たに再構築することが必要とされる。したがって、その導入のためには多くの費用が必要となる。
【0005】
一方、フォールトトレラントコンピュータシステムでは、メモリの2重化によってすべてのメモリ故障をマスクする構成が採用されている。このメモリ2重化構成によれば、常に同一のデータが2つのメモリに保持されているため、データ誤りが検出された場合には、もう一方のメモリのデータを用いることにより処理を継続することができる。
【0006】
しかし、メモリを二重化する必要があるためにハード量が非常に多くなる、誤りを検出した場合のアクセスメモリ切り替えなどに特殊な構造が必要となる、などの欠点もある。
【0007】
そこで、最近では、メモリを2重化することなく、一般的な故障からの回復を付加ハードで実現するための方式として、メインメモリの更新履歴情報を格納するためのログメモリを使用したチェックポイントリスタート方式が提案されている。このチェックポイントリスタート方式では、プロセスの再実行に必要な情報がチェックポイント毎にメインメモリに保存され、またあるチェックポイントから次のチェックポイントまでの期間において、プロセス実行に伴ってメインメモリが更新される度にその更新前データなどが前述の更新履歴情報としてログメモリに採取される。コンピュータシステムに障害が発生したとき、ログメモリの内容を使用することによってメインメモリを障害発生前のチェックポイントの時点に復元することができる。従って、ログメモリを使用したチェックポイントリスタート方式を採用することにより、2重化メモリを用いることなく、少ないハードウェアでメモリの内容を復元することができる。
【0008】
ところが、この方式では、メモリの内容が恒久的に書き変わってしまったような障害が発生した場合、たとえその検出ができても回復できない場合が存在する。すなわち、直前のチェックポイント以前にメモリデータの値が書き変わっている場合には、故障が検出されたときに直前のチェックポイントに戻って処理を再開しても、再び誤ったメモリデータが読まれることになるため、回復することができなくなる。
【0009】
【発明が解決しようとする課題】
上述したように、パリティ付きメモリを採用した既存のコンピュータシステムにSEC−DED符号などの冗長コードを用いたメモリサブシステムを導入する場合には、既存のパリティ付きメモリをそのまま使用することはできないので、大容量のメインメモリをSEC−DED符号に対応するように新たに再構築することが必要とされ、その導入のためには多くの費用が必要となる欠点がある。
【0010】
また、メモリを2重化することなく、一般的な故障からの回復を付加ハードで実現するための方式として、メインメモリの更新履歴情報を格納するためのログメモリを使用したチェックポイントリスタート方式があるが、この方式では、恒久的にデータが書き変わるようなメモリ故障に対応することができない場合があるという問題がある。
【0011】
この発明はこのような点に鑑みなされたもので、既存のパリティ付きメモリなどの資源をそのまま使用した状態で誤り訂正機能を持つメモリサブシステムを付加ハードによって構築できるようにし、メモリ故障に対する信頼性の高いコンピュータシステムを提供することを目的とする。
【0012】
また、この発明は、ログメモリを使用したチェックポイントリスタート方式では回復できないようなメモリ故障が発生した際にも処理を継続できるようにし、メモリを2重化することなく、少ないハードウェアで十分な耐故障性能を実現できるコンピュータシステムおよび障害回復方法を提供することを目的とする。
【0013】
【課題を解決するための手段】
この発明は、1以上のCPUと、前記CPUとバスを介して接続され、パリティが付加されたデータを記憶するパリティ付きメインメモリと有するコンピュータシステムにおいて、キャッシュメモリと、前記バスと前記メインメモリとの間に設けられ、前記メインメモリを制御するメモリコントローラと、前記メインメモリに対するリードライトアクセスの単位となる番地それぞれに対応して設けられた複数の記憶領域を有し、各記憶領域内にその記憶領域に対応する前記メインメモリの番地に格納されているデータの一部に生じた誤りを訂正可能な冗長コードを保持する冗長コードメモリと、前記バスと前記冗長コードメモリとの間に設けられ、前記冗長コードメモリを制御する制御装置であって、前記バス上に発行されるバストランザクションを監視し、前記キュッシュメモリから前記メインメモリへのライトバックが実行されるときに、前記バス上のデータの値からそのデータに対応する冗長コードを生成し、その冗長コードを前記単位データの書き込み番地に対応する前記冗長コードメモリの記憶領域に格納する制御装置と、前記メインメモリからのデータ読み出し時にその読み出しデータのデータエラーが前記メモリコントローラによるパリティのチェックによって検出された場合、前記読み出しデータと当該読み出しデータに対応する前記冗長コードメモリに格納された冗長コードとから正しいデータを再構成する誤り訂正手段とを具備することを特徴とする。
【0014】
このコンピュータシステムにおいては、冗長コードメモリとその制御のための制御装置とが設けられており、バス上に発行されるバストランザクションの監視によってキュッシュメモリからメインメモリへのライトバックが実行されることが検出されると、バス上のデータの値からそのデータに対応する冗長コードが制御装置内で自動的に生成され、それが冗長コードメモリの該当する記憶領域に格納される。またメインメモリからのデータ読み出し時にその読み出しデータのデータエラーがメモリコントローラによるパリティのチェックによって検出された場合には、読み出しデータと当該読み出しデータに対応する冗長コードとから正しいデータが再構成される。このように、メインメモリのデータに誤りが検出されたとき、そのデータと、これに対応する冗長コードとから正しいデータを再構成できるため、前述の冗長コードメモリと制御装置とを付加ハードとして設けるだけで誤り訂正機能を持つメモリサブシステムを構築できるようになり、メモリ故障に対する信頼性の高いコンピュータシステムを実現できる。
【0015】
また、前記制御手段に接続され、前記メインメモリの更新履歴情報を格納するログメモリをさらに具備し、前記制御手段は、前記CPUによる前記メインメモリに対するデータ書き込みが実行される前に、データ書き込みが実行される番地に対応する前記メインメモリの更新前データおよびその更新前データに対応する冗長コードを前記メインメモリおよび前記冗長コードメモリからそれぞれ読み出し、それら更新前データおよび冗長コードを前記更新履歴情報として前記ログメモリに格納し、前記メインメモリの内容を障害発生前の状態に復元することが必要な障害が発生したとき、前記ログメモリに格納されている各更新履歴情報を構成する更新前データおよび冗長コードを前記メインメモリおよび前記冗長コードメモリにそれぞれ書き戻して、前記メインメモリを障害発生前の状態に復元すると共に、前記冗長コードメモリの内容を前記復元されたメインメモリの内容に対応する状態に戻すように構成することが好ましい。
【0016】
この構成により、ログメモリの内容を使用してメインメモリの内容を故障発生前の状態に復元できると共に、メモリ故障発生時にも、冗長コードを使用することにより正しいデータを再構成することができる。この場合、冗長コードを使用して正しいデータを再構成した後に障害発生前のチェックポイントから処理を再開することで、チェックポイントリスタート方式だけでは回復できないようなメモリ故障が発生した場合であっても、処理を継続できるようになる。
【0017】
また、更新前データだけでなく、その更新前データに対応する冗長コードも一緒にログメモリに格納することにより、メインメモリの内容を障害発生前の状態に復元することが必要な障害が発生したときは、ログメモリに格納されている各更新履歴情報を構成する更新前データおよび冗長コードをメインメモリおよび冗長コードメモリにそれぞれ書き戻すことで、メインメモリを障害発生前の状態に復元でき、且つ冗長コードメモリの内容についても復元されたメインメモリの内容に対応する状態に戻すことが可能となる。
【0018】
また、ログメモリに対する更新前データを含む更新履歴情報の格納はメインメモリに対するデータ書き込みが実行される前に行う必要があるが、キャッシュメモリを有するシステムにおいては、CPUによるキャッシュメモリに対するデータ書き込みが実行されたとき、そのデータ書き込みが実行された番地に対応するメインメモリの更新前データと、それに対応する冗長コードをメインメモリおよび冗長コードメモリからそれぞれ読み出して、それら更新前データおよび冗長コードを更新履歴情報としてログメモリに格納することによって、メインメモリに対するデータ書き込みが実行される前に更新履歴情報の格納を容易に行うことができる。
【0019】
また、前述の冗長コードメモリの代わりに、メインメモリの連続アクセスされる複数のデータ列から構成される単位データブロックそれぞれに対応して設けられた複数の記憶領域を有し、各記憶領域内に、その記憶領域に対応する単位データブロックに属する複数のデータ列それぞれの同一ビット位置についての垂直パリティデータを保持する垂直パリティメモリを使用することにより、パリティ処理という簡単な処理により、メモリ故障発生時にも正しいブロックデータを再現することが可能となる。
【0020】
さらに、垂直パリティメモリに代えて、メインメモリ上の複数のデータ列を各々が有する複数の単位データブロックを1組とする複数のデータブロックグループそれぞれに対応して設けられた複数の記憶領域を有し、各記憶領域内に、その記憶領域に対応するデータブロックグループに属する複数の単位データブロックそれぞれの同一ビット位置についての垂直パリティデータから構成されるブロックパリティデータを保持するブロックパリティメモリを採用することにより、メモリモジュール単位などの広範囲にわたるメモリ故障発生時にも正しいブロックデータを再現することが可能となる。
【0021】
【発明の実施の形態】
以下、図面を参照してこの発明の実施形態を説明する。
図1には、この発明の第1実施形態に係るコンピュータシステムの構成が概念的に示されている。このコンピュータシステムは、チェックポイント毎に障害回復に必要な情報をメインメモリに格納し、障害発生時にはログメモリに格納されているメインメモリの更新履歴情報を使用してメインメモリの内容を障害発生前のチェックポイントの時点に復元するという障害回復方式を採用したマルチプロセッサシステムであり、図示のように、プロセッサバス10、CPU11−1〜11−n、キャッシュメモリ12−1〜12−n、メインメモリ14、冗長コードメモリ(CM)16、およびビフォアイメージバッファ(BIB)17を備えている。
【0022】
キャッシュメモリ12−1〜12−nは、メインメモリ14を共有するCPU11−1〜11−nそれぞれの1次キャッシュまたは2次キャッシュとして使用されるものであり、チェックポイント取得時には、キャッシュメモリ12−1〜12−nの各々について、メインメモリ14に未反映のデータがメインメモリ14に書き込まれる。
【0023】
メインメモリ14は、パリティ付きメモリなどのようにエラー検出機能を有するメモリであり、CPUによる1回のメモリアクセスでリードライトされるデータ単位であるワード単位でそのワードのデータ列に対してパリティビットが付加される。
【0024】
冗長コードメモリ(CM)16は、エラー検出機能を有するメインメモリ14に対してエラー訂正機能を付加するために設けられたものであり、メインメモリ14のワード数分のエントリを有している。各エントリには、メインメモリ14の対応するワードの誤り訂正冗長コードが格納される。例えば、メインメモリ14のワードNについての誤り訂正冗長コードは、冗長コードメモリ16の第Nエントリに格納される。
【0025】
冗長コードメモリ(CM)16に対する誤り訂正冗長コードの書き込みは、バス10上にメインメモリ14にデータを書き込むためのバストランザクションが発行されたとき、そのバストランザクションに応答して実行される。この場合、バス10上に出力されるデータから誤り訂正冗長コードが生成され、またバス10上に出力されるメモリアドレスから誤り訂正冗長コードを書き込むべき冗長コードメモリ(CM)16のエントリ位置が決定される。
【0026】
ビフォアイメージバッファ(BIB)17は、あるチェックポイントから次のチェックポイントまでの期間におけるメインメモリ14の更新履歴情報を保持するためのログメモリとして使用されるものであり、メインメモリ14に対するデータ書き込みが行われる度、そのデータ書き込みに先立って、メインメモリ14のデータ書き込み番地を示すアドレスと、更新前データと、その更新前データに対応する冗長コードメモリ16の誤り訂正冗長コードとが、更新履歴情報としてビフォアイメージバッファ(BIB)17にスタック形式で蓄積される。誤り訂正冗長コードを、アドレスおよび更新前データと一緒に格納するのは、ビフォアイメージバッファ(BIB)17の更新履歴情報を使用してメインメモリ14の内容を復元するときに、それに合わせて冗長コードメモリ(CM)16の内容も一緒に復元できるようにするためである。
【0027】
メインメモリ14がパリティによる1ビット誤り検出能力しか持たない場合には、冗長コードメモリ16に格納する誤り訂正冗長コードとしては1ビット誤り訂正符号を用いることができる。
【0028】
次に、図2乃至図4を参照して、図1のシステムにおけるデータの流れを具体的に説明する。
まず、図2を参照して、冗長コードメモリ(CM)16に対する誤り訂正冗長コードの書き込み動作について具体的に説明する。
【0029】
図2に示されているように、バス10とメインメモリ14との間にはメインメモリコントローラ(MMコントローラ)13が設けられており、メインメモリ14のリードライト制御はそのメインメモリコントローラ(MMコントローラ)13によって実行される。また、冗長コードメモリ(CM)16とビフォアイメージバッファ(BIB)17それぞれとバス10との間にはBIB/CMコントローラ15が共通に設けられており、それら冗長コードメモリ(CM)16とビフォアイメージバッファ(BIB)17それぞれのリードライト制御はそのBIB/CMコントローラ15によって実行される。
【0030】
以下、CPU11−1からのデータをメインメモリ14のアドレスNに書き込む場合に行われる動作について説明する。
バス10上のトランザクション、つまりバス10上の各種コマンドやアドレスおよびデータはBIB/CMコントローラ15によって監視されており、CPU11−1からメインメモリ14にデータを書き込むためのトランザクションがバス10上に発行されると、その時のメモリアドレス(N)とデータ(Dold1)がBIB/CMコントローラ15によって取得される。このバストランザクションは、実際には、キャッシュメモリ12−1からメインメモリ14にデータをライトバックするときに行われる。
【0031】
一方、MMコントローラ13は、メインメモリ14にデータを書き込むためのトランザクションに応答して、アドレス(N)で指定されるワードNの番地にデータ(Dold1)を書き込む。この場合、データ(Dold1)の値からそれに対応するエラー検出ビット(P)がMMコントローラ13内部で生成され、データ(Dold1)はエラー検出ビット(P)が付加された状態でメインメモリ14に書き込まれる。
【0032】
BIB/CMコントローラ15においては、データ(Dold1)の値からそれの一部に生じた誤りを訂正することが可能な冗長コード(Cold1)がECC演算などによって生成され、その冗長コード(Cold1)がアドレス(N)に対応する冗長コードメモリ(CM)16のエントリ(N)に書き込まれる。
【0033】
前述したように、冗長コードメモリ(CM)16はメインメモリ14のワード数と同数のエントリを有しており、メインメモリ14の各ワードと冗長コードメモリ(CM)16のエントリとは1対1で対応している。したがって、メインメモリ14のワードNからのデータ(Dold1)の読み出し時に、そのデータエラーがMMコントローラ13によって検出された場合には、エラー処理用ソフトウェアなどが、冗長コードメモリ(CM)16のエントリ(N)の冗長コード(Cold1)とエラー検出されたデータとから正しいデータを再構成することにより、メインメモリ14のワードNのデータ(Dold1)を修復することができる。
【0034】
次に、図3を参照して、ビフォアイメージバッファ(BIB)17に対する更新履歴情報の書き込み動作について説明する。
ここでは、CPU11−1が、メインメモリ14のアドレス(N)で指定されるワードNの番地に書き込まれているデータをDold1からDnew1に更新する場合を例にとって説明する。
【0035】
この場合、Dnew1がキャッシュメモリ12−1に書き込まれた時、BIB/CMコントローラ15によって、データ(Dold1)とそれに対応する冗長コード(Cold1)がそれぞれメインメモリ14および冗長コードメモリ16から読み出される。そして、アドレス(N)、更新前データ(Dold1)、冗長コード(Cold1)から構成される更新履歴情報が、ビフォアイメージバッファ(BIB)17に格納される。
【0036】
次に、図4を参照して、ビフォアイメージバッファ(BIB)17に蓄積されている更新履歴情報を使用してメインメモリ14の内容を復元する動作について説明する。
【0037】
メインメモリ14の内容を障害発生前の状態に復元することが必要な障害が発生したとき、エラー処理用ソフトウェアなどの制御の下、ビフォアイメージバッファ(BIB)17から更新履歴情報が逐次読み出され、更新前データおよび冗長コードをそれぞれメインメモリ14および冗長コードメモリ16の該当する格納位置に書き戻す処理が行われる。
【0038】
例えば、ビフォアイメージバッファ(BIB)17に図示のような4つの更新履歴情報が蓄積されている場合には、まず、4つ目の更新履歴情報(アドレスN、更新前データDd、冗長コードCd)の書き戻し処理が行われ、メインメモリ14のアドレスNに更新前データDdが書き込まれると共に、冗長コードメモリ16のエントリNに冗長コードCdが書き込まれる。次に、3つ目の更新履歴情報(アドレス2、更新前データDc、冗長コードCc)の書き戻し処理が行われ、メインメモリ14のアドレス2に更新前データDcが書き込まれると共に、冗長コードメモリ16のエントリ2に冗長コードCcが書き込まれる。以下、同様にして、2つ目の更新履歴情報および1つ目の更新履歴情報の書き戻し処理が順次実行される。
【0039】
このようにして、メインメモリ14を障害発生前の状態に復元でき、且つ冗長コードメモリ16の内容についても復元されたメインメモリ14の内容に対応する状態に戻される。
【0040】
以上、ワード単位のメモリアクセスの場合について説明したが、メインメモリ14に対するアクセスがキャッシュブロック単位で行われる場合についても、同様にして誤り訂正冗長コードの書き込みおよび更新履歴情報の書き込みなどを行うことができる。すなわち、キャッシュブロックがnワードから構成されているとすると、1回のアクセスに対して前述の処理をn回繰り返し実行すればよい。
【0041】
次に、図5を参照して、BIB/CMコントローラ15の具体的なハードウェア構成について説明する。
BIB/CMコントローラ15は、図示のように、バスインターフェース制御部101、バストランザクション応答制御部102、バストランザクション発行制御部103、バッファアクセスコントローラ104、状態保存制御部105、およびコードメモリコントローラ106から構成されている。
【0042】
バスインターフェース制御部101はバス10上に定義された各種信号ラインに接続され、そのバス10との間でアドレス、データ、および各種ステータスを授受する。このバス10上には、図示のように、バス10上のデータ転送のために使用されるアドレス/データバス(addres/data)、およびコマンドライン(command)を始め、キャッシュ制御のためのステータスライン(shared,modified)などが定義されている。sharedラインは、メモリリードトランザクションで要求されたメモりデータのコピーをクリーンな状態で共有しているステータス(shared clean)を示す。modifiedラインは、メモリリードトランザクションで要求されたメモりデータのコピーを変更した状態で共有しているステータス(modified)を示す。
【0043】
バス10上のこれら各種信号ラインの状態をバスインターフェース制御部101を通じてモニタすることによって、キャッシュステータスおよびバストランザクションのスヌープがBIB/CMコントローラ15によって行われる。
【0044】
バストランザクション応答制御部102は、バスインターフェース制御部101を介して受け取った所定のバストランザクションに応答して動作するものであり、例えば、障害発生時には、ある任意のCPUによってバス10上に発行されるワードライトトランザクションに応答してそのトランザクションをアボートするなどの処理を行う。
【0045】
バストランザクション発行制御部102は、バス10上にメモリリード/ライトなどのトランザクションを発行するものであり、例えば、バスインターフェース制御部101を介して受け取ったバス10上の信号ラインの状態からキャッシュメモリへの書き込みが行われたことが検出されたときは、メインメモリ14から更新前データをリードするためのトランザクションを開始する。
【0046】
状態保存制御部105は、ビフォアイメージバッファ(BIB)17に更新履歴情報を保存する位置を指定するポインタ値の制御などを行うものであり、ビフォアイメージバッファ(BIB)17に更新履歴情報を格納する度に、ポインタ値を+1更新する。また、ビフォアイメージバッファ(BIB)17の更新履歴情報を用いてメインメモリ14を復旧する場合には、状態保存制御部105は、更新履歴情報の読み出しの度にポインタ値を現在の値から−1ずつ更新するなどの制御を行う。
【0047】
バッファアクセスコントローラ104は、ビフォアイメージバッファ(BIB)17との間に設けられたアドレスライン(BIB address)、データライン(BIB data)、リードライト制御ライン(BIB RAS#、CAS#、WE#)を使用してビフォアイメージバッファ(BIB)17に対するデータ書き込みおよび読み出しを制御する。
【0048】
コードメモリコントローラ106は、冗長コードメモリ(CM)16との間に設けられたアドレスライン(CM address)、データライン(CM data)、リードライト制御ライン(CM RAS#、CAS#、WE#)を使用して冗長コードメモリ(CM)16に対するデータ書き込みおよび読み出しを制御する。書き込み処理においては、コードメモリコントローラ106は、バスインターフェース制御部101を介して受け取ったバス10上のデータから冗長コードを演算によって生成し、それを冗長コードメモリ(CM)16に書き込む。
【0049】
次に、図6乃至図9を参照して、図5のシステムの具体的な動作について説明する。
図6のタイミングチャートには、任意のキャッシュメモリからメインメモリ14にデータをライトバックするときに実行される一連の動作が示されている。
【0050】
キャッシュメモリからメインメモリ14にデータをライトバックするときは、そのキャッシュメモリあるいはそれに対応するCPUによって、コマンドライン(COMMAND)上にキャッシュラインの書き戻しを示すコマンド(write−line)が発行され、またアドレスバス(addres bus)にはメモリアドレス(A)、データバス(data bus)にはライトデータ(Dnew)が出力される。キャッシュブロックが4ワードから構成される場合には、バースト転送が行われ、データDnew1〜Dnew4が連続的にデータバス(data bus)上に出力される。
【0051】
このバストランザクションに応答して、メインメモリコントローラ13およびBIB/CMコントローラ15が動作する。
メインメモリコントローラ13は、メインメモリ14との間に設けられたアドレスライン(MM address)、データライン(MM data)、リードライト制御ライン(MM RAS#、CAS#、WE#)を制御して、メインメモリ14のアドレス(A)から始まる連続する4つの番地にデータ(Dnew1〜Dnew4)を書き込む。
【0052】
一方、BIB/CMコントローラ15においては、コードメモリコントローラ106が動作し、まず、バス10上のデータ(Dnew1〜Dnew4)からそれに対応する冗長コード(Cnew1〜Cnew4)が演算によって生成される。そして、その冗長コード(Cnew1〜Cnew4)がデータライン(CM data)上に出力されると共に、バス10から受け取ったアドレス(A)から生成されたロウアドレス(Ar)およびカラムアドレス(Ac1〜Ac4)がアドレスライン(CM address)に出力されて、アドレス(A)に対応する冗長コードメモリ16のエントリに冗長コード(Cnew1〜Cnew4)が書き込まれる。
【0053】
このように、冗長コードメモリ16に対する冗長コードの書き込みは、キャッシュメモリからメインメモリ14にデータをライトバックするときに、そのライトバック処理と並行して、コードメモリコントローラ106によって自動的に実行される。
【0054】
図7には、任意のCPUがそれに対応するキャッシュメモリ中のsharedキャッシュラインに対する書き込みを行う場合に実行される一連の処理手順が示されている。
【0055】
sharedキャッシュラインに対する書き込みが行われると、共有データが変更されることをほかのキャッシュメモリに通知するために、バス10上のコマンドライン(command)上にはインバリデートコマンド(invalidate)が、アドレスバス(address bus)上には共有データのアドレス(A)がそれぞれ発行されて、インバリデートプロトコルが実行される。このインバリデートプロトコルでは、他のキャッシュメモリが共有データのコピーを無効化するまで、sharedキャッシュラインに対する書き込みは待たされる。
【0056】
BIB/CMコントローラ15のバストランザクション発行制御部103は、インバリデートコマンドを確認すると、その時のアドレス(A)を使用して、メインメモリ14からアドレス(A)の更新前データ(D1〜D4)を読み出すためのメモリリードトランザクションを開始する。このとき、バス10上のコマンドライン(command)上に発行されるコマンドはリードノンスヌープであり、各キャッシュメモリはそのリードサイクルに対してはスヌープ動作を行わない。
【0057】
メインメモリコントローラ13は、メモリリードトランザクションに応答して、アドレスライン(MM address)、データライン(MM data)、リードライト制御ライン(MM RAS#、CAS#、WE#)を制御して、メインメモリ14のアドレス(A)からデータ(D1〜D4)を読み出し、それをバス10のデータバス(data bus)上に出力する。
【0058】
一方、BIB/CMコントローラ15においては、バッファアクセスコントローラ104およびコードメモリコントローラ106にもアドレス(A)が渡される。コードメモリコントローラ106は、アドレスバス(CM address)上にアドレス(A)から生成されたロウアドレス(Ar)およびカラムアドレス(Ac1〜Ac4)を出力して、冗長コードメモリ16のエントリAから更新前データ(D1〜D4)に対応する冗長コード(C1〜C4)を読み出す。
【0059】
この後、バッファアクセスコントローラ104は、アドレス(A)と、バス10のデータバス(data bus)上に出力されたデータ(D1〜D4)と、コードメモリコントローラ106によって読み出された冗長コード(C1〜C4)とを更新履歴情報のデータ格納形式に組立てて、ポインタ値(P)で指定されるビフォアイメージバッファ(BIB)17のエントリに書き込む。
【0060】
このように、ビフォアイメージバッファ(BIB)17に対する更新履歴情報の書き込みは、キャッシュメモリにデータが書き込まれるとき、つまりキャッシュメモリからメインメモリ14にデータがライトバックされる前に、バストランザクション発行制御部103、バッファアクセスコントローラ104およびコードメモリコントローラ106によって自動的に実行される。
【0061】
図8には、メインメモリ14からのデータ読み出し時に、その読み出しデータのデータエラーが検出された場合の回復処理の流れが示されている。
ここでは、メインメモリ14の内容をエラー発生前のチェックポイントの時点に復元することなく、正しく元の命令へ復帰可能な場合について説明する。
【0062】
すなわち、ある時点でメインメモリ14に書き込まれているデータ(D)について、その後にそれをメインメモリ14から読み出したとき、もしそのデータ(D)がメモリエラーなどによって誤ったデータ値(D’)に置き換えられていると、メインメモリコントローラ13によるエラー検出コードのチェックによってメモリデータエラーの発生が検出される。このメモリデータエラーの発生は、ハードウェア割り込み信号などによって所定のCPUに通知され、そのCPUにてエラー割り込みルーチンが実行される。
【0063】
エラー割り込みルーチンを実行するCPUは、エラー割り込みが再度発生しないようにマスクし(ステップS10)、その後、メインメモリ14のエラーが発したアドレスに格納されているデータ(D’)をリードし、次いでそれに対応する冗長コード(C)を冗長コードメモリ16からリードする(ステップS11、S12)。この後、そのCPUは、データ(D’)と冗長コード(C)とから正しいデータ(D)を再構成し(ステップS13)、そのデータ(D)をメインメモリ14のエラーが発したアドレスに格納する(ステップS14)。
【0064】
この回復処理の手順は、ビフォアイメージバッファ(BIB)17を使用してないため、ビフォアイメージバッファ(BIB)17を使用したチェックポイントリスタート方式を採用してないシステムにおいても適用することができる。
【0065】
図9には、メインメモリ14からのデータ読み出し時に、その読み出しデータのデータエラーが検出された場合の回復処理の第2の例が示されている。
ここでは、あるチェックポイントCP1の以前にメインメモリ14に書き込まれているデータ(D)について、そのチェックポイントCP1の取得後にそれをメインメモリ14から初めて読み出したときに、そのデータ(D)がメモリエラーなどによって誤ったデータ値(D’)に置き換えられていることが検出された場合を想定する。
【0066】
このメモリエラーの発生は、メインメモリコントローラ13によるデータ値(D’)のエラー検出コードのチェックによって検出され、ハードウェア割り込み信号などによって所定のCPUに通知される。そして、そのCPUにてリカバリールーチンが実行される。
【0067】
リカバリールーチンを実行するCPUは、エラー割り込みが再度発生しないようにマスクし(ステップS20)、そしてメインメモリ14のエラーが発したアドレスに格納されているデータ(D’)をリードし、次いでそれに対応する冗長コード(C)を冗長コードメモリ16からリードする(ステップS21、S22)。この後、そのCPUは、データ(D’)と冗長コード(C)とから正しいデータ(D)を再構成し(ステップS23)、そのデータ(D)をメインメモリ14のエラーが発したアドレスに格納する(ステップS24)。
【0068】
次いで、そのCPUは、BIB/CMコントローラ15を制御して、ビフォアイメージバッファ(BIB)17の更新前データをメインメモリ14に書き戻し、冗長コードについては冗長コードメモリ16に書き戻す(ステップS25、S26)。この後、チェックポイントCP1で採取されたプロセス状態が各CPUに復元され、そのチェックポイントCP1から処理が再開される。
【0069】
このようにメモリエラーを修正した後にメインメモリ14の内容を障害発生前のチェックポイントの時点に復元することにより、再び誤ったメモリデータが読まれることによる同一障害の再発を防止できるようになる。従って、チェックポイントリスタート方式だけでは回復できないようなメモリ故障が発生した際にも、処理を継続できるようになる。
【0070】
図10には、この発明の第2実施形態に係るコンピュータシステムの構成が示されている。
このコンピュータシステムは、第1実施形態のシステムに設けられていた冗長コードメモリ16の代わりに垂直パリティメモリ21を採用し、ワード単位ではなく、バースト転送などのCPUによる連続アクセスでリードライトされる単位データブロック(キャッシュブロック)の単位でその誤り訂正のために使用される垂直パリティデータを管理するように構成されている。
【0071】
すなわち、メインメモリ14は、パリティ付きメモリなどのようにエラー検出機能を有するメモリであり、CPUによる1回のメモリアクセスでリードライトされるデータ単位であるワード単位でそのワードのデータ列に対してパリティビットが付加される。
【0072】
垂直パリティメモリ21は、エラー検出機能を有するメインメモリ14に対してエラー訂正機能を付加するために設けられたものであり、メインメモリ14に格納可能な単位データブロック数分のエントリを有している。各エントリには、メインメモリ14の対応する単位データブロックに属するデータ列間において、それらデータ列それぞれの同一ビット位置におけるビット配列から算出した垂直パリティデータが格納される。例えば、図11に示されているように、メインメモリ14のキャッシュブロックNの単位データブロックが各4バイトのデータD0〜D3から構成され、データD0〜D3それぞれに4ビットの水平パリティビットP0〜P3が付加されている場合には、垂直パリティメモリ21のエントリNには、データD0〜D3の同一ビット位置毎に算出された4バイトの垂直パリティDpと水平パリティビットP0〜P3の同一ビット位置毎に算出された4ビットの垂直パリティPpとを含む垂直パリティデータが格納されることになる。
【0073】
このように、水平パリティビットによって誤り検出が可能なデータ単位で単位データブロックを分割し、これらに対して計算した垂直パリティデータを垂直パリティメモリ21に格納することにより、エラー発生が検出されたデータについてそのどのビット位置がエラーしているかを垂直パリティデータから求めることができ、エラー訂正が可能となる。
【0074】
垂直パリティメモリ21に対する垂直パリティデータの書き込みは、キャッシュメモリのあるキャッシュラインをメインメモリ14にライトバックするためのバストランザクションがバス10上に発行されたとき、そのバストランザクションに応答して実行される。この場合、バス10上に連続的に出力される1キャッシュライン分の単位データブロックから垂直パリティデータが生成され、またバス10上に出力される単位ブロックアドレスから垂直パリティデータを書き込むべき垂直パリティメモリ21のエントリ位置が決定される。
【0075】
また、ワード単位の書き込みによってメインメモリのある単位データブロックに属する一部のデータだけが更新される場合については、更新対象の単位データブロックがメインメモリ14から読み出され、その単位データブロックと書き込みデータとの差分と、その読み出した単位データブロックに対応する垂直パリティメモリ21の垂直パリティデータとから、新たな垂直パリティデータが求められる。そして、その垂直パリティデータが、書き込みデータが属する単位データブロックに対応する垂直パリティメモリ21のエントリに書き込まれる。
【0076】
ビフォアイメージバッファ(BIB)17は、第1実施形態と同様に、あるチェックポイントから次のチェックポイントまでの期間におけるメインメモリ14の更新履歴情報を保持するためのログメモリとして使用されるものであり、メインメモリ14に対するデータ書き込みが行われる度、そのデータ書き込みに先立って、データ書き込みが行われる番地が属するメインメモリ14のキャッシュブロックアドレスと、更新前単位データブロックと、その更新前単位データブロックに対応する垂直パリティデータとが、更新履歴情報としてビフォアイメージバッファ(BIB)17にスタック形式で蓄積される。
【0077】
メインメモリ14のリードデータに誤りが検出された場合は、メインメモリ14の水平パリティによる誤り検出結果と垂直パリティデータとから誤りを生じたビット位置が特定され、正しいデータの再構築が行われる。そして、それがメインメモリ14に書き戻される。
【0078】
この第2実施形態においては、垂直パリティデータの生成、ビフォアイメージバッファ(BIB)17に対する更新履歴情報のリードライト制御は図5で説明した第1実施形態と同様のハードウェアによって実現される。すなわち、図5のシステムにおける冗長コードメモリ16を垂直パリティメモリ21に置き換えてその動作を説明すると、垂直パリティメモリ21に対する垂直パリティデータの書き込みは、キャッシュメモリからメインメモリ14にデータをライトバックするときに、そのライトバック処理と並行して、コードメモリコントローラ106によって自動的に実行される。また、ビフォアイメージバッファ(BIB)17に対する更新履歴情報の書き込みも、キャッシュメモリにデータが書き込まれるとき、つまりキャッシュメモリからメインメモリ14にデータがライトバックされる前に、バストランザクション発行制御部103、バッファアクセスコントローラ104およびコードメモリコントローラ106によって自動的に実行される。
【0079】
また、第2実施形態における障害回復処理についても、図8および図9で説明した第1実施形態と同様の手順で行うことができる。すなわち、メインメモリ14の内容を障害発生前のチェックポイントの状態に復元する場合には、垂直パリティデータを使用して正しいデータを再構築した後、ビフォアイメージバッファ(BIB)17から更新履歴情報が逐次読み出され、更新前単位データブロックおよび垂直パリティデータをそれぞれメインメモリ14および垂直パリティメモリ21の該当する格納位置に書き戻す処理が行われる。
【0080】
以上では、メインメモリのデータはパリティを持ち1ビット誤り検出ができる場合について説明したが、SEC−DED符号を用いる場合も同様の構成が可能である。この場合には、メインメモリのデータリードの際に2ビット誤りが検出された時に上記と同様の方法で正しいデータを再構築して障害回復が可能となる。
【0081】
図12には、この発明の第3実施形態に係るコンピュータシステムの構成が示されている。
このコンピュータシステムは、第1実施形態のシステムに設けられていた冗長コードメモリ16の代わりにブロックパリティメモリ22を採用し、ワード単位ではなく、バースト転送などのCPUによる連続アクセスでリードライトされる単位データブロック(キャッシュブロック)を4つで1組とするデータブロックグループ単位でその誤り訂正のために使用されるブロックパリティデータを管理するように構成されている。
【0082】
すなわち、メインメモリ14は、パリティ付きメモリなどのようにエラー検出機能を有するメモリであり、CPUによる1回のメモリアクセスでリードライトされるデータ単位であるワード単位でそのワードのデータ列に対してパリティビットが付加される。
【0083】
ブロックパリティメモリ22は、エラー検出機能を有するメインメモリ14に対してエラー訂正機能を付加するために設けられたものであり、メインメモリ14に格納可能なデータブロックグループ数分のエントリを有している。各エントリには、メインメモリ14の対応するデータブロックグループに属するデータブロック間において、それらデータそれぞれの同一ビット位置におけるビット配列から算出した垂直パリティデータが格納される。
【0084】
このように、1回のキャッシュライン操作でリードライトできる単位データブロック単位でブロックデータグループを分割し、これらに対して計算した垂直パリティデータをブロックパリティメモリ22に格納することにより、エラー発生が検出された単位データブロックの単位データについてはメインメモリ14の水平パリティによって検出でき、そのどのビット位置がエラーしているかについてはブロックパリティデータから求めることができ、これによってエラー訂正が可能となる。
【0085】
ブロックパリティメモリ22に対するブロックパリティデータの書き込みは、キャッシュメモリのあるキャッシュラインをメインメモリ14にライトバックするためのバストランザクションがバス10上に発行されたことが検出されたときに、実行される。この場合、バス10上に連続的に出力される1キャッシュライン分の単位データブロックによって更新されるデータブロックがメインメモリ14から読み出され、そのデータブロックと書き込まれる単位データブロックとの差分(排他的論理和)と、そのデータブロックグループに対応するブロックパリティメモリ22のブロックパリティデータとから、新たなブロックパリティデータが生成される。そして、そのブロックパリティデータが、書き込み対象の単位データブロックが属するデータブロックグループに対応するブロックパリティメモリ22のエントリに書き込まれる。
【0086】
ビフォアイメージバッファ(BIB)17は、第1実施形態と同様に、あるチェックポイントから次のチェックポイントまでの期間におけるメインメモリ14の更新履歴情報を保持するためのログメモリとして使用されるものであり、メインメモリ14に対するデータ書き込みが行われる度、そのデータ書き込みに先立って、データ書き込みが行われる番地が属するメインメモリ14のブロックデータグループのアドレスと、更新前データブロックグループと、その更新前データブロックグループに対応するブロックパリティデータとが、更新履歴情報としてビフォアイメージバッファ(BIB)17にスタック形式で蓄積される。
【0087】
なお、この場合、前記の新たなブロックパリティデータを生成する際に必要な更新前のデータブロックとブロックパリティデータは、更新履歴情報としてビフォアイメージバッファ(BIB)に格納するために読み出されるため、両者は兼用することができ、各々1回のアクセスで済ませるように制御することが可能である。
【0088】
メインメモリ14のリードデータに誤りが検出された場合は、メインメモリ14の水平パリティによる誤り検出結果とブロックパリティデータとから誤りを生じたビット位置が特定され、正しいデータの再構築が行われる。そして、それがメインメモリ14に書き戻される。具体的には、エラー検出されたデータが属するデータブロックグループのすべての単位データブロックがメインメモリ14から読み出され、これらと対応するブロックパリティデータとから正しいブロックデータグループの再生が行われる。
【0089】
この第3実施形態においては、ブロックパリティデータの生成、ビフォアイメージバッファ(BIB)17に対する更新履歴情報のリードライト制御は図5で説明した第1実施形態と同様のハードウェアによって実現される。すなわち、図5のシステムにおける冗長コードメモリ16をブロックパリティメモリ22に置き換えてその動作を説明すると、ブロックパリティメモリ22に対するブロックパリティデータの書き込みは、キャッシュメモリからメインメモリ14にデータをライトバックするときに、そのライトバック処理と並行して、コードメモリコントローラ106によって自動的に実行される。また、ビフォアイメージバッファ(BIB)17に対する更新履歴情報の書き込みも、キャッシュメモリにデータが書き込まれるとき、つまりキャッシュメモリからメインメモリ14にデータがライトバックされる前に、バストランザクション発行制御部103、バッファアクセスコントローラ104およびコードメモリコントローラ106によって自動的に実行される。
【0090】
また、第3実施形態における障害回復処理についても、図8および図9で説明した第1実施形態と同様の手順で行うことができる。すなわち、メインメモリ14の内容を障害発生前のチェックポイントの状態に復元する場合には、ブロックパリティデータを使用して正しいデータを再構築した後、ビフォアイメージバッファ(BIB)17から更新履歴情報が逐次読み出され、更新前データブロックグループおよびブロックパリティデータをそれぞれメインメモリ14およびブロックパリティメモリ22の該当する格納位置に書き戻す処理が行われる。
【0091】
以上では、メインメモリのデータはパリティを持ち1ビット誤り検出ができる場合について説明したが、SEC−DED符号を用いる場合も同様の構成が可能である。この場合には、メインメモリのデータリードの際に2ビット誤りが検出された時に上記と同様の方法で正しいデータを再構築して障害回復が可能となる。
【0092】
なお、以上の説明ではどの実施形態においても、ビフォアイメージバッファ(BIB)17に対して更新前データとそれに対応する誤り訂正のための冗長コード(ECC、垂直パリティ、ブロックパリティ)とを同時に書き込む場合を説明したが、冗長コードについては、それを格納するための冗長コードメモリ16、垂直パリティメモリ21、またはブロックパリティメモリ22の更新時に行ってもよい。この場合、新たな冗長コードの書き込みによって更新される冗長コードが冗長コードメモリ16、垂直パリティメモリ21、またはブロックパリティメモリ22から読み出され、それがビフォアイメージバッファ(BIB)17に書き込まれる。
【0093】
【発明の効果】
以上説明したように、この発明によれば、既存のパリティ付きメモリなどの資源をそのまま使用した状態で誤り訂正機能を持つメモリサブシステムを付加ハードによって構築できるようになり、メモリ故障に対する信頼性の高いコンピュータシステムを実現できる。また、ログメモリを使用したチェックポイントリスタート方式では回復できないようなメモリ故障が発生した際にも処理を継続できるようになり、メモリを2重化することなく、少ないハードウェアで十分な耐故障性能を実現できる。
【図面の簡単な説明】
【図1】この発明の第1の実施形態に係るコンピュータシステムの構成を示すブロック図。
【図2】同第1実施形態のシステムにおける冗長コードメモリに対する誤り訂正コードの書き込み動作を説明するための図。
【図3】同第1実施形態のシステムにおけるBIBメモリに対する更新履歴情報の書き込み動作を説明するための図。
【図4】同第1実施形態のシステムにおけるメインメモリおよび冗長コードメモリの復元動作を説明するための図。
【図5】同第1実施形態のシステムで採用される具体的なハードウェア構成を示すブロック図。
【図6】図5のシステムにおいてキャッシュからメインメモリに対するライトバック処理で実行される一連の動作を説明するタイミングチャート。
【図7】図5のシステムにおいてキャッシュ中のsharedラインに対する書き込み処理で実行される一連の動作を説明するタイミングチャート。
【図8】図5のシステムで実行される障害回復処理の第1の手順を説明するフローチャート。
【図9】図5のシステムで実行される障害回復処理の第2の手順を説明するフローチャート。
【図10】この発明の第2の実施形態に係るコンピュータシステムの構成を示すブロック図。
【図11】同第2実施形態のシステムにおける垂直パリティデータの生成原理を説明するための図。
【図12】この発明の第3の実施形態に係るコンピュータシステムの構成を示すブロック図。
【符号の説明】
10…プロセッサバス、11−1〜11−n…CPU、12−1〜12−n…キャッシュメモリ、13…メインメモリコントローラ、14…メインメモリ、15…BIB/CMコントローラ、16…冗長コードメモリ(CM)、17…ビフォアイメージバッファ(BIB)、21…垂直パリティメモリ、22…ブロックパリティメモリ、101…バスインターフェース制御部、102…バストランザクション応答制御部、103…バストランザクション発行制御部、104…バッファアクセスコントローラ、105…状態保存制御部、106…コードメモリコントローラ。
Claims (7)
- 1以上のCPUと、前記CPUとバスを介して接続され、パリティが付加されたデータを記憶するパリティ付きメインメモリとを有するコンピュータシステムにおいて、
キャッシュメモリと、
前記バスと前記メインメモリとの間に設けられ、前記メインメモリを制御するメモリコントローラと、
前記メインメモリに対するリードライトアクセスの単位となる番地それぞれに対応して設けられた複数の記憶領域を有し、各記憶領域内にその記憶領域に対応する前記メインメモリの番地に格納されているデータの一部に生じた誤りを訂正可能な冗長コードを保持する冗長コードメモリと、
前記バスと前記冗長コードメモリとの間に設けられ、前記冗長コードメモリを制御する制御装置であって、前記バス上に発行されるバストランザクションを監視し、前記キュッシュメモリから前記メインメモリへのライトバックが実行されるときに、前記バス上のデータの値からそのデータに対応する冗長コードを生成し、その冗長コードを前記単位データの書き込み番地に対応する前記冗長コードメモリの記憶領域に格納する制御装置と、
前記メインメモリからのデータ読み出し時にその読み出しデータのデータエラーが前記メモリコントローラによるパリティのチェックによって検出された場合、前記読み出しデータと当該読み出しデータに対応する前記冗長コードメモリに格納された冗長コードとから正しいデータを再構成する誤り訂正手段とを具備することを特徴とするコンピュータシステム。 - 前記制御手段に接続され、前記メインメモリの更新履歴情報を格納するログメモリをさらに具備し、
前記制御手段は、前記CPUによる前記メインメモリに対するデータ書き込みが実行される前に、データ書き込みが実行される番地に対応する前記メインメモリの更新前データおよびその更新前データに対応する冗長コードを前記メインメモリおよび前記冗長コードメモリからそれぞれ読み出し、それら更新前データおよび冗長コードを前記更新履歴情報として前記ログメモリに格納する手段を含み、
前記メインメモリの内容を障害発生前の状態に復元することが必要な障害が発生したとき、前記ログメモリに格納されている各更新履歴情報を構成する更新前データおよび冗長コードを前記メインメモリおよび前記冗長コードメモリにそれぞれ書き戻して、前記メインメモリを障害発生前の状態に復元すると共に、前記冗長コードメモリの内容を前記復元されたメインメモリの内容に対応する状態に戻す手段をさらに具備することを特徴とする請求項1記載のコンピュータシステム。 - 前記制御手段は、
前記CPUによる前記キャッシュメモリに対するデータ書き込みが実行されたとき、そのデータ書き込みが実行された番地に対応する前記メインメモリの更新前データと、それに対応する冗長コードを前記メインメモリおよび前記冗長コードメモリからそれぞれ読み出し、それら更新前データおよび冗長コードを前記更新履歴情報として前記ログメモリに格納することを特徴とする請求項2記載のコンピュータシステム。 - 1以上のCPUと、前記CPUとバスを介して接続され、パリティが付加されたデータを記憶するパリティ付きメインメモリとを有するコンピュータシステムであって、チェックポイント毎に障害回復に必要な情報を前記メインメモリに格納し、障害発生時に前記ログメモリに格納されている更新履歴情報を使用して前記メインメモリの内容を前記障害発生前のチェックポイントの時点に復元するコンピュータシステムにおいて、
キャッシュメモリと、
前記バスと前記メインメモリとの間に設けられ、前記メインメモリを制御するメモリコントローラと、
前記メインメモリに対するリードライトアクセスの単位となる番地それぞれに対応して 設けられた複数の記憶領域を有し、各記憶領域内にその記憶領域に対応する前記メインメモリの番地に格納されているデータの一部に生じた誤りを訂正可能な冗長符号を保持する冗長コードメモリと、
前記メインメモリの更新履歴情報を格納するログメモリと、
前記バス、前記冗長コードメモリおよび前記ログメモリに接続され、前記冗長コードメモリおよび前記ログメモリを制御する制御装置であって、前記バス上に発行されるバストランザクションを監視し、前記キュッシュメモリから前記メインメモリへのライトバックが実行されるときに、前記バス上のデータの値からそのデータに対応する冗長コードを生成し、その冗長コードを前記単位データの書き込み番地に対応する前記冗長コードメモリの記憶領域に格納する手段と、前記CPUによる前記キャッシュメモリに対するデータ書き込みが実行されたとき、そのデータ書き込みが実行された番地に対応する前記メインメモリの更新前データと、それに対応する冗長コードを前記メインメモリおよび前記冗長コードメモリからそれぞれ読み出し、それら更新前データおよび冗長コードを前記更新履歴情報として前記ログメモリに格納する手段とを含む制御装置と、
前記メインメモリからのデータ読み出し時にその読み出しデータのデータエラーが前記メモリコントローラによるパリティのチェックによって検出された場合、前記読み出しデータと当該読み出しデータに対応する前記冗長コードメモリに格納された冗長コードとから正しいデータを再構成し、当該再構成されたデータを前記メインメモリに書き込む誤り訂正手段と、
前記メインメモリの内容を障害発生前の状態に復元することが必要な障害が発生したとき、前記ログメモリに格納されている各更新履歴情報を構成する更新前データおよび冗長コードを前記メインメモリおよび前記冗長コードメモリにそれぞれ書き戻して、前記メインメモリを障害発生前の状態に復元すると共に、前記冗長コードメモリの内容を前記復元されたメインメモリの内容に対応する状態に戻す手段とを具備することを特徴とするコンピュータシステム。 - 1以上のCPUと、前記CPUとバスを介して接続され、リードライトアクセスの単位となるデータ列毎にパリティによる誤り検出機能を有するパリティ付きメインメモリとを有するコンピュータシステムにおいて、
キャッシュメモリと、
前記バスと前記メインメモリとの間に設けられ、前記メインメモリを制御するメモリコントローラと、
前記メインメモリの連続アクセスされる複数のデータ列から構成される単位データブロックそれぞれに対応して設けられた複数の記憶領域を有し、各記憶領域内に、その記憶領域に対応する単位データブロックに属する複数のデータ列それぞれの同一ビット位置についての垂直パリティデータを保持する垂直パリティメモリと、
前記バスと前記垂直パリティメモリとの間に設けられ、前記垂直パリティメモリを制御する制御装置であって、前記バス上に発行されるバストランザクションを監視し、前記キュッシュメモリから前記メインメモリに対する単位データブロックのライトバックが実行されるときに、前記バス上の単位データブロックの値からその単位データブロックに対応する前記垂直パリティデータを生成し、その垂直パリティデータを前記単位データブロックに対応する前記垂直パリティメモリの記憶領域に格納する制御装置と、
前記メインメモリからのデータ読み出し時にその読み出しデータのデータエラーが前記メモリコントローラによるパリティのチェックによって検出された場合、そのデータエラーが検出されたデータが属する単位データブロックと、その単位データブロックに対応する前記垂直パリティメモリの垂直パリティデータとから正しい単位データブロックを再構成する手段とを具備することを特徴とするコンピュータシステム。 - 1以上のCPUと、1以上のCPUと、前記CPUとバスを介して接続され、パリティが付加されたデータを記憶するパリティ付きメインメモリと、キャッシュメモリと、前記バスと前記メインメモリとの間に設けられ、前記メインメモリを制御するメモリコントローラと、前記メインメモリに対するリードライトアクセスの単位となる 番地それぞれに対応して設けられた複数の記憶領域を有し、各記憶領域内にその記憶領域に対応する前記メインメモリの番地に格納されているデータの一部に生じた誤りを訂正可能な冗長コードを保持する冗長コードメモリと、前記バスと前記冗長コードメモリとの間に設けられ、前記バス上に発行されるバストランザクションを監視し、前記キュッシュメモリから前記メインメモリへのライトバックが実行されるときに、前記バス上のデータの値からそのデータに対応する冗長コードを生成し、その冗長コードを前記単位データの書き込み番地に対応する前記冗長コードメモリの記憶領域に格納する制御装置とを有するコンピュータシステムの障害回復方法であって、
前記メインメモリからのデータ読み出し時にその読み出しデータのデータエラーが前記メモリコントローラによるパリティのチェックによって検出された場合、前記読み出しデータと当該読み出しデータに対応する前記冗長コードメモリに格納された冗長コードとから正しいデータを再構築し、
当該再構築されたデータを前記メインメモリに書き込むことを特徴とする障害回復方法。 - 前記制御手段に接続され、前記メインメモリの更新履歴情報を格納するログメモリをさらに具備し、前記制御手段は、前記CPUによる前記メインメモリに対するデータ書き込みが実行される前に、データ書き込みが実行される番地に対応する前記メインメモリの更新前データおよびその更新前データに対応する冗長コードを前記メインメモリおよび前記冗長コードメモリからそれぞれ読み出し、それら更新前データおよび冗長コードを前記更新履歴情報として前記ログメモリに格納する手段を含み、
前記メインメモリの内容を障害発生前の状態に復元することが必要な障害が発生したとき、前記ログメモリに格納されている各更新履歴情報を構成する更新前データおよび冗長コードを前記メインメモリおよび前記冗長コードメモリにそれぞれ書き戻して、前記メインメモリを障害発生前の状態に復元すると共に、前記冗長コードメモリの内容を前記復元されたメインメモリの内容に対応する状態に戻すことを特徴とする請求項6記載の障害回復方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15124996A JP3788822B2 (ja) | 1996-06-12 | 1996-06-12 | コンピュータシステムおよびそのシステムにおける障害回復方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15124996A JP3788822B2 (ja) | 1996-06-12 | 1996-06-12 | コンピュータシステムおよびそのシステムにおける障害回復方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09330303A JPH09330303A (ja) | 1997-12-22 |
JP3788822B2 true JP3788822B2 (ja) | 2006-06-21 |
Family
ID=15514539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP15124996A Expired - Fee Related JP3788822B2 (ja) | 1996-06-12 | 1996-06-12 | コンピュータシステムおよびそのシステムにおける障害回復方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3788822B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10320274A (ja) * | 1997-03-19 | 1998-12-04 | Toshiba Corp | キャッシュフラッシュ装置及び同装置を備えた計算機システム、記録媒体 |
JP2009157756A (ja) * | 2007-12-27 | 2009-07-16 | Toshiba Corp | 情報処理装置およびデータ復旧方法 |
JP2009169747A (ja) * | 2008-01-17 | 2009-07-30 | Toshiba Corp | 情報処理装置およびデータ復旧方法 |
JP2011060217A (ja) * | 2009-09-14 | 2011-03-24 | Toshiba Corp | データ蓄積装置及びデータ書込み/読出し方法 |
-
1996
- 1996-06-12 JP JP15124996A patent/JP3788822B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH09330303A (ja) | 1997-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5379417A (en) | System and method for ensuring write data integrity in a redundant array data storage system | |
US5325519A (en) | Fault tolerant computer with archival rollback capabilities | |
JP3129732B2 (ja) | コピーバックキャッシュを有する記憶装置アレイ | |
US5613059A (en) | On-line restoration of redundancy information in a redundant array system | |
US5761705A (en) | Methods and structure for maintaining cache consistency in a RAID controller having redundant caches | |
JP3283530B2 (ja) | ディスク・アレイにおいてパリティ保全性を維持するための妥当性検査システム | |
EP0889409B1 (en) | Mirrored write-back cache module warmswap | |
US6785783B2 (en) | NUMA system with redundant main memory architecture | |
US10452498B2 (en) | Fault tolerance for persistent main memory | |
US6868506B2 (en) | Data recovery method and apparatus | |
EP0802485B1 (en) | Host-based RAID-5 and NV-RAM integration and method therefor | |
US5632013A (en) | Memory and system for recovery/restoration of data using a memory controller | |
US10896088B2 (en) | Metadata recovery mechanism for page storage | |
JP3851093B2 (ja) | データ転送方法及びデータ処理システム | |
US7076686B2 (en) | Hot swapping memory method and system | |
US6810489B1 (en) | Checkpoint computer system utilizing a FIFO buffer to re-synchronize and recover the system on the detection of an error | |
JP3788822B2 (ja) | コンピュータシステムおよびそのシステムにおける障害回復方法 | |
RU2327236C2 (ru) | Оперативное запоминающее устройство с высокой степенью отказоустойчивости | |
JP3450132B2 (ja) | キャッシュ制御回路 | |
JPH10240620A (ja) | コンピュータシステムおよび同システムにおけるチェックポイントイメージ保存方法 | |
JPH04127242A (ja) | パリティデータによるボリュームの自動修正方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040517 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050405 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050527 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060322 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060324 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090407 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100407 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100407 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110407 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130407 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140407 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |