(57)【特許請求の範囲】
【請求項１】
ＤＲＡＭ及びＮＶＲＡＭを含む主メモリを備えるコンピュータの動作状態の遷移に応じて主メモリを管理するための方法であって、
（ａ）コンピュータの起動時において、プログラムおよび／またはデータをＤＲＡＭにロードすることに加えて、所定のプログラムおよび／またはリードオンリーのデータをＮＶＲＡＭにロードするステップと、
（ｂ）コンピュータの通常動作からサスペンド状態への状態遷移において、ＤＲＡＭのデータをページ単位でＮＶＲＡＭに移動するステップと、
（ｃ）コンピュータのサスペンド状態から通常動作への状態遷移において、コンピュータによるプログラムの実行のためにＮＶＲＡＭからページ単位でデータを読み出すステップと、
（ｄ）前記ＮＶＲＡＭからページ単位でデータを読み出すステップ（ｃ）において、ＮＶＲＡＭへのページ単位でのデータの書き込みが発生した場合、当該データの書き込みを停止し、当該データの書き込みが行われるＮＶＲＡＭのデータ領域のデータをページ単位でＤＲＡＭに移動させるステップと、
（ｅ）前記データの移動後のＤＲＡＭにおいて、前記ページ単位でのデータの書き込みを行うステップと、を含む方法。
【請求項２】
前記ＤＲＡＭの使用状態を検出するステップと、
Ｔ１時間の間読み出しがない、あるいはＴ２時間の間書き込みがない前記ＤＲＡＭのページを前記ＮＶＲＡＭに移動するステップと、をさらに含む請求項１に記載の方法。
【請求項３】
前記ＤＲＡＭの使用状態を検出するステップは、（ｉ）所定の時間間隔で、（ｉｉ）前記コンピュータが備える演算装置の稼働率が所定値以下になった場合に、または（ｉｉｉ）前記コンピュータへの入力が所定時間なかった場合に実行される、請求項２に記載の方法。
【請求項４】
前記ＤＲＡＭのデータをページ単位でＮＶＲＡＭに移動するステップ（ｂ）は、前記ＤＲＡＭのデータを外部記憶装置に移動するステップを含む、請求項１に記載の方法。
【請求項５】
前記ＤＲＡＭのデータをページ単位でＮＶＲＡＭに移動するステップ（ｂ）は、当該データの移動毎に対応するページテーブルを更新するステップを含む、請求項１または４に記載の方法。
【請求項６】
前記データの移動後のＤＲＡＭにおいて、前記ページ単位でのデータの書き込みを行うステップ（ｅ）は、当該データの書き込み毎に対応するページテーブルを更新するステップを含む、請求項１に記載の方法。
【請求項７】
前記コンピュータの動作状態は、アドバンスド・コンフィグレーション・アンド・パワー・インターフェイス（ＡＣＰＩ）規格に従う動作状態である、請求項１に記載の方法。
【請求項８】
請求項１〜７のいずれか１項の各ステップを実行するためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ管理方法に関し、より具体的には、ＤＲＡＭ及びＮＶＲＡＭを含む主メモリを備えるコンピュータの動作状態に応じて主メモリを管理するための方法に関する。
【背景技術】
【０００２】
現在、不揮発性メモリ（以下、「NVRAM」と呼ぶ）が盛んに研究開発されている。将来的に、NVRAMを使うことで、より高集積、低電力、低コストのメモリシステムを構築できると期待されている。そうした中で、コンピュータの主記憶メモリにDRAMとNVRAMを使うことが提案されている。
【０００３】
しかし、NVRAMは、DRAMに比べて書き込み時間が長い、書き込み消費電力が大きい、書き込み単位が大きい、書き込みの耐久性（Endurance）が弱いなどの欠点がある。したがって、NVRAMを主記憶メモリとして使うためには、これらの欠点を補わなければならないが、実使用上必ずしも十分な改善が図られていない。
【０００４】
その結果、現状では実使用上せいぜいNVRAMを主記憶メモリのデータのバックアップのために利用するに留まっている状況にある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開ＷＯ２００６／０２８６５８
【特許文献２】特開２０１０−２８２２５２
【特許文献３】特開２００９−９３５０２
【発明の概要】
【発明が解決しようとする課題】
【０００６】
したがって、本発明の目的は、NVRAMをコンピュータの主記憶メモリの１つとして利用できるようにすることであり、より具体的には、ＤＲＡＭ及びＮＶＲＡＭを含む主メモリを備えるコンピュータの動作状態に応じて主メモリを管理するための方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明の一態様では、ＤＲＡＭ及びＮＶＲＡＭを含む主メモリを備えるコンピュータの動作状態に応じて主メモリを管理するための方法を提供する。その方法は、
（ａ）コンピュータの起動時において、プログラムおよび／またはデータをＤＲＡＭにロードすることに加えて、所定のプログラムおよび／またはリードオンリーのデータをＮＶＲＡＭにロードするステップと、
（ｂ）コンピュータの通常動作からサスペンド状態への状態遷移において、ＤＲＡＭのデータをページ単位でＮＶＲＡＭに移動するステップと、
（ｃ）コンピュータのサスペンド状態から通常動作への状態遷移において、コンピュータによるプログラムの実行のためにＮＶＲＡＭからページ単位でデータを読み出すステップと、
（ｄ）ＮＶＲＡＭからページ単位でデータを読み出すステップ（ｃ）において、ＮＶＲＡＭへのページ単位でのデータの書き込みが発生した場合、当該データの書き込みを停止し、当該データの書き込みが行われるＮＶＲＡＭのデータ領域のデータをページ単位でＤＲＡＭに移動させるステップと、
（ｅ）データの移動後のＤＲＡＭにおいて、ページ単位でのデータの書き込みを行うステップと、を含む。
【０００８】
本発明の一態様によれば、ＤＲＡＭ及びＮＶＲＡＭを含む主メモリを備えるコンピュータにおいて、コンピュータの動作状態に応じてＮＶＲＡＭを主メモリの一部として（ＤＲＡＭの補完／補強として）あるいはデータのバックアップ先として使い分けることにより、主メモリを用いたコンピュータの動作の高速化あるいは省電力化を図ることが可能となる。
【０００９】
本発明の一態様では、ＤＲＡＭの使用状態を検出するステップと、Ｔ１時間の間読み出しがない、あるいはＴ２時間の間書き込みがないＤＲＡＭのページをＮＶＲＡＭに移動するステップと、をさらに含む。
【００１０】
本発明の一態様によれば、ＤＲＡＭの使用状態に応じて、予めＮＶＲＡＭへデータを移動させて、ＤＲＡＭの空き容量を増やすと共に、コンピュータ動作のサスペンド状態に移行する際のデータ移動量を低減させることが可能となる。
【００１１】
本発明の一態様では、ＤＲＡＭの使用状態を検出するステップは、（ｉ）所定の時間間隔で、（ｉｉ）コンピュータが備える演算装置の稼働率が所定値以下になった場合に、または（ｉｉｉ）コンピュータへの入力が所定時間なかった場合に実行される。
【００１２】
本発明の一態様によれば、コンピュータ（ＣＰＵ）の稼働状態に応じて、予めＮＶＲＡＭへデータを退避させて、ＤＲＡＭの空き容量を増やすと共に、コンピュータ動作のサスペンド時におけるデータ移動量を低減させることが可能となる。
【００１３】
本発明の一態様では、ＤＲＡＭのデータをページ単位でＮＶＲＡＭに移動するステップ（ｂ）は、ＤＲＡＭのデータを外部記憶装置に移動するステップを含む。
【００１４】
本発明の一態様によれば、ＮＶＲＡＭの容量不足を外部記憶装置で補完させることによりコンピュータ動作のサスペンド時におけるデータ移動を円滑かつ安全におこなうことが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明を実行するコンピュータの構成例を示すブロック図である。
【図２】本発明が実行可能なＡＣＰＩの動作状態の遷移を示す図である。
【図３】本発明の一実施例の動作状態のイメージ図である。
【図４】本発明の一実施例の動作状態のイメージ図である。
【図５】本発明の一実施例の動作状態のイメージ図である。
【図６】本発明の一実施例の動作状態のイメージ図である。
【発明を実施するための形態】
【００１６】
図面を参照しながら本発明の実施の形態を説明する。図１は、本発明の方法を実行するコンピュータの一構成例を示すブロック図である。コンピュータ100は、バス30を介して相互に接続された演算処理装置（以下、CPUと呼ぶ）10、記憶手段20、各種インターフェース（以下、I/Fと呼ぶ）40を含む。各種I/F40は、入力I/F、出力I/F、外部記憶I/F、外部通信I/F等を含む総称として用いられる。各I/Fは、それぞれ対応するキーボード、マウス等の入力手段50、CRT、LCD等の表示手段60、USB接続の半導体メモリやHDD等の外部記憶手段70に接続する。
【００１７】
記憶手段20は、RAM、ROM等の半導体メモリ、HDD等を含むことができる。本発明では、記憶手段20は、主メモリ200として機能するDRAM210及びNVRAM220を含む。NVRAM220は、EEPROM、Flush Memory等の基本的に電源を供給し続けなくてもデータの保管が可能な任意の不揮発性のメモリを含むことができる。本発明の方法は、コンピュータ100が例えば記憶手段20、70等に格納された所定のソフトウェア（OSを含む）を呼び出して実行することにより実施される。
【００１８】
図２は、本発明が実行可能なＡＣＰＩの動作状態の遷移を示す図である。ＡＣＰＩは、アドバンスド・コンフィグレーション・アンド・パワー・インターフェイス（Advanced Configuration and Power Interface）の略称であり、PC/AT互換機等の電源制御と構成要素に関する公開された統一規格である。なお、本発明の適用対象はＡＣＰＩに限定されず、同様なコンピュータの動作状態の遷移を伴う形態（仕様）であれば、他の規格等に基づくものでもよい。
【００１９】
ＡＣＰＩで規定するコンピュータの動作状態にはＳ０〜Ｓ５の６状態がある。本発明ではこの中の特にＳ０、Ｓ４、及びＳ５の３状態に着目する。このＳ０、Ｓ４、及びＳ５の３状態の意味は下記の通りである。
S0：通常の動作状態
S4：Suspend to DiskまたはHibernationと呼ばれる状態で、メモリ内容も失われる。メモリの内容をHDD等に書き出し、電源断の状態にするのと同じである。
S5：完全なる電源断である。
本発明では、後述するように、上記の３状態間の次の３つの状態遷移に対応した主メモリの管理を実行する。
T50 ： S5 → S0
T04 ： S0 → S4
T40 ： S4 → S0
【００２０】
図３〜図６を参照しながら、コンピュータの各状態遷移における本発明の実施形態について説明する。
＜状態遷移：Ｔ５０＞
図３の（ａ）に示すように、T50の状態遷移は、コンピュータの電源断（S5）から通常動作（S0）への起動時（コールドスタート）での状態遷移である。図３の（ｂ）は、各要素間のデータ等の移動、保管の状態を示す。このコールドスタート時において、BIOSブートローダがOSブートローダを呼び出す。OSのブートローダは、矢印Ａで示すように、プログラムやデータをHDD等20（70）からDRAM210にロードする。また、矢印Ｂで示すように、リードオンリーとわかっているプログラムやデータはNVRAM220にロードする。さらに、 ネットワークや外部ストレージを代表とする入出力装置用バッファは、頻繁に書き込みが発生するのでDRAM210上にマップする。
【００２１】
＜状態遷移：Ｔ０４＞
図４の（ａ）に示すように、T04の状態遷移は、コンピュータの通常動作（S0）からHibernation状態（S4）への状態遷移である。図４の（ｂ）、（ｃ）、（ｄ）は、各要素間のデータ等の移動、保管の状態を示す。（ｂ）に示すように、S0状態ではDRAM210にデータ等とページテーブルが保管されている。（ｃ）に示すように、T04の状態遷移では、DRAM210上のデータをページ単位で（以下、“ページ”を“データ”と同意で用いる場合がある）NVRAM220上へ移動する（矢印Ａ）。ページテーブルを更新してNVRAM220上に保管する。（ｂ）及び（ｃ）におけるページテーブルからの破線矢印は、メモリ上の領域（アドレス）を特定するためのポインタをイメージしている。この点、後述する図５及び図６においても同様である。（ｄ）に示すように、NVRAM220にデータが移動しきれない場合は、HDD等20(70)に移動させる（矢印Ｂ）。ページテーブル自体は、最後にNVRAM220へ移動する。
【００２２】
＜状態遷移：Ｔ４０＞
図５の（ａ）に示すように、T40の状態遷移は、コンピュータのHibernation状態（S4）から通常動作（S0）への状態遷移である。図４の（ｂ）、（ｃ）、（ｄ）は、各要素間のデータ等の移動、保管の状態を示す。T40の状態遷移では、CPU10がNVRAM220から直接データを読み込みながらプログラムを実行する。最初に、ページテーブルはDRAM210に移動しておく。（ｂ）に示すように、NVRAM220にマップされたページをリードオンリー属性にしておく。（ｃ）に示すように、そのページにCPU10から書き込み要求があった場合は例外を発生させ、すなわち、ページ書き込みフォールトを起こして、その書き込み要求を一旦拒否する。（ｄ）に示すように、そのページのデータをNVRAM220からDRAM210へ移動する。その後、DRAM210へデータを書き込む。最後にページテーブルを更新する。
【００２３】
上記した図５（ｂ）〜（ｄ）の動作は、従来のCopy On Writeで使われている方法と類似しているが、本発明ではデータをコピーするのではなく移動する点が相違している。 元のNVRAM220上のデータは必ずしもクリアする必要はないが、セキュリティ上の観点からクリアするのが望ましい。NVRAM220がFLASH Memoryである場合は、その１ブロックは一度に消去できるので、その消去機能を使ってよい。 DRAM210に空きスペースが無くなった場合は、DRAM210上のデータをNVRAM220に移動する。NVRAM220に空きスペースが無い場合は、通常のページングと同じように、外部記憶装置70へスワップアウトする。
【００２４】
＜状態遷移：Ｔ０４の補助動作（オプション）＞
図４を参照しながら説明した状態遷移T04で移動するデータ量を少なくするため、また、DRAM210の使用率を下げ、空き領域を確保するため、DRAM210上のページをNVRAM220上に移動するオプションを設けることができる。図６を参照しながらこの内容について説明する。
【００２５】
図６の（ｂ）に示すように、DRAM210のページテーブルの使用状態をスキャンし（矢印Scan）、以下のいずれかの条件を満たした場合に、図６の（ｃ）に示すように、DRAM210上のページをNVRAM220上へ移動する（矢印Move）。条件１を使うか、条件２を使うかは適宜選択することができる。
（条件１）： 過去Tu秒間使用されていなかったDRAM210のページをNVRAM220へ移動する。
（条件２）： 過去Tw秒間書き込みがなかったDRAM210のページをNVRAM220へ移動する。
【００２６】
図６（ｂ）でのスキャン開始のトリガーとして、例えば、Linux（登録商標）ではkscandやkswapdルーチンのように定期的に走るプログラムからこの補助動作を呼び出すことができる。その他のスキャン開始トリガーとしては、CPU10の稼働率が予め設定された値を下回った時、またはユーザからの入力が一定時間なかった時（スクリーンセーバの起動タイミングなど）を用いることができる
【００２７】
本発明の実施形態について、図を参照しながら説明をした。しかし、本発明はこれらの実施形態に限られるものではない。本発明はその趣旨を逸脱しない範囲で当業者の知識に基づき種々なる改良、修正、変形を加えた態様で実施できるものである。
【符号の説明】
【００２８】
１０  ＣＰＵ
２０  記憶手段  
７０  外部記憶装置
１００  コンピュータ
２００  主メモリ
２１０  ＤＲＡＭ
２２０  ＮＶＲＡＭ
【図１】
0005901698.tif 000002
【図２】
0005901698.tif 000003
【図３】
0005901698.tif 000004
【図４】
0005901698.tif 000005
【図５】
0005901698.tif 000006
【図６】
0005901698.tif 000007