(57)【要約】メモリ制御装置は、少なくとも第１の領域と第２の領域とを有する不揮発性メモリに対して、データの書き込みおよび読み出しの制御を行う制御部を有し、制御部は、第１の領域に複数のデータの書き込みを行う場合に、一旦、複数のデータを第２の領域に書き込み、第２の領域に書き込まれた複数のデータのそれぞれを第１の領域にコピーする場合に、第１の領域への複数のデータのコピーが完了したか否かを示すフラグを設定するように構成される。図３
2015170454.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも第１の領域と第２の領域とを有する不揮発性メモリに対して、データの書き込みおよび読み出しの制御を行う制御部を有し、
前記制御部は、
前記第１の領域に複数のデータの書き込みを行う場合に、一旦、前記複数のデータを前記第２の領域に書き込み、
前記第２の領域に書き込まれた前記複数のデータのそれぞれを前記第１の領域にコピーする場合に、前記第１の領域への前記複数のデータのコピーが完了したか否かを示すフラグを設定するように構成された
メモリ制御装置。
【請求項２】
前記制御部は、前記コピーが完了した場合に前記フラグを解除するように構成された
請求項１に記載のメモリ制御装置。
【請求項３】
前記制御部は、前記データを、前記第１の領域へのコピーが完了したか否かを示すフラグと、コピー先である前記第１の領域のアドレス情報とを対応付けて、前記第２の領域に書き込むように構成された
請求項１に記載のメモリ制御装置。
【請求項４】
前記制御部は、前記データの前記第１の領域へのコピーが完了した場合に、前記第２の領域における前記データに対応する前記フラグを解除するように構成された
請求項３に記載のメモリ制御装置。
【請求項５】
前記複数のデータのそれぞれは、複数の書き込み処理により意味をなす処理における、個々の書き込み処理に対応したデータである
請求項１に記載のメモリ制御装置。
【請求項６】
前記不揮発性メモリは、前記制御部に対して接続され、主記憶装置として使用されるメモリである
請求項１に記載のメモリ制御装置。
【請求項７】
前記不揮発性メモリの第３の領域に前記フラグが記憶される
請求項１に記載のメモリ制御装置。
【請求項８】
少なくとも第１の領域と第２の領域とを有する不揮発性メモリに対して、データの書き込みおよび読み出しの制御を行う制御部を有し、
前記制御部は、電源投入時に第１のフラグが設定されている場合には、前記第２の領域に記憶されているデータのうち、第２のフラグが設定されているデータを前記第１の領域にコピーするように構成された
メモリ制御装置。
【請求項９】
前記第１のフラグは、前記第２のフラグが設定されているデータの全てが、前記第２の領域から前記第１の領域にコピーされたか否かを示す情報である
請求項８に記載のメモリ制御装置。
【請求項１０】
前記第２の領域には、前記第２のフラグとコピー先である前記第１の領域のアドレス情報とが前記データに対応付けて記憶されており、
前記制御部は、前記アドレス情報に基づいて、前記データを前記第２の領域から前記第１の領域にコピーするように構成された
請求項８に記載のメモリ制御装置。
【請求項１１】
前記制御部は、電源投入時に第１のフラグが設定されていない場合には、前記第２のフラグを解除するように構成された
請求項８に記載のメモリ制御装置。
【請求項１２】
少なくとも第１の領域と第２の領域とを有する不揮発性メモリと、
前記不揮発性メモリに対して、データの書き込みおよび読み出しの制御を行う制御部を有し、
前記制御部は、
前記第１の領域に複数のデータの書き込みを行う場合に、一旦、前記複数のデータを前記第２の領域に書き込み、
前記第２の領域に書き込まれた前記複数のデータのそれぞれを前記第１の領域にコピーする場合に、前記第１の領域への前記複数のデータのコピーが完了したか否かを示すフラグを設定するように構成された
メモリ装置。
【請求項１３】
少なくとも第１の領域と第２の領域とを有する不揮発性メモリと、
前記不揮発性メモリに対して、データの書き込みおよび読み出しの制御を行う制御部を有し、
前記制御部は、電源投入時に第１のフラグが設定されている場合には、前記第２の領域に記憶されているデータのうち、第２のフラグが設定されているデータを前記第１の領域にコピーするように構成された
メモリ装置。
【請求項１４】
少なくとも第１の領域と第２の領域とを有する不揮発性メモリに対して、データの書き込みおよび読み出しの制御を実行する制御部が、
前記第１の領域に複数のデータの書き込みを行う場合に、一旦、前記複数のデータを前記第２の領域に書き込み、
前記第２の領域に書き込まれた前記複数のデータのそれぞれを前記第１の領域にコピーする場合に、前記第１の領域への前記複数のデータのコピーが完了したか否かを示すフラグを設定する
メモリ制御方法。
【請求項１５】
少なくとも第１の領域と第２の領域とを有する不揮発性メモリに対して、データの書き込みおよび読み出しの制御を実行する制御部が、
電源投入時に第１のフラグが設定されている場合には、前記第２の領域に記憶されているデータのうち、第２のフラグが設定されているデータを前記第１の領域にコピーする
メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、メモリ制御装置、メモリ装置およびメモリ制御方法に関する。
【背景技術】
【０００２】
ランダムアクセスおよびデータの上書き処理が可能な不揮発性メモリ（ＮＶＲＡＭ(Non Volatile Radom Access Memory)の研究が盛んに行われている。不揮発性メモリとして、例えば、ＳＴＴ(Spin Transfer Torque)−ＲＡＭを含むＭＲＡＭ(Magnetic Radom Access Memory)やＰＣＭ（Phase Change Memory）、ＲｅＲＡＭ(Resistive Radom Access Memory)が提案されている。これらのうちの一部が、下記特許文献１に記載されている。ＭＲＡＭ、ＰＣＭ、ＲｅＲＡＭなどは高い集積度を実現できるとともに、書き換え速度が高速であることから、ＳＲＡＭ(Static Random Access Memory)やＤＲＡＭ(Dynamic Random Access Memory)に置き換わる主記憶装置として使用されることが期待されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許４９５６９２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、不揮発性メモリの使用時に、停電や誤操作によりユーザが意図しない電源断が発生する場合がある。意図しない電源断が発生した場合でも、電源断の前後において不揮発性メモリにおける情報（データ）の一貫性が保持されることが望まれる。【０００５】
本開示の目的の一つは、例えば意図しない電源断が発生した場合でも、電源断の前後において不揮発性メモリにおけるデータの一貫性を保持できるメモリ制御装置、メモリ装置およびメモリ制御方法を提供することにある。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、本開示は、例えば、
少なくとも第１の領域と第２の領域とを有する不揮発性メモリに対して、データの書き込みおよび読み出しの制御を行う制御部を有し、
制御部は、
第１の領域に複数のデータの書き込みを行う場合に、一旦、複数のデータを第２の領域に書き込み、
第２の領域に書き込まれた複数のデータのそれぞれを第１の領域にコピーする場合に、第１の領域への複数のデータのコピーが完了したか否かを示すフラグを設定するように構成された
メモリ制御装置である。【０００７】
本開示は、例えば、
少なくとも第１の領域と第２の領域とを有する不揮発性メモリに対して、データの書き込みおよび読み出しの制御を行う制御部を有し、
制御部は、電源投入時に第１のフラグが設定されている場合には、第２の領域に記憶されているデータのうち、第２のフラグが設定されているデータを第１の領域にコピーするように構成された
メモリ制御装置である。【０００８】
本開示は、例えば、
少なくとも第１の領域と第２の領域とを有する不揮発性メモリと、
不揮発性メモリに対して、データの書き込みおよび読み出しの制御を行う制御部を有し、
制御部は、
第１の領域に複数のデータの書き込みを行う場合に、一旦、複数のデータを第２の領域に書き込み、
第２の領域に書き込まれた複数のデータのそれぞれを第１の領域にコピーする場合に、第１の領域への複数のデータのコピーが完了したか否かを示すフラグを設定するように構成された
メモリ装置である。【０００９】
本開示は、例えば、
少なくとも第１の領域と第２の領域とを有する不揮発性メモリと、
不揮発性メモリに対して、データの書き込みおよび読み出しの制御を行う制御部を有し、
制御部は、電源投入時に第１のフラグが設定されている場合には、第２の領域に記憶されているデータのうち、第２のフラグが設定されているデータを第１の領域にコピーするように構成された
メモリ装置である。【００１０】
本開示は、例えば、
少なくとも第１の領域と第２の領域とを有する不揮発性メモリに対して、データの書き込みおよび読み出しの制御を実行する制御部が、
第１の領域に複数のデータの書き込みを行う場合に、一旦、複数のデータを第２の領域に書き込み、
第２の領域に書き込まれた複数のデータのそれぞれを第１の領域にコピーする場合に、第１の領域への複数のデータのコピーが完了したか否かを示すフラグを設定する
メモリ制御方法である。【００１１】
本開示は、例えば、
少なくとも第１の領域と第２の領域とを有する不揮発性メモリに対して、データの書き込みおよび読み出しの制御を実行する制御部が、
電源投入時に第１のフラグが設定されている場合には、第２の領域に記憶されているデータのうち、第２のフラグが設定されているデータを第１の領域にコピーする
メモリ制御方法である。
【発明の効果】
【００１２】
少なくとも一つの実施形態によれば、例えば意図しない電源断が発生した場合でも、電源断の前後において不揮発性メモリにおけるデータの一貫性を保持できる。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれの効果であってもよい。また、例示された効果により本開示の内容が限定して解釈されるものではない。
【図面の簡単な説明】
【００１３】
【図１】図１Ａ、図１Ｂおよび図１Ｃは、データの一貫性が維持されない例を説明するための図である。
【図２】図２は、本開示の一実施形態におけるメモリ装置の構成の一例を説明するためのブロック図である。
【図３】図３は、本開示の一実施形態における主記憶装置（不揮発性メモリ）の論理的な構成の一例を説明するための図である。
【図４】図４は、本開示の一実施形態における、処理の流れの一例を説明するためのシーケンスチャートである。
【図５】図５は、コミット処理が行われる前における、主記憶装置（不揮発性メモリ）の論理的な構成の一例を説明するための図である。
【図６】図６は、コミット処理中における、主記憶装置（不揮発性メモリ）の論理的な構成の一例を説明するための図である。
【図７】図７は、本開示の一実施形態における、電源再投入後の処理の流れの一例を説明するためのフローチャートである。
【図８】図８は、変形例におけるメモリ装置の構成の一例を説明するためのブロック図である。
【図９】図９は、変形例における、処理の流れの一例を説明するためのシーケンスチャートである。
【発明を実施するための形態】
【００１４】
以下、本開示の一実施形態について図面を参照しながら説明する。なお、説明は以下の順序で行う。
＜１．一実施形態＞
＜２．変形例＞
以下に説明する実施形態等は本開示の好適な具体例であり、本開示の内容がこれらの実施形態等に限定されるものではない。
【００１５】
＜１．一実施形態＞
情報処理システムにおいては、ＣＰＵ(Central Processing Unit)（プロセッサ等と称される場合もある）の主記憶装置（ワークメモリ）としてＤＲＡＭ等が使用される。このＤＲＡＭは、通常、揮発性メモリであり、電源の供給が停止するとその記憶内容は消失する。
【００１６】
一方、近年、主記憶装置として不揮発性メモリが使用されるようになっている。この不揮発性メモリは、例えば、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリとに大別することができる。フラッシュメモリとしては、例えば、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、上述したＭＲＡＭ、ＰＣＭ、ＲｅＲＡＭなどが挙げられる。
【００１７】
本開示における一実施形態では、主記憶装置として不揮発性メモリが使用される。本開示の一実施形態では、例示した種類の不揮発性メモリはもとより、他の不揮発性メモリを適用することができる。不揮発性メモリを主記憶装置として使用すると、電源断前の情報が不揮発性メモリ上に残るため、電源再投入後に情報の再構築や再展開をする必要がない。このため、起動処理の高速化や実行途中のアプリケーションを電源断前の状態から再開することが可能となる。
【００１８】
しかしながら、不揮発性メモリに対する処理、例えば、書き換え処理中に意図しない電源断が発生すると、不揮発性メモリのメモリセルの状態が不確定となりデータが破壊される。意図しない電源断が発生した場合でも、不揮発性メモリに対する書き換え処理を正常に終了できるだけの電力を供給できるように、システム内にキャパシタや電池を内蔵することによりデータの破壊を防止できる。しかしながら、特に小型のメモリ装置ではキャパシタや電池を設けることは物理的な制約から困難である。
【００１９】
一方、ＣＰＵからの一回の書き込み要求で書き換えられるメモリのビット数は、例えばメモリの仕様で限られている。このため、一回の書き換え要求で書き換えられるデータを、意図しない電源断から保護できたとしても、複数回の書き換え要求によって意味をなす処理の途中で電源断が発生すると、不揮発性メモリのデータ構造に矛盾が生じる。このため、電源再投入後にシステムが正しく動作しない等の不都合が生じるおそれがある。
【００２０】
この問題点について図１を参照して具体的に説明する。図１Ａ、図１Ｂおよび図１Ｃは、データ構造の一つであるリスト構造（単方向リスト）を模式的に示したものである。リスト構造において、データ部とポインタ部とを含む情報部分はノードと呼ばれる。データ部は実際のデータであり、ポインタ部は次に続くデータを指し示している。
【００２１】
図１Ａに示すように、ある初期状態では、ノードＮとノードＭとが関連付けられている（ステップＳＴ０）。ここで、ノードＮとノードＭとの間に、ノードＬを追加する処理を考える。この場合には、図１Ｂに示すように、ノードＮのポインタがノードＬの番地を示すように書き換え処理が行われる（ステップＳＴ１）。次に、図１Ｃに示すように、ノードＬのポインタがノードＭの番地を示すように書き換え処理が行われる（ステップＳＴ２）。このように、例えば、単方向リストのデータ構造においてノードを追加するには２回の書き換え処理が行われる。この２回の書き換え処理は、各処理が正常に終了することにより意味をなす、プログラム上の一の処理に対応する。
【００２２】
複数回の処理の途中、具体的には、ステップＳＴ１処理とステップＳＴ２の処理との間に意図しない電源断が発生したとする。この場合には、電源再導入時には、図１Ｂに示す状態となる。すなわち、ノードＬとノードＭとが関連づけられておらず、リスト構造のデータ構造であるリンク構造が不正な状態となってしまう。
【００２３】
このように、複数回の処理（例えば、書き込み処理）の途中で意図しない電源断が発生すると、データの一貫性が保持できなくおそれがある。以下、このような点に鑑みてなされた本開示の一実施形態について説明する。なお、図１では理解を容易とするために単方向リストを例にして説明したが、本開示の一実施形態に適用可能なデータ構造はこれに限定されるものではない。
【００２４】
なお、以下の説明において、例えば、複数回のメモリの書き換えによって意味をなす一連の書き換えのことをトランザクションと称する。また、トランザクション中の書き換えをメモリ上に反映させることをコミットと称する。図１に示した例では、ステップＳＴ０の状態からステップＳＴ１およびステップＳＴ２の処理を経てなされる一連の書き換え処理がトランザクション処理に対応する。ステップＳＴ１およびステップＳＴ２の処理結果がメモリ上に反映され確定するとコミットがなされる。意図しない電源断は、トランザクション処理中もしくはコミット中に発生する可能性がある。
【００２５】
「メモリ装置の構成の一例」
図２は、本開示の一実施形態におけるメモリ装置を含む情報処理システム１の一例を示す。情報処理システム１は、例えば、ホストデバイス１０とメモリ装置１００とを有する。ホストデバイス１０は、パーソナルコンピュータ、撮像装置、携帯電話やスマートフォン等の携帯型の電子機器などである。メモリ装置１００は、例えば、携帯型のいわゆる、メモリカードである。メモリ装置１００は、例えば、ホストデバイス１０に対して着脱自在とされる。
【００２６】
ホストデバイス１０とメモリ装置１００との間で、データやコマンドのやりとりがなされる。また、メモリ装置１００がホストデバイス１０に接続された状態で、ホストデバイス１０からメモリ装置１００に対して電力が供給されるように構成されている。メモリ装置１００は、ホストデバイス１０から供給される電力を電源として動作する。このため、メモリ装置１００がホストデバイス１０から取り外されたり、ホストデバイス１０からの電力の供給が停止した場合には、メモリ装置１００の動作が停止する。なお、この例ではホストデバイス１０とメモリ装置１００とは機械的に着脱自在とされるがこれに限定されるものではない。ホストデバイス１０とメモリ装置１００とが所定の無線方式により接続され（ペアリング）、無線によりデータや電力等のやりとりがなされるようにしてもよい。また、メモリ装置１００がキャパシタや電池等の蓄電素子を有していてもよい。
【００２７】
メモリ装置１００は、例えば、メモリコントローラ１０１と、主記憶装置１０２と、外部インターフェース（Ｉ／Ｏ(Input Output)）１０３と、バッファＲＡＭ１０４と、参照符号１０５により示される不揮発性メモリとを備えている。メモリコントローラ１０１は、主記憶装置１０２およびバッファＲＡＭ１０４のそれぞれに接続されている。バッファＲＡＭ１０４は、外部インターフェース１０３および不揮発性メモリのそれぞれに接続されている。
【００２８】
メモリコントローラ１０１は、メモリ装置１００の各部に対する制御を行う。具体的には、メモリコントローラ１０１は、外部インターフェース１０３が外部のホストデバイス１０から受信したコマンドを解釈したり、コマンドに応じて不揮発性メモリに対するデータの書込／読出制御を実行したり、不揮発性メモリの記録データを管理するための各種の管理情報の生成等をする。メモリコントローラ１０１は、さらに不揮発性メモリへのデータ書込時のＥＣＣ(Error Correction Code)データ生成・付加、読出時のＥＣＣエラー訂正処理などを行う。また、メモリコントローラ１０１は、各種プログラムを実行することにより情報処理を実行する。メモリコントローラ１０１は、主記憶装置１０２における記憶領域をワーク領域として、データのロードまたはストアを繰り返すことによりプログラムを実行する。
【００２９】
主記憶装置１０２は、メモリコントローラ１０１の主記憶装置として機能する。主記憶装置１０２は、不揮発性のメモリ（ＮＶＲＡＭ）であり、上述した種々の不揮発性メモリを適用することができる。主記憶装置１０２は、データ等が記憶されるエリアであるＮＶＲＡＭ１０２ａと、ＮＶＲＡＭ１０２ａにアクセス可能であるとともにメモリコントローラ１０１と通信可能なＮＶＲＡＭコントローラ１０２ｂとを有する。
【００３０】
外部インターフェース１０３は、外部のホストデバイス１０とメモリコントローラ１０１との間で各種データの送受信を可能とするために設けられている。外部インターフェース１０３を介して、ホストデバイス１０から入力されるコマンドの受信や、ホストデバイス１０とのデータの送受信等が行われる。
【００３１】
バッファＲＡＭ１０４は、例えば、揮発性のメモリであるＳＲＡＭにより構成され、不揮発性メモリに対する読出／書込データを一時的に蓄積するものである。なお、図２では、メモリ装置１００がバッファＲＡＭ１０４を内蔵する構成が示されているが、メモリ装置１００に外付けされるメモリデバイスがバッファメモリとして使用されてもよい。
【００３２】
不揮発性メモリは、例えば、ＮＡＮＤ型のフラッシュメモリにより構成される。ＮＡＮＤ型フラッシュメモリは、複数の電気的に書き換え可能なメモリセルがマトリクス状に配置されたメモリセルアレイを有している。なお、図２では、不揮発性メモリが３つ備えられている例を示しているが、これに限定されるものではない。以下の説明では、個々の不揮発性メモリをフラッシュメモリ１０５ａ、フラッシュメモリ１０５ｂ、フラッシュメモリ１０５ｃと表記し、個々のフラッシュメモリを区別する必要がない場合には、フラッシュメモリ１０５と表記する。
【００３３】
なお、図示は省略しているが、フラッシュメモリ１０５に対しては、メモリコントローラ１０１との間で信号線がそれぞれ接続されている。各信号線は、読出又は書込の対象とするフラッシュメモリ１０５に対してデータの読出又は書込のタイミングを指示するために用いるイネーブル（Enable）信号を供給するための信号線となる。
【００３４】
また、フラッシュメモリ１０５に対しては、共通のデータ線が接続されている。このデータ線は、バッファＲＡＭ１０４に対しても接続されており、これによりバッファＲＡＭ１０４からフラッシュメモリ１０５への書込データの供給およびフラッシュメモリ１０５からバッファＲＡＭ１０４への読出データの供給が可能とされている。
【００３５】
なお、図２に示す情報処理システム１やメモリ装置１００の構成は例示であり、これに限定されるものではない。例えば、メモリ装置１００はメモリカードに限定されることはなく、ＣＰＵに接続される主記憶装置を有する機器に対して、本開示を適用することができる。また、上述したメモリ装置１００における配線は一実施形態に係るもののみを抽出して説明している。実際には、例えば、読出／書込のアドレス指定を実現するための信号線等の他の配線も接続されるものであるがこれらの図示は省略している。
【００３６】
情報処理システム１においてなされる、書き込み動作および読み出し動作の一例について概略的に説明する。ホストデバイス１０から書込指示されたデータは、外部インターフェース１０３を介してバッファＲＡＭ１０４に一時的に蓄積される。バッファＲＡＭ１０４に蓄積されたデータは、メモリコントローラ１０１の制御により、データ線を介して所定のフラッシュメモリ１０５のいずれかに書き込まれる。
【００３７】
ホストデバイス１０からフラッシュメモリ１０５のいずれかに書き込まれたデータの読出指示があった場合、メモリコントローラ１０１の制御によりフラッシュメモリ１０５から所定のデータが読み出される。読み出されたデータがデータ線を介してバッファＲＡＭ１０４に一時的に蓄積された後、所定のタイミングでもって外部インターフェース１０３を介してホストデバイス１０に送出される。
【００３８】
「ＮＶＲＡＭの論理的な構成の一例」
図３は、ＮＶＲＡＭ１０２ａの論理的な構成の一例を示す。ＮＶＲＡＭ１０２ａのメモリ空間には、例えば、コミットフラグ領域ＣＦと、テンポラリエリア（Temporary Area:一時記憶領域）ＴＡと、メインエリア（Main Area:主記憶領域）ＭＡとが設定される。コミットフラグ領域ＣＦとして、テンポラリエリアＴＡの一部の領域が割り当てられてもよく、メインエリアＭＡの一部の領域が割り当てられてもよい。第１の領域の一例としてメインエリアＭＡが対応し、第２の領域の一例としてテンポラリエリアＴＡが対応する。
【００３９】
コミットフラグ領域ＣＦには、少なくとも１ビットで表されるコミットフラッグ(commit flag)が記憶される。テンポラリエリアＴＡは、例えば、複数のエントリ(entries)を保存できるテーブル構造をなしている。各エントリには、エントリが有効であるか否かを示す有効フラグ(Valid Flag)、メインエリアＭＡの書き込み先を示すアドレス(address)およびデータ(data)本体が対応付けられて格納される。有効フラグは、例えば、１ビットで表される。
【００４０】
「メモリ装置における処理の一例」
メモリ装置における処理の一例について、図４に示すシーケンスチャートを参照して説明する。図４により示されるシーケンスチャートは、メモリコントローラ１０１とＮＶＲＡＭコントローラ１０２ｂとの間でなされるシーケンスを示している。なお、以下に説明する例は、メモリコントローラ１０１が直接、メインエリアＭＡにのみアクセス可能な例である。すなわち、メモリコントローラ１０１が参照可能なアドレスはメインエリアＭＡにのみ付加されている。テンポラリエリアＴＡおよびコミットフラグ領域ＣＦはＮＶＲＡＭ１０２ａ内に隠蔽されており、メモリコントローラ１０１が直接、それらの領域を操作できない例である。
【００４１】
通常の書き換え処理では、メモリコントローラ１０１からＮＶＲＡＭコントローラ１０２ｂに対して書き換え要求（Store Data）コマンドが送信される（ステップＳＴ１０１）。ＮＶＲＡＭコントローラ１０２ｂは、書き換え要求コマンドに応じて、指定されたアドレスに記憶されているデータを指示されたデータに書き換える（ステップＳＴ１０２）。
【００４２】
トランザクション処理を行う場合には、メモリコントローラ１０１はＮＶＲＡＭコントローラ１０２ｂに対してトランザクション開始要求(Start Transaction)コマンドを送信する。トランザクション開始要求コマンドがＮＶＲＡＭコントローラ１０２ｂにより受信される（ステップＳＴ１０３）。
【００４３】
ＮＶＲＡＭコントローラ１０２ｂに対して、書き換え要求コマンドが送信される（ステップＳＴ１０４）。トランザクション開始要求コマンドを受信したＮＶＲＡＭコントローラ１０２ｂは、以降の書き換え要求コマンドに対応する処理として、データをアドレス情報ととともに一旦、テンポラリエリアＴＡのテーブル内のエントリに記憶し、有効フラグを設定する（ステップＳＴ１０５）。有効フラグとして、例えば、「１」が設定される。なお、以下の説明における「１」および「０」は、論理的な値を示している。
【００４４】
なお、メモリコントローラ１０１から読み出し要求（Load Data）コマンドがなされた場合には、読み出し要求コマンドに対応するデータがテンポラリエリアＴＡに格納されている場合には、テンポラリエリアＴＡのデータが読み出される（ステップＳＴ１０６、ステップＳＴ１０７）。なお、読み出すべきデータがメインエリアＭＡに格納されている場合は、ＮＶＲＡＭコントローラ１０２ｂは、メインエリアＭＡから該当するデータを読み出す。
【００４５】
再度、ＮＶＲＡＭコントローラ１０２ｂに対して、書き換え要求コマンドがなされる（ステップＳＴ１０８）。ＮＶＲＡＭコントローラ１０２ｂは、データをアドレス情報とともにテンポラリエリアＴＡのテーブル内のエントリに追加し、有効フラグを設定する（ステップＳＴ１０９）。有効フラグとして、例えば、「１」が設定される。
【００４６】
一連の書き換え処理であるトランザクション処理が終了すると、メモリコントローラ１０１はＮＶＲＡＭコントローラ１０２ｂに対してコミット要求（commit）コマンドを送信する（ステップＳＴ１１０）。コミット要求コマンドを受信したＮＶＲＡＭコントローラ１０２ｂは、コミットフラグを設定する。コミットフラグとして、例えば、「１」が設定される。
【００４７】
そして、ＮＶＲＡＭコントローラ１０２ｂは、テンポラリエリアＴＡのテーブルのデータを、アドレス情報にしたがってメインエリアＭＡにコピーする。例えば、テンポラリエリアＴＡに記憶されている個々のエントリ単位または複数のエントリ単位でもって、各エントリのデータがメインエリアＭＡにコピーされる。ＮＶＲＡＭコントローラ１０２ｂは、コピーしたエントリの有効フラグを解除する。例えば、コピーしたエントリの有効フラグが「１」から「０」に書き換えられる。
【００４８】
全てのエントリのデータがメインエリアＭＡにコピーされると、ＮＶＲＡＭコントローラ１０２ｂは、コミットフラグを解除する（ステップＳＴ１１１）。例えば、コミットフラグが「１」から「０」に書き換えられる。すなわち、コミットフラグは、有効フラグが設定されている複数のデータのメインエリアＭＡへのコピーが、完了したか否かを示すフラグである。そして、処理が終了する。
【００４９】
図５は、コミット前におけるＮＶＲＡＭ１０２ａの論理的な構成の一例を示す。図５に示すように、コミット前では、ＮＶＲＡＭ１０２ａにおけるコミットフラグは例えば「０」に設定される。なお、図５および図６におけるアドレスおよびデータは、１６進法にしたがって表記されている。
【００５０】
図６を参照して、コミット要求コマンドに応じて実行されるコミット処理の具体例を説明する。図６に示すように、コミット要求コマンドに応じてコミットフラグが例えば「１」に設定される。コミットフラグ「１」によりコミット中であることが示される。
【００５１】
メインエリアＭＡのアドレス「０ｘＡ０００」には、データ「０ｘ００００００００」が記憶されている。また、アドレス「０ｘ８０００」にはデータ「０ｘＣＣ８８ＣＣ８８」が記憶されている。テンポラリエリアＴＡには、書き込み先（コピー先）のアドレスとしてアドレス「０ｘＡ０００」が指定されたデータ「０ｘＡＡ５５ＡＡ５５」と、書き込み先のアドレスとしてアドレス「０ｘ８０００」が指定されたデータ「０ｘＦＦＦＦＦＦＦＦ」とが記憶されている。
【００５２】
データ「０ｘＡＡ５５ＡＡ５５」およびデータ「０ｘＦＦＦＦＦＦＦＦ」のそれぞれには有効フラグとして「１」が設定されている。データ「０ｘＦＦＦＦＦＦＦＦ」およびデータ「０ｘＡＡ５５ＡＡ５５」は、複数の書き込み処理により意味をなす処理における、個々の書き込み処理に対応したデータの一例である。
【００５３】
上述したように、コミット処理ではテンポラリエリアＴＡのデータがメインエリアＭＡの所定のアドレスにコピーされる。例えば、データ「０ｘＡＡ５５ＡＡ５５」がメインエリアＭＡのアドレス「０ｘＡ０００」にコピーされる。すなわち、データ「０ｘ００００００００」がデータ「０ｘＡＡ５５ＡＡ５５」に書き換えられる。書き換え処理が終了すると、有効フラグが「１」から「０」に書き換えられる。
【００５４】
同様に、データ「０ｘＦＦＦＦＦＦＦＦ」がメインエリアＭＡのアドレス「０ｘ８０００」にコピーされる。すなわち、データ「０ｘＣＣ８８ＣＣ８８」がデータ「０ｘＦＦＦＦＦＦＦＦ」に書き換えられる。書き換え処理が終了すると、有効フラグが解除され「１」から「０」に書き換えられる。有効フラグが「１」のデータに関して全ての書き換え処理が終了すると、コミットフラグが解除され「１」から「０」に書き換えられる。
【００５５】
「電源再投入後の処理の一例」
図７は、意図しない電源断が発生した後に、電源が再投入されたときに行われる処理の流れの一例を示すフローチャートである。以下に説明する処理は、例えば、ＮＶＲＡＭコントローラ１０２ｂの制御に応じて行われる。ＮＶＲＡＭコントローラ１０２ｂは、ホストデバイス１０からのコマンドや、自身に記憶されているデータを参照すること等により、正常な終了処理がなされた後の電源投入か、もしくは、意図しない電源断が発生した後の電源投入であるのかを識別できるように構成されている。
【００５６】
ステップＳＴ２０１において、ＮＶＲＡＭコントローラ１０２ｂは、ＮＶＲＡＭ１０２ａのコミットフラグ（第１のフラグの一例に対応する）を確認する。コミットフラグが設定されている場合、換言すれば、コミットフラグが「１」である場合には、処理がステップＳＴ２０２に進む。
【００５７】
コミットフラグが「１」である場合には、意図しない電源断等の障害によりコミット処理が完了していないことを示している。すなわち、テンポラリエリアＴＡのデータのメインエリアＭＡへのコピーが完了していない状態である。したがって、ステップＳＴ２０２では、有効フラグ（第２のフラグの一例に対応する）に基づいて、テンポラリエリアＴＡ内のテーブルのデータがメインエリアＭＡに書き込まれる。具体的には、有効フラグが「１」のエントリにおけるデータが、対応付けされているアドレス情報にしたがってメインエリアＭＡに書き込まれる。なお、メインエリアＭＡに書き込まれたデータの有効フラグは「１」から「０」に書き換えられる。そして、処理がステップＳＴ２０３に進む。
【００５８】
ステップＳＴ２０３では、テンポラリエリアＴＡ内の有効フラグが「１」であるデータが全てメインエリアＭＡに書き込まれたか否かが判断される。有効フラグが「１」であるデータが全てメインエリアＭＡに書き込まれていない場合には、処理がステップＳＴ２０２に戻り、ステップＳＴ２０２の処理が繰り返される。有効フラグが「１」であるデータが全てメインエリアＭＡに書き込まれた場合には、処理がステップＳＴ２０４に進む。
【００５９】
ステップＳＴ２０４では、コミットフラグが解除される。具体的には、コミットフラグが「１」から「０」に書き換えられる。これにより、メインエリアＭＡにおけるデータの一貫性を保持することが可能となる。そして、処理が終了する。
【００６０】
ステップＳＴ２０１における判断処理で、コミットフラグが設定されていない場合、換言すれば、コミットフラグが「０」である場合には、処理がステップＳＴ２０５に進む。コミットフラグが「０」であるということは、例えば、トランザクション開始後コミット処理が行われる前に意図しない電源断等の障害が発生したことを示している。したがって、ステップＳＴ２０５では、テンポラリエリアＴＡ内のテーブルの有効フラグを全て解除し、テンポラリエリアＴＡ内のデータを無効にする。具体的には、有効フラグを全て「０」にし、テンポラリエリアＴＡをトランザクション処理前の状態にする。なお、図示は省略しているが、ＮＶＲＡＭコントローラ１０２ｂは、メモリコントローラ１０１からトランザクション開始要求コマンドを明示的に受け取ると、再度、トランザクション処理を開始する。そして、処理が終了する。
【００６１】
なお、トランザクション処理が行われていない状態で意図しない電源断等の障害が発生した場合もコミットフラグが「０」になる。この場合も同様の処理が行われる。また、意図しない電源断に限らず、正常に終了処理がなされた後に再度、電源が投入された場合にも上述した処理と同様の処理が行われる。
【００６２】
なお、コミットフラグが「０」である場合に、ステップＳＴ２０５の処理において、ＮＶＲＡＭ１０２ａのテンポラリエリアＴＡ内のデータを消去する処理が行われてもよい。また、テンポラリエリアＴＡの先頭のエントリに有効フラグとして「０」が設定されている場合には、有効フラグが「１」であるエントリが存在しないものとみなして、テンポラリエリアＴＡ内のデータを消去しないようにしてもよい。
【００６３】
以上説明した本開示の一実施形態によれば、主記憶装置として不揮発性メモリを使用した場合に、意図しない電源断が発生した場合でも電源再投入後に不揮発性メモリ上のデータ構造に矛盾が生じることを防止できる。このため、データの再構築処理や再展開が不要となり、システムを高速に起動することが可能となる。
【００６４】
＜２．変形例＞
以上、本開示の実施形態について具体的に説明したが、本開示は、上述の実施形態に限定されるものではなく、本開示の技術的思想に基づく各種の変形が可能である。
【００６５】
図８は、メモリ装置１００の変形例を説明するための図である。図８に示すように、不揮発性メモリを主記憶装置１０２として使用するとともに、バッファＲＡＭとして使用する構成としてもよい。
【００６６】
上述した一実施形態では、ＮＶＲＡＭコントローラ１０２ｂがＮＶＲＡＭ１０２ａのメインエリアＭＡのみにアクセス可能な構成としたが、これに限定されるものではない。
例えば、不揮発性メモリからなる主記憶装置１０２の全領域にアドレスが付加される。当該アドレスを使用して、メモリコントローラ１０１が主記憶装置１０２に対してメインエリアＭＡ、テンポラリエリアＴＡおよびコミットフラグ領域ＣＦを論理的に割り当て、各領域を使い分けるようにしてもよい。
【００６７】
図９は、テンポラリエリアＴＡへの書き込み処理やコミットフラグの書き換え処理等をメモリコントローラ１０１が制御する場合の、メモリ装置１００における処理の流れの一例を示す。
【００６８】
通常の書き込み処理では、メモリコントローラ１０１は、データをＮＶＲＡＭ１０２ａのメインエリアＭＡに書き込む（ステップＳＴ３０１）。
【００６９】
トランザクション処理を行う場合には、メモリコントローラ１０１は、トランザクション処理の開始を宣言する（ステップＳＴ３０２）。トランザクション処理の開始を宣言したメモリコントローラ１０１は、書き込むべきデータをアドレス情報ととともにテンポラリエリアＴＡのテーブル内のエントリに追加し、有効フラグを設定する（ステップＳＴ３０３、ステップＳ３０５）。有効フラグとして、例えば、「１」が設定される。
【００７０】
なお、データを読み出す場合は、メモリコントローラ１０１は、読み出すべきデータがテンポラリエリアＴＡに格納されている場合には、テンポラリエリアＴＡから該当するデータを読み出す（ステップＳＴ３０４）。なお、読み出すべきデータがメインエリアＭＡに格納されている場合は、メモリコントローラ１０１は、メインエリアＭＡから該当するデータを読み出す。
【００７１】
一連の書き換え処理であるトランザクション処理が終了すると、メモリコントローラ１０１は、コミットフラグを設定する（ステップＳＴ３０６）。ＮＶＲＡＭ１０２ａのコミットフラグ領域ＣＦには、コミットフラグとして、例えば、「１」が設定される。
【００７２】
そして、メモリコントローラ１０１は、テンポラリエリアＴＡのテーブルのデータを一旦、読み出し、エントリ毎のアドレス情報を参照してメインエリアＭＡの書き換え処理を行う。例えば、テンポラリエリアＴＡに記憶されている個々のエントリ単位または複数のエントリ単位でもって、各エントリのデータがメインエリアＭＡにコピーされる。メモリコントローラ１０１は、コピーしたエントリの有効フラグを解除する。例えば、コピーしたエントリの有効フラグが「１」から「０」に書き換えられる（ステップＳＴ３０７、ステップＳＴ３０８）。
【００７３】
ステップＳＴ３０７およびステップＳＴ３０８の処理が、テンポラリエリアＴＡの全エントリに対して繰り返し行われる（ステップＳＴ３０９）。全エントリに対する処理が終了すると、コミットフラグが解除される（ステップＳＴ３１０）。例えば、コミットフラグが「１」から「０」に書き換えられる。このように、メモリコントローラ１０１がそれぞれのデータやフラグを書き換える処理を行うようにしてもよい。すなわち、ＮＶＲＡＭコントローラ１０２ｂがメモリ制御装置の一例として対応してもよく、メモリコントローラ１０１がメモリ制御装置の一例に対応してもよい。
【００７４】
上述した一実施形態および変形例における論理的な値は一例であり、これに限定されるものではない。論理的な値と、それが意味する内容は適宜、設定することができる。例えば、有効フラグが「０」が、メインエリアＭＡへのエントリのコピーが終了していないことを示すようにしてもよい。
【００７５】
上述した一実施形態では、主記憶装置として単一の不揮発性メモリが使用される例を示したが、主記憶装置として複数の不揮発性メモリが使用されてもよい。この場合に、異なる不揮発性メモリに、テンポラリエリアおよびメインエリアがそれぞれ設定されるようにしてもよい。
【００７６】
本開示は、装置に限らず、方法、プログラム、プログラムを記録した記録媒体、システム等により実現することができる。プログラムは、例えば、ネットワークを介して、若しくは、光ディスクや半導体メモリ等の可搬型のメモリを介してユーザに提供し得る。
【００７７】
なお、実施形態および変形例における構成および処理は、技術的な矛盾が生じない範囲で適宜組み合わせることができる。例示した処理の流れにおけるそれぞれの処理の順序は、技術的な矛盾が生じない範囲で適宜、変更できる。
【００７８】
本開示は、例示した処理が複数の装置によって分散されて処理される、いわゆるクラウドシステムに対して適用することもできる。実施形態等において例示した処理が実行されるシステムであって、例示した処理の少なくとも一部の処理が実行される装置として、本開示を実現することができる。
【００７９】
本開示は、以下の構成もとることができる。
（１）
少なくとも第１の領域と第２の領域とを有する不揮発性メモリに対して、データの書き込みおよび読み出しの制御を行う制御部を有し、
前記制御部は、
前記第１の領域に複数のデータの書き込みを行う場合に、一旦、前記複数のデータを前記第２の領域に書き込み、
前記第２の領域に書き込まれた前記複数のデータのそれぞれを前記第１の領域にコピーする場合に、前記第１の領域への前記複数のデータのコピーが完了したか否かを示すフラグを設定するように構成された
メモリ制御装置。
（２）
前記制御部は、前記コピーが完了した場合に前記フラグを解除するように構成された
（１）に記載のメモリ制御装置。
（３）
前記制御部は、前記データを、前記第１の領域へのコピーが完了したか否かを示すフラグと、コピー先である前記第１の領域のアドレス情報とを対応付けて、前記第２の領域に書き込むように構成された
（１）または（２）に記載のメモリ制御装置。
（４）
前記制御部は、前記データの前記第１の領域へのコピーが完了した場合に、前記第２の領域における前記データに対応する前記フラグを解除するように構成された
（３）に記載のメモリ制御装置。
（５）
前記複数のデータのそれぞれは、複数の書き込み処理により意味をなす処理における、個々の書き込み処理に対応したデータである
（１）乃至（４）のいずれかに記載のメモリ制御装置。
（６）
前記不揮発性メモリは、前記制御部に対して接続され、主記憶装置として使用されるメモリである
（１）乃至（５）のいずれかに記載のメモリ制御装置。
（７）
前記不揮発性メモリの第３の領域に前記フラグが記憶される
（１）乃至（６）のいずれかに記載のメモリ制御装置。
（８）
少なくとも第１の領域と第２の領域とを有する不揮発性メモリに対して、データの書き込みおよび読み出しの制御を行う制御部を有し、
前記制御部は、電源投入時に第１のフラグが設定されている場合には、前記第２の領域に記憶されているデータのうち、第２のフラグが設定されているデータを前記第１の領域にコピーするように構成された
メモリ制御装置。
（９）
前記第１のフラグは、前記第２のフラグが設定されているデータの全てが、前記第２の領域から前記第１の領域にコピーされたか否かを示す情報である
（８）に記載のメモリ制御装置。
（１０）
前記第２の領域には、前記第２のフラグとコピー先である前記第１の領域のアドレス情報とが前記データに対応付けて記憶されており、
前記制御部は、前記アドレス情報に基づいて、前記データを前記第２の領域から前記第１の領域にコピーするように構成された
（８）または（９）に記載のメモリ制御装置。
（１１）
前記制御部は、電源投入時に第１のフラグが設定されていない場合には、前記第２のフラグを解除するように構成された
（８）乃至（１０）の何れかに記載のメモリ制御装置。
（１２）
少なくとも第１の領域と第２の領域とを有する不揮発性メモリと、
前記不揮発性メモリに対して、データの書き込みおよび読み出しの制御を行う制御部を有し、
前記制御部は、
前記第１の領域に複数のデータの書き込みを行う場合に、一旦、前記複数のデータを前記第２の領域に書き込み、
前記第２の領域に書き込まれた前記複数のデータのそれぞれを前記第１の領域にコピーする場合に、前記第１の領域への前記複数のデータのコピーが完了したか否かを示すフラグを設定するように構成された
メモリ装置。
（１３）
少なくとも第１の領域と第２の領域とを有する不揮発性メモリと、
前記不揮発性メモリに対して、データの書き込みおよび読み出しの制御を行う制御部を有し、
前記制御部は、電源投入時に第１のフラグが設定されている場合には、前記第２の領域に記憶されているデータのうち、第２のフラグが設定されているデータを前記第１の領域にコピーするように構成された
メモリ装置。
（１４）
少なくとも第１の領域と第２の領域とを有する不揮発性メモリに対して、データの書き込みおよび読み出しの制御を実行する制御部が、
前記第１の領域に複数のデータの書き込みを行う場合に、一旦、前記複数のデータを前記第２の領域に書き込み、
前記第２の領域に書き込まれた前記複数のデータのそれぞれを前記第１の領域にコピーする場合に、前記第１の領域への前記複数のデータのコピーが完了したか否かを示すフラグを設定する
メモリ制御方法。
（１５）
少なくとも第１の領域と第２の領域とを有する不揮発性メモリに対して、データの書き込みおよび読み出しの制御を実行する制御部が、
電源投入時に第１のフラグが設定されている場合には、前記第２の領域に記憶されているデータのうち、第２のフラグが設定されているデータを前記第１の領域にコピーする
メモリ制御方法。
【符号の説明】
【００８０】
１・・・情報処理システム
１００・・・メモリ装置
１０１・・・メモリコントローラ
１０２・・・主記憶装置
１０２ａ・・・ＮＶＲＡＭ
１０２ｂ・・・ＮＶＲＡＭコントローラ
【図１】
2015170454.tif 000003
【図２】
2015170454.tif 000004
【図３】
2015170454.tif 000005
【図４】
2015170454.tif 000006
【図５】
2015170454.tif 000007
【図６】
2015170454.tif 000008
【図７】
2015170454.tif 000009
【図８】
2015170454.tif 000010
【図９】
2015170454.tif 000011
【国際調査報告】
2015170454.tif 000012
2015170454.tif 000013