(57)【要約】【課題】  ミラーリングされたメモリモジュールにおいて、不揮発性メモリの残寿命の低減を防止する。【解決手段】  本発明のメモリシステムは、揮発性メモリ及び不揮発性メモリを含む複数のデータ記憶手段と、複数のデータ記憶手段のいずれか一つを、第１データ記憶手段と設定し、複数の揮発性メモリに同一のデータを書き込み、揮発性メモリのデータを維持できない状態が発生した場合に、第１データ記憶手段以外の少なくとも一つのデータ記憶手段に含まれる揮発性メモリのデータを該データ記憶手段に含まれる不揮発性メモリに書き込むメモリ制御手段とを含む。【選択図】  図１
2017167801.tif 000002
【特許請求の範囲】
【請求項１】
揮発性メモリ及び不揮発性メモリを含む複数のデータ記憶手段と、
複数の前記データ記憶手段のいずれか一つを、第１データ記憶手段と設定し、
複数の前記揮発性メモリに同一のデータを書き込み、
前記揮発性メモリの前記データを維持できない状態が発生した場合に、前記第１データ記憶手段以外の少なくとも一つの前記データ記憶手段に含まれる前記揮発性メモリのデータを該データ記憶手段に含まれる前記不揮発性メモリに書き込む
メモリ制御手段と
を含むメモリシステム。
【請求項２】
前記メモリ制御手段が、
復電の場合に、前記データが書き込まれた前記不揮発性メモリの前記データを、複数の前記揮発性メモリに書き戻す
請求項１に記載のメモリシステム。
【請求項３】
前記メモリ制御手段が、
前記不揮発性メモリの残寿命を基に、前記第１データ記憶手段を設定する
請求項１又は２に記載のメモリシステム。
【請求項４】
前記メモリ制御手段が、
前記不揮発性メモリの前記残寿命が他の前記データ記憶手段の前記不揮発性メモリの前記残寿命より長い前記データ記憶手段を、前記第１データ記憶手段と設定する
請求項３に記載のメモリシステム。
【請求項５】
前記メモリ制御手段が、
電源投入時、又は、前記復電の時に前記第１データ記憶手段を設定する
請求項２ないし４のいずれか１項に記載のメモリシステム。
【請求項６】
前記揮発性メモリの前記データを維持できない状態が、
少なくとも２つ以上の電源から電力の供給を受ける場合における、いずれか一つの電源からの電力の供給が停止した状態である
請求項１ないし５のいずれか１項に記載のメモリシステム。
【請求項７】
前記メモリ制御手段が、
前記データ記憶手段の前記不揮発性メモリの残寿命が所定の閾値以上である前記データ記憶手段を前記第１データ記憶手段と設定する
請求項１又は２に記載のメモリシステム。
【請求項８】
揮発性メモリ及び不揮発性メモリを含む複数のデータ記憶手段と、
メモリ制御手段と
を含むメモリシステムにおいて、
前記メモリ制御手段が、
複数の前記データ記憶手段のいずれか一つを、第１データ記憶手段と設定し、
複数の前記揮発性メモリに同一のデータを書き込み、
前記揮発性メモリの前記データを維持できない状態が発生した場合に、前記第１データ記憶手段以外の少なくとも一つの前記データ記憶手段に含まれる前記揮発性メモリのデータを該データ記憶手段に含まれる前記不揮発性メモリに書き込む
メモリ制御方法。
【請求項９】
揮発性メモリ及び不揮発性メモリを含む複数のデータ記憶手段と、
コンピュータと
を含むメモリシステムにおいて、
複数の前記データ記憶手段のいずれか一つを、第１データ記憶手段と設定する処理と、
複数の前記揮発性メモリに同一のデータを書き込む処理と、
前記揮発性メモリの前記データを維持できない状態が発生した場合に、前記第１データ記憶手段以外の少なくとも一つの前記データ記憶手段に含まれる前記揮発性メモリのデータを該データ記憶手段に含まれる前記不揮発性メモリに書き込む処理と
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリの管理に関し、特に、複数のメモリを管理するメモリシステム、メモリ制御方法、及び、プログラムに関する。
【背景技術】
【０００２】
不揮発性メモリ（例えば、フラッシュメモリ）とＤＲＡＭ（Dynamic Random Access Memory）とを混載したメモリモジュールとして、ＮＶＤＩＭＭ(Nonvolatile Dual In-line Memory Module)がある。ＮＶＤＩＭＭの規格として、標準化団体ＪＥＤＥＣ(Joint Electron Device Engineering Council)が、３種類の規格を規定している。
【０００３】
３種類の規格の一つであるＮＶＤＩＭＭ−Ｎ規格は、メモリモジュールにＤＲＡＭと不揮発性メモリとの両方のメモリを搭載する。両方のメモリの記憶容量は、同じ容量である。そして、ＮＶＤＩＭＭ−Ｎ規格は、ＤＲＡＭのバックアップとして、不揮発性メモリを用いる。
【０００４】
例えば、ＮＶＤＩＭＭ−Ｎ規格に沿ったメモリモジュールを用いるメモリシステムは、主電源に加え、スーパキャパシタ等の補助電源を用いて利用される。そして、主電源が失われる等のＤＲＡＭのデータを維持できない状態が発生した場合、メモリシステムは、補助電源からの電力を用いて、ＤＲＡＭのデータを不揮発性メモリに書き込む。このような動作を用いて、メモリシステムは、ＤＲＡＭのデータを保護できる。例えば、特許文献１は、ＮＶＤＩＭＭ−Ｎの規格ではないが、同様の技術を開示している。
【０００５】
また、データ保護技術として、ミラーリングがある。ミラーリングをメモリモジュールに適用する場合、メモリコントローラは、２枚のメモリモジュールに、同じデータを書き込む。そして、メモリコントローラは、いずれか片方のメモリモジュールに障害が発生した場合、残りのメモリモジュールを用いて処理を継続する（例えば、特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１０８０２６号公報
【特許文献２】特開２０１２−０１４４１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、不揮発性メモリには、書き込み可能回数（以下、寿命と呼ぶ）が、存在する。そのため、ＮＶＤＩＭＭ−Ｎ規格に沿ったメモリモジュールを用いる場合、ＤＲＡＭのデータ保護に加え、不揮発性メモリの寿命を考慮する必要がある。
【０００８】
不揮発性メモリの寿命に対する考慮は、ミラーリングされている場合も、必要である。
【０００９】
特許文献１に記載の発明は、通常のミラーリングにおいて、データの書き込み量を変更する発明である。しかし、電源断の場合、特許文献１に記載の発明は、不揮発性メモリに書き込むデータ量を制限できない。そのため、特許文献１に記載の発明は、ミラーリングとして用いられているメモリモジュールの電源断におけるバックアップにおいて、不揮発性メモリの残り書き込み可能回数（以下、残寿命と呼ぶ）を減らしてしまうという問題点があった。
【００１０】
また、特許文献２に記載の発明は、ミラーリングに関する発明ではない。そのため、特許文献２に記載の発明は、ミラーリングとして用いられているメモリモジュールの電源断におけるバックアップにおいて、不揮発性メモリの残寿命を減らしてしまうという問題点があった。
【００１１】
本発明の目的は、上記問題点を解決し、ミラーリングされたメモリモジュールにおいて、不揮発性メモリの残寿命の低下量を削減するメモリシステム、メモリ制御方法、及び、プログラムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明の一形態におけるメモリシステムは、揮発性メモリ及び不揮発性メモリを含む複数のデータ記憶手段と、複数のデータ記憶手段のいずれか一つを、第１データ記憶手段と設定し、複数の揮発性メモリに同一のデータを書き込み、揮発性メモリのデータを維持できない状態が発生した場合に、第１データ記憶手段以外の少なくとも一つのデータ記憶手段に含まれる揮発性メモリのデータを該データ記憶手段に含まれる不揮発性メモリに書き込むメモリ制御手段とを含む。
【００１３】
本発明の一形態におけるメモリ制御方法は、揮発性メモリ及び不揮発性メモリを含む複数のデータ記憶手段と、メモリ制御手段とを含むメモリシステムにおいて、メモリ制御手段が、複数のデータ記憶手段のいずれか一つを、第１データ記憶手段と設定し、複数の揮発性メモリに同一のデータを書き込み、揮発性メモリのデータを維持できない状態が発生した場合に、第１データ記憶手段以外の少なくとも一つのデータ記憶手段に含まれる揮発性メモリのデータを該データ記憶手段に含まれる不揮発性メモリに書き込む。
【００１４】
本発明の一形態におけるプログラムは、揮発性メモリ及び不揮発性メモリを含む複数のデータ記憶手段と、コンピュータとを含むメモリシステムにおいて、複数のデータ記憶手段のいずれか一つを、第１データ記憶手段と設定する処理と、複数の揮発性メモリに同一のデータを書き込む処理と、揮発性メモリのデータを維持できない状態が発生した場合に、第１データ記憶手段以外の少なくとも一つのデータ記憶手段に含まれる揮発性メモリのデータを該データ記憶手段に含まれる不揮発性メモリに書き込む処理とをコンピュータに実行させる。
【発明の効果】
【００１５】
本発明に基づけば、ミラーリングされたメモリモジュールにおいて、不揮発性メモリの残寿命の低下量を削減するとの効果を奏することができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、本発明における第１の実施形態に係るメモリシステムの構成の一例を示すブロック図である。
【図２】図２は、第１実施形態に係るメモリシステムの動作の概要を示すタイミングチャートである。
【図３】図３は、メモリコントローラが現用系と待機系とを設定する動作の一例を示すフローチャートである。
【図４】図４は、電源断時における動作の一例を示すフローチャートである。
【図５】図５は、復電時における動作の一例を示すフローチャートである。
【図６】図６は、第２の実施形態における動作の一例を示すタイムチャートである。
【図７】図７は、本発明の概要であるメモリシステムの構成の一例を示すブロック図である。
【図８】図８は、変形例のメモリ制御部の構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１７】
次に、本発明における実施形態について図面を参照して説明する。
【００１８】
なお、各図面は、本発明の実施形態を説明するためのものである。ただし、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。また、以下の説明に用いる図面において、本発明の説明に関係しない部分の構成については、記載を省略し、図示しない場合もある。また、図面中の矢印の方向は、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
【００１９】
本特許における実施形態に係るメモリシステムは、メモリモジュールとして、同じ容量の揮発性メモリと不揮発性メモリとを搭載したメモリモジュールを用いる。メモリモジュールの一例は、ＮＶＤＩＭＭ−Ｎ規格に沿ったメモリモジュールである。揮発性メモリの一例は、ＤＲＡＭである。揮発性メモリの一例は、フラッシュメモリである。ただし、本発明の実施形態の構成は、上記に限定されない。
【００２０】
また、本発明のおける実施形態に係るメモリシステムは、複数のメモリモジュールを用いて、データのミラーリングを実現する。以下の説明は、一例として、二つのメモリモジュールを用いたミラーリングを用いて説明する。ただし、ミラーリングに用いられるメモリモジュールの数は、二つに限定されない。本発明のおける実施形態に係るメモリシステムは、三つ以上のメモリモジュールを用いて、ミラーリングを実現してもよい。
【００２１】
＜第１の実施形態＞
図１は、本発明における第１の実施形態に係るメモリシステム２００の構成の一例を示すブロック図である。
【００２２】
［構成の説明］
図１は、本発明における第１の実施形態に係るメモリシステム２００の構成の一例を示すブロック図である。メモリシステム２００は、メモリモジュール２０１と、メモリモジュール２０２と、メモリコントローラ２１１とを含む。
【００２３】
メモリシステム２００は、図示しない主電源と、予備電源とから電力の供給を受ける。主電源は、通常時に、メモリシステム２００が動作するための電力を供給する電源である。例えば、主電源は、一般的な装置用の電源である。予備電源は、主電源が停止した場合に、以下で説明するメモリシステム２００のバックアップ動作を実行するための電力を供給する電源である。予備電源は、例えば、スーパキャパシタ又は蓄電池などである。つまり、メモリシステム２００は、少なくとも二種類の電源から電力の供給を受ける。
【００２４】
メモリモジュール２０１は、揮発性メモリ２０３と、不揮発性メモリ２０４と、寿命情報２０９とを含む。揮発性メモリ２０３は、データ送受信経路２０７を介して、不揮発性メモリ２０４と接続されている。
【００２５】
メモリモジュール２０２は、揮発性メモリ２０５と、不揮発性メモリ２０６と、寿命情報２１０とを含む。揮発性メモリ２０５は、データ送受信経路２０８を介して、不揮発性メモリ２０６と接続されている。
【００２６】
揮発性メモリ２０３及び揮発性メモリ２０５は、メモリシステム２００に対する電力の供給が停止した場合に、データを保持しないメモリである。この場合の電力の供給の停止とは、上記に主電源及び予備電源の両方が停止した場合である。揮発性メモリ２０３及び揮発性メモリ２０５は、例えば、ＤＲＡＭである。
【００２７】
不揮発性メモリ２０４及び不揮発性メモリ２０６は、メモリシステム２００に対する電力の供給が停止した場合でも、データ保持するメモリである。不揮発性メモリ２０４及び不揮発性メモリ２０６は、例えば、フラッシュメモリである。
【００２８】
ただし、揮発性メモリ２０３、揮発性メモリ２０５、不揮発性メモリ２０４、及び、不揮発性メモリ２０６は、上記に限定されない。
【００２９】
寿命情報２０９は、不揮発性メモリ２０４の残寿命に関する情報である。寿命情報２０９は、例えば、不揮発性メモリ２０４におけるこれまでの書き込み回数である。さらに、寿命情報２０９は、不揮発性メモリ２０４の最大書き込み回数（寿命）に関する情報を保持してもよい。この場合、残寿命は、「寿命−これまでの書き込み回数」となる。
【００３０】
寿命情報２１０は、不揮発性メモリ２０６の残寿命に関する情報である。つまり、寿命情報２１０は、寿命情報２０９と同様の情報である。
【００３１】
メモリコントローラ２１１は、メモリモジュール２０１の揮発性メモリ２０３と、メモリモジュール２０２の揮発性メモリ２０５とを用いて、データのミラーリングを実現する。
【００３２】
具体的には、メモリコントローラ２１１は、メモリシステム２００を利用する図示しない情報処理装置において動作するアプリケーションから、データの書き込み及び読み出しの要求に受ける。
【００３３】
そして、例えば、データの書き込みの要求を受けた場合、メモリコントローラ２１１は、メモリモジュール２０１の揮発性メモリ２０３及びメモリモジュール２０２の揮発性メモリ２０５にデータを書き込む。この動作を基に、メモリコントローラ２１１は、データのミラーリングを実現する。
【００３４】
あるいは、データの読み出しの要求を受けた場合、メモリコントローラ２１１は、メモリモジュール２０１の揮発性メモリ２０３又はメモリモジュール２０２の揮発性メモリ２０５からデータを読み出す。
【００３５】
さらに、メモリコントローラ２１１は、メモリモジュール２０１又はメモリモジュール２０２のいずれか一方を現用系とし、他方を待機系として運用する。メモリコントローラ２１１は、寿命情報２０９及び寿命情報２１０を用いて、現用系と待機系とを決定する。この動作は、後ほど詳細に説明する。
【００３６】
そして、メモリコントローラ２１１は、メモリモジュール２０１及びメモリモジュール２０２の現用系及び待機系を示す情報（状態フラグ２１２及び状態フラグ２１３）を保持する。状態フラグ２１２は、メモリモジュール２０１の状態（現用系又は待機系）を示す情報を保持する。状態フラグ２１３は、メモリモジュール２０２の状態（現用系又は待機系）を示す情報を保持する。つまり、メモリコントローラ２１１は、状態フラグ２１２及び状態フラグ２１３を用いて、後ほど説明する動作を実行する。
【００３７】
なお、第１の実施形態において、メモリモジュール２０１及びメモリモジュール２０２のいずれが、現用系として動作を開始してもよい。ただし、以下の説明では、一例として、メモリモジュール２０１を現用系とし、メモリモジュール２０２を待機系として説明する。
【００３８】
主電源の供給が停止した場合（以下、「電源断」と呼ぶ）、メモリコントローラ２１１は、現用系のメモリモジュール２０１の揮発性メモリ２０３のデータを、データ送受信経路２０７を介して、不揮発性メモリ２０４に書き込む。つまり、メモリコントローラ２１１は、現用系のメモリモジュール２０１のデータをバックアップする。ただし、メモリコントローラ２１１が、データをバックアップするタイミングは、電源断に限定されない。メモリコントローラ２１１は、揮発性メモリ２０３のデータの維持が難しい場合に、データをバックアップすればよい。あるいは、メモリコントローラ２１１は、データ安全を考慮して、主電源に限らず、予備電源が停止した場合にも、バックアップを実行してもよい。つまり、メモリコントローラ２１１は、いずれの電源からの電力の供給が停止した場合でも、バックアップを実行してもよい。
【００３９】
これに対し、メモリコントローラ２１１は、待機系のメモリモジュール２０２の揮発性メモリ２０５のデータを、不揮発性メモリ２０６に書き込まない。つまり、メモリコントローラ２１１は、待機系のメモリモジュール２０２のデータをバックアップしない。
【００４０】
このように、メモリモジュール２０１は、電源断時における待機系の不揮発性メモリ２０６に対するデータの書き込みを削減し、不揮発性メモリ２０６の残寿命の低下量を削減する。
【００４１】
そして、電源が復旧した時（復電時）、メモリコントローラ２１１は、現用系のメモリモジュール２０１の不揮発性メモリ２０４に保存されているデータを、現用系の揮発性メモリ２０３と、待機系の揮発性メモリ２０５に書き戻す。このように、メモリシステム２００は、復電時に、データのミラーリングを回復する。
【００４２】
図１に示されているリストアパス２１４及びリストアパス２１５は、復電時に、不揮発性メモリから、その復発性メモリに対して他系の揮発性メモリにデータを書き戻す経路である。例えば、リストアパス２１４は、上記の、現用系の不揮発性メモリ２０４から、待機系の揮発性メモリ２０５にデータを書き戻す経路である。
【００４３】
［動作の説明］
次に、図面を参照して、メモリシステム２００の動作について説明する。
【００４４】
（動作の概要）
まず、メモリシステム２００の動作の概要を説明する。
【００４５】
メモリシステム２００は、電源断時、現用系となっているメモリモジュール２０１において、揮発性メモリ２０３のデータを不揮発性メモリ２０４にバックアップする。一方、メモリシステム２００は、待機系となっているメモリモジュール２０２において、揮発性メモリ２０５のデータを不揮発性メモリ２０６にバックアップしない。このような動作を基に、メモリシステム２００は、ミラーリングされたメモリモジュール２０１及びメモリモジュール２０２において、待機系の不揮発性メモリ２０６の残寿命の低下量を削減する。
【００４６】
図２は、第１の実施形態に係るメモリシステム２００の動作の概要を示すタイミングチャートである。
【００４７】
電源投入（電源ＯＮ）後の起動時に、メモリシステム２００のメモリコントローラ２１１は、現用系を設定する（Ｓ１０１）。今の場合、メモリコントローラ２１１は、メモリモジュール２０１を現用系に設定する。そのため、メモリコントローラ２１１は、状態フラグ２１２に、現用系を示す情報を設定する。
【００４８】
そして、メモリコントローラ２１１は、待機系に設定する（Ｓ１０２）。今の場合、メモリコントローラ２１１は、メモリモジュール２０２を待機系に設定する。そのため、メモリコントローラ２１１は、状態フラグ２１３に、待機系を示す情報を設定する。
【００４９】
電源断が発生した場合、メモリコントローラ２１１は、現用系であるメモリモジュール２０１の揮発性メモリ２０３のデータを、不揮発性メモリ２０４にバックアップする（Ｓ１０３）。
【００５０】
一方、メモリコントローラ２１１は、待機系であるメモリモジュール２０２の揮発性メモリ２０５のデータを不揮発性メモリ２０６にバックアップしない（Ｓ１０４）。そのため、図２は、波線を用いてＳ１０４における丸印を示している。
【００５１】
電源の復旧時（復電時）に、メモリコントローラ２１１は、データ送受信経路２０７を介して、現用系であるメモリモジュール２０１の不揮発性メモリ２０４にバックアップされているデータを揮発性メモリ２０３に書き戻す（Ｓ１０５）。
【００５２】
さらに、メモリコントローラ２１１は、リストアパス２１４を介して、不揮発性メモリ２０４にバックアップされているデータを待機系の揮発性メモリ２０５に書き戻す（Ｓ１０６）。
【００５３】
現用系の揮発性メモリ２０３におけるデータの書き戻しの完了し（Ｓ１０７）、待機系の揮発性メモリ２０５におけるデータの書き戻しが完了した場合（Ｓ１０８）、メモリコントローラ２１１は、通常のミラーリング動作を再開する。
【００５４】
（詳細な動作の説明）
次に、図２を用いて説明した動作の詳細について説明する。
【００５５】
まず、メモリコントローラ２１１が、現用系と待機系とを設定する動作について説明する。以下、この動作を「現用系設定動作」と呼ぶ。
【００５６】
図３は、メモリコントローラ２１１が、現用系と待機系とを決定する動作の一例を示すフローチャートである。図２を参照して説明したように、メモリシステム２００は、現用系設定動作を、電源ＯＮ時に実行する。さらに、後ほど説明するように、メモリシステム２００は、現用系設定動作を、電源断の動作、及び、復電時の動作においても、実行する。
【００５７】
まず、メモリコントローラ２１１は、メモリモジュール２０１、及び、メモリモジュール２０２に、障害の有無を問い合わせる（ステップＳ３０１）。メモリモジュール２０１、及び、メモリモジュール２０２は、障害の有無を応答する。
【００５８】
メモリコントローラ２１１は、問い合わせ結果を基に、障害が発生しているか否かを判定する（ステップＳ３０２）。
【００５９】
どちらにも障害が発生していない場合（ステップＳ３０２でＮｏ）、メモリコントローラ２１１は、メモリモジュール２０１及びメモリモジュール２０２から、寿命情報２０９及び寿命情報２１０を取得する（ステップＳ３０３）。そして、メモリコントローラ２１１は、メモリモジュール２０１の不揮発性メモリ２０４の残寿命及びメモリモジュール２０２の不揮発性メモリ２０６の残寿命を算出する。
【００６０】
そして、メモリコントローラ２１１は、残寿命が短い方のメモリモジュールを現用系のメモリモジュールに設定し、残寿命が長い方のメモリモジュールを待機系に設定する（ステップＳ３０４）。なお、残寿命が同じ場合、メモリコントローラ２１１は、所定の手法を用いて、現用系を決定する。例えば、メモリコントローラ２１１は、メモリモジュールの製造番号の小さい方を現用系に設定してもよい。
【００６１】
メモリモジュール２０１又はメモリモジュール２０２のいずれかで障害が発生している場合（ステップＳ３０２でＹｅｓ）、メモリコントローラ２１１は、正常なメモリモジュールを現用系とする。そして、メモリコントローラ２１１は、障害が発生しているメモリモジュールを待機系とする（ステップＳ３０５）。
【００６２】
なお、メモリモジュール２０１及びメモリモジュール２０２とも障害が発生している場合、メモリコントローラ２１１は、どちらも待機系に設定する。この場合、例えば、メモリシステム２００を含む情報処理システムのＢＭＣ（Basic Management Controller）等が、メモリシステム２００を閉塞する。
【００６３】
次に、電源断時の動作について説明する。
【００６４】
図４は、電源断時における動作の一例を示すフローチャートである。以下で説明するように、本実施形態のメモリシステム２００は、データのバックアップ中に発生する障害にも対応できる。
【００６５】
まず、メモリコントローラ２１１は、電源断を検出すると、以下の動作を開始する。ただし、メモリコントローラ２１１は、電源断に限らず、揮発性メモリ２０３及び／又は揮発性メモリ２０５においてデータを保持できなくなる障害の発生を検出した場合に、以下の動作を開始してもよい。
【００６６】
まず、メモリコントローラ２１１は、現用系のメモリモジュール２０１の揮発性メモリ２０３のデータを現用系の不揮発性メモリ２０４にバックアップする動作を開始する（ステップＳ４０１）。
【００６７】
そして、メモリコントローラ２１１は、揮発性メモリ２０３及び不揮発性メモリ２０４において、障害が発生しているか否か確認する（ステップＳ４０２）。
【００６８】
障害が発生している場合（ステップＳ４０２でＹｅｓ）、メモリコントローラ２１１は、バックアップ動作を中止し、現用系設定動作を実行する（ステップＳ４０４）。
【００６９】
メモリコントローラ２１１は、現用系設定動作の結果として、現用系と待機系とが変更となったか否かを判定する（ステップＳ４０５）。
【００７０】
変更の場合（ステップＳ４０５でＹｅｓ）、メモリコントローラ２１１は、変更後のメモリモジュール（今の場合、メモリモジュール２０２）においてバックアップを実行するため、ステップＳ４０１に戻る。つまり、メモリコントローラ２１１は、新しい現用系において、データをバックアップする。
【００７１】
変更がない場合（ステップＳ４０５でＮｏ）、メモリコントローラ２１１は、現用系のメモリモジュール２０１を待機系に変更し、処理を終了する。
【００７２】
障害が発生していない場合（ステップＳ４０２でＮｏ）、メモリコントローラ２１１は、バックアップが終了したか否かを判定する（ステップＳ４０３）。
【００７３】
終了ではない場合（ステップＳ４０３でＮｏ）、メモリコントローラ２１１は、ステップＳ４０２に戻る。
【００７４】
終了の場合（ステップＳ４０３でＹｅｓ）、メモリコントローラ２１１は、処理を終了し、復電まで停止状態となる。
【００７５】
次に、復電時の動作について説明する。
【００７６】
図５は、復電時における動作の一例を示すフローチャートである。メモリコントローラ２１１は、復電を検出すると、以下の動作を開始する。
【００７７】
まず、メモリコントローラ２１１は、現用系のメモリモジュール２０１の不揮発性メモリ２０４のデータを、現用系の揮発性メモリ２０３に書き戻す（ステップＳ５０１）。この場合、メモリコントローラ２１１は、データ送受信経路２０７を介して、データを移動する。
【００７８】
そして、メモリコントローラ２１１は、現用系のメモリモジュール２０１の不揮発性メモリ２０４のデータを、待機系の揮発性メモリ２０５に書き戻す（ステップＳ５０２）。この場合、メモリコントローラ２１１は、リストアパス２１４を介して、データを移動する。
【００７９】
その後、メモリコントローラ２１１は、現用系設定動作を実行する。ここで、メモリコントローラ２１１が、現用系設定動作を実行するのは、保守交換など、電源断の間にメモリモジュール２０１又はメモリモジュール２０２が交換となっている場合があるためである。
【００８０】
［効果の説明］
次に、第１の実施形態の効果について説明する。
【００８１】
第１の実施形態に係るメモリシステム２００は、ミラーリングされたメモリモジュール２０１及びメモリモジュール２０２において、不揮発性メモリ２０４及び不揮発性メモリ２０６の残寿命の低下量を削減するとの効果を奏することができる。
【００８２】
その理由は、次のとおりである。なお、以下の説明は、メモリモジュール２０１を現用系、メモリモジュール２０２を待機系とした場合の説明である。既に説明したとおり、メモリシステム２００において、現用系は、メモリモジュール２０１に限定されない。そのため、メモリシステム２００は、メモリモジュール２０１とメモリモジュール２０２とを、入れ替えても同様の効果を実現する。
【００８３】
メモリコントローラ２１１は、メモリモジュール２０１とメモリモジュール２０２とを、ミラーリングとして用いる。より具体的には、メモリコントローラ２１１は、揮発性メモリ２０３と、揮発性メモリ２０５とを用いて、データのミラーリングを実現する。メモリシステム２００は、この動作を基に、データの信頼性を確保する。
【００８４】
さらに、メモリコントローラ２１１は、電源断などにおいて、揮発性メモリのデータのバックアップを実行する場合、現用系の揮発性メモリ２０３のデータを現用系の不揮発性メモリ３０４にバックアップする。ただし、メモリコントローラ２１１は、待機系の揮発性メモリ２０５のデータを待機系の不揮発性メモリ２０６にバックアップしない。メモリシステム２００は、この動作を基に、待機系の不揮発性メモリ２０６に対する書き込み回数を削減する。つまり、メモリシステム２００は、不揮発性メモリ２０６の残寿命の低下を削減する。
【００８５】
さらに、メモリコントローラ２１１は、復電時に、現用系の不揮発性メモリ２０４のデータを、現用系の揮発性メモリ２０３に書き戻す。次に、メモリコントローラ２１１は、現用系の不揮発性メモリ２０４のデータを、待機系の揮発性メモリ２０５に書き戻す。この動作を基に、メモリシステム２００は、復電後の、データのミラーリングを実現する。
【００８６】
さらに、メモリシステム２００は、複数のメモリモジュール（メモリモジュール２０１及びメモリモジュール２０２）が、同時に寿命に到達することを避ける効果を奏することができる。
【００８７】
その理由は、次の通りである。
【００８８】
メモリコントローラ２１１は、電源ＯＮ時、バックアップ時、及び、復電時に、現用系設定動作を実行する。その結果、メモリコントローラ２１１は、残寿命が短いメモリモジュールを現用系に設定する。つまり、メモリシステム２００は、残寿命の短いメモリモジュールを優先的に使用する。あるいは、メモリシステム２００は、残寿命が長いメモリモジュールの残寿命を残すようにする。つまり、メモリシステム２００は、複数のメモリモジュールにおいて、残寿命が異なるように用いる。
【００８９】
そのため、メモリシステム２００は、例えば、メモリモジュール２０１が寿命に到達した時に、メモリモジュール２０２の残寿命として、ある程度の大きさの残寿命を残せる。つまり、メモリシステム２００は、一方のメモリモジュールが寿命を迎えた場合における交換の間において、他方のメモリモジュールが寿命を迎えることを避けることができる。つまり、メモリシステム２００は、保守交換期間を確保するとの効果を奏する。
【００９０】
＜第２の実施形態＞
上記の説明における現用系設定動作において、メモリコントローラ２１１は、残寿命の短いメモリモジュールを現用系とした。しかし、メモリコントローラ２１１の動作は、上記に限定されない。例えば、メモリコントローラ２１１は、寿命に対する所定の値（以下、閾値と呼ぶ）を、現用系と待機系との切替えの判定に用いてもよい。
【００９１】
図６は、第２の実施形態における動作の一例を示すタイムチャートである。図６は、閾値として、寿命の８０％（書き込み可能回数の８０％）を用いる。
【００９２】
まず、メモリコントローラ２１１は、メモリモジュール２０１を現用系に設定する（Ｓ６０１）。
【００９３】
メモリモジュール２０１の不揮発性メモリ２０４に対する書き込み回数が、最大書き込み回数（寿命）の８０％に到達した場合（Ｓ６０２）、メモリコントローラ２１１は、メモリモジュール２０２を現用系に設定する（Ｓ６０３）。つまり、メモリコントローラ２１１は、残寿命が所定の値（今の場合、２０％）以下となったメモリモジュールを待機系に設定する。
【００９４】
メモリモジュール２０２の不揮発性メモリ２０６に対する書き込み回数が、最大書き込み回数（寿命）の８０％に到達した場合（Ｓ６０４）、メモリコントローラ２１１は、メモリモジュール２０１を現用系に設定する（Ｓ６０５）。
【００９５】
メモリモジュール２０１の不揮発性メモリ２０４に対する書き込み回数が、最大書き込み回数（寿命）に到達した場合（Ｓ６０６）、メモリコントローラ２１１は、メモリモジュール２０２を現用系に設定する（Ｓ６０７）。
【００９６】
図６に示されているように、Ｓ６０１からＳ６０７の期間が、両系稼働期間である。また、Ｓ６０３以降の期間が、メモリモジュール２０１の保守交換期間である。メモリシステム２００の管理者は、Ｓ６０３以降において、メモリモジュール２０１を交換すればよい。
【００９７】
この実施形態の場合、メモリシステム２００は、ある程度の交換期間を確保し、かつ、両系のメモリモジュールの使用することができる。
【００９８】
なお、既に説明したとおり、メモリモジュールの数は、二つに限定されない。例えば、メモリシステム２００が、三つ以上のメモリモジュールを含む場合、Ｓ６０４において、メモリコントローラ２１１は、寿命が閾値に到達していない他のメモリモジュールを現用系としてもよい。
【００９９】
＜概要＞
次に図面を参照して、本発明における実施形態の概要を示す。
【０１００】
図７は、本発明の概要であるメモリシステム３００の構成の一例を示すブロック図である。メモリシステム３００は、本発明における実施形態に係る最小構成の一例である。
【０１０１】
メモリシステム３００は、複数のデータ記憶手段３０１と、メモリ制御手段３１１とを含む。
【０１０２】
データ記憶手段３０１は、揮発性メモリ３０３と、不揮発性メモリ３０４とを含む。
【０１０３】
メモリ制御手段３１１は、複数のデータ記憶手段３０１のいずれか一つを、第１のデータ記憶手段とする。以下の説明では、一例として、第１データ記憶手段が、図７に右側のデータ記憶手段３０１を第１データ記憶手段として説明する。
【０１０４】
メモリ制御手段３１１は、複数の揮発性メモリ（例えば、図７に左側の揮発性メモリ３０３と、右側の揮発性メモリ３０３）に同じデータを書き込む。
【０１０５】
さらに、揮発性メモリ３０３のデータを維持できない状態が発生した場合に、メモリ制御手段３１１は、次の動作を実行する。すなわち、メモリ制御手段３１１は、第１データ記憶手段以外の少なくとも一つのデータ記憶手段３０１に含まれる第１揮発性メモリのデータを、そのデータ記憶手段３０１の不揮発性メモリ３０４に書き込む。図７の場合、第１データ記憶手段以外のデータ記憶手段３０１は、図７の左側のデータ記憶手段３０１である。
【０１０６】
複数のデータ記憶手段３０１の一例が、メモリモジュール２０１及びメモリモジュール２０２である。第１データ記憶手段の一例が、待機系のメモリモジュール２０２である。第１データ記憶手段以外のデータ記憶手段３０１の一例は、現用系のメモリモジュール２０１である。揮発性メモリ３０３の一例が、揮発性メモリ２０３及び揮発性メモリ２０５である。不揮発性メモリ３０４の一例が、不揮発性メモリ２０４及び不揮発性メモリ２０６である。メモリ制御手段３１１の一例が、メモリコントローラ２１１である。揮発性メモリのデータを維持できない状態の一例が、電源断である。
【０１０７】
このように構成されたメモリシステム３００は、第１の実施形態に係るメモリシステム２００と同様の効果を奏する。
【０１０８】
その理由は、メモリ制御手段３１１が、メモリコントローラ２１１と同様に、データ記憶手段３０１の揮発性メモリ３０３及び不揮発性メモリ３０４のデータを制御するからである。
【０１０９】
＜変形例＞
以上の説明したメモリコントローラ２１１及びメモリ制御手段３１１は、次のように構成される。
【０１１０】
例えば、メモリコントローラ２１１及びメモリ制御手段３１１は、ハードウェア回路で構成されてもよい。また、メモリコントローラ２１１及びメモリ制御手段３１１は、ネットワークを介して接続した複数の装置を用いて、構成されてもよい。また、メモリコントローラ２１１及びメモリ制御手段３１１は、１つのハードウェアで構成されてもよい。
【０１１１】
また、メモリコントローラ２１１及びメモリ制御手段３１１は、ＣＰＵ（Central Processing Unit）と、ＲＯＭ（Read Only Memory）と、ＲＡＭ（Random Access Memory）とを含むコンピュータ装置として実現されてもよい。
メモリコントローラ２１１及びメモリ制御手段３１１は、上記構成に加え、さらに、メモリモジュール２０１などと接続する入出力接続回路（ＩＯＣ：Input / Output Circuit）を含むコンピュータ装置として実現されてもよい。
【０１１２】
図８は、本変形例に係るメモリ制御部６００の構成の一例を示すブロック図である。
【０１１３】
メモリ制御部６００は、ＣＰＵ６１０と、ＲＯＭ６２０と、ＲＡＭ６３０と、ＩＯＣ６５０とを含み、コンピュータ装置を構成している。
【０１１４】
ＣＰＵ６１０は、ＲＯＭ６２０からプログラムを読み込む。そして、ＣＰＵ６１０は、読み込んだプログラムに基づいて、ＲＡＭ６３０と、ＩＯＣ６５０とを制御する。そして、ＣＰＵ６１０を含むコンピュータは、これらの構成を制御し、図１に示されているメモリコントローラ２１１及び図７に示されているメモリ制御手段３１１としての各機能を実現する。
【０１１５】
ＣＰＵ６１０は、各機能を実現する際に、ＲＡＭ６３０を、プログラムの一時記憶媒体として使用してもよい。
【０１１６】
また、ＣＰＵ６１０は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体７００が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでもよい。あるいは、ＣＰＵ６１０は、図示しない外部の装置からプログラムを受け取り、ＲＡＭ６３０に保存して、保存したプログラムを基に動作してもよい。
【０１１７】
ＲＯＭ６２０は、ＣＰＵ６１０が実行するプログラム及び固定的なデータを記憶する。ＲＯＭ６２０は、例えば、Ｐ−ＲＯＭ（Programmable-ROM）又はフラッシュＲＯＭである。
【０１１８】
ＲＡＭ６３０は、ＣＰＵ６１０が実行するプログラム及びデータを一時的に記憶する。ＲＡＭ６３０は、例えば、ＤＲＡＭである。
【０１１９】
ここで、ＲＯＭ６２０は、不揮発性（non-transitory）の記憶媒体である。一方、ＲＡＭ６３０は、揮発性（transitory）の記憶媒体である。そして、ＣＰＵ６１０は、ＲＯＭ６２０、又は、ＲＡＭ６３０に記憶されているプログラムを基に動作可能である。つまり、ＣＰＵ６１０は、不揮発性記憶媒体又は揮発性記憶媒体を用いて動作可能である。
【０１２０】
ＩＯＣ６５０は、ＣＰＵ６１０と、メモリモジュールなどとのデータを仲介する。ＩＯＣ６５０は、例えば、ＤＩＭＭ（Dual Inline Memory Module）のスロット（ソケット）である。
【０１２１】
このように構成されたメモリ制御部６００は、メモリコントローラ２１１及びメモリ制御手段３１１と同様の効果を得ることができる。
【０１２２】
その理由は、メモリ制御部６００のＣＰＵ６１０が、プログラムに基づいてメモリコントローラ２１１及びメモリ制御手段３１１と同様の機能を実現できるためである。
【０１２３】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成及び詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【０１２４】
本発明は、金融機関又は社会インフラを支える基幹システムなど、２４時間３６５日稼動が要求されるシステムにおいて、利用可能である。
【符号の説明】
【０１２５】
２００    メモリシステム
２０１    メモリモジュール
２０２    メモリモジュール
２０３    揮発性メモリ
２０４    不揮発性メモリ
２０５    揮発性メモリ
２０６    不揮発性メモリ
２０７    データ送受信経路
２０８    データ送受信経路
２０９    寿命情報
２１０    寿命情報
２１１    メモリコントローラ
２１２    状態フラグ
２１３    状態フラグ
２１４    リストアパス
２１５    リストアパス
３００    メモリシステム
３０１    データ記憶手段
３０３    揮発性メモリ
３０４    不揮発性メモリ
３１１    メモリ制御手段
６００    メモリ制御部
６１０    ＣＰＵ
６２０    ＲＯＭ
６３０    ＲＡＭ
６５０    ＩＯＣ
７００    記憶媒体
【図１】
2017167801.tif 000003
【図２】
2017167801.tif 000004
【図３】
2017167801.tif 000005
【図４】
2017167801.tif 000006
【図５】
2017167801.tif 000007
【図６】
2017167801.tif 000008
【図７】
2017167801.tif 000009
【図８】
2017167801.tif 000010