JP2017045379A - メモリ装置およびメモリ制御方法 - Google Patents

メモリ装置およびメモリ制御方法 Download PDF

Info

Publication number
JP2017045379A
JP2017045379A JP2015169090A JP2015169090A JP2017045379A JP 2017045379 A JP2017045379 A JP 2017045379A JP 2015169090 A JP2015169090 A JP 2015169090A JP 2015169090 A JP2015169090 A JP 2015169090A JP 2017045379 A JP2017045379 A JP 2017045379A
Authority
JP
Japan
Prior art keywords
area
volatile memory
memory
program
identifier
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015169090A
Other languages
English (en)
Other versions
JP6479608B2 (ja
Inventor
忠明 木下
Tadaaki Kinoshita
忠明 木下
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2015169090A priority Critical patent/JP6479608B2/ja
Priority to US14/936,356 priority patent/US9946610B2/en
Priority to CN201510922945.3A priority patent/CN106484571B/zh
Publication of JP2017045379A publication Critical patent/JP2017045379A/ja
Application granted granted Critical
Publication of JP6479608B2 publication Critical patent/JP6479608B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2069Management of state, configuration or failover
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2015Redundant power supplies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Power Sources (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】揮発性メモリの状態をホストシステムにとって有用な状態に復元することができるメモリ装置を実現する。
【解決手段】実施形態によれば、メモリ装置は、電源遮断のイベントに応答して、揮発性メモリのデータを第1の不揮発性メモリにセーブする。電源の回復後に、メモリ装置は、ホストシステムによって実行される複数のプログラムの識別子と前記複数のプログラムによって使用されている前記揮発性メモリの複数の領域それぞれのアドレス情報との対応関係を示す管理情報と、ホストシステムから受信される第1プログラムの識別子とに基づいて、前記第1プログラムによって電源遮断前に使用されていた前記揮発性メモリの領域のデータがセーブされている前記第1の不揮発性メモリの領域を識別し、前記識別された前記揮発性メモリの領域に格納されているデータを前記揮発性メモリの前記第1領域に復元する。
【選択図】図1

Description

本発明の実施形態は、揮発性メモリのデータをバックアップする技術に関する。
近年、ダイナミックRAM(DRAM)のような揮発性メモリのデータが電源故障またはシステムクラッシュ等によって消失されるのを防ぐための技術が注目されている。
このような技術を実現するため、バックアップ機能付きのメモリ装置が開発され始めている。
特開2000−222290号公報
しかし、従来では、バックアップされたデータを、揮発性メモリ内の任意の領域に復元するための技術については考慮されていない。
本発明が解決しようとする課題は、バックアップされたデータを揮発性メモリ内の任意の領域に復元することができるメモリ装置およびメモリ制御方法を提供することである。
実施形態によれば、メモリ装置は、揮発性メモリと、第1の不揮発性メモリと、第2の不揮発性メモリと、コントローラとを備える。前記第2の不揮発性メモリは、ホストシステムによって実行される複数のプログラムの識別子と前記複数のプログラムによって使用されている前記揮発性メモリの複数の領域それぞれのアドレス情報との対応関係を示す管理情報を格納する。前記コントローラは、電源遮断のイベントに応答して、前記揮発性メモリのデータを前記第1の不揮発性メモリにセーブする。前記コントローラは、電源の回復後に、前記複数のプログラムの内の第1プログラムの識別子と、前記ホストシステムによって前記第1プログラムに新たに割り当てられた前記揮発性メモリの第1領域を示すアドレス情報とを、前記ホストシステムから受信する。前記コントローラは、前記第1プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報に基づいて、前記第1プログラムによって電源遮断前に使用されていた前記揮発性メモリの領域のデータがセーブされている前記第1の不揮発性メモリの領域を識別する。前記コントローラは、前記識別された前記揮発性メモリの領域に格納されているデータを、前記揮発性メモリの前記第1領域に復元する。
実施形態に係るメモリ装置の構成例を示すブロック図。 バックアップ機能付きの通常のメモリ装置によって実行されるセーブおよびリストア動作を説明するための図。 同実施形態のメモリ装置よって実行されるセーブおよびリストア動作を説明するための図。 同実施形態のメモリ装置によって実行されるセーブおよびリストア動作の別の例を説明するための図。 同実施形態のメモリ装置によって実行されるセーブおよびリストア動作のさらに別の例を説明するための図。 同実施形態のメモリ装置によって使用される管理情報テーブルの例を示す図。 同実施形態のメモリ装置とホストシステムとの間のインタフェースのためのメモリマップドIOの内容の例を示す図。 同実施形態のメモリ装置のコントローラによって実行される登録動作およびリストア(リカバリ)動作の手順を示すフローチャート。 同実施形態のメモリ装置によって使用される管理情報テーブルの別の例を示す図。 図9の管理情報テーブルを使用して同実施形態のメモリ装置のコントローラによって実行される登録動作およびリストア(リカバリ)動作の手順を示すフローチャート。 同実施形態のメモリ装置によって使用される管理情報テーブルのさらに別の例を示す図。 図11の管理情報テーブルを使用して同実施形態のメモリ装置のコントローラによって実行される登録動作およびリストア(リカバリ)動作の手順を示すフローチャート。
以下、図面を参照して、実施形態を説明する。
まず、図1を参照して、一実施形態に係るメモリ装置の構成を説明する。
このメモリ装置200は、例えば、デュアル・インライン・メモリモジュール(DIMM)として実現されている。DIMMは、ホストシステム110に設けられたDIMM規格のメモリソケットに挿入可能なメモリモジュールである。より詳しくは、メモリ装置200は、不揮発性メモリを備えており、バックアップ機能を有するNV−DIMM(Non−Volatile Dual In−line Memory Module)として機能することができる。
通常動作の期間中においては、メモリ装置200は、ホストシステム110にとっては通常のDIMMとして見える。電源遮断(パワーロス)のイベントに応答して、メモリ装置200は、メモリ装置200内の揮発性メモリのデータをメモリ装置200内の不揮発性メモリにセーブすることができる。
これにより、たとえ、予期しない停電、システムクラッシュ等が発生しても、メモリ装置200は、揮発性メモリのデータを永続的に維持することができ、これによって揮発性メモリのデータの消失を防ぐことができる
さらに、揮発性メモリのデータのリカバリが必要な時、メモリ装置200は、不揮発性メモリから揮発性メモリのデータを復元(リストア)することができる。
この場合、メモリ装置200は、ホストシステム110によって指定された任意のプログラムによって使用されていた揮発性メモリの領域のデータを、ホストシステム110によって指定された揮発性メモリ内の任意の領域(アドレス空間)に復元することができる。
これにより、あるプログラムが電源遮断前に使用していた揮発性メモリのある領域のデータを、このプログラムのために新たに割り当てられていた揮発性メモリ内の別の領域に復元することができる。
よって、たとえこのプログラムに電源遮断前とは異なる揮発性メモリ内の領域が新たに割り当てられた場合であっても、このプログラムのデータを、不揮発性メモリから、この新たに割り当てられた領域に適切に戻すことができる。
ホストシステム110は、サーバ、パーソナルコンピュータのような情報処理装置である。
ホストシステム110は、メモリバスコントローラ111、システムマネージメント(SM)バスコントローラ112、電源遮断検出回路113、CPU114等を備える。
メモリバスコントローラ111は、メモリソケットに挿入されたメモリ装置200にメモリバスを介して電気的に接続される。ホストシステム110は、複数のメモリソケットを有している。図1においては、メモリ装置200および別のメモリ装置200’が異なる2つのメモリソケットに挿入されている場合が想定されている。別のメモリ装置200’は通常のDIMMであってもよいし、NV−DIMMであってもよい。メモリバスコントローラ111は、CPU114の制御の下、メモリ装置200およびメモリ装置200’の各々をメモリバスを介してライトアクセスすることができ、またメモリ装置200およびメモリ装置200’の各々をメモリバスを介してリードアクセスすることができる。
例えば、メモリ装置200は、バックアップが必要な幾つかの特定のプログラムのデータの格納に使用されてもよい。メモリ装置200’が通常のDIMMの場合には、このメモリ装置200’は、バックアップが不要な別の幾つかのプログラムのデータの格納に使用されてもよい。メモリ装置200のメモリアドレス空間には、重要なデータ(クリティカルデータ)を扱う幾つかのアプリケーションプログラムのための領域それぞれが割り当てられてもよい。
SMバスコントローラ112は、システム管理バス(SMバス)を介してメモリ装置200およびメモリ装置200’の各々と通信することができる。SMバスはI2Cバスのようなシリアルバスである。
SMバスコントローラ112は、SMバスを介して各メモリ装置からSPD(Serial presence Detect)データをリードすることができる。SPDデータは、メモリ装置のタイプ、メモリ装置の構成、メモリ装置の特徴、等を示すデータである。
さらに、SMバスコントローラ112は、データのセーブおよびリストアに関する、様々なコマンドおよび情報を、SMバスを介してメモリ装置200に送信することができる。これらコマンドの例には、バックアップコマンド(セーブ指示)、リストア(リカバリ)コマンド、登録コマンド、等が含まれてもよい。バックアップコマンド(セーブ指示)は、メモリ装置200に対し、揮発性メモリのデータを不揮発性メモリにセーブすることを指示するコマンドである。リストア(リカバリ)コマンドは、メモリ装置200に対し、揮発性メモリのデータ(メモリ状態)を復元すべきことを指示するコマンドである。登録コマンドは、セーブおよびリストア動作に必要な管理情報をメモリ装置200内に登録するためのコマンドである。登録コマンドによって登録されるべき管理情報には、少なくとも、あるプログラムの識別子と、ホストシステム110によってこのプログラムに新たに割り当てられた揮発性メモリの領域を示すアドレス情報とが含まれる。
電源遮断検出回路113は、少なくとも、ホストシステム110からメモリ装置200に供給されるメモリ電源の状態を監視する。電源遮断検出回路113は、メモリ電源の状態だけでなく、ホストシステム110のシステム電源の状態を監視してもよい。電源遮断検出回路113がメモリ電源またはシステム電源の電源遮断を検出した時、SMバスコントローラ112は、SMバスを介してバックアップコマンド(セーブ指示)をメモリ装置200に送信してもよい。
メモリソケットが、セーブを指示するためのハードウェア信号(セーブ信号)がアサインされたピンを有する場合には、このハードウェア信号(セーブ信号)をセーブ指示として利用することもできる。ホストシステム110は、電源遮断の検出に応答して、このハードウェア信号(セーブ信号)をアクティブステートに設定してもよい。
CPU114は、ホストシステム110の様々なコンポーネントを制御するように構成されたプロセッサである。CPU114は、様々なプログラムを実行する。これらプログラムには、オペレーティングシステム(OS)および様々なアプリケーションプログラムが含まれる。
メモリ装置200は、揮発性メモリ101、SPDメモリ102、NVDIMMコントローラ103、不揮発性メモリ104、バックアップ電源105、電源遮断検出回路106、管理情報不揮発性メモリ201等を備える。
揮発性メモリ101は、ホストシステム110によって利用されるデータが格納されるDIMMとして機能するメモリである。揮発性メモリ101は、例えば、複数のDRAMチップを備える。
SPDメモリ102は、SPDデータを格納する不揮発性メモリである。SPDメモリ102は、例えば、E2PROMから構成される。
NVDIMMコントローラ103は、揮発性メモリ101から不揮発性メモリ104にデータをセーブするためのセーブ動作と、不揮発性メモリ104から揮発性メモリ101にデータを復元するためのリストア動作とを実行するように構成された制御ロジックを含む。
NVDIMMコントローラ103は、SMバスを介してホストシステム110とのインタフェースを実行するためのメモリマップドIO(MMIO)103を備えている。MMIO103Aは、メモリアドレス空間にマッピングされたレジスタである。
不揮発性メモリ104は、揮発性メモリ101のデータをバックアップするために使用される。不揮発性メモリ104は、揮発性メモリ101の容量以上の容量を有する。不揮発性メモリ104は、NANDフラッシュメモリであってもよいし、MRAM(Magnetoresistive Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような別のタイプの不揮発性メモリであってもよい。
バックアップ電源105は、電源遮断時に、データを揮発性メモリ101から不揮発性メモリ104にセーブするために必要な電力(バックアップ電力)をメモリ装置200に供給する電源ソースである。バックアップ電源105は、キャパシタによって実現されていてもよい。バックアップ電源105は、メモリ装置200に内蔵されていてもよいし、電源ケーブルを介してメモリ装置200に外部的に接続されてもよい。
電源遮断検出回路106は、ホストシステム110から供給される電力(メモリ電源)の状態を監視する。電源遮断検出回路106がメモリ電源の遮断を検出した時、電源遮断検出回路106は、この電源遮断を示すハードウェア信号をNVDIMMコントローラ103に送信する。
NVDIMMコントローラ103は、電源遮断のイベントに応答して、すなわち、電源遮断検出回路106による電源遮断の検出、またはホストシステム110からのセーブ指示に応答して、揮発性メモリ101から不揮発性メモリ104にデータをセーブする。電源遮断の間、メモリ装置200はバックアップ電源105から供給されるバックアップ電力によって動作することができる。あるいは、別の実施形態では、メモリ装置200は、電源遮断の間、ホストシステム110から供給されるバックアップ電力によって動作してもよい。
管理情報不揮発性メモリ201は、管理情報(管理情報テーブル201A)を格納するために使用される不揮発性メモリである。管理情報不揮発性メモリ201は、例えば、E2PROMであってもよい。
管理情報(管理情報テーブル201A)はデータのセーブおよびリストア動作のために必要な情報であり、ホストシステム110によって管理情報不揮発性メモリ201に登録される。
管理情報テーブル201Aは、ホストシステム110によって実行される複数のプログラムの識別子とこれら複数のプログラムによって使用されている揮発性メモリ101の複数の領域それぞれのアドレス情報との対応関係を示す。
例えば、OSによってあるアプリケーションプログラムに揮発性メモリ101のある領域(領域#1)が割り当てられ、OSによって別のアプリケーションプログラムに揮発性メモリ101の別の領域(領域#2)が割り当てられた場合を想定する。この場合、管理情報テーブル201Aは、あるアプリケーションプログラムの識別子(APL#1)に関連付けられた管理データ部と、別のアプリケーションプログラムの識別子(APL#2)に関連付けられた管理データ部とを含む。
識別子(APL#1)に関連付けられた管理データ部は、領域#1を示すアドレス情報を含む。このアドレス情報は、領域#1のスタートアドレスと、領域#1のサイズ(オフセット量)を示す。
識別子(APL#2)に関連付けられた管理データ部は、領域#2を示すアドレス情報を含む。このアドレス情報は、領域#2のスタートアドレスと、領域#2のサイズ(オフセット量)を示す。
ホストシステム110は、SMバスを介してMMIO103AをアクセスすることによってNVDIMMコントローラ103に管理情報の登録を指示してもよいし、SMバスを介して不揮発性メモリ201を直接的にアクセスすることによって管理情報不揮発性メモリ201に管理情報を登録してもよい。
以下、図2〜図4を参照して、NVDIMMコントローラ103によって実行されるセーブおよびリストア動作の概要を説明する。
図2〜図4では、図示の簡単化のために領域#1〜#nは同じ大きさで図示されているが、実際には、領域#1〜#nは、対応するアプリケーションプログラムが必要とするサイズ(容量)を有している。
図2は、バックアップ機能付きの通常のメモリ装置によって実行されるセーブおよびリストア動作を示す。
バックアップ機能付きの通常のメモリ装置は、揮発性メモリ101から不揮発性メモリ104にデータをセーブし、そしてセーブされたデータを、揮発性メモリ101の元の場所に戻す。したがって、アプリケーションプログラム(APL#1)のデータ(状態またはメモリ状態とも云う)は、不揮発性メモリ104から、電源遮断前にアプリケーションプログラム(APL#1)に割り当てられていた領域#1と同じ領域#1に復元される。同様に、他のアプリケーションプログラムそれぞれの状態も、電源遮断前にこれらアプリケーションプログラム用に割り当てられていた領域と同じ領域それぞれに復元される。
図3は、NVDIMMコントローラ103によって実行されるセーブおよびリストア動作の例を示す。
電源遮断時に、NVDIMMコントローラ103は、例えば、揮発性メモリ101のデータ(全てのデータ)を不揮発性メモリ104にセーブする。
電源の回復後に、NVDIMMコントローラ103は、あるプログラム(第1プログラム)の識別子と、ホストシステム110によってこのプログラム(第1プログラム)に新たに割り当てられた揮発性メモリ101の領域(第1領域)を示すアドレス情報とを、MMIO103Aを介してホストシステム110から受信する。そして、NVDIMMコントローラ103は、第1プログラムの識別子と管理情報テーブル201Aとに基づいて、第1プログラムによって電源遮断前に使用されていた揮発性メモリ101の領域のデータがセーブされている不揮発性メモリ104の領域を識別する。
例えば、電源の回復後に、OSが、領域#1を、アプリケーションプログラム(APL#2)のために新たに割り当てた場合を想定する。
この場合、OSは、MMIO103Aを介して、このアプリケーションプログラムの識別子APL#2と、揮発性メモリ101の領域#1を示すアドレス情報とをMMIO103Aを介してNVDIMMコントローラ103に通知する。
NVDIMMコントローラ103は、管理情報テーブル201Aから、受信されたアプリケーション識別子APL#2と同じアプリケーション識別子を有するアプリケーションプログラムに対応する揮発性メモリ101の領域のアドレス情報を検索する。そして、NVDIMMコントローラ103は、この検索されたアドレス情報(=領域#2を示すアドレス情報)に基づいて、アプリケーションプログラム(APL#2)のデータがセーブされた不揮発性メモリ104の領域(領域#2)を識別することができる。
そして、NVDIMMコントローラ103は、識別された不揮発性メモリ104の領域#2に格納されているデータを、揮発性メモリ101の領域#1に復元(リストア)する。これにより、このアプリケーションプログラム(APL#2)の電源遮断前の状態、つまり電源遮断前の揮発性メモリ101の領域#2の内容を、不揮発性メモリ104から、アプリケーションプログラム(APL#2)に新たに割り当てられた揮発性メモリ101の領域#1に適切に復元することができる。
同様にして、他のアプリケーションプログラムそれぞれの状態も、これらアプリケーションプログラムに新たに割り当てられた揮発性メモリ101の領域に復元される。
図4は、NVDIMMコントローラ103によって実行されるセーブおよびリストア動作の別の例を示す。
図4のセーブおよびリストア動作は、バックアップすべき特定の幾つかのアプリケーションプログラムの状態だけを不揮発性メモリ104にセーブし且つこれら特定の幾つかのアプリケーションプログラムの状態を揮発性メモリ101の任意の領域にそれぞれ復元することを可能にする。
図4のセーブおよびリストア動作を実現するために使用される管理情報テーブル201Aは、バックアップされるべき一つ以上のプログラムの識別子と、これら一つ以上のプログラムによって使用されている揮発性メモリ101の一つ以上の領域それぞれのアドレス情報と、これら一つ以上のプログラムの状態をセーブするための不揮発性メモリ104の一つ以上のセーブ領域それぞれのアドレス情報との対応関係を示す。
いま、バックアップ対象のプログラムがアプリケーションプログラム(APL#2)とアプリケーションプログラム(APL#n)であり、アプリケーションプログラム(APL#2)が揮発性メモリ101の領域#2を使用しており、アプリケーションプログラム(APL#n)が揮発性メモリ101の領域#nを使用している場合を想定する。
NVDIMMコントローラ103は、不揮発性メモリ104のセーブ領域#1をバックアップ対象のアプリケーションプログラム(APL#2)用に割り当ててもよく、さらに不揮発性メモリ104の別のセーブ領域#2をバックアップ対象のアプリケーションプログラム(APL#n)用に割り当ててもよい。
この場合、管理情報テーブル201Aにおいては、揮発性メモリ101の領域#2を示すアドレス情報および不揮発性メモリ104のセーブ領域#1を示すアドレス情報が、アプリケーション識別子APL#2に関連付けられた状態で登録される。さらに、揮発性メモリ101の領域#nを示すアドレス情報および不揮発性メモリ104のセーブ領域#2を示すアドレス情報が、アプリケーション識別子APL#nに関連付けられた状態で登録される。
電源遮断時に、NVDIMMコントローラ103は、管理情報テーブル201Aに基づき、アプリケーションプログラム(APL#2)によって使用されている揮発性メモリ101の領域#2のデータを、不揮発性メモリ104のセーブ領域#1にセーブする。さらに、NVDIMMコントローラ103は、管理情報テーブル201Aに基づき、アプリケーションプログラム(APL#n)によって使用されている揮発性メモリ101の領域#nのデータを、不揮発性メモリ104のセーブ領域#2にセーブする。
電源の回復後に、NVDIMMコントローラ103は、あるプログラム(第1プログラム)のアプリケーション識別子と、ホストシステム110によってこのプログラム(第1プログラム)に新たに割り当てられた揮発性メモリ101の領域(第1領域)を示すアドレス情報とを、MMIO103Aを介してホストシステム110から受信する。
例えば、電源の回復後に、OSが、揮発性メモリ101の領域#2を、バックアップ対象のアプリケーションプログラム(APL#n)に新たに割り当てた場合を想定する。この場合、OSは、MMIO103Aを介して、このアプリケーションプログラム(APL#n)のアプリケーション識別子APL#nと、揮発性メモリ101の領域#2を示すアドレス情報とをMMIO103Aを介してNVDIMMコントローラ103に通知する。
NVDIMMコントローラ103は、管理情報テーブル201Aから、アプリケーション識別子APL#nと同じアプリケーション識別子を有するアプリケーションプログラムに対応するセーブ領域のアドレス情報を検索する。
そして、NVDIMMコントローラ103は、検索されたセーブ領域のアドレス情報から、アプリケーションプログラム(APL#n)によって電源遮断前に使用されていた揮発性メモリ101の領域#nのデータがセーブされているセーブ領域(セーブ領域#2)を識別することができる。
そして、NVDIMMコントローラ103は、セーブ領域#2に格納されているデータを揮発性メモリ101の領域#2に復元する。
これにより、このアプリケーションプログラム(APL#n)の電源遮断前の状態、つまり揮発性メモリ101の領域#nの電源遮断前の内容を、不揮発性メモリ104から、アプリケーションプログラム(APL#n)に新たに割り当てられた揮発性メモリ101の領域#2に適切に復元することができる。
同様にして、アプリケーションプログラム(APL#2)の状態も、アプリケーションプログラム(APL#2)に新たに割り当てられた揮発性メモリ101の領域#4に復元される。
図5は、NVDIMMコントローラ103によって実行されるセーブおよびリストア動作のさらに別の例を示す。
図5のセーブおよびリストア動作は、バックアップ対象のアプリケーションプログラムの状態だけを不揮発性メモリ104の特定のセーブ領域にセーブするという図4のセーブおよびリストア動作を応用することによって、バックアップ対象のアプリケーションプログラムの旧世代の状態または新世代の状態のいずれかを、揮発性メモリ101の任意の領域に復元することを可能にする。
図5のセーブおよびリストア動作を実現するために使用される管理情報テーブル201Aにおいては、バックアップされるべきプログラム群のアプリケーション識別子に加え、これらプログラム群のバックアップ状態の履歴を示す履歴識別子が追加されてもよい。
いま、アプリケーションプログラム(APL#3)の旧世代の状態と新世代の状態とを管理する場合を想定する。
NVDIMMコントローラ103は、不揮発性メモリ104のセーブ領域#1を、バックアップ対象のアプリケーションプログラム(APL#3)に割り当ててもよい。NVDIMMコントローラ103は、セーブ領域#1を、アプリケーション識別子APL#3および履歴識別子(=0)の組み合わせに関連付けて、管理情報テーブル201Aに登録する。
電源遮断時に、NVDIMMコントローラ103は、管理情報テーブル201Aに基づき、アプリケーションプログラム(APL#3)によって使用されている揮発性メモリ101の領域#3のデータを、不揮発性メモリ104のセーブ領域#1にセーブする。
例えば、電源の回復後に、バックアップ対象のアプリケーションプログラム(APL#3)が起動される時、OSは、揮発性メモリ101の領域#4を、このバックアップ対象のアプリケーションプログラム(APL#3)のために新たに割り当てるかもしれない。この場合、OSは、MMIO103Aを介して、アプリケーション識別子APL#3と、履歴識別子(=0)と、揮発性メモリ101の領域#4を示すアドレス情報とを、MMIO103Aを介してNVDIMMコントローラ103に通知する。
NVDIMMコントローラ103は、管理情報テーブル201Aから、アプリケーション識別子APL#3と履歴識別子(=0)との組み合わせに関連付けられたセーブ領域のアドレス情報を検索する。そして、NVDIMMコントローラ103は、検索されたセーブ領域のアドレス情報に基づいて、アプリケーションプログラム(APL#3)によって電源遮断前に使用されていた揮発性メモリ101の領域#3のデータがセーブされている不揮発性メモリ104のセーブ領域(セーブ領域#1)を識別することができる。
そして、NVDIMMコントローラ103は、識別された不揮発性メモリ104のセーブ領域#1に格納されているデータを揮発性メモリ101の領域#4に復元する。
アプリケーションプログラム(APL#3)は揮発性メモリ101の領域#4を使用して動作することができる。
OSは、アプリケーション識別子APL#3、および履歴識別子(=1)、および揮発性メモリ101の領域#4のアドレス情報をNVDIMMコントローラ103に送信してもよい。NVDIMMコントローラ103は、不揮発性メモリ104の未使用のセーブ領域、例えば、セーブ領域#3を、アプリケーションプログラム(APL#3)の新世代の状態をセーブするためのセーブ領域として割り当ててもよい。これにより、NVDIMMコントローラ103は、アプリケーション識別子APL#3、履歴識別子(=1)、揮発性メモリ101の領域#4のアドレス情報、およびセーブ領域#3を示すアドレス情報を、管理情報テーブル201Aに登録する。
アプリケーションプログラム(APL#3)の実行に伴い、揮発性メモリ101の領域#4の内容は更新される。
この後、例えば、予期しない停電のような電源遮断が発生したならば、NVDIMMコントローラ103は、アプリケーションプログラム(APL#3)によって使用されている領域#4のデータを、アプリケーションプログラム(APL#3)用の最新のセーブ領域#3にセーブする。これにより、アプリケーションプログラム(APL#3)の旧世代の状態がセーブ領域#1に維持された状態で、アプリケーションプログラム(APL#3)の新世代の状態を不揮発性メモリ104の別のセーブ領域(ここでは、セーブ領域#3)にセーブすることができる。
電源の回復後に、アプリケーションプログラム(APL#3)の識別子APL#3と、旧世代または新世代のいずれかを指定する履歴識別子(0または1)と、アプリケーションプログラム(APL#3)に新たに割り当てられた揮発性メモリ101の領域(例えば領域#7)を示すアドレス情報とがホストシステム110から受信された場合、NVDIMMコントローラ103は、履歴識別子(0または1)によって指定された世代に対応するアプリケーションプログラム(APL#3)の状態を、揮発性メモリ101の領域(例えば領域#7)に復元する。
より詳しくは、もし履歴識別子が0を示すならば、NVDIMMコントローラ103は、アプリケーション識別子APL#3および履歴識別子(=0)の組み合わせに関連付けられたセーブ領域#1に格納されているデータを、揮発性メモリ101の領域#7に復元する。一方、もし履歴識別子が1を示すならば、NVDIMMコントローラ103は、アプリケーション識別子APL#3および履歴識別子(=1)の組み合わせに関連付けられたセーブ領域#3に格納されているデータを、揮発性メモリ101の領域#7に復元する。
図6は、図3で説明したセーブおよびリストア動作に適用される管理情報テーブル201Aのデータ構造の例を示す。
管理情報テーブル201Aは、異なる値のインデックスが付与された複数のエントリ(複数の記憶領域)を有する。各エントリは、アプリケーションIDフィールド301、DIMMアドレスフィールド302、およびオフセットフィールド303を含む。
アプリケーションIDフィールド301は、アプリケーション識別子を保持するアプリケーション識別情報部である。アプリケーション識別子(アプリケーションID)としては、個々のアプリケーションを識別可能な任意の種類の情報を使用することができる。上述したように、アプリケーション識別子は数字であってもよいし、文字コードであってもよい。
FFFFは無効なアプリケーション識別子であり、管理情報テーブル201Aの最終エントリにはアプリケーション識別子=FFFFが設定される。アプリケーション識別子=FFFFは、このエントリがテーブルの最終エントリであることを示す特定データである。
DIMMアドレスフィールド302およびオフセットフィールド303は、対応するアプリケーションプログラムが使用している不揮発性メモリ101の領域を示すアドレス情報を保持するための揮発性データメモリアドレス情報部である。DIMMアドレスフィールド302に設定されるDIMMアドレスは、この領域のスタートアドレスを示し、オフセットフィールド303に設定されるオフセットは、この領域のサイズを示す。
図7は、メモリ装置200とホストシステム110とのインタフェースのために使用されるMMIO103Aの例を示す。
MMIO103Aのレジスタファイルは、オペレーションフィールド401、アプリケーションIDフィールド402、アプリケーションヒストリーフィールド403、DIMMアドレスフィールド404、オフセットフィールド405、およびステータスフィールド406を含む。
ホストシステム110は、SMバスを介して、MMIO103Aのオペレーションフィールド401にオペレーションコード(コマンド)をライトする。利用可能なオペレーションコード(コマンド)の種類には、バックアップコマンドと、登録(エントリー)コマンドとが含まれていてもよい。バックアップコマンドは、メモリ装置200に対して、揮発性メモリ101から不揮発性メモリ104にデータをセーブすることを要求する。登録(エントリー)コマンドは、メモリ装置200に対して、管理情報の登録を要求する。この登録(エントリー)コマンドは、メモリ装置200に対して、特定のアプリケーションプログラムの状態をリストアすべきことを要求するリカバリコマンドとしても利用可能である。
ホストシステム110は、MMIO103AのアプリケーションIDフィールド402に、登録またはリストア(リカバリ)対象のアプリケーションプログラムのアプリケーション識別子をライトする。
ホストシステム110は、MMIO103Aのアプリケーションヒストリーフィールド403に、必要に応じて、登録またはリストア(リカバリ)対象のアプリケーションプログラムの履歴識別子をライトする。
ホストシステム110は、MMIO103AのDIMMアドレスフィールド404に、登録またはリストア(リカバリ)対象のアプリケーションプログラムに(新たに)割り当てられた揮発性メモリ101の領域のDIMMアドレスをライトする。DIMMアドレスは、この領域のスタートアドレスを示す。
ホストシステム110は、MMIO103Aのオフセットフィールド405に、対象のアプリケーションプログラムに割り当てられた登録またはリストア(リカバリ)対象のアプリケーションプログラムに(新たに)割り当てられた揮発性メモリ101の領域のオフセット(サイズ)をライトする。
MMIO103Aのステータスフィールド406は、NVDIMMコントローラ103の現在のステータスをホストシステム110に通知するために使用される。
もし登録が要求された管理情報内のアプリケーション識別子と同じアプリケーション識別子を含むアプリケーション識別情報部が管理情報テーブル201A内に既に存在するならば、このアプリケーション識別子に対応するアプリケーションプログラムの状態(バックアップデータ)が、不揮発性メモリ104内に存在する可能性がある。したがって、この場合には、NVDIMMコントローラ103は、このアプリケーションプログラムの状態(バックアップデータ)を、登録が要求された管理情報内のDIMMアドレスから始まる不揮発性メモリ104内の領域に復元する。
ホストシステム110上であるアプリケーションプログラムが起動される時、OSは、このアプリケーションプログラムを識別可能な特定のアプリケーション識別子を作成する。アプリケーションプログラムは、必要とするメモリ容量の割り当てを、OSに要求し、OSからの応答を待つ。
OSがこのメモリ割り当ての要求を受信した時、OSは、このアプリケーションプログラムに割り当てるべき揮発性メモリ101内の特定領域(メモリ領域)を決定する。そして、OSは、この決定された領域に関する管理情報をMMIO103Aを介して管理情報テーブル201Aに登録する。
例えば、OSは、登録コマンド、このアプリケーションプログラムのアプリケーション識別子、この領域のDIMMアドレス、およびこの領域のオフセット(サイズ)を、MMIO103A内のオペレーションフィールド401、アプリケーションIDフィールド402、DIMMアドレスフィールド404、およびオフセットフィールド405にライトする。そして、OSは、NVDIMMコントローラ103がこの管理情報を管理情報不揮発性メモリ201に格納するのを待つ。この場合、OSは、ステータスフィールド406をポーリングしながら、ステータスフィールド406の値がレディーを示す値に変わるまで待ってもよい。
NVDIMMコントローラ103が登録コマンドをホストシステム110から受信すると、NVDIMMコントローラ103は、ステータスフィールド406にビジーを示す値をセットし、そして管理情報を管理情報テーブル201Aに登録するための処理を実行する。この場合、登録が要求された管理情報内のアプリケーション識別子と同じアプリケーション識別子を含むアプリケーション識別情報部が管理情報テーブル201A内に既に存在するならば、NVDIMMコントローラ103は、リストア処理を実行する。
NVDIMMコントローラ103が、登録処理を、またはリストア処理と登録処理の双方を、完了すると、NVDIMMコントローラ103は、ステータスフィールド406にレディーを示す値をセットする。
ステータスフィールド406がレディーを示す値に変わると、OSは、上述のメモリ割り当て要求に応答するために、揮発性メモリ101内の上述の特定領域(メモリ領域)をアプリケーションプログラムに通知する。OSからの応答を待っていた上述のアプリケーションプログラムは、通知されたメモリ領域を利用することが可能となる。
このようにして、管理情報テーブル201Aには、揮発性メモリ101内の領域が割り当てられたアプリケーションそれぞれのメモリ領域を示す情報が登録される。
ホストシステム110の電源遮断検出回路113が電源遮断を検出した時、ホストシステム110は、SMバスコントローラ112を介して、MMIO103Aのオペレーションフィールド401にバックアップコマンドをライトする。
オペレーションフィールド401にバックアップコマンドがライトされた時、あるいはメモリ装置200の電源遮断検出回路106が電源遮断を検出した時に、NVDIMMコントローラ103は、例えば揮発性メモリ101の全データを不揮発性メモリ104にコピーすることよって、揮発性メモリ101のデータを不揮発性メモリ104にセーブする。このセーブ動作の間は、メモリ装置200は、バックアップ電源105からのバックアップ電力で動作する。セーブ動作が完了すると、メモリ装置200は、ゼロパワーステートとなる。
次に、図8のフローチャートを参照して、NVDIMMコントローラ103によって実行される登録動作およびリストア(リカバリ)動作の手順の例を示す。この登録動作およびリストア(リカバリ)動作の手順は、図3で説明したセーブおよびリストア動作に対応する。
NVDIMMコントローラ103が、MIMO103Aを介してホストシステム110から登録コマンド(アプリケーションID、DIMMアドレス、オフセットを含む)を受信すると、NVDIMMコントローラ103は、MIMO103Aのステータスフィールド406にビジーを示す値をセットする(ステップS501)。
NVDIMMコントローラ103は、登録コマンドによって指定されるアプリケーションIDと同じアプリケーションIDを有するアプリケーション識別情報部(アプリケーションIDフィールド)を求めて管理情報テーブル201Aを検索する。つまり、NVDIMMコントローラ103は、インデックスの値を増加しながら、管理情報テーブル201Aのエントリ群を順次参照する(ステップS502、S503、S507、S508)。
登録コマンドによって指定されるアプリケーションIDと同じアプリケーションIDを有するアプリケーション識別情報部が見つからない状態で、現在のインデックスが管理情報テーブル201Aの最終エントリに達したならば(ステップS503のYES)、NVDIMMコントローラ103は、登録コマンドによって指定される管理情報(アプリケーションID、DIMMアドレス、オフセット)を管理情報テーブル201Aに追加する。
より詳しくは、NVDIMMコントローラ103は、管理情報テーブル201Aの最終エントリの直後に新エントリを追加し、この新エントリ内のアプリケーション識別情報部に、テーブルの最終エントリを示す特定データを登録する(ステップS504)。そして、NVDIMMコントローラ103は、現在のインデックスに対応するエントリに、つまり追加された新エントリの一つ前のエントリに、登録コマンドによって指定される管理情報(アプリケーションID、DIMMアドレス、オフセット)を登録する(ステップS505)。そして、NVDIMMコントローラ103は、ステータスフィールド406にレディーを示す値をライトする(ステップS506)。
一方、現在のインデックスに対応するアプリケーション識別情報部内のアプリケーションIDが、登録コマンドによって指定されるアプリケーションIDと同じであるならば(ステップS507のYES)、NVDIMMコントローラ103は、検索処理を終了する。そして、NVDIMMコントローラ103は、現在のインデックスに対応する揮発性データメモリアドレス情報部(DIMMアドレスおよびオフセット)に基づき、登録コマンドによって指定されるアプリケーションIDのアプリケーションプログラムのデータがセーブされている不揮発性メモリ104の領域(不揮発性データメモリアドレス)を識別する(ステップS509)。つまり、NVDIMMコントローラ103は、登録コマンドによって指定されるアプリケーションIDと同じIDを有するアプリケーションプログラムに対応する揮発性メモリ101の領域のアドレス情報から、アプリケーションプログラムのデータがセーブされている不揮発性メモリ104の領域を識別する。本実施形態では、揮発性メモリ101のアドレス空間と不揮発性メモリ104のアドレス空間は一対一で対応している。したがって、現在のインデックスに対応する揮発性データメモリアドレス情報部(DIMMアドレスおよびオフセット)を、対応するアプリケーションプログラムのデータがセーブされている不揮発性メモリ104の領域(セーブ領域)を示すアドレス情報(不揮発性データメモリアドレス)として識別することができる。
このように、NVDIMMコントローラ103は、管理情報テーブル201Aから、登録コマンドによって指定されるアプリケーションIDと同じIDを有するアプリケーションプログラムに対応する揮発性メモリ101の領域のアドレス情報を検索し、検索されたアドレス情報に基づいて、登録コマンドによって指定されるアプリケーションIDのアプリケーションプログラムによって電源遮断前に使用されていた揮発性メモリ101の領域のデータがセーブされた不揮発性メモリ104の領域(セーブ領域)を識別する。
NVDIMMコントローラ103は、識別された揮発性メモリ101の領域(セーブ領域)に格納されているデータを、登録コマンドのDIMMアドレスおよびオフセットによって指定される揮発性メモリ101の領域に復元する(ステップS510)。登録コマンドのDIMMアドレスは、アプリケーションプログラムに新たに割り当てられた揮発性メモリ101の領域を指定するアドレス情報であるので、アプリケーションプログラムの状態は、この新たに割り当てられた揮発性メモリ101の領域に復元される。
ステップS510では、NVDIMMコントローラ103は、オフセットによって示されるサイズのデータを、識別された不揮発性データメモリアドレスから、登録コマンドのDIMMアドレスによって指定される揮発性データメモリアドレスにコピーする。
この後、NVDIMMコントローラ103は、現在のインデックスに対応するエントリに、登録コマンドによって指定される管理情報(アプリケーションID、DIMMアドレス、オフセット)を登録する(ステップS505)。これにより、アプリケーションプログラムの状態が復元された後、管理情報テーブル201Aが自動的に更新される。この結果、検索された揮発性データメモリアドレス情報部(管理データ部)の内容(DIMMアドレス)が、登録コマンドによって指定される最新のDIMMアドレス、つまりアプリケーションプログラムの状態が復元されたDIMMアドレスに、変更される。
そして、NVDIMMコントローラ103は、MIMO103Aのステータスフィールド406にレディーを示す値をライトする(ステップS506)。
なお、ここでは、登録コマンドが登録要求とリカバリ要求を兼ねる場合を例示したが、ホストシステム110は、電源が回復された後に、アプリケーションID、DIMMアドレス、オフセットを含むリカバリコマンドを、NVDIMMコントローラ103に送信してもよい。
例えば、電源が回復された後に、OSが起動され、そしてユーザによってあるアプリケーションプログラムの起動が要求されると、OSは、このアプリケーションプログラムに新たなDIMMアドレスおよびオフセットを割り当てる。この場合、ホストシステム110は、リカバリコマンド、このアプリケーションプログラムのアプリケーションID、新たなDIMMアドレス、およびオフセットを、MMIO103Aにライトしてもよい。
この場合においても、NVDIMMコントローラ103によって上述のステップS509、S510、S505、S506の処理が実行される。
以上の処理により、たとえ電源が回復された後に、電源遮断前のDIMMアドレスと異なる新たなDIMMアドレスがアプリケーションプログラム用に割り当てられた場合であっても、このアプリケーションプログラムの電源遮断前の状態を、新たなDIMMアドレスに対応する不揮発性メモリ101の領域に復元することができる。
図9は、図4で説明したセーブおよびリストア動作に適用される管理情報テーブル201Aのデータ構造の例を示す。
図9の管理情報テーブル201AにおいてはアプリケーションIDとして文字コードが用いられているが、これに限らず、アプリケーションIDは数字等であってもよい。
図9の管理情報テーブル201Aにおいては、上述のアプリケーションIDフィールド301、DIMMアドレスフィールド302、およびオフセットフィールド303に加え、NVRAMアドレスフィールド304が追加されている。
「final」の文字コードは無効なアプリケーション識別子であり、管理情報テーブル201Aの最終エントリにはアプリケーション識別子=finalが設定される。アプリケーション識別子=finalは、このエントリがテーブルの最終エントリであることを示す特定データである。
DIMMアドレスフィールド302およびオフセットフィールド303は、上述したように、対応するアプリケーションプログラムによって使用される不揮発性メモリ101の領域を示すアドレス情報を保持するための揮発性データメモリアドレス情報部であるである。
NVRAMアドレスフィールド304およびオフセットフィールド303は、アプリケーションプログラムに割り当てられた揮発性メモリ101の領域(セーブ領域)を示すアドレス情報を保持するための不揮発性データメモリアドレス情報部である。
ホストシステム110は、全てのアプリケーションプログラムではなく、バックアップが必要されるアプリケーションプログラムに関する管理情報(アプリケーションID、DIMMアドレス、オフセット)だけをメモリ装置200に送信する。起動されたアプリケーションプログラムは、このアプリケーションのバックアップが必要か否かを示す情報と共に、メモリ割り当て要求をOSに送信してもよい。これにより、OSは、バックアップが必要されるアプリケーションプログラムを容易に特定でき、バックアップが必要されるアプリケーションプログラムに関する管理情報(アプリケーションID、DIMMアドレス、オフセット)だけをメモリ装置200に送信することができる。
NVRAMアドレスの割り当てに関しては、例えば、NVDIMMコントローラ103が、不揮発性メモリ104の未使用領域から、バックアップが必要されるアプリケーションプログラムに割り当てるべき特定メモリ領域(セーブ領域)を自動的に選択してもよい。この場合、不揮発性メモリ104内のこの特定メモリ領域の先頭アドレスが、NVRAMアドレスフィールド304に登録される。
あるいは、アプリケーションID、DIMMアドレス、オフセットだけでなく、ホストシステム110からメモリ装置200に、NVRAMアドレスを送信してもよい。ホストシステム110からメモリ装置200にNVRAMアドレスを送信するための方法としては様々な方法を使用することができる。例えば、図6のMMIO103Aに、NVRAMアドレスをライトするためのフィールドが追加されてもよい。
オペレーションフィールド401にバックアップコマンドがライトされた時、あるいはメモリ装置200の電源遮断検出回路106が電源遮断を検出した時に、NVDIMMコントローラ103は、図9の管理情報テーブル201Aを参照して、バックアップすべきアプリケーションプログラム毎に、このアプリケーションプログラムに割り当てられている不揮発性メモリ101内の領域と、このアプリケーションプログラムに割り当てられている不揮発性メモリ104内のセーブ領域とを特定する。そして、NVDIMMコントローラ103は、バックアップすべき各アプリケーションプログラムの状態を、不揮発性メモリ101の領域から、不揮発性メモリ104のセーブ領域にセーブする。このセーブ動作の間は、メモリ装置200は、バックアップ電源105からのバックアップ電力で動作する。セーブ動作が完了すると、メモリ装置200は、ゼロパワーステートとなる。
全てのデータではなく、バックアップが必要なアプリケーションプログラムによって使用されている揮発性メモリ101の領域のデータだけがセーブされるので、セーブ動作に要する時間を短縮することができる。
次に、図10のフローチャートを参照して、NVDIMMコントローラ103によって実行される登録動作およびリストア(リカバリ)動作の手順の例を示す。この登録動作およびリストア(リカバリ)動作の手順は、図4で説明したセーブおよびリストア動作に対応する。
NVDIMMコントローラ103が、MIMO103Aを介してホストシステム110から登録コマンド(アプリケーションID、DIMMアドレス、オフセットを含む)を受信すると、NVDIMMコントローラ103は、MIMO103Aのステータスフィールド406にビジーを示す値をセットする(ステップS601)。
NVDIMMコントローラ103は、登録コマンドによって指定されるアプリケーションIDと同じアプリケーションIDを有するアプリケーション識別情報部(アプリケーションIDフィールド)を求めて管理情報テーブル201Aを検索する。つまり、NVDIMMコントローラ103は、インデックスの値を増加しながら、管理情報テーブル201Aのエントリ群を順次参照する(ステップS602、S603、S608、S609)。
登録コマンドによって指定されるアプリケーションIDと同じアプリケーションIDを有するアプリケーション識別情報部が見つからない状態で、現在のインデックスが管理情報テーブル201Aの最終エントリに達したならば(ステップS603のYES)、NVDIMMコントローラ103は、登録コマンドによって指定される管理情報(アプリケーションID、DIMMアドレス、オフセット)を管理情報テーブル201Aに追加する。
より詳しくは、NVDIMMコントローラ103は、管理情報テーブル201Aの最終エントリの直後に新エントリを追加し、この新エントリ内のアプリケーション識別情報部に、テーブルの最終エントリを示す特定データを登録する(ステップS604)。NVDIMMコントローラ103は、不揮発性メモリ104内に、特定メモリ領域(セーブ領域)を確保する(ステップS605)。ステップS605では、NVDIMMコントローラ103は、不揮発性メモリ104の未使用領域から、登録コマンドによって指定されるアプリケーションプログラムのデータをセーブするための特定メモリ領域(セーブ領域)を自動的に選択してもよい。あるいは、登録コマンドによって指定される管理情報にNVRAMアドレスが含まれているならば、NVDIMMコントローラ103は、このNVRAMアドレスとオフセットとに基づいて、特定メモリ領域を確保してもよい。
そして、NVDIMMコントローラ103は、現在のインデックスに対応するエントリに、つまり追加された新エントリの一つ前のエントリに、登録コマンドによって指定される管理情報(アプリケーションID、DIMMアドレス、オフセット)と、特定メモリ領域に対応するNVRAMアドレスを登録する(ステップS606)。そして、NVDIMMコントローラ103は、MIMO103Aのステータスフィールド406にレディーを示す値をライトする(ステップS607)。
一方、現在のインデックスに対応するアプリケーション識別情報部内のアプリケーションIDが、登録コマンドによって指定されるアプリケーションIDと同じであるならば(ステップS608のYES)、NVDIMMコントローラ103は、検索処理を終了する。そして、NVDIMMコントローラ103は、現在のインデックスに対応する不揮発性データメモリアドレス情報部(NVRAMアドレス)に基づき、登録コマンドによって指定されるアプリケーションIDのアプリケーションプログラムによって電源遮断前に使用されていた揮発性メモリ101の領域のデータがセーブされている不揮発性メモリ104のセーブ領域(不揮発性データメモリアドレス)を識別する(ステップS610)。
このように、NVDIMMコントローラ103は、管理情報テーブル201Aから、登録コマンドによって指定されるアプリケーションIDと同じIDを有するアプリケーションプログラムに対応するセーブ領域のアドレス情報(NVRAMアドレス、オフセット)を検索し、検索されたアドレス情報(NVRAMアドレス)を、登録コマンドによって指定されるアプリケーションIDのアプリケーションプログラムによって電源遮断前に使用されていた揮発性メモリ101の領域のデータがセーブされている不揮発性メモリ104のセーブ領域として識別する。
NVDIMMコントローラ103は、識別されたセーブ領域に格納されているデータを、登録コマンドのDIMMアドレスおよびオフセットによって指定される揮発性メモリ101の領域に復元する(ステップS611)。登録コマンドのDIMMアドレスは、このアプリケーションプログラムに新たに割り当てられた揮発性メモリ101の領域を指定するアドレス情報であるので、アプリケーションプログラムの状態は、この新たに割り当てられた揮発性メモリ101の領域に復元される。
ステップS611では、NVDIMMコントローラ103は、オフセットによって示されるサイズのデータを、識別された不揮発性データメモリアドレスから、登録コマンドのDIMMアドレスによって指定される揮発性データメモリアドレスにコピーする。
この後、NVDIMMコントローラ103は、不揮発性メモリ104内に、特定メモリ領域(状態が復元されたアプリケーション用のセーブ領域)を確保する(ステップS605)。ステップS605では、NVDIMMコントローラ103は、検索されたエントリ内のNVRAMアドレスとオフセットとに基づいて、電源遮断前と同じ不揮発性メモリ104内のセーブ領域を特定メモリ領域として確保してもよい。
そして、NVDIMMコントローラ103は、現在のインデックスに対応するエントリに、登録コマンドによって指定される管理情報(アプリケーションID、DIMMアドレス、オフセット)と、特定メモリ領域に対応するNVRAMアドレスを登録する(ステップS606)。これにより、アプリケーションプログラムの状態が復元された後、管理情報テーブル201Aが自動的に更新される。この結果、検索された揮発性データメモリアドレス情報部の内容(DIMMアドレス)が、登録コマンドによって指定される最新のDIMMアドレスに、つまりアプリケーションプログラムの状態が復元されたDIMMアドレスに、変更される。
そして、NVDIMMコントローラ103は、MIMO103Aのステータスフィールド406に、レディーを示す値をライトする(ステップS607)。
なお、ここでは、登録コマンドが登録要求とリカバリ要求を兼ねる場合を例示したが、ホストシステム110は、電源が回復された後に、アプリケーションID、DIMMアドレス、オフセットを含むリカバリコマンドを、NVDIMMコントローラ103に送信してもよい。
例えば、電源が回復された後に、OSが起動され、そしてユーザによってあるアプリケーションプログラムが起動されると、このアプリケーションプログラムは、このアプリケーションプログラムのバックアップが必要か否かを示す情報と、メモリ割り当て要求をOSに送信する。OSは、このアプリケーションプログラムに新たなDIMMアドレスおよびオフセットを割り当てる。
このアプリケーションプログラムのバックアップが必要ならば、OSは、リカバリコマンド、このアプリケーションプログラムのアプリケーションID、新たなDIMMアドレス、およびオフセットを、MMIO103Aにライトし、MMIO103Aのステータスフィールド406がレディーになるのを待つ。
この場合においても、NVDIMMコントローラ103によって上述のステップS610、S611、S605、S606、S707の処理が実行される。
以上の処理により、たとえ電源が回復された後に、電源遮断前のDIMMアドレスと異なる新たなDIMMアドレスがアプリケーションプログラム用に割り当てられた場合であっても、このアプリケーションプログラムの電源遮断前の状態を、新たなDIMMアドレスに対応する不揮発性メモリ101の領域に復元することができる。さらに、バックアップすべきアプリケーションプログラムの状態だけをセーブすることができるので、セーブ処理に要する時間を短くすることができる。またさらに、不揮発性メモリ104の書き換え回数を必要最小限に抑制することができるため、不揮発性メモリ104の寿命を延ばすことができる。またさらに、セーブ領域を任意に決定することができるので、不揮発性メモリ104の消去ブロック(物理ブロック)それぞれの書き換え回数を平準化することが可能となり、不揮発性メモリ104の延命を図ることができる。
図11は、図5で説明したセーブおよびリストア動作に適用される管理情報テーブル201Aのデータ構造の例を示す。
図11の管理情報テーブル201AにおいてはアプリケーションIDとして文字コードが用いられているが、これに限らず、アプリケーションIDは数字等であってもよい。
図11の管理情報テーブル201Aにおいては、図9の管理情報テーブル201Aに比し、アプリケーションヒストリーフィールド305が追加されている。
「final」の文字コードは無効なアプリケーション識別子であり、管理情報テーブル201Aの最終エントリにはアプリケーション識別子=finalが設定される。アプリケーション識別子=finalは、このエントリがテーブルの最終エントリであることを示す特定データである。
DIMMアドレスフィールド302およびオフセットフィールド303は、上述したように、対応するアプリケーションプログラム用の不揮発性メモリ101の領域を示すアドレス情報を保持するための揮発性データメモリアドレス情報部である。
NVRAMアドレスフィールド304およびオフセットフィールド303は、アプリケーションプログラム用に割り当てられた揮発性メモリ101の領域(セーブ領域)を示すアドレス情報を保持するための不揮発性データメモリアドレス情報部である。
アプリケーションヒストリーフィールド305には、アプリケーションプログラムのバックアップ状態の履歴に関する履歴情報(履歴識別子)が設定される。この履歴識別子は、旧世代のバックアップ状態、新世代のバックアップ状態のような、複数世代のバックアップ状態の履歴の内の特定の世代を指定するために使用される。
複数世代のバックアップ状態の履歴を管理することが必要なアプリケーションプログラムに関しては、異なる履歴識別子が付与された複数の管理情報が管理情報テーブル201Aに登録される。例えば、図11の管理情報テーブル201Aにおいては、アプリケーション識別子「メモリキャッシュ」のアプリケーションプログラムに関しては、履歴識別子0が付与された管理情報と、履歴識別子1が付与された管理情報とが登録されている。履歴識別子0の管理情報は、このアプリケーションプログラムの旧世代の状態を管理するために使用される。例えば、履歴識別子0の管理情報に含まれるNVRAMアドレスは、旧世代の状態がセーブされているセーブ領域を示す。履歴識別子1の管理情報は、このアプリケーションプログラムの新世代の状態を管理するために使用される。例えば、履歴識別子1の管理情報に含まれるNVRAMアドレスは、新世代の状態がセーブされているセーブ領域、あるいは新世代の状態がセーブされるべきセーブ領域を示す。
一つの世代のみのバックアップ状態の管理を必要するアプリケーションプログラムに関しては、履歴識別子0が付与された管理情報のみが管理情報テーブル201Aに登録される。
ホストシステム110は、全てのアプリケーションプログラムではなく、バックアップが必要されるアプリケーションプログラムに関する管理情報(アプリケーションID、履歴ID(履歴識別子)、DIMMアドレス、オフセット)だけをメモリ装置200に送信する。起動されたアプリケーションプログラムは、このアプリケーションのバックアップが必要か否かを示す情報と履歴IDと共に、メモリ割り当て要求をOSに送信してもよい。
NVRAMアドレスの割り当てに関しては、例えば、NVDIMMコントローラ103が、不揮発性メモリ104の未使用領域から、バックアップが必要されるアプリケーションプログラム用に割り当てるべき特定メモリ領域(セーブ領域)を自動的に選択してもよい。この場合、不揮発性メモリ104内のこの特定メモリ領域の先頭アドレスが、NVRAMアドレスフィールド304に登録される。異なる履歴IDを有する同一のアプリケーションプログラムについては、これら履歴IDそれぞれに対応する複数の特定メモリ領域が割り当てられる。
オペレーションフィールド401にバックアップコマンドがライトされた時、あるいはメモリ装置200の電源遮断検出回路106が電源遮断を検出した時に、NVDIMMコントローラ103は、図11の管理情報テーブル201Aを参照して、バックアップすべきアプリケーションプログラム毎に、このアプリケーションプログラムによって使用されている揮発性メモリ101内の領域と、このアプリケーションプログラムに割り当てられている不揮発性メモリ104内のセーブ領域とを特定する。そして、NVDIMMコントローラ103は、バックアップすべき各アプリケーションプログラムの状態を、不揮発性メモリ101の領域から、不揮発性メモリ104のセーブ領域にセーブする。
異なる履歴IDを有する同一のアプリケーションプログラムについては、NVDIMMコントローラ103は、このアプリケーションプログラムの状態を、揮発性メモリ101内の領域から、最新の履歴IDに対応する不揮発性メモリ104内のセーブ領域にセーブする。
セーブ動作の間は、メモリ装置200は、バックアップ電源105からのバックアップ電力で動作する。セーブ動作が完了すると、メモリ装置200は、ゼロパワーステートとなる。
全てのデータではなく、バックアップが必要なアプリケーションプログラムの状態だけがセーブされるので、セーブ動作に要する時間を短縮することができる。
次に、図12のフローチャートを参照して、NVDIMMコントローラ103によって実行される登録動作およびリストア(リカバリ)動作の手順の例を示す。この登録動作およびリストア(リカバリ)動作の手順は、図5で説明したセーブおよびリストア動作に対応する。
NVDIMMコントローラ103が、MIMO103Aを介してホストシステム110から登録コマンド(アプリケーションID、履歴ID、DIMMアドレス、オフセットを含む)を受信すると、NVDIMMコントローラ103は、MIMO103Aのステータスフィールド406にビジーを示す値をセットする(ステップS701)。
NVDIMMコントローラ103は、登録コマンドによって指定されるアプリケーションIDおよび履歴IDの組み合わせと同じアプリケーションIDおよび履歴IDの組み合わせを求めて、管理情報テーブル201Aを検索する。つまり、NVDIMMコントローラ103は、インデックスの値を増加しながら、管理情報テーブル201Aのエントリ群を順次参照する(ステップS702、S703、S708、S709)。
登録コマンドによって指定されるアプリケーションIDおよび履歴IDの組み合わせと同じアプリケーションIDと履歴IDの組み合わせが見つからない状態で、現在のインデックスが管理情報テーブル201Aの最終エントリに達したならば(ステップS703のYES)、NVDIMMコントローラ103は、登録コマンドによって指定される管理情報(アプリケーションID、履歴ID、DIMMアドレス、オフセット)を管理情報テーブル201Aに追加する。
より詳しくは、NVDIMMコントローラ103は、管理情報テーブル201Aの最終エントリの直後に新エントリを追加し、この新エントリ内のアプリケーション識別情報部に、テーブルの最終エントリを示す特定データを登録する(ステップS704)。NVDIMMコントローラ103は、不揮発性メモリ104内に、特定メモリ領域(登録コマンドによって指定されるアプリケーション用のセーブ領域)を確保する(ステップS705)。ステップS705では、NVDIMMコントローラ103は、不揮発性メモリ104の未使用領域から、登録コマンドによって指定されるアプリケーションプログラムに割り当てるべき特定メモリ領域を自動的に選択してもよい。
そして、NVDIMMコントローラ103は、現在のインデックスに対応するエントリに、つまり追加された新エントリの一つ前のエントリに、登録コマンドによって指定される管理情報(アプリケーションID、履歴ID、DIMMアドレス、オフセット)と、特定メモリ領域に対応するNVRAMアドレスを登録する(ステップS706)。そして、NVDIMMコントローラ103は、MIMO103Aのステータスフィールド406にレディーを示す値をライトする(ステップS707)。
一方、現在のインデックスに対応するアプリケーションIDおよび履歴IDの組み合わせが、登録コマンドによって指定されるアプリケーションIDおよび履歴IDの組み合わせと同じであるならば(ステップS708のYES)、NVDIMMコントローラ103は、検索処理を終了する。そして、NVDIMMコントローラ103は、現在のインデックスに対応する不揮発性データメモリアドレス情報部に基づき、登録コマンドによって指定されるアプリケーションIDおよび履歴IDの組み合わせに対応するアプリケーションプログラムによって使用されていた揮発性メモリ101の領域のデータがセーブされている不揮発性メモリ104のセーブ領域(不揮発性データメモリアドレス)を識別する(ステップS710)。
このように、NVDIMMコントローラ103は、管理情報テーブル201Aから、登録コマンドによって指定されるアプリケーションIDおよび履歴IDの組み合わせと同じアプリケーションIDおよび履歴IDの組み合わせに関連付けられたエントリを検索し、検索されたエントリによって示される不揮発性メモリ104内のセーブ領域を、登録コマンドによって指定されるアプリケーションIDおよび履歴IDの組み合わせに対応するアプリケーションプログラムの状態がセーブされている不揮発性メモリ104のセーブ領域として識別する。
NVDIMMコントローラ103は、識別されたセーブ領域に格納されているデータを、登録コマンドのDIMMアドレスによって指定される揮発性メモリ101の領域に復元する(ステップS711)。
この後、NVDIMMコントローラ103は、不揮発性メモリ104内に、特定メモリ領域(状態が復元されたアプリケーション用のセーブ領域)を確保する(ステップS705)。ステップS705では、NVDIMMコントローラ103は、検索されたエントリ内のNVRAMアドレスとオフセットとに基づいて、電源遮断前と同じ不揮発性メモリ104内の領域を特定メモリ領域として確保してもよい。
そして、NVDIMMコントローラ103は、現在のインデックスに対応するエントリに、つまり追加された新エントリの一つ前のエントリに、登録コマンドによって指定される管理情報(アプリケーションID、履歴ID、DIMMアドレス、オフセット)と、特定メモリ領域に対応するNVRAMアドレスを登録する(ステップS706)。これにより、アプリケーションプログラムの状態が復元された後、検索されたエントリ内のDIMMアドレスが、登録コマンドによって指定される最新のDIMMアドレス(アプリケーションプログラムの状態が復元されたDIMMアドレス)に更新される。そして、NVDIMMコントローラ103は、MIMO103Aのステータスフィールド406に、レディーを示す値をライトする(ステップS607)。
なお、OSは、あるアプリケーションプログラムのバックアップデータが復元された後に、このアプリケーションのアプリケーション識別子と、このアプリケーションの現在の履歴識別子に+1を加えることによって得られる新たな履歴識別子と、このアプリケーションプログラムのバックアップデータが復元された領域を示すDIMMアドレスおよびオフセットとを、MMIO103Aを介して管理情報テーブル201Aに登録してもよい。この場合、NVDIMMコントローラ103は、このアプリケーションプログラムの新世代の状態をセーブするためのセーブ領域を割り当ててもよい。
この後、電源遮断が発生すると、NVDIMMコントローラ103は、このアプリケーションプログラムによって使用されている揮発性メモリ101の領域のデータを、このアプリケーションプログラムの新世代の状態をセーブするためのセーブ領域にセーブする。これにより、このアプリケーションプログラムの旧世代の状態が、あるセーブ領域に維持されている状態で、このアプリケーションプログラムの新世代の状態を、不揮発性メモリ104の別のセーブ領域にセーブすることができる。
以上の処理により、バックアップ対象のアプリケーションプログラムの旧世代の状態または新世代の状態を、揮発性メモリ101の任意の領域に選択的に復元することが可能となる。
以上説明したように、本実施形態によれば、ホストシステム110から受信されたアプリケーション識別子によって指定されるアプリケーションプログラムのバックアップデータを、ホストシステム110から受信されたアドレス情報に対応する揮発性メモリ101内の領域に復元することができる。よって、たとえあるアプリケーションプログラムに電源遮断前とは異なる揮発性メモリ101内の領域が新たに割り当てられた場合であっても、このアプリケーションプログラムのバックアップされたデータを、不揮発性メモリ104から、この新たに割り当てられた揮発性メモリ101内の領域に適切に復元することができる。よって、揮発性メモリ101の状態をホストシステム110にとって有用な状態に復元することができる。
なお、本実施形態では、アプリケーションプログラムによって使用されている揮発性メモリ101の領域の内容を不揮発性メモリ104にバックアップする場合を主として説明したが、OSによって使用されている揮発性メモリ101内の領域の内容を不揮発性メモリ104にバックアップしてもよい。この場合、OSによって使用されている揮発性メモリ101内の領域の内容は、OSによって電源遮断前に使用されていた発性メモリ101内の領域と同じ特定の領域に復元してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
101…揮発性メモリ、103…NVDIMMコントローラ、103A…MMIO、104…揮発性メモリ、110…ホストシステム、201…管理情報不揮発性メモリ、201A…管理情報テーブル。

Claims (14)

  1. 揮発性メモリと、
    第1の不揮発性メモリと、
    ホストシステムによって実行される複数のプログラムの識別子と前記複数のプログラムによって使用されている前記揮発性メモリの複数の領域それぞれのアドレス情報との対応関係を示す管理情報を格納する第2の不揮発性メモリと、
    電源遮断のイベントに応答して、前記揮発性メモリのデータを前記第1の不揮発性メモリにセーブするコントローラであって、
    電源の回復後に、前記複数のプログラムの内の第1プログラムの識別子と、前記ホストシステムによって前記第1プログラムに新たに割り当てられた前記揮発性メモリの第1領域を示すアドレス情報とを、前記ホストシステムから受信し、
    前記第1プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報に基づいて、前記第1プログラムによって電源遮断前に使用されていた前記揮発性メモリの領域のデータがセーブされている前記第1の不揮発性メモリの領域を識別し、
    前記識別された前記揮発性メモリの領域に格納されているデータを、前記揮発性メモリの前記第1領域に復元するコントローラとを具備するメモリ装置。
  2. 前記コントローラは、前記揮発性メモリの全データを前記第1の不揮発性メモリにセーブする請求項1記載のメモリ装置。
  3. 前記コントローラは、前記管理情報から、前記第1プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報を検索し、前記検索されたアドレス情報に基づいて、前記第1プログラムによって電源遮断前に使用されていた前記揮発性メモリの領域のデータがセーブされている前記第1の不揮発性メモリの領域を識別する請求項1記載のメモリ装置。
  4. 前記コントローラは、前記識別された前記揮発性メモリの領域に格納されているデータが復元された後、前記管理情報を更新して、前記第1プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報を、前記第1領域を示すアドレス情報に変更する請求項1記載のメモリ装置。
  5. 前記メモリ装置は、前記ホストシステムのメモリソケットに挿入可能なデュアル・インライン・メモリモジュール(DIMM)である請求項1記載のメモリ装置。
  6. 揮発性メモリと、
    第1の不揮発性メモリと、
    バックアップされるべき一つ以上のプログラムの識別子と、前記一つ以上のプログラムによって使用されている前記揮発性メモリの一つ以上の領域それぞれのアドレス情報と、前記一つ以上のプログラムの状態をセーブするための前記第1の不揮発性メモリの一つ以上のセーブ領域それぞれのアドレス情報との対応関係を示す管理情報を格納する第2の不揮発性メモリと、
    電源遮断のイベントに応答して、前記管理情報に基づき、前記揮発性メモリの一つ以上の領域のデータを前記一つ以上のセーブ領域にセーブするコントローラであって、
    電源の回復後に、前記一つ以上のプログラムの内の第1プログラムの識別子と、ホストシステムによって前記第1プログラムに新たに割り当てられた前記揮発性メモリの第1領域を示すアドレス情報とを、前記ホストシステムから受信し、
    前記第1プログラムの識別子と前記管理情報とに基づいて、前記第1プログラムによって電源遮断前に使用されていた前記揮発性メモリの領域のデータがセーブされている前記第1の不揮発性メモリの第1セーブ領域を識別し、
    前記識別された第1セーブ領域に格納されているデータを、前記揮発性メモリの前記第1領域に復元するコントローラとを具備するメモリ装置。
  7. 前記コントローラは、前記管理情報から、前記第1プログラムの識別子と同じ識別子を有するプログラムに対応するセーブ領域のアドレス情報を検索し、前記検索されたアドレス情報を、前記第1セーブ領域のアドレス情報として識別する請求項6記載のメモリ装置。
  8. 前記コントローラは、前記第1セーブ領域に格納されているデータが復元された後、前記管理情報を更新して、前記第1プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報を、前記第1領域を示すアドレス情報に変更する請求項6記載のメモリ装置。
  9. 前記コントローラは、
    前記第1セーブ領域に格納されているデータが復元された後の電源遮断のイベントに応答して、前記第1領域のデータを、前記第1セーブ領域とは異なる前記第1の不揮発性メモリの第2セーブ領域にセーブし、
    電源の回復後に、前記第1プログラムのプログラム識別子と、前記第1プログラムの旧世代の状態または前記第1プログラムの新世代の状態のいずれかを指定する履歴識別子と、前記ホストシステムによって前記第1プログラムに新たに割り当てられた前記揮発性メモリの領域を示すアドレス情報とが前記ホストシステムから受信された場合、前記履歴識別子によって指定された世代に基づいて、前記第1セーブ領域に格納されているデータまたは前記第2セーブ領域に格納されているデータのいずれかを、前記受信されたアドレス情報によって指定される前記揮発性メモリの領域に復元する請求項6記載のメモリ装置。
  10. 前記メモリ装置は、前記ホストシステムのメモリソケットに挿入可能なデュアル・インライン・メモリモジュール(DIMM)である請求項6記載のメモリ装置。
  11. 揮発性メモリと、第1の不揮発性メモリと、第2の不揮発性メモリとを備えるメモリ装置を制御するメモリ制御方法であって、
    ホストシステムによって実行される複数のプログラムの識別子と前記複数のプログラムによって使用されている前記揮発性メモリの複数の領域それぞれのアドレス情報との対応関係を示す管理情報を前記第2の不揮発性メモリに格納することと、
    電源遮断のイベントに応答して、前記揮発性メモリのデータを前記第1の不揮発性メモリにセーブすることと、
    電源の回復後に、前記複数のプログラムの内の第1プログラムの識別子と、前記ホストシステムによって前記第1プログラムに新たに割り当てられた前記揮発性メモリの第1領域を示すアドレス情報とを、前記ホストシステムから受信することと、
    前記第1プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報に基づいて、前記第1プログラムによって電源遮断前に使用されていた前記揮発性メモリの領域のデータがセーブされている前記第1の不揮発性メモリの領域を識別することと、
    前記識別された前記揮発性メモリの領域に格納されているデータを、前記揮発性メモリの前記第1領域に復元することとを具備するメモリ制御方法。
  12. 前記識別することは、前記管理情報から、前記第1プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報を検索することと、前記検索されたアドレス情報に基づいて、前記第1プログラムによって電源遮断前に使用されていた前記揮発性メモリの領域のデータがセーブされている前記第1の不揮発性メモリの領域を識別することとを含む請求項11記載のメモリ制御方法。
  13. 前記識別された前記揮発性メモリの領域に格納されているデータが復元された後、前記管理情報を更新して、前記第1プログラムの識別子と同じ識別子を有するプログラムに対応する前記揮発性メモリの領域のアドレス情報を、前記第1領域を示すアドレス情報に変更することをさらに具備する請求項11記載のメモリ制御方法。
  14. 前記メモリ装置は、前記ホストシステムのメモリソケットに挿入可能なデュアル・インライン・メモリモジュール(DIMM)である請求項11記載のメモリ制御方法。
JP2015169090A 2015-08-28 2015-08-28 メモリ装置およびメモリ制御方法 Active JP6479608B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015169090A JP6479608B2 (ja) 2015-08-28 2015-08-28 メモリ装置およびメモリ制御方法
US14/936,356 US9946610B2 (en) 2015-08-28 2015-11-09 Memory device and method for saving and restoring data using nonvolatile memory
CN201510922945.3A CN106484571B (zh) 2015-08-28 2015-12-14 存储装置和存储控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015169090A JP6479608B2 (ja) 2015-08-28 2015-08-28 メモリ装置およびメモリ制御方法

Publications (2)

Publication Number Publication Date
JP2017045379A true JP2017045379A (ja) 2017-03-02
JP6479608B2 JP6479608B2 (ja) 2019-03-06

Family

ID=58095578

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015169090A Active JP6479608B2 (ja) 2015-08-28 2015-08-28 メモリ装置およびメモリ制御方法

Country Status (3)

Country Link
US (1) US9946610B2 (ja)
JP (1) JP6479608B2 (ja)
CN (1) CN106484571B (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018156131A (ja) * 2017-03-15 2018-10-04 東芝メモリ株式会社 情報処理装置、ストレージデバイスおよび情報処理システム
JP2018190412A (ja) * 2017-05-09 2018-11-29 三星電子株式会社Samsung Electronics Co.,Ltd. ハイブリッドメモリにおける書き込み及びフラッシュ支援のためのメモリモジュール及びその動作方法
WO2019138624A1 (ja) * 2018-01-12 2019-07-18 ソニーセミコンダクタソリューションズ株式会社 メモリコントローラおよびメモリモジュール
JP2019133623A (ja) * 2018-01-30 2019-08-08 廣達電脳股▲ふん▼有限公司 メモリモジュール内のデータを保全するコンピュータシステムおよびそれを用いたコンピュータ実装方法

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016068994A1 (en) * 2014-10-31 2016-05-06 Hewlett Packard Enterprise Development Lp Combined backup power
US11257527B2 (en) 2015-05-06 2022-02-22 SK Hynix Inc. Memory module with battery and electronic system having the memory module
KR20160131171A (ko) * 2015-05-06 2016-11-16 에스케이하이닉스 주식회사 배터리를 포함하는 메모리 모듈
US10031677B1 (en) 2015-10-14 2018-07-24 Rambus Inc. High-throughput low-latency hybrid memory module
US9891864B2 (en) * 2016-01-19 2018-02-13 Micron Technology, Inc. Non-volatile memory module architecture to support memory error correction
US10474550B2 (en) 2017-05-03 2019-11-12 Vmware, Inc. High availability for persistent memory
US10496443B2 (en) * 2017-05-03 2019-12-03 Vmware, Inc. OS/hypervisor-based persistent memory
US10585754B2 (en) 2017-08-15 2020-03-10 International Business Machines Corporation Memory security protocol
JP2019057071A (ja) * 2017-09-20 2019-04-11 ルネサスエレクトロニクス株式会社 半導体装置および当該半導体装置において用いられるプログラム
KR102353859B1 (ko) * 2017-11-01 2022-01-19 삼성전자주식회사 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈
US10762137B1 (en) 2017-11-15 2020-09-01 Amazon Technologies, Inc. Page table search engine
US10754789B1 (en) * 2017-11-15 2020-08-25 Amazon Technologies, Inc. Address translation for storage class memory in a system that includes virtual machines
US10810133B1 (en) * 2017-11-15 2020-10-20 Amazon Technologies, Inc. Address translation and address translation memory for storage class memory
US10838637B2 (en) 2018-02-08 2020-11-17 Micron Technology, Inc. Status management in storage backed memory package
US10831393B2 (en) * 2018-02-08 2020-11-10 Micron Technology, Inc. Partial save of memory
JP6907976B2 (ja) * 2018-03-14 2021-07-21 オムロン株式会社 コントローラ及びデータ保存方法
US10839862B2 (en) 2018-04-25 2020-11-17 Micron Technology, Inc. Cross point array memory in a non-volatile dual in-line memory module
US10956323B2 (en) * 2018-05-10 2021-03-23 Intel Corporation NVDIMM emulation using a host memory buffer
JP6563086B1 (ja) * 2018-06-28 2019-08-21 三菱電機株式会社 車載電子制御装置
US11112997B2 (en) 2018-08-21 2021-09-07 Samsung Electronics Co., Ltd. Storage device and operating method thereof
US11163718B2 (en) * 2018-10-30 2021-11-02 Dell Products L.P. Memory log retrieval and provisioning system
JP6708762B1 (ja) 2019-01-29 2020-06-10 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
US11042374B2 (en) 2019-05-02 2021-06-22 International Business Machines Corporation Non-volatile dual in-line memory module storage
WO2021128217A1 (zh) * 2019-12-26 2021-07-01 华为技术有限公司 一种数据查找系统及数据查找方法
EP3852505B1 (en) 2020-01-17 2023-12-06 Aptiv Technologies Limited Electronic control unit
EP3866013A1 (en) 2020-02-11 2021-08-18 Aptiv Technologies Limited Data logging system for collecting and storing input data
EP3872639A1 (en) * 2020-02-28 2021-09-01 Aptiv Technologies Limited Data logging device
CN114168401B (zh) * 2021-10-26 2023-08-18 苏州浪潮智能科技有限公司 一种日志记录方法、装置及电子设备
US20230305922A1 (en) * 2022-03-24 2023-09-28 Smart Modular Technologies, Inc. Serial attached non-volatile memory

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006164002A (ja) * 2004-12-09 2006-06-22 Fanuc Ltd 数値制御装置
JP2010152514A (ja) * 2008-12-24 2010-07-08 Toshiba Corp メモリシステム
US20110197018A1 (en) * 2008-10-06 2011-08-11 Sam Hyuk Noh Method and system for perpetual computing using non-volatile random access memory
US20130227201A1 (en) * 2010-12-13 2013-08-29 Fusion-Io, Inc. Apparatus, System, and Method for Accessing Auto-Commit Memory
JP2013235358A (ja) * 2012-05-08 2013-11-21 Hitachi Ulsi Systems Co Ltd 記憶装置
US20140325116A1 (en) * 2013-04-29 2014-10-30 Amazon Technologies, Inc. Selectively persisting application program data from system memory to non-volatile data storage

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000222290A (ja) 1999-02-03 2000-08-11 Matsushita Electric Ind Co Ltd バックアップメモリ装置とそのメモリ方法
US7006318B2 (en) * 2002-08-29 2006-02-28 Freescale Semiconductor, Inc. Removable media storage system with memory for storing operational data
JP4661369B2 (ja) 2005-05-31 2011-03-30 Tdk株式会社 メモリコントローラ
JP2009157756A (ja) 2007-12-27 2009-07-16 Toshiba Corp 情報処理装置およびデータ復旧方法
JP2010026674A (ja) 2008-07-17 2010-02-04 Renesas Technology Corp 半導体集積回路
JP4491034B1 (ja) * 2008-12-19 2010-06-30 株式会社東芝 不揮発性記憶デバイスを有する記憶装置
US8527693B2 (en) * 2010-12-13 2013-09-03 Fusion IO, Inc. Apparatus, system, and method for auto-commit memory
US9274899B2 (en) * 2013-07-11 2016-03-01 Red Hat, Inc. Providing non-volatile memory for suspend-to-random access memory
US9436563B2 (en) * 2013-10-01 2016-09-06 Globalfoundries Inc. Memory system for mirroring data
KR102190399B1 (ko) * 2013-10-11 2020-12-11 삼성전자주식회사 신뢰성을 보장할 수 있는 불휘발성 메모리 장치의 동작 방법 및 상기 방법을 수행하는 메모리 시스템

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006164002A (ja) * 2004-12-09 2006-06-22 Fanuc Ltd 数値制御装置
US20060150012A1 (en) * 2004-12-09 2006-07-06 Fanuc Ltd Numerical controller
US20110197018A1 (en) * 2008-10-06 2011-08-11 Sam Hyuk Noh Method and system for perpetual computing using non-volatile random access memory
JP2010152514A (ja) * 2008-12-24 2010-07-08 Toshiba Corp メモリシステム
US20130227201A1 (en) * 2010-12-13 2013-08-29 Fusion-Io, Inc. Apparatus, System, and Method for Accessing Auto-Commit Memory
JP2013235358A (ja) * 2012-05-08 2013-11-21 Hitachi Ulsi Systems Co Ltd 記憶装置
US20140325116A1 (en) * 2013-04-29 2014-10-30 Amazon Technologies, Inc. Selectively persisting application program data from system memory to non-volatile data storage
WO2014179333A1 (en) * 2013-04-29 2014-11-06 Amazon Technologies, Inc. Selective backup of program data to non-volatile memory
JP2016517122A (ja) * 2013-04-29 2016-06-09 アマゾン・テクノロジーズ・インコーポレーテッド システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018156131A (ja) * 2017-03-15 2018-10-04 東芝メモリ株式会社 情報処理装置、ストレージデバイスおよび情報処理システム
CN108628771A (zh) * 2017-03-15 2018-10-09 东芝存储器株式会社 信息处理装置、存储设备以及信息处理系统
CN108628771B (zh) * 2017-03-15 2022-07-05 铠侠股份有限公司 信息处理装置、存储设备以及信息处理系统
JP2018190412A (ja) * 2017-05-09 2018-11-29 三星電子株式会社Samsung Electronics Co.,Ltd. ハイブリッドメモリにおける書き込み及びフラッシュ支援のためのメモリモジュール及びその動作方法
JP7115899B2 (ja) 2017-05-09 2022-08-09 三星電子株式会社 ハイブリッドメモリにおける書き込み及びフラッシュ支援のためのメモリモジュール及びその動作方法
WO2019138624A1 (ja) * 2018-01-12 2019-07-18 ソニーセミコンダクタソリューションズ株式会社 メモリコントローラおよびメモリモジュール
JP2019133623A (ja) * 2018-01-30 2019-08-08 廣達電脳股▲ふん▼有限公司 メモリモジュール内のデータを保全するコンピュータシステムおよびそれを用いたコンピュータ実装方法
US10872018B2 (en) 2018-01-30 2020-12-22 Quanta Computer Inc. Memory data preservation solution

Also Published As

Publication number Publication date
CN106484571A (zh) 2017-03-08
US20170060706A1 (en) 2017-03-02
JP6479608B2 (ja) 2019-03-06
US9946610B2 (en) 2018-04-17
CN106484571B (zh) 2019-06-14

Similar Documents

Publication Publication Date Title
JP6479608B2 (ja) メモリ装置およびメモリ制御方法
US12038834B2 (en) Memory system and method for controlling nonvolatile memory during command processing without replacing defective blocks
TWI700586B (zh) 計算機系統及儲存裝置之控制方法
TWI661301B (zh) 記憶體系統及控制非揮發性記憶體之控制方法
CN114115747B (zh) 存储器系统及控制方法
CN110795206B (zh) 用于促进集群级缓存和内存空间的系统和方法
EP3502877B1 (en) Data loading method and apparatus for virtual machines
JP2006178983A (ja) バッファメモリに貯蔵されたデータを無効化させるスキームを有する貯蔵システム及びそれを含んだコンピューティングシステム
KR20100091544A (ko) 메모리 시스템 및 그 마모도 관리 방법
JP2020123038A (ja) メモリシステムおよび制御方法
JP6165964B2 (ja) 計算機
WO2015015589A1 (ja) 情報処理装置、メモリダンプ方法、およびメモリダンププログラム
US9569113B2 (en) Data storage device and operating method thereof
JP2006164095A (ja) ディスクシステム
US8886908B2 (en) Management of multiple capacity types in storage systems
KR101104361B1 (ko) Nvram과 휘발성 램을 이용하여 선택적으로 프로세스의 영속성을 구현하는 컴퓨팅 시스템 및 방법
US20240330116A1 (en) Allocating system rdp metadata space with io performance priority
US20240370366A1 (en) Computing system and method for controlling storage device
KR20140046951A (ko) 데이터 저장 장치 및 그 동작 방법

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170531

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180706

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180830

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190206

R150 Certificate of patent or registration of utility model

Ref document number: 6479608

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350