(57)【要約】  不揮発性記憶装置に退避したデータの揮発性記憶装置への復元処理の効率化を図る。  第１のコピー手段（５）は、第１のコピー指示に応答し、揮発性記憶装置（２）内の第１のデータ集合（７）のデータを第１の連続領域（３ａ）と第４の連続領域（４ｂ）とに書き込むと共に、揮発性記憶装置（２）内の第２のデータ集合（８）のデータを第２の連続領域（３ｂ）と第３の連続領域（４ａ）とに書き込む。第２のコピー手段（６）は、第２のコピー指示に応答し、順次アクセスによる第１の連続領域（３ａ）からの第１のデータ集合（７）のデータの読み出しと、順次アクセスによる第３の連続領域（４ａ）からの第２のデータ集合（８）のデータの読み出しとを並列に実行する。そして、読み出した第１のデータ集合（７）のデータと第２のデータ集合（８）のデータとを揮発性記憶装置（２）に書き込む。
2013080299.tif 000002
【特許請求の範囲】
【請求項１】
揮発性記憶装置と、
順次アクセスが可能な第１の連続領域と、順次アクセスが可能な第２の連続領域とが設けられた第１の不揮発性記憶装置と、
順次アクセスが可能な第３の連続領域と、順次アクセスが可能な第４の連続領域とが設けられた第２の不揮発性記憶装置と、
第１のコピー指示に応答し、前記揮発性記憶装置内のデータを第１のデータ集合と第２のデータ集合とに分け、前記第１のデータ集合のデータと前記第２のデータ集合のデータとを前記揮発性記憶装置から読み出し、読み出した前記第１のデータ集合のデータを前記第１の連続領域と前記第４の連続領域とに書き込むと共に、読み出した前記第２のデータ集合のデータを前記第２の連続領域と前記第３の連続領域とに書き込む第１のコピー手段と、
第２のコピー指示に応答し、順次アクセスによる前記第１の連続領域からの前記第１のデータ集合のデータの読み出しと、順次アクセスによる前記第３の連続領域からの前記第２のデータ集合のデータの読み出しとを並列に実行し、読み出した前記第１のデータ集合のデータと前記第２のデータ集合のデータとを前記揮発性記憶装置に書き込む第２のコピー手段と、
を有するデータ管理装置。
【請求項２】
前記第１の連続領域、前記第２の連続領域、前記第３の連続領域、および前記第４の連続領域は、それぞれ前記揮発性記憶装置の記憶容量の半分の記憶容量を有し、
前記第１の連続領域は、前記第１の不揮発性記憶装置の記憶領域の先頭から連続の記憶領域であり、
前記第２の連続領域は、前記第１の不揮発性記憶装置における、前記第１の連続領域の後方に隣接する連続の記憶領域であり、
前記第３の連続領域は、前記第２の不揮発性記憶装置の記憶領域の先頭から連続の記憶領域であり、
前記第４の連続領域は、前記第２の不揮発性記憶装置における、前記第３の連続領域の後方に隣接する連続の記憶領域であり、
前記第１のコピー手段は、
前記揮発性記憶装置の記憶容量の半分の記憶容量に相当する、アドレスの加算値を有し、
前記揮発性記憶装置から読み出した前記第１のデータ集合のデータを、前記第１の不揮発性記憶装置の先頭から順に書き込むと共に、該データの前記第１の不揮発性記憶装置への書き込みアドレスに前記加算値を加算した値を、前記第２の不揮発性記憶装置への書き込みアドレスとして、該データを前記第２の不揮発性記憶装置に書き込み、
前記揮発性記憶装置から読み出した前記第２のデータ集合のデータを、前記第２の不揮発性記憶装置の先頭から順に書き込むと共に、該データの前記第２の不揮発性記憶装置への書き込みアドレスに前記加算値を加算した値を、前記第１の不揮発性記憶装置への書き込みアドレスとして、該データを前記第１の不揮発性記憶装置に書き込む、
ことを特徴とする請求の範囲第１項記載のデータ管理装置。
【請求項３】
前記第２のコピー手段は、
前記第１の不揮発性記憶装置から読み出したデータに訂正不可能なエラーを検出した場合、該データの前記第１の不揮発性記憶装置内でのアドレスを記憶し、該アドレスに前記加算値を加算したアドレスを前記第２の不揮発性記憶装置からの読み出しアドレスとして、エラーが検出された該データに替えて前記第２の不揮発性記憶装置からデータを読み出し、
前記第２の不揮発性記憶装置から読み出したデータに訂正不可能なエラーを検出した場合、該データの前記第２の不揮発性記憶装置内でのアドレスを記憶し、該アドレスに前記加算値を加算したアドレスを前記第１の不揮発性記憶装置からの読み出しアドレスとして、エラーが検出された該データに替えて前記第１の不揮発性記憶装置からデータを読み出す、
ことを特徴とする請求の範囲第１項または第２項のいずれかに記載のデータ管理装置。
【請求項４】
前記揮発性記憶装置は、第１のメモリモジュールと第２のメモリモジュールとを有しており、
前記第１のコピー手段は、前記第１のメモリモジュール内のデータを前記第１のデータ集合とし、前記第２のメモリモジュール内のデータを前記第２のデータ集合とし、
前記第２のコピー手段は、前記第１のデータ集合のデータを前記第１のメモリモジュールに書き込み、前記第２のデータ集合のデータを前記第２のメモリモジュールに書き込む、
ことを特徴とする請求の範囲第１項乃至第３項のいずれかに記載のデータ管理装置。
【請求項５】
前記揮発性記憶装置は、複数のメモリモジュールを有しており、
前記第１のコピー手段は、前記複数のメモリモジュールを第１のグループと第２のグループとに分け、前記第１のグループのメモリモジュール内のデータを前記第１のデータ集合とし、前記第２のグループのメモリモジュール内のデータを前記第２のデータ集合とし、
前記第２のコピー手段は、前記第１のデータ集合のデータを前記第１のグループのメモリモジュールに書き込み、前記第２のデータ集合のデータを前記第２のグループのメモリモジュールに書き込む、
ことを特徴とする請求の範囲第１項乃至第３項のいずれかに記載のデータ管理装置。
【請求項６】
前記第１の不揮発性記憶装置は、複数の記憶装置を有し、該複数の記憶装置それぞれの一部の記憶領域を纏めて前記第１の連続領域を構成し、該複数の記憶装置それぞれの一部の記憶領域を纏めて前記第２の連続領域を構成し、
前記第２の不揮発性記憶装置は、複数の記憶装置を有し、該複数の記憶装置それぞれの一部の記憶領域を纏めて前記第３の連続領域を構成し、該複数の記憶装置それぞれの一部の記憶領域を纏めて前記第４の連続領域を構成し、
前記第１のコピー手段は、前記第１の不揮発性記憶装置または前記第２の不揮発性記憶装置にデータを書き込む場合、前記第１の不揮発性記憶装置または前記第２の不揮発性記憶装置内の複数の記憶装置それぞれを順番に選択し、同一書き込みアドレスのまま、所定のデータ量のブロックデータずつ選択した記憶装置に書き込み、前記複数の記憶装置のそれぞれの選択が一巡するごとに、書き込みアドレスをブロックデータのデータ量分増加させ、
前記第２のコピー手段は、前記第１の不揮発性記憶装置または前記第２の不揮発性記憶装置からデータを読み出す場合、前記第１の不揮発性記憶装置または前記第２の不揮発性記憶装置内の複数の記憶装置それぞれを順番に選択し、同一読み出しアドレスのまま、選択した記憶装置から所定のデータ量のブロックデータずつ読み出し、前記複数の記憶装置のそれぞれの選択が一巡するごとに、読み出しアドレスをブロックデータのデータ量分増加させる、
ことを特徴とする請求の範囲第１項乃至第５項のいずれかに記載のデータ管理装置。
【請求項７】
前記揮発性記憶装置は、１枚のメモリモジュールを有しており、
前記第１のコピー手段は、前記メモリモジュール内のデータを、処理のデータ量のブロックデータに分割し、前記メモリモジュールの先頭からブロックデータを読み出すごとに、読み出したブロックデータを、前記第１のデータ集合と前記第２のデータ集合とに交互に振り分け、
前記第２のコピー手段は、前記第１の不揮発性記憶装置からの前記第１のデータ集合のブロックデータの読み出しと、前記第２の不揮発性記憶装置からの前記第２のデータ集合のブロックデータの読み出しとを並列に実行し、前記第１のデータ集合のブロックデータと前記第２のデータ集合のブロックデータとを、交互に前記揮発性記憶装置に書き込む、
ことを特徴とする請求の範囲第１項乃至第３項のいずれかに記載のデータ管理装置。
【請求項８】
前記第１の連続領域、前記第２の連続領域、前記第３の連続領域、および前記第４の連続領域は、それぞれ前記揮発性記憶装置の記憶容量の半分の記憶容量を有し、
前記第１の連続領域は、前記第１の不揮発性記憶装置の記憶領域の先頭から連続の記憶領域であり、
前記第２の連続領域は、前記第１の不揮発性記憶装置における、前記第１の連続領域の後方に隣接する連続の記憶領域であり、
前記第４の連続領域は、前記第２の不揮発性記憶装置の記憶領域の先頭から連続の記憶領域であり、
前記第３の連続領域は、前記第２の不揮発性記憶装置における、前記第４の連続領域の後方に隣接する連続の記憶領域であり、
前記第１のコピー手段は、
前記揮発性記憶装置の記憶容量の半分の記憶容量に相当する、アドレスの加算値を有し、
前記揮発性記憶装置から前記第１のデータ集合のデータと前記第２のデータ集合のデータとを並列に読み出し、
前記揮発性記憶装置から読み出した前記第１のデータ集合のデータを、前記第１の不揮発性記憶装置に対して、先頭から順に書き込むと共に、該データの前記第１の不揮発性記憶装置への書き込みアドレスに前記加算値を加算した値を、前記第２の不揮発性記憶装置への書き込みアドレスとして、該データと並列に読み出した前記第２のデータ集合のデータを、前記第２の不揮発性記憶装置に書き込み、
前記揮発性記憶装置から読み出した前記第１のデータ集合のデータを、前記第２の不揮発性記憶装置に対して、先頭から順に書き込むと共に、該データの前記第２の不揮発性記憶装置への書き込みアドレスに前記加算値を加算した値を、前記第１の不揮発性記憶装置への書き込みアドレスとして、該データと並列に読み出した前記第２のデータ集合のデータを、前記第１の不揮発性記憶装置に書き込む、
ことを特徴とする請求の範囲第１項記載のデータ管理装置。
【請求項９】
前記第２のコピー手段は、
前記第１の不揮発性記憶装置の最小のアドレスを、前記第１の連続領域の先頭アドレスとして、該先頭アドレスから順次アクセスにより前記第１のデータ集合のデータを読み出し、
前記第２の不揮発性記憶装置における前記加算値と等しいアドレスを、前記第３の連続領域の先頭アドレスとして、該先頭アドレスから順次アクセスにより前記第２のデータ集合のデータを読み出す、
ことを特徴とする請求の範囲第８項記載のデータ管理装置。
【請求項１０】
第１のコピー指示に応答し、揮発性記憶装置内のデータを第１のデータ集合と第２のデータ集合とに分け、前記第１のデータ集合のデータと前記第２のデータ集合のデータとを前記揮発性記憶装置から読み出し、
前記揮発性記憶装置から読み出した前記第１のデータ集合のデータを、第１の不揮発性記憶装置内の順次アクセスが可能な第１の連続領域と、第２の不揮発性記憶装置内の順次アクセスが可能な第４の連続領域とに書き込み、
前記揮発性記憶装置から読み出した前記第２のデータ集合のデータを、前記第１の不揮発性記憶装置内の順次アクセスが可能な第２の連続領域と、前記第２の不揮発性記憶装置内の順次アクセスが可能な第３の連続領域とに書き込み、
第２のコピー指示に応答し、順次アクセスによる前記第１の連続領域からの前記第１のデータ集合のデータの読み出しと、順次アクセスによる前記第３の連続領域からの前記第２のデータ集合のデータの読み出しとを並列に実行し、
前記第１の連続領域から読み出した前記第１のデータ集合のデータと、前記第３の連続領域から読み出した前記第２のデータ集合のデータとを前記揮発性記憶装置に書き込む、
ことを特徴とするデータコピー方法。
【請求項１１】
コンピュータに、
第１のコピー指示に応答し、揮発性記憶装置内のデータを第１のデータ集合と第２のデータ集合とに分け、前記第１のデータ集合のデータと前記第２のデータ集合のデータとを前記揮発性記憶装置から読み出し、
前記揮発性記憶装置から読み出した前記第１のデータ集合のデータを、第１の不揮発性記憶装置内の順次アクセスが可能な第１の連続領域と、第２の不揮発性記憶装置内の順次アクセスが可能な第４の連続領域とに書き込み、
前記揮発性記憶装置から読み出した前記第２のデータ集合のデータを、前記第１の不揮発性記憶装置内の順次アクセスが可能な第２の連続領域と、前記第２の不揮発性記憶装置内の順次アクセスが可能な第３の連続領域とに書き込み、
第２のコピー指示に応答し、順次アクセスによる前記第１の連続領域からの前記第１のデータ集合のデータの読み出しと、順次アクセスによる前記第３の連続領域からの前記第２のデータ集合のデータの読み出しとを並列に実行し、
前記第１の連続領域から読み出した前記第１のデータ集合のデータと、前記第３の連続領域から読み出した前記第２のデータ集合のデータとを前記揮発性記憶装置に書き込む、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置間でのデータのコピーを行うデータ管理装置、データコピー方法、およびプログラムに関する。
【背景技術】
【０００２】
現在、様々な機器に揮発性記憶装置が搭載されている。例えばコンピュータには、主記憶装置として、ＤＩＭＭ（Dual In-line Memory Module）などの揮発性記憶装置が搭載されている。また、クラスタシステムに設けられたシステム記憶装置（ＳＳＵ：System Storage Unit）には、クラスタシステム内の複数のＣＰＵ（Central Processing Unit）で共有するデータの格納に使用する揮発性記憶装置が搭載されている。【０００３】
揮発性記憶装置を有する機器の中には、ＵＰＳ（Uninterruptible Power Supply）を搭載するものがある。ＵＰＳを搭載する機器では、停電などにより装置への電力の供給が遮断された場合、ＵＰＳにより電力供給が一定時間確保される。ＵＰＳで電源が供給されている間に、揮発性記憶装置内のデータを不揮発性記憶装置に退避することで、揮発性記憶装置内のデータを保護することができる。揮発性記憶装置としては、例えばＳＳＤ（Solid-State Drive）やハードディスク装置などが使用される。不揮発性記憶装置に退避されたデータは、電源復旧時に、揮発性記憶装置に書き戻される。そして、揮発性記憶装置に書き戻されたデータを用いて、機器の運用が再開される。【０００４】
なお、記憶内容の退避と復旧の信頼性を向上させるために、分割単位の記憶内容を、第１の不揮発性記憶装置と第２の不揮発性記憶装置との両方に退避させる、記憶装置の記憶内容退避方式も考えられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平４−３４６１４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、データの退避に用いられる不揮発性記憶装置からのデータの読み出し速度は、一般にＤＩＭＭなどの揮発性記憶装置よりも低速であり、不揮発性記憶装置から揮発性記憶装置へのデータの復元には時間がかかる。【０００７】
例えば、揮発性記憶装置のデータを不揮発性の記憶装置に退避する場合、２重化して退避することでデータの信頼性を向上させることができる。データを２重化して退避する場合、揮発性記憶装置から読み出したデータから順に、複数の不揮発性記憶装置のそれぞれにデータが書き込まれる。このとき、一方の不揮発性記憶装置に格納されたデータに基づいて揮発性記憶装置のデータを復元しようとすると、読み出し速度の遅い１つの不揮発性記憶装置からすべてのデータ読み出すこととなり、データの復元に時間がかかる。また、複数の不揮発性記憶装置それぞれからデータを一部ずつ読み出す場合、各不揮発性記憶装置それぞれ内の部分的なデータを、ランダムアクセスによって読み出すこととなる。ランダムアクセスによるデータの読み出しは、シーケンシャルアクセスに比べ読み出しに時間がかかる。このように不揮発性記憶装置から揮発性記憶装置へのデータの復元には時間がかかることにより、例えば電源復旧から装置の運用再開までの時間が長期化している。【０００８】
１つの側面では、本発明は、不揮発性記憶装置に退避したデータの揮発性記憶装置への復元処理の効率化を図ることができるデータ管理装置、データコピー方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、揮発性記憶装置、第１の不揮発性記憶装置、第２の不揮発性記憶装置、第１のコピー手段、および第２のコピー手段を有するデータ管理装置が提供される。
第１の不揮発性記憶装置は、順次アクセスが可能な第１の連続領域と、順次アクセスが可能な第２の連続領域とが設けられている。第２の不揮発性記憶装置は、順次アクセスが可能な第３の連続領域と、順次アクセスが可能な第４の連続領域とが設けられている。第１のコピー手段は、第１のコピー指示に応答し、揮発性記憶装置内のデータを第１のデータ集合と第２のデータ集合とに分ける。次に第１のコピー手段は、第１のデータ集合のデータと第２のデータ集合のデータとを揮発性記憶装置から読み出す。そして第１のコピー手段は、読み出した第１のデータ集合のデータを第１の連続領域と第４の連続領域とに書き込むと共に、読み出した第２のデータ集合のデータを第２の連続領域と第３の連続領域とに書き込む。第２のコピー手段は、第２のコピー指示に応答し、順次アクセスによる第１の連続領域からの第１のデータ集合のデータの読み出しと、順次アクセスによる第３の連続領域からの第２のデータ集合のデータの読み出しとを並列に実行する。そして第２のコピー手段は、読み出した第１のデータ集合のデータと第２のデータ集合のデータとを揮発性記憶装置に書き込む。
【発明の効果】
【００１０】
１態様によれば、不揮発性記憶装置に退避したデータの揮発性記憶装置への復元を効率的に行うことができる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係る装置の機能構成例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】各装置のハードウェア構成の一例を示す図である。
【図４】メモリ制御回路のデータの退避・復元機能に関する内部構造の一例を示す図である。
【図５】退避・復元されるデータを説明する図である。
【図６】ブロックデータごとのデータ退避の一例を示す図である。
【図７】ＤＩＭＭが１枚の場合のデータ退避の一例を示す図である。
【図８】データ退避処理のタイムチャートの一例を示す図である。
【図９】退避データのＳＳＤ内でのデータ配列の一例を示す図である。
【図１０】メモリ制御回路におけるデータ退避を実現する回路構成の一例を示す図である。
【図１１】第２の実施の形態のＤＩＭＭデータの読み出し処理の手順の一例を示すフローチャートである。
【図１２】第２の実施の形態のＳＳＤ書き込み処理の手順の一例を示すフローチャートである。
【図１３】第２の実施の形態のデータ復元処理のタイムチャートの一例を示す図である。
【図１４】メモリ制御回路におけるデータ復元を実現する回路構成の一例を示す図である。
【図１５】第２の実施の形態のＳＳＤデータの読み出し処理の手順の一例を示すフローチャートである。
【図１６】第２の実施の形態のＤＩＭＭへのデータ書き込み処理の手順の一例を示すフローチャートである。
【図１７】第２の実施の形態の復元エラー回復処理の手順の一例を示す図である。
【図１８】データ退避・復元処理の比較例を示す図である。
【図１９】第３の実施の形態におけるメモリ制御回路内のデータ退避機能の一例を示すブロック図である。
【図２０】第３の実施の形態のＤＩＭＭデータの読み出し処理の手順の一例を示すフローチャートである。
【図２１】第３の実施の形態のＳＳＤ書き込み処理の手順の一例を示すフローチャートである。
【図２２】第３の実施の形態におけるメモリ制御回路内のデータ復元機能の一例を示すブロック図である。
【図２３】第３の実施の形態のＳＳＤデータの読み出し処理の手順の一例を示すフローチャートである。
【図２４】第３の実施の形態のＤＩＭＭへのデータ書き込み処理の手順の一例を示すフローチャートである。
【図２５】第４の実施の形態において退避・復元されるデータを説明する図である。
【図２６】第４の実施の形態のＳＳＤ書き込み処理の手順の一例を示すフローチャートである。
【図２７】第４の実施の形態におけるデータ復元時のＳＳＤデータ読み出し処理手順の一例を示すフローチャートである。
【図２８】第４の実施の形態の復元エラー回復処理の手順を示すフローチャートである。
【図２９】コンピュータのハードウェアの一構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
第１の実施の形態は、揮発性記憶装置のデータを半分ずつ、２重化されている複数の不揮発性記憶装置それぞれの順次アクセス（シーケンシャルアクセス）可能な記憶領域に退避することにより、退避データを復元する時の時間を短縮できるようにしたものである。
【００１３】
図１は、第１の実施の形態に係る装置の機能構成例を示す図である。データ管理装置１は、揮発性記憶装置２、第１の不揮発性記憶装置３、第２の不揮発性記憶装置４、第１のコピー手段５、および第２のコピー手段６を有する。
【００１４】
揮発性記憶装置２は、例えばＲＡＭ（Random Access Memory）である。
第１の不揮発性記憶装置３は、例えばＳＳＤやＨＤＤ（Hard Disk Drive）である。第１の不揮発性記憶装置３には、順次アクセスが可能な第１の連続領域３ａと、順次アクセスが可能な第２の連続領域３ｂとが設けられている。なお第１の不揮発性記憶装置３は、揮発性記憶装置２の記憶容量以上の記憶容量を有する。第１の連続領域３ａは、例えば第１の不揮発性記憶装置３の記憶領域の先頭から連続の記憶領域である。また第２の連続領域３ｂは、例えば第１の不揮発性記憶装置３における、第１の連続領域３ａの後方に隣接する連続の記憶領域である。
【００１５】
第２の不揮発性記憶装置４は、例えばＳＳＤやＨＤＤである。第２の不揮発性記憶装置４には、順次アクセスが可能な第３の連続領域４ａと、順次アクセスが可能な第４の連続領域４ｂとが設けられている。なお第２の不揮発性記憶装置４は、揮発性記憶装置２の記憶容量以上の記憶容量を有する。第３の連続領域４ａは、例えば第２の不揮発性記憶装置４の記憶領域の先頭から連続の記憶領域である。また第４の連続領域４ｂは、例えば第２の不揮発性記憶装置４における、第３の連続領域４ａの後方に隣接する連続の記憶領域である。
【００１６】
なお、順次アクセスが可能な連続記憶領域とは、例えばアドレスが連続した記憶領域である。換言すると、アドレスをカウントアップしていくことで、全体にアクセス可能な記憶領域である。また第１の連続領域３ａ、第２の連続領域３ｂ、第３の連続領域４ａ、および第４の連続領域４ｂは、それぞれ揮発性記憶装置２の記憶容量の半分の記憶容量を有する。
【００１７】
第１のコピー手段５は、第１のコピー指示に応答し、揮発性記憶装置２内のデータを第１のデータ集合７と第２のデータ集合８とに分け、第１のデータ集合７のデータと第２のデータ集合８のデータとを揮発性記憶装置２から読み出す。なお第１のコピー指示は、例えば揮発性記憶装置２内のデータの、第１の不揮発性記憶装置３および第２の不揮発性記憶装置４への退避指示である。また第１のデータ集合７は、例えば第１のメモリモジュール２ａ内のデータの集合である。第２のデータ集合８は、例えば第２のメモリモジュール２ｂ内のデータの集合である。第１のコピー手段５は、読み出した第１のデータ集合７のデータを第１の連続領域３ａと第４の連続領域４ｂとに書き込む。さらに第１のコピー手段５は、読み出した第２のデータ集合８のデータを第２の連続領域３ｂと第３の連続領域４ａとに書き込む。
【００１８】
第２のコピー手段６は、第２のコピー指示に応答し、順次アクセスによる第１の連続領域３ａからの第１のデータ集合７のデータの読み出しと、順次アクセスによる第３の連続領域４ａからの第２のデータ集合８のデータの読み出しとを並列に実行する。なお第２のコピー指示は、例えば、第１の不揮発性記憶装置３および第２の不揮発性記憶装置４に退避されたデータの、揮発性記憶装置２への復元指示である。また第２のコピー手段６は、第３の連続領域４ａの先頭アドレスから順に第２のデータ集合８のデータを読み出す。
【００１９】
さらに第２のコピー手段６は、読み出した第１のデータ集合７のデータと第２のデータ集合８のデータとを揮発性記憶装置２に書き込む。例えば第２のコピー手段６は、第１のデータ集合７のデータを第１のメモリモジュール２ａに書き込み、第２のデータ集合８のデータを第２のメモリモジュール２ｂに書き込む。
【００２０】
このようなデータ管理装置１によれば、第１のコピー指示が入力されると、第１のコピー手段５により、第１のデータ集合７のデータと第２のデータ集合８のデータとが揮発性記憶装置２から読み出される。そして、第１のコピー手段５により、読み出した第１のデータ集合７のデータが第１の連続領域３ａと第４の連続領域４ｂとに書き込まれ、読み出した第２のデータ集合８のデータが第２の連続領域３ｂと第３の連続領域４ａとに書き込まれる。
【００２１】
その後、第１のコピー指示が入力されると、第２のコピー手段６により、第１の連続領域３ａの先頭アドレスから順に第１のデータ集合７のデータが読み出されると共に、第３の連続領域４ａの先頭アドレスから順に第２のデータ集合８のデータが読み出される。すなわち、第１の連続領域３ａと第３の連続領域４ａとの双方から、シーケンシャルなデータ読み出しが行われる。そして、さらに第２のコピー手段６により、読み出した第１のデータ集合７のデータと第２のデータ集合８のデータとが揮発性記憶装置２に書き込まれる。
【００２２】
このように、第１の実施の形態によれば、揮発性記憶装置２内のデータを、第１の不揮発性記憶装置３と第２の不揮発性記憶装置４に対して２重化して退避する際に、データ集合ごとに、順次アクセスが可能な連続領域に退避している。これにより、第１の不揮発性記憶装置３と第２の不揮発性記憶装置４とのそれぞれから、２重化して退避した全データの半分ずつ、シーケンシャルに並列に読み出すことにより、揮発性記憶装置２にデータを復元できる。その結果、一方の不揮発性記憶装置の全体からデータの読み出しを行う場合に比べ、復元時間を半分程度まで短縮させることができる。データの復元時間が短縮されることで、例えばシステムの再立上げを高速に行うことが可能となる。しかも、データを２重化して退避する一般的な技術に比べて、不揮発性記憶装置の記憶容量が増加することもない。
【００２３】
なお、第１のコピー手段５と第２のコピー手段６とは、データ管理装置１内のメモリ制御回路などの電子回路で実現することができる。また第１のコピー手段５と第２のコピー手段６とを、ＣＰＵにより実現することもできる。
【００２４】
また、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
また第１のコピー手段５は、第１の不揮発性記憶装置３と第２の不揮発性記憶装置４とへのデータの書き込みを、以下のように行うことができる。
【００２５】
第１のコピー手段５は、揮発性記憶装置２の記憶容量の半分以上の記憶容量に相当する、アドレスの加算値を有する。そして第１のコピー手段５は、揮発性記憶装置２から読み出した第１のデータ集合７のデータを、第１の不揮発性記憶装置３の先頭から順に書き込む。また第１のコピー手段５は、そのデータの第１の不揮発性記憶装置３への書き込みアドレスに加算値を加算した値を、第２の不揮発性記憶装置４への書き込みアドレスとして、そのデータを第２の不揮発性記憶装置４に書き込む。
【００２６】
同様に第１のコピー手段５は、揮発性記憶装置２から読み出した第２のデータ集合８のデータを、第２の不揮発性記憶装置４の先頭から順に書き込む。また第１のコピー手段５は、そのデータの第２の不揮発性記憶装置４への書き込みアドレスに加算値を加算した値を、第１の不揮発性記憶装置３への書き込みアドレスとして、そのデータを第１の不揮発性記憶装置３に書き込む。
【００２７】
このようなアドレス制御を行うことで、揮発性記憶装置２から読み出したデータの第１の不揮発性記憶装置３と第２の不揮発性記憶装置４とへの書き込みを実現できる。
また第２のコピー手段６は、読み出したデータに訂正不可能なエラーがある場合、そのデータに対応する冗長データを読み出すことも可能である。例えば第２のコピー手段６は、訂正不可能なエラー発生時に、以下のような処理を行う。
【００２８】
第２のコピー手段６は、第１の不揮発性記憶装置３から読み出したデータに訂正不可能なエラーを検出した場合、そのデータの第１の不揮発性記憶装置３内でのアドレスを記憶する。さらに第２のコピー手段６は、記憶したアドレスに上記の加算値を加算したアドレスを第２の不揮発性記憶装置４からの読み出しアドレスとして、エラーが検出されたデータに替えて第２の不揮発性記憶装置４からデータを読み出す。
【００２９】
第２のコピー手段６は、第２の不揮発性記憶装置４から読み出したデータに訂正不可能なエラーを検出した場合、データの第２の不揮発性記憶装置４内でのアドレスを記憶する。第２のコピー手段６は、記憶したアドレスに加算値を加算したアドレスを第１の不揮発性記憶装置３からの読み出しアドレスとして、エラーが検出された該データに替えて第１の不揮発性記憶装置３からデータを読み出す。
【００３０】
このようにして第１の不揮発性記憶装置３と第２の不揮発性記憶装置４とのいずれから読み出したデータに訂正不可能なエラーが発生しても、代替のデータを読み出し、揮発性記憶装置２に復元させることができる。
【００３１】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、複合計算機システムで利用されるＳＳＵ内の不揮発性記憶装置に、揮発性記憶装置に退避しておいたデータを復元する処理を高速化するものである。なお第２の実施の形態におけるＳＳＵは、第１の実施の形態に示すデータ管理装置１の一例である。
【００３２】
図２は、第２の実施の形態のシステム構成例を示す図である。複合計算機システムでは、クラスタ２００にＳＳＵ１００が接続されている。ＳＳＵ１００には、例えばＲＡＭなどの不揮発性記憶装置が搭載されている。ＳＳＵ１００の不揮発性記憶装置には、クラスタ２００内の複数のＣＰＵそれぞれが共有するデータが格納される。
【００３３】
図３は、各装置のハードウェア構成の一例を示す図である。クラスタ２００は、複数のＣＰＵ２１１，２１２，２１３、メモリ２２０、およびシステムコントローラ２３０を有している。システムコントローラ２３０は、ＳＳＵ１００との間でデータ通信を行う。
【００３４】
ＳＳＵ１００は、ＤＩＭＭ１１１，１１２、ＳＳＤ１２１，１２２、メモリ制御回路１３０、インタフェース回路１０１、ＵＰＳ制御回路１０２、ＵＰＳ１０３、およびＳＳＵ制御回路１０４を有する。
【００３５】
ＤＩＭＭ１１１，１１２は、クラスタ２００内のＣＰＵ２１１，２１２，２１３が使用するデータを格納する揮発性記憶装置である。ＤＩＭＭ１１１，１１２には、例えばＲＡＭのチップが実装されている。またＤＩＭＭ１１１，１１２は、それぞれ書き込みカウンタと読み出しカウンタとを有している。ＤＩＭＭ１１１，１１２の書き込みカウンタは、ＤＩＭＭ１１１，１１２にデータが書き込まれるごとに、書き込まれたデータ量に応じた値だけカウントアップされる。ＤＩＭＭ１１１，１１２の書き込みカウンタの値は、次にデータの書き込みを行う、ＤＩＭＭ１１１，１１２のアドレスを示す。ＤＩＭＭ１１１，１１２の読み出しカウンタは、ＤＩＭＭ１１１，１１２からデータが読み出されるごとに、読み出されたデータ量に応じた値だけカウントアップされる。ＤＩＭＭ１１１，１１２の読み出しカウンタの値は、次にデータの書き込みを行う、ＤＩＭＭ１１１，１１２のアドレスを示す。
【００３６】
ＳＳＤ１２１，１２２は、ＤＩＭＭ１１１，１１２内のデータの退避に使用する不揮発性記憶装置である。ＳＳＤ１２１，１２２には、例えばフラッシュメモリが内蔵されている。またＳＳＤ１２１，１２２は、それぞれ書き込みカウンタと読み出しカウンタとを有している。ＳＳＤ１２１，１２２の書き込みカウンタは、ＳＳＤ１２１，１２２にデータが書き込まれるごとに、書き込まれたデータ量に応じた値だけカウントアップされる。ＳＳＤ１２１，１２２の書き込みカウンタの値は、次にデータの書き込みを行う、ＳＳＤ１２１，１２２のアドレスを示す。ＳＳＤ１２１，１２２の読み出しカウンタは、ＳＳＤ１２１，１２２からデータが読み出されるごとに、読み出されたデータ量に応じた値だけカウントアップされる。ＳＳＤ１２１，１２２の読み出しカウンタの値は、次にデータの書き込みを行う、ＳＳＤ１２１，１２２のアドレスを示す。
【００３７】
メモリ制御回路１３０は、ＤＩＭＭ１１１，１１２とＳＳＤ１２１，１２２とに対するデータの入出力を制御する。例えばメモリ制御回路１３０は、クラスタ２００のＣＰＵ２１１，２１２，２１３から送られたデータをインタフェース回路１０１経由で受信し、ＤＩＭＭ１１１，１１２に書き込む。またメモリ制御回路１３０は、クラスタ２００のＣＰＵ２１１，２１２，２１３からのリード要求をインタフェース回路１０１経由で受信すると、ＤＩＭＭ１１１，１１２からデータを読み出し、クラスタ２００に転送する。
【００３８】
さらにメモリ制御回路１３０は、トラブルなどによりＳＳＵ１００への外部電源２１からの電源供給が途絶えた場合、ＵＰＳ１０３によって電源が供給されている間に、ＤＩＭＭ１１１，１１２内のデータをＳＳＤ１２１，１２２にコピーする。またメモリ制御回路１３０は、外部電源２１からの電源供給が回復した場合、ＳＳＤ１２１，１２２に退避しておいたデータを、ＤＩＭＭ１１１，１１２にコピーする。
【００３９】
インタフェース回路１０１は、クラスタ２００との間のデータ通信を行う。
ＵＰＳ制御回路１０２は、ＵＰＳ１０３の動作を制御する。例えばＵＰＳ制御回路１０２は、ＵＰＳ１０３への電気の蓄電、電気供給元を外部電源２１とするのか、ＵＰＳ１０３とするのかなどを制御する。例えば、ＵＰＳ制御回路１０２は、外部電源２１から電源供給が途絶えると、電源の供給元をＵＰＳ１０３に切り替えると共に、外部電源が途絶えたことを、ＳＳＵ制御回路１０４に通知する。またＵＰＳ制御回路１０２は、外部電源２１からの電源供給が回復した場合、電源の供給元を外部電源２１に切り替えると共に、外部電源２１からの電源供給が復旧したことをＳＳＵ制御回路１０４に通知する。
【００４０】
ＵＰＳ１０３は、バッテリを搭載しており、外部電源２１から電源が供給されている間に、バッテリに電気を充電する。またＵＰＳ１０３は、外部電源２１からの電源供給が途絶えると、バッテリに蓄えた電気を、ＳＳＵ１００の各回路に供給する。
【００４１】
ＳＳＵ制御回路１０４は、ＳＳＵ１００の動作を制御する。例えばＳＳＵ制御回路１０４は、外部電源２１からの電源供給が途絶えたことが、ＵＰＳ制御回路１０２から通知されると、メモリ制御回路１３０に対して、ＤＩＭＭ１１１，１１２内のデータ退避指示を送信する。またＳＳＵ制御回路１０４は、外部電源２１からの電源供給が復旧したことが、ＵＰＳ制御回路１０２から通知されると、メモリ制御回路１３０に対してＤＩＭＭ１１１，１１２へのデータ復元指示を送信する。
【００４２】
このようなＳＳＵ１００において、メモリ制御回路１３０により、ＤＩＭＭ１１１，１１２内のデータのＳＳＤ１２１，１２２への退避と、ＳＳＤ１２１，１２２に退避したデータのＤＩＭＭ１１１，１１２への復元とが行われる。
【００４３】
図４は、メモリ制御回路のデータの退避・復元機能に関する内部構造の一例を示す図である。メモリ制御回路１３０は、メモリ構成管理回路１３１、データ退避回路１３２、およびデータ復元回路１３３を有する。
【００４４】
メモリ構成管理回路１３１は、ＤＩＭＭ１１１，１１２の枚数や、ＤＩＭＭ１１１，１１２それぞれの記憶容量を管理する。またメモリ構成管理回路１３１は、ＤＩＭＭ１１１，１１２の総記憶容量に基づいて、ＳＳＤ１２１，１２２にデータを退避する際に用いる境界アドレスを計算する。境界アドレスとしては、例えばＤＩＭＭ１１１，１１２の総記憶容量をＳＳＤ１２１，１２２の数で除算した値が用いられる。すなわち、ＤＩＭＭ１１１，１１２やＳＳＤ１２１，１２２のアドレスは、０から始まる昇順の数値であり、１バイトごとに割り振られる。すると、ＤＩＭＭ１１１，１１２の総記憶容量をバイト単位で表した数値を、ＳＳＤ１２１，１２２の数「２」で除算して得られる値は、ＳＳＤの記憶領域の先頭からＤＩＭＭ１枚分の記憶領域を確保した場合の、その記憶領域の次の位置のアドレスに相当する。
【００４５】
データ退避回路１３２は、データ退避指示に応じて、ＤＩＭＭ１１１，１１２内のデータを、ＳＳＤ１２１，１２２に退避させる。例えばデータ退避回路１３２は、ＤＩＭＭ１１１，１１２からデータを読み出し、読み出したデータをＳＳＤ１２１，１２２に２重化して書き込む。
【００４６】
データ復元回路１３３は、データ復元指示に応じて、ＳＳＤ１２１，１２２に退避されたデータを、ＤＩＭＭ１１１，１１２に復元する。例えばデータ復元回路１３３は、ＳＳＤ１２１，１２２からデータを読み出し、読み出したデータをＤＩＭＭ１１１，１１２に書き込む。この際、データ復元回路１３３は、ＳＳＤ１２１とＳＳＤ１２２とから、それぞれ半分ずつのデータを読み出し、ＤＩＭＭ１１１，１１２のデータを復元する。
【００４７】
このように、メモリ制御回路１３０の制御により、データの退避と復元が行われる。なおデータ退避回路１３２は、図１に示す第１の実施の形態の第１のコピー手段５の一例である。またデータ復元回路１３３は、図１に示す第１の実施の形態の第２のコピー手段６の一例である。さらに境界アドレスは、第１の実施の形態で説明した、アドレスの加算値の一例である。
【００４８】
図５は、退避・復元されるデータを説明する図である。図５の例では、ＤＩＭＭ１１１とＤＩＭＭ１１２とは、同じ記憶容量である。またＳＳＤ１２１とＳＳＤ１２２とは、それぞれＤＩＭＭ１１１の２倍以上の記憶容量である。また、ＤＩＭＭ１１１の識別子を「ＤＩＭＭ−Ａ」、ＤＩＭＭ１１２の識別子を「ＤＩＭＭ−Ｂ」としている。さらにＳＳＤ１２１の識別子を「ＳＳＤ−Ａ」、ＳＳＤ１２２の識別子を「ＳＳＤ−Ｂ」としている。
【００４９】
データを退避させる場合、ＤＩＭＭ１１１内のデータは、一旦、メモリ制御回路１３０内のバッファ１３４に格納される。そしてバッファ１３４内のデータが、ＳＳＤ１２１，１２２に格納される。この際、ＤＩＭＭ１１１のデータは、ＳＳＤ１２１内の前半の上位領域１２１ａと、ＳＳＤ１２２内の後半の下位領域１２２ｂとの両方に書き込まれる。これにより、ＤＩＭＭ１１１のデータが２重化して、ＳＳＤ１２１，１２２に格納される。
【００５０】
またＤＩＭＭ１１２内のデータは、一旦、メモリ制御回路１３０内のバッファ１３５に格納される。そしてバッファ１３５内のデータが、ＳＳＤ１２１，１２２に格納される。この際、ＤＩＭＭ１１５のデータは、ＳＳＤ１２１内の後半の下位領域１２１ｂと、ＳＳＤ１２２内の前半の上位領域１２２ａとの両方に書き込まれる。これにより、ＤＩＭＭ１１２のデータが２重化して、ＳＳＤ１２１，１２２に格納される。
【００５１】
データを復元する場合、ＳＳＤ１２１の前半の上位領域１２１ａから退避されていたデータが読み出され、一旦、バッファ１３４に格納される。そして、バッファ１３４内のデータが、ＤＩＭＭ１１１に書き込まれる。同様に、ＳＳＤ１２２の前半の上位領域１２２ａから退避されていたデータが読み出され、一旦、バッファ１３５に格納される。そして、バッファ１３５内のデータが、ＤＩＭＭ１１２に書き込まれる。
【００５２】
このように、ＳＳＤ１２１，１２２の前半の上位領域１２１ａ，１２２ａからデータをシーケンシャルに読み出して、ＤＩＭＭ１１１，１１２のデータを復元する。これにより、ＳＳＤ１２１，１２２全体からデータを読み出す場合に比べ、約半分の時間でデータの復元が可能となる。
【００５３】
なお、ＤＩＭＭ１１１，１１２に格納されるデータには誤り訂正符号（ＥＣＣ：Error Correcting Code）が付加されており、ＥＣＣによってエラーチェックが行われる。またＳＳＤ１２１，１２２へ書き込むデータは巡回冗長検査（ＣＲＣ：Cyclic Redundancy Check）の符号が付加されており、ＣＲＣ符号によってエラーチェックが行われる。
【００５４】
第２の実施の形態では、ＤＩＭＭ１１１，１１２内の記憶領域を複数のブロックに分割する。例えば１ブロック当たりの記憶容量を５１２バイトとする。そして、１ブロック分のデータ（ブロックデータ）ごとに、データの退避・復元が行われる。
【００５５】
図６は、ブロックデータごとのデータ退避の一例を示す図である。なお図６の例では、ＤＩＭＭ１１１，１１２は、それぞれ４ＧＢの記憶容量を有している。またＳＳＤ１２１，１２２は、それぞれ８ＧＢの記憶容量を有している。ＳＳＤ１２１，１２２は、それぞれ先頭からＤＩＭＭ１１１，１１２の総記憶容量（８ＧＢ）の半分の記憶容量分（４ＧＢ）を上位領域、それ以降を下位領域とする。下位領域の先頭のアドレスを、境界アドレスとする。図６の例では、ブロックデータを「Ａ〜Ｚ」のアルファベットで示している。
【００５６】
ＤＩＭＭ１１１の先頭のブロックデータ「Ａ」は、ＳＳＤ１２１の上位領域の先頭と、ＳＳＤ１２２の下位領域の先頭とに退避されている。ＤＩＭＭ１１１のブロックデータ「Ａ」以降の各ブロックデータは、ＳＳＤ１２１，１２２のブロックデータ「Ａ」に続けて格納されている。
【００５７】
また、ＤＩＭＭ１１２の先頭のブロックデータ「Ｂ」は、ＳＳＤ１２１の下位領域の先頭と、ＳＳＤ１２２の上位領域の先頭とに退避されている。ＤＩＭＭ１１２のブロックデータ「Ｂ」以降の各ブロックデータは、ＳＳＤ１２１，１２２のブロックデータ「Ｂ」に続けて格納されている。
【００５８】
このように各ブロックデータを退避しておくことで、ＤＩＭＭ１１１，１１２にデータを復元する際には、ＳＳＤ１２１の上位領域から読み出したデータをＤＩＭＭ１１１に格納し、ＳＳＤ１２２の上位領域から読み出したデータをＤＩＭＭ１１２に格納すればよい。そのため、ＳＳＤ１２１，１２２それぞれの上位領域からブロックデータを、シーケンシャルにかつ並列に読み出し、復元処理を高速化することができる。
【００５９】
なお、ＳＳＤ１２１，１２２へのデータ退避形式はＤＩＭＭ枚数に係わらず同じにできる。例えば図３〜図６の例では、ＳＳＵ１００内に２枚のＤＩＭＭ１１１，１１２が実装されているが、ＤＩＭＭが１枚の場合もある。この場合、例えば、１枚のＤＩＭＭ内のブロックデータが、各ＳＳＤの上位領域と下位領域とに交互に振り分けて退避される。
【００６０】
図７は、ＤＩＭＭが１枚の場合のデータ退避の一例を示す図である。図７の例では、４ＧＢのＤＩＭＭ１１１−１のデータを、４ＧＢの２つのＳＳＤ１２１−１，１２２−１に退避する場合を想定している。ＤＩＭＭ１１１−１が１枚であるため、ＤＩＭＭ１１１−１の総記憶容量は４ＧＢとなり、各ＳＳＤ１２１−１，１２２−１の先頭から２ＧＢ分の記憶領域が上位領域となり、それ以降が下位領域となる。
【００６１】
ＤＩＭＭ１１１−１の先頭のブロックデータ「Ａ」は、ＳＳＤ１２１−１の上位領域の先頭と、ＳＳＤ１２２−１の下位領域の先頭とに退避されている。ＤＩＭＭ１１１−１の２つ目のブロックデータ「Ｂ」は、ＳＳＤ１２１−１の下位領域の先頭と、ＳＳＤ１２２−１の上位領域の先頭とに退避されている。ＤＩＭＭ１１１−１の３つ目のブロックデータ「Ｃ」は、ＳＳＤ１２１−１とＳＳＤ１２２−１との、ブロックデータ「Ａ」に続けて退避される。ＤＩＭＭ１１１−１の４つ目のブロックデータ「Ｄ」は、ＳＳＤ１２１−１とＳＳＤ１２２−１との、ブロックデータ「Ｂ」に続けて退避される。
【００６２】
このように、ＤＩＭＭ１１１−１が１枚だけの場合、ＳＳＤ１２１−１には、ＤＩＭＭ１１１−１から読み出された内のブロックデータが、上位領域と下位領域とに交互に格納される。また、ＳＳＤ１２２−１にも、ＤＩＭＭ１１１−１から読み出された内のブロックデータが、上位領域と下位領域とに交互に格納される。ただし、ＳＳＤ１２１−１に対しては上位領域からデータ格納が開始され、ＳＳＤ１２２−１に対しては下位領域からデータ格納が開始される。
【００６３】
このようにデータ退避を行うことで、データ復元の際には、ＳＳＤ１２１−１の上位領域と、ＳＳＤ１２２−１の上位領域とからブロックデータをシーケンシャルに読み出せば、ＤＩＭＭ１１１−１の全データを復元できる。
【００６４】
＜データ退避処理＞
次に、図３〜図６に示したようなＤＩＭＭが２枚の場合における、データ退避処理について詳細に説明する。
【００６５】
図８は、データ退避処理のタイムチャートの一例を示す図である。図８の上段には、識別子「ＤＩＭＭ−Ａ」のＤＩＭＭ１１１と識別子「ＤＩＭＭ−Ｂ」のＤＩＭＭ１１２とからのブロックデータの読み出しタイミングが示されている。また図８の下段には、識別子「ＳＳＤ−Ａ」のＳＳＤ１２１と識別子「ＳＳＤ−Ｂ」のＳＳＤ１２２とのブロックデータの書き込みタイミングが示されている。
【００６６】
データ退避が開始されると、識別子「ＤＩＭＭ−Ａ」のＤＩＭＭ１１１内のアドレスブロック「Ａ」と、識別子「ＤＩＭＭ−Ｂ」のＤＩＭＭ１１２内のアドレスブロック「Ｂ」とが並列に読み出される。読み出されたデータにエラーがなければ、アドレスブロック「Ａ」の、識別子「ＳＳＤ−Ａ」のＳＳＤ１２１内の上位領域への書き込みと、アドレスブロック「Ｂ」の、識別子「ＳＳＤ−Ｂ」のＳＳＤ１２２内の上位領域への書き込みとが、並列に実行される。その後、アドレスブロック「Ａ」の、識別子「ＳＳＤ−Ｂ」のＳＳＤ１２２内の下位領域への書き込みと、アドレスブロック「Ｂ」の、識別子「ＳＳＤ−Ａ」のＳＳＤ１２１内の下位領域への書き込みとが、並列に実行される。これにより、アドレスブロック「Ａ」、「Ｂ」が、２重化して退避される。
【００６７】
以後、同様にして、各ＤＩＭＭ１１１，１１２からブロックデータが順番に読み出され、ＳＳＤ１２１，１２２に２重化して退避される。この動作がＤＩＭＭ１１１，１１２の総記憶容量分繰り返されることで、ＤＩＭＭ１１１，１１２内のデータの退避が完了する。
【００６８】
なお一般的にはＤＩＭＭ１１１，１１２の動作はＳＳＤ１２１，１２２の動作より高速である。そのため、図８に示すようにＤＩＭＭ１１１，１１２のデータを一旦読み出したら、ＳＳＤに書き込むための時間がかかる。従って、次のＤＩＭＭデータの読み出しには十分な間隔が必要となる。
【００６９】
図９は、退避データのＳＳＤ内でのデータ配列の一例を示す図である。ＳＳＤ１２１の上位領域１２１ａには、ＤＩＭＭ１１１に格納されていたデータが、ＤＩＭＭ１１１に格納されていたときと同じ配列で格納されている。またＳＳＤ１２２の上位領域１２２ａには、ＤＩＭＭ１１２に格納されていたデータが、ＤＩＭＭ１１２に格納されていたときと同じ配列で格納されている。
【００７０】
このようにＳＳＤ１２１の上位領域１２１ａとＳＳＤ１２２の上位領域１２２ａとに、ＤＩＭＭ１１１，１１２に格納されていたデータがすべて退避される。そのため、データの復元時には、ＳＳＤ１２１，１２２の先頭アドレスからシーケンシャルにデータを読み出すことで、上位領域１２１ａ，１２２ａのみですべてのデータを読み出すことができる。すなわちＳＳＤ１２１，１２２からのデータ読み出しには、ランダムアクセスとシーケンシャルアクセスとが可能であるが、シーケンシャルアクセスの方が、ランダムアクセスより高速に実行できる。図９に示すように連続した領域に格納されたデータは、シーケンシャルアクセスによるデータ読み出しが可能であり、高速に読み出すことができる。
【００７１】
次に、メモリ制御回路１３０におけるデータ退避を実現する回路構成について説明する。
図１０は、メモリ制御回路におけるデータ退避を実現する回路構成の一例を示す図である。データ退避処理は、メモリ制御回路１３０内のメモリ構成管理回路１３１とデータ退避回路１３２とによって実現される。
【００７２】
メモリ構成管理回路１３１は、レジスタ群１３１ａ、ＤＩＭＭ容量計算回路１３１ｂ、および境界アドレス計算回路１３１ｃを有する。
レジスタ群１３１ａは、複数のレジスタを有している。レジスタには、ＳＳＵ１００に搭載されたＤＩＭＭの枚数や、各ＤＩＭＭの記憶容量が設定される。例えばＤＩＭＭの枚数や各ＤＩＭＭの記憶容量は、ＳＳＵの起動時にメモリ制御回路１３０において自動判別され、レジスタ群１３１ａ内の所定のレジスタに設定される。
【００７３】
ＤＩＭＭ容量計算回路１３１ｂは、ＤＩＭＭの総記憶容量を計算する。例えばＤＩＭＭ容量計算回路１３１ｂは、レジスタ群１３１ａから各ＤＩＭＭの記憶容量を取得し、取得した記憶容量を合計する。
【００７４】
境界アドレス計算回路１３１ｃは、ＳＳＤ１２１，１２２にデータを退避する際の境界アドレスを計算する。例えば境界アドレス計算回路１３１ｃは、ＤＩＭＭ容量計算回路１３１ｂが計算したＤＩＭＭの総記憶容量を２で除算した値を、境界アドレスとする。
【００７５】
データ退避回路１３２は、ＤＩＭＭ１１１，１１２から読み出したブロックデータを一時的に格納するバッファ１３４ａ，１３５ａを有している。ＤＩＭＭ１１１から出力されたブロックデータは、データチェック回路１３２ａに入力される。データチェック回路１３２ａでは、ＥＣＣによるエラーチェックが行われる。エラーがなければ、データチェック回路１３２ａは、ブロックデータをバッファ選択回路１３２ｃに転送する。
【００７６】
バッファ選択回路１３２ｃは、入力されたブロックデータを書き込むバッファを選択する。例えばバッファ選択回路１３２ｃは、レジスタ群１３１ａからＤＩＭＭの枚数を取得する。そしてバッファ選択回路１３２ｃは、図６に示すようにＤＩＭＭの枚数が２枚であれば、入力されたブロックデータをバッファ１３４ａに書き込む。またバッファ選択回路１３２ｃは、図７に示すようにＤＩＭＭの枚数が１枚であれば、入力されたブロックデータを、バッファ１３４ａとバッファ１３５ａとに交互に書き込む。
【００７７】
ＤＩＭＭ１１２から出力されたブロックデータは、データチェック回路１３２ｂに入力される。データチェック回路１３２ｂでは、ＥＣＣによるエラーチェックが行われる。エラーがなければ、データチェック回路１３２ｂは、ブロックデータをバッファ１３５ａに書き込む。
【００７８】
バッファ１３４ａには、書き込みカウンタ１３２ｄと読み出しカウンタ１３２ｆとが接続されている。書き込みカウンタ１３２ｄは、バッファ１３４ａへのデータの書き込み位置を示すカウンタである。書き込みカウンタ１３２ｄは、バッファ１３４ａにデータが格納されるごとに、格納されたデータ量分の値だけカウントアップされる。読み出しカウンタ１３２ｆは、バッファ１３４ａ，１３５ａからのデータの読み出し位置を示すカウンタである。読み出しカウンタ１３２ｆは、バッファ１３４ａ，１３５ａからデータが読み出されるごとに、読み出されたデータ量分だけ、カウントアップされる。ただし、読み出しカウンタ１３２ｆは、バッファ１３４ａ，１３５ａから１ブロック分のブロックデータを２回読み出すため、１回目の読み出し完了後に、１ブロック分だけ値が戻される。
【００７９】
書き込みカウンタ１３２ｄと読み出しカウンタ１３２ｆとには、カウンタ比較回路１３２ｈが接続されている。バッファ１３５ａには、書き込みカウンタ１３２ｅが接続されている。書き込みカウンタ１３２ｅは、バッファ１３５ａへのデータの書き込み位置を示すカウンタである。書き込みカウンタ１３２ｅは、バッファ１３５ａにデータが格納されるごとに、格納されたデータ量分の値だけカウントアップされる。
【００８０】
カウンタ比較回路１３２ｈは、書き込みカウンタ１３２ｄの値と読み出しカウンタ１３２ｆの値とを比較して、バッファ１３４ａの空き容量を判断する。例えば、書き込みカウンタ１３２ｄの値と読み出しカウンタ１３２ｆの値との差が、バッファ１３４ａに格納され、読み出し待ちの状態のデータ量である。カウンタ比較回路１３２ｈは、空き容量がブロックデータ（例えば５１２バイト）分あれば、読み出し制御回路１３２ｉに、読み出し可能を示す信号を出力する。
【００８１】
読み出し制御回路１３２ｉには、ＳＳＵ制御回路１０４からのデータ退避指示が入力される。読み出し制御回路１３２ｉは、データ退避指示を受け取ると、ＤＩＭＭ１１１，１１２からのブロックデータごとのデータ読み出しを開始する。例えば読み出し制御回路１３２ｉは、ＤＩＭＭ１１１，１１２に対して、読み出し対象のデータブロックのアドレスと、読み出し許可信号を出力する。これにより、ＤＩＭＭ１１１，１１２からブロックデータが読み出される。また読み出し制御回路１３２ｉは、カウンタ比較回路１３２ｈから読み出し可能を示す信号が入力されると、ＤＩＭＭ１１１，１１２内の次のデータブロックの読み出し制御を行う。
【００８２】
データチェック回路１３２ｊは、バッファ１３４ａに格納されたデータのエラーチェックを行う。例えばデータチェック回路１３２ｊは、ＥＣＣのエラーチェックを行う。データチェック回路１３２ｊは、バッファ１３４ａに格納されたブロックデータにエラーがなければ、ブロックデータを書き込み制御回路１３２ｌに出力する。データチェック回路１３２ｋは、バッファ１３５ａに格納されたデータのエラーチェックを行う。例えばデータチェック回路１３２ｋは、ＥＣＣのエラーチェックを行う。データチェック回路１３２ｋは、バッファ１３５ａに格納されたブロックデータにエラーがなければ、ブロックデータを書き込み制御回路１３２ｌに出力する。
【００８３】
書き込み制御回路１３２ｌは、ＤＩＭＭ１１１，１１２から読み出されたブロックデータの、ＳＳＤ１２１，１２２への書き込みを制御する。例えば書き込み制御回路１３２ｌは、境界アドレス計算回路１３１ｃから境界アドレスを取得する。そして書き込み制御回路１３２ｌは、ＤＩＭＭ１１１から読み出されたブロックデータを、ＳＳＤ１２１の先頭から順に書き込むと共に、ＳＳＤ１２２の境界アドレスから順に書き込む。また書き込み制御回路１３２ｌは、ＤＩＭＭ１１２から読み出されたブロックデータを、ＳＳＤ１２２の先頭から順に書き込むと共に、ＳＳＤ１２１の境界アドレスから順に書き込む。
【００８４】
また書き込み制御回路１３２ｌは、ＤＩＭＭ容量計算回路１３１ｂからＤＩＭＭ１１１，１１２の総記憶容量を取得する。そして書き込み制御回路１３２ｌは、ＤＩＭＭ１１１，１１２の総記憶容量分のデータ書き込みが完了すると、データ退避完了と判断する。
【００８５】
書き込み制御回路１３２ｌとＳＳＤ１２１との間にはＣＲＣ生成回路１３２ｍが設けられている。ＣＲＣ生成回路１３２ｍは、ＳＳＤ１２１に書き込むブロックデータのＣＲＣ符号を生成し、そのブロックデータに付与する。これにより、ＣＲＣ符号付きのブロックデータがＳＳＤ１２１に書き込まれる。
【００８６】
書き込み制御回路１３２ｌとＳＳＤ１２２との間にはＣＲＣ生成回路１３２ｎが設けられている。ＣＲＣ生成回路１３２ｎは、ＳＳＤ１２２に書き込むブロックデータのＣＲＣ符号を生成し、そのブロックデータに付与する。これにより、ＣＲＣ符号付きのブロックデータがＳＳＤ１２２に書き込まれる。
【００８７】
なお、図１０に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
次に、ＤＩＭＭの枚数が２枚である場合について、データ退避処理の手順を詳細に説明する。なお、ＳＳＵ１００で使用されているＤＩＭＭ枚数およびＤＩＭＭ容量はＳＳＵ１００の立上げ時には確定しているものであり、ＳＳＵ１００立上げ時にメモリ制御回路１３０のレジスタ内に、ＤＩＭＭ枚数およびＤＩＭＭ容量が設定される。
【００８８】
データ退避処理は、大別して、ＤＩＭＭ１１１，１１２からデータを読み出し、バッファ１３４ａ，１３５ａに格納する処理と、バッファ１３４ａ，１３５ａ内のデータのＳＳＤ１２１，１２２への書き込み処理とに分けられる。以下、それぞれの処理について詳細に説明する。
【００８９】
図１１は、第２の実施の形態のＤＩＭＭデータの読み出し処理の手順の一例を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
［ステップＳ１０１］外部電源２１からの電力が停電すると、ＵＰＳ制御回路１０２が停電を検知する。ＵＰＳ制御回路１０２は、停電を検知すると、ＵＰＳ１０３からの電力供給を開始すると共に、ＳＳＵ制御回路１０４に対して停電の発生を通知する。ＳＳＵ制御回路１０４は、停電発生の通知に応答し、メモリ制御回路１３０に対してデータ退避指示を送信する。これにより、ＤＩＭＭ１１１，１１２内のデータのＳＳＤ１２１，１２２への退避が開始される。
【００９０】
［ステップＳ１０２］読み出し制御回路１３２ｉは、ブロックデータを格納するだけの空き容量がバッファにあるか否かを判断する。例えば読み出し制御回路１３２ｉは、書き込みカウンタ１３２ｄの値と読み出しカウンタ１３２ｆとの値とを比較して、バッファ１３４ａにおける空き容量を判断する。読み出し制御回路１３２ｉは、ブロックデータ分の空き容量がある場合、処理をステップＳ１０３に進める。また読み出し制御回路１３２ｉは、ブロックデータ分の空き容量がなければ、ステップＳ１０２の処理を繰り返し、空き容量がブロックデータの容量以上になるのを待つ。
【００９１】
［ステップＳ１０３］読み出し制御回路１３２ｉは、各ＤＩＭＭ１１１，１１２から１ブロック分のブロックデータを読み出す。ＤＩＭＭ１１１から読み出されたブロックデータは、データチェック回路１３２ａに入力される。ＤＩＭＭ１１２から読み出されたブロックデータは、データチェック回路１３２ｂに入力される。
【００９２】
［ステップＳ１０４］各データチェック回路１３２ａ，１３２ｂは、入力されたブロックデータの訂正不可能なエラーを検出したか否かを判断する。データチェック回路１３２ａ，１３２ｂは、訂正不可能なＥＣＣエラー（例えば複数ビットのエラー）があれば、処理を強制終了する。データチェック回路１３２ａ，１３２ｂは、エラーがない場合、処理をステップＳ１０５に進める。またデータチェック回路１３２ａ，１３２ｂは、エラーがあったとしても、訂正可能なＥＣＣエラー（例えば１ビットのみのエラー）であれば、そのエラーを訂正し、処理をステップＳ１０５に進める。
【００９３】
訂正不可能なＥＣＣエラーの検出によりＤＩＭＭデータ読み出しを強制終了した場合、例えばメモリ制御回路１３０は、データ退避の強制終了をＳＳＵ制御回路１０４に通知する。すると、ＳＳＵ制御回路１０４は、ＳＳＵ１００の全機能を停止させ、ＵＰＳ１０３からの電源供給も停止させる。
【００９４】
［ステップＳ１０５］ＥＣＣエラーが検出されないか、エラーが訂正された場合、ブロックデータがバッファ１３４ａ，１３５ａに書き込まれる。例えばＤＩＭＭ１１１から読み出されたブロックデータは、バッファ１３４ａ内の、書き込みカウンタ１３２ｄで示されるアドレスの位置に書き込まれる。ＤＩＭＭ１１２から読み出されたブロックデータは、バッファ１３５ａ内の、書き込みカウンタ１３２ｅで示されるアドレスの位置に書き込まれる。
【００９５】
［ステップＳ１０６］読み出し制御回路１３２ｉは、ＤＩＭＭ１１１，１１２内のすべてのデータを読み出したか否かを判断する。すべてのデータの読み出しが完了した場合、ＤＩＭＭデータ読み出し処理が終了する。読み出していないデータがＤＩＭＭ１１１，１１２内にある場合、読み出し制御回路１３２ｉは、処理をステップＳ１０２に進める。
【００９６】
このようにして、全ＤＩＭＭデータが読み出されるまで、ＤＩＭＭ１１１，１１２からのブロックデータ単位でのデータ読み出しが繰り返される。なお、ＤＩＭＭ１１１，１１２から読み出すデータ量は可変にすることもできる。
【００９７】
次に、バッファ１３４ａ，１３５ａに格納されたデータの、ＳＳＤ１２１，１２２への書き込み処理について説明する。
図１２は、第２の実施の形態のＳＳＤ書き込み処理の手順の一例を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
【００９８】
［ステップＳ１１１］書き込み制御回路１３２ｌは、バッファ１３４ａ，１３５ａにデータがあるか否かを判断する。例えば書き込み制御回路１３２ｌは、カウンタ比較回路１３２ｈによる比較結果を受け取り、書き込みカウンタ１３２ｄの値と読み出しカウンタ１３２ｆの値とに差がある場合、バッファ１３４ａ，１３５ａにデータがあると判断する。バッファ１３４ａ，１３５ａにデータがある場合、処理がステップＳ１１２に進められる。バッファ１３４ａ，１３５ａにデータがなければ、ステップＳ１１１の処理が繰り返される。
【００９９】
［ステップＳ１１２］書き込み制御回路１３２ｌは、バッファ１３４ａ，１３５ａからデータを読み出す。例えばバッファ１３４ａ，１３５ａから、読み出しカウンタ１３２ｆで示されるアドレスから１ブロック分のブロックデータが読み出される。バッファ１３４ａ，１３５ａから読み出されたデータは、データチェック回路１３２ｊ，１３２ｋに入力される。なお読み出しカウンタ１３２ｆの値は、バッファ１３４ａ，１３５ａの一方から読み出されたデータ量（１ブロック）分カウントアップされる。
【０１００】
［ステップＳ１１３］各データチェック回路１３２ｊ，１３２ｋは、入力されたブロックデータの訂正不可能なエラーを検出したか否かを判断する。データチェック回路１３２ｊ，１３２ｋは、訂正不可能なＥＣＣエラー（例えば複数ビットのエラー）があれば、処理を強制終了する。データチェック回路１３２ｊ，１３２ｋは、エラーがない場合、処理をステップＳ１１４に進める。またデータチェック回路１３２ｊ，１３２ｋは、エラーがあったとしても、訂正可能なＥＣＣエラー（例えば１ビットのみのエラー）であれば、そのエラーを訂正し、処理をステップＳ１１４に進める。
【０１０１】
訂正不可能なＥＣＣエラーの検出によりＤＩＭＭデータ読み出しを強制終了した場合、例えばメモリ制御回路１３０は、データ退避の強制終了をＳＳＵ制御回路１０４に通知する。すると、ＳＳＵ制御回路１０４は、ＳＳＵ１００の全機能を停止させ、ＵＰＳ１０３からの電源供給も停止させる。
【０１０２】
［ステップＳ１１４］書き込み制御回路１３２ｌは、バッファ１３４ａ，１３５ａから読み出したデータを、ＳＳＤ１２１，１２２に書き込む。例えば書き込み制御回路１３２ｌは、ＳＳＤ１２１の書き込みカウンタで示されるアドレスに、ＤＩＭＭ１１１から読み出したブロックデータを書き込む。また書き込み制御回路１３２ｌは、ＳＳＤ１２２の書き込みカウンタで示されるアドレスに、ＤＩＭＭ１１２から読み出したブロックデータを書き込む。ＳＳＤ１２１，１２２それぞれのＳＳＤの書き込みカウンタの値は、ＳＳＤ１２１，１２２それぞれに書き込まれたデータ量分カウントアップされる。なおＤＩＭＭ１１１から読み出されたブロックデータには、ＣＲＣ生成回路１３２ｍによってＣＲＣ符号が付与され、ＣＲＣ符号付きのブロックデータがＳＳＤ１２１に格納される。同様に、ＤＩＭＭ１１２から読み出されたブロックデータには、ＣＲＣ生成回路１３２ｎによってＣＲＣ符号が付与され、ＣＲＣ符号付きのブロックデータがＳＳＤ１２２に格納される。
【０１０３】
［ステップＳ１１５］書き込み制御回路１３２ｌは、１ブロック分のブロックデータの書き込みが完了したか否かを判断する。１ブロック分のブロックデータの書き込みが完了した場合、書き込み制御回路１３２ｌは処理をステップＳ１１６に進める。１ブロック分のブロックデータの書き込みが完了していない場合、書き込み制御回路１３２ｌは、書き込み完了を待つ。
【０１０４】
［ステップＳ１１６］書き込み制御回路１３２ｌは、バッファ１３４ａ，１３５ａに関する読み出しカウンタ１３２ｆと、ＳＳＤ１２１，１２２の書き込みカウンタとの値を、１ブロック分減少させる（カウンタを巻き戻す）。
【０１０５】
［ステップＳ１１７］書き込み制御回路１３２ｌは、バッファ１３４ａ，１３５ａから読み出したデータを、ＳＳＤ１２１，１２２に書き込む。例えば書き込み制御回路１３２ｌは、ＳＳＤ１２１の書き込みカウンタの値に境界アドレスの値を加算した値を書き込みアドレスとし、ＳＳＤ１２１に対し、ＤＩＭＭ１１２から読み出したブロックデータを書き込む。また書き込み制御回路１３２ｌは、ＳＳＤ１２２の書き込みカウンタの値に境界アドレスの値を加算した値を書き込み先のアドレスとし、ＳＳＤ１２２に対し、ＤＩＭＭ１１１から読み出したブロックデータを書き込む。ＳＳＤ１２１，１２２それぞれのＳＳＤの書き込みカウンタの値は、ＳＳＤ１２１，１２２それぞれに書き込まれたデータ量分カウントアップされる。なおＤＩＭＭ１１２から読み出されたブロックデータには、ＣＲＣ生成回路１３２ｍによってＣＲＣ符号が付与され、ＣＲＣ符号付きのブロックデータがＳＳＤ１２１に格納される。同様に、ＤＩＭＭ１１１から読み出されたブロックデータには、ＣＲＣ生成回路１３２ｎによってＣＲＣ符号が付与され、ＣＲＣ符号付きのブロックデータがＳＳＤ１２２に格納される。
【０１０６】
これにより、ステップＳ１１１〜Ｓ１１７の処理を１回実行することにより、ＤＩＭＭ１１１，１２２内の１ブロック分のデータが、２重化してＳＳＤ１２１，１２２に退避されたこととなる。
【０１０７】
［ステップＳ１１８］書き込み制御回路１３２ｌは、ＤＩＭＭ１１１，１２２内のすべてのデータの退避が完了したか否かを判断する。例えば書き込み制御回路１３２ｌは、ＳＳＤ１２１，１２２のいずれかのＳＳＤ書き込みアドレスと、ＤＩＭＭ容量計算回路１３１ｂから得られるＤＩＭＭの総記憶容量とが一致した場合、すべてのデータの退避が完了したと判断する。書き込み制御回路１３２ｌは、すべてのデータの退避が完了した場合、ＳＳＤ書き込み処理を終了する。書き込み制御回路１３２ｌは、退避が完了していないデータがあれば、処理をステップＳ１１１に進める。
【０１０８】
このように、ＤＩＭＭ１１１，１１２のすべてのデータを、２重化してＳＳＤ１２１，１２２に退避するまで、ステップＳ１１１〜Ｓ１１７の処理が繰り返し実行される。退避されたデータの配列は、図９に示した通りである。
【０１０９】
＜データ復元処理＞
次に、データ復元処理について説明する。
図１３は、第２の実施の形態のデータ復元処理のタイムチャートの一例を示す図である。図１３の上段には、識別子「ＳＳＤ−Ａ」のＳＳＤ１２１と識別子「ＳＳＤ−Ｂ」のＳＳＤ１２２とからのブロックデータの読み出しタイミングが示されている。また図１３の下段には、識別子「ＤＩＭＭ−Ａ」のＤＩＭＭ１１１と識別子「ＤＩＭＭ−Ｂ」のＤＩＭＭ１１２とのブロックデータの書き込みタイミングが示されている。
【０１１０】
データ退避が開始されると、識別子「ＳＳＤ−Ａ」のＳＳＤ１２１内のアドレスブロック「Ａ」と、識別子「ＳＳＤ−Ｂ」のＳＳＤ１２２内のアドレスブロック「Ｂ」とが並列に読み出される。読み出されたデータにエラーがなければ、アドレスブロック「Ａ」の、識別子「ＤＩＭＭ−Ａ」のＤＩＭＭ１１１への書き込みと、アドレスブロック「Ｂ」の、識別子「ＤＩＭＭ−Ｂ」のＤＩＭＭ１１２への書き込みとが、並列に実行される。これにより、アドレスブロック「Ａ」、「Ｂ」が、ＤＩＭＭ１１１，１１２に復元される。
【０１１１】
以後、同様にして、各ＳＳＤ１２１，１２２からブロックデータが順番に読み出され、ＤＩＭＭ１１１，１１２に書き込まれる。この動作が、ＤＩＭＭ１１１，１１２の総記憶容量分繰り返されることで、ＤＩＭＭ１１１，１１２内のデータの復元が完了する。
【０１１２】
図１３に示すように、退避したデータを復元させることにより、ＳＳＤ１２１およびＳＳＤ１２２に書き込んだ境界アドレス（４Ｇバイト）まで読み出した時点でデータの復元が完了できる。
【０１１３】
また、２重化された片方のＳＳＤのソフトエラーが発生した場合、および特定ブロックが故障している場合には、エラー検出していないＳＳＤから復元が可能である。この場合は、ＳＳＤから読み出してＣＲＣエラーとなったブロックデータ（５１２バイト）は破棄され、破棄されたブロックデータのみを正常なＳＳＤから再度読み出しＤＩＭＭへ復元させる。この様な場合においても従来の復元動作に比べ高速に復元が可能となる。
【０１１４】
次に、メモリ制御回路１３０におけるデータ復元を実現する回路構成について説明する。
図１４は、メモリ制御回路におけるデータ復元を実現する回路構成の一例を示す図である。データ復元処理は、メモリ制御回路１３０内のメモリ構成管理回路１３１とデータ復元回路１３３とによって実現される。なおメモリ構成管理回路１３１の内部構成は、図１０を参照して説明した通りである。
【０１１５】
データ復元回路１３３は、ＳＳＤ１２１，１２２から読み出したブロックデータを一時的に格納するバッファ１３４ｂ，１３５ｂを有している。ＳＳＤ１２１とバッファ１３４ｂとの間には、データチェック回路１３３ａとＥＣＣ生成回路１３３ｆとが設けられている。ＳＳＤ１２２とバッファ１３５ｂとの間には、データチェック回路１３３ｂとＥＣＣ生成回路１３３ｇとが設けられている。
【０１１６】
データチェック回路１３３ａ，１３３ｂは、ＳＳＤ１２１，１２２から読み出されたデータのＣＲＣ符号が正しいかどうかをチェックする。データチェック回路１３３ａ，１３３ｂは、データチェックでエラーが発生した場合、エラー情報保持回路１３３ｃにエラーの発生を通知する。またデータチェック回路１３３ａは、ＳＳＤ１２１から読み出したデータをＥＣＣ生成回路１３３ｆに転送する。同様にデータチェック回路１３３ｂは、ＳＳＤ１２２から読み出したデータをＥＣＣ生成回路１３３ｇに転送する。
【０１１７】
ＥＣＣ生成回路１３３ｆは、ＳＳＤ１２１から読み出されたブロックデータのＥＣＣを生成し、ＥＣＣを付与したブロックデータをバッファ１３４ｂに格納する。ＥＣＣ生成回路１３３ｇは、ＳＳＤ１２２から読み出されたブロックデータのＥＣＣを生成し、ＥＣＣを付与したブロックデータをバッファ１３５ｂに格納する。
【０１１８】
エラー情報保持回路１３３ｃは、データチェック回路１３３ａ，１３３ｂから通知されたエラーに関する情報（エラー情報）を保持する。例えば、エラー情報保持回路１３３ｃには、エラーを検出したデータの読み出し元のＳＳＤの識別子、復元エラーフラグのセット、エラーを検出したデータの読み出し／書き込みアドレス、および読み出し／書き込み回数が保持される。なお、同一ＳＳＤにおいて２回以上エラーが検出された場合、アドレスの更新は行われず、１回目のエラー時のアドレスが保持される。エラー情報保持回路１３３ｃで保持したエラー情報は、読み出し制御回路１３３ｅで参照される。またエラー情報保持回路１３３ｃにエラー情報が設定されると、そのエラーが発生したＳＳＤに対応するバッファの読み出しカウンタの値が、１ブロック分加算される。これにより、エラーが発生したブロックデータのＤＩＭＭへの復元が抑止される。
【０１１９】
復元データ管理回路１３３ｄは、境界アドレス計算回路１３１ｃで算出された境界アドレスに基づいて、ＳＳＤ１２１，１２２からデータを読み出す範囲を管理する。また復元データ管理回路１３３ｄは、書き込み制御回路１３３ｏ，１３３ｐからＤＩＭＭ１１１，１１２へのブロックデータの書き込み完了の通知を受け、ＤＩＭＭ１１１，１１２の総記憶容量分の書き込み完了の有無を判断する。総記憶容量分の書き込みが完了した場合、復元データ管理回路１３３ｄは、読み出し制御回路１３３ｅに読み出し終了を通知する。
【０１２０】
読み出し制御回路１３３ｅは、ＳＳＵ制御回路１０４からのデータ復元指示に応じて、ＳＳＤ１２１，１２２からのデータの読み出しを開始する。例えば読み出し制御回路１３３ｅは、ＳＳＤ１２１，１２２に対して、復元データ管理回路１３３ｄが決定したアドレスから１ブロック分のデータの読み出しを指示する。ただし、読み出し制御回路１３３ｅは、エラー情報保持回路１３３ｃに、複数のＳＳＤでのエラー発生を示すエラー情報が保持された場合、復元失敗の情報をＳＳＵ制御回路１０４に通知し、ＳＳＤ１２１，１２２からのデータの読み出しを停止する。また読み出し制御回路１３３ｅは、復元データ管理回路１３３ｄから、読み出し終了の通知を受けると、ＳＳＤ１２１，１２２からのデータ読み出しを終了する。
【０１２１】
バッファ１３４ｂには、書き込みカウンタ１３３ｈと読み出しカウンタ１３３ｊとが接続されている。書き込みカウンタ１３３ｈは、バッファ１３４ｂへのデータの書き込み位置を示すカウンタである。書き込みカウンタ１３３ｈは、バッファ１３４ｂにデータが格納されるごとに、格納されたデータ量分の値だけカウントアップされる。読み出しカウンタ１３３ｊは、バッファ１３４ｂからのデータの読み出し位置を示すカウンタである。読み出しカウンタ１３３ｊは、バッファ１３４ｂからデータが読み出されるごとに、読み出されたデータ量分だけ、カウントアップされる。同様にバッファ１３５ｂには、書き込みカウンタ１３３ｉと読み出しカウンタ１３３ｋとが接続されている。書き込みカウンタ１３３ｉは、バッファ１３５ｂへのデータの書き込み位置を示すカウンタである。書き込みカウンタ１３３ｉは、バッファ１３５ｂにデータが格納されるごとに、格納されたデータ量分の値だけカウントアップされる。読み出しカウンタ１３３ｋは、バッファ１３５ｂからのデータの読み出し位置を示すカウンタである。読み出しカウンタ１３３ｋは、バッファ１３５ｂからデータが読み出されるごとに、読み出されたデータ量分だけ、カウントアップされる。
【０１２２】
バッファ１３４ｂから読み出されたデータは、データチェック回路１３３ｌに入力される。データチェック回路１３３ｌは、バッファ１３４ｂから読み出したブロックデータのＥＣＣエラーの有無をチェックする。データチェック回路１３３ｌは、エラーがなければ、ブロックデータを書き込み先選択回路１３３ｎに転送する。バッファ１３５ｂから読み出されたデータは、データチェック回路１３３ｍに入力される。データチェック回路１３３ｍは、バッファ１３５ｂから読み出したブロックデータのＥＣＣエラーの有無をチェックする。データチェック回路１３３ｍは、エラーがなければ、ブロックデータを書き込み先選択回路１３３ｎに転送する。
【０１２３】
書き込み先選択回路１３３ｎは、バッファ１３４ｂ，１３５ｂそれぞれから読み出されたブロックデータのいずれかを選択し、書き込み制御回路１３３ｏ，１３３ｐのいずれかに送信する。例えば書き込み先選択回路１３３ｎは、ＤＩＭＭが２枚ある場合、バッファ１３４ｂから読み出されたブロックデータを書き込み制御回路１３３ｏに送信し、バッファ１３５ｂから読み出されたブロックデータを書き込み制御回路１３３ｐに送信する。またＤＩＭＭが１枚だけの場合、書き込み先選択回路１３３ｎは、バッファ１３４ｂから読み出されたブロックデータとバッファ１３５ｂから読み出されたブロックデータとを交互に選択し、書き込み制御回路１３３ｏに送信する。
【０１２４】
書き込み制御回路１３３ｏは、書き込み先選択回路１３３ｎから受信したブロックデータをＤＩＭＭ１１１に書き込む。書き込み制御回路１３３ｏは、１ブロック分のブロックデータの書き込みが完了するごとに、復元データ管理回路１３３ｄに書き込み完了を通知する。書き込み制御回路１３３ｐは、書き込み先選択回路１３３ｎから受信したブロックデータをＤＩＭＭ１１２に書き込む。書き込み制御回路１３３ｐは、１ブロック分のブロックデータの書き込みが完了するごとに、復元データ管理回路１３３ｄに書き込み完了を通知する。
【０１２５】
なお、図１４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
次に、ＤＩＭＭの枚数が２枚である場合について、データ復元処理の手順を詳細に説明する。データ復元処理は、大別して、ＳＳＤ１２１，１２２からデータを読み出し、バッファ１３４ｂ，１３５ｂに格納する処理と、バッファ１３４ｂ，１３５ｂ内のデータのＤＩＭＭ１１１，１１２への書き込み処理とに分けられる。以下、それぞれの処理について詳細に説明する。
【０１２６】
図１５は、第２の実施の形態のＳＳＤデータの読み出し処理の手順の一例を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。
［ステップＳ１３１］読み出し制御回路１３３ｅは、例えば電源回復によりＳＳＵ制御回路１０４からのデータ復元指示が出力されると、ＳＳＤ１２１，１２２それぞれから、１ブロック分のブロックデータを同時に読み出す。読み出されたブロックデータは、データチェック回路１３３ａ，１３３ｂに入力される。
【０１２７】
［ステップＳ１３２］ＳＳＤ１２１，１２２から読み出されたブロックデータが、バッファ１３４ｂ，１３５ｂに書き込まれる。例えばＳＳＤ１２１から読み出されたブロックデータは、データチェック回路１３３ａでＣＲＣのエラーの有無がチェックされた後、ＥＣＣ生成回路１３３ｆに転送される。ＥＣＣ生成回路１３３ｆでは、ＳＳＤ１２１から読み出されたブロックデータのＥＣＣが生成され、ＥＣＣが付与されたブロックデータがバッファ１３４ｂの、書き込みカウンタ１３３ｈで示される位置に格納される。またＳＳＤ１２２から読み出されたブロックデータは、データチェック回路１３３ｂでＣＲＣのエラーの有無がチェックされた後、ＥＣＣ生成回路１３３ｇに転送される。ＥＣＣ生成回路１３３ｇでは、ＳＳＤ１２２から読み出されたブロックデータのＥＣＣが生成され、ＥＣＣが付与されたブロックデータがバッファ１３５ｂの、書き込みカウンタ１３３ｉで示される位置に格納される。
【０１２８】
［ステップＳ１３３］データチェック回路１３３ａ，１３３ｂは、それぞれＣＲＣのエラーを検出したか否かを判断する。データチェック回路１３３ａ，１３３ｂは、エラーを検出した場合、エラー情報をエラー情報保持回路１３３ｃに送信し、処理をステップＳ１３５に進める。エラーが検出されていなければ、処理がステップＳ１３４に進められる。
【０１２９】
［ステップＳ１３４］復元データ管理回路１３３ｄは、ＤＩＭＭ１１１，１１２の記憶容量分のデータ読み出しが完了したか否かを判断する。例えば復元データ管理回路１３３ｄは、ＤＩＭＭ容量計算回路１３１ｂが計算したＤＩＭＭの総記憶容量を取得する。そして復元データ管理回路１３３ｄは、読み出した最後のアドレスと、ＤＩＭＭの総記憶容量とを比較し、全ＤＩＭＭ容量分読み出したか否かを判断する。
【０１３０】
ＤＩＭＭ１１１，１１２の記憶容量分のデータ読み出しが完了した場合、復元データ管理回路１３３ｄから読み出し制御回路１３３ｅに読み出し終了を通知する。この通知に基づいて、読み出し制御回路１３３ｅは、ＳＳＤ１２１，１２２からのデータ読み出しを終了する。ＤＩＭＭ１１１，１１２の記憶容量分のデータ読み出しが完了していなければ、処理がステップＳ１３１に進められ、次のブロックデータの読み出しが行われる。
【０１３１】
なお、ＳＳＤ１２１，１２２の読み出し速度はＤＩＭＭ１１１，１１２の書き込み速度より遅いため、バッファ１３４ｂ，１３５ｂの容量が２ブロックデータ分あれば境界アドレスまで、待ち時間を挟まずにシーケンシャルに読み出すことが可能である。ＳＳＤ１２１，１２２から読み出す１ブロックのデータ量は可変にすることもできる。
【０１３２】
［ステップＳ１３５］データチェック回路１３３ａ，１３３ｂの少なくともいずれか一方でＣＲＣエラーが検出された場合、エラー情報保持回路１３３ｃは、検出されたエラーに関するエラー情報を保持する。例えばエラー情報保持回路１３３ｃは、エラーが検出されたブロックデータの読み出し元のＳＳＤの識別子、エラー回数、および読み出し／書き込みアドレスを保持する。またエラー情報保持回路１３３ｃは、復元エラーフラグを、エラー有りの状態（ＯＮ）にセットする。なおエラー情報保持回路１３３ｃは、同一ＳＳＤにおける２回目以降のエラー検出では、エラーが発生したブロックデータのアドレスの更新は行わず、１回目のエラーを検出したデータのアドレスをそのまま保持する。
【０１３３】
［ステップＳ１３６］読み出し制御回路１３３ｅは、複数のＳＳＤでエラーが検出されたか否かを判断する。２つのＳＳＤ１２１，１２２両方でエラーが検出された場合、読み出し制御回路１３３ｅは処理をステップＳ１３７に進める。一方のＳＳＤのみでエラーが検出されたのであれば、処理がステップＳ１３８に進められる。
【０１３４】
［ステップＳ１３７］読み出し制御回路１３３ｅは、データの復元失敗報告をＳＳＵ制御回路１０４に通知し、データ復元処理を終了する。
［ステップＳ１３８］一方のＳＳＤのみでエラーが検出されている場合、エラー情報保持回路１３３ｃは、エラーが発生したＳＳＤに対応するバッファの読み出しカウンタの値を、１ブロック分加算する。これにより、エラーが発生したブロックデータの読み出しは行われなくなる。すなわち、エラーとなったブロックデータのＤＩＭＭ１１１，１１２への書き込みが抑止される。その後、処理がステップＳ１３１に進められる。
【０１３５】
このように、複数のＳＳＤでエラーが発生し、強制終了される場合を除き、ブロックデータごとのＳＳＤ１２１，１２２からのデータの読み出しが、全ＤＩＭＭ容量分繰り返される。
【０１３６】
次に、ＤＩＭＭへのデータ書き込み処理の手順について詳細に説明する。
図１６は、第２の実施の形態のＤＩＭＭへのデータ書き込み処理の手順の一例を示すフローチャートである。以下、図１６に示す処理をステップ番号に沿って説明する。
【０１３７】
［ステップＳ１４１］書き込み制御回路１３３ｏ，１３３ｐは、バッファ１３４ｂ，１３５ｂに１ブロック分のブロックデータが書き込まれたか否かを判断する。データが書き込まれた場合、処理がステップＳ１４２に進められる。データが書き込まれていなければ、書き込み制御回路１３３ｏ，１３３ｐはステップＳ１４１の処理を繰り返し、データが書き込まれるのを待つ。
【０１３８】
［ステップＳ１４２］書き込み制御回路１３３ｏ，１３３ｐは、バッファ１３４ｂ，１３５ｂに書き込まれたブロックデータを読み出す。例えば書き込み制御回路１３３ｏは、読み出しカウンタ１３３ｊで示されるアドレスから１ブロック分のデータを、バッファ１３４ｂから読み出す。読み出されたブロックデータは、データチェック回路１３３ｌおよび書き込み先選択回路１３３ｎを介して書き込み制御回路１３３ｏに送られる。この際、データチェック回路１３３ｌにおいて、読み出されたブロックデータのＥＣＣのエラーの有無がチェックされる。訂正可能なエラーであれば、データチェック回路１３３ｌによってエラーが訂正される。
【０１３９】
同様に書き込み制御回路１３３ｐは、読み出しカウンタ１３３ｋで示されるアドレスから１ブロック分のデータを、バッファ１３５ｂから読み出す。読み出されたブロックデータは、データチェック回路１３３ｍおよび書き込み先選択回路１３３ｎを介して書き込み制御回路１３３ｐに送られる。この際、データチェック回路１３３ｍにおいて、読み出されたブロックデータのＥＣＣのエラーの有無がチェックされる。訂正可能なエラーであれば、データチェック回路１３３ｍによってエラーが訂正される。
【０１４０】
［ステップＳ１４３］書き込み制御回路１３３ｏ，１３３ｐは、データチェック回路１３３ｌ，１３３ｍにおいて訂正不可能なエラーが検出されたか否かを判断する。訂正不可能なエラーが検出された場合、処理がステップＳ１４４に進められる。訂正不可能なエラーが検出されていなければ、処理がステップＳ１４５に進められる。
【０１４１】
［ステップＳ１４４］書き込み制御回路１３３ｏ，１３３ｐは、データの復元失敗報告をＳＳＵ制御回路１０４に通知し、データ復元処理を終了する。
［ステップＳ１４５］書き込み制御回路１３３ｏ，１３３ｐは、読み出したブロックデータに訂正不可能なＥＣＣエラーが検出されなければ、読み出したブロックデータをＤＩＭＭ１１１，１１２に書き込む。例えば書き込み制御回路１３３ｏは、ＳＳＤ１２１から読み出されたブロックデータを、ＤＩＭＭ１１１の書き込みカウンタで示されるアドレスに書き込む。書き込み制御回路１３３ｐは、ＳＳＤ１２２から読み出されたブロックデータを、ＤＩＭＭ１１２の書き込みカウンタで示されるアドレスに書き込む。
【０１４２】
［ステップＳ１４６］復元データ管理回路１３３ｄは、ＳＳＤ１２１，１２２それぞれの境界アドレスまでのデータの読み出しと、正常に読み出されたブロックデータの書き込みとが完了したか否かを判断する。境界アドレスまでの読み出し／書き込みが完了した場合、復元データ管理回路１３３ｄは、処理をステップＳ１４７に進める。境界アドレスまでの読み出し／書き込みが完了していなければ、復元データ管理回路１３３ｄは、処理をステップＳ１４１に進める。これにより、境界アドレスまでのＳＳＤ１２１，１２２のデータをＤＩＭＭ１１１，１１２に復元するまで、ステップＳ１４１〜Ｓ１４５の処理が繰り返される。
【０１４３】
［ステップＳ１４７］読み出し制御回路１３３ｅは、エラー情報保持回路１３３ｃが保持している復元エラーフラグがＯＮか否かを判断する。読み出し制御回路１３３ｅは、復元エラーフラグがＯＮであれば、処理をステップＳ１４８に進める。また読み出し制御回路１３３ｅは、復元エラーフラグがＯＮでなければ、ＤＩＭＭへのデータ書き込み処理を終了する。
【０１４４】
［ステップＳ１４８］データ復元回路１３３において、復元エラー回復処理が行われる。この処理の詳細は後述する（図１７参照）。その後、ＤＩＭＭへのデータ書き込み処理を終了する。なおＤＩＭＭへのデータ書き込み処理を終了する際には、エラー情報保持回路１３３ｃが保持しているエラー情報は消去され、復元エラーフラグも「０」（エラーなしを示す状態）にリセットされる。
【０１４５】
次に、復元エラー回復処理の手順について説明する。
図１７は、第２の実施の形態の復元エラー回復処理の手順の一例を示す図である。以下、図１７に示す処理をステップ番号に沿って説明する。
【０１４６】
［ステップＳ１５１］読み出し制御回路１３３ｅは、エラー情報保持回路１３３ｃにおいて、エラーが検出されたＳＳＤに対応付けて保持されている、エラー発生時の書き込みアドレス（エラーアドレス）を取得する。そして読み出し制御回路１３３ｅは、ＤＩＭＭ１１１，１１２への書き込みカウンタの値を、取得した書き込みアドレスに更新する。
【０１４７】
［ステップＳ１５２］読み出し制御回路１３３ｅは、エラー情報保持回路１３３ｃで保持されているエラー回数を参照し、エラーが検出されたＳＳＤにおけるエラー回数が２回以上か否かを判断する。エラー情報保持回路１３３ｃは、エラー回数が２回以上の場合はエラーが検出されたＳＳＤは故障している可能性が高い。そこで、読み出し制御回路１３３ｅは、エラーが検出されていないＳＳＤからブロックデータを読み出すため、処理をステップＳ１５７に進める。またエラー情報保持回路１３３ｃは、エラー回数が１回の場合はソフトエラーの可能性が高い。そこで、読み出し制御回路１３３ｅは、エラーが検出されたＳＳＤから再度ブロックデータを読み出すため、処理をステップＳ１５３に進める。
【０１４８】
［ステップＳ１５３］読み出し制御回路１３３ｅは、エラー情報保持回路１３３ｃからエラー発生時の読み出しアドレスを取得し、そのアドレスを、エラーを検出したＳＳＤからの読み出しアドレスとする。
【０１４９】
［ステップＳ１５４］読み出し制御回路１３３ｅは、エラーが検出されたＳＳＤの読み出しアドレスから境界アドレスまでのデータを、ブロックデータ単位で順次読み出す。読み出されたブロックデータは、ＣＲＣのデータチェック後、ＥＣＣが付加されバッファに格納される。
【０１５０】
［ステップＳ１５５］ステップＳ１５４で読み出しが行われたＳＳＤに対応するデータチェック回路は、読み出したブロックデータについてＣＲＣエラーを検出したか否かを判断する。ＣＲＣエラーを検出した場合、処理がステップＳ１５６に進められる。ＣＲＣエラーを検出していなければ、処理がステップＳ１６１に進められる。
【０１５１】
［ステップＳ１５６］ＣＲＣエラーを検出された場合、エラー情報保持回路１３３ｃは、検出されたエラーに関するエラー情報を保持する。例えばエラー情報保持回路１３３ｃは、エラーが検出されたブロックデータの読み出し元のＳＳＤの識別子に対応するエラー回数を、２回に変更する。その後、処理がステップＳ１５１に進められ、再度エラー回数が２回以上での処理によるデータ復元処理が実行される。
【０１５２】
［ステップＳ１５７］エラー回数が２回以上の場合、読み出し制御回路１３３ｅは、エラー情報保持回路１３３ｃからエラー発生時の読み出しアドレス（エラーアドレス）を取得する。そして読み出し制御回路１３３ｅは、エラーが検出されていないＳＳＤからの読み出しアドレスを、「境界アドレス＋エラーアドレス」とする。
【０１５３】
［ステップＳ１５８］読み出し制御回路１３３ｅは、エラーが検出されていないＳＳＤの読み出しアドレスから境界アドレスまでのデータを、ブロックデータ単位で順次読み出す。読み出されたブロックデータは、ＣＲＣのエラーチェック後、ＥＣＣが付加されバッファに格納される。
【０１５４】
［ステップＳ１５９］ステップＳ１５８で読み出しが行われたＳＳＤに対応するデータチェック回路は、読み出したブロックデータについてＣＲＣエラーを検出したか否かを判断する。ＣＲＣエラーを検出した場合、処理がステップＳ１６０に進められる。ＣＲＣエラーを検出していなければ、処理がステップＳ１６１に進められる。
【０１５５】
［ステップＳ１６０］エラーが検出されていなかったＳＳＤから読み出したブロックデータにおいてもエラーが検出された場合、読み出し制御回路１３３ｅは、データの復元失敗報告をＳＳＵ制御回路１０４に通知し、復元エラー回復処理を終了する。
【０１５６】
［ステップＳ１６１］ブロックデータが書き込まれたバッファに対応する書き込み制御回路が、そのバッファからブロックデータを読み出す。バッファから読み出されたブロックデータは、そのバッファに対応するデータチェック回路でＥＣＣエラーの有無がチェックされる。
【０１５７】
［ステップＳ１６２］バッファからの読み出しを行った書き込み制御回路は、訂正不可能なＥＣＣエラーが検出されたか否かを判断する。訂正不可能なＥＣＣエラーが検出された場合、処理がステップＳ１６０に進められ、復元失敗報告後に、復元エラー回復処理が強制終了する。訂正不可能なＥＣＣエラーが検出されていなければ、処理がステップＳ１６３に進められる。
【０１５８】
［ステップＳ１６３］読み出したブロックデータに訂正不可能なＥＣＣエラーがなければ、バッファからの読み出しを行った書き込み制御回路は、対応するＤＩＭＭの書き込みカウンタの位置に、読み出したブロックデータを書き込む。
【０１５９】
［ステップＳ１６４］復元データ管理回路１３３ｄは、すべてのデータのＤＩＭＭ１１１，１１２への復元が完了したか否かを判断する。すべてのデータの復元が完了した場合、復元エラー回復処理が終了する。復元が完了していないデータがある場合、処理がステップＳ１６１に進められ、ステップＳ１６０〜Ｓ１６３の動作が復元完了まで繰り返される。その結果、２重化されたＳＳＤの片側でエラーが起きた場合においても、ＤＩＭＭへのデータ復元動作を短時間で行う事が可能となる。
【０１６０】
以上説明したように、第２の実施の形態では、データ退避時に、ＤＩＭＭ１１１，１１２のすべてのデータが、ＳＳＤ１２１，１２２の上位領域に格納されるように、データを退避する。そして、ＤＩＭＭ１１１，１１２のすべてのデータを、ＳＳＤ１２１，１２２の下位領域に退避することで、退避したデータの２重化を図る。このようなデータ退避を行うことで、データ復元時には、ＳＳＤ１２１，１２２の上位領域からのみデータをシーケンシャルに読み出すことで、すべてのデータの復元が可能となる。すなわち、ＳＳＤ１２１，１２２の下位領域に対するデータ読み出しのアクセスを行わずに済み、効率的なデータ復元が可能となる。
【０１６１】
例えば比較例として、ＤＩＭＭから読み出した順に、ＳＳＤにブロックデータを格納した場合について説明する。
図１８は、データ退避・復元処理の比較例を示す図である。図１８の例では、データ退避時には、ＤＩＭＭ１１８とＤＩＭＭ１１９とのそれぞれから、上位から順にブロックデータが読み出されている。そして読み出されたブロックデータは、読み出された順に、ＳＳＤ１２８とＳＳＤ１２９とに２重化して書き込まれている。
【０１６２】
このようなデータ退避処理を行った場合、データを復元する際には、ＳＳＤ１２８，１２９の少なくともいずれか一方について、全体のデータ読み出しを行うこととなる。図１８の例では、ＤＩＭＭ１１８，１１９の全記憶容量が８ＧＢであり、ＳＳＤ１２８，１２９もそれぞれ８ＧＢである。すると、例えばＳＳＤ１２８から８ＧＢ分のデータ読み出しが行われる。
【０１６３】
一方、図６に示したように、第２の実施の形態では、ＳＳＤ１２１とＳＳＤ１２２との上位領域に、退避したデータのすべてが格納されている。この場合、ＳＳＤ１２１とＳＳＤ１２２とそれぞれから、４ＧＢ分ずつデータを並列に読み出せば、ＤＩＭＭのデータを復元できる。その結果、データ復元時間を約半分に短縮することができる。
【０１６４】
なお、以上の説明は、ＤＩＭＭが２枚の場合の処理手順であるが、図７に示すようにＤＩＭＭ１枚の場合にも適用できる。１枚のＤＩＭＭのデータを２重化されたＳＳＤに退避する場合は、例えばデータブロックごとに１枚のＤＩＭＭから読み出したデータの格納バッファを、バッファ選択回路１３２ｃが選択する。読み出されたブロックデータは、選択されたバッファに格納される。これにより、１枚のＤＩＭＭから読み出されたデータが複数のバッファに振り分けられる。以降はＤＩＭＭが２枚の時と同じ動作で、ＤＩＭＭデータの退避が可能である。復元動作は、各ＳＳＤから読み出したデータが対応するバッファに書き込まれる。そして、書き込み先選択回路１３３ｎが、バッファからの読み出し動作を交互に行い１枚のＤＩＭＭに復元データの書き込みを行う。ＤＩＭＭの動作はＳＳＤの動作より高速であるために各ＳＳＤの読み出しを並列に行い、１枚のＤＩＭＭに退避させる動作においても、ＤＩＭＭへの復元時間が短縮可能な効果が得られる。
【０１６５】
〔第３の実施の形態〕
次に第３の実施の形態について説明する。第３の実施の形態は、ＤＩＭＭ枚数とＳＳＤ枚数が、例えば４枚以上の多数の場合にも適用可能なデータ退避・復元技術である。
【０１６６】
第３の実施の形態では、ＤＩＭＭ枚数、ＳＳＤ枚数は偶数とする。そしてＤＩＭＭ・ＳＳＤとも２つのグループにグループ分けする。各グループ内の枚数は同じ枚数とする。
なお、第３の実施の形態におけるメモリ制御回路１３０−１の内部構成は、図４に示す第２の実施の形態のメモリ制御回路１３０に対して、ＤＩＭＭおよびＳＳＤの選択回路を追加したものである。そこで以下の説明において、図４、図１０、図１４で示した第２の実施の形態の要素と同じ機能の要素には同じ符号を付し、説明を省略する。
【０１６７】
図１９は、第３の実施の形態におけるメモリ制御回路内のデータ退避機能の一例を示すブロック図である。
複数のＤＩＭＭは、２つのＤＩＭＭグループ１１３，１１４に分けられている。ＤＩＭＭグループ１１３の識別子を「ＤＩＭＭグループ０」、ＤＩＭＭグループ１１４の識別子を「ＤＩＭＭグループ１」とする。ＤＩＭＭグループ１１３，１１４それぞれに属するＤＩＭＭには、グループ内における識別番号が付与されている。
【０１６８】
同様に複数のＳＳＤは、２つのＳＳＤグループ１２３，１２４に分けられている。ＳＳＤグループ１２３の識別子を「ＳＳＤグループ０」、ＳＳＤグループ１２４の識別子を「ＳＳＤグループ１」とする。ＳＳＤグループ１２３，１２４それぞれに属するＳＳＤには、グループ内における識別番号が付与されている。同一グループのＳＳＤそれぞれの一部の記憶領域を纏められ、図９に示す上位領域１２１ａ，１２２ａとして使用される。同様に同一グループのＳＳＤそれぞれの一部の記憶領域が纏められ、図９に示す下位領域１２１ｂ，１２２ｂとして使用される。
【０１６９】
メモリ制御回路１３０−１は、ＤＩＭＭからのデータ読み出し回路として、ＤＩＭＭ選択カウンタ１４１，１４２、ＤＩＭＭ選択カウンタ制御回路１４３、選択回路１４４，１４５、および読み出しデータ数計算回路１４６を有する。
【０１７０】
ＤＩＭＭ選択カウンタ１４１は、ＤＩＭＭグループ１１３に属するＤＩＭＭのうちの、データ読み出し対象として選択するＤＩＭＭの識別番号を示すカウンタである。ＤＩＭＭ選択カウンタ１４２は、ＤＩＭＭグループ１１４に属するＤＩＭＭのうちの、データ読み出し対象として選択するＤＩＭＭの識別番号を示すカウンタである。ＤＩＭＭ選択カウンタ制御回路１４３は、ＤＩＭＭ選択カウンタ１４１，１４２の値を制御する。選択回路１４４は、ＤＩＭＭグループ１１３内の、ＤＩＭＭ選択カウンタ１４１で示される識別番号のＤＩＭＭを、読み出し対象として選択する。選択回路１４５は、ＤＩＭＭグループ１１４内の、ＤＩＭＭ選択カウンタ１４２で示される識別番号のＤＩＭＭを、読み出し対象として選択する。読み出しデータ数計算回路１４６は、ＤＩＭＭから読み出されたデータ量をカウントし、ブロックデータ分読み出したことを監視する。
【０１７１】
またメモリ制御回路１３０−１は、ＳＳＤへのデータ書き込み回路として、ＳＳＤ選択カウンタ１５１，１５２、ＳＳＤ選択カウンタ制御回路１５３、選択回路１５４，１５５、書き込みデータ数計算回路１５６を有する。
【０１７２】
ＳＳＤ選択カウンタ１５１は、ＳＳＤグループ１２３に属するＳＳＤのうちの、データ書き込み対象として選択するＳＳＤの識別番号を示すカウンタである。ＳＳＤ選択カウンタ１５２は、ＳＳＤグループ１２４に属するＳＳＤのうちの、データ書き込み対象として選択するＳＳＤの識別番号を示すカウンタである。ＳＳＤ選択カウンタ制御回路１５３は、ＳＳＤ選択カウンタ１５１，１５２の値を制御する。選択回路１５４は、ＳＳＤグループ１２３内の、ＳＳＤ選択カウンタ１５１で示される識別番号のＳＳＤを、書き込み対象として選択する。選択回路１５５は、ＳＳＤグループ１２４内の、ＳＳＤ選択カウンタ１５２で示される識別番号のＳＳＤを、書き込み対象として選択する。書き込みデータ数計算回路１５６は、ＳＳＤに書き込まれたデータ量をカウントし、ブロックデータ分読み出したことを監視する。
【０１７３】
次に、ＤＩＭＭ／ＳＳＤが複数枚ある場合のデータ退避動作の説明をする。基本はＤＩＭＭ／ＳＳＤが２枚の動作と同じであり、複数枚あるＤＩＭＭ／ＳＳＤのどれを使用するのかを選択する選択回路が追加される。ＤＩＭＭグループ０／１それぞれからのデータ読み出し動作は同一の動作である。またＳＳＤグループ０／１それぞれに対するデータ書き込み動作は同一の動作である。
【０１７４】
図２０は、第３の実施の形態のＤＩＭＭデータの読み出し処理の手順の一例を示すフローチャートである。以下、図２０に示す処理をステップ番号に沿って説明する。
［ステップＳ２０１］外部電源２１からの電力が停電すると、ＵＰＳ制御回路１０２が停電を検知する。ＵＰＳ制御回路１０２は、停電を検知すると、ＵＰＳ１０３からの電力供給を開始すると共に、ＳＳＵ制御回路１０４に対して停電の発生を通知する。ＳＳＵ制御回路１０４は、停電発生の通知に応答し、メモリ制御回路１３０−１に対してデータ退避指示を送信する。これにより、ＤＩＭＭグループ１１３，１１４に属するＤＩＭＭ内のデータのＳＳＤグループ１２３，１２４に属するＳＳＤへの退避が開始される。
【０１７５】
［ステップＳ２０２］ＤＩＭＭ選択カウンタ制御回路１４３は、ＤＩＭＭ選択カウンタ１４１，１４２に対して、初期値を設定する。例えば、ＤＩＭＭグループ１１３，１１４それぞれ内のＤＩＭＭに対して、「０」から開始される昇順の識別番号が付与されている場合、ＤＩＭＭ選択カウンタ１４１，１４２に「０」が設定される。すると、選択回路１４４，１４５では、ＤＩＭＭグループ１１３，１１４内の、ＤＩＭＭ選択カウンタ１４１，１４２で選択された識別番号のＤＩＭＭを、データ退避回路１３２に電気的に接続する。
【０１７６】
同様にＳＳＤ選択カウンタ制御回路１５３は、ＳＳＤ選択カウンタ１５１，１５２に対して、初期値を設定する。例えば、ＳＳＤグループ１２３，１２４それぞれ内のＳＳＤに対して、「０」から開始される昇順の識別番号が付与されている場合、ＳＳＤ選択カウンタ１５１，１５２に「０」が設定される。すると、選択回路１５４，１５５では、ＳＳＤグループ１２３，１２４内の、ＳＳＤ選択カウンタ１４１，１４２で選択された識別番号のＳＳＤを、データ退避回路１３２に電気的に接続する。
【０１７７】
［ステップＳ２０３］データ退避回路１３２内の読み出し制御回路１３２ｉは、ブロックデータを格納するだけの空き容量がバッファにあるか否かを判断する。この処理の詳細は、図１１のステップＳ１０２と同様である。
【０１７８】
［ステップＳ２０４］データ退避回路１３２内の読み出し制御回路１３２ｉは、各ＤＩＭＭグループ１１３，１１４内の選択されたＤＩＭＭから１ブロック分のブロックデータを読み出す。ＤＩＭＭグループ１１３内のＤＩＭＭから読み出されたブロックデータは、データチェック回路１３２ａに入力される。ＤＩＭＭグループ１１４内のＤＩＭＭから読み出されたブロックデータは、データチェック回路１３２ｂに入力される。
【０１７９】
［ステップＳ２０５］読み出しデータ数計算回路１４６は、ＤＩＭＭグループ１１３のＤＩＭＭから読み出されたデータ量をカウントし、読み出されたデータ量を監視する。そして、読み出しデータ数計算回路１４６は、１ブロック分のデータ（ブロックデータ）が読み出されたか否かを判断する。ブロックデータが読み出された場合、処理がステップＳ２０６に進められる。ブロックデータが読み出されていない場合、ステップＳ２０５の処理が繰り返される。
【０１８０】
［ステップＳ２０６］ブロックデータが読み出されると、ＤＩＭＭ選択カウンタ制御回路１４３は、ＤＩＭＭ選択カウンタ１４１，１４２の値を「１」インクリメントする。
［ステップＳ２０７］ＤＩＭＭ選択カウンタ制御回路１４３は、ＤＩＭＭ選択カウンタ１４１，１４２の値と１グループ内ＤＩＭＭ枚数とを比較し、一致するか否かを判断する。なお、全ＤＩＭＭ枚数は、メモリ構成管理回路１３１内のレジスタ群１３１ａに予め登録されている。ＤＩＭＭ選択カウンタ制御回路１４３は、メモリ構成管理回路１３１から全ＤＩＭＭ枚数を取得し、その枚数の半分を、１グループ内ＤＩＭＭ枚数と判断する。
【０１８１】
ＤＩＭＭ選択カウンタ１４１，１４２の値と１グループ内ＤＩＭＭ枚数とが一致した場合、処理がステップＳ２０９に進められる。ＤＩＭＭ選択カウンタ１４１，１４２の値と１グループ内ＤＩＭＭ枚数とが一致しない場合、処理がステップＳ２０８に進められる。
【０１８２】
［ステップＳ２０８］ＤＩＭＭ選択カウンタ１４１，１４２の値と１グループ内ＤＩＭＭ枚数とが一致しない場合、ＤＩＭＭ選択カウンタ制御回路１４３は、各ＤＩＭＭグループ１１３，１１４からの読み出しカウンタの値を、１ブロック分減算する。その後、処理がステップＳ２１０に進められる。
【０１８３】
［ステップＳ２０９］ＤＩＭＭ選択カウンタ１４１，１４２の値と１グループ内ＤＩＭＭ枚数とが一致した場合、ＤＩＭＭ選択カウンタ制御回路１４３は、ＤＩＭＭ選択カウンタ１４１，１４２それぞれの値を「０」に初期化する。
【０１８４】
なお、ＤＩＭＭ読み出しカウンタの値は、ＤＩＭＭからデータが読み出されるごとに、読み出されたデータ量だけ増加する。また、ＤＩＭＭ選択カウンタ１４１，１４２の値と１グループ内ＤＩＭＭ枚数とが一致した場合には、ＤＩＭＭ読み出しカウンタの値を減少させる処理（ステップＳ２０８）が行われない。これは、ＤＩＭＭ選択カウンタ１４１，１４２の値と１グループ内ＤＩＭＭ枚数とが一致した場合に、ＤＩＭＭ読み出しカウンタの値を１ブロック分増加させることを意味する。
【０１８５】
［ステップＳ２１０］データ退避回路１３２内の各データチェック回路１３２ａ，１３２ｂは、入力されたブロックデータの訂正不可能なエラーを検出したか否かを判断する。データチェック回路１３２ａ，１３２ｂは、訂正不可能なＥＣＣエラー（例えば複数ビットのエラー）があれば、処理を強制終了する。データチェック回路１３２ａ，１３２ｂは、エラーがない場合、およびエラーがあったとしても訂正可能なＥＣＣエラーであれば、処理をステップＳ２１１に進める。
【０１８６】
［ステップＳ２１１］ＥＣＣエラーが検出されないか、エラーが訂正された場合、ブロックデータがバッファ１３４ａ，１３５ａに書き込まれる。例えばＤＩＭＭグループ１１３内のＤＩＭＭから読み出されたブロックデータは、バッファ１３４ａ内の、書き込みカウンタ１３２ｄで示されるアドレスの位置に書き込まれる。ＤＩＭＭグループ１１４から読み出されたブロックデータは、バッファ１３５ａ内の、書き込みカウンタ１３２ｅで示されるアドレスの位置に書き込まれる。
【０１８７】
［ステップＳ２１２］読み出し制御回路１３２ｉは、ＤＩＭＭグループ１１３，１１４に属するＤＩＭＭ内のすべてのデータを読み出したか否かを判断する。すべてのデータの読み出しが完了した場合、ＤＩＭＭデータ読み出し処理が終了する。読み出していないデータがある場合、読み出し制御回路１３２ｉは、処理をステップＳ２０３に進める。
【０１８８】
このようにして、全てのＤＩＭＭデータを読み出すまで、ステップＳ２０３〜Ｓ２１１の処理が繰り返され、順次、データ退避回路１３２内のバッファにデータが書き込まれる。ＤＩＭＭから読み出されたデータおよびバッファからの読み出しでエラーが検出されない場合は、ＳＳＤグループ１２３，１２４内のＳＳＤへの書き込みが行われる。エラーが検出された場合には、前記しているようにエラー報告して強制終了動作となる。
【０１８９】
次に、バッファ１３４ａ，１３５ａに格納されたデータの、ＳＳＤグループ１２３，１２４内のＳＳＤへの書き込み処理について説明する。
図２１は、第３の実施の形態のＳＳＤ書き込み処理の手順の一例を示すフローチャートである。以下、図２１に示す処理をステップ番号に沿って説明する。
【０１９０】
［ステップＳ２２１］書き込み制御回路１３２ｌは、バッファ１３４ａ，１３５ａにデータがあるか否かを判断する。この処理の詳細は、図１２のステップＳ１１１と同様である。バッファ１３４ａ，１３５ａにデータがある場合、処理がステップＳ２２２に進められる。バッファ１３４ａ，１３５ａにデータがなければ、ステップＳ２２１の処理が繰り返される。
【０１９１】
［ステップＳ２２２］書き込み制御回路１３２ｌは、バッファ１３４ａ，１３５ａからデータを読み出す。この処理の詳細は、図１２のステップＳ１１２と同様である。
［ステップＳ２２３］各データチェック回路１３２ｊ，１３２ｋは、入力されたブロックデータの訂正不可能なエラーを検出したか否かを判断する。データチェック回路１３２ｊ，１３２ｋは、訂正不可能なＥＣＣエラー（例えば複数ビットのエラー）があれば、処理を強制終了する。データチェック回路１３２ｊ，１３２ｋは、エラーがない場合、およびエラーがあったとしても訂正可能なＥＣＣエラーであれば、処理をステップＳ２２４に進める。
【０１９２】
［ステップＳ２２４］書き込み制御回路１３２ｌは、バッファ１３４ａ，１３５ａから読み出したデータを、ＳＳＤグループ１２３，１２４内の選択されているＳＳＤに書き込む。例えば書き込み制御回路１３２ｌは、ＳＳＤグループ１２３内の選択されているＳＳＤに、ＤＩＭＭグループ１１３内のＤＩＭＭから読み出したブロックデータを書き込む。また書き込み制御回路１３２ｌは、ＳＳＤグループ１２４内の選択されているＳＳＤに、ＤＩＭＭグループ１１４内のＤＩＭＭから読み出したブロックデータを書き込む。
【０１９３】
［ステップＳ２２５］書き込み制御回路１３２ｌは、１ブロック分のブロックデータの書き込みが完了したか否かを判断する。１ブロック分のブロックデータの書き込みが完了した場合、書き込み制御回路１３２ｌは処理をステップＳ２２６に進める。１ブロック分のブロックデータの書き込みが完了していない場合、書き込み制御回路１３２ｌはステップＳ２２５を繰り返し、書き込み完了を待つ。
【０１９４】
［ステップＳ２２６］書き込み制御回路１３２ｌは、バッファ１３４ａ，１３５ａに関する読み出しカウンタ１３２ｆと、ＳＳＤの書き込みカウンタとの値を、１ブロック分減少させる。すなわちカウンタの値から、１ブロックのデータ量分の値を減算する。
【０１９５】
［ステップＳ２２７］書き込み制御回路１３２ｌは、バッファ１３４ａ，１３５ａから読み出したデータを、ＳＳＤグループ１２３，１２４内のＳＳＤに書き込む。例えば書き込み制御回路１３２ｌは、ＳＳＤグループ１２３の書き込みカウンタの値に境界アドレスの値を加算した値を書き込み先のアドレスとし、ＳＳＤグループ１２３内のＳＳＤに対し、ＤＩＭＭグループ１１４内のＤＩＭＭから読み出したブロックデータを書き込む。また書き込み制御回路１３２ｌは、ＳＳＤグループ１２４の書き込みカウンタの値に境界アドレスの値を加算した値を書き込み先のアドレスとし、ＳＳＤグループ１２４内のＳＳＤに対し、ＤＩＭＭグループ１１３内のＤＩＭＭから読み出したブロックデータを書き込む。
【０１９６】
［ステップＳ２２８］書き込みデータ数計算回路１５６は、ＳＳＤグループ１２３，１２４それぞれに対する１ブロックずつのブロックデータの書き込みが行われ、合わせて２ブロック分のデータの書き込みが完了したか否かを判断する。２ブロック分の書き込みが完了した場合、処理がステップＳ２２９に進められる。２ブロック分の書き込みが完了していなければ、ステップＳ２２８の処理が繰り返される。
【０１９７】
［ステップＳ２２９］２ブロック分のデータの書き込みが完了すると、ＳＳＤ選択カウンタ制御回路１５３は、ＳＳＤ選択カウンタ１５１，１５２の値を「１」だけインクリメントする。
【０１９８】
［ステップＳ２３０］ＳＳＤ選択カウンタ制御回路１５３は、ＳＳＤ選択カウンタ１５１，１５２の値と１グループ内ＳＳＤ枚数とを比較し、一致するか否かを判断する。なお、全ＳＳＤ枚数は、メモリ構成管理回路１３１内のレジスタ群１３１ａに予め登録されている。ＳＳＤ選択カウンタ制御回路１５３は、メモリ構成管理回路１３１から全ＤＩＭＭ枚数を取得し、その枚数の半分を、１グループ内ＳＳＤ枚数と判断する。
【０１９９】
ＳＳＤ選択カウンタ１５１，１５２の値と１グループ内ＳＳＤ枚数とが一致した場合、処理がステップＳ２３２に進められる。ＳＳＤ選択カウンタ１５１，１５２の値と１グループ内ＳＳＤ枚数とが一致しない場合、処理がステップＳ２３１に進められる。
【０２００】
［ステップＳ２３１］ＳＳＤ選択カウンタ１５１，１５２の値と１グループ内ＳＳＤ枚数とが一致しない場合、ＳＳＤ選択カウンタ制御回路１５３は、各ＳＳＤグループ１２３，１２４へのデータの書き込みカウンタの値を、１ブロック分減少させる。その後、処理がステップＳ２３３に進められる。
【０２０１】
［ステップＳ２３２］ＳＳＤ選択カウンタ１５１，１５２の値と１グループ内ＳＳＤ枚数とが一致した場合、ＳＳＤ選択カウンタ制御回路１５３は、ＳＳＤ選択カウンタ１５１，１５２それぞれの値を「０」に初期化する。
【０２０２】
なお、ＳＳＤ書き込みカウンタの値は、ＳＳＤにデータの書き込みが行われるごとに、書き込みが行われたデータ量だけ増加する。また、ＳＳＤ選択カウンタ１５１，１５２の値と１グループ内ＳＳＤ枚数とが一致した場合には、ＳＳＤ書き込みカウンタの値を減少させる処理（ステップＳ２３１）が行われない。これは、ＳＳＤ選択カウンタ１５１，１５２の値と１グループ内ＳＳＤ枚数とが一致した場合に、ＳＳＤ書き込みカウンタの値を１ブロック分増加させることを意味する。
【０２０３】
［ステップＳ２３３］書き込み制御回路１３２ｌは、ＤＩＭＭグループ１１３，１１４内のすべてのデータの退避が完了したか否かを判断する。書き込み制御回路１３２ｌは、すべてのデータの退避が完了した場合、ＳＳＤ書き込み処理を終了する。書き込み制御回路１３２ｌは、すべてのデータの退避が完了していなければ、処理をステップＳ２２１に進める。
【０２０４】
このようにメモリ制御回路１３０−１は、ＳＳＤグループ１２３，１２４にデータを書き込む場合、ＳＳＤグループ１２３またはＳＳＤグループ１２４内の複数の記憶装置それぞれを順番に選択する。そしてメモリ制御回路１３０−１は、同一書き込みアドレスのまま、所定のデータ量のブロックデータずつ選択した記憶装置に書き込む。またメモリ制御回路１３０−１は、複数の記憶装置のそれぞれの選択が一巡するごとに、書き込みアドレスをブロックデータのデータ量分増加させる。このようなアドレス制御によって、同一ＳＳＤグループ内の複数のＳＳＤにデータを順番に格納することができる。
【０２０５】
このようにして、ＤＩＭＭやＳＳＤが４枚以上であっても、データを２重化させて退避することができる。このとき、ＤＩＭＭグループ１１３内のＤＩＭＭに格納されていたデータは、ＳＳＤグループ１２３内の各ＳＳＤの上位領域と、ＳＳＤグループ１２４内の各ＳＳＤの下位領域とに格納される。またＤＩＭＭグループ１１４内のＤＩＭＭに格納されていたデータは、ＳＳＤグループ１２４内の各ＳＳＤの上位領域と、ＳＳＤグループ１２３内の各ＳＳＤの下位領域とに格納される。
【０２０６】
次に第３の実施の形態におけるデータ復元機能について説明する。
図２２は、第３の実施の形態におけるメモリ制御回路内のデータ復元機能の一例を示すブロック図である。
【０２０７】
メモリ制御回路１３０−１は、ＳＳＤからのデータ読み出し回路として、ＳＳＤ選択カウンタ１６１，１６２、ＳＳＤ選択カウンタ制御回路１６３、選択回路１６４，１６５、および読み出しデータ数計算回路１６６を有する。
【０２０８】
ＳＳＤ選択カウンタ１６１は、ＳＳＤグループ１２３に属するＳＳＤのうちの、データ読み出し対象として選択するＳＳＤの識別番号を示すカウンタである。ＳＳＤ選択カウンタ１６２は、ＳＳＤグループ１２４に属するＳＳＤのうちの、データ読み出し対象として選択するＳＳＤの識別番号を示すカウンタである。ＳＳＤ選択カウンタ制御回路１６３は、ＳＳＤ選択カウンタ１６１，１６２の値を制御する。選択回路１６４は、ＳＳＤグループ１２３内の、ＳＳＤ選択カウンタ１６１で示される識別番号のＳＳＤを、読み出し対象として選択する。選択回路１６５は、ＳＳＤグループ１２４内の、ＳＳＤ選択カウンタ１６２で示される識別番号のＳＳＤを、読み出し対象として選択する。読み出しデータ数計算回路１６６は、ＳＳＤから読み出されたデータ量をカウントし、ブロックデータ分読み出したことを監視する。
【０２０９】
またメモリ制御回路１３０−１は、ＤＩＭＭへのデータ書き込み回路として、ＤＩＭＭ選択カウンタ１７１，１７２、ＤＩＭＭ選択カウンタ制御回路１７３、選択回路１７４，１７５、書き込みデータ数計算回路１７６を有する。
【０２１０】
ＤＩＭＭ選択カウンタ１７１は、ＤＩＭＭグループ１１３に属するＤＩＭＭのうちの、データ書き込み対象として選択するＤＩＭＭの識別番号を示すカウンタである。ＤＩＭＭ選択カウンタ１４２は、ＤＩＭＭグループ１１４に属するＤＩＭＭのうちの、データ書き込み対象として選択するＤＩＭＭの識別番号を示すカウンタである。ＤＩＭＭ選択カウンタ制御回路１７３は、ＤＩＭＭ選択カウンタ１７１，１７２の値を制御する。選択回路１７４は、ＤＩＭＭグループ１１３内の、ＤＩＭＭ選択カウンタ１７１で示される識別番号のＤＩＭＭを、書き込み対象として選択する。選択回路１７５は、ＤＩＭＭグループ１１４内の、ＤＩＭＭ選択カウンタ１７２で示される識別番号のＤＩＭＭを、書き込み対象として選択する。書き込みデータ数計算回路１７６は、ＤＩＭＭに書き込まれたデータ量をカウントし、ブロックデータ分読み出したことを監視する。
【０２１１】
次に、ＤＩＭＭ／ＳＳＤが複数枚ある場合のデータ復元動作の説明をする。基本はＤＩＭＭ／ＳＳＤが２枚の動作と同じであり、複数枚あるＤＩＭＭ／ＳＳＤのどれを使用するかを選択する選択回路が追加される。ＳＳＤグループ０／１それぞれからのデータ読み出し動作は同一の動作である。またＤＩＭＭグループ０／１それぞれに対するデータ書き込み動作は同一の動作である。
【０２１２】
図２３は、第３の実施の形態のＳＳＤデータの読み出し処理の手順の一例を示すフローチャートである。以下、図２３に示す処理をステップ番号に沿って説明する。
［ステップＳ２４１］ＳＳＤ選択カウンタ制御回路１６３は、例えば電源回復によりＳＳＵ制御回路１０４からのデータ復元指示が出力されると、ＳＳＤ選択カウンタ１６１，１６２に対して、初期値を設定する。例えば、ＳＳＤグループ１２３，１２４それぞれ内のＳＳＤに対して、「０」から開始される昇順の識別番号が付与されている場合、ＳＳＤ選択カウンタ１６１，１６２に「０」が設定される。すると、選択回路１６４，１６５では、ＳＳＤグループ１２３，１２４内の、ＳＳＤ選択カウンタ１６１，１６２で選択された識別番号のＳＳＤを、データ復元回路１３３に電気的に接続する。
【０２１３】
同様にＤＩＭＭ選択カウンタ制御回路１７３は、例えば電源回復によりＳＳＵ制御回路１０４からのデータ復元指示が出力されると、ＤＩＭＭ選択カウンタ１７１，１７２に対して、初期値を設定する。例えば、ＤＩＭＭグループ１１３，１１４それぞれ内のＤＩＭＭに対して、「０」から開始される昇順の識別番号が付与されている場合、ＤＩＭＭ選択カウンタ１７１，１７２に「０」が設定される。すると、選択回路１７４，１７５では、ＤＩＭＭグループ１１３，１１４内の、ＤＩＭＭ選択カウンタ１７１，１７２で選択された識別番号のＤＩＭＭを、データ復元回路１３３に電気的に接続する。
【０２１４】
［ステップＳ２４２］読み出し制御回路１３３ｅは、ＳＳＤグループ１２３，１２４それぞれ内の選択されたＳＳＤから、１ブロック分のブロックデータを同時に読み出す。読み出されたブロックデータは、データチェック回路１３３ａ，１３３ｂに入力される。
【０２１５】
［ステップＳ２４３］ＳＳＤ１２１，１２２から読み出されたブロックデータが、バッファ１３４ｂ，１３５ｂに書き込まれる。
［ステップＳ２４４］読み出しデータ数計算回路１６６は、ＳＳＤグループ１２３，１２４それぞれから１ブロックずつのブロックデータの読み出しが行われ、合わせて２ブロック分のデータの読み出しが完了したか否かを判断する。２ブロック分の読み出しが完了した場合、処理がステップＳ２４５に進められる。２ブロック分の読み出しが完了していなければ、ステップＳ２４４の処理が繰り返される。
【０２１６】
［ステップＳ２４５］２ブロック分のデータの読み出しが完了すると、ＳＳＤ選択カウンタ制御回路１５３は、ＳＳＤ選択カウンタ１６１，１６２の値を「１」だけインクリメントする。
【０２１７】
［ステップＳ２４６］ＳＳＤ選択カウンタ制御回路１６３は、ＳＳＤ選択カウンタ１６１，１６２の値と１グループ内ＳＳＤ枚数とを比較し、一致するか否かを判断する。ＳＳＤ選択カウンタ１６１，１６２の値と１グループ内ＳＳＤ枚数とが一致した場合、処理がステップＳ２４８に進められる。ＤＩＭＭ選択カウンタ１４１，１４２の値と１グループ内ＤＩＭＭ枚数とが一致しない場合、処理がステップＳ２４７に進められる。
【０２１８】
［ステップＳ２４７］ＳＳＤ選択カウンタ１６１，１６２の値と１グループ内ＳＳＤ枚数とが一致しない場合、ＳＳＤ選択カウンタ制御回路１６３は、各ＳＳＤグループ１２３，１２４からの読み出しカウンタの値を、１ブロック分減少させる。その後、処理がステップＳ２４９に進められる。
【０２１９】
なお、ＳＳＤ読み出しカウンタの値は、ＳＳＤからデータが読み出されるごとに、読み出されたデータ量だけ増加する。また、ＳＳＤ選択カウンタ１６１，１６２の値と１グループ内ＳＳＤ枚数とが一致した場合には、ＳＳＤ読み出しカウンタの値を減少させる処理（ステップＳ２４７）が行われない。これは、ＳＳＤ選択カウンタ１６１，１６２の値と１グループ内ＳＳＤ枚数とが一致した場合に、ＳＳＤ読み出しカウンタの値を１ブロック分増加させることを意味する。
【０２２０】
［ステップＳ２４８］ＳＳＤ選択カウンタ１６１，１６２の値と１グループ内ＳＳＤ枚数とが一致した場合、ＳＳＤ選択カウンタ制御回路１６３は、ＳＳＤ選択カウンタ１６１，１６２それぞれの値を「０」に初期化する。
【０２２１】
以降、ステップＳ２４９〜Ｓ２５４の処理は、図１５に示すステップＳ１３３〜Ｓ１３８の処理と同様である。
このようにして、ステップＳ２４２〜Ｓ２５４の処理が、全てのＤＩＭＭデータが読み出されるまで繰り返えされ、メモリ制御回路１３０−１内のバッファ１３４ｂ，１３５ｂに書き込まれる。ＳＳＤグループ１２３，１２４からのデータ読み出しや、バッファからのデータ読み出しで訂正不可能なエラーが検出されない場合は、ＤＩＭＭグループ１１３，１１４内のＤＩＭＭへの書き込みが行われる。エラーが検出された場合にはエラー報告して強制終了動作となるか、２重化されているＳＳＤの正常側で復元動作が継続される。
【０２２２】
図２４は、第３の実施の形態のＤＩＭＭへのデータ書き込み処理の手順の一例を示すフローチャートである。以下、図２４に示す処理をステップ番号に沿って説明する。なお、ステップＳ２６１〜Ｓ２６４の処理は、それぞれ図１６に示したステップＳ１４１〜Ｓ１４４の処理と同様である。そこで、ステップＳ２６５以降の処理について、以下に説明する。
【０２２３】
［ステップＳ２６５］書き込み制御回路１３３ｏ，１３３ｐは、読み出したブロックデータに訂正不可能なＥＣＣエラーが検出されなければ、読み出したブロックデータをＤＩＭＭグループ１１３，１１４内の選択されたＤＩＭＭにデータを書き込む。例えば書き込み制御回路１３３ｏは、ＳＳＤグループ１２３内のＳＳＤから読み出されたブロックデータを、ＤＩＭＭグループ１１３内の選択されたＤＩＭＭに書き込む。書き込み制御回路１３３ｐは、ＳＳＤグループ１２４内のＳＳＤから読み出されたブロックデータを、ＤＩＭＭグループ１１４内の選択されたＤＩＭＭに書き込む。
【０２２４】
［ステップＳ２６６］書き込みデータ数計算回路１７６は、ＤＩＭＭグループ１１３，１１４それぞれに対する１ブロックずつのブロックデータの書き込みが行われ、合わせて２ブロック分のデータの書き込みが完了したか否かを判断する。２ブロック分の書き込みが完了した場合、処理がステップＳ２６７に進められる。２ブロック分の書き込みが完了していなければ、ステップＳ２６６の処理が繰り返される。
【０２２５】
［ステップＳ２６７］２ブロック分のデータの書き込みが完了すると、ＤＩＭＭ選択カウンタ制御回路１７３は、ＤＩＭＭ選択カウンタ１７１，１７２の値を「１」だけインクリメントする。
【０２２６】
［ステップＳ２６８］ＤＩＭＭ選択カウンタ制御回路１７３は、ＤＩＭＭ選択カウンタ１７１，１７２の値と１グループ内ＤＩＭＭ枚数とを比較し、一致するか否かを判断する。ＤＩＭＭ選択カウンタ１７１，１７２の値と１グループ内ＤＩＭＭ枚数とが一致した場合、処理がステップＳ２７０に進められる。ＤＩＭＭ選択カウンタ１７１，１７２の値と１グループ内ＤＩＭＭ枚数とが一致しない場合、処理がステップＳ２６９に進められる。
【０２２７】
［ステップＳ２６９］ＤＩＭＭ選択カウンタ１７１，１７２の値と１グループ内ＤＩＭＭ枚数とが一致しない場合、ＤＩＭＭ選択カウンタ制御回路１７３は、各ＤＩＭＭグループ１１３，１１４内のＤＩＭＭ書き込みカウンタの値を、１ブロック分減少させる。その後、処理がステップＳ２７１に進められる。
【０２２８】
［ステップＳ２７０］ＤＩＭＭ選択カウンタ１７１，１７２の値と１グループ内ＤＩＭＭ枚数とが一致した場合、ＤＩＭＭ選択カウンタ制御回路１７３は、ＤＩＭＭ選択カウンタ１７１，１７２それぞれの値を「０」に初期化する。
【０２２９】
なお、ＤＩＭＭ書き込みカウンタの値は、ＤＩＭＭにデータの書き込みが行われるごとに、書き込みが行われたデータ量だけ増加する。また、ＤＩＭＭ選択カウンタ１７１，１７２の値と１グループ内ＤＩＭＭ枚数とが一致した場合には、ＤＩＭＭ書き込みカウンタの値を減少させる処理（ステップＳ２６９）が行われない。これは、ＤＩＭＭ選択カウンタ１７１，１７２の値と１グループ内ＤＩＭＭ枚数とが一致した場合に、ＤＩＭＭ書き込みカウンタの値を１ブロック分増加させることを意味する。
【０２３０】
以降、ステップＳ２７１〜Ｓ２７３の処理は、それぞれ図１６のステップＳ１４６〜Ｓ１４８の処理と同様である。
このように、第３の実施の形態によれば、ＤＩＭＭおよびＳＳＤが４枚以上搭載されている場合でも、データ退避および復元が可能である。しかも、ＤＩＭＭの全データは、各ＳＳＤの上位領域に退避されるため、ＳＳＤの上位領域からデータを読み出すだけで、ＤＩＭＭの全データの復元が可能となる。すなわちデータ復元時にＳＳＤの下位領域からのデータの読み出しを行わずに済み、データ復元時間が短くなる。すなわち、データ復元処理の効率化を図ることができる。
【０２３１】
〔第４の実施の形態〕
次に第４の実施の形態について説明する。第４の実施の形態は、ＤＩＭＭのデータを、複数のＳＳＤそれぞれに同じデータ配列で退避するものである。
【０２３２】
図２５は、第４の実施の形態において退避・復元されるデータを説明する図である。図２５の例では、データを退避させる場合、ＤＩＭＭ１１１内のデータは、一旦、メモリ制御回路１３０−２内のバッファ１３４に格納される。そしてバッファ１３４内のデータが、ＳＳＤ１２１，１２２に格納される。この際、ＤＩＭＭ１１１のデータは、ＳＳＤ１２１内の前半の上位領域１２１ａと、ＳＳＤ１２２内の前半の上位領域１２２ａとの両方に書き込まれる。これにより、ＤＩＭＭ１１１のデータが２重化して、ＳＳＤ１２１，１２２に格納される。
【０２３３】
またＤＩＭＭ１１２内のデータは、一旦、メモリ制御回路１３０−２内のバッファ１３５に格納される。そしてバッファ１３５内のデータが、ＳＳＤ１２１，１２２に格納される。この際、ＤＩＭＭ１１２のデータは、ＳＳＤ１２１内の後半の下位領域１２１ｂと、ＳＳＤ１２２内の後半の下位領域１２２ｂとの両方に書き込まれる。これにより、ＤＩＭＭ１１２のデータが２重化して、ＳＳＤ１２１，１２２に格納される。
【０２３４】
データを復元する場合、ＳＳＤ１２１の上位領域１２１ａから退避されていたデータが読み出され、一旦、バッファ１３４に格納される。そして、バッファ１３４内のデータが、ＤＩＭＭ１１１に書き込まれる。同様に、ＳＳＤ１２２の下位領域１２２ｂから退避されていたデータが読み出され、一旦、バッファ１３５に格納される。そして、バッファ１３５内のデータが、ＤＩＭＭ１１２に書き込まれる。
【０２３５】
このように、第４の実施の形態では、データ復元の際に、ＳＳＤ１２１の上位領域１２１ａとＳＳＤ１２２の下位領域１２２ｂとからデータを読み出して、ＤＩＭＭ１１１，１１２のデータを復元する。これにより、ＳＳＤ１２１，１２２全体からデータを読み出す場合に比べ、約半分の時間でデータの復元が可能となる。
【０２３６】
このように、ＳＳＤ−Ａ／Ｂに対して同じ配列でデータを退避させても、データ復元時の工夫により、短時間でのデータ復元が可能となる。
データ退避時の処理のうち、ＤＩＭＭからのデータ読み出し処理は、図１１に示した第２の実施の形態の処理と同じである。ＳＳＤへのデータ書き込み処理は、図１２に示した第２の実施の形態の処理と一部異なる。
【０２３７】
図２６は、第４の実施の形態のＳＳＤ書き込み処理の手順の一例を示すフローチャートである。図２６に示す処理のうちステップＳ３０１〜Ｓ３０３，Ｓ３０５，Ｓ３０６，Ｓ３０８の処理は、それぞれ図１２に示すステップＳ１１１〜Ｓ１１３，Ｓ１１５，Ｓ１１６，Ｓ１１８の処理と同じである。そこで、図１２の処理と異なるステップＳ３０４，Ｓ３０７の処理について以下に説明する。
【０２３８】
［ステップＳ３０４］書き込み制御回路１３２ｌは、バッファ１３４ａ，１３５ａから読み出したデータを、ＳＳＤ１２１，１２２に書き込む。例えば書き込み制御回路１３２ｌは、ＳＳＤ１２１の書き込みカウンタで示されるアドレスに、ＤＩＭＭ１１１から読み出したブロックデータを書き込む。また書き込み制御回路１３２ｌは、ＳＳＤ１２２の書き込みカウンタで示されるアドレスに境界アドレスを加算した値を書き込みアドレスとして、ＤＩＭＭ１１２から読み出したブロックデータをＳＳＤ１２２に書き込む。ＳＳＤ１２１，１２２それぞれのＳＳＤの書き込みカウンタの値は、ＳＳＤ１２１，１２２それぞれに書き込まれたデータ量分カウントアップされる。
【０２３９】
［ステップＳ３０７］書き込み制御回路１３２ｌは、バッファ１３４ａ，１３５ａから読み出したデータを、ＳＳＤ１２１，１２２に書き込む。例えば書き込み制御回路１３２ｌは、ＳＳＤ１２２の書き込みカウンタで示されるアドレスに、ＤＩＭＭ１１１から読み出したブロックデータを書き込む。また書き込み制御回路１３２ｌは、ＳＳＤ１２１の書き込みカウンタで示されるアドレスに境界アドレスを加算した値を書き込みアドレスとして、ＤＩＭＭ１１２から読み出したブロックデータをＳＳＤ１２１に書き込む。ＳＳＤ１２１，１２２それぞれのＳＳＤの書き込みカウンタの値は、ＳＳＤ１２１，１２２それぞれに書き込まれたデータ量分カウントアップされる。
【０２４０】
データ復元の際には、データ復元時に、ＳＳＤ１２１からは境界アドレスの前半部分（上位領域１２１ａ）からデータが読み出され、ＳＳＤ１２２からは境界アドレスの後半部分（下位領域１２２ｂ）からデータが読み出される。
【０２４１】
以下、第４の実施の形態におけるデータ復元処理について説明する。なお、第４の実施の形態のＳＳＵの構成は、図３、図４、図１０、図１４に示した第２の実施の構成と同様である。
【０２４２】
図２７は、第４の実施の形態におけるデータ復元時のＳＳＤデータ読み出し処理手順の一例を示すフローチャートである。図２７に示す処理のうちステップＳ３１２〜Ｓ３１９の処理は、それぞれ図１５に示すステップＳ１３１〜Ｓ１３８の処理と同じである。そこで、図１５と異なるステップＳ３１１の処理について説明する。
【０２４３】
［ステップＳ３１１］データ復元回路１３３内の読み出し制御回路１３３ｅ（図１４参照）は、データ復元処理の開始時に、境界アドレスを、識別子「ＳＳＤ−Ｂ」のＳＳＤ１２２における読み出しカウンタの値（読み出しアドレス）に設定する。これにより、ＳＳＤ１２２からのブロックデータの読み出しは、境界アドレスから開始される。
【０２４４】
なお、識別子「ＳＳＤ−Ａ」のＳＳＤ１２１における読み出しカウンタの値（読み出しアドレス）は、初期値「０」（最小のアドレス）のままである。従って、ＳＳＤ１２１からのブロックデータの読み出しは、ＳＳＤ１２１の先頭から開始される。
【０２４５】
このように、ＳＳＤ１２１の上位領域からのデータ読み出しと、ＳＳＤ１２２の下位領域からのデータ読み出しとを行えば、ＤＩＭＭ１１１，１１２のデータを復元できる。すなわち図２５に示すように複数のＳＳＤ１２１，１２２内のデータ配列が同じであっても、データ復元時には、それぞれのＳＳＤ１２１，１２２の半分の領域からシーケンシャルにかつ並列にデータ読み出しを行うことで、データ復元時間が短縮される。
【０２４６】
図２７の処理によりＳＳＤからバッファに書き込まれたデータのＤＩＭＭへの書き込み処理は、図１６に示した処理とほぼ同じである。異なるのは、ステップＳ１４８の復元エラー回復処理である。
【０２４７】
以下、第４の実施の形態における復元エラー回復処理について説明する。
図２８は、第４の実施の形態の復元エラー回復処理の手順を示すフローチャートである。図２８に示す処理のうちステップＳ３２１〜Ｓ３２６、Ｓ３２８〜Ｓ３３４の処理は、それぞれ図１７に示すＳ１５１〜Ｓ１５６、Ｓ１５８〜Ｓ１６４の処理と同様である。そこで図１７の処理と異なる、ステップＳ３２７の処理について以下に説明する。
【０２４８】
［ステップＳ３２７］エラー回数が２回以上の場合、読み出し制御回路１３３ｅは、エラー情報保持回路１３３ｃからエラー発生時の読み出しアドレス（エラーアドレス）を取得する。そして読み出し制御回路１３３ｅは、取得したエラーアドレスを、エラーが検出されていないＳＳＤからの読み出しアドレスに設定する。
【０２４９】
このように、ＳＳＤ１２１とＳＳＤ１２２とのそれぞれに退避されたデータの配列が同じであれば、一方のＳＳＤでエラーが発生し、他方のＳＳＤからデータを読み出す場合でも、他方のＳＳＤからデータ読み出しにおいてもエラーアドレスをそのまま使用できる。
【０２５０】
以上のように、２つのＳＳＤ１２１，１２２に同じデータ配列でデータを退避しても、双方のＳＳＤ１２１，１２２から、半分ずつのデータを並列でシーケンシャルに読み出すことができる。その結果、データ復元処理の効率化を図ることができる。
【０２５１】
〔その他の実施の形態〕
なお、上記の各実施の形態に示した処理機能は、コンピュータによって実現することができる。
【０２５２】
図２９は、コンピュータのハードウェアの一構成例を示す図である。コンピュータ３００には、ＵＰＳ１５を介して電源が供給されている。コンピュータ３００は、ＣＰＵ３０１によって装置全体が制御されている。ＣＰＵ３０１には、バス３０８を介して複数のＤＩＭＭ３０２と複数の周辺機器が接続されている。
【０２５３】
複数のＤＩＭＭ３０２は、コンピュータ３００の主記憶装置として使用される。複数のＤＩＭＭ３０２には、ＣＰＵ３０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、複数のＤＩＭＭ３０２には、ＣＰＵ３０１による処理に必要な各種データが格納される。
【０２５４】
バス３０８に接続されている周辺機器としては、複数のＳＳＤ３０３、グラフィック処理装置３０４、入力インタフェース３０５、光学ドライブ装置３０６、および通信インタフェース３０７がある。
【０２５５】
複数のＳＳＤ３０３は、コンピュータ３００の二次記憶装置として使用される。複数のＳＳＤ３０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【０２５６】
グラフィック処理装置３０４には、モニタ１１が接続されている。グラフィック処理装置３０４は、ＣＰＵ３０１からの命令に従って、画像をモニタ１１の画面に表示させる。モニタ１１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【０２５７】
入力インタフェース３０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース３０５は、キーボード１２やマウス１３から送られてくる信号をＣＰＵ３０１に送信する。なお、マウス１３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【０２５８】
光学ドライブ装置３０６は、レーザ光などを利用して、光ディスク１４に記録されたデータの読み取りを行う。光ディスク１４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【０２５９】
通信インタフェース３０７は、ネットワーク１０に接続されている。通信インタフェース３０７は、ネットワーク１０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【０２６０】
以上のようなハードウェア構成によって、上記各実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示したデータ管理装置１も、図２９に示したコンピュータと同様のハードウェアにより実現することができる。
【０２６１】
コンピュータで上記各実施の形態の処理機能を実現する場合、データ管理装置１（図１参照）またはメモリ制御回路１３０（図３、図４等参照）が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。なおプログラムを記録する記録媒体には、一時的な伝搬信号自体は含まれない。
【０２６２】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２６３】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２６４】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０２６５】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０２６６】
１  データ管理装置
２  揮発性記憶装置
２ａ  第１のメモリモジュール
２ｂ  第２のメモリモジュール
３  第１の不揮発性記憶装置
３ａ  第１の連続領域
３ｂ  第２の連続領域
４  第２の不揮発性記憶装置
４ａ  第３の連続領域
４ｂ  第４の連続領域
５  第１のコピー手段
６  第２のコピー手段
７  第１のデータ集合
８  第２のデータ集合
【図１】
2013080299.tif 000003
【図２】
2013080299.tif 000004
【図３】
2013080299.tif 000005
【図４】
2013080299.tif 000006
【図５】
2013080299.tif 000007
【図６】
2013080299.tif 000008
【図７】
2013080299.tif 000009
【図８】
2013080299.tif 000010
【図９】
2013080299.tif 000011
【図１０】
2013080299.tif 000012
【図１１】
2013080299.tif 000013
【図１２】
2013080299.tif 000014
【図１３】
2013080299.tif 000015
【図１４】
2013080299.tif 000016
【図１５】
2013080299.tif 000017
【図１６】
2013080299.tif 000018
【図１７】
2013080299.tif 000019
【図１８】
2013080299.tif 000020
【図１９】
2013080299.tif 000021
【図２０】
2013080299.tif 000022
【図２１】
2013080299.tif 000023
【図２２】
2013080299.tif 000024
【図２３】
2013080299.tif 000025
【図２４】
2013080299.tif 000026
【図２５】
2013080299.tif 000027
【図２６】
2013080299.tif 000028
【図２７】
2013080299.tif 000029
【図２８】
2013080299.tif 000030
【図２９】
2013080299.tif 000031
【手続補正書】
【提出日】平成26年5月21日(2014.5.21)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００３
【補正方法】変更
【補正の内容】
【０００３】
揮発性記憶装置を有する機器の中には、ＵＰＳ（Uninterruptible Power Supply）を搭載するものがある。ＵＰＳを搭載する機器では、停電などにより装置への電力の供給が遮断された場合、ＵＰＳにより電力供給が一定時間確保される。ＵＰＳで電源が供給されている間に、揮発性記憶装置内のデータを不揮発性記憶装置に退避することで、揮発性記憶装置内のデータを保護することができる。不揮発性記憶装置としては、例えばＳＳＤ（Solid-State Drive）やハードディスク装置などが使用される。不揮発性記憶装置に退避されたデータは、電源復旧時に、揮発性記憶装置に書き戻される。そして、揮発性記憶装置に書き戻されたデータを用いて、機器の運用が再開される。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
その後、第２のコピー指示が入力されると、第２のコピー手段６により、第１の連続領域３ａの先頭アドレスから順に第１のデータ集合７のデータが読み出されると共に、第３の連続領域４ａの先頭アドレスから順に第２のデータ集合８のデータが読み出される。すなわち、第１の連続領域３ａと第３の連続領域４ａとの双方から、シーケンシャルなデータ読み出しが行われる。そして、さらに第２のコピー手段６により、読み出した第１のデータ集合７のデータと第２のデータ集合８のデータとが揮発性記憶装置２に書き込まれる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３１
【補正方法】変更
【補正の内容】
【００３１】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、複合計算機システムで利用されるＳＳＵ内の揮発性記憶装置に、不揮発性記憶装置に退避しておいたデータを復元する処理を高速化するものである。なお第２の実施の形態におけるＳＳＵは、第１の実施の形態に示すデータ管理装置１の一例である。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００３２
【補正方法】変更
【補正の内容】
【００３２】
図２は、第２の実施の形態のシステム構成例を示す図である。複合計算機システムでは、クラスタ２００にＳＳＵ１００が接続されている。ＳＳＵ１００には、例えばＳＳＤなどの不揮発性記憶装置が搭載されている。ＳＳＵ１００の不揮発性記憶装置には、クラスタ２００内の複数のＣＰＵそれぞれが共有するデータが格納される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００３５
【補正方法】変更
【補正の内容】
【００３５】
ＤＩＭＭ１１１，１１２は、クラスタ２００内のＣＰＵ２１１，２１２，２１３が使用するデータを格納する揮発性記憶装置である。ＤＩＭＭ１１１，１１２には、例えばＲＡＭのチップが実装されている。またＤＩＭＭ１１１，１１２は、それぞれ書き込みカウンタと読み出しカウンタとを有している。ＤＩＭＭ１１１，１１２の書き込みカウンタは、ＤＩＭＭ１１１，１１２にデータが書き込まれるごとに、書き込まれたデータ量に応じた値だけカウントアップされる。ＤＩＭＭ１１１，１１２の書き込みカウンタの値は、次にデータの書き込みを行う、ＤＩＭＭ１１１，１１２のアドレスを示す。ＤＩＭＭ１１１，１１２の読み出しカウンタは、ＤＩＭＭ１１１，１１２からデータが読み出されるごとに、読み出されたデータ量に応じた値だけカウントアップされる。ＤＩＭＭ１１１，１１２の読み出しカウンタの値は、次にデータの読み出しを行う、ＤＩＭＭ１１１，１１２のアドレスを示す。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００３６
【補正方法】変更
【補正の内容】
【００３６】
ＳＳＤ１２１，１２２は、ＤＩＭＭ１１１，１１２内のデータの退避に使用する不揮発性記憶装置である。ＳＳＤ１２１，１２２には、例えばフラッシュメモリが内蔵されている。またＳＳＤ１２１，１２２は、それぞれ書き込みカウンタと読み出しカウンタとを有している。ＳＳＤ１２１，１２２の書き込みカウンタは、ＳＳＤ１２１，１２２にデータが書き込まれるごとに、書き込まれたデータ量に応じた値だけカウントアップされる。ＳＳＤ１２１，１２２の書き込みカウンタの値は、次にデータの書き込みを行う、ＳＳＤ１２１，１２２のアドレスを示す。ＳＳＤ１２１，１２２の読み出しカウンタは、ＳＳＤ１２１，１２２からデータが読み出されるごとに、読み出されたデータ量に応じた値だけカウントアップされる。ＳＳＤ１２１，１２２の読み出しカウンタの値は、次にデータの読み出しを行う、ＳＳＤ１２１，１２２のアドレスを示す。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００５０
【補正方法】変更
【補正の内容】
【００５０】
またＤＩＭＭ１１２内のデータは、一旦、メモリ制御回路１３０内のバッファ１３５に格納される。そしてバッファ１３５内のデータが、ＳＳＤ１２１，１２２に格納される。この際、ＤＩＭＭ１１２のデータは、ＳＳＤ１２１内の後半の下位領域１２１ｂと、ＳＳＤ１２２内の前半の上位領域１２２ａとの両方に書き込まれる。これにより、ＤＩＭＭ１１２のデータが２重化して、ＳＳＤ１２１，１２２に格納される。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０１０１
【補正方法】変更
【補正の内容】
【０１０１】
訂正不可能なＥＣＣエラーの検出によりＳＳＤデータ書き込みを強制終了した場合、例えばメモリ制御回路１３０は、データ退避の強制終了をＳＳＵ制御回路１０４に通知する。すると、ＳＳＵ制御回路１０４は、ＳＳＵ１００の全機能を停止させ、ＵＰＳ１０３からの電源供給も停止させる。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０１０６
【補正方法】変更
【補正の内容】
【０１０６】
これにより、ステップＳ１１１〜Ｓ１１７の処理を１回実行することにより、ＤＩＭＭ１１１，１１２内の１ブロック分のデータが、２重化してＳＳＤ１２１，１２２に退避されたこととなる。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】０１０７
【補正方法】変更
【補正の内容】
【０１０７】
［ステップＳ１１８］書き込み制御回路１３２ｌは、ＤＩＭＭ１１１，１１２内のすべてのデータの退避が完了したか否かを判断する。例えば書き込み制御回路１３２ｌは、ＳＳＤ１２１，１２２のいずれかのＳＳＤ書き込みアドレスと、ＤＩＭＭ容量計算回路１３１ｂから得られるＤＩＭＭの総記憶容量とが一致した場合、すべてのデータの退避が完了したと判断する。書き込み制御回路１３２ｌは、すべてのデータの退避が完了した場合、ＳＳＤ書き込み処理を終了する。書き込み制御回路１３２ｌは、退避が完了していないデータがあれば、処理をステップＳ１１１に進める。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】０１１０
【補正方法】変更
【補正の内容】
【０１１０】
データ復元が開始されると、識別子「ＳＳＤ−Ａ」のＳＳＤ１２１内のアドレスブロック「Ａ」と、識別子「ＳＳＤ−Ｂ」のＳＳＤ１２２内のアドレスブロック「Ｂ」とが並列に読み出される。読み出されたデータにエラーがなければ、アドレスブロック「Ａ」の、識別子「ＤＩＭＭ−Ａ」のＤＩＭＭ１１１への書き込みと、アドレスブロック「Ｂ」の、識別子「ＤＩＭＭ−Ｂ」のＤＩＭＭ１１２への書き込みとが、並列に実行される。これにより、アドレスブロック「Ａ」、「Ｂ」が、ＤＩＭＭ１１１，１１２に復元される。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】０１１８
【補正方法】変更
【補正の内容】
【０１１８】
エラー情報保持回路１３３ｃは、データチェック回路１３３ａ，１３３ｂから通知されたエラーに関する情報（エラー情報）を保持する。例えば、エラー情報保持回路１３３ｃには、エラーを検出したデータの読み出し元のＳＳＤの識別子、復元エラーフラグのセット、エラーを検出したデータの読み出し／書き込みアドレス、およびエラー回数が保持される。なお、同一ＳＳＤにおいて２回以上エラーが検出された場合、アドレスの更新は行われず、１回目のエラー時のアドレスが保持される。エラー情報保持回路１３３ｃで保持したエラー情報は、読み出し制御回路１３３ｅで参照される。またエラー情報保持回路１３３ｃにエラー情報が設定されると、そのエラーが発生したＳＳＤに対応するバッファの読み出しカウンタの値が、１ブロック分加算される。これにより、エラーが発生したブロックデータのＤＩＭＭへの復元が抑止される。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】０１６４
【補正方法】変更
【補正の内容】
【０１６４】
なお、以上の説明は、ＤＩＭＭが２枚の場合の処理手順であるが、図７に示すようにＤＩＭＭ１枚の場合にも適用できる。１枚のＤＩＭＭのデータを２重化されたＳＳＤに退避する場合は、例えばデータブロックごとに１枚のＤＩＭＭから読み出したデータの格納バッファを、バッファ選択回路１３２ｃが選択する。読み出されたブロックデータは、選択されたバッファに格納される。これにより、１枚のＤＩＭＭから読み出されたデータが複数のバッファに振り分けられる。以降はＤＩＭＭが２枚の時と同じ動作で、ＤＩＭＭデータの退避が可能である。復元動作は、各ＳＳＤから読み出したデータが対応するバッファに書き込まれる。そして、書き込み先選択回路１３３ｎが、バッファからの読み出し動作を交互に行い１枚のＤＩＭＭに復元データの書き込みを行う。ＤＩＭＭの動作はＳＳＤの動作より高速であるために各ＳＳＤの読み出しを並列に行い、１枚のＤＩＭＭに復元させる動作においても、ＤＩＭＭへの復元時間が短縮可能な効果が得られる。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】０１７２
【補正方法】変更
【補正の内容】
【０１７２】
ＳＳＤ選択カウンタ１５１は、ＳＳＤグループ１２３に属するＳＳＤのうちの、データ書き込み対象として選択するＳＳＤの識別番号を示すカウンタである。ＳＳＤ選択カウンタ１５２は、ＳＳＤグループ１２４に属するＳＳＤのうちの、データ書き込み対象として選択するＳＳＤの識別番号を示すカウンタである。ＳＳＤ選択カウンタ制御回路１５３は、ＳＳＤ選択カウンタ１５１，１５２の値を制御する。選択回路１５４は、ＳＳＤグループ１２３内の、ＳＳＤ選択カウンタ１５１で示される識別番号のＳＳＤを、書き込み対象として選択する。選択回路１５５は、ＳＳＤグループ１２４内の、ＳＳＤ選択カウンタ１５２で示される識別番号のＳＳＤを、書き込み対象として選択する。書き込みデータ数計算回路１５６は、ＳＳＤに書き込まれたデータ量をカウントし、ブロックデータ分書き込んだことを監視する。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】０１７６
【補正方法】変更
【補正の内容】
【０１７６】
同様にＳＳＤ選択カウンタ制御回路１５３は、ＳＳＤ選択カウンタ１５１，１５２に対して、初期値を設定する。例えば、ＳＳＤグループ１２３，１２４それぞれ内のＳＳＤに対して、「０」から開始される昇順の識別番号が付与されている場合、ＳＳＤ選択カウンタ１５１，１５２に「０」が設定される。すると、選択回路１５４，１５５では、ＳＳＤグループ１２３，１２４内の、ＳＳＤ選択カウンタ１５１，１５２で選択された識別番号のＳＳＤを、データ退避回路１３２に電気的に接続する。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】０２１０
【補正方法】変更
【補正の内容】
【０２１０】
ＤＩＭＭ選択カウンタ１７１は、ＤＩＭＭグループ１１３に属するＤＩＭＭのうちの、データ書き込み対象として選択するＤＩＭＭの識別番号を示すカウンタである。ＤＩＭＭ選択カウンタ１７２は、ＤＩＭＭグループ１１４に属するＤＩＭＭのうちの、データ書き込み対象として選択するＤＩＭＭの識別番号を示すカウンタである。ＤＩＭＭ選択カウンタ制御回路１７３は、ＤＩＭＭ選択カウンタ１７１，１７２の値を制御する。選択回路１７４は、ＤＩＭＭグループ１１３内の、ＤＩＭＭ選択カウンタ１７１で示される識別番号のＤＩＭＭを、書き込み対象として選択する。選択回路１７５は、ＤＩＭＭグループ１１４内の、ＤＩＭＭ選択カウンタ１７２で示される識別番号のＤＩＭＭを、書き込み対象として選択する。書き込みデータ数計算回路１７６は、ＤＩＭＭに書き込まれたデータ量をカウントし、ブロックデータ分読み出したことを監視する。
【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】０２１５
【補正方法】変更
【補正の内容】
【０２１５】
［ステップＳ２４３］ＳＳＤグループ１２３，１２４から読み出されたブロックデータが、バッファ１３４ｂ，１３５ｂに書き込まれる。
［ステップＳ２４４］読み出しデータ数計算回路１６６は、ＳＳＤグループ１２３，１２４それぞれから１ブロックずつのブロックデータの読み出しが行われ、合わせて２ブロック分のデータの読み出しが完了したか否かを判断する。２ブロック分の読み出しが完了した場合、処理がステップＳ２４５に進められる。２ブロック分の読み出しが完了していなければ、ステップＳ２４４の処理が繰り返される。
【手続補正１８】
【補正対象書類名】明細書
【補正対象項目名】０２１７
【補正方法】変更
【補正の内容】
【０２１７】
［ステップＳ２４６］ＳＳＤ選択カウンタ制御回路１６３は、ＳＳＤ選択カウンタ１６１，１６２の値と１グループ内ＳＳＤ枚数とを比較し、一致するか否かを判断する。ＳＳＤ選択カウンタ１６１，１６２の値と１グループ内ＳＳＤ枚数とが一致した場合、処理がステップＳ２４８に進められる。ＳＳＤ選択カウンタ１６１，１６２の値と１グループ内ＳＳＤ枚数とが一致しない場合、処理がステップＳ２４７に進められる。
【手続補正１９】
【補正対象書類名】明細書
【補正対象項目名】０２２１
【補正方法】変更
【補正の内容】
【０２２１】
以降、ステップＳ２４９〜Ｓ２５４の処理は、図１５に示すステップＳ１３３〜Ｓ１３８の処理と同様である。
このようにして、ステップＳ２４２〜Ｓ２５４の処理が、全てのＳＳＤデータが読み出されるまで繰り返され、メモリ制御回路１３０−１内のバッファ１３４ｂ，１３５ｂに書き込まれる。ＳＳＤグループ１２３，１２４からのデータ読み出しや、バッファからのデータ読み出しで訂正不可能なエラーが検出されない場合は、ＤＩＭＭグループ１１３，１１４内のＤＩＭＭへの書き込みが行われる。エラーが検出された場合にはエラー報告して強制終了動作となるか、２重化されているＳＳＤの正常側で復元動作が継続される。
【手続補正２０】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
揮発性記憶装置と、
順次アクセスが可能な第１の連続領域と、順次アクセスが可能な第２の連続領域とが設けられた第１の不揮発性記憶装置と、
順次アクセスが可能な第３の連続領域と、順次アクセスが可能な第４の連続領域とが設けられた第２の不揮発性記憶装置と、
第１のコピー指示に応答し、前記揮発性記憶装置内のデータを第１のデータ集合と第２のデータ集合とに分け、前記第１のデータ集合のデータと前記第２のデータ集合のデータとを前記揮発性記憶装置から読み出し、読み出した前記第１のデータ集合のデータを前記第１の連続領域と前記第４の連続領域とに書き込むと共に、読み出した前記第２のデータ集合のデータを前記第２の連続領域と前記第３の連続領域とに書き込む第１のコピー手段と、
第２のコピー指示に応答し、順次アクセスによる前記第１の連続領域からの前記第１のデータ集合のデータの読み出しと、順次アクセスによる前記第３の連続領域からの前記第２のデータ集合のデータの読み出しとを並列に実行し、読み出した前記第１のデータ集合のデータと前記第２のデータ集合のデータとを前記揮発性記憶装置に書き込む第２のコピー手段と、
を有するデータ管理装置。
【請求項２】
前記第１の連続領域、前記第２の連続領域、前記第３の連続領域、および前記第４の連続領域は、それぞれ前記揮発性記憶装置の記憶容量の半分の記憶容量を有し、
前記第１の連続領域は、前記第１の不揮発性記憶装置の記憶領域の先頭から連続の記憶領域であり、
前記第２の連続領域は、前記第１の不揮発性記憶装置における、前記第１の連続領域の後方に隣接する連続の記憶領域であり、
前記第３の連続領域は、前記第２の不揮発性記憶装置の記憶領域の先頭から連続の記憶領域であり、
前記第４の連続領域は、前記第２の不揮発性記憶装置における、前記第３の連続領域の後方に隣接する連続の記憶領域であり、
前記第１のコピー手段は、
前記揮発性記憶装置の記憶容量の半分の記憶容量に相当する、アドレスの加算値を有し、
前記揮発性記憶装置から読み出した前記第１のデータ集合のデータを、前記第１の不揮発性記憶装置の先頭から順に書き込むと共に、該データの前記第１の不揮発性記憶装置への書き込みアドレスに前記加算値を加算した値を、前記第２の不揮発性記憶装置への書き込みアドレスとして、該データを前記第２の不揮発性記憶装置に書き込み、
前記揮発性記憶装置から読み出した前記第２のデータ集合のデータを、前記第２の不揮発性記憶装置の先頭から順に書き込むと共に、該データの前記第２の不揮発性記憶装置への書き込みアドレスに前記加算値を加算した値を、前記第１の不揮発性記憶装置への書き込みアドレスとして、該データを前記第１の不揮発性記憶装置に書き込む、
ことを特徴とする請求項１記載のデータ管理装置。
【請求項３】
前記第２のコピー手段は、
前記第１の不揮発性記憶装置から読み出したデータに訂正不可能なエラーを検出した場合、該データの前記第１の不揮発性記憶装置内でのアドレスを記憶し、該アドレスに前記加算値を加算したアドレスを前記第２の不揮発性記憶装置からの読み出しアドレスとして、エラーが検出された該データに替えて前記第２の不揮発性記憶装置からデータを読み出し、
前記第２の不揮発性記憶装置から読み出したデータに訂正不可能なエラーを検出した場合、該データの前記第２の不揮発性記憶装置内でのアドレスを記憶し、該アドレスに前記加算値を加算したアドレスを前記第１の不揮発性記憶装置からの読み出しアドレスとして、エラーが検出された該データに替えて前記第１の不揮発性記憶装置からデータを読み出す、
ことを特徴とする請求項１または２のいずれかに記載のデータ管理装置。
【請求項４】
前記揮発性記憶装置は、第１のメモリモジュールと第２のメモリモジュールとを有しており、
前記第１のコピー手段は、前記第１のメモリモジュール内のデータを前記第１のデータ集合とし、前記第２のメモリモジュール内のデータを前記第２のデータ集合とし、
前記第２のコピー手段は、前記第１のデータ集合のデータを前記第１のメモリモジュールに書き込み、前記第２のデータ集合のデータを前記第２のメモリモジュールに書き込む、
ことを特徴とする請求項１乃至３のいずれかに記載のデータ管理装置。
【請求項５】
前記揮発性記憶装置は、複数のメモリモジュールを有しており、
前記第１のコピー手段は、前記複数のメモリモジュールを第１のグループと第２のグループとに分け、前記第１のグループのメモリモジュール内のデータを前記第１のデータ集合とし、前記第２のグループのメモリモジュール内のデータを前記第２のデータ集合とし、
前記第２のコピー手段は、前記第１のデータ集合のデータを前記第１のグループのメモリモジュールに書き込み、前記第２のデータ集合のデータを前記第２のグループのメモリモジュールに書き込む、
ことを特徴とする請求項１乃至３のいずれかに記載のデータ管理装置。
【請求項６】
前記第１の不揮発性記憶装置は、複数の記憶装置を有し、該複数の記憶装置それぞれの一部の記憶領域を纏めて前記第１の連続領域を構成し、該複数の記憶装置それぞれの一部の記憶領域を纏めて前記第２の連続領域を構成し、
前記第２の不揮発性記憶装置は、複数の記憶装置を有し、該複数の記憶装置それぞれの一部の記憶領域を纏めて前記第３の連続領域を構成し、該複数の記憶装置それぞれの一部の記憶領域を纏めて前記第４の連続領域を構成し、
前記第１のコピー手段は、前記第１の不揮発性記憶装置または前記第２の不揮発性記憶装置にデータを書き込む場合、前記第１の不揮発性記憶装置または前記第２の不揮発性記憶装置内の複数の記憶装置それぞれを順番に選択し、同一書き込みアドレスのまま、所定のデータ量のブロックデータずつ選択した記憶装置に書き込み、前記複数の記憶装置のそれぞれの選択が一巡するごとに、書き込みアドレスをブロックデータのデータ量分増加させ、
前記第２のコピー手段は、前記第１の不揮発性記憶装置または前記第２の不揮発性記憶装置からデータを読み出す場合、前記第１の不揮発性記憶装置または前記第２の不揮発性記憶装置内の複数の記憶装置それぞれを順番に選択し、同一読み出しアドレスのまま、選択した記憶装置から所定のデータ量のブロックデータずつ読み出し、前記複数の記憶装置のそれぞれの選択が一巡するごとに、読み出しアドレスをブロックデータのデータ量分増加させる、
ことを特徴とする請求項１乃至５のいずれかに記載のデータ管理装置。
【請求項７】
前記揮発性記憶装置は、１枚のメモリモジュールを有しており、
前記第１のコピー手段は、前記メモリモジュール内のデータを、所定のデータ量のブロックデータに分割し、前記メモリモジュールの先頭からブロックデータを読み出すごとに、読み出したブロックデータを、前記第１のデータ集合と前記第２のデータ集合とに交互に振り分け、
前記第２のコピー手段は、前記第１の不揮発性記憶装置からの前記第１のデータ集合のブロックデータの読み出しと、前記第２の不揮発性記憶装置からの前記第２のデータ集合のブロックデータの読み出しとを並列に実行し、前記第１のデータ集合のブロックデータと前記第２のデータ集合のブロックデータとを、交互に前記揮発性記憶装置に書き込む、
ことを特徴とする請求項１乃至３のいずれかに記載のデータ管理装置。
【請求項８】
前記第１の連続領域、前記第２の連続領域、前記第３の連続領域、および前記第４の連続領域は、それぞれ前記揮発性記憶装置の記憶容量の半分の記憶容量を有し、
前記第１の連続領域は、前記第１の不揮発性記憶装置の記憶領域の先頭から連続の記憶領域であり、
前記第２の連続領域は、前記第１の不揮発性記憶装置における、前記第１の連続領域の後方に隣接する連続の記憶領域であり、
前記第４の連続領域は、前記第２の不揮発性記憶装置の記憶領域の先頭から連続の記憶領域であり、
前記第３の連続領域は、前記第２の不揮発性記憶装置における、前記第４の連続領域の後方に隣接する連続の記憶領域であり、
前記第１のコピー手段は、
前記揮発性記憶装置の記憶容量の半分の記憶容量に相当する、アドレスの加算値を有し、
前記揮発性記憶装置から前記第１のデータ集合のデータと前記第２のデータ集合のデータとを並列に読み出し、
前記揮発性記憶装置から読み出した前記第１のデータ集合のデータを、前記第１の不揮発性記憶装置に対して、先頭から順に書き込むと共に、該データの前記第１の不揮発性記憶装置への書き込みアドレスに前記加算値を加算した値を、前記第２の不揮発性記憶装置への書き込みアドレスとして、該データと並列に読み出した前記第２のデータ集合のデータを、前記第２の不揮発性記憶装置に書き込み、
前記揮発性記憶装置から読み出した前記第１のデータ集合のデータを、前記第２の不揮発性記憶装置に対して、先頭から順に書き込むと共に、該データの前記第２の不揮発性記憶装置への書き込みアドレスに前記加算値を加算した値を、前記第１の不揮発性記憶装置への書き込みアドレスとして、該データと並列に読み出した前記第２のデータ集合のデータを、前記第１の不揮発性記憶装置に書き込む、
ことを特徴とする請求項１記載のデータ管理装置。
【請求項９】
前記第２のコピー手段は、
前記第１の不揮発性記憶装置の最小のアドレスを、前記第１の連続領域の先頭アドレスとして、該先頭アドレスから順次アクセスにより前記第１のデータ集合のデータを読み出し、
前記第２の不揮発性記憶装置における前記加算値と等しいアドレスを、前記第３の連続領域の先頭アドレスとして、該先頭アドレスから順次アクセスにより前記第２のデータ集合のデータを読み出す、
ことを特徴とする請求項８記載のデータ管理装置。
【請求項１０】
第１のコピー指示に応答し、揮発性記憶装置内のデータを第１のデータ集合と第２のデータ集合とに分け、前記第１のデータ集合のデータと前記第２のデータ集合のデータとを前記揮発性記憶装置から読み出し、
前記揮発性記憶装置から読み出した前記第１のデータ集合のデータを、第１の不揮発性記憶装置内の順次アクセスが可能な第１の連続領域と、第２の不揮発性記憶装置内の順次アクセスが可能な第４の連続領域とに書き込み、
前記揮発性記憶装置から読み出した前記第２のデータ集合のデータを、前記第１の不揮発性記憶装置内の順次アクセスが可能な第２の連続領域と、前記第２の不揮発性記憶装置内の順次アクセスが可能な第３の連続領域とに書き込み、
第２のコピー指示に応答し、順次アクセスによる前記第１の連続領域からの前記第１のデータ集合のデータの読み出しと、順次アクセスによる前記第３の連続領域からの前記第２のデータ集合のデータの読み出しとを並列に実行し、
前記第１の連続領域から読み出した前記第１のデータ集合のデータと、前記第３の連続領域から読み出した前記第２のデータ集合のデータとを前記揮発性記憶装置に書き込む、
ことを特徴とするデータコピー方法。
【請求項１１】
コンピュータに、
第１のコピー指示に応答し、揮発性記憶装置内のデータを第１のデータ集合と第２のデータ集合とに分け、前記第１のデータ集合のデータと前記第２のデータ集合のデータとを前記揮発性記憶装置から読み出し、
前記揮発性記憶装置から読み出した前記第１のデータ集合のデータを、第１の不揮発性記憶装置内の順次アクセスが可能な第１の連続領域と、第２の不揮発性記憶装置内の順次アクセスが可能な第４の連続領域とに書き込み、
前記揮発性記憶装置から読み出した前記第２のデータ集合のデータを、前記第１の不揮発性記憶装置内の順次アクセスが可能な第２の連続領域と、前記第２の不揮発性記憶装置内の順次アクセスが可能な第３の連続領域とに書き込み、
第２のコピー指示に応答し、順次アクセスによる前記第１の連続領域からの前記第１のデータ集合のデータの読み出しと、順次アクセスによる前記第３の連続領域からの前記第２のデータ集合のデータの読み出しとを並列に実行し、
前記第１の連続領域から読み出した前記第１のデータ集合のデータと、前記第３の連続領域から読み出した前記第２のデータ集合のデータとを前記揮発性記憶装置に書き込む、
処理を実行させるプログラム。
【手続補正２１】
【補正対象書類名】図面
【補正対象項目名】図２１
【補正方法】変更
【補正の内容】
【図２１】
2013080299.tif 000032
【手続補正２２】
【補正対象書類名】図面
【補正対象項目名】図２４
【補正方法】変更
【補正の内容】
【図２４】
2013080299.tif 000033
【国際調査報告】
2013080299.tif 000034
2013080299.tif 000035
2013080299.tif 000036
2013080299.tif 000037