(57)【要約】【課題】不揮発性メモリを備えた、信頼性の高い情報処理システムを提供する。【解決手段】情報処理システムは、揮発性メモリと、不揮発性メモリと、アクティブリストと、インアクティブリストと、ページ内容移動手段とを有する。アクティブリストは、所定時間前の過去から現在までに書き込みが起きた不揮発性メモリのページを集めたリストである。インアクティブリストは、該所定時間前の過去から現在までに書き込みが起きていない不揮発性メモリのページを集めたリストである。ページ内容移動手段は、アクティブリストに保持された不揮発性メモリのページの内容を揮発性メモリのページに移動する。【選択図】      図１
2018120346.tif 000002
【特許請求の範囲】
【請求項１】
揮発性メモリと、
不揮発性メモリと、
所定時間前の過去から現在までに書き込みが起きた前記不揮発性メモリのページを集めたアクティブリストと、
前記所定時間前の過去から現在までに書き込みが起きていない前記不揮発性メモリのページを集めたインアクティブリストと、
前記アクティブリストに保持された前記不揮発性メモリのページの内容を前記揮発性メモリのページに移動するページ内容移動手段と
を有することを特徴とする情報処理システム。
【請求項２】
前記ページ内容移動手段は、
情報処理システムの状態を保存して電源を遮断するサスペンド処理時に、
前記揮発性メモリのデータをページ単位で前記不揮発性メモリのページに保存し、
前記不揮発性メモリのページを前記インアクティブリストにつなぐ
ことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記ページ内容移動手段は、
前記アクティブリストの前記不揮発性メモリのページを書き込み禁止に設定し、
前記不揮発性メモリのページへの書き込みを一時中断し、
前記揮発性メモリのページを新たに割り当て、
前記不揮発性メモリのページの内容を新規に割り当てた前記揮発性メモリのページへ移動し、
移動したページに対して書き込みを行い、
前記不揮発性メモリのページは前記アクティブリストから外す
ページ制御手段を有する
ことを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記ページ制御手段は、
前記不揮発性メモリの移動元のページを、前記揮発性メモリの移動先のページのシャドーページとして登録するシャドーページ管理手段を有する
ことを特徴とする請求項３に記載の情報処理システム。
【請求項５】
前記ページ制御手段は、
情報処理システムの状態を保存して電源を遮断する前記サスペンド処理時、
前記シャドーページ管理手段を用いて対応する前記不揮発性メモリの前記シャドーページを調べ、
前記揮発性メモリのデータにページ単位で対応する前記不揮発性メモリの前記シャドーページを更新し、
前記シャドーページ管理手段から前記シャドーページの登録を削除する
ことを特徴とする請求項４に記載の情報処理システム。
【請求項６】
前記ページ制御手段は、
前記不揮発性メモリの保存先の前記シャドーページ内の所定のサイズのデータを読み出し、
前記揮発性メモリのデータ内の対応するデータと比較し、
違いがある場合、前記シャドーページの対応するデータを更新し、
同一の場合、書き込みを行わないリード・モディファイ・ライトを行って前記シャドーページの更新を行う
ことを特徴とする請求項４または請求項５に記載の情報処理システム。
【請求項７】
前記不揮発性メモリは、
リード・モディファイ・ライトコマンドと、
所定のサイズの第１バッファーと、
所定サイズの第２バッファーと、
前記第１バッファーと前記第２バッファーのデータをビット単位で比較する比較回路と、
比較した結果異なったビットのみ書き込みを行う書き込み回路と
を有することを特徴とする請求項６に記載の情報処理システム。
【請求項８】
所定時間前の過去から現在までに書き込みが起きた不揮発性メモリのページを集めたアクティブリストを作成し、
前記所定時間前の過去から現在までに書き込みが起きていない前記不揮発性メモリのページを集めたインアクティブリストを作成し、
前記アクティブリストに保持された前記不揮発性メモリのページの内容を揮発性メモリのページに移動する
ことを特徴とする情報処理システムの制御方法。
【請求項９】
情報処理システムの状態を保存して電源を遮断するサスペンド処理時に、
前記揮発性メモリのデータをページ単位で前記不揮発性メモリのページに保存し、
前記不揮発性メモリのページを前記インアクティブリストにつなぐ
ことを特徴とする請求項８に記載の情報処理システムの制御方法。
【請求項１０】
所定時間前の過去から現在までに書き込みが起きた不揮発性メモリのページを集めたアクティブリストを作成するステップと、
前記所定時間前の過去から現在までに書き込みが起きていない前記不揮発性メモリのページを集めたインアクティブリストを作成するステップと、
前記アクティブリストに保持された前記不揮発性メモリのページの内容を揮発性メモリのページに移動するステップと
を有することを特徴とする情報処理システムの制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムおよび情報処理システムの制御方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータや組み込み機器等の情報処理システムは、サスペンド・レジューム機能を備えたものが普及している。サスペンド時、システムはその状態を不揮発性メモリへ保存するとともに、多くの構成部品への電力供給を停止し、消費電力を低減する。レジューム時、システムはその状態を不揮発性メモリから復元する。
【０００３】
不揮発性メモリとして、一般的に、ハードディスクやフラッシュメモリ等が利用されてきた。近年、ＦｅＲＡＭ、ＭＲＡＭ、ＰＣＲＡＭ、ＲｅＲＡＭ、ＣＢＲＡＭ等の高速にランダムアクセス可能な不揮発性メモリが開発されている。これら新興の不揮発性メモリをＤＲＡＭと同様に主メモリとして利用し、サスペンド・レジューム機能を実現する方法が提案されている。
【０００４】
例えば、特許文献１には、サスペンド時、揮発性メモリ内に存在する使用中のデータを不揮発性メモリに退避させたとき、退避先の不揮発性メモリの領域を示すように、ページテーブルエントリをマッピングする情報処理装置が開示されている。これにより、レジューム時に不揮発性メモリにマッピングしたデータを揮発性メモリに復元することを省略し、レジューム時の所要時間をより短縮させる。
【０００５】
また、特許文献２にも、サスペンド時、揮発性メモリ内に存在する使用中のデータを不揮発性メモリに退避させたとき、退避先の不揮発性メモリの領域を示すように、ページテーブルエントリをマッピングする技術が記載されている。この技術では、さらに、不揮発性メモリにマップされたページをリードオンリー属性に設定し、そのページに書き込み要求があった場合は例外を発生させる。そして、そのページのデータを不揮発性メモリから揮発性メモリへ移動し、データの移動後の揮発性メモリにおいて、そのページの書き込みを行う方法が開示されている。これにより、コンピュータ動作の高速化あるいは省電力化を図ることが可能となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１５８７７３号公報
【特許文献２】特許第５９０１６９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載の技術は、揮発性メモリと不揮発性メモリが同等の性能を有していることを前提としている。しかし、不揮発性メモリは、揮発性メモリに比べ、書き込み時間が長い、書き込みにより摩耗する等の課題がある。
【０００８】
特許文献２に記載の技術は、不揮発性メモリの書き込みに関する課題に配慮している。しかし、次のサスペンドまでに書き込みがほとんど発生しないページも、書き込みが１回でも発生したときには揮発性メモリへ移動し、サスペンド時に不揮発性メモリへ移動している。このため、ページによっては、移動に伴う不揮発性メモリへの書き込み回数のオーバーヘッドが大きくなる懸念がある。
【０００９】
本発明は、上記の課題に鑑みてなされたものであり、その目的は、不揮発性メモリを備えた、信頼性の高い情報処理システムを提供することである。
【課題を解決するための手段】
【００１０】
上記の課題を解決するため、本発明の情報処理システムは、揮発性メモリと、不揮発性メモリと、アクティブリストと、インアクティブリストと、ページ内容移動手段とを有する。アクティブリストは、所定時間前の過去から現在までに書き込みが起きた不揮発性メモリのページを集めたリストである。インアクティブリストは、該所定時間前の過去から現在までに書き込みが起きていない不揮発性メモリのページを集めたリストである。ページ内容移動手段は、アクティブリストに保持された不揮発性メモリのページの内容を揮発性メモリのページに移動する。
【発明の効果】
【００１１】
本発明の効果は、不揮発性メモリを備えた、信頼性の高い情報処理システムを提供できることである。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態の情報処理システムを示すブロック図である。
【図２】第２の実施形態の情報処理システムのハードウェア構成を示すブロック図である。
【図３】第２の実施形態の情報処理システムの不揮発性メモリの管理方法を示す模式図である。
【図４】第２の実施形態の情報処理システムの処理の一例を示す状態遷移図であるである。
【図５】第２の実施形態の情報処理システムのサスペンド処理の例を示すフローチャートである。
【図６】第２の実施形態の情報処理システムのレジューム処理の例を示すフローチャートである。
【図７】第２の実施形態の情報処理システムの処理の例を示すフローチャートある。
【図８】第３の実施形態の情報処理システムの処理の例を示すフローチャートある。
【図９】第３の実施形態の情報処理システムのサスペンド処理の一部を示すフローチャートである。
【図１０】第３の実施形態の情報処理システムのサスペンド処理の別の一部を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら、本発明の実施形態を詳細に説明する。但し、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。なお各図面の同様の構成要素には同じ番号を付し、説明を省略する場合がある。
【００１４】
（第１の実施形態）
図１は第１の実施形態を示すブロック図である。情報処理システムは、揮発性メモリ１と、不揮発性メモリ２と、アクティブリスト３と、インアクティブリスト４と、ページ内容移動手段５とを有する。
【００１５】
アクティブリスト３は、所定時間前の過去から現在までに書き込みが起きた不揮発性メモリのページを集めたリストである。
【００１６】
インアクティブリスト４は、上記の所定時間前の過去から現在までに書き込みが起きていない不揮発性メモリのページを集めたリストである。
【００１７】
ページ内容移動手段５は、アクティブリスト３に保持された不揮発性メモリ２のページの内容を揮発性メモリ１のページに移動する。
【００１８】
以上の構成とすることにより、本実施形態によれば、不揮発性メモリを備えた、信頼性の高い情報処理システムを提供できる。
【００１９】
（第２の実施形態）
図２は本発明の情報処理システムのハードウェア構成を示すブロック図である。情報処理システム１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０と、主記憶装置２０と、２次記憶装置３０と、入出力装置４０を備えている。ＣＰＵ１０は、２次記憶装置３０から主記憶装置２０にロードされたプログラムを実行し、バスを介して、主記憶装置２０と、２次記憶装置３０と、入出力装置４０とを制御する。ＣＰＵ１０は各装置からの制御信号に応答し、プログラムを実行する。２次記憶装置３０は、不揮発性記録媒体として、ハードディスクやフラッシュメモリ等を含む。入出力装置４０は、キーボードやマウスなどの入力手段と、液晶ディスプレイ等の出力手段を含む。ページ内容移動手段５およびアクティブリスト３、インアクティブリスト４、はＣＰＵ１０で動作する。
【００２０】
主記憶装置２０は、揮発性メモリ２１と、不揮発性メモリ２２から構成される。主記憶装置２０の揮発性メモリ２１は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を含む。揮発性メモリは、電源の供給されている間のみデータを保持できる。主記憶装置２０の不揮発性メモリ２２は、ＦｅＲＡＭ、ＭＲＡＭ、ＰＣＲＡＭ、ＲｅＲＡＭ、ＣＢＲＡＭ等の高速にランダムアクセス可能な不揮発性メモリを含む。これらのＲＡＭの表記は、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略である。そして、ＦｅＲＡＭはＦｅｒｒｏｅｌｅｃｔｒｉｃ−ＲＡＭの略、ＭＲＡＭはＭａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ−ＲＡＭの略、ＰＣＲＡＭはＰｈａｓｅ―Ｃｈａｎｇｅ−ＲＡＭの略である。またＲｅＲＡＭはＲｅｓｉｓｔｉｖｅ−ＲＡＭ、ＣＢＲＡＭはＣｏｎｄｕｃｔｉｖｅ−Ｂｒｉｄｇｅ−ＲＡＭの略である。
【００２１】
不揮発性メモリ２２は、電源の供給が遮断されてもデータを保持できる。揮発性メモリ２１は、動作時にプログラムやＣＰＵ１０が処理したデータを格納する。不揮発性メモリ２２は、動作時とサスペンド時にプログラムやＣＰＵ１０が処理したデータを格納する。
【００２２】
主記憶装置２０が提供する実メモリは、ページ単位に分割され、管理される。仮想アドレス空間も同じページ単位に分割され、管理される。仮想記憶機構を備えたＣＰＵ１０は、プログラムを固有の仮想アドレス空間上で動作させることができる。仮想アドレスから実メモリのアドレス（実アドレス）への変換はページテーブルを基にページ単位で行われる。ページテーブルは、仮想ページと実ページの対応表である。
【００２３】
本実施形態の情報処理システム１００における主記憶装置２０が提供する実メモリは、揮発性メモリ２１と不揮発性メモリ２２を区別して管理される。たとえば、Ｏｐｅｒａｔｉｇｎ  Ｓｙｓｔｅｍ（ＯＳ）の一つであるＬｉｎｕｘ（登録商標）は、ゾーンとノードの組み合わせに応じてページを管理する機構を備えているが、同様の機構を適用してもよい。ゾーンは、実アドレスの領域によって分けて、管理される単位である。ページの割り当てはゾーン毎に行われる。ノードは、システム内のメモリを分割し、管理される単位である。ノードは、たとえば、Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ（ＮＵＭＡ）システムにおいて、メモリの割り当て方に差をつけるために利用される。
【００２４】
本実施形態の情報処理システム１００は、最近書き込まれた不揮発性メモリのページの内容を揮発性メモリへ移動するという方針に基づき、Ｍｏｓｔ  Ｒｅｃｅｎｔｌｙ  Ｗｒｉｔｔｅｎ（ＭＲＷ）リストによって管理される。ここで、「最近」とは、所定時間過去から現在までの期間であるとする。
【００２５】
図３は、本実施形態の情報処理システム１００における不揮発性メモリの管理方法を示す模式図である。本実施形態の情報処理システム１００は、ゾーン記述子とページ記述子から構成されるアクティブリストとインアクティブリストによって、不揮発性メモリを管理する。ゾーン記述子は、不揮発性メモリの実ページが属するゾーンを管理する記述子である。ページ記述子は、不揮発性メモリの実ページを管理する記述子である。
【００２６】
ゾーン記述子は、ａｃｔｉｖｅ＿ｌｉｓｔメンバとｉｎａｃｔｉｖｅ＿ｌｉｓｔメンバを備える。前記ａｃｔｉｖｅ＿ｌｉｓｔメンバは、アクティブリストの先頭のページ記述子を指す。前記ｉｎａｃｔｉｖｅ＿ｌｉｓｔメンバは、インアクティブリストの先頭のページ記述子を指す。
【００２７】
ページ記述子は、ＰＧ＿ｍｒｗフラグと、ＰＧ＿ａｃｔｉｖｅフラグと、ｍｒｗメンバを備える。ＰＧ＿ｍｒｗフラグは、ＭＲＷリストにつながっているとき、１に設定される。ＰＧ＿ａｃｔｉｖｅフラグは、アクティブリストにつながっているとき、１に設定される。ＰＧ＿ａｃｔｉｖｅフラグは、インアクティブリストにつながっているとき、０に設定される。ページ記述子のｍｒｗメンバは、リストの後続のページ記述子を指す。
【００２８】
アクティブリストは、最近書き込まれた不揮発性メモリの実ページがつながっている。インアクティブリストは、最近書き込まれていない不揮発性メモリの実ページがつながっている。アクティブリスト内の実ページが揮発性メモリへ移動する候補のページである。
【００２９】
図４は、アクティブリストとインアクティブリストの遷移の一例を示す状態遷移図である。ページの状態はＰＧ＿ａｃｔｉｖｅフラグとＰＧ＿ｗｒｉｔｔｅｎフラグにより識別される。それぞれのフラグの状態に応じて、Ｓ０−Ｓ３の４つの状態が存在する。ＰＧ＿ｗｒｉｔｔｅｎフラグは最近書き込みがあったことを示すために用いる。
【００３０】
Ｓ０からＳ１への状態遷移について説明する。ページへの書き込みが起きた場合、ＰＧ＿ｗｒｉｔｔｅｎフラグを１に設定する。ページへの書き込みが起きたことの判断、もしくは、書き込みが起きたことによる本処置のトリガーは、ＯＳ等のソフトウェアから行ってもよい。もしくは、ハードウェアが設定するページテーブルエントリのダーティビットを参照してもよい。尚、ダーティビットがセットされている場合は、次回の書き込みを検出するために、ダーティビットをクリアした上で、ページへの書き込みがあったことを記録するために、ページ記述子のＰＧ＿ｄｉｒｔｙフラグを１に設定するなどの処置を行う。また、ページが共有されている場合には、このページを参照している全ページテーブルエントリを更新する。
【００３１】
Ｓ２からＳ３への状態遷移は、Ｓ０からＳ１への状態遷移と同様に行う。
【００３２】
Ｓ１からＳ２への状態遷移について説明する。ページへの書き込みが起きた場合、ＰＧ＿ｗｒｉｔｔｅｎフラグが１であることを検出し、ＰＧ＿ｗｒｉｔｔｅｎフラグを０に設定する。さらに、ＰＧ＿ａｃｔｉｖｅフラグを１に設定し、ページ記述子をアクティブリストにつなげる。ページへの書き込みが起きたかの判断はＳ０からＳ１への状態遷移と同様である。
【００３３】
次に、Ｓ１からＳ０への状態遷移について説明する。ある期間経過するとＯＳ等のソフトウェアはＰＧ＿ｗｒｉｔｔｅｎフラグを０に設定する。
【００３４】
Ｓ３からＳ２への状態遷移は、Ｓ１からＳ０への状態遷移と同様に行う。
【００３５】
Ｓ２からＳ１への状態遷移は、ある期間経過するとＯＳ等のソフトウェアはＰＧ＿ｗｒｉｔｔｅｎフラグが０であることを検出し、ＰＧ＿ｗｒｉｔｔｅｎフラグを１に設定する。さらに、ＰＧ＿ａｃｔｉｖｅフラグを０に設定し、ページ記述子をインアクティブリストにつなげる。
【００３６】
図５は本実施形態の情報処理システムのサスペンド処理のフローチャートである。
【００３７】
揮発性メモリに未保存のページがあるかを調べる（Ｓ１００）。まだ未保存のページＰ０がある場合（Ｓ１００＿Ｙｅｓ）、不揮発性メモリに空きページがあるかを調べる（Ｓ１０１）。不揮発性メモリは、ページテーブルと退避管理テーブルの領域を予め確保しているものとする。
【００３８】
不揮発性メモリに空きページがある場合（Ｓ１０１_Ｙｅｓ）、不揮発性メモリの空きページから新規にページＰ１を確保し、揮発性メモリの未保存ページＰ０の内容をその新規ページＰ１に保存する（Ｓ１０２）。その新規ページＰ１のページ記述子をＭＲＷリストのインアクティブリストに追加する（Ｓ１０３）。その後、未保存ページＰ０を指していたページテーブルエントリをその新規ページＰ１を指すように更新する（Ｓ１０４）。
【００３９】
一方、不揮発性メモリに空きページがない場合（Ｓ１０１＿Ｎｏ）、２次記憶装置に未保存のページを退避する（Ｓ１０５）。その後、退避管理テーブルを更新する（Ｓ１０６）。退避管理テーブルは、レジューム時に退避したページを元の位置に戻すために、退避前後のページ位置等が記載される。
【００４０】
上記の処理は、揮発性メモリに未保存ページが無くなるまで続けられる。揮発性メモリに未保存ページが無くなった場合、不揮発性メモリにページテーブルを保存する（Ｓ１０７）。最後に、不揮発性メモリに退避管理テーブルを保存する（Ｓ１０８）。
【００４１】
図６は本実施形態の情報処理システムのレジューム処理のフローチャートである。
【００４２】
退避管理テーブルを参照して、２次記憶装置に保存したページを主記憶装置へ書き戻す（Ｓ２００）。その後、中断していたプログラムの実行を再開する（Ｓ２０１）。尚、サスペンド処理時に、揮発性メモリから不揮発性メモリへ移動したページのページテーブルエントリを更新したので、レジューム処理では、そのページを揮発性メモリへ書き戻す必要はない。
【００４３】
本実施形態の情報処理システムは、レジューム処理後の通常動作時、サスペンド処理時にＭＲＷリストのインアクティブリストにつなげられたページに対し、高い頻度で書き込みアクセスが行われた場合、前述したとおり、そのページをアクティブリストに移す。
【００４４】
図７は本実施形態の情報処理システムのアクティブリストのページを揮発性メモリへ移動する処理のフローチャートである。アクティブリストのページＰ０のページエントリを書き込み禁止に設定する（Ｓ３００）。不揮発性メモリのページＰ０へ書き込みアクセスが起きた場合（Ｓ３１０＿Ｙｅｓ）、書き込みを一時中断する（Ｓ３０２）。そして、揮発性メモリに新たなページＰ１を割り当てる。不揮発性メモリのページＰ０の内容を新規に割り当てた揮発性メモリのページＰ１に移動し（Ｓ３０３）、移動したページに対して中断していた書き込みを行う（Ｓ３０４）。最後にページＰ０からページＰ１を指すようにページテーブルエントリを更新する（Ｓ３０５）。ページＰ０は、アクティブリストから外す。一方、不揮発性メモリのページＰ０への読み出しアクセスの場合（Ｓ３１０＿Ｎｏ）、ページＰ０のデータの読み出しを行う（Ｓ３０６）。
【００４５】
前記書き込みを禁止するページは優先度に応じて選んでもよい。そして、この優先度は、ユーザーが設定してもよい。もしくは、ＯＳなどのソフトウェアがページの利用目的を識別して設定してもよい。もしくは、ＯＳなどのソフトウェアが次回のサスペンドまでの期間を予測し、その期間が長い場合は優先度を上げてより多くのページを揮発性メモリへ移動するように、適応的に設定してもよい。
【００４６】
アクティブリストに移された後に、揮発性メモリへページの内容を移動する別の方法として、タイマがある時間経過したことや、不揮発性メモリの空き容量が低下したこと等をトリガーとして、優先度に基づいて、ページを揮発性メモリへ移動してもよい。
【００４７】
（効果）
既存のメモリ管理機構として、Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ（ＬＲＵ）リストを用いたメモリ管理がある。これは、最近使われていない実ページを２次記憶装置へ移動するという方針に基づいてメモリを管理する。本実施形態の情報処理システムにおけるＭＲＷリストによる管理は、ＬＲＵリストを用いたメモリ管理と類似しているが、以下の点が異なる。第１に本実施形態の情報処理システムにおけるメモリ管理の基準が、ＭＲＷは書き込みに着目している点が異なる。第２に本実施形態の情報処理システムにおけるメモリ管理によるページの移動方向が、不揮発性メモリから揮発性メモリである点が異なる。最近書き込まれたページを揮発性メモリへ移動することにより、不揮発性メモリの書き込み速度や摩耗の課題を解消する。
【００４８】
これまでの一般的なシステムの不揮発性メモリから揮発性メモリへのページの移動は、たとえば、２次記憶装置である不揮発性メモリへスワップしたページの場合、そのページへアクセスする度に発生する。一般的なシステムの不揮発性メモリである２次記憶装置はアクセス時間が長いため、ＭＲＷリストによる管理をそのまま適用すると、システムの速度が低下する。しかし、本実施形態の情報処理システムの不揮発性メモリは高速なアクセスが可能なため、ＭＲＷリストによる管理を適用しても、システム速度の低下はほとんど起きない。さらに、ＭＲＷリストによる管理により、次のサスペンドまでに書き込みがほとんど発生しないページは、揮発性メモリへ移動することを回避できる。これにより、サスペンド時に不揮発性メモリへ移動するページ数を低減できることが期待される。
【００４９】
よって、本実施形態の情報処理システムは、不揮発性メモリへの書き込み回数をより低減し、不揮発性メモリを利用した情報処理システムの信頼性を向上することができる。
【００５０】
（第３の実施形態）
本発明の第３実施形態の情報処理システムにおける主記憶装置の不揮発性メモリは、揮発性メモリのページをページ単位でバックアップするシャドーページを備える。本実施形態の説明に当たり、第２の実施形態と説明が重複する箇所は適宜説明を省略する。
【００５１】
本実施形態の情報処理システムは、レジューム処理後の通常動作時、サスペンド処理時にＭＲＷリストのインアクティブリストにつなげられたページに対し、高頻度の書き込みアクセスがあった場合、第１の実施形態と同様、そのページをアクティブリストに移す。
【００５２】
図８は本実施形態の情報処理システムのアクティブリストのページを揮発性メモリへ移動する処理のフローチャートである。まず、アクティブリストのページＰ０のページエントリを書き込み禁止に設定する（Ｓ４００）。不揮発性メモリのページＰ０へ書き込みが起きた場合（Ｓ４０１＿Ｙｅｓ）、書き込みを一時中断する（Ｓ４０２）。そして、揮発性メモリに新たなページＰ１を割り当てる。不揮発性メモリのページＰ０の内容を新規に割り当てた揮発性メモリのページＰ１に移動し（Ｓ４０３）、移動したページに対して書き込みを行う（Ｓ４０４）。次に、ページＰ０からページＰ１を指すようにページエントリを更新する（Ｓ４０５）。そしてページＰ０は、アクティブリストから外す。さらに、シャドーページ管理手段にページＰ０をページＰ１のシャドーページとして登録する（Ｓ４０６）。一方、不揮発性メモリのページＰ０への読み出しアクセスの場合（Ｓ４０１＿Ｎｏ）、ページＰ０のデータを読み出す（Ｓ４０７）。
【００５３】
シャドーページ管理手段は、揮発性メモリのページと、その不揮発性メモリのシャドーページの対応を管理する。シャドーページ管理手段は、ページの対応テーブルやリストによって実現される。ページは、実アドレスや仮想アドレス等によって識別される。
【００５４】
図９、１０は本実施形態の情報処理システムのサスペンド処理のフローチャートである。
【００５５】
まず揮発性メモリに未保存のページがあるかを調べる（Ｓ５００）。未保存のページＰ０がある場合（Ｓ５００＿Ｙｅｓ）まだ未保存のページＰ０がある場合（Ｓ５００＿Ｙｅｓ）、シャドーページ管理手段を用いて、ページＰ０に対応するシャドーページＰ２があるかを調べる（Ｓ５０１）。
【００５６】
対応するシャドーページＰ２がある場合（Ｓ５０１＿Ｙｅｓ）、揮発性メモリのページＰ０の内容に不揮発性メモリのシャドーページＰ２を更新する（Ｓ５０２）。そのシャドーページＰ２のページ記述子をＭＲＷリストのインアクティブリストに追加する（Ｓ５０３）。その後、未保存ページＰ０を指していたページテーブルエントリをその新規ページＰ２を指すように更新する（Ｓ５０４）。そして、シャドーページ管理手段から、シャドーページＰ２の登録を削除する（Ｓ５０５）。
【００５７】
一方、対応するシャドーページがない場合（Ｓ５０１＿Ｎｏ）、プロセスＡに進む。図１０はプロセスＡを示すフローチャートである。
【００５８】
ここで、不揮発性メモリに空きページがあるかを調べる（Ｓ５０８）。なお不揮発性メモリは、ページテーブルと退避管理テーブルの領域を予め確保しているものとする。
【００５９】
不揮発性メモリに空きページがある場合（Ｓ５０８＿Ｙｅｓ）、不揮発性メモリの空きページから新規にページＰ１を確保し、揮発性メモリの未保存ページＰ０の内容をその新規ページＰ１に保存する（Ｓ５０９）。その新規ページＰ１のページ記述子をＭＲＷリストのインアクティブリストにつなげる（Ｓ５１０）。その後、未保存ページＰ０を指していたページテーブルエントリをその新規ページＰ１を指すように更新し（Ｓ５１１）、プロセスＢ（図９のフローチャートのＢ）に進む。
【００６０】
一方不揮発性メモリに空きページがない場合（Ｓ５０８＿Ｎｏ）、２次記憶装置に未保存のページを退避する（Ｓ５１２）。その後、退避管理テーブルを更新する（Ｓ５１３）。退避管理テーブルは、レジューム時に退避したページを元の位置に戻すために、退避前後のページ位置等が記載される。
【００６１】
上記したＳ５００＿ＹＥＳからＳ５０５、および、プロセスＡからＢまでの処理は、揮発性メモリに未保存ページが無くなるまで続けられる。揮発性メモリに未保存ページが無くなった場合（Ｓ５００＿Ｎｏ）、不揮発性メモリにページテーブルを保存する（Ｓ５０６）。最後に、不揮発性メモリに退避管理テーブルを保存する（Ｓ５０７）。
【００６２】
本実施形態の情報処理システムのシャドーページ更新処理は、以下のリード・モディファイ・ライトを適用してよい。まず、シャドーページＰ２のある単位のデータを読み出す。そして、読み出したシャドーページＰ２のデータと、対応するページＰ０のデータを比較し、違いがある場合、シャドーページＰ０の対応するデータに更新する。同一の場合、その書き込みを行わない。そして、ページ内の未更新の領域が無くなるまで上記作業を繰り返す。
【００６３】
シャドーページの更新の単位は、例えば、バイト単位の整数倍である。シャドーページの更新処理は、例えば、ソフトウェアによって行ってもよい。もしくは、リード・モディファイ・ライトコマンドを備えた不揮発性メモリを利用し、ハードウェア上で行ってもよい。
【００６４】
リード・モディファイ・ライト コマンドを備えた不揮発性メモリは、更新単位と同じ大きさの第１バッファーと、第２バッファーとを備えている。さらに、第１バッファーと第２バッファーのデータをビット単位で比較する比較回路と、比較した結果異なったビットのみ書き込みを行う書き込み回路を備えている。
【００６５】
不揮発性メモリがリード・モディファイ・ライト コマンドと、アドレスＡ０と、データＤ０を受け取ると、第１バッファーにデータＤ０を格納する。次に、不揮発性メモリのアドレスＡ０からデータＤ２を読み出し、第２バッファーへ格納する。そして、比較回路を利用して、第１バッファーと第２バッファーのデータをビット単位で比較する。比較した結果異なったビットに対し、書き込み回路を用いて、第１バッファーのデータＤ０になるように書き込みを行う。
【００６６】
本実施形態の情報処理システムは、シャドーページの削除処理について説明する。タイマがある時間経過したことや、不揮発性メモリの空き容量が低下したこと等をトリガーとして、優先度に基づいて、シャドーページを削除してもよい。そして、シャドーページ管理手段から、シャドーページの登録を削除する。優先度は、ユーザーが設定してもよい。もしくは、ＯＳなどのソフトウェアがページの利用目的を識別して設定してもよい。
【００６７】
（効果）
本実施形態の情報処理システムは、シャドーページの更新時に、リード・モディファイ・ライトを行う。これにより、ページの一部のみが更新された場合、その部分のみ不揮発性メモリの書き換えを行えばよい。
【００６８】
よって、本実施形態の情報処理システムは、不揮発性メモリへの書き込み回数をより低減し、不揮発性メモリを利用した情報処理システムの信頼性を向上することができる。
【００６９】
上述した第１乃至第３の実施形態の処理をコンピュータに実行させるプログラムおよび該プログラムを格納した記録媒体も本発明の範囲に含む。記録媒体としては、例えば、磁気ディスク、磁気テープ、光ディスク、光磁気ディスク、半導体メモリ、などを用いることができる。
【００７０】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００７１】
（付記１）
揮発性メモリと、
不揮発性メモリと、
所定時間前の過去から現在までに書き込みが起きた前記不揮発性メモリのページを集めたアクティブリストと、
前記所定時間前の過去から現在までに書き込みが起きていない前記不揮発性メモリのページを集めたインアクティブリストと、
前記アクティブリストに保持された前記不揮発性メモリのページの内容を前記揮発性メモリのページに移動するページ内容移動手段と
を有することを特徴とする情報処理システム。
【００７２】
（付記２）
前記ページ内容移動手段は、
前記情報処理システムの状態を保存して電源を遮断するサスペンド処理時に、
前記揮発性メモリのデータをページ単位で前記不揮発性メモリのページに保存し、
前記不揮発性メモリのページを前記インアクティブリストにつなぐ
ことを特徴とする付記１に記載の情報処理システム。
【００７３】
（付記３）
前記ページ内容移動手段は、
前記サスペンド処理時に、
前記揮発性メモリのページから前記不揮発性メモリの保存先のページを指すようにページテーブルを更新するページテーブル更新手段を有する
ことを特徴とする付記２に記載の情報処理システム。
【００７４】
（付記４）
前記ページ内容移動手段は、
前記アクティブリストの前記不揮発性メモリのページを書き込み禁止に設定し、
前記不揮発性メモリのページへの書き込みを一時中断し、
揮発性メモリのページを新たに割り当て、
前記不揮発性メモリのページの内容を新規に割り当てた前記揮発性メモリのページへ移動し、
移動したページに対して書き込みを行い、
前記不揮発性メモリのページは前記アクティブリストから外す
ページ制御手段を有する
ことを特徴とする付記３に記載の情報処理システム
（付記５）
前記ページテーブル更新手段は、
前記不揮発性メモリのページから前記揮発性メモリの移動先のページを指すように前記ページテーブルを更新する
ことを特徴とする付記４に記載の情報処理システム。
【００７５】
（付記６）
前記ページ内容移動手段は、
前記不揮発性メモリの移動元のページを、前記揮発性メモリの移動先のページのシャドーページとして登録する
シャドーページ管理手段を有する
ことを特徴とする付記４または付記５に記載の情報処理システム。
【００７６】
（付記７）
前記ページ制御手段は、
情報処理システムの状態を保存して電源を遮断する前記サスペンド処理時、
前記シャドーページ管理手段を用いて対応する前記不揮発性メモリの前記シャドーページを調べ、
前記揮発性メモリのデータにページ単位で対応する前記不揮発性メモリの前記シャドーページを更新し、
前記シャドーページ管理手段から前記シャドーページの登録を削除する
ことを特徴とする付記６に記載の情報処理システム。
【００７７】
（付記８）
前記ページテーブル更新手段は、
前記サスペンド処理時、
前記揮発性メモリのページから前記不揮発性メモリの保存先の前記シャドーページを指すようにページテーブルを更新する
ことを特徴とする付記７に記載の情報処理システム。
【００７８】
（付記９）
前記ページ制御手段は、
前記不揮発性メモリの保存先の前記シャドーページ内の所定のサイズのデータを読み出し、
前記揮発性メモリのデータ内の対応するデータと比較し、
違いがある場合、前記シャドーページの対応するデータを更新し、
同一の場合、書き込みを行わないリード・モディファイ・ライトを行って前記シャドーページの更新を行う
ことを特徴とする付記７または付記８に記載の情報処理システム。
【００７９】
（付記１０）
前記不揮発性メモリは、
リード・モディファイ・ライトコマンドと、
所定のサイズの第１バッファーと、
所定サイズの第２バッファーと、
前記第１バッファーと前記第２バッファーのデータをビット単位で比較する比較回路と、
比較した結果異なったビットのみ書き込みを行う書き込み回路と
を有することを特徴とする付記９に記載の情報処理システム。
【００８０】
（付記１１）
所定時間前の過去から現在までに書き込みが起きた不揮発性メモリのページを集めたアクティブリストを作成し、
前記所定時間前の過去から現在までに書き込みが起きていない前記不揮発性メモリのページを集めたインアクティブリストを作成し、
前記アクティブリストに保持された前記不揮発性メモリのページの内容を揮発性メモリのページに移動する
ことを特徴とする情報処理システムの制御方法。
【００８１】
（付記１２）
情報処理システムの状態を保存して電源を遮断するサスペンド処理時に、
前記揮発性メモリのデータをページ単位で前記不揮発性メモリのページに保存し、
前記不揮発性メモリのページを前記インアクティブリストにつなぐ
ことを特徴とする付記１１に記載の情報処理システムの制御方法。
【００８２】
（付記１３）
前記サスペンド処理時に、
前記揮発性メモリのページから前記不揮発性メモリの保存先のページを指すようにページテーブルを更新する
ことを特徴とする付記１２に記載の情報処理システムの制御方法。
【００８３】
（付記１４）
前記アクティブリストの前記不揮発性メモリのページを書き込み禁止に設定し、
前記不揮発性メモリのページへの書き込みを一時中断し、
前記揮発性メモリのページを新たに割り当て、
前記不揮発性メモリのページの内容を新規に割り当てた前記揮発性メモリのページへ移動し、
移動したページに対して書き込みを行い、
前記不揮発性メモリのページは前記アクティブリストから外す
ことを特徴とする付記１３に記載の情報処理システムの制御方法。
【００８４】
（付記１５）
前記不揮発性メモリのページから前記揮発性メモリの移動先のページを指すように前記ページテーブルを更新する
ことを特徴とする付記１４に記載の情報処理システムの制御方法。
【００８５】
（付記１６）
前記不揮発性メモリの移動元のページを、前記揮発性メモリの移動先のページのシャドーページとして登録する
ことを特徴とする付記１４または付記１５に記載の情報処理システム。
【００８６】
（付記１７）
情報処理システムの状態を保存して電源を遮断するサスペンド処理時、
前記シャドーページ管理手段を用いて対応する前記不揮発性メモリの前記シャドーページを調べ、
前記揮発性メモリのデータにページ単位で対応する前記不揮発性メモリの前記シャドーページを更新し、
前記シャドーページ管理手段から前記シャドーページの登録を削除する
ことを特徴とする付記１６に記載の情報処理システムの制御方法。
【００８７】
（付記１８）
前記サスペンド処理時、
前記揮発性メモリのページから前記不揮発性メモリの保存先の前記シャドーページを指すように前記ページテーブルを更新する
ことを特徴とする付記１７に記載の情報処理システムの制御方法。
【００８８】
（付記１９）
前記不揮発性メモリの保存先の前記シャドーページ内の所定のサイズのデータを読み出し、
前記揮発性メモリのデータ内の対応するデータと比較し、
違いがある場合、シャドーページの対応するデータを更新し、
同一の場合、書き込みを行わないリード・モディファイ・ライトを行って前記シャドーページの更新を行う
ことを特徴とする付記１７または付記１８に記載の情報処理システムの制御方法。
【００８９】
（付記２０）
前記不揮発性メモリは、
リード・モディファイ・ライトコマンドと、
所定のサイズの第１バッファーと、
所定サイズの第２バッファーと、
を有し、
前記第１バッファーと前記第２バッファーのデータをビット単位で比較し、
比較した結果異なったビットのみ書き込みを行う
ことを特徴とする付記１９に記載の情報処理システムの制御方法。
【００９０】
（付記２１）
所定時間前の過去から現在までに書き込みが起きた不揮発性メモリのページを集めたアクティブリストを作成するステップと、
前記所定時間前の過去から現在までに書き込みが起きていない前記不揮発性メモリのページを集めたインアクティブリストを作成するステップと、
前記アクティブリストに保持された前記不揮発性メモリのページの内容を揮発性メモリのページに移動するステップと
を有することを特徴とする情報処理システムの制御プログラム。
【００９１】
以上、本発明の好ましい実施形態を説明したが、本発明はこれに限定されるものではない。請求の範囲に記載した発明の範囲内で、種々の変形が可能であり、それらも本発明の範囲に含まれることはいうまでもない。
【符号の説明】
【００９２】
１、２１    揮発性メモリ
２、２２    不揮発性メモリ
３    アクティブリスト
４    インアクティブリスト
５    ページ内容移動手段
１０    ＣＰＵ
２０    主記憶装置
３０    ２次記憶装置
４０    入出力装置
１００    情報処理システム
【図１】
2018120346.tif 000003
【図２】
2018120346.tif 000004
【図３】
2018120346.tif 000005
【図４】
2018120346.tif 000006
【図５】
2018120346.tif 000007
【図６】
2018120346.tif 000008
【図７】
2018120346.tif 000009
【図８】
2018120346.tif 000010
【図９】
2018120346.tif 000011
【図１０】
2018120346.tif 000012