"ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリと、上記不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換する機能を含む仮想メモリ制御部と、を有し、上記仮想メモリ制御部は、書換えが発生する仮想ページに割り当てる物理メモリ容量を拡張する機能を含む仮想メモリシステム。上記仮想メモリ制御部は、仮想ページに対して物理ページを割り当てる要求と、当該要求する領域に対するデータの書込み量に関する情報を受け取り、受け取った書込み量に関する情報を基に、仮想ページに割り当てる物理メモリ容量を拡張する請求項1記載の仮想メモリシステム。上記仮想メモリ制御部は、物理アドレスと仮想アドレスをページ単位ごとにマッピングし、書換えが発生する仮想ページに対して、当該仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて物理メモリ容量を拡張する請求項1記載の仮想メモリシステム。上記仮想メモリ制御部は、物理メモリ容量を拡張する容量を、データの書込み量に関する情報から、当該物理ページに発生する書換え回数を算出した結果によって決定する請求項1記載の仮想メモリシステム。上記仮想メモリ制御部は、割り当てた物理ページ間の書込み回数を平均化する機能を含む請求項1記載の仮想メモリシステム。仮想メモリシステムは、仮想アドレスを物理アドレスに変換するための情報を含むテーブルを有し、上記テーブルの情報には、物理ページ管理情報として、仮想ページに割り当てて使用中か、未割り当てであり未使用かを示す情報と、当該物理ページのこれまでの累積書込み容量に関する情報を含む請求項1記載の仮想メモリシステム。上記仮想メモリ制御部は、物理メモリ容量を拡張する容量を、データの書込み量に関する情報から、当該物理ページに発生する書換え回数を算出した結果によって決定し、上記テーブルの情報は、仮想ページに割り当てられた物理ページアドレスを管理するテーブル情報を含み、当該テーブル情報に、当該物理ページが不揮発性メモリにあるか否かを示す情報と、上記決定した物理ページを拡張した容量に関する情報を含む請求項6記載の仮想メモリシステム。仮想メモリシステムは、物理ページ毎に現在までに発生した書込み容量を示す情報を保持し、上記仮想メモリ制御部は、上記タイマーなどの内部イベント、あるいはOSやアプリケーションからの指示によって、割り当てた物理ページ間でデータを移動する処理を行う請求項7記載の仮想メモリシステム。上記仮想メモリ制御部は、物理ページを拡張した容量部分にアクセスするように制御する機能を有する請求項8記載の仮想メモリシステム。上記テーブルの情報は、上記不揮発性メモリに保存される請求項6記載の仮想メモリシステム。上記仮想メモリ制御部は、上記不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換する機能を有し、さらに、新しい物理ページを仮想ページに割り当て、仮想ページに割り当てられた物理ページを開放する機能を含む請求項1記載の仮想メモリシステム。上記仮想メモリ制御部は、仮想ページと物理ページの対応を管理テーブルにより管理し、未使用の物理ページが不足した場合に、すでに仮想ページに割り当て済みの物理ページの中から、パフォーマンスに与える影響が少ないと判断した物理ページを選択し、当該選択した物理ページのデータをストレージ上の専用の領域に書出すように制御する機能を有し、上記管理テーブル上のストレージ上に退避された物理ページが割り当てられた仮想ページの属性には、メモリ上に存在しないことを示すフラグをセットする請求項11記載の仮想メモリシステム。上記仮想メモリ制御部は、上記ストレージ上の専用領域に書き出した物理ページのデータが再度必要となった場合に、空き物理ページにそのデータを読込むように制御する機能を有し、上記管理テーブル上のメモリ上に存在しないことを示すフラグをリセットする請求項12記載の仮想メモリシステム。上記仮想メモリ制御部の制御処理に従って上記不揮発性メモリにアクセスするメモリコントローラを有し、上記仮想メモリ制御部は、上記不揮発性メモリの書換え回数の上限に関する情報を上記メモリコントローラから取得する請求項1記載の仮想メモリシステム。ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、仮想ページに書換えが発生すると、当該仮想ページに対する書込み量に関する情報に応じて当該仮想ページに割り当てる物理メモリ容量を拡張する仮想メモリの制御方法。ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、仮想ページに書換えが発生すると、当該仮想ページに対する書込み量に関する情報に応じて当該仮想ページに割り当てる物理メモリ容量を拡張する仮想メモリの制御処理をコンピュータに実行させるプログラム。ところで、次世代の不揮発性ランダムアクセスメモリは、メモリセルへの書込み時にベリファイ処理を行い書込みエラーを検出する機能を持ち、そのエラー発生率をある基準以下に抑えるためには、書換え回数の上限以下で使用する必要がある。一方で、SRAMやDRAMのような揮発性メモリは書込みエラーが発生せず書換え回数の上限も持たない。このような次世代の不揮発性ランダムアクセスメモリによってSRAMやDRAMといった揮発性ランダムアクセスメモリの置換えを実現するためには、書換え回数に上限があることを踏まえてシステム構築する必要がある。不揮発性メモリは書換え回数の増加とともにデータの保持特性が劣化するため、セルの書換え回数に制限を持っている。揮発性メモリのように書換え回数に上限のないメモリを前提とした現在のシステムでは、不揮発性ランダムアクセスをそのままワークメモリとして使った場合、次のような不利益が生じる恐れがある。すなわち、不揮発性ランダムアクセスをそのままワークメモリとして使った場合、特定の領域に書換えが集中することによるデータエラーが発生し、システムの動作に致命的な影響を与える恐れが存在する。現在のシステムでは揮発性ランダムアクセスメモリのリソースは仮想メモリシステムによって管理されている。仮想メモリシステムが不揮発性ランダムアクセスメモリにも対応することによって、デマンドページングのような現在のシステムで有用な機能を実現しつつ、不揮発性であることによる消費電力の削減効果を発揮することができる。具体的には、不揮発性ランダムアクセスメモリであれば、アクセスしないアドレス領域のメモリデバイスへの電源供給を停止できる。これにより、不揮発性ランダムアクセスメモリは同容量の揮発性メモリより低消費電力であり、またシステムの起動時や終了時に、メモリの状態を保存、再現するためにストレージにアクセスする必要もないため、さらにシステムの瞬間起動、瞬間終了が可能となる。しかし、現状の仮想メモリシステムは、アプリケーションからメモリに対するアクセスを、仮想メモリアドレスを介して実現する仕組みである。その結果、現状の仮想メモリシステムは、物理ページの割り当てはアプリケーションからの要求による順番によって決定され、さらにデータの書込みが特定の物理ページに集中することを管理制御する手段を持っていない。また、物理ページへの書き込みアクセスを監視し、物理ページごとに書き換え回数を計測することは、アクセス性能に影響を与えずに実現することが非常に困難であり、また書き換え回数を保存する領域がデータ領域を圧迫する原因にもなると考えられる。本技術は、書換え回数の制限のある不揮発性メモリに対するアクセスにおいてアプリケーションからは書込み制限を回避することが可能な仮想メモリシステム、仮想メモリの制御方法、およびプログラムを提供することにある。本技術の第1の観点の仮想メモリシステムは、ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリと、上記不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換する機能を含む仮想メモリ制御部と、を有し、上記仮想メモリ制御部は、書換えが発生する仮想ページに割り当てる物理メモリ容量を拡張する機能を含む。本技術の第2の観点の仮想メモリの制御方法は、ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、仮想ページに書換えが発生すると、当該仮想ページに対する書込み量に関する情報に応じて当該仮想ページに割り当てる物理メモリ容量を拡張する。本技術の第3の観点の仮想メモリの制御方法は、ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、仮想ページに書換えが発生すると、当該仮想ページに対する書込み量に関する情報に応じて当該仮想ページに割り当てる物理メモリ容量を拡張する仮想メモリの制御処理をコンピュータに実行させるプログラムである。本技術によれば、書換え回数の制限のある不揮発性メモリに対するアクセスにおいてアプリケーションからのアクセス性能に影響を与えずに、書込み制限を回避することができる。以下、本実施形態を図面に関連付けて説明する。なお、説明は以下の順序で行う。1.第1の実施形態仮想メモリシステムの第1の構成例2.第2の実施形態仮想メモリシステムの第2の構成例3.第3の実施形態仮想メモリシステムの第3の構成例<1.第1の実施形態>図1は、本第1の実施形態に係る不揮発性ランダムアクセスメモリNVRAMを適用した仮想メモリシステムの構成を示す図である。本仮想メモリシステム10は、仮想メモリ制御部としてのCPU20、メモリコントローラMemoryController30、不揮発性ランダムアクセスメモリNVRAM40、およびシステムバスSystemBus50を含んで構成される。不揮発性ランダムアクセスメモリ40は、ランダムアクセス可能で、書換え回数に上限があり、その物理アドレス空間へのアクセスはCPU20の制御の下、仮想アドレス空間を介して行われる。CPU20は、プロセッサユニットProcessorUnit21、メモリ管理ユニットMMU;MemoryManagementUnit22、キャッシュメモリ23を有する。CPU20は、トランスレーションルックアサイドバッファTranslationLookasideBuffer;TLB24、およびバスインタフェースユニットBusInterfaceUnit25を有する。本実施形態に係る仮想メモリシステム10は、基本的に書込み回数に上限を持った不揮発性ランダムアクセスメモリ40を前提とした仮想メモリシステムとして形成される。本仮想メモリシステム10は、割り当てるメモリ領域に対して、アプリケーションからどれだけの書換え回数が発生するかを考慮してメモリ領域のアロケーションやサイズを決定する第1の機能を有する。また、仮想メモリシステム10は、タイマーなどの内部イベント、あるいはOSやアプリケーションからの指示を受けて、割り当てた物理ページ間で書込み回数を平均化するためにデータを移動する第2の機能を有する。また、仮想メモリシステム10は、仮想メモリ制御部としてのCPU20が不揮発性ランダムアクセスメモリ40の書換え回数の上限に関する情報をメモリコントローラから取得する。これにより、上記第1の機能および第2の機能を各不揮発性ランダムアクセスメモリの書換え回数の仕様に合わせて柔軟に対応することもできるように形成される。図1の仮想メモリシステム10において、仮想メモリ制御部としてのCPU20は、そのシステムバス50に接続されたメモリコントローラ30を介して不揮発性ランダムアクセスメモリ40にアクセスする。CPU20内のプロセッサユニット21はバスインタフェースユニット25を介してシステムバス50に接続されている。バスインタフェースユニット25にはMMU22とキャッシュメモリ23とMMU22が使用するページディレクトリテーブルPageDirectoryTable、ページテーブルPageTableのエントリEntryをキャッシュするTLB24が接続されている。なお、CPUとしては、キャッシュメモリ23やTLB24を命令用とデータ用で独立に持ったCPUや、L1、L2、L3など複数段のキャッシュメモリを持ったCPUも適用することが可能である。メモリコントローラ30は、入力されたコマンドとアドレスに従って、メモリコントローラ30に接続されたメモリの中から、アクセスされるメモリデバイスを特定し、コマンドに従ってリード読出しおよびライト書込みに関するアクセスを実行する。本第1の実施形態において、メモリは不揮発性ランダムアクセスメモリである。ただし、後述するように、DRAM等の揮発性メモリを接続して、一般的な仮想メモリシステムとして構成することも可能である。このCPU20が、仮想メモリ制御部として機能するが、本実施形態のCPU20は、以下の機能を持つように構成される。CPU20において、仮想メモリ制御は、基本的にMMU22と仮想メモリ制御ソフトウェアを中心に行われる。MMU22は、不揮発性ランダムアクセスメモリ40の物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングした情報をテーブルとして保持し、そのテーブルを使用してアクセスのあった仮想アドレスを物理アドレスに変換する機能を含む。仮想メモリ制御部はMMU22と仮想メモリ制御ソフトウェアによって、新しい物理ページを仮想ページに割り当てる機能と、仮想ページに割り当てられた物理ページを開放する機能を持つ。MMU22は、仮想ページと物理ページの対応を後述するように、管理テーブルにより管理する。仮想メモリ制御部は、未使用の物理ページが不足した場合に、MMU22が管理するすでに物理ページの割り当てられた仮想ページの中から、パフォーマンスに与える影響が少ないと判断した仮想ページを選択し、その仮想ページに割り当てられた物理ページのデータをストレージ上の専用の領域に書出すように制御する。ここで、パフォーマンスに与える影響の少ないとは、たとえば最もアクセス頻度が低いと判断したページを選択することである。仮想メモリ制御部は、上記物理ページのデータをストレージ上に退避した後、上記物理ページに割り当てられた仮想ページの管理テーブル上の属性に、その仮想ページが物理メモリ上に存在しないことを示すフラグをセットする。仮想メモリ制御部は、ストレージ上の専用領域に書き出した物理ページのデータが再度必要となった場合に、空き物理ページにそのデータを読込むように制御し、そのときMMU22の管理する上記管理テーブル上の属性のメモリ上に存在しないことを示すフラグをリセットする。なお、ストレージとしては、ハードディスク等を例示することができる。仮想メモリ制御部は、仮想ページに対して物理ページを割り当てる要求と、その要求する領域に対するデータの書込み量に関する情報を受け取り、受け取った書込み量に関する情報を基に、仮想ページに割り当てる物理メモリ容量を拡張する機能を含む。MMU22は、物理アドレスと仮想アドレスをページ単位ごとにマッピングし、書換えが発生する仮想ページに対して、その仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて管理することができる。仮想メモリ制御部は、物理メモリ容量を拡張する容量を、データの書込み量に関する情報から、その物理ページに発生する書換え回数を算出した結果によって決定する。仮想メモリ制御部は、タイマーなどの内部イベントあるいは、OSやアプリケーションからの指示に従って、割り当てた物理ページ間でデータを移動し、書込み回数を平均化する機能を含む。本実施形態において、仮想メモリシステム10は、仮想アドレスを物理アドレスに変換するための情報を含む2つの管理テーブルを有する。第1の管理テーブルには、物理ページ管理情報として、仮想ページに割り当てて使用中か、未割り当てであり未使用かを示す情報と、その物理ページのこれまでの累積書込み容量に関する情報を含む後述する図5。第2の管理テーブルには、アドレス変換情報として、仮想ページに割り当てられた物理ページアドレスを管理する情報を含み、この情報に、その物理ページが不揮発性メモリにあるか否かを示す情報と、上記決定した物理ページを拡張した容量に関する情報を含む。仮想メモリシステム10において、仮想メモリ制御部は仮想ページに割り当てられた物理ページへの書込み回数が増加することによるデータエラーの発生を軽減するための処理として、タイマーなどの内部イベント、あるいはOSやアプリケーションからの指示によって物理ページを拡張した容量部分にアクセスするように制御する機能を有する。本実施形態において、管理テーブルの情報は、不揮発性ランダムアクセスメモリ40に保存される。これにより、電源投入時は、不揮発性ランダムアクセスメモリ40上からテーブル情報を読み取り、電源切断前の状態に復帰することが可能となっている。また、CPU20の仮想メモリ制御部は、不揮発性ランダムアクセスメモリ40の書換え回数の上限に関する情報をメモリコントローラ30から取得することも可能である。以下、上記したような特徴的な構成を有するCPU20における仮想メモリ制御について、不揮発性ランダムアクセスメモリではなく揮発性メモリを適用した一般的な仮想メモリシステムと対比しつつ、具体的に説明する。[一般的なシステム]現状の一般的なシステムにはメモリコントローラとしてDRAMコントローラを使用して揮発性メモリであるDRAMをワークメモリとして使用するシステムがもっとも多く存在する。また近年ではCPUとワークメモリ間の転送効率を改善するために、DRAMコントローラをCPUに内蔵したデバイスも存在している。このような現状のシステムではメモリがすべて揮発性であるため、システムの起動にはBIOSと呼ばれるROMを必要とする。そして、BIOS内のブートローダBootLoaderと呼ばれるプログラムを実行することでOS、さらにOSによってアプリケーションまで、その実行に必要とするプログラムコードとデータが、ハードディスクなどのストレージ上からワークメモリ上にロードされ、順次実行される。ハードディスクのアクセス時間は数10msに対し、ワークメモリのDRAMは数10nsレベルと、そのアクセス時間のギャップは大きい。NANDフラッシュを搭載したSSDの登場によりストレージのアクセス時間は数100μsまで改善されたが、いまだにDRAMとの間にはアクセス速度のギャップが存在しており、効率のよいCPUの動作を妨げる大きな要因となっている。[一般的な仮想アドレス空間と物理アドレス空間のマッピング]図2は、一般的な仮想アドレス空間と物理アドレス空間のマッピング例を示す図である。一般的な仮想メモリシステムでは、使用するメモリはSRAMやDRAMのように書込み回数の上限を持たない揮発性メモリである。仮想アドレス空間VASは、物理アドレス空間PASよりも大きなアドレス空間であり、ページPGと呼ばれる一般的には4Kbyteのサイズからなる単位領域ごとに仮想アドレスと物理アドレスがマッピングされる。1つの仮想ページVPGは1つの物理ページPPGに割り当てられ、そのサイズは一致している。たとえば、図2のリード領域ReadAreaRA1は読出し専用の領域であり、ライト領域WriteAreaWA1、WA2は読出しと書込みを行う領域である。これら3つの領域では割り当てられた仮想ページVPGと物理ページPPGの数は一致している。[本実施形態の仮想アドレス空間と物理アドレス空間のマッピング]図3は、本実施形態の仮想アドレス空間と物理アドレス空間のマッピング例を示す図である。ここで使用するメモリは不揮発性ランダムアクセスメモリであり、書換え回数の上限が存在するメモリである。本実施形態の仮想メモリシステム10は、書換えが発生する仮想ページに対して、複数の物理ページを割り当てることにより、書換え回数の制限を回避することを特徴としている。たとえば、図3のリード領域ReadAreaRA11は読出し専用の領域であり、ライト領域WriteAreaWA11は読出しと書込みを行う領域である。これら2つの領域では割り当てられた仮想ページVPGと物理ページPPGの数は一致している。一方のライト領域WriteAreaWA12は仮想メモリ空間でのサイズが2ページであるのに対して、物理メモリ空間では4ページとなっている。ライト領域WriteAreaWA11とライト領域WriteAreaWA12の違いは、その領域に発生する書込みデータの量の違いから来る書換え回数の違いである。ライト領域WriteAreaWA12はライト領域WriteAreaWA11の2倍の書換え回数が発生することを意味している。本実施形態では、仮想ページVPGに対する書込み量を示す情報が仮想メモリシステム10に対して提供されており、その書込み量に関する情報に基づき、割り当てるべき物理ページPPGの数を算出し決定する機能を持っている。[仮想メモリシステムでの仮想アドレスから物理アドレスへの変換の過程]図4は、仮想メモリシステムでの仮想アドレスから物理アドレスへの変換の過程を示す図である。このアドレス変換には第2の管理テーブルとして、ページディレクトリテーブルPageDirectoryTablePDT11とページテーブルPageTablePT11の2つのテーブルが使用される。ページディレクトリテーブルPDT11は仮想アドレスVAの上位ビットBitUBTを参照値として、ページディレクトリテーブルPDT11のエントリEntryPDTEを特定する。そして、その上位ビットUBTが指定する仮想アドレス領域に対する物理ページPPGのアドレスを管理するページテーブルPT11にアクセスする。次に、仮想アドレスVAの中位MBTを参照値として、ページテーブルPT11のエントリEntryPTEを特定し、該当する物理ページPPGのアドレスを取得する。残った下位ビットLBTが示すアドレスをオフセットとして、最終的なデータの物理アドレスPAが決まる。このようにページディレクトリテーブルPDT11、ページテーブルPT11は、仮想アドレスVAを物理アドレスPAに変換するために必須となる情報を持ったテーブルであり、この物理アドレスPAが示すと同じメモリ上に保持されている。図5は、本実施形態に係る物理ページ管理情報テーブルの例を示す図である。図6は、図5の比較例であって、一般的な物理ページ管理情報テーブルの例を示す図である。第1の管理テーブルとして、各物理ページが仮想ページに割り当て使用中であるかの情報使用状態フラグuflagを持つ物理ページ管理情報テーブルPPGMT1を持つ。仮想メモリ制御部が新たに物理ページPPGを割り当てる場合や、割り当てた物理ページPPGを解放する場合に、図5および図6に示すように、この物理ページ管理情報を元に、その対象となる物理ページの管理情報を変更し管理している。一般的な揮発性メモリを搭載した仮想メモリシステムでは終了時にストレージ上にこれらの2つの管理テーブルを保存し、起動時に再び読み込むことで、終了前の状態を再現する。本実施形態の物理ページ管理情報は、上記使用状態フラグuflagの他に、図5に示すように、現在までの書込み容量を示す情報CWAMを持つ。仮想メモリ制御部が新たに物理ページを割り当てる場合や、割り当てた物理ページを解放する場合に、この物理ページ管理情報を基に、使用状態フラグuflagと現在までの書込み容量CWAMを元に物理ページを選択し、それぞれの情報を更新管理している。使用状態フラグuflagは、たとえば未使用時は論理0に設定され、使用時は論理1に設定される。本実施形態は不揮発性ランダムアクセスメモリ40を搭載するため、そのようなストレージへのアクセス、保存が不要となる。[一般的なページディレクトリテーブルのエントリEntryの例]図7は、一般的なページディレクトリテーブルのエントリEntryの例を示す図である。図7のページディレクトリテーブルエントリPDTE1は、仮想アドレスの上位ビットで指定された領域のページテーブルPT11が存在する先頭物理アドレスを示すページテーブルベースアドレスPageTableBaseAddressPTBAを含む。ページディレクトリテーブルエントリPDTE1は、ページデーブルベースアドレスPTBAとその他の情報ビットにより形成される。ページレベルキャッシュディセブルPageLevelCacheDisablePCDビットは、このビットが1の場合に、このエントリEntryが示す仮想アドレス領域は上記CPU20の持つキャッシュCacheメモリ23に保存されないことを示す。ページレベルキャッシュライトスルーPageLevelCacheWriteThroughPCWTビットは、前記PCDビットが0であり、後に示すR/WReadWriteビットが1であった場合に、次のことを示す。すなわち、ページレベルキャッシュライトスルーPCWTビットが1である場合は、このエントリEntryの示す仮想アドレス領域への書込みはCPU20の持つキャッシュメモリ23に保存され、かつ仮想アドレス領域に対しても書き込まれることを示す。つまり、この領域に対する書込みはキャッシュメモリ23に対して行われず直接このエントリEntryが示したページテーブルPT11によって指示される物理ページ領域に書込まれることを示す。PCWTビットが0であった場合には、ライトバックWriteBack方式であることを示し、このエントリEntryが示す仮想アドレス領域への書込みはCPU20の持つキャッシュメモリ23に対して行われることを示す。R/Wビットは、そのビットが1であった場合には、そのエントリEntryが示す仮想アドレス領域に対してリードReadアクセスまたはライトWriteアクセスが行われることを示している。R/Wビットは、そのビットが0であった場合には、リードオンリーReadOnlyであることを示している。プレゼンスPresencePビットは、このビットPが1であった場合は、そのエントリEntryが示す仮想アドレス領域のデータがメモリ上に存在することを示す。プレゼンスPビットが0であった場合には、そのデータはスワップアウトされストレージ上に保存されており、再利用するには新たな物理アドレス空間を割り当て、データをストレージから読み込むスワップインの処理が必要であることを示している。[一般的なページテーブルのエントリEntryの例]図8は、一般的なページテーブルのエントリEntryの例を示す図である。図8のページテーブルエントリPTE1は、そのエントリEntryの示す仮想ページに割り当てられた物理ページの先頭アドレスを示すページベースアドレスPageBaseAddressPBAとその他の情報ビットにより形成される。ダーティビットDirtyBitDBビットは、そのビットが1であった場合は、そのエントリEntryの仮想ページVPGに割り当てられた物理ページPPGに対して書込みが発生したことを示す。それ以外の情報ビットは図7のページディレクトリテーブルエントリPDTE1と同様である。[本実施形態に係るページディレクトリテーブルのエントリの例]図9は、本実施形態に係るページディレクトリテーブルのエントリの例を示す図である。図9のページディレクトリテーブルエントリPDTE11は、図7のエントリにNVMビットが情報ビットとして付加されている。NVMビットは、そのビット1である場合にはこのエントリEntryが示すページテーブルPT11と仮想アドレス領域に割り当てられた物理ページPPGはすべて不揮発性ランダムアクセスメモリ40であり、書換え回数に上限を持つメモリによる物理ページ空間であることを示す。[本実施形態に係るページテーブルのエントリの例]図10AおよびBは、本実施形態に係るページテーブルのエントリの例およびその仮想アドレスから物理アドレスを生成する過程を示す図である。図10AのページテーブルエントリPTE11は、図8のエントリに3つの情報ビットが付加されている。ページテーブルエントリPTE11は、このエントリEntryの示す仮想ページVPGに対して割り当てられた物理ページ数を示すページ数PageNumberPNビットを有する。さらに、ページテーブルエントリPTE11は、割り当てられた物理ページの中で、現在使用中のページを示すページ番号CurrentPageNumberCPNビットを有し、ページベースアドレスPBAはページ番号CPNで示された物理ページのアドレスを示す。さらに、ページテーブルエントリPTE11は、NVMNonVolatileMemoryビットを有する。上記PNビットおよびCPNビットの値は、NVMビットが1であるときに有効である。また、このNVMビットが0である場合にはこの仮想ページに割り当てられたメモリが揮発性メモリであることを示す。物理アドレスPAは、図10Bに示すように、ページテーブルエントリPTE11のページベースアドレスPBAと仮想アドレスVAのオフセットOFSTの論理和ORをとることにより生成される。[仮想ページに対して新たに物理ページを割り当てる際の処理]図11は、本実施形態の仮想メモリシステムが仮想ページに対して新たに物理ページを割り当てる際の処理を説明するためのフローチャートである。第1のステップST1において、物理ページ管理情報から、現在未使用である物理ページアドレスを取得し、第2のステップST2でその物理ページの現在までの書込み容量に関する情報を取得する。第3のステップST3では、下記の計算式から要求された仮想ページ領域に必要となる物理ページ数を算出する。本実施形態の仮想メモリシステム10では、不揮発性ランダムアクセスメモリ40の物理ページを要求する際に、その領域に対するデータの総書込み容量に関する情報TWAMを渡すことを特徴とする。本実施形態の仮想メモリシステム10は、総書込み容量TWAMと、不揮発性メモリの書換え回数の上限値ULWNと、新たに割り当てる物理ページの現在までの総書込み容量CWAMから必要な物理ページ数NPNを算出する。第4のステップST4で、物理ページ数が、要求するページ数よりも大きくなった場合には、再度その割り当てが可能となる物理ページを探索する。割り当て可能な物理ページが見つかれば、第5のステップST5でその物理ページ領域を未使用から使用状態に変更して物理ページ管理情報を更新する。第6のステップST6で、さらにその物理ページの先頭アドレスをページテーブルエントリPageTableEntryに登録する。ページ数の算出について具体例を示す。仮想ページ、物理ページが4Kbyteとして、要求する仮想ページ数は2ページPage、不揮発性メモリの書換え回数の上限が10000回とする。割り当てようとする物理ページのCWAMがゼロであり、総書込み容量が80MByte以下であった場合には、上記式1から計算した結果ただし、α=1、10000回の書換えが発生することになる。その結果、割り当てに必要となる物理ページ数も要求サイズに等しい2ページとなる。もし、総書込み容量が160MByteであった場合には、2ページPageでは書換え回数が上限である10000回を上回るため、4ページPageを割り当てる必要があることになる。この算出方法は一例である。たとえばライトバック方式のキャッシュを使用する場合には、ライトバック時以外の書込みはキャッシュで吸収されるため、書換え回数の増加は起こらず、前記の算出方法よりも少ない物理ページの割り当てで対応できる可能性を持っている。また、書換え回数を平均化するために、割り当てた物理ページ間でデータを移動することによっても書込みが発生する。そのため、上記式1においても係数αを定義することで、そのシステムのキャッシュメモリの容量、方式、ページサイズなどの仕様や、そのシステム上で動作するアプリケーションのメモリ使用量、さらに平均化のためのデータ移動の頻度などから適切な係数αを導き出して使用する。これにより、割り当てる物理ページ数を最適化していくことができる。本実施形態の仮想メモリシステムでは、物理ページを割り当てる段階で総書込み容量を算出することによって、書換え回数をカウントする処理を不要にすることができる。書換え回数のカウントを実現するには、書込みの発生を監視しアドレスを検出する仕組みと、そのアドレスごとに書込み回数をカウントし保存する仕組みが必要となり、メモリへの書込みアクセスにこれらの仕組みを持つことは、その実現が困難な上に、パフォーマンスへの影響も避けられない。そのような書換え回数のカウントを不要とすることは、本発明の目指す不揮発性ランダムアクセスメモリに対応した仮想メモリシステムを実現する上で大きなメリットとなる。図12は、本実施形態の仮想メモリシステムで、仮想ページのデータを書き換え回数の平均化のために、容量拡張された物理ページ内で移動する処理を説明するためのフローチャートである。OSやアプリケーションは発生するデータ書き込み容量を算出するために、あらかじめデータ移動を行うタイミングを設定しておくことが望ましい。図12の第1のステップST11でページテーブルPT11に保存されたエントリのCPNビットの値をインクリメントする。新しいCPNビットは現在のページベースアドレスPBAが示す物理ページの次のページを示す。第2のステップST12でそのCPNビットの値がPNビットに一致した場合には、ステップST16でCPNビットを0に設定する。この場合、新しいCPNビットはこの仮想アドレスに割り当てられた物理ページの先頭のページを示す。第3のステップでST13は、現在のページベースアドレスPBAで示される物理ページを新しいCPNビットが示す物理ページへコピーする。第4のステップST14では、新しいCPNビットが示す物理ページアドレスを新たなページベースアドレスPBAとしてページテーブルエントリPTE11に登録する。第5のステップST15では、第4のステップST14においてテーブルTBL上で変更したページテーブルエントリPTE11を不揮発性ランダムアクセスメモリ40上に存在するページテーブルPT11上に反映する処理を行っている。図12に示した物理ページ間のデータコピーはシステムの処理時間に影響があるため、そのシステムのアプリケーションに適切な間隔及びタイミングで処理できるように調整することが必要となる。また、データ移動の処理をCPUのソフトウェアによって実現すると、それらのデータがCPUの持つデータキャッシュメモリを占有するため、その後のアプリケーションの動作パフォーマンスにまで影響を与える可能性が高い。図12に示したデータ移動の処理はDMAを使って実現されることが望ましい。図13は、本実施形態の仮想メモリシステムで仮想ページに割り当てられた物理ページを開放するときの処理を説明するためのフローチャートである。図13の第1のステップST2でテーブルTBL上のページテーブルエントリPTE11の初期化を行う。そして、第2のステップST22で不揮発性ランダムアクセスメモリ40上のページテーブルPT11を更新し、第3のステップST23で解放された物理ページを未使用状態とし、さらに総書き込み容量TWAMを現書き込み容量CWAMに加算し、物理ページ管理情報を更新する。本実施形態の仮想メモリシステム10は、動作時に必要となる物理ページ管理情報、ページディレクトリテーブルPDT11、ページテーブルPT11がすべて不揮発性ランダムアクセスメモリ40上に存在する。このため、一般的な仮想メモリシステムのように終了処理において、現在の仮想メモリの状態を再現するために必要な情報を構成し、ストレージに保存する処理が不要である。そして、起動処理においても、終了時にストレージに保存した情報を読込み仮想メモリの状態を再現する処理が不要であることから、システムの高速な終了と起動を可能とし、ストレージへのアクセスも削減できる。その結果、特に煩雑に電源の起動終了を繰り返すシステムにおいては、消費電力の削減効果も大きくなることが期待される。また、本実施形態の仮想メモリシステム10においても、一般的な仮想メモリシステムと同様にスワップアウト、スワップイン処理に対応することは可能である。スワップアウト処理の場合には、その物理ページのデータをストレージ上の専用領域スワップ領域に書込んだ後、その物理ページをリリースして新しい仮想ページを割り当てる処理を行う。スワップイン処理の場合には、空き物理ページを新しい仮想ページに割り当てる処理を行った後、ストレージ上のスワップ領域からその仮想ページに該当するデータの読込み処理を行う。<2.第2の実施形態>図14は、本第2の実施形態に係る不揮発性ランダムアクセスメモリNVRAMを適用した仮想メモリシステムの構成を示す図である。本第2の実施形態に係る仮想メモリシステム10Aが第1の実施形態に係る仮想メモリシステム10と異なる点は次の通りである。本仮想メモリシステム10Aでは、メモリコントローラ30Aに対して不揮発性ランダムアクセスメモリ40に加えて、DRAM等の揮発性ランダムアクセスメモリ40Aが接続されている。図9および図10に関連付けて説明したように、本実施形態においては、NVMビットがページディレクトリテーブルPDT11、ページテーブルPT11の各エントリEntryに追加されている。これにより、第1および第2の本実施形態の仮想メモリシステム10,10Aが不揮発性ランダムアクセスメモリ40と、揮発性ランダムアクセスメモリ40Aの両方に対応可能である。本第2の実施形態の仮想メモリシステム10Aでは、実際に揮発性ランダムアクセスメモリ40Aがメモリコントローラ10Aに接続され、不揮発性と揮発性のメモリに対応可能に構成されている。なお、図14ではメモリコントローラが一つの場合を示しているが、不揮発性ランダムアクセスメモリ40と、揮発性ランダムアクセスメモリ40Aに個別に対応可能な複数のメモリコントローラを配置する構成を採用することも可能である。NVMビット=0の場合は、一般的な仮想メモリシステムと同じ動作が可能となり、本実施形態で追加した各エントリEntryの項目は使用されない。また起動処理において、ページディレクトリテーブルエントリPDTE11、ページテーブルエントリPTE11でNVMビットが0のエントリEntryは初期化されるが、NVMビットが1のエントリEntryの情報はそのまま使用される。図15は、ページテーブルを揮発性メモリ用と不揮発性メモリ用を独立に持つ場合の仮想メモリシステムでの仮想アドレスから物理アドレスへの変換の過程を示す図である。図15に示すように、ページテーブルを揮発性メモリ用ページテーブルPT11と不揮発性メモリ用ページテーブルPT12を独立に持つことで、不揮発性ランダムアクセスメモリ40の物理ページPPGを仮想ページVPGのサイズを独立に定義することができる。書換え回数を強化するために、前記のように物理ページ単位で仮想ページよりも大きな容量にする以外の手法として次のような方法を採用可能である。すなわち、ECCを保存する容量を追加し、物理ページ上のデータをECCによって保護することでデータ保持特性を改善し、結果として書換え回数を強化することもできる。図15の構成の場合のページテーブルエントリPageTableEntryPTEの構成を図16および図17に示す。図16AおよびBは、図15の構成に対応する揮発性メモリのページテーブルエントリの例およびその仮想アドレスから物理アドレスを生成する過程を示す図である。ページディレクトリテーブルエントリPDTE11のNVMビットが0であった場合には、そのエントリEntryが指すページテーブルベースアドレスPTBAのページテーブルPT11は、このページテーブルエントリPTE11により形成される。もしページテーブルの一部がNVMNonVolatileMemoryであった場合には、そのページテーブルエントリPTE11のNVMビットが1に設定される。ページベースアドレスPBAは図16Aに示すページテーブルエントリPTE11から成るページテーブルPageTableを指す。この場合、物理アドレスPAは、図15Bに示すように、ページテーブルエントリPTE11のページベースアドレスPBAと仮想アドレスVAのオフセットOFSTの論理和ORをとることにより生成される。図17AおよびBは、図15の構成に対応する不揮発性メモリのページテーブルエントリの例およびその仮想アドレスから物理アドレスを生成する過程を示す図である。ページディレクトリテーブルエントリPDTE11のNVMビットが1であった場合には、そのエントリEntryが指すページテーブルベースアドレスPTBAのページテーブルは、このページテーブルエントリPTE12により形成される。このページテーブルエントリPTE12は拡張サイズExtendedSizeビットが付加されている。拡張サイズExtendedSizeは登録された物理ページが、仮想ページよりも拡張されているサイズを示す値である。したがって、ページベースアドレスPBAは、常にページ境界のアドレスにはならないため、図16Bに示すように、物理アドレスPAの算出には加算器ADDが必要となる。<3.第3の実施形態>図18は、本第3の実施形態に係る不揮発性ランダムアクセスメモリNVRAMを適用した仮想メモリシステムの構成を示す図である。本第3の実施形態に係る仮想メモリシステム10Bが第1の実施形態に係る仮想メモリシステム10と異なる点は、仮想メモリ制御部としてのCPU20AにECC回路26が配置されていることにある。不揮発性ランダムアクセスメモリ40から読込まれたデータはキャッシュメモリ23に転送されるが、ECCを付加されたデータの場合には、ECC回路26による誤り検出訂正後のデータがキャッシュメモリ23に転送される。また、書込み時にはキャッシュメモリ23のデータがメモリコントローラ30を介して不揮発性ランダムアクセスメモリ40に転送されるが、ECCコードが追加して書込まれる。なお、この構成は第2の実施形態の仮想メモリシステムにも適用することは可能である。以上説明したように、本実施形態によれば、以下の効果を得ることができる。本実施形態の仮想メモリシステムでは、割り当てるメモリ領域に対して、アプリケーションからどれだけの書換え回数が発生するかを考慮してメモリ領域のアロケーションやサイズを決定する機能を有する。これにより、本実施形態によれば、書換え回数が大きいほど割り当てる容量を大きくすることで、書換え回数が不揮発性ランダムアクセスメモリの上限仕様内に収まるように割り当てることが可能となる。また、書換え回数の上限がある不揮発性ランダムアクセスメモリもアプリケーションからは書換え回数に上限のない不揮発性メモリとしてアクセスすることが可能となる。また、タイマーなどの内部イベント、あるいはOSやアプリケーションからの指示を受けて割り当てた物理ページ間でデータを移動する機能により、上記割り当てた領域内で効率よく書換え回数が均一化されることで、書換え回数に従って大きくする容量を小さく抑え、メモリ使用効率の改善が可能となる。また、本実施形態によれば、仮想メモリシステムに接続された不揮発性ランダムアクセスメモリの書換え回数の上限に関する情報をメモリコントローラから取得するように構成することも可能である。これにより、書換え回数の上限の異なる不揮発性ランダムアクセスメモリを接続した場合にも、ある割当て要求に対して、それぞれの不揮発性ランダムアクセスメモリに最適な物理ページ数を割り当てることができる。また、要求される書換え回数と容量に従って、物理ページを確保する不揮発性ランダムアクセスメモリを選択することも可能となり、メモリ使用効率の改善も可能となる。また、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、CPU等のコンピュータで実行するように構成することも可能である。また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー登録商標ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。なお、本技術は以下のような構成もとることができる。1ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリと、上記不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換する機能を含む仮想メモリ制御部と、を有し、上記仮想メモリ制御部は、書換えが発生する仮想ページに割り当てる物理メモリ容量を拡張する機能を含む仮想メモリシステム。2上記仮想メモリ制御部は、仮想ページに対して物理ページを割り当てる要求と、当該要求する領域に対するデータの書込み量に関する情報を受け取り、受け取った書込み量に関する情報を基に、仮想ページに割り当てる物理メモリ容量を拡張する上記1記載の仮想メモリシステム。3上記仮想メモリ制御部は、物理アドレスと仮想アドレスをページ単位ごとにマッピングし、書換えが発生する仮想ページに対して、当該仮想ページに対する書込み量に関する情報を基に、複数の物理ページを割り当てて物理メモリ容量を拡張する上記1または上記2記載の仮想メモリシステム。4上記仮想メモリ制御部は、物理メモリ容量を拡張する容量を、データの書込み量に関する情報から、当該物理ページに発生する書換え回数を算出した結果によって決定する上記1から上記3のいずれか一に記載の仮想メモリシステム。5上記仮想メモリ制御部は、タイマーなどの内部イベント、あるいはOSやアプリケーションからの指示によって割り当てた物理ページ間でデータを移動する機能を持つことで、書込み回数を平均化する機能を含む上記1から上記4のいずれか一に記載の仮想メモリシステム。6仮想メモリシステムは、仮想アドレスを物理アドレスに変換するための情報を含むテーブルを有し、上記テーブルの情報には、物理ページ管理情報として、仮想ページに割り当てて使用中か、未割り当てであり未使用かを示す情報と、当該物理ページのこれまでの累積書込み容量に関する情報を含む上記1から上記5のいずれか一に記載の仮想メモリシステム。7上記仮想メモリ制御部は、物理メモリ容量を拡張する容量を、データの書込み量に関する情報から、当該物理ページに発生する書換え回数を算出した結果によって決定し、上記テーブルの情報は、仮想ページに割り当てられた物理ページアドレスを管理するテーブル情報を含み、当該テーブル情報に、当該物理ページが不揮発性メモリにあるか否かを示す情報と、上記決定した物理ページを拡張した容量に関する情報を含む上記6記載の仮想メモリシステム。8仮想メモリシステムは、物理ページ毎に現在までに発生した書込み容量を示す情報を保持し、上記仮想メモリ制御部は、上記内部イベントあるいはOSやアプリケーションからの指示を受けて、物理ページ間でデータを移動する処理を行う上記7記載の仮想メモリシステム。9上記仮想メモリ制御部は、物理ページを拡張した容量部分にアクセスするように制御する機能を有する上記8記載の仮想メモリシステム。10上記テーブルの情報は、上記不揮発性メモリに保存される上記6から上記9のいずれか一に記載の仮想メモリシステム。11上記仮想メモリ制御部は、上記不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換する機能を有し、さらに、新しい物理ページを仮想ページに割り当てた、仮想ページに割り当てられた物理ページを開放する機能を含む上記1から上記10のいずれか一に記載の仮想メモリシステム。12上記仮想メモリ制御部は、仮想ページと物理ページの対応を管理テーブルにより管理し、未使用の物理ページが不足した場合に、すでに仮想ページに割り当て済みの物理ページの中から、パフォーマンスに与える影響が少ないと判断した物理ページを選択し、当該選択した物理ページのデータをストレージ上の専用の領域に書出すように制御する機能を有し、上記管理テーブル上のストレージ上に退避された物理ページが割り当てられた仮想ページの属性には、メモリ上に存在しないことを示すフラグをセットする上記11記載の仮想メモリシステム。13上記仮想メモリ制御部は、上記ストレージ上の専用領域に書き出した物理ページのデータが再度必要となった場合に、空き物理ページにそのデータを読込むように制御する機能を有し、上記管理テーブル上のメモリ上に存在しないことを示すフラグをリセットする上記12記載の仮想メモリシステム。14上記仮想メモリ制御部の制御処理に従って上記不揮発性メモリにアクセスするメモリコントローラを有し、上記仮想メモリ制御部は、上記不揮発性メモリの書換え回数の上限に関する情報を上記メモリコントローラから取得する上記1から上記13のいずれか一に記載の仮想メモリシステム。15ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、仮想ページに書換えが発生すると、当該仮想ページに対する書込み量に関する情報に応じて当該仮想ページに割り当てる物理メモリ容量を拡張する仮想メモリの制御方法。16ランダムアクセス可能で、書換え回数に上限があり、物理アドレス空間へのアクセスが仮想アドレスを介して行われる不揮発性メモリの物理アドレス空間をページ単位で管理し、物理アドレス空間と仮想アドレス空間をマッピングし、アクセスのあった仮想アドレスを物理アドレスに変換するに際し、仮想ページに書換えが発生すると、当該仮想ページに対する書込み量に関する情報に応じて当該仮想ページに割り当てる物理メモリ容量を拡張する仮想メモリの制御処理をコンピュータに実行させるプログラム。"