(57)【要約】【課題】メモリミラーを行う際、メインメモリと同じ容量のミラーメモリを持たない限り、全てのデータを保証することはできない。【解決手段】メモリ冗長化装置は、データを格納するためのメインメモリと、メインメモリと同じ容量を必要とせず、メインメモリの冗長データを保持するための部分的なミラーメモリと、メインメモリに最後に書き込んだデータをミラーメモリに格納する擬似ＬＲＵアルゴリズムを採用し、比較的アクセス頻度の高いデータとマスクアドレスとをミラーメモリに残すコントローラとを備える。【選択図】図１
2013020515.tif 000002
【特許請求の範囲】
【請求項１】
データを格納するためのメインメモリと、
前記メインメモリと同じ容量を必要とせず、前記メインメモリの冗長データを保持するための部分的なミラーメモリと、
前記メインメモリに最後に書き込んだデータを前記ミラーメモリに格納する擬似ＬＲＵアルゴリズムを採用し、比較的アクセス頻度の高いデータとマスクアドレスとを前記ミラーメモリに残すコントローラと
を具備する
メモリ冗長化装置。
【請求項２】
請求項１に記載のメモリ冗長化装置であって、
前記コントローラは、
前記ミラーメモリに対して、本来のアドレスを一部分マスクしたマスクアドレスで索引する索引処理部と、
前記メインメモリと同じデータをミラーメモリに書き込む書き込み処理部と、
前記ミラーメモリに前記マスクアドレスを格納するマスクアドレス格納処理部と、
前記メインメモリのデータが破壊されていた場合、前記ミラーメモリに正常なデータが格納されているか判断し、前記ミラーメモリに正常なデータが格納されている場合、前記メインメモリの破壊されたデータの代わりに、前記ミラーメモリの正常なデータを採用するメモリ制御部と
を具備する
メモリ冗長化装置。
【請求項３】
請求項１又は２に記載のメモリ冗長化装置であって、
前記コントローラは、前記メインメモリの特定のアドレスに固定故障が発生している場合、前記メインメモリの特定のアドレスに対応する前記ミラーメモリのアドレスを、前記メインメモリの特定のアドレスのデータ冗長用のアドレスとして固定する
メモリ冗長化装置。
【請求項４】
計算機により実施されるメモリ冗長化方法であって、
メインメモリにデータを格納することと、
前記メインメモリと同じ容量を必要とせず前記メインメモリの冗長データを保持するための部分的なミラーメモリに、前記メインメモリに最後に書き込んだデータを格納する擬似ＬＲＵアルゴリズムを採用し、比較的アクセス頻度の高いデータとマスクアドレスとを前記ミラーメモリに残すことと
を含む
メモリ冗長化方法。
【請求項５】
請求項４に記載のメモリ冗長化方法であって、
前記ミラーメモリに対して、本来のアドレスを一部分マスクしたマスクアドレスで索引することと、
前記メインメモリと同じデータをミラーメモリに書き込むことと、
前記ミラーメモリに前記マスクアドレスを格納することと、
前記メインメモリのデータが破壊されていた場合、前記ミラーメモリに正常なデータが格納されているか判断することと、
前記ミラーメモリに正常なデータが格納されている場合、前記メインメモリの破壊されたデータの代わりに、前記ミラーメモリの正常なデータを採用することと
を更に含む
メモリ冗長化方法。
【請求項６】
請求項４又は５に記載のメモリ冗長化方法であって、
前記メインメモリの特定のアドレスに固定故障が発生している場合、前記メインメモリの特定のアドレスに対応する前記ミラーメモリのアドレスを、前記メインメモリの特定のアドレスのデータ冗長用のアドレスとして固定すること
を更に含む
メモリ冗長化方法。
【請求項７】
計算機により実施されるプログラムであって、
メインメモリにデータを格納するステップと、
前記メインメモリと同じ容量を必要とせず前記メインメモリの冗長データを保持するための部分的なミラーメモリに、前記メインメモリに最後に書き込んだデータを格納する擬似ＬＲＵアルゴリズムを採用し、比較的アクセス頻度の高いデータとマスクアドレスとを前記ミラーメモリに残すステップと
を計算機に実行させるための
プログラム。
【請求項８】
請求項７に記載のプログラムであって、
前記ミラーメモリに対して、本来のアドレスを一部分マスクしたマスクアドレスで索引するステップと、
前記メインメモリと同じデータをミラーメモリに書き込むステップと、
前記ミラーメモリに前記マスクアドレスを格納するステップと、
前記メインメモリのデータが破壊されていた場合、前記ミラーメモリに正常なデータが格納されているか判断するステップと、
前記ミラーメモリに正常なデータが格納されている場合、前記メインメモリの破壊されたデータの代わりに、前記ミラーメモリの正常なデータを採用するステップと
を更に計算機に実行させるための
プログラム。
【請求項９】
請求項７又は８に記載のプログラムであって、
前記メインメモリの特定のアドレスに固定故障が発生している場合、前記メインメモリの特定のアドレスに対応する前記ミラーメモリのアドレスを、前記メインメモリの特定のアドレスのデータ冗長用のアドレスとして固定するステップ
を更に計算機に実行させるための
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ冗長化装置に関し、特に部分的メモリミラーを行うメモリ冗長化装置に関する。
【背景技術】
【０００２】
メモリの冗長性・信頼性を高める技術の１つとして、「ＥＣＣ」（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ  ａｎｄ  Ｃｏｒｒｅｃｔｉｎｇ：エラー検出訂正）という技術が知られている。
【０００３】
ＥＣＣに対応したメモリは、本来のデータとは別に付加された冗長データを持つ。この冗長データを「ＥＣＣコード」（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ：誤り訂正符号）と呼ぶ。一般的には、ＥＣＣに対応したメモリには、６４ビットのデータにＥＣＣコードが付加されて書き込まれている。ＥＣＣコードは、予め６４ビットのデータの並びを８ビットで定義しておいたものである。
【０００４】
メモリにアクセス可能なコントローラは、メモリからデータを読み出す際、６４ビットのデータから８ビットのＥＣＣコードを生成して、元のＥＣＣコードと比較する。ＥＣＣコードの値が同じである場合、データにエラーがなく読み出せたと判断する。反対に、ＥＣＣコードの値が異なる場合、データエラーが発生していると判断し、ＥＣＣコードから正しいデータを算出して、データを訂正する。
【０００５】
しかし、ＥＣＣでは、シングルビット（１ビット）のエラーの訂正可能であるが、マルチビット（２ビット以上）のエラーは検出できても訂正はできない。
【０００６】
マルチビットエラーを訂正するための技術として、「拡張ＥＣＣ」（アドバンストＥＣＣ）という技術も知られている。
【０００７】
しかし、拡張ＥＣＣは、例えば、４ビットのメモリの場合、各メモリの４ビットのデータを、それぞれ分割して４つのコントローラに入力することで、仮にメモリ全体が障害を起こしたとしても、各コントローラでは、1ビットのエラーとして処理でき、データの訂正を行うことができるというものである。すなわち、メモリのビット数分だけコントローラを用意する必要がある。
【０００８】
現在、メモリの二重化によりデータを保護する「メモリミラー」という技術が知られている。
【０００９】
メモリミラーでは、ミラー化した構成を実現し、メモリ保護を行う。メモリミラーを行うことで、コントローラが１つでも、マルチビットエラーのようなＥＣＣでは訂正不可能なエラーからデータを保護することが可能になる。
【００１０】
メモリミラーのために、メインメモリと対になるミラーメモリ（冗長メモリ）を構成した場合、データはミラー化した２つのメモリ（メインメモリとミラーメモリ）に同時に書き込まれる。
【００１１】
しかし、現在の技術では、メモリミラーを行う際、メインメモリと同じ容量のミラーメモリを持たない限り、全てのデータを保証することはできない。
【００１２】
したがって、メモリミラーを実現するためには、必要容量の２倍の物理メモリ容量を必要としていた。このため、メモリ価格も必要容量の２倍となってしまうという問題があった。また、１つのメモリモジュールを２分してミラー化した場合、実際に使用可能なメモリ容量は、全体容量のうちの半分となってしまうという問題もあった。
【００１３】
Ｉｎｔｅｌ（登録商標）社のマルチコア・プロセッサ「Ｗｅｓｔｍｅｒｅ−ＥＸ」には、これを削減する目的で、部分的メモリミラー（Ｐａｒｔｉａｌ  Ｍｅｍｏｒｙ  Ｍｉｒｒｏｒ）機能が搭載されている。
【００１４】
しかし、この機能を活用するためには、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）側の対応も必要なため、実際にはＯＳ側が非対応で活用できないケースが多い。
【００１５】
そのため、メモリミラーを実現する際、最低限の冗長ＨＷ（ハードウェア：ｈａｒｄｗａｒｅ）リソース量の追加で投資（リソース投入量）以上の救済率を図りたいという要望が高まっている。
【００１６】
関連する技術として、特許文献１（特開２００９−１９９４７８号公報）にメモリミラーリング自動構成制御方式が開示されている。この関連技術では、計算機は、ユーザが設定したメモリ使用率の閾値情報を保有している。ＯＳは、常に現在使用しているメモリ使用率と、計算機が保有しているメモリ使用率の閾値を比較し監視する。ＯＳは、現在使用しているメモリの使用率が、メモリ使用率の閾値以上になったことを検出したとき、Ｆ／Ｗ（ＦｉｒｍＷａｒｅ）に対してメモリ使用率が閾値を超えたことを報告する。報告を受け取った計算機のＦ／Ｗは、メモリミラーリングによって、ＯＳが参照できないメモリをＨｏｔ−Ｒｅｍｏｖｅする。その後Ｆ／Ｗはメモリミラーリング機能を解除し、このメモリを再びＨｏｔ−Ａｄｄする。更にＦ／Ｗは、Ｈｏｔ−Ａｄｄしたメモリを、ＯＳが新たに参照できるメモリアドレス空間に配置し、ＯＳに対して作業完了の報告を行う。
【００１７】
また、特許文献２（特開２０１１−０４８７４２号公報）にミラーリング制御装置、ミラーリング制御回路、ミラーリング制御方法およびそのプログラムが開示されている。この関連技術では、第１記憶部は、対象データの分割により生成された第１分割後データと第２分割後データのうちの第１分割後データと、第２分割後データのコピーデータとを所定の間隔の各アドレスに記憶する。第２記憶部は、第２分割後データと、第１分割後データのコピーデータとを所定の間隔の各アドレスに記憶する。そして、対象データの読み出し要求に基づいて、当該読み出し要求が示すアドレスとそのアドレスを基準とする所定の間隔の他のアドレスから第１分割後データと第２分割後データのコピーデータとを第１記憶部から読み出す。また、対象データの読み出し要求に基づいて、当該読み出し要求が示すアドレスとそのアドレスを基準とする所定の間隔の他のアドレスから第２分割後データと第１分割後データのコピーデータとを第２記憶部から読み出す。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特開２００９−１９９４７８号公報
【特許文献２】特開２０１１−０４８７４２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１９】
本発明の目的は、ＨＷ制御のみで、部分的なメモリミラーを実現し、擬似ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）により投資したＨＷリソース量以上の効果（救済率）を実現するメモリ冗長化装置を提供することである。
【課題を解決するための手段】
【００２０】
本発明に係るメモリ冗長化装置は、データを格納するためのメインメモリと、該メインメモリと同じ容量を必要とせず、該メインメモリの冗長データを保持するための部分的なミラーメモリと、該メインメモリに最後に書き込んだデータを該ミラーメモリに格納する擬似ＬＲＵアルゴリズムを採用し、比較的アクセス頻度の高いデータとマスクアドレスとを該ミラーメモリに残すコントローラとを具備する。
【００２１】
本発明に係るメモリ冗長化方法は、計算機により実施されるメモリ冗長化方法であって、メインメモリにデータを格納することと、該メインメモリと同じ容量を必要とせず該メインメモリの冗長データを保持するための部分的なミラーメモリに、該メインメモリに最後に書き込んだデータを格納する擬似ＬＲＵアルゴリズムを採用し、比較的アクセス頻度の高いデータとマスクアドレスとを該ミラーメモリに残すこととを含む。
【００２２】
本発明に係るプログラムは、上記のメモリ冗長化方法における処理を、計算機に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【発明の効果】
【００２３】
最低限の冗長ＨＷリソース量の追加で投資以上の救済率を図ることが可能になる。
【図面の簡単な説明】
【００２４】
【図１】本発明に係るメモリ冗長化装置の構成例を示す概念図である。
【図２】本発明に係るメモリ冗長化装置の構成要素であるコントローラの構成例を示すブロック図である。
【図３】本発明に係るメモリ冗長化装置の動作概要を示す図である。
【図４】本発明に係るメモリ冗長化装置の実施例を示す図である。
【発明を実施するための形態】
【００２５】
＜第１実施形態＞
以下に、本発明の第１実施形態について添付図面を参照して説明する。
【００２６】
［基本構成］
図１に示すように、本発明に係るメモリ冗長化装置は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０と、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０と、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０を含む。
【００２７】
メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０は、データ（Ｄａｔａ）を記憶するための半導体記憶装置である。
【００２８】
ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のデータの複製を保存するための冗長メモリである。
【００２９】
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０とミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０との間のメモリミラーを制御するためのメモリアクセスコントローラである。
【００３０】
［データの書き込み（Ｗｒｉｔｅ）］
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、メモリにデータを書き込む際は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０とミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０に同時に書き込む。
【００３１】
［データの読み出し（Ｒｅａｄ）］
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、メモリからデータを読み出す際は、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ  ａｎｄ  Ｃｏｒｒｅｃｔｉｎｇ）により、データからＥＣＣコードを生成して、元のＥＣＣコードと比較することで、データエラーが発生していないか確認する。エラーが発生していない場合、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、更にメインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０とミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０の両方のデータを比較して、値が同じであることを確認する。もし、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０で訂正不可能なエラーが検出された場合、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のデータの代わりに、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のデータを使用して業務を継続することが可能である。
【００３２】
なお、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、メモリでエラーが発生していないか事前に検査を行い、エラーを事前に検出するメモリパトロールを行う機能を有していても良い。この場合、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、メモリパトロールを行い、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）やアプリケーションソフトウェア（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｏｆｔｗａｒｅ）がメモリを使用する前にエラー発生を検出し、エラー訂正や縮退を行う。
【００３３】
図１においては、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、「（ａ＝一致）ａｎｄ（ｂ＝ｅｒｒｏｒ）ａｎｄ（ｃ＝ｎｏｒｍａｌ）」の条件を満たすとき、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のデータの代わりに、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のデータを選択する。詳細については、以下に説明する。
【００３４】
［コントローラの構成］
図２を参照して、コントローラの構成の詳細について説明する。
【００３５】
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、索引処理部３１と、書き込み処理部３２と、マスクアドレス格納処理部３３と、メモリ制御部３４を備える。
【００３６】
索引処理部３１は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０の冗長データを保持するための部分的なミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０に対して、本来のアドレス（Ａｄｄｒｅｓｓ）を一部分マスクしたアドレス情報（マスクアドレス）で索引する。
【００３７】
書き込み処理部３２は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０と同じデータをミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０に書き込む。
【００３８】
マスクアドレス格納処理部３３は、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のマスクアドレス格納領域にマスクアドレスを格納する。
【００３９】
メモリ制御部３４は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のデータが破壊されていた場合、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０に、目的とする正常なデータが格納されているか判断し、正常なデータが格納されている場合、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のデータ（破壊されたデータ）の代わりに、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のデータ（正常なデータ）を選択・採用する。
【００４０】
［ハードウェアの例示］
以下に、本発明に係るメモリ冗長化装置を実現するための具体的なハードウェアの例について説明する。
【００４１】
メモリ冗長化装置の例として、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、シンクライアントサーバ、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。他にも、メモリ冗長化装置の例として、携帯電話機、スマートフォン、スマートブック、カーナビ（カーナビゲーションシステム）、携帯型ゲーム機、家庭用ゲーム機、携帯型音楽プレーヤー、ハンディターミナル、ガジェット（電子機器）、双方向テレビ、デジタルチューナー、デジタルレコーダー、情報家電（ｉｎｆｏｒｍａｔｉｏｎ  ｈｏｍｅ  ａｐｐｌｉａｎｃｅ）、ＰＯＳ（Ｐｏｉｎｔ  ｏｆ  Ｓａｌｅ）端末、ＯＡ（Ｏｆｆｉｃｅ  Ａｕｔｏｍａｔｉｏｎ）機器、店頭端末・高機能コピー機、デジタルサイネージ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｇｅ：電子看板）等も考えられる。メモリ冗長化装置は、車両や船舶、航空機等の移動体に搭載されていても良い。なお、メモリ冗長化装置は、端末やサーバに限らず、中継機器や周辺機器でも良い。また、メモリ冗長化装置は、計算機等に搭載される拡張ボードや、物理マシン上に構築された仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）でも良い。
【００４２】
図示しないが、上記のようなメモリ冗長化装置は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリと、ネットワークとの通信に用いられるインターフェースによって実現される。
【００４３】
上記のプロセッサの例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ネットワークプロセッサ（ＮＰ：Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路（ＩＣ：Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等が考えられる。
【００４４】
上記のメモリの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置を想定している。現在の市場で使用されているメモリの殆どは、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。ＤＲＡＭは、駆動方式の違いにより、「ＳＤＲＡＭ」（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）、「ＤＤＲ  ＳＤＲＡＭ」（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  ＳＤＲＡＭ）、「ＤＤＲ２  ＳＤＲＡＭ」（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  ２  ＳＤＲＡＭ）、「ＤＤＲ３  ＳＤＲＡＭ」（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  ３  ＳＤＲＡＭ）等に分類することができる。他にも、メモリの例として、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のリムーバブルディスクや、ＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等の記憶媒体（メディア）等が考えられる。或いは、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＦＣ−ＳＡＮ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＩＰ−ＳＡＮ（ＩＰ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等を用いたストレージ装置でも良い。また、バッファ（ｂｕｆｆｅｒ）やレジスタ（ｒｅｇｉｓｔｅｒ）でも良い。
【００４５】
なお、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の１チップ化が進んでいる。したがって、メモリ冗長化装置に搭載される１チップマイコンが、上記のプロセッサ及び上記のメモリを備えている事例が考えられる。
【００４６】
上記のインターフェースの例として、ネットワーク通信に対応した基板（マザーボード、Ｉ／Ｏボード）やチップ等の半導体集積回路、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。
【００４７】
また、ネットワークの例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。
【００４８】
例えば、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０及びミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０は、上記のメモリにより実現される。コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、上記のプロセッサにより実現される。
【００４９】
なお、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０内の各部（内部構成）は、モジュール（ｍｏｄｕｌｅ）、コンポーネント（ｃｏｍｐｏｎｅｎｔ）、或いは専用デバイス、又はこれらの起動（呼出）プログラムでも良い。
【００５０】
但し、実際には、これらの例に限定されない。
【００５１】
［動作概要］
図３を参照して、本発明に係るメモリ冗長化装置の動作概要について説明する。
【００５２】
（１）ステップＳ１
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、データの書き込み時、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０にデータを書き込むと同時に、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０にも、マスクアドレスと共にデータを書き込む。結果として、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０には、最近書き込みが発生したデータが格納されていることになる。
【００５３】
（２）ステップＳ２
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、データの読み出し時、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０に訂正不可エラーが発生した場合、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のマスクアドレスを調べ、該当アドレスのデータであった場合、そのデータのみ、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０側から取り出す。
【００５４】
（３）ステップＳ３
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、該当アドレス以外のデータ（他のデータ）であった場合、擬似ＬＲＵ制御を行い、最後に書き込み（Ｗｒｉｔｅ）されたデータを優先して格納する。
【００５５】
これにより、データを救済できる確率が高まる。
【００５６】
［実施例］
図４を参照して、本発明に係るメモリ冗長化装置の実施例について説明する。
【００５７】
（１）アドレス「０ｘ００００」に対し、データ「Ｄａｔａ＃００００」の書き込み（Ｗｒｉｔｅ）が発生。
【００５８】
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のアドレス「０ｘ００００」に対し、データ「Ｄａｔａ＃００００」の書き込み（Ｗｒｉｔｅ）を行う。
【００５９】
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ００００」に対し、データ「Ｄａｔａ＃００００」の書き込み（Ｗｒｉｔｅ）を行う。また、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ００００」に対するマスクアドレスとして「０」を格納する（マスクアドレス＝０）。
【００６０】
（２）アドレス「０ｘ０００１」に対し、データ「Ｄａｔａ＃０００１」の書き込み（Ｗｒｉｔｅ）が発生。
【００６１】
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のアドレス「０ｘ０００１」に対し、データ「Ｄａｔａ＃０００１」の書き込み（Ｗｒｉｔｅ）を行う。
【００６２】
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ０００１」に対し、データ「Ｄａｔａ＃０００１」の書き込み（Ｗｒｉｔｅ）を行う。また、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ０００１」に対するマスクアドレスとして「０」を格納する（マスクアドレス＝０）。
【００６３】
（３）アドレス「０ｘ８０００」に対し、データ「Ｄａｔａ＃８０００」の書き込み（Ｗｒｉｔｅ）が発生。
【００６４】
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のアドレス「０ｘ８０００」に対し、データ「Ｄａｔａ＃８０００」の書き込み（Ｗｒｉｔｅ）を行う。
【００６５】
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ００００」に対し、データ「Ｄａｔａ＃８０００」の書き込み（Ｗｒｉｔｅ）を行う。既に書き込まれているデータ「Ｄａｔａ＃００００」は消去される。すなわち、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ００００」に格納されているデータ「Ｄａｔａ＃００００」を、データ「Ｄａｔａ＃８０００」に上書き／更新する。また、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ００００」に対するマスクアドレスを、「０」から「１」に上書き／更新する（マスクアドレス０→１）。
【００６６】
（４）アドレス「０ｘ８０００」のデータ「Ｄａｔａ＃８０００」の破壊が発生。
【００６７】
ここで、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のアドレス「０ｘ８０００」に格納されているデータ「Ｄａｔａ＃８０００」が、データ「Ｄａｔａ＃８００２」に変化したとする（データ破壊発生）。メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のアドレス「０ｘ８０００」には、破壊されたデータ「Ｄａｔａ＃８００２」が格納されていることになる。
【００６８】
ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ００００」には、正常なデータ「Ｄａｔａ＃８０００」が格納されている。このとき、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ００００」に対するマスクアドレスは、「１」のままである（マスクアドレス＝１）。
【００６９】
（５）アドレス「０ｘ８０００」に対するデータ読み出しが発生。
【００７０】
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のアドレス「０ｘ８０００」からデータ「Ｄａｔａ＃８００２」の読み出し（Ｒｅａｄ）を行う。このとき、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ  ａｎｄ  Ｃｏｒｒｅｃｔｉｎｇ）エラーが検出され、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のデータが不正であることが判明する。すなわち、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ  ａｎｄ  Ｃｏｒｒｅｃｔｉｎｇ）エラーが検出されるため、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のアドレス「０ｘ８０００」のデータが不正であると判断する。
【００７１】
一方、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ００００」からデータ「Ｄａｔａ＃８０００」の読み出し（Ｒｅａｄ）を行う。このデータは、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ  ａｎｄ  Ｃｏｒｒｅｃｔｉｎｇ）エラーが検出されないため、正常なデータであることが判る。また、マスクアドレスが「１」であるため、アドレス「０ｘ８０００」のデータであることが判る。すなわち、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ  ａｎｄ  Ｃｏｒｒｅｃｔｉｎｇ）エラーが検出されず、マスクアドレスが「１」であるため、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ８０００」のデータが正常であると判断する。
【００７２】
これにより、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０ではなく、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ８０００」に格納されているデータ「Ｄａｔａ＃８０００」が採用される。
【００７３】
ここでは、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、所定のアドレスに対するデータ読み出しが発生した際、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０とミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０から、同時にデータの読み出し（Ｒｅａｄ）を行う。
【００７４】
或いは、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のデータが不正であることが判明した場合にのみ、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のデータの読み出し（Ｒｅａｄ）を行うようにしても良い。
【００７５】
（６）アドレス「０ｘ００００」に対するデータ読み出しが発生。
【００７６】
この後、仮に、アドレス「０ｘ００００」のデータ「Ｄａｔａ＃００００」を読み出す必要が発生し、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のデータ「Ｄａｔａ＃００００」が破壊されていた場合には、このミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０では救済できない。
【００７７】
しかし、アドレス「０ｘ００００」よりも、後からアクセスされたアドレス「０ｘ８０００」の方が、確率的には、次の読み出し（Ｒｅａｄ）でアクセスされる確率が高い。すなわち、擬似的なＬＲＵ制御が実現される。
【００７８】
したがって、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のＨＷリソース量がメインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０の５０％でありながら、データ破壊時の救済率は５０％より高くなるということが期待できる。
【００７９】
なお、実際には、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のＨＷリソース量がメインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０の５０％以外の場合でも、搭載した冗長ＨＷリソース量以上の救済率を期待できる。
【００８０】
＜第２実施形態＞
以下に、本発明の第２実施形態について説明する。
【００８１】
本実施形態では、データ破壊が発生したメインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のアドレス「０ｘ８０００」に対し、正常なデータ「Ｄａｔａ＃８０００」を書き戻すことで、データの正常性を回復させる。
【００８２】
例えば、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のアドレス「０ｘ８０００」からデータ「Ｄａｔａ＃８００２」の読み出し（Ｒｅａｄ）を行う。このとき、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ  ａｎｄ  Ｃｏｒｒｅｃｔｉｎｇ）エラーが検出され、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のデータが不正であることが判明したとする。
【００８３】
この場合、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ００００」からデータ「Ｄａｔａ＃８０００」の読み出し（Ｒｅａｄ）を行う。このとき、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ  ａｎｄ  Ｃｏｒｒｅｃｔｉｎｇ）エラーが検出されないため、正常なデータであることが判明する。また、マスクアドレスが「１」であるため、アドレス「０ｘ８０００」のデータであることが判明する。
【００８４】
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ８０００」から読み出されたデータ「Ｄａｔａ＃８０００」を選択・採用する。
【００８５】
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のアドレス「０ｘ８０００」に対し、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ８０００」から読み出されたデータ「Ｄａｔａ＃８０００」の書き込み（Ｗｒｉｔｅ）を行う。
【００８６】
これにより、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のアドレス「０ｘ８０００」の破壊されたデータ「Ｄａｔａ＃８００２」が、正常なデータ「Ｄａｔａ＃８０００」に書き戻される。
【００８７】
以降、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のアドレス「０ｘ８０００」から、正常なデータ「Ｄａｔａ＃８０００」を読み出すことが可能になる。
【００８８】
［補足］
本実施形態において、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０とミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０とを、互いに読み替えても良い。実際には、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０側のデータが正常で、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０側にデータの破壊が発生する場合も考えられる。ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０側のデータの破壊を放置することは好ましくないため、このような場合、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０の破壊されたデータを、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０の正常なデータ「Ｄａｔａ＃８０００」に書き戻す。
【００８９】
＜第３実施形態＞
以下に、本発明の第３実施形態について説明する。
【００９０】
本実施形態では、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０側に固定故障（ｐｅｒｍａｎｅｎｔ  ｆａｕｌｔ）が発生した場合、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０側で冗長化するアドレスを固定する。
【００９１】
固定故障とは、物理的／電気的な破損等により、メモリの所定のアドレスが誤ったデータに固定されてしまい、常にエラーとなる状態である。
【００９２】
例えば、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のアドレス「０ｘ８０００」に固定故障が発生している場合、このアドレスに対応するミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ００００」を、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のアドレス「０ｘ８０００」のデータ冗長用のアドレスとして固定する。
【００９３】
以降、アドレス「０ｘ００００」に対し、データ書き込みが発生した場合でも、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ００００」に対しては、書き込み／書き換えを行わない。
【００９４】
すなわち、アドレス「０ｘ００００」に対しては、メモリミラーを実施せず、固定故障が発生しているアドレス「０ｘ８０００」に対してのメモリミラーに専念する。
【００９５】
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）３０は、本来、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）１０のアドレス「０ｘ８０００」に書き込むべきデータを、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）２０のアドレス「０ｘ００００」に書き込む。
【００９６】
メモリの交換が不可能である状況では固定故障は深刻な問題であるが、本実施形態では、メモリの交換を行うことなく、固定故障への対処が可能となる。
【００９７】
＜各実施形態の関係＞
なお、上記の各実施形態は、組み合わせて実施することも可能である。
【００９８】
＜本発明の特徴＞
以上のように、本発明に係るメモリ冗長化装置は、擬似ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）による部分的メモリミラー（Ｐａｒｔｉａｌ  Ｍｅｍｏｒｙ  Ｍｉｒｒｏｒ）を実現する。また、本発明に係るメモリ冗長化装置は、ＨＷ制御のみで、部分的メモリミラーを実現する。また、擬似ＬＲＵにより、投資したＨＷリソース量以上の効果（救済率）を実現している。
【００９９】
具体的には、本発明に係るメモリ冗長化装置は、ミラーメモリをメインメモリに対して部分的に所持する。また、本発明に係るメモリ冗長化装置は、擬似ＬＲＵアルゴリズムに基づく制御により、メインメモリに最後に書き込んだデータとマスクアドレスをミラーメモリに残すことで、ＨＷのみの制御で、最低限のＨＷリソース量により効率的なメモリミラー機能を提供する。
【０１００】
通常、メモリミラーを行う際、メインメモリと同じ容量のミラーメモリを持たない限り、全てのデータを保証することはできない。
【０１０１】
しかし、メモリのアクセスには、時間的局所性という性質があり、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）アルゴリズムを用いれば、部分的なミラーメモリであっても効率的にデータの保証をすることができる。
【０１０２】
完全なＬＲＵアルゴリズムを実現するためには、アクセスする度に情報を残す必要があるため、多くのＨＷリソース量が必要となるが、メインメモリに最近更新されたデータをミラーメモリに格納しておくという擬似ＬＲＵアルゴリズムを採用することで、比較的アクセス頻度の高いデータをミラーメモリに残すことができる。
【０１０３】
また、この際、マスクしたアドレス情報をデータと一緒にミラーメモリに格納することにより、簡単なＨＷ制御で、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）やＦ／Ｗ（ＦｉｒｍＷａｒｅ）に頼ることなく、最低限のＨＷ追加で、効率的な部分メモリミラー機能を提供することができる。
【０１０４】
本発明に係るメモリ冗長化装置は、ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）のＨＷリソース量がメインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）の５０％であっても、データ破壊時の救済率は５０％より高くすることを可能にする。すなわち、搭載した冗長ＨＷリソース量以上の救済率を期待できるという効果がある。
【０１０５】
本発明は、高可用性が要求されるがコストを抑えたい高可用性サーバのメモリ保護分野においても利用が期待される。
【０１０６】
＜付記＞
上記の実施形態の一部又は全部は、以下の付記のように記載することも可能である。但し、実際には、以下の記載例に限定されない。
【０１０７】
（付記１）
データを格納するためのメインメモリと、
前記メインメモリと同じ容量を必要とせず、前記メインメモリの冗長データを保持するための部分的なミラーメモリと、
前記メインメモリに最後に書き込んだデータを前記ミラーメモリに格納する擬似ＬＲＵアルゴリズムを採用し、比較的アクセス頻度の高いデータとマスクアドレスとを前記ミラーメモリに残すコントローラと
を具備する
メモリ冗長化装置。
【０１０８】
（付記２）
付記１に記載のメモリ冗長化装置であって、
前記コントローラは、
前記ミラーメモリに対して、本来のアドレスを一部分マスクしたマスクアドレスで索引する索引処理部と、
前記メインメモリと同じデータをミラーメモリに書き込む書き込み処理部と、
前記ミラーメモリに前記マスクアドレスを格納するマスクアドレス格納処理部と、
前記メインメモリのデータが破壊されていた場合、前記ミラーメモリに正常なデータが格納されているか判断し、前記ミラーメモリに正常なデータが格納されている場合、前記メインメモリの破壊されたデータの代わりに、前記ミラーメモリの正常なデータを採用するメモリ制御部と
を具備する
メモリ冗長化装置。
【０１０９】
（付記３）
付記２に記載のメモリ冗長化装置であって、
前記メモリ制御部は、前記ミラーメモリに正常なデータが格納されている場合、前記ミラーメモリの正常なデータを基に、前記メインメモリの破壊されたデータを正常なデータに書き戻し、以降、前記メインメモリから正常なデータを読み出す
メモリ冗長化装置。
【０１１０】
（付記４）
付記１乃至３のいずれか一項に記載のメモリ冗長化装置であって、
前記コントローラは、前記メインメモリの特定のアドレスに固定故障が発生している場合、前記メインメモリの特定のアドレスに対応する前記ミラーメモリのアドレスを、前記メインメモリの特定のアドレスのデータ冗長用のアドレスとして固定する
メモリ冗長化装置。
【０１１１】
＜備考＞
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【符号の説明】
【０１１２】
１０…  メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）
２０…  ミラーメモリ（Ｍｉｒｒｏｒ  Ｍｅｍｏｒｙ）
３０…  コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）
３１…  索引処理部
３２…  書き込み処理部
３３…  マスクアドレス格納処理部
３４…  メモリ制御部
【図１】
2013020515.tif 000003
【図２】
2013020515.tif 000004
【図３】
2013020515.tif 000005
【図４】
2013020515.tif 000006