(57)【特許請求の範囲】
【請求項１】
揮発性メモリと、
第１の不揮発性メモリと、
ホストシステムによって実行される複数のプログラムの識別子と前記複数のプログラムによって使用されている前記揮発性メモリの複数の領域それぞれのアドレス情報との対応関係を示す管理情報を格納する第２の不揮発性メモリと、
電源遮断のイベントに応答して、前記揮発性メモリのデータを前記第１の不揮発性メモリにセーブするコントローラであって、
電源の回復後に、前記複数のプログラムの内の第１プログラムの識別子と、前記ホストシステムによって前記電源の回復後に前記第１プログラムに新たに割り当てられた前記揮発性メモリの第１領域を示すアドレス情報とを、前記ホストシステムから受信し、
前記第１プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報に基づいて、前記第１プログラムによって電源遮断前に使用されていた前記揮発性メモリの領域のデータがセーブされている前記第１の不揮発性メモリの領域を識別し、
前記識別された前記第１の不揮発性メモリの領域に格納されているデータを、前記揮発性メモリの前記第１領域に復元し、
前記識別された前記第１の不揮発性メモリの領域に格納されているデータが復元された後、前記管理情報を更新して、前記第１プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報を、前記第１領域を示すアドレス情報に変更するコントローラとを具備するメモリ装置。
【請求項２】
前記コントローラは、前記揮発性メモリの全データを前記第１の不揮発性メモリにセーブする請求項１記載のメモリ装置。
【請求項３】
前記コントローラは、前記管理情報から、前記第１プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報を検索し、前記検索されたアドレス情報に基づいて、前記第１プログラムによって電源遮断前に使用されていた前記揮発性メモリの領域のデータがセーブされている前記第１の不揮発性メモリの領域を識別する請求項１記載のメモリ装置。
【請求項４】
前記メモリ装置は、前記ホストシステムのメモリソケットに挿入可能なデュアル・インライン・メモリモジュール（ＤＩＭＭ）である請求項１記載のメモリ装置。
【請求項５】
揮発性メモリと、
第１の不揮発性メモリと、
バックアップされるべき一つ以上のプログラムの識別子と、前記一つ以上のプログラムによって使用されている前記揮発性メモリの一つ以上の領域それぞれのアドレス情報と、前記一つ以上のプログラムの状態をセーブするための前記第１の不揮発性メモリの一つ以上のセーブ領域それぞれのアドレス情報との対応関係を示す管理情報を格納する第２の不揮発性メモリと、
電源遮断のイベントに応答して、前記管理情報に基づき、前記揮発性メモリの一つ以上の領域のデータを前記一つ以上のセーブ領域にセーブするコントローラであって、
電源の回復後に、前記一つ以上のプログラムの内の第１プログラムの識別子と、ホストシステムによって前記電源の回復後に前記第１プログラムに新たに割り当てられた前記揮発性メモリの第１領域を示すアドレス情報とを、前記ホストシステムから受信し、
前記第１プログラムの識別子と前記管理情報とに基づいて、前記第１プログラムによって電源遮断前に使用されていた前記揮発性メモリの領域のデータがセーブされている前記第１の不揮発性メモリの第１セーブ領域を識別し、
前記識別された第１セーブ領域に格納されているデータを、前記揮発性メモリの前記第１領域に復元し、
前記第１セーブ領域に格納されているデータが復元された後、前記管理情報を更新して、前記第１プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報を、前記第１領域を示すアドレス情報に変更するコントローラとを具備するメモリ装置。
【請求項６】
前記コントローラは、前記管理情報から、前記第１プログラムの識別子と同じ識別子を有するプログラムに対応するセーブ領域のアドレス情報を検索し、前記検索されたアドレス情報を、前記第１セーブ領域のアドレス情報として識別する請求項５記載のメモリ装置。
【請求項７】
前記コントローラは、
前記第１セーブ領域に格納されているデータが復元された後の電源遮断のイベントに応答して、前記第１領域のデータを、前記第１セーブ領域とは異なる前記第１の不揮発性メモリの第２セーブ領域にセーブし、
電源の回復後に、前記第１プログラムのプログラム識別子と、前記第１プログラムの旧世代の状態または前記第１プログラムの新世代の状態のいずれかを指定する履歴識別子と、前記ホストシステムによって前記第１プログラムに新たに割り当てられた前記揮発性メモリの領域を示すアドレス情報とが前記ホストシステムから受信された場合、前記履歴識別子によって指定された世代に基づいて、前記第１セーブ領域に格納されているデータまたは前記第２セーブ領域に格納されているデータのいずれかを、前記受信されたアドレス情報によって指定される前記揮発性メモリの領域に復元する請求項５記載のメモリ装置。
【請求項８】
前記メモリ装置は、前記ホストシステムのメモリソケットに挿入可能なデュアル・インライン・メモリモジュール（ＤＩＭＭ）である請求項５記載のメモリ装置。
【請求項９】
揮発性メモリと、第１の不揮発性メモリと、第２の不揮発性メモリとを備えるメモリ装置を制御するメモリ制御方法であって、
ホストシステムによって実行される複数のプログラムの識別子と前記複数のプログラムによって使用されている前記揮発性メモリの複数の領域それぞれのアドレス情報との対応関係を示す管理情報を前記第２の不揮発性メモリに格納することと、
電源遮断のイベントに応答して、前記揮発性メモリのデータを前記第１の不揮発性メモリにセーブすることと、
電源の回復後に、前記複数のプログラムの内の第１プログラムの識別子と、前記ホストシステムによって前記電源の回復後に前記第１プログラムに新たに割り当てられた前記揮発性メモリの第１領域を示すアドレス情報とを、前記ホストシステムから受信することと、
前記第１プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報に基づいて、前記第１プログラムによって電源遮断前に使用されていた前記揮発性メモリの領域のデータがセーブされている前記第１の不揮発性メモリの領域を識別することと、
前記識別された前記第１の不揮発性メモリの領域に格納されているデータを、前記揮発性メモリの前記第１領域に復元することと、
前記識別された前記第１の不揮発性メモリの領域に格納されているデータが復元された後、前記管理情報を更新して、前記第１プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報を、前記第１領域を示すアドレス情報に変更することとを具備するメモリ制御方法。
【請求項１０】
前記識別することは、前記管理情報から、前記第１プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報を検索することと、前記検索されたアドレス情報に基づいて、前記第１プログラムによって電源遮断前に使用されていた前記揮発性メモリの領域のデータがセーブされている前記第１の不揮発性メモリの領域を識別することとを含む請求項９記載のメモリ制御方法。
【請求項１１】
前記メモリ装置は、前記ホストシステムのメモリソケットに挿入可能なデュアル・インライン・メモリモジュール（ＤＩＭＭ）である請求項９記載のメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、揮発性メモリのデータをバックアップする技術に関する。
【背景技術】
【０００２】
近年、ダイナミックＲＡＭ（ＤＲＡＭ）のような揮発性メモリのデータが電源故障またはシステムクラッシュ等によって消失されるのを防ぐための技術が注目されている。
【０００３】
このような技術を実現するため、バックアップ機能付きのメモリ装置が開発され始めている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２２２２９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、従来では、バックアップされたデータを、揮発性メモリ内の任意の領域に復元するための技術については考慮されていない。
【０００６】
本発明が解決しようとする課題は、バックアップされたデータを揮発性メモリ内の任意の領域に復元することができるメモリ装置およびメモリ制御方法を提供することである。
【課題を解決するための手段】
【０００７】
実施形態によれば、メモリ装置は、揮発性メモリと、第１の不揮発性メモリと、第２の不揮発性メモリと、コントローラとを備える。前記第２の不揮発性メモリは、ホストシステムによって実行される複数のプログラムの識別子と前記複数のプログラムによって使用されている前記揮発性メモリの複数の領域それぞれのアドレス情報との対応関係を示す管理情報を格納する。前記コントローラは、電源遮断のイベントに応答して、前記揮発性メモリのデータを前記第１の不揮発性メモリにセーブする。前記コントローラは、電源の回復後に、前記複数のプログラムの内の第１プログラムの識別子と、前記ホストシステムによって前記電源の回復後に前記第１プログラムに新たに割り当てられた前記揮発性メモリの第１領域を示すアドレス情報とを、前記ホストシステムから受信する。前記コントローラは、前記第１プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報に基づいて、前記第１プログラムによって電源遮断前に使用されていた前記揮発性メモリの領域のデータがセーブされている前記第１の不揮発性メモリの領域を識別する。前記コントローラは、前記識別された前記第１の不揮発性メモリの領域に格納されているデータを、前記揮発性メモリの前記第１領域に復元する。前記コントローラは、前記識別された前記第１の不揮発性メモリの領域に格納されているデータが復元された後、前記管理情報を更新して、前記第１プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報を、前記第１領域を示すアドレス情報に変更する。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係るメモリ装置の構成例を示すブロック図。
【図２】バックアップ機能付きの通常のメモリ装置によって実行されるセーブおよびリストア動作を説明するための図。
【図３】同実施形態のメモリ装置よって実行されるセーブおよびリストア動作を説明するための図。
【図４】同実施形態のメモリ装置によって実行されるセーブおよびリストア動作の別の例を説明するための図。
【図５】同実施形態のメモリ装置によって実行されるセーブおよびリストア動作のさらに別の例を説明するための図。
【図６】同実施形態のメモリ装置によって使用される管理情報テーブルの例を示す図。
【図７】同実施形態のメモリ装置とホストシステムとの間のインタフェースのためのメモリマップドＩＯの内容の例を示す図。
【図８】同実施形態のメモリ装置のコントローラによって実行される登録動作およびリストア（リカバリ）動作の手順を示すフローチャート。
【図９】同実施形態のメモリ装置によって使用される管理情報テーブルの別の例を示す図。
【図１０】図９の管理情報テーブルを使用して同実施形態のメモリ装置のコントローラによって実行される登録動作およびリストア（リカバリ）動作の手順を示すフローチャート。
【図１１】同実施形態のメモリ装置によって使用される管理情報テーブルのさらに別の例を示す図。
【図１２】図１１の管理情報テーブルを使用して同実施形態のメモリ装置のコントローラによって実行される登録動作およびリストア（リカバリ）動作の手順を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、図面を参照して、実施形態を説明する。  
まず、図１を参照して、一実施形態に係るメモリ装置の構成を説明する。
【００１０】
このメモリ装置２００は、例えば、デュアル・インライン・メモリモジュール（ＤＩＭＭ）として実現されている。ＤＩＭＭは、ホストシステム１１０に設けられたＤＩＭＭ規格のメモリソケットに挿入可能なメモリモジュールである。より詳しくは、メモリ装置２００は、不揮発性メモリを備えており、バックアップ機能を有するＮＶ−ＤＩＭＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｄｕａｌ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）として機能することができる。
【００１１】
通常動作の期間中においては、メモリ装置２００は、ホストシステム１１０にとっては通常のＤＩＭＭとして見える。電源遮断（パワーロス）のイベントに応答して、メモリ装置２００は、メモリ装置２００内の揮発性メモリのデータをメモリ装置２００内の不揮発性メモリにセーブすることができる。
【００１２】
これにより、たとえ、予期しない停電、システムクラッシュ等が発生しても、メモリ装置２００は、揮発性メモリのデータを永続的に維持することができ、これによって揮発性メモリのデータの消失を防ぐことができる
さらに、揮発性メモリのデータのリカバリが必要な時、メモリ装置２００は、不揮発性メモリから揮発性メモリのデータを復元（リストア）することができる。
【００１３】
この場合、メモリ装置２００は、ホストシステム１１０によって指定された任意のプログラムによって使用されていた揮発性メモリの領域のデータを、ホストシステム１１０によって指定された揮発性メモリ内の任意の領域（アドレス空間）に復元することができる。
【００１４】
これにより、あるプログラムが電源遮断前に使用していた揮発性メモリのある領域のデータを、このプログラムのために新たに割り当てられていた揮発性メモリ内の別の領域に復元することができる。
【００１５】
よって、たとえこのプログラムに電源遮断前とは異なる揮発性メモリ内の領域が新たに割り当てられた場合であっても、このプログラムのデータを、不揮発性メモリから、この新たに割り当てられた領域に適切に戻すことができる。
【００１６】
ホストシステム１１０は、サーバ、パーソナルコンピュータのような情報処理装置である。
【００１７】
ホストシステム１１０は、メモリバスコントローラ１１１、システムマネージメント（ＳＭ）バスコントローラ１１２、電源遮断検出回路１１３、ＣＰＵ１１４等を備える。
【００１８】
メモリバスコントローラ１１１は、メモリソケットに挿入されたメモリ装置２００にメモリバスを介して電気的に接続される。ホストシステム１１０は、複数のメモリソケットを有している。図１においては、メモリ装置２００および別のメモリ装置２００’が異なる２つのメモリソケットに挿入されている場合が想定されている。別のメモリ装置２００’は通常のＤＩＭＭであってもよいし、ＮＶ−ＤＩＭＭであってもよい。メモリバスコントローラ１１１は、ＣＰＵ１１４の制御の下、メモリ装置２００およびメモリ装置２００’の各々をメモリバスを介してライトアクセスすることができ、またメモリ装置２００およびメモリ装置２００’の各々をメモリバスを介してリードアクセスすることができる。
【００１９】
例えば、メモリ装置２００は、バックアップが必要な幾つかの特定のプログラムのデータの格納に使用されてもよい。メモリ装置２００’が通常のＤＩＭＭの場合には、このメモリ装置２００’は、バックアップが不要な別の幾つかのプログラムのデータの格納に使用されてもよい。メモリ装置２００のメモリアドレス空間には、重要なデータ（クリティカルデータ）を扱う幾つかのアプリケーションプログラムのための領域それぞれが割り当てられてもよい。
【００２０】
ＳＭバスコントローラ１１２は、システム管理バス（ＳＭバス）を介してメモリ装置２００およびメモリ装置２００’の各々と通信することができる。ＳＭバスはＩ２Ｃバスのようなシリアルバスである。
【００２１】
ＳＭバスコントローラ１１２は、ＳＭバスを介して各メモリ装置からＳＰＤ（Ｓｅｒｉａｌ  ｐｒｅｓｅｎｃｅ  Ｄｅｔｅｃｔ）データをリードすることができる。ＳＰＤデータは、メモリ装置のタイプ、メモリ装置の構成、メモリ装置の特徴、等を示すデータである。
【００２２】
さらに、ＳＭバスコントローラ１１２は、データのセーブおよびリストアに関する、様々なコマンドおよび情報を、ＳＭバスを介してメモリ装置２００に送信することができる。これらコマンドの例には、バックアップコマンド（セーブ指示）、リストア（リカバリ）コマンド、登録コマンド、等が含まれてもよい。バックアップコマンド（セーブ指示）は、メモリ装置２００に対し、揮発性メモリのデータを不揮発性メモリにセーブすることを指示するコマンドである。リストア（リカバリ）コマンドは、メモリ装置２００に対し、揮発性メモリのデータ（メモリ状態）を復元すべきことを指示するコマンドである。登録コマンドは、セーブおよびリストア動作に必要な管理情報をメモリ装置２００内に登録するためのコマンドである。登録コマンドによって登録されるべき管理情報には、少なくとも、あるプログラムの識別子と、ホストシステム１１０によってこのプログラムに新たに割り当てられた揮発性メモリの領域を示すアドレス情報とが含まれる。
【００２３】
電源遮断検出回路１１３は、少なくとも、ホストシステム１１０からメモリ装置２００に供給されるメモリ電源の状態を監視する。電源遮断検出回路１１３は、メモリ電源の状態だけでなく、ホストシステム１１０のシステム電源の状態を監視してもよい。電源遮断検出回路１１３がメモリ電源またはシステム電源の電源遮断を検出した時、ＳＭバスコントローラ１１２は、ＳＭバスを介してバックアップコマンド（セーブ指示）をメモリ装置２００に送信してもよい。
【００２４】
メモリソケットが、セーブを指示するためのハードウェア信号（セーブ信号）がアサインされたピンを有する場合には、このハードウェア信号（セーブ信号）をセーブ指示として利用することもできる。ホストシステム１１０は、電源遮断の検出に応答して、このハードウェア信号（セーブ信号）をアクティブステートに設定してもよい。
【００２５】
ＣＰＵ１１４は、ホストシステム１１０の様々なコンポーネントを制御するように構成されたプロセッサである。ＣＰＵ１１４は、様々なプログラムを実行する。これらプログラムには、オペレーティングシステム（ＯＳ）および様々なアプリケーションプログラムが含まれる。
【００２６】
メモリ装置２００は、揮発性メモリ１０１、ＳＰＤメモリ１０２、ＮＶＤＩＭＭコントローラ１０３、不揮発性メモリ１０４、バックアップ電源１０５、電源遮断検出回路１０６、管理情報不揮発性メモリ２０１等を備える。
【００２７】
揮発性メモリ１０１は、ホストシステム１１０によって利用されるデータが格納されるＤＩＭＭとして機能するメモリである。揮発性メモリ１０１は、例えば、複数のＤＲＡＭチップを備える。
【００２８】
ＳＰＤメモリ１０２は、ＳＰＤデータを格納する不揮発性メモリである。ＳＰＤメモリ１０２は、例えば、Ｅ２ＰＲＯＭから構成される。
【００２９】
ＮＶＤＩＭＭコントローラ１０３は、揮発性メモリ１０１から不揮発性メモリ１０４にデータをセーブするためのセーブ動作と、不揮発性メモリ１０４から揮発性メモリ１０１にデータを復元するためのリストア動作とを実行するように構成された制御ロジックを含む。
【００３０】
ＮＶＤＩＭＭコントローラ１０３は、ＳＭバスを介してホストシステム１１０とのインタフェースを実行するためのメモリマップドＩＯ（ＭＭＩＯ）１０３を備えている。ＭＭＩＯ１０３Ａは、メモリアドレス空間にマッピングされたレジスタである。
【００３１】
不揮発性メモリ１０４は、揮発性メモリ１０１のデータをバックアップするために使用される。不揮発性メモリ１０４は、揮発性メモリ１０１の容量以上の容量を有する。不揮発性メモリ１０４は、ＮＡＮＤフラッシュメモリであってもよいし、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又は、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような別のタイプの不揮発性メモリであってもよい。
【００３２】
バックアップ電源１０５は、電源遮断時に、データを揮発性メモリ１０１から不揮発性メモリ１０４にセーブするために必要な電力（バックアップ電力）をメモリ装置２００に供給する電源ソースである。バックアップ電源１０５は、キャパシタによって実現されていてもよい。バックアップ電源１０５は、メモリ装置２００に内蔵されていてもよいし、電源ケーブルを介してメモリ装置２００に外部的に接続されてもよい。
【００３３】
電源遮断検出回路１０６は、ホストシステム１１０から供給される電力（メモリ電源）の状態を監視する。電源遮断検出回路１０６がメモリ電源の遮断を検出した時、電源遮断検出回路１０６は、この電源遮断を示すハードウェア信号をＮＶＤＩＭＭコントローラ１０３に送信する。
【００３４】
ＮＶＤＩＭＭコントローラ１０３は、電源遮断のイベントに応答して、すなわち、電源遮断検出回路１０６による電源遮断の検出、またはホストシステム１１０からのセーブ指示に応答して、揮発性メモリ１０１から不揮発性メモリ１０４にデータをセーブする。電源遮断の間、メモリ装置２００はバックアップ電源１０５から供給されるバックアップ電力によって動作することができる。あるいは、別の実施形態では、メモリ装置２００は、電源遮断の間、ホストシステム１１０から供給されるバックアップ電力によって動作してもよい。
【００３５】
管理情報不揮発性メモリ２０１は、管理情報（管理情報テーブル２０１Ａ）を格納するために使用される不揮発性メモリである。管理情報不揮発性メモリ２０１は、例えば、Ｅ２ＰＲＯＭであってもよい。
【００３６】
管理情報（管理情報テーブル２０１Ａ）はデータのセーブおよびリストア動作のために必要な情報であり、ホストシステム１１０によって管理情報不揮発性メモリ２０１に登録される。
【００３７】
管理情報テーブル２０１Ａは、ホストシステム１１０によって実行される複数のプログラムの識別子とこれら複数のプログラムによって使用されている揮発性メモリ１０１の複数の領域それぞれのアドレス情報との対応関係を示す。
【００３８】
例えば、ＯＳによってあるアプリケーションプログラムに揮発性メモリ１０１のある領域（領域＃１）が割り当てられ、ＯＳによって別のアプリケーションプログラムに揮発性メモリ１０１の別の領域（領域＃２）が割り当てられた場合を想定する。この場合、管理情報テーブル２０１Ａは、あるアプリケーションプログラムの識別子（ＡＰＬ＃１）に関連付けられた管理データ部と、別のアプリケーションプログラムの識別子（ＡＰＬ＃２）に関連付けられた管理データ部とを含む。
【００３９】
識別子（ＡＰＬ＃１）に関連付けられた管理データ部は、領域＃１を示すアドレス情報を含む。このアドレス情報は、領域＃１のスタートアドレスと、領域＃１のサイズ（オフセット量）を示す。
【００４０】
識別子（ＡＰＬ＃２）に関連付けられた管理データ部は、領域＃２を示すアドレス情報を含む。このアドレス情報は、領域＃２のスタートアドレスと、領域＃２のサイズ（オフセット量）を示す。
【００４１】
ホストシステム１１０は、ＳＭバスを介してＭＭＩＯ１０３ＡをアクセスすることによってＮＶＤＩＭＭコントローラ１０３に管理情報の登録を指示してもよいし、ＳＭバスを介して不揮発性メモリ２０１を直接的にアクセスすることによって管理情報不揮発性メモリ２０１に管理情報を登録してもよい。
【００４２】
以下、図２〜図４を参照して、ＮＶＤＩＭＭコントローラ１０３によって実行されるセーブおよびリストア動作の概要を説明する。
【００４３】
図２〜図４では、図示の簡単化のために領域＃１〜＃ｎは同じ大きさで図示されているが、実際には、領域＃１〜＃ｎは、対応するアプリケーションプログラムが必要とするサイズ（容量）を有している。
【００４４】
図２は、バックアップ機能付きの通常のメモリ装置によって実行されるセーブおよびリストア動作を示す。
【００４５】
バックアップ機能付きの通常のメモリ装置は、揮発性メモリ１０１から不揮発性メモリ１０４にデータをセーブし、そしてセーブされたデータを、揮発性メモリ１０１の元の場所に戻す。したがって、アプリケーションプログラム（ＡＰＬ＃１）のデータ（状態またはメモリ状態とも云う）は、不揮発性メモリ１０４から、電源遮断前にアプリケーションプログラム（ＡＰＬ＃１）に割り当てられていた領域＃１と同じ領域＃１に復元される。同様に、他のアプリケーションプログラムそれぞれの状態も、電源遮断前にこれらアプリケーションプログラム用に割り当てられていた領域と同じ領域それぞれに復元される。
【００４６】
図３は、ＮＶＤＩＭＭコントローラ１０３によって実行されるセーブおよびリストア動作の例を示す。
【００４７】
電源遮断時に、ＮＶＤＩＭＭコントローラ１０３は、例えば、揮発性メモリ１０１のデータ（全てのデータ）を不揮発性メモリ１０４にセーブする。
【００４８】
電源の回復後に、ＮＶＤＩＭＭコントローラ１０３は、あるプログラム（第１プログラム）の識別子と、ホストシステム１１０によってこのプログラム（第１プログラム）に新たに割り当てられた揮発性メモリ１０１の領域（第１領域）を示すアドレス情報とを、ＭＭＩＯ１０３Ａを介してホストシステム１１０から受信する。そして、ＮＶＤＩＭＭコントローラ１０３は、第１プログラムの識別子と管理情報テーブル２０１Ａとに基づいて、第１プログラムによって電源遮断前に使用されていた揮発性メモリ１０１の領域のデータがセーブされている不揮発性メモリ１０４の領域を識別する。
【００４９】
例えば、電源の回復後に、ＯＳが、領域＃１を、アプリケーションプログラム（ＡＰＬ＃２）のために新たに割り当てた場合を想定する。
【００５０】
この場合、ＯＳは、ＭＭＩＯ１０３Ａを介して、このアプリケーションプログラムの識別子ＡＰＬ＃２と、揮発性メモリ１０１の領域＃１を示すアドレス情報とをＭＭＩＯ１０３Ａを介してＮＶＤＩＭＭコントローラ１０３に通知する。
【００５１】
ＮＶＤＩＭＭコントローラ１０３は、管理情報テーブル２０１Ａから、受信されたアプリケーション識別子ＡＰＬ＃２と同じアプリケーション識別子を有するアプリケーションプログラムに対応する揮発性メモリ１０１の領域のアドレス情報を検索する。そして、ＮＶＤＩＭＭコントローラ１０３は、この検索されたアドレス情報（＝領域＃２を示すアドレス情報）に基づいて、アプリケーションプログラム（ＡＰＬ＃２）のデータがセーブされた不揮発性メモリ１０４の領域（領域＃２）を識別することができる。
【００５２】
そして、ＮＶＤＩＭＭコントローラ１０３は、識別された不揮発性メモリ１０４の領域＃２に格納されているデータを、揮発性メモリ１０１の領域＃１に復元（リストア）する。これにより、このアプリケーションプログラム（ＡＰＬ＃２）の電源遮断前の状態、つまり電源遮断前の揮発性メモリ１０１の領域＃２の内容を、不揮発性メモリ１０４から、アプリケーションプログラム（ＡＰＬ＃２）に新たに割り当てられた揮発性メモリ１０１の領域＃１に適切に復元することができる。
【００５３】
同様にして、他のアプリケーションプログラムそれぞれの状態も、これらアプリケーションプログラムに新たに割り当てられた揮発性メモリ１０１の領域に復元される。
【００５４】
図４は、ＮＶＤＩＭＭコントローラ１０３によって実行されるセーブおよびリストア動作の別の例を示す。
【００５５】
図４のセーブおよびリストア動作は、バックアップすべき特定の幾つかのアプリケーションプログラムの状態だけを不揮発性メモリ１０４にセーブし且つこれら特定の幾つかのアプリケーションプログラムの状態を揮発性メモリ１０１の任意の領域にそれぞれ復元することを可能にする。
【００５６】
図４のセーブおよびリストア動作を実現するために使用される管理情報テーブル２０１Ａは、バックアップされるべき一つ以上のプログラムの識別子と、これら一つ以上のプログラムによって使用されている揮発性メモリ１０１の一つ以上の領域それぞれのアドレス情報と、これら一つ以上のプログラムの状態をセーブするための不揮発性メモリ１０４の一つ以上のセーブ領域それぞれのアドレス情報との対応関係を示す。
【００５７】
いま、バックアップ対象のプログラムがアプリケーションプログラム（ＡＰＬ＃２）とアプリケーションプログラム（ＡＰＬ＃ｎ）であり、アプリケーションプログラム（ＡＰＬ＃２）が揮発性メモリ１０１の領域＃２を使用しており、アプリケーションプログラム（ＡＰＬ＃ｎ）が揮発性メモリ１０１の領域＃ｎを使用している場合を想定する。
【００５８】
ＮＶＤＩＭＭコントローラ１０３は、不揮発性メモリ１０４のセーブ領域＃１をバックアップ対象のアプリケーションプログラム（ＡＰＬ＃２）用に割り当ててもよく、さらに不揮発性メモリ１０４の別のセーブ領域＃２をバックアップ対象のアプリケーションプログラム（ＡＰＬ＃ｎ）用に割り当ててもよい。
【００５９】
この場合、管理情報テーブル２０１Ａにおいては、揮発性メモリ１０１の領域＃２を示すアドレス情報および不揮発性メモリ１０４のセーブ領域＃１を示すアドレス情報が、アプリケーション識別子ＡＰＬ＃２に関連付けられた状態で登録される。さらに、揮発性メモリ１０１の領域＃ｎを示すアドレス情報および不揮発性メモリ１０４のセーブ領域＃２を示すアドレス情報が、アプリケーション識別子ＡＰＬ＃ｎに関連付けられた状態で登録される。
【００６０】
電源遮断時に、ＮＶＤＩＭＭコントローラ１０３は、管理情報テーブル２０１Ａに基づき、アプリケーションプログラム（ＡＰＬ＃２）によって使用されている揮発性メモリ１０１の領域＃２のデータを、不揮発性メモリ１０４のセーブ領域＃１にセーブする。さらに、ＮＶＤＩＭＭコントローラ１０３は、管理情報テーブル２０１Ａに基づき、アプリケーションプログラム（ＡＰＬ＃ｎ）によって使用されている揮発性メモリ１０１の領域＃ｎのデータを、不揮発性メモリ１０４のセーブ領域＃２にセーブする。
【００６１】
電源の回復後に、ＮＶＤＩＭＭコントローラ１０３は、あるプログラム（第１プログラム）のアプリケーション識別子と、ホストシステム１１０によってこのプログラム（第１プログラム）に新たに割り当てられた揮発性メモリ１０１の領域（第１領域）を示すアドレス情報とを、ＭＭＩＯ１０３Ａを介してホストシステム１１０から受信する。
【００６２】
例えば、電源の回復後に、ＯＳが、揮発性メモリ１０１の領域＃２を、バックアップ対象のアプリケーションプログラム（ＡＰＬ＃ｎ）に新たに割り当てた場合を想定する。この場合、ＯＳは、ＭＭＩＯ１０３Ａを介して、このアプリケーションプログラム（ＡＰＬ＃ｎ）のアプリケーション識別子ＡＰＬ＃ｎと、揮発性メモリ１０１の領域＃２を示すアドレス情報とをＭＭＩＯ１０３Ａを介してＮＶＤＩＭＭコントローラ１０３に通知する。
【００６３】
ＮＶＤＩＭＭコントローラ１０３は、管理情報テーブル２０１Ａから、アプリケーション識別子ＡＰＬ＃ｎと同じアプリケーション識別子を有するアプリケーションプログラムに対応するセーブ領域のアドレス情報を検索する。
【００６４】
そして、ＮＶＤＩＭＭコントローラ１０３は、検索されたセーブ領域のアドレス情報から、アプリケーションプログラム（ＡＰＬ＃ｎ）によって電源遮断前に使用されていた揮発性メモリ１０１の領域＃ｎのデータがセーブされているセーブ領域（セーブ領域＃２）を識別することができる。
【００６５】
そして、ＮＶＤＩＭＭコントローラ１０３は、セーブ領域＃２に格納されているデータを揮発性メモリ１０１の領域＃２に復元する。
【００６６】
これにより、このアプリケーションプログラム（ＡＰＬ＃ｎ）の電源遮断前の状態、つまり揮発性メモリ１０１の領域＃ｎの電源遮断前の内容を、不揮発性メモリ１０４から、アプリケーションプログラム（ＡＰＬ＃ｎ）に新たに割り当てられた揮発性メモリ１０１の領域＃２に適切に復元することができる。
【００６７】
同様にして、アプリケーションプログラム（ＡＰＬ＃２）の状態も、アプリケーションプログラム（ＡＰＬ＃２）に新たに割り当てられた揮発性メモリ１０１の領域＃４に復元される。
【００６８】
図５は、ＮＶＤＩＭＭコントローラ１０３によって実行されるセーブおよびリストア動作のさらに別の例を示す。
【００６９】
図５のセーブおよびリストア動作は、バックアップ対象のアプリケーションプログラムの状態だけを不揮発性メモリ１０４の特定のセーブ領域にセーブするという図４のセーブおよびリストア動作を応用することによって、バックアップ対象のアプリケーションプログラムの旧世代の状態または新世代の状態のいずれかを、揮発性メモリ１０１の任意の領域に復元することを可能にする。
【００７０】
図５のセーブおよびリストア動作を実現するために使用される管理情報テーブル２０１Ａにおいては、バックアップされるべきプログラム群のアプリケーション識別子に加え、これらプログラム群のバックアップ状態の履歴を示す履歴識別子が追加されてもよい。
【００７１】
いま、アプリケーションプログラム（ＡＰＬ＃３）の旧世代の状態と新世代の状態とを管理する場合を想定する。
【００７２】
ＮＶＤＩＭＭコントローラ１０３は、不揮発性メモリ１０４のセーブ領域＃１を、バックアップ対象のアプリケーションプログラム（ＡＰＬ＃３）に割り当ててもよい。ＮＶＤＩＭＭコントローラ１０３は、セーブ領域＃１を、アプリケーション識別子ＡＰＬ＃３および履歴識別子（＝０）の組み合わせに関連付けて、管理情報テーブル２０１Ａに登録する。
【００７３】
電源遮断時に、ＮＶＤＩＭＭコントローラ１０３は、管理情報テーブル２０１Ａに基づき、アプリケーションプログラム（ＡＰＬ＃３）によって使用されている揮発性メモリ１０１の領域＃３のデータを、不揮発性メモリ１０４のセーブ領域＃１にセーブする。
【００７４】
例えば、電源の回復後に、バックアップ対象のアプリケーションプログラム（ＡＰＬ＃３）が起動される時、ＯＳは、揮発性メモリ１０１の領域＃４を、このバックアップ対象のアプリケーションプログラム（ＡＰＬ＃３）のために新たに割り当てるかもしれない。この場合、ＯＳは、ＭＭＩＯ１０３Ａを介して、アプリケーション識別子ＡＰＬ＃３と、履歴識別子（＝０）と、揮発性メモリ１０１の領域＃４を示すアドレス情報とを、ＭＭＩＯ１０３Ａを介してＮＶＤＩＭＭコントローラ１０３に通知する。
【００７５】
ＮＶＤＩＭＭコントローラ１０３は、管理情報テーブル２０１Ａから、アプリケーション識別子ＡＰＬ＃３と履歴識別子（＝０）との組み合わせに関連付けられたセーブ領域のアドレス情報を検索する。そして、ＮＶＤＩＭＭコントローラ１０３は、検索されたセーブ領域のアドレス情報に基づいて、アプリケーションプログラム（ＡＰＬ＃３）によって電源遮断前に使用されていた揮発性メモリ１０１の領域＃３のデータがセーブされている不揮発性メモリ１０４のセーブ領域（セーブ領域＃１）を識別することができる。
【００７６】
そして、ＮＶＤＩＭＭコントローラ１０３は、識別された不揮発性メモリ１０４のセーブ領域＃１に格納されているデータを揮発性メモリ１０１の領域＃４に復元する。
【００７７】
アプリケーションプログラム（ＡＰＬ＃３）は揮発性メモリ１０１の領域＃４を使用して動作することができる。
【００７８】
ＯＳは、アプリケーション識別子ＡＰＬ＃３、および履歴識別子（＝１）、および揮発性メモリ１０１の領域＃４のアドレス情報をＮＶＤＩＭＭコントローラ１０３に送信してもよい。ＮＶＤＩＭＭコントローラ１０３は、不揮発性メモリ１０４の未使用のセーブ領域、例えば、セーブ領域＃３を、アプリケーションプログラム（ＡＰＬ＃３）の新世代の状態をセーブするためのセーブ領域として割り当ててもよい。これにより、ＮＶＤＩＭＭコントローラ１０３は、アプリケーション識別子ＡＰＬ＃３、履歴識別子（＝１）、揮発性メモリ１０１の領域＃４のアドレス情報、およびセーブ領域＃３を示すアドレス情報を、管理情報テーブル２０１Ａに登録する。
【００７９】
アプリケーションプログラム（ＡＰＬ＃３）の実行に伴い、揮発性メモリ１０１の領域＃４の内容は更新される。
【００８０】
この後、例えば、予期しない停電のような電源遮断が発生したならば、ＮＶＤＩＭＭコントローラ１０３は、アプリケーションプログラム（ＡＰＬ＃３）によって使用されている領域＃４のデータを、アプリケーションプログラム（ＡＰＬ＃３）用の最新のセーブ領域＃３にセーブする。これにより、アプリケーションプログラム（ＡＰＬ＃３）の旧世代の状態がセーブ領域＃１に維持された状態で、アプリケーションプログラム（ＡＰＬ＃３）の新世代の状態を不揮発性メモリ１０４の別のセーブ領域（ここでは、セーブ領域＃３）にセーブすることができる。
【００８１】
電源の回復後に、アプリケーションプログラム（ＡＰＬ＃３）の識別子ＡＰＬ＃３と、旧世代または新世代のいずれかを指定する履歴識別子（０または１）と、アプリケーションプログラム（ＡＰＬ＃３）に新たに割り当てられた揮発性メモリ１０１の領域（例えば領域＃７）を示すアドレス情報とがホストシステム１１０から受信された場合、ＮＶＤＩＭＭコントローラ１０３は、履歴識別子（０または１）によって指定された世代に対応するアプリケーションプログラム（ＡＰＬ＃３）の状態を、揮発性メモリ１０１の領域（例えば領域＃７）に復元する。
【００８２】
より詳しくは、もし履歴識別子が０を示すならば、ＮＶＤＩＭＭコントローラ１０３は、アプリケーション識別子ＡＰＬ＃３および履歴識別子（＝０）の組み合わせに関連付けられたセーブ領域＃１に格納されているデータを、揮発性メモリ１０１の領域＃７に復元する。一方、もし履歴識別子が１を示すならば、ＮＶＤＩＭＭコントローラ１０３は、アプリケーション識別子ＡＰＬ＃３および履歴識別子（＝１）の組み合わせに関連付けられたセーブ領域＃３に格納されているデータを、揮発性メモリ１０１の領域＃７に復元する。
【００８３】
図６は、図３で説明したセーブおよびリストア動作に適用される管理情報テーブル２０１Ａのデータ構造の例を示す。
【００８４】
管理情報テーブル２０１Ａは、異なる値のインデックスが付与された複数のエントリ（複数の記憶領域）を有する。各エントリは、アプリケーションＩＤフィールド３０１、ＤＩＭＭアドレスフィールド３０２、およびオフセットフィールド３０３を含む。
【００８５】
アプリケーションＩＤフィールド３０１は、アプリケーション識別子を保持するアプリケーション識別情報部である。アプリケーション識別子（アプリケーションＩＤ）としては、個々のアプリケーションを識別可能な任意の種類の情報を使用することができる。上述したように、アプリケーション識別子は数字であってもよいし、文字コードであってもよい。
【００８６】
FFFFは無効なアプリケーション識別子であり、管理情報テーブル２０１Ａの最終エントリにはアプリケーション識別子＝FFFFが設定される。アプリケーション識別子＝FFFFは、このエントリがテーブルの最終エントリであることを示す特定データである。
【００８７】
ＤＩＭＭアドレスフィールド３０２およびオフセットフィールド３０３は、対応するアプリケーションプログラムが使用している不揮発性メモリ１０１の領域を示すアドレス情報を保持するための揮発性データメモリアドレス情報部である。ＤＩＭＭアドレスフィールド３０２に設定されるＤＩＭＭアドレスは、この領域のスタートアドレスを示し、オフセットフィールド３０３に設定されるオフセットは、この領域のサイズを示す。
【００８８】
図７は、メモリ装置２００とホストシステム１１０とのインタフェースのために使用されるＭＭＩＯ１０３Ａの例を示す。
【００８９】
ＭＭＩＯ１０３Ａのレジスタファイルは、オペレーションフィールド４０１、アプリケーションＩＤフィールド４０２、アプリケーションヒストリーフィールド４０３、ＤＩＭＭアドレスフィールド４０４、オフセットフィールド４０５、およびステータスフィールド４０６を含む。
【００９０】
ホストシステム１１０は、ＳＭバスを介して、ＭＭＩＯ１０３Ａのオペレーションフィールド４０１にオペレーションコード（コマンド）をライトする。利用可能なオペレーションコード（コマンド）の種類には、バックアップコマンドと、登録（エントリー）コマンドとが含まれていてもよい。バックアップコマンドは、メモリ装置２００に対して、揮発性メモリ１０１から不揮発性メモリ１０４にデータをセーブすることを要求する。登録（エントリー）コマンドは、メモリ装置２００に対して、管理情報の登録を要求する。この登録（エントリー）コマンドは、メモリ装置２００に対して、特定のアプリケーションプログラムの状態をリストアすべきことを要求するリカバリコマンドとしても利用可能である。
【００９１】
ホストシステム１１０は、ＭＭＩＯ１０３ＡのアプリケーションＩＤフィールド４０２に、登録またはリストア（リカバリ）対象のアプリケーションプログラムのアプリケーション識別子をライトする。
【００９２】
ホストシステム１１０は、ＭＭＩＯ１０３Ａのアプリケーションヒストリーフィールド４０３に、必要に応じて、登録またはリストア（リカバリ）対象のアプリケーションプログラムの履歴識別子をライトする。
【００９３】
ホストシステム１１０は、ＭＭＩＯ１０３ＡのＤＩＭＭアドレスフィールド４０４に、登録またはリストア（リカバリ）対象のアプリケーションプログラムに（新たに）割り当てられた揮発性メモリ１０１の領域のＤＩＭＭアドレスをライトする。ＤＩＭＭアドレスは、この領域のスタートアドレスを示す。
【００９４】
ホストシステム１１０は、ＭＭＩＯ１０３Ａのオフセットフィールド４０５に、対象のアプリケーションプログラムに割り当てられた登録またはリストア（リカバリ）対象のアプリケーションプログラムに（新たに）割り当てられた揮発性メモリ１０１の領域のオフセット（サイズ）をライトする。
【００９５】
ＭＭＩＯ１０３Ａのステータスフィールド４０６は、ＮＶＤＩＭＭコントローラ１０３の現在のステータスをホストシステム１１０に通知するために使用される。
【００９６】
もし登録が要求された管理情報内のアプリケーション識別子と同じアプリケーション識別子を含むアプリケーション識別情報部が管理情報テーブル２０１Ａ内に既に存在するならば、このアプリケーション識別子に対応するアプリケーションプログラムの状態（バックアップデータ）が、不揮発性メモリ１０４内に存在する可能性がある。したがって、この場合には、ＮＶＤＩＭＭコントローラ１０３は、このアプリケーションプログラムの状態（バックアップデータ）を、登録が要求された管理情報内のＤＩＭＭアドレスから始まる不揮発性メモリ１０４内の領域に復元する。
【００９７】
ホストシステム１１０上であるアプリケーションプログラムが起動される時、ＯＳは、このアプリケーションプログラムを識別可能な特定のアプリケーション識別子を作成する。アプリケーションプログラムは、必要とするメモリ容量の割り当てを、ＯＳに要求し、ＯＳからの応答を待つ。
【００９８】
ＯＳがこのメモリ割り当ての要求を受信した時、ＯＳは、このアプリケーションプログラムに割り当てるべき揮発性メモリ１０１内の特定領域（メモリ領域）を決定する。そして、ＯＳは、この決定された領域に関する管理情報をＭＭＩＯ１０３Ａを介して管理情報テーブル２０１Ａに登録する。
【００９９】
例えば、ＯＳは、登録コマンド、このアプリケーションプログラムのアプリケーション識別子、この領域のＤＩＭＭアドレス、およびこの領域のオフセット（サイズ）を、ＭＭＩＯ１０３Ａ内のオペレーションフィールド４０１、アプリケーションＩＤフィールド４０２、ＤＩＭＭアドレスフィールド４０４、およびオフセットフィールド４０５にライトする。そして、ＯＳは、ＮＶＤＩＭＭコントローラ１０３がこの管理情報を管理情報不揮発性メモリ２０１に格納するのを待つ。この場合、ＯＳは、ステータスフィールド４０６をポーリングしながら、ステータスフィールド４０６の値がレディーを示す値に変わるまで待ってもよい。
【０１００】
ＮＶＤＩＭＭコントローラ１０３が登録コマンドをホストシステム１１０から受信すると、ＮＶＤＩＭＭコントローラ１０３は、ステータスフィールド４０６にビジーを示す値をセットし、そして管理情報を管理情報テーブル２０１Ａに登録するための処理を実行する。この場合、登録が要求された管理情報内のアプリケーション識別子と同じアプリケーション識別子を含むアプリケーション識別情報部が管理情報テーブル２０１Ａ内に既に存在するならば、ＮＶＤＩＭＭコントローラ１０３は、リストア処理を実行する。
【０１０１】
ＮＶＤＩＭＭコントローラ１０３が、登録処理を、またはリストア処理と登録処理の双方を、完了すると、ＮＶＤＩＭＭコントローラ１０３は、ステータスフィールド４０６にレディーを示す値をセットする。
【０１０２】
ステータスフィールド４０６がレディーを示す値に変わると、ＯＳは、上述のメモリ割り当て要求に応答するために、揮発性メモリ１０１内の上述の特定領域（メモリ領域）をアプリケーションプログラムに通知する。ＯＳからの応答を待っていた上述のアプリケーションプログラムは、通知されたメモリ領域を利用することが可能となる。
【０１０３】
このようにして、管理情報テーブル２０１Ａには、揮発性メモリ１０１内の領域が割り当てられたアプリケーションそれぞれのメモリ領域を示す情報が登録される。
【０１０４】
ホストシステム１１０の電源遮断検出回路１１３が電源遮断を検出した時、ホストシステム１１０は、ＳＭバスコントローラ１１２を介して、ＭＭＩＯ１０３Ａのオペレーションフィールド４０１にバックアップコマンドをライトする。
【０１０５】
オペレーションフィールド４０１にバックアップコマンドがライトされた時、あるいはメモリ装置２００の電源遮断検出回路１０６が電源遮断を検出した時に、ＮＶＤＩＭＭコントローラ１０３は、例えば揮発性メモリ１０１の全データを不揮発性メモリ１０４にコピーすることよって、揮発性メモリ１０１のデータを不揮発性メモリ１０４にセーブする。このセーブ動作の間は、メモリ装置２００は、バックアップ電源１０５からのバックアップ電力で動作する。セーブ動作が完了すると、メモリ装置２００は、ゼロパワーステートとなる。
【０１０６】
次に、図８のフローチャートを参照して、ＮＶＤＩＭＭコントローラ１０３によって実行される登録動作およびリストア（リカバリ）動作の手順の例を示す。この登録動作およびリストア（リカバリ）動作の手順は、図３で説明したセーブおよびリストア動作に対応する。
【０１０７】
ＮＶＤＩＭＭコントローラ１０３が、ＭＩＭＯ１０３Ａを介してホストシステム１１０から登録コマンド（アプリケーションＩＤ、ＤＩＭＭアドレス、オフセットを含む）を受信すると、ＮＶＤＩＭＭコントローラ１０３は、ＭＩＭＯ１０３Ａのステータスフィールド４０６にビジーを示す値をセットする（ステップＳ５０１）。
【０１０８】
ＮＶＤＩＭＭコントローラ１０３は、登録コマンドによって指定されるアプリケーションＩＤと同じアプリケーションＩＤを有するアプリケーション識別情報部（アプリケーションＩＤフィールド）を求めて管理情報テーブル２０１Ａを検索する。つまり、ＮＶＤＩＭＭコントローラ１０３は、インデックスの値を増加しながら、管理情報テーブル２０１Ａのエントリ群を順次参照する（ステップＳ５０２、Ｓ５０３、Ｓ５０７、Ｓ５０８）。
【０１０９】
登録コマンドによって指定されるアプリケーションＩＤと同じアプリケーションＩＤを有するアプリケーション識別情報部が見つからない状態で、現在のインデックスが管理情報テーブル２０１Ａの最終エントリに達したならば（ステップＳ５０３のＹＥＳ）、ＮＶＤＩＭＭコントローラ１０３は、登録コマンドによって指定される管理情報（アプリケーションＩＤ、ＤＩＭＭアドレス、オフセット）を管理情報テーブル２０１Ａに追加する。
【０１１０】
より詳しくは、ＮＶＤＩＭＭコントローラ１０３は、管理情報テーブル２０１Ａの最終エントリの直後に新エントリを追加し、この新エントリ内のアプリケーション識別情報部に、テーブルの最終エントリを示す特定データを登録する（ステップＳ５０４）。そして、ＮＶＤＩＭＭコントローラ１０３は、現在のインデックスに対応するエントリに、つまり追加された新エントリの一つ前のエントリに、登録コマンドによって指定される管理情報（アプリケーションＩＤ、ＤＩＭＭアドレス、オフセット）を登録する（ステップＳ５０５）。そして、ＮＶＤＩＭＭコントローラ１０３は、ステータスフィールド４０６にレディーを示す値をライトする（ステップＳ５０６）。
【０１１１】
一方、現在のインデックスに対応するアプリケーション識別情報部内のアプリケーションＩＤが、登録コマンドによって指定されるアプリケーションＩＤと同じであるならば（ステップＳ５０７のＹＥＳ）、ＮＶＤＩＭＭコントローラ１０３は、検索処理を終了する。そして、ＮＶＤＩＭＭコントローラ１０３は、現在のインデックスに対応する揮発性データメモリアドレス情報部（ＤＩＭＭアドレスおよびオフセット）に基づき、登録コマンドによって指定されるアプリケーションＩＤのアプリケーションプログラムのデータがセーブされている不揮発性メモリ１０４の領域（不揮発性データメモリアドレス）を識別する（ステップＳ５０９）。つまり、ＮＶＤＩＭＭコントローラ１０３は、登録コマンドによって指定されるアプリケーションＩＤと同じＩＤを有するアプリケーションプログラムに対応する揮発性メモリ１０１の領域のアドレス情報から、アプリケーションプログラムのデータがセーブされている不揮発性メモリ１０４の領域を識別する。本実施形態では、揮発性メモリ１０１のアドレス空間と不揮発性メモリ１０４のアドレス空間は一対一で対応している。したがって、現在のインデックスに対応する揮発性データメモリアドレス情報部（ＤＩＭＭアドレスおよびオフセット）を、対応するアプリケーションプログラムのデータがセーブされている不揮発性メモリ１０４の領域（セーブ領域）を示すアドレス情報（不揮発性データメモリアドレス）として識別することができる。
【０１１２】
このように、ＮＶＤＩＭＭコントローラ１０３は、管理情報テーブル２０１Ａから、登録コマンドによって指定されるアプリケーションＩＤと同じＩＤを有するアプリケーションプログラムに対応する揮発性メモリ１０１の領域のアドレス情報を検索し、検索されたアドレス情報に基づいて、登録コマンドによって指定されるアプリケーションＩＤのアプリケーションプログラムによって電源遮断前に使用されていた揮発性メモリ１０１の領域のデータがセーブされた不揮発性メモリ１０４の領域（セーブ領域）を識別する。
【０１１３】
ＮＶＤＩＭＭコントローラ１０３は、識別された揮発性メモリ１０１の領域（セーブ領域）に格納されているデータを、登録コマンドのＤＩＭＭアドレスおよびオフセットによって指定される揮発性メモリ１０１の領域に復元する（ステップＳ５１０）。登録コマンドのＤＩＭＭアドレスは、アプリケーションプログラムに新たに割り当てられた揮発性メモリ１０１の領域を指定するアドレス情報であるので、アプリケーションプログラムの状態は、この新たに割り当てられた揮発性メモリ１０１の領域に復元される。
【０１１４】
ステップＳ５１０では、ＮＶＤＩＭＭコントローラ１０３は、オフセットによって示されるサイズのデータを、識別された不揮発性データメモリアドレスから、登録コマンドのＤＩＭＭアドレスによって指定される揮発性データメモリアドレスにコピーする。
【０１１５】
この後、ＮＶＤＩＭＭコントローラ１０３は、現在のインデックスに対応するエントリに、登録コマンドによって指定される管理情報（アプリケーションＩＤ、ＤＩＭＭアドレス、オフセット）を登録する（ステップＳ５０５）。これにより、アプリケーションプログラムの状態が復元された後、管理情報テーブル２０１Ａが自動的に更新される。この結果、検索された揮発性データメモリアドレス情報部（管理データ部）の内容（ＤＩＭＭアドレス）が、登録コマンドによって指定される最新のＤＩＭＭアドレス、つまりアプリケーションプログラムの状態が復元されたＤＩＭＭアドレスに、変更される。
【０１１６】
そして、ＮＶＤＩＭＭコントローラ１０３は、ＭＩＭＯ１０３Ａのステータスフィールド４０６にレディーを示す値をライトする（ステップＳ５０６）。
【０１１７】
なお、ここでは、登録コマンドが登録要求とリカバリ要求を兼ねる場合を例示したが、ホストシステム１１０は、電源が回復された後に、アプリケーションＩＤ、ＤＩＭＭアドレス、オフセットを含むリカバリコマンドを、ＮＶＤＩＭＭコントローラ１０３に送信してもよい。
【０１１８】
例えば、電源が回復された後に、ＯＳが起動され、そしてユーザによってあるアプリケーションプログラムの起動が要求されると、ＯＳは、このアプリケーションプログラムに新たなＤＩＭＭアドレスおよびオフセットを割り当てる。この場合、ホストシステム１１０は、リカバリコマンド、このアプリケーションプログラムのアプリケーションＩＤ、新たなＤＩＭＭアドレス、およびオフセットを、ＭＭＩＯ１０３Ａにライトしてもよい。
【０１１９】
この場合においても、ＮＶＤＩＭＭコントローラ１０３によって上述のステップＳ５０９、Ｓ５１０、Ｓ５０５、Ｓ５０６の処理が実行される。
【０１２０】
以上の処理により、たとえ電源が回復された後に、電源遮断前のＤＩＭＭアドレスと異なる新たなＤＩＭＭアドレスがアプリケーションプログラム用に割り当てられた場合であっても、このアプリケーションプログラムの電源遮断前の状態を、新たなＤＩＭＭアドレスに対応する不揮発性メモリ１０１の領域に復元することができる。
【０１２１】
図９は、図４で説明したセーブおよびリストア動作に適用される管理情報テーブル２０１Ａのデータ構造の例を示す。
【０１２２】
図９の管理情報テーブル２０１ＡにおいてはアプリケーションＩＤとして文字コードが用いられているが、これに限らず、アプリケーションＩＤは数字等であってもよい。
【０１２３】
図９の管理情報テーブル２０１Ａにおいては、上述のアプリケーションＩＤフィールド３０１、ＤＩＭＭアドレスフィールド３０２、およびオフセットフィールド３０３に加え、ＮＶＲＡＭアドレスフィールド３０４が追加されている。
【０１２４】
「final」の文字コードは無効なアプリケーション識別子であり、管理情報テーブル２０１Ａの最終エントリにはアプリケーション識別子＝finalが設定される。アプリケーション識別子＝finalは、このエントリがテーブルの最終エントリであることを示す特定データである。
【０１２５】
ＤＩＭＭアドレスフィールド３０２およびオフセットフィールド３０３は、上述したように、対応するアプリケーションプログラムによって使用される不揮発性メモリ１０１の領域を示すアドレス情報を保持するための揮発性データメモリアドレス情報部であるである。
【０１２６】
ＮＶＲＡＭアドレスフィールド３０４およびオフセットフィールド３０３は、アプリケーションプログラムに割り当てられた揮発性メモリ１０１の領域（セーブ領域）を示すアドレス情報を保持するための不揮発性データメモリアドレス情報部である。
【０１２７】
ホストシステム１１０は、全てのアプリケーションプログラムではなく、バックアップが必要されるアプリケーションプログラムに関する管理情報（アプリケーションＩＤ、ＤＩＭＭアドレス、オフセット）だけをメモリ装置２００に送信する。起動されたアプリケーションプログラムは、このアプリケーションのバックアップが必要か否かを示す情報と共に、メモリ割り当て要求をＯＳに送信してもよい。これにより、ＯＳは、バックアップが必要されるアプリケーションプログラムを容易に特定でき、バックアップが必要されるアプリケーションプログラムに関する管理情報（アプリケーションＩＤ、ＤＩＭＭアドレス、オフセット）だけをメモリ装置２００に送信することができる。
【０１２８】
ＮＶＲＡＭアドレスの割り当てに関しては、例えば、ＮＶＤＩＭＭコントローラ１０３が、不揮発性メモリ１０４の未使用領域から、バックアップが必要されるアプリケーションプログラムに割り当てるべき特定メモリ領域（セーブ領域）を自動的に選択してもよい。この場合、不揮発性メモリ１０４内のこの特定メモリ領域の先頭アドレスが、ＮＶＲＡＭアドレスフィールド３０４に登録される。
【０１２９】
あるいは、アプリケーションＩＤ、ＤＩＭＭアドレス、オフセットだけでなく、ホストシステム１１０からメモリ装置２００に、ＮＶＲＡＭアドレスを送信してもよい。ホストシステム１１０からメモリ装置２００にＮＶＲＡＭアドレスを送信するための方法としては様々な方法を使用することができる。例えば、図６のＭＭＩＯ１０３Ａに、ＮＶＲＡＭアドレスをライトするためのフィールドが追加されてもよい。
【０１３０】
オペレーションフィールド４０１にバックアップコマンドがライトされた時、あるいはメモリ装置２００の電源遮断検出回路１０６が電源遮断を検出した時に、ＮＶＤＩＭＭコントローラ１０３は、図９の管理情報テーブル２０１Ａを参照して、バックアップすべきアプリケーションプログラム毎に、このアプリケーションプログラムに割り当てられている不揮発性メモリ１０１内の領域と、このアプリケーションプログラムに割り当てられている不揮発性メモリ１０４内のセーブ領域とを特定する。そして、ＮＶＤＩＭＭコントローラ１０３は、バックアップすべき各アプリケーションプログラムの状態を、不揮発性メモリ１０１の領域から、不揮発性メモリ１０４のセーブ領域にセーブする。このセーブ動作の間は、メモリ装置２００は、バックアップ電源１０５からのバックアップ電力で動作する。セーブ動作が完了すると、メモリ装置２００は、ゼロパワーステートとなる。
【０１３１】
全てのデータではなく、バックアップが必要なアプリケーションプログラムによって使用されている揮発性メモリ１０１の領域のデータだけがセーブされるので、セーブ動作に要する時間を短縮することができる。
【０１３２】
次に、図１０のフローチャートを参照して、ＮＶＤＩＭＭコントローラ１０３によって実行される登録動作およびリストア（リカバリ）動作の手順の例を示す。この登録動作およびリストア（リカバリ）動作の手順は、図４で説明したセーブおよびリストア動作に対応する。
【０１３３】
ＮＶＤＩＭＭコントローラ１０３が、ＭＩＭＯ１０３Ａを介してホストシステム１１０から登録コマンド（アプリケーションＩＤ、ＤＩＭＭアドレス、オフセットを含む）を受信すると、ＮＶＤＩＭＭコントローラ１０３は、ＭＩＭＯ１０３Ａのステータスフィールド４０６にビジーを示す値をセットする（ステップＳ６０１）。
【０１３４】
ＮＶＤＩＭＭコントローラ１０３は、登録コマンドによって指定されるアプリケーションＩＤと同じアプリケーションＩＤを有するアプリケーション識別情報部（アプリケーションＩＤフィールド）を求めて管理情報テーブル２０１Ａを検索する。つまり、ＮＶＤＩＭＭコントローラ１０３は、インデックスの値を増加しながら、管理情報テーブル２０１Ａのエントリ群を順次参照する（ステップＳ６０２、Ｓ６０３、Ｓ６０８、Ｓ６０９）。
【０１３５】
登録コマンドによって指定されるアプリケーションＩＤと同じアプリケーションＩＤを有するアプリケーション識別情報部が見つからない状態で、現在のインデックスが管理情報テーブル２０１Ａの最終エントリに達したならば（ステップＳ６０３のＹＥＳ）、ＮＶＤＩＭＭコントローラ１０３は、登録コマンドによって指定される管理情報（アプリケーションＩＤ、ＤＩＭＭアドレス、オフセット）を管理情報テーブル２０１Ａに追加する。
【０１３６】
より詳しくは、ＮＶＤＩＭＭコントローラ１０３は、管理情報テーブル２０１Ａの最終エントリの直後に新エントリを追加し、この新エントリ内のアプリケーション識別情報部に、テーブルの最終エントリを示す特定データを登録する（ステップＳ６０４）。ＮＶＤＩＭＭコントローラ１０３は、不揮発性メモリ１０４内に、特定メモリ領域（セーブ領域）を確保する（ステップＳ６０５）。ステップＳ６０５では、ＮＶＤＩＭＭコントローラ１０３は、不揮発性メモリ１０４の未使用領域から、登録コマンドによって指定されるアプリケーションプログラムのデータをセーブするための特定メモリ領域（セーブ領域）を自動的に選択してもよい。あるいは、登録コマンドによって指定される管理情報にＮＶＲＡＭアドレスが含まれているならば、ＮＶＤＩＭＭコントローラ１０３は、このＮＶＲＡＭアドレスとオフセットとに基づいて、特定メモリ領域を確保してもよい。
【０１３７】
そして、ＮＶＤＩＭＭコントローラ１０３は、現在のインデックスに対応するエントリに、つまり追加された新エントリの一つ前のエントリに、登録コマンドによって指定される管理情報（アプリケーションＩＤ、ＤＩＭＭアドレス、オフセット）と、特定メモリ領域に対応するＮＶＲＡＭアドレスを登録する（ステップＳ６０６）。そして、ＮＶＤＩＭＭコントローラ１０３は、ＭＩＭＯ１０３Ａのステータスフィールド４０６にレディーを示す値をライトする（ステップＳ６０７）。
【０１３８】
一方、現在のインデックスに対応するアプリケーション識別情報部内のアプリケーションＩＤが、登録コマンドによって指定されるアプリケーションＩＤと同じであるならば（ステップＳ６０８のＹＥＳ）、ＮＶＤＩＭＭコントローラ１０３は、検索処理を終了する。そして、ＮＶＤＩＭＭコントローラ１０３は、現在のインデックスに対応する不揮発性データメモリアドレス情報部（ＮＶＲＡＭアドレス）に基づき、登録コマンドによって指定されるアプリケーションＩＤのアプリケーションプログラムによって電源遮断前に使用されていた揮発性メモリ１０１の領域のデータがセーブされている不揮発性メモリ１０４のセーブ領域（不揮発性データメモリアドレス）を識別する（ステップＳ６１０）。
【０１３９】
このように、ＮＶＤＩＭＭコントローラ１０３は、管理情報テーブル２０１Ａから、登録コマンドによって指定されるアプリケーションＩＤと同じＩＤを有するアプリケーションプログラムに対応するセーブ領域のアドレス情報（ＮＶＲＡＭアドレス、オフセット）を検索し、検索されたアドレス情報（ＮＶＲＡＭアドレス）を、登録コマンドによって指定されるアプリケーションＩＤのアプリケーションプログラムによって電源遮断前に使用されていた揮発性メモリ１０１の領域のデータがセーブされている不揮発性メモリ１０４のセーブ領域として識別する。
【０１４０】
ＮＶＤＩＭＭコントローラ１０３は、識別されたセーブ領域に格納されているデータを、登録コマンドのＤＩＭＭアドレスおよびオフセットによって指定される揮発性メモリ１０１の領域に復元する（ステップＳ６１１）。登録コマンドのＤＩＭＭアドレスは、このアプリケーションプログラムに新たに割り当てられた揮発性メモリ１０１の領域を指定するアドレス情報であるので、アプリケーションプログラムの状態は、この新たに割り当てられた揮発性メモリ１０１の領域に復元される。
【０１４１】
ステップＳ６１１では、ＮＶＤＩＭＭコントローラ１０３は、オフセットによって示されるサイズのデータを、識別された不揮発性データメモリアドレスから、登録コマンドのＤＩＭＭアドレスによって指定される揮発性データメモリアドレスにコピーする。
【０１４２】
この後、ＮＶＤＩＭＭコントローラ１０３は、不揮発性メモリ１０４内に、特定メモリ領域（状態が復元されたアプリケーション用のセーブ領域）を確保する（ステップＳ６０５）。ステップＳ６０５では、ＮＶＤＩＭＭコントローラ１０３は、検索されたエントリ内のＮＶＲＡＭアドレスとオフセットとに基づいて、電源遮断前と同じ不揮発性メモリ１０４内のセーブ領域を特定メモリ領域として確保してもよい。
【０１４３】
そして、ＮＶＤＩＭＭコントローラ１０３は、現在のインデックスに対応するエントリに、登録コマンドによって指定される管理情報（アプリケーションＩＤ、ＤＩＭＭアドレス、オフセット）と、特定メモリ領域に対応するＮＶＲＡＭアドレスを登録する（ステップＳ６０６）。これにより、アプリケーションプログラムの状態が復元された後、管理情報テーブル２０１Ａが自動的に更新される。この結果、検索された揮発性データメモリアドレス情報部の内容（ＤＩＭＭアドレス）が、登録コマンドによって指定される最新のＤＩＭＭアドレスに、つまりアプリケーションプログラムの状態が復元されたＤＩＭＭアドレスに、変更される。
【０１４４】
そして、ＮＶＤＩＭＭコントローラ１０３は、ＭＩＭＯ１０３Ａのステータスフィールド４０６に、レディーを示す値をライトする（ステップＳ６０７）。
【０１４５】
なお、ここでは、登録コマンドが登録要求とリカバリ要求を兼ねる場合を例示したが、ホストシステム１１０は、電源が回復された後に、アプリケーションＩＤ、ＤＩＭＭアドレス、オフセットを含むリカバリコマンドを、ＮＶＤＩＭＭコントローラ１０３に送信してもよい。
【０１４６】
例えば、電源が回復された後に、ＯＳが起動され、そしてユーザによってあるアプリケーションプログラムが起動されると、このアプリケーションプログラムは、このアプリケーションプログラムのバックアップが必要か否かを示す情報と、メモリ割り当て要求をＯＳに送信する。ＯＳは、このアプリケーションプログラムに新たなＤＩＭＭアドレスおよびオフセットを割り当てる。
【０１４７】
このアプリケーションプログラムのバックアップが必要ならば、ＯＳは、リカバリコマンド、このアプリケーションプログラムのアプリケーションＩＤ、新たなＤＩＭＭアドレス、およびオフセットを、ＭＭＩＯ１０３Ａにライトし、ＭＭＩＯ１０３Ａのステータスフィールド４０６がレディーになるのを待つ。
【０１４８】
この場合においても、ＮＶＤＩＭＭコントローラ１０３によって上述のステップＳ６１０、Ｓ６１１、Ｓ６０５、Ｓ６０６、Ｓ７０７の処理が実行される。
【０１４９】
以上の処理により、たとえ電源が回復された後に、電源遮断前のＤＩＭＭアドレスと異なる新たなＤＩＭＭアドレスがアプリケーションプログラム用に割り当てられた場合であっても、このアプリケーションプログラムの電源遮断前の状態を、新たなＤＩＭＭアドレスに対応する不揮発性メモリ１０１の領域に復元することができる。さらに、バックアップすべきアプリケーションプログラムの状態だけをセーブすることができるので、セーブ処理に要する時間を短くすることができる。またさらに、不揮発性メモリ１０４の書き換え回数を必要最小限に抑制することができるため、不揮発性メモリ１０４の寿命を延ばすことができる。またさらに、セーブ領域を任意に決定することができるので、不揮発性メモリ１０４の消去ブロック（物理ブロック）それぞれの書き換え回数を平準化することが可能となり、不揮発性メモリ１０４の延命を図ることができる。
【０１５０】
図１１は、図５で説明したセーブおよびリストア動作に適用される管理情報テーブル２０１Ａのデータ構造の例を示す。
【０１５１】
図１１の管理情報テーブル２０１ＡにおいてはアプリケーションＩＤとして文字コードが用いられているが、これに限らず、アプリケーションＩＤは数字等であってもよい。
【０１５２】
図１１の管理情報テーブル２０１Ａにおいては、図９の管理情報テーブル２０１Ａに比し、アプリケーションヒストリーフィールド３０５が追加されている。
【０１５３】
「final」の文字コードは無効なアプリケーション識別子であり、管理情報テーブル２０１Ａの最終エントリにはアプリケーション識別子＝finalが設定される。アプリケーション識別子＝finalは、このエントリがテーブルの最終エントリであることを示す特定データである。
【０１５４】
ＤＩＭＭアドレスフィールド３０２およびオフセットフィールド３０３は、上述したように、対応するアプリケーションプログラム用の不揮発性メモリ１０１の領域を示すアドレス情報を保持するための揮発性データメモリアドレス情報部である。
【０１５５】
ＮＶＲＡＭアドレスフィールド３０４およびオフセットフィールド３０３は、アプリケーションプログラム用に割り当てられた揮発性メモリ１０１の領域（セーブ領域）を示すアドレス情報を保持するための不揮発性データメモリアドレス情報部である。
【０１５６】
アプリケーションヒストリーフィールド３０５には、アプリケーションプログラムのバックアップ状態の履歴に関する履歴情報（履歴識別子）が設定される。この履歴識別子は、旧世代のバックアップ状態、新世代のバックアップ状態のような、複数世代のバックアップ状態の履歴の内の特定の世代を指定するために使用される。
【０１５７】
複数世代のバックアップ状態の履歴を管理することが必要なアプリケーションプログラムに関しては、異なる履歴識別子が付与された複数の管理情報が管理情報テーブル２０１Ａに登録される。例えば、図１１の管理情報テーブル２０１Ａにおいては、アプリケーション識別子「メモリキャッシュ」のアプリケーションプログラムに関しては、履歴識別子０が付与された管理情報と、履歴識別子１が付与された管理情報とが登録されている。履歴識別子０の管理情報は、このアプリケーションプログラムの旧世代の状態を管理するために使用される。例えば、履歴識別子０の管理情報に含まれるＮＶＲＡＭアドレスは、旧世代の状態がセーブされているセーブ領域を示す。履歴識別子１の管理情報は、このアプリケーションプログラムの新世代の状態を管理するために使用される。例えば、履歴識別子１の管理情報に含まれるＮＶＲＡＭアドレスは、新世代の状態がセーブされているセーブ領域、あるいは新世代の状態がセーブされるべきセーブ領域を示す。
【０１５８】
一つの世代のみのバックアップ状態の管理を必要するアプリケーションプログラムに関しては、履歴識別子０が付与された管理情報のみが管理情報テーブル２０１Ａに登録される。
【０１５９】
ホストシステム１１０は、全てのアプリケーションプログラムではなく、バックアップが必要されるアプリケーションプログラムに関する管理情報（アプリケーションＩＤ、履歴ＩＤ（履歴識別子）、ＤＩＭＭアドレス、オフセット）だけをメモリ装置２００に送信する。起動されたアプリケーションプログラムは、このアプリケーションのバックアップが必要か否かを示す情報と履歴ＩＤと共に、メモリ割り当て要求をＯＳに送信してもよい。
【０１６０】
ＮＶＲＡＭアドレスの割り当てに関しては、例えば、ＮＶＤＩＭＭコントローラ１０３が、不揮発性メモリ１０４の未使用領域から、バックアップが必要されるアプリケーションプログラム用に割り当てるべき特定メモリ領域（セーブ領域）を自動的に選択してもよい。この場合、不揮発性メモリ１０４内のこの特定メモリ領域の先頭アドレスが、ＮＶＲＡＭアドレスフィールド３０４に登録される。異なる履歴ＩＤを有する同一のアプリケーションプログラムについては、これら履歴ＩＤそれぞれに対応する複数の特定メモリ領域が割り当てられる。
【０１６１】
オペレーションフィールド４０１にバックアップコマンドがライトされた時、あるいはメモリ装置２００の電源遮断検出回路１０６が電源遮断を検出した時に、ＮＶＤＩＭＭコントローラ１０３は、図１１の管理情報テーブル２０１Ａを参照して、バックアップすべきアプリケーションプログラム毎に、このアプリケーションプログラムによって使用されている揮発性メモリ１０１内の領域と、このアプリケーションプログラムに割り当てられている不揮発性メモリ１０４内のセーブ領域とを特定する。そして、ＮＶＤＩＭＭコントローラ１０３は、バックアップすべき各アプリケーションプログラムの状態を、不揮発性メモリ１０１の領域から、不揮発性メモリ１０４のセーブ領域にセーブする。
【０１６２】
異なる履歴ＩＤを有する同一のアプリケーションプログラムについては、ＮＶＤＩＭＭコントローラ１０３は、このアプリケーションプログラムの状態を、揮発性メモリ１０１内の領域から、最新の履歴ＩＤに対応する不揮発性メモリ１０４内のセーブ領域にセーブする。
【０１６３】
セーブ動作の間は、メモリ装置２００は、バックアップ電源１０５からのバックアップ電力で動作する。セーブ動作が完了すると、メモリ装置２００は、ゼロパワーステートとなる。
【０１６４】
全てのデータではなく、バックアップが必要なアプリケーションプログラムの状態だけがセーブされるので、セーブ動作に要する時間を短縮することができる。
【０１６５】
次に、図１２のフローチャートを参照して、ＮＶＤＩＭＭコントローラ１０３によって実行される登録動作およびリストア（リカバリ）動作の手順の例を示す。この登録動作およびリストア（リカバリ）動作の手順は、図５で説明したセーブおよびリストア動作に対応する。
【０１６６】
ＮＶＤＩＭＭコントローラ１０３が、ＭＩＭＯ１０３Ａを介してホストシステム１１０から登録コマンド（アプリケーションＩＤ、履歴ＩＤ、ＤＩＭＭアドレス、オフセットを含む）を受信すると、ＮＶＤＩＭＭコントローラ１０３は、ＭＩＭＯ１０３Ａのステータスフィールド４０６にビジーを示す値をセットする（ステップＳ７０１）。
【０１６７】
ＮＶＤＩＭＭコントローラ１０３は、登録コマンドによって指定されるアプリケーションＩＤおよび履歴ＩＤの組み合わせと同じアプリケーションＩＤおよび履歴ＩＤの組み合わせを求めて、管理情報テーブル２０１Ａを検索する。つまり、ＮＶＤＩＭＭコントローラ１０３は、インデックスの値を増加しながら、管理情報テーブル２０１Ａのエントリ群を順次参照する（ステップＳ７０２、Ｓ７０３、Ｓ７０８、Ｓ７０９）。
【０１６８】
登録コマンドによって指定されるアプリケーションＩＤおよび履歴ＩＤの組み合わせと同じアプリケーションＩＤと履歴ＩＤの組み合わせが見つからない状態で、現在のインデックスが管理情報テーブル２０１Ａの最終エントリに達したならば（ステップＳ７０３のＹＥＳ）、ＮＶＤＩＭＭコントローラ１０３は、登録コマンドによって指定される管理情報（アプリケーションＩＤ、履歴ＩＤ、ＤＩＭＭアドレス、オフセット）を管理情報テーブル２０１Ａに追加する。
【０１６９】
より詳しくは、ＮＶＤＩＭＭコントローラ１０３は、管理情報テーブル２０１Ａの最終エントリの直後に新エントリを追加し、この新エントリ内のアプリケーション識別情報部に、テーブルの最終エントリを示す特定データを登録する（ステップＳ７０４）。ＮＶＤＩＭＭコントローラ１０３は、不揮発性メモリ１０４内に、特定メモリ領域（登録コマンドによって指定されるアプリケーション用のセーブ領域）を確保する（ステップＳ７０５）。ステップＳ７０５では、ＮＶＤＩＭＭコントローラ１０３は、不揮発性メモリ１０４の未使用領域から、登録コマンドによって指定されるアプリケーションプログラムに割り当てるべき特定メモリ領域を自動的に選択してもよい。
【０１７０】
そして、ＮＶＤＩＭＭコントローラ１０３は、現在のインデックスに対応するエントリに、つまり追加された新エントリの一つ前のエントリに、登録コマンドによって指定される管理情報（アプリケーションＩＤ、履歴ＩＤ、ＤＩＭＭアドレス、オフセット）と、特定メモリ領域に対応するＮＶＲＡＭアドレスを登録する（ステップＳ７０６）。そして、ＮＶＤＩＭＭコントローラ１０３は、ＭＩＭＯ１０３Ａのステータスフィールド４０６にレディーを示す値をライトする（ステップＳ７０７）。
【０１７１】
一方、現在のインデックスに対応するアプリケーションＩＤおよび履歴ＩＤの組み合わせが、登録コマンドによって指定されるアプリケーションＩＤおよび履歴ＩＤの組み合わせと同じであるならば（ステップＳ７０８のＹＥＳ）、ＮＶＤＩＭＭコントローラ１０３は、検索処理を終了する。そして、ＮＶＤＩＭＭコントローラ１０３は、現在のインデックスに対応する不揮発性データメモリアドレス情報部に基づき、登録コマンドによって指定されるアプリケーションＩＤおよび履歴ＩＤの組み合わせに対応するアプリケーションプログラムによって使用されていた揮発性メモリ１０１の領域のデータがセーブされている不揮発性メモリ１０４のセーブ領域（不揮発性データメモリアドレス）を識別する（ステップＳ７１０）。
【０１７２】
このように、ＮＶＤＩＭＭコントローラ１０３は、管理情報テーブル２０１Ａから、登録コマンドによって指定されるアプリケーションＩＤおよび履歴ＩＤの組み合わせと同じアプリケーションＩＤおよび履歴ＩＤの組み合わせに関連付けられたエントリを検索し、検索されたエントリによって示される不揮発性メモリ１０４内のセーブ領域を、登録コマンドによって指定されるアプリケーションＩＤおよび履歴ＩＤの組み合わせに対応するアプリケーションプログラムの状態がセーブされている不揮発性メモリ１０４のセーブ領域として識別する。
【０１７３】
ＮＶＤＩＭＭコントローラ１０３は、識別されたセーブ領域に格納されているデータを、登録コマンドのＤＩＭＭアドレスによって指定される揮発性メモリ１０１の領域に復元する（ステップＳ７１１）。
【０１７４】
この後、ＮＶＤＩＭＭコントローラ１０３は、不揮発性メモリ１０４内に、特定メモリ領域（状態が復元されたアプリケーション用のセーブ領域）を確保する（ステップＳ７０５）。ステップＳ７０５では、ＮＶＤＩＭＭコントローラ１０３は、検索されたエントリ内のＮＶＲＡＭアドレスとオフセットとに基づいて、電源遮断前と同じ不揮発性メモリ１０４内の領域を特定メモリ領域として確保してもよい。
【０１７５】
そして、ＮＶＤＩＭＭコントローラ１０３は、現在のインデックスに対応するエントリに、つまり追加された新エントリの一つ前のエントリに、登録コマンドによって指定される管理情報（アプリケーションＩＤ、履歴ＩＤ、ＤＩＭＭアドレス、オフセット）と、特定メモリ領域に対応するＮＶＲＡＭアドレスを登録する（ステップＳ７０６）。これにより、アプリケーションプログラムの状態が復元された後、検索されたエントリ内のＤＩＭＭアドレスが、登録コマンドによって指定される最新のＤＩＭＭアドレス（アプリケーションプログラムの状態が復元されたＤＩＭＭアドレス）に更新される。そして、ＮＶＤＩＭＭコントローラ１０３は、ＭＩＭＯ１０３Ａのステータスフィールド４０６に、レディーを示す値をライトする（ステップＳ６０７）。
【０１７６】
なお、ＯＳは、あるアプリケーションプログラムのバックアップデータが復元された後に、このアプリケーションのアプリケーション識別子と、このアプリケーションの現在の履歴識別子に＋１を加えることによって得られる新たな履歴識別子と、このアプリケーションプログラムのバックアップデータが復元された領域を示すＤＩＭＭアドレスおよびオフセットとを、ＭＭＩＯ１０３Ａを介して管理情報テーブル２０１Ａに登録してもよい。この場合、ＮＶＤＩＭＭコントローラ１０３は、このアプリケーションプログラムの新世代の状態をセーブするためのセーブ領域を割り当ててもよい。
【０１７７】
この後、電源遮断が発生すると、ＮＶＤＩＭＭコントローラ１０３は、このアプリケーションプログラムによって使用されている揮発性メモリ１０１の領域のデータを、このアプリケーションプログラムの新世代の状態をセーブするためのセーブ領域にセーブする。これにより、このアプリケーションプログラムの旧世代の状態が、あるセーブ領域に維持されている状態で、このアプリケーションプログラムの新世代の状態を、不揮発性メモリ１０４の別のセーブ領域にセーブすることができる。
【０１７８】
以上の処理により、バックアップ対象のアプリケーションプログラムの旧世代の状態または新世代の状態を、揮発性メモリ１０１の任意の領域に選択的に復元することが可能となる。
【０１７９】
以上説明したように、本実施形態によれば、ホストシステム１１０から受信されたアプリケーション識別子によって指定されるアプリケーションプログラムのバックアップデータを、ホストシステム１１０から受信されたアドレス情報に対応する揮発性メモリ１０１内の領域に復元することができる。よって、たとえあるアプリケーションプログラムに電源遮断前とは異なる揮発性メモリ１０１内の領域が新たに割り当てられた場合であっても、このアプリケーションプログラムのバックアップされたデータを、不揮発性メモリ１０４から、この新たに割り当てられた揮発性メモリ１０１内の領域に適切に復元することができる。よって、揮発性メモリ１０１の状態をホストシステム１１０にとって有用な状態に復元することができる。
【０１８０】
なお、本実施形態では、アプリケーションプログラムによって使用されている揮発性メモリ１０１の領域の内容を不揮発性メモリ１０４にバックアップする場合を主として説明したが、ＯＳによって使用されている揮発性メモリ１０１内の領域の内容を不揮発性メモリ１０４にバックアップしてもよい。この場合、ＯＳによって使用されている揮発性メモリ１０１内の領域の内容は、ＯＳによって電源遮断前に使用されていた発性メモリ１０１内の領域と同じ特定の領域に復元してもよい。
【０１８１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１８２】
１０１…揮発性メモリ、１０３…ＮＶＤＩＭＭコントローラ、１０３Ａ…ＭＭＩＯ、１０４…揮発性メモリ、１１０…ホストシステム、２０１…管理情報不揮発性メモリ、２０１Ａ…管理情報テーブル。
【図１】
0006479608.tif 000002
【図２】
0006479608.tif 000003
【図３】
0006479608.tif 000004
【図４】
0006479608.tif 000005
【図５】
0006479608.tif 000006
【図６】
0006479608.tif 000007
【図７】
0006479608.tif 000008
【図８】
0006479608.tif 000009
【図９】
0006479608.tif 000010
【図１０】
0006479608.tif 000011
【図１１】
0006479608.tif 000012
【図１２】
0006479608.tif 000013