データを格納するためのメインメモリと、前記メインメモリと同じ容量を必要とせず、前記メインメモリの冗長データを保持するための部分的なミラーメモリと、前記メインメモリに最後に書き込んだデータを前記ミラーメモリに格納する擬似LRUアルゴリズムを採用し、比較的アクセス頻度の高いデータとマスクアドレスとを前記ミラーメモリに残すコントローラとを具備するメモリ冗長化装置。請求項1に記載のメモリ冗長化装置であって、前記コントローラは、前記ミラーメモリに対して、本来のアドレスを一部分マスクしたマスクアドレスで索引する索引処理部と、前記メインメモリと同じデータをミラーメモリに書き込む書き込み処理部と、前記ミラーメモリに前記マスクアドレスを格納するマスクアドレス格納処理部と、前記メインメモリのデータが破壊されていた場合、前記ミラーメモリに正常なデータが格納されているか判断し、前記ミラーメモリに正常なデータが格納されている場合、前記メインメモリの破壊されたデータの代わりに、前記ミラーメモリの正常なデータを採用するメモリ制御部とを具備するメモリ冗長化装置。請求項1又は2に記載のメモリ冗長化装置であって、前記コントローラは、前記メインメモリの特定のアドレスに固定故障が発生している場合、前記メインメモリの特定のアドレスに対応する前記ミラーメモリのアドレスを、前記メインメモリの特定のアドレスのデータ冗長用のアドレスとして固定するメモリ冗長化装置。計算機により実施されるメモリ冗長化方法であって、メインメモリにデータを格納することと、前記メインメモリと同じ容量を必要とせず前記メインメモリの冗長データを保持するための部分的なミラーメモリに、前記メインメモリに最後に書き込んだデータを格納する擬似LRUアルゴリズムを採用し、比較的アクセス頻度の高いデータとマスクアドレスとを前記ミラーメモリに残すこととを含むメモリ冗長化方法。請求項4に記載のメモリ冗長化方法であって、前記ミラーメモリに対して、本来のアドレスを一部分マスクしたマスクアドレスで索引することと、前記メインメモリと同じデータをミラーメモリに書き込むことと、前記ミラーメモリに前記マスクアドレスを格納することと、前記メインメモリのデータが破壊されていた場合、前記ミラーメモリに正常なデータが格納されているか判断することと、前記ミラーメモリに正常なデータが格納されている場合、前記メインメモリの破壊されたデータの代わりに、前記ミラーメモリの正常なデータを採用することとを更に含むメモリ冗長化方法。請求項4又は5に記載のメモリ冗長化方法であって、前記メインメモリの特定のアドレスに固定故障が発生している場合、前記メインメモリの特定のアドレスに対応する前記ミラーメモリのアドレスを、前記メインメモリの特定のアドレスのデータ冗長用のアドレスとして固定することを更に含むメモリ冗長化方法。計算機により実施されるプログラムであって、メインメモリにデータを格納するステップと、前記メインメモリと同じ容量を必要とせず前記メインメモリの冗長データを保持するための部分的なミラーメモリに、前記メインメモリに最後に書き込んだデータを格納する擬似LRUアルゴリズムを採用し、比較的アクセス頻度の高いデータとマスクアドレスとを前記ミラーメモリに残すステップとを計算機に実行させるためのプログラム。請求項7に記載のプログラムであって、前記ミラーメモリに対して、本来のアドレスを一部分マスクしたマスクアドレスで索引するステップと、前記メインメモリと同じデータをミラーメモリに書き込むステップと、前記ミラーメモリに前記マスクアドレスを格納するステップと、前記メインメモリのデータが破壊されていた場合、前記ミラーメモリに正常なデータが格納されているか判断するステップと、前記ミラーメモリに正常なデータが格納されている場合、前記メインメモリの破壊されたデータの代わりに、前記ミラーメモリの正常なデータを採用するステップとを更に計算機に実行させるためのプログラム。請求項7又は8に記載のプログラムであって、前記メインメモリの特定のアドレスに固定故障が発生している場合、前記メインメモリの特定のアドレスに対応する前記ミラーメモリのアドレスを、前記メインメモリの特定のアドレスのデータ冗長用のアドレスとして固定するステップを更に計算機に実行させるためのプログラム。本発明の目的は、HW制御のみで、部分的なメモリミラーを実現し、擬似LRULeastRecentlyUsedにより投資したHWリソース量以上の効果救済率を実現するメモリ冗長化装置を提供することである。本発明に係るメモリ冗長化装置は、データを格納するためのメインメモリと、該メインメモリと同じ容量を必要とせず、該メインメモリの冗長データを保持するための部分的なミラーメモリと、該メインメモリに最後に書き込んだデータを該ミラーメモリに格納する擬似LRUアルゴリズムを採用し、比較的アクセス頻度の高いデータとマスクアドレスとを該ミラーメモリに残すコントローラとを具備する。本発明に係るメモリ冗長化方法は、計算機により実施されるメモリ冗長化方法であって、メインメモリにデータを格納することと、該メインメモリと同じ容量を必要とせず該メインメモリの冗長データを保持するための部分的なミラーメモリに、該メインメモリに最後に書き込んだデータを格納する擬似LRUアルゴリズムを採用し、比較的アクセス頻度の高いデータとマスクアドレスとを該ミラーメモリに残すこととを含む。本発明に係るプログラムは、上記のメモリ冗長化方法における処理を、計算機に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。最低限の冗長HWリソース量の追加で投資以上の救済率を図ることが可能になる。<第1実施形態>以下に、本発明の第1実施形態について添付図面を参照して説明する。[基本構成]図1に示すように、本発明に係るメモリ冗長化装置は、メインメモリMainMemory10と、ミラーメモリMirrorMemory20と、コントローラController30を含む。メインメモリMainMemory10は、データDataを記憶するための半導体記憶装置である。ミラーメモリMirrorMemory20は、メインメモリMainMemory10のデータの複製を保存するための冗長メモリである。コントローラController30は、メインメモリMainMemory10とミラーメモリMirrorMemory20との間のメモリミラーを制御するためのメモリアクセスコントローラである。[データの書き込みWrite]コントローラController30は、メモリにデータを書き込む際は、メインメモリMainMemory10とミラーメモリMirrorMemory20に同時に書き込む。[データの読み出しRead]コントローラController30は、メモリからデータを読み出す際は、ECCErrorCheckingandCorrectingにより、データからECCコードを生成して、元のECCコードと比較することで、データエラーが発生していないか確認する。エラーが発生していない場合、コントローラController30は、更にメインメモリMainMemory10とミラーメモリMirrorMemory20の両方のデータを比較して、値が同じであることを確認する。もし、メインメモリMainMemory10で訂正不可能なエラーが検出された場合、コントローラController30は、メインメモリMainMemory10のデータの代わりに、ミラーメモリMirrorMemory20のデータを使用して業務を継続することが可能である。なお、コントローラController30は、メモリでエラーが発生していないか事前に検査を行い、エラーを事前に検出するメモリパトロールを行う機能を有していても良い。この場合、コントローラController30は、メモリパトロールを行い、OSOperatingSystemやアプリケーションソフトウェアApplicationSoftwareがメモリを使用する前にエラー発生を検出し、エラー訂正や縮退を行う。図1においては、コントローラController30は、a=一致andb=errorandc=normalの条件を満たすとき、メインメモリMainMemory10のデータの代わりに、ミラーメモリMirrorMemory20のデータを選択する。詳細については、以下に説明する。[コントローラの構成]図2を参照して、コントローラの構成の詳細について説明する。コントローラController30は、索引処理部31と、書き込み処理部32と、マスクアドレス格納処理部33と、メモリ制御部34を備える。索引処理部31は、メインメモリMainMemory10の冗長データを保持するための部分的なミラーメモリMirrorMemory20に対して、本来のアドレスAddressを一部分マスクしたアドレス情報マスクアドレスで索引する。書き込み処理部32は、メインメモリMainMemory10と同じデータをミラーメモリMirrorMemory20に書き込む。マスクアドレス格納処理部33は、ミラーメモリMirrorMemory20のマスクアドレス格納領域にマスクアドレスを格納する。メモリ制御部34は、メインメモリMainMemory10のデータが破壊されていた場合、ミラーメモリMirrorMemory20に、目的とする正常なデータが格納されているか判断し、正常なデータが格納されている場合、メインメモリMainMemory10のデータ破壊されたデータの代わりに、ミラーメモリMirrorMemory20のデータ正常なデータを選択採用する。[ハードウェアの例示]以下に、本発明に係るメモリ冗長化装置を実現するための具体的なハードウェアの例について説明する。メモリ冗長化装置の例として、PCパソコン、アプライアンスappliance、シンクライアントサーバ、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。他にも、メモリ冗長化装置の例として、携帯電話機、スマートフォン、スマートブック、カーナビカーナビゲーションシステム、携帯型ゲーム機、家庭用ゲーム機、携帯型音楽プレーヤー、ハンディターミナル、ガジェット電子機器、双方向テレビ、デジタルチューナー、デジタルレコーダー、情報家電informationhomeappliance、POSPointofSale端末、OAOfficeAutomation機器、店頭端末高機能コピー機、デジタルサイネージDigitalSignage:電子看板等も考えられる。メモリ冗長化装置は、車両や船舶、航空機等の移動体に搭載されていても良い。なお、メモリ冗長化装置は、端末やサーバに限らず、中継機器や周辺機器でも良い。また、メモリ冗長化装置は、計算機等に搭載される拡張ボードや、物理マシン上に構築された仮想マシンVM:VirtualMachineでも良い。図示しないが、上記のようなメモリ冗長化装置は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリと、ネットワークとの通信に用いられるインターフェースによって実現される。上記のプロセッサの例として、CPUCentralProcessingUnit、ネットワークプロセッサNP:NetworkProcessor、マイクロプロセッサmicroprocessor、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路IC:IntegratedCircuit等が考えられる。上記のメモリの例として、RAMRandomAccessMemory、ROMReadOnlyMemory、EEPROMElectricallyErasableandProgrammableReadOnlyMemoryやフラッシュメモリ等の半導体記憶装置を想定している。現在の市場で使用されているメモリの殆どは、DRAMDynamicRandomAccessMemoryである。DRAMは、駆動方式の違いにより、SDRAMSynchronousDRAM、DDRSDRAMDoubleDataRateSDRAM、DDR2SDRAMDoubleDataRate2SDRAM、DDR3SDRAMDoubleDataRate3SDRAM等に分類することができる。他にも、メモリの例として、HDDHardDiskDriveやSSDSolidStateDrive等の補助記憶装置、又は、DVDDigitalVersatileDisk等のリムーバブルディスクや、SDメモリカードSecureDigitalmemorycard等の記憶媒体メディア等が考えられる。或いは、DASDirectAttachedStorage、FC-SANFibreChannel-StorageAreaNetwork、NASNetworkAttachedStorage、IP-SANIP-StorageAreaNetwork等を用いたストレージ装置でも良い。また、バッファbufferやレジスタregisterでも良い。なお、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の1チップ化が進んでいる。したがって、メモリ冗長化装置に搭載される1チップマイコンが、上記のプロセッサ及び上記のメモリを備えている事例が考えられる。上記のインターフェースの例として、ネットワーク通信に対応した基板マザーボード、I/Oボードやチップ等の半導体集積回路、NICNetworkInterfaceCard等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口コネクタ等の通信ポート等が考えられる。また、ネットワークの例として、インターネット、LANLocalAreaNetwork、無線LANWirelessLAN、WANWideAreaNetwork、バックボーンBackbone、ケーブルテレビCATV回線、固定電話網、携帯電話網、WiMAXIEEE802.16a、3G3rdGeneration、専用線leaseline、IrDAInfraredDataAssociation、Bluetooth登録商標、シリアル通信回線、データバス等が考えられる。例えば、メインメモリMainMemory10及びミラーメモリMirrorMemory20は、上記のメモリにより実現される。コントローラController30は、上記のプロセッサにより実現される。なお、コントローラController30内の各部内部構成は、モジュールmodule、コンポーネントcomponent、或いは専用デバイス、又はこれらの起動呼出プログラムでも良い。但し、実際には、これらの例に限定されない。[動作概要]図3を参照して、本発明に係るメモリ冗長化装置の動作概要について説明する。1ステップS1コントローラController30は、データの書き込み時、メインメモリMainMemory10にデータを書き込むと同時に、ミラーメモリMirrorMemory20にも、マスクアドレスと共にデータを書き込む。結果として、ミラーメモリMirrorMemory20には、最近書き込みが発生したデータが格納されていることになる。2ステップS2コントローラController30は、データの読み出し時、メインメモリMainMemory10に訂正不可エラーが発生した場合、ミラーメモリMirrorMemory20のマスクアドレスを調べ、該当アドレスのデータであった場合、そのデータのみ、ミラーメモリMirrorMemory20側から取り出す。3ステップS3コントローラController30は、該当アドレス以外のデータ他のデータであった場合、擬似LRU制御を行い、最後に書き込みWriteされたデータを優先して格納する。これにより、データを救済できる確率が高まる。[実施例]図4を参照して、本発明に係るメモリ冗長化装置の実施例について説明する。1アドレス0x0000に対し、データData0000の書き込みWriteが発生。コントローラController30は、メインメモリMainMemory10のアドレス0x0000に対し、データData0000の書き込みWriteを行う。コントローラController30は、ミラーメモリMirrorMemory20のアドレス0x0000に対し、データData0000の書き込みWriteを行う。また、コントローラController30は、ミラーメモリMirrorMemory20のアドレス0x0000に対するマスクアドレスとして0を格納するマスクアドレス=0。2アドレス0x0001に対し、データData0001の書き込みWriteが発生。コントローラController30は、メインメモリMainMemory10のアドレス0x0001に対し、データData0001の書き込みWriteを行う。コントローラController30は、ミラーメモリMirrorMemory20のアドレス0x0001に対し、データData0001の書き込みWriteを行う。また、コントローラController30は、ミラーメモリMirrorMemory20のアドレス0x0001に対するマスクアドレスとして0を格納するマスクアドレス=0。3アドレス0x8000に対し、データData8000の書き込みWriteが発生。コントローラController30は、メインメモリMainMemory10のアドレス0x8000に対し、データData8000の書き込みWriteを行う。コントローラController30は、ミラーメモリMirrorMemory20のアドレス0x0000に対し、データData8000の書き込みWriteを行う。既に書き込まれているデータData0000は消去される。すなわち、コントローラController30は、ミラーメモリMirrorMemory20のアドレス0x0000に格納されているデータData0000を、データData8000に上書き/更新する。また、コントローラController30は、ミラーメモリMirrorMemory20のアドレス0x0000に対するマスクアドレスを、0から1に上書き/更新するマスクアドレス0→1。4アドレス0x8000のデータData8000の破壊が発生。ここで、メインメモリMainMemory10のアドレス0x8000に格納されているデータData8000が、データData8002に変化したとするデータ破壊発生。メインメモリMainMemory10のアドレス0x8000には、破壊されたデータData8002が格納されていることになる。ミラーメモリMirrorMemory20のアドレス0x0000には、正常なデータData8000が格納されている。このとき、ミラーメモリMirrorMemory20のアドレス0x0000に対するマスクアドレスは、1のままであるマスクアドレス=1。5アドレス0x8000に対するデータ読み出しが発生。コントローラController30は、メインメモリMainMemory10のアドレス0x8000からデータData8002の読み出しReadを行う。このとき、ECCErrorCheckingandCorrectingエラーが検出され、メインメモリMainMemory10のデータが不正であることが判明する。すなわち、コントローラController30は、ECCErrorCheckingandCorrectingエラーが検出されるため、メインメモリMainMemory10のアドレス0x8000のデータが不正であると判断する。一方、コントローラController30は、ミラーメモリMirrorMemory20のアドレス0x0000からデータData8000の読み出しReadを行う。このデータは、ECCErrorCheckingandCorrectingエラーが検出されないため、正常なデータであることが判る。また、マスクアドレスが1であるため、アドレス0x8000のデータであることが判る。すなわち、コントローラController30は、ECCErrorCheckingandCorrectingエラーが検出されず、マスクアドレスが1であるため、ミラーメモリMirrorMemory20のアドレス0x8000のデータが正常であると判断する。これにより、メインメモリMainMemory10ではなく、ミラーメモリMirrorMemory20のアドレス0x8000に格納されているデータData8000が採用される。ここでは、コントローラController30は、所定のアドレスに対するデータ読み出しが発生した際、メインメモリMainMemory10とミラーメモリMirrorMemory20から、同時にデータの読み出しReadを行う。或いは、コントローラController30は、メインメモリMainMemory10のデータが不正であることが判明した場合にのみ、ミラーメモリMirrorMemory20のデータの読み出しReadを行うようにしても良い。6アドレス0x0000に対するデータ読み出しが発生。この後、仮に、アドレス0x0000のデータData0000を読み出す必要が発生し、メインメモリMainMemory10のデータData0000が破壊されていた場合には、このミラーメモリMirrorMemory20では救済できない。しかし、アドレス0x0000よりも、後からアクセスされたアドレス0x8000の方が、確率的には、次の読み出しReadでアクセスされる確率が高い。すなわち、擬似的なLRU制御が実現される。したがって、ミラーメモリMirrorMemory20のHWリソース量がメインメモリMainMemory10の50でありながら、データ破壊時の救済率は50より高くなるということが期待できる。なお、実際には、ミラーメモリMirrorMemory20のHWリソース量がメインメモリMainMemory10の50以外の場合でも、搭載した冗長HWリソース量以上の救済率を期待できる。<第2実施形態>以下に、本発明の第2実施形態について説明する。本実施形態では、データ破壊が発生したメインメモリMainMemory10のアドレス0x8000に対し、正常なデータData8000を書き戻すことで、データの正常性を回復させる。例えば、コントローラController30は、メインメモリMainMemory10のアドレス0x8000からデータData8002の読み出しReadを行う。このとき、ECCErrorCheckingandCorrectingエラーが検出され、メインメモリMainMemory10のデータが不正であることが判明したとする。この場合、コントローラController30は、ミラーメモリMirrorMemory20のアドレス0x0000からデータData8000の読み出しReadを行う。このとき、ECCErrorCheckingandCorrectingエラーが検出されないため、正常なデータであることが判明する。また、マスクアドレスが1であるため、アドレス0x8000のデータであることが判明する。コントローラController30は、ミラーメモリMirrorMemory20のアドレス0x8000から読み出されたデータData8000を選択採用する。コントローラController30は、メインメモリMainMemory10のアドレス0x8000に対し、ミラーメモリMirrorMemory20のアドレス0x8000から読み出されたデータData8000の書き込みWriteを行う。これにより、メインメモリMainMemory10のアドレス0x8000の破壊されたデータData8002が、正常なデータData8000に書き戻される。以降、コントローラController30は、メインメモリMainMemory10のアドレス0x8000から、正常なデータData8000を読み出すことが可能になる。[補足]本実施形態において、メインメモリMainMemory10とミラーメモリMirrorMemory20とを、互いに読み替えても良い。実際には、メインメモリMainMemory10側のデータが正常で、ミラーメモリMirrorMemory20側にデータの破壊が発生する場合も考えられる。ミラーメモリMirrorMemory20側のデータの破壊を放置することは好ましくないため、このような場合、コントローラController30は、ミラーメモリMirrorMemory20の破壊されたデータを、メインメモリMainMemory10の正常なデータData8000に書き戻す。<第3実施形態>以下に、本発明の第3実施形態について説明する。本実施形態では、メインメモリMainMemory10側に固定故障permanentfaultが発生した場合、ミラーメモリMirrorMemory20側で冗長化するアドレスを固定する。固定故障とは、物理的/電気的な破損等により、メモリの所定のアドレスが誤ったデータに固定されてしまい、常にエラーとなる状態である。例えば、コントローラController30は、メインメモリMainMemory10のアドレス0x8000に固定故障が発生している場合、このアドレスに対応するミラーメモリMirrorMemory20のアドレス0x0000を、メインメモリMainMemory10のアドレス0x8000のデータ冗長用のアドレスとして固定する。以降、アドレス0x0000に対し、データ書き込みが発生した場合でも、ミラーメモリMirrorMemory20のアドレス0x0000に対しては、書き込み/書き換えを行わない。すなわち、アドレス0x0000に対しては、メモリミラーを実施せず、固定故障が発生しているアドレス0x8000に対してのメモリミラーに専念する。コントローラController30は、本来、メインメモリMainMemory10のアドレス0x8000に書き込むべきデータを、ミラーメモリMirrorMemory20のアドレス0x0000に書き込む。メモリの交換が不可能である状況では固定故障は深刻な問題であるが、本実施形態では、メモリの交換を行うことなく、固定故障への対処が可能となる。<各実施形態の関係>なお、上記の各実施形態は、組み合わせて実施することも可能である。<本発明の特徴>以上のように、本発明に係るメモリ冗長化装置は、擬似LRULeastRecentlyUsedによる部分的メモリミラーPartialMemoryMirrorを実現する。また、本発明に係るメモリ冗長化装置は、HW制御のみで、部分的メモリミラーを実現する。また、擬似LRUにより、投資したHWリソース量以上の効果救済率を実現している。具体的には、本発明に係るメモリ冗長化装置は、ミラーメモリをメインメモリに対して部分的に所持する。また、本発明に係るメモリ冗長化装置は、擬似LRUアルゴリズムに基づく制御により、メインメモリに最後に書き込んだデータとマスクアドレスをミラーメモリに残すことで、HWのみの制御で、最低限のHWリソース量により効率的なメモリミラー機能を提供する。通常、メモリミラーを行う際、メインメモリと同じ容量のミラーメモリを持たない限り、全てのデータを保証することはできない。しかし、メモリのアクセスには、時間的局所性という性質があり、LRULeastRecentlyUsedアルゴリズムを用いれば、部分的なミラーメモリであっても効率的にデータの保証をすることができる。完全なLRUアルゴリズムを実現するためには、アクセスする度に情報を残す必要があるため、多くのHWリソース量が必要となるが、メインメモリに最近更新されたデータをミラーメモリに格納しておくという擬似LRUアルゴリズムを採用することで、比較的アクセス頻度の高いデータをミラーメモリに残すことができる。また、この際、マスクしたアドレス情報をデータと一緒にミラーメモリに格納することにより、簡単なHW制御で、OSOperatingSystemやF/WFirmWareに頼ることなく、最低限のHW追加で、効率的な部分メモリミラー機能を提供することができる。本発明に係るメモリ冗長化装置は、ミラーメモリMirrorMemoryのHWリソース量がメインメモリMainMemoryの50であっても、データ破壊時の救済率は50より高くすることを可能にする。すなわち、搭載した冗長HWリソース量以上の救済率を期待できるという効果がある。本発明は、高可用性が要求されるがコストを抑えたい高可用性サーバのメモリ保護分野においても利用が期待される。<付記>上記の実施形態の一部又は全部は、以下の付記のように記載することも可能である。但し、実際には、以下の記載例に限定されない。付記1データを格納するためのメインメモリと、前記メインメモリと同じ容量を必要とせず、前記メインメモリの冗長データを保持するための部分的なミラーメモリと、前記メインメモリに最後に書き込んだデータを前記ミラーメモリに格納する擬似LRUアルゴリズムを採用し、比較的アクセス頻度の高いデータとマスクアドレスとを前記ミラーメモリに残すコントローラとを具備するメモリ冗長化装置。付記2付記1に記載のメモリ冗長化装置であって、前記コントローラは、前記ミラーメモリに対して、本来のアドレスを一部分マスクしたマスクアドレスで索引する索引処理部と、前記メインメモリと同じデータをミラーメモリに書き込む書き込み処理部と、前記ミラーメモリに前記マスクアドレスを格納するマスクアドレス格納処理部と、前記メインメモリのデータが破壊されていた場合、前記ミラーメモリに正常なデータが格納されているか判断し、前記ミラーメモリに正常なデータが格納されている場合、前記メインメモリの破壊されたデータの代わりに、前記ミラーメモリの正常なデータを採用するメモリ制御部とを具備するメモリ冗長化装置。付記3付記2に記載のメモリ冗長化装置であって、前記メモリ制御部は、前記ミラーメモリに正常なデータが格納されている場合、前記ミラーメモリの正常なデータを基に、前記メインメモリの破壊されたデータを正常なデータに書き戻し、以降、前記メインメモリから正常なデータを読み出すメモリ冗長化装置。付記4付記1乃至3のいずれか一項に記載のメモリ冗長化装置であって、前記コントローラは、前記メインメモリの特定のアドレスに固定故障が発生している場合、前記メインメモリの特定のアドレスに対応する前記ミラーメモリのアドレスを、前記メインメモリの特定のアドレスのデータ冗長用のアドレスとして固定するメモリ冗長化装置。<備考>以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。