(57)【要約】  揮発メモリの離散的な物理アドレスにマッピングされているデータであっても、適切に不揮発メモリにセーブする。  メモリ管理情報登録部は、揮発メモリである第１のメモリの物理アドレスと不揮発メモリである第２のメモリのアドレスとを管理単位毎に関連付けてメモリ管理情報のエントリとして登録する。制御部は、セーブリクエストに応じてメモリ管理情報に従って第１のメモリから第２のメモリにデータをセーブし、リストアリクエストに応じてメモリ管理情報に従って第２のメモリから前記第１のメモリにデータをリストアする。
2019138624.tif 000002
【特許請求の範囲】
【請求項１】
揮発メモリである第１のメモリの物理アドレスと不揮発メモリである第２のメモリのアドレスとを管理単位毎に関連付けてメモリ管理情報のエントリとして登録するメモリ管理情報登録部と、
セーブリクエストに応じて前記メモリ管理情報に従って前記第１のメモリから前記第２のメモリにデータをセーブし、リストアリクエストに応じて前記メモリ管理情報に従って前記第２のメモリから前記第１のメモリにデータをリストアする制御部と
を具備するメモリコントローラ。
【請求項２】
前記メモリ管理情報登録部は、前記メモリ管理情報としてアプリケーション毎に関連付けて前記第１のメモリの物理アドレスと前記第２のメモリのアドレスとを登録する
請求項１記載のメモリコントローラ。
【請求項３】
前記制御部は、前記セーブリクエストにおいて指定されたアプリケーションに対応する前記メモリ管理情報のエントリに従って前記第１のメモリの物理アドレスから前記第２のメモリのアドレスにデータをセーブし、前記リストアリクエストにおいて指定されたアプリケーションに対応する前記メモリ管理情報のエントリに従って前記第２のメモリのアドレスから前記第１のメモリの物理アドレスにデータをリストアする
請求項２記載のメモリコントローラ。
【請求項４】
前記メモリ管理情報登録部は、前記メモリ管理情報としてアプリケーション毎に関連付けて前記第１のメモリの物理アドレスと前記第２のメモリのアドレスとセーブ動作に関する属性とを登録し、
前記制御部は、前記セーブリクエストにおいて指定されたアプリケーションに対応する前記メモリ管理情報のエントリの属性に従って前記第１のメモリの物理アドレスから前記第２のメモリのアドレスにデータをセーブする
請求項１記載のメモリコントローラ。
【請求項５】
前記制御部は、ホストコンピュータとの間のメモリアクセスインターフェースに接続して前記ホストコンピュータからの要求に応じて前記第１または第２のメモリにアクセスを行う
請求項１記載のメモリコントローラ。
【請求項６】
前記メモリ管理情報における各エントリに対応する前記管理単位のサイズを管理サイズとして設定する管理サイズ設定部をさらに具備し、
前記制御部は、前記管理サイズに従って前記セーブリクエストまたは前記リストアリクエストに対応する処理を行う
請求項１記載のメモリコントローラ。
【請求項７】
前記制御部は、前記メモリ管理情報の登録リクエストにおいて指定されたアプリケーションに対応する前記メモリ管理情報のエントリが存在しない場合には新たなエントリを生成し、対応するエントリが存在する場合にはその登録リクエストにおいて指定された物理アドレスをそのエントリに登録する
請求項１記載のメモリコントローラ。
【請求項８】
前記メモリ管理情報登録部は、前記メモリ管理情報としてアプリケーション毎に関連付けて前記第１のメモリの仮想アドレスおよび物理アドレスと前記第２のメモリのアドレスとを登録する
請求項１記載のメモリコントローラ。
【請求項９】
前記制御部は、前記メモリ管理情報の登録リクエストにおいて指定されたアプリケーションおよび仮想アドレスに対応する前記メモリ管理情報のエントリが存在しない場合には新たなエントリを生成し、対応するエントリが存在する場合にはその登録リクエストにおいて指定された物理アドレスをそのエントリに登録する
請求項８記載のメモリコントローラ。
【請求項１０】
揮発メモリである第１のメモリと、
不揮発メモリである第２のメモリと、
前記第１のメモリの物理アドレスと前記第２のメモリのアドレスとを管理単位毎に関連付けてメモリ管理情報のエントリとして登録するメモリ管理情報登録部と、
セーブリクエストに応じて前記メモリ管理情報に従って前記第１のメモリから前記第２のメモリにデータをセーブし、リストアリクエストに応じて前記メモリ管理情報に従って前記第２のメモリから前記第１のメモリにデータをリストアする制御部と
を具備するメモリモジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリコントローラに関する。詳しくは、揮発メモリの内容を不揮発メモリにセーブし、リストアするメモリコントローラおよびメモリモジュールに関する。
【背景技術】
【０００２】
従来のメモリ装置では、揮発メモリの内容の消失を防ぐため、不揮発メモリにセーブし、その後リストアする技術が用いられている。例えば、電源遮断のイベントに応答して、揮発メモリであるＤＲＡＭのデータを、不揮発メモリであるＮＶＲＡＭにセーブするメモリ装置が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−０４５３７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術では、プログラム毎に揮発メモリおよび不揮発メモリのアドレスを管理して、それに従って揮発メモリのデータを不揮発メモリにセーブしている。この従来技術では、各プログラムが揮発メモリの連続領域に記憶されていることを想定しており、プログラム毎に１つのアドレスを管理している。しかしながら、オペレーティングシステム上で動作するアプリケーションのデータは、離散的な物理アドレスにマッピングされることが多く、そのようなデータを適切にセーブすることができないという問題がある。【０００５】
本技術はこのような状況に鑑みて生み出されたものであり、揮発メモリの離散的な物理アドレスにマッピングされているデータであっても、適切に不揮発メモリにセーブすることを目的とする。
【課題を解決するための手段】
【０００６】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、揮発メモリである第１のメモリの物理アドレスと不揮発メモリである第２のメモリのアドレスとを管理単位毎に関連付けてメモリ管理情報のエントリとして登録するメモリ管理情報登録部と、セーブリクエストに応じて上記メモリ管理情報に従って上記第１のメモリから上記第２のメモリにデータをセーブし、リストアリクエストに応じて上記メモリ管理情報に従って上記第２のメモリから上記第１のメモリにデータをリストアする制御部とを具備するメモリコントローラおよびメモリモジュールである。これにより、第１のメモリの物理アドレスに分散して記憶されているデータを管理単位毎に第２のメモリにセーブし、リストアするという作用をもたらす。【０００７】
また、この第１の側面において、上記メモリ管理情報登録部は、上記メモリ管理情報としてアプリケーション毎に関連付けて上記第１のメモリの物理アドレスと上記第２のメモリのアドレスとを登録するようにしてもよい。これにより、アプリケーション毎にセーブおよびそのリストアを行うという作用をもたらす。【０００８】
また、この第１の側面において、上記制御部は、上記セーブリクエストにおいて指定されたアプリケーションに対応する上記メモリ管理情報のエントリに従って上記第１のメモリの物理アドレスから上記第２のメモリのアドレスにデータをセーブし、上記リストアリクエストにおいて指定されたアプリケーションに対応する上記メモリ管理情報のエントリに従って上記第２のメモリのアドレスから上記第１のメモリの物理アドレスにデータをリストアするようにしてもよい。これにより、各アプリケーションの管理単位毎に物理アドレスを用いてセーブおよびそのリストアを行うという作用をもたらす。【０００９】
また、この第１の側面において、上記メモリ管理情報登録部は、上記メモリ管理情報としてアプリケーション毎に関連付けて上記第１のメモリの物理アドレスと上記第２のメモリのアドレスとセーブ動作に関する属性とを登録し、上記制御部は、上記セーブリクエストにおいて指定されたアプリケーションに対応する上記メモリ管理情報のエントリの属性に従って上記第１のメモリの物理アドレスから上記第２のメモリのアドレスにデータをセーブするようにしてもよい。これにより、管理単位毎に属性によってセーブの要否を指示するという作用をもたらす。【００１０】
また、この第１の側面において、上記制御部は、ホストコンピュータとの間のメモリアクセスインターフェースに接続して上記ホストコンピュータからの要求に応じて上記第１または第２のメモリにアクセスを行うようにしてもよい。これにより、第１のメモリと第２のメモリの区別を意識させることなくホストコンピュータからの要求を受け付けるという作用をもたらす。【００１１】
また、この第１の側面において、上記メモリ管理情報における各エントリに対応する上記管理単位のサイズを管理サイズとして設定する管理サイズ設定部をさらに具備し、上記制御部は、上記管理サイズに従って上記セーブリクエストまたは上記リストアリクエストに対応する処理を行うようにしてもよい。これにより、管理サイズを設定させるという作用をもたらす。【００１２】
また、この第１の側面において、上記制御部は、上記メモリ管理情報の登録リクエストにおいて指定されたアプリケーションに対応する上記メモリ管理情報のエントリが存在しない場合には新たなエントリを生成し、対応するエントリが存在する場合にはその登録リクエストにおいて指定された物理アドレスをそのエントリに登録するようにしてもよい。これにより、メモリ管理情報を登録させるという作用をもたらす。【００１３】
また、この第１の側面において、上記メモリ管理情報登録部は、上記メモリ管理情報としてアプリケーション毎に関連付けて上記第１のメモリの仮想アドレスおよび物理アドレスと上記第２のメモリのアドレスとを登録するようにしてもよい。これにより、各アプリケーションの任意の管理単位をセーブするという作用をもたらす。【００１４】
また、この第１の側面において、上記制御部は、上記メモリ管理情報の登録リクエストにおいて指定されたアプリケーションおよび仮想アドレスに対応する上記メモリ管理情報のエントリが存在しない場合には新たなエントリを生成し、対応するエントリが存在する場合にはその登録リクエストにおいて指定された物理アドレスをそのエントリに登録するようにしてもよい。これにより、仮想アドレスを含むメモリ管理情報を登録させるという作用をもたらす。
【発明の効果】
【００１５】
本技術によれば、揮発メモリの離散的な物理アドレスにマッピングされているデータであっても、適切に不揮発メモリにセーブすることができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１６】
【図１】本技術の第１の実施の形態における情報処理システムの全体構成の一例を示す図である。
【図２】本技術の第１の実施の形態におけるメモリコントローラ２４０の構成例を示す図である。
【図３】本技術の第１の実施の形態における管理サイズ情報およびメモリ管理情報の一例を示す図である。
【図４】本技術の第１の実施の形態におけるセーブ動作の一例を示す図である。
【図５】本技術の第１の実施の形態におけるリストア動作の一例を示す図である。
【図６】本技術の第１の実施の形態におけるメモリコントローラ２４０に発行されるリクエストの例を示す図である。
【図７】本技術の実施の形態におけるメモリコントローラ２４０の処理手順の一例を示す流れ図である。
【図８】本技術の第１の実施の形態における管理サイズ設定処理の処理手順の一例を示す流れ図である。
【図９】本技術の第１の実施の形態におけるメモリ管理情報登録処理の処理手順の一例を示す流れ図である。
【図１０】本技術の第１の実施の形態におけるセーブ動作の処理手順の一例を示す流れ図である。
【図１１】本技術の第１の実施の形態におけるリストア動作の処理手順の一例を示す流れ図である。
【図１２】本技術の第２の実施の形態における管理サイズ情報およびメモリ管理情報の一例を示す図である。
【図１３】本技術の第２の実施の形態におけるセーブ動作の一例を示す図である。
【図１４】本技術の第２の実施の形態におけるリストア動作の一例を示す図である。
【図１５】本技術の第２の実施の形態におけるメモリコントローラ２４０に発行されるリクエストの例を示す図である。
【図１６】本技術の第２の実施の形態におけるメモリ管理情報登録処理の処理手順の一例を示す流れ図である。
【図１７】本技術の第３の実施の形態における管理サイズ情報およびメモリ管理情報の一例を示す図である。
【図１８】本技術の第３の実施の形態におけるメモリコントローラ２４０に発行されるリクエストの例を示す図である。
【図１９】本技術の第３の実施の形態におけるセーブ動作の処理手順の一例を示す流れ図である。
【図２０】本技術の第４の実施の形態における情報処理システムの全体構成の一例を示す図である。
【図２１】本技術の第４の実施の形態におけるメモリコントローラ２４０の構成例を示す図である。
【発明を実施するための形態】
【００１７】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（メモリ管理情報により管理単位毎に管理する例）
２．第２の実施の形態（メモリ管理情報に揮発メモリの仮想アドレスを記憶する例）
３．第３の実施の形態（メモリ管理情報に属性情報を記憶する例）
４．第４の実施の形態（メモリモジュールのアドレス空間を仮想化する例）
【００１８】
＜１．第１の実施の形態＞
［システム構成］
図１は、本技術の第１の実施の形態における情報処理システムの全体構成の一例を示す図である。このシステムは、ホストコンピュータ１００およびメモリモジュール２００を備える。
【００１９】
ホストコンピュータ１００は、メモリモジュール２００から読み出したデータについて処理を行い、その処理結果のデータをメモリモジュール２００に書き込むものである。このホストコンピュータ１００は、プロセッサ１１０と、メモリ管理部１２０と、メモリアクセス部１３０と、メモリモジュール制御部１４０と、電源１５０とを備える。
【００２０】
プロセッサ１１０は、ホストコンピュータ１００としての処理を行う処理装置である。オペレーティングシステムおよびその上で動作するアプリケーションは、このプロセッサ１１０により実行される。
【００２１】
メモリ管理部１２０は、メモリモジュール２００におけるメモリ空間の管理を行うメモリ管理ユニット（ＭＭＵ：Memory Management Unit）である。このメモリ管理部１２０は、その処理の一部として、論理アドレスと物理アドレスの間の変換処理を行う。
【００２２】
メモリアクセス部１３０は、メモリモジュール２００に対するアクセスを制御するものである。このメモリアクセス部１３０は、メモリアクセスインターフェース１０３を介してメモリモジュール２００と接続し、メモリモジュール２００に対するデータのライトおよびリードのアクセスを行う。
【００２３】
メモリモジュール制御部１４０は、メモリモジュール２００を使用するための制御を行うものである。このメモリモジュール制御部１４０は、メモリ制御インターフェース１０４を介してメモリモジュール２００と接続して、メモリモジュール２００に対するリクエストを発行する。メモリ制御インターフェース１０４としては、例えば、Ｉ２Ｃのようなシリアルバスが想定される。
【００２４】
電源１５０は、ホストコンピュータ１００の電源である。この電源１５０は、電源ライン１０５を介してメモリモジュール２００にも接続されており、メモリモジュール２００に電源を供給する。この電源１５０の電圧レベルはオペレーティングシステムによって監視されており、瞬間停電（瞬停）などのイベントが検出されると、メモリモジュール制御部１４０はメモリ制御インターフェース１０４を介してメモリモジュール２００にセーブリクエストを発行する。これにより、メモリモジュール２００において揮発メモリ２１０から不揮発メモリ２２０へのセーブ処理が行われる。
【００２５】
メモリモジュール２００は、ホストコンピュータ１００からの要求に従ってデータを読み書きするメモリ装置である。このメモリモジュール２００は、揮発メモリ２１０と、不揮発メモリ２２０と、マルチプレクサ２３０と、メモリコントローラ２４０と、バックアップ電源２５０と、電源制御部２６０とを備える。
【００２６】
揮発メモリ２１０は、記憶を維持するために電源供給を必要とするメモリである。例えば、ＤＲＡＭ（Dynamic Random Access Memory）等が想定される。なお、揮発メモリ２１０は、特許請求の範囲に記載の第１のメモリの一例である。
【００２７】
不揮発メモリ２２０は、記憶を維持するために電源供給を必要としないメモリである。例えば、ＲｅＲＡＭ（Resistance RAM）、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）、ＮＡＮＤフラッシュ等が想定される。なお、不揮発メモリ２２０は、特許請求の範囲に記載の第２のメモリの一例である。
【００２８】
マルチプレクサ２３０は、揮発メモリ２１０の接続先をメモリコントローラ２４０またはホストコンピュータ１００の何れか一方に切り替えるものである。ホストコンピュータ１００が揮発メモリ２１０にアクセスする際には、マルチプレクサ２３０は揮発メモリ２１０の接続先をホストコンピュータ１００（メモリアクセスインターフェース１０３）に切り替える。不揮発メモリ２２０へのセーブやリストアを行う際には、マルチプレクサ２３０は揮発メモリ２１０の接続先をメモリコントローラ２４０に切り替える。
【００２９】
メモリコントローラ２４０は、揮発メモリ２１０および不揮発メモリ２２０に対するアクセスを制御するものである。このメモリコントローラ２４０は、ホストコンピュータ１００からメモリ制御インターフェース１０４を介して受けたリクエストをデコードして、リクエストに応じた処理を行う。
【００３０】
バックアップ電源２５０は、電源ライン１０５を介した電源１５０からの電源供給が瞬間停電などにより途絶えた場合に使用される電源である。このバックアップ電源２５０は、大容量のコンデンサ（supercapacitor）であり、揮発メモリ２１０から不揮発メモリ２２０にセーブするために必要な時間（例えば、１分から数十秒程度）、メモリモジュール２００に電源を供給する機能を有する。
【００３１】
電源制御部２６０は、メモリモジュール２００の電源を制御するものである。この電源制御部２６０は、通常運転時には電源ライン１０５を介して電源１５０から受けた電源を全体に供給し、瞬間停電などの際にはバックアップ電源２５０からの電源を全体に供給するように切り替える。
【００３２】
図２は、本技術の第１の実施の形態におけるメモリコントローラ２４０の構成例を示す図である。
【００３３】
メモリコントローラ２４０は、リクエストデコーダ２４１と、制御部２４２と、管理サイズ情報設定部２４３と、メモリ管理情報登録部２４４とを備える。
【００３４】
リクエストデコーダ２４１は、ホストコンピュータ１００からメモリ制御インターフェース１０４を介して受けたリクエストをデコードするデコーダである。このリクエストデコーダ２４１は、リクエストを判別して、制御部２４２に判別結果を供給する。
【００３５】
制御部２４２は、リクエストデコーダ２４１によるリクエストの判別結果に従って揮発メモリ２１０および不揮発メモリ２２０に関する処理を行うものである。この制御部２４２は、例えば、揮発メモリ２１０から不揮発メモリ２２０のデータ領域へのセーブおよびそのリストアを行う。処理の詳細については後述する。
【００３６】
管理サイズ情報設定部２４３は、揮発メモリ２１０から不揮発メモリ２２０へのセーブおよびそのリストアを行う際の管理単位のサイズを管理サイズとして設定するものである。設定された管理サイズは不揮発メモリ２２０に記憶される。
【００３７】
メモリ管理情報登録部２４４は、揮発メモリ２１０から不揮発メモリ２２０へのセーブおよびそのリストアを行う際の、揮発メモリ２１０と不揮発メモリ２２０との対応関係を管理するメモリ管理情報を登録するものである。登録されたメモリ管理情報は不揮発メモリ２２０に記憶される。
【００３８】
［管理サイズ情報およびメモリ管理情報］
図３は、本技術の第１の実施の形態における管理サイズ情報およびメモリ管理情報の一例を示す図である。
【００３９】
管理サイズ情報は、揮発メモリ２１０から不揮発メモリ２２０へのセーブおよびそのリストアを行う際の管理単位のサイズである管理サイズを備える。この例では、管理単位として４ＫＢを想定している。この管理サイズはオペレーティングシステムの管理単位に合わせて設定することができる。したがって、オペレーティングシステムにおいて例えば２ＭＢのラージページ等が使用されている場合には、この管理サイズもそのようなサイズに設定することができる。
【００４０】
メモリ管理情報は、管理単位毎にエントリを備え、各エントリは、アプリケーション識別子と、揮発メモリ２１０の物理アドレスと、不揮発メモリ２２０のアドレスとを関連付けて記憶している。
【００４１】
アプリケーション識別子は、プロセッサ１１０によって実行されるアプリケーションプログラムを識別するための識別子である。この例では、「１」および「２」の２つのアプリケーション識別子が示されている。
【００４２】
揮発メモリ２１０の物理アドレスは、管理サイズ情報として設定された管理サイズを単位として０から割り当ててもよく、また、バイト単位で示してもよい。
【００４３】
［セーブとリストア］
図４は、本技術の第１の実施の形態におけるセーブ動作の一例を示す図である。
【００４４】
複数のアプリケーションが動作しているときには、それぞれが仮想アドレス空間上で動作している。ホストコンピュータ１００のメモリ管理部１２０は、仮想アドレス空間をあるサイズで区切り、その区切られた単位で物理アドレスに変換している。この実施の形態では、上述のように４ＫＢを想定している。物理アドレスの割当ては、ホストコンピュータ１００のメモリ管理部１２０によって行われるが、毎回同じ物理アドレスに割り当てられるとは限らない。したがって、源断時のセーブと次の電源オン時において異なる物理アドレスが割り当てられた時でも、データを復元（リストア）できるようにする必要がある。
【００４５】
この例では、アプリケーション識別子が「１」であるアプリケーション＃１の仮想アドレス空間はｎ個のページにより形成され、アプリケーション識別子が「２」であるアプリケーション＃２の仮想アドレス空間はｍ個のページにより形成される。これらのページは、揮発メモリ２１０の物理アドレス空間において離散的に配置される。
【００４６】
セーブ動作においては、メモリ管理情報に従って、揮発メモリ２１０の物理アドレス空間において離散的に配置される管理単位のデータを、不揮発メモリ２２０の連続領域に保存する。これにより、不揮発メモリ２２０の未使用領域の保存が不要になり、セーブ時間を短くすることができ、また、不揮発メモリ２２０の使用容量も少なくすることができるという利点がある。
【００４７】
図５は、本技術の第１の実施の形態におけるリストア動作の一例を示す図である。
【００４８】
リストア動作においては、メモリ管理情報に従って、不揮発メモリ２２０の連続領域に保存されている管理単位のデータを揮発メモリ２１０の物理アドレス空間にリストアする。
【００４９】
このとき、リストア前にメモリ管理情報を書き換えると、揮発メモリ２１０の異なる物理領域にリストアすることができる。すなわち、電源断の後の起動時には、オペレーティングシステムによってセーブ時とは異なる物理アドレスが割り当てられる可能性があるが、この実施の形態によれば、その場合であっても適切な物理領域にリストアすることができる。
【００５０】
［リクエストの種別］
図６は、本技術の第１の実施の形態におけるメモリコントローラ２４０に発行されるリクエストの例を示す図である。
【００５１】
ここでは、メモリ制御インターフェース１０４を介してメモリコントローラ２４０に発行される４つのリクエストを例示して説明する。メモリ制御インターフェース１０４を介して発行されるリクエストには、リクエスト識別子が示されており、これをリクエストデコーダ２４１によってデコードすることにより、そのリクエストの種類を判別することができる。
【００５２】
リクエスト識別子が「１」を示す場合には、そのリクエストは管理サイズ設定リクエストであると判別される。この管理サイズ設定リクエストは、「管理サイズ」を引数として渡す。これにより、制御部２４２は、その管理サイズを設定する。
【００５３】
リクエスト識別子が「２」を示す場合には、そのリクエストはメモリ管理情報登録リクエストであると判別される。このメモリ管理情報登録リクエストは、「アプリケーション識別子」および「物理アドレス」を引数として渡す。これにより、制御部２４２は、メモリ管理情報を登録する。
【００５４】
リクエスト識別子が「３」を示す場合には、そのリクエストはセーブリクエストであると判別される。このセーブリクエストは、「セーブ対象数」およびその数に応じた「アプリケーション識別子」を引数として渡す。これにより、制御部２４２は、アプリケーション識別子に対応するデータを揮発メモリ２１０から不揮発メモリ２２０にセーブする。なお、「アプリケーション識別子」を指定する代わりに、全てのアプリケーション識別子を対象として指示するようにしてもよい。
【００５５】
リクエスト識別子が「４」を示す場合には、そのリクエストはリストアリクエストであると判別される。このリストアリクエストは、「リストア対象数」およびその数に応じた「アプリケーション識別子」を引数として渡す。これにより、制御部２４２は、アプリケーション識別子に対応するデータを不揮発メモリ２２０から揮発メモリ２１０にリストアする。なお、「アプリケーション識別子」を指定する代わりに、全てのアプリケーション識別子を対象として指示するようにしてもよい。
【００５６】
［動作］
図７は、本技術の実施の形態におけるメモリコントローラ２４０の処理手順の一例を示す流れ図である。
【００５７】
メモリコントローラ２４０は、メモリ制御インターフェース１０４を介してリクエストを受けると（ステップＳ９１１）、リクエストデコーダ２４１によってデコードを行って、リクエストの種別に応じた処理を行う（ステップＳ９１２乃至Ｓ９１５）。すなわち、リクエストの種別が管理サイズ設定リクエストであれば（ステップＳ９１２：Ｙｅｓ）、管理サイズ設定処理を行う（ステップＳ９２０）。リクエストの種別がメモリ管理情報登録リクエストであれば（ステップＳ９１３：Ｙｅｓ）、メモリ管理情報登録処理を行う（ステップＳ９３０）。リクエストの種別がセーブリクエストであれば（ステップＳ９１４：Ｙｅｓ）、セーブ動作の処理を行う（ステップＳ９４０）。リクエストの種別がリストアリクエストであれば（ステップＳ９１５：Ｙｅｓ）、リストア動作の処理を行う（ステップＳ９５０）。
【００５８】
なお、リクエストの種別がここに示した４つ以外の場合には（ステップＳ９１５：Ｎｏ）その他の処理を行う（ステップＳ９１６）。その他のリクエストとしては、例えば、メモリ管理情報のエントリを削除するリクエストなどが想定される。
【００５９】
図８は、本技術の第１の実施の形態における管理サイズ設定処理の処理手順の一例を示す流れ図である。
【００６０】
管理サイズ情報設定部２４３は、管理サイズ設定リクエストの引数として渡された「管理サイズ」を管理単位のサイズとして設定する（ステップＳ９２１）。そして、その管理サイズを不揮発メモリ２２０の管理サイズ情報に保存する（ステップＳ９２２）。
【００６１】
図９は、本技術の第１の実施の形態におけるメモリ管理情報登録処理の処理手順の一例を示す流れ図である。なお、１つのアプリケーション識別子に対して複数のエントリが対応し得るが、この第１の実施の形態では仮想アドレスが引数として指定されないことを想定している。したがって、メモリ管理情報を登録する際には、例えば仮想アドレスが小さい順に各エントリに登録することになる。
【００６２】
メモリ管理情報登録部２４４は、以下の手順によりメモリ管理情報を登録する。まず、メモリ管理情報登録リクエストの引数として渡された「アプリケーション識別子」のエントリがメモリ管理情報として登録されているか否かを検索する（ステップＳ９３１）。
【００６３】
既に登録されていれば（ステップＳ９３１：Ｙｅｓ）、その登録されているエントリの物理アドレスを、メモリ管理情報登録リクエストの引数として渡された「物理アドレス」により置き換えて、不揮発メモリ２２０のメモリ管理情報に保存する（ステップＳ９３２）。
【００６４】
一方、未だ登録されていなければ（ステップＳ９３１：Ｎｏ）、不揮発メモリ２２０において領域を割り当てて、その領域の先頭アドレスとメモリ管理情報登録リクエストの引数の情報を合わせて、メモリ管理情報の１つのエントリを生成する（ステップＳ９３３）。そして、その生成されたメモリ管理情報の１つのエントリを、不揮発メモリ２２０のメモリ管理情報に保存する（ステップＳ９３４）。
【００６５】
図１０は、本技術の第１の実施の形態におけるセーブ動作の処理手順の一例を示す流れ図である。
【００６６】
制御部２４２は、以下の手順によりセーブ動作の処理を行う。まず、セーブリクエストの引数として渡された「アプリケーション識別子」を順次、処理対象のアプリケーション識別子として設定する（ステップＳ９４２）。そして、その処理対象のアプリケーション識別子のエントリを、不揮発メモリ２２０に保存されているメモリ管理情報から検索する（ステップＳ９４３）。
【００６７】
処理対象のアプリケーション識別子のエントリでセーブを行っていないデータがあれば（ステップＳ９４４：Ｙｅｓ）、読み出したエントリに基づいて、揮発メモリ２１０から管理単位分のデータを不揮発メモリ２２０に転送してセーブする（ステップＳ９４６）。すなわち、メモリ管理情報のエントリの揮発メモリ２１０の物理アドレスから不揮発メモリ２２０のアドレスにセーブを行う。そして、ステップＳ９４３に戻って、処理対象のアプリケーション識別子の他のエントリを検索する。
【００６８】
一方、処理対象のアプリケーション識別子において全ての管理単位のセーブが完了すると（ステップＳ９４４：Ｎｏ）、セーブリクエストの引数として渡された「アプリケーション識別子」の中で、他にセーブ対象となるものがないか判断する（ステップＳ９４７）。まだセーブしていないアプリケーション識別子があれば（ステップＳ９４７：Ｎｏ）、ステップＳ９４２に戻って、処理対象のアプリケーション識別子として設定する。
【００６９】
図１１は、本技術の第１の実施の形態におけるリストア動作の処理手順の一例を示す流れ図である。
【００７０】
制御部２４２は、以下の手順によりリストア動作の処理を行う。まず、不揮発メモリ２２０から管理サイズ情報を読み出して、管理単位を設定する（ステップＳ９５１）。また、リストアリクエストの引数として渡された「アプリケーション識別子」を順次、処理対象のアプリケーション識別子として設定する（ステップＳ９５２）。そして、その処理対象のアプリケーション識別子のエントリを、不揮発メモリ２２０に保存されているメモリ管理情報から検索する（ステップＳ９５３）。
【００７１】
処理対象のアプリケーション識別子のエントリでリストアを行っていないデータがあれば（ステップＳ９５４：Ｙｅｓ）、読み出したエントリに基づいて、不揮発メモリ２２０から管理単位分のデータを揮発メモリ２１０に転送してリストアする（ステップＳ９５６）。すなわち、メモリ管理情報のエントリの不揮発メモリ２２０のアドレスから揮発メモリ２１０の物理アドレスにリストアを行う。そして、ステップＳ９５３に戻って、処理対象のアプリケーション識別子の他のエントリを検索する。
【００７２】
一方、処理対象のアプリケーション識別子において全ての管理単位のリストアが完了すると（ステップＳ９５４：Ｎｏ）、リストアリクエストの引数として渡された「アプリケーション識別子」の中で、他にリストア対象となるものがないか判断する（ステップＳ９５７）。まだリストアしていないアプリケーション識別子があれば（ステップＳ９５７：Ｎｏ）、ステップＳ９５２に戻って、処理対象のアプリケーション識別子として設定する。
【００７３】
このように、本技術の第１の実施の形態によれば、揮発メモリ２１０の離散的な物理アドレスにマッピングされているデータを、メモリ管理情報として管理単位毎に管理することにより、不揮発メモリ２２０にセーブし、それをリストアすることができる。
【００７４】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、セーブおよびリストアされるデータが仮想アドレス空間において連続していることを想定して、メモリ管理情報の各エントリには揮発メモリ２１０の物理アドレスのみを記憶していた。これに対し、この第２の実施の形態では、さらに揮発メモリ２１０の仮想アドレスを記憶することにより、仮想アドレス上の不連続領域についてもセーブおよびリストアの対象とする。すなわち、必要な個所を選択的にセーブすることが可能となる。
【００７５】
なお、システム構成については上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
【００７６】
［管理サイズ情報およびメモリ管理情報］
図１２は、本技術の第２の実施の形態における管理サイズ情報およびメモリ管理情報の一例を示す図である。
【００７７】
管理サイズ情報については、上述の第１の実施の形態と同様であり、この例では、管理単位として４ＫＢを想定している。
【００７８】
メモリ管理情報については、上述の第１の実施の形態に加えて、揮発メモリ２１０の仮想アドレスをさらに記憶している。この仮想アドレスとしては、アプリケーション毎に異なるアドレス空間を割り当てることができる。このように、メモリ管理情報として揮発メモリ２１０の仮想アドレスを管理することにより、必要な仮想アドレスのデータのみをセーブすることができる。
【００７９】
［セーブとリストア］
図１３は、本技術の第２の実施の形態におけるセーブ動作の一例を示す図である。
【００８０】
上述の第１の実施の形態では、仮想アドレス空間において連続する領域をセーブしていたが、この第２の実施の形態ではメモリ管理情報の各エントリに揮発メモリ２１０の仮想アドレスを記憶することにより、セーブ対象となる離散的領域を仮想アドレスにより選択的に指示することができる。
【００８１】
この場合においても、セーブされたデータは不揮発メモリ２２０の連続領域に保存される。したがって、アプリケーション＃１のうちｋ個の管理単位がメモリ管理情報に登録されていた場合には、不揮発メモリ２２０上の連続するｋ個の管理単位の領域に記憶される。
【００８２】
図１４は、本技術の第２の実施の形態におけるリストア動作の一例を示す図である。
【００８３】
この第２の実施の形態においては、上述のように、セーブ動作において仮想アドレス空間における離散的領域が、不揮発メモリ２２０の連続領域に保存される。したがって、リストア動作においては、不揮発メモリ２２０の連続領域に記憶された管理単位が個別に、仮想アドレス空間にリストアされる。すなわち、揮発メモリ２１０においてリストアされない管理単位も生じ得る。
【００８４】
［リクエストの種別］
図１５は、本技術の第２の実施の形態におけるメモリコントローラ２４０に発行されるリクエストの例を示す図である。
【００８５】
この第２の実施の形態では、管理サイズ設定リクエスト、セーブリクエストおよびリストアリクエストについては、上述の第１の実施の形態と同様である。そして、メモリ管理情報登録リクエストについては、上述の第１の実施の形態の場合に加えて、揮発メモリ２１０の「仮想アドレス」を引数として渡すものとなっている。この引数に基づいて、この第２の実施の形態では、メモリ管理情報を登録する際に、各エントリに仮想アドレスを合わせて登録する。
【００８６】
［動作］
図１６は、本技術の第２の実施の形態におけるメモリ管理情報登録処理の処理手順の一例を示す流れ図である。なお、他の処理の処理手順については、上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
【００８７】
上述の第１の実施の形態では、メモリ管理情報登録リクエストの引数として渡された「アプリケーション識別子」のエントリがメモリ管理情報として登録されているか否かを検索していた（ステップＳ９３１）。これに対して、この第２の実施の形態では、メモリ管理情報登録リクエストの引数として渡された「アプリケーション識別子」および「仮想アドレス」の組合せを有するエントリがメモリ管理情報として登録されているか否かを検索する（ステップＳ９３５）。その結果、該当するエントリが既に登録されていればステップＳ９３２を実行し、まだ登録されていなければステップＳ９３３を実行する。以降の処理内容については上述の第１の実施の形態と同様である。
【００８８】
このように、本技術の第２の実施の形態によれば、メモリ管理情報として揮発メモリ２１０の仮想アドレスを管理することにより、必要な仮想アドレスのデータのみをセーブすることができる。
【００８９】
＜３．第３の実施の形態＞
上述の第１および第２の実施の形態では、メモリ管理情報として管理される全ての管理単位のデータをセーブおよびリストアの対象としていた。これに対し、例えば、通常の電源オフと瞬間停電とによって異なるデータをセーブ対象としたい場合などが生じ得る。そこで、この第３の実施の形態では、管理単位毎にセーブの要否を条件付きで指定できるようにする。
【００９０】
なお、システム構成については上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
【００９１】
［管理サイズ情報およびメモリ管理情報］
図１７は、本技術の第３の実施の形態における管理サイズ情報およびメモリ管理情報の一例を示す図である。
【００９２】
管理サイズ情報については、上述の第１の実施の形態と同様であり、この例では、管理単位として４ＫＢを想定している。
【００９３】
メモリ管理情報については、上述の第２の実施の形態に加えて、属性情報をさらに記憶している。この属性情報は、セーブの際の条件を管理単位毎に指定するものであり、後述するセーブリクエストの引数の「属性条件」と合致することを条件としてセーブ動作を行うことになる。
【００９４】
［リクエストの種別］
図１８は、本技術の第３の実施の形態におけるメモリコントローラ２４０に発行されるリクエストの例を示す図である。
【００９５】
この第３の実施の形態では、管理サイズ設定リクエストおよびリストアリクエストについては、上述の第１の実施の形態と同様である。
【００９６】
メモリ管理情報登録リクエストについては、上述の第１の実施の形態の場合に加えて、揮発メモリ２１０の「仮想アドレス」および「属性情報」を引数として渡すものとなっている。「仮想アドレス」については、上述の第２の実施の形態において追加したものと同様である。また、「属性情報」は、セーブの際の条件を管理単位毎に指定するものであり、上述のメモリ管理情報の属性情報として登録される。
【００９７】
セーブリクエストについては、上述の第１の実施の形態の場合に加えて、「属性条件」を引数として渡すものとなっている。この「属性条件」は、メモリ管理情報の各エントリの属性情報と合致することを条件としてセーブ動作を行う旨を指定するものである。例えば、メモリ管理情報の属性情報として「１」または「２」の何れかが設定されているものとする。このとき、「属性条件」が「１」の場合には、メモリ管理情報の属性情報が「１」を示すエントリのみがセーブ対象となる。また、「属性条件」が「２」の場合には、メモリ管理情報の属性情報が「２」を示すエントリのみがセーブ対象となる。そして、「属性条件」が「３」の場合には、メモリ管理情報の属性情報が「１」を示すエントリ、および、「２」を示すエントリがセーブ対象となる。
【００９８】
［動作］
図１９は、本技術の第３の実施の形態におけるセーブ動作の処理手順の一例を示す流れ図である。なお、他の処理の処理手順については、上述の第１または第２の実施の形態と同様であるため、詳細な説明は省略する。
【００９９】
制御部２４２は、以下の手順によりセーブ動作の処理を行う。ただし、ステップＳ９４２乃至Ｓ９４４、Ｓ９４６、および、Ｓ９４７については、上述の第１の実施の形態と同様である。
【０１００】
処理対象のアプリケーション識別子のエントリでセーブを行っていないデータがあれば（ステップＳ９４４：Ｙｅｓ）、ステップＳ９４６においてセーブを行う前に、その管理単位がセーブ対象の属性であるか否かが判断される（ステップＳ９４５）。すなわち、セーブリクエストの引数として渡された「属性条件」と、メモリ管理情報のエントリにおける「属性情報」とを比較して、その条件を満たす場合のみ（ステップＳ９４５：Ｙｅｓ）、セーブを行う（ステップＳ９４６）。そして、ステップＳ９４３に戻って、処理対象のアプリケーション識別子の他のエントリを検索する。
【０１０１】
このように、本技術の第３の実施の形態によれば、メモリ管理情報として「属性情報」を管理することにより、セーブリクエストの引数「属性条件」に合致する管理単位のみをセーブすることができる。例えば、通常の電源断においては永続データのみをセーブし、瞬間停電などにおいては永続データに加えてコアダンプのデータもセーブするといった使い分けを行うことができる。
【０１０２】
＜４．第４の実施の形態＞
上述の実施の形態では、揮発メモリ２１０のアドレス空間に対してホストコンピュータ１００から直接アクセス可能な構成を採用していた。これに対し、この第４の実施の形態では、ホストコンピュータ１００からのアクセスは全てメモリコントローラ２４０が仲介するものとして、メモリ空間の仮想化を図る。
【０１０３】
［システム構成］
図２０は、本技術の第４の実施の形態における情報処理システムの全体構成の一例を示す図である。
【０１０４】
この第４の実施の形態では、上述の第１の実施の形態におけるマルチプレクサ２３０がなく、メモリアクセスインターフェース１０３の接続先がメモリコントローラ２４０となっている。したがって、ホストコンピュータ１００から揮発メモリ２１０に対するアクセスはメモリコントローラ２４０が仲介する。これにより、メモリモジュール２００としてのアドレス空間は仮想化され、ホストコンピュータ１００から揮発メモリ２１０か不揮発メモリ２２０かを意識することなく、メモリモジュール２００にアクセスすることができる。また、電源遮断などの際には、上述の他の実施の形態と同様に、揮発メモリ２１０から不揮発メモリ２２０へのセーブ動作が行われる。
【０１０５】
図２１は、本技術の第４の実施の形態におけるメモリコントローラ２４０の構成例を示す図である。
【０１０６】
この第４の実施の形態におけるメモリコントローラ２４０では、制御部２４２がメモリアクセスインターフェース１０３に接続する点において、上述の第１の実施の形態と異なっている。制御部２４２は、ホストコンピュータ１００からのメモリアクセスを受けると、そのアドレスに応じてアクセス先を揮発メモリ２１０または不揮発メモリ２２０に振り分ける。これにより、ホストコンピュータ１００に揮発メモリ２１０か不揮発メモリ２２０の区別を意識させることなく、ホストコンピュータ１００からのアクセスを受け付けることができる。すなわち、メモリモジュール２００としてのアドレス空間は仮想化される。
【０１０７】
このように、本技術の第４の実施の形態によれば、制御部２４２においてホストコンピュータ１００からのメモリアクセスのアクセス先を振り分けることにより、メモリモジュール２００としてのアドレス空間を仮想化することができる。
【０１０８】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１０９】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０１１０】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【０１１１】
なお、本技術は以下のような構成もとることができる。
（１）揮発メモリである第１のメモリの物理アドレスと不揮発メモリである第２のメモリのアドレスとを管理単位毎に関連付けてメモリ管理情報のエントリとして登録するメモリ管理情報登録部と、
セーブリクエストに応じて前記メモリ管理情報に従って前記第１のメモリから前記第２のメモリにデータをセーブし、リストアリクエストに応じて前記メモリ管理情報に従って前記第２のメモリから前記第１のメモリにデータをリストアする制御部と
を具備するメモリコントローラ。
（２）前記メモリ管理情報登録部は、前記メモリ管理情報としてアプリケーション毎に関連付けて前記第１のメモリの物理アドレスと前記第２のメモリのアドレスとを登録する
前記（１）に記載のメモリコントローラ。
（３）前記制御部は、前記セーブリクエストにおいて指定されたアプリケーションに対応する前記メモリ管理情報のエントリに従って前記第１のメモリの物理アドレスから前記第２のメモリのアドレスにデータをセーブし、前記リストアリクエストにおいて指定されたアプリケーションに対応する前記メモリ管理情報のエントリに従って前記第２のメモリのアドレスから前記第１のメモリの物理アドレスにデータをリストアする
前記（２）に記載のメモリコントローラ。
（４）前記メモリ管理情報登録部は、前記メモリ管理情報としてアプリケーション毎に関連付けて前記第１のメモリの物理アドレスと前記第２のメモリのアドレスとセーブ動作に関する属性とを登録し、
前記制御部は、前記セーブリクエストにおいて指定されたアプリケーションに対応する前記メモリ管理情報のエントリの属性に従って前記第１のメモリの物理アドレスから前記第２のメモリのアドレスにデータをセーブする
前記（１）から（３）のいずれかに記載のメモリコントローラ。
（５）前記制御部は、ホストコンピュータとの間のメモリアクセスインターフェースに接続して前記ホストコンピュータからの要求に応じて前記第１または第２のメモリにアクセスを行う
前記（１）から（４）のいずれかに記載のメモリコントローラ。
（６）前記メモリ管理情報における各エントリに対応する前記管理単位のサイズを管理サイズとして設定する管理サイズ設定部をさらに具備し、
前記制御部は、前記管理サイズに従って前記セーブリクエストまたは前記リストアリクエストに対応する処理を行う
前記（１）から（５）のいずれかに記載のメモリコントローラ。
（７）前記制御部は、前記メモリ管理情報の登録リクエストにおいて指定されたアプリケーションに対応する前記メモリ管理情報のエントリが存在しない場合には新たなエントリを生成し、対応するエントリが存在する場合にはその登録リクエストにおいて指定された物理アドレスをそのエントリに登録する
前記（１）から（６）のいずれかに記載のメモリコントローラ。
（８）前記メモリ管理情報登録部は、前記メモリ管理情報としてアプリケーション毎に関連付けて前記第１のメモリの仮想アドレスおよび物理アドレスと前記第２のメモリのアドレスとを登録する
前記（１）から（７）のいずれかに記載のメモリコントローラ。
（９）前記制御部は、前記メモリ管理情報の登録リクエストにおいて指定されたアプリケーションおよび仮想アドレスに対応する前記メモリ管理情報のエントリが存在しない場合には新たなエントリを生成し、対応するエントリが存在する場合にはその登録リクエストにおいて指定された物理アドレスをそのエントリに登録する
前記（８）に記載のメモリコントローラ。
（１０）揮発メモリである第１のメモリと、
不揮発メモリである第２のメモリと、
前記第１のメモリの物理アドレスと前記第２のメモリのアドレスとを管理単位毎に関連付けてメモリ管理情報のエントリとして登録するメモリ管理情報登録部と、
セーブリクエストに応じて前記メモリ管理情報に従って前記第１のメモリから前記第２のメモリにデータをセーブし、リストアリクエストに応じて前記メモリ管理情報に従って前記第２のメモリから前記第１のメモリにデータをリストアする制御部と
を具備するメモリモジュール。
【符号の説明】
【０１１２】
１００  ホストコンピュータ
１０３  メモリアクセスインターフェース
１０４  メモリ制御インターフェース
１０５  電源ライン
１１０  プロセッサ
１２０  メモリ管理部
１３０  メモリアクセス部
１４０  メモリモジュール制御部
１５０  電源
２００  メモリモジュール
２１０  揮発メモリ
２２０  不揮発メモリ
２３０  マルチプレクサ
２４０  メモリコントローラ
２４１  リクエストデコーダ
２４２  制御部
２４３  管理サイズ情報設定部
２４４  メモリ管理情報登録部
２５０  バックアップ電源
２６０  電源制御部
【図１】
2019138624.tif 000003
【図２】
2019138624.tif 000004
【図３】
2019138624.tif 000005
【図４】
2019138624.tif 000006
【図５】
2019138624.tif 000007
【図６】
2019138624.tif 000008
【図７】
2019138624.tif 000009
【図８】
2019138624.tif 000010
【図９】
2019138624.tif 000011
【図１０】
2019138624.tif 000012
【図１１】
2019138624.tif 000013
【図１２】
2019138624.tif 000014
【図１３】
2019138624.tif 000015
【図１４】
2019138624.tif 000016
【図１５】
2019138624.tif 000017
【図１６】
2019138624.tif 000018
【図１７】
2019138624.tif 000019
【図１８】
2019138624.tif 000020
【図１９】
2019138624.tif 000021
【図２０】
2019138624.tif 000022
【図２１】
2019138624.tif 000023
【国際調査報告】
2019138624.tif 000024
2019138624.tif 000025
2019138624.tif 000026
2019138624.tif 000027